Вот прошел год - и все переменилось... Год назад основным вопросом "про это" был: чем EDO отличается от FPM? Вряд ли сейчас об этом знает намного больше народа, но ведь это уже никому и не надо... Грозное слово SDRAM, которое тогда только начинало появляться в прессе, сегодня знакомо каждому и новым уже ни в коему случае не является. А Intel тем временем планирует всеобщий победеносный переход на какой-то там Direct Rambus. В общем все, как ему и положено, течет и изменяется самым безжалостным образом...
Итак, речь у нас пойдет об оперативной памяти, то бишь RAM (random access memory). Что в переводе значит: память с произвольным доступом. И это правильно, поскольку сама идея оперативной памяти подразумевает возможность независимой адресации ячеек (то есть, обратившись к одной ячейке, можно затем обращаться к любой другой). В настоящее время оперативная память делится на два больших класса - DRAM и SRAM. Первое обозначает динамическую (dynamic) RAM. Второе - статическую (static). Различие между ними принципиальное: в DRAM (упрощенная схема ячейки приведена на рисунке 1) биты информации хранятся на конденсаторах емкостью 25-30 fF (фемта = 10-15) (между прочим, логической единице соответствует отсутствие заряда), а ячейка SRAM представляет собой ни что иное, как триггер.
Рис. 1 |
Отсюда сразу можно сделать выводы о достоинствах и недостатках каждой из них. Ячейка динамической памяти содержит меньше транзисторов (а именно 1) - значит она занимает меньше места на кристалле и рассеивает меньше тепла (микросхема в целом потребляет меньше энергии и слабее греется, следовательно, она проработает дольше). С другой стороны, наличие емкости сразу уменьшает быстродействие схемы. В случае SRAM все по-другому: ячейка обладает высоким быстродействием (10-15 наносекунд), однако занимает больше места - как никак 4 транзистора (поэтому объем памяти в расчете на одну микросхему получается меньше) и сильнее греется. Есть еще одно различие, благодаря которому, собственно, и производится разделение памяти на DRAM и SRAM. Если в статической памяти однажды записанная информация не может измениться пока на ее место не будет записана новая или не выключат питание, то для динамической все получается наоборот. Поскольку конденсатор, на котором хранятся данные, далеко не идеален (да и транзистор тоже дает утечку), он постепенно разряжается и через несколько миллисекунд от записанной на нем информации не остается и следа. Чтобы не произошло потери данных, их необходимо постоянно обновлять (то есть восстанавливать заряд на конденсаторе). Для этого достаточно периодически обращаться к ячейке. Данная операция получила название refresh и производится компьютером автоматически (существует несколько вариантов refresh, и выбор одного из них - целиком на совести производителя. Необходимые схемы расположены, в основном, в самом модуле памяти и программно можно управлять только периодом обновления информации в целом). Обращение может происходить сразу к целому столбцу ячеек.
Раз уж мы добрались до столбцов, пора разобраться, как именно устроена память. На рисунке 2 приведены результаты вскрытия - упрощенная схема устройства памяти.
Рис. 2 |
Сами запоминающие ячейки на кристалле организованы в двумерную матрицу, так что ячейка однозначно определяется адресом строки и столбца (похоже на структуру ферритовой памяти, не правда ли?). Тут важно не запутаться, так как адрес, который выдает процессор при обращении к памяти, указывает на байт. Затем этот адрес преобразуется контроллером памяти системной платы в специальные сигналы, используемые при обращении к модулям памяти. Вдаваться в подробности этого процесса - занятие неблагодарное, так что остановимся только на нескольких моментах. Наиболее интересные сигналы - RAS (row address strobe - строб адреса строки) и CAS (column address strobe - строб адреса столбца). Кроме них есть еще собственно адреса строки и столбца, по которым выбираются нужные данные. В зависимости от типа микросхемы памяти разрядность этих адресов может меняться (например, если 4-мегабитное поле состоит из 2048 строк и 2048 столбцов, то оба адреса будут 11-разрядными, а если же поле образовано 4096 строками и 1024 столбцами, то соотношение разрядности будет 12/10). На каждой микросхеме может располагаться несколько информационных полей, адресация в которых происходит параллельно. Таким образом, при обращении к схеме памяти с организацией 4 МбитX4 мы считаем сразу 4 бита данных. Возможность работы с конкретными схемами целиком зависит от чипсета (а именно - от контроллера памяти). Таковы, вкратце, основные принципы работы оперативной памяти. Остается добавить, что динамическая память сейчас используется в качестве основной памяти персональных компьютеров, а статическая прочно заняла место кэша.
А теперь перейдем к практике. То бишь начнем разбираться с существующими и активно использующимися в компьютере типами памяти. Начнем с самых простых, медленных, и потому нынче активно вымирающих видов FPM и EDO DRAM. Оба этих типа памяти - асинхронные, то есть существует какое-то фиксированное время, требующееся для обращения к ним, причем это время не зависит от тактовой частоты шины процессор-память (точнее, чипсет-память). Вернее, не зависит напрямую, поскольку все сигналы в компьютере так или иначе синхронизированы с тактовой частотой. Поэтому время доступа к данным удобно описывать в тактах. Итак, в самом простом случае при обращении к памяти сначала подается адрес строки (она еще называется страницей - page), а затем сигнал RAS, сообщающий микросхеме памяти, что адрес уже готов и его можно загружать в буфер. Затем, через некоторое время, выставляется адрес столбца, после него подается сигнал CAS, и адрес считывается в буфер схемы. После на выходе появляются искомые данные. Соответствующая временная диаграмма приведена на рисунке 3a.
Рис. 3 |
Однако в большинстве случаев необходимо читать из памяти последовательно расположенные байты. Именно на этом предположении основана работа PM (page mode) RAM. При считывании первого байта надо передавать адреса и строки, и столбца. Однако при следующем обращении молчаливо полагается (если специально не опровергается), что адрес строки не меняется. Таким образом, при обращении к байтам, расположенным в одной строке, необходимо выставлять только адрес столбца, что занимает почти в два раза меньше времени. Посмотрим на рисунок: действительно, сигнал RAS подается один раз в самом начале, а затем удерживается на низком уровне. Именно в этот момент выставляется адрес строки. Зато сигналы CAS (column address strobe) идут друг за другом, причем каждому соответствует новый адрес столбца. В FPM (fast page mode) сделано еще одно небольшое улучшение, уменьшающее время считывания адреса столбца. Если говорить проще, то для FPM-памяти последовательное чтение четырех байт будет занимать, к примеру, 5+3+3+3=14 тактов при частоте шины 66 МГц (вместо 5+5+5+5=20 при считывании байт из разных строк или при работе с обычной памятью).
Память EDO (Extended data output) представляет собой улучшенный вариант FPM. Все преимущества последней используются в EDO в полной мере, однако теперь данные удерживаются на шине и после переключения CAS. Таким образом, предыдущую порцию данных можно считывать во время выборки последующей. А значит сокращается время между выводом двух последовательных байт (это, опять же, справедливо только при считывании данных из одной строки). Временные диаграммы можно посмотреть на рисунке 3b. Как видите, взаимное расположение RAS и CAS не изменилось. Но зато уменьшился период времени между выставлением данных и следующего адреса, то есть теперь не приходится ждать, пока процессор считает данные, так как они будут находиться на шине во время обработки следующего адреса. Следовательно, можно сократить период сигнала CAS и ускорить считывание данных. Получаемое время доступа 5+2+2+2=11 тактов. Таким образом, мы имеем выигрыш в быстродействии памяти порядка 20%. Производительность компьютера при этом повышается процентов на 10-15. По цифрам в таблице можно сравнить быстродействие FPM и EDO. Однако надо заметить, что выигрыш EDO дает только при чтении, а при записи ведет себя точно так же, как FPM.
FPM | FPM | FPM | EDO | EDO | EDO | |
Время доступа (строка + столбец), нс |
50 | 60 | 70 | 50 | 60 | 70 |
Цикл (столбец), нс | 30 | 35 | 40 | 20 | 25 | 30 |
Константин
АФАНАСЬЕВ,
[email protected]
В наши дни никого уже не удивишь
оперативной памятью объемом в
несколько десятков мегабайт и с
быстродействием 60-70 наносекунд.
Однако еще совсем недавно
приходилось общаться с
компьютерами, у которых ее было
всего 256 килобайт. А пресловутые 640
вообще шли за счастье и запустить
под ними можно было все, что угодно,
и еще немного больше. Однако в
исторической перспективе все это
явления одного порядка, ведь первый
прообраз памяти для
вычислительного устройства был
механическим (заменитая
аналитическая машина Бэббиджа,
строительство которой было начато
в 1823 году, но так и не закончено). В
середине нашего века в качестве
устройств для хранения данных
использовались реле (вычислитель
на их основе весил несколько тонн).
Затем на смену реле пришли
электронные лампы, однако их
размеры также не позволяли
создавать более-менее компактные
вычислительные устройства. Для
хранения данных использовалось
множество различных (и зачастую
весьма остроумных) методов, но по
тем или иным причинам все они не
получили распространения.
Следующим (и притом весьма
успешным) шагом в развитии
компьютеров стало создание памяти
на магнитных сердечниках (magnetic core
memory), изобретенной Джеем
Форрестером в Массачусетском
технологическом. Принцип действия
такой памяти был следующий: на
пересечениях перпендикулярно
расположенных проводников
находились ферритовые сердечники
(их диаметр составлял несколько
миллиметров). Подавая ток на один X и
один Y провод, можно было однозначно
адресовать ячейку памяти
(сердечник). С помощью отдельных
проводников можно было
перемагнитить выбранный сердечник
(запись) или определить его
намагниченность (чтение). Надо
добавить, что такая память была
энергонезависимой и не стиралась
при выключении питания. Уже в
середине 50-х годов в продаже
имелись запоминающие устройства
объемом 18 кб, основанные на этом
принципе (весили они "всего" 750
килограммов). Однако, несмотря на
внушительный вес, память такого
типа использовалась еще долго (до
70-х годов) и пережила появление
новых электронных устройств -
транзисторов (поскольку память на
дискретных транзисторах
получалась еще больше и дороже). С
появлением интегральных схем (в 1958
году) положение вещей резко
изменилось, поскольку через
некоторое время стало возможно
разместить на одном
полупроводниковом кристалле
несколько десятков или даже сотен
транзисторов. Тогда-то, собственно,
и началась история той
компьютерной памяти, с которой мы
сейчас имеем дело.
Горячие темы