Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Тайминги памяти.

Тайминги памяти.

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

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

Активизация строки. Перед осуществлением любой операции с данными, содержащимися в определенном банке микросхемы SDRAM (чтения — команда READ, или записи — команда WRITE), необходимо «активизировать» соответствующую строку в соответствующем банке. С этой целью, на микросхему подается команда активизации (ACTIVATE) вместе с номером банка (линии BA0-BA1 для 4-банковой микросхемы) и адресом строки (адресные линии A0-A12, реальное количество которых зависит от количества строк в банке, в рассматриваемом примере 512-Мбит микросхемы памяти SDRAM их число составляет 213 = 8192). Активизированная строка остается открытой (доступной) для последующих операций доступа до поступления команды подзарядки банка (PRECHARGE), по сути, закрывающей данную строку. Минимальный период «активности» строки — от момента ее активации до момента поступления команды подзарядки, определяется минимальным временем активности строки (Row Active Time, tRAS). Повторная активизация какой-либо другой строки того же банка не может быть осуществлена до тех пор, пока предыдущая строка этого банка остается открытой (т.к. усилитель уровня, содержащий буфер данных размером в одну строку банка является общим для всех строк данного банка микросхемы SDRAM). Таким образом, минимальный промежуток времени между активизацией двух различных строк одного и того же банка определяется минимальным временем цикла строки (Row Cycle Time, tRC).

В то же время, после активизации определенной строки определенного банка микросхеме SDRAM ничто не мешает активизировать какую-либо другую строку другого банка (в этом преимущество «многобанковой» структуры микросхем SDRAM) на следующем такте шины памяти. Тем не менее, в реальных условиях производителями устройств SDRAM обычно здесь также умышленно вводится дополнительная задержка - задержка от активации строки до активации строки(Row-to-Row Delay, tRRD). Причины введения этой задержки не связаны с функционированием микросхем памяти как таковых и являются чисто электрическими — операция активизации строки потребляет весьма значительное количество электрического тока, всвязи с чем частое их осуществление может приводить к нежелательным избыточным нагрузкам устройства по току.

Операции чтения/записи данных.Следующий временной параметр функционирования устройств памяти возникает в связи с тем, что активизация строки памяти сама по себе требует определенного времени. В связи с этим, последующие (после ACTIVATE) команды чтения (READ) или записи (WRITE) данных не могут быть поданы на следующем такте шины памяти, а лишь спустя определенный временной интервал - задержку между подачей адреса строки и столбца (RAS#-to-CAS# Delay, tRCD). После прошествия интервала времени, равного tRCD, при чтении данных в микросхему памяти подается команда READ вместе с номером банка (предварительно активизированного командой ACTIVATE) и адресом столбца.

Устройства памяти типа SDRAM ориентированы на чтение и запись данных в пакетном (Burst) режиме. Это означает, что подача всего одной команды READ (WRITE) приведет к считыванию из ячеек (записыванию в ячейки) не одного, а сразу нескольких подряд расположенных элементов, или «слов» данных (разрядность каждого из которых равна ширине внешней шины данных микросхемы — например, 8 бит). Количество элементов данных, считываемых одной командой READ или записываемых одной командой WRITE, называется «длиной пакета» (Burst Length) и обычно составляет 2, 4 или 8 элементов (за исключением экзотического случая передачи целой строки (страницы) — «Full-Page Burst», когда необходимо дополнительно использовать специальную команду BURST TERMINATE для прерывания сверхдлинной пакетной передачи данных). Для микросхем памяти типа DDR параметр Burst Length не может принимать значение меньше 2 и 4 элементов, соответственно.

Существует две разновидности команды чтения. Первая из них является «обычным» чтением (READ), вторая называется «чтением с автоматической подзарядкой» (Read with Auto-Precharge, «RD+AP»). Последняя отличается тем, что после завершения пакетной передачи данных по шине данных микросхемы автоматически будет подана команда подзарядки строки (PRECHARGE), тогда как в первом случае выбранная строка микросхемы памяти останется «открытой» для осуществления дальнейших операций.

После подачи команды READ, первая порция данных оказывается доступной не сразу, а с задержкой в несколько тактов шины памяти, в течение которой данные, считанные из усилителя уровня, синхронизируются и передаются на внешние выводы микросхемы. Задержка между подачей команды чтения и фактическим «появлением» данных на шине считается наиболее важной и именуется пресловутой «задержкой сигнала CAS#» (CAS# Latency, tCL). Последующие порции данных (в соответствии с длиной передаваемого пакета) оказываются доступными без каких-либо дополнительных задержек, на каждом последующем такте шины памяти (по 1 элементу за такт для устройств SDR, по 2 элемента в случае устройств DDR/DDR2).

Операции записи данных осуществляются аналогичным образом. Точно также существуют две разновидности команд записи — простая запись данных (WRITE) и запись с последующей автоматической подзарядкой строки (Write with Auto-Precharge, «WR+AP»). Точно также при подаче команды WRITE/WR+AP на микросхему памяти подаются номер банка и адрес столбца. Наконец, точно также запись данных осуществляется «пакетным» образом. Отличия операции записи от операции чтения следующие. Во-первых, первую порцию данных, подлежащих записи, необходимо подать по шине данных одновременно с подачей по адресной шине команды WRITE/WR+AP, номера банка и адреса столбца, а последующие порции, количество которых определяется длиной пакета — на каждом последующем такте шины памяти. Во-вторых, вместо «задержки сигнала CAS#» (tCL) важной здесь является иная характеристика, именуемая «периодом восстановления после записи» (Write Recovery Time, tWR). Эта величина определяет минимальный промежуток времени между приемом последней порции данных, подлежащих записи, и готовности строки памяти к ее закрытию с помощью команды PRECHARGE. Если вместо закрытия строки требуется последующее считывание данных из той же самой открытой строки, то приобретает важность другая задержка, именуемая «задержкой между операциями записи и чтения» (Write-to-Read Delay, tWTR).

Подзарядка строки. Цикл чтения/записи данных в строки памяти, который в общем случае можно обозначить «циклом доступа к строке памяти», завершается закрытием открытой строки банка с помощью команды подзарядки строки — PRECHARGE (которая, как мы уже отмечали выше, может быть «автоматической», т.е. являться составной частью команд «RD+AP» или «WR+AP»). Последующий доступ к этому банку микросхемы становится возможным не сразу, а по прошествии интервала времени, называемого «временем подзарядки строки» (Row Precharge Time, tRP). За этот период времени осуществляется собственно операция «подзарядки», т.е. возвращения элементов данных, соответствующих всем столбцам данной строки с усилителя уровня обратно в ячейки строки памяти.

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

- с помощью команды ACTIVATE активизировать строку в банке памяти;

- подать команду чтения данных READ;

- считать данные, поступающие на внешнюю шину данных микросхемы;

- с помощью команды подзарядки строки PRECHARGE закрыть строку (как вариант, это делается автоматически, если на втором шаге использовать команду «RD+AP»).

Временной промежуток между первой и второй операцией составляет «задержку между RAS# и CAS#» (tRCD), между второй и третьей — «задержку CAS#» (tCL). Промежуток времени между третьей и четвертой операциями зависит от длины передаваемого пакета. Строго говоря, в тактах шины памяти он равен длине передаваемого пакета (2, 4 или 8), поделенного на количество элементов данных, передаваемых по внешней шине за один ее такт — 1 для устройств типа SDR, 2 для устройств типа DDR. Условно назовем эту величину «tBL». Микросхемы SDRAM позволяют осуществлять третью и четвертую операции в некотором смысле «параллельно». Команду подзарядки строки PRECHARGE можно подавать за некоторое количество тактов x до наступления того момента, на котором происходит выдача последнего элемента данных запрашиваемого пакета, не опасаясь при этом возникновения ситуации «обрыва» передаваемого пакета (последняя возникнет, если команду PRECHARGE подать после команды READ с временным промежутком, меньшим x). Отметим, что этот промежуток времени составляет величину, равную величине задержки сигнала CAS# за вычетом единицы (x = tCL - 1). Промежуток времени между четвертой операцией и последующим повтором первой операции цикла составляет «время подзарядки строки» (tRP).

Минимальному времени активности строки (от подачи команды ACTIVATE до подачи команды PRECHARGE, tRAS), по его определению, как раз отвечает промежуток времени между началом первой и началом четвертой операции. Отсюда вытекает первое важное соотношение между таймингами памяти:

tRAS, min = tRCD + tCL + (tBL - (tCL - 1)) - 1,

где tRCD — время выполнения первой операции, tCL — второй, (tBL - (tCL - 1)) — третьей, наконец, вычитание единицы производится вследствие того, что период tRAS не включает в себя такт, на котором осуществляется подача команды PRECHARGE. Сокращая это выражение, получаем:

tRAS, min = tRCD + tBL.

Вывод, вытекающий из детального рассмотрения схемы доступа к данным, содержащимся в памяти типа SDRAM, заключается в том, что минимальное значение tRAS не зависит от величины задержки CAS#,tCL (зависимость первого от последнего — достаточно распространенное заблуждение, довольно часто встречающееся в различных руководствах по оперативной памяти).

В качестве примера первого соотношения, рассмотрим типичную высокоскоростную память типа DDR с величинами задержек (tCL-tRCD-tRP) 2-2-2. При минимальной длине пакета BL = 2 (минимально возможной для DDR) необходимо затратить не менее 1 такта шины памяти для передачи пакета данных. Таким образом, в этом случае минимальное значение tRAS оказывается равным 3 (столь малое значение tRAS не позволяет выставить подавляющее большинство контроллеров памяти). Передача более длинных пакетов, состоящих из 4 элементов (BL = 4, tBL = 2), увеличивает это значение до 4 тактов, наконец, для передачи максимального по длине 8-элементного пакета (BL = 8, tBL = 4) требуемое минимальное значение tRAS составляет 6 тактов. Отсюда следует, что, поскольку большинство контроллеров памяти не позволяют указать значение tRAS < 5, разумно настроить подсистему памяти таким образом, чтобы длина передаваемого пакета была максимальной (BL = 8, в том случае, если этот параметр присутствует в настройках подсистемы памяти в BIOS материнской платы), а величина tRAS принимала значение, равное 6. Альтернативный вариант — BL = 4, tRAS = 5.

Второе важное соотношение между таймингами вытекает из того факта, что полный цикл пакетного чтения данных — от 1-й стадии до ее повторения — именуется собственно «минимальным временем цикла строки», tRC. Поскольку первые три стадии, как мы показали выше, не могут занимать время, меньшее tRAS, а последняя занимает время, строго равное tRP, получаем:

tRC = tRAS + tRP.

Некоторые контроллеры памяти (например, интегрированный контроллер памяти процессоров AMD64) позволяют независимо устанавливать значения таймингов tRAS и tRC, что в принципе может привести к несоблюдению указанного выше равенства. Тем не менее, особого смысла это неравенство не имеет — оно лишь будет означать, что параметры tRAS, либо tRC будут автоматически «подстроены» (в сторону большего значения) для соблюдения рассмотренного равенства.

Четыре важнейших параметра таймингов памяти, расположенных в такой последовательности: tCL-tRCD-tRP-tRAS, принято называть «схемой таймингов». Такие схемы (например, 2-2-2-5 или 2.5-3-3-7 для памяти типа DDR; 3-3-3-9, 4-4-4-12 и 5-5-5-15 для памяти типа DDR2) достаточно часто можно встретить в спецификациях на модули оперативной памяти. Хотя такая последовательность не соответствует фактической последовательности возникновения задержек при доступе в микросхему памяти (так, tRCD располагается перед tCL, а tRAS — «где-то посередине»), поэтому на самом деле она отражает основные тайминги памяти, расположенные в порядке их значимости. Действительно, наиболее значимой является величина задержки CAS# (tCL), проявляющая себя при каждой операции чтения данных, тогда как параметры tRCD и tRP актуальны лишь при операциях на уровне строки памяти в целом (ее открытия и закрытия, соответственно).

Особой категорией таймингов, не связанных с доступом к данным, находящимся в ячейках микросхем SDRAM, можно считать так называемые «задержки командного интерфейса», или обратную им характеристику — «скорость подачи команд» (command rate). Эти задержки связаны с функционирования подсистемы памяти на уровне не индивидуальных микросхем, а составляемых ими физических банков. При инициализации подсистемы памяти каждому сигналу выбора кристалла (chip select), ассоциированному с определенным физическим банком памяти, в регистрах чипсета присваивается определенный номер (нумерация осуществляется, как правило, по емкости физических банков — например, по убывающей), уникальным образом идентифицирующий данный физический банк при каждом последующем запросе (поскольку все физические банки разделяют одни и те же, общие шины команд/адресов и данных). Чем больше физических банков памяти присутствует на общей шине памяти, тем больше электрическая емкостная нагрузка на нее, и тем больше задержка распространения сигнала (прямое следствие протяженности пути сигнала) и задержка кодирования/декодирования и работы логики адресации и управления.

Задержки командного интерфейса могут регулироваться как в настройках подсистемы памяти в BIOS (например, настройка параметра «Command Rate: 1T/2T» платформ AMD Athlon 64), или настройка задержек командного интерфейса может отсутствовать в явном виде (так как регулируются автоматически) у платформ INTEL.

 


Лицензия