CN101533371A - 使用微标签的高速缓存存取 - Google Patents
使用微标签的高速缓存存取 Download PDFInfo
- Publication number
- CN101533371A CN101533371A CN200910134623A CN200910134623A CN101533371A CN 101533371 A CN101533371 A CN 101533371A CN 200910134623 A CN200910134623 A CN 200910134623A CN 200910134623 A CN200910134623 A CN 200910134623A CN 101533371 A CN101533371 A CN 101533371A
- Authority
- CN
- China
- Prior art keywords
- cache
- address
- zone
- current pointer
- data memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及使用微标签的高速缓存存取。所公开的数据处理装置包括:至少一个处理数据的数据处理器;存储待由数据处理器处理的多个值的组相联高速缓存,每个值由存储值的存储器内的存储器单元的地址来标识,组相联高速缓存分成多个高速缓存路;包括用于存储多个标识符的多个存储单元的数据存贮器,每个标识符标识存储来自组相联高速缓存的相应值的高速缓存路,并且每个都具有与之相联的有效指示符,多个标识符对应于多个值,多个值是存储在连续地址中的值以使数据存贮器存储用于存储在存储器的区域内的值的标识符;用于存储指向最近访问的数据存贮器中的存储单元的当前指针的当前指针存储器;偏移确定电路,响应于高速缓存存取请求以确定高速缓存存取请求对紧接在先的高速缓存存取请求的地址的偏移,偏移确定电路适于以偏移量更新当前指针;以及数据存贮器查找电路,用于根据数据存贮器的大小和偏移确定更新的当前指针是否指向区域内的地址,并且如果是,数据处理器适于根据由当前指针指向的存储的标识符来标识高速缓存路,条件是其具有与其相关联的有效指示符。
Description
技术领域
本发明涉及使用微标签(micro tag)来存取高速缓存(cache)。
背景技术
在数据处理装置内使用高速缓存来存储日益增加的大量数据。大量数据的存储可能使得存取在高速缓存内的数据成为相当复杂的过程,其需要相当大的尺寸的地址。因此对这样的地址的处理可能需要相当大量的功率和时间。为了降低花费在存取高速缓存内的存储单元(storage location)中的功率和时间,已经用许多方式来组织高速缓存。
一种配置高速缓存的普遍方式是所谓的“组相联”(set associative)高速缓存。16K字节(byte)的组相联高速缓存如图1中所示。示出的该高速缓存是这样的具有4路(way)11、12、13、14的4路组相联高速缓存10,每一路包含大量的高速缓冲存储器线(cache line)20。与特定地址35相关联的数据值(在下面的例子中称为字(word))可能被存储在4路(即每组具有4个高速缓冲存储器线,如通常由标号22所示出的)的任何一路的特定高速缓冲存储器线中。每一路存储4K字节(16K字节高速缓存/4路)。如果每个高速缓冲存储器线存储8个32位的字,那么在每个路中存在32字节/高速缓冲存储器线(8字×4字节/字)以及128个高速缓冲存储器线((4K字节/路)/(32字节/高速缓冲存储器线))。因此,在这个示出的例子中,组的总数将等于128,即图中的“M”将是127。
为了处理在这类高速缓存中存储的数据,使用包括组(SET)或索引部分37和TAG(标签)部分36的地址35,其中组或索引部分37指示该地址涉及的是哪个组或线,TAG部分36指示其在四路中的哪一路中。这样的地址标识了高速缓冲存储器线和高速缓存路。由组来标识线,以及将存储在4TAG RAM25中的TAG与4个高速缓存10的相应的组中的TAG相比较和匹配来指示该路。实际上可能在高速缓存路内的高速缓冲存储器线中存储多于一个的数据字,而且这样地址可能包含更多的信息。
当存取在以这种方式组织的高速缓存中存储的数据时,将需要把由编程模型产生的任何虚拟地址转换成物理地址。由于程序将要早产生虚拟地址,而直到其转换成物理地址之前数据都不能被存取,因而这可能减慢了过程。
众所周知的将虚拟地址转换成物理地址的方式是通过使用翻译后援缓冲器(translation lookaside buffer)或TLB。图2示出了存取数据的公知方式,在这期间将虚拟地址转换成物理地址,该物理地址随后用于存取数据。物理地址35包括标签部分36和索引部分37。该索引部分用于指示该地址涉及高速缓存路中的哪个组。因而,使用地址35的索引部分选择多个高速缓存标签目录(directory)40中的相应的线。然后地址35的标签部分36在比较器60中与在与高速缓存的四路相对应的四个高速缓存标签目录中的每一个中存储的四个标签进行比较。当比较给出匹配时,这会指示出存储数据项的高速缓存路并且之后可以用多路复用器70从高速缓存50中存取该数据项。
这是一种可以存取由虚拟地址标识的数据的方式。在这个过程中的初始步骤是利用表格后援缓冲器(table lookaside buffer)将虚拟地址转换成物理地址。这不是一个快速的步骤,并且从而将其作为该过程的第一步相当大地减慢了关键路径(critical path)。一个可替换方式示于图3中。该系统被称为实质上带索引的/物理上带标签的高速缓存系统(virtually indexed/physically tagged cachesystem)。在这个例子中使用虚拟索引(virtual index)来选择将标签存储到哪个组(或线)中以执行数据存取。因而,一获得虚拟地址,这一步骤就可以与利用TLB30将虚拟地址转换成物理地址并行执行。一旦由TLB30已产生了物理标签,则将其与由索引从高速缓存标签目录中选出的四个标签进行比较。当发现匹配之后其被用于从高速缓存50中存取数据。
这比图2中示出的数据存取要快。但是,标签可能是相对较长的数据段(piece),例如具有32K的4路组相联高速缓存结构(包括64字节的高速缓冲存储器线大小)的存储系统,(对于具有32位地址的处理器)将具有19位的标签。因而比较阶段可能是缓慢的。
此外,该过程要求对多个RAM进行存取,即在该过程期间存取多个高速缓存标签目录和高速缓存数据阵列(RAM),因此功耗很高。
处理总是必须存取多个RAM的问题的一种公知方式是使用微标签。微标签用于存储关于新近的高速缓存存取的高速缓存路的信息。这些在指令高速缓存存取中特别有用。这是由于通常当指令在环路(loop)中被处理时,相同的指令可能被多次紧接着接连存取。一旦已经进行了高速缓存存取,就会知道存取的位置位于哪个高速缓存路中,并且因此以微标签形式存储关于新近的高速缓存存取的信息能有助于减少多个RAM需要被启用的次数。然而,为了能够使高速缓存存取请求与先前的存取相关联,基本上需要连同关于高速缓存路的信息一起存储高速缓冲存储器线的全地址。一个地址通常是32位长而关于高速缓存路的信息一般只有几个位,依赖于待标识的路的数量。因而,这种解决方案在存储方面是高代价的,特别是如果存储若干新近的高速缓存存取的高速缓存存取信息时。
发明内容
本发明的第一方面提供一种数据处理装置,所述的数据处理装置包括:至少一个用于处理数据的数据处理器;用于存储待由所述数据处理器处理的多个值的组相联高速缓存,每个值由存储所述值的存储器内的存储器单元的地址来标识,所述组相联高速缓存分成多个高速缓存路;包括用于存储多个标识符的多个存储单元的数据存贮器(data store),每个标识符(identifier)标识存储来自所述组相联高速缓存的相应值的高速缓存路,并且每个都具有与之相联的有效指示符(valid indicator),所述多个标识符对应于多个值,所述多个值是存储在连续地址中的值以使所述数据存贮器存储用于存储在所述存储器的区域内的值的标识符;用于存储指向最近访问的所述数据存贮器中的存储单元的当前指针的当前指针存储器;偏移(offset)确定电路,响应于高速缓存存取请求以确定所述高速缓存存取请求对紧接在先的高速缓存存取请求的地址的偏移,所述偏移确定电路适于以所述偏移量更新所述当前指针;以及数据存贮器查找电路(lookup circuitry),用于根据所述数据存贮器的大小和所述偏移确定更新的所述当前指针是否指向所述区域内的地址,并且如果是,所述数据处理器适于根据由所述当前指针指向的存储的所述标识符来标识所述高速缓存路,条件是其具有与其相关联的有效指示符。
本发明认识到这样的事实:尽管需要用来标识存储特定值的高速缓存路的信息是少的,因为一般仅有几个高速缓存路需要区别,但需要用来标识高速缓冲存储器线的信息是很大的,因此为了能够标识哪个条目与特定的高速缓冲存储器线相关,对于存储高速缓存路信息的每个条目,需要大量的逻辑。本发明也认识到尽管存储了这些信息的大部分的数据存贮器通常存储了涉及最近访问地址的信息,因为它们很可能再一次被访问,在很多情况下在特定的时间段内执行对存储器的特定区域的存取。因而,如果使得存储了高速缓存路信息的数据存贮器不存储最近访问的高速缓存地址,而是存储与最近访问的高速缓存地址位于其中的存储器的特定区域相关的值,则可以在不需要使用高速缓冲存储器线的地址来标识每个位置的情况下执行访问。特别地,通过在数据存贮器中存储与连续地址相关的值,则请求的条目可以简单地由对先前的访问的偏移来确定。然后可以将当前指针移动该偏移量,并且只要当前指针不移出由数据存贮器覆盖的地址区域,它将指向新的条目。这样具有仅需要几个位来确定一个新的条目位置的优点,并且因此对于相似量的逻辑来说可能提供更多的条目位置以及由数据存贮器覆盖的更大的存储区域。这可能增加系统的效率并且显著降低在微标签中没有条目时所需的标签RAM(TAG RAM)查找的数目。
尽管该装置可以以多种方式确定当前指针是否被更新得位于区域之外,但在一些实施例中所述数据处理装置还包括区域定位指针存贮器(region locatorpointer store),用于存储指向与连续地址的所述区域内的预定位置相对应的所述数据存贮器中的条目的区域定位指针;其中所述数据存贮器查找电路适于根据所述当前指针相对于所述区域定位指针的值来确定更新的所述当前指针是否指向所述区域内的地址。
通过使用指向对应于特定位置的数据存贮器中的特定条目的区域定位指针,仅通过比较当前指针与区域定位指针,该装置就可以确定当前指针是否正指向在所覆盖的地址区域内部的位置。
尽管该区域定位指针可以指向数据存贮器中的任何存储单元,但在一些实施例中其指向具有最低地址的值。在这样的实施例中其被称为底部指针并且这是了解当前指针是否在区域内的简单方式。如果数据存贮器覆盖了n个地址位置,那么如果该当前指针转到高于底部指针+n的值,那么其位于区域之外。
在一些实施例中,所述数据存贮器查找电路包括比较器,该比较器用于将更新的所述当前指针和所述区域定位指针相比较,并用于响应所述比较来确定更新的所述当前指针是否位于所述区域之外。
确定更新的当前指针是否已经移到区域之外的一种简单的方式是将其与区域定位指针进行比较。
在一些实施例中,所述数据处理装置还包括数据存贮器更新电路,所述数据存贮器更新电路响应于对来自所述数据存贮器查找电路的更新的所述当前指针位于所述区域之外的指示的接收以便以所述偏移量更新所述区域定位指针使得将所述区域移动了所述偏移量,并且以便使与不再在所述区域内的地址相对应的所述存储单元无效。
如果该装置确定当前指针已经移动到由数据存贮器覆盖的区域之外,那么移动区域定位指针以使由数据存贮器覆盖的区域移动。这就保证了其覆盖当前正被访问的区域。当移动该区域时,需要使不在当前更新区域内的数据存贮器中的任何位置无效,因为它们不包括相关的信息。
在一些实施例中,所述数据存贮器更新电路还响应于对来自所述数据存贮器查找电路的更新的所述当前指针位于所述区域之外的指示以便启动标签RAM查找以定位存储所述高速缓存存取请求的所述值的路,并且以便以标识所述路的标识符来更新由更新的所述当前指针指向的所述数据存贮器中的所述条目。
在收到当前指针位于区域之外的指示之后,需要标签RAM查找以定位存储了高速缓存存取的值的路。当找到这个高速缓存路时,其可以用于存取所要求的数据,并且其也可以被存储在数据存贮器中由当前指针指向的位置中。这样,以涉及当前正在被存取的区域中的地址的信息来更新数据存贮器。
在一些实施例中,所述数据存贮器包括环形缓冲器。
当结合指向数据存贮器内的位置的指针使用时,将环形缓冲器用作数据存贮器特别合适。这样,当前指针和区域定位指针可以简单地包括足以指向数据存贮器内每个位置的许多的位。依赖于偏移量为正值或负值而将它们增加或减少了偏移量,就意味着可以使它们围绕环形缓冲器移动而指向新的位置。如果当前指针移动得太远,那么可以使用附加位来指示其已经行进得完全围绕环形缓冲器,并且在比较它的值与区域定位指针时使用该信息以确定其是否位于当前覆盖的地址范围内。
在一些实施例中,所述值包括由所述数据处理器处理的数据项,而在其它实施例中,所述值包括由所述数据处理器处理的指令。
本发明的实施例可适用于高速缓存存取请求是针对特定区域内的位置的情形。因而,通常是顺序的或者在小的环路内的指令存取特别受益于本发明的实施例。此外,存取存储器中的连续位置或最近(proximate)位置的特定数据存取也可适用于本发明的实施例。
在一些实施例中,所述偏移确定电路包括比较器,该比较器用于将所述高速缓存存取请求的虚拟地址的预定的位与所述紧接在先的高速缓存存取请求的虚拟地址的所述预定的位相比较。
虽然该偏移确定电路可以以多种方式确定偏移,但比较存取请求的虚拟地址的预定的位可以简单地提供这种信息。由于数据存贮器被限制了大小并且仅是由当前指针要求的数据存贮器内的相对位置,因而仅需要比较地址的几个位。当移动到覆盖的区域之外但是只要数据存贮器的存取仅涉及几个需要考虑的位时,完整的虚拟地址对于在定位实际数据中的使用是重要的。
在一些实施例中,所述数据处理装置包括预取单元,其响应于检测到待取出的后继指令位于连续地址中以输出顺序指示符,所述偏移确定电路响应于所述顺序指示符以增加所述当前指针。
在很多情况下如在取出指令时,下一个高速缓存存取请求将是对于后继地址的。这一信息由预取单元获知,并且可能有利的是将这一信息输出,使得当前指针可以响应于检测到的该信息而不是对虚拟地址的位进行比较而简单地增加。
在一些实施例中,响应于存取所述数据存贮器和检测到无效的指示符,所述数据处理装置通过执行标签RAM查找来更新所述存储单元和所述有效位。
在数据存贮器并不存储关于这个特定高速缓存存取请求的高速缓存路的信息的情况下,则检测与数据存储条目相联的无效指示符,并响应于此可以执行标签查找并确定高速缓存路以及以此值来更新数据存贮器。
本发明的另一方面提供了一种确定对组相联高速缓存的高速缓存存取请求将存取多个高速缓存路中的哪一个的方法,包括步骤:响应于高速缓存存取请求,确定所述高速缓存存取请求对紧接在先的高速缓存存取请求的地址的偏移;以所述偏移量来更新指向最近访问的数据存贮器中的存储单元的当前指针,所述数据存贮器包括用于存储多个标识符的多个存储单元,每个标识符标识存储来自所述组相联高速缓存的相应值的高速缓存路,并且每个都具有与之相联的有效指示符,所述多个标识符对应于多个值,所述多个值是存储在连续地址中的值以使所述数据存贮器存储用于存储在所述存储器的区域中的值的标识符;以及根据所述数据存贮器的大小和所述偏移量来确定更新的所述当前指针是否指向所述区域内的地址;以及如果为是,则根据由所述当前指针指向的存储的所述标识符来标识所述高速缓存路,条件是其具有与其相关联的有效指示符。
本发明的上面的以及其它的目的、特点和优点将从下面的连同所附附图而理解的说明性实施例的详细描述中而变得显而易见。
附图说明
图1示意性示出了一个根据现有技术的4路组相联高速缓存;
图2示意性示出了根据现有技术在物理上带索引的/物理上带标签的高速缓存系统(physically indexed/physically tagged cache system)中的数据存取;
图3示出了根据现有技术的实质上带索引的/物理上带标签的高速缓存系统;
图4示出了根据本发明实施例的微标签存贮器和其覆盖(cover)的存储器的相应部分;
图5示出了根据本发明的实施例的数据处理装置;
图6示出了根据本发明的实施例的偏移确定电路和查找电路;
图7示意性示出了根据本发明的实施例的微标签;
图8示意性示出了根据本发明的实施例的偏移确定电路、数据存贮器查找电路和更新电路;以及
图9示出了例示在根据本发明的实施例的方法中的步骤的流程图。
具体实施方式
图4示出了存储表示存储器(memory)110的区域的高速缓存路的值的微标签100。微标签100具有n个条目(entry),并且包括与其相关联的两个指针,该两个指针指向微标签100内的两个条目,而该n个条目用于存储对存储器110内的n个连续地址的高速缓存路进行表示的n个值。一个指针是底部指针(bottompointer),其指向由微标签100覆盖的最低地址;而另一个是当前指针(curreritpointer),其指向与被处理的当前高速缓存存取请求相对应的位置。在指令高速缓存的情况下,其指向与程序计数器相同的地址。
图5示出了根据本发明的实施例的数据处理装置120。数据处理装置120包括处理器130,处理器130具有预取单元132、指令队列133、译码部分134和一个执行部分或多个执行部分135。存在预取单元132从中取出指令的指令高速缓存140,和指令高速缓存与其通信的存储器110(未示出)。
高速缓存存取请求是从预取单元132输出的,如果该高速缓存存取请求是顺序存取请求,那么在本实施例中,预取单元132还输出顺序指示符SI。否则只不过是输出存取请求。如果没有SI输出,那么在偏移确定电路中的比较器确定该存取请求对先前的存取请求的偏移量(这是通过比较它们的虚拟地址的特定相关位来得出的),并根据此确定其随后存储在偏移存贮器182中的偏移。在另一实施例中,可以不提供自预取单元输出的SI,且在这种实施例中偏移确定电路为包括顺序高速缓存存取请求的所有高速缓存存取请求确定偏移。然后利用该偏移更新当前指针。如果顺序指示符SI被输出,那么当前指针就简单增加。然后查找电路190根据数据存贮器的大小和底部指针的位置确定被更新的当前指针是否在由微标签100当前覆盖的区域内。如果确定为是,那么查找电路从由更新的当前指针指向的微标签100中存取一个值,且如果其被标记为有效则选择在高速缓存查找中待激活的路。然后多路复用器197在A处从所选择的高速缓存的路中输出存储的值,且其由预取单元检索并发送给队列。
如果标记为无效,那么更新电路195在标签RAM198中启动标签查找以便按常规方式根据标签确定存取请求存储在哪一路中,并且由标签查找激活适当的路。然后多路复用器197在A处从所选择的高速缓存的路中输出存储的值,且其由预取单元检索并发送给队列。对应于此地址的微标签存储单元随后被更新电路按该值更新并且被标记为有效。
在查找电路190确定当前指针在由微标签100覆盖的区域之外的情况下,那么更新电路195通过将底部指针增加偏移量来更新该微标签100以使被覆盖的区域包括当前指针。应当注意,被确定的该偏移是有符号(signed)的值,以使其可以在任一方向移动指针。关于后面的附图给出了如何随后更新微标签100以及如何移动底部指针的细节。
高速缓存140还连接至存储器110,这样如果在高速缓存响应于高速缓存存取请求中存在缺失(miss),那么能够以对适当的地址的存储器存取来更新高速缓存中的线。
图6更详细地示出了偏移确定电路180。在此电路中,接收高速缓存存取请求和可能的顺序指示符。如果没有接收到顺序指示符,那么将当前存取请求的虚拟地址的适当的位(在这种情况下是位5到7)与先前的存取请求进行比较,且从该比较中产生偏移值并以该量来更新当前指针。如果接收到顺序指示符,那么简单地增加偏移而不用执行比较。然后通过更新电路190将更新的当前指针的值与底部指针和数据存贮器的大小相比较,来确定其是否在区域内。如果其不在由微标签覆盖的区域内,那么更新电路190将底部指针移动该偏移并使现在处于所移动的区域外的存储单元地址无效。应当注意,只是需要更新底部指针以使当前指针位于感兴趣的区域内。这将以偏移来更新其而起作用。可替换地,其可能被更新成与当前指针相同的值,或用不同的方式。
图7详细示出了如何执行这种更新和无效。在图7a中微标签100被示为具有用于存储条目的位置0、1、2、3、4、5、6、7的环形缓冲器(circular buffer)。现在底部指针指向条目号2。示出了存储器110的相应部分以使由该区域覆盖的顺序地址被示出为对应于环形缓冲器的存储单元。接收到新的高速缓存存取请求(n),并且其与先前的(n-1)的值相比具有5的偏移。将当前指针cpn-1更新5涉及其在环形缓冲器中通过了(pass)底部指针BPn-1并移出由存储器110覆盖的区域。图7b示出了为该新的请求而更新的微标签100。在环形缓冲器(即微标签100)中CPn停止于在条目3处的点。该数据存贮器查找电路根据该偏移值、底部指针的位置和微标签的大小确定当前指针现在处于区域之外,并且之后更新电路将底部指针更新了偏移量以使底部指针现在指向环形缓冲器(即微标签100)内的存储单元7。然后更新电路使不再存储有效值的环形数据存贮器内的那些位置无效。这些位置是目前处于先前覆盖的区域之外的位置,其是位于以前的底部指针(BPn-1)+n和以前的当前指针(CPn-1)之间的那些位置。然后该更新电路执行标签查找以确定存储了当前被请求的值的路。该结果用于激活所请求的路并且也用于更新微标签100中由当前指针CPn指向的位置。正如可以看到的,因为它们在由微标签100覆盖的区域内不再存储值,存储单元2、3、4、5和6被无效。尽管在无效之后存储单元3被以标签RAM查找的结果而更新并且之后标记为有效。存储单元1、0和7仍有效并且不会被这样无效掉。应当注意到无论区域移动了长的路以使所有的位置位于区域之外,还是仅移动了短的路以使仅一些位置位于区域之外,用于计算哪些位置在区域之外的算法是相同的。
图8详细地示出了偏移确定电路180和更新电路195。还示出了在未找到有效的微标签条目时在其中执行查找的标签RAM198。正如可以看到的,据此接收高速缓存存取请求并确定偏移。然后该偏移连同对数据存贮器大小和底部指针位置的认识一起用于确定当前指针是否在微标签内。如果为是,那么其被更新并且如果其为有效存储的则从微标签中读出该路。如果不是有效存储,那么路的选择由标签RAM查看来确定并且更新微标签100。如果当前指针移动到该区域外,那么更新底部指针并更新微标签以与其随后覆盖的新区域相对应。
图9示出了例示根据本发明的实施例的方法的步骤的流程图。在第一步中接收高速缓存存取请求。由先前的高速缓存存取请求和接收到的高速缓存存取请求确定偏移,并以该偏移来更新当前指针。然后关于当前指针是否在由微标签覆盖的地址范围内执行确定。如果为是,那么读出由当前指针指向的微标签条目,并且如果其是有效的那么选择由该值表示的高速缓存路且读出在高速缓冲存储器线中的值。如果不是有效的那么执行标签RAMTAG RAM查找以确定高速缓存路,然后选择该高速缓存路并更新微标签条目。
如果确定当前指针不在地址范围内,那么将底部指针更新偏移量。在这之后在微标签中在以前的底部指针(BPn-1)+n和以前的当前指针(CPn-1)之间的所有条目都被无效掉。然后执行标签RAM查找并确定存取哪个高速缓存路。之后选择这个高速缓存路并以这个值更新相应的微标签条目及标记其为有效。
尽管在此已经参考附图详细描述了本发明的说明性实施例,但应当理解本发明不限于那些精确的实施例,并且本领域技术人员可以在其中实现各种改变和修改而不背离由所附权利请求限定的本发明的范围。
Claims (20)
1.一种数据处理装置,所述数据处理装置包括:
(i)至少一个用于处理数据的数据处理器;
(ii)用于存储待由所述数据处理器处理的多个值的组相联高速缓存,每个值由存储所述值的存储器内的存储器单元的地址来标识,所述组相联高速缓存分成多个高速缓存路;
(iii)包括用于存储多个标识符的多个存储单元的数据存贮器,每个标识符标识存储来自所述组相联高速缓存的相应值的高速缓存路,并且每个都具有与之相联的有效指示符,所述多个标识符对应于多个值,所述多个值是存储在连续地址中的值以使所述数据存贮器存储用于存储在所述存储器的区域内的值的标识符;
(iv)用于存储指向最近访问的所述数据存贮器中的存储单元的当前指针的当前指针存储器;
(v)偏移确定电路,响应于高速缓存存取请求以确定所述高速缓存存取请求对紧接在先的高速缓存存取请求的地址的偏移,所述偏移确定电路适于以所述偏移量更新所述当前指针;以及
(vi)数据存贮器查找电路,用于根据所述数据存贮器的大小和所述偏移确定更新的所述当前指针是否指向所述区域内的地址,并且如果是,所述数据处理器适于根据由所述当前指针指向的存储的所述标识符来标识所述高速缓存路,条件是其具有与其相关联的有效指示符。
2.根据权利要求1所述的数据处理装置,所述数据处理装置还包括:
(i)区域定位指针存贮器,用于存储指向与连续地址的所述区域内的预定位置相对应的所述数据存贮器中的条目的区域定位指针;其中
(ii)所述数据存贮器查找电路适于根据所述当前指针相对于所述区域定位指针的值来确定更新的所述当前指针是否指向所述区域内的地址。
3.根据权利要求2所述的数据处理装置,其中所述区域定位指针指向所述数据存贮器中与具有最低地址的值相对应的存储单元。
4.根据权利要求2所述的数据处理装置,其中所述数据存贮器查找电路包括比较器,该比较器用于将更新的所述当前指针和所述区域定位指针相比较,并用于响应所述比较来确定更新的所述当前指针是否位于所述区域之外。
5.根据权利要求2所述的数据处理装置,所述数据处理装置还包括数据存贮器更新电路,所述数据存贮器更新电路响应于对来自所述数据存贮器查找电路的更新的所述当前指针位于所述区域之外的指示的接收以便以所述偏移量更新所述区域定位指针使得将所述区域移动了所述偏移量,并且以便使与不再在所述区域内的地址相对应的所述存储单元无效。
6.根据权利要求5所述的数据处理装置,其中所述数据存贮器更新电路还响应于对来自所述数据存贮器查找电路的更新的所述当前指针位于所述区域之外的指示以便启动标签RAM查找以定位存储所述高速缓存存取请求的所述值的路,并且以便以标识所述路的标识符来更新由更新的所述当前指针指向的所述数据存贮器中的所述条目。
7.根据权利要求2所述的数据处理装置,其中所述数据存贮器包括环形缓冲器。
8.根据权利要求7所述的数据处理装置,其中所述指针包括具有大量的位的计数器,使得它们可以指向所述数据存贮器内的任一所述存储单元。
9.根据权利要求1所述的数据处理装置,其中所述值包括由所述数据处理器处理的数据项。
10.根据权利要求1所述的数据处理装置,其中所述值包括由所述数据处理器处理的数据项。
11.根据权利要求1所述的数据处理装置,其中所述偏移确定电路包括比较器,该比较器用于将所述高速缓存存取请求的虚拟地址的预定的位与所述紧接在先的高速缓存存取请求的虚拟地址的所述预定的位相比较。
12.根据权利要求1所述的数据处理装置,包括与所述组相联高速缓存相关联的预取单元,所述预取单元响应于检测到待取出的后继指令位于连续地址中以输出顺序指示符,所述偏移确定电路响应于所述顺序指示符以增加所述当前指针。
13.根据权利要求1所述的数据处理装置,其中响应于存取所述数据存贮器和检测到无效的指示符,所述数据处理装置通过执行标签RAM查找来更新所述存储单元和所述有效位。
14.根据权利要求1所述的数据处理装置,其中所述数据存贮器包括微标签。
15.一种确定对组相联高速缓存的高速缓存存取请求将存取多个高速缓存路中的哪一个的方法,包括步骤:
(i)响应于高速缓存存取请求,确定所述高速缓存存取请求对紧接在先的高速缓存存取请求的地址的偏移;
(ii)以所述偏移量来更新指向最近访问的数据存贮器中的存储单元的当前指针,所述数据存贮器包括用于存储多个标识符的多个存储单元,每个标识符标识存储来自所述组相联高速缓存的相应值的高速缓存路,并且每个都具有与之相联的有效指示符,所述多个标识符对应于多个值,所述多个值是存储在连续地址中的值以使所述数据存贮器存储用于存储在所述存储器的区域中的值的标识符;以及
(iii)根据所述数据存贮器的大小和所述偏移量来确定更新的所述当前指针是否指向所述区域内的地址;以及
(iv)如果为是,则根据由所述当前指针指向的存储的所述标识符来标识所述高速缓存路,条件是其具有与其相关联的有效指示符。
16.根据权利要求15所述的方法,其中确定更新的所述当前指针是否指向所述区域内的地址的所述步骤包括:比较区域定位指针和更新的所述当前指针的相对位置,该区域定位指针指向与连续地址的所述区域内的预定位置相对应的所述数据存贮器中的条目。
17.根据权利要求16所述的方法,其中所述方法包括进一步的步骤:响应于确定更新的所述当前指针位于所述区域之外的所述确定步骤,以所述偏移量更新所述区域定位指针,使得将所述区域移动了所述偏移量并且使与不再在所述区域内的地址相对应的所述存储单元无效。
18.根据权利要求17所述的方法,所述方法包括进一步的步骤:在使与不再在所述区域内的地址相对应的所述存储单元无效之后,启动标签RAM查找以定位存储所述高速缓存存取请求的所述值的路,并且以标识所述路的标识符来更新由更新的所述当前指针指向的所述数据存贮器中的所述条目。
19.根据权利要求15所述的方法,其中确定所述高速缓存存取请求对紧接在先的高速缓存存取请求的地址的偏移的所述步骤包括:将所述高速缓存存取请求的虚拟地址的预定的位与所述紧接在先的高速缓存存取请求的虚拟地址的所述预定的位相比较。
20.根据权利要求15所述的方法,其中确定所述高速缓存存取请求对紧接在先的高速缓存存取请求的地址的偏移的所述步骤包括:检测由预取单元输出的顺序指示符并且指示待取出的后继指令位于连续地址中,更新所述当前指针的所述步骤包括响应于所述顺序指示符的检测而增加当前指针。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0804597.3 | 2008-03-12 | ||
GB0804597.3A GB2458295B (en) | 2008-03-12 | 2008-03-12 | Cache accessing using a micro tag |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101533371A true CN101533371A (zh) | 2009-09-16 |
CN101533371B CN101533371B (zh) | 2012-12-12 |
Family
ID=39327987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101346237A Active CN101533371B (zh) | 2008-03-12 | 2009-03-12 | 使用微标签进行高速缓存存取的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8151055B2 (zh) |
JP (1) | JP5394780B2 (zh) |
CN (1) | CN101533371B (zh) |
GB (1) | GB2458295B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
CN103019959A (zh) * | 2012-11-21 | 2013-04-03 | 中国科学院声学研究所 | 一种指令高速缓冲存储器 |
CN103186474A (zh) * | 2011-12-28 | 2013-07-03 | 瑞昱半导体股份有限公司 | 对处理器的高速缓存进行清除的方法以及该处理器 |
CN104572499A (zh) * | 2014-12-30 | 2015-04-29 | 杭州中天微系统有限公司 | 一种数据高速缓存的访问装置 |
CN104657285A (zh) * | 2013-11-16 | 2015-05-27 | 上海芯豪微电子有限公司 | 一种数据缓存系统和方法 |
CN105765660A (zh) * | 2013-10-24 | 2016-07-13 | 高通股份有限公司 | 拆分用于电阻式存储器高速缓存的写操作 |
CN106126441A (zh) * | 2015-05-04 | 2016-11-16 | Arm 有限公司 | 追踪缓存的内容 |
CN108027766A (zh) * | 2015-09-19 | 2018-05-11 | 微软技术许可有限责任公司 | 预取指令块 |
CN108701093A (zh) * | 2016-02-22 | 2018-10-23 | 高通股份有限公司 | 使用动态随机存取存储器(dram)高速缓存指示符高速缓存存储器以提供可扩展dram高速缓存管理 |
CN108780425A (zh) * | 2016-03-10 | 2018-11-09 | 微软技术许可有限责任公司 | 受保护指针 |
CN111433742A (zh) * | 2018-01-22 | 2020-07-17 | Arm有限公司 | 多保护标签设置指令 |
CN111819543A (zh) * | 2018-03-20 | 2020-10-23 | Arm有限公司 | 用于标签保护的存储器系统的随机标签设定指令 |
CN113268384A (zh) * | 2021-04-30 | 2021-08-17 | 瑞芯微电子股份有限公司 | 一种标记空间异常检测方法及存储介质 |
US11762566B2 (en) | 2018-01-22 | 2023-09-19 | Arm Limited | Programmable mapping of guard tag storage locations |
CN116897342A (zh) * | 2021-03-10 | 2023-10-17 | 美光科技公司 | 存储器装置的偏压控制 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069684B2 (en) * | 2012-07-16 | 2015-06-30 | Nvidia Corporation | System, method, and computer program product for invalidatng cache lines |
US9830097B2 (en) * | 2016-02-12 | 2017-11-28 | Netapp, Inc. | Application-specific chunk-aligned prefetch for sequential workloads |
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
CN109240944B (zh) * | 2018-08-16 | 2021-02-19 | 上海天数智芯半导体有限公司 | 一种基于可变长缓存行的数据读写方法 |
GB2587428B (en) * | 2019-09-30 | 2021-12-22 | Advanced Risc Mach Ltd | A ring buffer with multiple head pointers |
US11176051B2 (en) * | 2020-03-13 | 2021-11-16 | Shenzhen GOODIX Technology Co., Ltd. | Multi-way cache memory access |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4682281A (en) * | 1983-08-30 | 1987-07-21 | Amdahl Corporation | Data storage unit employing translation lookaside buffer pointer |
US4977498A (en) * | 1988-04-01 | 1990-12-11 | Digital Equipment Corporation | Data processing system having a data memory interlock coherency scheme |
JPH0769811B2 (ja) * | 1988-12-21 | 1995-07-31 | 松下電器産業株式会社 | データ処理装置 |
GB2255211B (en) * | 1991-04-25 | 1995-05-17 | Intel Corp | LRU pointer updating in a controller for two-way set associative cache |
GB2285154B (en) * | 1993-12-24 | 1998-04-01 | Advanced Risc Mach Ltd | Branch cache |
US5822574A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same |
US6122709A (en) * | 1997-12-19 | 2000-09-19 | Sun Microsystems, Inc. | Cache with reduced tag information storage |
US6374342B1 (en) * | 2000-01-31 | 2002-04-16 | Kabushiki Kaisha Toshiba | Translation lookaside buffer match detection using carry of lower side bit string of address addition |
US6854033B2 (en) * | 2001-06-29 | 2005-02-08 | Intel Corporation | Using linked list for caches with variable length data |
US7290089B2 (en) * | 2002-10-15 | 2007-10-30 | Stmicroelectronics, Inc. | Executing cache instructions in an increased latency mode |
TWI246658B (en) * | 2003-04-25 | 2006-01-01 | Ip First Llc | Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status |
US7117290B2 (en) * | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
US20060090034A1 (en) * | 2004-10-22 | 2006-04-27 | Fujitsu Limited | System and method for providing a way memoization in a processing environment |
-
2008
- 2008-03-12 GB GB0804597.3A patent/GB2458295B/en active Active
-
2009
- 2009-02-25 US US12/379,615 patent/US8151055B2/en active Active
- 2009-03-11 JP JP2009058102A patent/JP5394780B2/ja active Active
- 2009-03-12 CN CN2009101346237A patent/CN101533371B/zh active Active
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186474B (zh) * | 2011-12-28 | 2016-09-07 | 瑞昱半导体股份有限公司 | 对处理器的高速缓存进行清除的方法以及该处理器 |
CN103186474A (zh) * | 2011-12-28 | 2013-07-03 | 瑞昱半导体股份有限公司 | 对处理器的高速缓存进行清除的方法以及该处理器 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
WO2013163956A1 (zh) * | 2012-05-02 | 2013-11-07 | 华为技术有限公司 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
US9880937B2 (en) | 2012-05-02 | 2018-01-30 | Huawei Technologies Co., Ltd. | Dynamic set associative cache apparatus for processor and access method thereof |
CN103019959B (zh) * | 2012-11-21 | 2016-05-04 | 中国科学院声学研究所 | 一种指令高速缓冲存储器 |
CN103019959A (zh) * | 2012-11-21 | 2013-04-03 | 中国科学院声学研究所 | 一种指令高速缓冲存储器 |
CN105765660B (zh) * | 2013-10-24 | 2019-03-12 | 高通股份有限公司 | 拆分用于电阻式存储器高速缓存的写操作的方法和装置 |
CN105765660A (zh) * | 2013-10-24 | 2016-07-13 | 高通股份有限公司 | 拆分用于电阻式存储器高速缓存的写操作 |
CN104657285A (zh) * | 2013-11-16 | 2015-05-27 | 上海芯豪微电子有限公司 | 一种数据缓存系统和方法 |
CN104657285B (zh) * | 2013-11-16 | 2020-05-05 | 上海芯豪微电子有限公司 | 一种数据缓存系统和方法 |
CN104572499B (zh) * | 2014-12-30 | 2017-07-11 | 杭州中天微系统有限公司 | 一种数据高速缓存的访问装置 |
CN104572499A (zh) * | 2014-12-30 | 2015-04-29 | 杭州中天微系统有限公司 | 一种数据高速缓存的访问装置 |
CN106126441A (zh) * | 2015-05-04 | 2016-11-16 | Arm 有限公司 | 追踪缓存的内容 |
CN106126441B (zh) * | 2015-05-04 | 2021-10-01 | Arm 有限公司 | 缓存、缓存数据项的方法 |
CN108027766A (zh) * | 2015-09-19 | 2018-05-11 | 微软技术许可有限责任公司 | 预取指令块 |
CN108027766B (zh) * | 2015-09-19 | 2022-04-29 | 微软技术许可有限责任公司 | 预取指令块 |
CN108701093A (zh) * | 2016-02-22 | 2018-10-23 | 高通股份有限公司 | 使用动态随机存取存储器(dram)高速缓存指示符高速缓存存储器以提供可扩展dram高速缓存管理 |
CN108780425A (zh) * | 2016-03-10 | 2018-11-09 | 微软技术许可有限责任公司 | 受保护指针 |
CN111433742A (zh) * | 2018-01-22 | 2020-07-17 | Arm有限公司 | 多保护标签设置指令 |
CN111433742B (zh) * | 2018-01-22 | 2023-08-29 | Arm有限公司 | 用于数据处理的装置和方法、非暂态存储介质 |
US11762566B2 (en) | 2018-01-22 | 2023-09-19 | Arm Limited | Programmable mapping of guard tag storage locations |
CN111819543A (zh) * | 2018-03-20 | 2020-10-23 | Arm有限公司 | 用于标签保护的存储器系统的随机标签设定指令 |
CN116897342A (zh) * | 2021-03-10 | 2023-10-17 | 美光科技公司 | 存储器装置的偏压控制 |
CN113268384A (zh) * | 2021-04-30 | 2021-08-17 | 瑞芯微电子股份有限公司 | 一种标记空间异常检测方法及存储介质 |
CN113268384B (zh) * | 2021-04-30 | 2022-05-13 | 瑞芯微电子股份有限公司 | 一种标记空间异常检测方法及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
GB2458295A8 (en) | 2009-10-21 |
GB2458295A (en) | 2009-09-16 |
JP5394780B2 (ja) | 2014-01-22 |
JP2009217827A (ja) | 2009-09-24 |
US20090235029A1 (en) | 2009-09-17 |
GB2458295B (en) | 2012-01-11 |
US8151055B2 (en) | 2012-04-03 |
GB0804597D0 (en) | 2008-04-16 |
CN101533371B (zh) | 2012-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101533371B (zh) | 使用微标签进行高速缓存存取的装置和方法 | |
JP3618385B2 (ja) | データをバッファリングする方法およびそのシステム | |
KR960001946B1 (ko) | 우선 변환 참조버퍼 | |
CN102498477B (zh) | Tlb预取 | |
US6490658B1 (en) | Data prefetch technique using prefetch cache, micro-TLB, and history file | |
CN100390756C (zh) | 一种将储存数据重新导向的虚拟集合高速缓存 | |
EP1244970B1 (en) | Cache which provides partial tags from non-predicted ways to direct search if way prediction misses | |
KR100804285B1 (ko) | 변환 색인 버퍼 플러시 필터 | |
CA2021272C (en) | Associative map with least recently used (lru) replacement | |
EP2118753B1 (en) | Address translation method and apparatus | |
CN101371224B (zh) | 高效存储器层级管理的方法及设备 | |
US10380030B2 (en) | Caching of virtual to physical address translations | |
US10083126B2 (en) | Apparatus and method for avoiding conflicting entries in a storage structure | |
US6175898B1 (en) | Method for prefetching data using a micro-TLB | |
CN102662860A (zh) | 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法 | |
CN102792285A (zh) | 层级转换表控制 | |
WO2003001384A3 (en) | Fast and accurate cache way selection | |
US6453387B1 (en) | Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy | |
EP0321793A2 (en) | Apparatus for forcing a reload from main memory upon cache memory error | |
US9086986B2 (en) | Detection of conflicts between transactions and page shootdowns | |
WO2018229699A1 (en) | Cache structure using a logical directory | |
CN106168929B (zh) | 微处理器、用于预取数据的方法及非暂态计算机用介质 | |
GB2297398A (en) | Accessing cache memories | |
CN101930344B (zh) | 确定链接数据储存器中存储和重写的项目的数据存储协议 | |
US20190278709A1 (en) | Prefetching using offset data to access a pointer within a current data element for use in prefetching a subsequent data element |
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 |