CN113448913A - 用于经由接口执行远程原子操作的系统、装置和方法 - Google Patents
用于经由接口执行远程原子操作的系统、装置和方法 Download PDFInfo
- Publication number
- CN113448913A CN113448913A CN202011478318.2A CN202011478318A CN113448913A CN 113448913 A CN113448913 A CN 113448913A CN 202011478318 A CN202011478318 A CN 202011478318A CN 113448913 A CN113448913 A CN 113448913A
- Authority
- CN
- China
- Prior art keywords
- rao
- request
- data
- destination
- agent
- 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
- 238000000034 method Methods 0.000 title claims description 36
- 230000015654 memory Effects 0.000 claims description 52
- 230000001427 coherent effect Effects 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 14
- 239000003795 chemical substances by application Substances 0.000 description 128
- 238000010586 diagram Methods 0.000 description 31
- 238000004460 liquid liquid chromatography Methods 0.000 description 10
- 239000000872 buffer Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 229910003460 diamond Inorganic materials 0.000 description 3
- 239000010432 diamond Substances 0.000 description 3
- 102100030385 Granzyme B Human genes 0.000 description 2
- 101001009603 Homo sapiens Granzyme B Proteins 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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
- 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/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/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
- 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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,处理器包括至少一个核心和耦合到至少一个核心的高速缓存控制电路。高速缓存控制电路用于:从请求者接收远程原子操作(RAO)请求;向目的地设备发送RAO请求和与RAO请求相关联的数据,其中,目的地设备用于使用该数据和由目的地设备获得的目的地数据来执行RAO,并将RAO的结果存储到目的地位置;以及从目的地设备接收RAO的完成。描述并要求保护其他实施例。
Description
技术领域
实施例涉及基于处理器的系统中的远程原子操作。
背景技术
原子存储器操作是这样的操作:处理器核心在该操作期间可以以其他核心看起来为单个操作的方式读取位置,对位置进行修改并将其写回。多核系统中的原子存储器操作是这样的操作:其不可以被划分为任何更小的部分,或者对于系统中的其他核心来说看起来是单个操作。读取-修改-写入是一类原子存储器操作中的一个,它既读取存储器位置,又向其中写入新的值作为相同的操作的一部分,至少它对于多核系统中的其他核心来说看起来是这样。原子操作在不同的应用集合中流行,包括分组处理、高性能计算和机器学习等等。
一个或多个中央处理单元(CPU)核心可以存在于处理器内,该处理器可以占用多插口系统中的多个插口(socket)中的一个。原子操作的执行可能会遭受效率低下,特别是在多插口系统中的多个插口之中争用相同的存储器地址的情况下。
附图说明
图1是根据实施例的用于执行远程原子操作的系统的框图。
图2是根据实施例的用于执行远程原子操作的多插口系统的框图。
图3是根据实施例的方法的流程图。
图4是根据另一实施例的方法的流程图。
图5是示出根据实施例的用于示例远程原子操作流程的操作的事务流程图。
图6是示出根据另一实施例的用于示例远程原子操作流程的操作的事务流程图。
图7是示出根据又一实施例的用于示例远程原子操作流程的操作的事务流程图。
图8是示出根据又一实施例的用于示例远程原子操作流程的操作的事务流程图。
图9是示出根据又一实施例的用于示例远程原子操作流程的操作的事务流程图。
图10是示出根据又一实施例的用于示例远程原子操作流程的操作的事务流程图。
图11是根据另一实施例的系统的框图。
具体实施方式
在各个实施例中,可以在各种各样的设备中执行远程原子操作(RAO)。如本文所使用的,远程原子操作是在中央处理单元(CPU)外部执行的操作。在本文中更具体地,这种RAO可以在处理器的核心电路的外部执行,例如,在归属代理(home agent)处、高速缓存控制器处、存储器控制器处或其他核心外部的电路处执行。在不同的用例中,执行RAO的目的地代理可以是远程插口、耦合到处理器插口的一致性或非一致性设备、远程存储器等。在本文中的用例中,这些目的地代理自身可以例如在归属代理、加速器设备等中在本地执行远程原子操作。这样,避免了在获得被请求的高速缓存行并将其带回请求代理时产生的开销。实施例使得这样的RAO操作能够被发送到诸如外围组件快速互连(PCIe)设备之类的外部的加载/存储设备以及经由诸如超路径互连(Ultra Path Interconnect)或计算快速链路(CXL)协议之类的高速缓存一致性协议而耦合的目的地代理。另外,实施例使得RAO操作能够被发布给不可缓存的存储器和其他这样的设备。
本文所描述的实施例允许减少原子存储器操作的延时(在被争用的情况下,通过在单个位置处对操作进行排队并就地执行它们)。这些远程原子操作包括对存储器位置的以原子方式的读取-修改-写入操作。此外,由RAO指令执行的存储器存取可以被弱排序,但是可以被构建在更强排序的存储器模型之上。(如本文所使用的,定期的存储器加载和存储具有更强排序的存储器语义,而RAO指令相对于其他RAO和定期的指令具有较弱的存储器语义。这样的弱语义允许更多的存储器交错,并且因此允许更好的性能。)本文所公开的方法因此允许原子操作的延时被隐藏(经由弱排序语义)。
一些RAO允许在存储器子系统内执行计算。这种操作与经典的原子(锁前缀)相反,在经典的原子中,数据被拉取到请求核心中,并且因此在核心之间往复(ping-pong),这在争用中成本极其高昂。在RAO的情况下,数据保持不变,而操作相反被发送到目的地代理(例如,存储器子系统)。另外,不具有任何数据返回的RAO(又称为已发布的RAO或一劳永逸(fire-n-forget))用弱排序语义执行。这进一步降低了核心级别的周期成本,并且还减少了互连上的事务的数量。
对于实施例,可以将用户级的RAO指令提供给通过未缓存的存储器耦合到处理器的设备(例如,PCIe或其他加载/存储设备)。在不同的用例中,这样的设备可能在给定的处理器插口的内部(例如,与多核处理器位于相同的硅管芯上,在相同的封装内,或在不同的封装中)。更进一步,实施例可以用于通过向当前托管高速缓存行的目的地代理发送这样的事务来减少RAO事务的开销。这样,可以改进回写/缓存的存储器事务。这样的目的地代理可以包括,例如,经由CXL或UPI互连耦合到源代理的代理。应当理解的是,实施例适用于完全高速缓存一致的多种多插口架构。
各个实施例在此方面不受限制。不同的用例可以包括以下各项中的任一个:源代理是SoC的CPU内的核心,并且目标代理是SoC内部的设备;源代理是SoC的CPU内的核心,并且目标代理是外部设备;源代理是SoC的CPU内的核心,并且目标代理是外部CPU;源代理是SoC内部的设备,并且目标代理在SoC的CPU内;源代理是外部设备,并且目标代理在SoC的CPU内;源代理是外部设备,并且目标代理是另一个外部设备;源代理是SoC内部的设备,并且目标代理是另一个SoC内部设备;或者源代理是SoC内部的设备,并且目标代理是外部设备。当然,其他用例也是可能的。
现在参考图1,示出的是根据实施例的包括用于执行远程原子操作的多核处理器的系统的框图。如图所示,系统100包括具有核心集群102、高速缓存一致性协议接口(CCPI)112和高速缓存控制电路114的多核处理器101。CCPI 112将核心集群102耦合到高速缓存控制电路114。还示出的是探听过滤器/最后一级高速缓存(SF/LLC)124,其用于由高速缓存控制电路114使用以便为RAO事务提供服务。在一些实施例中,高速缓存控制电路114被称为高速缓冲存储器和归属代理(CHA)。
根据图1的实施例,核心集群102包括电路104,其包括将在执行根据一些实施例的用于远程原子操作的指令中使用的处理器流水线的至少一部分。电路104可以用于例如实现图3-10中的任一个所示的过程。即,电路104包括:用于从代码存储装置中拉取指令的拉取阶段,用于对指令进行解码的解码阶段,用于调度执行的调度阶段,用于执行由指令指定的操作的执行阶段,以及用于使指令退役的退役阶段。
在一些实施例中,核心集群102包括加载/存储单元(LSU)106。如图所示,LSU 106包括缓冲器,这些缓冲器包括加载缓冲器(LB)、存储数据缓冲器(SD)和存储缓冲器(SB)以保持电路104和L1/L2高速缓存108之间的数据传输。在一些实施例中,LB、SD和SB缓冲器的条目中的每一个为64字节宽。
如图所示,核心集群102包括L1/L2高速缓存108。核心集群102中的高速缓存层次关系包含第一级指令高速缓存(L1 ICache)、第一级数据高速缓存(L1 DCache)和第二级(L2)高速缓存。当电路104实现多个逻辑处理器时,它们共享L1 DCache。L2高速缓存由指令和数据共享。在一些实施例中,L1和L2数据高速缓存是非阻塞的,因此可以处理多个同时的高速缓存未命中。
如图所示,核心集群102包括总线接口单元(BIU)110,在操作中,总线接口单元(BIU)110通过以下操作来处理数据和地址的传输:发送地址,从代码存储装置中拉取指令,从端口和存储器中读取数据,以及将数据写入端口和存储器。
根据图1的实施例,CCPI 112在核心集群102和高速缓存控制电路114之间提供了双向数据路径。如图所示,高速缓存控制电路114包括入口116、请求表118、SF/LLC 124、执行流水线122和归属代理120。入口116与CCPI112进行通信并缓冲往返CCPI 112的事务。在一些实施例中,请求表118包括寄存器或静态随机存取存储器,以用于维护存储器请求及其进程。SF/LLC 124在一些实施例中包括探听过滤器,以用于响应于来自其他核心集群的探听请求,以及包括核心集群102中的较低级别的高速缓存的内容的最后一级高速缓存,其可以用于执行RAO事务。换言之,在一些实施例中,在L1/L2高速缓存108中有效的任何高速缓存行也存在于最后一级高速缓存中。注意,实施例可以结合包含的和非包含的高速缓存架构来使用。执行流水线122在一些实施例中通过提供具有减少的延时的附加的整数算术来增强读取-修改-写入功能。在一些实施例中,例如,请求表118维护要添加到值的目的地地址和立即数(常数值),总和然后被写回到目的地地址。
如图1进一步所示,处理器101还可以包括设备145。如图所示,设备145可以经由一致性桥接电路140耦合到CCPI 112,该一致性桥接电路140充当诸如设备145之类的非一致性设备与处理器101的一致性部分之间的接口。在本文中的实施例中,设备145本身可以充当如本文所描述的关于RAO事务的源代理或目的地代理。这样,设备145可以包括至少一个执行电路(例如,微算术逻辑单元(ALU)),以用于例如使用其本地的目的地数据来执行RAO事务。
如进一步所示,设备160经由互连150耦合到多核处理器101。在不同的实施例中,设备160可以是非一致性设备,例如PCIe或其他加载/存储设备(并且在这种情况下,互连150可以是非一致性互连)。在其他实施例中,设备160可以是诸如另一个处理器或另一个一致性设备之类的一致性设备(在这种情况下,互连150可以是一致性互连)。作为非限制性示例,设备160可以是加速器、网络接口电路(NIC)、存储装置或可以例如通过输入/输出接口的方式耦合到处理器插口的任何其他类型的设备。无论如何,设备160可以包括执行电路(例如,微型ALU),以用于执行如本文所描述的RAO操作。
现在参考图2,示出的是根据实施例的用于执行远程原子操作的多插口系统的框图。如图所示,多插口系统200包括:插口0 201,其包括核心202A-M、最后一级高速缓存(LLC)202X以及高速缓存控制电路202;插口1 203,其包括核心204A-N、LLC 204X以及高速缓存控制电路204;插口2 205,其包括核心206A-O、LLC 206X以及高速缓存控制电路206;以及插口3 207,其包括核心208A-P、LLC 208X以及高速缓存控制电路208。应当理解的是,实施例可以与更复杂的高速缓存层次关系一起使用,例如包括4级高速缓存、附加的存储器侧高速缓存、探听过滤器等。另外,实施例可以在具有更高的插口计数的系统和实现基于节点控制器的拓扑的系统等等中使用。RAO事务经由多插口架构的互连的一个或多个链路,使用一个或多个跳从一个插口遍历到另一个插口。
注意,高速缓存控制电路202、204、206和208是诸如包括若干个物理组件的CHA之类的高速缓存控制电路的逻辑表示。类似地,LLC 202X、204X、206X和208X是具有多个组件和电路的最后一级高速缓存电路的逻辑表示,其潜在地被划分为多个分区。
如图所示,根据一些实施例,插口0-3以交叉配置的方式进行连接,从而允许高速缓存控制电路202、204、206和208之间的直接连接。在一些实施例中,插口0-3中的每一个中的高速缓存控制电路进行发现以学习系统的拓扑。应当理解的是,实施例可以在其他互连拓扑(例如,环、网格等)中使用。
在一些实施例中,插口0-3各自设置在印刷电路板上,插口以交叉配置的方式进行连接。在一些实施例中,根据本文所公开的实施例操作的两个或多个处理器被插入插口。如图2所示的多插口系统有时被称为多处理器系统。包括两个插口的多插口系统有时被称为双插口系统。
在各个实施例中,被实现为诸如核心或一致性设备之类的一致性代理(例如,缓存代理)的源设备可以向目的地设备发布RAO事务。在本文中的实施例中,代替将RAO事务的目的地数据操作数拉取到源代理(例如,最后一级高速缓存),将包括操作码和在事务中使用的部分数据的RAO事务携带到目的地数据的位置。在不同的用例中,此目的地位置可以是本地的插口LLC、远程插口归属代理或存储器、或外部设备的高速缓存。此后,目的地代理的执行电路可以执行RAO事务并更新目的地数据元素,从而避免了源与目的地之间的附加的通信的需要。在不同的用例中,包括管芯内互连协议、UPI、PCIe和CXL协议的中间通信协议可以支持如本文所描述的流程。
应当理解的是,在不同的实施例中,可以执行各种不同的RAO操作。作为示例,RAO操作可以包括其中例如通过加法运算或逻辑运算(例如,与(AND)、或(OR)或异或(XOR)运算)的结果的方式来更新存储器的操作。作为附加的示例,RAO操作可以包括比较和交换操作,包括提供加法、递增或递减运算的这样的运算。作为更进一步的示例,RAO操作可以包括ADD运算,其中,目的地数据是用RAO事务的数据有效载荷来更新的。类似地,数据有效载荷可以用于原子逻辑运算(例如,AND、OR或XOR运算)。其他RAO事务可以避免数据有效载荷(例如,原子递增或递减运算)。
现在参考图3,示出的是根据实施例的方法的流程图。如图3所示,方法300是用于执行根据实施例的远程原子操作的方法。图3所示的方法300是从诸如缓存代理之类的全局的高速缓存控制电路的角度来看的;然而,应当理解的是,在图3中执行的各种操作可以由其他组件来执行,并且附加的中间操作可以可选地发生。这样,方法300可以由硬件电路、固件、软件和/或其组合来执行。
如图所示,方法300开始于从请求者代理接收RAO请求开始(框310)。作为一个示例,本地的处理器插口的高速缓存控制器可以从处理器插口的核心或其他设备接收RAO请求。应当理解的是,在一些情况下,此请求可能包括要在RAO中被操作的数据的至少一部分,例如根据数据推送模型。在其他情况下,高速缓存控制器可以使用数据拉取模型来请求要被操作的数据的至少一部分。
无论如何,接下来在菱形框320处,确定了用于请求的目的地数据是否存在于本地的缓存代理中,例如与高速缓存控制器相关联的高速缓冲存储器。如果否,则控制转到框330,其中,RAO请求(以及与该请求相关联的数据的至少一部分)被发送到远程插口(框330)。应当理解的是,此远程插口可以是另一个处理器插口,第一处理器插口通过一致性互连的方式与之耦合。在其他情况下,此远程插口可以是非一致性代理(例如,加载/存储设备)。
应当理解的是,此远程设备、插口或其他远程代理使用所接收的数据以及例如位于远程设备本地的存储器位置中的目的地数据来执行RAO。在执行RAO之后,此存储器位置转而用RAO结果进行更新。
此外,作为执行RAO操作的一部分,远程设备可以将完成发送回高速缓存控制器。因此,如图3所示,在框340处,高速缓存控制器可以从远程代理接收完成。应当理解的是,在RAO请求是未发布(non-posted)的请求的情况下,此完成可以包括更新后的数据。代替已发布的请求,完成可以简单地指示远程设备中的RAO操作的成功的完成。下一个控制转到框370,其中,此完成被发送到请求者代理,该请求者代理可以在未发布的RAO请求的情况下消费数据并采取其他适当的操作,例如基于此完成来清除与此请求相关联的顺序缓冲器的条目。
仍然参考图3,相反,如果在菱形框320处确定了用于请求的目的地数据存在于本地的缓存代理中(例如,存在于耦合到此高速缓存控制器的高速缓存中),则控制转到框350,其中,使用此目的地数据和与请求相关联的其他数据在本地的缓存代理中执行RAO操作。在框360处,RAO结果可以存储在目的地中。最终,控制转到框370,其中,如上面所讨论的,完成被发送到请求者代理。尽管在图3的实施例中以这种高级别示出,许多变化和替代方案是可能的。
现在参考图4,示出的是根据另一实施例的方法的流程图。如图4所示,方法400是用于例如通过高速缓存行的方式在当前托管给定的目的地数据的设备中执行远程原子操作的方法;然而,应当理解的是,图4的各种操作可以由其他组件来执行,并且附加的中间操作可以可选地发生。这样,方法400可以由硬件电路、固件、软件和/或其组合来执行。
如图所示,方法400开始于从目标代理中的远程插口接收RAO请求(框410)。在不同的情况下,此目标代理可以是一致性设备或非一致性设备。在任何情况下,控制转到菱形框420,其中,确定了目的地数据是否存在于设备中。如果否,则控制转到框430,其中,可以从远程插口获得目的地数据。控制接下来转到框440,其中,在设备本身中执行RAO。然后,RAO结果存储在目的地位置中(框450)。最终,在框460处,完成可以被发送到请求RAO事务的执行的远程插口。注意,取决于实施方式和请求类型,此完成可以包括数据(例如,在未发布的RAO请求的情况下)或不包括数据(例如,针对已发布的RAO请求)。应当理解的是,尽管在图4中以这种高级别示出,但是许多变化和替代方案是可能的。
现在参考图5,示出的是示出根据实施例的用于示例远程原子操作流程的操作的事务流程图。如图5所示,事务流程图500示出了在包括以下各项的多个设备之间发生的操作:图5所示的作为核心/设备(通常为核心)的请求者代理510、诸如高速缓存控制器之类的缓存代理520、作为目的地存储器位置的所有者的归属代理530以及作为RAO事务的最终目的地的存储器540。注意,在一些实例中,归属代理530可以包括在远离具有核心510和缓存代理520的另一处理器插口的处理器插口中。
如图所示,事务流程图500开始于核心510向缓存代理520发布RAO请求。假设此请求是针对在诸如LLC之类的本地高速缓存中未命中的目的地地址的。在此实施方式示例中,缓存代理520可以转而向核心/设备510发布写入拉取,以获得要在所见的RAO中用作操作数的数据,当被提供有该数据时,缓存代理520将RAO请求和此数据一起发送到归属代理530。如上面所讨论的,可以在数据推送和数据拉取模型中使用实施例。这样,在其他情况下,核心510可以将RAO请求和数据一起发布。归属代理530可以访问探听过滤器以确定RAO请求的目的地地址是否命中。在此示例中,假设不存在命中。这样,缓存代理530将RAO请求和数据发送到存储器540,存储器540可以在本地执行RAO(例如,在其存储器子系统中存在的执行单元内)。
由于该RAO的本地执行,实现了提高的效率。应当理解的是,RAO结果可以被直接地存储在存储器540中的目的地地址中。另外,如图5进一步所示,完成被发送回请求者核心/设备510(经由归属代理530和缓存代理520)。取决于RAO的类型,这种完成可以携带例如用于未发布的RAO的数据。应当理解的是,尽管在图5的实施例中以这种高级别示出,许多变化和替代方案是可能的。例如,尽管图5的实施例示出了归属代理和缓存代理作为示例,但是其他系统可以在一致性和非一致性的结构和交换机中实现类似的功能。在这样的情况下,例如图5所示的流程可能不一定通过缓存代理或归属代理来进行。
现在参考图6,示出的是示出根据另一实施例的用于示例远程原子操作流程的操作的事务流程图。如图6所示,事务流程图600示出了在包括以下各项的多个设备之间发生的操作:图6所示的作为核心/设备(通常为核心)的请求者代理610、诸如高速缓存控制器之类的缓存代理620、作为目的地存储器位置的所有者的归属代理630以及与存储RAO事务的目的地数据的高速缓冲存储器相关联的缓存代理640。注意,在一些实例中,归属代理630和缓存代理640可以被包括在远离具有核心610和缓存代理620的另一个处理器插口的处理器插口中。
如图所示,事务流程图600开始于核心610向缓存代理620发布RAO请求。假设此请求是针对在本地的高速缓存中未命中的目的地地址的。在此实施方式示例中,缓存代理620可以转而向核心/设备610发布写入拉取,以获得要用作RAO中的操作数的数据。缓存代理620将RAO和此数据一起发送到归属代理630。由于RAO请求的目的地地址在归属代理630的探听过滤器中命中,因此RAO请求和数据被直接地发送到缓存代理640,缓存代理640可以在本地执行RAO(例如,在其存储器子系统中存在的执行单元内)。由于RAO的此本地执行,实现了提高的效率(RAO结果被直接地存储在缓存代理640中)。注意,此RAO结果保留在缓存代理中,并且直到驱逐发生时才被写回存储器。另外,如图6进一步所示,完成被发送回请求者核心/设备610(经由归属代理630和缓存代理620)。如上面所讨论的,取决于RAO的类型,这种完成可以携带数据。应当理解的是,尽管在图6的实施例中以这种高级别示出,许多变化和替代方案是可能的。
在实施例中,加载/存储代理还可以向目的地代理(包括一致性代理)发布RAO事务。在这样的用例中,耦合非一致性加载/存储设备和一致性代理(例如,远程处理器插口)的一致性桥接电路可以用于将加载/存储语义转换为一致性处理流程。在这样的用例的情况下,此一致性桥接电路可以将源于加载/存储的RAO事务转换或转化为要由远程的一致性代理执行的一致性RAO事务。
现在参考图7,示出的是示出根据又一实施例的用于示例远程原子操作流程的操作的事务流程图。如图7所示,事务流程图700示出了在多个设备之间发生的操作,其中,请求者代理710是经由一致性桥接电路720耦合到缓存代理730的加载/存储设备。尽管实施例在此方面不受限制,但是一致性桥接电路720可以被实现为提供一致性代理和非一致性代理之间的互连的接口。在特定的实施例中,一致性桥接电路720可以是内部接口(例如,片上可扩展结构(IOSF)接口或者SoC或其他集成电路的其他可扩展接口)。应当理解的是,具有此拓扑的系统可以包括另外的组件(例如,存储器、归属代理等)。
如图所示,事务流程图700开始于请求者代理710向一致性桥接电路720发布RAO请求。此请求是已发布的请求,并且其包括例如根据数据推送模型要在RAO操作中使用的数据。反过来,一致性桥接电路720向缓存代理730发送RAO请求。根据如图7所示的数据拉取模型,缓存代理730可以发布写入拉取请求以从一致性桥接电路730获得数据。注意,关于本地的高速缓存未命中的这种操作可以遵循诸如以上在图5和图6中讨论的流程。在接收到数据时,缓存代理730可以使得RAO操作被执行(例如,在本地或通过存储器),并且将RAO结果存储在目的地地址处。进一步如图所示,缓存代理730将完成发送回一致性桥接电路720。注意,因为此RAO事务是已发布的事务,所以不存在完成被发送回加载/存储设备710,并且从缓存代理730到一致性桥接电路720的完成不包括数据。
现在参考图8,示出的是示出根据又一实施例的用于示例远程原子操作流程的操作的事务流程图。如图8所示,事务流程图800示出了在多个设备之间发生的操作,其中,请求者代理810是经由一致性桥接电路820耦合到缓存代理830的加载/存储设备。这里的一般操作与图7中的操作相同。然而,这里的RAO请求是未发布的RAO请求。这样,源自缓存代理830的完成包括RAO结果,并且带有数据的完成被返回到请求者代理810。
在实施例中,还可能使加载/存储设备作为RAO操作(并且因此执行RAO操作)的目的地。现在参考图9,示出的是示出根据又一实施例的用于示例远程原子操作流程的操作的事务流程图。如图9所示,事务流程图900示出了在多个设备之间发生的操作,其中,源代理940(其可以是一致性代理)耦合到归属代理930,归属代理930转而经由一致性桥接电路920耦合到加载/存储设备910。注意,这里的加载/存储设备910本身可以响应于已发布的RAO请求和数据的接收而执行RAO操作。并且如图所示,一旦针对已发布的RAO事务建立了全局可见的排序点,一致性桥接电路920就将完成(不具有数据)发布回源代理910。
针对多个非一致性设备(例如,两个加载/存储设备),还可能实现RAO事务。现在参考图10,示出的是示出根据又一实施例的用于示例远程原子操作流程的操作的事务流程图。如图10所示,事务流程图1000示出了在多个加载/存储设备1010、1020之间发生的操作。在此布置中,加载/存储设备1010将带有数据的已发布的RAO事务发送到加载/存储设备1020。响应于此请求,加载/存储设备1020可以执行RAO操作并将RAO结果存储在目的地位置。并且对于加载/存储设备,不存在在设备之间被发送的完成。
实施例可以在许多不同的用例中使用。如本文所描述的用于RAO操作的若干个示例用例包括用于网络处理和生产者/消费者同步应用的计数器/统计。
计数器和统计处理是针对许多应用和系统软件的常见任务。一个示例用例是网络空间中的场景,但是在许多其他域中也存在类似的场景。统计处理尽管是一种简单的操作,但是通常约占带有应用处理的IP堆栈的10%。针对分组处理,不同的层包含大的计数器的集合,它们既对诸如经处理的分组的数量之类的通用流进行计数,又对针对不同的场景处理的字节的数量进行计数,并且提供了广泛的错误计数器。计数器可以以高频率(有时是突发性质的)进行更新,并且一些计数器将会相对争用,而其他计数器则显著地不那么频繁地被接触。通常,这些统计是在一个计算单元(例如,CPU)内处理的。但是随着智能网络接口电路(NIC)的引入,存在用于在CPU和设备之间划分处理的推动。基于不同的流,计数器可以因此根据CPU(例如,慢路径流)以及设备(例如,快路径流)二者进行更新,但是将以一种高效的方式使状态全局可见以用于快速访问。此外,当流的数量较大时,总计数器数据集可能会非常大,并且因此可能不一定适合设备的存储器。根据实施例的RAO可以通过将更新推送到一个位置(例如,CPU)来解决这些问题,并且然后可以在那里高效地进行基于统计的决策。
另一个使用领域是用于生产者/消费者事务。这是在多个应用中出现的经典的问题。作为一个示例,假设生产者在存储器中的已知的位置处写入新数据。消费者读取此数据。同步问题用于确保生产者不会盖写未消费的数据,并且消费者不会读取旧数据。由于需要避免“竞赛”,或者由于可缩放性问题,经典的解决方案都会引起若干开销。实施例可以提供针对多生产者多消费者同步问题的解决方案。
现在参考图11,示出的是根据另一实施例的系统的框图。如图11所示,系统1100是包括多个核心和其他代理的多插口系统。这些核心和代理可以形成多个生产者1110和多个消费者1120中的一些或全部。如图11所示,生产者1110和消费者1120经由队列1130进行通信,生产者1110将数据推送到队列1130上。反过来,消费者1120从队列1130中弹出数据元素。如进一步所示,生产者与消费者之间的交互也是通过令牌计数器1140的方式。对于本文中的实施例,当生产者1110将数据推送到队列1130中时,它可以向令牌计数器1140发布对应的RAO事务。当消费者1120从队列1130中弹出相应的数据元素时,它可以向令牌计数器1140发布比较交换(CMPXCHG)操作,以确定是否消费所弹出的数据。
假设令牌计数器1140和队列指针已经被初始化。生产者1110推送数据,并且一旦全局观察到数据,它就发送已发布的RAO(例如,原子递增)。确保全局观察取决于生产者类型,并且可以包括依赖于已发布的顺序的加载/存储(PCIe)代理以在RAO之前刷新数据;CXL.cache具有了解全局可观察性的语义;并且CPU生产者可以在RAO之前执行存取围栏(fence)。反过来,消费者1120可以用CMPXCHG指令在令牌计数器1140上进行轮询(注意,可以用“快照读取”指令来减少轮询开销)。如果令牌计数器1140不为零,则其执行CMPXCHG指令。如果CMPXCHG是成功的,则消费者1120可以消费数据,否则其不消费。
以下示例涉及另外的实施例。
在一个实施例中,一种处理器包括至少一个核心和耦合到至少一个核心的高速缓存控制电路。高速缓存控制电路用于:接收来自请求者的RAO请求;向目的地设备发送RAO请求和与RAO请求相关联的数据,其中,目的地设备用于使用数据和由目的地设备获得的目的地数据来执行RAO,并且将RAO的结果存储到目的地位置;以及从目的地设备接收RAO的完成。
在示例中,高速缓存控制电路响应于RAO请求而用于执行写入拉取以获得数据。
在示例中,高速缓存控制电路响应于与高速缓存控制电路相关联的高速缓冲存储器中的数据的未命中而用于执行写入拉取。
在示例中,当RAO请求包括未发布的请求时,完成包括结果。
在示例中,当RAO请求包括已发布的请求时,完成不包括结果。
在示例中,目的地设备包括经由CXL互连耦合到处理器的远程设备。
在示例中,远程设备包括归属代理,以用于响应于针对归属代理中的目的地数据的探听过滤器未命中而向存储器发送RAO请求和数据。
在示例中,远程设备包括归属代理,以用于响应于针对归属代理中的目的地数据的探听过滤器命中而向缓存代理发送RAO请求和数据。
在示例中,目的地设备包括经由高速缓存一致性互连耦合到处理器的远程处理器插口。
在示例中,至少一个核心是请求者,并且至少一个核心用于将数据和RAO请求一起发送。
在示例中,处理器进一步包括一个或多个设备,其中,一个或多个设备中的第一非一致性设备包括目的地设备。
在示例中,处理器进一步包括令牌计数器,其中,在将第一数据写入队列之后,第一核心用于向令牌计数器发送RAO请求以使得令牌计数器递增,并且第一设备用于基于令牌计数器的值来消费第一数据。
在另一个示例中,一种方法包括:在源代理和目的地代理之间耦合的一致性桥接电路中,接收RAO请求,该一致性桥接电路用于将一致性事务转化为非一致性事务,并且将非一致性事务转化为一致性事务;从一致性桥接电路向目的地代理发送RAO请求,以使得目的地代理使用存储在由目的地代理拥有的目的地地址中的目的地数据来执行RAO,并且将RAO的结果存储在目的地地址处;以及从目的地代理接收RAO的完成以指示RAO已经完成。
在示例中,该方法进一步包括将包括RAO请求的非一致性请求转化为包括RAO请求的一致性请求,并且经由与目的地地址相关联的缓存代理来向目的地代理发送该一致性请求。
在示例中,该方法进一步包括:向缓存代理发送RAO请求;从缓存代理接收写入拉取请求;以及响应于写入拉取请求而向缓存代理发送数据,以使得缓存代理进一步使用数据来执行RAO。
在示例中,该方法进一步包括向源代理发送带有结果的完成,其中,RAO请求包括未发布的RAO请求。
在示例中,该方法进一步包括:由源代理将第一数据元素推送到队列;在全局观察到第一数据元素之后,向一致性桥接电路发送RAO请求,其中,目的地数据包括令牌计数器的值;以及响应于确定包括令牌计数器的值的目的地数据与第一值匹配而由消费电路消费第一数据元素。
在另一个示例中,包括指令的计算机可读介质用于执行以上示例中的任一个的方法。
在另外的示例中,包括数据的计算机可读介质用于被至少一台机器使用以制造至少一个集成电路用于执行以上示例中的任一个的方法。
在又一个示例中,装置包括用于执行以上示例中的任一个的方法的单元。
在另一个示例中,系统包括SoC和经由至少一个互连耦合到SoC的远程设备。SoC可以包括:至少一个核心;耦合到至少一个核心的一个或多个设备;以及耦合到至少一个核心和一个或多个设备的高速缓存控制电路。高速缓存控制电路用于:接收来自请求者的RAO请求;向远程设备发送RAO请求和与RAO请求相关联的数据,其中,远程设备用于使用数据和目的地数据来执行RAO并且将RAO的结果存储到目的地位置;以及接收RAO的完成。远程设备可以包括用于以下操作的执行电路:接收RAO请求和数据,从目的地位置获得目的地数据,使用数据和目的地数据来执行RAO请求的至少一个操作,以及将结果存储到目的地位置。
在示例中,SoC进一步包括耦合到至少一个核心的一致性桥接电路,请求者包括至少一个核心,并且远程设备包括非一致性设备,一致性桥接电路用于将RAO请求转换为非一致性RAO请求,并且向远程设备发送非一致性RAO请求,并且响应于结果的全局观察而向高速缓存控制电路发送完成。
在示例中,远程设备用于向SoC发送第二RAO请求,以使得SoC使用存储在第二RAO请求中标识的第二目的地位置中的第二数据来执行第二RAO请求的至少一个第二RAO操作,并且将至少一个第二RAO操作的第二结果存储到第二目的地位置。
应当理解的是,以上示例的各个组合是可能的。
注意,在本文中可互换地使用术语“线路”和“电路”。如本文所使用的,这些术语和术语“逻辑”用于单独地或以任何组合来指代模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其他类型的物理硬件组件。实施例可以在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置成执行本文所描述的各个方法和技术。当然,本发明的范围不限于通信设备,并且相反其他实施例可以涉及用于处理指令的其他类型的装置或一个或多个机器可读介质,这些介质包括响应于在计算设备上执行而使得该设备执行本文所描述的方法和技术的一个或多个的指令。
实施例可以用代码来实现,并且可以被存储在其上存储有指令的非暂时性存储介质上,这些指令可以用于对系统进行编程以执行指令。实施例也可以用数据来实现,并且可以存储在非暂时性存储介质上,该非暂时性存储介质如果由至少一台机器使用,则使得至少一台机器制造至少一个集成电路来执行一个或多个操作。更进一步的实施例可以在计算机可读存储介质中实现,该计算机可读存储介质包括当被制造为SoC或其他处理器时用于配置SoC或其他处理器执行一个或多个操作的信息。存储介质可以包括但不限于任何类型的磁盘,包括:软盘、光盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)以及磁光盘、诸如只读存储器(ROM)之类的半导体设备、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM)、磁卡或光卡、或适合用于存储电子指令的任何其他类型的介质。
尽管已经关于有限数量的实施例描述了本发明,但是本领域技术人员将理解由此做出的许多修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这样的修改和变化。
Claims (25)
1.一种用于处理远程原子操作的处理器,包括:
至少一个核心;以及
高速缓存控制电路,其耦合到所述至少一个核心,其中,所述高速缓存控制电路用于:
接收来自请求者的远程原子操作(RAO)请求;
向目的地设备发送所述RAO请求和与所述RAO请求相关联的数据,其中,所述目的地设备用于使用所述数据和由所述目的地设备获得的目的地数据来执行RAO,并且将所述RAO的结果存储到目的地位置;以及
从所述目的地设备接收所述RAO的完成。
2.根据权利要求1所述的处理器,其中,所述高速缓存控制电路响应于所述RAO请求而用于执行写入拉取以获得所述数据。
3.根据权利要求2所述的处理器,其中,所述高速缓存控制电路用于响应于与所述高速缓存控制电路相关联的高速缓冲存储器中的所述数据的未命中而用于执行所述写入拉取。
4.根据权利要求1所述的处理器,其中,当所述RAO请求包括未发布的请求时,所述完成包括所述结果。
5.根据权利要求1所述的处理器,其中,当所述RAO请求包括已发布的请求时,所述完成不包括所述结果。
6.根据权利要求1所述的处理器,其中,所述目的地设备包括经由计算快速链路(CXL)互连耦合到所述处理器的远程设备。
7.根据权利要求6所述的处理器,其中,所述远程设备包括归属代理,以用于响应于针对所述归属代理中的所述目的地数据的探听过滤器未命中而向存储器发送所述RAO请求和所述数据。
8.根据权利要求6所述的处理器,其中,所述远程设备包括归属代理,以用于响应于针对所述归属代理中的所述目的地数据的探听过滤器命中而向缓存代理发送所述RAO请求和所述数据。
9.根据权利要求1所述的处理器,其中,所述目的地设备包括经由高速缓存一致性互连耦合到所述处理器的远程处理器插口。
10.根据权利要求1所述的处理器,其中,所述至少一个核心是所述请求者,并且所述至少一个核心用于将所述数据和所述RAO请求一起发送。
11.根据权利要求1所述的处理器,进一步包括一个或多个设备,其中,所述一个或多个设备中的第一非一致性设备包括所述目的地设备。
12.根据权利要求1所述的处理器,进一步包括令牌计数器,其中,在将第一数据写入队列之后,第一核心用于向所述令牌计数器发送所述RAO请求以使得所述令牌计数器递增,并且第一设备用于基于所述令牌计数器的值来消费所述第一数据。
13.一种用于处理远程原子操作的方法,包括:
在源代理和目的地代理之间耦合的一致性桥接电路中,接收远程原子操作(RAO)请求,所述一致性桥接电路用于将一致性事务转化为非一致性事务,并且将非一致性事务转化为一致性事务;
从所述一致性桥接电路向所述目的地代理发送所述RAO请求,以使得所述目的地代理使用存储在由所述目的地代理拥有的目的地地址中的目的地数据来执行所述RAO,并且将所述RAO的结果存储在所述目的地地址处;以及
从所述目的地代理接收所述RAO的完成以指示所述RAO已经完成。
14.根据权利要求13所述的方法,进一步包括:将包括所述RAO请求的非一致性请求转化为包括所述RAO请求的一致性请求,并且经由与所述目的地地址相关联的缓存代理来向所述目的地代理发送所述一致性请求。
15.根据权利要求14所述的方法,进一步包括:
向所述缓存代理发送所述RAO请求;
从所述缓存代理接收写入拉取请求;以及
响应于所述写入拉取请求而向所述缓存代理发送数据,以使得所述缓存代理进一步使用数据来执行所述RAO。
16.根据权利要求13所述的方法,进一步包括:向所述源代理发送带有所述结果的所述完成,其中,所述RAO请求包括未发布的RAO请求。
17.根据权利要求13所述的方法,进一步包括:
由所述源代理将第一数据元素推送到队列;
在全局观察到所述第一数据元素之后,向所述一致性桥接电路发送所述RAO请求,其中,所述目的地数据包括令牌计数器的值;以及
响应于确定包括所述令牌计数器的值的所述目的地数据与第一值匹配而由消费电路消费所述第一数据元素。
18.一种计算机可读存储介质,包括计算机可读指令,当所述计算机可读指令被执行时,用于实现根据权利要求13至17中的任一项所述的方法。
19.一种用于处理远程原子操作的系统,包括:
片上系统(SoC),其包括:
至少一个核心;
耦合到所述至少一个核心的一个或多个设备;以及
高速缓存控制电路,其耦合到所述至少一个核心和所述一个或多个设备,其中,所述高速缓存控制电路用于:
接收来自请求者的远程原子操作(RAO)请求;
向远程设备发送所述RAO请求和与所述RAO请求相关联的数据,其中,所述远程设备用于使用所述数据和目的地数据来执行所述RAO并且将所述RAO的结果存储到目的地位置;以及
接收所述RAO的完成;以及
经由至少一个互连耦合到所述SoC的所述远程设备,其中,所述远程设备包括用于以下操作的执行电路:接收所述RAO请求和所述数据,从所述目的地位置获得所述目的地数据,使用所述数据和所述目的地数据来执行所述RAO请求的至少一个操作,以及将所述结果存储到所述目的地位置。
20.根据权利要求18所述的系统,其中,所述SoC进一步包括耦合到所述至少一个核心的一致性桥接电路,所述请求者包括所述至少一个核心,并且所述远程设备包括非一致性设备,所述一致性桥接电路用于将所述RAO请求转换为非一致性RAO请求,并且向所述远程设备发送所述非一致性RAO请求,并且响应于对所述结果的全局观察而向所述高速缓存控制电路发送所述完成。
21.根据权利要求18所述的系统,其中,所述远程设备用于向所述SoC发送第二RAO请求,以使得所述SoC使用存储在所述第二RAO请求中标识的第二目的地位置中的第二数据来执行所述第二RAO请求的至少一个第二RAO操作,并且将所述至少一个第二RAO操作的第二结果存储到所述第二目的地位置。
22.一种用于处理远程原子操作的装置,包括:
至少一个核心单元;以及
耦合到所述至少一个核心单元的高速缓存控制单元,其中,所述高速缓存控制单元用于:
从请求者接收远程原子操作(RAO)请求;
向目的地设备发送所述RAO请求和与所述RAO请求相关联的数据,其中,所述目的地设备用于使用所述数据和由所述目的地设备获得的所述目的地数据来执行所述RAO,并且将所述RAO的结果存储到目的地位置;以及
从所述目的地设备接收所述RAO的完成。
23.根据权利要求22所述的装置,其中,所述高速缓存控制单元响应于所述RAO请求而用于执行写入拉取以获得所述数据。
24.根据权利要求22所述的装置,其中,所述高速缓存控制单元响应于针对与所述高速缓存控制单元相关联的高速缓冲存储器中的所述数据的未命中而用于执行所述写入拉取。
25.根据权利要求22所述的装置,其中,当所述RAO请求包括未发布的请求时,所述完成包括所述结果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/830,468 | 2020-03-26 | ||
US16/830,468 US20200242042A1 (en) | 2020-03-26 | 2020-03-26 | System, Apparatus and Method for Performing a Remote Atomic Operation Via an Interface |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448913A true CN113448913A (zh) | 2021-09-28 |
Family
ID=71732563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011478318.2A Pending CN113448913A (zh) | 2020-03-26 | 2020-12-15 | 用于经由接口执行远程原子操作的系统、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200242042A1 (zh) |
EP (1) | EP3885918B1 (zh) |
CN (1) | CN113448913A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11550617B2 (en) * | 2019-10-16 | 2023-01-10 | Intel Corporation | Disaggregated rack mount storage side transaction support |
US11467962B2 (en) * | 2020-09-02 | 2022-10-11 | SiFive, Inc. | Method for executing atomic memory operations when contested |
US20220197726A1 (en) * | 2020-12-22 | 2022-06-23 | Intel Corporation | Inter-node messaging controller |
US20220206945A1 (en) * | 2020-12-25 | 2022-06-30 | Intel Corporation | Adaptive remote atomics |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5960179A (en) * | 1996-07-01 | 1999-09-28 | Sun Microsystems, Inc. | Method and apparatus extending coherence domain beyond a computer system bus |
US8533436B2 (en) * | 2009-06-26 | 2013-09-10 | Intel Corporation | Adaptively handling remote atomic execution based upon contention prediction |
US8352656B2 (en) * | 2010-04-08 | 2013-01-08 | Intel Corporation | Handling atomic operations for a non-coherent device |
US9405687B2 (en) * | 2013-11-04 | 2016-08-02 | Intel Corporation | Method, apparatus and system for handling cache misses in a processor |
US9250914B2 (en) * | 2013-12-20 | 2016-02-02 | Intel Corporation | Method and apparatus for selecting cache locality for atomic operations |
CN105094840B (zh) * | 2015-08-14 | 2019-01-29 | 浪潮(北京)电子信息产业有限公司 | 一种基于缓存一致性原理的原子操作实现方法及装置 |
US10509738B2 (en) * | 2016-07-01 | 2019-12-17 | Intel Corporation | Remote memory operations |
US10296459B1 (en) * | 2017-12-29 | 2019-05-21 | Intel Corporation | Remote atomic operations in multi-socket systems |
-
2020
- 2020-03-26 US US16/830,468 patent/US20200242042A1/en not_active Abandoned
- 2020-11-16 EP EP20207683.2A patent/EP3885918B1/en active Active
- 2020-12-15 CN CN202011478318.2A patent/CN113448913A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3885918B1 (en) | 2023-08-23 |
EP3885918A1 (en) | 2021-09-29 |
US20200242042A1 (en) | 2020-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6969853B2 (ja) | ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ | |
EP3885918B1 (en) | System, apparatus and method for performing a remote atomic operation via an interface | |
US6085263A (en) | Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor | |
KR100465583B1 (ko) | 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법 | |
US8352656B2 (en) | Handling atomic operations for a non-coherent device | |
US7475198B2 (en) | Asynchronous symmetric multiprocessing | |
JP4106016B2 (ja) | 入出力(i/o)通信のハードウェア・アクセラレーションを実現するデータ処理システム | |
US20030145136A1 (en) | Method and apparatus for implementing a relaxed ordering model in a computer system | |
US8904045B2 (en) | Opportunistic improvement of MMIO request handling based on target reporting of space requirements | |
JPH10187645A (ja) | プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム | |
US20080229009A1 (en) | Systems and methods for pushing data | |
Petrot et al. | On cache coherency and memory consistency issues in NoC based shared memory multiprocessor SoC architectures | |
WO2023124304A1 (zh) | 芯片的缓存系统、数据处理方法、设备、存储介质及芯片 | |
EP4124963A1 (en) | System, apparatus and methods for handling consistent memory transactions according to a cxl protocol | |
EP1376368B1 (en) | Mechanism for maintaining cache consistency in computer systems | |
US20070073977A1 (en) | Early global observation point for a uniprocessor system | |
US8380935B2 (en) | Atomic memory operation cache protocol with opportunistic combining | |
US7360008B2 (en) | Enforcing global ordering through a caching bridge in a multicore multiprocessor system | |
van den Brand et al. | Streaming consistency: a model for efficient MPSoC design | |
US7930459B2 (en) | Coherent input output device | |
Lee et al. | SDM: Sharing-Enabled Disaggregated Memory System with Cache Coherent Compute Express Link | |
Kornaros | RSMCC: Enabling Ring-based Software Managed Cache-Coherent Embedded SoCs | |
Tsaliagos | Design and Implementation of a Directory based Cache Coherence Protocol | |
CN118519924A (zh) | 一种缓存控制方法、装置、电子设备及可读存储介质 | |
CN118633075A (zh) | 一种处理请求的方法、装置及系统 |
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 |