561 字
3 分钟
cache

局部性原理#

  • 时间局部性
    • 同一个变量被反复访问,访问聚合类型的不同分量算空间局部性
    • 循环里指令被重复执行
  • 空间局部性
    • 数组访问

工作原理#

性能分析#

命中率H:CPU欲访问的信息已在Cache中的比率 缺失(未命中)率:M=1HM=1−H 设 tc​为访问一次Cache所需时间, tm为访问一次主存所需时间,则Cache-主存系统的平均访问时间t为

  • 先访问Cache,若Cache未 命中再访问主存 t=Htc+(1H)(tc+tm)t=H⋅tc+(1−H)(tc+tm)
  • 同时访问Cache和主存,若Cache命中则立即停止访问主存 t=Htc+(1H)tmt=H⋅tc+(1−H)tm​

多级Cache系统下的性能分析#

映射方式#

  • 全相联映射
    • 地址结构 |高位标记|行内偏移|
    • TLB可以用全相联实现
  • 直接相联
    • 地址结构 |高位标记|缓存行号|行内偏移|
  • 组相联
    • 地址结构 |高位标记|缓存组号|行内偏移|
    • TLB也可以用组相联实现

写策略#

  • 写命中
    • write through 通常要配合一个write buffer来写入主存
    • write back 缓存行要添加一个脏字段表明是否与主存内容一致
  • 不命中
    • 写分配,写完后为该内存块加入缓存项,通常搭配写回法使用。
    • 写不分配,写完后内存块不放入缓存项,通常搭配全写法使用。

缓存项结构#

  • 有效
  • 脏位
  • LRU算法位 2N2^N路组相连需要NN位的LRU算法位
  • 高位标记
  • 缓存内容

缓存淘汰策略#

多级Cache#

Pasted image 20240803191034 其中,各级Cache之间一般采用全写法+非写分配法传递,而Cache-主存之间采用写回法+写分配法

抖动#

缓存发生频繁地淘汰置换

一致性#

cache一致性

其他#

  • 遍历数组求命中率要注意是否数组与缓存项对齐,否则缺失次数容易出错