首页> 中国专利> 基于PCIE协议的DMA控制器及DMA数据传输方法

基于PCIE协议的DMA控制器及DMA数据传输方法

摘要

本发明公开了一种基于PCIE协议的DMA控制器,包括:调度控制单元,用于在初始化阶段确定PCIE板卡设备和PCIE主机的缓存空间;缓存配置单元,用于存储缓存空间的信息;数据搬移单元,用于存储最后一个数据块在PCIE主机的缓存空间中的位置,并且根据上一次搬运结束时的数据块位置和当前数据块位置自动产生PCIE读请求,将PCIE主机上的新产生的数据块搬运到PCIE板卡设备上的缓存空间;中断发生器,用于在数据块搬运完成后,根据配置的最小时间间隔和最小数量间隔来决定是否触发中断;以及数据块完成反馈单元,用于在PCIE板卡设备上的CPU将传入的数据块处理完之后,存储处理完的最后一条数据块位置。通过本发明可降低数据块搬移过程中PCIE主机和PCIE板卡上CPU的开销,提高命令的传输效率和双方CPU的利用率。

著录项

  • 公开/公告号CN110046114A

    专利类型发明专利

  • 公开/公告日2019-07-23

    原文格式PDF

  • 申请/专利权人 上海熠知电子科技有限公司;

    申请/专利号CN201910166535.9

  • 发明设计人 刘明润;

    申请日2019-03-06

  • 分类号

  • 代理机构上海智晟知识产权代理事务所(特殊普通合伙);

  • 代理人张东梅

  • 地址 200063 上海市普陀区中山北路3000号4508室

  • 入库时间 2024-02-19 11:59:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-14

    授权

    授权

  • 2019-08-16

    实质审查的生效 IPC(主分类):G06F13/28 申请日:20190306

    实质审查的生效

  • 2019-07-23

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,尤其涉及一种基于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的利用率。

尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对其做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号