专利名称:用于具有不同高速缓存位置长度的高速缓存中高速缓存一致性的系统和方法
技术领域:
本发明一般涉及具有数据高速缓存的微处理器,尤其涉及可以包括具有多组不同长度的高速缓存位置的数据高速缓存的微处理器。
背景技术:
现代微处理器可以在单个半导体器件上包括两个或多个处理器内核。可以将这种处理器称为多核处理器。使用这些多核处理器能够将性能提高到超出使用单核处理器所允许的程度。每个内核都可以有它自己的一级数据和指令高速缓存,在这个器件上还可以有二级高速缓存。
为了提高性能,一级数据高速缓存中的高速缓存位置可以具有根据预期数据类型选择的长度。有限的器件尺寸可以允许长度较短的、数量较多的高速缓存位置,或者长度较长的、数量较少的高速缓存位置。当预期数据具有大的空间局部性时(例如数据倾向于位于存储器中的连续区域),通过采用长度较长的、数量较少的高速缓存位置能够提高性能。在另一个极端情况下,当预期数据具有较小的空间局部性时(例如数据随机或伪随机地分布在整个存储器内),通过采用长度较短的、数量较多的高速缓存位置能够提高性能。
可以设计具有多组高速缓存位置的一级数据高速缓存,其中每一组都包含不同长度的高速缓存位置。这样做能够在各种类型的预期数据的情况下提高性能。另外,某块数据可能同时存在于多组高速缓存位置中,此时仍然能够提高性能。但是,大多数高速缓存一致性引擎都是根据高速缓存位置/高速缓存行尺寸的粒度来进行工作的。为了清楚起见,将这些设计成支持同样的高速缓存位置/高速缓存行尺寸。因此,用于和具有变化的高速缓存位置长度的高速缓存一起使用的高速缓存一致性引擎存在设计问题,特别是当在不进行基础性重新设计的情况下优选地使用现有的高速缓存一致性协议时。
本说明书利用附图以实例方式而不是以限制方式说明高速缓存位置,在这些附图中,相似的标号指的是相似的单元。在这些附图中图1是根据本公开的一个实施例的,具有多个处理器内核的处理器的示图,这些处理器内核具有包括不同长度的高速缓存位置的高速缓存;图2是根据本公开一个实施例的处理器模块的示图;图3是根据本公开一个实施例的,具有目录结构的二级高速缓存的示图;图4是根据本公开的一个实施例的,图3所示的二级高速缓存的目录条目的示图;图5是根据本公开的一个实施的,对应于图4所示的目录条目的状态树的示图;图6是根据本公开的另一个实施例的,集合状态保存寄存器的示图;图7A是根据本公开的一个实施例的,多内核处理器系统的示意图;以及图7B是根据本公开的另一个实施例的,多内核处理器系统的示意图。
具体实施例方式
以下描述包括用于多内核处理器中数据高速缓存的设计和一致操作的技术,所述数据高速缓存具有不同长度的高速缓存位置。在以下描述中,说明了大量的具体细节,例如逻辑实现、软件模块分配、总线和其它接口信令技术以及操作的细节,以便帮助更加彻底地理解本发明。但是,本领域技术人员明白,可以实现本发明而无需这些具体细节。在其它例子中,没有详细说明控制结构、门级别的电路和完整的软件指令序列,以免使发明不清楚。利用这些描述,本领域技术人员将能够实现适当的功能而无需大量的实验。在特定的实施例中,本发明在安腾处理器系列的兼容处理器(例如英特尔公司生产的处理器)以及有关系统和处理器固件的环境中公开。但是,本发明还可以用其他种类的处理器系统来实现,例如利用奔腾兼容处理器系统(例如英特尔公司生产的)、X-Scale系列兼容处理器,或者根据其它销售商或设计者的任何处理器体系结构的任何不同的通用处理器。另外,一些实施例可以包括或者可以是专用处理器,例如,图形、网络、图像、通信处理器,或者任何其它已知的或可用类型的结合其固件的处理器。
下面参考图1,其中显示了根据本公开的一个实施例的,具有高速缓存的多核处理器,所述高速缓存包括不同长度的高速缓存位置。在一个实施例中,显示了处理器模块1130和处理器模块2140,但是在其它实施例中,在特定的整体处理器实现中可以有更多的处理器模块。
处理器模块1130和处理器模块2140可以各自包括用于执行程序的内核134、144,一级(L1)数据高速缓存控制器132、142,以及高速缓存阵列136、146。在这里,“一级”指的是在层次结构上最接近处理器内核的高速缓存。高速缓存阵列132、142可以包括能够保存从存储器取入的数据的各种高速缓存位置作为高速缓存行。这些高速缓存位置的长度可以不同,并且可能包含高速缓存行的一些部分,而不是整个高速缓存行,以便提高性能。
处理器模块1130和处理器模块2140可以通过互连120连接到二级(L2)高速缓存110。在这里,“二级”指的是在层次结构上同处理器内核远一级的高速缓存。二级高速缓存110可以包括高速缓存阵列114,该高速缓存阵列包括能够保存从存储器取入的数据的高速缓存位置作为高速缓存行。其还可以包括目录116,用于保存高速缓存阵列114中以及各个一级高速缓存中包含的高速缓存行的标记和状态数据。最后,它可以包括多组寄存器112以支持高速缓存操作。
下面参考图2,其中显示了根据本公开的一个实施例的处理器模块。如前面结合图1所述,处理器模块230可以包括内核244、一级数据高速缓存控制器242和高速缓存阵列246。
高速缓存阵列246可以包括多组长度不同的高速缓存位置。例如,组260中的高速缓存位置可以保存高速缓存体系结构的整个高速缓存行。但是,组270中的高速缓存位置则能够保存整个高速缓存行的一些部分,其中每一部分的长度都只是整个高速缓存行长度的一半。类似地,组250中的高速缓存位置可以保存整个高速缓存行的一些部分,其中每一部分的长度仅仅是整个高速缓存行长度的四分之一。存在许多这种高速缓存阵列的实施例,其中,不同的高速缓存位置可以具有不同的长度。可以多于或少于三种高速缓存位置,在其它实施例中,高速缓存位置的长度不必按照2的幂次关系与整个高速缓存体系结构的整个高速缓存行长度相联系。在图2所示的实施例中,组260的高速缓存位置可以保存整个高速缓存行,但是在其它实施例中,组260的高速缓存位置(高速缓存阵列246中最长的高速缓存位置)可以只保存整个高速缓存行的一部分。
为了讨论高速缓存阵列246的使用,“块”这个术语是有用的。在这里,可以将块定义为一级数据高速缓存的一致性中的最小高速缓存位置的长度。因此,组250包括“一块”高速缓存位置,组270包括两个块的高速缓存位置,组260包括四个块的高速缓存位置。在其它实施例中,可以使用其它块长度的高速缓存位置。
为了用作高速缓存,将多组高速缓存位置250、260、270连接到一级数据高速缓存控制器242。这提供了控制器、一致性引擎、缺失(miss)状态保存寄存器(MSHR)252、回写缓冲器(WB)250和互连接口220。在一些实施例中,可以为高速缓存位置250、260、270中的每一组复制这些部件,但是在本实施例中,可以由高速缓存位置共享它们。二级高速缓存可以了解不同组的高速缓存位置,因此能够向不同的高速缓存位置组中的每一组发送一致性消息。一级数据高速缓存控制器242可以接收这种消息并基于它们进行操作,这些操作包括对它们作标记,以及将它们解释成来自或者要去往高速缓存阵列246中特定一组高速缓存位置。
与具有单个高速缓存位置长度的高速缓存中的传统MSHR相比,MSHR 252可能有变化。传统的MSHR可以缓冲被判定为缺失的到同一个地址的多个存储器请求。由于这些不同长度的高速缓存位置组,可以将对相同地址的这种多个存储器请求引导向不同长度的高速缓存位置。按照传统方式缓冲多个存储器请求会降低性能。作为一个实例,对于其中与第一次存储器请求相比,对一个地址的第二次请求是针对更长的高速缓存位置的请求这种情形,第一次存储器请求所取入的结果没有包括足够多的块来满足第二次存储器请求的需求。因此,在一个实施例中,MSHR 252可以为如下所述的每一组高速缓存位置分配单独的条目,对于所述每组高速缓存位置,到同一地址的存储器请求正被挂起。这些存储器请求中的每一个将被发送到二级高速缓存。可以用地址和标识符来对MSHR 252中的单独条目进行索引,其中所述标识符指示所述请求来自哪一组高速缓存位置。通过这种方式,在到特定地址的第一个请求以后,可以只缓冲来自同一组高速缓存位置的到所述特定地址的存储器请求。
传统方式是,在声明发生了缺失之前,当收到到来的地址请求时,检查WB。如果在WB中找到了所请求的地址,就可以缓冲到来的对该地址的请求,并且在继续处理这一请求之前允许完成回写。但是,如果回写条目来自长度不同于产生到来的请求的高速缓存位置组的一个高速缓存位置组,就可以不延迟这一缺失的处理。为了支持这一操作,在一个实施例中,可以用地址和标识符来对WB 250进行索引,所述标识符指示到来的请求来自哪一种高速缓存位置组。
下面参考图3,其中示出了根据本公开的一个实施例的,具有目录结构的二级高速缓存的示图。二级高速缓存310可以包括用来保存数据350和目录360的多个高速缓存位置。目录360可以包括与数据350中等同高速缓存位置的内容相对应的多种条目。这些种类的条目可以包括标记370、高速缓存一致性状态380和共享矢量390。在一个实施例中,状态可以是MSI高速缓存一致性协议的非活动状态修改(M),共享(S)或者无效(I)。在另一些实施例中,可以支持其它的高速缓存一致性状态。
共享矢量可以包括关于二级高速缓存310的高速缓存一致性空间中所有一级数据高速缓存的信息。具体地说,对于每个处理器内核,共享矢量可以包括与不同长度的高速缓存位置组的数量一样多的位数。在一些实施例中,每一组高速缓存位置可以有额外的位用来指示整个高速缓存行的哪一部分可以存在于特定的一级数据高速缓存中。参考图2,这些额外的位可以指示高速缓存位置272中的两个块是来自对应的整个高速缓存行的前两个块还是后两个块。下面将结合图4详细讨论目录360中条目362的一个实施例的细节。
二级高速缓存310还可以包括多组寄存器。在图3所示的实施例中,它们可以包括回写寄存器320、缺失状态处理寄存器(MSHR)330和集合状态保存寄存器(CSHR)340。在一个实施例中,回写寄存器320和MSHR 330可以是传统的设计。后面将结合图6详细讨论CSHR 340以及它的用于集合整个高速缓存行的已更新部分的效用。
现在参考图4,其中显示了根据本公开的一个实施例的,图3所示二级高速缓存的目录条目362的示图。条目362为整个高速缓存行的标记402分配了一些位。它还有用于高速缓存一致性状态404的一个位或多个位。对于存在的每一个内核,以及对于高速缓存位置种类与可以存在于该内核的数据高速缓存中的整个高速缓存行的部分的每一种可能组合,可以有一位来指示在这种高速缓存位置中是否存在整个高速缓存行的这一部分。
考虑图1所示的处理器100,其中,每个处理器模块都可以是图2所示的处理器模块230。于是,在条目362中,有两位408、412,它们分别代表内核1、2中保存四个块的高速缓存位置组。由于在四个块的高速缓存位置中只可能包含整个高速缓存行的一个部分,也就是整个高速缓存行本身,因此,单独一位就足够了。
对于与保存两个块的高速缓存位置组有关的条目362的部分,内核1具有两位416、418,内核2具有两位420、422。这里,每个内核可以使用两位,因为保存两个块的高速缓存位置可能保存整个高速缓存行的两部分之一(例如,整个高速缓存行的前两块或后两块)。例如,418中的“1”可以指示整个高速缓存行的第二部分存在于内核1的两个块的高速缓存位置组中。
对于与保存单块的高速缓存位置组有关的条目362的部分,内核1有4个位424~430,内核2具有4个位432~438。在这里,每个内核可以使用四个位,因为保存一个块的高速缓存位置可以保存整个高速缓存行的四个部分之一(例如整个高速缓存行的第一、第二、第三或第四块)。例如,424中的“1”可以指示整个高速缓存行的第一块部分存在于内核1的一个块的高速缓存位置组中。
在其它实施例中,可以仅通过在适当的位置增加位字段,来扩展条目362以覆盖具有两个以上内核的处理器的情形。值得注意,条目362的设计没有给内核数量施加任何特定限制。类似地,在其它实施例中,可以仅通过在合适的位置增加或删除位字段,来扩展条目362以覆盖具有三组以上或以下不同长度高速缓存位置的处理器的情况。图4中的实施例显示按照高速缓存位置的长度来分组的条目362的位;但是,在其它实施例中,条目的位也可以按照内核来组织。
在一个实施例中,前面讨论的高速缓存一致性协议的非活动状态为M、S和I。一致性操作会导致从这些非活动状态之一转变到另一个状态。当处理一致性操作的请求时,一致性操作会导致高速缓存行的状态通过各个活动状态。传统高速缓存一致性协议中的一个规则可以是,当高速缓存行处于活动状态时,不能进行任何其它一致性操作。
但是,在本公开的高速缓存系统的一个实施例中,一级数据高速缓存的不同的高速缓存位置可以保存整个高速缓存行的不同部分。当请求是针对整个高速缓存行的“独立”部分的时候,能够允许发生对一致性操作的请求的并发处理。这里,独立部分可以是整个高速缓存行的前一半和后一半,或者是整个高速缓存行的任意一对四分之一部分。因为一致性操作可以包括发送消息和等待答复,所以允许请求的并发处理能够提高高速缓存性能。
在二级高速缓存310中执行的一致性协议可以从处理器模块接收四种不同类型的对一致性操作的请求。这些请求可以包括读、排他读(例如接收写入的所有权)、更新和回写请求。当在具有不同长度的高速缓存位置组的情况下考虑这些请求时,这些请求会希望考虑由整个高速缓存行的各个部分保存的状态。为了有效地执行这一考虑,状态位404和共享矢量位408~438中包含的位可以按照如同它们是状态树的逻辑进行检查。
参考图5,其中显示了根据本公开的一个实施例的,与图4所示目录条目362相对应的状态树500的示图。状态树500可以由一组节点510、512、514、520、522、524、526形成。每个节点都可以代表可以保存在各个一级数据高速缓存中出现的高速缓存位置的种类之一中的整个高速缓存行的各个部分之一的状态。二级高速缓存中的逻辑可以将一个节点置于非活动状态或与挂起的一致性操作相对应的活动状态。
例如,根节点510可以代表任何非活动或者挂起的活动高速缓存一致性状态,以及显示整个高速缓存行可以存在于各个一级数据高速缓存中什么地方的条目362的部分(例如位408、412)。在没有任何一级数据高速缓存包括四个块的高速缓存位置的实施例中,根节点510可以省略条目362的部分,同时维持挂起的活动高速缓存一致性状态。
节点512、514可以代表任何非活动的或者挂起的活动高速缓存一致性状态,以及显示整个高速缓存行的前半部分和后半部分分别可以出现在各个一级数据高速缓存中什么地方的条目362的部分(例如分别在位416、420和418、422)。类似地,节点520、522、524和526可以代表任何挂起的活动高速缓存一致性状态,以及显示整个高速缓存行的第一、第二、第三和第四个四分之一部分分别可以出现在各一级数据高速缓存中什么地方的条目362的部分(例如分别为位424、432;426、434;428、436和430、438)。
不同形式的高速缓存一致性协议会在状态树500的节点之中产生不同的一致性规则。利用前面作为实例讨论的MSI协议,根据其位置和相关依赖性,可能需要不同的节点来获得不同的状态。例如,如果节点514处于M状态,那么它的祖先节点(朝向根节点的方向的,树的分支上的节点),也就是根节点510需要处于I状态,其后代节点524、526(远离根节点的方向的,树的分支上的节点)一样。但是,由于在节点514与节点512、520和522之间缺少依赖性,因此,后面的节点可以处于MSI状态中的任意状态(例如“不关心”状态)。类似地,如果节点526处于M状态,那么节点510和514需要处于I状态,但是因为没有依赖性,节点524、512、520和522可以处于MSI状态的任意状态。根节点510的不同之处在于,所有其它节点都依赖于根节点510。在高速缓存一致性协议的其它实施例中,可以使用依赖性和非依赖性节点之间的状态的其它规则。
可以用状态树500来支持对以下情形的判断在一致性操作中目前是不是涉及到了整个高速缓存行的给定部分。考虑特定节点的祖先节点可能代表节点本身所代表的数据的一个超集。并且这个节点的后代节点可能代表这个节点本身所代表的那部分中包含的整个高速缓存行的那些部分。因为这些特性,可以用一组简单规则来判断一致性操作中目前是不是涉及由一节点代表的整个高速缓存行的一部分。这些规则可以在二级高速缓存的逻辑中实现,该二级高速缓存的逻辑可以对目录的条目进行操作。
规则1可以是,如果一个节点具有已经处于活动状态的祖先节点,那么那个节点不能开始新的一致性操作。规则2可以是,如果一个节点本身已经处于活动状态,那么它不能开始新的一致性操作。规则3可以是,如果节点的任何后代节点已经处于活动状态,那么这个节点不能开始新的一致性操作。规则4可以是,如果新的一致性操作会修改这个节点的任何祖先节点的状态,那么规则1、2和3也将被应用于与根节点最接近的那个祖先节点。在其它实施例中,可以建立起其它规则组来判断在一致性操作中目前是不是涉及到了整个高速缓存行的一部分。
下面参考图6,其中显示了根据本公开的一个实施例的,集合状态保存寄存器(CSHR)的示图。在传统的高速缓存系统里,当一个数据一级高速缓存希望访问另一个数据一级高速缓存所拥有的高速缓存行时,对应的二级高速缓存可以更新这一行的状态,将请求转发给拥有方数据一级高速缓存。在一个具有不同长度的高速缓存位置的高速缓存系统的实施例中,更新行状态和转发请求给拥有方数据一级高速缓存的处理可以按照与特定情形类似的方式进行。这些情形可以包括在长度与请求方数据一级高速缓存中的对应高速缓存位置长度一样或者更长的高速缓存位置中,拥有方数据一级高速缓存具有高速缓存行的被请求部分。
但是,如果以比所请求的块粒度小的块粒度来修改行,那么所请求的高速缓存行的一部分在一个数据一级高速缓存中可以处于例如修改状态,以及在另一个数据一级高速缓存(或存储器)中的其余部分。在这种情况下,需要集合和组合所请求高速缓存行的所述各个部分。集合和组合所请求高速缓存行的所述各个部分的方法可以在多个高速缓存位置中执行。在一个实施例中,请求方数据一级高速缓存可以自己集合和组合这些部分。这样做能够缩短请求处理的等待时间。
但是,在另一个实施例中,可以预期与状态树中多个不同节点相对应的高速缓存行的部分的共享可以是相对少见的。因此,集合和组合请求方高速缓存行的所述各个部分的对应需要也将是相对少见的。在这个实施例中,在二级高速缓存中进行集合和组合,随后将组合好的高速缓存行转发给请求方一级数据高速缓存会更加简单。
为了在二级高速缓存中进行集合和组合,可以使用CSHR 340。CSHR 340中的每个条目可以跟踪特定的一级数据高速缓存请求。可以利用与一级数据高速缓存请求相对应的二级高速缓存行地址来对这些条目进行索引。每个条目可以包括到来的一级数据高速缓存请求,其可以包括请求的以及请求了整个高速缓存行的特定部分(例如前半部分,第三个四分之一部分,等等)的高速缓存位置的长度。每个条目可能已经在一开始就储存了二级高速缓存将向各个一级数据高速缓存发出的请求的数量。当每个响应到达的时候,可以让这个数递减。当这个数达到0的时候,二级高速缓存就知道了已经集合了所有部分,组合过程可以开始。
可以按照如下方式处理来自一级数据高速缓存之一的请求。当二级高速缓存接收到请求时,可以首先判断这个请求是不是与拥有方一级数据高速缓存具有同样的块粒度。如果是这样,则二级高速缓存就可以简单地转发这个请求给拥有方一级数据高速缓存。但是,如果不是同样的块粒度,那么可以分配CSHR 340中的条目610。可以将到来的一级数据高速缓存请求放入请求字段612,将二级高速缓存会向各个一级数据高速缓存发出的请求的数量放入未完成响应字段614的数量中去。于是,二级高速缓存可以向各个一级数据高速缓存发出请求,并且等待响应到达。随着每个响应到达二级高速缓存,保存对应的数据,将未完成响应字段614的数量减小。当未完成响应字段614的数量达到0的时候,二级高速缓存就知道已经集合了所有部分。于是,二级高速缓存可以组合从一级数据高速缓存接收的数据。一旦组合起来,二级高速缓存就可以将组合好的高速缓存行转发给原始发出请求的一级数据高速缓存。
下面参考图7A和7B,其中显示了根据本公开的两个实施例的,具有多内核处理器的系统的示意图。图7A的系统大概显示了一个系统,其中,处理器、存储器和输入/输出设备由系统总线互连,而图7B的系统则大概显示了一个系统,其中,处理器、存储器和输入/输出设备由多个点到点接口互连。
图7A系统可以包括一个或多个处理器,为了清楚起见,只显示了其中的两个处理器40、60。处理器40、60可以包括二级高速缓存42、62,其中每个处理器40、60可以包括多个内核,每个内核都有一个一级高速缓存。图7A的系统可以有通过总线接口44、64、12、8与系统总线6连接的多个功能。在一个实施例中,系统总线6可以是因特尔公司制造的奔腾系列微处理器所使用的前端总线(FSB)。在其它实施例中,可以使用其它总线。在一些实施例中,可以将存储器控制器34和总线桥32一起称作芯片组。在一些实施例中,可以将芯片组的功能分配到不同于图7A的实施例中所示的物理芯片中。
存储器控制器34可以允许处理器40、60从系统存储器10和基本输入/输出系统(BIOS)可擦除可编程只读存储器(EPROM)36读、写。在一些实施例中,BIOS EPROM 36可以使用闪存,也可以包括其它的基本操作固件来取代BIOS。存储器控制器34可以包括总线接口8以允许通过系统总线6向总线代理(bus agent)以及从总线代理执行存储器读、写数据。存储器控制器34还可以通过高性能图形接口39与高性能图形电路38连接。在特定的实施例中,高性能图形接口39可以是高级图形端口AGP接口。存储器控制器34可以通过高性能图形接口39将数据从系统存储器10传送到高性能图形电路38。
图7B的系统还可以包括一个或多个处理器,为了清楚,只显示了其中两个处理器70、80。处理器70、80可以包括二级高速缓存56、58,其中,每个处理器70、80可以包括多个内核,每个内核都有一级高速缓存。处理器70、80中每一个都可以包括要与存储器2、4连接的本地存储器控制器集线器(MCH)72、82。处理器70、80可以利用点到点接口电路78、88通过点到点接口50交换数据。处理器70、80可以各自利用点到点接口电路76、94、86、98通过各个点到点接口52、54与芯片组90交换数据。在其它实施例中,可以在处理器70、80中实现芯片组功能。芯片组90也可以通过高性能图形接口92与高性能图形电路38交换数据。
在图7A的系统中,总线桥32可以允许在系统总线6和总线16之间交换数据,在一些实施例中,其可以是工业标准结构(ISA)总线或者外围部件互联(PCI)总线。在图7B的系统中,芯片组90可以通过总线接口96与总线16交换数据。在这两种系统中的任意一种里,在总线16上可以有各种输入/输出I/O设备14,在一些实施例中包括低性能图形控制器、视频控制器和网络控制器。在一些实施例中,可以用另一个总线桥18在总线16和总线20之间交换数据。在一些实施例中,总线20可以是小型计算机系统接口(SCSI)总线、集成驱动电子(IDE)总线或者通用串行总线(USB)总线。其它的I/O设备可以与总线20连接。这些设备包括键盘和鼠标控制设备22,包括鼠标器、音频I/O 24、通信设备26,包括调制解调器和网络接口,以及数据存储设备28。可以将软件代码30储存在数据存储设备28上。在一些实施例中,数据存储设备28可以是固定的磁盘、软盘驱动器、光盘驱动器、磁光盘驱动器、磁带或者包括闪存的非易失性存储器。
在前面的说明中,已经参考本发明的具体示例性实施例描述了本发明。但是,很显然,可以在不脱离所附权利要求限定的本发明的精神和范围的情况下对它们进行各种变形和改变。因此,应把说明书和附图看成是说明性的而不是限制性的。
权利要求
1.一种处理器,包括具有第一高速缓存的第一内核,所述第一高速缓存包括第一长度的第一组高速缓存位置以及第二长度的第二组高速缓存位置;第二高速缓存,其在层次级别上比所述第一高速缓存更远离所述第一内核,该第二高速缓存具有第三长度的第三组高速缓存位置;以及执行一致性操作的第一逻辑,用来在所述第三组高速缓存位置之一中保存第一高速缓存行的目录条目,其中的字段对应于所述第一高速缓存中的高速缓存行。
2.如权利要求1所述的处理器,其中,所述目录条目包括一矢量,用于表示在所述第一组和所述第二组高速缓存位置中是否存在所述第一高速缓存行的多个部分。
3.如权利要求2所述的处理器,还包括具有第三高速缓存的第二内核,所述第三高速缓存包括所述第一长度的第四组高速缓存位置以及所述第二长度的第五组高速缓存位置。
4.如权利要求3所述的处理器,其中,所述矢量还表示在所述第四组和所述第五组高速缓存位置中是否存在所述第一高速缓存行的多个部分。
5.如权利要求4所述的处理器,其中,当所述第一高速缓存请求与状态树的第一节点相对应的存储器或高速缓存操作时,所述第一逻辑根据所述矢量形成所述状态树。
6.如权利要求5所述的处理器,其中,当所述第一节点已经处于活动状态时,所述第一逻辑将延迟所述一致性操作。
7.如权利要求5所述的处理器,其中,当所述状态树中的所述第一节点的祖先节点已经处于活动状态时,所述第一逻辑将延迟所述一致性操作。
8.如权利要求5所述的处理器,其中,当所述状态树中的所述第一节点的后代节点已经处于活动状态时,所述第一逻辑将延迟所述一致性操作。
9.如权利要求5所述的处理器,其中,所述第一逻辑将实现响应于所述第一节点和第二节点的依赖性的、用于所述第一节点和所述第二节点的可允许状态的规则。
10.如权利要求3所述的处理器,其中,所述第二高速缓存包括第一寄存器组,用于为所述第一组、第二组、第四组和第五组高速缓存位置中的所述第一高速缓存行的多个部分跟踪对所述第一高速缓存和所述第三高速缓存的请求。
11.如权利要求10所述的处理器,其中,所述第二高速缓存包括第二逻辑,用于组合所述多个部分以集合所述部分中所述一个的当前值。
12.一种方法,包括从一组第一级高速缓存中之一接收对存储器或高速缓存操作的请求,所述一组第一级高速缓存中的每一个都包括第一长度的高速缓存位置以及第二长度的高速缓存位置;在第二级高速缓存中判断,所述第一长度的所述高速缓存位置和所述第二长度的所述高速缓存位置中的哪一个包括与所述请求相对应的所述第二级高速缓存的第一高速缓存行的多个部分;以及部分地基于所述判断的结果延迟对所述存储器或高速缓存操作的所述请求。
13.如权利要求12所述的方法,其中,所述判断包括检查目录中的矢量。
14.如权利要求13所述的方法,其中,所述判断还包括使用所述第二级高速缓存的逻辑,根据所述矢量构造状态树。
15.如权利要求14所述的方法,其中,所述禁止包括,从与所述请求对应的节点开始,将规则应用于所述状态树中的祖先节点和后代节点。
16.如权利要求12所述的方法,还包括发送一组数据请求给所述一组第一级高速缓存中的选定的一些第一级高速缓存,在所述选定的一些第一级高速缓存中,所述判断发现所述第一高速缓存行的多个部分。
17.如权利要求16所述的方法,还包括在寄存器中跟踪所述数据请求,并且将所述多个部分集合到所述第一高速缓存行的当前值中。
18.一种系统,包括处理器,该处理器包括第一内核、第二高速缓存以及执行一致性操作的第一逻辑,所述第一内核具有第一高速缓存,所述第一高速缓存包括第一长度的第一组高速缓存位置以及第二长度的第二组高速缓存位置,所述第二高速缓存在层次级别上比所述第一高速缓存更远离所述第一内核,所述第二高速缓存具有第三长度的第三组高速缓存位置,所述第一逻辑用于在所述第三组高速缓存位置之一中保存第一高速缓存行的目录条目,其中的字段对应于所述第一高速缓存中的高速缓存行;用于将所述处理器与输入/输出设备连接起来的互连;以及通过所述互连连接到所述处理器的网络控制器。
19.如权利要求18所述的系统,其中,所述目录条目包括一矢量,用于表示在所述第一组和所述第二组高速缓存位置中是否存在所述第一高速缓存行的多个部分。
20.如权利要求19所述的系统,还包括具有第三高速缓存的第二内核,所述第三高速缓存包括所述第一长度的第四组高速缓存位置以及所述第二长度的第五组高速缓存位置。
21.如权利要求20所述的系统,其中,所述矢量还表示在所述第四组和所述第五组高速缓存位置中是否存在所述第一高速缓存行的多个部分。
22.如权利要求21所述的系统,其中,当所述第一高速缓存请求与状态树的节点相对应的一致性操作时,所述第一逻辑根据所述矢量形成所述状态树。
23.如权利要求22所述的系统,其中,当所述节点已经处于活动状态时,所述第一逻辑将延迟所述一致性操作。
24.如权利要求23所述的系统,其中,当所述状态树中的所述节点的祖先节点已经处于活动状态时,所述第一逻辑将延迟所述一致性操作。
25.如权利要求24所述的系统,其中,当所述状态树中的所述节点的后代节点已经处于活动状态时,所述第一逻辑将延迟所述一致性操作。
26.一种装置,包括接收装置,用于从一组第一级高速缓存之一接收对存储器或高速缓存操作的请求,所述一组第一级高速缓存中的每一个都包括第一长度的高速缓存位置以及第二长度的高速缓存位置;判断装置,用于在第二级高速缓存中判断,所述第一长度的所述高速缓存位置和所述第二长度的所述高速缓存位置中的哪一个包括与所述请求相对应的所述第二级高速缓存的第一高速缓存行的多个部分;以及延迟装置,用于部分地基于由所述判断装置产生的结果来延迟对所述存储器或高速缓存操作的所述请求。
27.如权利要求26所述的装置,其中,所述判断装置包括用于检查目录中的矢量的装置。
28.如权利要求27所述的装置,其中,所述判断装置还包括用于使用所述第二级高速缓存的逻辑,根据所述矢量构造状态树的装置。
29.如权利要求28所述的装置,其中,所述禁止装置包括用于从与所述请求对应的节点开始,将规则应用于所述状态树中的祖先节点和后代节点的装置。
30.如权利要求26所述的装置,还包括用于发送一组数据请求给所述一组第一级高速缓存中的选定的一些第一级高速缓存的装置,其中,在所述选定的一些第一级高速缓存中,所述判断装置发现所述第一高速缓存行的多个部分。
31.如权利要求30所述的装置,还包括用于在寄存器中跟踪所述数据请求的装置,以及用于将所述多个部分集合到所述第一高速缓存行的当前值中的装置。
全文摘要
公开了在一级高速缓存中具有不同高速缓存位置长度的高速缓存系统的设计和操作的系统和方法。在一个实施例中,每个一级高速缓存可以包括不同长度的高速缓存位置组,它们能够保存二级高速缓存行的位置。可以从共享矢量中的数据产生状态树。当请求从一级高速缓存到达的时候,二级高速缓存可以检查状态数的节点来判断与进来的请求相对应的状态树的节点是否已经是活动的。可以将这个判断的结果用于禁止或允许请求的同时处理。
文档编号G06F12/08GK101088074SQ200580044885
公开日2007年12月12日 申请日期2005年12月27日 优先权日2004年12月27日
发明者Y·陈, C·休斯, J·塔克三世 申请人:英特尔公司