Массив конденсаторов определяет быстродействие
Проблема быстродействия памяти. Пути решения
Fast Page Mode, EDO, BEDO, SDRAM
Слово о контактах. Модули SIMM и DIMM
RAMBUS — архитектура будущего?
Еще в конце 40-х годов фон Нейман сказал: «Память определяет быстродействие». Кстати, фон Нейман — автор именно той архитектуры, по которой выполнен персональный компьютер, то есть совместное хранение данных и программ — в отличие от Гарвардской, предусматривающей отдельные области памяти для программ и данных. Его «памятные» слова были пророческими и останутся таковыми до тех пор, пока коренным образом не изменится сама архитектура.
Современная динамическая память (DRAM) устроена крайне просто: это массив конденсаторов, подсоединенных к входам/выходам через зарядно-разрядные шины. Это единственный известный в настоящее время способ реализации недорогой массовой памяти. Статическая память, в которой информация хранится в ячейках наподобие триггеров, требует шести транзисторов на ячейку, то есть микросхема емкостью 4 Мбит состояла бы из более чем 24 миллионов транзисторов, потребляя соответствующую мощность. Поэтому статическая память используется только для кэширования.
Одной из причин того, что память — устройство довольно медленное, является способ подачи адреса на нее. Фактически адрес подается в два приема: одна половинка, сопровождаемая сигналом RAS (Row Address Select — выбор строки), и затем вторая, сопровождаемая сигналом CAS (Column Address Select — выбор колонки). Это сделано для того, чтобы снизить количество выводов микросхем (иначе микросхеме памяти 4 Мбит потребовалось бы 22 вывода только для адресации). Время, которое проходит от момента подачи сигнала RAS до момента, когда данные появляются на выходе (или записываются на кристалл), называется полным временем доступа. Время, которое проходит от момента подачи сигнала CAS до появления или записи данных, называется временем доступа в страничном режиме.
Повысить быстродействие DRAM не представляется возможным потому, что они, в отличие от, скажем, процессора, фактически являются просто массивом конденсаторов, где информация хранится в виде наличия или отсутствия заряда на них. Повышение скорости требует либо снижения емкости, что приведет к быстрому разряду за счет токов утечки, либо повышения тока, что неприемлемо по соображениям энергопотребления. Дополнительную путаницу вносит необходимость регенерации памяти, то есть перебора всех возможных адресов RAS. Эту процедуру необходимо проводить из-за саморазряда конденсаторов, имеющих собственную емкость в десятые и сотые доли пикофарады. В IBM PC для этого был предназначен один из каналов прямого доступа. Позже появились микросхемы памяти с автоматической регенерацией, то есть проблема была попросту спрятана, загнана внутрь. Некоторого увеличения быстродействия удалось достигнуть путем введения буферных усилителей (precharge), которые при подаче сигнала RAS считывают все содержимое строки, при этом по сигналу CAS считывается и передается на выход сигнал с единственного усилителя, что при работе в страничном режиме, то есть в пределах одной строки, снижает время доступа до теоретического минимума.
Во времена «до исторического материализма», то есть когда была выпущена IBM PC, микросхемы памяти просто были распаяны на плате, а 256 Кбайт казались совершенно безумной (очень большой) цифрой. Однако, природа не терпит пустоты, и во многом благодаря «стараниям» программистов предельное значение 1 Мбайт, заложенное в архитектуру процессора Intel 8086, вскоре оказалось уже недостаточным. В IBM PC AT и многочисленных клонах предусматривалась установка различных типов памяти в панельки, распаянные на плате. Уже тогда эти панельки занимали 25-30% площади всей платы. Но инженеры придумали расположить микросхемы памяти вертикально, и после недолгой борьбы нескольких претендентов на стандарт победил SIMM (Single in Line Memory Module — модуль памяти с выводами, расположенными в один ряд). Первое поколение памяти SIMM, модули с 30-контактами, поддерживающие передачу 8 бит за раз, продержалось до появления процессоров, имеющих внутреннюю 32-битную архитектуру. После чего появилось второе поколение SIMM, которые имели уже 72 контакта и поддерживали 32-битную архитектуру. При наличии двух банков поддерживается 64-разрядная архитектура, примененная в процессорах Intel Pentium и IBM/Motorola Power PC.
Борьба за ускорение привела к появлению памяти Fast Page Mode. Она несколько быстрее обычной за счет того, что в пределах одной страницы (Page) требует подачи сигнала RAS только единожды. Несмотря на гордое имя, FPM в настоящее время является наиболее медленной разновидностью памяти. С другой стороны, практически любой компьютер, разработанный за последние несколько лет, поддерживает FPM, так что она является выбором «безопасным». Этот тип памяти при тактовой частоте 66 МГц допускает время задержки 5-3-3-3 тактов и совершенно непригоден для использования на платах с более высокой частотой.
Наиболее популярный до недавнего времени вид памяти, EDO (Extended Data Out — расширенный вывод данных), за счет несколько модифицированной архитектуры позволяет начать один цикл доступа, не закончив другого. Этот тип памяти превозносился как революционный, но в действительности он ненамного быстрее FPM (называют цифры 3-5%). Он также неприемлем для тактовой частоты более 66 МГц, обеспечивая на ней задержку 5-2-2-2 такта. Для правильного функционирования памяти EDO требуется поддержка со стороны материнской платы, но поскольку технология была объявлена в 1994 году, большинство материнских плат ее поддерживают. Некоторые типы материнских плат поддерживают возможность установки разных типов памяти в разные банки, некоторые — нет.
Следующая ступень эволюционного развития — BEDO (Burst Extended Data Out, пакетный расширенный вывод данных). Комбинация EDO с потоковой технологией и специальными регистрами-защелками привела к снижению задержки до 5-1-1-1. Несмотря на превосходные характеристики, BEDO не прижилась, так как основной производитель чипсетов, Intel, выбрал другую технологию, сопоставимую с BEDO по временным характеристикам — SDRAM.
SIMM изготавливаются с двумя видами контактов — позолоченными и лужеными. Соответственно разъемы под них (кроватки) также имеют позолоченные либо луженые контакты. Изготовители памяти в один голос утверждают, что тип покрытия контактов SIMM должен соответствовать типу покрытия контактов разъемов. Пользователи, наоборот, приводят массу случаев из жизни, когда разнородные контакты прекрасно уживались друг с другом. Не мудрствуя лукаво, полагаю, что верить следует все же изготовителям. Однако, если продавец станет утверждать, что это абсолютно безразлично, вспомним, насколько меньше, чем мы с вами, он знает о компьютерах.
Дальнейший рост объемов памяти привел к жизни следующий стандарт — DIMM (Dual in Line Memory Module — модуль памяти с выводами, расположенными в два ряда).
Эти модули, в отличие от SIMM, имеют два ряда контактов, расположенных по обе стороны печатной платы, и устанавливаются путем вставки, а не наклоном. Каждый модуль обеспечивает 64-битный доступ, так что они могут быть установлены по одному. Этот стандарт является ныне повсеместно распространенным, хотя на многих материнских платах в дополнение к разъемам для DIMM имеются разъемы и для SIMM.
Модули DIMM выпускаются в четырех вариантах: с напряжением питания 5 и 3,3 В, с буферизацией и без нее. Для того чтобы различать эти особенности, на модулях имеются специальные прорези, а в разъеме соответственно — выступы. Так что установить неподходящий модуль на плату скорее всего не удастся, но перед покупкой следует ознакомиться с инструкцией на материнскую плату.
Растущая тактовая частота процессоров потребовала перехода к большим тактовым частотам материнских плат и к новым технологиям памяти. Одна из таких технологий — SDRAM (Synchronous Dynamic Random Access Memory — cинхронная динамическая память с произвольным доступом). Любая операция, запись или чтение, требует некоторого периода времени для завершения, в течение которого не может быть начата другая операция. Для большинства современных микросхем DRAM, включая SDRAM, это время находится в диапазоне 30-60 нс. За счет укороченных циклов чтения/записи, когда меняется только адрес внутри страницы, это время может быть сокращено приблизительно вдвое. Однако этого все равно недостаточно, поэтому при разработке SDRAM были предприняты следующие меры. Во-первых, работа памяти синхронизирована с тактовой частотой системы (чего не было в более ранних технологиях) за счет установки на модуле собственного генератора с фазовой автоподстройкой частоты. Во-вторых, в пакетном режиме последовательные данные могут выдаваться без задержки за счет того, что внутри модуль организован в виде двух банков, поэтому пока один выдает данные, другой находится в стадии подготовки. Все эти меры позволили получить время задержки 5-1-1-1 тактов.
Максимальная рабочая частота часто указывается косвенно, через быстродействие (10 нс, 8 нс). Зачастую предполагается, что быстродействие — это величина, обратная тактовой частоте, и поэтому модуль, промаркированный как «10 нс», обязан работать при частоте 100 МГц. На самом же деле не остается никакого, даже минимального запаса, поэтому для тактовой частоты 100 МГц лучше выбирать модуль с маркировкой 8 нс.
Также при покупке следует проверить наличие микросхемы SPD (Serial Presence Detect — обнаружение присутствия при помощи последовательного интерфейса). Многие материнские платы используют информацию, записанную в этой микросхеме, для выяснения размеров и типа модуля. Поэтому наилучший способ избежать ошибки при покупке — внимательно изучить инструкцию и выяснить нечто вроде «10 ns, 4-clock, unbuffered, 3.3 volt SDRAM modules with serial presence detect».
На базе SDRAM был разработан новый стандарт DDR SDRAM (Double Data Rate — удвоенная скорость данных), который предусматривает передачу данных по обоим фронтам сигнала тактовой частоты.
На этом резервы исчерпываются, поэтому подход, впервые примененный при разработке SDRAM, то есть увеличение числа банков внутри модуля, был творчески развит в стандартах SLDRAM и DRDRAM.
Стандарт SLDRAM (Synchronous Link DRAM — DRAM с синхронной связью) разработан консорциумом производителей памяти (http://www.sldram.com) и рекламируется как эволюционное развитие систем памяти. На самом деле интерфейс и размер модуля коренным образом отличаются от DIMM и SIMM, так что преемственность, если она и существует, то лишь в рекламных проспектах. В SLDRAM используется 8 и более банков памяти внутри модуля, что позволило поднять скорость чтения/записи до 1,6 Гбайт/с.
Адресация памяти производится при помощи команд, передаваемых по шине CA0-9. Естественно, что с момента подачи команды до момента появления данных проходит промежуток времени, равный полному времени доступа, — чудес не бывает. Но вот дальше — если был задан пакетный режим чтения, данные идут непрерывно, без задержки, поскольку поступают по очереди из разных банков. К моменту окончания восьмого байта тот банк, с которого операция началась, уже опять готов к работе, так что данные теоретически могли бы поступать непрерывно. На практике разработчики стандарта ограничились пакетами длиной 8 и 16 байт. Вроде бы все хорошо: обеспечена поддержка большинства производителей памяти, стандарт открытый — бери и пользуйся бесплатно. Hyundai даже выпустила работающий модуль, да одно нехорошо — этот стандарт не пользуется поддержкой разработчиков чипсетов.
Intel — законодатель мод в области чипсетов, выбрал стандарт Direct Rambus, RDRAM и выпустил чипсет, его поддерживающий (Intel 820 — Camino). Идея не блещет новизной, фирма Rambus была основана в 1990 году, в 1992 году был получен первый работоспособный образец, в 1994 году SGI закупила пробные образцы и в 1995 году объявила о своем намерении устанавливать память Rambus в качестве графической в рабочих станциях Indigo2. После небольшого курьеза, вызванного установкой Rambus в Nintendo 64, в декабре 1996 года Rambus и Intel заключили соглашение об оценке этой технологии в качестве основной памяти персональных компьютеров. И наконец, победа — в ноябре 1999 года начали продаваться персональные компьютеры, оснащенные Rambus как основной памятью.
Модуль Rambus, RIMM, представляет собой, как и модуль DIMM, небольшую печатную плату, на которой установлены микросхемы. На одном из углов платы по обеим ее сторонам размещены 184 позолоченных контакта. Значительная часть контактов имеет возвратные земляные линии, для обеспечения нужной полосы частот пропускания.
Управление модулем осуществляется при помощи линий ROW0-2 и COL0-4, что позволяет усмотреть некоторую аналогию с сигналами RAS и CAS. По обеим группам передаются команды длиной 8 бит, что в сумме дает до 64 бит, чего вполне достаточно для передачи как команды, так и адреса.
При работе модуля от подачи команды по линиям ROW0-2 до появления данных на шине проходит полное время доступа к устройству, обычно 40 нс. Но затем данные могут передаваться непрерывно, хотя и с задержкой на 20 нс относительно команд, передаваемых по линиям COL0-4. То есть модуль обеспечивает пиковую производительность 1,6 Гбайт/с, но, как уже говорилось, чудес не бывает — данные хотя и идут непрерывным потоком, но запаздывают на 20 нс по отношению к запросу.
Насчет памяти завтрашнего дня можно сказать вполне определенно — новые технологии будут выскребать по наносекунде из тех примерно 20, которые определяют быстродействие сегодня. По разумным прогнозам, время страничного доступа можно снизить до 10 нс. Серьезных, революционных подходов к существенному увеличению времени доступа без смены технологии не просматривается. Альтернативы же DRAM-технологии пока попросту не существует. Так что день завтрашний видится как увеличение размеров кэш-памяти с целью добиться 95-98% попаданий.
А день послезавтрашний — пока попросту в тумане. Может быть, появится новая технология, а может быть, миллионы транзисторов на одном кристалле станут обыденным делом. Время покажет.
КомпьютерПресс 4'2000