Cache 和主存的映射方式

直接映射

地址结构:

tag 标记Cache 行号块内地址

全相联映射

使用相联存储器,成本较高,但是不会冲突,空间利用率高,命中率高。缺点是标记比较的速度更慢。

每个 Cache 行都设置一个比较器比较器位数等于标记字段 tag 的位数。访存时根据标记字段的内容来访问 Cache 行中的主存块,所以是“按内容访问”。

地址结构:

tag 标记块内地址

组相联映射

r 路组相联是指每组有 r 个 Cache 行。

地址结构:

tag 标记组号块内地址

标记项

直接映射的 Cache 行的存储容量示意:

有效位脏位LRU 替换控制位tag 标记数据

Tip

  • 脏位只有回写法才需要设置;
  • LRU 控制位只有 LRU 算法才需要设置,位数为
  • n 路组相联映射有 n 个相联存储器

其中前面四项统称标记项。

二路组相联映射一行就是一组,有两个标记项:

标记项标记项
标记项标记项
标记项标记项
标记项标记项

主存块的替换算法

  1. RAND 随机算法:RAND 实际上是不需要什么算法,所以Cache 行中不需要随机替换控制位
  2. FIFO先进先出算法
  3. LRU最近未使用算法
  4. LFU 最不经常使用算法:每一行带一个访问计数器,淘汰计数器值最小的那一行

一致性问题

写操作命中时:

  • 全写法(直写法):写命中时把数据同时写回 Cache 和主存,这样当需要替换主存块时,就不需要再写回主存了
  • 回写法:写命中时,只把数据写回 Cache,当此块被换出时再写回主存

写操作不命中时:

  • 写分配法:更新主存单元,并把这一块调入 Cache
  • 非写分配法:只更新主存单元内容

回写法和写分配法一起使用 全写法和非写分配法一起使用