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都有备份就会有数据不一致问题