机器检查异常 - 维基百科,自由的百科全书
![]() | 此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
机器检查异常(英語:Machine Check Exception,简称MCE)是计算机的中央处理器检测到一个硬件问题发生的计算机硬件错误。
现代版本的Microsoft Windows通过Windows硬件错误架构处理机器检查异常。当该架构检测到机器检查异常(MCE)时,它会以蓝屏死机显示该错误,附以下列参数(数值可能变化,但机器检查异常导致的首个参数始终为0x0):[1]
*** STOP: 0x00000124 (0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000)
在Linux上,进程(例如klogd
[2])会向内核日志和/或控制台屏幕写入消息(通常仅在错误不可恢复且机器因此崩溃时,消息才会发送到控制台):
CPU 0: Machine Check Exception: 0000000000000004 Bank 2: f200200000000863 Kernel panic: CPU context corrupt
该错误通常是由于硬件组件的故障或过负载而发生,其中的错误不能用更具体的错误消息来识别。诊断其错误消息可能很困难,尽管英特尔奔騰处理器确实生成更具体的代码,可以联系制造商进行解码。[來源請求]
大多数机器检查异常需要重启系统才能继续为用户正常运行。[來源請求]
问题类型
[编辑]这些错误大多明确与奔騰处理器家族有关[來源請求]。其他处理器上也可能出现类似的错误以及导致类似的问题。
导致机器检查异常的一些主要的硬件问题包括:
可能的原因
[编辑]机器检查异常的一般原因包括系统过热、硬件安装不正确。具体的因操作引起的原因有:
计算机软件也可能导致机器检查异常错误(通常因为程序读取或写入了损坏的数据)。例如,软件读或写不存在的内存区域可能导致处理器或系统总线的失措。[來源請求]访问被UEFI标记为限制的内存也可能机器检查异常错误。[3]
解码MCE
[编辑]如前所述,机器检查错误的准确解码存在难度。通常来说,制造商(尤其是中央处理器的制造商)能够提供有关特定代码的信息。参阅“Intel 64和IA-32架构软件开发人员手册”[4]第14章(机器检查架构),或微软知识库文章 - Windows 异常。[5]
解码MCE的程序
[编辑]- mcat:AMD的一个Windows命令行程序,可解码AMD K8,家族0x10和0x11的处理器的MCE。
- mcelog[6]:Andi Kleen制作的一个Linux守护进程,它处理现代x86处理器的MCE。mcelog也可解码机器检查。
- parsemce[7]:Dave Jones制作的一个Linux程序,解码AMD K7处理器的MCE。
- mced[8]:Tim Hockin制作的一个Linux程序,从内核收集MCE并提醒感兴趣的应用程序。它不会尝试解释MCE数据,只是提醒其他程序。
参见
[编辑]参考资料
[编辑]- ^ Bug Check 0x124: WHEA_UNCORRECTABLE_ERROR. MSDN. 2016-09-29 [2016-10-26]. (原始内容存档于2016-12-23).
- ^ Steve Lord, Greg Wettstein. klogd(8) - Linux man page. [2016-10-26]. (原始内容存档于2019-10-24).
klogd is a system daemon which intercepts and logs Linux kernel messages.
- ^ Bug 47121: UEFI boot panics on a new Samsung Series 9 laptop throwing a machine check exception. Linux kernel bug tracker. 2012-10-13 [2016-10-26]. (原始内容存档于2019-04-04).
- ^ Intel 64 and IA-32 Architectures Software Developer's Manual: Volume 3A: System Programming Guide, Part 1 (PDF). Intel. May 2011 [2016-10-26]. (原始内容 (PDF)存档于2008-12-21).
- ^ Stop error message in Windows XP that you may receive: "0x0000009C (0x00000004, 0x00000000, 0xb2000000, 0x00020151)". MSDN. 2015-12-07 [2016-10-26]. (原始内容存档于2017-01-08).
- ^ mcelog: Advanced hardware error handling for x86 Linux. 2015-04-20 [2016-10-26]. (原始内容存档于2021-02-25).
- ^ parsemce: Linux Machine check exception handler parser.. 2003-07-22 [2016-10-26]. (原始内容存档于2013-06-22).
- ^ GitHub上的mcedaemon頁面