cache的替换策略与写操作策略

来源:互联网 发布:pro软件下载 编辑:程序博客网 时间:2024/06/08 15:30

参考资料:《计算机组成原理》(第五版) 白中英等著


替换策略:

一、最不经常使用算法(Least Frequently Used,LFU):

LFU算法认为:应该将一段时间内被访问次数最少的那行数据替换出。

实现方法:每行设置一个计数器。新行建立后从0开始计数,每被访问一次,被访问行的计数器增1。当需要替换时,对这些特定行的计数值进行比较,将计数值最小的行换出,同时将这些特定行的计数器清零。

该算法不能严格反映近期访问情况。


二、近期最少使用算法(Least Recently Used,LRU):

LFU算法将近期内长久未被访问过的行换出。

实现方法:每行设置一个计数器,但它们是cache每命中一次,命中行计数器清零,其他各行计数器增1。当需要替换时,将计数值最大的行换出。

该算法保护了刚拷贝到cache中的新数据行,较为符合cache的工作原理,有效地提高了命中率。


三、随机替换:

不需要算法,从特定的行位置中随机地选取一行换出即可。

该策略在硬件上容易实现,速度较前两种策略快。但是会在一定程度上降低cache的效率。这些不足会随着cache容量增大而减小。



写操作策略:


一、写回法:

要求:当CPU写cache命中时,只修改cache中的内容,不立即写入主存,只有当此行被换出时才写回主存。当CPU写未命中时,为了包含欲写字的主存块在cache中分配一行,将此块拷贝到cache后再进行修改。主存的写修改操作统一地留到换出时再进行。

实现:每个cache行配置修改位,以反映CPU是否对该行修改过。该行被换出时,根据修改位的内容决定改行内容是写回主存还是简单弃去。

特点:写cache与写主存异步进行,可以减少访存次数,但是存在cache与主存不一致性的隐患。同时,还要设置修改位,相应的逻辑较为复杂。


二、全写法:

要求:当写cache命中时,cache与主存同步发生修改。当写cache未命中时,直接向主存进行写入,但是修改过的主存块是否拷贝到cache,有WTWA法(将修改后的主存块立即拷贝到cache),WTNWA法(不会将修改后的主存块立即拷贝到cache)。

特点:实现写cache与写主存同步,有效地保证了cache与主存内容的一致性。无需设置修改位,逻辑较为容易。但由于写cache未命中时,即cache对CPU向主存的写操作无高速缓冲功能,降低了cache的功效。


三、写一次法:

基于上述两种写策略的综合,第一次写命中时,采用全写法;后续采用写回法。




原创粉丝点击