Spd speed что это
Что такое SPD
На любом модуле памяти DIMM присутствует небольшой чип SPD (Serial Presence Detect), в котором производителем записывается информация о рабочих частотах и соответствующих задержках чипов памяти, необходимые для обеспечения нормальной работы модуля.
Информация из SPD считывается BIOS на этапе самотестирования компьютера еще до загрузки операционной системы и позволяет автоматически оптимизировать параметры доступа к памяти.
В марте 2020 г. комитет JEDEC, разрабатывающий спецификации для многих отраслей микроэлектроники, объявил о публикации стандарта JESD300-5, в который вошли документы SPD5118 и SPD5108 Hub & Serial Presence Detect Device Standard.
Оба документа описывают новый модуль SPD и механизмы работы с ним новой последовательной шины.
Вместо шины I2C со скоростью 1 МГц новый модуль SPD получит шину SidebandBus частотой 12,5 МГц.
Кроме возросшей скорости доступа к данным в SPD объём ёмкости для хранения информации о модуле памяти увеличен в два раза до 1024 байт.
При этом память разделена на 16 индивидуально защищённых от записи областей.
Кроме этого новая шина обеспечивает индивидуальную адресацию к 16 SPD (модулям памяти), расположенным на одной шине.
Интересно, что напряжение на информационной шине при этом может лежать в диапазоне от 1 В до 3,3 В, тогда как для питания чипа SPD используется напряжение 1,8 В.
Также спецификации контроллера SPD5118 предусматривают размещение датчика температуры нагрева теплораспределительной пластины.
Хост-контроллер SPD5108 такого датчика не имеет.
Встроенный в модуль термодатчик измеряет температуру с точностью 0,5 °C в заданном диапазоне рабочих температур.
Вопросы
Какие ограничения по объему памяти накладывают современные операционные системы семейства Windows?
Что такое память DDR SDRAM?
Что такое память DDR2?
Что такое память DDR3?
Что такое SLI-Ready-память?
Благодаря профилям EPP уменьшается трудоемкость самостоятельной оптимизации работы подсистемы памяти, хотя существенного влияния на производительность системы «дополнительные» тайминги не оказывают. Так что какого-либо значительного выигрыша от использования SLI-Ready-памяти, по сравнению с обычной памятью, оптимизированной вручную, нет.
Что такое ECC-память?
Что такое Registered-память?
Можно ли вместо обычной памяти использовать Registered и наоборот?
Несмотря на физическую совместимость разъемов, обычная не буферизованная память и Registered-память не совместимы друг с другом и, соответственно, использование Registered-памяти вместо обычной и наоборот невозможно.
Что такое SPD?
На любом модуле памяти DIMM присутствует небольшой чип SPD (Serial Presence Detect), в котором производителем записывается информация о рабочих частотах и соответствующих задержках чипов памяти, необходимые для обеспечения нормальной работы модуля. Информация из SPD считывается BIOS на этапе самотестирования компьютера еще до загрузки операционной системы и позволяет автоматически оптимизировать параметры доступа к памяти.
Могут ли совместно работать модули памяти разного частотного номинала?
Принципиальных ограничений на работу модулей памяти разного частотного номинала нет. В этом случае (при автоматической настройки памяти по данным из SPD) скорость работы всей подсистемы памяти будет определяться скоростью наиболее медленного модуля.
Можно ли вместо рекомендованного производителем типа памяти установить ее более высокочастотный аналог?
Сколько и какие модули памяти надо установить в системную плату, что бы память заработала в двухканальном режиме?
Последовательность установки модулей памяти в них, а также все нюансы работы данной платы с различными модулями памяти, обычно подробно излагаются в руководстве к системной плате.
На память каких производителей стоит обратить внимание в первую очередь?
Можно отметить нескольких производителей памяти, достойно зарекомендовавших себя на нашем рынке. Это будут, например, брэнд-модули OCZ, Kingston, Corsair, Patriot, Samsung, Transcend.
Конечно, этот список далеко не полон, однако покупая память этих производителей, можно быть уверенным в ее качестве с большой долей вероятности.
Виток эволюции: модули памяти получат совершенно новые чипы SPD
На каждом модуле памяти можно обнаружить небольшую микросхему SPD (Serial Presence Detect), в которой записаны данные о рабочих частотах модуля и о его задержках. Эта информация считывается автоматически до загрузки операционной системы и служит основой для нормальной работы компьютера. Модули SPD выполняют свою работу свыше 20 лет и сегодня их решили радикально обновить.
Комитет JEDEC, который разрабатывает спецификации для многих отраслей микроэлектроники, объявил о публикации стандарта JESD300-5, в который вошли документы SPD5118 и SPD5108 Hub & Serial Presence Detect Device Standard. Оба документа описывают новый модуль SPD и механизмы работы с ним новой последовательной шины. Стандарт, повторим, глобально обновился впервые за более чем 20 лет.
Начнём с того, что вместо шины I 2 C со скоростью 1 МГц новый модуль SPD получит шину SidebandBus частотой 12,5 МГц. Шина SidebandBus разработана альянсом MIPI, который разрабатывает последовательные интерфейсы для мобильных устройств и не только.
Кроме возросшей скорости доступа к данным в SPD объём ёмкости для хранения информации о модуле памяти увеличен в два раза до 1024 байт. При этом память разделена на 16 индивидуально защищённых от записи областей. Кроме этого новая шина обеспечивает индивидуальную адресацию к 16 SPD (модулям памяти), расположенным на одной шине. Интересно, что напряжение на информационной шине при этом может лежать в диапазоне от 1 В до 3,3 В, тогда как для питания чипа SPD используется напряжение 1,8 В.
Также спецификации контроллера SPD5118 предусматривают размещение датчика температуры нагрева теплораспределительной пластины. Хост-контроллер SPD5108 такого датчика не имеет. Встроенный в модуль термодатчик измеряет температуру с точностью 0,5 °C в заданном диапазоне рабочих температур.
«SPD51x8 является первым из нового поколения стандартных контроллеров, использующих JEDEC SidebandBus для обеспечения высокой производительности», ― сказал Билл Герваси (Bill Gervasi), председатель рабочей группы JEDEC SPD. «Кроме того, JEDEC SidebandBus включает в себя множество функций для поддержки высоконадежных серверных систем, включая пакетную коррекцию ошибок, внутриполосные прерывания и механизмы гарантированного сброса шины».
SPD: схема последовательного детектирования
Современная индустрия время от времени вводит в употребление новые технологии ДОЗУ, которые обретают черты индивидуальности, начиная от архитектурных особенностей ядра и интерфейсных схем, и заканчивая форм-фактором модуля памяти. Однако ни один современный модуль памяти не может обойтись без крайне необходимого компонента микросхемы SPD (Serial Presence Detect). Интерфейс последовательного детектирования (дословно переводится как «последовательное определение наличия»), регламентированный на данный момент для всех модулей памяти форм-фактора SIMM/DIMM/RIMM, использует шину управления системой (SMBus System Management Bus), совместимый со спецификацией Inter-IC (I2C или IIC), посредством которого простые микросхемы могут общаться с остальной частью системы. Справедливости ради, стоит заметить, что интерфейсы SMBus и I2C различаются по нескольким категориям, куда входят электрические (основное отличие) и временные параметры (тайминги), используемый транспортный протокол и режимы работы. Несмотря на эти различия, физический интерфейс и принципы, положенные в основу этих шин, абсолютно одинаковы (точнее, SMBus базируется на принципах функционирования IIC), поэтому они могут совместно использоваться в системе. Непосредственно коммуникации микросхемы SPD EEPROM (электрически перепрограммируемое ПЗУ, содержащее специфические данные) на модуле памяти и управляющего контроллера осуществляются при помощи шины SMBus, использующей, как уже говорилось, IIC-совместимый транспорт.
Двухпроводная шина SMBus берет свое начало еще в 1994 году. В то время этот протокол являлся составной частью спецификации ACCESS.bus, как альтернативы интерфейсу RS-232C, впоследствии (в 1996 году) «перекочевав» в часть стандарта SBS (Smart Battery System), который носит открытый статус с 1995 года. В 1997 году SMBus был объединен с другим расширенным интерфейсом ACPI (Advanced Configuration and Power Interface), став его неотъемлемой частью.
Шина IIC, предназначенная для коммуникаций между отдельными ИС (Inter-IC Inter- Integrated Circuit), является разработкой корпорации Philips. Первая версия данного стандарта, опубликованная в 1992 году, дорабатывалась в 1995 и 1997 годах, что отражено в соответствующих документах. Следующая версия 2.0 была доступна только через шесть лет (в 1998 году) и включает довольно внушительный список доработок. Нынешний стандарт I2C версии 2.1, принятый в январе 2000 года, вносит лишь небольшие изменения по сравнению со вторым релизом. Вообще, SMBus, ACCESS.bus и SBS являются полностью открытыми стандартами, базирующимися на идее именно IIC, что дает возможность их совмещения. Более подробную информацию относительно спецификаций интерфейсов Inter-IC, SMBus и совместимых можно найти в документах [25]-[36] из «Списка использованных источников».
Принцип использования шины SMBus в случае SPD сводится к передаче данных от микросхемы EEPROM, установленной на модуле, соответствующим регистрам контроллера памяти, находящегося в составе северного моста или концентратора контроллеров основных интерфейсов через SMBus-интерфейс объединенного контроллера периферийных компонент (южный мост, или концентратор контроллеров ввода/вывода) при помощи системного BIOS. Таким образом система получает все необходимые данные о модуле и настраивается на оптимальный режим работы, согласно записанным в микросхему SPD значениям. Общий стандарт SPD (JEDEC Standard No. 21-С, часть 4.1.2) определен на уровне объединенного совета разработчиков электронных устройств (JEDEC Joint Electronic Device Engineering Council) и предусматривает единую байтовую карту программирования в шестнадцатиричном (HEX) коде, где размещаются данные общим объемом 2048bit (или 256 байтовых полей) это делается с целью создать общий стандарт записи основной информации, всесторонне классифицирующей определенный модуль памяти.
Все модули, поддерживающие схему последовательного детектирования, должны в обязательном порядке обеспечивать операции записи страницы как минимум четырех последовательных адресов. Сама схема SPD характеризуется интерфейсным протоколом, размером карты программирования, типом используемых данных и содержанием.
Интерфейсный протокол (SPD Interface Protocol) характеризует электрические (характеристики по постоянному, переменному току и интерфейс соединения I2C, Microwire, SPI и т.д.), геометрические (упаковка размер корпуса, геометрия выводов и т.д.) и физические параметры используемой микросхемы EEPROM.
Последовательность данных и размер карты программирования (Data Order and PD Size) характеризуют объем фактически используемой памяти в микросхеме и размер одной ячейки (стандартно используется один байт). Кроме чего, как уже упоминалось, адресная карта содержит резервные байты (поля), которые могут использоваться при необходимости для описания параметров новой фундаментальной технологии.
Кодирование данных на основании ASCII-кода | ||||||||||||||||
FHDP | SHDP | |||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
2 | BS | ( | ) | — | ||||||||||||
3 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||||||
4 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
5 | P | Q | R | S | T | U | V | W | X | Y | Z | |||||
6 | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | |
7 | p | q | r | s | t | u | v | w | x | y | z |
Пример проверки контрольной суммы | |||
Адресные байты | Двоичное значение | Десятичное представление | Комментарий |
0 | 00100100 | 36 | |
1 | 11111110 | 254 | |
2 | 00000000 | 0 | |
3 | 00000000 | 0 | |
… | 00000000 | 0 | |
… | … | … | |
60 | 00000000 | 0 | |
61 | 00000000 | 0 | |
62 | 00000000 | ||
290 | Сумма всех десятичных цифр | ||
290/256 | Деление для получения целого числа | ||
34 | Сохранение остатка | ||
00100010 | Преобразование остатка в двоичный код | ||
63 | 00100010 | 34 | Занесение преобразованного числа в байт 63 |
Содержание SPD (SPD Content) разделяется на основные группы, которые определяют классификацию хранящихся в EEPROM данных на категории.
Основные информационные байты SPD | ||
Байт | Тип данных | Описание |
0 | Объем записанной информации в EEPROM | Элемент LUT |
1 | Общий информационный объем EEPROM | Элемент LUT |
2 | Фундаментальный тип памяти | Элемент LUT |
3-xx | Специфические установки описания используемой памяти | Установки |
xx-60 | Дополнительные специфические установки | Установки |
33-61 | Определенные описания специфики используемой памяти | Установки |
62 | Указатель ревизии SPD (номер текущей версии SPD) | LUT |
63 | Контрольная сумма байт 0-62 | Checksum |
64-71 | Идентификационный код производителя по JEP106 | LUT |
72 | Месторасположение производителя модуля памяти | Факультативно |
73-90 | Производственный номер изготовителя модуля памяти | Факультативно |
91-92 | Код ревизии модуля памяти | Факультативно |
93-94 | Дата производства модуля памяти | BCD |
95-98 | Основной последовательный номер модуля памяти | Факультативно |
99-125 | Специфические данные производителя модуля памяти | Факультативно |
126-127 | Зарезервированные байты | Зарезервировано |
128-255 | Открытая зона для внесения дополнительной информации | Дополнительно |
Примечание: BCD (Binary Coded Decimal) двоичное представление десятичного числа.
Атрибуты частоты функционирования (байт 127) | |||||||
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
CLK0 | CLK1 | CLK2 | CLK3 | JTemp | CL3 | CL2 | AP |
1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 |
Транспортный протокол SPD
Считывание/запись данных из/в EEPROM производится по линии ввода/вывода SDA при помощи сигнала SCL (входящий сигнал синхронизации чтения/записи данных) совместно с сигналами адреса SA[2:0], предусмотренных цоколевкой модуля. Система синхронизируется с микросхемой SPD на частоте 80kHz.
Карта SPD должна программироваться один раз и больше никогда не меняться по требованиям основного стандарта после внесения данных в EEPROM, вход WP (Write Protect) устанавливается в положение «non-write» так исключается возможность случайного стирания или умышленной замены содержимого микросхемы. В общем случае вывод WP микросхемы EEPROM, отвечающий за защиту от записи, соединяется с сигнальной линией SWP модуля, на которой уровень сигнала активный высокий по умолчанию (в случае низкого уровня микросхема открыта для записи). Линии SDA и SCL имеют схему включения типа «открытый сток» (Open-drain) или «открытый коллектор» (Open-collector), и требуют внешней подтягивающей нагрузки 47 кОм. Ток утечки источника этих линий должен быть как минимум 3mA, чтобы поддерживать действительный низкий уровень сигнала. С детальным описанием интерфейсов микросхем EEPROM, применяемых для реализации механизма SPD (и не только) в модулях памяти, можно ознакомиться, например, в документе [38].
Основные электрические параметры микросхемы SPD SIMM/DIMM EEPROM | |||
Символ | Параметр | Условия тестирования | Номинал |
VCC | Питающее напряжение | 3.0-3.6 V | |
ICCA | Ток в состоянии активности | fSCL=80kHz | 5mA |
ISB | Ток в состоянии готовности | VIN=GND или VCC | 100 µA |
ILI | Входной ток утечки | VIN=GND или VCC | 10 µA |
ILO | Выходной ток утечки | VOUT=GND или VCC | 10 µA |
VIL | Низкий уровень входного напряжения | VCC x0.3 V | |
VIH | Высокий уровень входного напряжения | VCC x0.7 V | |
VOL | Низкий уровень выходного напряжения | IOL=3.0mA | 0.4V |
Рассмотрим кратко основные команды и фазы функционирования SPD EEPROM на системном уровне. Как уже говорилось ранее, микросхема использует для обмена информацией I2C-совместимый транспорт. Этот протокол характеризует любую пару устройств, передающих и принимающих данные, как передатчик (Transmitter) и приемник (Receiver), соответственно определяя передающее устройство как хозяина шины (Master), а принимающее как подчиненное (Slave). Хозяин управляет линией передачи данных (SDA) совместно с сигналами SA[2:0] адресации массива EEPROM, и обеспечивает синхронизацию (SCL), в то время как микросхема SPD на модуле памяти все время является подчиненным устройством.
Команда начала (или команда старта, START) инициируется по отрицательному перепаду импульса SDA (по срезу) в момент, когда системный синхросигнал имеет устойчивый высокий уровень (находится в активном состоянии). Вообще говоря, любая команда должна сопровождаться командой старта. Микросхема EEPROM постоянно осуществляет мониторинг линий SDA и SCL, и не входит а фазу ответа пока команда START является активной.
Команда останова (или стоп-команда, STOP) инициируется противоположно команде старта по положительному перепаду импульса SDA (по фронту) в момент, когда системный синхросигнал находится в высоком состоянии. Данная команда указывает на окончание передачи данных из подчиненного устройства в устройство управления (контроллер). Присутствие STOP в конце цикла чтения (Read) сообщает микросхеме EEPROM о необходимости немедленного перехода в режим ожидания (STBY STand-BY), а в конце передачи пакета записи (Write) является сигналом начала выполнения внутреннего цикла записи в массив данных микросхемы.
Сигнал подтверждения (ACK или Acknowledge) является своего рода флагом ответа и указывает на успешное выполнение фазы передачи данных. Передающее устройство освобождает шину SDA после того, как выполнена посылка 8bit данных. В течение следующего девятого импульса системного синхросигнала приемник переводит шину в низкое состояние, таким образом подтверждая прием пакета данных.
В течение выполнения фазы передачи данных микросхема EEPROM согласует посылки по линии SDA с каждым фронтом системного синхросигнала SCL. Для согласованной работы устройств, сигналы на шине данных должны оставаться в активном состоянии в течение всей длительности импульса системного синхросигнала, включая время нарастания/спада (фронта/среза импульса) и изменять текущее состояние только в промежутке между срезом предыдущего и фронтом следующего синхросигнала.
Операции записи (Write Operations) данных состоят из двух фаз: запись байта (Byte Write) и подтверждения опроса (Acknowledge Polling). После приема подчиненным устройством адреса байта отрабатывается подтверждающий ответ и выполняется цикл ожидания следующего байта данных, который также отрабатывается сигналом подтверждения (ACK). В конце передачи управляющее устройство прекращает посылки данных выставлением на шину команды STOP и подчиненное устройство входит в цикл внутренней записи, в течение которого входы микросхемы EEPROM отключаются и приемники сигнала не реагируют ни на какие запросы от хозяина шины (передающего устройства).
После того, как отработана команда STOP, означающая окончание передачи записываемых данных от хозяина, микросхема EEPROM входит во внутренний цикл записи, а управляющее устройство начинает опрос. Эта процедура включает в себя формирование команды начала (START) и последующего за ней адреса подчиненного устройства для выполнения операции записи, причем сигнала подтверждения не требуется в случае если микросхема занята выполнением внутреннего цикла записи. В случае, если микросхема освободилась, сигнал подтверждения возвратится и контроллер продолжит выполнение следующей операции чтения/записи.
Операции чтения (Read Operations) происходят практически аналогично операциям записи, исключая то, что бит R/W адреса подчиненного устройства всегда установлен в 1 (чтение, Read). Существуют три основные операции чтения из EEPROM: чтение текущего адреса (Current Address Read), произвольное чтение (Random Read) и последовательное чтение (Sequential Read).
Архитектурно, микросхема EEPROM имеет внутренний, инкрементирующийся на единицу, адресный счетчик, содержащий адрес байта, к которому было последнее обращение (текущий адрес). Поэтому, если последний доступ (на чтение или запись) был по адресу N, то следующая операция чтения будет адресована данным по адресу N+1. При получении адреса необходимого подчиненного устройства с установкой R/W=1, микросхема подтверждает прием и передает байт данных. Управляющее же устройство не подтверждает прием, однако формирует команду останова (STOP), после которой микросхема EEPROM останавливает передачу данных и входит в состояние ожидания.
Операции произвольного чтения (Random Read) разрешают доступ контроллеру к любому участку массива произвольным образом. Перед тем, как назначить адрес подчиненного устройства с установкой на чтение, управляющее устройство сначала должно выполнить операцию пустой записи. Контроллер формирует начальное условие, адрес микросхемы, а затем адрес байта, который необходимо считать. После возврата подтверждения адреса, передающее устройство немедленно реформирует команду старта и адрес подчиненного устройства с установкой бита R/W в 1 это следует сразу за возвратом подтверждения от микросхемы EEPROM, в результате чего считывается байт данных. Управляющее устройство ведет себя аналогично случаю с чтением текущего адреса, описываемого выше.
Операции последовательного чтения (Sequential Read) могут быть начаты по текущему адресу или по произвольному. Первый байт передается аналогичным методом, применяемым в других режимах чтения; тем не менее, контроллер отвечает подтверждением, означающим готовность приема следующей порции данных. Микросхема EEPROM продолжает посылать данные по каждому полученному сигналу подтверждения. Данные выдаются последовательно, начиная от первого адреса N по схеме N+1. Внутренний адресный счетчик инкрементирует все адресные биты, разрешая считывание полностью всего содержимого массива памяти микросхемы в течение одной операции, после чего «откатывается» (содержимое счетчика обнуляется) и данные начинают выдаваться с 0-адреса по каждому сигналу подтверждения пакетами по 8bit.
Управляющее устройство при этом, понятно, никаких сигналов подтверждения или останова не посылает, поскольку чтение данных идет последовательно и непрерывно именно этот метод применяется при считывании данных контроллером из EEPROM при инициализации подсистемы памяти (при включении питания или после сброса). Подробнее описание транспорта следует смотреть в документах [12], [14], [26]-[29], [34], [35] и [38].
Описание общей карты программирования SPD
Стандарт JEDEC Std No. 21-C-4.1.2 регламентирует применение схемы последовательного детектирования в любых модулях памяти независимо от типа применяемого ОЗУ/ПЗУ и форм-фактора. Это придает данной схеме исключительную гибкость и универсальность, поскольку стандарт предусмотрен для настоящих и последующих архитектур, и включает резервные поля для внесения специальной информации, которая потребуется в будущем. Когда стандартизируется специфическая архитектура, отличная от базовой, предусматривающая собственные особенности функционирования, специфическую организацию, индивидуальные характеристики и т.д. все отражается в схеме SPD: отличия заносятся в резервные биты (если таких характеристик не предусмотрено в текущей), а в общей спецификации описывается соответствующим дополнением, кроме чего, на каждую отдельную характеристику должна присутствовать адресная карта. Все модули памяти, имеющие разный форм-фактор, содержащие память со своими архитектурными особенностями, и в которых применяется схема последовательного детектирования, должны отвечать следующим пунктам: 1 известный интерфейсный протокол; 2 подходящая (приемлемая) конфигурация модуля; 3 стандартизированная архитектура («глубина», «ширина», количество используемых банков, схема адресации и т.д.); 4 поддерживаемая схема проверки ошибок (ECC, Parity и т.д.); 5 стандартная или одобренная комиссией «проводная диаграмма» (монтаж и разводка сигнальных трасс на модуле памяти).
Общая схема назначения адресных байт SPD SIMM/DIMM | |
Байт | Назначение |
0 | Общий объем текущей информации, записанной в EEPROM |
1 | Общее количество байт информации в микросхеме SPD |
2 | Фундаментальный тип используемой памяти |
3 | Общее количество адресных линий строки модуля, включая «смешанный» объем |
4 | Общее количество адресных линий столбца модуля, включая «смешанный» объем |
5 | Общее количество физических банков модуля памяти |
6-7 | Внешняя шина данных модуля памяти |
8 | Питающий интерфейс |
9 | Временной цикл с максимальной задержкой сигнала CAS# (tCK) |
10 | Длительность задержки данных на выходе модуля с учетом CL=Х |
11 | Интерфейс модуля (None/Parity/ECC…) |
12 | Тип и способ регенерации данных |
13 | Тип организации используемых микросхем памяти |
14 | Ширина шины данных ЕСС модуля |
15 | Минимальная задержка произвольного доступа к столбцу |
16 | Длительность передаваемых пакетов (BL) |
17 | Количество логических банков каждой микросхемы в модуле |
18 | Поддерживаемые длительности задержки сигнала CAS# (CL) |
19 | Задержка выдачи сигналов выбора кристалла CS# (tA(S)) |
20 | Задержка выдачи сигнала разрешения записи WE# (tA(W)) |
21 | Специфические атрибуты модуля памяти |
22 | Атрибуты общего порядка микросхемы памяти |
23 | Минимальный цикл CLX-1 |
24 | Максимальное время доступа к данным с минимальным циклом CLX-1 (tAC) |
25 | Минимальный цикл CLX-2 |
26 | Максимальное время доступа к данным с минимальным циклом CLX-2 (tAC) |
27 | Минимальное время регенерации данных в странице (tRP) |
28 | Минимальная задержка между активизацией соседних страниц (tRRP) |
29 | Минимальная задержка RAS-to-CAS (tRCD) |
30 | Минимальная длительность импульса сигнала RAS# (tRAS) |
31 | Емкость одного физического банка модуля памяти |
32 | Время установки адресов и команд перед подачей синхроимпульса (tIS) |
33 | Время ожидания на входе после подачи синхроимпульса (tIH) |
34 | Интервал установки данных на входе перед подачей синхроимпульса (tDS) |
35 | Время ожидания данных на входе после подачи синхроимпульса (tDH) |
36-61 | Зарезервировано по JEDEC JC42.5-97-119 для дополнений описания будущих архитектур |
62 | Номер текущей версии SPD |
63 | Контрольная сумма байт 0-62 |
64-71 | Идентификационный код производителя по JEP106 |
72 | Информация о производителе модуля |
73-90 | Уникальный номер производителя модуля |
91-92 | Код ревизии (версии) модуля |
93-94 | Дата производства модуля |
95-98 | Основной серийный номер модуля |
99-125 | Специфические данные производителя модуля |
126-127 | Специфические атрибуты частоты функционирования модуля |
128-255 | Пустые байты для внесения необходимой дополнительной информации |
Примечание: байты 15-30 используются исключительно для характеристики модулей памяти, использующих разновидности синхронного ДОЗУ.
Рассмотрим все возможные способы кодирования/декодирования информации в SPD на нескольких примерах. Общий объем данных, записанных в микросхеме SPD, обычно составляет 128 байт, но производитель может заполнить и больше вплоть до всех 256. Так, байт 1 как раз характеризует объем записанной полезной информации. Этот байт кодируется по обычной схеме (прямое преобразование «по нарастающей») соответствующее значение количества байт представляется двоичной последовательностью, которая переводится в шестнадцатиричное значение, согласно схеме, описываемой ранее.
Общий объем информации, записанной в SPD (байт 1) | ||||||||
Объем, байт | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
3 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
… | x | x | x | x | x | x | x | x |
128 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
… | x | x | x | x | x | x | x | x |
255 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Так, микросхема SPD EEPROM, содержащая объем полезной информации, составляющий, например, 128 байт будет в поле байта 1 содержать шестнадцатиричное значение 80h (двоичная последовательность 10000000), а микросхема, использующая все 256 байт значение FFh (двоичная последовательность 11111111).
Различные фундаментальные архитектуры используемого типа памяти характеризуются байтом 2, который также кодируется по схеме прямого преобразования. Рассмотрим фрагмент таблицы «битовой классификации» для характеристики используемого фундаментального типа ДОЗУ.
Кодирование в SPD фундаментального типа ДОЗУ (байт 2) | ||||||||
Тип памяти | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
Reserved | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
FPM DRAM | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
EDO DRAM | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
Pipelined Nibble | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
SDRAM | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Multiplexed ROM | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
DDR SGRAM | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
DDR SDRAM | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
VC SDRAM | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
… | x | x | x | x | x | x | x | x |
Отсюда видно, что байт 2 в модуле памяти, использующем, например, фундаментальный тип ДОЗУ VCSDRAM будет содержать значение 08h, а, скажем, SDRAM 04h.
Байт 9 характеризует временной цикл с максимальной задержкой сигнала CAS# (CL), что, понятно, является составной цифровой величиной. Данный байт использует таблицу указателей (LUT), применяя схему разделения байта на две «группы», поскольку временные параметры могут быть не просто целыми числами, а и содержать дробные значения. Так, с учетом разбиения таблицы на «точки входа», поле более важных бит именуют субполе А (Subfield A), а менее важных субполе В (Subfield B). Поэтому для кодирования информа-ции, ее в данном случае делят на две составляющие целые и дробные значения, соответственно прямо кодирующиеся в субполях А и В.
Временной цикл с максимальной задержкой сигнала CAS# (байт 9) | ||||||||
Наносекунды | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
Кодирование целого значения временного цикла (в наносекундах) субполе А | ||||||||
1ns | 0 | 0 | 0 | 0 | Смотреть значения субполя В | |||
2ns | 0 | 0 | 0 | 1 | ||||
3ns | 0 | 0 | 1 | 0 | ||||
4ns | 0 | 0 | 1 | 1 | ||||
5ns | 0 | 1 | 0 | 0 | ||||
… | х | х | х | х | ||||
15ns | 1 | 1 | 1 | 1 | ||||
Кодирование дробного значения временного цикла (в наносекундах) субполе B | ||||||||
+0ns | Смотреть значения субполя А | 0 | 0 | 0 | 0 | |||
+0.1ns | 0 | 0 | 0 | 1 | ||||
+0.2ns | 0 | 0 | 1 | 0 | ||||
+0.3ns | 0 | 0 | 1 | 1 | ||||
+0.4ns | 0 | 1 | 0 | 0 | ||||
+0.5ns | 0 | 1 | 0 | 1 | ||||
… | х | х | х | х |
Таким образом получается, что если необходимо задать время цикла, равное, например, 10.5ns, то следует провести следующие операции: по субполю А отыскать целое значение 10 (в бинарном виде это выглядит 1010), а по субполю В дробное значение 0.5 (в двоичной системе 0101). Складывая полученные значения с учетом байтовой организации, информация кодируется следующим образом: по правилу перевода двоичного значения в десятичное получаем для более важных бит, кодирующих целое значение (10ns), двоичную последовательность 1010, соответствующую Ah в шестнадцатиричном коде, а для менее важных бит, кодирующих дробное значение (+0.5ns), двоичную последовательность 0101, соответствующую 5h в шестнадцатиричном представлении. Общий вид двоичной последовательности (10100101) определяет шестнадцатиричное значение, соответствующее необходимому временному циклу, которое надо внести в ячейку байта 9 это A5h.
Данный пример демонстрирует стандартную схему 4/4 разделения поля на суб-поля А/В. Другие схемы, отличные от стандартной, применяются для того, чтобы увеличить/уменьшить диапазон значений целых/дробных составляющих конкретного параметра. Примером схемы 1/7 является байт 14, кодирующий ширину шины данных ЕСС модуля, а примером схемы 6/2 может являться байт 25, характеризующий минимальный цикл CLX-2. Подробнее о кодировании аналогичных параметров смотреть в документах [3], [11], [12], [14].
Своего рода «частным случаем» схемы разделения является «суммирование» составляющих по одной строке такую схему кодирования обычно применяют для параметров, значения которых не превышают восьми, или для кодирования сразу нескольких характеристик например, ранее рассматриваемый байт 127. Так, в соответствующих битах устанавливается разрешение (1) или запрещение (0) использования какой-то конкретной характеристики, определяемой конкретным битом, после чего полученная двоичная последовательность кодируется по уже известной схеме. Например, байт 16 характеризует поддерживаемые длительности пакетов передачи данных (BL Burst Length).
Кодирования в SPD размера передаваемого пакета (байт 16) | |||||||
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
BL=Page | TBD | TBD | BL=16 | BL=8 | BL=4 | BL=2 | BL=1 |
1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 | 1 или 0 |
Так, если поддерживается передача пакетов длительностью 1, 2, 4 и 8 слов (BL=1, 2, 4, 8), то в соответствующей ячейке таблицы устанавливаются 1 (поддерживается). В результате для данного случая имеем последовательность 00001111, что записывается в байте 16 карты программирования SPD как 0Fh. Если в дополнение к этому поддерживается еще и передача пакетов размера всей страницы целиком (BL=1, 2, 4, 8, Page), то тогда получается последовательность 10001111, что записывается в байт 16 как 8Fh.
Еще одним частным случаем «разделения» является «расстановка флага» в старшем бите (бит 7) байта. Например, байт 12 несет информацию о поддерживаемой длительности цикла регенерации строки логического банка ядра микросхемы памяти. Стандартно, микросхема памяти поддерживает нормальный цикл регенерации (15.625 µs), который обновляет содержимое ячеек страницы памяти через заданный конкретный интервал времени. Однако, регенерация не является «прозрачной» процедурой и в цикле ее проведения производительность падает. Для обхода этой проблемы используют многобанковую логическую архитектуру, которая теоретически кратно количеству используемых банков уменьшает задержку регенерации ячеек массива в сравнении с однобанковой организацией, кроме чего в схемах с независимыми и зависимыми банками имеются некоторые отдельные специфические особенности. Саморегенерация (SR или SEREf SElfREfresh), как стандартный в настоящее время механизм обновления содержимого ячеек памяти, используется для введения прибора памяти в режим выполнения программы самостоятельного режима регенерации. Этот механизм используется в периоды микропотребления, когда микросхема памяти регенерирует массив путем инкрементирования своего внутреннего счетчика в таком состоянии она сама осуществляет обновление содержимого ячеек, поскольку в ней запускается свой собственный генератор, синхронизирующий внутренние цепи.
Кодирования в SPD типа и способа регенерации массива ДОЗУ (байт 12) | ||||||||
Период | Бит 7, SR-флаг | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
Normal (15.625 µs) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Reduced (0.25x) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Reduced (0.5x) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
Extended (2x) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Extended (4x) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Extended (8x) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
TBD | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
… | 0 | х | х | х | х | х | х | х |
Периоды в режиме саморегенерации (SR) | ||||||||
Normal (15.625 µs) | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Reduced (0.25x) | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Reduced (0.5x) | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
Extended (2x) | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Extended (4x) | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Extended (8x) | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
TBD | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
… | 1 | х | х | х | х | х | х | х |
Примечание: Normal нормальная; Reduced сокращенная; Extended расширенная.
Для указания того, что микросхемы памяти в составе модуля поддерживают механизм саморегенрации введен флаг в старший бит (бит 7), характеризующий в конкретном случае, что саморегенерация поддерживается установка значения бита 7 в «1». Например, если микросхема поддерживает сокращенную на четверть регенерацию 0.25x (3.9 µs), то в двоичном представлении байт 12 будет выглядеть как 00000001, что соответствует 01h. Если прибор памяти поддерживает 2х-расширенный режим саморегенерации SR/2x (31.3 µs), то байт 12 в этом случае бинарно представляется как 10000011, что соответствует 83h в шестнадцатиричном коде.
Для кодирования/декодирования остальных параметров применяются схемы, аналогичные рассмотренным с небольшими особенностями. Полную информацию о назначении конкретных временных параметров, аббревиатурах, сокращениях и обозначениях, используемых в микроэлектронике (в частности в DRAM) можно найти в документах [1]-[2] из «Списка используемых источников». Более детальную информацию об описании и назначении всех информационных байт, использующихся в схеме последовательного детектирования для различных фундаментальных типов DRAM, регламентированного стандартом JEDEC Std No. 21-C-4.1.2, можно найти в документах [3]-[10]. Электрический интерфейс, монтаж микросхемы EEPROM, ее цоколевка, а также примеры карт программирования для соответствующих модулей памяти, использующих конкретные типы ДОЗУ, можно найти в документах [11], [12], [17]-[20] и [38].
SPD в Direct RDRAM RIMM
Общая схема представления и кодирования/декодирования информации, включая транспортный протокол, в SPD RIMM аналогична общей схеме последовательного детектирования, описываемой ранее, за исключением синхронизации с системой на частоте 100kHz.
Информация кодируется также, как и в SPD SIMM/DIMM, за исключением того, что информационные поля содержат данные, подразделяющиеся на четыре категории: данные, включающие поля связи организации микросхемы EEPROM (SPD), поля специальной информации об используемых микросхемах памяти (DEV), поля специальной информации о модуле (MOD) и поля информации о производителе модуля (OEM).
Основные характеристики микросхемы SPD RIMM EEPROM | |||
Символ | Параметр | Условия тестирования | Номинал |
SVDD | Питающее напряжение | 2.2-3.6 V | |
ISVdd | Ток в состоянии активности | fSCL=100kHz | 5.0 µA |
ISVdd1 | Ток в состоянии готовности | VIN=GND или SVDD | 100 µA |
ISLI | Входной ток утечки | VIN=GND или SVDD | 10 µA |
ISLO | Выходной ток утечки | VOUT=GND или SVDD | 10 µA |
VSIL | Низкий уровень входного напряжения | SVDD x0.3 V | |
VSIH | Высокий уровень входного напряжения | SVDD x0.7 V | |
VSOL | Низкий уровень выходного напряжения | IOL=3.0mA | 0.4V |
Большинство параметров, программируемых в SPD на модуле RIMM, являются специфичными относительно архитектуры, и применяются исключительно для характеристики DRDRAM. Поэтому данные параметры не подходят для других, отличных от Direct Rambus DRAM, типов памяти. Несмотря на это, основная спецификация JEDEC Std No. 21-C-4.1.2 и спецификация SPD RIMM в большинстве случаев используют для кодирования факультативных значений описательного характера одни и те же адреса.
Существует четкая взаимосвязь между временными параметрами, использующимися в Direct Rambus SPD, и параметрами самой микросхемы памяти DRDRAM, указанными в соответствующих спецификациях. Эта взаимосвязь определяется специальными пересчетными формулами (Translation Formulas), цель которых четко описать обратную совместимость между настоящими и будущими микросхемами памяти DRDRAM, которые, возможно, будут обладать лучшими или совершенно другими временными параметрами. Для обеспечения гарантированной совместимости, контроллер памяти RMC должен поддерживать характеристики основных/резервные полей SPD и все существующие передаточные формулы.
Для описания этих зависимостей ввели две таблицы, использующие в качестве размерности исключительно количества циклов (in cycles) для обеспечения полной совместимости значений. Первая таблица содержит формулы релевантности опорных точек отсчета временного параметра (RefPts Reference timing Points), используемых для преобразования. Значения tCLS и tCAS (параметры задержки ядра) представляют собой поля определенных регистров микросхемы и их значения в формуле представляют собой значения, хранящиеся в соответствующих полях этих регистров. Значение tCPS всегда эквивалентно одному циклу. Остальные данные хранятся в SPD.
Вторая таблица содержит соотношения для преобразований уже непосредственно временных параметров и использует значения вычисленных опорных точек отсчета (RefPts) из предыдущей таблицы. Значение длительности задержки tCDLY хранится в кодированном виде в полях регистров микросхемы памяти, а также в байтах 112-126 карты SPD. Все преобразования являются корректными только тогда, когда выполняется условие равенства длительности цикла tCYCLE из спецификации и хранящегося в SPD в байтах 50-51 значения частоты подачи строба доступа к строке fRAS. Параметр tRAS,MAX в данной таблице не используется, поскольку измеряется в микросекундах (µs). Все необходимые формулы и зависимости можно найти в документе [14].
Назначение адресных бит SPD RIMM | |||
Байт | Назначение | Units | FC |
0 | Номер текущей версии SPD | LUT | SPD |
1 | Общее количество байт информации в микросхеме SPD | LUT | SPD |
2 | Тип используемых микросхем памяти | LUT | DEV |
3 | Тип используемого модуля памяти | LUT | MOD |
4 | Количество адресных бит стоки [7:4] и столбца [3:0] для каждого прибора | Bit | DEV |
5 | Количество адресных бит на один банк и тип используемых банков памяти | LUT | DEV |
6 | Количество одновременно регенерируемых банков микросхемы памяти | Bit | DEV |
7 | Длительность периода регенерации микросхем памяти в ms tREF | ms | DEV |
8 | Используемая версия протокола RDRAM | LUT | DEV |
9 | Поле конфигурации использования устройств смешанного типа | N/A | DEV |
10 | Минимальный интервал «Precharge-to-RAS» tRP-R,MIN | 1/fRAS | DEV |
11 | Минимальный интервал «RAS-to-Precharge» tRAS-R,MIN | 1/fRAS | DEV |
12 | Минимальный интервал «Activate-to-CAS» tRCD-R,MIN | 1/fRAS | DEV |
13 | Минимальный интервал «RAS-to-RAS» tRR-R,MIN | 1/fRAS | DEV |
14 | Минимальный интервал «Precharge-to-Precharge» tPP-R,MIN | 1/fRAS | DEV |
15 | Минимальная длительность tCYCLE для диапазона А | 128ps | DEV |
16 | Максимальная длительность tCYCLE для диапазона А | 128ps | DEV |
17 | Диапазон значений длительности задержки ядра tCDLY для диапазона А | Cycle | DEV |
18 | Диапазон значений tCLS и tCAS для диапазона А | Cycle | DEV |
19 | Минимальная длительность tCYCLE для диапазона B | 128ps | DEV |
20 | Максимальная длительность tCYCLE для диапазона B | 128ps | DEV |
21 | Диапазон значений длительности задержки ядра tCDLY для диапазона B | Cycle | DEV |
22 | Диапазон значений tCLS и tCAS для диапазона B | Cycle | DEV |
23 | Минимальная длительность tCYCLE для диапазона C | 128ps | DEV |
24 | Максимальная длительность tCYCLE для диапазона C | 128ps | DEV |
25 | Диапазон значений длительности задержки ядра tCDLY для диапазона C | Cycle | DEV |
26 | Диапазон значений tCLS и tCAS для диапазона C | Cycle | DEV |
27 | Минимальная длительность tCYCLE для диапазона D | 128ps | DEV |
28 | Максимальная длительность tCYCLE для диапазона D | 128ps | DEV |
29 | Диапазон значений длительности задержки ядра tCDLY для диапазона D | Cycle | DEV |
30 | Диапазон значений tCLS и tCAS для диапазона D | Cycle | DEV |
31 | Максимальное время выхода из деактивации (PDN) в фазе А tPDNXA,MAX | µs | DEV |
32 | Максимальное время выхода из деактивации (PDN) в фазе B tPDNXB,MAX | 64 CFM | DEV |
33 | Максимальное время выхода из «дремоты» (NAP) в фазе А tNAPXA,MAX | ns | DEV |
34 | Максимальное время выхода из «дремоты» (NAP) в фазе B tNAPXB,MAX | ns | DEV |
35 | Максимальная и минимальная частоты функционирования fIMAX [7:4] и fIMIN [3:0] | MHz | DEV |
36 | Максимальная частота функционирования микросхем памяти fIMAX [7:0] | MHz | DEV |
37 | Минимальная частота функционирования микросхем памяти fIMIN [7:0] | MHz | DEV |
38 | Зарезервировано для характеристики внештатного функционирования ODF | N/A | N/A |
39 | Максимальный интервал между текущими операциями калибровки tCCTRL,MAX | ms | DEV |
40 | Максимальный интервал между операциями калибровки температуры tTEMP,MAX | ms | DEV |
41 | Минимальный интервал между разрешением и передачей команды (динамика формирования) проведения температурной калибровки tTCE,MIN | Cycle | DEV |
42 | Максимальный интервал «RAS-to-Precharge» tRAS-R,MAX | µs | DEV |
43 | Максимальное время пребывания микросхемы в режиме NAP tNLIMIT,MAX | µs | DEV |
44 | Описание тамингов ACTREFPT [7:4] и PCHREFPT [3:0] | Cycle | DEV |
45 | Описание тамингов CPCHREFPT_DC [7:4] и RDREFPT_DC [3:0] | Cycle | DEV |
46 | Описание тамингов RETREFPT_DC [7:4] и WRREFPT_DC [3:0] | Cycle | DEV |
47-49 | Зарезервировано | N/A | N/A |
50 | Частота подачи строба доступа к строке fRAS [11:8], начало | MHz | DEV |
51 | Частота подачи строба доступа к строке fRAS [7:0], продолжение | MHz | DEV |
52 | Максимальная потребляемая мощность на максимальной частоте, минимальной частоте и максимальное значение температуры всех микросхем, установленных на модуле памяти PMAX,HI, PMAX,LO и Tj соответственно | °C | DEV |
53 | Наличие на модуле радиатора, термосенсора и температура на нем HS и Tplate | °C | MOD |
54 | Потребляемый ток в состоянии STBY на максимальной частоте (fIMAX) PSTBY,HI | 1mA | DEV |
55 | Потребляемый ток при средней нагрузке на максимальной частоте PACTI,HI | 2mA | DEV |
56 | Потребляемый ток при максимальной нагрузке на fIMAX PACTRW,HI | 8mA | DEV |
57 | Потребляемый ток в состоянии STBY на минимальной частоте (fIMIN) PSTBY,LO | 1mA | DEV |
58 | Потребляемый ток при средней нагрузке на минимальной частоте PACTI,LO | 2mA | DEV |
59 | Потребляемый ток при максимальной нагрузке на fIMIN PACTRW,LO | 8mA | DEV |
60 | Потребляемый ток в режиме «дремоты» PNAP | 128 µA | DEV |
61 | Зарезервировано для будущего параметра термоконтроля PRESA | N/A | DEV |
62 | Зарезервировано для будущего параметра термоконтроля PRESB | N/A | DEV |
63 | Контрольная сумма байт 0-62 | N/A | SPD |
64-71 | Код производителя модуля памяти (Manufacture ID Code), согласно JEP106 | N/A | MOD |
72 | Информация о производителе модуля | N/A | MOD |
73-90 | Уникальный номер производителя модуля | N/A | MOD |
91-92 | Код ревизии производителя модуля | N/A | MOD |
93 | Год изготовления модуля | N/A | MOD |
94 | Неделя изготовления модуля | N/A | MOD |
95-98 | Серийный номер модуля | N/A | MOD |
99 | Количество используемых микросхем памяти на модуле | PCs | MOD |
100 | Ширина шины данных модуля памяти | Bit | MOD |
101-104 | Уникальное управление микросхемами памяти (один байт на 8 микросхем) | Bit | MOD |
105 | Напряжение питания [7:4] и интерфейс питающего протокола [3:0] | LUT | MOD |
106 | Допустимое отклонение напряжения питания | LUT | MOD |
107 | Зарезервировано | N/A | N/A |
108-110 | Зарезервировано | N/A | N/A |
111 | Зарезервировано | N/A | N/A |
112 | Зарезервировано | N/A | N/A |
113 | Зарезервировано | N/A | N/A |
114 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=3 | Cycle | DEV |
115 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=4 | Cycle | DEV |
116 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=5 | Cycle | DEV |
117 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=6 | Cycle | DEV |
118 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=7 | Cycle | DEV |
119 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=8 | Cycle | DEV |
120 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=9 | Cycle | DEV |
121 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=10 | Cycle | DEV |
122 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=11 | Cycle | DEV |
123 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=12 | Cycle | DEV |
124 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=13 | Cycle | DEV |
125 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=14 | Cycle | DEV |
126 | Значение CDLY0/1 для значения длительности задержки ядра tCDLY=15 | Cycle | DEV |
127 | Контрольная сумма байт 99-126 | N/A | SPD |
128-255 | «Свободное» поле для внесения дополнительной информации | N/A | OEM |
256+ | Зарезервировано | N/A | OEM |
Примечание: размерность (Units) характеризует единицы измерения указываемых данных; поле категории (FC Field Category) указывает одну из четырех характеристик информационного поля; значение N/A (Not Available) указывает на неопределенность размерности параметра
Правильность записанных данных в EEPROM проверяется дважды (две контрольные суммы по адресам 63 и 127), поскольку карта программирования RIMM включает в адреса 99-126 строго обязательные (а не факультативные, как в стандартной схеме SPD) данные. Схема проверки выглядит следующим образом: 1 складываются все данные в бинарном виде по адресам 0-62 и 99-126; 2 исключаются биты [7:4], кроме младших бит байта [3:0] для каждого диапазона значений отдельно; 3 полученные результаты сохраняются по адресам 63 и 127 для контрольных сумм 0-62 и 99-126 соответственно.
Более детальную информацию о описании и назначении всех информационных байт, использующихся в схеме последовательного детектирования SPD RIMM для описания RDRAM, регламентированного собственным стандартом, а также примеры карт программирования можно найти в документах [14]-[16] из «Списка использованных источников». Полную информацию о временных параметрах, аббревиатурах, используемых в Rambus DRAM, которые применяются в SPD RIMM, можно найти в документах [1], [2], [21], [22]. Примеры интерфейса модуля RIMM, монтаж микросхемы EEPROM и ее цоколевку можно найти в документах [23], [24].
«Практика» SPD: для чего это нужно
Смысл использования SPD четко ясен для производителя как модулей памяти, так и материнских плат, однако для конечного пользователя по большому счету интереса не представляет. Наличие схемы последовательного детектирования на модуле памяти избавляет производителей материнских плат от необходимости вносить оптимальные значения основных временных параметров в системный BIOS (как это делает, например, Intel, используя в своих материнских платах Phoenix BIOS), поскольку вся необходимая информация для нормальной настройки подсистемы и ее стабильного функционирования содержится в микросхеме SPD. Кроме этого, механизм SPD может настроить систему и гарантировать более-менее устойчивую работу при использовании в подсистеме памяти модулей разной организации, разного объема и имеющих разные значения одноименных параметров. Все, что нужно сделать контроллеру это при инициализации системы считать записанные в SPD данные.
Микросхемы, которые используются для производства модулей памяти, в идеале проходят всестороннее тестирование в максимально жестких условиях, после чего прошедшие отбраковку приборы памяти развариваются по модулю и уже тестируются в составе конечного продукта. В процессе тестирования снимаются необходимые параметры, о которых шла речь в статье, и затем на основе значений показателей какой-то большой партии тестируемых модулей выводятся «средние» (оптимальные) параметры, которые и записываются в EEPROM (бывают еще более «лобовые» методы прошивки значений временных параметров) производитель не будет записывать индивидуальные параметры для каждого отдельного модуля, поскольку это отнимает огромное время. Понятно, что из этой партии какие-то модули обладают характеристиками лучшими (иногда намного), чем записанные оптимальные значения, и есть шанс несколько поднять планку производительности. Эта схема является приближенной к идеальной в подавляющем большинстве случаев на практике значения необходимых временных параметров уже известны (они описаны в соответствующих спецификациях на стандарт) и в SPD EEPROM их средние значения могут быть записаны уже заранее. Поэтому, если на модуле предусмотрен механизм защиты от записи, микросхема EEPROM может монтироваться на плату в одном монтажном цикле с микросхемами памяти. В случае незащищенного модуля, которые обычно встречаются, вариантов занесения данных в микросхему SPD довольно много. Собственно, данный технологический цикл у разных производителей может различаться, поэтому выше приведенная схема является лишь одним из примеров.
Начиная с этого момента ситуация кардинально меняется: любой конечный пользователь будет заинтересован в том, чтобы выжать из модуля памяти максимум на что он способен будь то модуль со средними действительными характеристиками, или с намного лучшими средних. Физическое изолирование вывода WP (линию SWP просто подтягивают внешним резистором, обеспечивая постоянный высокий уровень сигнала), ответственного за «переключение» режима работы EEPROM (чтение/запись), является жесткой рекомендацией спецификации для производителей модулей памяти, однако на практике далеко не все придерживаются подобного рода требований. Конкретная реализация механизма защиты является скоре исключением, которое можно встретить разве что у именитых производителей модулей, поскольку обычно возможность перезаписи содержимого SPD открыта. Отдельно хочется обратить внимание на то, что механизм защиты может быть также жестко реализован конкретным производителем материнской платы физической изоляцией линии WP от компонента чипсета до разъема для модуля памяти. Для специалиста не составит труда написать программу, которая бы могла в этом случае «перепрошивать» содержимое EEPROM на модуле необходимо только грамотно переписать карту программирования с учетом установки желаемых параметров и запрограммировать интегрированный контроллер интерфейса SMBus с учетом используемого транспортного протокола. Примером такой программы может служить «SPDWrite», написанная Владимиром Бобровым и Александром Щеголевым, довольно простой по функциональности и четко работающий программатор. Первая версия SPDWrite полностью совместима пока только с мостом FW82371EB (PIIX4E), входящим в состав логического окружения i82440BX/ZX, однако в последующие версии программатора будет добавлена поддержка и других контроллеров периферийных компонент.
Если необходимо только просмотреть содержимое микросхемы SPD, то можно воспользоваться одной из следующих программ. Основную информацию о всех модулях памяти, присутствующих в системе, можно узнать при помощи программы «DIMM-ID», разработанную компанией RM Plc. Подробно карту программирования SPD EEPROM можно считать при помощи программы «SiSoft SIMM/DIMM/RIMM SPD Analyzer», входящий в комплект пакета SiSoft Sandra. Очень подробную информацию, включая дамп содержимого микросхемы и список известных производителей, предоставляет программа «On DIMM SPD Tools» нашего соотечественника Дмитрия Полтавцева. Еще одна разработка «DIMM SPD Information» также нашего соотечественника Константина Алешина предлагает довольно краткую информацию о модуле памяти, исходя из состояния всего лишь нескольких байт в микросхеме SPD. Программа «MemSPD», написанная Ray Van Tassle, поможет оценить скорость работы памяти и текущие тайминговые установки. Информацию о поддержке и текущем состоянии интерфейса SMBus может выдать программа «System-Management-Bus-Scanner» от немецкой фирмы c’t. От этой же фирмы есть утилита «BIOS-Info», которая выдает основную информацию о версии системной BIOS, ее производителе и т.д. Однако самой, пожалуй, удобной программой по считыванию содержимого микросхемы памяти SPD EEPROM является «ctSPD» от все той же компании c’t предлагается как специально «урезанная» версия для пользователей Windows’9x, так и полная для всех разновидностей Windows ОС.
Хочется обратить особое внимание на то, что не все программы считывания данных с SPD EEPROM корректно указывают производителя модуля памяти, поскольку содержат в себе базу идентификационных кодов на какой-то определенный момент обновление базы происходит через строго определенный период, согласно требований JCB-94-02, определяемых в рамках JC-42.3. Иными словами, если какая-то программа выдает информацию о том, что производитель модуля неизвестен или его невозможно определить, то скорее всего данного кода в ее базе просто нет. В этом случае следует воспользоваться любым «декодером», способным выдавать дамп содержимого микросхемы SPD EEPROM (например, SiSoft SPD Analyzer, On DIMM SPD Tools и ctSPD), посмотреть содержимое ячеек байт 64-71 исследуемого модуля памяти и сравнить считанный код с последним обновлением документа JEP106.
В случае же, если используется нормальный модуль с «изолированным» выводом WP, можно рекомендовать лишь два способа. Лобовым и самым простым решением является обычная «настройка подсистемы памяти в системном BIOS» (если такая возможность имеется) параметр SDRAM Configuration устанавливается в положение Manual (установка этого параметра в значение «by SPD» говорит о том, что все параметры берутся из соответствующих записанных значений в микросхеме последовательного детектирования), после чего производится настройка необходимых установок, игнорируя значения, считываемые из микросхемы SPD. Конечно, возможности установки параметров через системный BIOS не такие гибкие, как это предоставляет механизм SPD, но, в целом, настройки подсистемы памяти, регулирующиеся через системный BIOS, являются основными. Стоит отметить, что далеко не каждый BIOS обладает широкими настройками все еще зависит от конечного производителя материнской платы, используемого набора базовой логики и типа самого BIOS.
Вторым способом жестко изменить требуемые параметры, но уже непосредственно в микросхеме SPD EEPROM или просто поправить контрольную сумму (иногда бывает, что в SPD записывают неверное значение), можно воспользоваться одной из программ перезаписывания содержимого микросхем последовательного интерфейса: воспользоваться либо программой «PonyProg Serial Device Programmer» от Claudio Lanconelli, которую можно найти на LancOS, либо оболочкой «IC-Prog Prototype Programmer» от Bonny Gijzen, свободно доступной на IC-Prog. Данные программаторы обладают дружественным GUI, работают в среде Windows/UNIX, имеют достаточно обширную базу поддерживаемых транспортных протоколов (не только Inter-IC) и типов устройств (не только EEPROM), совместимы с довольно большим количеством аппаратных интерфейсов, подключаемых к последовательному и параллельному портам ПК, и позволяют считывать, редактировать и перезаписывать данные прямо в оболочке. Проблема заключается лишь в том, что эти программы работают только с внешними специальными адаптерами (принципиальные схемы прилагаются в документации свободно доступной на соответствующих ресурсах) поэтому микросхему EEPROM из модуля памяти необходимо выпаивать, перезаписывать данные и впаивать обратно. Примеры карт программирования для различных модулей памяти, использующих различные фундаментальные типы ДОЗУ, можно посмотреть в разделе «Приложения».
В целом, для пользователей у которых материнская плата имеет AWARD BIOS, перепрошивкой содержимого микросхемы SPD заниматься не стоит, поскольку все временные параметры, которые оказывают значительное влияние на производительность подсистемы памяти, могут регулироваться из этой BIOS. AMI BIOS также позволяет достаточно гибко настраивать тайминги работы памяти. Поэтому «физические» манипуляции с микросхемой SPD EEPROM имеют смысл для обладателей материнских плат, содержащих BIOS типа Phoenix, который используется, например, на всех продуктах от Intel. Конечной целью в таком случае является по большому счету исправление часто встречающейся неправильной контрольной суммы, что абсолютно не важно для AWARD/AMI, однако критично для Phoenix BIOS, поскольку неверное значение система воспринимает как неправильно считанные данные и последующая загрузка (точнее говоря прохождение POST) становится проблематичной. Нет смысла говорить о том, что простое выпаивание SPD EEPROM без перепрограммирования не решит проблемы, поскольку присутствие этой микросхемы на модуле памяти с полностью корректными данными является обязательным условием для работы в системе с Phoenix BIOS.
И главное не стоит забывать, что подобные процедуры вмешательства на «очень низком уровне» сопряжены с огромными трудностями о которых даже не имеет смысла говорить.