Intel处理器中断18 - Machine-Check Exception (#MC)介绍

概述
当处理器探测到机器内部错误或者总线错误的时候,就会发送该中断。当然,一个外部的硬件代理设备探测到总线错误的时候,也会发送该中断。近期的工作是围绕内存错误的,所以发现了内存 错误,就会对处理器发送该中断。machine-check exception 在Pentium以后的芯片上才得以支持,而且对于不同的CPU模型都是不同的,需要参考相关的model-specific。Intel不同处理器家族对于machine-check exception的实现都是不同的,并且Intel不保证在未来的Intel 64 或 IA-32处理器上兼容现在的实现

当外部的硬件代理设备诊断到一个总线错误的时候,就会对处理器特定的引脚发送信号:对于Pentium 4, Intel Xeon, 和P6 family处理器会对INIT# 和 MCERR#管脚发送信号;对于Pentium处理器会对BUSCHK#管脚发送信号。当这些管脚中的任何一个被使能后,相应的错误信息都会被保存到machine-check相关的处理器中,然后产生一个machine-check exception

Exception 错误码
相关的错误信息可以通过machine-check相关MSR得到

错误现场指令指针
得到错误现场当事运行所运行的指令指针,非常有利于定位和解决问题。Intel提供了相关的方法。
对于Pentium 4 和 Intel Xeon处理器,machine-check state 相关寄存器中保存的内容就是导致machine-check exception发生的错误指令和相关信息
对于P6 family 处理器MCG_STATUS MSR的EIPV标志位被职位,那么CS和EIP寄存器中的内容就是导致machine-check exceptio发生的错误指令;如果EIPV被清除,那么EIP中的指令信息就和错误没有关系
对于Pentium处理器,CS 和 EIP 寄存器中的内容都和错误没有关系

功能开关
通过CR4寄存器MCE标志位,可以使能machine-check机制
对于Pentium 4, Intel Xeon, P6 family, 和Pentium 处理器,如果开关发生了变化,都会导致产生一个machine-check exception,随之产生一个abort类的exception。对于abort exception,该exception的信息可以通过machine-check相关的MSR得到。注意,一旦该机制被关闭了,运行过程中通常就不能重启该机制

如果machine-check机制没有被使能(CR4寄存器MCE标志位没有置位),一个machine-check exception就会导致处理器进入到shutdown状态


你可能感兴趣的:(硬件知识)