Соотношения между таймингами
Как указано выше, для пакетного считывания заданного количества данных (2, 4 или 8 элементов) необходимо осуществить следующие операции:
1. активизировать строку в банке памяти с помощью команды ACTIVATE;
2. подать команду чтения данных READ;
3. считать данные, поступающие на внешнюю шину данных микросхемы;
4. закрыть строку с помощью команды подзарядки строки PRECHARGE (как вариант, это делается автоматически, если на втором шаге использовать команду «RD+AP»).
Временной промежуток между первой и второй операцией составляет «задержку между RAS# и CAS#» (tRCD), между второй и третьей – «задержку CAS#» (tCL). Промежуток времени между третьей и четвертой операциями зависит от длины передаваемого пакета. Строго говоря, в тактах шины памяти он равен длине передаваемого пакета (2, 4 или 8), поделенного на количество элементов данных, передаваемых по внешней шине за один ее такт – 1 для устройств типа SDR, 2 для устройств типа DDR. Условно назовем эту величину «tBL».
Микросхемы SDRAM позволяют осуществлять третью и четвертую операции в каком-то смысле почти «параллельно». Чтобы быть точным – команду подзарядки строки PRECHARGE можно подавать за некоторое количество тактов (x) до наступления того момента, на котором происходит выдача последнего элемента данных запрашиваемого пакета, не опасаясь при этом возникновения ситуации «обрыва» передаваемого пакета (последняя возникнет, если команду PRECHARGE подать после команды READ с временным промежутком, меньшим x). Не вдаваясь в подробности, достаточно отметить, что x составляет величину, равную величине задержки сигнала CAS# за вычетом единицы (x = tCL - 1).
Промежуток времени между четвертой операцией и последующим повтором первой операции цикла составляет «время подзарядки строки» (tRP).
В то же время, минимальному времени активности строки (от подачи команды ACTIVATE до подачи команды PRECHARGE, tRAS), по его определению, как раз отвечает промежуток времени между началом первой и началом четвертой операции. Отсюда вытекает первое важное соотношение между таймингами памяти:
min(tRAS) = tRCD + tCL + (tBL - (tCL - 1)) - 1.
Вычитание единицы производится вследствие того, что период tRAS не включает в себя такт, на котором осуществляется подача команды PRECHARGE. Сокращая это выражение, получаем:
min(tRAS) = 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 актуальны лишь при операциях на уровне строки памяти в целом (ее открытия и закрытия, соответственно).