CN111694777A - 基于PCIe接口的DMA传输方法 - Google Patents
基于PCIe接口的DMA传输方法 Download PDFInfo
- Publication number
- CN111694777A CN111694777A CN201910180262.3A CN201910180262A CN111694777A CN 111694777 A CN111694777 A CN 111694777A CN 201910180262 A CN201910180262 A CN 201910180262A CN 111694777 A CN111694777 A CN 111694777A
- Authority
- CN
- China
- Prior art keywords
- address
- data
- 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.)
- Granted
Links
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
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- 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)
- 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传输方法。
背景技术
根据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 (8)
1.一种基于PCIe接口的DMA传输方法,其特征在于,该方法为:检测主机下发的DMA读指令信息,根据所述DMA读指令信息生成存储器读请求包,为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息并且从CPLD额外信息RAM的A端口写入;接收主机响应的带数据的完成包并且提取其中的TAG字段,以所述提取到的TAG字段作为地址,从CPLD额外信息RAM的B端口读取之前写入的SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER;将所述DDR缓存地址作为地址,将数据写入与之对应的地址单元,待DDR中缓存达到阈值后对数据进行后续处理。
2.根据权利要求1所述的基于PCIe接口的DMA传输方法,其特征在于,所述接收主机响应的带数据的完成包并且提取其中的TAG字段,之后,该方法还包括:判断该带数据的完成包是否为存储器读请求包的最后一帧数据。
3.根据权利要求2所述的基于PCIe接口的DMA传输方法,其特征在于,如果带数据的完成包为存储器读请求包的最后一帧数据,将提取的TAG字段写入TAG管理FIFO,供后续生成MRD请求包时使用。
4.根据权利要求1-3任意一项所述的基于PCIe接口的DMA传输方法,其特征在于,所述为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息,具体为:为每个存储器读请求包分配TAG字段并生成从主机主存空间获取数据的地址;为每个存储器读请求包请求到的数据分配在SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息。
5.根据权利要求4所述的基于PCIe接口的DMA传输方法,其特征在于,所述从CPLD额外信息RAM的A端口写入,具体为:以分配的TAG字段作为一个CPLD额外信息RAM的地址,将所述SRAM缓存地址、DDR缓存地址、SRAM读取地址、预留写SRAM起始位置信息从CPLD额外信息RAM的A端口写入。
6.根据权利要求5所述的基于PCIe接口的DMA传输方法,其特征在于,所述以所述SRAM缓存地址作为地址,将数据写入数据缓存BUFFER,具体为:根据CPLD额外信息RAM中的预留写SRAM起始位置信息,确定数据写入当前地址所对应的存储单元的位置,根据当前数据写入的位置和长度生成下一组数据写入的起始位置和地址,即更新写SRAM起始位置信息和SRAM缓存地址;如果当前数据为相应存储器读请求包的最后一帧数据,则数据缓存完成后读取数据将数据和对应数据的DDR缓存地址发送到下一级,否则以当前数据对应的TAG字段作为地址从CPLD额外信息RAM的B端口更新写SRAM起始位置信息和SRAM缓存地址写入CPLD额外信息RAM。
7.根据权利要求6所述的基于PCIe接口的DMA传输方法,其特征在于,所述SRAM缓存地址和SRAM读取地址一致。
8.根据权利要求7所述的基于PCIe接口的DMA传输方法,其特征在于,所述CPLD额外信息RAM为一适当数据宽度的双口RAM。
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 true CN111694777A (zh) | 2020-09-22 |
CN111694777B 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115833920A (zh) * | 2023-02-14 | 2023-03-21 | 北京融为科技有限公司 | 一种解调数据的传输方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110119526A1 (en) * | 2009-11-13 | 2011-05-19 | International Business Machines Corporation | Local rollback for fault-tolerance in parallel computing systems |
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 | 深圳市同创国芯电子有限公司 | 一种数据接收缓存方法、装置及通信系统 |
-
2019
- 2019-03-11 CN CN201910180262.3A patent/CN111694777B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110119526A1 (en) * | 2009-11-13 | 2011-05-19 | International Business Machines Corporation | Local rollback for fault-tolerance in parallel computing systems |
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 | 深圳市同创国芯电子有限公司 | 一种数据接收缓存方法、装置及通信系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115833920A (zh) * | 2023-02-14 | 2023-03-21 | 北京融为科技有限公司 | 一种解调数据的传输方法和装置 |
CN115833920B (zh) * | 2023-02-14 | 2023-04-25 | 北京融为科技有限公司 | 一种解调数据的传输方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111694777B (zh) | 2022-03-29 |
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 | |
CN112506823B (zh) | 一种fpga数据读写方法、装置、设备及可读存储介质 | |
CN110058816B (zh) | 一种基于ddr的高速多用户队列管理器及方法 | |
CN115080455B (zh) | 一种计算机芯片、计算机板卡、存储空间分配方法及装置 | |
US20220253252A1 (en) | Data processing method and apparatus | |
CN105681222A (zh) | 一种数据接收缓存方法、装置及通信系统 | |
US20240241826A1 (en) | Computing node cluster, data aggregation method, and related device | |
CN103150216A (zh) | 一种SoC集成的多端口DDR2/3调度器及调度方法 | |
US20240289275A1 (en) | Data processing method and apparatus, and cache, processor and electronic device | |
CN117667758B (zh) | L3级缓存扩展装置、访问方法、访问装置、设备及介质 | |
CN111694777B (zh) | 基于PCIe接口的DMA传输方法 | |
CN108897701B (zh) | cache存储装置 | |
CN116775560B (zh) | 写分配方法、缓存系统、片上系统、电子组件及电子设备 | |
WO2022095439A1 (zh) | 一种用于数据处理的硬件加速系统及芯片 | |
CN115811509A (zh) | 一种总线通信方法及相关设备 | |
CN113126911A (zh) | 基于ddr3 sdram的队列管理方法、介质、设备 | |
CN109101439A (zh) | 一种报文处理的方法及装置 | |
CN115277644B (zh) | 一种总线数据传输系统、方法、设备及存储介质 | |
CN111190840A (zh) | 基于现场可编程门阵列控制的多方中央处理器通信架构 | |
EP4276643A1 (en) | Communication method, apparatus, and system | |
CN114238156A (zh) | 处理系统以及操作处理系统的方法 | |
CN107807888B (zh) | 一种用于soc架构的数据预取系统及其方法 | |
CN118363914B (zh) | 数据处理方法、固态硬盘设备及主机 | |
US11094368B2 (en) | Memory, memory chip and memory data access method |
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 |