一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据流架构芯片中的数据流控装置的制作方法

2022-06-11 05:56:52 来源:中国专利 TAG:


1.本发明实施例涉及数据处理技术领域,尤其涉及一种数据流架构芯片中的数据流控装置。


背景技术:

2.数据流架构是一种计算机体系结构,与传统的冯
·
诺依曼架构或控制流体系结构进行对比,数据流架构没有概念上的指令计数器,它使用粗粒度表示(coarse-grained representation)来提高数据的并行度,并允许编译器同时调度多个顺序循环和功能,以实现更高的吞吐量和更低的延迟。目前,数据流架构已在专用硬件中成功应用,例如数字信号处理、网络路由、图形处理、遥感检测、以及数据库处理等。同时,在当今的许多软件体系结构中(包括数据库引擎设计和并行计算框架),它也占据着非常重要的地位。相较于指令集,数据流的核心就是使每个时钟周期都能进行有效计算,数据不停流入计算单元并完成计算,得到输出后,最终数据将会被存储到内存中或流入下一个流水线操作。由于数据流架构完全依靠数据流转的方式来控制计算,从而消除了由于指令控制和数据搬运而产生的数据开销,因而数据流架构可以为特定应用场景提供更高的芯片利用率。
3.在数据流架构芯片中,大量的数据首先会被分割成若干块,然后在不同功能模块间搬移、流动,并在功能模块内完成计算处理的过程。因为这些被切分后的数据就像水流一样在各个模块间转移、处理,因此称这些数据为数据流。这些数据流从哪个功能模块流向到另外哪个功能模块,以及数据流动的快慢都需要控制,这个控制的过程称为数据流控。数据流架构中,数据流控是其非常重要的一环,它决定了数据搬运的效率。只有数据搬运效率够高,才能保证数据处理的高效性。否则,就会频繁出现数据处理模块等待数据的现象。
4.传统的数据流控是上下游之间通过valid和ready两个握手信号来控制的。具体来讲,当下游准备好接收数据时,就将ready信号设置成高电平,上游模块接收到ready信号后,就可以发送数据给下游,每次发送数据的时候都要将valid信号拉高,用于告知下游模块当前发送的数据是有效的。虽然通过valid和ready握手信号进行上下游数据处理模块交流信息是很常见的一种方式,但是,当系统中有很多个模块串联起来时,同时,为了保证各个功能模块能够更高效的同步工作,常常使用一根ready信号,连接到很多模块,驱动很多寄存器电路,然后这些被驱动的模块以及相应的电路在下游模块ready时,一起开始工作,在下游模块没有ready的时候,一起暂停工作。如此,带来的最大的问题就是,ready信号散出太大,电路绕线复杂,时序收敛非常困难。


技术实现要素:

5.本发明实施例提供一种数据流架构芯片中的数据流控装置,以解决使用valid和ready两个握手信号进行数据流控制的弊端,解决ready信号散出太大、时序收敛困难的问题。
6.第一方面,本发明实施例提供了一种数据流架构芯片中的数据流控装置,该装置
包括:至少一个第一数据缓存模块、至少一个运算模块和至少一个第二数据缓存模块;其中,
7.所述第二数据缓存模块用于向所述第一数据缓存模块发送流控计数信号,所述流控计数信号用于将所述第二数据缓存模块的可接收数据量告知所述第一数据缓存模块;
8.所述第一数据缓存模块用于根据所述流控计数信号依第一次序经由各个所述运算模块向所述第二数据缓存模块发送数据信号和生效信号,所述生效信号用于指示对应的所述数据信号的状态为有效。
9.可选的,所述流控计数信号为高电平信号,所述流控计数信号每持续一个时钟周期的高电平,代表所述第二数据缓存模块可接收一个数据。
10.可选的,所述第二数据缓存模块具体用于依第二次序经由各个所述运算模块向所述第一数据缓存模块发送所述流控计数信号。
11.可选的,每个所述第一数据缓存模块中包括第一流控计数器,每个所述第二数据缓存模块中包括第二流控计数器,每个所述运算模块中包括第三流控计数器和第四流控计数器;其中,
12.所述第一流控计数器用于计算当前所述第一数据缓存模块接收到的可接收数据量;
13.所述第二流控计数器用于计算当前所述第二数据缓存模块已发送的可接收数据量;
14.所述第三流控计数器用于计算当前各个所述运算模块接收到的可接收数据量;
15.所述第四流控计数器用于模拟对应的所述运算模块的输入输出数据个数变化,以根据接收到的可接收数据量计算应发送的可接收数据量。
16.可选的,每个所述运算模块中还包括存储队列,用于缓存数据,所述存储队列的深度大于所述流控计数信号的传递延迟与所述数据信号的传递延迟之和。
17.可选的,若所述运算模块中包括除激活函数模块以外的其他运算模块,则所述装置还包括流控计数转换模块,且所述流控计数转换模块与所述其他运算模块一一对应,所述流控计数转换模块用于模拟对应的所述运算模块的输入输出数据个数变化;
18.相应的,所述第二数据缓存模块具体用于依第三次序经由各个所述流控计数转换模块向所述第一数据缓存模块发送所述流控计数信号,所述流控计数转换模块具体用于根据接收到的可接收数据量计算应发送的可接收数据量。
19.可选的,若所述运算模块中仅包括激活函数模块,则所述第二数据缓存模块具体用于直接向所述第一数据缓存模块发送所述流控计数信号。
20.可选的,每个所述第一数据缓存模块中包括第一流控计数器,每个所述第二数据缓存模块中包括第二流控计数器;所述第一流控计数器用于计算当前所述第一数据缓存模块接收到的可接收数据量,所述第二流控计数器用于计算当前所述第二数据缓存模块已发送的可接收数据量。
21.可选的,所述流控计数转换模块包括初始值为0的第一计数器和第二计数器;其中,
22.所述第一计数器用于计算当前对应的所述流控计数转换模块接收到的可接收数据量,并在每接收到一个可接收数据量时递增1;
23.所述第二计数器用于计算当前对应的所述流控计数转换模块已发送的可接收数据量,并当所述第一计数器不为0时,每发送出一个可接收数据量时递增1,当已发送第一数量个可接收数据量时清零,同时所述第一计数器递减1;其中,所述第一数量为对应的所述运算模块的输入输出数据个数变化比。
24.可选的,所述流控计数转换模块具体用于若所述第一计数器不大于0,则暂停向外发送可接收数据量。
25.本发明实施例提供了一种数据流架构芯片中的数据流控装置,包括至少一个第一数据缓存模块、至少一个运算模块和至少一个第二数据缓存模块,在下游的第二数据缓存模块准备好接收数据时,可以向第一数据缓存模块发送流控计数信号,以将其可接收数据量告知第一数据缓存模块,使得第一数据缓存模块知晓需要发送多少数据,然后第一数据缓存模块即可根据接收到的流控计数信号依一定次序经由各个运算模块向第二数据缓存模块发送数据信号和生效信号,其中的生效信号可以指示在对应时序内的数据是有效的。本发明实施例所提供的数据流架构芯片中的数据流控装置,通过使用流控计数信号实现数据流控,在保证数据高效流动的同时,避免了因为ready信号散出太大,时序收敛困难的问题,使得芯片电路布局布线、时序收敛等物理实现更容易,减少了芯片物理实现过程的优化迭代次数。
附图说明
26.图1为本发明实施例一提供的数据流架构芯片中的数据流控装置的结构示意图;
27.图2为本发明实施例一提供的另一种数据流架构芯片中的数据流控装置的结构示意图;
28.图3为本发明实施例一提供的另一种数据流架构芯片中的数据流控装置的结构示意图;
29.图4为本发明实施例一提供的另一种数据流架构芯片中的数据流控装置的结构示意图。
具体实施方式
30.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
31.在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
32.此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本技术的范围的情况下,可以将第一运算模块称为第二运算模块,且类似地,可将第二运算模块称为第一运算模
块。第一运算模块和第二运算模块两者都是运算模块,但其不是同一运算模块。术语“第一”、“第二”等不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
33.实施例一
34.图1为本发明实施例一提供的数据流架构芯片中的数据流控装置的结构示意图,本实施例可适用于在数据流架构芯片中进行数据流控的情况。如图1所示,该装置包括:至少一个第一数据缓存模块11(图1中以包括两个第一数据缓存模块11为例进行示出)、至少一个运算模块12(图1中以包括三个运算模块12为例进行示出)和至少一个第二数据缓存模块13(图1中以包括一个第二数据缓存模块13为例进行示出);其中,所述第二数据缓存模块13用于向所述第一数据缓存模块11发送流控计数信号,所述流控计数信号用于将所述第二数据缓存模块13的可接收数据量告知所述第一数据缓存模块11;所述第一数据缓存模块11用于根据所述流控计数信号依第一次序经由各个所述运算模块12向所述第二数据缓存模块13发送数据信号和生效信号,所述生效信号用于指示对应的所述数据信号的状态为有效。
35.具体的,基于数据传输方向,上游模块到下游模块之间有一组数据信号和一根生效信号(valid信号),如某个第一数据缓存模块11到第一个运算模块12之间以及第一个运算模块12到第二个运算模块12之间等等,直至连接到某个第二数据缓存模块13为止,图1中以实线进行示出,表示上游模块向下游模块传输数据信号和生效信号。具体可以当生效信号为高电平时代表数据有效,而当生效信号为低电平时代表数据无效,因此每当上游模块需要向下游模块发送数据时,可以将相应的生效信号拉高,以告知下游模块当前发送的数据是有效的。其中,第一次序即数据根据需要依次经过各个运算模块12进行处理的顺序。
36.同时,下游模块可以连接一根流控计数信号(credit信号)到上游模块,该信号可以告知上游模块,下游模块可以接收多少数据。具体可以从第二数据缓存模块13出发,根据第二数据缓存模块13的可接收数据量不断的向前传递,并根据各个运算模块12的输入输出数据个数变化确定最终第一数据缓存模块11的可发送数据量,即第二数据缓存模块13发出的流控计数信号经过各个运算模块12会做出相应的调整,从而第一数据缓存模块11可以根据接收到的流控计数信号确定需要发送多少数据,并可以相应生成数据信号及生效信号。其中,在数据流架构的卷积神经网络芯片中,基于数据传输方向,运算模块12具体可以依次包括卷积运算模块、激活函数模块、池化运算模块及其他运算模块等等。
37.其中,可选的,所述流控计数信号为高电平信号,所述流控计数信号每持续一个时钟周期的高电平,代表所述第二数据缓存模块13可接收一个数据。具体的,在默认状态下,流控计数信号可以是低电平,当流控计数信号为高电平时,每持续一个时钟周期,则可以代表第二数据缓存模块13可以接收一个数据,示例性的,假如流控计数信号高电平持续了三个时钟周期,则代表第二数据缓存模块13可以接收三个数据,同时代表上游模块可以发送三个数据。这样在上游模块发送数据时,不需要实时检测ready信号,也避免ready信号被连接到很多个寄存器电路上。
38.在上述技术方案的基础上,可选的,所述第二数据缓存模块13具体用于依第二次序经由各个所述运算模块12向所述第一数据缓存模块11发送所述流控计数信号。具体的,
流控计数信号可以直接通过各个运算模块12本身进行传递,具体可以在原有的各个运算模块12内部增加各种功能单元来实现。其中,第二次序即数据根据需要依次经过各个运算模块12进行处理的顺序的倒序。
39.进一步可选的,如图2所示,每个所述第一数据缓存模块11中包括第一流控计数器111,每个所述第二数据缓存模块13中包括第二流控计数器131,每个所述运算模块12中包括第三流控计数器121和第四流控计数器122;其中,所述第一流控计数器111用于计算当前所述第一数据缓存模块11接收到的可接收数据量;所述第二流控计数器131用于计算当前所述第二数据缓存模块13已发送的可接收数据量;所述第三流控计数器121用于计算当前各个所述运算模块12接收到的可接收数据量;所述第四流控计数器122用于模拟对应的所述运算模块12的输入输出数据个数变化,以根据接收到的可接收数据量计算应发送的可接收数据量。具体的,可以通过在各个模块中设置流控计数器来实现流控计数信号的传输,具体可以在第二数据缓存模块13中设置第二流控计数器131,来计算当前第二数据缓存模块13已发送的可接收数据量(如可以是已发送的高电平时钟周期数),从而可以确定第二数据缓存模块13还可以接收多少数据,进而继续向其上游模块发送流控计数信号;可以在第一数据缓存模块11中设置第一流控计数器111,来计算当前第一数据缓存模块11接收到的可接收数据量(如可以是接收到的高电平时钟周期数),从而可以确定第一数据缓存模块11的可发送数据量,并生成相应的数据信号及生效信号到下游模块;可以在运算模块12中设置第三流控计数器121和第四流控计数器122,并通过第三流控计数器121计算当前对应的运算模块12接收到的可接收数据量(如可以是接收到的高电平时钟周期数),再通过第四流控计数器122模拟对应的运算模块12的输入输出数据个数变化来计算应发送的可接收数据量(如可以是应发送的高电平时钟周期数),从而实现流控计数信号从第二数据缓存模块13经由各个运算模块12到第一数据缓存模块11的传递,以使得第一数据缓存模块11根据最终接收到的流控计数信号确定其可发送数据量。
40.进一步可选的,每个所述运算模块12中还包括存储队列,用于缓存数据,所述存储队列的深度大于所述流控计数信号的传递延迟与所述数据信号的传递延迟之和。具体的,为了避免流控计数信号传递延迟以及数据信号传递延迟带来的数据流断流等性能损失,可以在下游数据接收模块中使用一个深度足够大的存储队列(具体可以是fifo)来缓存接收到的数据,同时在数据流架构的卷积神经网络芯片中的数据缓存模块(buffer)的存储空间相较于运算模块内的存储空间要大很多,且本身功能也是用于缓存数据,因此这里的下游数据接收模块可以仅包括各个运算模块12,而在第一数据缓存模块11和第二数据缓存模块13中无需增加存储队列。
41.在上述技术方案的基础上,可选的,如图3所示,若所述运算模块12中包括除激活函数模块以外的其他运算模块(图3中以不包括激活函数模块为例进行示出),则所述装置还包括流控计数转换模块14,且所述流控计数转换模块14与所述其他运算模块一一对应,所述流控计数转换模块14用于模拟对应的所述运算模块12的输入输出数据个数变化;相应的,所述第二数据缓存模块13具体用于依第三次序经由各个所述流控计数转换模块14向所述第一数据缓存模块11发送所述流控计数信号,所述流控计数转换模块14具体用于根据接收到的可接收数据量计算应发送的可接收数据量。具体的,在数据流架构的卷积神经网络芯片中,通常有三个或多个用于数据缓存的buffer(可作为第一数据缓存模块11和第二数
据缓存模块13)和一些卷积神经网络运算模块(可作为运算模块12),而且buffer的存储空间相较其他卷积神经网络运算模块内的存储空间大很多,同时采用上述直接通过各个运算模块12本身传递流控计数信号的方式增加了电路面积,又因涉及每个模块的改动而造成改动量过大。仔细分析架构发现,如果第二数据缓存模块13不产生数据反压,各个运算模块12也不会产生数据反压,即如果第二数据缓存模块13的存储空间足够大,则第一数据缓存模块11是可以一直发送数据的,同样各个运算模块12也可以一直执行运算。因此,可以仅仅在运算模块12外增加流控计数转换模块14,用于模拟各个运算模块12的输入输出数据个数变化即可,而无需在各个运算模块12内部增加流控相关单元。具体可以通过流控计数转换模块14接收第二数据缓存模块13发送的流控计数信号,确定接收到的可接收数据量(如可以是接收到的高电平时钟周期数),然后模拟对应的运算模块12的输入输出数据个数变化来计算应发送的可接收数据量(如可以是应发送的高电平时钟周期数),从而实现流控计数信号从第二数据缓存模块13经由各个流控计数转换模块14到第一数据缓存模块11的传递,以使得第一数据缓存模块11根据最终接收到的流控计数信号确定其可发送数据量。在数据流架构芯片中,流控计数转换模块14是为了模拟各个运算模块12的输入输出数据个数变化,示例性的,针对卷积运算模块,输入一个卷积框的数据后,假设卷积框的数据数量为n,才能产生一个数据输出,那么卷积运算模块对应的流控计数转换模块14的功能就是每接收到一个时钟周期的高电平,继续向第一数据缓存模块11方向发送n个时钟周期的高电平。另外,由于激活函数模块每输入一个数据,就产生一个数据输出,输入数据与输出数据的个数完全相同,因此不需要进行流控计数转换,也就不需要增加对应的流控计数转换模块14,即若运算模块12中包括激活函数模块,则可以将其下游模块或下游模块对应的流控计数转换模块14发出的流控计数信号直接传输到其上游模块或上游模块对应的流控计数转换模块14。其中,第三次序可以是第二次序(激活函数模块除外)对应的流控计数转换模块14的顺序。
42.进一步可选的,若所述运算模块12中仅包括激活函数模块,则所述第二数据缓存模块13具体用于直接向所述第一数据缓存模块11发送所述流控计数信号。具体的,如上所述,激活函数模块无需增加对应的流控计数转换模块,因此,若运算模块12中仅包括激活函数模块,则可以直接由第二数据缓存模块13向第一数据缓存模块11发送流控计数信号。
43.进一步可选的,如图4所示,每个所述第一数据缓存模块11中包括第一流控计数器111,每个所述第二数据缓存模块13中包括第二流控计数器131;所述第一流控计数器111用于计算当前所述第一数据缓存模块11接收到的可接收数据量,所述第二流控计数器131用于计算当前所述第二数据缓存模块13已发送的可接收数据量。具体的,可以在第二数据缓存模块13中设置第二流控计数器131,来计算当前第二数据缓存模块13已发送的可接收数据量(如可以是已发送的高电平时钟周期数),从而可以确定第二数据缓存模块13还可以接收多少数据,进而继续向其上游模块发送流控计数信号。可以在第一数据缓存模块11中设置第一流控计数器111,来计算当前第一数据缓存模块11接收到的可接收数据量(如可以是接收到的高电平时钟周期数),从而可以确定第一数据缓存模块11的可发送数据量,并生成相应的数据信号及生效信号到下游模块。通过使用流控计数转换模块传递流控计数信号,并在第一数据缓存模块11和第二数据缓存模块13中增加流控相关单元,可以将第二数据缓存模块13的存储信息准确及时的传递给上游的第一数据缓存模块11,第一数据缓存模块11在发送数据前也可以准确的知道需要发送多少数据给下游的各个运算模块12,既不会造成
数据传送错误(如发送数据太多导致数据覆盖),又能保证数据高效的传送。而且第一数据缓存模块11与第二数据缓存模块13中也无需增加用于流控的存储队列,因为同样是用于缓存数据,功能相同,从而避免了电路面积,即以数据流架构芯片中的存储单元作为数据流控的起止点,充分借助各个存储单元来缓存数据,减少了流控节点,避免了因采用上述流控方式而消耗更多的存储资源及增加设计复杂度。
44.进一步可选的,所述流控计数转换模块14包括初始值为0的第一计数器和第二计数器;其中,所述第一计数器用于计算当前对应的所述流控计数转换模块14接收到的可接收数据量,并在每接收到一个可接收数据量时递增1;所述第二计数器用于计算当前对应的所述流控计数转换模块14已发送的可接收数据量,并当所述第一计数器不为0时,每发送出一个可接收数据量时递增1,当已发送第一数量个可接收数据量时清零,同时所述第一计数器递减1;其中,所述第一数量为对应的所述运算模块12的输入输出数据个数变化比。具体的,每个流控计数转换模块14可以在每接收到一个时钟周期高电平时,其中的第一计数器递增1,对应每发送出n个时钟周期高电平后,其中的第一计数器递减1,从而可以根据第一计数器的数值确定流控计数转换模块14的可发送数据量,其中,n即第一数量。相应的,每个流控计数转换模块14的第二计数器用于对n计数,当第一计数器不为0时,每发送出一个时钟周期高电平,第二计数器递增1,当发送了n个时钟周期高电平后,将第二计数器清零,然后可以再次判断第一计数器是否大于0,如果大于0,则可以再次发送n个时钟周期高电平出去,从而可以通过第一计数器和第二计数器实现每接收到一个时钟周期高电平,即向外发送n个时钟周期高电平,以模拟对应运算模块12的输入输出数据个数变化。当然,上述方案适用输入输出数据个数变化比为n比1的情况,n为正整数,还可以考虑输入输出数据个数变化比为1比n及n比m等情况,对应可通过调整第一计数器和第二计数器的计数方式来实现,在此不在累述。
45.进一步可选的,所述流控计数转换模块具体用于若所述第一计数器不大于0,则暂停向外发送可接收数据量,即还可以通过第一计数器的数值控制流控计数信号的发出,以保证最终第一数据缓存模块11接收到的可接收数据量是准确的。
46.本发明实施例所提供的数据流架构芯片中的数据流控装置,包括至少一个第一数据缓存模块、至少一个运算模块和至少一个第二数据缓存模块,在下游的第二数据缓存模块准备好接收数据时,可以向第一数据缓存模块发送流控计数信号,以将其可接收数据量告知第一数据缓存模块,使得第一数据缓存模块知晓需要发送多少数据,然后第一数据缓存模块即可根据接收到的流控计数信号依一定次序经由各个运算模块向第二数据缓存模块发送数据信号和生效信号,其中的生效信号可以指示在对应时序内的数据是有效的。通过使用流控计数信号实现数据流控,在保证数据高效流动的同时,避免了因为ready信号散出太大,时序收敛困难的问题,使得芯片电路布局布线、时序收敛等物理实现更容易,减少了芯片物理实现过程的优化迭代次数。
47.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献