CN118138558A - 基于直接内存访问的报文发包方法、计算机设备及介质 - Google Patents
基于直接内存访问的报文发包方法、计算机设备及介质 Download PDFInfo
- Publication number
- CN118138558A CN118138558A CN202410557936.8A CN202410557936A CN118138558A CN 118138558 A CN118138558 A CN 118138558A CN 202410557936 A CN202410557936 A CN 202410557936A CN 118138558 A CN118138558 A CN 118138558A
- Authority
- CN
- China
- Prior art keywords
- address
- packet
- descriptor
- sending
- kernel
- 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
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000003860 storage Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 14
- 238000013507 mapping Methods 0.000 claims description 9
- 230000035945 sensitivity Effects 0.000 claims description 9
- 238000013519 translation Methods 0.000 claims description 9
- 238000012856 packing Methods 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 12
- 238000012545 processing Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及计算机技术领域并提供一种基于直接内存访问的报文发包方法、计算机设备及介质。方法包括:逻辑侧,响应于接收到来自驱动侧的门铃通知,基于所述门铃通知,按照直接内存访问方式获取与所述门铃通知对应的发包描述符,然后,基于所述发包描述符的地址域段,按照直接内存访问方式获取与所述发包描述符对应的待发送数据;所述逻辑侧,利用所述待发送数据进行报文发包。如此,提升了报文发包方面的数据传输性能和降低了时延。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于直接内存访问的报文发包方法、计算机设备及介质。
背景技术
随着云计算、数据中心、高性能服务器等技术的发展,在数据存储规模越来越大同时也对数据传输延时等提出了更高的要求。现有技术中,通过网卡队列对外发送报文时,采用直接内存访问技术,将需要发送的报文数据内容搬运到负责报文发包的硬件里,例如智能网卡或者网络适配器,然后以整包方式发送出去。但是,随着数据存储规模的增加,内存空间中数据不连续分布带来的延时和损耗增加,跨区域的数据拷贝的损耗也增加,这些不利于提升报文发包方面的数据传输性能也不利于降低时延。
为此,本申请提供了一种基于直接内存访问的报文发包方法、计算机设备及介质,用于应对现有技术中的技术难题。
发明内容
第一方面,本申请提供了一种基于直接内存访问的报文发包方法。所述报文发包方法包括:逻辑侧,响应于接收到来自驱动侧的门铃通知,基于所述门铃通知,按照直接内存访问方式获取与所述门铃通知对应的发包描述符,然后,基于所述发包描述符的地址域段,按照直接内存访问方式获取与所述发包描述符对应的待发送数据;所述逻辑侧,利用所述待发送数据进行报文发包。其中,当所述发包描述符的地址域段指向所述驱动侧的内核态内存中的第一地址时,所述逻辑侧按照直接内存访问方式从所述第一地址获取所述待发送数据,当所述发包描述符的地址域段指向不在所述内核态内存中的第二地址时,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧的用户态内存中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据。
通过本申请的第一方面,可应用于如云计算、数据中心、高性能服务器等应用场景,利用直接内存访问技术降低了数据读取写入方面的延时,提高了整体数据传输性能,并且,针对报文发包方面例如从宿主机的驱动侧向逻辑侧的下行数据处理流程,通过节省在内核态与用户态之间的数据拷贝的损耗以及通过节省硬件发起直接内存访问操作的相关开销,可以适应更大的数据存储规模、多种不同类型的存储设备,提升了报文发包方面的数据传输性能和降低了时延。
在本申请的第一方面的一种可能的实现方式中,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于指向了所述第一地址的所述发包描述符的地址域段的标准位宽。
在本申请的第一方面的一种可能的实现方式中,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于64比特,指向了所述第一地址的所述发包描述符的地址域段的标准位宽大于或者等于64比特。
在本申请的第一方面的一种可能的实现方式中,指向了所述第二地址的所述发包描述符的地址域段的标准位宽是32比特或者48比特,指向了所述第一地址的所述发包描述符的地址域段的标准位宽是64比特。
在本申请的第一方面的一种可能的实现方式中,所述发包描述符包括第一标识域段,所述第一标识域段用于指示所述发包描述符的地址域段指向所述内核态内存中的所述第一地址或者指向不在所述内核态内存中的所述第二地址,所述逻辑侧基于所述第一标识域段选择性地从所述第一地址或者所述第三地址获取所述待发送数据。
在本申请的第一方面的一种可能的实现方式中,所述第一标识域段的位宽是1比特,所述逻辑侧基于所述门铃通知,按照直接内存访问方式从由所述逻辑侧和所述驱动侧协同管理的环形缓冲获取所述发包描述符,所述环形缓冲位于所述驱动侧的所述内核态内存中。
在本申请的第一方面的一种可能的实现方式中,第一队列和第二队列由所述逻辑侧和所述驱动侧协同管理,所述逻辑侧基于所述门铃通知,按照直接内存访问方式从所述第一队列或者所述第二队列获取所述发包描述符,当所述逻辑侧从所述第一队列获取所述发包描述符时,所述发包描述符的地址域段指向所述内核态内存中的所述第一地址,以及,当所述逻辑侧从所述第二队列获取所述发包描述符时,所述发包描述符的地址域段指向不在所述内核态内存中的所述第二地址。
在本申请的第一方面的一种可能的实现方式中,所述第一队列是由所述逻辑侧和所述驱动侧协同管理且位于所述驱动侧的所述内核态内存中的环形缓冲,所述第二队列是位于所述逻辑侧的发包寄存器。
在本申请的第一方面的一种可能的实现方式中,所述逻辑侧对所述环形缓冲的访问速度小于所述逻辑侧对所述发包寄存器的访问速度。
在本申请的第一方面的一种可能的实现方式中,所述第一队列用于第一业务的报文发包,所述第二队列用于第二业务的报文发包,所述第二业务的时延敏感性高于所述第一业务的时延敏感性。
在本申请的第一方面的一种可能的实现方式中,当所述发包描述符的地址域段指向所述内核态内存中的所述第一地址时,至少在所述逻辑侧接收到所述门铃通知之前,完成从所述用户态内存到所述内核态内存的数据拷贝,从而使得所述待发送数据存储在所述内核态内存中的所述第一地址。
在本申请的第一方面的一种可能的实现方式中,所述内核态内存中的所述第一地址是连续分布,所述用户态内存中的所述第三地址是不连续分布,所述第二地址是用于地址转换的中间地址。
在本申请的第一方面的一种可能的实现方式中,当所述发包描述符的地址域段指向不在所述内核态内存中的所述第二地址时,至少在所述逻辑侧接收到所述门铃通知之前,建立从所述用户态内存中的所述第三地址到所述第二地址的地址映射关系,从而使得所述第二地址可被转换成所述第三地址。
在本申请的第一方面的一种可能的实现方式中,从所述用户态内存中的所述第三地址到所述第二地址的地址映射关系是基于地址变换高速缓冲。
在本申请的第一方面的一种可能的实现方式中,所述驱动侧通过中央处理器写指令操作传递所述门铃通知给所述逻辑侧。
在本申请的第一方面的一种可能的实现方式中,所述中央处理器写指令操作的位宽是64比特,所述门铃通知占据的数据位宽不大于64比特。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于直接内存访问的报文发包方法的流程示意图;
图2为本申请实施例提供的第一种实施方式的基于直接内存访问的报文发包***的示意图;
图3为本申请实施例提供的第二种实施方式的基于直接内存访问的报文发包***的示意图;
图4为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为本申请实施例提供的一种基于直接内存访问的报文发包方法的流程示意图。如图1所示,报文发包方法包括以下步骤。
步骤S110:逻辑侧,响应于接收到来自驱动侧的门铃通知,基于所述门铃通知,按照直接内存访问方式获取与所述门铃通知对应的发包描述符,然后,基于所述发包描述符的地址域段,按照直接内存访问方式获取与所述发包描述符对应的待发送数据。
步骤S120:所述逻辑侧,利用所述待发送数据进行报文发包。
其中,当所述发包描述符的地址域段指向所述驱动侧的内核态内存中的第一地址时,所述逻辑侧按照直接内存访问方式从所述第一地址获取所述待发送数据,当所述发包描述符的地址域段指向不在所述内核态内存中的第二地址时,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧的用户态内存中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据。
图1所示的基于直接内存访问的报文发包方法,可应用于如云计算、数据中心、高性能服务器等应用场景,利用直接内存访问技术降低了数据读取写入方面的延时,提高了整体数据传输性能,并且,针对报文发包方面例如从宿主机的驱动侧向逻辑侧的下行数据处理流程,通过节省在内核态与用户态之间的数据拷贝的损耗以及通过节省硬件发起直接内存访问操作的相关开销,可以适应更大的数据存储规模、多种不同类型的存储设备,提升了报文发包方面的数据传输性能和降低了时延。下面详细说明。
参阅图1,在步骤S110,逻辑侧,响应于接收到来自驱动侧的门铃通知,基于所述门铃通知,按照直接内存访问方式获取与所述门铃通知对应的发包描述符,然后,基于所述发包描述符的地址域段,按照直接内存访问方式获取与所述发包描述符对应的待发送数据。接着,在步骤S120,所述逻辑侧,利用所述待发送数据进行报文发包。如此,通过软硬件结合的方式,具体地,驱动侧的软件如操作***、应用程序和逻辑侧的硬件如智能网卡、数据处理单元虚拟生成的虚拟网络设备等,基于发包描述符构建了在软件和硬件之间的交互机制,使得硬件可以通过直接内存访问技术来直接获取待发送数据,进而可以进行报文封装和报文发送。其中,发包描述符包括多个域段,地址域段用于提供指向待发送数据的地址指针,长度域段用于指示待发送数据的数据长度,还可以有标识域段用于提供更多参考信息。驱动侧包括用户态和内核态两种空间,其中,用户态空间用于操作***、应用程序、数据库和各种函数,用户态空间具有较多的存储资源,可以通过外接硬盘或者挂接更多存储设备来增加数据存储规模。内核态空间用于执行***内核操作,例如中断机制等,一般包含有限的存储资源。直接内存访问技术涉及到直接访问待发送数据所在的实际内存物理地址,因此,逻辑侧基于所述发包描述符的地址域段,按照直接内存访问方式获取与所述发包描述符对应的待发送数据。考虑到用户态空间对应了较大的数据存储规模以及各种不同类型的存储设备,包括虚拟化存储设备,因此,存储在用户态空间的数据是难以保证其内存连续性的,也就是说,如果要获取的数据存储在用户态空间,则数据可能分布在不连续的内存地址上。另外,如果将用户态空间中的数据拷贝到内核态空间,则必然导致在用户态和内核态之间的数据拷贝的损耗,而且随着数据流量的增加,需要进行数据拷贝的数据规模也可能增加,这样进一步地增加了损耗也带来了延时。为此,图1所示的基于直接内存访问的报文发包方法,当所述发包描述符的地址域段指向所述驱动侧的内核态内存中的第一地址时,所述逻辑侧按照直接内存访问方式从所述第一地址获取所述待发送数据,当所述发包描述符的地址域段指向不在所述内核态内存中的第二地址时,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧的用户态内存中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据。
继续参阅图1,基于所述发包描述符的地址域段是指向所述驱动侧的内核态内存中的第一地址或者指向不在所述内核态内存中的第二地址,逻辑侧采取对应的措施并且按照直接内存访问方式获取所述待发送数据。一方面,当所述发包描述符的地址域段指向所述驱动侧的内核态内存中的第一地址时,这意味着要获取的待发送数据位于内核态内存中也即内核态空间中,这种情况下待发送数据一般是已经按照连续分布的地址存储在内核态空间中,因此,所述逻辑侧按照直接内存访问方式从所述第一地址获取所述待发送数据;另一方面,当所述发包描述符的地址域段指向不在所述内核态内存中的第二地址时,这意味着要获取的待发送数据应该在用户态内存也即用户态空间中,这种情况下需要考虑用户态空间中的内存不连续性,因此,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧的用户态内存中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据,这样有助于降低延时和提升数据传输性能。应当理解的是,发包描述符是由驱动侧来负责管理和下发,而逻辑测是响应于接收到来自驱动侧的门铃通知,然后,基于所述门铃通知,按照直接内存访问方式获取与所述门铃通知对应的发包描述符。因此,驱动侧可以设定发包描述符的地址域段是指向所述驱动侧的内核态内存中的第一地址或者指向不在所述内核态内存中的第二地址,这样意味着,逻辑侧只是在获取发包描述符之后被动地采取对应的措施,这样意味着,图1所示的基于直接内存访问的报文发包方法,可以便利地整合到既有的驱动侧与逻辑侧之间软硬件交互机制。另外,驱动侧可以结合应用场景需求来灵活地做出设定,从而可以适配复杂多变的应用环境。在一些实施例中,驱动侧可以选择提供多种队列模式,让不同流量选择进入不同的队列,然后逻辑侧可以基于队列模式来确定所述发包描述符的地址域段是指向所述驱动侧的内核态内存中的第一地址或者指向不在所述内核态内存中的第二地址。在另一些实施例中,驱动侧可以通过发包描述符的标识域段来做出设定,然后逻辑侧可以基于发包描述符的标识域段来确定所述发包描述符的地址域段是指向所述驱动侧的内核态内存中的第一地址或者指向不在所述内核态内存中的第二地址。在一些实施例中,驱动侧可以结合应用场景来灵活地为对应的流量设定队列模式或者设定对应的发包描述符的域段。例如,在流量小且要求低时延的应用场景,驱动侧可以设定发包描述符的地址域段是指向不在所述内核态内存中的第二地址,这样节省在内核态与用户态之间的数据拷贝的损耗,并且,逻辑侧的硬件可以绕过内核态空间和通过单独的通道(例如提供单独的发包寄存器来存储发包描述符)来更好地满足业务的时延敏感性。再例如,在大流量的应用场景,驱动侧可以设定发包描述符的地址域段是指向所述驱动侧的内核态内存中的第一地址,并且,进一步地以批量处理方式,为多个报文填写发包描述符并通知硬件来批量获取多个报文,这样有助于提升整体性能。
总之,图1所示的一种基于直接内存访问的报文发包方法,基于所述发包描述符的地址域段是指向所述驱动侧的内核态内存中的第一地址或者指向不在所述内核态内存中的第二地址,逻辑侧采取对应的措施并且按照直接内存访问方式获取所述待发送数据,一方面考虑用户态空间中的内存不连续性,另一方面考虑在内核态与用户态之间的数据拷贝的损耗,针对报文发包方面如从宿主机的驱动侧向逻辑侧的下行数据处理流程,利用直接内存访问技术降低了数据读取写入方面的延时,提升了报文发包方面的数据传输性能和降低了时延,可以适应更大的数据存储规模、多种不同类型的存储设备,可应用于如云计算、数据中心、高性能服务器等应用场景。
在一种可能的实施方式中,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于指向了所述第一地址的所述发包描述符的地址域段的标准位宽。发包描述符的地址域段用于提供指向待发送数据的地址指针。考虑到用户态空间的内存不连续性和内核态空间的内存连续性,一般地,为了指向不连续分布的内存地址所需要的地址域段的位宽应该大于为了指向连续分布的内存地址所需要的地址域段。这里,指向所述驱动侧的内核态内存中的第一地址,意味着第一地址一般是指向连续分布的内存地址。针对指向不在所述内核态内存中的第二地址,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧的用户态内存中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据,因此,逻辑侧不是直接使用第二地址,而是先通过地址转换将第二地址转换成第三地址,再使用第三地址来作为地址指针获取待发送数据。如此,第二地址还需要结合地址转换表才得到指向了待发送数据的第三地址。如此,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于指向了所述第一地址的所述发包描述符的地址域段的标准位宽,因此,通过降低发包描述符的空间占用,可以节省用于直接内存访问的缓存,提高直接内存访问效率。进一步地,可以利用如地址变换高速缓冲(Translation-Lookaside Buffer,TLB)来提高地址转换效率,建立起从用户态空间中的不连续地址到第二地址的映射,使得第二地址可以结合地址转换表得到第三地址,有利于进一步压缩发包描述符的地址域段的标准位宽,有助于提升降低时延开销和存储开销。例如,通过压缩发包描述符的地址域段的标准位宽,可以更好地适配如64比特的地址位宽的使用场景,例如指向了所述第二地址的所述发包描述符的地址域段的标准位宽可以是32比特或者48比特,这样有助于避免浪费缓存。
在一些实施例中,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于64比特,指向了所述第一地址的所述发包描述符的地址域段的标准位宽大于或者等于64比特。如此,通过压缩发包描述符的地址域段的标准位宽,有助于提升降低时延开销和存储开销,考虑到64比特是一种常见的存储设备采用的数据格式标准,这样有助于避免浪费缓存。
在一些实施例中,指向了所述第二地址的所述发包描述符的地址域段的标准位宽是32比特或者48比特,指向了所述第一地址的所述发包描述符的地址域段的标准位宽是64比特。如此,通过压缩发包描述符的地址域段的标准位宽,有助于提升降低时延开销和存储开销,考虑到64比特是一种常见的存储设备采用的数据格式标准,这样有助于避免浪费缓存。
在一种可能的实施方式中,所述发包描述符包括第一标识域段,所述第一标识域段用于指示所述发包描述符的地址域段指向所述内核态内存中的所述第一地址或者指向不在所述内核态内存中的所述第二地址,所述逻辑侧基于所述第一标识域段选择性地从所述第一地址或者所述第三地址获取所述待发送数据。如此,利用所述发包描述符的第一标识域段,可以确定所述发包描述符的地址域段指向所述内核态内存中的所述第一地址或者指向不在所述内核态内存中的所述第二地址,这样逻辑侧可以采取相应措施,也即所述逻辑侧基于所述第一标识域段选择性地从所述第一地址或者所述第三地址获取所述待发送数据。这样节省在内核态与用户态之间的数据拷贝的损耗,并且,利用所述发包描述符的第一标识域段,可以便利地整合到既有的驱动侧与逻辑侧之间软硬件交互机制。
在一些实施例中,所述第一标识域段的位宽是1比特,所述逻辑侧基于所述门铃通知,按照直接内存访问方式从由所述逻辑侧和所述驱动侧协同管理的环形缓冲获取所述发包描述符,所述环形缓冲位于所述驱动侧的所述内核态内存中。如此,利用所述发包描述符的第一标识域段,可以确定所述发包描述符的地址域段指向所述内核态内存中的所述第一地址或者指向不在所述内核态内存中的所述第二地址,并且,可以结合环形缓冲,改进了基于环形缓冲的发包描述符的获取机制,有利于整合到既有的驱动侧与逻辑侧之间软硬件交互机制。
在一种可能的实施方式中,第一队列和第二队列由所述逻辑侧和所述驱动侧协同管理,所述逻辑侧基于所述门铃通知,按照直接内存访问方式从所述第一队列或者所述第二队列获取所述发包描述符,当所述逻辑侧从所述第一队列获取所述发包描述符时,所述发包描述符的地址域段指向所述内核态内存中的所述第一地址,以及,当所述逻辑侧从所述第二队列获取所述发包描述符时,所述发包描述符的地址域段指向不在所述内核态内存中的所述第二地址。如此,驱动侧可以选择提供多种队列模式,让不同流量选择进入不同的队列,然后逻辑侧可以基于队列模式来确定所述发包描述符的地址域段是指向所述驱动侧的内核态内存中的第一地址或者指向不在所述内核态内存中的第二地址。逻辑侧根据从哪个队列获取所述发包描述符,可以便利地确定相应的队列模式,进而确定所述发包描述符的地址域段是指向所述驱动侧的内核态内存中的第一地址或者指向不在所述内核态内存中的第二地址。进一步地,通过区分开不同的队列模式,有助于实现逻辑侧的硬件可以绕过内核态空间和通过单独的通道(例如提供单独的发包寄存器来存储发包描述符)来更好地满足业务的时延敏感性。
在一些实施例中,所述第一队列是由所述逻辑侧和所述驱动侧协同管理且位于所述驱动侧的所述内核态内存中的环形缓冲,所述第二队列是位于所述逻辑侧的发包寄存器。如此,通过第二队列和发包寄存器,相对于第一队列和环形缓冲,提供了单独的通道,这样逻辑侧的硬件可以绕过内核态空间和通过单独的通道(例如提供单独的发包寄存器来存储发包描述符)来更好地满足业务的时延敏感性。应当理解的是,针对第一队列和环形缓冲,相关的下行数据处理流程包括填充第一队列、门铃通知、硬件从环形缓冲获取发包描述符以及硬件发起直接内存访问获取数据,因此涉及到从用户态到内核态的数据拷贝,以及涉及两次直接内存访问操作也就是硬件从环形缓冲获取发包描述符以及硬件发起直接内存访问获取数据。因为发包寄存器位于逻辑侧,相对于环形缓冲位于所述驱动侧的所述内核态内存中,这意味着,针对第二队列和发包寄存器,相关的下行数据处理流程包括填充第二队列、硬件根据软件写入到发包寄存器的值获得发包描述符,进而使得硬件发起直接内存访问获取数据,因此不涉及从用户态到内核态的数据拷贝,也涉及依次直接内存访问操作也就是硬件发起直接内存访问获取数据。如此,实现了逻辑侧的硬件可以绕过内核态空间和通过单独的通道来获取待发送数据,节省在内核态与用户态之间的数据拷贝的损耗,通过降低发包描述符的空间占用,可以节省用于直接内存访问的缓存,提高直接内存访问效率,通过直接访问发包寄存器降低时延开销和存储开销,有利于更好地满足业务的时延敏感性。
在一些实施例中,所述逻辑侧对所述环形缓冲的访问速度小于所述逻辑侧对所述发包寄存器的访问速度。如此,实现了逻辑侧的硬件可以绕过内核态空间和通过单独的通道来获取待发送数据,节省在内核态与用户态之间的数据拷贝的损耗,通过降低发包描述符的空间占用,可以节省用于直接内存访问的缓存,提高直接内存访问效率,通过直接访问发包寄存器降低时延开销和存储开销,有利于更好地满足业务的时延敏感性。
在一些实施例中,所述第一队列用于第一业务的报文发包,所述第二队列用于第二业务的报文发包,所述第二业务的时延敏感性高于所述第一业务的时延敏感性。如此,实现了逻辑侧的硬件可以绕过内核态空间和通过单独的通道来获取待发送数据,节省在内核态与用户态之间的数据拷贝的损耗,通过降低发包描述符的空间占用,可以节省用于直接内存访问的缓存,提高直接内存访问效率,通过直接访问发包寄存器降低时延开销和存储开销,有利于更好地满足业务的时延敏感性。
在一种可能的实施方式中,当所述发包描述符的地址域段指向所述内核态内存中的所述第一地址时,至少在所述逻辑侧接收到所述门铃通知之前,完成从所述用户态内存到所述内核态内存的数据拷贝,从而使得所述待发送数据存储在所述内核态内存中的所述第一地址。考虑到用户态空间的内存不连续性和内核态空间的内存连续性,完成从所述用户态内存到所述内核态内存的数据拷贝。一方面,当所述发包描述符的地址域段指向所述驱动侧的内核态内存中的第一地址时,这意味着要获取的待发送数据位于内核态内存中也即内核态空间中,这种情况下待发送数据一般是已经按照连续分布的地址存储在内核态空间中,因此,所述逻辑侧按照直接内存访问方式从所述第一地址获取所述待发送数据;另一方面,当所述发包描述符的地址域段指向不在所述内核态内存中的第二地址时,这意味着要获取的待发送数据应该在用户态内存也即用户态空间中,这种情况下需要考虑用户态空间中的内存不连续性,因此,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧的用户态内存中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据,这样有助于降低延时和提升数据传输性能。
在一些实施例中,所述内核态内存中的所述第一地址是连续分布,所述用户态内存中的所述第三地址是不连续分布,所述第二地址是用于地址转换的中间地址。发包描述符的地址域段用于提供指向待发送数据的地址指针。考虑到用户态空间的内存不连续性和内核态空间的内存连续性,一般地,为了指向不连续分布的内存地址所需要的地址域段的位宽应该大于为了指向连续分布的内存地址所需要的地址域段。这里,指向所述驱动侧的内核态内存中的第一地址,意味着第一地址一般是指向连续分布的内存地址。针对指向不在所述内核态内存中的第二地址,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧的用户态内存中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据,因此,逻辑侧不是直接使用第二地址,而是先通过地址转换将第二地址转换成第三地址,再使用第三地址来作为地址指针获取待发送数据。如此,第二地址还需要结合地址转换表才得到指向了待发送数据的第三地址。如此,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于指向了所述第一地址的所述发包描述符的地址域段的标准位宽,因此,通过降低发包描述符的空间占用,可以节省用于直接内存访问的缓存,提高直接内存访问效率。进一步地,可以利用如地址变换高速缓冲(Translation-Lookaside Buffer,TLB)来提高地址转换效率,建立起从用户态空间中的不连续地址到第二地址的映射,使得第二地址可以结合地址转换表得到第三地址,有利于进一步压缩发包描述符的地址域段的标准位宽,有助于提升降低时延开销和存储开销。
在一些实施例中,当所述发包描述符的地址域段指向不在所述内核态内存中的所述第二地址时,至少在所述逻辑侧接收到所述门铃通知之前,建立从所述用户态内存中的所述第三地址到所述第二地址的地址映射关系,从而使得所述第二地址可被转换成所述第三地址。如此,第二地址还需要结合地址转换表才得到指向了待发送数据的第三地址。这样意味着,一般情况下,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于指向了所述第一地址的所述发包描述符的地址域段的标准位宽,因此,通过降低发包描述符的空间占用,可以节省用于直接内存访问的缓存,提高直接内存访问效率。
在一些实施例中,从所述用户态内存中的所述第三地址到所述第二地址的地址映射关系是基于地址变换高速缓冲。如此,建立起从用户态空间中的不连续地址到第二地址的映射,使得第二地址可以结合地址转换表得到第三地址,有利于进一步压缩发包描述符的地址域段的标准位宽,有助于提升降低时延开销和存储开销。
在一种可能的实施方式中,所述驱动侧通过中央处理器写指令操作传递所述门铃通知给所述逻辑侧。如此,实现了门铃通知,可以便利地整合到既有的驱动侧与逻辑侧之间软硬件交互机制。
在一些实施例中,所述中央处理器写指令操作的位宽是64比特,所述门铃通知占据的数据位宽不大于64比特。如此,实现了门铃通知,可以便利地整合到既有的驱动侧与逻辑侧之间软硬件交互机制。一般情况下,常见的中央处理器写指令操作的位宽是64比特,门铃通知所需要占据的数据位宽不大于64比特,因此,一次中央处理器写指令操作可以实现门铃通知。
图2为本申请实施例提供的第一种实施方式的基于直接内存访问的报文发包***的示意图。如图2所示,报文发包***包括逻辑侧A210和驱动侧A220,还有环形缓冲A230。驱动侧A220包括所述驱动侧A220的内核态内存A222和所述驱动侧A220的用户态内存A224。环形缓冲A230由所述逻辑侧A210和所述驱动侧A220协同管理,所述环形缓冲位于所述驱动侧A220的所述内核态内存A222中。图2所示的第一种实施方式的基于直接内存访问的报文发包***,在报文发包方面依次执行以下步骤:逻辑侧A210,响应于接收到来自驱动侧A220的门铃通知,基于所述门铃通知,按照直接内存访问方式获取与所述门铃通知对应的发包描述符,然后,基于所述发包描述符的地址域段,按照直接内存访问方式获取与所述发包描述符对应的待发送数据;所述逻辑侧A210,利用所述待发送数据进行报文发包。其中,当所述发包描述符的地址域段指向所述驱动侧A220的内核态内存A222中的第一地址时,所述逻辑侧A210按照直接内存访问方式从所述第一地址获取所述待发送数据,当所述发包描述符的地址域段指向不在所述内核态内存A222中的第二地址时,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧A220的用户态内存A224中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据。
继续参阅图2,所述发包描述符包括第一标识域段,所述第一标识域段用于指示所述发包描述符的地址域段指向所述内核态内存A222中的所述第一地址或者指向不在所述内核态内存A222中的所述第二地址,所述逻辑侧A210基于所述第一标识域段选择性地从所述第一地址或者所述第三地址获取所述待发送数据。所述第一标识域段的位宽是1比特。所述逻辑侧A210基于所述门铃通知,按照直接内存访问方式从由所述逻辑侧A210和所述驱动侧A220协同管理的环形缓冲A230获取所述发包描述符,所述环形缓冲A230位于所述驱动侧A220的所述内核态内存A222中。
图2所示的第一种实施方式的基于直接内存访问的报文发包***,基于所述发包描述符的地址域段是指向所述驱动侧A220的内核态内存A222中的第一地址或者指向不在所述内核态内存A222中的第二地址,逻辑侧A210采取对应的措施并且按照直接内存访问方式获取所述待发送数据,一方面考虑用户态空间中的内存不连续性,另一方面考虑在内核态与用户态之间的数据拷贝的损耗,针对报文发包方面如下行数据处理流程,利用直接内存访问技术降低了数据读取写入方面的延时,提升了报文发包方面的数据传输性能和降低了时延,可以适应更大的数据存储规模、多种不同类型的存储设备,可应用于如云计算、数据中心、高性能服务器等应用场景。
图3为本申请实施例提供的第二种实施方式的基于直接内存访问的报文发包***的示意图。如图3所示,报文发包***包括逻辑侧B310和驱动侧B320,还有环形缓冲B330。驱动侧B320包括所述驱动侧B320的内核态内存B322和所述驱动侧B320的用户态内存B324。环形缓冲B330由所述逻辑侧B310和所述驱动侧B320协同管理,所述环形缓冲位于所述驱动侧B320的所述内核态内存B322中。图3所示的第二种实施方式的基于直接内存访问的报文发包***,在报文发包方面依次执行以下步骤:逻辑侧B310,响应于接收到来自驱动侧B320的门铃通知,基于所述门铃通知,按照直接内存访问方式获取与所述门铃通知对应的发包描述符,然后,基于所述发包描述符的地址域段,按照直接内存访问方式获取与所述发包描述符对应的待发送数据;所述逻辑侧B310,利用所述待发送数据进行报文发包。其中,当所述发包描述符的地址域段指向所述驱动侧B320的内核态内存B322中的第一地址时,所述逻辑侧B310按照直接内存访问方式从所述第一地址获取所述待发送数据,当所述发包描述符的地址域段指向不在所述内核态内存B322中的第二地址时,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧B320的用户态内存B324中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据。
继续参阅图3,第一队列和第二队列由所述逻辑侧B310和所述驱动侧B320协同管理,所述逻辑侧B310基于所述门铃通知,按照直接内存访问方式从所述第一队列或者所述第二队列获取所述发包描述符,当所述逻辑侧B310从所述第一队列获取所述发包描述符时,所述发包描述符的地址域段指向所述内核态内存B322中的所述第一地址,以及,当所述逻辑侧B310从所述第二队列获取所述发包描述符时,所述发包描述符的地址域段指向不在所述内核态内存B322中的所述第二地址。所述第一队列是由所述逻辑侧B310和所述驱动侧B320协同管理且位于所述驱动侧B320的所述内核态内存B322中的环形缓冲B330,所述第二队列是位于所述逻辑侧B310的发包寄存器340。
图3所示的第二种实施方式的基于直接内存访问的报文发包***,基于所述发包描述符的地址域段是指向所述驱动侧B320的内核态内存B322中的第一地址或者指向不在所述内核态内存B322中的第二地址,逻辑侧B310采取对应的措施并且按照直接内存访问方式获取所述待发送数据,一方面考虑用户态空间中的内存不连续性,另一方面考虑在内核态与用户态之间的数据拷贝的损耗,针对报文发包方面如下行数据处理流程,利用直接内存访问技术降低了数据读取写入方面的延时,提升了报文发包方面的数据传输性能和降低了时延,可以适应更大的数据存储规模、多种不同类型的存储设备,可应用于如云计算、数据中心、高性能服务器等应用场景。进一步地,通过发包寄存器340,使得逻辑侧B310的硬件可以绕过内核态空间和通过单独的通道(例如提供单独的发包寄存器340来存储发包描述符)来更好地满足业务的时延敏感性。
图4是本申请实施例提供的一种计算设备的结构示意图,该计算设备400包括:一个或者多个处理器410、通信接口420以及存储器430。所述处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备400能够用于实现上述的本申请实施例中设备实施例或者***实施例的部分或者全部功能;处理器410还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图4的计算设备400可以包括一个或者多个处理器410,并且多个处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器410可以构成处理器序列或者处理器阵列,或者多个处理器410之间可以分成主处理器和辅助处理器,或者多个处理器410之间可以具有不同的架构如采用异构计算架构。另外,图4所示的计算设备400,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图4所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器410可以有多种具体实现形式,例如处理器410可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器410还可以是单核处理器或多核处理器。处理器410可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(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)。存储器430也可用于存储程序代码和数据,以便于处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图4展示的更多或者更少的组件,或者有不同的组件配置方式。
总线440可以是快捷***部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种***,该***包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该***可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例***中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (18)
1.一种基于直接内存访问的报文发包方法,其特征在于,所述报文发包方法包括:
逻辑侧,响应于接收到来自驱动侧的门铃通知,基于所述门铃通知,按照直接内存访问方式获取与所述门铃通知对应的发包描述符,然后,基于所述发包描述符的地址域段,按照直接内存访问方式获取与所述发包描述符对应的待发送数据;
所述逻辑侧,利用所述待发送数据进行报文发包,
其中,当所述发包描述符的地址域段指向所述驱动侧的内核态内存中的第一地址时,所述逻辑侧按照直接内存访问方式从所述第一地址获取所述待发送数据,当所述发包描述符的地址域段指向不在所述内核态内存中的第二地址时,所述逻辑侧先将所述第二地址转换成指向了所述驱动侧的用户态内存中的第三地址再按照直接内存访问方式从所述第三地址获取所述待发送数据。
2.根据权利要求1所述的报文发包方法,其特征在于,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于指向了所述第一地址的所述发包描述符的地址域段的标准位宽。
3.根据权利要求2所述的报文发包方法,其特征在于,指向了所述第二地址的所述发包描述符的地址域段的标准位宽小于64比特,指向了所述第一地址的所述发包描述符的地址域段的标准位宽大于或者等于64比特。
4.根据权利要求3所述的报文发包方法,其特征在于,指向了所述第二地址的所述发包描述符的地址域段的标准位宽是32比特或者48比特,指向了所述第一地址的所述发包描述符的地址域段的标准位宽是64比特。
5.根据权利要求2所述的报文发包方法,其特征在于,所述发包描述符包括第一标识域段,所述第一标识域段用于指示所述发包描述符的地址域段指向所述内核态内存中的所述第一地址或者指向不在所述内核态内存中的所述第二地址,所述逻辑侧基于所述第一标识域段选择性地从所述第一地址或者所述第三地址获取所述待发送数据。
6.根据权利要求5所述的报文发包方法,其特征在于,所述第一标识域段的位宽是1比特,所述逻辑侧基于所述门铃通知,按照直接内存访问方式从由所述逻辑侧和所述驱动侧协同管理的环形缓冲获取所述发包描述符,所述环形缓冲位于所述驱动侧的所述内核态内存中。
7.根据权利要求2所述的报文发包方法,其特征在于,第一队列和第二队列由所述逻辑侧和所述驱动侧协同管理,所述逻辑侧基于所述门铃通知,按照直接内存访问方式从所述第一队列或者所述第二队列获取所述发包描述符,当所述逻辑侧从所述第一队列获取所述发包描述符时,所述发包描述符的地址域段指向所述内核态内存中的所述第一地址,以及,当所述逻辑侧从所述第二队列获取所述发包描述符时,所述发包描述符的地址域段指向不在所述内核态内存中的所述第二地址。
8.根据权利要求7所述的报文发包方法,其特征在于,所述第一队列是由所述逻辑侧和所述驱动侧协同管理且位于所述驱动侧的所述内核态内存中的环形缓冲,所述第二队列是位于所述逻辑侧的发包寄存器。
9.根据权利要求8所述的报文发包方法,其特征在于,所述逻辑侧对所述环形缓冲的访问速度小于所述逻辑侧对所述发包寄存器的访问速度。
10.根据权利要求8所述的报文发包方法,其特征在于,所述第一队列用于第一业务的报文发包,所述第二队列用于第二业务的报文发包,所述第二业务的时延敏感性高于所述第一业务的时延敏感性。
11.根据权利要求2所述的报文发包方法,其特征在于,当所述发包描述符的地址域段指向所述内核态内存中的所述第一地址时,至少在所述逻辑侧接收到所述门铃通知之前,完成从所述用户态内存到所述内核态内存的数据拷贝,从而使得所述待发送数据存储在所述内核态内存中的所述第一地址。
12.根据权利要求11所述的报文发包方法,其特征在于,所述内核态内存中的所述第一地址是连续分布,所述用户态内存中的所述第三地址是不连续分布,所述第二地址是用于地址转换的中间地址。
13.根据权利要求12所述的报文发包方法,其特征在于,当所述发包描述符的地址域段指向不在所述内核态内存中的所述第二地址时,至少在所述逻辑侧接收到所述门铃通知之前,建立从所述用户态内存中的所述第三地址到所述第二地址的地址映射关系,从而使得所述第二地址可被转换成所述第三地址。
14.根据权利要求13所述的报文发包方法,其特征在于,从所述用户态内存中的所述第三地址到所述第二地址的地址映射关系是基于地址变换高速缓冲。
15.根据权利要求2所述的报文发包方法,其特征在于,所述驱动侧通过中央处理器写指令操作传递所述门铃通知给所述逻辑侧。
16.根据权利要求15所述的报文发包方法,其特征在于,所述中央处理器写指令操作的位宽是64比特,所述门铃通知占据的数据位宽不大于64比特。
17.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至16中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至16中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410557936.8A CN118138558A (zh) | 2024-05-08 | 2024-05-08 | 基于直接内存访问的报文发包方法、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410557936.8A CN118138558A (zh) | 2024-05-08 | 2024-05-08 | 基于直接内存访问的报文发包方法、计算机设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118138558A true CN118138558A (zh) | 2024-06-04 |
Family
ID=91244338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410557936.8A Pending CN118138558A (zh) | 2024-05-08 | 2024-05-08 | 基于直接内存访问的报文发包方法、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118138558A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530241A (zh) * | 2013-09-24 | 2014-01-22 | 创新科存储技术(深圳)有限公司 | 一种用户态的双控内存镜像实现方法 |
CN112532585A (zh) * | 2020-11-02 | 2021-03-19 | 杭州迪普科技股份有限公司 | 一种进程间报文传输的方法、设备及介质 |
CN114201317A (zh) * | 2021-12-16 | 2022-03-18 | 北京有竹居网络技术有限公司 | 数据传输方法、装置、存储介质及电子设备 |
CN115269450A (zh) * | 2022-08-03 | 2022-11-01 | 苏州盛科通信股份有限公司 | 内存协同管理***和方法 |
CN117573602A (zh) * | 2024-01-16 | 2024-02-20 | 珠海星云智联科技有限公司 | 用于远程直接内存访问报文发送的方法及计算机设备 |
-
2024
- 2024-05-08 CN CN202410557936.8A patent/CN118138558A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530241A (zh) * | 2013-09-24 | 2014-01-22 | 创新科存储技术(深圳)有限公司 | 一种用户态的双控内存镜像实现方法 |
CN112532585A (zh) * | 2020-11-02 | 2021-03-19 | 杭州迪普科技股份有限公司 | 一种进程间报文传输的方法、设备及介质 |
CN114201317A (zh) * | 2021-12-16 | 2022-03-18 | 北京有竹居网络技术有限公司 | 数据传输方法、装置、存储介质及电子设备 |
CN115269450A (zh) * | 2022-08-03 | 2022-11-01 | 苏州盛科通信股份有限公司 | 内存协同管理***和方法 |
CN117573602A (zh) * | 2024-01-16 | 2024-02-20 | 珠海星云智联科技有限公司 | 用于远程直接内存访问报文发送的方法及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11500689B2 (en) | Communication method and apparatus | |
US11687430B2 (en) | Method and apparatus for offloading functional data from an interconnect component | |
CN115840620B (zh) | 一种数据通路构建方法、设备及介质 | |
CN113742269B (zh) | 用于epa设备的数据传输方法、处理设备和介质 | |
US20210019261A1 (en) | Memory cache-line bounce reduction for pointer ring structures | |
CN115934625B (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
US10545697B1 (en) | Reverse order request queueing by para-virtual device drivers | |
CN118138558A (zh) | 基于直接内存访问的报文发包方法、计算机设备及介质 | |
CN116483259A (zh) | 一种数据处理方法以及相关装置 | |
CN114911525A (zh) | 二进制指令翻译执行方法及装置 | |
US11106587B2 (en) | Memory cache-line bounce reduction for shared I/O ring structures | |
CN116745754A (zh) | 一种访问远端资源的***及方法 | |
CN116340246B (zh) | 用于直接内存访问读取操作的数据预读方法及介质 | |
US20240111694A1 (en) | Node identification allocation in a multi-tile system with multiple derivatives | |
CN118035150B (zh) | ***器件互联扩展设备热插拔***、方法、设备以及集群 | |
CN117519908B (zh) | 一种虚拟机热迁移方法、计算机设备及介质 | |
CN117971135B (zh) | 存储设备的访问方法、装置、存储介质和电子设备 | |
US12039294B2 (en) | Device and method for handling programming language function | |
US20230229497A1 (en) | Transparent and remote kernel execution in a heterogeneous computing system | |
CN113722110B (zh) | 计算机***、内存访问方法及设备 | |
US11966743B2 (en) | Reverse order queue updates by virtual devices | |
CN115604198B (zh) | 一种网卡控制器、网卡控制方法、设备及介质 | |
WO2023134588A1 (zh) | 计算***、方法、装置及加速设备 | |
CN118426913A (zh) | 用于vDPA内存映射的方法、计算机设备及介质 | |
CN118394453A (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 |