CN101826056A - 数据处理设备和方法 - Google Patents
数据处理设备和方法 Download PDFInfo
- Publication number
- CN101826056A CN101826056A CN201010126764.7A CN201010126764A CN101826056A CN 101826056 A CN101826056 A CN 101826056A CN 201010126764 A CN201010126764 A CN 201010126764A CN 101826056 A CN101826056 A CN 101826056A
- Authority
- CN
- China
- Prior art keywords
- cache
- preloaded
- cache lines
- data
- lines
- 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
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/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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了一种数据处理设备,该数据处理设备包括可操作地执行指令序列的处理器和具有多个缓存行的超高速缓存,所述超高速缓存可操作地存储由所述处理器在执行所述指令序列时访问的数据值。还提供了超高速缓存控制器,所述超高速缓存控制器包括响应于在该处理器处接收的流预载入指令,可操作地将数据值从主存储器存储到该超高速缓存的一个或多个缓存行内的预载入电路。所述超高速缓存控制器还包括响应于该流预载入指令,可操作地标识该超高速缓存中的一个或多个缓存行用于优先再使用的识别电路。所述超高速缓存控制器还包括可操作地实施缓存维持操作的超高速缓存维持电路,在该缓存维持操作期间,考虑到由所述标识电路为所述超高速缓存的缓存行生成的任何优先用于再使用标识,执行用于再使用的一个或多个缓存行的选择。这样,可以使用单个流预载入指令既触发到所述超高速缓存内的数据值的一个或多个缓存行的预载入,并且也标记所述超高速缓存的另外的一个或多个缓存行用于优先再使用。
Description
技术领域
本发明涉及用于控制超高速缓存(cache memory)的数据处理设备和方法,更具体地,本发明的实施例涉及用于将数据预载入超高速缓存的缓存行(cache line)以及控制用于再使用所述超高速缓存的缓存行的缓存维持操作的设备和方法。
背景技术
为了执行数据处理操作,处理器需要访问存储在存储器内的数据值。然而数据处理设备的主存储器相对慢些,而且因此通过处理器直接访问主存储器是不现实的。为了能够更快地访问数据值,通常给处理器提供超高速缓存,该超高速缓存镜像主存储器的部分内容并且能够被处理器非常快速地访问。当需要时,新数据值被存储到超高速缓存中,而且一旦这些数据值出现在超高速缓存中,将来就能更迅速地访问它们,直到它们被盖写。超高速缓存的操作依赖于这样一个事实:统计地,和访问新数据相比,处理器更可能再次使用最近的数据。
超高速缓存包括多个缓存行(也被称为排(rows)),每一个缓存行可操作地存储由处理器访问的数据值。以缓存行为单位,将数据值从主存储器载入到超高速缓存内。由于和主存储器相比,超高速缓存相对小些,将理解到当新的数据值将被载入到超高速缓存中时,需要频繁地再次使用存储行。如果新数据值被载入到超高速缓存器内,有几个能够被应用以选择用于再次使用的缓存行的方案,例如随机替换策略或最近最少使用替换策略。
某些类型的处理器操作可能干扰超高速缓存的效果。例如,在流数据(其中当数据将被流化时,数据被作为长流处理并且对稳定地前进的流中的当前位置,几乎所有的数据访问是本地的)的情况下,超高速缓存能够被数据值的流快速地盖写。当数据值的流仅被使用一次时(其通常将是具有流数据的情况)这是不利的,因为可能以后已被再次使用的非流数据将由被再次使用的可能性较小的已流化的数据值盖写。可以包括这类数据流的操作的例子是编码译码器、通信协议和块存储操作。
一些处理器的架构(例如IA-32/SSE,日立SR8000,3DNow!)已经使用回避用于流化的数据的超高速缓存的修改的载入和存储指令来处理这个问题。一些架构(例如IA-32/SSE)具有多级超高速缓存结构并提供指定数据应当被预载入哪一级超高速缓存的预载入指令。
超高速缓存管理方法由申请人在先前的PCT申请WO-A-2007/096572中提出,在该方法中,数据流量被监测并且超高速缓存内的数据被标记,以便基于所述流量监测从所述超高速缓存优先逐出。
在US-B-6,766,419中描述了超高速缓存逐出优化技术,在其中,程序指令允许软件设计者提供软件存储单元分配提示,在进一步的程序执行期间,该软件存储单元分配提示标记(identify)不可能被使用的数据。
在“Memory Access Pattern Analysis and Stream Cache Design forMultimedia Applications”的文章中描述了流数据的缓存方案,为了防止标准数据超高速缓存被盖写,该方案为流数据提供将要利用的分开的超高速缓存。
发明内容
根据本发明的一个方面,提供一种数据处理设备,包括:
可操作地执行指令序列的处理器;
具有多个缓存行的超高速缓存,该超高速缓存可操作地存储用于被该处理器在执行该指令序列时访问的数据值;
超高速缓存控制器,包括
预载入电路,响应于在所述处理器处接收的流预载入指令,所述预载入电路可操作地将数据值从主存储器存储到所述超高速缓存的一个或多个缓存行内;
标识电路,响应于所述流预载入指令,所述标识电路可操作地为优先再使用而标识所述超高速缓存中的一个或多个缓存行;以及
超高速缓存维持电路,所述超高速缓存维持电路可操作地实施超高速缓存维持操作,在所述超高速缓存维持操作期间,考虑到由所述标识电路为所述超高速缓存的缓存行所生成的任何优先用于再使用的标识,执行用于再使用的一个或多个缓存行的选择。
这样,单个流预载入指令可以被用来既触发到超高速缓存内的数据值的一个或多个缓存行的预载入,并且也用来标记超高速缓存中的一个或多个缓存行以便优先再使用。然后,当新数据值将被预载入到超高速缓存内时,为优先再使用所标记的缓存行将被考虑作为优先再使用的候选行,以便它们将被优先盖写在可能包含将来可能被需要的数据值的缓存行处。有效地,流预载入指令允许程序员将数据标记为暂时的(ephemeral)——即,将被短暂地(briefly)缓存然后被丢弃。例如,在一个实施例中,流预载入指令可以起缓存提示的作用,该提示促使CPU预载入下一个缓存行并将先前的缓存行标记为可逐出的(evictable)。在另一个实施例中,流预载入指令可以起缓存提示的作用,该提示促使CPU既预载入又将下一个缓存行标记为可逐出的。
优选地,由于CPU可能还没有完成对当前缓存行内数据的访问,并且因此在当前缓存行内所存储的数据值可能仍然被需要的事实,先前的缓存行被标记为优先用于再使用,或者可逐出,而非当前缓存行。
缓存维持操作例如可以是行填充(line fill)操作,由此主存储器内的数据值的行被复制到所述超高速缓存的行内。
这个指令也能被用来与流逐出指令相结合,所述流逐出指令是促使CPU将先前的缓存行标记为可逐出的缓存提示(无需同时触发预载入操作)。因此流逐出操作在流处理的结束处将是有用的,例如当流内没有另外的数据值需要被预载入用于处理时。
流预载入指令在数据超高速缓存内保留用于将被再使用的数据的空间,其相应地可以提升性能并降低功耗,尽管以要求将新指令插入到流代码、和超高速缓存复杂性的增加为代价。
可以如下建立典型的流应用:
Loop:
Read data from address A
Process data
Write data to address B
Increment A and B
While more data Go to Loop
将理解到,在几千次重复之后,这可能盖写整个数据超高速缓存。
然而,如下增加新指令:
Loop:
Preload Streaming Data(address A)
Read data from address A
Process data
Pre-evict Streaming Data(address B)
Write data to address B
Increment A and B
While more data Go to Loop
这个修改的代码规定仅盖写数据超高速缓存的一部分,而非超高速缓存的每一路。
流预载入指令可以指定与超高速缓存内目前正被处理器处理的当前缓存行相对应的存储器地址。在这种情况下,所述预载入电路可操作地将主存储器内跟随当前缓存行内的数据值的数据值存储到超高速缓存的一个或多个缓存行内,并且所述标识电路可操作地标识超高速缓存中包含来自主存储器且在当前缓存行内的数据值之前的数据值的一个或多个缓存行,以便优先再使用。这样,流预载入指令仅需要指定单个存储器地址,然后基于该单个存储器地址,所述超高速缓存控制器能够参考地应用预载入操作和为了优先再使用的标记操作。与在其中提供单独的指令和各个目标地址以预载入缓存行并标记另外的缓存行以便优先逐出的安排相比,这提供了简单性。常规的预载入指令指定将被预载入的缓存行的地址,而本发明的实施例指定数据流内当前位置的存储器地址,并且根据那个当前位置,参考地生成用于预载入以及标记以便优先再使用的目标地址。
可替代地,流预载入指令可以指向处理器寄存器,该处理器寄存器存储了指向目前正被处理的数据值的存储器地址的指针;然后在处理器寄存器内所存储的存储器地址能被用来指定参考点,以便参考地确定将被预载入以及为优先再使用而被标记的缓存行。
流预载入指令可以指定超高速缓存内可用的流数据的量。在这种情况下,所述预载入电路可操作地将根据流预载入指令中所指定的流数据的量所确定的适量数据,从主存储器预载入超高速缓存内。例如,所述流预载入指令可以指定将被从主存储器预载入超高速缓存内的数据值的多个缓存行。相似地在这种情况下,所述标识电路可以为了优先再使用,可操作地识别多个根据流预载入指令中所指定的流数据的量所确定的缓存行。
换言之,通过在流预载入指令中请求期望数量的数据,能在被预载入并被标记以便再使用的数据的量方面提供灵活性,例如根据存储器等待时间、或者存储器系统支持的未解决的存储器请求的数目。
对在超高速缓存中标记数据值以便优先再使用而言,有多种可能的方法。例如,典型地,超高速缓存的缓存行将具有与其相关的有效位,该有效位被用来指示缓存行是否包含有效数据。如果那个缓存行被优先用于再使用,则所述标识电路可以可操作地设置缓存行的有效位以指示所述缓存行不包含有效数据。然后,所述超高速缓存维持电路将可操作地优先选择具有被设置成指示那个缓存行不包含有效数据的有效位的缓存行,以便再使用。这个安排是有利的,因为它使用了超高速缓存内已有的标志从而无需增加超高速缓存的缓存行的任何另外的标志。
在替代的安排中,超高速缓存的缓存行中的每一个具有与其相关联的优先用于再使用的字段(附加于所述有效位),根据由标识电路所产生的优先用于再使用标识来设定该字段。在这种情况下,所述超高速缓存维持电路可操作地优先选择具有被设置成指示那个缓存行优先用于再使用的优先用于再使用字段的缓存行,以便再使用。提供专用优先用于再使用标志(而不是使用所述有效位)的优点是:数据既能够被保持有效(并且从而在超高速缓存内可访问)同时又被标记为优先用于再使用。
超高速缓存可以是n-路组相联超高速缓存。在这种情况下,所述超高速缓存维持电路考虑到由所述标识电路为超高速缓存的n个相应的缓存行中的一个或多个中的任何一个而生成的任何优先用于再使用标识,可操作地在各个n路的n个相应的缓存行之间选择,以便再使用。
可以提供流数据查找表,响应于流预载入指令,流数据查找表可操作地存储先前已经缓存的数据值的行和数据值的这些行被缓存到n路中的哪一个内的指示之间的关联。在这种情况下,所述预载入电路可操作地在流查找表内增加条目,以指示预载入的数据值已经被存储到超高速缓存的哪一路。另外,响应于流预载入指令,所述标识电路可操作地使用所述流数据查找表来定位超高速缓存内数据值的缓存行,并标识所定位的缓存行,以便优先再使用。这个安排简化了标记缓存行以便优先再使用的过程,因为它不需要为了合适的条目而搜索超高速缓存中的每一路。
在替代安排中,未提供查找表,为了与缓存行内所存储的一个或多个数据值的地址相对应的缓存行,所述标识电路通过搜索超高速缓存的每一路,可操作地定位在超高速缓存内的数据值的缓存行。
还可以提供不同形式的流数据查找表,其存储先前缓存的数据值的行与该数据的行被缓存到n路中的哪一个内的指示之间的关联。在这种情况下,所述标识电路(而非所述预载入电路)可操作地在流数据查找表内增加条目,以指示出预载入的数据值已经被存储到超高速缓存的哪一路。然后,所述超高速缓存维持电路在进行缓存维持操作期间,考虑到流数据查找表内任何指示超高速缓存的n个相应的缓存行中的一个或多个中的任何一个优先再使用的条目,可操作地在各个n路的n个相应的缓存行之间选择,以便再使用。换句话说,这种形式的流数据查找表被用来提供优先用于再使用标识,而非向识别电路提供捷径以定位超高速缓存中最近使用过的路。
使用这个技术的一个潜在问题是流数据查找表中的缓存行,在处理器完成它之前,可能被新数据盖写。为了降低其发生的可能性,为了再使用,在所述各个n路的n个相应的缓存行之间选择中,所述超高速缓存维持电路考虑到所述流数据查找表内最近最少增加的条目。这样,最近最多增加的条目(最可能还在使用的那些)将不被考虑为优先用于再使用,由此降低了目前正被处理的数据值被盖写的可能性。
预载入电路可以可操作地将与包含地址Padd=Acurr+x×Cs的主存储器的一部分相对应的数据值存储到超高速缓存内,并且所述标识电路可以为了优先使用,可操作地标识超高速缓存中包含与存储器中包含地址Radd=Acurr-y×Cs的部分相对应的数据值的一个或多个缓存行。
其中Padd表示在预载入操作中,主存储器中将被预载入该超高速缓存内的部分的存储器地址,Radd表示在再使用标识操作中,与将被标识以便再使用的存储行相对应的存储器地址,Acurr表示在流预载入指令中所指定的存储器地址,Cs表示超高速缓存内每一个缓存行的长度,并且x和y是整数。
值x和/或y可以是预先确定的常数,并且在多个缓存行将被存储和/或标记以便优先再使用的地方,其可以具有多个值。例如,值X可以是1和2,指示紧随当前正被处理的缓存行的两个缓存行将被预载入。相似地,值y可以是1和2,指示紧前于当前正被处理的缓存行的两个缓存行将被标记,以便再使用。
可替代地,值x和/或y自身可以在流预载入指令中被指定,给编程者确定多少、以及哪个流数据将被预载入到超高速缓存中或者被标记以便可能从超高速缓存中逐出的能力。
在一些架构中,提供超高速缓存的层级,其中较小、较快的超高速缓存被首先访问,并且如果数据不在较小的超高速缓存内,访问较大、较慢的超高速缓存(但仍然比主存储器快)。在本发明实施例的上下文中,将理解到在主存储器和超高速缓存之间提供另外的超高速缓存,所述另外的超高速缓存具有大体上与所述超高速缓存相同的结构。特别地,所述另外的超高速缓存包括多个缓存行,所述多个缓存行可操作地存储用于传输到所述超高速缓存并由所述处理器在执行所述指令序列时访问的数据值。在这种情况下,所述流预载入指令可以指定预载入操作和逐出识别操作将关于该超高速缓存和该另外的超高速缓存中的哪一个而被执行。
在这种情况下,其中流预载入指令指定预载入操作和再使用标识操作将关于超高速缓存进行,所述超高速缓存控制器可以可操作地将数据值预载入超高速缓存的缓存行内,并且标记超高速缓存中的一个或多个缓存行以便优先使用。同样,在流预载入指令指定预载入操作和所述再使用标识操作将关于另外的超高速缓存执行的情况下,所述超高速缓存控制器可以可操作地将数据值预载入另外的超高速缓存的缓存行内,并且标记另外的超高速缓存中的一个或多个缓存行以便优先使用。
将理解到单个超高速缓存控制器可以被用来控制超高速缓存和另外的超高速缓存,或者替代地,可以向所述超高速缓存中的每一个提供其自身专用的缓存控制电路。
通过以无特权模式在数据处理系统上运行的应用软件,所述流预载入指令是可执行的。典型地,处理器将既具有特权模式又具有无特权模式。许多缓存维持程序指令可能通常仅仅在特权模式中被执行。流预载入指令的优点是:它可以被应用程序在无特权模式中使用。
根据本发明的另一方面,提供一种数据处理设备,包括:
用于执行指令序列的处理装置;
具有多个缓存行的超高速缓存装置,该多个缓存行用于存储由所述处理装置在执行所述指令序列时访问的数据值;
超高速缓存控制装置,包括
预载入装置,响应于在所述处理装置处所接收的流预载入指令,所述预载入装置将数据值从主存储器存储到所述超高速缓存装置的一个或多个缓存行内;
标识装置,响应于所述流预载入指令,所述标识装置标识所述超高速缓存装置中一个或多个缓存行用于优先再使用;以及
用于实施缓存维持操作的超高速缓存维持装置,在缓存维持操作期间,考虑到由所述标识装置为所述超高速缓存装置的缓存行所生成的任何优先用于再使用标识,执行用于再使用的一个或多个缓存行的选择。
根据本发明的另一个方面,提供一种操作具有多个缓存行的超高速缓存的方法,所述超高速缓存用于存储由处理器在执行指令序列时访问的数据值,包括以下步骤:
响应于在所述处理器处所接收的流预载入指令,将数据值从主存储器存储到超高速缓存的一个或多个缓存行内;
响应于所述流预载入指令,标识所述超高速缓存中的一个或多个缓存行,用于优先再使用;以及
实施缓存维持操作,在所述缓存维持操作期间,考虑到由所述标识步骤为所述超高速缓存装置的缓存行所生成的任何优先用于再使用标识,执行用于再使用的一个或多个缓存行的选择。
本发明的各种其他方面和特征在权利要求中被定义,并且包括计算机程序产品。
根据将结合附图而被阅读的示意性实施例的以下详细描述,本发明的以上或其它目的、特征及优点将是显然的。
附图说明
现在将参考附图仅以示例的方式描述本发明的实施例,其中:
图1示意性地示出了具有主存储器和一级及二级超高速缓存的数据处理设备;
图2示意性地示出了将被缓存并通过处理器操作的数据流;
图3示意性地示出了超高速缓存;
图4示意性地示出了替代的超高速缓存;
图5是示意用于将数据值预载入到超高速缓存内并标记超高速缓存的缓存行以便优先再使用的示意性流程图;以及
图6是示意用于当数据值将被处理器访问时进行缓存行更新的过程的示意性流程图。
具体实施方式
参考图1,示意性地示出了数据处理设备1。数据处理设备1包括用于执行数据处理指令的中央处理单元10,用于存储数据的主存储器20,以及临时存储用于中央处理单元10使用的数据值的超高速缓存34、40。主存储器20提供大容量(但低速的访问)存储。为了能更快地访问数据,主存储器20内所存储的数据的子集的拷贝被存储在二级超高速缓存40。二级超高速缓存40提供比主存储器20小的多的存储容量,但其能被更加快地访问。另外,在这样的情况下同样提供一级超高速缓存30,一级超高速缓存30本身又提供比二级超高速缓存40更小的存储容量,但访问时间更快。
当中央处理单元10需要特定的数据值时,首先检查一级超高速缓存30(因为如果事实上该数据值出现在一级超高速缓存30内,则它提供了对数据值最快的可能的访问),并且如果它出现在一级超高速缓存30内(一级超高速缓存命中(hit)),中央处理器单元10将读取并使用该数据值。在这种情况下,将不必访问二级超高速缓存40和主存储器20。然而,如果数据值没有出现在一级超高速缓存30(一级超高速缓存未命中),那么检查二级超高速缓存40,而且如果数据值出现(二级超高速缓存命中),它将由中央处理单元10读取并使用。在这种情况下,将必需访问一级超高速缓存30和二级超高速缓存40,但无需访问主存储器20。只有在所需要的数据值既没有出现在一级超高速缓存30、又没有出现在二级超高速缓存40(二级超高速缓存未命中)的情况下,才必需访问主存储器20以获得该数据值。
一级超高速缓存30包括以缓存行为单位存储数据值的超高速缓存32,和控制中央处理单元10对超高速缓存32的访问的超高速缓存控制器34。超高速缓存控制器34包括预载入电路35,预载入电路35响应于中央处理单元10正在执行的流预载入指令,将数据值的行从主存储器20存储到超高速缓存32的一个或多个缓存行内。超高速缓存控制器34还包括标识电路36,标识电路36响应于流预载入指令,以标识超高速缓存32中的一个或多个缓存行,以便优先再使用;以及超高速缓存维持电路37,超高速缓存维持电路37可操作地实施缓存维持操作,在缓存维持操作期间,考虑到(have regard to)由标识电路36为超高速缓存32的缓存行所生成的任何用于再使用的优先标识,进行用于再使用的一个和多个缓存行的选择。
与一级超高速缓存30一样,二级超高速缓存40包括以缓存行为单位存储数据值的超高速缓存42,以及控制中央处理单元10对超高速缓存42的访问的超高速缓存控制器44。超高速缓存控制器44包括预载入电路45,预载入电路45响应于中央处理单元10正在执行的流预载入指令,以将数据值从主存储器20存储到超高速缓存42的一个或多个缓存行内。超高速缓存控制器44还包括标识电路46和超高速缓存维持电路47,其中括标识电路46响应于流预载入指令,以标识超高速缓存42中的一个或多个缓存行以便优先再使用,超高速缓存维持电路47可操作地实施缓存维持操作,在缓存维持操作期间,考虑到由标识电路46为超高速缓存42的缓存行所生成的任何用于再使用的优先标识,进行用于再使用的一个或多个缓存行的选择。
这样,包括流预载入指令的程序代码能够被用来促使数据值从主存储器20预载到一级超高速缓存30和二级超高速缓存40两者内,并且还促使一级超高速缓存30和二级超高速缓存40中每一个的超高速缓存32、42的缓存行被标记,以便优先再使用,进而减少流数据盖写超高速缓存内有用数据的问题。将理解到,这项技术的变形可以被应用到仅关于一级超高速缓存30和二级超高速缓存40中的一个或其它的优先再使用的预载入和标记。
超高速缓存可以是n-路组相联(set associative)超高速缓存。这意味着超高速缓存被逻辑地分成n(n是正整数,例如4)部分、或者n路。超高速缓存的每一路包括一组缓存行,每一路的每个缓存行具有索引值,并且每一个缓存行被关联到其它路中每一路相应的缓存行。每一路的关联缓存行中的每一个具有相同的索引值。当来自主存储器的数据值被存储到超高速缓存内时,根据与将被存储的数据值的主存储器内的地点(location)相对应的存储器地址,它们将被分配到缓存行。来自主存储器的数据值的任何给定行能够被存储到具有特定索引值的缓存行内,并且能够因此被存储到超高速缓存的n路中的任何一路的特定缓存行内。n的值越大,超高速缓存未命中的可能性就越小,但是为访问超高速缓存内的数据值所需要的处理量越大(因为数据值的特定行能被存储到更多的缓存行,迫使为了给定的数据值而检查超高速缓存中更多数量的缓存行)。
用于超高速缓存条目的普遍形式如下所示:
数据值 | 标签 | 有效位 |
数据值是那些处理器取自主存储器,或者在随后存储回主存储器内之前被处理器存储到超高速缓存内的数据值。标签,与索引和位移(displacement)一起定义数据值所对应的主存储器的存储地址。特别地,存储器地址的最高有效位(MSBs)形成标签,中间位形成索引,而最低有效位形成位移。例如,就32位存储器而言,标签可以包括存储器地址开始的(first)20位,索引可以包括存储器地址随后的7位,而位移可以包括存储器地址的最后5位。最后,有效位指示缓存行是否包含有效数据。
有效地,实际上在超高速缓存内所存储的值是数据值、标签地址、有效位、以及可选地(将在下文讨论)优先用于再使用的标志。在组成超高速缓存的路的缓存行阵列内,由缓存行的位置表示索引,而且因此对超高速缓存中(每一路内)的单行,索引是独一无二的,并且因此这个值表示数据已经被放入、或者要被放入的超高速缓存的行。位移表示存储的缓存行内的位置(通常被用来指示需要缓存行中数据值的几个块中的哪一个)。标签地址被与数据值相关联地存储在缓存行内,并且根据按照存储器地址的MSBs来检查超高速缓存访问,以确定所期望的数据值是否在超高速缓存内出现。特别地,标签被用来确定数据值的特定行已经被存储到超高速缓存的哪一路(若有的话)。
参考图2,示意性地说明了数据值的流表示。通过中央处理单元10的处理目前正发生在数据流内的位置210,该位置210具有地址Acuur,而且这个地址被存储在中央处理单元10的寄存器Rn内。在地址Acuur处包括数据值的数据值的缓存行出现在一级超高速缓存30内。预载入电路35响应于流预载入指令,基于在处理器寄存器Rn内所存储的当前地址Acuur,来计算将被预载入到一级超高速缓存30内的数据值的缓存行。在本情况中,将被预载入的缓存行包括存储器地址:
Padd=Acuur+X×Cs (Eq1)
其中,Padd表示将被预载入超高速缓存中的部分主存储器内的存储器地址,Acuur表示数据流内处理目前正在发生处的当前地址,其可以在流预载入指令中被指定,Cs表示超高速缓存内每一个缓存行的长度,而x是整数。
特别地,预载入电路35通过将一个或多个缓存行的大小(缓存行的数量取决于x值)增加到当前地址、以及从包含这样所计算的地址的存储器的部分预载入数据值的行,来确定将被预载入的数据值的行的存储器地址。将理解到,这个确定可以多种方式进行。例如,当前地址可以表示目前正被处理的缓存行的起始地址,或目前正被处理的缓存行的结束地址,或目前正被处理的缓存行内的任何其它地址。在其中当前地址指示目前正被处理的缓存行的起始位置的情况下,上面的等式(Eq.1)将直接确定将被预载入的数据值的行的起始地址。在当前地址指示目前正被处理的缓存行内其它位置的情况下,上面的等式(Eq.1)将提供将被预载入的数据值的行内的位置的存储器地址,需要其它操作来确定将被预载入的数据值的行的起始位置。
另外,标识电路36响应于流预载入指令,基于以在处理器寄存器Rn内所存储的当前地址Acuur,来计算一级超高速缓存30内将被标记以便优先再使用的缓存行的存储器地址。在当前的情况下,将被标记以便优先再使用的缓存行包括存储器地址:
Radd=Acuur-y×Cs (Eq.2)
其中,Radd表示对应于在再使用标识操作中将被标识以便优先再使用的缓存行的存储器地址,Acuur表示数据流内处理目前正在发生处的当前地址,该当前地址可以在流预载入指令内指定,Cs表示超高速缓存内每一个缓存行的长度,并且y是整数。
特别地,预载入电路35通过从当前地址中减去一个或多个缓存行的大小(缓存行的数量取决于y值)、并且标记用于优先再使用的包含与这样所计算的地址相关联的数据值的缓存行,来确定将被标记以便优先再使用的缓存行。正如以上所讨论的对预载入地值的确定,将理解到可以以多种方式确定用于优先再使用的缓存行。例如,当前地址可以表示缓存行内目前正被处理的数据值的起始地址,或者缓存行内目前正被处理的数据值的结束地址,或者目前正被处理的在缓存行中间的数据值的地址。在当前地址指示目前正被处理的缓存行的起始位置的情况下,以上等式2(Eq.2)将直接确定将被标记以便优先再使用的缓存行的起始地址。在当前地址指示目前正被处理的缓存行内其它位置的情况下,以上等式2(Eq.2)将提供缓存行内将被标记以便优先再使用的缓存行的存储器地址,需要另外的操作来确定缓存行的起始位置。
这样,当前存储器地址Acuur被用来定义将要预载入的数据,以及将被丢弃的数据。
将理解到,凭借能够通过出现在缓存内、或将被放在缓存行内的数据值的存储器地址开始的27位(标签+索引)来标识缓存行,以及因此对于那个缓存行内所提供的所有数据值而言、存储器地址开始的27位都相同的事实,缓存行的起始地址,和这样标识的缓存行,可以通过仅分别采用Padd和Radd开始的27位用于预载入起始地址以及优先再使用起始地址的标记来处理。在其它架构中,所采用的位的数量可能不同,但是该操作原理将仍然应用。
参考图3,示意性的示出了范例超高速缓存结构。超高速缓存包括四个如以上所描述的缓存路320、340、360、380,以及用于标识响应于流预载入指令而最近所缓存的数据值的行被存储到超高速缓存的哪一路中的查找表310。
超高速缓存的第一路(路0)包括第一个多个缓存行,每一个缓存行具有标签部分322、数据部分324、有效标志326以及可选地优先用于再使用的标志328。超高速缓存的第二路(路1)340包括第二个多个缓存行,每一个缓存行具有标签部分342、数据部分344、有效标志346以及可选地优先用于再使用的标志348。超高速缓存的第三路(路2)360包括第三个多个缓存行,每一个缓存行具有标签部分362、数据部分364、有效标志366以及可选地优先用于再使用的标志368。最后,超高速缓存的第四路(路3)380包括第四个多个缓存行,每一个缓存行具有标签部分382、数据部分384、有效标志386以及可选地优先用于再使用的标志388。在写回型(write-back)超高速缓存的情况下,每一路的每个缓存行还将具有污染标志(dirtyflag)(未示出),该标志用于指示在缓存行内所存储的值已经改变但还没有被写到主存储器。
第一个、第二个、第三个和第四个多个缓存行中的每一个,包括相同数量的缓存行,并且每一路的每一行具有相关联的索引,该索引与其它路中每一个的对应行的索引相同。标签部分存储与在数据部分所存储的数据值相对应的存储器地址的MSBs,并且标签部分被用来定位超高速缓存内的数据值。每一个缓存行的有效位标识有效数据是否被存储在数据部分。如以上所描述的,可以响应于流预载入指令来设置有效位,以将数据的缓存行标记为有效并且因此优先用于再使用。优先用于再使用标志可以可选地被提供(而不是使用所述有效位)以明确指示缓存行是优先用于再使用,响应于流预载入指令来设置优先用于再使用标志。
所述流数据查找表310可操作地存储先前缓存的数据值(特别地,那些响应于流预载入指令而被缓存的)的行与数据值的那些行被缓存到n路中哪一路的指示之间的关联。特别地,流数据查找表310包括多个排,每一排具有参考部分312,和路-指示部分314。当数据值被预载入到——例如,响应于流预载入指令的第一路320的——缓存行内时,流数据查找表310被更新以在参考部分312内指示该缓存行的标识,以及在路-指示部分314内指示在第一路320内可以发现那个缓存行的已存储数据值。相同的处理能够被用来保持第二路、第三路和第四路中每一路内预载入的数据值的地点的记录。在参考部分312所提供的缓存行的标识例如可以是缓存行的索引和缓存行内所存储的标签值的几个位。
当响应于流预载入指令缓存行将被标记以便优先再使用时,标识电路随后能够把存储器地址对应于将被标记以便优先再使用的缓存行的部分,与流数据查找表310的参考部分312做比较。这样,确定流数据最近是否已经被存储到那个缓存行内,如果是,确定流数据被存储到超高速缓存的哪一路。然后,如以上所描述的通过标识电路、通过设置有效位或者优先用于再使用标志,在流数据查找表310内所指示的路的缓存行可以被标记为优先用于逐出。
将理解到,如以上所描述的流数据查找表是可选(但有利的)的机制,以避免(或至少降低)标识电路在四路中的每一个内查看以找到缓存行来标记用于优先再使用的需要。还应注意到,查找表310只是最近条目中的小超高速缓存,并且一般将比缓存路320到380小很多。还将理解到,如果所需要的缓存行没有出现在流数据查找表内,可选地,标识电路可以检查超高速缓存的每一路,以确定将要标记用于优先再使用的缓存行被存储到了哪一路内。
相似地,在没有提供如以上所描述的流数据查找表的情况下,标识电路简单地确定与将被标记用于优先再使用的缓存行相对应的索引,并按照数据值的存储器地址的标签部分来检查超高速缓存每一路的标签部分,其中,该数据值先前被存储在该索引处并且现在可以被盖写。如果发现匹配,匹配缓存行被标记用于优先再使用。
参考图4,其示意性地示出了使用流数据查找表的替代形式的超高速缓存的结构。与图3一样,图4的超高速缓存包括如以上所描述的4个缓存路420,440,460,480,用于响应于流预载入指令以标识最近所缓存的数据值的行已经被存储到超高速缓存的哪一路内的查找表410。
超高速缓存的第一路(路0)420包括第一个多个缓存行,每一个缓存行具有标签部分422、数据部分424和有效标志426。超高速缓存的第二路(路1)440包括第二个多个缓存行,每一个缓存行具有标签部分442、数据部分444和有效标志446。超高速缓存的第三路(路2)460包括第三个多个缓存行,每一个缓存行具有标签部分462、数据部分464和有效标志466。最后,超高速缓存的第四路(路3)480包括第四个多个缓存行,每一个缓存行具有标签部分482、数据部分484和有效标志486。与图3一样,在写回型超高速缓存的情况下,每一路内的每一个缓存行还将具有用于指示在缓存行内所存储的值已经改变但还没有被写到主存储器的污染标志(未示出)。缓存行中每一个的标签部分、数据部分和有效位的结构和操作如以上参考图3所描述的。然而,图4内既没有使用有效位也没有使用可选的优先用于再使用标志来指示被优先用于再使用的缓存行。相反,流输入查找表410完成这项功能。
正如图3,流数据查找表410可操作地存储先前缓存的数据值(那些响应于流预载入指令所特别缓存)的行与数据值的那些行被缓存到n路中哪一路的指示之间的关联。特别地,流数据查找表410包括多个排,每一排具有被用来指示流预载入的数据已经被存储到在那个索引位置的超高速缓存内的索引部分412,以及被用来指示流预载入的数据已经被存储到(在那个索引处的)超高速缓存的哪一路内的路-指示部分414。当响应于流预载入指令、数据值被预载入到——例如第一路420——的缓存行内时,流数据查找表410被更新,以在索引部分412内指示正被预载入的缓存行的索引(和因此超高速缓存内数据值的行被预载入的排位置),以及在路-指示部分314内指示可以在第一路420内发现存储的数据值的指示。相同的处理可以被用来保持第二路、第三路和第四路中每一路内预载入数据值的地点的记录。
当缓存行将被超高速缓存维持电路再使用时,超高速缓存维持电路查阅流数据查找表410,以确定将被考虑再使用的(每一路的)缓存行的索引是否出现在表内,如果是,则确定在那个索引位置的超高速缓存的哪一路被优先用于再使用。据此,图4的流数据查找表410,取代图3的有效位或优先用于再使用标志,用作优先用于再使用的标识。
可选地,为了确定将被优先用于再使用的缓存行,流数据查找表410中大多数最近最多增加的条目可以被忽略,以降低最近增加的涉及处理器可能当前在使用的、被缓存维持操作盖写的条目的可能性。有许多在其中能够实施这个的方式。例如,查找表中的条目可以是以按照年龄排序的列表形式,以及为了选择用于再使用的缓存行,列表内(特别在或靠近列表尾端,新条目被增加到的)某些位置的条目可以被忽视。
当图4的流数据查找表410中的条目已被超高速缓存维持电路使用来选择和再使用缓存行时,最好是从表中移除这个条目以降低那个缓存行未来被优先再使用的可能性(当它实际上不再包含流数据时)。该条目或者被全部删除,或者在流数据查找表内被标记为过时(obsolete)。
当流数据查找表410被示意为存储了每一行具有索引部分和路部分的多个行的表时,使用通过索引所排列的路值的简单阵列也将是可能的。
参考图5,其示意性地示出了响应于流预载入指令的发布(issuance)所述超高速缓存控制器的示范操作。首先,在步骤S1,在目前执行的程序代码内的流预载入指令被发布并且通过处理器执行。在步骤S2,基于用于控制将数据值从主存储器预载入超高速缓存内、以及用于控制在超高速缓存内标记缓存行以便优先再使用的流预载入指令,处理器生成控制信号。在步骤S3,超高速缓存控制器通过步骤S4、S5、S6和S7开始图4中所表示的预载入序列,并且还通过步骤S8、S9和S10标识图4中所表示的序列以便再使用。
特别地,在步骤S4,超高速缓存控制器的预载入电路根据由处理器生成的控制信号来确定主存储器中将被预载入超高速缓存的部分。如以上所描述的,基于目前被处理的数据值的流内的当前存储器地址,参考地确定将被预载入的数据值的存储器地址。然后,在步骤S5,确定主存储器(或较低层的超高速缓存)中被预载入超高速缓存内的部分。然后在步骤S6更新流数据查找表(LUT),以指示在步骤S5已经被预载入的缓存行。在步骤S7,预载入序列终止。
用于再使用的标识序列或者可以与预载入序列平行进行,或者替代地在预载入序列之前或之后进行。不论怎样用于再使用的标识序列和预载入序列两者都由流预载入指令触发。在步骤S8,在用于再使用的标识序列中,标识电路根据由处理器所生成的控制信号来确定在超高速缓存内被优先用于再使用的一个或多个缓存行。如以上所描述的,基于目前被处理的数据值的流内的当前存储器地址,参考地确定将被标记以便优先再使用的数据值的存储器地址。然后在步骤S9已标识的缓存行被标记以便优先再使用。这个标记或者可以采取在缓存行中优先用于再使用的字段内设置标志的方式,或者可以采取设置指示缓存行不包括有效数据(且因此不能被再使用)的缓存行有效标志的方式。另外,当流数据查找表被用来提供优先用于再使用标识时,该表在与缓存行相对应的条目将被标记以便优先再使用的情况下被升级(其可以是正在预载入的缓存行)。在步骤S10终止用于再使用的标识序列。
参考图6,其示意性地示出了当超高速缓存由于新数据将被更新时超高速缓存控制器的示范操作。在步骤S11,超高速缓存控制器确定缓存行更新是需要的。这可能因处理器试图访问超高速缓存内的数据值时超高速缓存未命中、或者因响应于将由处理器生成的数据值写到超高速缓存内的指令而引起。在步骤S12,获得与将被存储到超高速缓存内的数据值相对应的缓存行索引。如以上所描述的,缓存行对应于存储器地址中与数据值相对应的特定部分(亦即,主存储器内数据值被存储或将被存储的存储器地址)。在如图3所示的4路组相联超高速缓存的情况下,具有特定索引的数据值的行能被存储到4个缓存行中的任意一个——超高速缓存的每路的一个合适的缓存行。在步骤S13,检查超高速缓存的每一路,以确定优先用于再使用标识是否已经被应用到具有特定索引的缓存行。作为替代,在流数据查找表正提供指示哪一个缓存行是优先用于再使用的功能的地方,查阅流数据查找表以便确定超高速缓存的特定路是否关于那个索引优先用于再使用。基于在步骤S13所做的决定,随后在步骤S14选择数据值的行将被存储到其中的缓存路,以及由此选择缓存行。特别地,关于优先用于再使用标识已经被应用的缓存路的缓存行被选择,优先于优先用于再使用标识没有已经被应用的缓存行。
一旦在步骤S14已经选择了数据值将被存储进去的缓存行,则在步骤S15确定就在所选择的行内目前所存储的数据值而论,到主存储器的写回是否必需。在写回型超高速缓存中,数据值在它们被逐出超高速缓存时,仅被返回到主存储器,并且正是由于这个原因,步骤15是必需的。对通过同时更新主存储器内的数据值、也在主存储器内反映超高速缓存内数据值更新的直写式(wirte-through)超高速缓存而言,不需要这一步骤。
通过确定污染标志是否已经关于将被逐出的缓存行被设定来执行步骤15。当缓存行内的数据值被改变时,通过超高速缓存控制器设置污染位,以依据缓存行的再使用来指示那些需要被反映在主存储器的变化。如果在步骤15确定污染位已经被设置,程序进至步骤S16,其中目前出现在将被再使用的缓存行内的数据值的行被存储到主存储器。在步骤S17,数据值的新行被写到所选择的缓存行内,并且缓存行的标签部分相应地被更新。在步骤18,缓存行更新过程终止。
尽管这里已经结合附图详细描述了本发明的示意性实施例,但应理解到本发明并不局限于这些精确的实施例,而且在不背离由所附权利要求所定义的本发明的精神和范围的情况下,本领域普通技术人员可以在其中作出的不同的变化和改变。
Claims (19)
1.一种数据处理设备,所述数据处理设备包括:
(i)处理器,所述处理器可操作地执行指令序列;
(ii)超高速缓存,所述超高速缓存具有多个缓存行,所述超高速缓存可操作地存储用于被所述处理器在执行所述指令序列时访问的数据值;
(iii)超高速缓存控制器,所述超高速缓存控制器包括:
预载入电路,响应于在所述处理器处接收的流预载入指令,所述预载入电路可操作地将数据值从主存储器存储到所述超高速缓存的一个或多个缓存行内;
标识电路,响应于所述流预载入指令,所述标识电路可操作地标识所述超高速缓存的一个或多个缓存行用于优先再使用;以及
超高速缓存维持电路,所述超高速缓存维持电路可操作地实施缓存维持操作,在所述缓存维持操作期间,考虑到(haveregard to)由所述标识电路为所述超高速缓存的缓存行所生成的任何优先用于再使用标识,执行用于再使用的一个或多个缓存行的选择。
2.根据权利要求1所述的数据处理设备,其特征在于,其中
(i)所述流预载入指令指定与所述超高速缓存内的当前缓存行相对应的存储器地址,所述当前缓存行包含当前正在被所述处理器处理的数据值;
(ii)所述预载入电路可操作地将所述主存储器内的数据值存储到所述超高速缓存的一个或多个缓存行内,所述数据值跟随所述当前缓存行内的所述数据值;以及
(iii)所述标识电路可操作地标识用于优先再使用的所述超高速缓存的一个或多个缓存行,所述缓存行包含来自所述主存储器的在所述当前缓存行内的所述数据值之前的数据值。
3.根据权利要求1所述的数据处理设备,其特征在于,其中
(i)所述流预载入指令指定在所述超高速缓存内是可用的流数据的量;以及
(ii)所述预载入电路可操作地将来自所述主存储器的根据在所述流预载入指令内指定的所述流数据的量而确定的相当数量的数据预载入到所述超高速缓存内。
4.根据权利要求1所述的数据处理设备,其特征在于,其中
(i)所述流预载入指令指定在所述超高速缓存内是可用的流数据的量;以及
(ii)所述标识电路可操作地标识根据在所述流预载入指令内指定的所述流数据的量而确定的用于优先再使用的多个缓存行。
5.根据权利要求1所述的数据处理设备,其特征在于,其中
(i)所述超高速缓存的所述缓存行中的每一个具有与其相关联的被用来指示所述缓存行是否包含有效数据的有效位;
(ii)所述标识电路可操作地设置缓存行的所述有效位,以便如果该缓存行被优先用于再使用,则指示所述缓存行不包含有效数据;
(iii)所述超高速缓存维持电路可操作地优先选择具有被设置成指示该缓存行不包含有效数据的有效位的缓存行,用于再使用。
6.根据权利要求1所述的数据处理设备,其特征在于,其中
(i)所述超高速缓存的所述缓存行中的每一个具有与其相关联的优先用于再使用字段,根据由所述标识电路产生的所述优先用于再使用标识来设置所述字段;
(ii)所述超高速缓存维持电路可操作地优先选择具有被设置成指示该缓存行被优先用于再使用的优先用于再使用字段的缓存行,用于优先再使用。
7.根据权利要求1所述的数据处理设备,其特征在于,其中
(i)所述超高速缓存是n-路组相联超高速缓存;以及
(ii)考虑到由所述标识电路为所述超高速缓存的所述n个相应的缓存行的所述一个或多个中的任何一个生成的任何优先用于再使用标识,所述超高速缓存维持电路可操作地在所述各个n路的n个相应的缓存行之间选择用于再使用。
8.根据权利要求7所述的数据处理设备,其特征在于,所述
数据处理设备包括:
(i)流数据查找表,所述流数据查找表可操作地存储先前被缓存的数据值的行和所述数据值的行被缓存到所述n路中的哪一个内的指示之间的关联;
(i)其中响应于所述流预载入指令,所述标识电路可操作地使用所述流数据查找表来定位所述超高速缓存内的数据值的所述缓存行,并标识所述定位的缓存行,用于优先再使用;以及
(iii)其中所述预载入电路可操作地在所述流查找表内增加条目,以指示出所述预载入的数据值已经被存储到所述超高速缓存的哪一路。
9.根据权利要求7所述的数据处理设备,其特征在于,其中
通过搜索所述超高速缓存寻找与存储在所述缓存行内的所述一个或多个数据值的所述地址相对应的缓存行,所述标识电路可操作地定位在所述超高速缓存内的数据值的所述缓存行。
10.根据权利要求7所述的数据处理设备,其特征在于,所述数据处理设备包括:
(i)流数据查找表,所述流数据查找表可操作地存储先前缓存的数据值的行与所述数据值的行被缓存到所述n路中的哪一个内的指示之间的关联;
(ii)其中所述标识电路可操作地在所述流数据查找表内增加条目,以指示出所述预载入的数据值已经被存储到所述超高速缓存的哪一路;以及
(iii)其中考虑到所述流数据查找表内指示出所述超高速缓存的所述n个相应的缓存行中的所述一个或多个中的任何一个的任何条目,所述超高速缓存维持电路可操作地在所述各个n路的n个相应的缓存行之间选择,用于再使用。
11.根据权利要求10所述的数据处理设备,其特征在于,其中
用于再使用,在所述各个n路的所述n个相应的缓存行之间选择中,所述超高速缓存维持电路考虑到所述流数据查找表内最不最近(the least recently)增加的条目。
12.根据权利要求2所述的数据处理设备,其特征在于,其中
所述预载入电路可操作地将与主存储器包含地址Padd=Acurr+x×Cs的部分相对应的数据值存储到所述超高速缓存内;
以及所述标识电路可操作地标识所述超高速缓存中包含与存储器包含地址Radd=Acurr-y×Cs的部分相对应的数据值的一个或多个缓存行,用于优先再使用;
其中Padd表示在所述预载入操作中,主存储器的将被预载入所述超高速缓存内的所述部分中的存储器地址,Radd表示在所述再使用标识操作中,与将被标识用于再使用的存储行相对应的存储器地址,Acurr表示在所述流预载入指令中指定的所述存储器地址,Cs表示所述超高速缓存内每一个缓存行的所述长度,并且x和y是整数。
13.根据权利要求12所述的数据处理设备,其特征在于,其中x和/或y是预先确定的常数。
14.根据权利要求12所述的数据处理设备,其特征在于,其中x和/或y在所述流预载入指令中被指定。
15.根据权利要求1所述的数据处理设备,其特征在于,所述数据处理设备包括:
(i)另外的超高速缓存,所述另外的超高速缓存在所述主存储器和所述超高速缓存之间被提供,所述另外的超高速缓存具有多个缓存行,所述另外的超高速缓存可操作地存储用于传输到所述超高速缓存并由所述处理器在执行所述指令序列时访问的数据值;其中
(ii)所述流预载入指令指定所述预载入操作和所述逐出识别操作将关于所述超高速缓存和所述另外的超高速缓存中的哪一个而被执行;以及
(iii)在所述流预载入指令指定所述预载入操作和所述再使用标识操作将关于所述超高速缓存执行的情况下,所述超高速缓存控制器可操作地将数据值预载入所述超高速缓存的缓存行内,并且标记所述超高速缓存的用于再使用的一个或多个缓存行;
(iv)以及在所述流预载入指令指定所述预载入操作和所述再使用标识操作将关于所述另外的超高速缓存执行的情况下,可操作地将数据值预载入所述另外的超高速缓存的缓存行内,并且标记所述另外的超高速缓存的用于再使用的一个或多个缓存行。
16.根据权利要求1所述的数据处理设备,其特征在于,其中通过以无特权模式在所述数据处理系统上运行的应用软件,所述流预载入指令是可执行的。
17.根据权利要求1所述的数据处理设备,其特征在于,其中所述缓存维持操作是行填充(line fill)。
18.一种数据处理设备,所述数据处理设备包括:
(i)处理装置,所述处理装置用于执行指令序列;
(ii)超高速缓存装置,所述超高速缓存装置具有多个缓存行,所述超高速缓存装置用于存储由所述处理装置在执行所述指令序列时访问的数据值;
(iii)超高速缓存控制装置,所述超高速缓存控制装置包括:
预载入装置,响应于在所述处理装置处接收的流预载入指令,所述预载入装置用于将数据值从主存储器存储到所述超高速缓存装置的一个或多个缓存行内;
标识装置,响应于所述流预载入指令,所述标识装置用于标识所述超高速缓存装置的一个或多个缓存行,用于优先再使用;以及
超高速缓存维持装置,所述超高速缓存维持装置用于实施缓存维持操作,在所述缓存维持操作期间,考虑到由所述标识装置为所述超高速缓存装置的缓存行生成的任何优先用于再使用标识,执行用于再使用的一个或多个缓存行的选择。
19.一种操作具有多个缓存行且用于存储由处理器在执行指令序列时访问的数据值的超高速缓存的方法,所述方法包括以下步骤:
(i)响应于在所述处理器处接收的流预载入指令,将数据值从主存储器存储到所述超高速缓存的一个或多个缓存行内;
(ii)响应于所述流预载入指令,标识所述超高速缓存的一个或多个缓存行,用于优先再使用;以及
(iii)实施缓存维持操作,在所述缓存维持操作期间,考虑到由所述标识步骤为所述超高速缓存的缓存行生成的任何优先用于再使用标识,执行用于再使用的一个或多个缓存行的选择。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/379440 | 2009-02-20 | ||
US12/379,440 US20100217937A1 (en) | 2009-02-20 | 2009-02-20 | Data processing apparatus and method |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101826056A true CN101826056A (zh) | 2010-09-08 |
Family
ID=41819235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010126764.7A Pending CN101826056A (zh) | 2009-02-20 | 2010-02-20 | 数据处理设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100217937A1 (zh) |
JP (1) | JP2010198610A (zh) |
CN (1) | CN101826056A (zh) |
GB (1) | GB2468007A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103119555A (zh) * | 2010-09-24 | 2013-05-22 | Arm有限公司 | 下一指令类型字段 |
CN104331377A (zh) * | 2014-11-12 | 2015-02-04 | 浪潮(北京)电子信息产业有限公司 | 一种多核处理器系统的目录缓存管理方法 |
CN104850508A (zh) * | 2015-04-09 | 2015-08-19 | 深圳大学 | 基于数据局部性的访存方法 |
CN104951263A (zh) * | 2014-03-27 | 2015-09-30 | 英特尔公司 | 避免向显示器发送未改变的区域 |
CN105659285A (zh) * | 2013-08-08 | 2016-06-08 | Arm有限公司 | 数据处理系统 |
CN111108485A (zh) * | 2017-08-08 | 2020-05-05 | 大陆汽车有限责任公司 | 操作高速缓存的方法 |
CN111538677A (zh) * | 2020-04-26 | 2020-08-14 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN112380013A (zh) * | 2020-11-16 | 2021-02-19 | 海光信息技术股份有限公司 | 缓存预载方法、装置、处理器芯片及服务器 |
CN113791989A (zh) * | 2021-09-15 | 2021-12-14 | 深圳市中科蓝讯科技股份有限公司 | 基于cache的缓存数据处理方法、存储介质及芯片 |
CN114297100A (zh) * | 2021-12-28 | 2022-04-08 | 摩尔线程智能科技(北京)有限责任公司 | 用于缓存的写策略调整方法、缓存装置及计算设备 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012203560A (ja) * | 2011-03-24 | 2012-10-22 | Toshiba Corp | キャッシュメモリおよびキャッシュシステム |
US8656137B2 (en) | 2011-09-01 | 2014-02-18 | Qualcomm Incorporated | Computer system with processor local coherency for virtualized input/output |
JP5845902B2 (ja) * | 2012-01-04 | 2016-01-20 | トヨタ自動車株式会社 | 情報処理装置及びメモリアクセス管理方法 |
US10606752B2 (en) | 2017-11-06 | 2020-03-31 | Samsung Electronics Co., Ltd. | Coordinated cache management policy for an exclusive cache hierarchy |
CN112270412B (zh) * | 2020-10-15 | 2023-10-27 | 北京百度网讯科技有限公司 | 网络算子处理方法、装置、电子设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732242A (en) * | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
TW501011B (en) * | 1998-05-08 | 2002-09-01 | Koninkl Philips Electronics Nv | Data processing circuit with cache memory |
US6766419B1 (en) * | 2000-03-31 | 2004-07-20 | Intel Corporation | Optimization of cache evictions through software hints |
AU2001294856A1 (en) * | 2000-09-29 | 2002-04-08 | Sun Microsystems, Inc. | System and method for identifying and managing streaming-data |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US20060090034A1 (en) * | 2004-10-22 | 2006-04-27 | Fujitsu Limited | System and method for providing a way memoization in a processing environment |
GB0603552D0 (en) * | 2006-02-22 | 2006-04-05 | Advanced Risc Mach Ltd | Cache management within a data processing apparatus |
-
2009
- 2009-02-20 US US12/379,440 patent/US20100217937A1/en not_active Abandoned
-
2010
- 2010-01-12 GB GB1000473A patent/GB2468007A/en not_active Withdrawn
- 2010-02-03 JP JP2010022201A patent/JP2010198610A/ja active Pending
- 2010-02-20 CN CN201010126764.7A patent/CN101826056A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103119555A (zh) * | 2010-09-24 | 2013-05-22 | Arm有限公司 | 下一指令类型字段 |
US9977675B2 (en) | 2010-09-24 | 2018-05-22 | Arm Limited | Next-instruction-type-field |
CN105659285A (zh) * | 2013-08-08 | 2016-06-08 | Arm有限公司 | 数据处理系统 |
CN105659285B (zh) * | 2013-08-08 | 2019-04-12 | Arm有限公司 | 数据处理系统、操作数据处理系统的方法和计算机可读介质 |
CN104951263A (zh) * | 2014-03-27 | 2015-09-30 | 英特尔公司 | 避免向显示器发送未改变的区域 |
CN104951263B (zh) * | 2014-03-27 | 2019-05-14 | 英特尔公司 | 避免向显示器发送未改变的区域 |
CN104331377A (zh) * | 2014-11-12 | 2015-02-04 | 浪潮(北京)电子信息产业有限公司 | 一种多核处理器系统的目录缓存管理方法 |
CN104850508A (zh) * | 2015-04-09 | 2015-08-19 | 深圳大学 | 基于数据局部性的访存方法 |
CN111108485A (zh) * | 2017-08-08 | 2020-05-05 | 大陆汽车有限责任公司 | 操作高速缓存的方法 |
CN111108485B (zh) * | 2017-08-08 | 2023-11-24 | 大陆汽车科技有限公司 | 操作高速缓存的方法 |
CN111538677A (zh) * | 2020-04-26 | 2020-08-14 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN111538677B (zh) * | 2020-04-26 | 2023-09-05 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN112380013A (zh) * | 2020-11-16 | 2021-02-19 | 海光信息技术股份有限公司 | 缓存预载方法、装置、处理器芯片及服务器 |
CN112380013B (zh) * | 2020-11-16 | 2022-07-29 | 海光信息技术股份有限公司 | 缓存预载方法、装置、处理器芯片及服务器 |
CN113791989A (zh) * | 2021-09-15 | 2021-12-14 | 深圳市中科蓝讯科技股份有限公司 | 基于cache的缓存数据处理方法、存储介质及芯片 |
CN113791989B (zh) * | 2021-09-15 | 2023-07-14 | 深圳市中科蓝讯科技股份有限公司 | 基于cache的缓存数据处理方法、存储介质及芯片 |
CN114297100A (zh) * | 2021-12-28 | 2022-04-08 | 摩尔线程智能科技(北京)有限责任公司 | 用于缓存的写策略调整方法、缓存装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
JP2010198610A (ja) | 2010-09-09 |
GB2468007A (en) | 2010-08-25 |
US20100217937A1 (en) | 2010-08-26 |
GB201000473D0 (en) | 2010-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101826056A (zh) | 数据处理设备和方法 | |
US7275135B2 (en) | Hardware updated metadata for non-volatile mass storage cache | |
US7783837B2 (en) | System and storage medium for memory management | |
US6339813B1 (en) | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory | |
US9582282B2 (en) | Prefetching using a prefetch lookup table identifying previously accessed cache lines | |
KR20010042262A (ko) | 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조 | |
JPWO2008155815A1 (ja) | 情報処理装置 | |
EP3411798B1 (en) | Cache and method | |
JP4888839B2 (ja) | キャッシュメモリを備えるベクトル計算機システム、及びその動作方法 | |
KR20060130120A (ko) | 캐시 메모리 및 그 제어 방법 | |
KR100987996B1 (ko) | 메모리 액세스 제어 장치 및 메모리 액세스 제어 방법 | |
CN118020064A (zh) | 具有伪lru补充年龄信息的重新引用区间预测(rrip) | |
US7711904B2 (en) | System, method and computer program product for executing a cache replacement algorithm | |
JP3929872B2 (ja) | キャッシュメモリ、プロセッサ及びキャッシュ制御方法 | |
US8266381B2 (en) | Varying an amount of data retrieved from memory based upon an instruction hint | |
JP2017072981A (ja) | 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム | |
US6516388B1 (en) | Method and apparatus for reducing cache pollution | |
CN101419543B (zh) | 预测高速寄存器的存取位置的方法及系统 | |
JP5800347B2 (ja) | 情報処理装置及びデータアクセス方法 | |
US8176254B2 (en) | Specifying an access hint for prefetching limited use data in a cache hierarchy | |
JP6451475B2 (ja) | 演算処理装置、情報処理装置および演算処理装置の制御方法 | |
WO2005050455A1 (ja) | キャッシュメモリ及びその制御方法 | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 | |
JP2024011696A (ja) | 演算処理装置及び演算処理方法 | |
EP1320801A2 (en) | System and method for pre-fetching for pointer linked data structures |
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 |
Application publication date: 20100908 |