Хорошему процессору хорошую память
Еще пару лет назад подавляющее большинство персональных компьютеров оснащалось динамической памятью SDRAM PC100 или PC133. Но в погоне за быстродействием на смену этому типу памяти пришла память DDR200, затем DDR266, далее DDR333, а сейчас доступна память DDR400. Не за горами и новая память DDR-II, и уже поговаривают о новом стандарте DDR-III.
ипы памяти, представленные сегодня на рынке, отличаются большим разнообразием. Кроме того, существуют различные варианты одного и того же типа памяти. Например, встречается память DDR333 с характеристикой CL=3 и CL=2,5. Короче говоря, разобраться во всех этих нюансах неискушенному пользователю не так-то просто. Попробуем осуществить небольшой ликбез по современным типам памяти и основам ее функционирования.
Теоретические основы
целью упрощения память можно представлять себе как некий массив КМОП-транзисторов, организованных в виде матрицы строк и столбцов. Запоминающим элементом является емкость затвора (элементарный конденсатор), а КМОП-транзистор выполняет также функции электронного ключа. Каждый конденсатор способен хранить информационный бит данных. Например, наличие заряда на конденсаторе можно отождествлять с логической единицей, а его отсутствие с логическим нулем. Таким образом, конденсатор можно рассматривать как элементарную ячейку хранения данных.
Схема памяти на основе конденсаторов обладает одним недостатком: заряд конденсатора не может сохраняться бесконечно долго. По законам физики неизбежно происходит самопроизвольный разряд конденсаторов, вследствие чего память на основе массива конденсаторов требует периодического подзаряда конденсаторов или регенерации. Именно поэтому такая память называется динамической.
Для регенерации зарядов конденсаторов используется схема циклического обращения к ячейкам памяти, поскольку каждое такое обращение восстанавливает прежний заряд конденсатора. Регенерация в микросхеме происходит одновременно по всей строке матрицы при обращении к любой из ее ячеек достаточно циклически перебрать все строки.
Для того чтобы получить доступ к той или иной ячейке памяти (например, для записи или считывания данных), необходимо указать ее адрес. Поскольку ячейки памяти образуют матрицу, то для задания адреса ячейки нужно указать номер столбца (адрес столбца) и номер строки (адрес строки).
Считывание адреса строки происходит, когда на входы матрицы памяти подается специальный стробирующий импульс RAS (Row Address Strobe), а считывание адреса столбца при подаче стробирующего импульса CAS (Column Address Strobe). Импульсы RAS и CAS подаются последовательно друг за другом, причем импульс CAS всегда подается после импульса RAS, то есть сначала происходит выбор строки, а затем выбор столбца. Адрес строки и столбца передается по специальной мультиплексированной шине адреса MA (Multiplexed Address). Рассмотренная организация памяти позволяет получить доступ к любой ячейке памяти, из-за чего ее называют динамической памятью с произвольным доступом (Dynamic Random Access Memory, DRAM).
Динамическую память можно разделить на асинхронную и синхронную. Первоначально использовалась асинхронная память, однако в настоящее время она потеряла свою актуальность. В асинхронной памяти установка адреса, подача управляющих сигналов и чтение/запись данных могут выполняться в произвольные моменты времени необходимо только соблюдать временные соотношения между этими сигналами. Следовательно, работа асинхронной памяти не синхронизирована с тактовой частотой системной шины, а данные появляются на этой шине в произвольные моменты времени, но с системной шины они считываются контроллером, который уже синхронизирован с тактовой частотой.
Если данные появляются в ближайший момент за фронтом тактового импульса, то они будут считаны только с началом следующего тактового импульса. Так происходит по той причине, что сигналом к считыванию данных является не уровень тактового импульса, а его фронт. Поэтому при использовании асинхронной памяти часто возникает задержка с обработкой данных, что, в свою очередь, приводит к жестким ограничениям на частоту системной шины.
В связи с этим на смену асинхронной памяти пришла синхронная динамическая память SDRAM (Synchronous DRAM). В синхронной памяти обеспечивается синхронизация всех входных и выходных сигналов с тактами системного генератора. Однако управление памятью усложняется, так как приходится вводить дополнительные регистры-защелки, в которых хранятся адреса, данные и управляющие сигналы. Все типы современной памяти (SDR, DDR и DDR-II) являются именно синхронной динамической памятью, причем основной принцип организации памяти остается неизменным.
В синхронной памяти заложена идеология страничного доступа с пакетной обработкой данных. Суть страничного доступа заключается в том, что после выбора одной строки матрицы памяти допускается многократная установка адреса столбца. Страницей в данном случае называется сама строка матрицы. Такой подход позволяет выбирать последовательные данные в пределах одной строки без изменения ее адреса (блочная адресация), то есть с одним и тем же стробирующим импульсом RAS. Это позволяет ускорить блочные передачи, но только в случае, когда весь блок данных или его часть находится внутри одной строки матрицы. Суть пакетного доступа состоит в том, что после выбора строки и задания адреса столбца происходит считывание данных не только выбранной ячейки, но и нескольких соседних ячеек, то есть считывание пакета данных. Для этого в микросхеме SDRAM-памяти имеется счетчик для наращивания адресов столбцов ячеек памяти с целью обеспечения быстрого доступа к ним. Длина пакета (Burst Length, BL) может варьироваться и достигать длины всей страницы.
Как уже говорилось, в синхронной памяти между подачей стробирующих импульсов CAS и RAS, то есть между моментами считывания адреса строки и адреса столбца в пределах выбранной строки имеется определенная задержка, измеряемая в периодах синхроимпульсов. Эта задержка называется RAS to CAS Delay и для синхронной памяти варьируется от 2 до 3 тактов.
Аналогичным образом после подачи сигнала СAS и до появления первого элемента данных на шине проходит определенный временной промежуток, измеряемый в тактах и именуемый CAS Latency. Каждый последующий элемент данных появляется на шине данных в очередном такте. Для SDRAM-памяти эта задержка может составлять 2 или 3 такта. CAS Latency (CL) является одной из основных характеристик и указывается на модулях памяти. Например, на модуле может быть указано CL=2, что означает задержку в 2 такта.
Завершение цикла обращения к банку памяти осуществляется посредством команды деактивации, которая подается за 1 или за 2 такта перед выдачей последнего элемента данных. Время деактивации RAS Precharge также измеряется в тактах и может быть равно 2 или 3 тактам.
Описанные времена RAS to CAS Delay (Trcd), CAS Latency (Tcl) и RAS Precharge (Trp) определяют тайминг памяти, записываемый в виде последовательности Tcl-Trcd-Trp. Временные диаграммы при обращении к синхронной памяти для тайминга 2-2-2 показаны на рис. 1.
Кроме организации страничного доступа с пакетной обработкой данных, в SDRAM-памяти используется деление всей памяти на четыре независимых банка (Bank0, Bank1, Bank2, Bank3), что позволяет совмещать выборку данных из одного банка с установкой адреса в другом банке, то есть одновременно могут быть открытыми несколько страниц. Доступ к этим страницам чередуется (Bank Interleaving), что приводит к устранению задержек и обеспечивает создание непрерывного потока данных.
Память принято характеризовать различными параметрами, важнейшим из которых является пропускная способность, определяющая максимальное количество байтов, передаваемых по шине данных за одну секунду. Чтобы определить пропускную способность памяти, частоту шины памяти (то есть частоту, с которой может происходить считывание данных) нужно умножить на количество байтов, передаваемых за один такт. Память SDRAM имеет 64-битную (8-байтную) шину данных, поэтому пропускная способность SDRAM-памяти определяется по формуле:
Пропускная способность (Мбайт/с) = Частота шины памяти (МГц) Ѕ 8 байт.
К примеру, для памяти SDRAM PC100 с тактовой частотой 100 МГц пропускная способность составляет 800 Мбит/с, а для памяти SDRAM PC133 с тактовой частотой 133 МГц 1066 Мбит/с.
Относительно пропускной способности памяти отметим, что здесь имеется в виду только режим страничного пакетного доступа, то есть когда данные считываются на каждом такте. Если же речь идет о произвольной выборке данных, расположенных в разных строках, то необходимо учитывать, что для доступа к каждому такому элементу данных требуется несколько подготовительных циклов, количество которых определяется суммой RAS to CAS Delay и CAS Latency.
DDR-память
ак уже отмечалось, несмотря на широкую популярность памяти SDRAM PC100/133, на смену ей пришел новый тип синхронной динамической памяти DDR SDRAM. По сравнению с обычной SDRAM-памятью эта память обеспечивает вдвое большую пропускную способность при тех же тактовых частотах ядра памяти. Именно поэтому эта память и получила название Double Data Rate (DDR), то есть память с удвоенной скоростью передачи.
Каким же образом достигается двойное увеличение скорости передачи данных и почему для этого пришлось использовать новый стандарт? Не достаточно ли было просто увеличить тактовую частоту в два раза? Действительно, увеличение тактовой частоты в два раза ведет к двойному увеличению скорости передачи данных, однако повышение частоты работы ядра памяти связано с определенными трудностями. Вспомним, что элементарной ячейкой динамической памяти является конденсатор устройство, инерционное по своей природе. Для того чтобы произвести считывание информации с конденсатора, необходимо его разрядить, для чего требуется определенное время, пропорциональное емкости конденсатора, сделать это мгновенно невозможно. Следовательно, нельзя повышать частоту ядра памяти до бесконечности. Кроме того, динамическая память требует периодической регенерации, чтобы восстанавливать заряды конденсаторов, а для зарядки конденсаторов тоже необходим определенный временной интервал. В результате повышение частоты ядра памяти сопряжено с непреодолимыми трудностями. Конечно, применение более миниатюрных конденсаторов повышает их быстродействие, однако для этого нужно использовать иную проектную норму при производстве чипов памяти. К тому же переход на новый технологический процесс производства не может кардинально увеличить скорость работы памяти. Поэтому тактовые частоты ядра в DDR-памяти остались прежними, то есть 100 и 133 МГц. Потом, правда, добавились частоты 166 и 200 МГц, однако память с частотой ядра 200 МГц до сих пор не сертифицирована комитетом JEDEC.
Итак, если частоту ядра нельзя безболезненно повысить в два раза, то как же можно вдвое увеличить скорость? В DDR-памяти на удвоенной частоте работают буферы ввода-вывода (I/O buffer). Увеличить частоту работы таких буферов значительно проще, чем частоту ядра памяти. Предположим, что каждая команда чтения приводит к передаче за один такт ядра памяти двух бит в буфер ввода-вывода. Далее в режиме мультиплексирования по времени эти биты передаются на шину данных, но уже с удвоенной частотой, то есть за каждый такт ядра памяти передается по два бита. Фактически передача по шине данных происходит по положительному и отрицательному фронтам тактирующих импульсов, что в итоге и приводит к удвоенной скорости передачи. Для осуществления такого способа передачи необходимо, чтобы каждая команда чтения приводила к выбору двух битов из массива памяти. Первый бит выбирается по положительному фронту тактирующего импульса, а второй по отрицательному. Такой способ передачи получил название prefetch of 2 (предвыборка 2). Для того чтобы можно было реализовать передачу двух бит за один такт, используют две разделенные линии передачи данных от первичных усилителей к буферам ввода-вывода. После этого биты данных мультиплексируются по времени и передаются на удвоенной частоте на шину данных, причем именно в том порядке, в котором они поступили в буфер ввода-вывода (рис. 2).
Еще раз подчеркнем, что в DDR-памяти удвоение скорости касается только данных, а команды тактируются так же, как и прежде (то есть как в обычной SDRAM-памяти) по положительному фронту тактового импульса.
DDR-память, работающую на частоте 100 МГц, иногда обозначают как DDR200, подразумевая при этом, что частота шины данных памяти составляет 200 МГц. Аналогично при работе ядра памяти на частоте 133 МГц используют обозначение DDR266, при частоте 166 МГц DDR333, а при частоте 200 МГц DDR400. Нетрудно рассчитать и пропускную способность DDR-памяти. Учитывая, что ширина шины данных составляет 8 байт, для памяти DDR200 получим 1,6 Гбайт/с, для DDR266 2,1 Гбайт/с, для DDR333 2,7 Гбайт/с, а для DDR400 3,2 Гбайт/с.
Хотя обозначения типа DDR200, DDR266, DDR333 и DDR400 кажутся вполне логичными и понятными, официально принято другое обозначение этой памяти. В названии используется не «эффективная» частота, а пиковая пропускная способность в мегабайтах в секунду (Мбайт/с), то есть память DDR200 обозначается как DDR PC1600, DDR266 как DDR PC2100, DDR333 как PC2700, а DDR400 как PC3200.
В соответствии со спецификацией DDR-память имеет структуру из четырех независимых банков (как и в памяти SDRAM PC100/133), что позволяет совмещать выборку данных из одного банка с установкой адреса в другом банке, то есть можно одновременно иметь несколько открытых страниц. Кроме того, в DDR-памяти предусматривается пакетный доступ к данным, а длина пакета может составлять 2, 4 и 8 элементов.
В DDR-памяти данные могут передаваться два раза за такт, поэтому латентность CAS может оказаться не целой величиной, а кратной 0,5 такта. К примеру, на модуле памяти может использоваться обозначение CL=2,5, то есть CAS Latency составляет 2,5 такта системной частоты.
Вообще же, в соответствии со спецификацией на DDR-память предусматривается латентность CAS равная 2 и 2,5. Латентности 1,5 и 3 являются опциональными.
С учетом высокой частоты шины памяти для повышения точности синхронизации сигналов в DDR-памяти предпринят ряд мер. Так, сигналы синхронизации (прямой и инверсный) задаются в дифференциальной форме, что позволяет снизить влияние смещения уровней на точность синхронизации. Кроме того, для синхронизации данных используется специальный двунаправленный стробирующий сигнал DQS, который генерируется источником данных: при операциях чтения чипом памяти, а при операциях записи контроллером памяти. Из перечисленных типов памяти в настоящий момент наиболее распространенной является память DDR333, для которой тактовая частота системной шины составляет 166 МГц. Даже если чипсет на материнской плате и не поддерживает такую память, а поддерживает память DDR200/266, то лучше воспользоваться памятью DDR333. Во-первых, эта память будет работать и на более низких частотах, то есть в режиме DDR200 или DDR266. Во-вторых, используя такую память при штатной частоте системной шины 133 МГц, компьютер получает неплохую потенциальную возможность для разгона. Увеличивая частоту системной шины до 166 МГц (и тем самым увеличивая частоту процессора), мы можем быть уверены, что память будет стабильно работать, поскольку для нее частота не является завышенной. Память DDR400 с тактовой частотой системной шины 200 МГц также становится все более популярной, хотя далеко не все чипсеты поддерживают этот тип памяти в штатном режиме. Рекомендации по использованию этой памяти такие же, как и в случае DDR333. Эта память является довольно быстродействующей, вследствие чего ее использование при тактовых частотах 133 или 166 МГц позволяет, с одной стороны, безболезненно уменьшать времена задержек (уменьшать тайминги), а с другой разгонять процессор путем увеличения тактовой частоты системной шины.
DDR-II
тандарт DDR-II пока еще находится в стадии утверждения, и широкое распространение память DDR-II получит лишь в 2005 году.
Если следовать терминологии DDR (Double Data Rate), то память DDR-II логично ее было бы назвать QDR (Quadra Data Rate), так как этот стандарт подразумевает в четыре раза большую скорость передачи: при пакетном режиме доступа данные передаются четыре раза за один такт.
Несмотря на увеличение скорости передачи в четыре раза по сравнению с обычной SDR (Single Data Rate) SDRAM-памятью, базовые принципы остались прежними. Само ядро памяти работает на тех же тактовых частотах, что и ядро памяти SDR и DDR.
Напомним, что для получения удвоенной скорости передачи в памяти DDR к синхронизирующему сигналу добавлялся инверсный, что позволяло считывать данные как по положительному, так и по отрицательному фронту тактирующего импульса и достигать удвоенной скорости передачи. Но каким же образом удается еще в два раза повысить скорость передачи по сравнению с DDR-памятью?
Предположим, что у нас имеется не одно, а два совмещенных ядра DDR. Каждое такое ядро позволяет производить выборку двух битов данных за такт, но в сумме получается, что за один такт происходит передача уже четырех битов. В реальности, конечно, используется одно ядро, но выборка данных происходит уже с учетверенной скоростью. При этом само ядро, как и прежде, тактируется на частоте 100, 133 или 166 МГц.
Для получения учетверенной скорости выборки данных, кроме основного и инверсного синхронизирующего сигнала, добавляются еще два сигнала (прямой и инверсный) сдвинутые на полтакта относительно первого синхронизирующего сигнала. Для простоты вместо четырех тактирующих сигналов с синхронизацией по положительному фронту можно рассмотреть один виртуальный тактирующий сигнал с удвоенной частотой и синхронизацией по положительному и отрицательному фронтам. Этот метод получил название prefetch of 4 (предвыборка 4). Биты, поступающие за каждый такт ядра памяти в буфер ввода-вывода, мультиплексируются по времени и затем, уже на учетверенной скорости, поступают на шину данных (см. рис. 2).
Память DDR-II, как и DDR, использует архитектуру из четырех банков с такой же длиной строки (страницы), как и в памяти DDR. Минимальная длина пакета равна 4 (в памяти DDR минимальная длина пакета равна 2). Набор команд DDR-II совместим с набором команд DDR.
Новые модули памяти DDR-II уже не будут совместимы по контактам с модулями DDR-памяти. Вместо 184-контактных модулей будут применяться 232-контактные модули. Кроме того, в них будет использоваться пониженное напряжение: 1,8 В против 2,5 В в модулях DDR. Учитывая, что поглощаемая мощность пропорциональна тактовой частоте, емкости памяти и квадрату напряжения, при прочих равных условиях снижение напряжения позволит почти вдвое снизить поглощаемую мощность.
Говоря о планах выпуска памяти DDR-II, отметим, что стандартом будут предусмотрены типы памяти DDR400, DDR533 и DDR667. При этом может возникнуть путаница в отношении памяти DDR400, так как она уже выпускается (несмотря на отсутствие стандарта), но не в стандарте DDR-II. Если же исходить из стандарта DDR-II, то памяти DDR400 будет соответствовать частота FSB 100 МГц, памяти DDR533 частота 133 МГц и памяти DDR667 частота 166 МГц. Соответственно пропускная способность DDR400 составит 3,2 Гбайт/с, DDR533 4,2 Гбайт/с и DDR667 5,3 Гбайт/с.
DDR-III
отя память DDR-II пока еще не появилась на рынке, но уже сейчас начата работа над следующим стандартом DDR-III. Частоты памяти DDR-III будут варьироваться от 800 до 1500 МГц, а энергопотребление будет снижено до 1,2 или 1,5 В. Увеличится и типичная емкость новых чипов DDR-III: предположительно для первых чипов она составит 4 Гбит.
Окончательные спецификации DDR-III будут приняты JEDEC к концу 2005 года, примерно тогда же появятся первые образцы новых чипов, а массовое появление чипов DDR-III ожидается в 2007 году.
Предполагается, что для снижения паразитных шумов при работе на высоких частотах в чипах DDR-III будут применяться сигнальная технология шунтирующих цепей SLT (Short-Loop Through), уже применяемая в некоторых чипах стандарта DDR-II и позволяющая исключить возникновение затуханий, возникающих при распространении сигнала от шины памяти к каждому модулю системы.