CN210006031U - 乘法器 - Google Patents
乘法器 Download PDFInfo
- Publication number
- CN210006031U CN210006031U CN201921433507.0U CN201921433507U CN210006031U CN 210006031 U CN210006031 U CN 210006031U CN 201921433507 U CN201921433507 U CN 201921433507U CN 210006031 U CN210006031 U CN 210006031U
- Authority
- CN
- China
- Prior art keywords
- bit
- data
- multiplier
- circuit
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供一种乘法器,所述乘法器包括:修正正则有符号数编码电路和修正压缩电路,所述修正正则有符号数编码电路的输出端与所述修正压缩电路的输入端连接,该乘法器能够通过修正正则有符号数编码电路对接收到的数据进行正则有符号数编码,得到的有效部分积的数目较少,从而降低了乘法器实现乘法运算的复杂性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种乘法器。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能数字乘法器的要求也越来越高。神经网络算法作为智能芯片广泛应用的算法之一,通过乘法器进行乘法运算在神经网络算法中是一种常见的操作。
目前,乘法器是对乘数中的每三位数值作为一个编码,并根据被乘数得到部分积,并用华莱士树对所有部分积进行压缩处理得到乘法运算结果。但是,传统技术中,编码中非零位数值的数目较多,产生的对应部分积的数目较多,导致乘法器实现乘法运算的复杂性较高。
实用新型内容
基于此,有必要针对上述技术问题,提供一种乘法器。
本申请实施例提供一种乘法器,所述乘法器包括:修正正则有符号数编码电路和修正压缩电路,所述修正正则有符号数编码电路的输出端与所述修正压缩电路的输入端连接;其中,所述修正正则有符号数编码电路中包括第一输入端,用于接收功能选择模式信号;所述修正压缩电路中包括第一输入端,用于接收所述功能选择模式信号;所述功能选择模式信号用于确定所述乘法器可处理的数据位宽;
所述修正正则有符号数编码电路包括编码处理支路以及部分积获取支路,所述编码处理支路用于对接收到的数据进行正则有符号数编码处理,得到目标编码,所述部分积获取支路用于根据所述目标编码得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码的部分积,所述修正压缩电路用于对所述目标编码的部分积进行累加处理,得到目标运算结果。
在其中一个实施例中,所述编码处理支路包括修正正则有符号数编码单元,所述部分积获取支路包括低位部分积获取单元、低位选择器组单元、高位部分积获取单元以及高位选择器组单元;所述修正正则有符号数编码单元的第一输出端与所述低位部分积获取单元的第一输入端连接,所述低位选择器组单元的输出端与所述低位部分积获取单元的第二输入端连接,所述修正正则有符号数编码单元的第二输出端与所述高位部分积获取单元的第一输入端连接,所述高位选择器组单元的输出端与所述高位部分积获取单元的第二输入端连接;
其中,所述修正正则有符号数编码单元用于对接收到的第一数据进行正则有符号数编码处理,以及根据接收到的所述功能选择模式信号,确定所述乘法器可处理数据的位宽,并根据所述乘法器可处理数据的位宽得到目标编码,所述低位部分积获取单元用于根据接收到的所述目标编码中的低位目标编码以及第二数据,得到符号位扩展后的低位部分积,并根据所述符号位扩展后的低位部分积得到目标编码的低位部分积,所述低位选择器组单元用于选通所述符号位扩展后的低位部分积中的数值,所述高位部分积获取单元用于根据接收到的所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的高位部分积,并根据所述符号位扩展后的高位部分积得到目标编码的高位部分积,所述高位选择器组单元用于选通所述符号位扩展后的高位部分积中的数值。
在其中一个实施例中,所述修正正则有符号数编码单元包括:第一数据输入端口、第一模式选择信号输入端口、低位目标编码输出端口以及高位目标编码输出端口;所述第一数据输入端口用于接收所述第一数据,所述第一模式选择信号输入端口用于接收所述功能选择模式信号,所述低位目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述低位目标编码,所述高位目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述高位目标编码。
在其中一个实施例中,所述低位部分积获取单元包括:低位目标编码输入端口、第一选通数值输入端口、第二模式选择信号输入端口、第二数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述低位目标编码,所述第一选通数值输入端口用于接收所述低位选择器组单元选通后,输出的所述符号位扩展后的低位部分积中包含的数值,所述第二模式选择信号输入端口用于接收所述功能选择模式信号,所述第二数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出所述目标编码的低位部分积。
在其中一个实施例中,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对所述符号位扩展后的低位部分积中的数值进行选通。
在其中一个实施例中,所述高位部分积获取单元包括:高位目标编码输入端口、第二选通数值输入端口、第三模式选择信号输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述高位目标编码,所述第二选通数值输入端口用于接收所述高位选择器组单元选通后,输出的所述符号位扩展后的高位部分积中包含的数值,所述第三模式选择信号输入端口用于接收所述功能选择模式信号,所述第二数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所述目标编码的高位部分积。
在其中一个实施例中,所述高位选择器组单元包括:高位选择器,所述高位选择器用于对所述符号位扩展后的高位部分积中的数值进行选通。
在其中一个实施例中,所述修正压缩电路包括:修正华莱士树组电路和累加电路,所述修正华莱士树组电路的输出端与所述累加电路的输入端连接;所述修正华莱士树组电路用于对不同位宽数据运算时,得到的所有目标编码的部分积中的每一列数值进行累加处理得到累加运算结果,所述累加电路用于对所述累加运算结果进行累加处理。
在其中一个实施例中,所述修正华莱士树组电路包括:低位华莱士树子电路、选择器以及高位华莱士树子电路,所述低位华莱士树子电路的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子电路的输入端连接;其中,所述低位华莱士树子电路用于对所述目标编码的部分积中的每一列数值进行累加运算,所述选择器用于选通高位华莱士树子电路接收的进位输入信号,所述高位华莱士树子电路用于对所述目标编码的部分积中的每一列数值进行累加运算。
在其中一个实施例中,所述累加电路包括:加法器,所述进位加法器用于对所述累加运算结果进行加法运算。
在其中一个实施例中,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,和位信号输入端口用于接收和位信号,所述运算结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的所述目标运算结果。
本实施例提供的一种乘法器,接收待处理数据以及功能选择模式信号,根据功能选择模式信号,判断待处理数据是否需要进行拆分处理,若待处理数据需要进行拆分处理,则对待处理数据进行拆分处理,得到拆分后的数据,对拆分后的数据进行正则有符号数编码处理,得到目标编码,根据目标编码以及拆分后的数据,得到目标编码的部分积,对目标编码的部分积进行累加处理,得到目标运算结果,该乘法器能够对接收到的数据进行正则有符号数编码,得到的有效部分积的数目较少,从而降低了实现乘法运算的复杂性。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个所述的乘法器;该机器学习运算装置用于从其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其它处理装置;
当所述机器学习运算装置包含多个所述乘法器时,多个所述计算装置间通过预设特定结构进行连接并传输数据;
其中,多个所述乘法器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括如所述的机器学习处理装置、通用互联接口,和其它处理装置;该机器学习运算装置与上述其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的乘法器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的乘法器。
本申请实施例提供的一种电子设备,包括如所述的芯片。
附图说明
图1为一实施例提供的一种乘法器的结构示意图;
图2为另一实施例提供的另一种乘法器的结构示意图;
图3为一实施例提供的乘法器的具体实现电路图;
图4为一实施例提供的8位数据乘法运算得到的部分积的分布规律示意图;
图5为一实施例提供的16位数据乘法运算得到的部分积的分布规律示意图;
图6为另一实施例提供的8位数据运算时压缩电路的具体电路结构图;
图7为一实施例提供的另一种乘法器的具体实现电路图;
图8为一实施例提供的一种数据处理方法流程示意图;
图9为一实施例提供的另一种数据处理方法流程示意图;
图10为一实施例提供的一种组合处理装置的结构图;
图11为一实施例提供的另一种组合处理装置的结构图;
图12为一实施例提供的一种板卡的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的乘法器可应用于AI芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array,FPGA)芯片、或者是其它的硬件电路设备中进行乘法运算处理,其具体结构示意图如图1和2所示。
如图1所示,图1为一个实施例提供的一种乘法器的结构图。如图1所示,该乘法器包括:修正正则有符号数编码电路11和修正压缩电路12;所述修正正则有符号数编码电路11的输出端与所述修正压缩电路12的输入端连接;其中,所述修正正则有符号数编码电路11中包括第一输入端,用于接收功能选择模式信号;所述修正压缩电路12中包括第一输入端,用于接收所述功能选择模式信号。可选的,所述功能选择模式信号用于确定所述乘法器可处理的数据位宽。
可选的,所述修正正则有符号数编码电路11包括编码处理支路111以及部分积获取支路112,所述编码处理支路111用于对接收到的数据进行正则有符号数编码处理,得到目标编码,所述部分积获取支路112用于根据所述目标编码得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码的部分积,所述修正压缩电路12用于对所述目标编码的部分积进行累加处理,得到目标运算结果。
具体的,上述修正正则有符号数编码电路11可以包括两个具有不同功能的数据处理支路,即编码处理支路111以及部分积获取支路112,并且修正正则有符号数编码电路11接收到的数据可以为定点数,且该数据可以作为乘法运算中的乘数,还可以作为乘法运算中的被乘数。可选的,编码处理支路111可以包括具有正则有符号数编码处理功能的单元,部分积获取支路112可以包括具有多个不同功能的数据处理单元。可选的,修正正则有符号数编码电路11可以接收多种不同比特位宽的数据,也就是说,本实施例提供的乘法器可以处理多种不同比特位宽数据的乘法运算。但是,同一次乘法运算时,修正正则有符号数编码电路11接收到的乘数和被乘数可以是同位宽的数据,即乘数和被乘数位宽相等。示例性的,本实施例提供的乘法器可以处理8位*8位的数据乘法运算,16位*16位的乘法运算,32位*32位的数据的乘法运算,还可以处理64位*64位的数据的乘法运算,对此本实施例不作任何限定。
在本实施例中,修正正则有符号数编码电路11可以接收到的乘数进行正则有符号数编码处理,得到目标编码,并根据接收到的被乘数和目标编码,得到符号位扩展后的部分积,该符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍。可选的,上述正则有符号数编码处理可以表征为通过数值0,-1和1编码的数据处理过程。示例性的,修正正则有符号数编码电路11接收到的是16比特位宽的数据,若乘法器当前所处理8位数据乘法运算,则修正正则有符号数编码电路11可以将16比特位宽的数据划分成,高8位和低8位的两组数据分别进行正则有符号数编码处理,此时,得到的符号位扩展后的部分积的位宽可以16比特,同时,高8位数据可以得到9个符号位扩展后的高位部分积,低8位数据也可以得到9个符号位扩展后的低位部分积;若乘法器当前所处理16位数据乘法运算,则修正正则有符号数编码电路11可以对整体16位数据进行运算,此时,得到的符号位扩展后的部分积的位宽可以32比特,得到的符号位扩展后的部分积的数目可以等于乘法器当前所处理数据的位宽加2。
可以理解的是,上述功能选择模式信号可以有多种,不同功能选择模式信号对应于乘法器当前可以处理不同位宽数据的乘法运算。可选的,同一次乘法运算时,修正正则有符号数编码电路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位数据进行处理。
在本实施例中,上述修正正则有符号数编码电路11可以接收乘法运算中的乘数,并对乘数进行正则有符号数编码处理,得到目标编码。需要说明的是,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,正则有符号数编码电路11接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,正则有符号数编码电路11对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则正则有符号数编码电路11可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于乘法器当前所处理数据的位宽加1。
另外,若乘法器接收到的数据位宽为2N,且当前可处理N位数据运算,则乘法器中的正则有符号数编码电路11,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若乘法器当前可处理2N位数据运算,则乘法器中的正则有符号数编码电路11,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
本实施例提供的乘法器,乘法器通过修正正则有符号数编码电路对接收到的数据进行正则有符号数编码处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到目标编码的部分积,并通过修正压缩电路对目标编码的部分积进行累加处理,得到乘法运算的目标运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够采用修正正则有符号数编码电路对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗。
图2为另一实施例提供的一种乘法器的电路结构示意图。如图2所示,该乘法器包括:判断电路21、数据扩展电路22、正则有符号数编码电路23以及压缩电路24;所述判断电路21的输出端与所述数据扩展电路22的输入端连接,所述判断电路21的输出端与所述正则有符号数编码电路23的第一输入端连接,所述数据扩展电路22的输出端与所述正则有符号数编码电路23的第二输入端连接,所述正则有符号数编码电路23的输出端与所述压缩电路24的输入端连接。其中,所述判断电路21用于判断接收到的数据是否需要通过与所述判断电路21的输出端相连的所述数据扩展电路22进行处理,所述数据扩展电路22用于对接收到的所述数据进行扩展处理,所述正则有符号数编码电路23用于对接收到的所述数据进行正则有符号数编码处理得到目标编码的部分积,所述压缩电路24用于对所述目标编码的部分积进行累加处理。
具体的,上述判断电路21可以为一种自动判断接收到的数据的位宽,与乘法器可处理的数据的位宽2N大小的电路。可选的,上述正则有符号数编码电路23可以包括多个具有不同功能的数据处理单元,并且正则有符号数编码电路23接收到的数据可以作为乘法运算中的乘数,还可以作为乘法运算中的被乘数。另外,正则有符号数编码电路23接收到的数据可以是判断电路21输出的两个数据,还可以为数据扩展电路22对接收到的两个数据进行扩展处理后的数据。可选的,上述不同功能的数据处理单元可以为具有正则有符号数编码功能的数据处理单元。可选的,上述乘数和被乘数可以是多比特位宽的定点数。可选的,压缩电路24可以对正则有符号数编码电路23得到的目标编码的部分积进行累加处理,得到乘法运算的目标运算结果。
需要说明的是,乘法器可以对固定2N比特位宽的数据进行乘法运算,还可以理解为乘法器中的正则有符号数编码电路23和压缩电路24可以对2N比特位宽的数据进行乘法运算。但是,同一次乘法运算时,正则有符号数编码电路23接收到的乘数和被乘数为同位宽的数据。示例性的,本实施例提供的乘法器可以处理8位*8位的数据乘法运算,16位*16位的数据乘法运算,32*32位的数据乘法运算,还可以处理64位*64位的数据乘法运算,对此本实施例不作任何限定。可选的,上述不同功能的数据处理单元的输入端口可以有一个,每个数据处理单元的每个输入端口的功能可以相同,输出端口也可以有一个,每个数据处理单元的每个输出端口的功能可以不相同,并且不同功能数据处理单元的电路结构可以不相同。
可选的,所述正则有符号数编码电路23中包括第三输入端,用于接收功能选择模式信号;所述压缩电路24中包括第二输入端,用于接收所述功能选择模式信号。
本实施例提供的一种乘法器,乘法器通过判断电路判断接收到的数据是否需要通过下一数据扩展电路进行处理,如果不需要进行数据扩展电路进行处理,则判断电路直接将接收到的数据输入至正则有符号数编码电路,进行正则有符号数编码处理得到目标编码的部分积,否则就会将接收到的数据输入至数据扩展电路进行扩展处理,再将扩展后的数据输入至正则有符号数编码电路,进行正则有符号数编码处理得到目标编码的部分积,并通过压缩电路对目标编码的部分积进行累加处理,得到乘法运算的目标运算结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够采用修正正则有符号数编码电路对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗。
图3为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括编码处理支路111,所述编码处理支路111包括修正正则有符号数编码单元1111,所述部分积获取支路112包括低位部分积获取单元1121、低位选择器组单元1122、高位部分积获取单元1123以及高位选择器组单元1124;所述修正正则有符号数编码单元1111的第一输出端与所述低位部分积获取单元1121的第一输入端连接,所述低位选择器组单元1122的输出端与所述低位部分积获取单元1121的第二输入端连接,所述修正正则有符号数编码单元1111的第二输出端与所述高位部分积获取单元1123的第一输入端连接,所述高位选择器组单元1124的输出端与所述高位部分积获取单元1123的第二输入端连接。
其中,所述修正正则有符号数编码单元1111用于对接收到的第一数据进行正则有符号数编码处理,以及根据接收到的所述功能选择模式信号,确定所述乘法器可处理数据的位宽,并根据所述乘法器可处理数据的位宽得到目标编码,所述低位部分积获取单元1121用于根据接收到的所述目标编码中的低位目标编码以及第二数据,得到符号位扩展后的低位部分积,并根据所述符号位扩展后的低位部分积得到目标编码的低位部分积,所述低位选择器组单元1122用于选通所述符号位扩展后的低位部分积中的数值,所述高位部分积获取单元1123用于根据接收到的所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的高位部分积,并根据所述符号位扩展后的高位部分积得到目标编码的高位部分积,所述高位选择器组单元1124用于选通所述符号位扩展后的高位部分积中的数值。
具体的,上述修正正则有符号数编码单元1111可以接收第一数据,并对该第一数据进行正则有符号数编码处理,得到目标编码,该第一数据可以为乘法运算中的乘数。可选的,上述低位部分积获取单元1121可以根据修正正则有符号数编码单元1111得到的低位目标编码,以及接收到第二数据,得到目标编码的低位部分积;高位部分积获取单元1123可以根据修正正则有符号数编码单元1111得到的高位目标编码,以及接收到第二数据,得到目标编码的高位部分积;该第二数据可以为乘法运算中的被乘数。可选的,若修正正则有符号数编码单元1111接收到的数据位宽为2N,乘法器当前可处理的数据位宽为N比特,则修正正则有符号数编码单元1111可以自动将接收到2N位数据,拆分成高N位数据以及低N位数据,分别对高N位数据以及低N位数据进行正则有符号数编码处理,得到的高位目标编码的数目等于N加1,得到的低位目标编码的数目也可以等于N加1;同时,高位目标编码得到的对应目标编码的高位部分积的数目可以等于(N+1),低位目标编码得到的对应目标编码的低位部分积的数目可以等于(N+1);若乘法器中的修正正则有符号数编码单元1111接收到的数据位宽为2N,乘法器当前可处理的数据位宽也为2N比特,则修正正则有符号数编码单元111可以对接收到2N位数据进行正则有符号数编码处理,得到(2N+1)位的中间编码,并需要对中间编码的最高位数值的高一位处补数值0,将这(2N+2)位的编码作为目标编码,也就是,目标编码中的最高位数值为数值0,该信号0对应的目标编码的部分积中包含的数值均为0;其中,(2N+2)位目标编码中高(N+1)位数值可以称为高位目标编码,低(N+1)位数值可以称为低位目标编码。
需要说明的是,上述低位选择器组单元1122可以根据接收到的功能选择模式信号,选通符号位扩展后的低位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的部分积中的数值,还是2N位乘法运算得到的符号位扩展后的部分积中的数值;同理,高位选择器组单元1124可以根据接收到的功能选择模式信号,选通符号位扩展后的高位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的部分积中的数值,还是2N位乘法运算得到的符号位扩展后的部分积中的数值。
可以理解的是,若乘法器接收到的数据位宽可以为2N,且当前可处理N位数据乘法运算,则乘法器中的低位部分积获取单元1121可以根据低位目标编码中的每一位数值,得到低N位数据对应的符号位扩展后的部分积;上述低位选择器组单元1122可以选通符号位扩展后的低位部分积中的数值;然后将符号位扩展后的部分积与选通后的符号位扩展后的低位部分积中的数值进行结合,得到符号位扩展后的低位部分积。可选的,高位部分积获取单元1123可以根据高位目标编码中的每一位数值,得到高N位数据对应的符号位扩展后的部分积;高位选择器组单元1124可以选通符号位扩展后的高位部分积中的数值;然后将符号位扩展后的部分积与选通后的符号位扩展后的高位部分积中的数值进行结合,得到符号位扩展后的高位部分积。可选的,正则有符号数编码处理过程中,得到的低位目标编码的数目可以等于得到的高位目标编码的数目,还可以等于低N位数据对应的符号位扩展后的低位部分积的数目,或高N位数据对应的符号位扩展后的高位部分积的数目。可选的,修正正则有符号数编码电路11中可以包含(N+1)个低位部分积获取单元1121,还可以包含(N+1)个高位部分积获取单元1123。可选的,上述每一个低位部分积获取单元1121和每一个高位部分积获取单元1123中,均可以包含2N个数值生成子单元,每一个数值生成子单元可以获取符号位扩展后的部分积中的一位数值。同时,低位部分积获取单元1121可以根据得到的符号位扩展后的低位部分积,确定对应的目标编码的低位部分积;高位部分积获取单元1123可以根据得到的符号位扩展后的高位部分积,确定对应的目标编码的高位部分积。
本实施例提供的一种乘法器,乘法器通过修正正则有符号数编码电路中的修正正则有符号数编码单元,对接收到的数据进行正则有符号数编码处理,得到目标编码,并且低位部分积获取单元和高位部分积获取单元根据目标编码中的低位目标编码及高位目标编码,得到符号位扩展后的部分积,根据符号位扩展后的部分积得到对应的目标编码的部分积,进而通过压缩电路对目标编码的部分积进行累加处理,得到乘法运算的目标运算结果,该乘法器能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够采用修正正则有符号数编码单元对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗。
在其中一个实施例中,其中,乘法器包括修正正则有符号数编码单元1111,所述修正正则有符号数编码单元1111包括:第一数据输入端口1111a、第一模式选择信号输入端口1111b、低位目标编码输出端口1111c以及高位目标编码输出端口1111d;所述第一数据输入端口1111a用于接收所述第一数据,所述第一模式选择信号输入端口1111b用于接收所述功能选择模式信号,所述低位目标编码输出端口1111c用于输出对所述第一数据进行正则有符号数编码处理后得到的所述低位目标编码,所述高位目标编码输出端口1111d用于输出对所述第一数据进行正则有符号数编码处理后得到的所述高位目标编码。
具体的,乘法运算过程中,修正正则有符号数编码单元1111可以通过第一数据输入端口1111a接收第一数据,通过第一模式选择信号输入端口1111b接收功能选择模式信号,对第一数据进行正则有符号数编码处理,得到中间编码,并根据接收到的功能选择模式信号确定是否需要对中间编码进行补数处理,得到目标编码,进而通过低位目标编码输出端口1111c输出目标编码中的低位目标编码,通过高位目标编码输出端口1111d输出目标编码中的高位目标编码。需要说明的是,上述补数处理可以为对中间编码的最高位数值的高一位处补数值0。
本实施例提供的一种乘法器,该乘法器能够采用修正正则有符号数编码单元对接收到的数据进行正则有符号数编码处理,以降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;同时,上述乘法器能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
作为其中一个实施例,所述低位部分积获取单元1121包括:低位目标编码输入端口1121a、第一选通数值输入端口1121b、第二模式选择信号输入端口1121c、第二数据输入端口1121d以及低位部分积输出端口1121e;所述低位目标编码输入端口1121a用于接收所述低位目标编码,所述第一选通数值输入端口1121b用于接收所述低位选择器组单元选通后,输出的所述符号位扩展后的低位部分积中包含的数值,所述第二模式选择信号输入端口1121c用于接收所述功能选择模式信号,所述第二数据输入端口1121d用于接收所述第二数据,所述低位部分积输出端口1121e用于输出所述目标编码的低位部分积。
具体的,低位部分积获取单元1121通过低位目标编码输入端口1121a,可以接收修正正则有符号数编码单元1111输出的低位目标编码,通过第二数据输入端口1121d接收乘法运算中的被乘数,根据低位目标编码以及被乘数得到低位目标编码对应的符号位扩展后的部分积。可选的,若第二模式选择信号输入端口1121c接收到的功能选择模式信号对应乘法器处理N位数据运算,则符号位扩展后的部分积的位宽可以等于2N。示例性的,若乘法器处理N位数据运算,低位部分积获取单元1121接收到一个N比特位宽的被乘数X,则低位部分积获取单元1121可以根据被乘数X与低位目标编码中包含的三种数值-1,1和0直接得到对应的2N位符号位扩展后的部分积,该符号位扩展后的部分积的低(N+1)位数值可以等于低位目标编码直接得到的原始部分积中的所有数值,符号位扩展后的部分积的高(N-1)位数值可以等于该原始部分积中的符号位数值,该符号位数值也就是原始部分积的最高位数值。当低位目标编码中的数值为-1时,则原始部分积可以为-X,当低位目标编码中的数值1时,则原始部分积可以为X,当低位目标编码中的数值0时,则原始部分积可以为0。
需要说明的是,低位部分积获取单元1121可以通过第一选通数值输入端口1121b,接收低位选择器组单元1122选通的不相同位宽数据运算时,得到的符号位扩展后的低位部分积中的对应位数值;然后将乘法器当前得到的低位目标编码对应的符号位扩展后的部分积,与选通后的对应位数值进行结合,得到符号位扩展后的低位部分积。
进一步地,低位部分积获取单元1121可以根据所有符号位扩展后的低位部分积,得到对应的目标编码的低位部分积,并通过低位部分积输出端口1121e将目标编码的低位部分积输出。可选的,所有目标编码的低位部分积的分布规律可以表征为,第一个目标编码的低位部分积可以等于第一个符号位扩展后的低位部分积,即低位目标编码中最低位数值对应的符号位扩展后的低位部分积,从第二个目标编码的低位部分积开始,每一个目标编码的低位部分积中的最高位数值,与第一个目标编码的低位部分积中的最高位数值位于同一列,每一个目标编码的低位部分积,可以等于对应符号位扩展后的低位部分积,且该符号位扩展后的低位部分积的最低位数值,与上一个目标编码的低位部分积的次高位数值位于同一列,也就是,对应符号位扩展后的低位部分积超出第一个目标编码的低位部分积中最高列数值的多个数值不参与后续运算。
本实施例提供的一种乘法器,乘法器通过低位部分积获取单元可以根据低位目标编码中包含的每一位数值以及第二数据,得到符号位扩展后的低位部分积,并根据符号位扩展后的低位部分积得到目标编码的低位部分积,并且根据高位部分积获取单元得到的符号位扩展后的高位部分积确定目标编码的高位部分积,进而通过修正压缩电路对目标编码的低位部分积以及目标编码的高位部分积进行累加处理,得到目标运算结果,该乘法器能够获取的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;同时,上述乘法器能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,其中,乘法器包括所述低位选择器组单元1122,该低位选择器组单元1122包括:低位选择器1122a,多个所述低位选择器1122a用于对所述符号位扩展后的低位部分积中的数值进行选通。
具体的,上述低位选择器组单元1122中低位选择器1122a的数目,可以等于3N*(N+1),2N可以表示乘法器当前所处理数据的位宽,该低位选择器组单元1122中每一个低位选择器1122a的内部电路结构可以相同。可选的,乘法运算时,修正正则有符号数编码单元111连接的对应(N+1)个低位部分积获取单元1121中,每一个低位部分积获取单元1121可以包含4N个数值生成子单元,其中2N个数值生成子单元可以连接2N个低位选择器1122a,这2N个数值生成子单元均可以连接一个低位选择器1122a。可选的,2N个低位选择器1122a对应的2N个数值生成子单元,可以为目标编码的低位部分积中高2N位数值对应的数值生成子单元,同时,该2N个低位选择器1122a的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若乘法器可以处理n种不同位宽的数据运算,并且乘法器接收到的数据的位宽为2N,则上述低位选择器1122a的两个其它输入端口分别接收的信号可以为0和乘法器进行2N比特位宽的数据运算时,低位部分积获取单元1121得到的对应符号位扩展后的部分积中的符号位数值。其中,(N+1)个低位部分积获取单元1121可以连接(N+1)组2N个低位选择器1122a,各组的2N个低位选择器1122a接收到的符号位数值可以相同,也可以不相同,但是,同一组的2N个低位选择器1122a接收到的符号位数值是相同的,并且该符号位数值可以根据每一组2N个低位选择器1122a,对应连接的低位部分积获取单元1121获取的符号位扩展后的部分积中的符号位数值得到。
另外,每一个低位部分积获取单元1121包含的4N个数值生成子单元中,对应N个数值生成子单元可以不连接低位选择器1122a,此时,该N个数值生成子单元获取的数值可以为乘法器当前所处理不同位宽的数据得到的低位目标编码中的数值,得到的对应符号位扩展后的低位部分积中的对应位数值,也可以理解为,N个数值生成子单元获取的数值可以为对应符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N位数值之间的所有数值。
需要说明的是,上述每一个低位部分积获取单元1121包含的4N个数值生成子单元中,剩余的N个数值生成子单元也可以连接N个低位选择器1122a,每一个数值生成子单元可以连接1个低位选择器1122a,该N个低位选择器1122a的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为乘法器进行2N位数据运算,得到的对应符号位扩展后的部分积中的符号位数值,和乘法器进行2N位数据运算,得到对应符号位扩展后的低位部分积中对应位数值,也可以理解为,N个数值生成子单元获取的数值可以为对应符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(N+1)位至第2N位数值之间的所有数值。其中,(N+1)个低位部分积获取单元1121可以连接(N+1)组N个低位选择器1122a,各组的N个低位选择器1122a接收到的符号位数值可以相同,也可以不相同,但是,同一组的N个低位选择器1122a接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N个低位选择器1122a,对应连接的低位部分积获取单元1121获取的符号位扩展后的部分积中的符号位数值得到。
另外,各组的N个低位选择器1122a接收到的符号位扩展后的低位部分积中对应位数值,可以根据该组低位选择器1122a所连接的低位部分积获取单元1121,获取的符号位扩展后的低位部分积中的对应位数值确定,并且每一组的N个低位选择器1122a中,每一个低位选择器1122a接收到的对应位数值可以相同,也可以不相同。其中,每一个低位部分积获取单元1121中4N个数值生成子单元的位置的分布规律,可以在上一个低位部分积获取单元1121中4N个数值生成子单元位置的基础上,左移一个数值生成子单元。可选的,参与后续运算的所有目标编码的低位部分积中,只有第一个目标编码的低位部分积的位宽可以等于4N,剩余的目标编码的低位部分积的位宽都会在上一个目标编码的低位部分积的基础上少一位,且最后一个目标编码的低位部分积的位宽可以等于(2N-1)。
本实施例提供的一种乘法器,乘法器中的低位选择器组单元可以选通符号位扩展后的低位部分积中的数值,得到符号位扩展后的低位部分积,根据符号位扩展后的低位部分积得到目标编码的低位部分积,进而通过修正压缩电路对目标编码的低位部分积和高位部分积进行累加处理,得到目标运算结果,该乘法器能够获取的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;同时,上述乘法器能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,其中,乘法器包括高位部分积获取单元1123,所述高位部分积获取单元1123包括:高位目标编码输入端口1123a、第二选通数值输入端口1123b、第三模式选择信号输入端口1123c、第二数据输入端口1123d以及高位部分积输出端口1123e;所述高位目标编码输入端口1123a用于接收所述高位目标编码,所述第二选通数值输入端口1123b用于接收所述高位选择器组单元选通后,输出的所述符号位扩展后的高位部分积中包含的数值,所述第三模式选择信号输入端口1123c用于接收所述功能选择模式信号,所述第二数据输入端口1123d用于接收所述第二数据,所述高位部分积输出端口1123e用于输出所述目标编码的高位部分积。
具体的,高位部分积获取单元1123通过高位目标编码输入端口1123a,可以接收修正正则有符号数编码单元1111输出的高位目标编码,通过第二数据输入端口1123d接收乘法运算中的被乘数,根据高位目标编码以及被乘数,得到高位目标编码对应的符号位扩展后的高位部分积。可选的,若高位部分积获取单元1123通过第三模式选择信号输入端口1123c,接收到的功能选择模式信号对应乘法器处理N位数据运算,则高位部分积获取单元1123得到的符号位扩展后的高位部分积的位宽可以等于2N。示例性的,若乘法器处理N位数据运算,高位部分积获取单元1123接收到一个N比特位宽的被乘数X,则高位部分积获取单元1123可以根据被乘数X与高位目标编码中包含的三种数值-1,1和0直接得到对应的2N位符号位扩展后的部分积,该符号位扩展后的部分积中的低N位数值可以等于高位目标编码直接得到的原始部分积中的所有数值,符号位扩展后的部分积中的高N位数值可以等于该原始部分积中的符号位数值,该符号位数值也就是原始部分积的最高位数值。当高位目标编码中的数值为-1时,则原始部分积可以为-X,当高位目标编码中的数值1时,则原始部分积可以为X,当高位目标编码中的数值0时,则原始部分积可以为0。
需要说明的是,高位部分积获取单元1123可以通过第二选通数值输入端口1123b,接收高位选择器组单元1124选通的不相同位宽数据时,得到的符号位扩展后的高位部分积中的对应位数值;然后将乘法器当前得到的高位目标编码对应的符号位扩展后的部分积,与选通后的对应位数值进行结合,得到符号位扩展后的高位部分积。
进一步地,高位部分积获取单元1123可以根据所有符号位扩展后的高位部分积,得到对应的目标编码的高位部分积,并通过高位部分积输出端口1123e将目标编码的高位部分积输出。可选的,所有目标编码的高位部分积的分布规律可以表征为,第一个目标编码的高位部分积可以位于最后一个目标编码的低位部分积的下一个目标编码的部分积,即高位目标编码中的最低位数值对应的目标编码的部分积,第一个目标编码的高位部分积的位宽可以等于最后一个目标编码的低位部分积的位宽减1,也就是,第一个目标编码的高位部分积可以等于第一个符号位扩展后的高位部分积,且该符号位扩展后的高位部分积的最低位数值,与最后一个目标编码的低位部分积的次高位数值位于同一列,相当于,第一个符号位扩展后的高位部分积超出最后一个目标编码的低位部分积中最高列数值的多个数值不参与后续运算,从第二个目标编码的高位部分积开始,每一个目标编码的高位部分积中的最高位数值,与第一个目标编码的高位部分积中的最高位数值位于同一列,每一个目标编码的高位部分积,可以等于对应符号位扩展后的高位部分积,且该符号位扩展后的高位部分积的最低位数值,与上一个目标编码的高位部分积的次高位数值位于同一列,也就是,对应符号位扩展后的高位部分积超出第一个目标编码的高位部分积中最高列数值的多个数值不参与后续运算。
本实施例提供的一种乘法器,乘法器通过高位部分积获取单元可以根据高位目标编码中包含的每一位数值以及第二数据,得到符号位扩展后的高位部分积,根据符号位扩展后的高位部分积得到目标编码的高位部分积,并且通过修正压缩电路对目标编码的高位部分积以及低位部分积进行累加处理,得到目标运算结果,该乘法器能够获取的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;同时,上述乘法器能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,其中,乘法器包括高位选择器组单元1124,所述高位选择器组单元1124包括:高位选择器1124a,多个所述高位选择器1124a用于对所述符号位扩展后的高位部分积中的数值进行选通。
具体的,上述高位选择器组单元1124中高位选择器1124a的数目,可以等于3N*(N+1),2N可以表示乘法器当前所处理数据的位宽,该高位选择器组单元1124中每一个高位选择器1124a的内部电路结构可以相同。可选的,乘法运算时,修正正则有符号数编码单元111可以连接(N+1)个高位部分积获取单元1123,每一个高位部分积获取单元1123中,可以包含4N个数值生成子单元,其中2N个数值生成子单元可以连接2N个高位选择器1124a,每一个数值生成子单元连接一个高位选择器1124a。可选的,上述2N个高位选择器1124a对应的2N个数值生成子单元,可以为目标编码的高位部分积中低2N位数值对应的数值生成子单元,该2N个高位选择器1124a的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若乘法器可以处理n种不同位宽的数据运算,并且乘法器接收到的数据的位宽为2N,则上述高位选择器1124a的两个其它输入端口分别接收的信号可以为0和乘法器进行2N比特位宽的数据运算时,该高位部分积获取单元1123得到的对应符号位扩展后的部分积中的对应位数值。其中,(N+1)个高位部分积获取单元1123可以连接(N+1)组2N个高位选择器1124a,各组的2N个高位选择器1124a接收到的对应位数值可以相同,也可以不相同。
另外,每一个高位部分积获取单元1123包含的4N个数值生成子单元中,对应N个数值生成子单元可以连接N个高位选择器1124a,每一个数值生成子单元可以连接1个高位选择器1124a,该N个高位选择器1124a与选择器113的内部电路结构可以相同,并且该N个高位选择器1124a的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为乘法器进行2N位数据运算,得到的对应符号位扩展后的部分积中的符号位数值,和乘法器进行2N位数据运算,得到的对应符号位扩展后的部分积中的对应位数值。其中,(N+1)个高位部分积获取单元1123可以连接(N+1)组N个高位选择器1124a,各组的N个高位选择器1124a接收到的符号位数值可以相同,也可以不相同,但是,同一组的N个高位选择器1124a接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N个高位选择器1124a,对应连接的高位部分积获取单元1123获取的符号位扩展后的部分积中的符号位数值得到。另外,各组的N个高位选择器1124a接收到的符号位扩展后的部分积中对应位数值,可以根据该组高位选择器1124a所连接的高位部分积获取单元1123,获取的符号位扩展后的部分积中的符号位数值确定,并且每一组的N个高位选择器1124a中,每一个高位选择器1124a接收到的对应位数值可以相同,可以不相同。
需要说明的是,每一个高位部分积获取单元1123包含的4N个数值生成子单元中,剩余的N个数值生成子单元可以不连接高位选择器1124a,此时,该N个数值生成子单元获取的数值可以为乘法器当前所处理不同位宽的数据,得到的高位目标编码中的数值得到的对应的符号位扩展后的部分积中的对应位数值,也可以理解为,N个数值生成子单元获取的数值可以为对应符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第3N位数值之间的所有数值。其中,每一个高位部分积获取单元1123中4N个数值生成子单元的位置的分布规律,可以在上一个高位部分积获取单元1123中4N个数值生成子单元位置的基础上,左移一个数值生成子单元。可选的,参与后续运算的所有目标编码的高位部分积中,只有第一个目标编码的高位部分积的位宽可以等于4N,剩余的目标编码的高位部分积的位宽都会在上一个目标编码的高位部分积的基础上少一位,且最后一个目标编码的高位部分积的位宽可以等于(2N-1)。
本实施例提供的一种乘法器,乘法器中的高位选择器组单元可以选通高位部分积中的数值,得到符号位扩展后的高位部分积,根据符号位扩展后的高位部分积得到目标编码的高位部分积,进而通过修正压缩电路对目标编码的高位部分积和低位部分积进行累加处理,得到目标运算结果,该乘法器能够获取的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;同时,上述乘法器能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
图3为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述修正压缩电路12,该修正压缩电路12包括:修正华莱士树组电路121和累加电路122,所述修正华莱士树组电路121的输出端与所述累加电路122的输入端连接;所述修正华莱士树组电路121用于对不同位宽数据运算时,得到的所有目标编码的部分积中的每一列数值进行累加处理得到累加运算结果,所述累加电路122用于对所述累加运算结果进行累加处理。
具体的,上述修正华莱士树组电路121可以对修正正则有符号数编码电路11得到的目标编码的部分积中的每一列数值进行累加处理,并通过累加电路122对修正华莱士树组电路121得到的两个运算结果进行累加处理,得到乘法运算的目标运算结果。
需要说明的是,所有目标编码的部分积中的每一个目标编码的部分积可以等于符号位扩展后的部分积,还可以等于符号位扩展后的部分积中的部分位数值,其中,第一个目标编码的部分积可以等于第一个对应的符号位扩展后的部分积。可选的,每一个目标编码的部分积中的最低位数值可以与上一个目标编码的部分积中的次低位数值位于同一列,相当于每一个符号位扩展后的部分积中的每一位数值,在上一个符号位扩展后的部分积中的每一位数值所处对应列的基础上,左移一列,并且每一个目标编码的部分积的最高位数值,与第一个目标编码的部分积中的最高位数值均位于同一列,其中,超出第一个目标编码的部分积中的最高位数值对应列的所有数值可以不进行累加运算。可选的,所有目标编码的部分积的列数可以等于乘法器当前所处理数据位宽的2倍。
示例性的,若乘法器接收到的两个数据位宽均为16比特,当前可处理8位数据的乘法运算,则当前乘法器可处理两组8位*8位的数据乘法运算,该乘法器通过修正正则有符号数编码电路11得到的9个目标编码的低位部分积,以及9个目标编码的高位部分积的分布规律如图4所示,其中,右上角为9个目标编码的低位部分积的分布图,左下角为9个目标编码的高位部分积的分布图,“○”表示目标编码的低位部分积中的每一位数值,表示目标编码的高位部分积中的每一位数值,“●”表示目标编码的低位部分积或目标编码的高位部分积的符号扩展位数值;若乘法器当前可处理16位*16位的数据乘法运算,该乘法器通过修正正则有符号数编码电路11得到的9个目标编码的低位部分积,以及9个目标编码的高位部分积的分布规律如图5所示,其中,“○”表示目标编码的低位部分积中的每一位数值,表示目标编码的高位部分积中的每一位数值,“●”表示目标编码的低位部分积或目标编码的高位部分积的符号扩展位数值。
本实施例提供的一种乘法器,乘法器通过修正华莱士树组电路可以对目标编码的低位部分积和高位部分积进行累加处理,并通过累加电路对累加结果进行再次累加处理,得到乘法运算的目标运算结果,该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该乘法器能够获取的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗。
在其中一个实施例中,继续如图3所示乘法器的具体结构示意图,其中,乘法器包括所述修正华莱士树组电路121,该修正华莱士树组电路121包括:低位华莱士树子电路1211、选择器1212以及高位华莱士树子电路1213,所述低位华莱士树子电路1211的输出端与所述选择器1212的输入端连接,所述选择器1212的输出端与所述高位华莱士树子电路1213的输入端连接;其中,多个所述低位华莱士树子电路1211用于对所述目标编码的部分积中的每一列数值进行累加运算,所述选择器1212用于选通高位华莱士树子电路1213接收的进位输入信号,多个所述高位华莱士树子电路1213用于对所述目标编码的部分积中的每一列数值进行累加运算。
具体的,每一个低位华莱士树子电路1211的电路结构,可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现,该4-2压缩器可以有多个全加器组成;每一个高位华莱士树子电路1213的电路结构,也可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现,该4-2压缩器可以有多个全加器组成。另外,低位华莱士树子电路1211和高位华莱士树子电路1213,均可以理解为是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,修正华莱士树组电路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-1作为修正华莱士树组电路121中,第一个高位华莱士树子电路1213接收到的进位输入信号CinN;还可以理解为,乘法器当前可以将接收到的N位数据作为一个整体进行运算。乘法器当前可处理N/2位数据乘法运算时,乘法器中的选择器1212可以选通0作为修正华莱士树组电路121中,第一个高位华莱士树子电路1213接收到的进位输入信号CinN;还可以理解为,乘法器当前可以将接收到的N位数据划分成高N/2位和低N/2位数据分别进行乘法运算,其中,从第一个低位华莱士树子电路1211至最后一个低位华莱士树子电路1211的对应编号i分别可以表示为0,1,2,…,N-1;从第一个高位华莱士树子电路1213至最后一个高位华莱士树子电路1213的对应编号i分别可以表示为N,N+1,…,2N-1。
需要说明的是,修正华莱士树组电路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芯片的面积;同时,该乘法器还可以对较少的有效部分积进行累加处理,以使乘法运算的复杂性降低。
另一实施例提供的一种乘法器,其中,乘法器包括所述累加电路122,该累加电路122包括:加法器1221,所述进位加法器1221用于对所述累加运算结果进行加法运算。
具体的,加法器1221可以为不同位宽的进位加法器。可选的,加法器1221可以接收修正华莱士树组电路121输出的两路信号,对两路输出信号进行加法运算,输出乘法运算的目标运算结果结果。可选的,上述加法器1221可以为超前进位加法器。
本实施例提供的一种乘法器,乘法器通过累加电路可以对修正华莱士树组电路输出的两路信号进行累加处理,输出乘法运算的目标运算结果;该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,所述加法器1221,该加法器1221包括:进位信号输入端口1221a、和位信号输入端口1221b以及运算结果输出端口1221c;所述进位信号输入端口1221a用于接收进位信号,和位信号输入端口1221b用于接收和位信号,所述运算结果输出端口1221c用于输出所述进位信号与所述和位信号进行累加处理得到的所述目标运算结果。
具体的,加法器1221可以通过进位信号输入端口1221a接收修正华莱士树组电路121输出的进位信号Carry,通过和位信号输入端口1221b接收修正华莱士数组电路121输出的和位信号Sum,并将进位信号Carry与和位信号Sum进行累加的结果,通过运算结果输出端口1221c输出。
需要说明的是,乘法运算时,乘法器可以采用不同位宽的加法器1221对修正华莱士树组电路121输出的进位输出信号Carry与和位输出信号Sum进行加法运算,其中,上述加法器1221可处理的数据位宽可以等于乘法器当前处理的数据位宽N的2倍。可选的,修正华莱士树组电路121中的每一个低位华莱士树子电路1211和高位华莱士树子电路1213,可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=1,…,2N,i为每一个低位或高位华莱士树子电路的对应编号,编号从1开始)。可选的,加法器1221接收到的Carry={[Carry1:Carry2N-1],0},也就是说,加法器1221接收到的进位输出信号Carry的位宽为2N,进位输出信号Carry中前2N-1位数值对应修正华莱士树组电路121中,前2N-1个低位和高位华莱士树子电路的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器1221接收到的和位输出信号Sum的位宽为2N,和位输出信号Sum中的数值可以等于修正华莱士树组电路121中每一个低位或高位华莱士树子电路的和位输出信号。
示例性的,若乘法器当前处理8位*8位的定点数乘法运算,则加法器1221可以为16位进位加法器,如图6所示,修正华莱士树组电路121可以输出16个低位和高位华莱士树子电路的和位输出信号Sum和进位输出信号Carry,但是,16位进位加法器接收到的和位输出信号,可以为修正华莱士树组电路121输出的完整和位信号Sum,接收到的进位输出信号可以为修正华莱士树组电路121中,除去最后一个高位华莱士树子电路1213输出的进位输出信号的所有进位输出信号,与数值0结合后的进位信号Carry。
本实施例提供的一种乘法器,乘法器通过累加电路可以对修正华莱士树组电路输出的两路信号进行累加运算,输出乘法运算的目标运算结果,该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
图7为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述判断电路21,该判断电路21包括:第一数据输入端口211以及第一数据输出端口212;所述第一数据输入端口211用于接收进行乘法运算处理的数据,所述第一数据输出端口212用于输出接收到的所述数据。
具体的,判断电路21通过第一数据输入端口211接收进行乘法运算的两个数据。可选的,判断电路21接收到的数据可以为乘法运算中的乘数和被乘数,且乘数和被乘数的位宽可以相同。可选的,判断电路21可以通过第一数据输出端口212输出接收到的两个数据,并将这两个数据同时输入至数据扩展电路22中,或者同时输入至正则有符号数编码电路23中。
需要说明的是,若判断电路21判断接收到的两个数据的位宽为N,小于乘法器可处理的数据的位宽2N,此时,判断电路21需要将接收到的两个N比特位宽的数据输入至数据扩展电路22进行扩展处理,得到两个2N比特位宽的数据;若判断电路21判断接收到的两个数据的位宽为2N,等于乘法器可处理的数据的位宽2N,此时,判断电路21可以直接将接收到的两个2N比特位宽的数据输入至正则有符号数编码电路23中进行正则有符号数编码处理。
本实施例提供的一种乘法器,乘法器通过判断电路判断接收到的数据是否需要通过下一数据扩展电路进行处理,如果不需要进行数据扩展电路处理,则判断电路直接将接收到的数据输入至正则有符号数编码电路进行正则有符号数编码处理得到目标编码的部分积,否则就会将接收到的数据输入至数据扩展电路进行扩展处理,对扩展后的数据输入至正则有符号数编码电路进行正则有符号数编码处理得到目标编码的部分积,并通过压缩电路对目标编码的部分积进行累加处理,得到乘法运算的目标运算结果,该过程能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够采用正则有符号数编码电路对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗。
图7为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述数据扩展电路22,该数据扩展电路22包括:第二数据输入端口221、扩展模式选择信号输入端口222、功能选择模式信号输出端口223以及第二数据输出端口224;所述第二数据输入端口221用于接收所述判断电路输出的所述数据,所述扩展模式选择信号输入端口222用于接收对接收到的所述数据进行扩展处理所对应的数据扩展模式选择信号,所述功能选择模式信号输出端口223用于输出根据所述数据扩展电路对接收到的所述数据进行扩展处理的模式,确定的所述功能选择模式信号,所述第二数据输出端口224用于输出扩展处理后的数据。
具体的,上述扩展模式选择信号输入端口222接收到的数据扩展模式选择信号可以有三种,分别表示为00,01,10,其中,信号00表示数据扩展电路22可以将接收到的N位数据扩展成2N位数据,2N位数据中的高N位数值可以等于接收到的N位数据的数值,低N位数值均可以等于扩展的N位数值0,此时,功能选择模式信号输出端口223可以输出功能选择模式信号00,并且乘法器得到的4N比特位宽的目标运算结果中,高2N位数值可以为乘法运算的目标运算结果;信号01表示数据扩展电路22可以将接收到的N位数据扩展成2N位数据,2N位数据中的低N位数值可以等于接收到的N位数据的数值,高N位数值均可以等于扩展的N位数值0,此时,功能选择模式信号输出端口223可以输出功能选择模式信号01,并且乘法器得到的4N比特位宽的目标运算结果中,低2N位数值可以为乘法运算的目标运算结果;信号10表示数据扩展电路22可以将接收到的N位数据扩展成2N位数据,2N位数据中的低N位数值可以等于接收到的N位数据的数值,高N位数值均可以等于数据扩展电路22接收到的数据的符号位数值,此时,功能选择模式信号输出端口223可以输出功能选择模式信号10,并且乘法器得到的4N比特位宽的目标运算结果中,低2N位数值可以为乘法运算的目标运算结果。
需要说明的是,若乘法器接收到的两个数据的位宽为2N,与乘法器可处理的数据的位宽2N相等,则判断电路21可以直接将接收到的两个数据输入至正则有符号数编码电路23中进行正则有符号数编码处理;若乘法器接收到的两个数据的位宽为N,小于乘法器可处理的数据的位宽2N,并且数据扩展电路22接收到的数据扩展模式选择信号为10,则判断电路21可以将接收到的两个数据输入至数据扩展电路22进行扩展处理,并将扩展后的数据输入至正则有符号数编码电路23中进行正则有符号数编码处理。
本实施例提供的一种乘法器,乘法器通过数据扩展电路可以将接收到的数据进行扩展处理,并将扩展后的数据输入至正则有符号数编码电路,进行正则有符号数编码处理得到目标编码的部分积,并通过压缩电路对目标编码的部分积进行累加处理,得到乘法运算的目标运算结果,该过程能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够采用修正正则有符号数编码电路对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗。
图7为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述正则有符号数编码电路23,该正则有符号数编码电路23包括:正则有符号数编码子电路231和部分积获取子电路232,所述正则有符号数编码子电路231的输出端与所述部分积获取子电路232的第一输入端连接;
其中,所述正则有符号数编码子电路231用于对接收到的所述数据进行正则有符号数编码处理,得到目标编码,所述部分积获取子电路232用于根据所述目标编码得到目标编码的部分积。
具体的,上述正则有符号数编码子电路231接收到的数据可以是判断电路21输入的,还可以是数据扩展电路22输入的,并且接收到的数据可以为乘法运算中的乘数,并对该乘数进行正则有符号数编码处理,得到目标编码。
需要说明的是,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,正则有符号数编码子电路231接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,正则有符号数编码子电路231对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则正则有符号数编码子电路231可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于乘法器当前所处理数据的位宽加1。
另外,若乘法器接收到的数据位宽为2N,且当前可处理N位数据运算,则乘法器中的正则有符号数编码子电路231,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若乘法器当前可处理2N位数据运算,则乘法器中的正则有符号数编码子电路231,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
可选的,所述正则有符号数编码子电路231包括:第三数据输入端口2311和编码输出端口2312,所述第三数据输入端口2311用于接收进行正则有符号数编码处理的第一数据,所述编码输出端口2312用于输出对接收到的所述第一数据进行正则有符号数编码处理后,得到的所述目标编码。
可以理解的是,若第三数据输入端口2311接收到第一数据,则正则有符号数编码子电路231可以对该第一数据进行正则有符号数编码处理,目标编码,并将目标编码通过编码输出端口2312输出,上述第一数据可以为乘法运算中的乘数。可选的,正则有符号数编码子电路231可以通过第三数据输入端口2311接收乘法运算中的乘数,且正则有符号数编码子电路231可以对乘数进行正则有符号数编码处理。
例如,若乘法器接收到2N位的数据,且当前可处理N位数据运算,此时,正则有符号数编码子电路231得到的目标编码的数目可以等于(N+1),相当于将数据进行正则有符号数编码处理,得到的(N+1)位中间编码可以直接作为目标编码;若乘法器当前可处理2N位数据运算,此时,正则有符号数编码子电路231得到的目标编码的数目可以等于(2N+2),也就是对数据进行正则有符号数编码处理,得到的(2N+1)位中间编码需要进一步进行补数处理,得到(2N+2)位目标编码,其中,上述补数处理可以表征为对中间编码的最高位数值的高一位处补一位数值0。
本实施例提供的一种乘法器,乘法器通过正则有符号数编码电路可以对接收到的数据进行正则有符号数编码处理,得到目标编码的部分积,并通过压缩电路对目标编码的部分积进行累加处理,得到乘法运算的目标运算结果,该过程能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够采用正则有符号数编码子电路,对接收到的数据进行正则有符号数编码处理得到目标编码,使得部分积获取子电路根据目标编码得到目标编码的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗。
另一实施例提供的一种乘法器,其中,乘法器包括所述部分积获取子电路232,该部分积获取子电路232包括:低位部分积获取单元2321、低位选择器组单元2322、高位部分积获取单元2323以及高位选择器组单元2324;所述正则有符号数编码子电路231的第一输出端与所述低位部分积获取单元2321的第一输入端连接,所述低位选择器组单元2322的输出端与所述低位部分积获取单元2321的第二输入端连接,所述正则有符号数编码子电路231的第二输出端与所述高位部分积获取单元2323的第一输入端连接,所述高位选择器组单元2324的输出端与所述高位部分积获取单元2323的第二输入端连接。
其中,所述低位部分积获取单元2321用于根据接收到的所述目标编码中的低位目标编码以及第二数据,得到符号位扩展后的低位部分积,并根据所述符号位扩展后的低位部分积得到目标编码的低位部分积,所述低位选择器组单元2322用于选通所述符号位扩展后的低位部分积中的数值,所述高位部分积获取单元2323用于根据接收到的所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的高位部分积,并根据所述符号位扩展后的高位部分积得到目标编码的高位部分积,所述高位选择器组单元2324用于选通所述符号位扩展后的高位部分积中的数值。
具体的,上述低位部分积获取单元2321以及高位部分积获取单元2323均可以根据正则有符号数编码子电路231得到的目标编码,以及接收到第二数据,得到目标编码的部分积,该第二数据可以为乘法运算中的被乘数。可选的,若正则有符号数编码子电路231接收到的数据位宽为2N,乘法器当前可处理的数据位宽为N比特,则正则有符号数编码子电路231可以自动将接收到2N位数据,拆分成高N位数据以及低N位数据,分别对高N位数据以及低N位数据进行正则有符号数编码处理,得到的高位目标编码的数目等于N加1,得到的低位目标编码的数目也等于N加1;同时,高位目标编码得到的对应目标编码的高位部分积的数目可以等于(N+1),低位目标编码得到的对应目标编码的低位部分积的数目可以等于(N+1);若正则有符号数编码子电路231接收到的数据位宽为2N,乘法器当前可处理的数据位宽也为2N比特,则正则有符号数编码子电路231可以对接收到2N位数据进行正则有符号数编码处理,得到(2N+1)位的中间编码,并对中间编码进行补数处理后,将这(2N+2)位的编码作为目标编码,其中,补数处理可以表征为对数据的最高位数值的高一位处补数值0;也就是,目标编码中的最高位数值为信号0,该信号0对应的目标编码的部分积中包含的数值均为0;其中,(2N+2)位目标编码中高(N+1)位数值可以称为高位目标编码,低(N+1)位数值可以称为低位目标编码。
需要说明的是,上述低位选择器组单元2322可以根据接收到的功能选择模式信号,选通符号位扩展后的低位部分积中的低位部分位数值,为N位乘法运算得到的符号位扩展后的部分积中的数值,还是2N位乘法运算得到的符号位扩展后的部分积中的数值;同理,高位选择器组单元2324可以根据接收到的功能选择模式信号,选通符号位扩展后的高位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的部分积中的数值,还是2N位乘法运算得到的符号位扩展后的部分积中的数值。
可以理解的是,若乘法器接收到的数据位宽可以为2N比特,且当前可处理N位数据乘法运算,则乘法器中的低位部分积获取单元1121可以根据低位目标编码中的每一位数值,得到低N位数据对应的符号位扩展后的部分积;上述低位选择器组单元1122可以选通符号位扩展后的低位部分积中的数值;然后将符号位扩展后的部分积与选通后的符号位扩展后的低位部分积中的数值进行结合,得到符号位扩展后的低位部分积。可选的,乘法器中的高位部分积获取单元2323可以根据高位目标编码中的每一位数值,得到高N位数据对应的符号位扩展后的部分积;上述高位选择器组单元2324可以选通符号位扩展后的高位部分积中的数值;然后将符号位扩展后的部分积与选通后的符号位扩展后的高位部分积中的数值进行结合,得到符号位扩展后的高位部分积。可选的,正则有符号数编码处理过程中,得到的低位目标编码的数目可以等于得到的高位目标编码的数目,还可以等于低N位数据对应的符号位扩展后的低位部分积的数目,或高N位数据对应的符号位扩展后的高位部分积的数目。可选的,修正正则有符号数编码电路11中可以包含(N+1)个低位部分积获取单元2321,还可以包含(N+1)个高位部分积获取单元2323。可选的,上述每一个低位部分积获取单元2321和每一个高位部分积获取单元2323中,均可以包含2N个数值生成子单元,每一个数值生成子单元可以获取符号位扩展后的部分积中的一位数值。同时,低位部分积获取单元2321可以根据得到的符号位扩展后的低位部分积,确定对应的目标编码的低位部分积;高位部分积获取单元2323可以根据得到的符号位扩展后的高位部分积,确定对应的目标编码的高位部分积。
在本实施例中,低位部分积获取单元2321的内部电路结构及输出端口功能,与低位部分积获取单元1121的内部电路结构及输出端口功能相同,对此本实施例不再对低位部分积获取单元2321的具体结构进行描述。可选的,低位选择器组单元2322的内部电路结构及输出端口功能,与低位选择器组单元1122的内部电路结构及输出端口功能相同,对此本实施例不再对低位选择器组单元2322的具体结构进行描述。可选的,高位部分积获取单元2323的内部电路结构及输出端口功能,与高位部分积获取单元1123的内部电路结构及输出端口功能相同,对此本实施例不再对高位部分积获取单元2323的具体结构进行描述。可选的,高位选择器组单元2324的内部电路结构及输出端口功能,与高位选择器组单元1124的内部电路结构及输出端口功能相同,对此本实施例不再对高位选择器组单元2324的具体结构进行描述。
本实施例提供的一种乘法器,乘法器通过部分积获取子电路可以根据目标编码中的每一个数值得到对应的目标编码的部分积,并通过压缩电路可以对所有目标编码的部分积进行累加处理,得到乘法运算的目标运算结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够采用正则有符号数编码子电路,对接收到的数据进行正则有符号数编码处理得到目标编码,使得部分积获取子电路根据目标编码得到目标编码的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗。
图7为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述压缩电路24,该压缩电路24包括:华莱士树组子电路241和累加子电路242;其中,所述华莱士树组子电路241的输出端与所述累加子电路242的输入端连接;所述华莱士树组子电路241用于对所述目标编码的部分积进行累加处理得到累加运算结果,所述累加子电路242用于对所述累加运算结果进行累加处理得到所述目标运算结果。
具体的,上述华莱士树组子电路241可以对正则有符号数编码电路23得到的所有目标编码的部分积中的列数值进行累加处理得到两路输出结果,并通过累加子电路242对华莱士树组子电路241得到两路输出结果进行累加处理,得到乘法运算的目标运算结果。
本实施例提供的一种乘法器,乘法器通过华莱士树组子电路可以对目标编码的部分积进行累加运算处理,并通过累加子电路对累加运算结果进行再次累加处理,得到乘法运算的目标运算结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够得到目标编码的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗。
在其中一个实施例中,继续如图7所示乘法器的具体结构示意图,其中,乘法器包括所述华莱士树组子电路241,该华莱士树组子电路241包括:低位华莱士树单元2411、选择器2412以及高位华莱士树单元2413,多个所述低位华莱士树单元2411的输出端与所述选择器2412的输入端连接,所述选择器2412的输出端与所述高位华莱士树单元2413的输入端连接;其中,多个所述低位华莱士树单元2411用于对所述目标编码的部分积中的每一列数值进行累加运算,所述选择器2412用于选通高位华莱士树单元2413接收的进位输入信号,多个所述高位华莱士树单元2413用于对所述目标编码的部分积中的每一列数值进行累加运算。
具体的,每一个低位华莱士树单元2411的电路结构,可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现,该4-2压缩器可以有多个全加器组成;每一个高位华莱士树单元2413的电路结构,也可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现,该4-2压缩器可以有多个全加器组成。另外,低位华莱士树单元2411和高位华莱士树单元2413,均可以理解为是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,华莱士树组子电路241中高位华莱士树单元2413的数目可以等于乘法器当前处理的数据位宽N,还可以等于低位华莱士树单元2411的数目,并且各个低位华莱士树单元2411之间可以串行连接,各个高位华莱士树单元2413之间也可以串行连接。可选的,最后一个低位华莱士树单元2411的输出端与选择器2412的输入端连接,选择器2412的输出端与第一个高位华莱士树单元2413的输入端连接。可选的,华莱士树组子电路241中每一个低位华莱士树单元2411可以对所有目标编码的部分积中的对应列数值进行加法处理;每一个低位华莱士树单元2411可以输出两个信号,即进位信号Carryi与一个和位信号Sumi;其中,i可以表示每一个低位华莱士树单元2411对应的编号,第一个低位华莱士树单元2411的编号为0。可选的,每一个低位华莱士树单元2411接收到输入信号的数目可以等于目标编码的数目,或者目标编码的部分积的数目。其中,华莱士树组子电路241中高位华莱士树单元2413与低位华莱士树单元2411的数目之和,可以等于2N;所有目标编码的部分积中,从最低列至最高列的总列数可以等于2N,N个低位华莱士树单元2411可以对所有目标编码的部分积的低N列中的每一列数值进行累加运算,N个高位华莱士树单元2413可以对所有目标编码的部分积的高N列中的每一列数值进行累加运算。
示例性的,若乘法器接收到的数据位宽为N比特,并且当前乘法器可处理N位数据乘法运算,此时,选择器2412可以选通华莱士树组子电路241中的最后一个低位华莱士树单元2411,输出的进位输出信号CoutN-1作为华莱士树组子电路241中,第一个高位华莱士树单元2413接收到的进位输入信号CinN,还可以理解为,乘法器当前可以将接收到的N位数据作为一个整体进行运算;当前乘法器可处理N/2位数据乘法运算时,选择器2412可以选通0作为华莱士树组子电路241中,第一个高位华莱士树单元2413接收到的进位输入信号CinN,还可以理解为,乘法器当前可以将接收到的N位数据划分成高N/2位和低N/2位数据分别进行乘法运算,其中,从第一个低位华莱士树单元2411至最后一个低位华莱士树单元2411的对应编号i分别为0,1,2,…,N-1,从第一个高位华莱士树单元2413至最后一个高位华莱士树单元2413的对应编号i分别为N,N+1,…,2N-1。
需要说明的是,华莱士树组子电路241中每一个低位华莱士树单元2411和高位华莱士树单元2413,接收到的信号可以包括进位输入信号Cini,部分积数值输入信号,进位输出信号Couti。可选的,每一个低位华莱士树单元2411和高位华莱士树单元2413接收到的部分积数值输入信号,可以为所有目标编码的部分积中对应列的数值,每一个低位华莱士树单元2411和高位华莱士树单元2413输出的进位信号Couti的位数可以等于NCout=floor((NI+NCin)/2)-1。其中,NI可以表示该华莱士树单元的数据输入位数,NCin可以表示该华莱士树单元的进位输入位数,NCout可以表示该华莱士树单元最少的进位输出位数,floor(·)可以表示向下取整函数。可选的,华莱士树组子电路241中每一个低位华莱士树单元2411或高位华莱士树单元2413接收到的进位输入信号,可以为上一个低位华莱士树单元2411或高位华莱士树单元2413输出的进位输出信号,并且第一个低位华莱士树单元2411接收到的进位数输入信号为0。其中,第一个高位华莱士树单元2413接收到的进位数输入信号,可以通过乘法器当前所处理的数据位宽与乘法器接收到的数据位宽确定。
本实施例提供的一种乘法器,通过华莱士树组子电路可以对目标编码的部分积进行累加处理,并通过累加子电路对累加结果进行再次累加处理,得到乘法运算的目标运算结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,所述累加子电路242包括:加法器2421,所述加法器2421用于对所述累加运算结果进行加法运算。
具体的,加法器2421可以为不同位宽的加法器。可选的,加法器2421可以接收华莱士树组子电路241输出的两路信号,对两路输出信号进行加法运算,输出乘法运算的目标运算结果。可选的,上述加法器2421可以为超前进位加法器。
可选的,所述加法器2421包括:进位信号输入端口2421a、和位信号输入端口2421b以及运算结果输出端口2421c;所述进位信号输入端口2421a用于接收进位信号,所述和位信号输入端口2421b用于接收和位信号,所述运算结果输出端口2421c用于输出所述进位信号与所述和位信号进行累加处理得到的目标运算结果。
可选的,加法器2421可以通过进位信号输入端口2421a接收华莱士树组子电路241输出的进位信号Carry,通过和位信号输入端口2421b接收华莱士数组子电路241输出的和位信号Sum,并将进位信号Carry与和位信号Sum进行累加的结果,通过运算结果输出端口2421c输出。
需要说明的是,乘法运算时,乘法器可以采用不同位宽的加法器2421对华莱士树组子电路241输出的进位输出信号Carry与和位输出信号Sum进行加法运算,其中,上述加法器2421的可处理的数据位宽可以等于乘法器当前处理的数据位宽N的2倍。可选的,华莱士树组子电路241中的每一个华莱士树单元可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=0,…,2N-1,i为每一个华莱士树单元的对应编号,编号从0开始)。可选的,加法器1421接收到的Carry={[Carry0:Carry2N-2],0},也就是说,加法器1421接收到的进位输出信号Carry的位宽为2N,进位输出信号Carry中前2N-1位数值对应华莱士树组子电路241中前2N-1个华莱士树单元的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器2421接收到的和位输出信号Sum的位宽为N,和位输出信号Sum中的数值可以等于华莱士树组子电路241中每一个华莱士树单元的和位输出信号。
示例性的,若乘法器当前处理8*8的乘法运算,则加法器2421可以为16位超前进位加法器,如图6所示,华莱士树组子电路241可以输出16个华莱士树单元的和位输出信号Sum和进位输出信号Carry,但是,16位超前进位加法器接收到的和位输出信号可以为华莱士树组子电路241输出的完整和位信号Sum,接收到的进位输出信号可以为华莱士树组子电路241中,除去最后一个华莱士树单元输出的进位输出信号的所有进位输出信号与数值0结合后的进位信号Carry。其中,图6中Wallace_i表示华莱士树单元,i为华莱士树单元从0开始的编号,并且两两华莱士树单元之间连接的实线表示高位编号对应的华莱士树单元有进位输出信号,虚线表示高位编号对应的华莱士树单元没有进位输出信号,梯形电路表示二路选择器。
本实施例提供的一种乘法器,乘法器通过累加子电路可以对华莱士树组子电路输出的两路信号进行累加运算,输出乘法运算的目标运算结果,该乘法器能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积。
图8为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图1和图3所示的乘法器进行处理,本实施例涉及的是对不同位宽的数据进行乘法运算的过程。如图8所示,该方法包括:
S101、接收待处理数据以及功能选择模式信号,其中,所述功能选择模式信号用于指示乘法器当前可处理的数据位宽。
具体的,乘法器可以通过修正正则有符号数编码电路接收待处理数据,该数据可以为乘法运算中的乘数和被乘数。每一次乘法运算时,乘法器中的修正正则有符号数编码电路和修正压缩电路,均可以接收到相同的功能选择模式信号。可选的,上述待处理数据可以为定点数。若乘法器接收不同的功能选择模式信号,则表征乘法器可以处理不同位宽的数据运算,同时,不同选择模式信号与乘法器可处理不同位宽的数据之间的对应关系可以灵活设置,对此本实施例不作任何限定。例如,修正正则有符号数编码电路和修正压缩电路能够接收多种功能选择模式信号,以三种功能选择模式信号为例,可以分别为mode=00,mode=01,mode=10,则mode=00可以表征乘法器能够对16位数据进行处理,mode=01可以表征乘法器能够对32位数据进行处理,mode=10可以表征乘法器能够对64位数据进行处理,另外,mode=00也可以表征为乘法器能够对64位数据进行处理,mode=01也可以表征为乘法器能够对16位数据进行处理,mode=10可以表征乘法器能够对32位数据进行处理。
可选的,修正正则有符号数编码电路接收到的乘法运算中的乘数和被乘数的位宽可以为8比特,16比特,32比特,64比特,对此本实施例不做任何限定。其中,乘法运算中乘数的位宽可以等于乘法运算中被乘数的位宽。
S102、根据所述功能选择模式信号,判断所述待处理数据是否需要进行拆分处理。
具体的,乘法器可以根据接收到的功能选择模式信号,确定当前乘法器可处理的数据位宽,以判断是否需要对待处理数据进行拆分处理。其中,拆分处理可以表征为将待处理数据分成多组相同位宽的数据。
可选的,上述S102中根据所述功能选择模式信号,判断所述待处理数据是否需要进行拆分处理的步骤,可以包括:根据所述功能选择模式信号,判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等。
需要说明的是,上述根据功能选择模式信号,判断待处理数据是否需要进行拆分处理,实际上可以理解为,根据功能选择模式信号,判断待处理数据的位宽与乘法器可处理的数据位宽是否相等,若相等,则不需要对待处理数据进行拆分处理,否则,需要对待处理数据进行拆分处理。
S103、若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据。
可选的,在上述S102根据所述功能选择模式信号,判断所述待处理数据是否需要进行拆分处理的步骤之后,所述方法还包括:若所述待处理数据不需要进行拆分处理,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码。
具体的,若修正正则有符号数编码电路接收到的乘法运算中的乘数和被乘数的位宽,与乘法器接收到的功能选择模式信号对应可处理的数据位宽不相等,则乘法器可以根据乘法器当前可处理的数据位宽,将接收到的待处理数据自动划分成,与乘法器当前可处理的数据位宽相等的多组数据进行并行处理,其中,修正正则有符号数编码电路接收到的待处理数据的位宽可以大于乘法器当前可处理的数据位宽。可选的,上述并行处理可以表征为将划分后的每一组待处理数据据同时进行处理。若修正正则有符号数编码电路接收到的待处理数据的位宽,与乘法器接收到的功能选择模式信号对应可处理的数据位宽相等,则乘法器直接对完整的待处理数据进行后续处理,不需要对待处理数据进行拆分处理后再进行后续处理。
需要说明的是,若乘法器接收到的待处理数据的位宽为2N,当前可处理的数据位宽为2N,则乘法器中的正则有符号数编码子电路可以对完整的2N位数据进行正则有符号数编码处理,得到对应的目标编码。其中,上述正则有符号数编码处理可以表征为通过数值0,-1和1编码的数据处理过程。
同时,若对完整的2N位数据直接进行正则有符号数编码处理,得到的目标编码的数目可以等于(2N+2)比特,则高(N+1)位数据可以称为高位数据,低(N+1)位数据可以称为低位数据。
S104、对所述拆分后的数据进行正则有符号数编码处理,得到目标编码。
可选的,上述S104中对所述拆分后的数据进行正则有符号数编码处理,得到目标编码的步骤,可以包括:将所述拆分后的数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
具体的,若乘法器接收到的待处理数据的位宽为2N,当前可处理的数据位宽为N,则乘法器中的正则有符号数编码子电路可以自动将2N位数据拆分成高N位数据以及低N位数据,同时,分别对高N位数据和低N位数据进行正则有符号数编码处理,得到对应的高位目标编码以及低位目标编码。可选的,上述待处理数据进行拆分处理后可以包括待处理的高N位数据和待处理的低N位数据。其中,若待处理数据的位宽为2N,则高N位可以称为待处理的高位数据,低N位可以称为待处理的高位数据。
S105、根据所述目标编码以及所述拆分后的数据,得到目标编码的部分积。
具体的,上述目标编码的数目可以等于进行正则有符号数编码处理的数据位宽加1,并且目标编码的部分积可以等于目标编码的数目。
可选的,在继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码的步骤之后,所述方法还包括:根据所述目标编码以及所述待处理数据,得到所述目标编码的部分积。
需要说明的是,在乘法运算过程中,若不需要对待处理数据进行拆分处理,修正正则有符号数编码电路是直接对待处理数据进行正则有符号数编码处理,得到目标编码的,则修正正则有符号数编码电路可以根据待处理数据中的被乘数以及目标编码,得到目标编码的部分积。可选的,目标编码中包含的每一位数值可以有对应的目标编码的部分积。
S106、对所述目标编码的部分积进行累加处理,得到目标运算结果。
具体的,乘法器可以对所有目标编码的部分积中的列数值进行累加处理,得到目标运算结果。可选的,目标运算结果的位宽可以等于乘法器当前所处理数据位宽的2倍。
本实施例提供的一种数据处理方法,接收待处理数据以及功能选择模式信号,根据功能选择模式信号,判断待处理数据是否需要进行拆分处理,若待处理数据需要进行拆分处理,则对待处理数据进行拆分处理,得到拆分后的数据,对拆分后的数据进行正则有符号数编码处理,得到目标编码,根据目标编码以及拆分后的数据,得到目标编码的部分积,对目标编码的部分积进行累加处理,得到目标运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该方法能够对待处理数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
作为其中一个实施例,上述S104中对所述拆分后的数据进行正则有符号数编码处理,得到目标编码的步骤,具体可以包括:
S1041、对所述拆分后的数据进行正则有符号数编码处理,得到中间编码。
具体的,进行正则有符号数编码处理的拆分后的数据可以为乘法运算中的乘数。
S1042、根据所述中间编码以及所述功能选择模式信号,得到所述目标编码。
具体的,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,乘法器中的正则有符号数编码子电路接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,正则有符号数编码子电路对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则正则有符号数编码子电路可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于乘法器当前所处理数据的位宽加1。
另外,若乘法器接收到的数据位宽为2N,且当前可处理N位数据运算,则乘法器中的正则有符号数编码子电路,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若乘法器当前可处理2N位数据运算,则乘法器中的正则有符号数编码子电路,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
本实施例提供的一种数据处理方法,对所述拆分后的数据进行正则有符号数编码处理,得到中间编码,根据所述中间编码以及所述功能选择模式信号,得到所述目标编码,该方法能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该方法能够对数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
作为其中一个实施例,上述S105中根据所述目标编码以及所述拆分后的数据,得到目标编码的部分积的步骤,可以包括:根据低位目标编码以及所述拆分后的数据,得到目标编码的低位部分积;根据高位目标编码以及所述拆分后的数据,得到目标编码的高位部分积。
具体的,乘法器根据低位目标编码和拆分后的数据,得到原始低位部分积,并对原始低位部分积进行符号位扩展处理,得到符号位扩展后的部分积,进而根据所有符号位扩展后的部分积得到符号位扩展后的低位部分积。可选的,上述原始低位部分积可以为未进行符号位扩展的低位部分积,还可以理解为低位数据对应得到的未进行符号位扩展的部分积。可选的,符号位扩展后的部分积的位宽可以等于乘法器当前可处理数据位宽N的2倍,原始低位部分积的位宽可以等于N。可选的,符号位扩展后的部分积可以包括原始低位部分积中的N位数值和连续N位原始低位部分积中的符号位数值。
需要说明的是,若低位部分积获取单元接收到一个8位的被乘数x7x6x5x4x3x2x1x0(即X),则低位部分积获取单元可以根据被乘数x7x6x5x4x3x2x1x0(即X)与低位目标编码中包含的三种数值-1,1和0直接得到对应的原始低位部分积,当低位目标编码中的数值为-1时,则原始低位部分积可以为-X,当低位目标编码中的数值1时,则原始低位部分积可以为X,当低位目标编码中的数值0时,则原始低位部分积可以为0。
可以理解的是,低位选择器组单元中的每一个低位选择器可以根据接收到的不同功能选择模式信号,选通符号位扩展后的低位部分积中的对应位数值。可选的,低位部分积获取单元可以根据低位选择器组单元选通后得到的,符号位扩展后的低位部分积中的数值以及乘法器当前可处理对应位宽数据得到的符号位扩展后的部分积中的部分位数值,得到乘法器当前所处理对应位宽数据对应的目符号位扩展后的低位部分积。
进一步地,乘法器可以根据所有符号位扩展后的低位部分积,得到对应的目标编码的低位部分积,所有目标编码的低位部分积的分布规律可以表征为,第一个目标编码的低位部分积可以等于第一个符号位扩展后的低位部分积,即低位目标编码中最低位数值对应的符号位扩展后的低位部分积,从第二个目标编码的低位部分积开始,每一个目标编码的低位部分积中的最高位数值,与第一个目标编码的低位部分积中的最高位数值位于同一列,每一个目标编码的低位部分积,可以等于对应符号位扩展后的低位部分积,且该符号位扩展后的低位部分积的最低位数值,与上一个目标编码的低位部分积的次高位数值位于同一列,也就是,对应符号位扩展后的低位部分积超出第一个目标编码的低位部分积中最高列数值的多个数值不参与后续运算。
另外,乘法器根据接收到的高位目标编码和拆分后的数据,得到乘法器当前所处理不相同位宽数据对应的原始高位部分积,并对原始高位部分积进行符号位扩展处理得到符号位扩展后的部分积。可选的,上述原始高位部分积可以为未进行符号位扩展的高位部分积,还可以理解为高位数据对应得到的未进行符号位扩展的部分积。可选的,符号位扩展后的部分积的位宽可以等于乘法器可处理数据位宽N的2倍,原始高位部分积的位宽可以等于N。可选的,符号位扩展后的部分积可以包括原始高位部分积中的N位数值和N位原始高位部分积中的符号位数值。
需要说明的是,高位选择器组单元中的每一个高位选择器可以根据接收到的不同功能选择模式信号,选通符号位扩展后的高位部分积中的对应位数值。可选的,高位部分积获取单元可以根据高位选择器组单元选通后得到的,符号位扩展后的高位部分积中的数值以及乘法器当前可处理对应位宽数据得到的符号位扩展后的部分积中的部分位数值,得到乘法器当前所处理对应位宽数据对应的符号位扩展后的高位部分积。
进一步地,乘法器可以根据所有符号位扩展后的高位部分积,得到对应的目标编码的高位部分积,所有目标编码的高位部分积的分布规律可以表征为,第一个目标编码的高位部分积可以位于最后一个目标编码的低位部分积的下一个目标编码的部分积,即高位目标编码中的最低位数值对应的目标编码的部分积,第一个目标编码的高位部分积的位宽可以等于最后一个目标编码的低位部分积的位宽减1,也就是,第一个目标编码的高位部分积可以等于第一个符号位扩展后的高位部分积,且该符号位扩展后的高位部分积的最低位数值,与最后一个目标编码的低位部分积的次高位数值位于同一列,相当于,第一个符号位扩展后的高位部分积超出最后一个目标编码的低位部分积中最高列数值的多个数值不参与后续运算,从第二个目标编码的高位部分积开始,每一个目标编码的高位部分积中的最高位数值,与第一个目标编码的高位部分积中的最高位数值位于同一列,每一个目标编码的高位部分积,可以等于对应符号位扩展后的高位部分积,且该符号位扩展后的高位部分积的最低位数值,与上一个目标编码的高位部分积的次高位数值位于同一列,也就是,对应符号位扩展后的高位部分积超出第一个目标编码的高位部分积中最高列数值的多个数值不参与后续运算。
本实施例提供的一种数据处理方法,该方法能够获取的目标编码的有效部分积的数目较少,从而降低乘法运算的复杂性。
作为其中一个实施例,上述S106中对所述目标编码的部分积进行累加处理,得到目标运算结果的步骤,可以包括:
S1061、通过修正华莱士树组电路对所述目标编码的低位部分积以及所述目标编码的高位部分积进行累加处理,得到中间运算结果。
例如,对低位目标编码(位宽为(N+1))中最低位数值至最高位数值进行编号,最低位数值编号为1,最高位数值的编号为(N+1),则对应的目标编码的低位部分积的编号也类似,同时,对高位目标编码(位宽为(N+1))中最低位数值至最高位数值进行编号,最低位数值编号为1,最高位数值的编号为(N+1),则对应的目标编码的高位部分积的编号也类似,所有目标编码的低位部分积和所有目标编码的高位部分积的分布规律可以表征为编号为1的目标编码的高位部分积的最低位数值,与编号为(N+1)的目标编码的低位部分积的次低位数值位于同一列,在第一个目标编码的高位部分积的基础上,其它目标编码的高位部分积的次低位数值均与下一个目标编码的高位部分积的最低位数值位于同一列,在第一个目标编码的低位部分积的基础上,其它目标编码的低位部分积的次低位数值均与下一个目标编码的低位部分积的最低位数值位于同一列。
需要说明的是,修正华莱士树组电路可以对所有目标编码的低位部分积和所有目标编码的高位部分积中的每一列数值进行累加处理。
S1062、通过累加电路对所述中间运算结果进行累加处理,得到所述目标运算结果。
可选的,上述S1062中通过累加电路对所述中间运算结果进行累加处理,得到所述目标运算结果的步骤,具体可以包括:通过低位改进华莱士树子电路对所有目标编码的部分积中的列数值进行累加处理,得到累加运算结果;通过选择器对所述累加运算结果进行选通,得到进位选通信号;通过高位改进华莱士树子电路根据所述进位选通信号以及所述目标编码的部分积中的列数值进行累加处理,得到所述目标运算结果。
具体的,按照所有目标编码的低位部分积和所有目标编码的高位部分积的分布规律可知,所有目标编码的部分积对应数值的总列数为2N(N为乘法器当前所处理数据的位宽),从最低位数值开始每一列数值对应的编号可以为0,…,2N-1,其中,编号0至N-1可以称低N列数值。可选的,累加运算结果可以为低位改进华莱士树子电路中的最后一个改进华莱士树子电路输出的进位输出信号Cout。
需要说明的是,低位改进华莱士树子电路中包含的N个改进华莱士树子电路可以按照编号顺序对低N列数值进行累加运算,得到累加运算结果。可选的,累加运算结果可以包括每一个改进华莱士树子电路的进位输出信号Carry,Sum,以及低位改进华莱士树子电路中的最后一个改进华莱士树子电路的输出信号Cout。
可以理解的是,改进华莱士树组电路中的选择器可以根据接收到的功能选择模式信号,选通低位改进华莱士树子电路中的最后一个改进华莱士树子电路的输出信号Cout或数值0,得到进位选通信号。
在本实施例中,按照所有目标编码的部分积的分布规律可知,所有目标编码的部分积对应数值的总列数为2N(N为乘法器当前所处理数据的位宽),从最低位数值开始每一列数值对应的编号可以为0,…,2N-1,其中,编号N至2N-1可以称高N列数值。
需要说明的是,高位改进华莱士树子电路中包含的N个改进华莱士树子电路可以按照编号顺序对高N列数值进行累加运算,输出累加运算结果。其中,高位改进华莱士树子电路中的第一个高位改进华莱士树子电路接收到的进位输入信号可以为选择器输出的进位选通信号。
本实施例提供的一种数据处理方法,通过修正华莱士树组电路对目标编码的低位部分积以及目标编码的高位部分积进行累加处理,得到中间运算结果,通过累加电路对所述中间运算结果进行累加处理,得到目标运算结果,该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该方法能够获取的有效部分积的数目较少,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
图9为另一实施例提供的数据处理方法的流程示意图,该方法可以通过图2和图7所示的乘法器进行处理,本实施例涉及的是对不同位宽的数据进行乘法运算的过程。如图9所示,该方法包括:
S201、接收待处理数据。
具体的,乘法器中的判断电路可以接收到两个待处理数据,并且这两个待处理数据为乘法运算中的乘数和被乘数,同一次运算时,乘法器接收到的乘数和被乘数的位宽可以相同的。另外,乘法器中的正则有符号数编码电路以及压缩电路,还可以接收功能选择模式信号,不同的功能选择模式信号可以确定乘法器当前可处理不同位宽的数据。例如,正则有符号数编码电路以及压缩电路能够接收多种功能选择模式信号,以三种功能选择模式信号为例,可以分别为mode=00,mode=01,mode=10,则mode=00可以表征乘法器能够对16位数据进行处理,mode=01可以表征乘法器能够对32位数据进行处理,mode=10可以表征乘法器能够对64位数据进行处理,另外,mode=00也可以表征为乘法器能够对64位数据进行处理,mode=01也可以表征为乘法器能够对16位数据进行处理,mode=10可以表征乘法器能够对32位数据进行处理。
S202、判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等。
具体的,乘法器通过判断电路可以自动判断接收到的两个待处理数据的位宽,与乘法器当前可处理的数据位宽是否相等。在本实施例中,若乘法器可处理的数据位宽为2N比特,则判断电路接收到的待处理数据的位宽可以为N比特,还可以为2N比特。
S203、若不相等,则对所述待处理数据进行数据扩展处理,得到扩展后的数据。
具体的,若判断电路接收到的待处理数据的位宽,不等于乘法器可处理的数据位宽2N,则乘法器可以通过数据扩展电路对待处理数据进行数据扩展处理,将待处理数据扩展成2N比特位宽的数据。可选的,上述数据扩展处理可以表征为将小位宽数据用数值0或者其它数值补位,转换成大位宽的数据。
可选的,上述S203中对所述待处理数据进行数据扩展处理,得到扩展后的数据的步骤,具体可以包括:通过数值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、对所述扩展后的数据进行正则有符号数编码处理,得到目标编码的部分积。
具体的,乘法器可以通过正则有符号数编码电路对扩展后的数据进行正则有符号数编码处理,并根据接收到的待处理的被乘数和正则有符号数编码的结果得到目标编码的部分积。可选的,目标编码的部分积的数目可以等于乘法器当前所处理数据位宽2N加2,还可以等于乘法器当前所处理数据位宽N加1。
S205、对所述目标编码的部分积进行累加处理,得到目标运算结果。
具体的,乘法器可以通过压缩电路对目标编码的部分积进行累加处理,并得到目标运算结果。
示例性的,一乘法器可处理16比特位宽的数据,并且接收到的是两个8比特位宽的数据,乘法器通过数据扩展电路可以将接收到的两个8比特位宽的数据,扩展成两个16位比特位宽的数据,对其进行乘法运算后,可以得到一个32比特位宽的数据;若数据扩展电路将两个8比特位宽的数据,扩展成低8位数值均为数值0,高8位数据为接收到的8位数据,此时,数据扩展电路接收到的数据扩展模式选择信号为00,输出的功能选择模式信号也为00,并且乘法器可以截取32比特位宽数据中的高16位数据作为乘法运算的目标运算结果;若数据扩展电路将两个8比特位宽的数据,扩展成高8位数据均为数值0,低8位数据为接收到的数据,此时,数据扩展电路接收到的数据扩展模式选择信号为01,输出的功能选择模式信号也为00,并且乘法器可以截取32比特位宽数据中的低16位数据作为乘法运算的目标运算结果;若数据扩展电路将两个8比特位宽的数据,扩展成高8位数值均为接收到的8比特位宽的数据中的符号位数值,低8位数据为接收到的数据,此时,数据扩展电路接收到的数据扩展模式选择信号为10,输出的功能选择模式信号也为01,并且乘法器可以截取32比特位宽数据中的低16位数据作为乘法运算的目标运算结果。
本实施例提供的一种数据处理方法,接收待处理数据,判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等,若不相等,则对待处理数据进行数据扩展处理,得到扩展后的数据,对扩展后的数据进行正则有符号数编码处理,得到目标编码的部分积,对目标编码的部分积进行累加处理,得到目标运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,该方法能够对待处理数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
另一实施例提供的乘法运算方法,在判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等的步骤之后,所述方法还可以包括:若相等,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码的部分积。
具体的,如果乘法器接收到的待处理数据的位宽与乘法器当前可处理的数据位宽2N相等,则乘法器中的判断电路可以将接收到的待处理数据输入至正则有符号数编码电路,通过正则有符号数编码电路对待处理数据直接进行正则有符号数编码处理,得到目标编码的部分积。该种情况下,乘法器不需要对待处理数据进行数据扩展处理。
可选的,在继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码的部分积之后,所述方法还包括:对待处理数据进行正则有符号数编码处理,得到目标编码;根据所述待处理数据与所述目标编码,得到所述目标编码的部分积。
需要说明的是,如果乘法器接收到的待处理数据的位宽与乘法器当前可处理的数据位宽2N相等,此时,乘法器不需要对待处理数据进行数据扩展处理,可以直接对接收到的待处理数据进行正则有符号数编码处理,以便进行后续处理。
本实施例提供的一种数据处理方法,如果乘法器接收到的待处理数据的位宽与乘法器当前可处理的数据位宽相等,则正则有符号数编码电路可以直接对待处理数据进行正则有符号数编码处理,得到目标编码的部分积,对目标编码的部分积进行累加处理,得到目标运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,该方法能够对待处理数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
另一实施例提供的乘法运算方法,上述S204中对所述扩展后的数据进行正则有符号数编码处理,得到目标编码的部分积步骤,包括:
S2041、对所述扩展后的数据进行正则有符号数编码处理,得到目标编码。
具体的,乘法器可以通过正则有符号数编码子电路对扩展后的待处理乘数进行正则有符号数编码处理,得到目标编码。
可选的,上述S2041中对所述扩展后的数据进行正则有符号数编码处理,得到目标编码的步骤,可以包括:将所述扩展后的数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
具体的,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,乘法器中的正则有符号数编码子电路接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,正则有符号数编码子电路对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则正则有符号数编码子电路可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于乘法器当前所处理数据的位宽加1。
另外,若乘法器接收到的数据位宽为2N,且当前可处理N位数据运算,则乘法器中的正则有符号数编码子电路,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若乘法器当前可处理2N位数据运算,则乘法器中的正则有符号数编码子电路,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
S2042、根据所述扩展后的数据与所述目标编码,得到所述目标编码的部分积。
具体的,部分积获取子电路可以根据扩展后的待处理被乘数与目标编码,得到目标编码的部分积。需要说明的是,若乘法器接收到的待处理数据的位宽为N,当前可处理的数据位宽为2N,则乘法器需要对待处理的N位数据进行扩展处理,得到扩展后的2N位数据,再对2N位数据进行正则有符号数编码处理,得到对应的目标编码,该目标编码的数目可以等于(2N+2),得到的对应目标编码的部分积的数目也可以等于(2N+2)。
本实施例提供的一种数据处理方法,对扩展后的数据进行正则有符号数编码处理,得到编码,根据待处理数据与目标编码,得到目标编码的部分积,并对目标编码的部分积进行累加处理,得到目标运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,该方法能够对待处理数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
在其中一个实施例中,上述S2042中根据所述扩展后的数据与所述目标编码,得到所述目标编码的部分积的步骤,具体可以包括:
S2042a、根据所述扩展后的数据与所述目标编码,得到原始部分积。
具体的,原始部分积的数目可以等于目标编码的数目。可选的,原始部分积可以为未进行符号位扩展的部分积。可选的,上述扩展后的数据可以为乘法运算中的被乘数。
示例性的,若部分积获取子电路接收到一个8位的被乘数x7x6x5x4x3x2x1x0(即X),则部分积获取子电路可以根据被乘数x7x6x5x4x3x2x1x0(即X)与目标编码中包含的三种数值-1,1和0直接得到对应的原始部分积,当目标编码中的数值为-1时,则原始部分积可以为-X,当目标编码中的数值为1时,则原始部分积可以为X,当目标编码中的数值为0时,则原始部分积可以为0。
S2042b、对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积。
具体的,部分积获取子电路可以根据原始部分积的符号位数值对原始部分积进行符号位扩展处理,得到符号位扩展后的部分积。可选的,原始部分积的位宽可以等于乘法器当前所处理的数据位宽N,符号位扩展后的部分积的位宽可以等于2N。可选的,符号位扩展后的部分积中的低N位数值为原始部分积中的N位数值,符号位扩展后的部分积中的高N位数值均为原始部分积中的符号位数值。
S2024c、对所述符号位扩展后的部分积进行移位处理,得到所述目标编码的部分积。
具体的,每一个目标编码的部分积可以等于对应的符号位扩展后的部分积,还可以等于对应符号位扩展后的部分积中的部分位数值,其中,第一个目标编码的部分积可以等于第一个对应的符号位扩展后的部分积,从第二个目标编码的部分积开始,每一个目标编码的部分积中的最低位数值可以与上一个目标编码的部分积中的次低位数值位于同一列,相当于每一个符号位扩展后的部分积中的每一位数值,在上一个符号位扩展后的部分积中的每一位数值所处对应列的基础上,左移一列,并且每一个目标编码的部分积的最高位数值,与第一个目标编码的部分积中的最高位数值均位于同一列,其中,超出第一个目标编码的部分积中的最高位数值对应列的更高列的数值可以不参与累加运算。可选的,所有目标编码的部分积的列数可以等于乘法器当前所处理数据位宽的2倍。
本实施例提供的一种数据处理方法,根据拆分后的数据与目标编码,得到原始部分积,对原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到目标编码的部分积,进而对所有目标编码的部分积进行累加处理,得到目标运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,该方法能够获取的有效部分积的数目较少,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
另一实施例提供的数据处理方法,上述S205中对所述符号位扩展后的部分积进行累加处理,得到目标运算结果的步骤,可以包括:
S2051、通过华莱士树组子电路对所述目标编码的部分积进行累加处理,得到中间运算结果。
具体的,乘法器可以通过华莱士树组子电路对符号位扩展后的所有部分积,按照分布规律对每一列数值进行累加处理,得到中间运算结果。可选的,中间运算结果可以包括和位输出信号Sum与进位输出信号Carry,其中,和位输出信号Sum与进位输出信号Carry的位宽可以相同。
S2052、通过累加子电路对所述中间运算结果进行累加处理,得到所述目标运算结果。
具体的,乘法器可以通过累加子电路中的加法器对华莱士树组子电路输出的进位输出信号Carry与和位输出信号Sum进行加法运算,输出加法运算结果。
可选的,上述S2052中通过累加子电路对所述中间运算结果进行累加处理,得到所述目标运算结果的步骤,具体可以包括:通过华莱士树单元对所有目标编码的部分积中的列数值进行累加处理,得到累加运算结果;通过选择器对所述累加运算结果进行选通,得到进位选通信号;通过高位改进华莱士树子电路根据所述进位选通信号以及所述目标编码的部分积中的列数值进行累加处理,得到所述目标运算结果。
本实施例提供的一种数据处理方法,通过华莱士树组子电路对所述目标编码的部分积,进行累加处理得到中间运算结果,通过累加子电路对所述中间运算结果进行累加处理,得到目标运算结果,该方法能够对接收到的低位宽数据进行扩展处理,扩展处理后的数据满足乘法器可处理的数据位宽要求,使得目标运算结果仍然为原始位宽的数据进行乘法运算的结果,从而保证了乘法器能够处理低位宽数据的运算,有效减少了乘法器占用AI芯片的面积;同时,该方法能够获取的有效部分积的数目较少,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的乘法器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上乘法器时,乘法器间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图10为组合处理装置的示意图。
其它处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。
可选的,该结构如图11所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图12所示,图12提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4棵粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200棵粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接收装置与所述芯片封装结构内的芯片电连接。所述接收装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接收装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接收装置还可以是其它的接口,本申请并不限制上述其它的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接收装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备可以为乘法器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的电路组合,但是本领域技术人员应该知悉,本申请并不受所描述的电路组合方式的限制,因为依据本申请,某些电路可以采用其它方式或者结构实现。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的器件和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种乘法器,其特征在于,所述乘法器包括:修正正则有符号数编码电路和修正压缩电路,所述修正正则有符号数编码电路的输出端与所述修正压缩电路的输入端连接;其中,所述修正正则有符号数编码电路中包括第一输入端,用于接收功能选择模式信号;所述修正压缩电路中包括第一输入端,用于接收所述功能选择模式信号;所述功能选择模式信号用于确定所述乘法器可处理的数据位宽;
所述修正正则有符号数编码电路包括编码处理支路以及部分积获取支路,所述编码处理支路用于对接收到的数据进行正则有符号数编码处理,得到目标编码,所述部分积获取支路用于根据所述目标编码得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码的部分积,所述修正压缩电路用于对所述目标编码的部分积进行累加处理,得到目标运算结果。
2.根据权利要求1所述的乘法器,其特征在于,所述编码处理支路包括修正正则有符号数编码单元,所述部分积获取支路包括低位部分积获取单元、低位选择器组单元、高位部分积获取单元以及高位选择器组单元;所述修正正则有符号数编码单元的第一输出端与所述低位部分积获取单元的第一输入端连接,所述低位选择器组单元的输出端与所述低位部分积获取单元的第二输入端连接,所述修正正则有符号数编码单元的第二输出端与所述高位部分积获取单元的第一输入端连接,所述高位选择器组单元的输出端与所述高位部分积获取单元的第二输入端连接;
其中,所述修正正则有符号数编码单元用于对接收到的第一数据进行正则有符号数编码处理,以及根据接收到的所述功能选择模式信号,确定所述乘法器可处理数据的位宽,并根据所述乘法器可处理数据的位宽得到目标编码,所述低位部分积获取单元用于根据接收到的所述目标编码中的低位目标编码以及第二数据,得到符号位扩展后的低位部分积,并根据所述符号位扩展后的低位部分积得到目标编码的低位部分积,所述低位选择器组单元用于选通所述符号位扩展后的低位部分积中的数值,所述高位部分积获取单元用于根据接收到的所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的高位部分积,并根据所述符号位扩展后的高位部分积得到目标编码的高位部分积,所述高位选择器组单元用于选通所述符号位扩展后的高位部分积中的数值。
3.根据权利要求2所述的乘法器,其特征在于,所述修正正则有符号数编码单元包括:第一数据输入端口、第一模式选择信号输入端口、低位目标编码输出端口以及高位目标编码输出端口;所述第一数据输入端口用于接收所述第一数据,所述第一模式选择信号输入端口用于接收所述功能选择模式信号,所述低位目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述低位目标编码,所述高位目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述高位目标编码。
4.根据权利要求2或3所述的乘法器,其特征在于,所述低位部分积获取单元包括:低位目标编码输入端口、第一选通数值输入端口、第二模式选择信号输入端口、第二数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述低位目标编码,所述第一选通数值输入端口用于接收所述低位选择器组单元选通后,输出的所述符号位扩展后的低位部分积中包含的数值,所述第二模式选择信号输入端口用于接收所述功能选择模式信号,所述第二数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出所述目标编码的低位部分积。
5.根据权利要求4所述的乘法器,其特征在于,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对所述符号位扩展后的低位部分积中的数值进行选通。
6.根据权利要求2所述的乘法器,其特征在于,所述高位部分积获取单元包括:高位目标编码输入端口、第二选通数值输入端口、第三模式选择信号输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述高位目标编码,所述第二选通数值输入端口用于接收所述高位选择器组单元选通后,输出的所述符号位扩展后的高位部分积中包含的数值,所述第三模式选择信号输入端口用于接收所述功能选择模式信号,所述第二数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所述目标编码的高位部分积。
7.根据权利要求6所述的乘法器,其特征在于,所述高位选择器组单元包括:高位选择器,所述高位选择器用于对所述符号位扩展后的高位部分积中的数值进行选通。
8.根据权利要求1所述的乘法器,其特征在于,所述修正压缩电路包括:修正华莱士树组电路和累加电路,所述修正华莱士树组电路的输出端与所述累加电路的输入端连接;所述修正华莱士树组电路用于对不同位宽数据运算时,得到的所有目标编码的部分积中的每一列数值进行累加处理得到累加运算结果,所述累加电路用于对所述累加运算结果进行累加处理。
9.根据权利要求8所述的乘法器,其特征在于,所述修正华莱士树组电路包括:低位华莱士树子电路、选择器以及高位华莱士树子电路,所述低位华莱士树子电路的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子电路的输入端连接;其中,所述低位华莱士树子电路用于对所述目标编码的部分积中的每一列数值进行累加运算,所述选择器用于选通高位华莱士树子电路接收的进位输入信号,所述高位华莱士树子电路用于对所述目标编码的部分积中的每一列数值进行累加运算。
10.根据权利要求8所述的乘法器,其特征在于,所述累加电路包括:加法器,所述加法器用于对所述累加运算结果进行加法运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201921433507.0U CN210006031U (zh) | 2019-08-30 | 2019-08-30 | 乘法器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201921433507.0U CN210006031U (zh) | 2019-08-30 | 2019-08-30 | 乘法器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN210006031U true CN210006031U (zh) | 2020-01-31 |
Family
ID=69311365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201921433507.0U Active CN210006031U (zh) | 2019-08-30 | 2019-08-30 | 乘法器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN210006031U (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110531954A (zh) * | 2019-08-30 | 2019-12-03 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
-
2019
- 2019-08-30 CN CN201921433507.0U patent/CN210006031U/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110531954A (zh) * | 2019-08-30 | 2019-12-03 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN110531954B (zh) * | 2019-08-30 | 2024-07-19 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413254B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110515587B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110673823B (zh) | 乘法器、数据处理方法及芯片 | |
CN110531954B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110554854A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN111258544B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258633B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN210006031U (zh) | 乘法器 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113031912A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN209879493U (zh) | 乘法器 | |
CN210006029U (zh) | 数据处理器 | |
CN210109789U (zh) | 数据处理器 | |
CN111258545B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN210006030U (zh) | 数据处理器 | |
CN113031911B (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN113033799B (zh) | 数据处理器、方法、装置及芯片 | |
CN111258542B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110688087A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN113031916A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN113031915A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN210006084U (zh) | 乘法器 | |
CN210006082U (zh) | 乘法器、装置、神经网络芯片及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |