cache的替换策略

LRU

常见的LRU(Least Recently Used,即最近最少使用)替换策略总是预期对cache的访问是近期立即重新使用的(near-immediate re-reference)。LRU策略的cache way可以看成一个队列,队尾(要被踢出去)的位置是LRU,最近最少使用的位置,队首的位置是MRU(Most Recently Used),最近经常使用。

NRU

NRU(Not Recent Used) 是LRU的一个近似策略,被广泛应用于现代高性能处理器中。应用NRU策略的cache,需要在每个cache block中增加一位标记,该标记(NRU bit)“0”表示最近可能被访问到的,“1”表示最近不能访问到的。每当一个cache hit,该cache block的NRU bit被设置为“0”表示在最近的将来,该cache block很有可能再被访问到;每当一个cache miss,替换算法会从左至右扫描NRU bit为“1”的block,如果找到则替换出该cache block,并将新插入的cache block 的NRU bit置为“0”,如果没有找到,那么将所有cache block的NRU bit置为“1”,重新从左至右扫描。

STATIC RRIP

该替换策略是对NRU的扩展,其将NRU bit扩展成M位,当M=1时,该算法蜕化成NRU。而扩展成M位的原因是为了更细粒度的区分cache block,而不是只有两个状态(最近将要访问和最近最远将要访问)。该算法的描述和NRU相同,每当一个cache hit,该 block的NRU bit被设置为“0”表示在最近的将来,该cache block很有可能再被访问到;每当一个cache miss,替换算法会从左至右扫描NRU bit为“2^M -1”的block,如果找到则替换出该cache block,并将新插入的cache block 的NRU bit置为“2^M -2”,如果没有找到,那么将所有cache block的NRU bit增加1,重新从左至右扫描。上面将新插入的cache block设置为“2^M -2”,主要是为了防止那些很久才能被再次使用到的cache block长期占用cache空间。说到这里,你也许会说,这样岂不是影响那些空间局部性很好的程序的性能,确实是这样。

在RRIP类的策略中,NRU bit被描述为RRPV(Re- reference Prediction Values),可以理解为当前block被替换出去的可能性,越高越容易被替换出去。

DYNAMIC RRIP

对Static RRIP来讲,如果程序的工作集大于cache容量,那么将会频繁的换进换出,造成抖动。为此,Bimodal RRIP提出,对于新插入的cache block,以较大概率设置NRU bits为“2^M -1",同时以较小概率设置为”2^M -2",一次来避免抖动。那么对于混合的访存序列,应该使用SRRIP还是BRRIP的问题,一种称之为“set Dueling”的技术将两种技术应用到不同的两个cache set上,然后统计两个set上的运行情况(主要是命中率),然后来决断到底使用两种技术中的哪一个,然后将该算法策略

PLRU是一种缓存替换策略,它代表了Pseudo-LRU(伪LRU)。PLRU替换算法是一种针对缓存的最近最少使用(LRU)算法的优化。PLRU算法通过使用位向量来跟踪每个缓存行的使用情况,以决定哪些行应该被替换。 PLRU算法的实现使用了一种类似于二叉树的数据结构,其中每个节点表示缓存中的一个行。每个节点都有两个位,称为左位和右位,用于表示在该节点之后是否访问了左子节点或右子节点。 当需要替换缓存行时,PLRU算法会从根节点开始遍历这个二叉树。如果遇到一个节点的左位为0,则选择替换该节点的行,并将该节点的左位设置为1。如果遇到一个节点的右位为0,则选择替换该节点的行,并将该节点的右位设置为1。如果遇到一个节点的左位和右位都为1,则继续向下遍历。 PLRU算法的优点是它能够保持相对较高的命中率。由于它使用了一个类似二叉树的结构,它可以快速找到最近最少使用的缓存行进行替换。与传统的LRU算法相比,PLRU算法的实现更加高效。 因此,PLRU是一种缓存替换策略,它通过使用位向量和类似二叉树的结构来选择要替换的缓存行,以提高缓存的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Cache 替换策略](https://blog.csdn.net/luoganttcc/article/details/128319347)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [缓存替换策略cache replacement policies)](https://blog.csdn.net/uncle_ll/article/details/103164974)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于BWDSP指令Cache的PLRU替换算法研究](https://download.csdn.net/download/weixin_38622983/12952266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值