CN116802620A - Apparatus and method for remote direct memory access - Google Patents
Apparatus and method for remote direct memory access Download PDFInfo
- Publication number
- CN116802620A CN116802620A CN202180091430.7A CN202180091430A CN116802620A CN 116802620 A CN116802620 A CN 116802620A CN 202180091430 A CN202180091430 A CN 202180091430A CN 116802620 A CN116802620 A CN 116802620A
- Authority
- CN
- China
- Prior art keywords
- memory
- controller
- status
- requesting device
- memory block
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
Abstract
本发明涉及通过RDMA操作在例如请求设备和响应设备等设备之间进行的数据通信。所述请求设备和所述响应设备各自包括存储器、控制器和通信接口。所述请求设备的所述控制器与响应设备的内存区域进行关联,所述内存区域包括一个或多个内存块。此外,所述响应设备关联其存储器中的所述内存区域,确定所述内存区域的内存状态,通过所述通信接口传输关于与所述内存区域有关的所述内存状态的通知。此外,基于所述内存状态,所述请求设备判断待访问的内存块在所述响应设备的所述存储器中是否就绪,然后相应地通过所述通信接口向所述响应设备传输请求,所述请求与所述待访问的内存块有关。
The present invention relates to data communication between devices such as requesting devices and responding devices via RDMA operations. The requesting device and the responding device each include memory, a controller, and a communications interface. The controller of the requesting device is associated with a memory area of the responding device, the memory area including one or more memory blocks. Furthermore, the responsive device associates the memory area in its memory, determines a memory status of the memory area, and transmits a notification regarding the memory status related to the memory area through the communication interface. In addition, based on the memory status, the requesting device determines whether the memory block to be accessed is ready in the memory of the responding device, and then accordingly transmits a request to the responding device through the communication interface, the request Relevant to the memory block to be accessed.
Description
技术领域Technical field
本发明一般涉及数据传送;更具体地说,涉及用于远程直接内存访问的设备和方法。The present invention relates generally to data transfer; more particularly, to apparatus and methods for remote direct memory access.
背景技术Background technique
近年来,高性能计算(high-performance computing,HPC)领域在现有IP基础设施和定制无损技术上利用了InfiniBand等高性能和低时延网络。这些互连提供远程直接内存访问(remote direct memory access,RDMA)等高级网络功能,以实现高吞吐量和低时延以及低CPU利用率。RDMA正在高性能计算(high-performance computing,HPC)、数据中心、Web2.0、大数据、云、存储、金融服务和保险(finance services and insurance,FSI)、医疗服务、联邦等领域中使用。然而,多个计算设备的网络中的高速数据通信增加了人们对数据可靠性和时延的担忧。In recent years, the high-performance computing (HPC) field has leveraged high-performance and low-latency networks such as InfiniBand on existing IP infrastructure and customized lossless technologies. These interconnects provide advanced network capabilities such as remote direct memory access (RDMA) to achieve high throughput and low latency as well as low CPU utilization. RDMA is being used in high-performance computing (HPC), data centers, Web 2.0, big data, cloud, storage, financial services and insurance (FSI), medical services, federal and other fields. However, high-speed data communication in networks of multiple computing devices increases concerns about data reliability and latency.
通常,远程直接内存访问(remote direct memory access,RDMA)涉及从一个计算设备的存储器到另一个计算设备的存储器的直接内存访问。通常,RDMA技术不需要任何计算设备(即,传统发送设备和传统接收设备)的操作系统(operating system,OS),能够在网络上进行高吞吐量、低时延的数据传送,并且在性能至关重要的部署中特别有用。有两种常见的RDMA技术,即InfiniBand和互联网工程任务组(internet engineering task force,IETF)。IETF协议也被称为互联网广域RDMA协议(internet wide Area RDMA protocol,iWARP)。具体来说,InfiniBand RDMA有两个变体,允许它在以太网网络上运行(RoCE)和在UDP/IP网络上运行(RoCEv2)。例如,在传统RDMA系统的示例性实现场景中,例如在RDMA读或写操作中,数据(或数据包)使用支持RDMA的网络适配器直接从(例如,传统请求设备的)源存储器传递到(例如,传统响应设备的)目标存储器。具体来说,它不涉及中央处理器(central processing unit,CPU)(或处理器)或交互设备(即,传统发送设备和传统接收设备)中的任何一个的操作系统。然而,与访问存储器的请求方(例如,传统请求设备)在数据包生成时具有关于数据包的知识(QP上下文、操作信息)不同,响应方(例如,传统响应设备)在从网络接收数据包时接收与特定操作有关的信息。因此,该进程获得了相当大的处理时间,并增加了数据通信期间的时延。此外,以现代RNIC的线速(25–400Gbps)执行这些操作变得极具挑战性。因此,在传统系统中,从主机存储器获取信息需要时间,而且通常需要几次数据获取迭代,这导致时延增加和性能降低。Generally, remote direct memory access (RDMA) involves direct memory access from the memory of one computing device to the memory of another computing device. Generally, RDMA technology does not require an operating system (OS) of any computing device (i.e., a traditional sending device and a traditional receiving device), can perform high-throughput, low-latency data transmission on the network, and achieves high performance. Especially useful in critical deployments. There are two common RDMA technologies, InfiniBand and Internet Engineering Task Force (IETF). The IETF protocol is also called the Internet wide Area RDMA protocol (iWARP). Specifically, InfiniBand RDMA comes in two variants that allow it to run over Ethernet networks (RoCE) and over UDP/IP networks (RoCEv2). For example, in an exemplary implementation scenario of a legacy RDMA system, such as during an RDMA read or write operation, data (or packets) are transferred directly from source memory (eg, of a legacy requesting device) to (eg, a legacy requesting device) using an RDMA-capable network adapter. , traditional response device) target memory. Specifically, it does not involve the operating system of any one of the central processing unit (CPU) (or processor) or the interactive devices (ie, traditional sending devices and traditional receiving devices). However, unlike the requester (e.g., traditional requesting device) that accesses the memory, which has knowledge about the packet (QP context, operational information) when the packet is generated, the responder (e.g., traditional responding device) receives the packet from the network. to receive information related to a specific operation. As a result, the process gains considerable processing time and increases latency during data communication. Additionally, performing these operations at the line speeds of modern RNICs (25–400Gbps) becomes extremely challenging. Therefore, in traditional systems, retrieving information from host memory takes time and often requires several data retrieval iterations, resulting in increased latency and reduced performance.
目前,主机存储器非常昂贵(估计高达主机总成本的40%),资源有限。这种有限资源的可用性由于需要为DMA操作保留内存而得到增强,使得保留的或物理的内存可根据需要用于RDMA NIC。传统上,有两种方法来克服上述问题,要么通过固定内存,要么通过采用按需分页。然而,由于在非活动(即,不用于DMA操作)期间不能用于其他目的,占可用物理内存很大一部分的固定内存有效地减少了主机设备上可用的物理内存。因此,没有在DMA操作与资源(即,内存或RAM)之间建立成功的权衡。此外,按需分页(on-demand paging,ODP)要求通过在执行期间动态将页面映射为DMA目的地来处理缺失的页面映射,而无需用户应用程序的直接干预。虽然ODP是可行的,但可能会导致性能下降,例如速度或执行时间降低、入站网络流量降低或速率受限,从而导致显著的负面性能影响。通常,在DMA操作之前,在响应方预取数据可以通过在每个DMA操作之前向响应方发送预取提示请求来减少性能开销,从而减轻按需分页的性能影响。但是,每个或每几个DMA操作的预取提示请求本身会在网络上产生带宽开销。此外,在页面已经映射的情况下,冗余的预取提示请求会延迟对有用的预取提示请求的处理。Currently, host memory is very expensive (estimated to be up to 40% of the total host cost) and resources are limited. The availability of this limited resource is enhanced by the need to reserve memory for DMA operations, making reserved or physical memory available to the RDMA NIC as needed. Traditionally, there are two ways to overcome the above problem, either by pinning memory or by employing demand paging. However, pinned memory, which accounts for a large portion of available physical memory, effectively reduces the physical memory available on the host device because it cannot be used for other purposes during periods of inactivity (i.e., not used for DMA operations). Therefore, no successful trade-off is established between DMA operations and resources (i.e., memory or RAM). Additionally, on-demand paging (ODP) requires that missing page mappings be handled by dynamically mapping pages to DMA destinations during execution without direct intervention from the user application. While ODP is possible, it may result in performance degradation such as reduced speed or execution time, reduced inbound network traffic, or rate throttling, resulting in significant negative performance impact. Typically, prefetching data on the responder before DMA operations can reduce performance overhead by sending a prefetch hint request to the responder before each DMA operation, thereby mitigating the performance impact of demand paging. However, the prefetch hint request itself for every or every few DMA operations creates bandwidth overhead on the network. Additionally, redundant prefetch hint requests can delay the processing of useful prefetch hint requests when the page is already mapped.
因此,根据上述讨论,需要克服与用于数据通信的传统远程直接内存访问(remotedirect memory access,RDMA)技术的传统请求设备、传统响应设备和传统方法相关联的上述缺点。Therefore, in accordance with the above discussion, there is a need to overcome the above-mentioned shortcomings associated with conventional requesting devices, conventional responding devices and conventional methods of conventional remote direct memory access (RDMA) technology for data communication.
发明内容Contents of the invention
本发明寻求提供用于远程直接内存访问(remote direct memory access,RDMA)的请求设备、响应设备、方法和系统。本发明寻求借助传统的设备、方法和传统的远程直接内存访问系统来解决现有的低效和不可靠的数据通信问题。本发明的目的是提供一种至少部分克服现有技术中遇到的问题的解决方案,并提供用于RDMA操作的高效(例如,减少时延)和可靠数据通信的改进设备、方法和系统。本发明的目标是通过所附独立权利要求中提供的技术方案来实现的。本发明的有利实现方式在从属权利要求中进一步定义。The present invention seeks to provide requesting devices, responding devices, methods and systems for remote direct memory access (RDMA). The present invention seeks to solve the existing inefficient and unreliable data communication problems with the help of traditional equipment, methods and traditional remote direct memory access systems. It is an object of the present invention to provide a solution that at least partially overcomes the problems encountered in the prior art and to provide improved devices, methods and systems for efficient (eg, reduced latency) and reliable data communication for RDMA operations. The object of the invention is achieved by the technical solutions provided in the appended independent claims. Advantageous implementations of the invention are further defined in the dependent claims.
本发明的目标是通过所附独立权利要求中提供的技术方案来实现的。本发明的有利实现方式在从属权利要求中进一步定义。The object of the invention is achieved by the technical solutions provided in the appended independent claims. Advantageous implementations of the invention are further defined in the dependent claims.
在一个方面,本发明提供了一种请求设备,包括存储器、控制器和通信接口。控制器用于与响应设备的内存区域进行关联,内存区域包括一个或多个内存块。此外,控制器用于通过通信接口从响应设备接收关于与内存区域有关的内存状态的通知;基于内存状态判断待访问的内存块在响应设备的存储器中是否就绪,并通过通信接口向响应设备传输请求,该请求与待访问的内存块有关。In one aspect, the invention provides a request device including a memory, a controller and a communication interface. The controller is used to associate with the memory area of the responding device, which includes one or more memory blocks. In addition, the controller is configured to receive notifications about the memory status related to the memory area from the responding device through the communication interface; determine whether the memory block to be accessed is ready in the memory of the responding device based on the memory status, and transmit the request to the responding device through the communication interface , the request is related to the memory block to be accessed.
本发明的请求设备能够保持对内存区域或一个或多个内存块的内存状态的跟踪,并允许响应设备借助内存预取、预取提示等优化各个方面。这些操作用于使响应设备能够提前开始加载内存块或内存区域(如果有必要),或准备以高效的方式接受传入的数据包。此外,通过在需要时交换内存区域,一次传输与多个事务(或操作)有关的多个通知,能够实现更快、更高效的操作。响应设备将更新报告为通知,以便请求设备有更高的机会在没有页面错误的情况下获得服务。The requesting device of the present invention is able to keep track of the memory status of a memory area or one or more memory blocks, and allows the responding device to optimize various aspects with the help of memory prefetching, prefetch hints, etc. These operations are used to enable responding devices to start loading memory blocks or memory regions in advance (if necessary), or to prepare to accept incoming packets in an efficient manner. Additionally, faster and more efficient operations can be achieved by transferring multiple notifications related to multiple transactions (or operations) at once by swapping memory areas when needed. Responding devices report updates as notifications so that requesting devices have a higher chance of being served without page faults.
在另一种实现形式中,控制器还用于接收内存块大小的指示,内存块大小小于或等于内存区域的大小,其中关于内存状态的通知与一个或多个内存块有关。In another implementation form, the controller is further configured to receive an indication of a memory block size that is less than or equal to the size of the memory region, wherein notifications about memory status relate to one or more memory blocks.
内存块大小的指示通过允许请求设备基于接收到的内存块大小的指示重新配置或改变请求的粒度或结构使得能够优化操作期间页面错误的发生和控制开销,并确保高效的数据通信。The indication of the memory block size enables optimization of the occurrence and control overhead of page faults during operation and ensures efficient data communication by allowing the requesting device to reconfigure or change the granularity or structure of the request based on the received indication of the memory block size.
在另一种实现形式中,控制器还用于在接收内存块大小的指示之前,向响应设备传输所指示的内存块大小,以向响应设备指示请求设备支持的内存状态粒度。In another implementation form, the controller is further configured to transmit the indicated memory block size to the responding device prior to receiving the indication of the memory block size to indicate to the responding device the memory state granularity supported by the requesting device.
传输的所指示内存块大小允许响应设备基于请求设备传输的所指示大小重新配置或改变响应设备中内存块的粒度,以优化操作期间页面错误的发生和控制开销,并确保高效的内存状态报告通信。The indicated memory block size transferred allows the responding device to reconfigure or change the granularity of the memory blocks in the responding device based on the indicated size transferred by the requesting device to optimize the occurrence and control overhead of page faults during operation and to ensure efficient memory status reporting communication .
在又一种实现形式中,控制器还用于针对内存块大小发起与响应设备的协商过程,其中,内存块大小基于带宽标准、响应设备能力和请求设备能力中的一个或多个。In yet another implementation form, the controller is further configured to initiate a negotiation process with the responding device for a memory block size based on one or more of bandwidth criteria, responding device capabilities, and requesting device capabilities.
协商过程允许通过优化或改变响应设备端的粒度来增强带宽。The negotiation process allows bandwidth to be enhanced by optimizing or changing the granularity on the responding device side.
在另一种实现形式中,控制器还用于接收更新的内存块大小的指示。In another implementation, the controller is also configured to receive an indication of an updated memory block size.
更新的内存块大小的指示使请求设备能够在传输请求之前做出明智的决策,以加快数据通信速度,避免可能的页面错误(fault)和错误(error)。The updated indication of memory block size enables the requesting device to make informed decisions before transmitting the request to speed up data communication and avoid possible page faults and errors.
在另一种实现形式中,更新的内存块大小基于内存动作数量、带宽使用、响应设备能力和请求设备能力中的一个或多个。In another implementation form, the updated memory block size is based on one or more of the number of memory actions, bandwidth usage, responding device capabilities, and requesting device capabilities.
基于内存动作数量、带宽和设备功能的更新的内存块大小允许通过选择或更新内存块的大小或粒度来优化因素。Updated memory block sizes based on the number of memory actions, bandwidth, and device capabilities allow factors to be optimized by selecting or updating the size or granularity of the memory blocks.
在一种实现形式中,其中,控制器还用于存储内存块的内存状态。In one implementation, the controller is also used to store the memory state of the memory block.
请求设备保持对内存状态的跟踪(或簿记),以在响应设备处实现更快的数据通信并最大限度地减少页面错误。The requesting device keeps track (or bookkeeping) of memory state to enable faster data communication and minimize page faults at the responding device.
在一种实现形式中,控制器还用于将多个内存块分组为内存块组,基于多个内存块的内存状态确定内存块组的内存组状态,并存储内存组状态。In one implementation form, the controller is further configured to group multiple memory blocks into memory block groups, determine the memory group status of the memory block group based on the memory status of the multiple memory blocks, and store the memory group status.
内存块的分块或分组使请求设备能够清楚地分类和跟踪多个内存块的内存组状态,以实现更高效的数据通信。集体确定多个内存块的内存状态而不是单独确定多个内存块中的每一个的内存状态减少了通过网络发送的通知的数量,因此减少或节省了请求设备中的数据库大小,并允许更高效的内存分配。Chunking or grouping of memory blocks enables the requesting device to clearly classify and track the memory bank status of multiple memory blocks for more efficient data communication. Determining the memory state of multiple memory blocks collectively rather than individually reduces the number of notifications sent over the network, thus reducing or saving database size in the requesting device and allowing for greater efficiency memory allocation.
在另一种实现形式中,其中,内存组状态包括计数器,控制器用于:如果所述接收到的内存状态指示内存块组的多个内存块中包括的内存块已经改变其内存状态,调整计数器。In another implementation form, wherein the memory group status includes a counter, the controller is configured to: if the received memory status indicates that a memory block included in a plurality of memory blocks of the memory block group has changed its memory status, adjust the counter .
在另一种实现形式中,其中,内存组状态包括内存标志,控制器用于:如果指示内存状态的通知指示内存块组的内存块当前不在响应设备的存储器中,设置标志。In another implementation form, wherein the memory group status includes a memory flag, the controller is configured to set the flag if the notification indicating the memory status indicates that a memory block of the memory block group is not currently in the memory of the responding device.
计数器和标志允许保持对内存块或内存块组的内存状态的跟踪或薄记,以确保高效的内存状态报告通信。Counters and flags allow keeping track or bookkeeping of the memory status of a memory block or group of memory blocks to ensure efficient memory status reporting communication.
在一种实现形式中,关于内存状态的通知指示一个或多个内存块的变化。In one implementation, notifications about memory status indicate changes to one or more memory blocks.
更新的通知使请求设备能够根据内存状态的变化配置请求,以避免页面错误(fault)或错误(error),实现免查询操作。Updated notifications enable requesting devices to configure requests based on changes in memory status to avoid page faults or errors and enable query-free operations.
在一种实现形式中,关于内存状态的通知指示一个或多个内存块的当前内存状态。In one implementation form, notifications about memory status indicate the current memory status of one or more memory blocks.
关于当前内存状态的通知使请求设备能够基于内存区域或内存块的最新或当前状态来配置请求,以避免任何或某些页面错误。Notification about the current memory state enables the requesting device to configure requests based on the latest or current state of a memory region or memory block to avoid any or some page faults.
在一种实现形式中,控制器还用于在:如果确定待访问的内存块在响应设备的存储器中尚未就绪,发送包括预取提示请求的消息,该预取提示请求向响应设备指示待访问的内存块。In one implementation form, the controller is further configured to: if it is determined that the memory block to be accessed is not ready in the memory of the responding device, send a message including a prefetch hint request indicating to the responding device that it is to be accessed. memory block.
在一种实现形式中,关于内存状态的通知指示响应设备不兼容,其中控制器还用于:相应地调整对一个或多个内存块的内存请求;不发送包括预取提示请求的消息。In one implementation form, the notification regarding the memory status indicates that the responding device is incompatible, wherein the controller is further configured to: adjust memory requests for one or more memory blocks accordingly; and not send a message including a prefetch hint request.
该通知使请求设备能够通过在早期阶段指示不足来节省计算时间,使得不发送包括预取提示请求的消息,并且不花费更多的资源。This notification enables the requesting device to save computing time by indicating the deficiency at an early stage, so that messages including prefetch hint requests are not sent and further resources are not spent.
在另一方面,本发明提供了一种用于请求设备的方法,所述请求设备包括存储器、控制器和通信接口。所述方法包括:与所述响应设备的内存区域进行关联,所述内存区域包括一个或多个内存块;通过所述通信接口从所述响应设备接收关于内存状态的通知;基于所述内存状态判断待访问的内存块在所述响应设备的所述存储器中是否就绪;通过所述通信接口向所述响应设备传输请求,所述请求与所述待访问的内存块有关。In another aspect, the present invention provides a method for a requesting device including a memory, a controller, and a communication interface. The method includes: associating with a memory area of the responding device, the memory area including one or more memory blocks; receiving notification about memory status from the responding device through the communication interface; based on the memory status Determine whether the memory block to be accessed is ready in the memory of the responding device; transmit a request to the responding device through the communication interface, the request being related to the memory block to be accessed.
本方面的方法实现了本发明的请求设备的所有优点和效果。The method of this aspect realizes all the advantages and effects of the requesting device of the invention.
在又一方面,本发明提供了一种携带计算机指令的计算机可读介质,所述计算机指令在被加载到请求设备的控制器中并由其执行时使所述请求设备能够实现所述方法。In yet another aspect, the present invention provides a computer-readable medium carrying computer instructions that, when loaded into and executed by a controller of a requesting device, enable the requesting device to implement the method.
携带计算机指令的计算机可读介质(具体来说,非瞬时性计算机可读介质)实现了请求设备或该方法的所有优点和效果。Computer-readable media (specifically, non-transitory computer-readable media) carrying computer instructions realize all the advantages and effects of the requested device or the method.
在一方面,本发明提供了一种响应设备,包括存储器、控制器和通信接口。控制器用于:将内存区域与请求设备关联,内存区域包括一个或多个内存块;确定与内存块有关的内存状态;通过通信接口向请求设备传输关于内存状态的通知。In one aspect, the invention provides a response device including a memory, a controller and a communication interface. The controller is configured to: associate a memory area with a requesting device, the memory area including one or more memory blocks; determine a memory state associated with the memory block; and transmit a notification regarding the memory state to the requesting device through the communication interface.
由于内存状态与请求相关联,响应设备的控制器确定与内存区域有关的内存状态,并相应地响应以允许在任一端重新配置内存区域,以实现更快的数据通信。有益的是,由响应设备传输的这些通知大大减少了在RDMA消息到达响应设备时服务RDMA消息本身的时延,并使数据通信更高效。Since the memory state is associated with the request, the controller of the responding device determines the memory state with respect to the memory region and responds accordingly to allow the memory region to be reconfigured on either end for faster data communication. Beneficially, these notifications transmitted by the responding device greatly reduce the latency of servicing the RDMA message itself when it arrives at the responding device and make data communications more efficient.
在一种实现形式中,其中,控制器还用于传输内存块大小的指示,内存块大小小于内存区域的大小,其中关于内存状态的通知与一个或多个内存块有关。In one implementation, the controller is further configured to transmit an indication of a memory block size that is smaller than the size of the memory region, wherein the notification of the memory status relates to one or more memory blocks.
跟踪一个或多个内存块的内存状态而不是整个内存区域的内存状态使请求能够被调整,以实现更高的带宽、更低的时延,并因此实现更快、更高效的数据通信。Tracking the memory state of one or more memory blocks rather than the memory state of an entire memory region enables requests to be adjusted to achieve higher bandwidth, lower latency, and therefore faster, more efficient data communication.
在另一种实现形式中,控制器还用于在传输内存块大小的指示之前,从请求设备接收所指示的内存块大小。In another implementation form, the controller is further configured to receive the indicated memory block size from the requesting device prior to transmitting the indication of the memory block size.
在一种实现形式中,控制器还用于针对内存块大小发起与请求设备的协商过程,其中,内存块大小基于带宽标准、响应设备能力和请求设备能力中的一个或多个。In one implementation form, the controller is further configured to initiate a negotiation process with the requesting device for a memory block size based on one or more of bandwidth criteria, responding device capabilities, and requesting device capabilities.
在一种实现形式中,控制器还用于确定一个或多个内存块中的一个的内存状态。In one implementation, the controller is also configured to determine a memory state of one of one or more memory blocks.
请求设备保持对请求设备所关注的一个或多个内存块的内存状态的跟踪(或簿记),以节省时间以实现更快的数据通信并最大限度地减少页面错误。The requesting device keeps track (or bookkeeping) of the memory state of the block or blocks of memory that the requesting device is interested in, saving time for faster data communication and minimizing page faults.
在一种实现形式中,控制器还用于基于内存块的内存状态的变化确定该内存块的内存状态。In one implementation form, the controller is further configured to determine a memory state of the memory block based on a change in the memory state of the memory block.
这允许控制器提供内存块的最新或当前且并准确的内存状态,以实现高效且可靠的数据传输,而不会出现可能的延迟。This allows the controller to provide the latest or current and accurate memory status of the memory block for efficient and reliable data transfer without possible delays.
在一种实现形式中,控制器还用于基于确定内存块的内存位置来确定该内存块的内存状态。In one implementation form, the controller is further configured to determine a memory state of the memory block based on determining the memory location of the memory block.
在另一种实现形式中,控制器还用于确定一个或多个内存块在一时间段内的内存状态,在该时间段到期时,传输指示该一个或多个内存块的内存状态的通知。In another implementation form, the controller is further configured to determine the memory status of one or more memory blocks within a time period, and when the time period expires, transmit a memory status indicating the memory status of the one or more memory blocks. notify.
当内存状态变化时,在一时间段后传输通知。如果已经安排了通知,则将状态变化追加到退出通知。When the memory state changes, a notification is transmitted after a period of time. If a notification is already scheduled, append the status change to the exit notification.
在又一种实现形式中,控制器还用于确定一个或多个内存块的内存状态;确定内存动作数量;确定所述内存动作数量超过阈值数量;然后传输指示一个或多个内存块的内存状态的通知。In yet another implementation form, the controller is further configured to determine a memory status of one or more memory blocks; determine a number of memory actions; determine that the number of memory actions exceeds a threshold number; and then transmit a memory indicating that the one or more memory blocks status notification.
对内存状态和内存动作数量的确定允许基于交换入/出页面的阈值数量、时间段或每个消息报告的最大通知来追加内存状态,以优化数据通信。Determination of memory status and number of memory actions allows appending memory status based on threshold number of pages swapped in/out, time period, or maximum notifications reported per message to optimize data communication.
在一种实现形式中,控制器还用于通过通信接口从请求设备接收预取提示请求,预取提示请求指示一个或多个内存块,并将所指示的一个或多个内存块加载到存储器中。In one implementation form, the controller is further configured to receive a prefetch hint request from the requesting device through the communication interface, the prefetch hint request indicates one or more memory blocks, and load the indicated one or more memory blocks into the memory. middle.
接收预取提示请求以指示请求设备的要求或启用内存区域或内存块的完整映射,因此,在RDMA操作期间存在未映射的内存区域的情况下,减少或消除等待周期。Receives a prefetch hint request to indicate the requesting device's requirements or to enable complete mapping of a memory region or memory block, thus reducing or eliminating wait cycles in the event that an unmapped memory region exists during an RDMA operation.
在另一方面,本发明提供了一种用于响应设备的方法,所述响应设备包括存储器、控制器和通信接口,所述方法包括将内存区域与请求设备关联;确定与所述内存区域有关的内存状态,并通过所述通信接口向所述请求设备传输关于所述内存状态的通知。In another aspect, the present invention provides a method for a response device, the response device includes a memory, a controller and a communication interface, the method includes associating a memory area with the requesting device; determining whether the memory area is relevant to the requesting device. memory status, and transmits a notification about the memory status to the requesting device through the communication interface.
本方面的方法实现了本发明的接收设备的所有优点和效果。The method of this aspect realizes all the advantages and effects of the receiving device of the invention.
在一种实现形式中,本发明提供了一种携带计算机指令的计算机可读介质,所述计算机指令在被加载到响应设备的控制器中并由其执行时使所述响应设备能够实现所述方法。In one implementation form, the present invention provides a computer-readable medium carrying computer instructions that, when loaded into and executed by a controller of a response device, enable the response device to implement the described method.
携带计算机指令的计算机可读介质实现了响应设备或该方法的所有优点和效果。A computer-readable medium carrying computer instructions realizes all the advantages and effects of a responsive device or method.
应当理解的是,所有上述实施方式可以组合在一起。It should be understood that all the above embodiments can be combined together.
需要说明的是,本申请中描述的所有设备、元件、电路、单元和模块都可以在软件元件或硬件元件或其任何类型的组合中实现。本申请中描述的各种实体所执行的步骤以及所描述的各种实体要执行的功能均意在指各个实体用于执行各个步骤和功能。即使在以下具体实施例的描述中,外部实体要执行的特定功能或步骤未反映在执行该特定步骤或功能的实体的特定详细元件的描述中,技术人员应清楚,这些方法和功能可以在相应的软件或硬件元件中实现,或以此类元件的任何种组合实现。可以理解的是,本发明的特征易于以各种组合进行组合,而不脱离由所附权利要求书所定义的本发明的范围。It should be noted that all devices, components, circuits, units and modules described in this application can be implemented in software components or hardware components or any type of combination thereof. The steps performed by various entities described in this application and the functions described to be performed by various entities are intended to mean that each entity is used to perform the various steps and functions. Even if in the following description of specific embodiments, a specific function or step to be performed by an external entity is not reflected in the description of the specific detailed elements of the entity that performs the specific step or function, it should be clear to the skilled person that these methods and functions may be implemented accordingly. implemented in software or hardware components, or in any combination of such components. It will be appreciated that the features of the invention are susceptible to being combined in various combinations without departing from the scope of the invention as defined by the appended claims.
本发明的其他方面、优点、特征和目的将从附图和结合以下所附权利要求书解释的说明性实现方式的详细描述中变得显而易见。Other aspects, advantages, features and objects of the invention will become apparent from the accompanying drawings and the detailed description of illustrative implementations, taken in conjunction with the following appended claims.
附图说明Description of the drawings
结合所附附图阅读时,可以更好地理解上述发明内容以及说明性实施例的下列详细描述。为了说明本发明,本发明的示例性结构在附图中示出。然而,本发明并不限于本文公开的特定方法和手段。此外,本领域的技术人员将理解,这些附图并非按比例绘制。在可能的情况下,相同的元件使用相同的数字表示。The foregoing summary and the following detailed description of illustrative embodiments may be better understood when read in conjunction with the accompanying drawings. For the purpose of illustrating the invention, exemplary structures of the invention are shown in the drawings. However, this invention is not limited to the specific methods and instrumentalities disclosed herein. Furthermore, those skilled in the art will appreciate that the drawings are not drawn to scale. Where possible, identical components are designated by the same numbers.
下面仅通过举例,结合以下附图对本发明实施例进行描述。The embodiments of the present invention are described below by way of example only and in combination with the following drawings.
图1是根据本发明实施例的可用于执行远程直接内存访问(remote directmemory access,RDMA)操作的请求设备的框图;Figure 1 is a block diagram of a requesting device that can be used to perform remote direct memory access (RDMA) operations according to an embodiment of the present invention;
图2是根据本发明实施例的用于请求设备执行RDMA操作的方法的流程图;Figure 2 is a flow chart of a method for requesting a device to perform an RDMA operation according to an embodiment of the present invention;
图3是根据本发明实施例的可用于执行RDMA操作的响应设备的框图;Figure 3 is a block diagram of a response device that can be used to perform RDMA operations according to an embodiment of the present invention;
图4是根据本发明实施例的用于响应设备执行RDMA操作的方法的流程图;Figure 4 is a flow chart of a method for responding to a device performing an RDMA operation according to an embodiment of the present invention;
图5是描绘根据本发明实施例的用以执行RDMA操作的系统的示意图;并且Figure 5 is a schematic diagram depicting a system for performing RDMA operations according to an embodiment of the present invention; and
图6-7是描绘根据本发明的各种实施例的RDMA系统的实现的示例性场景的示意图。6-7 are schematic diagrams depicting exemplary scenarios for implementation of an RDMA system according to various embodiments of the present invention.
在附图中,下划线数字用于表示下划线数字所在的项或下划线数字相邻的项。不带下划线的数字与将该不带下划线的数字链接到项目的线条所标识的项目相关。当数字不带下划线但带有关联箭头时,不带下划线的数字用于标识箭头所指的一般项目。In the drawings, underlined numerals are used to represent the item in which the underlined numeral is located or an item adjacent to the underlined numeral. An ununderlined number is associated with the item identified by the line linking the ununderlined number to the item. When a number is not underlined but has an associated arrow, the ununderlined number is used to identify the general item to which the arrow points.
具体实施方式Detailed ways
以下详细描述说明了本发明的实施例及其实施方式。虽然已公开本发明的一些实施方式,但本领域的技术人员将认识到,也可以实现用于实施或实践本发明的其他实施例。The following detailed description illustrates embodiments of the invention and its implementation. Although a few embodiments of this invention have been disclosed, those skilled in the art will recognize that other embodiments for implementing or practicing the invention may be realized.
现在参考图1,示出了根据本发明实施例的可用于执行远程直接内存访问(remotedirect memory access,RDMA)操作的请求设备100的框图。图1主要示出了请求设备100的各种示例性组件。如图所示,请求设备100包括存储器102、控制器104和通信接口106。Referring now to FIG. 1 , shown is a block diagram of a requesting device 100 that may be used to perform remote direct memory access (RDMA) operations in accordance with an embodiment of the present invention. FIG. 1 generally illustrates various exemplary components of the requesting device 100. As shown, requesting device 100 includes memory 102, controller 104, and communication interface 106.
请求设备100可以潜在地用作发送设备(或发送器)。请求设备100的示例可以包括但不限于通信信道适配器、服务器、计算机集群(例如,大规模并行计算机集群)中的计算或计算设备、包括便携式或非便携式电子设备的通信装置、无线调制解调器、超级计算机或其他基于RDMA的设备。The requesting device 100 can potentially function as a sending device (or transmitter). Examples of requesting devices 100 may include, but are not limited to, communication channel adapters, servers, computing or computing devices in computer clusters (eg, massively parallel computer clusters), communications devices including portable or non-portable electronic devices, wireless modems, supercomputers or other RDMA based devices.
存储器102包括合适的逻辑、电路和/或接口,用于存储可执行以控制请求设备100的操作的指令。例如,存储器102可以存储操作系统和/或其他程序产品以操作请求设备100。存储器102可以存储数据(以数据包的形式传输),以用于在请求设备100处处理。存储器102的实现的示例可以包括但不限于电可擦除可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、随机存取存储器(random accessmemory,RAM)、只读存储器(read only memory,ROM)、硬盘驱动器(hard disk drive,HDD)、闪存、安全数字(secure digital,SD)卡、固态硬盘(solid-state drive,SSD)和/或CPU高速缓存存储器。用于提供非瞬时性存储器的计算机可读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备,或上述任何合适的组合。Memory 102 includes suitable logic, circuitry, and/or interfaces for storing instructions executable to control the operation of requesting device 100 . For example, memory 102 may store an operating system and/or other program products to operate requesting device 100 . The memory 102 may store data (transmitted in the form of data packets) for processing at the requesting device 100 . Examples of implementations of memory 102 may include, but are not limited to, electrically erasable programmable read-only memory (EEPROM), random access memory (RAM), read only memory, ROM), hard disk drive (HDD), flash memory, secure digital (SD) card, solid-state drive (SSD) and/or CPU cache memory. Computer-readable storage media used to provide non-transitory memory may include, but are not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing.
请求设备100的通信接口106包括介质(例如,通信信道),请求设备100通过该介质与响应设备通信。通信接口106的示例包括但不限于计算机集群中的通信信道、局域网通信信道(local area communication channel,LAN)、蜂窝通信信道、无线传感器通信信道(wireless sensor communication channel,WSN)、云通信信道、车辆到通信信道(vehicle-to-communication channel,V2N)通信信道、城域通信信道(metropolitan areacommunication channel,MAN),和/或互联网。此外,通信信道环境中的请求设备100用于根据支持RDMA通信的各种通信信道协议连接到响应设备。这种通信信道协议、通信标准和技术的示例可以包括但不限于infiniband(infiniband,IB)、基于融合以太网的RDMA(RDMAover converged ethernet,RoCE)、互联网广域RDMA协议(internet wide area RDMAprotocol,iWARP)或其修改和变化。The communication interface 106 of the requesting device 100 includes a medium (eg, a communication channel) over which the requesting device 100 communicates with the responding device. Examples of the communication interface 106 include, but are not limited to, communication channels in a computer cluster, local area communication channel (LAN), cellular communication channel, wireless sensor communication channel (WSN), cloud communication channel, vehicle A vehicle-to-communication channel (V2N) communication channel, a metropolitan area communication channel (MAN), and/or the Internet. In addition, the requesting device 100 in the communication channel environment is used to connect to the responding device according to various communication channel protocols supporting RDMA communication. Examples of such communication channel protocols, communication standards and technologies may include, but are not limited to, infiniband (IB), RDMA over converged ethernet (RoCE), Internet wide area RDMA protocol (iWARP) ) or modifications and variations thereof.
在本发明中,控制器104是RDMA控制器,其包括合适的逻辑、电路和/或接口,这些逻辑、电路和/或接口用于生成提示请求,该提示请求包括操作类型的指示。控制器104是用于处理驱动请求设备100的指令的计算元件。控制器104的示例包括但不限于网络接口控制器、微处理器、微控制器、复杂指令集计算(complex instruction set computing,CISC)微处理器、简化指令集(reduced instruction set,RISC)微处理器或超长指令集(very longinstruction word,VLIW)微处理器。控制器104可以包括用以分配内存区域的存储器管理单元(memory management unit,MMU)。可选地,类似于控制器104的一个或多个控制器、交互设备(例如请求设备100、响应设备)和元件可以布置在各种架构中,用于响应和处理驱动请求设备100的指令。In the present invention, the controller 104 is an RDMA controller that includes suitable logic, circuitry, and/or interfaces for generating a prompt request that includes an indication of the type of operation. Controller 104 is a computing element for processing instructions to drive requesting device 100 . Examples of the controller 104 include, but are not limited to, a network interface controller, a microprocessor, a microcontroller, a complex instruction set computing (CISC) microprocessor, a reduced instruction set (RISC) microprocessor or very long instruction set (VLIW) microprocessor. The controller 104 may include a memory management unit (MMU) to allocate memory areas. Alternatively, one or more controllers, interactive devices (eg, requesting device 100, responding device) and elements similar to controller 104 may be arranged in various architectures for responding to and processing instructions driving requesting device 100.
控制器104用于与响应设备的内存区域进行关联,内存区域包括一个或多个内存块。可选地,控制器104通过通信接口106传输用以将内存区域与响应设备(类似于请求设备100)关联的请求。该请求基于用于在网络中不同计算设备之间通信的请求-响应或请求-应答方法。例如,第一计算设备(例如请求设备100)发送用以关联数据或内存块的请求,第二计算设备(例如响应设备)响应该请求。具体来说,该请求是消息交换模式的一部分,在消息交换模式中,请求设备100传输用以将内存区域与响应设备关联的请求,其中响应设备接收并处理请求,最终返回与所请求的内存区域有关的消息作为响应。应当理解,关联和内存注册可以以其他不同的方式实现,而不限制本发明的范围。“内存区域”是指区域,也称为资源分区、区或内存上下文,是分配的块的集合,可以基于实现方式高效地释放。本文中,内存区域是存储器102等较大存储器的一部分。通常,内存区域中的所有块都分配在单个连续的内存地址范围或多个内存地址范围中,类似于传统的堆栈帧分配。存储器102包括一个或多个内存区域,这些内存区域可以基于实现方式分配给不同的操作。通常,内存区域是基于页面创建的,类似于内核大小。通常,内存区域的范围可以从1字节、2字节、4千字节(kilobyte,KB)、8KB、64KB、2兆字节(megabyte,MB)、8MB、32MB、1千兆字节(gigabyte,GB)、16GB、128GB等到响应设备300的整个存储器302。值得注意的是,内存区域上的每个内存“页”的大小与内核大小类似。术语“内核”表示操作系统的管理计算系统软件和硬件的操作的中心组件。或者,内核用于管理内存和CPU时间的操作。该请求包括与内存区域和/或内存块有关的信息,以帮助数据通信的有效性。存储器102的内存区域将由响应设备与响应设备的存储器关联。响应设备的存储器类似于请求设备100的存储器102。通常,内存区域包括一个或多个内存块。术语“块”或“内存块”是指具有最大长度或块大小的字节或位序列,通常包含多个记录。因此结构化的数据被认为是分块的或被称为块。通常,内存区域被划分为一个或多个部分,例如第一部分即0-50%和第二部分即50-100%。在一个示例中,1GB的内存区域被划分为每个0.5GB的两个内存块,且将触发对第一内存块的跟踪并相应地触发第一内存块的消息,并且内存块上的任何变化都会触发与第二内存块相关联的跟踪和消息。应当理解,这种划分只是示例性的,并且可以根据实现方式改变任何数量或大小的内存块,而不限制本发明的范围。通常,内存块的大小与内存区域的大小的比率是1:1,但是该比率可以由控制器或计算设备根据实现方式而改变。The controller 104 is configured to associate with a memory area of the response device, where the memory area includes one or more memory blocks. Optionally, controller 104 transmits a request through communication interface 106 to associate a memory region with a responding device (similar to requesting device 100). The request is based on the request-response or request-reply method used for communication between different computing devices in the network. For example, a first computing device (eg, requesting device 100) sends a request to associate a block of data or memory, and a second computing device (eg, responding device) responds to the request. Specifically, the request is part of a message exchange pattern in which the requesting device 100 transmits a request to associate a memory area with a responding device, where the responding device receives and processes the request and ultimately returns the memory associated with the requested zone-related messages in response. It should be understood that association and memory registration can be implemented in other different ways without limiting the scope of the invention. A "memory region" refers to a region, also called a resource partition, extent, or memory context, which is a collection of allocated blocks that can be efficiently freed based on implementation. As used herein, a memory area is a portion of a larger memory such as memory 102. Typically, all blocks in a memory region are allocated in a single contiguous memory address range or multiple memory address ranges, similar to traditional stack frame allocation. Memory 102 includes one or more memory areas that may be allocated to different operations based on implementation. Typically, memory regions are created on a page basis, similar to the kernel size. Typically, memory areas can range from 1 byte, 2 bytes, 4 kilobytes (KB), 8KB, 64KB, 2 megabytes (MB), 8MB, 32MB, 1 gigabyte ( gigabyte, GB), 16GB, 128GB, etc. the entire memory 302 of the response device 300. It is worth noting that each memory "page" on the memory region is similar in size to the kernel size. The term "kernel" refers to the central component of an operating system that governs the operation of computing system software and hardware. Alternatively, the operations used by the kernel to manage memory and CPU time. The request includes information about memory areas and/or memory blocks to aid in the effectiveness of data communications. The memory area of memory 102 will be associated by the responding device with the memory of the responding device. The memory of the responding device is similar to the memory 102 of the requesting device 100 . Typically, a memory area consists of one or more memory blocks. The term "block" or "memory block" refers to a sequence of bytes or bits with a maximum length or block size, usually containing multiple records. Therefore structured data is considered to be chunked or called chunks. Typically, a memory area is divided into one or more parts, such as a first part i.e. 0-50% and a second part i.e. 50-100%. In one example, a 1GB memory area is divided into two memory blocks of 0.5GB each, and a trace for the first memory block will be triggered and messages for the first memory block will be triggered accordingly, and any changes on the memory block Both traces and messages associated with the second memory block will be triggered. It should be understood that this division is exemplary only and that any number or size of memory blocks may vary depending on the implementation without limiting the scope of the invention. Typically, the ratio of the size of a memory block to the size of a memory region is 1:1, but this ratio can be changed by the controller or computing device depending on the implementation.
控制器104用于通过通信接口106从响应设备接收关于与内存区域有关的内存状态的通知。“通知”是指从响应设备发送的与内存区域有关的消息类型。响应设备在从控制器104接收到用于关联内存区域(或内存页)的请求时,分析存储器以确定内存状态。“内存状态”是指相关联内存区域的状态,其中包括一个或多个内存块的内存区域在请求时可能是,也可能不是可用的或就绪的。因此,基本上,一个或多个内存块中的每一个被筛选或分析以确定它们的状态。形成内存区域的一个或多个块中的每一个的集体状态被称为内存状态。可选地,内存状态与单个内存块有关。可选地,内存状态与整个内存区域有关。通常,内存状态指示所请求的内存块或内存区域是否可用,基于此,响应设备向请求设备100传输通知。该通知可以包括相关联的一个或多个内存块中的每一个的内存状态。因此,请求设备100或控制器104用于从响应设备接收指示与内存区域有关的内存状态的通知。通常,内存块要么可用,要么不可用。内存块的可用状态可以称为交换入状态,而内存的不可用状态可以称为交换出状态。请求设备100用于传输提示消息,用于使响应设备根据并发执行一个或多个操作的要求对一个或多个内存块执行和准备交换(swapping)或交换(swap)操作。术语“交换”是指存储器管理方案,其中任何进程或操作都可以暂时从主存储器(例如响应设备的存储器)交换到辅助存储器(例如备份驱动器、硬盘驱动器),以便主存储器(例如随机存取存储器或RAM)可以用于其他进程。有益的是,采用内存交换来提高存储器102或响应设备的存储器的利用率。具体来说,如果任何内存块由于任何原因不可用,则可以用辅助存储器中的相同内存块将该内存块交换出去,反之亦然。这样的交换操作使响应设备能够启用内存区域的关联,而不会由于以与不可用内存块有关的通知形式进行进一步通信的固有需要而产生任何进一步时间延迟。有益的是,不可用的内存块被交换出去,并且可以在任何中断的情况下执行关联。The controller 104 is configured to receive notifications about memory status related to the memory region from the responding device through the communication interface 106 . "Notification" refers to the type of message sent from the responding device related to a memory area. The responding device, upon receiving a request from the controller 104 to associate a memory region (or page of memory), analyzes the memory to determine the memory status. "Memory State" means the state of an associated memory region, which may or may not be available or ready at the time of request, including one or more memory blocks. So basically, each of one or more memory blocks is screened or analyzed to determine their status. The collective state of each of the one or more blocks that form a memory region is called the memory state. Optionally, the memory state is related to a single memory block. Optionally, the memory state relates to the entire memory region. Typically, the memory status indicates whether the requested memory block or memory region is available, based on which the responding device transmits a notification to the requesting device 100 . The notification may include the memory status of each of the associated one or more memory blocks. Accordingly, the requesting device 100 or the controller 104 is configured to receive notifications from the responding device indicating memory status related to the memory region. Typically, a block of memory is either available or not. The available state of a memory block can be called the swap-in state, while the unavailable state of the memory can be called the swap-out state. The requesting device 100 is used to transmit a prompt message to enable the responding device to perform and prepare a swapping or swapping operation on one or more memory blocks according to the requirement of concurrently executing one or more operations. The term "swapping" refers to a memory management scheme in which any process or operation can be temporarily swapped from primary storage (e.g., the memory of a responding device) to secondary storage (e.g., backup drive, hard drive) to primary storage (e.g., random access memory) or RAM) can be used by other processes. Beneficially, memory swapping is employed to increase utilization of the memory 102 or memory of the responsive device. Specifically, if any memory block becomes unavailable for any reason, that memory block can be swapped out with the same memory block in secondary storage, and vice versa. Such a swap operation enables the responding device to enable the association of a memory region without incurring any further time delay due to the inherent need for further communication in the form of notifications regarding unavailable memory blocks. Beneficially, unavailable memory blocks are swapped out, and correlation can be performed in the event of any interruption.
在另一个实施例中,控制器104还用于接收内存块大小的指示,内存块大小小于或等于内存区域的大小。内存块(或页)是响应设备的所请求内存区域的一部分或整个所请求内存区域。控制器104接收内存块大小的指示,该指示由响应设备用于生成指示内存状态的通知。根据实现方式,指示可以包括一个或多个内存块的大小。基于接收到的指示,请求设备100或控制器104可以相应地基于内存块大小的指示重新配置请求或关联。例如,控制器104接收内存块大小为40千字节(kilobyte,KB)的指示,基于该指示,请求设备100被指示通知的粒度,该粒度进一步指示用于进一步操作的存储器的状态。通常,任何请求设备都可能需要各种大小的内存块或内存区域来进行高效的数据通信。内存块或内存区域的不同大小为存储器102提供了粒度,从而为该存储器提供了灵活性。因此,为了避免在操作期间可能抑制高效数据通信的任何差异,响应设备传输内存块大小以帮助请求设备100确定相关联内存块的可访问性。内存区域被划分为相等的逻辑“块大小”或内存块。块数量可以在不限制本发明的范围的情况下改变。块数量的范围可以从整个内存区域的一个块到内存区域中每页的单个块。此外,关于内存状态的通知与一个或多个内存块有关。通常,一个或多个内存块中的每个内存块包括指示内存块的状态或可用性的单独内存状态。总的来说,每个内存块有助于确定内存区域的内存状态。值得注意的是,请求设备100能够基于但不限于未映射/完全映射通知的数量、遇到的页面错误的数量等确定通知粒度并根据实现方式指示内存区域的结构。In another embodiment, the controller 104 is further configured to receive an indication of a memory block size, where the memory block size is less than or equal to the size of the memory area. A memory block (or page) is a portion of the requested memory area of the responding device or the entire requested memory area. The controller 104 receives an indication of the memory block size, which is used by the responding device to generate notifications indicative of memory status. Depending on the implementation, the indication may include the size of one or more memory blocks. Based on the received indication, the requesting device 100 or the controller 104 may reconfigure the request or association accordingly based on the indication of the memory block size. For example, the controller 104 receives an indication that the memory block size is 40 kilobytes (KB), based on which the requesting device 100 is instructed to notify the granularity that further indicates the state of the memory for further operations. Typically, any requesting device may require memory blocks or memory regions of various sizes for efficient data communication. Different sizes of memory blocks or memory regions provide granularity to memory 102 and thus flexibility to the memory. Therefore, to avoid any discrepancies that might inhibit efficient data communication during operation, the responding device transmits the memory block size to assist the requesting device 100 in determining the accessibility of the associated memory block. A memory area is divided into equal logical "block sizes" or blocks of memory. The number of blocks may vary without limiting the scope of the invention. The number of blocks can range from one block for the entire memory area to a single block per page in the memory area. Additionally, notifications about memory status relate to one or more memory blocks. Typically, each of one or more memory blocks includes a separate memory state that indicates the status or availability of the memory block. Overall, each memory block helps determine the memory state of the memory region. Notably, the requesting device 100 is able to determine the notification granularity based on, but not limited to, the number of unmapped/fully mapped notifications, the number of page faults encountered, etc. and dictate the structure of the memory region depending on the implementation.
在另一个实施例中,控制器104还用于在接收内存块大小的指示之前,向响应设备传输所指示的内存块大小。“所指示的大小”是指提供给响应设备的关于内存块大小的指示,针对该指示将生成内存状态通知。控制器104传输所指示的内存块大小,其中所指示的大小基于请求设备100的存储器102中的内存块大小。术语“所指示的大小”是指对响应设备关联内存状态的内存块大小的建议,该建议随后被传送到请求设备100。换句话说,所指示的大小是对内存状态粒度的建议。值得注意的是,被关联的内存区域包括一个或多个内存块,其中每个内存块具有相同的大小。可选地,内存块大小可以使用所指示的大小确定。应当理解,通知可以根据实现方式在任何时间点发送,而不限制发明的范围。响应设备用于向请求设备100通知选定粒度(例如,通过所指示的大小)。在一个示例中,当块的未映射页面的数量从零增加到一个或多个时,向请求设备100发送通知,指示该块可能未映射。在另一个示例中,当块的未映射页面的数量从一个或多个减少到零时,向请求设备发送该块可能被映射的通知。In another embodiment, the controller 104 is further configured to transmit the indicated memory block size to the responding device before receiving the indication of the memory block size. "Indicated size" means the indication provided to the responding device of the size of the memory block for which a memory status notification will be generated. The controller 104 transmits the indicated memory block size, where the indicated size is based on the memory block size in the memory 102 of the requesting device 100 . The term "indicated size" refers to a recommendation for the memory block size associated with the memory status of the responding device, which recommendation is subsequently communicated to the requesting device 100. In other words, the sizes indicated are recommendations for memory state granularity. It is worth noting that the associated memory area consists of one or more memory blocks, where each memory block has the same size. Optionally, the memory block size can be determined using the indicated size. It should be understood that notifications may be sent at any point in time depending on the implementation without limiting the scope of the invention. The responding device is used to notify the requesting device 100 of the selected granularity (eg, by the indicated size). In one example, when the number of unmapped pages for a block increases from zero to one or more, a notification is sent to the requesting device 100 indicating that the block may be unmapped. In another example, when the number of unmapped pages for a block decreases from one or more to zero, a notification is sent to the requesting device that the block may be mapped.
在一个实施例中,与所指示的大小有关的通知可以在内存区域的关联时传输。或者,可以在接收到相关联内存区域的内存状态之后传输通知。In one embodiment, notification regarding the indicated size may be transmitted upon association of the memory area. Alternatively, the notification can be transmitted after receiving the memory state of the associated memory region.
在又一实施例中,控制器104还用于针对内存块大小发起与响应设备的协商过程,其中,内存块大小基于带宽标准、响应设备能力和请求设备能力中的一个或多个。控制器104用于发起协商过程。“协商过程”是指用以交换和决定请求设备100和响应设备使用的内存块大小的简单协议。协商过程的双向性允许请求设备100和响应设备更有效地传送和报告内存块状态。通常,存储器102或响应设备的存储器的内存块是能够在多个并发操作之间分配的资源(例如,字节、字、数据包时隙)的集合。有益的是,协商过程允许响应设备有效地报告与内存注册或保留相比的内存块状态。在操作中,针对内存块大小发起协商过程,其中,内存块大小基于带宽标准、响应设备能力和请求设备能力中的一个或多个。由于,两个设备即请求设备100和响应设备之间的数据通信取决于一个或多个参数,例如带宽,即跨给定路径(例如通信接口106)的数据传输的最大速率;响应设备和请求设备的能力,例如处理功率、内存的大小,设备的数据传输速率等等。因此,考虑到所有这些参数,发起协商过程,以有效地确定每一方(或计算设备)的有利结果。术语“有利结果”是指协商过程的结果。有利结果可以是针对相关联内存块确定的大小。In yet another embodiment, the controller 104 is further configured to initiate a negotiation process with the responding device for a memory block size based on one or more of bandwidth standards, responding device capabilities, and requesting device capabilities. The controller 104 is used to initiate the negotiation process. "Negotiation process" refers to a simple protocol used to exchange and determine the size of memory blocks used by the requesting device 100 and the responding device. The bidirectional nature of the negotiation process allows requesting devices 100 and responding devices to communicate and report memory block status more efficiently. Typically, memory 102 or a memory block of a responsive device's memory is a collection of resources (eg, bytes, words, packet slots) that can be allocated among multiple concurrent operations. Beneficially, the negotiation process allows responding devices to efficiently report memory block status compared to memory registration or reservation. In operation, a negotiation process is initiated for a memory block size based on one or more of bandwidth criteria, responding device capabilities, and requesting device capabilities. Since data communication between two devices, the requesting device 100 and the responding device, depends on one or more parameters, such as bandwidth, i.e., the maximum rate of data transmission across a given path (e.g., communication interface 106); the responding device and the requesting device The capabilities of the device, such as processing power, size of memory, data transfer rate of the device, etc. Therefore, taking into account all these parameters, a negotiation process is initiated to effectively determine the favorable outcome for each party (or computing device). The term "favorable outcome" refers to the outcome of the consultation process. A beneficial result may be the size determined for the associated memory block.
在一个实施例中,控制器104还用于接收更新的内存块大小的指示。根据协商过程,响应设备用于传输更新的内存块大小。值得注意的是,响应设备用于基于请求设备100的要求改变用于报告内存块状态的内存块大小。响应设备可以决定报告不同的内存块大小。请求设备100或控制器104可以基于要求来选择任何大小或粒度的内存块。值得注意的是,控制器104在数据交换期间动态地改变粒度(或块大小),以允许由于被交换出去的页面数量和提高网络利用率而灵活地改变。此外,使响应设备能够允许例如请求设备100的特定请求设备选择加入、选择退出通知,其中术语“特定请求设备”是指当前使用内存区域或内存块的请求设备100。在接收到更新的大小时,请求设备100或控制器104可以判断待访问的内存块是否就绪。In one embodiment, the controller 104 is further configured to receive an indication of an updated memory block size. Based on the negotiation process, the responding device uses the updated memory block size to transmit. Notably, the responding device is configured to change the memory block size used to report the memory block status based on requests from the requesting device 100 . Responding devices may decide to report different memory block sizes. The requesting device 100 or controller 104 may select any size or granularity of memory blocks based on requirements. Notably, the controller 104 dynamically changes the granularity (or block size) during data exchange to allow flexibility due to the number of pages being swapped out and to improve network utilization. Additionally, the responding device is enabled to allow opt-in, opt-out notifications for a specific requesting device, such as the requesting device 100, where the term "specific requesting device" refers to the requesting device 100 currently using a memory region or block of memory. Upon receiving the updated size, the requesting device 100 or controller 104 may determine whether the memory block to be accessed is ready.
在另一个实施例中,更新的内存块大小基于内存动作数量、带宽使用、响应设备能力和请求设备100能力中的一个或多个。更新的内存块大小基于RDMA读取、RDMA写入等内存动作或操作的数量。在确定更新的内存块大小时,还考虑为完成数据通信而执行的内存动作的数量。此外,其他因素,例如带宽使用或比特率,用以确定一次潜在通信的数据量、响应设备能力和请求设备100能力,即响应设备和请求设备100中的每一个的物理配置和能力。通常,请求设备100和响应设备的能力相似或相等。In another embodiment, the updated memory block size is based on one or more of the number of memory actions, bandwidth usage, responding device capabilities, and requesting device 100 capabilities. The updated memory block size is based on the number of memory actions or operations such as RDMA reads, RDMA writes, etc. The number of memory actions performed to complete data communication is also considered when determining the updated memory block size. Additionally, other factors, such as bandwidth usage or bit rate, are used to determine the amount of data for a potential communication, responding device capabilities and requesting device 100 capabilities, ie, the physical configuration and capabilities of each of the responding device and requesting device 100. Typically, the capabilities of the requesting device 100 and the responding device are similar or equal.
在一个实施例中,控制器104还用于存储内存块的内存状态。基于接收到的通知或协商过程,控制器104用于将一个或多个内存块的内存状态存储在存储器102中。换句话说,控制器104保持对一个或多个内存块中的每一个的跟踪。与响应设备的存储器中的一个或多个块的内存状态有关的存储信息使请求设备100能够进行未来操作。例如,如果内存块被确定为准备好由控制器104访问,则请求设备100可以使用响应设备的内存块的所存储内存状态来请求对内存块的访问。In one embodiment, the controller 104 is also configured to store the memory status of the memory block. Based on the received notification or the negotiation process, the controller 104 is configured to store the memory state of one or more memory blocks in the memory 102 . In other words, the controller 104 keeps track of each of one or more memory blocks. Storing information regarding the memory status of one or more blocks in the responding device's memory enables the requesting device 100 to perform future operations. For example, if a memory block is determined to be ready for access by the controller 104, the requesting device 100 may request access to the memory block using the stored memory state of the memory block of the responding device.
在一个实施例中,控制器104还用于将多个内存块分组为内存块组。基于该实现方式,控制器104可以将多个内存块分组为内存块组。“内存块组”是指内存块的集合。内存块的分组是为了通过将用于类似操作或功能的内存块分组并对它们进行集体处理来使数据通信更高效。此外,控制器104用于基于多个内存块的内存状态确定内存块组的内存组状态。基于从通知和/或协商过程接收的信息,控制器集体确定多个内存块的内存组状态。优选地,一种类型的内存块由控制器104分组在一起。例如,将大小小于期望阈值的内存块分组在一起,将大小大于期望阈值的内存块分组在一起,以确定内存块组状态。此外,控制器104用于将内存组状态存储在存储器102中。内存块组状态可用于确定控制器104对内存块或内存块组的可访问性。In one embodiment, the controller 104 is also configured to group multiple memory blocks into memory block groups. Based on this implementation, the controller 104 may group multiple memory blocks into memory block groups. A "memory block group" refers to a collection of memory blocks. The grouping of memory blocks is intended to make data communication more efficient by grouping memory blocks used for similar operations or functions and processing them collectively. In addition, the controller 104 is configured to determine the memory group status of the memory block group based on the memory status of the plurality of memory blocks. Based on the information received from the notification and/or negotiation process, the controller collectively determines the memory group status of multiple memory blocks. Preferably, memory blocks of one type are grouped together by the controller 104. For example, memory blocks that are smaller than a desired threshold are grouped together, and memory blocks that are larger than a desired threshold are grouped together to determine the memory block group status. Additionally, the controller 104 is configured to store memory bank status in the memory 102 . The memory block status may be used to determine the controller's 104 accessibility to a memory block or memory block group.
在另一个实施例中,内存组状态包括计数器,控制器104用于:如果所述接收到的内存状态指示内存块组的多个内存块中包括的内存块已经改变其内存状态,调整计数器。“计数器”是指保持对多个内存块的内存状态的跟踪的寄存器。通常,计数器根据每个内存块的内存状态递增或递减一个值。例如,如果相关联内存块的内存状态为就绪的或可访问的,则计数器将递增其值。在另一个示例中,如果相关联内存块未就绪或不可访问,则计数器将递减。值得注意的是,计数器确定内存块组中可用和不可用的内存块的数量。In another embodiment, the memory group status includes a counter, and the controller 104 is configured to adjust the counter if the received memory status indicates that a memory block included in a plurality of memory blocks of the memory block group has changed its memory status. "Counter" refers to a register that keeps track of the memory status of multiple memory blocks. Typically, the counter is incremented or decremented by a value based on the memory state of each memory block. For example, if the memory status of the associated memory block is ready or accessible, the counter will increment its value. In another example, if the associated memory block is not ready or inaccessible, the counter will be decremented. It is worth noting that the counter determines the number of available and unavailable memory blocks in the memory block group.
在又一实施例中,内存组状态包括内存标志,控制器104用于:如果指示内存状态的通知指示内存块组的内存块当前不在响应设备的存储器中,设置内存标志。“内存标志”是指具有作为函数或进程信号的值的标志。通常,内存标志是包含布尔值(例如真(true)或假(false))的二进制标志。但是,并非所有的内存标志都是二进制的,并且可能存储一系列值。值得注意的是,内存标志的值用于确定内存块组的内存状态。内存标志指示内存块组的任何内存块当前是否在响应设备的存储器中,即内存块的内存块是否可供访问或就绪。因此,计数器用于基于单独和集体与内存块相关联的内存标志的值确定内存块组的内存状态。In yet another embodiment, the memory group status includes a memory flag, and the controller 104 is configured to set the memory flag if the notification indicating the memory status indicates that the memory blocks of the memory block group are not currently in the memory of the responding device. A "memory flag" is a flag that has a value that is a function or process signal. Typically, a memory flag is a binary flag containing a Boolean value such as true or false. However, not all memory flags are binary and may store a range of values. It is worth noting that the value of the memory flag is used to determine the memory status of the memory block group. The memory flag indicates whether any memory block of the memory block group is currently in the memory of the responding device, that is, whether the memory block of the memory block is accessible or ready. Therefore, counters are used to determine the memory status of a group of memory blocks based on the values of the memory flags associated with the memory blocks individually and collectively.
在一个实施例中,关于内存状态的通知指示一个或多个内存块的变化。响应设备可以与一个或多个方或计算设备一起操作,或者与请求设备100并发地执行一个或多个操作。因此,内存块可以例如在优先级的情况下被其他操作或其他设备使用,或者先前不可用的数据块可以变得可用。在这种情况下,响应设备用于传输包括指示一个或多个内存块的内存状态变化的内存状态的通知。例如,如果先前可访问的内存块已用完,则响应设备通过通知传输更新的不可用内存状态。在另一个示例中,如果先前不可用的内存块现在可用于实现,则响应设备通过通知将更新的可用状态传输到请求设备100。通常,一个或多个内存块中的任何一个的状态的变化通过响应设备的通知指示。例如,内存块可以从交换出状态改变为交换入状态,反之亦然。In one embodiment, notifications about memory status indicate changes to one or more memory blocks. The responding device may operate with one or more parties or computing devices or perform one or more operations concurrently with the requesting device 100 . Thus, a memory block may be used by other operations or other devices, for example under priority, or a previously unavailable data block may become available. In this case, the responding device is configured to transmit a notification including a memory state indicating a change in the memory state of one or more memory blocks. For example, if a previously accessible memory block has been exhausted, the responding device transmits an updated unavailable memory status via a notification. In another example, if a previously unavailable memory block is now available for implementation, the responding device transmits the updated availability status to the requesting device 100 via a notification. Typically, changes in the state of any one of one or more memory blocks are indicated by notifications from the responding device. For example, a memory block can change from the swapped-out state to the swapped-in state, or vice versa.
在一个实施例中,关于内存状态的通知指示一个或多个内存块的当前内存状态。在操作可以被延迟或在稍后时间完成的情况下,请求设备100可以要求内存块的当前状态。在这种情况下,控制器104可以向响应设备请求获取与一个或多个内存块有关的当前状态。因此,响应设备用于传输包括一个或多个块的当前内存状态的通知。有益的是,当内存块不可用时,当前状态可以防止操作期间可能发生的故障。In one embodiment, notifications about memory status indicate the current memory status of one or more memory blocks. In situations where the operation may be delayed or completed at a later time, the requesting device 100 may request the current state of the memory block. In this case, the controller 104 may request the responding device to obtain the current status related to one or more memory blocks. Therefore, the responding device is used to transmit notifications that include the current memory state of one or more blocks. Beneficially, the current state prevents failures that may occur during operation when a memory block is unavailable.
在另一个实施例中,控制器104还用于发送包括预取提示请求的消息,该预取提示请求向响应设备指示待访问的内存块。“消息”是指另一种消息,例如,用以启用例如请求设备100和响应设备的两个计算设备之间的数据通信的通知。“预取提示请求”是指在实际数据通信之前传输以收集关于内存区域和/或内存块状态的知识的请求类型。预取提示请求向响应设备指示待访问的内存块。通常,如果通知中指示的待访问的内存区域或内存块尚未就绪,则传输指示待由请求设备100访问的内存块的预取提示请求。换句话说,如果确定待访问的内存块在响应设备的存储器中尚未就绪(或交换出),则传输包括向响应设备指示待访问(或交换入)的内存块的预取提示请求的消息。从通知接收的信息用于确定预取提示请求。预取提示请求至少包括待访问的内存块和/或内存区域的大小、位置、结构或地址。有益的是,与单独的请求操作相比,预取提示请求节省了由于等待响应而损失的时间。如果所请求的内存区域或内存块可用,则控制器104避免传输请求或消息。如果所请求的内存区域或内存块不可用,则请求设备100可以选择其他内存区域,其中其他内存区域和内存块可用或准备好供访问。In another embodiment, the controller 104 is further configured to send a message including a prefetch hint request indicating the memory block to be accessed to the responding device. "Message" refers to another type of message, such as a notification to enable data communication between two computing devices, such as the requesting device 100 and the responding device. A "prefetch hint request" refers to the type of request transmitted before actual data communication to gather knowledge about the state of a memory region and/or memory block. A prefetch hint request indicates to the responding device the memory block to be accessed. Typically, if the memory region or memory block to be accessed indicated in the notification is not ready yet, a prefetch hint request indicating the memory block to be accessed by the requesting device 100 is transmitted. In other words, if it is determined that the memory block to be accessed is not yet ready (or swapped out) in the memory of the responding device, a message including a prefetch hint request indicating the memory block to be accessed (or swapped in) is transmitted to the responding device. The information received from the notification is used to determine the prefetch hint request. The prefetch hint request includes at least the size, location, structure, or address of the memory block and/or memory region to be accessed. Beneficially, prefetch hint requests save time lost waiting for a response compared to individual request operations. If the requested memory area or memory block is available, the controller 104 avoids transmitting the request or message. If the requested memory region or memory block is not available, the requesting device 100 may select another memory region where other memory regions and memory blocks are available or ready for access.
在一个实施例中,关于内存状态的通知指示响应设备不兼容。通常,在无法实现更多内存块的情况下,响应设备应被视为不兼容。通常,该通知是内存状态错误通知、内存状态不可用通知或内存状态重置通知中的至少一种。术语“不兼容”是指当响应设备无法令人满意地适应请求设备100的请求时响应设备的状态。在这种情况下,响应设备向请求设备100传输例如内存状态错误或内存状态不可用的通知。在此,控制器104还用于:相应地调整与一个或多个待访问的内存块有关的请求。控制器104在从响应设备接收到通知时,用于调整与一个或多个待访问的内存块有关的请求,以适应由通知指示的响应设备的情况。通常,如果与一个或多个待访问的内存块有关的内存状态指示任何错误条件或无法进一步传输内存状态,则在这种情况下,请求设备用于清除数据库(或跟踪器)。用于存储一个或多个内存块的内存状态的数据库被清除,并且在数据库清除之前累积的信息不用于与内存请求有关的进一步决策。可选地,在请求设备100或控制器104用于调整内存请求的这种情况下,控制器104用于不发送包括预取提示请求的消息。由于关于存储器102中的内存块的信息是无关紧要的,控制器104不传输包括预取提示请求的消息。In one embodiment, the notification regarding memory status indicates that the responding device is incompatible. In general, where more memory blocks cannot be implemented, the responding device should be considered incompatible. Typically, the notification is at least one of a memory status error notification, a memory status unavailable notification, or a memory status reset notification. The term "incompatible" refers to the state of a responding device when the responding device is unable to satisfactorily accommodate requests from the requesting device 100 . In this case, the responding device transmits a notification to the requesting device 100, such as a memory status error or memory status unavailability. Here, the controller 104 is also configured to adjust requests related to one or more memory blocks to be accessed accordingly. The controller 104, upon receiving a notification from a responding device, is configured to adjust requests related to one or more memory blocks to be accessed to suit the conditions of the responding device indicated by the notification. Typically, if the memory status related to one or more memory blocks to be accessed indicates any error condition or the memory status cannot be transferred further, then in this case the requesting device is used to clear the database (or tracker). The database used to store the memory state of one or more memory blocks is cleared, and information accumulated before the database was cleared is not used for further decisions related to memory requests. Optionally, in this case where the requesting device 100 or the controller 104 is configured to adjust the memory request, the controller 104 is configured not to send a message including the prefetch hint request. Since the information about the memory blocks in the memory 102 is irrelevant, the controller 104 does not transmit the message including the prefetch hint request.
在接收到通知时,控制器104用于基于内存状态判断待访问的内存块在响应设备的存储器中是否就绪。控制器104通过通信接口106接收通知,并分析从响应设备接收的通知。基于该通知,控制器104获得关于待访问的内存区域和/或内存块的内存状态的知识,并判断待访问的内存块是否就绪。基于内存区域或块的可用大小、内存区域或地址的位置等一个或多个参数,控制器104确定内存块的可访问性,并进一步执行必要的操作。如果请求中请求的内存区域可用,则控制器104可以向响应设备传输另一个消息、提示或请求。Upon receiving the notification, the controller 104 is configured to determine whether the memory block to be accessed is ready in the memory of the responding device based on the memory status. Controller 104 receives notifications through communication interface 106 and analyzes notifications received from responding devices. Based on the notification, the controller 104 obtains knowledge about the memory status of the memory area and/or memory block to be accessed, and determines whether the memory block to be accessed is ready. Based on one or more parameters such as the available size of the memory area or block, the location of the memory area or address, the controller 104 determines the accessibility of the memory block and further performs necessary operations. If the memory area requested in the request is available, the controller 104 may transmit another message, prompt, or request to the responding device.
在基于通知或内存状态确定内存块的可访问性后,控制器104用于通过通信接口106向响应设备传输请求。如果通过内存状态检测到内存区域或内存块准备好被访问,则由控制器104传输与内存块有关的请求。控制器104传输请求,包括但不限于所需的内存块大小、内存块的位置或地址、待由请求设备100访问的内存块的位置或地址。在分析或检查响应设备的存储器之后,将请求发送到响应设备以开始待传送的实际数据。After determining the accessibility of the memory block based on the notification or memory status, the controller 104 is configured to transmit the request to the responding device through the communication interface 106 . If it is detected through the memory status that a memory area or memory block is ready to be accessed, a request related to the memory block is transmitted by the controller 104 . The controller 104 transmits the request, including but not limited to the required memory block size, the location or address of the memory block, the location or address of the memory block to be accessed by the requesting device 100 . After analyzing or checking the memory of the responding device, a request is sent to the responding device to begin the actual data to be transferred.
现在参考图2,示出了根据本发明实施例的用于请求设备100执行RDMA操作的方法200的流程图。图2应结合图1阅读。例如,方法200可由请求设备100的控制器104执行,该控制器结合图1示出和解释。如图所示,用于请求设备,例如请求设备100的方法200包括步骤202-210。Referring now to FIG. 2 , shown is a flowchart of a method 200 for requesting the device 100 to perform an RDMA operation according to an embodiment of the present invention. Figure 2 should be read in conjunction with Figure 1. For example, method 200 may be performed by controller 104 of requesting device 100, which controller is shown and explained in conjunction with FIG. 1 . As shown, method 200 for requesting a device, such as requesting device 100, includes steps 202-210.
在步骤202,方法200包括与响应设备的内存区域进行关联,该内存区域包括一个或多个内存块。内存区域是存储器的待与响应设备关联的一部分。At step 202, method 200 includes associating with a memory area of the responsive device, the memory area including one or more memory blocks. A memory area is a portion of memory to be associated with a responsive device.
在步骤204,方法200包括通过通信接口106从响应设备接收关于内存状态的通知。控制器104在分析内存区域和内存块以确定内存状态后,从响应设备接收通知。At step 204 , the method 200 includes receiving a notification regarding the memory status from the responding device via the communication interface 106 . The controller 104 receives the notification from the responding device after analyzing the memory area and memory block to determine the memory status.
在步骤206,方法200包括基于内存状态判断待访问的内存块在响应设备的存储器中是否就绪。控制器104用于基于每个内存块的内存状态确定内存块是否准备好被访问。At step 206, the method 200 includes determining whether the memory block to be accessed is ready in the memory of the responding device based on the memory status. The controller 104 is configured to determine whether a memory block is ready to be accessed based on the memory status of each memory block.
在步骤208,方法200包括通过通信接口向响应设备传输请求,该请求与内存块有关。控制器104用于基于从响应设备接收的内存状态和通知来传输对访问内存块或内存区域的请求。At step 208, the method 200 includes transmitting a request to the responding device through the communication interface, the request related to the memory block. Controller 104 is configured to transmit requests to access memory blocks or memory regions based on memory status and notifications received from responding devices.
步骤202和208只是说明性的,并且还可以提供其他替代方案,其中添加一个或多个步骤,删除一个或多个步骤,或按照不同的顺序提供一个或多个步骤,而不脱离本文权利要求书的范围。Steps 202 and 208 are illustrative only, and other alternatives may be provided in which one or more steps are added, one or more steps are deleted, or one or more steps are provided in a different order without departing from the claims herein. The scope of the book.
本发明还提供了一种计算机程序产品,包括非瞬时性计算机可读存储介质,其上存储有计算机程序代码,该计算机程序代码可由控制器104执行以执行方法200。通常,方法200用于请求设备(例如结合图1示出和解释的请求设备100)与响应设备通信以执行RDMA操作。非瞬时性计算机可读存储模块的实现的示例包括但不限于电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、随机存取存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、硬盘驱动器(harddisk drive,HDD)、闪存、安全数字(secure digital,SD)卡、固态硬盘(solid-statedrive,SSD)、计算机可读存储介质和/或CPU高速缓存存储器。用于提供非瞬时性存储器的计算机可读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备,或上述任何合适的组合。The present invention also provides a computer program product, including a non-transitory computer-readable storage medium having computer program code stored thereon, and the computer program code can be executed by the controller 104 to perform the method 200. Generally, method 200 is used for a requesting device (such as requesting device 100 shown and explained in connection with Figure 1) to communicate with a responding device to perform an RDMA operation. Examples of implementations of non-transitory computer-readable memory modules include, but are not limited to, electrically erasable programmable read-only memory (EEPROM), random access memory (RAM), Read only memory (ROM), hard disk drive (HDD), flash memory, secure digital (SD) card, solid-state drive (SSD), computer-readable storage media and/or CPU cache memory. Computer-readable storage media used to provide non-transitory memory may include, but are not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing.
现在参考图3,示出了根据本发明实施例的响应设备300的框图。响应设备300应结合图1的请求设备100阅读。通常,响应设备300与请求设备100通信,以基于所传送的消息和通知执行RDMA操作。Referring now to Figure 3, shown is a block diagram of a response device 300 in accordance with an embodiment of the present invention. The responding device 300 should be read in conjunction with the requesting device 100 of FIG. 1 . Typically, the responding device 300 communicates with the requesting device 100 to perform RDMA operations based on the transmitted messages and notifications.
如图所示,响应设备300包括存储器302、控制器304和通信接口306。存储器302和通信接口306类似于图1的请求设备100的存储器102和通信接口106,因此,为了简洁起见,避免了对其的解释。控制器304包括执行RDMA操作所需的合适的逻辑、电路和/或接口。控制器304是用于处理驱动响应设备300的指令的计算元件。控制器304的示例包括但不限于网络接口控制器、微处理器、微控制器、复杂指令集计算(complex instruction setcomputing,CISC)微处理器、简化指令集(reduced instruction set,RISC)微处理器或超长指令集(very long instruction word,VLIW)微处理器。可选地,类似于控制器304的一个或多个控制器、处理设备和元件可以布置在各种架构中,用于响应和处理驱动响应设备300的指令。响应设备300通过页面/帧(由OS控制)来管理存储器,商定的内存块大小用于控制通过网络发送的通知量,使得不需要将大小存储在响应方或响应300的数据库中。As shown, response device 300 includes memory 302, controller 304, and communication interface 306. The memory 302 and communication interface 306 are similar to the memory 102 and communication interface 106 of the requesting device 100 of FIG. 1 and therefore explanation thereof is avoided for the sake of brevity. Controller 304 includes suitable logic, circuitry, and/or interfaces required to perform RDMA operations. Controller 304 is a computing element for processing instructions that drive responsive device 300 . Examples of the controller 304 include, but are not limited to, a network interface controller, a microprocessor, a microcontroller, a complex instruction set computing (CISC) microprocessor, a reduced instruction set (RISC) microprocessor Or a very long instruction word (VLIW) microprocessor. Alternatively, one or more controllers, processing devices and elements similar to controller 304 may be arranged in various architectures for responding to and processing instructions driving responsive device 300 . The responding device 300 manages memory by pages/frames (controlled by the OS) and the agreed memory block size is used to control the amount of notifications sent over the network so that the size does not need to be stored in the responder or responding 300's database.
控制器304用于将内存区域与请求设备100关联。控制器304基于来自请求设备100的请求将所请求的内存区域与请求设备100关联。“内存区域”是指区域,也称为资源分区、区或内存上下文,是分配的块的集合,可以基于实现方式高效地释放。本文中,内存区域是存储器302等较大存储器的一部分。通常,内存区域中的所有块都分配在一个连续的内存地址范围或多个内存地址范围中,类似于传统的堆栈帧分配。存储器302包括一个或多个内存区域,这些内存区域可以基于实现方式分配给不同的操作。该请求至少包括请求设备100所需或请求的内存区域的大小。控制器304用于关联内存区域。在一种实现方式中,内存区域将由控制器304与响应设备300的存储器302关联。响应设备300的存储器302类似于请求设备100的存储器102。通常,相关联存储器102或302中的任一个的内存区域包括一个或多个内存块。通常,响应设备300使用从与内存区域有关的请求获得的信息来关联内存区域,该信息例如来自大小、地址、类型等。应当理解,关联和内存注册可以以其他不同的方式实现,而不限制本发明的范围。The controller 304 is used to associate a memory area with the requesting device 100 . Controller 304 associates the requested memory region with requesting device 100 based on the request from requesting device 100 . A "memory region" refers to a region, also called a resource partition, extent, or memory context, which is a collection of allocated blocks that can be efficiently freed based on implementation. As used herein, a memory area is a portion of a larger memory such as memory 302. Typically, all blocks in a memory region are allocated in a contiguous memory address range or ranges of memory addresses, similar to traditional stack frame allocation. Memory 302 includes one or more memory areas that may be allocated to different operations based on implementation. The request includes at least the size of the memory area required or requested by the requesting device 100 . The controller 304 is used to associate memory areas. In one implementation, the memory area will be associated by the controller 304 with the memory 302 of the responsive device 300 . The memory 302 of the responding device 300 is similar to the memory 102 of the requesting device 100 . Typically, a memory region associated with either memory 102 or 302 includes one or more memory blocks. Typically, the responding device 300 associates the memory region using information obtained from requests related to the memory region, such as from size, address, type, etc. It should be understood that association and memory registration can be implemented in other different ways without limiting the scope of the invention.
控制器304用于确定与内存区域有关的内存状态。“内存状态”是指相关联内存区域的状态,其中包括一个或多个内存块的内存区域在请求时可能是,也可能不是可用的或就绪的。在关联内存区域后,控制器304分析存储器302以确定与内存区域有关的内存状态。例如,控制器304基于来自请求设备100的请求中指示的内存区域的大小检查内存区域。因此,基本上,一个或多个内存块中的每一个被筛选或分析以单独确定它们的状态。形成内存区域的一个或多个内存块中的每一个的集体状态被称为内存状态。通常,内存状态指示所请求的存储器或内存区域是否可用。Controller 304 is used to determine memory status related to the memory area. "Memory State" means the state of an associated memory region, which may or may not be available or ready at the time of request, including one or more memory blocks. After associating the memory area, the controller 304 analyzes the memory 302 to determine the memory status associated with the memory area. For example, the controller 304 checks the memory area based on the size of the memory area indicated in the request from the requesting device 100 . So, basically, each of one or more memory blocks is screened or analyzed to individually determine their status. The collective state of each of the one or more memory blocks that form a memory region is called the memory state. Typically, memory status indicates whether the requested memory or memory region is available.
控制器304用于通过通信接口306向请求设备100传输关于内存状态的通知。“通知”是指从响应设备300发送的消息类型。可选地,该通知可以在预先配置的时间段之后传输。此外,可选地,该通知可以在通知事件累积超过预定阈值时传输。“预定阈值”是指在传输通知之前待排队或累积的通知事件的最大数量。控制器304在确定与内存区域有关的内存状态后传输通知。内存状态指示所请求的内存区域和其中的内存块是否可供使用,随后控制器304将关于内存状态的通知传输到请求设备100。通常,通知涉及内存区域,然而,通知可以包括存储器302中的一个或多个内存区域中的相关联的一个或多个内存块中的每一个的内存状态。基于内存状态,通知指示关于内存区域的肯定确认从而指示内存区域用于操作的可用性,或者指示否定确认从而指示内存区域不可用性。The controller 304 is configured to transmit notifications regarding memory status to the requesting device 100 through the communication interface 306 . "Notification" refers to the type of message sent from the responding device 300. Optionally, the notification can be transmitted after a preconfigured period of time. Additionally, optionally, the notification may be transmitted when the accumulation of notification events exceeds a predetermined threshold. "Scheduled Threshold" refers to the maximum number of notification events that are queued or accumulated before a notification is transmitted. The controller 304 transmits the notification after determining the memory status associated with the memory area. The memory status indicates whether the requested memory area and the memory blocks therein are available for use, and the controller 304 then transmits a notification about the memory status to the requesting device 100 . Typically, the notification relates to a memory region, however, the notification may include the memory status of each of the associated one or more memory blocks in one or more memory regions in memory 302 . Based on the memory status, the notification indicates a positive acknowledgment regarding the memory region indicating the memory region's availability for operation, or a negative acknowledgment indicating the memory region's unavailability.
在另一个实施例中,控制器304还用于传输内存块大小的指示,内存块大小小于或等于内存区域。内存块是响应设备300的内存区域的一部分。控制器304将响应设备300的内存块大小的指示传输到请求设备100。根据实现方式,指示可以包括一个或多个内存块的大小。基于所传输的指示,请求设备100或控制器104可以通过基于相应内存块的内存状态延迟正在传输的一些数据包的传输来重新配置或延迟RDMA操作。例如,控制器304传输内存块大小为30KB的指示,请求设备100可以基于该指示重新配置或设置与一个或多个不同内存块有关的通知的粒度。值得注意的是,内存块大小小于内存区域的大小。通常,任何请求设备,例如请求设备100,都可能需要不同大小的内存块或内存区域,用于不同的实现方式和高效的数据通信。内存块或内存区域的不同大小为存储器102提供了粒度,从而为该存储器提供了灵活性。因此,为了避免在操作期间可能抑制高效数据通信的任何差异,响应设备300传输内存块的状态以帮助请求设备100确定相关联内存块的可访问性。此外,关于内存状态的通知与一个或多个内存块有关。通常,一个或多个内存块中的每个内存块包括指示内存块的状态或可用性的单独内存状态。总的来说,每个内存块有助于确定内存区域的内存状态。In another embodiment, the controller 304 is also configured to transmit an indication of the memory block size, where the memory block size is less than or equal to the memory area. A memory block is a portion of the memory area of the response device 300 . Controller 304 transmits an indication of the memory block size of responding device 300 to requesting device 100 . Depending on the implementation, the indication may include the size of one or more memory blocks. Based on the transmitted indication, the requesting device 100 or the controller 104 may reconfigure or delay the RDMA operation by delaying the transmission of some data packets being transmitted based on the memory status of the corresponding memory block. For example, the controller 304 transmits an indication that the memory block size is 30KB, based on which the requesting device 100 may reconfigure or set the granularity of notifications related to one or more different memory blocks. It is worth noting that the memory block size is smaller than the size of the memory region. In general, any requesting device, such as requesting device 100, may require memory blocks or memory regions of different sizes for different implementations and efficient data communication. Different sizes of memory blocks or memory regions provide granularity to memory 102 and thus flexibility to the memory. Therefore, to avoid any discrepancies that may inhibit efficient data communication during operation, the responding device 300 transmits the status of the memory block to assist the requesting device 100 in determining the accessibility of the associated memory block. Additionally, notifications about memory status relate to one or more memory blocks. Typically, each of one or more memory blocks includes a separate memory state that indicates the status or availability of the memory block. Overall, each memory block helps determine the memory state of the memory region.
在另一个实施例中,控制器304还用于在传输内存块大小的指示之前,从请求设备接收所指示的内存块大小。“所指示的大小”是指提供给响应设备300的关于内存状态通知的粒度的指示。控制器304接收所指示的内存块大小,其中所指示的大小基于请求设备100的存储器102中的内存块大小。In another embodiment, the controller 304 is further configured to receive the indicated memory block size from the requesting device prior to transmitting the indication of the memory block size. "Indicated size" refers to an indication of the granularity of the memory status notification provided to the responding device 300. The controller 304 receives the indicated memory block size, where the indicated size is based on the memory block size in the memory 102 of the requesting device 100 .
在又一实施例中,控制器304还用于针对内存块大小发起与请求设备100的协商过程,其中,内存块大小基于带宽标准、响应设备300能力和请求设备100能力中的一个或多个。控制器304用于发起与控制器104或请求设备100的协商过程。“协商过程”是指一种简单的协议,它提供了一种方法来相互决定和商定内存块大小的值。或者,请求设备100的控制器104还用于发起与响应设备300的控制器304的协商过程。协商过程的双向性允许请求设备100和响应设备300有效地传送内存块大小。通常,请求设备100的存储器102或响应设备300的存储器302的内存块是能够在多个并发操作之间分配的资源(例如,字节、字、数据包时隙)的集合。有益的是,协商过程允许响应设备300有效地报告存储器或内存块的状态。在操作中,针对内存块大小发起协商过程,其中,内存块大小基于带宽标准、响应设备300能力和请求设备100能力中的一个或多个。换句话说,针对大小粒度建立了协商。由于,两个设备即请求设备100和响应设备300之间的数据通信取决于一个或多个参数,例如带宽,即跨给定路径(例如通信接口106)传输的最大速率;响应设备300和请求设备100的能力,例如处理功率、内存的大小,设备的数据传输速率等等。因此,考虑到所有这些参数,发起协商过程,以有效地确定每一方(或计算设备)的有利结果。术语“有利结果”是指协商过程的结果。有利的结果可以是为其构建内存状态的内存块的所确定大小。In yet another embodiment, the controller 304 is further configured to initiate a negotiation process with the requesting device 100 for a memory block size based on one or more of bandwidth criteria, responding device 300 capabilities, and requesting device 100 capabilities. . The controller 304 is used to initiate a negotiation process with the controller 104 or the requesting device 100. "Negotiation process" refers to a simple protocol that provides a way to mutually decide and agree on a value for a memory block size. Alternatively, the controller 104 of the requesting device 100 is also used to initiate a negotiation process with the controller 304 of the responding device 300 . The bidirectional nature of the negotiation process allows requesting device 100 and responding device 300 to efficiently communicate memory block sizes. Typically, a memory block of memory 102 of requesting device 100 or memory 302 of responding device 300 is a collection of resources (eg, bytes, words, packet slots) that can be allocated among multiple concurrent operations. Advantageously, the negotiation process allows the responding device 300 to efficiently report the status of the memory or memory block. In operation, a negotiation process is initiated for a memory block size based on one or more of bandwidth criteria, responding device 300 capabilities, and requesting device 100 capabilities. In other words, negotiation is established for large and small granularities. Since data communication between two devices, the requesting device 100 and the responding device 300, depends on one or more parameters, such as bandwidth, i.e., the maximum rate of transmission across a given path (e.g., the communication interface 106); the responding device 300 and the requesting device 300 The capabilities of the device 100, such as processing power, size of memory, data transfer rate of the device, etc. Therefore, taking into account all these parameters, a negotiation process is initiated to effectively determine the favorable outcome for each party (or computing device). The term "favorable outcome" refers to the outcome of the consultation process. An advantageous result may be the determined size of the memory block for which the memory state is built.
在一个实施例中,控制器304还用于接收更新的内存块大小的指示。根据协商过程,响应设备300用于接收更新的内存块大小。值得注意的是,响应设备300用于基于请求设备100的要求改变内存块大小。响应设备300或控制器304可以基于要求选择任何大小或粒度的内存块。值得注意的是,控制器304在数据交换期间动态地改变粒度(或块大小),以允许由于被交换出去的页面数量和提高网络利用率而灵活地改变。此外,使响应设备300能够允许例如请求设备100的特定请求设备选择加入、选择退出通知,其中术语“特定请求设备”是指实际使用内存区域或内存块的请求设备100。在接收到更新的状态时,请求设备100或控制器104可以确定待访问的内存块是否就绪。In one embodiment, the controller 304 is also configured to receive an indication of an updated memory block size. According to the negotiation process, the responding device 300 is configured to receive the updated memory block size. Notably, the responding device 300 is used to change the memory block size based on the requesting device 100 . The response device 300 or the controller 304 may select any size or granularity of memory blocks based on requirements. Notably, the controller 304 dynamically changes the granularity (or block size) during data exchange to allow flexibility due to the number of pages being swapped out and to improve network utilization. Additionally, the responding device 300 is enabled to allow opt-in, opt-out notifications for specific requesting devices, such as the requesting device 100, where the term "specific requesting device" refers to the requesting device 100 that actually uses the memory area or block of memory. Upon receiving the updated status, the requesting device 100 or controller 104 may determine whether the memory block to be accessed is ready.
在另一个实施例中,更新的内存块大小基于内存动作数量、带宽使用、响应设备300能力和请求设备100能力中的一个或多个。更新的内存块大小基于RDMA读取、RDMA写入等内存动作或操作的数量。在确定更新的内存块大小时,还考虑为完成数据通信而执行的内存动作的数量。此外,其他因素,例如带宽使用或比特率,用以确定一次潜在通信的数据量、响应设备300能力和请求设备100能力,即响应设备300和请求设备100中的每一个的物理配置和能力。通常,请求设备100和响应设备300的能力相似或相等。In another embodiment, the updated memory block size is based on one or more of the number of memory actions, bandwidth usage, responding device 300 capabilities, and requesting device 100 capabilities. The updated memory block size is based on the number of memory actions or operations such as RDMA reads, RDMA writes, etc. The number of memory actions performed to complete data communication is also considered when determining the updated memory block size. Additionally, other factors, such as bandwidth usage or bit rate, are used to determine the amount of data for a potential communication, responding device 300 capabilities and requesting device 100 capabilities, ie, the physical configuration and capabilities of each of the responding device 300 and requesting device 100 . Typically, the capabilities of the requesting device 100 and the responding device 300 are similar or equal.
在一个实施例中,控制器304还用于确定一个或多个内存块中的一个的内存状态。通常,控制器304用于确定与内存区域有关的内存状态。然而,控制器304用于确定内存区域中的一个或多个内存块中的一个的内存状态。具体来说,控制器304确定相关联内存区域中数据通信所需的内存块的内存状态。控制器304可用于确定一个或多个内存块中的一个、两个或两个以上或全部的内存状态。在确定内存区域的内存状态时,可以考虑一个或多个内存块的集体内存状态。In one embodiment, the controller 304 is also configured to determine the memory status of one of the one or more memory blocks. Typically, controller 304 is used to determine memory status associated with a memory region. However, the controller 304 is used to determine the memory status of one of one or more memory blocks in the memory area. Specifically, the controller 304 determines the memory status of the memory blocks required for data communication in the associated memory area. Controller 304 may be used to determine the memory status of one, two, more than two, or all of one or more memory blocks. When determining the memory state of a memory region, the collective memory state of one or more memory blocks can be considered.
在另一个实施例中,控制器304还用于确定一个或多个内存块中的多个的内存状态。控制器304用于确定内存区域中的一个或多个内存块中的多个的内存状态。具体来说,包括一个或多个内存块的内存区域被分组为多个内存块。控制器304用于确定多个内存块中的每一个的状态。在基于请求设备100或响应设备300的要求确定内存状态时,可以单独或作为一组来选择多个内存块的所确定状态。通常,与请求设备100有关的多个内存块允许减小用以存储通知的数据库的大小。In another embodiment, the controller 304 is also configured to determine the memory status of a plurality of one or more memory blocks. The controller 304 is configured to determine the memory status of a plurality of one or more memory blocks in the memory area. Specifically, a memory area including one or more memory blocks is grouped into multiple memory blocks. Controller 304 is used to determine the status of each of the plurality of memory blocks. In determining memory status based on requests from requesting device 100 or responding device 300, the determined status of multiple memory blocks may be selected individually or as a group. Typically, multiple memory blocks associated with the requesting device 100 allow the size of the database used to store notifications to be reduced.
在一个实施例中,控制器304还用于基于内存块的内存状态的变化确定该内存块的内存状态。内存块的内存状态是基于内存块的内存状态的变化确定的。在此,该变化归因于映射和未映射的内存块以及内存块的内存状态的相应变化。响应设备300可以与一个或多个方或计算设备一起操作,以与请求设备100并发地执行一个或多个操作。因此,响应设备300中的一个或多个内存块可以例如在优先级的情况下被其他操作或其他设备使用或占用,或者先前不可用的数据块可以变得可用。在这种情况下,控制器304用于传输包括指示一个或多个内存块的内存状态变化的内存状态的通知。例如,如果先前可访问的内存块已用完,则控制器304通过通知传输更新的不可用内存状态。在另一个示例中,如果先前不可用的内存块现在可供访问,则控制器304通过通知将更新的可用内存状态传输到请求设备100。通常,一个或多个内存块中的任何一个的状态的变化通过响应设备300的通知指示。通常,响应设备300用于向请求设备100通知选定粒度。在一个示例中,当内存区域的未映射页面或内存块的数量从零增加到一个或多个时,向请求设备100发送通知,指示该块可能未映射。在另一个示例中,当块的未映射页面的数量从一个或多个减少到零时,向请求设备发送该块可能被映射的通知。In one embodiment, the controller 304 is further configured to determine the memory status of the memory block based on changes in the memory status of the memory block. The memory state of a memory block is determined based on changes in the memory state of the memory block. Here, the change is attributed to mapped and unmapped memory blocks and corresponding changes in the memory state of the memory blocks. Responding device 300 may operate with one or more parties or computing devices to perform one or more operations concurrently with requesting device 100 . Accordingly, one or more memory blocks in the response device 300 may be used or occupied by other operations or other devices, for example, under priority, or data blocks that were previously unavailable may become available. In this case, the controller 304 is configured to transmit a notification including a memory status indicating a change in the memory status of one or more memory blocks. For example, if a previously accessible memory block has been exhausted, the controller 304 transmits an updated unavailable memory status via a notification. In another example, if a previously unavailable memory block is now accessible, the controller 304 transmits the updated available memory status to the requesting device 100 via a notification. Typically, changes in the state of any one of one or more memory blocks are indicated by notifications from the responding device 300 . Typically, the responding device 300 is used to notify the requesting device 100 of the selected granularity. In one example, when the number of unmapped pages or memory blocks of a memory region increases from zero to one or more, a notification is sent to the requesting device 100 indicating that the block may be unmapped. In another example, when the number of unmapped pages for a block decreases from one or more to zero, a notification is sent to the requesting device that the block may be mapped.
在一个实施例中,控制器304还用于基于确定内存块的内存位置来确定内存块的内存状态。控制器304在确定内存状态之前确定内存块的位置。“内存位置”是指内存块的虚拟地址(virtual address,VA)或物理地址(physical address,PA)等地址。内存块的位置可以由请求设备100在预取提示请求中提供。一旦内存块的位置由控制器304确定,控制器304将内存块与存储器302中的所确定内存位置关联。这样的关联使响应设备300或控制器304能够基于内存位置高效地确定内存状态。可选地,控制器304在基于内存块的内存位置关联内存状态后,分析所请求的内存块,并确定内存块的内存状态。具体来说,内存位置是否可用,或是交换入还是交换出。此外,这样的协议允许根据要求主动确定内存状态。In one embodiment, the controller 304 is further configured to determine the memory status of the memory block based on determining the memory location of the memory block. Controller 304 determines the location of the memory block before determining the memory status. "Memory location" refers to an address such as a virtual address (VA) or a physical address (PA) of a memory block. The location of the memory block may be provided by the requesting device 100 in a prefetch hint request. Once the location of the memory block is determined by controller 304 , controller 304 associates the memory block with the determined memory location in memory 302 . Such correlation enables the responding device 300 or controller 304 to efficiently determine memory status based on the memory location. Optionally, the controller 304 analyzes the requested memory block and determines the memory status of the memory block after associating the memory status based on the memory location of the memory block. Specifically, whether the memory location is available or swapped in or out. Furthermore, such a protocol allows active determination of memory status on request.
在一个实施例中,控制器304还用于确定一个或多个内存块在一时间段内的内存状态,在该时间段到期时,传输指示该一个或多个内存块的内存状态的通知。响应设备300或控制器304用于基于交换入或交换出内存块的阈值、时间段或每个消息报告的最大通知来确定一个或多个块的内存状态。通知可以根据要求或作为给定时间内的优选内存交换操作数量或两者兼而有之地安排在有规律的时间段内实现或传输。因此,当内存状态被更新或改变时,通知被安排在通知改变后的预设时间发送,预设时间例如为1毫秒(millisecond,ms)、10ms、100ms、1秒(second,s)、2s、10s等。此外,如果时间段到期,则控制器304用于传输指示一个或多个内存块的内存状态的通知。在一个示例中,如果已经安排了通知,则将内存状态变化追加到退出通知。In one embodiment, the controller 304 is further configured to determine the memory status of one or more memory blocks within a time period, and when the time period expires, transmit a notification indicating the memory status of the one or more memory blocks. . The response device 300 or controller 304 is used to determine the memory status of one or more blocks based on a threshold for swapping in or out of memory blocks, a time period, or a maximum notification reported per message. Notifications may be scheduled to be implemented or transmitted over a regular period of time based on demand or as a preferred number of memory swap operations in a given time period, or both. Therefore, when the memory status is updated or changed, the notification is scheduled to be sent at a preset time after the notification change. The preset time is, for example, 1 millisecond (millisecond, ms), 10ms, 100ms, 1 second (second, s), 2s , 10s, etc. Additionally, if the time period expires, the controller 304 is configured to transmit a notification indicating the memory status of the one or more memory blocks. In one example, if a notification is already scheduled, append the memory state change to the exit notification.
在一个实施例中,控制器304还用于确定存储器302中的一个或多个内存块的内存状态,并确定内存动作数量。此外,基于所确定的内存动作数量,控制器304用于确定内存动作数量是否超过阈值数量,其中术语“阈值数量”是指内存动作数量的预定值。控制器304还用于传输指示一个或多个内存块的内存状态的通知。在一个示例中,如果内存动作数量超过内存动作的阈值数量,则控制器304立即,即在时间段之前,传输通知。在另一个示例中,如果内存动作数量不超过阈值数量,则控制器304在传输通知之前等待时间段。In one embodiment, the controller 304 is also configured to determine the memory status of one or more memory blocks in the memory 302 and determine the number of memory actions. Additionally, based on the determined number of memory actions, the controller 304 is configured to determine whether the number of memory actions exceeds a threshold number, where the term "threshold number" refers to a predetermined value of the number of memory actions. The controller 304 is also configured to transmit notifications indicating the memory status of one or more memory blocks. In one example, if the number of memory actions exceeds a threshold number of memory actions, the controller 304 transmits the notification immediately, ie, before the time period. In another example, if the number of memory actions does not exceed a threshold number, controller 304 waits for a period of time before transmitting the notification.
在一个实施例中,控制器304还用于通过通信接口306从请求设备100接收预取提示请求,该预取提示请求指示一个或多个内存块。“预取提示请求”是指在实际数据通信之前传输以收集关于内存区域和/或内存块状态的知识的请求类型。预取提示请求指示待加载到响应设备300的存储器302中/映射到该存储器的内存块。通常,如果待在关联期间按请求访问的内存区域或内存块尚未就绪,则传输指示待由请求设备100访问的内存块的预取提示请求。换句话说,如果确定待访问的内存块在响应设备300的存储器302中尚未就绪(或交换出),并将所指示的一个或多个内存块加载到存储器302中,则向响应设备300传输包括指示待访问(或交换入)的内存块的预取提示请求的消息。从通知接收的信息用于确定预取提示请求。预取提示请求包括待访问的内存块和/或内存区域的大小、结构、位置或地址中的至少一个。有益的是,与单独的请求操作相比,此消息节省了由于等待响应而损失的时间。在一个示例中,如果所请求的内存区域或内存块可用或交换入,则控制器304可以传输关于内存状态的通知。In one embodiment, the controller 304 is further configured to receive a prefetch hint request from the requesting device 100 through the communication interface 306, the prefetch hint request indicating one or more memory blocks. A "prefetch hint request" refers to the type of request transmitted before actual data communication to gather knowledge about the state of a memory region and/or memory block. The prefetch hint request indicates a block of memory to be loaded into/mapped into the memory 302 of the responding device 300 . Typically, if the memory region or memory block to be accessed on request during association is not ready, a prefetch hint request is transmitted indicating the memory block to be accessed by the requesting device 100. In other words, if it is determined that the memory block to be accessed is not ready (or swapped out) in the memory 302 of the responding device 300 and the indicated memory block or blocks are loaded into the memory 302, then a transmission is made to the responding device 300 Contains a message indicating a prefetch hint request for a memory block to be accessed (or swapped in). The information received from the notification is used to determine the prefetch hint request. The prefetch hint request includes at least one of the size, structure, location, or address of the memory block and/or memory region to be accessed. Beneficially, this message saves time lost waiting for a response compared to a separate request operation. In one example, the controller 304 may transmit a notification regarding the memory status if the requested memory region or memory block is available or swapped in.
现在参考图4,示出了根据本发明实施例的用于响应设备300执行RDMA操作的方法400的流程图。图4应结合图3阅读。例如,方法400可由响应设备300的控制器304执行,该控制器结合图3示出和解释。如图所示,用于响应设备,例如响应设备300的方法400包括步骤402-406。Referring now to FIG. 4 , a flowchart of a method 400 for performing an RDMA operation in response to a device 300 is shown according to an embodiment of the present invention. Figure 4 should be read in conjunction with Figure 3. For example, method 400 may be performed by controller 304 of response device 300, which controller is shown and explained in connection with FIG. 3 . As shown, method 400 for a responding device, such as responding device 300, includes steps 402-406.
在步骤402,方法400包括将内存区域与请求设备100关联。控制器304将从请求设备100请求的内存区域与存储器302中的内存区域关联。At step 402 , method 400 includes associating a memory region with requesting device 100 . Controller 304 associates the memory area requested from requesting device 100 with a memory area in memory 302 .
在步骤404,方法400包括确定与内存区域有关的内存状态。控制器304用于以一种或多种方式确定与内存区域有关的内存状态,其中内存状态指示内存块是准备好被访问(或交换入)还是尚未准备好被访问(交换出)。At step 404, method 400 includes determining memory status associated with the memory region. Controller 304 is configured to determine memory status associated with a memory region in one or more ways, where the memory status indicates whether a block of memory is ready to be accessed (or swapped in) or not yet ready to be accessed (swapped out).
在步骤406,方法400包括通过通信接口306向请求设备100传输关于内存状态的通知。控制器304用于传输该通知,其中该通知至少包括内存区域或内存块的内存状态。At step 406 , the method 400 includes transmitting a notification regarding the memory status to the requesting device 100 via the communication interface 306 . The controller 304 is configured to transmit the notification, where the notification at least includes the memory status of the memory area or memory block.
步骤402至406只是说明性的,并且还可以提供其他替代方案,其中添加一个或多个步骤,删除一个或多个步骤,或按照不同的顺序提供一个或多个步骤,而不脱离本文权利要求书的范围。Steps 402 through 406 are illustrative only, and other alternatives may be provided in which one or more steps are added, one or more steps are deleted, or one or more steps are provided in a different order without departing from the claims herein. The scope of the book.
本发明还提供了一种计算机程序产品,包括非瞬时性计算机可读存储介质,其上存储有计算机程序代码,该计算机程序代码可由控制器304执行以执行方法400。通常,方法400用于响应设备(例如,结合图3示出和解释的响应设备300)与请求设备(例如,结合图3示出和解释的请求设备100)通信,以用于基于内存状态执行RDMA操作。非瞬时性计算机可读存储模块的实现的示例包括但不限于电可擦除可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、随机存取存储器(random accessmemory,RAM)、只读存储器(read only memory,ROM)、硬盘驱动器(hard disk drive,HDD)、闪存、安全数字(secure digital,SD)卡、固态硬盘(solid-state drive,SSD)、计算机可读存储介质和/或CPU高速缓存存储器。用于提供非瞬时性存储器的计算机可读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备,或上述任何合适的组合。The present invention also provides a computer program product, including a non-transitory computer-readable storage medium having computer program code stored thereon, and the computer program code can be executed by the controller 304 to perform the method 400. Generally, method 400 is used for a responding device (eg, responding device 300 shown and explained in connection with FIG. 3) to communicate with a requesting device (eg, requesting device 100 shown and explained in connection with FIG. 3) for performing execution based on a memory state. RDMA operations. Examples of implementations of non-transitory computer-readable memory modules include, but are not limited to, electrically erasable programmable read-only memory (EEPROM), random access memory (random access memory, RAM), read-only memory (read only memory, ROM), hard disk drive (HDD), flash memory, secure digital (SD) card, solid-state drive (SSD), computer-readable storage media and/or CPU cache memory. Computer-readable storage media used to provide non-transitory memory may include, but are not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing.
参考图5,示出了根据本发明的各种实施例的描绘执行RDMA操作的RDMA系统500。图5也应结合图1-4阅读,描绘请求设备100和响应设备300。如图所示,在步骤502,包括控制器104的请求设备100用于通过通信接口106(未示出)传输用以关联响应设备300的内存区域的请求510。在步骤504,响应设备300将内存区域与响应设备300的存储器302(未示出)和包括一个或多个内存块的内存区域关联。此外,响应设备300通过控制器304用于确定与内存区域有关的内存状态。在确定内存状态后,控制器304用于传输通知512作为对来自请求设备100的请求510的响应。此外,控制器104通过通信接口306(未示出)从响应设备300接收关于与内存区域有关的内存状态的通知512。此外,在步骤506,控制器104用于基于内存状态确定待访问的内存块在响应设备300的存储器302(未示出)中是否就绪,并通过通信接口106向响应设备300传输请求514,请求514与内存块有关。Referring to Figure 5, there is shown an RDMA system 500 depicting performing RDMA operations in accordance with various embodiments of the present invention. Figure 5, which should also be read in conjunction with Figures 1-4, depicts a requesting device 100 and a responding device 300. As shown, at step 502 , the requesting device 100 includes the controller 104 for transmitting a request 510 to associate a memory region of the responding device 300 through the communication interface 106 (not shown). At step 504, the responding device 300 associates the memory region with the memory 302 (not shown) of the responding device 300 and the memory region including one or more memory blocks. Additionally, the response device 300, through the controller 304, is used to determine memory status associated with the memory region. After determining the memory status, the controller 304 is configured to transmit a notification 512 in response to the request 510 from the requesting device 100 . Additionally, the controller 104 receives notifications 512 from the responding device 300 regarding memory status related to the memory region via the communication interface 306 (not shown). In addition, at step 506, the controller 104 is configured to determine whether the memory block to be accessed is ready in the memory 302 (not shown) of the responding device 300 based on the memory status, and transmit a request 514 to the responding device 300 through the communication interface 106, requesting 514 is related to memory blocks.
参考图6和7示出根据本发明的各种实施例的描绘RDMA系统600、700的实施例的示例性场景的示意性流程图。图6-7的RDMA系统600、700也应结合图1-4阅读,描绘请求设备100和响应设备300。如图6所示,RDMA系统600包括请求设备,例如请求设备100,其结合图1-2示出和解释。RDMA系统600还包括响应设备,例如响应设备300,其结合图3-4示出和解释。类似地,如图7所示,RDMA系统700包括例如请求设备100的单个请求设备,以及例如请求设备300的单个响应设备。A schematic flowchart depicting an exemplary scenario of an embodiment of an RDMA system 600, 700 is shown with reference to Figures 6 and 7, in accordance with various embodiments of the present invention. The RDMA systems 600, 700 of Figures 6-7 should also be read in conjunction with Figures 1-4, depicting the requesting device 100 and the responding device 300. As shown in Figure 6, RDMA system 600 includes a requesting device, such as requesting device 100, which is shown and explained in conjunction with Figures 1-2. RDMA system 600 also includes a response device, such as response device 300, which is shown and explained in conjunction with Figures 3-4. Similarly, as shown in Figure 7, RDMA system 700 includes a single requesting device, such as requesting device 100, and a single responding device, such as requesting device 300.
在一个实施例中,如图6所示,在操作中,包括请求设备100的RDMA系统600与响应设备300通信,其中内存区域或内存块被映射或可用。在步骤602,响应设备300检查内存区域的内存状态,并传输与内存区域有关的通知610。通常,响应设备300检测内存区域是部分映射、完全映射还是未映射,并相应地向请求设备100传输通知610。在操作中,响应设备300传输关于与内存区域有关的页帧号(PFN)的事件的通知610。请求设备100在接收到通知610时,将内存区域标记为“潜在映射”。在分析通知达一段时间后,请求设备100可以执行一个或多个动作。如图所示,在步骤604,请求设备100发出对内存区域的RDMA读取请求612。在内存区域已经被映射时,请求设备100容易检测到内存区域被“潜在映射”,因此立即传输请求,而不需要传输预取提示请求且不需要在传输请求之前等待预取时间段。在最后步骤606,响应设备300向请求设备100传输RDMA读取响应614。In one embodiment, as shown in Figure 6, in operation, an RDMA system 600 including a requesting device 100 communicates with a responding device 300 in which memory regions or memory blocks are mapped or available. At step 602, the responding device 300 checks the memory status of the memory area and transmits a notification 610 related to the memory area. Typically, the responding device 300 detects whether the memory region is partially mapped, fully mapped, or unmapped, and transmits a notification 610 to the requesting device 100 accordingly. In operation, the response device 300 transmits a notification 610 of an event regarding a page frame number (PFN) associated with a memory region. The requesting device 100, upon receiving the notification 610, marks the memory region as "potentially mapped". After analyzing the notification for a period of time, the requesting device 100 may perform one or more actions. As shown, at step 604, the requesting device 100 issues an RDMA read request 612 for the memory area. When a memory region is already mapped, the requesting device 100 readily detects that the memory region is "potentially mapped" and therefore transmits the request immediately without transmitting a prefetch hint request and without waiting for a prefetch period before transmitting the request. At final step 606, the responding device 300 transmits an RDMA read response 614 to the requesting device 100.
在一个实施例中,如图7所示,在操作中,包括请求设备100的RDMA系统700与响应设备300通信,其中内存区域或内存块未映射或不可用。在步骤702,响应设备300检查内存区域的内存状态,并在内存区域未映射时传输与内存区域有关的通知712。通常,响应设备300检测内存区域并将内存区域标记为潜在未映射,并且相应地向请求设备100传输通知712。在操作中,响应设备300传输关于与内存区域有关的页帧号(PFN)的事件的通知712。在步骤704,请求设备100在接收到通知712时,将内存区域标记为“潜在未映射”。在分析通知712达一段时间后,请求设备100可以执行一个或多个动作。在步骤704,请求设备100检测到内存区域为“潜在未映射”,因此传输预取提示请求714,并等待预取时间段,直到内存区域被完全映射。在步骤706,响应设备对不可用的内存块执行交换操作,以完全映射内存区域。在等待预取时间段后,在步骤708,请求设备100发出对内存区域的RDMA读取请求716(例如请求612)。由于内存区域现在被完全映射,因此在最后步骤710,响应设备300将RDMA读取响应718传输到请求设备100。In one embodiment, as shown in Figure 7, in operation, the RDMA system 700 including the requesting device 100 communicates with the responding device 300 in which a memory region or memory block is unmapped or unavailable. At step 702, the responding device 300 checks the memory status of the memory area and transmits a notification 712 related to the memory area if the memory area is unmapped. Typically, the responding device 300 detects and marks the memory region as potentially unmapped, and transmits a notification 712 to the requesting device 100 accordingly. In operation, the response device 300 transmits a notification 712 of an event regarding a page frame number (PFN) associated with a memory region. At step 704, the requesting device 100, upon receiving the notification 712, marks the memory region as "potentially unmapped." After analyzing the notification 712 for a period of time, the requesting device 100 may perform one or more actions. At step 704, the requesting device 100 detects that the memory region is "potentially unmapped" and therefore transmits a prefetch hint request 714 and waits for a prefetch period until the memory region is fully mapped. At step 706, the responding device performs a swap operation on the unavailable memory block to completely map the memory area. After waiting for the prefetch period, at step 708, the requesting device 100 issues an RDMA read request 716 (eg, request 612) for the memory region. Since the memory area is now fully mapped, in final step 710 the responding device 300 transmits an RDMA read response 718 to the requesting device 100.
根据大小分配内存,或根据大小改变请求操作。通常,响应设备300在接收数据包之前确定共享虚拟内存区域或共享虚拟地址的当前状态。如果,支持并启用SVA或SVM。则,传入的内存数据包作为DMA事务被传输到输入输出存储器管理单元(memory managementunit,IOMMU)或系统存储器管理单元(system memory management unit,SMMU),然后根据方法400进行转换。否则,如果不支持或不启用SVA或SVM,则响应设备300或NIC(网络接口控制器)检查MTT(内存转换表),并根据方法400执行转换,以确定待访问的内存地址和待设置的页面分辨率或粒度。术语“MTT或内存转换表”是指供任何虚拟内存系统用于存储虚拟地址与物理地址之间的映射的数据结构。具体来说,虚拟地址由例如响应设备300的计算设备执行的程序使用,而物理地址由硬件使用,或者更具体地说,由RAM子系统使用。MTT是用于内存地址转换的关键组件,内存地址转换是访问存储器302中的数据所必需的。在此,内存块使系统能够设置要跟踪的分辨率。通常,分辨率或粒度取决于可用内存(例如存储器302)、响应设备300上的内存块或内存区域的交换速率、该应用程序的服务水平协议(service level agreement,SLA)等等。Allocate memory based on size, or request an operation based on size change. Typically, the responding device 300 determines the current state of the shared virtual memory area or shared virtual address before receiving the data packet. If, SVA or SVM is supported and enabled. Then, the incoming memory data packet is transmitted to the input-output memory management unit (IOMMU) or system memory management unit (SMMU) as a DMA transaction, and then converted according to method 400. Otherwise, if SVA or SVM is not supported or enabled, the responding device 300 or NIC (Network Interface Controller) checks the MTT (Memory Translation Table) and performs translation according to method 400 to determine the memory address to be accessed and the memory address to be set. Page resolution or granularity. The term "MTT or memory translation table" refers to the data structure used by any virtual memory system to store mappings between virtual addresses and physical addresses. Specifically, virtual addresses are used by programs executed on a computing device such as response device 300, while physical addresses are used by hardware, or more specifically, by the RAM subsystem. MTT is a key component for memory address translation, which is necessary to access data in memory 302. Here, the memory block enables the system to set the resolution to be tracked. Typically, the resolution or granularity depends on available memory (eg, memory 302), the exchange rate of memory blocks or memory regions on the response device 300, the service level agreement (SLA) of the application, and so on.
在不脱离所附权利要求书界定的本发明的范围的情况下,可以对上述本发明的实施例进行修改。用于描述和主张本发明的“包括”、“包含”、“结合”、“具有”、“是”等表达应视为以非唯一的方式解释,即允许没有明确描述的项目、部分或要素也可出现。对单数的引用也应解释为与复数有关。本文使用的词语“示例性”表示“作为一个示例、实例或说明”。任何描述为“示例性的”实施例并不一定解释为优先于或优越于其他实施例和/或并不排除结合其他实施例的特征。本文使用的词语“可选地”表示“在一些实施例中提供且在其他实施例中没有提供”。应当理解,为了清楚起见而在单独实施例的上下文中描述的本发明的某些特征还可以通过组合提供在单个实施例中。相反地,为了简洁起见,在单个实施例的上下文中描述的本发明的各个特征也可以单独地或以任何合适的组合提供,或在本发明的任何其他描述的实施例中合适地提供。Modifications may be made to the embodiments of the invention described above without departing from the scope of the invention as defined in the appended claims. Expressions such as "comprises," "includes," "combines," "has," and "is" used to describe and claim the present invention are to be construed in a non-exclusive manner, allowing for items, portions or elements not expressly described can also appear. References to the singular shall also be construed as relating to the plural. As used herein, the word "exemplary" means "serving as an example, instance, or illustration." Any embodiment described as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments and/or does not exclude combination of features of other embodiments. As used herein, the word "optionally" means "provided in some embodiments and not provided in other embodiments." It is to be understood that certain features of the invention, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, for the sake of brevity, various features of the invention that are described in the context of a single embodiment may also be provided separately or in any suitable combination, or as may be suitably provided in any other described embodiment of the invention.
Claims (31)
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/EP2021/051454 WO2022156902A1 (en) | 2021-01-22 | 2021-01-22 | Devices and methods for remote direct memory access |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN116802620A true CN116802620A (en) | 2023-09-22 |
Family
ID=74205876
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202180091430.7A Pending CN116802620A (en) | 2021-01-22 | 2021-01-22 | Apparatus and method for remote direct memory access |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN116802620A (en) |
| WO (1) | WO2022156902A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117851286A (en) * | 2023-12-13 | 2024-04-09 | 天翼云科技有限公司 | Memory address translation table compression method in RDMA ROCE |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6832297B2 (en) * | 2001-08-09 | 2004-12-14 | International Business Machines Corporation | Method and apparatus for managing data in a distributed buffer system |
| US9549037B2 (en) * | 2012-08-07 | 2017-01-17 | Dell Products L.P. | System and method for maintaining solvency within a cache |
| US10540323B2 (en) * | 2017-05-30 | 2020-01-21 | Western Digital Technologies, Inc. | Managing I/O operations in a storage network |
-
2021
- 2021-01-22 CN CN202180091430.7A patent/CN116802620A/en active Pending
- 2021-01-22 WO PCT/EP2021/051454 patent/WO2022156902A1/en not_active Ceased
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117851286A (en) * | 2023-12-13 | 2024-04-09 | 天翼云科技有限公司 | Memory address translation table compression method in RDMA ROCE |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2022156902A1 (en) | 2022-07-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP2406723B1 (en) | Scalable interface for connecting multiple computer systems which performs parallel mpi header matching | |
| EP3929756B1 (en) | Method, system, and intelligent network interface card for migrating data | |
| WO2020236291A1 (en) | System and method for facilitating efficient load balancing in a network interface controller (nic) | |
| CN107992436A (en) | A kind of NVMe data read-write methods and NVMe equipment | |
| US12058036B2 (en) | Technologies for quality of service based throttling in fabric architectures | |
| CN110119304B (en) | Interrupt processing method, device and server | |
| US11301408B1 (en) | Asymmetric read / write architecture for enhanced throughput and reduced latency | |
| WO2020087927A1 (en) | Method and device for memory data migration | |
| EP4439312A1 (en) | Data storage method and system, storage access configuration method and related device | |
| US11966585B2 (en) | Storage device and storage system | |
| JP2017537404A (en) | Memory access method, switch, and multiprocessor system | |
| CN113794764A (en) | Request processing method and medium for server cluster and electronic device | |
| CN112052100A (en) | Virtual machine communication method and device based on shared memory | |
| CN118585381A (en) | Data recovery method, device, equipment, medium and computer program product | |
| CN115905042A (en) | A data processing method and related equipment | |
| Li et al. | From rdma to rdca: Toward high-speed last mile of data center networks using remote direct cache access | |
| CN116802620A (en) | Apparatus and method for remote direct memory access | |
| CN118760398A (en) | Storage device access method and device, and computer program product | |
| CN116157785A (en) | Reducing Transaction Drops in Remote Direct Memory Access Systems | |
| US12367162B2 (en) | Method, device, and computer program product for data access | |
| CN118869598A (en) | A congestion control method and related device | |
| CN120780357A (en) | Universal measurement and control system data flow control bus architecture method and system | |
| CN117472817A (en) | Data processing method, device, system and network card | |
| CN120631662A (en) | Data transmission method, device, storage medium and computer program product | |
| CN118377606A (en) | Page error processing method and device for memory access |
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 |