cache的功能: cache是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术,其原理基于程序运行中具有的空间局部性和时间局部性特征。cache存取速度比主存快,容量远小于主存。从功能上看,它是主存的缓冲存储器,由高速的SRAM组成,为了追求高速,包括管理在内的全部功能由硬件实现,因而对程序员是透明的。
cache失效的原因: 1.义务失效 2.容量失效(地址映射,全相联解决) 3. 冲突失效(映射地址相同,n路组相联解决)
cache的基本原理: 当CPU读取内存中一个字时,便发出此次的内存地址到cache和主存,此时cache控制逻辑,依据地址判断此字当前是否在cache中,若是,则cache命中,此字立即传送给CPU,若不是,则cache缺失(未命中),用主存读周期把此字从主存读送到CPU,与此同时把含有这个字的整个数据块从主存读出送到cache中。注:若主存没有数据向外存要。
cache的命中率:
例题:
cache的设计需要遵循两个原则: 一是希望cache的命中率尽可能高,实际应接近于1,二是希望cache对CPU而言是透明的,即不论是否有cache,CPU访存的方法都是一样的。
地址映射: 为了把主存块放到cashe中,必须应用某种方法把主存地址定位到cache中。
cache地址变换: 当CPU访问存储器时,它所给出的一个字的内存地址会自动变换成cache的地址。
全相联映射方式:
直接映射方式:
cache的替换策略:
1.最不经常使用(LFU)算法
2.近期最少使用(LRU)算法 (用的最多)
3.随机替换
4.轮转
cache的写操作策略:
1.写回法(或写返回)
2.全写法(或写穿透)
Pentium4的cache组织
一级缓存分开的原因:数据和指令局部相互影响。
一级缓存读取数据约4个时钟周期。
二级缓存读取数据约11个时钟周期。
三级缓存读取数据约40个时钟周期。
主存读取数据约300个时钟周期。