headermask image
Рекомендую: Фриланс-биржа | Кэшбэк-сервис | Интернет-бухгалтерия

Что такое тайминги в памяти

Сегодня мы поговорим о наиболее точном определении таймингов и подтаймингов. Большинство статей в сети обладают ошибками и неточностями, а в очень достойных материалах не всегда рассмотрены все тайминги. Мы же постараемся восполнить этот пробел и дать как можно полную характеристику тем или иным временным задержкам.

Структура памяти напоминает таблицу, где сначала выбирают строку, а затем столбец. Эта таблица разбита на банки, для памяти плотностью меньше 64Мбит (SDRAM) количеством 2 штуки, выше – 4 (стандартно). Спецификация память DDR2 SDRAM с чипами плотностью 1Гбит предусматривает уже 8 банков. На открытие строки в используемом банке уходит больше времени, нежели в другом (т.к. используемую строку нужно сначала закрыть). Очевидно, что лучше новую строку открывать в новом банке (на этом основан принцип чередования строк).

Обычно на памяти (или в спецификации к ней) есть надпись вида 3-4-4-8 или 5-5-5-15. Это сокращенная запись (так называемая схема таймингов) основных таймингов памяти. Что же такое тайминги? Очевидно, что ни одно устройство не может работать с бесконечной скоростью. Значит, на выполнение любой операции уходит какое-либо время. Тайминги – это задержка, устанавливающая время, необходимое на выполнение какой-либо команды, то есть время от отправки команды до ее выполнения. А каждая цифра обозначает какое именно время необходимо.

Теперь разберем каждый по очереди. Схема таймингов включает в себя задержки CL-Trcd-Trp-Tras соответственно. Для работы с памятью необходимо для начала выбрать чип, с которым мы будем работать. Делается это командой CS# (Chip Select). Затем выбирается банк и строка. Перед началом работы с любой строкой необходимо ее активировать. Делается это командой выбора строки RAS# (при выборе строки она активируется). Затем (при операции линейного чтения) нужно выбрать столбец командой CAS# (эта же команда инициирует чтение). Затем считать данные и закрыть строку, совершив предварительный заряд (precharge) банка.

Тайминги расположены по порядку следования в простейшем запросе (для простоты понимания). Сначала идут тайминги, затем подтайминги.

01.png

Trcd, RAS to CAS delay – время, необходимое для активизации строки банка, или минимальное время между подачей сигнала на выбор строки (RAS#) и сигнала на выбор столбца (CAS#).

CL, Cas Latency – минимальное время между подачей команды на чтение (CAS) и началом передачи данных (задержка чтения).

Tras, Active to Precharge – минимальное время активности строки, то есть минимальное время между активацией строки (ее открытием) и подачей команды на предзаряд (начало закрытия строки). Строка не может быть закрыта раньше этого времени.

Trp, Row Precharge – время, необходимое для предварительного заряда банка (precharge). Иными словами, минимальное время закрытия строки, после чего можно активировать новую строку банка.

CR, Command Rate 1/2T – Время, необходимое для декодирования контроллером команд и адресов. Иначе, минимальное время между подачей двух команд. При значении 1T команда распознается 1 такт, при 2T – 2 такта, 3T – 3 такта (пока только на RD600).

Это все основные тайминги. Остальные тайминги имеют меньшее влияние на производительность, а потому их называют подтаймингами.

Trc, Row Cycle Time, Activate to Activate/Refresh Time, Active to Active/Auto Refresh Time – минимальное время между активацией строк одного банка. Является комбинацией таймингов Tras+Trp – минимального времени активности строки и времени ее закрытия (после чего можно открывать новую).

Trfc, Row Refresh Cycle Time, Auto Refresh Row Cycle Time, Refresh to Activate/Refresh Command Period – минимальное время между командой на обновление строки и командой активизации, либо другой командой обновления.

Trrd, ACTIVE bank A to ACTIVE bank B command, RAS to RAS Delay, Row Active to Row Active – минимальное время между активацией строк разных банков. Архитектурно открывать строку в другом банке можно сразу за открытием строки в первом банке. Ограничение же чисто электрическое – на активацию уходит много энергии, а потому при частых активациях строк очень высока электрическая нагрузка на цепи. Чтобы ее снизить, была введена данная задержка. Используется для реализации функции чередования доступа к памяти (interleaving).

02.png

Tccd, CAS to CAS Delay – минимальное время между двумя командами CAS#.

03.png

Twr, Write Recovery, Write to Precharge – минимальное время между окончанием операции записи и подачей команды на предзаряд (Precharge) строки для одного банка.

04.png

Twtr, Trd_wr, Write To Read – минимальное время между окончанием записи и подачей команды на чтение (CAS#) в одном ранке.

RTW, Read To Write, (Same) Rank Read To Write – минимальное время между окончанием операции чтения и подачей команды на запись, в одном ранке.

05.png

Same Rank Write To Write Delayed – минимальное время между двумя командами на запись в одном ранке.

Different Rank Write to Write Delay – минимальное время между двумя командами на запись в разных ранках.

Twr_rd, Different Ranks Write To READ Delayed – минимальное время между окончанием записи и подачей команды на чтение (CAS#) в разных ранках.

Same Rank Read To Read Delayed – минимальная задержка между двумя командами на чтение в одном ранке.

Trd_rd, Different Ranks Read To Read Delayed – минимальная задержка между двумя командами на чтение в разных ранках.

Trtp, Read to Precharge – минимальный интервал между подачей команды на чтение до команды на предварительный заряд.

Precharge to Precharge – минимальное время между двумя командами предварительного заряда.

Tpall_rp, Precharge All to Active Delay – задержка между командой Precharge All и командой на активацию строки.

Same Rank PALL to REF Delayed – устанавливает минимальное время между командой Precharge All и Refresh в одном ранке.

Different Rank REF to REF Delayed – устанавливает минимальную задержку между двумя командами на обновление (refresh) в разных ранках.

Twcl, Write Latency – задержка между подачей команды на запись и сигналом DQS. Аналог CL, но для записи.

Tdal, цитата из JEDEC 79-2C, p.74: auto precharge write recovery + precharge time (Twr+Trp).

Trcd_rd/Trcd_wr, Activate to Read/Write, RAS to CAS Read/Write Delay, RAW Address to Column Address for Read/Write – сочетание двух таймингов – Trcd (RAS to CAS) и rd/wr command delay. Именно последним и объясняется существование разных Trcd – для записи и чтения (Nf2) и установки BIOS – Fast Ras to Cas.

Tck, Clock Cycle Time – период одного такта. Именно он и определяет частоту памяти. Считается она следующим образом: 1000/Tck=X Mhz (реальная частота).

CS, Chip Select – время, необходимое на выполнения команды, подаваемой сигналом CS# для выбора нужного чипа памяти.

Tac, DQ output access time from CK – время от фронта такта до выдачи данных модулем.

Address and Command Setup Time Before Clock – время, на которое передача установок адресов команд будет предшествовать восходящему фронту такта.

Address and Command Hold Time After Clock – время, на которое будут “заперты” установки адреса и команд после нисходящего фронта такта.

Data Input Setup Time Before Clock, Data Input Hold Time After Clock – то же, что и вышеуказанные, но для данных.

Tck max, SDRAM Device Maximum Cycle Time – максимальный период цикла устройства.

Tdqsq max, DDR SDRAM Device DQS-DQ Skew for DQS and associated DQ signals – максимальный сдвиг между стробом DQS и связанными с ним сигналами данных.

Tqhs, DDR SDRAM Device Read Data Hold Skew Factor – максимальный сдвиг “запирания” считанных данных.

Tch, Tcl, CK high/low pulse width – длительность высокого/низкого уровня тактовой частоты CK.

Thp, CK half pulse width – длительность полупериода тактовой частоты CK.

Max Async Latency – максимальное время асинхронной задержки. Параметр управляет длительностью асинхронной задержки, зависящей от времени, необходимого для передачи сигнала от контроллера памяти до самого дальнего модуля памяти и обратно. Опция существует в процессорах компании AMD (Athlon/Opteron).

DRAM Read Latch Delay – задержка, устанавливающая время, необходимое для “запирания” (однозначного распознавания) конкретного устройства. Актуально при повышении нагрузки (числа устройств) на контроллер памяти.

Trpre, Read preamble – время, в течение которого контроллер памяти откладывает активацию приема данных перед чтением, во избежание повреждения данных.

Trpst, Twpre, Twpst, Write preamble, read postamble, write postamble – то же для записи и после приема данных.

Read/write Queue Bypass – определяет число раз, которое самый ранний запрос в очереди может быть обойден контроллером памяти, прежде чем быть выполненным.

Bypass Max – определяет, сколько раз самая ранняя запись в DCQ может быть обойдена, прежде чем выбор арбитра будет аннулирован. При установке в 0 выбор арбитра всегда учитывается.

SDRAM MA Wait State, Read Wait State – установка 0-2-тактного опережения адресной информации перед подачей сигнала CS#.

Turn-Around Insertion – задержка между циклами. Добавляет задержку в такт между двумя последовательными операциями чтения/записи.

DRAM R/W Leadoff Timing, rd/wr command delay – задержка перед выполнением команды чтения/записи. Обычно составляет 8/7 или 7/5 тактов соответственно. Время от подачи команды до активации банка.

Speculative Leadoff, SDRAM Speculative Read – Обычно в память поступает сначала адрес, затем команда на чтение. Поскольку на расшифровку адреса уходит относительно много времени, можно применить упреждающий старт, подав адрес и команду подряд, без задержки, что повысит эффективность использования шины и снизит простои.

Twtr Same Bank, Write to Read Turnaround Time for Same Bank – время между прекращением операции записи и подачей команды на чтение в одном банке.

Tfaw, Four Active Windows – минимальное время активности четырех окон (активных строк). Применяется в восьмибанковых устройствах.

06.png

Strobe Latency. Задержка при посылке строб-импульса (селекторного импульса).

Memory Refresh Rate. Частота обновления памяти.

Надеемся, что представленная нами информация поможет вам разобраться в обозначении таймингов памяти, насколько они важны и за какие параметры они отвечают.

Автор: antinomy

2 комментов оставлено (Add 1 more)

  1. На overclockers.com.ua ссылки на первоисточник нет, я не телепат. Авторов спрашивать не собираюсь и в дальнейшем, думайте об этом что хотите.
    Первоисточник заменил на ваш.

    1. smolokhov on January 5th, 2008 at 6:14 pm
  2. Вообще-то при публикации чужого материала положено спрашивать разрешения автора, как это делали overclockers.com.ua, ссылку на первоисточник, то бишь http://people.overclockers.ru/antinomy/record4 и автора. А то на воровство похоже.

    2. Antinomy on January 5th, 2008 at 6:01 pm