一、cache基本原理
1.cache的功能
cache是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。其原理基于程序运行中具有的空间局部性和时间局部性特征。
●一般采用高速的 SRAM 构成。
● CPU 和主存之间的速度差别很大采用两级或多级 Cache 系统
●早期的一级 Cache 在 CPU 内,二级在主板上
●现在的 CPU 内带L1 Cache 和L2 Cache ●全由硬件调度,对用户透明
CPU与存储器系统的关系
2. cache的基本原理
cache除包含SRAM外,还要有控制逻辑。若cache在CPU芯片外,它的控制逻辑一般与主存控制逻辑合成在一起,称为主存/ chace 控制器;著 cache 在 CPU 内,则由 CPU 提供它的控制逻辑。
CPU与cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。一个块由若干字组成,是定长的。当CPU读取内存中的一个字时,便发出此字的内存地址到cache和主存。此时cache控制逻辑依据地址判断此字当前是否在cache中:若是,则cache命中,此次立即传送给CPU;若非,则cache缺失(未命中),用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中。
cache原理图
3.cache的命中率
从 CPU 来看,增加一个 cache 的目的,就是在性能上使主存的平均读出时间尽可能接近 cache 的读出时间。为了达到这个目的,在所有的存储器访问中由 cache 满足 CPU 需要的部分应占很高的比例,即 cache 的命中率应接近于1。由于程序访问的局部性,实现这个目标是可能的。
Nc: cache完成存取的总次数
Nm:主存完成存取的总次数
h:命中率
tc:命中时的cache访问时间
tm:未命中时的主存访问时间
1-h:未命中率(缺失率)
ta: cache/主存系统的平均访问时间
r=tm/tc: 主存与cache的访问时间之比
e:访问效率
为提高访问效率,命中率h越接近1越好。r值以5-10为宜,不宜太大。
命中率h与程序的行为、cache的容量、组织方式、块的大小有关。
cache失效的原因:
义务失效;容量失效;冲突失效。
4. cache结构设计必须解决的问题
从cache的基本工作原理可以看出,cache的设计需遵循两个原则,一是希望cache的命中率尽可能高,实际应接近于1;二是希望cache对于CPU而言是透明的,即不论是否有cache,CPU访存的方法都是一样的,软件不需增加任何指令就可以访问cache。
二、主存与cache的地址映射
1.全相联映射方式
将地址分为两部分(块号和字),在内存块写入 Cache 时,同时写入块号标记;CPU 给出访问地址后,也将地址分为两部分(块号和字),比较电路块号与 Cache 表中的标记进行比较,相同表示命中,访问相应单元;如果没有命中访问内存, CPU 直接访问内存,并将被访问内存的相对应块写入Cache 。
全相联映射的cache组织
全相联的映射方式,特点:
●优点:冲突概率小, Cache 的利用高。
●缺点:比较器难实现,需要一个访问速度很快代价高的相联存储器
应用场合:
●适用于小容量的 Cache
2.直接映射方式
映射方法(一对多)如:
i = j mod m
主存第块内容拷贝到 Cache 的i行
一般i和 m 都是2ⁿ级
直接映射的cache组织
●利用行号选择相应行;
●把行标记与CPU访问地址进行比较,相同,表示命中访问cache;
●如果没有命中则访问内存,并将相应块写入cache;
直接映射方式特点:
●优点:比较电路少 m 倍线路,所以硬件实现简单, Cache 地址为主存地址的低几位,不需变换。
●缺点:冲突概率高(抖动)
应用场合
●适合大容量 Cache
三、cache的替换策略
1)最不经常使用(LFU)算法
2)近期最少使用(LRU)算法(更贴近程序局部性原理)
3)随机替换
4)轮转
四、cache的写操作策略
1)写回法(write back,copy back)(写返回)
写回法要求:当CPU写cache命中时,只修改cache的内容,而不立即写入主存,只有当此行被换出时才写回主存。
2)全写法(write though)(写穿透)
全写法要求:当写cache命中时,cache与主存同时发生写修改,因而较好地维护了cache与主存的内容的一致性。
3)写一次法(write one)
写一次法是基于写回法并结合全写法的写策略:写命中与写未命中的处理方法和写回法基本相同,只是第一次写命中时要同时写入主存。