Cache与主存的映射方式

Cache行中的信息是主存中的某个块的副本,地址映射就是把主存地址空间映射到Cache地址空间,即把存放在主存中的信息按照某种方式装入Cache中。

Cache要为每一块加一个标记,指明它是主存中的那一块

为了说明Cache中的信息是否有效,Cache行需要一个有效位

1.直接映射

  主存中的每一行之装入到Cache中的唯一位置,如果发生块冲突,原来的块将会被无条件的换出,无需使用替换算法

  

  直接映射的关系可以定义为:

  Cache行号=主存块号 mod Cache总行数

  直接映射地址结构:

  

  CPU的访存过程:

  

  1)首先根据访存地址中间的c位,找到对应的Cache行。

  2)与对应Cache行中的标记和主存地址的高t位标记进行比较

  3)若相等,且有效位为1,则访问Cache命中,测试在根据主存地址中低位的块内地址,在对应的Cache行中存取信息。

   若不相等,或有效位为0,则不命中,此时CPU从主存中读出该地址所在的一块信息送到对应的Cache行中,将有效为置1,并将标记设置为地址中的高t位,同时将该地址中的内容送到CPU。 

2.全相联映射:

  主存中的每一块都可以装入Cache中的任何位置,每行的标记用于指出该行取主存的那一块,所以CPU访问时需要与所有的Cache行的标记进行比较。

  

 

  地址结构:

  

 

3.组相联映射:

  将Cache分成Q个大小相等的组,每个主存块可以装入固定组中的任意一行,即组间采用直接映射,而组内采用全相联映射的方式。假设每组有r个Cache行,则称之为r路组相连。

  

 

  组相联映射的关系可以定义为:

  Cache组号 = 主存块号 mod Cache组数(Q)

  组相联映射的地址结构:

  

 

posted @ 2022-04-15 15:07  风吹过半夏  阅读(1561)  评论(0编辑  收藏  举报