满足部分写和非监听存取之间的存储器排序要求的制作方法

文档序号:6579327阅读:242来源:国知局
专利名称:满足部分写和非监听存取之间的存储器排序要求的制作方法
技术领域
本发明涉及高速点对点互连链路,尤其涉及用于实现一致互连架构的 一致性协议。
背景技术
当电子系统包括多个高速缓冲存储器时,维持该系统中保持的数据的 有效性或一致性以确保数据操作的完整性。 一致性通常通过根据高速缓存 一致性协议操纵数据来实现。随着高速缓存和/或处理器的数量增加,维持 一致性的复杂程度增加,这可能导致系统的多个组件之间的更多冲突。例如,当多个组件(例如高速缓冲存储器、处理器)请求同一数据块 时,多个组件之间的冲突按照维持数据有效性的方式来解决。早先的高速 缓存一致性协议通常只让单个组件对冲突解决负责。然而,随着系统复杂 程度的提高,依赖于单个组件来解决冲突会降低总的系统性能。一般而言,存在两种提供高速缓存一致性的基本方案监听(现在通 常称为对称多处理,SMP)和目录(现在通常称为分布式共享存储DSM)。 这两种方案之间的基本差别围绕在元信息的放置和存取;g卩,有关在何处 保存高速缓存线的副本的信息。对于基于目录的方案而言,除存储未被高速缓存的数据的固定位置以 外,还存在指示已高速缓存的副本驻留在何处的一固定位置,即目录。为 了按照新的方法存取高速缓存线, 一个节点必须与包含该目录的节点(通 常是包含未高速缓存数据存储库的同一节点)通信,从而允许响应的节点 在主存储副本有效时提供数据。在目录系统中,这样的节点被称为归属节 点。目录可按照两种方式来分发。首先,主存储数据(未高速缓存储存库) 通常在节点之间分发,且目录按照相同方式来分发。其次,元信息本身可被分发,从而在归属节点处只保持关于该线是否被高速缓存,以及如果是, 则单个副本驻留在何处的信息。例如,SCI使用该方案,其中包含高速缓存 的副本的每一节点维护到具有高速缓存的副本的其它节点的链接,从而共 同维护完整的目录。为监听高速缓存,元信息与高速缓存的副本本身一起分发,以使高速 缓存线的每一有效副本由一单元保持,该单元用来识别存取高速缓存线的 请求并相应地作出响应。通常,存在数据以未高速缓存状态,即其原始位 置保持的储存库。通常,对此原始位置负责的代理或单元被称为归属节点。 当请求对高速缓存线的存取时,作出请求的节点通常广播所请求的高速缓 存线的地址以及所需的许可,而持有所请求的高速缓存线的副本的节点据 此作出响应。然而,在某些现有的一致性和消息通信协议下,在特定情况下对高速 缓存线的部分读和非监听存储器存取(即一致性架构中的非一致性存取) 可能导致将无效数据转发给请求者。通常这些情况源自对协议内的存储器 排序规则的违反。因此,接收到无效数据的代理可能执行非法操作,这有 可能导致系统内的不稳定。


本发明通过示例进行说明,而且不旨在受限于附图的各图。 图1示出协议架构的一个实施例。图2示出包括利用点对点互连耦合至芯片组的多个处理器的系统的实 施例。图3示出利用分层的输入/输出(I/O)栈的双向互连架构的框图的实施例。图4a示出可能导致存储器排序违反的、多个节点之间的消息通信协议 的协议图的实施例。图4b示出可能导致存储器排序违反的、多个节点之间的消息协议的协 议图的另一实施例。图5a示出遵守正确的存储排序要求的、包括冲突阶段中的消息的消息通信协议的协议图的实施例。图5b示出遵守正确的存储排序要求的、包括冲突阶段中的消息的消息 通信协议的协议图的另一实施例。图6a示出遵守正确的存储排序要求的、包括冲突阶段之前插入的数据 写回阶段的消息通信协议的协议图的实施例。图6b示出遵守正确的存储排序要求的、包括冲突阶段之前插入的数据 写回阶段的消息通信协议的协议图的实施例。图6c示出遵守正确的存储排序要求的、包括冲突阶段中的消息的消息 通信协议的协议图的另 一 实施例。图7a示出遵守正确的存储排序要求的、包括冲突阶段之后的消息的消 息通信协议的协议图的实施例。图7b示出遵守正确的存储排序要求的、包括冲突阶段之后的消息的消 息通信协议的协议图的另 一 实施例。图7c示出遵守正确的存储排序要求的、包括冲突阶段之后的消息的消 息通信协议的协议图的另一实施例。
具体实施方式
在以下描述中,陈述了诸如特定互连架构、特定消息、特定伪代码、 特定互连架构层等的示例之类的多个特定细节以提供对本发明的透彻理 解。然而对本领域普通技术人员显而易见的是,不一定要采用这些特定细 节来实施本发明。在其它实例中,没有详细描述诸如特定互连层架构细节、 特定非关消息和协议、处理器和高速缓存的特定操作细节等之类的公知组 件或方法,以避免不必要地混淆本发明。此处描述的方法和装置是为了提供互连架构中的部分存取与非监听存 储器存取之间的正确存储器排序。具体而言,对存储器排序要求的遵守主 要参考说明性的基于高速缓存一致链路的互连架构来讨论。然而,提供正 确存储器排序要求的方法和装置不如此受限,他们可利用任何互连架构来 实现。说明性互连架构的实施例图1示出高层简化的协议架构的实施例。在一个实施例中,该协议架 构用来在正常事务期间以及在冲突请求期间维持架构内的高速缓存中的数 据之间的数据一致性。此外,在一个实施例中,该协议架构还为各个请求 提供前向进展,以使各个请求被满足并引退。协议架构可包括任何数量的节点或代理。在一个实施例中,节点包括 与内部高速缓冲存储器、外部高速缓冲存储器、和/或外部存储器相关联的 处理器。然而,在互连架构中,节点或代理可指代任何设备或他们的集合, 诸如处理器、存储器控制器集线器以及I/O集线器、通用控制器集线器、I/O 设备、I/O设备的集合、或能够存取存储器的任何其它设备/组件。在另一 实施例中,节点是与其它电子系统互连的电子系统(例如计算机系统、移 动设备)。还可使用其它类型的节点配置。如图所示,架构100包括高速缓存节点/代理105-106和归属代理 110-112。在一个实施例中,归属代理110-112用来保卫作为一致性存储空 间的最终储存库的存储位置。换言之,代理110是负责一致性存储空间的 数据的多个原始物理存储位置的归属代理。归属代理110-112可执行以下 任务的任何组合,包括跟踪来自高速缓存代理105-106的高速缓存状态 转移、管理高速缓存代理105-106之间的冲突、与存储器接口、提供数据 和/或所有权、以及任何其它已知的归属代理相关的任务。在一个实施例中,高速缓存代理105-106包括与高速缓冲存储器相关 联的代理,诸如包括高速缓冲存储器的处理器和高速缓存I/O代理实体。 高速缓存代理105-106可执行以下任务的任何组合诸如执行对一致性存 储空间的读和写请求、保持来自一致性存储空间的数据的高速缓存的副本、 以及向其它对等高速缓存代理提供高速缓存的副本,以及执行任何其它任 务。 一个高速缓存代理或节点也可被称为与另一高速缓存代理有关的对等 代理/节点。虽然未在图1中具体示出,但该协议架构还可包括诸如代表1/0 设备参与或见证事务的输入/输出(I/O)集线器之类的非高速缓存代理。在一个实施例中,高速缓存代理105-106和归属代理110-112维持数据 一致性,并通过在网络结构101上交换消息来提供前向进展。在一个实施例中,结构101便于消息从一个代理/节点通过点对点互连网络到另一个代理/节点的传输。通常说图1描述了底层网络的高速缓存一致性协议的抽象示图。
在一个实施例中,互连架构100可包括如以下共同待审的申请所描述的新颖特征的任何组合。例如,题为"用于多结点系统中的高速缓存一致性
的转发状态(Forward State for Use in Cache Coherency in a Multi-NodeSystem)"的美国专利号6,922,756描述了对转发高速缓存一致性状态(F状态)的利用。而且,在2004年4月27日提交的题为"2跳高速缓存一致性协议(A Two-Hop Cache Coherency Protocol)"的美国专利申请号10/833,963(案巻号P15925) 、 2004年4月27日提交的题为"消息通信协议(AMessaging Protocol)"的美国专利申请号10/833,965 (案巻号P188卯)、2004年4月27日提交的题为"高速缓存一致性协议(A Cache Coherence Protocol)"的美国专利申请号10/833,977 (案巻号P18891) 、 2006年1月11日提交的题为"基于源监听的2跳高速缓存一致性协议(A Two-Hop Source SnoopBased Cache Coherence Protocol)"的美国专利申请号11/330,977 (案巻号P22376)、以及2006年1月11日提交的题为"基于源监听的2跳消息通信协议(A Two-Hop Source Snoop Based Messaging Protocol)"的美国专利申请号11/331,301 (案巻号P23106)中讨论了各种情形下的一致性协议的示例,其它示例包括2002年12月19日提交的题为"用于高速缓存一致性协议的推测性分布式冲突解决(Speculative Distributed Conflict Resolution for aCache Coherency Protocol)"的美国专利申请号10/325,427(案巻号P13923);2002年12月19日提交的题为"用于多处理器系统中的高速缓存一致性的分层目录(Hierarchical Directories for Cache Coherency in a MultiprocessorSystem)"的美国专利申请号10/326,234 (案巻号P13984); 2002年12月19日提交的题为"多处理器系统中的高速缓存分层结构的分层虚拟模型(Hierarchical Virtual Model of a Cache Hierarchy in a Multiprocessor System)"的美国专利申请号10/324,711 (案巻号P13985); 2002年12月19日提交的题为"用于高速缓存 一 致性协议的非推测性分布式冲突解决(Non-Speculative Distributed Conflict Resolution for a Cache CoherencyProtocol)"的美国专利申请号10/326,232 (案巻号P13986)。
要注意的是,在上述共同待审的申请中描述的特征可包括在本文所描述的实施例中;然而,本文中所描述的实施例并不如此受限,因为他们可包括附加特征,而且可能不包括任何一个上述特征。
图2示出包括利用点对点互连架构耦合至芯片组的多个处理器的系统的实施例。图2的系统还可包括若干处理器,但为了清楚起见仅示出了其中两个处理器205、 210。如图所示,处理器205、 210各自包括两个处理元素206-207、 211-212;不过处理器205、 210中可包括任意数量的处理元素。
处理元素指的是线程单元、进程单元、上下文、逻辑处理器、硬件线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元素。换言之,在一个实施例中,处理元素指的是能够与诸如软件线程、操作系统、应用程序、或其它代码之类的代码独立地相关联的任何硬件。作为示例,物理处理器通常指的是集成电路,其可能包括任意数量的诸如核或硬件线程之类的其它处理元素。
核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少某些专用执行资源相关联。与核相反,也被称为物理线程的硬件线程通常指的是位于集成电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的存取。因此,如可理解的,在一个实施例中,诸如单线程应用程序的多个复制之类的多个软件线程能在多个处理元素上并行执行,所述多个处理元素可包括诸如核或硬件线程之类的上述处理元素的任一个的组合。
在处理器205、 210中还示出了资源208、 213,其通常包括寄存器、单元、逻辑、固件、存储器、以及用来执行代码或与其它设备接口的其它资源。如上所述,资源110中的某一些可部分或完全地专用于处理元素,而其它的可在处理元素之间共享。例如,诸如指令指针和重命名逻辑之类的较小的资源可针对物理线程来复制。诸如重排序器/引退单元中的重排序缓冲器、指令后备转换缓冲器(ILTB)、载入/存储缓冲器、以及队列等资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据缓存、数据TLB、执行单元、以及无序单元等其它资源可能在线程之间被完全共享。反之,核具有专用的执行资源,同时共享诸如二级高速缓存(L2)之类的较高级高速缓存的至少一部分。
在一个实施例中,资源208、 213包括处理器流水线,其可包括任何数量的流水线级。流水线级的普通示例包括指令指针级、取出级、解码级、驱动级、以及分配级、重命名级、队列级、记录器级、调度级、分派级、执行级、存储器存取级、以及寄存器存取级。注意,此级列表包括处理器流水线级的示例性非穷举列表,因为处理器100中可包括任何已知的流水线级。
处理器205、 210还可各自包括相应地与存储器209、 214接口的存储器控制器或局部存储器控制器集线器(MCH)。存储器209、 214包括诸如随机存取存储器(RAM)、高速缓冲存储器、闪存之类的任何存储设备或其它存储设备。在一个实施例中,存储器214包括较高级高速缓冲存储器,而资源213包括低级高速缓冲存储器。在另一个实施例中,存储器209包括与处理器205相关联的动态随机存取存储器(DRAM),其包括用来高速缓存来自DRAM 209的数据的高速缓冲存储器。注意,这是说明性实施例,因为存储器209、 214可能包括任何类型的存储设备。
在其中存储器209、 214包括包含在处理器205、 210内或如图所示在其外部的高速缓冲存储器的一个实施例中,处理器205、 210能成为归属节点以及对等高速缓存节点。例如,当一事务引用了存储器209内的存储位置时,负责存储器209的代理,即处理器205被确定为与该事务和存储位置有关的归属代理。同样,在事务引用诸如存储器214中的位置之类的另一存储位置的情况下,处理器205被确定为对等高速缓存代理。
如可理解的,点对点链路220-224以点对点的方式将组件耦合在一起。在一个实施例中,物理链路220-224各自包括诸如与以下参考图3所讨论的物理层相关联的物理链路之类的双向差分信令互连。因此,处理器205、210和芯片组230能彼此直接通信。
芯片组230通常指的是诸如耦合至输入/输出(I/O)集线器的存储器控制器集线器之类的多个集成电路。不过,在其中各代理各自包括与存储器接口的一版本的存储器控制器集线器的一个实施例中,芯片组230指的是1/0集线器或其它控制器集线器。在一个实施例中,如上所述的芯片组230
是要参与或见证事务的非高速缓存代理。不过,芯片组230不如此受限,如在其它实施例中,芯片组230是包括高速缓冲存储器的高速缓存代理和/或包括具有数据的原始存储位置储存库的存储器的归属代理。
如图所示,芯片组230还将与多个互连和I/O设备接口,这些设备诸如外围部件互连(PCI)或快速PCI(PCI-E)设备261、集成设备电子技术(IDE)或高级传输附连(ATA)设备262、通用串行总线(USB)设备263、局域网(LAN)或无线LAN (WLAN)设备264、音频设备265以及其它I/O设备266,这些设备也可包括如本文所描述地用于耦合I/O设备的另一互连架构。
参考图3,其示出利用分层互连栈的双向互连架构的框图的实施例。对图3中诸如物理层302等各层的参考包括对诸如物理层302a和物理层302b等可以用不同代理实现的通用层的讨论。如图所示,互连栈被划分成5层,其中的一层或多层基于设计实现可能是可任选的。例如,在一个实施例中,路由层304被嵌入在链路层的功能中;因此在一个实施例中,路由层不是单独和分立的层。
在一个实施例中,物理层302负责物理介质上信息的电传输。例如,在链路层实体303a和303b之间采用了物理的点对点链路。作为一个说明性示例,物理链路包括不同的信令方案,其包括双向差分信令对351和352。这里,物理层可能在逻辑上被划分成电的子块和逻辑的子块,以使物理层将栈的余下部分与信息的电传输隔离,而且使物理层与链路层303通信。
在一个实施例中,链路层303从栈的上层抽象出物理层302并提供链路相关服务,如连接的代理/实体之间的可靠数据传输和流量控制和将物理信道/接口虚拟化成多个虚拟信道和消息类。这里,虚拟信道可被视为栈的上层所使用的多个虚拟网络。例如,协议层306可能依赖于由链路层303提供的抽象,以将协议消息映射到消息类中,并因此映射到一个或多个虚拟信道。
在一个实施例中,路由层304提供用于将分组从源路由至目的地的灵活方法。如上所述,在极简单的拓扑中,路由层304可以不是明显的,而
14是集成到链路层303的功能中。例如,路由层304可依赖于链路层303的抽象来指定<端口、虚拟网络>对来路由分组。这里,路由表信息被保持以提供关于分组的路由信息。
在一个实施例中,传输层305提供端对端的可靠传输服务。类似于路由层304,传输层305基于设计实现也是可任选的。作为一个示例,传输层305依赖于路由层304服务来为协议层306提供可靠的传输支持。在一个实施例中,在互连架构内, 一组件子集包括传输层305。因此,此组件子集定义了与传输层305相关的分组的子域,而其它组件可能没有定义那些子域。
在一个实施例中,协议层306用来实现节点/代理之间的较高级通信协议,诸如高速缓存一致性、排序、对等通信、中断传递。换言之,协议层306为诸如归属节点、对等节点、高速缓存节点、以及非高速缓存节点之类的节点或代理相应地定义了可允许的消息、请求、响应、阶段、 一致性状态等。诸如归属节点消息、监听消息、响应消息等之类的消息示例在下文中讨论。
注意,层以及与其相关联的逻辑的讨论可按照任何方式耦合。例如,可以说协议逻辑耦合至物理层,即发送或接收逻辑。这里,如从图3可以看出的,在一个实施例中,协议逻辑可能不直接耦合至物理层逻辑,而是通过其它层逻辑耦合至物理层逻辑。而且,在一个实施例中,互连栈耦合至诸如高速缓存控制或高速缓存逻辑之类的内部组件逻辑以启动适当的高速缓存一致性动作。
MESIF协议的实施例的概览
在一个实施例中,基本的修改独占共享无效转发(MESIF)协议提供类似于监听协议的协议,且没有单个串行化总线的可能限制。类似于监听高速缓存协议,MESIF依赖于具有高速缓存的数据副本的节点来保持一致性。使用点对点链路而不是同步的集中式广播引入了时间扭曲的问题,即从不同节点的角度来看,事件看起来以不同的顺序发生的事实。作为一个示例,MESIF协议通过识别由于时间扭曲而引起的可能错误,并提供对时间扭曲的协议或软件解决方案,来处理时间扭曲。归属节点通常与数据的未高速缓存的副本相关联。因此,归属节点可参与到有关与归属节点相关联的数据的事务中。不过,归属节点不一定要被包括在与事务相关联的"关键路径"中,而是归属节点可插入到事务中来解决冲突和时间扭曲问题。在一个实施例中,因为该方案的并发广播本质,MESIF实现了与监听协议相关联的低时延,同时在特定情况下以可能的最小时延(即单个往返请求—响应)来取得数据的可高速缓存的副本。
在一个实施例中,与MESIF协议有关的基本事务涉及对所有对等节点以及归属节点广播初始请求。如果一副本以状态E、 F、或M—致性状态被高速缓存,则它被包括在响应中。然后第二消息被发送至归属节点,告知该请求已被满足。如果所请求的线未被高速缓存,或如果仅S状态副本存在,则发送至归属节点的第二请求用来确认前一请求,此刻归属节点已从其存储器中取得该前一请求。在这两种情况之一下,归属节点出于同步和冲突解决的目的响应第二请求(也可能响应第一请求,不过他们有时可组合)。要注意的是归属节点可具有一个或多个高速缓存,因此它可像任何其它节点一样响应初始请求。
在一个实施例中,冲突是按照分布式方式来解决的。时间扭曲问题使得难以检测冲突,因为个别的请求会被延迟任意长的时间。不过,如果每一个节点在作出请求之后监控冲突,则冲突将可被检测。多个节点可能检测到冲突,不过作为一个示例,至少一个节点将检测到冲突。因此,在一个实施例中,来自节点的响应可能包括冲突信息。
在一个实施例中,接收来自响应的数据副本的节点被允许一接收就立刻在内部使用该数据,但不使使用该数据的效果对系统的余下部分可见(即全局可见),直到该节点已经接收到确认。所述确认还可包括作出请求的节点必须将其副本转发至另一节点、可能还将该节点从其自己的高速缓存中驱逐的指令。
最后,在一个实施例中,当节点通过提供高速缓存的数据来响应来自另一节点的请求时,该节点推迟它接收到的对同一高速缓存线的其它请求,直到该节点从归属节点接收到确认该节点已转发数据的事实的响应,从而确保所有节点都观察到(可能可写的)高速缓存线的同一顺序的传输。
16如上所述,归属节点是未高速缓存的数据的储存库,但归属节点还可包括处理器和高速缓存。这里,当归属节点处理器未中高速缓存时,归属节点向所有其它(对等)节点广播请求,而且归属节点像它对到达归属节
点的任何其它请求一样在内部处理该请求。注意这是特殊的情况,因为归属节点不会向自己(归属节点)显式地发送消息。此外,当对本地高速缓存的数据的外部请求到达时,归属节点适当地响应。
所公开的消息协议定义了一致性(高速缓存和归属)代理、非高速缓存代理、以及其它代理(存储器控制器、处理器等)之间的一组允许的消息。 一致性协议将这些消息用作算法中的字和语法以表达一致性思想。此算法明显地对请求排序、解决冲突、并描述高速缓存代理之间的交互。虽
然以上描述了 MESIF,但不一定要采用MESIF高速缓存一致性协议。例如,可以不采用转发状态,这将导致对已知的MESI协议的采用。而且,注意上述讨论包括MESIF协议的实施例的示例性概览。因此,以上描述各种组件在单独的实施例中可以不同。以下包括了在消息通信和/或一致性协议中采用的可能消息的非穷举示例性列表。监听消息
在一个实施例中,监听消息朝着诸如对等高速缓存代理之类的高速缓存代理来定向。监听消息通常不包括归属节点标识符(ID),以使他们被路由至对等的高速缓存代理而不是路由至归属节点。
监听数据(SnpData):这是用来获取处于E、 F、或S状态的数据的监听。
监听无效自己(SnpInvOwn):这是用来获取E或M状态的数据的监听。在一个实施例中,对等代理响应于将其本地存储器中的数据保持于E或M状态来提供数据。
监听无效无效到独占(SnpInvItoE):这是用来使对等高速缓存代理无效
并将任何M状态数据转储清除到归属节点的监听。
监听无效X到无效(SnpInvXtoI):这是用来使对等高速缓存代理无效并将任何M状态数据转储清除到归属节点的监听。
归属消息以下消息与归属节点相关联。作为一个示例,以下消息中的某些是对归属节点的请求消息。实际上,注意某些监听消息与归属消息之间的相似性。然而,这些相似的消息的不同之处通常在于往归属节点的消息包括要路由至归属节点的归属节点ID,而广播的对等节点消息可能不包括对归属节点的引用。
其它归属消息包括归属写回标记消息。这里,数据可通过WbData消息单独地发送,该WbData消息可按照相对于标记消息的任何顺序来接收。以下包括的归属消息的其它示例是从高速缓存代理到归属代理的归属监听响应消息和发信号通知冲突阶段开始的冲突消息的归属确认。
读数据(RdData):这是对处于独占(E)状态、也有可能处于转发(F)状态或S状态的数据的请求,这取决于具体实施例。
读无效自己(RdlnvOwn):这是对处于M或E状态的高速缓存线的请求。
无效无效到独占(InvItoE):这是对没有数据的高速缓存线的请求。
非监听读(NonSiipRd):这是执行对存储器的非一致性读的请求。非监听写(NonSiipW):这是执行对存储器的非一致性写的请求。写回修改到无效、共享或独占(WbMtoI、 WbMtoS以及WbMtoE):
这是将处于M状态的高速缓存线写回存储器,并使高速缓存线状态转移到无效状态、共享状态、或独占状态的请求。在一个实施例中,这些消息是指示数据将被发送的标记消息,而数据实际上通过诸如WB+Data+消息之类的单独的消息来传送。
响应无效或共享(Rspl或RspS):相应地使对等代理结果具有处于无效状态或S状态的线。
响应转发无效或共享(RspFwdl或RspFwdS):对等节点已将数据发送至请求者,因而该线相应地结果处于无效或共享状态。
响应转发无效或共享写回(RspFwdIWb或RspFwdSWb):对等节点已将数据发送至请求者且将WbIData发送至归属节点,因而该线相应地结果处于无效或共享状态。
响应无效或共享写回(RspIWb或RspSWb):对等节点已将往归属节点的具有正在处理中的WbIData消息的数据驱逐,而且未将任何消息发送至请求者。
响应*写回发送(Rsp*WbPost):对等节点已将往归属节点的具有正在处理中的Wb卩Data消息的数据驱逐,而且未将任何消息发送至请求者。而且,在一个实施例中,与R^^WbPost消息相关联的AckCnflt消息的发送者未响应于接收Cmp—FwcP消息而被解除分配。作为一个示例,归属代理响应于将部分数据提交给存储器来发送完整数据。
WbPost:对等节点已将往归属节点的具有正在处理的WMData消息的数据驱逐。而且,在一个实施例中,WbPost消息的发送者未响应于接收Cmp—Fwc^消息而被解除分配。这里,发送者等待来自归属节点的完成。作为一个示例,归属代理响应于将数据提交给存储器来发送完整消息。
响应冲突(RspCnflt):使对等节点结果具有处于无效状态的线,而且该对等节点具有冲突的、未解决的请求。
确认冲突(AckCnflt):确认数据完成/授权和完成/强制确认冲突的接收。
确认冲突写回无效(AckCnfltWbl):在一个实施例中,它如上所述发送AckCnflt信号。而且,在一个实施例中,该消息还发信号通知部分数据的写回,该数据如下所述可包括在单独的WbIData消息中。而且,与数据相关联的高速缓存线转移到无效状态。
非数据响应消息
在一个实施例中,非数据响应消息包括用来在不发送数据的情况下授予线所有权的授权消息。非数据响应消息还可包括用来发信号通知完成和可能在冲突条件下从拥有者提取数据的完成消息。
授权完成(GntCmp):在没有数据的情况下授予独占所有权。授权强制确认冲突(Gnt_FrcAckCnflt):在没有数据的情况下授予独占所有权再加上强制确认冲突。
完成(CMP):所有监听响应已收集而且未检测到冲突。强制确认冲突(FrcAckCnflt):对于确认冲突,监听响应已收集。完成转发代码(Cmp_FWdC0de):完成请求、将处于转发或共享状态
19的线转发给请求者、以及使本地副本无效或保持其处于共享状态。
完成转发无效自己(Cmp一FwdlnvOwn):完成请求、将处于独占或
修改状态的行转发给请求者、以及使本地副本无效。数据响应消息
DataCJ:处于相应的MESIF状态的数据。
DataC—^Cmp:具有完成的处于相应的ESIF状态的数据。
DataC_*_FrcAckCnflt:具有FrcAckCnflt的处于相应的ESIF状态的数据。
Wb+Data:写回数据、转移至相应的E、 S、或I状态。WbIDataPtl或WbEDataPtl:写回部分数据、转移至相应的无效或独占状态。
WMDataPtlPost:写回部分数据、转移至相应的一致状态。而且,在一个实施例中,与Wb*DataPtlPost消息相关联的AckCnflt消息的发送者未响应于接收Cmp一FwcP消息而解除分配。作为一个示例,归属代理响应于将部分数据提交给存储器来发送完整消息。
非监听写数据(NonSnpWrData):这是对存储器的非一致性写。非监听写部分数据(N(mSnpWrDataPtl):这是部分数据的非一致性写。
转向图4a,示出了可能导致存储器排序违反的用于多个节点之间的消息通信的协议图的实施例。如图所示,该协议图描述了5个节点,即输入/输出集线器(消费者)、用于"标志"的归属节点0 (CHL0)、生产者节点(GQ0)、用于"数据"的归属节点(CHL1)、以及参与多个事务的另一高速缓存代理(GQ1)。注意,所描述的代理的数量和类型仅仅是说明性的,因为互连架构极其灵活,而且可包括任何数量或类型的代理。
这里,生产者GQ0发起对与数据相关联的高速缓存线的请求。InvItoE(D)消息被发送至归属节点1艮卩CHL1, SnpInvItoE(D)消息被发送/路由至对等代理(消费者GQ1)。然而,在此事务期间,GQ1用对数据的读请求来启动单独的事务。注意,在此实例中代理GQ1和GQ0检测到冲突,这由从对等代理GQ0和GQ1到归属代理CHL1的RspCnflt消息反映出。在归属节点CHL1接收到未解决的消息之后,它将Gnt一FrcAckCnflt发送至GQ0以授予所有权并强制确认该冲突。
此时,作为生产者的GQO执行对数据的部分写,即Data:New(数据=新),并发送AckCnflt消息以确认Gnt—FrcAckCnflt消息。在一个实施例中,AckCnflt还指示事务的冲突阶段的开始,而与AckCnflt相关联的完成表示冲突阶段的结束。然后归属节点CHL1发送Cmp—FwdCode消息以将数据推送回归属节点CHL1。然而,部分数据的写回,即RspIWb(D)和WbIDataPtl(D)消息,因为诸如信道或路由延迟之类的任意数量的原因而被延迟。
同时,在数据已更新、已将部分数据响应提供给归属节点CHL1、以及己通过来自归属节点CHL1的Cmp_FwdC0de从对数据事务的部分写解除分配之后,GQO现在启动对标志的写入,即往CHLO归属节点的InvItoE(F)消息和往对等代理IOH和GQ1的相应的监听。这里,GQO获得用于标志的高速缓存线的所有权,即来自归属节点CHLO的Gnt一Cmp,并将标志更新为新。而且,标志的新值被写回归属节点CHL0,艮卩WbMtoI(F)和Wbldata(F)。通常,这种情形的数据和标志在I/O操作中采用,其中一个代理更新数据,然后设置标志以使另一代理知道该数据已被更新且准备好取回。
因此,IOH可能绕标志自旋,周期性地或在一定时间后检査标志以确定数据合适准备好取回。因此,IOH执行对标志的非监听、非一致性读,即NonS叩Rd(F)。这里,对归属节点CHL0的存储器的读取回指示数据己准备好取回的Flag = New值。不再围绕标志自旋的IOH启动对数据的NonS叩Rd请求。然而,当接收到NonSnpRd,数据仍保持OLD (旧)值,因为来自GQO的对Data=New (数据=新)的写回被延迟。因此,消费者IOH接收无效的旧数据,却认为数据有效,这可能会导致非法操作或执行。
注意,标志和数据的示例纯粹是说明性的,用来描述其中部分存储器存取和非一致性存储器存取的无效存储器排序可能导致无效/非法操作的一种可能情形。因此,此处公开的实施例可在任何部分存储器存取情形下采用。类似地,图4b示出了可能导致存储器排序违反的用于多个节点之间的消息通信的协议图的另一实施例。这里,GQ0将用于数据的高速缓存线保
持于修改状态而不是如上所述地请求该线。因此,在写入数据之前,GQ0要以WBMtoE(D)和WbEData(D)将修改的副本推送回归属节点CHL1并转移到独占状态。然后GQO执行对其本地存储器中的数据的部分写。然而,如上所述,GQ1发出对数据的读请求。注意,与以上不同,仅GQ0而不是GQ1检测到冲突。如上所述,多个节点/代理可检测冲突,但在一个实施例中,该协议依赖于至少一个节点来检测该冲突。
因此,GQ0向归属节点CHL1提供RspCnflt消息以供解决。向冲突阶段的相似转移以相同的响应(即来自归属节点CHL1的Gnt—FrcAckCnflt、来自GQ的AckCnflt、来自CHL1的Cmp_FwdCode)、然后是如上所述被延迟的用消息RspIWb(d)和WbIDataPtl(D)的数据写回发生。然后标志被更新为新,并且IOH执行从存储器对标志的非一致性读取。在因为标志被更新为新而认为数据准备好取回的情况下,IOH请求数据的非监听读。如上所述,IOH响应于GQO的部分写、对数据的非一致性读、以及新数据的写回延迟而接收到无效旧数据而不是已更新的新数据。
因此,在一个实施例中,可包括单个或多个消息的写回阶段在与诸如部分写之类的部分存储器存取相关联的冲突阶段时被插入,以将部分数据推送回归属节点。作为第一示例,用来确认冲突并提供写回标记的AckCnfltWbI消息在冲突阶段时生成。作为另一示例,采用写回消息的写回阶段在AckCnflt消息被提供给归属节点之前被插入。作为又一示例,釆用写回消息的写回阶段被包括在冲突阶段内,即在AckCnflt消息之后。作为最后一个说明性示例,写回阶段被包括在采用Rsp*Post、 WbDataPost消息、或WbPost消息的冲突阶段内或其之后,以使AckCnflt消息的发送者在接收到冲突阶段的完成消息之后不被解除分配。
在冲突阶段时启动的写回阶段的这些示例纯粹是说明性的,因为可采用一旦冲突就将部分数据推送回归属节点的任何已知消息或方法。然而,为进一步讨论,在下文中参考图5a-7c更详细地讨论了这些说明性示例。
转到图5a,其示出了在冲突阶段开始时采用冲突确认和数据写回消息的协议图的实施例。图5a的情形与图4a的相似之处在于GQ0请求与数据相关联的高速缓存线的独占所有权,GQ1发出对数据的读请求,冲突被GQ0和GQ1检测,而且与数据相关联的归属节点CHL1向GQ0发送Gnt—FrcAckCnflt消息。然而,在一个实施例中,代替生产者只提供AckCnflt消息来确认对来自归属节点CHL1的Gnt—FrcAckCnflt的接收,GQ0生成并发送组合的AckCnfltWbI(D)消息。这里,AckCnfltWbI消息用于两个目的,即Gnt—FrcAckCnflt的确收和对于归属节点CHL1的关于数据将在诸如WbIDataPtl(D)之类的数据消息中提供的标记。
换言之,响应于生产者GQ0执行对数据的部分写和从归属节点CHL1接收冲突消息,GQ0要执行对归属节点的部分数据写回,即在冲突阶段执行写回阶段。如前所述,在图4a中,在冲突阶段完成之后稍后才执行写回。这里,GQ0到冲突阶段的末尾利用Cmp_FwdCode解除分配,因而下一事务能够不管部分数据何时到达归属节点CHL1而开始,这导致IOH采集到无效数据。
反之,如从图5a中可以看出,Cmp—FwdCode不被发送,直到部分数据被推送回归属节点CHL1、或被提交至其中的存储器。因此,GQ0不被解除分配,而且更新标志的下一事务不会开始,直到数据在CHL1更新且在GQ0处接收Cmp_FwdCode消息之后,这使得确保在更新标志之前数据被更新。因此,当IOH执行标志然后数据的非一致性读时,保证CHL1处的数据是来自GQ0的最新副本。
同样,参考图5b,其示出了在冲突阶段开始时釆用冲突确认和数据写回消息的协议图的另一实施例。这里,该协议流程与图4a的协议流程的相似之处在于GQO保持数据的修改的旧副本,将旧副本写回归属节点CHL1,将数据更新至新值,GQ1发出对数据的读请求,冲突被检测,以及归属节点CHL1生成并向生产者GQ0发送冲突强制确认消息。
这里,如参考图5a所讨论的,在一个实施例中,AckCnfltWbI消息被提供给归属节点CHL1,因为GQO执行了对数据的部分写,而且GQ0从归属节点CHL1接收冲突消息。AckCnfltWbI消息通知归属节点冲突被确认,而且数据消息,即WbldataPtl消息将向归属节点CHL1提供数据。注意,根据以上对可能的时间扭曲的讨论,WbiDataPtl可能在AckCnfltWbI之前被接收。不过,通过该协议的操作,CHL1以与协议流程一致的方式观察到二者。因此,标志事务不被启动,直到GQ0从归属节点CHL1接收完成信号,该信号仅在接收到部分数据之后发送。因此,如上所述,IOH围绕标志自旋,直到该标志被更新为新,该更新现在确保在CHL1处更新数据之后,这导致正确的存储器排序且有效数据被提供给IOH。
接着参考图6a,示出了在冲突阶段釆用写回阶段的协议图的另一实施例。如上所述,图6a的协议图至少在开始时类似于图4a的协议图。作为对比,响应于从归属节点CHL1接收Gnt_FrcAckCnflt消息,生产者代理GQ0执行对数据的部分写,并利用WBMtoI数据标记消息和WbIDataPtl数据消息将该部分数据写回归属节点CHL1。在GQ0接收写回的完成消息之后,即在该部分数据在CHL1处提交且CHL1发送完成消息之后,GQ0然后将AckCnflt消息发送至归属节点CHL1,且归属节点CHL1将Cmp—FwdCode消息发送至GQ0。
如上所述,标志写事务直到GQ0接收到Cmp—FwdCode消息之后才开始,该消息直到新的数据被推送回CHL1之后才被发送。因此,IOH直到标志被更新为新才读取数据,而标志直到数据在CHL1处提交才被更新。换言之,实施了在标志被更新之前全局地观察到的数据的存储器排序。
类似地,图6b示出了在冲突阶段采用写回阶段的协议图的另一实施例。这里,协议流程仍类似于图4b的协议流程。不过,如上述图6a,响应于执行对数据的部分写并从归属节点CHL1接收FrcAckCnflt消息,生产者代理GQO执行新数据的写回。以来自GQ0的AckCnflt开始且以来自归属节点CHL1的Cmp一FwdCode结束的冲突阶段直到来自CHL1的完成被GQO响应于接收新数据而接收才开始。因此,实施了在更新标志值之前更新归属节点CHL1处的数据的存储器排序,这导致向消费者IOH提供准确/有效的新数据。
转到图6c,其示出了采用包括对数据的写回的写回阶段的协议图的另一实施例。这里,写回阶段类似于图6a的写回阶段;不过,该写回阶段稍后才执行。而且,这里代替采用RspIWb和WbIDataPtl消息(如图4a所示),
24采用了 WbMtoI和WbiDataPtl消息来将数据写回。换言之,在冲突阶段采 用了写回阶段代替响应阶段,该写回阶段在GQO移至标志事务之前要求来 自归属节点CHL1的完成消息,而不是如图4a那样在没有来自归属节点 CHL1的完成的情况下简单地将数据转发至GQ0。
参考图7a,示出了采用用于数据写回的可发布写消息的协议图的实施 例。这里,该流程与图6c的流程极其相似。然而,注意,采用了 RspIWbPost(D) 标记消息代替WbMtoI标记消息。因此,在一个实施例中,由RspIWbPost 启动的阶段被称为响应阶段。不过,注意RspIWbPost的功能,其直到在 GQ0处从归属节点CHL1接收到完成信号才如正确地响应一样解除分配 GQ0。如可以看出的,在操作中,RspIWbPost与来自图4a的RspIWb相比 更类似于来自图6c的WbMtoI,这表现在GQ0在GQ0能移至标志事务之 前等待来自归属节点CHL1的完成,而在图4a中GQO在移至标志事务之 前不等待完成。换言之,RsplWbPost指示"可发布写",以使发送RsplWbPost 的节点,即GQO在被解除分配之前等待完成。因此,在一个实施例中,对 RspIWbPost的利用被称为写回阶段。
同样,图7b示出了釆用用于数据写回的可发布写消息的协议图的另一 实施例。这里,注意"可发布写"可由数据消息WbIDataPtlPost而不是标记 消息RspIWb指示。而且,如图7c所示,可采用单独的消息WbPost来指 示RspIWb禾B WbIDataPtl,在一个实施例中,他们是写回阶段的一部分, 其中GQ0直到响应于将部分数据提交给存储器接收到来自归属节点CHL1 的完成才被解除分配。
如从上述可见的,在一个实施例中,在冲突阶段执行写回阶段、插入 写回阶段、为写回阶段生成消息或启动写回阶段可能具有与冲突阶段的不 同的时间关系。在一个实施例中,在冲突阶段的写回阶段包括在冲突阶段 的开始,诸如与写回标记消息组合的确认冲突消息,即AckCnfltWbi(D)。 在另一实施例中,在冲突阶段的写回阶段包括在冲突阶段之前,诸如在 Gnt—FrcAckCnflt之后和AckCnflt消息之前,即与图6a和6b有关的讨论。 在又一实施例中,在冲突阶段的写回阶段包括在冲突阶段之后,诸如在 AckCnflt和Cmp一FwdCode消息之后,即与图6a到图7c有关的讨论。而且,在一个实施例中,写回阶段指的是诸如AckCnfltWbI、 WbMtoI、 以及WbiDataPtl之类的写回消息。在另一实施例中,写回阶段还包括诸如 RspIWbPost、 WbIDataPtlPost以及WbPost之类的模拟写回功能的响应相关 消息。作为一个示例,模拟写回阶段的功能包括不对发送代理解除分配, 或发送代理等待直到接收到写回的完成消息。
因此,如从以上可看出的,当进行部分存储器存取和非监听/非一致性 存取、甚至当检测到冲突时,可实施存储器排序。因此,在诸如当第一代 理等待来自第二代理(其设置一标志以指示数据被读取)的数据之类的情 况下,正确的存储器排序的实施确保提供有效/新数据而非不一致的无效数 据。
在此处使用的模块指的是任何硬件、软件、固件、或它们的组合。通 常被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模 块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬
件、软件或固件。在一个实施例中,术语"逻辑"的使用包括诸如晶体管、 寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。然而,在另一 实施例中,逻辑还包括诸如固件或微码之类的与硬件集成的软件或代码。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状 态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被 称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平, O指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储 单元能够保持单个逻辑值或多个逻辑值。不过,使用了计算机系统中的值 的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进 制字母A。因此,值包括能保持在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为一个示例,诸如逻辑1 之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示 非默认状态。此外,在一个实施例中,术语重置和设置分别指的是默认和 已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新 的值可能包括低逻辑值,即设置。注意,值的任何组合可用来表示任意数 量的状态。
26上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存 取或机器可读介质上可由处理元件执行的指令或代码来实现。机器可存取/ 可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器 可读的形式的信息的任何介质。例如,机器可存取介质包括诸如静态RAM
(SRAM)或动态RAM (DRAM)之类的随机存取存储器(RAM) ; ROM; 磁或光存储介质;闪存设备;电存储设备、光存储设备、声存储设备或其 它形式的传播信号(例如载波、红外信号、数字信号)存储设备;等等。 例如,机器可通过从能保持要在传播信号上发送的信息的介质接收诸如载 波之类的传播信号来存取存储设备。
在本说明书通篇中对"一个实施例"或"实施例"的引用意味着结合该实 施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因 此,在本说明书通篇中的多个位置中短语"在一个实施例中"或"在实施例中" 的出现不一定指的是同一实施例。而且,特定特征、结构、或特性可按照 任何合适的方式在一个或多个实施例中组合。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而, 和明显,在不背离如所附权利要求所述的本发明的更宽泛精神和范围的情 况下,可对这些实施例作出各种修改和改变。因此,说明书和附图应被认 为是说明性而非限制性意义。而且,实施例和其它示例性语言的上述使用 不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例, 也有可能是同一实施例。
2权利要求
1.一种装置,包括第一逻辑,用来执行部分写以更新部分数据;第二逻辑,用来响应于接收到与所述部分数据相关联的冲突消息在冲突阶段启动写回阶段,其中所述写回阶段用来将所述部分数据提供给与所述部分数据相关联的归属代理;以及耦合至所述第二逻辑的第三逻辑,用来在所述写回阶段期间将所述部分数据提供给所述归属代理。
2. 如权利要求1所述的装置,其特征在于,所述第一和第二逻辑是与互连 架构分层栈的物理层相关联的协议逻辑,而且其中所述第三逻辑包括与所述互 连架构分层栈的物理层相关联的物理逻辑。
3. 如权利要求1所述的装置,其特征在于,所述在冲突阶段启动写回阶段 的第二逻辑包括生成确认冲突和写回消息的所述第二逻辑。
4. 如权利要求3所述的装置,其特征在于,所述响应于接收到与所述部分 数据相关联的冲突消息来生成确认冲突和写回消息的第二逻辑包括响应于接 收到来自所述归属代理的强制确认冲突消息来生成所述确认冲突和写回消息 的所述第二逻辑。
5. 如权利要求4所述的装置,其特征在于,所述确认冲突和写回消息包括 确认冲突写回无效(AckCnfltWbl)消息,而来自所述归属代理的所述强制确 认冲突消息包括授权强制确认冲突(Gnt—FrcAckCnflt)消息。
6. 如权利要求1所述的装置,其特征在于,所述响应于接收到与所述部分 数据相关联的冲突消息在冲突阶段启动写回阶段的第二逻辑包括响应于接收 到与所述部分数据相关联的冲突消息来生成写回标记消息和写回数据消息的 所述第二逻辑。
7. 如权利要求6所述的装置,其特征在于,所述写回标记消息包括写回修 改到无效(WbMtoI)标记消息,所述写回数据消息包括写回部分无效数据(WbIDataPartial )消息,以及所述冲突消息包括授权强制确认冲突 (Gnt—FrcAckCnflt)消息。
8. 如权利要求7所述的装置,其特征在于,所述冲突消息从包括以下消息的组中选择授权强制确认冲突(Gnt—FrcAckCnflt)消息;确认冲突(AckCnflt) 消息;以及完成转发代码(Cmp一FwdCode)消息。
9. 如权利要求1所述的装置,其特征在于,所述响应于接收到与所述部分 数据相关联的冲突消息在冲突阶段启动写回阶段的第二逻辑包括响应于接收 到与所述部分数据相关联的冲突消息来生成可发布写回消息的所述第二逻辑。
10. 如权利要求9所述的装置,其特征在于,所述可发布写回消息包括 从包括响应无效写回可发布(RspIWbPost)消息、写回部分无效数据可发布(WbIDataPost)消息、以及写回可发布(WbPost)消息的组中选择的消息, 而且其中所述冲突消息从包括以下消息的组中选择授权强制确认冲突 (Gnt—FrcAckCnflt)消息;确认冲突(AckCnflt)消息;以及完成转发代码 (Cmp—FwdCode)消息。
11. 一种装置,包括包括高速缓存线的高速缓冲存储器;耦合至所述高速缓冲存储器的第一逻辑,用来对所述高速缓存线执行部分 数据的部分写;第二逻辑,用来接收来自与所述部分数据相关联的归属节点的冲突消息; 耦合至所述第二逻辑的第三逻辑,用来生成一组合消息,所述组合消息向 所述归属节点表明对所述冲突消息的确认、且表明所述部分数据将响应于所述 第一逻辑执行所述部分数据的部分写和所述第二逻辑接收所述冲突消息而在 数据消息中被发送;以及耦合至所述第三逻辑的第四逻辑,用来将所述组合消息发送至所述归属节点。
12. 如权利要求11所述的装置,其特征在于,所述组合消息包括确认 冲突写回(AckCnfltWb)消息。
13. 如权利要求12所述的装置,其特征在于,所述冲突消息包括强制 确认冲突(FrcAckCnflt)消息。
14. 如权利要求12所述的装置,其特征在于,所述第三逻辑在启动后 续事务之前等待来自与所述AckCnltWb消息和所述数据消息相关联的所述归属节点的完成消息。
15. 如权利要求14所述的装置,其特征在于,所述完成消息包括完成转发代码(Cmp—FwdCode)消息。
16. 如权利要求11所述的装置,其特征在于,所述第二逻辑和所述第 四逻辑与互连分层栈的物理层逻辑相关联,而且所述第三逻辑与所述互连分层 栈的协议层逻辑相关联。
17. —种系统,包括包括第一逻辑的对等节点,所述第一逻辑响应于接收到来自与部分数据相 关联的归属节点的冲突消息和所述对等节点执行对所述部分数据的部分写来 生成写回消息以在冲突阶段启动写回阶段;其中所述归属节点通过点对点链路耦合至所述第一对等节点,所述归属节 点包括第二逻辑,所述第二逻辑响应于在所述写回阶段期间接收到来自所述对 等节点的所述部分数据在所述冲突阶段生成所述写回阶段的完成消息。
18. 如权利要求17所述的系统,其特征在于,所述写回消息从包括确 认冲突写回消息、写回至无效消息、响应写回可发布消息、写回部分数据可发 布消息、以及写回可发布消息的组中选择。
19. 如权利要求17所述的系统,其特征在于,所述第一逻辑包括实现 互连架构一致性协议的协议逻辑,而且其中所述第二逻辑包括实现所述互连架 构一致性协议的协议逻辑。
20. 如权利要求17所述的系统,其特征在于,所述对等节点中包括的 所述第一逻辑在启动后续的写事务之前等待直到接收到来自所述归属节点的 所述写回阶段的所述完成消息。
21. 如权利要求20所述的系统,其特征在于,所述后续写事务包括更 新被设置以向第二节点表明所述部分数据准备好被取回的标志,其中所述第二 节点执行对所述标志的非监听读,而且所述第二节点响应于所述标志被设置来 执行从所述归属节点对所述部分数据的第二非监听读。
22. —种方法,包括在对等高速缓存代理中将部分数据更新为新的部分数据; 利用与所述部分数据相关联的所述对等高速缓存代理接收冲突消息;响应于利用所述对等高速缓存代理接收所述冲突消息生成向归属代理表 明所述新的部分数据将被写回所述归属代理的写回消息;以及在所述归属代理接收到来自所述对等高速缓存代理的新的部分数据之后, 利用所述对等高速缓存代理来接收来自所述归属代理的完成消息。
23. 如权利要求22所述的方法,其特征在于,还包括在将所述部分 数据更新为所述新的部分数据之前,响应于所述部分数据在所述对等高速缓存 代理中被保持于修改状态将所述部分数据写回所述归属代理,其中将所述部分 数据更新为新的部分数据在接收到所述冲突消息之前发生。
24. 如权利要求22所述的方法,其特征在于,在所述对等高速缓存代 理中将所述部分数据更新为所述新的部分数据在接收到所述冲突消息之后发 生。
25. 如权利要求22所述的方法,其特征在于,还包括 响应于在所述归属代理处接收响应冲突消息利用所述归属代理生成所述冲突消息;利用所述归属代理接收来自所述对等高速缓存代理的所述新的部分数据; 将所述新的部分数据提交至与所述归属节点相关联的存储器;以及 响应于利用所述归属代理接收所述新的部分数据以及将所述新的部分数据提交至与所述归属代理相关联的存储器,利用所述归属代理生成所述完成消息。
26. 如权利要求25所述的方法,其特征在于,还包括 在接收到来自所述归属代理的完成消息之后利用所述对等代理写标志以设置所述标志;利用第二对等代理执行对所述标志的非一致性读;响应于所述标志在所述第二对等代理对所述标志的非一致性读时被设置, 利用所述第二对等代理执行对来自所述归属代理的新的部分数据的非一致性 读。
27. 如权利要求17所述的系统,其特征在于,所述写回消息从包括确 认冲突写回消息、写回至无效消息、响应写回可发布消息、写回数据部分可发 布消息、以及写回可发布消息的组中选择。
28. 如权利要求27所述的系统,其特征在于,所述冲突消息包括强制 确认冲突消息,而且其中所述完成消息是完成消息或完成转发代码消息。
全文摘要
此处描述了根据部分和非一致性存储器存取来保持基于高速缓存一致性链路的互连中的存储器排序的方法和装置。在一个实施例中,当检测到诸如部分写之类的与部分存储器存取相关联的冲突时,在冲突阶段处插入写回阶段以将该部分数据写回归属代理。用来在冲突阶段启动写回阶段的示例消息包括用来在冲突阶段的开始确认冲突并提供写回标记的确认冲突写回消息;冲突阶段之前的写回标记消息;冲突阶段内的写回标记消息;冲突阶段之后的写回标记消息;以及冲突阶段之后的可发布消息。
文档编号G06F12/08GK101625664SQ200910159840
公开日2010年1月13日 申请日期2009年7月7日 优先权日2008年7月7日
发明者C-T·周, R·H·比尔斯, R·J·萨弗兰克 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1