【我所認知的BIOS】-->MTRR (MEMORY TYPE RANGE REGISTERS)

MTRR(Memory Type Range Registers)是一种机制,用于确定系统内存中物理内存段的类型,以优化CPU对不同内存的处理。MTRR包括固定和可变范围寄存器,允许软件配置内存类型,如RAM、ROM和帧缓冲。CPUID指令可用于识别MTRR支持,IA32_MTRR_DEF_TYPE MSR和IA32_MTRRCAP MSR等寄存器用于设置和获取内存区域属性。MTRR通过优化内存类型提高系统性能,尤其对特定设备如帧缓冲的处理。
摘要由CSDN通过智能技术生成

【我所認知的BIOS】-->MTRR

MEMORY TYPE RANGE REGISTERS

By LightSeed

2009-9-27  

1MTRR的概念

内存类型范围寄存器(MTRRs,翻译过来真别扭,后面都以MTRR直接来说了)提供了一种机制,这种机制其实就是确定在系统内存中物理一段内存的类型。这个类型其实是正对CPU来说的,见图1

 

1 内存的类型

这些类型,其实是告訴CPU在解析或者说操作内存的时候应该用什么手段。就这么简单。为什么要这样做呢?一般情况下,内存都是应该是被设置为有cache来帮助CPU操作内存的,这样的话整个系统的效率就会比较高。但是某些设备所使用的内存却比较特殊,比如说Frame buffer就是一种很好的例子。那么软件(一般情况下是BIOS)就需要配置CPU的相关寄存来申明那些范围的内存在处理的时候需要做什么样的动作(这就是类型)。总的来说它们允许CPU优化不同类型的内存如RAMROM和帧缓冲内存(frame buffer),内存操作映射I / O设备。这种做法简化了内存控制系统的硬件设计引脚。

MTRR机制允许多达96个内存范围(memory ranges)在物理内存的定义,它定义了一系列的MSRs,这些寄存器分别去说明MSR定义中包含的那段内存的具体类型。图2MTRRs物理内存映射的示意图。

 

2 MTRRs物理内存映射示意

而每一段的内存可以被定义的类型有多个,见图3.

 

 

3 Memory Types That Can Be Encoded in MTRRs

硬件复位之后,P6及大多最近的处理器系列禁用所有的固定和可变MTRRs,这使得所有的物理内存的类型都成为了uncacheable。初始化软件应该依据系统定义的存储器映射设置MTRRs成特定的类型。典型的,BIOS(基本输入/输出系统)软件来配置MTRRs

在一个多处理器系统中,使用的P6系列或者较新的处理器系列,每个处理器必须使用相同的MTRR内存映射,从而使软件的内存有一致的视点。

2 MTRR Feature Identification

MTRR的功能可用性是模型具体。软件可以判定处理器上MTRRs是否支持。它只需要通过执行CPUID指令,读取的MTRR Flag的状态(EDXbit 12)状态。

如果MTRR标志被置为1(表明该处理器采用MTRRs),MTRRs的其他信息可以从64位的寄存器IA32_MTRRCAP中获得(MTRRcap MSRP6系列处理器的名字)。IA32_MTRRCAP MSR是一个只读的MSR,它可以用RDMSR指令读取。图4显示了IA32_MTRRCAP MSR的内容。

 

4 IA32_MTRRCAP Register

寄存器中的这些Flags和相应区域的功正如:

 •VCNTvariable range registers count)区域(field&#

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值