В то время как динамическая память, получив заряд электричества удерживает его, так называемая статическая память, позволяет потоку электронов циркулировать по цепи. Прикладываемое напряжение может изменить направление движения электронов. Причем существует только два направления движения потока, что позволяет использовать данные цепи в качестве элементов памяти. Статическая память работает наподобие выключателя, который переключает направление электронного потока.
Кроме оперативной памяти существует еще и постоянная память(ПЗУ). Ее главное отличие от ОЗУ - невозможность в процессе работы изменить состояние ячеек ПЗУ. В свою очередь и эта память делится на постоянную и репрограммируемую. Принципы ее функционирования понятны из названия.
Эволюция микросхем ОЗУ вплотную связана с эволюцией персональных компьютеров. Для успеха настольных компьютеров требовались миниатюрные чипы ОЗУ. По мере увеличения емкости памяти цена скачкообразно возрастала, но потом постоянно уменьшалась по мере отработки технологии и роста объемов производства.
Первые PC реализовывались на стандартных RAM-чипах по 16 Кбит. Каждому биту соответствовал свой собственный адрес.
Где-то около года после представления XT появилось ОЗУ с большими возможностями и более эффективное с точки зрения его цены. Хотя новые микросхемы могли вмещать по 64 Кбит, она были дешевле чем 4 по 16 Кбит. Системная плата PC была создана с учетом использования новых микросхем памяти. Через несколько лет 64 Кбитные чипы стали настолько широко распространены, что стали дешевле чем 16 Кбитные микросхемы.
К 1984 году был сделан еще один шаг по увеличению объема памяти в одном корпусе - появились 256 - Кбитные микросхемы. И RAM чипы этого номинала были установлены на первых AT. А сегодня микросхемы в 8 и 16 Мбайт стали обычным явлением.
PC имел довольно простую архитектуру памяти, по крайней мере, если на нее смотреть сейчас с высоты последних достижений компьютерной индустрии. Память PC была представлена одним блоком, в котором каждый байт был доступен по указанию его адреса.
Микросхемы памяти были разбиты на 9 банков, использующих в ранних PC 16-Кбитные, а затем и 64-Кбитные микросхемы. Восемь микросхем выделяли по одному биту для организации каждого байта памяти, девятая микросхема использовалась в качестве контрольного бита четности.
Когда микропроцессор 80286 стали использовать в AT и их аналогах, возникла проблема с организацией архитектуры памяти. Обычные микросхемы памяти не могли работать в таком быстром темпе, в котором работал микропроцессор. Поэтому пришлось использовать статус ожидания, в случае когда процессор требовал информацию из памяти, то есть микропроцессору приходилось зависать на один-два такта, что давало возможность памяти обработать запрос.
Динамические микросхемы памяти маркеруются специальным числом, говорящим об их скоростных возможностях. Указанное на корпусе число отражает время доступа в наносекундах без последнего нуля.
Время доступа не является, однако, единственной или наиболее важной характеристикой микросхем памяти. Более значимо такое понятие, как время цикла, которое говорит о том, как быстро можно произвести повторное обращение. В динамических микросхемах это время больше времени доступа, в статических чипах эти времена равны, что говорит о более скоростных режимах последних.
Чтобы справиться с ограничением по скорости, были использованы специальные решения по организации памяти. Наиболее простое из них - это использование обычной архитектуры с необходимым числом циклов ожидания.
Хорошая альтернатива предыдущему методу - использование кэш-памяти, что позволит избежать полного заполнения всей машины быстрой RAM памятью. Обычно программа использует память какой либо ограниченной области. Храня нужную информацию в кэш-памяти, работа с которой позволяет процессору обходиться без всяких циклов ожидания.
Не всякая кэш-память равнозначна. Большое значение имеет тот факт, как много информации может содержать кэш-память. Чем больше кэш-память, тем больше информации может быть в ней размещено, а следовательно, тем больше вероятность, что нужный байт будет содержаться в этой быстрой памяти. Очевидно, сто самый лучший вариант - это когда объём кэш-памяти соответствует объему всей оперативной памяти. В этом случае вся остальная память становится не нужной. Крайне противоположная ситуация - 1 байт кэш-памяти - тоже не имеет практического значения, так как вероятность того, что нужная информация окажется в этом байте, стремится к нулю. Практически, диапазон используемой кэш-памяти колеблется в пределах 16-64К.
На самом деле реализация кэш-систем не так проста, как это может показаться с первого взгляда. Микропроцессор должен не только читать из памяти, но и писать в нее. Что случится, если процессор занесет новую информацию в кэш-память, а перед использованием этой информации она будет изменена в основной памяти. Для избежания подобной ситуации иногда реализуется метод, названный записью через кэш-память. Очевидно, что этот метод снижает быстродействие системы, потому что приходится писать не только в кэш-память. Хуже того, микропроцессору может понадобиться информация, которую он только что записал и которая еще не была перезагружена в кэш-память.
Целостность памяти - это одна из самых больших проблем разработчиков кэш-памяти. Все вопросы по преодолению этих проблем были возложены на отдельную микросхему - кэш-контроллер Intel82385.
Еще одна разновидность архитектуры оперативной памяти компьютера - это ее разбивка на отдельные секции и работа с этими секциями как с малой кэш-памятью. Большая скорость доступа к ограниченным областям памяти является особенностью некоторых специфических микросхем, которые позволяют некоторому объему, но не всей памяти, быть считанному без цикла ожидания. Этот подход требует специальных RAM микросхем, которые делят свои адреса по страницам. Эта технология получила название режима страничного доступа. Эти специальные микросхемы обеспечивают очень быстрый доступ в одном из двух направлений их организаций. Если требуется чтение или запись информации, хранящейся на определенной странице памяти, и предыдущая команда по работе с памятью использовала информацию с той же страницы, цикла ожидания не требуется. Однако при переходе с одной страницы на другую циклы ожидания неизбежны.
Следующая интересная технология, названная interleaved memory, очень похожа на ОЗУ страничного режима. Она существенно повышает скорость обращения к памяти, но не имеет ограничений по страничной разбивке. При использовании этой технологии вся оперативная память разбивается на два или большее число банков. Последовательность битов хранится в разных банках, поэтому микропроцессор обращается то у одному то к другому банку при чтении этой последовательности.
Во время обращения к одному банку, другой реализует цикл обновления, и поэтому процессору не приходится ждать. И только, если микропроцессору приходится читать несмежные биты, статус ожидания неминуем, но вероятность его появления уменьшается.
Наиболее типовая реализация этой технологии представляется разбивкой оперативной памяти на два банка, А следовательно, вероятность возникновения ожидания - 50%. Четырех банковая организация уменьшает эту вероятность до 25%.
Так как данная технология не требует применения специальных микросхем памяти, она является наиболее удобной для повышения скорости системы. Кроме того она может совмещаться с ОЗУ страничного режима, что еще больше увеличивает оперативность.
Фундаментальные решения были приняты при разработке первых PC. Для того, чтобы микропроцессор 8088 мог пользоваться, она должна быть адресуемой. И этот микропроцессор должен обладать возможностью адресоваться к 1М. Конструкторы IBM решили выделить специальные области памяти для специфически целей. Они разделили всю память на разделы, и каждый раздел предназначался для реализации своих функций. Результирующая диаграмма названа картой памяти.
При разработке PC половина всей памяти была зарезервирована. Верхняя половина адресного пространства, была выделена для содержания кодов BIOS и для прямого процессорного доступа к памяти, используемой видеосистемой. Первые несколько Кбайт были зарезервированы под информацию о системе и расположение конкретных секций кодов, которые выполнялись на момент возникновения прерываний программного обеспечения. Эти ячейки памяти называются векторами прерывания, а функция программного кода - механизмом прерывания.
В конце адресного пространства располагается буфер клавиатуры - номиналом 16 байт. Здесь хранятся 16 последних символов введенных с клавиатуры. Этот буфер нужен для сохранения набранного текста во время, когда процессор занят другой задачей, после того как он освободится, текст будет обработан. Омерзительный писк компьютера означает - буфер переполнен и дальнейший набор бессмысленен.
Кроме того, различные системные флаги, указывающие на внутреннее состояние системы, также хранятся в нижнем разделе памяти.
В те дни, когда большинство компьютеров имели 60К памяти, 512К казались царской щедростью. Поэтому 128К были отданы под юрисдикцию программного обеспечения, остальные 384К от начала адресного пространства, предназначались для использования программами BIOS и видеопамятью.
Эти решения выделяли 640К для DOS - это был максимум адресуемого пространства, которым мог оперировать 8088 при выполнении программ. Со временем эти 640К были названы базовой памятью, потому что это является основополагающим стандартом, на котором должны базироваться все IBM совместимые системы.