CN113031913A - 乘法器、数据处理方法、装置及芯片 - Google Patents
乘法器、数据处理方法、装置及芯片 Download PDFInfo
- Publication number
- CN113031913A CN113031913A CN201911349776.3A CN201911349776A CN113031913A CN 113031913 A CN113031913 A CN 113031913A CN 201911349776 A CN201911349776 A CN 201911349776A CN 113031913 A CN113031913 A CN 113031913A
- Authority
- CN
- China
- Prior art keywords
- data
- partial product
- multiplier
- target
- 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 15
- 238000000034 method Methods 0.000 claims abstract description 99
- 230000006835 compression Effects 0.000 claims abstract description 32
- 238000007906 compression Methods 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims description 197
- 238000009825 accumulation Methods 0.000 claims description 101
- 230000006870 function Effects 0.000 claims description 64
- 238000010801 machine learning Methods 0.000 claims description 50
- 230000015654 memory Effects 0.000 claims description 13
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000012905 input function Methods 0.000 claims description 4
- 238000007670 refining Methods 0.000 claims 1
- 239000000047 product Substances 0.000 description 357
- 238000010586 diagram Methods 0.000 description 19
- 238000006243 chemical reaction Methods 0.000 description 16
- 238000013473 artificial intelligence Methods 0.000 description 15
- 230000000295 complement effect Effects 0.000 description 14
- 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 5
- 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
- 238000011161 development 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
- 108010001267 Protein Subunits Proteins 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
- 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
- 239000013589 supplement Substances 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Nonlinear Science (AREA)
- Mathematical Physics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供一种乘法器、数据处理方法、装置及芯片,所述乘法器包括:判断电路、数据寄存器、改进正则有符号数编码电路和改进压缩电路;所述判断电路的输出端与所述数据寄存器的输入端连接,所述数据寄存器的输出端与所述改进正则有符号数编码电路的输入端连接,所述改进正则有符号数编码电路的输出端与所述改进压缩电路的输入端连接;该乘法器可以通过判断电路确定接收到的数据是否为全0数据,若为全0数据就不需要将该数据存储至数据寄存器中,以减少数据寄存器的翻转次数,并且该乘法器不需要复杂稀疏选数电路,仅需要通过判断电路获取有效数据,使得乘法器只需要对有效数据进行处理,缩小了无效运算量,从而降低了乘法器的功耗。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种乘法器、数据处理方法、装置及芯片。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能深度学习处理器的要求也越来越高。深度学习算法作为智能芯片广泛应用的算法之一,深度学习算法中通常会涉及到乘法运算,通过乘法器进行乘法运算在深度学习算法中是一种常见的操作。
传统技术中,通常会采用过滤稀疏神经网络中零值数据的计算来实现包含稀疏数据的乘法运算,其中,稀疏数据为数值0。由于稀疏数据的不均匀性,传统的乘法器中增加了复杂的稀疏选数电路来对零散的稀疏数据进行整理。但是由于复杂稀疏选数电路的存在,导致乘法器的功耗较高。
发明内容
基于此,有必要针对上述技术问题,提供一种乘法器、数据处理方法、装置及芯片。
本申请实施例提供一种乘法器,所述乘法器包括:判断电路、数据寄存器、改进正则有符号数编码电路和改进压缩电路;所述判断电路的输出端与所述数据寄存器的输入端连接,所述数据寄存器的输出端与所述改进正则有符号数编码电路的输入端连接,所述改进正则有符号数编码电路的输出端与所述改进压缩电路的输入端连接;
其中,所述判断电路用于判断接收到的数据是否包含全0数据,并根据判断结果输出数据门控信号,所述数据寄存器用于根据接收到的所述数据门控信号选择接收所述数据,并存储所述数据,所述改进正则有符号数编码电路用于对所述数据寄存器存储的所述数据进行正则有符号数编码处理,得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码部分积,所述改进压缩电路用于对所述目标编码部分积进行累加处理得到乘法运算结果。
在其中一个实施例中,所述改进正则有符号数编码电路中包括第一输入端,用于接收输入的功能模式选择信号;所述改进压缩电路中包括第一输入端,用于接收输入的所述功能模式选择信号,所述功能模式选择信号用于确定所述乘法器当前可处理的数据位宽。
在其中一个实施例中,所述判断电路包括:数据输入端口、逻辑信号输出端口以及数据输出端口,所述数据输入端口用于接收进行乘法运算的数据,所述逻辑信号输出端口用于输出所述判断电路根据判断结果得到的所述数据门控信号,所述数据输出端口用于输出所述数据。
在其中一个实施例中,所述数据寄存器包括:门控信号输入端口、数据输入端口以及运算数据输出端口,所述门控信号输入端口用于接收所述判断电路输出的所述数据门控信号,所述数据输入端口用于根据所述数据门控信号,选择接收所述判断电路输出的第一数据和第二数据,所述运算数据输出端口用于输出所述数据寄存器接收到的所述第一数据和所述第二数据。
在其中一个实施例中,所述改进正则有符号数编码电路包括编码处理支路以及部分积获取支路;所述编码处理支路用于对接收到的数据进行正则有符号数编码处理,得到目标编码;所述部分积获取支路用于根据所述目标编码得到所述符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到所述目标编码部分积。
在其中一个实施例中,所述编码处理支路包括正则有符号数编码单元以及判断单元,所述部分积获取支路包括低位部分积获取单元以及高位部分积获取单元;所述正则有符号数编码单元的输出端与所述判断单元的输入端连接,所述判断单元的输出端与所述低位部分积获取单元以及所述高位部分积获取单元输入端连接;
其中,所述正则有符号数编码单元用于根据接收到的所述功能模式选择信号,确定所述乘法器可处理数据的位宽,并对所述数据寄存器输入的所述第一数据进行正则有符号数编码处理得到低位目标编码以及高位目标编码,所述判断单元用于判断所述低位目标编码和所述高位目标编码中的每位数值是否为0,并根据判断结果确定是否将所述低位目标编码和所述高位目标编码中的每位数值,分别输入至低位部分积获取单元以及高位部分积获取单元,所述低位部分积获取单元用于根据接收到的所述目标编码中的低位目标编码以及所述数据寄存器输入的所述第二数据,得到符号位扩展后的低位部分积,并根据所述符号位扩展后的低位部分积得到目标编码低位部分积,所述高位部分积获取单元用于根据接收到的所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的高位部分积,并根据所述符号位扩展后的高位部分积得到目标编码高位部分积。
在其中一个实施例中,所述正则有符号数编码单元包括:第一数据输入端口、第一模式选择信号输入端口、低位目标编码输出端口以及高位目标编码输出端口;所述第一数据输入端口用于接收所述第一数据,所述第一模式选择信号输入端口用于接收所述功能模式选择信号,所述低位目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述低位目标编码,所述高位目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述高位目标编码。
在其中一个实施例中,所述判断单元包括:高位目标编码输入端口、低位目标编码输入端口、高位目标编码输出端口以及低位目标编码输出端口;所述高位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述高位目标编码,所述低位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述低位目标编码,所述高位目标编码输出端口用于输出所述高位目标编码中的数值,所述低位目标编码输出端口用于输出所述低位目标编码中的数值。
在其中一个实施例中,所述低位部分积获取单元包括:低位目标编码输入端口、第二模式选择信号输入端口、第二数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述低位目标编码,所述第二模式选择信号输入端口用于接收所述功能模式选择信号,所述第二数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出根据所述第二数据以及所述低位目标编码得到的所述目标编码低位部分积。
在其中一个实施例中,所述高位部分积获取单元包括:高位目标编码输入端口、第三模式选择信号输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述高位目标编码,所述第三模式选择信号输入端口用于接收所述正则有符号数编码单元输出的所述功能模式选择信号,所述第二数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出根据所述第二数据以及所述高位目标编码得到的所述目标编码高位部分积。
在其中一个实施例中,所述改进压缩电路包括:改进华莱士树组单元以及累加电路;所述改进华莱士树组单元的输出端与所述累加电路的输入端连接;所述改进华莱士树组单元用于对不同位宽数据运算得到的所有目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路用于对实时累加运算结果进行累加处理得到所述乘法运算结果。
在其中一个实施例中,所述改进华莱士树组单元包括:低位华莱士树子单元、选择器以及高位华莱士树子单元,所述低位华莱士树子单元的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子单元的输入端连接;其中,所述低位华莱士树子单元用于根据接收到的所述功能模式选择信号,控制是否对所述目标编码部分积中的每列数值进行累加运算,所述选择器用于根据接收到的所述功能模式选择信号,控制是否选通所述高位华莱士树子单元接收的进位输入信号,所述高位华莱士树子单元用于根据接收到的所述功能模式选择信号,控制是否对所述目标编码部分积中的每列数值进行累加运算。
在其中一个实施例中,所述累加电路包括:加法器,所述加法器用于对所述累加运算结果进行加法运算得到所述乘法运算结果。
在其中一个实施例中,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述运算结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的所述乘法运算结果。
本实施例提供的一种乘法器,乘法器通过判断电路可以先判断接收到的数据是否为全0数据,根据判断结果输出数据门控信号,并且数据寄存器可以根据数据门控信号控制存储数据,并通过改进正则有符号数编码电路对数据寄存器存储的数据进行编码处理得到符号位扩展后的部分积,并根据符号位扩展后的部分积得到目标编码部分积,并通过改进压缩电路对目标编码部分积进行累加处理,得到乘法运算结果;乘法器可以通过判断电路确定接收到的数据是否为全0数据,若为全0数据就不需要将该数据存储至数据寄存器中,以减少数据寄存器的翻转次数,并且该乘法器不需要复杂稀疏选数电路,仅需要通过判断电路获取有效数据,使得乘法器只需要对有效数据进行处理,缩小了无效运算量,从而降低了乘法器的功耗。
本申请实施例提供一种数据处理方法,所述方法包括:
接收待处理数据和功能模式选择信号,其中,所述功能模式选择信号用于指示乘法器当前可处理的数据位宽;
当所述待处理数据为非0数据时,则将所述待处理数据存储至数据寄存器中;
根据所述功能模式选择信号,判断所述数据寄存器中存储的所述待处理数据是否需要进行拆分处理;
若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据;
对所述拆分后的数据进行正则有符号数编码处理,得到目标编码;
若所述目标编码中的数值不为预设阈值,则根据所述目标编码和所述拆分后的数据,得到目标编码部分积;
对所述目标编码部分积进行累加处理,得到乘法运算结果。
在其中一个实施例中,所述根据所述功能模式选择信号,判断所述数据寄存器中存储的所述待处理数据是否需要进行拆分处理,包括:根据所述功能模式选择信号,判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等。
在其中一个实施例中,所述方法还包括:根据所述功能模式选择信号,判定所述待处理数据的位宽与乘法器可处理的数据位宽相等时,则对所述待处理数据进行拆分处理,得到拆分后的数据。
在其中一个实施例中,所述方法还包括:若所述待处理数据不需要进行拆分处理,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码。
在其中一个实施例中,所述对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:将所述待处理数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
在其中一个实施例中,所述对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:
对所述待处理数据进行正则有符号数编码处理,得到中间编码;
根据所述中间编码以及所述功能模式选择信号,得到所述目标编码。
在其中一个实施例中,所述根据所述目标编码和所述拆分后的数据,得到目标编码部分积,包括:
根据所述目标编码和所述拆分后的数据得到原始部分积;
对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积;
根据所述符号位扩展后的部分积得到所述目标编码部分积,其中,所述目标编码部分积包括目标编码低位部分积以及目标编码高位部分积。
在其中一个实施例中,所述根据所述符号位扩展后的部分积得到所述目标编码部分积,包括:删除所有符号位扩展后的部分积中数据为0的部分积,得到所述目标编码部分积。
在其中一个实施例中,所述对所述目标编码部分积进行累加处理,得到乘法运算结果,包括:
通过改进华莱士树组单元对所述目标编码低位部分积和所述目标编码高位部分积,进行累加处理得到累加运算结果;
通过累加电路对所述累加运算结果进行累加处理,得到乘法运算结果。
在其中一个实施例中,所述通过改进华莱士树组单元对所述目标编码低位部分积和所述目标编码高位部分积,进行累加处理得到累加运算结果,包括:
通过低位华莱士树子单元对所有目标编码低位部分积和所有目标编码高位部分积中的列数值进行累加处理,得到中间运算结果;
通过选择器对所述中间运算结果进行选通,得到进位选通信号;
通过高位华莱士树子单元根据所述进位选通信号,以及所有目标编码低位部分积和所有目标编码高位部分积中的列数值进行累加处理,得到所述累加运算结果。
本实施例提供的一种数据处理方法,该方法可以仅对有效数据进行处理,以得到有效部分积的数量减少,从而减少了无效运算量,降低了乘法器的运算功耗。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个所述的乘法器;该机器学习运算装置用于从所述机器学习运算装置中除所述乘法器以外的其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给所述机器学习运算装置中除所述乘法器以外的其它处理装置;
当所述机器学习运算装置包含多个所述乘法器时,多个所述乘法器间可以通过预设结构进行链接并传输数据;
其中,多个所述乘法器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括如所述的机器学习处理装置、通用互联接口,和所述组合处理装置中除所述机器学习运算装置以外的其它处理装置;该机器学习运算装置与所述组合处理装置中除所述机器学习运算装置以外的其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置连接,用于保存所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的乘法器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的乘法器。
本申请实施例提供的一种电子设备,包括如所述的芯片。
附图说明
图1为一实施例提供的一种乘法器的结构示意图;
图2为另一实施例提供的乘法器中的判断电路和数据寄存器的具体电路结构示意图;
图3为另一实施例提供的一种乘法器的具体结构示意图;
图4为另一实施例提供的乘法器中的改进正则有符号数编码电路的具体电路结构示意图;
图5为另一实施例提供的乘法器中改进压缩电路的具体结构示意图;
图6为另一实施例提供的乘法器中改进压缩电路的具体结构示意图;
图7为一实施例提供的一种数据处理方法流程示意图;
图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用于判断接收到的数据是否包含全0数据,并根据判断结果输出数据门控信号,所述数据寄存器12用于根据接收到的所述数据门控信号选择接收所述数据,并存储所述数据,所述改进正则有符号数编码电路13用于对所述数据寄存器12存储的所述数据进行正则有符号数编码处理,得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码部分积,所述改进压缩电路14用于对所述目标编码部分积进行累加处理得到乘法运算结果。
可选的,继续参见图1所示,乘法器中的改进正则有符号数编码电路13包括编码处理支路131以及部分积获取支路132;所述编码处理支路131用于对接收到的数据进行正则有符号数编码处理,得到目标编码;所述部分积获取支路132用于根据所述目标编码得到所述符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到所述目标编码部分积。
具体的,上述乘法器的输入端口可以接收N比特位宽的数据,N可以大于0;另外,乘法器可以同时接收多个运算数据,接收到的这些数据可以为乘法器中判断电路11需要进行判断的数据。可选的,上述判断电路11可以同时接收乘法运算中的乘法和被乘数;该乘数和被乘数均可以为定点数。可选的,判断电路11可以判断接收到的数据中是否包含全0数据,然后根据判断结果输出数据门控信号,也就是,若乘法器接收到的乘法运算中的乘数和/或被乘数为全0数据,此时,乘法器中的判断电路11输出的数据门控信号可以为低电平信号0;若乘法器接收到的乘法运算中的乘数和被乘数均为非0数据,此时,乘法器中的判断电路11输出的数据门控信号可以为高电平信号0;该数据门控信号可以包括高电平信号1和低电平信号0。可选的,判断电路11对每组乘数和被乘数进行判断,可以得到一个对应的数据门控信号。
需要说明的是,上述数据寄存器12可以接收判断电路11输出的数据门控信号。可选的,若数据寄存器12接收到数据门控信号为低电平信号,此时,数据寄存器12可以保持关闭状态,不需要接收数据门控信号对应的乘数和被乘数进行存储,以供后续运算;若数据寄存器12接收到数据门控信号为高电平信号,此时,数据寄存器12可以保持开启状态,需要接收数据门控信号对应的乘数和被乘数进行存储,以供后续运算。也就是,数据寄存器12可以根据每个数据门控信号选择是否接收对应输入的乘数和被乘数。可选的,数据门控制信号对应的乘数和被乘数可以为判断电路11得到该数据门控制信号时,对应判断的乘数和被乘数。
可以理解的是,上述改进正则有符号数编码电路13可以包括多个具有不同功能的数据处理单元,即编码处理支路111以及部分积获取支路112,并且改进正则有符号数编码电路13接收到的数据可以作为乘法运算中的乘数,还可以作为乘法运算中的被乘数。可选的,上述编码处理支路111可以包括具有正则有符号数编码处理功能的数据处理单元,所述部分积获取支路112可以包括具有多个不同功能的数据处理单元。可选的,上述正则有符号数编码处理可以表征为通过数值0,-1和1编码的数据处理过程。可选的,上述数据可以为定点数。可选的,改进正则有符号数编码电路13可以接收多种不同比特位宽的数据,也就是说,本实施例提供的乘法器可以处理多种不同比特位宽数据的乘法运算。但是,同一次乘法运算时,改进正则有符号数编码电路13接收到的乘数和被乘数可以是同位宽的数据,即乘数和被乘数位宽相等。示例性的,本实施例提供的乘法器可以处理8位*8位的数据乘法运算,16位*16位的乘法运算,32位*32位的数据的乘法运算,还可以处理64位*64位的数据的乘法运算,对此本实施例不作任何限定。
还可以理解的是,上述正则有符号数编码处理的方法可以具体通过以下方式表征:若乘法器接收到的数据位宽为2N,当前可处理N位数据,对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于乘法器接收到的数据位宽2N加2。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,编码处理支路131接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,编码处理支路131对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码);若新数据中的最高位数值和次高位数值为“10”或“01”,则编码处理支路131可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于乘法器当前可处理数据的位宽加1。另外,若当前乘法器接收到的数据位宽为2N,该乘法器当前可处理N位数据运算,则乘法器中的编码处理支路131,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若乘法器当前可处理2N位数据运算,则乘法器中的编码处理支路131,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
进一步的,部分积获取支路132可以根据目标编码以及被乘数得到符号位扩展后的部分积,该符号位扩展后的部分积的位宽可以等于乘法器当前可处理数据位宽的2倍。例如,乘法器接收到的是16比特位宽的数据,若乘法器当前所处理8位数据乘法运算,则乘法器中的改进正则有符号数编码电路13需要将16比特位宽的数据划分成,高8位和低8位两组数据分别进行异步乘法运算,此时,获取的符号位扩展后的部分积的位宽可以等于乘法器当前可处理数据位宽的2倍,即16比特;若乘法器当前所处理16位数据乘法运算,则乘法器中的改进正则有符号数编码电路13需要对整体16位数据进行运算,此时,获取的符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍,即32位。可选的,符号位扩展后的部分积的位宽可以等于目标编码部分积的位宽,符号位扩展后的部分积的数量可以大于等于目标编码部分积的数量。可选的,目标编码中的数值可以包括-1、1和0;若目标编码中的数值为-1时,则原始部分积可以为-X,当目标编码中的数值1时,则原始部分积可以为X,当目标编码中的数值0时,则原始部分积可以为0。可选的,该目标编码的位宽可以等于原始部分积的数量,还可以大于原始部分积的数量。
可选的,所述改进正则有符号数编码电路13中包括第一输入端,用于接收输入的功能模式选择信号;所述改进压缩电路14中包括第一输入端,用于接收输入的所述功能模式选择信号,所述功能模式选择信号用于确定所述乘法器当前可处理的数据位宽。
需要说明的是,上述功能模式选择信号(mode信号)可以有多种,不同功能模式选择信号对应于乘法器当前可处理不同位宽数据的乘法运算。可选的,同一次乘法运算时,改进正则有符号数编码电路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所示为另一实施例提供的乘法器中的判断电路和数据寄存器的具体电路结构示意图,其中,所述判断电路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可以保持关闭状态,此时,数据寄存器12不需要对该乘数和被乘数进行存储;若乘法运算中的乘数和被乘数均为非0数据,此时,数据寄存器12可以保持开启状态,数据寄存器12需要对该乘数和被乘数进行存储。
本实施例提供的乘法器,乘法器可以通过判断电路输出的数据门控信号,控制数据寄存器的关闭状态,当乘法器处理的运算数据中包含全0数据时,可以减少数据寄存器的翻转次数,并且该乘法器不需要复杂稀疏选数电路,仅需要通过判断电路获取有效数据,使得乘法器只需要对有效数据进行处理,缩小了无效运算量,从而降低了乘法器的功耗,进而以降低AI芯片的功耗。
图3为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括编码处理支路131,所述编码处理支路131包括正则有符号数编码单元1311以及判断单元1312,所述部分积获取支路132包括低位部分积获取单元1321以及高位部分积获取单元1322;所述正则有符号数编码单元1311的输出端与所述判断单元1312的输入端连接,所述判断单元1312的输出端与所述低位部分积获取单元1321以及所述高位部分积获取单元1322输入端连接。
其中,所述正则有符号数编码单元1311用于根据接收到的所述功能模式选择信号,确定所述乘法器可处理数据的位宽,并对所述数据寄存器12输入的所述第一数据进行正则有符号数编码处理得到低位目标编码以及高位目标编码,所述判断单元1312用于判断所述低位目标编码和所述高位目标编码中的每位数值是否为0,并根据判断结果确定是否将所述低位目标编码和所述高位目标编码中的每位数值,分别输入至低位部分积获取单元1321以及高位部分积获取单元1322,所述低位部分积获取单元1321用于根据接收到的所述目标编码中的低位目标编码以及所述数据寄存器12输入的所述第二数据,得到符号位扩展后的低位部分积,并根据所述符号位扩展后的低位部分积得到目标编码低位部分积,所述高位部分积获取单元1322用于根据接收到的所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的高位部分积,并根据所述符号位扩展后的高位部分积得到目标编码高位部分积。
具体的,上述正则有符号数编码单元1311可以接收第一数据,并对该第一数据进行正则有符号数编码处理得到目标编码,该第一数据可以为乘法运算中的乘数。可选的,上述低位部分积获取单元1321可以根据正则有符号数编码单元1311得到的低位目标编码,以及接收到第二数据得到符号位扩展后的低位部分积,并根据符号位扩展后的低位部分积确定目标编码低位部分积;高位部分积获取单元1322可以根据正则有符号数编码单元1311得到的高位目标编码,以及接收到第二数据得到符号位扩展后的高位部分积,再根据符号位扩展后的高位部分积确定目标编码高位部分积;该第二数据可以为乘法运算中的被乘数。可选的,若正则有符号数编码单元1311接收到的数据位宽为2N,乘法器当前可处理的数据位宽为N比特,则正则有符号数编码单元1311可以自动将接收到2N位数据,拆分成高N位数据以及低N位数据,分别对高N位数据以及低N位数据进行异步正则有符号数编码处理,得到的高位目标编码的位宽等于N加1,得到的低位目标编码的位宽也可以等于N加1;同时,高位目标编码得到的对应符号位扩展后的高位部分积的数量可以小于等于(N+1),低位目标编码得到的对应符号位扩展后的低位部分积的数量可以小于等于(N+1);若乘法器中的正则有符号数编码单元1311接收到的数据位宽为2N,乘法器当前可处理的数据位宽也为2N比特,则正则有符号数编码单元1311可以对接收到2N位数据进行正则有符号数编码处理,得到(2N+1)位的初始编码,并需要对初始编码的最高位数值的高一位处补数值0,将这(2N+2)位编码作为目标编码;也就是,目标编码中的最高位数值为数值0,该数值0对应的符号位扩展后的部分积中包含的数值均为0;其中,(2N+2)位目标编码中高(N+1)位数值可以称为高位目标编码,低(N+1)位数值可以称为低位目标编码。
同时,判断单元1312可以对高位目标编码和低位目标编码中的每位数值进行判断,判断每位数值是否为0。若低位目标编码或高位目标编码中有一位数值为0,则不需要将该位数值输入至对应位的低位部分积获取单元1321或高位部分积获取单元1322中,否则,将该位数值输入至对应位的低位部分积获取单元1321或高位部分积获取单元1322中,以参与后续运算。可选的,低位目标编码或高位目标编码中其它位的数值判断也类似,根据判断结果确定是否需要将对应位数值输入至对应位的低位部分积获取单元1321或高位部分积获取单元1322中,参与后续运算。
需要说明的是,低位部分积获取单元1321可以根据低位目标编码中的每位数值以及接收到的第二数据(即被乘数),得到低位数据对应的目标编码部分积。可选的,高位部分积获取单元1322可以根据高位目标编码中的每位数值以及接收到的第二数据,得到高位数据对应的目标编码部分积。可选的,正则有符号数编码处理过程中,得到的低位目标编码的位宽可以等于得到的高位目标编码的位宽,还可以大于等于低位数据对应的符号位扩展后的部分积的数量,当然,也可以大于等于高位数据对应的符号位扩展后的部分积的数量。可选的,部分积获取支路132可以包含(N+1)个低位部分积获取单元1321,还可以包含(N+1)个高位部分积获取单元1322;其中,每个低位部分积获取单元1321的排列位置与低位目标编码中每位数值的对应位编号是对应的,每个高位部分积获取单元1322的排列位置与高位目标编码中每位数值的对应位编号是对应的。可选的,上述每个低位部分积获取单元1321和每个高位部分积获取单元1322中,均可以包含2N个数值生成子单元,每个数值生成子单元可以获取符号位扩展后的部分积中的一位数值。其中,上述N可以表示乘法器当前可处理数据的位宽。
本实施例提供的一种乘法器,乘法器通过改进正则有符号数编码电路中的改进正则有符号数编码单元,对接收到的数据进行正则有符号数编码处理得到目标编码,然后通过判断单元对目标编码中的数值进行判断,根据判断结果确定是否将目标编码中的数值输入至低位部分积获取单元或高位部分积获取单元中,并通过低位部分积获取单元和高位部分积获取单元根据接收到的目标编码得到符号位扩展后的部分积,进而通过中间数据寄存器对符号位扩展后的部分积进行存取后得到目标编码部分积,然后对目标编码部分积进行累加处理,得到乘法运算结果,最后对乘法运算结果进行存取得到目标运算结果;该过程可以保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗;另外,乘法器可以通过正则有符号数编码单元对接收到的数据进行正则有符号数编码处理,进而能够得到较少数量的有效部分积,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,进一步有效降低乘法器的功耗。
在其中一个实施例中,如图4所示为乘法器中的改进正则有符号数编码电路的具体电路结构示意图,其中,改进正则有符号数编码电路13中的编码处理支路131包括正则有符号数编码单元1311,所述正则有符号数编码单元1311包括:第一数据输入端口1311a、第一模式选择信号输入端口1311b、低位目标编码输出端口1311c以及高位目标编码输出端口1311d;所述第一数据输入端口1311a用于接收所述第一数据,所述第一模式选择信号输入端口1311b用于接收所述功能模式选择信号,所述低位目标编码输出端口1311c用于输出对所述第一数据进行正则有符号数编码处理后得到的所述低位目标编码,所述高位目标编码输出端口1311d用于输出对所述第一数据进行正则有符号数编码处理后得到的所述高位目标编码。
具体的,乘法运算过程中,正则有符号数编码单元1311可以通过第一数据输入端口1311a接收第一数据,通过第一模式选择信号输入端口1311b接收功能模式选择信号,然后对第一数据进行正则有符号数编码处理得到初始编码,并根据接收到的功能模式选择信号判断是否需要对初始编码进行补数处理得到目标编码,进而通过低位目标编码输出端口1311c输出目标编码中的低位目标编码,通过高位目标编码输出端口1311d输出目标编码中的高位目标编码。需要说明的是,上述补数处理可以为对初始编码的最高位数值的高一位处补数值0。
本实施例提供的一种乘法器,该乘法器可以采用正则有符号数编码单元对接收到的数据进行正则有符号数编码处理,以降低乘法运算过程中获取的有效部分积的数量,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗;同时,上述乘法器可以对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。
在其中一个实施例中,如图4所示为乘法器中的改进正则有符号数编码电路的具体电路结构示意图,其中,改进正则有符号数编码电路13中的编码处理支路131包括判断单元1312,所述判断单元1312包括:高位目标编码输入端口1312a、低位目标编码输入端口1312b、高位目标编码输出端口1312c以及低位目标编码输出端口1312d;所述高位目标编码输入端口1312a用于接收所述正则有符号数编码单元1311输出的所述高位目标编码,所述低位目标编码输入端口1312b用于接收所述正则有符号数编码单元1311输出的所述低位目标编码,所述高位目标编码输出端口1312c用于输出所述高位目标编码中的数值,所述低位目标编码输出端口1312d用于输出所述低位目标编码中的数值。
具体的,乘法器中的判断单元1312可以通过高位目标编码输入端口1312a接收正则有符号数编码单元1311得到的高位目标编码,通过低位目标编码输入端口1312b接收正则有符号数编码单元1311得到的低位目标编码,然后判断高位目标编码中的每位数值是否为0,并判断低位目标编码中的每位数值是否为0;如果判断结果为是,此时,判断单元1312不需要将目标编码中的该位数值,输入至低位部分积获取单元1321或高位部分积获取单元1322中参与后续运算;否则,判断单元1312可以通过高位目标编码输出端口1312c将高位目标编码中的该位数值,输入至高位部分积获取单元1322参与后续运算,或者通过低位目标编码输出端口1312d将低位目标编码中的该位数值,输入至低位部分积获取单元1321参与后续运算。
本实施例提供的一种乘法器,该乘法器可以通过判断单元判断目标编码中的数值是否为0,若是,则判断单元不需要将该数值输入至乘法器中的其它处理单元中参与后续运算,从而降低乘法运算过程中获取的有效部分积的数量,降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗。
作为其中一个实施例,如图4所示为乘法器中的改进正则有符号数编码电路的具体电路结构示意图,其中,改进正则有符号数编码电路13中的部分积获取支路132包括低位部分积获取单元1321,所述低位部分积获取单元1321包括:低位目标编码输入端口1321a、第二模式选择信号输入端口1321b、第二数据输入端口1321c以及低位部分积输出端口1321d;所述低位目标编码输入端口1321a用于接收所述正则有符号数编码单元1311输出的所述低位目标编码,所述第二模式选择信号输入端口1321b用于接收所述功能模式选择信号,所述第二数据输入端口1321c用于接收所述第二数据,所述低位部分积输出端口1321d用于输出根据所述第二数据以及所述低位目标编码得到的所述目标编码低位部分积。
具体的,低位部分积获取单元1321通过低位目标编码输入端口1321a,可以接收正则有符号数编码单元1311输出的低位目标编码,通过第二数据输入端口1321c接收乘法运算中的被乘数,低位部分积获取单元1321并根据低位目标编码以及被乘数得到原始低位部分积,然后对原始低位部分积进行符号位扩展处理,得到低位目标编码对应的符号位扩展后的低位部分积。可选的,若第二模式选择信号输入端口1321b接收到的功能模式选择信号对应乘法器可处理N位数据运算,则符号位扩展后的部分积的位宽可以等于2N。示例性的,若乘法器处理N位数据运算,低位部分积获取单元1321接收到一个N位被乘数X,则低位部分积获取单元1321可以根据被乘数X与低位目标编码中的数值,直接得到对应的2N位符号位扩展后的低位部分积,该符号位扩展后的低位部分积中的低N位数值可以等于低位目标编码直接得到的原始低位部分积中的所有数值,符号位扩展后的低位部分积的高N位数值可以等于该原始低位部分积中的符号位数值,该符号位数值也就是原始低位部分积的最高位数值。当低位目标编码中的数值为-1时,则原始低位部分积可以为-X,当低位目标编码中的数值1时,则原始低位部分积可以为X,当低位目标编码中的数值0时,则原始低位部分积可以为0。
进一步地,低位部分积获取单元1321可以根据所有符号位扩展后的低位部分积,得到对应的目标编码低位部分积,并通过低位部分积输出端口1321d将目标编码低位部分积输出。可选的,低位部分积获取单元1321可以将所有符号位扩展后的低位部分积中,符号位扩展后的低位部分积为全0数据的部分积去除,仅保留非0数据作为目标编码低位部分积。可选的,目标编码低位部分积的数量可以小于等于符号位扩展后的低位部分积的数量。可选的,所有目标编码低位部分积的分布方式可以表征为,从第二个目标编码低位部分积开始,每个目标编码低位部分积中的最低位数值与第一个目标编码低位部分积中的最低位数值均位于同一列,每个目标编码低位部分积中的最高位数值与第一个目标编码低位部分积中的最高位数值均位于同一列,每个目标编码低位部分积中的其它位数值与第一个目标编码低位部分积中的对应位数值也均位于同一列。
可选的,继续参见图4,图4中的改进正则有符号数编码电路13中的部分积获取支路132包括高位部分积获取单元1322,所述高位部分积获取单元1322包括:高位目标编码输入端口1322a、第三模式选择信号输入端口1322b、第二数据输入端口1322c以及高位部分积输出端口1322d;所述高位目标编码输入端口1322a用于接收所述正则有符号数编码单元1311输出的所述高位目标编码,所述第三模式选择信号输入端口1322b用于接收所述正则有符号数编码单元1311输出的所述功能模式选择信号,所述第二数据输入端口1322c用于接收所述第二数据,所述高位部分积输出端口1322d用于输出根据所述第二数据以及所述高位目标编码得到的所述目标编码高位部分积。
需要说明的是,高位部分积获取单元1322通过高位目标编码输入端口1322a,可以接收正则有符号数编码单元1311输出的高位目标编码,通过第二数据输入端口1322c接收乘法运算中的被乘数,根据高位目标编码以及被乘数得到原始高位部分积,然后对原始高位部分积进行符号位扩展处理,得到高位目标编码对应的符号位扩展后的高位部分积。可选的,若高位部分积获取单元1322通过第三模式选择信号输入端口1322b,接收到的功能模式选择信号对应乘法器可处理N位数据运算,则高位部分积获取单元1322得到的符号位扩展后的高位部分积的位宽可以等于2N。示例性的,若乘法器处理N位数据运算,高位部分积获取单元1322接收到一个N位被乘数X,则高位部分积获取单元1322可以根据被乘数X与高位目标编码,直接得到对应的2N位符号位扩展后的高位部分积,该符号位扩展后的高位部分积中的低N位数值可以等于高位目标编码直接得到的原始高位部分积中的所有数值,符号位扩展后的高位部分积中的高N位数值可以等于该原始高位部分积中的符号位数值,该符号位数值也就是原始高位部分积的最高位数值。当高位目标编码中的数值为-1时,则原始高位部分积可以为-X,当高位目标编码中的数值1时,则原始高位部分积可以为X,当高位目标编码中的数值0时,则原始高位部分积可以为0。
进一步地,高位部分积获取单元1322可以根据所有符号位扩展后的高位部分积,得到对应的目标编码高位部分积,并通过高位部分积输出端口1322d将目标编码高位部分积输出。可选的,高位部分积获取单元1322可以将所有符号位扩展后的高位部分积中,符号位扩展后的高位部分积为全0数据的部分积去除,仅保留非0数据作为目标编码高位部分积。可选的,目标编码高位部分积的数量可以小于等于符号位扩展后的高位部分积的数量。可选的,所有目标编码高位部分积的分布方式可以表征为,从第二个目标编码高位部分积开始,每个目标编码高位部分积中的最高位数值与第一个目标编码高位部分积中的最高位数值均位于同一列,每个目标编码高位部分积中的最高位数值与第一个目标编码高位部分积中的最高位数值均位于同一列,每个目标编码高位部分积中的其它位数值与第一个目标编码高位部分积中的对应位数值也均位于同一列。
本实施例提供的一种乘法器,乘法器中的低位部分积获取单元可以根据接收到的低位目标编码得到目标编码低位部分积,进而对目标编码低位部分积以及目标编码高位部分积进行累加处理,得到乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取的有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
作为其中一个实施例,继续参见图3所示乘法器,乘法器包括改进压缩电路14,所述改进压缩电路14包括:改进华莱士树组单元141以及累加电路142;所述改进华莱士树组单元141的输出端与所述累加电路142的输入端连接;所述改进华莱士树组单元141用于对不同位宽数据运算时,得到的所有目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路142用于对实时累加运算结果进行累加处理得到所述乘法运算结果。
具体的,上述改进华莱士树组单元141可以对改进正则有符号数编码电路13得到的所有目标编码部分积中的每列数值进行累加处理,并通过累加电路142对改进华莱士树组单元141得到的两个运算结果进行累加处理,得到乘法运算结果。其中,通过改进华莱士树组单元141进行累加处理时,所有目标编码部分积的分布方式,可以表征为每个目标编码部分积中的最低位数值均位于同一列,每个目标编码部分积中的最高位数值均位于同一列,每个目标编码部分积中的其它位数值均对应位于同一列,改进华莱士树组单元141按照此分布方式,对所有目标编码部分积中的每列数值进行累加处理。可选的,目标编码部分积可以包括目标编码低位部分积和目标编码高位部分积,其中,最后一个目标编码低位部分积与第一个目标编码高位部分积中的对应位数值均对应不同的列。可选的,上述改进华莱士树组单元141得到的两个运算结果可以包括和位输出信号Sum与进位输出信号Carry。
需要说明的是,若乘法器当前所处理的数据位宽为2N,接收到的数据位宽也为2N,则乘法器可以对整体N位数据进行乘法运算;若乘法器当前可处理的数据位宽为N,乘法器中的改进正则有符号数编码电路13可以将接收到的2N位数据拆分成两组N位数据分别进行异步乘法运算,此时,乘法器中的改进正则有符号数编码电路13可以先后得到两组目标编码部分积,然后乘法器中的改进压缩电路14可以先后对着两组目标编码部分积进行异步累加运算。
本实施例提供的一种乘法器,乘法器通过改进华莱士树组电路可以对目标编码低位部分积和目标编码高位部分积进行累加处理得到累加运算结果,并通过累加电路对累加运算结果进行再次累加处理,得到乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取的有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
在其中一个实施例中,图5为乘法器中改进压缩电路14的具体结构示意图,所述改进压缩电路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接收到输入信号的数量可以等于目标编码部分积的数量,还可以等于目标编码部分积的数量加1。其中,改进华莱士树组单元141中高位华莱士树子单元1413与低位华莱士树子单元1411的数量之和,可以等于2N。
示例性的,若乘法器接收到的数据位宽为N,当前乘法器可处理的数据位宽也为N,该情况下,目标编码部分积的位宽可以等于2N,即所有目标编码部分积中,从最低列至最高列的总列数可以等于2N,N个低位华莱士树子单元1411可以对所有目标编码部分积中的低N列数值对应的每列数值进行累加运算,N个高位华莱士树子单元1413可以对所有目标编码部分积中的高N列数值对应的部分积每列数值进行累加运算,同时,在累加运算过程中,选择器1412可以选通最后一个低位华莱士树子单元1411的输出的进位输出信号CoutN作为改进华莱士树组单元141中,第一个高位华莱士树子单元1413接收到的进位输入信号CinN+1,还可以理解为,乘法器当前可以将接收到的N位数据作为一个整体进行运算。若乘法器当前可处理N/2位数据运算时,得到的目标编码部分积的位宽可以等于N,此时,乘法器中的选择器1412和所有高位华莱士树子单元1413均可以处于关闭状态(即悬空状态),不执行累加运算,仅通过低位华莱士树子单元1411对所有目标编码部分积进行累加运算,得到两路输出信号,即进位信号Carryi与一个和位信号Sumi;或者乘法器中的选择器1412和所有低位华莱士树子单元1411均可以处于关闭状态,不执行累加运算,仅通过高位华莱士树子单元1413对所有目标编码部分积进行累加运算,得到输出两路信号,即进位信号Carryi与一个和位信号Sumi;还可以理解为,乘法器当前可以将接收到的N位数据划分成高N/2位数据和低N/2位数据分别进行异步乘法运算,此时,乘法器可以异步得到两组位宽为N的目标编码部分积,乘法器仅通过所有低位华莱士树子单元1411或所有高位华莱士树子单元1413,对两组目标编码部分积进行异步累加运算,得到输出两路信号,即进位信号Carryi与一个和位信号Sumi。
需要说明的是,改进华莱士树组单元141中每个低位华莱士树子单元1411和高位华莱士树子单元1413,接收到的信号可以包括进位输入信号Cini,部分积数值输入信号。可选的,每个低位华莱士树子单元1411和高位华莱士树子单元1413接收到的部分积数值输入信号,可以为所有目标编码部分积中对应列的所有数值,每个低位华莱士树子单元1411和高位华莱士树子单元1413输出的进位信号Couti的位数可以等于NCout=floor((NI+NCin)/2)-1。其中,NI可以表示该华莱士树子单元的数据输入位数,NCin可以表示该华莱士树子单元的进位输入位数,NCout可以表示该华莱士树子单元最少的进位输出位数,floor(·)可以表示向下取整函数。可选的,改进华莱士树组单元141中每个低位华莱士树子单元1411或高位华莱士树子单元1413接收到的进位输入信号,可以为上一个低位华莱士树子单元1411或高位华莱士树子单元1413输出的进位输出信号,并且第一个低位华莱士树子单元1411接收到的进位数输入信号为数值0;另外,若乘法器接收到的数据位宽为N,当前可处理N/2的数据,该情况下,若N个高位华莱士树子单元1413为开启状态,此时,第一个高位华莱士树子单元1413接收到的进位数输入信号可以为数值0。
本实施例提供的一种乘法器,乘法器通过改进华莱士树组电路可以对目标编码部分积进行累加处理得到两路输出信号,并通过累加电路对该两路输出信号进行再次累加处理,得到乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取的有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
作为其中一个实施例,图5为乘法器中改进压缩电路14的具体结构示意图,所述改进压缩电路14中的累加电路142包括:加法器1421,所述加法器1421用于对所述累加运算结果进行加法运算得到所述乘法运算结果。
具体的,加法器1421可以为不同位宽的进位加法器。可选的,加法器1421可以接收改进华莱士树组单元141输出的两路信号,并对这两路输出信号进行加法运算得到乘法运算结果。可选的,上述加法器1421可以为超前进位加法器,该超前进位加法器的位宽可以等于乘法器当前可处理数据位宽的2倍。
可选的,继续参见图5所示,其中,所述改进压缩电路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,当前乘法器可处理8位定点数乘法运算,且乘法器得到的目标编码部分积的数量等于10,目标编码部分积的位宽等于16,则乘法器中的加法器1421可以为16位超前进位加法器,如图6所示为改进压缩电路14的具体电路结构示意图,图中示出了每个华莱士树子单元均接收到10个目标编码部分积中的数值,改进华莱士树组单元141可以输出16个低位华莱士树子单元和高位华莱士树子单元的和位输出信号Sum和进位输出信号Carry;但是,16位进位加法器接收到的和位输出信号,可以为改进华莱士树组单元141输出的完整和位信号Sum,接收到的进位输出信号可以为改进华莱士树组单元141中,除去最后一个高位华莱士树子单元1413输出的进位输出信号的所有进位输出信号,与数值0结合后的进位信号Carry。
本实施例提供的一种乘法器,乘法器通过累加电路可以对改进华莱士树组电路输出的两路信号进行累加处理,输出乘法运算结果;该过程能够保证乘法器运算结果准确性的前提下,能够对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;同时,该过程可以获取的有效部分积的数量较少,使得乘法器仅对有效部分积进行累加处理,从而减少了无效运算量,降低了乘法器的运算功耗。
图7为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图1和图3所示的乘法器进行处理,本实施例涉及的是对不同位宽的数据进行乘法运算的过程。如图7所示,该方法包括:
步骤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中根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理的过程,可以包括:根据所述功能模式选择信号,判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等。可选的,在所述根据所述功能模式选择信号,判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等的步骤之后,数据处理方法还包括:根据所述功能模式选择信号,判定所述待处理数据的位宽与乘法器可处理的数据位宽相等时,则对所述待处理数据进行拆分处理,得到拆分后的数据。
需要说明的是,上述根据功能模式选择信号,判断待处理数据是否需要进行拆分处理,实际上可以理解为,根据功能模式选择信号,判断待处理数据的位宽与乘法器可处理的数据位宽是否相等;若相等,则不需要对待处理数据进行拆分处理;否则,需要对待处理数据进行拆分处理后,在进行后续运算处理。
步骤S104、若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据。
可选的,在上述步骤S103中根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理之后,所述方法还包括:若所述待处理数据不需要进行拆分处理,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码。
具体的,若乘法器中的改进正则有符号数编码电路,接收到的乘法运算中的乘数和被乘数的位宽,与乘法器接收到的功能模式选择信号对应可处理的数据位宽不相等,则乘法器可以根据乘法器当前可处理的数据位宽,将接收到的待处理数据自动划分成,与乘法器当前可处理的数据位宽相等的多组数据进行异步处理;其中,改进正则有符号数编码电路接收到的待处理数据的位宽可以大于乘法器当前可处理的数据位宽。若改进正则有符号数编码电路接收到的待处理数据的位宽,与乘法器接收到的功能模式选择信号对应可处理的数据位宽相等,则乘法器直接对完整的待处理数据进行后续处理,不需要对待处理数据进行拆分处理后再进行异步后续处理。
需要说明的是,若乘法器接收到的待处理数据的位宽为2N,当前可处理的数据位宽为2N,则乘法器中的正则有符号数编码单元可以对完整的2N位数据进行正则有符号数编码处理,得到对应的目标编码。其中,上述正则有符号数编码处理可以表征为通过数值0,-1和1编码的数据处理过程。同时,若乘法器对完整的2N位数据直接进行正则有符号数编码处理时,则高N位数据可以称为高位数据,低N位数据可以称为低位数据;在本实施例中,拆分后的数据可以包括待处理数据中的高位数据以及低位数据。
步骤S105、对所述拆分后的数据进行正则有符号数编码处理,得到目标编码。
具体的,若乘法器接收到的待处理数据的位宽为2N,且乘法器当前可处理的数据位宽为N,则乘法器中的正则有符号数编码单元可以自动将2N位数据拆分成高N位数据以及低N位数据,进而对高N位数据和低N位数据进行异步正则有符号数编码处理,得到对应的高位目标编码以及低位目标编码。可选的,上述待处理数据进行拆分处理后可以包括待处理的高N位数据和待处理的低N位数据。其中,若待处理数据的位宽为2N,则高N位可以称为待处理的高位数据,低N位可以称为待处理的高位数据。
步骤S106、若所述目标编码中的数值不为预设阈值,则根据所述目标编码和所述拆分后的数据,得到目标编码部分积。
具体的,上述预设阈值可以等于数值0。可选的,乘法器通过判断单元可以判断目标编码中的每位数值是否为数值0,若补位数值0,则根据目标编码和所述拆分后的数据,得到目标编码部分积。可选的,上述目标编码的位宽可以等于乘法器当前可处理数据的位宽加2。可选的,上述目标编码部分积的位宽可以等于乘法器当前可处理数据位宽的2倍。可选的,上述目标编码部分积的数量可以等于目标编码的位宽,也可以小于目标编码的位宽。
需要说明的是,若乘法器通过判断单元判定目标编码中的每位数值为数值0时,则判断单元可以不需要将该数值输入至乘法器中的其它处理单元,进行后续处理,从而降低有效部分积的数量。
可选的,上述步骤S106中根据所述目标编码和所述拆分后的数据,得到目标编码部分积的过程,可以包括:根据所述低位目标编码和所述拆分后的数据,得到目标编码低位部分积;根据所述高位目标编码和所述拆分后的数据,得到目标编码高位部分积。
需要说明的是,乘法器中的改进正则有符号数编码电路可以根据低位目标编码和拆分后的被乘数,得到目标编码低位部分积,还可以根据高位目标编码和拆分后的被乘数,得到目标编码高位部分积。
步骤S107、对所述目标编码部分积进行累加处理,得到乘法运算结果。
具体的,乘法器中的改进压缩电路可以对所有目标编码部分积中的每列数值进行累加运算,得到乘法运算结果。可选的,乘法运算结果的位宽可以等于乘法器当前可处理数据位宽的2倍。
本实施例提供的一种数据处理方法,接收待处理数据和功能模式选择信号,当所述待处理数据为非0数据时,则将所述待处理数据存储至数据寄存器中,根据所述功能模式选择信号,判断所述数据寄存器中存储的所述待处理数据是否需要进行拆分处理,得到拆分后的数据,对所述拆分后的数据进行正则有符号数编码处理,得到目标编码,根据所述目标编码和所述拆分后的数据,得到目标编码部分积,对所述目标编码部分积进行累加处理,得到乘法运算结果;该方法可以根据乘法器接收到的功能模式选择信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;另外,该方法可以仅对有效数据进行处理,以得到有效部分积的数量减少,从而减少了无效运算量,降低了乘法器的运算功耗;另外,乘法器可以对接收到的数据进行正则有符号数编码处理,能够得到较少数量的有效部分积,从而降低乘法器实现乘法运算的复杂性,提高了乘法运算的运算效率,进一步有效降低乘法器的功耗。
图8为另一实施例提供的得到目标编码的具体流程示意图,如图8所示,上述对所述待处理数据进行正则有符号数编码处理,得到目标编码的步骤,可以包括:将所述待处理数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。可选的,上述对所述待处理数据进行正则有符号数编码处理,得到目标编码的步骤,具体可以包括:
步骤S1031、对所述待处理数据进行正则有符号数编码处理,得到中间编码。
具体的,进行正则有符号数编码处理的待处理数据可以为乘法运算中的乘数。
步骤S1032、根据所述中间编码以及所述功能模式选择信号,得到所述目标编码。
具体的,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+2)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,乘法器中的正则有符号数编码单元接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,编码处理支路对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码);若新数据中的最高位数值和次高位数值为“10”或“01”,则编码处理支路可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于乘法器当前可处理数据的位宽加1。另外,若当前乘法器接收到的数据位宽为2N,该乘法器当前可处理N位数据运算,则乘法器中的编码处理支路,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若乘法器当前可处理2N位数据运算,则乘法器中的编码处理支路,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
另外,若乘法器接收到的数据位宽为2N,且当前可处理N位数据运算,则乘法器中的正则有符号数编码单元,可以将2N位数据拆分成两组N位数据分别进行异步数据运算;此时,将得到的两组(N+1)位编码进行结合后可以作为目标编码;若乘法器当前可处理2N位数据运算,则乘法器中的正则有符号数编码单元,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
本实施例提供的一种数据处理方法,对待处理数据进行正则有符号数编码处理,得到中间编码,根据中间编码以及功能模式选择信号得到目标编码;该方法可以对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积;同时,该方法可以接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数量,从而降低乘法运算的复杂性,提高乘法运算的运算效率。
图9为另一实施例提供的得到目标编码部分积的具体流程图,如图9所示,上述步骤S106中根据所述目标编码和所述拆分后的数据,得到目标编码部分积的过程,具体可以包括:
步骤S1061、根据所述目标编码和所述拆分后的数据得到原始部分积。
具体的,若目标编码以及拆分后的N位被乘数可以得到(N+1)位原始部分积。当低位目标编码中的数值为-1时,则原始部分积可以为-X,当低位目标编码中的数值1时,则原始部分积可以为X,当低位目标编码中的数值0时,则原始部分积可以为0,也就是原始部分积中的每位数值均等于0。
步骤S1062、对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积。
具体的,乘法器中的改进正则有符号数编码电路可以根据原始部分积的符号位数值,对原始部分积进行符号位扩展处理,得到符号位扩展后的部分积。可选的,原始部分积的位宽可以等于乘法器当前所处理的数据位宽N,符号位扩展后的部分积的位宽可以等于2N。可选的,符号位扩展后的部分积中的低N位数值为原始部分积中的N位数值,符号位扩展后的部分积中的高N位数值均为原始部分积中的符号位数值。
步骤S1063、根据所述符号位扩展后的部分积得到所述目标编码部分积。其中,所述目标编码部分积包括目标编码低位部分积以及目标编码高位部分积。
可选的,上述步骤S1063中根据所述符号位扩展后的部分积得到所述目标编码部分积的过程,具体可以包括:删除所有符号位扩展后的部分积中数据为0的部分积,得到所述目标编码部分积。
具体的,乘法器中的改进正则有符号数编码电路可以删除得到的所有符号位扩展后的部分积中的全0部分积,将剩余非全0部分积作为目标编码部分积。
本实施例提供的一种数据处理方法,该方法可以删除无效部分积,从而降低有效部分积的数量,以降低乘法运算的复杂性,提高乘法运算的运算效率,降低了乘法器的运算功耗;同时,该方法可以对多种不同位宽的数据进行乘法运算,提高了乘法器的通用性,有效减少了乘法器占用AI芯片的面积。
图10为另一实施例提供的得到乘法运算结果的具体流程图,如图10所示,上述步骤S107中对所述目标编码部分积进行累加处理,得到乘法运算结果的过程,可以包括如下方式:
S1071、通过改进华莱士树组单元对所述目标编码低位部分积和所述目标编码高位部分积,进行累加处理得到累加运算结果。
具体的,若乘法器接收到的数据位宽为N,当前乘法器可处理的数据位宽也为N,此时,乘法器可以通过改进华莱士树组电路对所有目标编码低位部分积和所有目标编码高位部分积,按照部分积的分布方式对每列数值进行累加处理,得到累加运算结果。可选的,累加运算结果可以包括和位输出信号Sum与进位输出信号Carry,其中,和位输出信号Sum与进位输出信号Carry的位宽可以相同。若乘法器接收到的数据位宽为N,当前乘法器可处理的数据位宽也为N/2,此时,乘法器可以得到两组目标编码部分积,然后改进华莱士树组电路对两组目标编码部分积进行异步累加运算,从而先后得到两个累加运算结果。
S1072、通过累加电路对所述累加运算结果进行累加处理,得到乘法运算结果。
具体的,乘法器可以通过累加电路中的加法器对改进华莱士树组电路输出的进位输出信号Carry与和位输出信号Sum进行累加运算,得到乘法运算结果。可选的,改进华莱士树组电路中每个华莱士树单元可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=0,…,2N-1,i为每个华莱士树子单元的对应编号,编号从0开始,N乘法器接收到的数据位宽和乘法器当前可处理的数据位宽)。可选的,加法器接收到的Carry={[Carry0:Carry2N-2],0},也就是说,加法器接收到的进位输出信号Carry的位宽为N,进位输出信号Carry中前(2N-1)位数值对应改进华莱士树组电路中前(2N-1)个华莱士树子单元的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器接收到的和位输出信号Sum的位宽为N,和位输出信号Sum中的数值可以等于改进华莱士树组电路中每个华莱士树子单元的和位输出信号。
示例性的,若乘法器当前可处理8位数据运算,则加法器可以为16位超前进位加法器,如图6所示,改进华莱士树组电路可以输出16个华莱士树子单元的和位输出信号Sum和进位输出信号Carry,但是16位超前进位加法器接收到的和位输出信号可以为改进华莱士树组电路输出的完整和位信号Sum,接收到的进位输出信号可以为改进华莱士树组电路中,除去最后一个华莱士树子单元输出的进位输出信号的所有进位输出信号与数值0结合后的进位信号Carry。
本实施例提供的一种数据处理方法,该方法通过改进华莱士树组电路对所有目标编码低位部分积和所有目标编码高位部分积,进行累加处理得到累加运算结果,通过累加电路对累加运算结果进行累加处理,得到乘法运算结果;该方法可以根据乘法器接收到的功能模式选择信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用AI芯片的面积;另外,该方法还可以仅对有效数据进行处理,以得到有效部分积的数量减少,从而减少了无效运算量,降低了乘法器的运算功耗。
图11为另一实施例提供的得到累加运算结果的具体流程图,如图11所示,上述步骤S1071中通过改进华莱士树组单元对所述目标编码低位部分积和所述目标编码高位部分积,进行累加处理得到累加运算结果的过程,具体可以包括:
S1071a、通过低位华莱士树子单元对所有目标编码低位部分积和所有目标编码高位部分积中的列数值进行累加处理,得到中间运算结果。
具体的,按照所有目标编码低位部分积和所有目标编码高位部分积的分布方式可知,所有目标编码部分积对应数值的总列数为2N(N为乘法器当前可处理的数据位宽),从最低列数值开始每列数值对应的编号可以为0,…,2N-1,其中,编号0至N-1可以称低N列数值。可选的,中间运算结果可以为低位华莱士树子单元中的最后一个华莱士树子单元输出的进位输出信号Cout。
需要说明的是,低位华莱士树子单元中包含的N个华莱士树子单元可以按照编号顺序对低N列数值进行累加运算,得到中间运算结果。可选的,中间运算结果可以包括每个华莱士树子单元的进位输出信号Carry,Sum,以及低位华莱士树子单元中的最后一个华莱士树子单元的输出信号Cout。若乘法器接收到的数据位宽为N,当前乘法器可处理的数据位宽为N/2,则乘法器可以通过低位华莱士树子单元或者高位华莱士树子单元,对所有目标编码部分积进行累加运算,得到累加运算结果,该情况下,乘法器中改进华莱士树组单元包含的低位华莱士树子单元和选择器处于关闭状态,仅有高位华莱士树子单元处于开启状态;或者改进华莱士树组单元包含的高位华莱士树子单元和选择器处于关闭状态,仅有低位华莱士树子单元处于开启状态;还可以理解的是,将低位华莱士树子单元得到的中间运算结果作为累加运算结果。
S1071b、通过选择器对所述中间运算结果进行选通,得到进位选通信号。
具体的,改进压缩电路中的选择器可以根据接收到的功能模式选择信号,选通低位华莱士树子单元中的最后一个华莱士树子单元的输出信号Cout或0,得到进位选通信号。可选的,Cout可以为中间运算结果包含的信号。
S1071c、通过高位华莱士树子单元根据所述进位选通信号,以及所有目标编码低位部分积和所有目标编码高位部分积中的列数值进行累加处理,得到所述累加运算结果。
具体的,按照所有目标编码部分积的分布方式可知,所有目标编码部分积对应数值的总列数为2N(N为乘法器当前可处理的数据位宽),从最低列数值开始每列数值对应的编号可以为0,…,2N-1,其中,编号N至2N-1可以称高N列数值。
需要说明的是,高位华莱士树子单元中包含的N个华莱士树子单元可以按照编号顺序对高N列数值进行累加运算,输出累加运算结果。其中,高位华莱士树子单元中的第一个华莱士树子单元接收到的进位输入信号可以为选择器输出的进位选通信号。
本实施例提供的一种数据处理方法,该方法通过低位华莱士树子单元对所有目标编码部分积中的列数值进行累加处理,得到中间运算结果,通过选择器对中间运算结果进行选通,得到进位选通信号,高位华莱士树子单元根据进位选通信号以及所有目标编码部分积中的列数值进行累加处理,得到累加运算结果,进而对累加运算结果进行累加运算,得到乘法运算结果;该方法可以根据乘法器接收到的功能模式选择信号对多种不同位宽的数据进行乘法运算,有效减少了乘法器占用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.一种乘法器,其特征在于,所述乘法器包括:判断电路、数据寄存器、改进正则有符号数编码电路和改进压缩电路;所述判断电路的输出端与所述数据寄存器的输入端连接,所述数据寄存器的输出端与所述改进正则有符号数编码电路的输入端连接,所述改进正则有符号数编码电路的输出端与所述改进压缩电路的输入端连接;
其中,所述判断电路用于判断接收到的数据是否包含全0数据,并根据判断结果输出数据门控信号,所述数据寄存器用于根据接收到的所述数据门控信号选择接收所述数据,并存储所述数据,所述改进正则有符号数编码电路用于对所述数据寄存器存储的所述数据进行正则有符号数编码处理,得到符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到目标编码部分积,所述改进压缩电路用于对所述目标编码部分积进行累加处理得到乘法运算结果。
2.根据权利要求1所述的乘法器,其特征在于,所述改进正则有符号数编码电路中包括第一输入端,用于接收输入的功能模式选择信号;所述改进压缩电路中包括第一输入端,用于接收输入的所述功能模式选择信号,所述功能模式选择信号用于确定所述乘法器当前可处理的数据位宽。
3.根据权利要求1至2中任一项所述的乘法器,其特征在于,所述判断电路包括:数据输入端口、逻辑信号输出端口以及数据输出端口,所述数据输入端口用于接收进行乘法运算的数据,所述逻辑信号输出端口用于输出所述判断电路根据判断结果得到的所述数据门控信号,所述数据输出端口用于输出所述数据。
4.根据权利要求1至3中任一项所述的乘法器,其特征在于,所述数据寄存器包括:门控信号输入端口、数据输入端口以及运算数据输出端口,所述门控信号输入端口用于接收所述判断电路输出的所述数据门控信号,所述数据输入端口用于根据所述数据门控信号,选择接收所述判断电路输出的第一数据和第二数据,所述运算数据输出端口用于输出所述数据寄存器接收到的所述第一数据和所述第二数据。
5.根据权利要求1至4中任一项所述的乘法器,其特征在于,所述改进正则有符号数编码电路包括编码处理支路以及部分积获取支路;所述编码处理支路用于对接收到的数据进行正则有符号数编码处理,得到目标编码;所述部分积获取支路用于根据所述目标编码得到所述符号位扩展后的部分积,并根据所述符号位扩展后的部分积得到所述目标编码部分积。
6.根据权利要求5所述的乘法器,其特征在于,所述编码处理支路包括正则有符号数编码单元以及判断单元,所述部分积获取支路包括低位部分积获取单元以及高位部分积获取单元;所述正则有符号数编码单元的输出端与所述判断单元的输入端连接,所述判断单元的输出端与所述低位部分积获取单元以及所述高位部分积获取单元输入端连接;
其中,所述正则有符号数编码单元用于根据接收到的所述功能模式选择信号,确定所述乘法器可处理数据的位宽,并对所述数据寄存器输入的所述第一数据进行正则有符号数编码处理得到低位目标编码以及高位目标编码,所述判断单元用于判断所述低位目标编码和所述高位目标编码中的每位数值是否为0,并根据判断结果确定是否将所述低位目标编码和所述高位目标编码中的每位数值,分别输入至低位部分积获取单元以及高位部分积获取单元,所述低位部分积获取单元用于根据接收到的所述目标编码中的低位目标编码以及所述数据寄存器输入的所述第二数据,得到符号位扩展后的低位部分积,并根据所述符号位扩展后的低位部分积得到目标编码低位部分积,所述高位部分积获取单元用于根据接收到的所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的高位部分积,并根据所述符号位扩展后的高位部分积得到目标编码高位部分积。
7.根据权利要求6所述的乘法器,其特征在于,所述正则有符号数编码单元包括:第一数据输入端口、第一模式选择信号输入端口、低位目标编码输出端口以及高位目标编码输出端口;所述第一数据输入端口用于接收所述第一数据,所述第一模式选择信号输入端口用于接收所述功能模式选择信号,所述低位目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述低位目标编码,所述高位目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述高位目标编码。
8.根据权利要求6或7所述的乘法器,其特征在于,所述判断单元包括:高位目标编码输入端口、低位目标编码输入端口、高位目标编码输出端口以及低位目标编码输出端口;所述高位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述高位目标编码,所述低位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述低位目标编码,所述高位目标编码输出端口用于输出所述高位目标编码中的数值,所述低位目标编码输出端口用于输出所述低位目标编码中的数值。
9.根据权利要求6至8中任一项所述的乘法器,其特征在于,所述低位部分积获取单元包括:低位目标编码输入端口、第二模式选择信号输入端口、第二数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述低位目标编码,所述第二模式选择信号输入端口用于接收所述功能模式选择信号,所述第二数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出根据所述第二数据以及所述低位目标编码得到的所述目标编码低位部分积。
10.根据权利要求6至9中任一项所述的乘法器,其特征在于,所述高位部分积获取单元包括:高位目标编码输入端口、第三模式选择信号输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述正则有符号数编码单元输出的所述高位目标编码,所述第三模式选择信号输入端口用于接收所述正则有符号数编码单元输出的所述功能模式选择信号,所述第二数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出根据所述第二数据以及所述高位目标编码得到的所述目标编码高位部分积。
11.根据权利要求1至10中任一项所述的乘法器,其特征在于,所述改进压缩电路包括:改进华莱士树组单元以及累加电路;所述改进华莱士树组单元的输出端与所述累加电路的输入端连接;所述改进华莱士树组单元用于对不同位宽数据运算得到的所有目标编码部分积中的每列数值进行累加处理得到累加运算结果,所述累加电路用于对实时累加运算结果进行累加处理得到所述乘法运算结果。
12.根据权利要求11所述的乘法器,其特征在于,所述改进华莱士树组单元包括:低位华莱士树子单元、选择器以及高位华莱士树子单元,所述低位华莱士树子单元的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子单元的输入端连接;其中,所述低位华莱士树子单元用于根据接收到的所述功能模式选择信号,控制是否对所述目标编码部分积中的每列数值进行累加运算,所述选择器用于根据接收到的所述功能模式选择信号,控制是否选通所述高位华莱士树子单元接收的进位输入信号,所述高位华莱士树子单元用于根据接收到的所述功能模式选择信号,控制是否对所述目标编码部分积中的每列数值进行累加运算。
13.根据权利要求11或12所述的乘法器,其特征在于,所述累加电路包括:加法器,所述加法器用于对所述累加运算结果进行加法运算得到所述乘法运算结果;
以及优选地,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述运算结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的所述乘法运算结果。
14.一种数据处理方法,其特征在于,所述方法包括:
接收待处理数据和功能模式选择信号,其中,所述功能模式选择信号用于指示乘法器当前可处理的数据位宽;
当所述待处理数据为非0数据时,则将所述待处理数据存储至数据寄存器中;
根据所述功能模式选择信号,判断所述数据寄存器中存储的所述待处理数据是否需要进行拆分处理;
若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据;
对所述拆分后的数据进行正则有符号数编码处理,得到目标编码;
若所述目标编码中的数值不为预设阈值,则根据所述目标编码和所述拆分后的数据,得到目标编码部分积;
对所述目标编码部分积进行累加处理,得到乘法运算结果。
15.根据权利要求14所述的方法,其特征在于,所述根据所述功能模式选择信号,判断所述数据寄存器中存储的所述待处理数据是否需要进行拆分处理,包括:根据所述功能模式选择信号,判断所述待处理数据的位宽与乘法器可处理的数据位宽是否相等。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:根据所述功能模式选择信号,判定所述待处理数据的位宽与乘法器可处理的数据位宽相等时,则对所述待处理数据进行拆分处理,得到拆分后的数据。
17.根据权利要求14至16中任一项所述的方法,其特征在于,所述方法还包括:若所述待处理数据不需要进行拆分处理,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码。
18.根据权利要求17所述的方法,其特征在于,所述对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:将所述待处理数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
19.根据权利要求17或18所述的方法,其特征在于,所述对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:
对所述待处理数据进行正则有符号数编码处理,得到中间编码;
根据所述中间编码以及所述功能模式选择信号,得到所述目标编码。
20.根据权利要求14至19中任一项所述的方法,其特征在于,所述根据所述目标编码和所述拆分后的数据,得到目标编码部分积,包括:
根据所述目标编码和所述拆分后的数据得到原始部分积;
对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积;
根据所述符号位扩展后的部分积得到所述目标编码部分积;其中,所述目标编码部分积包括目标编码低位部分积以及目标编码高位部分积。
21.根据权利要求20所述的方法,其特征在于,所述根据所述符号位扩展后的部分积得到所述目标编码部分积,包括:删除所有符号位扩展后的部分积中数据为0的部分积,得到所述目标编码部分积。
22.根据权利要求14至21中任一项所述的方法,其特征在于,所述对所述目标编码部分积进行累加处理,得到乘法运算结果,包括:
通过改进华莱士树组单元对所述目标编码低位部分积和所述目标编码高位部分积,进行累加处理得到累加运算结果;
通过累加电路对所述累加运算结果进行累加处理,得到乘法运算结果。
23.根据权利要求22所述的方法,其特征在于,所述通过改进华莱士树组单元对所述目标编码低位部分积和所述目标编码高位部分积,进行累加处理得到累加运算结果,包括:
通过低位华莱士树子单元对所有目标编码低位部分积和所有目标编码高位部分积中的列数值进行累加处理,得到中间运算结果;
通过选择器对所述中间运算结果进行选通,得到进位选通信号;
通过高位华莱士树子单元根据所述进位选通信号,以及所有目标编码低位部分积和所有目标编码高位部分积中的列数值进行累加处理,得到所述累加运算结果。
24.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求1-13任一项所述的乘法器,用于从所述机器学习运算装置中除所述乘法器以外的其它处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给所述机器学习运算装置中除所述乘法器以外的其它处理装置;
当所述机器学习运算装置包含多个所述乘法器时,多个所述乘法器间可以通过预设结构进行连接并传输数据;
其中,多个所述乘法器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。
25.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求24所述的机器学习运算装置,通用互联接口和所述组合处理装置中除所述机器学习运算装置以外的其它处理装置;
所述机器学习运算装置与所述组合处理装置中除所述机器学习运算装置以外的其它处理装置进行交互,共同完成用户指定的计算操作;
以及优选地,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置连接,用于保存所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置的数据。
26.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求24所述的机器学习运算装置或如权利要求25所述的组合处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911349776.3A CN113031913A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911349776.3A CN113031913A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113031913A true CN113031913A (zh) | 2021-06-25 |
Family
ID=76452155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911349776.3A Pending CN113031913A (zh) | 2019-12-24 | 2019-12-24 | 乘法器、数据处理方法、装置及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113031913A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000187584A (ja) * | 1998-10-14 | 2000-07-04 | Fuji Electric Co Ltd | 演算回路 |
US20030163503A1 (en) * | 2002-02-22 | 2003-08-28 | Nguyen Trinh Huy | Method and apparatus for implementing signed multiplication of operands having differing bit widths without sign extension of the multiplicand |
CN110058840A (zh) * | 2019-03-27 | 2019-07-26 | 西安理工大学 | 一种基于4-Booth编码的低功耗乘法器 |
CN110362293A (zh) * | 2019-08-30 | 2019-10-22 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN110531954A (zh) * | 2019-08-30 | 2019-12-03 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
-
2019
- 2019-12-24 CN CN201911349776.3A patent/CN113031913A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000187584A (ja) * | 1998-10-14 | 2000-07-04 | Fuji Electric Co Ltd | 演算回路 |
US20030163503A1 (en) * | 2002-02-22 | 2003-08-28 | Nguyen Trinh Huy | Method and apparatus for implementing signed multiplication of operands having differing bit widths without sign extension of the multiplicand |
CN110058840A (zh) * | 2019-03-27 | 2019-07-26 | 西安理工大学 | 一种基于4-Booth编码的低功耗乘法器 |
CN110362293A (zh) * | 2019-08-30 | 2019-10-22 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN110531954A (zh) * | 2019-08-30 | 2019-12-03 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413254B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110515587B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110673823B (zh) | 乘法器、数据处理方法及芯片 | |
CN111258633B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113031912A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN111258544B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN209879493U (zh) | 乘法器 | |
CN209895329U (zh) | 乘法器 | |
CN110515586B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN210109863U (zh) | 乘法器、装置、神经网络芯片及电子设备 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN111258542B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN210006029U (zh) | 数据处理器 | |
CN111258545B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113031915A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN110515588B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113031913A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN209962284U (zh) | 乘法器、装置、芯片及电子设备 | |
CN210006082U (zh) | 乘法器、装置、神经网络芯片及电子设备 | |
CN209879492U (zh) | 乘法器、机器学习运算装置及组合处理装置 | |
CN113031909B (zh) | 数据处理器、方法、装置及芯片 | |
CN210006084U (zh) | 乘法器 | |
CN210006083U (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 |