当前位置:首页 > 行业动态 > 正文

存储系统采用cache层次的原因是什么cache的替换算法有哪些

存储系统采用cache层次主要是为了提高存储速度和效率,减少CPU访问内存的延迟。常见的Cache替换算法有随机算法(RAND)、先进先出算法(FIFO)、近期最少使用算法(LRU)等。

存储系统采用cache层次的原因

1、解决速度容量成本矛盾:Cache的存取速度可以和CPU的工作速度相媲美,能够缩小主存和CPU之间的速度差距,从整体上提高存储器系统的存取速度,由于Cache成本高但容量小,不会使存储系统的整体价格增加。

2、利用程序局部性原理:程序在执行时具有局部性,包括时间局部性和空间局部性,时间局部性是指刚被访问过的数据很可能在近期再次被访问;空间局部性是指一旦程序访问了某个存储单元,其附近的存储单元也很可能被访问,Cache正是利用了程序的局部性原理,将近期可能会被频繁访问的数据存储在Cache中,以便快速响应CPU的访问请求。

3、减少访存延迟:CPU的运算速度比内存快得多,如果直接从内存中读取数据,会产生较大的访存延迟,影响系统性能,通过在CPU和主存之间设置Cache,可以将经常访问的数据缓存在Cache中,当CPU需要读取数据时,首先在Cache中查找,命中则可直接获取,大大减少了访存延迟,提高了系统的整体性能。

4、提高系统吞吐量:存储系统采用Cache层次结构后,可以更快地响应CPU的访存请求,使得CPU能够更高效地执行指令,从而提高整个系统的吞吐量,即单位时间内系统能够处理的任务量。

cache的替换算法

1、随机替换算法(RAND):从现存数据中随机选择一个元素进行替换,该算法不需要维护历史访问记录的任何信息,实现上简单高效,但命中率通常一般。

2、先进先出算法(FIFO):每次替换最先进入缓存的数据,该算法认为最先进入的数据在将来被访问到的可能性最小,FIFO算法存在Belady现象,在某些情况下,缓存容量增大命中率反而降低。

3、最近最少使用算法(LRU):选择最近最久未使用的缓存数据予以替换,基于过去一段时间内数据的访问情况,推测未来趋势,淘汰最不可能被立即再次访问的数据,这种策略在实际中应用较广,能够较好地利用程序的时间局部性原理,但实现相对复杂,需要记录每个数据的最后访问时间。

4、最不经常使用算法(LFU):选择当前缓存中访问次数最小的数据进行替换,淘汰最不常访问的页面,其核心思想是尽量保留可能在未来会再次访问的数据,淘汰那些已经很久没有被访问的页面,该算法实现起来相对简单,但可能会受到历史访问频率的干扰,导致一些实际上可能会在未来频繁访问的数据被过早淘汰。

5、Belady最优替换算法(OPT):每次都替换未来最长时间内不再被访问的缓存数据,这是理论上的最优算法,但由于需要已知未来所有访问记录,并不具备可实现性,通常用于衡量其它缓存替换算法的优劣。

6、重引用间隔预测算法(RRIP):使用M bits来存储每个数据的RRPV值,RRPV值随着每个数据被访问的频率动态变化,每次替换RRPV值等于0的数据。

7、Hawkeye算法:通过使用过去的访问记录来模拟OPT算法的行为产生输入来训练Hawkeye Predictor,再基于Predictor做决策。

8、PARROT算法:将缓存替换任务建模为强化学习任务,目标是找到能使长期累积奖赏最大化的缓存替换策略。

0