CN113031912A - 乘法器、数据处理方法、装置及芯片 - Google Patents
乘法器、数据处理方法、装置及芯片 Download PDFInfo
- Publication number
- CN113031912A CN113031912A CN201911349749.6A CN201911349749A CN113031912A CN 113031912 A CN113031912 A CN 113031912A CN 201911349749 A CN201911349749 A CN 201911349749A CN 113031912 A CN113031912 A CN 113031912A
- Authority
- CN
- China
- Prior art keywords
- order
- data
- partial product
- target
- multiplier
- 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 12
- 230000006835 compression Effects 0.000 claims abstract description 37
- 238000007906 compression Methods 0.000 claims abstract description 37
- 238000012937 correction Methods 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 239
- 230000006870 function Effects 0.000 claims description 137
- 238000000034 method Methods 0.000 claims description 96
- 238000009825 accumulation Methods 0.000 claims description 72
- 238000010801 machine learning Methods 0.000 claims description 50
- 230000000295 complement effect Effects 0.000 claims description 26
- 230000015654 memory Effects 0.000 claims description 13
- 238000013528 artificial neural network Methods 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 18
- 238000013473 artificial intelligence Methods 0.000 description 14
- 238000005429 filling process Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 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
- 238000005516 engineering process Methods 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
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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
- 230000001502 supplementing 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供一种乘法器、数据处理方法、装置及芯片,所述乘法器包括:修正布斯编码电路、中间数据寄存器、压缩电路以及输出数据寄存器;所述压缩电路包括4‑2压缩器,所述4‑2压缩器包括全加器以及选择电路;所述修正布斯编码电路的输出端与所述中间数据寄存器的输入端连接,所述中间数据寄存器的输出端与所述压缩电路的输入端连接,所述压缩电路的输出端与所述输出数据寄存器的输入端连接,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种乘法器、数据处理方法、装置及芯片。
背景技术
随着数字电子技术的不断发展,各类人工智能(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位数据乘法运算得到的初始高位编码部分积以及初始低位编码部分积的分布规律示意图;
图6为另一实施例提供的乘法器中的压缩电路和输出数据寄存器的具体电路结构图;
图7为另一实施例提供的华莱士树单元的具体电路结构示意图;
图8为另一实施例提供的8位数据运算时压缩电路的具体电路结构图;
图9为一实施例提供的一种数据处理方法流程示意图;
图10为另一实施例提供的得到目标编码部分积的具体流程示意图;
图11为另一个实施例提供的得到乘法运算结果的具体流程示意图;
图12为一实施例提供的一种组合处理装置的结构图;
图13为一实施例提供的另一种组合处理装置的结构图;
图14为一实施例提供的一种板卡的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的乘法器可应用于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用于存储所述乘法运算结果,并根据所述功能选择模式信号以及所述乘法运算结果确定输出目标运算结果。
具体的,上述修正布斯编码电路11可以包括两个具有不同功能的数据处理单元,并且修正布斯编码电路11接收到的数据均可以为定点数,且该数据可以作为乘法运算中的乘数,还可以作为乘法运算中的被乘数。可选的,修正布斯编码电路11可以接收多种不同比特位宽的数据,也就是说,本实施例提供的乘法器可以处理多种不同比特位宽数据的乘法运算。但是,同一次乘法运算时,修正布斯编码电路11接收到的乘数和被乘数可以是同位宽的数据,即乘数和被乘数位宽相等。示例性的,本实施例提供的乘法器可以处理2比特、4比特、8比特、16比特等等位宽数据的乘法运算,对此本实施例不作任何限定。
在本实施例中,上述布斯编码处理可以表征为一种二进制编码处理。可选的,上述修正布斯编码电路11可以接收乘法运算中的乘数和被乘数,并对乘数进行布斯编码处理。可选的,在进行布斯编码处理前,修正布斯编码电路11可以自动对乘数进行补位处理,该补位处理可以表征为对乘数中最低位数值的更低一位处补数值0,例如,乘数为“y7y6y5y4y3y2y1y0”,则在进行布斯编码处理前,修正布斯编码电路11可以自动对乘数进行补位处理,得到补位后的数据“y7y6y5y4y3y2y1y00”。
可以理解的是,上述功能模式选择信号可以有多种,不同功能模式选择信号对应于乘法器当前可以处理不同位宽数据的乘法运算。可选的,同一次乘法运算时,修正布斯编码电路11、中间数据寄存器12、压缩电路13以及输出数据寄存器14接收到的功能模式选择信号均可以相等。示例性的,修正布斯编码电路11、中间数据寄存器12、压缩电路13以及输出数据寄存器14可以接收多种功能选择模式信号,以三种功能选择模式信号(即mode信号)为例,则mode信号分别可以表示为00、01以及10,其中,mode=00可以表征乘法器当前可处理2位数据运算,mode=01可以表征乘法器当前可处理4位数据运算,mode=10可以表征乘法器当前可处理8位数据运算。可选的,mode信号与乘法器当前可处理的数据位宽之间可以任意一一对应,对此本实施例不做任何限定。
需要说明的是,修正布斯编码电路11可以对乘数进行布斯编码处理得到原始部分积,然后对原始部分积进行符号位扩展处理得到中间部分积,然后再对中间部分积进行符号位扩展处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到初始编码部分积。可选的,上述原始部分积的位宽可以等于(N+1),该中间部分积的位宽可以等于乘法器当前处理的数据位宽N的2倍;上述符号位扩展处理可以表征为对一个数据进行补符号位处理,补符号位数值等于该数据的符号位数值;其中,中间部分积的高N位数值可以相等,低N位数值可以等于通过目标编码以及被乘数得到的原始部分积中的数值。若目标编码以及N位被乘数可以得到(N+1)位原始部分积,则中间部分积的高N位数值均可以等于原始部分积的最高位数值,中间部分积的低(N+1)位数值可以等于原始部分积的(N+1)位数值。可选的,当目标编码为-2X时,则原始部分积可以为对X进行左右一位后取反再加1;当目标编码为2X时,则原始部分积可以为对X进行左移一位;当目标编码为-X时,则原始部分积可以为对X按位取反再加1;当目标编码为X时,则原始部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据;当目标编码为±0时,则原始部分积可以为0,也就是原始部分积中的每位数值均等于0。另外,所有中间部分积在进行累加运算时累加结果可能会出现溢出的情况,其中,溢出位宽m可以大于等于0;上述符号位扩展后的部分积的位宽可以等于中间部分积的位宽与所有中间部分积在进行累加运算时溢出位宽m之和。可选的,上述初始编码部分积可以等于符号位扩展后的部分积,也可以等于符号位扩展后的部分积与多位数值0结合得到的数据。可选的,初始编码部分积的位宽可以等于乘法器接收到的数据位宽的2倍;若符号位扩展后的部分积的位宽不等于初始编码部分积的位宽,此时,对符号位扩展后的部分积进行补零处理;其中,补零处理可以表征为对符号位扩展后的部分积用数值0进行扩展处理。
还可以理解的是,上述中间数据寄存器12可以存取初始编码部分积,并根据接收到的功能选择模式信号确定输出初始编码部分积中的部分积位数值,即初始编码部分积。可选的,初始编码部分积可以等于符号位扩展后的部分积。
在本实施例中,压缩电路13可以通过4-2压缩器组成。可选的,1个4-2压缩器可以包括多个全加器以及选择电路,在一定条件下,4-2压缩器中的选择电路可以控制全加器为关闭状态,以提高华莱士树组电路的效率,减少时延。可选的,选择电路可以为多个选择器构成的电路,该选择器可以为二路选择器,并且选择电路可以接收功能模式选择信号,根据接收到的功能模式选择信号控制全加器的关闭状态。可选的,上述压缩电路13得到的乘法运算结果的位宽可以等于乘法器当前可处理数据位宽的2倍。
另外,上述输出数据寄存器14可以存储压缩电路13得到的乘法运算结果,并根据接收到的功能模式选择信号确定输出乘法运算结果中的数值,作为目标运算结果。可选的,上述目标运算结果的位宽可以等于中间部分积的位宽与所有中间部分积在进行累加运算时溢出位宽m之和。
本实施例提供的乘法器,乘法器通过修正布斯编码电路对接收到的数据进行布斯编码处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到初始编码部分积,通过压缩电路对对初始编码部分积进行存取,并根据存取的初始编码部分积得到目标编码部分积,通过压缩电路对接收到的目标编码部分积进行累加处理得到乘法运算结果,然后通过输出数据寄存器存储乘法运算结果,并根据功能选择模式信号以及乘法运算结果确定输出目标运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,上述乘法器能够采用修正布斯编码电路对接收到的数据进行布斯编码处理,降低乘法运算过程中获取的有效部分积的数量,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗;另外,上述乘法器还可以通过中间数据寄存器存储有效部分积,以对有效部分积进行压缩处理得到乘法运算结果,进而通过输出数据寄存器控制输出乘法运算结果中的部分数据得到目标运算结果,实现了乘法器复用的功能,从而降低乘法器的功耗。
图2为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括修正布斯编码电路11,所述修正布斯编码电路11包括:低位布斯编码处理单元111、低位部分积获取单元112、选择器113、高位布斯编码处理单元114以及高位部分积获取单元115;所述低位布斯编码处理单元111的第一输出端与所述选择器112的输入端连接,所述低位布斯编码处理单元111的第二输出端与所述低位部分积获取单元112的输入端连接,所述选择器112的输出端与所述高位布斯编码处理单元113的第一输入端连接,所述高位布斯编码处理单元113的输出端与所述高位部分积获取单元115的输入端连接。
其中,所述低位布斯编码处理单元111用于对接收到的第一数据中的低位数据进行布斯编码处理得到低位目标编码,所述低位部分积获取单元112用于根据所述低位目标编码以及接收到的第二数据,得到初始低位编码部分积,所述选择器113用于选通所述第一数据中的高位数据进行布斯编码处理时的补位数值,所述高位布斯编码处理单元114用于对接收到的所述高位数据以及所述补位数值,进行布斯编码处理得到高位目标编码,所述高位部分积获取单元115用于根据所述高位目标编码以及接收到的所述第二数据,得到初始高位编码部分积。
具体的,上述修正布斯编码电路11可以接收乘法运算中的乘数和被乘数,并对乘数进行布斯编码处理,得到目标编码,根据目标编码以及接收到的被乘数得到初始编码部分积。其中,第一数据中的低位数据在进行布斯编码处理前,低位布斯编码处理单元111可以自动对修正布斯编码电路11接收到的第一数据中的低位数据进行一次补位处理,并对补位处理后的低位数据进行布斯编码处理,得到低位目标编码,该第一数据可以为乘法运算中的乘数。可选的,若修正布斯编码电路11接收到的第一数据的位宽为N,则低位数据可以为第一数据中低N/2位数据,补位处理可以表征为对低位数据中最低位数值的更低一位处补一位数值0。
示例性的,若乘法器当前可处理8位*8位的定点数乘法运算,乘数为“y7y6y5y4y3y2y1y0”,则在进行布斯编码处理前,低位布斯编码处理单元111可以自动对乘数进行补位处理,将乘数转换为补位后的数据“y7y6y5y4y3y2y1y00”。可选的,上述低位目标编码的数量可以等于低位数据位宽的1/2,且该低位目标编码的数量可以等于低位数据对应得到的初始低位编码部分积的数量。需要说明的是,无论乘法器当前可处理数据的位宽和乘法器接收到的数据位宽是否相同,实现布斯编码处理时,低位布斯编码处理单元111都需要对低位数据进行补位处理。
同时,通过高位布斯编码处理单元114可以对修正布斯编码电路11接收到的第一数据中的高位数据,进行布斯编码处理得到高位目标编码,但是,高位数据在进行布斯编码处理前,需要通过选择器113获得一个选通数值,该选通数值可以作为高位数据进行布斯编码处理时的补位数值,然后将高位数据与补位数值组合得到补位后的高位数据,通过高位布斯编码处理单元114对补位后的高位数据进行布斯编码处理,得到高位目标编码。可选的,高位数据可以为第一数据中高N/2位数据。可选的,选择器113可以为二路选择器,选通数值可以包括数值0以及第一数据中低位数据对应的最高位数值。示例性的,一乘法器可处理N比特和2N比特位宽数据的乘法运算,修正布斯编码电路11接收到的数据位宽为2N比特,若该乘法器当前处理的是N比特位宽数据的运算,则选择器113选通数值0,也就是说,乘法器需要将接收到的2N比特位宽的数据划分成,高N位和低N位数据进行分别处理;若该乘法器当前可处理的是2N比特位宽数据的运算,则选择器113选通的数据为低位数据中的最高位数值,此时相当于,乘法器需要将接收到的2N比特位宽的数据作为一个整体进行布斯编码处理。另外,选择器113还可以根据接收到的不同功能选择模式信号确定选通的补位数值。可选的,上述高位目标编码的数量可以等于高位数据位宽的1/2,且该高位目标编码的数量可以等于高位数据对应得到的初始高位编码部分积的数量。
需要说明的是,低位部分积获取单元114可以根据每个低位目标编码以及接收到的第二数据(即被乘数),得到低位数据对应的初始编码部分积。可选的,高位部分积获取单元115可以根据每个高位目标编码以及接收到的第二数据,得到高位数据对应的初始编码部分积。可选的,布斯编码处理过程中,得到的低位目标编码的数量可以等于得到的高位目标编码的数量,还可以等于低位数据对应的初始编码部分积的数量,或高位数据对应的初始编码部分积的数量。可选的,修正布斯编码电路11可以包含N/4个低位布斯编码处理单元111,还可以包含N/4个高位布斯编码处理单元114。可选的,修正布斯编码电路11中可以包含N/4个低位部分积获取单元112,还可以包含N/4个高位部分积获取单元115。可选的,上述每个低位部分积获取单元112和每个高位部分积获取单元115中,均可以包含2N个数值生成子单元,每个数值生成子单元可以获取初始编码部分积中的一个数值。其中,上述N均可以表示乘法器当前所处理数据的位宽。
本实施例提供的一种乘法器,乘法器通过修正编码电路中的低位布斯编码处理单元,选择器,高位布斯编码处理单元对接收到的数据进行布斯编码处理,得到低位目标编码及高位目标编码,并且低位部分积获取单元和高位部分积获取单元根据低位目标编码及高位目标编码,得到初始编码部分积,再对初始编码部分积进行存取后得到目标编码部分积,然后对目标编码部分积进行累加处理,得到乘法运算结果,最后对乘法运算结果进行存取得到目标运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
图3为另一实施例提供的乘法器中的修正布斯编码电路11和中间数据寄存器12的具体电路结构示意图,如图3所示,其中,所述修正布斯编码电路11中的低位布斯编码处理单元111包括:低位数据输入端口1111、低位目标编码输出端口1112以及选通数值输出端口1113。所述低位数据输入端口1111用于接收进行布斯编码处理的所述第一数据中的低位数据,所述低位目标编码输出端口1112用于输出对所述低位数据进行布斯编码处理后得到的低位目标编码,所述选通数值输出端口1113用于将所述低位数据中的最高位数值输出,并输入至所述选择器113。
具体的,乘法运算时,乘法器中的修正布斯编码电路11需要对乘数进行布斯编码处理,修正布斯编码电路11中的低位布斯编码处理单元111可以通过低位数据输入端口1111接收乘数中低位数据中的连续三位数值,该三个数值作为一组待编码数据。其中,每个低位布斯编码处理单元111对接收到的待编码数据处理后,将得到的低位目标编码可以通过低位目标编码输出端口1114输出。另外,修正布斯编码电路11中的第一个低位布斯编码处理单元111,通过低位数据输入端口1111可以接收补位数值0,以及低位数据中的低两位数值。可选的,修正布斯编码电路11中的低位布斯编码处理单元111的数量可以等于低位数据位宽的1/2。
示例性的,若乘法器接收到的乘数为16比特位宽的数据“y15y14y13y12y11y10y9y8y7y6y5y4y3y2y1y0”,从最低位数值至最高位数值对应的编号为0,…,15,低位布斯编码处理单元111可以对低位数据y7y6y5y4y3y2y1y0进行布斯编码处理,布斯编码处理前对8位低位数据进行补位处理后得到9位数据y7y6y5y4y3y2y1y00,低位布斯编码处理单元111可以分别对y7y6y5y4y3y2y1y00中y7y6y5,y5y4y3,y3y2y1,y1y00这四组数据分别进行布斯编码处理,通过低位布斯编码处理单元111中的低位数据输入端口1111可以接收9位数据划分后的四组数据中相邻的三位数值。
需要说明的是,每次布斯编码处理时,可以将低位数据进行补位处理后的数据划分成多组待编码数据,低位布斯编码处理单元111可以同时对划分后的多组待编码数据进行布斯编码处理。可选的,划分多组待编码数据的原则可以表征为对补位处理后的数据中相邻的每3位数值作为一组待编码数据,每组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。可选的,布斯编码处理的方式可以参见表1,其中,表1中的y2i+1,y2i和y2i-1可以表示每组待编码数据对应的数值,X可以表示修正布斯编码电路11接收到的被乘数,对每组对应待编码数据进行布斯编码处理后,得到对应的目标编码为PPi(i=0,1,2,...,n)。可选的,根据表1所示,布斯编码处理后得到的目标编码可以包括五类,分别为-2X,2X,-X,X和0。示例性的,若修正布斯编码电路11接收到的被乘数为“x7x6x5x4x3x2x1x0”,则X可以表示为“x7x6x5x4x3x2x1x0”。
表1
示例性的,继续参见上述示例,当i=0时,y2i+1=y1,y2i=y0,y2i-1=y-1,则y-1可以表示y0后的补位数值0(即补位处理后的乘数表示为y7y6y5y4y3y2y1y0y-1),布斯编码处理过程中,可以对y-1y0y1,y1y2y3,y3y4y5和y5y6y7这四组待编码数据分别进行编码,得到4个低位目标编码,其中,每组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。
本实施例提供的一种乘法器,乘法器通过低位布斯编码处理单元对低位数据进行布斯编码处理,得到低位数据对应的低位目标编码,并且低位部分积获取单元根据低位目标编码得到初始低位编码部分积,进而对初始低位编码部分积以及初始高位编码部分积进行处理,得到乘法运算结果,并通过输出数据寄存器存储乘法运算结果,根据接收到的功能选择模式信号得到目标运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,继续参见图3所示,其中,所述修正布斯编码电路11中的低位部分积获取单元112包括:低位目标编码输入端口1121、数据输入端口1122以及低位编码部分积输出端口1123;所述低位目标编码输入端口1121用于接收所述低位布斯编码处理单元111输出的低位目标编码,所述数据输入端口1122用于接收乘法运算中的所述第二数据,所述低位编码部分积输出端口1123用于将所述初始低位编码部分积输入至所述中间数据寄存器12。
具体的,低位部分积获取单元112通过低位目标编码输入端口1121可以接收低位布斯编码处理单元111输出的低位目标编码,并通过数据输入端口1122可以接收乘法运算中的被乘数。可选的,低位部分积获取单元112可以根据接收到的低位目标编码以及接收到的乘法运算中的被乘数,得到低位数据对应的原始低位部分积,对原始低位部分积进行第一次符号位扩展处理得到中间低位部分积,再对中间低位部分积进行第二次符号位扩展处理,得到符号位扩展后的低位部分积,最后判断是否需要对符号位扩展后的低位部分积进行补零处理;若符号位扩展后的低位部分积的位宽与初始低位编码部分积的位宽相等时,则低位部分积获取单元112不需要对符号位扩展后的低位部分积进行自动补零处理;若符号位扩展后的低位部分积的位宽小于初始低位编码部分积的位宽时,则低位部分积获取单元112需要自动对符号位扩展后的低位部分积进行补零处理,补零的位数可以等于初始低位编码部分积的位宽减去符号位扩展后的低位部分积的位宽。可选的,上述第一次符号位扩展处理与第二次符号位扩展处理对应的补零位宽可以不相等。可选的,上述低位部分积获取单元112可以包括2M个数值获取子单元,每个数值获取子单元可以得到初始低位编码部分积中的一位数值。
需要说明的是,若数据输入端口1122接收到的被乘数位宽为N,则中间低位部分积的位宽可以等于2N,中间低位部分积中高(N-1)位数值均为原始低位部分积中的符号位数值,即最高位数值。可选的,符号位扩展后的低位部分积可以等于中间低位部分积,还可以等于中间低位部分积与中间低位部分积中的符号位数值组合后的数据。可选的,上述符号位扩展后的低位部分积的位宽可以等于中间低位部分积的位宽与所有中间部分积在进行累加运算时溢出位宽m之和;其中,所有中间部分积可以包括中间低位部分积以及中间高位部分积。可选的,初始低位编码部分积的位宽可以等于乘法器能够接收到的数据位宽L的2倍(L>=N)。可选的,若符号位扩展后的低位部分积的位宽(即k)不等于2L,则对符号位扩展后的低位部分积中最高位数值的高位处补(2L-k)位数值0后,得到数值0与符号位扩展后的低位部分积组合后得到的初始低位编码部分积。示例性的,若低位部分积获取单元112接收到一个N比特位宽的被乘数X,则低位部分积获取单元112可以根据被乘数X与五类目标编码-2X,2X,-X,X和0直接得到对应的中间低位部分积。当目标编码为-2X时,则原始低位部分积可以为对X进行左右一位后取反再加1;当目标编码为2X时,则原始低位部分积可以为对X进行左移一位;当目标编码为-X时,则原始低位部分积可以为对X按位取反再加1;当目标编码为X时,则原始低位部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据;当目标编码为±0时,则原始低位部分积可以为0,也就是9位原始低位部分积中的每位数值均等于0。
在本实施例中,乘法器能够接收到的数据位宽等于16比特,且乘法器可处理16位比特的数据,则乘法器中的低位部分积获取单元112得到的初始低位编码部分积的位宽可以等于32,得到的符号位扩展后的低位部分积的位宽可以等于32,此时溢出位宽可以等于0;若乘法器可处理8位比特的数据,则乘法器中的低位部分积获取单元112得到的符号位扩展后的低位部分积的位宽可以等于17,此时溢出位宽可以等于1;若乘法器可处理4位比特的数据,则乘法器中的低位部分积获取单元112得到的符号位扩展后的低位部分积的位宽可以等于10,此时溢出位宽可以等于2;若乘法器可处理2位比特的数据,则乘法器中的低位部分积获取单元112得到的符号位扩展后的低位部分积的位宽可以等于7,此时溢出位宽可以等于3。
本实施例提供的一种乘法器,乘法器中的低位部分积获取单元可以根据每个低位目标编码得到初始低位编码部分积,进而对初始低位编码部分积以及初始高位编码部分积进行处理,得到乘法运算结果,并通过输出数据寄存器存储乘法运算结果,根据接收到的功能选择模式信号得到目标运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,继续参见图3所示,其中,所述修正布斯编码电路11中的选择器113包括:选择模式信号输入端口(mode)1131、第一选通数值输入端口1132、第二选通数值输入端口1133以及选通数值输出端口1134;所述选择模式信号输入端口1131用于接收所述乘法器需要处理不同位宽的数据对应的功能选择模式信号,所述第一选通数值输入端口1132用于接收第一选通数值,所述第二选通数值输入端口1133用于接收第二选通数值,所述选通数值输出端口1134用于输出选通后的所述第一选通数值或所述第二选通数值。
具体的,选择器113可以通过选择模式信号输入端口1131接收到的功能选择模式信号,确定乘法器当前可处理的数据位宽,进而确定选通数值输出端口1134输出第一选通数值或第二选通数值。可选的,第一选通数值可以为0或低位数据中的最高位数值,第二选通数值可以为0或低位数据中的最高位数值。
示例性的,乘法运算时,若乘法器能够接收到的数据位宽为16,乘法器中的修正布斯编码电路11接收到的乘数和被乘数均为8位数据,且选择器113中的选择模式信号输入端口(mode)1131可以接收两种不同的功能选择模式信号,分别为mode=00,mode=01,mode=00可以表征乘法器能够对4位数据进行处理,mode=01可以表征乘法器能够对8位数据进行处理,当选择器112的选择模式信号输入端口(mode)1121接收到的mode为00,则乘法器当前可处理4位数据运算,此时,选择器113可以通过第二选通数值输入端口1133接收第二选通数值,该第二选通数值可以等于0;当选择器113的选择模式信号输入端口(mode)1131接收到的mode为01时,则乘法器当前可处理8位数据运算,此时,选择器113可以通过第一选通数值输入端口1132接收第一选通数值,该第一选通数值可以等于低位数据中的最高位数值。
需要说明的是,若乘法器当前可处理8位数据乘法运算时,则乘法器可以对16位乘数和16位被乘数对应的高8位数据和低8位数据分别进行乘法运算;也就是说,高8位乘数和高8位被乘数通过高位布斯编码处理单元114进行8位数据运算,低8位乘数和低8位被乘数通过低位布斯编码处理单元111进行8位数据运算,并且乘法器进行8位数据乘法运算时,选择器113可以通过第二选通数值输入端口1133接收第二选通数值0,相当于高8位数据补位处理后的补位数值为0;若乘法器当前可处理16位数据乘法运算时,则乘法器可以直接对16位乘数和16位被乘数进行乘法运算,即修正布斯编码电路11直接对16位乘数进行布斯编码处理,此时,选择器113可以通过第一选通数值输入端口1132接收第一选通数值,该第一选通数值为低8位数据中的最高位数值。
本实施例提供的一种乘法器,乘法器通过选择器接收到的功能选择模式信号,可以确定高位数据进行布斯编码处理时的补位数值,从而对补位后的数据进行布斯编码处理,该乘法器可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
作为其中一个实施例,继续参见图3所示,其中,所述修正布斯编码电路11中的高位布斯编码处理单元114包括:高位数据输入端口1141、高位目标编码输出端口1142以及选通数值输入端口1143;所述高位数据输入端口1141用于接收进行布斯编码处理的所述第一数据中的高位数据,所述高位目标编码输出端口1142用于输出对所述高位数据进行布斯编码处理后得到的高位目标编码,所述选通数值输入端口1143用于接收所述选择器113输出的所述低位数据中的最高位数值或者数值0。
具体的,乘法运算中,乘法器中的修正布斯编码电路11需要对乘数进行布斯编码处理,修正布斯编码电路11中的高位布斯编码处理单元114可以通过高位数据输入端口1141可以接收乘数中高位数据中的连续三位数值,该三个数值作为一组待编码数据。其中,每个高位布斯编码处理单元114对接收到的待编码数据处理后,将得到的高位目标编码可以通过高位目标编码输出端口1142输出。
示例性的,继续参见16位数据乘法运算的示例,高位布斯编码处理单元114可以分别对y7y6y5y4y3y2y1y00中y7y6y5,y5y4y3,y3y2y1,y1y00这四组数据分别进行布斯编码处理,通过高位布斯编码处理单元114中的高位数据输入端口1141可以接收9位数据划分后的四组数据中连续的三位数值。
需要说明的是,每次布斯编码处理时,高位布斯编码处理单元114处理待编码的高位数据的原理,与低位布斯编码处理单元111处理待编码的低位数据的原理可以相同。其中,高位布斯编码处理单元114与低位布斯编码处理单元111的内部电路结构可以相同,外部输出端口的功能也可以相同。
本实施例提供的一种乘法器,乘法器通过高位布斯编码处理单元对高位数据进行布斯编码处理,得到高位数据对应的高位目标编码,并且高位部分积获取单元根据高位目标编码得到初始高位编码部分积,进而对初始高位编码部分积以及初始低位编码部分积进行处理,得到乘法运算结果,并通过输出数据寄存器存储乘法运算结果,根据接收到的功能选择模式信号得到目标运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,继续参见图3所示,其中,所述修正布斯编码电路11中的高位部分积获取单元115包括:高位目标编码输入端口1151、数据输入端口1152以及高位编码部分积输出端口1153;所述高位目标编码输入端口1151用于接收所述高位布斯编码处理单元111输出的高位目标编码,所述数据输入端口1152用于接收乘法运算的数据,所述高位编码部分积输出端口1153用于将所述初始高位编码部分积输入至所述中间数据寄存器12。
具体的,高位部分积获取单元115通过高位目标编码输入端口1151可以接收高位布斯编码处理单元114输出的高位目标编码,并通过数据输入端口1152可以接收乘法运算中的被乘数。可选的,高位部分积获取单元115可以根据接收到的高位目标编码以及接收到的乘法运算中的被乘数,得到高位数据对应的符号位扩展后的部分积。可选的,若数据输入端口1152接收到的被乘数位宽为N,则符号位扩展后的部分积的位宽可以等于2N。
在本实施例中,上述目标编码可以包括低位目标编码和高位目标编码;上述原始部分积可以包括原始高位部分积以及原始低位部分积;上述中间部分积可以包括中间高位部分积以及中间低位部分积;上述符号位扩展后的部分积可以包括符号位扩展后的高位部分积以及符号位扩展后的部分积;上述初始编码部分积可以包括初始高位编码部分积以及初始低位编码部分积。
示例性的,若乘法器能够接收8位数据,且乘法器当前可处理4位数据的乘法运算,则当前乘法器可处理4位*4位的高位数据乘法运算,以及4位*4位的低位数据乘法运算,该乘法器通过修正布斯编码电路11得到的2个初始高位编码部分积,以及2个初始低位编码部分积的分布规律如图4所示,其中,“○”表示初始低位编码部分积中的无效位数值,即数值0,表示初始高位编码部分积中的每位数值,“●”表示初始高位编码部分积中的每位数值;若乘法器当前可处理8位*8位的数据乘法运算,该乘法器通过修正布斯编码电路11得到的2个初始低位编码部分积,以及2个初始高位编码部分积的分布规律如图5所示,其中,表示初始高位编码部分积中的每位数值,“●”表示初始高位编码部分积中的每位数值。
本实施例提供的一种乘法器,乘法器中的高位部分积获取单元可以根据每个高位目标编码得到目标编码的高位部分积,并且高位部分积获取单元根据高位目标编码得到初始高位编码部分积,进而对初始高位编码部分积以及初始低位编码部分积进行处理,得到目标运算结果,该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
作为其中一个实施例,继续参见图3所示,其中,所述中间数据寄存器12包括中间低位数据寄存器121以及中间高位数据寄存器122;所述中间低位数据寄存器121用于根据所述功能选择模式信号,存储所述初始低位编码部分积中的数值,以得到目标低位编码部分积,所述中间高位数据寄存器122用于根据所述功能选择模式信号,存储所述初始高位编码部分积中的数值,以得到目标高位编码部分积。
其中,继续参见图3,所述中间低位数据寄存器121包括:选择模式信号输入端口1211、初始低位部分积输入端口1212以及目标低位部分积输出端口1213,所述选择模式信号输入端口1211用于接收所述功能选择模式信号;所述初始低位部分积输入端口1212用于根据所述功能选择模式信号接收所述初始低位编码部分积中的数值;所述目标低位部分积输出端口1213用于输出所述中间低位数据寄存器121根据所述功能选择模式信号,接收到的所述初始低位编码部分积中的数值。可选的,所述中间高位数据寄存器122包括:选择模式信号输入端口1221、初始高位部分积输入端口1222以及目标高位部分积输出端口1223,所述选择模式信号输入端口1221用于接收所述功能选择模式信号;所述初始高位部分积输入端口1222用于根据所述功能选择模式信号接收所述初始高位编码部分积中的数值;所述目标高位部分积输出端口1223用于输出所述中间高位数据寄存器122根据所述功能选择模式信号,接收到的所述初始高位编码部分积中的数值。
具体的,中间数据寄存器12可以包括N/2个中间低位数据寄存器121,其中,N为乘法器能够接收到的数据位宽。可选的,中间低位数据寄存器121可以包括连续的2N个低位寄存单元,每个低位寄存单元可以存储初始低位编码部分积中的一位数值,连续的2N个低位寄存单元可以存储2N位初始低位编码部分积。可选的,2N个低位寄存单元均可以接收功能选择模式信号;若乘法器中的低位寄存单元接收到的功能选择模式信号,确定乘法器可处理N位数据运算,则中间低位数据寄存器121可以通过初始低位部分积输入端口1212接收初始低位编码部分积,并通过其中连续的2N个低位寄存单元,存储2N位初始低位编码部分积作为目标低位编码部分积,并且目标低位编码部分积可以通过目标低位部分积输出端口1213输出,此时相当于2N个低位寄存单元均为开启状态;若乘法器中的低位寄存单元接收到的功能选择模式信号,确定乘法器可处理N/2位数据运算,则2N个低位寄存单元中的部分低位寄存单元可以接收初始低位编码部分积中的部分位数值作为目标低位编码部分积,该部分积数值可以为符号位扩展后的低位部分积,此时相当于2N个低位寄存单元中部分低位寄存单元为开启状态;所有开启状态的低位寄存单元的数量可以等于符号位扩展后的低位部分积的位宽,2N个低位寄存单元中剩余低位寄存单元为关闭状态。
需要说明的是,中间数据寄存器12可以包括N/2个中间高位数据寄存器122,其中,N为乘法器能够接收到的数据位宽。可选的,中间高位数据寄存器122可以包括连续的2N个高位寄存单元,每个高位寄存单元可以存储初始高位编码部分积中的一位数值,连续的2N个高位寄存单元可以存储2N位初始高位编码部分积。可选的,2N个高位寄存单元均可以接收功能选择模式信号;若乘法器中的高位寄存单元接收到的功能选择模式信号,确定乘法器可处理N位数据运算,则中间高位数据寄存器122可以通过初始高位部分积输入端口1212接收初始高位编码部分积,并通过其中连续的2N个高位寄存单元,存储2N位初始高位编码部分积作为目标高位编码部分积,并且目标高位编码部分积可以通过目标高位部分积输出端口1213输出,此时相当于2N个高位寄存单元均为开启状态;若乘法器中的高位寄存单元接收到的功能选择模式信号,确定乘法器可处理N/2位数据运算,则2N个高位寄存单元中的部分高位寄存单元可以接收初始高位编码部分积中的部分位数值作为目标高位编码部分积,该部分积数值可以为符号位扩展后的高位部分积,此时相当于2N个高位寄存单元中部分高位寄存单元为开启状态;所有开启状态的高位寄存单元的数量可以等于符号位扩展后的高位部分积的位宽,2N个高位寄存单元中剩余高位寄存单元为关闭状态。可选的,寄存单元可以根据接收到的功能选择模式信号自动控制自身的关闭状态。
在本实施例中,所有目标低位编码部分积的分布规律可以表征为,从第二个目标低位编码部分积开始,每个目标低位编码部分积中的最高位数值,与第一个目标低位编码部分积中的最高位数值位于同一列,也就是,每个目标低位编码部分积中的数值,与第一个目标低位编码部分积中的对应位数值位于同一列,且所有目标低位编码部分积中的每列数值均参与后续运算。可选的,所有目标高位编码部分积的分布规律与所有目标低位编码部分积的分布规律相同,对此不再赘述。另外,所有目标低位编码部分积与所有目标高位编码部分积组合后,可以得到所目标编码部分积。
本实施例提供的一种乘法器,乘法器中的中间寄存器可以存储初始编码部分积中的部分数值,作为目标编码部分积,进而对目标编码部分积进行后续处理,得到目标运算结果;该过程可以根据接收到的功能选择模式信号控制中间寄存器中部分寄存单元的关闭状态,从而降低乘法器的功耗。
图6为另一实施例提供的乘法器中的压缩电路13和输出数据寄存器14的具体电路结构图,如图6所示,其中,所述压缩电路13包括:华莱士树组电路131和累加电路132,所述华莱士树组电路131的输出端与所述累加电路132的输入端连接;所述华莱士树组电路131用于对不同位宽数据运算时,得到的所有目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路132用于对所述累加运算结果进行累加处理得到所述乘法运算结果。
具体的,上述华莱士树组电路131可以对修正布斯编码电路11得到的目标编码部分积中的每列数值进行累加处理,并通过累加电路132对华莱士树组电路131得到的两个运算结果进行累加处理,得到乘法运算结果。需要说明的是,所有目标编码部分积的列数可以等于符号位扩展后的部分积的位宽。可选的,若乘法器能够接收到的数据位宽为N,且乘法器当前可处理的数据位宽为N,则华莱士树组电路131可以将目标低位编码部分积以及目标高位编码部分积作为目标编码部分积进行累加运算;而若乘法器当前可处理的数据位宽为N/2,则华莱士树组电路131可以分别将目标低位编码部分积和目标高位编码部分积作为目标编码部分积进行累加运算,相当于对目标低位编码部分积和目标高位编码部分积进行异步处理。
本实施例提供的一种乘法器,乘法器通过华莱士树组电路可以对目标低位编码部分积和目标高位编码部分积进行累加处理,并通过累加电路对累加结果进行再次累加处理,得到乘法运算结果,进而根据乘法运算结果得到目标运算结果;该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该乘法器能够获取的有效部分积的数量较少,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗。
在其中一个实施例中,继续如图6所示,其中,所述华莱士树组电路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可以输出两个信号,即进位信号Carryi与一个和位信号Sumi;其中,i可以表示每个华莱士树单元1311对应的编号,第一个华莱士树单元1311的编号为0。可选的,每个华莱士树单元1311接收到输入信号的数量可以等于目标编码部分积数量。可选的,每个华莱士树单元1311可以根据接收到的功能选择模式信号自动控制自身的开启状态。
示例性的,若乘法器能够接收到的数据位宽为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,接收到的信号均可以包括进位输入信号Cini,部分积数值输入信号,进位输出信号Couti。可选的,每个华莱士树单元1311接收到的部分积数值输入信号,可以为所有目标编码部分积中对应列的数值;每个华莱士树单元1311输出的进位信号Couti的位数可以为NCout=floor((NI+NCin)/2)-1。其中,NI可以表示该华莱士树单元的部分积数值输入信号的数量,NCin可以表示该华莱士树单元的进位输入信号的数量,NCout可以表示该华莱士树单元最少的进位输出信号的数量,floor(·)可以表示向下取整函数。可选的,华莱士树组电路131中每个华莱士树单元1311接收到的进位输入信号,可以为上一个华莱士树单元1311输出的进位输出信号,并且第一个华莱士树单元1311接收到的进位数输入信号为数值0。
另外,每个华莱士树单元均可以通过电路结构中的模式选择电路选通所有目标编码部分积中对应列的其中一位数值,并将该位数值输入至4-2压缩器中的全加器,以选通低电平信号,使得该全加器的输入信号均为低电平信号,相当于关闭了该全加器。
示例性的,在神经网络运算中,神经网络运算数据为零或接近零的数据比较多,经过稀疏化和/或压缩后为零或接近零的数据会更多。神经网络运算数据中大量数据转换为二进制数据后,一乘法器可以对转换后的二进制数据进行两种不同位宽的数据运算,即8比特位宽数据(对应mode=00)和16比特位宽数据(对应mode=11),并且该乘法器接收到的乘数和被乘数均为8比特位宽的数据,该乘法器中多个华莱士树单元的电路结构图均可以参见图7所示,图中~mode表示对mode信号取反,例如,若mode为高电平信号,则~mode为低电平信号,若mode为低电平信号,则~mode为高电平信号。另外,乘法器无论进行8位宽数据运算还是16位宽数据运算,均可以得到18个目标编码部分积,所有目标编码部分积中的其中一列数值分别为I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15,I16,I17,在本示例中,乘法器通过接收到的mode信号,可以确定华莱士树单元中第一模式选择电路接收到的目标编码部分积中的数值为I7还是I13,以保证第一模式选择电路输入至第六全加器的信号为低电平信号;另外,乘法器还可以通过接收到的mode信号,确定华莱士树单元中第二模式选择电路接收到的目标编码部分积中的数值为I6还是I12,以保证第二模式选择电路输入至第八全加器的信号为低电平信号。在示例中,乘法器可以根据接收到的mode信号确定第一模式选择电路可以接收的选通信号I7或I13,若mode=00,则第一模式选择电路可以选通I13作为第六全加器的输入,选通I7作为第五全加器的输入;若mode=11,则第一模式选择电路可以选通I7作为第六全加器的输入,选通I13作为第五全加器的输入;另外,乘法器还可以根据接收到的mode信号确定第二模式选择电路可以接收的选通信号I6或I12,若mode=00,则第二模式选择电路可以选通I12作为第八全加器的输入,选通I6作为第七全加器的输入;若mode=11,则第二模式选择电路可以选通I6作为第八全加器的输入,选通I12作为第七全加器的输入。
本实施例提供的一种乘法器,乘法器通过华莱士树组电路可以对目标编码部分积进行累加处理得到两路输出信号,并通过累加电路对该两路输出信号进行再次累加处理,得到乘法运算结果,进而根据乘法运算结果得到目标运算结果,该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该乘法器还可以对较少的有效部分积进行累加处理,以使乘法运算的复杂性降低。
作为其中一个实施例,继续参见图6所示,其中,所述累加电路132包括加法器1321,所述加法器1321用于对所述累加运算结果进行加法运算。
具体的,加法器1321可以为不同位宽的进位加法器。可选的,加法器1221可以接收华莱士树组电路131输出的两路信号,对两路输出信号进行加法运算,输出乘法运算结果。在本实施例中,加法器1221可以为Z位超前进位加法器,其中,Z可以等于乘法器能够接收到的数据位宽的2倍。可选的,若累加运算结果的位宽等于Z,则加法器1321可以对累加运算结果直接进行加法运算;若累加运算结果的位宽小于Z,则加法器1321可以自动对累加运算结果进行补零处理,补零的位置可以为累加运算结果中最高位数值的更高位处,补零的位数可以等于Z减去累加运算结果的位宽。
本实施例提供的一种乘法器,乘法器通过累加电路可以对华莱士树组电路输出的两路信号进行累加处理得到乘法运算结果,进而乘法器中的输出数据寄存器根据功能选择模式信号,接收乘法运算结果中的部分位数值,以得到目标运算结果;该过程可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,继续参见图6所示,其中,所述累加电路132中的加法器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,可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=1,…,2N,i为每个华莱士树单元1311的对应编号,编号从1开始)。可选的,加法器1321接收到的Carry={[Carry1:Carry2N-1],0},也就是说,加法器1321接收到的进位输出信号Carry的位宽为2N,进位输出信号Carry中前2N-1位数值对应华莱士树组电路131中,前2N-1个华莱士树单元1311的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器1321接收到的和位输出信号Sum的位宽为2N,和位输出信号Sum中的数值可以等于华莱士树组电路131中每个华莱士树单元1311的和位输出信号。若乘法器当前可处理N/2位数据,加法器1321接收到的Carry={[Carry1:CarryN-1],0};但是由于加法器1321是对2N位数据进行运算,此时,加法器1321还需要对进位输出信号Carry的更高位进行补零处理,满足补零处理后的数据位宽为2N。
示例性的,若乘法器能够接收的数据位宽为8,且乘法器当前可处理8位*8位的定点数乘法运算,则加法器1321可以为16位进位加法器,如图8所示,华莱士树组电路131可以输出16个华莱士树单元1311的和位输出信号Sum和进位输出信号Carry,但是,16位进位加法器接收到的和位输出信号,可以为华莱士树组电路131输出的完整和位信号Sum,接收到的进位输出信号可以为华莱士树组电路131中,除去最后一个华莱士树单元1311输出的进位输出信号的所有进位输出信号,与数值0结合后的进位信号Carry。
本实施例提供的一种乘法器,乘法器通过累加电路可以对华莱士树组电路输出的两路信号进行累加运算得到乘法运算结果,进而乘法器中的输出数据寄存器根据功能选择模式信号,接收乘法运算结果中的部分位数值,以得到目标运算结果。
作为其中一个实施例,继续参见图6所示,所述输出数据寄存器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所示的乘法器进行处理,本实施例涉及的是对不同位宽的数据进行乘法运算的过程。如图9所示,该方法包括:
S101、接收待处理数据以及功能选择模式信号,其中,所述功能选择模式信号用于指示乘法器当前可处理的数据位宽。
具体的,乘法器可以通过修正布斯编码电路接收待处理数据,该数据可以为乘法运算中的乘数和被乘数。每次乘法运算时,乘法器中的修正布斯编码电路、中间数据寄存器、压缩电路以及输出数据寄存器,均可以接收相同的功能选择模式信号。可选的,上述待处理数据可以为定点数。若乘法器接收不同的功能选择模式信号,则表征乘法器可以处理不同位宽的数据运算;同时,不同功能选择模式信号与乘法器可处理不同位宽的数据之间的对应关系可以灵活设置,对此本实施例不作任何限定。例如,修正布斯编码电路、中间数据寄存器、压缩电路以及输出数据寄存器可以接收多种功能选择模式信号,以三种功能选择模式信号为例,可以分别为mode=00,mode=01,mode=10,则mode=00可以表征乘法器可处理16位数据位宽,mode=01可以表征乘法器可处理8位数据位宽,mode=10可以表征乘法器可处理4位数据位宽,另外,mode=00也可以表征为乘法器可处理4位数据位宽,mode=01也可以表征为乘法器可处理16位数据位宽,mode=10可以表征乘法器可处理8位数据位宽。
可选的,修正布斯编码电路接收到的乘法运算中的乘数和被乘数的位宽可以为4比特,8比特,16比特,对此本实施例不做任何限定。其中,乘法运算中乘数的位宽可以等于乘法运算中被乘数的位宽。
S102、根据所述功能选择模式信号选通待编码信号,根据所述待编码信号对所述待处理数据进行布斯编码处理,得到目标编码。
具体的,乘法器可以根据接收到的功能选择模式信号,确定当前乘法器可处理的数据位宽,以确定乘法器对乘数中的高位数据进行布斯编码处理时,乘法器中的选择器选通的高位数据的补位数值,即待编码信号。可选的,乘法器可以根据选择器选通的待编码信号和待处理数据,对待处理数据进行布斯编码处理,得到目标编码,该待处理数据可以为乘法运算中的乘数。可选的,上述目标编码的数量可以等于待处理数据位宽的1/2。
可选的,上述S102中根据所述功能选择模式信号选通待编码信号,根据所述待编码信号对所述待处理数据进行布斯编码处理,得到目标编码的步骤,可以包括:根据所述功能选择模式信号选通待编码信号,并根据所述待编码信号与所述待处理数据,得到待编码低位数据以及待编码高位数据;对所述待编码低位数据以及所述待编码高位数据进行布斯编码处理,得到低位目标编码和高位目标编码。
需要说明的是,上述待处理数据可以包括待处理高位数据和待处理低位数据,其中,若待处理数据的位宽为2N,则高N位数据可以为待处理高位数据,低N位数据可以为待处理低位数据。可选的,上述待编码信号可以为0,还可以为待处理低位数据中的最高位数值。
在本实施例中,若乘法器的输入端口位宽(即乘法器能够接收到的数据位宽)为2N,并且乘法器当前可处理数据的位宽也为2N,则乘法器中的修正布斯编码电路可以通过选择器选通待处理低位数据中的最高位数值,作为待处理高位数据中的补位数值,此时,乘法器可以将接收到的2N位数据作为一个整体进行乘法运算;若乘法器当前可处理数据的位宽为N,则乘法器可以将接收到的2N位数据,自动划分成高N位数据和低N位数据,并同时对高N位数据和低N位数据进行布斯编码处理,此时,修正布斯编码电路可以通过选择器选通0,作为待处理高位数据中的补位数值。可选的,乘法器可以自动对待处理高位数据进行补位处理后,对补位后的数据进行布斯编码处理得到目标编码;同时,对选通后的待编码信号与待处理低位数据组合后的数据进行布斯编码处理得到目标编码。可选的,布斯编码处理的方式可以参见表1,布斯编码处理后得到的目标编码可以包括五类,分别为-2X,2X,-X,X和0。
S103、根据所述目标编码和所述待处理数据,得到目标编码部分积。
具体的,上述目标编码可以低位目标编码和高位目标编码。可选的,上述目标编码部分积的位宽可以等于乘法器的输入端口位宽的2倍,还可以小于乘法器的输入端口位宽的2倍。可选的,上述目标编码部分积的数量可以等于目标编码的数量。
可选的,上述S103中根据所述目标编码和所述待处理数据,得到目标编码部分积的步骤,可以包括:根据所述低位目标编码和所述待处理数据,得到目标低位编码部分积;根据所述高位目标编码和所述待处理数据,得到目标高位编码部分积。
需要说明的是,乘法器中的修正布斯编码电路可以根据低位目标编码和待处理的被乘数,得到目标低位编码部分积,还可以根据高位目标编码和待处理的被乘数,得到目标高位编码部分积。
S104、对所述目标编码部分积进行累加处理,得到乘法运算结果。
具体的,乘法器可以通过压缩电路对目标编码部分积进行累加处理,并得到乘法运算结果。可选的,乘法运算结果的位宽可以等于乘法器的输入端口位宽的2倍。
S105、根据所述功能选择模式信号存储所述乘法运算结果,以得到目标运算结果。
可选的,上述S105中根据所述功能选择模式信号存储所述乘法运算结果,以得到目标运算结果的步骤,具体可以包括:根据所述功能选择模式信号存储所述乘法运算结果或所述乘法运算结果中的数值,以得到所述目标运算结果。
具体的,若乘法器接收到的功能选择模式信号确定乘法器可处理的数据位宽,等于乘法器的输入端口位宽时,则乘法器中的输出数据寄存器可以存储乘法运算结果,并将乘法运算结果作为目标运算结果;若乘法器接收到的功能选择模式信号确定乘法器可处理的数据位宽,小于乘法器的输入端口位宽时,则乘法器中的输出数据寄存器可以存储乘法运算结果中的部分低位数值,并将这些数值作为目标运算结果。
本实施例提供的一种数据处理方法,接收待处理数据以及功能选择模式信号,根据所述功能选择模式信号选通待编码信号,根据所述待编码信号对所述待处理数据进行布斯编码处理,得到目标编码,根据所述目标编码和所述待处理数据,得到目标编码部分积,对所述目标编码部分积进行累加处理,得到乘法运算结果,根据所述功能选择模式信号存储所述乘法运算结果,以得到目标运算结果;该方法可以保证乘法运算结果准确性的前提下,可以对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,上述方法还可以对接收到的数据进行布斯编码处理,降低乘法运算过程中获取的有效部分积的数量,从而降低乘法器实现乘法运算的复杂性,提高乘法运算的运算效率,有效降低了乘法器的功耗;另外,上述方法还可以通过中间数据寄存器存储有效部分积,以对有效部分积进行压缩处理得到乘法运算结果,进而通过输出数据寄存器控制输出乘法运算结果中的部分数据得到目标运算结果,实现了乘法器复用的功能,从而降低乘法器的功耗。
图10为另一实施例提供的得到目标编码部分积的具体流程示意图,如图10所示,上述S103中根据所述目标编码和所述待处理数据,得到目标编码部分积的步骤,具体可以包括:
S1031、根据所述目标编码和所述待处理数据得到原始部分积。
具体的,若目标编码以及N位待处理的被乘数可以得到(N+1)位原始部分积。可选的,当目标编码为-2X时,则原始部分积可以为对X进行左右一位后取反再加1;当目标编码为2X时,则原始部分积可以为对X进行左移一位;当目标编码为-X时,则原始部分积可以为对X按位取反再加1;当目标编码为X时,则原始部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据;当目标编码为±0时,则原始部分积可以为0,也就是原始部分积中的每位数值均等于0。
S1032、对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积。
可选的,上述S1032中对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积的步骤,具体可以包括:对所述原始部分积进行符号位扩展处理,得到中间部分积;对所述中间部分积进行符号位扩展处理,得到符号位扩展后的部分积。
具体的,乘法器对原始部分积进行符号位扩展处理的方式,与对中间部分积进行符号位扩展处理的方式相同,但是,扩展的符号位数量可以不相等,也可以相等。
需要说明的是,上述中间部分积的位宽可以等于乘法器当前可处理的数据位宽N的2倍;上述符号位扩展处理可以表征为对一个数据进行补符号位处理,补符号位数值等于原始部分积的符号位数值(即最高位数值);其中,中间部分积的高N位数值可以相等,低N位数值可以等于通过目标编码以及被乘数得到的原始部分积中的所有数值。若目标编码以及N位被乘数可以得到(N+1)位原始部分积,则中间部分积的高N位数值均可以等于原始部分积的符号位数值,中间部分积的低(N+1)位数值可以等于原始部分积的(N+1)位数值。
在本实施例中,乘法器对原始部分积进行符号位扩展处理时,可以补符号位的数量可以等于中间部分积的位宽减原始部分积的位宽;乘法器对中间部分积进行符号位扩展处理时,可以补符号位的数量可以等于所有中间部分积在进行累加运算时累加结果出现的溢出位宽m,其中,溢出位宽m可以大于等于0。可选的,上述符号位扩展后的部分积的位宽可以等于中间部分积的位宽与上述溢出位宽m之和。
S1033、根据所述乘法器的输入端口位宽以及所述符号位扩展后的部分积,得到所述初始编码部分积。
可选的,上述S1033中根据所述乘法器的输入端口位宽以及所述符号位扩展后的部分积,得到所述初始编码部分积的步骤,具体可以包括:根据所述乘法器的输入端口位宽,判断是否需要对所述符号位扩展后的部分积进行补零处理,得到所述初始编码部分积;若需要,则对对所述符号位扩展后的部分积进行补零处理,得到所述初始编码部分积。可选的,若不需要对所述符号位扩展后的部分积进行补零处理,则将所述符号位扩展后的部分积作为所述初始编码部分积。
具体的,乘法器可以自动判断乘法器的输入端口位宽的2倍,与符号位扩展后的部分积的位宽是否相等;若相等,则可以将符号位扩展后的部分积作为初始编码部分积;若不相等,乘法器可以对符号位扩展后的部分积中最高位数值的更高位处补零,得到初始编码部分积。可选的,初始编码部分积的位宽可以等于乘法器的输入端口位宽的2倍。可选的,对符号位扩展后的部分积进行补零的数量可以等于初始编码部分积的位宽,减去符号位扩展后的部分积的位宽。
S1034、根据所述功能选择模式信号以及所述初始编码部分积,得到目标编码部分积。
具体的,乘法器中的中间数据寄存器可以根据接收到的功能选择模式信号,判断初始编码部分积的位宽是否与乘法器的输入端口的位宽的2倍是否相等,若相等,则中间数据寄存器可以接收完整的初始编码部分积,并将初始编码部分积作为目标编码部分积输出;若不相等,则中间数据寄存器可以接收初始编码部分积中的部分数值,并将该部分积位数值作为目标编码部分积输出。
本实施例提供的一种数据处理方法,根据目标编码和待处理数据得到原始部分积,对原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,根据乘法器的输入端口位宽以及符号位扩展后的部分积,得到初始编码部分积,根据功能选择模式信号以及初始编码部分积,得到目标编码部分积,进而对目标编码部分积进行累加处理,得到乘法运算结果,根据功能选择模式信号存储所述乘法运算结果以得到目标运算结果;该方法可以根据功能选择模式信号适应缩小部分积的位宽,从而降低乘法器的运算功耗;另外,该方法能够保证乘法运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积。
图11为另一个实施例提供的得到乘法运算结果的具体流程示意图,如图11所示,上述S104中对所述目标编码部分积进行累加处理,得到乘法运算结果的步骤,具体可以包括:
S1041、通过华莱士树组电路对目标低位编码部分积和/或目标高位编码部分积,进行累加处理得到中间运算结果。
具体的,若乘法器的输入端口位宽为N,乘法器当前可处理的数据位宽也为N,此时,乘法器通过华莱士树组电路可以对得到的目标低位编码部分积和目标高位编码部分积中的每列数值,进行累加运算得到中间运算结果;若乘法器当前可处理的数据位宽也为N/2,此时,乘法器通过华莱士树组电路可以对得到的目标低位编码部分积中的每列数值,和目标高位编码部分积中的每列数值,先后分别进行累加运算得到中间运算结果。
需要说明的是,目标低位编码部分积和目标高位编码部分积的位宽相同;所有目标低位编码部分积的分布方式中,每个目标低位编码部分积的最低位数值与第一个目标低位编码部分积的最低位数值位于同一列,每个目标低位编码部分积的最高位数值与第一个目标低位编码部分积的最高位数值位于同一列,每个目标低位编码部分积的其它位数值与第一个目标低位编码部分积的对应位数值分别位于对应同一列。可选的,目标高位编码部分积的分布方式与目标低位编码部分积的分布方式类似,对此不再赘述。可选的,若乘法器中的华莱士树组电路对目标低位编码部分积和目标高位编码部分积进行累加运算,此时,最后一个目标低位编码部分积的最低位数值与第一个目标高位编码部分积的最低位数值位于同一列,其它位数值依次也分别位于同一列。
S1042、通过累加电路对所述中间运算结果进行累加处理,得到所述乘法运算结果。
具体的,累加电路可处理的数据位宽可以等于乘法器的输入端口位宽的2倍;若中间运算结果的位宽不等于累加电路可处理的数据位宽,此时,累加电路可以自动对中间运算结果中最高位数值的更高位处补零,以得到补零后的中间运算结果的位宽可以等于累加电路可处理的数据位宽,并且乘法器中的累加电路对补零后的中间运算结果进行累加处理,得到乘法运算结果。可选的,乘法运算结果的位宽可以等于乘法器的输入端口位宽的2倍。
本实施例提供的一种数据处理方法,通过华莱士树组电路对目标低位编码部分积和/或目标高位编码部分积进行累加处理,得到中间运算结果,通过累加电路对所述中间运算结果进行累加处理,得到乘法运算结果,进而根据功能选择模式信号对乘法运算结果中的数值进行存储处理以得到目标运算结果;该方法能够根据乘法器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该方法可以根据功能选择模式信号适应缩小部分积的位宽,以降低乘法器的运算功耗。
本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的乘法器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上乘法器时,乘法器间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图12为组合处理装置的示意图。
其它处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。
可选的,该结构如图13所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图14所示,图14提供了一种板卡,上述板卡除了包括上述芯片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 (26)
1.一种乘法器,其特征在于,所述乘法器包括:修正布斯编码电路、中间数据寄存器、压缩电路以及输出数据寄存器;所述修正布斯编码电路的输出端与所述中间数据寄存器的输入端连接,所述中间数据寄存器的输出端与所述压缩电路的输入端连接,所述压缩电路的输出端与所述输出数据寄存器的输入端连接;所述修正布斯编码电路用于对接收到的数据进行布斯编码处理得到目标编码,并根据所述目标编码得到初始编码部分积,所述中间数据寄存器用于对所述初始编码部分积进行选择存取,并根据存取的所述初始编码部分积得到初始编码部分积,所述压缩电路用于对接收到的所述初始编码部分积进行累加处理得到乘法运算结果,所述输出数据寄存器用于存储所述乘法运算结果,并根据所述功能选择模式信号以及所述乘法运算结果确定输出目标运算结果。
2.根据权利要求1所述的乘法器,其特征在于,所述修正布斯编码电路、所述中间数据寄存器、所述压缩电路以及所述输出数据寄存器均包括第一输入端,用于接收功能选择模式信号,所述功能选择模式信号用于确定所述乘法器当前可处理的数据位宽。
3.根据权利要求1至2中任一项所述的乘法器,其特征在于,所述修正布斯编码电路包括:低位布斯编码处理单元、低位部分积获取单元、选择器、高位布斯编码处理单元以及高位部分积获取单元;所述低位布斯编码处理单元的第一输出端与所述选择器的输入端连接,所述低位布斯编码处理单元的第二输出端与所述低位部分积获取单元的输入端连接,所述选择器的输出端与所述高位布斯编码处理单元的第一输入端连接,所述高位布斯编码处理单元的输出端与所述高位部分积获取单元的输入端连接;
其中,所述低位布斯编码处理单元用于对接收到的第一数据中的低位数据进行布斯编码处理得到低位目标编码,所述低位部分积获取单元用于根据所述低位目标编码以及接收到的第二数据,得到初始低位编码部分积,所述选择器用于选通所述第一数据中的高位数据进行布斯编码处理时的补位数值,所述高位布斯编码处理单元用于对接收到的所述高位数据以及所述补位数值,进行布斯编码处理得到高位目标编码,所述高位部分积获取单元用于根据所述高位目标编码以及接收到的所述第二数据,得到初始高位编码部分积。
4.根据权利要求3所述的乘法器,其特征在于,所述低位布斯编码处理单元包括:低位数据输入端口以及低位目标编码输出端口;所述低位数据输入端口用于接收进行布斯编码处理的所述第一数据中的低位数据,所述低位目标编码输出端口用于输出对所述低位数据进行布斯编码处理后得到的低位目标编码。
5.根据权利要求3至4中任一项所述的乘法器,其特征在于,所述低位部分积获取单元包括:低位目标编码输入端口、数据输入端口以及低位编码部分积输出端口;所述低位目标编码输入端口用于接收所述低位布斯编码处理单元输出的低位目标编码,所述数据输入端口用于接收乘法运算中的所述第二数据,所述低位编码部分积输出端口用于将所述初始低位编码部分积输入至所述中间数据寄存器。
6.根据权利要求3至5中任一项所述的乘法器,其特征在于,所述选择器包括:选择模式信号输入端口、第一选通数值输入端口、第二选通数值输入端口以及选通数值输出端口;所述选择模式信号输入端口用于接收所述乘法器需要处理不同位宽的数据对应的功能选择模式信号,所述第一选通数值输入端口用于接收第一选通数值,所述第二选通数值输入端口用于接收第二选通数值,所述选通数值输出端口用于输出选通后的所述第一选通数值或所述第二选通数值。
7.根据权利要求3至6中任一项所述的乘法器,其特征在于,所述高位布斯编码处理单元包括:高位数据输入端口以及高位目标编码输出端口;所述高位数据输入端口用于接收进行布斯编码处理的所述第一数据中的高位数据,所述高位目标编码输出端口用于输出对所述高位数据进行布斯编码处理后得到的高位目标编码。
8.根据权利要求3至7中任一项所述的乘法器,其特征在于,所述高位部分积获取单元包括:高位目标编码输入端口、数据输入端口以及高位编码部分积输出端口;所述高位目标编码输入端口用于接收所述高位布斯编码处理单元输出的高位目标编码,所述数据输入端口用于接收乘法运算的数据,所述高位编码部分积输出端口用于将所述初始高位编码部分积输入至所述中间数据寄存器。
9.根据权利要求1至2中任一项所述的乘法器,其特征在于,所述中间数据寄存器包括中间低位数据寄存器以及中间高位数据寄存器;所述中间低位数据寄存器用于根据所述功能选择模式信号,存储所述初始低位编码部分积中的数值,以得到目标低位编码部分积,所述中间高位数据寄存器用于根据所述功能选择模式信号,存储所述初始高位编码部分积中的数值,以得到目标高位编码部分积;
以及优选地,所述中间低位数据寄存器包括:选择模式信号输入端口、初始低位部分积输入端口以及目标低位部分积输出端口,所述选择模式信号输入端口用于接收所述功能选择模式信号,所述初始低位部分积输入端口用于根据所述功能选择模式信号接收所述初始低位编码部分积中的数值,所述目标低位部分积输出端口用于输出所述中间低位数据寄存器根据所述功能选择模式信号,接收到的所述初始低位编码部分积中的数值;所述中间高位数据寄存器包括:选择模式信号输入端口、初始高位部分积输入端口以及目标高位部分积输出端口,所述选择模式信号输入端口用于接收所述功能选择模式信号,所述初始高位部分积输入端口用于根据所述功能选择模式信号接收所述初始高位编码部分积中的数值,所述目标高位部分积输出端口用于输出所述中间高位数据寄存器根据所述功能选择模式信号,接收到的所述初始高位编码部分积中的数值。
10.根据权利要求1至2中任一项所述的乘法器,其特征在于,所述压缩电路包括:华莱士树组电路和累加电路;所述华莱士树组电路的输出端与所述累加电路的输入端连接,所述华莱士树组电路用于对不同位宽数据运算时,得到的所有目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路用于对所述累加运算结果进行累加处理得到所述乘法运算结果。
11.根据权利要求10所述的乘法器,其特征在于,所述华莱士树组电路包括:华莱士树单元;其中,华莱士树单元1用于对所述目标编码部分积中的每列数值进行累加运算得到累加运算结果。
12.根据权利要求11所述的乘法器,其特征在于,所述华莱士树单元包括4-2压缩器以及模式选择单元,所述模式选择单元的输出端与所述4-2压缩器的输入端连接;所述4-2压缩器用于对所有目标编码部分积中的每列数值进行累加处理,所述模式选择单元用于选通所述4-2压缩器接收到的所述目标编码部分积中的数值;其中,所述模式选择单元中包括第一输入端,用于接收所述功能选择模式信号。
13.根据权利要求11或12所述的乘法器,其特征在于,所述累加电路包括:加法器,所述加法器用于对所述累加运算结果进行加法运算;
以及优选地,所述加法器包括:进位信号输入端口、和位信号输入端口、运算结果输出端口以及选择模式信号输入端口;所述进位信号输入端口用于接收进位信号,和位信号输入端口用于接收和位信号,所述运算结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的所述乘法运算结果;所述选择模式信号输入端口用于接收所述功能选择模式信号。
14.根据权利要求1至3中任一项所述的乘法器,其特征在于,所述输出数据寄存器包括:选择模式信号输入端口、运算结果输入端口以及目标结果输出端口;所述选择模式信号输入端口用于接收所述功能选择模式信号,所述运算结果输入端口用于根据所述功能选择模式信号接收所述乘法运算结果中的数值,所述目标结果输出端口用于输出根据所述功能选择模式信号接收到的所述乘法运算结果中的数值,作为所述目标运算结果。
15.一种数据处理方法,其特征在于,所述方法包括:
接收待处理数据以及功能选择模式信号,其中,所述功能选择模式信号用于指示乘法器当前可处理的数据位宽;
根据所述功能选择模式信号选通待编码信号,根据所述待编码信号对所述待处理数据进行布斯编码处理,得到目标编码;
根据所述目标编码和所述待处理数据,得到目标编码部分积;
对所述目标编码部分积进行累加处理,得到乘法运算结果;
根据所述功能选择模式信号存储所述乘法运算结果,以得到目标运算结果。
16.根据权利要求15所述的方法,其特征在于,所述根据所述功能选择模式信号选通待编码信号,根据所述待编码信号对所述待处理数据进行布斯编码处理,得到目标编码,包括:
根据所述功能选择模式信号选通待编码信号,并根据所述待编码信号与所述待处理数据,得到待编码低位数据以及待编码高位数据;
对所述待编码低位数据以及所述待编码高位数据进行布斯编码处理,得到低位目标编码和高位目标编码。
17.根据权利要求15或16所述的方法,其特征在于,所述根据所述目标编码和所述待处理数据,得到目标编码部分积,包括:
根据所述低位目标编码和所述待处理数据,得到目标低位编码部分积;
根据所述高位目标编码和所述待处理数据,得到目标高位编码部分积。
18.根据权利要求15至17中任一项所述的方法,其特征在于,所述根据所述目标编码和所述待处理数据,得到目标编码部分积,包括:
根据所述目标编码和所述待处理数据得到原始部分积;
对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积;
根据所述乘法器的输入端口位宽以及所述符号位扩展后的部分积,得到所述初始编码部分积;
根据所述功能选择模式信号以及所述初始编码部分积,得到目标编码部分积。
19.根据权利要求18所述的方法,其特征在于,所述对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,包括:
对所述原始部分积进行符号位扩展处理,得到中间部分积;
对所述中间部分积进行符号位扩展处理,得到符号位扩展后的部分积。
20.根据权利要求18或19所述的方法,其特征在于,所述根据所述乘法器的输入端口位宽以及所述符号位扩展后的部分积,得到所述初始编码部分积,包括:
根据所述乘法器的输入端口位宽,判断是否需要对所述符号位扩展后的部分积进行补零处理,得到所述初始编码部分积;
若需要,则对对所述符号位扩展后的部分积进行补零处理,得到所述初始编码部分积。
21.根据权利要求20所述的方法,其特征在于,所述方法还包括:若不需要对所述符号位扩展后的部分积进行补零处理,则将所述符号位扩展后的部分积作为所述初始编码部分积。
22.根据权利要求15至21中任一项所述的方法,其特征在于,所述对所述目标编码部分积进行累加处理,得到乘法运算结果,包括:
通过华莱士树组电路对目标低位编码部分积和/或目标高位编码部分积,进行累加处理得到中间运算结果;
通过累加电路对所述中间运算结果进行累加处理,得到所述乘法运算结果。
23.根据权利要求15至22中任一项所述的方法,其特征在于,所述根据所述功能选择模式信号存储所述乘法运算结果,以得到目标运算结果,包括:根据所述功能选择模式信号存储所述乘法运算结果或所述乘法运算结果中的数值,以得到所述目标运算结果。
24.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求1-14任一项所述的乘法器,用于从所述机器学习运算装置中除所述乘法器以外的其它处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给所述机器学习运算装置中除所述乘法器以外的其它处理装置;
当所述机器学习运算装置包含多个所述乘法器时,多个所述乘法器间通过预设结构进行连接并传输数据;
其中,多个所述乘法器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。
25.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求24所述的机器学习运算装置,通用互联接口和所述组合处理装置中除所述机器学习运算装置以外的其它处理装置;
所述机器学习运算装置与所述组合处理装置中除所述机器学习运算装置以外的其它处理装置进行交互,共同完成用户指定的计算操作;
以及优选地,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置连接,用于保存所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置的数据。
26.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求24所述的机器学习运算装置或如权利要求25所述的组合处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911349749.6A CN113031912A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911349749.6A CN113031912A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113031912A true CN113031912A (zh) | 2021-06-25 |
Family
ID=76452322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911349749.6A Pending CN113031912A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113031912A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116205244A (zh) * | 2023-05-06 | 2023-06-02 | 中科亿海微电子科技(苏州)有限公司 | 一种数字信号处理结构 |
CN116991359A (zh) * | 2023-09-26 | 2023-11-03 | 上海为旌科技有限公司 | Booth乘法器、混合Booth乘法器及运算方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001195235A (ja) * | 2000-01-13 | 2001-07-19 | Mitsubishi Electric Corp | 乗算装置 |
US20040230631A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Modular binary multiplier for signed and unsigned operands of variable widths |
CN101384991A (zh) * | 2006-02-15 | 2009-03-11 | 松下电器产业株式会社 | 乘法器、数字滤波器、信号处理装置、合成装置、合成程序和合成程序记录介质 |
KR20110085385A (ko) * | 2010-01-20 | 2011-07-27 | 광운대학교 산학협력단 | 부스 부호화 기반 병렬방식 곱셈누적기 |
CN102386912A (zh) * | 2006-02-09 | 2012-03-21 | 阿尔特拉公司 | 用于可编程逻辑器件的专门处理块 |
CN102591615A (zh) * | 2012-01-16 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 结构化混合位宽乘法运算方法及装置 |
CN108364065A (zh) * | 2018-01-19 | 2018-08-03 | 上海兆芯集成电路有限公司 | 采布斯乘法的微处理器 |
CN110168493A (zh) * | 2017-01-16 | 2019-08-23 | 国际商业机器公司 | 在128位宽的操作数上的融合乘加浮点运算 |
-
2019
- 2019-12-24 CN CN201911349749.6A patent/CN113031912A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001195235A (ja) * | 2000-01-13 | 2001-07-19 | Mitsubishi Electric Corp | 乗算装置 |
US20040230631A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Modular binary multiplier for signed and unsigned operands of variable widths |
CN102386912A (zh) * | 2006-02-09 | 2012-03-21 | 阿尔特拉公司 | 用于可编程逻辑器件的专门处理块 |
CN101384991A (zh) * | 2006-02-15 | 2009-03-11 | 松下电器产业株式会社 | 乘法器、数字滤波器、信号处理装置、合成装置、合成程序和合成程序记录介质 |
KR20110085385A (ko) * | 2010-01-20 | 2011-07-27 | 광운대학교 산학협력단 | 부스 부호화 기반 병렬방식 곱셈누적기 |
CN102591615A (zh) * | 2012-01-16 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 结构化混合位宽乘法运算方法及装置 |
CN110168493A (zh) * | 2017-01-16 | 2019-08-23 | 国际商业机器公司 | 在128位宽的操作数上的融合乘加浮点运算 |
CN108364065A (zh) * | 2018-01-19 | 2018-08-03 | 上海兆芯集成电路有限公司 | 采布斯乘法的微处理器 |
Non-Patent Citations (1)
Title |
---|
林钰凯: "高性能并行乘法器关键技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, 15 October 2010 (2010-10-15), pages 137 - 4 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116205244A (zh) * | 2023-05-06 | 2023-06-02 | 中科亿海微电子科技(苏州)有限公司 | 一种数字信号处理结构 |
CN116205244B (zh) * | 2023-05-06 | 2023-08-11 | 中科亿海微电子科技(苏州)有限公司 | 一种数字信号处理结构 |
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) | 数据处理器、方法、芯片及电子设备 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110673823B (zh) | 乘法器、数据处理方法及芯片 | |
CN110515587B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110554854A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN113031912A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN111258633B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258544B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258545B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN210006029U (zh) | 数据处理器 | |
CN209879493U (zh) | 乘法器 | |
CN210109789U (zh) | 数据处理器 | |
CN111258542B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN210006031U (zh) | 乘法器 | |
CN113031916A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN210006030U (zh) | 数据处理器 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN113031915A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN113031911A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN110688087A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN111258540B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN210006084U (zh) | 乘法器 | |
CN209879492U (zh) | 乘法器、机器学习运算装置及组合处理装置 | |
CN209962284U (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 |