CN100442249C - 用于高速缓存器顺序列表的动态尺寸确定的系统和方法 - Google Patents

用于高速缓存器顺序列表的动态尺寸确定的系统和方法 Download PDF

Info

Publication number
CN100442249C
CN100442249C CNB2005101070534A CN200510107053A CN100442249C CN 100442249 C CN100442249 C CN 100442249C CN B2005101070534 A CNB2005101070534 A CN B2005101070534A CN 200510107053 A CN200510107053 A CN 200510107053A CN 100442249 C CN100442249 C CN 100442249C
Authority
CN
China
Prior art keywords
data
tabulation
alphabetic
unit
space
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.)
Expired - Fee Related
Application number
CNB2005101070534A
Other languages
English (en)
Other versions
CN1755652A (zh
Inventor
宾尼·S·吉尔
达蒙德拉·S·莫哈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1755652A publication Critical patent/CN1755652A/zh
Application granted granted Critical
Publication of CN100442249C publication Critical patent/CN100442249C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache

Abstract

一种自调节、低成本、易实现、局部自适应、新颖的高速缓存器管理策略,其动态地并自适应地在顺序和随机流中间划分高速缓存器空间以便减少读命中失误。

Description

用于高速缓存器顺序列表的动态尺寸确定的系统和方法
技术领域
本发明一般涉及数据高速缓存。
背景技术
高速缓存是在向诸如硬盘驱动存储器的存储器写入数据或读取数据时隐藏延迟的一种基础技术。这些延迟可以被称为输入/输出(I/O)等待时间。因为高速缓存是隐藏I/O等待时间的有效技术,因此被广泛地用于存储控制器、数据库、文件系统、以及操作系统中。
高速缓存器因此可被定义为高速存储器或存储设备,其被用来减少针对较低速的存储器或设备读取数据或写入数据所需的有效时间。一个现代的存储控制器高速缓存器典型地包含用作读缓存器的易失存储器和用作写高速缓存器的非易失存储器。读缓存器的效果决定于其“命中”比,即,不需要磁盘访问(其代表在高速缓存器中寻找数据的“命中失误”)地由高速缓存器进行服务的请求的比例。本发明关注于改进读缓存器的性能,例如,增加命中比或等效地最小化命中失误比。
典型地,高速缓存器被管理成称为页的统一尺寸的单元。仅在出现高速缓存器的页命中失误的情况下,例如只有当该页被主机所需要并且在高速缓存器中不能找到该页,从而需要访问相对低速的磁盘时,所谓的按需调页才要求从低速存储器(例如,磁盘)拷贝页到高速缓存器中。在按需调页中,高速缓存器管理是相对简单的,并且当高速缓存器已满并且因一次“命中失误”的缘故一个新的页将被存储到高速缓存器中时,为进行替换而寻求从高速缓存器智能地选择一页。一个众所周知的策略简单地用新页替换其下一次访问为将来最远发生的页。另一种策略(最近最少使用的,或LRU)用新页替换最近最少使用的页。
如此处所认识到的,除按需调页外,在隐藏I/O等待时间方面,更进一步的改进可通过推测性地预取或预备页来完成。尝试预测何时页将被需要的相对复杂的算法已被引进,但商业系统很少使用非常复杂的预测模式,因为复杂的预测模式要求保留大量的页访问历史。这是麻烦并昂贵的。此外,为行之有效,预取必须在预测的请求之前完成,其要求足够预先的注意,而其获得是不可行的。并且,长期预测的准确性可开始较低,并可随着大量不同工作负荷的交替而变得更差。最后,对于接近其峰值容量操作的磁盘子系统,平均响应时间随着磁盘取次数的增加而急速增加,并且因此,导致磁盘取次数增加的低准确性预测的预取可实际上使性能恶化。
因此,本发明理解到,可采用利用顺序性原理的更加简单的推测性预取解决方案,顺序性为请求的数据(将被读取的数据)的特性,其中经常要求具有升顺的无间隙连续编号的页。顺序文件的访问存在于许多环境中,这些环境包括视频点播,数据库扫描、拷贝、备份、及修复。与复杂的预测方法相反,如此处所理解的,测定顺序性是简单的,其要求很少的历史信息并能获得接近100%预测准确性。
然而,虽然看上去简单,然而如此处关键性地认识到的,一个好的顺序预取算法及相关的高速缓存替换策略令人吃惊地难以实现。要理解为什么会这样,必须首先了解,在顺序预取中,最初可利用同步预取(向高速缓存器放入命中失误页之后的顺序页),在这个启动阶段之后,利用异步预取(向高速缓存器放入顺序在被“命中”,即在高速缓存器中找到的所请求“触发”页之后的页)。因此,预取和高速缓存相互交织在一起,当利用预取时用于高速缓存管理的一个策略为上面所提到的LRU,其中,两个列表(一个列出顺序页而另一个列出随机访问页)根据访问的新近程度而得到维护。在顺序预取的环境下,当轨道被预取或访问时,它们被放置到顺序列表的最近最多使用(MRU)端,而对于高速缓存替换来说,轨道被从列表的LRU端逐出。
鉴于上面的背景介绍,本发明关键性地观察到当同步和异步预取策略与基于LRU的高速缓存一起使用并且访问异步触发轨道时,进行下一组轨道的异步预取。在基于LRU的高速缓存器中,这些新近所取的轨道组连同异步触发轨道一起被置于列表的MRU端,其中当前预取组内未被访问的轨道保留在它们在LRU列表中的位置处,因此,潜在地接近列表的LRU端。当前预取组内的这些未被访问的轨道可以在新近预取组中的轨道之前被访问,使得取决于可用于顺序数据的高速缓存空间量,可发生该未被访问的轨道中的某些轨道在被访问前从高速缓存器中被逐出,从而导致了顺序的命中失误的情况。此外,本发明理解到,这是可重复发生的,从而使采用异步预取的目的失败。
因此,当基于LRU的高速缓存器与上面的预取策略一起使用时,所得到的算法可破坏所谓的栈特性,并且因此当供给顺序预取数据的高速缓存空间量增加时,顺序的命中失误不必定减少。如此处所理解的,该“栈”特性在正确的高速缓存管理中可以是关键成分。如此处所进一步理解的,以增加顺序命中失误为代价,如果(i)仅使用同步预取,或(ii)如果同步预取和异步预取两者都使用,则上面的两个问题可被隐藏,其中始终设置异步触发为预取组中最后轨道,但是当然,第一种方案与前面所示的异步预取的所有潜在益处相当,而第二种方案可导致顺序命中失误,如果被预取的轨道在其处于高速缓存器中之前被访问的话。鉴于以上问题,本发明的一个目的是在不发生附加的顺序命中失误的情况下,避免破坏栈特性。更一般地,当利用顺序的预取时,本发明代表了高速缓存管理中的显著改进。
发明内容
根据此处的发明步骤对通用计算机编程。该发明也可以体现为一种产品(-种机器部件),其由数字处理装置使用,并且其有形地体现可由数字处理装置执行以实现本发明逻辑的指令程序。本发明可在引起数字处理装置执行此处的发明方法步骤的关键机器部件中实现。
因此,高速缓存数据的方法包括维护一个随机数据列表和一个顺序数据列表,以及动态确定顺序数据列表的期望尺寸。
在一些实施例中,确定操作可包括确定顺序数据列表的最近最少使用(LRU)部分就高速缓存命中失误而言是否比随机列表的最近最少使用(LRU)部分更有价值,以及如果如此,则增加期望尺寸,否则减小期望尺寸。在特定的实施例中,该方法包括根据顺序命中失误计算给顺序数据列表增加空间的边际效用,以及凭经验确定给随机数据列表增加空间的边际效用。基于该计算和确定行为,确立顺序数据列表的期望尺寸。
计算行为可将边际效用确定为等于s/L和2s/L之间的一个数,包括s/L和2s/L,其中s代表同步和异步预取的顺序命中失误的比率,而L代表顺序数据列表的长度。同样地,凭经验的确定行为可包括确定在随机数据列表的底部ΔL部分的两次连续高速缓存命中之间的顺序命中失误数量。如果计算出的给顺序数据列表增加空间的边际效用超过凭经验确定的给随机数据列表增加空间的边际效用,则增加期望尺寸,否则,减小期望尺寸。如果需要的话,该方法可进一步包括将至少一个最近预取的轨道组连同该轨道组中的异步触发轨道一起移至顺序数据列表的最近最多使用(MRU)部分。同样地,该方法可包括将该轨道组中的至少一些未被访问的轨道移至顺序数据列表的MRU部分。同样地,如果需要,该方法可包括确定顺序数据列表的至少一部分的尺寸是否超过期望尺寸,以及据此替换至少一个高速缓存器单元。
在另一方面,揭示了一个利用最近最少使用(LRU)高速缓存模式的数据系统,该模式从数据存储设备中同步和异步预取数据。该系统在不导致额外的高速缓存顺序命中失误的同时基本上避免了破坏栈特性。
在另一方面,计算机程序产品包括用于根据顺序命中失误计算给高速缓存器的顺序列表增加空间的边际效用的装置。还提供了用于凭经验确定在高速缓存器中给随机列表增加空间的边际效用的装置。该计算机程序产品具有用于响应计算和确定装置而确立顺序列表的期望尺寸的装置。
在另一方面,在与具有顺序列表和随机列表的至少一个高速缓存器相关联的处理器中,提供了包括在操作期间尝试使边际效用相等的逻辑,其中两个列表定义了各自的最近最少使用(LRU)部分,每个部分与在操作期间变化的各自的边际效用相关联。
在另一方面,处理器与高速缓存器相关联,该高速缓存器用于执行将新预取的轨道组连同该轨道组中的异步触发轨道一起移至顺序高速缓存列表的最近最多使用(MRU)部分的逻辑。该逻辑还将该轨道组中未被访问的轨道移至顺序高速缓存器列表的MRU部分。
在另一方面,与高速缓存器相关联的处理器执行用于确定顺序高速缓存器列表的尺寸是否超过期望尺寸,并据此替换至少一个高速缓存器单元的逻辑。
根据本发明的一个方面,提供了一种用于高速缓存数据的方法,包括:维护随机数据列表和顺序数据列表;以及动态确定顺序数据列表的期望尺寸,其中所述动态确定步骤包含:确定用于给随机数据列表增加空间的边际效用;根据顺序命中失误的比率计算用于给顺序数据列表增加空间的边际效用;以及如果计算出的用于给顺序数据列表增加空间的边际效用超过了所确定的用于给随机数据列表增加空间的边际效用,则增加所述期望尺寸,否则减小所述期望尺寸。
根据本发明的一个方面,提供了一种利用基于从数据存储设备中的同步和异步数据预取的最近最少使用高速缓存模式的数据系统,该系统在不导致高速缓存器的额外顺序命中失误的情况下避免破坏栈特性,其中所述数据系统包括:根据顺序命中失误的比率计算用于给顺序列表增加空间的边际效用的装置;确定用于给随机列表增加空间的边际效用的装置;以及如果计算出的用于给顺序数据列表增加空间的边际效用超过了所确定的用于给随机数据列表增加空间的边际效用,则增加所述期望尺寸,否则减小所述期望尺寸的装置。
根据本发明的一个方面,提供了一种与高速缓存器相关联的处理器,包括:将至少一个新预取的数据单元组连同该数据单元组中的异步触发数据单元一起移至顺序数据列表的最近最多使用部分的单元;将该数据单元组中至少一些未被访问的数据单元移至顺序数据列表的最近最多使用部分的单元;确定用于给随机数据列表增加空间的边际效用的单元;根据顺序命中失误的比率计算用于给顺序数据列表增加空间的边际效用的单元;以及如果计算出的用于给顺序数据列表增加空间的边际效用超过了所确定的用于给随机数据列表增加空间的边际效用,则增加所述期望尺寸,否则减小所述期望尺寸的单元。
根据本发明的一个方面,提供了一种与高速缓存器相关联的处理器,包括:确定顺序数据列表的至少一部分的尺寸是否超过期望尺寸的单元;基于确定顺序数据列表的至少一部分的尺寸是否超过期望尺寸的结果,替换至少一个高速缓存器单元的单元;确定用于给随机数据列表增加空间的边际效用的单元;根据顺序命中失误的比率计算用于给顺序数据列表增加空间的边际效用的单元;以及如果计算出的用于给顺序数据列表增加空间的边际效用超过了所确定的用于给随机数据列表增加空间的边际效用,则增加所述期望尺寸,否则减小所述期望尺寸的单元。
参考附图下可更好地理解本发明的结构和操作的细节,其中类似附图标记指示同类部件,并且其中:
附图说明
图1是一个非限制性系统的方框图,该系统中可利用本发明的高速缓存器管理策略;
图2是高速缓存器中随机页列表和顺序页列表的示意图;
图3是高速缓存器尺寸管理逻辑的流程图;以及
图4是高速缓存器替换逻辑的流程图。
具体实施方式
首先参考图1,其示出一个系统,一般指定为10,其图解了一个其中可利用本发明的非限制性环境。一般而言,本发明为一个用于管理缓存来自低速存储器的数据的数据高速缓存器的系统。例如,本发明可在数据库系统中实现,例如DB2和Oracle,以及诸如本发明受让人的“Shark”系统的基于RAID的系统,以及其它的系统,例如独立硬盘驱动器等。因此,应当理解,虽然图1图解了一个具有“Shark”结构的非限制性实现,然而其仅是可利用本发明的环境的代表。因此,本发明可在文件系统、数据库系统、或其它必须为可变尺寸数据对象分配空间的系统中实现。在一个预期的实施例中,本发明的处理器或多个处理器(计算机)可为由Armonk,N.Y.的国际商业机器公司(IBM)制造的个人计算机或任何计算机。包括具有伴随的IBM网络工作站、以例如AS400的商标出售的计算机。
如图所示,一个或多个处理器12通过具有毗连的连接器18的主机适配器的阵列16可与一个或多个主机14通信。同样地,处理器或多个处理器12通过各自的设备适配器22可与诸如RAID配置的盘存储系统20的低速存储器通信。处理器12可具有各自的非易失存储器(NVS)24,用来接收来自其它处理器以及各自的数据高速缓存器26(最好为固态实现的)的信息。一个或两个处理器都被编程来执行此处的逻辑。
对于该逻辑,此处的流程图和伪码图解了在计算机程序软件中体现的由处理器12执行的本发明逻辑的结构。本领域技术人员将理解,流程图和伪码图解了诸如计算机程序编码单元或电子逻辑电路的逻辑单元的结构,其根据本发明运行。显然,本发明由机器部件在其主要的实施例中实施,该机器部件将逻辑单元呈现为指示数字处理装置(即,计算机)执行与所示出的相对应的功能步骤序列的形式。
换言之,流程图及/或伪码可在由处理执行的计算机程序中体现为一系列计算机可执行的指令。这些指令可驻留在例如系统10的程序存储设备中。程序存储设备可以是RAM,或磁性或光学的盘或软盘、DASD阵列、磁带、电子只读存储器、或其它适当的数据存储设备。在本发明的一个图解实施例中,计算机可执行的指令可以是编译的C/C++兼容代码行。
在所示的非限制性实现中,每个高速缓存器26具有8千兆字节(GB)(每集群)的容量,每个NVS 24具有2GB(每集群)的容量,可使用4个600MHz PowerPC/RS64IV CPU,以及16个具有72GB,10Krmp驱动器的RAID-5(6+奇偶+备用)阵列可在数据存储器20中使用。AIX计算机可用下面的配置实现主机14:16GB RAM,具有1GHz PowerPC/Power4 CPU的双向SMP。主计算机14可通过实现主机适配器阵列16的两个光纤通道卡连接到处理器12上。
现在参考图2,每个高速缓存器26可包括两个栈式的列表,即,一个随机列表28和一个顺序列表(“SEQ”)30。随机列表28列出了可以已经根据例如读请求被随机访问过的高速缓存的页,而SEQ列表30维护根据推测性的顺序高速缓存或顺序读请求而被高速缓存的页的列表,这里描述了其原理。在每个列表28、30的顶部是其最近最多使用的(MRU)页,而列表的底部是最近最少使用的(LRU)页。每个列表在其底部的各自部分32、34,例如2%的部分,可被认作LRU部分。对于SEQ列表30,其LRU部分的期望尺寸36根据下面所阐述的逻辑被动态地确定并调整以使高速缓存器性能最优。
优选地,如在常规的基于LRU的高速缓存器中那样,一个新预取的轨道组连同当前轨道组中的异步触发轨道一起被置于SEQ列表30的MRU(顶部)端。此外,根据本发明的原理,当前轨道组中的所有未被访问的轨道也被移到列表30的MRU端,以在使其摆脱上面提到的反常行为的同时保持异步预取的好处。
现在参考图3,示出了用于在SEQ列表30和随机列表28中间动态地划分高速缓存器空间量以使总命中失误的比率最小的本发明自适应、自调节、低开销的算法。从方框38开始,计算给SEQ列表30增加空间的边际效用。在一个图解的非限制性实施例中,计算出方框38处的边际效用为s/L和2s/L之间,并且为方便计可选择为后者,其中“s”代表同步和异步预取的顺序高速缓存的命中失误比,以及“L”代表SEQ列表30的长度(例如,4KB页)。在一个实施例中,“s”是潜在的多路同步和异步预取的各自顺序高速缓存命中失误比的和,其可直接观察到。该“边际效用”可被认作有关顺序高速缓存命中失误的比率如何随着列表尺寸的变化而变化的测量。
图3,方框40表明给RANDOM列表28增加空间的边际效用也凭经验来确定。在一个图解的非限制实施例中,该边际效用被确定为1/ΔL,其中ΔL为由随机列表28的最底部部分中的两次连续高速缓存命中所定义的时间周期期间,随机列表28的最底部部分的长度。因此,用于进行方框40中的经验确定的采样时间周期可自适应于实际操作条件,虽然一些固定的时间周期也可被使用。
一旦得到了上面所讨论的两个边际效用,逻辑流向判断菱形框42以确定哪个边际效用更大。如果增加SEQ高速缓存器的边际效用超过增加随机高速缓存器的边际效用,则逻辑于方框44处增加SEQ列表30的期望尺寸36(图2);否则,于方框46处增加期望的尺寸36。
图4示出了用于在高速缓存器中换页的示例非限制性逻辑流。开始于判断菱形框48,可以确定边界条件是否存在。边界条件的非限制性示例包括随机列表28下降到低于总高速缓存器尺寸的2%或超过总高速缓存器尺寸的98%。如果下面伪码所示的初始化还没有被执行,可存在另一个边界条件。
如果边界条件存在,则逻辑可流向判断菱形框50以确定SEQ列表30中的LRU轨道是否比随机列表28中的LRU轨道更旧,可以理解,该测试使用根据本领域已知的原理提供给高速缓存的数据的时间戳标。如果判断菱形框50的测试结果为否定,则于方框52处逻辑从随机列表28换页;否则,于方框54处从SEQ列表换页。
然而,如果边界条件不存在,则逻辑流向判断菱形框56以确定SEQ列表30的至少一部分,例如图2中所示的LRU部分34,的尺寸是否超过期望尺寸36。如果是的话,逻辑流向方框54,否则流向方框52。
图3所示的逻辑连续地或周期性地返回至方框38,使得SEQ列表30的LRU部分的期望尺寸在操作期间被动态地确立,随高速缓存器利用的指示而变化。
下面的伪码是自说明的,但是通过进一步的说明,确定列表之一中的命中是否确实在其LRU部分ΔL中,6和12行。因此,如果TMRU和TLRU分别代表SEQ中MRU和LRU轨道的时间戳标,L代表页中SEQ的尺寸,而THIT代表命中轨道的时间戳标,那么如果(THIT-TLRU)≤ΔL/L(TMRU-TLRU),则发生了底部命中。相同的计算也可用于确定随机列表中的底部命中。
下面的代码使用三个常量,其可以特定于具体实现,并因此为非限制性的:(i)“m”(18及32行)代表同步和异步预读的程度;(ii)“g”(18和32行)代表当本发明在RAID设备中实现时,RAID组中的盘数;并且(iii)“triggerOffet”(49行)是相对预取轨道组的末端的偏移,并被用来区分异步触发。
1-3行仅在初始化阶段使用。计数器“seqmiss”跟踪随机列表中两次连续底部命中之间的顺序命中失误的数量,并被初始化为零。变量“desiredSeqListSize”为SEQ列表30的期望尺寸36,并被初始化为零,意味着边界条件最初存在。因此其余逻辑仅在SEQ被填充之后开始(见69-73行)。变量“adapt”确定对desiredSeqListSize的适应的瞬时量和方向。
4-50行描述了高速缓存器管理策略。4行中的量比在一些非限制性实施例中可被置为(2*s*ΔL)/L。
5-10行处理当随机列表中的轨道被命中时的情况。如果命中是在随机列表的底部(6行),那么“seqmiss”被复位至零(7行),因为随机列表底部的两次连续命中之间的顺序命中失误的数量是我们所关心的。8行设置变量“adapt”={2·seqmiss·ΔL}/L-1。然而,“adapt”不允许超过1或小于-1。注意到,如果“adapt”大于零,则desiredSeqListSize最好增加,否则它最好减小。该增加或减小在70行中得以执行。并且,当SEQ和随机的边际效用之间的不等量较大时,“adapt”的值也较大,并且因此,采用较快的适应速度,反之当两个边际效用接近相等时,“adapt”将接近于零,并且采用较慢的适应速度。最后,70行(其实现实际的适应)仅当轨道被从列表之一中确实逐出时才执行。
11-27行处理当SEQ中的轨道被命中时的情况。如果命中是在SEQ列表的底部(12行)并且“ratio”已变大(13行),换句话说,在一段时间内还没有发现随机列表底部有命中,那么“adapt”被置为1(14行),意味着“desiredSeqListSize”以可能的最快速度增加。如果命中的轨道是一个异步触发轨道(17行),则18行异步预读下一个顺序轨道组。21-27行描述了用来检测顺序访问模式的非限制性方式的实现。
28-40行处理高速缓存器命中失误。对于一个顺序命中失误(29-31行),在32行轨道组被同步地预读。余下的行处理顺序访问模式的检测。
41-50行(i)从所给的轨道范围中读取命中失误轨道;(ii)将所给范围内的全部轨道置于MRU位置;并且(iii)设置异步触发。51-73行实现上面图4的高速缓存器替换策略并实现适应。如多线程系统中所常见的,本发明假设这些行可以在独立线程上运行(51行)。如果空闲队列的尺寸下降到低于预定门限值(52行),则如果其超过desiredSeqListSize,轨道被从SEQ中逐出,否则从随机列表中逐出轨道。不论哪种情况,被逐出的轨道均被放置于空闲队列上。最后,68-73行将LRU轨道从期望列表中清除,并如上所述进行适应。
初始化:设置适应变量为0
1:设置seqMiss为0
2:设置″adapt″为0
3:设置desiredSeqListsize为0
高速缓存器管理策略(CACHE MANAGEMENT Policy):
请求Track x:
4:设置ratio=(2·seqMiss·ΔL)/seqListsize
5:case I:x是RANDOM(HIT)的元素
6:if x是RANDOM BOTTOM的元素then
7:  Reset seqMiss=0
8:  set″adapt″=max(-1,min(ratio-1,1))
9:endif
10:Mru(x,RANDOM)
11:case ii:x是SEQ(HIT)的元素
12:if x是SEQ BOTTOM的元素then
13:  if(ratio>20)then
14:    Set″adapt″=1
15:  endif
16:endif
17:if x is AsyncTrigger then
18:   ReadAndMru([x+1,x+m-x%g],SEO)
19:endif
20:Mru(x,SEQ)
21:if track(x-1)是(SEQ union with RANDOM)的元素then
22:  if(seqCounter(x-1)==0)then
23:    Set seqCounter(x)=max(seqThreshold,seqCounter(x-1)+i)
24:  endif
25:else
26:  Set seqCounter(x)=1
27:endif
28:case iii:x不是(SEQ union with RANDOM)(MISS)的元素
29:if(x-1)是(SEQ union with RANDOM)的元素then
30:  if seqCounter(x-1)==seqThreshold then
31:    seqMiss++
32:   ReadAndMru(lx,x+m-x%q],SEG)
33:   set seqCounter(x)=seqThreshold
34:  else
35:   ReadAndMru([x,x],RANDOM)
36:   Set seqCounter(x)=seqCounter(x-1)+1
37:  endif
38:else
39: Set seqCounter(x)=1
40:endif
ReadAndMru([start,end],ListType)
41:for each track t in [start,end];do
42:if t 不是(SEQ union with RANDOM)的元素then
43:从空闲队列取得空闲轨道
44:从盘中读取轨道t
45:endif
46:Mru(t,ListType)
47:done
48:if(ListType==SEQ)
49:Set AsyncTrigger as(end-triggerOffset)
50:endif
空闲队列管理(FREE QUEUE MANAGEMENT):
FreeQThread()
51:while(true)do
52:if length(FreeQ)<FreeQThreshold then
53: if(seqListsize<ΔL or randomListsize<ΔL)then
54:  if(SEQ的lru轨道比RANDOM的lru轨道更旧)then
55:   EvictLruTrackAndAdapt(SEQ)
56:  else
57:   EvictLruTrackAndAdapt(RANDOM)
58:  endif
59: else
60:  if(seqListSize>desiredseqListSize)then
61:   EvictLruTrackAndAdapt(SEQ)
62:  else
63:   EvictLruTrackAndAdapt(RANDOM)
64:  endif
65: endif
66:endif
67:endwhile
EvictLruTrackAndAdapt(ListType)
68:逐出listType中的lru轨道并将其加入空闲队列
69:if(desiredseqListSize>O)then
70:  Set desiredSeqListSize+=″adapt″/2
71:else
72:  set desiredSeqListSize=seqListSize
73:endif
总而言之,本发明结合了高速缓存和顺序预取,并且不要求保存历史。
尽管此处详细所示并描述的特定的用于高速缓存器顺序列表的动态尺寸确定的系统和方法完全能够达到本发明上面所描述的目的,然而可以理解,该特定的用于高速缓存器顺序列表的动态尺寸确定的系统和方法是本发明目前最优的实施例,并因此代表被本发明所广泛涵盖的主题,可以理解,本发明的范围充分包括本领域技术人员能够想到的其它实施例,并且可以理解,本发明的范围因此仅由附加的权利要求书来限定,其中以单数形式对要素的引用不表示“一个且唯一一个”,除非明确指出,而是“一个或多个”。对于设备或方法而言,不必解决每一个由本发明寻求解决的问题,因为它将被本发明的权利要求书所包括。更进一步,无论单元、部件、或方法步骤在权利要求书中是否被明确地阐述,本公开中的单元、部件、或方法步骤并不是仅提供给公众的。尽管此处缺少明确的定义,然而权利要求中的术语将被给予所有普通和习惯的意义,其不与本说明书和文件历史相矛盾。

Claims (15)

1.一种用于高速缓存数据的方法,包括:
维护随机数据列表和顺序数据列表;以及
动态确定顺序数据列表的期望尺寸,
其中所述动态确定步骤包含:
确定用于给随机数据列表增加空间的边际效用;
根据顺序命中失误的比率计算用于给顺序数据列表增加空间的边际效用;以及
如果计算出的用于给顺序数据列表增加空间的边际效用超过了所确定的用于给随机数据列表增加空间的边际效用,则增加所述期望尺寸,否则减小所述期望尺寸。
2.根据权利要求1的方法,其中所述动态确定步骤还包含:
确定顺序数据列表的最近最少使用部分对高速缓存器命中失误的比率的影响是否比随机列表的最近最少使用部分更大,以及如果是,则增加期望尺寸,否则减小期望尺寸。
3.根据权利要求1的方法,其中所述确定用于给随机数据列表增加空间的边际效用的步骤包括根据在由随机数据列表底部部分中两次连续高速缓存器命中定义的时间周期ΔL内顺序命中失误的数量,确定顺序命中失误的比率“s”。
4.根据权利要求3的方法,其中所述根据顺序命中失误的比率计算用于给顺序数据列表增加空间的边际效用的步骤确定边际效用等于s/L和2s/L之间的一个数,包括s/L和2s/L,其中s代表同步和异步预取的顺序命中失误的比率,而L代表顺序数据列表的长度。
5.根据权利要求1的方法,包括:
将至少一个新预取的数据单元组连同该数据单元组中的异步触发数据单元一起移至顺序数据列表的最近最多使用部分;以及
将该数据单元组中至少一些未被访问的数据单元移至顺序数据列表的最近最多使用部分。
6.根据权利要求1的方法,包括:
确定顺序数据列表的至少一部分的尺寸是否超过期望尺寸;以及
如果确定顺序数据列表的至少一部分的尺寸超过期望尺寸,则从顺序数据列表替换至少一个高速缓存器单元,否则,从随机数据列表替换至少一个高速缓存器单元。
7.一种利用基于从数据存储设备中的同步和异步数据预取的最近最少使用高速缓存模式的数据系统,该系统在不导致高速缓存器的额外顺序命中失误的情况下避免破坏栈特性,
其中所述数据系统包括:
根据顺序命中失误的比率计算用于给顺序列表增加空间的边际效用的装置;
确定用于给随机列表增加空间的边际效用的装置;以及
如果计算出的用于给顺序数据列表增加空间的边际效用超过了所确定的用于给随机数据列表增加空间的边际效用,则增加所述期望尺寸,否则减小所述期望尺寸的装置。
8.根据权利要求7的系统,其中所述确定用于随机列表增加空间的边际效用的装置通过根据在由随机列表底部部分中两次连续高速缓存器命中定义的时间周期ΔL内顺序命中失误的数量来确定顺序命中失误的比率“s”。
9.根据权利要求8的系统,其中所述根据顺序命中失误的比率计算用于给顺序列表增加空间的边际效用的装置确定给顺序数据列表增加空间的边际效用等于s/L和2s/L之间的一个数,包括s/L和2s/L,其中L代表顺序数据列表的长度。
10.根据权利要求7的系统,其中所述数据系统还包括:
将至少一个新预取的数据单元组连同该数据单元组中的异步触发数据单元一起移至顺序数据列表的最近最多使用部分的装置;以及
将该数据单元组中至少一些未被访问的数据单元移至顺序数据列表的最近最多使用部分的装置。
11.根据权利要求7的系统,其中所述数据系统还包括:
确定顺序数据列表的至少一部分的尺寸是否超过期望尺寸的装置;以及
如果确定顺序数据列表的至少一部分的尺寸超过期望尺寸,则从顺序数据列表替换至少一个高速缓存器单元,否则,从随机列表替换至少一个高速缓存器单元的装置。
12.一种与高速缓存器相关联的处理器,包括:
将至少一个新预取的数据单元组连同该数据单元组中的异步触发数据单元一起移至顺序数据列表的最近最多使用部分的单元;
将该数据单元组中至少一些未被访问的数据单元移至顺序数据列表的最近最多使用部分的单元;
确定用于给随机数据列表增加空间的边际效用的单元;
根据顺序命中失误的比率计算用于给顺序数据列表增加空间的边际效用的单元;以及
如果计算出的用于给顺序数据列表增加空间的边际效用超过了所确定的用于给随机数据列表增加空间的边际效用,则增加所述期望尺寸,否则减小所述期望尺寸的单元。
13.根据权利要求12的处理器,还包括:
确定顺序数据列表的至少一部分的尺寸是否超过期望尺寸的单元;以及
如果确定顺序数据列表的至少一部分的尺寸超过期望尺寸,则从顺序数据列表替换至少一个高速缓存器单元,否则,从随机数据列表替换至少一个高速缓存器单元的单元。
14.一种与高速缓存器相关联的处理器,包括:
确定顺序数据列表的至少一部分的尺寸是否超过期望尺寸的单元;
基于确定顺序数据列表的至少一部分的尺寸是否超过期望尺寸的结果,替换至少一个高速缓存器单元的单元;
确定用于给随机数据列表增加空间的边际效用的单元;
根据顺序命中失误的比率计算用于给顺序数据列表增加空间的边际效用的单元;以及
如果计算出的用于给顺序数据列表增加空间的边际效用超过了所确定的用于给随机数据列表增加空间的边际效用,则增加所述期望尺寸,否则减小所述期望尺寸的单元。
15.根据权利要求14的处理器,还包括:
将至少一个新预取的数据单元组连同该数据单元组中的异步触发数据单元一起移至顺序数据列表的最近最多使用部分的单元;以及
将该数据单元组中至少一些未被访问的数据单元移至顺序数据列表的最近最多使用部分的单元。
CNB2005101070534A 2004-09-30 2005-09-29 用于高速缓存器顺序列表的动态尺寸确定的系统和方法 Expired - Fee Related CN100442249C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/954,937 US7464246B2 (en) 2004-09-30 2004-09-30 System and method for dynamic sizing of cache sequential list
US10/954,937 2004-09-30

Publications (2)

Publication Number Publication Date
CN1755652A CN1755652A (zh) 2006-04-05
CN100442249C true CN100442249C (zh) 2008-12-10

Family

ID=36100559

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101070534A Expired - Fee Related CN100442249C (zh) 2004-09-30 2005-09-29 用于高速缓存器顺序列表的动态尺寸确定的系统和方法

Country Status (3)

Country Link
US (5) US7464246B2 (zh)
CN (1) CN100442249C (zh)
TW (1) TWI393004B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853218A (zh) * 2010-05-12 2010-10-06 中兴通讯股份有限公司 用于磁盘阵列的读取方法和系统

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7464246B2 (en) * 2004-09-30 2008-12-09 International Business Machines Corporation System and method for dynamic sizing of cache sequential list
US7260679B2 (en) * 2004-10-12 2007-08-21 International Business Machines Corporation Apparatus and method to manage a data cache using a first and second least recently used list
US8250316B2 (en) * 2006-06-06 2012-08-21 Seagate Technology Llc Write caching random data and sequential data simultaneously
CN100426258C (zh) * 2006-09-08 2008-10-15 威盛电子股份有限公司 嵌入式系统及其缓冲器尺寸决定方法
US7783839B2 (en) 2007-01-08 2010-08-24 International Business Machines Corporation Using different algorithms to destage different types of data from cache
US7702857B2 (en) * 2007-08-22 2010-04-20 International Business Machines Corporation Adjusting parameters used to prefetch data from storage into cache
US8239640B2 (en) * 2008-10-09 2012-08-07 Dataram, Inc. System for controlling performance aspects of a data storage and access routine
KR101570179B1 (ko) * 2008-12-08 2015-11-18 삼성전자주식회사 빠른 파워-오프를 위한 캐시 동기화 방법 및 시스템
US8914417B2 (en) 2009-01-07 2014-12-16 International Business Machines Corporation Apparatus, system, and method for maintaining a context stack
US8095738B2 (en) * 2009-06-15 2012-01-10 International Business Machines Corporation Differential caching mechanism based on media I/O speed
US8510785B2 (en) * 2009-10-19 2013-08-13 Motorola Mobility Llc Adaptive media caching for video on demand
WO2011106458A1 (en) * 2010-02-24 2011-09-01 Marvell World Trade Ltd. Caching based on spatial distribution of accesses to data storage devices
CN101894048B (zh) * 2010-05-07 2012-11-14 中国科学院计算技术研究所 一种基于阶段分析的缓存动态划分方法和系统
US9043533B1 (en) * 2010-06-29 2015-05-26 Emc Corporation Sizing volatile memory cache based on flash-based cache usage
US8590001B2 (en) * 2010-08-20 2013-11-19 Promise Technology, Inc. Network storage system with data prefetch and method of operation thereof
US8812788B2 (en) 2010-11-09 2014-08-19 Lsi Corporation Virtual cache window headers for long term access history
US8533393B1 (en) * 2010-12-14 2013-09-10 Expedia, Inc. Dynamic cache eviction
US8650354B2 (en) * 2011-07-22 2014-02-11 International Business Machines Corporation Prefetching tracks using multiple caches
US8631190B2 (en) * 2011-07-22 2014-01-14 International Business Machines Corporation Prefetching data tracks and parity data to use for destaging updated tracks
US8566530B2 (en) 2011-07-22 2013-10-22 International Business Machines Corporation Prefetching source tracks for destaging updated tracks in a copy relationship
US9069678B2 (en) 2011-07-26 2015-06-30 International Business Machines Corporation Adaptive record caching for solid state disks
CN102298508B (zh) * 2011-09-07 2014-08-06 记忆科技(深圳)有限公司 基于流的固态硬盘预读取的方法及装置
US9110810B2 (en) * 2011-12-06 2015-08-18 Nvidia Corporation Multi-level instruction cache prefetching
US10613982B1 (en) 2012-01-06 2020-04-07 Seagate Technology Llc File-aware caching driver
US9268692B1 (en) 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US10339069B2 (en) * 2012-09-28 2019-07-02 Oracle International Corporation Caching large objects in a computer system with mixed data warehousing and online transaction processing workload
CN103778069B (zh) * 2012-10-18 2017-09-08 深圳市中兴微电子技术有限公司 高速缓冲存储器的高速缓存块长度调整方法及装置
US9497489B2 (en) 2013-03-12 2016-11-15 Google Technology Holdings LLC System and method for stream fault tolerance through usage based duplication and shadow sessions
DE102013204469A1 (de) * 2013-03-14 2014-09-18 Robert Bosch Gmbh Mikroelektrochemischer Sensor und Verfahren zum Betreiben eines mikroelektrochemischen Sensors
US9652406B2 (en) * 2015-04-30 2017-05-16 International Business Machines Corporation MRU batching to reduce lock contention
US9996476B2 (en) 2015-09-03 2018-06-12 International Business Machines Corporation Management of cache lists via dynamic sizing of the cache lists
US20170116127A1 (en) * 2015-10-22 2017-04-27 Vormetric, Inc. File system adaptive read ahead
KR102429903B1 (ko) * 2015-12-03 2022-08-05 삼성전자주식회사 비휘발성 메인 메모리 시스템의 페이지 폴트 처리 방법
KR20180097220A (ko) * 2017-02-23 2018-08-31 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
US10248577B2 (en) 2017-04-07 2019-04-02 International Business Machines Corporation Using a characteristic of a process input/output (I/O) activity and data subject to the I/O activity to determine whether the process is a suspicious process
US10282543B2 (en) * 2017-05-03 2019-05-07 International Business Machines Corporation Determining whether to destage write data in cache to storage based on whether the write data has malicious data
US10445497B2 (en) 2017-05-03 2019-10-15 International Business Machines Corporation Offloading processing of writes to determine malicious data from a first storage system to a second storage system
KR102415875B1 (ko) * 2017-07-17 2022-07-04 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20190303037A1 (en) * 2018-03-30 2019-10-03 Ca, Inc. Using sequential read intention to increase data buffer reuse
US11169919B2 (en) 2019-05-12 2021-11-09 International Business Machines Corporation Cache preference for selected volumes within a storage system
US11237730B2 (en) 2019-05-12 2022-02-01 International Business Machines Corporation Favored cache status for selected volumes within a storage system
US11176052B2 (en) 2019-05-12 2021-11-16 International Business Machines Corporation Variable cache status for selected volumes within a storage system
US11151035B2 (en) 2019-05-12 2021-10-19 International Business Machines Corporation Cache hit ratios for selected volumes within a storage system
US11163698B2 (en) * 2019-05-12 2021-11-02 International Business Machines Corporation Cache hit ratios for selected volumes using synchronous I/O

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761715A (en) * 1995-08-09 1998-06-02 Kabushiki Kaisha Toshiba Information processing device and cache memory with adjustable number of ways to reduce power consumption based on cache miss ratio
US6260115B1 (en) * 1999-05-13 2001-07-10 Storage Technology Corporation Sequential detection and prestaging methods for a disk storage subsystem
CN1421003A (zh) * 2000-03-31 2003-05-28 英特尔公司 对盘驱动事务处理采用存取日志
CN1489061A (zh) * 2002-08-29 2004-04-14 国际商业机器公司 微处理器中的数据预取方法及微处理器
CN1490730A (zh) * 2002-10-16 2004-04-21 国际商业机器公司 非均匀存储器访问计算机系统的可重构高速缓存控制器
WO2004049169A2 (en) * 2002-11-22 2004-06-10 Koninklijke Philips Electronics N.V. Using a cache miss pattern to address a stride prediction table

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5432919A (en) * 1989-07-06 1995-07-11 Digital Equipment Corporation Sequential reference management for cache memories
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5940877A (en) * 1997-06-12 1999-08-17 International Business Machines Corporation Cache address generation with and without carry-in
US6327644B1 (en) * 1998-08-18 2001-12-04 International Business Machines Corporation Method and system for managing data in cache
US6141731A (en) * 1998-08-19 2000-10-31 International Business Machines Corporation Method and system for managing data in cache using multiple data structures
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
US6996676B2 (en) * 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7464246B2 (en) 2004-09-30 2008-12-09 International Business Machines Corporation System and method for dynamic sizing of cache sequential list

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761715A (en) * 1995-08-09 1998-06-02 Kabushiki Kaisha Toshiba Information processing device and cache memory with adjustable number of ways to reduce power consumption based on cache miss ratio
US6260115B1 (en) * 1999-05-13 2001-07-10 Storage Technology Corporation Sequential detection and prestaging methods for a disk storage subsystem
CN1421003A (zh) * 2000-03-31 2003-05-28 英特尔公司 对盘驱动事务处理采用存取日志
CN1489061A (zh) * 2002-08-29 2004-04-14 国际商业机器公司 微处理器中的数据预取方法及微处理器
CN1490730A (zh) * 2002-10-16 2004-04-21 国际商业机器公司 非均匀存储器访问计算机系统的可重构高速缓存控制器
WO2004049169A2 (en) * 2002-11-22 2004-06-10 Koninklijke Philips Electronics N.V. Using a cache miss pattern to address a stride prediction table

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
以基本块为单位的非顺序指令预取. 沈立,戴葵,王志英.计算机工程与科学,第25卷第4期. 2003
以基本块为单位的非顺序指令预取. 沈立,戴葵,王志英.计算机工程与科学,第25卷第4期. 2003 *
多机Cache 中存储访问不命中率的理论分析. 窦勇,李延安.计算机工程与科学,第18卷第3期. 1996
多机Cache 中存储访问不命中率的理论分析. 窦勇,李延安.计算机工程与科学,第18卷第3期. 1996 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853218A (zh) * 2010-05-12 2010-10-06 中兴通讯股份有限公司 用于磁盘阵列的读取方法和系统

Also Published As

Publication number Publication date
US20080183969A1 (en) 2008-07-31
US20080140940A1 (en) 2008-06-12
US7793065B2 (en) 2010-09-07
TWI393004B (zh) 2013-04-11
US20080195834A1 (en) 2008-08-14
US7464246B2 (en) 2008-12-09
US7509470B2 (en) 2009-03-24
US20060069871A1 (en) 2006-03-30
CN1755652A (zh) 2006-04-05
US7707382B2 (en) 2010-04-27
US20080140939A1 (en) 2008-06-12
TW200627144A (en) 2006-08-01
US7533239B2 (en) 2009-05-12

Similar Documents

Publication Publication Date Title
CN100442249C (zh) 用于高速缓存器顺序列表的动态尺寸确定的系统和方法
Park et al. CFLRU: a replacement algorithm for flash memory
US8601216B2 (en) Method and system for removing cache blocks
Gill et al. SARC: Sequential Prefetching in Adaptive Replacement Cache.
US6983356B2 (en) High performance memory device-state aware chipset prefetcher
Nesbit et al. AC/DC: An adaptive data cache prefetcher
US20190004916A1 (en) Profiling asynchronous events resulting from the execution of software at code region granularity
EP3676712B1 (en) Multi-line data prefetching using dynamic prefetch depth
JPH07253926A (ja) キャッシュ・ミスによる時間ペナルティ減少方法
Khan et al. Improving cache performance using read-write partitioning
US8667221B2 (en) Detection of streaming data in cache
Bhattacharjee et al. Storage Class Memory Aware Data Management.
Woo et al. FMMU: a hardware-accelerated flash map management unit for scalable performance of flash-based SSDs
Liu Architectural and OS-Level Performance and Thermal Optimizations for DRAM Systems
Carter et al. Erik Brunvand, Al Davis, Chen-Chi Kuo, Ravindra Kuramkote, Michael Parker, Lambert Schaelicke, Terry Tateyama Department of Computer Science Intel Corporation University of Utah Dupont, WA
OnurMutlu et al. DRAM-Aware Last-Level Cache Replacement

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081210

CF01 Termination of patent right due to non-payment of annual fee