CN1361887A - 具有保护的最近最少使用置换方法 - Google Patents
具有保护的最近最少使用置换方法 Download PDFInfo
- Publication number
- CN1361887A CN1361887A CN00810595A CN00810595A CN1361887A CN 1361887 A CN1361887 A CN 1361887A CN 00810595 A CN00810595 A CN 00810595A CN 00810595 A CN00810595 A CN 00810595A CN 1361887 A CN1361887 A CN 1361887A
- Authority
- CN
- China
- Prior art keywords
- list
- data item
- tabulation
- cached data
- filter list
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
Abstract
提供一种具有保护方法的LRU方法,该方法通过对现有的LRU置换方法中存在的共同问题提供解决方法,明显地改善现有的LRU置换方法的性能。通过将一个高速缓存项列表划分为一个过滤子列表和一个再使用列表,实现填充和保护处理以减少关联移位和容量移位。新的高速缓存项被初始地存储在过滤列表中,再使用列表由从高速缓存列表中提出的项填充。从过滤列表和再使用列表中清除数据的操作由保护处理来完成,它从过滤列表、再使用列表、或全局高速缓存列表中清除数据项。其中讨论了很多保护和清除处理的变体,及其在减少传统的LRU置换中出现的不必要的位移带来的影响方面的优点。
Description
发明领域
本发明一般涉及一种电子计算机系统中的高速缓存的数据的置换方法,尤其涉及一种能防止不需要的置换的最近最少使用置换方法。
背景技术
高速缓冲存储器经常用于高性能的计算系统中,其中快的系统速度要求用快的、昂贵的存储器来快速访问数据。处理器工作速度越快,它从存储器检索数据和指令的速度就必须越快。这就要求存储器可以被快速访问,并且涉及到由于很高的时钟速度,存储器一般位于处理器附近。但是,能作为高速缓存操作的快速存储器比较贵,而且靠近处理器设置大量的或定制数量的存储器往往不可行。因此,常常将数量有限的高速缓冲存储器存储体与较大的主系统存储器相隔离,置于处理器核心的附近。
这种高速缓冲存储器一般包括如静态随机访问存储器(SRAM)的高速存储器和一个高速缓存控制器。该控制器管理那些根据处理器可能很快要用到哪些数据的预测,从相对较慢的主存储器复制到高速缓冲存储器中的数据。该高速缓冲存储器一般占整个系统存储器的1%到10%,但可能部分随着计算系统的存储器访问特性的可预测性的不同,在较大的范围内变化。
因为连续存储器访问一般发生在相对较小的存储地址区域内,所以将最经常频繁访问的数据存储在高速缓存中可以明显地提高系统的性能。从相对较快的缓冲存储器访问这些最经常使用的数据使处理器不必去等待从较慢的主存储器访问数据,这种情况被称为高速缓存命中。如果处理器需要的数据不在高速缓存中,而必须从主存储器中取出,该要求类似地被称为高速缓存失中。
高速缓存有效地提高存储器访问速度的程度可以通过高速缓存命中和高速缓存失中的存储器要求的个数来测量。高速缓存控制器设计者的目的是将处理器最可能用到的数据放入高速缓存中,使高速缓存命中对高速缓存失中的比率最大。通过采用此方案,系统可以得到很多具有高速存储器的优点,同时通过将大部分数据存储在相对便宜的较低速的存储器中来降低整个系统的成本。
一种用经常使用数据置换不经常使用数据的方案是简单地记录存储在高速缓存的哪个数据是最近最少使用(LRU)的,并用刚载入到高速缓存的新数据置换该数据。这种方法一般采用与每个存储在高速缓存中的数据块相对应的多个LRU位,它包含表明该数据上次被访问之后经过了多长时间的数据。由于高速缓存的容量有限,这种方法可以在数据被再次使用之前从大的数据集中移入数据。而且,该LRU算法可能用最近使用的数据置换经常使用的数据,即使最近使用的数据更不经常使用或者仅使用一次。因此需要一种能保证更可能再次被要求的数据不被最近使用过但不是经常使用的数据置换的方法。
发明概述
提供一种在高速缓冲存储系统中存储数据的方法。高速缓存数据项列表记录存储在高速缓存中的高速缓存数据项,并被划分为一个过滤列表和一个再使用列表。通过将所有新缓冲数据项放入过滤列表来填充过滤列表,而再使用列表则由有选择地从过滤列表中提出的高速缓存数据项填充。从过滤列表和再使用列表中清除数据是由一个保护过程来操作的。
附图说明
图1示出一个表,该表表示根据本发明的一个实施方式的最近最少使用(LRU)顺序矩阵。
图2示出一个表,该表表示根据本发明的一个实施方式的多路LRU置换高速缓存字,该字随着访问具体路中的数据而变化。
图3示出一个表,该表表示根据本发明的一个实施方式的一个多路LRU高速缓存置换中用于牺牲者选择的解码掩码。
图4示出表示根据本发明的一个实施方式的子列表排序掩码的一个表和一个将该掩码应用到具有相应的LRU路保护位的LRU字中的应用例子。
图5示出一个表示根据本发明的一个实施方式的具有处理器,存储器以及LRUP高速缓存的通用计算机。
图6示出一个根据本发明的一个实施方式的包括一个LRUP高速缓存的数据存储系统。
具体实施方式
在下面对本发明的实施例的具体描述中,参照构成该实施例一部分的附图,其中通过图解说明具体的可实施本发明的实施例。这些实施例的描述足够详细使本技术领域的技术人员能够实现本发明,应该理解的是也可以利用其他的实施例,可以在不偏离本发明的精神或范围进行逻辑的,物理的,电气的,以及其他的改变。因此,下面的详细的描述不用于限制范围,发明的范围只在所附的权利要求书中定义。
需要一种方法来改善LRU高速缓冲存储器系统以减小当需要更多的高速缓存空间时清除最近最少使用的高速缓存数据项所带来的问题的影响。本发明改进一个简单的LRU置换策略,解决由于高速缓冲容量有限在再次使用数据前从大数据集中清除该数据的问题。它还解决用最近使用过的不经常使用的数据置换经常使用的数据的问题。本发明对这些LRU高速缓存共有的问题提供了解决方案,并详细说明如下。
一个典型的高速缓冲存储器有多个在不同的存储体中具有相同缩短了的地址的存储单元,其中存储体被称为”路”(way),例如,一个用于有16位地址长度的系统的存储器可能有一个4路高速缓存,由4个各有8位地址的存储体组成。当在高速缓存中存储来自主存储器的数据时,数据主存储器地址中的最高8位被丢弃,其余的8位是数据将被存入其中的高速缓存地址。因为有4路,或4个存储器的存储体,以所需的地址,最近最少使用的数据所在的路一般被选为向其存储数据的路。这是因为在使用存储在其他路存储器中的最近较多使用的数据之前需要最近最少使用的数据的可能性较小。这个假设不是一直正确的,事实上可能LRU数据使用更频繁。有很多不同的高速缓存结构和高速缓存填充、置换算法存在,上面所述的只是其中一个采用最近最少使用(LRU)置换算法的多路高速缓存的例子。
本发明包括一个LRU算法,用于克服容量移位和关联移位的问题。它们都是普通的方式,其中从高速缓冲存储器清除的数据是从包含不是最不可能马上用到的数据的路中选出的。
容量移位发生在当数据不经常被使用,致使最近最少使用的数据确实比最近较多使用的路中的数据马上被访问的可能性更大时。例如,当图象必须被重复存取时,容量移位影响操作部分存储在16kB高速缓存的总量为32kB数据构成的图象的图象编辑处理。如果组成图象的数据字节被顺序访问并被存储在高速缓存中时,高速缓存中总是有16kB的图象信息,但是,处理在再次需要存储在高速缓存中的信息之前需要访问另外16kB的图象信息。当图象文件的第一部分被再次访问时,高速缓存中仅包含图象的第二部分的最近最多使用的数据。同样地,当处理要求图象第二部分的数据时,该数据已经被图象的第一部分的最近较多使用的数据置换。这样的处理保证较高的高速缓存失中,因为高速缓存确实没有足够的容量来存储所有重复使用的数据。
另外一种常见的方式通过关联移位从高速缓存中清除数据。这发生在某些数据需要被重复使用,但是在大量的不经常使用的数据被访问时被丢弃的情况下。例如,考虑一个只有4个处理数据结构A和数据单元B的项的高速缓存。如果数据的访问顺序为A1,A2,A3,A4,A5,B,A6,A7,A8,A9,B,A10,A11,A12,A13,A14,B等,高速缓存将永远不包含B但将包含最近较多使用的数据结构A的单元。尽管B比数据结构A的任何一个单元都使用得频繁,但是传统的LRU算法不为象B这样频繁使用的数据提供优先。
为了实现LRU算法,高速缓存控制器必须处理表明各路中对于指定的地址哪些路最近最多的数据。高速缓存控制器负责存储关于哪些路最近最多使用的数据,解码该数据并决定哪路最近最少使用而应由新使用的数据置换。图1表示一个表,部分地图解一个追踪4路高速缓存中对于特定的地址哪路最近最少的方法。
图1表示一个包含单元(i,j)的二维矩阵的表,该矩阵用于记录每路中特定地址的使用顺序,其中,如果路(I)中的数据比路(J)中的数据使用频繁,则单元(i,j)为1;如果路(I)中的数据比路(J)中的数据使用得少,则单元(i,j)为0。需要注意的是,地址(0,0)到(3,3)的矩阵对角线上的单元由于(I)和(J)指同一路所以其中不包含有意义的信息,可以忽略。而且,该对角线一边的单元与另一边单元相反,这样如果(3,2)是1,意味着最近使用路3比路2多,则(2,3)逻辑上必须为0因为路2最近没有比路3使用得多。因此,对角线一边的单元和对角线上的单元可以丢弃不用,而只留下用矩阵中的数字表示的单元作为记录使用顺序的关键数据。这5个编号的矩阵单元可以用一个5位的字符串来表示,用5个矩阵单元(i,j)的数组L来表示,其中,L={(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)},其中,如果单元(I)最近比单元(j)使用得多,每个位包含一个1。数组L的这5位可以更简单地用单个数字来引用,这样L=(0,1,2,3,4,5)并且每一位按上述数组L的矩阵表示中给定的顺序对应一个矩阵单元。
图2表示一个更新表,用于在本高速缓存例的操作中,在访问新数据时更新数组L的5位并将新访问的数据写入高速缓存中。更新矩阵根据哪路用于存储新访问的数据,表明对指定的地址要变L的哪一位。因为高速缓存是4路高速缓存,所以4路中任何一路都可能被选择用于存储数据,矩阵的一个轴表示高速缓存系统的4个路。矩阵的另一个轴表示数组L的5位,用于存储关于4路中哪一路最近最多使用的数据,并与由另一个轴表示的被访问的路相对应。例如,在通过检查字L确定路2中对指定地址有最近最少使用的数据的操作中,路2将被新来的数据置换。在路轴上找到路2,矩阵表明位0,3和4未发生变化,而位1和2被重置为0,位5变为1。重审数组L的矩阵单元表示法,等式表明将位1和2设为0表明路0比路2最近较少使用,路1比路2最近较少使用。类似地,将位5设为1表明路2比路3最近较多使用。进一步检查数组L的矩阵表示方法表明位0,3和4不包含关于路2的信息,因而保持不变。在每次写高速缓存之后,通过这种方法更新这些位,数组L总包含关于使用高速缓存各路的顺序的精确信息,并由高速缓存控制器用来将新的数据分配到高速缓存中最近最少使用的路中。
高速缓存控制器通过使用牺牲者选择表来进行该动作,该表是图2中的更新表的互补。图3表示例子高速缓存的牺牲者选择表,使矩阵中所有的1被0置换,所有的0被1置换,所有未变化位保持不变。从矩阵中找出单元的补的操作可以简单地通过电子的或者其他方法来实现,因此不必要求维护牺牲者选择表,但可以通过即时(on-the-fly)转换图2中的更新表的数据来实现。图3中的每个单元在操作中作为掩码使用,以使掩码的内容与存贮在数组L中的数据进行比较。如果4个掩码中任何一个的数据与数组L中的数据相匹配,与该掩码相关的路被选择作为最近最少使用的路,而作为新数据的目标。注意图3中的掩码包含各路间相互排斥的位数据,这样只有4个掩码中的一个会匹配数组L中的任何可能的位组合,并指明一个特定的掩码作为最近最少使用。这意味着这些掩码可以与数组L同时比较,并且只有一路将被选择作为高速缓存写操作的目标。
例如,考虑对于特定的地址的路已按照顺序2,3,0,1使用,其中,路1最近最多使用,路2为最近最少使用。使用图2中的更新表,在所有更新之后,数组L将包含数据L=(0,1,1,1,1,0)。比较这个字和图3中掩码,我们发现对于路0,位0,1,和3不正确;对于路1,位1和3不正确;对于路2,位1,2和5不正确。对于路2,牺牲者选择矩阵中的掩码的位1,2和5与数组L中的数据相匹配,所以路2被正确地选出作为最近最少使用的路。
上段中所述的例子是高速缓存系统中的LRU置换的一个例子,如上所述存在简单的LRU置换方法的缺点。本发明在上述方法的基础上加以改善,解决关联和容量移位的问题。
具有保护的LRU,或LRUP,包括将传统的LRU路列表分成至少两个子列表。改善一个实施例的传统的LRU路列表使其对每路包含一个再使用/过滤位,该位表明存储在该路中的数据是否是再使用或过滤子列表的一部分。LRU排序被全局维护,所以从LRU路到最近最多使用路的任意路除了是全局列表的一部分之外,还可以是再使用或过滤列表的一部分。设计各种互相独立地管理再使用和过滤列表中的数据的处理以解决位移的问题,并优化LRUP高速缓存的性能。
在本发明的一个实施例中,高速缓存单元被初始分配为过滤列表的一部分。提名处理将过滤列表中选出的单元提升再使用列表以填充再使用列表。因为提名会引起一个高速缓存线从过滤列表移到再使用列表,后续的提名将使再使用列表不确定地增长,并最终将过滤列表挤出高速缓存。因此,保护处理根据新高速缓存线的分配,选择清除再使用列表或过滤列表的成员,以存储新来的数据,保证单元在过滤和再使用列表间正确地分布。
从过滤列表提名一个单元到再使用列表可以由许多处理来完成,这些处理被修改以减少不必要的移位。所触发的提名,其减少关联移位,包括如果存储在那里的数据要被再使用而该数据却在过滤列表中时,将一个高速缓存线从过滤列表移到再使用列表中。随机提名,其减少容量移位,随机地分配新分配的高速缓存线或从过滤列表中选择高速缓存线以放入再使用列表。在本发明的范围之内可以考虑对所触发的提名和随机提名进行组合和改变,下面讨论几个示范性的这种实施例。
触发提名可以通过估计将某些单元提到再使用列表的要求较少的特定的环境,修改将过滤列表中被使用的高速缓存线提到再使用列表的简单规则。例如,在全局列表的最近最多使用位置的被引用单元可能被作为单操作或运算的一部分被再次访问,所以将比两次不同地被访问的单元的再次访问可能性要小。这些单元被排除在提名外,但仍被保持为过滤列表的一部分直到以后的再次使用或清除。类似地,在触发提名中,在过滤列表的最近最多使用位置的被引用单元被排除在提出到再使用列表的提名之外,或在全局或过滤列表的多个最近最多使用位置的单元可被排除在提名之外。
随机提名,包括随机地选择高速缓存线提到再使用列表中的提名。对简单随机提名的变更包括采用随机选择算法,该算法监视再使用列表相对于全局列表的大小并使随机提名不可能随着再使用列表的增大而增加。除了在此讨论的例子,还有很多其他的随机选择数据的方法也属于本发明的范围之内。
可以将触发提名和随机提名组合起来用于解决关联和容量移位,可以选择这两种算法及其变化以优化对特定的高速缓存结构的高速缓存命中/高速缓存失中的比率。例如,根据本发明的一个提名处理实施例,除了随机提名算法外,包括采用排除过滤列表中最近最多使用的单元的触发提名方案,在该随机提名算法中,随机提名不可能随着再使用列表的增大而增加。这种组合方式具有触发提名算法和随机提名算法的自平衡提名的优点,因为随机提名算法依赖于再使用列表的大小。这将有助于稳定再使用列表的大小,同时仍然有效地解决关联和容量移位的问题。
再使用列表也可以由其他的提名处理来填充,例如可以采用根据数据的特有的特性将高速缓存数据项提到再使用列表的分类方案。由不同的提名处理提出的高速缓存线可以从再使用列表提升数据,可以提升新分配的高速缓存数据项,或提升其他方法选择的高速缓存数据项。提名处理的组合可用于解决容量和关联移位,或解决其他的高速缓存的无效率问题。可以预见,其他的用于选择提升到再使用列表中的高速缓存线的提名处理存在并可能被开发,这些方法被认为属于本发明的范围之内。
保护算法通过从全局或过滤列表中选择清除单元,对再使用列表的大小提供额外的控制。注意因为全局列表由过滤列表和再使用列表组成,所以从全局列表清除可以从再使用列表或过滤列表清除。这里讨论两种保护算法-打击(strike)算法和LRU计数器算法。
打击算法采用一个打击计数器来记录当再使用列表的最近最少使用单元保持不变时访问存储器的结果为高速缓存失中的次数。最大允许打击阈值是预设定的并与打击计数器相比较,这样当打击计数器的值大于最大允许打击阈值时,全局列表中的LRU单元被清除。可以通过增大再使用列表或提高最大允许打击阈值来提高再使用列表中的单元的寿命,但是提高最大允许打击阈值会导致全局列表中的单元的寿命变长。因此,对于相对较大的再使用列表,较小的最大允许打击阈值比较合适,对于相对较小的再使用列表,较大的最大允许打击阈值比较合适。所以本打击算法的一个实施例采用一种根据再使用列表的大小改变打击阈值的方法。
LRU计数器保护算法试图推测从再使用列表中清除一个高速缓存线与从过滤列表中清除一个高速缓存线的成本。计数器记录对过滤列表和再使用列表中的LRU单元的引用,从而可以比较访问每个列表中的LRU单元的估计的可能性。这种方案的一个实施例采用的计数器初始为0,每引用一次再使用列表中的LRU单元就递增,每引用一次过滤列表中的LRU单元就递减。也可以选择在计数器上加一个滞后位,这样只有在第二次引用过滤列表或再使用列表的LRU位并且中间没有引用过其他列表的LRU位时才递增或递减计数器。
当需要清除时,用LRU计数器的值确定再使用列表最大允许的容量并决定是从再使用列表还是从过滤列表清除高速缓存线。作为一个例子,考虑下面的情况:在实施例中需要进行清除时,计数器保持一个表示访问再使用列表的频率的正数。然后LRU计数器的值与再使用列表的阈值比较。如果计数器的值大于阈值,推荐使用一个预先确定的大的列表容量。如果计数器的值小于阈值,需要使用一个预先确定的小的列表容量。然后被选中的预先确定的列表的容量与再使用列表的实际容量相比较,仅当该预先确定的容量小于再使用列表的实际容量时,从再使用列表中清除一条线。否则,从过滤列表中清除一条线。需要注意的是一个表可以包含许多预先确定的阈值和对应的再使用列表的容量,以达到进一步优化再使用列表的容量和清除的目的。这种方案不仅用于控制再使用列表的容量,而且从过滤列表或者再使用列表中清除那些最不可能被使用的数据。
在操作中管理再使用列表和过滤列表要求使用数据位,该数据位用于指明每个高速缓存单元属于哪一个列表。为了实现较高的高速缓存命中对失中的比率,必须快速高效地对每个列表进行独立地或者作为组合的全局列表进行排序以最优化高速度的高速缓存的操作。
作为在这种高速缓存中管理再使用和过滤列表的方法一个例子,这里讨论一个采用再使用列表指示位的LRUP高速缓存的实施例。
在这种高速缓存中,通过检查与各高速缓存单元对应的再使用位,很容易区分高速缓存单元是再使用列表还是过滤列表的成员。例如,图4中,对于路1和路2,如果高速缓存单元是再使用列表的成员,则将再使用位设为1。对于路0和路3,如果高速缓存单元是在过滤列表的成员,则将再使用位设为0。当高速缓存控制器必须判断过滤列表或再使用列表的LRU路以执行作为LRUP高速缓存的一部分说明的处理之一时,全局列表必须按照至少为高速缓存控制器寻找其顺序的列表保存的使用顺序被划分为两个列表。该处理被称为子列表排序抽出,这里说明该处理的一个例子。
在我们的例子方法中,子列表排序抽出的目标是要产生一个再排序的全局列表,以使全局列表的LRU单元也是正在抽出的子列表的LRU单元。这里公开一种将子列表中未进行抽出的单元重新插入全局列表的MRU位置的方案,保持抽出的列表的顺序以保证正确地辨认列表LRU位,但丢失未抽出的列表的单元顺序信息。
参看图4,说明抽出再使用列表的LRU单元。被抽出的子列表(再使用列表)由对应的再使用位表示的单元1和单元2组成,再使用位还表明单元0和3是未进行抽出的子列表的成员。图4中被编号表示单元0~4的每行表示一个掩码,当该列表的成员不进行抽出时,该掩码应用于数组L以导出一个新的数组。该新数组表示重新排序后的全局列表,其中LRU是进行抽出的子列表的LRU。
例如,标志为“老”的行表示原始的LRU列表,表明顺序3,2,1,0,其中3是最近最少使用,0是最近最多使用的高速缓存单元。因为我们在抽出再使用列表,不是再使用列表的一部分的单元0和3的掩码被应用在数组L上。这样形成一个在标志为“新”的行上示出的新数组,它精确地反映被抽出的列表中的单元的顺序,同时保证该数组表明未进行抽出的列表的单元在MRU位置上。但是,因为各单元的掩码不是进行抽出的列表的一部分,以不表示其在数组L中的老的位置的顺序将其应用到老数组L,所以未进行抽出的列表的顺序信息被丢失。
在本具体例子中,新数组(0,0,0,0,1,1)表示顺序2,1,0,3,其中2是LRU单元,3是MRU单元。因为路2和路3的掩码以随机顺序被应用,当事实上0比3最近用得多时,该新数组表明3最近用得比0多。但是,因为该信息未被保存回数组L并且因为我们只关心保存进行抽出的列表的顺序,所以在本应用中这种类型的错误没有关系。
通过创建新数组来抽出子列表的功能可以在实现中使用组合逻辑来完成,因此能很快地完成。还存在其他的实施例,其导出不同的子列表顺序,因而可以包括保持不进行抽出的列表的顺序。在子列表抽出中创建和使用新数组后,该新数组不再写回到旧的数组L。因而数组L原封不动保持实际的单元顺序,需要时可采用诸如组合逻辑等方法进行重复的非破坏性的子列表抽出。
这里讨论的高速缓存系统可作为计算机中使用的处理器的一部分,例如如图5所示的系统。高速缓存系统不必作为处理器核心的一部分,但可以作为独立的设备或与处理器相连来作为一个较大的处理器模块的一部分来实现。该系统有连接到系统总线502的处理器核心501。该系统总线和处理器通过也与高速缓存504连接的高速缓存控制器503链接。该总线连接诸如硬盘驱动器505等的数据存储器,并连接一个或多个输入/输出端口如端口506。高速缓存控制器从处理器接收存储器取要求,如果被要求的数据存储在高速缓存中,则从高速缓存满足该要求,否则从主存贮器满足该要求。高速缓存控制器根据上述本发明,采用LRUP高速缓存单元置换方法维护高速缓存504中的数据。
诸如高速缓存控制器503的高速缓存控制器可以在集成电路作为逻辑被物理地实现,使该集成电路的至少一部分可以采用上述LRUP方法维护高速缓存中的数据。例如,根据本发明的一个实施方式,集成电路具有能完成上述的将高速缓存划分为再使用列表和过滤列表、填充再使用列表和过滤列表、从再使用列表和过滤列表清除数据项的功能的模块。尤其希望通过至少包含处理器或处理器模块的一部分、一个主板芯片集、一个高速缓存控制器芯片、或其他的集成电路的电路来实施,所有这些都在本发明的范围之内。
图6表示一个数据存储子系统。该系统包括连接到计算机系统的系统总线602的存储控制器601。该存储控制器也连接到一个或多个一般用于非易失性地存储大量数据的硬盘驱动器603。该存储控制器还连接到高速缓存604,它存储和检索数据的速度比硬盘驱动器603快,但是通常比较昂贵所以容量较小。存储控制器601用于服务从硬盘驱动器存储和检索数据的请求,并维护高速缓存604中频繁使用的数据。高速缓存控制器根据上述对LRUP高速缓存的描述,管理高速缓存中的数据。
上述具有保护的LRU通过对传统LRU置换方法存在的共同问题提出解决方案,明显地改善了传统的LRU置换方法。通过将高速缓存项列表划分为一个过滤子列表和一个再使用列表,可以实现填充和保护处理以减少关联和容量移位。新高速缓存项被初始地存储在过滤列表中,而再使用列表则由从高速缓存列表中提出的项来填充。保护处理从过滤列表和再使用列表清除数据,它从过滤列表、再使用列表、或全局高速缓存列表中清除数据。前面讨论了很多保护和清除处理的变体,及其在减少传统的LRU置换中出现的不必要的位移带来的影响方面的优点。
虽然这里举例说明了具体的实施方式,但是本领域的普通技术人员都能理解被设计用来达到相同目的任何装置都可用来替代所示的具体实施方式。本申请意图覆盖对本发明的任何修改或变形。本发明的范围将仅由权利要求书及其等价形式的全部范围来限定。
Claims (22)
1.一种在高速缓冲存储器系统中存储数据的方法,包括:
创建一个高速缓存数据项列表,该列表包含一个存储在高速缓冲存储器中的数据的列表;
将该高速缓存数据项列表划分为一个再使用列表和一个过滤列表;
通过将新高速缓存数据项分配到过滤列表来填充过滤列表;
通过一个提升处理来填充再使用列表;
通过执行保护处理从再使用列表和过滤列表中清除高速缓存数据项。
2.权利要求1的方法,其特征在于,通过将与各高速缓存数据项相对应的再使用位设置为预定的值,来将高速缓存数据项划分为再使用列表和过滤列表。
3.权利要求1的方法,其特征在于,填充再使用列表包括:将那些是过滤列表的一部分而被访问的高速缓存数据项提升到再使用列表。
4.权利要求1的方法,其特征在于,填充再使用列表包括:将由提名处理选择的那些高速缓存数据项提升到再使用列表。
5.权利要求1的方法,其特征在于,填充再使用列表包括:随机地将高速缓存数据项从过滤列表提升到再使用列表。
6.权利要求5的方法,其特征在于,在出现高速缓存失中时随机地将高速缓存数据项从过滤列表提升到再使用列表,其中高速缓存失中是指被要求的数据当前未存储在高速缓存中。
7.权利要求1的方法,其特征在于,填充再使用列表还包括:随机地将新高速缓存数据项分配到再使用列表中。
8.权利要求1的方法,其特征在于,从再使用列表或过滤列表中清除高速缓存数据项包括:
计算再使用列表和过滤列表各自的长度;
比较各子列表的长度与所希望的长度;
接收将被存储到高速缓冲存储器中的新高速缓存数据项;
从两个列表中的一个列表清除高速缓存数据项以便为该新高速缓存数据项提供一个存储位置,其中,被清除的高速缓存数据项来自根据算出的长度与所希望的长度的比较结果选择的列表。
9.一种计算机处理系统,可电子地存储和检索数据并实现高速缓存,其中将数据存储在高速缓存包括:
创建一个高速缓存数据项列表,该列表包含一个存储在高速缓冲存储器中的数据的列表;
将高速缓存数据项列表划分为一个再使用列表和一个过滤列表;
通过将所有新高速缓存数据项分配到过滤列表来填充过滤列表;
通过从过滤列表中提升高速缓存数据项来填充再使用列表;
通过执行保护处理从过滤列表和再使用列表中清除高速缓存数据项。
10.一种在高速缓存存储系统中存储数据的方法,包括:
创建一个高速缓存数据项列表,该列表包含一个存储在高速缓冲存储器中的数据的列表;
将该高速缓存数据项列表划分为一个再使用列表和一个过滤列表;
跟踪高速缓存数据项列表中的各高速缓存数据项的使用顺序;
通过将新高速缓存数据项分配到过滤列表来填充过滤列表;
通过从过滤列表中提升高速缓存数据项来填充再使用列表;
通过执行保护处理从过滤列表和再使用列表中清除高速缓存数据项。
11.权利要求10的方法,其特征在于,填充再使用列表还包括:将那些是过滤列表的一部分而被访问的高速缓存数据项提升到再使用列表。
12.权利要求10的方法,其特征在于,填充再使用列表还包括:如果被使用的高速缓存数据项在过滤列表中但不是过滤列表中的最近最多使用的高速缓存数据项,则将该高速缓存数据项从过滤列表提升到再使用列表。
13.权利要求10的方法,其特征在于,填充再使用列表还包括:如果被使用的高速缓存数据项在过滤列表中但不是高速缓存数据项列表中的最近最多使用的高速缓存数据项,则将该高速缓存数据项从过滤列表提升到再使用列表。
14.权利要求10的方法,其特征在于,填充再使用列表还包括:随机地选择新存储的高速缓存数据项放入再使用列表中。
15.权利要求14的方法,其特征在于,随机地选择提升到再使用列表的新存储的高速缓存数据项不可能随着再使用列表的增大而增加。
16.权利要求10的方法,其特征在于,保护过程还包括:
当再使用列表中的最近最少使用的高速缓存数据项在打击计数器中保持不变时,计数高速缓存失中,其中高速缓存失中是指被要求的数据当前未存储在高速缓存中;
比较该打击计数器和最大允许的打击阈值;
如果打击计数器的值大于该最大允许的打击阈值时,清除高速缓存数据项列表中的最近最少使用的高速缓存数据项。
17.权利要求10的方法,其特征在于,保护处理还包括:
在每次引用再使用列表中的最近最少使用的高速缓存数据项时递增计数器;
在每次引用过滤列表中的最近最少使用的高速缓存数据项时递减计数器;
根据计数器的值计算最大的再使用列表的容量;
计算再使用列表的实际容量;
如果该再使用列表的实际容量大于该再使用列表的最大允许容量,则清除高速缓存数据项列表中的最近最少使用的高速缓存数据项;
如果过滤列表中的最近最少使用的高速缓存数据项存在并且该再使用列表的实际容量不大于该再使用列表的最大允许容量,则清除过滤列表中的最近最少使用的高速缓存数据项;
如果过滤列表为空并且该再使用列表的实际容量不大于该再使用列表的最大允许容量,则清除高速缓存数据项列表中的最近最少使用的高速缓存数据项。
18.权利要求17的方法,其特征在于,还包括:
比较该计数器和一个阈值;
根据相对于该阈值的该计数器的值生成再使用列表的最大容量。
19.权利要求10的方法,其特征在于,保护处理还包括:
在每次第2次连续引用再使用列表中的最近最少使用的高速缓存数据项时递增一个计数器;
在每次引用过滤列表中的最近最少使用的高速缓存数据项时递减该计数器;
根据计数器的值计算再使用列表的最大容量;
计算再使用列表的实际容量;
如果该再使用列表的实际容量大于该再使用列表的最大允许容量,则清除高速缓存数据项列表中的最近最少使用的高速缓存数据项;
如果过滤列表中的最近最少使用的高速缓存数据项存在并且该再使用列表的实际容量不大于该再使用列表的最大允许容量,则清除过滤列表中的最近最少使用的高速缓存数据项;
如果过滤列表为空并且该再使用列表的实际容量不大于该再使用列表的最大允许容量,则清除高速缓存数据项列表中的最近最少使用的高速缓存数据项。
20.权利要求10的方法,其特征在于,保护处理还包括:
在每次连续引用高速缓存数据项列表中的最近最少使用的高速缓存数据项时,递增一个计数器;
在每次引用过滤列表中的最近最少使用的高速缓存数据项时,递减该计数器;
根据计数器的值计算再使用列表的最大容量;
计算再使用列表的实际容量;
如果该再使用列表的实际容量大于该再使用列表的最大允许容量,则清除高速缓存数据项列表中的最近最少使用的高速缓存数据项;
如果过滤列表中的最近最少使用的高速缓存数据项存在并且该再使用列表的实际容量不大于该再使用列表的最大允许容量,则清除过滤列表中的最近最少使用的高速缓存数据项;
如果过滤列表为空并且该再使用列表的实际容量不大于该再使用列表的最大允许容量,则清除高速缓存数据项列表中的最近最少使用的高速缓存数据项。
21.一种集成电路,具有能将数据存储在高速缓存中的电路,其操作如下:
将一个高速缓存数据项列表划分为一个再使用列表和一个过滤列表;
跟踪该高速缓存数据项列表中的各高速缓存数据项的使用顺序;
通过将新高速缓存数据项分配到过滤列表来填充过滤列表;
通过从过滤列表中提升高速缓存数据项来填充再使用列表;以及
通过执行保护处理从过滤列表和再使用列表中清除高速缓存数据项。
22.一种计算机信息处理系统,该系统能电子地存储和检索数据并包括一个高速缓存,其中,将数据存储在高速缓存中包括:
将一个高速缓存数据项列表划分为一个再使用列表和一个过滤列表;
跟踪该高速缓存数据项列表中的各高速缓存数据项的使用顺序;
通过将新高速缓存数据项分配到过滤列表来填充过滤列表;
通过从过滤列表中提升高速缓存数据项来填充再使用列表;
通过执行保护处理从过滤列表和再使用列表中清除高速缓存数据项。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/314,233 US6393525B1 (en) | 1999-05-18 | 1999-05-18 | Least recently used replacement method with protection |
US09/314233 | 1999-05-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1361887A true CN1361887A (zh) | 2002-07-31 |
CN100489817C CN100489817C (zh) | 2009-05-20 |
Family
ID=23219131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008105952A Expired - Fee Related CN100489817C (zh) | 1999-05-18 | 2000-05-17 | 具有保护的最近最少使用置换方法及其处理系统 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6393525B1 (zh) |
EP (1) | EP1190327A1 (zh) |
JP (1) | JP4246922B2 (zh) |
CN (1) | CN100489817C (zh) |
AU (1) | AU5024600A (zh) |
BR (1) | BR0010620A (zh) |
HK (1) | HK1048176B (zh) |
WO (1) | WO2000070468A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1311367C (zh) * | 2003-10-23 | 2007-04-18 | 英特尔公司 | 用于提高存取数据请求的处理速度的方法、装置和系统 |
CN100339837C (zh) * | 2004-03-23 | 2007-09-26 | 国际商业机器公司 | 用于平衡多个存储器缓冲区大小的系统及其方法 |
CN100382052C (zh) * | 2004-07-28 | 2008-04-16 | 三星电子株式会社 | 使用页信息的页替换方法 |
CN100424657C (zh) * | 2003-11-26 | 2008-10-08 | 微软公司 | 转换后备缓冲器的惰性转储清除 |
CN100428199C (zh) * | 2005-11-18 | 2008-10-22 | 国际商业机器公司 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
CN100429632C (zh) * | 2003-09-19 | 2008-10-29 | 松下电器产业株式会社 | 高速缓冲存储器和高速缓冲存储器控制方法 |
CN100440177C (zh) * | 2004-08-11 | 2008-12-03 | 国际商业机器公司 | 用于软件可控动态可锁高速缓冲存储器线替换系统的方法 |
CN102521049A (zh) * | 2011-11-18 | 2012-06-27 | 清华大学 | 多核间内存调度方法 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6745291B1 (en) * | 2000-08-08 | 2004-06-01 | Unisys Corporation | High speed LRU line replacement system for cache memories |
TWI228704B (en) * | 2001-03-23 | 2005-03-01 | Yamaha Corp | Music sound synthesis with waveform caching by prediction |
US6918020B2 (en) * | 2002-08-30 | 2005-07-12 | Intel Corporation | Cache management |
US6973540B2 (en) * | 2003-07-25 | 2005-12-06 | Freescale Semiconductor, Inc. | Method and apparatus for selecting cache ways available for replacement |
EP1686485A4 (en) * | 2003-11-18 | 2008-10-29 | Matsushita Electric Ind Co Ltd | CACHE MEMORY AND ASSOCIATED CHECK |
EP1842134A1 (en) | 2005-01-26 | 2007-10-10 | Infineon Technologies AG | Improvements in and relating to memory updating |
US7380065B2 (en) | 2005-03-30 | 2008-05-27 | International Business Machines Corporation | Performance of a cache by detecting cache lines that have been reused |
US20060282620A1 (en) * | 2005-06-14 | 2006-12-14 | Sujatha Kashyap | Weighted LRU for associative caches |
US7360043B1 (en) * | 2005-08-17 | 2008-04-15 | Sun Microsystems, Inc | Method and apparatus for efficiently determining rank in an LRU list |
US7543112B1 (en) | 2006-06-20 | 2009-06-02 | Sun Microsystems, Inc. | Efficient on-chip instruction and data caching for chip multiprocessors |
US7844778B2 (en) * | 2006-07-11 | 2010-11-30 | International Business Machines Corporation | Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements |
US7908236B2 (en) * | 2006-07-20 | 2011-03-15 | International Business Machines Corporation | Using multiple data structures to manage data in cache |
US7793044B1 (en) * | 2007-01-16 | 2010-09-07 | Oracle America, Inc. | Efficient caching of stores in scalable chip multi-threaded systems |
US7457920B1 (en) * | 2008-01-26 | 2008-11-25 | International Business Machines Corporation | Method and system for cache eviction |
US8745334B2 (en) * | 2009-06-17 | 2014-06-03 | International Business Machines Corporation | Sectored cache replacement algorithm for reducing memory writebacks |
US8392658B2 (en) * | 2009-07-10 | 2013-03-05 | Apple Inc. | Cache implementing multiple replacement policies |
AU2010201718B2 (en) | 2010-04-29 | 2012-08-23 | Canon Kabushiki Kaisha | Method, system and apparatus for identifying a cache line |
US20120124291A1 (en) * | 2010-11-16 | 2012-05-17 | International Business Machines Corporation | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data |
CN102314397B (zh) * | 2011-09-23 | 2014-03-19 | 浙江大学 | 缓存数据块的处理方法 |
US9170955B2 (en) * | 2012-11-27 | 2015-10-27 | Intel Corporation | Providing extended cache replacement state information |
US9043554B2 (en) | 2012-12-21 | 2015-05-26 | Apple Inc. | Cache policies for uncacheable memory requests |
US9158702B2 (en) | 2012-12-28 | 2015-10-13 | Intel Corporation | Apparatus and method for implementing a scratchpad memory using priority hint |
US9223710B2 (en) | 2013-03-16 | 2015-12-29 | Intel Corporation | Read-write partitioning of cache memory |
US9740631B2 (en) * | 2014-10-07 | 2017-08-22 | Google Inc. | Hardware-assisted memory compression management using page filter and system MMU |
US20170168957A1 (en) * | 2015-12-10 | 2017-06-15 | Ati Technologies Ulc | Aware Cache Replacement Policy |
US10223278B2 (en) | 2016-04-08 | 2019-03-05 | Qualcomm Incorporated | Selective bypassing of allocation in a cache |
US20190303037A1 (en) * | 2018-03-30 | 2019-10-03 | Ca, Inc. | Using sequential read intention to increase data buffer reuse |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0389151A3 (en) * | 1989-03-22 | 1992-06-03 | International Business Machines Corporation | System and method for partitioned cache memory management |
JPH0371347A (ja) * | 1989-08-11 | 1991-03-27 | Mitsubishi Electric Corp | 参照頻度主導型記憶装置 |
JPH0492941A (ja) * | 1990-08-09 | 1992-03-25 | Digital Equip Corp <Dec> | キャッシュメモリの順次参照管理方法および装置 |
JPH05189316A (ja) * | 1992-01-10 | 1993-07-30 | Fujitsu Ltd | ディスクキャッシュ制御方法 |
US5434992A (en) * | 1992-09-04 | 1995-07-18 | International Business Machines Corporation | Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace |
US5778442A (en) * | 1996-03-25 | 1998-07-07 | Oracle Corporation | Method and apparatus for buffering data in a computer system |
US5974507A (en) | 1997-04-14 | 1999-10-26 | International Business Machines Corporation | Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm |
US6138213A (en) * | 1997-06-27 | 2000-10-24 | Advanced Micro Devices, Inc. | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line |
US6105111A (en) * | 1998-03-31 | 2000-08-15 | Intel Corporation | Method and apparatus for providing a cache management technique |
JP3279253B2 (ja) * | 1998-05-27 | 2002-04-30 | 日本電気株式会社 | キャッシュページの管理方法およびキャッシュページの管理プログラムを記憶した媒体 |
-
1999
- 1999-05-18 US US09/314,233 patent/US6393525B1/en not_active Expired - Fee Related
-
2000
- 2000-05-17 AU AU50246/00A patent/AU5024600A/en not_active Abandoned
- 2000-05-17 EP EP00932540A patent/EP1190327A1/en not_active Withdrawn
- 2000-05-17 BR BR0010620-8A patent/BR0010620A/pt not_active IP Right Cessation
- 2000-05-17 JP JP2000618844A patent/JP4246922B2/ja not_active Expired - Fee Related
- 2000-05-17 WO PCT/US2000/013569 patent/WO2000070468A1/en active Application Filing
- 2000-05-17 CN CNB008105952A patent/CN100489817C/zh not_active Expired - Fee Related
-
2003
- 2003-01-16 HK HK03100409.2A patent/HK1048176B/zh not_active IP Right Cessation
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100429632C (zh) * | 2003-09-19 | 2008-10-29 | 松下电器产业株式会社 | 高速缓冲存储器和高速缓冲存储器控制方法 |
CN1311367C (zh) * | 2003-10-23 | 2007-04-18 | 英特尔公司 | 用于提高存取数据请求的处理速度的方法、装置和系统 |
CN100424657C (zh) * | 2003-11-26 | 2008-10-08 | 微软公司 | 转换后备缓冲器的惰性转储清除 |
CN100339837C (zh) * | 2004-03-23 | 2007-09-26 | 国际商业机器公司 | 用于平衡多个存储器缓冲区大小的系统及其方法 |
CN100382052C (zh) * | 2004-07-28 | 2008-04-16 | 三星电子株式会社 | 使用页信息的页替换方法 |
CN100440177C (zh) * | 2004-08-11 | 2008-12-03 | 国际商业机器公司 | 用于软件可控动态可锁高速缓冲存储器线替换系统的方法 |
CN100428199C (zh) * | 2005-11-18 | 2008-10-22 | 国际商业机器公司 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
CN102521049A (zh) * | 2011-11-18 | 2012-06-27 | 清华大学 | 多核间内存调度方法 |
CN102521049B (zh) * | 2011-11-18 | 2013-07-10 | 清华大学 | 多核间内存调度方法 |
Also Published As
Publication number | Publication date |
---|---|
HK1048176B (zh) | 2009-12-31 |
CN100489817C (zh) | 2009-05-20 |
BR0010620A (pt) | 2002-03-05 |
US6393525B1 (en) | 2002-05-21 |
HK1048176A1 (en) | 2003-03-21 |
JP4246922B2 (ja) | 2009-04-02 |
WO2000070468A1 (en) | 2000-11-23 |
EP1190327A1 (en) | 2002-03-27 |
AU5024600A (en) | 2000-12-05 |
JP2002544624A (ja) | 2002-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100489817C (zh) | 具有保护的最近最少使用置换方法及其处理系统 | |
US10019369B2 (en) | Apparatuses and methods for pre-fetching and write-back for a segmented cache memory | |
EP1654660B1 (en) | A method of data caching | |
US6226715B1 (en) | Data processing circuit with cache memory and cache management unit for arranging selected storage location in the cache memory for reuse dependent on a position of particular address relative to current address | |
US7380065B2 (en) | Performance of a cache by detecting cache lines that have been reused | |
CN109983536B (zh) | 响应标签匹配命令的存储电路 | |
US20170235681A1 (en) | Memory system and control method of the same | |
US6078992A (en) | Dirty line cache | |
US20120151149A1 (en) | Method and Apparatus for Caching Prefetched Data | |
JPS61156346A (ja) | 記憶階層の先取り装置 | |
KR101481633B1 (ko) | 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법 | |
US20040143708A1 (en) | Cache replacement policy to mitigate pollution in multicore processors | |
JP2012203560A (ja) | キャッシュメモリおよびキャッシュシステム | |
KR100787856B1 (ko) | 플래시 메모리 저장장치의 페이지 교체 방법 | |
CN104298622A (zh) | 使用fifo的最近最少使用的高速缓存替代实现 | |
CN115617712A (zh) | 一种基于组相联高速缓存Cache的LRU替换算法 | |
CN111580754B (zh) | 一种写友好的闪存固态盘缓存管理方法 | |
CN101336419A (zh) | 存储器访问控制装置及存储器访问控制方法 | |
US20030159003A1 (en) | Associative cache memory with replacement way information integrated into directory | |
CN102354301A (zh) | 缓存分区方法 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
JP2017162194A (ja) | データ管理プログラム、データ管理装置、及びデータ管理方法 | |
Kim et al. | LSB-Tree: a log-structured B-Tree index structure for NAND flash SSDs | |
Yoon et al. | Access characteristic-based cache replacement policy in an SSD | |
CN114746848B (zh) | 用于存储装置的高速缓存架构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
C10 | Entry into substantive examination | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1048176 Country of ref document: HK |
|
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090520 Termination date: 20100517 |