4.2.1 Cache - Introduction

为什么使用Cache

  1. 因为主存和CPU发展速度的剪刀差,导致主存与CPU之间性能差异越来越大,主存称为限制计算速度的瓶颈。为了缓解这种差异,在主存与CPU之间加入速度更高的Cache。
  2. 由于IO访存优先级比较高,在IO访存的时候,主存一直忙,会造成CPU空等。为了解决这个问题,也需要在主存与CPU之间加入Cache作为缓冲。

程序访问的局部性原理

Cache的基本结构和读写操作

4.2.1 Cache - Introduction
读操作

  1. 通过地址变换算法将主存地址变换为缓存地址
  2. 判断缓存是否命中
  • 若命中,就将信息送入CPU
  • 若未命中,则将信息通过主存调入CPU,同时将信息写入缓存,需要替换时,利用替换算法进行替换

写操作
写操作需要解决Cache和主存一致性的问题,一般采用两种方式

  • Write Through
    同时将信息写入主存和Cache,写操作时间就是访问主存的时间,更新策略比较容易实现
  • Write Back
    只把数据写入Cache,当块从Cache中退出时才将更新了的数据写入主存,写操作时间就是访问Cache的时间,但是增加了Cache的复杂性

Cache的命中与命中率

Cache的命中是指欲读取的数据已经在缓存内。
命中率是指命中Cache的次数占访问信息总次数的比率,
h=NcNc+Nm h =\frac{N_c} {N_c+N_m}
平均访存时间tat_a
ta=h×tc+(1h)×tm t_a = h\times t_c+(1-h)\times t_m
访存效率ee
e=tatc×100% e=\frac{t_a}{t_c} \times 100\%

Cache的改进

  • 增加Cache的级数
  • 将Cache分立,做成分立缓存(程序和数据)