本技术实施例涉及计算机,尤其涉及一种存算一体装置、神经网络计算方法及存算芯片。
背景技术:
1、近年来,神经网络得到了学术界和工业界的高度关注和深入研究,广泛应用于机器人、语音识别、图像识别、自然语言处理和专家系统等领域。神经网络的核心运算是矩阵向量乘,具有计算密集和访存密集的特征,为了弥补通用处理芯片在功耗、性能、尺寸上存在的不足,提升神经网络计算的效率,为神经网络计算定制专用加速芯片已成为业界共识。
2、存算一体是一种高能效芯片架构,该架构既保留了存储电路本身的存储和读写功能,又可以高并行地支持乘加运算,从而可以有效降低神经网络计算时的数据搬移量,提升系统的能耗效率。
技术实现思路
1、本技术实施例提供一种存算一体装置、神经网络计算方法及存算芯片,能够降低存算一体芯片进行神经网络计算时的功耗。
2、为达到上述目的,本技术实施例采用如下技术方案:
3、本技术实施例的第一方面,提供一种存算一体装置,应用于神经网络计算,该存算一体装置包括预处理电路、以及与预处理电路耦合的存算电路。预处理电路用于获取m个特征值,每个特征值包括多个比特位,m为正整数。预处理电路还用于在当前周期确定第一数据,第一数据包括m个特征值中每个特征值的第一比特位。存算电路用于将第一数据在当前周期进行乘累加计算。预处理电路还用于根据第一数据确定第二数据,第二数据为下一周期的待计算数据,第二数据包括m个特征值中每个特征值的第二比特位。其中,第一数据与第二数据之间的翻转率,小于或等于第一数据与第三数据之间的翻转率,第三数据包括m个特征值中每个特征值的第三比特位,第三比特位为除第一比特位与第二比特位之外的任一个比特位。
4、可选的,上述第一比特位,可以为该m个特征值中每个特征值的任一比特位,本技术实施例对此并不限定。
5、本技术实施例提供的存算一体装置,通过预处理电路在m个特征值的多个比特位中,确定当前周期进行计算的第一数据,并通过预处理电路根据第一数据确定第二数据,从而可以降低存算一体装置计算时相邻两个周期计算数据之间的翻转率,可以有效降低存算一体装置在对该m个特征值进行计算时的功耗。
6、结合第一方面,在一种可能的实现方式中,第一数据与第二数据之间的翻转率,小于或等于第一数据与第三数据之间的翻转率,第三数据包括m个特征值中每个特征值的第三比特位,第三比特位为除第一比特位与第二比特位之外的任一个比特位。
7、本技术实施例提供的存算一体装置,通过预处理电路在m个特征值的多个比特位中,确定当前周期进行计算的第一数据,并通过预处理电路根据第一数据确定第二数据,该第二数据为下一周期的待计算数据,第一数据与第二数据之间的翻转率,小于或等于第一数据与第三数据之间的翻转率。从而可以降低存算一体装置计算时相邻两个周期计算数据之间的翻转率,可以有效降低存算一体装置在对该m个特征值进行计算时的功耗。
8、结合第一方面,在一种可能的实现方式中,预处理电路具体用于分别确定第一数据与第二数据之间的第一翻转率,以及第一数据与第三数据之间的第二翻转率,比较第一翻转率与第二翻转率的大小,以确定第二数据。
9、本技术实施例提供的存算一体装置,通过预处理电路分别确定第一数据与第二数据之间的第一翻转率,以及第一数据与第三数据之间的第二翻转率,比较第一翻转率与第二翻转率的大小以确定第二数据,从而可以降低存算一体装置计算时相邻两个周期计算数据之间的翻转率,可以有效降低存算一体装置在对该m个特征值进行计算时的功耗。
10、结合第一方面,在一种可能的实现方式中,预处理电路具体用于分别确定第一数据包括指定数值的数量与第二数据包括指定数值的数量的第一差值,以及第一数据包括指定数值的数量与第三数据包括指定数值的数量的第二差值,比较第一差值与第二差值的大小以确定第二数据,第一差值小于或等于第二差值。
11、本技术实施例提供的存算一体装置,通过预处理电路分别确定第一数据包括指定数值的数量与第二数据包括指定数值的数量的第一差值,以及第一数据包括指定数值的数量与第三数据包括指定数值的数量的第二差值,比较第一差值与第二差值的大小以确定第二数据,从而可以降低存算一体装置计算时相邻两个周期计算数据之间的翻转率,可以有效降低存算一体装置在对该m个特征值进行计算时的功耗。
12、结合第一方面,在一种可能的实现方式中,存算电路包括互相耦合的计算阵列和累加电路。计算阵列用于将第一数据在当前周期进行乘法计算。预处理电路还用于在当前周期向累加电路发送第一数据对应的第一位权信息。累加电路用于在当前周期根据第一位权信息对乘法计算的结果进行移位累加计算。
13、本技术实施例提供的存算一体装置,通过预处理电路在当前周期向累加电路发送第一数据对应的第一位权信息,累加电路可以根据第一位权信息对乘法计算的结果进行移位累加计算。
14、结合第一方面,在一种可能的实现方式中,累加电路的结构包括加法树。
15、结合第一方面,在一种可能的实现方式中,累加电路包括多级子累加电路,多级子累加电路中的第logkm级子累加电路包括第一移位累加器,k为大于或等于2的正整数。第一移位累加器,用于在当前周期根据第一位权信息对乘法计算的结果进行移位累加计算。
16、本技术实施例提供的存算一体装置,通过在累加电路的第logkm级子累加电路设置第一移位累加器,该第一移位累加器可以根据第一位权信息、以及乘法计算的结果进行移位累加计算。
17、结合第一方面,在一种可能的实现方式中,预处理电路还用于获取n个特征值,将n个特征值划分为多个组,多个组中至少一组包括m个特征值,以获取m个特征值,n为大于m的正整数。
18、本技术实施例提供的存算一体装置,当预处理电路获取特征值的数量较多为n个时,通过将该n个特征值划分为多个组,多个组中至少一组包括m个特征值,以获取m个特征值,从而可以减少第一数据和第二数据的数据量,减少预处理电路根据第一数据确定第二数据时的计算量,可以减少确定第二数据的时间,提高存算一体装置的计算效率。
19、结合第一方面,在一种可能的实现方式中,预处理电路还用于根据n个特征值的数据规模大小和/或对应的网络层的计算次数,确定将n个特征值划分为多个组。
20、本技术实施例提供的存算一体装置,预处理电路根据n个特征值的数据规模大小和/或对应的网络层的计算次数,确定将n个特征值划分为多个组,可以提高存算一体装置的计算效率。
21、结合第一方面,在一种可能的实现方式中,多级子累加电路中的第lognk级子累加电路包括第二移位累加器。当n个特征值的数据规模小于第一阈值和/或对应的网络层的计算次数小于第二阈值时,预处理电路还用于向第二移位累加器依次发送n个特征值中每个比特位对应的第二位权信息。第二移位累加器用于根据第二位权信息对多级子累加电路的第(lognk-1)级子累加电路的累加结果进行移位累加计算。
22、本技术实施例提供的存算一体装置,通过在多级子累加电路中的第lognk级子累加电路设置第二移位累加器,当n个特征值的数据规模小于第一阈值和/或对应的网络层的计算次数小于第二阈值时,第二移位累加器可以根据预处理电路发送的第二位权信息对第(lognk-1)级子累加电路的累加结果进行移位累加计算以确定乘累加结果,从而存算一体装置可以支持不对翻转率进行优化时的乘累加计算。
23、本技术实施例第二方面,提供一种神经网络计算方法,应用于包括预处理电路和存算电路的存算一体装置,该方法包括:预处理电路获取m个特征值,每个特征值包括多个比特位,m为正整数。预处理电路在当前周期确定第一数据,第一数据包括m个特征值中每个特征值的第一比特位。存算电路将第一数据在当前周期进行乘累加计算。预处理电路根据第一数据确定第二数据,第二数据为下一周期的待计算数据,第二数据包括m个特征值中每个特征值的第二比特位。
24、结合第二方面,在一种可能的实现方式中,第一数据与第二数据之间的翻转率,小于或等于第一数据与第三数据之间的翻转率,第三数据包括m个特征值中每个特征值的第三比特位,第三比特位为除第一比特位与第二比特位之外的任一个比特位。
25、结合第二方面,在一种可能的实现方式中,上述预处理电路根据第一数据确定第二数据,包括:预处理电路分别确定第一数据与第二数据之间的第一翻转率,以及第一数据与第三数据之间的第二翻转率,比较第一翻转率与第二翻转率的大小,以确定第二数据。
26、结合第二方面,在一种可能的实现方式中,上述预处理电路根据第一数据确定第二数据,包括:预处理电路分别确定第一数据包括指定数值的数量与第二数据包括指定数值的数量的第一差值,以及第一数据包括指定数值的数量与第三数据包括指定数值的数量的第二差值,比较第一差值与第二差值的大小以确定第二数据,第一差值小于或等于第二差值。
27、结合第二方面,在一种可能的实现方式中,存算电路包括互相耦合的计算阵列和累加电路,该方法还包括:计算阵列将第一数据在当前周期进行乘法计算。预处理电路在当前周期向累加电路发送第一数据对应的第一位权信息。累加电路在当前周期根据第一位权信息对乘法计算的结果进行移位累加计算。
28、结合第二方面,在一种可能的实现方式中,累加电路的结构包括加法树。
29、结合第二方面,在一种可能的实现方式中,累加电路包括多级子累加电路,多级子累加电路中的第logkm级子累加电路包括第一移位累加器,k为大于或等于2的正整数,该方法还包括:第一移位累加器在当前周期根据第一位权信息对乘法计算的结果进行移位累加计算。
30、结合第二方面,在一种可能的实现方式中,该方法还包括:预处理电路获取n个特征值,将n个特征值划分为多个组,多个组中至少一组包括m个特征值,以获取m个特征值,n为大于m的正整数。
31、结合第二方面,在一种可能的实现方式中,该方法还包括:预处理电路根据n个特征值的数据规模大小和/或对应的网络层的计算次数,确定将n个特征值划分为多个组。
32、结合第二方面,在一种可能的实现方式中,多级子累加电路中的第lognk级子累加电路包括第二移位累加器,当n个特征值的数据规模小于第一阈值和/或对应的网络层的计算次数小于第二阈值时,该方法还包括:预处理电路向第二移位累加器依次发送n个特征值中每个比特位对应的第二位权信息。第二移位累加器根据第二位权信息对多级子累加电路的第(lognk-1)级子累加电路的累加结果进行移位累加计算。
33、本技术实施例第三方面,提供一种存算芯片,该存算芯片包括单片微型计算机,以及与单片微型计算机耦合的至少一个存算一体装置,该存算一体装置为上述第一方面或第一方面的任一种可能的实现方式所述的存算一体装置。
34、上述单片微型计算机也可以称为微控制单元。
35、结合第三方面,在一种可能的实现方式中,该存算芯片还可以包括直接内存访问和动态随机存取存储器,该直接内存访问、动态随机存取存储器、存算一体装置、以及单片微型计算机可以通过总线耦合。
36、可选的,该存算芯片可以应用的场景包括关键词检测、图像分类、目标检测等场景,本技术实施例对于该存算芯片的具体应用场景并不限定。
37、本技术实施例第四方面,提供一种电子设备,该电子设备包括处理器,以及与处理器耦合的存算芯片,该存算芯片为上述第三方面或第三方面的任一种可能的实现方式所述的存算芯片。
38、结合第四方面,在一种可能的实现方式中,上述处理器可以为中央处理器。
39、可选的,该电子设备的类型可以包括智能手表、智能手环、蓝牙耳机、智能手机、智能车机、无人机等,本技术实施例对于该电子设备的具体类型并不限定。
40、本技术实施例第五方面,提供一种计算机可读存储介质,该计算机可读存储介质包括指令。当指令在计算机上运行时,使得存算一体装置执行如上述第二方面或第二方面任一种可能实现方式中的神经网络计算方法。
41、本技术实施例第六方面,提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得存算一体装置执行如上述第二方面或第二方面任一种可能实现方式中的神经网络计算方法。
42、本技术中第二方面至第六方面的描述,可以参考第一方面的详细描述;并且,第二方面至第六方面的有益效果,可以参考第一方面的有益效果分析,此处不再赘述。
1.一种存算一体装置,其特征在于,应用于神经网络计算,所述存算一体装置包括预处理电路、以及与所述预处理电路耦合的存算电路;
2.根据权利要求1所述的装置,其特征在于,所述第一数据与所述第二数据之间的翻转率,小于或等于所述第一数据与第三数据之间的翻转率,所述第三数据包括所述m个特征值中每个特征值的第三比特位,所述第三比特位为除所述第一比特位与所述第二比特位之外的任一个比特位。
3.根据权利要求2所述的装置,其特征在于,
4.根据权利要求2所述的装置,其特征在于,
5.根据权利要求1-4中任一项所述的装置,其特征在于,所述存算电路包括互相耦合的计算阵列和累加电路;
6.根据权利要求5所述的装置,其特征在于,所述累加电路的结构包括加法树。
7.根据权利要求6所述的装置,其特征在于,所述累加电路包括多级子累加电路,所述多级子累加电路中的第级子累加电路包括第一移位累加器,k为大于或等于2的正整数;
8.根据权利要求7所述的装置,其特征在于,
9.根据权利要求8所述的装置,其特征在于,
10.根据权利要求9所述的装置,其特征在于,所述多级子累加电路中的第级子累加电路包括第二移位累加器,当所述n个特征值的数据规模小于第一阈值和/或对应的网络层的计算次数小于第二阈值时;
11.一种神经网络计算方法,其特征在于,应用于包括预处理电路和存算电路的存算一体装置,所述方法包括:
12.根据权利要求11所述的方法,其特征在于,所述第一数据与所述第二数据之间的翻转率,小于或等于所述第一数据与第三数据之间的翻转率,所述第三数据包括所述m个特征值中每个特征值的第三比特位,所述第三比特位为除所述第一比特位与所述第二比特位之外的任一个比特位。
13.根据权利要求12所述的方法,其特征在于,所述预处理电路根据所述第一数据确定第二数据,包括:
14.根据权利要求12所述的方法,其特征在于,所述预处理电路根据所述第一数据确定第二数据,包括:
15.根据权利要求11-14中任一项所述的方法,其特征在于,所述存算电路包括互相耦合的计算阵列和累加电路,所述方法还包括:
16.根据权利要求15所述的方法,其特征在于,所述累加电路的结构包括加法树。
17.根据权利要求16所述的方法,其特征在于,所述累加电路包括多级子累加电路,所述多级子累加电路中的第级子累加电路包括第一移位累加器,k为大于或等于2的正整数,所述方法还包括:
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
19.根据权利要求18所述的方法,其特征在于,所述方法还包括:
20.根据权利要求19所述的方法,其特征在于,所述多级子累加电路中的第级子累加电路包括第二移位累加器,当所述n个特征值的数据规模小于第一阈值和/或对应的网络层的计算次数小于第二阈值时,所述方法还包括:
21.一种存算芯片,其特征在于,所述存算芯片包括单片微型计算机,以及与所述单片微型计算机耦合的至少一个存算一体装置,所述存算一体装置为如权利要求1-10中任一项所述的存算一体装置。
22.一种电子设备,其特征在于,所述电子设备包括处理器,以及与所述处理器耦合的存算芯片,所述存算芯片为如权利要求21所述的存算芯片。