对多个一致域的支持的制作方法

文档序号:6478478阅读:148来源:国知局
专利名称:对多个一致域的支持的制作方法
对多个一致域的支持
背景技术
本发明涉及多处理器系统,更具体而言,涉及在多处理器系统中维持多个独立的
一致域。半导体制造技术的进步使微处理器时钟速度显著提高。虽然这样的进步还使得存储密度和存取时间得以改进,但微处理器时钟速度与存储器存取时间之间的不一致继续存 在。为了减小延迟,通常使用一个或更多个级别的缓冲存储器来保持主存储器中所存储的 数据或指令的子集。已开发出了若干技术以增加微处理器重复使用缓存中所保持的数据/ 指令的可能性。为了使任何给定的操作频率下的性能得以提高,已开发出了具有多个并行地执行 指令的处理核的微处理器。可以将处理核(下文中可替选地称为核)集成在同一个半导体 晶片内,或者可以将其形成于在封装内相互耦合的不同半导体晶片上,或者二者的组合。每 个核通常包括其自身的1级缓存以及可选的2级缓存。缓存一致性协议对与核相关联的存储器与缓存之间的流量流进行管理,以确保它 们之间的一致性。例如,缓存一致性协议确保如果数据项的副本在缓存中的一个中被修改, 则存储在其它缓存以及主存储器中的该数据项的副本根据该修改而被更新或被无效。图1是如现有技术中已知的具有四个独立的核IO1UO2UO3* IO4的微处理器 20(下文中可替选地称为处理器)的框图。每个核IOi被示为包括1级(Li)缓存15”其 中,i是从1到4变化的整数。假设核IO1所请求的数据不存在于其Ll缓存K1中。为了 获得对该数据的访问,核IO1S出读取请求。在每个时钟周期中,仲裁器25接收所有这些 读取请求并将其串行化,并且将被串行化的请求中的一个请求传送给核IO1UO2UO3* 104。 如果检测到与核IO1作出的读取请求相关联的数据存在于Ll缓存中的任何缓存中,则将所 请求的数据从该数据所存在的Ll缓存传送给缓存15lt)如果Ll缓存都不包含该请求数据, 则经由系统总线30从主存储器35重新获得该数据的副本并随后将其存储在缓存IS1中。如上所述,由仲裁器25发出的读取请求使所有的缓存搜索所请求的数据,因而消 耗能量。此外,由于必须接收来自所有核的响应以确定其它缓存是否包含所请求的数据,因 此正在参与执行其它指令而无法处理所请求的操作的核减慢该过程并对其另外完成所述 读取请求将花费的时间造成不利影响。随着微处理器中核数量的增加,一致流量会变得日益繁重,因此导致更多的能耗 以及系统总线带宽使用。当来自多个I/O设备(I/O)的流量请求也被发送给缓存时,该问 题复杂化。

发明内容
根据本发明的一个实施例,在布置在微处理器中的多个处理核之间维持若干一致 域。微处理器包括(部分地)缓存一致性管理器,适合于定义多个处理核中的每个处理核 之间的一致性关系,以使得一致流量仅在被定义为具有一致性关系的处理核之间流动。在一个实施例中,定义处理核之间的一致性关系的数据存储在可编程寄存器中。对于一致请求的每个源,在可编程寄存器中标识该请求的处理核目标。在一个实施例中,可 以将处理核定义成与其它处理核中的每个处理核相一致。在另一个实施例中,可以将每个 核定义成与处理核的子集相一致。在一个实施例中,响应于处理核中的任何一个处理核作出的一致请求,将介入消 息转发给请求核以及所有被定义成与该请求核处于同一个一致域中的核。如果该请求是读 取请求,并且所请求的数据以修改或独占状态存储在接收到介入消息的核中的任何核的缓 冲存储器中,则使请求核可从该缓冲存储器中得到所请求的数据。如果所请求的数据未以 修改或独占状态存储在接收到介入消息的核中的任何核的缓冲存储器中,则使请求核可从 系统存储器、或者从可选的2级缓存或3级缓存中得到所请求的数据。在一个实施例中,一致性管理器包括Ll缓存标记阵列,该Ll缓存标记阵列是被布置在处理核中的聚集的Ll缓存标记的副本。副本缓存标记阵列标识接收介入消息的核,并 且免除具有与每个核相关联的专用副本缓存标记的需要。在另一个实施例中,一致性管理 器包括被配置成遵照所建立的一致性关系来引导介入消息的目录。如果该目录表明核中存 在一致请求所标识的数据,则将介入消息发送给该核。在另一个实施例中,遵照缓存一致性 管理器所维持的多个一致性关系对主系统存储器进行逻辑分区。这样,将每个一致域映射 到主存储器内一定范围的地址并将每个一致域与该一定范围的地址相关联。缓存一致性管理器还适合于维持输入/输出设备与被布置在微处理器中的一个 或更多个处理核之间的一致性。输入/输出设备可以经由总线耦合到微处理器。在一个实施例中,微处理器包括(部分地)第一处理核、第二处理核及第三处理 核,每个包括(部分地)适合于执行程序指令的核;适合于在缓存行中存储数据的缓冲存储 器;以及缓存控制逻辑。在一个实施例中,可编程寄存器中存储的数据可以使第一处理核与 第二处理核成为缓存一致的、第一处理核与第三处理核成为缓存一致的、并且第二处理核 与第三处理核成为非缓存不一致的。根据本发明的另一个实施例,一种在被布置在微处理器中的多个处理核之间控制 一致流量的方法,包括(部分地)允许在被定义为具有一致性关系的处理核之间的一致流 量的流动;以及禁止在被定义为不具有一致性关系的处理核之间的一致流量的流动。响应于从核中的任何一个核接收到一致请求,将介入消息仅发送给被定义为与请 求核相一致的处理核。在一个实施例中,可以将处理核定义成与被布置于微处理器中的其 它核中的每个核相一致。在另一个实施例中,可以将处理核定义成与被布置在微处理器中 的处理核的子集相一致。在一个实施例中,响应于处理核中的任何一个处理核的一致请求,将介入消息转 发给请求核以及所有被定义成与该请求核处于同一个一致域中的核。如果请求是读取请求 并且所请求的数据以修改或独占状态存储在接收到介入消息的核中的任何核的缓冲存储 器中,则使请求核可得到所请求的数据。如果所请求的数据未以修改或独占状态存储在接 收到介入消息的核中的任何核的缓冲存储器中,则使请求核可从系统存储器、或者从可选 的2级缓存或3级缓存得到所请求的数据。在一个实施例中,缓存一致性管理器还适合于 维持输入/输出设备与被布置在微处理器中的一个或更多个处理核之间的一致性。输入/ 输出设备可以经由系统总线耦合到微处理器。


图1是如现有技术中已知的多核微处理器的框图。图2A示出了根据本发明一个实施例的微处理器,该微处理器与若干I/O设备和系 统存储器通信,并且具有多个有选择地维持相互一致或不一致的核。图2B示出了根据本发明一个示例性实施例的1级缓存及其相关联的、被布置在图 2A中所示的核中的一个或更多个核中的双缓存标记阵列。图2C示出了根据本发明另一个示例性实施例的1级缓存及其相关联的、被布置在 图2A中所示的核中的一个或更多个核中的缓存标记阵列。图3示出了被布置在图2的微处理器中的一致性管理器的各种块。图4示出了根据本发明另一个实施例的微处理器,该微处理器与若干I/O设备和 系统存储器通信,并且具有多个有选择地维持相互一致或不一致的核。图5示出了根据本发明另一个实施例的微处理器,该微处理器具有多个有选择地 维持相互一致或不一致以及与其它微处理器相一致或不一致的核。图6是根据本发明一个实施例的被执行以用于维持多个一致域的步骤的流程图。图7示出了被配置成建立与图4相关联的多个一致域的屏蔽寄存器中所存储的示 例性数据。图8示出了根据本发明另一个实施例的被布置在图2的微处理器中的一致性管理 器的各种块。图9示出了根据本发明另一个实施例的被布置在图2的微处理器中的一致性管理 器的各种块。图10示出了根据本发明一个实施例的具有可寻址存储空间的主存储器,该可寻 址存储空间被分区以支持多个一致域。图11示出了使用本发明实施例的示例性计算机系统。
具体实施例方式根据本发明的一个实施例,在被布置在微处理器中的多个处理核之间建立若干一 致域。缓存一致性管理器定义一致性关系,以使得一致流量仅在被定义为具有一致性关系 的处理核之间流动。例如,当应用软件提前获知不同处理核上工作量的分区时,该软件对一 致性管理器进行配置,以使得仅将共享数据的核维持在同一个一致域中。在一个实施例中,将定义处理核之间的一致性关系的数据可选地存储在可编程寄 存器中。在另一个实施例中,将该数据存储在被布置在一致性管理器中的随机存取(RAM) 存储器中。在又一个实施例中,硬连线电路可以提供该数据。虽然部分地参照屏蔽寄存器 提供以下描述,但可以理解的是,可以使用任何其它的存储位置或硬连线电路来定义一致 性关系。 图2A是根据本发明一个示例性实施例的微处理器100的框图,该微处理器经由系 统总线325与系统存储器300和I/O单元310、320通信。微处理器(下文中可替选地称为 处理器)100被示为包括(部分地)四个核IOSiUOS2UOS3* 1054,缓存一致性管理器200 以及可选的2级(L2)缓存305。每个核105J其中,i是范围从1到4的整数)被示为包 括(部分地)处理核IlOp Ll缓存IlSi以及缓存控制逻辑120ρ虽然处理器100的示例性实施例被示为包括四个核,但可以理解的是,处理器100的其它实施例可以包括多于或 少于四个核。每个处理核IlOi适合于响应于程序指令进行多个固定的或可变的操作序列。每个 处理核IlOi可以符合CISC和/或RISC架构,以使用SISD指令或SIMD指令来处理标量或 矢量数据类型。每个处理核IlOi可以包括通用和专用寄存器文件以及被配置成进行逻辑、 算术及任何其它类型的数据处理功能的执行单元。可以将处理核IlO1UlO2UlOdn IlO4(集 体地称为处理核110)配置成进行相同的功能,或者可替选地,可以将其配置成进行适合于 不同应用的不同功能。处理核110可以是单线程或多线程的,S卩,能够并行地执行多个程序 指令序列。每个核IOSi被示为包括1级(Li)缓存。在其它实施例中,每个核IlOi可以包括 更多的缓存级别,例如,2级、3级等。每个缓存1151可以包括指令和/或数据。通常将每 个缓存IKi组织成包括多个缓存行,每行适合于存储与一个或更多个虚拟或物理存储地址 对应的数据的副本。每个缓存行还存储用于管理该缓存行的额外的信息。这种额外的信息 例如包括用于识别与缓存行相关联的主存储器地址的标记信息;以及用于将缓存行中的 数据与其它缓存和或与主系统存储器同步的缓存一致性信息。可以根据与缓存行相关联的 所有或部分存储器地址形成缓存标记。
每个Ll缓存由总线125i耦合到其相关联的处理核IlOp每个总线
括多个用于承载数据和/或指令的信号线。每个核IOSi还被示为包括缓存控制逻辑120i; 以便于去往和来自其相关联的缓存IKi的数据传送。每个缓存1151可以是全关联的、采用 双路或更多路的组关联的、或者直接映射的。为清楚起见,每个缓存1153皮示为用于存储 核IOSi所需要的数据和指令的单个缓冲存储器。虽然未示出,但可以理解的是,每个核105, 可以包括用于存储数据的Ll缓存以及用于存储指令的Ll缓存。每个缓存115,被分区成若干缓存行,每个缓存行对应于共享系统存储器300中一 定范围的相邻位置。在一个实施例中,如下面进一步描述的,每个缓存(例如,缓存115》的 每行包括便于例如缓存1K1、主存储器300和任何其它要与缓存1K1保持一致的缓存1152、 1153、1154之间的一致性的数据。例如,如所公知的,根据MESI缓存一致性协议,将每个缓 存行标记为修改“M”、独占“E”、共享“S”或无效“I”。本发明的实施例还支持其它缓存一致 性协议,例如MSI、MOSI以及MOESI —致性协议。每个核105,经由相关联的总线135,耦合到缓存一致性管理器200。缓存一致性 管理器200便于核IOSi、系统存储器300、I/O单元310、I/O单元320与可选的共享L2缓存 305之间的指令和/或数据的传送。缓存一致性管理器200建立请求的全局次序,发送介入 请求,收集对这些请求的响应,并且将所请求的数据发送回请求核。缓存一致性管理器200 对请求进行排序,以优化存储器存取,对请求进行负载平衡,赋予一个或更多个核高于其它 核的优先级,并且/或者赋予一种或更多种类型的请求高于于其它类型请求的优先级。参 照图2A和图2B,在一个实施例中,Ll缓存IlSi包括用于常规流量的第一缓存标记阵列150 以及用于介入流量的第二缓存标记阵列155。在图2C中所示的另一个实施例中,Ll缓存中 的一个或更多个Ll缓存包括用于常规及介入一致流量的单个缓存标记阵列160。虽然未示 出,但在一些实施例中,核IOSi中的一个或更多个核包括2级(L2)缓存。图3是根据本发明一个实施例的缓存一致性管理器200的框图。缓存一致性管理器200被示为包括(部分地)请求单元205、介入单元210、响应单元215以及存储器接口 单元220。请求单元205包括适合于从核IOSi接收例如读取请求、写入请求、回写请求及任 何其它与缓冲存储器相关的请求的输入端口 225。请求单元205将其从核IOSi接收的请求 串行化并经由端口 230将不一致读取/写入请求、推测一致读取请求以及被修改的缓存数 据的显式和隐式回写请求发送给存储器接口单元220。请求单元205经由端口 235将一致 请求发送给介入单元210。为了避免写后读冲突(readafter write hazard),针对能够生 成写入操作的未决的一致请求来比较读取地址。如果作为该比较的结果检测出匹配,则不 推测性地开始读取请求。响应于从请求单元205接收到的一致介入请求,介入单元210将与发起该请求的核相关联的标识符与屏蔽寄存器260中所存储的数据相比较,以确定核中的哪个核接收该 请求。这样,屏蔽寄存器260识别要保持相互一致的核。结果是,未被屏蔽寄存器260识别 为一致的核将保持互不一致。根据屏蔽寄存器260中所存储的数据,经由输出端口 240将 请求单元205所转发的数据访问请求作为介入消息发给那些要与请求核保持一致的核。如 果核所请求的数据存储在任何接收到介入消息的核的缓冲存储器中,则经由输入端口 245 将此数据返回给介入单元。在另一个实施例中,只有在数据存储在具有独占或修改状态的 缓存行中时,才将所请求的数据返回给介入单元210。介入单元210随后经由输出端口 250 将该数据转发给响应单元205。响应单元215经由输出端口 265将该数据转发给请求(发 起该请求的)核。如果在接收到介入消息的核中的任何核的缓冲存储器中都未找到所请求 的数据并且不推测性地进行读取请求,则介入单元210通过经由输出端口 255将一致读取 或写入请求发送给存储器接口单元220来请求对该数据的访问。读取请求可以不加推测地 继续进行,例如,被布置在请求单元205中并且适合于存储和传送去往存储器接口单元220 的请求的请求存储缓冲器265已满的时候。存储器接口单元220接收来自请求单元205的不一致读取/写入请求以及来自介 入单元210的一致读取/写入请求和回写请求。作为响应,存储器接口单元220经由输入 /输出端口 255访问系统存储器300和/或诸如L2缓存305的更高级的缓冲存储器以完 成这些请求。经由输出端口 260将响应于这些存储器请求从存储器300和/或更高级的缓 冲存储器重新获取的数据转发给响应单元215。响应单元215经由输出端口 265返回请求 核所请求的数据。如所理解的,所请求的数据可以是从另一个核的Ll缓存、从系统存储器 300、或者从可选的更高级的缓冲存储器重新获取的。根据本发明的一个实施例,在处理器100中建立并维持多个一致域。在一个示例 性实施例中,被布置在处理器100中的各种核被分区,以支持两个缓存一致域。例如,核105i 和1052可以形成第一一致域150,并且核1053和1054可以形成第二一致域160。因为核 IOS1* 1052被布置在同一个域150中,所以维持它们的Ll缓存IM1和1152彼此一致。类 似地,因为核1053和1054被布置在同一个一致域160中,所以维持它们的Ll缓存1153和 1154彼此一致。然而,Ll缓存IlS1和1152均不与Ll缓存1153或Ll缓存1154相一致。为了维持被布置在同一个一致域中的Ll缓存之间的一致性,从核中的任何核接 收到的一致请求都仅转发给与该请求核处于同一个一致域中的核。例如,将来自例如核 IOS1的请求作为介入消息仅发送给核IOS1和1052。类似地,将来自例如核1054的请求作 为介入消息仅发送给核1053和1054。为了实现这一点,如上所述,在一个实施例中,被布置在介入单元210中的屏蔽寄存器260存储定义各种核之间的一致性关系的数据。例如,为 了维持核IOS1与核1052彼此一致,屏蔽寄存器260包括使得将来自IOS1和1052的请求作 为介入消息仅发送给核IOS1和核1052的数据。类似地,为了维持核1053与核1054彼此一 致,屏蔽寄存器260包括使得将来自1053和1054的请求作为介入消息仅发送给核1053和 核1054的数据。因此,被布置在处理器100中的核中的任何核所发出的一致请求在介入单元210 发送任何介入消息之前被屏蔽寄存器260接收到。一致请求包括标识请求核的信息并被与 存储在屏蔽寄存器260中的数据相比较。使用以上示例,如果屏蔽寄存器260将请求核识 别为存在于例如一致域150中,则经由输出端口 245将介入消息仅发送给核IOS1和核1052。 另一方面,如果屏蔽寄存器260将请求核识别为存在于例如一致域160中,则经由输出端口 245将介入消息仅发送给核1053和核1054。根据本发明的一个实施例,屏蔽寄存器260使 得用户能够以用户所期望的任何方式来定义各种核之间的一致性关系。具有所请求的数据的核针对该介入更新其缓存状态并提供响应。假设,例如,图2 的核1052请求读取访问而无需修改所请求的数据。根据屏蔽寄存器260中的数据,经由输 出端口 240将介入消息发送给核IOS1和核1052。进一步假设所请求的数据以独占状态存 储在Ll缓存IK1中。相应地,当核IOS1提供所请求的数据时,它还将所提供的缓存行的缓 存状态从独占更新成共享。类似地,如果所请求的数据以例如修改状态存储在Ll缓存IK1 中,则核所请求的行的缓存状态更新成共享并将该数据提供给核1052。如上所述,以 修改或独占状态包含所请求的数据的副本的Ll缓存将把该数据返回给缓存一致性管理器 200的介入单元210。经由缓存一致性管理器200的响应单元215将该数据传送给请求核。 在其它实施例中,如果包含该数据的缓存行不具有无效状态,则返回存储在Ll缓存IK1中 的数据。在一个实施例中,如果在同一个一致域中存在以共享状态在它们各自的Ll缓存 行中具有所请求的数据的副本的多个核,则为了优化的目的,从系统存储器提供所请求的 数据。在一个实施例中,如果一致域中的核的一致读取请求是共享请求并且确定该一致域 中的其它核都不包含所请求的数据的副本,则将共享状态升级到独占状态。该升级确保当 该一致域中的另一个核随后请求对同一数据的访问时,由以独占状态具有该数据的副本的 核来提供所请求的数据。将来自核中的任何核的一致读取请求转发给存储器接口单元220以用于对存储 器300的推测读取。推测读取假设在与请求核一致的核中的任何核中都将不会找到所请求 的数据。如果响应于介入消息找到所请求的数据,则对存储器300的推测读取在它还未被 存储器接口单元220发出的情况下被取消,或者可替选地,该响应在它从系统存储器300返 回时被丢弃。参照图2A和图3,微处理器100还被示为包括(部分地)1/0 —致单元325,适合 于与一致性管理器200协作操作,以根据屏蔽寄存器260中所存储的数据有选择地提供I/ 0单元310、I/O单元320与核105”1052、1053和1054中的一个或更多个核之间的一致性。 例如,可以将屏蔽寄存器260配置成建立I/O单元310与核IOS1UOS2之间、或者I/O单元 310与核IOSiUOS2UOS3* 1054之间、或者任何其它组合的一致性。还可以经由屏蔽寄存器 260中所存储的数据有选择地建立I/O单元320与一个或更多个核IOSiUOS2UOS3和1054之间的一致性。在图2A中,I/O单元310、I/O单元320被示为经由系统总线30与I/O— 致单元325通信。在其它实施例中,I/O单元310、1/0单元320经由不同的总线(未示出) 与I/O —致单元325通信。例如,假设要维持I/O单元310与全部四个核1051、1052、1053和1054相一致,并且 要维持I/O单元320与核IOS1和1053相一致。相应地,屏蔽寄存器260配置有这种数据 其使得将任何来自I/O单元310的针对数据的一致读取请求作为介入消息转发给全部四个 缓存115ρ1152、1153和1154类似地,如果例如I/O单元310发出一致写入请求,则根据屏 蔽寄存器260中的数据使存在于缓存115ρ1152、1153* 1154中的任何缓存中的任何旧数据 无效。类似地,屏蔽寄存器260配置有这种数据其使得将任何来自I/O单元320的针对数 据的一致读取请求作为介入消息转发给缓存IOS1和1053。结果是,如上所述根据本发明的一个实施例,可以将屏蔽寄存器260配置成实现 I/O单元310与例如核105”1052、1053和1054之间的一致性,而同时,⑴维持I/O单元320 与例如核1052、1054相一致,(ii)维持核105!与核1052彼此一致,并且(iii)维持核1053 与核1054彼此一致,而(iv)维持核IOS1、核1052与核1053、核1054不一致。屏蔽寄存器260 包含针对每个核或每个I/O设备识别介入消息能来自何处、或者介入消息将被发送给哪些 核的数据。这样,屏蔽寄存器260使得用户能够独立地且有选择地定义数据处理系统的各 种处理核、I/O单元等之间的一致性关系。在一些实施例中,定义各种核之间的一致性关系 的数据存储在被布置在例如一致性管理器中的随机存取存储器(RAM)中。在又一个实施例 中,可以使用硬连线电路来提供该数据。图4示出了被分区成三个一致域的微处理器100中的核,根据这些域,核IOS1与核 1052、1053和1054中的每个核相一致,而维持核1052、1053和1054互不一致。当核IOS1被 配置为专用于控制层面功能的主核而核1052、1053和1054被配置为专用于数据层面功能的 从核时,可以使用对一致域的该分区。数据层面中的每个从核是独立的,并且对不同的数据 集进行操作。因此,从核不需要彼此缓存一致。然而,主核Ios1被配置成监管并控制从核 1052、1053和1054的活动。相应地,根据屏蔽寄存器260中所加载的数据维持主核IOS1与 从核1052、1053和1054缓存一致。假设维持I/O单元310与全部四个核105” 1052、1053和 1054相一致,并且假设维持I/O单元320与核IOS1和1053相一致。包括缓存一致性管理器的多核处理器(例如处理器100)可以与不具有维持缓存 一致性所需的逻辑的其它处理器一起使用。图5是包括处理器100 (图2)、系统存储器300 以及处理器400、450和460的系统的框图。处理器400包括(部分地)L1缓存415和缓存控制逻辑420。处理器400使用 端口 480维持与一致性管理器200的直接通信。假设处理器400不包括缓存一致性管理器 或介入端口。因此,不能维持处理器400的Ll缓存415与Ll缓存IIS1UIS2UIS3* 1154 中的任何缓存相一致。假设处理器400要保持与核IOSiUOS2UOS3和1054完全不一致。相 应地,如果处理器400所请求的数据不存在于其相关联的Ll缓存415中,则处理器400在 可选的L2缓存305或系统存储器300中查找该数据。因为处理器400与核IOS1UOS2UOS3 和1054完全不一致,所以它不在缓存115ρ1152、1153* 1154中的任何缓存中查找所请求的 数据。处理器450包括Ll缓存465和缓存控制逻辑470。处理器450使用端口 490维持与一致性管理器200的直接通信。还假设处理器450不包括缓存一致性管理器或介入端 口。因此,不能维持处理器450的Ll缓存465与Ll缓存IIS1UIS2UIS3* 1154中的任何 缓存相一致。假设,例如,要保持处理器450与核IOS1和核1052部分地一致,如屏蔽寄存器 260所定义的。如果具有不包括介入端口和/或缓存一致性管理器的缓冲存储器的处理器 被配置成在访问系统存储器或L2缓存之前首先在被布置在其它核中的缓冲存储器中查找 所请求的数据,则将该处理器定义为与其它核部分地不一致。因此,如果例如处理器450所 请求的数据不存在于其相关联的Ll缓存465中,则根据屏蔽寄存器260中所存储的数据使 得将其读取请求作为介入消息发送给核IOS1和1052。如果这些核都不具有所请求的数据 的副本,则访问L2缓存305或系统存储器300以获得该数据。类似地,当处理器450请求 例如写入操作时,需要使核IOS1和核1052中存在的该数据的任何旧副本无效。处理器460不包括Ll缓存,并使用端口 495维持与一致性管理器200的直接通信。 因为假设处理器460不包括缓冲存储器,所以它可以保持与缓冲存储器IOSiUOS2UOS3和 1054完全一致。例如,处理器460响应于读取请求接收所请求的数据的最新副本。同样地,当处理器460发出写入请求时,存在于缓冲存储器IOSiUOS2UOS3和1054中的任何缓冲存 储器中的任何旧数据变成无效。图6是根据本发明一个示例性实施例的被执行以建立并维持多个一致域的步骤 的流程图500。为实现这一点,存储502将每个一致请求的目标映射到一致请求的源的若干 条目;该映射定义各种一致性关系。为了维持一致域,当接收到一致请求时,识别504该请 求的源。作为响应,根据所存储的条目,将介入消息发送506给每个被定义为与请求核处于 同一个一致域中的核。接下来,在接收介入消息的核的缓冲存储器中查找508所请求的数 据。如果出现510缓存命中,则按照请求类型以及数据的一致性状态,使得请求核可从导致 生成缓存命中信号的缓存得到对所请求的数据的访问。如果出现缓存未命中,则使得请求 核512可经由系统存储器或者可选的L-2或L-3缓存得到对所请求的数据的访问。图7示出了被配置成建立以上参照图4所描述的多个一致域的屏蔽寄存器260 中所存储的示例性数据。核IOS1所发出的请求导致选择条目编号1,S卩,“000”,根据与此 条目相关联的掩码值“001111”,其继而使得将介入消息发送给所有的核Ios1UOS2UOS3和 1054。核1052所发出的请求导致选择条目编号2,S卩,“001”,根据与此条目相关联的掩码值 “000011”,其继而使得将介入消息发送给核IOS1和核1052。核1053所发出的请求导致选 择条目编号3,S卩,“010”,根据与此条目相关联的掩码值“000101”,其继而使得将介入消息 发送给核IOS1和核1053。核1054所发出的请求导致选择条目编号4,S卩,“011”,根据与此 条目相关联的掩码值“001101”,其继而使得将介入消息发送给核IOS1、核1053和核1054。 I/O单元310所发出的请求导致选择条目编号5,即,“ 100”,根据与此条目相关联的掩码值 “001111”,其继而使得将介入消息发送给所有的核IOSiUOS2UOS3* 1054。I/O单元320所 发出的请求导致选择条目编号1,即,“101”,根据与此条目相关联的掩码值“000101”,其继 而使得将介入消息发送给核IOS1和核1053。通过定义多个一致域并确保仅在能够从它们的一致性获益的设备(例如,核、I/O 等)之间维持一致性,得到许多益处。就减少缓存查找数量以及调用更少的响应而言,实现 性能提升并且减少功耗。缓存查找的减少还可以免除为每个缓存配备复制的标记阵列的需 要,其中,一个这种阵列用于常规缓存流量,并且另一个用于介入流量。由于建立多个一致域而引起的一致流量的减小可以使一致流量最小化到如下程度缓存大小的所得到的增加 胜过包括第二缓存标记阵列以容纳一致流量的任何好处。换言之,由于只在如此需要的设 备之间维持一致性,因此减少了介入消息的数量,因而可以避免每个缓存内复制的标记阵 列的需要。因此,其上形成本发明的处理器的半导体晶片可以具有更小的尺寸。
图8是根据本发明另一个实施例的缓存一致性管理器200的框图。图8中所示的 缓存一致性管理器的实施例使用Ll缓存标记阵列360来维持一致域。Ll缓存标记阵列360 是核中所存储的聚集的Ll缓存标记的副本,并且可以被逻辑分区成分别与Ll缓存115” 1152、1153和1154相关联的四个标记阵列SeS1JeS2JeS3和3654。将与发起请求的核相关 联的标识符与屏蔽寄存器260中所存储的索引相比较,以确定随后将被搜索以便继而识别 将接收相应介入消息的核105,的Ll标记阵列分区365”换言之,在Ll缓存标记阵列360 中搜索所得到的命中识别出核中的哪个(如果有的话)核包含所请求的数据,并且将使得 将介入消息仅发送给该核。Ll缓存标记阵列360消除了每个核内具有专用的复制的缓存标 记的需要。图9是根据本发明另一个实施例的缓存一致性管理器200的框图。图9中所示的 缓存一致性管理器的实施例使用目录600来维持一致域。目录600与屏蔽寄存器260 —起 适合于遵照所建立的一致性关系并基于该请求的地址来引导介入消息。对于每个一致请 求,目录600识别出可能是该请求的目标的一个或更多个核并将该信息提供给屏蔽寄存器 260。作为响应并根据该信息,屏蔽寄存器260使用其中所存储的掩码值来使得将介入消息 转发给有可能包含所请求的数据的核。接收该介入消息的核将在其各自的Ll缓存中搜索 该数据。根据规则更新目录600,这些规则使得目录600能够识别出未存储在缓存中的任 何缓存中的一致数据。然而,被目录600识别为存储在Ll缓存中的数据可能实际上并不存 在于该缓存中。被目录600识别为存储在缓存中并且随后被检测为存在于该缓存中的数据 在存储该数据的缓存行不处于无效状态的情况下被视为有效。目录600使用寻址方案来确 定介入消息的目标。在一些实施例中,遵照缓存一致性管理器所定义的多个一致域对主存储器300进 行逻辑分区。这样,将每个一致域映射到并关联到存储器300内一定范围的地址。使用与 请求相关联的地址来识别被搜索以访问所请求的数据的主存储器分区。例如,参照图4,假设存储器300被分区以支持核IOS1与核1052、核1053和核1054 中的每个核之间的一致性,以及核1052、核1053和核1054之间的不一致性。图10是存储器 300的这种分区的示例。涵盖0与L之间的地址范围的分区350被示为专用于存储维持核 IOS1与核1052之间的一致性的数据的副本。涵盖L+1与M之间的地址范围的分区355被 示为专用于存储维持核IOS1与核1053之间的一致性的数据的副本。涵盖M+1与N之间的 地址范围的分区360被示为专用于存储适合于维持核IOS1与核1054之间的一致性的数据 的副本。涵盖N+1与0之间的地址范围的分区365被示为专用于存储适合于维持所有的核 IOSiUOS2UOS3* 1054上的一致性的数据的副本。涵盖0+1与P之间的地址范围的分区370 被示为专用于存储仅被核IOS1使用的数据的副本。涵盖大于P+1的地址范围的分区375被 示为专用于存储非可缓存的数据。在一些实施例中,被布置在缓存一致性管理器200中的 介入单元210操纵主存储器300的逻辑分区以及每个一致域与相关联的存储器300的分区之间的映射。如上所述,在一个实施例中,使用与请求相关联的地址来提供所需映射并访问 相应的存储器分区。在另一个实施例中,使用与发出请求的核相关联的标识符来提供所需映射并访问相应的存储器分区。在又一个实施例中,使用请求地址和与发出请求的核相关 联的标识符的组合来提供所需映射并访问相应的存储器分区。图11图解了在其中可以实施本发明的示例性计算机系统1000。计算机系统1000 通常包括一个或更多个输出设备1100,包括显示设备(例如,CRT、IXD、OLED、LED、气体等 离子体、电子墨水、或其它类型的显示器)、扬声器以及其它音频输出设备、和触觉输出设备 (例如,激振器);计算机1200 ;键盘1300 ;输入设备1400 ;以及网络接口 1500。输入设备 1400可以包括计算机鼠标、轨迹球、操纵杆、触控板、绘图板、触摸屏、麦克风、各种传感器、 和/或其它允许用户或环境与计算机系统1000交互的有线或无线输入设备。网络接口 1500 通常提供与电子通信网络(例如,局域网;广域网,例如因特网;和/或虚拟网络,例如虚拟 专用网(VPN))的有线或无线通信。网络接口 1500可以实施一种或更多种有线或无线网络 技术,包括以太网、802. 11标准中的一个或更多个标准、蓝牙、以及超宽带联网技术。计算机1200通常包括诸如一个或更多个通用处理器1600的组件、以及诸如随机 存取存储器(RAM) 1700和非易失性存储器1800的存储器存储设备。非易失性存储器1800 可以包括软盘;固定的或可移动的硬盘;诸如DVD-ROM、CD-ROM以及条形码的光存储媒体; 诸如闪存的非易失性半导体存储设备;只读存储器(ROM);电池供电的易失性存储器;纸或 其它打印介质;以及联网的存储设备。系统总线1900将以上组件互连。处理器1600可以 是诸如上述多处理器100的多处理器系统。RAM 1700和非易失性存储器1800是用于存储数据、音频/视频文件、计算机程序、 小应用程序解释器或编译器、虚拟机、以及上述的本发明的实施例的有形介质的示例。例 如,本发明的处理器的上述实施例可以被表示为使得能够进行计算机系统和/或集成电路 的设计、描述、建模、仿真、测试、集成、和/或制造的人可读的或计算机可用的程序和数据 文件。这种程序和数据文件可以用于以单独集成电路的形式实施本发明的实施例,或者用 于将本发明的实施例与其它组件集成以形成组合的集成电路,例如,微处理器、微控制器、 片上系统(SoC)、数字信号处理器、嵌入式处理器、或专用集成电路(ASIC)。表达本发明实施例的程序和数据文件可以使用通用编程或脚本语言,例如C或 C++ ;硬件描述语言,例如VHDL或Verilog ;微码,实施于RAM、ROM中,或者被硬连线并适合 于控制并协调处理器或其它集成电路内的组件的操作;和/或标准或专有格式数据文件, 适用于本领域中已知的电子设计自动化软件应用。程序和数据文件可以按各种抽象级别表 达本发明的实施例,包括按功能描述、按逻辑门和其它电路组件的综合网表、以及按适用 于半导体制造工艺的集成电路布图或一组掩模。计算机所执行的电子设计自动化软件可以 处理这些程序和数据文件,以设计处理器并生成用于其制造的掩模。计算机1200进一步的实施例可以包括用于配置、操作、仿真、测试在集成电路的 设计、测试和制造中使用的专用硬件和软件并且与之通信的专用输入、输出以及通信子系 统。虽然本发明的以上实施例是参照具有四个核的处理器作出的,但可以理解的是, 处理器可以具有多于或少于四个核。框图中所示出的各种设备的数量和布置是为清楚和易 于理解起见。可以理解的是,块的组合、新块的添加、块的重新布置等落入本发明的可替选实施例内。例如,任意数量的I/O、一致多核处理器、系统存储器、L2缓存和L3缓存以及不 一致缓存或无缓存处理核也可以用在单个系统中并根据屏蔽寄存器进行分区以形成多个 一致域和不一致域。另外,虽然本发明是参照用屏蔽寄存器定义各种一致域来进行描述的, 但可以理解的是,根据本发明,可以使用任何其它存储介质(例如RAM)以及任何其它技术 (例如查找表)等来建立一致域并提供一致请求的发起者与所引起的介入消息的目标之间 的映射。可以理解的是,本文中所描述的装置和方法可以被包括在诸如微处理器核的半导 体知识产权核中(例如,被表达为硬件描述语言描述或综合网表),并在集成电路的生产中 被转变成硬件。另外,可以使用硬件与软件的组合(包括适用于在处理器内执行的微码) 来实施本发明的实施例。本发明的以上实施例是示例性的而非限制性的。可存在各种替选方案和等同物。本发明不限于可以布置本公开的集成电路的类型。本发明也不限于任何具体类型的工艺技 术,例如,CMOS、双极、BICM0S、或其它可以用于制造本发明各种实施例的方式。其它的增、减 或修改根据本发明是明显的并且意在落入所附权利要求的范围内。
权利要求
一种微处理器,包括多个处理核;以及缓存一致性管理器,其适合于定义所述多个处理核之间的多个一致性关系,以使得被表征为与一致性关系相关联的流量仅在被定义为具有所述一致性关系的处理核之间流动。
2.根据权利要求1所述的微处理器,其中,响应于从所述多个处理核中的第一处理核 接收请求,所述缓存一致性管理器将介入消息发送给所述多个处理核的被定义为与所述多 个处理核中的所述第一处理核具有一致性关系的第一子集,所述第一子集包括所述多个处 理核中的所述第一处理核。
3.根据权利要求2所述的微处理器,其中,根据从由可编程寄存器、随机存取存储器和 硬连线电路组成的组提供的数据定义所述多个一致性关系。
4.根据权利要求2所述的微处理器,其中,所述缓存一致性管理器还包括逻辑电路,其 适合于如果所述请求是读取访问请求,并且所述请求所标识的数据存储在与所述多个处理核 中被布置在所述第一子集中的第二处理核相关联的缓冲存储器中,则将所述数据从与所述 多个处理核中的所述第二处理核相关联的所述缓冲存储器传送给所述多个处理核中的所 述第一处理核。
5.根据权利要求4所述的微处理器,其中,所述缓存一致性管理器还包括逻辑电路,其 适合于如果所述数据未存储在与所述第一子集相关联的所述缓冲存储器中,则将所述数据从 2级缓存和系统存储器中的一个传送给所述多个核中的所述第一核。
6.根据权利要求3所述的微处理器,其中,所述缓存一致性管理器还包括逻辑电路,其 适合于根据所提供的数据维持第一输入/输出设备与所述多个处理核的第二子集相一致, 所述输入/输出设备经由系统总线耦合到所述微处理器。
7.根据权利要求1所述的微处理器,其中,所述多个处理核中的至少一个处理核包括 单个缓存标记阵列。
8.根据权利要求2所述的微处理器,其中,所述缓存一致性管理器还包括逻辑块,其适 合于将主存储器逻辑分区成多个可寻址的区域,每个区域被配置成存储与所述一致性关系 中一个不同的一致性关系相关联的一致数据,所述主存储器经由系统总线耦合到所述微处理器。
9.根据权利要求2所述的微处理器,其中,所述缓存一致性管理器被配置成根据与所 述多个处理核中的所述第一处理核相关联的标识符以及所述请求所定义的地址中的一个, 将所述介入消息发送给所述多个处理核的所述第一子集。
10.一种在被布置在微处理器中的多个处理核之间控制一致流量的方法,该方法包括允许在所述多个处理核中被定义为具有一致性关系的第一组处理核之间的一致流量 的流动;以及禁止所述多个处理核中被定义为不具有一致性关系的第二组处理核之间的一致流量 的流动。
11.根据权利要求10所述的方法,还包括从所述多个处理核中的第一处理核接收第一请求;以及将介入消息发送给所述多个处理核的被定义为与所述多个处理核中的所述第一处理 核具有一致性关系的第一子集,所述第一子集包括所述多个处理核中的所述第一处理核。
12.根据权利要求11所述的方法,还包括如果所述第一请求是读取请求,并且所述第一请求所标识的数据存储在与所述多个处 理核中被布置在所述第一子集中的第二处理核相关联的缓冲存储器中,则将所述数据从与 所述多个处理核中的所述第二处理核相关联的所述缓冲存储器传送给所述多个处理核中 的所述第一处理核。
13.根据权利要求11所述的方法,还包括维持第一输入/输出设备与所述多个处理核的第二子集之间的一致性,所述输入/输 出设备经由系统总线耦合到所述微处理器。
14.根据权利要求13所述的方法,还包括维持被布置在所述微处理器中的所述多个处理核中的所述第一处理核与所述多个处 理核中的所述第二处理核之间的缓存一致性;维持被布置在所述微处理器中的所述多个处理核中的第一处理核与所述多个处理核 中的所述第三处理核之间的缓存一致性;以及维持所述多个处理核中的所述第二处理核与所述多个处理核中的所述第三处理核之 间的缓存不一致性。
15.根据权利要求11所述的方法,还包括将单个缓存标记阵列布置在所述多个处理核中的至少一个处理核中。
16.根据权利要求11所述的方法,还包括根据从由可编程寄存器、随机存取存储器和硬连线电路组成的组提供的数据来定义所 述一致性关系。
17.根据权利要求11所述的方法,还包括经由系统总线将主存储器耦合到所述微处理器;以及将所述主存储器逻辑分区成多个区域,每个区域适合于存储与多个一致性关系中一个 不同的一致性关系相关联的一致数据。
18.根据权利要求11所述的方法,还包括根据与所述多个处理核中的所述第一处理核相关联的标识符以及所述请求所定义的 地址中的一个,将所述介入消息发送给所述多个处理核的所述第一子集。
19.一种计算机可读存储介质,包括定义微处理器的逻辑块的指令,所述微处理器包括 多个处理核,所述计算机可读存储介质适合于由计算机所执行的电子设计自动化应用来使 用,其中,所述逻辑块被配置成进行操作,该操作包括允许在所述多个处理核中被定义为具有一致性关系的第一组处理核之间的一致流量 的流动;以及禁止所述多个处理核中被定义为不具有一致性关系的第二组处理核之间的一致流量 的流动。
20.根据权利要求19所述的计算机可读存储介质,其中,所述逻辑块还适合于进行操 作,该操作包括从所述多个处理核中的第一处理核接收第一请求;以及将介入消息发送给所述多个处理核的被定义为与所述多个处理核中的所述第一处理 核具有一致性关系的第一子集,所述第一子集包括所述多个处理核中的所述第一处理核。
21.根据权利要求20所述的计算机可读存储介质,其中,所述逻辑块还适合于进行操 作,该操作包括如果所述第一请求是读取请求,并且所述第一请求所标识的数据被存储在与所述多个 处理核中被布置在所述第一子集中的第二处理核相关联的缓冲存储器中,则将所述数据从 与所述多个处理核中的所述第二处理核相关联的所述缓冲存储器传送给所述多个处理核 中的所述第一处理核。
22.根据权利要求20所述的计算机可读存储介质,其中,所述逻辑块还适合于进行操 作,该操作包括维持第一输入/输出设备与所述多个处理核的第二子集之间的一致性,所述输入/输 出设备经由系统总线耦合到所述微处理器。
23.根据权利要求19所述的计算机可读存储介质,其中,所述多个处理核中的至少一 个处理核包括单个缓存标记阵列。
24.根据权利要求20所述的计算机可读存储介质,其中,所述逻辑块还适合于进行操 作,该操作包括将主存储器逻辑分区成多个区域,每个区域适合于存储与多个一致性关系中一个不同 的一致性关系相关联的一致数据。
25.根据权利要求20所述的计算机可读存储介质,其中,所述逻辑块还适合于进行操 作,该操作包括根据与所述多个处理核中的所述第一处理核相关联的标识符以及所述请求所定义的 地址中的一个,将所述介入消息发送给所述多个处理核的所述第一子集。
全文摘要
在被布置在微处理器中的多个处理核之间维持若干一致域。缓存一致性管理器定义一致性关系,以使得一致流量仅在被定义为具有一致性关系的处理核之间流动。定义处理核之间的一致性关系的数据可选地存储在可编程寄存器中。针对一致请求的每个源,在可编程寄存器中识别该请求的处理核目标。响应于一致请求,将介入消息仅转发给被定义成与请求核处于同一个一致域中的核。如果响应于一致读取请求出现缓存命中并且引起该命中的缓存行的一致性状态满足条件,则使得请求核可从该缓存行得到所请求的数据。
文档编号G06F11/00GK101802790SQ200880108013
公开日2010年8月11日 申请日期2008年9月19日 优先权日2007年9月21日
发明者瑞安·C·金特 申请人:美普思科技公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1