Cache存储系统的地址映象及变换方法精讲

写在前面

本文内容参考MOOC平台华中科技大学计算机原理课程

Cache存储系统的地址映象及变换方法

CPU工作时给出的是主存的地址,要从Cache存储器中读写信息,就要将主存地址转换为Cache存储器的地址,这种地址转换称之为地址映像。

Cache的数据结构:有效位 + 标志位 + 偏移量(块内地址)

一个cache地址对应一个字的数据

相联存储器

快速判断主存对应的地址是否在cache中

步骤如下:

  1. 把拿到的主存地址通过不同的映射方式拿到标志key

  2. 使用多路并发比较线路进行在cache中查找符合的

    1. 在有效位为1的块中进行查找(提高效率)
    2. 并发比较标记字
    3. 找到则使用块内地址找到精准的唯一地址
    4. 拿到该地址的数据
  3. 找到就放进符合寄存器取出命中行的数据

img

img

全相联映射

工作原理

img

主存地址的标记放进比较器寻找是否命中,命中则取出对应cache的数据

案例理解

假设cpu需要的访问序列如下,

  1. 1F对应000011111 在cache中找不到,去主存中取整个块,在cache中随机找一个空的块放入,不仅放块数据,还有放标志位,有效位变为1 ,然后在cache中取出对应块内地址的数据(11对应1C)
  2. 找20 24 (同1F)
  3. 找到1E000011110 cache命中 直接拿出1D数据

img

特点
  • 主存地址 = 主存块号 + 块内地址
  • cache利用率高
  • 块冲突率低
  • 淘汰算法复杂(要一一检索所有cache块)
  • 适用于小容量cache

直接映射

工作原理

img

img

案例理解

img

img

  1. 1F 0000 111 10 从主存中拿到后放到第7cache块
  2. 20 24 miss 同1F
  3. 1E 0000 11110 hit 直接拿到1D数据
  4. 44 0010 001 00 先找到第1个cache块 比较标志tag 不一致 miss 从主存中取出覆盖
特点(与全相联完全相反)
  • 主存地址 = 主存区号 + 区内块号 +块内地址
  • cache利用率低
  • 块冲突率高
  • 淘汰算法简单(只比较一个)
  • 适用于大容量cache

组相联映射

工作原理

img

img

案例理解
  1. 1F 00001 11 11 11对应第三组 miss 从主存取出 随机放入组内块
  2. 20 24都miss 同上
  3. 1E 00001 11 10 11对应第三组 存在标志00001 hit 直接取出块内10对应的1D数据
  4. 48 54 都miss
  5. 107时 10000 01 11 对应第一组 没有对应标志块,进行替换

img

img

特点(折中)
  • 主存地址 = 主存组号 + 组内块号 +块内地址
  • 折中
  • k路组相联的k表示一组内多少行 所以8路就是全相连 1路就是直接映射

例题1 直接映射

img

\1) 直接映射 主存地址 = 区号 + 区内块号 + 块内偏移量

  • 块内偏移量 cache块大小 16B 所以4位表示
  • 区内块号就是cache行数 64KB/16B 2^12bit 12位
  • 区号: 32-4-12 = 16位

2)数据字长32位 16B 可以知道有4个字 因此块内偏移量的4位:2位字偏移 2位字节偏移

img

3)容量 = cache行数 * 每行的位数 = 2^12行 * (1+16+128)

img

例题2 组相联映射

img

\1) 组相联映射 主存地址 = 组号 + 组内块号 + 块内偏移量

  • 块内偏移量 cache块大小 8*32bit=32B 所以5位表示
  • 组内块号就是cache组数 cache行数16KB/32B 2^9bit 所以组数2^9bit/4 = 2^7bit 7位
  • 组号: 总位数(16MB = 2^24位)组号24-7-5 =12位

2)100个字 在主存中占100%8 = 13块<2^7组 所以都在主存的第0组

不命中的字是0 8 16…

img

3)加速比由第二问得出

img

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jiong-952

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值