IA 64 and IA-32 MTRRs

Term

MTRRs - Memory Type Range Registers

PAT - Page Attribute Table

MSG - Mode Specified Register

PCD - Page-level Cache Disable

PWT - Page-level write-through

TLB - translation look aside buffers


Introduction

Memory Type Range Registers(MTRRs)是IA-32 Pentium Pro处理器引入的新功能。系统内存在各种不同类型的内存,比如RAM, ROM, Frame buffer memory以及memory_mapping IO, MTRRs使得处理器可以根据内存类型的不同,进行优化。

MTRRs是MSRs(Mode Specified Register)寄存器,这组寄存器保存着系统内部的物理内存如何映射为各种不同类型的内存。处理器使用这个映射来决定不同物理内存位置的cache能力,以及进行内存访问时的优化方法。举个例子,如果某个内存地址在MTRRs中指定为Write-through,那么处理器就会以Write-through的方式去操作这个地址:从这个物理地址读取Cache lines长度的数据并且cached到Cache lines中;在写数据时把数据写到总线上并且更行Cache中的内容,以保持Cache的一致性。MTRRs支持5宗内存类型,分别为:
  • uncacheable: UC
  • uncacheable , speculatable, write-combining: WC
  • write-through: WT
  • write-protected: WP
  • write-back: WB
早期的IA-32处理器,比如Intel486和Prntium处理器使用KEN#(cache 使能) pin 或者外围电路来决定物理内存类型和cache机制。MTRRs机制不再需要KEN# pin和外围逻辑电路,简化了硬件设计。

内存类型

uncacheable (UC)

系统内存不会被cached,读和写操作出现在系统总线上的顺序和执行序是完全相同的,也就是说不存在re-ordering。
不存在预测内存访问,这种类型的Cache控制非常适合内存映射的IO设备。如果用在普通的RAM上,将会极大的降低处理器性能。

Write-conbining (WC)

系统内存不会被cached,这一点和UC一样;一致性不是由处理器总线一致性协议执行的。
允许预测读;而写操作则会被延迟,并且会把写操作合并到write combining buffer中,以便减少内存访问。如果WC buffer是部分填充的,那么写操作要推迟到下一次序列化事件发生,如:SFENCE,MFENCE指令,以及CPUID执行,对非cached内存的读写操作,一个中断或者一个LOCK指令。
这种cache控制机制非常适合video frame buffer,因为写顺序对于framebuffer是不重要的,只要能够及时更新内存使得用户可以看到graphics上的显示内容就行。

Write-through (WT)

对内存的读写操作都经过cache。在读命中时从cache lines 中读取数据,如果读missed,则会导致cache的填充。
允许预测读。所有的写都会写到cache lines中(如果可能),然后写到系统内存中。当写通到系统内存时,无效的cache lines并不会被填充,有效的cache lines或者被填充或者标记为无效。Write-through允许write-combining存在。这种类型的cache控制非常适合frame buffer,以及访问系统内存,但是不做总线嗅探的总线设备。
这种内存类型保证了处理器cache和系统内存间的一致性。

Write-back (WB)

对内存的读写都经过cache。cache hits时从cache lines读取,如果cache missed,则会导致cache的填充。允许预测读。

写missed则会导致cache lines填充,写操作都尽可能在cache中执行。Write-combining是允许的

通过删除合并不必要的写操作,Write-back 内存类型减少了总线传输。写操作都积累在cache lines上,并不急于写回系统内存上,积累到一定程度才会写回系统内存。写回操作是通过cache lines的释放触发的,比如有新的cache lines分配请求,而此时cache lines已经全部被分配时。此外还可能被系统维护cache一致性的机制触发。

这种内存类型提供了最好的性能,但是需要所有设备在访问系统总线上的内存时,能够嗅探到内存访问,以确保系统内存和cache一致性。

Write-protected (WP)

首先从Cache lines上读数据,如果cache missed,则会填充cache lines。写操作被传播到系统总线,使得总线上所有处理器的cache lines都变得无效。
允许预测读。





发布了183 篇原创文章 · 获赞 42 · 访问量 142万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章