Введение
Тип компьютерной памяти
Синхронная динамическая память с произвольным доступом (синхронная динамическая оперативная память или SDRAM) – это любая DRAM, в которой работа внешнего интерфейса координируется внешним сигналом тактирования. Интегрированные схемы DRAM (ИС), производившиеся с начала 1970-х до начала 1990-х годов, использовали асинхронный интерфейс, при котором входные управляющие сигналы оказывают непосредственное влияние на внутренние функции, с задержкой, обусловленной распространением по полупроводниковым цепям. SDRAM имеет синхронный интерфейс, при котором изменения на входах управления распознаются после фронта тактового сигнала. В семействах SDRAM, стандартизированных JEDEC, сигнал тактирования управляет переходом внутреннего конечного автомата, реагирующего на входящие команды. Эти команды могут быть организованы в конвейер для повышения производительности, позволяя ранее запущенным операциям завершаться одновременно с приемом новых команд. Память разделена на несколько равновеликих, но независимых банков, что позволяет устройству одновременно выполнять команды доступа к памяти в каждом банке и ускорять доступ посредством чередования. Это позволяет SDRAM достигать большей степени параллелизма и более высоких скоростей передачи данных, чем асинхронные DRAM. Конвейерная обработка означает, что чип может принять новую команду до завершения обработки предыдущей. При конвейерной записи команда записи может быть немедленно заменена другой командой, без ожидания записи данных в массив памяти. При конвейерном чтении запрошенные данные появляются через фиксированное количество тактовых циклов (латентность) после команды чтения, в течение которых могут быть отправлены дополнительные команды.
История
Самые ранние DRAM часто синхронизировались с тактовым сигналом процессора (тактировались) и использовались с первыми микропроцессорами. В середине 1970-х годов DRAM перешли на асинхронную конструкцию, но в 1990-х годах вернулись к синхронной работе. Первой коммерческой SDRAM стала микросхема памяти Samsung KM48SL2000 емкостью 16 Мбит. Она была произведена компанией Samsung Electronics с использованием технологического процесса CMOS (комплементарный металл-оксид-полупроводник) в 1992 году. В июне 1998 года Samsung выпустила первый коммерческий чип DDR SDRAM (64 Мбит).
SDRAM также доступна в зарегистрированных вариантах для систем, требующих большей масштабируемости, таких как серверы и рабочие станции. Сегодня крупнейшими мировыми производителями SDRAM являются Samsung Electronics, SK Hynix, Micron Technology и Nanya Technology.
Время
Есть несколько ограничений на производительность DRAM. Наиболее заметным является время цикла чтения — время между последовательными операциями чтения к открытому ряду. Это время уменьшилось с 10 нс для 100 МГц SDRAM (1 МГц = Гц) до 5 нс для DDR 400, но осталось относительно неизменным в поколениях DDR2 800 и DDR3 1600. Однако, за счет работы интерфейсных схем на все более высоких кратных основной частоты чтения, достижимая пропускная способность быстро возросла. Другим ограничением является задержка CAS — время между подачей адреса столбца и получением соответствующих данных. И это также оставалось относительно постоянным на уровне 10–15 нс в течение последних нескольких поколений DDR SDRAM. В процессе работы задержка CAS представляет собой определенное количество тактовых циклов, запрограммированных в режимный регистр SDRAM и ожидаемых контроллером DRAM. Можно запрограммировать любое значение, но SDRAM не будет работать корректно, если оно слишком низкое. При более высоких тактовых частотах полезная задержка CAS в тактовых циклах естественным образом увеличивается. 10–15 нс — это 2–3 цикла (CL2–3) тактовой частоты 200 МГц для DDR 400 SDRAM, CL4–6 для DDR2 800 и CL8–12 для DDR3 1600. Более медленные тактовые циклы естественным образом позволяют использовать меньшее количество циклов задержки CAS. Модули SDRAM имеют собственные характеристики времени, которые могут быть медленнее, чем у чипов на модуле. Когда впервые появились чипы SDRAM с частотой 100 МГц, некоторые производители продавали модули "100 МГц", которые не могли надежно работать на этой тактовой частоте. В ответ Intel опубликовала стандарт PC100, в котором изложены требования и рекомендации по производству модуля памяти, способного надежно работать на частоте 100 МГц. Этот стандарт оказал широкое влияние, и термин "PC100" быстро стал общепринятым обозначением для модулей SDRAM 100 МГц, а модули теперь обычно обозначаются числом с префиксом "PC" (PC66, PC100 или PC133, хотя фактическое значение этих чисел со временем изменилось).
Сигналы управления
Все команды синхронизированы относительно фронта сигнала тактирования. Помимо тактирования, существует шесть управляющих сигналов, большинство из которых с активным низким уровнем, которые считываются по фронту тактового сигнала:
CKE – разрешение тактирования. Когда этот сигнал низкий, чип ведет себя так, как будто тактирование остановлено. Команды не интерпретируются, и время задержки команд не истекает. Состояние других управляющих линий не имеет значения. Эффект этого сигнала фактически задерживается на один тактовый цикл. То есть текущий тактовый цикл выполняется как обычно, но следующий тактовый цикл игнорируется, за исключением повторной проверки входного сигнала CKE. Нормальная работа возобновляется по фронту тактового сигнала после того, как CKE будет считан высоким. Иными словами, все остальные операции чипа синхронизированы относительно фронта замаскированного тактового сигнала. Замаскированный тактовый сигнал – это логическое И входного тактового сигнала и состояния сигнала CKE во время предыдущего фронта входного тактового сигнала. Выбор чипа. Когда этот сигнал высокий, чип игнорирует все остальные входы (кроме CKE) и действует так, как будто получена команда NOP. Маска данных DQM. (Буква Q используется, поскольку, следуя соглашениям цифровой логики, линии данных известны как линии "DQ"). Когда сигнал высокий, эти сигналы подавляют ввод/вывод данных. При передаче данных для записи данные фактически не записываются в DRAM. При установке высокого уровня за два цикла до цикла чтения данные, считываемые из памяти, не выводятся из чипа. На каждый 8-битный сегмент памяти x16 или DIMM приходится одна линия DQM.
CKE clock enable. When this signal is low, the chip behaves as if the clock has stopped. No commands are interpreted and command latency times do not elapse. The state of other control lines is not relevant. The effect of this signal is actually delayed by one clock cycle. That is, the current clock cycle proceeds as usual, but the following clock cycle is ignored, except for testing the CKE input again. Normal operations resume on the rising edge of the clock after the one where CKE is sampled high. Put another way, all other chip operations are timed relative to the rising edge of a masked clock. The masked clock is the logical AND of the input clock and the state of the CKE signal during the previous rising edge of the input clock. chip select. When this signal is high, the chip ignores all other inputs (except for CKE), and acts as if a NOP command is received. DQM data mask. (The letter Q appears because, following digital logic conventions, the data lines are known as "DQ" lines.) When high, these signals suppress data I/O. When accompanying write data, the data is not actually written to the DRAM. When asserted high two cycles before a read cycle, the read data is not output from the chip. There is one DQM line per 8 bits on a x16 memory chip or DIMM.
Командные сигналы
, сигнал стробирования адреса строки. Несмотря на название, это не строб, а просто командный бит. Вместе с и , он выбирает одну из восьми команд. , сигнал стробирования адреса столбца. Это также не строб, а командный бит. Вместе с и , он выбирает одну из восьми команд. , разрешение записи. Вместе с и , он выбирает одну из восьми команд. Обычно он различает команды, похожие на чтение, и команды, похожие на запись.
Выбор банка (БАН)
Устройства SDRAM внутри имеют деление на два, четыре или восемь независимых внутренних банков данных. Для выбора банка, к которому направлена команда, используются от одного до трех входов адреса банка (BA0, BA1 и BA2).
Адресовка (A10/An)
Многие команды также используют адрес, подаваемый на выводы адреса. Некоторые команды, которые не используют адрес или используют адрес столбца, также используют A10 для выбора модификаций.
Строительство и эксплуатация
Например, SDRAM DIMM объемом «512 МБ» (который содержит 512 МБ) может состоять из восьми или девяти чипов SDRAM, каждый из которых содержит 512 Мбит памяти, и каждый из них обеспечивает вклад в 8 бит в 64- или 72-битную ширину DIMM. Типичный чип SDRAM объемом 512 Мбит внутренне содержит четыре независимых банка памяти объемом 16 МБ каждый. Каждый банк представляет собой массив из 8192 строк по 16384 бита каждая (2048 8-битных столбцов). Банк может находиться в состоянии простоя, быть активным или переходить из одного состояния в другое. Активная команда активирует неактивный банк. Она представляет двухбитный адрес банка (BA0–BA1) и 13-битный адрес строки (A0–A12) и вызывает чтение этой строки в массив банка, состоящий из всех 16384 усилителей столбцов. Это также известно как «открытие» строки. Эта операция имеет побочный эффект – обновление динамических (емкостных) ячеек памяти этой строки. После того, как строка была активирована или «открыта», в ней можно выполнять команды чтения и записи. Активация требует минимального времени, называемого задержкой перехода из строки в столбец или tRCD, прежде чем можно будет выполнять чтение или запись. Это время, округленное до следующего кратного периода тактирования, определяет минимальное количество циклов ожидания между активной командой и командой чтения или записи. Во время этих циклов ожидания дополнительные команды могут быть отправлены в другие банки, поскольку каждый банк работает полностью независимо. И для команд чтения, и для команд записи требуется адрес столбца. Поскольку каждый чип одновременно получает доступ к восьми битам данных, существует 2048 возможных адресов столбцов, что требует только 11 адресных линий (A0–A9, A11). При выдаче команды чтения SDRAM выдаст соответствующие выходные данные на линиях DQ вовремя к восходящему фронту тактового сигнала через несколько тактовых циклов, в зависимости от настроенной задержки CAS. Последующие слова пакета будут выдаваться вовремя к последующим восходящим фронтам тактового сигнала. Команда записи сопровождается данными для записи, которые передаются на линии DQ во время того же восходящего фронта тактового сигнала. Контроллер памяти должен обеспечить, чтобы SDRAM не выдавала данные чтения на линии DQ одновременно с необходимостью выдавать данные записи на эти же линии. Это можно сделать, дождавшись завершения пакета чтения, прервав пакет чтения или используя линию управления DQM. Когда контроллеру памяти требуется доступ к другой строке, он должен сначала вернуть усилители столбцов этого банка в неактивное состояние, готовые к считыванию следующей строки. Это называется операцией «предварительного заряда» или «закрытия» строки. Предварительный заряд может быть выполнен явно или автоматически по окончании операции чтения или записи. Опять же, существует минимальное время, задержка предварительного заряда строки tRP, которое должно истечь, прежде чем строка будет полностью «закрыта», и банк перейдет в неактивное состояние, чтобы получить другую команду активации для этого банка. Хотя обновление строки является автоматическим побочным эффектом ее активации, для этого требуется минимальное время, что требует минимальной задержки доступа к строке tRAS между активной командой, открывающей строку, и соответствующей командой предварительного заряда, закрывающей ее. Этот предел обычно незначителен по сравнению с желаемыми командами чтения и записи в строку, поэтому он мало влияет на типичную производительность.
Командные взаимодействия
Команда "No operation" всегда разрешена, в то время как команда "load mode register" требует, чтобы все банки были неактивны, и после этого необходима задержка для вступления изменений в силу. Команда автоматического обновления также требует, чтобы все банки были неактивны, и занимает время цикла обновления tRFC для возврата чипа в неактивное состояние. (Обычно это время равно tRCD+tRP.) Единственная другая команда, разрешенная для неактивного банка, – команда активации. Она требует, как упоминалось выше, tRCD, прежде чем ряд будет полностью открыт и сможет принимать команды чтения и записи. Когда банк открыт, разрешены четыре команды: чтение, запись, завершение серии и предварительная зарядка. Команды чтения и записи инициируют серии, которые могут быть прерваны последующими командами.
Прервать чтение
Команда чтения, завершения или предварительной зарядки может быть выдана в любое время после команды чтения и прервет текущий цикл чтения после установленной задержки CAS. Например, если команда чтения выдается в цикле 0, другая команда чтения выдается в цикле 2, а задержка CAS равна 3, то первая команда чтения начнет выдавать данные в циклах 3 и 4, а результаты второй команды чтения появятся, начиная с цикла 5. Если команда, выданная в цикле 2, является командой завершения или предварительной зарядки активного банка, то в цикле 5 выходные данные не будут генерироваться. Хотя прерывающий запрос может быть адресован любому активному банку, команда предварительной зарядки прервет цикл чтения только в том случае, если она адресована тому же банку или всем банкам; команда предварительной зарядки другого банка не прервет цикл чтения. Прерывание цикла чтения командой записи возможно, но более сложно. Это можно сделать, если сигнал DQM используется для подавления выходных данных SDRAM, чтобы контроллер памяти мог вовремя передавать данные по линиям DQ в SDRAM для операции записи. Поскольку эффект DQM на данные чтения задерживается на два цикла, а эффект DQM на данные записи – мгновенный, DQM необходимо установить в высокое состояние (для маскировки данных чтения) как минимум за два цикла до команды записи, но опустить в низкое состояние в цикле команды записи (при условии, что команда записи должна оказать влияние). Для этого требуется точная координация времени, необходимого SDRAM для отключения выходного сигнала на фронте тактового импульса, и времени, когда данные должны быть поданы на вход SDRAM для записи на следующем фронте тактового импульса. Если тактовая частота слишком высока, чтобы обеспечить достаточное время, может потребоваться три цикла. Если команда чтения включает автоматическую предварительную зарядку, предварительная зарядка начнется в тот же цикл, что и прерывающий запрос.
Заказ на взрыв
Современный микропроцессор с кэшем обычно обращается к памяти блоками, равными кэш-линиям. Для передачи 64-байтовой кэш-линии требуется восемь последовательных обращений к 64-битному DIMM, которые могут быть инициированы одной командой чтения или записи путем настройки чипов SDRAM через регистр режима для выполнения восьмисловных всплесков. Запрос кэш-линии обычно инициируется чтением по определенному адресу, и SDRAM позволяет передать "критическое слово" кэш-линии первым. ("Слово" здесь относится к разрядности чипа SDRAM или DIMM, которая составляет 64 бита для типичного DIMM.) Чипы SDRAM поддерживают два возможных способа организации порядка оставшихся слов в кэш-линии. Всплески всегда обращаются к выровненному блоку из BL последовательных слов, начиная с адреса, кратного BL. Например, четырехсловный всплеск, обращающийся к любому адресу столбца от четырех до семи, вернет слова с адресами от четырех до семи. Однако порядок зависит от запрошенного адреса и выбранного типа всплеска: последовательного или чередующегося. Как правило, контроллер памяти требует использования одного из этих типов. При длине всплеска, равной одному или двум, тип всплеска не имеет значения. При длине всплеска, равной одному, доступ осуществляется только к запрошенному слову. При длине всплеска, равной двум, доступ осуществляется сначала к запрошенному слову, а затем к другому слову в выровненном блоке. Это следующее слово, если указан четный адрес, и предыдущее слово, если указан нечетный адрес. В последовательном режиме всплеска последующие слова обращаются в порядке возрастания адреса, возвращаясь к началу блока при достижении конца. Например, при длине всплеска, равной четырем, и запрошенном адресе столбца пять, слова будут обращены в порядке 5, 6, 7, 4. Если длина всплеска равна восьми, порядок доступа будет 5, 6, 7, 0, 1, 2, 3, 4. Это достигается путем добавления счетчика к адресу столбца и игнорирования переноса за пределы длины всплеска. В чередующемся режиме всплеска адрес вычисляется с помощью операции исключающего ИЛИ между счетчиком и адресом. Используя тот же начальный адрес пять, четырехсловный всплеск вернет слова в порядке 5, 4, 7, 6. Восьмисловный всплеск будет 5, 4, 7, 6, 1, 0, 3, 2. Хотя это может быть более сложно для понимания, это проще реализовать в аппаратном обеспечении, и Intel предпочитает этот режим для своих микропроцессоров. Если запрошенный адрес столбца находится в начале блока, оба режима всплеска (последовательный и чередующийся) возвращают данные в одной и той же последовательности: 0, 1, 2, 3, 4, 5, 6, 7. Разница имеет значение только при запросе кэш-линии из памяти в порядке "критическое слово" первым.
Режимный регистр
Одноканальная SDRAM имеет один 10-битный программируемый регистр режима. Более поздние стандарты SDRAM с двойной скоростью передачи данных добавляют дополнительные регистры режима, адресуемые с использованием выводов адреса банка. Для SDR SDRAM выводы адреса банка и адресные линии A10 и выше игнорируются, но должны быть равны нулю во время записи в регистр режима. Биты M9–M0 представлены на адресных линиях A9–A0 во время цикла загрузки регистра режима. M9: режим записи очередями. Если 0, то для записи используется длина и режим чтения. Если 1, то все записи не являются очередными (по одному месту). M8, M7: режим работы. Зарезервировано и должно быть 00. M6, M5, M4: задержка CAS. Обычно допустимы только 010 (CL2) и 011 (CL3). Указывает количество циклов между командой чтения и выводом данных из микросхемы. Микросхема имеет фундаментальное ограничение на это значение в наносекундах; во время инициализации контроллер памяти должен использовать свои знания о тактовой частоте, чтобы преобразовать это ограничение в циклы. M3: тип очереди. 0 запрашивает последовательную очередь, а 1 – чередующуюся очередь. M2, M1, M0: длина очереди. Значения 000, 001, 010 и 011 указывают размер очереди 1, 2, 4 или 8 слов соответственно. Каждое чтение (и запись, если M9 равен 0) выполнит столько же обращений, если только не будет прервано командой остановки очереди или другой командой. Значение 111 указывает полную очередь по строке. Очередь будет продолжаться до прерывания. Полные очереди по строке разрешены только для последовательного типа очереди. Более поздние стандарты (с двойной скоростью передачи данных) SDRAM используют больше битов регистров режима и предоставляют дополнительные регистры режима, называемые «расширенными регистрами режима». Номер регистра кодируется на выводах адреса банка во время команды загрузки регистра режима. Например, DDR2 SDRAM имеет 13-битный регистр режима, 13-битный расширенный регистр режима № 1 (EMR1) и 5-битный расширенный регистр режима № 2 (EMR2).
Автоматическое обновление
Чип оперативной памяти можно обновить, открывая и закрывая (активируя и предварительно заряжая) каждую строку в каждом банке. Однако, для упрощения работы контроллера памяти, чипы SDRAM поддерживают команду "автоматического обновления", которая одновременно выполняет эти операции для одной строки в каждом банке. SDRAM также содержит внутренний счетчик, который последовательно перебирает все возможные строки. Контроллеру памяти достаточно выдавать необходимое количество команд автоматического обновления (по одной на строку, 8192 в рассматриваемом нами примере) через каждый интервал обновления (tREF = 64 мс – типичное значение). Все банки должны быть неактивны (закрыты и предварительно заряжены) в момент выдачи этой команды.
Режимы с низкой мощностью
Как уже упоминалось, вход CKE может быть использован для эффективной остановки тактирования SDRAM. Вход CKE отбирается на каждом восходящем фронте тактового сигнала, и если он низкий, следующий восходящий фронт тактового сигнала игнорируется для всех целей, кроме проверки состояния CKE. Пока CKE находится в низком состоянии, допустимо изменять тактовую частоту или даже полностью останавливать тактирование. Если CKE опускается во время выполнения SDRAM операций, она просто "замораживается" в текущем состоянии до тех пор, пока CKE снова не будет установлен в высокое состояние. Если SDRAM находится в режиме простоя (все банки предварительно заряжены, никакие команды не выполняются), когда CKE опускается, SDRAM автоматически переходит в режим пониженного энергопотребления, потребляя минимальную мощность до тех пор, пока CKE снова не будет установлен в высокое состояние. Это время не должно превышать максимальный интервал обновления tREF, иначе содержимое памяти может быть потеряно. В течение этого времени можно полностью остановить тактирование для дополнительной экономии энергии. Наконец, если CKE опускается одновременно с отправкой команды автоматического обновления в SDRAM, SDRAM переходит в режим самообновления. Этот режим аналогичен режиму пониженного энергопотребления, но SDRAM использует встроенный таймер для генерации внутренних циклов обновления по мере необходимости. Тактирование может быть остановлено во время этого режима. Хотя режим самообновления потребляет немного больше энергии, чем режим пониженного энергопотребления, он позволяет полностью отключить контроллер памяти, что обычно компенсирует эту разницу. SDRAM, предназначенная для устройств с питанием от батареи, предлагает дополнительные возможности экономии энергии. Одна из них – обновление, зависящее от температуры: встроенный датчик температуры снижает частоту обновления при более низких температурах, вместо того чтобы постоянно работать на максимальной частоте. Другая – селективное обновление, которое ограничивает самообновление частью массива DRAM. Доля, которая обновляется, настраивается с помощью расширенного регистра режима. Третья, реализованная в Mobile DDR (LPDDR) и LPDDR2, – это режим "глубокого пониженного энергопотребления", который делает память недействительной и требует полной реинициализации для выхода из него. Этот режим активируется отправкой команды "завершение пакета" при одновременном понижении CKE.