F0 0F C7 C8

Поделись знанием:
Перейти к: навигация, поиск

F0 0F C7 C8 — последовательность байтов, формирующих недействительную машинную команду процессоров семейства x86. В процессорах Pentium MMX и Pentium OverDrive, вследствие аппаратной недоработки, команда, будучи выполненной на любом уровне привилегий, приводила к мёртвому зависанию процессора, что отрицательно сказывалось на надёжности системы в целом.





Описание

Инструкция представляет собой команду:

lock cmpxchg8b eax

Операндом может быть любой другой регистр помимо eax. cmpxchg8b используется для сравнения содержимого пары регистров eax и edx с 8 байтами содержимого некоторого участка памяти. При этом происходит попытка поместить 8-байтовый результат в 4-байтный регистр.

Сама по себе эта команда просто вызывает исключение, однако при сочетании с префиксом lock (он используется для предотвращения обращения двух процессоров к одному и тому же участку памяти одновременно) обработчик исключений не вызывается, процессор перестает обрабатывать прерывания и для приведения его в рабочее состояние требуется перезагрузка.

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

Методы решения

  • Для ядра Linux, совместно с Intel был разработан патч, устраняющий эту ошибку
  • Компания Microsoft также выпустила патчи для своих операционных систем семейства Windows (см. [support.microsoft.com/kb/q163852/ KB163852])
  • Для операционной системы OS/2 патч был выпущен фирмой IBM в виде специального базового драйвера CMPXCHG8.SYS, вызов которого можно было прописать в файл конфигурации системы config.sys
  • Начиная с процессора Pentium Pro ошибка была исправлена на аппаратном уровне.
  • Компания Intel производила бесплатную замену дефектных процессоров.

См. также

Напишите отзыв о статье "F0 0F C7 C8"

Ссылки

  • [support.intel.com/support/processors/pentium/ppiie/index.htm Intel erratum]
  • [archive.is/20130102083018/news.com.com/2100-1033-205157.html?legacy=cnet CNET Article]
  • [www.ddj.com/architect/184410555 The Pentium F00F Bug: Workarounds for a nasty problem], детальное описание и способы решения


Отрывок, характеризующий F0 0F C7 C8

Денисов, сморщившись, как бы улыбаясь и выказывая свои короткие крепкие зубы, начал обеими руками с короткими пальцами лохматить, как пес, взбитые черные, густые волосы.
– Чог'т меня дег'нул пойти к этой кг'ысе (прозвище офицера), – растирая себе обеими руками лоб и лицо, говорил он. – Можешь себе пг'едставить, ни одной каг'ты, ни одной, ни одной каг'ты не дал.
Денисов взял подаваемую ему закуренную трубку, сжал в кулак, и, рассыпая огонь, ударил ею по полу, продолжая кричать.
– Семпель даст, паг'оль бьет; семпель даст, паг'оль бьет.
Он рассыпал огонь, разбил трубку и бросил ее. Денисов помолчал и вдруг своими блестящими черными глазами весело взглянул на Ростова.
– Хоть бы женщины были. А то тут, кг'оме как пить, делать нечего. Хоть бы дг'аться ског'ей.
– Эй, кто там? – обратился он к двери, заслышав остановившиеся шаги толстых сапог с бряцанием шпор и почтительное покашливанье.
– Вахмистр! – сказал Лаврушка.
Денисов сморщился еще больше.
– Сквег'но, – проговорил он, бросая кошелек с несколькими золотыми. – Г`остов, сочти, голубчик, сколько там осталось, да сунь кошелек под подушку, – сказал он и вышел к вахмистру.
Ростов взял деньги и, машинально, откладывая и ровняя кучками старые и новые золотые, стал считать их.
– А! Телянин! Здог'ово! Вздули меня вчег'а! – послышался голос Денисова из другой комнаты.
– У кого? У Быкова, у крысы?… Я знал, – сказал другой тоненький голос, и вслед за тем в комнату вошел поручик Телянин, маленький офицер того же эскадрона.
Ростов кинул под подушку кошелек и пожал протянутую ему маленькую влажную руку. Телянин был перед походом за что то переведен из гвардии. Он держал себя очень хорошо в полку; но его не любили, и в особенности Ростов не мог ни преодолеть, ни скрывать своего беспричинного отвращения к этому офицеру.
– Ну, что, молодой кавалерист, как вам мой Грачик служит? – спросил он. (Грачик была верховая лошадь, подъездок, проданная Теляниным Ростову.)
Поручик никогда не смотрел в глаза человеку, с кем говорил; глаза его постоянно перебегали с одного предмета на другой.
– Я видел, вы нынче проехали…
– Да ничего, конь добрый, – отвечал Ростов, несмотря на то, что лошадь эта, купленная им за 700 рублей, не стоила и половины этой цены. – Припадать стала на левую переднюю… – прибавил он. – Треснуло копыто! Это ничего. Я вас научу, покажу, заклепку какую положить.