机器检查异常(,简称MCE)是计算机的中央处理器检测到一个硬件问题发生的计算机硬件错误。
现代版本的Microsoft Windows通过处理机器检查异常。当该架构检测到机器检查异常(MCE)时,它会以蓝屏死机显示该错误,附以下列参数(数值可能变化,但机器检查异常导致的首个参数始终为0x0):
STOP: 0x00000124 (0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000) *
在Linux上,进程(例如klogd)会向内核日志和/或控制台屏幕写入消息(通常仅在错误不可恢复且机器因此崩溃时,消息才会发送到控制台):
CPU 0: Machine Check Exception: 0000000000000004
Bank 2: f200200000000863
Kernel panic: CPU context corrupt
该错误通常是由于硬件组件的故障或过负载而发生,其中的错误不能用更具体的错误消息来识别。诊断其错误消息可能很困难,尽管英特尔奔騰处理器确实生成更具体的代码,可以联系制造商进行解码。
大多数机器检查异常需要重启系统才能继续为用户正常运行。
问题类型
。其他处理器上也可能出现类似的错误以及导致类似的问题。
导致机器检查异常的一些主要的硬件问题包括:
- 系統匯流排错误:(处理器与主板之间的通信错误)。
- 内存错误:奇偶校验位检测到发生内存错误。前向錯誤更正(ECC)可以纠正有限的内存错误以继续正常运行。
- CPU缓存错误。
可能的原因
机器检查异常的一般原因包括系统过热、硬件安装不正确。具体的因操作引起的原因有:
- 超頻(增加了热量输出)。
- 错误安装散热片/散热风扇(CPU风扇灰尘过多或故障也可能导致)
- 内部或外部电源过载(可通过升级电源解决)
计算机软件也可能导致机器检查异常错误(通常因为程序读取或写入了损坏的数据)。例如,软件读或写不存在的内存区域可能导致处理器或系统总线的失措。访问被UEFI标记为限制的内存也可能机器检查异常错误。
解码MCE
如前所述,机器检查错误的准确解码存在难度。通常来说,制造商(尤其是中央处理器的制造商)能够提供有关特定代码的信息。参阅“Intel 64和IA-32架构软件开发人员手册”第14章(机器检查架构),或微软知识库文章 - Windows 异常。
解码MCE的程序
- mcat:AMD的一个Windows命令行程序,可解码AMD K8,家族0x10和0x11的处理器的MCE。
- mcelog:Andi Kleen制作的一个Linux守护进程,它处理现代x86处理器的MCE。mcelog也可解码机器检查。
- parsemce:Dave Jones制作的一个Linux程序,解码AMD K7处理器的MCE。
- mced:Tim Hockin制作的一个Linux程序,从内核收集MCE并提醒感兴趣的应用程序。它不会尝试解释MCE数据,只是提醒其他程序。
参见
*
参考资料
外部链接
- [http://www.mcelog.org mcelog: Advanced hardware error handling for x86 Linux]
- [https://www.kernel.org/pub/linux/kernel/people/davej/tools/parsemce.c parsemce: Linux Machine check exception handler parser]
评论 (0)