CN110046114B - 基于pcie协议的dma控制器及dma数据传输方法 - Google Patents

基于pcie协议的dma控制器及dma数据传输方法 Download PDF

Info

Publication number
CN110046114B
CN110046114B CN201910166535.9A CN201910166535A CN110046114B CN 110046114 B CN110046114 B CN 110046114B CN 201910166535 A CN201910166535 A CN 201910166535A CN 110046114 B CN110046114 B CN 110046114B
Authority
CN
China
Prior art keywords
pcie
data block
host
tail
pointer
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
CN201910166535.9A
Other languages
English (en)
Other versions
CN110046114A (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.)
Thinkforce Electronic Technology Co ltd
Original Assignee
Thinkforce Electronic 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 Thinkforce Electronic Technology Co ltd filed Critical Thinkforce Electronic Technology Co ltd
Priority to CN201910166535.9A priority Critical patent/CN110046114B/zh
Priority to PCT/CN2019/093579 priority patent/WO2020177252A1/zh
Publication of CN110046114A publication Critical patent/CN110046114A/zh
Application granted granted Critical
Publication of CN110046114B publication Critical patent/CN110046114B/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/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控制器,包括:调度控制单元,用于在初始化阶段确定PCIE板卡设备和PCIE主机的缓存空间;缓存配置单元,用于存储缓存空间的信息;数据搬移单元,用于存储最后一个数据块在PCIE主机的缓存空间中的位置,并且根据上一次搬运结束时的数据块位置和当前数据块位置自动产生PCIE读请求,将PCIE主机上的新产生的数据块搬运到PCIE板卡设备上的缓存空间;中断发生器,用于在数据块搬运完成后,根据配置的最小时间间隔和最小数量间隔来决定是否触发中断;以及数据块完成反馈单元,用于在PCIE板卡设备上的CPU将传入的数据块处理完之后,存储处理完的最后一条数据块位置。通过本发明可降低数据块搬移过程中PCIE主机和PCIE板卡上CPU的开销,提高命令的传输效率和双方CPU的利用率。

Description

基于PCIE协议的DMA控制器及DMA数据传输方法
技术领域
本发明涉及计算机领域,尤其涉及一种基于PCIE协议的DMA控制器及DMA数据传输方法。
背景技术
高速外围组件互联(Peripheral Component Interconnect Express,PCIE)是计算和通信平台上使用的高性能系统总线。
PCIE作为第三代高性能I/O总线,在总线结构上较上一代PCI总线发生了根本性的变革,主要体现在将PCI的并行总线变为PCIE的串行总线,使用高速差分信号,并采用了端到端的数据传输方式;PCIE采用双向传输模式,接收和发送分别占用一对差分对,这样的传输方式大大提高了传输速率。
对于图像识别领域的PCIE板卡设备,PCIE主机需要频繁地将图像处理命令字传输给PCIE板卡,并由板卡上的CPU解析并处理后,将处理结果返回给PCIE主机。
现有的DMA(Direct Memory Access,直接存储器存取)方案需要对每一次DMA操作配置目的地址、源地址和数据长度,且需要PCIE主机和板卡上的CPU为源数据和目的数据分别分配地址空间。这在单次数据量小但是频率很高的数据传输场景下会对双方CPU带来大量的调度开销,从而使得总体传输效率降低。
发明内容
针对现有技术中存在的上述问题,本发明提出一种基于PCIE协议的DMA控制器,包括:
调度控制单元,所述调度控制单元用于在初始化阶段确定PCIE板卡设备和PCIE主机的缓存空间;
缓存配置单元,所述缓存配置单元用于存储缓存空间的信息;
数据搬移单元,所述数据搬移单元存储最后一个数据块在PCIE主机的缓存空间中的位置,并且根据上一次搬运结束时的数据块位置和当前数据块位置自动产生PCIE读请求,将PCIE主机上的新产生的数据块搬运到PCIE板卡设备上的缓存空间;
中断发生器,所述中断发生器在数据块搬运完成后,根据配置的最小时间间隔和最小数量间隔来决定是否触发中断;以及
数据块完成反馈单元,数据块完成反馈单元在PCIE板卡设备上的CPU将传入的数据块处理完之后,存储处理完的最后一条数据块位置。
在本发明的一个实施例中,调度控制单元包括板卡就绪标志位和主机就绪标志位,
其中在初始化阶段,PCIE板卡设备上的CPU首先分配一段连续的缓存空间,将存储空间的信息写入缓存配置单元,并将调度控制单元中的板卡就绪标志位置1;
PCIE主机读到调度控制单元中的板卡就绪标志位被置1后,先查询板卡CPU分配的空间大小,并尝试分配一段相同大小的连续缓存空间,如分配成功,则将调度控制单元中的主机就绪标志位置1;如分配失败,则将缓存空间降低一半,继续尝试分配,直至分配成功,然后将缓存配置单元中的缓存空间大小修改为实际分配的空间大小,并将调度控制单元中的主机就绪标志位置1。
在本发明的一个实施例中,所述缓存空间的信息包括起始地址、空间大小。
根据本发明的另一个实施例,提供一种基于PCIE协议的DMA数据传输方法,包括:
A)PCIE主机和PCIE板卡设备分别进行初始化,确定PCIE主机的缓存空间和PCIE板卡设备的缓存空间;
B)由PCIE主机、PCIE板卡设备和/或DMA控制器根据PCIE主机的缓存空间和PCIE板卡设备的缓存空间计算出缓存空间可存储的最大数据块个数MAX_COUNT;
C)由PCIE主机从数据搬移单元中读出PCIE主机的当前缓存空间的head指针;
D)由PCIE主机判断PCIE主机的缓存空间是否有空闲空间;
E)如果有空闲空间,则由PCIE主机将新数据块连续写入tail指针指向的地址,并更新tail指针;
F)由DMA控制器判断tail指针和tail_done指针是否相等,tail_done指针指向PCIE板卡设备的缓存空间中最后一个未搬运数据块的位置;
G)如果tail指针和tail_done指针不等,由DMA控制器根据两者的差值计算出待搬运数据块的数量,并自动产生PCIE读请求,将新的数据块从PCIE主机中搬运到PICE板卡上,当搬运完成后,更新tail_done指针;
H)由DMA控制器触发中断;
I)收到中断后,由PCIE板卡设备上的CPU判断head指针和tail_done指针是否相等;
J)如果head指针和tail_done指针不等,由PCIE板卡设备上的CPU处理新的数据块,在处理完数据块后,将最后一个处理完的数据块位置写入head指针寄存器。
在本发明的另一个实施例中,PCIE主机的缓存空间和PCIE板卡设备的缓存空间大小相同,且通过相对起始地址的偏移保持相同实现两个缓存空间的一一对应。
在本发明的另一个实施例中,所述由DMA控制器触发中断包括根据PCIE板卡设备上的CPU的计算负荷,配置中断的触发的最小时间间隔和最小数量间隔。
在本发明的另一个实施例中,基于PCIE协议的DMA数据传输方法还包括重复步骤C)至步骤J),以便持续不断的将PCIE主机端的命令搬移到PCIE板卡上。
在本发明的另一个实施例中,当(tail+1)%MAX_COUNT=head时,即为缓存空间满,其中tail==head表示队列空;tail==head–1表示队列满;MAX_COUNT为循环队列的深度;%MAX_COUNT指的是写到队尾后需要自动循环到队头。
在本发明的另一个实施例中,当PCIE主机的缓存空间满时,由PCIE主机等待PCIE板卡设备将队列中的命令消耗掉,并更新head指针。
在本发明的另一个实施例中,如果tail指针和tail_done指针相等,表示没有新的数据块需要搬运,DMA控制器继续空闲,直到下一次tail指针更新。
通过本发明公开的基于PCIE协议的DMA控制器及DMA数据传输方法,DMA控制器可以自主产生数据搬移中需要的源地址、目的地址和数据长度,并利用了中断,极大的降低了数据块搬移过程中PCIE主机和PCIE板卡上CPU的开销,提高了命令的传输效率和双方CPU的利用率。
附图说明
为了进一步阐明本发明的各实施例的以上和其它优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。在附图中,为了清楚明了,相同或相应的部件将用相同或类似的标记表示。
图1示出根据本发明的一个实施例的基于PCIE协议的DMA控制器100结构的示意图。
图2示出根据本发明的一个实施例的基于PCIE协议的DMA数据传输方法的流程图。
图3示出根据本发明的一个实施例的PCIE主机产生新的数据块后的缓存状态示意图。
图4示出根据本发明的一个实施例的DMA完成搬运后的缓存状态示意图。
图5示出根据本发明的一个实施例的板卡上CPU处理完数据块后的缓存状态示意图。
具体实施方式
在以下的描述中,参考各实施例对本发明进行描述。然而,本领域的技术人员将认识到可在没有一个或多个特定细节的情况下或者与其它替换和/或附加方法、材料或组件一起实施各实施例。在其它情形中,未示出或未详细描述公知的结构、材料或操作以免使本发明的各实施例的诸方面晦涩。类似地,为了解释的目的,阐述了特定数量、材料和配置,以便提供对本发明的实施例的全面理解。然而,本发明可在没有特定细节的情况下实施。此外,应理解附图中示出的各实施例是说明性表示且不一定按比例绘制。
在本说明书中,对“一个实施例”或“该实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。
需要说明的是,本发明的实施例以特定顺序对步骤进行描述,然而这只是为了方便区分各步骤,而并不是限定各步骤的先后顺序,在本发明的不同实施例中,可根据具体的流程的调节来调整各步骤的先后顺序。
PCIE主机也可以称为PCIE Host,指的是根据PCIE规范工作在PCI Express根复合体Root Complex模式的装置。
PCIE板卡设备也可以称为PCIE端点,指的是根据PCIE规范工作在PCI ExpressEndpoint模式的装置。
在本发明的实施例中,PCIE主机和PCIE板卡设备的类型和数量不受限制。
例如,PCIE主机可以是:中央处理单元CPU或者微处理器等,微处理器例如包括:高级精简指令集机器(Advanced RISC Machine,ARM)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或数字信号处理器(Digital Signal Processor,DSP)等。
PCIE板卡设备可以是:图形处理器GPU,网络接口卡NIC、存储器、加速器等等。
本领域的技术人员应该理解:上述给出的具体的PCIE主机以及具体的PCIE板卡设备只是示例,它们还可以是其他形式,为了简化说明书的描述,在此不一一列举。
在单次数据量小但是频率很高的数据传输场景下,PCIE主机需要频繁地将命令字传输给PCIE板卡设备,需要对每一操作配置目的地址、源地址和数据长度,且需要PCIE主机和板卡上的CPU为源数据和目的数据分别分配地址空间,这对双方CPU带来大量的调度开销,从而使得总体传输效率降低。
本发明提出一种基于PCIE协议的DMA数据传输方法,在PCIE两端采用了循环队列缓存,在传输过程中只需PCIE主机更新数据量,DMA控制器会自动完成数据搬移,有效的降低了双方的运算量和时间开销。数据搬运完成后DMA控制器会中断信号通知板上CPU处理数据,且这些中断的密度和间隔可以由动态控制以进一步匹配CPU当前的工作负荷。
图1示出根据本发明的一个实施例的基于PCIE协议的DMA控制器100结构的示意图。如图1所示,DMA控制器100包括调度控制单元110、缓存配置单元120、数据搬移单元130、中断发生器140以及数据块完成反馈单元150。
调度控制单元110用来在初始化阶段使PCIE板卡设备上的CPU和PCIE主机互相确认双方可以支持的缓存空间大小。
调度控制单元110包括板卡就绪标志位和主机就绪标志位。
在初始化阶段,PCIE主机和PCIE板卡设备上的CPU需要分别为源数据分配一段连续的地址空间,地址空间的信息如起始地址、空间大小等将存储在缓存配置单元120中。具体而言,PCIE板卡设备上的CPU首先分配一段连续的缓存空间,并将存储空间的信息写入缓存配置单元120,并将调度控制单元110中的板卡就绪标志位置1。
PCIE主机读到调度控制单元110中的板卡就绪标志位被置1后,先查询板卡CPU分配的空间大小,并尝试分配一段相同大小的连续缓存空间。如分配成功,则将调度控制单元110中的主机就绪标志位置1。如分配失败,则将缓存空间降低一半,继续尝试分配,直至分配成功。然后将缓存配置单元120中的缓存空间大小修改为实际分配的空间大小,并将调度控制单元110中的主机就绪标志位置1。
当PCIE主机准备好数据块后,将最后一个数据块在PCIE主机的缓存单元中的位置通过PCIE配置写请求写入DMA控制器100的数据搬移单元130。数据搬移单元130可根据上一次搬运结束时的数据块位置和PCIE主机写入的数据块位置自动产生PCIE读请求,将PCIE主机上的新产生的数据块搬运到PCIE板卡设备上的CPU分配好的缓存空间。缓存空间中每个数据块的大小可以是相同的,并且可在初始化阶段设定数据块的大小。在本发明的具体实施例中,通过DMA控制器100搬运的数据块可以是PCIE板卡设备使用的命令字。在本发明的其他实施例中,数据块也可以是其他类型的数据。
当数据块搬运完成后,中断发生器140根据配置的最小时间间隔和最小数量间隔来决定是否触发中断。板卡上的CPU可以根据自身的计算负荷,配置中断的触发的最小时间间隔和最小数量间隔。中断的触发的最小时间间隔指的是中断触发一次后间隔一定的时间后才会触发下一次,期间的中断会被记录,直到时间间隔满足后再触发。中断的触发的最小数量间隔指的是中断触发后,必须累计足够数量的中断才触发下一次中断。最小时间间隔和最小数量可以用来控制DMA控制器100产生中断的频率。
当PCIE板卡设备上的CPU将传入的数据块处理完之后,需要将处理完的最后一条数据块位置写入数据块完成反馈单元150。PCIE主机可以通过读取已完成数据块的位置来判断缓存空间是否有新的空间。
下面结合图2详细描述本发明提出的基于PCIE协议的DMA数据传输方法。
图2示出根据本发明的一个实施例的基于PCIE协议的DMA数据传输方法的流程图。
首先,在步骤201,PCIE主机和PCIE板卡设备分别进行初始化。
具体而言,PCIE板卡设备上的CPU首先分配一段连续的缓存空间,并将存储空间的信息写入缓存配置单元,并将调度控制单元中的板卡就绪标志位置1。
PCIE主机读到调度控制单元中的板卡就绪标志位被置1后,先查询板卡CPU分配的空间大小,并尝试分配一段相同大小的连续缓存空间。
通过使PCIE主机的缓存空间和PCIE板卡设备的缓存空间大小相同,所以只要相对起始地址的偏移保持相同即可实现两个缓存空间的一一对应,即PCIE主机的缓存空间的起始地址对应于PCIE板卡设备的缓存空间起始位置,PCIE主机的缓存空间的下一地址对应于PCIE板卡设备的缓存空间下一位置,以此类推,PCIE主机的缓存空间的末尾地址对应于PCIE板卡设备的缓存空间末尾位置。偏移地址即为tail指针乘以每个指针对应的数据块大小。
如分配成功,则将调度控制单元中的主机就绪标志位置1。如分配失败,则将缓存空间降低一半,继续尝试分配,直至分配成功。然后将缓存配置单元中的缓存空间大小修改为实际分配的空间大小,并将调度控制单元中的主机就绪标志位置1。此时初始化阶段结束。
在步骤202,PCIE主机、PCIE板卡设备和/或DMA控制器分别根据缓存空间计算出缓存空间可存储的最大数据块个数MAX_COUNT。缓存空间中每个数据块的大小可以是相同的,并且可在初始化阶段设定数据块的大小。在本发明的具体实施例中,通过DMA控制器100搬运的数据块可以是PCIE板卡设备使用的命令字。在本发明的其他实施例中,数据块也可以是其他类型的数据。
在步骤203,PCIE主机从数据搬移单元中读出PCIE主机的当前缓存空间的head(头部)指针。其中head指针指向PCIE主机的缓存空间中第一个未搬运的数据块的位置,tail(尾部)指针指向PCIE主机的缓存空间中最后一个数据块的位置,tail指针由PCIE主机维护并写入DMA控制器。换言之,head指针寄存器存储的信息对应于PCIE主机的缓存空间中第一个未搬运的数据块的位置,tail指针寄存器存储的信息对应于PCIE主机的缓存空间中最后一个数据块的位置。
在步骤204,由PCIE主机判断PCIE主机的缓存空间是否有空闲空间。
tail==head表示队列空。tail==head–1表示队列满。MAX_COUNT为循环队列的深度。%MAX_COUNT指的是写到队尾后需要自动循环到队头。因此,当(tail+1)%MAX_COUNT=head时,即为缓存空间满。
当PCIE主机的缓存空间满时,在步骤205由PCIE主机等待PCIE板卡设备将队列中的命令消耗掉,并更新head指针。对主机CPU来说,即过一段时间重新读取head指针。需要指出的是,当PCIE板卡设备更新head指针后可以向PCIE主机端发送中断,从而使主机不用反复读取head指针,只需要等中断触发。Head指针更新后队列即会产生新的空闲空间。
如果缓存空间有空闲空间,则在步骤206,由PCIE主机将新数据块连续写入tail指针指向的地址,并更新tail指针,参见图3。图3示出根据本发明的一个实施例的PCIE主机产生新的数据块后的缓存状态示意图。
在步骤207,DMA控制器发现tail指针更新后,比较tail指针和tail_done指针。tail_done指针指向PCIE板卡设备的缓存空间中最后一个已搬运数据块的位置。换言之,tail_done指针寄存器存储的信息对应于PCIE板卡设备的缓存空间中最后一个已搬运的数据块的位置,判断tail指针和tail_done指针是否相等可由DMA控制器在收到PCIE主机写tail指针寄存器的操作后自动执行。tail指针和tail_done指针相等表示tail指针指向的PCIE主机的缓存空间的地址对应于tail_done指针指向的PCIE板卡设备的缓存空间的地址。例如,当tail指针指向PCIE主机的缓存空间的起始地址且tail_done指针指向PCIE板卡设备的缓存空间起始位置时,tail指针和tail_done指针相等。
如果tail指针和tail_done指针不等,则根据两者的差值计算出待搬运数据块的数量,并自动产生PCIE读请求。将新的数据块从PCIE主机中搬运到PICE板卡上。当搬运完成后,更新tail_done指针,并触发中断,参见图4。图4示出根据本发明的一个实施例的DMA完成搬运后的缓存状态示意图。
需要指出的是,如果tail指针和tail_done指针相等,则表示没有新的数据块需要搬运,DMA控制器继续空闲,直到下一次tail指针更新。
对于中断触发,板卡上的CPU可以根据自身的计算负荷,配置中断的触发的最小时间间隔和最小数量间隔。中断的触发的最小时间间隔指的是中断触发一次后间隔一定的时间后才会触发下一次,期间的中断会被记录,直到时间间隔满足后再触发。中断的触发的最小数量间隔指的是中断触发后,必须累计足够数量的中断才触发下一次中断。最小时间间隔和最小数量可以用来控制DMA控制器产生中断的频率。
在步骤208,PCIE板卡设备上的CPU收到中断后,比较head指针和tail_done指针。如果两者不等,则认为有新的数据块准备就绪,需要去处理。当CPU处理完数据块后,将最后一个处理完的数据块位置写入head寄存器,参见图5。图5示出根据本发明的一个实施例的板卡上CPU处理完数据块后的缓存状态示意图。
在本发明的实施例中,DMA数据传输方法的还包括重复步骤204至步骤208,持续不断的将PCIE主机端的命令搬移到PCIE板卡上。
通过本发明公开的基于PCIE协议的DMA控制器及DMA数据传输方法,DMA控制器可以自主产生数据搬移中需要的源地址、目的地址和数据长度,并利用了中断,极大的降低了数据块搬移过程中PCIE主机和PCIE板卡上CPU的开销,提高了命令的传输效率和双方CPU的利用率。
尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对其做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。

Claims (7)

1.一种基于PCIE协议的DMA控制器,包括:
调度控制单元,所述调度控制单元用于在初始化阶段确定PCIE板卡设备和PCIE主机的缓存空间,所述调度控制单元包括板卡就绪标志位和主机就绪标志位,PCIE主机的缓存空间和PCIE板卡设备的缓存空间大小相同,且通过相对起始地址的偏移保持相同实现两个缓存空间的一一对应,其中在初始化阶段,PCIE板卡设备上的CPU首先分配一段连续的缓存空间,将存储空间的信息写入缓存配置单元,并将调度控制单元中的板卡就绪标志位置1;PCIE主机读到调度控制单元中的板卡就绪标志位被置1后,先查询板卡CPU分配的空间大小,并尝试分配一段相同大小的连续缓存空间,如分配成功,则将调度控制单元中的主机就绪标志位置1;如分配失败,则将缓存空间降低一半,继续尝试分配,直至分配成功,然后将缓存配置单元中的缓存空间大小修改为实际分配的空间大小,并将调度控制单元中的主机就绪标志位置1;
缓存配置单元,所述缓存配置单元用于存储缓存空间的信息;
数据搬移单元,所述数据搬移单元存储最后一个数据块在PCIE主机的缓存空间中的位置,并且根据PCIE主机的缓存空间中最后一个数据块的位置和PCIE板卡设备的缓存空间中最后一个已搬运数据块的位置自动产生PCIE读请求,将PCIE主机上的新产生的数据块搬运到PCIE板卡设备上的缓存空间;
中断发生器,所述中断发生器在数据块搬运完成后,根据配置的最小时间间隔和最小数量间隔来决定是否触发中断;以及
数据块完成反馈单元,数据块完成反馈单元在PCIE板卡设备上的CPU将传入的数据块处理完之后,存储处理完的最后一条数据块位置。
2.一种基于PCIE协议的DMA数据传输方法,包括:
A)PCIE主机和PCIE板卡设备分别进行初始化,确定PCIE主机的缓存空间和PCIE板卡设备的缓存空间,PCIE主机的缓存空间和PCIE板卡设备的缓存空间大小相同,且通过相对起始地址的偏移保持相同实现两个缓存空间的一一对应;
B)由PCIE主机、PCIE板卡设备和DMA控制器根据PCIE主机的缓存空间和PCIE板卡设备的缓存空间分别计算出缓存空间可存储的最大数据块个数MAX_COUNT;
C)由PCIE主机从数据搬移单元中读出PCIE主机的当前缓存空间的head指针;
D)由PCIE主机判断PCIE主机的缓存空间是否有空闲空间;
E)如果有空闲空间,则由PCIE主机将新数据块连续写入tail指针指向的地址,并更新tail指针;
F)由DMA控制器判断tail指针和tail_done指针是否相等,tail_done指针指向PCIE板卡设备的缓存空间中最后一个已搬运数据块的位置,其中tail指针和tail_done指针相等表示tail指针指向的PCIE主机的缓存空间的地址对应于tail_done指针指向的PCIE板卡设备的缓存空间的地址;
G)如果tail指针和tail_done指针不等,由DMA控制器根据两者的差值计算出待搬运数据块的数量,并自动产生PCIE读请求,将新的数据块从PCIE主机中搬运到PICE板卡上,当搬运完成后,更新tail_done指针;
H)由DMA控制器触发中断;
I)收到中断后,由PCIE板卡设备上的CPU判断head指针和tail_done指针是否相等;
J)如果head指针和tail_done指针不等,由PCIE板卡设备上的CPU处理新的数据块,在处理完数据块后,将最后一个处理完的数据块位置写入head指针寄存器。
3.如权利要求2所述的基于PCIE协议的DMA数据传输方法,其特征在于,所述由DMA控制器触发中断包括根据PCIE板卡设备上的CPU的计算负荷,配置中断的触发的最小时间间隔和最小数量间隔。
4.如权利要求2所述的基于PCIE协议的DMA数据传输方法,其特征在于,还包括重复步骤C)至步骤J),以便持续不断的将PCIE主机端的命令搬移到PCIE板卡上。
5.如权利要求2所述的基于PCIE协议的DMA数据传输方法,其特征在于,其中tail==head表示队列空;tail==head–1表示队列满,写到队尾后需要自动循环到队头。
6.如权利要求2所述的基于PCIE协议的DMA数据传输方法,其特征在于,当PCIE主机的缓存空间满时,由PCIE主机等待PCIE板卡设备将队列中的命令消耗掉,并更新head指针。
7.如权利要求2所述的基于PCIE协议的DMA数据传输方法,其特征在于,如果tail指针和tail_done指针相等,表示没有新的数据块需要搬运,DMA控制器继续空闲,直到下一次tail指针更新。
CN201910166535.9A 2019-03-06 2019-03-06 基于pcie协议的dma控制器及dma数据传输方法 Active CN110046114B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910166535.9A CN110046114B (zh) 2019-03-06 2019-03-06 基于pcie协议的dma控制器及dma数据传输方法
PCT/CN2019/093579 WO2020177252A1 (zh) 2019-03-06 2019-06-28 基于pcie协议的dma控制器及dma数据传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910166535.9A CN110046114B (zh) 2019-03-06 2019-03-06 基于pcie协议的dma控制器及dma数据传输方法

Publications (2)

Publication Number Publication Date
CN110046114A CN110046114A (zh) 2019-07-23
CN110046114B true CN110046114B (zh) 2020-08-14

Family

ID=67274346

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910166535.9A Active CN110046114B (zh) 2019-03-06 2019-03-06 基于pcie协议的dma控制器及dma数据传输方法

Country Status (2)

Country Link
CN (1) CN110046114B (zh)
WO (1) WO2020177252A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112000596B (zh) * 2020-07-27 2022-03-29 瑞芯微电子股份有限公司 一种消息信号中断处理的方法和装置
CN113676421B (zh) * 2021-10-25 2022-01-28 之江实验室 一种基于PCIe的多端口网络报文收发方法
CN114880259B (zh) * 2022-07-12 2022-09-16 北京象帝先计算技术有限公司 数据处理方法、装置、系统、电子设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046786A (zh) * 2007-04-27 2007-10-03 北京中星微电子有限公司 一种实现高效dma传输的dma控制器及传输方法
CN101562559A (zh) * 2008-04-15 2009-10-21 大唐移动通信设备有限公司 一种串行Rapid IO链路数据传输的方法及装置
CN103888293A (zh) * 2014-02-25 2014-06-25 电子科技大学 多通道fc网络数据仿真系统的数据通道调度方法
CN104052831A (zh) * 2014-06-11 2014-09-17 华为技术有限公司 一种基于队列的数据传输方法、装置及通信系统
CN104239248A (zh) * 2014-09-16 2014-12-24 国家计算机网络与信息安全管理中心 Pci-e多缓冲区dma数据传输方法
US8972630B1 (en) * 2013-09-25 2015-03-03 Netronome Systems, Incorporated Transactional memory that supports a put with low priority ring command
CN104714918A (zh) * 2013-12-15 2015-06-17 中国航空工业集团公司第六三一研究所 主机环境下高速fc总线数据接收及缓冲方法
CN106294235A (zh) * 2015-06-01 2017-01-04 中国科学院上海高等研究院 一种基于轮询/中断的实时虚拟无线电数据的同步方法
CN106980582A (zh) * 2016-01-18 2017-07-25 中兴通讯股份有限公司 数据处理方法和装置
CN108388529A (zh) * 2018-01-26 2018-08-10 武汉中元华电电力设备有限公司 一种外设主动实现与cpu间数据交换的方法
CN108470008A (zh) * 2018-01-23 2018-08-31 广州市中海达测绘仪器有限公司 串口数据读写方法、装置、计算机设备和存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100533417C (zh) * 2006-12-30 2009-08-26 大唐微电子技术有限公司 片上系统的数据传输方法及直接存储器访问控制器
CN100517284C (zh) * 2007-11-19 2009-07-22 中兴通讯股份有限公司 一种外部控制dma控制器的方法及其装置
US8639871B2 (en) * 2009-04-08 2014-01-28 Google Inc. Partitioning a flash memory data storage device
US9659342B2 (en) * 2013-06-29 2017-05-23 Intel Corporation Mid command buffer preemption for graphics workloads
US20150281126A1 (en) * 2014-03-31 2015-10-01 Plx Technology, Inc. METHODS AND APPARATUS FOR A HIGH PERFORMANCE MESSAGING ENGINE INTEGRATED WITHIN A PCIe SWITCH
CN105988953B (zh) * 2015-02-12 2019-03-12 深圳市中兴微电子技术有限公司 一种直接内存存取dma控制器及数据传输的方法
CN106919522A (zh) * 2015-12-28 2017-07-04 北京航天测控技术有限公司 一种基于PXIe接口的DMA控制器

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046786A (zh) * 2007-04-27 2007-10-03 北京中星微电子有限公司 一种实现高效dma传输的dma控制器及传输方法
CN101562559A (zh) * 2008-04-15 2009-10-21 大唐移动通信设备有限公司 一种串行Rapid IO链路数据传输的方法及装置
US8972630B1 (en) * 2013-09-25 2015-03-03 Netronome Systems, Incorporated Transactional memory that supports a put with low priority ring command
CN104714918A (zh) * 2013-12-15 2015-06-17 中国航空工业集团公司第六三一研究所 主机环境下高速fc总线数据接收及缓冲方法
CN103888293A (zh) * 2014-02-25 2014-06-25 电子科技大学 多通道fc网络数据仿真系统的数据通道调度方法
CN104052831A (zh) * 2014-06-11 2014-09-17 华为技术有限公司 一种基于队列的数据传输方法、装置及通信系统
CN104239248A (zh) * 2014-09-16 2014-12-24 国家计算机网络与信息安全管理中心 Pci-e多缓冲区dma数据传输方法
CN106294235A (zh) * 2015-06-01 2017-01-04 中国科学院上海高等研究院 一种基于轮询/中断的实时虚拟无线电数据的同步方法
CN106980582A (zh) * 2016-01-18 2017-07-25 中兴通讯股份有限公司 数据处理方法和装置
CN108470008A (zh) * 2018-01-23 2018-08-31 广州市中海达测绘仪器有限公司 串口数据读写方法、装置、计算机设备和存储介质
CN108388529A (zh) * 2018-01-26 2018-08-10 武汉中元华电电力设备有限公司 一种外设主动实现与cpu间数据交换的方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Efficient PCIe transmission for Multi-Channel video using dynamic splicing and conditional prefetching";Tingshan Liu et.al;《Multimedia Tools and Applications》;20170213;25027-25078页 *
"基于1394b总线仿真设备的WDM驱动开发";徐进 等;《电子设计工程》;20150131;第23卷(第2期);63-66页 *
"基于FPGA结构高速PCIe总线传输系统设计与实现";贺位位;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170215(第02期);论文第四章 *
"基于PCI-E接口数据采集系统FPGA设计与实现";汤奥;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715(第07期);论文第2-4章 *

Also Published As

Publication number Publication date
CN110046114A (zh) 2019-07-23
WO2020177252A1 (zh) 2020-09-10

Similar Documents

Publication Publication Date Title
US5740467A (en) Apparatus and method for controlling interrupts to a host during data transfer between the host and an adapter
CN110046114B (zh) 基于pcie协议的dma控制器及dma数据传输方法
CN101115054B (zh) 用于网络接口控制器的存储器映射的缓冲器
US7975120B2 (en) Dynamic allocation of message buffers
EP2097828B1 (en) Dmac to handle transfers of unknown lengths
US20090119460A1 (en) Storing Portions of a Data Transfer Descriptor in Cached and Uncached Address Space
EP3335124B1 (en) Register files for i/o packet compression
CN101877666B (zh) 基于零拷贝方式的多应用程序报文接收方法和装置
CN111708717A (zh) 数据拷贝方法、直接内存访问控制器及计算机系统
CN110188059B (zh) 数据有效位统一配置的流控式fifo缓存装置及方法
JP2006338538A (ja) ストリームプロセッサ
US20190146935A1 (en) Data transfer device, arithmetic processing device, and data transfer method
EP3077914A1 (en) System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
US7076578B2 (en) Race free data transfer algorithm using hardware based polling
JP2002544585A (ja) ホストプロセッサに対して可変幅インタフェースを有するfifoシステム
US5911152A (en) Computer system and method for storing data in a buffer which crosses page boundaries utilizing beginning and ending buffer pointers
CN111290983A (zh) Usb传输设备及传输方法
CN111221756B (zh) 一种上位机高效下行数据传输的方法
US9128924B2 (en) Method and apparatus for wireless broadband systems direct data transfer
US8799530B2 (en) Data processing system with a host bus adapter (HBA) running on a PCIe bus that manages the number enqueues or dequeues of data in order to reduce bottleneck
CN111782562A (zh) 数据传输方法、dma控制器、npu芯片及计算机设备
US6633928B2 (en) Fast process context switching buffer
US20230106923A1 (en) Storage system
JP6940283B2 (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム

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