CN111694777B - 基于PCIe接口的DMA传输方法 - Google Patents

基于PCIe接口的DMA传输方法 Download PDF

Info

Publication number
CN111694777B
CN111694777B CN201910180262.3A CN201910180262A CN111694777B CN 111694777 B CN111694777 B CN 111694777B CN 201910180262 A CN201910180262 A CN 201910180262A CN 111694777 B CN111694777 B CN 111694777B
Authority
CN
China
Prior art keywords
data
address
sram
writing
cache
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
CN201910180262.3A
Other languages
English (en)
Other versions
CN111694777A (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.)
Suzhou Weiying Laser Technology Co ltd
Original Assignee
Suzhou Weiying Laser 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 Suzhou Weiying Laser Technology Co ltd filed Critical Suzhou Weiying Laser Technology Co ltd
Priority to CN201910180262.3A priority Critical patent/CN111694777B/zh
Publication of CN111694777A publication Critical patent/CN111694777A/zh
Application granted granted Critical
Publication of CN111694777B publication Critical patent/CN111694777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种基于PCIe接口的DMA传输方法,检测主机下发的DMA读指令信息,根据所述DMA读指令信息生成存储器读请求包,为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息并且从CPLD额外信息RAM的A端口写入;接收主机响应的带数据的完成包并且提取其中的TAG字段,以所述提取到的TAG字段作为地址,从CPLD额外信息RAM的B端口读取之前写入的SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER;将所述DDR缓存地址作为地址,将数据写入与之对应的地址单元,待DDR中缓存达到阈值后对数据进行后续处理。

Description

基于PCIe接口的DMA传输方法
技术领域
本发明属于信息通信技术领域,具体涉及一种基于PCIe接口的DMA传输方法。
背景技术
根据PICe协议规范,完成者响应给请求者的带数据的完成包(CPLD)并不是按照请求者发送请求包的先后顺序到达,因此需要对完成包所携带的数据载荷进行一个排序处理。
除上述问题外,还有DMA读完成“碎包”问题,即发送一个请求所接收到的响应的数据由若干个CPLD分多次下发给请求者,因此需要组合这些“碎包”。
解决乱序的常规方法:
目前大多数场合对乱序问题的常规处理方法是使用SRAM完成的,为每个固定的TAG分配一段固定的SRAM地址,接收到一个CPLD时将其中的的TAG字段提取出,对照后将数据载荷写入为该TAG预先分配好的地址单元中。
常规方法的缺点:
1、为了获得高的数据传输速率,上述常规方法很多情况下需要较多的SRAM做缓存;
2、接收到的数据要先积攒到一定的数量后才能够下发给次级模块,造成较大的时延,使用乒乓操作可以消除相当一部分时延,但是SRAM使用量将增加一倍;
3、在使用到多路DMA的情况下,上述常规方法则要将有限的TAG化为多组,分配给各路DMA通道,在某一路或几路DMA通道在某个时刻并没有大流量数据传输需求时分配给这些通道的TAG资源就处于闲置状态,造成其它通道传输效率降低,且每一路DMA通道都需要专门供该路数据做排序和缓存的SRAM,SRAM使用量较多,同时对于低流量的通道SRAM使用率也会很低,这在一定程度上浪费了SRAM资源。
而目前公开的资料中没有关于解决DMA读完成“碎包”问题的具体方法,暂时不了解其他厂商如何进行“碎包”处理。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于PCIe接口的DMA传输方法。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供一种基于PCIe接口的DMA传输方法,该方法为:检测主机下发的DMA读指令信息,根据所述DMA读指令信息生成存储器读请求包,为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息并且从CPLD额外信息RAM的A端口写入;接收主机响应的带数据的完成包并且提取其中的TAG字段,以所述提取到的TAG字段作为地址,从CPLD额外信息RAM的B端口读取之前写入的SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER;将所述DDR缓存地址作为地址,将数据写入与之对应的地址单元,待DDR中缓存达到阈值后对数据进行后续处理。
上述方案中,所述接收主机响应的带数据的完成包并且提取其中的TAG字段,之后,该方法还包括:判断该带数据的完成包是否为存储器读请求包的最后一帧数据。
上述方案中,如果带数据的完成包为存储器读请求包的最后一帧数据,将提取的TAG字段写入TAG管理FIFO,供后续生成MRD请求包时使用。
上述方案中,所述为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,具体为:为每个存储器读请求包分配TAG字段并生成从主机主存空间获取数据的地址;为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息。
上述方案中,所述从CPLD额外信息RAM的A端口写入,具体为:以分配的TAG字段作为一个CPLD额外信息RAM的地址,将所述SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息从CPLD额外信息RAM的A端口写入。
上述方案中,所述以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER,具体为:根据CPLD额外信息RAM中的预留写SRAM起始位置信息,确定数据写入当前地址所对应的存储单元的位置,根据当前数据写入的位置和长度生成下一组数据写入的起始位置和地址,即更新写SRAM起始位置信息和SRAM缓存地址;如果当前数据为相应存储器读请求包的最后一帧数据,则数据缓存完成后读取数据将数据和对应数据的DDR缓存地址发送到下一级,否则以当前数据对应的TAG字段作为地址从CPLD额外信息RAM的B端口更新写SRAM起始位置信息和SRAM缓存地址写入CPLD额外信息RAM。
上述方案中,所述SRAM缓存地址和SRAM读取地址一致。
上述方案中,所述CPLD额外信息RAM为一适当数据宽度的双口RAM。
与现有技术相比,本发明能够有效解决DMA读数据的乱序和碎包问题,适合在需要使用PCIe接口进行数据传输的场合使用;减少对FPGA内部的资源消耗,尤其对于多路DMA设计,做到了FPGA内部数据缓存SRAM的共用,因此不增加额外的SRAM对每一路数据进行专门的缓存;适合对FPGA内部资源消耗有较高要求的场合使用;在接收DMA读数据时SRAM存储空间可快速得到释放,SRAM利用率高,FPGA内部数据传输路径上的延迟低,数据传输效率高;适合有大量及高速数据传输需求的场合使用。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供一种基于PCIe接口的DMA传输方法,该方法为:检测主机下发的DMA读指令信息,根据所述DMA读指令信息生成存储器读请求包,为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息并且从CPLD额外信息RAM的A端口写入;接收主机响应的带数据的完成包并且提取其中的TAG字段,以所述提取到的TAG字段作为地址,从CPLD额外信息RAM的B端口读取之前写入的SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER;将所述DDR缓存地址作为地址,将数据写入与之对应的地址单元,待DDR中缓存达到阈值后对数据进行后续处理。
所述接收主机响应的带数据的完成包并且提取其中的TAG字段,之后,该方法还包括:判断该带数据的完成包是否为存储器读请求包的最后一帧数据。
如果带数据的完成包为存储器读请求包的最后一帧数据,将提取的TAG字段写入TAG管理FIFO,供后续生成MRD请求包时使用。
所述为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,具体为:为每个存储器读请求包分配TAG字段并生成从主机主存空间获取数据的地址;为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息。
所述从CPLD额外信息RAM的A端口写入,具体为:以分配的TAG字段作为一个CPLD额外信息RAM的地址,将所述SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息从CPLD额外信息RAM的A端口写入。
所述以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER,具体为:根据CPLD额外信息RAM中的预留写SRAM起始位置信息,确定数据写入当前地址所对应的存储单元的位置,根据当前数据写入的位置和长度生成下一组数据写入的起始位置和地址,即更新写SRAM起始位置信息和SRAM缓存地址;如果当前数据为相应存储器读请求包的最后一帧数据,则数据缓存完成后读取数据将数据和对应数据的DDR缓存地址发送到下一级,否则以当前数据对应的TAG字段作为地址从CPLD额外信息RAM的B端口更新写SRAM起始位置信息和SRAM缓存地址写入CPLD额外信息RAM。
所述CPLD额外信息RAM为一适当数据宽度的双口RAM。
实施例
本发明实施例提供一种基于PCIe接口的DMA传输方法,通过以下步骤实现:
步骤1:检测主机下发的DMA读指令,获取DMA读地址、长度等信息;
步骤2:根据指令信息生成存储器读请求包(Memory Read TLP,以下简称MRDTLP);
具体地,为每个MRD TLP分配TAG字段并生成从主机主存空间获取数据的地址;
为每个MRD TLP请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息(初始值为0);所述SRAM缓存地址和SRAM读取地址一致。
以分配的TAG字段作为一个CPLD额外信息RAM(一个适当数据宽度的双口RAM)的地址,将SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息从CPLD额外信息RAM的A端口写入。
步骤3:接收主机响应的带数据的完成包(CPLD),提取其中的TAG字段;
具体地,如果该包数据为相应MRD请求的最后一帧数据,将TAG写入TAG管理FIFO,供后续生成MRD请求包时使用;
步骤4:以提取到的TAG字段作为地址,从CPLD额外信息RAM的B端口读取SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,以其中的SRAM缓存地址作为地址,将数据写入数据缓存BUFFER;
具体地,数据缓存BUFFER为宽度匹配数据宽度的双口RAM。
根据CPLD额外信息RAM中的写SRAM起始位置信息,确定数据应该写入当前地址所对应的存储单元的哪个位置,根据当前数据写入的位置,数据的长度生成下一组数据写入的起始位置和地址,即更新写SRAM起始位置信息和SRAM缓存地址;
如果当前数据为相应MRD请求的最后一帧数据,则数据缓存完成后读取数据将数据和对应数据的DDR缓存地址发送到下一级,否则以当前数据对应的TAG作为地址从CPLD额外信息RAM的B端口将更新后的写SRAM起始位置信息和SRAM缓存地址写入CPLD额外信息RAM。
步骤5:DDR写控制器将数据写入与之对应的地址单元,待DDR中缓存一定量数据后对数据进行后续处理;
步骤6:重复步骤2~步骤5,直到当次DMA读完成。
本发明有效解决DMA读数据的乱序和碎包问题,适合在需要使用PCIe接口进行数据传输的场合使用;
本发明减少对FPGA内部的资源消耗,尤其对于多路DMA设计,做到了FPGA内部数据缓存SRAM的共用,因此不增加额外的SRAM对每一路数据进行专门的缓存;适合对FPGA内部资源消耗有较高要求的场合使用;
本发明在接收DMA读数据时因为不需要像常规方法一样在SRAM中积攒大量数据按块发送给次级,因此SRAM存储空间可快速得到释放,SRAM利用率高,FPGA内部数据传输路径上的延迟低,数据传输效率高;适合有大量及高速数据传输需求的场合使用。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (6)

1.一种基于PCIe接口的DMA传输方法,其特征在于,该方法为:检测主机下发的DMA读指令信息,根据所述DMA读指令信息生成存储器读请求包,为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息并且从CPLD额外信息RAM的A端口写入;
接收主机响应的带数据的完成包并且提取其中的TAG字段,判断该带数据的完成包是否为存储器读请求包的最后一帧数据,若带数据的完成包为存储器读请求包的最后一帧数据,将提取的TAG字段写入TAG管理FIFO,供后续生成MRD请求包时使用;
以所述提取到的TAG字段作为地址,从CPLD额外信息RAM的B端口读取之前写入的SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER;若当前数据为相应MRD请求的最后一帧数据,则数据缓存完成后读取数据,将数据和对应数据的DDR缓存地址发送到下一级;否则以当前数据对应的TAG作为地址从CPLD额外信息RAM的B端口将更新后的写SRAM起始位置信息和SRAM缓存地址写入CPLD额外信息RAM;
将所述DDR缓存地址作为地址,将数据写入与之对应的地址单元,待DDR中缓存达到阈值后对数据进行后续处理。
2.根据权利要求1所述的基于PCIe接口的DMA传输方法,其特征在于,所述为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,具体为:为每个存储器读请求包分配TAG字段并生成从主机主存空间获取数据的地址;为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息。
3.根据权利要求2所述的基于PCIe接口的DMA传输方法,其特征在于,所述从CPLD额外信息RAM的A端口写入,具体为:以分配的TAG字段作为一个CPLD额外信息RAM的地址,将所述SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息从CPLD额外信息RAM的A端口写入。
4.根据权利要求3所述的基于PCIe接口的DMA传输方法,其特征在于,所述以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER,具体为:根据CPLD额外信息RAM中的预留写SRAM起始位置信息,确定数据写入当前地址所对应的存储单元的位置,根据当前数据写入的位置和长度生成下一组数据写入的起始位置和地址,即更新写SRAM起始位置信息和SRAM缓存地址;如果当前数据为相应存储器读请求包的最后一帧数据,则数据缓存完成后读取数据将数据和对应数据的DDR缓存地址发送到下一级,否则以当前数据对应的TAG字段作为地址从CPLD额外信息RAM的B端口更新写SRAM起始位置信息和SRAM缓存地址写入CPLD额外信息RAM。
5.根据权利要求4所述的基于PCIe接口的DMA传输方法,其特征在于,所述SRAM缓存地址和SRAM读取地址一致。
6.根据权利要求5所述的基于PCIe接口的DMA传输方法,其特征在于,所述CPLD额外信息RAM为一适当数据宽度的双口RAM。
CN201910180262.3A 2019-03-11 2019-03-11 基于PCIe接口的DMA传输方法 Active CN111694777B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910180262.3A CN111694777B (zh) 2019-03-11 2019-03-11 基于PCIe接口的DMA传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910180262.3A CN111694777B (zh) 2019-03-11 2019-03-11 基于PCIe接口的DMA传输方法

Publications (2)

Publication Number Publication Date
CN111694777A CN111694777A (zh) 2020-09-22
CN111694777B true CN111694777B (zh) 2022-03-29

Family

ID=72474604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910180262.3A Active CN111694777B (zh) 2019-03-11 2019-03-11 基于PCIe接口的DMA传输方法

Country Status (1)

Country Link
CN (1) CN111694777B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115833920B (zh) * 2023-02-14 2023-04-25 北京融为科技有限公司 一种解调数据的传输方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096648A (zh) * 2010-12-09 2011-06-15 深圳中兴力维技术有限公司 基于fpga的实现多路突发数据业务缓存的系统及方法
CN103885909A (zh) * 2014-03-26 2014-06-25 国电南瑞科技股份有限公司 基于原生PCIe接口的SSD控制器及其控制方法
CN105260332A (zh) * 2015-09-09 2016-01-20 北京三未信安科技发展有限公司 一种对cpld数据包进行有序存储的方法及系统
CN105681222A (zh) * 2016-03-03 2016-06-15 深圳市同创国芯电子有限公司 一种数据接收缓存方法、装置及通信系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364844B2 (en) * 2009-11-13 2013-01-29 International Business Machines Corporation Deadlock-free class routes for collective communications embedded in a multi-dimensional torus network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096648A (zh) * 2010-12-09 2011-06-15 深圳中兴力维技术有限公司 基于fpga的实现多路突发数据业务缓存的系统及方法
CN103885909A (zh) * 2014-03-26 2014-06-25 国电南瑞科技股份有限公司 基于原生PCIe接口的SSD控制器及其控制方法
CN105260332A (zh) * 2015-09-09 2016-01-20 北京三未信安科技发展有限公司 一种对cpld数据包进行有序存储的方法及系统
CN105681222A (zh) * 2016-03-03 2016-06-15 深圳市同创国芯电子有限公司 一种数据接收缓存方法、装置及通信系统

Also Published As

Publication number Publication date
CN111694777A (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
CN109388590B (zh) 提升多通道dma访问性能的动态缓存块管理方法和装置
EP4137956A1 (en) On-chip cache device, on-chip cache read/write method, and computer readable medium
WO2017041570A1 (zh) 向缓存写入数据的方法及装置
CN110058816B (zh) 一种基于ddr的高速多用户队列管理器及方法
CN112506823B (zh) 一种fpga数据读写方法、装置、设备及可读存储介质
CN113760560A (zh) 一种进程间通信方法以及进程间通信装置
CN115080455B (zh) 一种计算机芯片、计算机板卡、存储空间分配方法及装置
WO2024036985A1 (zh) 存储系统及其计算存储处理器、固体硬盘和数据读写方法
CN111651396B (zh) 一种优化的pcie完成包乱序管理电路实现方法
CN103150216A (zh) 一种SoC集成的多端口DDR2/3调度器及调度方法
CN111181874B (zh) 一种报文处理方法、装置及存储介质
CN111694777B (zh) 基于PCIe接口的DMA传输方法
CN108897701B (zh) cache存储装置
WO2022095439A1 (zh) 一种用于数据处理的硬件加速系统及芯片
CN115811509A (zh) 一种总线通信方法及相关设备
CN105681222A (zh) 一种数据接收缓存方法、装置及通信系统
CN117389914A (zh) 缓存系统、缓存写回方法、片上系统及电子设备
CN113126911A (zh) 基于ddr3 sdram的队列管理方法、介质、设备
CN116166581A (zh) 用于pcie总线的队列式dma控制器电路及数据传输方法
CN114238156A (zh) 处理系统以及操作处理系统的方法
CN107807888B (zh) 一种用于soc架构的数据预取系统及其方法
CN110134629A (zh) 一种基于FPGA的NVMe SSD PCIe数据包解析方法
CN116775560B (zh) 写分配方法、缓存系统、片上系统、电子组件及电子设备
US11094368B2 (en) Memory, memory chip and memory data access method
US20230350797A1 (en) Flash-based storage device and copy-back operation method thereof

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