CN110647307B - 数据处理器、方法、芯片及电子设备 - Google Patents

数据处理器、方法、芯片及电子设备 Download PDF

Info

Publication number
CN110647307B
CN110647307B CN201910902842.9A CN201910902842A CN110647307B CN 110647307 B CN110647307 B CN 110647307B CN 201910902842 A CN201910902842 A CN 201910902842A CN 110647307 B CN110647307 B CN 110647307B
Authority
CN
China
Prior art keywords
partial product
data
order
low
target code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910902842.9A
Other languages
English (en)
Other versions
CN110647307A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201910902842.9A priority Critical patent/CN110647307B/zh
Publication of CN110647307A publication Critical patent/CN110647307A/zh
Application granted granted Critical
Publication of CN110647307B publication Critical patent/CN110647307B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请提供一种数据处理器、方法、芯片及电子设备,数据处理器包括正则有符号数编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路,该正则有符号数编码电路包括正则有符号数编码处理单元,该数据处理器能够对接收到数据进行正则有符号数编码处理,使得获取的有效部分积的数目较少,降低了数据处理器实现乘法运算或者乘累加运算的复杂性。

Description

数据处理器、方法、芯片及电子设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理器、方法、芯片及电子设备。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能数据处理器的要求也越来越高,其中,数据处理器为乘法器、加法器或乘累加器。神经网络算法作为智能芯片广泛应用的算法之一,通过数据处理器进行乘法运算或者乘累加运算,在神经网络算法中是一种常见的操作。
目前,数据处理器是对乘数中的每三位数值作为一个编码,并根据被乘数得到部分积,用华莱士树对所有部分积进行压缩处理,得到乘法运算结果或者乘累加运算结果。但是,传统技术中,编码中非零位数值的数目较多,产生的对应有效部分积的数目较多,导致数据处理器实现乘法运算或乘累加运算的复杂性较高。
发明内容
基于此,有必要针对上述技术问题,提供了一种能够减少获取的有效部分积的数目,降低运算复杂性的数据处理器、方法、芯片及电子设备。
一种数据处理器,所述数据处理器包括:正则有符号数编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路,所述正则有符号数编码电路包括正则有符号数编码处理单元,所述正则有符号数编码处理单元的输出端与所述第一部分积获取电路的第一输入端,所述正则有符号数编码处理单元的输出端与所述第二部分积获取电路的第一输入端连接,所述第一部分积获取电路的输出端与所述第一压缩电路的第一输入端连接,所述第二部分积获取电路的输出端与所述第二压缩电路的第一输入端连接;
所述正则有符号数编码处理单元用于对接收到的第一数据进行正则有符号数编码处理得到目标编码,所述第一部分积获取电路用于接收第二数据,并根据所述目标编码以及所述第二数据得到目标编码的第一部分积,所述第二部分积获取电路用于接收所述第二数据,并根据所述目标编码以及所述第二数据得到目标编码的第二部分积,所述第一压缩电路用于对所述目标编码的第一部分积进行累加处理,所述第二压缩电路用于对所述目标编码的第二部分积进行累加处理。
在其中一个实施例中,所述正则有符号数编码处理单元中包括第一输入端,用于接收功能选择模式信号,所述第一部分积获取电路和所述第二部分积获取电路均包括第二输入端,用于接收所述功能选择模式信号;所述第一压缩电路和所述第二压缩电路均包括第二输入端,用于接收所述功能选择模式信号;所述功能选择模式信号用于确定所述数据处理器当前处理不同模式的数据运算。
在其中一个实施例中,所述正则有符号数编码处理单元包括:第一数据输入端口、功能选择模式信号输入端口以及目标编码输出端口,所述第一数据输入端口用于接收进行正则有符号数编码处理的所述第一数据,所述功能选择模式信号输入端口用于接收所述功能选择模式信号,所述目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后,得到的所述目标编码。
在其中一个实施例中,所述第一部分积获取电路包括:低位部分积获取单元、低位选择器组单元、高位部分积获取单元以及高位选择器组单元;所述低位部分积获取单元的第一输入端以及所述高位部分积获取单元的第一输入端,均与所述正则有符号数编码处理单元的输出端连接,所述低位部分积获取单元的第二输入端与所述低位选择器组单元的输出端连接,所述高位部分积获取单元的第二输入端与所述高位选择器组单元的输出端连接;
其中,所述低位部分积获取单元用于根据所述目标编码中的低位目标编码以及所述第二数据,得到符号位扩展后的第一低位部分积,并根据所述符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,所述低位选择器组单元用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元用于根据所述目标编码中的高位目标编码以及所述第二数据,所述高位选择器组单元用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一高位部分积中的数值。
在其中一个实施例中,所述低位部分积获取单元包括:低位目标编码输入端口、选通数值输入端口、第二数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述正则有符号数编码处理单元输入的所述第一低位目标编码,所述选通数值输入端口用于接收所述低位选择器组单元选通后,得到的所述符号位扩展后的第一低位部分积中的数值,所述第二数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出所述目标编码的第一低位部分积。
在其中一个实施例中,所述高位部分积获取单元包括:高位目标编码输入端口、选通数值输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述正则有符号数编码处理单元输入的第一高位目标编码,所述选通数值输入端口用于接收所述高位选择器组单元选通后,得到的所述符号位扩展后的第一高位部分积中的数值,所述第二数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所述目标编码的第一高位部分积。
在其中一个实施例中,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对所述符号位扩展后的第一低位部分积中的数值进行选通。
在其中一个实施例中,所述高位选择器组单元包括:高位选择器,所述低位选择器用于对所述符号位扩展后的第一高位部分积中的数值进行选通。
在其中一个实施例中,所述第二部分积获取电路包括:低位部分积获取单元、低位选择器组单元、高位部分积获取单元以及高位选择器组单元;所述低位部分积获取单元的第一输入端以及所述高位部分积获取单元的第一输入端,均与所述正则有符号数编码处理单元的输出端连接,所述低位部分积获取单元的第二输入端与所述低位选择器组单元的输出端连接,所述高位部分积获取单元的第二输入端与所述高位选择器组单元的输出端连接;
其中,所述低位部分积获取单元用于根据所述目标编码中的低位目标编码以及所述第二数据,得到符号位扩展后的第一低位部分积,并根据所述符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,所述低位选择器组单元用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元用于根据所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的第一高位部分积,并根据所述符号位扩展后的第一高位部分积得到目标编码的第一高位部分积,所述高位选择器组单元用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一高位部分积中的数值。
在其中一个实施例中,所述第一压缩电路包括:修正华莱士树组单元和累加单元,所述修正华莱士树组单元的输出端与所述累加单元的输入端连接;所述修正华莱士树组单元用于对不同模式的数据运算处理时,获取的所有目标编码的第一部分积中的每一列数值进行累加处理,得到累加运算结果,所述累加单元用于对所述累加运算结果进行加法运算。
在其中一个实施例中,所述修正华莱士树组单元包括:低位华莱士树子单元、选择器以及高位华莱士树子单元,所述低位华莱士树子单元的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子单元的输入端连接;其中,所述低位华莱士树子单元用于对所述目标编码的第一部分积中的每一列数值进行累加运算,所述选择器用于选通所述高位华莱士树子单元接收的进位输入信号,所述高位华莱士树子单元用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果。
在其中一个实施例中,所述累加单元包括:加法器,所述加法器用于对所述累加运算结果进行加法运算。
在其中一个实施例中,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述运算结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的目标运算结果。
在其中一个实施例中,第二压缩电路包括:修正华莱士树组单元和累加单元,所述修正华莱士树组单元的输出端与所述累加单元的输入端连接;所述修正华莱士树组单元用于对不同模式的数据运算处理时,获取的所有目标编码的第二部分积中的每一列数值进行累加处理,得到累加运算结果,所述累加单元用于对所述累加运算结果进行加法运算。
一种数据处理方法,所述方法包括:
接收待处理数据以及功能选择模式信号,其中,所述功能选择模式信号用于指示数据处理器当前可处理的对应模式的数据运算;
根据所述功能选择模式信号,对所述待处理数据进行正则有符号数编码处理,得到目标编码;
根据所述目标编码以及所述待处理数据,得到目标编码的第一部分积以及目标编码的第二部分积;
根据所述功能选择模式信号对所述目标编码的第一部分积进行压缩处理,得到第一目标运算结果;
根据所述功能选择模式信号对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果。
在其中一个实施例中,所述根据所述功能选择模式信号,对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:根据所述功能选择模式信号,将所述待处理数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
在其中一个实施例中,所述根据所述功能选择模式信号,对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:
对所述待处理数据进行正则有符号数编码处理,得到中间编码;
根据所述中间编码以及所述功能选择模式信号,得到所述目标编码。
在其中一个实施例中,所述根据所述目标编码以及所述待处理数据,得到目标编码的第一部分积以及目标编码的第二部分积,包括:
根据所述第一目标编码以及所述待处理数据进行转换处理,得到第一原始部分积;
根据所述第一原始部分积以及所述待处理数据进行符号位扩展处理,得到所述目标编码的第一部分积;
以及根据所述第二目标编码以及所述待处理数据进行所述转换处理,得到第二原始部分积;
根据所述第二原始部分积以及所述待处理数据进行符号位扩展处理,得到所述目标编码的第二部分积。
在其中一个实施例中,所述根据所述功能选择模式信号对所述目标编码的第一部分积进行压缩处理,得到第一目标运算结果,包括:
低位华莱士树子单元对所有目标编码的第一部分积中的列数值进行累加处理,得到第一累加运算结果;
选择器根据所述功能选择模式信号对所述第一累加运算结果进行选通,得到第一进位选通信号;
高位华莱士树子单元根据所述第一进位选通信号以及所述目标编码的第一部分积中的列数值进行累加处理,得到所述第一目标运算结果。
在其中一个实施例中,所述根据所述功能选择模式信号对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果,包括:低位华莱士树子单元对所有目标编码的第二部分积中的列数值进行累加处理,得到第二累加运算结果;选择器根据所述功能选择模式信号对所述第二累加运算结果进行选通,得到第二进位选通信号;高位华莱士树子单元根据所述第二进位选通信号以及所述目标编码的第二部分积中的列数值进行累加处理,得到所述第二目标运算结果。
本实施例提供的一种数据处理方法,通过正则有符号数编码电路对接收到的第一数据进行编码处理得到目标编码,第一部分积获取电路根据接收到的第二数据以及目标编码,得到对应的目标编码的第一部分积,第二部分积获取电路根据接收到的第二数据以及目标编码,得到对应的目标编码的第二部分积,并通过第一压缩电路以及第二压缩电路分别进行累加处理,得到目标运算结果;该方法不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法运算或者乘累加运算,从而降低了数据处理器的功耗。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个上述所述的数据处理器;该机器学习运算装置用于从其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其它处理装置;
当所述机器学习运算装置包含多个所述数据处理器时,多个所述数据处理器间通过预设特定结构进行连接并传输数据;
其中,多个所述数据处理器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理器共享同一控制系统或拥有各自的控制系统;多个所述数据处理器共享内存或者拥有各自的内存;多个所述数据处理器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括上述所述的机器学习处理装置、通用互联接口,和其它处理装置。该机器学习运算装置与上述其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的数据处理器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的数据处理器。
本申请实施例提供的一种电子设备,包括如上述所述的芯片。
附图说明
图1为一实施例提供的一种数据处理器的电路结构示意图;
图2为另一实施例提供的另一种数据处理器的电路结构示意图;
图3为一实施例提供的数据处理器的具体电路结构图;
图4a为一实施例提供的16位数据乘法运算得到的部分积的分布规律示意图;
图4b为一实施例提供的16位*8位数据乘累加运算得到的部分积的分布规律示意图;
图5为另一实施例提供的数据处理器的具体电路结构图;
图6为一实施例提供的一种数据处理方法流程示意图;
图7为另一实施例提供的8位数据运算时压缩电路的具体电路结构图;
图8为一实施例提供的另一种数据处理方法流程示意图;
图9为一实施例提供的一种组合处理装置的结构图;
图10为一实施例提供的另一种组合处理装置的结构图;
图11为一实施例提供的一种板卡的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据处理器可应用于AI芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array,FPGA)芯片、或者是其它的硬件电路设备中进行乘法运算处理或者乘累加运算处理,该数据处理器的结构示意图如图1和2所示。
如图1所示,图1为一个实施例提供的一种数据处理器的结构图。如图1所示,该数据处理器包括:第一乘法运算电路11、第二乘法运算电路12以及部分积交换电路13;所述第一乘法运算电路11包括第一修正编码子电路111以及第一修正压缩子电路112,所述第二乘法运算电路12包括第二修正编码子电路121以及第二修正压缩子电路122,其中,所述第一修正编码子电路111包括第一编码支路111a以及第一选择支路111b,所述第二修正编码子电路121包括第二编码支路121a以及第二选择支路121b,所述第一修正编码子电路111的第一输出端与所述部分积交换电路13的第一输入端连接,所述第一修正编码子电路111的第二输出端与所述第一修正压缩子电路112的输入端连接,所述部分积交换电路13的第一输出端与所述第一修正编码子电路111的输入端连接,所述部分积交换电路13的第二输出端与所述第二修正编码子电路121的输入端连接,所述第二修正编码子电路121的第一输出端与所述部分积交换电路13的第二输入端连接,所述第二修正编码子电路121的第二输出端与所述第二修正压缩子电路122的输入端连接。
其中,所述第一编码支路111a用于对接收到的第一数据进行正则有符号数编码处理,得到符号位扩展后的第一部分积,所述第一选择支路111b用于从所述符号位扩展后的第一部分积中选择目标编码的第一部分积,所述第一修正压缩子电路112用于对所述目标编码的第一部分积进行压缩处理,得到第一目标运算结果,所述第二编码支路121a用于对接收到的第二数据进行正则有符号数编码处理,得到符号位扩展后的第二部分积,所述第二选择支路121b用于从所述符号位扩展后的第二部分积中选择目标编码的第二部分积,所述第二修正压缩子电路122用于对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果,所述部分积交换电路13用于对所述符号位扩展后的第一部分积,以及所述符号位扩展后的第二部分积进行交换。
具体的,上述数据处理器即可以实现数据乘法运算,也可以实现数据乘累加运算。可选的,第一修正编码子电路111可以接收第一数据,第二修正编码子电路121可以接收第二数据,第一数据和第二数据均可以包括两个子数据,这两个子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据;该子数据可以作为乘法运算或者乘累加运算中的被乘数,也可以作为乘法运算或者乘累加运算中的乘数。可选的,上述第一数据中的两个子数据可以拼接后作为一个整体,输入至第一修正编码子电路111,还可以分开同时输入至第一修正编码子电路111;上述第二数据中的两个子数据可以拼接后作为一个整体,输入至第二修正编码子电路121,还可以分开同时输入至第二修正编码子电路121。其中,上述子数据可以为定点数,且位宽可以为2N,两个子数据拼接后得到的数据位宽可以为4N。可选的,上述第一修正编码子电路111可以包括多个具有不同功能的数据处理单元,这些数据处理单元可以为具有正则有符号数编码处理功能的单元,还可以为具有不同转换处理功能的单元,对此本实施例不做任何限定。数据处理器在同一次数据运算处理时,数据处理器中的第一修正编码子电路111接收到的一个子数据可以作为被乘数,另一个子数据可以作为乘数;数据处理器中的第二修正编码子电路121接收到的一个子数据可以作为被乘数,另一个子数据可以作为乘数。还可以理解的是,上述符号位扩展后的第一部分积与符号位扩展后的第二部分积的位宽,均可以等于数据处理器当前处理乘法运算或乘累加运算时被乘数位宽的2倍;符号位扩展后的第一部分积的数目可以等于目标编码的第一部分积的数目;符号位扩展后的第二部分积的数目可以等于目标编码的第二部分积的数目。其中,符号位扩展后的第一部分积可以包括符号位扩展后的第一低位部分积,以及符号位扩展后的第一高位部分积;符号位扩展后的第二部分积可以包括符号位扩展后的第二低位部分积,以及符号位扩展后的第二高位部分积;目标编码的第一部分积可以包括目标编码的第一低位部分积,以及目标编码的第一高位部分积;目标编码的第二部分积可以包括目标编码的第二低位部分积,以及目标编码的第二高位部分积。
在本实施例中,上述第一修正编码子电路111可以接收运算过程中的乘数,并对该乘数进行正则有符号数编码处理,得到目标编码。需要说明的是,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,第一修正编码子电路111接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”;而第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对该初始编码进行一次补位处理后得到中间编码,表征正则有符号数编码处理完成;其中,初始编码的位宽可以等于乘数的位宽。可选的,第一修正编码子电路111对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则第一修正编码子电路111可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于数据处理器当前所处理数据的位宽加1。
另外,若数据处理器接收到的数据位宽为2N,且当前可处理N位数据运算,则数据处理器中的第一修正编码子电路111,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若数据处理器当前可处理2N位数据运算,则数据处理器中的第一修正编码子电路111,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。在本实施例中,数据处理器可以对初始编码执行的是补位处理,且对中间编码执行的是补数处理。
可选的,所述第一乘法运算电路11和所述第二乘法运算电路12中均包括第一输入端,用于接收功能选择模式信号;所述部分积交换电路13中包括第三输入端,用于接收所述功能选择模式信号。可选的,所述功能选择模式信号用于确定所述数据处理器当前可处理不同模式的数据运算。
在本实施例中,第一乘法运算电路11包含的每个数据处理单元均可以接收功能选择模式信号;第二乘法运算电路12包含的每个数据处理单元均可以接收功能选择模式信号。需要说明的是,数据处理器在同一次数据运算处理时,数据处理器中的第一乘法运算电路11、第二乘法运算电路12以及部分积交换电路13,接收到的功能选择模式信号均可以相等。可选的,上述功能选择模式信号可以包括四种不同的信号,四种功能选择模式信号分别对应数据处理器可处理四种不同模式的数据运算,四种不同模式的数据运算可以包括N位*N位数据的乘法运算、N位*N位数据的乘累加运算、2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。例如,若第一数据包括两个2N位子数据,第二数据包括两个2N位子数据,则数据处理器根据接收到的不同功能选择模式信号,可以确定当前可处理的具体模式的数据运算;四种功能选择模式信号可以用二进制数值分别表示为00,01,10,11,也可以为其它的表示方式,其中,mode=00可以表征数据处理器当前可处理N位*N位数据的乘法运算,mode=01可以表征数据处理器当前可处理N位*N位数据的乘累加运算,mode=10可以表征数据处理器当前可处理2N位*2N位数据的乘法运算,mode=11可以表征数据处理器当前可处理2N位*N位数据的乘累加运算;还可以理解的是,四种功能选择模式信号与四种不同模式的数据运算之间可以有任意的一一对应关系,本实施例对此不做任何限定。
另外,当数据处理器处理2N位*N位数据的乘累加运算时,数据处理器中的部分积交换电路13可以根据实际需求,将数据处理器中的第一修正编码子电路111,得到的符号位扩展后的第一低位部分积或者符号位扩展后的第一高位部分积,与数据处理器中的第二修正编码子电路121,得到的符号位扩展后的第二低位部分积或者符号位扩展后的第二高位部分积进行交换;还可以理解为,数据处理器在处理其它三种模式的数据运算时,数据处理器中的部分积交换电路13为悬空状态,符号位扩展后的低位部分积与符号位扩展后的高位部分积不做对应交换处理。同时,第一数据中包含的两个子数据的位宽均为2N,第二数据中包含的两个子数据的位宽也均为2N,若数据处理器当前可处理一个N位*N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中有一个数据为0,另一个数据包括的两个子数据中的高位数值均为0,或者低位数值均为0,此时第一数据和第二数据可以按照原始数据进行运算处理;若数据处理器当前可处理一个2N位*2N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中有一个数据为0,另一个数据的两个子数据中高位数值和低位数值均为非0数值;若数据处理器当前可处理两个2N位*2N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中不存在数据0。
本实施例提供的一种数据处理器,通过第一修正编码子电路和第二修正编码子电路分别对接收到的数据实现正则有符号数编码处理,分别得到符号位扩展后的第一部分积以及符号位扩展后的第二部分积,并根据接收到的功能选择模式信号确定是否需要通过部分积交换电路,对符号位扩展后的第一部分积以及符号位扩展后的第二部分积进行交换处理,若需要进行交换处理,则交换处理后,第一修正编码子电路和第二修正编码子电路可以分别把当前各子电路,具有的符号位扩展后的部分积作为目标编码的部分积,进而得到目标编码的第一部分积以及目标编码的第二部分积,最后通过第一修正压缩子电路和第二修正压缩子电路分别,对目标编码的第一部分积以及目标编码的第二部分积进行压缩处理,得到目标运算结果;该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算,才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗;此外,数据处理器还可以对接收到的数据进行正则有符号数编码处理,得到的有效部分积的数目较少,从而降低了数据处理器实现乘法运算或乘累加运算的复杂性。
如图2所示,图2为另一实施例提供的一种数据处理器的结构示意图,该数据处理器包括正则有符号数编码电路21、第一部分积获取电路22、第二部分积获取电路23、第一压缩电路24以及第二压缩电路25;所述正则有符号数编码电路21包括正则有符号数编码处理单元211,所述正则有符号数编码处理单元211的输出端与所述第一部分积获取电路22的第一输入端,所述正则有符号数编码处理单元211的输出端与所述第二部分积获取电路23的第一输入端连接,所述第一部分积获取电路22的输出端与所述第一压缩电路24的第一输入端连接,所述第二部分积获取电路23的输出端与所述第二压缩电路25的第一输入端连接。
其中,所述正则有符号数编码处理单元211用于对接收到的第一数据进行正则有符号数编码处理得到目标编码,所述第一部分积获取电路22用于接收第二数据,并根据所述目标编码以及所述第二数据得到目标编码的第一部分积,所述第二部分积获取电路23用于接收所述第二数据,并根据所述目标编码以及所述第二数据得到目标编码的第二部分积,所述第一压缩电路24用于对所述目标编码的第一部分积进行累加处理,所述第二压缩电路25用于对所述目标编码的第二部分积进行累加处理。
具体的,上述第一数据和第二数据均可以包括两个子数据,该第一数据中的两个子数据可以作为乘法运算或者乘累加运算中的乘数,第二数据中的两个子数据可以作为乘法运算或者乘累加运算中的被乘数。可选的,子数据的位宽可以为2N,另外,上述第一数据中的两个子数据可以拼接后作为一个整体,输入至正则有符号数编码处理单元211,还可以分开同时输入至正则有符号数编码处理单元211;上述第二数据中的两个子数据可以拼接后作为一个整体,输入至第一部分积获取电路22和第二部分积获取电路23,还可以分开同时输入至第一部分积获取电路22,以及分开同时输入至第二部分积获取电路23中。可选的,第一数据中的两个子数据进行正则有符号数编码处理后,分别可以得到第一目标编码以及第二目标编码,并将第一目标编码以及第二目标编码统称为目标编码。可选的,第一目标编码的位宽可以等于第二目标编码的位宽,还可以等于数据处理器当前所处理乘数的位宽加1;目标编码的第一部分积的数目可以等于第一目标编码的位宽;目标编码的第二部分积的数目可以等于第二目标编码的位宽。可选的,上述第一目标编码可以包括第一低位目标编码和第一高位目标编码,第二目标编码可以包括第二低位目标编码和第二高位目标编码。
例如,第一数据包括数据A和数据B,第二数据包括数据C和数据D,若数据处理器需要对数据A*数据C进行乘法运算,对数据B*数据D进行乘法运算,则数据处理器中的正则有符号数编码处理单元211可以对数据A进行正则有符号数编码处理得到第一目标编码,并对数据B进行正则有符号数编码处理得到第二目标编码,并且正则有符号数编码处理单元211可以将第一目标编码(和/或第二目标编码)以及数据C(或者第二数据)输入至第一部分积获取电路22,将第二目标编码(和/或第一目标编码)以及数据D(或者第二数据)输入至第二部分积获取电路23;或者将第一目标编码(和/或第二目标编码)以及数据C(或者第二数据)输入至第二部分积获取电路23,将第二目标编码(和/或第一目标编码)以及数据D(或者第二数据)输入至第一部分积获取电路22;同时,若第一部分积获取电路22和第二部分积获取电路23接收到的是两个子数据拼接得到的第二数据,则第一部分积获取电路22和第二部分积获取电路23均可以将第二数据(即被乘数)进行拆分,分别得到需要进行乘法运算的子数据,并根据实际需求,通过获取的子数据与第一目标编码或第二目标编码得到部分积;上述实际需求也可以理解为数据处理器当前所需要处理的被乘数与对应目标编码的对应关系。另外,若第一目标编码的位宽可以等于2N,则第一高位目标编码可以等于第一目标编码中的高N位数据,第一低位目标编码可以为第一目标编码中的低N位数据。
需要说明的是,数据处理器中,第一部分积获取电路22可以接收正则有符号数编码处理单元211输入的第一目标编码以及被乘数,得到目标编码的第一部分积;第二部分积获取电路23可以接收正则有符号数编码处理单元211输入的第二目标编码以及被乘数,得到目标编码的第二部分积。可选的,上述目标编码的第一部分积可以包括目标编码的第一低位部分积以及目标编码的第一高位部分积;上述目标编码的第二部分积可以包括目标编码的第二低位部分积以及目标编码的第二高位部分积。可选的,目标编码的第一低位部分积可以为第一低位目标编码对应的部分积,目标编码的第一高位部分积可以为第一高位目标编码对应的部分积;目标编码的第二低位部分积可以为第二低位目标编码对应的部分积,目标编码的第二高位部分积可以为第二高位目标编码对应的部分积。
进一步地,数据处理器中的第一压缩电路24可以对第一部分积获取电路22,得到的目标编码的第一部分积(即目标编码的第一低位部分积和目标编码的第一高位部分积)进行累加处理;数据处理器中的第二压缩电路25可以对第二部分积获取电路23,得到的目标编码的第二部分积(即目标编码的第二低位部分积和目标编码的第二高位部分积)进行累加处理,从而得到目标运算结果。此外,在本实施例中,数据处理器接收到的第一数据以及第二数据中,包含的子数据的位宽均为2N。
可选的,所述正则有符号数编码处理单元211中包括第一输入端,用于接收功能选择模式信号;所述第一部分积获取电路22和所述第二部分积获取电路23均包括第二输入端,用于接收所述功能选择模式信号;所述第一压缩电路24和所述第二压缩电路25均包括第二输入端,用于接收所述功能选择模式信号。可选的,所述功能选择模式信号用于确定所述数据处理器当前处理不同模式的数据运算。
可以理解的是,上述功能选择模式信号(mode)可以有四种不同信号,这四种功能选择模式信号(mode)对应于所述数据处理器可以处理四种不同模式的数据运算。可选的,同一次数据运算处理时,数据处理器中的正则有符号数编码处理单元211、第一部分积获取电路22、第二部分积获取电路23、第一压缩电路24以及第二压缩电路25,接收到的功能选择模式信号(mode)均可以相等,且四种功能选择模式信号(mode)均可以用二进制数值分别表示为mode=00,mode=01,mode=10,mode=11,四种不同模式的数据运算可以包括N位*N位数据的乘法运算、N位*N位数据的乘累加运算、2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。其中,数据处理器中的第一部分积获取电路22以及第二部分积获取电路23,均可以根据接收到的功能选择模式信号,控制接收正则有符号数编码处理单元211输入第一目标编码或者第二目标编码,或者第一目标编码和第二目标编码进行后续运算。
在本实施例中,上述正则有符号数编码处理单元211可以接收运算过程中的乘数,并对该乘数进行正则有符号数编码处理,得到目标编码。需要说明的是,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,正则有符号数编码处理单元211接收到的乘数为“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,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,正则有符号数编码处理单元211对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则正则有符号数编码处理单元211可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于数据处理器当前所处理数据的位宽加1。
另外,若数据处理器接收到的数据位宽为2N,且当前可处理N位数据运算,则数据处理器中的正则有符号数编码处理单元211,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若数据处理器当前可处理2N位数据运算,则数据处理器中的正则有符号数编码处理单元211,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
本实施例提供的数据处理器,数据处理器中的正则有符号数编码处理单元,对接收到的第一数据进行正则有符号数编码处理得到目标编码,第一部分积获取电路根据接收到的第二数据以及目标编码,得到对应的目标编码的第一部分积,第二部分积获取电路根据接收到的第二数据以及目标编码,得到对应的目标编码的第二部分积,并通过第一压缩电路以及第二压缩电路分别进行累加处理得到目标运算结果;该数据处理器可以对接收到的数据进行正则有符号数编码处理,得到的有效部分积的数目较少,从而降低了数据处理器实现乘法运算或乘累加运算的复杂性;同时,该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
图3为另一实施例提供的一种数据处理器的具体结构示意图,数据处理器中的第一修正编码子电路111包括:第一修正编码处理支路1111以及第一部分积选择支路1112,所述第一修正编码处理支路1111的输出端与所述第一部分积选择支路1112的输入端连接;
其中,所述第一修正编码处理支路1111用于对接收到的所述第一数据进行正则有符号数编码处理,得到所述第一目标编码,所述第一部分积选择支路1112用于根据所述第一目标编码得到符号位扩展后的第一部分积,对所述符号位扩展后的第一部分积进行选择,并且接收所述部分积交换电路13输出的所述符号位扩展后的第二部分积,将接收到的所述符号位扩展后的第二部分积,以及选择后得到的所述符号位扩展后的第一部分积,作为所述目标编码的第一部分积。
具体的,第一修正编码子电路111可以对接收到的第一数据中的乘数进行正则有符号数编码处理,得到第一目标编码,并根据第一数据中的被乘数以及第一目标编码,得到符号位扩展后的第一部分积。可选的,上述第一目标编码的位宽可以等于乘数的位宽加1,上述符号位扩展后的第一部分积的位宽可以等于数据处理器当前所处理被乘数的位宽的2倍。可选的,上述符号位扩展后的第一部分积的数目可以等于目标编码的第一部分积的数目,也可以等于第一目标编码的位宽。其中,符号位扩展后的第一部分积的数目可以等于第一目标编码的位宽。
示例性的,数据处理器接收到的是两个16比特位宽的数据,若数据处理器当前可处理8位*8位数据的乘法运算,则数据处理器中的第一修正编码子电路111,可以将16比特位宽的数据划分成,高8位和低8位两组数据分别进行运算处理,此时,得到的符号位扩展后的第一部分积的位宽可以等于16,高8位数据进行运算处理可以得到9个符号位扩展后的第一高位部分积,低8位数据进行运算处理可以得到9个符号位扩展后的第一低位部分积;若数据处理器当前可处理16位*16位数据的乘法运算,则数据处理器中的第一修正编码子电路111,可以对两个完整的16位数据进行运算处理,此时,得到的符号位扩展后的第一部分积的位宽可以等于32,并且能够得到18个符号位扩展后的第一部分积,第一目标编码中的高9位数值,对应的符号位扩展后的部分积可以称为符号位扩展后的第一高位部分积;第一目标编码中的低9位数值,对应的符号位扩展后的部分积可以称为符号位扩展后的第一低位部分积。
可选的,所述第二修正编码子电路121包括:第二修正编码处理支路1211以及第二部分积选择支路1212,所述第二修正编码处理支路1211的输出端与所述第二部分积选择支路1212的输入端连接;所述第二修正编码处理支路1211用于对接收到的所述第二数据进行正则有符号数编码处理,得到所述第二目标编码,所述第二部分积选择支路1212用于根据所述第二目标编码得到符号位扩展后的第二部分积,对所述符号位扩展后的第二部分积进行选择,并且接收所述部分积交换电路13输出的所述符号位扩展后的第一部分积,将接收到的所述符号位扩展后的第二部分积,以及选择后得到的所述符号位扩展后的第一部分积,作为所述目标编码的第二部分积。
需要说明的是,当数据处理器处理2N位*N位数据的乘累加运算时,数据处理器中的部分积交换电路13可以根据实际需求,将第一修正编码处理支路1111得到的符号位扩展后的第一低位部分积或者符号位扩展后的第一高位部分积,与第二修正编码子电路121得到的符号位扩展后的第二低位部分积或者符号位扩展后的第二高位部分积进行交换。可选的,部分积交换电路13实现交换处理后,第一修正编码处理支路1111可以将第一修正编码处理支路1111中未交换的符号位扩展后的第一部分积,与接收到的符号位扩展后的第二部分积进行结合,作为目标编码的第一部分积;第二修正编码处理支路1211可以将第二修正编码处理支路1211中未交换的符号位扩展后的第二部分积,与接收到的符号位扩展后的第一部分积进行结合,作为目标编码的第二部分积。
在本实施例中,第一修正编码处理支路1111处理数据的方法,与第二修正编码处理支路1211处理数据的方法基本相同;本实施例对第二修正编码处理支路1211处理数据的方法不再赘述。
本实施例提供的数据处理器,数据处理器中的第一修正编码处理支路,对接收到的第一数据进行正则有符号数编码处理得到符号位扩展后的第一部分积,并根据数据处理器当前所处理的数据模式,通过第一部分积选择支路选择符号位扩展后的第一部分积,以得到目标编码的第一部分积,通过第一修正压缩子电路对目标编码的第一部分积进行累加处理,得到目标运算结果;该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗;同时,该数据处理器还可以对接收到的数据进行正则有符号数编码处理,得到的有效部分积的数目较少,从而降低了数据处理器实现乘法运算或乘累加运算的复杂性。
作为其中一个实施例,数据处理器中的第一修正编码处理支路1111包括:第一修正编码单元1111a、低位部分积获取单元1111b、低位选择器组单元1111c、高位部分积获取单元1111d以及高位选择器组单元1111e,所述第一修正编码单元1111a的第一输出端与所述低位部分积获取单元1111b的第一输入端连接,所述低位选择器组单元1111c的输出端与所述低位部分积获取单元1111b的第二输入端连接,所述第一修正编码单元1111a的第二输出端与所述高位部分积获取单元1111d的第一输入端连接,所述高位选择器组单元1111e的输出端与所述高位部分积获取单元1111d的第二输入端连接。
其中,所述第一修正编码单元1111a用于对接收到的所述第一数据进行正则有符号数编码处理,根据接收到的所述功能选择模式信号确定所述数据处理器可处理数据的位宽,并根据所述数据处理器可处理数据的位宽得到第一目标编码,所述低位部分积获取单元1111b用于根据接收到的所述第一目标编码中的第一低位目标编码以及所述第一数据,得到符号位扩展后的第一低位部分积,所述低位选择器组单元1111c用于选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元1111d用于根据接收到的所述第一目标编码中的第一高位目标编码以及所述第一数据,得到符号位扩展后的第一高位部分积,所述高位选择器组单元1111e用于选通所述符号位扩展后的第一高位部分积中的数值。
具体的,上述第一修正编码处理支路1111可以接收第一数据中的乘数,并对该乘数进行正则有符号数编码处理得到第一目标编码,低位部分积获取单元1111b可以根据接收到的第一数据中的被乘数,以及第一修正编码单元1111a得到的第一目标编码,得到符号位扩展后的低位部分积;高位部分积获取单元1111d可以根据接收到的第一数据中的被乘数,以及第一修正编码单元1111a得到的第一目标编码,得到符号位扩展后的高位部分积。其中,上述第一数据可以包括乘法运算或乘累加运算中的乘数以及被乘数。若数据处理器当前可处理的数据位宽为N比特,数据处理器中的第一修正编码单元1111a接收到的两个数据的位宽均为2N比特,则第一修正编码单元1111a可以自动将接收到2N位数据拆分成高N位数据以及低N位数据;然后分别对高N位数据和低N位数据进行正则有符号数编码处理,得到的第一高位目标编码的位宽等于N加1,得到的第一低位目标编码的位宽也等于N加1;同时,得到的对应目标编码的第一高位部分积和目标编码的第一低位部分积的数目,均可以等于(N+1);若数据处理器当前可处理的数据位宽为2N,数据处理器中的第一修正编码处理支路1111接收到的两个数据的位宽为2N,则第一修正编码处理支路1111可以对接收到2N位数据进行正则有符号数编码处理,得到(2N+1)位的中间编码,并对中间编码进行补数处理,得到(2N+2)位数据,将这(2N+2)位的数据作为第一目标编码,其中,补数处理可以表征为对数据的最高位数值的高一位处补数值0;此时,第一目标编码中的高(N+1)位数据可以称为第一高位目标编码,第一目标编码中的低(N+1)位数据可以称为第一低位目标编码。可选的,第一目标编码的最高位数值为补数处理后获取的数值0,对应得到的目标编码的部分积中包含的数值均可以为数值0。
需要说明的是,上述低位选择器组单元1111c可以根据接收到的功能选择模式信号,选通符号位扩展后的第一低位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的第一低位部分积中的数值,还是2N位乘法运算得到的符号位扩展后的第一低位部分积的中数值;同理,高位选择器组单元1111e可以根据接收到的功能选择模式信号,选通符号位扩展后的第一高位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的第一高位部分积中的数值,还是2N位乘法运算得到的符号位扩展后的第一高位部分积中的数值。
可以理解的是,若数据处理器接收到的数据位宽可以为2N比特,当前可处理2N位数据运算,则数据处理器中的低位部分积获取单元1111b可以根据第一低位目标编码中的每一位数值,得到对应的符号位扩展后的低位部分积;上述低位选择器组单元1111c可以选通符号位扩展后的第一低位部分积中的数值;然后将符号位扩展后的低位部分积与选通后获取的符号位扩展后的第一低位部分积中的数值进行结合,得到符号位扩展后的第一低位部分积。可选的,数据处理器中的高位部分积获取单元1111d可以根据第一高位目标编码中的每一位数值,得到对应的符号位扩展后的高位部分积;上述高位选择器组单元1111e可以选通符号位扩展后的第一高位部分积中的数值;然后将符号位扩展后的高位部分积与选通后获取的符号位扩展后的第一高位部分积中的数值进行结合,得到符号位扩展后的第一高位部分积。可选的,正则有符号数编码处理过程中,第一低位目标编码的位宽可以等于第一高位目标编码的位宽,还可以等于低N位数据对应的符号位扩展后的第一低位部分积的数目,或者高N位数据对应的符号位扩展后的第一高位部分积的数目。可选的,第一修正编码处理支路1111中可以包含(N+1)个低位部分积获取单元1111b,还可以包含(N+1)个高位部分积获取单元1111d。可选的,上述每一个低位部分积获取单元1111b可以包含4N个数值生成子单元,每一个高位部分积获取单元1111d也可以包含4N个数值生成子单元,且每一个数值生成子单元可以获取符号位扩展后的第一低位部分积中的一位数值。同时,低位部分积获取单元1111b可以根据得到的符号位扩展后的第一低位部分积确定目标编码的第一低位部分积,高位部分积获取单元1111d可以根据得到的符号位扩展后的第一高位部分积确定目标编码的第一高位部分积。
另外,第二修正编码处理支路1211与第一修正编码处理支路1111,实现正则有符号数编码处理的方法相同,并且第二修正编码处理支路1211与第一修正编码处理支路1111的内部结构,以及外部输出端口的功能也相同,因此,本实施例对第二修正编码处理支路1211处理数据的方法和结构均不再赘述。
本实施例提供的一种数据处理器,数据处理器通过第一修正编码处理支路中的第一修正编码单元对接收到的数据进行正则有符号数编码处理,得到第一低位目标编码及第一高位目标编码,并且低位部分积获取单元根据第一低位目标编码得到符号位扩展后的低位部分积,高位部分积获取单元根据第一高位目标编码得到符号位扩展后的高位部分积,进而确定是否需要对符号位扩展后的低位部分积以及符号位扩展后的高位部分积进行交换处理,以得到目标编码的部分积,并对目标编码的部分积进行累加处理,得到目标运算结果;该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;同时,该数据处理器还可以对接收到的数据进行正则有符号数编码处理,得到的有效部分积的数目较少,从而降低了数据处理器实现乘法运算或乘累加运算的复杂性。
作为其中一个实施例,数据处理器中的第一修正编码单元1111a包括:第一数据输入端口1111aa、第一模式选择信号输入端口1111ab、低位目标编码输出端口1111ac以及高位目标编码输出端口1111ad;所述第一数据输入端口1111aa用于接收所述第一数据,所述第一模式选择信号输入端口1111ab用于接收所述功能选择模式信号,所述低位目标编码输出端口1111ac用于输出对所述第一数据进行正则有符号数编码处理后,得到的所述第一低位目标编码,所述高位目标编码输出端口1111ad用于输出对所述第一数据进行正则有符号数编码处理后,得到的所述第一高位目标编码。
具体的,乘法运算过程中,数据处理器中的第一修正编码单元1111a可以通过第一数据输入端口1111aa接收第一数据,通过第一模式选择信号输入端口1111ab接收功能选择模式信号,对第一数据中的乘数进行正则有符号数编码处理得到中间编码,并根据接收到的功能选择模式信号确定是否需要对中间编码进行补数处理,进而得到第一目标编码,然后通过低位目标编码输出端口1111ac输出第一目标编码中的第一低位目标编码,通过高位编码输出端口1111ad输出第一目标编码中的第一高位目标编码。
本实施例提供的一种数据处理器,该数据处理器能够对接收到的数据进行正则有符号数编码处理,以降低乘法运算过程中获取的有效部分积的数目,从而降低数据处理器实现乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了数据处理器的功耗。
在其中一个实施例中,数据处理器中的低位部分积获取单元1111b包括:低位目标编码输入端口1111ba、选通数值输入端口1111bb、第一数据输入端口1111bc以及低位部分积输出端口1111bd;所述低位目标编码输入端口1111ba用于接收所述第一修正编码单元1111a输入的所述第一低位目标编码,所述选通数值输入端口1111bb用于接收所述低位选择器组单元1111c选通后,得到的所述符号位扩展后的第一低位部分积中的数值,所述第一数据输入端口1111bc用于接收所述第一数据,所述低位部分积输出端口1111bd用于输出所述符号位扩展后的第一低位部分积。
具体的,数据处理器中的低位部分积获取单元1111b通过低位目标编码输入端口1111ba,可以接收第一修正编码单元1111a输出的第一低位目标编码,并通过第一数据输入端口1111bc可以接收第一数据中的被乘数。可选的,低位部分积获取单元1111b可以根据接收到的第一低位目标编码,以及接收到的乘法运算或乘累加运算中的被乘数,得到对应的符号位扩展后的第一低位部分积。可选的,若低位部分积获取单元1111b中的第一数据输入端口1111bc接收到的被乘数位宽为N,则低位部分积获取单元1111b得到的符号位扩展后的第一低位部分积的位宽可以等于2N。示例性的,若低位部分积获取单元1111b接收到一个N比特位宽的被乘数X,则低位部分积获取单元1111b可以根据被乘数X以及第一低位目标编码中包含的三种数值,即-1,1和0,得到对应的原始部分积,并根据原始部分积得到符号位扩展后的低位部分积,该符号位扩展后的低位部分积中的低(N+1)位数值可以等于原始部分积包含的所有数值,符号位扩展后的低位部分积中的高(N-1)位数值均可以等于原始部分积的符号位数值(即最高位数值)。其中,当第一低位目标编码中的数值为-1时,则原始部分积可以为-X,当第一低位目标编码中的数值为1时,则原始部分积可以为X,当第一低位目标编码中的数值为0时,则原始部分积可以为0。
需要说明的是,低位部分积获取单元1111b可以通过选通数值输入端口1111bb,接收低位选择器组单元1111c选通的不同模式的数据运算时,得到的符号位扩展后的第一低位部分积中的对应位数值;然后将低位部分积获取单元1111b当前得到的符号位扩展后的低位部分积,与选通后的对应位数值进行结合,得到符号位扩展后的第一低位部分积。
可选的,数据处理器中的高位部分积获取单元1111d包括:高位目标编码输入端口1111da、选通数值输入端口1111db、数据输入端口1111dc以及高位部分积输出端口1111dd;所述高位目标编码输入端口1111da用于接收所述第一修正编码单元1111a输出的第一高位目标编码,所述选通数值输入端口1111db用于接收所述高位选择器组单元1111e选通后,输出的所述符号位扩展后的第一高位部分积中的数值,所述数据输入端口1111dc用于接收所述第一数据,所述高位部分积输出端口1111dd用于输出所述符号位扩展后的第一高位部分积。
可以理解的是,高位部分积获取单元1111d获取符号位扩展后的第一高位部分积的方法,与低位部分积获取单元1111b获取符号位扩展后的第一低位部分积的方法相同,本实施例不再赘述高位部分积获取单元1111d获取部分积的方法。另外,低位部分积获取单元1111b与高位部分积获取单元1111d的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述高位部分积获取单元1111d的具体结构。
本实施例提供的一种数据处理器,数据处理器中的低位部分积获取单元可以根据第一低位目标编码得到符号位扩展后的低位部分积,然后将符号位扩展后的低位部分积与低位选择器组单元选通的数值进行结合,得到符号位扩展后的第一低位部分积,进而确定是否对符号位扩展后的第一低位部分积以及符号位扩展后的第一高位部分积进行交换处理,以得到目标编码的部分积,并对目标编码的部分积进行累加处理,得到不同模式的数据运算结果;该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性;同时,该数据处理器对接收到的数据进行正则有符号数编码处理后,获取的有效部分积的数目较少,从而降低了数据处理器实现乘法运算的复杂性。
在其中一个实施例中,数据处理器中的低位选择器组单元1111c包括:低位选择器1111ca,多个所述低位选择器1111ca用于对所述符号位扩展后的第一低位部分积中的数值进行选通。
具体的,上述低位选择器组单元1111c中低位选择器1111ca的数目,可以等于3N*(N+1),2N可以表示数据处理器当前所处理数据的位宽,该低位选择器组单元1111c中每一个低位选择器1111ca的内部电路结构可以相同。可选的,乘法运算或乘累加运算时,第一修正编码单元1111a连接的对应(N+1)个低位部分积获取单元1111b中,每一个低位部分积获取单元1111b可以包含4N个数值生成子单元,其中2N个数值生成子单元可以连接2N个低位选择器1111ca,这2N个数值生成子单元均可以连接一个低位选择器1111ca。可选的,2N个低位选择器1111ca对应的2N个数值生成子单元,可以为符号位扩展后的第一低位部分积中高2N位数据对应的数值生成子单元,同时,该2N个低位选择器1111ca的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若数据处理器可以处理四种不同模式的数据运算,并且数据处理器接收到的数据的位宽为2N,则上述低位选择器1111ca的两个其它输入端口可以接收的信号分别为数值0,与数据处理器进行2N比特位宽的数据运算时,低位部分积获取单元1111b得到的对应符号位扩展后的第一低位部分积中的符号位数值。其中,(N+1)个低位部分积获取单元1111b可以连接(N+1)组2N个低位选择器1111ca,各组的2N个低位选择器1111ca接收到的对应符号位数值可以相同,也可以不相同;但是,同一组的2N个低位选择器1111ca接收到的符号位数值是相同的,并且该符号位数值可以根据每一组2N个低位选择器1111ca,对应连接的低位部分积获取单元1111b获取的符号位扩展后的第一低位部分积中的符号位数值得到。
另外,每一个低位部分积获取单元1111b包含的4N个数值生成子单元,其中对应N个数值生成子单元可以不连接低位选择器1111ca,此时,该N个数值生成子单元获取的数值,可以为数据处理器当前所处理不同位宽的数据获取的第一低位目标编码中的数值,得到的对应符号位扩展后的第一低位部分积中的对应位数值;也可以理解为,N个数值生成子单元获取的数值可以为对应符号位扩展后的第一低位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N位数值之间的所有数值。
需要说明的是,上述每一个低位部分积获取单元1111b包含的4N个数值生成子单元中,剩余的N个数值生成子单元也可以连接N个低位选择器1111ca,每一个数值生成子单元可以连接1个低位选择器1111ca;该N个低位选择器1111ca的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口;这两个其它输入端口可以接收的信号,分别为数据处理器进行2N位数据运算,得到的对应符号位扩展后的第一低位部分积中的符号位数值,以及数据处理器进行2N位数据运算,得到的对应符号位扩展后的低位部分积中对应位数值。其中,(N+1)个低位部分积获取单元1111b可以连接(N+1)组N个低位选择器1111ca,各组的N个低位选择器1111ca接收到的符号位数值可以相同,也可以不相同;但是,同一组的N个低位选择器1111ca接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N个低位选择器1111ca,对应连接的低位部分积获取单元1111b获取的符号位扩展后的第一低位部分积中的符号位数值得到。
另外,各组的N个低位选择器1111ca接收到的符号位扩展后的第一低位部分积中对应位数值,可以根据该组低位选择器1111ca所连接的低位部分积获取单元1111b,获取的符号位扩展后的第一低位部分积中的对应位数值确定;并且每一组的N个低位选择器1111ca中,每一个低位选择器1111ca接收到的对应位数值可以相同,也可以不相同。其中,每一个低位部分积获取单元1111b中4N个数值生成子单元的位置分布规律,可以在上一个低位部分积获取单元1111b中4N个数值生成子单元位置的基础上,左移一个数值生成子单元。可选的,参与后续运算的所有目标编码的第一低位部分积中,只有第一个目标编码的第一低位部分积的位宽,可以等于第一个符号位扩展后的第一低位部分积的位宽4N;剩余的目标编码的第一低位部分积的位宽都会在上一个目标编码的第一部分积的基础上少一位,且最后一个目标编码的第一高位部分积的位宽可以等于(2N-1)。
可选的,所述高位选择器组单元1111e包括:高位选择器1111ea,多个所述高位选择器1111ea用于对所述符号位扩展后的第一高位部分积中的数值进行选通。
需要说明的是,高位选择器1111ea选通数值的方法可以通过如下方法描述。
可选的,上述高位选择器组单元1111e中高位选择器1111ea的数目,可以等于3N*(N+1),2N可以表示数据处理器当前所处理数据的位宽,该高位选择器组单元1111e中每一个高位选择器1111ea的内部电路结构可以相同。可选的,乘法运算或乘累加运算时,第一修正编码单元1111a可以连接(N+1)个高位部分积获取单元,每一个高位部分积获取单元中,可以包含4N个数值生成子单元,其中2N个数值生成子单元可以连接2N个高位选择器1111ea,每一个数值生成子单元连接一个高位选择器1111ea。可选的,上述2N个高位选择器1111ea对应的2N个数值生成子单元,可以为目标编码的高位部分积中低2N位数值对应的数值生成子单元,该2N个高位选择器1111ea的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若数据处理器可以处理四种不同模式的数据运算,并且数据处理器接收到的数据的位宽为2N,则上述高位选择器1111ea的两个其它输入端口分别接收的信号可以为0和数据处理器进行2N比特位宽的数据运算时,该高位部分积获取单元得到的对应符号位扩展后的部分积中的对应位数值。其中,(N+1)个高位部分积获取单元可以连接(N+1)组2N个高位选择器1111ea,各组的2N个高位选择器1111ea接收到的对应位数值可以相同,也可以不相同。
另外,每一个高位部分积获取单元包含的4N个数值生成子单元中,对应N个数值生成子单元可以连接N个高位选择器1111ea,每一个数值生成子单元可以连接1个高位选择器1111ea,该N个高位选择器1111ea与选择器的内部电路结构可以相同,并且该N个高位选择器1111ea的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为数据处理器进行2N位数据运算,得到的对应符号位扩展后的部分积中的符号位数值,和数据处理器进行2N位数据运算,得到的对应符号位扩展后的部分积中的符号位数值。其中,(N+1)个高位部分积获取单元可以连接(N+1)组N个高位选择器1111ea,各组的N个高位选择器1111ea接收到的符号位数值可以相同,也可以不相同,但是,同一组的N个高位选择器1111ea接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N个高位选择器1111ea,对应连接的高位部分积获取单元获取的符号位扩展后的部分积中的符号位数值得到。另外,各组的N个高位选择器1111ea接收到的符号位扩展后的部分积中对应位数值,可以根据该组高位选择器1111ea所连接的高位部分积获取单元,获取的符号位扩展后的部分积中的符号位数值确定,并且每一组的N个高位选择器1111ea中,每一个高位选择器1111ea接收到的对应位数值可以相同,可以不相同。
需要说明的是,每一个高位部分积获取单元包含的4N个数值生成子单元中,剩余的N个数值生成子单元可以不连接高位选择器1111ea,此时,该N个数值生成子单元获取的数值可以为数据处理器当前所处理不同位宽的数据,得到的高位目标编码中的数值得到的对应的符号位扩展后的部分积中的对应位数值,也可以理解为,N个数值生成子单元获取的数值可以为对应符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第3N位数值之间的所有数值。其中,每一个高位部分积获取单元中4N个数值生成子单元的位置的分布规律,可以在上一个高位部分积获取单元中4N个数值生成子单元位置的基础上,左移一个数值生成子单元。可选的,参与后续运算的所有目标编码的高位部分积中,只有第一个目标编码的高位部分积的位宽可以等于4N,剩余的目标编码的高位部分积的位宽都会在上一个目标编码的高位部分积的基础上少一位,且最后一个目标编码的高位部分积的位宽可以等于(2N-1)。
本实施例提供的一种数据处理器,数据处理器中的低位选择器组单元可以选通低位部分积中的数值,得到符号位扩展后的第一低位部分积,进而根据符号位扩展后的第一低位部分积得到目标编码的第一部分积,并通过压缩电路对目标编码的第一部分积进行累加处理,得到不同模式的目标运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括第一部分积选择支路1112,所述第一部分积选择支路1112包括:功能选择模式信号输入端口(mode)1112a、第一部分积输入端口1112b、第二部分积输入端口1112c、第一部分积输出端口1112d以及选通部分积输出端口1112e;所述功能选择模式信号输入端口(mode)1112a用于接收所述功能选择模式信号,所述第一部分积输入端口1112b用于接收所述第一修正编码子电路111输入的所述符号位扩展后的第一部分积,所述第二部分积输入端口1112c用于接收所述部分积交换电路13交换的所述符号位扩展后的第二部分积,所述第一部分积输出端口1112d用于输出需要所述部分积交换电路13进行交换的所述符号位扩展后的第一部分积,所述选通部分积输出端口1112e用于输出选通后的所述符号位扩展后的第一部分积,以及接收到的所述符号位扩展后的第二部分积。
具体的,若数据处理器当前可处理2N位*N位数据的乘累加运算,则数据处理器中的部分积交换电路13可以交换符号位扩展后的第二低位部分积,与符号位扩展后的第一低位部分积;或者数据处理器中的部分积交换电路13可以交换符号位扩展后的第二高位部分积,与符号位扩展后的第一高位部分积;此时,第一部分积选择支路1112可以通过第二部分积输入端口1112c,接收部分积交换电路13交换的符号位扩展后的第二部分积,第一部分积选择支路1112并将需要交换的符号位扩展后的第一部分积,通过第一部分积输出端口1112d输出至部分积交换电路13。其中,第一部分积选择支路1112中的选通部分积输出端口1112e,可以输出不需要交换的符号位扩展后的第一部分积,以及接收到的符号位扩展后的第二部分积;同时,第一部分积选择支路1112将不需要交换的符号位扩展后的第一部分积,和/或接收到的符号位扩展后的第二部分积作为目标编码的第一部分积,输入至第一修正压缩子电路112进行压缩处理。
本实施例提供的一种数据处理器,数据处理器通过第一部分积选择支路可以选择符号位扩展后的第一部分积,以得到目标编码的东第一部分积,使得数据处理器不仅能够实现同位宽数据的乘法运算以及乘累加运算,还能够实现不同位宽数据的乘累加运算,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括第一修正压缩子电路112,所述第一修正压缩子电路112包括:修正华莱士树组单元1121和累加单元1122,所述修正华莱士树组单元1121的输出端与所述累加单元1122的输入端连接;所述修正华莱士树组单元1121用于对不同模式的数据运算处理时,获取的所述目标编码的第一部分积中的每一列数值进行累加处理,得到累加运算结果,所述累加单元1122用于对所述累加运算结果进行加法运算。
具体的,上述修正华莱士树组单元1121可以对第一修正编码子电路111得到的目标编码的第一部分积中的每一列数值进行累加处理,并通过累加单元1122对修正华莱士树组单元1121得到的两个运算结果进行累加处理,得到目标运算结果。其中,通过修正华莱士树组单元1121进行累加处理时,所有目标编码的第一部分积的分布规律,可以表征为每一行对应目标编码的第一部分积中最低位数值所处位置,比下一行对应目标编码的第一部分积中最低位数值所处位置向右错开一位数值,但是,每一个目标编码的第一部分积中的最高位数值,均与第一个目标编码的第一部分积中最高位数值位于同一列。可选的,修正华莱士树组单元1121可以按照所有目标编码的第一部分积的分布规律,对所有目标编码的第一部分积中的每一列数值进行累加处理。可选的,上述修正华莱士树组单元1121得到的两个运算结果,可以包括和位输出信号Sum与进位输出信号Carry。
示例性的,若数据处理器当前处理16位*16位的定点数乘法运算,通过第一部分积选择支路1112得到的9个目标编码的第一部分积的分布规律如图4a所示,其中,空心圆圈表示部分积中的每一位数值,实心圆圈表示部分积中的符号扩展位数值。
若数据处理器为图3所示的电路结构,则该数据处理器当前处理16位*8位的定点数乘累加运算,通过第一修正压缩子电路112或第二修正压缩子电路122接收到的目标编码的第一部分积的分布规律如图4b所示;其中,空心圆圈表示第一部分积选择支路1112或第二部分积选择支路1212得到的部分积;交叉空心圆圈表示第一部分积选择支路1112通过部分积交换电路13,获取的第二部分积选择支路1212得到的符号位扩展后的第二部分积,或者第二部分积选择支路121通过部分积交换电路13,获取的第一部分积选择支路1112得到的符号位扩展后的第一部分积。
另外,第二修正压缩子电路122处理数据的方法与第一修正压缩子电路112处理数据的方法相同;并且第二修正压缩子电路122与第一修正压缩子电路112的内部结构,以及外部输出端口的功能也相同,本实施例对第二修正压缩子电路122处理数据的方法和结构均不再赘述。
本实施例提供的一种数据处理器,数据处理器通过第一修正压缩子电路可以对目标编码的第一部分积进行累加处理,并通过累加单元对累加结果进行累加处理,得到目标运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
在其中一个实施例中,数据处理器包括修正华莱士树组单元1121,所述修正华莱士树组单元1121包括:低位华莱士树子单元1121a、选择器1121b以及高位华莱士树子单元1121c,所述低位华莱士树子单元1121a的输出端与所述选择器1121b的输入端连接,所述选择器1121b的输出端与所述高位华莱士树子单元1121c的输入端连接;其中,多个所述低位华莱士树子单元1121a用于对所述目标编码的第一部分积中的每一列数值进行累加运算,得到所述累加运算结果,所述选择器1121b用于选通所述高位华莱士树子单元1121c接收的进位输入信号,多个所述高位华莱士树子单元1121c用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果。
具体的,每一个低位华莱士树子单元1121a的电路结构,可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现;每一个高位华莱士树子单元1121c的电路结构,也可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现;另外,低位华莱士树子单元1121a和高位华莱士树子单元1121c,均可以理解为是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,修正华莱士树组单元1121中高位华莱士树子单元1121c的数目,可以等于数据处理器当前可处理乘法运算或乘累加运算时被乘数的位宽N,还可以等于低位华莱士树子单元1121a的数目;其中,相邻两个低位华莱士树子单元1121a之间可以串行连接,相邻两个高位华莱士树子单元1121c之间也可以串行连接。可选的,最后一个低位华莱士树子单元1121a的输出端与选择器1121b的输入端连接,选择器1121b的输出端与第一个高位华莱士树子单元1121a的输入端连接。可选的,修正华莱士树组单元1121中,每一个低位华莱士树子单元1121a可以对所有目标编码的第一部分积的对应列数值进行加法处理;每一个低位华莱士树子单元1121a可以输出两个信号,即进位信号Carryi与一个和位信号Sumi;其中,i可以表示每一个低位华莱士树子单元1121a对应的编号,第一个低位华莱士树子单元1121a的编号为1。可选的,每一个低位华莱士树子单元1121a接收到输入信号的数目,可以等于目标编码的第一部分积的数目。其中,修正华莱士树组单元1121中,高位华莱士树子单元1121c与低位华莱士树子单元1121a的数目之和,可以等于2N;所有目标编码的第一部分积中,从最低列至最高列的总列数可以等于2N,N个低位华莱士树子单元1121a可以对所有目标编码的第一部分积的低N列数据中的每一列数值进行累加运算,N个高位华莱士树子单元1121c可以对所有目标编码的第一部分积的高N列数据中的每一列数值进行累加运算。
示例性的,若数据处理器当前需要处理2N位*2N位数据的乘法运算,此时,数据处理器中的选择器1121b可以选通修正华莱士树组单元1121中的最后一个低位华莱士树子单元1121a,输出的进位输出信号CoutN作为修正华莱士树组单元1121中,第一个高位华莱士树子单元1121c接收到的进位输入信号CinN+1;若数据处理器当前需要处理N位*N位数据的乘法运算,此时,数据处理器中的选择器1121b可以选通数值0作为修正华莱士树组单元1121中,第一个高位华莱士树子单元1121c接收到的进位输入信号CinN+1;还可以理解为,数据处理器当前可以将接收到的2N位子数据,划分成高N位数据和低N位数据分别进行乘法运算,修正华莱士树组单元1121中,从第一个低位华莱士树子单元1121a至最后一个低位华莱士树子单元1121a的对应编号i分别可以表示为1,2,…,N;从第一个高位华莱士树子单元1121c至最后一个高位华莱士树子单元1121c的对应编号i分别可以表示为N+1,N+2,…,2N。
需要说明的是,修正华莱士树组单元1121中每一个低位华莱士树子单元1121a和高位华莱士树子单元1121c,接收到的信号均可以包括进位输入信号Cini,部分积数值输入信号,进位输出信号Couti。可选的,每一个低位华莱士树子单元1121a和高位华莱士树子单元1121c接收到的部分积数值输入信号,可以为所有目标编码的第一部分积中对应列的数值;每一个低位华莱士树子单元1121a和高位华莱士树子单元1121c,输出的进位信号Couti的位数可以等于NCout=floor((NI+NCin)/2)-1。其中,NI可以表示低位华莱士树子单元1121a或高位华莱士树子单元1121c的部分积数值输入信号的数目,NCin可以表示低位华莱士树子单元1121a或高位华莱士树子单元1121c的进位输入信号的数目,NCout可以表示低位华莱士树子单元1121a或高位华莱士树子单元1121c最少的进位输出信号的数目,floor(·)可以表示向下取整函数。可选的,修正华莱士树组单元1121中,每一个低位华莱士树子单元1121a或高位华莱士树子单元1121c接收到的进位输入信号,可以为上一个低位华莱士树子单元1121a或高位华莱士树子单元1121c输出的进位输出信号,并且第一个低位华莱士树子单元1121a接收到的进位数输入信号为数值0。其中,第一个高位华莱士树子单元1121c接收到的进位输入信号,可以通过数据处理器当前所处理不同模式的数据位宽,与数据处理器当前所处理的乘法运算或乘累加运算中被乘数的位宽确定。
本实施例提供的一种数据处理器,数据处理器通过修正华莱士树组单元可以对目标编码的部分积进行累加处理得到两路输出信号,并通过累加单元对该两路输出信号进行累加处理,得到不同模式的数据运算结果;该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
在其中一个实施例中,数据处理器包括累加单元1122,所述累加单元1122包括:加法器1122a,所述加法器1122a用于对所述累加运算结果进行加法运算。
具体的,加法器1122a可以为不同位宽的加法器。可选的,加法器1122a可以接收修正华莱士树组单元1121输出的两路信号,对两路输出信号进行加法运算,输出数据处理器当前所处理模式的数据运算结果。可选的,上述加法器1122a可以为超前进位加法器,该超前进位加法器对应处理数据的位宽可以等于修正华莱士树组单元1121输出运算结果的位宽。
本实施例提供的一种数据处理器,数据处理器通过累加单元可以对修正华莱士树组单元输出的两路信号进行累加处理,输出不同模式的数据运算结果;该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
在其中一个实施例中,数据处理器中的第二部分积选择支路1212包括:功能选择模式信号输入端口(mode)1212a、第二部分积输入端口1212b、第一部分积输入端口1212c、第二部分积输出端口1212d以及选通部分积输出端口1212e;所述功能选择模式信号输入端口(mode)1212a用于接收所述功能选择模式信号,所述第二部分积输入端口1212b用于接收所述第二修正编码子电路121输入的所述符号位扩展后的第二部分积,所述第一部分积输入端口1212c用于接收所述部分积交换电路13交换后得到的所述符号位扩展后的第一部分积,所述第二部分积输出端口1212d用于输出所述部分积交换电路13需要进行交换的所述符号位扩展后的第二部分积,所述选通部分积输出端口1212e用于输出选通后的所述符号位扩展后的第二部分积,以及接收到的所述符号位扩展后的第一部分积。
具体的,若数据处理器当前可处理2N位*N位数据的乘累加运算,则数据处理器中的部分积交换电路13可以交换符号位扩展后的第二部分积,与符号位扩展后的第一部分积;数据处理器中的第二部分积选择支路1212可以通过第一部分积输入端口1212c,接收部分积交换电路13交换的符号位扩展后的第一部分积,并将需要交换的符号位扩展后的第二部分积通过第二部分积输出端口1212d输出至部分积交换电路13。其中,选通部分积输出端口1212e可以输出不需要交换的符号位扩展后的第二部分积,以及接收到的符号位扩展后的第一部分积;然后第二部分积选择支路1212将不需要交换的符号位扩展后的第二部分积,和/或接收到的符号位扩展后的第一部分积作为目标编码的第二部分积,输入至第二修正压缩子电路122进行压缩处理。
本实施例提供的一种数据处理器,数据处理器通过第二部分积选择支路可以选择符号位扩展后的部分积,以得到目标编码的部分积,使得数据处理器不仅能够实现同位宽数据的乘法运算以及乘累加运算,还能够实现不同位宽数据的乘累加运算,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器中的部分积交换电路13包括:功能选择模式信号输入端口(mode)131、第一部分积输入端口132、第一部分积输出端口133、第二部分积输入端口134以及第二部分积输出端口135,所述功能选择模式信号输入端口(mode)131用于接收所述功能选择模式信号,所述第一部分积输入端口132用于接收所述第一修正编码子电路111输入的需要交换的符号位扩展后的第一部分积,所述第一部分积输出端口133用于输出所述符号位扩展后的第一部分积,所述第二部分积输出端口134用于接收所述第二修正编码子电路121输入的需要交换的符号位扩展后的第二部分积,所述第二部分积输出端口135用于输出所述符号位扩展后的第二部分积。
具体可以理解的是,部分积交换电路13根据功能选择模式信号输入端口(mode)131,接收到的功能选择模式信号,确定当前是否需要交换符号位扩展后的第一部分积,与符号位扩展后的第二部分积;其中,部分积交换电路13可以交换符号位扩展后的第一低位部分积与符号位扩展后的第二低位部分积,或者,部分积交换电路13可以交换符号位扩展后的第一高位部分积与符号位扩展后的第二高位部分积。但是,在本实施例中,只有当数据处理器需要处理2N位*N位数据的乘累加运算时,部分积交换电路13才需要交换符号位扩展后的部分积,处理其它三种模式的数据运算时,部分积交换电路13可以不需要进行交换处理。
本实施例提供的一种数据处理器,数据处理器通过部分积交换电路可以交换第一修正编码子电路得到的符号位扩展后的第一部分积,与第二修正编码子电路得到的符号位扩展后的第二部分积,进而实现2N位*N位数据的乘累加运算,该数据处理器不仅能够实现同位宽数据的乘法运算以及乘累加运算,还能够实现不同位宽数据的乘累加运算,从而提高了数据处理器的通用性。
另一实施例提供的一种数据处理器,数据处理器中的正则有符号数编码处理单元211包括:第一数据输入端口2111、功能选择模式信号输入端口2112以及目标编码输出端口2113,所述第一数据输入端口2111用于接收进行正则有符号数编码处理的所述第一数据,所述功能选择模式信号输入端口2112用于接收所述功能选择模式信号,所述目标编码输出端口2113用于输出对所述第一数据进行正则有符号数编码处理后,得到的所述目标编码。
具体的,正则有符号数编码处理单元211可以根据接收到的功能选择模式信号,确定数据处理器当前可处理的数据位宽是N还是2N。若正则有符号数编码处理单元211当前可处理的数据位宽是N时,则正则有符号数编码处理单元211可以自动将接收到的两个2N位子数据,均划分成高N位数据(即高位数据)和低N位数据(即低位数据),并分别对高位数据和低位数据进行正则有符号数编码处理;若正则有符号数编码处理单元211当前可处理的数据位宽是2N时,则正则有符号数编码处理单元211可以将两个2N位子数据作为整体,分别对这两个子数据进行正则有符号数编码处理。
需要说明的是,第一数据可以包括两个2N位子数据,若正则有符号数编码处理单元211当前需要对2N位数据进行正则有符号数编码处理,则第一数据中的低位数据可以包括两个2N位子数据中对应的两个低位数据;若正则有符号数编码处理单元211当前需要对N位数据进行处理,则正则有符号数编码处理单元211可以将两个2N位子数据,分别划分成两个N位子数据,即四个N位子数据;上述第一数据中的低位数据可以包括两个2N位子数据对应的四个低位数据。另外,正则有符号数编码处理过程中,正则有符号数编码处理单元211得到的低位目标编码的数目,可以等于得到的高位目标编码的数目,还可以等于低位数据对应的目标编码的第一低位部分积的数目,或者高位数据对应的目标编码的第一高位部分积的数目。若数据处理器当前处理一个N位*N位数据的乘法运算,此时,第一数据和第二数据中均有一个子数据为0,也就是第一数据和第二数据中的高N位数据或低N位数据全为0;另外,若数据处理器当前处理一个2N位*2N位数据的乘法运算,此时,第一数据和第二数据中均有一个子数据为0,另一个子数据均为2N位非0数值。
本实施例提供的一种数据处理器,数据处理器通过正则有符号数编码处理单元,对接收到的第一数据进行正则有符号数编码处理,得到目标编码,进而根据目标编码得到目标编码的部分积,并对目标编码的部分积进行累加处理得到目标运算结果,实现了多种不同模式的数据运算处理;该数据处理器能够通过正则有符号数编码处理单元对接收到的数据进行正则有符号数编码处理,得到的有效部分积的数目较少,从而降低了数据处理器实现乘法运算或乘累加运算的复杂性;同时,该数据处理器能够实现多种不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,数据处理器中的第一部分积获取电路22包括:低位部分积获取单元221、低位选择器组单元222、高位部分积获取单元223以及高位选择器组单元224;所述低位部分积获取单元221的第一输入端以及所述高位部分积获取单元223的第一输入端,均与所述正则有符号数编码处理单元211的输出端连接,所述低位部分积获取单元221的第二输入端与所述低位选择器组单元222的输出端连接,所述高位部分积获取单元223的第二输入端与所述高位选择器组单元224的输出端连接。
其中,所述低位部分积获取单元221用于根据所述目标编码中的低位目标编码以及所述第二数据,得到符号位扩展后的第一低位部分积,并根据所述符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,所述低位选择器组单元222用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元223用于根据所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的第一高位部分积,并根据所述符号位扩展后的第一高位部分积得到目标编码的第一高位部分积,所述高位选择器组单元224用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一高位部分积中的数值。
具体可以理解的是,低位部分积获取单元221可以根据正则有符号数编码单元211输入的低位目标编码中的每一位数值,得到对应的符号位扩展后的低位部分积;低位选择器组单元222可以选通得到符号位扩展后的第一低位部分积中的数值;然后将符号位扩展后的低位部分积与选通后的符号位扩展后的第一低位部分积中的数值进行结合,得到符号位扩展后的第一低位部分积,并根据符号位扩展后的第一低位部分积得到目标编码的第一低位部分积。同理,高位部分积获取单元223可以根据正则有符号数编码单元211输入的高位目标编码中的每一位数值,得到第一数据中的高位数据对应的符号位扩展后的高位部分积;高位选择器组单元224可以选通得到符号位扩展后的第一高位部分积中的数值;然后将符号位扩展后的高位部分积与选通后的符号位扩展后的第一高位部分积中的数值,得到符号位扩展后的第一高位部分积,并根据符号位扩展后的第一高位部分积得到目标编码的第一高位部分积。
在本实施例中,目标编码的第一部分积可以通过目标编码第一低位部分积和目标编码的第一高位部分积得到。若第一目标编码的位宽可以等于2N,第一低位目标编码中的数值从最低位数值开始对应的编号可以为1,...,N,则对应的符号位扩展后的第一低位部分积的对应编号也可以为1,...,N,目标编码的第一低位部分积的对应编号与符号位扩展后的第一低位部分积的对应编号类似;同时,若第一高位目标编码中的数值从最低位数值开始对应的编号可以为N+1,...,2N,则对应的符号位扩展后的第一高位部分积的对应编号也可以为N+1,...,2N,目标编码的第一高位部分积的对应编号与符号位扩展后的第一高位部分积的对应编号类似;进而将所有目标编码的第一部分积的分布规律可以表征为,第一个目标编码的第一低位部分积可以等于第一个符号位扩展后的第一低位部分积,即第一个目标编码的第一部分积;从第二个目标编码的第一低位部分积开始,每一个目标编码的第一低位部分积的最高位数值,可以与第一个目标编码的第一部分积的最高位数值位于同一列;相当于每一个目标编码的第一低位部分积的最低位数值,与上一个目标编码的第一低位部分积的最低位数值向左错开一位,最后一个目标编码的第一低位部分积的下一个目标编码的第一部分积,可以为第一个目标编码的第一高位部分积;其中,第一个目标编码的第一高位部分积的位宽可以等于N,相当于在第一个符号位扩展后的第一低位部分积对应列的基础上,第一个符号位扩展后的第一高位部分积左移的N位数值,不为目标编码的第一部分积中的数值,其它目标编码的第一高位部分积的分布方式依次类推。
需要说明的是,若数据处理器当前可处理2N位*2N位数据的乘法运算,则数据处理器中的第一部分积获取电路22可以包含(N+1)个低位部分积获取单元221,和(N+1)个高位部分积获取单元223;此时,每一个低位部分积获取单元221可以包含4N个数值生成子单元,每一个高位部分积获取单元223也可以包含4N个数值生成子单元。若数据处理器当前需要对N位数据进行处理,则数据处理器中的第一部分积获取电路22可以包含(N+1)/2个低位部分积获取单元221,和(N+1)/2个高位部分积获取单元223;此时,每一个低位部分积获取单元221可以包含2N个数值生成子单元,每一个高位部分积获取单元223可以包含2N个数值生成子单元,每一个数值生成子单元可以获取符号位扩展后的第一部分积中的一个数值。
可选的,所述第二部分积获取电路23包括:低位部分积获取单元231、低位选择器组单元232、高位部分积获取单元233以及高位选择器组单元234;所述低位部分积获取单元231的第一输入端以及所述高位部分积获取单元233的第一输入端,均与所述正则有符号数编码处理单元211的输出端连接,所述低位部分积获取单元231的第二输入端与所述低位选择器组单元232的输出端连接,所述高位部分积获取单元233的第二输入端与所述高位选择器组单元234的输出端连接。
其中,所述低位部分积获取单元231用于根据所述目标编码中的低位目标编码以及所述第二数据,得到符号位扩展后的第一低位部分积,并根据所述符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,所述低位选择器组单元232用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元233用于根据所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的第一高位部分积,并根据所述符号位扩展后的第一高位部分积得到目标编码的第一高位部分积,所述高位选择器组单元234用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一高位部分积中的数值。
另外,第一部分积获取电路22获取符号位扩展后的第一部分积的方法,与第二部分积获取电路23获取符号位扩展后的第二部分积的方法相同,本实施例不再赘述第二部分积获取电路23获取部分积的方法。另外,第一部分积获取电路22与第二部分积获取电路23的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述第二部分积获取电路23的具体结构。
本实施例提供的一种数据处理器,数据处理器通过低位部分积获取单元、高位部分积获取单元以及选择器组单元,根据低位目标编码及高位目标编码,得到符号位扩展后的第一部分积,并根据符号位扩展后的第一部分积得到目标编码的第一部分积,进而对目标编码的第一部分积进行累加处理,得到目标运算结果;该数据处理器能够获取的有效获取的数目较少,从而降低了数据处理器实现乘法运算或乘累加运算的复杂性;同时,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗;另外,数据处理器还可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器中的低位部分积获取单元221包括:低位目标编码输入端口2211、选通数值输入端口2212、第二数据输入端口2213以及低位部分积输出端口2214;所述低位目标编码输入端口2211用于接收所述正则有符号数编码处理单元211输入的所述第一低位目标编码,所述选通数值输入端口2212用于接收所述低位选择器组单元222选通后,得到的所述符号位扩展后的第一低位部分积中的数值,所述第二数据输入端口2213用于接收所述第二数据,所述低位部分积输出端口2214用于输出所述目标编码的第一低位部分积。
具体的,数据处理器中的低位部分积获取单元221通过低位目标编码输入端口2211,可以接收正则有符号数编码单元211输出的目标编码中的低位目标编码,并通过第二数据输入端口2213可以接收第二数据中的两个子数据(即被乘数)。可选的,低位部分积获取单元221可以根据接收到的低位目标编码,以及接收到的乘法运算或乘累加运算中的被乘数,得到低位数据对应的符号位扩展后的低位部分积,并根据符号位扩展后的低位部分积得到目标编码的第一低位部分积。可选的,若低位部分积获取单元221中的第二数据输入端口2213接收到的被乘数位宽为N,则低位部分积获取单元221得到的符号位扩展后的第一低位部分积的位宽可以等于2N。
需要说明的是,低位部分积获取单元221可以通过选通数值输入端口2212,接收低位选择器组单元222选通的不同模式的数据运算时,得到的符号位扩展后的低位部分积中的对应位数值;然后将低位部分积获取单元221当前得到的符号位扩展后的低位部分积,与选通后的对应位数值进行结合,得到符号位扩展后的第一低位部分积。
可选的,数据处理器包括所述高位部分积获取单元223,所述高位部分积获取单元223包括:高位目标编码输入端口2231、选通数值输入端口2232、第二数据输入端口2233以及高位部分积输出端口2234;所述高位目标编码输入端口2231用于接收正则有符号数编码单元211输出的高位目标编码,所述选通数值输入端口2232用于接收所述高位选择器组单元224选通后,输出的所述符号位扩展后的第一高位部分积中的数值,所述第二数据输入端口2233用于接收所述第二数据,所述高位部分积输出端口2234用于输出所述目标编码的第一高位部分积。
可以理解的是,低位部分积获取单元221获取目标编码的第一低位部分积的方法,与高位部分积获取单元223获取目标编码的第一高位部分积的方法相同,本实施例不再赘述高位部分积获取单元223获取部分积的方法。另外,低位部分积获取单元221与高位部分积获取单元223的内部电路结构可以相同,外部输出端口的功能可以类似,本实施例不再赘述高位部分积获取单元223的具体结构。
本实施例提供的一种数据处理器,数据处理器中的低位部分积获取单元可以根据低位目标编码中的每一位数值得到符号位扩展后的低位部分积,然后将符号位扩展后的低位部分积与低位选择器组单元选通的数值进行结合,得到符号位扩展后的第一低位部分积,并根据符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,进而对目标编码的第一低位部分积以及高位部分积进行累加处理,得到不同模式的数据运算结果,该数据处理器能够获取的有效获取的数目较少,从而降低了数据处理器实现乘法运算或乘累加运算的复杂性;同时,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括低位选择器组单元222,所述低位选择器组单元222包括:低位选择器2221,多个所述低位选择器2221用于对所述符号位扩展后的第一低位部分积中的数值进行选通。
具体的,上述低位选择器组单元222中包含的低位选择器2221数目,可以等于3N*(N+1),2N可以表示数据处理器当前所处理数据的位宽,该低位选择器组单元222中每一个低位选择器2221的内部电路结构可以相同。可选的,若数据处理器当前可处理2N位*2N位数据的乘法运算,则每一个正则有符号数编码单元211连接的对应(N+1)个低位部分积获取单元221中,均可以包含4N个数值生成子单元,其中2N个数值生成子单元可以连接2N个低位选择器2221,每一个数值生成子单元连接一个低位选择器2221。可选的,上述2N个低位选择器2221对应的2N个数值生成子单元,可以为符号位扩展后的第一低位部分积中高2N位数据对应的数值生成子单元,且该2N个低位选择器2221与选择器212的内部电路结构可以完全相同,同时,该2N个低位选择器2221的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若数据处理器可以处理四种不同模式的数据运算,并且数据处理器接收到的被乘数位宽是2N,则上述低位选择器2221的两个其它输入端口可以接收的信号分别为数值0,与数据处理器进行2N位*2N位数据的乘法运算时,该低位部分积获取单元221得到的对应符号位扩展后的第一低位部分积中的符号位数值。其中,(N+1)个低位部分积获取单元221可以连接(N+1)组2N个低位选择器2221,各组的2N个低位选择器2221接收到的符号位数值可以相同,也可以不相同;但是,同一组的2N个低位选择器2221接收到的对应符号位数值是相同的,并且该符号位数值可以根据每一组2N个低位选择器2221,对应连接的低位部分积获取单元221获取的符号位扩展后的第一低位部分积中的符号位数值得到。
另外,每一个低位部分积获取单元221包含的4N个数值生成子单元,其中对应N个数值生成子单元可以不连接低位选择器2221,此时,该N个数值生成子单元获取的数值,可以为数据处理器当前所处理乘法运算不同位宽的数据获取的第一低位目标编码中的数值,得到的对应符号位扩展后的第一低位部分积中的对应位数值;也可以理解为,N个数值生成子单元获取的数值可以为对应符号位扩展后的第一低位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N位数值之间的所有数值。
需要说明的是,每一个低位部分积获取单元221包含的4N个数值生成子单元中,剩余的N个数值生成子单元也可以连接N个低位选择器2221,每一个数值生成子单元可以连接1个低位选择器2221;该N个低位选择器2221与选择器212的内部电路结构可以相同,并且该N个低位选择器2221的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口;这两个其它输入端口可以接收的信号,分别为数据处理器进行N位*N位数据的乘法运算,得到的对应符号位扩展后的第一低位部分积中的符号位数值,以及数据处理器进行2N位*2N位数据的乘法运算,得到的对应符号位扩展后的第一低位部分积中对应位数值。其中,(N+1)个低位部分积获取单元221可以连接(N+1)组N个低位选择器2221,各组的N个低位选择器2221接收到的符号位数值可以相同,也可以不相同;但是,同一组的N个低位选择器2221接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N个低位选择器2221,对应连接的低位部分积获取单元221获取的符号位扩展后的第一低位部分积中的符号位数值得到。
另外,各组的N个低位选择器2221接收到的符号位扩展后的第一低位部分积中对应位数值,可以根据该组低位选择器2221所连接的低位部分积获取单元221,获取的符号位扩展后的第一低位部分积中的对应位数值确定;并且每一组的N个低位选择器2221中,每一个低位选择器2221接收到的对应位数值可以相同,也可以不同。其中,每一个低位部分积获取单元221中4N个数值生成子单元的位置分布规律,可以在上一个低位部分积获取单元221中4N个数值生成子单元位置的基础上,左移一个数值生成子单元。可选的,参与后续运算的所有目标编码的第一低位部分积中,只有第一个目标编码的第一低位部分积的位宽,可以等于第一个符号位扩展后的第一低位部分积的位宽4N;剩余的目标编码的第一低位部分积的位宽都会在上一个目标编码的第一低位部分积的基础上少一位,且最后一个目标编码的第一高位部分积的位宽可以等于(2N-1)。
可选的,所述高位选择器组单元224包括高位选择器2241,多个所述高位选择器2241用于对所述符号位扩展后的第一高位部分积中的数值进行选通。
需要说明的是,高位选择器2241选通数值的方法,与高位选择器1111ea选通数值的方法相同,本实施例对高位选择器2241选通数值的方法不再赘述。
本实施例提供的一种数据处理器,数据处理器中的低位选择器组单元可以选通低位部分积中的数值,得到符号位扩展后的第一低位部分积,进而根据符号位扩展后的第一低位部分积得到目标编码的第一部分积,并通过压缩电路对目标编码的第一部分积进行累加处理,得到不同模式的目标运算结果;该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
图5为另一实施例提供的一种数据处理器的具体结构示意图,其中,数据处理器包括第一压缩电路24,所述第一压缩电路24包括:修正华莱士树组单元241和累加单元242,所述修正华莱士树组单元241的输出端与所述累加单元242的输入端连接;所述修正华莱士树组单元241用于对不同模式的数据运算处理时,获取的所有目标编码的第一部分积中的每一列数值进行累加处理,得到累加运算结果,所述累加单元242用于对所述累加运算结果进行加法运算。
具体的,上述修正华莱士树组单元241可以对第一部分积获取电路22得到的目标编码的第一低位部分积,以及目标编码的第一高位部分积中的每一列数值进行累加处理,并通过累加单元242对修正华莱士树组单元241得到的两个运算结果进行累加处理,得到目标运算结果。其中,通过修正华莱士树组单元241进行累加处理时,所有目标编码的第一部分积的分布规律,可以表征为每一行对应目标编码的第一部分积中最低位数值所处位置,比下一行对应目标编码的第一部分积中最低位数值所处位置向右错开一位数值,但是,每一个对应目标编码的第一部分积中的最高位数值,均与第一个目标编码的第一部分积中最高位数值位于同一列。可选的,修正华莱士树组单元241可以按照所有目标编码的第一部分积的分布规律,对所有目标编码的第一部分积中的每一列数值进行累加处理。可选的,上述修正华莱士树组单元241得到的两个运算结果可以包括和位输出信号Sum与进位输出信号Carry。
可选的,所述第二压缩电路25包括:修正华莱士树组单元251和累加单元252,所述修正华莱士树组单元251的输出端与所述累加单元252的输入端连接;所述修正华莱士树组单元251用于对不同模式的数据运算处理时,获取的所有目标编码的第二部分积中的每一列数值进行累加处理,得到累加运算结果,所述累加单元252用于对所述累加运算结果进行加法运算。
需要说明的是,第一压缩电路24对目标编码的第一部分积进行压缩处理的方法,与第二压缩电路25对目标编码的第二部分积进行压缩处理的方法相同,对此本实施例不再赘述第二压缩电路25的压缩方法。另外,第一压缩电路24和第二压缩电路25的内部结构,以及外部端口的功能完全相同,本实施例不再赘述第二压缩电路25的具体结构。
本实施例提供的一种数据处理器,数据处理器通过修正华莱士树组单元可以对目标编码的第一低位部分积和高位部分积进行累加处理得到累加运算结果,并通过累加单元对累加运算结果进行累加处理,得到目标运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
在其中一个实施例中,继续如图5所示数据处理器的具体结构示意图,其中,数据处理器包括所述修正华莱士树组单元241,该修正华莱士树组单元241包括:低位华莱士树子单元2411、选择器2412以及高位华莱士树子单元2413,所述低位华莱士树子单元2411的输出端与所述选择器2412的输入端连接,所述选择器2412的输出端与所述高位华莱士树子单元2413的输入端连接;其中,多个所述低位华莱士树子单元2411用于对所述目标编码的第一部分积中的每一列数值进行累加运算,所述选择器2412用于选通所述高位华莱士树子单元2413接收的进位输入信号,多个所述高位华莱士树子单元2413用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果。
具体的,每一个低位华莱士树子单元2411的电路结构,可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现;每一个高位华莱士树子单元2413的电路结构,也可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现;另外,低位华莱士树子单元2411和高位华莱士树子单元2413,均可以理解为是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,修正华莱士树组单元241中高位华莱士树子单元2413的数目,可以等于数据处理器当前可处理乘法运算或乘累加运算时被乘数的位宽N,还可以等于低位华莱士树子单元2411的数目,并且各低位华莱士树子单元2411之间可以串行连接,各高位华莱士树子单元2413之间也可以串行连接。可选的,最后一个低位华莱士树子单元2411的输出端与选择器2412的输入端连接,选择器2412的输出端与第一个高位华莱士树子单元2411的输入端连接。可选的,修正华莱士树组单元241中,每一个低位华莱士树子单元2411可以对所有目标编码的部分积的对应列数值进行加法处理;每一个低位华莱士树子单元2411可以输出两个信号,即进位信号Carryi与一个和位信号Sumi;其中,i可以表示每一个低位华莱士树子单元2411对应的编号,第一个低位华莱士树子单元2411的编号为0。可选的,每一个低位华莱士树子单元2411接收到输入信号的数目,可以等于目标编码的第一部分积的数目。其中,修正华莱士树组单元241中,高位华莱士树子单元2413与低位华莱士树子单元2411的数目之和,可以等于2N;所有目标编码的第一部分积中,从最低列至最高列的总列数可以等于2N,N个低位华莱士树子单元2411可以对所有目标编码的第一部分积的低N列中,每一列进行累加运算,N个高位华莱士树子单元2413可以对所有目标编码的第一部分积的高N列中的每一列进行累加运算。
可选的,第二压缩电路25中的修正华莱士树组单元251包括:低位华莱士树子单元2511、选择器2512以及高位华莱士树子单元2513,所述低位华莱士树子单元2511的输出端与所述选择器2512的输入端连接,所述选择器2512的输出端与所述高位华莱士树子单元2513的输入端连接;其中,多个所述低位华莱士树子单元2511用于对所述目标编码的第二部分积中的每一列数值进行累加运算,所述选择器2512用于选通所述高位华莱士树子单元2513接收的进位输入信号,多个所述高位华莱士树子单元2513用于对所述目标编码的第二部分积中的每一列数值进行累加运算得到所述累加运算结果。
需要说明的是,第一压缩电路24中的修正华莱士树组单元241的电路结构及其功能,与第二压缩电路25中的修正华莱士树组单元251的电路结构及其功能相同,本实施例不再赘述修正华莱士树组单元251的具体结构。
本实施例提供的一种数据处理器,数据处理器通过修正华莱士树组单元可以对目标编码的部分积进行累加处理得到两路输出信号,并对该两路输出信号进行累加处理,得到不同模式的数据运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
另一实施例提供的一种数据处理器,其中,数据处理器包括所述累加单元242,该累加单元242包括:加法器2421,所述加法器2421用于对所述累加运算结果进行加法运算。
具体的,加法器2421可以为不同位宽的加法器。可选的,加法器2421可以接收修正华莱士树组单元241输出的两路信号,对两路输出信号进行加法运算,输出数据处理器当前所处理模式的数据运算结果。可选的,上述加法器2421可以为超前进位加法器。
本实施例提供的一种数据处理器,数据处理器通过累加单元可以对修正华莱士树组单元输出的两路信号进行累加处理,输出不同模式的数据运算结果,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
在其中一个实施例中,数据处理器包括所述加法器2421,该加法器2421包括:进位信号输入端口2421a、和位信号输入端口2421b以及运算结果输出端口2421c;所述进位信号输入端口2421a用于接收进位信号,和位信号输入端口2421b用于接收和位信号,运算结果输出端口2421c用于输出进位信号与和位信号进行累加处理的结果。
具体的,加法器2421可以通过进位信号输入端口2421a接收修正华莱士树组单元241输出的进位信号Carry,通过和位信号输入端口2421b接收修正华莱士数组电路241输出的和位信号Sum,并将进位信号Carry与和位信号Sum进行累加的结果,通过运算结果输出端口2421c输出。
需要说明的是,运算处理过程中,数据处理器可以采用不同位宽的加法器2421,对修正华莱士树组单元241输出的进位输出信号Carry,以及和位输出信号Sum进行加法运算,其中,上述加法器2421可处理数据的位宽,可以等于数据处理器需要进行乘法运算或乘累加运算时被乘数位宽的2倍。
本实施例提供的一种数据处理器,数据处理器通过累加单元可以对修正华莱士树组单元输出的两路信号进行累加运算,输出不同模式的数据运算结果,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
图6为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图1和图3所示的数据处理器进行处理,本实施例涉及的是实现四种不同模式的数据运算的过程。如图6所示,该方法包括:
S101、接收待处理数据和功能选择模式信号,其中,所述功能选择模式信号用于指示数据处理器当前可处理不同模式的数据运算。
具体的,上述待处理数据可以包括乘法运算或乘累加运算时的乘数和被乘数。可选的,数据处理器可以通过第一修正编码子电路以及第二修正编码子电路,分别接收一个待处理数据,该待处理数据可以包括两个待处理子数据,这两个待处理子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据。可选的,上述待处理数据中的两个子数据均可以拼接后作为一个整体,输入至第一修正编码子电路和第二修正编码子电路,还可以分开同时输入至第一修正编码子电路和第二修正编码子电路。其中,上述待处理子数据可以为定点数,且位宽可以为2N,两个待处理子数据拼接后得到的数据位宽可以为4N。
需要说明的是,第一乘法运算电路以及第二乘法运算电路均可以接收到相同的功能选择模式,该功能选择模式信号可以有四种不同信号,四种功能选择模式信号分别对应数据处理器可处理的四种模式的数据运算,四种模式的数据运算可以包括N位*N位数据的乘法运算、N位*N位数据的乘累加运算、2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。其中,数据处理器根据接收到的不同功能选择模式信号,可以确定当前可处理具体模式的数据运算。另外,一个待处理数据中的一个待处理子数据可以作为数据处理器处理乘法运算或乘累加运算处理时的乘数,另一个待处理子数据可以作为数据处理器处理乘法运算或乘累加运算处理时的被乘数。
S102、根据所述功能选择模式信号,判断所述待处理数据是否需要进行拆分处理。
具体的,数据处理器可以根据接收到的功能选择模式信号,确定数据处理器当前可处理的数据位宽,以判断是否需要对待处理数据进行拆分处理。其中,拆分处理可以表征为将待处理数据分成多组相同位宽的数据。
可选的,上述S102中根据所述功能选择模式信号,判断所述待处理数据是否需要进行拆分处理的步骤,可以包括:根据所述功能选择模式信号,判断所述待处理数据的位宽与数据处理器当前可处理的对应模式运算的数据位宽是否相等。
可选的,上述S102中根据所述功能选择模式信号,判断所述待处理数据是否需要进行拆分处理的步骤之后,所述方法还可以包括:若所述待处理数据不需要进行拆分处理,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码。
需要说明的是,上述根据功能选择模式信号,判断待处理数据是否需要进行拆分处理,实际上可以理解为,根据功能选择模式信号,判断待处理数据的位宽与数据处理器当前可处理的对应模式运算的数据位宽是否相等,若相等,则不需要对待处理数据进行拆分处理,否则,需要对待处理数据进行拆分处理。例如,数据处理器中的第一修正编码子电路以及第二修正编码子电路分别接收到的两个数据的位宽均为N比特,且数据处理器可以当前可处理N位*N位的乘法运算,此时,表征待处理数据的位宽与数据处理器当前可处理的对应模式运算的数据位宽相等。其中,上述正则有符号数编码处理可以表征为通过数值0,-1和1编码的数据处理过程。可选的,目标编码的位宽可以等于数据处理器当前所处理数据的位宽加1。
S103、若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据。
例如,数据处理器中的第一修正编码子电路以及第二修正编码子电路分别接收到的两个数据的位宽均为2N比特,且数据处理器可以当前可处理N位*N位的乘法运算,此时,第一修正编码子电路以及第二修正编码子电路分别可以自动将接收到的两个数据均分成高N位数据以及低N位数据,以满足数据处理器当前可处理的对应模式运算的数据位宽。
S104、对所述拆分后的数据进行正则有符号数编码处理,得到目标编码。
可选的,上述S104中对所述拆分后的数据进行正则有符号数编码处理,得到目标编码的步骤,可以包括:将所述拆分后的数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
具体的,若数据处理器接收到的待处理数据的位宽为2N,数据处理器当前可处理的数据位宽为N,则数据处理器中的第一修正编码子电路以及第二修正编码子电路,均可以自动将2N位数据拆分成高N位数据以及低N位数据,同时,分别对高N位数据和低N位数据进行正则有符号数编码处理,得到对应的高位目标编码以及低位目标编码。可选的,上述待处理数据进行拆分处理后可以包括待处理的高N位数据和待处理的低N位数据。其中,若待处理数据的位宽为2N,则高N位数据可以称为待处理的高位数据,低N位数据可以称为待处理的高位数据。
S105、根据所述目标编码以及所述拆分后的数据进行转换处理,得到符号位扩展后的部分积。
具体的,上述转换处理可以表征为,基于乘法运算中的被乘数,将目标编码中的数值转换成符号位扩展后的部分积。可选的,符号位扩展后的部分积的位宽可以等于数据处理器当前所处理数据位宽的2倍。
S106、根据所述功能选择模式信号,判断对所述符号位扩展后的部分积是否需要进行交换处理。
可选的,上述S106中根据所述功能选择模式信号,判断对所述符号位扩展后的部分积是否需要进行交换处理的步骤,可以包括:根据所述功能选择模式信号,判断数据处理器当前所处理的数据位宽是否相同。
具体的,当数据处理器处理2N位*N位数据的乘累加运算时,部分积交换电路才可以根据实际需求,将第一修正编码子电路得到的符号位扩展后的第一低位部分积或符号位扩展后的第一高位部分积,与第二修正编码子电路得到的符号位扩展后的第二低位部分积符号位扩展后的或第二高位部分积进行交换,还可以理解为,数据处理器在处理其它三种模式的数据运算时,部分积交换电路为悬空状态,符号位扩展后的低位部分积以及符号位扩展后的高位部分积不做对应交换处理。同时,第一数据和第二数据中的两个子数据位宽均为2N,若数据处理器当前可处理一个N位*N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中有一个数据为0,另一个数据包括的两个子数据中的高位数值均为0,或者低位数值均为0,根据实际需求,此时第一数据和第二数据可以按照原始数据进行计算;若数据处理器当前可处理一个2N位*2N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中有一个数据为0,另一个数据的两个子数据中高位数值和低位数值均为非0数值;若数据处理器当前可处理两个2N位*2N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中不存在数据0。
需要说明的是,判断数据处理器当前所处理的数据位宽是否相同,实际上可以表征为,数据处理器当前所处理的被乘数位宽以及乘数位宽是否相等。
可选的,上述S106中在根据所述功能选择模式信号,判断对所述符号位扩展后的部分积是否需要进行交换处理的步骤之后,所述方法还可以包括:若需要对所述符号位扩展后的部分积进行交换处理,则对所述符号位扩展后的部分积中的高位部分积或低位部分积进行交换处理。
S107、若不需要对所述符号位扩展后的部分积进行交换处理,则将所述符号位扩展后的部分积作为目标编码的部分积。
具体的,若不需要对符号位扩展后的部分积进行交换处理,则第一修正编码子电路可以将得到符号位扩展后的第一部分积作为目标编码的第一部分积,第二修正编码子电路可以将得到符号位扩展后的第二部分积作为目标编码的第二部分积。
S108、对所述目标编码的部分积进行压缩处理,得到目标运算结果。
具体的额,数据处理器可以对所有目标编码的部分积中的列数值进行累加处理,得到目标运算结果。可选的,目标运算结果的位宽可以等于数据处理器当前所处理数据位宽的2倍本实施例提供的一种数据处理方法,接收待处理数据和功能选择模式信号,根据功能选择模式信号,判断待处理数据是否需要进行拆分处理,若待处理数据需要进行拆分处理,则对待处理数据进行拆分处理,得到拆分后的数据,对拆分后的数据进行正则有符号数编码处理,得到目标编码,根据目标编码以及拆分后的数据进行转换处理,得到符号位扩展后的部分积,根据功能选择模式信号,判断对符号位扩展后的部分积是否需要进行交换处理,若不需要对符号位扩展后的部分积进行交换处理,则将符号位扩展后的部分积作为目标编码的部分积,对目标编码的部分积进行压缩处理,得到目标运算结果,该方法通过数据处理器不仅可以实现乘法运算,还可以实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗;此外,该方法还可以对接收到的数据进行正则有符号数编码处理,得到的有效部分积的数目较少,从而降低了实现乘法运算或乘累加运算的复杂性。
作为其中一个实施例,上述S104中对所述拆分后的数据进行正则有符号数编码处理,得到目标编码的步骤,所述方法可以包括:
S1041、对所述拆分后的数据进行正则有符号数编码处理,得到中间编码。
具体的,上述进行正则有符号数编码处理的拆分后的数据可以为乘法运算或乘累加运算中的乘数。
S1042、根据所述中间编码以及所述功能选择模式信号,得到所述目标编码。
具体的,正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,数据处理器中的第一修正编码子电路或第二修正编码子电路接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,第一修正编码子电路或第二修正编码子电路对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则第一修正编码子电路或第二修正编码子电路可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于数据处理器当前所处理数据的位宽加1。
另外,若数据处理器接收到的数据位宽为2N,且当前可处理N位数据运算,则数据处理器中的第一修正编码子电路或第二修正编码子电路,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若数据处理器当前可处理2N位数据运算,则数据处理器中的第一修正编码子电路或第二修正编码子电路,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
本实施例提供的一种数据处理方法,对所述拆分后的数据进行正则有符号数编码处理,得到中间编码,根据所述中间编码以及所述功能选择模式信号,得到所述目标编码,该方法能够对多种不同位宽的数据进行乘法运算以及乘累加运算,有效减少了数据处理器占用AI芯片的面积;同时,该方法能够对数据进行正则有符号数编码处理,降低运算过程中获取的有效部分积的数目,从而降低乘法运算或乘累加运算的复杂性,提高了运算效率。
在其中一个实施例中,上述S105中根据所述目标编码以及所述拆分后的数据进行转换处理,得到符号位扩展后的部分积的步骤,可以包括:
S1051、根据所述目标编码以及所述拆分后的数据进行转换处理,得到原始部分积。
具体的,若目标编码中的数值为-1,且拆分后的数据为X,则原始部分积可以为-X,若目标编码中的数值为1,则原始部分积可以为X,若目标编码中的数值为0,则原始部分积可以为0。
S1052、对所述原始部分积进行符号位扩展处理,得到所述符号位扩展后的部分积。
具体的,原始部分积的位宽可以等于数据处理器当前所处理数据的位宽N,符号位扩展后的部分积可以等于数据处理器当前所处理数据位宽N的2倍。其中,原始部分积中的N位数值可以为符号位扩展后的部分积中的低N位数值,符号位扩展后的部分积中的高N位数值可以为原始部分积中的最高位数值,即原始部分积中的符号位数值。
本实施例提供的一种数据处理方法,该方法能够获取的有效部分积的数目较少,从而降低乘法运算或乘累加运算的复杂性。
作为其中一个实施例,上述S108中对所述目标编码的部分积进行压缩处理,得到目标运算结果的步骤,可以包括:
S1081、对所述目标编码的部分积进行累加处理,得到中间运算结果。
例如,对低位目标编码(位宽为N+1)中最低位数值至最高位数值进行编号,最低位数值编号为1,最高位数值的编号为N+1,则对应的目标编码的低位部分积的编号也类似,同时,对高位目标编码(位宽为M+1)中最低位数值至最高位数值进行编号,最低位数值编号为1,最高位数值的编号为M+1,则对应的目标编码的高位部分积的编号也类似,所有目标编码的低位部分积和所有目标编码的部分积的分布规律可以表征为编号为1的目标编码的高位部分积的最低位数值,与编号为N+1的目标编码的低位部分积的次低位数值位于同一列,在第一个目标编码的高位部分积的基础上,其它目标编码的高位部分积的次低位数值均与下一个目标编码的高位部分积的最低位数值位于同一列,在第一个目标编码的低位部分积的基础上,其它目标编码的低位部分积的次低位数值均与下一个目标编码的低位部分积的最低位数值位于同一列。
需要说明的是,修正华莱士树组单元可以对所有目标编码的部分积中的每一列数值进行累加处理。
S1062、通过累加单元对所述中间运算结果进行累加处理,得到所述目标运算结果。
可选的,上述S1062中通过累加单元对所述中间运算结果进行累加处理,得到所述目标运算结果的步骤,具体可以包括:低位华莱士树子单元对所有目标编码的部分积中的列数值进行累加处理,得到累加运算结果;选择器根据所述功能选择模式信号对所述累加运算结果进行选通,得到进位选通信号;高位华莱士树子单元根据所述进位选通信号以及所述目标编码的部分积中的列数值进行累加处理,得到所述目标运算结果。
具体的,按照所有目标编码的低位部分积和所有目标编码的高位部分积的分布规律可知,所有目标编码的部分积对应数值的总列数为2N(N为数据处理器当前所处理数据的位宽),从最低位数值开始每一列数值对应的编号可以为0,…,2N-1,其中,编号0至N-1可以称低N列数值。可选的,累加运算结果可以为最后一个高位华莱士树子单元输出的进位输出信号Cout。
需要说明的是,N个低位华莱士树子单元可以按照编号顺序对低N列数值进行累加运算,得到累加运算结果。可选的,累加运算结果可以包括每一个华莱士树子单元的进位输出信号Carry,Sum,以及最后一个高位华莱士树子单元的输出信号Cout。
可以理解的是,修正华莱士树组单元中的选择器可以根据接收到的功能选择模式信号,选通最后一个低位华莱士树子单元的输出信号Cout或数值0,得到进位选通信号。
在本实施例中,按照所有目标编码的部分积的分布规律可知,所有目标编码的部分积对应数值的总列数为2N(N为数据处理器当前所处理数据的位宽),从最低位数值开始每一列数值对应的编号可以为0,…,2N-1,其中,编号N至2N-1可以称高N列数值。
需要说明的是,N个高位华莱士树子单元可以按照编号顺序对高N列数值进行累加运算,输出累加运算结果。其中,第一个高位华莱士树子单元接收到的进位输入信号可以为选择器输出的进位选通信号。若数据处理器当前处理8位数据运算,则对应的修正压缩子电路的电路结构图可以参见图7所示。
本实施例提供的一种数据处理方法,通过修正华莱士树组单元对目标编码的部分积进行累加处理,得到中间运算结果,通过累加电路对所述中间运算结果进行累加处理,得到目标运算结果,该方法能够根据数据处理器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,有效减少了数据处理器占用AI芯片的面积;同时,该方法能够获取的有效部分积的数目较少,从而降低乘法运算或乘累加运算的复杂性,提高运算效率;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,有效降低了数据处理器的功耗。
图8为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图2和图5所示的数据处理器进行处理,本实施例涉及的是实现四种不同模式的数据运算的过程。如图8所示,该方法包括:
S201、接收待处理数据以及功能选择模式信号,其中,所述功能选择模式信号用于指示数据处理器当前可处理的对应模式的数据运算。
具体的,数据处理器可以通过正则有符号数编码电路接收一个待处理数据,通过第一部分积获取电路以及第二部分积获取电路分别接收另一个待处理数据,并且正则有符号数编码电路、第一部分积获取电路以及第二部分积获取电路均可以同时接收同一个功能选择模式信号。可选的,待处理数据可以包括两个待处理子数据,这两个待处理子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据。可选的,一个待处理数据中的两个待处理子数据可以拼接后作为一个整体,输入至正则有符号数编码电路,还可以分开同时输入至正则有符号数编码电路,另一个待处理数据中的两个待处理子数据可以拼接后作为一个整体,同时输入至第一部分积获取电路和第二部分积获取电路,还可以分开同时输入至第一部分积获取电路和第二部分积获取电路。其中,上述待处理子数据可以为定点数,且位宽可以为2N,两个待处理子数据拼接后得到的数据位宽可以为4N。
需要说明的是,上述功能选择模式信号可以有四种,四种功能选择模式信号分别对应数据处理器可处理的四种模式的数据运算,四种模式的数据运算可以包括N位*N位数据的乘法运算、N位*N位数据的乘累加运算、2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。另外,一个待处理数据中的一个待处理子数据可以作为数据处理器处理乘法运算或乘累加运算处理时的乘数,另一个待处理子数据可以作为数据处理器处理乘法运算或乘累加运算处理时的被乘数。
S202、根据所述功能选择模式信号,对所述待处理数据进行正则有符号数编码处理,得到目标编码。
可选的,上述S202中根据所述功能选择模式信号,对所述待处理数据进行正则有符号数编码处理,得到目标编码的步骤,包括:根据所述功能选择模式信号,将所述待处理数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
具体的,若数据处理器接收到的待处理数据的位宽为2N,数据处理器当前可处理的数据位宽为N,则数据处理器中的正则有符号数编码电路可以自动将2N位数据拆分成高N位数据以及低N位数据,同时,分别对高N位数据和低N位数据进行正则有符号数编码处理,得到对应的高位目标编码以及低位目标编码。
进一步地,正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,正则有符号数编码电路接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,正则有符号数编码电路对乘数进行正则有符号数编码处理后,得到的新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则正则有符号数编码电路可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于数据处理器当前所处理数据的位宽加1。
另外,若数据处理器接收到的数据位宽为2N,且当前可处理N位数据运算,则数据处理器中的正则有符号数编码电路,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若数据处理器当前可处理2N位数据运算,则数据处理器中的正则有符号数编码电路,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。
S203、根据所述目标编码以及所述待处理数据,得到目标编码的第一部分积以及目标编码的第二部分积。
具体的,数据处理器可以根据实际运算需求,以及待处理子数据(乘法运算或乘累加运算中的乘数)得到的对应目标编码与对应的待处理子数据(乘法运算或乘累加运算中的被乘数),得到目标编码的第一部分积以及目标编码的第二部分积。其中,数据处理器可以通过第一部分积获取电路得到目标编码的第一部分积,通过第二部分积获取电路得到目标编码的第二部分积。
S204、根据所述功能选择模式信号对所述目标编码的第一部分积进行压缩处理,得到第一目标运算结果。
可选的,上述S204中根据所述功能选择模式信号对所述目标编码的第一部分积进行压缩处理,得到第一目标运算结果的步骤,包括:低位华莱士树子单元对所有目标编码的第一部分积中的列数值进行累加处理,得到第一累加运算结果;选择器根据所述功能选择模式信号对所述第一累加运算结果进行选通,得到第一进位选通信号;高位华莱士树子单元根据所述第一进位选通信号以及所述目标编码的第一部分积中的列数值进行累加处理,得到所述第一目标运算结果。
具体的,数据处理器可以通过第一压缩电路中的修正华莱士树组单元对目标编码的第一部分积进行累加运算得到第一累加运算结果,并且根据接收到的功能选择模式信号对应的数据运算模式确定选通第一进位选通信号,并将第一进位选通信号作为下一次加法运算的进位输入信号,以对目标编码的第一部分积中的列数值进行加法运算,得到第一目标运算结果。可选的,第一累加运算结果可以包括修正华莱士树组单元进行累加运算,得到的和位输出信号Sum与进位输出信号Carry,其中,和位输出信号Sum与进位输出信号Carry的位宽可以相同。另外,累加单元相当于对和位输出信号Sum与进位输出信号Carry进行累加运算。可选的,上述第一目标运算结果可以为数据0,还可以为非0数据。
需要说明的是,数据处理器可以通过累加单元中的加法器对修正华莱士树组单元输出的进位输出信号Carry与和位输出信号Sum进行加法运算,输出加法运算结果。可选的,修正华莱士树组单元中每一个华莱士树子单元可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=0,…,2N-1,i为每一个华莱士树子单元的对应编号,编号从0开始)。可选的,加法器接收到的Carry={[Carry0:Carry2N-2],0},也就是说,加法器接收到的进位输出信号Carry的位宽为N,进位输出信号Carry中前2N-1位数值对应修正华莱士树组单元中前2N-1个华莱士树子单元的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器接收到的和位输出信号Sum的位宽为N,和位输出信号Sum中的数值可以等于修正华莱士树组单元中每一个华莱士树子单元的和位输出信号。
在本实施例中,按照所有目标编码的低位部分积和所有目标编码的高位部分积的分布规律可知,所有目标编码的部分积对应数值的总列数为2N(N为数据处理器当前所处理数据的位宽),从最低位数值开始每一列数值对应的编号可以为0,…,2N-1,其中,编号0至N-1可以称低N列数值。可选的,累加运算结果可以为最后一个高位华莱士树子单元输出的进位输出信号Cout。
需要说明的是,N个低位华莱士树子单元可以按照编号顺序对低N列数值进行累加运算,得到累加运算结果。可选的,累加运算结果可以包括每一个华莱士树子单元的进位输出信号Carry,Sum,以及最后一个高位华莱士树子单元的输出信号Cout。
可以理解的是,修正华莱士树组单元中的选择器可以根据接收到的功能选择模式信号,选通最后一个低位华莱士树子单元的输出信号Cout或数值0,得到进位选通信号。
在本实施例中,按照所有目标编码的部分积的分布规律可知,所有目标编码的部分积对应数值的总列数为2N(N为数据处理器当前所处理数据的位宽),从最低位数值开始每一列数值对应的编号可以为0,…,2N-1,其中,编号N至2N-1可以称高N列数值。
需要说明的是,N个高位华莱士树子单元可以按照编号顺序对高N列数值进行累加运算,输出累加运算结果。其中,第一个高位华莱士树子单元接收到的进位输入信号可以为选择器输出的第一进位选通信号。
S205、根据所述功能选择模式信号对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果。
可选的,上述S205中根据所述功能选择模式信号对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果的步骤,包括:低位华莱士树子单元对所有目标编码的第二部分积中的列数值进行累加处理,得到第二累加运算结果;选择器根据所述功能选择模式信号对所述第二累加运算结果进行选通,得到第二进位选通信号;高位华莱士树子单元根据所述第二进位选通信号以及所述目标编码的第二部分积中的列数值进行累加处理,得到所述第二目标运算结果。
进一步地,数据处理器可以通过第二压缩电路中的修正华莱士树组单元对目标编码的第二部分积进行累加运算得到第二累加运算结果,并根据功能选择模式信号以及第二累加运算结果选通第二进位选通信号,再根据第二进位选通信号对第二累加运算结果进行累加处理,得到第二目标运算结果。可选的,上述第二目标运算结果可以为数据0,还可以为非0数据。
在本实施例中,数据处理器可以同步处理步骤S204和步骤S205,对这两个步骤的先后顺序本实施例不做任何限定。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能选择模式信号确定当前可处理具体模式的数据运算,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗;此外,该方法能够对接收到的待处理数据进行正则有符号数编码处理,使得获取的有效部分积的数目较少,从而降低乘法运算或乘累加运算的复杂性,提高运算效率。
在其中一个实施例中,上述S203中根据所述目标编码以及所述待处理数据,得到目标编码的第一部分积以及目标编码的第二部分积的步骤,包括:
S2031、根据所述第一目标编码以及所述待处理数据进行转换处理,得到第一原始部分积。
具体的,若第一目标编码中的数值为-1,且待处理数据为X,则第一原始部分积可以为-X,若第一目标编码中的数值为1,则第一原始部分积可以为X,若第一目标编码中的数值为0,则第一原始部分积可以为0。
S2032、根据所述第一原始部分积以及所述待处理数据进行符号位扩展处理,得到所述目标编码的第一部分积。
具体的,第一原始部分积的位宽可以等于数据处理器当前所处理数据的位宽N,符号位扩展后的第一部分积可以等于数据处理器当前所处理数据位宽N的2倍。其中,第一原始部分积中的N位数值可以为符号位扩展后的第一部分积中的低N位数值,符号位扩展后的第一部分积中的高N位数值可以为第一原始部分积中的最高位数值,即第一原始部分积中的符号位数值。
S2033、根据所述第二目标编码以及所述待处理数据进行所述转换处理,得到第二原始部分积。
S2034、根据所述第二原始部分积以及所述待处理数据进行符号位扩展处理,得到所述目标编码的第二部分积。
可选的,数据处理器可以对步骤S2031和S2032,与步骤S2033和S2034之间可以同步处理,且对处理顺序并不做任何限定。
本实施例提供的一种数据处理方法,该方法能够获取的有效部分积的数目较少,从而降低乘法运算或乘累加运算的复杂性。
本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的数据处理器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上数据处理器时,数据处理器间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图9为组合处理装置的示意图。
其它处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。
可选的,该结构如图10所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图11所示,图11提供了一种板卡,上述板卡除了包括上述芯片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 (27)

1.一种数据处理器,其特征在于,所述数据处理器包括:正则有符号数编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路,所述正则有符号数编码电路包括正则有符号数编码处理单元,所述正则有符号数编码处理单元的输出端与所述第一部分积获取电路的第一输入端,所述正则有符号数编码处理单元的输出端与所述第二部分积获取电路的第一输入端连接,所述第一部分积获取电路的输出端与所述第一压缩电路的第一输入端连接,所述第二部分积获取电路的输出端与所述第二压缩电路的第一输入端连接;
所述正则有符号数编码处理单元用于根据功能选择模式信号确定所述数据处理器当前可处理的数据位宽,并根据所述数据位宽对接收到的第一数据进行正则有符号数编码处理得到目标编码;所述第一部分积获取电路用于接收第二数据,并根据所述目标编码以及所述第二数据确定符号位扩展后的第一部分积,根据所述符号位扩展后的第一部分积得到目标编码的第一部分积;所述第二部分积获取电路用于接收所述第二数据,并根据所述目标编码以及所述第二数据确定符号位扩展后的第二部分积,根据所述符号位扩展后的第二部分积得到目标编码的第二部分积;所述第一压缩电路用于对所述目标编码的第一部分积进行累加处理;所述第二压缩电路用于对所述目标编码的第二部分积进行累加处理;所述第一数据为乘数,所述第二数据为被乘数。
2.根据权利要求1所述的数据处理器,其特征在于,所述正则有符号数编码处理单元中包括第一输入端,用于接收所述功能选择模式信号,所述第一部分积获取电路和所述第二部分积获取电路均包括第二输入端,用于接收所述功能选择模式信号;所述第一压缩电路和所述第二压缩电路均包括第二输入端,用于接收所述功能选择模式信号;所述功能选择模式信号用于确定所述数据处理器当前处理不同模式的数据运算。
3.根据权利要求1或2所述的数据处理器,其特征在于,所述正则有符号数编码处理单元包括:第一数据输入端口、功能选择模式信号输入端口以及目标编码输出端口,所述第一数据输入端口用于接收进行正则有符号数编码处理的所述第一数据,所述功能选择模式信号输入端口用于接收所述功能选择模式信号,所述目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后,得到的所述目标编码。
4.根据权利要求1至3中任一项所述的数据处理器,其特征在于,所述第一部分积获取电路包括:低位部分积获取单元、低位选择器组单元、高位部分积获取单元以及高位选择器组单元;所述低位部分积获取单元的第一输入端以及所述高位部分积获取单元的第一输入端,均与所述正则有符号数编码处理单元的输出端连接,所述低位部分积获取单元的第二输入端与所述低位选择器组单元的输出端连接,所述高位部分积获取单元的第二输入端与所述高位选择器组单元的输出端连接;
其中,所述低位部分积获取单元用于根据所述目标编码中的低位目标编码以及所述第二数据,得到符号位扩展后的第一低位部分积,并根据所述符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,所述低位选择器组单元用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元用于根据所述目标编码中的高位目标编码以及所述第二数据,所述高位选择器组单元用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一高位部分积中的数值。
5.根据权利要求4所述的数据处理器,其特征在于,所述低位部分积获取单元包括:低位目标编码输入端口、选通数值输入端口、第二数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述正则有符号数编码处理单元输入的第一低位目标编码,所述选通数值输入端口用于接收所述低位选择器组单元选通后,得到的所述符号位扩展后的第一低位部分积中的数值,所述第二数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出所述目标编码的第一低位部分积。
6.根据权利要求4所述的数据处理器,其特征在于,所述高位部分积获取单元包括:高位目标编码输入端口、选通数值输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述正则有符号数编码处理单元输入的第一高位目标编码,所述选通数值输入端口用于接收所述高位选择器组单元选通后,得到的所述符号位扩展后的第一高位部分积中的数值,所述第二数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所述目标编码的第一高位部分积。
7.根据权利要求4所述的数据处理器,其特征在于,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对所述符号位扩展后的第一低位部分积中的数值进行选通。
8.根据权利要求4所述的数据处理器,其特征在于,所述高位选择器组单元包括:高位选择器,所述低位选择器用于对所述符号位扩展后的第一高位部分积中的数值进行选通。
9.根据权利要求1至3中任一项所述的数据处理器,其特征在于,所述第二部分积获取电路包括:低位部分积获取单元、低位选择器组单元、高位部分积获取单元以及高位选择器组单元;所述低位部分积获取单元的第一输入端以及所述高位部分积获取单元的第一输入端,均与所述正则有符号数编码处理单元的输出端连接,所述低位部分积获取单元的第二输入端与所述低位选择器组单元的输出端连接,所述高位部分积获取单元的第二输入端与所述高位选择器组单元的输出端连接;
其中,所述低位部分积获取单元用于根据所述目标编码中的低位目标编码以及所述第二数据,得到符号位扩展后的第一低位部分积,并根据所述符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,所述低位选择器组单元用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元用于根据所述目标编码中的高位目标编码以及所述第二数据,得到符号位扩展后的第一高位部分积,并根据所述符号位扩展后的第一高位部分积得到目标编码的第一高位部分积,所述高位选择器组单元用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一高位部分积中的数值。
10.根据权利要求1至3中任一项所述的数据处理器,其特征在于,所述第一压缩电路包括:修正华莱士树组单元和累加单元,所述修正华莱士树组单元的输出端与所述累加单元的输入端连接;所述修正华莱士树组单元用于对不同模式的数据运算处理时,获取的所有目标编码的第一部分积中的每一列数值进行累加处理,得到累加运算结果,所述累加单元用于对所述累加运算结果进行加法运算。
11.根据权利要求10所述的数据处理器,其特征在于,所述修正华莱士树组单元包括:低位华莱士树子单元、选择器以及高位华莱士树子单元,所述低位华莱士树子单元的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子单元的输入端连接;其中,所述低位华莱士树子单元用于对所述目标编码的第一部分积中的每一列数值进行累加运算,所述选择器用于选通所述高位华莱士树子单元接收的进位输入信号,所述高位华莱士树子单元用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果。
12.根据权利要求10所述的数据处理器,其特征在于,所述累加单元包括:加法器,所述加法器用于对所述累加运算结果进行加法运算。
13.根据权利要求12所述的数据处理器,其特征在于,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述运算结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的目标运算结果。
14.根据权利要求1至3中任一项所述的数据处理器,其特征在于,第二压缩电路包括:修正华莱士树组单元和累加单元,所述修正华莱士树组单元的输出端与所述累加单元的输入端连接;所述修正华莱士树组单元用于对不同模式的数据运算处理时,获取的所有目标编码的第二部分积中的每一列数值进行累加处理,得到累加运算结果,所述累加单元用于对所述累加运算结果进行加法运算。
15.一种数据处理方法,其特征在于,应用于权利要求1中任一项所述的数据处理器,所述方法包括:
接收待处理数据以及功能选择模式信号,其中,所述功能选择模式信号用于指示数据处理器当前可处理的对应模式的数据运算;
根据所述功能选择模式信号,对所述待处理数据进行正则有符号数编码处理,得到目标编码;以及,根据所述目标编码以及所述待处理数据,得到目标编码的第一部分积以及目标编码的第二部分积;
根据所述功能选择模式信号对所述目标编码的第一部分积进行压缩处理,得到第一目标运算结果;以及,根据所述功能选择模式信号对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果。
16.根据权利要求15所述的方法,其特征在于,所述根据所述功能选择模式信号,对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:根据所述功能选择模式信号,将所述待处理数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
17.根据权利要求15或16所述的方法,其特征在于,所述根据所述功能选择模式信号,对所述待处理数据进行正则有符号数编码处理,得到目标编码,包括:
对所述待处理数据进行正则有符号数编码处理,得到中间编码;
根据所述中间编码以及所述功能选择模式信号,得到所述目标编码。
18.根据权利要求15或16所述的方法,其特征在于,所述根据所述目标编码以及所述待处理数据,得到目标编码的第一部分积以及目标编码的第二部分积,包括:
根据所述目标编码中的第一目标编码以及所述待处理数据进行转换处理,得到第一原始部分积;
根据所述第一原始部分积以及所述待处理数据进行符号位扩展处理,得到所述目标编码的第一部分积;
以及根据所述目标编码中的第二目标编码以及所述待处理数据进行所述转换处理,得到第二原始部分积;
根据所述第二原始部分积以及所述待处理数据进行符号位扩展处理,得到所述目标编码的第二部分积。
19.根据权利要求15或16所述的方法,其特征在于,所述根据所述功能选择模式信号对所述目标编码的第一部分积进行压缩处理,得到第一目标运算结果,包括:
低位华莱士树子单元对所有目标编码的第一部分积中的列数值进行累加处理,得到第一累加运算结果;
选择器根据所述功能选择模式信号对所述第一累加运算结果进行选通,得到第一进位选通信号;
高位华莱士树子单元根据所述第一进位选通信号以及所述目标编码的第一部分积中的列数值进行累加处理,得到所述第一目标运算结果。
20.根据权利要求15或16所述的方法,其特征在于,所述根据所述功能选择模式信号对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果,包括:低位华莱士树子单元对所有目标编码的第二部分积中的列数值进行累加处理,得到第二累加运算结果;选择器根据所述功能选择模式信号对所述第二累加运算结果进行选通,得到第二进位选通信号;高位华莱士树子单元根据所述第二进位选通信号以及所述目标编码的第二部分积中的列数值进行累加处理,得到所述第二目标运算结果。
21.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求1-14任一项所述的数据处理器,用于从其它处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其它处理装置;
当所述机器学习运算装置包含多个所述数据处理器时,多个所述数据处理器间通过预设特定结构进行连接并传输数据;
其中,多个所述数据处理器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理器共享同一控制系统或拥有各自的控制系统;多个所述数据处理器共享内存或者拥有各自的内存;多个所述数据处理器的互联方式是任意互联拓扑。
22.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求21所述的机器学习运算装置,通用互联接口和其它处理装置;
所述机器学习运算装置与所述其它处理装置进行交互,共同完成用户指定的计算操作。
23.根据权利要求22所述的组合处理装置,其特征在于,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。
24.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求21所述的机器学习运算装置或如权利要求22所述的组合处理装置或如权利要求23所述的组合处理装置。
25.一种电子设备,其特征在于,所述电子设备包括如所述权利要求24所述的神经网络芯片。
26.一种板卡,其特征在于,所述板卡包括:存储器件、接收装置和控制器件以及如权利要求24所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接收装置分别连接;
所述存储器件,用于存储数据;
所述接收装置,用于实现所述神经网络芯片与外部设备之间的数据传输;
所述控制器件,用于对所述神经网络芯片的状态进行监控。
27.根据权利要求26所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述神经网络芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述神经网络芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接收装置为:标准PCIE接口。
CN201910902842.9A 2019-09-24 2019-09-24 数据处理器、方法、芯片及电子设备 Active CN110647307B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910902842.9A CN110647307B (zh) 2019-09-24 2019-09-24 数据处理器、方法、芯片及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910902842.9A CN110647307B (zh) 2019-09-24 2019-09-24 数据处理器、方法、芯片及电子设备

Publications (2)

Publication Number Publication Date
CN110647307A CN110647307A (zh) 2020-01-03
CN110647307B true CN110647307B (zh) 2024-04-09

Family

ID=69011120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910902842.9A Active CN110647307B (zh) 2019-09-24 2019-09-24 数据处理器、方法、芯片及电子设备

Country Status (1)

Country Link
CN (1) CN110647307B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116774966B (zh) * 2023-08-22 2023-12-08 深圳比特微电子科技有限公司 乘法器、乘累加电路、运算电路、处理器和计算装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4223999C1 (en) * 1992-07-21 1993-07-08 Andreas 3502 Vellmar De Herrfeld Digital multiplication circuit using canonically signed digit code - has multiplexer converted and added to two's-complement value to generate reduced partial products that are added
JPH1049347A (ja) * 1996-07-29 1998-02-20 New Japan Radio Co Ltd 乗算器
CN101082860A (zh) * 2007-07-03 2007-12-05 浙江大学 一种乘累加装置
CN105183424A (zh) * 2015-08-21 2015-12-23 电子科技大学 一种具有高精度低能耗特性的固定位宽乘法器
CN210006029U (zh) * 2019-09-24 2020-01-31 上海寒武纪信息科技有限公司 数据处理器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4223999C1 (en) * 1992-07-21 1993-07-08 Andreas 3502 Vellmar De Herrfeld Digital multiplication circuit using canonically signed digit code - has multiplexer converted and added to two's-complement value to generate reduced partial products that are added
JPH1049347A (ja) * 1996-07-29 1998-02-20 New Japan Radio Co Ltd 乗算器
CN101082860A (zh) * 2007-07-03 2007-12-05 浙江大学 一种乘累加装置
CN105183424A (zh) * 2015-08-21 2015-12-23 电子科技大学 一种具有高精度低能耗特性的固定位宽乘法器
CN210006029U (zh) * 2019-09-24 2020-01-31 上海寒武纪信息科技有限公司 数据处理器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种高速数字FIR 滤波器的VLSL实现;万超等;合肥工业大学报(自然科学版);第31卷(第5期);第736-739 页 *
基4BOOTH编码的高速32×32乘法器的设计与实现;周婉婷;李磊;;电子科技大学学报(S1);全文 *

Also Published As

Publication number Publication date
CN110647307A (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
CN110515589B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110515587B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110531954B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110554854B (zh) 数据处理器、方法、芯片及电子设备
CN110673823B (zh) 乘法器、数据处理方法及芯片
CN110515590B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031912B (zh) 乘法器、数据处理方法、装置及芯片
CN111258633B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110647307B (zh) 数据处理器、方法、芯片及电子设备
CN113031911B (zh) 乘法器、数据处理方法、装置及芯片
CN113033799B (zh) 数据处理器、方法、装置及芯片
CN110515588B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110688087B (zh) 数据处理器、方法、芯片及电子设备
CN210006029U (zh) 数据处理器
CN110515586B (zh) 乘法器、数据处理方法、芯片及电子设备
CN209879493U (zh) 乘法器
CN210109789U (zh) 数据处理器
CN113031916B (zh) 乘法器、数据处理方法、装置及芯片
CN210006031U (zh) 乘法器
CN209895329U (zh) 乘法器
CN113031915B (zh) 乘法器、数据处理方法、装置及芯片
CN210109863U (zh) 乘法器、装置、神经网络芯片及电子设备
CN113031909B (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
GR01 Patent grant
GR01 Patent grant