为什么要引入cache?
cache是一种高速缓冲存储器,为了解决CPU与主存之间速度不匹配的问题而提出。
当前,随着半导体器件的集成度的进一步提高,cache的速度有接近CPU,所以可将小容量的cache放入CPU中,从而组成了二级以上的cache系统。
cache的原理
基于程序运行中具有的空间局部性和时间局部性特征。
CPU与cache直间的数据交换是以字为单位,
cache与主存之间的数据交换是以块为单位.
cache的命中率计算
为提高访问效率,命中率h越接近1越好。r值以5~10为宜,不宜太大。
主存与cache的地址映射
cache的替换策略
cache的工作原理要求它尽量保存最新数据。当一个新的主存块需要拷贝到cache,而允许存放此块的行位置被其他主存块占满时,就要替换。
硬件实现的常用算法主要有
1、最不经常使用(LFU)算法
LFU算法认为应将一段时间内被访问次数最少的那行数据替换
2、近期最少使用(LRU)算法
LRU算法将近期内长久未被访问过的行换出
3、随机替换
实际上不能称为算法,只需从特定的行位置中随机地选取一行换出即可
cache的写操作策略
由于cache的内容只是主存部分内容的副本,它应当与主存内容保持一致。而CPU对cache的写入更改了cache的内容。
问题:如何与主存内容保持一致
三种写操作
1、写回法
当CPU写cache命中时,只修改cache的内容,而不立即写入主存,只有该行被替换才写入主存
2、全写法
当CPU写cache命中时,修改cache与主存的内容
3、写一次法
基于写回法并结合全写法的写策略:写命中与写未命中的处理方法和写回法基本相同,只是第一次写命中时要同时写入主存