CN113297112A - PCIe总线的数据传输方法、系统及电子设备 - Google Patents

PCIe总线的数据传输方法、系统及电子设备 Download PDF

Info

Publication number
CN113297112A
CN113297112A CN202110524776.3A CN202110524776A CN113297112A CN 113297112 A CN113297112 A CN 113297112A CN 202110524776 A CN202110524776 A CN 202110524776A CN 113297112 A CN113297112 A CN 113297112A
Authority
CN
China
Prior art keywords
descriptor
dma
read
write request
tlp
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
CN202110524776.3A
Other languages
English (en)
Other versions
CN113297112B (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.)
Shanghai Anlu Information Technology Co ltd
Original Assignee
Shanghai Anlu Information 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 Shanghai Anlu Information Technology Co ltd filed Critical Shanghai Anlu Information Technology Co ltd
Publication of CN113297112A publication Critical patent/CN113297112A/zh
Application granted granted Critical
Publication of CN113297112B publication Critical patent/CN113297112B/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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • G06F13/34Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer with priority control
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)

Abstract

本申请公开了PCIe总线的数据传输方法、系统及电子设备,PCIe总线的数据传输方法包括:用DMA传描述符,其中描述符包括文件结束标志;收到第一个描述符开始根据描述符类型发起DMA读或写请求,发完最后一个描述符产生中断;当DMA读或写请求条件同时满足时采取轮询与优先级并举的方式处理,把DMA读请求采用RAM指针的方式进行调度。通过上述方式,本申请所有DMA请求都由FPGA发起,不会因为SOC的不同而需要修改DMA的驱动,同时还考虑了DMA读写请求区域同时有效的情况,扩展了DMA的应用场景,通用性得到明显提成,且不会耗费大量的处理器资源。

Description

PCIe总线的数据传输方法、系统及电子设备
技术领域
本申请涉及高速接口技术领域,尤其涉及PCIe总线的数据传输方法、系统及电子设备
背景技术
Peripheral Component Interconnect Express简称PCIe,是一种高速串行计算机扩展总线标准,是PCI规格的延伸。PCIe总线最初是针对高速的声音与影像数据流处理所设计,后来用以提升量测装置到计算机内存的数据传输率。因PCIe总线的高性能和高带宽(目前最新的GEN5标准,一个通道单向速度可达到32Gbit/s,而且还有相当大的发展潜力,同时PCIe支持x1、x2、x4、x8、x16、x32多种通道模式伸缩性非常强,可以满足不同系统设备对数据传输带宽的不同需求),所以几乎取代了以往所有的内部总线(包括AGP和PCI)。现在英特尔和AMD已采用单芯片组技术,取代原有的南桥/北桥。
PCIe总线使用了高速差分总线,并采用了业界流行的端到端连接方式,每个设备都有自己的专用连接,不需要向整个总线请求带宽。同时,它还使用了一些在网络通信中使用的技术,如支持多种数据路由方式,基于多通路的数据传递方式,和基于报文的数据传送方式,并充分考虑了在数据传送中穿线的服务质量QoS问题。
在以CPU为主控器的PCIe接口数据处理系统中,数据的传输通常采用DMA(DirectMemory Access,直接存储器访问)方式。DMA是一种快速传送数据的机制,由DMA控制器实现,允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载;DMA的应用能够有效减轻处理器的负担,可以大大提高速度传输的效率,从而提高系统性能。
当前在FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)内实现PCIe DMA设计方案中,大多通过CPU传输大量的描述符,一个描述符对应的内存最大4KB,收完描述符后开始DMA传输,传输完所有描述符对应的数据产生中断,没有考虑处理DMA读写同时请求的情况。
目前,CPU传输描述符可以有两种方式:第一种DMA方式,RC端DMA跟SOC绑定了,换一类SOC可能DMA就不一样,通用性不强;第二种非DMA方式,一次传输不到一个描述符,如果描述符较多会耗费大量的处理器资源。
发明内容
本申请提供PCIe总线的数据传输方法、系统及电子设备,以解决现有技术中传输描述符通用性不强或者耗费处理器资源过大的问题。
为解决上述技术问题,本申请提出一种PCIe总线的数据传输方法,包括:用DMA传描述符,其中描述符包括文件结束标志;收到第一个描述符开始根据描述符类型发起DMA读或写请求,发完最后一个描述符产生中断;当DMA读或写请求条件同时满足时采取轮询与优先级并举的方式处理,把DMA读请求采用RAM指针的方式进行调度。
可选地,根据系统存能申请的最大值设置描述符大小。
可选地,用DMA传描述符,包括:通过驱动预先确定描述符并放入系统内存;获得描述符的参数,参数包括TLP的起始地址和长度;将参数整理组包,根据参数组包发起DMA读写请求。
可选地,收到第一个描述符开始根据描述符类型发起DMA读写请求之前,包括:系统内存返回的描述符根据预设的参数判断类型,并把它存入相应的FIFO中;当检测到FIFO非空时,从FIFO中读出描述符,并分离出每个TLP的长度、起始地址和文件结束标志。
可选地,收到第一个描述符开始根据描述符类型发起DMA读写请求,发完最后一个描述符产生中断,包括:TX_ENGING模块组包发起DMA数据读写请求,当读写一个文件结束时通过MSI_INT模块发起中断。
为解决上述技术问题,本申请提出一种PCIe总线的数据传输系统,应用上述的PCIe总线的数据传输方法,PCIe总线的数据传输系统包括:
PARA_CFG模块,连接PCIe的轻量级数据总线接口,用于接收驱动传输的描述符的参数,其中,参数包括TLP的起始地址和长度;或者回传调试信息给驱动,其中,调试信息包括TLP发送过程中的错误信息和程序当前运行的状态信息;PRA_ACQ模块,连接PCIe的配置总线接口,在RC与EP协商完成后,系统软件更新配置空间中的能力寄存器,然后通过数据总线告知FPGA开始读配置空间,FPGA通过配置总线获取MAX_Payload_Size和MAX_Read_Request_Size的值,依据MAX_Payload_Size和MAX_Read_Request_Size判断每次DMA请求的最大有效负载;DSCP_CAL模块,用于根据轻量级数据总线获取的描述符存储地址和长度参数,计算出每个TLP的地址和长度,并送给TX_DSCP模块。
可选地,若TX_ENGING模块组包发起DMA数据读请求,系统内存返回的数据进入RX_ENGINE模块,接着根据读请求TAG的顺序写入各自RAM段,随后其它模块顺序读出使用。
可选地,DSCP_CAL模块还用于在描述符存储参数全部收到时,提取出TLP公共参数、描述符存储块地址和块长度,计算出TLP的基地址和长度并锁存,在接收到请求读描述符信号时,进一步判断是否为最后一个TLP。
可选地,TX_ENGINE模块,连接PCIe的TX1接口,用于接收从描述符中提取的参数,在DMA写请求时,获取TLP基地址、长度、和参数组成TLP包,然后从TX_ARB模块中提取起始号,开始执行DMA写请求。
为解决上述技术问题,本申请提出一种电子设备,包括存储器和处理器,存储器连接处理器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述的方法。
本申请提出PCIe总线的数据传输方法、系统及电子设备,PCIe总线的数据传输方法包括:用DMA传描述符,其中描述符包括文件结束标志;收到第一个描述符开始根据描述符类型发起DMA读或写请求,发完最后一个描述符产生中断;当DMA读或写请求条件同时满足时采取轮询与优先级并举的方式处理,把DMA读请求采用RAM指针的方式进行调度。通过上述方式,本申请所有DMA请求都由FPGA发起,不会因为SOC的不同而需要修改DMA的驱动,同时还考虑了DMA读写请求区域同时有效的情况,扩展了DMA的应用场景,通用性得到明显提成,且不会耗费大量的处理器资源。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请PCIe总线的数据传输方法一实施例的流程示意图;
图2是本申请PCIe总线的数据传输系统一实施例的结构示意图;
图3是描述符读取TLP提取一实施例的流程示意图;
图4为TLP计算一实施例的流程示意图;
图5为DMA数据读请求一实施例的流程示意图;
图6是DMA读写请求仲裁一实施例的流程示意图。
具体实施方式
为使本领域的技术人员更好地理解本申请的技术方案,下面结合附图和具体实施方式对本申请所提供PCIe总线的数据传输方法、系统及电子设备进一步详细描述。
本申请所用到的术语解释如下:
PCIe:一种高速串行计算机扩展总线标准。
EP:端点设备。
RC:根复合体。
TLP:传输层包。
DMA:直接存储器访问,它允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载。
FPGA:现场可编程逻辑门阵列。
FIFO:先入先出队列。
RAM:随机存取存储器。
本申请属于高速接口领域,主要应用在AI加速器,服务器和工业应用,作为主板级互连(连接主板外围设备),无源背板互连以及作为附加板的扩展卡接口。
目前PCIe DMA实现方案存在的不足如下所示:
CPU传输传描述符可以有两种方式:第一种DMA方式,RC端DMA跟SOC绑定了,换一类SOC可能DMA就不一样,通用性不强;第二种非DMA方式,一次传输不到一个描述符,如果描述符较多会耗费大量的处理器资源。
根据机器配置和内核配置不同,驱动可以申请不同大小的连续物理内存,如ubuntu20.4系统可以申请1MB、2MB甚至4MB的内存。如果描述符对应内存大小只有4K,需要传输大量的描述符,并且传描述符这段时间,CPU端不能执行其他工作。
此外,CPU根据需求可能会在读或写没有完成的情况下,又开始请求另外一个类型的DMA;FPGA端发送DMA读请求,返回的CPLD包可能出现顺序混乱(发送TAG顺序与接收TAG顺序不一致),现有技术中并没有提出方案处理这些情况。
针对上面存在的设计和性能的问题,本申请提出了改进的设计方案:用DMA传描述符,根据系统存能申请的最大值设置描述符大小,描述符中插入文件结束标志,收到第一个描述符开始根据描述符类型发起DMA读或写请求,发完最后一个描述符产生中断,当DMA读写请求条件同时满足时采取轮询与优先级并举的方式处理,把DMA读请求采用RAM指针的方式进行调度。
具体地,请参阅图1和图2,图1是本申请PCIe总线的数据传输方法一实施例的流程示意图,图2是本申请PCIe总线的数据传输系统一实施例的结构示意图。在本实施例中,PCIe总线的数据传输系统包括了CPU、SYS-MEM和FPGA,CPU能够分别与SYS-MEM和FPGA进行双向数据传输。
其中,CPU包括了DRIVER模块、OS模块、RC-PHY模块和DRAM_CONTROLLER模块。
FPGA包括了PARA_CFG-参数配置模块,DSCP_CAL-描述符计算模块,TX_DSCP-描述符发送请求模块,RX_DCSP-描述符接收模块,TX_ENGING-数据发送请求模块,MSI_INT-中断模块,RX_ENGINE-数据接收模块,TX_ARB-发送仲裁模块,PARA_ACQ-参数请求模块。
PCIe总线的数据传输方法具体可以包括以下步骤:
S110:用DMA传描述符,其中描述符包括文件结束标志。
通过驱动预先确定描述符并放入系统内存;获得描述符的参数,参数包括TLP的起始地址和长度;将参数整理组包,根据参数组包发起DMA读写请求。可选地,可以根据系统能存能申请的最大值设置描述符大小,从而保持高效的数据传输。
系统内存返回的描述符根据预设的参数判断类型,并把它存入相应的FIFO中;当检测到FIFO非空时,从FIFO中读出描述符,并分离出每个TLP的长度、起始地址和文件结束标志。
S120:收到第一个描述符开始根据描述符类型发起DMA读或写请求,发完最后一个描述符产生中断。
在本实施例中,使用DMA传描述符,收到描述符就开始DMA请求;能够减少CPU的资源消耗,提高了效率,尤其是描述符多的时候更加明显;并且,FPGA作为主设备,几乎所有重量级请求都由FPGA产生或发起,如DMA请求全部由FPGA发起,不会因为SOC的变动,修改驱动;文件中读写请求的开始、结束等也都由FPGA发起,通用性增强。
进一步地,由TX_ENGING模块组包发起DMA数据读写请求,当读写一个文件结束时通过MSI_INT模块发起中断。
S130:当DMA读或写请求条件同时满足时采取轮询与优先级并举的方式处理,把DMA读请求采用RAM指针的方式进行调度。
轮询模式时,发完N个DMA读请求包再发N个DMA写请求包,如此反复;优先级模式时,连续发完高优先级的包再发低优先级的包。其中,DMA读请求采用RAM指针调度的方式能够保证USER端数据连续输出,不出现中断。
通过上述方式,本实施例的所有DMA请求都由FPGA发起,不会因为SOC的不同而需要修改DMA的驱动,同时还考虑了DMA读写请求区域同时有效的情况,扩展了DMA的应用场景,通用性得到明显提成,且不会耗费大量的处理器资源。
进一步地,下面开始详细介绍各模块:
PARA_CFG模块,连接PCIe的轻量级数据总线接口,主要用于:1)接收驱动传输的描述符的参数,其中,参数包括TLP的起始地址和长度;2)回传调试信息给驱动,其中,调试信息包括TLP发送过程中的错误信息和程序当前运行的状态信息。
PARA_ACQ模块,连接PCIe的配置总线接口,在RC与EP协商完成后,系统软件更新配置空间中的能力寄存器,然后通过数据总线告知FPGA开始读配置空间,FPGA通过配置总线获取MAX_Payload_Size和MAX_Read_Request_Size的值,依据MAX_Payload_Size和MAX_Read_Request_Size判断每次DMA请求的最大有效负载。
DSCP_CAL模块,用于根据轻量级数据总线获取的描述符存储地址和长度参数,计算出每个TLP的地址和长度,并送给TX_DSCP模块。其中,计算过程如图3所示,图3是描述符读取TLP提取一实施例的流程示意图。
在本实施例中,DSCP_CAL模块首先判断描述符存储参数是否全部收到;若是,则提取出TLP公共参数,描述符存储块地址和块长度;计算出TLP的基地址和长度并锁存;接着判断是否收到请求读描述符信号,若是,则进一步判断是否为最后一个TLP;若为最后一个TLP,则本次计算完成,等待下一次计算开始,若不是最后一个TLP,则返回继续计算出TLP的基地址和长度并锁存。
根据上面的流程,把读描述符请求的TLP准备好后,紧接着组包并发起DMA描述符读请求,它对应TX_DSCP模块,与PCIe的高速TX1总线接口相连接。由于DMA描述符读请求两次之间的间隔较长,所以不存在返回数据包顺序错乱的情况,无需做特殊处理。
DMA描述符读请求发出之后,返回的描述符进入RX_DSCP模块,与他相连的是PCIe的高速RX总线接口。该模块主要用于分离描述符内每个TLP长度和基地址,描述符格式如下表1和表2所示:
0x8 ctrl_cmd tlp_para
0x0 dest_addr blck_len
表1描述符格式
Figure BDA0003064262710000061
表2描述符表存储方式
表1中的ctrl_cmd[0]为文件最后一个描述符标志位,ctrl_cmd[1]描述符有效位(当检测到无效描述符直接舍去),ctrl_cmd[2]为读写描述符区别标志位,其它暂时没有使用;tlp_para存储各类TLP包头的低32bit信息,如TC字段、Attr字段等,后续可根据需要修改;dest_addr对应描述符块状起始地址,blck_len对应块长度。当存在许多描述符时会构成描述符表,描述符表存储方式如上表2所示。
描述符首先根据类型存储在各自FIFO中,然后按照当前DMA请求方式读出分解与计算,具体流程如图4所示,图4为TLP计算一实施例的流程示意图。
在图4的实施例中,首先判断fifo是否非空,若是,则读出一个描述符,并对描述符进行分割,分割出块长度、参数与控制和块基地址。其中,
1)分割出块长度后,判断描述符是否为最后一个包,若是,则计算实际包长度,直至包发完结束;若描述符不是最后一个包,则取协商后的最大包长度,直至包发完结束。
2)分割出块基地址后,计算基地址,并判断包是否发完,若是,则进一步判断描述符是否为最后一个包,若是,则流程结束。
当从描述符中提取出TLP后,这些参数将被送入TX_ENGINE模块,与它对接的是PCIe的TX1接口。TX_ENGINE模块由两部分组成DMA读和写,DMA写请求,根据上面模块获取的TLP基地址、长度、和参数组成TLP包,然后从TX_ARB模块中提取起始号,开始DMA写请求。
上文提到的TX_ARB模块,实现了DMA读和写请求的调度,它的输入信号为RX_DSCP模块送出的读写请求起始和结束信号、各自TLP完成信号和工作模式信号,经过优先级与轮询抉择后送出DMA读写请求的区域信号,它的工作方式下文将会详细描述。
DMA读请求与写请求类似,最大的不同点在于读请求有包返回。在进行DMA读请求时,为了提高效率涉及到利用RAM指针调度,详细流程如下图5所示,图5为DMA数据读请求一实施例的流程示意图。
在图5中,涉及到RX_ENGINE模块,它对应的是RX接口,接收读请求返回的数据并依据TAG(每个TAG包的大小由TLP-Length大小决定)不同,分别存入RAM不同的段。
判断仲裁模块是否分配了读请求区域(读请求起始信号是从读请求区域中提取出的),若是,则进一步判断接收数据RAM是否8段全满,若否,则产生DMA读请求,此时指针+1。
接收数据按TAG分别存储到各自空间,判断TAG n包是否存储完,若是,则开始突发读出,并直至TAG n读完,此时指针-1。
在上面模块工作时,可能发生读写请求区域同时有效的情况,此时需要TX_ARB模块处理,它采取下面的处理方式,流程如下图6所示,图6是DMA读写请求仲裁一实施例的流程示意图。图中所示读写文件区域为从文件的第一个请求开始,到所有描述符发完结束;N个读写请求包对应上文所述的读写请求区域N的值可配置。
当DMA读或写请求完成之后,将会进入MSI_INT模块产生中断,与它对接的是PCIe的中断接口,此处采用读和写各分配一个中断向量。
综上,本申请的所有DMA请求都由FPGA发起,不会因为SOC的不同而需要修改DMA的驱动,通用性强;同时,本申请也考虑了DMA读写请求区域同时有效的情况,扩展了DMA的应用场景,增加了通用性;紧接着,本申请的描述符预留了很多字段,为后续描述符应用的增强提供了方便,如把ctrl_para[3]配置成中断描述符标志位等。
另一方面提升性能,本申请用DMA传描述符,描述符大小依据驱动能够申请的最大值,描述符少、传输耗时短且效率高;USER收到描述符就开始DMA请求而不是等收到所有描述符,也能减少一定的时间;在进行DMA读请求时,USER先发起8次读请求(根据需求可分成更多段),蓄满RAM,然后等到RAM释放一段后立即请求一次,从而使得堆栈里面一直有数据不会出现读RAM数据中断的情况,这样也保持了高效的数据传输。
为了测试SOC(大多采用非DMA)方式传描述符与USER端通过DMA传描述符的性能差异,本申请以X86 CPU传描述符为例做了一个实验,两种方式分别读或者写PCIe的BAR空间,测试发现CPU的连续两次写32bit(不到一个描述符,实际描述符为128bit)数据间隔8个周期,CPU读一个32bit数据更是需要10倍的时间,而DMA读写请求速率基本一致,突发传输最大负载可达4096byte,数据位宽64bit,数据之间基本没有中断,当描述符多时更加明显,由此可见非DMA方式与DMA方式差距巨大。
此外,本申请提出一种电子设备。电子设备包括存储器和处理器,存储器连接处理器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述的方法。具体步骤和原理已在上面详细介绍,在此不再赘述。
可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。文中所使用的步骤编号也仅是为了方便描述,不对作为对步骤执行先后顺序的限定。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种PCIe总线的数据传输方法,其特征在于,包括:
用DMA传描述符,其中所述描述符包括文件结束标志;
收到第一个所述描述符开始根据所述描述符类型发起DMA读或写请求,发完最后一个所述描述符产生中断;
当DMA读或写请求条件同时满足时采取轮询与优先级并举的方式处理,把DMA读请求采用RAM指针的方式进行调度。
2.根据权利要求1所述的PCIe总线的数据传输方法,其特征在于,包括:
根据系统存能申请的最大值设置描述符大小。
3.根据权利要求1所述的PCIe总线的数据传输方法,其特征在于,所述用DMA传描述符,包括:
通过驱动预先确定描述符并放入系统内存;
获得所述描述符的参数,所述参数包括TLP的起始地址和长度;
将所述参数整理组包,根据参数组包发起DMA读写请求。
4.根据权利要求3所述的PCIe总线的数据传输方法,其特征在于,所述收到第一个所述描述符开始根据所述描述符类型发起DMA读写请求之前,包括:
所述系统内存返回的描述符根据预设的参数判断类型,并把它存入相应的FIFO中;
当检测到所述FIFO非空时,从所述FIFO中读出描述符,并分离出每个TLP的长度、起始地址和文件结束标志。
5.根据权利要求1所述的PCIe总线的数据传输方法,其特征在于,所述收到第一个所述描述符开始根据所述描述符类型发起DMA读写请求,发完最后一个所述描述符产生中断,包括:
TX_ENGING模块组包发起DMA数据读写请求,当读写一个文件结束时通过MSI_INT模块发起中断。
6.一种PCIe总线的数据传输系统,其特征在于,应用上述权利要求1-5任一项所述的PCIe总线的数据传输方法,所述PCIe总线的数据传输系统包括:
PARA_CFG模块,连接PCIe的轻量级数据总线接口,用于接收驱动传输的描述符的参数,其中,所述参数包括TLP的起始地址和长度;或者回传调试信息给所述驱动,其中,所述调试信息包括TLP发送过程中的错误信息和程序当前运行的状态信息;
PRA_ACQ模块,连接PCIe的配置总线接口,在RC与EP协商完成后,系统软件更新配置空间中的能力寄存器,然后通过数据总线告知FPGA开始读配置空间,FPGA通过配置总线获取MAX_Payload_Size和MAX_Read_Request_Size的值,依据MAX_Payload_Size和MAX_Read_Request_Size判断每次DMA请求的最大有效负载;
DSCP_CAL模块,用于根据轻量级数据总线获取的描述符存储地址和长度参数,计算出每个TLP的地址和长度,并送给TX_DSCP模块。
7.根据权利要求6所述的PCIe总线的数据传输系统,其特征在于,还包括:
若TX_ENGING模块组包发起DMA数据读请求,系统内存返回的数据进入RX_ENGINE模块,接着根据读请求TAG的顺序写入各自RAM段,随后其它模块顺序读出使用。
8.根据权利要求6所述的PCIe总线的数据传输系统,其特征在于,还包括:
所述DSCP_CAL模块还用于在所述描述符存储参数全部收到时,提取出TLP公共参数、描述符存储块地址和块长度,计算出TLP的基地址和长度并锁存,在接收到请求读描述符信号时,进一步判断是否为最后一个TLP。
9.根据权利要求6所述的PCIe总线的数据传输系统,其特征在于,
TX_ENGINE模块,连接PCIe的TX1接口,用于接收从描述符中提取的参数,在DMA写请求时,获取TLP基地址、长度、和参数组成TLP包,然后从TX_ARB模块中提取起始号,开始执行DMA写请求。
10.一种电子设备,其特征在于,包括存储器和处理器,所述存储器连接所述处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现权利要求1-5中任一项所述的方法。
CN202110524776.3A 2021-04-15 2021-05-13 PCIe总线的数据传输方法、系统及电子设备 Active CN113297112B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110404350 2021-04-15
CN2021104043504 2021-04-15

Publications (2)

Publication Number Publication Date
CN113297112A true CN113297112A (zh) 2021-08-24
CN113297112B CN113297112B (zh) 2022-05-17

Family

ID=77322055

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110524776.3A Active CN113297112B (zh) 2021-04-15 2021-05-13 PCIe总线的数据传输方法、系统及电子设备

Country Status (1)

Country Link
CN (1) CN113297112B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113660351A (zh) * 2021-10-18 2021-11-16 湖南兴天电子科技有限公司 数据通信方法、装置、通信终端及计算机可读存储介质
CN113961494A (zh) * 2021-10-21 2022-01-21 上海安路信息科技股份有限公司 一种pcie总线与axi总线的桥接系统
CN114398303A (zh) * 2022-01-19 2022-04-26 扬州万方科技股份有限公司 一种实现低延时的数据传输方法及系统
CN115905039A (zh) * 2022-11-16 2023-04-04 逸超医疗科技(北京)有限公司 一种基于PCIe接口高速获取超声数据的方法
CN116225345A (zh) * 2023-05-08 2023-06-06 珠海妙存科技有限公司 一种eMMC的数据存储方法、控制器及可读存储介质

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1378748A (zh) * 1999-10-07 2002-11-06 汤姆森特许公司 在数字视频系统中生成特技模式的方法和设备
CN1713164A (zh) * 2005-07-21 2005-12-28 复旦大学 可自主处理多事务传输要求的dma控制器及数据传输方法
CN101317166A (zh) * 2005-09-29 2008-12-03 P.A.Semi公司 统一dma
CN102841871A (zh) * 2012-08-10 2012-12-26 无锡众志和达存储技术股份有限公司 基于高速串行总线的DMA结构的pipeline读写方法
CN102841870A (zh) * 2012-08-10 2012-12-26 无锡众志和达存储技术股份有限公司 基于高速串行总线的通用dma结构及预读方法
CN103885919A (zh) * 2014-03-20 2014-06-25 北京航空航天大学 一种多dsp和fpga并行处理系统及实现方法
CN104468404A (zh) * 2014-11-07 2015-03-25 迈普通信技术股份有限公司 一种缓冲区配置方法及装置
CN105009100A (zh) * 2013-11-28 2015-10-28 株式会社日立制作所 计算机系统及计算机系统的控制方法
CN108763121A (zh) * 2018-04-28 2018-11-06 西安电子科技大学 TTE端系统适配卡PCIe控制器的中断操作方法
CN109471816A (zh) * 2018-11-06 2019-03-15 西安微电子技术研究所 一种基于描述符的pcie总线dma控制器及数据传输控制方法
CN110362512A (zh) * 2019-07-18 2019-10-22 成都谐盈科技有限公司 一种面向sca和sdr的快速系统重构方法
CN111309656A (zh) * 2020-03-20 2020-06-19 北京光润通科技发展有限公司 一种pfga通用dam ip核
CN111651377A (zh) * 2020-06-28 2020-09-11 中国人民解放军国防科技大学 一种用于片内报文处理的弹性共享缓存架构

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1378748A (zh) * 1999-10-07 2002-11-06 汤姆森特许公司 在数字视频系统中生成特技模式的方法和设备
CN1713164A (zh) * 2005-07-21 2005-12-28 复旦大学 可自主处理多事务传输要求的dma控制器及数据传输方法
CN101317166A (zh) * 2005-09-29 2008-12-03 P.A.Semi公司 统一dma
CN102841871A (zh) * 2012-08-10 2012-12-26 无锡众志和达存储技术股份有限公司 基于高速串行总线的DMA结构的pipeline读写方法
CN102841870A (zh) * 2012-08-10 2012-12-26 无锡众志和达存储技术股份有限公司 基于高速串行总线的通用dma结构及预读方法
CN105009100A (zh) * 2013-11-28 2015-10-28 株式会社日立制作所 计算机系统及计算机系统的控制方法
CN103885919A (zh) * 2014-03-20 2014-06-25 北京航空航天大学 一种多dsp和fpga并行处理系统及实现方法
CN104468404A (zh) * 2014-11-07 2015-03-25 迈普通信技术股份有限公司 一种缓冲区配置方法及装置
CN108763121A (zh) * 2018-04-28 2018-11-06 西安电子科技大学 TTE端系统适配卡PCIe控制器的中断操作方法
CN109471816A (zh) * 2018-11-06 2019-03-15 西安微电子技术研究所 一种基于描述符的pcie总线dma控制器及数据传输控制方法
CN110362512A (zh) * 2019-07-18 2019-10-22 成都谐盈科技有限公司 一种面向sca和sdr的快速系统重构方法
CN111309656A (zh) * 2020-03-20 2020-06-19 北京光润通科技发展有限公司 一种pfga通用dam ip核
CN111651377A (zh) * 2020-06-28 2020-09-11 中国人民解放军国防科技大学 一种用于片内报文处理的弹性共享缓存架构

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113660351A (zh) * 2021-10-18 2021-11-16 湖南兴天电子科技有限公司 数据通信方法、装置、通信终端及计算机可读存储介质
CN113660351B (zh) * 2021-10-18 2022-01-04 湖南兴天电子科技有限公司 数据通信方法、装置、通信终端及计算机可读存储介质
CN113961494A (zh) * 2021-10-21 2022-01-21 上海安路信息科技股份有限公司 一种pcie总线与axi总线的桥接系统
CN113961494B (zh) * 2021-10-21 2023-09-15 上海安路信息科技股份有限公司 一种pcie总线与axi总线的桥接系统
CN114398303A (zh) * 2022-01-19 2022-04-26 扬州万方科技股份有限公司 一种实现低延时的数据传输方法及系统
CN114398303B (zh) * 2022-01-19 2022-10-28 扬州万方科技股份有限公司 一种实现低延时的数据传输方法及系统
CN115905039A (zh) * 2022-11-16 2023-04-04 逸超医疗科技(北京)有限公司 一种基于PCIe接口高速获取超声数据的方法
CN116225345A (zh) * 2023-05-08 2023-06-06 珠海妙存科技有限公司 一种eMMC的数据存储方法、控制器及可读存储介质
CN116225345B (zh) * 2023-05-08 2023-08-11 珠海妙存科技有限公司 一种eMMC的数据存储方法、控制器及可读存储介质

Also Published As

Publication number Publication date
CN113297112B (zh) 2022-05-17

Similar Documents

Publication Publication Date Title
CN113297112B (zh) PCIe总线的数据传输方法、系统及电子设备
US9513869B2 (en) Doorbell-less endpoint-initiated protocol for storage devices
US7752374B2 (en) Method and apparatus for host messaging unit for peripheral component interconnect busmaster devices
US20080162753A1 (en) Method for Performing Full Transfer Automation in a USB Controller
JP4837659B2 (ja) 分割トランザクションを処理するためのバス・コントローラ
JP2008511925A (ja) バス上のメモリプリフェッチコマンドを送信するための方法および装置
WO2005071557A2 (en) A multiple address two channel bus structure
CN102841871B (zh) 基于高速串行总线的DMA结构的pipeline读写方法
US6889266B1 (en) Method for delivering packet boundary or other metadata to and from a device using direct memory controller
US20080162737A1 (en) USB Controller with Full Transfer Automation
WO2005071556A1 (en) A two channel bus structure to support address information, data, and transfer qualifiers
WO2001006377A1 (en) Multi-cast dma - a method for reducing bandwidth and processing overhead in digital systems
WO2005078594A1 (en) Scalable bus structure
CN113590512B (zh) 可直连外设设备的自启动dma装置及应用
US7860120B1 (en) Network interface supporting of virtual paths for quality of service with dynamic buffer allocation
US7124232B2 (en) Bus connection circuit and bus connection system having plural request queues, a bus interface portion outputting request signals, an arbiter performing arbitration of plural requests and a bus interface portion outputting a request signal indicating allocation of pre-fetch buffers corresponding to arbitrated requests
US20070011386A1 (en) Usb host controller with memory for transfer descriptors
US7610415B2 (en) System and method for processing data streams
US7774513B2 (en) DMA circuit and computer system
US20030221038A1 (en) Interface device having variable data transfer mode and operation method thereof
CN116166581A (zh) 用于pcie总线的队列式dma控制器电路及数据传输方法
EP0690382B1 (en) Computer system with a multiplexed address bus and pipelined write operations
US6742074B2 (en) Bus to system memory delayed read processing
US11386034B2 (en) High throughput circuit architecture for hardware acceleration
JP2002149591A (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