乘法器、数据处理方法、芯片及电子设备与流程

专利2022-06-29  90


本发明涉及计算机技术领域,特别是涉及一种乘法器、数据处理方法、芯片及电子设备。



背景技术:

随着数字电子技术的不断发展,各类人工智能(artificialintelligence,ai)芯片的快速发展对于高性能数字乘法器的要求也越来越高。神经网络算法作为智能芯片广泛应用的算法之一,通过乘法器进行乘法运算在神经网络算法中是一种常见的操作。

通常,不同位宽数据的乘法运算时,相同位宽的数据需要采用对应位数现有乘法器进行运算,不同位宽的数据采用多个不同位宽的现有乘法器进行运算。但是,针对不同位宽的数据需要采用不同的乘法器进行乘法运算,导致乘法器占用ai芯片的面积较大。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种乘法器、数据处理方法、芯片及电子设备。

本发明实施例提供一种乘法器,所述乘法器包括:修正编码电路和修正压缩电路,所述修正编码电路的输出端与所述修正压缩电路的输入端连接;

所述修正编码电路用于对接收到的数据进行编码处理,得到符号位扩展后的部分积,并根据符号位扩展后的所述部分积得到目标编码的部分积,所述修正压缩电路用于对目标编码的部分积进行累加处理。

在其中一个实施例中,所述修正编码电路中包括第一输入端,用于接收输入的功能选择模式信号;所述修正压缩电路中包括第一输入端,用于接收输入的所述功能选择模式信号;所述功能选择模式信号用于确定乘法器处理的数据的位宽。

在其中一个实施例中,所述修正编码电路包括:低位布斯编码单元、低位部分积获取单元、选择器、高位布斯编码单元、高位部分积获取单元、低位选择器组单元以及高位选择器组单元;所述低位布斯编码单元的第一输出端与所述选择器的输入端连接,所述低位布斯编码单元的第二输出端与所述低位部分积获取单元的第一输入端连接,所述选择器的输出端与所述高位布斯编码单元的第一输入端连接,所述高位布斯编码单元的输出端与所述高位部分积获取单元的第一输入端连接,所述低位选择器组单元的输出端与所述低位部分积获取单元的第二输入端连接,所述高位选择器组单元的输出端与所述高位部分积获取单元的第二输入端连接;

其中,所述低位布斯编码单元用于对接收到的数据中的低位数据进行布斯编码处理得到低位编码信号,所述低位部分积获取单元用于根据所述低位编码信号,得到目标编码的低位部分积,所述选择器用于选通高位数据进行布斯编码时的补位数值,所述高位布斯编码单元用于对接收到的所述高位数据以及所述补位数值,进行布斯编码处理得到高位编码信号,所述高位部分积获取单元用于根据所述高位编码信号,得到目标编码的高位部分积,所述低位选择器组单元用于选通目标编码的低位部分积中的数值,所述高位选择器组单元用于选通目标编码的高位部分积中的数值。

在其中一个实施例中,所述低位布斯编码单元包括:低位数据输入端口以及低位编码信号输出端口;所述低位数据输入端口均用于用于接收进行布斯编码处理的低位数据,所述低位编码信号输出端口用于输出对低位数据进行布斯编码处理后得到的低位编码信号。

在其中一个实施例中,所述低位部分积获取单元包括:低位编码信号输入端口、选通数值输入端口、数据输入端口以及部分积中的数值输出端口;所述低位编码信号输入端口用于接收低位布斯编码单元输出的低位编码信号,所述选通数值输入端口用于接收低位选择器组单元选通后,输出的目标编码的低位部分积中的数值,所述数据输入端口用于接收乘法运算的数据,所述部分积中的数值输入端口用于接收目标编码的低位部分积中的数值。

在其中一个实施例中,所述选择器,包括:功能选择模式信号输入端口、第一选通数值输入端口、第二选通数值输入端口以及运算结果输出端口,所述功能选择模式信号输入端口用于接收乘法器需要处理不同位宽的数据对应的功能选择模式信号,所述第一选通数值输入端口用于接收第一选通数值,所述第二选通数值输入端口用于接收第二选通数值,所述运算结果输出端口输出选通后的所述第一选通数值或所述第二选通数值。

在其中一个实施例中,所述高位布斯编码单元,包括:高位数据输入端口以及高位编码信号输出端口;所述高位数据输入端口用于接收进行布斯编码处理的高位数据,所述高位编码信号输出端口用于输出对高位数据进行布斯编码处理后得到的高位编码信号。

在其中一个实施例中,所述高位部分积获取单元包括:高位编码信号输入端口、选通数值输入端口、数据输入端口以及部分积中的数值输出端口;所述高位编码信号输入端口用于接收高位布斯编码单元输出的高位编码信号,所述选通数值输入端口用于接收高位选择器组单元选通后,输出的目标编码的高位部分积中的数值,所述数据输入端口用于接收乘法运算的数据,所述部分积中的数值输入端口用于接收目标编码的高位部分积中的数值。

在其中一个实施例中,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对目标编码的低位部分积中的数值进行选通。

在其中一个实施例中,所述低位选择器组单元包括:高位选择器,所述高位选择器用于对目标编码的高位部分积中的数值进行选通。

在其中一个实施例中,所述修正压缩电路包括:修正华莱士树组电路和累加电路,所述修正华莱士树组电路的输出端与所述累加电路的输入端连接;所述修正华莱士树组电路用于对不同位宽数据运算时,得到的目标编码的部分积中每一列的数值进行累加处理,所述累加电路用于对接收到的输入数据进行累加处理。

在其中一个实施例中,所述修正华莱士树组电路包括:低位华莱士树子电路、选择器以及高位华莱士树子电路;所述低位华莱士树子电路的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子电路的输入端连接;其中,所述低位华莱士树子电路用于对目标编码的所述部分积中的每一列数值进行累加运算,所述选择器用于选通高位华莱士树子电路接收的进位输入信号,所述高位华莱士树子电路用于对目标编码的所述部分积中的每一列数值进行累加运算。

在其中一个实施例中,所述累加电路包括:加法器,所述进位加法器用于对接收到的两个同位宽数据进行加法运算。

在其中一个实施例中,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,和位信号输入端口用于接收和位信号,运算结果输出端口用于输出进位信号与和位信号进行累加处理的结果。

本实施例提供的一种乘法器,通过修正编码电路对接收到的数据进行编码处理得到符号位扩展后的部分积,并根据符号位扩展后的所述部分积得到目标编码的部分积,并通过修正压缩电路对目标编码的部分积进行累加处理,得到最终的乘法运算结果,该过程能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

本发明实施例提供一种数据处理方法,所述方法包括:

接收待处理的数据;

选通待编码信号,根据所述待编码信号对待处理的所述数据进行布斯编码处理,得到编码信号;

根据所述编码信号和待处理的所述数据,得到目标编码的部分积;

对目标编码的所述部分积进行累加处理,得到运算结果。

在其中一个实施例中,所述选通待编码信号,根据所述待编码信号对对待处理的所述数据进行布斯编码处理,得到编码信号的步骤,包括:

根据所述待编码信号与待处理的所述数据,得到待编码的高位数据和低位数据;

对待编码的所述高位数据以及所述低位数据进行布斯编码处理,得到高位编码信号和低位编码信号。

在其中一个实施例中,所述根据所述编码信号和待处理的所述数据,得到目标编码的部分积的步骤,包括:

根据所述低位编码信号和待处理的所述数据,得到目标编码的低位部分积;

根据所述高位编码信号和待处理的所述数据,得到目标编码的高位部分积。

在其中一个实施例中,所述根据所述低位编码信号和待处理的所述数据,得到目标编码的低位部分积的步骤,包括:

根据所述低位编码信号和待处理的所述数据,得到符号位扩展后的低位部分积;

通过低位选择器组单元选通目标编码的所述低位部分积中的数值;

根据目标编码的所述低位部分积中的数值以及符号位扩展后的所述低位部分积中的数值,得到目标编码的低位部分积。

在其中一个实施例中,所述根据所述高位编码信号和待处理的所述数据,得到目标编码的高位部分积的步骤,包括:

根据所述高位编码信号和待处理的所述数据,得到符号位扩展后的高位部分积;

通过高位选择器组单元选通目标编码的所述高位部分积中的数值;

根据目标编码的所述高位部分积中的数值以及符号位扩展后的所述高位部分积中的数值,得到目标编码的高位部分积。

在其中一个实施例中,所述对目标编码的所述部分积进行累加处理,得到运算结果的步骤,包括:

通过修正华莱士树组电路对目标编码的所述低位部分积和所述高位部分积,进行累加处理得到第一运算结果;

通过累加电路对所述第一运算结果进行累加处理,得到运算结果。

在其中一个实施例中,所述通过累加电路对所述第一运算结果进行累加处理,得到运算结果,包括:

通过低位华莱士树组子电路对目标编码的所述部分积中的列数值进行累加处理,得到累加运算结果;

通过选择器对所述累加运算结果进行选通,得到进位选通信号;

通过高位华莱士树组电路根据所述进位选通信号以及目标编码的所述部分积中的列数值进行累加处理,得到运算结果。

本实施例提供的一种数据处理方法,接收待处理的数据,选通待编码信号,根据所述待编码信号对待处理的所述数据进行布斯编码处理,得到编码信号,根据所述编码信号和待处理的所述数据,得到目标编码的部分积,对目标编码的所述部分积进行累加处理,得到运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

本发明实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个所述的乘法器;该机器学习运算装置用于从其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过i/o接口传递给其它处理装置;

当所述机器学习运算装置包含多个所述乘法器时,所述多个所述乘法器间可以通过特定的结构进行链接并传输数据;

其中,多个所述乘法器通过pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。

本发明实施例提供的一种组合处理装置,该组合处理装置包括如所述的机器学习处理装置、通用互联接口,和其它处理装置;该机器学习运算装置与上述其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。

本发明实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的乘法器、上述所述的机器学习运算装置或者上述所述的组合处理装置。

本发明实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。

本发明实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。

本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。

本发明实施例提供的一种芯片,包括至少一个如上述任一项所述的乘法器。

本发明实施例提供的一种电子设备,包括如所述的芯片。

附图说明

图1为一实施例提供的一种乘法器的结构示意图;

图2为另一实施例提供的另一种乘法器的结构示意图;

图3为一实施例提供的乘法器的具体实现电路图;

图4为一实施例提供的16位数据乘法运算得到的部分积的分布规律示意图;

图5为另一实施例提供的另一种乘法器的具体实现电路图;

图6为另一实施例提供的8位数据运算时压缩电路的具体电路结构图;

图7为一实施例提供的一种数据处理方法流程示意图;

图8为一实施例提供的得到编码信号的方法流程示意图;

图9为一实施例提供的得到目标编码的部分积的方法具体流程示意图;

图10为一实施例提供的得到运算结果的方法流程示意图;

图11为一实施例提供的得到运算结果的具体方法流程示意图;

图12为一实施例提供的另一种数据处理方法流程示意图;

图13为另一实施例提供的得到符号位扩展后的部分积的方法流程示意图;

图14为另一实施例提供的得到符号位扩展后的部分积的具体方法流程示意图;

图15为一实施例提供的一种组合处理装置的结构图;

图16为一实施例提供的另一种组合处理装置的结构图;

图17为一实施例提供的一种板卡的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的乘法器可应用于ai芯片、现场可编程门阵列fpga(field-programmablegatearray,fpga)芯片、或者是其它的硬件电路设备中进行乘法运算处理,其具体结构示意图如图1和2所示。

如图1所示,图1为一个实施例提供的一种乘法器的结构图。如图1所示,该乘法器包括:修正编码电路11和修正压缩电路12;所述修正编码电路11的输出端与所述修正压缩电路12的输入端连接;所述修正编码电路11用于对接收到的数据进行编码处理,得到符号位扩展后的部分积,并根据符号位扩展后的所述部分积得到目标编码的部分积,所述修正压缩电路12用于对目标编码的部分积进行累加处理。

具体的,上述修正编码电路11可以包括多个具有不同功能的数据处理单元,并且修正编码电路11接收到的数据可以作为乘法运算中的乘数,还可以作为乘法运算中的被乘数。可选的,上述数据可以为定点数。可选的,修正编码电路11可以接收多种不同比特位宽的数据,也就是说,本实施例提供的乘法器可以处理多种不同比特位宽数据的乘法运算。但是,同一次乘法运算时,修正编码电路11接收到的乘数和被乘数可以是同位宽的数据,即乘数和被乘数位宽相等。示例性的,本实施例提供的乘法器可以处理8位*8位的数据乘法运算,16位*16位的乘法运算,32位*32位的数据的乘法运算,还可以处理64位*64位的数据的乘法运算,对此本实施例不作任何限定。

可选的,修正编码电路11可以对接收到的数据进行二进制编码处理,相当于可以对接收到的乘数进行二进制编码处理,并根据接收到的被乘数,得到符号位扩展后的部分积,该符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍。示例性的,修正编码电路11接收到的是16比特位宽的数据,若乘法器当前所处理8位数据乘法运算,则修正编码电路11需要将16比特位宽的数据划分成,高8位和低8位的两组数据分别进行运算,此时,得到的符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍;若乘法器当前所处理16位数据乘法运算,则修正编码电路11需要对整体16位数据进行运算,此时,得到的符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍。

可选的,所述修正编码电路11中包括第一输入端,用于接收输入的功能选择模式信号;所述修正压缩电路12中包括第一输入端,用于接收输入的所述功能选择模式信号。可选的,所述功能选择模式信号用于确定乘法器处理的数据位宽。

需要说明的是,上述功能选择模式信号可以有多种,不同功能选择模式信号对应于乘法器当前可以处理不同位宽数据的乘法运算。可选的,同一次乘法运算时,修正编码电路11和修正压缩电路12接收到的功能选择模式信号可以相等。

示例性的,如果修正编码电路11和修正压缩电路12能够接收多种功能选择模式信号,以三种功能选择模式信号为例,可以分别为mode=00,mode=01,mode=10,则mode=00可以表征乘法器能够对16位数据进行处理,mode=01可以表征乘法器能够对32位数据进行处理,mode=10可以表征乘法器能够对64位数据进行处理,另外,mode=00也可以表征为乘法器能够对64位数据进行处理,mode=01也可以表征为乘法器能够对16位数据进行处理,mode=10可以表征乘法器能够对32位数据进行处理。

本实施例提供的乘法器,通过修正编码电路对接收到的数据进行编码处理得到符号位扩展后的部分积,并根据符号位扩展后的所述部分积得到目标编码的部分积,并通过修正压缩电路对目标编码的部分积进行累加处理,得到乘法运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

图2为另一实施例提供的一种乘法器的结构图。如图2所示,该乘法器包括:判断电路11、数据扩展电路12、编码电路13以及压缩电路14;所述判断电路11的输出端与所述数据扩展电路12的输入端连接,所述判断电路11的输出端与所述编码电路13的第一输入端连接,所述数据扩展电路12的输出端与所述编码电路13的第二输入端连接,所述编码电路13的输出端与所述压缩电路14的输入端连接。其中,所述判断电路11用于判断接收到的数据是否需要通过与所述判断电路11的输出端相连的数据扩展电路12进行处理,所述数据扩展电路12用于对接收到的数据进行扩展处理,所述编码电路13用于对接收到的数据进行编码处理得到目标编码的部分积,所述压缩电路14用于对目标编码的部分积进行累加处理。

具体的,上述判断电路11可以为一种判断接收到的数据的位宽,与乘法器可处理的数据的位宽2n大小的电路。可选的,上述编码电路13可以包括多个具有不同功能的数据处理单元,并且编码电路13接收到的数据可以作为乘法运算中的乘数,还可以作为乘法运算中的被乘数。另外,编码电路13接收到的数据可以是判断电路11输出的两个数据,还可以为数据扩展电路12对接收到的两个数据进行扩展处理后的数据。可选的,上述不同功能的数据处理单元可以为具有二进制编码功能的数据处理单元。可选的,上述乘数和被乘数可以是多比特位宽的浮点数。可选的,压缩电路14可以对编码电路13得到的目标编码的部分积进行累加处理,得到乘法运算结果。

需要说明的是,乘法器可以对固定2n比特位宽的数据进行乘法运算,还可以理解为乘法器中的编码电路和压缩电路可以对2n比特位宽的数据进行乘法运算。但是,同一次乘法运算时,编码电路13接收到的乘数和被乘数为同位宽的数据。示例性的,本实施例提供的乘法器可以处理8位*8位的数据乘法运算,16位*16位的数据乘法运算,32*32位的数据乘法运算,还可以处理64位*64位的数据乘法运算,对此本实施例不作任何限定。可选的,上述不同功能的数据处理单元的输入端口可以有一个,每个数据处理单元的每个输入端口的功能可以相同,输出端口也可以有一个,每个数据处理单元的每个输出端口的功能可以不相同,并且不同功能数据处理单元的电路结构可以不相同。

可选的,所述编码电路13中包括第三输入端,用于接收输入的功能选择模式信号;所述压缩电路14中包括第一输入端,用于接收输入的功能选择模式信号。

本实施例提供的一种乘法器,通过判断电路判断接收到的数据是否需要通过下一数据扩展电路进行处理,如果不需要进行下一数据扩展电路处理,则判断电路直接将接收到的数据输入至编码电路进行编码处理得到目标编码的部分积,否则就会将接收到的数据输入至数据扩展电路进行扩展处理,数据扩展电路将扩展后的数据输入至编码电路进行编码处理得到目标编码的部分积,并通过压缩电路对目标编码的部分积进行累加处理,得到最终的运算结果,该过程能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

图3为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述修正编码电路11,该修正编码电路11包括:低位布斯编码单元111、低位部分积获取单元112、选择器113、高位布斯编码单元114、高位部分积获取单元115、低位选择器组单元116以及高位选择器组单元117;所述低位布斯编码单元111的第一输出端与所述选择器112的输入端连接,所述低位布斯编码单元111的第二输出端与所述低位部分积获取单元112的第一输入端连接,所述选择器112的输出端与所述高位布斯编码单元113的第一输入端连接,所述高位布斯编码单元113的输出端与所述高位部分积获取单元115的第一输入端连接,所述低位选择器组单元116的输出端与所述低位部分积获取单元112的第二输入端连接,所述高位选择器组单元117的输出端与所述高位部分积获取单元115的第二输入端连接。其中,所述低位布斯编码单元111用于对接收到的数据中的低位数据进行布斯编码处理得到低位编码信号,所述低位部分积获取单元112用于根据所述低位编码信号,得到目标编码的低位部分积,所述选择器113用于选通高位数据进行布斯编码时的补位数值,所述高位布斯编码单元114用于对接收到的所述高位数据以及所述补位数值,进行布斯编码处理得到高位编码信号,所述高位部分积获取单元115用于根据所述高位编码信号,得到目标编码的高位部分积,所述低位选择器组单元116用于选通目标编码的低位部分积中的数值,所述高位选择器组单元117用于选通目标编码的高位部分积中的数值。

具体的,上述修正编码电路11可以接收乘法运算中的乘数和被乘数,并对乘数进行布斯编码处理,得到编码信号,根据编码信号以及接收到的被乘数得到目标编码的部分积。其中,低位数据在进行布斯编码处理前,低位布斯编码单元111可以自动对修正编码电路11接收到的数据中的低位数据进行一次补位处理,并对补位处理后的低位数据进行布斯编码处理,得到低位编码信号,该数据可以为乘法运算中的乘数。可选的,若修正编码电路11接收到的乘数位宽为n,则低位数据可以为低n/2位的数据,补位处理可以表征为对低位数据中最低位数值的更低一位处补一位数值0。示例性的,若乘法器当前可处理8位*8位的定点数乘法运算,乘数为“y7y6y5y4y3y2y1y0”,则在进行布斯编码处理前,低位布斯编码单元111可以自动对乘数进行补位处理,将乘数转换为补位后的数据“y7y6y5y4y3y2y1y00”。可选的,上述低位编码信号的数量可以等于低位数据位宽的1/2,且该低位编码信号的数量可以等于低位数据对应得到的符号位扩展后的部分积的数量。需要说明的是,无论乘法器当前可处理数据的位宽和乘法器接收到的数据位宽是否相同,实现布斯编码处理时,低位布斯编码单元111都需要对低位数据进行补位处理。

同时,通过高位布斯编码单元114可以对修正编码电路11接收到的乘数中的高位数据,进行布斯编码处理得到高位编码信号,但是,高位数据在进行布斯编码处理前,需要通过选择器113获得一个选通数值,该选通数值可以作为高位数据进行布斯编码时的补位数值,然后将高位数据与补位数值组合得到补位后的高位数据,通过高位布斯编码单元114对补位后的高位数据进行布斯编码处理,得到高位编码信号。可选的,选择器113可以为二路选择器,选通数值可以为0,还可以为乘数中的低位数据的最高位数值。示例性的,一乘法器可以处理n比特和2n比特位宽数据的乘法运算,修正编码电路11接收到的数据位宽为2n比特,若该乘法器当前处理的是n比特位宽数据的运算,则选择器113选通的数据为0,也就是说,乘法器需要将接收到的2n比特位宽的数据划分成,高n位和低n位数据进行分别处理;若该乘法器当前处理的是2n比特位宽数据的运算,则选择器113选通的数据为低位数据中的最高位数值,此时相当于,乘法器需要将接收到的2n比特位宽的数据作为一个整体进行布斯编码处理。另外,选择器112还可以根据接收到的不同功能选择模式信号确定选通的补位数值。

需要说明的是,低位部分积获取单元114可以根据每一个低位编码信号得到低位数据对应的符号位扩展后的部分积,以及低位选择器组单元116选通后得到的目标编码的低位部分积中的数值,得到目标编码的低位部分积。可选的,高位部分积获取单元115可以根据每一个高位编码信号得到高位数据对应的符号位扩展后的部分积,以及高位选择器组单元117选通后得到的目标编码的高位部分积中的数值,得到目标编码的高位部分积。可选的,布斯编码过程中,得到的低位编码信号的数量可以等于得到的高位编码信号的数量,还可以等于低位数据对应的符号位扩展后的部分积的数量,或高位数据对应的符号位扩展后的部分积的数量。可选的,修正编码电路11可以包含n/4个低位布斯编码单元111,还可以包含n/4个高位布斯编码单元114。可选的,修正编码电路11中可以包含n/4个低位部分积获取单元112,还可以包含n/4个高位部分积获取单元115。可选的,上述每一个低位部分积获取单元112和每一个高位部分积获取单元115中,均可以包含2n个数值生成子单元,每一个数值生成子单元可以获取符号位扩展后的部分积中的一个数值。其中,上述n均可以表示乘法器接收到的数据的位宽。

本实施例提供的一种乘法器,通过修正编码电路中的低位布斯编码单元,选择器,高位布斯编码单元对接收到的数据进行布斯编码处理,得到低位及高位编码信号,并且低位部分积获取单元和高位部分积获取单元根据低位及高位编码信号,得到目标编码的部分积,再对目标编码的部分积进行累加处理,得到乘法运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述低位布斯编码单元111,该低位布斯编码单元111包括:低位数据输入端口1111以及低位编码信号输出端口1112。所述低位数据输入端口1111用于接收进行布斯编码处理的低位数据,所述低位编码信号输出端口1112用于输出对低位数据进行布斯编码处理后得到的低位编码信号。

具体的,乘法运算中,乘法器中的修正编码电路11需要对乘数进行布斯编码处理,修正编码电路11中的低位布斯编码单元111可以通过低位数据输入端口1111接收乘数中低位数据中的三位数值,该三位作为一组待编码数据,该三个数值可以为低位数据中相邻的三位数值。其中,每一个低位布斯编码单元111对接收到的待编码数据处理后,将得到的低位编码信号可以通过低位编码信号输出端口1114输出。另外,修正编码电路11中的第一个低位布斯编码单元111,通过低位数据输入端口1111可以接收补位数值0,以及低位数据中的低两位数值。

示例性的,若乘法器接收到的乘数为16比特位宽的数据“y15y14y13y12y11y10y9y8y7y6y5y4y3y2y1y0”,从最低位数值至最高位数值对应的编号为0,…,15,低位布斯编码单元111可以对低位数据y7y6y5y4y3y2y1y0进行布斯编码处理,布斯编码处理前对8位低位数据进行补位处理后得到9位数据y7y6y5y4y3y2y1y00,低位布斯编码单元111可以分别对y7y6y5y4y3y2y1y00中y7y6y5,y5y4y3,y3y2y1,y1y00这四组数据分别进行布斯编码处理,通过低位布斯编码单元111中的低位数据输入端口1111可以接收9位数据划分后的四组数据中相邻的三位数值。

需要说明的是,每一次布斯编码处理时,可以将低位数据进行补位处理后的数据划分成多组待编码数据,低位布斯编码单元111可以同时对划分后的多组待编码数据进行布斯编码处理。可选的,划分多组待编码数据的原则可以表征为对补位处理后的数据中相邻的每3位数值作为一组待编码数据,每一组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。可选的,布斯编码的编码规则可以参见表1,其中,表1中的y2i 1,y2i和y2i-1可以表示每一组待编码数据对应的数值,x可以表示修正编码电路11接收到的被乘数,对每一组对应待编码数据进行布斯编码处理后,得到对应的编码信号ppi(i=0,1,2,...,n)。可选的,根据表1所示,布斯编码后得到的编码信号可以包括五类,分别为-2x,2x,-x,x和0。示例性的,若修正编码电路11接收到的被乘数为“x7x6x5x4x3x2x1x0”,则x可以表示为“x7x6x5x4x3x2x1x0”。

表1

示例性的,继续参见上述示例,当i=0时,y2i 1=y1,y2i=y0,y2i-1=y-1,则y-1可以表示y0后的补位数值0(即补位处理后的乘数表示为y7y6y5y4y3y2y1y0y-1),布斯编码过程中,可以对y-1y0y1,y1y2y3,y3y4y5和y5y6y7四组待编码数据分别进行编码,得到4个低位编码信号,其中,每一组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。

本实施例提供的一种乘法器,通过低位布斯编码单元对低位数据进行布斯编码处理,得到低位数据对应的低位编码信号,并且低位部分积获取单元根据低位编码信号得到目标编码的低位部分积,进而对目标编码的低位部分积以及高位部分积进行累加处理,得到乘法运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述低位部分积获取单元112,该低位部分积获取单元112包括:低位编码信号输入端口1121、选通数值输入端口1122、数据输入端口1123以及部分积中的数值输出端口1124;所述低位编码信号输入端口1121用于接收低位布斯编码单元111输出的低位编码信号,所述选通数值输入端口1122用于接收低位选择器组单元116选通后,输出的目标编码的低位部分积中的数值,所述数据输入端口1123用于接收乘法运算的数据,所述部分积中的数值输入端口1124用于接收目标编码的低位部分积中的数值。

具体的,低位部分积获取单元112通过低位编码信号输入端口1121可以接收低位布斯编码单元111输出的低位编码信号,并通过数据输入端口1123可以接收乘法运算中的被乘数。可选的,低位部分积获取单元112可以根据接收到的低位编码信号以及接收到的乘法运算中的被乘数,得到低位数据对应的符号位扩展后的部分积。可选的,若数据输入端口1123接收到的被乘数位宽为n,则符号位扩展后的部分积的位宽可以等于2n。示例性的,若低位部分积获取单元112接收到一个n比特位宽的被乘数x,则低位部分积获取单元112可以根据被乘数x与五类编码信号-2x,2x,-x,x和0直接得到对应的符号位扩展后的部分积,该符号位扩展后的部分积的低(n 1)位数值可以等于原始部分积的数值,符号位扩展后的部分积的高(n-1)位数值可以等于原始部分积的符号位数值,该符号位数值也就是原始部分积的最高位数值。当编码信号为-2x时,则原始部分积可以为对x进行左右一位后取反再加1,当编码信号为2x时,则原始部分积可以为对x进行左移一位,当编码信号为-x时,则原始部分积可以为对x按位取反再加1,当编码信号为x时,则原始部分积可以为x与x的符号位数值(即x的最高位数值)结合的数据,当编码信号为 0时,则原始部分积可以为0,也就是9位原始部分积中的每一位数值均等于0。

需要说明的是,低位部分积获取单元112可以通过选通数值输入端口1122,接收低位选择器组单元116选通的不同位宽数据对应的符号位扩展后的部分积中的对应位数值,并根据乘法器当前得到的低位数据对应的符号位扩展后的部分积,以及选通后的对应位数值,得到目标编码的低位部分积。

本实施例提供的一种乘法器,低位部分积获取单元可以根据每一个低位编码信号得到目标编码的低位部分积,并且低位部分积获取单元根据低位编码信号得到目标编码的低位部分积,进而对目标编码的低位部分积以及高位部分积进行累加处理,得到乘法运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述选择器113,该选择器113包括:功能选择模式信号输入端口1131(mode)、第一选通数值输入端口1132、第二选通数值输入端口1133以及运算结果输出端口1134;所述功能选择模式信号输入端口1131用于接收乘法器需要处理不同位宽的数据对应的功能选择模式信号,所述第一选通数值输入端口1132用于接收第一选通数值,所述第二选通数值输入端口1133用于接收第二选通数值,所述运算结果输出端口1134输出选通后的所述第一选通数值或所述第二选通数值。

具体的,选择器113可以通过功能选择模式信号输入端口1131接收到的功能选择模式信号,确定乘法器当前可处理的数据位宽,并确定运算结果输出端口1134输出第一选通数值或第二选通数值。可选的,第一选通数据可以为0或低位数据的最高位数值,第二选通数据可以为0或低位数据的最高位数值。

示例性的,乘法运算时,若修正编码电路11接收到的乘数和被乘数均为16位数据,且选择器113的功能选择模式信号输入端口1131(mode)可以接收两种不同功能选择模式信号,分别为mode=0,mode=1,mode=0可以表征乘法器能够对8位数据进行处理,mode=1可以表征乘法器能够对16位数据进行处理,当选择器112的功能选择模式信号输入端口1121(mode)接收到的mode为0,则乘法器当前可处理8位数据运算,此时,选择器113可以通过第二选通数值输入端口1133接收第二选通数值,该第二选通数值可以等于0;当选择器113的功能选择模式信号输入端口1131(mode)接收到的mode为1时,则乘法器当前可处理16位数据运算,此时,选择器113可以通过第一选通数值输入端口1132接收第一选通数值,该第一选通数值可以等于低位数据的最高位数值。

需要说明的是,若乘法器当前可处理8位数据乘法运算时,则乘法器可以对16位乘数和16位被乘数对应的高8位数据和低8位数据分别进行乘法运算,也就是说,高8位乘数和高8位被乘数通过高位布斯编码单元114进行8位数据运算,低8位乘数和低8位被乘数通过低位布斯编码单元111进行8位数据运算,并且乘法器进行8位数据乘法运算时,选择器113可以通过第二选通数值输入端口1133接收第二选通数值0,相当于高8位数据补位处理后的补位数值为0;若乘法器当前可处理16位数据乘法运算时,则乘法器可以直接对16位乘数和16位被乘数进行乘法运算,即修正编码电路11直接对16位乘数进行布斯编码,此时,选择器113可以通过第一选通数值输入端口1132接收第一选通数值,该第一选通数值为低8位数据中的最高位数值。

本实施例提供的一种乘法器,通过选择器接收到的功能选择模式信号,可以确定高位数据进行布斯编码处理时的补位数值,从而对补位后的数据进行布斯编码处理,该乘法器可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

图3为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述高位布斯编码单元114,该高位布斯编码单元114包括:高位数据输入端口1141以及高位编码信号输出端口1142;所述高位数据输入端口1141用于接收进行布斯编码处理的高位数据,所述高位编码信号输出端口1142用于输出对高位数据进行布斯编码处理后得到的高位编码信号。

具体的,乘法运算中,乘法器中的修正编码电路11需要对乘数进行布斯编码处理,修正编码电路11中的高位布斯编码单元114可以通过高位数据输入端口1141可以接收乘数中高位数据中的三位数值,该三位数值作为一组待编码数据,该三个数值可以为高位数据中相邻的三位数值。

示例性的,继续参见16位数据乘法运算的示例,高位布斯编码单元114可以分别对y7y6y5y4y3y2y1y00中y7y6y5,y5y4y3,y3y2y1,y1y00四组数据分别进行布斯编码处理,通过高位布斯编码单元114中的高位数据输入端口1141可以接收9位数据划分后的四组数据中连续的三位数值。

需要说明的是,每一次布斯编码处理时,高位布斯编码单元114处理待编码的高位数据的原理,与低位布斯编码单元111处理待编码的低位数据的原理可以相同。其中,高位布斯编码单元114与低位布斯编码单元111的内部电路结构可以相同,外部输出端口的功能也可以相同。

本实施例提供的一种乘法器,通过高位布斯编码单元对高位数据进行布斯编码处理,得到高位数据对应的高位编码信号,并且高位部分积获取单元根据高位编码信号得到目标编码的高位部分积,进而对目标编码的高位部分积以及低位部分积进行累加处理,得到乘法运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述高位部分积获取单元115,该高位部分积获取单元115包括:高位编码信号输入端口1151、选通数值输入端口1152、数据输入端口1153以及部分积中的数值输出端口1154;所述高位编码信号输入端口1151用于接收高位布斯编码单元111输出的高位编码信号,所述选通数值输入端口1152用于接收高位选择器组单元117选通后,输出的目标编码的高位部分积中的数值,所述数据输入端口1153用于接收乘法运算的数据,所述部分积中的数值输入端口1154用于接收目标编码的高位部分积中的数值。

具体的,高位部分积获取单元115通过高位编码信号输入端口1151可以接收高位布斯编码单元114输出的高位编码信号,并通过数据输入端口1153可以接收乘法运算中的被乘数。可选的,高位部分积获取单元115可以根据接收到的高位编码信号以及接收到的乘法运算中的被乘数,得到高位数据对应的符号位扩展后的部分积。可选的,若数据输入端口1153接收到的被乘数位宽为n,则符号位扩展后的部分积的位宽可以等于2n。

需要说明的是,高位部分积获取单元115可以通过选通数值输入端口1122,接收高位选择器组单元117选通的不同位宽数据对应的符号位扩展后的部分积中的对应位数值,并根据乘法器当前得到的高位数据对应的符号位扩展后的部分积,以及选通后的对应位数值,得到目标编码的高位部分积。

本实施例提供的一种乘法器,高位部分积获取单元可以根据每一个高位编码信号得到目标编码的高位部分积,并且高位部分积获取单元根据高位编码信号得到目标编码的高位部分积,进而对目标编码的高位部分积以及低位部分积进行累加处理,得到乘法运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述低位选择器组单元116,该低位选择器组单元116包括:低位选择器1161,多个所述低位选择器1161用于对目标编码的低位部分积中的数值进行选通。

具体的,上述低位选择器组单元116中低位选择器1161的数量,可以等于乘法器当前接收到的数据位宽平方的3/8倍,该低位选择器组单元116中多个低位选择器1161的内部电路结构可以相同。可选的,乘法运算时,每一个低位布斯编码单元111连接的对应低位部分积获取单元112中,可以包含2n个数值生成子单元,其中,n个数值生成子单元可以连接n个低位选择器1161,每一个数值生成子单元连接一个低位选择器1161,其中,n表示乘法器当前接收到的数据的位宽。可选的,上述n个低位选择器1161对应的n个数值生成子单元,可以为目标编码的低位部分积中高n位数值对应的数值生成子单元,且该n个低位选择器1161与选择器113的内部电路结构可以完全相同,同时,该n个低位选择器1161的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若乘法器可以处理n种不同位宽的数据运算,并且乘法器接收到的数据的位宽是n,则上述低位选择器1161的两个其它输入端口分别接收的信号可以为0和乘法器进行n比特位宽的数据运算时,该低位布斯编码单元111得到的对应符号位扩展后的部分积中的符号位数值。其中,n/4个低位部分积获取单元112可以连接n/4组n个低位选择器1161,各组的n个低位选择器1161接收到的符号位数值可以相同,也可以不同,但是,同一组的n个低位选择器1161接收到的符号位数值是相同的,并且该符号位数值可以根据每一组n个低位选择器1161,对应连接的低位部分积获取单元112获取的符号位扩展后的部分积中的符号位数值得到。

另外,每一个低位部分积获取单元112包含的2n个数值生成子单元中,对应n/2个数值生成子单元可以不连接低位选择器1161,此时,该n/2个数值生成子单元获取的数值可以为乘法器当前所处理不同位宽的数据,对应的一个低位数据得到的符号位扩展后的部分积中的对应位数值,也可以理解为,n/2个数值生成子单元获取的数值可以为对应符号位扩展后的部分积中,对应低n/2-1位至最低位之间的所有数值。

需要说明的是,每一个低位部分积获取单元112包含的2n个数值生成子单元中,剩余的n/2个数值生成子单元也可以连接n/2个低位选择器1161,每一个数值生成子单元可以连接1个低位选择器1161,该n/2个低位选择器1161与选择器113的内部电路结构可以相同,并且该n/2个低位选择器1161的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为乘法器进行n/2位数据运算,得到的对应符号位扩展后的部分积中的符号位数值,和乘法器进行n位数据运算,得到的对应符号位扩展后的部分积中对应位数值。其中,n/4个低位部分积获取单元112可以连接n/4组n/2个低位选择器1161,各组的n/2个低位选择器1161接收到的符号位数值可以相同,也可以不同,但是,同一组的n/2个低位选择器1161接收到的符号位数值是相同的,并且该符号位数值可以根据每一组n/2个低位选择器1161,对应连接的低位部分积获取单元112获取的符号位扩展后的部分积中的符号位数值得到。

另外,各组的n/2个低位选择器1161接收到的符号位扩展后的部分积中对应位数值,可以根据该组低位选择器1161所连接的低位部分积获取单元112,获取的符号位扩展后的部分积中的对应位数值确定,并且每一组的n/2个低位选择器1161中,每一个低位选择器1161接收到的对应位数值可以相同,可以不同。其中,每一个低位部分积获取单元112中2n个数值生成子单元的位置,可以在上一个低位部分积获取单元112中2n个数值生成子单元位置的基础上,左移两个数值生成子单元。可选的,目标编码的低位部分积中,只有第一个低位部分积的位宽可以等于2n,剩余的低位部分积都会在上一个低位部分积的基础上少高两位的数值,且最后一个低位部分积的位宽可以等于(3n/2 2)。

本实施例提供的一种乘法器,乘法器中的低位选择器组单元可以选通低位部分积中的数值,得到目标编码的低位部分积,进而通过修正压缩电路对目标编码的低位部分积和高位部分积进行累加处理,得到乘法运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述高位选择器组单元117,该低位选择器组单元117包括:高位选择器1171,多个所述高位选择器1171用于对目标编码的高位部分积中的数值进行选通。

具体的,上述高位选择器组单元117中高位选择器1171的数量,可以等于乘法器当前接收到的数据位宽平方的3/8倍,该高位选择器组单元117中多个高位选择器1171的内部电路结构可以相同。可选的,乘法运算时,每一个高位布斯编码单元114连接的对应高位部分积获取单元115中,可以包含2n个数值生成子单元,其中,n个数值生成子单元可以连接n个高位选择器1171,每一个数值生成子单元连接一个高位选择器1171,其中,n表示乘法器当前接收到的数据的位宽。可选的,上述n个高位选择器1171对应的n个数值生成子单元,可以为目标编码的高位部分积中低n位数值对应的数值生成子单元,且该n个高位选择器1171与选择器113的内部电路结构可以完全相同,同时,该n个高位选择器1171的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若乘法器可以处理n种不同位宽的数据运算,并且乘法器接收到的数据的位宽是n,则上述高位选择器1171的两个其它输入端口分别接收的信号可以为0和乘法器进行n比特位宽的数据运算时,该高位布斯编码单元114得到的对应符号位扩展后的部分积中的对应位数值。其中,n/4个高位部分积获取单元115可以连接n/4组n个高位选择器1171,各组的n个高位选择器1171接收到的对应位数值可以相同,也可以不同。

另外,每一个高位部分积获取单元115包含的2n个数值生成子单元中,对应n/2个数值生成子单元可以连接n/2个高位选择器1171,每一个数值生成子单元可以连接1个高位选择器1171,该n/2个高位选择器1171与选择器113的内部电路结构可以相同,并且该n/2个高位选择器1171的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为乘法器进行n/2位数据运算,得到的对应符号位扩展后的部分积中的符号位数值,和乘法器进行n位数据运算,得到的对应符号位扩展后的部分积中的符号位数值。其中,n/4个高位部分积获取单元115可以连接n/4组n/2个高位选择器1171,各组的n/2个高位选择器1171接收到的符号位数值可以相同,也可以不同,但是,同一组的n/2个高位选择器1171接收到的符号位数值是相同的,并且该符号位数值可以根据每一组n/2个高位选择器1171,对应连接的高位部分积获取单元115获取的符号位扩展后的部分积中的符号位数值得到。另外,各组的n/2个高位选择器1171接收到的符号位扩展后的部分积中对应位数值,可以根据该组高位选择器1171所连接的高位部分积获取单元115,获取的符号位扩展后的部分积中的符号位数值确定,并且每一组的n/2个高位选择器1171中,每一个高位选择器1171接收到的对应位数值可以相同,可以不同。

需要说明的是,每一个高位部分积获取单元115包含的2n个数值生成子单元中,剩余的n/2个数值生成子单元可以不连接高位选择器1171,此时,该n/2个数值生成子单元获取的数值可以为乘法器当前所处理不同位宽的数据,对应的一个高位数据得到的符号位扩展后的部分积中的对应位数值,也可以理解为,n/2个数值生成子单元获取的数值可以为对应符号位扩展后的部分积中,对应高3n/2-1位至低n 1位之间的所有数值。其中,每一个高位部分积获取单元115中2n个数值生成子单元的位置,可以在上一个高位部分积获取单元115中2n个数值生成子单元位置的基础上,左移两个数值生成子单元。可选的,目标编码的高位部分积中,只有第一个高位部分积的位宽可以等于3n/2,剩余的高位部分积都会在上一个高位部分积的基础上少高两位的数值。

本实施例提供的一种乘法器,乘法器中的高位选择器组单元可以选通高位部分积中的数值,得到目标编码的高位部分积,进而通过修正压缩电路对目标编码的高位部分积和低位部分积进行累加处理,得到乘法运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

图3为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述修正压缩电路12,该修正压缩电路12包括:修正华莱士树组电路121和累加电路122,所述修正华莱士树组电路121的输出端与所述累加电路122的输入端连接;所述修正华莱士树组电路121用于对不同位宽数据运算时,得到的目标编码的部分积中每一列的数值进行累加处理,所述累加电路122用于对接收到的输入数据进行累加处理。

具体的,上述修正华莱士树组电路121可以对修正编码电路11得到的目标编码的部分积中每一列数值进行累加处理,并累加电路122对修正华莱士树组电路121得到的两个运算结果进行累加处理,得到乘法运算的最终结果。其中,通过修正华莱士树组电路121进行累加处理时,目标编码的所有部分积的分布规律,可以表征为每一行对应部分积最低位数值所处位置,比下一行对应部分积最低位数值所处位置向右错开两位数值,修正华莱士树组电路121按照此分布规律,对目标编码的所有部分积中的每一列数值进行累加处理。可选的,目标编码的部分积可以包括目标编码的低位部分积和目标编码的高位部分积。可选的,上述修正华莱士树组电路121得到的两个运算结果可以包括和位输出信号s与进位输出信号c。

示例性的,若乘法器当前处理16位*16位的定点数乘法运算,通过修正编码电路11得到的目标编码的4个低位部分积,以及4个高位部分积的分布规律如图4所示,其中,“○”表示低位部分积中的每一位数值,表示高位部分积中的每一位数值,“●”表示低位部分积或高位部分积的符号扩展位数值。

本实施例提供的一种乘法器,通过修正华莱士树组电路可以对目标编码的低位部分积和高位部分积进行累加处理,并通过累加电路对累加结果进行再次累加处理,得到乘法运算的最终结果,该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述修正华莱士树组电路121,该修正华莱士树组电路121包括:低位华莱士树子电路1211、选择器1212以及高位华莱士树子电路1213,所述低位华莱士树子电路1211的输出端与所述选择器1212的输入端连接,所述选择器1212的输出端与所述高位华莱士树子电路1213的输入端连接;其中,多个所述低位华莱士树子电路1211用于对目标编码的所述部分积中的每一列数值进行累加运算,所述选择器1212用于选通高位华莱士树子电路1213接收的进位输入信号,多个所述高位华莱士树子电路1213用于对目标编码的所述部分积中的每一列数值进行累加运算。

具体的,多个低位华莱士树子电路1211和多个高位华莱士树子电路1213的电路结构均可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现,另外,还可以理解为是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,修正华莱士树组电路121中高位华莱士树子电路1213的数量可以等于乘法器当前接收到的数据位宽n,还可以等于低位华莱士树子电路1211的数量,并且各低位华莱士树子电路1211之间可以串行连接,各高位华莱士树子电路1213之间也可以串行连接。可选的,最后一个低位华莱士树子电路1211的输出端与选择器1212的输入端连接,选择器1212的输出端与第一个高位华莱士树子电路1211的输入端连接。可选的,修正华莱士树组电路121中每一个低位华莱士树子电路1211可以对目标编码的所有部分积的每一列进行加法处理,每一个低位华莱士树子电路1211可以输出两个信号,即进位信号carryi与一个和位信号sumi,其中,i可以表示每一个低位华莱士树子电路1211对应的编号,第一个低位华莱士树子电路1211的编号为0。可选的,每一个低位华莱士树子电路1211接收到输入信号的数量可以等于编码信号数量或者目标编码的部分积的数量。其中,修正华莱士树组电路121中高位华莱士树子电路1213与低位华莱士树子电路1211的数量之和,可以等于2n,目标编码的所有部分积中,从最低列至最高列的总列数可以等于2n,n个低位华莱士树子电路1211可以对目标编码的所有部分积的低n列中的每一列进行累加运算,n个高位华莱士树子电路1213可以对目标编码的所有部分积的高n列中的每一列进行累加运算。

示例性的,若乘法器接收到的数据位宽为n比特,并且当前乘法器进行n位数据乘法运算,此时,选择器1212可以选通修正华莱士树组电路121中的最后一个低位华莱士树子电路1211,输出的进位输出信号coutn作为修正华莱士树组电路121中,第一个高位华莱士树子电路1213接收到的进位输入信号cinn 1,还可以理解为,乘法器当前可以将接收到的n为数据作为一个整体进行运算;当前乘法器进行n/2位数据乘法运算,此时,选择器1212可以选通0作为修正华莱士树组电路121中,第一个高位华莱士树子电路1213接收到的进位输入信号cinn 1,还可以理解为,乘法器当前可以将接收到的n位数据划分成高n/2位和低n/2位数据分别进行乘法运算,其中,从第一个低位华莱士树子电路1211至最后一个低位华莱士树子电路1211的对应编号i分别为1,2,…,n,从第一个高位华莱士树子电路1213至最后一个高位华莱士树子电路1213的对应编号i分别为n 1,n 2,…,2n。

需要说明的是,修正华莱士树组电路121中每一个低位华莱士树子电路1211和高位华莱士树子电路1213,接收到的信号可以包括进位输入信号cini,部分积数值输入信号,进位输出信号couti。可选的,每一个低位华莱士树子电路1211和高位华莱士树子电路1213接收到的部分积数值输入信号,可以为目标编码的所有部分积中对应列的数值,每一个低位华莱士树子电路1211和高位华莱士树子电路1213输出的进位信号couti的位数可以等于ncout=floor((ni ncin)/2)-1。其中,ni可以表示该华莱士树子电路的数据输入位数,ncin可以表示该华莱士树子电路的进位输入位数,ncout可以表示该华莱士树子电路最少的进位输出位数,floor(·)可以表示向下取整函数。可选的,修正华莱士树组电路121中每一个低位华莱士树子电路1211或高位华莱士树子电路1213接收到的进位输入信号,可以为上一个低位华莱士树子电路1211或高位华莱士树子电路1213输出的进位输出信号,并且第一个低位华莱士树子电路1211接收到的进位数输入信号为0。其中,第一个高位华莱士树子电路1213接收到的进位数输入信号,可以通过乘法器当前所处理的数据的位宽与乘法器接收到的数据位宽确定。

本实施例提供的一种乘法器,通过修正华莱士树组电路可以对目标编码的部分积进行累加处理得到两路输出信号,并通过累加电路对该两路输出信号进行再次累加处理,得到乘法运算结果,该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

图3为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述累加电路122,该累加电路122包括:加法器1221,所述进位加法器1221用于对接收到的两个同位宽数据进行加法运算。

具体的,加法器1221可以为不同位宽的进位加法器。可选的,加法器1221可以接收修正华莱士树组电路121输出的两路信号,对两路输出信号进行加法运算,输出乘法运算结果。可选的,上述加法器1221可以为超前进位加法器。

本实施例提供的一种乘法器,通过累加电路可以对修正华莱士树组电路输出的两路信号进行累加处理,输出乘法运算结果,该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述加法器1221,该加法器1221包括:进位信号输入端口1221a、和位信号输入端口1221b以及运算结果输出端口1221c;所述进位信号输入端口1221a用于接收进位信号,和位信号输入端口1221b用于接收和位信号,运算结果输出端口1221c用于输出进位信号与和位信号进行累加处理的结果。

具体的,加法器1221可以通过进位信号输入端口1221a接收修正华莱士树组电路121输出的进位信号carry,通过和位信号输入端口1221b接收修正华莱士数组电路121输出的和位信号sum,并将进位信号carry与和位信号sum进行累加的结果,通过运算结果输出端口1221c输出。

需要说明的是,乘法运算时,乘法器可以采用不同位宽的加法器1221对修正华莱士树组电路121输出的进位输出信号carry与和位输出信号sum进行加法运算,其中,上述加法器1221的可处理数据的位宽可以等于乘法器当前处理的数据位宽m的2倍。可选的,修正华莱士树组电路121中的每一个低位华莱士树子电路1211和高位华莱士树子电路1213,可以输出一个进位输出信号carryi,与一个和位输出信号sumi(i=1,…,2m,i为每一个低位或高位华莱士树子电路的对应编号,编号从1开始)。可选的,加法器1221接收到的carry={[carry1:carry2m-1],0},也就是说,加法器1221接收到的进位输出信号carry的位宽为2m,进位输出信号carry中前2m-1位数值对应修正华莱士树组电路121中,前2m-1个低位和高位华莱士树子电路的进位输出信号,进位输出信号carry中最后一位数值可以用0代替。可选的,加法器1221接收到的和位输出信号sum的位宽为m,和位输出信号sum中的数值可以等于修正华莱士树组电路121中每一个低位或高位华莱士树子电路的和位输出信号。

示例性的,若乘法器当前处理8位*8位的定点数乘法运算,则加法器1221可以为16位进位加法器,如图11所示,修正华莱士树组电路121可以输出16个低位和高位华莱士树子电路的和位输出信号sum和进位输出信号carry,但是,16位进位加法器接收到的和位输出信号,可以为修正华莱士树组电路121输出的完整和位信号sum,接收到的进位输出信号可以为修正华莱士树组电路121中,除去最后一个高位华莱士树子电路1213输出的进位输出信号的所有进位输出信号,与0结合后的进位信号carry。

本实施例提供的一种乘法器,通过累加电路可以对修正华莱士树组电路输出的两路信号进行累加运算,输出乘法运算结果,该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

图5为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述判断电路11,该判断电路11包括:数据输入端口111和数据输出端口112;所述数据输入端口111用于接收进行乘法运算的数据,所述数据输出端口112用于输出接收到的所述数据,所述第四数据输入端口114用于输出接收到的第二所述数据。

具体的,判断电路11通过数据输入端口111接收进行乘法运算的两个数据。可选的,判断电路11接收到的数据可以为乘法运算中的乘数和被乘数,且乘数和被乘数的位宽可以相同。可选的,判断电路11可以通过数据输出端口112输出接收到的两个数据,并将这两个数据同时输入至数据扩展电路12中,或者同时输入至编码电路13中。

需要说明的是,若判断电路11判断接收到的两个数据的位宽为n,小于乘法器可处理的数据的位宽2n,此时,判断电路11需要将接收到的两个n比特位宽的数据输入至数据扩展电路12进行扩展处理,得到两个2n比特位宽的数据;若判断电路11判断接收到的两个数据的位宽为2n,等于乘法器可处理的数据的位宽2n,此时,判断电路11可以直接将接收到的两个2n比特位宽的数据输入至编码电路13中进行编码处理。

本实施例提供的一种乘法器,通过判断电路判断接收到的数据是否需要通过下一数据扩展电路进行处理,如果不需要进行下一数据扩展电路处理,则判断电路直接将接收到的数据输入至编码电路进行编码处理得到目标编码的部分积,否则就会将接收到的数据输入至数据扩展电路进行扩展处理,数据扩展电路将扩展后的数据输入至编码电路进行编码处理得到目标编码的部分积,并通过压缩电路对目标编码的部分积进行累加处理,得到最终的运算结果,该过程能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

图5为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述数据扩展电路12,该数据扩展电路12包括:数据输入端口121、数据扩展模式选择信号输入端口122、功能选择模式信号输出端口123以及扩展后的数据输出端口124;所述数据输入端口121用于接收所述判断电路11输出的所述数据,所述数据扩展模式选择信号输入端口122用于接收对接收到的所述数据进行扩展处理对应的数据扩展模式选择信号,所述功能选择模式信号输出端口123用于输出根据数据扩展电路12对接收到的所述数据进行扩展处理的模式,确定的功能选择模式信号,所述扩展后的数据输出端口124用于输出扩展处理后的数据。

具体的,上述数据扩展模式选择信号输入端口122接收到的数据扩展模式选择信号可以有三种,三种不同的数据扩展模式选择信号可以分别为00,01,10,其中,信号00表示数据扩展电路12可以将接收到的n位数据扩展成2n位数据,2n位数据中的高n位数值可以等于接收到的n位数据的数值,低n位数值均可以等于扩展的数值0,此时,功能选择模式信号输出端口123可以输出功能选择模式信号00,并且乘法器得到的4n比特位宽的运算结果中,高2n位数值可以为最终的运算结果;信号01表示数据扩展电路12可以将接收到的n位数据扩展成2n位数据,2n位数据中的低n位数值可以等于接收到的n位数据的数值,高n位数值均可以等于扩展的数值0,此时,功能选择模式信号输出端口123可以输出功能选择模式信号00,并且乘法器得到的4n比特位宽的运算结果中,低2n位数值可以为最终的运算结果;信号10表示数据扩展电路12可以将接收到的n位数据扩展成2n位数据,2n位数据中的低n位数值可以等于接收到的n位数据的数值,高n位数值均可以等于数据扩展电路12接收到的数据的符号位数值,此时,功能选择模式信号输出端口123可以输出功能选择模式信号01,并且乘法器得到的4n比特位宽的运算结果中,低2n位数值可以为最终的运算结果。

需要说明的是,若乘法器接收到的两个数据的位宽为2n,与乘法器可处理的数据的位宽2n相等,则判断电路11可以直接将接收到的两个数据输入至编码电路13中进行布斯编码处理;若乘法器接收到的两个数据的位宽为n,小于乘法器可处理的数据的位宽2n,并且数据扩展电路12接收到的数据扩展模式选择信号为10,则判断电路11可以将接收到的两个数据输入至数据扩展电路12进行扩展处理,并将扩展后的数据输入至编码电路13中进行布斯编码处理。

本实施例提供的一种乘法器,数据扩展电路可以将接收到的数据进行扩展处理,并将扩展后的数据输入至编码电路进行编码处理得到目标编码的部分积,并通过压缩电路对目标编码的部分积进行累加处理,得到最终的运算结果,该过程能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

图5为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述编码电路13,该编码电路13包括:布斯编码子电路131和部分积获取子电路132,所述布斯编码子电路131的输出端与所述部分积获取子电路132的第一输入端连接。其中,所述布斯编码子电路131用于对接收到的数据进行布斯编码得到编码信号,所述部分积获取子电路132用于根据所述编码信号得到目标编码的部分积。

具体的,上述布斯编码子电路131接收到的数据可以是判断电路11输入的,还可以是数据扩展电路12输入的,并且接收到的数据可以为乘法运算中的乘数,并对乘数进行布斯编码处理,得到编码信号。其中,在布斯编码处理前,布斯编码子电路131可以自动对接收到的乘数进行补位处理,该补位处理可以为对数据的最低位数值后补一位数值0。示例性的,若乘法器当前处理的是8位*8位的定点数乘法运算,乘数为y7y6y5y4y3y2y1y0,则在布斯编码前,布斯编码子电路132可以自动将乘数进行补位处理,将乘数转换为y7y6y5y4y3y2y1y00。可选的,上述编码信号的数量可以等于乘法器当前所处理数据位宽的1/2,该编码信号的数量可以等于原始部分积的数量,且部分积获取子电路132可以根据每一个编码信号得到对应的符号位扩展后的部分积。

本实施例提供的一种乘法器,通过编码电路可以对接收到的数据进行编码处理得到目标编码的部分积,并通过压缩电路对目标编码的部分积进行累加处理,得到最终的运算结果,该过程能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

图5为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述布斯编码子电路131,该布斯编码子电路131包括:数据输入端口1311和编码信号输出端口1312;所述数据输入端口1311用于接收进行布斯编码处理的数据,所述编码信号输出端口1312用于输出对接收到的数据进行布斯编码处理后得到的编码信号。

具体的,若数据输入端口1311接收到一个数据,则布斯编码子电路131可以自动对该数据进行补位处理,得到一个比原数据的位宽多一位数值的数据,同时,布斯编码子电路131可以对补位后的数据进行布斯编码处理,得到多个编码信号,将多个编码信号通过编码信号输出端口1312输出。可选的,布斯编码子电路131可以通过数据输入端口1311接收乘法运算中的乘数,且布斯编码子电路131可以对乘数进行布斯编码处理。

本实施例提供的一种乘法器,布斯编码子电路可以对接收到的数据进行布斯编码处理得到编码信号,然后部分积获取子电路可以根据每一个编码信号得到对应的目标编码的部分积,并通过压缩电路可以对目标编码的部分积进行累加处理,得到乘法运算结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

图5为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述部分积获取子电路132,该部分积获取子电路132包括:编码信号输入端口1321、数据输入端口1322以及部分积输出端口1323;所述编码信号输入端口1321用于接收所述编码信号,所述数据输入端口1322用于接收所述数据,所述部分积输出端口1323用于输出根据编码信号与接收到的数据获取的目标编码的部分积。

具体的,根据表1可知,部分积获取子电路132通过编码信号输入端口1321可以接收布斯编码子电路132输出的五类不同的编码信号,每类编码信号分别定义为-2x,2x,-x,x和0,并且根据接收到的编码信号,可以得到对应的目标编码的部分积。可选的,数据输入端口1322可以接收乘法运算中的数据,该数据可以为乘法运算中的被乘数。可选的,部分积获取子电路132可以根据编码信号得到对应的原始部分积,并对原始部分积进行符号位扩展处理得到符号位扩展后的部分积。其中,符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽2n的2倍,并且原始部分积的位宽可以等于2n 1,符号位扩展后的部分积的高2n-1位的数据均可以等于原始部分积中的符号位数值。可选的,上述目标编码的部分积可以为符号位扩展后的部分积,上述原始部分积可以为未进行符号位扩展的部分积。

可选的,部分积获取子电路132获取的目标编码的所有部分积的分布规律中,从第二个目标编码的部分积开始,每一个目标编码的部分积比上一个目标编码的部分积可以左移两位,并且第二个目标编码的部分积开始,高两位数值不进行累加运算。

本实施例提供的一种乘法器,通过部分积获取子电路可以根据每一个编码信号得到对应的目标编码的部分积,并通过压缩电路可以对目标编码的部分积进行累加处理,得到乘法运算结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

图5为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述压缩电路14,该压缩电路14包括:华莱士树组子电路141和累加子电路142;其中,所述华莱士树组子电路141的输出端与所述累加子电路142的输入端连接;所述华莱士树组子电路141用于对目标编码的所述部分积进行累加处理,所述累加子电路142用于对接收到的输入数据进行累加处理。

具体的,上述华莱士树组子电路141可以对编码电路13得到的目标编码的所有部分积中的数值进行累加处理,并通过累加子电路142对华莱士树组子电路141得到两路输出结果进行累加处理,得到乘法运算的最终结果。

本实施例提供的一种乘法器,通过华莱士树组子电路可以对目标编码的部分积进行累加处理,并通过累加子电路对累加结果进行再次累加处理,得到乘法运算的最终结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图5所示乘法器的具体结构示意图,其中,乘法器包括所述华莱士树组子电路141,该华莱士树组子电路141包括:华莱士树单元1411~141n,多个所述华莱士树单元1411~141n用于对目标编码的部分积的每一列进行累加处理。

具体的,华莱士树单元1411~141n的电路结构可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现,另外,还可以理解为华莱士树子电路1411~141n是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,华莱士树组子电路141包含的华莱士树子电路的数量n可以等于乘法器当前所处理数据位宽的2倍,并且每一个华莱士树子电路可以串行连接。可选的,华莱士树组子电路141中每一个华莱士树子电路可以对目标编码的所有部分积的每一列进行加法处理,每一个华莱士树子电路可以输出两个信号,即进位信号carryi与一个和位信号sumi,其中,i可以表示每一个华莱士树子电路对应的编号,每一个华莱士树子电路的编号为0。可选的,每一个华莱士树子电路接收到输入信号的数量可以等于编码信号数量或者目标编码的部分积数量。

需要说明的是,华莱士树组子电路141中每一个华莱士树子电路接收到的信号可以包括进位输入信号cini,部分积输入信号,进位输出信号couti。可选的,每一个华莱士树单元接收到的部分积输入信号可以为所有目标编码的部分积中每一列的数值,每一个华莱士树单元输出的进位信号couti的位数可以等于ncout=floor((ni ncin)/2)-1。其中,ni可以表示该华莱士树单元的数据输入位数,ncin可以表示该华莱士树单元的进位输入位数,ncout可以表示该华莱士树单元最少的进位输出位数,floor(·)可以表示向下取整函数。可选的,华莱士树组子电路141中每一个华莱士树单元接收到的进位输入信号可以为上一个华莱士树单元输出的进位输出信号,并且第一个华莱士树单元接收到的进位数输入信号为0。

本实施例提供的一种乘法器,通过华莱士树组子电路可以对目标编码的部分积进行累加处理,并通过累加子电路对累加结果进行再次累加处理,得到乘法运算的最终结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续如图5所示乘法器的具体结构示意图,其中,乘法器包括所述累加子电路142,该累加子电路142包括:加法器1421,所述加法器1421用于对接收到的两个同位宽数据进行加法运算。

具体的,加法器1421可以为不同位宽的加法器。可选的,加法器1421可以接收华莱士树组子电路141输出的两路信号,对两路输出信号进行加法运算,输出乘法运算结果。可选的,上述加法器1421可以为超前进位加法器。

可选的,所述加法器1421包括:进位信号输入端口1421a、和位信号输入端口1421b以及运算结果输出端口1421c;所述进位信号输入端口1421a用于接收进位信号,和位信号输入端口1421b用于接收和位信号,运算结果输出端口1421c用于输出进位信号与和位信号进行累加处理的结果。

可选的,加法器1421可以通过进位信号输入端口1421a接收华莱士树组子电路141输出的进位信号carry,通过和位信号输入端口1421b接收华莱士数组子电路141输出的和位信号sum,并将进位信号carry与和位信号sum进行累加的结果,通过运算结果输出端口1421c输出。

需要说明的是,乘法运算时,乘法器可以采用不同位宽的加法器1421对华莱士树组子电路141输出的进位输出信号carry与和位输出信号sum进行加法运算,其中,上述加法器1421的可处理数据的位宽可以等于乘法器当前处理的数据位宽2n的2倍。可选的,华莱士树组子电路141中的每一个华莱士树单元可以输出一个进位输出信号carryi,与一个和位输出信号sumi(i=0,…,4n-1,i为每一个华莱士树单元的对应编号,编号从0开始)。可选的,加法器1421接收到的carry={[carry0:carry4n-2],0},也就是说,加法器1421接收到的进位输出信号carry的位宽为4n,进位输出信号carry中前4n-1位数值对应华莱士树组子电路141中前4n-1个华莱士树单元的进位输出信号,进位输出信号carry中最后一位数值可以用0代替。可选的,加法器1421接收到的和位输出信号sum的位宽为m,和位输出信号sum中的数值可以等于华莱士树组子电路141中每一个华莱士树单元的和位输出信号。

示例性的,若乘法器当前处理8*8的乘法运算,则加法器1421可以为16位超前进位加法器,如图6所示,华莱士树组子电路141可以输出16个华莱士树单元的和位输出信号sum和进位输出信号carry,但是,16位超前进位加法器接收到的和位输出信号可以为华莱士树组子电路141输出的完整和位信号sum,接收到的进位输出信号可以为华莱士树组子电路141中,除去最后一个华莱士树单元输出的进位输出信号的所有进位输出信号与0结合后的进位信号carry。其中,图6中wallace_i表示华莱士树单元,i为华莱士树单元从0开始的编号,并且两两华莱士树单元之间连接的实线表示高位编号对应的华莱士树单元有进位输出信号,虚线表示高位编号对应的华莱士树单元没有进位输出信号,梯形电路表示二路选择器。

本实施例提供的一种乘法器,通过累加子电路可以对华莱士树组子电路输出的两路信号进行累加运算,输出乘法运算结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

图7为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图1和图3所示的乘法器进行处理,本实施例涉及的是对不同位宽的数据进行乘法运算的过程。如图7所示,该方法包括:

s101、接收待处理的数据。

具体的,乘法器可以通过修正编码电路接收待处理的数据,该数据可以为乘法运算中的乘数和被乘数。每一次乘法运算时,乘法器还可以通过修正编码电路和修正压缩电路中的所有选择器接收不同的功能选择模式信号,并且同一次运算时修正编码电路中的所有选择器和修正压缩电路中的选择器接收到的功能选择模式信号可以相同。可选的,上述数据可以为定点数。若乘法器接收不同的功能选择模式信号,则乘法器可以处理不同位宽的数据运算,同时,不同选择模式信号与乘法器可以处理不同位宽的数据之间的对应关系可以灵活设置,对此本实施例不作任何限定。

需要说明的是,如果修正编码电路接收到的待处理的乘数和被乘数的位宽,与乘法器接收到的功能选择模式信号对应可处理的数据位宽不相等,则乘法器会根据乘法器当前可处理的数据位宽,将接收到的待处理的数据划分成,与乘法器当前可处理的数据位宽相等的多组数据进行并行处理,其中,修正编码电路接收到的待处理的数据的位宽可以大于乘法器当前可处理的数据位宽。可选的,上述并行处理可以表征为将划分后的每一组待处理的数据据同时进行处理。如果修正编码电路接收到的待处理的数据的位宽,与乘法器接收到的功能选择模式信号对应可处理的数据位宽相等,则乘法器直接对接收到的待处理的数据进行处理。可选的,上述待处理的数据可以包括待处理的高位数据和待处理的低位数据。其中,若待处理的数据的位宽为2n,则高n位为待处理的高位数据,低n位为待处理的高位数据。

可选的,修正编码电路接收到的待处理的乘数和被乘数的位宽可以为8比特,16比特,32比特,64比特,对此本实施例不做任何限定。其中,待处理乘数的位宽可以等于待处理被乘数的位宽。

s102、选通待编码信号,根据所述待编码信号对待处理的所述数据进行布斯编码处理,得到编码信号。

具体的,乘法器可以通过修正编码电路接收到的功能模式选择信号确定选择器选通后的待编码信号,根据确定的待编码信号对待处理的数据进行布斯编码处理,得到编码信号。可选的,上述待处理的数据可以为乘法运算中的乘数,并且可以包括待处理的高位数据和待处理的低位数据,其中,若待处理的数据的位宽为2n,则高n位可以为待处理的高位数据,低n位可以为待处理的低位数据。可选的,上述待编码信号可以为0,还可以为待处理的低位数据中的最高位数值。

需要说明的是,若乘法器接收到的数据的位宽为2n,并且乘法器当前所处理数据的位宽也为2n,则修正编码电路可以通过选择器选通待处理的低位数据中的最高位数值,作为高位数据中的补位数值,此时,乘法器可以将接收到的2n位数据作为一个整体进行乘法运算;若乘法器当前所处理数据的位宽为n,则乘法器需要将接收到的2n位数据分成高n位和低n位数据进行并行处理,此时,修正编码电路可以通过选择器选通0,作为高位数据中的补位数值。

s103、根据所述编码信号和待处理的所述数据,得到目标编码的部分积。

具体的,乘法器中的部分积获取单元可以根据待处理的被乘数和编码信号,得到当前乘法器接收到的功能选择模式信号对应的目标编码的部分积。可选的,上述目标编码的部分积可以为乘法器得到的对应符号位扩展后的部分积,该符号位扩展后的部分积的数量可以等于编码信号的数量。

示例性的,若乘法器接收到的数据的位宽为2n,并且乘法器当前所处理n位宽的数据,则目标编码的部分积可以为高n位数据得到的对应符号位扩展后的部分积,和低n位数据得到的对应符号位扩展后的部分积。

s104、对目标编码的所述部分积进行累加处理,得到运算结果。

具体的,乘法器可以通过修正压缩电路对目标编码的部分积进行累加处理,并得到运算结果。

本实施例提供的一种数据处理方法,接收待处理的数据,选通待编码信号,根据所述待编码信号对待处理的所述数据进行布斯编码处理,得到编码信号,根据所述编码信号和待处理的所述数据,得到目标编码的部分积,对目标编码的所述部分积进行累加处理,得到运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

如图8所示为另一实施例提供的数据处理方法,上述s102中选通待编码信号,根据所述待编码信号对对待处理的所述数据进行布斯编码处理,得到编码信号的步骤,包括:

s1021、根据所述待编码信号与待处理的所述数据,得到待编码的高位数据和低位数据。

具体的,修正编码电路可以根据待编码信号确定待处理的高位数据对应的多个待编码高位数据。可选的,在对待处理的数据进行布斯编码处理前,修正编码电路需要对接收到的待处理的乘数进行补位处理,即在乘数中最低位数值的更低一位处补一位数值0。可选的,待处理的低位数据与补位数值0可以得到多组待编码的低位数据,待处理的高位数据与选通后得到的待编码信号可以得到多组待编码的低位数据。可选的,待编码的低位数据的组数可以等于待编码的高位数据的组数,还可以等于乘法器接收到的数据位宽的1/4。

需要说明的是,划分多组待编码的低位数据的原则可以表征为对补位处理后的低位数据中相邻的每3位数值作为一组待编码的低位数据,每一组待编码的低位数据中的最高位数值可以作为相邻下一组待编码的低位数据中的最低位数值。可选的,划分多组待编码的高位数据的原则可以表征为将选通得到的待编码信号作为高位数据的补位数值,对补位后的高位数据中相邻的每3位数值作为一组待编码的高位数据,每一组待编码的高位数据中的最高位数值可以作为相邻下一组待编码的高位数据中的最低位数值。

s1022、对待编码的所述高位数据以及所述低位数据进行布斯编码处理,得到高位编码信号和低位编码信号。

具体的,上述布斯编码处理过程中的编码规则可以参见表1,根据表1可知,通过低位布斯编码单元和高位布斯编码单元对划分后的待编码低位数据,以及高位数据进行布斯编码处理,可以得到五类不同的编码信号,分别为-2x,2x,-x,x和0。

本实施例提供的一种数据处理方法,接收待处理的数据,根据所述待编码信号与待处理的所述数据,得到待编码的高位数据和低位数据,对待编码的所述高位数据以及所述低位数据进行布斯编码处理,得到高位编码信号和低位编码信号,根据所述低位编码信号,所述高位编码信号和待处理的所述数据,得到目标编码的部分积,对目标编码的所述部分积进行累加处理,得到运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

另一实施例提供的数据处理方法,继续参见图8,上述s103中根据所述编码信号和待处理的所述数据,得到目标编码的部分积的步骤,包括:

s1031、根据所述低位编码信号和待处理的所述数据,得到目标编码的低位部分积。

需要说明的是,若乘法器接收到的待处理的数据的位宽为2n,并且乘法器当前可处理n位的数据时,则乘法器需要将2n位待处理的数据划分成待处理的高n位数据和低n位数据进行并行运算,此时,乘法器通过修正编码电路可以根据低位编码信号和待处理的低n位数据,得到目标编码的低位部分积;若乘法器当前可处理2n位的数据时,则乘法器需要根据低位编码信号和待处理的2n位数据,得到目标编码的低位部分积。其中,目标编码的低位部分积的位宽可以为4n,且目标编码的低位部分积的数量可以等于n/2。

s1032、根据所述高位编码信号和待处理的所述数据,得到目标编码的高位部分积。

需要说明的是,若乘法器接收到的待处理的数据的位宽为2n,并且乘法器当前可处理n位的数据时,则乘法器需要将2n位待处理的数据划分成待处理的高n位数据和低n位数据进行并行运算,此时,乘法器通过修正编码电路可以根据高位编码信号和待处理的高n位数据,得到目标编码的高位部分积;若乘法器当前可处理2n位的数据时,则乘法器需要根据高位编码信号和待处理的2n位数据,得到目标编码的高位部分积。其中,目标编码的高位部分积的位宽可以为4n,且目标编码的高位部分积的数量可以等于n/2。

本实施例提供的一种数据处理方法,根据所述低位编码信号和待处理的所述数据,得到目标编码的低位部分积,根据所述高位编码信号和待处理的所述数据,得到目标编码的高位部分积,对目标编码的所述低位部分积以及所述高位部分积进行累加处理,得到运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,如图9所示,上述s1031中根据所述低位编码信号和待处理的所述数据,得到目标编码的低位部分积的步骤,包括:

s1031a、根据所述低位编码信号和待处理的所述数据,得到符号位扩展后的低位部分积。

具体的,乘法器根据接收到的功能选择模式信号,低位编码信号和待处理的数据,得到乘法器当前所处理不同位宽数据对应的原始低位部分积,并对原始低位部分积进行符号位扩展处理得到符号位扩展后的低位部分积。可选的,上述原始低位部分积可以为未进行符号位扩展的低位部分积,还可以理解为低位数据对应得到的未进行符号位扩展的部分积。可选的,符号位扩展后的低位部分积的位宽可以等于乘法器接收到的数据位宽m的2倍,原始低位部分积的位宽可以等于m 1。可选的,符号位扩展后的低位部分积可以包括原始低位部分积中的m 1位数值和m-1位原始低位部分积中的符号位数值。

需要说明的是,若低位部分积获取单元接收到一个8位的被乘数x7x6x5x4x3x2x1x0(即x),则低位部分积获取单元可以根据被乘数x7x6x5x4x3x2x1x0(即x)与五类低位编码信号-2x,2x,-x,x和0直接得到对应的原始低位部分积,当低位编码信号为-2x时,则原始低位部分积可以为对x进行左右一位后取反再加1,当低位编码信号为2x时,则原始低位部分积可以为对x进行左移一位,当低位编码信号为-x时,则原始低位部分积可以为对x按位取反再加1,当低位编码信号为x时,则原始低位部分积可以为x与x最高位的更高一位数值结合的数据,其中,x最高位的更高一位数值可以等于x的符号位数值,当低位编码信号为 0时,则原始低位部分积可以为0,也就是9位部分积中的每一位数值均等于0。

s1031b、通过低位选择器组单元选通目标编码的所述低位部分积中的数值。

具体的,低位选择器组单元中的每一个低位选择器可以根据接收到的不同功能选择信号,选通目标编码的低位部分积中的对应位数值。

s1031c、根据目标编码的所述低位部分积中的数值以及符号位扩展后的所述低位部分积中的数值,得到目标编码的低位部分积。

具体的,低位部分积获取单元可以根据低位选择器组单元选通后得到的,目标编码的所述低位部分积中的数值以及乘法器当前可处理对应位宽数据得到的符号位扩展后的低位部分积中的部分位数值,得到乘法器当前所处理对应位宽数据对应的目标编码的低位部分积。

本实施例提供的一种数据处理方法,根据所述低位编码信号和待处理的所述数据,得到符号位扩展后的低位部分积,通过低位选择器组单元选通目标编码的所述低位部分积中的数值,根据目标编码的所述低位部分积中的数值以及符号位扩展后的所述低位部分积中的数值,得到目标编码的低位部分积,并对目标编码的所述低位部分积以及目标编码的高位部分积进行累加处理,得到运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,继续参见图9,上述s1032中根据所述高位编码信号和待处理的所述数据,得到目标编码的高位部分积的步骤,包括:

s1032a、根据所述高位编码信号和待处理的所述数据,得到符号位扩展后的高位部分积。

具体的,乘法器根据接收到的功能选择模式信号,高位编码信号和待处理的数据,得到乘法器当前所处理不同位宽数据对应的原始高位部分积,并对原始高位部分积进行符号位扩展处理得到符号位扩展后的高位部分积。可选的,上述原始高位部分积可以为未进行符号位扩展的高位部分积,还可以理解为高位数据对应得到的未进行符号位扩展的部分积。可选的,符号位扩展后的高位部分积的位宽可以等于乘法器接收到的数据位宽m的2倍,原始高位部分积的位宽可以等于m 1。可选的,符号位扩展后的高位部分积可以包括原始高位部分积中的m 1位数值和m-1位原始高位部分积中的符号位数值。

s1032b、通过高位选择器组单元选通目标编码的所述高位部分积中的数值。

具体的,高位选择器组单元中的每一个高位选择器可以根据接收到的不同功能选择信号,选通目标编码的高位部分积中的对应位数值。

s1032c、根据目标编码的所述高位部分积中的数值以及符号位扩展后的所述高位部分积中的数值,得到目标编码的高位部分积。

具体的,高位部分积获取单元可以根据高位选择器组单元选通后得到的,目标编码的所述高位部分积中的数值以及乘法器当前可处理对应位宽数据得到的符号位扩展后的高位部分积中的部分位数值,得到乘法器当前所处理对应位宽数据对应的目标编码的高位部分积。

本实施例提供的一种数据处理方法,根据所述高位编码信号和待处理的所述数据,得到符号位扩展后的高位部分积,通过高位选择器组单元选通目标编码的所述高位部分积中的数值,根据目标编码的所述高位部分积中的数值以及符号位扩展后的所述高位部分积中的数值,得到目标编码的高位部分积,并对目标编码的所述高位部分积以及目标编码的低位部分积进行累加处理,得到运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

如图10所示为另一实施例提供的数据处理方法,上述s104中对目标编码的所述部分积进行累加处理,得到运算结果的步骤,包括:

s1041、通过修正华莱士树组电路对目标编码的所述低位部分积和所述高位部分积,进行累加处理得到第一运算结果。

具体的,乘法器可以通过修正华莱士树组电路对目标编码的所有低位部分积和所有高位部分积,按照分布规律对每一列数值进行累加处理,得到第一运算结果。可选的,第一运算结果可以包括和位输出信号sum与进位输出信号carry,其中,和位输出信号sum与进位输出信号carry的位宽可以相同。

s1042、通过累加电路对所述第一运算结果进行累加处理,得到运算结果。

具体的,乘法器可以通过累加电路中的加法器对修正华莱士树组电路输出的进位输出信号carry与和位输出信号sum进行加法运算,输出加法运算结果。可选的,修正华莱士树组电路中每一个华莱士树单元可以输出一个进位输出信号carryi,与一个和位输出信号sumi(i=0,…,n-1,i为每一个华莱士树单元的对应编号,编号从0开始)。可选的,加法器接收到的carry={[carry0:carryn-2],0},也就是说,加法器接收到的进位输出信号carry的位宽为n,进位输出信号carry中前n-1位数值对应修正华莱士树组电路中前n-1个华莱士树单元的进位输出信号,进位输出信号carry中最后一位数值可以用0代替。可选的,加法器接收到的和位输出信号sum的位宽为n,和位输出信号sum中的数值可以等于修正华莱士树组电路中每一个华莱士树单元的和位输出信号。

示例性的,若乘法器当前处理8*8的乘法运算,则加法器可以为16位超前进位加法器,如图6所示,修正华莱士树组电路可以输出16个华莱士树单元的和位输出信号sum和进位输出信号carry,但是16位超前进位加法器接收到的和位输出信号可以为修正华莱士树组电路输出的完整和位信号sum,接收到的进位输出信号可以为修正华莱士树组电路中,除去最后一个华莱士树单元输出的进位输出信号的所有进位输出信号与0结合后的进位信号carry。

本实施例提供的一种数据处理方法,通过修正华莱士树组电路对目标编码的所述低位部分积和所述高位部分积,进行累加处理得到第一运算结果,通过累加电路对所述第一运算结果进行累加处理,得到运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

如图11所示为另一实施例提供的乘法运算方法,上述s1041中通过累加电路对所述第一运算结果进行累加处理,得到运算结果,包括:

s1041a、通过低位华莱士树组子电路对目标编码的所述部分积中的列数值进行累加处理,得到累加运算结果。

具体的,按照目标编码的所有低位部分积和所有高位部分积的分布规律可知,目标编码的所有部分积对应数值的总列数为2n(n为乘法器当前所处理数据的位宽),从最低位数值开始每一列数值对应的编号可以为0,…,2n-1,其中,编号0至n-1可以称低n列数值。可选的,累加运算结果可以为低位华莱士树组电路中的最后一个华莱士树单元输出的进位输出信号cout。

需要说明的是,低位华莱士树组子电路中包含的n个华莱士树单元可以按照编号顺序对低n列数值进行累加运算,得到累加运算结果。可选的,累加运算结果可以包括每一个华莱士树单元的进位输出信号carry,sum,以及低位华莱士树组子电路中的最后一个华莱士树单元的输出信号cout。

s1041b、通过选择器对所述累加运算结果进行选通,得到进位选通信号。

具体的,修正压缩电路中的选择器可以根据接收到的功能选择模式信号,选通低位华莱士树组电路中的最后一个华莱士树单元的输出信号cout或0,得到进位选通信号。

s1041c、通过高位华莱士树组电路根据所述进位选通信号以及目标编码的所述部分积中的列数值进行累加处理,得到运算结果。

具体的,按照目标编码的所有部分积的分布规律可知,目标编码的所有部分积对应数值的总列数为2n(n为乘法器当前所处理数据的位宽),从最低位数值开始每一列数值对应的编号可以为0,…,2n-1,其中,编号n至2n-1可以称高n列数值。

需要说明的是,高位华莱士树组电路中包含的n个华莱士树单元可以按照编号顺序对高n列数值进行累加运算,输出第二运算结果。其中,高位华莱士树组电路中的第一个华莱士树单元接收到的进位输入信号可以为选择器输出的进位选通信号。

本实施例提供的一种数据处理方法,通过低位华莱士树组子电路对目标编码的所述部分积中的列数值进行累加处理,得到累加运算结果,通过选择器对所述累加运算结果进行选通,得到进位选通信号,高位华莱士树组电路根据所述进位选通信号以及目标编码的所述部分积中的列数值进行累加处理,得到运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用ai芯片的面积。

图12为另一实施例提供的数据处理方法的流程示意图,该方法可以通过图2和图5所示的乘法器进行处理,本实施例涉及的是对不同位宽的数据进行乘法运算的过程。如图12所示,该方法包括:

s201、接收待处理的数据。

具体的,乘法器接收到的待处理的数据可以为两个,并且为乘法运算中的乘数和被乘数,另外,同一次运算时,乘法器可以接收到的乘数和被乘数的位宽是相同的。

s202、判断待处理的所述数据的位宽与乘法器可处理数据的位宽是否相等。

具体的,乘法器通过判断电路判断接收到的两个待处理的数据的位宽与乘法器可处理数据的位宽是否相等。在本实施例中,乘法器可处理数据的位宽是固定的,即2n比特。可选的,判断电路接收到的待处理的数据的位宽可以为n,还可以为2n。

s203、若不相等,则对待处理的所述数据进行数据扩展处理,得到扩展后的数据。

具体的,若判断电路接收到的待处理的数据的位宽,不等于乘法器可处理数据的位宽2n,则乘法器可以通过数据扩展电路对待处理的数据进行数据扩展处理,将待处理的数据扩展成2n比特位宽的数据。

可选的,所述对待处理的所述数据进行数据扩展处理,得到扩展后的数据,包括:通过0或待处理的所述数据的符号位数值,将待处理的所述数据进行数据扩展处理,得到扩展后的数据。可选的,所述扩展后的数据的位宽等于乘法器当前所处理数据的位宽。

需要说明的是,上述数据扩展电路可以接收三种数据扩展模式选择信号,分别表示为00,01,10,其中,信号00表示数据扩展电路可以将接收到的n位待处理的数据扩展成2n位数据,2n位数据中的高n位数值可以等于接收到的n位数据的数值,低n位数值均可以等于扩展的数值0,此时,数据扩展电路可以输出功能选择模式信号00,并且乘法器得到的4n比特位宽的运算结果中,高2n位数值可以为最终的运算结果;信号01表示数据扩展电路可以将接收到的n位数据扩展成2n位数据,2n位数据中的低n位数值可以等于接收到的n位数据的数值,高n位数值均可以等于扩展的数值0,此时,数据扩展电路可以输出功能选择模式信号00,并且乘法器得到的4n比特位宽的运算结果中,低2n位数值可以为最终的运算结果;信号10表示数据扩展电路可以将接收到的n位数据扩展成2n位数据,2n位数据中的低n位数值可以等于接收到的n位数据的数值,高n位数值均可以等于数据扩展电路接收到的数据的符号位数值,此时,数据扩展电路可以输出功能选择模式信号01,并且乘法器得到的4n比特位宽的运算结果中,低2n位数值可以为最终的运算结果。

s204、对扩展后的所述数据进行编码处理,得到符号位扩展后的部分积。

具体的,乘法器可以通过编码电路对扩展后的数据进行二进制编码处理,并根据接收到的待处理的被乘数和二进制编码的结果得到符号位扩展后的部分积。可选的,符号位扩展后的部分积的数量可以等于n。

s205、对符号位扩展后的所述部分积进行累加处理,得到运算结果。

具体的,乘法器可以通过压缩电路对符号位扩展后的部分积进行累加处理,并得到运算结果。

示例性的,一乘法器可处理16比特位宽的数据,并且接收到的是两个8比特位宽的数据,乘法器通过数据扩展电路可以将接收到的两个8比特位宽的数据,扩展成两个16位比特位宽的数据,对其进行乘法运算后,可以得到一个32比特位宽的数据;若数据扩展电路将两个8比特位宽的数据,扩展成低8位均为0,高8位为接收到的数据,此时,数据扩展电路接收到的数据扩展模式选择信号为00,输出的功能选择模式信号也为00,并且乘法器可以截取32比特位宽数据中的高16位数据作为最终的运算结果;若数据扩展电路将两个8比特位宽的数据,扩展成高8位均为0,低8位为接收到的数据,此时,数据扩展电路接收到的数据扩展模式选择信号为01,输出的功能选择模式信号也为00,并且乘法器可以截取32比特位宽数据中的低16位数据作为最终的运算结果;若数据扩展电路将两个8比特位宽的数据,扩展成高8位数值为接收到的8比特位宽的数据中的符号位数值,低8位为接收到的数据,此时,数据扩展电路接收到的数据扩展模式选择信号为10,输出的功能选择模式信号也为01,并且乘法器可以截取32比特位宽数据中的低16位数据作为最终的运算结果。

本实施例提供的一种数据处理方法,接收待处理的数据,判断待处理的所述数据的位宽与乘法器可处理数据的位宽是否相等,若不相等,则对待处理的所述数据进行数据扩展处理,得到扩展后的数据,对扩展后的所述数据进行编码处理,得到符号位扩展后的部分积,对符号位扩展后的所述部分积进行累加处理,得到运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

另一实施例提供的乘法运算方法,在判断待处理的所述数据的位宽与乘法器可处理数据的位宽是否相等之后,所述方法还包括:若相等,则对待处理的所述数据进行编码处理,得到符号位扩展后的部分积。

具体的,如果乘法器接收到的待处理数据的位宽与乘法器当前可处理数据的位宽2n相等,则乘法器中的判断电路可以将接收到的待处理的数据输入至编码电路,通过编码电路对待处理的数据直接进行二进制编码处理,得到符号位扩展后的部分积。此情况下,乘法器不需要对待处理的数据进行数据扩展处理。

本实施例提供的一种数据处理方法,如果乘法器接收到的待处理数据的位宽与乘法器当前可处理数据的位宽相等,则编码电路可以直接对待处理的所述数据进行编码处理,得到符号位扩展后的部分积,对符号位扩展后的所述部分积进行累加处理,得到运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

如图13所示为另一实施例提供的乘法运算方法,上述s204中对扩展后的所述数据进行编码处理,得到符号位扩展后的部分积步骤,包括:

s2041、对扩展后的所述数据进行布斯编码处理,得到编码信号。

具体的,乘法器可以通过布斯编码子电路对扩展后的待处理的乘数进行布斯编码处理,得到编码信号。可选的,布斯编码过程中,输入的乘数中3比特位宽的数据可以得到一位编码后的数据,上述布斯编码过程中的编码规则可以参见表1,根据表1可知,布斯编码子电路对乘数进行布斯编码,可以得到五类不同的编码信号,每类编码信号分别定义为-2x,2x,-x,x和0。

s2042、根据待处理的所述数据与所述编码信号,得到所述符号位扩展后的部分积。

具体的,部分积获取子电路可以根据扩展后的待处理的被乘数与编码信号,并通过数据扩展处理得到符号位扩展后的部分积。

本实施例提供的一种数据处理方法,对扩展后的所述数据进行布斯编码处理,得到编码信号,根据待处理的所述数据与所述编码信号,得到所述符号位扩展后的部分积,并对符号位扩展后的所述部分积进行累加处理,得到运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

在其中一个实施例中,如图14所示,上述s2042中根据待处理的所述数据与所述编码信号,得到所述符号位扩展后的部分积的步骤,包括:

s2042a、根据待处理的所述数据与所述编码信号,得到原始部分积。

具体的,原始部分积的数量可以等于编码信号的数量。可选的,原始部分积可以为未进行符号位扩展的部分积。

示例性的,若部分积获取子电路接收到一个8位的被乘数x7x6x5x4x3x2x1x0(即x),则部分积获取子电路可以根据被乘数x7x6x5x4x3x2x1x0(即x)与五类编码信号-2x,2x,-x,x和0直接得到对应原始部分积,当编码信号为-2x时,则原始部分积可以为对x进行左右一位后取反再加1,当编码信号为2x时,则原始部分积可以为对x进行左移一位,当编码信号为-x时,则原始部分积可以为对x按位取反再加1,当编码信号为x时,则原始部分积可以为x与x最高位的更高一位数值结合的数据,其中,x最高位的更高一位数值可以等于x的符号位数值,当编码信号为 0时,则原始部分积可以为0,也就是9位部分积中的每一位数值均等于0。

s2042b、对所述原始部分积进行符号位扩展处理,得到符号位扩展后的所述部分积。

具体的,部分积获取子电路可以根据原始部分积的符号位数值对原始部分积进行符号位扩展处理,得到符号位扩展后的所述部分积。可选的,原始部分积的位宽可以等于n 1,符号位扩展后的部分积的位宽可以等于2n。可选的,符号位扩展后的部分积中的低n 1位数值为原始部分积的n 1位数值,符号位扩展后的部分积中的高n-1位数值均为原始部分积中的符号位数值。

本实施例提供的一种数据处理方法,根据待处理的所述数据与所述编码信号,得到原始部分积,对所述原始部分积进行符号位扩展处理,得到符号位扩展后的所述部分积,并对符号位扩展后的所述部分积进行累加处理,得到运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

另一实施例提供的数据处理方法,上述s205中对符号位扩展后的所述部分积进行累加处理,得到运算结果的步骤,包括:

s2051、通过华莱士树组子电路对符号位扩展后的部分积,进行累加处理得到第一运算结果。

具体的,乘法器可以通过华莱士树组子电路对符号位扩展后的所有部分积,按照分布规律对每一列数值进行累加处理,得到第一运算结果。可选的,第一运算结果可以包括和位输出信号sum与进位输出信号carry,其中,和位输出信号sum与进位输出信号carry的位宽可以相同。

s2052、通过累加子电路对所述第一运算结果进行累加处理,得到运算结果。

具体的,乘法器可以通过累加子电路中的加法器对华莱士树组子电路输出的进位输出信号carry与和位输出信号sum进行加法运算,输出加法运算结果。

本实施例提供的一种数据处理方法,通过华莱士树组子电路对符号位扩展后的所述部分积,进行累加处理得到第一运算结果,通过累加子电路对所述第一运算结果进行累加处理,得到运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理数据的位宽要求,使得最终乘法运算的结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用ai芯片的面积。

本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的乘法器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过i/o接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上乘法器时,乘法器间可以通过特定的结构进行链接并传输数据,譬如,通过pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。

该机器学习运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图15为组合处理装置的示意图。

其它处理装置,包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。

通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。

可选的,该结构如图16所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。

该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。

在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。

在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图17所示,图17提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;

所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是ddrsdram(英文:doubledataratesdram,双倍速率同步动态随机存储器)。

ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4棵粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-3200棵粒时,数据传输的理论带宽可达到25600mb/s。

在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。

所述接收装置与所述芯片封装结构内的芯片电连接。所述接收装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接收装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie3.0x16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接收装置还可以是其它的接口,本申请并不限制上述其它的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接收装置传送回外部设备(例如服务器)。

所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(microcontrollerunit,mcu)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。

在一些实施例里,申请了一种电子设备,其包括了上述板卡。

电子设备可以为数据处理器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的电路组合,但是本领域技术人员应该知悉,本申请并不受所描述的电路组合方式的限制,因为依据本申请,某些电路可以采用其它方式或者结构实现。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的器件和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。


技术特征:

1.一种乘法器,其特征在于,所述乘法器包括:修正编码电路和修正压缩电路,所述修正编码电路的输出端与所述修正压缩电路的输入端连接;

所述修正编码电路用于对接收到的数据进行编码处理,得到符号位扩展后的部分积,并根据符号位扩展后的所述部分积得到目标编码的部分积,所述修正压缩电路用于对目标编码的部分积进行累加处理。

2.根据权利要求1所述的乘法器,其特征在于,所述修正编码电路中包括第一输入端,用于接收输入的功能选择模式信号;所述修正压缩电路中包括第一输入端,用于接收输入的所述功能选择模式信号;所述功能选择模式信号用于确定乘法器处理的数据的位宽。

3.根据权利要求1所述的乘法器,其特征在于,所述修正编码电路包括:低位布斯编码单元、低位部分积获取单元、选择器、高位布斯编码单元、高位部分积获取单元、低位选择器组单元以及高位选择器组单元;所述低位布斯编码单元的第一输出端与所述选择器的输入端连接,所述低位布斯编码单元的第二输出端与所述低位部分积获取单元的第一输入端连接,所述选择器的输出端与所述高位布斯编码单元的第一输入端连接,所述高位布斯编码单元的输出端与所述高位部分积获取单元的第一输入端连接,所述低位选择器组单元的输出端与所述低位部分积获取单元的第二输入端连接,所述高位选择器组单元的输出端与所述高位部分积获取单元的第二输入端连接;

其中,所述低位布斯编码单元用于对接收到的数据中的低位数据进行布斯编码处理得到低位编码信号,所述低位部分积获取单元用于根据所述低位编码信号,得到目标编码的低位部分积,所述选择器用于选通高位数据进行布斯编码时的补位数值,所述高位布斯编码单元用于对接收到的所述高位数据以及所述补位数值,进行布斯编码处理得到高位编码信号,所述高位部分积获取单元用于根据所述高位编码信号,得到目标编码的高位部分积,所述低位选择器组单元用于选通目标编码的低位部分积中的数值,所述高位选择器组单元用于选通目标编码的高位部分积中的数值。

4.根据权利要求3所述的乘法器,其特征在于,所述低位布斯编码单元包括:低位数据输入端口以及低位编码信号输出端口;所述低位数据输入端口用于接收进行布斯编码处理的低位数据,所述低位编码信号输出端口用于输出对低位数据进行布斯编码处理后得到的低位编码信号。

5.根据权利要求3所述的乘法器,其特征在于,所述低位部分积获取单元包括:低位编码信号输入端口、选通数值输入端口、数据输入端口以及部分积中的数值输出端口;所述低位编码信号输入端口用于接收低位布斯编码单元输出的低位编码信号,所述选通数值输入端口用于接收低位选择器组单元选通后,输出的目标编码的低位部分积中的数值,所述数据输入端口用于接收乘法运算的数据,所述部分积中的数值输入端口用于接收目标编码的低位部分积中的数值。

6.根据权利要求3所述的乘法器,其特征在于,所述选择器,包括:功能选择模式信号输入端口、第一选通数值输入端口、第二选通数值输入端口以及运算结果输出端口;所述功能选择模式信号输入端口用于接收乘法器需要处理不同位宽的数据对应的功能选择模式信号,所述第一选通数值输入端口用于接收第一选通数值,所述第二选通数值输入端口用于接收第二选通数值,所述运算结果输出端口输出选通后的所述第一选通数值或所述第二选通数值。

7.根据权利要求3所述的乘法器,其特征在于,所述高位布斯编码单元,包括:高位数据输入端口以及高位编码信号输出端口;所述高位数据输入端口用于接收进行布斯编码处理的高位数据,所述高位编码信号输出端口用于输出对高位数据进行布斯编码处理后得到的高位编码信号。

8.根据权利要求3所述的乘法器,其特征在于,所述高位部分积获取单元包括:高位编码信号输入端口、选通数值输入端口、数据输入端口以及部分积中的数值输出端口;所述高位编码信号输入端口用于接收高位布斯编码单元输出的高位编码信号,所述选通数值输入端口用于接收高位选择器组单元选通后,输出的目标编码的高位部分积中的数值,所述数据输入端口用于接收乘法运算的数据,所述部分积中的数值输入端口用于接收目标编码的高位部分积中的数值。

9.根据权利要求3所述的乘法器,其特征在于,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对目标编码的低位部分积中的数值进行选通。

10.根据权利要求3所述的乘法器,其特征在于,所述低位选择器组单元包括:高位选择器,所述高位选择器用于对目标编码的高位部分积中的数值进行选通。

11.根据权利要求1所述的乘法器,其特征在于,所述修正压缩电路包括:修正华莱士树组电路和累加电路,所述修正华莱士树组电路的输出端与所述累加电路的输入端连接;所述修正华莱士树组电路用于对不同位宽数据运算时,得到的目标编码的部分积中每一列的数值进行累加处理,所述累加电路用于对接收到的输入数据进行累加处理。

12.根据权利要求11所述的乘法器,其特征在于,所述修正华莱士树组电路包括:低位华莱士树子电路、选择器以及高位华莱士树子电路,所述低位华莱士树子电路的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子电路的输入端连接;其中,所述低位华莱士树子电路用于对目标编码的所述部分积中的每一列数值进行累加运算,所述选择器用于选通高位华莱士树子电路接收的进位输入信号,所述高位华莱士树子电路用于对目标编码的所述部分积中的每一列数值进行累加运算。

13.根据权利要求11所述的乘法器,其特征在于,所述累加电路包括:加法器,所述进位加法器用于对接收到的两个同位宽数据进行加法运算。

14.根据权利要求11所述的乘法器,其特征在于,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口,所述进位信号输入端口用于接收进位信号,和位信号输入端口用于接收和位信号,运算结果输出端口用于输出进位信号与和位信号进行累加处理的结果。

15.一种数据处理方法,其特征在于,所述方法包括:

接收待处理的数据;

选通待编码信号,根据所述待编码信号对待处理的所述数据进行布斯编码处理,得到编码信号;

根据所述编码信号和待处理的所述数据,得到目标编码的部分积;

对目标编码的所述部分积进行累加处理,得到运算结果。

16.根据权利要求15所述的方法,其特征在于,所述选通待编码信号,根据所述待编码信号对对待处理的所述数据进行布斯编码处理,得到编码信号的步骤,包括:

根据所述待编码信号与待处理的所述数据,得到待编码的高位数据和低位数据;

对待编码的所述高位数据以及所述低位数据进行布斯编码处理,得到高位编码信号和低位编码信号。

17.根据权利要求15所述的方法,其特征在于,所述根据所述编码信号和待处理的所述数据,得到目标编码的部分积的步骤,包括:

根据所述低位编码信号和待处理的所述数据,得到目标编码的低位部分积;

根据所述高位编码信号和待处理的所述数据,得到目标编码的高位部分积。

18.根据权利要求17所述的方法,其特征在于,所述根据所述低位编码信号和待处理的所述数据,得到目标编码的低位部分积的步骤,包括:

根据所述低位编码信号和待处理的所述数据,得到符号位扩展后的低位部分积;

通过低位选择器组单元选通目标编码的所述低位部分积中的数值;

根据目标编码的所述低位部分积中的数值以及符号位扩展后的所述低位部分积中的数值,得到目标编码的低位部分积。

19.根据权利要求17所述的方法,其特征在于,所述根据所述高位编码信号和待处理的所述数据,得到目标编码的高位部分积的步骤,包括:

根据所述高位编码信号和待处理的所述数据,得到符号位扩展后的高位部分积;

通过高位选择器组单元选通目标编码的所述高位部分积中的数值;

根据目标编码的所述高位部分积中的数值以及符号位扩展后的所述高位部分积中的数值,得到目标编码的高位部分积。

20.根据权利要求15所述的方法,其特征在于,所述对目标编码的所述部分积进行累加处理,得到运算结果的步骤,包括:

通过修正华莱士树组电路对目标编码的所述低位部分积和所述高位部分积,进行累加处理得到第一运算结果;

通过累加电路对所述第一运算结果进行累加处理,得到运算结果。

21.根据权利要求20所述的方法,其特征在于,所述通过累加电路对所述第一运算结果进行累加处理,得到运算结果,包括:

通过低位华莱士树组子电路对目标编码的所述部分积中的列数值进行累加处理,得到累加运算结果;

通过选择器对所述累加运算结果进行选通,得到进位选通信号;

通过高位华莱士树组电路根据所述进位选通信号以及目标编码的所述部分积中的列数值进行累加处理,得到运算结果。

22.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求1-14任一项所述的乘法器,用于从其它处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过i/o接口传递给其它处理装置;

当所述机器学习运算装置包含多个所述乘法器时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;

其中,多个所述乘法器通过pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。

23.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求22所述的机器学习运算装置,通用互联接口和其它处理装置;

所述机器学习运算装置与所述其它处理装置进行交互,共同完成用户指定的计算操作。

24.根据权利要求23所述的组合处理装置,其特征在于,还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。

25.一种神经网络芯片,其特征在于,所述机器学习芯片包括如权利要求22所述的机器学习运算装置或如权利要求23所述的组合处理装置或如权利要求23所述的组合处理装置。

26.一种电子设备,其特征在于,所述电子设备包括如所述权利要求25所述的芯片。

27.一种板卡,其特征在于,所述板卡包括:存储器件、接收装置和控制器件以及如权利要求25所述的神经网络芯片;

其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接收装置分别连接;

所述存储器件,用于存储数据;

所述接收装置,用于实现所述芯片与外部设备之间的数据传输;

所述控制器件,用于对所述芯片的状态进行监控。

28.根据权利要求27所述的板卡,其特征在于,

所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:ddrsdram;

所述芯片包括:ddr控制器,用于对每个所述存储单元的数据传输与数据存储的控制;

所述接收装置为:标准pcie接口。

技术总结
本申请提供一种乘法器、数据处理方法、芯片及电子设备,所述乘法器包括:修正编码电路和修正压缩电路,所述修正编码电路的输出端与所述修正压缩电路的输入端连接,该乘法器能够保证乘法运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。

技术研发人员:不公告发明人
受保护的技术使用者:上海寒武纪信息科技有限公司
技术研发日:2018.11.30
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-29857.html

最新回复(0)