Cache的替换算法及其特点

合集下载

cache的基本原理(一)

cache的基本原理(一)

cache的基本原理(一)Cache的基本原理什么是CacheCache(缓存)是计算机系统中一种提高数据访问效率的技术。

它通过将经常访问的数据存储在速度更快的存储介质中,以便快速获取,从而加快系统的响应速度。

Cache的作用1.提高数据访问速度:Cache能够将数据存储在速度更快的存储介质中,以便快速获取。

相比于从较慢的主存(RAM)中读取数据,从Cache中读取数据的速度更快,从而提高了系统的响应速度。

2.减轻系统负载:Cache能够减轻对主存的访问压力,从而减轻了整个系统的负载。

当数据被缓存到Cache中时,对该数据的访问将不再需要访问主存,从而减少了主存的读写操作,提高了整个系统的效率。

Cache的基本原理Cache的基本原理可以概括为以下几个步骤:1.检查数据是否在Cache中:当系统需要访问某个数据时,首先会检查该数据是否已经存储在Cache中。

如果在Cache中找到了需求的数据,则无需从主存中读取,直接从Cache中获取数据。

2.数据未在Cache中:如果需要的数据不在Cache中,则需要从主存中读取。

同时,系统会将该数据从主存读取到Cache中,以便下次快速访问。

通常会采用一定的缓存算法(如LRU)来选择适合替换的数据,确保Cache的空间被合理利用。

3.数据写回主存:当Cache中的数据被修改后,系统会在合适的时机将修改后的数据写回主存。

这样可以保证数据的一致性,并且避免数据的丢失。

Cache的命中率Cache的命中率是评估Cache性能的重要指标。

它表示在访问数据时,该数据已经在Cache中的概率。

命中率越高,越能够提高系统的响应速度。

Cache的命中率可以通过以下公式计算:命中率 = 命中次数 / 总访问次数提高Cache命中率的方法为了提高Cache的命中率,可以采取以下方法:•提高Cache容量:增加Cache的容量可以存储更多的数据,从而减少Cache缺失的概率,提高命中率。

计算机原理4.9Cache地址映射与变换方法

计算机原理4.9Cache地址映射与变换方法

计算机原理4.9Cache地址映射与变换⽅法1、主存与cache地址映射概述主存数据如何迁⾄Cache才能实现快速查找?常见的三种映射⽅式:全相联直接相联组相联2、全相联映射的⼯作原理主存分块,Cache分⾏,两者⼤⼩相同。

设每块4个字,主存⼤⼩为1024个字,则第61个字的主存地址为:00001111 01 (块号块内地址)主存分块后地址就从⼀维变成⼆维映射算法:主存的数据块可映射到Cache任意⾏,同时将该数据块地址对应⾏的标记存储体中保存全相联映射的特点:1、cache利⽤率⾼2、块冲突率低3、淘汰算法复杂应⽤场合:⼩容量Cache3、直接映射的⼯作原理主存分块,Cache分⾏,两者⼤⼩相同主存分块后还将以cache⾏数为标准进⾏分区设每块4个字,主存⼤⼩为1024个字,Cache分为4⾏,第61个字的主存地址为:000011 11 01(区号,区内块号,块内地址)主存地址从⼀维变成三维映射算法:Cache共n⾏,主存第j块号映射到Cache的⾏号为:i=j mod n即主存的数据块映射到Cache特定⾏。

直接映射的特点Cache利⽤率低块冲突率⾼淘汰算法简单应⽤场合:⼤容量Cache4、组相联映射的⼯作原理主存分块,cache分⾏,两者⼤⼩相同Cache分组(分组中包含K⾏),本例假定K=4主存分块后还将以Cache组数为标准进⾏分组(本例中,Cache共8⾏,两组,所以Cache每两个块就分⼀个组)设每块4个字,主存⼤⼩为1024个字,Cache分为4⾏,第61个字的主存地址为09000111 1 01 (组号,组内块号,块内地址)主存地址从⼀维变成三维映射算法:Cache共n组,主存第j块号映射到Cache的组号为:i=j mod n即主存的数据块映射到Cache特定组的任意⾏。

组相联映射各⽅⾯特点都位于全相联映射和直接映射之间。

存量替换算法

存量替换算法

存量替换算法
当Cache产生了一次访问未命中之后,相应的数据应同时读入CPU和Cache。

但是当Cache已存满数据后,新数据必须替换(淘汰)Cache中的某些旧数据。

最常用的替换算法有以下三种:
(1)随机算法。

这是最简单的替换算法。

随机法完全不管Cache 块过去、现在及将来的使用情况,简单地根据一个随机数,选择一块替换掉。

(2)先进先出(First In and First Out,FIFO)算法。

按调入Cache 的先后决定淘汰的顺序,即在需要更新时,将最先进入Cache 的块作为被替换的块。

这种方法要求为每块做一记录,记下它们进入Cache 的先后次序。

这种方法容易实现,而且系统开销小。

其缺点是可能会把一些需要经常使用的程序块(如循环程序)替换掉。

(3)近期最少使用(Least Recently Used,LRU)算法。

LRU 算法是把CPU 近期最少使用的块作为被替换的块。

这种替换方法需要随时记录Cache 中各块的使用情况,以便确定哪个块是近期最少使用的块。

LRU 算法相对合理,但实现起来比较复杂,系统开销较大。

通常需要对每一块设置一个称为“年龄计数器”的硬件或软件计数器,用以记录其被使用的情况。

cache的lru 算法和plru算法

cache的lru 算法和plru算法

cache的lru 算法和plru算法LRU(Least Recently Used)算法和PLRU(Pseudo-Least Recently Used)算法是常用于缓存系统中的两种替换策略。

缓存是计算机系统中的重要组成部分,它用于临时存储常用数据,以提高系统的性能和响应速度。

LRU算法和PLRU算法能够有效地管理缓存中的数据,优化缓存的使用和替换,从而提高系统的效率。

LRU算法是一种基于时间局部性原理的替换策略。

它的基本思想是,当需要替换缓存中的数据时,选择最近最少使用的数据进行替换。

具体实现方式是通过维护一个访问时间的队列,每当数据被访问时,将其移动到队列的末尾。

当缓存满时,将队列头部的数据替换出去。

这样,最近最少使用的数据就会被优先替换,从而保证了缓存中的数据都是被频繁访问的。

然而,LRU算法的实现需要维护一个访问时间队列,当缓存的大小较大时,这个队列会占用较大的内存空间。

为了解决这个问题,PLRU算法应运而生。

PLRU算法是一种基于二叉树的替换策略,它通过使用多个位来表示缓存中数据的访问情况。

具体来说,PLRU 算法将缓存中的数据按照二叉树的形式组织起来,每个节点代表一个数据块。

当需要替换数据时,PLRU算法会根据节点的位状态来确定替换的路径,最终找到最久未被访问的数据进行替换。

相比于LRU算法,PLRU算法的优势在于它不需要维护一个访问时间队列,从而减少了内存开销。

而且,PLRU算法的查询和更新操作都可以在O(1)的时间复杂度内完成,具有较高的效率。

然而,PLRU算法的实现相对复杂,需要使用位运算等技术,对硬件的要求较高。

在实际应用中,选择LRU算法还是PLRU算法需要根据具体的场景和需求来决定。

如果缓存的大小较小,内存开销不是主要问题,那么可以选择LRU算法。

而如果缓存的大小较大,对内存的消耗比较敏感,那么可以选择PLRU算法。

另外,还可以根据实际情况结合两种算法的优点,设计出更加高效的替换策略。

Cache替换策略与写操作策略

Cache替换策略与写操作策略

Cache的替换策略
例: 访问顺序号:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
访问主存块地址:1 2 4 1 3 7 0 1 2 5 4 6 4 7 2
0
10 2 31
42 5 63
块 1 1 1 1 1 1 1 1 1 1 41 4 4 4 4


4 4 4 4 04 0 0 50 5 5 5 5 5
• 常见的写操作策略有两种: 1、全写法、写直达法(Write Through) 2、回写法、写回法(Write B法、写直达法(Write Through):命中时,不仅写Cache, 也同时写入主存。使主存与Cache相关块内容始终保持一致。
优点:主存与Cache始终同步。 缺点:当CPU向主存写操作时, Cache无高速缓冲功能,降低了
Cache的写操作策略
2、回写法、写回法(Write Back):命中需要将信息 写入主存时,暂时只写入 Cache,并不写入主存, Cache中的这个块作一个标记,只有当该块内容需要从 Cache中替换出来时,再一次性写入主存。
优点:减少对主存的写操作次数, 工作速度较快. 缺点:存在Cache与主存数据不一致的隐患.
Cache的功效。
Cache的写操作策略
2、回写法、写回法(Write Back):Cache命中需要将信息写入主存 时,暂时只写入 Cache,并不写入主存,Cache中的这个块作一个 标记,只有当该块内容需要从Cache中替换出来时,再一次性写入 主存。
优点:减少对主存的写操作次数, 工作速度较快。 缺点:存在Cache与主存数据不一致的隐患。

2 2 2 2 72 7 7 7 7 7 67 6 6 26

Cache替换算法

Cache替换算法
Cache替换算法
计科1003班
小组成员
赵悦:2010011117
李望:2010011119
闭志鑫:2010011125 纪佳兴:2010011128
核心问题: 当发生失效时,应替换 哪一块?
使用替换算法
替换算法: 随机 法 先进先出法 最近最少使用法
最不常用算法
随机法(Random)
用随机数发生器产生 一个要替换的块号,将该 块替换出去。(即随机的 选择被替换的块。)
失效率低。
正确反映了程序的 实现起来非常困难。 局部性。
Thanks!
例:
页地址流 2
近期最少 使用LRU
命中5次 2
3
2 3
2
2 3
1
2 3* 1
5
2* 5 1
2
2 5 1*
4
2 5* 4
5
2* 5 4
3
3 5 4*
2
3 5* 2
5
3* 5 2
2
3* 5 2
最不常用算法 (LFU:least-frequently used)
选择近期最少访问的 页面作为被替换的页面。 (即淘汰一定时期内被访 问次数最少的页!)
例:
LFU算法一定时期为10分钟,如果每 分钟进行一次调页,主存块为3,若 所需页面走向为 2,1,2,1,2,3,4 当调页面4时会发生缺页中断 若按LRU算法,应换页面1(1页面最 久未被使用) 但按LFU算法应换页 面3(十分钟内,页面3只使用了一次)
替换算法
ቤተ መጻሕፍቲ ባይዱ
优点
缺点
随机法(Random) 简单、易于用硬件 没有考虑Cache块 实现。 过去被使用的情况, 失效率高。 先进先出法 (FIFO) 最近最少使用法 (LRU) 最不常用算法 (LFU) 容易实现。 不能正确反映程序 的局部性。 比较复杂,硬件成 本较高。

5.3.6_Cache替换算法

5.3.6_Cache替换算法

5.3.6 Cache替换算法 什么时候需要进行Cache替换? • Cache行数<<主存块数;• 主存块和Cache行:多对1;• 当一个新的主存块需要复制到Cache中时,如果Cache中的对应行已经全部被占满,怎么办?选择淘汰掉一个 Cache行中的块 5.3.6 Cache替换算法 什么时候需要进行Cache替换? 例:某Cache采用二路组相联映射,其数据区容量为16块。

假定第0组的两个行分别存放了主存第0块和第8块,此时需调入主存第16块,根据映射关系,它只能放到Cache的第0组。

第0组中必须调出一块,如何选择调出哪一块? 淘汰策略问题/替换算法 5.3.6 Cache替换算法 什么时候需要进行Cache替换? 直接映射(Direct Mapped)Cache• 映射唯一,无条件用新信息替换老信息 N路组相联(N-way Set Associative)Cache• 每个主存数据有N个Cache行可选择,需考虑替换哪一行 全相联(Fully Associative)Cache• 每个主存数据可存放到Cache任意行中,需考虑替换哪一行 常用替换算法:先进先出FIFO、最近最少用LRU、最不经常使用LFU、随机替换 当分块局部化范围  ( 即:某段时间集中访问的存储区  ) 超过了Cache 存储容量时,命中率会变得很低。

极端情况下,假设地址流是1,2,3,4,1,2,3,4,1,……,而Cache每组只有3行,那么,不管是FIFO ,还是LRU算法,其命中率都为0。

这种现象称为抖动(Thrashing / PingPong)LRU算法具体实现:通过给每个Cache行设定一个计数器,根据计数值来记录这些主存块的使用情况。

这个计数值称为LRU位 基本思想:随机地从候选的槽中选取一个淘汰,与使用情况无关  模拟试验表明,随机替换算法在性能上只稍逊于LRU算法,而且代价低! 例:假定计算机系统有一个容量为32K×16位的主存,且有一个4K字的4路组相联Cache,主存和Cache之间的数据交换块的大小为64字。

多核cpu cache替换算法

多核cpu cache替换算法

多核cpu cache替换算法多核CPU Cache替换算法是指在多核处理器中,当缓存容量已满时,如何选择和替换缓存中的数据,以便为新数据腾出空间。

以下是几种常见的多核CPU Cache替换算法:1. 随机替换算法(Random Replacement):随机选择一个缓存块进行替换。

优点是实现简单,但缺点是可能会导致缓存命中率下降。

2. 先进先出算法(FIFO Replacement):将最早进入缓存的块进行替换。

优点是实现简单,但缺点是可能会导致缓存命中率下降,尤其是当缓存已经存在热点数据时。

3. 最近最少使用算法(LRU Replacement):将最近最少使用的块进行替换。

优点是可以提高缓存命中率,但缺点是需要额外的存储空间来记录每个缓存块的访问时间。

4. 基于时间的替换算法(Time-Based Replacement):将最长时间未被访问的块进行替换。

优点是可以提高缓存命中率,但缺点是需要额外的存储空间来记录每个缓存块的访问时间。

5. 基于频率的替换算法(Frequency-Based Replacement):将最不经常使用的块进行替换。

优点是可以提高缓存命中率,但缺点是需要额外的存储空间来记录每个缓存块的访问频率。

6. 基于大小置换算法(Size-Based Replacement):将最小/最大的块进行替换。

优点是可以提高缓存命中率,但缺点是需要额外的存储空间来记录每个缓存块的大小。

7. 基于局部性替换算法(Spatial/Temporal Replacement):将与当前访问模式最不匹配的块进行替换。

优点是可以提高缓存命中率,但缺点是需要额外的存储空间来记录每个缓存块的访问模式。

8. 基于关联性替换算法(Associative Replacement):将与当前访问最不相关的块进行替换。

优点是可以提高缓存命中率,但缺点是需要额外的存储空间来记录每个缓存块的相关性。

以上这些多核CPU Cache替换算法都有各自的优缺点,选择哪种算法取决于具体的系统和应用场景。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Cache的替换算法及其特点重庆工商大学 09级计算机三班罗华蓉指导教师:朱超平摘要:本文的目的在于研究Cache的一些常用替换算法及对应替换算法的特点,在研究Cache的替换算法之前,我们首先要懂得Cache的由来、工作原理、基本结构以及主存地址映射方式等相关基本内容,再明确替换算法即替换策略的含义,最终达到对Cache替换算法和特点有充分的认识,能够分析各种替换算法的适合于何种情况以及各自的好处等,最好是能到达提出更加能提高Cache命中率的替换算法。

Abstract: this paper aims to study the Cache and the corresponding some common replacement algorithm in algorithms' characteristics, replace Cache replacement algorithm research, we first need to know before Cache of origin, working principle, basic structure and main memory address mapping method etc related basic content, then clear replacement algorithm is the meaning of replacement strategy, eventually to Cache replacement algorithm and characteristics of understanding of, can analyze various replacement algorithm is suitablefor circumstances and their benefits, etc, had better be put forward can reach more can improve the replacement algorithm shooting Cache.引言:高速缓冲存储器Cache的出现使CPU可以不直接访问主存,而与高速Cache交换信息,解决了主存与CPU速度不匹配的问题。

Cache的替换算法的目标是使Cache获得更高的命中率,掌握不同的Cache替换算法及各自的特点可以帮助我们认识Cache访存的局部性原理。

文中简略地介绍了Cache的由来、概念、工作原理、结构等相关内容,详细描述了Cache常用的替换算法及其特点。

在多体并行存储系统中,由于I/O设备向主存请求的级别高于CPU访存,这就出现了CPU等待I/O设备访存的现象,致使CPU空等一段时间,甚至可能等待几个主存周期,从而降低了CPU的工作效率。

为了避免CPU与I/O设备争抢访存,可在CPU与主存之间加一级缓存,这样,主存可将CPU要取的信息提前送至缓存,一旦主存在与I/O设备交换时,CPU可直接从缓存中读取所需信息,不必空等而影响效率。

Cache作为主存局部区域的副本,用来存放当前活跃的程序和数据,一般由半导体静态存储器构成。

它利用程序运行的局部性,把局部范围的内容从主存复制到Cache中,使CPU直接高速从Cache中读取程序和数据,从而解决CPU速度和主存速度不匹配的问题。

Cache的功能全部由硬件实现,因此有很快的响应速度。

Cache 是为了解决CPU和主存之间速度匹配问题而采用的一项重要技术,具有速度高、容量小、价格贵三个明显特点,高速:存取速度比主存快,以求与CPU匹配,由高速的SRAM组成,全部功能由硬件实现,保证了高速度;容量小:因价格贵,所以容量较小,一般为几百KB,作为主存的一个副本,可分为片内Cache和片外Cache。

Cache通常由两部分组成:块表和快速存储器。

其工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存Cache地址映像机构借助查表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按 Cache 地址访问Cache。

否则,Cache 不命中,则需要访问主存,并从主存中调入相应数据块Cache 中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映像关系。

从工作原理可以看出,它涉及到了两个问题。

首先是定位、然后是替换的问题。

Cache与主存之间的地址映像就是把CPU送来的主存地址转换成Cache 地址。

有三种方式:直接映像:它把主存空间按Cache大小等分成区,每区内的各块只能按位置一一对应到Cache的相应块位置上。

全相联映像:主存中的每一页可以映像到Cache中的任意一页。

组相联映像:是直接映像和全相联映像的折中方案。

即组间直接映像,组内全相联映像。

当新的主存块需要调入Cache并且它的可用空间位置又被占满时,需要替换掉Cache的数据,这就产生了替换策略(算法)问题。

在直接映射的Cache 中,由于某个主存块只与一个Cache字块有映射关系,因此替换策略很简单。

而在组相联和全相联映射的Cache中,主存块可以写入Cache中若干位置,这就有一个选择替换掉哪一个Cache字块的问题,即所谓替换算法问题。

理想的替换方法是把未来很少用到的或者很久才用到的数据替换出来,但实际上很难做到。

常用的替换算法有随机算法、先进先出算法、近期最少使用算法以及优化替换算法等。

根据程序局部性规律可知:程序在运行中,总是频繁地使用那些最近被使用过的指令和数据。

这就提供了替换策略的理论依据。

综合命中率、实现的难易及速度的快慢各种因素,替换策略可有随机法、先进先出法、最近最少使用法等。

替换算法目标就是使Cache获得最高的命中率。

Cache替换算法是影响代理缓存系统性能的一个重要因素,一个好的Cache替换算法可以产生较高的命中率。

常用算法如下:1.随机法(RAND法)随机替换算法就是用随机数发生器产生一个要替换的块号,将该块替换出去,此算法简单、易于实现,而且它不考虑Cache块过去、现在及将来的使用情况,但是没有利用上层存储器使用的“历史信息”、没有根据访存的局部性原理,故不能提高Cache的命中率,命中率较低。

2.先进先出法(FIFO法)先进先出(First-In-First-Out,FIFO)算法。

就是将最先进入Cache的信息块替换出去。

FIFO算法按调入Cache的先后决定淘汰的顺序,选择最早调入Cache的字块进行替换,它不需要记录各字块的使用情况,比较容易实现,系统开销小,其缺点是可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入Cache的块替换掉,而且没有根据访存的局部性原理,故不能提高Cache的命中率。

因为最早调入的信息可能以后还要用到,或者经常要用到,如循环程序。

此法简单、方便,利用了主存的“历史信息”,但并不能说最先进入的就不经常使用,其缺点是不能正确反映程序局部性原理,命中率不高,可能出现一种异常现象,例如Solar-16/65机Cache采用组相联方式,每组4块,每块都设定一个两位的计数器,当某块被装入或被替换时该块的计数器清为0,而同组的其它各块的计数器均加1,当需要替换时就选择计数值最大的块被替换掉。

3.近期最少使用法(LRU法)近期最少使用(Least Recently Used,LRU)算法。

这种方法是将近期最少使用的Cache中的信息块替换出去。

该算法较先进先出算法要好一些。

但此法也不能保证过去不常用将来也不常用。

LRU法是依据各块使用的情况,总是选择那个最近最少使用的块被替换。

这种方法虽然比较好地反映了程序局部性规律,但是这种替换方法需要随时记录Cache中各块的使用情况,以便确定哪个块是近期最少使用的块。

LRU算法相对合理,但实现起来比较复杂,系统开销较大。

通常需要对每一块设置一个称为计数器的硬件或软件模块,用以记录其被使用的情况。

实现LRU策略的方法有多种。

下面简单介绍计数器法、寄存器栈法及硬件逻辑比较对法的设计思路。

计数器方法:缓存的每一块都设置一个计数器,计数器的操作规则是:(1) 被调入或者被替换的块,其计数器清“0”,而其它的计数器则加“1”。

(2) 当访问命中时,所有块的计数值与命中块的计数值要进行比较,如果计数值小于命中块的计数值,则该块的计数值加“1”;如果块的计数值大于命中块的计数值,则数值不变。

最后将命中块的计数器清为0。

(3) 需要替换时,则选择计数值最大的块被替换。

例如IBM 370/65机的Cache用组相联方式,每组4块,每一块设置一个2位的计数器,其工作状态如表2.3.1。

表2.3.1 计数器法实现LRU策略主存块地址块4 块2 块3 块5块号计数器块号计数器块号计数器块号计数器Cache块0 1 10 1 11 1 11 5 00Cache块1 3 01 3 10 3 00 3 01Cache块2 4 00 4 01 4 10 4 11Cache块3 空XX 2 00 2 01 2 10操作起始状态调入命中替换寄存器栈法:设置一个寄存器栈,其容量为Cache中替换时参与选择的块数。

如在组相联方式中,则是同组内的块数。

堆栈由栈顶到栈底依次记录主存数据存入缓存的块号,现以一组内4块为例说明其工作情况,如表2.3.2所示,表中1~4为缓存中的一组的4个块号。

表2.3.2 寄存器栈法实现缓存操作初始状态调入2 命中块4 替换块1寄存器0 3 2 4 1寄存器1 4 3 2 4寄存器2 1 4 3 2寄存器3 空 1 1 3(1) 当缓存中尚有空闲时,如果不命中,则可直接调入数据块,并将新访问的缓冲块号压入堆栈,位于栈顶。

其他栈内各单元依次由顶向下顺压一个单元,直到空闲单元为止。

(2) 当缓存已满,如果数据访问命中,则将访问的缓存块号压入堆栈,其他各单元内容由顶向底逐次下压直到被命中块号的原来位置为止。

如果访问不命中,说明需要替换,此时栈底单元中的块号即是最久没有被使用的。

所以将新访问块号压入堆栈,栈内各单元内容依次下压直到栈底,自然,栈底所指出的块被替换。

比较对法:比较对法是用一组硬件的逻辑电路来记录各块使用的时间与次数。

假设Cache的每组中有4块,替换时,是比较4块中那一块是最久没使用的,4块之间两两相比可以有6种比较关系。

如果每两块之间的对比关系用一个RS 触发器,则需要6个触发器(T12,T13,T14,T23,T24,T34),设T12=0表示块1比块2最久没使用,T12=1表示块2比块1最久没有被使用。

在每次访问命中或者新调入块时,与该块有关的触发器的状态都要进行修改。

按此原理,由6个触发器组成的一组编码状态可以指出应被替换的块。

相关文档
最新文档