cache主要用来解决CPU 与 主存之间速度不匹配的问题,使用cache 就要注意两个主要的指标,首先命中率要高,其次是cache对而言应该是透明的,即无论是否有cache cpu访存的方法都是一样的;
地址映射方法
全相联映射
顾名思义 每个cahce 可以映射到主存的任意一个位置,cache中保存主存地址+缓存的内容,非常的灵活。
缺点:高速比较器电路难以实现,适合小的cache使用。
直接映射的方式
直接映射也是多对一的映射关系,但是一个主存块只能拷贝到cache的一个特定的行位置去,这种方法cache的容量最好大一点。
缺点:频繁的置换会使cache的效率下降,需要大容量的cache减少置换次数。
组相连映射方式
组相联映射是前两种的折中方式。即分组,在每一组中,分到哪一行是灵活的。
cache的替换策略
最不经常使用(LFU)算法
LFU算法就是将一段时间内最不经常使用的数据换出。为每一行设置一个计数器,被访问的行计数器增加1,换值小的行,不能反映近期cache的访问情况。
近期最少使用(LRU)算法
LRU就是将近期内长久未被访问过的行换出,每行也设置一个计数器,命中则清零,其余行加一,需要替换则将计数器最大值换出,这种方法保护了刚刚复制到cache的新数据,使得cache有较高的命中率。
随机替换
随机替换,不使用计数器,不进行比较,速度要比上两种的速度快,但是会降低命中率,在cache容量较大时,性能只是稍逊于前两种算法。