阅读133 返回首页    go 技术社区[云栖]


计算机体系结构7_缓存控制机制

一,缓存控制机制

           AMD64提供一系列机制用于设置内存的缓存特性:

                    

                      Cache disable

                      CR0的bit 30为cache-disable bit,CR0.CD. CR0.CD=0,开启缓存功能;CR0.CD=1,关闭缓存功能。

                      当缓存功能被关闭时,读写均通过主存完成。

                      当缓存中存有有效数据或指令时,软件可以关闭缓存功能。

                      当缓存功能被关闭时,如果读或写操作命中L1数据缓存或者L2缓存,处理器执行如下操作:

                         1. 如果cache line为modified或owned状态,写回内存;

                         2.使cache line失效;

                         3.通过执行一次non-cacheable的主存读或写。

                      当缓存功能被关闭时,如果取指令命中L1指令缓存,处理器通过缓存读指令而不是主存。

                      当缓存功能被关闭时,处理器同样会相应其他处理器的probe。如果probe命中缓存,会导致当前处理器执行1,当probe是由主存写,

                      或者exclusive读时, 2步骤会被执行。

                     
                      Writethrough Disable

                      CR0的bit 29为not writethrough bit,CR0.NW.

                      在早期的X86处理器中,CR0.NW=0使能主存的writeback功能,关闭writethrough功能。当CR0.NW=0时,软件可以通过

                      使用其他的控制机制关闭特定内存页或区域的writeback功能。 CR0.NW=1关闭主存的writeback功能,开启writethrough

                      功能。

                      AMD64的缓存操作模式:

                      

                     

                   

                     Page-Level Cache Disable,以页为单位的缓存关闭机制。

                   

                    Page-Level Writethrough Enable,以页为单位的写通控制机制。

                   

                    Memory Type,软件可以通过两种机制设置内存区间的特性:

                        MTRRs(memory-type range registers),根据物理地址控制内存的功能。

                        PAT(page-attribute table),根据虚拟地址控制内存的功能。

二,缓存机制优先级

                缓存机制优先级如下:

                     

                   在低优先级机制内存区域中,可以设置区域中的区段为高优先级机制,反则不允许。

                 

     参考:

               AMD64 Architecture Programmer’s Manual Volume 2: System Programming

最后更新:2017-04-03 14:54:08

  上一篇:go 剑指Offer之数值的整数次方
  下一篇:go 起泡排序【模板】