Надо ли обновлять микрокод процессора. Совершенно альтернативный способ обновления микрокодов

Не для кого не секрет, что процессор представляет собой автомат с микропрограммным управлением. И любая его инструкция является совокупностью микрокоманд, прошитых в ПЗУ процессора при его изготовлении. Ошибки микрокода и схемные погрешности (errata), допущенные при проектировании, могут вызывать отклонения от спецификаций процессора и ошибкам в его работе. При выпуске процессора обычно публикуются его спецификация и список обнаруженных errata.

Все процессоры Intel с архитектурой P6, а к ним относятся семейства Pentium Pro, Pentium II & III, Celeron, Pentium II & III Xeon и Pentium II Overdrive, обладают таким замечательным свойством, как "reprogrammable microcode". В этих процессорах имеется возможность изменения микрокода, т.е. имеется возможность исправления ошибок в программно-схемотехнической реализации конкретных процессоров семейства P6 и некоторых встроенных ошибок практически на уровне "железа". Ошибки могут появляться на этапе проектирования процессоров, а исправляются они именно с помощью изменения микрокода. Каждое из подсемейств (PII, Celeron, PPro, Xeon) имеет спецификацию. При выпуске каждого нового степпинга процессора (внутри него все приборы являются идентичными в рамках технологических отклонений), Intel публикует для него обновление спецификации, где указываются обнаруженные и исправленные errata (отклонения от спецификации).

Ошибки эти могут, в принципе, осложнить жизнь программному обеспечению, которое работает на этих "дефектных" процессорах (и пользователю;-)) .

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

Кстати, поддержка биосами вновь вышедших процессоров определяется, в частности, и наличием соответствующей прошивки. Например, когда появился первый Celeron, именно отсутствие соответствующей версии микрокода не позволяло корректно запустить систему с этим процессором.

Сами обновления микрокода - это 2-хкилобайтные блоки данных, прошитые в системном BIOS. Такой блок есть для каждого степпинга процессора из семейства P6. Intel поставляет свежие версии микрокода ведущим производителям BIOS. База данных с обновлениями пополняется и изменяется при появлении новых моделей и версий микрокода. Intel рекомендует выполнять обновление версий микрокода с помощью своей утилиты при установке нового процессора на материнскую плату или перепрограммирования флэш-памяти, чтобы быть уверенным, что в BIOS содержится самая свежая версия микрокода. Эта программа определяет используемый процессор (с помощью CPUID) и ищет соответствующее ему обновление в своей базе. Если найдена свежая версия микрокода, утилита локально перепрошивает код в BIOS, не затрагивая остальные участки. Т.о. отпадает необходимость перепрограммирования всего флэша для поддержки нового ЦПУ, как это было ранее. Обновление базы данных Intel периодически выкладывает на своем сайте.

Последняяи из доступных нам баз имеет ревизию 5.01 и содержит следующие версии микрокода:

Processor Processor Stepping Microcode Update Rev
Pentium III Processor 0x672 0x04
Pentium III Processor 0x673 0x02
Pentium III Xeon Processor 0x672 0x21
Pentium III Xeon Processor 0x673 0x22
Pentium II Processor 0x633 0x34
Pentium II Processor 0x634 0x35
Pentium II Processor 0x650 0x32
Pentium II Processor 0x651 0x30
Pentium II Processor 0x652 0x14
Pentium II Processor 0x653 0x01
Pentium II Xeon Processor 0x652 0x29
Pentium II Xeon Processor 0x653 0x04
Intel Celeron Processor 0x650 0x32
Intel Celeron Processor 0x651 0x30
Intel Celeron Processor 0x660 0x09
Intel Celeron Processor 0x665 0x02
Pentium II OverDrive Processor x1632 0x02
Pentium Pro Processor 0x612 0xC6
Pentium Pro Processor 0x616 0xC6
Pentium Pro Processor 0x617 0xC6
Pentium Pro Processor 0x619 0xD2

Загрузить последнюю версию утилиты, исправляющую микрокод можно прямо отсюда: pupdt501.exe (115 Kb)

Старую базу (PEP15.PDB) можно загрузить отсюда: pupdt461.exe (111 Кб)

После окончания работы утилиты, необходимо выключить питание компьютера. Загрузка обновления в процессор происходит во время выполнения POST при каждом запуске системы. Естественно для работы утилиты необходимо разрешить перезапись флэш-памяти перемычкой или в BIOS Setup. Программа должна запускаться из-под "голого" ДОСа.

Однако для такого идеального варианта необходима поддержка BIOS"ом специального API обновления микрокода процессора, позволяющего утилите обновления с помощью BIOS загрузить новый микрокод. Если используемая версия системного BIOS не поддерживает API, пользователю ничего не остается, кроме как добыть новую версию у производителя материнской платы. Однако бывает, что найти её не так уж просто, если не невозможно. Зачастую, после прекращения производства какой-либо модели системной платы, производитель перестает выпускать и обновления биосов для нее, но при этом новые процессоры могут появиться в продаже, а у пользователя может возникнуть желание установить в свою систему новый CPU.

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

Возникает вопрос, а чем чревато самостоятельное обновление прошивки? Ну, во-первых, сначала нужно удостовериться, что вам это действительно необходимо. Если версия прошивки старая, а новых версий BIOS производитель системной платы не предлагает, но, главное, вы столкнулись с нестабильной работой какого-то приложения, и рассчитываете, что изменение микрокода процессора вам поможет. Только в этом случае имеет смысл самостоятельно изменить прошивку. А насчет того, чем это чревато - по-моему, ничем опасным. Во-первых, не стоит забывать, что загрузка обновления микрокода в процессор применяется во всех BIOS на платах для P6 и уже давно (многие видели в Setup загадочную опцию Microcode Update: Enable/Disable). И ничего! Все работает.

Это еще раз подчеркивает необходимость его использования. Кто знает, как бы обстояло дело без этого обновления! Отличие лишь в том, что раньше микрокод обновлялся с установкой новой версии флэша, а теперь можно перепрограммировать не все содержимое BIOS, а лишь ограниченный кусок.

Мой личный опыт работы с этой программой пока был ограничен 7 случаями, из которых удалось обновить микрокод только на одной системной плате (Abit LX6 c PII 233). В остальных случаях BIOS уже содержал обновленные версии микрокода. Также не удалось встретить BIOS, не поддерживающий обновление микрокода.

Что касается аналогичной возможности обновления микрокода в процессорах других производителей (AMD, Cyrix), то никакой информации по этому вопросу мне найти не удалось. Но я почти уверен, что в этих CPU имеется аналогичная возможность изменения микрокода.

Если чипсет и материнская плата LGA 775 теоретически могут поддерживать XEON 771, но родной BIOS не поддерживает его, а модифицированного нет — то можно модифицировать BIOS самостоятельно.

ВАЖНО

1. Все изменения в прошивке BIOS (.ROM файл обычно) Вы делаете на свой страх и риск. При ошибке из материнской платы получается гарантированный «кирпич»
2. Размер файла оригинальной прошивки и измененного варианта должны совпадать до байта.

3. Прошивка измененного файла BIOS обратно в микросхему выполняется только с помощью фирменной утилиты от разработчика материнской платы (необходимо скачать с сайта производителя).
4. В топовых материнских платах в самом BIOS есть встроенный модуль обновления прошивки (например, EZ Flash 2 utility для ASUS P5Q в разделе Tools) — самый лучший вариант.

Как лучше сделать:
1. Все-таки поискать в интернете готовый вариант с поддержкой XEON?
2. Скачать с официального сайта последнюю версию прошивки и добавить микрокоды?

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

Предварительно можно оценить наличие микрокодов XEON в прошивке BIOS.

— получаем текущий образ AMI BIOS через Universal BIOS Backup ToolKit 2.0
— смотрим содержимое полученного ROM-файла через AMIBCP V 3.37

Вариант для BIOS AMI (American Megatrends Inc).

1. Скачиваем самую последнюю версию BIOS с сайта производителя вашей материнской платы

3. Скачиваем микрокоды для процессоров XEON 771: lga771_microcodes

4. Узнаем CPUID вашего процессора с помощью AIDA64 или аналогичной программы (он выглядит как cpu0001067Ah). Если BIOS будет зашиваться до установки процессора, то пропускаем этот пункт.

5. Распаковываем архивы MMTool и lga771_microcodes и оставляем из файлов с расширением .bin только те файлы, начало которых совпадает с CPUID вашего компьютера (например, cpu0001067a_plat00000044_ver00000a0b_date20100928.bin )

Если не знаем какой код, то зашиваем все.

A. Запускаем MMTool . Жмем кнопку (1) Load ROM и загружаем в программу последний BIOS для вашей матплаты. Если у вас самый новый BIOS, то можно так же слить утилитой бекап BIOS с ПК и править его.

B. Переходим на вкладку (2) CPU Patch , затем кнопкой (3) Browse , откройте файл .bin соответствующий вашему CPUID.

C. В опциях оставьте значение по умолчанию «Insert a Patch data» и нажмите кнопку (4) Apply .

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

Basic Input Output System - базовая система ввода-вывода, сокращенно BIOS. Маленькая микросхема на материнской плате, которая первой получает управление при включении ПК. Обеспечиваются: базовые настройки ПК проверка компонентов ПК при старте...

С начала января сложно было пропустить новости, касающиеся аппаратных уязвимостей Spectre и Meltdown — настолько серьёзной и всеобъемлющей оказалась тема. Хотя производители знали об этих проблемах ещё с лета прошлого года, большинство, похоже, начало реагировать лишь после обнародования подробностей специалистами команды Google Project Zero.

Например, Intel ещё в январе помимо прочих заплаток выпустила обновления микрокода против Spectre для своих процессоров Broadwell, Haswell, Skylake, Kaby Lake и Coffee Lake. Но почти сразу выяснилось, что они приводят к сбоям и . Вначале Intel заявила, что проблема касается только чипов Broadwell и Haswell, но позже признала существование сбоев на компьютерах с процессорами Skylake, Kaby Lake и Coffee Lake и партнёрам и пользователям пока воздержаться от установки заплаток. Наконец, в начале февраля исправленный вариант микрокода, но только для мобильных и настольных потребительских чипов семейства Skylake.

Теперь, после месяца интенсивных тестов и обкатки заплаток Intel и её партнёрами, пришло время и других более или менее актуальных процессоров: были выпущены обновления микрокода для чипов на базе архитектур Kaby Lake и Coffee Lake, а также незатронутых предыдущим обновлением Skylake-базированных платформ. Речь идёт о процессорах 6, 7 и 8-го поколений Intel Core i, а также последних семейств Core X, Xeon Scalable и Xeon D.

Новый вариант микрокода будет доступен в большинстве случаев через выпуск OEM-производителями новых прошивок материнских плат и ноутбуков. Intel по-прежнему призвала людей постоянно обновлять свои системы до актуальных версий, а также опубликовала документ , в котором расписала состояние аналогичных исправлений микрокода для других своих продуктов, в том числе более ранних чипов, начиная с 45-нм Core 2. Для каких-то из этих чипов заплатки только планируются, для других — находятся в состоянии раннего тестирования, для третьих — существуют уже в виде бета-версии. Как правило, чем старее архитектура, тем позже она получит прошивки с защитой против Spectre. Тем не менее, обновления микрокода для более-менее актуальных архитектур Sandy Bridge, Ivy Bridge, Haswell и Broadwell уже находятся в состоянии бета-тестирования. Также ряд чипов Atom и даже ускорители Xeon Phi уже получили заплатки.

Intel напомнила, что существуют и другие методы борьбы против вскрытых уязвимостей блока предсказания ветвлений в современных процессорах. Например, Retpoline, разработанный Google против Spectre CVE-2017-5715 (branch target injection или целевое внедрение в ветвь). Для тех, кто интересуется дополнительной информацией о Retpoline и принципах его работы, компания опубликовала особый технический доклад .

Выпущенные Intel обновления микрокода против Spectre в ближайшие дни и недели начнут выходить в виде свежих прошивок BIOS для различных материнских плат. Любопытно, окажут ли они дополнительный эффект на деградацию производительности конечных систем?

Приобретённый на Алиэкспрессе в материнскую плату Intel DG965SS (с разъёмом LGA775). Можно конечно и самому переделать LGA771 в LGA775, но при цене в $6,5 долларов за процессор гораздо проще взять его и китайцев.

При использовании Intel Xeon 5320 операционная система Windows 10 заработала только при выключении в БИОСе режима "Core multiplexing" (в отличии от прекрасно работающей Ubuntu 17.10). При этом процессор работал только в однопоточном режиме, так что, согласно тесту CPU-Z, производительность в многопоточном режиме оказалась в 2 раза ниже, чем у Intel Core 2 duo E6300, на замену которому и покупался Xeon.

Оказалось, что микрокоды процессора должны быть обновлены. Можно сделать это и в программном режиме, причём в Ubuntu операция на голову проще, чем в Windows 10. Да и в последней нужно позаботиться о том, чтобы микрокоды обновлялись при каждой загрузке. Также есть возможность обновить микрокоды и в БИОСе, по крайней мере в некоторых BIOS от AWARD, AMI, Phoenix, особенно в версиях до UEFI.

Инструкций для материнских плат Intel намного меньше. И не удивительно. С Intel DG965SS пришлось очень прилично повозиться.

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

Некоторые инструкции предлагают создать загрузочную дискету, т.к. не все компьютеры позволяют загружаться в флешки. Я сделал загрузочную флешку с FreeDOS при помощи бесплатного приложения с открытым исходным кодом Rufus (для этого нужно отметить галочкой "Create a bootable disk using" и выбрать из списка пункт "FreeDOS").

В первых строках данного поста хочу без сарказма и искренне поблагодарить участника форума на клокерах, под ником WebBlast за популяризацию данного метода.

Сегодня первое апреля, но это просто совпадение. Способ работает и почти ничего не кирпичит.

В BIOS поколения «до UEFI» есть механизм обновления микрокодов без обновления самого BIOS. Работает этот механизм в силу тех или иных причин не всегда, но если он работает, то в общем процедура обновления сводится к загрузке системы со специального внешнего носителя и последующей перезагрузке.

Что важно понимать:

  • Происходит подмена одного микрокда на другой, а не добавление. Т.е. в ситуации с 771 модом мы зачастую получаем потерю поддержки аналогичного Core 2 Quad, т.е. его микрокод подменяется на микрокод Xeon.
  • Если система не стабильна, пользоваться данным способом не рекомендуется, а система с Xeon зачастую не стабильна без микрокодов.
  • Обновить микрокод на старом процессоре нельзя.
  • Программа не оперирует понятием платформы вообще. Т.е. к примеру микрокод для процессора 1067А, версии FA и платформы 0 будет заменен на микрокод для процессора 1067А, версии FС (более новой) и платформы 2. Но при этом микрокод версии FC и платформы 0 не будет заменен на микрокод FC и платформы 2. Программа сообщит что всё уже обновлено.

Так же надо добавить что этот способ практически идеален для обновления модов Feng’а (aka genius239239) до микрокодов версии 2010 года.

И так, для тех кому читать не интересно и у кого есть дисковод (флоппи), предлагается простое решение — пишем (IMA/ZIP, 305kb) на дискету, перезагружаемся и… всё. На экране наверняка будет написано о том что микрокод обновлён и всё хорошо.

Для тех, у кого дисковода нет, но есть флешка, тоже есть путь, но чуть более сложный:

После загрузки ПК с такой флешки, микрокод на любой 45/65нм процессор поколения Core/Core2 обновится. Конечно, если BIOS не UEFI и если плата не злой OEM и так далее… но шанс есть.

Примеры работы программы на одной и той же плате, но с разными версиями BIOS:

  • Успешный пример. ASUS P5QVM DO, BIOS 0206:







    =========================================================================






    The microcode update was successfully loaded permanently into the BIOS.
    You do not need to run this utility again, unless a new
    processor is installed or a new version of the utility is used.

  • НЕ успешный пример. ASUS P5QVM DO, BIOS 0403:

    Database file being used is PEP.DAT
    =========================================================================
    | Processor Update Utility for Intel(R) P6 and Intel NetBurst(R) |
    | Microarchitecture Family of Microprocessors |
    | Version 7.14 , 09/ 23 / 2005 , Production |
    | Copyright 1995 -2004 , Intel Corporation. |
    =========================================================================
    The system BIOS supports the microcode update API.
    Searching database file for Processor Signature =0001067A Platform ID =1
    Attempting to permanently install the microcode update(s) in your system BIOS.

    Checking microcode update for processor signature 1067A and platform ID 01:
    BIOS microcode update revision = A07
    Database microcode update revision = A0B
    This utility can load a newer microcode update into the BIOS.
    ERROR: Update not permanently loaded into the BIOS. BIOS rejected



    Database microcode update revision = A0B

    Microcode updates can only be temporarily loaded into processors.
    You will need run this utility again after each system power-up or reset.
    Processor #2:
    Pentium(R) III processor detected.
    Processor Signature =0000067A
    Processor microcode update revision = A07
    Database microcode update revision = A0B
    This utility can load a newer microcode update.

    Update #1 Processor Signature=1067A Platform ID=11 Revision=a0b
    2 successful load(s) .
    All Updates Loaded and Verified!

    1. Старые версии HPUSBFW не работают под Win10, но версия 2.2.3 и более новые без проблем создают загрузочную USB флешку.
    2. Данный способ отлично отрабатывает из-под USB флешки с FreeDOS, созданной средствами RUFUS.
    3. Да, RUFUS’ный FreeDOS не на всех системах загружается, но решение есть, см. п. 1.

Публикации по теме