资讯详情

【x86架构】SMM

SMM是什么

SMM全称System Manage Mode。

从名字也可以大致看出,它是x86平台CPU的一种模式,该模式用来做系统管理的操作,具体来说,可以参考《64-ia-32-architectures-software-developer-system-programming-manual.pdf》中的说明: 在这里插入图片描述

以上也只是Intel建议的在SMM该做什么,实际用来做什么,只能看你写的具体代码。

总览

下面简单说明一下SMM基本特点:

  1. 通常只在BIOS下实现,OS基本不需要特别注意SMM;

  2. SMM的处理代码和数据在特定的内存中,这段内存被称为SMRAM;

  3. 要进入SMM模式,只能通过SMI(System Manager Interrupt,中断系统管理),SMI可以通过SMI#引脚和APIC和SMI不可阻挡的中断;

  4. 要退出SMM,只能通过RSM指令(RSM只能在SMM中用):

  1. 进入SMM之后,普通中断被屏蔽;

  2. 进入SMM模式结束后,执行环境达到实际模式,分页也被使用Disable掉了(CR0.PE=0,CR0.PG=0)此时内存访问最多为4G;

  3. SMM不能重新开始,这意味着当你在那里的时候SMM模式之后,将不再接收SMI了;

进入和退出SMM

先贴一张CPU各种模式之间的转换:

前面说过,当CPU接收到SMI中断或者SMI#引脚被触发,然后CPU开始处理SMI,具体流程如下:

  1. 等待所有触发的指令完成;

  2. 保存当前的环境保护SMRAM中;

  3. CPU向外部电路发送信号,告知有信号SMI执行处理程序;

  4. 进入SMM并相应地进行CPU水平的初始化;有一个非常重要的步骤,即初始化SMM以下系统执行环境,简单来说就是给很多寄存器赋值,如下所示:

  5. 开始执行SMI处理程序。

当在SMI使用句柄RSM指令,CPU就开始推出SMM,具体流程如下:

  1. CPU从SMRAM入学前存入中学SMM以前的执行环境;

  2. CPU发送信号通知退出SMM模式了;

  3. 退出SMM回到之前中断的程序。

SMRAM

SMRAM的全称是System Manager RAM,前面的内容已经提到了,关于SMRAM所有使用说明如下:

  1. 存放进入SMM之前的系统执行环境;

  2. 存放SMI处理程序代码和数据;

  3. 存储系统配置等信息;

  4. 存放OEM信息;

由于SMM下CPU只能访问4G以下空间,所以SMRAM也在4G以下。

SMRAM基地址被称为SMBASE,它的默认值是3万H,SMRAM默认尺寸为64K;无论是SMRAM可重新分配基地址或大小。

SMRAM内部分为几个不同的部分,用于完成不同的功能,如存储代码、存储状态等,如下图所示:

以32位系统为例(32位和64位执行环境不同,因此相应的存储器数量也不同),存储如下内容:

上表第三列表示SMI处理程序可以写寄存器吗?如果可以写,可以写,可以退出SMM实际上,模式后的执行环境已经修改。

也可以从上表中看到一些问题,比如CR4.寄存器没有保存下来。事实上,前面已经说过进入SMM之后CR4的PE和PG位置将被清除(实际上整个寄存器都被清除了)。CR4未保存SMRAM中,但是当CPU退出SMM时,CR4值仍将恢复进入SMM以前的值。还有很多这样的值,这里就不一一解释了。

简而言之,在上表中没有中值SMM不能下读,这里不是说CR4等寄存器的值不能读取,只能进入SMM之前的CR无法获得4等寄存器的值。

最后关于SMRAM上表中的寄存器可以确定重定位,即SMBASE:

要使重定位有效,一般流程如下:

  1. 进入到SMM中(此时使用SMBASE还是30000H);

  2. 设置SMBASE Filed值(从上表可以看出值是可写的);

  3. 通过RSM退出SMM当退出时,模式SMM模式时,SMBASE Filed写入中值CPU内部的存放SMBASE的寄存器;

  4. 如果再进去SMM,使用的基地址是新设置的SMBASE值了。

关于如何设置SMRAM大小没有具体说明。…

以上是对SMM简单说明模式。

事实上,还有很多事情没有提比如SMM和VM的关系,SMM与多核的关系,等等。

最重要的是SMM其实怎么用也没说,这些等有条件再补上。 ———————————————— 版权声明:本文为CSDN博主「jiangwei0512」遵循原创文章CC 4.0 BY-SA版权协议,请附上原始来源链接和本声明。 原文链接:https://blog.csdn.net/jiangwei0512/article/details/86752160

标签: smm0204色环电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台