MACHINE-CHECK 相关的MSR(一) - 概述
2015-09-28 09:57
363 查看
Machine check使用了一组相关的MSR。这些MSR有两部分组成,第一部分是全局控制和状态寄存器(global),另外一部分是一些记录错误信息的banks(banks的概念在前面的文章已经讲过,请看参考文章)。MSR的整体布局如下图所示
![](http://img1.ph.126.net/3CkmgxTjkeMzEwVCVj6GcQ==/6630543298653949087.png)
每一个错误报告的bank都同处理器中一个特定的硬件单元(或一组硬件单元)相关联。使用RDMSR或WRMSR来对这些寄存器进行读写。将上面图中的banks展开如下
![](http://img0.ph.126.net/_NB7ap43ygSq-q6fVmzdWA==/6631237090490361549.png)
全局相关的寄存器组定义了如何开启 MCA 的能力。每一个 BANK 则具体对应一类错误源,如 CPU,MEMORY,CACHE,CHIPSET 等等。每一个 BANK 都可以进行单独的控制,这样软件就能够针对每一个 BANK 使用特定的方式进行处理。由于 MCA 以时间窗口为单位对错误进行采样,因此在每一个采样结束时有可能会发现有不止一个的错误产生,但是只会触发一次中断或者异常,因此当软件进行处理时必要要轮询所有的 BANK 以确保每一个产生的错误都可以被处理。
参考文章Intel MCA 硬件机制概述
![](http://img1.ph.126.net/3CkmgxTjkeMzEwVCVj6GcQ==/6630543298653949087.png)
每一个错误报告的bank都同处理器中一个特定的硬件单元(或一组硬件单元)相关联。使用RDMSR或WRMSR来对这些寄存器进行读写。将上面图中的banks展开如下
![](http://img0.ph.126.net/_NB7ap43ygSq-q6fVmzdWA==/6631237090490361549.png)
全局相关的寄存器组定义了如何开启 MCA 的能力。每一个 BANK 则具体对应一类错误源,如 CPU,MEMORY,CACHE,CHIPSET 等等。每一个 BANK 都可以进行单独的控制,这样软件就能够针对每一个 BANK 使用特定的方式进行处理。由于 MCA 以时间窗口为单位对错误进行采样,因此在每一个采样结束时有可能会发现有不止一个的错误产生,但是只会触发一次中断或者异常,因此当软件进行处理时必要要轮询所有的 BANK 以确保每一个产生的错误都可以被处理。
参考文章Intel MCA 硬件机制概述
相关文章推荐
- Intel MCA 硬件机制概述
- 内核虚拟地址转物理地址的函数
- Native Linux的MCE基本原理和处理函数入口(基于kernel 4.2.0+ )
- Intel UCE和CE,以及register banks的意思
- 实验室服务器串口配置
- Intel处理器中断18 - Machine-Check Exception (#MC)介绍
- X86服务器配置YUM源的方法
- TrustZone初探(一)
- QEMU更换内核后启动错误
- X86分区虚拟化 - 多核初始化启动和GUEST OS初始化启动
- ARM TrustZone技术
- 面向对象设计的基本原则
- 解决C++编译出现的重定义问题:multiple definition of ’XXX‘错误
- Spring Batch Tutorial
- ubuntu 使用ifupdown 进行高级网络设置
- Dynamics AX R2 安装Reporting Services 扩展
- Inclusion–exclusion principle(动态规划)
- 为什么C++中空类和空结构体大小为1?(转载)
- 如何在虚拟机外面换内核
- 如何让CentOS启动输出详细的硬件初始化信息