CN113031915A - 乘法器、数据处理方法、装置及芯片 - Google Patents
乘法器、数据处理方法、装置及芯片 Download PDFInfo
- Publication number
- CN113031915A CN113031915A CN201911349756.6A CN201911349756A CN113031915A CN 113031915 A CN113031915 A CN 113031915A CN 201911349756 A CN201911349756 A CN 201911349756A CN 113031915 A CN113031915 A CN 113031915A
- Authority
- CN
- China
- Prior art keywords
- data
- order
- partial product
- low
- bit
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 106
- 238000012937 correction Methods 0.000 claims abstract description 64
- 230000006835 compression Effects 0.000 claims abstract description 29
- 238000007906 compression Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims description 149
- 238000009825 accumulation Methods 0.000 claims description 98
- 230000006870 function Effects 0.000 claims description 65
- 238000010801 machine learning Methods 0.000 claims description 50
- 230000000295 complement effect Effects 0.000 claims description 25
- 230000015654 memory Effects 0.000 claims description 13
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 238000012905 input function Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000013473 artificial intelligence Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- FBOUIAKEJMZPQG-AWNIVKPZSA-N (1E)-1-(2,4-dichlorophenyl)-4,4-dimethyl-2-(1,2,4-triazol-1-yl)pent-1-en-3-ol Chemical compound C1=NC=NN1/C(C(O)C(C)(C)C)=C/C1=CC=C(Cl)C=C1Cl FBOUIAKEJMZPQG-AWNIVKPZSA-N 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000008188 pellet Substances 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供一种乘法器、数据处理方法、装置及芯片,所述乘法器包括:判断电路、数据寄存器、修正编码电路和修正压缩电路;所述判断电路的输出端与所述数据寄存器的输入端连接,所述数据寄存器的输出端与所述修正编码电路的输入端连接,所述修正编码电路的输出端与所述修正压缩电路的输入端连接;该乘法器可以通过判断电路确定接收到的数据是否为全0数据,若为全0数据就不需要将该数据存储至数据寄存器中,以减少数据寄存器的翻转次数,并且该乘法器不需要复杂稀疏选数电路,仅需要通过判断电路获取有效数据,使得乘法器只需要对有效数据进行处理,缩小了无效运算量,从而降低了乘法器的功耗。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种乘法器、数据处理方法、装置及芯片。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能深度学习处理器的要求也越来越高。深度学习算法作为智能芯片广泛应用的算法之一,深度学习算法中通常会涉及到乘法运算,通过乘法器进行乘法运算在深度学习算法中是一种常见的操作。
传统技术中,通常会采用过滤稀疏神经网络中零值数据的计算来实现包含稀疏数据的数据的乘法运算。由于稀疏数据的不均匀性,传统的乘法器中增加了复杂的稀疏选数电路来对零散的稀疏数据进行整理。但是由于复杂稀疏选数电路的存在,导致乘法器的功耗较高。
发明内容
基于此,有必要针对上述技术问题,提供一种乘法器、数据处理方法、装置及芯片。
本申请实施例提供一种乘法器,所述乘法器包括:判断电路、数据寄存器、修正编码电路和修正压缩电路;所述判断电路的输出端与所述数据寄存器的输入端连接,所述数据寄存器的输出端与所述修正编码电路的输入端连接,所述修正编码电路的输出端与所述修正压缩电路的输入端连接;
其中,所述判断电路用于判断接收到的数据是否包含全0数据,并根据判断结果输出数据门控信号,所述数据寄存器用于根据所述数据门控信号选择接收所述数据,并存储所述数据。
在其中一个实施例中,所述修正编码电路用于对所述数据寄存器存储的所述数据进行编码处理,得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码部分积,所述修正压缩电路用于对所述目标编码部分积进行累加处理得到乘法运算结果。
所述修正编码电路中包括第一输入端,用于接收输入的功能选择模式信号;所述修正压缩电路中包括第一输入端,用于接收输入的所述功能选择模式信号;所述功能选择模式信号用于确定所述乘法器当前可处理的数据位宽。
在其中一个实施例中,所述判断电路包括:数据输入端口、逻辑信号输出端口以及数据输出端口,所述数据输入端口用于接收进行乘法运算的数据,所述逻辑信号输出端口用于输出所述判断电路根据判断结果得到的所述数据门控信号,所述数据输出端口用于输出所述数据。
在其中一个实施例中,所述修正编码电路包括:低位布斯编码单元、低位逻辑运算单元、低位部分积获取单元、选择器、高位布斯编码单元、高位逻辑运算单元、高位部分积获取单元、低位选择器组单元以及高位选择器组单元;所述低位布斯编码单元的第一输出端与所述选择器的输入端连接,所述低位布斯编码单元的第二输出端与所述低位逻辑运算单元的输入端连接,所述低位逻辑运算单元的输出端与所述低位部分积获取单元的第一输入端连接,所述选择器的输出端与所述高位布斯编码单元的第一输入端连接,所述高位布斯编码单元的输出端与所述高位逻辑运算单元的输入端连接,所述高位逻辑运算单元的输出端与所述高位部分积获取单元的第一输入端连接,所述低位选择器组单元的输出端与所述低位部分积获取单元的第二输入端连接,所述高位选择器组单元的输出端与所述高位部分积获取单元的第二输入端连接;
其中,所述低位布斯编码单元用于对所述数据寄存器输入的所述第一数据中的低位数据进行布斯编码处理,得到低位目标编码,所述低位逻辑运算单元用于根据所述低位目标编码进行与逻辑运算得到第一逻辑运算,并根据所述第一逻辑运算结果确定是否将所述低位目标编码输入至所述低位部分积获取单元,所述低位部分积获取单元用于根据所述低位目标编码以及所述数据寄存器输入的所述第二数据,得到符号位扩展后的低位部分积,所述选择器用于选通所述第一数据中的高位数据进行布斯编码处理时的补位数值,所述高位布斯编码单元用于对所述第一数据中的高位数据以及所述补位数值,进行布斯编码处理得到高位目标编码,所述高位逻辑运算单元用于根据所述高位目标编码进行与逻辑运算得到第二逻辑运算,并根据所述第二逻辑运算结果确定是否将所述高位目标编码输入至所述高位部分积获取单元,所述高位部分积获取单元用于根据所述高位目标编码以及所述数据寄存器输入的所述第二数据,得到符号位扩展后的高位部分积,所述低位选择器组单元用于选通所述符号位扩展后的低位部分积中的数值,所述高位选择器组单元用于选通所述符号位扩展后的高位部分积中的数值。
在其中一个实施例中,所述低位布斯编码单元包括:低位数据输入端口、低位目标编码输出端口以及选通数值输出端口;所述低位数据输入端口用于接收所述第一数据中的低位数据,所述低位目标编码输出端口用于输出对所述低位数据进行布斯编码处理后得到的低位目标编码,所述选通数值输出端口用于将所述低位数据中的最高位数值输出,并输入至所述高位布斯编码单元。
在其中一个实施例中,所述低位逻辑运算单元包括:低位目标编码输入端口以及低位目标编码输出端口,所述低位目标编码输入端口用于接收所述低位逻辑运算单元输出的所述低位目标编码,所述低位目标编码输出端口用于输出有效的低位目标编码。
在其中一个实施例中,所述低位部分积获取单元包括:低位目标编码输入端口、第一选通数值输入端口、模式信号输入端口、数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述低位逻辑运算单元输出的所述低位目标编码,所述第一选通数值输入端口用于接收所述低位选择器组单元选通后,输出的所述符号位扩展后的低位部分积中包含的数值,所述模式信号输入端口用于接收所述功能选择模式信号,所述数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出所述目标低位编码部分积。
在其中一个实施例中,所述选择器包括:模式信号输入端口、第一选通数值输入端口、第二选通数值输入端口以及选通数值输出端口;所述模式信号输入端口用于接收所述功能选择模式信号,所述第一选通数值输入端口用于接收第一选通数值,所述第二选通数值输入端口用于接收第二选通数值,所述选通数值输出端口用于输出选通后获取的所述第一选通数值或所述第二选通数值。
在其中一个实施例中,所述高位布斯编码单元包括:高位数据输入端口、高位目标编码输出端口以及选通数值输入端口;所述高位数据输入端口用于接收所述第一数据中的高位数据,所述高位目标编码输出端口用于输出对所述高位数据进行布斯编码处理后得到的高位目标编码,所述选通数值输入端口用于接收所述选择器输出的所述低位数据中的最高位数值或者数值0。
在其中一个实施例中,所述高位逻辑运算单元包括:高位目标编码输入端口以及高位目标编码输出端口,所述高位目标编码输入端口用于接收所述高位逻辑运算单元输出的所述高位目标编码,所述高位目标编码输出端口用于输出有效的高位目标编码。
在其中一个实施例中,所述高位部分积获取单元包括:高位目标编码输入端口、第二选通数值输入端口、模式信号输入端口、数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述高位逻辑运算单元输出的所述高位目标编码,所述第二选通数值输入端口用于接收所述高位选择器组单元选通后,输出的所述符号位扩展后的高位部分积中包含的数值,所述模式信号输入端口用于接收所述功能选择模式信号,所述数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所述目标高位编码部分积。
在其中一个实施例中,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对所述符号位扩展后的低位部分积中的数值进行选通。
在其中一个实施例中,所述高位选择器组单元包括:高位选择器,所述高位选择器用于对所述符号位扩展后的高位部分积中的数值进行选通。
在其中一个实施例中,所述修正压缩电路包括:修正华莱士树组单元以及累加电路;所述修正华莱士树组单元的输出端与所述累加电路的输入端连接;所述修正华莱士树组单元用于对不同位宽数据运算得到的目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路用于对实时累加运算结果进行累加处理得到所述乘法运算结果。
在其中一个实施例中,所述修正华莱士树组单元包括:低位华莱士树子单元、选择器以及高位华莱士树子单元,所述低位华莱士树子单元的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子单元的输入端连接;其中,所述低位华莱士树子单元用于对所述目标编码部分积中的每列数值进行累加运算,所述选择器用于选通所述高位华莱士树子单元接收的进位输入信号,所述高位华莱士树子单元用于对所述目标编码部分积中的每列数值进行累加运算。
在其中一个实施例中,所述累加电路包括:加法器,所述加法器用于对所述累加运算结果进行加法运算得到所述乘法运算结果。
在其中一个实施例中,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述运算结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的所述乘法运算结果。
本实施例提供的一种乘法器,乘法器通过判断电路可以先判断接收到的数据是否为全0数据,根据判断结果输出数据门控信号,并且数据寄存器可以根据数据门控信号控制存储数据,进而通过修正编码电路对数据寄存器存储的数据进行编码处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到目标编码部分积,并通过修正压缩电路对目标编码部分积进行累加处理,得到乘法运算结果;乘法器可以通过判断电路确定接收到的数据是否为全0数据,若为全0数据就不需要将该数据存储至数据寄存器中,以减少数据寄存器的翻转次数,并且该乘法器不需要复杂稀疏选数电路,仅需要通过判断电路获取有效数据,使得乘法器只需要对有效数据进行处理,缩小了无效运算量,从而降低了乘法器的功耗。
本申请实施例提供一种数据处理方法,所述方法包括:
接收待处理数据和功能选择模式信号,其中,所述功能选择模式信号用于指示乘法器当前可处理的数据位宽;
当所述待处理数据为非0数据时,则将所述待处理数据存储至数据寄存器中;
根据所述功能选择模式信号选通待编码信号;
根据所述待编码信号和所述待处理数据进行编码处理,得到目标编码部分积;
对所述目标编码部分积进行累加处理,得到乘法运算结果。
在其中一个实施例中,当所述待处理数据为全0数据时,所述方法还包括:将数据0作为所述乘法运算结果。
在其中一个实施例中,所述根据所述功能选择模式信号选通待编码信号,包括:根据所述功能选择模式信号选通数值0作为所述待编码信号,或者选通所述待处理数据中低位数据对应的最高位数值作为所述待编码信号。
在其中一个实施例中,所述根据所述待编码信号和所述待处理数据进行编码处理,得到目标编码部分积,包括:
根据所述待编码信号和所述待处理数据,得到待编码数据;
对所述待编码数据进行布斯编码处理,得到目标编码;
根据所述目标编码以及所述待处理数据,得到所述目标编码部分积。
在其中一个实施例中,所述根据所述待编码信号和所述待处理数据,得到待编码数据,包括:
对所述待处理数据进行补位处理,得到补位后的数据;
根据所述待编码信号以及所述补位后的数据,得到待编码数据。
在其中一个实施例中,所述根据所述目标编码以及所述待处理数据,得到所述目标编码部分积,包括:
根据所述目标编码和所述待处理数据,得到符号位扩展后的部分积;
根据所述符号位扩展后的部分积得到所述目标编码部分积。
在其中一个实施例中,所述根据所述符号位扩展后的部分积得到所述目标编码部分积,包括:删除所有符号位扩展后的部分积中数据为0的部分积,得到所述目标编码部分积。
在其中一个实施例中,所述目标编码部分积包括目标低位编码部分积以及目标高位编码部分积;所述对所述目标编码部分积进行累加处理,得到乘法运算结果,包括:
通过修正华莱士树组单元对所述目标低位编码部分积和所述目标高位编码部分积,进行累加处理得到累加运算结果;
通过累加电路对所述累加运算结果进行累加处理,得到乘法运算结果。
在其中一个实施例中,所述通过修正华莱士树组单元对所述目标低位编码部分积和所述目标高位编码部分积,进行累加处理得到累加运算结果,包括:
通过低位华莱士树子单元对所有目标编码部分积中的列数值进行累加处理,得到中间运算结果;
通过选择器对所述中间运算结果进行选通,得到进位选通信号;
通过高位华莱士树子单元根据所述进位选通信号以及所有目标编码部分积中的列数值进行累加处理,得到所述累加运算结果。
本实施例提供的一种数据处理方法,该方法可以仅对有效数据进行处理,以得到有效部分积的数量减少,从而减少了无效运算量,降低了乘法器的运算功耗。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个所述的乘法器;该机器学习运算装置用于从所述机器学习运算装置中除所述乘法器以外的其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给所述所述机器学习运算装置中除所述乘法器以外的其它处理装置;
当所述机器学习运算装置包含多个所述乘法器时,多个所述乘法器间可以通过预设结构进行链接并传输数据;
其中,多个所述乘法器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括如所述的机器学习处理装置、通用互联接口,和所述组合处理装置中除所述机器学习运算装置以外的其它处理装置;该机器学习运算装置与上述组合处理装置中除所述机器学习运算装置以外的其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置连接,用于保存所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的乘法器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的乘法器。
本申请实施例提供的一种电子设备,包括如所述的芯片。
附图说明
图1为一实施例提供的一种乘法器的结构示意图;
图2为另一实施例提供的乘法器中的判断电路和数据寄存器的具体电路结构示意图;
图3为另一实施例提供的乘法器中修正编码电路的具体结构示意图;
图4为另一实施例提供的乘法器中的修正压缩电路的具体电路结构图;
图5为另一实施例提供的8位数据运算时修正压缩电路的具体电路结构图;
图6为一实施例提供的一种数据处理方法流程示意图;
图7为另一实施例提供的得到目标编码部分积的具体流程示意图;
图8为另一实施例提供的得到乘法运算结果的流程示意图;
图9为另一实施例提供的得到累加运算结果的具体流程示意图;
图10为一实施例提供的一种组合处理装置的结构图;
图11为一实施例提供的另一种组合处理装置的结构图;
图12为一实施例提供的一种板卡的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的乘法器可应用于AI芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array,FPGA)芯片、或者是其它的硬件电路设备中进行乘法运算处理,其具体结构示意图如图1所示。
如图1所示,图1为一个实施例提供的一种乘法器的结构图。如图1所示,该乘法器包括:判断电路11、数据寄存器12、修正编码电路13和修正压缩电路14;所述判断电路11的输出端与所述数据寄存器12的输入端连接,所述数据寄存器12的输出端与所述修正编码电路13的输入端连接,所述修正编码电路13的输出端与所述修正压缩电路14的输入端连接。其中,所述判断电路11用于判断接收到的数据是否包含全0数据,并根据判断结果输出数据门控信号,所述数据寄存器12用于根据所述数据门控信号选择接收所述数据,并存储所述数据。可选的,所述修正编码电路13用于对所述数据寄存器12存储的所述数据进行编码处理,得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码部分积,所述修正压缩电路14用于对所述目标编码部分积进行累加处理得到乘法运算结果。
具体的,上述乘法器的输入端口可以接收N比特位宽的数据,N可以大于0;另外,乘法器可以同时接收多个运算数据,接收到的这些数据可以为判断电路11需要进行判断的数据。可选的,上述判断电路11可以同时接收乘法运算中的乘法和被乘数;该乘数和被乘数均可以为定点数。可选的,判断电路11可以判断接收到的数据中是否包含全0数据,然后根据判断结果输出数据门控信号,也就是,若乘法运算中的乘数和/或被乘数为全0数据,此时,判断电路11输出的数据门控信号可以为低电平信号0;若乘法运算中的乘数和被乘数均为非0数据,此时,判断电路11输出的数据门控信号可以为高电平信号0;该数据门控信号可以包括高电平信号1和低电平信号0。可选的,判断电路11对每组乘数和被乘数进行判断,可以得到一个对应的数据门控信号。
需要说明的是,上述数据寄存器12可以接收判断电路11输出的数据门控信号。可选的,若数据寄存器12接收到数据门控信号为低电平信号,此时,数据寄存器12可以保持关闭状态,不需要接收数据进行存储,以供后续运算;若数据寄存器12接收到数据门控信号为高电平信号,此时,数据寄存器12可以保持开启状态,需要接收数据进行存储,以供后续运算。可选的,数据寄存器12可以根据每个数据门控信号选择是否接收对应输入的乘数和被乘数。
可以理解的是,上述修正编码电路13可以包括多个具有不同功能的数据处理单元,并且修正编码电路13接收到的数据可以作为乘法运算中的乘数,还可以作为乘法运算中的被乘数。可选的,上述数据可以为定点数。可选的,修正编码电路13可以接收多种不同比特位宽的数据,也就是说,本实施例提供的乘法器可以处理多种不同比特位宽数据的乘法运算。但是,同一次乘法运算时,修正编码电路13接收到的乘数和被乘数可以是同位宽的数据,即乘数和被乘数位宽相等。示例性的,本实施例提供的乘法器可以处理8位*8位的数据乘法运算,16位*16位的乘法运算,32位*32位的数据的乘法运算,还可以处理64位*64位的数据的乘法运算,对此本实施例不作任何限定。
可选的,修正编码电路13可以对接收到的数据进行二进制编码处理,相当于可以对接收到的乘数进行二进制编码处理,并根据接收到的被乘数,得到符号位扩展后的部分积,该符号位扩展后的部分积的位宽可以等于乘法器当前可处理数据位宽的2倍。示例性的,修正编码电路13接收到的是16比特位宽的数据,若乘法器当前所处理8位数据乘法运算,则修正编码电路13需要将16比特位宽的数据划分成,高8位和低8位两组数据分别进行乘法运算,此时,获取的符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍;若乘法器当前所处理16位数据乘法运算,则修正编码电路13需要对整体16位数据进行运算,此时,获取的符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍。
可选的,所述修正编码电路13中包括第一输入端,用于接收输入的功能选择模式信号;所述修正压缩电路14中包括第一输入端,用于接收输入的所述功能选择模式信号。可选的,所述功能选择模式信号用于确定所述乘法器当前可处理的数据位宽。
需要说明的是,上述功能选择模式信号可以有多种,不同功能选择模式信号对应于乘法器当前可处理不同位宽数据的乘法运算。可选的,同一次乘法运算时,修正编码电路13和修正压缩电路14接收到的功能选择模式信号可以相等。
示例性的,若修正编码电路13和修正压缩电路14可以接收多种功能选择模式信号,以三种功能选择模式信号(即mode信号)为例,mode信号可以分别表示为00、01以及10,则mode=00可以表征乘法器当前可处理的数据位宽为8,mode=01可以表征乘法器当前可处理的数据位宽为16,mode=10可以表征乘法器当前可处理的数据位宽为32;另外,mode=00也可以表征为乘法器当前可处理的数据位宽为16,mode=01也可以表征为乘法器当前可处理的数据位宽为32,mode=10可以表征乘法器当前可处理的数据位宽为8。
本实施例提供的乘法器,乘法器通过判断电路可以先判断接收到的数据是否为全0数据,根据判断结果输出数据门控信号,并且数据寄存器可以根据数据门控信号控制存储数据,进而通过修正编码电路对数据寄存器存储的数据进行编码处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到目标编码部分积,并通过修正压缩电路对目标编码部分积进行累加处理,得到乘法运算结果;乘法器可以通过判断电路确定接收到的数据是否为全0数据,若为全0数据就不需要将该数据存储至数据寄存器中,从而减少数据寄存器的翻转次数,并且该乘法器不需要复杂稀疏选数电路,仅需要通过判断电路获取有效数据,使得乘法器只需要对有效数据进行处理,缩小了无效运算量,从而降低了乘法器的功耗;同时,乘法器在保证乘法运算结果准确性的前提下,可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
图2为另一实施例提供的乘法器中的判断电路和数据寄存器的具体电路结构示意图,如图2所示,其中,所述判断电路11包括:数据输入端口111、逻辑信号输出端口112以及数据输出端口113,所述数据输入端口111用于接收进行乘法运算的数据,所述逻辑信号输出端口112用于输出所述判断电路11根据判断结果得到的所述数据门控信号,所述数据输出端口113用于输出所述数据。
具体的,判断电路11可以通过数据输入端口111同时接收多个数据,该数据可以包括乘法运算中的乘数和被乘数。可选的,上述判断电路11可以判断接收到的乘法和被乘数是否有一个数据为全0数据。可选的,若判断电路11判定接收到的数据包含全0数据,则判断电路11中的逻辑信号输出端口112可以输出低电平信号0,作为数据门控信号;若判断电路11判定接收到的数据均为非0数据,则判断电路11中的逻辑信号输出端口112可以输出高电平信号1,作为数据门控信号。可选的,判断电路11在对接收到的数据执行完判断处理后,可以将接收到的原数据通过数据输出端口113输出。
本实施例提供的乘法器,乘法器通过判断电路可以先判断接收到的数据是否为全0数据,根据判断结果输出数据门控信号,进而将数据门控信号输入至数据寄存器中,数据寄存器根据数据门控信号控制接收全0数据,以减少数据寄存器的翻转次数,并且该乘法器不需要复杂稀疏选数电路,仅需要通过判断电路获取有效数据,使得乘法器只需要对有效数据进行处理,缩小了无效运算量,从而降低了乘法器的功耗。
作为其中一个实施例,继续参见图2所示,其中,所述数据寄存器12包括:门控信号输入端口121、数据输入端口122以及运算数据输出端口123,所述门控信号输入端口121用于接收所述判断电路11输出的所述数据门控信号,所述数据输入端口122用于根据所述数据门控信号,选择接收所述判断电路11输出的第一数据和第二数据,所述运算数据输出端口123用于输出所述数据寄存器12接收到的所述第一数据和所述第二数据。
具体的,数据寄存器12可以包括存储乘法运算中乘法的第一寄存单元,以及存储乘法运算中被乘数的第二寄存单元。可选的,数据寄存器12可以通过门控信号输入端口121接收判断电路11输出的每个数据门控信号,并且可以将接收到的数据门控信号输入至第一寄存单元或第二寄存单元。可选的,数据寄存器12可以根据接收到的数据门控信号确定是否需要接收对应的乘数和被乘数,并将接收到的数据存储至第一寄存单元和第二寄存单元中。可选的,若数据门控信号为高电平信号,则数据寄存器12可以通过数据输入端口122接收该数据门控信号对应的数据并进行存储,此时,数据寄存器12可以为开启状态;若数据门控信号为低电平信号,则数据寄存器12可以为关闭状态,该数据门控信号对应的数据将不被数据寄存器12进行存储。
需要说明的是,乘法器可以对数据寄存器12中存储的数据进行乘法运算,通过数据寄存器12中的运算数据输出端口123将存储的数据输入至修正编码电路13进行后续运算。可选的,上述第一数据和第二数据中一个数据为乘数,另一个数据可以为被乘数。
另外,若乘法运算中的乘数和被乘数中仅有一个数据为全0数据,或者两个数据均为全0数据,则数据寄存器12可以保持关闭状态,此时,不需要对该乘数和被乘数进行存储;若乘法运算中的乘数和被乘数均为非0数据,此时,数据寄存器12可以保持开启状态,以对该乘数和被乘数进行存储。
本实施例提供的乘法器,乘法器可以通过判断电路输出的数据门控信号,控制数据寄存器的关闭状态,当乘法器处理的运算数据中包含全0数据时,可以减少数据寄存器的翻转次数,并且该乘法器不需要复杂稀疏选数电路,仅需要通过判断电路获取有效数据,使得乘法器只需要对有效数据进行处理,缩小了无效运算量,从而降低了乘法器的功耗,进而以降低AI芯片的功耗。
图3为另一实施例提供的乘法器中修正编码电路13的具体结构示意图,如图3所示,所述修正编码电路13包括:低位布斯编码单元131、低位逻辑运算单元132、低位部分积获取单元133、选择器134、高位布斯编码单元135、高位逻辑运算单元136、高位部分积获取单元137、低位选择器组单元138以及高位选择器组单元139;所述低位布斯编码单元131的第一输出端与所述选择器134的输入端连接,所述低位布斯编码单元131的第二输出端与所述低位逻辑运算单元132的输入端连接,所述低位逻辑运算单元132的输出端与所述低位部分积获取单元133的第一输入端连接,所述选择器134的输出端与所述高位布斯编码单元135的第一输入端连接,所述高位布斯编码单元135的输出端与所述高位逻辑运算单元136的输入端连接,所述高位逻辑运算单元136的输出端与所述高位部分积获取单元137的第一输入端连接,所述低位选择器组单元138的输出端与所述低位部分积获取单元133的第二输入端连接,所述高位选择器组单元139的输出端与所述高位部分积获取单元137的第二输入端连接。
其中,所述低位布斯编码单元131用于对所述数据寄存器12输入的所述第一数据中的低位数据进行布斯编码处理,得到低位目标编码,所述低位逻辑运算单元132用于根据所述低位目标编码进行与逻辑运算得到第一逻辑运算,并根据所述第一逻辑运算结果确定是否将所述低位目标编码输入至所述低位部分积获取单元133,所述低位部分积获取单元133用于根据所述低位目标编码以及所述数据寄存器12输入的所述第二数据,得到符号位扩展后的低位部分积,所述选择器134用于选通所述第一数据中的高位数据进行布斯编码处理时的补位数值,所述高位布斯编码单元135用于对所述第一数据中的高位数据以及所述补位数值,进行布斯编码处理得到高位目标编码,所述高位逻辑运算单元136用于根据所述高位目标编码进行与逻辑运算得到第二逻辑运算,并根据所述第二逻辑运算结果确定是否将所述高位目标编码输入至所述高位部分积获取单元137,所述高位部分积获取单元137用于根据所述高位目标编码以及所述数据寄存器12输入的所述第二数据,得到符号位扩展后的高位部分积,所述低位选择器组单元138用于选通所述符号位扩展后的低位部分积中的数值,所述高位选择器组单元139用于选通所述符号位扩展后的高位部分积中的数值。
具体的,上述修正编码电路13可以接收第一数据和第二数据,第一数据可以为乘法运算中的乘数,第二数据可以为乘法运算中的被乘数。可选的,修正编码电路13可以对乘数进行布斯编码处理,得到目标编码,根据目标编码以及接收到的被乘数得到目标编码部分积。其中,第一数据中的低位数据在进行布斯编码处理前,低位布斯编码单元131可以自动对修正编码电路13接收到的第一数据中的低位数据进行一次补位处理,并对补位处理后的低位数据进行布斯编码处理,得到低位目标编码。可选的,若修正编码电路13接收到的乘数位宽为N,则低位数据可以为低N/2位的数据,补位处理可以表征为对第一数据(即第一数据中的低位数据)的最低位数值的更低一位处补一位数值0。示例性的,若乘法器当前可处理8位*8位的定点数乘法运算,乘数为“y7y6y5y4y3y2y1y0”,则在进行布斯编码处理前,低位布斯编码单元131可以自动对乘数进行补位处理,将乘数转换为补位后的数据“y7y6y5y4y3y2y1y00”。可选的,上述低位目标编码的数量可以等于低位数据位宽的1/2,且该低位目标编码的数量可以等于低位数据对应得到的符号位扩展后的低位部分积的数量。需要说明的是,无论乘法器当前可处理数据的位宽和乘法器接收到的数据位宽是否相同,实现布斯编码处理时,低位布斯编码单元131都需要对第一数据中的低位数据进行一次补位处理。可选的,上述符号位扩展后的低位部分积的位宽可以等于乘法器当前可处理数据位宽的2倍。
同理,若乘法器可处理N位数据运算和2N位数据运算,且乘法器根据接收到的功能选择模式信号确定当前可处理N位数据运算,则乘法器通过高位逻辑运算单元136可以对接收到的低位目标编码,与乘法器进行2N位数据乘法运算时得到的对应高位目标编码进行与逻辑运算,得到第二逻辑运算结果;若第二逻辑运算结果为低电平信号,则高位逻辑运算单元136可以将接收到的高位目标编码输入至高位部分积获取单元137。可选的,乘法器根据接收到的功能选择模式信号确定当前可处理2N位数据运算,则乘法器通过高位逻辑运算单元136可以对接收到的高位目标编码,与乘法器进行N位数据乘法运算时得到的对应高位目标编码进行与逻辑运算,得到第二逻辑运算结果;若第二逻辑运算结果为高电平信号,则高位逻辑运算单元136可以将接收到的高位目标编码输入至高位部分积获取单元137。
同时,通过高位布斯编码单元135可以对修正编码电路13接收到的第一数据中的高位数据,进行布斯编码处理得到高位目标编码;但是,高位数据在进行布斯编码处理前,需要通过选择器134获得一个选通数值,该选通数值可以作为高位数据进行布斯编码时的补位数值,然后将高位数据与补位数值组合得到补位后的高位数据,通过高位布斯编码单元135对补位后的高位数据进行布斯编码处理,得到高位目标编码。可选的,选择器134可以为二路选择器,二路选通数值可以包括数值0,以及第一数据中低位数据对应的最高位数值。示例性的,若一乘法器接收到的数据位宽为2N,且当前可处理N位数据运算,该情况下,乘法器可以将接收到的2N比特位宽的数据划分成,高N位数据和低N位数据进行分别处理,乘法器中的低位布斯编码单元131可以自动对低位数据进行补位处理,而乘法器中的选择器134可以选通数值0作为乘数中高位数据进行布斯编码处理时的补位数值;若该乘法器当前可处理2N位数据运算,则乘法器中的低位布斯编码单元131可以自动对低位数据进行补位处理,而乘法器中的选择器134可以选通低位数据中的最高位数值,作为高位数据进行布斯编码处理时的补位数值,此时相当于,乘法器将接收到的2N位数据作为一个整体进行布斯编码处理。可选的,若修正编码电路13接收到的乘数位宽为N,则高位数据可以为高N/2位的数据。在本实施例中,选择器133可以根据接收到的不同功能选择模式信号,确定选通高位数据进行布斯编码处理时的补位数值。可选的,上述符号位扩展后的高位部分积的位宽可以等于乘法器当前可处理数据位宽的2倍。可选的,上述高位目标编码的位宽可以等于低位目标编码的位宽,可以等于第一数据位宽的1/2。
可以理解的是,若乘法器接收到的数据位宽可以为2N,且当前可处理N位数据乘法运算,则乘法器中的低位部分积获取单元133可以根据低位目标编码以及修正编码电路13接收到的第二数据,得到低N/2位数据对应的符号位扩展后的部分积;上述低位选择器组单元138可以选通符号位扩展后的低位部分积中的数值;然后将符号位扩展后的部分积与选通后的符号位扩展后的低位部分积中的数值进行结合,得到符号位扩展后的低位部分积。可选的,高位部分积获取单元137可以根据高位目标编码以及修正编码电路13接收到的第二数据,得到高N/2位数据对应的符号位扩展后的部分积;高位选择器组单元139可以选通符号位扩展后的高位部分积中的数值;然后将符号位扩展后的部分积与选通后的符号位扩展后的高位部分积中的数值进行结合,得到符号位扩展后的高位部分积。可选的,布斯编码处理过程中,得到的低位目标编码的数量可以等于得到的高位目标编码的数量,还可以等于低N/2位数据对应的符号位扩展后的低位部分积的数量,或高N/2位数据对应的符号位扩展后的高位部分积的数量。可选的,修正编码电路13可以包含N/4个低位部分积获取单元133,还可以包含N/4个高位部分积获取单元137。可选的,上述每个低位部分积获取单元133和每个高位部分积获取单元137中,均可以包含2N个数值生成子单元,每个数值生成子单元可以获取符号位扩展后的部分积中的一位数值。同时,低位部分积获取单元133可以根据得到的符号位扩展后的低位部分积,确定对应的目标低位编码部分积;高位部分积获取单元137可以根据得到的符号位扩展后的高位部分积,确定对应的目标高位编码部分积。
需要说明的是,上述低位选择器组单元138可以根据接收到的功能选择模式信号,选通符号位扩展后的低位部分积中的部分位数值,为N位数据乘法运算得到的符号位扩展后的部分积中的数值,还是2N位数据乘法运算得到的符号位扩展后的部分积中的数值;同理,高位选择器组单元139可以根据接收到的功能选择模式信号,选通符号位扩展后的高位部分积中的部分位数值,为N位数据乘法运算得到的符号位扩展后的部分积中的数值,还是2N位数据乘法运算得到的符号位扩展后的部分积中的数值。
本实施例提供的一种乘法器,乘法器中的修正编码电路对数据进行布斯编码处理得到目标编码,然后低位逻辑运算单元和高位逻辑运算单元可以根据目标编码进行与逻辑运算,根据逻辑运算结果确定是否将该目标编码输入至其它电路进行处理,以得到有效部分积,进而通过修正压缩电路对有效部分积进行累加处理,得到乘法运算结果;该过程可以保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
在其中一个实施例中,继续参见图3所示,所述修正编码电路13中的低位布斯编码单元131包括:低位数据输入端口1311、低位目标编码输出端口1312以及选通数值输出端口1313。所述低位数据输入端口1311用于接收所述第一数据中的低位数据,所述低位目标编码输出端口1312用于输出对所述低位数据进行布斯编码处理后得到的低位目标编码,所述选通数值输出端口1313用于将所述低位数据中的最高位数值输出,并输入至所述选择器134。
具体的,乘法运算中,乘法器中的修正编码电路13可以对乘数进行布斯编码处理,修正编码电路13中的低位布斯编码单元131可以通过低位数据输入端口1311接收乘数中低位数据对应的连续三位数值,这三个数值可以作为一组待编码数据。其中,低位布斯编码单元131对接收到的待编码数据处理后,将得到的低位目标编码可以通过低位目标编码输出端口1114输出。另外,修正编码电路13中的第一个低位布斯编码单元131,通过低位数据输入端口1311可以接收自动补位的补位数值0,以及低位数据中的低两位数值。
示例性的,若乘法器接收到的乘数为16位数据,即“y15y14y13y12y11y10y9y8y7y6y5y4y3y2y1y0”,该数据从最低位数值至最高位数值对应的编号分别为0,…,15,低位布斯编码单元131可以对低位数据y7y6y5y4y3y2y1y0进行布斯编码处理,布斯编码处理前对8位低位数据进行自动补位处理后,得到9位数据y7y6y5y4y3y2y1y00,低位布斯编码单元131可以分别对y7y6y5y4y3y2y1y00中y7y6y5,y5y4y3,y3y2y1,y1y00这四组数据分别进行布斯编码处理,通过低位布斯编码单元131中的低位数据输入端口1311可以接收9位数据划分后的四组数据中相邻的三位数值。
需要说明的是,每次布斯编码处理时,修正编码电路13可以将低位数据进行自动补位处理后的数据划分成多组待编码数据,低位布斯编码单元131可以同时对划分后的多组待编码数据进行布斯编码处理。可选的,划分多组待编码数据的方式可以表征为将补位处理后的数据中相邻的每3位数值作为一组待编码数据,每组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。可选的,布斯编码处理的编码方式可以参见表1,其中,表1中的y2i+1,y2i和y2i-1可以表示每组待编码数据对应的三个数值,X可以表示修正编码电路13接收到的被乘数,对每组待编码数据进行布斯编码处理后,得到对应的目标编码PPi(i=0,1,2,...,n)。可选的,根据表1所示,布斯编码处理后得到的目标编码可以包括五类,分别为-2X,2X,-X,X和0。示例性的,若修正编码电路13接收到的被乘数为“x7x6x5x4x3x2x1x0”,则X可以表示为“x7x6x5x4x3x2x1x0”。
表1
示例性的,继续参见上述示例,当i=0时,y2i+1=y1,y2i=y0,y2i-1=y-1,则y-1可以表示y0后的补位数值0(即自动补位处理后的乘数表示为y7y6y5y4y3y2y1y0y-1),布斯编码处理时,可以对y-1y0y1,y1y2y3,y3y4y5和y5y6y7四组待编码数据分别进行编码,得到4个低位目标编码,其中,每组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。
可选的,继续参见图3所示,所述修正编码电路13中的高位布斯编码单元135包括:高位数据输入端口1351、高位目标编码输出端口1352以及选通数值输入端口1353。所述高位数据输入端口1351用于接收所述第一数据中的高位数据,所述高位目标编码输出端口1352用于输出对所述高位数据进行布斯编码处理后得到的高位目标编码,所述选通数值输入端口1353用于接收所述选择器134输出的所述低位数据中的最高位数值或者数值0。
可以理解的是,高位布斯编码单元135可以接收选择器134选通的补位数值,作为第一数据中的高位数据进行布斯编码处理时的补位数值,并对补位数值和高位数值组合后的数据进行布斯编码处理。其中,该补位数值可以为第一数据中的低位数据对应的最高位数值或者数值0。可选的,高位布斯编码单元135进行布斯编码处理的方式,与低位布斯编码单元131进行布斯编码处理的方式类似,对此不再赘述。
本实施例提供的一种乘法器,乘法器中的低位布斯编码单元对低位数据进行布斯编码处理,得到低位数据对应的低位目标编码,进而低位逻辑运算单元根据低位目标编码进行与逻辑运算得到逻辑运算结果,并根据逻辑运算结果确定是否需要将该低位目标编码输入到其它运算单元继续进行乘法运算,以得到乘法运算结果;该过程可以保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
作为其中一个实施例,继续参见图3所示,所述修正编码电路13中的低位逻辑运算单元132包括:低位目标编码输入端口1321以及低位目标编码输出端口1322,所述低位目标编码输入端口1321用于接收所述低位目标编码,所述低位目标编码输出端口1322用于输出有效的低位目标编码。
具体的,若乘法器可处理N位数据运算和2N位数据运算,且乘法器根据接收到的功能选择模式信号确定当前可处理N位数据运算,则乘法器通过低位逻辑运算单元132可以对通过低位目标编码输入端口1321接收低位布斯编码单元131输出的低位目标编码,与乘法器进行2N位数据乘法运算时得到的对应低位目标编码进行与逻辑运算,得到第一逻辑运算结果;若第一逻辑运算结果为低电平信号,则低位逻辑运算单元132不需要将接收到的低位目标编码通过低位目标编码输出端口1322输入至低位部分积获取单元133,此时,低位目标编码输出端口1322输出的这些低位目标编码可以称为无效的低位目标编码,该无效的低位目标编码可以表征为不参与后续运算处理的目标编码。可选的,乘法器根据接收到的功能选择模式信号确定当前可处理2N位数据运算,则乘法器通过低位逻辑运算单元132可以对通过低位目标编码输入端口1321接收低位布斯编码单元131输出的低位目标编码,与乘法器进行N位数据乘法运算时得到的对应低位目标编码进行与逻辑运算,得到第一逻辑运算结果;若第一逻辑运算结果为高电平信号,则低位逻辑运算单元132可以将接收到的低位目标编码通过低位目标编码输出端口1322输入至低位部分积获取单元133,此时,低位目标编码输出端口1322输出的这些低位目标编码可以称为有效的低位目标编码,该有效的低位目标编码可以表征为参与后续运算处理的目标编码。
可选的,继续参见图3所示,所述修正编码电路13中的高位逻辑运算单元136包括:高位目标编码输入端口1361以及高位目标编码输出端口1362,所述高位目标编码输入端口1361用于接收所述高位目标编码,所述高位目标编码输出端口1362用于输出有效的高位目标编码。
需要说明的是,若乘法器可处理N位数据运算和2N位数据运算,且乘法器根据接收到的功能选择模式信号确定当前可处理N位数据运算,则乘法器通过高位逻辑运算单元136可以对通过高位目标编码输入端口1361接收高位布斯编码单元135输出的高位目标编码,与乘法器进行2N位数据乘法运算时得到的对应高位目标编码进行与逻辑运算,得到第二逻辑运算结果;若第二逻辑运算结果为低电平信号,则高位逻辑运算单元136不需要将接收到的高位目标编码通过高位目标编码输出端口1362输入至高位部分积获取单元137,此时,高位目标编码输出端口1362输出的这些高位目标编码可以称为无效的高位目标编码,该无效的高位目标编码可以表征为不参与后续运算处理的目标编码。可选的,乘法器根据接收到的功能选择模式信号确定当前可处理2N位数据运算,则乘法器通过高位逻辑运算单元136可以对通过高位目标编码输入端口1361接收高位布斯编码单元135输出的高位目标编码,与乘法器进行N位数据乘法运算时得到的对应高位目标编码进行与逻辑运算,得到第二逻辑运算结果;若第二逻辑运算结果为高电平信号,则高位逻辑运算单元136可以将接收到的高位目标编码通过高位目标编码输出端口1362输入至高位部分积获取单元137,此时,高位目标编码输出端口1362输出的这些高位目标编码可以称为有效的高位目标编码,该有效的高位目标编码可以表征为不参与后续运算处理的目标编码。
本实施例提供的一种乘法器,乘法器中的低位逻辑运算单元根据低位目标编码进行与逻辑运算得到逻辑运算结果,并根据逻辑运算结果确定是否需要将该低位目标编码输入到其它运算单元继续进行乘法运算,以得到乘法运算结果;该过程可以保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
在其中一个实施例中,继续参见图3所示,所述修正编码电路13中的低位部分积获取单元133包括:低位目标编码输入端口1331、第一选通数值输入端口1332、模式信号输入端口1333、数据输入端口1334以及低位部分积输出端口1335;所述低位目标编码输入端口1331用于接收所述低位逻辑运算单元132输出的所述低位目标编码,所述第一选通数值输入端口1332用于接收所述低位选择器组单元138选通后,输出的所述符号位扩展后的低位部分积中包含的数值,所述模式信号输入端口1333用于接收所述功能选择模式信号,所述数据输入端口1334用于接收所述第二数据,所述低位部分积输出端口1335用于输出所述目标低位编码部分积。
具体的,低位部分积获取单元133通过低位目标编码输入端口1331,可以接收低位布斯编码单元131输出的低位目标编码,通过数据输入端口1334接收乘法运算中的被乘数,根据低位目标编码以及被乘数,得到低位目标编码对应的符号位扩展后的部分积。可选的,若模式信号输入端口1333接收到的功能选择模式信号对应乘法器可处理N位数据运算,则符号位扩展后的部分积的位宽可以等于2N。示例性的,若乘法器处理N位数据运算,低位部分积获取单元133接收到一个N位被乘数X,则低位部分积获取单元133可以根据被乘数X与低位目标编码直接得到对应的2N位符号位扩展后的部分积,该符号位扩展后的部分积中的低(N+1)位数值可以等于低位目标编码直接得到的原始部分积中的所有数值,符号位扩展后的部分积的高(N-1)位数值可以等于该原始部分积中的符号位数值,该符号位数值也就是原始部分积的最高位数值。当低位目标编码中的数值为-1时,则原始部分积可以为-X,当低位目标编码中的数值1时,则原始部分积可以为X,当低位目标编码中的数值0时,则原始部分积可以为0。
需要说明的是,低位部分积获取单元133可以通过第一选通数值输入端口1332,接收低位选择器组单元138选通的不相同位宽数据运算时,得到的符号位扩展后的低位部分积中的对应位数值;然后将乘法器当前得到的低位目标编码对应的符号位扩展后的部分积,与选通后的对应位数值进行结合,得到符号位扩展后的低位部分积。
进一步地,低位部分积获取单元133可以根据所有符号位扩展后的低位部分积,得到对应的目标低位编码部分积,并通过低位部分积输出端口1335将目标低位编码部分积输出。可选的,低位部分积获取单元133可以将所有符号位扩展后的低位部分积中,符号位扩展后的低位部分积为全0数据的部分积去除,仅保留非0数据作为目标低位编码部分积。可选的,目标低位编码部分积的数量可以小于等于符号位扩展后的低位部分积的数量。可选的,所有目标低位编码部分积的分布规律可以表征为,从第二个目标低位编码部分积开始,每个目标低位编码部分积中的最低位数值与第一个目标低位编码部分积中的最低位数值均位于同一列,每个目标低位编码部分积中的最高位数值与第一个目标低位编码部分积中的最高位数值均位于同一列,每个目标低位编码部分积中的其它位数值与第一个目标低位编码部分积中的对应位数值也均位于同一列。
可选的,继续参见图3所示,所述修正编码电路13中的高位部分积获取单元137包括:高位目标编码输入端口1371、第二选通数值输入端口1372、模式信号输入端口1373、数据输入端口1374以及高位部分积输出端口1375;所述高位目标编码输入端口1371用于接收所述高位逻辑运算单元136输出的所述高位目标编码,所述第二选通数值输入端口1372用于接收所述高位选择器组单元139选通后,输出的所述符号位扩展后的高位部分积中包含的数值,所述模式信号输入端口1373用于接收所述功能选择模式信号,所述数据输入端口1374用于接收所述第二数据,所述高位部分积输出端口1375用于输出所述目标高位编码部分积。
具体的,高位部分积获取单元137通过高位目标编码输入端口1371,可以接收高位布斯编码单元135输出的高位目标编码,通过数据输入端口1374接收乘法运算中的被乘数,根据高位目标编码以及被乘数,得到高位目标编码对应的符号位扩展后的高位部分积。可选的,若高位部分积获取单元137通过模式信号输入端口1373,接收到的功能选择模式信号对应乘法器可处理N位数据运算,则高位部分积获取单元137得到的符号位扩展后的高位部分积的位宽可以等于2N。示例性的,若乘法器处理N位数据运算,高位部分积获取单元137接收到一个N位被乘数X,则高位部分积获取单元137可以根据被乘数X与高位目标编码直接得到对应的2N位符号位扩展后的部分积,该符号位扩展后的部分积中的低N位数值可以等于高位目标编码直接得到的原始部分积中的所有数值,符号位扩展后的部分积中的高N位数值可以等于该原始部分积中的符号位数值,该符号位数值也就是原始部分积的最高位数值。当高位目标编码中的数值为-1时,则原始部分积可以为-X,当高位目标编码中的数值1时,则原始部分积可以为X,当高位目标编码中的数值0时,则原始部分积可以为0。
需要说明的是,高位部分积获取单元137可以通过第二选通数值输入端口1372,接收高位选择器组单元139选通的不相同位宽数据时,得到的符号位扩展后的高位部分积中的对应位数值;然后将乘法器当前得到的高位目标编码对应的符号位扩展后的部分积,与选通后的对应位数值进行结合,得到符号位扩展后的高位部分积。
进一步地,高位部分积获取单元137可以根据所有符号位扩展后的高位部分积,得到对应的目标高位编码部分积,并通过高位部分积输出端口1375将目标高位编码部分积输出。可选的,高位部分积获取单元137可以将所有符号位扩展后的高位部分积中,符号位扩展后的高位部分积为全0数据的部分积去除,仅保留非0数据作为目标高位编码部分积。可选的,目标高位编码部分积的数量可以小于等于符号位扩展后的高位部分积的数量。可选的,所有目标高位编码部分积的分布规律可以表征为,从第二个目标高位编码部分积开始,每个目标高位编码部分积中的最高位数值与第一个目标高位编码部分积中的最高位数值均位于同一列,每个目标高位编码部分积中的最高位数值与第一个目标高位编码部分积中的最高位数值均位于同一列,每个目标高位编码部分积中的其它位数值与第一个目标高位编码部分积中的对应位数值也均位于同一列。
本实施例提供的一种乘法器,乘法器中的低位部分积获取单元可以根据接收到的低位目标编码得到目标低位编码部分积,进而对目标低位编码部分积以及目标高位编码部分积进行累加处理,得到乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取的有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
作为其中一个实施例,继续参见图3所示,所述修正编码电路13中的选择器134包括:模式信号输入端口(mode)1341、第一选通数值输入端口1342、第二选通数值输入端口1343以及选通数值输出端口1344;所述模式信号输入端口1341用于接收所述功能选择模式信号,所述第一选通数值输入端口1342用于接收第一选通数值,所述第二选通数值输入端口1343用于接收第二选通数值,所述选通数值输出端口1344用于输出选通后获取的所述第一选通数值或所述第二选通数值。
具体的,选择器134可以通过模式信号输入端口1341接收到的功能选择模式信号,确定乘法器当前可处理的数据位宽,并根据乘法器当前可处理的数据位宽,确定选通数值输出端口1344输出第一选通数值还是第二选通数值。可选的,第一选通数据可以为数值0或第一数值中低位数据对应的最高位数值,第二选通数据可以为第一数据中低位数据对应的最高位数值或数值0。
示例性的,若乘法器接收到的数据位宽为16,乘法器中的修正编码电路13接收到的乘数和被乘数均为16位数据,且选择器134中的模式信号输入端口(mode)1341可以接收两种不同功能选择模式信号,分别为mode=0,mode=1,mode=0可以表征乘法器当前可处理8位数据,mode=1可以表征乘法器当前可处理16位数据;当选择器134的模式信号输入端口1341(mode)接收到的mode为0,则乘法器当前可处理8位数据运算,此时,选择器134可以通过第二选通数值输入端口1343接收第二选通数值,该第二选通数值可以等于数值0;当选择器134的模式信号输入端口(mode)1341接收到的mode为1时,则乘法器当前可处理16位数据运算,此时,选择器134可以通过第一选通数值输入端口1342接收第一选通数值,该第一选通数值可以等于乘数中低位数据对应的最高位数值。
需要说明的是,若乘法器当前可处理8位数据运算时,则乘法器可以对16位乘数和16位被乘数,对应的高8位数据和低8位数据分别进行乘法运算,也就是说,高8位乘数和高8位被乘数通过高位布斯编码单元135进行8位数据运算,低8位乘数和低8位被乘数通过低位布斯编码单元131进行8位数据运算,并且乘法器进行8位数据乘法运算时,选择器134可以通过第二选通数值输入端口1343接收第二选通数值0,相当于高8位数据补位处理后的补位数值为0;若乘法器当前可处理16位数据乘法运算时,则乘法器可以直接对16位乘数和16位被乘数进行乘法运算,即修正编码电路13直接对16位乘数进行布斯编码,此时,选择器134可以通过第一选通数值输入端口1342接收第一选通数值,该第一选通数值为低8位数据中的最高位数值。
本实施例提供的一种乘法器,乘法器通过选择器接收到的功能选择模式信号,可以确定高位数据进行布斯编码处理时的补位数值,从而对补位后的数据进行布斯编码处理;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,继续参见图3所示,所述修正编码电路13中的低位选择器组单元138包括:低位选择器1381,多个所述低位选择器1381用于对所述符号位扩展后的低位部分积中的数值进行选通。
具体的,低位选择器组单元138中包含低位选择器1381的数目,可以等于乘法器当前进行乘法运算或乘累加运算时被乘数位宽平方的3/8倍,该低位选择器组单元138中每个低位选择器1381均可以为二路选择器,且每个低位选择器1381的内部电路结构可以相同。可选的,若乘法器当前可处理N位数据运算,则乘法器中的低位布斯编码单元131连接的对应N/4个低位部分积获取单元133中,每个低位部分积获取单元133可以包含2N个数值生成子单元,其中N个数值生成子单元可以连接N个低位选择器1381,这N个数值生成子单元均可以连接一个低位选择器1381。可选的,N个低位选择器1381对应的N个数值生成子单元,可以为符号位扩展后的低位部分积中高N位数值对应的数值生成子单元,同时,该N个低位选择器1381的外部输入端口除了模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若乘法器当前可处理n种不同位宽的数据运算,并且乘法器接收到的数据的位宽为N,则上述低位选择器1381的两个其它输入端口接收的信号分别可以为,数值0和乘法器进行N位数据运算时低位部分积获取单元133得到的对应符号位扩展后的部分积中的符号位数值。其中,N/4个低位部分积获取单元133可以连接N/4组N个低位选择器1381,各组的N个低位选择器1381接收到的符号位数值可以相同,也可以不相同;但是,同一组的N个低位选择器1381接收到的符号位数值是相同的,并且该符号位数值可以根据每组N个低位选择器1381,对应连接的低位部分积获取单元133获取的符号位扩展后的部分积中的符号位数值得到。
另外,每个低位部分积获取单元133包含的2N个数值生成子单元中,对应N/2个数值生成子单元可以不连接低位选择器1381,此时,该N/2个数值生成子单元获取的数值可以为乘法器当前可处理不同位宽的数据得到的低位目标编码,获取的对应符号位扩展后的低位部分积中的对应位数值;也可以理解为,N/2个数值生成子单元获取的数值可以为对应符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N/2位数值之间的所有数值。
需要说明的是,上述每个低位部分积获取单元133包含的2N个数值生成子单元中,剩余的N/2个数值生成子单元也可以连接N/2个低位选择器1381,每个数值生成子单元可以连接1个低位选择器1381,该N/2个低位选择器1381的外部输入端口除了模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为乘法器进行N/2位数据运算,得到的对应符号位扩展后的部分积中的符号位数值,和乘法器进行N位数据运算,得到对应符号位扩展后的低位部分积中对应位数值;也可以理解为,N/2个数值生成子单元获取的数值可以为对应符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第((N/2)+1)位至第N位数值之间的所有数值。其中,N/2个低位部分积获取单元133可以连接N/4组N/2个低位选择器1381,各组的N/2个低位选择器1381接收到的符号位数值可以相同,也可以不相同,但是,同一组的N/2个低位选择器1381接收到的符号位数值是相同的,并且该符号位数值可以根据每组N/2个低位选择器1381,对应连接的低位部分积获取单元133获取的符号位扩展后的部分积中的符号位数值得到。另外,各组的N/2个低位选择器1381接收到的符号位扩展后的低位部分积中对应位数值,可以根据该组低位选择器1381所连接的低位部分积获取单元133,获取的符号位扩展后的低位部分积中的对应位数值确定,并且每组的N/2个低位选择器1381中,每个低位选择器1381接收到的对应位数值可以相同,也可以不相同。其中,每个低位部分积获取单元133中2N个数值生成子单元的位置的分布方式可以表征为,每个低位部分积获取单元133中2N个数值生成子单元均位于对应的列。
可选的,继续参见图3所示,所述修正编码电路13中的高位选择器组单元139包括:高位选择器1391,多个所述高位选择器1391用于对所述符号位扩展后的高位部分积中的数值进行选通。
具体的,高位选择器组单元139中包含高位选择器1391的数目,可以等于乘法器当前进行乘法运算或乘累加运算时被乘数位宽平方的3/8倍,该高位选择器组单元139中每个高位选择器1391均可以为二路选择器,且每个高位选择器1391的内部电路结构可以相同。可选的,若乘法器当前可处理N位数据运算,则乘法器中的高位布斯编码单元135连接的对应N/4个高位部分积获取单元137,每个高位部分积获取单元137中,可以包含2N个数值生成子单元,其中N个数值生成子单元可以连接N个高位选择器1391,每个数值生成子单元连接一个高位选择器1391。可选的,上述N个高位选择器1391对应的N个数值生成子单元,可以为符号位扩展后的高位部分积中低N位数值对应的数值生成子单元,该N个高位选择器1391的外部输入端口除了模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若乘法器可处理n种不同位宽的数据运算,并且乘法器接收到的数据的位宽为N,则上述高位选择器1391的两个其它输入端口接收的信号分别可以为,数值0和乘法器进行N比特位宽的数据运算时高位部分积获取单元137得到的对应符号位扩展后的部分积中的对应位数值。其中,N/4个高位部分积获取单元137可以连接N/4组N个高位选择器1391,各组的N个高位选择器1391接收到的对应位数值可以相同,也可以不相同。
另外,每个高位部分积获取单元137包含的2N个数值生成子单元中,对应N/2个数值生成子单元可以连接N/2个高位选择器1391,每个数值生成子单元可以连接1个高位选择器1391,该N/2个高位选择器1391与选择器134的内部电路结构可以相同。可选的,上述N/2个高位选择器1391对应的N/2个数值生成子单元,可以为符号位扩展后的高位部分积中高N/2位数值对应的数值生成子单元,并且该N/2个高位选择器1391的外部输入端口除了模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为乘法器进行N位数据运算,得到的对应符号位扩展后的部分积中的符号位数值,和乘法器进行N位数据运算,得到的对应符号位扩展后的部分积中的对应位数值。其中,N/4个高位部分积获取单元137可以连接N/4组N/2个高位选择器1391,各组的N/2个高位选择器1391接收到的符号位数值可以相同,也可以不相同,但是,同一组的N/2个高位选择器1391接收到的符号位数值是相同的,并且该符号位数值可以根据每组N/2个高位选择器1391,对应连接的高位部分积获取单元137获取的符号位扩展后的部分积中的符号位数值得到。另外,各组的N/2个高位选择器1391接收到的符号位扩展后的部分积中对应位数值,可以根据该组高位选择器1391所连接的高位部分积获取单元137,获取的符号位扩展后的部分积中的符号位数值确定,并且每组的N/2个高位选择器1391中,每个高位选择器1391接收到的对应位数值可以相同,可以不相同。
需要说明的是,每个高位部分积获取单元137包含的2N个数值生成子单元中,剩余的N/2个数值生成子单元可以不连接高位选择器1391,此时,该N/2个数值生成子单元获取的数值可以为乘法器当前所处理不同位宽的数据,得到的高位目标编码中的数值得到的对应的符号位扩展后的部分积中的对应位数值,也可以理解为,N/2个数值生成子单元获取的数值可以为对应符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(N+1)位至第3N/2位数值之间的所有数值。其中,每个高位部分积获取单元137中2N个数值生成子单元的位置的分布方式可以表征为,每个高位部分积获取单元137中2N个数值生成子单元均位于对应的列。
本实施例提供的一种乘法器,乘法器中的低位选择器组单元可以选通符号位扩展后的低位部分积中的数值,得到符号位扩展后的低位部分积,根据符号位扩展后的低位部分积得到目标低位编码部分积,进而通过修正压缩电路对目标低位编码部分积和得到的目标高位编码部分积进行累加处理,得到不同模式的乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
图4为另一实施例提供的乘法器中的修正压缩电路14的具体电路结构图,如图4所示,所述修正压缩电路14包括:修正华莱士树组单元141以及累加电路142;所述修正华莱士树组单元141的输出端与所述累加电路142的输入端连接;所述修正华莱士树组单元141用于对不同位宽数据运算得到的目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路142用于对实时累加运算结果进行累加处理得到所述乘法运算结果。
具体的,上述修正华莱士树组单元141可以对修正编码电路13得到的目标编码部分积中的每列数值进行累加处理,并通过累加电路142对修正华莱士树组单元141得到的两个运算结果进行累加处理,得到乘法运算结果。其中,通过修正华莱士树组单元141进行累加处理时,所有目标编码部分积的分布方式,可以表征为每个目标编码部分积中的最低位数值均位于同一列,每个目标编码部分积中的最高位数值均位于同一列,每个目标编码部分积中的其它位数值均对应位于同一列,修正华莱士树组单元141按照此分布方式,对所有目标编码部分积中的每列数值进行累加处理。可选的,目标编码部分积可以包括目标低位编码部分积和目标高位编码部分积,其中,最后一个目标低位编码部分积与第一个目标高位编码部分积中的对应位数值均对应不同的列。可选的,上述修正华莱士树组单元141得到的两个运算结果可以包括和位输出信号Sum与进位输出信号Carry。
本实施例提供的一种乘法器,乘法器通过修正华莱士树组电路可以对目标低位编码部分积和目标高位编码部分积进行累加处理得到累加运算结果,并通过累加电路对累加运算结果进行再次累加处理,得到乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取的有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
在其中一个实施例中,继续参见图4,所述修正压缩电路14中的修正华莱士树组单元141包括:低位华莱士树子单元1411、选择器1412以及高位华莱士树子单元1413,所述低位华莱士树子单元1411的输出端与所述选择器1412的输入端连接,所述选择器1412的输出端与所述高位华莱士树子单元1413的输入端连接;其中,多个所述低位华莱士树子单元1411用于对所述目标编码部分积中的每列数值进行累加运算,所述选择器1412用于选通所述高位华莱士树子单元1413接收的进位输入信号,多个所述高位华莱士树子单元1413用于对所述目标编码部分积中的每列数值进行累加运算。
具体的,多个低位华莱士树子单元1411和多个高位华莱士树子单元1413的电路结构均可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现;另外,还可以理解为是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,修正华莱士树组单元141中高位华莱士树子单元1413的数量可以等于乘法器当前可处理数据的位宽N,还可以等于低位华莱士树子单元1411的数量,并且各低位华莱士树子单元1411之间可以串行连接,各高位华莱士树子单元1413之间也可以串行连接。可选的,最后一个低位华莱士树子单元1411的输出端与选择器1412的输入端连接,选择器1412的输出端与第一个高位华莱士树子单元1211的输入端连接。可选的,修正华莱士树组单元141中每个低位华莱士树子单元1411可以对所有目标编码部分积的每列数值进行加法处理,每个低位华莱士树子单元1411可以输出两个信号,即进位信号Carryi与一个和位信号Sumi,其中,i可以表示每个低位华莱士树子单元1411对应的编号,第一个低位华莱士树子单元1411的编号为0。可选的,每个低位华莱士树子单元1411接收到输入信号的数量可以等于目标编码部分积数量。其中,修正华莱士树组单元141中高位华莱士树子单元1413与低位华莱士树子单元1411的数量之和,可以等于2N,所有目标编码部分积中,从最低列至最高列的总列数可以等于2N,N个低位华莱士树子单元1411可以对所有目标编码部分积中的低N列数值对应的每列数值进行累加运算,N个高位华莱士树子单元1413可以对所有目标编码部分积中的高N列数值对应的部分积每列数值进行累加运算。
示例性的,若乘法器能够接收到的数据位宽为N,并且乘法器当前可处理N位数据运算,此时,乘法器中的选择器1412可以选通修正华莱士树组单元141中的最后一个低位华莱士树子单元1411,输出的进位输出信号CoutN作为修正华莱士树组单元141中,第一个高位华莱士树子单元1413接收到的进位输入信号CinN+1,还可以理解为,乘法器当前可以将接收到的N位数据作为一个整体进行运算;若乘法器当前可处理N/2位数据运算,此时,乘法器中的选择器1412可以选通数值0作为修正华莱士树组单元141中,第一个高位华莱士树子单元1413接收到的进位输入信号CinN+1,还可以理解为,乘法器当前可以将接收到的N位数据划分成高N/2位数据和低N/2位数据分别进行乘法运算,其中,从第一个低位华莱士树子单元1411至最后一个低位华莱士树子单元1411的对应编号i分别为1,2,…,N,从第一个高位华莱士树子单元1413至最后一个高位华莱士树子单元1413的对应编号i分别为N+1,N+2,…,2N。
需要说明的是,修正华莱士树组单元141中每个低位华莱士树子单元1411和高位华莱士树子单元1413,接收到的信号可以包括进位输入信号Cini,部分积数值输入信号,进位输出信号Couti。可选的,每个低位华莱士树子单元1411和高位华莱士树子单元1413接收到的部分积数值输入信号,可以为所有目标编码部分积中对应列的所有数值,每个低位华莱士树子单元1411和高位华莱士树子单元1413输出的进位信号Couti的位数可以等于NCout=floor((NI+NCin)/2)-1。其中,NI可以表示该华莱士树子单元的数据输入位数,NCin可以表示该华莱士树子单元的进位输入位数,NCout可以表示该华莱士树子单元最少的进位输出位数,floor(·)可以表示向下取整函数。可选的,修正华莱士树组单元141中每个低位华莱士树子单元1411或高位华莱士树子单元1413接收到的进位输入信号,可以为上一个低位华莱士树子单元1411或高位华莱士树子单元1413输出的进位输出信号,并且第一个低位华莱士树子单元1411接收到的进位数输入信号为数值0。其中,第一个高位华莱士树子单元1413接收到的进位数输入信号,可以通过乘法器当前可处理的数据位宽与乘法器接收到的数据位宽确定。
本实施例提供的一种乘法器,乘法器通过修正华莱士树组电路可以对目标编码部分积进行累加处理得到两路输出信号,并通过累加电路对该两路输出信号进行再次累加处理,得到乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取的有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
作为其中一个实施例,继续参见图4所示,所述修正压缩电路14中的累加电路142包括:加法器1421,所述加法器1421用于对所述累加运算结果进行加法运算得到所述乘法运算结果。
具体的,加法器1421可以为不同位宽的进位加法器。可选的,加法器1421可以接收修正华莱士树组单元141输出的两路信号,并对这两路输出信号进行加法运算得到乘法运算结果。可选的,上述加法器1421可以为超前进位加法器,该超前进位加法器的位宽可以等于乘法器当前可处理数据位宽的2倍。
可选的,继续参见图4所示,所述修正压缩电路14中的累加电路142包括加法器1421,所述加法器1421包括:进位信号输入端口1421a、和位信号输入端口1421b以及运算结果输出端口1421c;所述进位信号输入端口1421a用于接收进位信号,所述和位信号输入端口1421b用于接收和位信号,所述运算结果输出端口1421c用于输出所述进位信号与所述和位信号进行累加处理得到的所述乘法运算结果。
需要说明的是,加法器1421可以通过进位信号输入端口1421a接收修正华莱士树组单元141输出的进位信号Carry,通过和位信号输入端口1421b接收修正华莱士树组单元141输出的和位信号Sum,将进位信号Carry与和位信号Sum进行累加处理得到乘法运算结果,并通过运算结果输出端口1421c输出乘法运算结果。
可以理解的是,乘法运算时,乘法器可以采用不同位宽的加法器1421对修正华莱士树组单元141输出的进位输出信号Carry与和位输出信号Sum进行加法运算;其中,上述加法器1421可处理的数据位宽可以等于乘法器当前可处理的数据位宽N的2倍。可选的,修正华莱士树组单元141中的每个低位华莱士树子单元1411和每个高位华莱士树子单元1413,可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=1,…,2N,i为每个低位华莱士树子单元或高位华莱士树子单元的对应编号,编号从1开始)。可选的,加法器1421接收到的Carry={[Carry1:Carry2N-1],0};也就是说,加法器1421接收到的进位输出信号Carry的位宽为2N,进位输出信号Carry中前(2N-1)位数值对应修正华莱士树组单元141中,前(2N-1)个低位华莱士树子单元和高位华莱士树子单元的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器1421接收到的和位输出信号Sum的位宽为N,和位输出信号Sum中的数值可以等于修正华莱士树组单元141中每个低位华莱士树子单元以及高位华莱士树子单元的和位输出信号。
示例性的,若乘法器当前可处理8位定点数乘法运算,则乘法器中的加法器1421可以为16位进位加法器,如图5所示,图中示出了每个华莱士树子单元均接收到4个目标编码的部分积中的数值,修正华莱士树组单元141可以输出16个低位华莱士树子单元和高位华莱士树子单元的和位输出信号Sum和进位输出信号Carry;但是,16位进位加法器接收到的和位输出信号,可以为修正华莱士树组单元141输出的完整和位信号Sum,接收到的进位输出信号可以为修正华莱士树组单元141中,除去最后一个高位华莱士树子单元1413输出的进位输出信号的所有进位输出信号,与数值0结合后的进位信号Carry。
本实施例提供的一种乘法器,乘法器通过累加电路可以对修正华莱士树组电路输出的两路信号进行累加处理,输出乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取的有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
图6为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图1所示的乘法器进行处理,本实施例涉及的是对不同位宽的数据进行乘法运算的过程。如图6所示,该方法包括:
S101、接收待处理数据和功能选择模式信号,其中,所述功能选择模式信号用于指示乘法器当前可处理的数据位宽。
具体的,乘法器可以通过修正编码电路接收待处理数据,该待处理数据可以为乘法运算中的乘数和被乘数。每一次乘法运算时,乘法器中的修正编码电路和修正压缩电路,均可以接收到相同的功能选择模式信号。可选的,上述待处理数据可以为定点数。若乘法器接收不同的功能选择模式信号,则表征乘法器可处理不同位宽的数据运算;同时,不同功能选择模式信号与乘法器可处理不同位宽的数据之间的对应关系可以灵活设置,对此本实施例不作任何限定。若修正编码电路和修正压缩电路可以接收多种不同的功能选择模式信号,以三种功能选择模式信号(即,mode信号)为例,mode信号分别可以为00、01以及10,则mode=00可以表征乘法器当前可处理16位数据,mode=01可以表征乘法器当前可处理32位数据,mode=10可以表征乘法器当前可处理64位数据;另外,mode=00也可以表征为乘法器当前可处理64位数据,mode=01也可以表征为乘法器当前可处理16位数据,mode=10可以表征乘法器当前可处理32位数据。
可选的,修正编码电路接收到的乘法运算中的乘数和被乘数的位宽可以为8比特,16比特,32比特,64比特,对此本实施例不做任何限定。其中,乘法运算中乘数的位宽可以等于乘法运算中被乘数的位宽。
S102、当所述待处理数据为非0数据时,则将所述待处理数据存储至数据寄存器中。
具体的,乘法器通过判断电路可以判断接收到的待处理数据是否为非0数据,若为非0数据,则将待处理数据存储至数据寄存器中,以对该待处理数据进行乘法运算。可选的,待处理数据可以包括乘法运算中的乘数和被乘数。
可选的,在上述S101的步骤之后,所述方法可以还包括:当所述待处理数据为全0数据时,则将数据0作为所述乘法运算结果。
需要说明的,若判定待处理数据不是非0数据,即全0数据,则乘法器不需要将该待处理数据进行存储至数据寄存器中,也就是,乘法器不需要对该待处理数据进行乘法运算。可选的,全0数据可以为无效数据。
S103、根据所述功能选择模式信号选通待编码信号。
可选的,上述S103中根据所述功能选择模式信号选通待编码信号的步骤,具体可以包括:根据所述功能选择模式信号选通数值0作为所述待编码信号,或者选通所述待处理数据中低位数据对应的最高位数值作为所述待编码信号。
具体的,乘法器中的选择器可以根据接收到的功能选择模式信号以及乘法器接收到的待处理数据的位宽,确定选通后输出的待编码信号。可选的,待编码信号可以为数值0或者待处理数据中的低位数据对应的最高位数值,该待处理数据可以为乘法运算中的乘数。其中,若待处理数据的位宽为2N,则高N位数据可以为待处理数据中的高位数据,低N位数据可以为待处理数据中的低位数据。
需要说明的是,若乘法器接收到的数据位宽为2N,并且乘法器当前可处理的数据位宽也为2N,则乘法器中的选择器选通待处理数据中的低位数据对应的最高位数值,作为待处理数据中的高位数据进行编码处理时的补位数值,此时,乘法器可以将接收到的2N位数据作为一个整体进行乘法运算;若乘法器当前可处理的数据位宽为N,则乘法器需要将接收到的2N位待处理数据分成高N位数据和低N位数据进行并行处理,此时,乘法器可以通过选择器选通0,作为待处理数据中的高位数据进行编码处理时的补位数值。
S104、根据所述待编码信号和所述待处理数据进行编码处理,得到目标编码部分积。
具体的,上述编码处理可以为二进制编码处理。可选的,目标编码部分积的位宽可以等于乘法器当前可处理数据位宽的2倍。
S105、对所述目标编码部分积进行累加处理,得到乘法运算结果。
具体的,乘法器中的累加电路可以对所有目标编码部分积中的每列数值进行累加运算,得到乘法运算结果。可选的,乘法运算结果的位宽可以等于乘法器当前可处理数据位宽的2倍。
本实施例提供的一种数据处理方法,接收待处理数据和功能选择模式信号,当所述待处理数据为非0数据时,则将所述待处理数据存储至数据寄存器中,根据所述功能选择模式信号选通待编码信号,根据所述待编码信号和所述待处理数据进行编码处理,得到目标编码部分积,对所述目标编码部分积进行累加处理,得到乘法运算结果;该方法可以根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;另外,该方法可以仅对有效数据进行处理,以得到有效部分积的数量减少,从而减少了无效运算量,降低了乘法器的运算功耗。
图7为另一实施例提供的得到目标编码部分积的具体流程示意图,如图7所示,上述S104中根据所述待编码信号和所述待处理数据进行编码处理,得到目标编码部分积的步骤,可以包括:
S1041、根据所述待编码信号和所述待处理数据,得到待编码数据。
可选的,上述S1041中根据所述待编码信号和所述待处理数据,得到待编码数据的步骤,具体可以包括:对所述待处理数据进行补位处理,得到补位后的数据;根据所述待编码信号以及所述补位后的数据,得到待编码数据。
具体的,乘法器在对待处理数据进行布斯编码处理之前,可以先对待处理数据进行自动补位处理,得到补位后的数据。可选的,补位处理可以表征为对待处理数据(即待处理数据中的低位数据)的最低位数值的更低一位处补一位数值0。示例性的,若乘法器当前可处理8位定点数乘法运算,乘数为“y7y6y5y4y3y2y1y0”,则乘法器对乘数进行自动补位处理后,将乘数转换为补位后的数据“y7y6y5y4y3y2y1y00”,当i=0时,y2i+1=y1,y2i=y0,y2i-1=y-1,则y-1可以表示y0后的补位数值0(即自动补位处理后的乘数表示为y7y6y5y4y3y2y1y0y-1)。若乘法器当前可处理的数据位宽等于乘法器接收到的数据位宽,此时,乘法器中的选择器接收到的待编码信号可以为y3,根据待编码信号以及补位后的待处理数据,得到四组待编码数据,分别包括y-1y0y1,y1y2y3,y3y4y5和y5y6y7;若乘法器当前可处理的数据位宽等于乘法器接收到的数据位宽的1/2,此时,乘法器中的选择器接收到的待编码信号可以为数值0,根据待编码信号以及补位后的待处理数据,得到四组待编码数据,分别包括y-1y0y1,y1y2y3,0y4y5和y5y6y7;其中,每组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。
S1042、对所述待编码数据进行布斯编码处理,得到目标编码。
具体的,乘法器可以根据表1所示的布斯编码方式,对每组待编码数据进行布斯编码处理,得到目标编码,该目标编码可以包括五类,分别为-2X,2X,-X,X和0,其中,X可以表示乘法器接收到的被乘数。可选的,上述目标编码的数量可以等于乘法器当前可处理数据位宽的1/2。可选的,上述目标编码可以包括低位目标编码和高位目标编码。
S1043、根据所述目标编码以及所述待处理数据,得到所述目标编码部分积。其中,所述目标编码部分积包括目标低位编码部分积以及目标高位编码部分积。
可选的,上述S1043中根据所述目标编码以及所述待处理数据,得到所述目标编码部分积的步骤,具体可以包括:根据所述目标编码和所述待处理数据,得到符号位扩展后的部分积;根据所述符号位扩展后的部分积得到所述目标编码部分积。可选的,所述根据所述符号位扩展后的部分积得到所述目标编码部分积的步骤,具体可以包括:删除所有符号位扩展后的部分积中数据为0的部分积,得到所述目标编码部分积。
具体的,乘法器可以根据有效的目标编码以及待处理数据,得到符号位扩展后的部分积,该待处理数据可以为乘法运算中的被乘数;上述符号位扩展后的部分积可以包括符号位扩展后的高位部分积以及符号位扩展后的部分积。也就是,乘法器可以不需要对无效的目标编码进行处理;另外,乘法器即使根据无效的目标编码以及待处理数据,得到的目标编码部分积可以为数据0,即无效数据。可选的,目标编码可以包括低位目标编码和高位目标编码。可选的,乘数中的低位数据可以对应低位目标编码,乘数中的高位数据可以对应高位目标编码。
需要说明的是,若乘法器可处理N位数据运算和2N位数据运算,且乘法器根据接收到的功能选择模式信号确定当前可处理N位数据运算,则乘法器通过低位逻辑运算单元可以对低位目标编码,与乘法器进行2N位数据乘法运算时得到的对应低位目标编码进行与逻辑运算,得到第一逻辑运算结果;若第一逻辑运算结果为低电平信号,此时,乘法器可以舍去该低位目标编码,不需要根据该低位目标编码进行后续处理,此时,这些低位目标编码可以称为无效的低位目标编码。可选的,乘法器根据接收到的功能选择模式信号确定当前可处理2N位数据运算,则乘法器通过低位逻辑运算单元可以对低位目标编码,与乘法器进行N位数据乘法运算时得到的对应低位目标编码进行与逻辑运算,得到第一逻辑运算结果;若第一逻辑运算结果为高电平信号,此时,乘法器可以根据该低位目标编码与待处理被乘数进行后续处理,以得到目标低位编码部分积,这些低位目标编码可以称为有效的低位目标编码。在本实施例中,乘法器仅使获取到的有效的低位目标编码参与后续处理,以得到有效部分积,并且参与后续处理的目标编码的数量可以小于等于乘法器当前可处理数据位宽的1/2。可选的,目标编码部分积的数量可以小于等于目标编码的数量。
进一步地,若乘法器可处理N位数据运算和2N位数据运算,且乘法器根据接收到的功能选择模式信号确定当前可处理N位数据运算,则乘法器通过高位逻辑运算单元可以对低位目标编码,与乘法器进行2N位数据乘法运算时得到的对应高位目标编码进行与逻辑运算,得到第二逻辑运算结果;若第二逻辑运算结果为低电平信号,此时,乘法器可以舍去该高位目标编码,不需要根据该高位目标编码进行后续处理,此时,这些高位目标编码可以称为无效的高位目标编码。可选的,乘法器根据接收到的功能选择模式信号确定当前可处理2N位数据运算,则乘法器通过高位逻辑运算单元可以对高位目标编码,与乘法器进行N位数据乘法运算时得到的对应高位目标编码进行与逻辑运算,得到第二逻辑运算结果;若第二逻辑运算结果为高电平信号,此时,乘法器可以根据该高位目标编码与待处理被乘数进行后续处理,得到目标高位编码部分积,这些高位目标编码可以称为有效的高位目标编码。在本实施例中,乘法器仅使获取到的有效的高位目标编码参与后续处理,以得到有效部分积。
可以理解的是,若目标编码以及N位待处理被乘数可以得到(N+1)位原始部分积。可选的,当目标编码为-2X时,则原始部分积可以为对X进行左右一位后取反再加1;当目标编码为2X时,则原始部分积可以为对X进行左移一位;当目标编码为-X时,则原始部分积可以为对X按位取反再加1;当目标编码为X时,则原始部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据;当目标编码为±0时,则原始部分积可以为0,也就是原始部分积中的每一位数值均等于0。可选的,对原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,扩展的符号位数量可以等于(N-1)位符号位数值。可选的,上述符号位扩展处理可以表征为对一个数据进行补符号位处理,补符号位数值等于原始部分积的符号位数值(即最高位数值);其中,符号位扩展后的部分积的高N位数值可以相等,低N位数值可以等于原始部分积中的所有数值。另外,乘法器可以将所有符号位扩展后的部分积中为数据0的部分积进行删除,相当于仅保留非0数据的部分积(即有效部分积)进行后续运算。
其中,所有目标编码部分积的分布方式,可以表征为每个目标编码部分积中的最低位数值均位于同一列,每个目标编码部分积中的最高位数值均位于同一列,每个目标编码部分积中的其它位数值均对应位于同一列。可选的,目标编码部分积可以包括目标低位编码部分积和目标高位编码部分积,其中,最后一个目标低位编码部分积与第一个目标高位编码部分积中的对应位数值均对应不同的列。
本实施例提供的一种数据处理方法,该方法可以保证乘法器运算结果准确性的前提下,对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;另外,该方法可以仅对有效数据进行处理,以得到有效部分积的数量减少,从而减少了无效运算量,降低了乘法器的运算功耗。
图8为另一实施例提供的得到乘法运算结果的流程示意图,如图8所示,上述S105中对所述目标编码部分积进行累加处理,得到乘法运算结果的步骤,可以包括如下方式:
S1051、通过修正华莱士树组单元对所述目标低位编码部分积和所述目标高位编码部分积,进行累加处理得到累加运算结果。
具体的,乘法器可以通过修正华莱士树组电路对所有目标低位编码部分积和所有目标高位编码部分积,按照分布方式对每列数值进行累加处理,得到累加运算结果。可选的,累加运算结果可以包括和位输出信号Sum与进位输出信号Carry,其中,和位输出信号Sum与进位输出信号Carry的位宽可以相同。
S1052、通过累加电路对所述累加运算结果进行累加处理,得到乘法运算结果。
具体的,乘法器可以通过累加电路中的加法器对修正华莱士树组电路输出的进位输出信号Carry与和位输出信号Sum进行累加运算,得到乘法运算结果。可选的,修正华莱士树组电路中每个华莱士树单元可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=0,…,N-1,i为每个华莱士树子单元的对应编号,编号从0开始)。可选的,加法器接收到的Carry={[Carry0:CarryN-2],0},也就是说,加法器接收到的进位输出信号Carry的位宽为N,进位输出信号Carry中前N-1位数值对应修正华莱士树组电路中前N-1个华莱士树子单元的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器接收到的和位输出信号Sum的位宽为N,和位输出信号Sum中的数值可以等于修正华莱士树组电路中每个华莱士树子单元的和位输出信号。
示例性的,若乘法器当前可处理8位数据运算,则加法器可以为16位超前进位加法器,如图3所示,修正华莱士树组电路可以输出16个华莱士树子单元的和位输出信号Sum和进位输出信号Carry,但是16位超前进位加法器接收到的和位输出信号可以为修正华莱士树组电路输出的完整和位信号Sum,接收到的进位输出信号可以为修正华莱士树组电路中,除去最后一个华莱士树子单元输出的进位输出信号的所有进位输出信号与数值0结合后的进位信号Carry。
本实施例提供的一种数据处理方法,该方法通过修正华莱士树组电路对所有目标低位编码部分积和所有目标高位编码部分积,进行累加处理得到累加运算结果,通过累加电路对累加运算结果进行累加处理,得到乘法运算结果;该方法可以根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;另外,该方法还可以仅对有效数据进行处理,以得到有效部分积的数量减少,从而减少了无效运算量,降低了乘法器的运算功耗。
图9为另一实施例提供的得到累加运算结果的具体流程示意图,如图9所示,上述S1051中通过修正华莱士树组单元对所述目标低位编码部分积和所述目标高位编码部分积,进行累加处理得到累加运算结果的步骤,具体可以包括:
S1051a、通过低位华莱士树子单元对所有目标编码部分积中的列数值进行累加处理,得到中间运算结果。
具体的,按照所有目标低位编码部分积和所有目标高位编码部分积的分布方式可知,所有目标编码部分积对应数值的总列数为2N(N为乘法器当前可处理的数据位宽),从最低列数值开始每列数值对应的编号可以为0,…,2N-1,其中,编号0至N-1可以称低N列数值。可选的,中间运算结果可以为低位华莱士树子单元中的最后一个华莱士树子单元输出的进位输出信号Cout。
需要说明的是,低位华莱士树子单元中包含的N个华莱士树子单元可以按照编号顺序对低N列数值进行累加运算,得到中间运算结果。可选的,中间运算结果可以包括每个华莱士树子单元的进位输出信号Carry,Sum,以及低位华莱士树子单元中的最后一个华莱士树子单元的输出信号Cout。
S1051b、通过选择器对所述中间运算结果进行选通,得到进位选通信号。
具体的,修正压缩电路中的选择器可以根据接收到的功能选择模式信号,选通低位华莱士树子单元中的最后一个华莱士树子单元的输出信号Cout或0,得到进位选通信号。可选的,Cout可以为中间运算结果包含的信号。
S1051c、通过高位华莱士树子单元根据所述进位选通信号以及所有目标编码部分积中的列数值进行累加处理,得到所述累加运算结果。
具体的,按照所有目标编码部分积的分布方式可知,所有目标编码部分积对应数值的总列数为2N(N为乘法器当前可处理的数据位宽),从最低列数值开始每列数值对应的编号可以为0,…,2N-1,其中,编号N至2N-1可以称高N列数值。
需要说明的是,高位华莱士树子单元中包含的N个华莱士树子单元可以按照编号顺序对高N列数值进行累加运算,输出累加运算结果。其中,高位华莱士树子单元中的第一个华莱士树子单元接收到的进位输入信号可以为选择器输出的进位选通信号。
本实施例提供的一种数据处理方法,该方法通过低位华莱士树子单元对所有目标编码部分积中的列数值进行累加处理,得到中间运算结果,通过选择器对中间运算结果进行选通,得到进位选通信号,高位华莱士树子单元根据进位选通信号以及所有目标编码部分积中的列数值进行累加处理,得到累加运算结果,进而对累加运算结果进行累加运算,得到乘法运算结果;该方法可以根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用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 (28)
1.一种乘法器,其特征在于,所述乘法器包括:判断电路、数据寄存器、修正编码电路和修正压缩电路;所述判断电路的输出端与所述数据寄存器的输入端连接,所述数据寄存器的输出端与所述修正编码电路的输入端连接,所述修正编码电路的输出端与所述修正压缩电路的输入端连接;
其中,所述判断电路用于判断接收到的数据是否包含全0数据,并根据判断结果输出数据门控信号,所述数据寄存器用于根据所述数据门控信号选择接收所述数据,并存储所述数据。
2.根据权利要求1所述的乘法器,其特征在于,所述修正编码电路用于对所述数据寄存器存储的所述数据进行编码处理,得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码部分积,所述修正压缩电路用于对所述目标编码部分积进行累加处理得到乘法运算结果。
3.根据权利要求1或2所述的乘法器,其特征在于,所述修正编码电路中包括第一输入端,用于接收输入的功能选择模式信号;所述修正压缩电路中包括第一输入端,用于接收输入的所述功能选择模式信号;所述功能选择模式信号用于确定所述乘法器当前可处理的数据位宽。
4.根据权利要求1至3中任一项所述的乘法器,其特征在于,所述判断电路包括:数据输入端口、逻辑信号输出端口以及数据输出端口,所述数据输入端口用于接收进行乘法运算的数据,所述逻辑信号输出端口用于输出所述判断电路根据判断结果得到的所述数据门控信号,所述数据输出端口用于输出所述数据。
5.根据权利要求1至4中任一项所述的乘法器,其特征在于,所述修正编码电路包括:低位布斯编码单元、低位逻辑运算单元、低位部分积获取单元、选择器、高位布斯编码单元、高位逻辑运算单元、高位部分积获取单元、低位选择器组单元以及高位选择器组单元;所述低位布斯编码单元的第一输出端与所述选择器的输入端连接,所述低位布斯编码单元的第二输出端与所述低位逻辑运算单元的输入端连接,所述低位逻辑运算单元的输出端与所述低位部分积获取单元的第一输入端连接,所述选择器的输出端与所述高位布斯编码单元的第一输入端连接,所述高位布斯编码单元的输出端与所述高位逻辑运算单元的输入端连接,所述高位逻辑运算单元的输出端与所述高位部分积获取单元的第一输入端连接,所述低位选择器组单元的输出端与所述低位部分积获取单元的第二输入端连接,所述高位选择器组单元的输出端与所述高位部分积获取单元的第二输入端连接;
其中,所述低位布斯编码单元用于对所述数据寄存器输入的所述第一数据中的低位数据进行布斯编码处理,得到低位目标编码,所述低位逻辑运算单元用于根据所述低位目标编码进行与逻辑运算得到第一逻辑运算,并根据所述第一逻辑运算结果确定是否将所述低位目标编码输入至所述低位部分积获取单元,所述低位部分积获取单元用于根据所述低位目标编码以及所述数据寄存器输入的所述第二数据,得到符号位扩展后的低位部分积,所述选择器用于选通所述第一数据中的高位数据进行布斯编码处理时的补位数值,所述高位布斯编码单元用于对所述第一数据中的高位数据以及所述补位数值,进行布斯编码处理得到高位目标编码,所述高位逻辑运算单元用于根据所述高位目标编码进行与逻辑运算得到第二逻辑运算,并根据所述第二逻辑运算结果确定是否将所述高位目标编码输入至所述高位部分积获取单元,所述高位部分积获取单元用于根据所述高位目标编码以及所述数据寄存器输入的所述第二数据,得到符号位扩展后的高位部分积,所述低位选择器组单元用于选通所述符号位扩展后的低位部分积中的数值,所述高位选择器组单元用于选通所述符号位扩展后的高位部分积中的数值。
6.根据权利要求5所述的乘法器,其特征在于,所述低位布斯编码单元包括:低位数据输入端口、低位目标编码输出端口以及选通数值输出端口;所述低位数据输入端口用于接收所述第一数据中的低位数据,所述低位目标编码输出端口用于输出对所述低位数据进行布斯编码处理后得到的低位目标编码,所述选通数值输出端口用于将所述低位数据中的最高位数值输出,并输入至所述高位布斯编码单元。
7.根据权利要求5或6所述的乘法器,其特征在于,所述低位逻辑运算单元包括:低位目标编码输入端口以及低位目标编码输出端口,所述低位目标编码输入端口用于接收所述低位逻辑运算单元输出的所述低位目标编码,所述低位目标编码输出端口用于输出有效的低位目标编码。
8.根据权利要求5至7中任一项所述的乘法器,其特征在于,所述低位部分积获取单元包括:低位目标编码输入端口、第一选通数值输入端口、模式信号输入端口、数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述低位逻辑运算单元输出的所述低位目标编码,所述第一选通数值输入端口用于接收所述低位选择器组单元选通后,输出的所述符号位扩展后的低位部分积中包含的数值,所述模式信号输入端口用于接收所述功能选择模式信号,所述数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出所述目标低位编码部分积。
9.根据权利要求5至8中任一项所述的乘法器,其特征在于,所述选择器包括:模式信号输入端口、第一选通数值输入端口、第二选通数值输入端口以及选通数值输出端口;所述模式信号输入端口用于接收所述功能选择模式信号,所述第一选通数值输入端口用于接收第一选通数值,所述第二选通数值输入端口用于接收第二选通数值,所述选通数值输出端口用于输出选通后获取的所述第一选通数值或所述第二选通数值。
10.根据权利要求5至9中任一项所述的乘法器,其特征在于,所述高位布斯编码单元包括:高位数据输入端口、高位目标编码输出端口以及选通数值输入端口;所述高位数据输入端口用于接收所述第一数据中的高位数据,所述高位目标编码输出端口用于输出对所述高位数据进行布斯编码处理后得到的高位目标编码,所述选通数值输入端口用于接收所述选择器输出的所述低位数据中的最高位数值或者数值0。
11.根据权利要求5至10中任一项所述的乘法器,其特征在于,所述高位逻辑运算单元包括:高位目标编码输入端口以及高位目标编码输出端口,所述高位目标编码输入端口用于接收所述高位逻辑运算单元输出的所述高位目标编码,所述高位目标编码输出端口用于输出有效的高位目标编码。
12.根据权利要求5至11中任一项所述的乘法器,其特征在于,所述高位部分积获取单元包括:高位目标编码输入端口、第二选通数值输入端口、模式信号输入端口、数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述高位逻辑运算单元输出的所述高位目标编码,所述第二选通数值输入端口用于接收所述高位选择器组单元选通后,输出的所述符号位扩展后的高位部分积中包含的数值,所述模式信号输入端口用于接收所述功能选择模式信号,所述数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所述目标高位编码部分积。
13.根据权利要求5至12中任一项所述的乘法器,其特征在于,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对所述符号位扩展后的低位部分积中的数值进行选通。
14.根据权利要求5至13中任一项所述的乘法器,其特征在于,所述高位选择器组单元包括:高位选择器,所述高位选择器用于对所述符号位扩展后的高位部分积中的数值进行选通。
15.根据权利要求1至14中任一项所述的乘法器,其特征在于,所述修正压缩电路包括:修正华莱士树组单元以及累加电路;所述修正华莱士树组单元的输出端与所述累加电路的输入端连接;所述修正华莱士树组单元用于对不同位宽数据运算得到的目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路用于对实时累加运算结果进行累加处理得到所述乘法运算结果;
以及优选地,所述修正华莱士树组单元包括:低位华莱士树子单元、选择器以及高位华莱士树子单元,所述低位华莱士树子单元的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子单元的输入端连接;其中,所述低位华莱士树子单元用于对所述目标编码部分积中的每列数值进行累加运算,所述选择器用于选通所述高位华莱士树子单元接收的进位输入信号,所述高位华莱士树子单元用于对所述目标编码部分积中的每列数值进行累加运算。
16.根据权利要求15所述的乘法器,其特征在于,所述累加电路包括:加法器,所述加法器用于对所述累加运算结果进行加法运算得到所述乘法运算结果;
以及优选地,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述运算结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的所述乘法运算结果。
17.一种数据处理方法,其特征在于,所述方法包括:
接收待处理数据和功能选择模式信号,其中,所述功能选择模式信号用于指示乘法器当前可处理的数据位宽;
当所述待处理数据为非0数据时,则将所述待处理数据存储至数据寄存器中;
根据所述功能选择模式信号选通待编码信号;
根据所述待编码信号和所述待处理数据进行编码处理,得到目标编码部分积;
对所述目标编码部分积进行累加处理,得到乘法运算结果。
18.根据权利要求17所述的方法,其特征在于,当所述待处理数据为全0数据时,所述方法还包括:将数据0作为所述乘法运算结果。
19.根据权利要求17或18所述的方法,其特征在于,所述根据所述功能选择模式信号选通待编码信号,包括:根据所述功能选择模式信号选通数值0作为所述待编码信号,或者选通所述待处理数据中低位数据对应的最高位数值作为所述待编码信号。
20.根据权利要求17至19中任一项所述的方法,其特征在于,所述根据所述待编码信号和所述待处理数据进行编码处理,得到目标编码部分积,包括:
根据所述待编码信号和所述待处理数据,得到待编码数据;
对所述待编码数据进行布斯编码处理,得到目标编码;
根据所述目标编码以及所述待处理数据,得到所述目标编码部分积。
21.根据权利要求20所述的方法,其特征在于,所述根据所述待编码信号和所述待处理数据,得到待编码数据,包括:
对所述待处理数据进行补位处理,得到补位后的数据;
根据所述待编码信号以及所述补位后的数据,得到待编码数据。
22.根据权利要求20或21所述的方法,其特征在于,所述根据所述目标编码以及所述待处理数据,得到所述目标编码部分积,包括:
根据所述目标编码和所述待处理数据,得到符号位扩展后的部分积;
根据所述符号位扩展后的部分积得到所述目标编码部分积。
23.根据权利要求22所述的方法,其特征在于,所述根据所述符号位扩展后的部分积得到所述目标编码部分积,包括:删除所有符号位扩展后的部分积中数据为0的部分积,得到所述目标编码部分积。
24.根据权利要求17至23中任一项所述的方法,其特征在于,所述目标编码部分积包括目标低位编码部分积以及目标高位编码部分积;所述对所述目标编码部分积进行累加处理,得到乘法运算结果,包括:
通过修正华莱士树组单元对所述目标低位编码部分积和所述目标高位编码部分积,进行累加处理得到累加运算结果;
通过累加电路对所述累加运算结果进行累加处理,得到乘法运算结果。
25.根据权利要求24所述的方法,其特征在于,所述通过修正华莱士树组单元对所述目标低位编码部分积和所述目标高位编码部分积,进行累加处理得到累加运算结果,包括:
通过低位华莱士树子单元对所有目标编码部分积中的列数值进行累加处理,得到中间运算结果;
通过选择器对所述中间运算结果进行选通,得到进位选通信号;
通过高位华莱士树子单元根据所述进位选通信号以及所有目标编码部分积中的列数值进行累加处理,得到所述累加运算结果。
26.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求1-16任一项所述的乘法器,用于从所述机器学习运算装置中除所述乘法器以外的其它处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给所述机器学习运算装置中除所述乘法器以外的其它处理装置;
当所述机器学习运算装置包含多个所述乘法器时,多个所述乘法器间可以通过预设结构进行连接并传输数据;
其中,多个所述乘法器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。
27.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求26所述的机器学习运算装置,通用互联接口和所述组合处理装置中除所述机器学习运算装置以外的其它处理装置;
所述机器学习运算装置与所述组合处理装置中除所述机器学习运算装置以外的其它处理装置进行交互,共同完成用户指定的计算操作;
以及优选地,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置连接,用于保存所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置的数据。
28.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求26所述的机器学习运算装置或如权利要求27所述的组合处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911349756.6A CN113031915A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911349756.6A CN113031915A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113031915A true CN113031915A (zh) | 2021-06-25 |
Family
ID=76452340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911349756.6A Pending CN113031915A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113031915A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991359A (zh) * | 2023-09-26 | 2023-11-03 | 上海为旌科技有限公司 | Booth乘法器、混合Booth乘法器及运算方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739231A (zh) * | 2010-01-04 | 2010-06-16 | 西安电子科技大学 | 布斯-华莱士树型乘法器 |
US20120143934A1 (en) * | 2010-12-03 | 2012-06-07 | Via Technologies, Inc | Mechanism for carryless multiplication that employs booth encoding |
CN102591615A (zh) * | 2012-01-16 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 结构化混合位宽乘法运算方法及装置 |
CN110058840A (zh) * | 2019-03-27 | 2019-07-26 | 西安理工大学 | 一种基于4-Booth编码的低功耗乘法器 |
CN110531954A (zh) * | 2019-08-30 | 2019-12-03 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN110554854A (zh) * | 2019-09-24 | 2019-12-10 | 上海寒武纪信息科技有限公司 | 数据处理器、方法、芯片及电子设备 |
-
2019
- 2019-12-24 CN CN201911349756.6A patent/CN113031915A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739231A (zh) * | 2010-01-04 | 2010-06-16 | 西安电子科技大学 | 布斯-华莱士树型乘法器 |
US20120143934A1 (en) * | 2010-12-03 | 2012-06-07 | Via Technologies, Inc | Mechanism for carryless multiplication that employs booth encoding |
CN102591615A (zh) * | 2012-01-16 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 结构化混合位宽乘法运算方法及装置 |
CN110058840A (zh) * | 2019-03-27 | 2019-07-26 | 西安理工大学 | 一种基于4-Booth编码的低功耗乘法器 |
CN110531954A (zh) * | 2019-08-30 | 2019-12-03 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN110554854A (zh) * | 2019-09-24 | 2019-12-10 | 上海寒武纪信息科技有限公司 | 数据处理器、方法、芯片及电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991359A (zh) * | 2023-09-26 | 2023-11-03 | 上海为旌科技有限公司 | Booth乘法器、混合Booth乘法器及运算方法 |
CN116991359B (zh) * | 2023-09-26 | 2023-12-22 | 上海为旌科技有限公司 | Booth乘法器、混合Booth乘法器及运算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413254B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110515587B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111381808B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110673823B (zh) | 乘法器、数据处理方法及芯片 | |
CN110531954B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110554854A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN113031912B (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN111258633B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258544B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113031915A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN209879493U (zh) | 乘法器 | |
CN113031911B (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN111258542B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258545B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN210109789U (zh) | 数据处理器 | |
CN210006031U (zh) | 乘法器 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN113033799A (zh) | 数据处理器、方法、装置及芯片 | |
CN110688087A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN113031916A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN209962284U (zh) | 乘法器、装置、芯片及电子设备 | |
CN111258546B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113033788B (zh) | 数据处理器、方法、装置及芯片 | |
CN209879492U (zh) | 乘法器、机器学习运算装置及组合处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |