高速缓冲存储器
大家好呀!我是小笙,由于存储器这部分章节内容较多,我分成二部分进行总结,以下是第二部分,希望内容对你有所帮助!
概述
目的:避免CPU空等现象
原理:程序访问的局部性原理(指令和数据在主存地址分布不是随机的,而是相对的簇聚,也就是说程序大部分访问都是少数的指令和数据)

Cache 工作原理
主存和缓存的编址
- 主存和缓存按块存储,块的大小相同(B 就是块的大小)
- Cache 内的块内地址不仅大小和主存一样,而且取值也是一样的
- Cache 内的标记就是来记录主存的主存块号
命中与未命中
缓存共有 C 块,主存共有 M 块(M >> C)
- 命中:CPU 所要访问的数据已经从主存储器映射到了 Cache 缓存中(用标记建立起与主存的关系)
- 未命中:CPU 所要访问的数据没有在 Cache 缓存中找到
- 命中率 h:CPU欲访问的信息在 Cache 中的比率(与 Cache 的容量和块长有关)
- 访问效率 e:tc / (h * tc + (1-h) * (tm + tc)) * 100% (区间:[tc / tm ,1]) (访问 Cache 的时间 tc ; 访问主存的时间 tm)
示例详解
假设 CPU 执行某段程序时,共访问 Cache 命中3000次,访问主存 20 次。已知 Cache的存取周期为50ns,主存的存取周期为200ns,求Cache-主存系统的命中率、访问效率和平均访问时间?
- 命中率 = 命中 Cache 的次数 / 总次数 = 3000 / (3000+20)
- 平均访问时间 = Cache的存取周期 * 命中率 + (1 - 命中率) * 主存的存取周期 = 50ns * h + (1-h) * 200ns
- 访问效率 e = 访问 Cache 的时间 / 平均访问时间 * 100% = 50ns / 50ns * h + (1-h) * 200ns
Cache 的基本结构
Cache 的基本结构原理框图
CPU(通过地址总线)给出地址,这个地址包括**(主存)块号和块内地址**。块内地址直接传给Cache,使用块号在主存Cache地址映像机构中确认是否命中。如果发生命中,得到Cache的块号;如果未命中,查看Cache中是否有空间可装入主存块。若有,访问主存装入Cache;若没有,启用Cache替换机构,根据替换算法,决定Cache中哪块可以被替换,然后访问主存替换Cache即可

它主要由Cache存储体、地址映射变换机构、Cache替换机构几大模块组成
-
Cache存储体
Cache存储体以块为单位与主存交换信息,为加速Cache与主存之间的调动,主存大多采用多体结构,且Cache访存的优先级最高
-
地址映射变换机构
地址映射变换机构是将CPU送来的主存地址转换为Cache地址
-
Cache替换机构
当Cache内容已满,无法接受来自主存块的信息时,就由Cache内的替换机构按一定的替换算法来确定应从Cache内移出哪个块返回主存,而把新的主存块调入Cache
-
Cache的读写操作
-
读操作
-