前言:转载的同时为了记录一下学习笔记,以便后续温故。
原文链接:Cache的基本原理
文章结构:
- 以一段C语言代码引出问题——数据是以行(line cache)的形式存储的。
- cpu寄存器读写访问速度快,主存储访问速度慢,中间加cache,作为缓存。
- 增加多级缓存,增加“命中”概率,让整体读取时间减少,每一级读取时间更平滑。
- 直接映射缓存,index是组寻址(行),offset是cache line上的字节寻址(列),把去除地址信息的数据放在tag array里,这个也属于cache的一部分,tag array用于比较数据,确定是“命中”还是“缺失”。
- 直接映射缓存大小不够,导致cache颠簸,就是需要在主缓存里寻址有效数据的概率,那么可以使用两路组相连缓存,我认为本质上就是扩大了cache,减少了颠簸。还有全相连缓存,也就是都在同一组,此时不再需要index组寻址。
- cache分配策略,重点在与写直通和写回,写直通是把CPU数据同步写入到cache和主存储中,结果就是cache和主存储数据一致。写回是CPU先把数据写入cache,等该cache line需要更新的时候,再把数据写入主存储,对应的地址根据tag中的值及所处的cache line行计算得到,所以结果是cache和主存储数据不一致。
-----------------------------------------END------------------------------------------