CN101689146B - 分层的高速缓存标签架构 - Google Patents
分层的高速缓存标签架构 Download PDFInfo
- Publication number
- CN101689146B CN101689146B CN2008800222813A CN200880022281A CN101689146B CN 101689146 B CN101689146 B CN 101689146B CN 2008800222813 A CN2008800222813 A CN 2008800222813A CN 200880022281 A CN200880022281 A CN 200880022281A CN 101689146 B CN101689146 B CN 101689146B
- Authority
- CN
- China
- Prior art keywords
- tag
- cache
- speed cache
- speed
- match
- 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/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/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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
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
发明领域
本发明涉及高速缓存标签存储。更具体地,本发明涉及为多个高速缓存标签存储创建标签存储的分层架构。
术语汇总
下面是本文使用的术语的简单汇总。所给出的定义可适用于说明书和权利要求书,除非该术语明显以另一方式使用。
标签存储结构:存储针对高速缓存存储器中每个表目的标签和其它关联信息(例如状态信息、LRU信息、ECC信息)的存储结构。
高速缓存标签的高速缓存:存储存储在标签存储结构中的子集标签的高速缓存。
索引:存储器请求中指向标签存储结构中的一组特定标签的地址部分。
标签:存储器请求中指向对特定索引部分来说唯一的特定存储器地址位置的地址部分。
发明背景
由于存储器相对于处理器内核速度的相对慢的速度,所有类型的处理器已变得更依赖于高速缓存。近十年来已经采用了多种高速缓存架构。一种常见的缓存架构是一组联合高速缓存。高速缓存架构具有存储来自系统存储器位置的数据的内存和存储多组标签的标签存储结构。
在标准高速缓存分层架构中,通常高速缓存的位置越靠近处理器内核,高速缓存就变得越小和越快。最小和最快的高速缓存一般位于处理器内核硅芯片上。另一方面,一个或多个最大高速缓存(LLC或末级高速缓存)有时于处理器内核芯片外地设置。访问位于芯片外高速缓存的数据相对于芯片内集成的高速缓存一般产生附加的延时,因为将数据传送至处理器内核花费较长的时间。
每个高速缓存具有标签存储结构。如果处理器要求来自某一存储器位置的数据,则通过将存储器位置地址和高速缓存的标签存储结构比较而判断数据是否存储在给定的高速缓存中。如果标签存储结构是芯片外的,则作出标签查找的延时将大于如果标签存储结构是芯片内集成的。因此,由于占用了有价值的空间,因此芯片内集成的标签存储结构增加了处理器芯片的成本,但是它们通过减少对芯片外高速缓存的标签查找延时而帮助提高执行速度。
在许多实施例中,高速缓存通过高速缓存管线(例如64字节)存储数据。在其它实施例中,高速缓存通过一些其它的可量度单元存储数据。在高速缓存通过高速缓存管线存储数据的示例性实施例中,标签存储结构意味着由存储在高速缓存中的高速缓存管线表征的特定存储器位置。另外,标签存储结构还存储状态信息以标识所存储的高速缓存管线是否已被修改、是否有效等。状态信息的一个示例是有许多高速缓存利用的MESI(修改的、排他的、共享的或无效的)信息。标签存储结构还存储高速缓存替换信息以在需要替换已有高速缓存管线的情形下帮助确定驱逐哪条高速缓存管线。LRU(最近最少使用)位是所采用的常见技术并要求保持关于高速缓存管线相对寿命的信息(相对于其它已存储的高速缓存管线),尽管存在并可利用其它替换策略技术。标签存储结构还可对每组标签存储纠错信息(ECC),尽管ECC信息不是必需的。LRU信息和ECC信息只需要对每个组进行存储,而标签信息和状态信息需要对每个标签(即每个路径)进行存储。
例如,40位地址空间中具有64字节高速缓存管线的256兆字节(MB)4路径组联合高速缓存需要9.5MB的标签存储空间:
(14b标签+2b状态)×4M标签+(8b ECC+4b LRU)/组×1M路径=9.5MB
如果标签存储结构位于处理器芯片上,则9.5M量的存储空间会显著增加制造处理器的成本负担。存储在门阵列中的9.5M的信息占用了处理器的硅芯片上大量的空间。为了减小处理器芯片的成本负担并仍然允许缓存和未命中的判断,已引入并偶尔使用部分标签存储结构。部分标签仅存储一部分标签信息(例如8位而不是标签的全部14位)以节省芯片空间。优化该架构以快速判断高速缓存未命中。但是,为了确定高速缓存命中,仍然需要访问来自主存储器的整个标签。因此,如果存在因部分标签查找的高速缓存未命中,则知道应当从系统存储器检索数据;然而,在高速缓存命中的情况下,仍然需要访问来自存储有关全部标签的信息的标签存储结构的实际标签。
附图简述
本发明通过示例表述而不受附图的限制,在附图中相同附图标记表示相同部件,其中:
图1示出实现高速缓存标签的高速缓存的装置的一个实施例。
图2示出标签地址结构以及在N路径组的联合配置中的高速缓存标签的高速缓存组结构和高速缓存标签的高速缓存中的各标签地址表目的一个实施例。
图3是利用高速缓存标签的高速缓存以存储与高速缓存存储器关联的标签组的子集的过程的一个实施例的流程图。
图4示出利用高速缓存标签的高速缓存的过程的一个实施例的流程图。
发明详述
描述实现高速缓存标签的高速缓存的装置、系统和方法的实施例。在下面的说明中,对多个特定细节予以展开。然而要理解,这些实施例可不依赖这些具体细节地投入实践。在其它例子中,不对公知的部件、规格和协议进行说明以避免使本发明混淆。
图1示出用于实现高速缓存标签的高速缓存的装置和系统的一个实施例。在许多实施例中,一个或多个处理器内核104位于微处理器硅芯片102(芯片1)上。在其它多处理器实施例中,可存在耦合在一起的多个处理器芯片,每个芯片包括一个或多个内核(多芯片上的处理器内核的架构在图1中未示出)。回来参见图1,处理器内核耦合于互连结构100。在不同实施例中,处理器内核104可以是设计成用于任何形式的个人计算机、手持设备、服务器、工作站或当前可用的其它计算设备的任何类型的中央处理单元(CPU)。为了便于说明而示出一条互连结构100以不混淆本发明。在实践中,这一条互连结构可包括将不同独立设备耦合在一起的多条互连结构。另外,在许多实施例中,更多的设备可耦合于未示出的互连结构(例如芯片组)。
处理器内核104通过互连结构100耦合于物理上与处理器内核104位于同一芯片内的一个或多个芯片内集成的高速缓存106。
在许多实施例中,高速缓存具有与之关联的标签存储结构114,该结构114存储所有高速缓存存储器位置的标签。在一些实施例中,标签存储结构114位于与处理器内核104分离的硅芯片(芯片2)112上。在许多实施例中,标签存储结构114通过互连结构100耦合于一个或多个芯片外(非处理器芯片)高速缓存116并位于与芯片外高速缓存116相同的芯片上。
高速缓存标签的高速缓存108将芯片外高速缓存标签的子集存储在处理器芯片102上。具体地说,尽管标签存储结构114存储全部索引值和每个索引值的关联标签组,然而高速缓存标签的高速缓存108另一方面不存储全部可能的索引值。相反,为了节省存储空间,高速缓存标签的高速缓存108存储标签的一个子集,该子集存储在标签存储结构114中。在大多数实施例中,在任何给定时间不是全部的索引位置在高速缓存标签的高速缓存108中被表征。
在一些实施例中,对于存储在高速缓存标签的高速缓存108和标签存储结构114中的标签之间的每个匹配的标签来说,需要来自一个组的所有路径的信息。在一个实施例中,高速缓存标签的高速缓存108存储少于所有路径的标签。在一个实施例中,一个组的存储要求是9.5字节,其包括标签信息、状态信息、驱逐/高速缓存替换策略信息(LRU)以及ECC信息(如果使用ECC的话)。有关标签、状态、LRU信息和ECC分量的具体细节在背景部分中更为详细地作了说明。在一些实施例中,高速缓存标签的高速缓存利用不同于LRU策略的替换策略。具体地说,可将下面的信息存储在高速缓存标签组的高速缓存中:
(14位标签+2位状态)×4路径+4位LRU+8位ECC=9.5字节
为了在高速缓存标签的高速缓存中存储2K(2^11)个组,存储要求则为19K(2K×9.5B)。高速缓存标签的高速缓存中的表目的细节在下文中参照图2予以说明。因此,一实施例的高速缓存标签的高速缓存可位于处理器芯片上以执行最近最经常使用的标签的查找并且该芯片的负担为19K。芯片内部集成的19K存储大小的成本具有远小于完整标签存储结构的9.5M大小的存储负担。
在许多实施例中,高速缓存标签的高速缓存108本身为N路径组的联合高速缓存。另外,在许多实施例中,高速缓存标签的高速缓存108存储最近最近一次访问的标签。高速缓存标签的高速缓存108耦合于互连结构100。在一些实施例中,控制对高速缓存标签的高速缓存108的访问的控制器110确定何时存储器请求与当前位于高速缓存标签的高速缓存108中的一个标签匹配并将这种情况反馈给处理器。在不同实施例中,存储器请求可从系统中的多个器件中的一个发起,例如处理器内核中的一个或总线主I/O器件等可能的存储器请求发起者。
每个存储器请求(例如存储器访问)包括系统存储器中的特定位置的地址。标签存储结构114包括与芯片外高速缓存存储器116中的特定位置关联的全部标签组。
因此,当由控制器110接收存储器请求时,控制器110分析存储器请求地址中的索引和标签字段并随后检查以查看与特定存储器位置关联的标签的索引是否被存储在高速缓存标签的高速缓存108中。如果存储了原始索引,则控制器110接下来检查与存储器位置关联的原始标签是否在高速缓存标签的高速缓存108中以其中一条路径存储在原始索引位置。
如果原始标签位于与108和原始索引位置关联的表目中,其结果是该存储器请求是高速缓存标签的高速缓存108标签命中(即高速缓存命中)。如果原始标签未存储在标签存储结构114中的索引位置,其结果是存储器请求是高速缓存标签的高速缓存108标签未命中。如果来自一个组的所有路径的标签被高速缓存,这也是高速缓存未命中。
另一方面,如果控制器110在最初查找中未发现存储在高速缓存标签的高速缓存108中的原始索引,其结果是存储器请求为高速缓存标签的高速缓存108的索引未命中。在这种情形中,控制器110必须取出来自存储器请求的原始索引值并通过替换在高速缓存标签的高速缓存的高速缓存108中当前存储的索引而将其插入高速缓存标签的高速缓存108中。在一些实施例中,当CoCT本身为联合的高速缓存时,替换策略是最近最少使用策略,其中替换最近最少使用策略值。在其它实施例中,其它标准替换策略方案可用来替换高速缓存标签的高速缓存108中的索引值。
一旦已将新的索引值插入高速缓存标签的高速缓存108中,控制器110需要确定与存储器请求关联的特定标签是否当前存储在标签存储结构114的索引位置。如果是,其结果是标签命中标签存储结构114且控制器110需要针对存储在标签存储结构114中索引位置的全部路径将标签信息输入到高速缓存标签的高速缓存108中的新索引位置。
否则,结果就是标签未命中标签存储结构114且控制器110需要开始用与存储器请求关联的标签(在标签存储结构114中的索引位置处的路径之一)替换最近最少使用的标签。这种替换将位于来自系统存储器的存储器请求的地址处的数据输入到高速缓存存储器并将来自存储器请求的原始标签输入到标签存储结构114。一旦将标签从系统存储器输入到标签存储结构,则在一些实施例中,控制器110可开始用当前存储在标签存储结构114中的来自索引值的每条路径的标签替换高速缓存标签的高速缓存108中(索引值处的)全部路径。在其它实施例中,所述替换操作替换高速缓存标签的高速缓存108中全部路径中的一些。
在一些实施例中,芯片外存储器访问大小与高速缓存标签的高速缓存的表目大小不一样。如果芯片外存储器访问大小小于高速缓存标签的高速缓存的表目大小,则控制器可发送多个请求以取数据。另一方面,如果芯片外存储器访问大小大于高速缓存标签的高速缓存的表目大小,控制器110可能具有不需要的额外数据。在这种情形中,在一些实施例中控制器110可丢弃多余的数据。
在其它实施例中,控制器110可具有关联的小存储器(未示出),该小存储器允许控制器110智能地预取多余的数据并将其存储在关联的存储器中以供将来可能的使用。例如,如果原始高速缓存标签大小为4字节,而原始高速缓存标签联合体为8个路径,则高速缓存标签的高速缓存108的表目需要32字节的大小以存储所有关联的路径(4字节×8路径=32字节的标签组表目)。现在,假设从标签存储结构114获得信息的取命令一次接收64字节。在本例中,控制器110取整个存储高速缓存标签的高速缓存的组表目所需的32个字节以及毗邻数据的附加32个字节。在利用关联的小存储器的实施例中,所取的毗邻32字节的数据可存储在控制器110上或附近的关联小存储器中以充当小预取缓冲器。因为在某些情形下要对毗邻的存储器位置作出许多后续的访问,可能在下一次处理或不久的将来对毗邻的32个字节作出请求。因此,毗邻的小存储器允许高速缓存标签的高速缓存108的将来操作智能预取标签组。
此外,关联的小存储器也可用作牺牲高速缓存。在牺牲高速缓存的实施例中,关联的小存储器可在之后再次访问这些标签中的一个或多个的情况下将最近一次驱逐的标签存储在高速缓存标签的高速缓存108中。
另外,控制器110可将取高速缓存标签的高速缓存108表目数据的多个请求组合成一个请求。例如,多个高速缓存标签的高速缓存108索引取指令可组合成一个取指令。
在一些可代替实施例中,除了高速缓存标签的高速缓存108还利用部分标签高速缓存118。部分标签高速缓存118,如上面在背景部分中描述的那样,不存储全部标签位,并因此只能以确定性而不是高速缓存命中来确定高速缓存未命中。另一方面,高速缓存标签的高速缓存可仅用确定性而不是高速缓存未命中来确定高速缓存命中。在前述利用部分标签高速缓存118和高速缓存标签的高速缓存108的可代替实施例中,可利用部分标签高速缓存118作出高速缓存未命中的快速确定并可利用高速缓存标签的高速缓存108作出页面命中的快速确定。在这些实施例中,控制器110可同时启动在部分标签高速缓存118中和高速缓存标签的高速缓存108中的查找。在部分标签高速缓存118确定页面未命中的情况下,来自高速缓存标签的高速缓存的信息将被丢弃。然而,在页面命中的情况下,所要求的标签可能在芯片内集成的高速缓存标签的高速缓存108中发现并省却芯片外访问延时惩罚。
在一些实施例中,高速缓存存储器是分区的存储器。在分区的高速缓存的实施例中,由于每个标签由多个高速缓存表目(例如高速缓存子块)共享,标签存储结构114中的总体标签存储需求减轻。
在这些分区的高速缓存的实施例中,由于对每个标签而言,与标签关联的每个潜在表目必须有状态信息(状态信息在背景部分和结合图2的讨论中予以说明),因此状态信息的存储需求增大。例如,如果标签为14位,在无分区的高速缓存中,每个区应当包含2位的状态信息。在8路经分区的高速缓存中,与每个标签关联有8个高速缓存表目,因此,每个标签需要包含2位×8或16位的状态信息。在该例中,状态信息占用比标签信息更多的空间。
为了减少经分区的高速缓存中的状态信息存储影响,一组公共状态信息模式将被存储在经分区的状态信息存储器120中。经分区的状态信息存储器120在许多实施例中可耦合于控制器110。在一个示例中,经分区的状态信息存储器120可存储多个16位的模式。在一些实施例中,多个模式可包括最常用模式并且可预先确定并永久存储在经分区的状态信息存储器120中。在其它实施例中,控制器110中的逻辑可动态地确定所利用的状态信息的最常用模式并相应地修正所存储的模式。
某些状态信息模式比其它状态信息模式更为常用。考虑存储器访问的常用线性度。如果数个存储器请求到达控制器110并且它们全部处于线性地址模式,状态信息位将表现出可能全“1”的非常可靠的修正模式。
因此例如,控制器不是对每个标签存储16位的状态,而是将状态信息模式的6位指针存储在经分区的状态信息存储器120中。6位指针允许将64种状态信息模式(2^6)存储在经分区的状态信息存储器120中。因此,如果该模式是常用的,控制器在本例中可存储带标签的6位指针而不是16位状态信息模式。
另外,如上所述,系统存储器122在许多实施例中耦合于芯片外高速缓存116以外的互连结构100。这允许在芯片内和芯片外的高速缓存均未存储目标数据(目标标签)的情况下访问来自存储器位置的数据。
图2示出标签地址结构以及N路组的联合配置中的高速缓存标签的高速缓存的组结构以及高速缓存标签的高速缓存中的各标签地址表目。
在许多实施例中,对40位地址空间的存储器访问请求可在40位地址字段中包含下列信息段:原始标签字段、原始索引字段和偏移字段。典型地,只有原始标签字段存储在标签存储结构中所存储的标签表目200中。使用在直接映射的(1路联合的)256M高速缓存中具有64字节高速缓存管线大小的40位寻址的示例,地址中的每个字段的大小的一个例子可包括12位的原始标签、22位的索引和6位的偏移。22位的索引字段是指向标签存储结构中特定索引位置的指针。12位原始标签可以是实际存储器地址的最高12位。标签的大小也可通过其联合体和高速缓存管线大小而确定。在背景部分描述的示例中,具有64字节高速缓存管线的256MB的4路组的联合高速缓存具有20位的索引字段和4M标签(2^20×4),其中每个标签的尺寸为14位。
图2还描述了标签组202的一个实施例。4路组联合高速缓存的标签组202存储四个标签。每路(路径0-3)存储一特定标签以及与关联于每个标签的高速缓存表目相关的特定量的状态信息。状态信息对每个标签而言是特定的,因此,每个标签必须关联有状态信息位。另外,标签组还必须包括高速缓存替换策略信息,例如LRU位或其它LRU类型信息,以通知控制器当必须存储新标签时四个标签中的哪一个已到期应被驱逐。最后,还可对每个组使用纠错码(ECC)位以使标签组的存储错误减至最小。例如,如上面提到的那样,一个组的存储需求可以是9.5字节,其包括下列信息:
(14位标签+2位状态)×4路+4位LRU+8位ECC=9.5字节
图2还描述了存储在高速缓存标签的高速缓存中的标签组表目(CoCT标签组表目204)的实施例。多组联合高速缓存一般对于许多类型的高速缓存配置是通行的。因此,在许多实施例中,高速缓存是多路组的联合高速缓存。因此,高速缓存标签的高速缓存中的表目必须对特定索引位置的高速缓存的所有路径存储标签信息(标签组206的内容/数据)。在这些实施例中,来自原始地址(例如上面讨论的40位地址配置)的索引字段(标签组208的寻址)指向存储在高速缓存标签的高速缓存中的一组标签的位置。在一些实施例中,高速缓存标签的高速缓存结构本身也以组联合的方式被存储。因此,原始索引字段被分成多个高速缓存标签的高速缓存的标签字段以及高速缓存标签的高速缓存的索引字段以允许取高速缓存标签的高速缓存中的一个组。例如,使用来自40位地址的20位原始索引字段,原始索引字段的最高12位可用作组联合的高速缓存标签的高速缓存中的标签字段。在该例中,原始索引字段的最低8位可用作高速缓存标签的高速缓存中的索引字段。
图3是利用高速缓存标签的高速缓存以存储与高速缓存存储器关联的标签组的子集的过程的一个实施例的流程图。该过程通过包含硬件(电路、专用逻辑等)、软件(例如运行在通用计算机系统或专用机上的软件)或两者结合的处理逻辑来执行。参见图3,过程开始于在标签存储结构中存储多个标签的处理逻辑(处理框300)。在许多实施例中,每个标签关联于存储在高速缓存存储器中的数据位置。完整的标签组针对高速缓存存储器中的全部数据位置被存储在存储结构中。高速缓存存储器可以是计算机系统或其它与计算机关联的设备上的任何通用或专用的高速缓存。在许多实施例中,高速缓存存储器位于具有一个或多个处理器内核的计算机系统中。在许多实施例中,高速缓存存储器位于与处理器内核分离的硅芯片上。另外,在许多实施例中,标签存储结构位于与高速缓存存储器相同的硅芯片上。
回到图3,处理逻辑接着将标签存储结构中存储的标签的一个子集存储在高速缓存标签的高速缓存中(处理框302)。在许多实施例中,高速缓存标签的高速缓存仅存储标签存储结构中存储的全部标签组的一小部分。例如,在上面结合背景和图1描述的示例性实施例中,对于具有64字节高速缓存管线的4路组的联合256MB高速缓存存储器来说,有4M(2^22)个标签存储在标签存储结构中。然而,高速缓存标签的高速缓存可存储其一部分,例如8K(2^13)个标签。在许多实施例中,高速缓存标签的高速缓存以最近使用的方式存储来自标签存储结构的标签,其中最近请求的存储器位置是其标签存储在高速缓存标签的高速缓存中的位置。
鉴于图3示出高速缓存标签的高速缓存关联于标签存储结构存储些什么的一般过程,图4示出利用高速缓存标签的高速缓存的过程的一个实施例的流程图。该过程由包含硬件(电路、专用逻辑等)、软件(例如运行在通用计算机系统或专用机上的软件)或两者结合的处理逻辑来执行。参见图4,该过程开始于处理逻辑接收存储器请求(处理框400)。存储器请求包括存储器位置的地址。在许多实施例中,地址的高位对应于存储器位置的标签而地址的中间位对应于标签存储结构中与高速缓存存储器关联的索引。有关标签字段和索引字段的具体细节已结合图2在上面作出了说明。
在不同实施例中,存储器请求可从系统中多个设备中的一个发起,例如多个处理器内核之一或总线主I/O设备等其它可能的存储器请求发起者。存储器请求最终被过滤至控制高速缓存标签的高速缓存(图4中的CoCT)的控制器。随后控制器中的处理逻辑解析存储器请求地址之外的原始索引值和原始标签值(处理框402)。
一旦已知存储器请求中的原始索引和原始标签,则处理逻辑确定原始索引是否当前存储在高速缓存标签的高速缓存中(处理框404)。如果原始索引当前没有存储在高速缓存标签的高速缓存中,则高速缓存标签的高速缓存中存在索引未命中并且处理逻辑可将原始索引插入高速缓存标签的高速缓存中(处理框406)。在许多实施例中,原始索引被插入高速缓存标签的高速缓存中的一个位置,这是通过替换(驱逐)最近一次使用的已存储索引值来供给的。在一些实施例中,处理逻辑取索引并随后分配和插入该索引。在其它实施例中,处理逻辑可首先分配空间,随后取索引并将其插入。
如果正被驱逐的索引因到达高速缓存标签的高速缓存而已被更新,则必须将该索引写回至其原始的存储位置。
如果原始索引被插入高速缓存标签的高速缓存中,处理逻辑知道该原始标签不在高速缓存标签的高速缓存中,由于原始标签在那里的唯一机会是在原始索引已存储在高速缓存标签的高速缓存中的时候。因此,处理逻辑必须确定原始标签是否在标签存储结构(图4中的TSS)中(处理框408)。只有在来自存储器中存储器请求指向的位置的数据当前存储在由标签存储结构引用的高速缓存中时,原始标签才在标签存储结构中。如果原始标签在标签存储结构中,则处理逻辑取原始标签并随后将原始标签插入高速缓存标签的高速缓存(处理框410)。当原始标签被插入高速缓存标签的高速缓存时,处理逻辑可复制来自标签存储结构中索引值处的所有路径的标签(标签组),而不仅仅是存储原始标签本身的路径(处理框420)。在其它实施例中,处理逻辑可复制比来自标签存储结构中索引值处的所有路径的标签更少的标签。最后,处理逻辑读取与标签关联的高速缓存存储器中的数据以结束存储器请求(处理框422)。
否则,如果原始标签不在标签存储结构中,处理逻辑现在知道由存储器请求中的地址指向的数据在高速缓存中根本不存在,相反,该数据在主系统存储器中。在这种情形下,处理逻辑必须(以与在正常高速缓存操作期间将标签正常地插入标签存储结构相同的方式)将原始标签插入到标签存储结构中并且处理逻辑还将包含原始标签的标签组插入到高速缓存标签的高速缓存中(处理框412)。在该例中,处理逻辑必须执行附加处理步骤以插入标签。在一些实施例中,该结果将使处理逻辑使用当前驱逐策略确定要驱逐的旧标签以驱逐TSS中的旧标签,并用要插入的原始标签代替该旧标签(处理框418)。接下来的处理逻辑,如上所述,当将标签插入高速缓存标签的高速缓存结构时将与原始索引关联的整组路径插入(处理框420)。在其它实施例中,以少于原始标签处的整组路径的路径关联的标签被插入到高速缓存标签的高速缓存结构中。最后,处理逻辑读出与标签关联的高速缓存存储器中的数据以结束存储器请求(处理框422)。
返回处理框404,如果原始索引位于高速缓存标签的高速缓存中,则处理逻辑必须确定原始标签是否在高速缓存标签的高速缓存中(处理框414)。如果原始标签未存储在高速缓存标签的高速缓存中,则处理逻辑继续至处理框408(如上所述)。或者,如果原始标签存储在高速缓存标签的高速缓存中,则处理逻辑验证在高速缓存标签的高速缓存中存在原始标签命中(处理框416)。在该实施例中,处理逻辑可读出于标签关联的高速缓存存储器中的数据以结束存储器请求(处理框422)并相应地继续。为了将原始索引插入高速缓存标签的高速缓存,可能必须替换已有索引(旧索引)表目。如果与该表目关联的数据处于已修正状态,则处理逻辑还更新在标签存储结构存储与高速缓存标签的高速缓存中被修正的替换索引关联的标签的位置处的标签存储结构。
如此,对实现高速缓存标签的高速缓存的装置、系统和方法的实施例进行了说明。这些实施例已结合其特定示例性实施例进行了说明。显然人们可利用本公开作出多种修改和变化而不脱离本文描述的实施例的更宽的精神和范围。说明书和附图因此被认为是示例性的,而非限制性的。
Claims (18)
1.一种实现高速缓存标签的高速缓存的装置,包括:
耦合于处理器的高速缓存存储器;
耦合于所述高速缓存存储器的标签存储结构,所述标签存储结构存储多个标签,其中每个标签关联于存储在所述高速缓存存储器中的一个数据位置;
耦合于所述处理器的高速缓存标签的高速缓存,所述高速缓存标签的高速缓存用来存储所述标签存储结构中存储的多个标签中的一个或多个的子集;
耦合于所述处理器的控制器;
耦合于所述控制器的分区的状态信息存储单元,所述分区的状态信息存储单元用来存储多个常用状态信息模式,
其中所述控制器作用以:存储分区的状态信息存储单元中存储的常用状态信息模式的指针而不是存储与高速缓存标签的高速缓存中的一个标签关联的一组状态信息位。
2.如权利要求1所述的装置,其特征在于,所述高速缓存标签的高速缓存包括存储在所述标签存储结构中的一个或多个最近使用的标签。
3.如权利要求1所述的装置,其特征在于,还包括耦合于所述处理器的部分标签高速缓存,其中所述部分标签高速缓存确定何时存储器请求导致高速缓存未命中,而所述高速缓存标签的高速缓存确定何时存储器请求导致高速缓存命中。
4.如权利要求1所述的装置,其特征在于,所述控制器确定标签匹配的发生,其中当与存储器请求关联的原始标签与针对所述标签匹配检查的位置中的存储标签相等时,所述标签匹配发生。
5.如权利要求4所述的装置,其特征在于,所述控制器进一步作用以:从所述存储器请求中的地址确定原始索引;并当所述原始索引已不在高速缓存标签的高速缓存中时,通过覆写当前在高速缓存标签的高速缓存中的索引而将所述原始索引插入高速缓存标签的高速缓存中。
6.如权利要求5所述的装置,其特征在于,所述控制器进一步作用以:
当来自所述存储器请求的所述原始索引位于高速缓存标签的高速缓存中时,检查高速缓存标签的高速缓存中的标签匹配;
当来自所述存储器请求的所述原始索引不位于高速缓存标签的高速缓存中时,检查所述标签存储结构中的标签匹配;以及
当在高速缓存标签的高速缓存中不存在标签匹配且所述标签存储结构中也不存在标签匹配时,从系统存储器检索所述原始标签。
7.如权利要求6所述的装置,其特征在于,所述控制器进一步作用以:
当高速缓存标签的高速缓存中不存在标签匹配时,将所述原始标签插入高速缓存标签的高速缓存中;以及
当所述标签存储结构中不存在标签匹配时,将所述原始标签插入所述标签存储结构中。
8.一种实现高速缓存标签的高速缓存的系统,包括:
互连结构;
处理器,其位于耦合于所述互连结构的第一硅芯片上;
高速缓存存储器,其位于耦合于所述互连结构的第二硅芯片上;
位于耦合于所述互连结构的第二硅芯片上的标签存储结构,所述标签存储结构用来存储多个标签,其中每个标签关联于存储在所述高速缓存存储器中的一个数据位置;
高速缓存标签的高速缓存,其位于耦合于所述互连结构的第一硅芯片上,所述高速缓存标签的高速缓存用来存储在所述标签存储结构中存储的多个标签中的一个或多个的子集;
耦合于所述处理器的控制器;
耦合于所述控制器的分区的状态信息存储单元,所述分区的状态信息存储单元用来存储多个常用状态信息模式,
其中所述控制器作用以:存储分区的状态信息存储单元中存储的常用状态信息模式的指针而不是存储与高速缓存标签的高速缓存中的一个标签关联的一组状态信息位。
9.如权利要求8所述的系统,其特征在于,所述系统还包括耦合于所述处理器的部分标签高速缓存,其中所述部分标签高速缓存确定何时存储器请求导致高速缓存未命中,而所述高速缓存标签的高速缓存确定何时存储器请求导致高速缓存命中。
10.如权利要求8所述的系统,其特征在于,所述控制器确定标签匹配的发生,其中当与存储器请求关联的原始标签与针对所述标签匹配检查的位置中的存储标签相等时,所述标签匹配发生。
11.如权利要求10所述的系统,其特征在于,所述控制器进一步作用以:
从所述存储器请求中的地址确定原始索引;以及
当所述原始索引已不在高速缓存标签的高速缓存中时,通过覆写当前在高速缓存标签的高速缓存中的索引而将所述原始索引插入高速缓存标签的高速缓存中。
12.如权利要求11所述的系统,其特征在于,所述控制器进一步作用以:
当来自所述存储器请求的所述原始索引位于高速缓存标签的高速缓存中时,检查高速缓存标签的高速缓存中的标签匹配;
当来自所述存储器请求的所述原始索引不位于高速缓存标签的高速缓存中时,检查所述标签存储结构中的标签匹配;以及
当在高速缓存标签的高速缓存中不存在标签匹配且所述标签存储结构中也不存在标签匹配时,从系统存储器检索所述原始标签。
13.如权利要求12所述的系统,其特征在于,所述控制器进一步作用以:
当高速缓存标签的高速缓存中不存在标签匹配时,将所述原始标签插入高速缓存标签的高速缓存中;以及
当所述标签存储结构中不存在标签匹配时,将所述原始标签插入所述标签存储结构中。
14.一种实现高速缓存标签的高速缓存的方法,包括:
在标签存储结构中存储多个标签,其中每个标签与存储在高速缓存存储器中的一个数据位置关联,所述高速缓存存储器耦合于处理器;
存储所述多个标签的一个或多个标签但少于多个标签的全部标签的子集,所述子集存储在高速缓存标签的高速缓存中;
耦合于所述处理器的控制器;
在分区的状态信息存储单元中存储多个常用状态信息模式;以及
存储分区的状态信息存储单元中存储的常用状态信息模式的指针而不是存储与高速缓存标签的高速缓存中的一个标签关联的一组状态信息位。
15.如权利要求14所述的方法,其特征在于,还包括确定标签匹配的发生,其中当与存储器请求关联的原始标签与针对所述标签匹配检查的位置中的存储标签相等时,所述标签匹配发生。
16.如权利要求15所述的方法,其特征在于,还包括:
从所述存储器请求中的地址确定原始索引;以及
当所述原始索引已不在高速缓存标签的高速缓存中时,通过覆写当前在高速缓存标签的高速缓存中的索引而将所述原始索引插入高速缓存标签的高速缓存中。
17.如权利要求16所述的方法,其特征在于,还包括:
当来自所述存储器请求的所述原始索引位于高速缓存标签的高速缓存中时,检查高速缓存标签的高速缓存中的标签匹配;
当来自所述存储器请求的所述原始索引不位于高速缓存标签的高速缓存中时,检查所述标签存储结构中的标签匹配;以及
当在高速缓存标签的高速缓存中不存在标签匹配且所述标签存储结构中也不存在标签匹配时,从系统存储器检索所述原始标签。
18.如权利要求17所述的方法,其特征在于,还包括:
当高速缓存标签的高速缓存中不存在标签匹配时,将所述原始标签插入高速缓存标签的高速缓存中;以及
当所述标签存储结构中不存在标签匹配时,将所述原始标签插入所述标签存储结构中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/771,774 US20090006757A1 (en) | 2007-06-29 | 2007-06-29 | Hierarchical cache tag architecture |
US11/771,774 | 2007-06-29 | ||
PCT/US2008/068044 WO2009006113A2 (en) | 2007-06-29 | 2008-06-24 | Hierarchical cache tag architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101689146A CN101689146A (zh) | 2010-03-31 |
CN101689146B true CN101689146B (zh) | 2012-09-26 |
Family
ID=39721952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008800222813A Expired - Fee Related CN101689146B (zh) | 2007-06-29 | 2008-06-24 | 分层的高速缓存标签架构 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20090006757A1 (zh) |
EP (1) | EP2017738A1 (zh) |
JP (1) | JP5087676B2 (zh) |
CN (1) | CN101689146B (zh) |
DE (1) | DE112008001666T5 (zh) |
TW (1) | TW200908009A (zh) |
WO (1) | WO2009006113A2 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090327577A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Hybrid storage |
CN101667158B (zh) * | 2009-09-15 | 2015-07-01 | 威盛电子股份有限公司 | 串流上下文的高速缓存系统 |
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 |
US8612809B2 (en) | 2009-12-31 | 2013-12-17 | Intel Corporation | Systems, methods, and apparatuses for stacked memory |
KR20130079706A (ko) * | 2012-01-03 | 2013-07-11 | 삼성전자주식회사 | 휘발성 메모리를 포함하는 저장 장치의 구동 방법 |
US9495305B1 (en) * | 2012-11-02 | 2016-11-15 | David Fuchs | Detecting pointer errors for memory protection |
US20140215158A1 (en) * | 2013-01-31 | 2014-07-31 | Hewlett-Packard Development Company, L.P. | Executing Requests from Processing Elements with Stacked Memory Devices |
US9141484B2 (en) * | 2013-03-15 | 2015-09-22 | Seagate Technology Llc | Transiently maintaining ECC |
US10019352B2 (en) * | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for adaptive reserve storage |
CN104636268B (zh) * | 2013-11-08 | 2019-07-26 | 上海芯豪微电子有限公司 | 一种可重构缓存产品与方法 |
US9558120B2 (en) * | 2014-03-27 | 2017-01-31 | Intel Corporation | Method, apparatus and system to cache sets of tags of an off-die cache memory |
US9594910B2 (en) | 2014-03-28 | 2017-03-14 | Intel Corporation | In-system provisioning of firmware for a hardware platform |
GB2546245B (en) * | 2016-01-05 | 2020-08-19 | Advanced Risc Mach Ltd | Cache memory |
US10042576B2 (en) * | 2016-08-17 | 2018-08-07 | Advanced Micro Devices, Inc. | Method and apparatus for compressing addresses |
CN114780031B (zh) * | 2022-04-15 | 2022-11-11 | 北京志凌海纳科技有限公司 | 一种基于单机存储引擎的数据处理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287481A (en) * | 1991-12-19 | 1994-02-15 | Opti, Inc. | Automatic cache flush with readable and writable cache tag memory |
US5559987A (en) * | 1994-06-30 | 1996-09-24 | Digital Equipment Corporation | Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system |
US6212602B1 (en) * | 1997-12-17 | 2001-04-03 | Sun Microsystems, Inc. | Cache tag caching |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02294751A (ja) * | 1989-05-09 | 1990-12-05 | Mitsubishi Electric Corp | キヤツシユメモリ制御装置 |
US5813031A (en) * | 1994-09-21 | 1998-09-22 | Industrial Technology Research Institute | Caching tag for a large scale cache computer memory system |
JP3585349B2 (ja) * | 1997-08-27 | 2004-11-04 | 富士通株式会社 | キャッシュメモリを備えた情報処理装置 |
US20040225830A1 (en) * | 2003-05-06 | 2004-11-11 | Eric Delano | Apparatus and methods for linking a processor and cache |
-
2007
- 2007-06-29 US US11/771,774 patent/US20090006757A1/en not_active Abandoned
-
2008
- 2008-03-27 EP EP08251130A patent/EP2017738A1/en not_active Withdrawn
- 2008-06-24 CN CN2008800222813A patent/CN101689146B/zh not_active Expired - Fee Related
- 2008-06-24 WO PCT/US2008/068044 patent/WO2009006113A2/en active Application Filing
- 2008-06-24 DE DE112008001666T patent/DE112008001666T5/de not_active Withdrawn
- 2008-06-24 JP JP2010515039A patent/JP5087676B2/ja not_active Expired - Fee Related
- 2008-06-27 TW TW097124281A patent/TW200908009A/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287481A (en) * | 1991-12-19 | 1994-02-15 | Opti, Inc. | Automatic cache flush with readable and writable cache tag memory |
US5559987A (en) * | 1994-06-30 | 1996-09-24 | Digital Equipment Corporation | Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system |
US6212602B1 (en) * | 1997-12-17 | 2001-04-03 | Sun Microsystems, Inc. | Cache tag caching |
Also Published As
Publication number | Publication date |
---|---|
TW200908009A (en) | 2009-02-16 |
CN101689146A (zh) | 2010-03-31 |
JP5087676B2 (ja) | 2012-12-05 |
WO2009006113A2 (en) | 2009-01-08 |
DE112008001666T5 (de) | 2010-09-16 |
US20090006757A1 (en) | 2009-01-01 |
WO2009006113A3 (en) | 2009-04-30 |
EP2017738A1 (en) | 2009-01-21 |
JP2010532537A (ja) | 2010-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101689146B (zh) | 分层的高速缓存标签架构 | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
US5778434A (en) | System and method for processing multiple requests and out of order returns | |
CN107111455B (zh) | 电子处理器架构以及缓存数据的方法 | |
CN102498477B (zh) | Tlb预取 | |
US8909871B2 (en) | Data processing system and method for reducing cache pollution by write stream memory access patterns | |
JPH1074166A (ja) | 多重レベル・ダイナミック・セット予測方法および装置 | |
US9720847B2 (en) | Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed | |
CN103729306A (zh) | 经由地址范围检查的多cpu块无效操作绕过 | |
US11599483B2 (en) | Dedicated cache-related block transfer in a memory system | |
CN103778070A (zh) | 多个块一致性操作的并行处理 | |
CN115617709A (zh) | 缓存管理方法及装置、缓存装置、电子装置和介质 | |
US7219197B2 (en) | Cache memory, processor and cache control method | |
US20090198903A1 (en) | Data processing system, processor and method that vary an amount of data retrieved from memory based upon a hint | |
US12093180B2 (en) | Tags and data for caches | |
US7302530B2 (en) | Method of updating cache state information where stores only read the cache state information upon entering the queue | |
CN112148639A (zh) | 一种高效小容量高速缓冲存储器替换方法及系统 | |
US7900019B2 (en) | Data access target predictions in a data processing system | |
US7325098B1 (en) | System and method for non-destructive handling of outsized words by a cache | |
US20230418758A1 (en) | Tag processing for external caches | |
US11379368B1 (en) | External way allocation circuitry for processor cores | |
US20120102271A1 (en) | Cache memory system and cache memory control method | |
CN114090080A (zh) | 指令高速缓存器、指令读取方法及电子设备 | |
US7624224B1 (en) | System and method for directly executing code from block-based memory |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120926 Termination date: 20130624 |