CN109196829A - 远程存储器操作 - Google Patents
远程存储器操作 Download PDFInfo
- Publication number
- CN109196829A CN109196829A CN201780033700.2A CN201780033700A CN109196829A CN 109196829 A CN109196829 A CN 109196829A CN 201780033700 A CN201780033700 A CN 201780033700A CN 109196829 A CN109196829 A CN 109196829A
- Authority
- CN
- China
- Prior art keywords
- node
- memory
- remote
- request
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- 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/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- 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
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
节点架构和代理请求的扩展使节点能够向远程节点暴露存储器计算能力。远程节点可以请求远程存储器计算资源执行操作,并且远程存储器计算资源可以本地地执行请求并返回计算的结果。该节点包括处理资源、结构接口和包括存储器计算资源的存储器子系统。存储器计算资源对请求的本地执行可以减少远程请求的典型延迟和带宽问题。
Description
优先权
本申请根据35U.S.C.§365(c)要求2016年7月1日提交的名为REMOTE MEMORYOPERATIONS的美国申请第15/201373号的优先权。本申请要求该申请的优先权的利益。
技术领域
该描述一般涉及网络系统,并且更具体的描述涉及具有远程存储器操作能力的网络系统中的节点。
版权声明/许可
本专利文献的公开的部分可包含受版权保护的材料。版权所有者不反对任何人复制专利和商标局专利文件或记录中出现的专利文献或专利公开,但在其他方面保留各类所有版权。版权声明适用于以下所述以及随附的附图中的所有数据,以及下述任何软件:版权所有英特尔公司,保留所有权利。
背景技术
计算领域已经增加了创建和使用数据的能力。相应地,创建了更多应用来生成和使用越来越多的数据。数据中心和服务器群现在很常见,其中许多处理节点在互连结构上并行运行。在这种环境中的许多操作涉及许多计算的运算,这些计算很好地适用于并行性。因此,工作负载可以并行地分布在许多节点上以进行计算。可以认为计算需要处理资源以及数据存储资源,尤其是对于数据量大的操作。共享处理资源使远程节点能够执行计算。共享存储器资源使远程节点能够存储数据并执行与整体操作相关的计算。
然而,在这种存储器共享环境中存在固有的延迟限制。考虑节点(A)想要更新映射到远程节点(B)的本地地址空间中的行的场景。(A)首先必须从B获取和读取数据,对数据进行一些计算,并将数据存储回节点(B)上的存储器。在许多情况下,要在远程节点的存储器上执行的操作可以是简单的,例如,将远程节点中的存储器范围归零或执行诸如数据过滤或搜索的简单操作。通过结构复制数据、执行相对便宜的计算操作以及将数据移回远程节点的开销在应用参与数据传输所产生的额外延迟以及结构带宽消耗方面都是浪费的。结构带宽是指通过互连节点的交换结构交换的数据量,并且由于它是有限的资源,过度使用会产生延迟瓶颈。
附图说明
以下描述包括对具有通过本发明实施例的实现方式的示例的方式给出的图示的附图的讨论。附图应该通过示例的方式理解,而不是作为限制。如本文所使用的,对一个或多个“实施例”的引用应被理解为描述包括在本发明的至少一个实现方式中的特定特征、结构和/或特性。因此,这里出现的诸如“在一个实施例中”或“在替代实施例中”的短语描述了本发明的各种实施例和实现方式,并且不一定都指代相同的实施例。但是,它们也不一定是相互排斥的。
图1是节点的网络的实施例的框图,其中具有存储器计算资源的节点可以暴露资源以供远程节点使用。
图2A是具有存储器计算资源的远程节点的远程读取计算的实施例的框图。
图2B是具有存储器计算资源的远程节点的远程写入计算的实施例的框图。
图3A是节点的网络的节点的实施例的框图,其中存储器计算资源可由远程节点访问以便执行。
图3B是具有存储器控制器的节点的网络的节点的实施例的框图,该存储器控制器基于节点内的多个存储器计算资源来注册存储器计算功能。
图4是用于执行远程存储器计算的过程的实施例的流程图。
图5是用于注册和发现远程存储器计算资源的过程的实施例的流程图。
图6是可以实现远程存储器计算的多节点网络的实施例的框图。
图7是用于多节点网络的计算系统的实施例的框图,其中可以实现远程存储器计算。
以下描述某些细节和实施方式,包括附图的描述,其可描绘下文描述的一些或所有实施例,以及讨论本文中呈现的发明构思的其他可能的实施例或实施方式。
具体实施方式
如本文所述,节点的网络中的处理节点包括处理资源和存储器资源,并且存储器资源包括存储器计算资源。存储器计算资源使存储器子系统能够执行某些操作而不将数据推回到处理器。该节点包括结构互连管理器或结构接口,以通过互连结构耦合到网络中的其他节点。扩展了节点和网络的架构,以实现远程存储器计算的代理请求。节点可以向远程节点公开存储器计算能力。远程节点可以请求远程存储器计算资源执行操作,并且远程存储器计算资源可以在本地执行请求并返回计算的结果。存储器计算资源对请求的本地执行可以减少远程请求的典型延迟和带宽问题。本地计算不要求在结构上来回发送数据以执行计算,并且不通过要求由本地处理器执行计算来弄脏本地缓存。
这种解决方案是对使用远程操作或“原子”将计算推送到主机结构接口(HFI)的现有解决方案的改进。有许多操作需要像原子一样遍历大量数据,这使得HFI执行操作效率低下。例如,涉及大规模数据并行操作的操作在被从存储器中的数据推送时失去了数据并行性的优点。此外,涉及归零数据或计算页级校验和或其他操作的操作具有保持尽可能接近数据的优点,并且以其他方式需要在带宽受限的互连上移动大量数据。
在传统系统中,没有机制使得能够在结构上推送计算以由远程节点的存储器层次结构执行,而不是通过结构交换数据或通过远程处理资源执行计算。如本文所述,可以暴露存储器计算能力用于远程请求,并且节点的存储器子系统可以接收远程请求并响应于远程请求而执行操作。存储器层次结构可以返回操作的结果,而不需要通过结构交换数据,或甚至要求通过本地处理资源或HFI访问数据。
图1是节点的网络的实施例的框图,其中具有存储器计算资源的节点可以暴露资源以供远程节点使用。系统100包括经由主机结构102耦合在一起的多个节点。系统100示出了四个不同的节点,节点0、节点1、节点2和节点3。应当理解,系统100可以包括更多节点。通常,服务器系统或数据中心将包括数十个或数百个或数千个节点。系统100中示出的节点表示可以包括的节点类型的非限制性示例。在一个实施例中,可以在同一网络中实现不同类型的节点。在一个实施例中,系统100中的节点将是相当统一的。其中节点包括存储器资源的任何类型的系统100可以实现远程存储器操作的实施例。
主机结构102表示互连系统,其包括交换机、路由器或其他硬件设备或组合,以实现从一个节点到另一个节点的数据流。结构102实现诸如以太网、TCP/IP(传输控制协议/网际协议)或其他协议之类的主机协议,以将数据从一个设备传输到另一个设备。系统100的节点经由结构互连机构(例如主机结构接口(HFI))互连到结构102。通常,HFI 110表示将节点耦合到结构102的逻辑和硬件互连。在一个实施例中,HFI 110包括用于管理到将节点连接到结构102的硬件组件的互连的一个或多个管理过程。在一个实施例中,这样的过程可以包括在节点处执行的一个或多个网络协议栈中的代理的实现。这样的协议栈可以在概念上将网络接口分离为包括多个层,例如与主机操作系统一起操作或在主机操作系统下操作的应用或代理,驱动应用的特定硬件功能的一个或多个驱动器软件层,实现特定的机器代码以实现由驱动器指导的功能的硬件设备的一个或多个固件层,以及响应于机器代码以经由寄存器、端口、硬件驱动器交换(例如,发送或接收或两者)数据(例如,生成数据信号)的硬件逻辑。这种协议栈有许多已知的变体,这里不再详细讨论。HFI 110表示这样的栈或其他硬件和软件机制或用于管理在结构102上与其他设备交换命令/请求和数据的组合。
节点0表示一般在系统100内的节点,并且节点1、2和3可以是根据节点0的节点的更具体的表示。节点0经由HFI 110[0]与结构102互连。在一个实施例中,节点0包括插座120,插座120通常表示使得能够在节点0中包括处理器或CPU(中央处理单元)的插座或其他连接器。可以假设节点0包括处理器,并且插座120表示用于将处理器与节点0的其他组件(例如HFI 110[0]和存储器122)接合的处理器和其他硬件逻辑。在一个实施例中,节点0包括多个插座120,每个插座120可包括单独的处理器和存储器资源。节点0包括一个或多个处理器以在节点处执行操作。处理器可以包括单核处理器、多核处理器、专用处理器或组合。
节点0包括存储器122,其表示节点0本地的存储器资源。存储器122包括存储器计算(mem comp)124,其表示存储器122的一个或多个存储器计算能力。存储器计算124表示可以在存储器122(例如,在存储器模块或与存储器控制器或两者)处执行而不将数据上送到主机处理器以进行操作并且不通过结构102将数据发送到请求处理器以进行操作的对数据的任何类型的操作。例如,某些搜索功能或数据归零或存储服务器的使用或其他功能可以在存储器122处执行而无需在存储器子系统外执行。
如本文所提供的,系统100经由HFI 110[0]使节点0能够通过结构102将存储器计算124暴露给其他节点。因此,其他节点可以对存储器122的存储器操作、存储在存储器122上的数据或者存储在存储器122中进行远程请求。因此,存储器计算124提供可通过结构102的互连访问的新类型的资源。在一个实施例中,系统100支持这种资源的暴露和发现,以及经由在结构102上的协议隧穿来使用这些资源。
在一个实施例中,存储器122向HFI 110[0]注册以使HFI 110[0]能够向其他节点指示存储器计算124,例如通过由其HFI进行的查询。在一个实施例中,系统100实现远程节点请求,以对一系列存储器地址进行存储器计算,接收存储器将操作结果返回到远程请求节点。在一个实施例中,系统100实现远程节点请求,以对一系列存储器地址进行存储器计算,接收存储器将操作结果返回给远程请求节点,并且接收存储器将操作结果存储到给定的存储器地址。在一个实施例中,HFI 110(例如,用于不同节点的HFI)暴露本地存储器计算资源,以及在系统100中执行发现以发现架构中的其他特定节点支持什么类型的存储器计算操作。在一个实施例中,根据系统100在按比例缩放的架构中运行的应用可以动态地发现关于存储器计算增强的其他节点支持的内容。
在节点0表示节点的一般示例的情况下,考虑系统100中的其他节点的更具体但非限制性的示例。节点1表示可以存在于系统100中的存储服务器。这样的存储服务器可以例如通过将节点1与结构102接合的HFI 110[1]暴露使得能够扩展系统100内的存储器的存储器资源。例如,如图所示,节点1包括服务器130以服务N个非易失性存储器(NVM)节点。节点1可以是池化存储器服务器的表示。NVM存储器可以是例如闪存、3DXP(三维交叉点)或其他基于半导体的非易失性存储器。每个节点可以包括可用于在系统100内映射的存储器资源。在一个实施例中,服务器130包括一个或多个附加存储器计算资源,用于管理存储在存储器节点处的数据。因此,远程节点处理器核可以将地址空间映射到节点1的存储器,并且发送对服务器130处的数据进行计算操作的请求,而不必将数据发送回请求节点。
节点2表示包括多个处理器和不同类型的存储器资源的系统节点。节点2经由HFI110[2]耦合到结构102,其可以暴露节点2的存储器计算能力。虽然没有具体示出,但是应该理解,节点2包括所示的各种存储器子系统中的存储器计算资源。节点2包括处理器140,其连接到DDR(双数据速率)存储器资源142和3DXP 144。DDR存储器资源142表示根据DDR标准的传统DRAM(动态随机存取存储器)资源,例如DDR4SDRAM设备(双数据速率版本4同步动态随机存取存储器设备)。用于处理器140的插座可以支持与DDR 142和3DXP 144的连接。每个存储器子系统(例如,142和144)可以包括存储器计算资源,其不一定是每个存储器子系统的相同资源。HFI 110[2]可以暴露节点2中可用的所有存储器计算资源,并将与远程存储器计算请求相关的流量引导到适当的资源。虽然具体示出为3DXP 144和3DXP 154,但是可以将其中一个或两个交换用于其他非易失性存储器(NVM)资源。
代替3DXP,可以使用诸如相变存储器(PCM)或其他非易失性存储器技术的其他存储器技术。非易失性存储器的非限制性示例可以包括以下中的任何一个或组合:固态存储器(诸如平面或3D NAND闪存或NOR闪存)、使用硫属化物相变材料(例如,硫属化物玻璃)的存储装置、字节可寻址非易失性存储器器件、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、其他各种类型的非易失性随机存取存储器(RAM)和磁存储存储器。在一些实施例中,3D交叉点存储器可以包括无晶体管的可堆叠交叉点架构,其中存储器单元位于字线和位线的交叉处并且可单独寻址,并且其中位存储基于体电阻的变化。在特定实施例中,具有非易失性存储器的存储器模块可以符合联合电子设备工程委员会(JEDEC)颁布的一个或多个标准,例如JESD218、JESD219、JESD220-1、JESD223B、JESD223-1或其他合适的标准(此处引用的JEDEC标准可在www.jedec.org上获得)。
在一个实施例中,节点2还包括处理器150,经由上行链路146耦合到处理器140。上行链路146表示一个或多个总线或其他互连,其实现处理器140和150的并行和半独立操作。在一个实施例中,处理器140和150可以独立地或并行地一起操作。因此,它们可以执行共同事务的部分,或处理单独的事务。在一个实施例中,处理器150与处理器140的类型相同,并且包括相同类型的插座互连。处理器150或插座或两者不一定与处理器140及其插座相同。如图所示,处理器150耦合到DDR存储器资源152和3DXP 154,它们是处理器150本地的存储器资源。取决于存储数据的位置,可以将对节点2的请求引导到单独的存储器资源。
节点3表示系统节点,其包括连接到本地存储器资源的处理器,以及不连接到本地存储器资源的处理器。更具体地,节点3包括处理器160,其连接到本地存储器资源DDR 162和3DXP 164。在一个实施例中,存储器资源中的任一个或两者包括HFI 110[3]将通过结构102向系统100暴露的存储器计算资源。类似于处理器140和150,处理器160可以被理解为连接到插座或其他连接器。节点3包括FPGA(现场可编程门阵列)170或其他门阵列处理器。FPGA 170可以为节点3和系统100提供处理功能,并且不具有本地存储器资源。FPGA 170可以经由上行链路166耦合到处理器160。
因此,系统100提供可以暴露可通过结构102的结构互连访问的新类型的存储器资源的网络架构。这样的资源可以包括与节点1一样的存储服务器,以及如节点2和3中的远程存储器存储和计算。在一个实施例中,系统100中的节点可以通过结构102或其他请求经由NVMe(非易失性存储器表达)访问节点1的存储服务器130。因此,节点可以将其可见存储器地址空间的部分映射到远程节点或远程存储器服务器。可以通过远程存储器请求来访问远程映射的存储器资源。
在一个实施例中,系统100支持通过结构隧道传送存储器请求的新协议,参考通过结构102使用的协议对存储器请求协议进行隧道传送。应当理解,隧道传送是指协议消息的封装或者在载波协议的一个或多个分组内的分组。例如,考虑存储器请求协议,为了该示例可以将其称为MRP,并且考虑结构102与以太网协议执行数据交换。在这样的示例中,“以太网MRP”隧道传送可以包括在“MRP”协议中生成存储器请求分组,包括根据为协议定义的任何定时和参数的报头和有效载荷。封装引擎(例如,在节点处执行的进程或代理,例如在HFI110处)可以生成符合以太网分组的定义的一个或多个以太网分组,而有效载荷是整个MRP分组。以太网分组允许跨结构102传输分组,然后接收节点可以检测到以太网有效载荷实际上是MRP分组。然后,MRP协议引擎可以解码MRP分组以识别用于在接收节点处执行存储器操作的分组有效载荷,或者可以识别从执行存储器计算的节点接收的结果。
考虑节点3访问节点2的存储器存储的示例。更具体地,考虑处理器160包括映射到DDR 152的存储器地址空间的部分和映射到节点2的3DXP 154的部分。在传统系统中,节点3可以访问DDR 152和3DXP 154中的数据,但是这样做必须请求通过结构102从节点2取回整个数据,在节点3处本地地对数据执行计算,然后通过结构102将数据发送回节点2。这种方法导致显着的延迟,以及消耗结构带宽。在另一种传统方法中,处理器160可以请求在节点2处执行存储器上的操作。这种方法可以节省大量的数据传输延迟和结构带宽。然而,处理器150和可能的处理器140的本地高速缓存资源将通过执行请求而被污染。节点2的处理资源将必须中断它们的执行过程并替换它们的高速缓存数据,这将导致系统100中的整体延迟和低效率。
与传统方法相反,节点3的处理器160可以生成一个或多个远程存储器计算请求。虽然并非每个数据计算都必须由远程存储器计算支持,但是对于可从存储器资源获得的存储器计算,处理器160可以生成请求并将它们发送到特定存储器资源(DDR 152或3DXP154)。存储器资源可以在存储器处本地地执行计算并将结果返回到处理器160。
图2A是具有存储器计算资源的远程节点的远程读取计算的实施例的框图。系统202提供根据系统100的实施例的系统的一个示例。更具体地,系统202表示由存储器计算资源执行的读取操作。
请求节点210表示根据本文描述的任何实施例的网络的节点。执行节点230表示根据本文描述的任何实施例的具有存储器子系统的网络的节点,该存储器子系统具有存储器计算资源。在一个实施例中,执行节点230包括存储服务器。在一个实施例中,执行节点230包括网络的处理节点,包括具有存储器计算能力的存储器。
系统202示出了读取操作流程的一个实施例。请求节点210生成远程存储器计算读取请求242,其被发送到执行节点230。将理解,请求节点210的核心212生成请求。核心212包括节点210的处理器资源。核心212生成读取请求242,作为在节点210处执行一个或多个操作的部分。在一个实施例中,核心212将读取请求242发送到节点互连214。节点互连214表示将核心212互连到结构接口216(例如主机结构接口)的节点210内的硬件接口和控制逻辑。
结构接口216表示根据本文描述的任何实施例的结构接口。结构接口216将节点210耦合到结构220,并发现节点230的存储器计算资源。在一个实施例中,结构接口216准备通过结构220的协议发送的读取请求242。结构220表示根据这里描述的任何实施例的结构。在一个实施例中,结构220相对于传统的结构互连进行扩展,具有通过请求和返回结果来隧道传送远程计算流的能力。在一个实施例中,结构在L4层处延伸,以实现远程存储器计算操作交换的隧道化。
节点230在结构接口236处通过结构220接收读取请求242。结构接口236可以是根据本文描述的任何实施例的结构接口。在一个实施例中,结构接口216提供通过结构220隧道传送的读取请求242,并且主机结构接口236提取读取请求。结构接口236向节点互连234提供读取请求242,节点互连234可以是如前所述的节点互连。
节点互连234向存储器232提供读取请求242,存储器232执行所请求的计算。在一个实施例中,存储器232计算并存储来自存储在存储器232中的数据的结果。存储器232将结果作为数据244发送到请求节点210。数据244的路径将与读取请求242相反。
图2B是具有存储器计算资源的远程节点的远程写入计算的实施例的框图。系统204提供根据系统100的实施例的系统的一个示例。更具体地,系统204表示将由存储器计算资源执行的写操作。系统204表示由请求节点210通过结构220到执行节点230的写入的实施例。节点210及其组件在上面参照图2A描述,作为节点230的组件。
节点210通过结构220生成并发送写请求252。在一个实施例中,响应于写请求252,当节点230准备好执行计算以执行写请求时,存储器232生成并发送确认(ACK)254给节点210。在一个实施例中,存储器232在计算完成之前确认写请求,例如在计算开始时。在一个实施例中,存储器232然后计算并存储与写请求252相关联的数据。
图3A是节点的网络的节点的实施例的框图,其中存储器计算资源是可访问的以供远程节点执行。节点300表示具有一个或多个存储器计算资源332的系统节点。节点300包括核心310,其表示节点300的处理核心。在一个实施例中,节点300包括DIMM(双列直插式存储器模块)320或其他存储器模块。在一个实施例中,节点300包括HFI 330或其他结构接口。
核心310包括处理器312,其可以是或包括任何一个或多个处理器设备。处理器312可以包括单核或多核处理器,或其他处理器,或组合。核心310包括存储器控制器314,用于管理对节点300中的存储器资源的访问。更具体地,存储器控制器314管理对DIMM 320的读取和写入访问以及其他访问。在一个实施例中,存储器控制器314是与处理器312分离的独立组件。在一个实施例中,存储器控制器314与处理器312集成。在一个实施例中,处理器312包括由嵌入式存储器控制器代码管理的接口电路。核心310可以包括多个存储器控制器314,以单独管理对一个或多个存储器通道的访问。虽然没有具体示出,但是核心310包括由处理器312执行的主机操作系统,以及用于在节点300中提供功能的一个或多个应用或其他过程或服务。
DIMM 320包括存储器设备322。节点300可以包括多个DIMM 320。DIMM 320包括接口324,其提供一个或多个总线以与DIMM上的存储器设备322接合。接口324可以包括触点、信号线、收发器或其他硬件以及用于管理接口的相关联的逻辑。DIMM 320包括逻辑326,其表示存储器模块上的逻辑资源。在一个实施例中,逻辑326可以表示DIMM 320上的存储器的缓冲器或寄存器。在一个实施例中,逻辑326包括与核心310的处理器312分开的处理资源,用于执行存储器计算。在一个实施例中,存储器控制器314包括与处理器312分开的处理资源,用于执行存储器计算。存储器计算(comp)328表示节点300的存储器计算资源。存储器计算资源328提供节点300中的存储器执行本地存储器请求的计算以及执行远程存储器操作请求的操作的能力。
HFI 330暴露节点300的存储器计算资源。存储器计算资源332表示存储器计算资源328,以及节点300中的其他DIMM的任何其他存储器计算资源。在一个实施例中,HFI 330向核心130和其他核心暴露新接口来调用远程节点上的存储器操作。在一个实施例中,HFI300包括对传统接口的扩展,以使HFI能够处理来自远程节点的关于由存储器计算332指示的存储器操作的请求。计算332可以包括读取、写入或发现操作。在一个实施例中,相对于传统结构接口扩展HFI 330,以存储用于存储器控制器314和节点300中的其他存储器控制器的支持的存储器计算能力。
在一个实施例中,存储器控制器314相对于传统存储器控制器被扩展以支持来自HFI 330的存储器操作。在一个实施例中,存储器控制器314被扩展以注册到HFI 330以指示存储器支持哪个存储器计算操作328。在一个实施例中,存储器控制器314在复位时向HFI330注册。
存储器计算的传统应用仅限于本地使用。存在HFI通过存储器计算支持远程原子操作的提议。远程原子操作传统上将存储器数据加载到HFI高速缓存中,允许HFI执行一个或多个操作,并将结果存储回存储器。但是,远程原子操作不考虑语义来在结构上暴露存储器计算接口。传统的原子操作会污染远程HFI中的高速缓存存储器(如果使用的话)。传统的原子操作还会在远程节点中的片上互连中增加不必要的流量,这意味着更大的功率和更大的互连压力。因此,这种操作可能导致系统性能降级。传统的原子操作还会增加以下的延迟:请求、从存储器中获取数据、执行操作、并将其存储回存储器(或者如果有的话,在高速缓存中)。由于读取数据然后将数据写回,这样的操作使用双倍的存储器带宽来有效地获得所需的有用带宽。
在一个实施例中,HFI 330包括一个或多个代理334,其代表HFI处的向结构提供互连管理的过程或应用。代理的示例可以包括缓存代理、归属代理(例如,HA)、统一路径互连(UPI)代理或其他。缓存代理代表节点内的相干性代理,该相干性代理处理来自同一节点内的核心的存储器请求。因此,来自核心310的请求可以由HFI 330中的CHA处理。归属代理代表负责处理来自缓存代理的存储器请求的节点集群,并且充当用于存储器地址空间的部分的Home。在一个实施例中,一个管芯可以具有多个具有分布式地址空间映射的Home。根据所接收请求所针对的地址空间,HA可以将请求发送到同一节点的本地存储器,或者发送给UPI代理以将请求路由到节点300外部但在同一相干域内的处理器,或者通过HFI将请求发送到相干域之外的远程处理器。相干域指的是耦合到公共管理资源的资源集合。例如,通过存储器相干链路连接的所有处理器可以属于相同的相干域。
在一个实施例中,包括节点300的系统可以包括一个或多个相干域。在一个实施例中,该系统由通过结构互连连接的所有相干域组成。例如,HPC或数据中心可以由N个集群或服务器组成,这些集群或服务器可以使用结构相互通信。使用该结构,每个相干域可以将一些地址区域暴露给其他相干域。但是,不同相干域之间的访问并不相干。在这样的示例实现方式中,结构互连允许映射不同相干域之间的存储器范围的地址。存储器地址空间的这种映射可以促进远程节点之间的存储器资源的共享。
HFI 330包括处理来自以远程存储器为目标的本地核心310的请求的逻辑。这种逻辑使节点300能够通过结构对远程存储器资源进行远程请求。在一个实施例中,节点300连接的结构使得消息传递能够在节点之间传送远程存储器计算请求和发现请求。在一个实施例中,可以在L4层之上实现这种消息传递,以防止在较低层处进行改变的需要。
在一个实施例中,存储器控制器314向HFI 330注册以指示存储器计算328支持哪些存储器操作。在一个实施例中,存储器计算328是定义的能力类的部分,其中由唯一标识符标识单独的能力。因此,例如,存储器控制器314可以注册,并且HFI 330可以暴露一个或多个UUID(通用唯一标识符),并且基于UUID,其他远程节点将知道什么存储器计算328(和332到存储器计算332指示比存储器计算328更多的能力的程度)在节点300上可用。在一个实施例中,HFI 330可以包括UUID的定义,以便能够从远程节点或节点对等体识别远程存储器操作能力,以及识别其本地存储器计算322。在一个实施例中,每个UUID具有关于操作做什么、需要和接受什么操作数和参数方面的唯一的定义。
在节点300的操作中,将理解处理器312执行主机操作系统和一个或多个应用或其他过程。这些软件组件的执行产生存储器访问请求和处理数据的请求。在一个实施例中,扩展节点300内的系统软件以暴露诸如软件接口、服务调用或函数调用的机制,或其他机制,以使应用或进程能够发现对等节点的存储器计算能力。软件扩展可以包括,例如,使用暴露由HFI330暴露的发现机制的库,以使得能够生成对HFI的调用或请求来执行网络内的存储器计算能力的发现。
图3B是具有存储器控制器的节点的网络的节点的实施例的框图,该存储器控制器基于节点内的多个存储器计算资源来注册存储器计算功能。节点302提供图3A的节点300的“能力”观点的示例。
更具体地,存储器控制器314耦合到DIMM 340和350。DIMM 340或DIMM 350中的至少一个可以是图3A的本地DIMM 320的示例。在一个实施例中,DIMM 340或DIMM 350中的至少一个可以是存储器控制器314映射其地址空间的部分到的远程存储器资源。在一个实施例中,DIMM 340是一个远程节点上的远程存储器资源,DIMM 350是不同远程节点上的远程存储器资源。
考虑对大量数据执行计算操作H()的任务。假设H()可分解为函数F()和G()。在一个实施例中,F()和G()是相同的操作,并且将在单独的数据集上执行。存储器控制器314可以生成对数据的请求。对于存储器控制器314的节点本地的存储器资源,可以将请求发送到本地存储器资源以供执行。对于远程存储器资源,节点300可以通过结构将远程请求发送到其他节点。虽然这里通常称为远程存储器请求,但是这种远程请求可以称为代理请求。HFI可以作为代理。响应于存储器操作请求,DIMM 340可以对数据342执行函数F(),并且DIMM 350可以对数据352执行函数G()。
在一个实施例中,DIMM 340和DIMM 350都是远程节点处的存储器资源,并且F()和G()是等效函数。存储器控制器314处的函数H()使用由F()和G()生成的值来完成其操作。需要遍历大量数据的操作示例包括搜索给定元素的数据集(大规模数据并行)、计算页面级校验和、清零页面或其他任务的任务。对于大规模数据并行的操作,将理解当推出到存储器计算(推出到数据而不是在核心或HFI中执行)时,这样的操作可以更好地利用数据并行性。可以理解,页面级校验和的计算对于持久性存储器是有用的,以通过将其与现有的预先计算的校验和集合进行比较来确保远程节点上的数据确实是应用期望样子的数据。
作为简化说明,考虑以下数据库表
EMPL ID | 姓 | 年龄 | 邮政编码 |
1 | SMITH | 58 | 85249 |
2 | WAYNE | 23 | 85241 |
3 | HAYES | 45 | 47906 |
4 | LEE | 76 | 11249 |
… | … | … | … |
100000 | ZACH | 45 | 85251 |
对特定表的查询可以是返回邮政编码为“85251”的所有雇员,在该情况下,结果可能只是一组EMPL ID。这样的结果可以用位向量返回。作为另一个示例,对表的查询可以是返回30岁以下的所有雇员。无数其他示例是可能的。在这种情况下,要执行的计算或操作是大规模数据并行的。可以并行地对数据执行大量数据并行操作,而无需序列化或移入处理器高速缓存以进行操作。另外,在这种情况下,要发回的结果通常是是/否(例如:数据集中存在XYZ吗),或者更小的ID或位向量集(如上面的示例所示)。这里提供的远程或代理存储器请求的应用可以实现这种操作的高效计算,推送结构上的计算由远程节点的存储器层次结构执行。
图4是用于执行远程存储器计算的过程的实施例的流程图。过程400表示远程存储器计算请求的流程。用于远程存储器计算的这种流程可以根据如上针对系统100、系统202、系统204或节点300所描述的远程存储器计算的实施例。例如,过程400可以表示读取或写入流程。对于过程400的流程,节点1处的核心生成由节点2的存储器执行的请求。
节点1的核心生成数据请求。在一个实施例中,在核心处执行的应用需要数据并生成具有存储器地址的消息,其中存储用于远程存储器操作的参数。参数可以包括要执行的存储器操作和定义存储器操作的操作数的参数。
定义存储器操作的操作数的参数可以包括用于指示是否预期存储器计算的结果的参数。如果否,则不会将数据返回给请求者。在一个实施例中,如果期望结果,则应用可以提供存储器地址参数,该参数指示远程节点中存储结果的存储器地址。定义存储器操作的操作数的参数可以包括需要执行操作的一个或多个存储器范围。定义存储器操作的操作数的参数可以包括指示远程存储器操作是否需要保持相对于远程节点的相干性的参数。定义存储器操作的操作数的参数可以包括托管存储器设备的目标节点。
因此,计算元件向节点1内的HFI发送请求消息,402。在一个实施例中,核心以在从核心到HFI的片上互连上发送的命令的形式发出请求消息。在一个实施例中,HFI提取与远程节点执行请求相关联的远程存储器计算参数,404。因此,HFI可以准备远程请求和执行请求所需的参数(例如,存储器地址)。HFI通过结构将请求作为消息发送。在一个实施例中,HFI将请求和相关联的参数通过结构隧道传送到目标节点,406。
在一个实施例中,一旦节点2的HFI接收到请求,它就经由代理(例如,缓存代理)请求一组存储器行的所有权。HFI可以在不需要数据本身的情况下请求所有权,这可以允许存储器执行存储器操作而不将数据发送到HFI。在一个实施例中,HFI请求所有权以存储请求的参数(例如,存储器地址信息(mem_refs)和操作(ops))。HFI将消息发送到节点2的存储器控制器,408。在一个实施例中,HFI向存储器控制器发出命令,该存储器控制器托管作为参数提供的存储器引用。将理解,HFI可以包括机构(例如,映射数据结构)以指示节点中的哪个代理应该接收请求。例如,HFI可以包括一个或多个系统地址解码器。
在一个实施例中,HFI通常请求存储器地址空间的所有权,但是如果在执行存储器计算操作时不需要保证相干性,则不请求存储器地址空间的所有权。在一个实施例中,在应该保证相干性的情况下,HFI可以保持由存储器地址空间指示的行的所有权,直到操作结束。
在一个实施例中,节点2的存储器控制器提取请求中指示的存储器计算参数,410。这些参数可以由存储器描述符指向。在一个实施例中,如果HFI先前已获得行的所有权,则对描述符生成的读取将命中HFI的高速缓存。存储器控制器将计算命令提供给存储器设备,412。这样的命令可以包括参数和任何伴随的存储器引用。
节点2的存储器设备执行节点1请求的存储器计算,414。在一个实施例中,该请求指示需要响应,存储器设备生成所需的数据结果。在一个实施例中,请求指示不需要响应,在这种情况下,存储器设备可以简单地生成确认以发送回节点1。对于以下描述,数据结果和确认可以被认为是存储器计算的“结果”。
节点2的存储器设备将结果提供给存储器控制器,416。存储器控制器又可以将带有结果的回复提供给节点2的HFI,418。在一个实施例中,节点2的HFI生成对节点1的带结果的回复,并将带有结果的回复隧道传送到节点1的HFI,420。HFI可以将带有结果的回复提供给节点1的核心,节点1是存储器计算的请求者,422。
在一个实施例中,假设某些参数和操作在远程节点处被接收时应用。然而,如果存储器设备期望的参数不同于请求中所接收的,则在一个实施例中,存储器控制器扩展操作以传达不同的参数。例如,如果存储器设备期望两个操作并且仅接收到一个操作,则在一个实施例中,存储器控制器可以传达额外参数。在一个实施例中,如果目标HFI(即,“远程”HFI)不支持该请求或者如果存储器引用与实现存储器计算的存储器控制器不匹配,则在一个实施例中,接收HFI生成并返回NACK(否定的确认)。
图5是用于注册和发现远程存储器计算资源的过程的实施例的流程图。过程500表示远程存储器计算请求的流程。用于远程存储器计算的这种流程可以根据如上针对系统100、系统202、系统204或节点300所描述的远程存储器计算发现的实施例。在一个实施例中,发现流程是标准化的。在一个实施例中,发现流程特定于系统实现方式。发现流使具有存储器计算资源的网络节点能够枚举其接受和执行远程请求的能力。并非所有网络节点都必须具有要暴露的存储器计算能力。并非所有暴露存储器计算能力的网络节点都必须具有相同的要暴露的能力。出于系统500中的示例的目的,节点1是请求节点,节点2是接收或执行节点。
节点2的存储器子系统被初始化,例如与重置或其他条件有关。在一个实施例中,节点2的存储器控制器利用节点2的存储器资源执行初始化例程,502。在一个实施例中,作为初始化例程的一部分,存储器设备指示或者存储器控制器以其它方式发现存储器可以执行的一个或多个存储器计算函数F(),504。基于存储器资源的能力,存储器控制器可以指示其能力是什么。在一个实施例中,存储器控制器向节点2的HFI注册,506。在一个实施例中,节点2的HFI可以注册节点2上的每个存储器控制器以确定每个存储器控制器暴露什么存储器计算功能。在一个实施例中,向HFI注册包括向HFI提供UUID。在一个实施例中,存储器控制器指示功能,并且HFI存储针对所暴露的每个功能的UUID指示。HFI可以在本地存储存储器计算功能,其然后可以通过结构被远程节点访问。
在一个实施例中,节点1的核心生成对HFI的请求消息,例如来自应用的执行,510。在一个实施例中,HFI从消息中提取远程存储器计算参数,512。在一个实施例中,HFI在网络上识别目标节点是否包括执行命令所需的存储器计算能力。在一个实施例中,节点1的HFI向节点2的HFI发送发现请求,514。在一个实施例中,节点1的HFI隧道传送发现请求。在一个实施例中,节点1的HFI专门针对节点2请求与该请求相关联的特定存储器地址(例如,数据已经存储在节点2处)。在一个实施例中,节点1的HFI将发现发送到多个节点,例如以识别哪个节点存储数据以供稍后的计算。
节点2的HFI可以接收发现请求并隧道传送回复以指示可从节点2获得的函数F()或其他存储器计算能力,516。在一个实施例中,节点2的HFI指示对特定存储器计算功能请求的确认。在一个实施例中,节点2的HFI回复以指示在节点2处可获得多个(例如所有)存储器计算功能。节点1的HFI可以回复节点1的核心以使得能够在核心处执行以确定是否向节点2发送存储器计算命令。
应当理解,节点1的HFI(以及节点2的HFI,在其发挥发现作用时)可以映射它们所并入的系统的节点功能。例如,HFI可以包括地址解码器或其他机制或组合以执行这种映射。在一个实施例中,HFI将这种映射信息暴露给由核心执行的一个或多个应用。
图6是可以实现远程存储器计算的多节点网络的实施例的框图。系统600表示根据本文描述的任何实施例的节点的网络。在一个实施例中,系统600表示数据中心。在一个实施例中,系统600表示服务器群。在一个实施例中,系统600表示数据云或处理云。
一个或多个客户端602通过网络604向系统600发出请求。网络604表示一个或多个本地网络、或广域网、或组合。客户端602可以是人或机器客户端,其生成系统600执行操作的请求。系统600执行客户端602请求的应用或数据计算任务。
在一个实施例中,系统600包括一个或多个机架,其表示用于容纳和互连多个计算节点的结构和互连资源。在一个实施例中,机架610包括多个节点630。在一个实施例中,机架610托管多个刀片组件620。托管是指提供电力、结构或机械支持以及互连。刀片620可以指印刷电路板(PCB)上的计算资源,其中PCB容纳一个或多个节点630的硬件组件。在一个实施例中,刀片620不包括底盘或外壳或除机架610提供的之外的其他“盒子”。在一个实施例中,刀片620包括具有暴露的连接器的外壳,以连接到机架610。在一个实施例中,系统600不包括机架610,并且每个刀片620包括可以堆叠或以其他方式驻留靠近其他刀片并允许节点630的互连的底盘或外壳。
系统600包括结构670,其表示用于节点630的一个或多个互连器。在一个实施例中,结构670包括多个交换机672或路由器或在节点630之间路由信号的其他硬件。另外,结构670可以将系统600耦合到网络604以供客户端602访问。除了路由设备之外,还可以认为结构670包括将节点630耦合在一起的电缆或端口或其他硬件设备。在一个实施例中,结构670具有一个或多个相关联的协议以管理通过系统600的信号的路由。在一个实施例中,一个或多个协议至少部分地依赖于系统600中使用的硬件设备。
如图所示,机架610包括N个刀片620。在一个实施例中,除了机架610之外,系统600还包括机架650。如图所示,机架650包括M个刀片660。M不必与N相同;因此,可以理解,各种不同的硬件设备组件可以被使用,并通过结构670耦合在一起形成系统600。刀片660可以与刀片620相同或相似。节点630可以是如本文所述的任何类型的节点,并不一定都是同一类型的节点。系统600不限于是同质的,也不限于不是同质的。
为简单起见,仅详细示出了刀片620[0]中的节点。然而,系统600中的其他节点可以是相同或相似的。至少一些节点630是计算节点,具有处理器632和存储器640。计算节点指的是具有执行操作系统并且可以接收和处理一个或多个任务的处理资源(例如,一个或多个处理器)的节点。在一个实施例中,至少一些节点630是存储服务器节点,其中服务器作为处理资源632和存储器640。存储服务器指的是具有比计算节点更多的存储资源的节点,而不是具有用于执行任务的处理器,存储服务器包括处理资源以管理对存储服务器内的存储节点的访问。
在一个实施例中,节点630包括接口控制器634,其表示用于控制节点630对结构670的访问的逻辑。该逻辑可以包括用于互连到物理互连硬件的硬件资源。逻辑可以包括用于管理互连的软件或固件逻辑。在一个实施例中,接口控制器634是或包括主机结构接口,其可以是根据本文描述的任何实施例的结构接口。
节点630包括存储器子系统640。根据本文描述的实施例,存储器640包括存储器计算资源(comp)642,其表示存储器640执行存储器计算的一个或多个能力。如本文所述,系统600启用远程存储器操作。因此,节点630可以请求远程节点的存储器计算,其中用于计算的数据保持在执行节点的本地,而不是通过结构670发送或者不是从存储器发送到结构接口。响应于存储器计算的执行,执行节点可以向请求节点提供结果。
处理器632可包括一个或多个单独的处理器。每个单独的处理器可以包括单个处理单元、多核处理单元或组合。处理单元可以是诸如CPU(中央处理单元)的主处理器、诸如GPU(图形处理单元)的外围处理器或者组合。存储器640可以是或包括存储器设备和存储器控制器。
对存储器设备的引用可以应用于不同的存储器类型。存储器设备通常指易失性存储器技术。易失性存储器是这样的存储器,如果设备电力被中断,其状态(以及因此存储在其上的数据)是不确定的。非易失性存储器指的是这样的存储器,即使设备电力被中断,其状态也是确定的。动态易失性存储器需要刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器),或诸如同步DRAM(SDRAM)的一些变体。这里描述的存储器子系统可以与许多存储器技术兼容,例如DDR3(双数据速率版本3,由JEDEC(联合电子设备工程委员会)在2007年6月27日发布的原始版本,当前是版本21),DDR4(DDR版本4,JEDEC于2012年9月发布的初始规范),DDR4E(DDR版本4,扩展,目前由JEDEC讨论),LPDDR3(低功耗DDR版本3,JESD209-3B,2013年8月由JEDEC),LPDDR4(低功率双倍数据速率(LPDDR)版本4,JESD209-4,最初由JEDEC于2014年8月出版),WIO2(宽I/O 2(WideIO2),JESD229-2,最初由JEDEC于2014年8月出版),HBM(高带宽存储器DRAM,JESD235,最初由JEDEC于2013年10月出版),DDR5(DDR版本5,目前由JEDEC讨论),LPDDR5(目前由JEDEC讨论),HBM2(HBM版本2,目前由JEDEC讨论),或其他或存储器技术的组合,以及基于这些规范的衍生物或扩展的技术。
除了易失性存储器之外或作为其替代,在一个实施例中,对存储器设备的引用可以指非易失性存储器设备,即使设备电力被中断,其状态也是确定的。在一个实施例中,非易失性存储器设备是块可寻址存储器设备,例如NAND或NOR技术。因此,存储器设备还可以包括下一代非易失性设备,诸如三维交叉点(3DXP)存储器设备、其他字节可寻址非易失性存储器设备或使用硫属化物相变材料(例如,硫属化物玻璃)的存储器设备。在一个实施例中,存储器设备可以是或包括多阈值级NAND闪存、NOR闪存、单级或多级相变存储器(PCM)或具有交换机的相变存储器(PCMS)、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、包括忆阻器技术的磁阻随机存取存储器(MRAM)存储器或自旋转移力矩(STT)-MRAM,或上述任何的组合或其他存储器。
图7是用于多节点网络的计算系统的实施例的框图,其中可以实现远程存储器计算。系统700表示根据本文描述的任何实施例的计算设备,并且可以是节点的网络中的节点。因此,系统700可以表示刀片服务器或刀片的计算节点(在刀片包括多个节点的实现方式中)或存储服务器或其他计算节点。系统700包括存储器资源,如下面更详细描述的。
系统700包括处理器710,其为系统700提供处理、操作管理和指令的执行。处理器710可包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心或其他处理硬件,以为系统700或处理器的组合提供处理。处理器710控制系统700的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或这些设备的组合。
在一个实施例中,系统700包括耦合到处理器710的接口712,处理器710可以表示需要更高带宽连接的系统组件的更高速接口或高吞吐量接口,例如存储器子系统720或图形接口组件740。接口712可以表示“北桥”电路,其可以是独立组件或集成到处理器管芯上。图形接口740与图形组件接合,用于向系统700的用户提供视觉显示。在一个实施例中,图形接口740基于存储在存储器730中的数据或基于由处理器710执行的操作或两者来生成显示。
存储器子系统720表示系统700的主存储器,并且为将由处理器710执行的代码或将在执行例程中使用的数据值提供存储。存储器子系统720可以包括一个或多个存储器设备730,诸如只读存储器(ROM)、闪存、一种或多种随机存取存储器(RAM)或其他存储器设备,或这些设备的组合。除了其它别的之外,存储器730存储和托管操作系统(OS)732以提供用于在系统700中执行指令的软件平台。另外,应用734可以从存储器730在OS 732的软件平台上执行。应用734代表具有其自己的操作逻辑来执行一个或多个功能的执行的程序。过程736表示向OS 732或一个或多个应用734或组合提供辅助功能的代理或例程。OS 732、应用734和过程736提供为系统700提供功能的逻辑。在一个实施例中,存储器子系统720包括存储器控制器722,其是用于生成命令并向存储器730发出命令的存储器控制器。可以理解,存储器控制器722可以是处理器710的物理部分或接口712的物理部分。例如,存储器控制器722可以是集成存储器控制器,集成到具有处理器710的电路上。
虽然没有具体示出,但是应该理解,系统700可以包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线等。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者通信地和电气地耦合组件。总线可以包括物理通信线路、点对点连接、桥接器、适配器、控制器或其他电路或组合。总线可以包括例如系统总线、外围组件互连(PCI)总线、HyperTransport或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(通常称为“Firewire”)中的一个或多个。
在一个实施例中,系统700包括接口714,其可以耦合到接口712。接口714可以是相较接口712的低速接口。在一个实施例中,接口714可以是“南桥”电路,其可以包括独立组件和集成电路。在一个实施例中,多个用户界面组件或外围组件或两者耦合到接口714。网络接口750向系统700提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口750可以包括以太网适配器、无线互连组件、USB(通用串行总线)或基于其他有线或无线标准的或专有接口。网络接口750可以与远程设备交换数据,远程设备可以包括发送存储在存储器中的数据或接收要存储在存储器中的数据。
在一个实施例中,系统700包括一个或多个输入/输出(I/O)接口760。I/O接口760可以包括用户通过其与系统700交互的一个或多个接口组件(例如,音频、字母数字、触觉/触摸或其他接口)。外围接口770可以包括上面没有具体提到的任何硬件接口。外围设备通常指的是依赖于系统700连接的设备。从属连接是系统700提供操作执行以及用户与之交互的软件平台或硬件平台或两者的连接。
在一个实施例中,系统700包括以非易失性方式存储数据的存储子系统780。在一个实施例中,在某些系统实现方式中,存储设备780的至少某些组件可以与存储器子系统720的组件重叠。存储子系统780包括存储设备784,其可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如一个或多个基于磁性、固态或光学的盘,或其组合。存储设备784保持处于持久状态的代码或指令和数据786(即,尽管系统700的电力被中断,仍保留该值)。存储设备784可以一般被认为是“存储器”,尽管存储器730通常是向处理器710提供指令的执行或操作存储器。而存储设备784是非易失性的,存储器730可以包括易失性存储器(即,如果系统700的电力被中断,数据的值或状态是不确定的)。在一个实施例中,存储子系统780包括与存储设备784接合的控制器782。在一个实施例中,控制器782是接口714或处理器710的物理部分,或者可以包括处理器710和接口714中的电路或逻辑。
电源702向系统700的组件提供电力。更具体地,电源702通常与系统702中的一个或多个供电装置704接合,以向系统700的组件提供电力。在一个实施例中,供电装置704包括AC到DC(交流到直流)适配器,用于插入墙上插座。这种AC电力可以是可再生能源(例如,太阳能)电源702。在一个实施例中,电源702包括DC电源,例如外部AC到DC转换器。在一个实施例中,电源702或供电装置704包括无线充电硬件,以经由接近充电场来充电。在一个实施例中,电源702可包括内部电池或燃料电池源。
系统700示出了存储器子系统720中的存储器计算790,其表示系统700的一个或多个存储器计算能力。在一个实施例中,系统700包括到结构接口的互连,并且可以根据本文描述的任何实施例将存储器计算790暴露给结构接口。结构接口将存储器计算暴露给网络中的其他节点,并且可以发现远程存储器计算能力。系统700可以接收远程存储器计算请求以在存储器计算790中执行一个或多个操作,根据本文描述的任何实施例,该计算将不需要将数据发送到HFI,或者跨结构发送到远程请求者。
在一个方面,节点的网络中的节点包括:结构接口,用于耦合到节点的网络;处理器,用于在节点处执行操作;以及存储器子系统,其具有与处理器分离的存储器计算资源;其中存储器子系统接收来自远程节点处理器的对存储器计算的请求,并且响应于该请求,在存储器子系统处本地地执行计算并将计算的结果发送到远程节点。
在一个实施例中,节点包括数据中心中的服务器的节点。在一个实施例中,结构接口包括主机结构接口(HFI),用于耦合到主机交换结构。在一个实施例中,结构接口用于接收通过结构协议隧道传送的请求,并通过结构协议将结果隧道传送到远程节点。在一个实施例中,存储器子系统还包括存储器控制器,存储器控制器用于向结构接口注册存储器计算资源的能力。在一个实施例中,结构接口用于将存储器计算资源的能力暴露给网络中的其他节点。在一个实施例中,结构接口用于暴露与存储器计算资源的能力相对应的通用唯一标识符(UUID)。在一个实施例中,结果包括从计算得到的数据。在一个实施例中,结果包括计算的执行的确认消息而没有结果数据。在一个实施例中,存储器子系统将结果数据本地地存储在存储器子系统处。
在一个方面,处理系统中的节点的网络:互连结构;以及多个节点经由互连结构耦合,其中一个节点包括:结构接口,用于耦合到互连结构;处理器,用于在节点处执行操作;以及存储器子系统,其具有与处理器分离的存储器计算资源;其中第一节点向第二节点提供对存储器计算的请求,以使第二节点处的存储器子系统在第二节点的存储器子系统处本地地执行计算,并将计算的结果发送到第一节点。
在一个实施例中,第一节点包括处理节点,第二节点包括处理节点。在一个实施例中,第一节点包括处理节点,第二节点包括存储服务器。在一个实施例中,第一节点将请求通过结构隧道传送到第二节点,第二节点将结果通过结构隧道传送到第一节点。在一个实施例中,存储器子系统还包括存储器控制器,存储器控制器用于向结构接口注册存储器计算资源的能力。在一个实施例中,结构接口用于将存储器计算资源的能力暴露给网络中的其他节点。在一个实施例中,结构接口用于暴露与存储器计算资源的能力相对应的通用唯一标识符(UUID)。在一个实施例中,还包括第一节点,用于向第二节点发送发现第二节点的存储器计算资源的发现请求。在一个实施例中,第二节点用于将结果数据本地地存储在第二节点的存储器子系统处。
在一个方面,一种在节点的网络中操作的方法包括:在目标节点处通过互连结构从远程节点接收对存储器计算的请求;响应于接收到该请求,在目标节点的存储器子系统处本地地执行存储器计算;并将计算的结果发送给远程节点。
在一个实施例中,目标节点和远程节点包括数据中心中的服务器的节点。在一个实施例中,接收请求包括在耦合到互连结构的目标节点的主机结构接口(HFI)处接收请求。在一个实施例中,接收请求包括接收通过互连结构隧道传送的消息。在一个实施例中,还包括:向结构接口注册存储器计算,结构接口将存储器计算暴露给远程节点。在一个实施例中,结构接口用于暴露与存储器计算资源的能力相对应的通用唯一标识符(UUID)。在一个实施例中,还包括:从远程节点接收发现目标节点的存储器计算能力的发现请求;并且响应于接收到该发现请求,暴露目标节点的一个或多个存储器计算能力。在一个实施例中,发送计算的结果包括发送从计算得到的数据。在一个实施例中,发送计算的结果包括发送执行计算的确认消息而不发送从计算得到的数据。在一个实施例中,还包括本地地存储从计算产生的数据。
在一个方面,一种装置包括用于执行操作以执行根据节点的网络中的上述操作的方法的任何实施例的方法的单元。在一个方面,一种制品包括其上存储有内容的计算机可读存储介质,所述内容在被执行时使机器执行操作以执行根据节点的网络中的上述操作的方法的任何实施例的方法。
如本文所示的流程图提供了各种过程动作的序列的示例。流程图可以指示由软件或固件例程执行的操作以及物理操作。在一个实施例中,流程图可以示出有限状态机(FSM)的状态,其可以以硬件、软件或组合来实现。尽管以特定次序或顺序示出,但除非另有说明,否则可以修改动作的顺序。因此,所示实施例应仅被理解为示例,并且该过程可以以不同顺序执行,并且一些动作可以并行执行。另外,在各种实施例中可以省略一个或多个动作;因此,并非在每个实施例中都需要所有动作。其他流程也是可能的。
在本文中描述各种操作或功能的程度上,可以将它们描述或定义为软件代码、指令、配置、数据或组合。内容可以直接可执行(“对象”或“可执行程序”形式)、源代码或差异代码(“增量”或“补丁”代码)。这里描述的实施例的软件内容可以经由其上存储有内容的制品提供,或者经由操作通信接口以经由通信接口发送数据的方法提供。机器可读存储介质可以使机器执行所描述的功能或操作,并且包括以可由机器(例如,计算设备、电子系统等)访问的形式存储信息的任何机制,例如可记录/非可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括与任何硬连线、无线、光学等介质接合以与另一设备通信的任何机制,例如存储器总线接口、处理器总线接口、因特网连接、磁盘控制器等。可以通过提供配置参数或发送信号或两者来配置通信接口,以准备通信接口以提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
本文描述的各种组件可以是用于执行所描述的操作或功能的单元。这里描述的每个组件包括软件、硬件或这些的组合。组件可以实现为软件模块、硬件模块、专用硬件(例如,应用特定硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
除了在此描述的内容之外,在不脱离本发明的公开的实施例和实现方式的范围的情况下,可以对它们进行各种修改。因此,本文的说明和示例应当被解释为说明性的而非限制性的。应该仅通过参考下面的权利要求来考量本发明的范围。
Claims (25)
1.一种节点的网络中的节点,包括:
结构接口,用于经由互连结构耦合到所述节点的网络;
处理器,用于在所述节点处执行操作;以及
存储器子系统,其具有与所述处理器分离的存储器计算资源;
其中,所述存储器子系统接收来自远程节点处理器的针对存储器计算的请求,并且响应于所述请求,在所述存储器子系统处本地地执行所述计算并且将所述计算的结果发送到所述远程节点。
2.如权利要求1所述的节点,其中,所述节点包括数据中心中的服务器的节点。
3.如权利要求1至2中任一项所述的节点,其中,所述结构接口包括用于耦合到主机交换结构的主机结构接口(HFI)。
4.如权利要求1至3中任一项所述的节点,其中,所述结构接口用于接收通过结构协议隧道传送的所述请求,并且用于通过所述结构协议将所述结果隧道传送到所述远程节点。
5.如权利要求1至4中任一项所述的节点,其中,所述存储器子系统还包括存储器控制器,所述存储器控制器用于向所述结构接口注册所述存储器计算资源的能力。
6.如权利要求5所述的节点,其中,所述结构接口用于向所述网络中的其他节点暴露所述存储器计算资源的能力。
7.如权利要求1至6中任一项所述的节点,其中,所述结构接口用于暴露与所述存储器计算资源的能力相对应的通用唯一标识符(UUID)。
8.如权利要求1至7中任一项所述的节点,其中,所述结果包括从所述计算得到的数据。
9.如权利要求1至7中任一项所述的节点,其中,所述结果包括所述计算的执行的确认消息而没有结果数据。
10.如权利要求1至9中任一项所述的节点,其中,所述存储器子系统用于在所述存储器子系统处本地地存储结果数据。
11.如权利要求1至10中任一项所述的节点,其中,所述远程节点包括处理节点,并且所述节点包括处理节点。
12.如权利要求1至10中任一项所述的节点,其中,所述远程节点包括处理节点,并且所述节点包括存储服务器。
13.如权利要求1所述的节点,还包括所述远程节点用于向所述节点发送发现请求以发现所述节点的所述存储器计算资源。
14.一种在节点的网络中操作的方法,包括:
通过互连结构在目标节点处接收来自远程节点的针对存储器计算的请求;
响应于接收到所述请求,在所述目标节点的存储器子系统处本地地执行所述存储器计算;以及
将所述计算的结果发送到所述远程节点。
15.如权利要求14所述的方法,其中,所述目标节点和所述远程节点包括数据中心中的服务器的节点。
16.如权利要求14至15中任一项所述的方法,其中,接收所述请求包括在耦合到所述互连结构的所述目标节点的主机结构接口(HFI)处接收所述请求。
17.如权利要求14至16中任一项所述的方法,其中,接收所述请求包括接收通过所述互连结构隧道传送的消息。
18.如权利要求14至17中任一项所述的方法,还包括:
向结构接口注册所述存储器计算,所述结构接口用于向所述远程节点暴露所述存储器计算。
19.如权利要求14至18中任一项所述的方法,其中,所述结构接口用于暴露与所述存储器计算资源的能力相对应的通用唯一标识符(UUID)。
20.如权利要求14至19中任一项所述的方法,还包括:
接收来自所述远程节点的、用于发现所述目标节点的存储器计算能力的发现请求;以及
响应于接收到所述发现请求,暴露所述目标节点的一个或多个存储器计算能力。
21.如权利要求14至20中任一项所述的方法,其中,发送所述计算的结果包括发送从所述计算得到的数据。
22.如权利要求14至21中任一项所述的方法,其中,发送所述计算的结果包括发送所述计算的执行的确认消息而不发送从所述计算得到的数据。
23.如权利要求14至22中任一项所述的方法,还包括:
本地地存储从所述计算得到的数据。
24.一种装置,所述装置包括用于执行用于根据权利要求14至22中的任一实施例执行在节点的网络中操作的方法的操作的单元。
25.一种制品,包括其上存储有内容的计算机可读存储介质,所述内容当被执行时,使机器执行用于根据权利要求14至22中的任一实施例执行在节点的网络中操作的方法的操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/201,373 | 2016-07-01 | ||
US15/201,373 US10509738B2 (en) | 2016-07-01 | 2016-07-01 | Remote memory operations |
PCT/US2017/035719 WO2018004997A1 (en) | 2016-07-01 | 2017-06-02 | Remote memory operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109196829A true CN109196829A (zh) | 2019-01-11 |
CN109196829B CN109196829B (zh) | 2021-09-03 |
Family
ID=60787805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780033700.2A Active CN109196829B (zh) | 2016-07-01 | 2017-06-02 | 远程存储器操作 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10509738B2 (zh) |
EP (1) | EP3479535B1 (zh) |
CN (1) | CN109196829B (zh) |
WO (1) | WO2018004997A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767033A (zh) * | 2020-05-21 | 2020-10-13 | 江苏中科重德智能科技有限公司 | 用于机械臂程序开发的编程系统及功能扩展方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10204075B2 (en) * | 2016-10-25 | 2019-02-12 | Zentific LLC | Systems and methods for facilitating interactions with remote memory spaces |
US10628233B2 (en) * | 2016-12-30 | 2020-04-21 | Samsung Electronics Co., Ltd. | Rack-level scheduling for reducing the long tail latency using high performance SSDS |
US11106427B2 (en) * | 2017-09-29 | 2021-08-31 | Intel Corporation | Memory filtering for disaggregate memory architectures |
US11481216B2 (en) * | 2018-09-10 | 2022-10-25 | Advanced Micro Devices, Inc. | Atomic operations in a large scale distributed computing network |
US11048434B2 (en) | 2018-09-28 | 2021-06-29 | Intel Corporation | Compute in memory circuits with time-to-digital computation |
US10877752B2 (en) | 2018-09-28 | 2020-12-29 | Intel Corporation | Techniques for current-sensing circuit design for compute-in-memory |
US10748603B2 (en) | 2018-09-28 | 2020-08-18 | Intel Corporation | In-memory multiply and accumulate with global charge-sharing |
US11061819B2 (en) * | 2019-05-28 | 2021-07-13 | Micron Technology, Inc. | Distributed computing based on memory as a service |
US11347477B2 (en) * | 2019-09-27 | 2022-05-31 | Intel Corporation | Compute in/near memory (CIM) circuit architecture for unified matrix-matrix and matrix-vector computations |
US12019768B2 (en) * | 2020-03-26 | 2024-06-25 | Intel Corporation | Remote pooled memory device |
US20200242042A1 (en) * | 2020-03-26 | 2020-07-30 | Jonas Svennebring | System, Apparatus and Method for Performing a Remote Atomic Operation Via an Interface |
US12061562B2 (en) * | 2020-05-29 | 2024-08-13 | Netlist, Inc. | Computer memory expansion device and method of operation |
US11966330B2 (en) * | 2020-06-05 | 2024-04-23 | Intel Corporation | Link affinitization to reduce transfer latency |
US11657007B2 (en) | 2020-06-15 | 2023-05-23 | Rambus Inc. | Remote memory selection |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080307178A1 (en) * | 2007-05-31 | 2008-12-11 | International Business Machines Corporation | Data migration |
US20100269027A1 (en) * | 2009-04-16 | 2010-10-21 | International Business Machines Corporation | User level message broadcast mechanism in distributed computing environment |
US20100281166A1 (en) * | 2007-11-09 | 2010-11-04 | Manjrasoft Pty Ltd | Software Platform and System for Grid Computing |
CN102150147A (zh) * | 2008-07-03 | 2011-08-10 | 惠普开发有限公司 | 存储器服务器 |
US20120222052A1 (en) * | 2011-02-25 | 2012-08-30 | Oracle International Corporation | Peer-to-peer transcendent memory |
CN103645953A (zh) * | 2008-08-08 | 2014-03-19 | 亚马逊技术有限公司 | 向执行中的程序提供对非本地块数据存储装置的可靠访问 |
CN103970670A (zh) * | 2013-01-31 | 2014-08-06 | 国际商业机器公司 | 用于使用rdma的数据传输的方法和设备 |
US20150012679A1 (en) * | 2013-07-03 | 2015-01-08 | Iii Holdings 2, Llc | Implementing remote transaction functionalities between data processing nodes of a switched interconnect fabric |
CN104395897A (zh) * | 2012-05-14 | 2015-03-04 | 超威半导体公司 | 服务器节点互连装置和方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7606933B2 (en) | 2004-02-11 | 2009-10-20 | Cray Canada Corporation | Shared memory and high performance communication using interconnect tunneling |
US7293021B1 (en) * | 2004-07-23 | 2007-11-06 | Microsoft Corporation | Method and system for providing dynamic capability discovery and use |
US8123359B2 (en) | 2007-07-13 | 2012-02-28 | Sanyo Electric Co., Ltd. | Illumination apparatus and projection display apparatus |
US7782869B1 (en) * | 2007-11-29 | 2010-08-24 | Huawei Technologies Co., Ltd. | Network traffic control for virtual device interfaces |
US7925842B2 (en) | 2007-12-18 | 2011-04-12 | International Business Machines Corporation | Allocating a global shared memory |
US8352868B2 (en) | 2008-06-27 | 2013-01-08 | Google Inc. | Computing with local and remote resources including user mode control |
US7996564B2 (en) * | 2009-04-16 | 2011-08-09 | International Business Machines Corporation | Remote asynchronous data mover |
US9767070B2 (en) * | 2009-11-06 | 2017-09-19 | Hewlett Packard Enterprise Development Lp | Storage system with a memory blade that generates a computational result for a storage device |
US8819690B2 (en) | 2009-12-30 | 2014-08-26 | International Business Machines Corporation | System for reducing data transfer latency to a global queue by generating bit mask to identify selected processing nodes/units in multi-node data processing system |
US20120324567A1 (en) * | 2011-06-17 | 2012-12-20 | General Instrument Corporation | Method and Apparatus for Home Network Discovery |
US9846540B1 (en) * | 2013-08-19 | 2017-12-19 | Amazon Technologies, Inc. | Data durability using un-encoded copies and encoded combinations |
US9250914B2 (en) * | 2013-12-20 | 2016-02-02 | Intel Corporation | Method and apparatus for selecting cache locality for atomic operations |
KR20160033505A (ko) | 2014-09-18 | 2016-03-28 | 한국전자통신연구원 | 원격 메모리 제공 시스템 및 원격 메모리 제공을 위한 임시페이지 풀 운영 방법 |
US10257273B2 (en) * | 2015-07-31 | 2019-04-09 | Netapp, Inc. | Systems, methods and devices for RDMA read/write operations |
US20170289242A1 (en) | 2016-03-31 | 2017-10-05 | David Keppel | Technologies for dynamic work queue management |
-
2016
- 2016-07-01 US US15/201,373 patent/US10509738B2/en active Active
-
2017
- 2017-06-02 EP EP17820859.1A patent/EP3479535B1/en active Active
- 2017-06-02 WO PCT/US2017/035719 patent/WO2018004997A1/en unknown
- 2017-06-02 CN CN201780033700.2A patent/CN109196829B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080307178A1 (en) * | 2007-05-31 | 2008-12-11 | International Business Machines Corporation | Data migration |
US20100281166A1 (en) * | 2007-11-09 | 2010-11-04 | Manjrasoft Pty Ltd | Software Platform and System for Grid Computing |
CN102150147A (zh) * | 2008-07-03 | 2011-08-10 | 惠普开发有限公司 | 存储器服务器 |
CN103645953A (zh) * | 2008-08-08 | 2014-03-19 | 亚马逊技术有限公司 | 向执行中的程序提供对非本地块数据存储装置的可靠访问 |
US20100269027A1 (en) * | 2009-04-16 | 2010-10-21 | International Business Machines Corporation | User level message broadcast mechanism in distributed computing environment |
US20120222052A1 (en) * | 2011-02-25 | 2012-08-30 | Oracle International Corporation | Peer-to-peer transcendent memory |
CN104395897A (zh) * | 2012-05-14 | 2015-03-04 | 超威半导体公司 | 服务器节点互连装置和方法 |
CN103970670A (zh) * | 2013-01-31 | 2014-08-06 | 国际商业机器公司 | 用于使用rdma的数据传输的方法和设备 |
US20150012679A1 (en) * | 2013-07-03 | 2015-01-08 | Iii Holdings 2, Llc | Implementing remote transaction functionalities between data processing nodes of a switched interconnect fabric |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767033A (zh) * | 2020-05-21 | 2020-10-13 | 江苏中科重德智能科技有限公司 | 用于机械臂程序开发的编程系统及功能扩展方法 |
CN111767033B (zh) * | 2020-05-21 | 2023-08-25 | 江苏中科重德智能科技有限公司 | 用于机械臂程序开发的编程系统及功能扩展方法 |
Also Published As
Publication number | Publication date |
---|---|
US10509738B2 (en) | 2019-12-17 |
US20180004687A1 (en) | 2018-01-04 |
EP3479535A4 (en) | 2020-01-15 |
WO2018004997A1 (en) | 2018-01-04 |
CN109196829B (zh) | 2021-09-03 |
EP3479535B1 (en) | 2023-05-03 |
EP3479535A1 (en) | 2019-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109196829A (zh) | 远程存储器操作 | |
JP6953488B2 (ja) | ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法 | |
US11416295B2 (en) | Technologies for providing efficient access to data in an edge infrastructure | |
US20240314072A1 (en) | Network interface for data transport in heterogeneous computing environments | |
KR102204751B1 (ko) | 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜 | |
US20190068444A1 (en) | Technologies for providing efficient transfer of results from accelerator devices in a disaggregated architecture | |
CN105408880B (zh) | 对共享存储装置的持久存储器的直接访问 | |
CN105830059B (zh) | 文件访问方法、装置及存储设备 | |
EP3465444B1 (en) | Data access between computing nodes | |
US20170353576A1 (en) | Method and apparatus for remote prefetches of variable size | |
US20150325272A1 (en) | In-memory lightweight coherency | |
CN111190553A (zh) | 使用混合存储器立方体链路的互连系统及方法 | |
US20220004488A1 (en) | Software drive dynamic memory allocation and address mapping for disaggregated memory pool | |
US11675326B2 (en) | Method and apparatus for remote field programmable gate array processing | |
KR20110028211A (ko) | 자율 메모리 아키텍처 | |
KR20110028212A (ko) | 자율 서브시스템 아키텍처 | |
CN105516313A (zh) | 一种用于大数据的分布式存储系统 | |
CN115443453A (zh) | 用于减少传输延迟的链路关联 | |
US12079506B2 (en) | Memory expander, host device using memory expander, and operation method of sever system including memory expander | |
CN115357182A (zh) | 分层存储器系统中的对象管理 | |
EP3343384A1 (en) | Data operations performed between computing nodes using direct memory access (dma) | |
TW202215251A (zh) | 用於合併及分層資料架構的適應性路由 | |
US11899585B2 (en) | In-kernel caching for distributed cache | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
CN109582220A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |