CN1149486C - 基于惩罚的高速缓冲存储器和置换技术 - Google Patents
基于惩罚的高速缓冲存储器和置换技术 Download PDFInfo
- Publication number
- CN1149486C CN1149486C CNB988051044A CN98805104A CN1149486C CN 1149486 C CN1149486 C CN 1149486C CN B988051044 A CNB988051044 A CN B988051044A CN 98805104 A CN98805104 A CN 98805104A CN 1149486 C CN1149486 C CN 1149486C
- Authority
- CN
- China
- Prior art keywords
- data item
- preferred value
- data
- cache
- instruction
- 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
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
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
Abstract
高速缓存数据置换技术能提高在有中央处理单元(CPU)、高速缓冲存储器和主存储器的计算机系统中的性能,其中的高速缓冲存储器中存储多个数据项。该高速缓存数据置换技术包括将优先值与存储的每个数据项关联,其中优先值是对-如果在该数据项不存储在高速缓冲存储器中时试图从高速缓冲存储器中检索该数据项-CPU将发生的停滞时间的评估值。当某个高速缓存项必须置换时,通过分析优先值来确定一个最低优先值。然后,选择数据项中具有该最低优先值的一个,用置换数据项置换。数据项的优先值可以以一个在启动数据项的检索和完成数据项的检索期间已经有多少其它指令被提取并存储在缓冲存储器中—其中其它指令的执行依赖于完成数据项的检索—的函数来确定。在本发明的其它方面,可以定期地降低高速缓存项的优先值以便提高高速缓存命中率,也可以每当关联数据被访问时就重新初始化优先值,以保证将有价值的数据项保留在数据高速缓存中。
Description
技术领域
本发明涉及高速缓冲存储器,更具体来说涉及在高速缓冲存储器中选择要被置换的数据的策略。
背景技术
计算机系统内的处理可以由称为中央处理单元(CPU)的硬件元素来执行。CPU所用的指令和数据可以存储在大型的主存储器中。CPU的操作速度(即其执行一条指令所用的时间)一般大大高于主存储器的存取速度。因此,CPU可能会被迫在主存储器循环经历一次存储器存取操作时空闲地等待所请求的指令或数据项。这种空闲等待时间严重地降低了CPU的有效处理速度。
为了解决这个问题,人们经常在计算机系统中设计一个高速缓冲存储器单元。在计算机领域,人们熟知高速缓冲存储器是在CPU与主存储器之间提供缓冲功能的辅助存储器。高速缓冲存储器通常被设计得比主存储器快得多,要在主存储器之外加载。
以CPU的速度运行的存储器件,比构成主存储器的较慢的器件昂贵许多,物理体积也更大。结果,高速缓冲存储器的规模(由存储器内含有的可单独寻址的存储单元的数量来衡量)比主存储器的规模小许多。因为高速缓冲存储器不能容纳所有存储在主存储器中的指令和数据,CPU不时地请求当前不在高速缓冲存储器中存储的特定指令或数据项。这种情况称为“高速缓存失中”,要求将所请求的指令或数据项从主存储器中检索出来,存入高速缓冲存储器,然后提供给CPU。于是可见,每一次高速缓存失中,都潜在地使CPU等待的时间与没有高速缓冲存储器时的等待时间(如果不是更长)一样。
一种用于减少每当数据读高速缓冲存储器失中发生时的处理速度惩罚的技术是使指令执行无序化。这意味着在引起高速缓冲存储器失中的指令之后的指令将在CPU等待失中数据期间继续执行。要使这个策略有效,这些随后的指令的执行必须不依赖于该失中数据。确实依赖该失中数据的指令的执行必须被搁置(例如在队列中),直到失中数据可用为止。当数据可用时,所有原来依赖这个数据的指令于是都得到执行。William Johnson的《超级标量微处理器设计》(Superscaler Microprocessor Design),1991,(ISBN 0-13-875634-1)中描述了无序化指令执行技术,本说明引用其作为参考。
即使采用了无序化执行策略,程序中也可能有其目标位置以某种方式依赖失中数据的转移指令。一种用于避免CPU的指令提取操作的长时间延迟策略是猜测将采取哪种转移,并试探性地继续提取并执行所猜测的转移中的指令。如果当失中数据变得可用时发现该猜测原来正确,则能将试探性执行的结果永久化(例如将结果存储到目标存储位置)。然而,如果猜测并不正确,则必须将条件转移指令之后执行的指令得出的结果全部清除,程序执行从正确的分支路径重新开始。因此,错误的猜测导致非常高的性能惩罚。
这个策略可以改进,方法是进一步引入一个转移预测存储器,存储关于以前条件转移的结果的统计,以提高对哪个是未决条件转移的正确路径的正确猜测的概率。尽管使用这个策略,也不可避免地存在着被错误预测的转移,由此导致高的性能惩罚。
影响CPU的有效执行速度的另一个因素是,当高速缓存失中发生时,数据(或者当数据和指令共享相同高速缓冲存储器时的一或多条指令)必须要被从高速缓冲存储器中移走,以便为失中数据项腾出空间。选择要从高速缓冲存储器中移走的数据的策略(称为“高速缓冲存储器置换策略”)也可能影响CPU的有效执行速度,因为“被抛弃的”数据可能是以后需要的,由此导致另一个高速缓存失中。
现有的高速缓存置换策略基于的是最大化在高速缓存中成功定位所请求指令或数据项(称为“高速缓存命中”)的概率。一种这样的策略是对由执行程序最近最少使用(LRU)的数据项作移出选择。这种方法的根据是时间局域性(temporal locality)的概念:(第二次存取时间上发生得越接近第一次,则第二次要存取的地址与第一次存取的地址相同的概率越高。)
其它的高速缓存置换策略是随机置换和先进先出(FIFO)。
所有上述的置换策略都有一个目标是高的高速缓存命中率,后者通常定义为从高速缓存取数据时高速缓存读试图的成功次数除以高速缓存访问试图的总次数。(相关的度量是高速缓存失中率,通常定义为1-高速缓存命中率。)然而,这些高速缓存置换策略有缺陷,因为它们未能考虑到高速缓存失中的影响因素,而高速缓存失中的发生是不可避免的。
发明内容
因此本发明的一个目的是,通过对确定应当移出高速缓冲存储器中哪些项来为置换高速缓存数据项腾出空间的方法和装置的改进,提高CPU的有效执行速度。
上述及其它目的是通过以下方法和装置来实现的。
根据本发明的在一个具有中央处理单元(CPU)、高速缓冲存储器和主存储器的计算机系统中,一种向高速缓冲存储器存储数据项的方法,包含的步骤有:
响应第一指令的至少部分执行而启动从主存储器的数据项的检索;
确定要与数据项关联的优先值,其中优先值是对如果在高速缓冲存储器中没有存储该数据项的情况下试图从高速缓冲存储器检索该数据项时将发生多少CPU停滞时间的评估值;
从高速缓冲存储器移出一项数据,以便为所检索的数据项腾出空间;以及
完成数据项的检索并将数据项和优先值二者存储到高速缓冲存储器中。
根据本发明的一种在具有中央处理单元(CPU)、高速缓冲存储器和主存储器的计算机系统中使用所述的高速缓存数据置换方法,其特征在于,其中高速缓冲存储器中存储多个数据项,该高速缓存数据置换方法包含的步骤有:
用优先值与每个存储的数据项关联,其中对于每个数据项来说,优先值是对如果在高速缓冲存储器中没有存储该数据项的情况下试图从高速缓冲存储器检索该数据项时将发生多少CPU停滞时间的评估值;
分析各优先值以确定最低优先值;
选择数据项中具有最低优先值的一个数据项;以及
用置换数据项来置换所选择的数据项。
根据本发明的一种在具有中央处理单元(CPU)、高速缓冲存储器和主存储器的计算机系统中用于向高速缓冲存储器存储数据项的装置,包含:
响应第一指令的至少部分执行而启动从主存储器的数据项的检索的装置;
确定要与数据项关联的优先值所述的装置,其特征在于,优先值是对如果在高速缓冲存储器中没有存储该数据项的情况下试图从高速缓冲存储器检索该数据项时将发生多少CPU停滞时间的评估值;
从高速缓冲存储器移出一项数据以便为所检索的数据项腾出空间的装置;以及
完成数据项的检索并将数据项和优先值二者存储到高速缓冲存储器中的装置。
根据本发明的一种在具有中央处理单元(CPU)、高速缓冲存储器和主存储器的计算机系统中使用的高速缓存数据置换装置,其中高速缓冲存储器中存储多个数据项,该高速缓存数据置换装置包含:
用优先值与每个存储的数据项关联所述的装置,其特征在于,对于每个数据项来说,优先值是对如果在高速缓冲存储器中没有存储该数据项的情况下试图从高速缓冲存储器检索该数据项时将发生多少CPU停滞时间的评估值;
分析各优先值以确定最低优先值的装置;
选择数据项中具有最低优先值的一个数据项的装置;以及
用置换数据项来置换所选择的数据项的装置。
根据本发明的一个方面,高速缓存数据置换技术包括将优先值与存储的每个数据项关联,其中对于每个数据项来说,优先值是对—如果在该数据项没有存储在高速缓冲存储器中时试图从高速缓冲存储器中检索该数据项的情况下—CPU将发生的停滞时间的评估值。
在本发明的另一个方面,每个数据项的优先值是通过确定在从主存储器中检索该数据项的开始到完成的时间间隔内已经提取并在缓冲存储器中存储了多少其它指令来得出的,其中,其它指令的执行依赖于完成该数据项的检索。
在本发明的另一个方面,为每个数据项确定在该时间间隔内已经提取并在缓冲存储器中存储了多少其它指令的步骤进一步包含按根据其它指令中是否有任何指令是条件转移指令将该优先值调整一个数量。
在本发明的另一个方面,为每个数据项确定在该时间间隔内已经提取并在缓冲存储器中存储了多少其它指令的步骤进一步包含按根据其它指令中是否有任何指令是非转移指令将该优先值调整一个数量。
在本发明的另一个方面,当置换数据项要存储到高速缓存中时,要通过分析优先值来确定一个最低优先值而确定要被置换的高速缓存项。然后,选择数据项中具有该最低优先值的一个,用置换数据项置换。
在本发明的另一个方面,数据高速缓存的命中率的提高方法是不要求关联数据项的优先值保持不变。相反,每个优先值都定期按预定的量作调整,使调整后的优先值降低。这样,即使那些最初有高优先值的高速缓存项最终也可能变成置换的候选对象。
在本发明的另一个方面,可以允许将有价值的数据项无限期地保留在数据高速缓存中,方法是响应关联数据项的读访问,以预定的量调整优先值,其中调整后的优先值提高。可选方案是,可以响应关联数据项的读访问,将优先值设定到一个初始值。这个技术当与定期降低数据项的优先值的技术结合使用时,允许有价值的高速缓存项保留在数据高速缓存中—只要它们继续被运行程序访问的话,并进一步允许它们在不再被使用时被置换。
附图说明
本发明的上述及其它目的将通过以下结合各附图的详细说明中得到阐明。附图简介:
图1是体现本发明的示例性计算机系统的框图;
图2的流程图表示的是按照本发明的一个方面从主存储器检索数据项并将其存入数据高速缓存的技术;
图3是用于该发明性高速缓存存储和置换技术的数据高速缓存的示例性
实施例的图;
图4的流程图表示的是按照本发明的另一个方面在高速缓冲存储器中置换数据的策略。
图5是用于该发明性高速缓存存储和置换技术的数据高速缓存的另一个示例性实施例的图;
图6的流程图表示的是按照本发明的其它方面维护优先值的策略。
具体实施方式
现在将结合各附图来说明本发明的各种特点,附图中类似的部分用相同的标注字符来标识。
图1中显示了一个体现本发明的示例性计算机系统。CPU 101执行在主存储器107中存储的指令。CPU 101从主存储器107中含有的一个地址空间为指令检索数据。指令执行的结果也被存储回这同一个地址空间。
主存储器107的周期时间远低于CPU 101的执行速度。为了更快地向CPU101馈送指令,在CPU 101和主存储器107之间安置一个指令高速缓存103。指令高速缓存103按常规技术操作,因此这里不作进一步详细的说明。
为了更快地检索和存储数据,还在CPU 101与主存储器107之间安置一个数据高速缓存105。出入数据高速缓存105的数据流是由数据高速缓存控制器109控制的。数据高速缓存105的操作大多按照已知技术。数据高速缓存105同常规高速缓冲存储器一样,是周期时间接近CPU的执行速度的存储器。数据高速缓存105还同常规高速缓冲存储器一样,只保存主存储器107中所含有的信息的一个子集。于是,前文背景介绍段落中所讨论的高速缓存失中问题,适用于数据高速缓存105。
为了缓和高速缓存失中的影响,CPU 101的体系结构能进行无序的指令执行—如前文背景介绍段落中所讨论的那样。设计具有这种功能的CPU的技术在本领域是公知的,不需要在这里加以详细说明。为了便于理解本发明,下面要简要地说明CPU 101的示例性实施例。应当明白,这里所说明的发明原理不要求CPU 101采用下面说明的特定形式,而是相反,能适用于任何采用无序化指令执行的处理器体系结构。
示例性CPU 101包括指令提取逻辑111,用于确定下一条指令的地址并提取该指令。示例性CPU 101的指令集被没计成使用在许多可寻址工作寄存器113中任何一个中存储的操作数。因此,在使用某源操作数的指令能被执行之前,必须通过操作数提取逻辑115、算术逻辑单元(ALU)117和重定序缓冲器119,将该操作数从数据高速缓存105加载到工作寄存器中。当然,本发明决不限于仅仅在精简指令集计算机(RISC)—诸如这里所描述的精简指令集计算机—中使用。相反,本发明可以容易地应用到复杂指令集计算机(CISC),CISC的其中一个不同之处是,提供的指令允许ALU对直接从被寻址存储位置接收的数据进行操作,不必首先将该数据装入工作寄存器。
操作数提取逻辑115与重定序缓冲器119共同提供无序化指令执行的功能。操作数提取逻辑115负责汇集要施加到ALU 117的各输入的源操作数。为便利这个任务,操作数提取逻辑117包括有许多保留站(reservationstation),用于存储源数据本身或者(分配给尚未执行的指令的)指示源数据尚未装载入工作寄存器113的序列号。
重定序缓冲器119负责汇集目的地数据,并且负责跟踪某给定指令是否已经执行以及指令之间的相关性。因此,在指令被接收时,指令被分配一个标志号并存入重定序缓冲器119。然后检查重定序缓冲器中所有以前存储的指令,以确定该新指令是否有任何源与任何其它的以前指令的目的地匹配。如果有匹配,就有相关性,相关性阻止新指令立即得到执行(即新指令要求一个尚未由以前的指令生成的源操作数)。其结果是,要在操作数提取逻辑115中放置新指令的序列号而不是源操作数本身。
在这个实施例中,重定序缓冲器119中有存储目的地数据本身的空间。于是,当目的地数据变得可用时,就被装载到重定序缓冲器119中,并设置一个关联的状态标志来指示该数据有效。为了加快目的地数据也是后继指令的源数据时的指令执行速度,可以将目的地数据直接从重定序缓冲器119传输到操作数提取逻辑115中适当的保留站,而不是要求先将数据写入工作寄存器113后再将数据从工作寄存器113转移到操作数提取逻辑115。为了进一步加快指令执行速度示例性CPU 101进一步包括有一条从ALU 117的输出到操作数提取逻辑115的输入的通路,以便允许新生成的源数据更迅速地被装载。
生成的数据已经存储到重定序缓冲器119这个事实对于执行程序来说是透明的,执行程序只关心将结果存储到工作寄存器113之一或者存储到数据高速缓存105(或主存储器107)。因此,数据必须最终被从重定序缓冲器119转移到由相应指令所指示的目的地。从重定序缓冲器119向适当目的地转移所生成数据的行动,称作“提交”、“退役”或“写回”数据。示例性CPU 101的体系结构采用的策略是仅当所有与以前指令关联的数据都已经提交之后才提交所生成的数据。
尽管纳入了无序化执行功能,数据高速缓存失中的发生仍然招致了降低CPU 101的有效执行速度的开销惩罚。因此,为了进一步提高CPU 101的有效执行速度,数据高速缓存控制器109每当发生高速缓存失中时额外地采用下文说明的发明性数据置换技术。该发明性数据置换策略不是专注于获得高的命中率,而是基于减少在数据失中发生时导致的执行速度惩罚。
在本发明的一个方面,这个目的的实现是通过识别分类为下列三个类别之一的数据:
类型1的数据是可以被简单地写回到某地址、不被用作用于任何其它数据项的计算的输入变量的纯信息。类型1的数据项的一个例子是作为编辑器的复制和粘贴操作的一部分从存储器检索的数据。类型1的数据项的另一个例子是与用C语言编写的不使用变量指针的过程关联的参数。在这种情况中,过程的调用将导致变量先被复制到堆栈,然后复制到具有相同内容的局部变量。
类型2的数可以是信息数据。这种数据被作为输入变量用于一定数量的指令的计算之后被写回某地址。
类型3的数据可以是控制数据。控制数据要么直接要么间接地确定某条件转移指令的操作。(当控制数据被作为输入变量用在任意数量的计算指令中以确定一个然后被用作谓词用于确定条件转移指令的操作的结果数据项时,控制数据是间接操作的。)
如果发生高速缓存失中,只要CPU 101配备有允许无序化执行的硬件,则类型1的数据几乎不会导致执行速度惩罚。为此,保存未决指令和数据的队列必须长得足以使CPU 101中的诸执行单元在失中数据被检索期间保持忙活。
与类型2的数据关联的高速缓存失中会导致更大的执行速度惩罚,这种惩罚的程度是有多少指令直接或间接与该失中数据相关的一个函数。(发生间接相关的情形是,指令要求作为输入的不是失中数据本身,而是失中数据的一个函数的计算的结果。)
理论上讲,在高速缓存失中涉及类型2数据时使用无序化执行策略是有可能的。然而在实践中设计一个长度足以存放未决指令和数据的队列是有问题的,这是因为需要保持未决的相关指令的数量可能会非常大。
针对涉及类型3数据的高速缓存失中而发生的是最大的性能问题。如果条件转移不能得到评估,那么CPU 101就不知道提取哪条指令。在最坏的情况下,实际需要的指令不能在指令高速缓存103中得到。结果,CPU 101将在指令提取期间停滞,由此严重地影响有效执行速度。
按照本发明的一个方面,高速缓存置换策略被设计成首先将类型3数据在数据高速缓存105中的存在最大化。在本发明的另一个方面,高速缓存置换策略给予数据高速缓存105中类型2数据项比类型1数据项更高的优先权。
数据项的高速缓存置换优先权是通过将数据项与优先值关联而提供的。例如可以将优先值定义为,优先值越高,高速缓存失中的惩罚就越高。当然,人们会容易地提出另外的、还是按照本发明原理的定义,诸如通过让较低的优先值指示的是更高的高速缓存失中惩罚。
现在将结合图2中的流程图来说明本发明这些方面的一个示例性实施例。每当发生数据高速缓存失中时,就从主存储器107检索失中的数据项并存入数据高速缓存105(步骤201)。下一步,确定一个初始优先值作为假若在试图访问这个数据项时这个数据项不在数据高速缓存105的情况下会导致的惩罚的一个函数(步骤203)。优先值最好是计算机中的队列和其它硬件资源的当前状态的一个函数。然后将调整过的值与数据项关联(步骤205)。
现在将更详细地说明初始优先值的确定(步骤203)。数据项的优先值最好在对该数据项的试图访问结果是高速缓存失中时确定。当高速缓存失中发生时,后继指令的无序化执行开始。当遇到要求失中数据项的出现的指令时,这些指令就被存储在队列中,直到它们能被执行。例如,考察下列程序段:
load r1,#1;(r1:=“地址1”)
add r2,r1,r3;(r2:=r1+r3)
add r4,r2,r5;(r4:=r2+r5)
在上面的例子中,不仅初始加载指令依赖数据高速缓存105中有地址1处的数据项,而且后继的两条加法指令也如此。这是因为第一条加法指令要求r1中有适当的值,而这要在初始加载指令被执行之后才会发生。类似地,第二条加法指令在r2的内容确定之前是不能执行的。因此,如果数据高速缓存105中发生与“地址1”关联的高速缓存失中时,上述三条指令全部都要存储到队列中,直到失中数据变得可用。
在其中存储指令的队列用于确定失中数据的优先值。如果有相关性的条件转移,则优先值就非常高。如果有如上述例子中那样的数据相关关系,优先值可以设置成某个中等值。如果没有相关性,则失中数据的优先值就低。因此可以分别将优先值设置为3、2和1。
要确定优先值,一种简单方法是假设所有正执行的指令都直接或间接依赖失中数据。这种情况下的值是V=N1×V1+N2×V2,其中N1是尚未执行的非转移指令的数目,V1是分配给非转移指令的惩罚值,N2是尚未执行的转移指令的数目,V2是分配给条件转移指令的惩罚值。
将会看到,如果未执行指令中一些或全部都只依赖一个数据项,而正在计算的惩罚值不是为该数据项计算的,则上述的简单方法就会导致过高的优先值。同样,如果代码段中有两个数据提取,每个提取都导致高速缓存失中,则该简单的优先值计算方法就会导致将高优先值分配给每个数据项—即使第一个数据项应当精确地有低优先值,第二个数据项应当有高优先值。
鉴于在有些情况下过高评估优先值的可能性,人们可对重定序缓冲器中指令缓冲器的内容作更复杂的分析,以便只计算那些对主题数据项实际有依赖的未执行指令的数目。然而,这种分析的相关开销却使其没有上述简单方法那样吸引人。
现在看一个更完整的计算优先值的例子,假设下列代码段要被CPU 101执行:
指令
注释
load r0,#5; (r0:=“地址5”)
jump-on-equal r0,r1; (如果r0=r1,跳转)
add r6,r3,r0; (r6:=r3+r0)
add r7,r3,r2; (r7:=r3+r2)
add r8,r7,r9; (r8:=r7+r9)
add r9,r10,r11; (r9:=r10+r11)
其中rx代表工作寄存器x。
在这些指令被提取之后,重定序缓冲器119的内容可能会是表1中的样子:
表1
位置 | 序号 | 操作码 | 目的地 | 数据 | 数据有效 | 占用 |
7 | 0 | |||||
6 | 0 | |||||
5 | 12 | add | r9 | 1234 | 1 | 1 |
4 | 11 | add | r8 | 2344 | 1 | 1 |
3 | 10 | add | r7 | 2342 | 1 | 1 |
2 | 9 | add | r6 | - | 0 | 1 |
1 | 8 | je | - | - | 0 | 1 |
0 | 7 | load | r0 | - | 0 | 1 |
假设“load r0,#5”导致高速缓存失中,由此要求要从主存储器107提取所需的数据。那么在该数据从存储器地址5到达的时候,有一个条件转移(在位置1)和一个加法(在位置2)都依赖新到达的数据。位于位置3、4、和5的“数据有效=1”表示那些加法指令已经执行,并且不依赖任何其它指令。如果条件转移的惩罚值是5(即V2=5),其它指令的惩罚值是1(即V1=1),则将要分配给地址5的数据的优先值将是1×5+1×1=6。
注意在这个情况中,条件转移指令之后的所有指令是根据预期转移结果为转移没有发生的情况而推测性提取和执行的。如果对转移结果预期不正确,则必须清除条件转移之后的所有指令,必须提取和执行正确的指令路径。
上面已经说明了对每个数据高速缓存项的确定优先值的技术。如图2中指出的那样,将优先值与高速缓存项关联是必要的。这可以用许多方法中的任何方法来完成。现在将结合图3说明这些技术之一,图3表示了一个用于上述发明技术的数据高速缓存105的示例性实施例。数据高速缓存105能在0到N-1表示的地址存储N个数据项。在示例性地址m存储着数据项301。数据高速缓存105的构造使得对于每个存储着一个数据项的位置,有一个对应的位置用于存储关联的优先值。所以,对于在示例性地址m来说,所存储的数据项301与存储的优先值303关联。构造具有这种功能的高速缓冲存储器的技术在本领域是公知的,这里不作更详细的描述。可参看例如John L.Hennes的“Computer Architecture,A Quantitative Approach”(1990)—本文特此引用作为参考。
在本发明的另一个方面,现在将结合图4的流程图来说明在高速缓冲存储器中置换数据的策略。在这个示例性实施例中,假定数据高速缓存105中的每一项都有一个如上所述的关联的优先值。
当试图从数据高速缓存105读取数据项时,要对所请求的数据项当前是否存储在数据高速缓存105中进行确定(判定框401)。如果找到该项(判定框401的“否”出口),则只要将该项从数据高速缓存105检索出来(步骤403),处理继续。
如果高速缓存失中发生(判定框401的“是”出口),则需要从数据高速缓存105中移出一项,以便为所请求数据项腾出空间。这是通过定位一个在数据高速缓存105内所有优先值303中具有最低优先值的数据项而完成的(步骤405)。如果有一个以上的项具有最低优先值,则可用任意技术来决定将哪一个移出数据高速缓存105:随机选择、指针的使用或是任何其它技术。然后,然后,从主存储器107检索所请求的(即“失中的”)数据项,将所检索的数据项存储到数据高速缓存105中在步骤405所确定的地址。通过移出优先值最低的数据项,本发明性高速缓存置换策略降低了发生与所移出项关联的后继高速缓存失中的可能性(即优先值之所以低是因为所移出的数据已经很长时间没有被访问了),或者是降低了发生与所移出项关联的后继高速缓存失中时导致的实质性执行速度惩罚(即因为能在等待从主存储器107检索所请求数据期间进行后继指令的无序化执行)。
上述数据高速缓存置换策略,包括为每个高速缓存项确定优先值,增加了这样的可能性,即高速缓存中的数据将是那种假若不得不从主存储器107检索它时会导致实质性执行速度惩罚的数据。就是说,如果类型1、类型2、类型3的数据的相对优先值分别为1、2、3,则类型3数据在高速缓存中的可能性更大,因为类型1和类型2更可能被置换掉。然而,上述策略产生了这样的可能性,即某数据项会无限期地呆在数据高速缓存105中,即使该数据项不会再被CPU 101使用。这是因为,只要有较低优先值的高速缓存项,这种数据项就不会在数据高速缓存105中被置换。这种高速缓存项(即即使永远不再作为源操作数需要也永远不会被置换的高速缓存项)的存在是不利的,因为它降低了高速缓存命中/失中比率。
在本发明的另一个方面对这个问题的解决方法是,让优先值进一步作为一个在数据项上次被访问后过去了多少时间的函数。这样,就可以也采用时间局域性的原理来提高高速缓存的命中率,与此同时仍然对具有较高执行速度惩罚的数据类型给予优先。在示例性实施例中,每个高速缓存项的优先值303每T秒按预定的量递减。结果,即使具有高的初始优先值的高速缓存项也将最终具有足够低的优先值,使它们在有新的高速缓存项要存储时成为置换的竞争者。
在本发明的另一个方面,对定期递减优先值的策略进行补充,方法是每当高速缓存项被访问时重新初始化或者递增优先值303。在一个实施例中,可以在每当高速缓存项被访问时按关联的惩罚值来递增优先值303。这样,优先值所考虑的因素不仅有一次高速缓存失中的代价,也有这个数据项被访问的频率。例如,假定第一个数据项在发生高速缓存失中时付出一个时钟周期的CPU停滞时间,这个数据项被访问的频率是在发生高速缓存失中时付出十个时钟周期的CPU停滞时间的第二个数据项被访问频率的十倍。在这种情况下,第一个数据项的值等于第二个数据项的值。因此,通过数据项每次被访问时重新初始化或递增优先值,置换策略就考虑了频繁访问的影响。
如果采用了这样的策略,即每次访问高速缓存项时对优先值303重新初始化,就有必要不仅跟踪每个高速缓存项的当前优先值303,还要跟踪初始优先值。这可以通过如图5中所示那样地组织数据高速缓存105’。数据高速缓存105’实质上与图3中所示的数据高速缓存105相同,唯一区别是增加了一个与每个高速缓存项关联的初始优先值域501。
现在集中讨论确定不同种类指令的相对惩罚值(即V1和V2)。假设因试图检索某第一个数据项时而发生高速缓存失中导致10个时钟周期的停滞时间,因试图检索某第二个数据项时而发生高速缓存失中,由于无序化执行的可能性而仅仅导致1个时钟周期的停滞时间。显然,如果要在这二者之间选择,则应当将第一个数据项而不是第二个数据项保留在数据高速缓存105以避免发生高代价的高速缓存失中。在这个意义上,第一个数据项比第一个数据项更“有价值”。
假设有第三个数据项,由于非常有效的无序化执行,它在发生高速缓存失中时不引起任何CPU停滞时间。这种数据项根本就无需在数据高速缓存中存储。就是说,第三个数据项如果有价值的话价值也不大。
从以上讨论中可以得出结论,数据项越有价值,在数据高速缓存105的保留时间就应当越长。按照其价值的比例来保留数据项是一个好的粗略规则。例如,发生高速缓存失中时耗费10个时钟周期的停滞时间的第一个数据项在数据高速缓存105中保留的时间,应当是发生高速缓存失中时仅耗费1个时钟周期的停滞时间的第二个数据项的10倍(假设在这段时间内哪一个数据都未被访问)。这实现起来很容易,方法是将第一个数据项的惩罚值设置为10(即V1=10),将第二个数据项的惩罚值设置为1(即V2=1),按上文所述地那样确定每个数据项的优先值303,然后以预定频率调整(即递减)每个优先值的量,期间也在数据项每次访问时重新装入该值。
以上对确定惩罚值(即V1和V2)的讨论基于的假设是可以测量或估计出不同类型指令的CPU停滞时间。在这个示例性实施例中,与不同数据类型关联的惩罚值,对初始优先值501的每次确定来说是固定的。如果考察类型1和类型2数据项,则得出代表平均CPU停滞时间的值是一件相对简单的事情,这是因为这些类型的指令(例如load、add、逻辑AND)的执行速度是容易确定的。
然而对于类型3数据项来说,这个任务就困难得多,这是因为其执行速度是一个函数,其自变量为是否进行转移、(根据对是否进行转移的预测)预提取的指令是否需要从指令高速缓存103中清除以及是否需要提取和执行新指令。本领域的一般熟练人员知道,类型3数据的平均惩罚值,可以根据关于处理器速度、对指令存储器的存取时间、高速缓存命中率以及转移预测算法的相对精确性(例如90%的准确预测)的知识来确定。
在可替代的实施例中,与不同数据类型关联的惩罚值可以动态地为各个数据项确定。对于类型1和类型2的数据项来说,动态确定的值将最可能是恒定不变的(或近乎恒定不变的),这是因为这些类型的指令(例如load、add、逻辑AND)各自的执行速度一般不会此一时彼一时地变化。(在有些体系结构中,诸如乘法和除法之类的指令的执行速度在某些程度上可能与数据相关)。
在这个可替代实施例中,对与类型3数据关联的惩罚值的动态确定的方法可以是,让任何未决的条件转移指令在失中数据到达之后执行,然后实际测量,看看延迟时间是多少(即看由于不精确的转移预测,预提取的指令是否要清除,如果是,清除了多少指令)。当然,与这种动态确定每个惩罚值关联的开销比与使用惩罚值固定评估方法关联的开销相当大。动态确定惩罚值还延迟了对初始优先值501的最后确定。在为特定系统决定应当采用哪种方法时(即静态还是动态确定惩罚值)应当考虑到这些因素。
现在将结合图6的流程图说明按照上述原则维护优先值的策略。假设某个数据项(诸如数据项301)和其对应的当前优先值303及初始优先值501存储在数据高速缓存105’中。在这个例子中,进一步假设较高的优先值指示在数据高速缓存105’中保留该数据有较高的优先。
本示例性优先值维护策略采用时间局域性原则来维护数据高速缓存105’中的高命中率。相应地,如果确定某数据项上一次被访问后已经超过T秒(判定框601的“是”出口),则与该数据项关联的优先值被递减预定的量(步骤603)。在最佳实施例中,预定的量是最小的可能量,诸如等于1的量。
如果确定该数据项近来被访问过(判定框605的“是”出口),则其关联的优先值被增加,或者设置到初始计算的优先值(步骤607)。这样做的理由是,数据项近期被访问,说明该数据项在不远的将来再次被访问的可能性较高。因此,增加(或重新初始化)优先值将有助于保证该数据项将不被移出,而是将在近期保留在数据高速缓存105’中。在最佳实施例中,步骤607包括区分读访问和写访问,使得每次读访问引起优先值被增加初始计算的优先值(例如一个在1到8左右范围的量),而每次写访问引起优先值被增加一个尽可能低的值(例如等于1的量)。
至此所作的说明所基于的前提是,数据高速缓存105是这样被控制的,即使得每次高速缓存失中仅引起一个数据项从主存储器107中检索出来并存储到数据高速缓存105。然而,更通常的是将数据高速缓存设计成每次高速缓存失中导致多个(例如8个、16个)数据项(本文称为“高速缓存项”)从主存储器107中检索出来并存储到数据高速缓存105。高速缓存项通常不仅包含“失中”数据项(即由于其不在数据高速缓存105中而引起高速缓存失中的、主存储器地址位置的内容),也包含其地址接近“失中”数据项的地址的那些数据项。这个策略的原理是根据称为“空间局域性”(或“引用局域性”)的原则来提高数据高速缓存的命中率。这个原则根据对程序通常设计方式的观察后断言,如果某存储器访问从例如位置X读数据,则后继的存储器访问将试图从邻近位置X的存储器地址位置读数据的概率就会增加。所以,如果检索的高速缓存项不仅包含来自位置X的数据项,而且包含邻近X的位置的数据项,则后继的访问数据高速缓存105的试图将导致高速缓存命中的可能性更大。
在另一个实施例中,上述的发明原理被应用到一个其数据高速缓存控制器109每当高速缓存失中发生时就检索若干高速缓存项(而不是单一的数据项)的数据高速缓存。图7中所示的是为这个目的改编的示例性数据高速缓存105”。当前优先值303和初始优先值501是按如上所述的方法确定和使用的。数据高速缓存105”与前面描述的实施例的区别在于,每对当前优先值303和初始优先值501都与某整个高速缓存项701关联,而不是唯独地只与一个数据项301关联。初始优先值501的确定根据的是高速缓存项701中无论哪一个数据项301导致了高速缓存失中的发生,由此导致高速缓存项701被从主存储器107中检索。假设高速缓存项701中的其它数据项301是类似的数据类型,因此具有类似的优先值。在本实施例的另一个方面,每当高速缓存项701中的任何数据项301被访问,就可以按上文结合图6时所述的那样对关联的当前优先值303的值进行调整(例如重新初始化或增加)。在本发明的另一个方面,如果在任何特定时间段内高速缓存项701中没有数据项301被访问过,当前优先值303可以被调整到一个指示较低优先的值。在其它所有方面,这个实施例应用的原则与上文所述的相同,因此不再加以叙述。
以上结合特定实施例说明了本发明。然而对于本领域的熟练人员来说,显然有可能以不同于上述最佳实施例的特定形式来实施本发明。最佳实施例仅仅是示例性的,不应当认为具有任何限制性。本发明的范围由后附的权利要求而不是前面的说明给定,所有在权利要求范围内的变例和等价例都视为由权利要求包含在内。
Claims (28)
1.在一个具有中央处理单元(101)、高速缓冲存储器(105)和主存储器(107)的计算机系统中向高速缓冲存储器(105)存储数据项(301)的方法,包含的步骤有:
响应第一指令的至少部分执行而启动(201)从主存储器(107)的数据项(301)的检索;
确定(203)要与数据项(301)关联的优先值(303),其中优先值(303)是对如果在高速缓冲存储器(105)中没有存储该数据项(301)的情况下试图从高速缓冲存储器(105)检索该数据项(301)时将发生多少中央处理单元停滞时间的评估值;
从高速缓冲存储器(105)移出一项数据,以便为所检索的数据项(301)腾出空间;以及
完成数据项(301)的检索并将数据项(301)和优先值(303)二者存储到高速缓冲存储器(105)中。
2.根据权利要求1所述的方法,其特征在于,确定(203)优先值(303)的步骤包含确定在启动数据项(301)的检索和完成数据项(301)的检索期间已经有多少其它指令被提取并存储在缓冲存储器(103)中,其中其它指令的执行依赖于完成数据项(301)的检索。
3.根据权利要求2所述的方法,其特征在于,确定优先值(303)的步骤进一步包含根据任一其它指令是否是条件转移指令将优先值(303)调整一个数量。
4.根据权利要求2所述的方法,其特征在于,确定优先值(303)的步骤进一步包含根据任一其它指令是否是非转移指令将优先值(303)调整一个数量。
5.根据权利要求1所述的方法,其特征在于,确定(203)优先值(303)的步骤在数据项的检索已经完成之后发生。
6.一种在具有中央处理单元(101)、高速缓冲存储器(105)和主存储器(107)的计算机系统中使用的高速缓存数据置换方法,其特征在于,其中高速缓冲存储器(105)中存储多个数据项(301),该高速缓存数据置换方法包含的步骤有:
用优先值(303)与每个存储的数据项(301)关联,其中对于每个数据项(301)来说,优先值(303)是对如果在高速缓冲存储器(105)中没有存储该数据项(301)的情况下试图从高速缓冲存储器(105)检索该数据项(301)时将发生多少中央处理单元停滞时间的评估值;
分析各优先值(303)以确定最低优先值(405);
选择数据项中具有最低优先值(405)的一个数据项(301);以及
用置换数据项来置换所选择的数据项(301)。
7.根据权利要求6所述的高速缓存数据置换方法,其特征在于,用优先值与每个所存储的数据项(301)关联的步骤包含的步骤有,对于每个数据项(301),确定在由启动和完成从主存储器(107)的数据项(301)的检索之间的时间所定义的一个时间间隔期间内已经有多少其它指令被提取并存储在缓冲存储器(103)中,其中其它指令的执行依赖于完成数据项(301)的检索。
8.根据权利要求7所述的高速缓存数据置换方法,其特征在于,对于每个数据项(301),确定在由启动和完成从主存储器(107)的数据项(301)的检索之间的所述时间间隔期间内已经有多少其它指令被提取并存储在缓冲存储器中的步骤进一步包含根据任一其它指令是否是条件转移指令将优先值(303)调整一个数量。
9.根据权利要求7所述的高速缓存数据置换方法,其特征在于,对于每个数据项(301),确定在由启动和完成从主存储器(107)的数据项(301)的检索之间的所述时间间隔期间内已经有多少其它指令被提取并存储在缓冲存储器(103)中的步骤进一步包含根据任一其它指令是否是非转移指令将优先值(303)调整一个数量。
10.根据权利要求6所述的高速缓存数据置换方法,其特征在于,进一步包含下述步骤:
以一个导致较低优先值(603)的量来定期调整(601)每个优先值(303)。
11.根据权利要求6所述的高速缓存数据置换方法,其特征在于,进一步包含下述步骤:
对于每个优先值(303),根据对关联数据项(301)的读访问(605)以第一预定量(607)来调整该优先值(303),其中调整导致优先值增加。
12.根据权利要求11所述的高速缓存数据置换方法,其特征在于,进一步包含下述步骤:
对于每个优先值(303),根据对关联数据项的写访问(605)以第二预定量(607)来调整该优先值(303),其中调整导致优先值增加。
13.根据权利要求12所述的高速缓存数据置换方法,其特征在于,以第一预定量所作的调整导致比以第二预定量所作的调整有更高的优先值。
14.根据权利要求6所述的高速缓存数据置换方法,其特征在于,进一步包含下述步骤:
对于每个优先值(303),响应对关联数据项的读访问将优先值(303)设置为初始优先值(501)。
15.一种在具有中央处理单元(101)、高速缓冲存储器(105)和主存储器(107)的计算机系统中用于向高速缓冲存储器(105)存储数据项(301)的装置,包含:
响应第一指令的至少部分执行而启动(201)从主存储器(107)的数据项(301)的检索的装置;
确定(203)要与数据项(301)关联的优先值(303)的装置,其特征在于,优先值(303)是对如果在高速缓冲存储器(105)中没有存储该数据项(301)的情况下试图从高速缓冲存储器(105)检索该数据项(301)时将发生多少中央处理单元停滞时间的评估值;
从高速缓冲存储器(105)移出一项数据以便为所检索的数据项(301)腾出空间的装置;以及
完成数据项(301)的检索并将数据项(301)和优先值(303)二者存储(205)到高速缓冲存储器(105)中的装置。
16.根据权利要求15所述的装置,其特征在于,确定(203)优先值(303)的装置包含确定在启动数据项(301)的检索和完成数据项(301)的检索期间已经有多少其它指令被提取并存储在缓冲存储器(103)中的装置,其特征在于,其它指令的执行依赖于完成数据项(301)的检索。
17.根据权利要求16所述的装置,其特征在于,确定(203)优先值(303)的装置进一步包含根据任一其它指令是否是条件转移指令将优先值(303)调整一个数量的装置。
18.根据权利要求16所述的装置,其特征在于,确定(203)优先值(303)的装置进一步包含根据任一其它指令是否是非转移指令将优先值(303)调整一个数量的装置。
19.根据权利要求15所述的装置,其特征在于,确定(203)优先值(303)的装置在数据项(301)的检索已经完成之后进行确定。
20.一种在具有中央处理单元(101)、高速缓冲存储器(105)和主存储器(107)的计算机系统中使用的高速缓存数据置换装置,其中高速缓冲存储器(105)中存储多个数据项(301),该高速缓存数据置换装置包含:
用优先值(303)与每个存储的数据项(301)关联的装置,其特征在于,对于每个数据项(301)来说,优先值(303)是对如果在高速缓冲存储器(105)中没有存储该数据项(301)的情况下试图从高速缓冲存储器(105)检索该数据项时将发生多少中央处理单元停滞时间的评估值
分析各优先值(303)以确定最低优先值(405)的装置;
选择数据项中具有最低优先值(405)的一个数据项(301)的装置;以及
用置换数据项来置换所选择的数据项(301)的装置。
21.根据权利要求20所述的高速缓存数据置换装置,其特征在于,用优先值(303)与每个存储的数据项(301)关联的装置包含对于每个数据项(301)确定在由启动和完成从主存储器(107)的数据项(301)的检索之间的时间所定义的一个时间间隔期间内已经有多少其它指令被提取并存储在缓冲存储器(103)中的装置,其特征在于,其它指令的执行依赖于完成数据项(301)的检索。
22.根据权利要求21所述的高速缓存数据置换装置,其特征在于,对于每个数据项(301)确定在由启动和完成从主存储器(107)的数据项(301)的检索之间的所述时间间隔期间内已经有多少其它指令被提取并存储在缓冲存储器(103)中的装置进一步包含根据任一其它指令是否是条件转移指令将优先值(303)调整一个数量的装置。
23.根据权利要求21所述的高速缓存数据置换装置,其特征在于,对于每个数据项(301)确定在由启动和完成从主存储器(107)的数据项(301)的检索之间的所述时间间隔期间内已经有多少其它指令被提取并存储在缓冲存储器(103)中的装置进一步包含根据任一其它指令是否是非转移指令将优先值(303)调整一个数量的装置。
24.根据权利要求20所述的高速缓存数据置换装置,其特征在于,进一步包含:
以一个导致较低优先值(603)的预定量来定期调整(601)每个优先值(303)的装置。
25.根据权利要求20所述的高速缓存数据置换装置,其特征在于,进一步包含:
响应对关联数据项(301)的读访问用第一预定量(607)来调整关联数据项(301)的优先值(303)的装置,其特征在于,调整导致优先值增加。
26.根据权利要求25所述的高速缓存数据置换装置,其特征在于,进一步包含:
响应对关联数据项的写访问(605)用第二预定量(607)来调整关联数据项(301)的优先值(303)的装置,其特征在于,调整导致优先值增加。
27.根据权利要求26所述的高速缓存数据置换装置,其特征在于,以第一预定量所作的调整导致比以第二预定量所作的调整有更高的优先值。
28.根据权利要求20所述的高速缓存数据置换装置,其特征在于,进一步包含:
响应对关联数据项的读访问将关联数据项(301)的优先值(303)设置为初始优先值(501)的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/818340 | 1997-03-14 | ||
US08/818,340 US5943687A (en) | 1997-03-14 | 1997-03-14 | Penalty-based cache storage and replacement techniques |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1255986A CN1255986A (zh) | 2000-06-07 |
CN1149486C true CN1149486C (zh) | 2004-05-12 |
Family
ID=25225309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB988051044A Expired - Fee Related CN1149486C (zh) | 1997-03-14 | 1998-03-13 | 基于惩罚的高速缓冲存储器和置换技术 |
Country Status (9)
Country | Link |
---|---|
US (1) | US5943687A (zh) |
EP (1) | EP0966710B1 (zh) |
JP (1) | JP2001515624A (zh) |
CN (1) | CN1149486C (zh) |
AU (1) | AU6430098A (zh) |
BR (1) | BR9808245A (zh) |
CA (1) | CA2283323A1 (zh) |
DE (1) | DE69816044T2 (zh) |
WO (1) | WO1998041923A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383672A (zh) * | 2012-05-01 | 2013-11-06 | 辉达公司 | 高速缓存控制以减少事务回滚 |
CN103389882A (zh) * | 2012-05-07 | 2013-11-13 | 国际商业机器公司 | 在计算环境中提高散列索引密钥查找高速缓存性能 |
US9898419B2 (en) | 2012-05-07 | 2018-02-20 | International Business Machines Corporation | Enhancing data caching performance |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266742B1 (en) * | 1997-10-27 | 2001-07-24 | International Business Machines Corporation | Algorithm for cache replacement |
US6792600B1 (en) * | 1998-05-14 | 2004-09-14 | International Business Machines Corporation | Method and apparatus for just in time compilation of instructions |
US6219827B1 (en) * | 1998-03-12 | 2001-04-17 | Hewlett-Packard Company | Trace ranking in a dynamic translation system |
US6385699B1 (en) * | 1998-04-10 | 2002-05-07 | International Business Machines Corporation | Managing an object store based on object replacement penalties and reference probabilities |
US6539382B1 (en) * | 1999-04-29 | 2003-03-25 | International Business Machines Corporation | Intelligent pre-caching algorithm for a directory server based on user data access history |
US6378044B1 (en) * | 1999-09-22 | 2002-04-23 | Vlsi Technology, Inc. | Method and system for cache replacement among configurable cache sets |
US6601143B1 (en) * | 1999-09-25 | 2003-07-29 | International Business Machines Corporation | Self-adapting cache management method and system |
US20050091511A1 (en) * | 2000-05-25 | 2005-04-28 | Itay Nave | Useability features in on-line delivery of applications |
US6598125B2 (en) * | 2000-05-25 | 2003-07-22 | Exent Technologies, Ltd | Method for caching information between work sessions |
US6801883B1 (en) | 2000-06-02 | 2004-10-05 | Unisys Corporation | Code type control of caching parameters |
US6826599B1 (en) * | 2000-06-15 | 2004-11-30 | Cisco Technology, Inc. | Method and apparatus for optimizing memory use in network caching |
WO2002003207A1 (en) * | 2000-06-30 | 2002-01-10 | Koninklijke Philips Electronics N.V. | Data processing apparatus with a cache memory and method of using such an apparatus |
US6681298B1 (en) * | 2000-07-12 | 2004-01-20 | Powertv, Inc. | Hypertext markup language cache system and method |
US6748492B1 (en) * | 2000-08-07 | 2004-06-08 | Broadcom Corporation | Deterministic setting of replacement policy in a cache through way selection |
US7058771B2 (en) * | 2001-11-21 | 2006-06-06 | Reno | System and method for managing memory in a surveillance system |
US8190530B2 (en) | 2002-01-30 | 2012-05-29 | Visa U.S.A. Inc. | Method and system for providing multiple services via a point-of-sale portal architecture |
US6769785B1 (en) * | 2002-03-14 | 2004-08-03 | Acuity Brands, Inc. | Edge connectable lighting fixture assembly |
TWI303524B (en) * | 2002-05-10 | 2008-11-21 | Interdigital Tech Corp | System and method for prioritization of retransmission of protocol data units to assist radio-link-control retransmission |
US7035978B2 (en) * | 2003-03-11 | 2006-04-25 | International Business Machines Corporation | Method, system, and program for policies for improving throughput in remote mirroring systems |
US6996688B2 (en) * | 2003-03-11 | 2006-02-07 | International Business Machines Corporation | Method, system, and program for improved throughput in remote mirroring systems |
US7073027B2 (en) * | 2003-07-11 | 2006-07-04 | International Business Machines Corporation | Methods, systems and computer program products for controlling caching of distributed data |
US7085895B2 (en) * | 2003-09-05 | 2006-08-01 | International Business Machines Corporation | Apparatus, system, and method flushing data from a cache to secondary storage |
US7177984B1 (en) * | 2004-04-16 | 2007-02-13 | Apple Computer, Inc. | Cache management using historical access information |
JP2006065805A (ja) * | 2004-08-30 | 2006-03-09 | Canon Inc | 画像処理装置及び制御方法 |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
US20060090034A1 (en) * | 2004-10-22 | 2006-04-27 | Fujitsu Limited | System and method for providing a way memoization in a processing environment |
US7376792B2 (en) * | 2005-08-17 | 2008-05-20 | International Business Machines Corporation | Variable cache data retention system |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US7461210B1 (en) * | 2006-04-14 | 2008-12-02 | Tilera Corporation | Managing set associative cache memory according to entry type |
US7899994B2 (en) * | 2006-08-14 | 2011-03-01 | Intel Corporation | Providing quality of service (QoS) for cache architectures using priority information |
US8065505B2 (en) * | 2007-08-16 | 2011-11-22 | Texas Instruments Incorporated | Stall-free pipelined cache for statically scheduled and dispatched execution |
CN100593146C (zh) * | 2007-11-09 | 2010-03-03 | 上海可鲁系统软件有限公司 | 一种防止工业自动化系统雪崩的方法 |
US20090327577A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Hybrid storage |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US8832418B2 (en) * | 2009-08-28 | 2014-09-09 | Via Technologies, Inc. | Efficient branch target address cache entry replacement |
US8990506B2 (en) * | 2009-12-16 | 2015-03-24 | Intel Corporation | Replacing cache lines in a cache memory based at least in part on cache coherency state information |
AU2010201718B2 (en) * | 2010-04-29 | 2012-08-23 | Canon Kabushiki Kaisha | Method, system and apparatus for identifying a cache line |
US9262327B2 (en) * | 2012-06-29 | 2016-02-16 | Intel Corporation | Signature based hit-predicting cache |
US9372811B2 (en) * | 2012-12-13 | 2016-06-21 | Arm Limited | Retention priority based cache replacement policy |
JP6311370B2 (ja) * | 2014-03-12 | 2018-04-18 | 日本電気株式会社 | バッファキャッシュ管理装置、バッファキャッシュ管理方法、及び、バッファキャッシュ管理プログラム |
CN107851068A (zh) * | 2015-07-30 | 2018-03-27 | 华为技术有限公司 | 一种高速缓冲存储器中存储数据的替换方法和替换装置 |
CN109284304A (zh) * | 2018-08-13 | 2019-01-29 | 中国平安人寿保险股份有限公司 | 一种基于缓存技术的电子出单方法及终端设备 |
CN112905240A (zh) | 2019-03-15 | 2021-06-04 | 英特尔公司 | 用于脉动阵列上的块稀疏操作的架构 |
WO2020190796A1 (en) * | 2019-03-15 | 2020-09-24 | Intel Corporation | Systems and methods for cache optimization |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
US20220114096A1 (en) | 2019-03-15 | 2022-04-14 | Intel Corporation | Multi-tile Memory Management for Detecting Cross Tile Access Providing Multi-Tile Inference Scaling and Providing Page Migration |
US11861761B2 (en) | 2019-11-15 | 2024-01-02 | Intel Corporation | Graphics processing unit processing and caching improvements |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487162A (en) * | 1992-02-25 | 1996-01-23 | Matsushita Electric Industrial Co., Ltd. | Cache lock information feeding system using an address translator |
JPH06348595A (ja) * | 1993-06-07 | 1994-12-22 | Hitachi Ltd | キャッシュ装置 |
JP3490742B2 (ja) * | 1993-09-08 | 2004-01-26 | 松下電器産業株式会社 | メモリ管理装置 |
US5671444A (en) * | 1994-02-28 | 1997-09-23 | Intel Corporaiton | Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers |
US5649137A (en) * | 1994-10-20 | 1997-07-15 | Advanced Micro Devices, Inc. | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
US5774685A (en) * | 1995-04-21 | 1998-06-30 | International Business Machines Corporation | Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions |
US5696932A (en) * | 1995-05-16 | 1997-12-09 | International Business Machines Corporation | Method and system for estimating minumun requirements on a cache in a computer based storage system |
-
1997
- 1997-03-14 US US08/818,340 patent/US5943687A/en not_active Expired - Lifetime
-
1998
- 1998-03-13 JP JP54042098A patent/JP2001515624A/ja active Pending
- 1998-03-13 BR BR9808245-0A patent/BR9808245A/pt not_active IP Right Cessation
- 1998-03-13 CA CA002283323A patent/CA2283323A1/en not_active Abandoned
- 1998-03-13 AU AU64300/98A patent/AU6430098A/en not_active Abandoned
- 1998-03-13 DE DE69816044T patent/DE69816044T2/de not_active Expired - Lifetime
- 1998-03-13 EP EP98909943A patent/EP0966710B1/en not_active Expired - Lifetime
- 1998-03-13 WO PCT/SE1998/000454 patent/WO1998041923A1/en active IP Right Grant
- 1998-03-13 CN CNB988051044A patent/CN1149486C/zh not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383672A (zh) * | 2012-05-01 | 2013-11-06 | 辉达公司 | 高速缓存控制以减少事务回滚 |
CN103383672B (zh) * | 2012-05-01 | 2016-05-11 | 辉达公司 | 高速缓存控制以减少事务回滚 |
CN103389882A (zh) * | 2012-05-07 | 2013-11-13 | 国际商业机器公司 | 在计算环境中提高散列索引密钥查找高速缓存性能 |
US9495294B2 (en) | 2012-05-07 | 2016-11-15 | International Business Machines Corporation | Enhancing data processing performance by cache management of fingerprint index |
CN103389882B (zh) * | 2012-05-07 | 2017-04-26 | 国际商业机器公司 | 提高散列索引密钥查找高速缓存性能的方法和系统 |
US9898419B2 (en) | 2012-05-07 | 2018-02-20 | International Business Machines Corporation | Enhancing data caching performance |
US10268599B2 (en) | 2012-05-07 | 2019-04-23 | International Business Machines Corporation | Enhancing data caching performance |
Also Published As
Publication number | Publication date |
---|---|
WO1998041923A1 (en) | 1998-09-24 |
DE69816044T2 (de) | 2004-03-04 |
DE69816044D1 (de) | 2003-08-07 |
AU6430098A (en) | 1998-10-12 |
EP0966710B1 (en) | 2003-07-02 |
EP0966710A1 (en) | 1999-12-29 |
BR9808245A (pt) | 2000-05-16 |
JP2001515624A (ja) | 2001-09-18 |
US5943687A (en) | 1999-08-24 |
CN1255986A (zh) | 2000-06-07 |
CA2283323A1 (en) | 1998-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1149486C (zh) | 基于惩罚的高速缓冲存储器和置换技术 | |
US7506105B2 (en) | Prefetching using hashed program counter | |
US7502890B2 (en) | Method and apparatus for dynamic priority-based cache replacement | |
US7467377B2 (en) | Methods and apparatus for compiler managed first cache bypassing | |
US6487639B1 (en) | Data cache miss lookaside buffer and method thereof | |
US7082520B2 (en) | Branch prediction utilizing both a branch target buffer and a multiple target table | |
US8413127B2 (en) | Fine-grained software-directed data prefetching using integrated high-level and low-level code analysis optimizations | |
US20070088915A1 (en) | Method and apparatus for software-assisted data cache and prefetch control | |
US20060248280A1 (en) | Prefetch address generation implementing multiple confidence levels | |
CN1300006A (zh) | 利用从分支预测得出的未来分支路径信息进行预取 | |
CN1790256A (zh) | 用于微处理器的分支前瞻预取 | |
US6662273B1 (en) | Least critical used replacement with critical cache | |
US20050144602A1 (en) | Methods and apparatus to compile programs to use speculative parallel threads | |
WO2006118667A2 (en) | Prefetching across a page boundary | |
US11755370B2 (en) | System and method of scheduling and computing resource allocation optimization of machine learning flows | |
CN1196997C (zh) | 不按序执行指令的装置和检测不按序指令的方法 | |
Das et al. | Reuse distance-based probabilistic cache replacement | |
Jegou et al. | Speculative prefetching | |
US6922753B2 (en) | Cache prefetching | |
US5721893A (en) | Exploiting untagged branch prediction cache by relocating branches | |
US6907509B2 (en) | Automatic program restructuring to reduce average cache miss penalty | |
US6651245B1 (en) | System and method for insertion of prefetch instructions by a compiler | |
US7461211B2 (en) | System, apparatus and method for generating nonsequential predictions to access a memory | |
US7308683B2 (en) | Ordering of high use program code segments using simulated annealing | |
US6760816B1 (en) | Critical loads guided data prefetching |
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: 20040512 Termination date: 20150313 |
|
EXPY | Termination of patent right or utility model |