CN115543877B - 一种pcie数据传输方法及相关装置 - Google Patents
一种pcie数据传输方法及相关装置 Download PDFInfo
- Publication number
- CN115543877B CN115543877B CN202211508023.4A CN202211508023A CN115543877B CN 115543877 B CN115543877 B CN 115543877B CN 202211508023 A CN202211508023 A CN 202211508023A CN 115543877 B CN115543877 B CN 115543877B
- Authority
- CN
- China
- Prior art keywords
- pcie
- data
- data packet
- packet
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 172
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000004891 communication Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 5
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000002054 transplantation Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
Abstract
本申请公开了一种PCIE数据传输方法,涉及计算机技术领域,该方法包括:判断待传输的PCIE数据包的长度是否小于预设长度;若是,则通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;若否,则通过DMA方式对所述PCIE数据包进行数据读写。以提高PCIE带宽的利用率,提高主机运行的可靠性。本申请还公开了另一种PCIE数据传输方法、两种PCIE数据传输装置、计算设备以及计算机可读存储介质,具有以上有益效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种PCIE数据传输方法、另一种PCIE数据传输方法、两种PCIE数据传输装置、计算设备以及计算机可读存储介质。
背景技术
PCIE(peripheral component interconnect express,高速串行计算机扩展总线标准)是一种常用的高速传输协议,通常用于主机与各种外部设备之间的数据传输,如pcie接口内存、网卡、GPU(graphics processing unit,图形处理器)、FPGA(FieldProgrammable Gate Array,现场可编程逻辑门阵列)等一系列设备。在pcie与外部设备通信过程中,一般会使用DMA(Direct Memory Access,直接存储器访问)技术来进行数据的搬移。在数据搬移过程中,cpu(central processing unit,中央处理器)将总线控制权限交给DMA控制器,DMA控制器搬移完数据后上报中断给cpu。该过程可以释放cpu的压力,提高传输效率。
相关技术中,一般采用DMA实现方式主要分为块dma、链式dma。但是,无论是块DMA还是链式DMA,在传输小包时,带宽利用率都会严重下降,造成极大的性能浪费。同时,频繁使用DMA搬移小包数据还有可能导致cpu接收大量中断,极其容易导致主机挂死,降低数据传输的稳定性。
因此,如何提高带宽利用率,提高主机的运行可靠性是本领域技术人员关注的重点问题。
发明内容
本申请的目的是提供一种PCIE数据传输方法、另一种PCIE数据传输方法、两种PCIE数据传输装置、计算设备以及计算机可读存储介质,以提高PCIE带宽的利用率,提高主机运行的可靠性。
为解决上述技术问题,本申请提供一种PCIE数据传输方法,包括:
判断待传输的PCIE数据包的长度是否小于预设长度;
若是,则通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;
若否,则通过DMA方式对所述PCIE数据包进行数据读写。
可选的,通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输,包括:
当所述PCIE数据包为写数据时,通过所述基址寄存器的空间向对应的地址写入所述PCIE数据包;
当所述PCIE数据包为读数据时,通过所述基址寄存器的空间从对应的地址读取所述PCIE数据包。
可选的,当所述PCIE数据包为写数据时,通过所述基址寄存器的空间向对应的地址写入所述PCIE数据包,包括:
当所述PCIE数据包为写数据时,将所述PCIE数据包写入所述基址寄存器的空间;
将所述基址寄存器的空间中的所述PCIE数据包放入写数据通道,并通过所述写数据通道将所述PCIE数据包传输至对应的地址。
可选的,当所述PCIE数据包为写数据时,将所述PCIE数据包写入所述基址寄存器的空间,包括:
当所述PCIE数据包为写数据时,通过向写地址通道配置对应的地址;
将所述PCIE数据包写入所述基址寄存器的空间。
可选的,还包括:
读取所述基址寄存器的空间的数据个数;
当所述数据个数为零时,发送数据写入完成消息。
可选的,当所述PCIE数据包为读数据时,通过所述基址寄存器的空间从对应的地址读取所述PCIE数据包,包括:
当所述PCIE数据包为读数据时,控制读地址通道获取所述PCIE数据包;
将所述PCIE数据包放入到所述基址寄存器的空间;
将所述基址寄存器的空间中的所述PCIE数据包返回至上位机。
可选的,当所述PCIE数据包为读数据时,控制读地址通道获取所述PCIE数据包,包括:
当所述PCIE数据包为读数据时,配置读数据的初始地址和总长度;
基于所述读数据的初始地址和总长度控制读地址通道获取所述PCIE数据包。
可选的,还包括:
读取所述基址寄存器的空间的数据个数;
当所述数据个数为零时,发送数据读取完成消息。
可选的,通过DMA方式对所述PCIE数据包进行数据读写,包括:
通过块DMA方式对所述PCIE数据包进行数据读写。
可选的,通过DMA方式对所述PCIE数据包进行数据读写,包括:
通过链式DMA方式对所述PCIE数据包进行数据读写。
可选的,判断待传输的PCIE数据包的长度是否小于预设长度,包括:
判断待传输的PCIE数据包的长度是否小于DMA传输的最小包长度。
可选的,判断待传输的PCIE数据包的长度是否小于预设长度,包括:
FPGA设备判断待传输的PCIE数据包的长度是否小于预设长度。
可选的,所述FPGA设备的接口总线为标准AXI总线。
本申请还提供一种PCIE数据传输方法,包括:
上位机设备向下位设备发送数据传输指令,以便所述下位设备判断所述数据传输指令对应的待传输的PCIE数据包的长度是否小于预设长度;若是,则通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;若否,则通过DMA方式对所述PCIE数据包进行数据读写;返回传输完成消息;
接收到所述传输完成消息。
本申请还提供一种PCIE数据传输装置,包括:
包长度判断模块,用于判断待传输的PCIE数据包的长度是否小于预设长度;
小数据包传输模块,用于当所述PCIE数据包的长度小于预设长度时,通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;
大数据包传输模块,用于当所述PCIE数据包的长度大于等于预设长度时,通过DMA方式对所述PCIE数据包进行数据读写。
本申请还提供一种PCIE数据传输装置,包括:
传输指令发送模块,用于向下位设备发送数据传输指令,以便所述下位设备判断所述数据传输指令对应的待传输的PCIE数据包的长度是否小于预设长度;若是,则通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;若否,则通过DMA方式对所述PCIE数据包进行数据读写;返回传输完成消息;
传输完成模块,用于接收到所述传输完成消息。
本申请还提供一种PCIE外接设备,包括:
PCIE通信模块,用于实现与主机通信的物理链路层和协议层;
总线协议互联模块,用于总线之间的互联;
协议转化模块,用于将基址寄存器的空间的读写数据转化到DMA读写数据接口;
存储控制接口模块,用于将存储接口转化为标准axi总线接口。
可选的,所述协议转化模块,包括:
寄存器控制模块,用于对基址寄存器的空间进行配置;
写控制模块,用于控制写地址通道、写响应通道,以及将基址寄存器的空间中的数据放入写数据通道;
读控制模块,用于控制读地址通道以及将读数据通道内数据放入到基址寄存器的空间中。
本申请还提供一种计算设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的PCIE数据传输方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的PCIE数据传输方法的步骤。
本申请所提供的一种PCIE数据传输方法,包括:判断待传输的PCIE数据包的长度是否小于预设长度;若是,则通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;若否,则通过DMA方式对所述PCIE数据包进行数据读写。
通过先判断待传输的PCIE数据包的长度是否小于预设长度,如果小于预设长度则说明该数据包为小数据包,则通过基址寄存器的空间将该PCIE数据包进行传输,而不采用DMA的方式进行传输,当大于预设长度时,通过DMA方式将PCIE数据包进行数据读写,实现了对小数据包采用非DMA的方式进行数据传输,避免了DMA方式存在的问题,提高了数据传输的效率,降低了因多次大量DMA请求存在的问题。提高了传输的稳定性。
本申请还提供另一种PCIE数据传输方法、两种PCIE数据传输装置、计算设备以及计算机可读存储介质,具有以上有益效果,在此不作赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种PCIE数据传输方法的流程图;
图2为本申请实施例所提供的一种PCIE数据传输方法的系统框图;
图3为本申请实施例所提供的一种PCIE数据传输方法的协议转化模块的结构示意图;
图4为本申请实施例所提供的另一种PCIE数据传输方法的流程图;
图5为本申请实施例所提供的一种PCIE数据传输装置的结构示意图;
图6本申请实施例所提供的一种计算设备的结构示意图。
具体实施方式
本申请的核心是提供一种PCIE数据传输方法、另一种PCIE数据传输方法、两种PCIE数据传输装置、计算设备以及计算机可读存储介质,以提高PCIE带宽的利用率,提高主机运行的可靠性。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术中,一般采用DMA实现方式主要分为块dma、链式dma。但是,无论是块DMA还是链式DMA,在传输小包时,带宽利用率都会严重下降,造成极大的性能浪费。同时,频繁使用DMA搬移小包数据还有可能导致cpu接收大量中断,极其容易导致主机挂死,降低数据传输的稳定性。
因此,本申请提供一种PCIE数据传输方法,通过先判断待传输的PCIE数据包的长度是否小于预设长度,如果小于预设长度则说明该数据包为小数据包,则通过基址寄存器的空间将该PCIE数据包进行传输,而不采用DMA的方式进行传输,当大于预设长度时,通过DMA方式将PCIE数据包进行数据读写,实现了对小数据包采用非DMA的方式进行数据传输,避免了DMA方式存在的问题,提高了数据传输的效率,降低了因多次大量DMA请求存在的问题。提高了传输的稳定性。
以下通过一个实施例,对本申请提供的一种PCIE数据传输方法进行说明。
请参考图1,图1为本申请实施例所提供的一种PCIE数据传输方法的流程图。
本实施例中,该方法可以包括:
S101,判断待传输的PCIE数据包的长度是否小于预设长度;
本步骤旨在判断待传输的PCIE数据包的长度是否小于预设长度。也就是判断该PCIE数据包是否为小数据包。
其中,预设长度可以是基于技术人员的经验设定,也可以基于历史的传输数据中存在大量请求的数据包大小进行设定。
进一步的,本步骤可以包括:
判断待传输的PCIE数据包的长度是否小于DMA传输的最小包长度。
可见,本步骤可以包括判断待传输的PCIE数据包的长度是否小于DMA传输的最小包长度。其中,DMA传输过程中存在按照固定的数据包长度进行数据搬运的过程。因此,存在多个不同长度的数据包大小,本可选方案中选择最小的包长度即可。
进一步的,本步骤可以包括:
FPGA设备判断待传输的PCIE数据包的长度是否小于预设长度。
可见,本可选方案中主要是说明可以通过FPGA设备判断待传输的PCIE数据包的长度是否小于预设长度。其中,还可以是数字IC(Integrated Circuit,集成电路)。
其中,FPGA设备的接口总线为标准AXI(Advanced eXtensible Interface,一种总线协议)总线。
S102,若是,则通过基址寄存器的空间和协议转化器将PCIE数据包进行数据传输;
在S101的基础上,本步骤旨在通过基址寄存器的空间和协议转化器将PCIE数据包进行数据传输。当该数据包的长度小于预设长度时,通过基址寄存器的空间和协议转化器将PCIE数据包进行数据传输。也就是,采用设备中具备的基址寄存器的空间对数据包进行搬运。
其中,基址寄存器(BAR,base address register,基地址寄存器)的空间用于下位设备的寄存器配置。
可见,通过本步骤可以直接采用下位设备中的基址寄存器的空间进行小数据的传输,而不用采用DMA的方式进行传输,提高了数据传输的效率。
进一步的,本步骤可以包括:
S1021,当PCIE数据包为写数据时,通过基址寄存器的空间向对应的地址写入PCIE数据包;
S1022,当PCIE数据包为读数据时,通过基址寄存器的空间从对应的地址读取PCIE数据包。
可见,本可选方案主要是为了说明不同读写情况如何进行处理。本可选方案中,当PCIE数据包为写数据时,通过基址寄存器的空间向对应的地址写入PCIE数据包;当PCIE数据包为读数据时,通过基址寄存器的空间从对应的地址读取PCIE数据包。
其中,当写数据时,也就是将数据从基址寄存器的空间传输至对应的写数据通道。当读数据时,将数据从读数据通道传输至基址寄存器的空间。可见,该过程中通过基址寄存器的空间进行数据的搬运,而不需要采用DMA等的方式进行数据传输。
进一步的,S1021可以包括:
步骤1,当PCIE数据包为写数据时,将PCIE数据包写入基址寄存器的空间;
步骤2,将基址寄存器的空间中的PCIE数据包放入写数据通道,并通过写数据通道将PCIE数据包传输至对应的地址。
可见,本可选方案主要是为了说明如何写数据。本可选方案中,当PCIE数据包为写数据时,将PCIE数据包写入基址寄存器的空间;将基址寄存器的空间中的PCIE数据包放入写数据通道,并通过写数据通道将PCIE数据包传输至对应的地址。
进一步的,该上一可选方案中的步骤1可以包括:
步骤1,当PCIE数据包为写数据时,通过向写地址通道配置对应的地址;
步骤2,将PCIE数据包写入基址寄存器的空间。
可见,本可选方案主要是为了说明如何写数据。本可选方案中,当PCIE数据包为写数据时,通过向写地址通道配置对应的地址;将PCIE数据包写入基址寄存器的空间。
进一步的,本实施例还可以包括:
步骤1,读取基址寄存器的空间的数据个数;
步骤2,当数据个数为零时,发送数据写入完成消息。
可见,本可选方案主要是为了说明如何写数据完成。本可选方案中,读取基址寄存器的空间的数据个数;当数据个数为零时,发送数据写入完成消息。
进一步的,S1022可以包括:
步骤1,当PCIE数据包为读数据时,控制读地址通道获取PCIE数据包;
步骤2,将PCIE数据包放入到基址寄存器的空间;
步骤3,将基址寄存器的空间中的PCIE数据包返回至上位机。
可见,本可选方案主要是为了说明如何读数据。本可选方案中,当PCIE数据包为读数据时,控制读地址通道获取PCIE数据包;将PCIE数据包放入到基址寄存器的空间;将基址寄存器的空间中的PCIE数据包返回至上位机。
进一步的,上一可选方案中的步骤1可以包括:
步骤1,当PCIE数据包为读数据时,配置读数据的初始地址和总长度;
步骤2,基于读数据的初始地址和总长度控制读地址通道获取PCIE数据包。
可见,本可选方案主要是为了说明如何读数据。本可选方案中,当PCIE数据包为读数据时,配置读数据的初始地址和总长度;基于读数据的初始地址和总长度控制读地址通道获取PCIE数据包。
进一步的,本实施例还可以包括:
步骤1,读取基址寄存器的空间的数据个数;
步骤2,当数据个数为零时,发送数据读取完成消息。
可见,本可选方案主要是为了说明如何读数据完成。本可选方案中,读取基址寄存器的空间的数据个数;当数据个数为零时,发送数据读取完成消息。
S103,若否,则通过DMA方式对PCIE数据包进行数据读写。
在S101的基础上,本步骤旨在通过DMA方式对PCIE数据包进行数据读写。也就是,在其他情况下采用DMA的方式进行数据传输,避免了对小数据包进行大量的请求。
进一步的,本步骤可以包括:
通过块DMA方式对PCIE数据包进行数据读写。
可见,本可选方案中,通过块DMA方式对PCIE数据包进行数据读写。
其中,块DMA方式的过程是每一次DMA请求开始后,只能传输上位机的1个连续的物理内存块,如果要传输下一个内存块,则必须重新初始化内存并配置好DMA寄存器,再次启动DMA才可以完成。
进一步的,本步骤可以包括:
通过链式DMA方式对PCIE数据包进行数据读写。
可见,本可选方案中,通过链式DMA方式对PCIE数据包进行数据读写。
其中,链式DMA方式通过多个描述符把要传输的离散的物理内存块进行一个一个的描述并形成描述符表,把第1个描述符的地址装载到DMA的描述符基址寄存器里面,然后开启DMA请求,DMA一次便可以完成n个内存块的传输。
上述数据传输方法可以用于与本实施例提供的一种PCIE外接设备,包括:
PCIE通信模块,用于实现与主机通信的物理链路层和协议层;
总线协议互联模块,用于总线之间的互联;
协议转化模块,用于将基址寄存器的空间的读写数据转化到DMA读写数据接口;
存储控制接口模块,用于将存储接口转化为标准axi总线接口。
其中,所述协议转化模块,包括:
寄存器控制模块,用于对基址寄存器的空间进行配置;
写控制模块,用于控制写地址通道、写响应通道,以及将基址寄存器的空间中的数据放入写数据通道;
读控制模块,用于控制读地址通道以及将读数据通道内数据放入到基址寄存器的空间中。
综上,本实施例通过先判断待传输的PCIE数据包的长度是否小于预设长度,如果小于预设长度则说明该数据包为小数据包,则通过基址寄存器的空间将该PCIE数据包进行传输,而不采用DMA的方式进行传输,当大于预设长度时,通过DMA方式将PCIE数据包进行数据读写,实现了对小数据包采用非DMA的方式进行数据传输,避免了DMA方式存在的问题,提高了数据传输的效率,降低了因多次大量DMA请求存在的问题。提高了传输的稳定性。
以下通过另一具体的实施例,对本申请提供的一种PCIE数据传输方法做进一步说明。
本实施例中,该方法可以包括:
S201,上位机设备向下位设备发送数据传输指令,以便下位设备判断数据传输指令对应的待传输的PCIE数据包的长度是否小于预设长度;若是,则通过基址寄存器的空间和协议转化器将PCIE数据包进行数据传输;若否,则通过DMA方式对PCIE数据包进行数据读写;返回传输完成消息;
S202,接收到传输完成消息。
可见,本实施例通过先判断待传输的PCIE数据包的长度是否小于预设长度,如果小于预设长度则说明该数据包为小数据包,则通过基址寄存器的空间将该PCIE数据包进行传输,而不采用DMA的方式进行传输,当大于预设长度时,通过DMA方式将PCIE数据包进行数据读写,实现了对小数据包采用非DMA的方式进行数据传输,避免了DMA方式存在的问题,提高了数据传输的效率,降低了因多次大量DMA请求存在的问题。提高了传输的稳定性。
以下通过另一具体的实施例,对本申请提供的一种PCIE数据传输方法做进一步说明。
请参考图2,图2为本申请实施例所提供的一种PCIE数据传输方法的系统框图。
本实施例中,主要应用于具备PCIE接口的FPGA/数字IC设备与主机通信,目的是在数据量低于1024B时,提高PCIE的的传输效率,同时兼顾大数据量的传输效率,也就是说本设计负责数据量低于1024B的包传输,大于1024B的数据包依旧采用DMA的传输方式。为了最大程度的兼容,本实施例会将两种方式在设备端统一总线接口。
如图2所示,PCIE IP是FPGA/数字IC与主机通信的物理链路层与协议层,此外还包括BAR空间读写机制与DMA控制器,负责主机与设备的PCIE各种通信;AXI-LiteInterconnect模块与AXI-MM Interconnect模块为AXI协议互联模块,用于总线之间的互联,总线根据方向分为master与slave,图中M代表master,S代表Slave;AXI-Lite2MM模块为协议转化模块,将axi-lite接口转化为axi-mm接口,目的是将Bar空间寄存器读写数据统一到DMA读写数据接口;DDR Controller与RAM Controller为存储控制接口模块,目的是将存储接口转化为标准axi总线接口,方便系统集成。
请参考图3,图3为本申请实施例所提供的一种PCIE数据传输方法的协议转化模块的结构示意图。
其中,AXI-Lite2MM模块可以参考图3。其中寄存器控制模块接口为axi-lite总线,该总线用于bar空间配置寄存器,该模块定义的寄存器如下:
表1 寄存器定义表
其中,写控制模块主要作用是控制写地址通道、写响应通道,以及将wr_fifo中数据放入写数据通道。读控制模块主要作用是控制读地址通道以及将读数据通道内数据放入到rd_fifo中。
请参考图4,图4为本申请实施例所提供的另一种PCIE数据传输方法的流程图。
基于上述模块说明,本实施例中的数据传输过程可以包括:
步骤1,判断包长大小是否低于1024B,如果大于1024B,执行DMA流程搬移数据,如果小于1024B,执行利用BAR空间读写传输数据,即执行步骤2。
步骤2,判断读数据或者写数据,如果是上位机向设备写数据,执行步骤3.1至步骤3.4,如果是上位机读设备数据,执行步骤4.1至步骤4.3。
步骤3.1,配置向设备写入的存储初始地址,包括高32bit与低32bit,配置要写入的数据总长度。
步骤3.2,通过寄存器WR_DATA将上位机的数据写入到WR_FIFO中,每写一次WR_DATA,对应数据就会写入WR_FIFO中。
步骤3.3,使能WR_START寄存器,写控制模块会将WR_FIFO中的数据放入AXI-MM总线,直到将WR_FIFO中的数据写入设备对应的存储地址中,此时也会控制写地址通道自动累加地址以及处理写响应等。
步骤3.4,使能WR_START后可通过Wr_fifo_num寄存器读取WR_FIFO中数据个数,当数据个数为零时说明已经将所有数据放入axi-mm总线,数据写入结束。
步骤4.1,配置从设备存储读数据的初始地址,包括高32bit与低32bit,配置要读数据的总长度。
步骤4.2,使能WR_START寄存器,读控制模块会控制读地址通道自动累加地址读取AXI-MM总线上数据,AXI-MM总线将设备对应存储数据通过读数据通道返回,读控制模块将返回数据写入RD_FIFO中。
步骤4.3,通过读取RD_DATA寄存器将RD_FIFO中数据返回到上位机中,每读一次RD_DATA寄存器,就会有一个数据从RD_FIFO中返回到上位机,读取对应长度数据即结束;此外,可通过RD_fifo_num寄存器验证是否读完。
其中,本实施例接口采用标准AXI总线,将该设计与DMA统一成AXI-MM接口,方便系统级别集成、移植与维护。其中的传输方式无需PCIE中断,避免大量上报中断导致主机挂死。同时,在数据量低于1024B以下时比单纯DMA传输效率更高,经过实验验证,在传输数据低于1024B时,本设计的带宽是DMA传输的1.5-20倍,数据量越小,本设计效率越高。
并且,少量数据传输过程中DMA传输带宽不稳定,采用本设计可以保证少量数据传输过程中的带宽稳定性。
本实施例并不抛弃DMA传输方式,而是在DMA传输方式上做补充,仅在传输数据低于1024B时用本设计中BAR空间寄存器读写的方式,克服DMA传输方式中少量数据传输中带宽低、带宽不稳定以及中断上报多的问题。
可见,本实施例通过先判断待传输的PCIE数据包的长度是否小于预设长度,如果小于预设长度则说明该数据包为小数据包,则通过基址寄存器的空间将该PCIE数据包进行传输,而不采用DMA的方式进行传输,当大于预设长度时,通过DMA方式将PCIE数据包进行数据读写,实现了对小数据包采用非DMA的方式进行数据传输,避免了DMA方式存在的问题,提高了数据传输的效率,降低了因多次大量DMA请求存在的问题。提高了传输的稳定性。
下面对本申请实施例提供的PCIE数据传输装置进行介绍,下文描述的PCIE数据传输装置与上文描述的PCIE数据传输方法可相互对应参照。
请参考图5,图5为本申请实施例所提供的一种PCIE数据传输装置的结构示意图。
本实施例中,该装置可以包括:
包长度判断模块100,用于判断待传输的PCIE数据包的长度是否小于预设长度;
小数据包传输模块200,用于当PCIE数据包的长度小于预设长度时,通过基址寄存器的空间和协议转化器将PCIE数据包进行数据传输;
大数据包传输模块300,用于当PCIE数据包的长度大于等于预设长度时,通过DMA方式对PCIE数据包进行数据读写。
可选的,该小数据包传输模块200,可以包括:
写数据单元,用于当PCIE数据包为写数据时,通过基址寄存器的空间向对应的地址写入PCIE数据包;
读数据单元,用于当PCIE数据包为读数据时,通过基址寄存器的空间从对应的地址读取PCIE数据包。
可选的,该写数据单元,具体用于当PCIE数据包为写数据时,将PCIE数据包写入基址寄存器的空间;将基址寄存器的空间中的PCIE数据包放入写数据通道,并通过写数据通道将PCIE数据包传输至对应的地址。
可选的,该当PCIE数据包为写数据时,将PCIE数据包写入基址寄存器的空间,可以包括:
当PCIE数据包为写数据时,通过向写地址通道配置对应的地址;将PCIE数据包写入基址寄存器的空间。
可选的,该写数据单元,还包括:
写数据完成单元,用于读取基址寄存器的空间的数据个数;当数据个数为零时,发送数据写入完成消息。
可选的,该读数据单元,具体用于当PCIE数据包为读数据时,控制读地址通道获取PCIE数据包;将PCIE数据包放入到基址寄存器的空间;将基址寄存器的空间中的PCIE数据包返回至上位机。
可选的,该当PCIE数据包为读数据时,控制读地址通道获取PCIE数据包,包括:
当PCIE数据包为读数据时,配置读数据的初始地址和总长度;基于读数据的初始地址和总长度控制读地址通道获取PCIE数据包。
可选的,该读数据单元,还包括:
读数据完成单元,用于读取基址寄存器的空间的数据个数;当数据个数为零时,发送数据读取完成消息。
可选的,该大数据包传输模块300,具体用于通过块DMA方式对PCIE数据包进行数据读写。
可选的,该大数据包传输模块300,具体用于通过链式DMA方式对PCIE数据包进行数据读写。
可选的,该包长度判断模块100,具体用于判断待传输的PCIE数据包的长度是否小于DMA传输的最小包长度。
本实施例中,还提供另一种PCIE数据传输装置,可以包括:
传输指令发送模块,用于向下位设备发送数据传输指令,以便下位设备判断数据传输指令对应的待传输的PCIE数据包的长度是否小于预设长度;若是,则通过基址寄存器的空间和协议转化器将PCIE数据包进行数据传输;若否,则通过DMA方式对PCIE数据包进行数据读写;返回传输完成消息;
传输完成模块,用于接收到传输完成消息。
可见,本实施例通过先判断待传输的PCIE数据包的长度是否小于预设长度,如果小于预设长度则说明该数据包为小数据包,则通过基址寄存器的空间将该PCIE数据包进行传输,而不采用DMA的方式进行传输,当大于预设长度时,通过DMA方式将PCIE数据包进行数据读写,实现了对小数据包采用非DMA的方式进行数据传输,避免了DMA方式存在的问题,提高了数据传输的效率,降低了因多次大量DMA请求存在的问题。提高了传输的稳定性。
本申请还提供了一种计算设备,请参考图6,图6本申请实施例所提供的一种计算设备的结构示意图,该计算设备可包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时可实现如上述任意一种PCIE数据传输方法的步骤。
如图6所示,为计算设备的组成结构示意图,计算设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
在本申请实施例中,处理器10可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行异常IP识别方法的实施例中的操作。
存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:
判断待传输的PCIE数据包的长度是否小于预设长度;
若是,则通过基址寄存器的空间和协议转化器将PCIE数据包进行数据传输;
若否,则通过DMA方式对PCIE数据包进行数据读写。
在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能所需的应用程序等;存储数据区可存储使用过程中所创建的数据。
此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
通信接口12可以为通信模块的接口,用于与其他设备或者系统连接。
当然,需要说明的是,图6所示的结构并不构成对本申请实施例中计算设备的限定,在实际应用中计算设备可以包括比图6所示的更多或更少的部件,或者组合某些部件。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如上述任意一种PCIE数据传输方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种PCIE数据传输方法、另一种PCIE数据传输方法、两种PCIE数据传输装置、计算设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (19)
1.一种PCIE数据传输方法,其特征在于,包括:
判断待传输的PCIE数据包的长度是否小于预设长度;
若是,则通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;
若否,则通过DMA方式对所述PCIE数据包进行数据读写;
其中,通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输,包括:
当所述PCIE数据包为写数据时,通过所述基址寄存器的空间向对应的地址写入所述PCIE数据包;
当所述PCIE数据包为读数据时,通过所述基址寄存器的空间从对应的地址读取所述PCIE数据包。
2.根据权利要求1所述的PCIE数据传输方法,其特征在于,当所述PCIE数据包为写数据时,通过所述基址寄存器的空间向对应的地址写入所述PCIE数据包,包括:
当所述PCIE数据包为写数据时,将所述PCIE数据包写入所述基址寄存器的空间;
将所述基址寄存器的空间中的所述PCIE数据包放入写数据通道,并通过所述写数据通道将所述PCIE数据包传输至对应的地址。
3.根据权利要求2所述的PCIE数据传输方法,其特征在于,当所述PCIE数据包为写数据时,将所述PCIE数据包写入所述基址寄存器的空间,包括:
当所述PCIE数据包为写数据时,通过向写地址通道配置对应的地址;
将所述PCIE数据包写入所述基址寄存器的空间。
4.根据权利要求2所述的PCIE数据传输方法,其特征在于,还包括:
读取所述基址寄存器的空间的数据个数;
当所述数据个数为零时,发送数据写入完成消息。
5.根据权利要求1所述的PCIE数据传输方法,其特征在于,当所述PCIE数据包为读数据时,通过所述基址寄存器的空间从对应的地址读取所述PCIE数据包,包括:
当所述PCIE数据包为读数据时,控制读地址通道获取所述PCIE数据包;
将所述PCIE数据包放入到所述基址寄存器的空间;
将所述基址寄存器的空间中的所述PCIE数据包返回至上位机。
6.根据权利要求5所述的PCIE数据传输方法,其特征在于,当所述PCIE数据包为读数据时,控制读地址通道获取所述PCIE数据包,包括:
当所述PCIE数据包为读数据时,配置读数据的初始地址和总长度;
基于所述读数据的初始地址和总长度控制读地址通道获取所述PCIE数据包。
7.根据权利要求5所述的PCIE数据传输方法,其特征在于,还包括:
读取所述基址寄存器的空间的数据个数;
当所述数据个数为零时,发送数据读取完成消息。
8.根据权利要求1所述的PCIE数据传输方法,其特征在于,通过DMA方式对所述PCIE数据包进行数据读写,包括:
通过块DMA方式对所述PCIE数据包进行数据读写。
9.根据权利要求1所述的PCIE数据传输方法,其特征在于,通过DMA方式对所述PCIE数据包进行数据读写,包括:
通过链式DMA方式对所述PCIE数据包进行数据读写。
10.根据权利要求1所述的PCIE数据传输方法,其特征在于,判断待传输的PCIE数据包的长度是否小于预设长度,包括:
判断待传输的PCIE数据包的长度是否小于DMA传输的最小包长度。
11.根据权利要求1所述的PCIE数据传输方法,其特征在于,判断待传输的PCIE数据包的长度是否小于预设长度,包括:
FPGA设备判断待传输的PCIE数据包的长度是否小于预设长度。
12.根据权利要求11所述的PCIE数据传输方法,其特征在于,所述FPGA设备的接口总线为标准AXI总线。
13.一种PCIE数据传输方法,其特征在于,包括:
上位机设备向下位设备发送数据传输指令,以便所述下位设备判断所述数据传输指令对应的待传输的PCIE数据包的长度是否小于预设长度;若是,则通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;若否,则通过DMA方式对所述PCIE数据包进行数据读写;返回传输完成消息;
接收到所述传输完成消息;
其中,通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输,包括:
当所述PCIE数据包为写数据时,通过所述基址寄存器的空间向对应的地址写入所述PCIE数据包;
当所述PCIE数据包为读数据时,通过所述基址寄存器的空间从对应的地址读取所述PCIE数据包。
14.一种PCIE数据传输装置,其特征在于,包括:
包长度判断模块,用于判断待传输的PCIE数据包的长度是否小于预设长度;
小数据包传输模块,用于当所述PCIE数据包的长度小于预设长度时,通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;
大数据包传输模块,用于当所述PCIE数据包的长度大于等于预设长度时,通过DMA方式对所述PCIE数据包进行数据读写;
其中,通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输,包括:
当所述PCIE数据包为写数据时,通过所述基址寄存器的空间向对应的地址写入所述PCIE数据包;
当所述PCIE数据包为读数据时,通过所述基址寄存器的空间从对应的地址读取所述PCIE数据包。
15.一种PCIE数据传输装置,其特征在于,包括:
传输指令发送模块,用于向下位设备发送数据传输指令,以便所述下位设备判断所述数据传输指令对应的待传输的PCIE数据包的长度是否小于预设长度;若是,则通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输;若否,则通过DMA方式对所述PCIE数据包进行数据读写;返回传输完成消息;
传输完成模块,用于接收到所述传输完成消息;
其中,通过基址寄存器的空间和协议转化器将所述PCIE数据包进行数据传输,包括:
当所述PCIE数据包为写数据时,通过所述基址寄存器的空间向对应的地址写入所述PCIE数据包;
当所述PCIE数据包为读数据时,通过所述基址寄存器的空间从对应的地址读取所述PCIE数据包。
16.一种PCIE外接设备,其特征在于,包括:
PCIE通信模块,用于实现与主机通信的物理链路层和协议层;
总线协议互联模块,用于总线之间的互联;
协议转化模块,用于将基址寄存器的空间的读写数据转化到DMA读写数据接口;
存储控制接口模块,用于将存储接口转化为标准axi总线接口;
所述PCIE外接设备基于所述PCIE通信模块、所述总线协议互联模块、所述协议转化模块以及所述存储控制接口模块实现如权利要求1至12任一项所述的PCIE数据传输方法的步骤。
17.根据权利要求16所述的PCIE外接设备,其特征在于,所述协议转化模块,包括:
寄存器控制模块,用于对基址寄存器的空间进行配置;
写控制模块,用于控制写地址通道、写响应通道,以及将基址寄存器的空间中的数据放入写数据通道;
读控制模块,用于控制读地址通道以及将读数据通道内数据放入到基址寄存器的空间中。
18.一种计算设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至12任一项所述的PCIE数据传输方法的步骤。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至12任一项所述的PCIE数据传输方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211508023.4A CN115543877B (zh) | 2022-11-29 | 2022-11-29 | 一种pcie数据传输方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211508023.4A CN115543877B (zh) | 2022-11-29 | 2022-11-29 | 一种pcie数据传输方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115543877A CN115543877A (zh) | 2022-12-30 |
CN115543877B true CN115543877B (zh) | 2023-03-10 |
Family
ID=84721729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211508023.4A Active CN115543877B (zh) | 2022-11-29 | 2022-11-29 | 一种pcie数据传输方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543877B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971745A (zh) * | 2024-03-29 | 2024-05-03 | 浪潮电子信息产业股份有限公司 | 一种数据处理系统、方法、装置、设备及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102420763B (zh) * | 2011-12-07 | 2014-05-07 | 中国航空无线电电子研究所 | Dma发送方法 |
CN103685578B (zh) * | 2014-01-08 | 2017-08-04 | 珠海全志科技股份有限公司 | 主从设备的数据传输方法 |
CN109471816B (zh) * | 2018-11-06 | 2021-07-06 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
CN111045964B (zh) * | 2019-12-06 | 2021-07-20 | 上海国微思尔芯技术股份有限公司 | 一种基于pcie接口高速传输方法、存储介质及终端 |
CN113986533A (zh) * | 2021-10-15 | 2022-01-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、dma控制器及计算机可读存储介质 |
-
2022
- 2022-11-29 CN CN202211508023.4A patent/CN115543877B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115543877A (zh) | 2022-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6925512B2 (en) | Communication between two embedded processors | |
CN110083461B (zh) | 一种基于fpga的多任务处理系统及方法 | |
KR102427550B1 (ko) | 재구성 가능한 멀티 포트들을 구비한 PCIe 스토리지 시스템을 위한 서비스 품질을 인식하는 입출력 관리 | |
US10802995B2 (en) | Unified address space for multiple hardware accelerators using dedicated low latency links | |
US10951741B2 (en) | Computer device and method for reading or writing data by computer device | |
CN113297112B (zh) | PCIe总线的数据传输方法、系统及电子设备 | |
CN115543877B (zh) | 一种pcie数据传输方法及相关装置 | |
CN107908589B (zh) | I3c验证从设备、主从设备的通信验证系统及方法 | |
CN101452430B (zh) | 多处理器之间的通信方法与包括多处理器的通信装置 | |
CN108733600B (zh) | 具有直接存储器访问控制器的电子系统及其操作方法 | |
CN101937413A (zh) | 一种i2c总线的通信方法 | |
CN103106164A (zh) | 一种高效dma控制器 | |
CN107066413B (zh) | 一种用于处理多个总线设备数据的方法及其总线系统 | |
US10049076B2 (en) | Methods and systems for implementing high speed serial interface bus having inhomogeneous lane bundles and encodings | |
CN105718396B (zh) | 一种大数据主设备传输的i2c总线装置及其通讯方法 | |
US20100228901A1 (en) | Input output control apparatus with a plurality of ports and single protocol processing circuit | |
US10176133B2 (en) | Smart device with no AP | |
US11811897B2 (en) | Method for data processing of frame receiving of an interconnection protocol and storage device | |
WO2024113704A1 (zh) | 一种pcie数据传输方法及相关装置 | |
CN113971148A (zh) | 基于linux实时操作系统的PCIE实时网卡数据传输方法及装置 | |
CN104850517A (zh) | 一种dma传输报文数据的方法及装置 | |
CN113485957B (zh) | 适用于工业级应用场景的用于物理层的多协议系统控制装置和多协议系统控制方法 | |
JP2006119724A (ja) | Cpuシステム、バスブリッジ、その制御方法、及びコンピュータシステム | |
WO2024012015A1 (zh) | 一种存储系统、主控芯片、数据存储方法及数据读取方法 | |
CN216014148U (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 |