CN101286140A - 一种采用lru替换算法的缓存 - Google Patents
一种采用lru替换算法的缓存 Download PDFInfo
- Publication number
- CN101286140A CN101286140A CNA200710039415XA CN200710039415A CN101286140A CN 101286140 A CN101286140 A CN 101286140A CN A200710039415X A CNA200710039415X A CN A200710039415XA CN 200710039415 A CN200710039415 A CN 200710039415A CN 101286140 A CN101286140 A CN 101286140A
- Authority
- CN
- China
- Prior art keywords
- buffer memory
- lru
- algorithm
- cache lines
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种采用LRU替换算法的缓存,对缓存中每组的所有缓存行的被访问时间相互关系的状态进行编码,并将上述状态位编码存储于寄存器中以用于实现LRU替换算法。它主要解决现有缓存实现LRU算法需要大量的寄存器的技术问题,它不但能节省硬件成本,而且也不会占用比较多的芯片资源。
Description
技术领域
本发明涉及Cache(缓存),特别是一种采用LRU(Least RecentlyUsed,最长时间没有被用到)替换算法的缓存。
背景技术
缓存的组织,从存储器映像的角度来看,主要有全相联映像法、直接映像法和组相联映像法。
全相联映像法的基本思想是把一个主存块的地址(块号)和块的内容都拷贝到缓存行中;由于块地址也保存在缓存中,因此可以拷贝到缓存中的任意位置。此法的优点是灵活,但是查找比较困难,而且硬件的实现较为困难。
直接映像法的基本思想是一个主存块只能拷贝到缓存中固定的行内。该按硬件成本低,但是由于一个缓存行要对应多个主存块,在使用中当这些主存块需要同时调入缓存时将发生冲突、增加调入调出的开销。
组相联映像法是上述两种方法的折衷方案。其基本思想是把缓存分为m个组(set),每个组分为n行。主存块分配时对组是固定的、而在组内的位置可以任意。这样就综合了两者的优点,这是目前最常用的方法。这种组织的缓存就叫做n路(Way)组相联的缓存。
由于缓存的容量总是远小于下一级存储器的容量,因此缓存中只能是下级存储器的部分映像。为了使下级存储器的内容都能在需要时拷贝到缓存中,必须随时替换缓存内容:即把当前不需要的内容调出缓存,腾出空间,调入当前需要的内存块。在这种调入调出方法中,最重要的是替换的策略,即在需要时选择缓存中的哪些行调出,再调入所需的内存块。这种替换策略通常称为替换算法,它是由硬件实现的。如果算法选择不当,将大大增加调入调出的频度。例如把一个当前不需要但是很快就将使用的行调出,必然会降低系统的效率。
目前最常见的调度算法有随机、循环、LRU算法等3种,其中LRU算法是最佳的:
现有LRU算法的通常实现方法是为每行设置一个计数器,命中行的计数器清零,其它各行中计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。
以最为常见得4路缓存为例来说,每一组有4行,每行设置一个计数器,计数器至少必须是2位位宽用于区别4行。这样一个组就需要至少8位寄存器来实现LRU算法。此外,还需要一个比较器和选择器来选出数值最大的数据行。
由于缓存中组的数量通常比较大,这样实现LRU算法就需要大量的寄存器,也就是说会占用比较多的芯片面积资源。
发明内容
本发明的目的在于提供一种采用LRU替换算法的缓存,主要解决现有缓存实现LRU算法需要大量的寄存器的技术问题,它不但能节省硬件成本,而且也不会占用比较多的芯片资源。
为实现上述发明目的,本发明是这样实现的:
一种采用LRU替换算法的缓存,其特征在于对缓存中每组的所有缓存行的被访问时间相互关系的状态进行编码,并将上述状态位编码存储于寄存器中以用于实现LRU替换算法。
该状态位编码中的某几位直接表示最长时间没有访问过的缓存行号。
该寄存器位数N与每组的缓存行n之间的数值关系是N是满足2N>=n!的最小整数,或者说整数N满足2N>=n!>2N-1
藉由上述技术方案,本发明的优点是:
本发明直接对所有缓存行的被访问时间相互关系的状态进行编码,编码直接显示出最长时间没有被用到的缓存行的行号,而且状态改变逻辑电路可以给所有组共用,因此,在不降低缓存性能前提下,大大减少了LRU实现的面积需求,同时也降低了功耗。
附图说明
图1是本发明的原理图;
图2是状态寄存器的状态改变逻辑实现示意图。
具体实施方式:
本发明提供了一种采用LRU替换算法的缓存,与现有技术不同的是:本发明不采用每行实现一个计数器的方法,而对整个组的状态进行分析和编码。
以4路缓存为例,由于我们只关心4行之间的未被使用时间的长短相互关系,而不关心具体的访问次数。所以可以不必具体计数。对于4行的一个组,一共有4!=24种可能出现的关系。所以我们只需要5位寄存器来记录这24种可能的状态(24<24<25)。本发明不局限于4路缓存的设计,同样适合于其他多路缓存的设计。表1为具体的编码方法及编码。
表1
状态编号 | 1234路最近访问的排序L0,L1,L2,L3(第一个值L0表示最长时间未被用的行的编号;最后一个值L3表示最近一次用到的行的编号) | 编码后的状态字(5位)S0,S 1,S2,S3,S4{S0,S1}表示L0值{S2,S3}表示L1值{S4}为1表示L2>L3;{S4}为0表示L2<L3 |
0 | 3210 | 11101 |
1 | 3120 | 11011 |
2 | 3201 | 11100 |
3 | 3102 | 11010 |
4 | 3021 | 11001 |
5 | 3012 | 11000 |
6 | 2310 | 10111 |
7 | 2130 | 10011 |
8 | 2301 | 10110 |
9 | 2103 | 10010 |
10 | 2031 | 10001 |
11 | 2013 | 10000 |
12 | 1320 | 01111 |
13 | 1230 | 01101 |
14 | 1302 | 01110 |
15 | 1203 | 01100 |
16 | 1032 | 01001 |
17 | 1023 | 01000 |
18 | 0321 | 00111 |
19 | 0231 | 00101 |
20 | 0312 | 00110 |
21 | 0213 | 00100 |
22 | 0132 | 00011 |
23 | 0123 | 00010 |
如表1所示:编码完全地直观地描述了每一行的排序地位,{S0,S1}直接表示出最长时间未被使用的行的编号。不需要比较器和选择器来选择某一行。对于每一个组(Set),实现LRU替换的寄存器需求大大减少。由于寄存器少了,功耗也有相应降低。状态字改变逻辑由组合逻辑实现,所以这个编码的实现不会带来缓存性能的损失。而且由于同一时刻只有一行会被更新,所以只需要一套这样的组合逻辑电路,它可以被所有组(set)所共享。同时这套编码也非常适合于实现对路(Cache Way)的锁定。无论锁定/解除锁定时都不需要对状态字进行特殊修改,对最长时间未被使用行的选择也如同没有发生锁定时一样容易。
图1是本实施例的一个4路组相联缓存,其中:状态寄存器的状态字表示了当前组内4个缓存行的被访问时间的排序关系。如图所示:在(1)发生时,状态字为01111,前2位01表示当前最长时间没有被访问过的是缓存行1,所以应该替换缓存行1。对于(1)的例子,发生在CPU访问0x0000地址,而该地址所能够存放的组0中没有这个地址的数据而且所有的缓存行都存放着其他数据。(2)表示在(1)发生之后,状态字发生变化,先前的01111对应于表1中排序的1320,当1中的数据被访问后,排序变化为3201对应表1中状态字11100。所以状态字变化为11100。(3)中的变化是由CPU访问到缓存行0中的数据引起的。先前的11100对应于排序3201,当0中的数据被访问后,排序变化为3210对应表1中状态字11101。所以状态字变化为11101。
图2是本实施例的状态寄存器的状态改变逻辑电路实现示意图,可以用实现有限状态机的方法来实现。因为同一时刻只会有一个组被访问到,所以这个组合逻辑电路是可以被所有的组(set)所共用。组合逻辑的实现,必须根据这个缓存设计的具体功能来决定。比如是否有缓存锁定功能等等。
如上所述,本发明如果不考虑编码中的某几位直接表示最长时间没有访问过的缓存行号,只需把n!个状态与2N个码中的n!一一对应即可。如果考虑编码中的某几位(任意)直接表示最长时间没有访问过的缓存行号,只需在对应时特别进行归类即可。比如某类状态都是第m行是最长时间没有被访问到的,那么在选择编码是就把某几位值为m的编码与之对应即可。由于一般的缓存组内的行数n都是2的幂次,可以证明,这样的分类方法总是可行的。
编码和状态对应关系确定后,对应关系决定了LRU替换算法执行过程中编码改变的规律原则。
综上所述仅为本发明的较佳实施例而已,并非用来限定本发明的实施范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应为本发明的技术范畴。
Claims (3)
1、 一种采用LRU替换算法的缓存,其特征在于对缓存中每组的所有缓存行的被访问时间相互关系的状态进行编码,并将上述状态位编码存储于寄存器中以用于实现LRU替换算法。
2、 根据权利要求1所述的采用LRU替换算法的缓存,其特征在于该状态位编码中的某几位直接表示最长时间没有访问过的缓存行号。
3、 根据权利要求1所述的采用LRU替换算法的缓存,其特征在于该寄存器位数N与每组的缓存行n之间的数值关系是N是满足2N>=n!的最小整数,或者说整数N满足2N>=n!>2N-1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200710039415XA CN101286140A (zh) | 2007-04-12 | 2007-04-12 | 一种采用lru替换算法的缓存 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200710039415XA CN101286140A (zh) | 2007-04-12 | 2007-04-12 | 一种采用lru替换算法的缓存 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101286140A true CN101286140A (zh) | 2008-10-15 |
Family
ID=40058355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200710039415XA Pending CN101286140A (zh) | 2007-04-12 | 2007-04-12 | 一种采用lru替换算法的缓存 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101286140A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022226770A1 (zh) * | 2021-04-27 | 2022-11-03 | 深圳市大疆创新科技有限公司 | 访问缓存行的方法和装置 |
-
2007
- 2007-04-12 CN CNA200710039415XA patent/CN101286140A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022226770A1 (zh) * | 2021-04-27 | 2022-11-03 | 深圳市大疆创新科技有限公司 | 访问缓存行的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100514677B1 (ko) | 컴퓨터 시스템 및 캐시 라인 대체 방법 | |
KR100335300B1 (ko) | 캐시 메모리, 멀티프로세서 시스템, 공유 캐시 메모리의 분할 방법 및, 기록 매체 | |
CN100489817C (zh) | 具有保护的最近最少使用置换方法及其处理系统 | |
JP4098347B2 (ja) | キャッシュメモリおよびその制御方法 | |
CN101571835B (zh) | 基于程序的需求来改变Cache组相联度的实现方法 | |
CN1659525A (zh) | 简化了缓存替换策略的实现的多线程缓存方法和装置 | |
CN1659526A (zh) | 具有基于线程标识符的缓存清除的多线程缓存方法和装置 | |
CN114341819B (zh) | 用于压缩的高速缓存的弹性字典共享 | |
US6516387B1 (en) | Set-associative cache having a configurable split and unified mode | |
CN101694640B (zh) | 多核架构下共享二级Cache的替换策略的实现方法 | |
CN103890856A (zh) | 支持内存储数据结构的可移位存储器 | |
US20090113137A1 (en) | Pseudo least recently used (plru) cache replacement | |
JP6527951B2 (ja) | データバックアップ装置及び方法 | |
US20140032831A1 (en) | Multi-updatable least recently used mechanism | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
CN1201233C (zh) | 带有可编程存储体选择的具有不同数据缓冲区容量的多层存储体 | |
CN100538664C (zh) | 存储带压缩的重排序数据的系统、方法和装置 | |
WO2013166101A1 (en) | Managing buffer memory | |
CN102750227A (zh) | 具有动态锁步支持的高速缓存存储器 | |
US20030159003A1 (en) | Associative cache memory with replacement way information integrated into directory | |
US7007135B2 (en) | Multi-level cache system with simplified miss/replacement control | |
US9261946B2 (en) | Energy optimized cache memory architecture exploiting spatial locality | |
US6105115A (en) | Method and apparatus for managing a memory array | |
US6848025B2 (en) | Method and system for programmable replacement mechanism for caching devices | |
CN101286140A (zh) | 一种采用lru替换算法的缓存 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20081015 |