Что такое тайминги и на что они влияют?
Тайминги неспроста называют также
«задержками» – они характеризуют именно промежутки времени, проходящие
между поступлением различных команд и их выполнением. Прежде чем
двигаться далее, пожалуй, стоит сделать небольшое отступление и
рассказать о некоторых особенностях организации памяти – в дальнейшем
это нам пригодится. Начнем с логической части. В этом плане одну
микросхему ОЗУ можно представить в виде двухмерного массива (то есть
таблицы) ячеек – соответственно, адрес каждой из них задается номерами
строки и столбца, на пересечении которых она лежит.
Теперь
немного о физике: за хранение информации отвечают конденсаторы с
обслуживающей их транзисторной обвязкой. Причем текущее состояние
ячейки определяет именно конденсатор: если на нем есть заряд, хранится
единица, в противном случае – ноль. При считывании же информации
происходит разрядка этого элемента, то есть если там было значение 1,
оно потеряется. Поэтому после считывания производится восстановление
прежнего состояния конденсатора – его перезарядка. На этом небольшое
лирическое отступление можно закончить и вернуться к описанию задержек,
благо минимально необходимые знания у нас уже есть.
При кратком
описании модуля памяти обычно упоминаются четыре тайминга, значения
которых (в тактах) записываются через дефис – например, 7-7-7-20.
Первое число обозначает задержку под названием tCAS, она же CL (CAS#
latency). Аббревиатура «CAS» расшифровывается как «column access
strobe», то есть «сигнал выбора столбца». Соответственно, в данном
случае семь тактов пройдет между его подачей и получением доступа к
нужной ячейке.
Кстати, именно ячейке, а не ячейкам – сигнал
выбора столбца (RAS# – row access strobe) поступает до импульса CAS#,
так что подача второго из них формирует окончательный адрес. И как раз
задержку между двумя этими сигналами характеризует тайминг tRCD (RAS#
to CAS# delay), значение которого в характеристиках модулей памяти
указывается сразу после CL.
Третье число в вышеприведенном
списке – это величина tRP (RAS# precharge), обозначающая промежуток
между поступлением команды восстановления заряда (precharge) и ее
выполнением, то есть возвратом столбца к прежнему состоянию. Но абы
когда такую операцию совершать нельзя – надо дождаться завершения
выполнения предыдущих операций со строкой.
Для обозначения
того временного отрезка, в течение которого строка пребывает в активном
состоянии, используется тайминг tRAS (он же active to precharge delay,
он же RAS# activate to precharge). В нашем случае сигнал восстановления
заряда будет подан через двадцать тактов после команды RAS#, а выполнен
еще через семь тактов. Как нетрудно догадаться, tRAS не может быть
меньше суммы tRCD и CL.
К вышеприведенной последовательности
значений задержек также часто прибавляется еще одно, 1T или 2T,
соответствующее таймингу под названием command rate. Данный параметр
характеризует промежуток времени между подачей сигналов CS# (chip
select – команда выбора чипа) и RAS#. Вообще количество таймингов
весьма велико – помимо описанных выше «основных» существуют еще и
«дополнительные». Полный список я приводить не буду, но о некоторых все
же расскажу.
Например, tRC (refresh cycle) соответствует
промежутку времени между осуществлением доступа к двум разным строкам –
от подачи на первую из них сигнала RAS# и до окончания восстановления
ее заряда. Задержка между завершением поступления записываемых данных и
перезарядкой строки (восстанавливать ее нужно целиком, так как сигнал
RAS# обнуляет все ячейки одного ряда) обозначается tWR (write
recovery). А вот считывание информации относительно записи сдвинуто во
времени на такое количество тактов, которое равно значению tWTR (write
to read delay).