CN101625664B - 满足部分写和非监听存取之间的存储器排序要求 - Google Patents
满足部分写和非监听存取之间的存储器排序要求 Download PDFInfo
- Publication number
- CN101625664B CN101625664B CN2009101598401A CN200910159840A CN101625664B CN 101625664 B CN101625664 B CN 101625664B CN 2009101598401 A CN2009101598401 A CN 2009101598401A CN 200910159840 A CN200910159840 A CN 200910159840A CN 101625664 B CN101625664 B CN 101625664B
- Authority
- CN
- China
- Prior art keywords
- message
- data
- conflict
- write
- partial data
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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)
- Information Transfer Systems (AREA)
Abstract
此处描述了根据部分和非一致性存储器存取来保持基于高速缓存一致性链路的互连中的存储器排序的方法和装置。在一个实施例中,当检测到诸如部分写之类的与部分存储器存取相关联的冲突时,在冲突阶段处插入写回阶段以将该部分数据写回归属代理。用来在冲突阶段启动写回阶段的示例消息包括:用来在冲突阶段的开始确认冲突并提供写回标记的确认冲突写回消息;冲突阶段之前的写回标记消息;冲突阶段内的写回标记消息;冲突阶段之后的写回标记消息;以及冲突阶段之后的可发布消息。
Description
技术领域
本发明涉及高速点对点互连链路,尤其涉及用于实现一致互连架构的一致性协议。
背景技术
当电子系统包括多个高速缓冲存储器时,维持该系统中保持的数据的有效性或一致性以确保数据操作的完整性。一致性通常通过根据高速缓存一致性协议操纵数据来实现。随着高速缓存和/或处理器的数量增加,维持一致性的复杂程度增加,这可能导致系统的多个组件之间的更多冲突。
例如,当多个组件(例如高速缓冲存储器、处理器)请求同一数据块时,多个组件之间的冲突按照维持数据有效性的方式来解决。早先的高速缓存一致性协议通常只让单个组件对冲突解决负责。然而,随着系统复杂程度的提高,依赖于单个组件来解决冲突会降低总的系统性能。
一般而言,存在两种提供高速缓存一致性的基本方案:监听(现在通常称为对称多处理,SMP)和目录(现在通常称为分布式共享存储DSM)。这两种方案之间的基本差别围绕在元信息的放置和存取;即,有关在何处保存高速缓存线的副本的信息。
对于基于目录的方案而言,除存储未被高速缓存的数据的固定位置以外,还存在指示已高速缓存的副本驻留在何处的一固定位置,即目录。为了按照新的方法存取高速缓存线,一个节点必须与包含该目录的节点(通常是包含未高速缓存数据存储库的同一节点)通信,从而允许响应的节点在主存储副本有效时提供数据。在目录系统中,这样的节点被称为归属节点。
目录可按照两种方式来分发。首先,主存储数据(未高速缓存储存库)通常在节点之间分发,且目录按照相同方式来分发。其次,元信息本身可被分发,从而在归属节点处只保持关于该线是否被高速缓存,以及如果是,则单个副本驻留在何处的信息。例如,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中具体示出,但该协议架构还可包括诸如代表I/O设备参与或见证事务的输入/输出(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(案卷号P18890)、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指的是I/O集线器或其它控制器集线器。在一个实施例中,如上所述的芯片组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可以不是明显的,而是集成到链路层303的功能中。例如,路由层304可依赖于链路层303的抽象来指定<端口、虚拟网络>对来路由分组。这里,路由表信息被保持以提供关于分组的路由信息。
在一个实施例中,传输层305提供端对端的可靠传输服务。类似于路由层304,传输层305基于设计实现也是可任选的。作为一个示例,传输层305依赖于路由层304服务来为协议层306提供可靠的传输支持。在一个实施例中,在互连架构内,一组件子集包括传输层305。因此,此组件子集定义了与传输层305相关的分组的子域,而其它组件可能没有定义那些子域。
在一个实施例中,协议层306用来实现节点/代理之间的较高级通信协议,诸如高速缓存一致性、排序、对等通信、中断传递。换言之,协议层306为诸如归属节点、对等节点、高速缓存节点、以及非高速缓存节点之类的节点或代理相应地定义了可允许的消息、请求、响应、阶段、一致性状态等。诸如归属节点消息、监听消息、响应消息等之类的消息示例在下文中讨论。
注意,层以及与其相关联的逻辑的讨论可按照任何方式耦合。例如,可以说协议逻辑耦合至物理层,即发送或接收逻辑。这里,如从图3可以看出的,在一个实施例中,协议逻辑可能不直接耦合至物理层逻辑,而是通过其它层逻辑耦合至物理层逻辑。而且,在一个实施例中,互连栈耦合至诸如高速缓存控制或高速缓存逻辑之类的内部组件逻辑以启动适当的高速缓存一致性动作。
MESIF协议的实施例的概览
在一个实施例中,基本的修改独占共享无效转发(MESIF)协议提供类似于监听协议的协议,且没有单个串行化总线的可能限制。类似于监听高速缓存协议,MESIF依赖于具有高速缓存的数据副本的节点来保持一致性。使用点对点链路而不是同步的集中式广播引入了时间扭曲的问题,即从不同节点的角度来看,事件看起来以不同的顺序发生的事实。作为一个示例,MESIF协议通过识别由于时间扭曲而引起的可能错误,并提供对时间扭曲的协议或软件解决方案,来处理时间扭曲。
归属节点通常与数据的未高速缓存的副本相关联。因此,归属节点可参与到有关与归属节点相关联的数据的事务中。不过,归属节点不一定要被包括在与事务相关联的“关键路径”中,而是归属节点可插入到事务中来解决冲突和时间扭曲问题。在一个实施例中,因为该方案的并发广播本质,MESIF实现了与监听协议相关联的低时延,同时在特定情况下以可能的最小时延(即单个往返请求-响应)来取得数据的可高速缓存的副本。
在一个实施例中,与MESIF协议有关的基本事务涉及对所有对等节点以及归属节点广播初始请求。如果一副本以状态E、F、或M一致性状态被高速缓存,则它被包括在响应中。然后第二消息被发送至归属节点,告知该请求已被满足。如果所请求的线未被高速缓存,或如果仅S状态副本存在,则发送至归属节点的第二请求用来确认前一请求,此刻归属节点已从其存储器中取得该前一请求。在这两种情况之一下,归属节点出于同步和冲突解决的目的响应第二请求(也可能响应第一请求,不过他们有时可组合)。要注意的是归属节点可具有一个或多个高速缓存,因此它可像任何其它节点一样响应初始请求。
在一个实施例中,冲突是按照分布式方式来解决的。时间扭曲问题使得难以检测冲突,因为个别的请求会被延迟任意长的时间。不过,如果每一个节点在作出请求之后监控冲突,则冲突将可被检测。多个节点可能检测到冲突,不过作为一个示例,至少一个节点将检测到冲突。因此,在一个实施例中,来自节点的响应可能包括冲突信息。
在一个实施例中,接收来自响应的数据副本的节点被允许一接收就立刻在内部使用该数据,但不使使用该数据的效果对系统的余下部分可见(即全局可见),直到该节点已经接收到确认。所述确认还可包括作出请求的节点必须将其副本转发至另一节点、可能还将该节点从其自己的高速缓存中驱逐的指令。
最后,在一个实施例中,当节点通过提供高速缓存的数据来响应来自另一节点的请求时,该节点推迟它接收到的对同一高速缓存线的其它请求,直到该节点从归属节点接收到确认该节点已转发数据的事实的响应,从而确保所有节点都观察到(可能可写的)高速缓存线的同一顺序的传输。
如上所述,归属节点是未高速缓存的数据的储存库,但归属节点还可包括处理器和高速缓存。这里,当归属节点处理器未中高速缓存时,归属节点向所有其它(对等)节点广播请求,而且归属节点像它对到达归属节点的任何其它请求一样在内部处理该请求。注意这是特殊的情况,因为归属节点不会向自己(归属节点)显式地发送消息。此外,当对本地高速缓存的数据的外部请求到达时,归属节点适当地响应。
所公开的消息协议定义了一致性(高速缓存和归属)代理、非高速缓存代理、以及其它代理(存储器控制器、处理器等)之间的一组允许的消息。一致性协议将这些消息用作算法中的字和语法以表达一致性思想。此算法明显地对请求排序、解决冲突、并描述高速缓存代理之间的交互。虽然以上描述了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状态的数据的请求,这取决于具体实施例。
读无效自己(RdInvOwn):这是对处于M或E状态的高速缓存线的请求。
无效无效到独占(InvItoE):这是对没有数据的高速缓存线的请求。
非监听读(NonSnpRd):这是执行对存储器的非一致性读的请求。
非监听写(NonSnpW):这是执行对存储器的非一致性写的请求。
写回修改到无效、共享或独占(WbMtoI、WbMtoS以及WbMtoE):这是将处于M状态的高速缓存线写回存储器,并使高速缓存线状态转移到无效状态、共享状态、或独占状态的请求。在一个实施例中,这些消息是指示数据将被发送的标记消息,而数据实际上通过诸如WB*Data*消息之类的单独的消息来传送。
响应无效或共享(RspI或RspS):相应地使对等代理结果具有处于无效状态或S状态的线。
响应转发无效或共享(RspFwdI或RspFwdS):对等节点已将数据发送至请求者,因而该线相应地结果处于无效或共享状态。
响应转发无效或共享写回(RspFwdIWb或RspFwdSWb):对等节点已将数据发送至请求者且将WbIData发送至归属节点,因而该线相应地结果处于无效或共享状态。
响应无效或共享写回(RspIWb或RspSWb):对等节点已将往归属节点的具有正在处理中的WbIData消息的数据驱逐,而且未将任何消息发送至请求者。
响应*写回发送(Rsp*WbPost):对等节点已将往归属节点的具有正在处理中的WbI*Data消息的数据驱逐,而且未将任何消息发送至请求者。而且,在一个实施例中,与Rsp*WbPost消息相关联的AckCnflt消息的发送者未响应于接收Cmp_Fwd*消息而被解除分配。作为一个示例,归属代理响应于将部分数据提交给存储器来发送完整数据。
WbPost:对等节点已将往归属节点的具有正在处理的Wb*Data消息的数据驱逐。而且,在一个实施例中,WbPost消息的发送者未响应于接收Cmp_Fwd*消息而被解除分配。这里,发送者等待来自归属节点的完成。作为一个示例,归属代理响应于将数据提交给存储器来发送完整消息。
响应冲突(RspCnflt):使对等节点结果具有处于无效状态的线,而且该对等节点具有冲突的、未解决的请求。
确认冲突(AckCnflt):确认数据完成/授权和完成/强制确认冲突的接收。
确认冲突写回无效(AckCnfltWbI):在一个实施例中,它如上所述发送AckCnflt信号。而且,在一个实施例中,该消息还发信号通知部分数据的写回,该数据如下所述可包括在单独的WbIData消息中。而且,与数据相关联的高速缓存线转移到无效状态。
非数据响应消息
在一个实施例中,非数据响应消息包括用来在不发送数据的情况下授予线所有权的授权消息。非数据响应消息还可包括用来发信号通知完成和可能在冲突条件下从拥有者提取数据的完成消息。
授权完成(GntCmp):在没有数据的情况下授予独占所有权。
授权强制确认冲突(Gnt_FrcAckCnflt):在没有数据的情况下授予独占所有权再加上强制确认冲突。
完成(CMP):所有监听响应已收集而且未检测到冲突。
强制确认冲突(FrcAckCnflt):对于确认冲突,已收集监听响应。
完成转发代码(Cmp_FwdCode):完成请求、将处于转发或共享状态的线转发给请求者、以及使本地副本无效或保持其处于共享状态。
完成转发无效自己(Cmp_FwdInvOwn):完成请求、将处于独占或修改状态的行转发给请求者、以及使本地副本无效。
数据响应消息
DataC_*:处于相应的MESIF状态的数据。
DataC_*_Cmp:具有完成的处于相应的ESIF状态的数据。
DataC_*_FrcAckCnflt:具有FrcAckCnflt的处于相应的ESIF状态的数据。
Wb*Data:写回数据、转移至相应的E、S、或I状态。
WbIDataPtl或WbEDataPtl:写回部分数据、转移至相应的无效或独占状态。
Wb*DataPtlPost:写回部分数据、转移至相应的一致状态。而且,在一个实施例中,与Wb*DataPtlPost消息相关联的AckCnflt消息的发送者未响应于接收Cmp_Fwd*消息而解除分配。作为一个示例,归属代理响应于将部分数据提交给存储器来发送完整消息。
非监听写数据(NonSnpWrData):这是对存储器的非一致性写。
非监听写部分数据(NonSnpWrDataPtl):这是部分数据的非一致性写。
转向图4a,示出了可能导致存储器排序违反的用于多个节点之间的消息通信的协议图的实施例。如图所示,该协议图描述了5个节点,即输入/输出集线器(消费者)、用于“标志”的归属节点0(CHL0)、生产者节点(GQ0)、用于“数据”的归属节点(CHL1)、以及参与多个事务的另一高速缓存代理(GQ1)。注意,所描述的代理的数量和类型仅仅是说明性的,因为互连架构极其灵活,而且可包括任何数量或类型的代理。
这里,生产者GQ0发起对与数据相关联的高速缓存线的请求。InvItoE(D)消息被发送至归属节点1即CHL1,SnpInvItoE(D)消息被发送/路由至对等代理(消费者GQI)。然而,在此事务期间,GQ1用对数据的读请求来启动单独的事务。注意,在此实例中代理GQ1和GQ0检测到冲突,这由从对等代理GQ0和GQ1到归属代理CHL1的RspCnflt消息反映出。在归属节点CHL1接收到未解决的消息之后,它将Gnt_FrcAckCnflt发送至GQ0以授予所有权并强制确认该冲突。
此时,作为生产者的GQ0执行对数据的部分写,即Data=New(数据=新),并发送AckCnflt消息以确认Gnt_FrcAckCnflt消息。在一个实施例中,AckCnflt还指示事务的冲突阶段的开始,而与AckCnflt相关联的完成表示冲突阶段的结束。然后归属节点CHL1发送Cmp_FwdCode消息以将数据推送回归属节点CHL1。然而,部分数据的写回,即RspIWb(D)和WbIDataPtl(D)消息,因为诸如信道或路由延迟之类的任意数量的原因而被延迟。
同时,在数据已更新、已将部分数据响应提供给归属节点CHL1、以及已通过来自归属节点CHL1的Cmp_FwdCode从对数据事务的部分写解除分配之后,GQ0现在启动对标志的写入,即往CHL0归属节点的InvItoE(F)消息和往对等代理IOH和GQ1的相应的监听。这里,GQ0获得用于标志的高速缓存线的所有权,即来自归属节点CHL0的Gnt_Cmp,并将标志更新为新。而且,标志的新值被写回归属节点CHL0,即WbMtoI(F)和WbIdata(F)。通常,这种情形的数据和标志在I/O操作中采用,其中一个代理更新数据,然后设置标志以使另一代理知道该数据已被更新且准备好取回。
因此,IOH可能绕标志自旋,周期性地或在一定时间后检查标志以确定数据合适准备好取回。因此,IOH执行对标志的非监听、非一致性读,即NonSnpRd(F)。这里,对归属节点CHL0的存储器的读取回指示数据已准备好取回的Flag=New值。不再围绕标志自旋的IOH启动对数据的NonSnpRd请求。然而,当接收到NonSnpRd,数据仍保持OLD(旧)值,因为来自GQ0的对Data=New(数据=新)的写回被延迟。因此,消费者IOH接收无效的旧数据,却认为数据有效,这可能会导致非法操作或执行。
注意,标志和数据的示例纯粹是说明性的,用来描述其中部分存储器存取和非一致性存储器存取的无效存储器排序可能导致无效/非法操作的一种可能情形。因此,此处公开的实施例可在任何部分存储器存取情形下采用。
类似地,图4b示出了可能导致存储器排序违反的用于多个节点之间的消息通信的协议图的另一实施例。这里,GQ0将用于数据的高速缓存线保持于修改状态而不是如上所述地请求该线。因此,在写入数据之前,GQ0要以WBMtoE(D)和WbEData(D)将修改的副本推送回归属节点CHL1并转移到独占状态。然后GQ0执行对其本地存储器中的数据的部分写。然而,如上所述,GQ1发出对数据的读请求。注意,与以上不同,仅GQ0而不是GQ1检测到冲突。如上所述,多个节点/代理可检测冲突,但在一个实施例中,该协议依赖于至少一个节点来检测该冲突。
因此,GQ0向归属节点CHL1提供RspCnflt消息以供解决。向冲突阶段的相似转移以相同的响应(即来自归属节点CHL1的Gnt_FrcAckCnflt、来自GQ的AckCnflt、来自CHL1的Cmp_FwdCode)、然后是如上所述被延迟的用消息RspIWb(d)和WbIDataPtl(D)的数据写回发生。然后标志被更新为新,并且IOH执行从存储器对标志的非一致性读取。在因为标志被更新为新而认为数据准备好取回的情况下,IOH请求数据的非监听读。如上所述,IOH响应于GQ0的部分写、对数据的非一致性读、以及新数据的写回延迟而接收到无效旧数据而不是已更新的新数据。
因此,在一个实施例中,可包括单个或多个消息的写回阶段在与诸如部分写之类的部分存储器存取相关联的冲突阶段时被插入,以将部分数据推送回归属节点。作为第一示例,用来确认冲突并提供写回标记的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的协议流程的相似之处在于GQ0保持数据的修改的旧副本,将旧副本写回归属节点CHL1,将数据更新至新值,GQ1发出对数据的读请求,冲突被检测,以及归属节点CHL1生成并向生产者GQ0发送冲突强制确认消息。
这里,如参考图5a所讨论的,在一个实施例中,AckCnfltWbI消息被提供给归属节点CHL1,因为GQ0执行了对数据的部分写,而且GQ0从归属节点CHL1接收冲突消息。AckCnfltWbI消息通知归属节点冲突被确认,而且数据消息,即WbIdataPtl消息将向归属节点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消息,生产者代理GQ0执行新数据的写回。以来自GQ0的AckCnflt开始且以来自归属节点CHL1的Cmp_FwdCode结束的冲突阶段直到来自CHL1的完成被GQ0响应于接收新数据而接收才开始。因此,实施了在更新标志值之前更新归属节点CHL1处的数据的存储器排序,这导致向消费者IOH提供准确/有效的新数据。
转到图6c,其示出了采用包括对数据的写回的写回阶段的协议图的另一实施例。这里,写回阶段类似于图6a的写回阶段;不过,该写回阶段稍后才执行。而且,这里代替采用RspIWb和WbIDataPtl消息(如图4a所示),采用了WbMtoI和WbiDataPtl消息来将数据写回。换言之,在冲突阶段采用了写回阶段代替响应阶段,该写回阶段在GQ0移至标志事务之前要求来自归属节点CHL1的完成消息,而不是如图4a那样在没有来自归属节点CHL1的完成的情况下简单地将数据转发至GQ0。
参考图7a,示出了采用用于数据写回的可发布写消息的协议图的实施例。这里,该流程与图6c的流程极其相似。然而,注意,采用了RspIWbPost(D)标记消息代替WbMtoI标记消息。因此,在一个实施例中,由RspIWbPost启动的阶段被称为响应阶段。不过,注意RspIWbPost的功能,其直到在GQ0处从归属节点CHL1接收到完成信号才如正确地响应一样解除分配GQ0。如可以看出的,在操作中,RspIWbPost与来自图4a的RspIWb相比更类似于来自图6c的WbMtoI,这表现在GQ0在GQ0能移至标志事务之前等待来自归属节点CHL1的完成,而在图4a中GQ0在移至标志事务之前不等待完成。换言之,RspIWbPost指示“可发布写”,以使发送RspIWbPost的节点,即GQ0在被解除分配之前等待完成。因此,在一个实施例中,对RspIWbPost的利用被称为写回阶段。
同样,图7b示出了采用用于数据写回的可发布写消息的协议图的另一实施例。这里,注意“可发布写”可由数据消息WbIDataPtlPost而不是标记消息RspIWb指示。而且,如图7c所示,可采用单独的消息WbPost来指示RspIWb和WbIDataPtl,在一个实施例中,他们是写回阶段的一部分,其中GQ0直到响应于将部分数据提交给存储器接收到来自归属节点CHL1的完成才被解除分配。
如从上述可见的,在一个实施例中,在冲突阶段执行写回阶段、插入写回阶段、为写回阶段生成消息或启动写回阶段可能具有与冲突阶段的不同的时间关系。在一个实施例中,在冲突阶段的写回阶段包括在冲突阶段的开始,诸如与写回标记消息组合的确认冲突消息,即AckCnfltWbi(D)。在另一实施例中,在冲突阶段的写回阶段包括在冲突阶段之前,诸如在Gnt_FrcAckCnflt之后和AckCnflt消息之前,即与图6a和6b有关的讨论。在又一实施例中,在冲突阶段的写回阶段包括在冲突阶段之后,诸如在AckCnflt和Cmp_FwdCode消息之后,即与图6a到图7c有关的讨论。
而且,在一个实施例中,写回阶段指的是诸如AckCnfltWbI、WbMtoI、以及WbiDataPtl之类的写回消息。在另一实施例中,写回阶段还包括诸如RspIWbPost、WbIDataPtlPost以及WbPost之类的模拟写回功能的响应相关消息。作为一个示例,模拟写回阶段的功能包括不对发送代理解除分配,或发送代理等待直到接收到写回的完成消息。
因此,如从以上可看出的,当进行部分存储器存取和非监听/非一致性存取、甚至当检测到冲突时,可实施存储器排序。因此,在诸如当第一代理等待来自第二代理(其设置一标志以指示数据被读取)的数据之类的情况下,正确的存储器排序的实施确保提供有效/新数据而非不一致的无效数据。
在此处使用的模块指的是任何硬件、软件、固件、或它们的组合。通常被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。然而,在另一实施例中,逻辑还包括诸如固件或微码之类的与硬件集成的软件或代码。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,使用了计算机系统中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字母A。因此,值包括能保持在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为一个示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和设置分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新的值可能包括低逻辑值,即设置。注意,值的任何组合可用来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取或机器可读介质上可由处理元件执行的指令或代码来实现。机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何介质。例如,机器可存取介质包括:诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁或光存储介质;闪存设备;电存储设备、光存储设备、声存储设备或其它形式的传播信号(例如载波、红外信号、数字信号)存储设备;等等。例如,机器可通过从能保持要在传播信号上发送的信息的介质接收诸如载波之类的传播信号来存取存储设备。
在本说明书通篇中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在本说明书通篇中的多个位置中短语“在一个实施例中”或“在实施例中”的出现不一定指的是同一实施例。而且,特定特征、结构、或特性可按照任何合适的方式在一个或多个实施例中组合。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,和明显,在不背离如所附权利要求所述的本发明的更宽泛精神和范围的情况下,可对这些实施例作出各种修改和改变。因此,说明书和附图应被认为是说明性而非限制性意义。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
Claims (25)
1.一种用于满足部分写和非监听存取之间的存储器排序要求的装置,包括:
第一逻辑模块,用来执行部分写以更新部分数据;
第二逻辑模块,用来响应于接收到与所述部分数据相关联的冲突消息在冲突阶段启动写回阶段,其中所述写回阶段用来将所述部分数据提供给与所述部分数据相关联的归属代理;以及
耦合至所述第二逻辑模块的第三逻辑模块,用来在所述写回阶段期间将所述部分数据提供给所述归属代理;
其中所述第二逻辑模块在启动与所述部分数据相关的后续事务之前等待在归属代理处的数据更新以及来自所述归属代理的完成转发代码Cmp_FwdCode,其中所述完成转发代码Cmp_FwdCode表示完成请求、将处于转发或共享状态的线转发给请求者、以及使本地副本无效或保持其处于共享状态。
2.如权利要求1所述的装置,其特征在于,所述第一和第二逻辑模块是与互连架构分层栈的物理层相关联的协议逻辑模块,而且其中所述第三逻辑模块包括与所述互连架构分层栈的物理层相关联的物理逻辑模块。
3.如权利要求1所述的装置,其特征在于,所述在冲突阶段启动写回阶段的第二逻辑模块进一步生成确认冲突写回无效AckCnfltWbI消息,其中所述确认冲突写回无效AckCnfltWbI消息表示确认收到强制确认冲突并进一步发信号通知部分数据的写回。
4.如权利要求3所述的装置,其特征在于,所述第二逻辑模块进一步生成确认冲突写回无效AckCnfltWbI消息包括:进一步响应于接收到来自所述归属代理的强制确认冲突消息来生成所述确认冲突写回无效AckCnfltWbI消息,其中所述强制确认冲突消息表示对于确认冲突已收集监听响应。
5.如权利要求4所述的装置,其特征在于,来自所述归属代理的所述强制确认冲突消息包括授权强制确认冲突Gnt_FrcAckCnflt消息,其中所述授权强制确认冲突Gnt_FrcAckCnflt消息表示在没有数据的情况下授予独占所有权再加上强制确认冲突。
6.如权利要求1所述的装置,其特征在于,所述响应于接收到与所述部分数据相关联的冲突消息在冲突阶段启动写回阶段的第二逻辑模块进一步响应于接收到与所述部分数据相关联的冲突消息来生成写回标记消息和写回数据消息,其中所述写回标记消息表示数据将被发送,所述写回数据消息携带数据的单独消息。
7.如权利要求6所述的装置,其特征在于,所述写回标记消息包括写回修改到无效WbMtoI标记消息,所述写回数据消息包括写回部分无效数据WbIDataPtl消息,以及所述冲突消息包括授权强制确认冲突Gnt_FrcAckCnflt消息,其中所述写回修改到无效WbMtoI标记消息表示将处于修改M状态的高速缓存线写回存储器并使高速缓存线状态转移到无效状态的请求,所述写回部分无效数据WbIDataPtl消息表示部分数据的写回并转移至相应的无效状态,并且所述授权强制确认冲突Gnt_FrcAckCnflt消息表示在没有数据的情况下授予独占所有权再加上强制确认冲突。
8.如权利要求1所述的装置,其特征在于,所述响应于接收到与所述部分数据相关联的冲突消息在冲突阶段启动写回阶段的第二逻辑模块进一步响应于接收到与所述部分数据相关联的冲突消息来生成可发布写回消息,其中写回阶段被包括在采用所述可发布写回消息的冲突阶段内或其之后,以使所述装置在接收到冲突阶段的完成消息之后不被解除分配。
9.如权利要求8所述的装置,其特征在于,所述可发布写回消息包括从包括响应无效写回可发布RspIWbPost消息、写回部分无效数据可发布WbIDataPtlPost消息、以及写回可发布WbPost消息的组中选择的消息,其中响应无效写回可发布RspIWbPost消息表示可发布写,以使所述装置在被解除分配之前等待完成,所述写回部分无效数据可发布WbIDataPtlPost消息表示部分数据的写回并且转移到无效状态,所述写回可发布WbPost消息表示所述装置已将往归属代理的具有正在处理的Wb*Data消息的数据驱逐,其中Wb*Data消息表示写回数据并转移至相应的独占E、共享S、或无效I状态,并且其中所述冲突消息包括授权强制确认冲突Gnt_FrcAckCnflt消息。
10.一种用于满足部分写和非监听存取之间的存储器排序要求的装置,包括:
包括高速缓存线的高速缓冲存储器;
耦合至所述高速缓冲存储器的第一逻辑模块,用来对所述高速缓存线执行部分数据的部分写;
第二逻辑模块,用来接收来自与所述部分数据相关联的归属节点的冲突消息;
耦合至所述第二逻辑模块的第三逻辑模块,用来生成一组合消息,所述组合消息向所述归属节点表明对所述冲突消息的确认、且表明所述部分数据将响应于所述第一逻辑模块执行所述部分数据的部分写和所述第二逻辑模块接收所述冲突消息而在数据消息中被发送;以及
耦合至所述第三逻辑模块的第四逻辑模块,用来将所述组合消息发送至所述归属节点;
其中所述第四逻辑模块在启动与所述部分数据相关的后续事务之前等待在归属节点处的数据更新以及来自所述归属代理的完成转发代码Cmp_FwdCode,其中所述完成转发代码Cmp_FwdCode表示完成请求、将处于转发或共享状态的线转发给请求者、以及使本地副本无效或保持其处于共享状态。
11.如权利要求10所述的装置,其特征在于,所述组合消息包括确认冲突写回无效AckCnfltWbI消息,其中所述确认冲突写回无效AckCnfltWbI消息表示确认收到强制确认冲突并进一步发信号通知部分数据的写回。
12.如权利要求11所述的装置,其特征在于,所述冲突消息包括强制确认冲突FrcAckCnflt消息,其中所述强制确认冲突FrcAckCnflt消息表示对于确认冲突已收集的监听响应。
13.如权利要求11所述的装置,其特征在于,所述归属节点与所述确认冲突写回无效AckCnfltWbI消息和所述数据消息相关联。
14.如权利要求10所述的装置,其特征在于,所述第二逻辑模块和所述第四逻辑模块与互连分层栈的物理层逻辑模块相关联,而且所述第三逻辑模块与所述互连分层栈的协议层逻辑模块相关联。
15.一种用于满足部分写和非监听存取之间的存储器排序要求的系统,包括:
归属节点;
对等节点,包括第一逻辑模块,所述第一逻辑模块响应于接收到来自与部分数据相关联的所述归属节点的冲突消息和所述对等节点执行对所述部分数据的部分写,而生成写回消息以在冲突阶段启动写回阶段;
其中所述归属节点通过点对点链路耦合至所述对等节点,所述归属节点包括第二逻辑模块,所述第二逻辑模块响应于在所述写回阶段期间接收到来自所述对等节点的所述部分数据,而在所述冲突阶段生成所述写回阶段的完成消息;
并且包括在所述对等节点中的所述第一逻辑模块在启动与所述部分数据相关的后续写事务之前进行等待,直到在归属节点处的数据更新以及接收到来自所述归属节点的所述写回阶段的完成转发代码Cmp_FwdCode为止,其中所述完成转发代码Cmp_FwdCode表示完成请求、将处于转发或共享状态的线转发给请求者、以及使本地副本无效或保持其处于共享状态。
16.如权利要求15所述的系统,其特征在于,所述写回消息从包括确认冲突写回无效消息、写回修改到无效消息、响应无效写回可发布消息、写回部分无效数据可发布消息、以及写回可发布消息的组中选择,其中所述确认冲突写回无效消息表示确认收到强制确认冲突并进一步发信号通知部分数据的写回,所述写回修改到无效消息表示将处于修改M状态的高速缓存线写回存储器并使高速缓存线状态转移到无效状态的请求,所述响应无效写回可发布消息表示可发布写,以使所述对等节点在被解除分配之前等待完成,所述写回部分无效数据可发布消息表示部分数据的写回并且转移到无效状态,所述写回可发布消息表示所述对等节点已将往归属节点的具有正在处理的Wb*Data消息的数据驱逐,其中Wb*Data消息表示写回数据并转移至相应的独占E、共享S、或无效I状态。
17.如权利要求16所述的系统,其特征在于,所述第一逻辑模块包括实现互连架构一致性协议的协议逻辑模块,而且其中所述第二逻辑模块包括实现所述互连架构一致性协议的协议逻辑模块。
18.如权利要求16所述的系统,其特征在于,所述后续写事务包括更新被设置以向第二节点表明所述部分数据准备好被取回的标志,其中所述第二节点执行对所述标志的非监听读,而且所述第二节点响应于所述标志被设置来执行从所述归属节点对所述部分数据的第二次非监听读。
19.一种用于满足部分写和非监听存取之间的存储器排序要求的方法,包括:
在对等高速缓存代理中将部分数据更新为新的部分数据;
利用与所述部分数据相关联的所述对等高速缓存代理接收冲突消息;
响应于利用所述对等高速缓存代理接收所述冲突消息,生成向归属代理表明所述新的部分数据将被写回所述归属代理的写回消息;以及
在所述归属代理接收到来自所述对等高速缓存代理的新的部分数据之后,等待在归属代理处的数据更新并且利用所述对等高速缓存代理来接收来自所述归属代理的完成转发代码Cmp_FwdCode,其中所述完成转发代码Cmp_FwdCode表示完成请求、将处于转发或共享状态的线转发给请求者、以及使本地副本无效或保持其处于共享状态;
在接收到所述完成转发代码Cmp_FwdCode之后启动与所述部分数据相关的后续事务。
20.如权利要求19所述的方法,其特征在于,还包括:在对等高速缓存代理中将所述部分数据更新为所述新的部分数据之前,响应于所述部分数据在所述对等高速缓存代理中被保持于修改状态,而将所述部分数据写回所述归属代理,其中在对等高速缓存代理中将所述部分数据更新为新的部分数据在接收到所述冲突消息之前发生。
21.如权利要求19所述的方法,其特征在于,在所述对等高速缓存代理中将所述部分数据更新为所述新的部分数据在接收到所述冲突消息之后发生。
22.如权利要求19所述的方法,其特征在于,还包括:
响应于在所述归属代理处从所述对等高速缓存代理接收响应冲突RspCnflt消息,利用所述归属代理生成所述冲突消息,其中所述响应冲突RspCnflt消息表示使对等节点结果具有处于无效状态的线,而且该对等节点具有冲突的、未解决的请求;
利用所述归属代理接收来自所述对等高速缓存代理的所述新的部分数据;
将所述新的部分数据提交至与所述归属代理相关联的存储器;以及
响应于利用所述归属代理接收所述新的部分数据以及将所述新的部分数据提交至与所述归属代理相关联的存储器,利用所述归属代理生成所述完成转发代码Cmp_FwdCode。
23.如权利要求22所述的方法,其特征在于,启动与所述部分数据相关的后续事务还包括:
在接收到来自所述归属代理的完成转发代码Cmp_FwdCode之后,利用所述对等高速缓存代理写标志以设置所述标志;
利用第二对等高速缓存代理执行对所述标志的非一致性读;
响应于所述标志在所述第二对等高速缓存代理对所述标志的非一致性读时被设置,利用所述第二对等高速缓存代理执行对来自所述归属代理的新的部分数据的非一致性读。
24.如权利要求19所述的方法,其特征在于,所述写回消息从包括确认冲突写回无效消息、写回修改到无效消息、响应无效写回可发布消息、写回部分无效数据可发布消息、以及写回可发布消息的组中选择,其中所述确认冲突写回无效消息表示确认收到强制确认冲突并进一步发信号通知部分数据的写回,所述写回修改到无效消息表示将处于修改M状态的高速缓存线写回存储器并使高速缓存线状态转移到无效状态的请求,所述响应无效写回可发布消息表示可发布写,以使所述对等高速缓存代理在被解除分配之前等待完成,所述写回部分无效数据可发布消息表示部分数据的写回并且转移到无效状态,所述写回可发布消息表示所述对等高速缓存代理已将往归属代理的具有正在处理的Wb*Data消息的数据驱逐,其中Wb*Data消息表示写回数据并转移至相应的独占E、共享S、或无效I状态。
25.如权利要求24所述的方法,其特征在于,所述冲突消息包括强制确认冲突消息,所述强制确认冲突消息表示对于确认冲突已收集监听响应。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/168,606 | 2008-07-07 | ||
US12/168,606 US8205045B2 (en) | 2008-07-07 | 2008-07-07 | Satisfying memory ordering requirements between partial writes and non-snoop accesses |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101625664A CN101625664A (zh) | 2010-01-13 |
CN101625664B true CN101625664B (zh) | 2013-06-19 |
Family
ID=41413037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101598401A Expired - Fee Related CN101625664B (zh) | 2008-07-07 | 2009-07-07 | 满足部分写和非监听存取之间的存储器排序要求 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8205045B2 (zh) |
JP (2) | JP5173952B2 (zh) |
CN (1) | CN101625664B (zh) |
DE (1) | DE102009031497A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9086974B2 (en) | 2013-09-26 | 2015-07-21 | International Business Machines Corporation | Centralized management of high-contention cache lines in multi-processor computing environments |
US9292444B2 (en) | 2013-09-26 | 2016-03-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US9298623B2 (en) | 2013-09-26 | 2016-03-29 | Globalfoundries Inc. | Identifying high-conflict cache lines in transactional memory computing environments |
US9298626B2 (en) | 2013-09-26 | 2016-03-29 | Globalfoundries Inc. | Managing high-conflict cache lines in transactional memory computing environments |
US9329890B2 (en) | 2013-09-26 | 2016-05-03 | Globalfoundries Inc. | Managing high-coherence-miss cache lines in multi-processor computing environments |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797495B1 (en) * | 2005-08-04 | 2010-09-14 | Advanced Micro Devices, Inc. | Distributed directory cache |
US7930459B2 (en) * | 2007-09-28 | 2011-04-19 | Intel Corporation | Coherent input output device |
US8656115B2 (en) * | 2010-08-20 | 2014-02-18 | Intel Corporation | Extending a cache coherency snoop broadcast protocol with directory information |
WO2012149812A1 (zh) * | 2011-10-27 | 2012-11-08 | 华为技术有限公司 | 一种防止节点控制器死锁的方法及节点控制器 |
US20140040561A1 (en) * | 2012-07-31 | 2014-02-06 | Futurewei Technologies, Inc. | Handling cache write-back and cache eviction for cache coherence |
US9600431B2 (en) | 2012-10-22 | 2017-03-21 | Intel Corporation | High performance interconnect physical layer |
US10268583B2 (en) * | 2012-10-22 | 2019-04-23 | Intel Corporation | High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier |
US20140114928A1 (en) | 2012-10-22 | 2014-04-24 | Robert Beers | Coherence protocol tables |
US9355058B2 (en) | 2012-10-22 | 2016-05-31 | Intel Corporation | High performance interconnect physical layer |
KR101598746B1 (ko) * | 2012-10-22 | 2016-02-29 | 인텔 코포레이션 | 고성능 상호연결 물리 계층 |
CN103346933B (zh) * | 2013-07-22 | 2016-05-18 | 盛科网络(苏州)有限公司 | 动态监测报文转发的装置 |
US9454313B2 (en) | 2014-06-10 | 2016-09-27 | Arm Limited | Dynamic selection of memory management algorithm |
US20180373653A1 (en) * | 2017-06-21 | 2018-12-27 | Hewlett Packard Enterprise Development Lp | Commitment of acknowledged data in response to request to commit |
US11119926B2 (en) | 2017-12-18 | 2021-09-14 | Advanced Micro Devices, Inc. | Region based directory scheme to adapt to large cache sizes |
US10705959B2 (en) | 2018-08-31 | 2020-07-07 | Advanced Micro Devices, Inc. | Region based split-directory scheme to adapt to large cache sizes |
US10922237B2 (en) | 2018-09-12 | 2021-02-16 | Advanced Micro Devices, Inc. | Accelerating accesses to private regions in a region-based cache directory scheme |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537640A (en) * | 1988-12-30 | 1996-07-16 | Intel Corporation | Asynchronous modular bus architecture with cache consistency |
US5467460A (en) * | 1990-02-14 | 1995-11-14 | Intel Corporation | M&A for minimizing data transfer to main memory from a writeback cache during a cache miss |
EP0600626A1 (en) * | 1992-11-13 | 1994-06-08 | Cyrix Corporation | Coherency for write-back cache in a system designed for write-through cache |
US5797026A (en) * | 1994-02-28 | 1998-08-18 | Intel Corporation | Method and apparatus for self-snooping a bus during a boundary transaction |
JP3210590B2 (ja) * | 1996-11-29 | 2001-09-17 | 株式会社日立製作所 | マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法 |
US6289419B1 (en) * | 1998-03-06 | 2001-09-11 | Sharp Kabushiki Kaisha | Consistency control device merging updated memory blocks |
US6279085B1 (en) * | 1999-02-26 | 2001-08-21 | International Business Machines Corporation | Method and system for avoiding livelocks due to colliding writebacks within a non-uniform memory access system |
JP2002342162A (ja) * | 2001-05-14 | 2002-11-29 | Nec Corp | メモリアクセス制御方式及びホストブリッジ |
US6718444B1 (en) * | 2001-12-20 | 2004-04-06 | Advanced Micro Devices, Inc. | Read-modify-write for partial writes in a memory controller |
US6795078B2 (en) * | 2002-01-31 | 2004-09-21 | Sun Microsystems, Inc. | Parallel read with source-clear operation |
US6922756B2 (en) * | 2002-12-19 | 2005-07-26 | Intel Corporation | Forward state for use in cache coherency in a multiprocessor system |
US7917646B2 (en) | 2002-12-19 | 2011-03-29 | Intel Corporation | Speculative distributed conflict resolution for a cache coherency protocol |
US7620696B2 (en) * | 2004-01-20 | 2009-11-17 | Hewlett-Packard Development Company, L.P. | System and method for conflict responses in a cache coherency protocol |
TWI242134B (en) * | 2004-02-12 | 2005-10-21 | Via Tech Inc | Data extraction method and system |
US7822929B2 (en) * | 2004-04-27 | 2010-10-26 | Intel Corporation | Two-hop cache coherency protocol |
US20070150664A1 (en) * | 2005-12-28 | 2007-06-28 | Chris Dombrowski | System and method for default data forwarding coherent caching agent |
US8250311B2 (en) * | 2008-07-07 | 2012-08-21 | Intel Corporation | Satisfying memory ordering requirements between partial reads and non-snoop accesses |
-
2008
- 2008-07-07 US US12/168,606 patent/US8205045B2/en not_active Expired - Fee Related
-
2009
- 2009-07-02 DE DE102009031497A patent/DE102009031497A1/de not_active Ceased
- 2009-07-06 JP JP2009159801A patent/JP5173952B2/ja not_active Expired - Fee Related
- 2009-07-07 CN CN2009101598401A patent/CN101625664B/zh not_active Expired - Fee Related
-
2012
- 2012-12-27 JP JP2012284915A patent/JP5575870B2/ja active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9086974B2 (en) | 2013-09-26 | 2015-07-21 | International Business Machines Corporation | Centralized management of high-contention cache lines in multi-processor computing environments |
US9292444B2 (en) | 2013-09-26 | 2016-03-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US9298623B2 (en) | 2013-09-26 | 2016-03-29 | Globalfoundries Inc. | Identifying high-conflict cache lines in transactional memory computing environments |
US9298626B2 (en) | 2013-09-26 | 2016-03-29 | Globalfoundries Inc. | Managing high-conflict cache lines in transactional memory computing environments |
US9329890B2 (en) | 2013-09-26 | 2016-05-03 | Globalfoundries Inc. | Managing high-coherence-miss cache lines in multi-processor computing environments |
US9740616B2 (en) | 2013-09-26 | 2017-08-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
Also Published As
Publication number | Publication date |
---|---|
US20100005245A1 (en) | 2010-01-07 |
US8205045B2 (en) | 2012-06-19 |
JP2013080512A (ja) | 2013-05-02 |
JP5173952B2 (ja) | 2013-04-03 |
JP2010027048A (ja) | 2010-02-04 |
DE102009031497A1 (de) | 2010-01-14 |
JP5575870B2 (ja) | 2014-08-20 |
CN101625664A (zh) | 2010-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101625664B (zh) | 满足部分写和非监听存取之间的存储器排序要求 | |
US10019366B2 (en) | Satisfying memory ordering requirements between partial reads and non-snoop accesses | |
CN108885583B (zh) | 高速缓存存储器访问 | |
CA2349569C (en) | Non-uniform memory access (numa) data processing system that speculatively forwards a read request to a remote processing node | |
JP3661761B2 (ja) | 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム | |
JP3644587B2 (ja) | 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム | |
CN104380269A (zh) | 高性能互连相干协议 | |
CN101635679B (zh) | 路由表的动态更新 | |
US10216519B2 (en) | Multicopy atomic store operation in a data processing system | |
EP3788492B1 (en) | Separating completion and data responses for higher read throughput and lower link utilization in a data processing network | |
EP3788494B1 (en) | Transfer protocol in a data processing network |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130619 Termination date: 20210707 |