CN115605849A - 核对核高速缓存隐藏和目标发现 - Google Patents
核对核高速缓存隐藏和目标发现 Download PDFInfo
- Publication number
- CN115605849A CN115605849A CN202180035242.2A CN202180035242A CN115605849A CN 115605849 A CN115605849 A CN 115605849A CN 202180035242 A CN202180035242 A CN 202180035242A CN 115605849 A CN115605849 A CN 115605849A
- Authority
- CN
- China
- Prior art keywords
- data
- hidden
- processor core
- core
- data address
- 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.)
- Pending
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/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/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
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
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)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种用于从第一处理器内核向第二处理器内核传输数据的方法和装置。该第一处理器内核执行隐藏指令,该隐藏指令具有与该数据的数据地址相关联的第一操作数。基于该数据地址或第二操作数,确定第二处理器内核将是隐藏消息的隐藏目标。向该第二处理器内核发送隐藏消息,从而向该第二处理器内核通知所写入的数据。响应于接收到该隐藏消息,该第二处理器内核可选择将该数据存储在其高速缓存中。该数据可被包括在该隐藏消息中或响应于该第二处理器内核的读取请求而被检索。可通过至少部分地基于所监视的数据事务处理的预测来确定该第二处理器内核。
Description
背景技术
在多核数据处理系统中,由在第一处理器内核上执行的处理线程产生的数据可由在第二处理器内核上执行的处理线程消费。在操作中,发生器内核将数据写入本地高速缓存或共享存储器。由第二处理器内核针对新写入的数据的下一次读取操作导致高速缓存未命中,因为该数据尚未被加载到第二处理器的本地高速缓存中。数据移动到消费内核的本地高速缓存中导致处理延缓或延迟。
附图说明
附图提供了视觉表示,这些视觉表示将用于更全面地描述各种代表性实施方案,并且可由本领域的技术人员使用以更好地理解所公开的代表性实施方案及其优点。在这些附图中,类似的附图标号表示对应或相似的元件。
图1是根据各种代表性实施方案的多核数据处理系统的简化框图。
图2是根据各种代表性实施方案的用于多核数据处理系统中的数据传输的方法的流程图。
图3是根据各种代表性实施方案的示例性核对核隐藏操作的交互图。
图4是根据各种代表性实施方案的核对核隐藏操作的另外的示例的交互图。
图5示出了根据各种代表性实施方案的隐藏目标表(STT)的示例。
图6示出了根据各种代表性实施方案的隐藏目标表(STT)的另外的示例。
图7至图11是例示根据各种代表性实施方案的用于更新隐藏目标表的方法的交互图。
图12是根据各种代表性实施方案的用于由归属代理创建并更新隐藏目标表的方法的流程图。
图13和图14是根据各种代表性实施方案的示例性核对核隐藏操作的交互图。
图15是根据各种代表性实施方案的示例性隐藏目标注册操作的交互图。
图16是根据各种代表性实施方案的示例性核对核隐藏操作的交互图。
具体实施方式
本文所述的各种装置、设备和方法提供用于多核数据处理系统中的核到核高速缓存隐藏的机制。
虽然本公开能够具有许多不同形式的实施方案,但在附图中示出并将在本文详细描述具体实施方案,应当理解,本文所示和所述的实施方案应被视为提供本公开的原理的示例,而并非旨在将本公开限制于所示和所述的具体实施方案。在下面的描述中,类似的附图标号用于描述附图的若干视图中的相同、类似或对应的部件。为了简化和清楚地说明,可在附图中重复附图标号以指示对应的或类似的元件。
在本文档中,关系术语,诸如第一和第二、顶部和底部等可仅用于将一个实体或动作与另一个实体或动作区分开,而不一定要求或暗示此类实体或动作之间的任何实际的此类关系或次序。术语“包括”、“包含”、“含有”、“具有”或它们的任何其他变型旨在涵盖非排他性的包括,使得包括一系列元素的过程、方法、制品或装置至少包括列出的这些元素,并且还可包括未明确列出的或此类过程、方法、制品或装置固有的其他元素。前面带有“包括...一个”的元件在没有更多限制的情况下不排除在包括该元件的过程、方法、制品或装置中存在另外的相同元件。
贯穿本文档提及的“一个实施方案”、“某些实施方案”、“实施方案”、“具体实施”、“方面”或类似术语意指结合该实施方案描述的特定特征、结构或特性包括在本公开的至少一个实施方案中。因此,此类短语在本说明书内各个地方的出现不一定都是指相同的实施方案。此外,具体特征、结构或特性可以任何合适的方式无限制地组合在一个或多个实施方案中。
如本文所用,术语“或”将被解释为包含性的或意指任何一种或任何组合。因此,“A、B或C”意指“以下中的任一者:A;B;C;A和B;A和C;B和C;A、B和C”。只有当元件、功能、步骤或动作的组合以某种方式固有地相互排斥时,才会出现该定义的例外。
如本文所用,当应用于元件时,术语“被配置为”指示该元件可被设计或构造为执行指定功能,或者具有使其能够重新配置或适于执行该功能的所需结构。
图1是根据各种代表性实施方案的多核数据处理系统100的简化框图。第一处理器内核102(也被称为发送器内核或发生器内核)包括至少一个本地高速缓存104(其可以专用于该内核或例如内核簇),并且第二处理器内核106包括至少一个本地高速缓存108。第二处理器内核106也被称为接收器内核或消费者内核。一般来讲,数据处理系统100可包括任意数量的处理器内核,其中一些可被布置成簇并且共享较低级高速缓存。处理器内核通过互连结构110耦接,该互连结构被配置为在处理器内核与耦接到互连结构的其他设备之间传递消息。还耦接到互连结构110的是归属代理112。可选地,归属代理112可包括系统级高速缓存114。共享存储器116经由存储器控制器118耦接到互连结构110。处理器内核通过向归属代理112发送请求消息来访问共享存储器116。归属代理管理存储器地址的集合或范围,并且充当数据的一致性和串行化点,从而确保存储在高速缓存中的数据的副本是一致的并且是最新的。对于本领域的普通技术人员而言将显而易见的是,在数据处理系统中可包括任意数量的其他部件,诸如I/O设备、网络接口、附加存储器、处理加速器等。系统可集成在单个集成模块、多芯片模块中,或者可包括分布式组件。
本发明的实施方案涉及在第二处理器内核读取由发送器处理器内核102写入或产生的数据之前将该数据传输到第二处理器内核106的高速缓存108。当第二处理器内核执行指令以读取数据时,如果该数据已被存储于高速缓存108中,则访问时间大大减少。因此,所公开的机制提供了对数据处理系统的操作的改进。数据可包括一个高速缓存行中的信息(例如,64字节),并且可以由数据地址的高位或某个其他标识来标识。在此,术语‘数据地址’是指数据元素(例如,字或字节)的地址、包含该地址的数据块的标识(诸如元素地址的高位)。当数据块大于互连结构中的数据信道的宽度时,数据可能以两个或更多个微片(流控制位数)在数据信道上传输。
数据可以与数据地址相关联。数据地址可以是例如后备存储器或存储装置中的物理地址,或者输入/输出设备的地址。处理器内核可以在映射到物理地址空间的虚拟地址空间中工作。虚拟地址可经由一个或多个中间地址映射到物理地址。为了加速处理,数据的副本可被存储在数据处理系统中的一个或多个高速缓存中。此类数据被称为与数据地址‘相关联’。然而,数据可以由处理器内核修改或写入,并且在给定时间可能不匹配在相关联地址处存储的数据。
由在第一处理器内核102上执行的处理线程产生的数据可由在第二处理器内核106上执行的处理线程消费。在先前多核数据处理系统中,发生器内核将数据写入本地高速缓存104、归属代理114或共享存储器116。消费内核106针对新写入的数据的读取操作将导致高速缓存未命中。然后,数据必须被移动到消费内核的本地高速缓存中,从而导致处理延缓或延迟。
如本文所公开的核对核隐藏提供了用于在第二处理器内核读取数据之前将该数据从第一处理器内核102传输到第二处理器内核106的本地高速缓存108的机制。这增加了在读取数据时高速缓存命中的概率。
核对核隐藏减轻了例如由发生器-消费者通信模式中的消费者过程引发的高速缓存未命中所导致的性能下降。在一个实施方案中,当发生器内核102完成向高速缓存行的写入时,该发生器内核执行隐藏指令以发起高速缓存行到消费者内核的专用高速缓存108的传输。当传输在消费者内核发出针对高速缓存行的请求之前完成时,消费者将命中其专用高速缓存,从而显著地减少高速缓存行的访问延迟。
在一些应用中,发生器线程可知道哪个内核正在运行消费者线程,并且将该内核标识为隐藏操作的目标。在一个实施方案中,隐藏操作的目标内核由发生器处理器内核指定。
在其他应用中,对于发生器线程而言,确定目标内核或通过多个软件层传播该信息可能是困难的或代价高昂的。例如,可能难以将信息从消息传递接口(MPI)库传播到低级通信库诸如统一通信X(UCX)库中。
在又一实施方案中,基于处理器内核的先前数据使用自动标识目标内核。在该实施方案中,来自将数据分配到高速缓存中并释放的处理器内核的事务处理由隐藏目标表(STT)控制电路120监视,并且这些事务处理可用于更新隐藏目标表122中的信息。隐藏目标表122可以是存储器,诸如组相联高速缓存。可以用高速缓存行的物理或中间地址为高速缓存编索引,并且完全或部分地标记高速缓存。隐藏目标表存储多个条目。每个条目存储地址的一个或多个隐藏目标的标识。隐藏目标表控制电路120和隐藏目标表122可以在归属代理中或在一个或多个处理器内核中实现,并且用于将一个或多个处理器内核标识为与指定数据地址相关联的数据的隐藏目标内核。
归属代理112还可包括探听滤波器124,该探听滤波器也监视来自将数据分配到高速缓存中并释放的处理器内核的事务处理。STT 122可通过向探听滤波器的高速缓存中的条目添加标识预测的隐藏目标的附加字段来实现。
因此,根据本公开的实施方案,数据处理系统100包括互连结构110、通过该互连结构互连的多个处理器内核(102,106)。至少一个处理器内核被配置用于将与第一数据地址相关联的数据写入高速缓存并且执行针对第一数据地址的第一隐藏指令。隐藏目标表控制电路120被配置用于监视来自将数据分配到处理器内核的高速缓存中并释放的处理器内核的事务处理,并且创建并更新隐藏目标表122中的条目。隐藏目标表控制电路120还被配置用于响应于第一隐藏指令,预测一个或多个处理器内核将是与第一数据地址相关联的数据的隐藏目标内核,并且向隐藏目标内核发送隐藏消息,该隐藏消息向隐藏目标内核通知与第一数据地址相关联并且由第一处理器内核产生的数据。该一个或多个隐藏目标内核中的第二处理器内核被配置为响应于接收到隐藏消息,将与第一数据地址相关联的数据存储在第二处理器内核的高速缓存中。
如图1所示,数据处理系统的实施方案还可包括通过互连结构110耦接到处理器内核的归属代理112,该归属代理提供数据处理系统的一致性和串行化点。在该实施方案中,归属代理包括隐藏目标表控制电路120。在另选的实施方案中,隐藏目标表控制电路120可以在处理器内核中的一个或多个处理器内核中实现。
由发生器线程执行的隐藏指令指定数据地址。该指令还可指定或可不指定预期隐藏目标内核的标识。当指令中未明示目标时,可以以各种方式来确定隐藏目标。例如,接收器内核可以向归属代理注册其自身作为隐藏目标,或者归属代理可预测隐藏目标。在一些实施方案中,该预测基于归属代理监视到数据地址的共享到唯一转换、唯一到共享转换以及针对先前隐藏的数据地址的读取操作。
公开了一种数据传输方法,其中数据处理系统的第一处理器内核(发送内核)将与第一数据地址相关联的数据写入第一高速缓存。写入可包括(例如)生成数据并且将其与高速缓存中的第一数据地址相关联,或者修改高速缓存中与第一地址相关联的数据。在任一种情况下,第一处理器内核可请求与第一地址相关联的数据的所有权,从而导致其他高速缓存中的数据的副本无效。例如,第一数据地址可以是虚拟地址或物理地址。
图2是根据各种代表性实施方案的用于多核数据处理系统中的数据传输的方法的流程图200。在图2中的开始框202之后,在框204处,隐藏操作开始,由发生器处理器内核执行隐藏指令。该隐藏指令具有指定待隐藏的数据地址的一个输入寄存器或操作数,并且可选地具有标识一个隐藏目标或多个隐藏目标的另一输入寄存器或操作数。在第一处理器内核的高速缓存中,保存与该地址相关联的数据的高速缓存行是操作的对象。该隐藏指令可被包括在数据处理系统的指令集架构(ISA)中。再次参考图2,当隐藏指令包括隐藏目标的标识(如来自决策框206的肯定分支所描绘的)时,在208处,经由互连结构向所标识的隐藏目标(接收器或消费者处理器内核)发送隐藏消息。该隐藏消息标识数据地址并且向隐藏目标提供与该地址相关联的数据可用的通知或提示。可直接地或经由归属代理向隐藏目标发送隐藏消息。当经由归属代理发送时,归属代理生成隐藏消息并且从消息中根据目标标识确定目标。如果隐藏目标选择接受该数据(如来自决策框210的肯定分支所描绘的),则在框212处,隐藏目标预取与该数据地址相关联的数据。然后如框214所指示,完成隐藏指令的执行。如果隐藏目标确定不接受该数据,如来自决策框210的否定分支所描绘的,则也完成执行。
当隐藏指令不包括隐藏目标的标识(如来自决策框206的否定分支所描绘的)时,根据数据处理系统中的先前数据事务处理预测隐藏目标。在框216处,基于数据地址访问隐藏目标表(STT)以标识一个或多个隐藏目标。在一个实施方案中,STT由发生器处理器内核访问。在另一个实施方案中,发生处理器内核经由互连结构向归属代理发送隐藏请求,并且归属代理访问STT。该隐藏请求包括第一数据地址。如上所述,归属代理充当存储器或数据处理系统的其他可寻址元件的一致性和串行化点,该点在处理器内核之间共享。归属代理可包括探听滤波器,该探听滤波器记录数据在数据处理系统的各种高速缓存中的存在和一致性状态。通过监视来自处理器内核的事务处理来更新探听滤波器的高速缓存中的条目,这些处理器内核将数据分配到其高速缓存中并释放。归属代理还可包括系统级或末级高速缓存。归属代理记录哪些处理器内核共享高速缓存行的副本(例如,这可被记录为存在向量)以及哪些共享者(如果有的话)被指定为具有高速缓存行的所有权。
如果数据地址的条目存在于隐藏目标表中,并且该条目将一个或多个第二处理器内核标识为目标,如来自决策框218的肯定分支所描绘的,则流程继续至框208,并且向目标处理器内核中的每个目标处理器内核发送隐藏消息。隐藏消息向目标处理器内核通知与第一数据地址相关联的新写入的数据可用。同样,目标处理器内核可忽略隐藏消息或者将与第一数据地址相关联的数据预取到第二处理器内核的高速缓存中。该高速缓存可以是例如第二处理器内核的本地或专用高速缓存,或者内核簇的较低级高速缓存。在第二处理器内核执行指令以在数据从高速缓存中被移出之前读取该数据的情况下,将发生高速缓存命中并且读取数据的时间减少。高速缓存命中通过减少执行针对数据的读取操作的时间来提高数据处理系统的性能。如果数据地址的条目不存在于隐藏目标表中,或者如果存在的条目未标识任何目标,如来自决策框218的否定分支所描绘的,则完成隐藏指令的执行,如框214所指示。然而,如下面将详细描述的,可更新隐藏目标表。
图3是根据各种代表性实施方案的示例性核对核隐藏操作的交互图300。该图示出了发送器或发生器内核S的时间线302、归属代理的时间线304以及接收器或消费者内核R的时间线306,其中时间沿向下方向流动。在308处,发送器内核将与数据地址A相关联的数据写入发送器内核的高速缓存行。在310处,发送器内核执行针对数据地址A的隐藏指令,从而将内核R指示为隐藏目标。隐藏指令可呈现以下形式:
STASH data_address、target_id
其中,操作数data_address可以是虚拟地址、虚拟地址范围的指示标识、或一个或多个数据地址的某个其他指示标识。操作数target_id将一个或多个处理器内核标识为高速缓存目标。它可以是例如数字标识或位向量。在位向量中,位位置对应于隐藏目标。
向归属代理发送消息312。作为响应,归属代理向目标内核R发送隐藏消息316。隐藏消息316指示与数据地址A相关联的数据已被修改。内核R可选择忽略该消息或预取与数据地址A相关联的数据。当内核R选择预取与数据地址A相关联的数据时,它向归属代理发送针对该数据的读取请求318。作为响应,归属代理向发送器内核发送消息320,从而请求向内核R发送与数据地址A相关联的数据。从归属代理到处理器内核的消息可被称为‘探听’消息。发送器内核通过在消息322中将与数据地址A相关联的数据转发到接收器内核(内核R)来完成隐藏操作。所转发的数据被存储在内核R的本地高速缓存中。当接收器内核R在324处执行读取操作时,数据已经在本地高速缓存中,因此读取导致高速缓存命中,并且能以最小延迟加载数据。这样,数据处理系统的性能得到提高。
在另一个实施方案中,当隐藏指令标识隐藏目标时,可直接从发送器内核向接收器内核发送隐藏消息。在这种情况下,在将数据转发到内核R之后,可能需要从发送器内核向归属代理发送确认以使得归属代理能够监视数据一致性。
图4是根据各种代表性实施方案的核对核隐藏操作的另外的示例的交互图400。该图示出了发送器或发生器内核S的时间线402、归属代理的时间线404以及接收器或消费者内核R的时间线406,其中时间沿向下方向流动。在408处,发送器内核将与数据地址A相关联的数据写入发送器内核的高速缓存行。在410处,发送器内核执行针对数据地址A的隐藏指令,其中没有对隐藏目标的指示。隐藏指令可呈现以下形式:
STASH data_address
其中,操作数data_address可以是例如虚拟地址。
在图3中,归属代理直接从消息312中确定隐藏目标。然而,在图4中,消息412包含数据地址A但不包含目标标识。在该实施方案中,归属代理基于在隐藏消息412中指示的数据地址A,通过在414处访问隐藏目标表来确定(一个或多个)隐藏目标。如果该表包括针对数据地址A的条目并且该条目标识一个或多个隐藏目标,则向所标识的接收器内核发送针对数据地址A的隐藏消息416。该方法如参考图3所述继续,其中交互418-424对应于元素318-324。当内核R选择预取与数据地址A相关联的数据时,它向归属代理发送针对该数据的读取请求418。作为响应,归属代理向发送器内核发送消息420,从而请求向内核R发送与数据地址A相关联的数据。发送器内核通过在消息422中将与数据地址A相关联的数据转发到接收器内核(内核R)来完成隐藏操作。该数据被存储在内核R的本地高速缓存中。当接收器内核(内核R)在424处执行读取操作时,数据已经在本地高速缓存中,因此读取导致高速缓存命中,并且可以最小延迟加载数据。
在参考图3所述的方法中,使用隐藏消息中的标识来确定隐藏目标,而在参考图4所述的方法中,使用隐藏目标表来确定隐藏目标。下面参考图7至图11描述用于生成并维护隐藏目标表的若干示例性机制。一般来讲,归属代理通过监视数据传输和针对数据地址的数据一致性操作来生成并维护隐藏目标。
因此,图3和图4示出了数据处理系统中的数据传输方法的示例。根据该方法,第一处理器内核将与第一数据地址相关联的数据写入第一高速缓存,并且向数据处理系统的归属代理发送第一隐藏请求,第一隐藏请求包括第一数据地址。归属代理或发生器内核至少部分地基于第一隐藏请求确定第二处理器内核,以接收隐藏消息并且向第二处理器内核发送隐藏消息。在接收到隐藏消息时,第二处理器内核可选择将与第一数据地址相关联的数据预取到第二处理器内核的高速缓存中。在一个实施方案中,第一隐藏请求包括第二处理器内核的标识。在另一个实施方案中,通过访问隐藏目标表中的第一条目来确定隐藏目标,第一条目与第一数据地址相关联。
图5示出了根据各种代表性实施方案的隐藏目标表(STT)的示例500。表500中的每个条目包括数据地址502和一个或多个隐藏目标的标识504。最初,条目可具有数据地址但不具有隐藏目标。数据地址502可以是物理地址或中间地址,诸如表面或虚假物理地址。数据地址可以是例如高速缓存行或页的标识。更一般地,存储器能以指定粒度(小于、大于或等于高速缓存行)被逻辑地划分成区域,在该情况下,数据地址可以是区域的标识。数据处理系统可包括使用不同粒度的多个SST。
图6示出了根据各种代表性实施方案的隐藏目标表(STT)的另外的示例600。该表中的每个条目包括基础数据地址602、一个或多个隐藏目标的标识604和大小606。基础地址和大小一起指示size地址范围(例如,size高速缓存行、size字或size字节),从base_address到base_addess+size-1。因此,STT 600中的第一条目指示地址A、A+1、A+2和A+3的隐藏目标,并且等同于图5的表500中的前四个条目。在该示例中,隐藏目标被标识为位向量。例如,表600中的第二条目中的标识是位向量00001010,其中,1的位置指示数据地址B的隐藏目标2和4。
由基础数据地址602和大小606指定的条目的范围可被限制为不跨越指定的存储器边界。这使得能够实现组相联表,其中,针对每次表查找操作将需要搜索仅一个集合。
STT可位于归属代理处或多个处理器内核中的每个处理器内核处。另选地,可以将隐藏目标信息存储在归属代理的探听滤波器高速缓存中。对于每个高速缓存行,探听滤波器高速缓存可包括具有数据字段的条目,这些数据字段记录共享者、所有者和多个高速缓存行的一致性状态。可提供附加字段来记录高速缓存行的隐藏目标。这对于其中大多数高速缓存行具有高速缓存目标的应用是有效的,但是对于其中仅一小部分高速缓存行具有隐藏目标的应用是较低效的。
随后,公开了用于创建并更新STT的各种示例性方法。参考归属代理来描述这些示例。然而,等效方法也可用于在处理器内核处维护STT。
图7是根据各种代表性实施方案的用于更新隐藏目标表的方法的交互图700。根据该方法,接收器处理器内核向归属代理发送针对数据地址的目标注册消息。作为响应,归属代理生成隐藏目标表中的条目,第一条目将接收器处理器内核标识为与该数据地址相关联的数据的目标。参考图7,该图示出了发送器或发生器内核S的时间线702、归属代理的时间线704以及接收器或消费者内核R的时间线706,其中时间沿向下方向流动。在708处,接收器内核R执行注册指令,该注册指令向硬件指示正在接收器内核(未来目标)上运行的软件期望读取将被另一内核隐藏的数据。该数据可以由虚拟地址指定。例如,注册指令可呈现以下形式:
STASH_TARGET virtual_address
执行该指令的内核被标识为包含对应于该虚拟地址的物理地址的高速缓存行的未来隐藏的目标。
另选地,STASH_TARGET指令可指定虚拟地址范围,该指令呈现例如以下形式:
STASH_TARGET base_virtual_address、size
该指令将与对应物理地址相关联的所有高速缓存行标识为以执行STASH_TARGET指令的内核为目标的隐藏操作的潜在目标。
注册指令的执行使得将从接收器内核R向归属代理发送消息710。需注意,虚拟地址可被转换成中间或物理地址以包括在消息710中。
在一些应用中,线程被固定到内核。在其他应用中,STASH_TARGET指令可能需要在消费者线程迁移之后执行或重新执行,以便确保所报告的目标内核在执行实际隐藏操作时是正确的。当初始化、读取或再循环数据缓冲器时,存在用于执行STASH_TARGET指令的各种时机,因此可能不需要在每次线程迁移之后立即主动执行STASH_TARGET指令。线程通常由内核执行比适应隐藏的程序迭代更长的时间。因此,缺乏主动注册可能仅导致一小部分的隐藏时机被错过。
在712处,归属代理创建或更新隐藏目标表中针对数据地址A的条目,该条目将接收器内核R指示为隐藏目标。
同样,由于归属代理中的探听滤波器记录与每个高速缓存行相关联的元数据(包括各个高速缓存中的高速缓存行的一致性状态、哪些内核具有高速缓存行的副本以及哪个内核(如果有的话)拥有高速缓存行),所以元数据可被扩充为包括存储高速缓存行的隐藏目标的隐藏目标字段(诸如位向量)。
在另选的实施方案中,如上所述的隐藏目标表可用于记录所报告的目标内核信息。该隐藏目标表仅需要记录待隐藏的高速缓存行的数据,这些高速缓存行可以是存储在探听滤波器高速缓存中的高速缓存行的总数的一小部分。隐藏目标表可以是组相联高速缓存,用高速缓存行物理地址为该表编索引并且完全或部分标记该表,并且该表在每个条目中存储一个隐藏目标或多个隐藏目标。可使用基于最近访问的高速缓存替换策略,使得表中最近最少使用的条目最终被替换,包括由于线程迁移等而失效的那些条目。由于失效条目而导致的不正确隐藏目标的唯一潜在影响是将在未进行隐藏的情况下发生的相同高速缓存未命中的发生。当消费者线程针对该行重新执行新的STASH_TARGET指令时,目标将被校正。
如上所述,隐藏目标表可指定地址范围。这减少了,例如,当隐藏大消息时或者当通信库与大缓冲器一起工作时所需条目的数量。当地址范围被指定时,可检测到条目之间的地址范围重叠并且较旧的条目得到更新和/或变得无效以防止重叠。
图8是根据各种代表性实施方案的用于隐藏目标表的另外的示例性更新的交互图800。该图示出了发送器或发生器内核S的时间线802、归属代理的时间线804以及接收器或消费者内核R的时间线806,其中时间沿向下方向流动。在该实施方案中,当数据的一致性状态发生变化时,归属代理更新隐藏目标表。
将要向高速缓存行进行写入的内核(发送器)必须请求该行处于唯一状态,从而使该行在其他内核的专用高速缓存中的所有副本无效。这将内核确证为具有高速缓存行的所有权。得到无效消息的内核(行的共享者)是行的先前的读取者或写入者,因此是发送器执行针对新产生的高速缓存行的隐藏操作时,该行的潜在隐藏目标。通常,在写入缓冲器高速缓存行和对其进行隐藏之间的时间很短(通常小于几千个周期),这产生了将具有高速缓存行的最近无效副本的内核标识为后续隐藏操作的目标的时机。
再次参见图8,在808处,发送器内核S发起针对与数据地址A相关联的数据的写入操作。在这种情况下,与其他内核共享高速缓存行,因此向归属代理发送消息810,从而请求针对内核S的适当高速缓存行的所有权。作为响应,归属代理访问其探听滤波器并且将接收器内核R标识为高速缓存行的共享者。然后,归属代理向接收器内核R发送无效消息812以使接收器内核的高速缓存中的高速缓存行无效。
根据该事务处理,很明显,发送器内核是与数据地址A相关联的数据的发生器,而接收器内核至少先前是该数据的消费者(或发生器)。基于这一认识,在814处,归属代理生成或更新隐藏目标表中的条目,从而指示接收器内核R是与数据地址A相关联的数据的潜在隐藏目标。通过接收器内核R在消息816中确认到归属代理的无效消息并且归属代理在消息818中将该确认转发到发送者内核S来完成操作。发送器内核S的本地高速缓存中的数据现在处于唯一一致性状态,并且发送器内核S具有高速缓存行的所有权。
该方法使得隐藏目标表能够由归属代理更新,而内核不需要知道隐藏目标或隐藏源的身份。这在例如软件难以访问隐藏目标ID的情况下是有用的,诸如在虚拟化环境中和在存在多个库层诸如网络堆栈时。
该机制例如对于与通信库一起使用是有效的,这些通信库重新使用用于同样是这两个内核之间的通信的缓冲器。在这种情况下,探听滤波器将反复地查看针对给定地址(高速缓存行)的同样的共享到唯一转换。
在当在归属代理处接收到使其唯一请求时存在超过两个共享者的情况下,归属代理可将多个目标插入隐藏目标表中。
如图9所示,当脏高速缓存行(即,包含已经被写入但尚未被存储回存储器的数据的高速缓存行)被另一内核请求并被转发到该另一内核时,存在预测隐藏目标的另一时机。该请求内核是隐藏操作的潜在隐藏目标。当归属代理从发送器接收到转发确认时,根据高速缓存一致性协议,归属代理可将隐藏目标插入隐藏目标表中。
图9是根据各种代表性实施方案的用于更新隐藏目标表的另外的方法的交互图900。该图示出了发送器或发生器内核S的时间线902、归属代理的时间线904以及接收器或消费者内核R的时间线906,其中时间沿向下方向流动。在该实施方案中,当数据的一致性状态发生变化时,归属代理再次更新隐藏目标表。然而,在这种情况下,当高速缓存从唯一、脏状态转换到共享、脏状态时,更新表。
参见图9,在908处,接收器内核R通过向归属代理发送请求910来请求与数据地址A相关联的数据。归属代理访问其探听滤波器,将发送器内核S标识为高速缓存行的所有者,并且向发送器内核S发送探听请求912。作为响应,发送器内核S在消息914中将高速缓存行转发到接收器内核R,并且在消息916中确认到归属代理的事务处理。根据该事务处理以及数据是‘脏的’(即,经修改的)这一认识,很明显,发送器内核S是与数据地址A相关联的数据的发生器,并且接收器内核R是该数据的消费者。因此,在918处,归属代理创建隐藏目标表中针对数据地址A的条目,该条目将接收器内核R标识为隐藏目标。
图9中的方法有效的前提是:在发送器向高速缓存行进行写入并且执行隐藏指令时,已更新的隐藏目标表条目尚未从隐藏目标表中被移出。然而,应当认识到,并非所有经转发的高速缓存行都将是未来隐藏操作的实际目标。
图10是根据各种代表性实施方案的用于隐藏目标表的另外的示例性更新的交互图1000。该图示出了发送器或发生器内核S的时间线1002、归属代理的时间线1004以及接收器或消费者内核R的时间线1006,其中时间沿向下方向流动。在1008处,当在没有隐藏目标的情况下执行隐藏指令时,向归属代理发送对应消息1010。在1012处,访问隐藏目标表,并且确定接收器内核R将是隐藏目标。向隐藏目标发送隐藏消息1014。在该示例中,接收器内核R选择拒绝该隐藏消息并且发送消息1016,从而确认收到该隐藏消息并拒绝与数据地址A相关联的数据。在1018处,归属代理更新隐藏目标表以移除作为数据地址A的隐藏目标的接收器内核R。
图11是根据各种代表性实施方案的用于更新隐藏目标表的另外的方法的交互图1100。在所示的方法中,仅将针对已经在隐藏指令中指定的那些高速缓存行的条目插入到隐藏目标表中。该图示出了发送器或发生器内核S的时间线1102、归属代理的时间线1104以及接收器或消费者内核R的时间线1106,其中时间沿向下方向流动。在1108处,当在没有隐藏目标的情况下执行隐藏指令时,向归属代理发送对应消息1110。在图11所示的示例中,高速缓存行处于唯一、脏状态。即,只有发送器内核具有该数据的有效副本,但是该数据是脏的,因为它尚未被写回到存储器。在1112处,响应于隐藏消息,归属代理生成隐藏目标表中针对数据地址A的条目(假设此类条目尚不存在)。然而,在1112处创建的任何新条目不标识任何隐藏目标。
稍后,在1114处,接收器内核R发起读取操作。由于数据不在内核R的本地高速缓存中,因此向归属代理发送针对该数据的请求1116。归属代理向发送器内核S发送探听消息1118,并且发送器内核S在消息1120中将所请求的数据转发到接收器内核R。然后,发送器内核S在消息1122中确认到归属代理的事务处理。在1124处,归属代理更新针对数据地址A的条目以将接收器内核R指示为数据地址A的隐藏目标。
对于本领域的普通技术人员而言将显而易见的是,可使用其他事件来标识隐藏目标表的目标。事件包括例如数据从接收器的专用高速缓存中的移出、从共享到唯一的转换以及脏高速缓存行的转发。然后,目标将可用于未来隐藏指令。
可以在执行指定数量的隐藏指令后重置隐藏目标表中的隐藏目标,以使得系统能够重新学习隐藏目标以进行下一次迭代。另选地,这可以用来自接收器的关于隐藏是否有用的反馈来完成。
由于隐藏目标表的容量是有限的,因此它可遵循针对条目的基于最近访问的替换策略(诸如最近最少使用)。软件可考虑隐藏目标表容量来决定在不指定隐藏目标的情况下隐藏多少行可能是合理的。
图12是根据各种代表性实施方案的用于由归属代理创建并更新隐藏目标表的方法的流程图1200。在框1202处,归属代理从处理器内核接收消息,该消息指定数据地址。如果归属代理确定在隐藏目标表中当前不存在与该数据地址相关联的条目,如来自决策框1204的否定分支所描绘的,则流程继续至决策框1206。如果从处理器内核接收到的消息既不是隐藏消息也不是注册目标消息,如来自决策框1206的否定分支所描绘的,则不对隐藏目标表进行更新,如框1208所指示。如果来自处理器内核的消息是隐藏消息或目标注册消息,如来自决策框1206的肯定分支所描绘的,则在框1210处,在隐藏目标表中制作针对该数据地址的新条目,并且流程继续至决策框1212。当针对该数据地址的条目已经存在于表中时,流程也继续至决策框1212,如来自决策框1204的肯定分支所描绘的。
如果接收到的消息是来自发生器内核的读取经修改或脏数据的请求,或者是将内核注册为隐藏目标的显式请求,如来自决策框1212的肯定分支所描绘的,则在框1214处,将向归属代理发送消息的内核的标识插入到隐藏目标表中针对指定数据地址的条目中。
如果接收到的消息是来自发生器内核的针对高速缓存行的所有权的请求(即,使高速缓存行唯一的请求),或者是来自发生器内核的隐藏请求,如来自决策框1216的肯定分支所描绘的,则归属代理从探听滤波器确定哪些(如果有的话)其他内核共享高速缓存行,并且在框1218处,将那些内核的标识插入到针对该数据地址的隐藏目标表条目中。如果该消息是某个其他消息,如来自决策框1216的否定分支所描绘的,则针对接收到的消息完成对隐藏目标表的更新,如框1220所指示。
这样,归属代理可响应于从处理器内核接收的消息创建并更新隐藏目标表。当发送器内核知道隐藏操作的目标时,目标的标识可以被包括在隐藏消息中。当隐藏操作的接收器知道已更新的数据的源时,接收器可以向归属代理注册。在其他情况下,归属代理基于处理器内核之间的交互确定隐藏目标。
在一个实施方案中,归属代理响应于从第一处理器内核接收到针对数据地址的隐藏请求,生成隐藏目标表中针对该数据地址的条目。当与该数据地址相关联的数据存储在一个或多个第二处理器内核的高速缓存中时,响应于第一处理器内核使该数据在第一处理器内核的高速缓存中唯一的请求,使其他这些高速缓存中的数据无效。归属代理更新该条目以将该一个或多个第二处理器内核标识为该数据地址的未来隐藏请求的目标。
当归属代理将针对与该数据地址相关联的数据的读取请求从第二处理器内核转发到第一处理器内核时,也可创建或更新该条目。已更新的条目将第二处理器内核标识为该数据地址的隐藏请求的目标。
更一般地,归属代理响应于与第一数据地址相关联的数据在第一处理器内核的高速缓存中的一致性状态从唯一改变成共享或从共享改变成唯一而更新隐藏目标表中针对第一数据地址的条目。
例如,归属代理可以响应于来自第一处理器内核的隐藏消息而生成隐藏目标表中针对数据地址的条目,并且稍后响应于将与该数据地址相关联的数据转发到第二处理器内核而更新该条目,以将该第二处理器内核标识为该数据地址的隐藏目标。
图13是根据各种代表性实施方案的核对核隐藏操作的交互图1300。该图示出了发送器或发生器内核S的时间线1302、第一接收器内核R1的时间线1304以及第二接收器内核R2的时间线1306,其中时间沿向下方向流动。在1308处,发送器内核将与数据地址A相关联的数据写入发送器内核的高速缓存行。在1310处,发送器内核执行针对数据地址A的隐藏指令,从而将内核R1和内核R2指示为隐藏目标。发送器内核S向接收器内核R1发送隐藏消息1312,并且向接收器内核R2发送隐藏消息1314。另选地,可以向所有其他接收器内核广播隐藏消息。隐藏消息向接收器内核提供与地址A相关联的数据在发送器内核S处可用的通知或提示。在所示的示例中,在1316处,接收器内核R1选择拒绝该数据,而在1318处,接收器内核R2选择接受该数据。接收器内核R2在消息1320中请求该数据,并且该数据在转发消息1322中从发送器内核S返回。随后,在1324处,接收器内核R2执行针对与地址A相关联的数据的读取指令。该指令导致高速缓存命中,因为该数据已经隐藏在接收器内核R2的本地高速缓存中。在该实施方案中,不需要归属代理。每个内核可监视数据事务处理以追踪数据一致性。另外,每个内核可维护隐藏目标表。
图14是根据各种代表性实施方案的另外的核对核隐藏操作的交互图1400。该图示出了发送器或发生器内核S的时间线1402、第一接收器内核R1的时间线1404以及第二接收器内核R2的时间线1406,其中时间沿向下方向流动。在1408处,发送器内核将与数据地址A相关联的数据写入发送器内核的高速缓存行。在1410处,发送器内核执行针对数据地址A的隐藏指令,其中没有对隐藏目标的标识。在1412处,发送器内核访问隐藏目标表。如果在隐藏目标表中存在针对数据地址A的条目,则向在该条目中标识的每个隐藏目标发送隐藏消息。在所示的示例中,该条目将接收器内核R1标识为唯一目标,并且向接收器内核R1发送隐藏消息1414。在该实施方案中,隐藏消息包括在1408处写入的数据。在1416处,接收器内核R1可选择接受该数据并且将其存储在本地高速缓存中,或者拒绝该数据。另选地,接收器内核R1可选择拒绝数据,在这种情况下,响应(诸如确认)可以由协议指定。
对于本领域的普通技术人员而言将显而易见的是,图13中的隐藏消息可以另选地包含数据而不是通知,并且图14中的隐藏消息可以另选地包含通知而不是数据。
图15是根据各种代表性实施方案的示例性隐藏目标注册操作的交互图1500。该图示出了第一处理器内核、第二处理器内核和第三处理器内核的时间线1502、1504和1506,其中时间沿向下方向流动。在1508处,内核3执行注册指令以向其他内核注册为数据地址A的隐藏目标。然后,向处理系统中的其他内核广播注册消息。在该示例中,向内核2发送注册消息1510并且向内核1发送注册消息1512。在接收到消息时,内核在它们相应的隐藏目标表中记录数据地址——内核2在1514处并且内核1在1516处。然后,针对地址A的表条目将内核3标识为隐藏目标。这样,可以在每个内核处创建隐藏表。这样,内核之间的数据事务处理可被监视并被用于预测哪些内核将从接收数据或隐藏通知中获益。
如上所述,隐藏消息可包含数据或隐藏通知。在图16中示出了示例。
图16是根据各种代表性实施方案的核对核隐藏操作的另外的示例的交互图1600。该图示出了发送器或发生器内核S的时间线1602、归属代理的时间线1604以及接收器或消费者内核R的时间线1606,其中时间沿向下方向流动。在1608处,发送器内核将与数据地址A相关联的数据写入发送器内核的高速缓存行。在1610处,发送器内核执行针对数据地址A的隐藏指令,其中没有对隐藏目标的指示。隐藏指令可呈现以下形式:
STASH data_address
其中,操作数data_address可以是虚拟地址或高速缓存行的某个其他指示标识(诸如地址标签),或者隐藏指令可标识一个或多个隐藏目标。
在图16所示的示例中,消息1612包含数据地址A和与数据地址A相关联的数据,但不包含目标标识。因此,在1614处,将数据存储在归属代理的系统高速缓存中。同样在1614处,归属代理基于在隐藏消息1612中标识的数据地址A,通过访问隐藏目标表来确定(一个或多个)隐藏目标。如果该表包括针对数据地址A的条目并且该条目标识一个或多个隐藏目标,则向所标识的接收器内核发送针对数据地址A的隐藏消息1616。当内核R选择预取与数据地址A相关联的数据时,它向归属代理发送针对该数据的读取请求1618。作为响应,归属代理在消息1620中向接收器内核R发送请求数据。该信息被存储在内核R的本地高速缓存中。当接收器内核(内核R)在1622处执行读取操作时,数据已经在本地高速缓存中,因此读取导致高速缓存命中,并且可以最小延迟加载数据。
阐述了许多细节以提供对本文所述的实施方案的理解。可以在没有这些细节的情况下实践实施方案。在其他情况下,未详细描述熟知的方法、程序和部件以避免模糊所述实施方案。本公开不应被视为限于本文所述的实施方案的范围。
本领域的技术人员将认识到,已借助于示例描述了本公开。本公开可使用硬件部件等效物诸如专用硬件和/或专用处理器来实现,该专用硬件和/或专用处理器是如所描述和要求保护的本公开的等效物。类似地,专用处理器和/或专用硬连线逻辑可用于构造本公开的另选等效实施方案。
用于实施所公开机制的专用或可重新配置硬件部件可例如通过硬件描述语言(HDL)的指令来描述,诸如VHDL、Verilog或RTL(寄存器传输语言),或者通过部件和连接性的网表来描述。指令可处于功能级或逻辑级或其组合。指令或网表可被输入到自动化设计或制造过程(有时称为高级综合),其解释指令并创建实施所描述功能或逻辑的数字硬件。
HDL指令或网表可存储在非暂态计算机可读介质上,诸如电可擦除可编程只读存储器(EEPROM);非易失性存储器(NVM);海量存储装置,诸如硬盘驱动器、软盘驱动器、光盘驱动器;在不脱离本公开的情况下,光存储元件、磁存储元件、磁光存储元件、闪存存储器、磁芯存储器和/或其他等效存储技术。此类可供选择的存储装置应被视为等同物。
使用专用硬件、可配置硬件或被编程处理器执行编程指令来实现本文所述的各种实施方案,该编程指令以流程图形式广义描述,该编程指令可存储在任何合适的电子存储介质上或通过任何合适的电子通信介质传输。可使用这些元件的组合。本领域的技术人员应当理解,在不脱离本公开的情况下,上述过程和机制可以任何数量的变型来实现。例如,在不脱离本公开的情况下,执行的某些操作的顺序通常可以改变,可以添加附加操作或者可以删除操作。此类变型是可设想的并且被认为是等同的。
已在本文中详细描述的各种代表性实施方案以举例的方式而非限制的方式给出。本领域的技术人员应当理解,可对所述实施方案的形式和细节进行各种改变,从而得到保持在所附权利要求的范围内的等同实施方案。
Claims (23)
1.一种数据传输方法,所述数据传输方法包括:
由数据处理系统的第一处理器内核将与第一数据地址相关联的数据写入到第一高速缓存;
由所述第一处理器内核执行隐藏指令,所述隐藏指令具有与所述第一数据地址对应的虚拟地址作为第一操作数;
至少部分地基于所述第一数据地址或所述隐藏指令的第二操作数,确定所述数据处理系统的第二处理器内核将是隐藏消息的隐藏目标;
向所述第二处理器内核发送所述隐藏消息,所述隐藏消息包括所述第一数据地址;以及
响应于接收到所述隐藏消息,所述第二处理器内核将与所述第一数据地址相关联的所述数据存储在所述第二处理器内核的高速缓存中。
2.根据权利要求1所述的方法,还包括所述第一处理器内核确定所述第二处理器内核将是所述隐藏目标并且向所述第二处理器内核发送所述隐藏消息。
3.根据权利要求1所述的方法,其中,所述隐藏指令的所述第二操作数包括所述第二处理器内核的标识。
4.根据权利要求1所述的方法,其中,所述隐藏消息包括与所述第一数据地址相关联的所述数据。
5.根据权利要求1所述的方法,其中,所述第一高速缓存是所述第一处理器内核的高速缓存,并且所述第二处理器内核将与所述第一数据地址相关联的所述数据存储在所述第二处理器内核的所述高速缓存中包括:
所述第二处理器内核请求与所述第一数据地址相关联的所述数据;以及
所述第一处理器内核将与所述第一数据地址相关联的所述数据转发到所述第二处理器内核。
6.根据权利要求1所述的方法,其中,所述确定包括访问隐藏目标表中的第一条目,所述第一条目与所述第一数据地址相关联。
7.根据权利要求6所述的方法,还包括,在所述确定之前:
由所述第二处理器内核发送针对所述第一数据地址的目标注册消息;以及
生成所述隐藏目标表中的所述第一条目,所述第一条目将所述第二处理器内核标识为与所述第一数据地址相关联的数据的目标。
8.根据权利要求6所述的方法,还包括,在所述确定之前:
响应于从所述第一处理器内核接收到针对所述第一数据地址的先前隐藏请求,生成所述隐藏目标表中针对所述第一数据地址的所述第一条目。
9.根据权利要求6所述的方法,还包括:
响应于与所述第一数据地址相关联的所述数据在所述第一处理器内核的高速缓存中的一致性状态从唯一改变成共享或从共享改变成唯一,更新所述隐藏目标表中的所述第一条目。
10.根据权利要求6所述的方法,还包括,在所述写入之前:
响应于所述第一处理器内核对与所述第一数据地址相关联的所述数据的所有权的请求,使存储在一个或多个第三处理器内核的高速缓存中的与所述第一数据地址相关联的数据无效;以及
更新所述隐藏目标表中的所述第一条目以将所述一个或多个第三处理器内核标识为所述第一数据地址的隐藏目标。
11.根据权利要求1所述的方法,还包括:
由所述第一处理器内核向所述数据处理系统的归属代理发送第一隐藏请求,所述第一隐藏请求包括所述第一数据地址,并且所述归属代理被配置用于:所述确定所述数据处理系统的所述第二处理器内核将是所述隐藏消息的所述隐藏目标以及所述向所述第二处理器内核发送所述隐藏消息。
12.根据权利要求11所述的方法,其中,所述确定包括访问隐藏目标表中的第一条目,所述第一条目与所述第一数据地址相关联。
13.根据权利要求12所述的方法,还包括,在所述确定之前:
响应于从所述第一处理器内核接收到针对所述第一数据地址的先前隐藏请求,由所述归属代理生成所述隐藏目标表中针对所述第一数据地址的所述第一条目。
14.根据权利要求13所述的方法,还包括,在所述确定之前:
由所述归属代理将针对与所述第一数据地址相关联的所述数据的读取请求从所述第二处理器内核转发到所述第一处理器内核;
由所述归属代理更新或创建所述隐藏目标表中的所述第一条目以将所述第二处理器内核标识为针对所述第一数据地址的隐藏目标;以及
由所述第一处理器内核将与所述第一数据地址相关联的所述数据转发到所述第二处理器内核,以存储在所述第二处理器内核的所述高速缓存中。
15.根据权利要求13所述的方法,还包括:
响应于与所述第一数据地址相关联的所述数据在所述第一处理器内核的高速缓存中的一致性状态从唯一改变成共享或从共享改变成唯一,更新所述隐藏目标表中的所述第一条目。
16.根据权利要求11所述的方法,其中,所述第二处理器内核将与所述第一数据地址相关联的所述数据存储在所述第二处理器内核的所述高速缓存中包括:
由所述第二处理器内核向所述归属代理发送请求;
所述归属代理向所述第一处理器内核发送消息;以及
所述第一处理器内核将与所述第一数据地址相关联的所述数据转发到所述第二处理器内核。
17.一种数据传输方法,所述数据传输方法包括:
监视来自数据处理系统的多个处理器内核的事务处理,所述多个处理器内核将数据分配到所述多个处理器内核的高速缓存中并且对所述数据解除分配;
至少部分地基于所监视的事务处理,预测所述多个处理器内核中的一个或多个处理器内核将是针对与第一数据地址相关联的数据的隐藏目标内核;
由所述多个处理器内核中的第一处理器内核执行针对所述第一数据地址的第一隐藏指令;
向所述隐藏目标内核发送隐藏消息,所述隐藏消息向所述隐藏目标内核通知与所述第一数据地址相关联并且由所述第一处理器内核产生的所述数据;以及
响应于接收到所述隐藏消息,所述一个或多个隐藏目标内核中的第二处理器内核将与所述第一数据地址相关联的所述数据存储在所述第二处理器内核的高速缓存中。
18.根据权利要求17所述的方法,还包括,在执行所述第一隐藏指令之前:
由所述第一处理器内核执行针对所述第一数据地址的第二隐藏指令;
响应于执行所述第二隐藏指令,在隐藏目标表中存储针对所述第一数据地址的条目;以及,
响应于所述第二处理器内核变成为或停止变成为与所述第一数据地址相关联的所述数据的共享者,更新所述隐藏目标表中的所述条目以将所述第二处理器内核标识为隐藏目标内核,其中,所述预测所述多个处理器内核中的一个或多个处理器内核将是针对与所述第一数据地址相关联的数据的隐藏目标内核包括访问所述隐藏目标表中针对所述第一数据地址的所述条目。
19.根据权利要求17所述的方法,还包括,在执行所述第一隐藏指令之前:
由所述第二处理器内核执行针对所述第一数据地址的注册指令;以及
响应于所述注册指令,创建或更新隐藏目标表中的条目,所述条目将所述第二处理器内核标识为针对所述第一数据地址的隐藏目标内核,
其中,所述预测所述多个处理器内核中的一个或多个处理器内核将是针对与所述第一数据地址相关联的数据的隐藏目标内核包括访问所述隐藏目标表中针对所述第一数据地址的所述条目。
20.一种数据处理系统,所述数据处理系统包括:
互连结构;
多个处理器内核,所述多个处理器内核通过所述互连结构互连,所述多个处理器内核中的第一处理器内核被配置用于将与第一数据地址相关联的数据写入到高速缓存并且执行针对所述第一数据地址的第一隐藏指令;
隐藏目标表控制电路,所述隐藏目标表控制电路被配置为:
监视来自数据处理系统的多个处理器内核的事务处理,所述多个处理器内核将数据分配到所述多个处理器内核的高速缓存中并且对所述数据解除分配;
创建并更新隐藏目标表中的条目;
响应于所述第一隐藏指令,预测所述多个处理器内核中的一个或多个处理器内核将是针对与第一数据地址相关联的数据的隐藏目标内核;
向所述隐藏目标内核发送隐藏消息,所述隐藏消息被配置为向所述隐藏目标内核通知与所述第一数据地址相关联并且由所述第一处理器内核产生的所述数据;并且
其中,所述一个或多个隐藏目标内核中的第二处理器内核被配置为响应于接收到所述隐藏消息,将与所述第一数据地址相关联的所述数据存储在所述第二处理器内核的高速缓存中。
21.根据权利要求20所述的数据处理系统,还包括:
归属代理,所述归属代理通过所述互连结构耦接到所述多个处理器内核,所述归属代理被配置为提供所述数据处理系统的一致性和串行化点,
其中,所述归属代理包括所述隐藏目标表控制电路。
22.根据权利要求20所述的数据处理系统,其中,所述第一处理器内核包括所述隐藏目标表控制电路。
23.根据权利要求20所述的数据处理系统,其中,所述隐藏目标表控制电路被进一步配置为:
响应于来自所述第一处理器内核的隐藏指令或来自所述第二处理器内核的注册请求,创建所述隐藏目标表中的条目;
响应于从所述第二处理器内核发送的读取请求或隐藏注册请求,将所述第二处理器内核作为隐藏目标插入到所述条目中;以及
响应于来自所述第一处理器内核的隐藏指令或者与所述第一数据地址相关联的所述数据的一致性状态从共享改变成由所述第一处理器内核拥有,将所述数据的除了所述第一处理器内核之外的共享者作为隐藏目标插入到所述条目中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/884,359 US11263137B2 (en) | 2020-05-27 | 2020-05-27 | Core-to-core cache stashing and target discovery |
US16/884,359 | 2020-05-27 | ||
PCT/GB2021/051262 WO2021240140A2 (en) | 2020-05-27 | 2021-05-25 | Core-to-core cache stashing and target discovery |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115605849A true CN115605849A (zh) | 2023-01-13 |
Family
ID=76305944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180035242.2A Pending CN115605849A (zh) | 2020-05-27 | 2021-05-25 | 核对核高速缓存隐藏和目标发现 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11263137B2 (zh) |
EP (1) | EP4158487A2 (zh) |
JP (1) | JP2023527735A (zh) |
KR (1) | KR20230017244A (zh) |
CN (1) | CN115605849A (zh) |
WO (1) | WO2021240140A2 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11888938B2 (en) * | 2021-07-29 | 2024-01-30 | Elasticflash, Inc. | Systems and methods for optimizing distributed computing systems including server architectures and client drivers |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8370294B2 (en) * | 2009-05-06 | 2013-02-05 | Microsoft Corporation | File stashing for storage media |
US8244764B2 (en) * | 2009-07-31 | 2012-08-14 | Microsoft Corporation | Stashing of locally persisted data to network accessible storage |
CN104737147B (zh) * | 2012-10-22 | 2018-11-06 | 英特尔公司 | 高性能互连物理层 |
US10146595B2 (en) * | 2014-10-20 | 2018-12-04 | Mediatek Inc. | Computer system for notifying signal change event through cache stashing |
US9720830B2 (en) * | 2015-07-10 | 2017-08-01 | Macom Connectivity Solutions, Llc | Systems and methods facilitating reduced latency via stashing in system on chips |
GB2567466B (en) * | 2017-10-12 | 2020-01-22 | Advanced Risc Mach Ltd | Cache stashing in a data processing system |
US10664419B2 (en) * | 2017-11-02 | 2020-05-26 | Arm Limited | I/O driven data transfer in a data processing network |
US10733106B2 (en) * | 2017-11-02 | 2020-08-04 | Arm Ltd | I/O driven data routing and cache allocation |
US10860487B2 (en) * | 2019-04-17 | 2020-12-08 | Chengdu Haiguang Integrated Circuit Design Co. Ltd. | Multi-core processing device and method of transferring data between cores thereof |
US10949292B1 (en) * | 2019-10-07 | 2021-03-16 | Arm Limited | Memory interface having data signal path and tag signal path |
-
2020
- 2020-05-27 US US16/884,359 patent/US11263137B2/en active Active
-
2021
- 2021-05-25 JP JP2022569593A patent/JP2023527735A/ja active Pending
- 2021-05-25 WO PCT/GB2021/051262 patent/WO2021240140A2/en unknown
- 2021-05-25 EP EP21730645.5A patent/EP4158487A2/en active Pending
- 2021-05-25 KR KR1020227044843A patent/KR20230017244A/ko active Search and Examination
- 2021-05-25 CN CN202180035242.2A patent/CN115605849A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11263137B2 (en) | 2022-03-01 |
KR20230017244A (ko) | 2023-02-03 |
US20210374059A1 (en) | 2021-12-02 |
WO2021240140A3 (en) | 2022-02-10 |
WO2021240140A2 (en) | 2021-12-02 |
EP4158487A2 (en) | 2023-04-05 |
JP2023527735A (ja) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885583B (zh) | 高速缓存存储器访问 | |
JP4226057B2 (ja) | 包含キャッシュにおける望ましくない置換動作を低減するための先行犠牲選択のための方法及び装置 | |
US7698508B2 (en) | System and method for reducing unnecessary cache operations | |
US8180981B2 (en) | Cache coherent support for flash in a memory hierarchy | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
US7395375B2 (en) | Prefetch miss indicator for cache coherence directory misses on external caches | |
US8762651B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US20110167222A1 (en) | Unbounded transactional memory system and method | |
US8423736B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US20180300258A1 (en) | Access rank aware cache replacement policy | |
US20050188159A1 (en) | Computer system supporting both dirty-shared and non dirty-shared data processing entities | |
CN111263934B (zh) | 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略 | |
US6345341B1 (en) | Method of cache management for dynamically disabling O state memory-consistent data | |
KR102453192B1 (ko) | 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체 | |
US20040059877A1 (en) | Method and apparatus for implementing cache state as history of read/write shared data | |
JP3245125B2 (ja) | 垂直キャッシュのための擬似精細i−キャッシュ包含性 | |
CN110554975A (zh) | 提供死块预测以用于确定是否在cache设备中对数据高速缓存 | |
US7024520B2 (en) | System and method enabling efficient cache line reuse in a computer system | |
JP5319049B2 (ja) | キャッシュシステム | |
US6397303B1 (en) | Data processing system, cache, and method of cache management including an O state for memory-consistent cache lines | |
JP2004199677A (ja) | キャッシュを動作させるためのシステム及び方法 | |
US11263137B2 (en) | Core-to-core cache stashing and target discovery | |
US6356982B1 (en) | Dynamic mechanism to upgrade o state memory-consistent cache lines | |
US6349368B1 (en) | High performance mechanism to support O state horizontal cache-to-cache transfers | |
US7467260B2 (en) | Method and apparatus to purge remote node cache lines to support hot node replace in a computing system |
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 |