Микрокод процессора в биос

Не для кого не секрет, что процессор представляет собой автомат с микропрограммным управлением. И любая его инструкция является совокупностью микрокоманд, прошитых в ПЗУ процессора при его изготовлении. Ошибки микрокода и схемные погрешности (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)

Читайте также:  Victoria hdd как пользоваться с флешки

Старую базу (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 имеется аналогичная возможность изменения микрокода.

Установил переделанный серверный процессор Intel Xeon 5320 (LGA771 -> LGA775), приобретённый на Алиэкспрессе в материнскую плату 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").

Далее нужно скачать для нашего процессора Intel Xeon E5320 с сайта Intel микрокоды "Linux* Processor Microcode Data File
Linux* Processor Microcode Data File". Скаченный архив нужно распаковать и найти в нём файл microcode.dat .

Из microcode.dat потребуется извлечь .bin файлы. Сделать это можно при помощи утилиты microdecode.exe
Следующая команда извлекает .bin файлы из microcode.dat в текущую папку, в которой должны находиться и microdecode.exe, и microcode.dat
microdecode.exe microcode.dat

В случае с "Linux* Processor Microcode Data File" версии 20170707 получилось 160 .bin файлов. Нам понадобятся только .bin файлы, относящиеся к нашему процессоры.

В некоторых версия БИОС можно увидить CPU ID. В случае с Intel DG965SS пришлось заглянуть в приложение CPU-Z. Сложив Family 6 Model F Stepping 7 получим 6f7

Из 160 файлов с подходящим CPU ID оказалось всего 2: cpu000006f7_plat00000010_ver0000006a_date20101002.b in и cpu000006f7_plat00000040_ver0000006b_date20101002.b in .

Осталось достать приложение для обновления микрокодов. Скачиваем checkup.zip и распаковываем его содержимое в корень загрузочной флешки. Также копируем в корень флешки нужные .bin файлы: cpu000006f7_plat00000010_ver0000006a_dat e20101002.bin и cpu000006f7_plat00000040_ver0000006b_dat e20101002.bin.

Далее на флешке редактируем при помощи текстового редактора (Notepad++, Notepad. но только не MS Word) файл autoexec.bat
Для обновление микрокодов нужно выполнить checkup7.exe (Processor Update Utility for Intel(R) P6 and Intel NetBurst(R)) с параметром -p и указанием .bin файла.

Я пробовал сделать autoexec.bat со следующим содержанием:
checkup7.exe -p cpu000006f7_plat00000010_ver0000006a_dat e20101002.bin

а также с таким:
checkup7.exe -p cpu000006f7_plat00000010_ver0000006a_dat e20101002.bin
cpu000006f7_plat00000040_ver0000006b_dat e20101002.bin

В итоге остановился на первом варианте. При этом checkup7.exe выдавал ошибку. Но зато появлялась командная строка, в которой команда DIR позволяла найти сокращённое FreeDOS имя файла.
Далее оставалось ввести пару команд:
checkup7.exe -p cpu000

1.bin
checkup7.exe -p cpu000

Одна из команд не обновляла микрокоды, а другая приводила к успешному результату.

Чтобы не заморачиваться с выбором файлов для нашего процессора, можно объединить все .bin файлы в один.
copy /b *.bin all.bin

Повторная попытка обновить те же самые микрокоды конечно же показывает, что в этом нет необходимости.
В результате команда
checkup7.exe -p all.bin

приводила к сообщению "No changes are needed" (изменения не нужны):

======================================== =================================
| 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=000006F7 Platform >Attempting to permanently install the microcode update(s) in your system BIOS.

Checking microcode update for processor signature 06F7 and platform ID 40:
BIOS microcode update revision = 6B
Database microcode update revision = 6B
The microcode update currently loaded in your processor(s) is the
latest revision as of 09/23/2005. No changes are needed.
Please make sure you have the latest version of the utility.

Читайте также:  Ростелеком просит ввести логин и пароль

В результате обновления микрокодов процессор Intel Xeon E5320 в Windows 10 заработал в двухпоточном режиме

К большому сожалению, при включении режима "Core Multiplexing" в БИОС материнской платы Intel DG965SS в Windows 10 продолжает возникать ошибка "SYSTEM THREAD EXCEPTION NOT HANDLED", так что мултиплексирование ядер процессора приходится отключать (либо нужно отказаться от Виндоуз и работать в Linux).

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

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

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

Как прошить BIOS — читаем здесь.

Как лучше сделать:
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.

D. Остается только сохранить его для дальнейшего применения. Делается это при помощи кнопки Save ROM или Save ROM As.
Выделенное рамкой, это прошитые микрокоды.

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

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

Adblock
detector