CN117579570B - 一种基于PCIe的数据传输方法、装置和系统 - Google Patents

一种基于PCIe的数据传输方法、装置和系统

Info

Publication number
CN117579570B
CN117579570B CN202311617177.1A CN202311617177A CN117579570B CN 117579570 B CN117579570 B CN 117579570B CN 202311617177 A CN202311617177 A CN 202311617177A CN 117579570 B CN117579570 B CN 117579570B
Authority
CN
China
Prior art keywords
data
descriptor
data packets
packets
packet
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
Application number
CN202311617177.1A
Other languages
English (en)
Other versions
CN117579570A (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.)
Yusur Technology Co ltd
Original Assignee
Yusur Technology 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 Yusur Technology Co ltd filed Critical Yusur Technology Co ltd
Priority to CN202311617177.1A priority Critical patent/CN117579570B/zh
Publication of CN117579570A publication Critical patent/CN117579570A/zh
Application granted granted Critical
Publication of CN117579570B publication Critical patent/CN117579570B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • H04L47/365Dynamic adaptation of the packet size
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明提供一种基于PCIe的数据传输方法、装置和系统,该方法在设备端执行,设备端的多个端口由主机端的驱动器进行识别以匹配对应的数据缓冲区,该方法包括:将数据包分段为数据小包,描述符生成器根据数据小包生成描述符,描述符仲裁轮询每个端口对应的通道以检测描述符,将检测到的待处理的描述符传递至DMA控制器生成控制信息发送至数据抓取器和数据发送器,数据抓取器从对应通道读取数据小包,并将其传递至数据发送器,数据发送器将数据小包发送至主机端的数据缓冲区以供驱动器对数据进行处理。本发明能够简化传输流程并降低数据传输时延。

Description

一种基于PCIe的数据传输方法、装置和系统
技术领域
本发明涉及计算机通信技术领域,尤其涉及一种基于PCIe的数据传输方法、装置和系统。
背景技术
随着金融证券、数据中心、5G行业等行业对网络的延时要求的不断提高,传统网卡已经不能够满足业务处理的要求,所以需要对网络延时有特殊优化的网卡来加速行业业务的处理。
DMA(直接内存访问)技术允许外部设备直接访问计算机的内存,而无需通过中央处理单元(CPU)的干预,能够提高数据传输的效率,降低延迟,减轻CPU的负担,使其能够执行其他任务,提高计算机系统的整体效率。
传统的DMA中,Host根据数据传输需求产生描述符信息并通知到设备,设备从Host内存指定位置抓取描述符信息,DMA控制器根据描述符信息提供的目的地址、源地址以及长度等信息在Host内存与设备间搬运数据。
相较于传统的DMA,低延时DMA主要通过两个方向来降低数据传输过程中的延时:一种是简化或者优化DMA传输流程中的步骤,像Host直接把描述符通过PIO放到设备中指定位置;另一种是降低数据在内存中的拷贝次数来实现,比如零拷贝技术。其中,C2H方向的DMA需要Host去预填充描述符,并告知设备数据如何组织并发送到Host端的内存中指定位置。加上多个端口通道接收的网络包都需要通过这种方式来把网络数据包放到对应内存的位置,无疑使得数据包延时相对较大,还容易产生较大的抖动。在业务量比较多时,会因为无法及时对网络包进行处理从而导致丢包的现象。
发明内容
鉴于此,本发明实施例提供了一种基于PCIe的数据传输方法、装置和系统,以消除或改善现有技术中存在的一个或更多个缺陷。
本发明的一个方面提供了一种基于PCIe的数据传输方法,所述方法用于在设备端执行,所述设备端的多个端口由主机端的驱动器识别并配置使能,每个端口分别匹配所述主机端预申请的一个数据缓冲区,该方法包括以下步骤:
将每个端口待发送的数据包按照预设规则分段得到数据小包,调用描述符生成器根据所述数据小包生成描述符;
调用所述描述符仲裁器轮询每个端口对应的通道以检测和获取所述描述符,将检测到的所述描述符传至DMA控制器;
调用所述DMA控制器向数据抓取器和数据发送器发送控制信息,指令所述数据抓取器从对应的通道读取所述数据小包,并将转发至所述数据发送器;
调用所述数据发送器将所述数据小包发送到所述主机端,并存储至与该数据小包对应端口匹配的所述数据缓冲区,以供所述驱动器对所述数据缓冲区中所述数据小包进行逐个读取并聚合。
在本发明的一些实施例中,还包括:
所述数据发送器向所述DMA控制器发送反馈信息,并将所述反馈信息传至所述描述符仲裁器;
所述描述符仲裁器收到所述反馈信息,继续轮询各通道以获取下一个所述描述符。
在本发明的一些实施例中,所述数据小包包括数据字段和标签字段;所述数据字段包括有效数据信息;所述标签字段包括数据包ID、时间戳、有效数据的长度、包统计和硬件状态信息。
在本发明的一些实施例中,调用所述数据发送器将所述数据小包发送到所述主机端,并存储至与该数据小包对应端口匹配的所述数据缓冲区,以供所述驱动器对所述数据缓冲区中所述数据小包进行逐个读取并聚合,还包括:
所述数据发送器向所述主机端发送中断信息,所述驱动器根据所述中断信息对所述数据缓冲区中所述数据小包进行逐个读取并聚合。
在本发明的一些实施例中,所述主机端采用默认中断或中断聚合的方式触发中断。
在本发明的一些实施例中,调用所述数据发送器将所述数据小包发送到所述主机端,并存储至与该数据小包对应端口匹配的所述数据缓冲区,以供所述驱动器对所述数据缓冲区中所述数据小包进行逐个读取并聚合,还包括:
所述驱动器轮询所述数据缓冲区以获取所述数据小包,并对所述数据缓冲区中所述数据小包进行逐个读取并聚合。
在本发明的一些实施例中,调用所述数据发送器将所述数据小包发送到所述主机端,并存储至与该数据小包对应端口匹配的所述数据缓冲区,以供所述驱动器对所述数据缓冲区中所述数据小包进行逐个读取并聚合,还包括:
所述数据发送器将所述数据小包按预设顺序放置到所述数据缓冲区中的连续基本单元中;
所述驱动器对所述数据缓冲区中所述数据小包进行处理时,按顺序将其逐个取出并进行偏移处理。
本发明的另一方面提供了一种基于PCIe的数据传输装置,该装置包括:多个端口、描述符生成器、描述符仲裁器、DMA控制器、数据抓取器和数据发送器;
所述描述符生成器用于根据数据小包生成描述符;
所述描述符仲裁器用于每个端口对应的通道以检测和获取所述描述符,将检测到的所述描述符传至DMA控制器;
所述DMA控制器用于向所述数据抓取器和所述数据发送器发送控制信息,指令所述数据抓取器从对应的通道读取所述数据小包,并将转发至所述数据发送器;
所述数据抓取器用于根据所述控制信息从对应通道读取所述数据小包,并将所述数据小包传至所述数据发送器;
所述数据发送器用于将所述数据小包发送到主机端,并存储至与该数据小包对应端口匹配的数据缓冲区,以供驱动器对所述数据缓冲区中所述数据小包进行逐个读取并聚合。
本发明的另一方面提供了一种基于PCIe的数据传输系统,包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该系统实现如上述任一项方法的步骤。
本发明的另一方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上述任一项方法的步骤。
本发明的有益效果至少包括:
本发明提供一种基于PCIe的数据传输方法、装置和系统,该方法在设备端执行,设备端的多个端口由主机端的驱动器进行识别以匹配对应的数据缓冲区,在设备端将数据包分段为数据小包,调用描述符生成器根据数据小包生成描述符,调用描述符仲裁轮询每个端口对应的通道以检测描述符,并将描述符传递至DMA控制器生成控制信息发送至数据抓取器和数据发送器,数据抓取器从对应通道读取数据小包,并将其传递至数据发送器,数据发送器将数据小包发送至主机端的数据缓冲区以供驱动器对数据进行处理。本发明的方法不需要主机端生成描述符,减少了主机端在DMA流程中的操作步骤,简化传输流程,降低了DMA的时延,提高了系统的整体效率。结合数据小包和描述符的公平轮询机制,避免了大包数据或高优先级通道数据对PCIe的独占。将整个数据包分段为数据小包的操作,使得整个数据包在设备端被接收完成前就能够以数据小包为单元传输,可以实现了流水式传输,避免了数据积压,从而降低了PCIe总线以及整个处理器系统在某一时间点的负载压力,提高了PCIe总线的利用率。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例所述于基于PCIe的数据传输方法的流程图。
图2为本发明另一实施例所述基于PCIe的数据传输系统的结构示意图。
图3为本发明另一实施例所述基于PCIe的数据传输方法的初始化配置流程图。
图4为本发明另一实施例所述基于PCIe的数据传输方法的默认执行流程图。
图5为本发明另一实施例所述基于PCIe的数据传输方法在实际场景下执行流程图。
图6(a)(b)为本发明另一实施例所述数据包格式示意图。
图7为本发明另一实施例所述数据大包与数据小包关系示例图。
图8为本发明另一实施例所述描述符示例图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
PCIe(Peripheral Component Interconnect Express)是一种计算机总线标准,用于连接各种硬件设备,例如显卡、网络适配器、存储设备等到计算机主板上。PCIe提供了比传统PCI(Peripheral Component Interconnect)总线更高的数据传输速率。PCIe是一种点对点连接的体系结构,每个设备直接与主板上的PCIe插槽相连,而不是共享总线,有助于提高数据传输效率。
DMA(Direct Memory Access,直接内存访问)是一种计算机系统中的数据传输技术,允许外部设备直接访问系统内存,而无需通过中央处理单元的直接干预。DMA的主要目的是提高数据传输速率,减轻CPU的负担,使其能够执行其他任务。在实际应用中,DMA通常由专用硬件控制器来管理。
本发明的一个实施例的一个方面提供了一种基于PCIe的数据传输方法,该方法用于在设备端执行,设备端的多个端口由主机端的驱动器识别并配置使能,每个端口分别匹配主机端预申请的一个数据缓冲区,该方法包括以下步骤S101~S104:
步骤S101:将每个端口待发送的数据包按照预设规则分段得到数据小包,调用描述符生成器根据数据小包生成描述符。
其中,数据包分段为数据小包,能够防止数据大包在数据传输时长时间独占PCIe总线,以实现高效传输的目的。
其中,描述符是一种抽象的数据结构,用于描述数据的属性、位置、等信息。数据包是所传输的数据的逻辑单位,描述符是对这些数据的一种管理和控制手段。描述符可以包含指向数据包的指针或者包含有关数据包的元信息。本实施例的描述符用于指定数据包的位置、大小和其他相关信息。
步骤S102:调用描述符仲裁器轮询每个端口对应的通道以检测和获取描述符,将检测到的描述符传至DMA控制器。
其中,轮询是一种用于获取或检查信息的技术,在本实施例中描述符作为请求通过各自的描述符通道来到描述符仲裁器,描述符仲裁器轮询每个通道,如果轮询的当前通道有描述符,取出描述符执行传输操作。此时其它通道可能存在有效的描述符,但是只能等待描述符仲裁器轮询到该通道才可以执行对应传输操作。
步骤S103:调用DMA控制器向数据抓取器和数据发送器发送控制信息,指令数据抓取器从对应的通道读取数据小包,并将转发至数据发送器。
步骤S104:调用数据发送器将数据小包发送到主机端,并存储至与该数据小包对应端口匹配的数据缓冲区,以供驱动器对数据缓冲区中数据小包进行逐个读取并聚合。
其中,主机的驱动器指的是计算机系统中的设备驱动程序,负责与外部设备进行通信和协调,将操作系统的请求翻译成硬件能够理解的指令,以及将外部设备的响应翻译成操作系统能够处理的数据。驱动程序为操作系统提供外部设备的接口,使得应用程序可以通过标准的系统调用或API(应用程序接口)来访问设备功能。
在本发明的一些实施例中,还包括:
数据发送器向DMA控制器发送反馈信息,并将反馈信息传至描述符仲裁器。
描述符仲裁器收到反馈信息,继续轮询各通道以获取下一个描述符。
在本发明的一些实施例中,数据小包包括数据字段和标签字段。数据字段(DATA字段)包括有效数据信息,有效数据的实际长度可能小于数据字段的长度。标签字段(TAG字段)包括数据包ID、时间戳、有效数据的长度、包统计和硬件状态信息。数据小包中的数据字段(DATA字段)用于存放实际数据内容,而标签字段(TAG字段)则包含有关数据包的元信息和其他用于实现更多功能的信息。
在本发明的一些实施例中,调用数据发送器将数据小包发送到主机端,并存储至与该数据小包对应端口匹配的数据缓冲区,以供驱动器对数据缓冲区中数据小包进行逐个读取并聚合,还包括:
数据发送器向主机端发送中断信息,驱动器根据中断信息对数据缓冲区中数据小包进行逐个读取并聚合。
其中,中断信息是一种硬件或软件生成的信号,用于打破正常的程序执行流程,引起处理器转而执行一个特定的中断服务例程。中断可以由外部设备、程序错误、或其他需要引起处理器关注的事件触发。在该实施例中,中断信息用于设备端与主机端进行通信,以提醒主机端处理设备端传送的数据包。
在本发明的一些实施例中,主机端采用默认中断或中断聚合的方式触发中断。
其中,默认中断是指主机端预设或默认的中断触发方式。
其中,中断聚合是指将多个中断事件合并或汇总成一个单一中断事件,而不是每次单独处理每个中断,系统可以将相似或相关的中断合并为一个,从而降低中断频率,减少处理开销。该方式有助于提高系统效率,特别是在面临大量中断事件时。
在本发明的一些实施例中,调用数据发送器将数据小包发送到主机端,并存储至与该数据小包对应端口匹配的数据缓冲区,以供驱动器对数据缓冲区中数据小包进行逐个读取并聚合,还包括:
驱动器轮询数据缓冲区以获取数据小包,并对数据缓冲区中数据小包进行逐个读取并聚合。
在本发明的一些实施例中,调用数据发送器将数据小包发送到主机端,并存储至与该数据小包对应端口匹配的数据缓冲区,以供驱动器对数据缓冲区中数据小包进行逐个读取并聚合,还包括:
数据发送器将数据小包按预设顺序放置到数据缓冲区中的连续基本单元中。
驱动器对数据缓冲区中数据小包进行处理时,按顺序将其逐个取出并进行偏移处理。
其中,偏移处理是指数据小包进行偏移量的调整。偏移量是指数据包中的特定部分相对于整个数据包的起始位置的偏移量。
在本发明的一些实施例中,每个数据小包对应的描述符的长度字段都是64B大小,有效数据的长度记录在标签字段(TAG字段)中,由驱动解析。描述符对应的源地址、目的地址与相临的描述符对应的源地址、目的地址的偏移,即数据小包的偏移都是64B。
本发明的实施例的另一方面提供了一种基于PCIe的数据传输装置,该装置包括:多个端口、描述符生成器、描述符仲裁器、DMA控制器、数据抓取器和数据发送器。
描述符生成器用于根据数据小包生成描述符。
描述符仲裁器用于每个端口对应的通道以检测和获取描述符,将检测到的描述符传至DMA控制器。
DMA控制器用于向数据抓取器和数据发送器发送控制信息,指令数据抓取器从对应的通道读取数据小包,并将转发至数据发送器。
数据抓取器用于根据控制信息从对应通道读取数据小包,并将数据小包传至数据发送器。
数据发送器用于将数据小包发送到主机端,并存储至与该数据小包对应端口匹配的数据缓冲区,以供驱动器对数据缓冲区中数据小包进行逐个读取并聚合。
本发明的实施例的另一方面提供了一种基于PCIe的数据传输系统,包括处理器和存储器,存储器中存储有计算机指令,处理器用于执行存储器中存储的计算机指令,当计算机指令被处理器执行时该系统实现如上述任一实施例中方法的步骤。
本发明的实施例的另一方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上述任一实施例中方法的步骤。
本发明的另一个实施例提供了一种基于PCIe的数据传输方法、装置和系统,具体实施方案如下:
该实施例的整体结构示意图如图2所示,PCIe左边的部分位于设备内,包括描述符生成器(Generator)、描述符仲裁器(Arbiter)、DMA控制器(Controller)、数据抓取器(DataFetcher)以及数据发送器(Transmitter)。描述符生成器负责根据数据大包分段而成的数据小包生成描述符,并把描述符送给描述符仲裁器。描述符仲裁器负责轮询各个通道是否有描述符,并负责把描述符转发给DMA控制器。DMA控制器负责给数据抓取器以及数据发送器发送控制信息。数据抓取器负责根据DMA控制器的控制信息去对应的通道抓取数据。数据发送器负责根据DMA控制器的控制信息把数据抓取器返回的数据小包通过PCIe发送到Host端内存的对应地址或队列位置中。
PCIe右边部分为Host端。内存中的数据缓冲区(队列或通道等)存放设备端发送来的数据包,与设备内通道的对应关系视实际情况而定,队列可能与特定用户应用程序或虚机等对象之间也可按照某种对应规则进行对应。Driver负责在初始化阶段配置设备,在实际工作阶段根据中断或轮询进一步处理缓冲区中的数据小包。
实施分为二个大的阶段:初始化配置阶段和实际执行阶段。
其中初始化配阶段的过程如图3所示,主要的行为是驱动加载并对板卡进行识别后,根据设备的端口(物理或虚拟)数量,为设备分配相应的内存资源。
对于实际执行阶段,初始化配置完成之后的默认执行流程如图4所示。Arbiter会持续轮询每个通道,如果检测到有待处理描述符则把描述符送到DMA控制器。DMA控制器根据描述符向数据抓取器和数据发送器发送控制信息。数据抓取器根据控制信息去对应通道读取数据,并把返回的数据送到数据发送器。数据发送器把数据送到内存中的对应位置,然后向Arbiter发送执行完成的反馈,并通知中断发送逻辑向Host发送中断。Arbiter收到反馈后,判定该次传输完成,检测是否有下一个待处理描述符。驱动收到中断后会去内存中对应位置取出数据并进行进一步的处理。
在实际的应用环境中,数据量的大小和发送数据包的频率是不确定的。比如,在大数据量下频繁的中断处理会大量占用CPU资源,进而影响数据传输的效率。故而在实际应用的环境中驱动可以根据实际需求,选择通过配置相关寄存器来告知硬件是否发送中断或发送中断的频率(中断聚合),也可以在Host端选择纯软件方式的中断聚合或以轮询的方式处理数据,相关的执行关系如图5所示。在图中虚线的途径可以采用默认中断方式、中断聚合、纯软件方式中断聚合等;也可采用非虚线途径所呈现的驱动自行轮询数据包;或者采用中断和轮询结合的方式。在实际应用中,可根据实际场景需求对上述方式结合使用或动态进行配置。
如图6(a)所示为每次DMA传输的数据小包的格式。数据小包是从以太网接收的完整的网络包(数据大包)进行分段得来的,其关系如图7所示。其中每个数据小包分别有各自对应的描述符,描述符的长度字段都是64B大小,实际上的有效数据的长度记录在TAG中,由驱动解析。如图8所示,描述符对应的源地址、目的地址与相临的描述符对应的源地址、目的地址的偏移,即数据小包的偏移都是64B。分段的好处是防止大包长时间独占PCIe总线,使得其它通道可能的实时数据得到及时处理。每一桢数据小包由数据字段(DATA字段)和标签字段(TAG字段)组成,数据字段(DATA字段)和标签字段(TAG字段)的长度是固定的。其中,数据字段(DATA字段)的有效数据长度可能小于数据字段(DATA字段)的长度。标签字段(TAG字段)中包含的信息包括数据包的ID、有效数据的长度、标识是否是最后一个数据小包的标志位等,当然也可携带包括但不限于时间戳、包统计、硬件状态等信息。如图6(b)所示,每个DMAC2H逐个把数据小包按顺序以DMA的方式放到数据缓冲区的连续队列单元中,该过程把小包聚合为大包。驱动从缓冲区中把数据小包逐个取出,对其中的数据进行偏移处理后,即可作为一个数据大包发给相应的应用程序。
本发明的实施例所述DMAC2H方案的实际应用,由设备内与DMAC2H逻辑相邻的描述符生成器来生成描述符,把DMA传输流程中描述符阶段延时降到了个位数纳秒级。再加上数据分段的处理方式,一定程度上简化了DMAC2H的逻辑复杂度,从而使得整个传输过程的延时得以降低。同时,以数据小包的形式按顺序逐个放到Host端缓冲区也达到了包聚合的目的。
与上述方法相应地,本发明还提供了一种系统,该系统包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置/系统实现如前所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
综上所述,本发明提供一种基于PCIe的数据传输方法、装置和系统,该方法在设备端执行,设备端的多个端口由主机端的驱动器进行识别以匹配对应的数据缓冲区,该方法包括:将数据包分段为数据小包,描述符生成器根据数据小包生成描述符,描述符仲裁轮询每个端口对应的通道以检测描述符,将描述符传递至DMA控制器生成控制信息发送至数据抓取器和数据发送器,数据抓取器从对应通道读取数据小包,并将其传递至数据发送器,数据发送器将数据小包发送至主机端的数据缓冲区以供驱动器对数据进行处理。本发明能够简化DMA传输流程并降低数据传输时延,将整个数据包分段为数据小包的操作可以实现流水式传输,避免数据积压,降低了PCIe总线以及整个处理器系统的负载压力,提高了PCIe总线的利用率。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于PCIe的数据传输方法,其特征在于,所述方法用于在设备端执行,所述设备端的多个端口由主机端的驱动器识别并配置使能,每个端口分别匹配所述主机端预申请的一个数据缓冲区,该方法包括以下步骤:
将每个端口待发送的数据包按照预设规则分段得到数据小包,调用描述符生成器根据所述数据小包生成描述符;所述数据小包包括数据字段和标签字段,数据字段包括有效数据信息,标签字段包括数据包ID、时间戳、有效数据的长度、包统计和硬件状态信息;
调用描述符仲裁器轮询每个端口对应的通道以检测和获取所述描述符,将检测到的所述描述符传至DMA控制器;
调用所述DMA控制器向数据抓取器和数据发送器发送控制信息,指令所述数据抓取器从对应的通道读取所述数据小包,并将转发至所述数据发送器;
调用所述数据发送器将所述数据小包发送到所述主机端,并存储至与该数据小包对应端口匹配的所述数据缓冲区,以供所述驱动器对所述数据缓冲区中所述数据小包进行逐个读取并聚合;所述数据发送器向所述DMA控制器发送反馈信息,所述DMA控制器将所述反馈信息传至所述描述符仲裁器,所述描述符仲裁器收到所述反馈信息后继续轮询各通道以获取下一个所述描述符;读取并聚合的方式包括:
所述数据发送器向所述主机端发送中断信息,所述驱动器根据所述中断信息对所述数据缓冲区中所述数据小包进行逐个读取并聚合;
或,所述驱动器轮询所述数据缓冲区以获取所述数据小包,并对所述数据缓冲区中所述数据小包进行逐个读取并聚合;
或,所述数据发送器将所述数据小包按预设顺序放置到所述数据缓冲区中的连续基本单元中;所述驱动器对所述数据缓冲区中所述数据小包进行处理时,按顺序将其逐个取出并进行偏移处理。
2.根据权利要求1所述的基于PCIe的数据传输方法,其特征在于,所述数据发送器向所述主机端发送中断信息,所述主机端采用默认中断或中断聚合的方式触发中断。
3.一种基于PCIe的数据传输装置,其特征在于,所述装置包括:多个端口、描述符生成器、描述符仲裁器、DMA控制器、数据抓取器和数据发送器;
所述描述符生成器用于根据数据小包生成描述符;所述数据小包包括数据字段和标签字段,数据字段包括有效数据信息,标签字段包括数据包ID、时间戳、有效数据的长度、包统计和硬件状态信息;
所述描述符仲裁器用于每个端口对应的通道以检测和获取所述描述符,将检测到的所述描述符传至DMA控制器;
所述DMA控制器用于向所述数据抓取器和所述数据发送器发送控制信息,指令所述数据抓取器从对应的通道读取所述数据小包,并将转发至所述数据发送器;
所述数据抓取器用于根据所述控制信息从对应通道读取所述数据小包,并将所述数据小包传至所述数据发送器;
所述数据发送器用于将所述数据小包发送到主机端,并存储至与该数据小包对应端口匹配的数据缓冲区,以供驱动器对所述数据缓冲区中所述数据小包进行逐个读取并聚合;所述数据发送器向所述DMA控制器发送反馈信息,所述DMA控制器将所述反馈信息传至所述描述符仲裁器,所述描述符仲裁器收到所述反馈信息后继续轮询各通道以获取下一个所述描述符;读取并聚合的方式包括:所述数据发送器向所述主机端发送中断信息,所述驱动器根据所述中断信息对所述数据缓冲区中所述数据小包进行逐个读取并聚合;或,所述驱动器轮询所述数据缓冲区以获取所述数据小包,并对所述数据缓冲区中所述数据小包进行逐个读取并聚合;或,所述数据发送器将所述数据小包按预设顺序放置到所述数据缓冲区中的连续基本单元中;所述驱动器对所述数据缓冲区中所述数据小包进行处理时,按顺序将其逐个取出并进行偏移处理。
4.一种基于PCIe的数据传输系统,包括处理器和存储器,其特征在于,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该系统实现如权利要求1至2中任一项所述方法的步骤。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至2中任一项所述方法的步骤。
CN202311617177.1A 2023-11-29 2023-11-29 一种基于PCIe的数据传输方法、装置和系统 Active CN117579570B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311617177.1A CN117579570B (zh) 2023-11-29 2023-11-29 一种基于PCIe的数据传输方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311617177.1A CN117579570B (zh) 2023-11-29 2023-11-29 一种基于PCIe的数据传输方法、装置和系统

Publications (2)

Publication Number Publication Date
CN117579570A CN117579570A (zh) 2024-02-20
CN117579570B true CN117579570B (zh) 2025-10-21

Family

ID=89860621

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311617177.1A Active CN117579570B (zh) 2023-11-29 2023-11-29 一种基于PCIe的数据传输方法、装置和系统

Country Status (1)

Country Link
CN (1) CN117579570B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN120710964A (zh) * 2025-06-05 2025-09-26 北京云豹创芯智能科技有限公司 一种数据包接收方法、数据处理单元、主机及网卡

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10783103B1 (en) * 2017-02-24 2020-09-22 Xilinx, Inc. Split control for direct memory access transfers
CN112970010A (zh) * 2018-11-09 2021-06-15 赛灵思公司 流式传输平台流和架构

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9684615B1 (en) * 2015-01-08 2017-06-20 Altera Corporation Apparatus and methods for multiple-channel direct memory access
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
CN109471816B (zh) * 2018-11-06 2021-07-06 西安微电子技术研究所 一种基于描述符的pcie总线dma控制器及数据传输控制方法
US11386027B2 (en) * 2018-11-28 2022-07-12 Marvell Asia Pte, Ltd. Network switch with endpoint and direct memory access controllers for in-vehicle data transfers
US11392533B1 (en) * 2020-12-30 2022-07-19 Cadence Design Systems, Inc. Systems and methods for high-speed data transfer to multiple client devices over a communication interface
CN116166581B (zh) * 2023-02-24 2025-08-15 北京轩宇空间科技有限公司 用于pcie总线的队列式dma控制器电路及数据传输方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10783103B1 (en) * 2017-02-24 2020-09-22 Xilinx, Inc. Split control for direct memory access transfers
CN112970010A (zh) * 2018-11-09 2021-06-15 赛灵思公司 流式传输平台流和架构

Also Published As

Publication number Publication date
CN117579570A (zh) 2024-02-20

Similar Documents

Publication Publication Date Title
US11899596B2 (en) System and method for facilitating dynamic command management in a network interface controller (NIC)
CN113296884B (zh) 虚拟化方法、装置、电子设备、介质及资源虚拟化系统
US9430432B2 (en) Optimized multi-root input output virtualization aware switch
US8572342B2 (en) Data transfer device with confirmation of write completion and method of controlling the same
CN110888827A (zh) 数据传输方法、装置、设备及存储介质
US11741039B2 (en) Peripheral component interconnect express device and method of operating the same
CN100592273C (zh) 执行dma数据传输的设备和方法
US12487777B2 (en) Apparatus for a first device MMIO mapped with a second device and a method of performing data processing operations therebetween
CN101539902A (zh) 多计算机系统中节点的dma设备及通信方法
US20180181421A1 (en) Transferring packets between virtual machines via a direct memory access device
CN105993148B (zh) 网络接口
CN114662162B (zh) 实现动态分配vf的多算法核高性能sr-iov加解密系统及方法
WO2022032990A1 (zh) 一种命令信息传输方法、系统、装置及可读存储介质
CN117579570B (zh) 一种基于PCIe的数据传输方法、装置和系统
CN104123173A (zh) 一种实现虚拟机间通信的方法及装置
CN117971135B (zh) 存储设备的访问方法、装置、存储介质和电子设备
CN116136790A (zh) 任务处理方法和装置
US10769092B2 (en) Apparatus and method for reducing latency of input/output transactions in an information handling system using no-response commands
US12169465B2 (en) Peripheral component interconnect express device and operating method thereof
US6298409B1 (en) System for data and interrupt posting for computer devices
JP3873589B2 (ja) プロセッサシステム
CN111625486B (zh) 通用串行总线装置及其数据传输方法
CN118509398B (zh) 一种基于rdma的虚拟机通信方法、系统、装置、设备及存储介质
CN119045947B (zh) 一种用于DPU的VirtIO设备的链式描述符管理方法及装置
JP2008502977A (ja) バス・コントローラのための割り込み方式

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