威尼斯人棋牌-威尼斯欢乐娱人城-首页

一种硬件流水结构的制作方法

文档序号:24942059发布日期:2021-05-04 11:35
一种硬件流水结构的制作方法

本发明属于芯片设计领域,特别涉及一种硬件流水结构。



背景技术:

在芯片开发设计的过程中,对多个硬件加速单元并行工作的数据流处理始终是一个非常棘手的问题。要保证硬件加速单元并行工作,需要有效的数据准备和调度手段。现有技术主要从三个方面来改进:软硬件协同优化、提高系统带宽和并行度,以及提高运行频率。其中系统带宽和并行度由硬件本身的局限和成本开销决定;而运行频率受制于芯片复杂度、工艺和功耗的影响已经达到极限。对于软硬件协同优化,例如在芯片中,受芯片成本和数据放置位置的限制,硬件加速单元不可能近距离获得大块保存数据的区域,而是需要从其他位置连续搬入数据到缓存之中,典型做法是将数据搬入硬件加速单元的缓存中,经过处理的数据从缓存中移除到需要保存的地址空间中,然后处理下一批数据,如此循环直到所有数据处理完毕。但数据的搬移效率又受限于芯片系统的整体带宽和硬件开销。如果仅靠App组织和准备数据,上述数据的搬移显然会拖慢处理过程,一是由于App无法快速响应,二是无法形成流水操作,大量时间浪费在App和硬件加速单元之间的交互之上。一旦软硬件之间在整个数据处理过程中存在交互,则已形成的节拍会被打断,而且由于App响应相比于硬件响应非常缓慢,效率会因此大幅降低。dma的出现和引入对降低App载荷和提高数据搬移效率起到了很大帮助,但dma的调度和控制依然是一个无法回避的问题,如果dma的每次操作都需要App的参与,实质上依然无法形成有效流水,从而降低整个过程中的效率。



技术实现要素:

本发明的目的在于提出一种高效快速的硬件流水结构,有效解决数据流水的调度和分配的问题。

根据本发明的第一方面,一种硬件流水结构包括多个dma组和硬件加速单元组,所述dma组包括:

对称的两个dma,分别将数据流控制链表搬入对应的流控fifo进行独立处理;

与所述每个dma相对应的多个流控fifo,用于控制对应dma的逐步实行;

与所述每个dma相对应的控制状态机,用于通过解析流控信息,实现控制和数据流水过程;

所述硬件加速单元组包括:

输入fifo,用于按序接收由所述dma实行的流控fifo中的控制信息,

硬件加速单元,用于对来自所述输入fifo中的数据进行并行处理;

输出fifo,用于保存所述硬件加速单元处理后的数据,按序搬移到预先确定的位置。

优选地,所述两个dma包括至少一个链表搬移dma和至少一个数据搬移dma,所述链表搬移dma用于将链表信息搬移到流控fifo,所述数据搬移dma用于实行数据搬移。

优选地,所述控制状态机进一步被配置为,在流控fifo中的当前控制信息搬移完成时,如果控制链表中的控制信息不是最后一条,则控制所述dma继续搬取剩余的控制信息到流控fifo中。

优选地,所述dma组进一步包括:

与所述多个流控fifo的栈结构,用于保存和恢复每个流控fifo的实行过程。

优选地,所述dma组进一步包括:

复用电路,用于控制当前流控fifo进入控制状态寄存器,以实现多个流控fifo的分时复用。

优选地,进一步包括存储空间,用于存储dma的链表信息和硬件加速单元处理前后的数据。

优选地,所述dma组通过外部总线访问所述存储空间。

优选地,所述dma通过内部总线访问所述流控fifo和所述硬件加速单元。

优选地,所述硬件加速单元包括运算协处理单元,或乘法单元。

优选地,所述两个dma进一步配置为,第一dma在获得初始指针并启动之后,将链表信息搬移到流控fifo中,在实行流控fifo的过程中,获取第二dma的流控信息指针并将流控信息搬移到第二dma中的流控fifo中,以启动第二dma,所述第二dma的流控信息用于实行数据搬移。

相比于现有技术,本发明具有以下优点:

本发明的硬件流水结构利用多组dma以及链表和硬件加速单元进行控制,只需要App预先进行链表构造,利用硬件流水自动完成,极大地提高了数据流水的速度与效率。

本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单先容,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了根据本发明的硬件流水结构的示意图。

图2示出了根据本发明的流水结构的流水控制过程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明设计了一种高效快速的硬件流水结构,利用App预先构造流控fifo和数据流控制链表,利用dma逐步将数据流控制链表搬入对应的流控fifo中,流控fifo为状态机提供控制信息,状态机再按序解析流控fifo中的数据流控制链表,控制dma按需求将数据搬入硬件加速单元输入fifo中。在硬件加速单元完成数据处理并输出到输出fifo后,再以同样方式将数据搬出,整个处理过程在数据流控制链表构造完成后完全由硬件主动完成,不再需要App参与。为了提高dma处理效率,同时采用对称的两个dma组,实现控制流和数据流的有效分离,利用一个dma搬移数据的同时,控制另一个dma为其准备下一步操作,如此交替进行,进一步提高效率。

本发明具体的实现结构如图1所示,其硬件流水结构总体包括上连dma组g0、硬件加速单元组g1和下连dma组g2。

上连dma组g0用于实现将数据由外部总线指定的位置搬移到硬件加速单元组的输入fifo的功能,其中由两个dma组成,一个dma将链表信息搬移到流控fifo中,称为链表搬移dma,另一个dma用于实行数据搬移,称为数据搬移dma。

硬件加速单元组g1用于对输入fifo中的数据进行并行处理,并输出到输出fifo中。硬件加速单元可以为任意的硬件处理单元,如运算协处理单元,乘法单元等。

下连dma组g2用于实现将数据由硬件加速单元组的输出fifo搬移到外部总线指定位置的功能,其中由两个dma组成,类似地,一个dma将链表信息搬移到流控fifo中,称为链表搬移dma,另一个dma用于实行数据搬移,称为数据搬移dma。

所述上连dma组包括两个控制状态机c0,用于接收并解析对应的流控fifo中的控制信息,以对相对应的dma进行控制,同时以出入栈的形式记录当前每一条流控fifo实行的过程。只有当流控fifo中的控制过程实行完毕,而且链表中的流控信息不是最后一条时,控制dma继续搬取剩余的控制信息到流控fifo中。

其中,所述上连dma组所包括的两个dmac1采用同样的对称设计和结构,所实行的具体功能由对应的流控fifo中的控制信息实现。如上所述,其中一个dma用于将链表信息搬移到流控fifo中,另一个dma主要实行数据搬移,所以其中一个dma在获得初始指针并启动之后,先将对应的控制信息搬入流控fifo中,在实行流控fifo的过程中,获得另一个dma的流控信息指针并将流控信息搬移到另一个dma中的流控fifo中,从而启动另一个dma,另一个dma的流控信息主要就是进行数据搬移,按序类推,逐步实行,直到所有数据被搬移完毕。所述控制状态机c0解析流控fifo中的信息后,通过控制接口c2对dma进行控制。

所述上连dma组的两个控制状态机之间通过控制接口c4进行交互。由于其中的一个dma为自己搬移链表,也为另外一个dma搬移链表,所以需要知道对方实行的情况,同时预先将链表准备到流控fifo中,同时实行数据搬移的dma也需要知道另一个dma的状态进行必要的同步等。

所述硬件流水结构进一步包括芯片存储空间c5,用于存储dma的链表信息和硬件加速单元需要的数据以及数据处理结束之后的数据,其可以是芯片内指定的存储空间也可以是片外存储空间,所述存储空间的实际地址和位置由于dma的调度和分配可能不同。

所述上连dma组包括为外部总线路由c6和内部总线路由c9,上连dma组和下连dma组中的dma都可以通过外部总线路由访问指定的存储空间;上连dma组的dma可以通过总线c7经外部总线访问指定的存储空间,通过总线c8访问内部的指定空间,例如流控fifo,硬件加速单元的输入fifo等。

dma可以经内部总线路由后,通过内部总线路由到流控fifo的访问总线c10进行流控fifo的更新。每条流控fifo对应不同的控制通道,一个完整的过程就是在获得对应的流控fifo的链表指针后,流控fifo的解复用电路c11将链表指针所在的信息搬移到流控fifo中。

所述上连dma组进一步包括单个dma对应的n+1条流控fifoc12,用于保存dma的由链表指针指定的流控信息;控制状态机通过与对应流控fifo和栈管理器的控制接口c3,逐个获取流控fifo中的信息,控制对应的dma实行,然后通过栈管理器记录中间过程转移到下一条流控fifo继续解析并实行,直到对应的每条流控fifo实行完毕。

所述上连dma组进一步包括对应的n+1个流控fifo的栈管理器c13,用于保存对应的流控fifo的中间实行过程和状态,保证控制状态机在返回实行该条流控fifo时,从对应的栈信息中恢复并实行。每条流控fifo其实是分时复用实行的,复用电路c14控制当前的流控fifo进入控制状态寄存器。

所述硬件加速单元组g1包括对应的n+1个硬件加速单元c16,硬件加速单元可以是现有技术中任何数据处理单元、电路或者结构等。本发明针对数据流的具体实现和处理,所以对硬件加速单元不做具体约束。硬件加速单元对应的n+1个输入fifoc15的数据由对应dma在实行流控fifo中的控制信息之后连续按序搬入,直到所有数据处理完毕。硬件加速单元对应的n+1个输出fifoc17用于保存硬件加速单元处理之后的数据,并最终由dma在实行流控fifo中的控制信息之后,按序连续搬移到指定位置,直到所有数据处理完毕。

类似的,所述下连dma组c2包括控制状态机c18,用于接收并解析对应的流控fifo中的控制信息,以对相对应的dma进行控制,同时以出入栈的形式记录当前每一条流控fifo实行的过程,只有当流控fifo中的控制过程实行完毕,而且fifo中的流控信息不是最后一条时,控制dma继续搬取剩余的控制信息到流控fifo中。

所述下连dma组c2也包括两个dmac20,采用与上连dma组相同的对称设计和结构,所实行的具体功能由对应的流控fifo中的控制信息实现。其中一个dma用于将链表信息搬移到流控fifo中,另一个dma实行数据搬移,所以其中一个dma在获得初始指针并启动之后,先将对应的控制信息搬入一个流控fifo中,在实行该流控fifo的过程中,获得另一个dma的流控信息指针并将流控信息搬移到另一个dma中的流控fifo中,从而启动另一个dma,另一个dma的流控信息主要就是进行数据搬移,按序类推,逐步实行,直到所有数据被搬移完毕。控制状态机c18解析流控fifo中的信息后通过与对应的dma的控制接口c19对dma进行控制。

所述下连dma组c2中的两个控制状态机之间通过控制接口c21进行交互,由于其中的一个dma为自己搬移链表,也为另外一个dma搬移链表,所以需要知道对方实行的情况,同时预先将链表准备到流控fifo中,而实行数据搬移的dma也需要知道另一个dma的状态进行必要的同步等。

所述下连dma组c2中的dma可以通过总线c22经外部总线访问指定的存储空间。

所述下连dma组c2进一步包括外部总线路由c23和内部总线路由c25,上连dma组和下连dma组中的dma都可以通过外部总线路由访问指定的存储空间;dma通过内部总线路由,dma通过总线c24可以访问内部不同的空间,例如流控fifo,硬件加速单元的输出fifo等。

所述下连dma组进一步包括单个dma对应的n+1条流控fifoc27,用于保存dma的由链表指针指定的流控信息。所述下连dma组进一步包括但个dma对应的流控fifo的栈管理器c28,用于保存对应的流控fifo的中间实行过程和状态,保证控制状态机在返回实行该条流控fifo时从对应的栈信息中恢复并实行。每条流控fifo对应不同的控制通道,由此流控fifo解复用电路c26用于将链表信息搬移到对应的流控fifo中。

每条流控fifo其实是分时复用实行的,下连dma组中的dma复用电路c29控制当前的流控fifo进入控制状态寄存器。

所述下连dma组中的控制状态机通过与对应的流控fifo和栈管理器的控制接口c30,逐个获取流控fifo中的信息,控制对应的dma实行之后通过栈管理器记录中间过程转移到下一条流控fifo继续解析并实行,直到对应的每条流控fifo被实行完毕。

通过上述硬件流水结构,利用多组dma以及链表和硬件加速单元进行控制,在准备好控制链表之后,按序实行流控fifo中控制信息,同时采取出入栈的管理方式保存或者恢复每一次流控操作,直到所有操作实行完毕。整个过程只需要App在开始之前进行链表构造,然后利用硬件流水自动完成,极大地提高了数据流水的速度与效率。

需要说明的是,图1所示的硬件流水结构仅用于说明而非限定本发明的技术方案。本领域技术人员应当理解,在本发明基础上可以根据实际需要而对dma分组数量和组内数量等做出容易想到的任意调整,以实现多次任意位置和任意数目的数据搬移。同样地,本领域技术人员应当理解,上述流水结构不依赖于硬件加速单元和对应的输入fifo、输出fifo而存在,因为上述硬件加速单元和对应的输入、输出fifo可以对应于任意可以访问的存储空间。可选地,上述流控fifo和栈管理器可以被移除,即流控方式可以用简单链表格式以固定方式实现,而不需要复杂的流控fifo和栈管理器结构。而总线或总线路由可以用其他数据通路形式存在。总之,以上描述的结构仅为举例说明,不应将本发明限于上述示例的具体结构、参数或功能。

基于图1所示的上述硬件流水结构,图2为一个控制流水过程的流程图,该过程包括以下步骤:

步骤s0:控制流水过程开始;

步骤s1:通过App构造dma控制链表。

所述构造控制链表,包括构造不同dma的流控fifo的控制信息。链表搬移dma启动并开始将对应链表搬移到流控fifo,数据搬移dma在获得流控fifo中的控制信息后启动数据搬移。

步骤s2:通过App指定上连和下连dma组中的链表搬移dma和数据搬移dma,并指定链表搬移dma的初始链表指针。

由于每组中的两个dma采用相同的对称结构,区别仅在于实行的链表内容不同,以及进入各个dma中的流控fifo信息不同,所以App需要指定链表搬移dma的初始链表指针,由链表搬移dma开始触发控制流。

步骤s3:App使能上连和下连链表搬移dma和硬件加速单元。

将上述使能控制打开之后,硬件流水结构即以设定的链表模式开始流水操作。

在步骤s3后,并行实行步骤s4.0,s4.1,s4.2的硬件过程:

步骤s4.0:上连链表搬移dma根据指针指定的位置将控制信息搬移到流控fifo中,然后实行步骤s5.0,为数据搬移dma准备流控fifo;

步骤s4.1:下连链表搬移dma根据指针指定的位置将控制信息搬移到流控fifo中,然后实行步骤s5.1,为数据搬移dma准备流控fifo;

步骤s4.2:如果输入fifo中数据为空,硬件加速单元保持等待,否则,如果输入fifo的数据准备好,则实行步骤s6.2;

步骤s5.0:上连链表搬移dma实行流控fifo中的一条控制信息,为上连数据搬移dma准备流控fifo中的一条控制信息,然后实行步骤s6.0检查链表是否搬移结束,同时,当上连数据搬移dma在获得流控fifo中的信息时,实行步骤s6.1;

步骤s5.1:下连链表搬移dma实行流控fifo中的一条控制信息,为下连数据搬移dma准备流控fifo中的一条控制信息,然后实行步骤s9.0,检查链表是否搬移结束,同时,当下连数据搬移dma在获得流控fifo中的信息时,实行步骤s8.1;

步骤s6.0:上连链表搬移dma检查链表实行是否结束,如果未结束,则返回步骤s4.0继续链表搬移过程,如果结束,则实行步骤s7.0结束上连链表搬移dma的操作;

步骤s6.1:上连数据搬移dma实行流控fifo中的一条控制信息,将数据写入硬件加速单元的输入fifo中。在硬件加速单元获得输入fifo数据后,实行步骤s6.2的启动操作,同时上连数据搬移dma实行步骤s7.1,检查数据搬移是否结束;

步骤s6.2:硬件加速单元启动,并将处理后的数据写入输出fifo,然后实行步骤s7.2,检查数据处理是否结束;

步骤s7.0:上连链表搬移dma结束;

步骤s7.1:上连数据搬移dma检查流控fifo是否实行结束,如果未结束,则返回步骤s6.1继续数据搬移,如果结束,则实行步骤s8.0结束上连数据搬移dma操作;

步骤s7.2:硬件加速单元检查数据处理是否结束,如果未结束,则返回步骤s6.2继续数据处理,如果结束,则实行步骤s8.2结束数据处理;

步骤s8.0:上连数据搬移dma结束操作;

步骤s8.1:下连数据搬移dma实行流控fifo中的一条控制信息,将数据从硬件加速单元的输出fifo中搬出;然后实行步骤s9.1检查流控fifo是否结束;

步骤s9:下连链表搬移dma检查链表实行是否结束,如果未结束,则返回步骤s5.1继续链表搬移过程,如果结束,则实行步骤s10.0结束下连链表搬移dma的操作;

步骤s9.1:下连数据搬移dma检查流控fifo是否实行结束,如果未结束,则返回步骤s8.1继续数据搬移,如果结束,则实行步骤s10.1结束上连数据搬移dma操作;

步骤s10.0:下连链表搬移dma结束;

步骤s10.1:下连数据搬移dma结束;

步骤s11:控制流水过程结束。

此外,本领域技术人员可以理解,图2所示的流程仅为举例说明,并不构成对本发明在细节上的限定。例如链表和流控方式可以用其他控制形式来实现,例如直接通过状态机控制。本领域技术人员还应理解,除芯片设计之外,本发明的实质方案同样适用于类似的设计场景,诸如fpga,cpld设计等。

从上述流程可以看出,本发明在由App准备好控制链表之后,按序实行流控fifo中控制信息,链表搬移和数据搬移操作交替实行,直到所有任务实行完毕,整个过程利用硬件流水自动完成,中间无需App参与,极大地提高了数据流水的速度与效率。

尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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

威尼斯人棋牌|威尼斯欢乐娱人城

XML 地图 | Sitemap 地图