掌桥专利:专业的专利平台
掌桥专利
首页

乘法器、数据处理方法、装置及芯片

文献发布时间:2023-06-19 11:35:49


乘法器、数据处理方法、装置及芯片

技术领域

本申请涉及计算机技术领域,特别是涉及一种乘法器、数据处理方法、装置及芯片。

背景技术

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

通常,不同位宽数据的乘法运算时,需要采用对应位数现有乘法器进行运算。但是,针对低位宽的数据运算,不能采用可处理高位宽数据的现有乘法器进行乘法运算,乘法器的通用性较低,导致乘法器占用AI芯片的面积较大。

发明内容

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

本申请实施例提供一种乘法器,所述乘法器包括:改进正则有符号数编码电路、中间数据寄存器、压缩电路以及输出数据寄存器;所述改进正则有符号数编码电路的输出端与所述中间数据寄存器的输入端连接,所述中间数据寄存器的输出端与所述压缩电路的输入端连接,所述压缩电路的输出端与所述输出数据寄存器的输入端连接;所述改进正则有符号数编码电路用于对接收到的数据进行正则有符号数编码处理得到目标编码,并根据所述目标编码得到初始编码部分积,所述中间数据寄存器用于对所述初始编码部分积进行选择存取,并根据存取的所述初始编码部分积得到目标编码部分积,所述压缩电路用于对接收到的所述目标编码部分积进行累加处理得到乘法运算结果,所述输出数据寄存器用于存储所述乘法运算结果,并根据所述功能模式选择信号以及所述乘法运算结果确定输出目标运算结果。

在其中一个实施例中,所述改进正则有符号数编码电路、所述中间数据寄存器、所述压缩电路以及所述输出数据寄存器均包括第一输入端,用于接收功能模式选择信号,所述功能模式选择信号用于确定所述乘法器当前可处理的数据位宽。

在其中一个实施例中,所述改进正则有符号数编码电路包括:低位正则有符号数编码处理单元、低位部分积获取单元、选择器、高位正则有符号数编码处理单元以及高位部分积获取单元;所述低位正则有符号数编码处理单元的第一输出端与所述选择器的输入端连接,所述低位正则有符号数编码处理单元的第二输出端与所述低位部分积获取单元的输入端连接,所述选择器的输出端与所述高位正则有符号数编码处理单元的第一输入端连接,所述高位正则有符号数编码处理单元的输出端与所述高位部分积获取单元的输入端连接;

其中,所述低位正则有符号数编码处理单元用于对接收到的第一数据中的低位数据进行正则有符号数编码处理得到低位目标编码,所述低位部分积获取单元用于根据所述低位目标编码以及接收到的第二数据,得到初始编码低位部分积,所述选择器用于选通所述第一数据中的高位数据进行正则有符号数编码处理时的补位数值,所述高位正则有符号数编码处理单元用于对接收到的所述高位数据以及所述补位数值,进行正则有符号数编码处理得到高位目标编码,所述高位部分积获取单元用于根据所述高位目标编码以及接收到的所述第二数据,得到初始编码高位部分积。

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

在其中一个实施例中,所述低位部分积获取单元包括:低位目标编码输入端口、第二模式选择信号输入端口、第二数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述低位目标编码,所述第二模式选择信号输入端口用于接收所述功能模式选择信号,所述第二数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于将所述初始编码低位部分积输入至所述中间数据寄存器。

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

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

在其中一个实施例中,所述高位部分积获取单元包括:高位目标编码输入端口、第二数据输入端口以及高位部分积输出端口;高位目标编码输入端口、第二模式选择信号输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述高位目标编码,所述第二模式选择信号输入端口用于接收所述功能模式选择信号,所述第二数据输入端口用于接收乘法运算的数据,所述高位部分积输出端口用于将所述初始编码高位部分积输入至所述中间数据寄存器。

在其中一个实施例中,所述中间数据寄存器包括中间低位数据寄存器以及中间高位数据寄存器;所述中间低位数据寄存器用于根据所述功能模式选择信号,存储所述初始编码低位部分积中的数值,以得到目标编码低位部分积,所述中间高位数据寄存器用于根据所述功能模式选择信号,存储所述初始编码高位部分积中的数值,以得到目标编码高位部分积。

在其中一个实施例中,所述中间低位数据寄存器包括:模式选择信号输入端口、低位部分积输入端口以及目标低位部分积输出端口,所述模式选择信号输入端口用于接收所述功能模式选择信号,所述低位部分积输入端口用于根据所述功能模式选择信号接收所述初始编码低位部分积中的数值,所述目标低位部分积输出端口用于输出所述中间低位数据寄存器根据所述功能模式选择信号,接收到的所述初始编码低位部分积中的数值;所述中间高位数据寄存器包括:模式选择信号输入端口、高位部分积输入端口以及目标高位部分积输出端口,所述模式选择信号输入端口用于接收所述功能模式选择信号,所述高位部分积输入端口用于根据所述功能模式选择信号接收所述初始编码高位部分积中的数值,所述目标高位部分积输出端口用于输出所述中间高位数据寄存器根据所述功能模式选择信号,接收到的所述初始编码高位部分积中的数值。

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

在其中一个实施例中,所述华莱士树组电路包括:华莱士树单元;其中,华莱士树单元1用于对所述目标编码部分积中的每列数值进行累加运算得到累加运算结果。

在其中一个实施例中,所述华莱士树单元包括4-2压缩器以及模式选择单元,所述模式选择单元的输出端与所述4-2压缩器的输入端连接;所述4-2压缩器用于对所有目标编码部分积中的每列数值进行累加处理,所述模式选择单元用于选通所述4-2压缩器接收到的所述目标编码部分积中的数值;其中,所述模式选择单元中包括第一输入端,用于接收所述功能模式选择信号。

在其中一个实施例中,所述累加电路包括:加法器,所述加法器用于对所述累加运算结果进行加法运算。

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

在其中一个实施例中,所述输出数据寄存器包括:模式选择信号输入端口、运算结果输入端口以及目标结果输出端口;所述模式选择信号输入端口用于接收所述功能模式选择信号,所述运算结果输入端口用于根据所述功能模式选择信号接收所述乘法运算结果中的数值,所述目标结果输出端口用于输出根据所述功能模式选择信号接收到的所述乘法运算结果中的数值,作为所述目标运算结果。

本实施例提供的一种乘法器,乘法器通过改进正则有符号数编码电路对接收到的数据进行正则有符号数编码处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到初始编码部分积,通过压缩电路对对初始编码部分积进行存取,并根据存取的初始编码部分积得到目标编码部分积,通过压缩电路对接收到的目标编码部分积进行累加处理得到乘法运算结果,然后通过输出数据寄存器存储乘法运算结果,并根据功能模式选择信号以及乘法运算结果确定输出目标运算结果;该乘法器可以保证乘法运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。

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

接收待处理数据以及功能模式选择信号,其中,所述功能模式选择信号用于指示乘法器当前可处理的数据位宽;

根据所述功能模式选择信号选通待编码信号,根据所述待编码信号对所述待处理数据进行正则有符号数编码处理,得到目标编码;

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

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

根据所述功能模式选择信号存储所述乘法运算结果,以得到目标运算结果。

在其中一个实施例中,所述根据所述功能模式选择信号选通待编码信号,根据所述待编码信号对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:

根据所述功能模式选择信号选通待编码信号,并根据所述待编码信号与所述待处理数据,得到待编码低位数据以及待编码高位数据;

对所述待编码低位数据以及所述待编码高位数据进行正则有符号数编码处理,得到低位目标编码和高位目标编码。

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

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

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

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

根据所述目标编码和所述待处理数据得到原始部分积;

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

根据所述乘法器的输入端口位宽以及所述符号位扩展后的部分积,得到所述初始编码部分积;

根据所述功能模式选择信号以及所述初始编码部分积,得到目标编码部分积。

在其中一个实施例中,所述对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,包括:

对所述原始部分积进行符号位扩展处理,得到中间部分积;

对所述中间部分积进行符号位扩展处理,得到符号位扩展后的部分积。

在其中一个实施例中,所述根据所述乘法器的输入端口位宽以及所述符号位扩展后的部分积,得到所述初始编码部分积,包括:

根据所述乘法器的输入端口位宽,判断是否需要对所述符号位扩展后的部分积进行补零处理,得到所述初始编码部分积;

若需要,则对对所述符号位扩展后的部分积进行补零处理,得到所述初始编码部分积。

在其中一个实施例中,所述方法还包括:若不需要对所述符号位扩展后的部分积进行补零处理,则将所述符号位扩展后的部分积作为所述初始编码部分积。

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

通过华莱士树组电路对目标编码低位部分积和/或目标编码高位部分积,进行累加处理得到中间运算结果;

通过累加电路对所述中间运算结果进行累加处理,得到所述乘法运算结果。

在其中一个实施例中,所述根据所述功能模式选择信号存储所述乘法运算结果,以得到目标运算结果,包括:根据所述功能模式选择信号存储所述乘法运算结果或所述乘法运算结果中的数值,以得到所述目标运算结果。

本实施例提供的一种数据处理方法,该方法可以接收待处理数据以及功能模式选择信号,根据功能模式选择信号,判断待处理数据是否需要进行拆分处理,若待处理数据需要进行拆分处理,则对待处理数据进行拆分处理,得到拆分后的数据,对拆分后的数据进行正则有符号数编码处理得到目标编码,根据目标编码和所述拆分后的数据,得到目标编码部分积,对目标编码部分积进行累加处理,得到乘法运算结果;该方法能够根据乘法器接收到的功能模式选择信号对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。

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

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

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

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

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

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

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

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

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

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

附图说明

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

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

图3另一实施例提供的改进正则有符号数编码电路和中间数据寄存器的具体结构示意图;

图4为另一实施例提供的4位数据乘法运算得到的初始编码高位部分积以及初始编码低位部分积的分布方式示意图;

图5为另一实施例提供的8位数据运算时压缩电路的具体8位数据乘法运算得到的初始编码高位部分积以及初始编码低位部分积的分布方式示意图;

图6另一实施例提供的压缩电路和输出数据寄存器的具体电路结构图;

图7为另一实施例提供的华莱士树单元的电路结构示意图;

图8为另一实施例提供的压缩电路的具体电路结构示意图;

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

图10为另一实施例提供的得到目标编码的具体流程示意图;

图11为另一实施例提供的获取目标编码部分积的具体流程示意图;

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

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

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

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

具体实施方式

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

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

如图1所示,图1为一个实施例提供的一种乘法器的结构图。如图1所示,该乘法器包括:改进正则有符号数编码电路11、中间数据寄存器12、压缩电路13以及输出数据寄存器14;所述改进正则有符号数编码电路11的输出端与所述中间数据寄存器12的输入端连接,所述中间数据寄存器12的输出端与所述压缩电路13的输入端连接,所述压缩电路13的输出端与所述输出数据寄存器14的输入端连接;所述改进正则有符号数编码电路11、所述中间数据寄存器12、所述压缩电路13以及所述输出数据寄存器14均包括第一输入端,用于接收功能模式选择信号。可选的,所述功能模式选择信号用于确定所述乘法器当前可处理的数据位宽。

其中,所述改进正则有符号数编码电路11用于对接收到的数据进行正则有符号数编码处理得到目标编码,并根据所述目标编码得到初始编码部分积,所述中间数据寄存器12用于对所述初始编码部分积进行选择存取,并根据存取的所述初始编码部分积得到目标编码部分积,所述压缩电路13用于对接收到的所述目标编码部分积进行累加处理得到乘法运算结果,所述输出数据寄存器14用于存储所述乘法运算结果,并根据所述功能模式选择信号以及所述乘法运算结果确定输出目标运算结果。

可选的,继续参见图1所示,乘法器中的改进正则有符号数编码电路11包括编码处理支路111以及部分积获取支路112;所述编码处理支路111用于对接收到的数据进行正则有符号数编码处理,得到目标编码;所述部分积获取支路112用于根据所述目标编码得到初始编码部分积。

具体的,上述改进正则有符号数编码电路11可以包括两个具有不同功能的数据处理单元,即编码处理支路111以及部分积获取支路112,并且改进正则有符号数编码电路11接收到的数据均可以为定点数,且该数据可以作为乘法运算中的乘数,还可以作为乘法运算中的被乘数。可选的,编码处理支路111可以包括具有正则有符号数编码处理功能的单元,部分积获取支路112可以包括具有多个不同功能的数据处理单元。可选的,改进正则有符号数编码电路11可以接收多种不同比特位宽的数据,也就是说,本实施例提供的乘法器可以异步处理多种不同比特位宽数据的乘法运算。但是,同一次乘法运算时,改进正则有符号数编码电路11接收到的乘数和被乘数可以是同位宽的数据,即乘数和被乘数位宽相等。示例性的,本实施例提供的乘法器可以处理2比特、4比特、8比特、16比特等等位宽数据的乘法运算,对此本实施例不作任何限定。

需要说明的是,上述改进正则有符号数编码电路11可以接收乘法运算中的乘数和被乘数,并对乘数进行正则有符号数编码处理得到目标编码,根据目标编码以及接收到的被乘数得到初始编码部分积,该初始编码部分积的位宽可以等于乘法器当前所处理数据位宽的2倍。示例性的,一乘法器接收到8比特位宽的数据,且该乘法器当前可处理4位数据乘法运算,则乘法器中的改进正则有符号数编码电路11需要将8比特位宽的数据划分成,高4位和低4位的两个数据分别进行正则有符号数编码处理,得到的初始编码部分积的位宽可以等于乘法器接收到的数据位宽的2倍,高4位和低4位的两组数据分别得到的初始编码部分积的数量均可以等于5,即乘法器当前所处理数据的位宽加1;若该乘法器当前可处理8位数据乘法运算,则乘法器中的改进正则有符号数编码电路11需要对整体8位数据进行运算,此时,得到的初始编码部分积的位宽可以16比特,得到的初始编码部分积的数量可以等于10,即乘法器当前所处理数据的位宽加2。在本实施例中,上述正则有符号数编码处理可以表征为通过数值0,-1和1编码的数据处理过程。

可以理解的是,上述功能模式选择信号(mode信号)可以有多种,不同功能模式选择信号对应于乘法器当前可以处理不同位宽数据的乘法运算。可选的,同一次乘法运算时,改进正则有符号数编码电路11、中间数据寄存器12、压缩电路13以及输出数据寄存器14接收到的功能模式选择信号均可以相等。可选的,mode信号与乘法器当前可处理的数据位宽之间可以任意一一对应,对此本实施例不做任何限定。示例性的,若乘法器可以接收到的mode信号可以等于0或1;但是,在本实施例中,mode信号为0可以表征乘法器能够对4位数据进行处理,mode信号为1可以表征乘法器能够对8位数据进行处理。示例性的,如果改进正则有符号数编码电路11、中间数据寄存器12、压缩电路13以及输出数据寄存器14能够接收多种功能模式选择信号,以三种功能模式选择信号为例,可以分别为mode=00,mode=01,mode=10,则mode=00可以表征乘法器当前可处理4位数据运算,mode=01可以表征乘法器当前可处理8位数据运算,mode=10可以表征乘法器当前可处理16位数据运算,另外,mode=00也可以表征为乘法器当前可处理16位数据运算,mode=01也可以表征为乘法器当前可处理4位数据运算,mode=10可以表征乘法器当前可处理8位数据运算。

需要说明的是,改进正则有符号数编码电路11可以对乘数进行正则有符号数编码处理得到原始部分积,然后对原始部分积进行符号位扩展处理得到中间部分积,然后再对中间部分积进行符号位扩展处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到初始编码部分积。可选的,上述原始部分积的位宽可以等于N,该中间部分积的位宽可以等于乘法器当前所处理的数据位宽N的2倍;上述符号位扩展处理可以表征为对一个数据进行补符号位处理,补符号位数值等于该数据的最高位数值,即符号位数值;其中,中间部分积的高N位数值可以相等,低N位数值可以等于通过目标编码以及被乘数得到的原始部分积中的数值。若目标编码以及N位被乘数可以得到N位原始部分积,则中间部分积的高N位数值均可以等于原始部分积的最高位数值,中间部分积的低N位数值可以等于原始部分积的N位数值。

还可以理解的是,上述正则有符号数编码处理的方法可以通过以下方式表征:若乘法器接收到的数据位宽为2N,当前可处理N位数据,对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)

例如,编码处理支路111接收到的乘数为“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,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,编码处理支路111对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码);若新数据中的最高位数值和次高位数值为“10”或“01”,则编码处理支路111可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于乘法器当前所处理数据的位宽加1。另外,若当前乘法器接收到的数据位宽为2N,该乘法器当前可处理N位数据运算,则乘法器中的编码处理支路111,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若乘法器当前可处理2N位数据运算,则乘法器中的编码处理支路111,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。可选的,上述目标编码可以包括三种数值,分别为-1、0和1,当目标编码中的数值为-1时,则原始部分积可以为-X,当目标编码中的数值1时,则原始部分积可以为X,当目标编码中的数值0时,则原始部分积可以为0,,也就是原始部分积中的每位数值均等于0;其中,X为乘法器接收到的被乘数,目标编码中的每个数值均可以得到一个对应的原始部分积。另外,所有中间部分积在进行累加运算时累加结果可能会出现溢出的情况,其中,溢出位宽m可以大于等于0;上述符号位扩展后的部分积的位宽可以等于中间部分积的位宽与所有中间部分积在进行累加运算时溢出位宽m之和。可选的,上述初始编码部分积可以等于符号位扩展后的部分积,也可以等于符号位扩展后的部分积与多位数值0结合得到的数据。可选的,初始编码部分积的位宽可以等于乘法器接收到的数据位宽的2倍;若符号位扩展后的部分积的位宽不等于初始编码部分积的位宽,此时,对符号位扩展后的部分积进行补零处理;其中,补零处理可以表征为对符号位扩展后的部分积的高位处用数值0进行扩展处理。

还可以理解的是,上述中间数据寄存器12可以存取初始编码部分积,并根据接收到的功能模式选择信号确定输出初始编码部分积中的部分积位数值,即目标编码部分积。可选的,目标编码部分积可以等于符号位扩展后的部分积。

在本实施例中,压缩电路13可以通过4-2压缩器组成。可选的,1个4-2压缩器可以包括多个全加器以及选择电路,在一定条件下,4-2压缩器中的选择电路可以控制全加器为关闭状态,以提高华莱士树组电路的效率,减少时延。可选的,选择电路可以为多个选择器构成的电路,该选择器可以为二路选择器,并且选择电路可以接收功能模式选择信号,根据接收到的功能模式选择信号控制全加器的关闭状态。可选的,上述压缩电路13得到的乘法运算结果的位宽可以等于乘法器当前可处理数据位宽的2倍。

另外,上述输出数据寄存器14可以存储压缩电路13得到的乘法运算结果,并根据接收到的功能模式选择信号确定输出乘法运算结果中的数值,作为目标运算结果。可选的,上述目标运算结果的位宽可以等于中间部分积的位宽与所有中间部分积在进行累加运算时溢出位宽m之和。

本实施例提供的乘法器,乘法器通过改进正则有符号数编码电路对接收到的数据进行正则有符号数编码处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到初始编码部分积,通过压缩电路对对初始编码部分积进行存取,并根据存取的初始编码部分积得到目标编码部分积,通过压缩电路对接收到的目标编码部分积进行累加处理得到乘法运算结果,然后通过输出数据寄存器存储乘法运算结果,并根据功能模式选择信号以及乘法运算结果确定输出目标运算结果;该过程可以保证乘法运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积;同时,乘法器可以通过改进正则有符号数编码电路对接收到的数据进行正则有符号数编码处理,能够得到较少数量的有效部分积,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;另外,上述乘法器还可以通过中间数据寄存器存储有效部分积,以对有效部分积进行压缩处理得到乘法运算结果,进而通过输出数据寄存器控制输出乘法运算结果中的部分数据得到目标运算结果,实现了乘法器复用的功能,从而降低乘法器的功耗。

图2为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括编码处理支路111,所述编码处理支路111包括正则有符号数编码单元1111,所述部分积获取支路112包括低位部分积获取单元1121以及高位部分积获取单元1122;所述正则有符号数编码单元1111的输出端与所述低位部分积获取单元1121以及所述高位部分积获取单元1122输入端连接。

其中,所述正则有符号数编码单元1111用于根据接收到的所述功能模式选择信号,确定所述乘法器可处理数据的位宽,并对接收到的第一数据进行正则有符号数编码处理得到高位目标编码以及低位目标编码,所述低位部分积获取单元1121用于根据接收到的所述目标编码中的低位目标编码以及第二数据,得到符号位扩展后的低位部分积,并根据所述符号位扩展后的低位部分积得到初始编码低位部分积,所述高位部分积获取单元1122用于根据接收到的所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的高位部分积,并根据所述符号位扩展后的高位部分积得到初始编码高位部分积。

具体的,上述正则有符号数编码单元1111可以接收第一数据,并对该第一数据进行正则有符号数编码处理得到目标编码,该第一数据可以为乘法运算中的乘数。可选的,上述低位部分积获取单元1121可以根据正则有符号数编码单元1111得到的低位目标编码,以及接收到第二数据得到符号位扩展后的低位部分积,并根据符号位扩展后的低位部分积得到初始编码低位部分积;高位部分积获取单元1122可以根据正则有符号数编码单元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)位数值可以称为低位目标编码。

需要说明的是,低位部分积获取单元1121可以根据每个低位目标编码以及接收到的第二数据(即被乘数),得到低位数据对应的初始编码部分积。可选的,高位部分积获取单元1122可以根据每个高位目标编码以及接收到的第二数据,得到高位数据对应的初始编码部分积。可选的,正则有符号数编码处理过程中,得到的低位目标编码的位宽可以等于得到的高位目标编码的位宽,还可以等于低位数据对应的初始编码部分积的数量,以及高位数据对应的初始编码部分积的数量。可选的,部分积获取支路112中可以包含(N+1)个低位部分积获取单元1121,还可以包含(N+1)个高位部分积获取单元1122。可选的,上述每个低位部分积获取单元1121和每个高位部分积获取单元1122中,均可以包含2N个数值生成子单元,每个数值生成子单元可以获取初始编码部分积中的一个数值。其中,上述N均可以表示乘法器当前所处理数据的位宽。

本实施例提供的一种乘法器,乘法器通过改进正则有符号数编码电路中的改进正则有符号数编码单元,对接收到的数据进行正则有符号数编码处理得到目标编码,并且低位部分积获取单元和高位部分积获取单元根据目标编码中的低位目标编码及高位目标编码,得到初始编码部分积,进而通过中间数据寄存器对初始编码部分积进行存取后得到目标编码部分积,然后对目标编码部分积进行累加处理,得到乘法运算结果,最后对乘法运算结果进行存取得到目标运算结果,该过程可以保证乘法运算结果准确性的前提下,对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。

在其中一个实施例中,如图3为改进正则有符号数编码电路11和中间数据寄存器12的具体结构示意图,所述改进正则有符号数编码电路11包括编码处理支路111中的编码处理支路111包括正则有符号数编码单元1111,所述正则有符号数编码单元1111包括:第一数据输入端口1111a、第一模式选择信号输入端口1111b、低位目标编码输出端口1111c以及高位目标编码输出端口1111d;所述第一数据输入端口1111a用于接收所述第一数据,所述第一模式选择信号输入端口1111b用于接收所述功能模式选择信号,所述低位目标编码输出端口1111c用于输出对所述第一数据进行正则有符号数编码处理后得到的所述低位目标编码,所述高位目标编码输出端口1111d用于输出对所述第一数据进行正则有符号数编码处理后得到的所述高位目标编码。

具体的,乘法运算过程中,正则有符号数编码单元1111可以通过第一数据输入端口1111a接收第一数据,通过第一模式选择信号输入端口1111b接收功能模式选择信号,对第一数据进行正则有符号数编码处理得到中间编码,并根据接收到的功能模式选择信号判断是否需要对中间编码进行补数处理得到目标编码,进而通过低位目标编码输出端口1111c输出目标编码中的低位目标编码,通过高位目标编码输出端口1111d输出目标编码中的高位目标编码。需要说明的是,上述补数处理可以为对中间编码的最高位数值的高一位处补数值0。

本实施例提供的一种乘法器,该乘法器可以采用正则有符号数编码单元对接收到的数据进行正则有符号数编码处理,以降低乘法运算过程中获取的有效部分积的数量,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;同时,上述乘法器可以对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。

作为其中一个实施例,如图3为改进正则有符号数编码电路11和中间数据寄存器12的具体结构示意图,所述改进正则有符号数编码电路11中的部分积获取支路112包括低位部分积获取单元1121,所述低位部分积获取单元1121包括:低位目标编码输入端口1121a、第二模式选择信号输入端口1121b、第二数据输入端口1121c以及低位部分积输出端口1121d;所述低位目标编码输入端口1121a用于接收所述低位目标编码,所述第二模式选择信号输入端口1121b用于接收所述功能模式选择信号,所述第二数据输入端口1121c用于接收所述第二数据,所述低位部分积输出端口1121d用于将所述初始编码低位部分积输入至所述中间数据寄存器12。

具体的,低位部分积获取单元1121通过低位目标编码输入端口1121a,可以接收正则有符号数编码单元1111输出的低位目标编码,通过第二数据输入端口1121c接收乘法运算中的被乘数。可选的,低位部分积获取单元1121可以根据接收到的低位目标编码以及被乘数,得到低位数据对应的原始低位部分积,对原始低位部分积进行第一次符号位扩展处理得到中间低位部分积,再对中间低位部分积进行第二次符号位扩展处理,得到符号位扩展后的低位部分积,最后判断是否需要对符号位扩展后的低位部分积进行补零处理;若符号位扩展后的低位部分积的位宽与初始编码低位部分积的位宽相等时,则低位部分积获取单元1121不需要对符号位扩展后的低位部分积进行自动补零处理;若符号位扩展后的低位部分积的位宽小于初始编码低位部分积的位宽时,则低位部分积获取单元1121需要自动对符号位扩展后的低位部分积进行补零处理,补零的位数可以等于初始编码低位部分积的位宽减去符号位扩展后的低位部分积的位宽。可选的,上述第一次符号位扩展处理与第二次符号位扩展处理对应的补零位宽可以不相等。可选的,上述低位部分积获取单元1121可以包括2N个数值获取子单元,每个数值获取子单元可以得到初始编码低位部分积中的一位数值,其中,N可以表示乘法器当前所处理的数据位宽。

需要说明的是,若低位部分积获取单元1121中的第二数据输入端口1121c接收到的被乘数位宽为N,则中间低位部分积的位宽可以等于2N,中间低位部分积中高N位数值均为原始低位部分积中的符号位数值,即最高位数值。可选的,符号位扩展后的低位部分积可以等于中间低位部分积,还可以等于中间低位部分积与中间低位部分积中的符号位数值组合后的数据。可选的,上述符号位扩展后的低位部分积的位宽可以等于中间低位部分积的位宽与所有中间部分积在进行累加运算时溢出位宽m之和;其中,所有中间部分积可以包括中间低位部分积以及中间高位部分积。可选的,初始编码低位部分积的位宽可以等于乘法器能够接收到的数据位宽L的2倍(L>=N)。可选的,若符号位扩展后的低位部分积的位宽(即k)不等于2L,则对符号位扩展后的低位部分积中最高位数值的高位处补(2L-k)位数值0后,得到数值0与符号位扩展后的低位部分积组合后得到的初始编码低位部分积。示例性的,若低位部分积获取单元1121接收到一个N比特位宽的被乘数X,则低位部分积获取单元1121可以根据被乘数X与五类目标编码-2X,2X,-X,X和0直接得到对应的中间低位部分积。

在本实施例中,乘法器能够接收到的数据位宽(即乘法器的输入端口位宽)等于16比特,且乘法器当前可处理16位比特的数据,则乘法器中的低位部分积获取单元1121得到的初始编码低位部分积的位宽可以等于32,得到的符号位扩展后的低位部分积的位宽可以等于32,此时溢出位宽可以等于0;若乘法器当前可处理8位比特的数据,则乘法器中的低位部分积获取单元1121得到的符号位扩展后的低位部分积的位宽可以等于17,此时溢出位宽可以等于1;若乘法器当前可处理4位比特的数据,则乘法器中的低位部分积获取单元1121得到的符号位扩展后的低位部分积的位宽可以等于10,此时溢出位宽可以等于2;若乘法器当前可处理2位比特的数据,则乘法器中的低位部分积获取单元1121得到的符号位扩展后的低位部分积的位宽可以等于7,此时溢出位宽可以等于3。

本实施例提供的一种乘法器,乘法器中的低位部分积获取单元可以根据每个低位目标编码得到初始编码低位部分积,进而对初始编码低位部分积以及初始编码高位部分积进行处理,得到乘法运算结果,并通过输出数据寄存器存储乘法运算结果,根据接收到的功能模式选择信号得到目标运算结果,该过程能够保证乘法运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。

在其中一个实施例中,如图3为改进正则有符号数编码电路11和中间数据寄存器12的具体结构示意图,所述改进正则有符号数编码电路11包括部分积获取支路112,所述部分积获取支路112中的高位部分积获取单元1122包括:高位目标编码输入端口1122a、第二模式选择信号输入端口1121b、第二数据输入端口1122c以及高位部分积输出端口1122d;所述高位目标编码输入端口1122a用于接收所述正则有符号数编码单元1111输出的所述高位目标编码,所述第二模式选择信号输入端口1122b用于接收所述功能模式选择信号,所述第二数据输入端口1122c用于接收乘法运算的数据,所述高位部分积输出端口1122d用于将所述初始编码高位部分积输入至所述中间数据寄存器12。

具体的,上述目标编码可以包括低位目标编码和高位目标编码;上述原始部分积可以包括原始高位部分积以及原始低位部分积;上述中间部分积可以包括中间高位部分积以及中间低位部分积;上述符号位扩展后的部分积可以包括符号位扩展后的高位部分积以及符号位扩展后的部分积;上述初始编码部分积可以包括初始编码高位部分积以及初始编码低位部分积。

在本实施例中,高位部分积获取单元1122通过高位目标编码输入端口1122a可以接收正则有符号数编码单元1111输出的高位目标编码,并通过第二数据输入端口1122d可以接收乘法运算中的被乘数。可选的,高位部分积获取单元1122可以根据接收到的高位目标编码以及接收到的乘法运算中的被乘数,得到高位数据对应的原始高位部分积,对原始高位部分积进行第一次符号位扩展处理得到中间高位部分积,再对中间高位部分积进行第二次符号位扩展处理,得到符号位扩展后的高位部分积,最后判断是否需要对符号位扩展后的高位部分积进行补零处理;若符号位扩展后的高位部分积的位宽与初始编码高位部分积的位宽相等时,则高位部分积获取单元1122不需要对符号位扩展后的高位部分积进行自动补零处理;若符号位扩展后的低位部分积的位宽小于初始编码高位部分积的位宽时,则高位部分积获取单元1122需要自动对符号位扩展后的高位部分积进行补零处理,补零的位数可以等于初始编码高位部分积的位宽减去符号位扩展后的高位部分积的位宽。可选的,上述第一次符号位扩展处理与第二次符号位扩展处理对应的补零位宽可以不相等。可选的,上述高位部分积获取单元1122可以包括2N个数值获取子单元,每个数值获取子单元可以得到初始编码高位部分积中的一位数值,其中,N可以表示乘法器当前所处理的数据位宽。

示例性的,若乘法器能够接收8位数据,且乘法器当前可处理4位数据的乘法运算,则当前乘法器可处理4位*4位的高位数据乘法运算,以及4位*4位的低位数据乘法运算,该乘法器通过改进正则有符号数编码电路11得到的5个初始编码高位部分积,以及5个初始编码低位部分积的分布方式如图4所示,其中,“○”表示初始编码部分积中的无效位数值,即数值0,

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

作为其中一个实施例,如图3为改进正则有符号数编码电路11和中间数据寄存器12的具体结构示意图,所述中间数据寄存器12包括中间低位数据寄存器121以及中间高位数据寄存器122;所述中间低位数据寄存器121用于根据所述功能模式选择信号,存储所述初始编码低位部分积中的数值,以得到目标编码低位部分积,所述中间高位数据寄存器122用于根据所述功能模式选择信号,存储所述初始编码高位部分积中的数值,以得到目标编码高位部分积。

继续参见图3,其中,所述中间低位数据寄存器121包括:模式选择信号输入端口1211、低位部分积输入端口1212以及目标低位部分积输出端口1213,所述模式选择信号输入端口1211用于接收所述功能模式选择信号;所述低位部分积输入端口1212用于根据所述功能模式选择信号接收所述初始编码低位部分积中的数值;所述目标低位部分积输出端口1213用于输出所述中间低位数据寄存器121根据所述功能模式选择信号,接收到的所述初始编码低位部分积中的数值。可选的,继续参见图3所示,其中,所述中间高位数据寄存器122包括:模式选择信号输入端口1221、高位部分积输入端口1222以及目标高位部分积输出端口1223,所述模式选择信号输入端口1221用于接收所述功能模式选择信号;所述高位部分积输入端口1222用于根据所述功能模式选择信号接收所述初始编码高位部分积中的数值;所述目标高位部分积输出端口1223用于输出所述中间高位数据寄存器122根据所述功能模式选择信号,接收到的所述初始编码高位部分积中的数值。

具体的,中间数据寄存器12可以包括N/4个中间低位数据寄存器121,其中,N为乘法器能够接收到的数据位宽。可选的,中间低位数据寄存器121可以包括连续的2N个低位寄存单元,每个低位寄存单元可以存储初始编码低位部分积中的一位数值,连续的2N个低位寄存单元可以存储2N位初始编码低位部分积。可选的,2N个低位寄存单元均可以接收功能模式选择信号;若乘法器中的低位寄存单元接收到的功能模式选择信号,确定乘法器当前可处理N位数据运算,则中间低位数据寄存器121可以通过低位部分积输入端口1212接收初始编码低位部分积,并通过其中连续的2N个低位寄存单元,存储2N位初始编码低位部分积作为目标编码低位部分积,并且目标编码低位部分积可以通过目标低位部分积输出端口1213输出,此时相当于2N个低位寄存单元均为开启状态;若乘法器中的低位寄存单元接收到的功能模式选择信号,确定乘法器当前可处理N/2位数据运算,则2N个低位寄存单元中的部分低位寄存单元可以接收初始编码低位部分积中的部分位数值作为目标编码低位部分积,该部分积数值可以为符号位扩展后的低位部分积,此时相当于2N个低位寄存单元中部分低位寄存单元为开启状态;所有开启状态的低位寄存单元的数量可以等于符号位扩展后的低位部分积的位宽,2N个低位寄存单元中剩余低位寄存单元为关闭状态。

需要说明的是,中间数据寄存器12可以包括N/4个中间高位数据寄存器122,其中,N为乘法器能够接收到的数据位宽。可选的,中间高位数据寄存器122可以包括连续的2N个高位寄存单元,每个高位寄存单元可以存储初始编码高位部分积中的一位数值,连续的2N个高位寄存单元可以存储2N位初始编码高位部分积。可选的,2N个高位寄存单元均可以接收功能模式选择信号;若乘法器中的高位寄存单元接收到的功能模式选择信号,确定乘法器当前可处理N位数据运算,则中间高位数据寄存器122可以通过高位部分积输入端口1212接收初始编码高位部分积,并通过其中连续的2N个高位寄存单元,存储2N位初始编码高位部分积作为目标编码高位部分积,并且目标编码高位部分积可以通过目标高位部分积输出端口1213输出,此时相当于2N个高位寄存单元均为开启状态;若乘法器中的高位寄存单元接收到的功能模式选择信号,确定乘法器可处理N/2位数据运算,则2N个高位寄存单元中的部分高位寄存单元可以接收初始编码高位部分积中的部分位数值作为目标编码高位部分积,该部分积数值可以为符号位扩展后的高位部分积,此时相当于2N个高位寄存单元中部分高位寄存单元为开启状态;所有开启状态的高位寄存单元的数量可以等于符号位扩展后的高位部分积的位宽,2N个高位寄存单元中剩余高位寄存单元为关闭状态。可选的,寄存单元可以根据接收到的功能模式选择信号自动控制自身的关闭状态。

在本实施例中,所有目标编码低位部分积的分布方式可以表征为,从第二个目标编码低位部分积开始,每个目标编码低位部分积中的最高位数值,与第一个目标编码低位部分积中的最高位数值位于同一列,也就是,每个目标编码低位部分积中的数值,与第一个目标编码低位部分积中的对应位数值位于同一列,且所有目标编码低位部分积中的每列数值均参与后续运算。可选的,所有目标编码高位部分积的分布方式与所有目标编码低位部分积的分布方式相同,对此不再赘述。另外,所有目标编码低位部分积与所有目标编码高位部分积组合后,可以得到所目标编码部分积。

本实施例提供的一种乘法器,乘法器中的中间寄存器可以存储初始编码部分积中的部分数值,作为目标编码部分积,进而对目标编码部分积进行后续处理,得到目标运算结果;该过程可以根据接收到的功能模式选择信号控制中间寄存器中部分寄存单元的关闭状态,从而降低乘法器的功耗。

作为其中一个实施例,如图6所示压缩电路13和输出数据寄存器14的具体结构示意图,其中,所述压缩电路13包括:华莱士树组电路131和累加电路132,所述华莱士树组电路131的输出端与所述累加电路132的输入端连接;所述华莱士树组电路131用于对不同位宽数据运算时,得到的所有目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路132用于对所述累加运算结果进行累加处理得到所述乘法运算结果。

具体的,上述华莱士树组电路131可以对改进正则有符号数编码电路11得到的目标编码部分积中的每列数值进行累加处理,并通过累加电路132对华莱士树组电路131得到的两个运算结果进行累加处理,得到乘法运算结果。需要说明的是,所有目标编码部分积的列数可以等于符号位扩展后的部分积的位宽。可选的,若乘法器能够接收到的数据位宽为N,且乘法器当前可处理的数据位宽为N,则华莱士树组电路131可以将目标编码低位部分积以及目标编码高位部分积作为目标编码部分积进行累加运算;而若乘法器当前可处理的数据位宽为N/2时,则乘法器可以异步得到两组目标编码部分积,然后乘法器通过华莱士树组电路131可以分别对两组目标编码部分积进行累加运算。

本实施例提供的一种乘法器,乘法器通过华莱士树组电路可以对目标编码部分积进行累加处理,并通过累加电路对累加结果进行再次累加处理,得到乘法运算结果,进而根据乘法运算结果得到目标运算结果;该过程可以对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积;同时,该乘法器能够获取的有效部分积的数量较少,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗。

在其中一个实施例中,如图6所示压缩电路13和输出数据寄存器14的具体结构示意图,其中,所述压缩电路13包括华莱士树组电路131,所述华莱士树组电路131包括:多个华莱士树单元1311;其中,多个华莱士树单元1311用于对所述目标编码部分积中的每列数值进行累加运算得到累加运算结果。

可选的,所述华莱士树单元1311包括4-2压缩器以及选择模式单元,所述选择模式单元的输出端与所述4-2压缩器的输入端连接;所述4-2压缩器用于对所有目标编码部分积中的每列数值进行累加处理,所述选择模式单元用于选通所述4-2压缩器接收到的所述目标编码部分积中的数值;其中,所述选择模式单元中包括第一输入端,用于接收所述功能选择模式信号。

具体的,每个华莱士树单元1311可以由多个4-2压缩器以及一个选择模式电路组合实现;另外,还可以理解为,每个华莱士树单元1311中的多个4-2压缩器,均可以对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路;同时,每个4-2压缩器的电路结构可以通过两个全加器组合实现。可选的,华莱士树组电路131可以包括多个低位华莱士树单元和多个高位华莱士树单元;其中,高位华莱士树单元的数量可以等于乘法器当前接收到的数据位宽N,还可以等于低位华莱士树单元的数量,并且各低位华莱士树单元之间可以串行连接,各高位华莱士树单元之间也可以串行连接。可选的,最后一个低位华莱士树单元的输出端与第一个高位华莱士树单元的输入端连接。可以理解的是,华莱士树组电路131中的每个华莱士树单元1311均可以接收功能选择模式信号。可选的,华莱士树组电路131中华莱士树单元1311的数量可以等于乘法器能够接收到的数据位宽的2倍,并且各个华莱士树单元1311之间可以串行连接。可选的,华莱士树组电路131中每个华莱士树单元1311可以对所有目标编码部分积中的其中一列数值进行加法运算;每个华莱士树单元1311可以输出两个信号,即进位信号Carry

示例性的,若乘法器能够接收到的数据位宽为N,并且乘法器当前可处理N位数据乘法运算,此时,乘法器得到的目标编码部分积的位宽可以等于2N,华莱士树组电路131中华莱士树单元1311的数量可以等于2N,且每个华莱士树单元1311可以对所有目标编码部分积中的对应列数值进行累加运算;所有目标编码部分积中的最低列数值对应编号为0,最高列数值对应编号为2N-1;从第一个华莱士树单元1311至最后一个华莱士树单元1311的对应编号i分别可以表示为0,1,…,2N-1;2N个华莱士树单元1311中编号为0的第一个华莱士树单元1311,可以对所有目标编码部分积中的最低列数值进行累加运算,所有目标编码部分积中的其它列数值可以依次往后通过对应的华莱士树单元1311进行累加运算,该种情况下,华莱士树组电路131中的2N个华莱士树单元1311均为开启状态;若乘法器当前可处理N/2位数据乘法运算时,2N个华莱士树单元1311中部分华莱士树单元1311为开启状态,从华莱士树单元1311对应编号为0开始向后的部分华莱士树单元1311为开启状态,保持开启状态的华莱士树单元1311的数量可以等于目标编码部分积的位宽,2N个华莱士树单元1311中剩余华莱士树单元1311为关闭状态,此时,华莱士树组电路131输出的结果为最后一个为开启状态的华莱士树单元1311输出的结果。

需要说明的是,华莱士树组电路131中每个华莱士树单元1311,接收到的信号均可以包括进位输入信号Cin

另外,每个华莱士树单元均可以通过电路结构中的选择模式电路选通所有目标编码部分积中对应列的其中一位数值,并将该位数值输入至4-2压缩器中的全加器,以选通低电平信号,使得该全加器的输入信号均为低电平信号,相当于关闭了该全加器。

示例性的,在神经网络运算中,神经网络运算数据为零或接近零的数据比较多,经过稀疏化和/或压缩后为零或接近零的数据会更多。神经网络运算数据中大量数据转换为二进制数据后,一乘法器可以对转换后的二进制数据进行两种不同位宽的数据运算,即8比特位宽数据(对应mode=00)和16比特位宽数据(对应mode=11),并且该乘法器接收到的乘数和被乘数均为8比特位宽的数据,该乘法器中多个华莱士树单元的电路结构图均可以参见图7所示,图中~mode表示对mode信号取反,例如,若mode为高电平信号,则~mode为低电平信号,若mode为低电平信号,则~mode为高电平信号。另外,乘法器无论进行8位宽数据运算还是16位宽数据运算,均可以得到18个目标编码部分积,所有目标编码部分积中的其中一列数值分别为I

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

继续参见图6所示,图6为压缩电路13和输出数据寄存器14的具体电路结构图,其中,所述压缩电路13中的累加电路132包括:加法器1321,所述加法器1321用于对所述累加运算结果进行加法运算。

具体的,加法器1321可以为不同位宽的进位加法器。可选的,加法器1321可以接收华莱士树组电路131输出的两路信号,对两路输出信号进行加法运算,输出乘法运算结果。在本实施例中,加法器1321可以为Z位超前进位加法器,其中,Z可以等于乘法器能够接收到的数据位宽的2倍。可选的,若累加运算结果的位宽等于Z,则加法器1321可以对累加运算结果直接进行加法运算;若累加运算结果的位宽小于Z,则加法器1321可以自动对累加运算结果进行补零处理,补零的位置可以为累加运算结果中最高位数值的更高位处,补零的位数可以等于Z减去累加运算结果的位宽。

本实施例提供的一种乘法器,乘法器通过累加电路可以对华莱士树组电路输出的两路信号进行累加处理得到乘法运算结果,进而乘法器中的输出数据寄存器根据功能选择模式信号,接收乘法运算结果中的部分位数值,以得到目标运算结果;该过程可以对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。

在其中一个实施例中,继续参见图6所示,图6为压缩电路13和输出数据寄存器14的具体电路结构图,其中,所述压缩电路13中的加法器1321包括:进位信号输入端口1321a、和位信号输入端口1321b、运算结果输出端口1321c以及选择模式信号输入端口1321d;所述进位信号输入端口1321a用于接收进位信号,和位信号输入端口1321b用于接收和位信号,所述运算结果输出端口1321c用于输出所述进位信号与所述和位信号进行累加处理得到的所述乘法运算结果;所述选择模式信号输入端口1321d用于接收所述功能选择模式信号。

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

需要说明的是,乘法运算时,乘法器能够接收到的数据位宽为N,当前可处理的数据位宽为N,且乘法器可以采用不同位宽的加法器1321对华莱士树组电路131输出的进位输出信号Carry与和位输出信号Sum进行加法运算。可选的,华莱士树组电路131中的每个华莱士树单元1311,可以输出一个进位输出信号Carry

示例性的,若乘法器能够接收的数据位宽为8,且乘法器当前可处理8位*8位的定点数乘法运算,则加法器1321可以为16位超前进位加法器,如图8所示为的具体结构示意图,其中,压缩电路13中的华莱士树组电路131可以输出16个华莱士树单元1311的和位输出信号Sum和进位输出信号Carry,但是,16位进位加法器接收到的和位输出信号,可以为华莱士树组电路131输出的完整和位信号Sum,接收到的进位输出信号可以为华莱士树组电路131中,除去最后一个华莱士树单元1311输出的进位输出信号的所有进位输出信号,与数值0结合后的进位信号Carry。

本实施例提供的一种乘法器,乘法器通过累加电路可以对华莱士树组电路输出的两路信号进行累加运算得到乘法运算结果,进而乘法器中的输出数据寄存器根据功能选择模式信号,接收乘法运算结果中的部分位数值,以得到目标运算结果;该过程可以对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。

作为其中一个实施例,如图6所示为压缩电路13和输出数据寄存器14的具体电路结构图,其中,所述输出数据寄存器14包括:模式选择信号输入端口141、运算结果输入端口142以及目标结果输出端口143,所述模式选择信号输入端口141用于接收所述功能模式选择信号,所述运算结果输入端口142用于根据所述功能模式选择信号接收所述乘法运算结果中的数值,所述目标结果输出端口143用于输出根据所述功能模式选择信号接收到的所述乘法运算结果中的数值,作为所述目标运算结果。

具体的,输出数据寄存器14可以包括连续的2N个寄存单元,其中,N为乘法器能够接收到的数据位宽。可选的,每个寄存单元可以存储乘法运算结果中的一位数值,连续的2N个寄存单元可以存储2N位乘法运算结果。可选的,2N个寄存单元均可以接收功能模式选择信号;若乘法器中的寄存单元接收到的功能模式选择信号,确定乘法器当前可处理N位数据运算,则输出数据寄存器14可以通过运算结果输入端口142接收乘法运算结果,并通过其中连续的2N个寄存单元,存储2N位乘法运算结果作为目标运算结果,并且目标运算结果可以通过目标结果输出端口143输出,此时相当于2N个寄存单元均为开启状态;若乘法器中的寄存单元接收到的功能模式选择信号,确定乘法器当前可处理N/2位数据运算,则N个寄存单元中的部分寄存单元可以接收乘法运算结果中的部分位数值作为目标运算结果,该部分积数值的位宽可以为乘法运算结果中的低n位数值,n可以等于N与所有中间部分积在进行累加运算时溢出位宽m之和,此时相当于2N个低位寄存单元中对应n个寄存单元为开启状态,2N个寄存单元中剩余寄存单元为关闭状态。

本实施例提供的一种乘法器,乘法器中的输出数据寄存器根据功能模式选择信号,接收乘法运算结果中的部分位数值,得到目标运算结果,以实现乘法器复用的功能,从而降低乘法器的功耗。

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

S101、接收待处理数据以及功能模式选择信号,其中,所述功能模式选择信号用于指示当前可处理数据的位宽。

具体的,乘法器可以通过改进正则有符号数编码电路接收待处理数据,该待处理数据可以为乘法运算中的乘数和被乘数。每次乘法运算时,乘法器还可以通过改进正则有符号数编码电路、中间数据寄存器、压缩电路以及输出数据寄存器接收不同的功能模式选择信号;但是,同一次运算时,改进正则有符号数编码电路、中间数据寄存器、压缩电路以及输出数据寄存器接收到的功能模式选择信号可以相同。若乘法器接收不同的功能模式选择信号,则乘法器可以处理不同位宽的数据运算。

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

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

示例性的,如果改进正则有符号数编码电路、中间数据寄存器、压缩电路以及输出数据寄存器接收到的功能模式选择信号可以等于0和1,还可以通过其它形式表示;但是,在本实施例中,mode信号为0可以表征乘法器当前可处理4位数据运算,mode信号为1可以表征乘法器当前可处理8位数据运算。

S102、根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理。

具体的,乘法器可以根据接收到的功能模式选择信号,确定当前乘法器可处理的数据位宽,以判断是否需要对待处理数据进行拆分处理。其中,拆分处理可以表征为将待处理数据分成多组相同位宽的数据。

可选的,上述S102中根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理的步骤,可以包括:根据所述功能模式选择信号,判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等。

需要说明的是,上述根据功能模式选择信号,判断待处理数据是否需要进行拆分处理,实际上可以理解为,根据功能模式选择信号,判断待处理数据的位宽与乘法器可处理的数据位宽是否相等;若相等,则不需要对待处理数据进行拆分处理,否则,需要对待处理数据进行拆分处理。

S103、若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据。

可选的,在上述S102根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理的步骤之后,所述方法还包括:若所述待处理数据不需要进行拆分处理,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码。

具体的,若乘法器中的改进正则有符号数编码电路,接收到的乘法运算中的乘数和被乘数的位宽,与乘法器接收到的功能模式选择信号对应可处理的数据位宽不相等,则乘法器可以根据乘法器当前可处理的数据位宽,将接收到的待处理数据自动划分成,与乘法器当前可处理的数据位宽相等的多组数据进行异步处理;其中,改进正则有符号数编码电路接收到的待处理数据的位宽可以大于乘法器当前可处理的数据位宽。若改进正则有符号数编码电路接收到的待处理数据的位宽,与乘法器接收到的功能模式选择信号对应可处理的数据位宽相等,则乘法器直接对完整的待处理数据进行后续处理,不需要对待处理数据进行拆分处理后再进行后续处理。

需要说明的是,若乘法器接收到的待处理数据的位宽为2N,当前可处理的数据位宽为2N,则乘法器中的正则有符号数编码单元可以对完整的2N位数据进行正则有符号数编码处理,得到对应的目标编码。其中,上述正则有符号数编码处理可以表征为通过数值0,-1和1编码的数据处理过程。

同时,若对完整的2N位数据直接进行正则有符号数编码处理时,则高N位数据可以称为高位数据,低N位数据可以称为低位数据;在本实施例中,拆分后的数据可以包括待处理数据中的高位数据以及低位数据。

S104、对所述拆分后的数据进行正则有符号数编码处理,得到目标编码。

具体的,若乘法器接收到的待处理数据的位宽为2N,且乘法器当前可处理的数据位宽为N,则乘法器中的正则有符号数编码单元可以自动将2N位数据拆分成高N位数据以及低N位数据,进而分别对高N位数据和低N位数据进行正则有符号数编码处理,得到对应的高位目标编码以及低位目标编码。可选的,上述待处理数据进行拆分处理后可以包括待处理的高N位数据和待处理的低N位数据。其中,若待处理数据的位宽为2N,则高N位可以称为待处理的高位数据,低N位可以称为待处理的高位数据。

S105、根据所述目标编码和所述拆分后的数据,得到目标编码部分积。

具体的,上述目标编码可以低位目标编码和高位目标编码。可选的,上述目标编码部分积的位宽可以等于乘法器的输入端口位宽的2倍,还可以小于乘法器的输入端口位宽的2倍。可选的,上述目标编码部分积的数量可以等于目标编码的位宽。

可选的,上述S105中根据所述目标编码和所述待处理数据,得到目标编码部分积的步骤,可以包括:根据所述低位目标编码和所述待处理数据,得到目标编码低位部分积;根据所述高位目标编码和所述待处理数据,得到目标编码高位部分积。

需要说明的是,乘法器中的改进正则有符号数编码电路可以根据低位目标编码和待处理的被乘数,得到目标编码低位部分积,还可以根据高位目标编码和待处理的被乘数,得到目标编码高位部分积。

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

具体的,乘法器可以通过压缩电路对目标编码部分积进行累加处理,并得到乘法运算结果。可选的,乘法运算结果的位宽可以等于乘法器的输入端口位宽的2倍。

S107、根据所述功能模式选择信号存储所述乘法运算结果,以得到目标运算结果。

可选的,上述S107中根据所述功能模式选择信号存储所述乘法运算结果,以得到目标运算结果的步骤,具体可以包括:根据所述功能模式选择信号存储所述乘法运算结果或所述乘法运算结果中的数值,以得到所述目标运算结果。

具体的,若乘法器接收到的功能模式选择信号确定乘法器可处理的数据位宽,等于乘法器的输入端口位宽时,则乘法器中的输出数据寄存器可以存储乘法运算结果,并将乘法运算结果作为目标运算结果;若乘法器接收到的功能模式选择信号确定乘法器可处理的数据位宽,小于乘法器的输入端口位宽时,则乘法器中的输出数据寄存器可以存储乘法运算结果中的部分低位数值,并将这些数值作为目标运算结果。

本实施例提供的一种数据处理方法,该方法可以接收待处理数据以及功能模式选择信号,根据功能模式选择信号,判断待处理数据是否需要进行拆分处理,若待处理数据需要进行拆分处理,则对待处理数据进行拆分处理,得到拆分后的数据,对拆分后的数据进行正则有符号数编码处理得到目标编码,根据目标编码和所述拆分后的数据,得到目标编码部分积,对目标编码部分积进行累加处理,得到乘法运算结果;该方法能够根据乘法器接收到的功能模式选择信号对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积;同时,该可以对接收到的数据进行正则有符号数编码处理得到较少数量的有效部分积,从而降低实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;另外,上述方法还可以通过中间数据寄存器存储有效部分积,以对有效部分积进行压缩处理得到乘法运算结果,进而通过输出数据寄存器控制输出乘法运算结果中的部分数据得到目标运算结果,实现了乘法器复用的功能,从而降低乘法器的功耗。

图10为另一实施例提供的得到目标编码的具体流程示意图,参见图10所示,所述待处理数据进行正则有符号数编码处理,得到目标编码的步骤,可以包括:将所述待处理数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。可选的,所述对所述待处理数据进行正则有符号数编码处理,得到目标编码的步骤,具体可以包括:

S1041、对所述待处理数据进行正则有符号数编码处理,得到中间编码。

具体的,进行正则有符号数编码处理的待处理数据可以为乘法运算中的乘数。

S1042、根据所述中间编码以及所述功能模式选择信号,得到所述目标编码。

具体的,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)

例如,乘法器中的正则有符号数编码单元接收到的乘数为“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芯片的面积;同时,该方法可以接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数量,从而降低乘法运算的复杂性,提高乘法运算的运算效率。

图11为另一实施例提供的获取目标编码部分积的具体流程示意图,如图11所示,上述S105中根据所述目标编码和所述拆分后的数据,得到目标编码部分积的步骤,具体可以包括:

S1051、根据所述目标编码和所述拆分后的数据得到原始部分积。

具体的,若目标编码以及拆分后的N位被乘数可以得到(N+1)位原始部分积。当低位目标编码中的数值为-1时,则原始部分积可以为-X,当低位目标编码中的数值1时,则原始部分积可以为X,当低位目标编码中的数值0时,则原始部分积可以为0,也就是原始部分积中的每位数值均等于0。

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

可选的,上述S1052中对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积的步骤,具体可以包括:对所述原始部分积进行符号位扩展处理,得到中间部分积;对所述中间部分积进行符号位扩展处理,得到符号位扩展后的部分积。

具体的,乘法器对原始部分积进行符号位扩展处理的方式,与对中间部分积进行符号位扩展处理的方式相同,但是,扩展的符号位数量可以不相等,也可以相等。

需要说明的是,上述中间部分积的位宽可以等于乘法器当前可处理的数据位宽N的2倍;上述符号位扩展处理可以表征为对一个数据进行补符号位处理,补符号位数值等于原始部分积的符号位数值(即最高位数值);其中,中间部分积的高N位数值可以相等,低N位数值可以等于通过目标编码以及被乘数得到的原始部分积中的所有数值。若目标编码以及N位被乘数可以得到N位原始部分积,则中间部分积的高N位数值均可以等于原始部分积中的符号位数值,中间部分积的低N位数值可以等于原始部分积的N位数值。

在本实施例中,乘法器对原始部分积进行符号位扩展处理时,可以补符号位的数量可以等于中间部分积的位宽减原始部分积的位宽;乘法器对中间部分积进行符号位扩展处理时,可以补符号位的数量可以等于所有中间部分积在进行累加运算时累加结果出现的溢出位宽m,其中,溢出位宽m可以大于等于0。可选的,上述符号位扩展后的部分积的位宽可以等于中间部分积的位宽与上述溢出位宽m之和。

S1053、根据所述乘法器的输入端口位宽以及所述符号位扩展后的部分积,得到所述初始编码部分积。

可选的,上述S1053中根据所述乘法器的输入端口位宽以及所述符号位扩展后的部分积,得到所述初始编码部分积的步骤,具体可以包括:根据所述乘法器的输入端口位宽,判断是否需要对所述符号位扩展后的部分积进行补零处理,得到所述初始编码部分积;若需要,则对对所述符号位扩展后的部分积进行补零处理,得到所述初始编码部分积。可选的,若不需要对所述符号位扩展后的部分积进行补零处理,则将所述符号位扩展后的部分积作为所述初始编码部分积。

具体的,乘法器可以自动判断乘法器的输入端口位宽的2倍,与符号位扩展后的部分积的位宽是否相等;若相等,则可以将符号位扩展后的部分积作为初始编码部分积;若不相等,乘法器可以对符号位扩展后的部分积中最高位数值的更高位处补零,得到初始编码部分积。可选的,初始编码部分积的位宽可以等于乘法器的输入端口位宽的2倍。可选的,对符号位扩展后的部分积进行补零的数量可以等于初始编码部分积的位宽,减去符号位扩展后的部分积的位宽。

S1054、根据所述功能模式选择信号以及所述初始编码部分积,得到目标编码部分积。

具体的,乘法器中的中间数据寄存器可以根据接收到的功能模式选择信号,判断初始编码部分积的位宽是否与乘法器的输入端口的位宽的2倍是否相等,若相等,则中间数据寄存器可以接收完整的初始编码部分积,并将初始编码部分积作为目标编码部分积输出;若不相等,则中间数据寄存器可以接收初始编码部分积中的部分数值,并将该部分积位数值作为目标编码部分积输出。

本实施例提供的一种数据处理方法,根据目标编码和拆分后的数据得到原始部分积,对原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,根据乘法器的输入端口位宽以及符号位扩展后的部分积,得到初始编码部分积,根据功能模式选择信号以及初始编码部分积得到目标编码部分积,进而对目标编码部分积进行累加处理,得到乘法运算结果,根据功能模式选择信号存储所述乘法运算结果以得到目标运算结果;该方法可以根据功能模式选择信号适应缩小部分积的位宽,从而降低乘法器的运算功耗;另外,该方法能够保证乘法运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。

图12为另一实施例提供的得到乘法运算结果的具体流程示意图,如图12所示,上述S106中对所述目标编码部分积进行累加处理,得到乘法运算结果的步骤,具体可以包括:

S1061、通过华莱士树组电路对目标编码部分积,进行累加处理得到中间运算结果。

具体的,若乘法器的输入端口位宽为N,乘法器当前可处理的数据位宽也为N,此时,乘法器通过华莱士树组电路可以对得到的目标编码部分积中的每列数值,进行累加运算得到中间运算结果;若乘法器当前可处理的数据位宽也为N/2,此时,乘法器通过华莱士树组电路可以对得到的目标编码部分积中的每列数值进行累加运算得到中间运算结果。

需要说明的是,目标编码部分积可以包括目标编码低位部分积以及目标编码高位部分积。可选的,上述目标编码低位部分积和目标编码高位部分积的位宽相同;所有目标编码低位部分积的分布方式中,每个目标编码低位部分积的最低位数值与第一个目标编码低位部分积的最低位数值位于同一列,每个目标编码低位部分积的最高位数值与第一个目标编码低位部分积的最高位数值位于同一列,每个目标编码低位部分积的其它位数值与第一个目标编码低位部分积的对应位数值分别位于对应同一列。可选的,目标编码高位部分积的分布方式与目标编码低位部分积的分布方式类似,对此不再赘述。可选的,若乘法器中的华莱士树组电路对目标编码低位部分积和目标编码高位部分积进行累加运算,此时,最后一个目标编码低位部分积的最低位数值与第一个目标编码高位部分积的最低位数值位于同一列,其它位数值依次也分别位于同一列。

S1062、通过累加电路对所述中间运算结果进行累加处理,得到所述乘法运算结果。

具体的,累加电路可处理的数据位宽可以等于乘法器的输入端口位宽的2倍;若中间运算结果的位宽不等于累加电路可处理的数据位宽,此时,累加电路可以自动对中间运算结果中最高位数值的更高位处补零,以得到补零后的中间运算结果的位宽可以等于累加电路可处理的数据位宽,并且乘法器中的累加电路对补零后的中间运算结果进行累加处理,得到乘法运算结果。可选的,乘法运算结果的位宽可以等于乘法器的输入端口位宽的2倍。

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

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

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

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

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

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

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

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

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

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

在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图15所示,图15提供了一种板卡,上述板卡除了包括上述芯片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超仪和/或心电图仪。

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

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

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

技术分类

06120112986813