Что-то с памятью моей стало...

В наши дни никого уже не удивишь оперативной памятью объемом в несколько десятков мегабайт и с быстродействием 60-70 наносекунд. Однако еще совсем недавно приходилось общаться с компьютерами, у которых ее было всего 256 килобайт. А пресловутые 640 вообще шли за счастье и запустить под ними можно было все, что угодно, и еще немного больше. Однако в исторической перспективе все это - явления одного порядка, ведь первый прообраз памяти для вычислительного устройства был механическим (знаменитая аналитическая машина Бэббиджа, строительство которой было начато в 1823 году, но так и не было закончено). В середине нашего века в качестве устройств для хранения данных использовались реле (вычислитель на их основе весил несколько тонн). Затем на смену реле пришли электронные лампы, однако их размеры также не позволяли создавать более-менее компактные вычислительные устройства. Для хранения данных использовалось множество различных (и зачастую весьма остроумных) методов, но по тем или иным причинам все они не получили распространения. Следующим (и притом весьма успешным) шагом в развитии компьютеров стало создание памяти на магнитных сердечниках (magnetic core memory), изобретенной Джеем Форрестером в Массачусетском технологическом. Принцип действия такой памяти был следующий: на пересечениях перпендикулярно расположенных проводников находились ферритовые сердечники (их диаметр составлял несколько миллиметров). Подавая ток на один X и один Y провод, можно было однозначно адресовать ячейку памяти (сердечник). С помощью отдельных проводников можно было перемагнитить выбранный сердечник (запись) или определить его намагниченность (чтение). Надо добавить, что такая память была энергонезависимой и не стиралась при выключении питания. Уже в середине 50-х годов в продаже имелись запоминающие устройства объемом 18 кб, основанные на этом принципе (весили они "всего" 750 килограмм). Однако, несмотря на внушительный вес, память такого типа использовалась еще долго (до 70-х годов) и пережила появление новых электронных устройств - транзисторов (поскольку память на дискретных транзисторах получалась еще больше и дороже). С появлением интегральных схем (в 1958 году) положение вещей резко изменилось, поскольку через некоторое время стало возможным разместить на одном полупроводниковом кристалле несколько десятков или даже сотен транзисторов. Тогда-то, собственно, и началась история той компьютерной памяти, с которой мы сейчас имеем дело.

Итак, речь у нас пойдет об оперативной памяти, то бишь RAM (random access memory), что в переводе значит: память с произвольным доступом. И это правильно, поскольку сама идея оперативной памяти подразумевает возможность независимой адресации ячеек (то есть обратившись к одной ячейке, можно затем обращаться к любой другой). В настоящее время оперативная память делится на два больших класса DRAM и SRAM. Первое обозначает динамическую (dynamic) RAM. Второе - статическую (static). Различие между ними принципиальное: в DRAM (упрощенная схема ячейки приведена на рисунке 1, а) биты информации хранятся на конденсаторах (между прочим, логической единице соответствует отсутствие заряда), а ячейка SRAM представляет собой не что иное, как триггер (рис. 1, б).

Рис. 1, а
Рис. 1, б

Отсюда сразу можно сделать выводы о достоинствах и недостатках каждой из них. Ячейка динамической памяти содержит меньше транзисторов - значит, она занимает меньше места на кристалле и рассеивает меньше тепла (микросхема в целом потребляет меньше энергии и слабее греется, следовательно, она проработает дольше). С другой стороны, наличие емкости сразу уменьшает быстродействие схемы. В случае SRAM все по-другому: ячейка обладает высоким быстродействием (10-15 наносекунд), однако занимает больше места (поэтому объем памяти в расчете на одну микросхему получается меньше) и сильнее греется. Есть еще одно различие, благодаря которому, собственно, и производится разделение памяти на DRAM и SRAM. Если в статической памяти однажды записанная информация не может измениться, пока на ее место не будет записана новая или не выключат питание, то для динамической все получается наоборот. Поскольку конденсатор, на котором хранятся данные, далеко не идеален, он постепенно разряжается и через несколько миллисекунд от записанной на нем информации не остается и следа. Чтобы не произошло потери данных, их необходимо постоянно обновлять (то есть восстанавливать заряд на конденсаторе). Для этого достаточно периодически считывать данные из ячейки. Данная операция получила название refresh и производится компьютером автоматически (для этого служит специальная микросхема). Чтение обычно производится сразу с целого столбца ячеек. Упоминание о столбцах здесь не случайно, поскольку ячейки для сокращения количества проводников на кристалле организованы в двумерную матрицу, так что ячейка однозначно определяется адресом строки и столбца (похоже на структуру ферритовой памяти, не правда ли?). Надо учитывать, что одному адресу могут соответствовать несколько запоминающих элементов (например, 4 или 8), а это позволяет считать за одно обращение целый байт. Таковы, вкратце, основные принципы работы оперативной памяти. Остается добавить, что динамическая память сейчас используется в качестве основной памяти персональных компьютеров, а статическая - прочно заняла место кэша.

Но на этом дело не кончается. Наоборот, сейчас будет самое интересное: динамическая память имеет несколько модификаций, о которых мы и поговорим. Это EDO RAM и FPM RAM (сейчас более известная, как "не EDO"). Для того, чтобы считать данные из памяти, надо обратится по соответствующему адресу (процессор выставляет соответствующее значение на шине адреса). Затем производится выделение адресов строки и столбца матрицы. И, наконец, производится чтение по соответствующим адресам, а полученные данные выставляются на шину данных. Тут есть одна тонкость: адреса строки и столбца выставляются последовательно, значит, каждое обращение занимает два такта (условных, а не процессорных). Так работает обычная микросхема DRAM. Однако в большинстве случаев необходимо читать из памяти последовательно расположенные байты. Именно на этом предположении основана работа FPM (fast page mode) RAM. Соответствующая временная диаграмма приведена на рисунке 2.

Рис. 2

При считывании первого байта надо передавать адреса и строки, и столбца. Однако при следующем обращении молчаливо полагается (если специально не опровергается), что адрес строки не меняется. Таким образом, при обращении к байтам, расположенным в одной строке, необходимо подавать на матрицу только адрес столбца, что занимает почти в два раза меньше времени. Посмотрим на рисунок: действительно, сигнал RAS (row address strobe - строб адреса строки) подается один раз в самом начале, а затем удерживается на низком уровне. Именно в этот момент выставляется адрес строки. Зато сигналы CAS (column address strobe) идут друг за другом, причем каждому соответствует новый адрес столбца. Время Tpc определяет промежутки между последовательно считанными байтами. Время Tcac - промежуток между выставлением адреса столбца и получением соответствующего байта данных. Если говорить проще, то для FPM-памяти последовательное чтение четырех байт будет занимать, к примеру, 5+3+3+3=14 тактов (вместо 5+5+5+5=20 при считывании байтов из разных строк или при работе с обычной памятью).

Память EDO (Extended data output) представляет собой улучшенный вариант FPM. Все преимущества последней используются в EDO в полной мере, однако к ним добавлен переключатель (latch), удерживающий на выходах данных предыдущие значения во время выборки последующих. Таким образом сокращается время между выводом двух последовательных байтов (это опять же справедливо только при считывании данных из одной строки). Временные диаграммы можно посмотреть на рисунке 3.

Рис. 3

Как видите, взаимное расположение RAS и CAS не изменилось. Но зато уменьшился период времени между выставлением данных и следующего адреса, то есть теперь не приходится ждать, пока процессор считает данные, так как они будут находиться на шине во время обработки следующего адреса. Следовательно, можно сократить период сигнала CAS и ускорить считывание данных. Получаемое время доступа 5+2+2+2=11 тактов. Таким образом мы имеем выигрыш в быстродействии памяти порядка 20%. Производительность компьютера при этом повышается процентов на 10-15. Кстати говоря, EDO-память называется так потому, что данные находятся на шине дольше, чем обычно (extended output).

Чтобы легче было почувствовать разницу, я свел в таблицу кое-какие цифры:

  FPM FPM FPM EDO EDO EDO
Время доступа (строка + столбец), нс 50 60 70 50 60 70
Цикл (столбец, Tpc), нс 30 35 40 20 25 30

Под конец пару наблюдений из жизни. Чтобы извлечь какую-то пользу из той или иной памяти, ваша материнская плата должна быть специально сконструирована для ее использования. EDO память в основном используется на Pentium'ах (для которых, собственно, она и разрабатывалась), однако ее поддерживают и некоторые 486 материнские платы. Если поставить EDO RAM на плату, которая ее не поддерживает, то, скорее всего, память будет работать как обычная FPM (хотя некоторые платы могут вообще отказаться ее воспринимать). На одних платах можно использовать одновременно EDO и FPM память, другие не воспринимают одну из двух (8 Мб EDO + 8 FPM = 8), третьи вообще отказываются работать. Иногда можно заставить работать разную память совместно, разместив ее в разных банках. Как видите, исключений здесь больше, чем правил, да и в самой статье не все есть неоспоримая истина. Так что жду комментариев (желательно конструктивных).

Константин АФАНАСЬЕВ,
AKG_Monster@usa.net

Версия для печатиВерсия для печати

Номер: 

38 за 1997 год

Рубрика: 

Hardware
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!