On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Исправление ошибок в CPU

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

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

За всеми более подробными разъяснениями рекомендую всем заинтересованным посетить сайт www.intel.com.



Литература по процессорам