Русская Википедия:Machine Check Exception

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Machine Check Exception (аббр. MCE) - тип компьютерных ошибок, которые появляются при обнаружении неполадок с оборудованием.

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

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

Виды отчётов

Операционные системы мейнфреймов IBM

Шаблон:Expand section IBM System/360 Operating System (OS/360) записывает ошибки ввода/вывода в файл журнала под названием SYS1.LOGREC.

Тогда IBM ввела термин "error recording data set" (ERDS, набор данных записи ошибок) для следующих версий, который позволяет установщику выбирать имя для операционных систем, не производных от OS/360.[1]

OS/360

В OS/360, установщик может выбрать несколько степеней поддержки таких ошибок. Наиболее точным является Machine Check Handler (MCH), он записывает данные об ошибках в SYS1.LOGREC. Установка может отобразить эти данные с помощью службы Environmental Record Editing and Printing Program (EREP) или с помощью SEREP. MCH может обработать ошибки памяти в восстанавливаемых областях, считывая копии памяти из соответствующих файлов.

z/OS

В z/OS установка может выбрать либо ERDS, либо может определить поток логирования z/OS System Logger для удержания данных об ошибках. Как и OS/360, установщик использует EREP для отображения таких ошибок, SEREP не поддерживается. MCH больше не является опциональным, и обрабатывает большее количество ситуаций чем в OS/360.

Microsoft Windows

В Microsoft Windows, в момент неустранимой MCE, система генерирует синий экран смерти.

Более поздние версии Windows используют WHEA (Windows Hardware Error Architecture), и генерируют STOP код 0x124, WHEA_UNCORRECTABLE_ERROR.

Пример такой ошибки продемонстрирован ниже. Параметры (в скобках) могут отличаться, но первый всегда 0x0 для MCE.

   STOP: 0x00000124 (0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000)

Более старые версии Windows напрямую используют Machine Check Architecture, и генерируют STOP код 0x9C, MACHINE_CHECK_EXCEPTION.

Пример такой ошибки:

   STOP: 0x0000009C (0x00000030, 0x00000002, 0x00000001, 0x80003CBA)

Linux

В Linux, ядро пишет сообщения о MCE в журнал ядра и в консоль. Когда MCE не является фатальным, сообщение о нём также копируется в системный журнал и/или журнал systemd. На некоторых системах, информация об устранимых ошибках также может быть передана через MCE.[2]

Пример такой ошибки:

   CPU 0: Machine Check Exception: 0000000000000004
   Bank 2: f200200000000863
   Kernel panic: CPU context corrupt

Типы проблем

Некоторые из основных аппаратных неполадок могут приводить к MCE, например:

Возможные причины

Часто MCE является следствием разгона или перегрева процессора. В некоторых случаях, во время перегрева, для предотвращения повреждения, процессор сам отключается. Но MCE может возникать и по причине ошибок шины данных, ошибок памяти, и т. д. Возможные причины включают в себя:

  • Плохое охлаждение процессора (например, вследствие забитости кулера пылью). Проблемы с охлаждением часто становятся очевидными при проверке.
  • Разгон процессора до частоты, на которой процессор перестаёт быть стабильным.
  • Неисправность материнской платы. Может быть обнаружена при помощи замены на заведомо исправный компонент.
  • Неисправность процессора. Может быть обнаружена при помощи замены на заведомо исправный компонент.
  • Неисправность оперативной памяти. Может быть выявлена с помощью тестов памяти (например, memtest86)
  • Неисправность контроллеров ввода/вывода.
  • Неисправность устройств ввода/вывода. Может быть выявлена при отсоединении или отключении устройств.
  • Неисправность блока питания. Если неисправность проявляется сразу после запуска ОС, то стоит обратить внимание на блок питания. Ошибки могут быть следствием пульсирующего или низкого напряжения при запуске всех устройств компьютера.

Декодирование MCE

Для архитектур IA-32 и x86-64, можно обратиться к Intel 64 and IA-32 Architectures Software Developer's Manual[3] Chapter 15 (Machine-Check Architecture) или Microsoft KB Article on Windows Exceptions.[4]

Программы для декодирование MCE процессоров Intel и AMD

  • rasdaemon[5] — программа логирования для Linux. Она записывает ошибки памяти, используя EDAC. EDAC - это подсистема Linux, обрабатывающая ошибки ECC от контроллеров памяти.[6][7][8][9]
  • mcelog[10] — демон для Linux, созданный Энди Клином для обработки MCE на архитектуре x86. mcelog считается устаревшим на момент 2017 года.[8][9] Его заменой является rasdaemon.[6][7]
  • parsemce[11] — программа для Linux, созданная Дейвом Джонсом для декодирования MCE на процессорах AMD K7.
  • mced[12] (mcedaemon) — программа для Linux, созданная Тимом Хокином для получения сведений о MCE от ядра и дальнейшего оповещения нужных процессов об этом. Стоит отметить, что эта программа именно оповещает другие процессы о MCE, она не интерпретирует данные об ошибках.
  • mcat — консольная программа для Windows от AMD, служащая для декодирования MCE на процессорах AMD K8, K10 и K11.

См. также

Примечания

Шаблон:Примечания

Ссылки