1.本技术涉及电子电路技术领域,特别是涉及一种卷积数据处理方法、装置、卷积运算加速器、存储介质和计算机程序产品。
背景技术:
2.在数据处理技术领域中,通常使用fpga(field programmable gate array,现场可编程门阵列)芯片来执行的相关卷积运算,例如通过fpga芯片来执行图像数据的卷积计算。
3.传统技术中,使用fpga芯片的计算单元实现卷积运算,都需要通过触发器(flip flop)对数据进行打拍延迟处理,从而控制卷积数据在fpga芯片中的时序正确性;但是,这种方式会消耗大量的触发器资源,导致电路规模增加。
技术实现要素:
4.基于此,有必要针对上述技术问题,提供一种能够降低电路规模的卷积数据处理方法、装置、卷积运算加速器、计算机可读存储介质和计算机程序产品。
5.第一方面,本技术提供了一种卷积数据处理方法。所述方法包括:接收输入到集成电路芯片中的待处理数据;对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息;根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。
6.在其中一个实施例中,所述对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息,包括:通过前置电路对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息。
7.在其中一个实施例中,所述前置电路包括延迟装置;所述延迟装置通过至少一个寄存器构成。
8.在其中一个实施例中,对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息,包括:确定所述待处理数据对应的数据组;当所述待处理数据包括至少两个数据组时,将所述待处理数据中的第一数据组发送至卷积计算单元,对所述待处理数据中除所述第一数据组以外的数据组进行延迟处理,得到所述待处理数据中除所述第一数据组以外的数据组的延迟时序信息。
9.在其中一个实施例中,对所述待处理数据中除所述第一数据组以外的数据组进行延迟处理,得到所述待处理数据中除所述第一数据组以外的数据组的延迟时序信息,包括:对所述待处理数据中除所述第一数据组以外的数据组的时序进行延迟处理,得到所述待处理数据中除所述第一数据组以外的每个数据组的第一延迟时序信息;
根据所述第一延迟时序信息,将所述待处理数据中的第二数据组发送至所述卷积计算单元;对所述待处理数据中除所述第一数据组和所述第二数据组以外的每个数据组的第一延迟时序信息进行延迟处理,得到所述待处理数据中除所述第一数据组和所述第二数据组以外的每个数据组的第二延迟时序信息;根据所述第二延迟时序信息,将所述待处理数据的第三数据组发送到所述卷积计算单元,直到将所述待处理数据中的最后一个数据组发送到所述卷积计算单元。
10.在其中一个实施例中,根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果,包括:获取所述待处理数据对应的权重;根据所述待处理数据的延迟时序信息,分别将所述待处理数据和所述待处理数据对应的权重输入到所述卷积计算单元进行卷积运算,得到所述卷积计算单元输出的所述卷积处理结果。
11.在其中一个实施例中,分别将所述待处理数据和所述待处理数据对应的权重输入到所述卷积计算单元进行卷积运算,得到所述卷积计算单元输出的所述卷积处理结果,包括:根据各个所述卷积计算单元,分别对所述待处理数据中各数据组和所述各数据组对应的权重进行乘加运算,得到所述各个所述卷积计算单元输出的乘加运算结果;所述各个所述卷积单元以并行方式进行乘加运算;对所述各个所述卷积计算单元输出的乘加运算结果进行相加,得到所述卷积处理结果。
12.在其中一个实施例中,根据各个所述卷积计算单元,分别对所述待处理数据中各数据组和所述各数据组对应的权重进行乘加运算,得到所述各个所述卷积计算单元输出的乘加运算结果,包括:在各个所述卷积计算单元中,分别对第一数据组和所述第一数据组对应的权重进行乘加运算,得到第一乘加运算结果;根据第一延迟时序信息,触发所述卷积计算单元对第二数据组、所述第二数据组对应的权重和所述第一乘加运算结果进行乘加运算,得到第二乘加运算结果;根据第二延迟时序信息,触发所述卷积计算单元对第三数据组、所述第三数据组对应的权重和所述第二乘加运算结果进行乘加运算,得到第三乘加运算结果,直到得到所述乘加运算结果。
13.第二方面,本技术还提供了一种卷积数据处理装置。所述装置包括:数据接收模块,用于接收输入到集成电路芯片中的待处理数据;前置电路模块,用于对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息;卷积运算模块,用于根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。
14.第三方面,本技术还提供了一种卷积运算加速器。所述卷积运算加速器包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下
步骤:接收输入到集成电路芯片中的待处理数据;对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息;根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。
15.第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收输入到集成电路芯片中的待处理数据;对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息;根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。
16.第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:接收输入到集成电路芯片中的待处理数据;对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息;根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。
17.上述卷积数据处理方法、装置、卷积运算加速器、存储介质和计算机程序产品,通过接收输入到集成电路芯片中的待处理数据,对待处理数据的时序进行延迟处理,得到待处理数据的延迟时序信息;根据待处理数据的延迟时序信息,将待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。采用本方法,先对输入到集成电路芯片中的待处理数据进行延迟延迟处理,再利用卷积计算单元进行卷积处理,相较于在卷积计算单元中对待处理数据进行延迟处理,本方法消耗了更少的用于处理延迟的资源,有效地降低了集成电路芯片的电路规模。
附图说明
18.图1为一个实施例中卷积数据处理方法的流程示意图;图2为一个实施例中卷积数据处理方法的逻辑结构图;图3为一个实施例中获取待处理数据的延迟时序信息步骤的流程示意图;图4为一个实施例中前置电路进行延迟处理的逻辑结构图;图5为一个实施例中卷积核进行卷积运算的逻辑结构图;图6为另一个实施例中卷积数据处理方法的流程示意图;图7为一个实施例中卷积数据处理装置的结构框图。
具体实施方式
19.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
20.在一个实施例中,如图1所示,提供了一种卷积数据处理方法,该方法可以应用于
卷积运算加速器对深度神经网络的卷积运算中,该卷积运算加速器可以是集成电路芯片,当然也可以包括其他能够进行卷积运算的芯片。在本实施例中,该方法包括以下步骤:步骤s101,接收输入到集成电路芯片中的待处理数据。
21.其中,集成电路芯片可以包括fpga(field programmable gate array,现场可编程逻辑门阵列)芯片。
22.其中,待处理数据指的是需要进行卷积运算的数据,例如可以是用于卷积运算的图像数据、语音数据或点云数据。待处理数据可以为n*n结构,其中,n可以是1、2、3、4、5等,在此不进行具体限定。
23.具体地,数据流将需要进行卷积运算的待处理数据输入到卷积运算加速器中,卷积运算加速器接收待处理数据。
24.步骤s102,对待处理数据的时序进行延迟处理,得到待处理数据的延迟时序信息。
25.其中,延迟时序信息指的是延迟的时钟周期的信息。
26.具体地,图2展示了一种卷积数据处理方法的逻辑结构图,如图2所示,卷积运算加速器中布置有前置电路;通过前置电路中的延迟装置21,对待处理数据中各数据的时序进行延迟处理,得到待处理数据中各数据的延迟时序信息,延迟处理用于确保卷积运算加速器中时序正确。
27.步骤s103,根据待处理数据的延迟时序信息,将待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。
28.其中,卷积计算单元指的是卷积运算加速器中的计算单元,用于实现卷积运算。卷积计算单元可以是fpga芯片底层的dsp(digital signal processing,数字信号处理)单元,其中dsp单元包括dsp48的ip核。
29.具体地,卷积运算加速器根据待处理数据的延迟时序信息,将待处理数据发送到卷积计算单元,卷积运算加速器通过级联的多个卷积计算单元对接收的数据进行卷积运算,得到待处理数据对应的卷积运算结果。
30.实际应用中,在卷积神经网络中,常需要并行复用卷积计算单元同时进行待处理数据的卷积运算,如图2所示,单通道输入待处理数据,前置电路对待处理数据进行延迟处理,得到待处理数据的延迟时序信息;进而根据待处理数据的延迟时序信息,待处理数据发送至卷积核22中进行卷积运算,得到卷积核22输出的卷积运算结果,其中,一个卷积核对应于一个输出通道,即得到多通道输出的卷积运算结果。需要说明的是,卷积核由多个卷积计算单元级联构成,传统技术需要各个卷积计算单元对待处理数据进行延迟处理,在处理多通道输出时,传统技术的多个卷积核会消耗大量的用于处理延迟的资源,而本方法使用前置电路统一对待处理数据进行延迟处理,无需卷积核中的卷积计算单元进行延迟处理,以减少多通道输出时用于处理延迟的资源。
31.上述卷积数据处理方法中,通过接收输入到集成电路芯片中的待处理数据,对待处理数据的时序进行延迟处理,得到待处理数据的延迟时序信息;根据待处理数据的延迟时序信息,将待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。采用本方法,先对输入到集成电路芯片中的待处理数据进行延迟处理,再利用卷积计算单元进行卷积处理,相较于在卷积计算单元中对待处理数据进行延迟处理,本方法消耗了更少的用于处理延迟的资源,有效地降低了集成电路芯片的电路规模。
32.在一个实施例中,上述步骤s102,对待处理数据的时序进行延迟处理,得到待处理数据的延迟时序信息,具体包括如下步骤:通过前置电路对待处理数据的时序进行延迟处理,得到待处理数据的延迟时序信息。
33.具体地,如图2所示,卷积运算加速器通过前置电路对待处理数据中的数据组进行信号打拍,得到待处理数据的延迟时序信息。其中,信号打拍用于控制待处理数据中数据组的时序。例如,对数据组打一拍是指将数据组延迟一个时钟周期,对数据组打两拍就是延迟两个时钟周期,打r拍就是延长r个时钟周期,其中r为正整数。
34.本实施例中,通过设置前置电路来对待处理数据统一进行延迟处理,能够减少多通道输出时所需消耗的寄存器资源,从而有效地降低了电路面积,进而降低了集成电路芯片的功耗。
35.在一个实施例中,前置电路包括延迟装置;延迟装置通过至少一个寄存器构成。
36.具体地,如图2所示,延迟装置21可以是寄存器。延迟装置可以通过至少一个寄存器构成。flipflop(触发器)是寄存器的基本组成单元,卷积运算加速器利用flipflop在前置电路上对待处理数据中的数据组进行信号打拍,从而改变数据组的输出时序。
37.在一个实施例中,如图3所示,上述步骤s102,对待处理数据的时序进行延迟处理,得到待处理数据的延迟时序信息,具体包括如下步骤:步骤s301,确定待处理数据对应的数据组。
38.步骤s302,当待处理数据包括至少两个数据组时,将待处理数据中的第一数据组发送至卷积计算单元,对待处理数据中除第一数据组以外的数据组进行延迟处理,得到待处理数据中除第一数据组以外的数据组的延迟时序信息。
39.其中,数据组指的是由待处理数据中的数据构成的数据集合。数据组可以是待处理数据中的一列数据,也可以是待处理数据中的一行数据,当然也可以是其他形式的数据构成的数据组。
40.具体地,卷积运算加速器根据预设的数据组确定方式,获取待处理数据对应的数据组;当待处理数据包括一个数据组时,将待处理数据发送至卷积计算单元;当待处理数据包括至少两个数据组时,先将待处理数据中的第一组数据直接发送至卷积计算单元,即待处理数据中的第一组数据无需进行延迟处理,然后对待处理数据中除第一数据组以外的各组数据组进行延迟处理,得到待处理数据中除第一数据组以外的数据组的延迟时序信息。
41.本实施例中,卷积运算加速器确定待处理数据对应的数据组,将待处理数据中的第一数据组发送至卷积计算单元,对待处理数据中除第一数据组以外的数据组进行延迟处理,得到待处理数据中除第一数据组以外的数据组的延迟时序信息,实现了待处理数据的时序合理延迟,确保了卷积运算加速器的时序正确。
42.在一个实施例中,上述步骤s302,对待处理数据中除第一数据组以外的数据组进行延迟处理,得到待处理数据中除第一数据组以外的数据组的延迟时序信息,具体包括如下步骤:对待处理数据中除第一数据组以外的数据组的时序进行延迟处理,得到待处理数据中除第一数据组以外的每个数据组的第一延迟时序信息;根据第一延迟时序信息,将待处理数据中的第二数据组发送至卷积计算单元;对待处理数据中除第一数据组和第二数据组以外的每个数据组的第一延迟时序信息进行延迟处理,得到待处理数据中除第一数据组和第二数据组以外的每个数据组的第二延迟时序信息;根据第二延迟时序信息,将待处理
数据的第三数据组发送到卷积计算单元,直到将待处理数据中的最后一个数据组发送到卷积计算单元。
43.其中,延迟处理指的是将时序延迟一个时钟周期。
44.具体地,卷积运算加速器首先利用延迟装置将待处理数据中的第一组数据直接发送到卷积计算单元,然后利用延迟装置对待处理数据中除第一数据组以外的数据组的时序延迟一个时钟周期,得到待处理数据中除第一数据组以外的每个数据组的第一延迟时序信息,即第一延迟时序信息表示延迟了一个时钟周期;根据第一延迟时序信息,将待处理数据中的第二数据组发送至卷积计算单元;利用延迟装置对待处理数据中除第一数据组和第二数据组以外的每个数据组的第一延迟时序信息再次延迟一个时钟周期,得到待处理数据中除第一数据组和第二数据组以外的每个数据组的第二延迟时序信息,即第二延迟时序信息表示延迟两个时钟周期;根据第二延迟时序信息,将待处理数据的第三数据组发送到卷积计算单元,直到将待处理数据中的最后一个数据组发送到卷积计算单元。
45.其中,需要延迟装置处理延迟的次数等于数据组的数量减一,而每次延迟处理的数据量等于待处理数据的数据总量减去已发送的数据组的数据量。以3*3的待处理数据为例,每3个数据设为一组,则第一组中的3个数据直接发送到卷积计算单元,延迟装置对剩下的第二组和第三组,共6个数据进行延迟处理,然后将第二组中的3个数据发送到卷积计算单元,延迟装置对剩下的第三组,共3个数据进行延迟处理,最后将第三组中的3个数据发送到卷积计算单元,因此,一共进行了两次延迟处理,第一次延迟处理共处理了6个数据,第二次延迟处理共处理了3个数据,总共处理了9个数据。
46.在实际应用中,步骤为:(1)将待处理数据中的第一组数据直接发送到卷积计算单元;(2)对待处理数据中除已发送的数据组以外的数据组的时序进行延迟处理;(3)在延迟处理后,将待处理数据中剩下的数据组中的第一组数据发送到卷积计算单元;循环上述步骤(2)至(3),直到将待处理数据中的最后一个数据组发送到卷积计算单元。
47.图4展示了前置电路进行延迟处理的逻辑结构图,如图4所示,待处理数据为n*n结构,按照列来确定待处理数据的数据组;将第一组数据(d11、d12、d13、d14、
…
、d1n)直接发送到卷积计算单元;将以d21、d31、d41、
…
、dn1为首的n-1个数据组的时序延迟1个时钟周期,并将延迟后的第二数据组(d21、d22、d23、d24、
…
、d2n)发送到卷积计算单元;接着将以d31、d41、
…
、dn1为首的n-2个数据组的时序再延迟1个时钟周期,即以d31、d41、
…
、dn1为首的n-2个数据组的时序被延迟了2个时钟周期,并将延迟后的第三数据组(d31、d32、d33、d34、
…
、d3n)发送到卷积计算单元;按照相同的方法延迟、发送第四数据组(d41、d42、d43、d44、
…
、d4n)、第五数据组、第六数据组等等,直到将第n数据组(dn1、dn2、dn3、dn4、
…
、dnn)发送到卷积计算单元。
48.进一步地,假设延迟装置处理一个数据需要消耗8bit,以实现一个规模为输入通道为1输出通道为32的5*5待处理数据的卷积运算为例,由于本方法是通过前置电路来实现延迟,因此输出通道的数量对本方法没有影响,则本方法总共消耗1*[(25-5) (25-10) (25-15) (25-20)]*8=400个资源;而传统技术是在卷积核的每个卷积计算单元上设置延迟,由于一个输出通道对应一个卷积核,则每多一个输出通道至少需要消耗多一倍的资源,即传统技术至少需要消耗400*32=12800个资源。因此,本方法大大减少了需要用于延迟处理的资源。
[0049]
本实施例中,通过前置电路对待处理数据中除第一数据组以外的数据组进行延迟处理,依次得到待处理数据中除第一数据组以外的数据组的延迟时序信息,进而后续以延迟时序信息为依据,将待处理数据中的各数据组发送到卷积计算单元中,以便于执行后续的卷积运算步骤。采用本方法,通过设置前置电路来对待处理数据统一进行延迟处理,能够大大减少多通道输出时所需消耗的用于延迟处理的资源,从而有效地降低了电路面积,进而降低了集成电路芯片的功耗。
[0050]
在一个实施例中,上述步骤s103,根据待处理数据的延迟时序信息,将待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果,具体包括如下步骤:获取待处理数据对应的权重;根据待处理数据的延迟时序信息,分别将待处理数据和待处理数据对应的权重输入到卷积计算单元进行卷积运算,得到卷积计算单元输出的卷积处理结果。
[0051]
其中,卷积核包括内部存储器(random access memory,ram),内部存储器包括权重ram和数据ram,权重ram中存储有待处理数据对应的权重。数据ram用于存储待处理数据的各个数据组。
[0052]
具体地,卷积运算加速器查询卷积核,得到卷积核中与待处理数据对应的权重,根据待处理数据的延迟时序信息,触发卷积计算单元对待处理数据和待处理数据对应的权重进行卷积运算,得到输出的卷积处理结果。
[0053]
进一步地,在进行单通道输入、多通道输出时,如图2所示,卷积运算加速器将待处理数据分别输入到并行的多个卷积核中进行卷积运算,其中,各个卷积核中的待处理数据、待处理数据的延迟时序信息和待处理数据对应的权重相等。
[0054]
本实施例中,卷积运算加速器获取待处理数据对应的权重,根据待处理数据的延迟时序信息,分别将待处理数据和待处理数据对应的权重输入到卷积计算单元进行卷积运算,得到卷积计算单元输出的卷积处理结果,实现了待处理数据的卷积运算。
[0055]
在一个实施例中,分别将待处理数据和待处理数据对应的权重输入到卷积计算单元进行卷积运算,得到卷积计算单元输出的卷积处理结果,具体包括如下步骤:根据各个卷积计算单元,分别对待处理数据中各数据组和各数据组对应的权重进行乘加运算,得到各个卷积计算单元输出的乘加运算结果;各个卷积单元以并行方式进行乘加运算;对各个卷积计算单元输出的乘加运算结果进行相加,得到卷积处理结果。
[0056]
其中,乘加运算通过卷积计算单元实现,例如一个ip核的dsp48可以实现一次乘加运算,通过多个卷积计算单元的级联来实现至少包括两个数据组的待处理数据的卷积运算。
[0057]
具体地,卷积运算加速器根据各个卷积计算单元,分别对待处理数据中各数据组和各数据组对应的权重进行乘加运算,得到各个卷积计算单元输出的乘加运算结果,其中各个卷积单元以并行方式进行乘加运算,然后根据各个卷积计算单元之间的级联关系,确定各个卷积计算单元对应的级联层,将级联层中的卷积计算单元输出的乘加运算结果进行累加,得到级联层输出的累加结果,由于各级联层之间以并行方式进行乘加运算,因此各级联层输出的累加结果进行相加,得到卷积处理结果。
[0058]
图5展示了一种卷积核进行卷积运算的逻辑结构图,如图5所示,负责计算d11、d12和d13的卷积计算单元为一个级联层,负责计算d21、d22和d23的卷积计算单元为一个级联层,负责计算d31、d32和d33的卷积计算单元为一个级联层,先计算各级联的累加结果,再将
各级联的累加结果进行相加,得到最终的卷积处理结果。
[0059]
本实施例中,卷积运算加速器通过各个卷积单元以并行方式,对待处理数据中各数据组和各数据组对应的权重进行乘加运算,然后对各个卷积计算单元输出的乘加运算结果进行相加,得到卷积处理结果,实现了待处理数据中各数据组的并行运算,相较于对各数据组进行串行运算,能够提高卷积运算的处理效率。
[0060]
在一个实施例中,根据各个卷积计算单元,分别对待处理数据中各数据组和各数据组对应的权重进行乘加运算,得到各个卷积计算单元输出的乘加运算结果,具体包括如下步骤:在各个卷积计算单元中,分别对第一数据组和第一数据组对应的权重进行乘加运算,得到第一乘加运算结果;根据第一延迟时序信息,触发卷积计算单元对第二数据组、第二数据组对应的权重和第一乘加运算结果进行乘加运算,得到第二乘加运算结果;根据第二延迟时序信息,触发卷积计算单元对第三数据组、第三数据组对应的权重和第二乘加运算结果进行乘加运算,得到第三乘加运算结果,直到得到乘加运算结果。
[0061]
需要说明的是,本实施例中的第一数据组、第二数据组、第三数据组、第一延迟时序信息和第二延迟时序信息与上述实施例中的第一数据组、第二数据组、第三数据组、第一延迟时序信息和第二延迟时序信息具有相同的含义,因此,本实施例中可以直接使用上述实施例得到的第一数据组、第二数据组、第三数据组、第一延迟时序信息和第二延迟时序信息进行乘加运算。
[0062]
具体地,以包含三个数据组的待处理数据为例,卷积运算加速器在各个卷积计算单元中,分别对第一数据组和第一数据组对应的权重进行乘法运算,得到第一乘法运算结果,然后从数据ram中获取一个默认填充值与第一乘法运算结果进行相加运算,得到第一乘加运算结果;根据第一延迟时序信息,触发卷积计算单元对第二数据组、第二数据组对应的权重进行乘法运算,得到第二乘法运算结果,将第二乘法运算结果和第一乘加运算结果进行相加运算,得到第二乘加运算结果;根据第二延迟时序信息,触发卷积计算单元对第三数据组、第三数据组对应的权重进行乘法运算,得到第三乘法运算结果,将第三乘法运算结果和第二乘加运算结果进行相加运算,得到第三乘加运算结果,将第三乘加运算结果作为乘加运算结果。其中,默认填充值可以包括0。
[0063]
进一步地,当待处理数据组包括三个以上数据组时,从第四个数据组起,可以重复执行下述步骤:根据下一时序信息,触发卷积计算单元对下一数据组、下一数据组对应的权重进行乘法运算,得到本次的乘法运算结果,将本次的乘法运算结果和上一次的乘加运算结果进行相加运算,得到下一乘加运算结果;当执行到最后一个数据组时,将本次的乘加运算结果作为乘加运算结果。
[0064]
实际应用中,如图5所示,卷积计算单元包括一个乘法器和一个加法器,通过乘法器对数据d11与权重w11进行乘法运算,得到d11*w11,由于d11属于第一组数据未进行延迟处理,所以需要从卷积核的ram中获取一个默认值0与数据d11和权重w11的乘法运算结果进行相加,得到d11*w11 0,然后卷积计算单元接收延迟一个时钟周期的数据d12,从卷积核的ram中获取数据d12对应的权重w12,将数据d12与权重w12进行乘法运算,得到d12*w12,将d12*w12和d11*w11 0进行累加,得到d11*w11 d12*w12,接着卷积计算单元接收延迟两个时钟周期的数据d13,从卷积核的ram中获取数据d13对应的权重w13,将数据d13与权重w13进行乘法运算,得到d13*w13,将d13*w13和d11*w11 d12*w12进行累加,得到该级联层的乘加
运算结果d11*w11 d12*w12 d13*w13,由于各级联层之间并行运算,同理,可以得到负责计算d21、d22和d23的级联层的乘加运算结果d21*w21 d22*w22 d23*w23,以及负责计算d31、d32和d33的级联层的乘加运算结果d31*w31 d32*w32 d33*w33,最后将各层级联层的乘加运算结果依次进行相加,最终得到的卷积运算结果d11*w11 d12*w12 d13*w13 d21*w21 d22*w22 d23*w23 d31*w31 d32*w32 d33*w33。
[0065]
本实施例中,卷积运算加速器在完成当前数据组和当前数据组对应的权重的乘加运算时,通过时序信息进行下一数据组和下一数据组对应的权重的乘加运算,利用时序信息控制传输到卷积计算单元中的数据组的先后顺序,从而保证卷积运算的正常进行。
[0066]
在一个实施例中,如图6所示,提供了另一种卷积数据处理方法,以该方法应用于卷积运算加速器为例进行说明,包括以下步骤:步骤s601,接收输入到集成电路芯片中的待处理数据;确定待处理数据对应的数据组。
[0067]
步骤s602,当待处理数据包括至少两个数据组时,将待处理数据中的第一数据组发送至卷积计算单元。
[0068]
步骤s603,对待处理数据中除第一数据组以外的数据组的时序进行延迟处理,得到待处理数据中除第一数据组以外的每个数据组的第一延迟时序信息。
[0069]
步骤s604,根据第一延迟时序信息,将待处理数据中的第二数据组发送至卷积计算单元。
[0070]
步骤s605,对待处理数据中除第一数据组和第二数据组以外的每个数据组的第一延迟时序信息进行延迟处理,得到待处理数据中除第一数据组和第二数据组以外的每个数据组的第二延迟时序信息。
[0071]
步骤s606,根据第二延迟时序信息,将待处理数据的第三数据组发送到卷积计算单元,直到将待处理数据中的最后一个数据组发送到卷积计算单元。
[0072]
步骤s607,获取待处理数据对应的权重。
[0073]
步骤s608,根据待处理数据的延迟时序信息,在各个卷积计算单元中,分别对第一数据组和第一数据组对应的权重进行乘加运算,得到第一乘加运算结果。
[0074]
步骤s609,根据第一延迟时序信息,触发卷积计算单元对第二数据组、第二数据组对应的权重和第一乘加运算结果进行乘加运算,得到第二乘加运算结果。
[0075]
步骤s610,根据第二延迟时序信息,触发卷积计算单元对第三数据组、第三数据组对应的权重和第二乘加运算结果进行乘加运算,得到第三乘加运算结果,直到得到乘加运算结果。
[0076]
步骤s611,对各个卷积计算单元输出的乘加运算结果进行相加,得到卷积处理结果。
[0077]
上述卷积数据处理方法,具有以下有益效果:(1)通过设置前置电路来对待处理数据统一进行延迟处理,能够大大减少多通道输出时所需消耗的用于延迟处理的资源,从而有效地降低了电路面积,进而降低了集成电路芯片的功耗;(2)还实现了待处理数据中各数据组的并行运算,相较于对各数据组进行串行运算,能够提高卷积运算的处理效率。
[0078]
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0079]
基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的卷积数据处理方法的卷积数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个卷积数据处理装置实施例中的具体限定可以参见上文中对于卷积数据处理方法的限定,在此不再赘述。
[0080]
在一个实施例中,如图7所示,提供了一种卷积数据处理装置700,包括:数据获取模块701、前置电路模块702和卷积运算模块703,其中:数据获取模块701,用于接收输入到集成电路芯片中的待处理数据。
[0081]
前置电路模块702,用于对待处理数据的时序进行延迟处理,得到待处理数据的延迟时序信息。
[0082]
卷积运算模块703,用于根据待处理数据的延迟时序信息,将待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。
[0083]
在一个实施例中,前置电路模块702,还用于确定待处理数据对应的数据组;当待处理数据包括至少两个数据组时,将待处理数据中的第一数据组发送至卷积计算单元,对待处理数据中除第一数据组以外的数据组进行延迟处理,得到待处理数据中除第一数据组以外的数据组的延迟时序信息。
[0084]
在一个实施例中,卷积数据处理装置700还包括延迟发送模块,用于对待处理数据中除第一数据组以外的数据组的时序进行延迟处理,得到待处理数据中除第一数据组以外的每个数据组的第一延迟时序信息;根据第一延迟时序信息,将待处理数据中的第二数据组发送至卷积计算单元;对待处理数据中除第一数据组和第二数据组以外的每个数据组的第一延迟时序信息进行延迟处理,得到待处理数据中除第一数据组和第二数据组以外的每个数据组的第二延迟时序信息;根据第二延迟时序信息,将待处理数据的第三数据组发送到卷积计算单元,直到将待处理数据中的最后一个数据组发送到卷积计算单元。
[0085]
在一个实施例中,卷积运算模块703,还用于获取待处理数据对应的权重;根据待处理数据的延迟时序信息,分别将待处理数据和待处理数据对应的权重输入到卷积计算单元进行卷积运算,得到卷积计算单元输出的卷积处理结果。
[0086]
在一个实施例中,卷积数据处理装置700还包括卷积计算模块,用于根据各个卷积计算单元,分别对待处理数据中各数据组和各数据组对应的权重进行乘加运算,得到各个卷积计算单元输出的乘加运算结果;各个卷积单元以并行方式进行乘加运算;对各个卷积计算单元输出的乘加运算结果进行相加,得到卷积处理结果。
[0087]
在一个实施例中,卷积数据处理装置700还包括乘加运算模块,用于在各个卷积计算单元中,分别对第一数据组和第一数据组对应的权重进行乘加运算,得到第一乘加运算结果;根据第一延迟时序信息,触发卷积计算单元对第二数据组、第二数据组对应的权重和
第一乘加运算结果进行乘加运算,得到第二乘加运算结果;根据第二延迟时序信息,触发卷积计算单元对第三数据组、第三数据组对应的权重和第二乘加运算结果进行乘加运算,得到第三乘加运算结果,直到得到乘加运算结果。
[0088]
在一个实施例中,卷积数据处理装置700还包括信号打拍模块,用于通过寄存器,对待处理数据进行信号打拍。
[0089]
上述卷积数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于卷积运算加速器中的处理器中,也可以以软件形式存储于卷积运算加速器中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0090]
在一个实施例中,还提供了一种卷积运算加速器,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0091]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0092]
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0093]
需要说明的是,本技术所涉及的数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经各方充分授权的信息和数据。
[0094]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0095]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0096]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
技术特征:
1.一种卷积数据处理方法,其特征在于,所述方法包括:接收输入到集成电路芯片中的待处理数据;对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息;根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。2.根据权利要求1所述的方法,其特征在于,所述对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息,包括:通过前置电路对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息。3.根据权利要求2所述的方法,其特征在于,所述前置电路包括延迟装置;所述延迟装置通过至少一个寄存器构成。4.根据权利要求1所述的方法,其特征在于,所述对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息,包括:确定所述待处理数据对应的数据组;当所述待处理数据包括至少两个数据组时,将所述待处理数据中的第一数据组发送至卷积计算单元,对所述待处理数据中除所述第一数据组以外的数据组进行延迟处理,得到所述待处理数据中除所述第一数据组以外的数据组的延迟时序信息。5.根据权利要求4所述的方法,其特征在于,所述对所述待处理数据中除所述第一数据组以外的数据组进行延迟处理,得到所述待处理数据中除所述第一数据组以外的数据组的延迟时序信息,包括:对所述待处理数据中除所述第一数据组以外的数据组的时序进行延迟处理,得到所述待处理数据中除所述第一数据组以外的每个数据组的第一延迟时序信息;根据所述第一延迟时序信息,将所述待处理数据中的第二数据组发送至所述卷积计算单元;对所述待处理数据中除所述第一数据组和所述第二数据组以外的每个数据组的第一延迟时序信息进行延迟处理,得到所述待处理数据中除所述第一数据组和所述第二数据组以外的每个数据组的第二延迟时序信息;根据所述第二延迟时序信息,将所述待处理数据的第三数据组发送到所述卷积计算单元,直到将所述待处理数据中的最后一个数据组发送到所述卷积计算单元。6.根据权利要求1所述的方法,其特征在于,所述根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果,包括:获取所述待处理数据对应的权重;根据所述待处理数据的延迟时序信息,分别将所述待处理数据和所述待处理数据对应的权重输入到所述卷积计算单元进行卷积运算,得到所述卷积计算单元输出的所述卷积处理结果。7.根据权利要求6所述的方法,其特征在于,所述分别将所述待处理数据和所述待处理数据对应的权重输入到所述卷积计算单元进行卷积运算,得到所述卷积计算单元输出的所述卷积处理结果,包括:
根据各个所述卷积计算单元,分别对所述待处理数据中各数据组和所述各数据组对应的权重进行乘加运算,得到所述各个所述卷积计算单元输出的乘加运算结果;所述各个所述卷积单元以并行方式进行乘加运算;对所述各个所述卷积计算单元输出的乘加运算结果进行相加,得到所述卷积处理结果。8.根据权利要求7所述的方法,其特征在于,所述根据各个所述卷积计算单元,分别对所述待处理数据中各数据组和所述各数据组对应的权重进行乘加运算,得到所述各个所述卷积计算单元输出的乘加运算结果,包括:在各个所述卷积计算单元中,分别对第一数据组和所述第一数据组对应的权重进行乘加运算,得到第一乘加运算结果;根据第一延迟时序信息,触发所述卷积计算单元对第二数据组、所述第二数据组对应的权重和所述第一乘加运算结果进行乘加运算,得到第二乘加运算结果;根据第二延迟时序信息,触发所述卷积计算单元对第三数据组、所述第三数据组对应的权重和所述第二乘加运算结果进行乘加运算,得到第三乘加运算结果,直到得到所述乘加运算结果。9.一种卷积数据处理装置,其特征在于,所述装置包括:数据获取模块,用于接收输入到集成电路芯片中的待处理数据;前置电路模块,用于对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息;卷积运算模块,用于根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。10.一种卷积运算加速器,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
技术总结
本申请涉及一种卷积数据处理方法、装置、卷积运算加速器、存储介质和计算机程序产品。所述方法包括:接收输入到集成电路芯片中的待处理数据;对所述待处理数据的时序进行延迟处理,得到所述待处理数据的延迟时序信息;根据所述待处理数据的延迟时序信息,将所述待处理数据发送至卷积计算单元进行卷积运算,得到对应的卷积运算结果。采用本方法能够降低了集成电路芯片的电路规模。电路芯片的电路规模。电路芯片的电路规模。
技术研发人员:梁猷强 张斌 刘钊含 沈小勇 吕江波
受保护的技术使用者:北京思谋智能科技有限公司
技术研发日:2022.04.24
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-6875.html