American Megatrends, разработчик UEFI BIOS и партнер по микропрограммным решениям компании Renesas, анонсировал поддержку шины I3C — новинки, задействованной в интерфейсе удаленного управления MegaRAC. Шина I3C, реализованная на базе контроллеров Renesas, позволит клиентским платформам в полной мере использовать преимущества DDR5 для достижения максимальной производительности оперативной памяти, при одновременном увеличении ее объемов, снижении потребляемой мощности и, вследствие этого, снижении остроты ее отказов.
Микросхемы Renesas для I3C формируют разветвленную топологию шины System Management Bus (SMBus), одной из первостепенных задач которой является идентификации модулей памяти DDR5. Ранее доступ к SPD модулей памяти осуществлялся по I2C-шине. Теперь же логика от Renesas, поддержанная программными продуктами от AMI, обеспечит миграцию платформ с устаревших решений на новую высокоскоростную I3C-шину.
Шину System Management Bus, реализованную средствами последовательного протокола I2C, можно отнести к одной из самых консервативных подсистем PC-платформ. Этот интерфейс используется для передачи сравнительно небольших объемов информации (главным образом — при выполнении стартовых процедур UEFI BIOS) и находится «на обочине» маршрутов доставки данных, критически важных с точки зрения производительности. В настоящее время тенденции, наметившиеся с появлением оперативной памяти DDR4 и получившие развитие в DDR5, создали предпосылки для модернизации SMBus, а конкретнее — перехода на протокол I3C.
Потенциал I3C несколько избыточен для существующих сценариев применения шины SMBus в PC-платформах. Изучая документацию на микросхемы Renesas SPD5118, используемые в модулях оперативной памяти DDR5, из многочисленных возможностей I3C выделим функциональность, нашедшую применение в схеме последовательного детектирования DIMM SPD.
К истории вопроса
Стандартизация применения I2C в качестве внутренней управляющей шины PC-платформ состоялась более двух десятилетий назад с появлением контроллера SMBus в составе микросхемы Intel 82371AB (PIIX4). Главными обязанностями этого интерфейса стало чтение (а в случае использования специальных сервисных утилит и запись) SPD-информации модулей оперативной памяти а также коммуникация с микросхемой тактового генератора с целью установки рабочих частот и отключения неиспользуемых CLK-линий. Позднее, с реализацией генератора в составе системной логики, круг типовых задач сократился до обслуживания SPD. Кроме того, некоторые системные платы используют SMBus для подключения датчиков аппаратного мониторинга.
В контроллере Intel PIIX4 протокол SMBus реализован аппаратно. Некоторые из альтернативных решений, например, VIA VT82C586B требовали побитного программного управления линиями Serial Clock и Serial Data (SCL, SDA). На модулях DIMM появилась микросхема флеш-памяти 24C02 объемом 256 байт, содержащая описание устройства.
Заметим, что совсем «древние» виды памяти, такие как FPM, EDO и некоторые реализации первых SDRAM, часто обходились без последовательной идентификации, поскольку детектирование такой памяти можно осуществить выполнением операций записи и чтения по специальному алгоритму, иными словами методом проб и ошибок. С усложнением процедур настройки таймингов и других параметров данный подход перестал быть возможным. С переходом к DDR SDRAM, все модули DIMM снабжаются SPD.
Если микросхемы памяти установлены непосредственно на системной плате, то их тип, количество и метод подключения известны разработчику платформы и могут быть запрограммированы в таблицах, размещаемых в составе UEFI BIOS. Данное обстоятельство позволяет производителям платформ сэкономить на SPD независимо от типа памяти.
Особенности DDR4, DDR5 и NVDIMM
Если данные SPD главным образом используются при старте платформы и работе специализированных сервисных утилит, то для модулей памяти DDR4, опционально снабжаемых датчиком температуры добавляется задача мониторинга в сеансе ОС. Кроме того, в отличие от набора констант в постоянной памяти, датчик является источником асинхронных событий, таких как достижение граничной температуры (численное значение которой программируется), а значит архитектуру управляющей шины уместно дополнить реализацией механизма аппаратных прерываний.

Новая спецификация DDR5 диктует необходимость распределенного питания для каждого DIMM-модуля, — в отличие от привычной централизации на материнской плате — что улучшает их тепловые профили, а также надежность и масштабируемость. С точки зрения компоновки платформы это выглядит следующим образом: регулятор напряжения питания оперативной памяти, обозначаемый в документации как Power Management IC (PMIC), переносится с системной платы непосредственно на каждый DIMM-модуль.
Повышение требований к эффективности электропитания, стабильности напряжения и точности его регулирования является ключевой тенденцией, вызвавшей к жизни децентрализацию регуляторов. Решения, апробированные на серверных платформах, становится доступными и для клиентских систем, поскольку обладают очевидными и убедительными преимуществами. В этом свете задачи мониторинга состояния и управления режимом регулятора порождают дополнительный трафик между материнской платой и модулями памяти.

Подключение SPD Hub на модуле DDR5 — новой функцией является формирование локальной шины SMBus (сигналы LSCL, LSDA), что позволит расширить набор устройств, размещенных на модуле без увеличения нагрузки на хост-шину (сигналы HSCL, HSDA)
Возможностью подключения дочерних устройств объясняется применение термина «SPD5 Hub» вместо устаревшего «SPD EPROM». Такими дочерними устройствами может быть микросхема PMIC, дополнительные датчики, обеспечивающие контроль температуры в нескольких точках модуля, буферы-разветвители тактовых сигналов (clock drivers) и другие компоненты.
Из внутренних ресурсов, микросхема SPD5118 содержит встроенный датчик температуры, показания которого считываются по SMBus. Объем запоминающего устройства вырос до 1024 байт, организованных в 16 блоков по 64 байта с раздельной программной установкой защиты записи для каждого из блоков.
Специальных методов управления требуют энергонезависимые модули памяти или NVDIMM располагающие обоими видами носителей: DRAM и Flash. Для включения комбинированных модулей в адресное пространство платформы и управления перемещением данных между двумя видами носителей требуется передача управляющих команд с использованием надежного и достаточно производительного интерфейса. (Подробнее об энергонезависимой памяти читайте на нашем сайте в материале «Персистентность у ворот»).
Реализация I3C в модулях DDR5
Рассмотрим некоторые аспекты функциональности I3C, реализованной в микросхемах серии SPD5 Hub.

Сравнение функциональности микросхемы SPD5 Hub в режимах I2C и I3C
Итак, после подачи питания, SPD5 Hub по умолчанию работает в режиме I2C — такая функциональность заложена в него для совместимости с устаревшими решениями. Переход в режим I3C осуществляется только по специальной управляющей команде, полученной от SMBus хост-контроллера. При этом максимальная частота сигнала SCL возрастает до 12.5 MHz, что в случае передачи одного бита за тактовый импульс (Single Data Rate) соответствует скорости около 12.5 Mbps. Одной из опций стандарта I3C является удвоение производительности за счет передачи двух битов информации за один тактовый импульс (Double Data Rate), но об этом далее.
Рост частоты от 1.0 MHz в режиме I2C до 12.5 MHz в режиме I3C достигается за счет перехода от pullup-формирователей с открытым стоком к push-pull схеме. Как известно, при формировании высокого логического уровня с помощью pullup-резистора время переключения из состояния логического «0» в «1» неизбежно возрастает, так как сопротивление резистора и паразитная емкость цепи образуют RC-цепочку. Push-pull схема, нагрузочная способность которой не ограничена резистором, не имеет такого недостатка.
Работая в режиме pullup, обеспечивающем совместимость с I2C, чип SPD5 Hub оперирует напряжением высокого логического уровня до 3.3V. Согласно спецификации I3C, в режиме push-pull рабочее напряжение интерфейса уменьшается до 1.0 V. Типовое напряжение питания микросхемы, подаваемое на линию VDDSPD, отделенную от цепей питания интерфейса, составляет 1.8V.
Дальнейшего увеличения производительности вплоть до 33.3 Mbps можно достичь, усовершенствовав режим Double Data Rate и изменив метод формирования сигналов SCL и SDA в соответствии с законами троичной логики: переключение обеих линий SCL и SDA считается логическим «0», переключение только линии SCL — логической «1», переключение только линии SDA — логической «2». Похоже, в приоритете разработчиков SPD5 Hub были простота и совместимость, поэтому столь хитрые опции на данном этапе развития управляющей шины проигнорированы: пока производительность I3C-шины не превышает 12,5 MHz в режиме Single Data Rate.
Механизм передачи запросов на прерывание (in-band interrupts), позволяет информировать хост-контроллер об асинхронных событиях, возникающих в микросхеме SPD5 Hub и других устройствах, подключенных к ее локальной шине. В типовом случае речь может идти о выходе контролируемых величин, в частности температур, за установленные рамки. Передача таких запросов от конечного устройства управляющему контроллеру осуществляется специальными последовательностями сигналов SCL, SDA по двухпроводной шине без применения дополнительных линий, требующих выделения контактов на разъемах. Ответственным за следующий этап — передачу запроса на прерывание центральному процессору — становится хост-контроллер SMBus, в типовом случае входящий в состав системной логики.
Аппаратные подробности
По сравнению с выше упомянутой микросхемой EPROM 24C02, набор функций микросхемы SPD5 Hub значительно расширился: объем устройства увеличился до 1 КБ и появился контроллер локальной шины SMBus, отделяющей интерфейсные цепи системной платы от внутренней шины DIMM-модуля. Чип SPD5118 отличается от SPD5108 наличием температурного сенсора, что не исключает подключения внешних датчиков к локальной шине SMBus.
Реализация расширенной функциональности при сохранении количества контактов корпуса микросхемы вынудила разработчиков применить ряд необычных решений. Контактов восемь, если не считать девятый — GND/Thermal Pad или контактную площадку под корпусом, выполняющую функцию дополнительной «земли» и термоинтерфейса.

Назначение выводов микросхем SPD5 Hub SPD5118, SPD5108
На линию VDDSPD подается напряжение в +1.8V. Общий провод подключен к VSS, а также к дополнительному центральному контакту GND/Thermal Pad. Линия VDDIO, предназначенная для подачи напряжения в +1.0V, обеспечивает отдельную цепь питания для I3C интерфейса.
Линии HSCL (Host Serial Clock), HSDA (Host Serial Data) образуют внешний I3C интерфейс модуля памяти и посредством соответствующих контактов на DIMM-разъеме подключаются к хост-контроллеру SMBus, расположенному на системной плате. Протокол, используемый для выбора режима функционирования интерфейсных линий (Legacy I2C или I3C) описан выше.
Линии LSCL (Local Serial Clock), LSDA (Local Serial Data) образуют локальную управляющую шину модуля, используемую для подключения дополнительных чипов, таковыми могут быть датчики температуры, контроллер питания PMIC, буфер тактовых сигналов и другие устройства. Выбор режима работы локальных линий LSCL, LSDA — Legacy I2C или I3C — осуществляется независимо от режима внешних интерфейсных линий HSCL, HSDA, что дает дополнительную свободу разработчику модуля при выборе элементной базы.

Уникальные SMBus-адреса каждого DIMM-модуля формируются резисторами на системной плате
Контакт HSA (Host Select Address) используется для назначения одного из восьми вариантов адреса на шине SMBus, а равно снятия защиты записи в технологическом режиме (Offline mode) при подключении модуля памяти или отдельно стоящего чипа к программатору. Соединение линии HSA с общим проводом активирует Offline mode и разблокирует защиту записи.
Уникальные SMBus-адреса каждого DIMM-модуля формируются резисторами на системной плате — к ним подключаются линии HSA, идущие от каждой микросхемы SPD5 Hub. Соответствие сопротивления управляющего резистора и присвоенного адреса указано в таблице ниже.

Подключение линии HSA и номиналы резистора, используемого для аналогового задания адреса SPD5 Hub
Столь необычный прием позволил сократить количество внешних выводов микросхемы — ведь для задания восьми вариантов адреса SPD Hub потребовалось бы 3 линии (A0, A1, A2), плюс одна линия для защиты записи (WP). Напомним, именно так реализована логика адресации и управления записью в 24C02. В результате, одна аналоговая линия HSA заменяет 4 цифровых (A0, A1, A2, WP).
Глядя на резисторную схему адресации пытливый читатель должен задать закономерный вопрос: неужели при переходе к DDR5 архитектура современных платформ не допускает использование более восьми DIMM-модулей? Существует множество способов обхода данного ограничения:
- Серверные платформы могут оснащаться более, чем одним хост-контроллером SMBus.
- Компонентная база от Renesas позиционируется с акцентом на разветвленные топологии, что позволяет разрабатывать схемные решения, в которых один SMBus-контроллер управляет несколькими сегментами шины либо один сегмент шины управления может быть доступен нескольким SMBus-контроллерам посредством мультиплексоров IMX3102 и расширителей IMX3112.
Другими словами, вариант с аналоговыми цепями выглядит как революционный с точки зрения аппаратной реализации, но как консервативный с точки зрения программной архитектуры, позволяя остаться в рамках модели фиксированной адресации до 8 модулей в группе, аналогично решениям на основе I2C с чипом 24C02. Впрочем, для настольных компьютеров такое количество гнезд для DDR5-памяти ought to be enough for anybody.