Память
Память.
Всем компьютерам требуется память нескольких видов. Память требуется на каждом шагу выполнения программ. Память нужна как для исходных данных так и для хранения результатов. Она необходима для взаимодействия с периферией компьютера и даже для поддержания образа, видимого на экране.
Вся память компьютера делится на внутреннюю и внешнюю. В компьютерных системах работа с памятью основывается
на очень простых концепциях. В принципе, всё, что требуется от компьютерной памяти,- это сохранять один бит информации так,чтобы потом он мог быть извлечён оттуда.
В настоящее время широкое распространение получили устройства динамической памяти базирующиеся на способности сохранять электрический заряд. Эти устройства - конденсаторами.
С первого взгляда конденсатор не удовлетворяет основному требованию устройств памяти. Он не способен сохранять заряд в течении длительного промежутка времени, но он розволяет делать это в течении нескольких миллисекунд, что вполне достаточно, чтобы использовать это в электронике. За это время специальные цепи компьютера обеспечивают подзарядку конденсатора, то есть обновление информации. Из-за непрерывной природы этого процесса такая память называется динамической.
В современных персональных компьютерах динамическая память реализуется на базе специальных цепей проводников, заменивших обычные конденсаторы. Большое количество таких цепей объединяются в корпусе одного динамического чипа. Однако подобно памяти на конденсаторах, она должна постоянно освежаться.
В то время как динамическая память, получив заряд электричества удерживает его, так называемая статическая память, позволяет потоку электронов циркулировать по цепи. Прикладываемое напряжение может изменить направление движения электронов. Причем существует только два направления движения потока, что позволяет использовать данные цепи в качестве элементов памяти. Статическая память работает наподобие выключателя, который переключает направление электронного потока.
Кроме оперативной памяти существует ещё и постоянная память(ПЗУ). Её главное отличие от ОЗУ - невозможность в процессе работы изменить состояние ячеек ПЗУ. В свою очередь и эта память делится на постоянную и репрограммируемую. Принципы её функционирования понятны из названия.
Эволюция микросхем ОЗУ вплотную связана с эволюцией персональных компьютеров. Для успеха настольных компьютеров требовались миниатюрные чипы ОЗУ. По мере увеличения ёмкости памяти цена скачкообразно возрастала, но потом постоянно уменьшалась по мере отработки технологии и роста объёмов производства.
Первые PC реализовывались на стандартных RAM-чипах по 16 Кбит. Каждому биту соответствовал свой собственный адрес.
Где-то около года после представления XT появилось ОЗУ с большими возможностями и более эффективное с точки зрения его цены. Хотя новые микросхемы могли вмещать по 64 Кбит, она были дешевле чем 4 по 16 Кбит. Системная плата PC была создана с учётом использования новых микросхем памяти. Через несколько лет 64 Кбитные чипы стали настолько широко распространены, что стали дешевле чем 16 Кбитные микросхемы.
К 1984 году был сделан ещё один шаг по увеличению объёма памяти в одном корпусе - появились 256 - Кбитные микросхемы. И RAM чипы этого номинала были установлены на первых AT. А сегодня микросхемы в 1 Мбит стали обычным явлением.
PC имел довольно простую архитектуру памяти, по крайней мере, если на неё смотреть сейчас с высоты последних достижений компьютерной индустрии. Память PC была представлена одним блоком, в котором каждый байт был доступен по указанию его адреса.
Микросхемы памяти были разбиты на 9 банков, использующих в ранних PC 16-Кбитные, а затем и 64-Кбитные микросхемы. Восемь микросхем выделяли по одному биту для организации каждого байта памяти, девятая микросхема использовалась в качестве контрольного бита чётности.
Когда микропроцессор 80286 стали использовать в AT и их аналогах, возникла проблема с организацией архитектуры памяти. Обычные микросхемы памяти не могли работать в таком быстром темпе, в котором работал микропроцессор. Поэтому пришлось использовать статус ожидания, в случае когда процессор требовал информацию из памяти, то есть микропроцессору приходилось зависать на один-два такта, что давало возможность памяти обработать запрос.
Динамические микросхемы памяти маркируются специальным числом, говорящим об их скоростных возможностях. Указанное на корпусе число отражает время доступа в наносекундах без последнего нуля.
Время доступа не является, однако, единственной или наиболее важной характеристикой микросхем памяти. Более значимо такое понятие, как время цикла, которое говорит о том, как быстро можно произвести повторное обращение. В динамических микросхемах это время больше времени доступа, в статических чипах эти времена равны, что говорит о более скоростных режимах последних.
Чтобы справиться с ограничением по скорости, были использованы специальные решения по организации памяти. Наиболее простое из них - это использование обычной архитектуры с необходимым числом циклов ожидания.
Хорошая альтернатива предыдущему методу - использование кэш-памяти, что позволит избежать полного заполнения всей машины быстрой RAM памятью. Обычно программа использует память какой либо ограниченной области. Храня нужную информацию в кэш-памяти, работа с которой позволяет процессору обходиться без всяких циклов ожидания.
Не всякая кэш-память равнозначна. Большое значение имеет тот факт, как много информации может содержать кэш-память. Чем больше кэш-память, тем больше информации может быть в ней размещено, а следовательно, тем больше вероятность, что нужный байт будет содержаться в этой быстрой памяти. Очевидно, сто самый лучший вариант - это когда объём кэш-памяти соответствует объёму всей оперативной памяти. В этом случае вся остальная память становится не нужной. Крайне противоположная ситуация - 1 байт кэш-памяти - тоже не имеет практического значения, так как вероятность того, что нужная информация окажется в этом байте, стремится к нулю. Практически, диапазон используемой кэш-памяти колеблется в пределах 16-64К.
На самом деле реализация кэш-систем не так проста, как это может показаться с первого взгляда. Микропроцессор должен не только читать из памяти, но и писать в неё. Что случится, если процессор занесёт новую информацию в кэш-память, а перед использованием этой информации она будет изменена в основной памяти. Для избежания подобной ситуации иногда реализуется метод, названный записью через кэш-память. Очевидно, сто этот метод снижает быстродействие системы, потому что приходится писать не только в кэш-память. Хуже того, микропроцессору может понадобиться информация, которую он только что записал и которая ещё не была перезагружена в кэш-память.
Целостность памяти - это одна из самых больших проблем разработчиков кэш-памяти.
Все вопросы по преодолению этих проблем были возложены на отдельную микросхему - кэш-контроллер Intel82385.
Ещё одна разновидность архитектуры оперативной памяти компьютера - это её разбивка на отдельные секции и работа с этими секциями как с малой кэш-памятью. Большая скорость доступа к ограниченным областям памяти является особенностью некоторых специфических микросхем, которые позволяют некоторому объёму, но не всей памяти, быть считанному без цикла ожидания. Этот подход требует специальных RAM микросхем, которые делят свои адреса по страницам. Эта технология получила название режима страничного доступа. Эти специальные микросхемы обеспечивают очень быстрый доступ в одном из двух направлений их организаций. Если требуется чтение или запись информации, хранящейся на определённой странице памяти, и предыдущая команда по работе с памятью использовала информацию с той же страници, цикла ожидания не требуется. Однако при переходе с одной страници на другую циклы ожидания неизбежны.
Следующая интересная технология, названная interleavid mtmory, очень похожа на ОЗУ страничного режима. Она существенно повышает скорость обращения к памяти, но не имеет ограничений по страничной разбивке. При использовании этой технологии вся оперативная память разбивается на два или большее число банков. Последовательность битов хранится в разных банках, поэтому микропроцессор обращается то у одному то к другому банку при чтении этой последовательности. Во время обращения к одному банку, другой реализует цикл обновления, и поэтому процессору не приходится ждать. И только, если микропроцессору приходится читать несмежные биты, статус ожидания неминуем, но вероятность его появления уменьшается.
Наиболее типовая реализация этой технологии представляется разбивкой оперативной памяти на два банка, А следовательно, вероятность возникновения ожидания - 50%. Четырёхбанковая организация уменьшает эту вероятность до 25%.
Так как данная технология не требует применения специальных микросхем памяти, она является наиболее удобной для повышения скорости системы. Кроме того она может совмещаться с ОЗУ страничного режима, что ещё больше увеличивает оперативность.
Логическая организация памяти. Фундаментальные решения были приняты при разработке
первых PC. Для того, чтобы микропроцессор 8088 мог пользоваться, она должна быть адресуемой. И этот микропроцессор должен обладать возможностью адресоваться к 1М. Конструкторы IBM решили выделить специальные области памяти для специфически целей. Они разделили всю память на разделы, и каждый раздел предназначался для реализации своих функций. Результирующая диаграмма названа картой памяти.
При разработке PC половина всей памяти была зарезервирована. Верхняя половина адресного пространства, была выделена для содержания кодов BIOS и для прямого процессорного доступа к памяти, используемой видеосистемой. Первые несколько Кбайт были зарезервированы под информацию о системе и расположение конкретных секций кодов, которые выполнялись на момент возникновения прерываний программного обеспечения. Эти ячейки памяти называются векторами прерывания, а функция программного кода - механизмом прерывания.
В конце адресного пространства располагается буфер коавиатуры - номиналом 16 байт. Здесь хранятся 16 последних символов введённых с клавиатуры. Этот буфер нужен для сохранения набранного текста во время, когда процессор занят другой задачей, после того как он освободится, текст будет обработан. Омерзительный писк компьютера означает - буфер переполнен и дальнейший набор бессмысленен.
Кроме того, различные системные флаги, указывающие на внутреннее состояние системы, также хранятся в нижнем разделе памяти.
В те дни, когда большенство компьютеров имели 60К памяти, 512К казались царской щедростью. Поэтому 128К были отданы под юрисдикцию программного обеспечения, остальные 384К от начала адресного пространства, предназначались для использования программами BIOS и видеопамятью.
Эти решения выделяли 640К для DOS - это был максимум адресуемого пространства, которым мог оперировать 8088 при выполнении программ. Со временем эти 640К были названы базовой памятью, потому что это является основополагающим стандартом, на котором должны базироваться все IBM совместимые системы.
Дополнительная память
Память, выходящаяза пределы 1 Мб адресуемого пространства 8088, которая может стать доступной в защищенном режиме Intel 80286 и 80386, обычно называется дополнительной памятью, хотя IBM иногда называет эту память расширенной (expanded). Но большинство авторов использует термин (extnded). Вплоть до 15 Мб дополнительной памяти может быть прибавлено в компьютеры на 80286 микропроцессоре, и до 4 Гб с 80386. Наиболее существенным различием базовой и дополнительной памяти яляется то, что программы, работающие в реальном режиме, не могут выполняться в дополнительной памяти. А так как DOS написан для реального режима, ему приходится обходиться только базовой памятью.
Но сказать, что дополнительная память бесполезна в реальном режиме - неверно. Программы не знают, как адресоваться к дополнительным ячейкам памяти. Но дополнительная память может быть использована для хранения информации. А следовательно, просто нужно разработать програмное обеспечение, чтобы использовать возможности дополнительной памяти. И такие DOS-программы существуют. Прекрасный пример тому имитатор логического диска - VDISK, который поддерживается DOS, начиная с версии 3.0. Хотя програмные коды VDISK выполняются в обычной памяти DOS в реальном режиме, дополнительная память может использоваться для хранения данных.
Так как OS/2 может функционировать в защищенном режиме, ей доступны все ресурсы дополнительной памяти. Однако стоит напомнить, что, когда OS/2 использует подпрограммы старушки DOS, ей приходится довольствоваться ограничениями памяти реального режима в 640 Кб.
В апреле 1985 года несколько месяцев спустя после представления первых AT с несколькими М дополнительной памяти - главное издательство по программному обеспечению и разработчик технического обеспечения сформулировали свой собственный метод преодаления ограничения в 640К старых компьютеров на 8088 микропроцессоре, работающих в DOS. Через несколько месяцев к ним присоеденилась и Microsoft Corporation. Их разработка названа Lotus-Intel-Microsoft Expanded Memory Specification или LIM память, или EMS, или просто расширенная память. Первая версия была названа EMS
3.0, чтобы указать на совместимость с тогда последней версией DOS.
Новая система отличалась как от базовой памяти, так и от дополнительной. Она не была в пределах адресного пространства центрального микропроцессора. Её работа основывалась на специальной схеме технического обеспечения, которая функционировала наподобие переключателя. Это устройство переключало банки памяти из нормального адресного пространства 8088 микропроцессора, где чип мог читать и писать в неё. Эта схема, названная переключателем банков, не была ни новой ни необычной. Подобное устройство использовалося в компьютерах на Z80 для преодоления лимита в 64К.
Первые EMS имели дело с расширенной памятью, разбитой на банки по 16К.
Представление AT с потенциально адресуемыми 16М зотмило EMS, пока тяжелая действительность недоступности дополнительной памяти была до конца осознана. Даже несколько имеющихся программ, которые могли пользоваться достоинствами EMS, были более полезны чем драйвер VDISK , который был единственной совместимой с DOS программой, позволяющей использовать дополнительную память.
Все программное обеспечение EMS можно было разделить на две группы. Первая использует возможности 80386 работать с картами памяти вертуальных страниц. Вторая копирует банки в 16К из дополнительной памяти в основную. Хотя оба типа программ эффективно используются, Lotus заявляет, что системы использующие копирование блоков программ, не могут обеспечить полную корректную реализацию EMS.