Как узнать последнюю доступную версию микрокода для процессора AMD?

Вопрос или проблема

Для Intel есть информация, такая как microcode-update-guidance.pdf и releasenote, я не смог найти подобной информации об обновлениях микрокода процессоров AMD.

Есть ли она где-то в наличии?

Ближе всего, что я смог найти, – это сообщественный репозиторий микрокодов для процессоров Intel, VIA и AMD: https://github.com/platomav/CPUMicrocodes/

Список микрокодов AMD (с номерами версий) находится здесь:
https://github.com/platomav/CPUMicrocodes/tree/master/AMD

Объяснение имен файлов находится в первой ссылке. Вкратце, оно содержит:

  • CPUID
  • Ревизия (счетчик ревизий обновлений микрокода)
  • Дата (дата его публичного выпуска)
  • Контрольная сумма

Ответ @david – отличная подсказка. Однако на основе его пришлось потратить много времени на разбирательство.

Поэтому я не смог найти способ получить правильный CPUID ни на Linux, ни на Windows. В конце концов, я нашел CPUID на http://instlatx64.atw.hu/ (увидел это в README для MC Extractor) и выяснил, что у Ryzen 3600 ID 00870F10.

Текущий микрокод, который я мог видеть из BIOS, dmesg, dmidecode, /proc/cpuinfo, cpuid (в Windows hwinfo и CPUz тоже показывали его). Он был 8701030 для меня (материнская плата имеет AGESA 1.2.0.B, в то время как исправление zenbleed должно быть в 1.2.0.C, см. AMD бюллетень).

Затем в репозитории CPUMicrocodes я увидел на основе CPUID, что есть также новый микрокод 08701033, который, надеюсь, должен содержать исправление zenbleed.

Обновление, я вижу, как можно увидеть этот CPUID, вывод cpuid -r. Для моего процессора это eax при 0x00000001 и 0x80000001. Вероятно, это должно быть одинаково и для других процессоров.

введите описание изображения здесь

Как его загрузить? Это выходит за рамки, но в основном нужно упаковать сырой микрокод в файл, который может быть понят ядром, и затем объединить его (или заменить) с оригинальным файлом микрокода, в моем случае /usr/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.

Для этого вы можете использовать два инструмента – amd-ucodegen и amd_ucode_info.

Я написал блог о всей этой теме:
https://rboci.blogspot.com/2024/04/zenbleed-microcode-update-on-amd-ryzen.html

В итоге, основная причина, по которой я провел это упражнение, того не стоила, потому что наивный тест показывает фактически незначительные отрицательные результаты по многопоточности и только незначительное улучшение в однопоточном режиме.

Но в общем, вот как можно найти и установить новый микрокод AMD на Linux.

Ответ или решение

Определение актуальной версии микрокода для процессора AMD может быть задачей, требующей определенного опыта и знаний. Данный процесс не столь прямолинеен, как в случае с Intel, где официальные документы и репозитории содержат актуальную информацию о микрокодах. Однако, следуя описанным шагам и используя некоторые инструменты, можно успешно обновить микрокод вашего процессора AMD.

Теория

Микрокод — это низкоуровневое программное обеспечение, встроенное непосредственно в процессор, позволяющее устранять аппаратные ошибки или оптимизировать производительность без замены физического оборудования. Процессоры AMD, как и другие процессоры, периодически получают обновления микрокода для исправления уязвимостей или улучшения характеристик.

Однако в отличие от Intel, AMD не предоставляет централизованные и легко доступные источники для получения последней версии микрокода. Поэтому, чтобы определить, какая версия микрокода доступна для вашего процессора, необходимо полагаться на сторонние источники и репозитории, такие как открытые проекты на GitHub.

Пример

Процесс поиска актуального микрокода для процессора AMD начинается с определения CPUID вашего процессора. CPUID — это уникальный идентификатор, который помогает определить модель и возможности процессора. В приведенном примере, Ryzen 3600 имеет CPUID "00870F10". Этот идентификатор можно узнать с помощью утилиты cpuid на Linux или различных приложений, таких как HWInfo или CPU-Z на Windows.

После этого можно обратиться к общественному репозиторию на GitHub, например, "platomav/CPUMicrocodes", где для каждой модели процессора AMD регулярно обновляется информация о доступных версиях микрокода. В этом репозитории вы можете найти подразделение для микрокодов AMD, где указаны версия микрокода, дата его выпуска и некоторые другие параметры.

Например, для процессора с CPUID "00870F10" может существовать одна или несколько актуальных версий микрокода, которые лучше всего подходят для использования с учетом последних исправлений и обновлений. В частности, для устранения уязвимости "Zenbleed" требуется микрокод с определенной версией, информацию о которой также можно найти в репозитории.

Применение

После того, как вы найдете нужную версию микрокода в репозитории, его необходимо интегрировать в вашу систему. Существует несколько подходов как автоматизировать этот процесс на уровне системы, однако для Linux системы обычно используются такие инструменты как amd-ucodegen и amd_ucode_info. Эти инструменты помогают преобразовать сырой микрокод в файл, который может быть применен операционной системой.

На практике это означает последовательную интеграцию обновленного микрокода в системный загрузчик и последующее обновление ядра Linux. Например, обновление файлов в директории /usr/lib/firmware/amd-ucode/ позволит загрузить новый микрокод при следующей инициализации системы.

После обновления микрокода важно провести тестирование системы для оценки производительности и убедиться, что обновление действительно улучшило работу процессора. В некоторых случаях, как показали менее оптимистичные результаты одного из тестов упомянутого ранее блога, производительность после обновления может снизиться, что указывает на необходимость предварительной оценки и возможного отката обновлений в случае негативного влияния.

Вывод

Таким образом, поиск и обновление микрокода AMD — это комплексный процесс, требующий внимания к техническим деталям и использования сторонних ресурсов. Несмотря на некоторые сложности, возможность самостоятельного управления микрокодом открывает перспективы по улучшению безопасности и производительности системы, особенно в условиях ограниченной поддержки на уровне официальных каналов AMD. Это важно для IT-специалистов, ответственных за эксплуатацию и обслуживание высокопроизводительных систем обработки данных.

Оцените материал
Добавить комментарий

Капча загружается...