本发明涉及深度学习,尤其涉及一种神经网络处理单元和神经网络处理器、电子设备。
背景技术:
1、深度神经网络是人工智能领域具有最高发展水平的感知模型之一,该类网络通过建立模型模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大数据处理任务的应用带来了突破性进展。为了提高深度神经网络的运算效率,神经网络处理器成为了学术界和工业界的研究热点,并且在处理速度、运算功耗及能效比具有显著优势。
2、然而神经网络模型是一个计算密集型和访存密集型的应用,模型中包含大量高并行度的乘加运算,是主要的功耗来源,因此现有的神经网络处理器大都存在功耗较高的问题。
技术实现思路
1、本发明实施例所要解决的一个技术问题是:提供一种神经网络计算模块、处理单元和神经网络处理器、电子设备,以克服现有技术中神经网络处理器功耗较高的问题。
2、本发明的一个方面提供一种计算模块,包括一个多路分配器、一个与门和一个移位寄存器;
3、其中所述多路分配器用于选择并传输1比特至与门的一个输入端,所述与门将从多路分配器接收到的比特值与待计算数据的一个比特值进行乘法运算,所述移位寄存器对获得的运算结果执行位移。
4、根据本发明实施例的计算模块,还包括累加器,所述计算模块利用多个运算周期对于一个i比特的数据ai与一个j比特的数据bj进行乘法运算,其中
5、在每个运算周期,所述多路分配器从所述i比特的ai数据中选择1比特输入到所述与门的一个输入端;
6、所述与门对从所述多路分配器接收到的1比特数据与所述j比特的bj数据中的1比特数据进行乘法运算处理;
7、所述移位寄存器对获得的所述运算结果执行对应所述运算周期的位移,所述位移量与所述乘法运算的各个比特在所述数据ai与所述数据bj的位置相关;
8、所述累加器将每个运算周期所得到的移位寄存器中的值相加。
9、根据本发明实施例的计算模块,待计算的i比特的数据ai与所述j比特的bj数据的乘积公式表示为:
10、
11、其中,ai表示ai中的第i比特,bj表示bj中的第j比特,i和j均为大于等于1的正整数。
12、本发明的第二方面提供一种神经网络处理单元,包括:
13、根据上述实施例的多个计算模块,每个模块分别用于接收待一个计算数据和卷积层的一个权重值,通过多个运算周期实现对所述待计算数据与所述卷积层的权重值的乘法运算处理,获得与所述多个运算周期对应的多个乘法运算结果;
14、多个累加器模块,与所述计算模块一一对应,用于对对应的所述计算模块输出的多个乘法运算结果进行累加运算处理,获得累加结果;
15、加法器模块,用于对所述多个累加器模块对应的多个累加结果进行加法运算处理。
16、根据本发明实施例的处理单元,其中,所述待计算数据包括输入所述神经网络的原始数据或所述卷积层处理得到的中间数据。
17、根据本发明实施例的处理单元,其中,所述计算模块进一步用于串行接收所述待计算数据中的一个比特和所述权重值中的一个比特,并按所述运算周期对所述待计算数据中的一个比特和所述权重值中的一个比特执行乘法运算处理,每个所述运算周期处理1比特的待计算数据和1比特的权重值。
18、根据本发明实施例的处理单元,其中,所述移位寄存器中存储对应的所述计算模块经过多个所述运算周期获得的多个乘法运算结果;
19、所述累加器模块将所述移位寄存器中存储的多个乘法运算结果进行累加运算处理。
20、本发明的第三方面提供一种神经网络处理器,包括:
21、存储单元,用于存储以下至少一项:接收的指令信息、神经网络中卷积层的权重值、输入数据、神经网络的待计算数据;
22、控制单元,用于控制所述计算阵列的运行;
23、计算阵列,包括多个如上述实施例中所述的处理单元,用于按照所述控制单元的控制实现神经网络中的卷积计算。
24、根据本发明实施例的处理器,其中,所述存储单元包括:
25、指令存储模块,用于存储接收的指令信息;
26、输入数据存储模块,用于存储输入到神经网络的待计算数据,所述待计算数据包括输入所述神经网络的原始数据或卷积层处理得到的中间数据;
27、权重存储模块,用于存储所述神经网络中卷积层的权重值;
28、输出数据存储模块,用于存储所述计算阵列输出的计算结果。
29、根据本发明实施例的处理器,其中,所述控制单元进一步用于调用指令存储模块中存储的指令信息并解析,获得指令信号和存储地址;根据所述指令信号控制所述计算阵列基于所述存储地址获取待计算数据和权重值并进行计算。
30、根据本发明实施例的处理器,其中,所述计算阵列进一步用于根据所述存储地址从所述输入数据存储模块获取待计算数据,从所述权重存储模块中获取权重值;
31、所述计算阵列根据获取的所述待计算数据的位宽和所述权重值的位宽激活相应数量的所述计算单元;通过所述激活的计算单元对所述获取的待计算数据和所述权重值进行卷积计算,并将卷积计算结果存入所述输出数据存储模块。
32、与现有技术相比,本发明的优点在于:提供了一个对数据可实现比特级调整的神经网络处理单元,细粒度的调整计算位宽与传输模式,使包含该处理单元的处理器可在神经网络不同层采用不同的数据精度参与计算,在保证计算精度的前提下,提高了处理速度,减少了片上存储量,降低了能量损耗。
33、下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
1.一种计算模块,包括一个多路分配器、一个与门和一个移位寄存器;
2.根据权利要求1所述的计算模块,还包括累加器,所述计算模块利用多个运算周期对于一个i比特的数据ai与一个j比特的数据bj进行乘法运算,其中
3.根据权利要求2所述的计算模块,待计算的i比特的数据ai与所述j比特的bj数据的乘积公式表示为:
4.一种神经网络处理单元,包括:
5.根据权利要求4所述的处理单元,其中,所述待计算数据包括输入所述神经网络的原始数据或所述卷积层处理得到的中间数据。
6.根据权利要求4或5所述的处理单元,其中,所述计算模块进一步用于串行接收所述待计算数据中的一个比特和所述权重值中的一个比特,并按所述运算周期对所述待计算数据中的一个比特和所述权重值中的一个比特执行乘法运算处理,每个所述运算周期处理1比特的待计算数据和1比特的权重值。
7.根据权利要求6所述的处理单元,其中,所述移位寄存器中存储对应的所述计算模块经过多个所述运算周期获得的多个乘法运算结果;
8.一种神经网络处理器,包括:
9.根据权利要求8所述的处理器,其中,所述存储单元包括:
10.根据权利要求9所述的处理器,其中,所述控制单元进一步用于调用指令存储模块中存储的指令信息并解析,获得指令信号和存储地址;根据所述指令信号控制所述计算阵列基于所述存储地址获取待计算数据和权重值并进行计算。
11.根据权利要求10所述的处理器,其中,所述计算阵列进一步用于根据所述存储地址从所述输入数据存储模块获取待计算数据,从所述权重存储模块中获取权重值;
