CN113468090A - 一种PCle通信方法、装置、电子设备及可读存储介质 - Google Patents

一种PCle通信方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN113468090A
CN113468090A CN202010236708.2A CN202010236708A CN113468090A CN 113468090 A CN113468090 A CN 113468090A CN 202010236708 A CN202010236708 A CN 202010236708A CN 113468090 A CN113468090 A CN 113468090A
Authority
CN
China
Prior art keywords
network
transmission module
operating system
network transmission
pcle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010236708.2A
Other languages
English (en)
Other versions
CN113468090B (zh
Inventor
张振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Uniview Technologies Co Ltd
Original Assignee
Zhejiang Uniview Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Uniview Technologies Co Ltd filed Critical Zhejiang Uniview Technologies Co Ltd
Priority to CN202010236708.2A priority Critical patent/CN113468090B/zh
Publication of CN113468090A publication Critical patent/CN113468090A/zh
Application granted granted Critical
Publication of CN113468090B publication Critical patent/CN113468090B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种PCle通信方法,包括:利用网络传输模块接收通过PCle传输的网络数据包;其中,网络传输模块用于将PCIe通信转换为网络通信;将网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,操作系统物理内存页作为网络传输模块内存单元;该方法直接将操作系统物理内存页作为网络传输模块内存单元,使得网络传输模块可以以操作系统内部的物理内存管理单元为基准执行网络传输模块的内存管理过程,进而在内存管理时可以直接使用操作系统中已有的结构,提高了网络传输模块内存管理的便捷性和可靠性;本申请还公开了一种PCle通信装置、电子设备以及可读存储介质,具有上述有益效果。

Description

一种PCle通信方法、装置、电子设备及可读存储介质
技术领域
本申请涉及通信技术领域,特别涉及一种PCle通信方法、装置、电子设备及可读存储介质。
背景技术
随着电子技术的快速发展,当前PCle因其高效性得到广泛关注。其中,PCle(peripheral component interconnect express)是一种高速串行通信总线。但是,目前当两个CPU之间以PCle作为通信方式时,可以直接使用的应用软件开发工具非常少,导致应用层软件设计难度大,成本高,不利于PCle的进一步推广。
发明内容
本申请的目的是提供一种PCle通信方法、装置、电子设备及可读存储介质,通过直接将操作系统物理内存页作为网络传输模块内存单元,使得网络传输模块在内存管理时可以直接使用操作系统中已有的结构,提高了网络传输模块内存管理的便捷性和可靠性。
为解决上述技术问题,本申请提供一种PCle通信方法,包括:
利用网络传输模块接收通过PCle传输的网络数据包;其中,所述网络传输模块用于将PCIe通信转换为网络通信;
将所述网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,所述操作系统物理内存页作为网络传输模块内存单元。
可选地,所述利用网络传输模块接收通过PCle传输的网络数据包之前,还包括:
创建所述缓存队列,其中,所述缓存队列中每个元素指向对应的操作系统物理内存页。
可选地,所述创建所述缓存队列,包括:
创建所述缓存队列;所述缓存队列的元素个数为N,N为正整数;
设置所述网络传输模块内存单元与所述操作系统物理内存页大小相等;
分配m*N个所述操作系统物理内存页,并为所述缓存队列中每个元素指定m个所述操作系统物理内存页,m为正整数。
可选地,所述PCle通信方法还包括:
当检测到卸载所述网络传输模块时,释放m*N个所述操作系统物理内存页。
可选地,所述缓存队列为逻辑上首尾相接的缓存队列。
可选地,所述利用网络传输模块接收通过PCle传输的网络数据包之前,还包括:
将所述网络数据包的大小设置为所述操作系统物理内存页的大小。
可选地,所述将所述网络数据包的大小设置为所述操作系统物理内存页的大小,包括:
确定所述网络通信对应的虚拟网络中链路层的协议头的长度数值;
读取所述网络传输模块内存单元的大小;
计算所述网络传输模块内存单元的大小与所述长度数值的差值,并将所述差值设置为网络数据包的MTU对应的数值。
本申请还提供一种PCle通信装置,包括:
数据获取模块,用于利用网络传输模块接收通过PCle传输的网络数据包;其中,所述网络传输模块用于将PCIe通信转换为网络通信;
数据缓存模块,用于将所述网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,所述操作系统物理内存页作为网络传输模块内存单元。
本申请还提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述所述的PCle通信方法的步骤。
本申请还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的PCle通信方法的步骤。
本申请所提供的一种PCle通信方法,包括:利用网络传输模块接收通过PCle传输的网络数据包;其中,网络传输模块用于将PCIe通信转换为网络通信;将网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,操作系统物理内存页作为网络传输模块内存单元。
可见,该方法通过网络传输模块将PCIe通信转换为网络通信,因此可以直接使用网络通信对应的应用软件开发工具设计应用层软件,而基于网络通信对应的应用软件开发工具很多,进而降低了实际以PCle作为通信方式时对应的应用层软件设计的复杂度,且由于网络通信使用广泛,也在一定程度上提高了应用层软件可移植性和兼容性;进一步,该方法直接将操作系统物理内存页作为网络传输模块内存单元,使得网络传输模块可以以操作系统内部的物理内存管理单元为基准执行网络传输模块的内存管理过程,进而网络传输模块在内存管理时可以直接使用操作系统中已有的结构,提高了网络传输模块内存管理的便捷性和可靠性,即,简化了网络传输模块的内存管理过程,降低了网络传输模块的内存管理的难度以及复杂性。本申请还提供了一种PCIe通信装置、电子设备以及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对实施例或背景技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种PCle通信方法的流程图;
图2为本申请实施例所提供的一种将PCIe通信虚拟为网络通信的示意图;
图3为本申请实施例所提供的一种创建缓存队列的流程图;
图4为本申请实施例所提供的一种创建的环形缓存队列的示意图;
图5为本申请实施例所提供的一种设置网络数据包的MTU的流程图;
图6为本申请实施例所提供的一种PCle通信装置的结构框图;
图7为本申请实施例所提供的一种电子设备的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术在选择以PCle作为通信方式时,可以直接使用的应用软件开发工具非常少,导致应用层软件设计难度大,成本高,不利于PCle的进一步推广。本申请实施例中通过网络传输模块将PCIe通信转换为网络通信来克服相关技术中可直接使用的应用软件开发工具少,应用层软件设计难度大的问题,且在此基础上通过操作系统物理内存页来降低网络传输模块内存管理的复杂性。具体请参考图1,图1为本申请实施例所提供的一种PCle通信方法的流程图;该方法可以包括:
S101、利用网络传输模块接收通过PCle传输的网络数据包;其中,网络传输模块用于将PCIe通信转换为网络通信。
需要说明的是,本申请实施例并不限定网络传输模块的实现方式,其只要可以实现将PCIe通信虚拟为网络通信的形式即可。例如,可以通过虚拟网卡的形式来实现网络传输模块的功能,如,当两个处理器(如两个CPU)以PCle作为通信方式时,可以在两处理器侧各设置一个虚拟网卡,用于将PCIe通信转换为网络通信,以便应用层软件可以利用成熟的网络通信协议来进行设计,具体可以参考图2,图2中以通用CPU和专用CPU,以及将虚拟网卡作为网络传输模块为例进行示意。此时,两个处理器(即,第一处理器和第二处理器)对应的数据传输过程可以是:应用层软件向第一处理器发送网络通信协议对应的第一网络数据包,第一处理器中虚拟网卡在接收到该第一网络数据包时,将其转化为PCIe通信协议对应的第二网络数据包,并通过对应的PCle传输该第二网络数据包到第二处理器;第二处理器中虚拟网卡在接收到该第二网络数据包时,将其转化为网络通信协议对应的第一网络数据包,并将该第一网络数据包存储到缓存队列对应的操作系统物理内存页中,以便后续可以将缓存队列中存储的第一网络数据包向上传递至操作系统的协议栈,在操作系统上运行的应用层软件会将这些数据从协议栈取走,应用层软件会继续使用这些数据,比如在屏幕上显示等。通过上述过程即可完成两个处理器间基于PCIe通信过程。可见,图2给出的例子中将PCIe通信转换为网络通信是通过虚拟网卡实现的,而应用层软件并不需要关心这一过程,因此在应用层软件的角度可以理解为虚拟网卡将PCIe通信虚拟为网络通信,进而可以直接使用网络通信协议来设计应用层软件。可以理解的是,本申请实施例中并不对第一处理器和第二处理器进行限定。例如,当两个处理器一个为专用CPU,一个为通用CPU时,第一处理器既可以是专用CPU,也可以是通用CPU。
也就是说,本申请实施例中通过网络传输模块将PCIe通信转换为网络通信,因此,可以直接使用网络通信对应的应用软件开发工具设计应用层软件,而基于网络通信对应的应用软件开发工具很多,进而降低了以PCle作为通信方式时对应的应用层软件设计的复杂度,且由于网络通信使用广泛,也在一定程度上提高了基于网络通信设计的应用层软件的可移植性和兼容性。
当然,本申请实施例中也不限定接收到的网络数据包的内容,大小以及数量,用户可以根据实际情况进行设置,进而网络传输模块依据设定的内存管理方式对接收到的网络数据包进行处理。
S102、将网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,操作系统物理内存页作为网络传输模块内存单元。
需要说明的是,本申请实施例中将操作系统物理内存页作为网络传输模块内存单元,使得网络传输模块的驱动软件可以以操作系统内部的物理内存管理单元为基准执行网络传输模块的内存管理过程。进而网络传输模块在内存管理时可以直接使用操作系统中已有的结构(如struct page,即页结构,其代表了内存管理中重要的数据结构,它可以代表系统内存的最小单位),提高了网络传输模块内存管理的便捷性和可靠性。从而简化了网络传输模块的内存管理过程,降低了网络传输模块的内存管理的难度以及复杂性。
本申请实施例中并不对将网络数据包存储到缓存队列对应的操作系统物理内存页中的过程进行限定,其与网络传输模块预设的内存管理方式相关。例如,本申请实施例中在接收到网络数据包时,可以根据接收顺序将网络数据包按照缓存队列中队列元素的顺序,依次存储到缓存队列中各队列元素对应的操作系统物理内存页中。如,当网络传输模块接收到外部传输过来的网络数据包时,可以利用网络传输模块驱动程序依次将接收到的网络数据包按照缓存队列中队列元素的顺序依次存储到空闲的队列元素对应的操作系统物理内存页中。本申请实施例中也可以是在接收到网络数据包,根据预先设定的存储规则,确定本次需要存储网络数据包的指定的队列元素,再将网络数据包存储到缓存队列指定的队列元素对应的操作系统物理内存页中。
可以理解的是,本申请实施例中并不限定缓存队列的形式,例如可以设置为逻辑上首尾相接的缓存队列,即循环缓存队列。本申请实施例中也不限定缓存队列中元素(即队列元素)的数量,其数量可以由用户根据实际应用场景确定,如根据实际应用场景中数据量的大小进行限定。当然,本申请实施例中也不限定缓存队列中每个元素对应的操作系统物理内存页的数量,只要缓存队列中每个元素均存在指向的操作系统物理内存页即可。例如,缓存队列中每个元素可以分别指向对应的一个操作系统物理内存页;或者是缓存队列中每个元素可以分别指向对应的两个操作系统物理内存页。可见,本申请实施例中并不对缓存队列的创建过程进行限定。进一步,本申请实施例中为了保证缓存队列有足够的空间可以存放网络数据包,提供了一种创建缓存队列的方式,具体请参考图3。创建缓存队列可以包括:
S301、创建缓存队列;缓存队列的元素个数为N,N为正整数。
本申请实施例可以利用网络传输模块的驱动软件创建元素个数为N的缓存队列。本申请实施例中并不限定N的具体数值,其可以由用户根据实际应用场景确定。进一步,本申请实施例为了保证网络数据包传输的高效性,可以将缓存队列设置为环形缓存队列,以便网络传输模块的驱动软件循环使用该环形缓存队列接收网络数据包。
S302、设置网络传输模块内存单元与操作系统物理内存页大小相等。
本申请实施例中为了简化网络传输模块内存管理的复杂性,因此,网络传输模块的驱动软件可以直接以操作系统内部的物理内存管理单元为基准执行网络传输模块的内存管理过程。即,网络传输模块在内存管理时可以直接使用操作系统中已有的结构来提高网络传输模块内存管理的便捷性和可靠性。相应的,本申请实施例需要将操作系统物理内存页作为网络传输模块内存单元,即,可以利用网络传输模块的驱动软件设置网络传输模块内存单元与操作系统物理内存页大小相等。
S303、分配m*N个操作系统物理内存页,并为缓存队列中每个元素指定m个操作系统物理内存页,m为正整数。
本申请实施例中为了保证缓存队列有足够的空间可以存放网络数据包,可以利用网络传输模块的驱动软件为具有N个元素的缓存队列,分配m*N个操作系统物理内存页,并建立缓存队列中各个元素与操作系统物理内存页的对应关系。即,缓存队列中每个元素可以分别指向m个操作系统物理内存页。当然,本申请实施例中并不限定m的具体数值,例如,m可以是1,也可以是2,也可以是3等,其具体数值可以由用户根据实际情况设定。本申请实施例中并不限定缓存队列中各个元素与操作系统物理内存页建立联系的方式,只要缓存队列中每个元素可以分别指向m个操作系统物理内存页即可。例如,缓存队列中每个元素可以记录其所指向的m个操作系统物理内存页的地址。本申请实施例中也不限定为缓存队列中各个元素分配操作系统物理内存页的方式,只要缓存队列中每个元素可以分别对应m个操作系统物理内存页即可。例如,当m数值为2时,缓存队列中第1个元素指向第1个操作系统物理内存页,以及第N+1个操作系统物理内存页,缓存队列中第2个元素指向第2个操作系统物理内存页,以及第N+2个操作系统物理内存页,直到缓存队列中第N个元素指向第N个操作系统物理内存页,以及第2N个操作系统物理内存页。
进一步,本申请实施例中为了提高网络数据包的缓存效率,并更大程度的降低网络传输模块内存管理的复杂性。本申请实施例中可以在分配m*N个操作系统物理内存页之后,设置分配的m*N个操作系统物理内存页在使用过程中不被释放,直到检测到卸载网络传输模块时,才会释放分配的m*N个操作系统物理内存页。因此,网络传输模块的驱动软件可以循环使用分配的m*N个操作系统物理内存页。例如,以m数值为2为例说明网络传输模块接收网络数据包的过程,首先使用第1个至第N个操作系统物理内存页,再使用第N个至第N+1个操作系统物理内存页,接下来再继续使用第1个至第N个操作系统物理内存页,如此循环使用。可见,通过设置分配的m*N个操作系统物理内存页在使用过程中不被释放,网络传输模块无需在网络数据包收包的过程中频繁的执行分配操作系统物理内存页以及释放操作系统物理内存页的操作。即,本申请实施例中通过设置分配的m*N个操作系统物理内存页在使用过程中不被释放,直到检测到卸载网络传输模块时,才释放分配的m*N个操作系统物理内存页,提高了网络数据包的接收效率,减轻了网络传输模块的内存管理负担,进一步降低处理器的性能消耗。需要说明的是,本申请实施例中并不对释放分配的m*N个操作系统物理内存页的过程进行限定。例如,当检测到卸载网络传输模块驱动软件时,释放分配的m*N个操作系统物理内存页以及其他相关管理结构。
本申请实施例中在保证缓存队列有足够的空间可以存放网络数据包的基础上,为了进一步提高为缓存队列分配的操作系统物理内存页的利用率,可以将m的数值设置为2,即,为缓存队列分配2N个操作系统物理内存页,并为缓存队列中每个元素指定两个操作系统物理内存页。
需要说明的是,本申请实施例中可以将缓存队列设置为逻辑上首尾相接的缓存队列,即循环缓存队列。在本实施例中使用循环缓存队列的作用主要由两点,第一:管理分配的操作系统物理内存页(即网络传输模块内存单元),利用循环缓存队列的每个元素记录操作系统物理内存页的地址,即,实现为缓存队列中每个元素指定m个(如2个)操作系统物理内存页。第二:当瞬间有大量的网络数据包到达时,循环缓存队列可以保证有足够的空间可以存放这些网络数据包。当然,本申请实施例中并不限定循环缓存队列的形式,例如,可以是环形缓存队列。
请参考图4,以环形缓存队列,以及分配2N个操作系统物理内存页为例,对缓存队列的工作过程进行描述。为了便于展示队列元素与物理内存页(即操作系统物理内存页)之间的对应关系,将图4中左侧的环形缓存队列展开成一个如图4中右侧的缓存队列形式,两者完全等效。在网络传输模块的驱动软件中可以通过操作系统分配2N个操作系统物理内存页,网络传输模块在接收网络数据包时,首先使用0-1,0-2,直到0-N对应的操作系统物理内存页(如图4中实线箭头指向),也就是首先使用第1个至第N个操作系统物理内存页;此时,环形缓存队列运行到原点,接下来再使用1-1,1-2,直到1-N对应的操作系统物理内存页(如图4中虚线箭头指向),也就是再使用第N个至第N+1个操作系统物理内存页;此时,环形缓存队列再次运行到原点;由于设置分配的2N个操作系统物理内存页在使用过程中不被释放,直到检测到卸载网络传输模块时,才会释放分配的2N个操作系统物理内存页,因此,可以继续再次使用0-1,0-2…直到0-N对应的操作系统物理内存页(如图4中实线箭头指向),如此循环使用。
基于上述实施例,本申请提供的PCle通信方法,该方法通过网络传输模块将PCIe通信转换为网络通信,因此可以直接使用网络通信对应的应用软件开发工具设计应用层软件,而基于网络通信对应的应用软件开发工具很多,进而降低了实际以PCle作为通信方式时对应的应用层软件设计的复杂度,且由于网络通信使用广泛,也在一定程度上提高了应用层软件可移植性和兼容性;进一步,提出了一种基于操作系统物理内存页的网络传输模块的性能优化方法,通过直接将操作系统物理内存页作为网络传输模块内存单元,使得网络传输模块可以以操作系统内部的物理内存管理单元为基准执行网络传输模块的内存管理过程,进而网络传输模块在内存管理时可以直接使用操作系统中已有的结构,提高了网络传输模块内存管理的便捷性和可靠性,即,简化了网络传输模块的内存管理过程,降低了网络传输模块的内存管理的难度以及复杂性。
由于PCle通信的数据流量比较大,目前,基本上都通过DMA来传输数据,以节省处理器的处理时间;其中,DMA(Direct Memory Access,直接存储器访问)是一种无需处理器(如CPU)参与的内存间或内存与外部设备间的拷贝方式。即,处理器在通过DMA进行数据传输的过程中只需要指定源地址和目的地址即可,具体传输的过程则无需处理器参与。DMA相关模块一般位于专用处理器中,在专用处理器中PCIe相关的DMA具有单次传输数据量大、每次只能传输单块内存数据、一次传输完成产生一次中断的特点。例如,在视频处理这一应用场景下,其中,PCle连接两个CPU,一个CPU作为通用CPU(如x86 CPU),用于提供通用的计算能力;另一个CPU作为专用CPU(如arm CPU),用于提供视频编解码,智能算法处理等能力。该专用CPU中PCIe相关的DMA就具有上述特点。
但是,在网络传输中,网络数据包的大小受限于网卡MTU等因素,导致每个网络数据包的数据长度比较小,即,每个网络数据包的数据含量较小。其中,MTU(MaximumTransmission Unit,最大传输单元)的单位是字节,用来表示网络上能够传送的最大数据包,即,MTU在网络传输中用来限定网络包中数据的大小。很显然,这种数据含量较小的网络数据包同样需要占用一次DMA传输,而具有上述特点的DMA配置存在耗时,且一次传输产生一次中断。在这个过程中使用数据含量较小的网络数据包会导致处理器进入一次中断只能处理较小的数据量,进而造成网络带宽低、处理器性能消耗高的问题。
为了解决这一技术问题,基于上述实施例,本申请实施例中采用提升网络数据包的MTU数值的方式来增加每个网络数据包的数据含量。即,通过优化网络数据包的MTU配置,提高处理器进入一次中断所能够处理的数据量,提升了网络传输模块的带宽,有利于降低处理器性能消耗。进而能够解决上述问题。
可以理解的是,本申请实施例中并不限定网络数据包的MTU的具体数值,用户可以根据实际需要处理的数据量大小等来确定网络数据包的MTU的数值。
需要说明的是,在具有上述特点的DMA的使用场景下,影响网络传输模块带宽的主要因素是MTU,MTU值越大能提供的理论带宽就越大。而MTU值的放大,意味着网络数据包越大,对应的则需要更大的网络传输模块内存单元来提供支持。即,MTU数值与网络传输模块内存单元的大小存在耦合关系。无限制的提升MTU值,对应的网络传输模块内存单元的容量就需要增大,而过大的网络传输模块内存单元会给网络传输模块的内存管理带来巨大挑战,使得网络传输模块的内存管理过于复杂,进而导致网络传输模块的驱动层软件实现困难,甚至会导致整个系统出现崩溃。
为了解决这一技术问题,本申请实施例中可以将网络数据包的大小设置为操作系统物理内存页的大小。其中,操作系统物理内存页作为网络传输模块内存单元。操作系统物理内存页(即,操作系统中的一个page)是指操作系统内部对于内存的管理单元,一般为4kB或8kB,其属于操作系统中管理内存的基本单元。网络传输模块内存单元是指网络传输模块的驱动软件中用来管理一个网络数据包的内存单元。
可以理解的是,本申请实施例中通过将网络数据包的大小设置为操作系统物理内存页的大小,保证了处理器进入一次中断能够处理较多的数据量,以提升网络传输模块的带宽,降低处理器性能消耗;又通过将操作系统物理内存页作为网络传输模块内存单元,保证降低了网络传输模块的内存管理的难度,以减轻网络传输模块的内存管理的复杂性,使得网络传输模块的驱动层软件更易于实现,同时降低因为网络传输模块的内存管理所带来的处理器的性能消耗。
本申请实施例中并不限定将网络数据包的大小设置为操作系统物理内存页的大小的具体方式,即,本申请实施例中并不限定该网络数据包的MTU对应的数值的设定方式。只要可以保证设置的MTU数值可以使得对应的网络数据包的大小与操作系统物理内存页的大小相等即可。本申请实施例中提供一种设置网络数据包的MTU的方法,具体可以参考图5,将网络数据包的大小设置为操作系统物理内存页的大小可以包括:
S501、确定网络通信对应的虚拟网络中链路层的协议头的长度数值。
由于整个网络数据包不仅仅包含用户所需要的数据,还包含协议头数据,因此,为了确定一个网络数据包中所能够包含的数据的大小,需要知道对应的协议头数据的大小。网络中链路层的协议头可以包含IPv4(Internet Protocol version 4,互联网协议版本4)和IPv6(Internet Protocol version 6,互联网协议版本6)两种情况。其中,IPv4的协议头的长度数值为16kB,IPv6的协议头的长度数值为100kB以下。此时,需要确定网络通信对应的虚拟网络中链路层的协议头实际的长度数值。
S502、读取网络传输模块内存单元的大小。
本申请实施例可以通过网络传输模块的驱动软件读取网络传输模块内存单元的大小(即,操作系统物理内存页的大小)。
可以理解的是,本申请实施例并不限定步骤S501和步骤S502的先后顺序,只要可以获取到网络传输模块内存单元的大小这一数值以及虚拟网络中链路层的协议头的长度数值即可。
S503、计算网络传输模块内存单元的大小与长度数值的差值,并将差值设置为网络数据包的MTU对应的数值。
本申请实施例中假设网络传输模块内存单元的大小为2m+1kB,m为正整数,且网络通信对应的虚拟网络中链路层的协议头实际的长度数值为L时,两者的差值为(2m+1–L)kB,即,网络数据包的MTU对应的数值为(2m+1–L)kB。本申请实施例可以利用网络传输模块的驱动软件将(2m+1–L)kB设置为网络数据包的MTU对应的数值,即网络传输模块的驱动软件配置网络传输模块MTU为(2m+1–L)kB。
下面举例说明,本申请实施例中通过将网络数据包的大小设置为操作系统物理内存页的大小,保证了处理器进入一次中断能够处理较多的数据量,以达到提升网络传输模块的带宽,降低处理器性能消耗这一有益效果。目前,普通的网卡对应的网络数据包的MTU的数值固定为1500Bytes,目前操作系统中,操作系统物理内存页的大小一般为4kB、8kB等。现在以操作系统物理内存页的大小为4kB,且IPv4的协议头的长度数值为16kB时,计算得到的MTU数值为4080Bytes。可见,本申请实施例中设置的MTU数值对应的数据长度是目前采用默认MTU数值对应的数据长度的3倍左右。即,本申请实施例中通过上述方式设置的MTU数值的情况下处理器进入一次中断处理的数据量是目前默认MTU数值情况下处理器处理数据量的2.72倍。很显然,当操作系统物理内存页的大小为8kB,或者更大时,得到的MTU数值就会更大,对应的,网络数据包所能够包含的数据量就越大,相应的,本申请实施例中处理器进入一次中断处理的数据量与目前默认MTU数值情况下处理器处理数据量之比将远远大于2.72倍。
通过上述例子,可以证明,本申请实施例中提供的MTU数值设置方法,充分发挥了DMA单次的传输能力,保证了处理器进入一次中断能够处理较多的数据量,可以大幅提升网络传输模块的网络带宽;且由于单次传输数据量的增加,因此,在传输相同数据量的情况下可以减少DMA传输次数,从而可以减少DMA配置次数及处理器的中断次数,大大降低处理器性能消耗。
可以理解的是,本申请实施例将网络传输模块内存单元的大小与长度数值的差值作为网络数据包的MTU对应的数值,可以保证每一个网络数据包被一个网络传输模块内存单元(即,操作系统物理内存页)所容纳。也就是说,在网络传输模块对应的缓存队列中每个队列元素即可完成一个网络数据包的管理,避免出现由缓存队列中多个队列元素打包形成一个网络数据包的情况,简化了网络传输模块的内存管理过程。
基于上述实施例,本申请提供的PCle通信方法,通过将网络数据包的大小设置为操作系统物理内存页的大小,保证了处理器进入一次中断能够处理较多的数据量,以提升网络传输模块的网络带宽,且由于单次传输数据量的增加,在传输相同数据量的情况下可以减少DMA传输次数,从而可以减少DMA配置次数及处理器的中断次数,大大降低处理器性能消耗;又通过将操作系统物理内存页作为网络传输模块内存单元,简化了网络传输模块的内存管理过程,降低了网络传输模块的内存管理的难度,以降低网络传输模块的内存管理的复杂性,使得网络传输模块的驱动层软件更易于实现,同时降低因为网络传输模块的内存管理所带来的处理器的性能消耗。
可以理解的是,上述各个实施例仅仅是列举了部分实施例,除了必然不能组合的情况下,上述各个实施例均可以任意组合,形成新的组合实施例。
下面对本申请实施例提供的PCle通信装置、电子设备及可读存储介质进行介绍,下文描述的PCle通信装置、电子设备及可读存储介质与上文描述的PCle通信方法可相互对应参照。
请参考图6,图6为本申请实施例所提供的一种PCle通信装置的结构框图;该PCle通信装置可以包括:
数据获取模块100,用于利用网络传输模块接收通过PCle传输的网络数据包;其中,网络传输模块用于将PCIe通信转换为网络通信;
数据缓存模块200,用于将网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,操作系统物理内存页作为网络传输模块内存单元。
基于上述实施例,该装置还可以包括:
设置模块,用于将网络数据包的大小设置为操作系统物理内存页的大小。
基于上述实施例,该设置模块可以包括:
读取单元,用于确定网络通信对应的虚拟网络中链路层的协议头的长度数值;读取网络传输模块内存单元的大小;
第一设置单元,用于计算网络传输模块内存单元的大小与长度数值的差值,并将差值设置为网络数据包的MTU对应的数值。
基于上述任意实施例,该装置还可以包括:
创建模块,用于创建缓存队列,其中,缓存队列中每个元素指向对应的操作系统物理内存页。
基于上述实施例,该创建模块可以包括:
创建单元,用于创建缓存队列;缓存队列的元素个数为N,N为正整数;该缓存队列可以是逻辑上首尾相接的缓存队列,即循环缓存队列(如环形缓存队列)。
第二设置单元,用于设置网络传输模块内存单元与操作系统物理内存页大小相等;
分配单元,用于分配m*N个操作系统物理内存页,并为缓存队列中每个元素指定m个操作系统物理内存页,m为正整数。
基于上述任意实施例,该创建模块还可以包括:
操作系统物理内存页管理单元,用于设置分配的m*N个操作系统物理内存页在使用过程中不被释放,直到当检测到卸载网络传输模块时,释放m*N个操作系统物理内存页。
需要说明的是,基于上述任意实施例,装置可以是基于可编程逻辑器件实现的,可编程逻辑器件包括FPGA,CPLD,单片机、处理器等。这些可编程逻辑器件可以设置在电子设备中。
请参考图7,图7为本申请实施例所提供的一种电子设备的结构框图;电子设备300可以包括处理器301和存储器302,当然,还可以进一步包括多媒体组件303、信息输入/信息输出(I/O)接口304以及通信组件305中的一或多者。
其中,处理器301用于控制电子设备300的整体操作,以完成上述的PCle通信方法中的全部步骤;存储器302用于存储各种类型的数据以支持处理器301所需执行的各种操作,这些数据例如可以包括用于在该电子设备300上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器302可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,SRAM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、只读存储器(Read-OnlyMemory,ROM)、磁存储器、快闪存储器、磁盘或光盘中的一或多者。
I/O接口304为处理器301和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标。通信组件305用于电子设备300与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件305可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备300可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的PCle通信方法。
当然,本实施例中并不对电子设备所需要的其他部件进行限定,具体可以参考现有电子设备的设置。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例所述的PCle通信方法的步骤。如计算机程序被处理器执行时实现利用网络传输模块接收通过PCle传输的网络数据包;其中,网络传输模块用于将PCIe通信转换为网络通信;将网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,操作系统物理内存页作为网络传输模块内存单元。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种PCle通信方法、装置、电子设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

Claims (10)

1.一种PCle通信方法,其特征在于,包括:
利用网络传输模块接收通过PCle传输的网络数据包;其中,所述网络传输模块用于将PCIe通信转换为网络通信;
将所述网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,所述操作系统物理内存页作为网络传输模块内存单元。
2.根据权利要求1所述的PCle通信方法,其特征在于,所述利用网络传输模块接收通过PCle传输的网络数据包之前,还包括:
创建所述缓存队列,其中,所述缓存队列中每个元素指向对应的操作系统物理内存页。
3.根据权利要求2所述的PCle通信方法,其特征在于,所述创建所述缓存队列,包括:
创建所述缓存队列;所述缓存队列的元素个数为N,N为正整数;
设置所述网络传输模块内存单元与所述操作系统物理内存页大小相等;
分配m*N个所述操作系统物理内存页,并为所述缓存队列中每个元素指定m个所述操作系统物理内存页,m为正整数。
4.根据权利要求3所述的PCle通信方法,其特征在于,还包括:
当检测到卸载所述网络传输模块时,释放m*N个所述操作系统物理内存页。
5.根据权利要求4所述的PCle通信方法,其特征在于,所述缓存队列为逻辑上首尾相接的缓存队列。
6.根据权利要求1至5任一项所述的PCle通信方法,其特征在于,所述利用网络传输模块接收通过PCle传输的网络数据包之前,还包括:
将所述网络数据包的大小设置为所述操作系统物理内存页的大小。
7.根据权利要求6所述的PCle通信方法,其特征在于,所述将所述网络数据包的大小设置为所述操作系统物理内存页的大小,包括:
确定所述网络通信对应的虚拟网络中链路层的协议头的长度数值;
读取所述网络传输模块内存单元的大小;
计算所述网络传输模块内存单元的大小与所述长度数值的差值,并将所述差值设置为网络数据包的MTU对应的数值。
8.一种PCle通信装置,其特征在于,包括:
数据获取模块,用于利用网络传输模块接收通过PCle传输的网络数据包;其中,所述网络传输模块用于将PCIe通信转换为网络通信;
数据缓存模块,用于将所述网络数据包存储到缓存队列对应的操作系统物理内存页中;其中,所述操作系统物理内存页作为网络传输模块内存单元。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的PCle通信方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的PCle通信方法的步骤。
CN202010236708.2A 2020-03-30 2020-03-30 一种PCIe通信方法、装置、电子设备及可读存储介质 Active CN113468090B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010236708.2A CN113468090B (zh) 2020-03-30 2020-03-30 一种PCIe通信方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010236708.2A CN113468090B (zh) 2020-03-30 2020-03-30 一种PCIe通信方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN113468090A true CN113468090A (zh) 2021-10-01
CN113468090B CN113468090B (zh) 2024-04-05

Family

ID=77864887

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010236708.2A Active CN113468090B (zh) 2020-03-30 2020-03-30 一种PCIe通信方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN113468090B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114124850A (zh) * 2022-01-26 2022-03-01 浙江宇视系统技术有限公司 一种网络通信方法及装置、存储介质
CN115277407A (zh) * 2022-07-25 2022-11-01 北京天融信网络安全技术有限公司 网口配置处理方法、装置、电子设备和存储介质
CN116743587A (zh) * 2023-08-11 2023-09-12 太初(无锡)电子科技有限公司 一种基于异构计算加速卡的虚拟网络接口实现方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101827071A (zh) * 2008-06-09 2010-09-08 飞塔公司 网络协议集合加速
US20150281126A1 (en) * 2014-03-31 2015-10-01 Plx Technology, Inc. METHODS AND APPARATUS FOR A HIGH PERFORMANCE MESSAGING ENGINE INTEGRATED WITHIN A PCIe SWITCH
CN105812225A (zh) * 2016-05-04 2016-07-27 烽火通信科技股份有限公司 与接口无关的虚拟以太网通信部件及其实现通信的方法
CN106933775A (zh) * 2013-10-29 2017-07-07 华为技术有限公司 数据处理系统和数据处理的方法
CN109891394A (zh) * 2016-08-12 2019-06-14 利奇得公司 分解式结构交换计算单元
CN110311843A (zh) * 2018-03-27 2019-10-08 北京深鉴智能科技有限公司 基于PCIe链路的通信方法、装置、电子设备、存储介质
US10439960B1 (en) * 2016-11-15 2019-10-08 Ampere Computing Llc Memory page request for optimizing memory page latency associated with network nodes
CN110888827A (zh) * 2018-09-10 2020-03-17 华为技术有限公司 数据传输方法、装置、设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101827071A (zh) * 2008-06-09 2010-09-08 飞塔公司 网络协议集合加速
CN106933775A (zh) * 2013-10-29 2017-07-07 华为技术有限公司 数据处理系统和数据处理的方法
US20150281126A1 (en) * 2014-03-31 2015-10-01 Plx Technology, Inc. METHODS AND APPARATUS FOR A HIGH PERFORMANCE MESSAGING ENGINE INTEGRATED WITHIN A PCIe SWITCH
CN105812225A (zh) * 2016-05-04 2016-07-27 烽火通信科技股份有限公司 与接口无关的虚拟以太网通信部件及其实现通信的方法
CN109891394A (zh) * 2016-08-12 2019-06-14 利奇得公司 分解式结构交换计算单元
US10439960B1 (en) * 2016-11-15 2019-10-08 Ampere Computing Llc Memory page request for optimizing memory page latency associated with network nodes
CN110311843A (zh) * 2018-03-27 2019-10-08 北京深鉴智能科技有限公司 基于PCIe链路的通信方法、装置、电子设备、存储介质
CN110888827A (zh) * 2018-09-10 2020-03-17 华为技术有限公司 数据传输方法、装置、设备及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114124850A (zh) * 2022-01-26 2022-03-01 浙江宇视系统技术有限公司 一种网络通信方法及装置、存储介质
CN115277407A (zh) * 2022-07-25 2022-11-01 北京天融信网络安全技术有限公司 网口配置处理方法、装置、电子设备和存储介质
CN115277407B (zh) * 2022-07-25 2024-01-23 北京天融信网络安全技术有限公司 网口配置处理方法、装置、电子设备和存储介质
CN116743587A (zh) * 2023-08-11 2023-09-12 太初(无锡)电子科技有限公司 一种基于异构计算加速卡的虚拟网络接口实现方法及装置
CN116743587B (zh) * 2023-08-11 2024-01-26 太初(无锡)电子科技有限公司 一种基于异构计算加速卡的虚拟网络接口实现方法及装置

Also Published As

Publication number Publication date
CN113468090B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
US10324873B2 (en) Hardware accelerated communications over a chip-to-chip interface
CN110647480B (zh) 数据处理方法、远程直接访存网卡和设备
CN111427808B (zh) 用于管理存储设备和主机单元之间的通信的系统和方法
CN113468090B (zh) 一种PCIe通信方法、装置、电子设备及可读存储介质
CN108055214B (zh) 用于对数据进行通信的装置和系统
JP5689526B2 (ja) マルチキュー・ネットワーク・アダプタの動的再構成によるリソース・アフィニティ
CN109726163B (zh) 一种基于spi的通信系统、方法、设备和储存介质
US10664945B2 (en) Direct memory access for graphics processing unit packet processing
US10901624B1 (en) Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
WO2023003603A1 (en) Cache allocation system
CN113010470B (zh) 边缘节点远程控制系统、方法、设备及存储介质
CN113032293A (zh) 缓存管理器及控制部件
CN105630576A (zh) 一种虚拟化平台中的数据处理方法及装置
CN113742269A (zh) 用于epa设备的数据传输方法、处理设备和介质
CN110750367A (zh) 一种队列通信的方法、系统及相关设备
US9875199B2 (en) Data transfer control apparatus
CN112527518A (zh) 用于消息隧道通信的系统和装置
CN104486442A (zh) 分布式存储系统的数据传输方法、装置
CN114925012A (zh) 一种以太网帧的下发方法、上传方法及相关装置
WO2022032990A1 (zh) 一种命令信息传输方法、系统、装置及可读存储介质
US20230342086A1 (en) Data processing apparatus and method, and related device
KR20120134918A (ko) 복수의 프로세서를 포함하는 전자 장치
EP4134804A1 (en) Data access technologies
JP6954535B2 (ja) 通信装置
CN116136790A (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