机器检查异常

机器检查异常(英语:Machine Check Exception,简称MCE)是电脑中央处理器检测到一个硬件问题发生的电脑硬件错误。

现代版本的Microsoft Windows通过Windows硬件错误架构英语Windows Hardware Error Architecture处理机器检查异常。当该架构检测到机器检查异常(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

该错误通常是由于硬件组件的故障或过负载而发生,其中的错误不能用更具体的错误消息来识别。诊断其错误消息可能很困难,尽管英特尔奔腾处理器确实生成更具体的代码,可以联络制造商进行解码。[来源请求]

大多数机器检查异常需要重启系统才能继续为用户正常运行。[来源请求]

问题类型

编辑

这些错误大多明确与奔腾处理器家族有关[来源请求]。其他处理器上也可能出现类似的错误以及导致类似的问题。

导致机器检查异常的一些主要的硬件问题包括:

可能的原因

编辑

机器检查异常的一般原因包括系统过热、硬件安装不正确。具体的因操作引起的原因有:

  • 超频(增加了热量输出)。
  • 错误安装散热片/散热风扇英语Computer fan(CPU风扇灰尘过多或故障也可能导致)
  • 内部或外部电源过载(可通过升级电源解决)

电脑软件也可能导致机器检查异常错误(通常因为程序读取或写入了损坏的数据)。例如,软件读或写不存在的内存区域可能导致处理器或系统总线的失措。[来源请求]访问被UEFI标记为限制的内存也可能机器检查异常错误。[3]

解码MCE

编辑

如前所述,机器检查错误的准确解码存在难度。通常来说,制造商(尤其是中央处理器的制造商)能够提供有关特定代码的资讯。参阅“Intel 64和IA-32架构软件开发人员手册”[4]第14章(机器检查架构),或微软知识库文章 - Windows 异常。[5]

解码MCE的程序

编辑
  • mcat:AMD的一个Windows命令行程序,可解码AMD K8,家族0x100x11的处理器的MCE。
  • mcelog[6]:Andi Kleen制作的一个Linux守护进程,它处理现代x86处理器的MCE。mcelog也可解码机器检查。
  • parsemce[7]:Dave Jones制作的一个Linux程序,解码AMD K7处理器的MCE。
  • mced[8]:Tim Hockin制作的一个Linux程序,从内核收集MCE并提醒感兴趣的应用程式。它不会尝试解释MCE数据,只是提醒其他程序。

参见

编辑

参考资料

编辑
  1. ^ Bug Check 0x124: WHEA_UNCORRECTABLE_ERROR. MSDN. 2016-09-29 [2016-10-26]. (原始内容存档于2016-12-23). 
  2. ^ 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. 
  3. ^ 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). 
  4. ^ 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). 
  5. ^ 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). 
  6. ^ mcelog: Advanced hardware error handling for x86 Linux. 2015-04-20 [2016-10-26]. (原始内容存档于2021-02-25). 
  7. ^ parsemce: Linux Machine check exception handler parser.. 2003-07-22 [2016-10-26]. (原始内容存档于2013-06-22). 
  8. ^ GitHub上的mcedaemon页面

外部链接

编辑