RAS技术主要是通过MCA机制、AER机制实现的。
MCA(Machine Check Architecture)机制:MCA机制可以上报并尽可能地修复系统总线、ECC、奇偶校验、缓存和TLB等等错误,识别故障源并将故障信息记录在MC Bank中。通过MCA机制,CPU内部的可纠正错误和不可纠正错误均可上报并记录,并纠正硬件可纠正错误。对于不可纠正错误,通常会进行热重启。MCA的作用域包括处理器中的所有模块,Core、Uncore和IIO(通过IOMCA)。
AER(IIO Advanced Error Reporting)机制:AER机制负责侦测、记录并发送各种IIO模块下的子模块的错误信号,作用域包括IIO模块下的所有子模块,如PCIe接口,DMI,IIO的核心逻辑和Intel VT-d等。
CPU RAS:
我们提到CPU RAS主要是指MCA 的机制——Machine Check Architecture,它用来检测硬件(这里的Machine表示的就是硬件)错误,比如系统总线错误、ECC错误等等。这套系统通过一定数量的MSR(Model Specific Register)来实现,这些MSR分为两个部分,一部分用来进行设置,另一部分用来描述发生的硬件错误。当CPU检测到不可纠正的MCE(Machine Check Error)时,就会触发Machine Check Exception,通常软件会注册相关的函数来处理这个exception,在这个函数中会通过读取MSR来收集MCE的错误信息,然后重启系统。当然由于发生的MCE可能是非常致命的,CPU直接重启了,没有办法完成MCE处理函数;甚至有可能在MCE处理函数中又触发了不可纠正的MCE,也会导致系统直接重启。CPU还会检测到可纠正的MCE,当可纠正的MCE数量超过一定的阈值时,会触发CMCI(Corrected Machine Check Error Interrupt),此时软件可以捕捉到该中断并进行相应的处理。CMCI是在MCA之后才加入的,算是对MCA的一个增强,在此之前软件只能通过轮询可纠正MCE相关的MSR才能实现相关的操作。MCA以bank为单位对错误进行处理,全局相关的寄存器组定义了如何开启 MCA 的能力。