一种神经网络推理芯片、神经网络推理方法及终端与流程

未命名 07-15 阅读:98 评论:0


1.本技术实施例涉及芯片设计领域,尤其涉及一种神经网络推理芯片、神经网络推理方法及终端。


背景技术:

2.近些年来,随着计算机科学以及芯片架构的不断发展,神经网络算法凭借现代计算机强大的算力,在计算机视觉,音视频处理,自动驾驶等领域展现出远超传统算法的优势。神经网络具有计算密集型和存储密集型的特点,这对算法在硬件上的部署提出了更高的挑战。
3.目前的神经网络推理芯片架构主要有图形处理器(graphics processing unit,gpu),现场可编程门阵列(field programmable gate array,fpga)以及专用集成电路(application specific integrated circuit,asic)等。
4.针对相关技术中的神经网络推理芯片架构,利用以脉动阵列(systolic array,sa)方式连接的运算单元阵列确定该架构的计算并行度,包括输入通道(input channel,ic)并行度和输出通道(output channel,oc)并行度,以利用具有该计算并行度的运算单元阵列进行卷积运算。然而,在输入通道ic数不是该架构的ic并行度的整数倍时,存在运算单元阵列利用率低的问题。


技术实现要素:

5.本技术实施例提供一种神经网络推理芯片、神经网络推理方法及终端,提出了一种芯片架构,能够实现网络层的多种输入通道数且不同量化精度要求的应用场景。
6.本技术实施例的技术方案是这样实现的:
7.第一方面,本技术实施例提供一种神经网络推理芯片,包括:控制单元、运算单元阵列和部分和累加单元阵列,所述运算单元阵列包括位于同一列的第一运算单元子阵列和第二运算单元子阵列,其中,
8.所述控制单元,用于控制将输入通道对应的第一特征数据和第二特征数据分别输入所述第一运算单元子阵列和所述第二运算单元子阵列;确定所述第二运算单元子阵列的目标选择支路并开启所述目标选择支路;
9.所述第一运算单元子阵列,用于基于所述第一特征数据和第一权重数据,得到第一子阵列运算结果,并输出至所述第二运算单元子阵列;
10.所述第二运算单元子阵列,用于基于所述第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过所述目标选择支路,对所述第二子阵列中间运算结果和所述第一子阵列运算结果进行运算,得到第二子阵列运算结果;将所述第二子阵列运算结果输出至,所述部分和累加单元阵列中与所述第二运算单元子阵列位于同一列的部分和累加单元子阵列,以进行累加运算。
11.第二方面,本技术实施例提供一种神经网络推理方法,所述神经网络推理方法应
用于神经网络推理芯片,所述神经网络推理芯片包括:控制单元、运算单元阵列和部分和累加单元阵列,所述运算单元阵列包括位于同一列的第一运算单元子阵列和第二运算单元子阵列,其中,
12.所述控制单元控制将输入通道对应的第一特征数据和第二特征数据分别输入所述第一运算单元子阵列和所述第二运算单元子阵列;确定所述第二运算单元子阵列的目标选择支路并开启所述目标选择支路;
13.所述第一运算单元子阵列基于所述第一特征数据和第一权重数据,得到第一子阵列运算结果,并输出至所述第二运算单元子阵列;
14.所述第二运算单元子阵列基于所述第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过所述目标选择支路,对所述第二子阵列中间运算结果和所述第一子阵列运算结果进行运算,得到第二子阵列运算结果;将所述第二子阵列运算结果输出至,所述部分和累加单元阵列中与所述第二运算单元子阵列位于同一列的部分和累加单元子阵列,以进行累加运算。
15.第三方面,本技术实施例提供一种终端,包括如第一方面所述的神经网络推理芯片。
16.第四方面,本技术实施例提供一种终端,所述终端包括神经网络推理芯片、处理器、存储可执行指令的存储器,当所述指令被执行时,实现如第二方面所述的神经网络推理方法。
17.本技术实施例提供一种神经网络推理芯片、神经网络推理方法及终端,该神经网络推理芯片包括:控制单元、运算单元阵列和部分和累加单元阵列,运算单元阵列包括位于同一列的第一运算单元子阵列和第二运算单元子阵列,其中,控制单元,用于控制将输入通道对应的第一特征数据和第二特征数据分别输入第一运算单元子阵列和第二运算单元子阵列;确定第二运算单元子阵列的目标选择支路并开启目标选择支路;第一运算单元子阵列,用于基于第一特征数据和第一权重数据,得到第一子阵列运算结果,并输出至第二运算单元子阵列;第二运算单元子阵列,用于基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过目标选择支路,对第二子阵列中间运算结果和第一子阵列运算结果进行运算,得到第二子阵列运算结果;将第二子阵列运算结果输出至,部分和累加单元阵列中与第二运算单元子阵列位于同一列的部分和累加单元子阵列,以进行累加运算。也就是说,本技术实施例中,基于输入至第一运算单元子阵列和第二运算单元子阵列的输入通道的特征数据,从第二运算单元子阵列的多个选择支路中确定目标选择支路,通过目标选择支路,对第二运算单元子阵列得到的第二子阵列中间运算结果,与第一运算单元子阵列得到的第一子阵列运算结果进行运算,从而得到第二运算单元子阵列对应的第二子阵列运算结果;如此,本技术实施例提供一种芯片架构,能够实现网络层的多种输入通道数且不同量化精度要求的应用场景,针对不同应用场景选择不同的选择支路进行运算处理,提升了芯片在不同应用场景下的利用率和计算效率,提高了阵列运算单元的利用率,减小网络推理延迟,加速了网络层的推理。
附图说明
18.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本申
请的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。
19.图1是本技术实施例提供的一种可选的神经网络推理芯片的结构示意图;
20.图2是本技术实施例提供的一种可选的卷积运算的计算示意图;
21.图3是本技术实施例提供的一种可选的神经网络推理芯片的结构示意图;
22.图4是本技术实施例提供的一种可选的神经网络推理芯片的架构示意图;
23.图5是本技术实施例提供的一种可选的神经网络推理芯片的结构示意图;
24.图6是本技术实施例提供的一种可选的第一选择支路的结构示意图;
25.图7是本技术实施例提供的一种可选的第二选择支路的结构示意图;
26.图8是本技术实施例提供的一种可选的选择支路对应的电路示意图;
27.图9是本技术实施例提供的一种可选的神经网络推理芯片的架构示意图;
28.图10是本技术实施例提供的2
×
2的第二运算单元子阵列中位于同一列的运算单元的电路结构示意图;
29.图11为本技术实施例提供的一种可选的神经网络推理方法的流程示意图;
30.图12为本技术实施例提供的一种可选的终端的结构示意图;
31.图13为本技术实施例提供的一种可选的终端的结构示意图。
具体实施方式
32.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
33.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本技术实施例所使用的所有的技术和科学术语与属于本技术实施例的技术领域的技术人员通常理解的含义相同。本技术实施例所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
34.需要说明的是:在本技术实例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
35.另外,本技术实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
36.近些年来,随着计算机科学以及芯片架构的不断发展,神经网络算法凭借现代计算机强大的算力,在计算机视觉,音视频处理,自动驾驶等领域展现出远超传统算法的优势。神经网络具有计算密集型和存储密集型的特点,这对算法在硬件上的部署提出了更高的挑战。
37.神经网络作为计算机视觉的一个重要方法,输入图像数据,通过训练好的神经网络,计算出所需要的语义信息,例如物体的类别等,这个过程为神经网络推理(neural network inference)。
38.神经网络推理芯片是近年来人工智能硬件领域研究的一个热点。神经网络具有计算复杂,数据量大的特点,需要大量的并行计算和内存访问,因此对算力有极高的要求。终端设备(如手机、智能家居、无人车等)对神经网络算法的部署,在功耗和成本方面有严格的
限制。此外,不同神经网络的结构差异较大,数据量大小不同,算子类型丰富,因此对芯片的灵活性也有一定的需求。
39.目前的神经网络推理芯片架构主要有图形处理器(graphics processing unit,gpu),现场可编程门阵列(field programmable gate array,fpga)以及专用集成电路(application specific integrated circuit,asic)等。gpu采用大规模并行的通用计算架构,极大地缩短了算法的训练时长,加速算法的迭代。然而,gpu无法高效的支持灵活多变的神经网络算法,不能充分地发挥算力的优势,同时gpu的网络推理芯片的功耗比较高。fpga具有高的可重构性,但是计算资源较少,推理的速度和成本较大。asic可以针对神经网络算法的特点,进行定制化的硬件架构设计,使得性能,功耗和面积等芯片指标可以做到最优。因此,基于asic的设计理念,神经网络推理芯片(neural network processing unit,npu)架构成为了当下人工智能硬件架构领域研究的热点之一。
40.卷积运算在当前深度学习算法的计算中占据极高的比例。依据计算规则性和数据复用性的算子特点,sa的npu计算架构成为了业界研究的重点。sa结构简单、规整,模块化强,且运算单元(processing element,pe)之间数据通信距离短,使得数据流和控制流的设计,同步控制简单规整。同时,阵列中的所有pe能同时运算,具有较高的计算并行性,获得较高的运算效率和吞吐率。
41.针对相关技术中的神经网络推理芯片架构,利用以脉动阵列方式连接的运算单元阵列确定该架构的计算并行度,包括输入通道(input channel,ic)并行度和输出通道(output channel,oc)并行度,以利用具有该计算并行度的运算单元阵列进行卷积运算。然而,在输入通道ic数不是该架构的ic并行度或ic并行度/2的整数倍时,存在运算单元阵列利用率低的问题。
42.示例性地,利用以脉动阵列方式连接的8
×
8运算单元阵列确定该架构的计算并行度,即ic并行度为8,oc并行度也为8,若当前网络层的输入通道ic数为60,利用该架构迭代计算的迭代次数为次,且在最后一次迭代计算中后4行的运算单元pe停止工作,这使得当前网络层的利用率从100%降低为60/64
×
100%=93.75%。另外,可以理解的,若网络层的ic数越小,非ic并行度整数倍的情况对运算单元利用率影响越大。且目前的大多数网络第一层的ic数都为3输入通道,即红(red,r)、绿(green,g)、蓝(blue,b)三输入通道,这使得当前网络层的利用率仅为3/8
×
100%=37.5%。
43.还需要说明的是,目前大多数神经网络算法在8比特(bit)量化下可以有很好的推理效果,然而仍然有部分复杂的神经网络算法需要16bit甚至24bit的量化才能有高精度的推理结果。运算单元如mmp core内部为8bit
×
8bit的乘法器,在做一次16bit
×
8bit的计算时需要进行两周期运算才能得到乘积。在将数据扩大到整个网络的情况下,硬件的推理速度降低。
44.为了解决上述问题,本技术实施例提供了一种神经网络推理芯片,图1为本技术实施例提供的一种可选的神经网络推理芯片的结构示意图,如图1所示,该神经网络推理芯片100包括:控制单元10、运算单元阵列20和部分和累加单元阵列30,运算单元阵列20包括位于同一列的第一运算单元子阵列21和第二运算单元子阵列22,其中,
45.控制单元10,用于控制将输入通道对应的第一特征数据和第二特征数据分别输入第一运算单元子阵列21和第二运算单元子阵列22;确定第二运算单元子阵列22的目标选择
支路221并开启目标选择支路221;
46.第一运算单元子阵列21,用于基于第一特征数据和第一权重数据,得到第一子阵列运算结果,并输出至第二运算单元子阵列22;
47.第二运算单元子阵列22,用于基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过目标选择支路,对第二子阵列中间运算结果和第一子阵列运算结果进行运算,得到第二子阵列运算结果;将第二子阵列运算结果输出至,部分和累加单元子阵列30中与第二运算单元子阵列位于同一列的部分和累加单元子阵列31,以进行累加运算。
48.本技术实施例中,运算单元阵列用于存储神经网络的每一层输入的权重数据,且执行卷积算子的计算工作;运算单元阵列包括n
×
n个运算单元,且n
×
n个运算单元是以空间阵列如脉动阵列方式连接。需要说明的是,运算单元阵列的行数对应卷积运算的ic并行度,运算单元阵列的列数对应卷积运算的oc并行度,运算单元阵列的阵列式计算结构利用了卷积运算的数据复用性,即每行运算单元共享相同的特征数据,如此,减少了数据的搬移,同时进一步地降低电路面积和功耗。这里,运算单元阵列由乘法矩阵处理器(matrix multiply processor,mmp)构成的阵列,运算单元为mmp_core,运算单元阵列包括n
×
n个mmp_core,即n
×
n个mmp_core按照n行n列布置。可以理解的是,在本技术中,n可以为大于或等于2的整数。
49.本技术实施例中,运算单元子阵列包括k
×
k个运算单元,且k为大于或等于1,且小于或等于n/2的整数。
50.本技术实施例中,部分和累加单元阵列用于执行部分和的累加工作,部分和累加单元阵列包括1
×
n个部分和累加单元。这里,部分和累加单元阵列由部分和累加器(partial sum,psum)构成的阵列,部分和累加单元为psum_core,部分和累加单元阵列包括1
×
n个psum_core,且n个psum_core之间可以并行工作。
51.本技术实施例中,部分和累加单元子阵列包括1
×
k个部分和累加单元,且k为大于或等于1,且小于或等于n/2的整数。
52.本技术实施例中,输入通道对应的第一特征数据可以为多个输入通道中的部分输入通道对应的完整字节的特征数据,第二特征数据为多个输入通道中的剩余输入通道对应的完整字节的特征数据;即第一特征数据和第二特征数据分别为两个不同输入通道对应的完整字节的特征数据。当然,输入通道对应的第一特征数据还可以为多个输入通道中每一输入通道的低字节特征数据,第二特征数据为多个输入通道中每一输入通道的高字节特征数据;即第一特征数据和第二特征数据分别为同一输入通道对应的不同字节位的特征数据,对此,本技术不作具体限制。
53.本技术实施例中,目标选择支路包括第一选择支路和第二选择支路,第一选择支路用于对不同输入通道对应的完整字节的特征数据进行数据运算,第二选择支路用于对同一输入通道的不同字节位的特征数据进行数据运算。
54.本技术实施例中,控制单元可以根据输入至第一运算单元子阵列和第二运算单元子阵列中的特征数据之间的关联关系,从至少两个选择支路中选择第二运算单元子阵列中的目标选择支路并开启,以通过该目标选择支路对数据进行运算处理。其中,特征数据之间的关联关系包括:完整字节的特征数据分别对应不同输入通道的关联关系,以及不同字节位的特征数据对应同一输入通道的关联关系。
circuit,ic)、专用集成电路等任意的形式。例如,本技术实施例提出的神经网络推理芯片可以为嵌入式神经网络处理器。
62.npu采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。其中,npu的工作原理是在电路层模拟人类神经元和突触,并且用深度学习指令集直接处理大规模的神经元和突触,一条指令完成一组神经元的处理。相比于中央处理器(central processing unit,cpu)和gpu,npu通过突出权重实现存储和计算一体化,从而提高运行效率。
63.npu是模仿生物神经网络而构建的,cpu、gpu处理器需要用数千条指令完成的神经元处理,npu只要一条或几条就能完成,因此在深度学习的处理效率方面优势明显。与gpu一样,npu同样需要cpu的协同处理才能完成特定的任务。
64.一般情况下,作为移动端的专用系统级芯片(system on chip,soc),内部集成了cpu、gpu和npu。其中,cpu负责手机应用流畅切换、gpu支持游戏画面快速加载,而npu就专门负责实现人工智能(artificial intelligence,ai)运算和ai应用的实现。也就是说cpu是负责计算和整体协调的,而gpu是负责和图像有关的部分,npu负责和ai有关的部分。其工作流程则是,任何工作都要先通过cpu,cpu再根据这一块的工作的性质来决定分配给谁。如果是图形方面的计算,就会分配给gpu,如果是ai方面的计算需求,就分配给npu。
65.npu与gpu加速不同,主要体现为每层神经元计算结果不用输出到主内存,而是按照神经网络的连接传递到下层神经元继续计算,因此其在运算性能和功耗上都有很大的提升。
66.npu在电路层模拟神经元,通过突触权重实现存储和计算一体化,一条指令完成一组神经元的处理,提高运行效率。主要应用于通信领域、大数据、图像处理。npu作为专用定制芯片asic的一种,是为实现特定要求而定制的芯片。除了不能扩展以外,在功耗、可靠性、体积方面都有优势,尤其在高性能、低功耗的移动端。
67.由上述可知,本技术实施例中,基于输入至第一运算单元子阵列和第二运算单元子阵列的输入通道的特征数据,从第二运算单元子阵列的多个选择支路中确定目标选择支路,通过目标选择支路,对第二运算单元子阵列得到的第二子阵列中间运算结果,与第一运算单元子阵列得到的第一子阵列运算结果进行运算,从而得到第二运算单元子阵列对应的第二子阵列运算结果;如此,本技术实施例提供一种芯片架构,能够实现网络层的多种输入通道数且不同量化精度要求的应用场景,针对不同应用场景选择不同的选择支路进行运算处理,提升了芯片在不同应用场景下的利用率和计算效率,提高了阵列运算单元的利用率,减小网络推理延迟,加速了网络层的推理。
68.本技术其他实施例中,参照图3所示,神经网络推理芯片100还包括:向量运算单元阵列40。向量运算单元阵列40包括与第一运算单元子阵列21位于同一行的第一向量运算单元子阵列41,以及与第二运算单元子阵列22位于同一行的第二向量运算单元子阵列42,向量运算单元阵列40用于存储神经网络的每一层输入的特征数据,并且执行除卷积以外的算子计算工作。
69.本技术实施例中,向量运算单元阵列包括n
×
1个向量运算单元。这里,向量运算单元阵列由向量处理器(vector scalar processor,vsp)构成的阵列,向量运算单元为vsp_core,向量运算单元阵列包括n
×
1个vsp_core,且n个vsp_core之间可以为并行工作。
70.本技术实施例中,向量运算单元子阵列包括k
×
1个向量运算单元,且k为大于或等于1,且小于或等于n/2的整数。
71.本技术实施例中,向量运算单元阵列40中与第一运算单元子阵列21位于同一行的第一向量运算单元子阵列41存储有输入通道的第一特征数据,与第二运算单元子阵列22位于同一行的第二向量运算单元子阵列42存储有输入通道的第二特征数据。进一步地,控制单元10从第一向量运算单元子阵列41中获取第一特征数据,并将第一特征数据输入至第一运算单元子阵列21中以进行运算;同样的,控制单元10从第二向量运算单元子阵列42中获取第二特征数据,并将第二特征数据输入至第二运算单元子阵列22中以进行运算。
72.在一种可实现的应用场景中,以n=4、k=2为例进行说明,参照图4,图4为本技术实施例提供的一种可选的神经网络推理芯片的架构示意图,其中,向量运算单元阵列40包括4
×
1个vsp_core,以k=2个vsp_core为一组,向量运算单元子阵列40包括2
×
1个vsp_core,即group00和group10。运算单元阵列20包括4
×
4个mmp_core,以k=2个mmp_core为一组,每一第一运算单元子阵列21包括2
×
2个mmp_core,各个第一运算单元子阵列为harden00和harden01,每一第二运算单元子阵列22包括2
×
2个mmp_core,各个第二运算单元子阵列为harden10和harden11,从而以harden作为数据传输打拍的最小单位对特征数据进行传输;这里,针对运算单元阵列20,行数对应卷积运算中的ic并行度,列数对应卷积运算中的oc并行度。部分和累加单元阵列30包括1
×
4个psum_core,以k=2个psum_core为一组,部分和累加单元子阵列30包括1
×
2个psum_core,即set00和set01。
73.继续参照图4,包括4个输入通道的特征数据,其中,4个输入通道分别为ic0、ic1、ic2和ic3,其中,每行特征数据传输数据流如图4的实线箭头所示,每行mmp core共享相同的特征数据。经过2个拍打周期,可以将特征数据传输到第一行第二个harden01,第二行第一个harden10。卷积运算的部分和psum会在列方向进行累加并且传输,psum的数据流如图2的虚线箭头所示。这里,harden00的psum1正好与harden10的psum2相加并向下打拍传输,每一部分和累加单元对列方向的累加部分和最终输出。这种脉动阵列的数据流可以很好地完成卷积及全连接运算。
74.继续参照图4,以位于第一列的运算单元子阵列为例进行说明,首先,经过第一个拍打周期,控制单元(图中未示出)从第一向量运算单元子阵列41获取第一特征数据,并将第一特征数据输入至第一运算单元子阵列harden00中,第一运算单元子阵列harden00基于第一特征数据和存储的与该第一特征数据对应的第一权重数据,得到该阵列对应的第一子阵列运算结果psum00,并将得到的第一子阵列运算结果psum00输出至第二运算单元子阵列harden10中。
75.其次,经过第二个拍打周期,控制单元控制将第一特征数据以数据流动的方式传输至第一运算单元子阵列harden01,第一运算单元子阵列harden01基于第一特征数据和存储的与该第一特征数据对应的第一权重数据,得到该子阵列对应的第一子阵列运算结果psum01,并将得到的第一子阵列运算结果psum01输出至第二运算单元子阵列harden11中。
76.与此同时,经过第二拍打周期时,控制单元还从第二向量运算单元子阵列42获取第二特征数据,并将第二特征数据输入至第二运算单元子阵列harden10中,并基于输入的第一特征数据和第二特征数据,确定第二运算单元子阵列harden10和第二运算单元子阵列harden11中的目标选择支路并开启目标选择支路。
77.然后,第二运算单元子阵列harden10基于第二特征数据和存储的与该第二特征数据对应的第二权重数据,得到第二子阵列中间运算结果;并通过开启的目标选择支路,对第二子阵列中间运算结果和第一子阵列运算结果进行运算,得到第二子阵列运算结果psum10;将第二子阵列运算结果psum10输出至部分和累加单元子阵列set00,部分和累加单元子阵列set00对第二子阵列运算结果psum10执行部分和的累加运算,如此,通过脉动阵列的数据流可以很好地完成卷积及全连接运算。
78.在一些实施例中,参照图5所示,图5为本技术实施例提供的一种可选的神经网络推理芯片的结构示意图,其中,目标选择支路221包括第一选择支路222,其中,
79.控制单元10,用于控制将同一输入通道对应的不同字节位的第一特征数据和第二特征数据,分别输入第一运算单元子阵列21和第二运算单元子阵列22,以及确定第一选择支路222,并开启第一选择支路222;
80.第二运算单元子阵列22,用于基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过第一选择支路222,对第二子阵列中间运算结果进行移位处理;将移位后的第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果;将第二子阵列运算结果输出至位于同一列的部分和累加单元子阵列31,以进行累加运算。
81.本技术实施例中,首先,控制单元将同一输入通道的不同字节位的特征数据(不同字节位的特征数据包括第一特征数据和第二特征数据)分别输入第一运算单元子阵列和第二运算单元子阵列,如将同一输入通道对应的完整字节的特征数据分为高字节特征数据和低字节特征数据,其中,第一特征数据为低字节特征数据,第二特征数据为高字节特征数据。其次,控制单元确定第二运算单元子阵列的第一选择支路,并控制开启第一选择支路。然后,第一运算单元子阵列基于低字节特征数据和存储的与该低字节特征数据对应的第一权重数据,得到第一子阵列运算结果,并将得到的第一子阵列运算结果输出至第二运算单元子阵列。进一步地,第二运算单元子阵列基于高字节特征数据和存储的与该高字节特征数据对应的第二权重数据,得到第二子阵列中间运算结果;并通过开启的第一选择支路,对第二子阵列中间运算结果进行移位处理,得到移位后的第二子阵列中间运算结果;并将移位后的第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果;将第二子阵列运算结果输出至位于同一列的部分和累加单元子阵列,部分和累加单元子阵列对第二子阵列运算结果执行部分和的累加运算工作。
82.由上述可知,本技术实施例中,在输入至第一运算单元子阵列和第二运算单元子阵列的特征数据为同一输入通道的不同字节位的特征数据(即高字节特征数和低字节特征数据)的情况下,从第二运算单元子阵列的多个选择支路中确定第一选择支路,通过第一选择支路,对第二运算单元子阵列得到的第二子阵列中间运算结果进行移位处理,并将移位后的第二子阵列中间运算结果与第一运算单元子阵列得到的第一子阵列运算结果进行运算,从而得到第二运算单元子阵列对应的第二子阵列运算结果;如此,本技术实施例提供一种芯片架构,能够实现网络层的输入通道数ic不是该芯片ic并行度/2的整数倍,且要求高bit数据量化精度要求的应用场景,在该应用场景下,通过第一选择支路对基于高字节特征数据得到的运算结果进行移位处理,并与基于低字节特征数据得到的运算结果进行求和,从而得到该子阵列的运算结果;如此,提升了芯片在该应用场景下的利用率和计算效率,同时提高了阵列运算单元的利用率,减小网络推理延迟,加速了网络层的推理。
83.本技术其他实施例中,参照图6所示,图6为本技术实施例提供的第一选择支路的结构示意图,其中,第一选择支路222包括选择器2221、移位器2222和累加器2223,其中,
84.控制单元10,用于控制选择器2221选择第一选择支路222;
85.移位器2222,用于基于同一输入通道的第一特征数据的字节位数,确定对第二特征数据进行运算后得到的运算结果的目标移动位数的情况下,将第二子阵列中间运算结果左移目标移动位数,得到移位后的第二子阵列中间运算结果;
86.累加器2223,用于将移位后的第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果。
87.本技术实施例中,目标移动位数是基于同一输入通道的第一特征数据的字节位数确定的。示例性地,若同一输入通道对应的完整字节的特征数据为16bit,将16bit的完整字节的特征数据分为8bit的高字节特征数据(对应第二特征数据)和8bit的低字节特征数据(对应第一特征数据),基于8bit的低字节特征数据,确定对8bit的高字节特征数据进行运算后得到的运算结果的目标移动位数为8bit,这里,对8bit的高字节特征数据进行运算后得到的运算结果可以理解为:对8bit的高字节特征数据进行运算,得到8bit的高字节特征数据对应的第二子阵列中间运算结果。
88.本技术实施例中,控制单元控制选择器选择第一选择支路之后,首先,移位器基于同一输入通道的第一特征数据的字节位数,确定对第二特征数据进行运算后得到的运算结果的目标移动位数的情况下,将第二子阵列中间运算结果左移目标移动位数,得到移位后的第二子阵列中间运算结果;然后累加器将移位后的第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果,以便将第二子阵列运算结果输出至位于同一列的部分和累加单元子阵列,部分和累加单元子阵列对第二子阵列运算结果执行部分和的累加运算工作。
89.由上述可知,本技术实施例中,本技术实施例提供一种芯片架构,能够实现网络层的输入通道数ic不是该芯片ic并行度/2的整数倍,且要求高bit数据量化精度要求的应用场景,在该应用场景下,通过选择器选择的移位器对基于高字节特征数据得到的运算结果进行移位处理,并通过累加器与基于低字节特征数据得到的运算结果进行求和,从而得到该子阵列的运算结果;如此,通过增加选择器和移位器,即通过增加非常小的电路面积,大幅度提高了阵列运算单元的利用率,减小网络推理延迟,加速了网络层的推理。
90.在一些实施例中,继续参照图5,目标选择支路221包括第二选择支路223,其中,
91.控制单元10,用于控制将不同输入通道对应的第一特征数据和第二特征数据,分别输入第一运算单元子阵列21和第二运算单元子阵列22,以及确定第二选择支路223,并开启第二选择支路223;
92.第二运算单元子阵列22,用于基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过第二选择支路223,将第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果;将第二子阵列运算结果输出至位于同一列的部分和累加单元子阵列31,以进行累加运算。
93.本技术实施例中,首先,控制单元将不同输入通道对应的第一特征数据和第二特征数据,分别输入第一运算单元子阵列和第二运算单元子阵列,如将不同输入通道对应的完整字节的特征数据分别作为第一特征数据和第二特征数据。其次,控制单元确定第二运
算单元子阵列的第二选择支路,并控制开启第二选择支路。然后,第一运算单元子阵列基于第一特征数据和存储的与该第一特征数据对应的第一权重数据,得到第一子阵列运算结果,并将得到的第一子阵列运算结果输出至第二运算单元子阵列。进一步地,第二运算单元子阵列基于第二特征数据和存储的与该第二特征数据对应的第二权重数据,得到第二子阵列中间运算结果;并通过开启的第二选择支路,对第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果;将第二子阵列运算结果输出至位于同一列的部分和累加单元子阵列,部分和累加单元子阵列对第二子阵列运算结果执行部分和的累加运算工作。
94.由上述可知,本技术实施例中,在输入至第一运算单元子阵列和第二运算单元子阵列的特征数据为不同输入通道的完整字节的特征数据的情况下,从第二运算单元子阵列的多个选择支路中确定第二选择支路,通过第二选择支路,对第二运算单元子阵列得到的第二子阵列中间运算结果,与第一运算单元子阵列得到的第一子阵列运算结果进行求和,从而得到第二运算单元子阵列对应的第二子阵列运算结果;如此,本技术实施例提供一种芯片架构,能够实现网络层的输入通道数ic是该芯片ic并行度的整数倍,以及不同量化精度要求的应用场景,在该应用场景下,通过第二选择支路对基于不同特征数据得到的运算结果进行求和,从而得到该子阵列的运算结果;如此,提升了芯片在该应用场景下的利用率和计算效率,同时提高了阵列运算单元的利用率,减小网络推理延迟,加速了网络层的推理。
95.本技术其他实施例中,参照图7所示,图7为本技术实施例提供的第二选择支路的结构示意图,其中,第二选择支路223包括选择器2221和累加器2223,其中,
96.控制单元10,用于控制选择器2221选择第二选择支路223;
97.累加器2223,用于将第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果。
98.本技术实施例中,控制单元控制选择器选择第二选择支路之后,将第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果,以便将第二子阵列运算结果输出至位于同一列的部分和累加单元子阵列,部分和累加单元子阵列对第二子阵列运算结果执行部分和的累加运算工作。需要说明的是,针对第一选择支路和第二选择支路,共用一个选择器,且每一支路单独设置一个累加器;当然,累加器可以进行复用,即第一选择支路和第二选择支路共用同一个选择器和累加器,以减少芯片面积。
99.在一种可实现的应用场景中,参照图8所示,图8为本技术实施例提供一种可选的选择支路对应的电路示意图,选择器mux2221选择第一选择支路222,通过移位器2222对第二子阵列中间运算结果进行移位,并通过累加器将移位后的第二子阵列中间运算结果与第一子阵列运算结果psum_in,得到第二子阵列运算结果psum_out;以及选择器mux2221选择第二选择支路223,通过累加器将第二子阵列中间运算结果与第一子阵列运算结果psum_in,得到第二子阵列运算结果psum_out。
100.为了实现上述运算单元子阵列的功能,本技术其他实施例中,运算单元子阵列包括位于不同列的至少两个合并运算单元,合并运算单元包括位于同一列的至少一个第一运算单元和第二运算单元,特征数据至少包括第三特征数据和第四特征数据,其中,
101.控制单元,用于控制将不同输入通道对应的第三特征数据和第四特征数据分别输
入第一运算单元和第二运算单元;
102.第一运算单元,用于对第三特征数据和第三权重数据进行相应位置相乘计算,得到第一乘积,并输出至第二运算单元;
103.第二运算单元,用于对第四特征数据和第四权重数据进行相应位置相乘计算,得到第二乘积;对第一乘积和第二乘积求和,得到部分和累加结果并存储至拍打寄存器中;通过加法树对部分和累加结果进行累加处理,得到初始子阵列运算结果。
104.可以理解地,合并运算单元中设置有位于同一列的第一运算单元和第二运算单元。这里,需要说明的是,第一运算单元的个数为至少一个,另外,第一运算单元的个数与接收到的输入通道的特征数据的个数一致,即,一个第一运算单元对应一个输入通道的特征数据,两个第一运算单元对应两个输入通道的特征数据,

,n个第一运算单元对应n个输入通道的特征数据。
105.本技术实施例中,加法树adder_tree包括多个累加单元mac组成,加法树adder_tree用于对部分和累加结果进行累加运算。
106.这里,控制单元向第一运算单元输入第三特征数据,向第二运算单元输入第二特征数据;这样,第一运算单元在接收到第三特征数据之后,将第三特征数据与存储的对应第三权重数据进行相应位置的元素作乘积,得到第一乘积,并输出至第二运算单元。第二运算单元对第四特征数据与存储的对应第四权重数据进行相应位置的元素作乘积,得到第二乘积。此时,通过第二运算单元中的加法器对第二乘积与来自第一运算单元的第一乘积求和,将求和结果存储至拍打寄存器中;通过加法树对部分和累加结果进行累加处理,得到初始子阵列运算结果。
107.也就是说,通过第一运算单元对输入通道的第三特征数据和第三权重数据进行相应位置的乘积处理,并不做加法变换,而是将第一乘积输出至第二运算单元之后,由第二运算单元中的加法器将对输入通道的第四特征数据和第四权重数据进行相应位置的乘积处理的第二乘积,与第一乘积进行求和,从而得到求和结果,并将求和结果存储至拍打寄存器中进行保存;如此,使得在对不同输入通道的特征数据处理时,由于特征数据以运算单元子阵列为单元进行n/k拍打周期流动,且每一拍打周期中仅需对运算单元子阵列插入一组加法器进行求和,以及一组寄存器进行数据存储,降低所需要的加法器和拍打寄存器的数量,减少芯片面积和功耗,提高了神经网络推理芯片的性能。
108.本技术其他实施例中,运算单元阵列包括p个位于同一列的第一运算单元子阵列,第1个第一运算单元子阵列包括上述的运算单元子阵列;第p个第一运算单元子阵列包括上述运算单元子阵列和加法单元,p为大于1且小于或等于p的整数,p=n/2k,第一特征数据至少包括第五特征数据、第六特征数据和第七特征数据,其中,
109.第1个第一运算单元子阵列,用于基于第五特征数据和存储的与该第五特征数据对应的第五权重数据,通过运算单元子阵列,得到的初始子阵列运算结果,即为该第1个第一运算单元子阵列对应的第1个第一子阵列运算结果,并将第1个第一子阵列运算结果传输至下一第一运算单元子阵列;
110.第p个第一运算单元子阵列,用于基于第六特征数据和存储的与该第六特征数据对应的第六权重数据,通过运算单元子阵列,得到的初始子阵列运算结果,即为该第p个第一运算单元子阵列对应的第p个第一子阵列中间运算结果;通过加法单元,将第p个第一子
阵列中间运算结果和p-1个第一子阵列运算结果求和,得到第p个第一子阵列运算结果,并将第p个第一子阵列运算结果传输至第p+1第一运算单元子阵列;
111.第p个第一运算单元子阵列,用于基于第七特征数据和存储的与该第七特征数据对应的第七权重数据,通过运算单元子阵列,得到的初始子阵列运算结果,即为该第p个第一运算单元子阵列对应的第p个第一子阵列中间运算结果;通过加法单元,将第p个第一子阵列中间运算结果和p-1个第一子阵列运算结果求和,得到第p个第一子阵列运算结果,并将第p个第一子阵列运算结果传输至第二运算单元子阵列。
112.本技术其他实施例中,运算单元阵列包括p个位于同一列的第二运算单元子阵列,第p个第二运算单元子阵列包括上述运算单元子阵列和目标选择支路,p为大于或等于1且小于或等于p的整数,p=n/2k,第二特征数据至少包括第八特征数据、第九特征数据和第十特征数据,其中,
113.第1个第二运算单元子阵列,用于基于第八特征数据和存储的与该第八特征数据对应的第八权重数据,通过运算单元子阵列,得到的初始子阵列运算结果,即为该第1个第二运算单元子阵列对应的第1个第二子阵列中间运算结果,通过目标选择支路,对第1个第二子阵列中间运算结果与传输至第1个第二运算单元子阵列的第一子阵列运算结果进行运算,得到第1个第二子阵列运算结果;将第1个第二子阵列运算结果传输至下一第二运算单元子阵列;
114.第p个第二运算单元子阵列,用于基于第九特征数据和存储的与该第九特征数据对应的第九权重数据,通过运算单元子阵列,得到的初始子阵列运算结果,即为该第p个第二运算单元子阵列对应的第p个第二子阵列中间运算结果;通过目标选择支路,对第p个第二子阵列中间运算结果与第p-1个第二子阵列运算结果进行运算,得到第p个第二子阵列运算结果;将第p个第二子阵列运算结果传输至第p+1个第二运算单元子阵列。
115.第p个第二运算单元子阵列,用于基于第十特征数据和存储的与该第十特征数据对应的第十权重数据,通过运算单元子阵列,得到的初始子阵列运算结果,即为该第p个第二运算单元子阵列对应的第p个第二子阵列中间运算结果;通过目标选择支路,对第p个第二子阵列中间运算结果与第p-1个第二子阵列运算结果进行运算,得到第p个第二子阵列运算结果;将第p个第二子阵列运算结果传输至位于同一列的部分和累加单元子阵列,以进行累加运算。
116.在一种可实现的应用场景中,以n=8、k=2为例进行说明,参照图9,图9为本技术实施例提供的一种可选的神经网络推理芯片的架构示意图。
117.这里,向量运算单元阵列包括8
×
1个vsp_core,以k=2个vsp_core为一组,向量运算单元子阵列包括2
×
1个vsp_core,即group00、group10、group20和group30,也就是说,每两个vsp_core构成一个向量运算单元子阵列group向对应mmp行提供运算数据。
118.这里,运算单元阵列包括8
×
8个mmp_core,以k=2个mmp_core为一组,每一第一运算单元子阵列包括2
×
2个mmp_core,各个第一运算单元子阵列为harden00、harden01、harden02、harden03、harden10和harden11、harden12和harden13;每一第二运算单元子阵列包括2
×
2个mmp_core,各个第二运算单元子阵列为harden20、harden21、harden22、harden23、harden30和harden31、harden32和harden33,且各个第二运算单元子阵列中包括选择支路。需要说明的是,mmp由8
×
8阵列的mmp_core构成,行数对应卷积计算中的ic并行
度,列数对应卷积计算中的oc并行度,此阵列式的计算结构利用了卷积计算的数据复用性,减小数据的搬移。同时为了进一步降低电路面积和功耗,每四个mmp_core构成一个harden,harden作为数据传输打拍的最小单位,降低了50%所需要的打拍寄存器的数量。
119.这里,部分和累加单元阵列包括1
×
4个psum_core,以k=2个psum_core为一组,每一部分和累加单元子阵列包括1
×
2个psum_core,即set00、set01、set02和set03。
120.这里,向量处理器vsp和乘法矩阵处理器mmp为神经网络处理器npu的运算单元,vsp负责非卷积算子的运算及特征的存储,mmp负责卷积及全连接算子的运算及权重参数的存储。
121.继续参照图9,每行特征数据传输数据流如图9的实线箭头所示,每行mmp_core共享相同的特征数据。经过4个拍打周期cycle1、cycle2、cycle3和cycle4,特征数据传输到第一行的最后一个harden03,第二行的第三个harden12,第三行的第二个harden21,以及第四行的第一个harden30。卷积运算的部分和psum会在列方向进行累加并且传输,psum的数据流如图9的虚线箭头所示,harden00的psum正好与harden10的psum相加并向下打拍传输,第4个周期列方向的累加部分和最终输出。这种脉动阵列的数据流可以很好地完成卷积及全连接运算。
122.在一种实现方式中,继续参照图9,若当前网络层的输入通道数为4,即有4个输入通道的完整字节的特征数据,且需要量化的完整字节的特征数据为16bit,其中,4个输入通道分别为ic0、ic1、ic2和ic3。首先,将每一输入通道对应的完整字节特征数据分为高字节特征数据data_in[7:0]和低字节特征数据data_in[15:8],并将其存储至对应的向量运算单元中。由于各个第二运算单元子阵列结构中包括第一选择支路,此时,控制单元控制各个第二运算单元子阵列结构开启用于对同一输入通道的不同字节位的特征数据进行数据运算的第一选择支路。此时,可以看到,在该结构中,前两行的第一运算单元子阵列分别计算ic0-ic3的低字节特征数据data_in[7:0],后两行的第二运算单元子阵列分别计算ic0-ic3的高字节特征数据data_in[15:8]。部分和会在列方向进行累加,第一选择支路则通过移位和加法实现特征数据高低字节和权重数据的乘法运算,计算过程参照如下公式(1),
[0123]
mul=(fmh×
w)<<hb+fm
l
×wꢀꢀꢀꢀꢀꢀꢀ
(1)
[0124]
其中,fmh为高字节特征数据,fm
l
为低字节特征数据,w为与特征数据对应的权重数据,hb为左移位数,在本技术实施例中hb取8。
[0125]
由上述可知,神经网络推理芯片的ic并行度为8的情况下,若当前网络层的输入通道数为4,此时,当前网络层的利用率为8/8
×
100%=100%;同样地,若当前网络层的输入通道ic数为60,利用该架构迭代计算的迭代次数为次,前7次迭代的输入通道数为8,且通过选择第二选择支路对特征数据进行处理,前7次迭代过程中网络层的利用率为100%;最后一次迭代的输入通道数为4,在最后一次迭代计算中,将每一通道的特征数据分为高字节特征数据和低字节特征数据分别输入到不同行,且在最后一次迭代过程中网络层的利用率为100%,当前网络层的总利用率为64/64=100%,如此,通过提供的神经网络推理芯片,提高了网络层的利用率。
[0126]
这里,以2
×
2的第二运算单元子阵列中位于同一列的运算单元的电路结构为例进行说明,参照图10,图10为2
×
2的第二运算单元子阵列中位于同一列的运算单元的电路结构示意图,其中,第一行的mmp_core0接收来自ic0的高字节特征数据,ic0的高字节特征数
据经过门限设置模块fm和预处理模块pre进行特征重排。由于权重数据已经预先加载至mmp_core中的内部存储单元memory中,故可以通过权重控制模块wgt_ctrl对权重数据进行重排,将重排后的权重数据与输入的特征数据在乘法器模块pu进行乘法运算。需要说明的是,wgt_ctrl模块用于将memory中的权重数据进行权重拼接和重排。fm模块用于根据不同卷积算子的长度步长,对数据进行限制,将连线直接设为0,不会让连线进行翻转,降低功耗。pre模块用于根据卷积不同算子的步长,以及卷积核的大小对特征数据进行重排。另外,图10中的ext_in用于预先加载权重数据weight至运算单元mmp_core中,以及将权重数据取出的指令,mmp_cmd可以理解为用于将权重地址给到运算单元mmp_core的内部存储单元memory(简称mem)的命令。
[0127]
第二行的mmp_core1接收来自ic1的高字节特征数据,ic1的高字节特征数据经过经过fm模块pre模块进行特征重排。由于权重数据已经预先加载至mmp_core中的内部存储单元memory中,故可以通过权重控制模块wgt_ctrl对权重数据进行重排,将重排后的权重数据与输入的特征数据在pu模块进行乘累加运算,将不同的ic的部分和进行累加,得到部分和累加结果即mac数据。紧接着mac数据会输入加法树进一步累加。最终与上一行harden传输来的psum_in数据累加,输出psum_out到下一行harden直到走完4行harden。
[0128]
本技术实施例提供一种神经网络推理芯片,该神经网络推理芯片包括:控制单元、运算单元阵列和部分和累加单元阵列,运算单元阵列包括位于同一列的第一运算单元子阵列和第二运算单元子阵列,其中,控制单元,用于控制将输入通道对应的第一特征数据和第二特征数据分别输入第一运算单元子阵列和第二运算单元子阵列;确定第二运算单元子阵列的目标选择支路并开启目标选择支路;第一运算单元子阵列,用于基于第一特征数据和第一权重数据,得到第一子阵列运算结果,并输出至第二运算单元子阵列;第二运算单元子阵列,用于基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过目标选择支路,对第二子阵列中间运算结果和第一子阵列运算结果进行运算,得到第二子阵列运算结果;将第二子阵列运算结果输出至,部分和累加单元阵列中与第二运算单元子阵列位于同一列的部分和累加单元子阵列,以进行累加运算。也就是说,本技术实施例中,基于输入至第一运算单元子阵列和第二运算单元子阵列的输入通道的特征数据,从第二运算单元子阵列的多个选择支路中确定目标选择支路,通过目标选择支路,对第二运算单元子阵列得到的第二子阵列中间运算结果,与第一运算单元子阵列得到的第一子阵列运算结果进行运算,从而得到第二运算单元子阵列对应的第二子阵列运算结果;如此,本技术实施例提供一种芯片架构,能够实现网络层的多种输入通道数且不同量化精度要求的应用场景,针对不同应用场景选择不同的选择支路进行运算处理,提升了芯片在不同应用场景下的利用率和计算效率,提高了阵列运算单元的利用率,减小网络推理延迟,加速了网络层的推理。
[0129]
基于同一发明构思,本技术实施例提供一种神经网络推理方法,该神经网络推理方法可以应用于神经网络推理芯片中,其中,神经网络推理芯片包括:控制单元、运算单元阵列和部分和累加单元阵列,运算单元阵列包括位于同一列的第一运算单元子阵列和第二运算单元子阵列,图11为本技术实施例提供的一种可选的神经网络推理方法的流程示意图,如图11所示,该神经网络推理方法可以包括:
[0130]
步骤501、控制单元控制将输入通道对应的第一特征数据和第二特征数据分别输入第一运算单元子阵列和第二运算单元子阵列;确定第二运算单元子阵列的目标选择支路
并开启目标选择支路;
[0131]
步骤502、第一运算单元子阵列基于第一特征数据和第一权重数据,得到第一子阵列运算结果,并输出至第二运算单元子阵列;
[0132]
步骤503、第二运算单元子阵列基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过目标选择支路,对第二子阵列中间运算结果和第一子阵列运算结果进行运算,得到第二子阵列运算结果;将第二子阵列运算结果输出至,部分和累加单元阵列中与第二运算单元子阵列位于同一列的部分和累加单元子阵列,以进行累加运算。
[0133]
在一种可选的实施例中,目标选择支路包括第一选择支路,其中,
[0134]
控制单元控制将同一输入通道对应的不同字节位的第一特征数据和第二特征数据,分别输入第一运算单元子阵列和第二运算单元子阵列,以及确定第一选择支路,并开启第一选择支路;
[0135]
第二运算单元子阵列基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过第一选择支路,对第二子阵列中间运算结果进行移位处理;将移位后的第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果;将第二子阵列运算结果输出至位于同一列的部分和累加单元子阵列,以进行累加运算。
[0136]
在一种可选的实施例中,第一选择支路包括选择器、移位器和累加器,其中,
[0137]
控制单元控制选择器选择第一选择支路;
[0138]
移位器基于第一特征数据和第二特征数据,确定目标移动位数的情况下,将第二子阵列中间运算结果左移目标移动位数,得到移位后的第二子阵列中间运算结果;
[0139]
累加器将移位后的第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果。
[0140]
在一种可选的实施例中,目标选择支路包括第二选择支路,其中,
[0141]
控制单元控制将不同输入通道对应的第一特征数据和第二特征数据,分别输入第一运算单元子阵列和第二运算单元子阵列,以及确定第二选择支路,并开启第二选择支路;
[0142]
第二运算单元子阵列基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过第二选择支路,将第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果;将第二子阵列运算结果输出至位于同一列的部分和累加单元子阵列,以进行累加运算。
[0143]
在一种可选的实施例中,第二选择支路包括选择器和累加器,其中,
[0144]
控制单元控制选择器选择第二选择支路;
[0145]
累加器将第二子阵列中间运算结果与第一子阵列运算结果求和,得到第二子阵列运算结果。
[0146]
在一种可选的实施例中,运算单元子阵列包括位于不同列的至少两个合并运算单元,合并运算单元包括位于同一列的至少一个第一运算单元和第二运算单元,特征数据至少包括第三特征数据和第四特征数据,其中,
[0147]
控制单元控制将不同输入通道对应的第三特征数据和第四特征数据分别输入第一运算单元和第二运算单元;
[0148]
第一运算单元对第三特征数据和第三权重数据进行相应位置相乘计算,得到第一乘积,并输出至第二运算单元;
programmable read only memory)、带电可擦可编程只读存储器(eeprom,electrically erasable programmable read only memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(cd-rom,compact disk-read only memory)等各种可以存储程序代码的介质;也可以是包括上述存储器之一或任意组合的各种设备。
[0158]
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
[0159]
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(超文本标记语言,hyper text markup language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
[0160]
以上所述,仅为本技术的实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本技术的保护范围之内。

技术特征:
1.一种神经网络推理芯片,其特征在于,所述神经网络推理芯片包括:控制单元、运算单元阵列和部分和累加单元阵列,所述运算单元阵列包括位于同一列的第一运算单元子阵列和第二运算单元子阵列,其中,所述控制单元,用于控制将输入通道对应的第一特征数据和第二特征数据分别输入所述第一运算单元子阵列和所述第二运算单元子阵列;确定所述第二运算单元子阵列的目标选择支路并开启所述目标选择支路;所述第一运算单元子阵列,用于基于所述第一特征数据和第一权重数据,得到第一子阵列运算结果,并输出至所述第二运算单元子阵列;所述第二运算单元子阵列,用于基于所述第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过所述目标选择支路,对所述第二子阵列中间运算结果和所述第一子阵列运算结果进行运算,得到第二子阵列运算结果;将所述第二子阵列运算结果输出至,所述部分和累加单元阵列中与所述第二运算单元子阵列位于同一列的部分和累加单元子阵列,以进行累加运算。2.根据权利要求1所述的神经网络推理芯片,其特征在于,所述目标选择支路包括第一选择支路,其中,所述控制单元,用于控制将同一输入通道对应的不同字节位的所述第一特征数据和所述第二特征数据,分别输入所述第一运算单元子阵列和所述第二运算单元子阵列,以及确定所述第一选择支路,并开启所述第一选择支路;所述第二运算单元子阵列,用于基于所述第二特征数据和所述第二权重数据,得到所述第二子阵列中间运算结果;通过所述第一选择支路,对所述第二子阵列中间运算结果进行移位处理;将移位后的第二子阵列中间运算结果与所述第一子阵列运算结果求和,得到所述第二子阵列运算结果;将所述第二子阵列运算结果输出至所述位于同一列的部分和累加单元子阵列,以进行累加运算。3.根据权利要求2所述的神经网络推理芯片,其特征在于,所述第一选择支路包括选择器、移位器和累加器,其中,所述控制单元,用于控制所述选择器选择所述第一选择支路;所述移位器,用于基于所述同一输入通道的所述第一特征数据的字节位数,确定对所述第二特征数据进行运算后得到的运算结果的目标移动位数的情况下,将所述第二子阵列中间运算结果左移所述目标移动位数,得到所述移位后的第二子阵列中间运算结果;所述累加器,用于将所述移位后的第二子阵列中间运算结果与所述第一子阵列运算结果求和,得到所述第二子阵列运算结果。4.根据权利要求1所述的神经网络推理芯片,其特征在于,所述目标选择支路包括第二选择支路,其中,所述控制单元,用于控制将不同输入通道对应的所述第一特征数据和所述第二特征数据,分别输入所述第一运算单元子阵列和所述第二运算单元子阵列,以及确定所述第二选择支路,并开启所述第二选择支路;所述第二运算单元子阵列,用于基于所述第二特征数据和所述第二权重数据,得到所述第二子阵列中间运算结果;通过所述第二选择支路,将所述第二子阵列中间运算结果与所述第一子阵列运算结果求和,得到所述第二子阵列运算结果;将所述第二子阵列运算结
果输出至所述位于同一列的部分和累加单元子阵列,以进行累加运算。5.根据权利要求4所述的神经网络推理芯片,其特征在于,所述第二选择支路包括选择器和累加器,其中,所述控制单元,用于控制所述选择器选择所述第二选择支路;所述累加器,用于将所述第二子阵列中间运算结果与所述第一子阵列运算结果求和,得到所述第二子阵列运算结果。6.根据权利要求1至5任一项所述的神经网络推理芯片,其特征在于,运算单元子阵列包括位于不同列的至少两个合并运算单元,所述合并运算单元包括位于同一列的至少一个第一运算单元和第二运算单元,特征数据至少包括第三特征数据和第四特征数据,其中,所述控制单元,用于控制将不同输入通道对应的所述第三特征数据和所述第四特征数据分别输入所述第一运算单元和所述第二运算单元;所述第一运算单元,用于对所述第三特征数据和第三权重数据进行相应位置相乘计算,得到第一乘积,并输出至所述第二运算单元;所述第二运算单元,用于对所述第四特征数据和第四权重数据进行相应位置相乘计算,得到第二乘积;对所述第一乘积和所述第二乘积求和,得到部分和累加结果,并存储至拍打寄存器中;通过加法树对所述部分和累加结果进行累加处理,得到初始子阵列运算结果。7.一种神经网络推理方法,其特征在于,所述神经网络推理方法应用于神经网络推理芯片,所述神经网络推理芯片包括:控制单元、运算单元阵列和部分和累加单元阵列,所述运算单元阵列包括位于同一列的第一运算单元子阵列和第二运算单元子阵列,其中,所述控制单元控制将输入通道对应的第一特征数据和第二特征数据分别输入所述第一运算单元子阵列和所述第二运算单元子阵列;确定所述第二运算单元子阵列的目标选择支路并开启所述目标选择支路;所述第一运算单元子阵列基于所述第一特征数据和第一权重数据,得到第一子阵列运算结果,并输出至所述第二运算单元子阵列;所述第二运算单元子阵列基于所述第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过所述目标选择支路,对所述第二子阵列中间运算结果和所述第一子阵列运算结果进行运算,得到第二子阵列运算结果;将所述第二子阵列运算结果输出至,所述部分和累加单元阵列中与所述第二运算单元子阵列位于同一列的部分和累加单元子阵列,以进行累加运算。8.根据权利要求7所述的神经网络推理方法,其特征在于,所述目标选择支路包括第一选择支路,其中,所述控制单元控制将同一输入通道对应的不同字节位的所述第一特征数据和所述第二特征数据,分别输入所述第一运算单元子阵列和所述第二运算单元子阵列,以及确定所述第一选择支路,并开启所述第一选择支路;所述第二运算单元子阵列基于所述第二特征数据和所述第二权重数据,得到所述第二子阵列中间运算结果;通过所述第一选择支路,对所述第二子阵列中间运算结果进行移位处理;将移位后的第二子阵列中间运算结果与所述第一子阵列运算结果求和,得到所述第二子阵列运算结果;将所述第二子阵列运算结果输出至所述位于同一列的部分和累加单元
子阵列,以进行累加运算。9.根据权利要求8所述的神经网络推理方法,其特征在于,所述第一选择支路包括选择器、移位器和累加器,其中,所述控制单元控制所述选择器选择所述第一选择支路;所述移位器基于所述第一特征数据和所述第二特征数据,确定目标移动位数的情况下,将所述第二子阵列中间运算结果左移所述目标移动位数,得到所述移位后的第二子阵列中间运算结果;所述累加器将所述移位后的第二子阵列中间运算结果与所述第一子阵列运算结果求和,得到所述第二子阵列运算结果。10.根据权利要求7所述的神经网络推理方法,其特征在于,所述目标选择支路包括第二选择支路,其中,所述控制单元控制将不同输入通道对应的所述第一特征数据和所述第二特征数据,分别输入所述第一运算单元子阵列和所述第二运算单元子阵列,以及确定所述第二选择支路,并开启所述第二选择支路;所述第二运算单元子阵列基于所述第二特征数据和所述第二权重数据,得到所述第二子阵列中间运算结果;通过所述第二选择支路,将所述第二子阵列中间运算结果与所述第一子阵列运算结果求和,得到所述第二子阵列运算结果;将所述第二子阵列运算结果输出至所述位于同一列的部分和累加单元子阵列,以进行累加运算。11.根据权利要求10所述的神经网络推理方法,其特征在于,所述第二选择支路包括选择器和累加器,其中,所述控制单元控制所述选择器选择所述第二选择支路;所述累加器将所述第二子阵列中间运算结果与所述第一子阵列运算结果求和,得到所述第二子阵列运算结果。12.根据权利要求7至11任一项所述的神经网络推理方法,其特征在于,运算单元子阵列包括位于不同列的至少两个合并运算单元,所述合并运算单元包括位于同一列的至少一个第一运算单元和第二运算单元,特征数据至少包括第三特征数据和第四特征数据,其中,所述控制单元控制将不同输入通道对应的所述第三特征数据和所述第四特征数据分别输入所述第一运算单元和所述第二运算单元;所述第一运算单元对所述第三特征数据和第三权重数据进行相应位置相乘计算,得到第一乘积,并输出至所述第二运算单元;所述第二运算单元对所述第四特征数据和第四权重数据进行相应位置相乘计算,得到第二乘积;对所述第一乘积和所述第二乘积求和,得到部分和累加结果,并存储至拍打寄存器中;通过加法树对所述部分和累加结果进行累加处理,得到初始子阵列运算结果。13.一种终端,其特征在于,所述终端包括权利要求1至6任一项所述的神经网络推理芯片。14.一种终端,其特征在于,所述终端包括神经网络推理芯片、处理器、存储可执行指令的存储器,当所述指令被执行时,实现权利要求7至12任一项所述的方法。

技术总结
本申请提供一种神经网络推理芯片、神经网络推理方法及终端,芯片包括:控制单元、运算单元阵列和部分和累加单元阵列,运算单元阵列包括位于同一列的第一运算单元子阵列和第二运算单元子阵列,控制单元用于将第一特征数据和第二特征数据分别输入第一运算单元子阵列和第二运算单元子阵列;确定第二运算单元子阵列的目标选择支路并开启;第一运算单元子阵列用于基于第一特征数据和第一权重数据,得到第一子阵列运算结果;第二运算单元子阵列用于基于第二特征数据和第二权重数据,得到第二子阵列中间运算结果;通过目标选择支路对第二子阵列中间运算结果和第一子阵列运算结果进行运算,得到第二子阵列运算结果,并输出至部分和累加单元子阵列。单元子阵列。单元子阵列。


技术研发人员:卜海祥 张辉 王智慧
受保护的技术使用者:哲库科技(上海)有限公司
技术研发日:2023.03.27
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐