Что такое микрокод процессора. Как обновить микрокод на процессорах Intel и AMD. Какое влияние оказывают обновления микрокода на безопасность и производительность. Какие методы загрузки микрокода существуют. Как настроить раннюю загрузку микрокода в разных загрузчиках.
Что такое микрокод процессора и зачем его обновлять
Микрокод процессора — это низкоуровневые инструкции, встроенные в сам процессор, которые управляют его работой. Обновления микрокода выпускаются производителями для устранения ошибок, повышения стабильности и безопасности работы процессоров.
Обновление микрокода крайне важно по нескольким причинам:
- Исправляет критические ошибки в работе процессора
- Устраняет уязвимости безопасности, такие как Spectre и Meltdown
- Повышает стабильность и производительность системы
- Обеспечивает совместимость с новым программным обеспечением
Без актуального микрокода возможны случайные сбои, зависания и другие проблемы, которые сложно диагностировать. Поэтому рекомендуется всегда устанавливать последние обновления микрокода для процессоров AMD и Intel.
Способы обновления микрокода процессора
Существует несколько основных способов обновления микрокода процессора:
1. Через BIOS/UEFI
Самый простой способ — обновление BIOS/UEFI материнской платы. Производители включают актуальный микрокод в новые версии прошивок. Однако для старых систем обновления могут быть недоступны.
2. Через операционную систему
Современные ОС, включая Linux и Windows, позволяют обновлять микрокод «на лету» во время загрузки. Для этого используются специальные драйверы и файлы обновлений.
3. Встраивание в ядро
В Linux возможно встроить актуальный микрокод прямо в ядро операционной системы при его компиляции. Это обеспечивает самое раннее применение обновлений.
Методы загрузки микрокода в Linux
В ядре Linux реализовано несколько методов загрузки и применения обновлений микрокода:
1. Встроенный микрокод
Микрокод компилируется прямо в ядро и применяется на самых ранних этапах загрузки. Это самый надежный, но не самый гибкий метод.
2. Ранняя загрузка
Микрокод загружается до инициализации основной файловой системы, на этапе initramfs. Это позволяет применить обновления до запуска большинства компонентов системы.
3. Поздняя загрузка
Микрокод загружается уже после полной инициализации системы. Этот метод менее предпочтителен, так как некоторые компоненты могут начать работу с устаревшим микрокодом.
Настройка ранней загрузки микрокода
Рассмотрим, как настроить раннюю загрузку микрокода в различных загрузчиках Linux:
GRUB
В GRUB достаточно переконфигурировать загрузчик после установки пакета микрокода:
sudo grub-mkconfig -o /boot/grub/grub.cfg
systemd-boot
В конфигурацию загрузки нужно добавить строку для загрузки микрокода:
initrd /cpu_manufacturer-ucode.img
rEFInd
В файл refind_linux.conf добавляется параметр:
initrd=boot\cpu_manufacturer-ucode.img
Syslinux
В syslinux.cfg микрокод указывается перед основным initramfs:
INITRD ../cpu_manufacturer-ucode.img,../initramfs-linux.img
Правильная настройка ранней загрузки микрокода обеспечит максимальную стабильность и безопасность системы.
Влияние обновлений микрокода на производительность
Обновления микрокода могут оказывать различное влияние на производительность процессора:
- Устранение ошибок может повысить стабильность и скорость работы
- Патчи безопасности иногда снижают производительность в определенных задачах
- Оптимизации могут улучшить работу в некоторых сценариях
В целом, небольшое снижение производительности (до 5%) считается допустимой платой за повышение безопасности и стабильности. Однако в критичных к производительности системах необходимо тщательно тестировать влияние обновлений.
Особенности обновления микрокода для процессоров AMD и Intel
Процесс обновления микрокода имеет некоторые отличия для CPU от разных производителей:
AMD
- Пакет обновлений: amd-ucode
- Файл микрокода: /boot/amd-ucode.img
- Обновления выходят реже, чем у Intel
Intel
- Пакет обновлений: intel-ucode
- Файл микрокода: /boot/intel-ucode.img
- Более частые обновления, особенно для новых поколений CPU
Важно использовать пакет обновлений, соответствующий конкретной модели процессора в системе.
Проверка текущей версии микрокода
Для проверки актуальности установленного микрокода можно использовать следующие методы:
Через /proc/cpuinfo
Выполните команду:
grep -e microcode /proc/cpuinfo
Она покажет текущую версию микрокода для каждого ядра процессора.
С помощью утилиты dmesg
Команда выведет информацию о загрузке микрокода:
dmesg | grep -i microcode
Регулярная проверка и обновление микрокода — важная часть обслуживания системы, обеспечивающая ее стабильность и безопасность.
KB4093836: сводка обновлений Intel Microcode
Windows 10, version 1607, all editions Windows 10, version 1703, all editions Windows 10, version 1709, all editions Windows Server version 1803 Windows 10, version 1803, all editions Windows 10, version 1809, all editions Windows 10 Pro, version 20h3 Windows 10, version 21h2, all editions Windows 10, version 21h3, all editions Windows 11 Windows Server 2016 Windows Server 2019, all editions Windows Server 2022 Azure Stack Edge Azure Stack HCI Azure Stack Hub Еще…Меньше
Обновления микрокодов Intel
Последняя уязвимость
Номер базы знаний и описание |
Windows версии |
Источник |
---|---|---|
ADV220002 |
Windows 11, Windows 10, Windows 8. 1, Windows Server 2022, Windows Server 2019, Windows Server 2016 |
Ознакомьтесь с выпуском микрокода OEM/Intel Firmware, который необходимо обновить для устранения рисков |
Прошлые уязвимости
Корпорация Майкрософт делает доступными проверенные Intel обновления микрокодов, связанные с Spectre Variant 2 (CVE-2017-5715 | Внедрение целевого объекта ветви).
В следующей таблице перечислены конкретные статьи базы знаний Майкрософт по Windows версии. В этих статьях содержатся ссылки на доступные обновления микрокодов Intel по ЦП:
Номер базы знаний и описание |
Windows версии |
Источник |
KB4100347: обновления Intel Microcode |
Windows 10 версии 1803 и Windows Server версии 1803 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4090007: обновления Intel Microcode |
Windows 10 версии 1709 и Windows Server 2016 версии 1709 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4091663: обновления Intel Microcode |
Windows 10 версии 1703 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4091664: обновления Intel Microcode |
Windows 10 версии 1607 и Windows Server 2016 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4091666: обновления Intel Microcode |
Windows 10 (RTM) |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
Корпорация Майкрософт делает доступными проверенные Intel обновления микрокодов, связанные с Spectre Variant 3a (CVE-2018-3640 | Rogue System Register Read (RSRE)), Spectre Variant 4 (CVE-2018-3639 | Обход спекулятивного хранилища (SSB) и L1TF (CVE-2018-3620 и CVE-2018-3646 | Ошибка терминала L1).
В следующей таблице перечислены конкретные статьи базы знаний Майкрософт по Windows версии. В этой статье содержатся ссылки на доступные обновления микрокодов Intel по ЦП.
Номер базы знаний и описание |
Windows версии |
Источник |
KB4465065: обновления микрокодов Intel |
Windows 10, версия 1809, Windows Server 2019 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4346084: обновления микрокодов Intel |
Windows 10 версии 1803 и Windows Server версии 1803 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4346085: обновления микрокодов Intel |
Windows 10 версии 1709 и Windows Server 2016 версии 1709 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4346086: обновления микрокодов Intel |
Windows 10 версии 1703 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4346087: обновления микрокодов Intel |
Windows 10 версии 1607 и Windows Server 2016 |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
KB4346088: обновления микрокодов Intel |
Windows 10 (RTM) |
клиентский компонент Центра обновления Windows, Windows server Update Service и Каталог Центра обновления Майкрософт |
Корпорация Майкрософт создает доступные обновления микрокодов, проверенные Intel, связанные с микроархитектекстальной выборкой данных (CVE-2019-11091, CVE-2018-12126, CVE-2018-12127, CVE-2018-12130).
В следующей таблице перечислены конкретные статьи базы знаний Майкрософт по Windows версии. В статьях содержатся ссылки на доступные обновления микрокодов Intel по ЦП.
Дополнительная информация
Мы предложим дополнительные обновления микрокодов, проверенные Intel, для Windows, когда они станут доступны корпорации Майкрософт, и обновим эти статьи соответствующим образом.
Клиенты должны обращаться к сведениям от Intel и изготовителя устройства о доступности применимых обновлений безопасности встроенного ПО для конкретного устройства, включая следующие:
-
Руководство по редакции Intel Microcode (2 апреля 2018 г.)
org/ListItem»>
-
Руководство по редакции Intel Microcode (14 мая 2019 г.)
-
Руководство по редакции Микрокода Intel (14 июня 2022 г.)
Руководство по редакции Микрокода Intel (8 августа 2018 г.)
Мы предоставляем контактные данные сторонних разработчиков, которые помогут вам найти техническую поддержку. Эти данные могут быть изменены без предварительного уведомления. Мы не гарантируем точность этих контактных данных сторонних разработчиков.
Обновление microcode доступно для компьютеров на базе Windows 7 и Windows 8 с процессорами AMD.
Windows 8 Windows 8 Enterprise Windows 8 Pro Windows 7 Enterprise Windows 7 Home Premium Windows 7 Professional Windows 7 Starter Windows 7 Ultimate Windows Server 2012 Datacenter Windows Server 2012 Essentials Windows Server 2012 Foundation Windows Server 2012 Standard Еще…Меньше
Аннотация
В этой статье описано обновление микрокода для Windows 7 и Windows 8, которое обновляет микрокод процессора для следующих процессоров AMD:
-
Процессор AMD C-Series с изображениями AMD Radeon HD
-
Процессор AMD C-Series Dual-Core с hd-графикой AMD Radeon
org/ListItem»>
-
Процессор E-ряда AMD с рисунками AMD Radeon HD
-
Процессор AMD E-Series Dual-Core с hd-графикой AMD Radeon
-
Процессор AMD G-Series с изображениями AMD Radeon HD
-
AmD G-Series Dual-Core процессора AMD Radeon HD Graphics
-
AmD Z-Series Dual-Core процессора AMD Radeon HD Graphics
Процессор Dual-Core AMD E-series
Дополнительная информация
Обновление поддерживается на всех компьютерах под Windows 8 Windows 7. Однако обновление microcode действует только на компьютерах с процессором AMD Family 0x14 (20). Чтобы определить, использует ли компьютер этот процессор, выполните следующие действия:
-
На компьютере нажмите клавиши Windows и X, а затем выберите диспетчер устройств.
-
В диспетчере устройствразорите процессоры.
-
Дважды щелкните процессор и перейдите на вкладку «Сведения».
-
ln the drop-down list, click to select Hardware Ids.
-
Проверьте сведения в области сведений, чтобы определить, использует ли компьютер процессор AMD 0x14 (20).
Сведения об обновлении
Чтобы установить обновление, перейдите в раздел»Исправить это для меня». Если вы хотите самостоятельно установить обновление, перейдите в раздел»Самостоятельноерешение проблемы».
Помощь в решении проблемы
Чтобы установить обновление, нажмите кнопку «Исправить» или ссылку. Затем в диалоговом окне «Загрузка файла» нажмите кнопку «Выполнить» и следуйте шагам мастера fix it.
- org/ListItem»>
-
Решения по устранению проблем можно скачать на любой компьютер, а затем сохранить их на устройство флэш-памяти или компакт-диск и запустить на нужном компьютере.
-
Мы ценим ваши замечания. Чтобы оставить отзыв или сообщить о проблемах с этим решением, оставьте комментарий в блоге«Fix it for me»или отправьте нам сообщение электронной почты.
Мастер может быть доступен только на английском языке. При этом автоматическое исправление подходит для любых языковых версий Windows.
Как получить обновление, доступное в Обновлении Windows.
Примечания
- org/ListItem»>
-
Это обновление опубликовано в Обновлении Windows как критическое обновление для компьютеров, на компьютерах с процессором amD family 0x14 (20) процессором модели 2.
-
Если вы выберете автоматическое (рекомендуемое) обновление Windows, это обновление будет установлено автоматически.
-
Если вы установили другое обновление Windows, настоятельно рекомендуем вам сразу установить это обновление через Windows Update.
Это обновление публикуется в Windows как важное обновление для компьютеров с процессором AMD Family 014 (20) модели 1.
Вы можете получить автономный пакет обновления через Центр загрузки Майкрософт:скачайте пакет Обновления для
Windows Server 2012 (KB2818604) прямо сейчас.
Для получения дополнительных сведений о скачии файлов службы поддержки Майкрософт щелкните номер следующей статьи, чтобы просмотреть статью в базе знаний Майкрософт:
119591 Как получить файлы поддержки Майкрософт от веб-служб, которые корпорация Майкрософт проверяла этот файл на вирусы. Корпорация Майкрософт использует самые последние на момент публикации файла версии антивирусного программного обеспечения. Файл хранится на защищенных серверах, что предотвращает его несанкционированное изменение.
Необходимо применить это обновление только к Windows 7 или Windows 8.
После применения этого обновления необходимо перезагрузить компьютер.
Обновление сведений об обновлении не заменяет другие обновления.
Microcode — ArchWiki
Производители процессоров выпускают обновления стабильности и безопасности для микрокода процессора. Эти обновления содержат исправления ошибок, которые могут иметь решающее значение для стабильности вашей системы. Без них вы можете столкнуться с ложными сбоями или неожиданными остановками системы, которые будет трудно отследить.
Всем пользователям процессоров AMD или Intel следует установить обновления микрокода, чтобы обеспечить стабильность системы. В виртуальных машинах и контейнерах обновления микрокода принадлежат хосту, а не гостевой системе.
Загрузка микрокода
Обновления микрокода обычно поставляются с прошивкой материнской платы и применяются во время инициализации прошивки. Поскольку OEM-производители могут не выпускать обновления прошивки своевременно, а старые системы вообще не получают новых обновлений прошивки, в ядро Linux была добавлена возможность применять обновления микрокода ЦП во время загрузки. Загрузчик микрокода Linux поддерживает три метода загрузки:
- Встроенный микрокод может быть скомпилирован в ядро и затем применен ранним загрузчиком.
- Ранняя загрузка обновляет микрокод очень рано во время загрузки, до стадии initramfs, и предпочтительнее поздней загрузки. Это обязательно для процессоров с серьезными аппаратными ошибками, таких как семейства процессоров Intel Haswell и Broadwell.
- Поздняя загрузка ( опасный ) обновляет микрокод после загрузки, что может быть слишком поздно, поскольку ЦП, возможно, уже пытался использовать ошибочный набор инструкций. Даже если ранняя загрузка уже используется, позднюю загрузку все равно можно использовать для применения более нового обновления микрокода без необходимости перезагрузки.
Для получения обновленного микрокода, в зависимости от процессора, установите один из следующих пакетов:
- amd-ucode для процессоров AMD,
- intel-ucode для процессоров Intel.
Микрокод, встроенный в initramfs
Эта статья или раздел нуждается в дополнении.
Причина:
- Это должно иметь изменение в структуре, разделяющее унифицированные образы ядра, такие как выходные данные dracut или вручную/«добровольно» созданные один и другой образ, такие как конфигурация по умолчанию Booster или mkinitcpio.
- Введение не распространяется на этот раздел.
(Обсудить в Talk:Microcode)
Можно добавить cpio микрокода в initramfs. Некоторые генераторы initramfs, такие как dracut (см. dracut.conf(5) §DESCRIPTION), делают это по умолчанию. Это делает ненужными #Раннюю загрузку и #Позднюю загрузку. Однако Arch Linux по умолчанию использует mkinitcpio для создания своего начального виртуального диска (initramfs), который не поддерживает это. Однако он поддерживает загрузку микрокода через заглушку UEFI: см. #Унифицированные образы ядра.
Ранняя загрузка
Если микрокод не скомпилирован в ядро, он должен быть загружен ранним загрузчиком. Он может быть передан загрузчику как часть единого образа ядра или как образ initrd вашим загрузчиком.
Обратите внимание, что из-за большого разнообразия пользовательских конфигураций ранней загрузки обновления микрокода могут не запускаться автоматически в конфигурации Arch по умолчанию.
Унифицированные образы ядра
См. Унифицированные образы ядра для получения инструкций по включению микрокода в однофайловые образы.
Образы Initrd
В противном случае обновления микрокода должны быть включены путем добавления /boot/amd-ucode.img
или /boot/intel-ucode.img
в качестве первого initrd в файле конфигурации загрузчика . Это перед обычным файлом initrd. Ниже приведены инструкции для распространенных загрузчиков.
В следующих разделах замените cpu_manufacturer
на производителя вашего ЦП, т. е. amd
или intel
.
Совет: Для Arch Linux на съемном диске, который может работать на любом из этих процессоров, установите оба пакета и добавьте оба файла микрокода как initrd
в конфигурацию загрузчика. Их порядок не имеет значения, если они оба указаны перед образом initramfs.
Включение ранней загрузки микрокода в пользовательских ядрах
Чтобы ранняя загрузка работала в пользовательских ядрах, в ядро необходимо скомпилировать «поддержку загрузки микрокода ЦП», , а не , скомпилированный как модуль. Это активирует подсказку «Ранняя загрузка микрокода», которая должна быть установлена на Y
.
КОНФИГУРАЦИЯ_BLK_DEV_INITRD=Д CONFIG_MICROCODE=y CONFIG_MICROCODE_INTEL=Д CONFIG_MICROCODE_AMD=y
GRUB
grub-mkconfig автоматически обнаружит обновление микрокода и соответствующим образом настроит GRUB. После установки пакета микрокода заново создайте конфигурацию GRUB, чтобы активировать загрузку обновления микрокода, выполнив:
# grub-mkconfig -o /boot/grub/grub. cfg
Кроме того, пользователи, которые управляют своим файлом конфигурации GRUB вручную, могут добавить /boot/ cpu_manufacturer -ucode.img
(или / cpu_manufacturer -ucode.img
, если /boot
) следующим образом: :
/boot/grub/grub.cfg
... echo 'Загружается начальный виртуальный диск' initrd /boot/ cpu_manufacturer -ucode.img /boot/initramfs-linux.img ...
Повторите это для каждого пункта меню.
systemd-boot
Используйте параметр initrd
для загрузки микрокода перед начальным виртуальным диском следующим образом:
/boot/loader/entries/ запись .conf
заголовок Arch Linux линукс /vmlinuz-линукс initrd / cpu_manufacturer -ucode.img initrd /initramfs-linux.img ...
Последний микрокод cpu_manufacturer -ucode.img
должен быть доступен во время загрузки в системном разделе EFI (ESP). ESP должен быть установлен как /boot
, чтобы микрокод обновлялся каждый раз при обновлении amd-ucode или intel-ucode. В противном случае копируйте /boot/ cpu_manufacturer -ucode.img
в свой ESP при каждом обновлении пакета микрокода.
EFISTUB
Добавьте две опции initrd=
:
initrd=\ cpu_manufacturer -ucode.img initrd=\initramfs-linux.img
rEFInd
Изменить параметры загрузки в /boot/refind_linux.conf
и добавьте initrd=boot\ cpu_manufacturer -ucode.img
(или initrd= cpu_manufacturer -ucode.img
, если /boot
— это отдельный раздел) в качестве первого initramfs. Например:
"Загрузка с параметрами по умолчанию" "root=PARTUUID= XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw add_efi_memmap initrd=boot\ cpu_manufacturer -ucode.img initrd=boot\initramfs-"
Совет: Пользователи, которые ранее не указали 9Для параметра ядра 0067 initrd необходимо выполнить шаги, описанные в rEFInd#Configuration, чтобы разрешить передачу нескольких параметров initrd
.
Пользователи, использующие руководство по строке в ESP /FI/REFIND/REFIND.CONF
для определения ядер должны просто добавить initrd = Boot \ CPU_MANULUCHERURER -UCODE.IMGG
(или initrd = 677 -IMMANERURE. .img
если /boot
это отдельный раздел) как требуется в строке опций, а не в основной части строфы. Например.:
options "root=PARTUUID= XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw add_efi_memmap initrd=boot\ cpu_manufacturer -ucode.img "
Syslinux
Примечание: Между файлами cpu_manufacturer -ucode.img
и initramfs-linux.img
initrd не должно быть пробелов. Строка INITRD
должна быть точно такой, как показано ниже.
Несколько initrd могут быть разделены запятыми в /загрузка/syslinux/syslinux.cfg
:
ЭТИКЕТКА арка МЕНЮ ЭТИКЕТКА Arch Linux ЛИНУКС . ./vmlinuz-линукс INITRD ../ производитель_процессора -ucode.img ,../initramfs-linux.img ...
LILO
LILO и потенциально другие старые загрузчики не поддерживают несколько образов initrd. В этом случае cpu_manufacturer -ucode.img
и initramfs-linux.img
придется объединить в один образ.
Предупреждение: Объединенный образ необходимо пересоздавать после каждого обновления ядра!
Примечание: Порядок важен. Исходный образ initramfs-linux.img
необходимо разместить после cpu_manufacturer -ucode.img
в полученном образе.
Чтобы объединить оба образа в один образ с именем initramfs-merged.img
, можно использовать следующую команду:
# cat /boot/ cpu_manufacturer -ucode.img /boot/initramfs-linux.img > /boot/initramfs-merged.img
Теперь отредактируйте /etc/lilo. conf
, чтобы загрузить новый образ.
... initrd=/boot/initramfs-merged.img ...
И запустите lilo
от имени пользователя root:
# лило
Limine
Для Limine вам просто нужно будет добавить путь к микрокоду через опцию MODULE_PATH
в вашем файле limine.cfg. Вот пример:
limine.cfg
DEFAULT_ENTRY=1 ТАЙМ-АУТ=3 : Арка КОММЕНТАРИЙ=Арх Linux ПРОТОКОЛ=линукс KERNEL_PATH=boot:///vmlinuz-linux CMDLINE = корень = UUID = c0748521-eca9-4f38-989c-43811b6e39a1 rw лог-уровень=3 MODULE_PATH=boot:/// cpu_manufacturer-ucode .img MODULE_PATH=boot:///initramfs-linux.img
Поздняя загрузка
Предупреждение: Поздняя загрузка микрокода считается опасной, ее использование в Linux 5.19 испортит ядро.[1]
Поздняя загрузка обновлений микрокода происходит после загрузки системы. Он использует файлы в /usr/lib/firmware/amd-ucode/
и /usr/lib/firmware/intel-ucode/9. 0068 . В Linux 5.19+ для поздней загрузки требуется, чтобы ядро было собрано с параметром
CONFIG_MICROCODE_LATE_LOADING=y
.
Для процессоров AMD файлы обновления микрокода предоставляются linux-прошивкой.
Для процессоров Intel ни один пакет не предоставляет файлы обновления микрокода (FS#59841). Чтобы использовать позднюю загрузку, вам необходимо вручную извлечь intel-ucode/
из предоставленного Intel архива.
Включение поздних обновлений микрокода
В отличие от ранней загрузки, поздняя загрузка обновлений микрокода в Arch Linux включена по умолчанию с помощью /usr/lib/tmpfiles.d/linux-firmware.conf
. После загрузки файл анализируется systemd-tmpfiles-setup.service(8) и микрокод процессора обновляется.
Чтобы перезагрузить микрокод вручную, например. после обновления файлов микрокода в /usr/lib/firmware/amd-ucode/
или /usr/lib/firmware/intel-ucode/
запустите:
# эхо 1 > /sys/devices/system/cpu/microcode/reload
Позволяет применять новые обновления микрокода без перезагрузки системы.
Отключение поздних обновлений микрокода
Для систем AMD микрокод ЦП будет обновляться, даже если amd-ucode не установлен, поскольку файлы в /usr/lib/firmware/amd-ucode/
предоставляются пакетом linux-firmware (ФС № 59840).
Для виртуальных машин и контейнеров (FS#46591) невозможно обновить микрокод ЦП, поэтому вы можете отключить обновления микрокода.
Чтобы отключить опасные поздние обновления микрокода, переопределите tmpfile /usr/lib/tmpfiles.d/linux-firmware.conf
, который предоставляется linux-firmware. Это можно сделать, создав файл с таким же именем в /etc/tmpfiles.d/
:
# ln -s /dev/null /etc/tmpfiles.d/linux-firmware.conf
Проверка обновления микрокода при загрузке
Проверьте сообщения ядра с помощью journalctl , чтобы узнать, был ли обновлен микрокод:
# журналctl -k --grep=микрокод
В системах Intel при каждой загрузке должно появляться что-то похожее на следующее, что указывает на то, что микрокод обновляется очень рано:
микрокод: микрокод обновлен до версии 0xde, дата = 2020-05-18 микрокод: sig=0x806ec, pf=0x80, ревизия=0xde микрокод: Драйвер обновления микрокода: v2. 2.
Примечание: Отображаемая дата не соответствует версии установленного пакета intel-ucode. Он показывает, когда Intel в последний раз обновляла микрокод, соответствующий конкретному обновляемому оборудованию.
Вполне возможно, особенно на более новом оборудовании, что обновление микрокода для ЦП отсутствует. В этом случае вывод может выглядеть так:
микрокод: sig=0x806ec, pf=0x80, версия=0xde микрокод: Драйвер обновления микрокода: v2.2.
В системах AMD, использующих раннюю загрузку, вывод будет выглядеть примерно так:
микрокод: микрокод обновлен до нового patch_level = 0x0700010f микрокод: CPU0: patch_level=0x0700010f микрокод: CPU1: patch_level=0x0700010f микрокод: CPU2: patch_level=0x0700010f микрокод: CPU3: patch_level=0x0700010f микрокод: Драйвер обновления микрокода: v2.2.
В системах AMD, использующих позднюю загрузку, вывод покажет версию старого микрокода до перезагрузки микрокода и новую после перезагрузки. Это будет выглядеть примерно так:
микрокод: CPU0: patch_level=0x0700010b микрокод: CPU1: patch_level=0x0700010b микрокод: CPU2: patch_level=0x0700010b микрокод: CPU3: patch_level=0x0700010b микрокод: Драйвер обновления микрокода: v2.2. микрокод: CPU2: новый patch_level=0x0700010f микрокод: CPU0: новый patch_level=0x0700010f микрокод: CPU1: новый patch_level=0x0700010f микрокод: CPU3: новый patch_level=0x0700010f x86/ЦП: функции ЦП изменились после загрузки микрокода, но могут не вступить в силу.
Какие процессоры принимают обновления микрокода
Пользователи могут посетить собственный веб-сайт Intel или вики Gentoo на AMD по следующим ссылкам, чтобы узнать, поддерживается ли конкретная модель:
- Gentoo:микрокод AMD#Только для конкретной прошивки.
- Центр загрузки Intel.
Обнаружение доступного обновления микрокода
Узнать, содержит ли intel-ucode.img
образ микрокода работающего ЦП, можно с помощью iucode-tool.
- Установить intel-ucode (изменение initrd для обнаружения не требуется)
- Установить iucode-инструмент
- Загрузите модуль ядра
cpuid
:# modprobe cpuid
- Извлеките образ микрокода и найдите в нем свой cpuid:
# bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS -
- Если обновление доступно, оно должно отображаться ниже выбранных микрокодов
- Возможно, микрокод уже есть в BIOS вашего поставщика и не отображается при загрузке в dmesg . Сравните с текущим микрокодом, работающим
микрокод grep /proc/cpuinfo
См. также
- Обновление микрокодов – опыт сообщества
- Примечания к обновлениям микрокода Intel — Бен Хоукс
- Загрузчик микрокода ядра — документация ядра
- Обнаружена опечатка в Haswell/Broadwell – AnandTech
- iucode-tool GitLab project
терминология - Что такое микрокод и чем он отличается от прошивки?
[Примечание: этот ответ специально предназначен для рассмотрения недавнего редактирования и не добавляет иным образом несколько надежных ответов, которые уже были опубликованы. ]
Итак, повторюсь: микрокод (по крайней мере в первом приближении) это специфический вид прошивки.
«Микрокод» в данном контексте является просто маркетингом по сравнению с «прошивкой процессора».
Ну это не маркетинг. Маркетинг назвал бы его XBoost Pro(TM) или что-то в этом роде. Скорее, это инженерный термин; если вы проектируете ЦП, для вас важно различие между микрокодом и другой прошивкой ЦП (и типом прошивки, типичной для других устройств). Если нет, то, вероятно, нет.
Если вы проектируете материнские платы или пишете операционные системы, вы, вероятно, используете «обновление микрокода» в качестве сокращения для более громоздкого и менее знакомого «обновления прошивки ЦП». Большинство обновлений прошивки процессора в первую очередь затрагивают микрокод, так что это достаточно близко к тому же самому. Вы, наверное, знаете разницу, но вам плевать на это.
Конечному пользователю не нужно знать или заботиться о разнице, и в идеальном мире он вообще никогда не услышит слово «микрокод».
Я предполагаю, что это привлекло ваше внимание при освещении в прессе недавних уязвимостей спекулятивного исполнения, хотя вы могли также слышать это ранее в контексте, который сделал более очевидным, что вам не нужно беспокоиться. Эти уязвимости были выпущены раньше, чем планировалось, что могло привести к тому, что освещение в прессе было менее тщательным, чем могло бы быть в противном случае. С точки зрения конечного пользователя вам необходимо установить обновления BIOS, обновления операционной системы и, в некоторых случаях, обновления приложений; вам не нужно ни знать, ни заботиться о том, какие из них содержат новый микрокод.
Итак, даже понимая, что вам, вероятно, не нужно знать или заботиться, вы все равно можете заинтересоваться из чистого любопытства: как вы можете отличить микрокод от других прошивок?
Итак, первое, что нужно признать, это то, что не обязательно существует одно точное и быстрое определение, это скорее ситуация Блеггса и Рубса. Тем не менее, есть некоторые вещи, которые мы можем сказать о микрокоде:
Микрокод обычно работает внутри ЦП, а не на ЦП. Это точка зрения высокого уровня.
Архитектура микрокода обычно сильно отличается от архитектуры обычного кода, включая обычное микропрограммное обеспечение. Скорее всего, он будет очень параллельным и будет реализован гораздо ближе к аппаратному обеспечению. Это обсуждается в нескольких существующих ответах (включая ваш собственный ответ), хотя следует отметить, что детали могут различаться в зависимости от конструкции ЦП.
Хотя аппаратное обеспечение часто предназначено для работы только с прошивкой, предоставленной производителем, нередко используется сторонняя прошивка - хотя это, вероятно, приведет к аннулированию гарантии! Сторонний микрокод встречается гораздо реже, хотя я считаю, что в древние времена (я говорю о том, когда ЦП был размером с хлебницу) некоторые конечные пользователи модифицировали микрокод в своих ЦП. Насколько мне известно, это невозможно в процессорах, используемых в ПК.
Микрокод обычно транслирует или помогает реализовать архитектуру общедоступного набора инструкций, т. е. он запускает машинный код, который используют разработчик операционной системы и программисты приложений. Подробнее об этом в следующем разделе.
«Выполнение против данных» во многих ответах используется эта парадигма
Боюсь, разными способами, но я обращусь к своему собственному комментарию. Этот раздел также служит для расширения последнего пункта списка выше. Цель здесь состоит в том, чтобы попытаться провести различие между работой, которую выполняет ЦП (достигаемой комбинацией аппаратного обеспечения и микрокода), и работой, которую выполняет обычное устройство (достигаемой комбинацией аппаратного обеспечения и прошивки). Я собираюсь выбрать жесткий диск SATA.
Диск SATA следует инструкциям компьютера, которые заключаются в следующем: «прочитать данные из сектора 5123» и «записать эти данные в сектор 1321». Прошивка накопителя отвечает за то, чтобы аппаратное обеспечение делало это возможным, и обычно это довольно обычный код, работающий на каком-то встроенном процессоре. Инструкции привода поступают последовательно, хотя они могут не обрабатываться в том порядке, в котором они поступают. Эти инструкции не являются программой, они отправлены программой, работающей на основном ЦП. В частности, отсутствует поток управления, т. Е. Нет инструкции, сообщающей диску SATA, какие инструкции выполнять дальше.
Центральный процессор отвечает за компьютер. После завершения инициализации он выполняет инструкции («машинный код»), предоставленные материнской платой (BIOS, другой тип прошивки), которые предписывают ему запустить машинный код, предоставленный операционной системой, которая предписывает ему запустить предоставленный машинный код. поставщиками приложений. Сам ЦП извлекает машинный код из EEPROM (в случае BIOS) или RAM (в случае операционной системы и приложений). В частности, машинный код имеет поток управления: машинный код сообщает ЦП, какой машинный код выполнять дальше. Вы можете многократно повторять один и тот же машинный код, вы можете запускать разные фрагменты кода в зависимости от данных, над которыми работает код — инструкции на языке интерфейса устройства, таком как код SATA, могут выполнять ограниченный набор простых задач, но машинный код может сделать что угодно . (См. также Полнота по Тьюрингу.)
Мы могли бы переписать этот последний пункт выше так: микрокод обычно реализует язык, полный по Тьюрингу; обычная прошивка обычно не работает.
Что означает фраза «аппаратные инструкции интерпретируются» с помощью микрокода.
Верно, но, вероятно, сбивает с толку; важным моментом является различие между машинным кодом, который имеет поток управления и является завершенным по Тьюрингу, и инструкциями, определенными интерфейсом устройства, таким как SATA, который не имеет и не является.
Применяется ли «микрокод» к коду, работающему на звуковых картах
Нет, звуковые карты получают инструкции, а не код, как и диски SATA. Инструкции могут быть такими, как «играть ля-диез» или «интерпретировать эти данные как форму волны и воспроизвести их». Еще очень просто.
и видеокарты (GPU)?
Старомодные видеокарты (без графических процессоров) аналогичны дискам SATA. Инструкции похожи на «установить этот пиксель в этот цвет» или «написать A в этой позиции».
... Графические процессоры сложны и находятся где-то между двумя мирами, которые я попытался описать выше. Вероятно, проще всего думать о них как о специализированном компьютере, расположенном внутри основного компьютера, который имеет свои собственные процессоры. Это правда, что такие устройства, как диски SATA, также имеют встроенные ЦП, но разница в том, что встроенный ЦП в диске SATA выполняет только код, предоставленный производителем диска, тогда как графические процессоры также запускают код, предоставленный операционной системой и/или поставщиком приложений. На самом деле это вообще отдельный вопрос.