CN112527730A - 用于处理具有设备附接的存储器的远程直接存储器存取操作的***、装置和方法 - Google Patents
用于处理具有设备附接的存储器的远程直接存储器存取操作的***、装置和方法 Download PDFInfo
- Publication number
- CN112527730A CN112527730A CN202010577319.6A CN202010577319A CN112527730A CN 112527730 A CN112527730 A CN 112527730A CN 202010577319 A CN202010577319 A CN 202010577319A CN 112527730 A CN112527730 A CN 112527730A
- Authority
- CN
- China
- Prior art keywords
- write request
- data
- processor
- memory
- host processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/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/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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
- G06F13/1684—Details of memory controller using multiple buses
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,一种处理器包括:一个或多个核心,所述一个或多个核心用于执行指令;至少一个高速缓存存储器;以及一致性电路,所述一致性电路耦合到至少一个高速缓存存储器。一致性电路可以具有直接存储器存取电路,以接收写入请求,并且至少部分地基于写入请求的地址,将写入请求直接发送到经由第一总线耦合到处理器的设备,以引起设备将写入请求的数据存储到设备附接的存储器。描述并且要求保护其它实施例。
Description
技术领域
实施例涉及计算***中的通信。
背景技术
远程直接存储器存取(RDMA)是在具有网络化高带宽加速器的计算平台中使用的特征。在没有主机处理器的参与或没有调用操作***的情况下,RDMA技术可以用于将网络上的DMA读取和写入的过程从存储器缓冲器中卸载。这种技术通过经由先前注册的用户空间映射地址范围来提供对存储器的直接存取,从而有助于规避***瓶颈。
当这种RDMA流被引导到除主机处理器之外的设备(诸如,引导到具有本地附接的一致性存储器的加速器设备)时,因为通常这种事务仍然涉及主机处理器,所以会出现复杂性。在其他问题之中,该交互可能会增大时延并且减少有用的带宽。
附图说明
图1是根据实施例的***的块图。
图2是根据本发明的实施例的方法的流程图。
图3是根据本发明的另一个实施例的方法的流程图。
图4是示出根据本发明的实施例的直接存储操作的操作的时序图。
图5是根据本发明的另一个实施例的方法的流程图。
图6是示出根据本发明的另一个实施例的偏置翻转操作的操作的时序图。
图7是根据本发明的另一个实施例的***的块图。
图8是根据实施例的SoC设计的实施例的块图。
图9是根据本发明的另一个实施例的***的块图。
具体实施方式
在各种实施例中,可以基于地址范围信息,根据分配流或非分配流来自动选择是否要存储从网络设备到主机处理器的传入数据。例如,主机处理器可以基于地址范围机制将传入的RDMA事务识别为被引导到***存储器(耦合到主机处理器)或设备附接的存储器(耦合到加速器设备,进而耦合到主机处理器)。在没有提示的情况下,主机处理器可以执行这种地址解码,所述提示包括在来自源输入/输出(I/O)设备的原始RDMA请求中,或者由网络接口卡(NIC)或其他居间网络电路附加到请求。如本文进一步描述的,具有宽松排序(RO)语义并且被引导到设备附接的目的地的传入的***部件互连高速(PCIe)事务可以作为直接存储从主机处理器直接发送到设备(用于递送到设备附接的存储器),而没有通过主机处理器的预取操作,这将触发用于事务的数据的所有权或偏置翻转。此外,可以优化偏置翻转流,使得其是来自设备的响应的一部分,而不是来自设备的将触发额外消息的新请求。
实施例可以结合各种不同的RDMA通信来使用。在特定的实施例中,加速器设备可以是图形加速器,所述图形加速器可以利用如本文所描述的图形处理单元(GPU)直接流。应当理解,实施例同样适用于集群加速器。此外,尽管本文描述的示例性实施例结合诸如根据CXL规范版本1.1的基于计算快速链路(CXL)规范的链路。在其他实施例中,通信可以根据其他一致性互连技术,例如IBM Xbus协议、Nvidia NVLink协议、AMD Infinity Fabric协议、用于加速器的高速缓存一致性互连(CCIX)协议或一致性加速器处理器接口(OpenCAPI)。
图1是根据实施例的***的块图。在图1中,***100可以是任何类型的计算设备;然而,为了说明的目的,假设***100是服务器***(或其部分),其中,各种设备可以以网络化布置耦合。如图所示,一个或多个I/O设备190耦合到NIC 180,进而经由第一互连142耦合到主机处理器145。在实施例中,互连142可以使用基于以太网的通信协议来操作;当然,其它实施方式也是可能的。
如图所示,I/O设备190经由网络185耦合到NIC 180。网络185可以采取任何合适的计算机网络的形式,包括基于因特网的网络。通过这里的布置,可以接收来自I/O设备190的传入的高速通信,所述高速通信可以被引导到加速器存储器130,进而耦合到设备105,所述设备105可以是某种类型的加速器设备。这样的通信可以是可以用根据实施例的优化处理流程来处理的RDMA通信。
如图1所示,NIC 180包括RDMA电路182。在本文的实施例中,RDMA电路182可以被配置成从一个或多个I/O设备190接收传入的RDMA请求,并且将它们引导到主机处理器145上而不执行对请求的任何分析,以用于附加TLP提示等的目的。这样,这些通信可以以优化的方式通过NIC 180并且到达主机处理器145上。此外,可以减少在NIC 180中执行的分组处理的复杂度。
如图1所示,设备105可以是经由互连189耦合到主机处理器145的加速器或处理器设备,所述互连189可以是单个互连、总线、迹线等等。设备105和主机处理器145可以通过链路189通信,以使数据和消息能够在其间传递。在一些实施例中,链路189可操作用于支持多个协议以及经由多个互连协议(包括如本文所述的CXL协议)的数据和消息的通信。例如,链路189可以支持各种互连协议,包括非一致性互连协议、一致性互连协议和存储器互连协议。支持的互连协议的非限制性示例可以包括PCI、PCIe、USB、IDI、IOSF、SMI、SMI3、SATA、CXL.io、CXL.cache和CXL.mem和/或类似协议。
在实施例中,设备105可以包括加速器逻辑125,所述加速器逻辑125包括电路129。在一些实例中,加速器逻辑125和电路129可以提供处理和存储能力。设备105的示例可以包括生产者-消费者设备,诸如图形或其他专用加速器、生产者-消费者加设备、软件辅助设备存储器设备、自主设备存储器设备和巨型高速缓存设备。在一些情况下,加速器逻辑125可以耦合到可选的加速器存储器130。加速器逻辑125和电路129可以基于诸如图形功能的设备提供处理和存储能力。例如,加速器逻辑125和电路129可以使用例如用于各种功能的一致性互连协议来经由接口逻辑113和电路127与主机处理器145通信,所述各种功能例如是一致性请求和存储器流。接口逻辑113和电路127可以基于用于通信的消息和数据来确定互连协议。
此外,电路127可以被配置成以优化的方式处理传入的RDMA请求。例如,如本文进一步描述的,在将这种传入的RDMA写入请求引导到加速器存储器130的情况下,电路127可以被配置成执行到加速器存储器130中的直接写入,而不需要将与写入请求关联的一个或多个高速缓存行的偏置从设备偏置更新为主机偏置。更进一步,如本文进一步描述的,电路127可以被配置成响应于来自主机处理器145的传入的存储器无效请求而发出使用一次响应,所述使用一次响应通知主机处理器145设备105在不久的将来期望使用与存储器无效请求关联的数据,使得主机处理器145使用一次该数据,并且然后将该数据的所有权转让给设备105。在一些实施例中,接口逻辑113可以耦合到具有一个或多个协议队列112的多协议多路复用器110,以与主机处理器145发送和接收消息和数据。协议队列112可以是协议专用的,使得每个互连协议可以与特定的协议队列关联。多路复用器110还可以实施仲裁电路,以在不同协议的通信之间进行仲裁,并且将选定的通信提供到物理层115。
在各种实施例中,主机处理器145可以是诸如CPU的主处理器。主机处理器145可以耦合到主机存储器140,并且可以包括一致性逻辑(或一致性和高速缓存逻辑)155,所述一致性逻辑155可以包括高速缓存层次结构。一致性逻辑155可以使用各种互连与包括电路161的接口逻辑163和一个或多个核心165a-n通信。在一些实施例中,一致性逻辑155可以经由一致性互连协议和存储器互连协议中的一个或多个实现通信。如进一步所示,一致性逻辑155可以包括DMA电路157。在本文的实施例中,DMA电路157可以被配置成基于地址范围解码而自动地在分配流与非分配流之间进行选择,以用于处理传入的写入请求(例如,RDMA写入请求)。在没有由I/O设备190或NIC 180提供提示信息的情况下,可以发生这种自动选择。另外,当诸如传入的PCIe请求的传入请求具有宽松排序语义时,DMA电路157可以向设备105发送直接存储以用于存储在加速器存储器130中,而不执行预取操作以获得所有权。以此方式,实施例可以避免针对这种传入的写入请求的数据的从设备偏置到主机偏置的偏置翻转,从而优化处理流,并且减少主机处理器145与设备105之间的流量。
在各种实施例中,主机处理器145可以包括设备170,以通过互连与总线逻辑160进行通信。在一些实施例中,设备170可以是I/O设备,例如PCIe I/O设备。在其它情况下,诸如PCIe设备的一个或多个外部设备(其可以是I/O设备190中的一个或多个)可以耦合到总线逻辑160。
在实施例中,主机处理器145可以包括接口逻辑163和电路161,以实现在主机处理器145与设备105的部件之间的多协议通信。接口逻辑163和电路161可以根据一个或多个互连协议(例如,非一致性互连协议、一致性互连协议和存储器互连协议)动态地处理和实现主机处理器145和设备105之间的消息和数据的通信。例如,接口逻辑163和电路161可以确定每个消息的消息类型,并且确定多个互连协议中的哪个互连协议来处理每个消息。可以利用不同的互连协议来处理消息。
在一些实施例中,接口逻辑163可以耦合到具有一个或多个协议队列152的多协议多路复用器150,以与设备105发送和接收消息和数据。协议队列152可以是特定于协议的,使得每个互连协议可以与特定的协议队列关联。多路复用器150还可以实施仲裁电路,以在不同协议的通信之间进行仲裁,并且将选择的通信提供到物理层154。
现在参考图2,示出了根据本发明的实施例的方法的流程图。如图2所示,方法200是用于将传入的写入请求路由到适当目的地的方法。方法200可以由主机处理器内的电路执行,例如接收传入的写入请求的一致性电路。这样,方法200可以由硬件电路、固件、软件和/或其组合来执行。
如图所示,方法200开始于在主机处理器中接收写入请求(块210)。在实施例中,可以在一致性电路内接收该请求。假设该写入请求从NIC传入,所述NIC进而从诸如I/O设备的网络化设备接收该写入请求。在任何情况下,在菱形220处确定该写入请求是否具有设置事务层处理(TLP)处理提示(TPH)。通常,NIC将应用该TPH作为网络处理的一部分。然而,通过本文的实施例,可以避免确定适当目的地和应用TPH的NIC开销。
因此,如图所示,在典型的使用情况下,控制从菱形220传递到菱形230,在菱形230中确定传入的写入请求的地址是否在设备存储器内。在实施例中,该确定可以基于存在于一致性电路的一个或多个地址范围解码器中的信息。如果确定该地址位于设备存储器中,则控制传递到块240,在块240中可以将写入请求直接发送到设备,以用于写入到设备存储器中。在实施例中,该写入请求可以经由CXL总线传送到设备。
仍然参考图2,否则如果确定地址不在设备存储器中,则控制传递到菱形250,以确定平台默认设置是用于分配写入还是非分配写入。即,对于分配设置,写入请求的数据被直接分配到主机处理器的高速缓存存储器中,例如末级高速缓存(LLC)。这种分配写入布置的一个示例可以使用直接数据输入/输出(DDIO)技术来实施。对于这种或类似的技术,传入的写入请求被直接写入到主机LLC中,从而避免了将这种数据写出到存储器的开销。由于假定在不久的将来可能在主机处理器内存取这种数据,因此可以进行该操作。与非分配设置相反,可以将写入请求的数据写入到主机存储器中。
如果确定平台默认设置是用于分配写入,则控制传递到块260,在块260中写入请求的数据可以被分配到主机高速缓存存储器,例如LLC。否则,控制传递到块270,在块270中将写入请求的数据发送到主机存储器以用于存储。
仍然参考图2,如果确定传入的写入请求的TPH被设置,则控制传递到菱形280,在菱形280中确定TPH是否指示分配事务。如果是,则控制传递到块260,在块260中数据被存储在主机高速缓存存储器中。否则,控制传递到菱形285,在菱形285中确定地址是否在设备存储器中。如果是,则在块290处将数据写入到设备存储器。否则,控制传递到块270,在块270中数据被写入到主机存储器。应理解,虽然在图2的实施例中以这种高级别示出,但是许多变化和替代是可能的。
对于具有传入的RDMA事务的目的地的自动选择的实施例,可以实现改善的性能。相反,在没有实施例的情况下,实施IntelDDIO或类似技术的典型服务器平台将引起DMA写入被存储到主机处理器的内部高速缓存存储器中。虽然如果数据的消费者在处理器核心中,这效果很好,但是如果数据的消费者是加速器设备,则这是次优的。在这种情况下,DMA写入数据的理想位置是设备附接的存储器本身。理论上,NIC能够控制使用PCIe TPH将数据写入何处。然而,由于NIC不对主机物理地址进行操作,并且还不包含***地址映射,因此在没有相当大的开销的情况下,无法区分不同的写入。因此,对于实施例,NIC或其他硬件不需要对DMA数据位置(例如,基于工作描述符)做出运行时决定。在传入的事务中没有任何提示信息的情况下,实施例替代地能够自动选择。相反,在没有自动选择的情况下,确定PCIe写入分配给高速缓存存储器(分配)还是存储器(非分配)需要提示,例如,在逐个事务的基础上发送的TPH位。注意,主机处理器可以选择遵守或忽略该提示。如果没有提示被发送,则主机处理器基于平台默认设置来处理事务,所述平台默认设置可以是分配的或者非分配的。对于实施例,不需要设置TPH位或其它提示。并且,即使在具有分配默认策略的平台中,RDMA事务也可以直接写入到设备附接的存储器,这是最优的。
现在参考图3,示出了根据本发明的另一个实施例的方法的流程图。如图3所示,方法300是用于路由具有宽松排序的传入的写入请求的方法。方法300可以由主机处理器内的电路(例如一致性电路)执行。这样,方法300可以由硬件电路、固件、软件和/或其组合来执行。如图3所示,方法300开始于从I/O设备接收写入请求(块310)。如上所述,这种请求可以由主机处理器的一致性电路接收。接下来,在菱形320处可以确定是否设置了写入请求的宽松排序指示符。如果不是,则以排序的方式处理该写入请求。这样,控制传递到块330,在块330中可以相对于较早的事务对写入请求排序。这样,处理器确保该写入请求直到先前的存储器请求首先被执行才完成。
仍然参考图3,相反,如果确定宽松排序指示符被设置,则控制传递到块340,在块340中确定写入请求是否引导到设备存储器。在实施例中,可以存取地址解码器以确定写入请求的目的地。如果被引导到设备存储器,则在块350处将写入请求发送到设备作为对设备存储器的直接存储,从而避免了对首先执行主机预取以获得该数据要被存储到的行的所有权的需要。结果,针对被引导到设备存储器的传入的写入请求实现了简化事务流。更进一步地,设备本身也是有益的,因为它不受阻塞条目的影响,所述阻塞条目是由于主机预取和行的所有权而导致的该数据的设备偏置的丢失的结果,这在其他情况下将会发生。结果,实现了传入的设备写入请求的效率的改善。
仍然参考图3,如果确定请求没有被引导到设备存储器(即,请求被引导到主机存储器内的位置),则控制传递到块360,在块360中数据可以存储在适当的位置。更具体地,取决于平台默认设置是用于分配写入还是非分配写入,数据可以被存储在主机高速缓存存储器(在分配默认设置的情况下)或主机存储器(在非分配默认设置的情况下)中。应理解,虽然在图3的实施例中以这种高级别示出,但是许多变化和替代是可能的。
如上所述,对于用于行的所有权的主机处理器预取以及随后的设备偏置的丢失,在设备内可能发生诸如阻塞条目的不良影响,直到它可以将偏置翻转回设备偏置。对于如图3中的实施例,对于具有设置的宽松排序指示符的PCIe流量,主机处理器跳过预取,这导致到设备存储器的直接存储。并且在没有预取的情况下,设备不将行从设备偏置转变到主机偏置。实施例因此可以节省若干消息的通信,从而导致跨越物理接口的更高效的传输。这种操作对于从I/O设备到设备存储器的大量数据传输(例如,批量传输)可以是理想的。
现在参考图4,示出了根据本发明的实施例的直接存储操作的操作的时序图。如图4所示,在诸如服务器平台的计算***400中,可以在NIC 410中接收传入的存储器写入请求。NIC 410将具有设置的宽松排序指示符的该存储器请求转发到主机处理器420。处理器420可以是多核心处理器或其他SoC。假设该写入事务以耦合到设备430的设备存储器440为目标,所述设备430可以是经由CXL总线耦合到主机处理器420的加速器设备。
对于本文的实施例,主机处理器420可以将该存储器写入请求直接转发到设备430,而不执行预取过程,从而导致由设备430对设备存储器440的直接存储。注意,该直接存储结合监听无效消息发出,以维持一致性。这是因为在该流中,主机处理器420发出直接存储而不首先执行预取过程。该监听无效消息可以用于引起设备监听其高速缓存,并且将任何对应的数据与从主机处理器420接收的数据合并。这样,减少了主机处理器420和设备430之间的消息传递。在数据已经被写入到设备存储器440中的请求的位置之后,经由设备430将完成发送回主机处理器420。
对于图4中的流程,设备一致性管理是容易的。即,在实施例中,被引导到设备附接的存储器的传入的RDMA事务可以直接行进到设备(经由主机处理器),而无需主机处理器获得事务的数据的所有权。相反,在没有实施例的情况下,当PCIe设备发送以设备附接的存储器为目标的写入请求时,为了维持一致性,主机处理器首先获取该行的所有权。这种操作导致在设备中针对页面的从设备偏置到主机偏置的偏置翻转。因此,在没有实施例的情况下,在设备可以消耗在该页面处写入的数据之前,需要将偏置更新为设备偏置。这对于性能是次优的,因为它导致设备处的流水线延迟。并且对于实施例,代替设备向主机处理器发送单独的专用请求,以将行翻转回设备偏置,这消耗带宽和时延,设备可以发出请求作为对来自主机处理器的写入消息的响应。
现在参考图5,示出了根据本发明的另一个实施例的方法的流程图。更具体地,图5的方法500是用于以优化的方式执行偏置翻转操作的方法。在本文的实施例中,方法500可以至少部分地由加速器设备内的电路执行,所述电路例如是经由CXL总线耦合到主机处理器并且具有设备附接的存储器的电路。因此,方法500可以由硬件电路、固件、软件和/或其组合来执行。
如图所示,方法500开始于从设备内的主机处理器接收存储器无效请求(块510)。更具体地,该存储器无效请求可以是来自主机处理器的用于设备的请求,以使数据块无效,所述数据块包括主机处理器寻求使用的数据的高速缓存行。在本文的实施方式中,应当理解,该高速缓存行可以是来自耦合到主机处理器的远程设备的诸如RDMA请求的传入的写入请求的对象。响应于该存储器无效请求,控制接着传递到菱形520,以确定是否为设备偏置设置了用于该高速缓存行的偏置。注意,这种偏置状态可以存储在设备内的一致性结构中(例如,图1的设备105中的电路127内),所述一致性结构为设备附接的存储器中的每个数据块(其可以处于高速缓存行粒度、页面粒度或甚至更高)存储偏置指示符,以指示对应的数据块是由设备拥有还是由主机拥有。
如果在菱形520处确定当前为设备偏置设置了偏置,则控制传递到块530,在块530中可以改变偏置。更具体地,该设备可以更新用于该数据块的偏置以将其设置为临时主机偏置,使得该数据块可以由主机处理器使用。在实施例中,可以通过向用于数据块(例如,高速缓存行)的阻塞结构添加条目来指示该临时主机偏置。该阻塞结构可以包括条目,以识别由主机处理器获取的高速缓存行。存储的条目对应于设备附接的存储器内的具有主机偏置的高速缓存行。这种阻塞条目可以保持在原位,直到设备已经成功地将该高速缓存行的偏置翻转回设备偏置。注意,阻塞条目防止对该地址的任何设备发起的请求取得转发进度以确保一致性。因此,该阻塞结构中的条目可以用于识别临时主机偏置。
仍然参考图5,接着控制传递到块540,在块540中设备可以向主机处理器发送使用一次响应。在实施例中,设备可以发送具有使用一次指示符的完成消息,以向主机处理器指示允许仅使用一次数据,并且此后将数据返回到设备。应当理解,响应于完成消息的该使用一次指示符,主机处理器可以将用于数据块的状态设置为使用一次状态,使得主机处理器可以使用一次数据,例如,以更新数据块,并且此后将数据块返回到设备。
因此,如图5中进一步所示,控制接着传递到块550,在块550中在稍后的时间(在由主机处理器单次使用之后),在设备中接收用于该数据块的存储器写入请求。响应于该存储器写入请求,设备可以引起设备附接的存储器存储数据块(块560)。同样响应于数据块的这种存储,可以将完成发送回主机处理器以指示成功的存储。
仍然参考图5,响应于该完成,主机处理器可以发送在设备中接收的用于数据块的存储器读取转发消息(块570)。最后,在块580处,响应于该存储器读取转发消息,设备可以将用于该数据块的偏置改变为设备偏置。应当理解,虽然在图5的实施例中以这种高级别示出,但是许多变化和替代是可能的。
对于如图5中的实施例,发生偏置翻转的更优化的处理,其中具有减少的消息流量和减少的时延,使得设备更快地拥有数据块的所有权。注意,使用一次语义响应引起主机处理器一旦使用了一次该行就使该行自无效,并且将其写入回设备,从而允许设备将该行保持在设备偏置。这种行可以位于设备存储器中的设备希望保持设备偏置的页面中。这些通常是PCIe设备正在生产的、加速器设备打算消耗的缓冲器。
现在参考图6,示出了根据本发明的另一个实施例的排序的存储操作的操作的时序图。如图6中所示,在可以是与图4的平台400类似配置的服务器平台的计算***600中,可以在NIC 610中接收传入的存储器写入请求。NIC 610将不具有设置的宽松排序指示符的该存储器请求转发到主机处理器620。相反,假设该写入事务(诸如标志写入操作)是强排序的,以指示多个先前的RDMA写入操作已经完成。该标志可以被设置,以向设备630指示可以消耗先前的批量RDMA写入到设备附接的存储器640中的数据。作为强排序的写入,主机处理器620可以确保在设置标志之前已对设备附接的存储器640进行了所有在前的写入。
在该示例中,主机处理器620可以通过向设备630发出存储器无效请求来执行预取过程。然而,在实施例中,设备630可以用特殊命令(即,使用一次命令)来响应该存储器无效请求。该命令授予主机处理器时间限制权限以仅使用一次数据,并且然后提供数据以用于存储在设备存储器640中。
如图6中进一步所示,在主机处理器620使用一次该数据之后,它向设备630发送存储器写入请求,从而导致由设备630将数据(可能由主机处理器620更新)存储到设备存储器640。在数据已经被写入到设备存储器640中的请求的位置之后,完成经由设备630被发送回主机处理器620。进而,这种完成引起主机处理器620通过发送存储器读取转发消息来释放临时的主机偏置。如所看到的,该消息引起设备630将偏置更新回设备偏置。
因此,对于实施例,在传入的事务上没有提示的情况下,从PCIe设备到加速器设备的DMA事务可能导致选择性的非分配流。并且,可以发生从PCIe设备到加速器设备的DMA事务而不引起偏置翻转。
现在参照图7,示出了根据本发明的另一个实施例的***的块图。如图7所示,***700可以是任何类型的计算设备,并且在一个实施例中可以是服务器***。在图7的实施例中,***700包括多个CPU 710a、b,所述多个CPU 710a、b依次耦合到相应的***存储器720a、b,在实施例中,所述***存储器720a、b可以实施为双倍数据速率(DDR)存储器。注意,CPU 710可以经由诸如超路径互连或其它处理器互连技术的互连***715耦合在一起。
为了使一致性加速器设备和/或智能输入/输出(IO)设备能够通过潜在的多个通信协议耦合到CPU 710,可以存在多个互连730a1-b2。在实施例中,每个互连730可以是CXL总线的给定实例,以使得RDMA通信能够以如本文所述的优化方式发生。
在所示的实施例中,相应的CPU 710耦合到对应的现场可编程门阵列(FPGA)/加速器设备750a、b和智能I/O设备760a、b。如图7中进一步所示,设备附接的存储器770a、b可以耦合到FPGA/加速器设备750。对于如图7中的布置,CPU 710可以使用本文描述的技术执行传入的RDMA写入请求到设备附接的存储器770中的直接写入,并且没有在传入的请求中提供的提示信息的益处。
接下来转到图8,描绘了根据实施例的SoC设计的实施例。作为特定的说明性示例,SoC 800可以被配置成用于***从便携式设备到服务器***的范围内的任何类型的计算设备中。这里,SoC 800包括2个核心806和807。核心806和807可以符合指令集架构,例如基于架构核心TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计、或其客户、以及它们的许可证持有者或采用者。核心806和807耦合到与总线接口单元809和L2高速缓存810关联的高速缓存控制器808,以经由互连812与***800的其它部分通信。如图所示,总线接口单元809包括DMA电路811,所述DMA电路811被配置成优化传入的RDMA写入请求(即使在没有关联的提示信息的情况下),使得它们可以被直接转发到外部设备附接的存储器(图8中未示出),而不寻求预取或者不以其他方式获得请求的数据的所有权,如本文所述。
互连812提供到其他部件的通信通道,所述其他部件例如是与SIM卡连接的用户识别模块(SIM)830、保存由核心806和807执行以初始化和启动SoC 800的启动代码的启动ROM835、与外部存储器(例如,DRAM 860)接口连接的SDRAM控制器840、与非易失性存储器(例如,闪存865)接口连接的闪存控制器845、与***设备接口连接的***控制器850(例如,eSPI接口)、显示和接收输入(例如,触摸使能的输入)的视频编码解码器820和视频接口825、执行图形相关计算的GPU 815等。此外,该***示出了用于通信的***设备,例如蓝牙模块870、3G调制解调器875、GPS 880和WiFi 885。***中还包括功率控制器855。进一步如图8所示,***800可以另外包括接口,所述接口包括例如到显示器的MIPI接口892和/或也可以耦合到相同或不同的显示器的HDMI接口895。
现在参考图9,示出了根据本发明的实施例的***的块图。如图9所示,多处理器***900包括经由点对点互连950耦合的第一处理器970和第二处理器980。如图9所示,处理器970和980中的每个可以是包括代表性的第一和第二处理器核心(即,处理器核心974a和974b以及处理器核心984a和984b)的多核心处理器。
在图9的实施例中,处理器970和980还包括点对点互连977和987,所述点对点互连977和987经由互连942和944(其可以是CXL总线)耦合到加速器设备950和960(分别耦合到设备附接的存储器955和965)。这样,处理器970和980可以通过将这种请求直接转发到设备附接的存储器955和965来优化传入的RDMA写入请求处理,而不寻求预取或者不以其他方式获得请求的数据的所有权,如本文所述。
仍然参考图9,第一处理器970还包括存储器控制器集线器(MCH)972和点到点(P-P)接口976和978。类似地,第二处理器980包括MCH 982和P-P接口986和988。如图9所示,MCH972和982将处理器耦合到相应的存储器,即,存储器932和存储器934,所述存储器932和存储器934可以是本地附接到相应处理器的***存储器(例如,DRAM)的部分。第一处理器970和第二处理器980可以分别经由P-P互连976和986耦合到芯片组990。如图9所示,芯片组990包括P-P接口994和998。
此外,芯片组990包括接口992,以通过P-P互连939将芯片组990与高性能图形引擎938耦合。如图9所示,各种输入/输出(I/O)设备914可以连同将第一总线916耦合到第二总线920的总线桥918一起耦合到第一总线916。在一个实施例中,各种设备可以耦合到第二总线920,所述各种设备包括例如键盘/鼠标922、通信设备926和可以包括代码930的诸如磁盘驱动器或其它大容量存储设备的数据存储单元928。在实施例中,一个这种通信设备可以是NIC,所述NIC可以从一个或多个I/O设备914接收传入的RDMA写入请求,并且引导到处理器970和980中的一个,而不执行分析请求以确定目的地以及应用TPH或其他提示信息的开销,如本文所述。此外,音频I/O 924可以耦合到第二总线920。
以下示例涉及其他实施例。
在一个示例中,处理器包括:一个或多个核心,所述一个或多个核心用于执行指令;至少一个高速缓存存储器;以及一致性电路,所述一致性电路耦合到至少一个高速缓存存储器,所述一致性电路具有DMA电路,以从NIC接收写入请求,并且至少部分地基于写入请求的地址,将写入请求直接发送到经由第一总线耦合到处理器的设备,以引起设备将写入请求的数据存储到设备附接的存储器。
在示例中,一致性电路包括地址范围解码器,并且DMA电路使用写入请求的地址来存取地址范围解码器,以确定写入请求被引导到设备附接的存储器。
在示例中,当写入请求具有设置的宽松排序指示符时,DMA电路直接向设备发送写入请求而没有预取操作。
在示例中,写入请求包括具有未设置的事务层处理提示的远程直接存储器存取请求。
在示例中,响应于确定写入请求的地址被引导到耦合到处理器的***存储器,DMA电路将写入请求的数据存储在至少一个高速缓存存储器中。
在示例中,DMA电路还响应于分配平台默认设置而将写入请求的数据存储在至少一个高速缓存存储器中。
在示例中,响应于来自设备的针对第二数据的使用一次指示符,一致性电路将引起处理器使用一次第二数据,并且此后向设备发送包括第二数据的第二写入请求。
在示例中,响应于来自设备的针对第二写入请求的完成,处理器将向设备发送转发消息,以引起设备将第二数据的偏置改变为设备偏置。
在示例中,响应于具有未设置的宽松排序指示符的第三写入请求,一致性电路将第三写入请求排序在一个或多个先前的写入请求之后。
在另一个示例中,方法包括:在经由第一总线耦合到主机处理器的设备的控制电路中,从主机处理器接收用于第一数据块的无效请求;响应于所述无效请求,将第一数据块的偏置从设备偏置更新为临时的主机偏置;以及此后,向主机处理器发送包括使用一次指示符的完成消息,以引起主机处理器使用一次第一数据块,并且然后将第一数据块的所有权转让给设备。
在示例中,方法还包括:在设备中接收用于第一数据块的写入请求;响应于所述写入请求,将第一数据块存储在设备附接的存储器中;以及向主机处理器发送第二完成消息。
在示例中,在向主机处理器发送第二完成消息之后,从主机处理器接收转发消息,并且响应于转发消息,将用于第一数据块的偏置更新为设备偏置。
在示例中,方法还包括:将用于第一数据块的偏置更新为设备偏置,而不向主机处理器发出对所有权的请求。
在示例中,方法还包括:在设备的控制电路中,接收用于第二数据块的第二写入请求,所述第二写入请求包括直接写入请求;以及响应于所述第二写入请求,将第二数据块存储在设备附接的存储器中。
在示例中,第一数据块包括来自经由主机处理器和网络接口控制器耦合到设备的第一输入/输出设备的远程直接存储器存取数据。
在另一个示例中,包括指令的计算机可读介质将执行上述示例中的任一个的方法。
在另一个示例中,包括数据的计算机可读介质将由至少一个机器使用,以制造至少一个集成电路,以执行上述示例中的任一个的方法。
在又一示例中,装置包括用于执行上述示例中的任一个的方法的模块。
在又一示例中,***包括:主机处理器,所述主机处理器具有至少一个核心、至少一个高速缓存存储器和耦合到至少一个高速缓存存储器的一致性电路,其中一致性电路包括DMA电路以接收RDMA写入请求,并且至少部分地基于RDMA写入请求的地址,将RDMA写入请求直接发送到设备,其中RDMA写入请求具有与其关联的宽松排序指示符;经由第一总线耦合到主机处理器的设备,其中,响应于RDMA写入请求,设备将RDMA写入请求的数据存储到设备附接的存储器,并且将数据的偏置设置为设备偏置;以及设备附接的存储器,所述设备附接的存储器本地耦合到设备。
在示例中,一致性电路包括地址范围解码器,并且DMA电路将使用RDMA写入请求的地址来存取地址范围解码器,以确定写入请求被引导到设备附接的存储器,其中***包括具有分配默认设置的服务器平台。
在示例中,响应于被引导到耦合到主机处理器的主机存储器的第二写入请求,主机处理器基于分配默认设置将第二写入请求的第二数据存储到至少一个高速缓存存储器。
在示例中,响应于被引导到设备附接的存储器的第二RDMA写入请求,主机处理器将向设备发送无效消息,并且响应于该无效消息,设备向主机处理器发送使用一次响应,以授予第二数据临时主机偏置。
在示例中,响应于使用一次响应,主机处理器将使用一次第二RDMA写入请求的第二数据,并且此后向设备发送写入请求,以引起设备将第二数据存储在设备附接的存储器中,并且此后主机处理器将执行第二数据的自无效以转让临时主机偏置。
应理解,上述示例的各种组合是可能的。
注意,术语“电路”和“电路***”在本文可互换使用。如本文所使用的,这些术语和术语“逻辑”用于单独地或以任何组合指代模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其它类型的物理硬件部件。实施例可以用在许多不同类型的***中。例如,在一个实施例中,通信设备可以被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是相反,其它实施例可以针对用于处理指令的其它类型的装置,或者包括指令的一个或多个机器可读介质,所述指令响应于在计算设备上执行而引起设备执行本文描述的方法和技术中的一个或多个。
实施例可以在代码中实施,并且可以存储在其上存储有指令的非暂时性存储介质上,所述指令可以用于对***进行编程以执行该指令。实施例还可以在数据中实施,并且可以存储在非暂时性存储介质上,如果由至少一个机器使用,则所述非暂时性存储介质引起至少一个机器制造至少一个集成电路,以执行一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实施,当被制造到SoC或其他处理器中时,所述信息将配置SoC或其他处理器以执行一个或多个操作。存储介质可以包括但不限于任何类型的盘(包括软盘、光盘、固态驱动器(SSD)、紧凑盘只读存储器(CD-ROM)、可重写紧凑盘(CD-RW)和磁光盘)、半导体设备(诸如,只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存存储器、电可擦除可编程只读存储器(EEPROM))、磁卡或光卡、或适合于存储电子指令的任何其它类型的介质。
尽管已经相对于限制数量的实施例描述了本发明,但是本领域中的技术人员将从中认识到若干修改和变化。所附权利要求旨在覆盖属于本发明的真实精神和范围内的所有这种修改和变化。
Claims (25)
1.一种用于处理写入请求的处理器,包括:
一个或多个核心,所述一个或多个核心用于执行指令;
至少一个高速缓存存储器;以及
一致性电路,所述一致性电路耦合到所述至少一个高速缓存存储器,所述一致性电路具有直接存储器存取(DMA)电路,以从网络接口卡(NIC)接收写入请求,并且至少部分地基于所述写入请求的地址,将所述写入请求直接发送到经由第一总线耦合到所述处理器的设备,以引起所述设备将所述写入请求的数据存储到设备附接的存储器。
2.根据权利要求1所述的处理器,其中,所述一致性电路包括地址范围解码器,并且所述DMA电路将使用所述写入请求的所述地址来存取所述地址范围解码器,以确定所述写入请求被引导到所述设备附接的存储器。
3.根据权利要求2所述的处理器,其中,当所述写入请求具有设置的宽松排序指示符时,所述DMA电路将向所述设备直接发送所述写入请求,而没有预取操作。
4.根据权利要求1所述的处理器,其中,所述写入请求包括具有未设置的事务层处理提示的远程直接存储器存取请求。
5.根据权利要求1所述的处理器,其中,响应于确定所述写入请求的所述地址被引导到耦合到所述处理器的***存储器,所述DMA电路将所述写入请求的所述数据存储在所述至少一个高速缓存存储器中。
6.根据权利要求5所述的处理器,其中,所述DMA电路还响应于分配平台默认设置而将所述写入请求的所述数据存储在所述至少一个高速缓存存储器中。
7.根据权利要求1所述的处理器,其中,响应于来自所述设备的针对第二数据的使用一次指示符,所述一致性电路引起所述处理器使用一次所述第二数据,并且此后向所述设备发送包括所述第二数据的第二写入请求。
8.根据权利要求7所述的处理器,其中,响应于来自所述设备的针对所述第二写入请求的完成,所述处理器将向所述设备发送转发消息,以引起所述设备将所述第二数据的偏置改变为设备偏置。
9.根据权利要求1所述的处理器,其中,响应于具有未设置的宽松排序指示符的第三写入请求,所述一致性电路将所述第三写入请求排序在一个或多个先前的写入请求之后。
10.一种用于执行无效请求的方法,包括:
在经由第一总线耦合到主机处理器的设备的控制电路中,从所述主机处理器接收由于第一数据块的无效请求;
响应于所述无效请求,将用于所述第一数据块的偏置从设备偏置更新为临时主机偏置;以及
此后,向所述主机处理器发送包括使用一次指示符的完成消息,以引起所述主机处理器使用一次所述第一数据块,并且然后将所述第一数据块的所有权转让给所述设备。
11.根据权利要求10所述的方法,还包括:
在所述设备中接收用于所述第一数据块的写入请求;
响应于所述写入请求,将所述第一数据块存储在设备附接的存储器中;以及
向所述主机处理器发送第二完成消息。
12.根据权利要求11所述的方法,还包括:在向所述主机处理器发送所述第二完成消息之后,从所述主机处理器接收转发消息,并且响应于所述转发消息,将用于所述第一数据块的所述偏置更新为所述设备偏置。
13.根据权利要求10所述的方法,还包括:将用于所述第一数据块的所述偏置更新为所述设备偏置,而不向所述主机处理器发出对所有权的请求。
14.根据权利要求10所述的方法,还包括:
在所述设备的所述控制电路中,接收用于第二数据块的第二写入请求,所述第二写入请求包括直接写入请求;以及
响应于所述第二写入请求,将所述第二数据块存储在所述设备附接的存储器中。
15.根据权利要求10所述的方法,其中,所述第一数据块包括来自经由所述主机处理器和网络接口控制器耦合到所述设备的第一输入/输出设备的远程直接存储器存取数据。
16.一种计算机可读存储介质,包括计算机可读指令,所述计算机可读指令在被执行时,实施如权利要求10到15中的任一项所要求保护的方法。
17.一种用于处理写入请求的***,包括:
主机处理器,所述主机处理器具有至少一个核心、至少一个高速缓存存储器和耦合到所述至少一个高速缓存存储器的一致性电路,其中,所述一致性电路包括直接存储器存取(DMA)电路,以接收远程直接存储器存取(RDMA)写入请求,并且至少部分地基于所述RDMA写入请求的地址,将所述RDMA写入请求直接发送到设备,其中,所述RDMA写入请求具有与其关联的宽松排序指示符;
所述设备,所述设备经由第一总线耦合到所述主机处理器,其中,响应于所述RDMA写入请求,所述设备将所述RDMA写入请求的数据存储到设备附接的存储器,并且将所述数据的偏置设置为设备偏置;以及
所述设备附接的存储器,所述设备附接的存储器本地耦合到所述设备。
18.根据权利要求17所述的***,其中,所述一致性电路包括地址范围解码器,并且所述DMA电路使用所述RDMA写入请求的所述地址来存取所述地址范围解码器,以确定所述写入请求被引导到所述设备附接的存储器,其中,所述***包括具有分配默认设置的服务器平台。
19.根据权利要求18所述的***,其中,响应于被引导到耦合到所述主机处理器的主机存储器的第二写入请求,所述主机处理器基于所述分配默认设置将所述第二写入请求的第二数据存储到所述至少一个高速缓存存储器。
20.根据权利要求17所述的***,其中,响应于被引导到所述设备附接的存储器的第二RDMA写入请求,所述主机处理器将向所述设备发送无效消息,并且响应于所述无效消息,所述设备向所述主机处理器发送使用一次响应,以授予所述第二数据临时主机偏置。
21.根据权利要求20所述的***,其中,响应于所述使用一次响应,所述主机处理器将使用一次所述第二RDMA写入请求的第二数据,并且此后向所述设备发送写入请求,以引起所述设备将所述第二数据存储在所述设备附接的存储器中,并且此后所述主机处理器将执行所述第二数据的自无效,以转让所述临时主机偏置。
22.一种用于处理写入请求的处理器,包括:
一个或多个核心模块,所述一个或多个核心模块用于执行指令;
至少一个高速缓存存储器模块;以及
一致性模块,所述一致性模块耦合到所述至少一个高速缓存存储器模块,所述一致性模块具有直接存储器存取(DMA)模块,以从网络接口卡(NIC)接收写入请求,并且至少部分地基于所述写入请求的地址,将所述写入请求直接发送到经由第一总线耦合到所述处理器的设备,以引起所述设备将所述写入请求的数据存储到设备附接的存储器。
23.根据权利要求22所述的处理器,其中,所述一致性模块包括地址范围解码器模块,并且所述DMA模块使用所述写入请求的所述地址来存取所述地址范围解码器模块,以确定所述写入请求被引导到所述设备附接的存储器。
24.根据权利要求23所述的处理器,其中,当所述写入请求具有设置的宽松排序指示符时,所述DMA模块用于向所述设备直接发送所述写入请求,而没有预取操作。
25.根据权利要求22所述的处理器,其中,所述写入请求包括具有未设置的事务层处理提示的远程直接存储器存取请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/575,478 | 2019-09-19 | ||
US16/575,478 US11036650B2 (en) | 2019-09-19 | 2019-09-19 | System, apparatus and method for processing remote direct memory access operations with a device-attached memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112527730A true CN112527730A (zh) | 2021-03-19 |
Family
ID=69102022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010577319.6A Pending CN112527730A (zh) | 2019-09-19 | 2020-06-22 | 用于处理具有设备附接的存储器的远程直接存储器存取操作的***、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11036650B2 (zh) |
EP (1) | EP3796179A1 (zh) |
CN (1) | CN112527730A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360093A (zh) * | 2021-06-03 | 2021-09-07 | 锐掣(杭州)科技有限公司 | 内存***和设备 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190004990A1 (en) | 2017-07-01 | 2019-01-03 | Stephen R. Van Doren | Techniques to support mulitple interconnect protocols for an interconnect |
US11005771B2 (en) | 2017-10-16 | 2021-05-11 | Mellanox Technologies, Ltd. | Computational accelerator for packet payload operations |
US11502948B2 (en) | 2017-10-16 | 2022-11-15 | Mellanox Technologies, Ltd. | Computational accelerator for storage operations |
US10841243B2 (en) | 2017-11-08 | 2020-11-17 | Mellanox Technologies, Ltd. | NIC with programmable pipeline |
US10708240B2 (en) | 2017-12-14 | 2020-07-07 | Mellanox Technologies, Ltd. | Offloading communication security operations to a network interface controller |
US10824469B2 (en) | 2018-11-28 | 2020-11-03 | Mellanox Technologies, Ltd. | Reordering avoidance for flows during transition between slow-path handling and fast-path handling |
US11184439B2 (en) | 2019-04-01 | 2021-11-23 | Mellanox Technologies, Ltd. | Communication with accelerator via RDMA-based network adapter |
US20210311871A1 (en) | 2020-04-06 | 2021-10-07 | Samsung Electronics Co., Ltd. | System and method for aggregating server memory |
WO2021243340A1 (en) * | 2020-05-29 | 2021-12-02 | Netlist, Inc. | Computer memory expansion device and method of operation |
CN114095153A (zh) | 2020-08-05 | 2022-02-25 | 迈络思科技有限公司 | 密码数据通信装置 |
IL276538B2 (en) | 2020-08-05 | 2023-08-01 | Mellanox Technologies Ltd | A cryptographic device for data communication |
US20210011864A1 (en) * | 2020-09-25 | 2021-01-14 | Francesc Guim Bernat | System, apparatus and methods for dynamically providing coherent memory domains |
DE102021121105A1 (de) * | 2020-09-28 | 2022-03-31 | Samsung Electronics Co., Ltd. | Intelligente ablagespeichervorrichtung |
US11914903B2 (en) | 2020-10-12 | 2024-02-27 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for accelerators with virtualization and tiered memory |
KR20220049396A (ko) * | 2020-10-14 | 2022-04-21 | 삼성전자주식회사 | 간접 어드레싱을 위한 시스템, 장치 및 방법 |
KR20220049978A (ko) * | 2020-10-15 | 2022-04-22 | 삼성전자주식회사 | 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법 |
CN112699061B (zh) * | 2020-12-07 | 2022-08-26 | 海光信息技术股份有限公司 | 实现PCIe设备的缓存一致性的***、方法和介质 |
US20210112132A1 (en) * | 2020-12-21 | 2021-04-15 | Nitish Paliwal | System, apparatus and method for handling multi-protocol traffic in data link layer circuitry |
US11442858B1 (en) * | 2021-03-10 | 2022-09-13 | Micron Technology, Inc. | Bias control for a memory device |
US12014052B2 (en) | 2021-03-22 | 2024-06-18 | Google Llc | Cooperative storage architecture |
US11934333B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Storage protocol emulation in a peripheral device |
US11934658B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Enhanced storage protocol emulation in a peripheral device |
US11899589B2 (en) * | 2021-06-22 | 2024-02-13 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for bias mode management in memory systems |
EP4191419A1 (en) * | 2021-12-01 | 2023-06-07 | Samsung Electronics Co., Ltd. | Operating method of an electronic device |
US11941295B2 (en) | 2022-01-11 | 2024-03-26 | Western Digital Technologies, Inc. | Data storage device and method for providing an adaptive data path |
US12007921B2 (en) | 2022-11-02 | 2024-06-11 | Mellanox Technologies, Ltd. | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09204403A (ja) * | 1996-01-26 | 1997-08-05 | Hitachi Ltd | 並列計算機 |
US20030023794A1 (en) * | 2001-07-26 | 2003-01-30 | Venkitakrishnan Padmanabha I. | Cache coherent split transaction memory bus architecture and protocol for a multi processor chip device |
US7227870B2 (en) * | 2001-11-20 | 2007-06-05 | Broadcom Corporation | Systems including packet interfaces, switches, and packet DMA circuits for splitting and merging packet streams |
US7613813B2 (en) * | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
US9183087B2 (en) * | 2005-06-07 | 2015-11-10 | Seagate Technology Llc | Data storage subgroup with local and shared resources |
US20080301376A1 (en) | 2007-05-31 | 2008-12-04 | Allison Brian D | Method, Apparatus, and System Supporting Improved DMA Writes |
US8918680B2 (en) * | 2012-01-23 | 2014-12-23 | Apple Inc. | Trace queue for peripheral component |
JP2017130002A (ja) * | 2016-01-20 | 2017-07-27 | 富士通株式会社 | ストレージ制御装置および制御プログラム |
CN107102957A (zh) | 2016-02-22 | 2017-08-29 | 深圳市知穹科技有限公司 | 一种基于gpu与nic之间的内存高速直接交换的方法及*** |
US11687460B2 (en) | 2017-04-26 | 2023-06-27 | Advanced Micro Devices, Inc. | Network cache injection for coherent GPUs |
US20190004990A1 (en) | 2017-07-01 | 2019-01-03 | Stephen R. Van Doren | Techniques to support mulitple interconnect protocols for an interconnect |
-
2019
- 2019-09-19 US US16/575,478 patent/US11036650B2/en active Active
-
2020
- 2020-05-28 EP EP20177013.8A patent/EP3796179A1/en active Pending
- 2020-06-22 CN CN202010577319.6A patent/CN112527730A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360093A (zh) * | 2021-06-03 | 2021-09-07 | 锐掣(杭州)科技有限公司 | 内存***和设备 |
Also Published As
Publication number | Publication date |
---|---|
US11036650B2 (en) | 2021-06-15 |
EP3796179A1 (en) | 2021-03-24 |
US20200012604A1 (en) | 2020-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036650B2 (en) | System, apparatus and method for processing remote direct memory access operations with a device-attached memory | |
US9557922B2 (en) | System and method for peer-to-peer PCIe storage transfers | |
CN102414671B (zh) | 对于不同源的分级内存仲裁技术 | |
CN107111576B (zh) | 发布的中断架构 | |
WO2018076793A1 (zh) | 一种NVMe数据读写方法及NVMe设备 | |
US9575895B2 (en) | Providing common caching agent for core and integrated input/output (IO) module | |
US7555597B2 (en) | Direct cache access in multiple core processors | |
US5463753A (en) | Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller | |
US9280290B2 (en) | Method for steering DMA write requests to cache memory | |
US7624236B2 (en) | Predictive early write-back of owned cache blocks in a shared memory computer system | |
US11500797B2 (en) | Computer memory expansion device and method of operation | |
TW200534110A (en) | A method for supporting improved burst transfers on a coherent bus | |
US20220269433A1 (en) | System, method and apparatus for peer-to-peer communication | |
US11789658B2 (en) | Peripheral component interconnect express (PCIe) interface system and method of operating the same | |
US20220114098A1 (en) | System, apparatus and methods for performing shared memory operations | |
US7991966B2 (en) | Efficient usage of last level caches in a MCMP system using application level configuration | |
CN111752873A (zh) | 用于在计算平台的多个主设备之间共享Flash设备的***、装置和方法 | |
US20070073977A1 (en) | Early global observation point for a uniprocessor system | |
US10235054B1 (en) | System and method utilizing a cache free list and first and second page caches managed as a single cache in an exclusive manner | |
US7409486B2 (en) | Storage system, and storage control method | |
US7360008B2 (en) | Enforcing global ordering through a caching bridge in a multicore multiprocessor system | |
US11687460B2 (en) | Network cache injection for coherent GPUs | |
US20160217076A1 (en) | Speculative cache reading using shared buffer | |
US8938588B2 (en) | Ensuring forward progress of token-required cache operations in a shared cache | |
US20030014596A1 (en) | Streaming data cache for multimedia processor |
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 |