ASUS TUF Gaming X570-Plus: в поисках Lane Margining

Поддержка системной логикой AMD X570 ши­ны PCI Ex­press Gen4 де­ла­ет ма­те­рин­ские пла­ты на этом чип­се­те объ­ек­том ис­сле­до­ва­тель­ско­го ин­те­ре­са — ка­кое мес­то в ре­гист­ро­вом про­ст­ран­ст­ве за­ни­ма­ет ба­зо­вая ин­но­ва­ция PCIe 4.0 — фун­к­ци­о­наль­ность Lane Margining. Преж­де, чем при­сту­пить к ана­ли­зу по­лу­чен­ных ре­зуль­та­тов, вер­нем­ся к ос­но­вам PCI Ex­press.

Физические основы

Обмен информацией по PCIe-шине требует ряда достаточно сложных процедур инициализации, основанных на оцен­ке со­сто­я­ния интерфейсных цепей. Базовые операционные параметры порта, такие как ширина ши­ны и по­ло­са про­пус­ка­ния, устанавливаются в ходе процедуры Link Training, на основе формирования и по­сле­ду­ю­щей ве­ри­фи­ка­ции спе­ци­аль­ным об­ра­зом сфор­ми­ро­ван­ных данных — пат­тер­нов. С увеличением про­из­во­ди­тель­но­с­ти PCI Express Gen4 до 16 GT/S стала насущной дополнительная процедура — упо­мя­ну­тая выше La­ne Margining, в ходе которой вы­пол­ня­ет­ся пре­ци­зи­он­ная ана­ло­го­вая (вернее, дискретно-ана­ло­го­вая) на­с­т­рой­ка ам­п­ли­туд­ных и временны́х характеристик шины.

Зачем нужен Lane Margining?

В силу очевидных причин, стабильная работа устройств на сверхвысоких частотах становится невозможной без пред­ва­ри­тель­ной «юстировки» канала связи. Для выполнения этой процедуры параметры передатчика (за­да­чей которого является формирование тестового сигнала) и приемника (задачей ко­то­ро­го яв­ля­ет­ся ана­лиз искажений тес­то­во­го си­г­на­ла) долж­ны кон­т­ро­ли­ро­вать­ся с су­щест­вен­но большей точностью, чем при обыч­ном взаимодействии устройств в рабочем сеансе.

В соответствии с архитектурными принципами PCIe 4.0, цифровые автоматы, контролирующие фор­ми­ро­ва­ние и при­ем тестовых сигналов, снабжены унифицированными средствами про­то­ко­ли­ро­ва­ния событий и спе­ци­аль­ны­ми ре­гист­ра­ми, прочитав содержимое которых, системное про­г­рам­мное обес­пе­че­ние мо­жет по­лу­чить ин­фор­ма­цию о ка­че­ст­ве линии связи, а если произошла значительная деградация па­ра­мет­ров со­е­ди­не­ния — уточнить ее при­чи­ну и но­мер ша­га ди­аг­но­сти­че­ско­го алгоритма, на котором про­и­зо­шел фатальный сбой.

Именно такой архитектурный подход и позволяет говорить о при­ме­не­нии дис­крет­но-ана­ло­го­вых сис­тем. Ка­кие ре­гист­ры сис­тем­ной ло­ги­ки AMD X570 свя­за­ны с этим ди­а­гно­с­ти­че­ским ме­ха­низ­мом?

На тестовом стенде
ASUS TUF Gaming X570-Plus

Исследования проведем на платформе ASUS TUF Gaming X570-Plus, где установлен процессор AMD Ryzen 5 3400G, объем оперативной памяти составляет 16ГБ (комплект DIMM-модулей HyperX Savage HX430-C15SBK4/16). На­ко­пи­тель — WD Green PC SSD. Блок питания — Seasonic Focus Plus 650 Platinum. Сис­тем­ная ло­ги­ка декларирует наличие PCIe Gen4, в то время как установленный центральный процессор Ryzen 5 3400G, согласно описанию, поддерживает максимум PCIe Gen3, причем с шириной шины x8. Как известно, од­ним из главных потребителей PCIe-трафика яв­ля­ет­ся дискретный видео адаптер, традиционно под­клю­ча­е­мый к PCIe интерфейсу в составе CPU, в то время как ус­та­нов­лен­ный процессор, очевидно «делает став­ку» на ин­тег­ри­ро­ван­ную графику.

На тестовом стенде ASUS TUF Gaming X570-Plus с поддержкой PCI Ex­press Gen4

 

С помощью утилиты RWEverything получим дамп кон­фи­гу­ра­ци­он­но­го PCI-про­ст­ран­ст­ва, ад­ре­су­е­мо­го как ди­а­па­зон па­мя­ти MCFG (me­mo­ry-map­ped con­fi­gu­ra­tion). Сохраненный бинарный файл расшифруем кросс-плат­фор­мен­ной Java-утилитой PCIDump, которая, используя открытую базу данных производителей и устройств, ге­не­ри­ру­ет текстовый ра­порт.

В соответствии с целью эксперимента, акцентируем внимание на регистровых полях, присутствующих в де­та­ли­за­ции некоторых устройств системной логики

  • 0026 = Physical Layer 16.0 GT/S
  • 0027 = Lane Margining at the Receiver

Указанные регистровые поля являются так называемыми Extended Capability структурами, их формат уни­фи­ци­ро­ван спе­ци­фи­ка­ци­ей PCI Express, а не разработчиками системной логики AMD X570. Это делает воз­мож­ным их рас­шиф­ров­ку и ана­лиз.

Помогает IBM

Спецификация PCI Express является конфиденциальным документом. Кроме того, обновление пер­во­ис­точ­ни­ка про­ис­хо­дит с не­ко­то­рым за­паз­ды­ва­ни­ем. Но в силу кросс-­плат­фор­мен­но­с­ти PCIe-шины, нуж­ную ин­фор­ма­цию ино­гда уда­ет­ся найти в документации на альтернативные платформы. В данном случае, по­лез­ной ока­за­лась спе­ци­фи­ка­ция на IBM Power Systems Host Bridge 4, где присутствует по­бит­ная рас­шиф­ров­ка ря­да ре­гист­ров, со­став­ля­ю­щих про­г­рам­мную мо­дель PCIe Gen4 устройств.

Регистр Extended Capability Header Register

Регистр Extended Capability Header Register используется для обнаружения заданной структуры в связанном спис­ке. Одна из исследуемых структур (Physical Layer 16 GT/S) идентифицируется кодом ID = 0026h.

Регистр 16GT/S Status Register

Регистр 16GT/S Status Register отражает результат инициализации интерфейса для работы в режиме данной по­ло­сы пропускания.

Предметом кросс-плат­фор­мен­ной стан­дар­ти­за­ции яв­ля­ют­ся иден­ти­фи­ка­то­ры Extended Capability ID, принцип ска­ни­ро­ва­ния связанного списка структур, а также форматирование битовых полей внутри них. В то время как аб­со­лют­ные адреса, по которым структуры расположены в регистровых блоках, для про­а­на­ли­зи­ро­ван­ных уст­ройств AMD и IBM, ожидаемо различны.

Нули и единицы Extended Capability

В начале рапорта содержится список обнаруженных на системной плате ASUS TUF Gaming X570-Plus уст­ройств, вслед за ним — детализация и шест­над­ца­те­рич­ный дамп ре­гист­ров для каждого устройства.

Список устройств, сформированный в результате сканирования конфигурационного PCI-пространства

Для удобства изучения, в этой и двух последующих иллюстрациях сохранены номера строк текстового ра­пор­та.

Дамп регистров устройства GPP Bridge (GPP означает General Purpose PCIe Port)

Устройство содержит искомую структуру, но статусный регистр, расположенный по смещению 000Ch=12 от­но­си­тель­но ее начала, обнулен. Инициализация интерфейса для работы с полосой пропускания 16 GT/S, не вы­пол­не­на.

Дамп регистров контроллера Serial ATA

Устройство содержит искомую структуру, статусный регистр содержит 0Fh=000001111b. Выполнена ини­ци­а­ли­за­ция интерфейса.

Трактовки и комментарии

Полный список устройств, декларирующих функциональность Physical Layer 16.0 GT/S и Lane Margining at the Re­ceiv­er, за­ин­те­ре­со­ван­ный читатель может проанализировать самостоятельно, используя при­ла­га­е­мый ра­порт или по­вто­рив опе­ра­цию на соб­ст­вен­ной платформе. Статусный регистр PCIe-моста системной логики AMD X570, де­та­ли­за­ция ко­то­ро­го при­ве­де­на выше, в битах [0-3] от­ра­жа­ет результат инициализации канала свя­зи и позволяет определить фа­зу вы­пол­не­ния про­цес­са, на которой имела место ошибка. Бит [4] ин­ди­ци­ру­ет запуск инициализации. Пол­ная ин­фор­ма­ция, формируемая в результате операций Link Training и Lane Margining, вклю­ча­ет сот­ни ре­гист­ро­вых полей, опи­са­ние лишь некоторых из них можно найти в упо­мя­ну­том до­ку­мен­те от IBM.

  • Структура Physical Layer 16.0 GT/S, идентифицируется кодом ID=0026h, располагается в ре­гист­ро­вых бло­ках сис­тем­ной ло­ги­ки AMD по адресу 0410h и де­та­ли­зо­ва­на в разделе 4.5.7 P16 - Physical Layer 16 GT/s Ex­tend­ed Ca­pa­bi­li­ty Re­gi­s­ters.
  • Структура Lane Margining at the Receiver, идентифицируется кодом ID=0027h, рас­по­ла­га­ет­ся в ре­гист­ро­вых бло­ках системной логики AMD по адресу 0440h, де­та­ли­зо­ва­на в разделе 4.5.8 LMR — Lane Margining at the Re­ceiv­er Ex­tend­ed Ca­pa­bi­li­ty Registers.

Важным свойством ряда регистровых полей является возможность программно идентифицировать номера диф­фе­рен­ци­аль­ных пар интерфейса, в которых имели место ошибки. Еще раз напомним, предметом уни­фи­ка­ции являются идентификаторы и внутреннее форматирование регистровых полей, в то время как их аб­со­лют­ные адреса в ре­гист­ро­вых блоках устройств AMD и IBM, различаются. Абсолютные адреса рас­смот­рен­ных регистровых по­лей мо­гут из­ме­нить­ся после обновления firmware платформы.

Трактовка статусной информации требует вдумчивого и осторожного подхода, дифференцирующего как ми­ни­мум два возможных состояния:

  1. Исследуемая операция состоялась, статус достоверен и может быть истолкован по документации;
  2. Содержимое статусного регистра недостоверно, так как исследуемая операция не вы­пол­ня­лась — трак­тов­ка не уместна.

И про инструментарий

Методика, основанная на представлении конфигурационного PCI-пространства в виде бинарного файла оп­ти­маль­на для первичного обзора платформы. Одним из недостатков представления «живой» системы в ви­де двоичного образа яв­ля­ет­ся невозможность записи в регистры и моделирования выполнения команд. Кро­ме того, сохранение файла, объ­е­мом 64-256 мегабайт может занять несколько минут или даже десятков ми­нут, хотя в типовом случае файл со­дер­жит раз­ре­жен­ные дан­ные и неплохо архивируется.

Для решения как серьезных, так и экзотических исследовательских задач, (например, для оценки за­ви­си­мос­ти ка­че­ст­ва передачи СВЧ-сигналов от угла наклона видео адаптера в PCIe-слоте) удобнее использовать on­line-ди­а­лог с ре­гист­ра­ми уст­рой­ст­ва. Вероятность зависания платформы с необходимостью по­сле­ду­ю­щей пе­ре­за­груз­ки уменьшится, если перенести эксперименты из среды ОС в UEFI.

Приступая к опытам с оборудованием, уместно вспомнить о резервном копировании, программаторе для вос­ста­нов­ле­ния BIOS, UEFI, firmware и других страховочных мерах.