CN108885583B - 高速缓存存储器访问 - Google Patents
高速缓存存储器访问 Download PDFInfo
- Publication number
- CN108885583B CN108885583B CN201780020369.0A CN201780020369A CN108885583B CN 108885583 B CN108885583 B CN 108885583B CN 201780020369 A CN201780020369 A CN 201780020369A CN 108885583 B CN108885583 B CN 108885583B
- Authority
- CN
- China
- Prior art keywords
- cache
- response
- request
- memory
- cache memory
- 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.)
- Active
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
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
-
- 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)
Abstract
多处理器数据处理系统包括支持多个处理器内核的多个垂直高速缓存层级结构、系统存储器和系统互连。响应于来自第一处理器内核的加载‑和‑保留请求,支持第一处理器内核的第一高速缓存存储器在系统互连上发布对加载‑和‑保留请求的目标高速缓存行的存储器访问请求。响应于存储器访问请求并且在接收对于存储器访问请求的系统范围的一致性响应之前,第一高速缓存存储器通过高速缓存‑到‑高速缓存干预从第二垂直高速缓存层级结构中的第二高速缓存存储器接收目标高速缓存行以及对存储器访问请求的系统范围的一致性响应的早期指示。响应于早期指示并在接收系统范围的一致性响应之前,第一高速缓存存储器启动处理以更新第一高速缓存存储器中的目标高速缓存行。
Description
技术领域
本发明涉及数据处理,并且更具体地涉及通过基于系统范围的一致性响应的早期指示在多处理器数据处理系统中减少数据切换间隔(data handoff interval)来提高数据处理系统性能。
背景技术
传统的对称多处理器(SMP)计算机系统(例如服务器计算机系统)包括全部耦合到系统互连的多个处理单元,所述系统互连通常包括一个或多个地址、数据和控制总线。与系统互连相耦合的是系统存储器,其代表多处理器计算机系统中最低级别的共享存储器,并且通常可由所有处理单元进行读取和写入访问。为了减少对驻留在系统存储器中的指令和数据的访问延迟,每个处理单元通常由相应的多级垂直高速缓存层级结构进一步支持,其中的较低级别可以由一个或多个处理器内核共享。
由于多个处理器内核可能请求对同一存储器块(例如,高速缓存行或扇区)的写入访问,并且因为被修改的高速缓存的存储器块不会立即与系统存储器同步,所以多处理器计算机系统的高速缓存层级结构通常实现高速缓存一致性协议,以确保各种处理器内核的系统存储器内容的“视图”至少达到所需最低水平的一致性。所需最低水平的一致性由选定的存储器一致性模型确定,该模型定义了分布式共享存储器更新的明显排序和可见性规则。在弱一致性模型和强一致性模型之间的所有存储器一致性模型中,高速缓存一致性至少要求,在处理单元访问存储器块的副本并随后访问存储器块的更新副本之后,处理单元不能再次访问存储器块的旧(“陈旧”)副本。
高速缓存一致性协议通常定义与存储器块的高速缓存副本相关联地存储的一组一致性状态,以及触发在一致性状态和要转换到的一致性状态之间的转换的事件。一致性协议通常可以分为基于目录或基于探听的协议。在基于目录的一致性协议中,通用中央目录通过控制由高速缓存对存储器块的访问以及更新各种高速缓存中保存的存储器块的副本或使其无效来保持一致性。另一方面,基于探听的一致性协议实现分布式设计范例,其中每个高速缓存维护其内容的专用目录,监视(“探听”)系统互连上针对保存在高速缓存中的存储器块的存储器访问请求,以及通过更新其专用目录并且如果需要的话通过发送一致性消息和/或其存储器块的副本来响应存储器访问请求。
一致性协议的高速缓存状态可以包括例如众所周知的MESI(修改,独占,共享,无效)协议或其变体的协议。MESI协议允许数据的高速缓存行与四种状态之一相关联:“M”(修改),“E”(独占),“S”(共享)或“I”(无效)。修改状态表示一个存储器块只在保存修改的存储器块的高速缓存中有效,并且该存储器块与系统存储器不一致。独占状态表示相关联的存储器块与系统存储器一致,并且关联的高速缓存是数据处理系统中保存关联存储器块的唯一高速缓存。共享状态表示关联的存储器块驻留在关联的高速缓存中,同时可能还驻留在一个或多个其他高速缓存中,并且存储器块的所有副本都与系统存储器一致。最后,无效状态表示与一致性细粒(granule)相关联的数据和地址标记都无效。
在基于探听的一致性协议中,高速缓存通常通过提供单独的一致性响应来响应在互连上探听的请求。然后将这些单独的一致性响应组合或以其他方式处理以确定针对该请求的最终系统范围的一致性响应,其可以指示例如该请求将被允许成功还是将不得不被重试、负责向请求的高速缓存提供在请求中标识的目标高速缓存行数据的数据源、在该请求之后的一个或多个高速缓存中的目标高速缓存行的一致性状态等。在采用基于探听的一致性协议的常规数据处理系统中,可以从在支持一个处理器内核的垂直高速缓存层级结构中的一个高速缓存经由系统互连向在支持另一个处理器内核的另一个垂直高速缓存层级结构中的另一个高速缓存提供(干预(intervene))高速缓存行数据的最小切换间隔是从由该高速缓存发出请求到由该高速缓存接收到系统范围的一致性响应的时间。
发明内容
根据一个实施例,可以减小经由系统互连将一个高速缓存行数据从一个垂直高速缓存层级结构中的高速缓存发送到另一个垂直高速缓存层级结构中的高速缓存的最小切换间隔。
在至少一个实施例中,多处理器数据处理系统包括支持多个处理器内核的多个垂直高速缓存层级结构、系统存储器和系统互连。响应于来自第一处理器内核的加载-和-保留请求,支持第一处理器内核的第一高速缓存存储器在系统互连上发布对于该加载-和-保留请求的目标高速缓存行的存储器访问请求。响应于该存储器访问请求并且在接收对于该存储器访问请求的系统范围的一致性响应之前,第一高速缓存存储器通过高速缓存-到-高速缓存干预从第二垂直高速缓存层级结构中的第二高速缓存存储器接收目标高速缓存行以及对于该存储器访问请求的系统范围的一致性响应的早期指示。响应于该早期指示并且在接收系统范围的一致性响应之前,第一高速缓存存储器启动处理以更新第一高速缓存存储器中的目标高速缓存行。
附图简要说明
现在将参照附图仅以举例的方式描述本发明的实施例,在附图中:
图1是根据一个实施例的处理单元的相关部分的图;
图2是根据一个实施例的示例性数据处理系统的相关部分的图;
图3是包括在图2的数据处理系统内实现的请求阶段、部分响应(Presp)阶段和组合响应(Cresp)阶段的示例性操作的时间-空间图;
图4是图2的数据处理系统内的示例性操作的时间-空间图;
图5是根据一个实施例的图1的L2高速缓存的更详细的框图;
图6是较低级别高速缓存的读取声明(read-claim)(RC)机经由互连操作服务于附属处理器内核的存储器访问请求的传统处理的流程图;
图7是传统的互连操作的时序图,其中在接收针对互连操作的请求的组合响应之前,较低级别高速缓存通过高速缓存-到-高速缓存干预接收由该请求指定的目标高速缓存行;图8示出了根据一个实施例的图2的数据处理系统的互连结构上的示例性数据权属(tenure),其包括互连操作的组合响应的早期指示;
图9是较低级别高速缓存的读取声明(RC)机经由互连操作服务于附属处理器内核的存储器访问请求的示例性过程的高级逻辑流程图;
图10是示例性互连操作的时序图,其中在接收对于互连操作的请求的组合响应之前,较低级别高速缓存通过高速缓存-到-高速缓存干预接收由该请求指定的目标高速缓存行;图11示出了在多线程数据处理系统中使用加载-和-保留以及存储-条件指令来将更新同步到高速缓存行的示例;
图12-13一起形成根据一个实施例的较低级别高速缓存的读取(RC)机服务于附属处理器内核的加载-和-保留请求以及存储-条件请求的示例性过程的高级逻辑流程图;
图14是图12-13的过程下的操作场景的时序图,其中加载-和-保留请求的目标高速缓存行在相关联的组合响应之前被接收,该组合响应随后在存储-条件请求的处理完成之前被接收;
图15是图12-13的过程下的操作场景的时序图,其中加载-和-保留请求的目标高速缓存行在相关联的组合响应之前被接收,该组合响应随后在存储-条件请求的处理完成之后被接收;
图16示出了图13的过程的替代实施例,其中较低级别高速缓存分配另一RC机以服务于附属处理器内核的存储-条件请求,而不是利用服务于先前的加载-和-保留请求的相同RC机;
图17是较低低级别高速缓存的RC机在图16的实施例中服务于附属处理器内核的存储-条件请求的过程的高级逻辑流程图;
图18是在图12和16的过程下的操作场景的时序图,其中加载-和-保留请求的目标高速缓存行在相关联的组合响应之前被接收;以及
图19示出了根据一个实施例的示例性设计过程。
具体实施方式
现在参考附图,并且具体参照图1,示出了根据一个实施例的多处理器数据处理系统的处理单元100的示例性实施例的高级框图。在所描绘的实施例中,处理单元100是包括用于独立处理指令和数据的两个处理器内核102a、102b的单个集成电路。(当然,在其他实施例中,处理器内核102的数量可以变化。)每个处理器内核102包括用于提取和排序用于执行的指令的指令排序单元(ISU)104以及用于执行指令的一个或多个执行单元106。例如,执行单元106可以包括一个或多个浮点单元(FPU)、一个或多个加载存储单元(LSU)以及一个或多个整数单元(IU)。由执行单元106执行的指令可以包括例如固定和浮点算术指令、逻辑指令和请求对存储器块的读取和/或写入访问的指令。
每个处理器内核102a、102b的操作由多级存储器层级结构支持,该多级存储器层级结构在其最低级别具有一个或多个共享系统存储器132(图1中仅示出其中的一个),并且在其上级,具有包括一个或多个级别的高速缓存存储器的垂直高速缓存存储器层级结构。如所描绘的,处理单元100包括集成存储器控制器(IMC)124,该集成存储器控制器(IMC)124响应于探听器126在互连结构(在下文中描述)上探听的操作而控制对系统存储器132的读取和写入访问。
在例示实施例中,处理单元100的垂直高速缓存存储器层级结构包括在每个处理器内核102a、102b内的贯穿存储(store-through)级别一(L1)高速缓存108和由处理单元100的所有处理器内核102a、102b共享的级别二(L2)高速缓存110(在其他实施例中,每个处理器内核102可以具有其自己的专用L2高速缓存110。)虽然所示出的高速缓存层级结构仅包括两级高速缓存存储器,但是本领域技术人员将认识到,替代实施例可以包括额外级别的片上或片外线内(in-line)或旁视(look-aside)高速缓存(例如,级别三(L3),级别四(L4)等),其可以完全包含、部分包含、或者不包含较高级别高速缓存的内容。
如图1中进一步所示,处理单元100包括集成互连逻辑120,处理单元100可通过集成互连逻辑120耦合到更大的多处理器数据处理系统的互连结构。在所描绘的实施例中,互连逻辑120支持任意数量t1的“第一层”互连链路,其在这种情况下包括入站(in-bound)和出站(out-bound)“X”、“Y”和“Z”链路。互连逻辑120进一步支持任意数量t2的第二层链路,在图1中指定为入站和出站'A'和'B'链路。利用这些第一和第二层链路,每个处理单元100可以被耦合以用于与多至t1/2+t2/2个(在这种情况下是五个)其他处理单元100进行双向通信。互连逻辑120包括请求逻辑(标记为'R')121a、部分响应逻辑(标记为'P')121b、组合响应逻辑(标记为'C')121c和数据逻辑(标记为'D')121d,用于在互连上的操作的不同阶段期间处理和转发信息。另外,互连逻辑120包括配置寄存器(标记为'CR')123,其包括用于配置处理单元100的多个模式位。这些模式位优选地包括:(1)第一组一个或多个模式位,为第一和第二层链路选择期望的链路信息分配;(2)第二组模式位,指定处理单元100的第一和第二层链路中的哪一个连接到其他处理单元100;和(3)第三组模式位,确定一个保护窗口扩展的可编程持续时间。
每个处理单元100还包括响应逻辑122的实例,其实现保持处理单元100的高速缓存层级结构与其他处理单元100的高速缓存层级结构之间的高速缓存一致性的分布式基于探听的一致性信令机制的一部分。最后,每个处理单元100包括支持诸如I/O设备130之类的一个或多个I/O设备的附接的集成I/O(输入/输出)控制器128。I/O控制器128可以发布操作并响应于I/O设备130的请求在“X”、“Y”、“Z”、“A”和“B”链路上接收数据。
现在参照图2,其描绘了根据本发明的包括多个处理单元100的数据处理系统200的示例性实施例的框图。如图所示,数据处理系统200包括八个处理节点202a0-202d0和202a1-202d1,每个处理节点可以被实现为包括含有四个处理单元100的封装的多芯片模块(MCM)。如图所示,每个处理节点202内的处理单元100通过处理单元的“X”、“Y”和“Z”链路进行点对点通信。每个处理单元100可以进一步通过处理单元的“A”和“B”链路耦合到两个不同处理节点202中的处理单元100,用于点对点通信。虽然在图2中用双箭头表示,但应该理解,每对'X'、'Y'、'Z'、'A'和'B'链路优选地(但不一定)实现为两个单向链路,而不是双向链路。
用于形成图2所示的拓扑结构的一般表达式可以如下给出:
节点[I][K].芯片[J].链路[K]连接到节点[J][K].芯片[I].链路[K],对于所有的I≠J;以及
节点[I][K].芯片[I].链路[K]连接到节点[I][非K].芯片[I].链路[非K];以及节点[I][K].芯片[I].链路[非K]连接到:
(1)空(为将来的扩展所保留);或者
(2)节点[额外][非K].芯片[I].链路[K],在所有链路都被全部利用的情况下(即,九个8路节点形成72路系统);以及
其中I和J属于集合{a,b,c,d},K属于集合{0,1}。
当然,可以定义替代表达式以形成其他功能等效的拓扑。此外,应该理解的是,所描绘的拓扑结构是代表性的而不是穷举实现本发明的数据处理系统拓扑结构,并且其他拓扑结构是可能的。在这样的替代拓扑中,例如,耦合到每个处理单元100的第一层和第二层链路的数量可以是任意数量,并且每层内的处理节点202的数量(即,I)不需要等于每个处理节点100的处理单元100的数据(即,J)。
本领域技术人员将认识到,SMP数据处理系统100可以包括许多附加的未示出的部件,诸如互连桥、非易失性存储器、用于连接到网络或附接设备的端口等。由于这些附加部件不是为理解本发明所必需的,它们未在图2中示出或在本文中进一步讨论。
现在参考图3,其描绘了图2的数据处理系统200的互连结构上的示例性互连操作的时间-空间图。当主设备300(例如,L2高速缓存110的读取-声明(RC)机512(例如参见图5)或I/O控制器128内的主设备)在互连结构上发布请求302时,互连操作开始。请求302优选地至少包括指示期望的访问类型的事务类型和指示要由该请求访问的资源的资源标识符(例如,目标实际地址)。常见的请求类型包括以下表I中列出的请求。
表I
关于这些操作的进一步细节以及有助于这些操作的有效处理的示例性高速缓存一致性协议可以在美国专利号No.7,774,555中找到,这里通过引用将其全部内容包含在这里。
由在整个数据处理系统200分布的探听器304(例如,L2高速缓存110的探听机511(例如参见图5)和IMC 124的探听器126)接收请求302。通常,除了一些例外,在与请求302的主设备300相同的L2高速缓存110中的探听器304不探听请求302(即,通常不存在自窥探),因为仅当请求302不能在内部被处理单元100服务时才在互连结构上发送请求302。接收并处理请求302的探听器304各自提供表示至少该探听器304对请求302的响应的相应部分响应(Presp)306。IMC 124内的探听器126例如基于探听器126是否负责请求地址以及其是否具有可用于服务该请求的资源,确定要提供的部分响应306。L2高速缓存110可以基于例如探听机511处理该请求的可用性、其L2高速缓存目录508的可用性(参见例如图5)和与L2高速缓存目录508中的目标实际地址相关联的一致性状态来确定其部分响应306。
探听器304的部分响应306通过响应逻辑122的一个或多个实例分阶段地或全部一起逻辑地组合,以确定对请求302的系统范围的组合响应(Cresp)310。在一个实施例中,其中假定在下文中,负责生成Cresp 310的响应逻辑122的实例位于包含发出请求302的主设备300的处理单元100中。响应逻辑122经由互连结构向主设备300和探听器304提供Cresp310,以指示对请求302的系统范围的一致性响应(例如,成功,失败,重试等)。如果Cresp310指示请求302的成功,则Cresp 310可以指示例如请求302的目标存储器块的数据源、所请求的存储器块将由主设备300(或其他高速缓存器)高速缓存的一致性状态、以及是否需要使得在一个或多个高速缓存器中的所请求的存储器块无效的“清除”操作。
响应于接收到Cresp 310,主设备300和探听器304中的一个或多个通常执行一个或多个附加动作,以便服务于请求302。这些附加动作可以包括向主设备300提供数据,使无效或以其他方式更新高速缓存在一个或多个L2高速缓存110中的数据的一致性状态,执行驱逐(castout)操作,将数据写回到系统存储器132等。如果请求302需要,则可以在由响应逻辑122产生Cresp 310之前或之后将请求或目标存储器块发送到主设备300或从主设备300发送。
在下面的描述中,将参考探听器相对于由请求302所指定的请求(目标)地址是一致性的最高点(HPC)、一致性的最低点(LPC)还是两者都不是,来描述探听器304对请求302的部分响应306以及探听器304响应于请求302和/或其组合响应310而执行的动作。在这里将LPC定义为用作存储器块的仓库的存储器设备或I/O设备。在存储器块没有HPC的情况下,LPC保存存储器块的真实图像,并有权授予或拒绝生成存储器块的额外的高速缓存副本的请求。对于图1和图2的数据处理系统实施例中的典型请求,LPC将是用于保存所引用的存储器块的系统存储器132的存储器控制器124。在这里将HPC定义为唯一标识的设备,其高速缓存存储器块的真实图像(其可能与LPC上的对应存储器块一致或不一致),并且有权授予或拒绝修改存储器块的请求。描述性地,响应于不修改存储器块的操作,HPC也可以向请求者提供存储器块的副本。因此,对于图1和2的数据处理系统实施例中的典型请求,HPC(如果有的话)将是L2高速缓存110。尽管可以利用其他指示符来指定用于存储器块的HPC,本发明的优选实施例利用L2高速缓存110的高速缓存目录内的选定高速缓存一致性状态指定用于存储器块的HPC(如果有的话)。
仍然参考图3,在请求302中引用的存储器块的HPC(如果有的话)或者存储器块的LPC(在不存在HPC的情况下),响应于请求302优选地具有保护存储器块的一致性所有权的转移的责任(如果需要的话)。在图3所示的示例性场景中,在保护窗口312a期间以及随后的窗口扩展312b期间,在由请求302的请求地址指定的存储器块的HPC处(或者在没有HPC的情况下,LPC)的探听器304n保护所请求(目标)存储器块的一致性所有权到主设备300的转移,其中保护窗口312a从探听器304n确定其部分响应306的时间开始直到探听器304n接收Cresp310,窗口扩展312b将可编程时间延长到探听器304n接收到Cresp 310之后。在保护窗口312a和窗口扩展312b期间,探听器304n通过向指定相同请求地址的其他请求提供部分响应306(例如,重试部分响应),来保护目标存储器块的一致性所有权从探听器304n到主设备300的转移。这样的部分响应306阻止其他主设备获得目标存储块的一致性所有权,直到一致性所有权已从探听器304n成功转移到主设备300为止。如果需要,在接收到组合响应310之后,主设备300同样可以启动保护窗口313来保护其对目标存储器块的一致性所有权的获取。保护窗口313确保随后请求目标存储器块的任何主设备将接收由主设备300创建的目标存储器块的任何新值而不是陈旧值。
因为探听器304全部具有用于处理上述CPU和I/O请求的有限资源,所以可能存在几个不同级别的部分响应和相应的Cresp。例如,如果负责所请求的存储器块的存储器控制器124内的探听器126具有可用于处理请求的队列,则探听器126可以以一个部分响应来回应,该部分响应指示其能够作为请求的LPC来提供服务。另一方面,如果探听器126没有可用于处理该请求的队列,则探听器126可以以一个部分响应来回应,该部分响应指示它是存储器块的LPC,但当前不能服务该请求。类似地,为了处理请求,L2高速缓存110可能需要可用的探听机511并访问L2高速缓存目录508。没有对这些资源中的任何一个(或两者)的访问会导致一个部分响应(和相应的Cresp),其表明由于缺少所需的资源,无法为请求提供服务。
如在图3中进一步示出的,探听器304n可以在主设备300(例如,L2高速缓存110)从响应逻辑122接收到(例如,对于READ或RWITM请求的)Cresp之前或之后,向主机300返回(用于READ或RWITM请求的)数据。
现在参考图4,示出了图2的数据处理系统200中的示例性操作流程的时间-空间图。在这些图中,数据处理系统200内的各种处理单元100被标记有两个位置标识符-第一个标识处理单元100所属的处理节点202,第二个标识处理节点202内的特定处理单元100。因此,例如,处理单元100a0c指的是处理节点202a0的处理单元100c。另外,每个处理单元100被标记有指示其相对于参与该操作的其他处理单元100的功能的功能标识符。这些功能标识符包括:(1)本地主设备(LM),其指定发起操作的处理单元100,(2)本地集线器(LH),其指定与本地主设备处于同一处理节点202中并且负责将操作传输到另一个处理节点202的处理单元100(本地主设备也可以是本地集线器),(3)远程集线器(RH),其指定与本地主设备处于不同处理节点202中并且负责将操作分发给其处理节点202中的其他处理单元100的处理单元100,以及(4)远程叶设备(RL),其指定与本地主设备处于不同处理节点202中并且不是远程集线器的处理单元100。
如图4所示,示例性操作具有参考图3所述的至少三个阶段,即请求(或地址)阶段、部分响应(Presp)阶段和组合响应(Cresp)阶段。这三个阶段优选按照上述顺序进行并且不重叠。该操作可以另外具有数据阶段,其可以可选地与任何请求、部分响应和组合响应阶段重叠。
仍然参考图4,请求阶段开始,本地主设备100a0c(即,处理节点202a0的处理单元100c)执行请求(例如,读取请求)到在其处理节点202a0内的每个本地集线器100a0a、100a0b、100a0c和100a0d的同步广播。应该注意的是,本地集线器列表包括本地集线器100a0c,它也是本地主设备。该内部传输可以有利地用于使本地集线器100a0c的操作与本地集线器100a0a、100a0b和100a0d同步,使得可以更容易满足时序约束。
响应于接收到该请求,通过其“A”或“B”链路耦合到远程集线器100的每个本地集线器100将操作发送到其远程集线器100。因此,本地集线器100a0a在其出站“A”链路上不发送操作,而是通过其出站“B”链路将操作发送到处理节点202a1内的远程集线器。本地集线器100a0b、100a0c和100a0d分别通过它们各自的出站'A'和'B'链路向处理节点202b0和202b1、处理节点202c0和202c1以及处理节点202d0和202d1中的远程集线器发送操作。接收操作的每个远程集线器100又将操作发送到其处理节点202中的每个远程叶设备100。因此,例如,远程集线器100b0a将操作发送到远程叶设备100b0b、100b0c和100b0d。以这种方式,利用不超过三个链路进行传输,该操作被有效地广播到数据处理系统200内的所有处理单元100。
在请求阶段之后,发生部分响应(Presp)阶段。在部分响应阶段中,每个远程叶设备100评估操作并向其各自的远程集线器100提供其对操作的部分响应。例如,远程叶设备100b0b、100b0c和100b0d将它们各自的部分响应发送到远程集线器100b0a。每个远程集线器100又将这些部分响应以及其自身的部分响应发送到本地集线器100a0a、100a0b、100a0c和100a0d中相应的一个。本地集线器100a0a、100a0b、100a0c和100a0d然后将这些部分响应以及它们自己的部分响应广播到处理节点202a0中的每个本地集线器100。应该注意的是,出于时序的原因,处理节点202a0内的本地集线器100的部分响应的广播包括每个本地集线器100对其自身的部分响应的自我广播。
如将认识到的,以所示方式对部分响应的收集可以以多种不同的方式来实现。例如,可以将单个部分响应从每个其他本地集线器、远程集线器和远程叶设备传送回每个本地集线器。或者,为了获得更高的效率,可能希望在部分响应被传回本地集线器时累积部分响应。为了确保每个部分响应的效果被准确地传回到本地集线器100,优选地,如果可能的话以非破坏性的方式累积部分响应,例如利用逻辑OR函数和其中当执行这种函数时不会丢失相关信息的编码(例如,“独热(one-hot)”编码)。
如图4进一步所示,处理节点202a0内的每个本地集线器100处的响应逻辑122编译其他处理单元100的部分响应,以获得表示对该请求的系统范围的一致性响应的组合响应。本地集线器100a0a-100a0d然后按照请求阶段所采用的相同分发路径向所有处理单元100广播该组合响应。因此,首先将组合响应广播到远程集线器100,远程集线器100又将组合响应传输到其各自处理节点202内的每个远程叶设备100。例如,本地集线器100a0b将组合响应传输到远程集线器100b0a,远程集线器100b0a又将组合响应传输到远程叶设备100b0b、100b0c和100b0d。
如上所述,服务于该操作可能需要额外的数据阶段。例如,如果操作是读取类型的操作,诸如READ或RWITM操作,则远程叶设备100b0d可以通过将远程叶设备100b0d连接到远程集线器100b0a、将远程集线器100b0a连接到本地集线器100b0a、将本地集线器100a0b连接到本地主设备100a0c的链路将请求的存储器块发送到本地主设备100a0c。相反,如果操作是写入类型的操作,例如,将修改的存储器块写回到远程叶100b0b的系统存储器132的高速缓存驱逐操作,则经由将本地主设备100a0c连接到本地集线器100a0b、将本地集线器100a0b连接到远程集线器100b0a以及将远程集线器100b0a连接到远程叶设备100b0b的链路,发送存储器块。
当然,图4中描绘的场景仅仅是可能在诸如数据处理系统200的多处理器数据处理系统中同时发生的无数可能操作的示例。
如上面参考图3所述,在可能存在其他主设备竞争相同存储器块的所有权的情况下,通过保护窗口312a、窗口扩展312b和保护窗口313,在从探听器304n到请求主设备300的存储器块的一致所有权的“切换(handoff)”过程中保持一致性。例如,在存在竞争主设备(CM)的竞争性请求的情况下,保护窗口312a和窗口扩展312b合在一起必须具有足够的持续时间以保护将所请求的存储器块的一致性所有权转移给获胜主设备(WM)300。为了确保保护窗口312a和窗口扩展312b具有足够的持续时间来保护所请求的存储器块的所有权向获胜主设备300的转移,根据图4的处理单元100之间的通信的延迟优选地被约束为使得以下条件得到满足:
A_lat(CM_S)≤A_lat(CM_WM)+C_lat(WM_S)+ε,
其中A_lat(CM_S)是任何竞争主设备(CM)对拥有所请求的存储器块的一致性的探听器(S)304n的地址延迟,A_lat(CM_WM)是任何竞争主设备(CM)“对由探听器304n授予一致性所有权的获胜主设备(WM)300的地址延迟,C_lat(WM_S)是从获胜主设备(WM)300接收到组合响应的时间到拥有所请求的存储器块的探听器(S)304n接收到组合响应的时间的组合响应延迟,ε是窗口扩展312b的持续时间。
如果不满足于适用于任意拓扑系统的上述时序约束,则竞争主设备的请求可以(1)在获胜主设备300承担一致性所有权并且启动保护窗口312b之前,由获胜主设备300接收,以及(2)在保护窗口312a和窗口扩展312b结束之后由探听器304n接收。在这种情况下,获胜主设备300和探听器304n都不会提供用于防止竞争主设备承担存储器块的一致性所有权并从存储器读取非一致性数据的对竞争性请求的部分响应。然而,为了避免这种一致性错误,窗口扩展312b可以可编程地设置(例如,通过适当设置配置寄存器(CR)123)为任意长度(ε)以补偿无法满足保持一致性必须满足的时序约束的延迟变化或物理实现的缺点。因此,通过求解ε的上述等式,可以确定用于任何实现的窗口扩展312b的理想长度。
可以对上述时序约束进行若干观察。首先,从竞争主设备到拥有者探听器304a的地址延迟没有必要的下限,但必须有上限。通过确定可获得的最差情况的延迟来设计上限,其中考虑了最大可能的振荡器漂移、耦合处理单元100的最长链路、最大数目的累积停顿以及保证的最坏情况吞吐量。为了确保观察到上限,互连结构必须确保无阻塞行为。
其次,从竞争主设备到获胜主设备300的地址延迟没有必要的上限,但必须有下限。给定特定静态配置的情况下,下限由可达到的最佳情况延迟确定,其中考虑了不存在停顿、处理单元100之间的最短可能的链路和最慢的振荡器漂移。尽管对于给定的操作,获胜主设备300和竞争主设备中的每一个对于其各自的请求仅具有一个时序界限,但是应当理解的是,在操作过程中,任何处理单元100可以是一些操作的获胜主设备,也可以是其他操作的竞争(和失败)主设备。因此,每个处理单元100有效地具有其地址延迟的上限和下限。
第三,从组合响应被生成的时间到组合响应被获胜主设备300观察到的时间的组合响应延迟没有必要的下限(组合响应可以任意早期时间到达获胜主设备300),但必须有一个上限。相比之下,从组合响应被生成的时间到探听器304n接收到组合响应的时间的组合响应延迟具有下限,但没有必要的上限(尽管可以任意地施加一个以限制同时进行的操作的数量)。
第四,对部分响应延迟没有限制。也就是说,因为上面列举的时序约束的所有项都与请求/地址延迟和组合响应延迟有关,所以探听器304和竞争主设备对获胜主设备300的部分响应延迟没有必要的上限或下限。
连接处理单元100的第一层和第二层链路可以以各种方式实现,以获得图2中所描绘的拓扑并且满足时序约束。在一个优选实施例中,每个入站和出站第一层('X','Y'和'Z')链路以及每个入站和出站第二层('A'和'B')链路被实现为单向8字节的总线,其包含许多不同的虚拟通道或权属,以传达地址、数据、控制和一致性信息。
现在参考图5,示出了根据一个实施例的示例性L2高速缓存110的更详细的框图。如图5所示,L2高速缓存110包括高速缓存阵列502和高速缓存阵列502的内容的目录508。虽然未明确示出,但高速缓存阵列502优选地用单个读取端口和单个写入端口来实现,以减少实现高速缓存阵列502所需的晶片区域。
假设高速缓存阵列502和目录508如传统那样是组关联的,则利用系统存储器(实际)地址内的预定索引位将系统存储器132中的存储器位置映射到高速缓存阵列502内的特定同余类(congruence class)。存储在高速缓存阵列502的高速缓存行内的特定存储器块被记录在高速缓存目录508中,高速缓存目录508为每个高速缓存行包含一个目录条目。虽然在图5中没有明确地示出,但是本领域技术人员将会理解,高速缓存目录508中的每个目录条目包括各种字段,例如标识保存在高速缓存阵列502的相应高速缓存行中的存储器块的实际地址的标记字段,指示高速缓存行的一致性状态的状态字段,以及指示高速缓存行相对于同一同余类中的其他高速缓存行的替换顺序的最近最少使用(LRU)字段。
L2高速缓存110包括多个(例如16个或32个)读取-声明(RC)机512a-512n,用于独立并且同时地服务于从附属处理器内核102接收到的加载(LD)和存储(ST)请求。另外,L2高速缓存110包括多个(例如16个或32个)探听机511a-511m,用于服务于来自除附属处理器内核102以外的处理器内核102的远程存储器访问请求。每个探听机511可以独立并且同时地处理从本地互连514中“探听”的远程存储器访问请求。如将认识到的,L2高速缓存110对存储器访问请求的服务可能需要替换或无效高速缓存阵列502内的存储器块。因此,L2高速缓存110包括CO(驱逐(castout))机510a-510n,其管理存储器块从高速缓存阵列502的移除和写回。
L2高速缓存110还包括分别缓存插入到高速缓存阵列502和从高速缓存阵列502移除的数据的RC队列520和CPI(驱逐推送干预)队列518。RC队列520包括多个缓冲器条目,每个缓冲器条目单独对应到RC机512中的特定一个,使得被调度的每个RC机512仅从指定的缓冲器条目中检索数据。类似地,CPI队列518包括多个缓冲器条目,每个缓冲器条目单独对应于驱逐机510和探听机511中的特定一个,使得每个被调度的CO机510和每个探听器511仅从相应的指定CPI缓冲器条目检索数据。
每个RC机512还分配有多个RC数据(RCDAT)缓冲器522中相应的一个,用于缓存从高速缓存阵列502读取的和/或经由重新加载总线523从本地互连514接收的存储器块。分配给每个RC机512的RCDAT缓冲器522优选地用对应于可由相关联的RC机512服务的存储器访问请求的连接和功能构造。至少一些RCDAT缓冲器522具有相关联的存储数据多路复用器M4,其响应于由仲裁器505产生的未示出的选择信号,选择来自其输入的数据字节,用于在RCDAT缓冲器522中进行缓存。
L2高速缓存110另外包括仲裁器505,其被配置为控制多路复用器M1-M2来命令处理从附属处理器内核102接收的本地存储器访问请求和在本地互连514上探听的远程请求。根据由仲裁器505实施的仲裁策略将包括本地加载和存储操作和远程读取和写入操作的存储器访问请求转发到调度流水线506,在调度流水线506,在给定数量的周期上相对于目录508和高速缓存阵列502处理每个读取/加载和存储请求。
L2高速缓存110另外通过实施保留逻辑(RSV)513为关联处理器内核102提供对原子更新的支持,所述保留逻辑513跟踪由原子加载(例如,加载-和-保留(LARX))请求建立的保留,以确保仅仅在保留的高速缓存行自建立保留以来未被修改(即,如果相关保留仍然有效)的条件下,相应的原子存储(例如,存储-条件(STCX))请求成功完成。在典型的实施例中,对于每个线程,保留逻辑513包括相应的保留地址寄存器,该寄存器指定建立了保留的高速缓存行的基地址和指示针对指定的高速缓存行的保留是否仍然有效的保留标签。
在操作中,从存储队列(STQ)504内的附属处理器内核102接收包括事务类型(ttype)、目标实际地址和存储数据的处理器存储请求。从STQ 504开始,将存储数据经由数据路径524传送到存储数据多路复用器M4,并且将存储类型和目标地址传递到多路复用器M1。多路复用器M1还接收来自处理器内核102的处理器加载(PROC LD)请求和来自RC机512的目录写入(DIR WRITE)请求作为输入。响应于由仲裁器505产生的未示出的选择信号,多路复用器M1选择其输入请求中的一个以转发给多路复用器M2,多路复用器M2另外接收经由远程请求路径526从本地互连514接收的远程请求作为输入。仲裁器505安排本地和远程存储器访问请求以进行处理,并基于该安排,生成选择信号528的序列。响应于由仲裁器505生成的选择信号528,多路复用器M2选择从多路复用器M1接收的本地请求或从本地互连514探听的远程请求,作为要处理的下一存储器访问请求。
被仲裁器505选择用于处理的请求被多路复用器M2放置到调度流水线506中。调度流水线506优选地被实现为固定持续时间的流水线,其中以预定数量的时钟周期处理多个可能的重叠请求A、B、C等中的每一个。例如,调度流水线506可以对每个请求处理四个周期。
在调度流水线506内的处理的第一周期期间,利用请求地址来执行1个周期的目录读取,以确定请求地址在目录508中命中还是未命中,并且如果存储器地址命中,则确定目录508内的存储器块一致性状态。包括命中/未命中指示和存储器块的一致性状态的目录信息由目录508返回,以在诸如第四周期的后续周期中调度流水线506。应该理解,响应于远程存储器访问请求上的未命中,通常不在L2高速缓存110内采取动作;这样的远程存储器请求相应地从调度流水线506中被丢弃。然而,如果本地存储器访问请求命中或未命中或者远程存储器访问请求命中,L2高速缓存110将服务于存储器访问请求,对于不能完全在处理单元100内服务的请求,其可能需要通过结构控制器516在本地互连514上进行通信。
在处理调度流水线506内的存储器访问请求期间的预定时间,仲裁器505经由地址和控制路径530将请求地址发送到高速缓存阵列502,以发起由该请求地址指定的存储器块的高速缓存读取。在示例性实施例中,高速缓存读取需要2个周期。从高速缓存阵列502读取的存储器块经由数据路径542被传输到错误校正码(ECC)逻辑544,错误校正码逻辑544检查存储器块的错误,并且如果可能的话校正任何检测到的错误。对于处理器加载请求,存储块也经由数据路径540被发送到加载数据多路复用器M3以转发到附属处理器内核102。
在调度流水线506内的存储器访问请求的处理的最后一个周期,调度流水线506进行调度确定。例如,调度流水线506可以基于多个标准进行调度确定,包括(1)存在请求地址与当前正在由驱逐机510、探听机511或RC机512处理的先前请求地址之间的地址冲突,(2)目录信息,以及(3)RC机512(用于附属处理器内核102的本地请求)或探听机511(用于远程处理器内核的探听请求)用于处理存储器访问请求的的可用性。如果调度流水线506做出存储器访问请求将被调度的调度确定,则视情况将存储器访问请求从调度流水线506调度到RC机512或探听机511。如果存储器访问请求调度失败,则通过重试响应向请求者(例如,本地或远程处理器内核102)发信号通知失败。如果需要,请求者可以随后重试该失败的存储器访问请求。
当RC机512正在处理本地存储器访问请求时,RC机512会具有繁忙状态并且不可用于服务另一请求。尽管RC机512具有繁忙状态,但是RC机512可以在必要时执行目录写入以更新目录508的相关条目。另外,RC机512可以执行高速缓存写入以更新高速缓存阵列502的相关高速缓存行。根据目录读取和高速缓存读取的固定安排,可以在调度流水线506尚未处理其他请求的任何时间间隔期间由仲裁器505安排目录写入和高速缓存写入。当给定请求的所有操作都已完成时,RC机512返回到非繁忙状态。
应该理解,诸如目录写入和高速缓存写入之类的非固定安排的操作的安排可影响其他操作的安排,包括根据固定安排处理的其他操作。
现在参考图6,描绘了传统过程的高级逻辑流程图,通过该过程,L2高速缓存110的RC机512经由互连操作来服务于附属处理器内核102的存储器访问请求。为了促进更好的理解,另外参考图7,该图是示出特定操作场景的时序图,其中在接收对于互连操作的请求的组合响应之前,L2高速缓存110通过高速缓存-到-高速缓存干预,接收由请求指定的目标高速缓存行。
响应于在相关联的L2高速缓存110的调度流水线506中接收到处理器内核102的存储器访问请求,图6的过程在框600处开始。然后过程前进至框602,该框示出调度流水线506调度不繁忙的RC机512来服务该请求。响应于调度RC机512来服务存储器访问请求,RC机512转换到繁忙状态(RC机512的繁忙状态在图7的附图标记700处示出)。
假设由主设备L2高速缓存110的目录508返回的一致性状态指示,在RC机512没有检索出目标高速缓存行的副本的情况下就无法服务存储器访问请求(例如,在发生高速缓存未命中的情况下),在框602处分配的RC机512通过在互连结构上发布对目标高速缓存行的适当请求(例如READ或RWITM)来启动互连操作(框604)。
在图7的附图标记702处示出了在互连结构上发布请求。取决于所实现的互连拓扑,该请求可以(并且可能将)被分布在整个数据处理系统200中的探听器在各种不同的时间接收。在图7中,在附图标记704处具体指示了将用作目标高速缓存行的数据源的探听器之一对请求的接收。响应于接收到该请求,探听器(在该示例中为作为HPC的L2高速缓存110的探听机511)呈现繁忙状态(探听器的繁忙状态在附图标记706处示出)。当探听器处于繁忙状态时,探听器执行为请求提供服务所需的任何处理,如附图标记708所示。在当前情况下,该处理包括将由请求指定的目标高速缓存行通过高速缓存-到-高速缓存干预提供给主设备L2高速缓存110,然后由探听器收组合响应720。在接收到组合响应720之后,在窗口扩展312b的持续时间,探听器保持繁忙状态(并且因此保护主设备对于目标高速缓存行的一致性所有权的获得),如附图标记722所示。
返回图6,在框604发布请求之后,主设备L2高速缓存110同时监视所请求的数据(例如,来自作为HPC的探听L2高速缓存110)的返回和操作的组合响应(Cresp)的接收(框606-608)。响应于L2高速缓存110在框608处确定在所请求的数据之前已经接收到组合响应,则图6的过程进行到框610和随后的框。为了清楚起见,在图7中没有明确地示出该时序情况。然而,响应于L2高速缓存110在框606处确定所请求的数据已经在操作的组合响应之前被接收到,那么过程继续进行到框630和随后的框,在下面还要参照图7对其进行描述。
首先参考框610和随后的框,RC机512确定在框608处为读取操作所接收的组合响应是否是“好的”,这意味着组合响应指示所请求的目标高速缓存行数据将被提供给请求的L2高速缓存110(框610)。响应于在框610处确定组合响应不是“好的”组合响应,过程返回到框604,指示RC机512将在互连结构上重新发布请求。然而,响应于RC机512在框610处确定组合响应为“好的”,该过程从框610转到框612。
框612示出了RC机512在必要时打开保护窗口313以保护目标高速缓存行的一致性所有权从探听器到请求的L2高速缓存110的转移。然后,过程在框614处迭代,直到在对应于RC机512的RCQ 520中的缓冲器中接收到目标高速缓存行数据。响应于在RCQ520中接收到目标高速缓存行数据,L2高速缓存110将请求的数据放置在对应于RC机512的RCDAT缓冲器522中(框616)。另外,在框618处,RC机512执行附加处理来服务附属处理器内核102的存储器访问请求,例如通过发起将所请求的数据从RCDAT522到附属处理器内核102的转移,通过向调度流水线506发布请求将目标高速缓存行从RCQ 520中的缓冲器转移到高速缓存阵列502的高速缓存写入请求和/或请求更新由目录508指示的目标高速缓存行的一致性状态的目录写入请求。在由RC机512执行的处理结束时,RC保护窗口313关闭(结束),并且RC机512被释放,由此使RC机返回到非忙碌状态(框620)。之后,图6的过程在框622终止,直到RC机512被分配以服务另一个存储器访问请求。
仍然参照图6,现在参照框630和随后的框描述响应于L2高速缓存110在组合响应之前接收到所请求的数据所执行的处理。响应于在RCQ 520中接收到目标高速缓存行(如图7的附图标记710所示),L2高速缓存110将所请求的数据放置在对应于RC机512的RCDAT缓冲器522中(框630)。RC机512然后监视对该请求的组合响应的接收(参见例如图7的Cresp712),如框632所示。如图7中所示,在一些互连拓扑和/或操作情景中,在发出请求与接收到组合响应之间的间隔可能显著长于发出请求与接收到RCDAT缓冲器522中的目标高速缓存行之间的间隔(例如,三倍长)。这些间隔的持续时间之间的差在图7中用附图标记724示出,表示服务于存储器访问请求的RC机512不执行有用的工作的时间段。
当最终在图6的框632处确定已经接收到请求的组合响应(参见例如图7的Cresp712)时,RC机512确定组合响应是否是“好的“组合响应(框634)。响应于框634处确定组合响应不是“好的”组合响应,图6的过程返回到已经描述的框604以及随后的框。然而,响应于框634处确定组合响应是“好的”组合响应,该过程继续进行到框636。框636示出了RC机512在必要时打开保护窗口716,以目标高速缓存行的一致性所有权到请求的L2高速缓存110的转移。该过程然后进行到已经描述的框618-622。如图7中的附图标记718所示,在RC保护窗口716关闭并且RC机512被释放之后(如框620所示),响应于后续主设备的请求,接收到目标高速缓存行的主设备L2高速缓存110能够在需要时用作用于目标高速缓存行的数据源。
如上所述,在传统的多处理器数据处理系统中,请求目标高速缓存行的主设备仅在接收到组合响应、确认其获取了目标高速缓存行的一致所有权之后,才执行其对目标高速缓存行的处理。即使在主设备在用于确认获得一致性所有权的一致性消息之前接收到目标高速缓存行数据的操作场景下,也是这种情况,这在RC机512正在服务于一个存储器访问请求时导致明显的低效率时段724。然而,本申请认识到,在在数据交付时可以知道对主设备的请求的系统范围内的一致性响应的操作场景下,可以减少或消除该低效率时段(并且因此可以减少连续主设备可以获取给定高速缓存行的延迟)。本申请还认识到,虽然系统范围的一致性响应不能在所有操作场景中先验地确定,但可以通过作为HPC的探听器在接收到组合响应之前知晓,该HPC持有处于修改状态(例如,MESI的“M”状态)的目标高速缓存行,因为该探听器(其保持目标高速缓存行的单个唯一副本)负责授予或拒绝对目标高速缓存行的请求,并因此决定组合响应。相应地,在本发明的优选实施例中,当能够这样做时,HPC探听器提供与目标高速缓存行相结合的请求主设备的组合响应的早期指示。
现在参考图8,其示出了图2的数据处理系统的互连结构上的示例性数据权属800,其中可以利用数据状态字段向请求主设备传送对请求的系统范围的一致性响应的早期指示。如图所示,示例性数据权属800包括至少两个字段,即数据字段804和数据状态(Dstat)字段802,其可以在系统互连上的一个或多个节拍中传送。数据字段804可以将来自探听器的一个或多个高速缓存行数据(包括目标高速缓存行)传送给请求主设备。与数据字段804一起传送的数据状态字段802可以被作为目标高速缓存行的数据源的探听器所利用,以在可能的情况下提供一个早期指示,表明是否确保请求主设备的对其目标高速缓存行的请求的“好的“组合响应。在一些实施例中,该指示可以包括一致性状态的指示。
现在参考图9,示出了示例性过程的高级逻辑流程图,通过该示例性过程,L2高速缓存110的RC机512经由互连操作来服务于附属处理器内核102的存储器访问请求。为了促进更好的理解,另外参考图10,图10是示出特定操作场景的示例性时序图,其中在接收对于互连操作的请求的组合响应之前,L2高速缓存110通过高速缓存-到-高速缓存干预,接收由请求指定的目标高速缓存行。
响应于接收到相关联的L2高速缓存110的调度流水线506中的处理器内核102的存储器访问请求,图9的过程在框900处开始。过程然后前进至框902,该框示出调度流水线506分配不繁忙的RC机512来服务该请求。响应于分配RC机512来服务该存储器访问请求,RC机512转换到繁忙状态(RC机512的繁忙状态,如图10的附图标记1000所示)。
假设主设备L2高速缓存110的目录508返回的一致性状态指示,没有RC机512检索目标高速缓存行的副本就无法服务该存储器访问请求(例如,如果发生高速缓存未命中,则是这种情况),则在框902分配的RC机512通过在互连结构上发布对目标高速缓存行的适当请求(例如READ或RWITM)来启动互连操作(框904)。
在图10的附图标记1002处示出了互连结构上的请求的发布。取决于所实现的互连拓扑,该请求可能被(并且很可能将被)分布在整个数据处理系统200中的探听器在各种不同的时间接收。在图10中以附图标记1004具体示出了由用作目标高速缓存行的数据源的探听器之一接收该请求。响应于接收到该请求,探听器(在该示例中为能够响应于该请求而解析系统范围的一致性响应的L2高速缓存110(例如处于适当的一致性状态的HPC L2高速缓存110)的探听机511)呈现繁忙状态(探听器的繁忙状态如图10的附图标记1006所示)。当探听器处于繁忙状态时,探听器执行为该请求提供服务所需的任何处理,如附图标记1008所示。在当前情况下,该处理包括将由该请求指定的目标高速缓存行通过高速缓存-到-高速缓存干预提供给主设备L2高速缓存110,然后在附图标记1020由探听器接收组合响应。在接收到组合响应之后,在窗口扩展312b的持续时间,探听器保持繁忙状态(并因此保护主设备对目标高速缓存行的一致性获取)如附图标记1022所示。
返回图9,在框904处发布请求之后,L2高速缓存110同时监视所请求的数据(例如,来自作为HPC的探听L2高速缓存110)的返回和对操作的组合响应(Cresp)的接收(框906-908)。响应于L2高速缓存110在框908处确定在所请求的数据之前已经接收到组合响应,则图9的过程前进到框910和随后的框。为了清楚起见,图10中未明确示出该时序情形。然而,响应于L2高速缓存110在框906处确定在操作的组合响应之前已经接收到所请求的数据,该过程继续进行到框930和随后的框,这将在下面参照图10进行描述。
首先参考框910和随后的框,RC机512确定在框908处对于读取操作接收到的组合响应是否是“好的”,这意味着组合响应指示所请求的目标高速缓存行数据将被提供给请求的L2高速缓存110(框910)。响应于在框910处确定组合响应不是“好的”组合响应,过程返回框904,指示RC机512将在互连结构上重新发布请求。然而,响应于RC机512在框910处确定组合响应为“好的”,该处理从框910转到框912。
框912示出了RC机512在必要时打开保护窗口313以保护目标高速缓存行的一致性所有权从探听器到请求L2高速缓存110的转移。然后,过程在框914处迭代,直到在对应于RC机512的RCQ 520中的缓冲器中接收到目标高速缓存行数据。响应于在RCQ520中接收到目标高速缓存行数据,L2高速缓存110将请求的数据放置在对应于RC机512的RCDAT缓冲器522中(框916)。另外,在框918处,RC机512例如通过将所请求的数据从RCDAT缓冲器522转发到处理器内核102、通过向调度流水线506发布一个请求将目标高速缓存行从RCQ 520中的缓冲器转移到高速缓存阵列502的高速缓存写入请求、和/或通过向调度流水线506发布一个请求更新由目录508指示的目标高速缓存行的一致性状态的目录写入请求,执行附加处理以服务附属处理器内核102的存储器访问请求506。在RC机512执行的处理结束时,RC保护窗口313关闭(结束),并且RC机512被释放,由此使RC机返回到非繁忙状态(框920)。此后,图9的过程终止于框922,直到RC机512被分配以服务另一存储器访问请求。
仍然参照图9,现在参照框930和随后的框来描述响应于L2高速缓存110在组合响应之前接收到所请求的数据而执行的处理。响应于在RCQ 520中接收到包含目标高速缓存行的数据权属800(如图10的附图标记1010所示),L2高速缓存110将所请求数据的目标高速缓存行放置在对应于RC机512的RCDAT缓冲器522中(框930)。在框932处,RC机512还确定数据权属800的数据状态字段802是否提供允许RC机512立即处理目标高速缓存行的“好的”组合响应的早期指示。如果不是,则该过程从框932进行到框934和随后的框。然而,如果数据状态字段802提供允许RC机512立即处理目标高速缓存行的“好的”组合响应的早期指示,则该过程从框932进行到框940和随后的框。
现在参考框934和随后的框,RC机512监视对该请求的组合响应的接收(框934)。响应于在图9的框934处确定已经接收到该请求的组合响应,RC机512确定该组合响应是否是“好的”组合响应(框936)。响应于在框936处确定该组合响应不是“好的”组合响应,图9的过程返回到已经描述过的框904和随后的框。然而,响应于在框936处确定组合响应是“好的”组合响应,该过程继续进行到框938。框938示出了RC机512在需要时打开保护窗口,以保护目标高速缓存行的一致性所有权向请求的L2高速缓存110的转移。该过程然后前进到已经描述的框918-922。
现在参考框940和随后的框(其是图10中具体示出的操作场景),响应于数据权属800的数据状态字段802提供早期指示:组合响应将是好的组合响应,该过程进行到框940。框940示出了RC机512打开保护窗口1014以保护目标高速缓存行的一致所有权从探听L2高速缓存110到请求L2高速缓存110的转移。从图10应该注意到,保护窗口1014的打开和关闭与在附图标记1018处接收到请求的组合响应不同步。另外,如图9的框942和图10的附图标记1012所示,RC机512例如通过将所请求的数据从RCDAT缓冲器522返回给处理器内核102、向调度流水线506发布一个请求将目标高速缓存行从RCQ 520中的缓冲器转移到高速缓存阵列502的高速缓存写入请求、和/或向调度流水线506发布一个请求更新由目录508指示的目标高速缓存行的一致性状态的目录写入请求,执行附加处理来服务附属处理器内核102的存储器访问请求。应该注意的是,与图7相比,在数据权属800中包含组合响应的早期指示使得RC机512能够在接收到目标高速缓存行与接收到该组合响应之间执行有用的工作(并且可能完成其所有处理)。在RC机512执行的处理结束时,RC机512关闭其保护窗口1014(框944),这意味着主设备L2高速缓存110将不再向请求目标高速缓存行的其他竞争主设备提供重试部分响应,并且如果请求,主设备L2高速缓存110能够响应于后续主设备的请求而用作目标高速缓存行的数据源(如附图标记1016所示)。一致性协议优选地被构造为使得已经接收到目标高速缓存行的写入所有权的高速缓存的部分响应优于先前的探听器,这使得即使存在一个或多个先前的探听器继续在附图标记1006所示的处于繁忙状态时提供重试部分响应,主设备L2高速缓存110也能够充当数据源。应该注意,主设备L2高速缓存110可以用作数据源的时间段1016可以开始于(并且在很多情况下,远早于)主设备L2高速缓存110接收到组合响应1018之前。因此,高速缓存行可以在垂直高速缓存层级结构之间作为数据源的最小切换时间不再如图7所示由请求到组合响应的间隔1018所限定,而是如图10所示由请求到数据的间隔来限定。
在框944之后,如图9的框946和图10的附图标记1018所示,RC机512等待接收针对其请求的组合响应。响应于该组合响应,分配给互连操作的标记退出,RC机512被释放,由此使RC机512返回到非繁忙状态(框948),从该状态可以再次分配RC机512。此后,图9的过程终止于框922,直到RC机512被分配以服务另一存储器访问请求。
如上所述,在至少一个实施例中,多处理器数据处理系统包括支持多个处理器内核的多个垂直高速缓存层级结构、系统存储器以及耦合到系统存储器和多个垂直高速缓存层级结构的系统互连。第一垂直高速缓存层级结构中的第一高速缓存存储器在系统互连上发布对目标高速缓存行的请求。响应于该请求并且在接收针对该请求的系统范围的一致性响应之前,第一高速缓存存储器通过高速缓存-到-高速缓存干预从第二垂直高速缓存层级结构中的第二高速缓存存储器接收目标高速缓存行和对该请求的系统范围的一致性响应的早期指示。响应于该系统范围的一致性响应的早期指示并且在接收系统范围的一致性响应之前,第一高速缓存存储器启动处理以将目标高速缓存行安装在第一高速缓存存储器中。在一个实施例中,第一高速缓存存储器在接收到系统范围的组合响应之前将目标高速缓存行提供到第三垂直高速缓存层级结构中的第三高速缓存。
本申请进一步认识到,系统范围的一致性响应的早期指示的传送结合干预的高速缓存行还有助于在多个线程正在对干预的高速缓存行进行原子更新的情况下快速切换干预的高速缓存行的一致性所有权。例如,考虑图11的示例性多线程程序,其可以例如在多处理器数据处理系统200的三个不同处理器内核102的三个同时执行的硬件线程Ta、Tb和Tc上执行。如图所示,除了通常由省略号指示的其他指令之外,每个线程Ta、Tb和Tc还包括原子更新序列1100。每个线程Ta、Tb和Tc内的原子更新序列1100开始于相应的加载-和-保留(例如,LARX)指令1102a、1102b、1102c,其在执行时产生相应的对分布式共享存储器系统的LARX请求,该系统将与有效地址A相关联的目标高速缓存行加载到执行处理器内核102的寄存器r1中。每个线程的原子更新序列1000接下来包括私有地修改保存在寄存器r1内的目标高速缓存行的值的一个或多个指令,其中这些(些)指令在示例性原子更新序列中由ADD指令1104a、1104b、1104c表示,其将寄存器r1的值递增1。ADD指令1104a、1104b、1104c之后是存储-条件(例如,STCX)指令1106a、1106b、1106c,该指令根据从执行在先的LARX指令1102起是否对目标高速缓存行进行了中间更新(intervening update),有条件地将与地址A相关联的目标高速缓存行更新为寄存器r1的修改值。在该示例中,如果STCX指令1106成功更新目标高速缓存行并将条件代码寄存器的字段设置为非零值,则执行处理器内核102将处理器内核102中的条件代码寄存器的字段重置为零。每个线程中的示例性原子更新序列1000以相应的条件分支(例如,分支不等于(BNE))指令1108a、1108b、1108c结束,该条件分支指令基于处理器内核102中的条件代码寄存器中的字段的值进行条件分支。特别地,如果原子更新不成功,BNE指令1108a、1108b、1108c促使执行循环回到加载-和-保留(例如,LARX)指令1102a、1102b、1102c,如果原子更新成功,BNE指令1108a、1108b、1108c促使执行继续到相关线程的后续指令。
如在图11中通过箭头1110和1112进一步指示的那样,由线程Tb的LARX指令1102b加载由线程Ta的STCX指令1106a存储到对应于有效地址A的分布式共享存储器中的存储位置的值,以及由线程Tc的LARX指令1102c加载由线程Tb的STCX指令1106b存储到分布式共享存储器中的该存储位置的值。因此,可以理解的是,如果根据本申请的教导可以减少在将更新值存储到分布式共享存储器中的目标高速缓存行(通过执行STCX指令1106)与从分布式共享存储器加载目标高速缓存行的更新值之间的延迟(通过执行LARX指令),则图11中描绘的示例性多线程程序的性能将得到改进。
现在参考图12-13,其描绘了根据一个实施例的一个示例性过程的高级逻辑流程图,通过该示例性过程,较低级高速缓存(例如,L2高速缓存110)的RC机512服务于附属处理器内核102的加载-和-保留(LARX)和存储-条件(STCX)请求。在该实施例中,分配单个RC机512以服务于加载-和-保留请求以及随后的存储-条件请求,因此将两个请求的服务合并成单个资源。
如图12中由相同附图标记所指示的,响应于接收到LARX请求(例如,通过执行LARX指令1102而生成)而执行的RC机512的处理基本上类似于如上面参考图9所述的响应于其他存储器访问请求所执行的处理。因此,在图12中执行的与先前参照图9描述的步骤相对应的步骤在此处将不再详细描述。然而,应该注意的是,在图12的框942处由RC机512对LARX请求的处理可以包括在保留逻辑513中为LARX请求的目标地址建立保留。在框942处由RC机512处理LARX请求之后,图12的过程经由页面连接符A传递至图13。
如图13所示,该过程分叉并且并行地进行到包括框1300的第一路径和包括框1310-1318的第二路径。只有在两个路径中所示的处理完成之后,这两个路径才合在一起并通过页面连接符B返回到图12的框948。
首先参照框1300,RC机512在图12的框904处等待接收其在数据处理系统200的互连结构上发布的请求的组合响应(Cresp)。响应于接收到组合响应,图13的过程的第一路径从框1300前进到与第二路径的连接点。
在其中LARX请求和关联的STCX请求两者都合并到单个RC机512中的该示例性实施例中,RC机512在一个超时间隔保持繁忙,等待接收匹配的STCX请求,该STCX请求指定与分配给它LARX请求相同的目标地址。图13示出了框1310-1312处的这种行为,其中,在超时间隔期满之前(框1312),确定是否从关联的处理器内核102接收到匹配的STCX请求(框1310)。如果在调度流水线506接收到匹配的STCX请求之前超时间隔期满,则在框1312做出肯定的确定,并且图13中所示的第二路径直接从框1312进行到框1318。框1318示出RC机512关闭由LARX请求保留的高速缓存行的目标地址的保护窗口。该过程然后进行到与来自框1300的第一路径的连接点。然而,响应于在框1310确定RC机512在超时间隔期满之前接收到匹配的STCX请求,该过程从框1310转到框1314,其示出调度流水线506将STCX请求合并到已经服务于匹配的LARX请求的RC机512中。
然后,RC机512例如通过向调度流水线506发布请求更新高速缓存阵列502中的目标高速缓存行的高速缓存写入请求、和/或向调度流水线506发布请求更新由目录508指示的目标高速缓存行的一致性状态的目录写入请求、和/或通过重置预留逻辑513中的目标高速缓存行的预留,来服务于STCX请求(框1316)。此后,过程进行到框1318,其示出RC机512关闭其目标高速缓存行的保护窗口。此后,第二路径过程进行到连接点并且通过页面连接符B返回到已经描述的图12的框948。因此,在所示实施例中,RC保护窗口响应于RC机512完成其对STCX请求的处理或响应于在超时间隔内未能接收到STCX请求而关闭,并且RC保持繁忙,直到接收到LARX请求的互连操作的组合响应和RC保护窗口关闭这两者中的后者。
现在参考图14-15,其描绘了在图12-13的过程下的示例性操作场景的时序图。在图14中,在关联的组合响应之前,接收存储器访问请求的组合响应的早期指示以及加载-和-保留(LARX)请求的目标高速缓存行。随后,在完成对匹配的存储-条件(STCX)请求的处理之前(并且在某些情况下,在接收到STCX请求之前),接收组合响应。在图15中,组合响应的接收时间与图14所示的时间不同,其中在完成对匹配STCX请求的处理之后接收互连操作的组合响应。
图14-15示出了响应于分配RC机512以服务LARX请求,RC机512在附图标记1402处呈现繁忙状态1400。响应于LARX请求,RC机512在数据处理系统200的互连结构上发出对LARX请求的目标高速缓存行的存储器访问请求,如图14-15的附图标记1406和图12的框904所示。
这个存储器访问请求由整个数据处理系统200中的探听器、包括服务探听器(例如,L2高速缓存110的探听机511)接收,在图14-15中的附图标记1408示出了对该存储器访问请求的接收。响应于经由互连结构接收到存储器访问请求,服务探听器向请求L2高速缓存110返回包括数据字段804和数据状态字段802的数据占用期800,数据字段804包含目标高速缓存行,数据状态字段802提供“好的”组合响应的早期指示,其允许RC机512立即处理目标高速缓存行(如图14的附图标记1410所示)。(服务探听器还执行图10中所示的其他处理,但是从图14-15中省略,以避免模糊本发明处理的其他方面)。
响应于在其L2高速缓存110处接收到好的组合响应的早期指示,服务于LARX请求的RC机512打开RC保护窗口1412(如图12的框942所示)。在RC保护窗口1412期间,L2高速缓存110的探听机511将对在互连结构上探听的以保留的高速缓存行为目标的任何冲突的存储器访问请求提供重试部分响应。在RC保护窗口1412中,RC机512执行其对LARX请求的处理,如图14-15的附图标记1420和图12的框942所示。在LARX请求的处理完成时,RC机512并不返回到非繁忙状态,而是在随后的STCX等待窗口1422期间保持在繁忙状态,在此期间RC机512正在等待调度匹配的STCX请求,如图13的框1310所示。假设在超时间隔内接收到指定与前一LARX请求的目标地址匹配的目标地址的STCX请求(如附图标记1404所示),则将STCX请求合并到RC机512中,并且RC机512执行处理以服务于该STCX请求,如图14-15的附图标记1424和图13的框1314-1316所示。
图14-15示出RC机512保持在繁忙状态1400,直到在互连结构上接收到由RC机512启动的存储器访问请求的组合响应1414和RC保护窗口关闭两者中的后者。图14至图15进一步示出了,响应于RC机512完成其对STCX请求的处理以更新该RC机512、保护其L2高速缓存110的保留高速缓存行的一致性所有权的RC保护窗口1412关闭。响应于STCX请求的目标高速缓存行的更新与组合响应的接收时间无关,并且因为STCX请求通常将导致L2高速缓存110中的命中,所以对目标高速缓存行的更新通常可以在接收到存储器访问请求的组合响应之前完成(如图15所示)。因此,一旦RC保护窗口1412关闭,已经更新了目标高速缓存行的L2高速缓存110就可以充当目标高速缓存行的源,如图15所示,RO保护窗口的关闭可以远早于对由RC机512发起的存储器访问请求的组合响应1414的接收。
现在参考图16,其描绘了图13的过程的替代实施例。在该替代实施例中,L2高速缓存110分配其RC机512中的另一个以服务于附属处理器内核102的匹配STCX请求,而不是将该STCX请求合并到服务于前一个LARX请求的相同RC机512中。如相同的附图标记所指示的,图16的过程基本上类似于图13中所执行的过程。因此,在图16中执行的与先前参照图13描述的步骤相对应的步骤将不再在此处被详细描述。
在图16的框1310处,响应于由L2高速缓存110从相关联的处理器内核102接收到匹配的STCX请求,而RC机512(在此被称为RC1)保持处于由先前的LARX请求启动的忙碌状态,过程从框1310进行到框1600。在框1600,确定L2高速缓存110的任何RC机512是否处于非忙碌(可用)状态。如果否,则调度流水线506丢弃在框1310处接收到的STCX请求,并向处理器内核102(未示出)返回重试指示。图16的过程然后返回到已经描述的框1310。但是,响应于框1600的肯定确定,L2高速缓存110的调度流水线506分配另一RC机512(在此称为RC2)以服务于STCX请求,如框1602所示。之后,图16的过程转到已经描述过的框1318。
现在参考图17,示出了处理的高级逻辑流程图,通过该处理,L2高速缓存110的RC机512(即,RC2)服务于在图16的实施例中的附属处理器内核102的存储-条件(STCX)请求。图17的过程开始于框1700,例如响应于在图16的框1602处L2高速缓存110的调度流水线506分配RC机RC2以服务STCX请求。该过程然后前进到框1702,其示出了RC机RC2打开保护窗口1014以保护其L2高速缓存110对目标高速缓存行的一致性所有权。另外,RC机RC2例如通过向调度流水线506发布一个请求更新高速缓存阵列502中的目标高速缓存行的的高速缓存写入请求、和/或向调度流水线506发布一个请求更新由目录508指示的目标高速缓存行的一致性状态的目录写入请求、和/或通过在保留逻辑513中重置针对目标高速缓存行的保留等,来服务STCX请求(框1704)。在至少一些实施例中,目录写入请求将一致性状态更新为一个一致性状态,该一致性状态使得目标高速缓存行更有可能由L2高速缓存110通过高速缓存-到-高速缓存干预以允许存储立即完成的一致性状态提供到另一L2高速缓存110。在框1704之后,过程进行到框1706,框1706示出RC机RC2关闭其目标高速缓存行的保护窗口。此后,图17的过程在框1708结束。
现在参考图18,其描绘了根据图12、16和17中所示的过程的示例性操作场景的时序图,其中与在关联的组合响应之前,结合加载-和-保留(LARX)请求的目标高速缓存行,接收存储器访问请求的组合响应的早期指示。
图18示出,响应于RC机RC1的分配以服务于LARX请求,RC机RC1在附图标记1802处呈现繁忙状态1800。响应于LARX请求,RC机RC1在数据处理系统200的互连结构上发布对LARX请求的目标高速缓存行的存储器访问请求,如图18的附图标记1806和图12的框904所示。
该存储器访问请求由整个数据处理系统200中的探听器、包括服务探听器(例如,L2高速缓存110的探听机器511)接收,其对存储器访问请求的接收如图18中的附图标记1808所示。响应于经由互连结构接收到存储器访问请求,服务探听器向请求的L2高速缓存110返回数据权属(data tenure)800,数据权属800包括包含目标高速缓存行的数据字段804和数据状态字段802,数据状态字段802提供“好的”组合响应的早期指示,其使得RC机512能够立即处理目标高速缓存行(如图18的附图标记1810所示)。(服务探听器另外执行图10中所示的其他处理,但是从图18中省略,以避免模糊本发明处理的其他方面。)
响应于在其L2高速缓存110处接收到好的组合响应的早期指示,RC机RC1打开RC1保护窗口1812(如图12的框940所示),在此期间L2高速缓存110的探听机器511对在系统互连上探听的针对保留的高速缓存行的任何冲突的存储器访问请求提供重试部分响应。RC1保护窗口1812对RC1 LARX处理间隔1820(在此期间RC1执行其对LARX请求的处理)和随后的RC1 STCX等待间隔1822(在此期间L2高速缓存110等待接收来自关联处理器内核102的、指定与较早的LARX请求的目标地址匹配的目标地址的STCX请求)两者保持打开。在RC1 STCX等待间隔1822完成时,RC1保护窗口1812关闭,终止RC1对目标高速缓存行的一致性所有权的保护。然而,RC1不一定立即返回到不忙的状态,而是保持处于繁忙状态,直到接收到对于其存储器访问请求的组合响应1814和RC1 STCX等待间隔1822的结束两者的后者。
响应于由L2高速缓存110接收到来自相关联的处理器内核102的STCX请求(如附图标记1804所示),调度流水线506分配另一RC机RC2以服务于STCX请求(如框1602所示)。响应于分配RC机RC2来服务STCX请求,RC2打开RC2保护1830,在RC2保护1830期间,RC2保护其L2高速缓存110对目标高速缓存行的一致性所有权,也如图17的框1702所示。在RC2保护期间窗口1830期间,RC2执行其对STCX请求的处理以更新目标高速缓存行,如附图标记1832所示。响应于对STCX请求的处理的完成,RC2关闭其RC2保护窗口1830,如在图17的框1706所示。
应该注意,只要RC2保护窗口1832关闭,已经更新了目标高速缓存行的L2高速缓存110可以充当目标高速缓存行的数据源(例如,通过到另一个L2高速缓存110的高速缓存-到-高速缓存干预),其可以在接收到由RC机RC1启动的存储器访问请求的组合响应1814之前。还应该注意的是,由RC机RC2响应于STCX请求而更新目标高速缓存行也独立于接收组合响应的时间,并且因为STCX请求通常会导致L2高速缓存110中的命中,可以在接收到对存储器访问请求的组合响应之前完成对目标高速缓存行的更新。
现在参考图19,其描绘了例如在半导体IC逻辑设计、模拟、测试、布局和制造中使用的示例性设计流程1900的框图。设计流程1900包括用于处理设计结构或设备的过程、机器和/或机构,以产生上述和本文所示的设计结构和/或设备的逻辑或功能等效的表示。由设计流程1900处理和/或生成的设计结构可以被编码在机器可读传输或存储介质上以包括数据和/或指令,当这些数据和/或指令在数据处理系统上执行或以其他方式处理时,其产生硬件组件、电路、设备或系统的在逻辑上、结构上、机械上或功能上的等效表示。机器包括但不限于在IC设计过程、例如设计、制造或模拟电路、组件、装置或系统中使用的任何机器。例如,机器可以包括:光刻机器,用于生成掩模的机器和/或设备(例如电子束写入器),用于模拟设计结构的计算机或设备,用于制造或测试过程的任何装置,或用于将设计结构的功能等效表示编码到任何介质中的任何机器(例如用于编程可编程门阵列的机器)。
设计流程1900可以根据所设计的表示的类型而变化。例如,用于构建应用专用IC(ASIC)的设计流程1900可以不同于用于设计标准组件的设计流程1900或者用于将设计实例化为可编程阵列、例如由或提供的可编程门阵列(PGA)或现场可编程门阵列(FPGA)的设计流程1900。
图19示出多个这样的设计结构,其包括优选地由设计过程1910处理的输入设计结构1020。设计结构1920可以是由设计过程1910生成并处理的逻辑模拟设计结构,以产生硬件设备的逻辑等效的功能表示。设计结构1920还可以或可选地包括数据和/或程序指令,当由设计过程1910处理时,其产生硬件设备的物理结构的功能表示。无论是表示功能和/或结构设计特征,设计结构1920都可以使用电子计算机辅助设计(ECAD)(例如由内核开发者/设计者实现)来生成。当在机器可读数据传输、门阵列或存储介质上编码时,设计结构1920可以被设计过程1910内的一个或多个硬件和/或软件模块访问和处理,以模拟或以其他方式在功能上表示电子组件、电路、电子或逻辑模块、装置、设备或系统,例如本文所示的那些。这样,设计结构1920可以包括文件或其他数据结构,包括人和/或机器可读源代码、编译结构和计算机可执行代码结构,当由设计或模拟数据处理系统处理时,其在功能上模拟或以其他方式表示电路或其他级别的硬件逻辑设计。这样的数据结构可以包括硬件描述语言(HDL)设计实体或符合和/或与诸如Verilog和VHDL的低级HDL设计语言和/或诸如C或C++的高级设计语言兼容的其他数据结构。
设计过程1910优选地采用并结合用于合成、翻译或以其他方式处理此处所示的组件、电路、设备或逻辑结构的设计/模拟功能等效的硬件和/或软件模块,以生成包含诸如设计结构1920之类的设计结构的网表1980。网表1980可以包括例如编译的或以其他方式处理的数据结构,该数据结构表示线、分立部件、逻辑门、控制电路、I/O设备、模型等的列表,描述与集成电路设计中的其他元件和电路的连接。网表1980可以使用迭代过程合成,其中网表1980根据设备的设计规格和参数被重新合成一次或多次。如同在此描述的其他设计结构类型一样,网表1980可以被记录在机器可读存储介质上或被编程到可编程门阵列中。介质可以是诸如磁盘或光盘驱动器、可编程门阵列、紧凑型闪存或其他闪存的非易失性存储介质。另外或替代地,介质可以是系统或高速缓存存储器或缓存器空间。
设计过程1910可以包括用于处理包括网表1980的各种输入数据结构类型的硬件和软件模块。这样的数据结构类型可以驻留在例如库元件1930内并且包括针对给定制造技术(例如,不同技术节点,32nm,45nm,90nm等)的一组常用元件、电路和设备(包括模型,布局和符号表示)。数据结构类型可以进一步包括设计规范1940、特征数据1950、验证数据1960、设计规则19190和可以包括输入测试模式、输出测试结果和其他测试信息的测试数据文件1985。设计过程1910可以进一步包括例如标准机械设计过程,例如应力分析、热分析、机械事件模拟、用于诸如铸造、模制和模压成形等操作的过程模拟。机械设计领域的普通技术人员可以理解在设计过程1910中使用的可能的机械设计工具和应用的程度,而不偏离本发明的范围和精神。设计过程1910还可以包括用于执行标准电路设计过程的模块,例如时序分析、验证、设计规则检查、布局和布线操作等。
设计过程1910采用并结合诸如HDL编译器和模拟模型构建工具的逻辑和物理设计工具来处理设计结构1920以及所描绘的支持数据结构中的一些或全部以及任何额外的机械设计或数据(如果适用的话),以产生第二设计结构1990。设计结构1990以一种用于机械装置和结构的数据交换的数据格式驻留在存储介质或可编程门阵列上(例如,以IGES、DXF、Parasolid XT、JT、DRG或用于存储或渲染这种机械设计结构的任何其他合适的格式存储的信息)。类似于设计结构1920,设计结构1990优选包括驻留在传输或数据存储介质上的一个或多个文件、数据结构或其他计算机编码的数据或指令,当由ECAD系统处理时其产生本文所示的本发明的一个或多个实施例的逻辑上或功能上等效的形式。在一个实施例中,设计结构1990可以包括编译的、可执行的HDL模拟模型,其在功能上模拟本文所示的设备。
设计结构1990还可以采用用于交换集成电路的布局数据的数据格式和/或符号数据格式(例如,以GDSII(GDS2)、GL1、OASIS、映射文件或用于存储这种设计数据结构的其他任何合适的格式存储的信息)。设计结构1990可以包括诸如例如符号数据、映射文件、测试数据文件、设计内容文件、制造数据、布局参数、导线、金属水平、通孔、形状、用于通过生产线布线的数据、以及制造商或其他设计者/开发者为生产如上所述和本文所示的装置或结构所需的任何其他数据。设计结构1990然后可以进行到阶段1995,在这里,设计结构1990:继续到输出,被释放到制造,被释放到掩模室(mask house),被发送到另一个设计室(design house),被发回到客户等等。
如上所述,在至少一个实施例中,多处理器数据处理系统包括支持多个处理器内核的多个垂直高速缓存层级结构、系统存储器和系统互连。响应于来自第一处理器内核的加载-和-保留请求,支持第一处理器内核的第一高速缓存存储器在系统互连上发布用于加载和保留请求的目标高速缓存行的存储器访问请求。响应于存储器访问请求并且在接收对于存储器访问请求的系统范围的一致性响应之前,第一高速缓存存储器通过高速缓存-到-高速缓存干预从第二垂直高速缓存层级结构中的第二高速缓存存储器接收目标高速缓存行以及对存储器访问请求的系统范围的一致性响应的早期指示。响应于早期指示并在接收系统范围的一致性响应之前,第一高速缓存存储器启动处理以更新第一高速缓存存储器中的目标高速缓存行。
虽然已经具体示出和描述了各种实施例,但本领域技术人员将会理解,在不脱离所附权利要求的精神和范围的情况下,可以在其中进行形式和细节上的各种改变,并且这些替代实施方式全部落入所附权利要求的范围内。例如,尽管已经关于执行指导本发明的功能的程序代码的计算机系统描述了各方面,但应该理解,本发明可以替代地实现为包括计算机可读存储设备的程序产品,所述计算机可读存储设备存储可以由数据处理系统处理的程序代码。计算机可读存储设备可以包括易失性或非易失性存储器、光盘或磁盘等。然而,如本文所采用的,“存储装置”被具体限定为仅包括法定制造物品并且排除信号介质本身、瞬时传播信号本身以及能量本身。
作为示例,程序产品可以包括当在数据处理系统上执行或以其他方式处理时产生这里所公开的硬件组件、电路、装置或系统的逻辑上、结构上或功能上等同的表示(包括模拟模型)的数据和/或指令。这样的数据和/或指令可以包括硬件描述语言(HDL)设计实体或符合和/或与诸如Verilog和VHDL等更低级别的HDL设计语言和/或诸如C或C++的更高级别的设计语言的其他数据结构。此外,数据和/或指令还可以采用用于交换集成电路的布局数据的数据格式和/或符号数据格式(例如,以GDSII(GDS2)、GL1、OASIS、映射文件或用于存储这种设计数据结构的任何其他合适的格式存储的信息)。
Claims (18)
1.一种在多处理器数据处理系统中的数据处理方法,所述多处理器数据处理系统包括支持多个处理器内核的多个垂直高速缓存层级结构、系统存储器和耦合到所述系统存储器和所述多个垂直高速缓存层级结构的系统互连,所述方法包括:
响应于从第一处理器内核接收到加载-和-保留请求,支持所述第一处理器内核的第一垂直高速缓存层级结构中的第一高速缓存存储器在所述系统互连上发布对所述加载-和-保留请求的目标高速缓存行的存储器访问请求;
响应于所述存储器访问请求,并且在接收对所述存储器访问请求的系统范围的一致性响应之前,所述第一高速缓存存储器通过高速缓存-到-高速缓存干预从第二垂直高速缓存层级结构中的第二高速缓存存储器接收所述目标高速缓存行以及对所述存储器访问请求的所述系统范围的一致性响应的早期指示;以及
响应于接收到所述第一处理器内核的存储-条件请求以及所述系统范围的一致性响应的早期指示、并且在接收所述系统范围的一致性响应之前,所述第一高速缓存存储器启动处理以服务于所述存储-条件请求以更新所述第一高速缓存存储器中的所述目标高速缓存行。
2.如权利要求1所述的方法,还包括:
所述第一高速缓存存储器在接收到所述系统范围的组合响应之前将所述目标高速缓存行提供给第三垂直高速缓存层级结构中的第三高速缓存。
3.如权利要求1所述的方法,还包括:
响应于接收到所述系统范围的一致性响应的早期指示,所述第一高速缓存存储器开始保护窗口,在其中,所述第一高速缓存存储器保护其对所述目标高速缓存行的一致性所有权的获取;以及
在所述加载-和-保留请求的处理之后,将所述保护窗口继续至少一个等待间隔,在所述等待间隔,所述第一高速缓存存储器等待接收来自所述第一处理器内核的所述存储-条件请求。
4.如权利要求3所述的方法,还包括:响应于所述存储-条件请求的处理的完成,异步于由所述第一高速缓存存储器对所述系统范围的一致性响应的接收,结束所述保护窗口。
5.如权利要求3所述的方法,其中:
所述保护窗口是第一保护窗口;以及
所述方法进一步包括:响应于由所述第一高速缓存存储器响应于接收到所述存储-条件请求而启动第二保护窗口,异步于由所述第一高速缓存存储器对所述系统范围的一致性响应的接收,结束所述第一保护窗口。
6.如权利要求3所述的方法,还包括:
所述第一高速缓存存储器响应于从所述第一处理器内核接收到所述加载-和-保留请求而分配读取-声明状态机以管理所述存储器访问请求;以及
所述第一高速缓存存储器响应于收到所述系统范围的一致性响应和所述保护窗口结束中的后者的发生而解除分配所述读取-声明状态机。
7.一种用于多处理器数据处理系统的处理单元,所述处理单元包括:
处理器内核;
互连逻辑,被配置为将所述处理单元耦合到所述多处理器数据处理系统的系统互连;
第一垂直高速缓存层级结构,支持所述处理器内核,所述第一垂直高速缓存层级结构包括第一高速缓存存储器,其被配置为:
响应于从所述处理器内核接收到加载-和-保留请求,在所述系统互连上发出对所述加载-和-保留请求的目标高速缓存行的存储器访问请求;
响应于所述存储器访问请求,并且在接收到对所述存储器访问请求的系统范围的一致性响应之前,通过高速缓存-到-高速缓存干预从第二垂直高速缓存层级结构中的第二高速缓存存储器接收所述目标高速缓存行以及对所述存储器访问请求的所述系统范围的一致性响应的早期指示;以及
响应于接收到所述处理器内核的存储-条件请求以及所述系统范围的一致性响应的早期指示,并且在接收所述系统范围的一致性响应之前,启动处理以服务于所述存储-条件请求以更新所述第一高速缓存存储器中的所述目标高速缓存行。
8.如权利要求7所述的处理单元,其中所述第一高速缓存存储器还被配置为在接收到所述系统范围的组合响应之前将所述目标高速缓存行提供给第三垂直高速缓存层级结构中的第三高速缓存。
9.如权利要求7所述的处理单元,其中所述第一高速缓存存储器还被配置为:
响应于接收到所述系统范围的一致性响应的早期指示,开始保护窗口,在其中,所述第一高速缓存存储器保护其对所述目标高速缓存行的一致性所有权的获取;以及
在所述加载-和-保留请求的处理之后,将所述保护窗口继续至少一个等待间隔,在所述等待间隔,所述第一高速缓存存储器等待接收来自所述处理器内核的所述存储-条件请求。
10.如权利要求9所述的处理单元,其中,所述第一高速缓存存储器还被配置为响应于所述存储-条件请求的处理的完成,异步于由所述第一高速缓存存储器对所述系统范围的一致性响应的接收,结束所述保护窗口。
11.如权利要求9所述的处理单元,其中:
所述保护窗口是第一保护窗口;以及
所述第一高速缓存存储器还被配置为,响应于由所述第一高速缓存存储器响应于接收到所述存储-条件请求而启动第二保护窗口,异步于由所述第一高速缓存存储器对所述系统范围的一致性响应的接收,结束所述第一保护窗口。
12.如权利要求9所述的处理单元,其中,所述第一高速缓存存储器还被配置为:
响应于从所述处理器内核接收到所述加载-和-保留请求,分配读取-声明状态机以管理所述存储器访问请求;以及
响应于收到所述系统范围的一致性响应和所述保护窗口中的后者的发生而解除分配所述读取-声明状态机。
13.一种多处理数据处理系统,包括:
如权利要求7至12中任一项所述的处理单元。
14.一种计算机可读介质,其上存储计算机可读代码,当所述计算机可读代码被处理单元执行时,用于实现设计、制造或测试集成电路的数据处理系统,所述数据处理系统包括:用于多处理器数据处理系统的处理单元,所述处理单元包括:
处理器内核;
互连逻辑,被配置为将所述处理单元耦合到所述多处理器数据处理系统的系统互连;
第一垂直高速缓存层级结构,支持所述处理器内核,所述第一垂直高速缓存层级结构包括第一高速缓存存储器,其被配置为:
响应于从所述处理器内核接收到加载-和-保留请求,在所述系统互连上发出对所述加载-和-保留请求的目标高速缓存行的存储器访问请求;
响应于所述存储器访问请求,并且在接收到对所述存储器访问请求的系统范围的一致性响应之前,通过高速缓存-到-高速缓存干预从第二垂直高速缓存层级结构中的第二高速缓存存储器接收所述目标高速缓存行以及对所述存储器访问请求的所述系统范围的一致性响应的早期指示;以及
响应于接收到所述处理器内核的存储-条件请求以及所述系统范围的一致性响应的早期指示,并且在接收所述系统范围的一致性响应之前,启动处理以服务于所述存储-条件请求以更新所述第一高速缓存存储器中的所述目标高速缓存行。
15.如权利要求14所述的计算机可读介质,其中所述第一高速缓存存储器还被配置为在接收到所述系统范围的组合响应之前将所述目标高速缓存行提供给第三垂直高速缓存层级结构中的第三高速缓存。
16.如权利要求14所述的计算机可读介质,其中所述第一高速缓存存储器还被配置为:
响应于接收到所述系统范围的一致性响应的早期指示,开始保护窗口,在其中,所述第一高速缓存存储器保护其对所述目标高速缓存行的一致性所有权的获取;以及
在所述加载-和-保留请求的处理之后,将所述保护窗口继续至少一个等待间隔,在所述等待间隔,所述第一高速缓存存储器等待接收来自所述处理器内核的所述存储-条件请求。
17.如权利要求16所述的计算机可读介质,其中,所述第一高速缓存存储器还被配置为响应于所述存储-条件请求的处理的完成,异步于由所述第一高速缓存存储器对所述系统范围的一致性响应的接收,结束所述保护窗口。
18.如权利要求16所述的计算机可读介质,其中:
所述保护窗口是第一保护窗口;以及
所述第一高速缓存存储器还被配置为,响应于由所述第一高速缓存存储器响应于接收到所述存储-条件请求而启动第二保护窗口,异步于由所述第一高速缓存存储器对所述系统范围的一致性响应的接收,结束所述第一保护窗口。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/095,675 US10157134B2 (en) | 2016-04-11 | 2016-04-11 | Decreasing the data handoff interval for a reserved cache line based on an early indication of a systemwide coherence response |
US15/095,675 | 2016-04-11 | ||
PCT/IB2017/051944 WO2017178925A1 (en) | 2016-04-11 | 2017-04-05 | Cache memory access |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108885583A CN108885583A (zh) | 2018-11-23 |
CN108885583B true CN108885583B (zh) | 2022-08-30 |
Family
ID=59999837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780020369.0A Active CN108885583B (zh) | 2016-04-11 | 2017-04-05 | 高速缓存存储器访问 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10157134B2 (zh) |
JP (1) | JP6802287B2 (zh) |
CN (1) | CN108885583B (zh) |
DE (1) | DE112017001959T5 (zh) |
GB (1) | GB2564994B (zh) |
WO (1) | WO2017178925A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10642821B2 (en) * | 2017-03-17 | 2020-05-05 | Apple Inc. | Elastic data storage system |
US11449489B2 (en) * | 2017-11-09 | 2022-09-20 | International Business Machines Corporation | Split transaction coherency protocol in a data processing system |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10761983B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10664181B2 (en) * | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10552070B2 (en) | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10725937B2 (en) * | 2018-07-30 | 2020-07-28 | International Business Machines Corporation | Synchronized access to shared memory by extending protection for a store target address of a store-conditional request |
US11068407B2 (en) * | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) * | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
CN110232030B (zh) * | 2019-06-12 | 2021-08-10 | 上海兆芯集成电路有限公司 | 多芯片系统及缓存处理方法 |
US11176038B2 (en) * | 2019-09-30 | 2021-11-16 | International Business Machines Corporation | Cache-inhibited write operations |
US11157409B2 (en) * | 2019-12-17 | 2021-10-26 | International Business Machines Corporation | Cache snooping mode extending coherence protection for certain requests |
US20210397560A1 (en) * | 2020-06-22 | 2021-12-23 | Mellanox Technologies, Ltd. | Cache stashing system |
US11106608B1 (en) * | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
CN112380013B (zh) * | 2020-11-16 | 2022-07-29 | 海光信息技术股份有限公司 | 缓存预载方法、装置、处理器芯片及服务器 |
US11354243B1 (en) * | 2020-11-17 | 2022-06-07 | International Business Machines Corporation | Accelerated processing of streams of load-reserve requests |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
US12045474B2 (en) * | 2021-08-02 | 2024-07-23 | Red Hat, Inc. | Efficient dirty page expiration |
US11556472B1 (en) * | 2021-08-04 | 2023-01-17 | International Business Machines Corporation | Data processing system having masters that adapt to agents with differing retry behaviors |
US11893241B1 (en) | 2022-08-31 | 2024-02-06 | Apple Inc. | Variable hit latency cache |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7529799B2 (en) * | 1999-11-08 | 2009-05-05 | International Business Machines Corporation | Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system |
US6799217B2 (en) * | 2001-06-04 | 2004-09-28 | Fujitsu Limited | Shared memory multiprocessor expansion port for multi-node systems |
US8230178B2 (en) | 2005-02-10 | 2012-07-24 | International Business Machines Corporation | Data processing system and method for efficient coherency communication utilizing coherency domain indicators |
US7536513B2 (en) * | 2005-03-31 | 2009-05-19 | International Business Machines Corporation | Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state |
US7447844B2 (en) * | 2006-07-13 | 2008-11-04 | International Business Machines Corporation | Data processing system, processor and method of data processing in which local memory access requests are serviced on a fixed schedule |
US20090182984A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Execute Relative Long Facility and Instructions Therefore |
US8627009B2 (en) * | 2008-09-16 | 2014-01-07 | Mosaid Technologies Incorporated | Cache filtering method and apparatus |
US9110808B2 (en) * | 2009-12-30 | 2015-08-18 | International Business Machines Corporation | Formation of an exclusive ownership coherence state in a lower level cache upon replacement from an upper level cache of a cache line in a private shared owner state |
US8296519B2 (en) * | 2009-12-31 | 2012-10-23 | International Business Machines Corporation | Synchronizing access to data in shared memory via upper level cache queuing |
CN103946811B (zh) * | 2011-09-30 | 2017-08-11 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
US8751830B2 (en) * | 2012-01-23 | 2014-06-10 | International Business Machines Corporation | Memory address translation-based data encryption/compression |
US9202047B2 (en) * | 2012-05-14 | 2015-12-01 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
US9218289B2 (en) * | 2012-08-06 | 2015-12-22 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
US9606922B2 (en) * | 2013-03-01 | 2017-03-28 | International Business Machines Corporation | Selection of post-request action based on combined response and input from the request source |
-
2016
- 2016-04-11 US US15/095,675 patent/US10157134B2/en active Active
-
2017
- 2017-04-05 CN CN201780020369.0A patent/CN108885583B/zh active Active
- 2017-04-05 JP JP2018548818A patent/JP6802287B2/ja active Active
- 2017-04-05 WO PCT/IB2017/051944 patent/WO2017178925A1/en active Application Filing
- 2017-04-05 GB GB1817748.5A patent/GB2564994B/en active Active
- 2017-04-05 DE DE112017001959.1T patent/DE112017001959T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20170293558A1 (en) | 2017-10-12 |
DE112017001959T5 (de) | 2018-12-20 |
JP6802287B2 (ja) | 2020-12-16 |
US10157134B2 (en) | 2018-12-18 |
CN108885583A (zh) | 2018-11-23 |
GB201817748D0 (en) | 2018-12-19 |
GB2564994A (en) | 2019-01-30 |
GB2564994B (en) | 2020-12-23 |
WO2017178925A1 (en) | 2017-10-19 |
JP2019514106A (ja) | 2019-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885583B (zh) | 高速缓存存储器访问 | |
US8935513B2 (en) | Processor performance improvement for instruction sequences that include barrier instructions | |
US9501411B2 (en) | Cache backing store for transactional memory | |
TWI637265B (zh) | 支援不同優先順序之異動性儲存器存取之方法、單元、系統及電腦程式產品 | |
US10824567B2 (en) | Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead | |
US10152417B2 (en) | Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation | |
US10216519B2 (en) | Multicopy atomic store operation in a data processing system | |
US10102130B2 (en) | Decreasing the data handoff interval in a multiprocessor data processing system based on an early indication of a systemwide coherence response | |
US10705957B1 (en) | Selectively updating a coherence state in response to a storage update | |
EP4066119B1 (en) | Cache snooping mode extending coherence protection for certain requests | |
JP2023504622A (ja) | ある要求に対してコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード | |
US10733102B2 (en) | Selectively updating a coherence state in response to a storage update | |
WO2023010975A1 (en) | Data processing system having masters that adapt to agents with differing retry behaviors | |
US11157408B2 (en) | Cache snooping mode extending coherence protection for certain requests | |
US10691599B1 (en) | Selectively updating a coherence state in response to a storage update | |
US9665297B1 (en) | Injection of at least a partial cache line in a private multilevel cache hierarchy | |
US11615024B2 (en) | Speculative delivery of data from a lower level of a memory hierarchy in a data processing system | |
US11561901B1 (en) | Distribution of injected data among caches of a data processing system | |
US11748280B2 (en) | Broadcast scope selection in a data processing system utilizing a memory topology data structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |