Память, тайминги и т.п. (научно-популярный обзор технологий динамической памяти)

По некоторым, связанным с работой, причинам просмотрел спецификации некоторых микросхем динамической памяти. Увлекся и ознакомился ( а так же и обновил в памяти ) все с простых DRAM до DDR3. И решил осветить в нескольких статьях в изложении «на пальцах». Пусть где-то не совсем правильно, но зато доходчиво (Я намеренно опускаю такие вещи как регенерация и т.п., так же намеренно упрощаю диаграммы, чтоб не загружать неподготовленные мозги лишней информацией).
И так начнем. Почему используют динамическую память, вместо статической, не смотря на то что последняя быстрее? Причин несколько.
— Во-первых стоимость, на площади одной ячейки статической памяти, можно сделать несколько ячеек динамической. Во-вторых динамическую можно сделать в виде матрицы, а статическая требует прямых линий управления, что еще больше увеличивает занимаемую площадь. Происходит это потому, что динамическая память представляет собой конденсатор (емкость) выполненную на транзисторе с изолированным затвором. В результате, для записи или чтения достаточно, выстроить ячейки в виде матрицы, и получать доступ к ним путем выбора столбца и строки. А статическая память, являет собой триггер, т.е. элемент памяти, состоящий из нескольких транзисторов, которые обеспечивают переключение в 1-е или 0-е состояние и поддержку этого состояния, пока присутствует питающее напряжение.

Адресация динамической памяти производится в два этапа. Сначала выставляется адрес строки, затем активируется (активный уровень низкий) сигнал /RAS. Потом, выставляется адрес столбца, и следом активируется сигнал /СAS. После чего, спустя некоторое время,( которое изначально и именовалось CAS Latency ), данные появляются на выходе данных.

Первые элементы динамической памяти имели невысокое быстродействие и обеспечивали доступ к одной ячейке за цикл состоящий из 5-ти тактов SDR (Single Data Rate) Т.е. все процессы происходят по верхнему(восходящему) фронту тактового сигнала. (Не путайте с управляющими сигналами, те в основном имеют негативную логику и у них действующий фронт нижний(нисходящий)). И время доступа к ячейкам такой памяти, на современный лад можно записать как 5-5-5-5 (т.е. последовательные 4-е ячейки, каждая занимает по 5 тактов. итого 20 тактов на 4-е последовательные выборки)
DRAM Single Bit Access Diagram

Вскоре после появления первых микросхем динамической памяти, произвели небольшую их доработку, в следствии чего появилась возможность, выбрать несколько ячеек из одной строки, не передавая каждый раз адрес строки, а только меняя адрес столбца. Что позволило ускорить ее работу. Правда таким образом нельзя адресовать много ячеек, т.к. заряд на адресующем строку элементе кончается, но 4 ячейки адресуются запросто.(в приведенном рисунке, адресуются три ячейки, просто больше не влезало в экран при рисовании).
DRAM Paged 3 Bits Access Diagram
Это позволило снизить общее время доступа к нескольким ячейкам. Теперь его можно записать как 5-3-3-3. Т.е. Время доступа к первой ячейке равно 5-ти тактам, а к последующим трем по 3 такта.( Итого 14-ть тактов на 4-е выборки). Как выяснилось в большинстве случаев обращение производится к 4-м последовательным ячейкам (а если это не так, то обычно и адрес строки отличается), в следствии чего появилось следующее поколение DRAM, с автоматически доадресуемым (BURST) доступом. В этой памяти, после установки адреса первой ячейки, последующие три адресуются автоматически, для чего кратковременно подается сигнал CAS, без адреса. Т.е. обратный фронт сигнала /CAS, инкрементирует адрес, а следующий прямой фронт стробирует выдачу информации на выход DATA. Диаграмма работы практически не отличается от предыдущей, разве что 2,3,4-й CAS-цикл на один такт короче, и адрес там не выставляется. В следствии чего время доступа уже 5-2-2-2( итого 11 тактов на 4-е выборки).

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

Тайминги же, это цифры показывающие минимальное время для данной конкретной памяти, которое требуется на каждый цикл доступа. Тайминги представляют собой 4-е записанных подряд значения. Являющееся временем в тактах.
1 — CAS Latency — это минимальное время между появлением активного фронта CAS и появлением первого значения.
2 — RAS to CAS Delay — это минимальное время между подачей RAS и подачей CAS.
3 — Row Precharge — Время необходимое микросхеме для заряда элементов, чтобы обеспечить следующий выбор строки, иными словами минимальное время между «отпусканием» RAS, и новым активным фронтом RAS.(фактически время «отдыха» между обращениями к строке.)
4 — TRAS (или Active To Precharge) — минимальное время активности сигнала RAS. (т.е. всего цикла обращения к микросхеме)

Фактически первые два (в сумме) определяют время между началом цикла и получением первого бита данных, а вторые два (тоже в сумме)определяют минимальное время одного цикла (т.е. время от начала одного обращения до начала другого).

Ежели статья вызовет интерес, то я продолжу описание различных версий динамической памяти (SDRAM, DDR SDRAM, DDR2 SDRAM и DDR3 SDRAM) в следующих статьях.
P.S. Замечания, а еще в большей степени предложения по «доходчивости» текста, принимаются с благодарностью.

3 комментария

  1. Вот для примера, реальная диаграмма из технической документации микросхемы 41256 (обычный DRAM). Чтоб была понятна суть упрощений, которые я сделал, в тексте статьи.
    .
    По рисунку:
    tCAC — CAS Latency
    tRCD — RAS to CAS Delay
    tRAS — TRAS
    tRP — Row Precharge

  2. Просьба не путать выше указанные времена доступа с таймингами, так любимыми оверклокерами и некоторыми менеджерами продаж.

    Сам же и предлагаешь путать:

    время доступа к ячейкам такой памяти, на современный лад можно записать как 5-5-5-5

    🙂

    В целом же понятно (как мне кажется, хотя я именно это узнал немного ранее) и верно.
    Интересно было бы про субтайминги в итоге почитать. 😉

  3. Вся проблема, в том, что для разных версий памяти, субтайминги разные…(не все конечно) и кроме того, в большинстве случаев, для нас малозначимые, т.к. влиять на них мы не можем, да и не общее быстродействие памяти, они редко оказывают влияние…потому, как время зарядки, и разрядки гораздо длиннее, и все субпроцессы в него помещаются (ну может быть за редким исключением).

    Как подробнее разбирусь (сейчас…пока некоторые вещи, не совсем уяснил…разбираюсь) с SDRAM и DDR-ами(они тоже SDRAM в принципе) то если буду подмечать, такие субтайминги (а так же те которые будут важны для нашего повествования), буду стараться их осветить по-подробнее, заострив внимание.

    А по-поводу, 5-5-5-5…сейчас используется синхронная память, и процессору не надо ожидаться, когда память соизволит выдать данные, он об этом точно «знает», т.к. все засинхронизировано, а тогда, гораздо важнее было, как быстро, процессор получит весь пакет данных и сможет продолжить вычисления. А уже потом, «отпускать» строку будет контроллер памяти, и процу пофигу….а сейчас, когда проц ждет память, только если ему нечего делать, более важным стало полное время от выборки, до выборки…(что в принципе и определяет быстродействие памяти).

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.