现在的位置: 首页 > 综合 > 正文

SMRAM

2014年02月05日 ⁄ 综合 ⁄ 共 1734字 ⁄ 字号 评论关闭

            一旦进入SMM, 处理器切换到一新的地址空间.一旦进入SMM分页功能被关掉, 这个初始化的地址空间可映射到所有可存取到处理器低4GByte物理地址空间的内存. SMI handler 里的重要代码和数据驻留在SMRAM里的一段内存区域。处理器使用SMRAM里一预定义的区域来保存CPU触发SMI前的状态。SMRAM也能够被用来存储系统管理信息(例如系统配置和关闭设备的信息)以及OEM专属信息。

         默认的SMRAM大小是64Kbyte,起始于物理内存里叫做SMBASE的基地址。SMBASE默认值在硬件复位后是30000H。处理器寻找SMIhandler的第一条指令在地址[SMBASE + 8000H]。它存储了处理器的状态在地址[SMBASE + FE00H]到[SMBASE + FFFFH]。

         系统逻辑要求最小限度的被解码物理地址区域给SMRAM的地址范围是从[SMBASE + 8000H]到[SMBASE + FFFFH]。如果需要一更大的SMRAM区域能够被解码。SMRAM的大小可以在32Kbyte到4GByte之间。

         SMRAM的位置可以被改变通过改变SMBASE的值。应该注意所有的CPU在Multiple –processor系统中被初始化为相同的SMBASE值(30000H)。初始化软件必须循序渐进的置每个处理器于SMM,并改变SMBASE的值以防和其他的处理器的SMRAM重叠。

         实际的SMRAM的物理位置可以位于系统内存或一隔离的RAM memory。当处理器接收到一个SMI,处理器产生一个SMI acknowledge transaction(P6family)SMIACT#pin(Pentium 和Intel486 processors)。

         系统逻辑可以使用SMI acknowledge transaction或SMIACT# pin 有效来解码去存取SMRAM以及重定向到新的SMRAM 内存,如果需要的话。如果一隔离的RAM MEMORY 被用作SMRAM,系统逻辑应当提供一个可编程的方式来映射SMRAM到系统内存空间当处理器不处于SMM。这种机制将会使能start-up过程来初始化SMRAM空间(load 
the SMI HANDLER)在SMM里 执行SMI handler 之前。

         SMRAM State Save Map

         当不支援Intel 64架构的IA-32processsor最初进入SMM,它把自己的状态写进SMRAM的状态保存区域。这个状态保存区域始于[SMBASE+8000H+7FFFH],终于[SMBASE +8000H+ 7E00H]。the state save map 部分见表34-1.保留的空间不应当被软件使用。

         SMRAMState save area 的一些寄存器可以被SMI handler读取和改变,随着RSM指令执行,改变的值回存到处理器的寄存器。一些register images 是read-only,并且不能被改变。SMI handler 不能依赖于任何标记为reserved 区域的值。

  

       SMRAMState Save Map and Intel 64 Architecture

当处理器被初始化进入SMM,它把自己的状态写进SMRAM的state savearea. 对于Intel  64 处理器,state save area 从[SMBASE + 8000H
+7FFFH] 到 [SMBASE + 8000H +7C00H]。
当CPUID.80000001:EDX[29]= 1说明处理器是Intel64 架构。SMRAM的layout部分见Table34-3。另外,不管CPUID.80000001:EDX[29]的值是多少,也适用于Table34-2列出的CPU。



下图是CPUID的语法意义:



System Management Range Registers

      SMI handler 代码和数据被SMM code 驻留在SMRAM。SMRR接口在Intel64架构中增    强来限制SMRAM中可缓存参考用来编码的地址在SMM中。SMRR接口仅能够被在SMM中跑的代码配置。

 

 

 

抱歉!评论已关闭.