Нам постоянно приходит энное количество писем с просьбой рассказать про принципы работы оперативной памяти. Вопросы стандартны: «Что такое тайминги?», «Чем отличается DDR2 от DDR3?», «Как образуется частота оперативной памяти?». И пусть данная тема стара как мир, тем не менее, по просьбе трудящихся я подниму ее еще раз.

«Стара как мир…», — это еще слабо сказано. Оперативная память наряду с процессором и системной платой является старожилом любой ЭВМ. Изначально на задворках компьютерного развития бытовал такой термин, как платформа (он и сейчас есть, но имеет несколько иной смысл). Именно под платформой и подразумевали эти три «железки». Время шло, компьютерные комплектующие развивались. Но до сих пор процессор, системная плата и ОЗУ остаются незыблемыми частями любого ПК. Незыблемыми! И без оперативной памяти сегодня по-прежнему не обойтись.

Принцип работы и «миссия» ОЗУ проста до безобразия. Модуль памяти является связующим звеном между ПЗУ (читай — HDD/SSD) и центральным процессором. И нужны «мозги» компьютеру в силу того, что современные накопители (даже твердотельные!) не имеют тех скоростных качеств, что и SDRAM. В свою очередь, оперативка обладает небольшими объемами (относительно ПЗУ) и высокой пропускной способностью. Именно поэтому ее и нарекли «оперативной». То есть той, что быстро, почти моментально поставляет данные центральному процессору. К тому же те же массивы матриц (математические), текстуры, сценарии игр и прочие данные проще сразу подгрузить в оперативную память и там их обрабатывать. Именно поэтому объем ОЗУ имеет чуть ли не первостепенное значение. Но об этом чуть позже.

Для сравнения, скорость чтения жесткого диска на сегодняшний день достигает 100- 150 Мбайт/с. Производительность твердотельного накопителя — 500-600 Мбайт/с.

А скорость модуля DDR3-1600 находится на отметке 25.6 Гбайт/с. Чувствуешь разницу? Между тем, рекорд принадлежит SRAM- памяти. Например, кэш первого уровня процессора Intel Core i7-3960X может похвастать скоростью порядка 120 Гбайт/с.

SDRAM

Собственно говоря, вот я и дошел до SDRAM. Данная аббревиатура расшифровывается как Synchronous Dynamic Random Access Memory — синхронная динамическая память с произвольным доступом. Динамическая, потому что память постоянно требует обновления из-за малой емкости конденсаторов (есть и статическая память, не требующая обновления, но про нее я сегодня умолчу). Синхронная, потому что память выполняет каждую операцию известное число времени (читай — тактов). Чисто технически это выглядит следующим образом: контроллер памяти подает запрос и ждет необходимые данные (причем знает, сколько времени эти данные будут до него добираться). Именно синхронность позволяет управлять потоком данных, выстраивая их в ряд, образуя конвейер.

Итак, мы выяснили, что конденсаторы памяти хранят в себе заряд, но очень короткое время. Если заряд есть, то процессор расценивает его наличие, как логическую единицу. И наоборот, если заряда у конденсатора нет, то это логический ноль. Именно поэтому конденсаторы являются ячейками памяти с плоской структурой, адрес каждой из которых определяется как номер строки . и столбца. То есть конденсаторы являются носителями информации. Дабы осуществить конвейерную обработку данных и тем самым повысить скорость обработки, в чипе памяти находится сразу несколько независимых массивов памяти. Они называются банками (от английского bank). В единицу времени в одном банке можно работать только с одной ячейкой. Но ведь можно работать одновременно с несколькими банками! По умолчанию банки в чипе расположены друг за другом, но существует режим interleaving, суть которого кроется в разбиении записываемой информации на несколько кусков, которая затем и помещается в разные банки. Причем процессору как бы «фиолетово», он будет продолжать считать эти данные единым целым. Всю «грязную работенку» в этом случае выполняет контроллер памяти. Модуль плотностью до 64 Мбит имеет два банка. Модуль с плотностью 64 Мбит и выше — четыре банка, с плотностью 1 Гбит и выше — 8 банков. Логично и утверждение, что чем больше банков — тем лучше.

Модуль памяти

Под модулем памяти мы всегда подразумеваем печатную плату с распаянными на ней чипами. Для настольного сегмента, как правило, используются модули памяти форм-фактора DIMM (Dual In-line Memory Modules) и SO-DIMM (Small Outline Dual In-line Memory Module). Первые — для полноценных десктопов, вторые — для ноутбуков. Кроме того, на печатной плате расположены энергонезависимая память (для хранения SPD). Модуль памяти SDR имеет 144 пина для подключения к системной плате; DDR имеет 172 контакта; DDR2 — 214 пинов, a DDR3 — все 240. A SO-DIMM, в свою очередь, имеет в своем распоряжении 204 контакта.

Объем модуля памяти равен сумме объемов используемых в нем чипов. Причем чипы бывают разной плотности. Все модули памяти имеют минимум 64-битную шину. Есть еще 72-битные модули с коррекцией ошибок (ЕСС), в которых 8 бит предназначено непосредственно для этой самой коррекции. Следовательно, модули памяти передают за такт 8 байт информации. В итоге легко рассчитать теоретическую пропускную способность модуля памяти по следующей формуле: А*64/8=ПС, где «А» — скорость передачи данных, а «ПС» — искомая пропускная способность. Например, модуль с эффективной частотой 800 МГц обладает производительностью 800*64/8=6400 Мбайт/с. Именно это значение и записывают в технических характеристиках устройства под видом РС2- 6400. Так, модуль памяти DDR3 с формулировкой РСЗ-20000 должен работать на частоте 20000*8/64=2500 МГц.

Ширина шины модуля памяти равна сумме ширин шин чипов этого модуля. Поэтому, если на модуле распаяно четыре чипа, то ширина каждого равна 64/4=16 бит. Если 8 чипов, то 64/8=4 бита. Притом что многие материнские платы поддерживают до 64 Гбайт ОЗУ, на сегодняшний день в продаже есть модули объемом 8 Гбайт. Распаяно на них 16 чипов. Соответственно, на каждый чип приходится 64/16=4 бит шины, то есть каждый чип обладает плотностью 4096 Мбит.

Для чтения информации из ячейки подается адресный сигнал в соответствующую строку (Row). А затем данные считываются из соответствующей колонки (Column). Также отмечу, что массив памяти обладает так называемым sense amplifiers — механизмом подзарядки конденсаторов, усилителем.

В большинстве случаев контроллер памяти считывает сразу целый пакет данных (Burst) с каждого бита шины. Соответственно, при записи каждые 64 бита или 8 байт делятся на несколько частей. Существует такое понятие, как Burst length (длина пакета). Если BL, например, равен восьми, то передается сразу 8*64=512 бит за один раз.

В итоге мы получаем архитектуру чипа: с разрядностью (шириной) шины и глубиной чипа. Чип плотностью 512 Мбит и разрядностью 4 имеет глубину чипа 512/4=128М. В свою очередь, 128М=32М*4 банка. 32М — это матрица, имеющая 16 ООО строк и 2000 столбцов, которая может хранить 32 Мбит данных. Все взаимосвязано.

Модуль памяти может быть представлен и в геометрической форме, где ширина всегда равна 64 бит, а глубина — объему модуля в битах, поделенному на 64.

От SDR к DDR

В итоге, что мы имеем? Модуль памяти SDR- 100 МГц емкостью 256 Мбайт — это печатная плата с 144 контактами, 4 чипами, работающими на частоте 100 МГц. То есть скорость передачи данных равна 100 МГц. Но впоследствии производители памяти столкнулись с прогнозируемой проблемой: чипы памяти не могли работать на большей частоте. Дилемму можно было решить увеличением разрядности модуля (то есть увеличением

числа чипов), но этот выход из ситуации не в лучшую сторону сказался бы на стоимости производства ОЗУ. Тогда в JEDEC решили пойти другим путем: увеличить ширину шины внутри самого чипа памяти, но оставить его работать на прежней частоте, а информацию доставлять и забирать по шине с удвоенной частотой и прежней шириной. Также данные стали передаваться не один раз за такт, а сразу два раза за такт — по обоим фронтам тактового сигнала (ниспадающему и нарастающему). Так и появилась оперативная память стандарта DDR (Double Data Rate), что в переводе с английского означает «удвоенная скорость передачи данных».

Итак, после того как данные адреса попадают в декодеры банка (строки и столбца, у каждого свой декодер), выбирается нужный банк, а строка считывается в sense amplifiers. После этого в модуле памяти разрядностью, например, 4 выбирается 8 бит данных. То есть в два раза больше!

Эти 8 бит разделяются на два блока по 4 бит, затем они попадают на мультиплексор, которые выставляет их в очередь согласно одной из адресных линий столбца. Далее эти блоки доставляются до отправителя сигнала, где уже на внешней частоте (с удвоенной частотой передачи) попадают на шину передачи данных.

Прием данных осуществляется точно так же, но с точностью до наоборот. Сначала они попадают в приемник сигнала. Затем делятся по двум каналам и записываются одним блоком, то есть 8 бит, если речь идет о 4-разрядном модуле памяти. Порядок следования блоков определяется согласно одной из выделенных для этого адресных линий столбца.

В итоге в случае с технологией DDR мы видим, что мы не можем считать менее чем два пакета данных, поскольку внутри чип будет его видеть как единое целое, один пакет. Такая архитектура получила название 2″ prefect, где п — цифра (степень), означающая поколение DDR (DDR1, DDR2, DDR3, DDR4). Она показывает, сколько данных (читай — пакетов) за раз выбирается при чтении.

От DDR к DDR4

Если у модулей SDR показатели считывались в мегагерцах, то у DDR — в миллионах передач в секунду через один выход данных! Поэтому запись «DDR 400 МГц» не соответствует действительности и лишена здравого смысла. Хотя бы потому, что шина модуля памяти DDR-400 работает на реальной частоте 200 МГц и только передает данные два раза за такт. Тем не менее, у производителей памяти сложилось стойкое ощущение, что надо использовать термин «мегагерц». Так короче и аппетитнее для покупателей. Ведь как звучит и завораживает: модуль памяти с частотой 2800 МГц! Именно поэтому появились такие понятия, как реальная и эффективная частота модуля памяти. Реальная частота — частота шины модуля: эффективная — удвоенная частота шины модуля.

Согласно архитектуре 2Л prefect, оперативная память DDR2 обладает внутренней шиной вчетверо больше разрядности. Плюс возросшую производительность чипа стали передавать по внешней шине с удвоенной частотой. В итоге, если у DDR-400 чип работал на скорости 200 МГц, то у DDR2-400 — на скорости 100 МГц, но с вдвое большей внутренней шиной. Соответственно, у DDR2-800 чип будет работать на частоте 200 МГц, у DDR2- 1066 — на частоте 266.6 МГц. В DDR3-800 частота чипа станет уже 100 МГц, внутренняя шина будет уже в восемь раз больше, а внешняя частота не изменится и останется равной 400 МГц.

Легко догадаться, что оперативная память DDR4 согласно архитектуре 2n prefect будет обладать внутренней шиной в 16 раз больше разрядности, а внешняя частота останется прежней. И если чип DDR4-1600 будет работать с частотой 100 МГц, то внешняя реальная частота составит 800 МГц.

В итоге, какой вывод мы можем сделать? Получается, что производительность DDR- памяти зависит от пропускной способности, но не от технологии. С каждым новым поколением будет увеличиваться длина минимального пакета данных Burst length. Если у DDR она составляла не менее 128 бит, то с DDR2 мы не могли считать с одного модуля менее 256 бит (BL=4), а с DDR3 — не менее 512 бит (BL=8). Для DDR4 выборка будет составлять 16 пакетов или 1024 бит данных. Конечно, смена поколений DDR сопровождается не только увеличением Burst length

и увеличением внешней частоты. Корпорации по производству оперативной памяти осваивают новые техпроцессы. Плотность чипов постоянно растет, как и частоты. При этом уменьшается энергопотребление. Если модуль DDR в свое время потреблял 2.5 В, DDR2 — 2 В, то модуль памяти DDR3 потребляет всего 1.35 В. А переход на DDR4 будет означать, что модуль памяти будет потреблять в районе одного вольта.