Cache原理
Cache原理
由于cpu与主存(DRAM)速度有差异,为了提高访存速度,产生了cache(高速缓冲寄存器);
Cache(SRAM)利用了程序访问的局部性原理,即时间局部性和空间局部性
- 当前正在使用的指令或数据,在不久的将来,还会使用
- 当前正在使用的指令或数据相邻的指令或数据,在不久的将来,还会使用
cache和主存交换数据的单位是块,这个块包含了正在使用的指令或数据(时间),也包含了相邻的指令或数据(空间)
cache的基本结构

cache命中相关的两个机制
cache命中率
cache速度比主存快,所以我们更希望是从cache中取数据,所以cache命中率越大越好;
设cache命中率h,Nc表示cache的存取次数,Nm表示主存的存取次数

cache-主存系统效率
设cache访问时间tc,主存访问时间tm,当它们并行访问时, Ta = h⋅Tc+(1−h)⋅Tm
则效率eh

可以看到这个效率在 tc/tm ~ 1
如果先访问cache,在cache没有命中时再访问主存,Ta = h⋅Tc+(1−h)⋅(Tm+Tc)
则效率e

这是的效率在 tc/(tm+tc) ~ 1
对比下:并行访问的最低效率是高于串行访问的
cache读操作

读操作不对主存-cache信息进行修改
cache写操作
写操作会修改信息,有两种方法:
写直达法:写操作既写入主存,又写入cache;时刻保持了数据一致
写回法:写操作只写入cache,只有cache数据被擦除,才写回主存
写直达法可能会导致频繁的主存cache数据交换
写回法在多核cpu中,每个核都有cache,主存的块如果在不同cache都有备份就会有数据不一致问题