CN117687795B - 用于远程直接内存访问的硬件卸载方法、设备及介质 - Google Patents
用于远程直接内存访问的硬件卸载方法、设备及介质 Download PDFInfo
- Publication number
- CN117687795B CN117687795B CN202410103769.XA CN202410103769A CN117687795B CN 117687795 B CN117687795 B CN 117687795B CN 202410103769 A CN202410103769 A CN 202410103769A CN 117687795 B CN117687795 B CN 117687795B
- Authority
- CN
- China
- Prior art keywords
- memory access
- remote direct
- direct memory
- context
- storage space
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 claims description 25
- 230000008859 change Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 14
- 230000002093 peripheral effect Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 3
- 230000003993 interaction Effects 0.000 abstract description 27
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 8
- 230000006854 communication Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000002955 isolation Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及计算机技术领域并提供一种用于远程直接内存访问的硬件卸载方法、设备及介质。方法包括:通过与远程直接内存访问逻辑连接并且不同于远程直接内存访问逻辑的缓存的第一存储空间,存储完成队列上下文和内存区域上下文;通过远程直接内存访问驱动的第二存储空间,存储由逻辑和驱动共同访问的公共信息;通过第一存储空间存储队列对上下文中除了生产者标识和消费者标识以外的第一部分,以及,通过第二存储空间存储队列对上下文中除了生产者标识、消费者标识和第一部分以外的剩余部分,并且,远程直接内存访问驱动通过远程直接内存访问逻辑间接地访问存储在第一存储空间的第一部分。如此降低总线操作交互和提升安全性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于远程直接内存访问的硬件卸载方法、设备及介质。
背景技术
远程直接内存访问是从一台计算机的内存到另一台计算机的内存的直接访问,远程直接内存访问利用专用硬件将数据从物理线路直接拷贝到主机内存,或者,从主机内存直接拷贝到物理线路,这样在两台计算机之间进行数据传输且不需要经过两台计算机的操作***和***内核,节省了数据拷贝和内核切换的损耗。现有技术中,基于远程直接内存访问的输入输出业务面对如多个流频繁切换等场景,需要频繁的总线操作,造成流量波动和增加输入输出延时,降低了业务运行稳定性。
为此,本申请提供了一种用于远程直接内存访问的硬件卸载方法、设备及介质,用于应对现有技术中的技术难题。
发明内容
第一方面,本申请提供了一种用于远程直接内存访问的硬件卸载方法。所述硬件卸载方法包括:通过与远程直接内存访问逻辑连接并且不同于所述远程直接内存访问逻辑的缓存的第一存储空间,存储完成队列上下文和内存区域上下文;通过远程直接内存访问驱动的第二存储空间,存储由所述远程直接内存访问逻辑和所述远程直接内存访问驱动共同访问的公共信息,其中,所述内存区域上下文包括所述第二存储空间中的多个物理页的寻址关系,所述公共信息包括队列对上下文中的生产者标识和消费者标识;通过所述第一存储空间存储所述队列对上下文中除了所述生产者标识和所述消费者标识以外的第一部分,以及,通过所述第二存储空间存储所述队列对上下文中除了所述生产者标识、所述消费者标识和所述第一部分以外的剩余部分,并且,所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述第一部分。
通过本申请的第一方面,降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,提升***安全性,有助于保持流量稳定和降低输入输出延时。
在本申请的第一方面的一种可能的实现方式中,所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述完成队列上下文和所述内存区域上下文。
在本申请的第一方面的一种可能的实现方式中,所述远程直接内存访问驱动通过下发指令到所述远程直接内存访问逻辑,从而通过所述远程直接内存访问逻辑读写存储在所述第一存储空间的所述完成队列上下文、所述内存区域上下文和所述第一部分。
在本申请的第一方面的一种可能的实现方式中,所述第一存储空间包括多个区域,所述多个区域与所述完成队列上下文、所述内存区域上下文和所述第一部分一一对应。
在本申请的第一方面的一种可能的实现方式中,所述远程直接内存访问逻辑在所述第一存储空间中针对特定对象的寻址操作是基于所述多个区域各自的初始地址、所述特定对象在所述第一存储空间的全局索引以及所述特定对象的大小。
在本申请的第一方面的一种可能的实现方式中,所述远程直接内存访问驱动被禁止不通过所述远程直接内存访问逻辑而直接地访问存储在所述第一存储空间的所述完成队列上下文、所述内存区域上下文或者所述第一部分。
在本申请的第一方面的一种可能的实现方式中,所述第一部分是基于所述队列对上下文相关联的数据流的切换频率和时延性要求确定,其中,所述数据流的切换频率低于第一阈值,所述时延性要求包括所述队列对上下文相关联的总线时延低于第二阈值。
在本申请的第一方面的一种可能的实现方式中,所述第一部分是基于所述队列对上下文相关联的应用场景确定,其中,所述应用场景是会话场景或者游戏场景。
在本申请的第一方面的一种可能的实现方式中,所述第一部分是基于所述队列对上下文相关联的报文通道组成的变化频率确定,其中,所述报文通道组成的变化频率低于第三阈值。
在本申请的第一方面的一种可能的实现方式中,所述第一部分是基于所述队列对上下文的打分确定,所述打分是基于所述队列对上下文相关联的数据流的切换频率、时延性要求、应用场景以及报文通道组成的变化频率确定。
在本申请的第一方面的一种可能的实现方式中,所述内存区域上下文还包括所述多个物理页各自的起始地址、虚拟地址以及所述虚拟地址与所述多个物理页之间的映射关系。
在本申请的第一方面的一种可能的实现方式中,所述远程直接内存访问逻辑是数据处理单元,所述远程直接内存访问驱动是主机的远程直接内存访问业务应用,所述第一存储空间是集成于所述数据处理单元的内部或者相对于所述数据处理单元外置,所述第二存储空间是所述主机的内存。
在本申请的第一方面的一种可能的实现方式中,所述远程直接内存访问逻辑与所述远程直接内存访问驱动之间通过第一总线交互,所述第一总线是基于外设部件互联标准或者计算快速连接标准,所述第一存储空间是双倍速率存储器或者高带宽存储器。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种用于远程直接内存访问的硬件卸载方法的流程示意图;
图2为本申请实施例提供的一种基于图1所示的硬件卸载方法的远程直接内存访问***的示意图;
图3为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为本申请实施例提供的一种用于远程直接内存访问的硬件卸载方法的流程示意图。如图1所示,硬件卸载方法包括以下步骤。
步骤S110:通过与远程直接内存访问逻辑连接并且不同于所述远程直接内存访问逻辑的缓存的第一存储空间,存储完成队列上下文和内存区域上下文。
步骤S120:通过远程直接内存访问驱动的第二存储空间,存储由所述远程直接内存访问逻辑和所述远程直接内存访问驱动共同访问的公共信息,其中,所述内存区域上下文包括所述第二存储空间中的多个物理页的寻址关系,所述公共信息包括队列对上下文中的生产者标识和消费者标识。
步骤S130:通过所述第一存储空间存储所述队列对上下文中除了所述生产者标识和所述消费者标识以外的第一部分,以及,通过所述第二存储空间存储所述队列对上下文中除了所述生产者标识、所述消费者标识和所述第一部分以外的剩余部分,并且,所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述第一部分。
参阅图1,远程直接内存访问逻辑与远程直接内存访问驱动交互以便实现基于远程直接内存访问技术的数据处理。这里,远程直接内存访问指的是,从一台计算机的内存到另一台计算机的内存的直接访问,通过硬件如网络适配器将数据从物理线路直接拷贝到应用程序的内存,或从应用程序的内存直接拷贝到物理线路,在此过程中,不经过操作***、中央处理器、***内核,也无需在应用程序内存和操作***的数据缓冲区之间拷贝数据,可以大幅降低数据传输的延迟和节省算力资源。在两个支持远程直接内存访问通信协议的主机之间进行远程直接内存访问,绕过了主机内核和操作***。远程直接内存访问驱动可以包括部署在主机上的应用程序例如远程直接内存访问业务应用,用于基于远程直接内存访问技术进行数据传输,包括接收经过远程直接内存访问网络的来自远端主机的网络数据,以及经过远程直接内存访问网络向远端主机发送网络数据。远程直接内存访问逻辑用于提供报文转发处理等逻辑运算功能。远程直接内存访问逻辑可以是为了实现远程直接内存访问而进行优化或者专门设计的硬件,例如网络适配器、智能网卡、数据处理器等。可以被部署在主机的主板的插槽上,通过总线与主机上的软件交互。具体的,远程直接内存访问逻辑与远程直接内存访问驱动交互采用队列对(Queue Pair,QP)的数据格式。例如,发送队列和接收队列都采取队列对的数据结构,发送队列用于发送远程直接内存访问报文,接收队列用于接收远程直接内存访问报文。一个队列对可以包含多个工作队列元素(Work QueueElement,WQE)。工作队列元素是软件下发给硬件的任务,可以用于指示硬件去哪里读取多长的数据后发送到哪个目的地。队列对上下文(Queue Pair Context,QPC),有时也叫队列管理上下文,与队列对相关联并且用于存储队列对的相关属性,例如队列对上下文包含预先申请的物理内存空间以及存放顺序等。硬件通过读取队列对上下文可以确定相应的队列对的位置,队列对序号,队列对大小等,进而可以读取队列对中的某个工作队列元素来执行相应的任务。以一次基于远程直接内存访问技术的通信过程为例,发起方向队列对添加一个工作队列元素,也即下发请求到硬件以便硬件执行一个动作,从而接收数据或者发送数据。另外,完成队列上下文(Complete Queue Context,CQC)与完成队列(Complete Queue,CQ)相关联并且用于存储完成队列的相关属性。上面提到,队列对例如发送队列和接收队列,用于软件下发任务给硬件,如软件指示硬件去哪里获取数据后发送到哪个目的地。完成队列的作用与队列对是相对的。完成队列可以包含多个完成队列元素(Complete QueueElement,CQE)。完成队列元素用于硬件通知软件关于某个工作队列元素或者写入请求的完成情况,例如完成了特定队列对中的特定工作队列元素所指定的任务,或者执行了特定操作,或者反馈执行结果是执行成功或者执行失败。队列对和完成队列可以通过队列对序号(Queue Pair Number,QPN)和其它信息进行对齐。完成队列上下文用于存储完成队列的相关属性,例如完成队列上下文包含预先申请的物理内存空间以及存放顺序等。硬件通过读取完成队列上下文可以确定相应的完成队列上下文的位置,完成队列序号,完成队列大小等。另外,内存区域上下文(Memory Region Context,MRC)用于指示主机的内存的相关信息,例如主机的内存可以拆分成多个物理页,内存区域上下文可以包括如何管理这些物理页的信息。这里,所述内存区域上下文包括远程直接内存访问驱动的第二存储空间中的多个物理页的寻址关系。
继续参阅图1,在远程直接内存访问的应用中,远程直接内存访问逻辑与远程直接内存访问驱动之间的交互是基于队列对和完成队列。其中,队列对包含工作队列元素用于远程直接内存访问驱动向远程直接内存访问逻辑下发任务,完成队列包含完成队列元素用于远程直接内存访问逻辑通知远程直接内存访问驱动关于下发的任务的完成情况以及提供执行反馈。内存区域上下文包括远程直接内存访问驱动的第二存储空间中的多个物理页的寻址关系,因此可用于提供对远程直接内存访问驱动的第二存储空间进行寻址操作的参考。另外,远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线连接,例如,远程直接内存访问逻辑可以通过外设部件互联标准(Peripheral Component InterconnectExpress,PCIe)总线与远程直接内存访问驱动连接,而远程直接内存访问逻辑与远程直接内存访问驱动之间的交互是通过外设部件互联标准总线操作,例如通过外设部件互联标准总线传输上行流量或者下行流量。因为通过总线操作来进行交互会导致延时,还受到总线带宽和总线资源的限制,为了满足流量稳定和高速数据传输的需要,应尽量减少远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。为此,在步骤S110,通过与远程直接内存访问逻辑连接并且不同于所述远程直接内存访问逻辑的缓存的第一存储空间,存储完成队列上下文和内存区域上下文。这里,完成队列上下文和内存区域上下文被存储在第一存储空间,而第一存储空间与远程直接内存访问逻辑连接,如此,远程直接内存访问逻辑可以通过访问第一存储空间来获取完成队列上下文和内存区域上下文,以及可以通过第一存储空间来进行数据读写、数据更新等操作,这样有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。进一步的,第一存储空间与远程直接内存访问逻辑连接并且不同于所述远程直接内存访问逻辑的缓存,因此,关于完成队列上下文和内存区域上下文的存储操作和读写操作,不占用所述远程直接内存访问逻辑的缓存资源。面对大规模数据传输需求,例如数据中心和网络节点等面临的数据传输需求,可能需要基于远程直接内存访问技术来支持百万数量级、千万数量级甚至更高数量级的流表项的报文转发,而所述远程直接内存访问逻辑的缓存一般是片上缓存,空间有限难以支持缓存大量对象的信息,在多个流切换时需要移除较早的对象信息才能释放缓存空间给较新的对象信息。因此,通过第一存储空间来存储完成队列上下文和内存区域上下文,不仅可以降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,而且节省了远程直接内存访问逻辑的缓存也避免了频繁的对远程直接内存访问逻辑的缓存进行淘汰和释放。
继续参阅图1,在步骤S120,通过远程直接内存访问驱动的第二存储空间,存储由所述远程直接内存访问逻辑和所述远程直接内存访问驱动共同访问的公共信息。其中,所述内存区域上下文包括所述第二存储空间中的多个物理页的寻址关系,所述公共信息包括队列对上下文中的生产者标识和消费者标识。这里,生产者标识用于识别负责对某个队列执行添加动作的对象,消费者标识用于识别负责对某个队列执行删除动作的对象。因此,通过队列对上下文所包含的信息,例如队列对序号可以确定特定队列,例如发送队列或者接收队列,以及通过队列对上下文中的生产者标识和消费者标识可以确定负责对该特定队列执行添加动作的对象和负责对该特定队列执行删除动作的对象。另外,第二存储空间存储的公共信息是由所述远程直接内存访问逻辑和所述远程直接内存访问驱动共同访问。上面提到,第一存储空间存储完成队列上下文和内存区域上下文,其中,完成队列包含完成队列元素用于远程直接内存访问逻辑通知远程直接内存访问驱动关于下发的任务的完成情况以及提供执行反馈,内存区域上下文包括远程直接内存访问驱动的第二存储空间中的多个物理页的寻址关系,因此可用于提供对远程直接内存访问驱动的第二存储空间进行寻址操作的参考。如此,第一存储空间所存储的完成队列上下文和内存区域上下文,主要用于服务所述远程直接内存访问逻辑,因此主要由所述远程直接内存访问逻辑进行访问以及更新。而需要由所述远程直接内存访问逻辑和所述远程直接内存访问驱动共同访问的公共信息则被存储在远程直接内存访问驱动的第二存储空间,如此,利用第一存储空间和远程直接内存访问驱动的第二存储空间,将主要由所述远程直接内存访问逻辑进行访问以及更新的信息,与由所述远程直接内存访问逻辑和所述远程直接内存访问驱动共同访问的公共信息,进行了物理隔离和单独管理。如此,有助于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,并且,提升了***安全性。
继续参阅图1,在步骤S130,通过所述第一存储空间存储所述队列对上下文中除了所述生产者标识和所述消费者标识以外的第一部分,以及,通过所述第二存储空间存储所述队列对上下文中除了所述生产者标识、所述消费者标识和所述第一部分以外的剩余部分,并且,所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述第一部分。如上所述,队列对包含工作队列元素用于远程直接内存访问驱动向远程直接内存访问逻辑下发任务。队列对上下文与队列对相关联并且用于存储队列对的相关属性,例如队列对上下文包含预先申请的物理内存空间以及存放顺序等。硬件通过读取队列对上下文可以确定相应的队列对的位置,队列对序号,队列对大小等,进而可以读取队列对中的某个工作队列元素来执行相应的任务。其中,队列对和队列对上下文之间一般通过队列对序号来对齐,或者说,需要确定关联到同一个数据流。取决于上层业务的种类和需求,存在多个数据流或者说多个报文通道,每个数据流或者报文通道通过单独的流号进行区分,而这些多个数据流可能时而通过队列对来收发报文数据。为此,需要确定待发送或者接收到的报文数据是对应哪一个数据流也就是需要进行流表匹配,因此需要检索流表并寻找其中是否有匹配的流表项,如果没有匹配的流表项则需要进行报文包解析并可能生成新的流表项。而这些用于流表匹配的信息,是与队列对以及相应的队列对上下文有关联,当用于流表匹配的信息发生变更时,可能需要对队列对上下文进行相应改变,从而可以确保更新后的流表可用于流表匹配以及利用队列对来收发报文数据。因此,可能存在因为上层业务的变化而导致流号不断生成及分配的情况,例如因为多个流的切换而导致报文通道不断的生成及关闭,这样可能导致频繁的更新队列对上下文。因此,对于这些需要频繁更新的队列对上下文,适合存储在远程直接内存访问驱动的第二存储空间,这样便于更新。相对的,可能存在流号和报文通道保持不变或者发生变化的频率较低,只是时而发生报文数据的传输的情况,对于这些不需要频繁更新的队列对上下文,适合存储在第一存储空间,这样有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。如此,通过区分开所述队列对上下文中的第一部分和剩余部分,以及利用第一存储空间存储第一部分和第二存储空间存储剩余部分,可以更好的适应队列对上下文中的不同部分在更新频次上的特性,进而可以根据上层业务的不同情况来划分第一部分和剩余部分,从而可以将需要频繁更新的队列对上下文的部分存储在远程直接内存访问驱动的第二存储空间以及将相对的不需要频繁更新的队列对上下文的部分存储在第一存储空间,有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。进一步的,所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述第一部分。所述远程直接内存访问驱动可能受到恶意程序,例如木马、后门病毒等的侵入,这些恶意程序可能获取了足够的权限来直接访问远程直接内存访问驱动的第二存储空间,从而造成隐私泄露和安全隐患。利用所述远程直接内存访问驱动与所述远程直接内存访问逻辑之间的物理隔离,以及要求所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述第一部分,从而有效地应对了来自于远程直接内存访问驱动的恶意程序的侵入,有助于保护隐私数据和提升***安全性。
总之,图1所示的用于远程直接内存访问的硬件卸载方法,通过第一存储空间来存储完成队列上下文和内存区域上下文,不仅可以降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,而且节省了远程直接内存访问逻辑的缓存也避免了频繁的对远程直接内存访问逻辑的缓存进行淘汰和释放;利用第一存储空间和远程直接内存访问驱动的第二存储空间,将主要由所述远程直接内存访问逻辑进行访问以及更新的信息,与由所述远程直接内存访问逻辑和所述远程直接内存访问驱动共同访问的公共信息,进行了物理隔离和单独管理,有助于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,并且,提升了***安全性;通过区分开所述队列对上下文中的第一部分和剩余部分,以及利用第一存储空间存储第一部分和第二存储空间存储剩余部分,可以更好的适应队列对上下文中的不同部分在更新频次上的特性,进而可以根据上层业务的不同情况来划分第一部分和剩余部分,从而可以将需要频繁更新的队列对上下文的部分存储在远程直接内存访问驱动的第二存储空间以及将相对的不需要频繁更新的队列对上下文的部分存储在第一存储空间,有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互;利用所述远程直接内存访问驱动与所述远程直接内存访问逻辑之间的物理隔离,以及要求所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述第一部分,从而有效地应对了来自于远程直接内存访问驱动的恶意程序的侵入,有助于保护隐私数据和提升***安全性,也有助于保持流量稳定和降低输入输出延时。应当理解的是,在一些实施例中,所述队列对上下文中除了所述生产者标识和所述消费者标识以外的内容全部存储在第一存储空间,也即队列对上下文剩余部分可以为空。
图2为本申请实施例提供的一种基于图1所示的硬件卸载方法的远程直接内存访问***的示意图。如图2所示,远程直接内存访问***包括远程直接内存访问驱动210和远程直接内存访问逻辑240。其中,远程直接内存访问驱动210的第二存储空间212存储公共信息220。公共信息220包括队列对上下文中的生产者标识222和消费者标识224。远程直接内存访问逻辑240包括片上缓存242,还与第一存储空间230连接。第一存储空间230存储完成队列上下文232和内存区域上下文234,还存储队列对上下文第一部分236,这里,队列对上下文第一部分236指的是所述队列对上下文中除了所述生产者标识222和所述消费者标识224以外的第一部分。第二存储空间212还存储队列对上下文剩余部分238,这里,队列对上下文剩余部分238是指所述队列对上下文中除了所述生产者标识222、所述消费者标识224和队列对上下文第一部分236以外的剩余部分。应当理解的是,在一些实施例中,所述队列对上下文中除了所述生产者标识222和所述消费者标识224以外的内容全部存储在第一存储空间230,也即队列对上下文剩余部分238可以为空。
参阅图1和图2,图1所示的硬件卸载方法,降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,提升***安全性,有助于保持流量稳定和降低输入输出延时。
在一种可能的实施方式中,所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述完成队列上下文和所述内存区域上下文。如此,利用所述远程直接内存访问驱动与所述远程直接内存访问逻辑之间的物理隔离,从而有效地应对了来自于远程直接内存访问驱动的恶意程序的侵入,有助于保护隐私数据和提升***安全性。在一些实施例中,所述远程直接内存访问驱动通过下发指令到所述远程直接内存访问逻辑,从而通过所述远程直接内存访问逻辑读写存储在所述第一存储空间的所述完成队列上下文、所述内存区域上下文和所述第一部分。如此,利用所述远程直接内存访问驱动与所述远程直接内存访问逻辑之间的物理隔离,从而有效地应对了来自于远程直接内存访问驱动的恶意程序的侵入,有助于保护隐私数据和提升***安全性。
在一种可能的实施方式中,所述第一存储空间包括多个区域,所述多个区域与所述完成队列上下文、所述内存区域上下文和所述第一部分一一对应。如此,有利于通过第一存储空间便利地寻址所需要的信息。在一些实施例中,所述远程直接内存访问逻辑在所述第一存储空间中针对特定对象的寻址操作是基于所述多个区域各自的初始地址、所述特定对象在所述第一存储空间的全局索引以及所述特定对象的大小。如此,利用第一存储空间可以便利地执行寻址操作来快速查找到指定对象,并且,不需要额外的维护第二存储空间中的多个物理页之间的关联关系,简化了内部处理逻辑,有利于节约硬件资源和降低硬件实现难度,提升了硬件可靠性。
在一种可能的实施方式中,所述远程直接内存访问驱动被禁止不通过所述远程直接内存访问逻辑而直接地访问存储在所述第一存储空间的所述完成队列上下文、所述内存区域上下文或者所述第一部分。如此,利用所述远程直接内存访问驱动与所述远程直接内存访问逻辑之间的物理隔离,以及利用对所述远程直接内存访问驱动直接地访问存储在所述第一存储空间的所述完成队列上下文、所述内存区域上下文或者所述第一部分所作出的限制,从而有效地应对了来自于远程直接内存访问驱动的恶意程序的侵入,有助于保护隐私数据和提升***安全性。
在一种可能的实施方式中,所述第一部分是基于所述队列对上下文相关联的数据流的切换频率和时延性要求确定,其中,所述数据流的切换频率低于第一阈值,所述时延性要求包括所述队列对上下文相关联的总线时延低于第二阈值。如上所述,可以根据上层业务的不同情况来划分第一部分和剩余部分,从而可以将需要频繁更新的队列对上下文的部分(对应剩余部分)存储在远程直接内存访问驱动的第二存储空间以及将相对的不需要频繁更新的队列对上下文的部分(对应第一部分)存储在第一存储空间,有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。这里,如何划分第一部分和剩余部分,可以基于所述队列对上下文相关联的数据流的切换频率和时延性要求。具体地,当数据流的切换频率过高时,则意味着多个流的频繁切换,也就导致需要频繁的更新队列对上下文的相应部分,因此可以要求所述数据流的切换频率低于第一阈值。另外,当时延性要求提出了总线时延不高于如20纳秒这样的具体要求,为了降低总线时延,可以要求所述队列对上下文相关联的总线时延低于第二阈值。如此,可以基于数据流的切换频率和时延性要求来确定如何划分第一部分和剩余部分,从而有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。
在一种可能的实施方式中,所述第一部分是基于所述队列对上下文相关联的应用场景确定,其中,所述应用场景是会话场景或者游戏场景。如上所述,可以根据上层业务的不同情况来划分第一部分和剩余部分,从而可以将需要频繁更新的队列对上下文的部分(对应剩余部分)存储在远程直接内存访问驱动的第二存储空间以及将相对的不需要频繁更新的队列对上下文的部分(对应第一部分)存储在第一存储空间,有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。这里,如何划分第一部分和剩余部分,可以基于所述队列对上下文相关联的应用场景。会话场景或者游戏场景中,通常存在一定数量的数据流或者说报文通道,例如两个玩家之间的交互频道,或者两名参加者之间的会议对话等,这些数据流或者报文通道在会话或者游戏持续进行过程中是持续存在的,报文数据时而通过这些数据流或者报文通道进行传输,例如一个玩家向另一个玩家发送表情包、打字或者发送语音等。因此,与会话场景或者游戏场景中的数据流或者报文通道对应的流号和队列对上下文也是保持不变的,也就不需要频繁的更新对应的队列对上下文。如此,可以基于所述队列对上下文相关联的应用场景来确定如何划分第一部分和剩余部分,从而有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。
在一种可能的实施方式中,所述第一部分是基于所述队列对上下文相关联的报文通道组成的变化频率确定,其中,所述报文通道组成的变化频率低于第三阈值。如上所述,可以根据上层业务的不同情况来划分第一部分和剩余部分,从而可以将需要频繁更新的队列对上下文的部分(对应剩余部分)存储在远程直接内存访问驱动的第二存储空间以及将相对的不需要频繁更新的队列对上下文的部分(对应第一部分)存储在第一存储空间,有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。这里,如何划分第一部分和剩余部分,可以基于所述队列对上下文相关联的报文通道组成的变化频率。当所述报文通道组成的变化频率过高时,则意味着多个流的频繁切换,也就导致需要频繁的更新队列对上下文的相应部分,因此可以要求所述报文通道组成的变化频率低于第三阈值。如此,可以基于所述队列对上下文相关联的报文通道组成的变化频率来确定如何划分第一部分和剩余部分,从而有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。
在一种可能的实施方式中,所述第一部分是基于所述队列对上下文的打分确定,所述打分是基于所述队列对上下文相关联的数据流的切换频率、时延性要求、应用场景以及报文通道组成的变化频率确定。如上所述,可以根据上层业务的不同情况来划分第一部分和剩余部分,从而可以将需要频繁更新的队列对上下文的部分(对应剩余部分)存储在远程直接内存访问驱动的第二存储空间以及将相对的不需要频繁更新的队列对上下文的部分(对应第一部分)存储在第一存储空间,有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。这里,如何划分第一部分和剩余部分,可以基于所述队列对上下文的打分。该打分可以是综合性的策略或者基于一定的算法,从而可以兼顾所述队列对上下文相关联的数据流的切换频率、时延性要求、应用场景以及报文通道组成的变化频率,还可以考虑更多的因素。如此,可以基于所述队列对上下文的打分来确定如何划分第一部分和剩余部分,从而有利于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互。
在一种可能的实施方式中,所述内存区域上下文还包括所述多个物理页各自的起始地址、虚拟地址以及所述虚拟地址与所述多个物理页之间的映射关系。如此,有助于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,并且,提升了***安全性。
在一种可能的实施方式中,所述远程直接内存访问逻辑是数据处理单元,所述远程直接内存访问驱动是主机的远程直接内存访问业务应用,所述第一存储空间是集成于所述数据处理单元的内部或者相对于所述数据处理单元外置,所述第二存储空间是所述主机的内存。如此,有助于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,并且,提升了***安全性。
在一种可能的实施方式中,所述远程直接内存访问逻辑与所述远程直接内存访问驱动之间通过第一总线交互,所述第一总线是基于外设部件互联标准或者计算快速连接标准,所述第一存储空间是双倍速率存储器或者高带宽存储器。如此,有助于降低远程直接内存访问逻辑与远程直接内存访问驱动之间通过总线操作进行的交互,并且,提升了***安全性。
图3是本申请实施例提供的一种计算设备的结构示意图,该计算设备300包括:一个或者多个处理器310、通信接口320以及存储器330。所述处理器310、通信接口320以及存储器330通过总线340相互连接。可选地,该计算设备300还可以包括输入/输出接口350,输入/输出接口350连接有输入/输出设备,用于接收用户设置的参数等。该计算设备300能够用于实现上述的本申请实施例中设备实施例或者***实施例的部分或者全部功能;处理器310还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备300执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器310用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备300可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口320具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器310具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图3的计算设备300可以包括一个或者多个处理器310,并且多个处理器310可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器310可以构成处理器序列或者处理器阵列,或者多个处理器310之间可以分成主处理器和辅助处理器,或者多个处理器310之间可以具有不同的架构如采用异构计算架构。另外,图3所示的计算设备300,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备300可以包括比图3所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器310可以有多种具体实现形式,例如处理器310可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器310还可以是单核处理器或多核处理器。处理器310可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器310也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口320可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器330可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器330也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器330也可用于存储程序代码和数据,以便于处理器310调用存储器330中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备300可能包含相比于图3展示的更多或者更少的组件,或者有不同的组件配置方式。
总线340可以是快捷***部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线340可以分为地址总线、数据总线、控制总线等。总线340除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种***,该***包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该***可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例***中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种用于远程直接内存访问的硬件卸载方法,其特征在于,所述硬件卸载方法包括:
通过与远程直接内存访问逻辑连接并且不同于所述远程直接内存访问逻辑的缓存的第一存储空间,存储完成队列上下文和内存区域上下文;
通过远程直接内存访问驱动的第二存储空间,存储由所述远程直接内存访问逻辑和所述远程直接内存访问驱动共同访问的公共信息,其中,所述内存区域上下文包括所述第二存储空间中的多个物理页的寻址关系,所述公共信息包括队列对上下文中的生产者标识和消费者标识;
通过所述第一存储空间存储所述队列对上下文中除了所述生产者标识和所述消费者标识以外的第一部分,以及,通过所述第二存储空间存储所述队列对上下文中除了所述生产者标识、所述消费者标识和所述第一部分以外的剩余部分,并且,所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述第一部分,
所述第一部分是基于所述队列对上下文相关联的数据流的切换频率和时延性要求确定,其中,所述数据流的切换频率低于第一阈值,所述时延性要求包括所述队列对上下文相关联的总线时延低于第二阈值,
所述内存区域上下文还包括所述多个物理页各自的起始地址、虚拟地址以及所述虚拟地址与所述多个物理页之间的映射关系,
所述远程直接内存访问逻辑是数据处理单元,所述远程直接内存访问驱动是主机的远程直接内存访问业务应用,所述第一存储空间是集成于所述数据处理单元的内部或者相对于所述数据处理单元外置,所述第二存储空间是所述主机的内存。
2.根据权利要求1所述的硬件卸载方法,其特征在于,所述远程直接内存访问驱动通过所述远程直接内存访问逻辑间接地访问存储在所述第一存储空间的所述完成队列上下文和所述内存区域上下文。
3.根据权利要求2所述的硬件卸载方法,其特征在于,所述远程直接内存访问驱动通过下发指令到所述远程直接内存访问逻辑,从而通过所述远程直接内存访问逻辑读写存储在所述第一存储空间的所述完成队列上下文、所述内存区域上下文和所述第一部分。
4.根据权利要求1所述的硬件卸载方法,其特征在于,所述第一存储空间包括多个区域,所述多个区域与所述完成队列上下文、所述内存区域上下文和所述第一部分一一对应。
5.根据权利要求4所述的硬件卸载方法,其特征在于,所述远程直接内存访问逻辑在所述第一存储空间中针对指定对象的寻址操作是基于所述多个区域各自的初始地址、所述指定对象在所述第一存储空间的全局索引以及所述指定对象的大小。
6.根据权利要求1所述的硬件卸载方法,其特征在于,所述远程直接内存访问驱动被禁止不通过所述远程直接内存访问逻辑而直接地访问存储在所述第一存储空间的所述完成队列上下文、所述内存区域上下文或者所述第一部分。
7.根据权利要求1所述的硬件卸载方法,其特征在于,所述第一部分是基于所述队列对上下文相关联的应用场景确定,其中,所述应用场景是会话场景或者游戏场景。
8.根据权利要求1所述的硬件卸载方法,其特征在于,所述第一部分是基于所述队列对上下文相关联的报文通道组成的变化频率确定,其中,所述报文通道组成的变化频率低于第三阈值。
9.根据权利要求1所述的硬件卸载方法,其特征在于,所述第一部分是基于所述队列对上下文的打分确定,所述打分是基于所述队列对上下文相关联的数据流的切换频率、时延性要求、应用场景以及报文通道组成的变化频率确定。
10.根据权利要求1所述的硬件卸载方法,其特征在于,所述远程直接内存访问逻辑与所述远程直接内存访问驱动之间通过第一总线交互,所述第一总线是基于外设部件互联标准或者计算快速连接标准,所述第一存储空间是双倍速率存储器或者高带宽存储器。
11.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至10中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410103769.XA CN117687795B (zh) | 2024-01-25 | 2024-01-25 | 用于远程直接内存访问的硬件卸载方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410103769.XA CN117687795B (zh) | 2024-01-25 | 2024-01-25 | 用于远程直接内存访问的硬件卸载方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117687795A CN117687795A (zh) | 2024-03-12 |
CN117687795B true CN117687795B (zh) | 2024-05-10 |
Family
ID=90126732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410103769.XA Active CN117687795B (zh) | 2024-01-25 | 2024-01-25 | 用于远程直接内存访问的硬件卸载方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687795B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942097A (zh) * | 2014-04-10 | 2014-07-23 | 华为技术有限公司 | 一种数据处理方法、装置及具备相应装置的计算机 |
CN113900972A (zh) * | 2020-07-06 | 2022-01-07 | 华为技术有限公司 | 一种数据传输的方法、芯片和设备 |
CN116303173A (zh) * | 2023-05-19 | 2023-06-23 | 深圳云豹智能有限公司 | 减少rdma引擎片上缓存的方法、装置、***及芯片 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9965441B2 (en) * | 2015-12-10 | 2018-05-08 | Cisco Technology, Inc. | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics |
-
2024
- 2024-01-25 CN CN202410103769.XA patent/CN117687795B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942097A (zh) * | 2014-04-10 | 2014-07-23 | 华为技术有限公司 | 一种数据处理方法、装置及具备相应装置的计算机 |
CN113900972A (zh) * | 2020-07-06 | 2022-01-07 | 华为技术有限公司 | 一种数据传输的方法、芯片和设备 |
CN116303173A (zh) * | 2023-05-19 | 2023-06-23 | 深圳云豹智能有限公司 | 减少rdma引擎片上缓存的方法、装置、***及芯片 |
Non-Patent Citations (2)
Title |
---|
Design and Evaluation of an RDMA-aware Data Shuffling Operator for Parallel Database Systems;FEILONG LIU et al.;《ACM Transactions on Database Systems》;20191231;第44卷(第4期);第1-45页 * |
面向RDMA高性能网络的消息中间件低延迟优化研究;于江浩;万方数据库;20231002;第1-101页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117687795A (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3057272B1 (en) | Technologies for concurrency of cuckoo hashing flow lookup | |
US9361163B2 (en) | Managing containerized applications on a mobile device while bypassing operating system implemented inter process communication | |
US6421769B1 (en) | Efficient memory management for channel drivers in next generation I/O system | |
KR100372492B1 (ko) | 네트워크 프로세서를 사용하는 서버 클러스터 접속 | |
US9280297B1 (en) | Transactional memory that supports a put with low priority ring command | |
CN112929299B (zh) | 基于fpga加速卡的sdn云网络实现方法、装置及设备 | |
US10630587B2 (en) | Shared memory communication in software defined networking | |
US20080120442A1 (en) | Virtualization of i/o adapter resources | |
US20070041383A1 (en) | Third party node initiated remote direct memory access | |
WO2019129167A1 (zh) | 一种处理数据报文的方法和网卡 | |
US9864717B2 (en) | Input/output processing | |
KR20030087025A (ko) | Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘 | |
WO2019153702A1 (zh) | 一种中断处理方法、装置及服务器 | |
US20180181421A1 (en) | Transferring packets between virtual machines via a direct memory access device | |
CN116049085A (zh) | 一种数据处理***及方法 | |
CN117573602B (zh) | 用于远程直接内存访问报文发送的方法及计算机设备 | |
US20140025859A1 (en) | Input/output processing | |
US20040019882A1 (en) | Scalable data communication model | |
CN117687795B (zh) | 用于远程直接内存访问的硬件卸载方法、设备及介质 | |
KR100396974B1 (ko) | 내부에서 네트워크 스위칭을 사용하는 컴퓨터 시스템 및방법 | |
CN112600826B (zh) | 一种虚拟化安全网关*** | |
US8732264B2 (en) | HiperSockets SIGA light-sending without outbound queue | |
CN116366534B (zh) | 基于硬件卸载的组播流量复制的方法以及相关装置 | |
CN117519908B (zh) | 一种虚拟机热迁移方法、计算机设备及介质 | |
CN117692382B (zh) | 链路聚合方法、网卡、设备以及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |