一种基于流水线的DMA数据传输处理方法与流程

文档序号:19570886发布日期:2019-12-31 18:55阅读:537来源:国知局
一种基于流水线的DMA数据传输处理方法与流程

本发明属于pcie总线数据传输技术领域,涉及一种基于流水线的dma数据传输处理方法。



背景技术:

数据流水线处理是指将待处理的任务分解为相互有关而又相对独立的、可以顺序执行的子任务。整个处理过程被划分为一组串行连接的子过程,以完成相应的子任务。使用流水处理部件,采用流水线技术,是实现时间并行的一种非常有效的方法。流水化结构就意味着将数字处理算法分割成时间上前后相连的多个处理片段,并且在段与段之间加信号寄存器来缓冲,这些段和段之间的缓冲就构成了流水线,可提高计算速度,提升数据的加解密速度。现有pcie总线数据传输中传统的“发送请求-接收完成-发送请求”传输模式为一个子任务处理完成后,再进行顺序衔接的另一子任务的处理,直至待处理任务的全部子任务处理完成。该种传输模式存在效率低下,总线带宽利用率低的不足,影响了数据的流水处理速度。

经现有技术检索,未检索到与本专利相近技术方案。



技术实现要素:

本发明的目的在于克服现有技术的不足之处,提供一种提高数据传输效率和处理效率的基于流水线的dma数据传输处理方法。

本发明的上述目的通过如下技术方案来实现:

一种基于流水线的dma数据传输处理方法,其特征在于;包括pc机和fpga芯片,pc机和fpga芯片通过pcie总线连接,fpga芯片用于实现数据加解密运算,数据传输处理包括如下步骤:

s1将pc机与fpga芯片内部分别设置多个缓存区域,pc机内的多个缓存区域与fpga芯片内的多个缓存区域一一对应,pc机内设置的缓冲区域用第一内存、第二内存……第n内存n表示,fpga芯片中设置的缓冲区域用第一fifo、第二fifo……第nfifo表示;

s2将待处理的数据分解为可顺序执行的多个子任务,将每个子任务对应的数据按顺序一一存储到pc机的多个缓存区域内;

s3首先启动dma流水线1:将pc机第一内存中的数据传送到fpga芯片中的第一fifo缓冲;

s4当pc机第一内存中的数据传输完毕后,启动dma流水线2,将pc机第二内存中的数据传输到fpga芯片中的第二fifo缓冲,同时fpga芯片对第一fifo中缓存的数据进行处理;

s5当第一fifo中数据处理完毕,同时第二内存中数据传输完毕后,启动dma流水线3,将fpga芯片中第一fifo处理完毕后数据传送回pc机第一内存,fpga芯片内第二fifo中数据同时进行处理;

s6当第二fifo中数据处理完毕,同时第一fifo中数据传输完毕后,启动dma流水线4,将fpga芯片中第二fifo处理完毕后数据传送回pc第二内存,完成一个处理循环;

s7再次启动dma流水线1,按照s3-s6的处理过程对第三内内存和第四内存的中的数据进行顺序传送和处理,依次类推,直至pc机内设置的全部缓存区域内的数据处理完毕。

本发明具有的优点和积极效果:

本发明对数据的传输和处理采用四步流水线处理循环来实现,在一部分数据在pc机的缓冲区域和fpga芯片的缓存区域传送的过程中,同时fpga芯片对已暂存到其缓冲区内的数据进行处理,从而避免了fpga中处理数据的同时,对pcie总线的空闲,实现了数据的连续传送和连续处理,从而提高了数据的传输效率和数据的加解密处理效率。

附图说明

图1是本发明一个处理循环的流程图。

具体实施方式

下面结合附图并通过具体实施例对本发明作进一步详述,以下实施例只是描述性的,不是限定性的,不能以此限定本发明的保护范围。

一种基于流水线的dma数据传输处理方法,请参见图1,其发明点为:

包括pc机和fpga芯片,pc机和fpga芯片通过pcie总线连接,具体的,fpga芯片作为单独模块与pc机接口插连。fpga芯片用于实现数据加解密运算,数据传输处理包括如下步骤:

s1将pc机与fpga芯片内部分别设置多个缓存区域,pc机内的多个缓存区域与fpga芯片内的多个缓存区域一一对应,pc机内设置的缓冲区域用第一内存、第二内存……内存n表示,fpga芯片中设置的缓冲区域用第一fifo、第二fifo……fifon表示;

s2将待处理的数据分解为可顺序执行的多个子任务,将每个子任务对应的数据按顺序一一存储到pc机的多个缓存区域内;

s3首先启动dma流水线1:将pc机第一内存中的数据传送到fpga芯片中的第一fifo缓冲;

s4当pc机第一内存中的数据传输完毕后,启动dma流水线2,将pc机第二内存中的数据传输到fpga芯片中的第二fifo缓冲,同时fpga芯片对第一fifo中缓存的数据进行处理;

s5当第一fifo中数据处理完毕,同时第二内存中数据传输完毕后,启动dma流水线3,将fpga芯片中第一fifo处理完毕后数据传送回pc机第一内存,fpga芯片内第二fifo中数据同时进行处理;

s6当第二fifo中数据处理完毕,同时第一fifo中数据传输完毕后,启动dma流水线4,将fpga芯片中第二fifo处理完毕后数据传送回pc第二内存,完成一个处理循环;

s7再次启动dma流水线1,按照s3-s6的处理过程对第三内内存和第四内存的中的数据进行顺序传送和处理,依次类推,直至pc机内设置的全部缓存区域内的数据处理完毕。

采用本基于流水线的dma数据传输处理方法,pc机与fpga芯片内对应缓存区域的设置,需要根据实际的数据处理量来进行设定,在数据处理量不大,数据处理时间不长的情况下,pc机与fpga芯片内可设置两个对应缓存区域。而数据处理量大,数据处理需要较长时间时,可以设置较多的缓存空间进行更多级流水操作。

尽管为说明目的公开了本发明的实施例和附图,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换、变化和修改都是可能的,因此,本发明的范围不局限于实施例和附图所公开的内容。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1