4.2.1 Cache - Introduction
为什么使用Cache
- 因为主存和CPU发展速度的剪刀差,导致主存与CPU之间性能差异越来越大,主存称为限制计算速度的瓶颈。为了缓解这种差异,在主存与CPU之间加入速度更高的Cache。
- 由于IO访存优先级比较高,在IO访存的时候,主存一直忙,会造成CPU空等。为了解决这个问题,也需要在主存与CPU之间加入Cache作为缓冲。
程序访问的局部性原理
Cache的基本结构和读写操作
读操作
- 通过地址变换算法将主存地址变换为缓存地址
- 判断缓存是否命中
- 若命中,就将信息送入CPU
- 若未命中,则将信息通过主存调入CPU,同时将信息写入缓存,需要替换时,利用替换算法进行替换
写操作
写操作需要解决Cache和主存一致性的问题,一般采用两种方式
- Write Through
同时将信息写入主存和Cache,写操作时间就是访问主存的时间,更新策略比较容易实现 - Write Back
只把数据写入Cache,当块从Cache中退出时才将更新了的数据写入主存,写操作时间就是访问Cache的时间,但是增加了Cache的复杂性
Cache的命中与命中率
Cache的命中是指欲读取的数据已经在缓存内。
命中率是指命中Cache的次数占访问信息总次数的比率,
平均访存时间为
访存效率为
Cache的改进
- 增加Cache的级数
- 将Cache分立,做成分立缓存(程序和数据)