CN117546149A - 用于执行共享存储器操作的系统、装置和方法 - Google Patents
用于执行共享存储器操作的系统、装置和方法 Download PDFInfo
- Publication number
- CN117546149A CN117546149A CN202280044315.9A CN202280044315A CN117546149A CN 117546149 A CN117546149 A CN 117546149A CN 202280044315 A CN202280044315 A CN 202280044315A CN 117546149 A CN117546149 A CN 117546149A
- Authority
- CN
- China
- Prior art keywords
- atomic
- memory location
- memory
- control circuitry
- entry
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 286
- 238000000034 method Methods 0.000 title claims description 51
- 230000004044 response Effects 0.000 claims abstract description 28
- 230000006870 function Effects 0.000 claims description 12
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 231100000572 poisoning Toxicity 0.000 description 1
- 230000000607 poisoning effect Effects 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 231100000331 toxic Toxicity 0.000 description 1
- 230000002588 toxic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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/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/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0857—Overlapped cache accessing, e.g. pipeline by multiple requestors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
-
- 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
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,一种用于存储器访问的装置可以包括:存储器,其包括至少一个原子存储器区域;以及控制电路,其耦合到所述存储器。所述控制电路可以用于:对于多个提交队列中的每个提交队列,识别提交队列的第一条目中指定的原子存储器位置,其中每个提交队列用于存储来自不同请求者的访问请求;确定原子存储器位置是否包括现有请求者信息;以及响应于确定原子存储器位置不包括现有请求者信息,至少部分地基于提交队列的第一条目来对于原子存储器位置执行原子操作。描述并要求保护其他实施例。
Description
技术领域
实施例涉及访问计算环境中的存储器。
背景技术
现代计算机系统可以包括任何数量的部件,例如中央处理单元(centralprocessing unit,CPU)、存储器、芯片组和/或通过互连(例如计算机总线、网络等)耦合在一起的许多其他设备。互连可以在计算机内部的设备或部件之间以及在计算机之间传输数据。例如,互连可以用于从存储器读取数据元素,并且将该数据元素提供给处理器。
附图说明
图1是根据实施例的示例系统的框图。
图2是根据实施例的示例系统的框图。
图3A是根据一个或多个实施例的示例方法的流程图。
图3B是根据一个或多个实施例的示例方法的流程图。
图4是根据实施例的示例系统的框图。
图5是根据实施例的示例系统的框图。
图6是根据实施例的示例系统的框图。
图7是根据实施例的示例系统的框图。
图8是根据实施例的示例系统的框图。
图9是根据实施例的示例系统的框图。
具体实施方式
一些计算系统可以实现提供动态添加诸如存储器、加速器等的部件的能力的互连协议。例如,一些系统可以根据计算快速链路(Compute Express Link,CXL)规范(诸如CXL1.1规范(或CXL规范的任何未来版本、修改、变化或替代))来实现互连和交换机。可以实现CXL规范的示例设备是交换机设备,其可以提供将多个主机连接到多个存储器设备的能力。CXL规范可以允许使用多个一致性域,这些一致性域可以对诸如加速器和存储器设备之类的多个资源进行分组。主机服务器(本文中也称为“主机”)可以包括一个或多个独立的虚拟层次体系(virtual hierarchies,VH)。任何两个主机都不能共享虚拟层次体系。
在一些情况下,可能需要跨独立主机共享存储器。此外,可能需要在共享存储器中实现原子访问。如本文所使用的,术语“原子访问”指的是在单个步骤中完成的访问(即,相对于其他处理线程)。交换机设备可以知道多个VH。然而,属于一个VH的访问可能对另一VH不可见。用于协调跨多个VH的原子访问的传统方法可能涉及使用联网语义,这可能导致相对较高的等待时间。因此,使用传统方法可能会导致一些系统中的性能相对较差。
在本文描述的各种实施例中,存储器设备的控制电路可以包括用于使用加载-存储语义来执行存储器共享和原子访问的电路。在一些实施例中,控制电路可以对多个一致性域和多个存储器区域执行远程原子操作。例如,控制电路可以访问在原子存储器位置中存储操作请求的多个提交队列。此外,控制电路可以基于原子存储器位置的当前所有权来确定是否执行所请求的操作。另外,在一些实施例中,控制电路可以使用一个或多个目录结构来协调跨多个一致性域的共享存储器的缓存一致性。如果一个或多个请求由于一致性冲突而无法完成,则控制电路可以发出返回无效命令以导致当前所有权的释放,并且可以协调(一个或多个)待决请求的完成。以这种方式,一些实施例可以使用加载-存储语义来提供跨多个设备和域的存储器共享和原子。因此,可以以相对低的等待时间和/或以相对高的带宽来执行共享和原子。
图1——示例系统
现在参考图1,示出了根据一个或多个实施例的示例系统100的框图。系统100可以包括耦合多个主机131-1、130-2、130-3、130-n(本文中也称为“主机130”)的交换机120。交换机120还可以耦合到多个设备110-1、110-2、110-3、110-x(本文也称为“设备110”)。每个主机130可以包括对应于不同缓存一致性域的一个或多个虚拟层次体系。在一些实施例中,设备110、交换机120和主机130可以根据(一个或多个)计算快速链路(Compute ExpressLink,CXL)协议来操作。
在一些实施例中,每个设备110可以是可以包括任何数量的存储器区域(例如,定义的分区、存储器范围等)的存储器设备(例如,类型3CXL存储器扩展设备)。如图所示,设备D1 110-1可以包括分配给主机H1 130-1和主机H3 130-3的存储器区域,并且设备D2 110-2可以包括分配给主机H2 130-2的存储器区域。此外,设备D3 110-3可以包括分配给主机H2130-2的存储器区域,并且还可以包括被指定为共享存储器的区域。设备Dx 110-x可以包括分配给主机Hn 130-n的存储器区域,并且还可以包括被指定为原子存储器的区域。设备110中包括的存储器可以用任何(一个或多个)类型的计算机存储器(例如,动态随机存取存储器(dynamic random-access memory,DRAM)、静态随机存取存储器(static random-accessmemory,SRAM)、非易失性存储器(non-volatile memory,NVM)、DRAM和NVM的组合等)来实现。
在一些实施例中,共享存储器区域(例如,包括在设备D3 110-3中)可以由使用缓存一致性状态的一组特定的主机130访问。例如,可以使用修改的、独占的、共享的和无效的状态来维持共享存储器区域的一致性。共享存储器区域可以由共享该区域的每个主机130(或者其中的VH)访问,但受到每个主机130(或者其中的VH)的访问权限的限制。例如,主机H1 130-1可以仅具有对共享存储器区域的读访问,而主机H2 130-2可以具有对共享存储器区域的读和写访问。此外,在一些实施例中,原子存储器(例如,包括在设备Dx 110-x中)可以由一组特定的主机130使用必须在单个步骤中完成的原子操作来访问。
在一些实施例中,系统100可以实现原子存储器逻辑(例如,硬件和/或软件)以对多个一致性域和多个存储器区域执行远程原子操作。设备110可以包括用于有权访问该设备110中托管的原子存储器区域的每个主机130(或其中的VH)的单独的提交队列。在一些实施例中,主机130可以向设备110上的其分配的提交队列提交访问请求。设备110可以读取提交队列中的请求,然后在原子存储器的要求下确定并执行适当的动作。此外,在一些实施例中,系统100可以实现共享存储器逻辑来执行多个主机130和设备110的存储器共享。设备110可以使用一个或多个目录结构来协调跨多个一致性域的缓存一致性。如果一个或多个请求由于一致性冲突而无法完成,则设备110可以发出返回无效命令以引起当前所有权的释放,并且可以协调(一个或多个)待决请求的完成。因此,系统100可以使用加载-存储语义来提供存储器共享和原子访问。下面参考图2-5进一步描述系统100的存储器共享和原子访问功能。
应注意,虽然本文结合计算快速链路(Compute Express Link,CXL)规范描述了一些示例,但实施例不限于此。例如,预期各种实施例可用于其他一致互连技术,例如IBMXBus协议、Nvidia NVLink协议、AMD Infinity Fabric协议、加速器缓存一致互连(cachecoherent interconnect for accelerators,CCIX)协议或一致加速器处理器接口(coherent accelerator processor interface,OpenCAPI)。
图2——示例系统
现在参考图2,示出了根据一个或多个实施例的用于原子存储器访问的示例系统200。系统200可以对应于系统100的代表性部分,并且可以包括设备110、交换机120和主机130(上面参考图1讨论)。主机130可以包括处理器132和存储器134。处理器132可以是硬件处理设备(例如,中央处理单元(central processing unit,CPU)、片上系统(System on aChip,SoC)等),并且可以包括一个或多个处理引擎(未显示)。存储器134可以包括任何类型的计算机存储器(例如,动态随机存取存储器(dynamic random-access memory,DRAM)、静态随机存取存储器(static random-access memory,SRAM)、非易失性存储器(non-volatile memory,NVM)、DRAM和NVM的组合等)。
设备110可以包括控制电路112,控制电路112可以以硬件(例如,微处理器、微控制器、可编程集成电路、可编程门阵列、数字信号处理器等)和机器可读指令(软件和/或固件)的方式实现。在一些实施例中,控制电路112可以包括原子存储器电路114以跨多个一致性域和多个存储器区域执行远程原子操作。下面参考图3A-3B讨论用于执行原子操作的示例方法。
如图2所示,设备110可以包括被指定或保留用作原子存储器的(一个或多个)存储器区域。此外,设备110可以包括用作入队区域205的(一个或多个)存储器区域。在一些实施例中,入队区域205可以包括用于可以访问设备110的原子存储器的每个主机130(例如,图1中所示的主机H1-Hn)的提交队列(submission queue,SQ)210。如图2所示,每个提交队列210可以包括多个SQ条目215。在一些实施例中,当发起者(例如,主机130、设备110、VH等)使用延迟存储器写入(delayed memory write,DMWr)语义提交访问请求时,SQ条目215可以被生成。
在一些实施例中,每个SQ条目215可以表示对设备110的特定原子存储器位置的特定访问请求,并且因此可以包括多个字段来存储与对应请求相关联的数据。例如,SQ条目215可以包括用于存储与请求发起者(例如,主机130)相关联的数据的字段,例如虚拟层次体系标识符(“virtual hierarchy identifier,VHID”)、总线号、设备号、功能号、进程地址空间标识符(process address space identifier,PASID)等。此外,SQ条目215可以包括用于存储所请求的原子存储器位置(例如,缓存线)的虚拟地址(virtual address,VA)、与所请求的原子操作相关联的命令和数据以及请求的当前状态的字段。在一些实施例中,请求可以由入口端口(例如,连接到发起者主机130)上的交换机120(例如,CXL交换机)预先添加VHID。所请求的原子存储器位置的虚拟地址可能与其设备物理地址不同。例如,每个请求者(例如,主机或VH)可以将不同的虚拟地址分配给相同的原子存储器位置。
在一个或多个实施例中,提交队列210可以被实现为SQ条目215的双链表,其中每个SQ条目215链接到前一SQ条目215和后一SQ条目215。因此,在这样的实施例中,SQ条目215可以包括用于存储提交队列210中的前一条目215的标识符以及提交队列210中的后一条目215的标识符的字段。
在一些实施例中,存储器134可以存储完成队列(completion queue,CQ)220以存储每个被授权访问原子存储器的通知。因此,在这样的实施例中,SQ条目215可以包括用于存储一旦发起者被给予对原子区域的访问权则设备110应该发布到的完成队列的地址的字段,以及要发布到完成队列的值。
在一个或多个实施例中,当请求者被授权访问特定原子存储器位置时,可以执行对原子存储器位置的写入以存储标识该请求者的信息字段(本文也称为“请求者信息”)。例如,所存储的请求者信息字段可以包括虚拟层次体系标识符(“virtual hierarchyidentifier,VHID”)、总线标识符、设备标识符、功能标识符、请求数据等等。随后,当释放原子存储器位置的所有权时,可以删除或覆盖所存储的请求者信息字段(例如,通过空值或零)。
图3A——执行原子操作的示例方法
现在参考图3A,示出了根据一个或多个实施例的用于执行远程原子操作的方法300的流程图。在各种实施例中,方法300可以由处理逻辑(例如,图2所示的原子存储器电路114)执行,处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等),软件(例如,在处理设备上运行的指令)或其组合。在固件或软件实施例中,方法300可以通过存储在非暂时性机器可读介质(诸如光学、半导体或磁存储设备)中的计算机执行的指令来实现。机器可读介质可以存储数据,如果该数据被至少一个机器使用,则使得该至少一个机器制造至少一个集成电路以执行一种方法。为了说明的目的,方法300中涉及的细节可以在下面参考图1-2进行描述,图1-2示出了根据一个或多个实施例的示例。然而,本文讨论的各种实施例的范围不限于此。
框310可以包括接收对原子存储器位置的访问请求。框320可以包括基于访问请求在提交队列中创建新条目。框330可以包括将虚拟原子地址转换为物理原子地址。例如,参考图1-2,特定主机130可以请求访问设备110中的原子存储器位置。主机130可以通过在与该特定主机130相关联的设备110的提交队列210中写入SQ条目215来发出访问请求。在一些示例中,写入SQ条目215可以涉及向设备110的原子存储器电路114传送延迟存储器写入(delayed memory write,DMWr)请求。原子存储器电路114可以确定提交队列210中是否有足够的空间来添加新的SQ条目215。如果是,则原子存储器电路114可以将新的SQ条目215添加到提交队列210,并且可以向请求者(即,主机130)发送成功通知。在一些实施例中,原子存储器电路114可以将新的SQ条目215添加到形成提交队列210的双向链接的尾端,并且可以相应地更新新SQ条目215的先前条目和后续条目字段。此外,原子存储器电路114可以将请求中指定的虚拟原子地址(即,识别所请求的原子存储器位置)转换成设备物理原子地址。虚拟存储器地址可以是请求者(例如,主机或VH)内部使用的地址,并且对于每个请求者来说可以是不同的。在一些实施例中,原子存储器电路114然后可以在至少一些后续动作期间(例如,在图3A中所示的框340-374中的一些或全部期间)从提交队列210(例如,从双向链表)移除SQ条目215。
再次参考图3A,判定框340可以包括确定接收到的请求是否要释放当前保持。例如,参考图1-2,原子存储器电路114可以确定SQ条目215中的完成者地址是否是指示释放原子存储器的现有保持的请求的值(例如,“0”)。在另一示例中,原子存储器电路114可以确定在所接收的请求中是否设置了专用位以指示所请求的原子存储器的现有保持的释放。在一些实施例中,可以在信号量元素中实现保持。
再次参考图3A,如果在判定框340处确定接收到的请求是要释放当前保持(“是”),则方法300可以在判定框370处继续,包括确定当前保持是否由请求者拥有。如果是,则方法300可以在框372处继续,包括移除当前保持。否则,如果确定当前保持不由请求者拥有,则方法300可以在框374处继续,包括引发错误。在框372或框374之后,可以完成方法300。例如,参考图1-2,原子存储器电路114可以确定存储在所请求的原子存储器位置中的请求者信息字段是否与SQ条目215中包括的请求者信息字段匹配。请求者信息字段可以包括SQ条目215中包括的虚拟层次体系标识符(“virtual hierarchy identifier,VHID”)、总线号、设备号、功能号和数据。如果两组请求者信息字段匹配,则可以确定请求者是当前保持的有效所有者,并且因此原子存储器电路114可以从原子存储器中移除当前保持(例如,可供访问)。否则,如果两组请求者信息字段不匹配,则可以确定请求者不是当前保持的有效所有者,并且因此原子存储器电路114可以拒绝该请求。此外,原子存储器电路114可以使得错误被记录,并且可以向负责实体(例如,结构管理器)通知所记录的错误。在一些实施例中,在移除当前保持或记录错误之后,原子存储器电路114可以将SQ条目215释放到空闲列表。
再次参考图3A,如果在判定框340处确定所接收的请求不是要释放当前保持(“否”),则方法300可以在判定框350处继续,包括确定所请求的原子地址上是否存在当前保持。如果是,则方法300可以在框355处继续,包括将该条目放置在提交队列的尾部。否则,如果确定不存在对所请求的原子地址的当前保持,则方法300可以在框360处继续,包括授予每个请求的保持。此外,框365可以包括向请求者通知所授予的保持。在框355或框365之后,可以完成方法300。
例如,参考图1-2,原子存储器电路114可以确定所请求的原子存储器位置是否包括有效的请求者信息字段(例如,VHID、总线号、设备号、功能号、数据)。如果所请求的原子存储器位置包括有效的请求者信息字段,则可以确定当前保持属于另一请求者,并且原子存储器电路114可以将SQ条目215插入到提交队列210的尾端。否则,如果所请求的原子存储器不包括有效的请求者信息字段(例如,包括空值或零值),则可以确定所请求的原子存储器上没有当前保持,并且因此原子存储器电路114可以授予请求(例如,通过执行原子操作并向请求者授予对原子存储器的保持)。此外,原子存储器电路114可以更新存储在原子存储器位置中的请求者信息字段以包括SQ条目215的对应字段的值(例如,VHID、总线号、设备号、功能号、PASID)和相关联的原子操作的值(例如命令和数据值)。原子存储器电路114然后可以调度对完成队列220的直接存储器访问(direct memory access,DMA)写入(例如,基于SQ条目215中提供的CQ地址),其可以包括由执行原子操作产生的任何数据。在一些实施例中,原子存储器电路114可以更新所请求的原子存储器中的状态字段和指针字段(例如,下一个指针可以被设置为空(NULL)),并且可以将SQ条目215释放到空闲列表。
图3B——执行原子操作的示例方法
现在参考图3B,示出了根据一个或多个实施例的用于执行远程原子操作的方法380的流程图。在各种实施例中,方法380可以由处理逻辑(例如,图2所示的原子存储器电路114)执行,处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合。在固件或软件实施例中,方法300可以通过存储在非暂时性机器可读介质(诸如光学、半导体或磁存储设备)中的计算机执行的指令来实现。机器可读介质可以存储数据,如果该数据被至少一台机器使用,则使得该至少一台机器制造至少一个集成电路以执行一种方法。为了说明的目的,方法380中涉及的细节可以在下面参考图1-2进行描述,图1-2示出了根据一个或多个实施例的示例。然而,本文讨论的各种实施例的范围不限于此。
如图3B所示,框385可以包括对于多个提交队列中的每个提交队列,识别在提交队列的第一条目中指定的原子存储器位置,其中每个提交队列用于存储来自不同请求者的访问请求。框390可以包括确定原子存储器位置是否包括现有请求者信息。框395可以包括:响应于确定原子存储器位置不包括现有请求者信息,基于提交队列的第一条目来对于原子存储器位置执行原子操作。在框395之后,可以完成方法380。
例如,参考图1-2,原子存储器电路114可以访问读取包括在特定提交队列210中的第一SQ条目215(例如,在SQ 210的头部或最高优先级位置处的SQ条目215),并且可以从第一SQ条目215中读取所请求的原子存储器位置。原子存储器电路114可以确定所请求的原子存储器位置已经包括存储的请求者信息字段(例如,VHID、总线号、设备号、功能号和数据字段)。如果是这样,原子存储器电路114可以确定所请求的原子存储器位置正在由另一请求者用于原子操作(即,如由第一SQ条目215中的现有请求者信息所标识的)。否则,所请求的原子存储器位置不包括存储的请求者信息字段,则原子存储器电路114可以确定所请求的原子存储器位置当前没有用于原子操作。因此,原子存储器电路114可以执行在第一SQ条目215中指定的原子操作,包括将原子存储器位置的所有权授予与第一SQ条目215相关联的请求者。
在一个或多个实施例中,方法300和/或380可被扩展以允许将对目的地地址执行的通用原子操作。此类操作可以由应用程序接口(application programinterface,API)提供。这样的操作或命令可以允许通过使用共享原子存储器进行一般通信或共享计算。例如,这些操作可以包括使用诸如相同源信息(例如,使用VHID、PASID)、操作码(“opcode”)(例如,定义诸如最小、最大、加、按位或、按位异或等的操作)、数据类型(例如,8位整数、16位整数、32位整数、32位浮点数、64位浮点数等)、操作对象(例如,与数据类型匹配的大小)、所需的完成(例如,设置为指示是否需要数据完成消息的比特)、以及完成队列地址的字段。
图4——示例系统
现在参考图4,示出了根据一个或多个实施例的用于原子存储器访问的示例系统400。示例系统400在一些方面可以类似于示例系统200(上面参考图2讨论的)。然而,在示例系统400中,提交和完成队列可以被映射到每个主机(或VH)的本地存储器空间。如图4所示,在示例系统400中,提交队列210可以被包括在主机130的存储器134中。此外,设备110的入队区域205可以包括每个主机130的提交队列210的子集240(例如,最近的条目215)。例如,主机H1的SQ子集240可以包括来自主机H1的提交队列210的SQ条目215的子集。在另一示例中,SQ子集240可以仅包括来自提交队列210的最近的SQ条目215、指向最近的SQ条目215的指针等等。在一些实施例中,每个主机130中的本地DMA引擎可以检测其存储器134内的提交队列210中的新条目215,并且作为响应可以执行新条目215到设备110的入队区域205(或减少的提交队列)的延迟存储器写入(delayed memory write,DMWr)。以这种方式,设备110的处理引擎不需要发出延迟的存储器写入,该延迟的存储器写入可能变得阻塞直到检测到完成。因此,处理引擎可以将访问请求排队在其本地缓存中,并且DMA引擎可以处置请求的处理。
图5——示例系统
现在参考图5,示出了根据一个或多个实施例的用于共享存储器访问的示例系统400。系统500可以大体上对应于系统100、200和400(上面参考图1-2和图4讨论),并且可以包括设备110、交换机120和主机130。可预期的是,系统200或400可以至少部分地与图5所示的系统500组合。
在一些实施例中,系统500可以实现共享存储器逻辑来协调跨多个一致性域的缓存一致性。如图所示,设备110的控制电路112可以包括以硬件实现的共享存储器电路510和目录缓存520。设备110还可以包括存储在一个或多个存储器区域中的目录525。此外,主机130的处理器132可以包括归属代理(home agent)530以管理主机130的一致性域。
在一些实施例中,共享存储器电路510可以使用一个或多个目录结构(例如,目录缓存520和/或目录525)来跟踪跨多个一致性域的共享存储器区域的所有权。例如,目录结构可以使用标准的修改的、独占的、共享的和无效的(MESI)一致性状态。在一些实施例中,系统500可以仅使用目录缓存520或目录525之一来实现。可替代地,系统500可以使用目录525作为目录缓存520的备份来实现(例如,以避免每次访问都进行目录更新)。在一些实施例中,目录缓存520可以被实现为包括在控制电路112中的硬件探听过滤器。
如图5所示,在一些实施例中,目录缓存520和/或目录525可以包括多个目录条目,每个目录条目均对应于特定存储器页。此外,每个目录条目可以包括目录向量以指示每个页面的多个共享存储器位置(例如,缓存线)的一致性状态。每个目录向量可以包括识别对应的共享存储器位置(或一组共享存储器位置)的当前状态的一系列编码比特或值。例如,目录向量可以标识无效状态(例如,如果没有主机拥有所有权)、共享状态连同正在共享共享存储器位置的实体(例如主机或VH)的标识,以及独占状态连同当前拥有共享存储器位置所有权的实体的标识。
在一些实施例中,目录525可以被包括在共享存储器位置(例如,缓存线)中,或者可以作为单独的结构被显式地跟踪。此外,在一些实施例中,等待列表(图5中未示出)可以与目录525一起维护在存储器中以跟踪主机130的所有待决请求。等待列表可以包括缓存标签和其他相关信息,其可用于删除待决请求以避免线头阻塞。
在一些实施例中,共享存储器电路510可以检测可能阻止一个或多个请求完成的一致性冲突。例如,当接收到对存储器位置的独占所有权的请求但其他请求者已经具有该存储器位置的独占或共享所有权时,可能会发生一致性冲突。此外,当接收到对存储器位置的共享所有权的请求但另一个请求者已经拥有该存储器单元的独占所有权时,可能会发生一致性冲突。响应于检测到这样的一致性冲突,共享存储器电路510可以发出返回无效命令(例如,CXL返回无效命令)以引起当前所有权的释放。然后,共享存储器电路510可以在服务该请求之前等待对返回无效命令的响应。任选地,共享存储器电路510可以从队列中移除请求并将其放置在存储器中。如果不同的请求者在先前的请求被服务之前请求相同存储器位置的所有权,则共享存储器电路510可以将后续的请求排队到等待列表。然后,共享存储器电路510可以等待,直到先前的请求完成,然后才确定是否处理后续的请求。
在一些实施例中,共享存储器电路510可以等待指定的时间段以确定对返回无效命令的预期响应是否已经被计时。例如,如果接收到返回无效命令的主机出现系统故障或致命错误,则预期响应可能会超时。在这种情况下,共享存储器电路510可以发起“毒害”(例如,删除或从活动使用中移除)所请求的存储器位置的过程。例如,共享存储器电路510可以等待所请求的存储器位置的任何其他待决的返回无效命令完成或超时,并且然后可以将存储器位置标记或指定为中毒。共享存储器电路510可以重置存储器位置的所有权列表,并且可以将错误消息传送到管理实体(例如,结构管理器)。在一些示例中,管理实体可以读取目录列表以确定超时是否与以独占所有权或共享所有权保持的存储器单元相关联。此外,管理实体可以通知使用该存储器位置的所有主机得体地(gracefully)终止它们各自的访问过程,并且可以提供与超时事件相关联的状态。管理实体可以等待来自受影响的主机的响应,对存储器位置执行清理过程,然后释放清理后的存储器位置以供额外使用。不允许对该存储器位置进行写操作直到清理过程完成。接收到的对中毒数据和相关联的信息的任何请求可以被传递到管理实体。与池化存储器一样,交换机120可以负责将来自每个主机的地址映射到共享存储器的设备地址。
在一些实施例中,主机130可以使用共享存储器逻辑来跨存储器执行原子操作。例如,主机130可以在接收指令时或者通过预取过程获得存储器位置(例如,缓存线)的独占所有权。主机130然后可以在其内部缓存中执行原子操作。如果存储器位置在其缓存中仍然保持独占,则主机130可以执行预期的原子操作。否则,如果存储器位置在其缓存中未被保持独占,则主机130可以执行对该存储器位置的另一请求。
图6——示例系统
现在参考图6,描绘了根据实施例的SoC设计的实施例。作为具体说明性示例,SoC600可以被配置为插入任何类型的计算设备中,范围从便携式设备到服务器系统。这里,SoC600包括2个核心606和607。核心606和607可以符合指令集架构,例如基于Architecture CoreTM的处理器、Advanced Micro Devices,Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户及其被许可方或采用者。核心606和607耦合到与总线接口单元609和L2缓存610相关联的缓存控制器608,以经由互连612与系统600的其他部分通信。
互连612提供到其他部件的通信信道,例如与SIM卡接合的订户身份模块(SIM)630、保存用于由核心606和607执行以初始化和启动SoC 600的启动代码的启动ROM 635、用于与外部存储器(例如,DRAM 660)接合的SDRAM控制器640、用于与非易失性存储器(例如,闪存665)接合的闪存控制器645、与外围设备接合的外围控制器650(例如,eSPI接口)、用于显示和接收输入(例如,触摸启用输入)的视频编解码器620和视频接口625、用于执行图形相关计算的GPU 615等。此外,系统示出了用于通信的外围设备,例如蓝牙模块670、3G调制解调器675、GPS 680和WiFi 685。功率控制器655也包括在系统中,其可以实现本文描述的电路以执行根据实施例的基于CXL的功率共享。进一步如图6所示,系统600还可以包括接口,包括例如到显示器的MIPI接口692和/或还可以耦合到相同或不同显示器的HDMI接口695。
图7——示例系统
现在参考图7,示出了根据另一个实施例的系统(例如边缘平台)的框图。如图7所示,多处理器系统700包括经由互连750耦合的第一处理器770和第二处理器780,互连750在实施例中可以是与光学电路(其可以被包括在处理器770中或耦合到处理器770)通信的光学互连。如图7所示,处理器770和780中的每一个可以是多核处理器,包括代表性的第一和第二处理器核心(即,处理器核心774a和774b以及处理器核心784a和784b)。
在图7的实施例中,处理器770和780还包括点对点互连777和787,它们经由互连742和744(其可以是CXL总线)耦合到交换机759和760。反过来,交换机759、760耦合到池化存储器755和765。
仍参考图7,第一处理器770还包括存储器控制器中枢(memory controller hub,MCH)772以及点对点(point-to-point,P-P)接口776和778。类似地,第二处理器780包括MCH782以及P-P接口786和788。如图7所示,MCH 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,存储器732和存储器734可以是本地附接到相应处理器的系统存储器(例如,DRAM)的部分。第一处理器770和第二处理器780可以分别经由P-P互连776和786耦合到芯片组790。如图7所示,芯片组790包括P-P接口794和798。
此外,芯片组790包括接口792以通过P-P互连739将芯片组790与高性能图形引擎738耦合。如图7所示,各种输入/输出(input/output,I/O)设备714可以与总线桥718一起耦合到第一总线716,总线桥71将第一总线716耦合到第二总线720。在一个实施例中,各种设备可以耦合到第二总线720包括例如,键盘/鼠标722、通信设备726和数据存储单元728,例如磁盘驱动器或可以包括代码730的其他大容量存储设备。此外,音频I/O 724可以耦合到第二总线720。
图8——示例系统
本文所描述的实施例可以用于多种网络架构中。现在参考图8,示出了根据本发明另一个实施例的网络架构的框图。如图8所示,网络架构800包括可以位于非常广阔的区域中的各种计算平台。
在图8的高级视图中,网络架构800包括代表性设备810,例如智能电话。该设备可以经由不同的无线电接入网络(radio access network,RAN)进行通信,包括RAN 820和RAN830。RAN 820又可以耦合到平台825,平台825可以是边缘平台,例如雾/远/近边缘平台,并且可以利用本文的实施例。其他请求可以由耦合到RAN 830的远边缘平台835来处置,其也可以利用实施例。
如图8进一步所示,另一个近边缘平台840可以耦合到RAN 820、830。注意,这个近边缘平台可以位于更靠近数据中心850的位置,数据中心850可以具有大量计算资源。通过将消息推送到这些更远的平台,在代表边缘设备810处置请求时会产生更大的等待时间。应当理解,图8中所示的一个或多个平台可以并入实施例来执行如本文所描述的基于CXL的功率共享。
图9——示例系统
现在参考图9,示出了根据本发明另一实施例的系统900的框图。如图5所示,系统900可以是任何类型的计算设备,并且在一个实施例中可以是服务器系统。在图9的实施例中,系统900包括多个CPU 910a、b,这些CPU 910a、b又耦合到相应的系统存储器920a、b,在实施例中,系统存储器920a、b可以被实现为诸如双数据速率(doubledata rate,DDR)存储器、持久存储器或其他类型的存储器的DIMM。注意,CPU 910可以经由互连系统915(例如Ultra Path Interconnect或其他处理器互连技术耦合在一起。
为了使得一致加速器设备和/或智能适配器设备能够通过潜在的多个通信协议耦合到CPU 910,可以存在多个互连930a1-b2。在实施例中,每个互连930可以是CXL的给定实例。
在所示的实施例中,各个CPU 910耦合到对应的现场可编程门阵列(fieldprogrammable gate array,FPGA)/加速器设备950a、b(在一个实施例中,其可以包括GPU)。另外,CPU 910还耦合到智能NIC设备960a、b。智能NIC设备960a、b又耦合到交换机980a、b(例如,根据实施例的CXL交换机),交换机980a、b又耦合到池化存储器990a、b,例如持久存储器。在实施例中,交换机980可以实现本文所描述的电路来执行如文本所描述的方法。当然,实施例不限于交换机,并且本文描述的技术可以由系统的其他实体(包括CPU 910)来执行。
以下条款和/或示例涉及进一步的实施例。
在示例1中,一种用于存储器访问的装置可以包括:存储器,所述存储器包括至少一个原子存储器区域;以及控制电路,该控制电路耦合至存储器。该控制电路可以用于:对于多个提交队列中的每个提交队列,识别在所述提交队列的第一条目中指定的原子存储器位置,其中每个提交队列用于存储来自不同请求者的访问请求;确定所述原子存储器位置是否包括现有请求者信息;以及响应于确定所述原子存储器位置不包括现有请求者信息,至少部分地基于所述提交队列的第一条目来对于所述原子存储器位置执行原子操作。
在示例2中,示例1的主题可以可选地包括,控制电路还响应于确定所述原子存储器位置不包括现有请求者信息:将新请求者信息写入所述原子存储器位置。
在示例3中,示例1-2的主题可以可选地包括:新请求者信息被包括在所述提交队列的第一条目中,并且所述新请求者信息至少包括虚拟层次体系标识符、总线标识符、设备标识符和功能标识符。
在示例4中,示例1-3的主题可以可选地包括,控制电路还响应于确定所述原子存储器位置确实包括现有请求者信息:将所述第一条目移动到所述提交队列的尾端。
在示例5中,示例1-4的主题可以可选地包括,多个提交队列被存储在所述装置的入队存储器区域中。
在示例6中,示例1-5的主题可以可选地包括,多个提交队列中的每个提交队列被存储在不同主机设备的本地存储器中。
在示例7中,示例1-6的主题可以可选地包括,控制电路包括目录缓存,并且所述控制电路用于使用所述目录缓存来协调跨多个缓存一致性域的一致性。
在示例8中,示例1-7的主题可以可选地包括,目录缓存的每个条目包括目录向量,并且每个目录向量指示多个共享存储器位置的一致性状态和所有者实体。
在示例9中,示例1-8的主题可以可选地包括,控制电路响应于确定所请求的共享存储器位置由实体独占地拥有:向所述实体发出返回无效命令。
在示例10中,一种用于存储器访问的方法可以包括:通过设备的控制电路访问多个提交队列,其中每个提交队列用于存储来自耦合到所述设备的不同请求者的访问请求;对于所述多个提交队列中的每个提交队列,由所述控制电路识别在所述提交队列的第一条目中指定的原子存储器位置;通过所述控制电路确定所述原子存储器位置是否包括现有请求者信息;以及响应于确定所述原子存储器位置不包括现有请求者信息,由所述控制电路基于所述提交队列的第一条目来对于所述原子存储器位置执行原子操作。
在示例10中,示例10的主题可以可选地包括:响应于确定所述原子存储器位置不包括现有请求者信息,将新请求者信息写入到所述原子存储器位置。
在示例12中,示例10-11的主题可以可选地包括,新请求者信息被包括在所述提交队列的第一条目中,并且所述新请求者信息至少包括虚拟层次体系标识符、总线标识符、设备标识符和功能标识符。
在示例13中,示例10-12的主题可以可选地包括,多个提交队列被存储在所述设备的入队存储器区域中。
在示例14中,示例10-13的主题可以可选地包括:通过所述控制电路使用所述控制电路中包括的目录缓存来协调跨多个缓存一致性域的一致性。
在示例15中,示例10-14的主题可以可选地包括,目录缓存的每个条目包括目录向量,并且每个目录向量指示多个共享存储器位置的一致性状态和所有者实体。
在示例16中,示例10-15的主题可以可选地包括:通过所述控制电路确定所请求的共享存储器位置是否由实体独占拥有;以及响应于确定所请求的共享存储器位置由所述实体独占拥有,通过所述控制电路向所述实体发出返回无效命令。
在示例17中,计算设备可以包括一个或多个处理器,以及其中存储有多个指令的存储器,当所述指令由一个或多个处理器执行时,使得计算设备执行示例10至16中的任一个示例的方法。
在示例18中,机器可读介质可以在其上存储有数据,如果该数据被至少一台机器使用,则使得该至少一台机器制造至少一个集成电路以执行根据示例10至16中的任一个示例所述的方法。
在示例19中,电子设备可以包括用于执行示例10至16中的任一个示例的方法的单元。
在示例20中,一种用于存储器访问的系统可以包括:多个主机设备;至少一个存储器扩展设备;以及交换机,所述交换机用于经由计算快速链路(CXL)互连耦合多个主机设备和至少一个存储器扩展设备。至少一个存储器扩展设备可以包括控制电路以:对于多个提交队列中的每个提交队列,识别在所述提交队列的第一条目中指定的原子存储器位置,其中每个提交队列用于存储来自所述多个主机设备中的不同主机设备的访问请求;确定所述原子存储器位置是否包括现有请求者信息;以及响应于确定所述原子存储器位置不包括现有请求者信息,基于所述提交队列的第一条目来对于所述原子存储器位置执行原子操作。
在示例21中,示例20的主题可以可选地包括,控制电路还响应于确定所述原子存储器位置不包括现有请求者信息:将新请求者信息写入所述原子存储器位置。
在示例22中,示例20-21的主题可以可选地包括,控制电路包括目录缓存,并且所述控制电路用于使用所述目录缓存来协调跨多个缓存一致性域的一致性。
在示例23中,示例20-22的主题可以可选地包括,控制电路响应于确定所请求的共享存储器位置由实体独占地拥有:向所述实体发出返回无效命令。
在示例24中,一种用于存储器访问的装置可以包括:用于访问多个提交队列的单元,其中每个提交队列用于存储来自不同请求者的访问请求;对于多个提交队列中的每个提交队列,用于识别在提交队列的第一条目中指定的原子存储器位置的单元;用于确定原子存储器位置是否包括现有请求者信息的单元;以及用于响应于确定原子存储器位置不包括现有请求者信息而基于提交队列的第一条目来对于原子存储器位置执行原子操作的单元。
在示例25中,示例24的主题可以可选地包括,用于响应于确定原子存储器位置不包括现有请求者信息而将新请求者信息写入到原子存储器位置的单元。
在示例26中,示例24-25的主题可以可选地包括,新请求者信息被包括在提交队列的第一条目中,并且其中新请求者信息至少包括虚拟层次体系标识符、总线标识符、设备标识符和功能标识符。
在示例27中,示例24-26的主题可以可选地包括,将多个提交队列存储在设备的入队存储器区域中。
在示例28中,示例24-27的主题可以可选地包括,用于使用包括在控制电路中的目录缓存来协调跨多个缓存一致性域的一致性的单元。
在示例29中,示例24-28的主题可以可选地包括,目录缓存的每个条目包括目录向量,并且每个目录向量指示多个共享存储器位置的一致性状态和所有者实体。
在示例30中,示例24-29的主题可以可选地包括:用于确定所请求的共享存储器位置是否由实体独占拥有的单元;以及用于响应于确定所请求的共享存储器位置由该实体独占拥有而向该实体发出返回无效命令的单元。
在本文描述的各种实施例中,互连设备可以包括允许处理器直接从由另一处理器(即,“归属”处理器)管理的具有缓存一致性的存储器地址读取数据的电路或其他逻辑。此外,互连设备可以处置与直接读取相关联的一致性任务,包括维护目录、发起返回无效流等等。在一些实施例中,直接数据传输可以不经过归属处理器和处理器互连。因此,直接读取可以以相对较少的跳(例如,两跳)来执行,并且因此可以涉及比传统方法更少的等待时间和带宽。此外,一些实施例可以减少与存储器读取相关联的功耗,并且可以减少与调整处理器互连的大小相关联的成本。
注意,虽然图1-9示出了各种示例实现方案,其他变化也是可能的。例如,图1-9所示的示例是为了说明的目的而提供的,并且不旨在限制任何实施例。具体地,虽然为了清楚起见可以以简化形式示出实施例,但是实施例可以包括任何数量和/或布置的部件。例如,可以预期,一些实施例可以包括除了所示的那些之外的任何数量的部件,并且所示的部件的不同布置可以出现在某些实现方案中。此外,可以预期的是,图1-9中所示的示例中的细节可以在一个或多个实施例中的任何地方使用。
应当理解,上述示例的各种组合都是可能的。实施例可以用在许多不同类型的系统中。例如,在一个实施例中,通信设备可以被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是其他实施例可以涉及用于处理指令的其他类型的装置,或者包括响应于在计算设备上执行的指令的一个或多个机器可读介质,使得该设备执行本文描述的方法和技术中的一种或多种。
在整个说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明所涵盖的至少一个实现方案中。因此,短语“一个实施例”或“在实施例中”的出现不一定指代相同的实施例。此外,特定的特征、结构或特性可以以除所示的特定实施例之外的其他合适的形式来制定,并且所有这样的形式可以被涵盖在本申请的权利要求内。
虽然已经关于有限数量的实施例描述了本发明,但是本领域技术人员将理解由此的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有此类修改和变化。
Claims (20)
1.一种装置,包括:
存储器,所述存储器包括至少一个原子存储器区域;
控制电路,所述控制电路耦合至所述存储器,所述控制电路用于:
对于多个提交队列中的每个提交队列,识别在所述提交队列的第一条目中指定的原子存储器位置,其中,每个提交队列用于存储来自不同请求者的访问请求;
确定所述原子存储器位置是否包括现有请求者信息;以及
响应于确定所述原子存储器位置不包括现有请求者信息,至少部分地基于所述提交队列的第一条目来对于所述原子存储器位置执行原子操作。
2.根据权利要求1所述的装置,其中,所述控制电路还用于响应于确定所述原子存储器位置不包括现有请求者信息:
将新请求者信息写入所述原子存储器位置。
3.根据权利要求2所述的装置,其中,所述新请求者信息被包括在所述提交队列的第一条目中,并且其中,所述新请求者信息至少包括虚拟层次体系标识符、总线标识符、设备标识符和功能标识符。
4.根据权利要求1所述的装置,其中,所述控制电路还响应于确定所述原子存储器位置确实包括现有请求者信息:
将所述第一条目移动到所述提交队列的尾端。
5.根据权利要求1所述的装置,其中,所述多个提交队列被存储在所述装置的入队存储器区域中。
6.根据权利要求1所述的装置,其中,所述多个提交队列中的每个提交队列被存储在不同主机设备的本地存储器中。
7.根据权利要求1所述的装置,其中,所述控制电路包括目录缓存,并且其中,所述控制电路用于使用所述目录缓存来协调跨多个缓存一致性域的一致性。
8.根据权利要求7所述的装置,其中,所述目录缓存的每个条目包括目录向量,并且其中,每个目录向量用于指示多个共享存储器位置的一致性状态和所有者实体。
9.根据权利要求1所述的装置,其中,所述控制电路用于响应于确定所请求的共享存储器位置由实体独占地拥有:
向所述实体发出返回无效命令。
10.一种方法,包括:
通过设备的控制电路访问多个提交队列,其中,每个提交队列用于存储来自耦合到所述设备的不同请求者的访问请求;
对于所述多个提交队列中的每个提交队列,通过所述控制电路识别在所述提交队列的第一条目中指定的原子存储器位置;
通过所述控制电路确定所述原子存储器位置是否包括现有请求者信息;以及
响应于确定所述原子存储器位置不包括现有请求者信息,通过所述控制电路基于所述提交队列的第一条目来对于所述原子存储器位置执行原子操作。
11.根据权利要求10所述的方法,还包括:
响应于确定所述原子存储器位置不包括现有请求者信息,将新请求者信息写入到所述原子存储器位置。
12.根据权利要求11所述的方法,其中,所述新请求者信息被包括在所述提交队列的第一条目中,并且其中,所述新请求者信息至少包括虚拟层次体系标识符、总线标识符、设备标识符和功能标识符。
13.根据权利要求10所述的方法,其中,所述多个提交队列被存储在所述设备的入队存储器区域中。
14.根据权利要求10所述的方法,还包括:
通过所述控制电路使用所述控制电路中包括的目录缓存来协调跨多个缓存一致性域的一致性。
15.根据权利要求14所述的方法,其中,所述目录缓存的每个条目包括目录向量,并且其中,每个目录向量用于指示多个共享存储器位置的一致性状态和所有者实体。
16.根据权利要求10所述的方法,还包括:
通过所述控制电路确定所请求的共享存储器位置是否由实体独占拥有;以及
响应于确定所请求的共享存储器位置由所述实体独占拥有,通过所述控制电路向所述实体发出返回无效命令。
17.一种系统,包括:
多个主机设备;
至少一个存储器扩展设备;
交换机,所述交换机用于经由计算快速链路(CXL)互连耦合所述多个主机设备和至少一个存储器扩展设备,
其中,所述至少一个存储器扩展设备包括控制电路以用于:
对于多个提交队列中的每个提交队列,识别在所述提交队列的第一条目中指定的原子存储器位置,其中,每个提交队列用于存储来自所述多个主机设备中的不同主机设备的访问请求;
确定所述原子存储器位置是否包括现有请求者信息;以及
响应于确定所述原子存储器位置不包括现有请求者信息,基于所述提交队列的第一条目来对于所述原子存储器位置执行原子操作。
18.根据权利要求17所述的系统,其中,所述控制电路还用于响应于确定所述原子存储器位置不包括现有请求者信息:
将新请求者信息写入所述原子存储器位置。
19.根据权利要求17所述的系统,其中,所述控制电路包括目录缓存,并且其中,所述控制电路用于使用所述目录缓存来协调跨多个缓存一致性域的一致性。
20.根据权利要求17所述的系统,其中,所述控制电路用于响应于确定所请求的共享存储器位置由实体独占地拥有:
向所述实体发出返回无效命令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/645,481 US20220114098A1 (en) | 2021-12-22 | 2021-12-22 | System, apparatus and methods for performing shared memory operations |
US17/645,481 | 2021-12-22 | ||
PCT/US2022/047966 WO2023121763A1 (en) | 2021-12-22 | 2022-10-27 | System, apparatus and methods for performing shared memory operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117546149A true CN117546149A (zh) | 2024-02-09 |
Family
ID=81079179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280044315.9A Pending CN117546149A (zh) | 2021-12-22 | 2022-10-27 | 用于执行共享存储器操作的系统、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220114098A1 (zh) |
CN (1) | CN117546149A (zh) |
WO (1) | WO2023121763A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220413743A1 (en) * | 2021-06-29 | 2022-12-29 | Hewlett Packard Enterprise Development Lp | Method and system for libfabric atomics-based lockless cluster-wide shared memory access api in a distributed system |
US20220114098A1 (en) * | 2021-12-22 | 2022-04-14 | Intel Corporation | System, apparatus and methods for performing shared memory operations |
US20230281128A1 (en) * | 2022-03-03 | 2023-09-07 | Samsung Electronics Co., Ltd. | Cache-coherent interconnect based near-data-processing accelerator |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799583B2 (en) * | 2010-05-25 | 2014-08-05 | International Business Machines Corporation | Atomic execution over accesses to multiple memory locations in a multiprocessor system |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
US20180011792A1 (en) * | 2016-07-06 | 2018-01-11 | Intel Corporation | Method and Apparatus for Shared Virtual Memory to Manage Data Coherency in a Heterogeneous Processing System |
US10956086B2 (en) * | 2018-01-29 | 2021-03-23 | Micron Technology, Inc. | Memory controller |
US11379236B2 (en) * | 2019-12-27 | 2022-07-05 | Intel Corporation | Coherency tracking apparatus and method for an attached coprocessor or accelerator |
US20220114098A1 (en) * | 2021-12-22 | 2022-04-14 | Intel Corporation | System, apparatus and methods for performing shared memory operations |
-
2021
- 2021-12-22 US US17/645,481 patent/US20220114098A1/en active Pending
-
2022
- 2022-10-27 WO PCT/US2022/047966 patent/WO2023121763A1/en active Application Filing
- 2022-10-27 CN CN202280044315.9A patent/CN117546149A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023121763A1 (en) | 2023-06-29 |
US20220114098A1 (en) | 2022-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036650B2 (en) | System, apparatus and method for processing remote direct memory access operations with a device-attached memory | |
CN101097545B (zh) | 独占所有权探听过滤器 | |
US10509740B2 (en) | Mutual exclusion in a non-coherent memory hierarchy | |
US20220114098A1 (en) | System, apparatus and methods for performing shared memory operations | |
US20170109279A1 (en) | Partitioning shared caches | |
US8037253B2 (en) | Method and apparatus for global ordering to insure latency independent coherence | |
US9690737B2 (en) | Systems and methods for controlling access to a shared data structure with reader-writer locks using multiple sub-locks | |
US8078862B2 (en) | Method for assigning physical data address range in multiprocessor system | |
TW201107974A (en) | Cache coherent support for flash in a memory hierarchy | |
US9858190B2 (en) | Maintaining order with parallel access data streams | |
US9864687B2 (en) | Cache coherent system including master-side filter and data processing system including same | |
US20120054380A1 (en) | Opportunistic improvement of mmio request handling based on target reporting of space requirements | |
US9552303B2 (en) | Method and system for maintaining release consistency in shared memory programming | |
US6842828B2 (en) | Methods and arrangements to enhance an upbound path | |
US10198357B2 (en) | Coherent interconnect for managing snoop operation and data processing apparatus including the same | |
WO2010097925A1 (ja) | 情報処理装置 | |
KR20160099722A (ko) | 캐시-코히어런시를 갖춘 집적 회로들 | |
WO2023121766A1 (en) | System, apparatus and methods for direct data reads from memory | |
US20070073977A1 (en) | Early global observation point for a uniprocessor system | |
US20060149885A1 (en) | Enforcing global ordering through a caching bridge in a multicore multiprocessor system | |
CN114356839B (zh) | 处理写操作的方法、设备、处理器及设备可读存储介质 | |
JP3814521B2 (ja) | データ処理方法および装置 | |
US20130007768A1 (en) | Atomic operations on multi-socket platforms | |
US9183149B2 (en) | Multiprocessor system and method for managing cache memory thereof | |
KR20020012616A (ko) | 록의 시작 및 끝을 요구하는 데에 버스 커맨드 코드포인트들을 최소로 이용하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |