CN210109789U - 数据处理器 - Google Patents

数据处理器 Download PDF

Info

Publication number
CN210109789U
CN210109789U CN201921589734.2U CN201921589734U CN210109789U CN 210109789 U CN210109789 U CN 210109789U CN 201921589734 U CN201921589734 U CN 201921589734U CN 210109789 U CN210109789 U CN 210109789U
Authority
CN
China
Prior art keywords
partial product
data
circuit
bit
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
CN201921589734.2U
Other languages
English (en)
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 CN201921589734.2U priority Critical patent/CN210109789U/zh
Application granted granted Critical
Publication of CN210109789U publication Critical patent/CN210109789U/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请提供一种数据处理器,数据处理器包括布斯编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路,布斯编码电路的输出端与第一部分积获取电路的第一输入端,以及第二部分积获取电路的第一输入端连接,第一部分积获取电路的输出端与第一压缩电路的第一输入端连接,第二部分积获取电路的输出端与第二压缩电路的第一输入端连接,该数据处理器不仅能够实现乘法运算还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算实现乘累加运算,仅通过一次运算过程就可以直接实现乘法运算或乘累加运算,从而降低了数据处理器的功耗。

Description

数据处理器
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理器。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能数据处理器的要求也越来越高,其中,数据处理器为乘法器、加法器或乘累加器。神经网络算法作为智能芯片广泛应用的算法之一,通过乘累加器进行乘累加运算在神经网络算法中是一种常见的操作。
通常,数据处理器是采用多个相同输入数据位宽或不同数据位宽的乘法器先进行并行乘法运算,得到多个乘法运算结果,再通过加法器对多个乘法运算结果进行累加运算,得到目标乘累加结果。但是,现有的数据处理器仅能够对相同位宽的数据进行乘累加运算,降低了数据处理器的通用性。另外,现有技术中对多个乘法运算结果还需要单独进行一次累加运算才能实现乘累加操作,从而增大了数据处理器的功耗。
实用新型内容
基于此,有必要针对上述技术问题,提供了一种低功耗且通用性较高的数据处理器。
一种数据处理器,所述数据处理器包括:布斯编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路,所述布斯编码电路的输出端与所述第一部分积获取电路的第一输入端连接,所述第一部分积获取电路的输出端与所述第一压缩电路的第一输入端连接,所述布斯编码电路的输出端还与所述第二部分积获取电路的第一输入端连接,所述第二部分积获取电路的输出端与所述第二压缩电路的第一输入端连接;
其中,所述布斯编码电路用于对接收到的第一数据进行布斯编码处理得到目标编码,所述第一部分积获取电路用于接收第二数据,并根据所述目标编码得到目标编码的第一部分积,所述第二部分积获取电路用于接收第二数据,并根据所述目标编码得到目标编码的第二部分积,所述第一压缩电路用于对所述目标编码的第一部分积进行累加处理得到第一目标运算结果,所述第二压缩电路用于对所述目标编码的第二部分积进行累加处理得到第二目标运算结果。
在其中一个实施例中,所述布斯编码电路中包括第一输入端,用于接收功能选择模式信号,所述第一部分积获取电路和所述第二部分积获取电路中均包括第二输入端,用于接收所述功能选择模式信号;所述第一压缩电路和所述第二压缩电路中均包括第二输入端,用于接收所述功能选择模式信号;所述功能选择模式信号用于确定所述数据处理器当前可处理对应模式的数据运算。
在其中一个实施例中,所述布斯编码电路包括低位布斯编码单元、选择器以及高位布斯编码单元,所述低位布斯编码单元的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位布斯编码单元的输入端连接;
其中,所述低位布斯编码单元用于对接收到的所述第一数据中的低位数据,进行布斯编码处理得到低位目标编码,所述选择器用于接收所述功能选择模式信号,并根据所述功能选择模式信号选通所述第一数据中的高位数据,进行布斯编码处理时的补位数值,所述高位布斯编码单元用于对接收到的第一数据中的所述高位数据,以及所述补位数值进行布斯编码处理得到高位目标编码。
在其中一个实施例中,所述低位布斯编码单元包括:低位数据输入端口以及低位目标编码输出端口;所述低位数据输入端口用于接收进行布斯编码处理的所述第一数据中的低位数据,所述低位目标编码输出端口用于输出对第一数据中的所述低位数据进行布斯编码处理后,得到的第一低位目标编码。
在其中一个实施例中,所述高位布斯编码单元包括:高位数据输入端口以及高位目标编码输出端口;所述高位数据输入端口用于接收进行布斯编码处理的第一数据中的所述高位数据,所述高位目标编码输出端口用于输出对第一数据中的所述高位数据进行布斯编码处理后,得到的高位目标编码。
在其中一个实施例中,所述选择器包括:功能选择模式信号输入端口、第一选通数值输入端口、第二选通数值输入端口以及选通结果输出端口;所述功能选择模式信号输入端口用于接收不同模式的数据运算对应的所述功能选择模式信号,所述第一选通数值输入端口用于接收第一选通数值,所述第二选通数值输入端口用于接收第二选通数值,所述选通结果输出端口用于输出选通后的所述第一选通数值或所述第二选通数值。
在其中一个实施例中,所述第一部分积获取电路包括:低位部分积获取单元、低位选择器组单元、高位部分积获取单元以及高位选择器组单元;所述低位部分积获取单元的第一输入端与所述低位布斯编码单元的输出端连接,所述低位部分积获取单元的第二输入端与所述低位选择器组单元的输出端连接,所述高位部分积获取单元的第一输入端与所述高位布斯编码单元的输出端连接,所述高位部分积获取单元的第二输入端与所述高位选择器组单元的输出端连接。
在其中一个实施例中,所述低位部分积获取单元包括:低位目标编码输入端口、选通数值输入端口、数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述低位布斯编码单元输出的低位目标编码,所述选通数值输入端口用于接收所述低位选择器组单元选通后,得到的所述符号位扩展后的低位部分积中的数值,所述数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出所述符号位扩展后的低位部分积。
在其中一个实施例中,所述高位部分积获取单元包括:高位目标编码输入端口、选通数值输入端口、数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收高位布斯编码单元输出的高位目标编码,所述选通数值输入端口用于接收所述高位选择器组单元选通后,输出的所述符号位扩展后的高位部分积中的数值,所述数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所述符号位扩展后的高位部分积。
在其中一个实施例中,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对所述符号位扩展后的低位部分积中的数值进行选通。
在其中一个实施例中,所述高位选择器组单元包括:高位选择器,所述高位选择器用于对所述符号位扩展后的高位部分积中的数值进行选通。
在其中一个实施例中,所述第一压缩电路包括:修正华莱士树组电路和累加电路,所述修正华莱士树组电路的输出端与所述累加电路的输入端连接;所述修正华莱士树组电路用于对不同模式的数据运算处理时,得到的所述目标编码的第一低位部分积,以及所述目标编码的第一高位部分积中的每一列数值进行累加处理得到累加运算结果,所述累加电路用于对所述累加运算结果进行加法运算。
在其中一个实施例中,所述修正华莱士树组电路包括:低位华莱士树子电路、选择器以及高位华莱士树子电路,所述低位华莱士树子电路的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子电路的输入端连接;其中,所述低位华莱士树子电路用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果,所述选择器用于选通所述高位华莱士树子电路接收的进位输入信号,所述高位华莱士树子电路用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果。
在其中一个实施例中,所述累加电路包括:加法器,所述进位加法器用于对所述累加运算结果进行加法运算。
在其中一个实施例中,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,和位信号输入端口用于接收和位信号,运算结果输出端口用于输出进位信号与和位信号进行累加处理的结果。
本实施例提供的一种数据处理器,通过布斯编码电路对接收到的第一数据进行编码处理得到目标编码,第一部分积获取电路根据接收到的第二数据以及目标编码,得到对应的目标编码的第一部分积,第二部分积获取电路根据接收到的第二数据以及目标编码,得到对应的目标编码的第二部分积,并通过第一压缩电路以及第二压缩电路分别进行累加处理,该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法运算或乘累加运算,从而降低了数据处理器的功耗。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个上述所述的数据处理器;该机器学习运算装置用于从其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过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包括第一编码支路11a、第一选择支路11b以及第一压缩支路11c,所述第二乘法运算电路12包括第二编码支路12a、第二选择支路12b以及第二压缩支路12c;所述第一乘法运算电路11的输出端与所述部分积交换电路13的第一输入端连接,所述部分积交换电路13的第一输出端与所述第二乘法运算电路12的第一输入端连接,所述第二乘法运算电路12的输出端与所述部分积交换电路13的第二输入端连接,所述部分积交换电路13的第二输出端与所述第一乘法运算电路11的输入端连接。
其中,所述第一编码支路11a用于对接收到的第一数据进行编码处理,得到符号位扩展后的第一部分积,所述第一选择支路11b用于从所述符号位扩展后的第一部分积中选择目标编码的第一部分积,所述第一压缩支路11c用于对所述目标编码的第一部分积进行压缩处理,得到第一目标运算结果,所述第二编码支路12a用于对接收到的第二数据进行编码处理,得到符号位扩展后的第二部分积,所述第二选择支路12b用于从所述符号位扩展后的第二部分积中选择目标编码的第二部分积,所述第二压缩支路12c用于对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果,所述部分积交换电路13用于对所述符号位扩展后的第一部分积,以及所述符号位扩展后的第二部分积进行交换。
具体的,第一乘法运算电路11和第二乘法运算电路12均可以接收一个数据,该数据可以包括两个子数据,这两个子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据,子数据可以作为乘法运算或乘累加运算中的被乘数和乘数。可选的,上述第一数据以及第二数据中两个子数据均可以拼接后作为一个整体,输入至第一乘法运算电路11或第二乘法运算电路12,还可以分开同时输入至第一乘法运算电路11或第二乘法运算电路12。其中,上述子数据可以为定点数,且位宽可以为2N,两个子数据拼接后得到的数据位宽可以为4N。可选的,上述第一乘法运算电路11可以包括多个具有不同功能的数据处理单元,这些数据处理单元可以为具有二进制编码处理功能的单元,还可以为具有不同运算处理功能的单元,对此本实施例不做任何限定。数据处理器在同一次数据运算处理时,第一乘法运算电路11或第二乘法运算电路12,接收到的其中一个子数据可以作为被乘数,另一个子数据可以作为乘数。还可以理解的是,符号位扩展后的第一部分积和符号位扩展后的第二部分积的位宽,均可以等于数据处理器当前处理乘法运算或乘累加运算时被乘数位宽的2倍。其中,符号位扩展后的第一部分积可以包括符号位扩展后的第一低位部分积,以及符号位扩展后的第一高位部分积,符号位扩展后的第二部分积可以包括符号位扩展后的第二低位部分积,以及符号位扩展后的第二高位部分积。
可选的,所述第一乘法运算电路11和所述第二乘法运算电路12中均包括第一输入端,用于接收功能选择模式信号;所述部分积交换电路13中包括第三输入端,用于接收所述功能选择模式信号。可选的,所述功能选择模式信号用于确定所述数据处理器当前可处理的对应模式的数据运算。
需要说明的是,数据处理器在同一次数据运算处理时,第一乘法运算电路11、第二乘法运算电路12以及部分积交换电路13,接收到的功能选择模式信号均可以相等,该功能选择模式信号可以有四种,四种功能选择模式信号分别对应数据处理器可处理的四种模式的数据运算,四种模式的数据运算可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。例如,若所述第一数据和第二数据均包括两个2N位子数据,则数据处理器根据接收到的不同功能选择模式信号,可以确定当前需要处理对应模式的数据运算。其中,四种功能选择模式信号可以用二进制数值分别表示为数值00,01,10,11,也可以为其它的表示方式,本实施例并不做任何限定。例如,mode=00可以表征数据处理器当前可处理N位*N位数据的乘法运算,mode=01可以表征数据处理器当前可处理N位*N位数据的乘累加运算,mode=10可以表征数据处理器当前可处理2N位*2N位数据的乘法运算,mode=11可以表征数据处理器当前可处理2N位*N位数据的乘累加运算,还有,四种功能选择模式信号与四种不同模式的数据运算之间可以有任意的对应关系,本实施例对此不做任何限定。
另外,当数据处理器执行2N位*N位数据的乘累加运算时,部分积交换电路13可以根据实际需求,将第一乘法运算电路11得到的符号位扩展后的第一低位部分积或符号位扩展后的第一高位部分积,与第二乘法运算电路12得到的符号位扩展后的第二低位部分积或符号位扩展后的第二高位部分积进行交换处理,还可以理解为,数据处理器在其它三种模式的数据运算时,部分积交换电路13为悬空状态,符号位扩展后的低位部分积以及符号位扩展后的高位部分积不做对应交换处理。同时,第一数据和第二数据中的两个子数据位宽均为2N,若数据处理器当前可处理一个N位*N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中有一个数据为数值0,另一个数据中两个子数据的高位数值均为数值0,或者低位数值均为数值0,根据实际需求,此时第一数据和第二数据可以按照原始数据进行计算;若数据处理器当前可处理一个2N位*2N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中有一个数据为数值0,另一个数据的两个子数据中高位数值和低位数值均为非0数值;若数据处理器当前可处理两个2N位*2N位数据的乘法运算时,根据实际需求,此时第一数据和第二数据中不存在数值0。
本实施例提供的一种数据处理器,数据处理器通过第一乘法运算电路和第二乘法运算电路分别对接收到的数据进行布斯编码处理,得到符号位扩展后的部分积,并通过部分积交换电路交换处理,输入至第一乘法运算电路和第二乘法运算电路中的符号位扩展后的部分积,分别确定目标编码的第一部分积以及目标编码的第二部分积,进而分别对其进行压缩处理得到目标运算结果,该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
如图2所示,图2为另一实施例提供的一种数据处理器的结构示意图,该数据处理器包括布斯编码电路21、第一部分积获取电路22、第二部分积获取电路23、第一压缩电路24以及第二压缩电路25;所述布斯编码电路21的输出端与所述第一部分积获取电路22的第一输入端连接,所述第一部分积获取电路22的输出端与所述第一压缩电路24的第一输入端连接,所述布斯编码电路21的输出端还与所述第二部分积获取电路23的第一输入端连接,所述第二部分积获取电路23的输出端与所述第二压缩电路25的第一输入端连接。
其中,所述布斯编码电路21用于对接收到的第一数据进行布斯编码处理得到目标编码,所述第一部分积获取电路22用于接收第二数据,并根据所述目标编码得到目标编码的第一部分积,所述第二部分积获取电路23用于接收第二数据,并根据所述目标编码得到目标编码的第二部分积,所述第一压缩电路24用于对所述目标编码的第一部分积进行累加处理得到第一目标运算结果,所述第二压缩电路25用于对所述目标编码的第二部分积进行累加处理得到第二目标运算结果。
具体的,上述第一数据和第二数据均可以包括两个子数据,第一数据包括的两个子数据均可以作为数据处理器进行乘法运算或乘累加运算中的乘数,第二数据包括的两个子数据均可以作为数据处理器进行乘法运算或乘累加运算中的被乘数,但乘数和被乘数的位宽均可以为2N,另外,第一数据中包含的两个子数据可以拼接后作为一个整体,输入至布斯编码电路21,还可以分开同时输入至布斯编码电路21,第二数据中包含的两个子数据可以拼接后作为一个整体,输入至第一部分积获取电路22和第二部分积获取电路23,还可以分开同时输入至第一部分积获取电路22和第二部分积获取电路23。可选的,第一部分积获取电路22和第二部分积获取电路23,均可以接收布斯编码电路21输入的目标编码,并根据接收到的第二数据,分别得到对应的目标编码的部分积。其中,在布斯编码处理前,布斯编码电路21可以自动对接收到的第一数据中的两个子数据分别进行补位处理,该补位处理可以为对两个子数据的最低位数值的低一位处补一位数值0。例如,若一个子数据(即乘数)为y7y6y5y4y3y2y1y0,则在布斯编码前,布斯编码电路21可以自动将该子数据进行补位处理,将该子数据转换为y7y6y5y4y3y2y1y00。可选的,上述目标编码的数目可以等于数据处理器当前处理的子数据(即乘数)位宽的1/2。
需要说明的是,第一数据以及第二数据均包括两个子数据,若数据处理器当前可处理的数据位宽等于子数据的位宽,则完成布斯编码处理后,布斯编码电路21可以得到两个子数据对应的两组目标编码,布斯编码电路21将两组或其中一组目标编码可以输入至第一部分积获取电路22,并将两组或另一组目标编码输入至第二部分积获取电路23,相当于第一部分积获取电路22和第二部分积获取电路23均可以接收到其中一组或两组目标编码,以及第二数据(即被乘数),根据实际需求,由其中一组目标编码与第二数据中的一个子数据,可以得到一组目标编码的部分积,该目标编码的部分积可以包括子数据中的低位数据对应的目标编码的低位部分积,以及子数据中的高位数据对应的目标编码的高位部分积。另外,第一压缩电路24可以对第一部分积获取电路22,得到的两组目标编码的部分积(即目标编码的第一部分积)进行累加处理,第二压缩电路25可以对第二部分积获取电路23,得到的两组目标编码的部分积(即目标编码的第二部分积)进行累加处理,从而得到乘法运算的目标运算结果。此外,在本实施例中,数据处理器接收到的第一数据以及第二数据中,包含的子数据的位宽均为2N。
可选的,所述布斯编码电路21中包括第一输入端,用于接收功能选择模式信号;所述第一部分积获取电路22和所述第二部分积获取电路23中均包括第二输入端,用于接收所述功能选择模式信号;所述第一压缩电路24和所述第二压缩电路25中均包括第二输入端,用于接收所述功能选择模式信号。可选的,所述功能选择模式信号用于确定所述数据处理器当前可处理对应模式的数据运算。
可以理解的是,上述功能选择模式信号(mode)可以有四种,这四种功能选择模式信号(mode)对应于所述数据处理器可以处理四种对应模式的数据运算处理。可选的,同一次数据运算处理时,布斯编码电路21、第一部分积获取电路22、第二部分积获取电路23、第一压缩电路24以及第二压缩电路25,接收到的功能选择模式信号(mode)均可以相等,且四种功能选择模式信号(mode)均可以用二进制数值分别表示为mode=00,mode=01,mode=10,mode=11,四种对应模式的数据运算分别可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算,2N位*N位数据的乘累加运算。其中,第一部分积获取电路22以及第二部分积获取电路23可以根据接收到的功能选择模式信号,控制接收布斯编码电路21输入一组目标编码还是两组目标编码进行运算。
本实施例提供的数据处理器,通过布斯编码电路对接收到的第一数据进行编码处理得到目标编码,第一部分积获取电路根据接收到的第二数据以及目标编码,得到对应的目标编码的第一部分积,第二部分积获取电路根据接收到的第二数据以及目标编码,得到对应的目标编码的第二部分积,并通过第一压缩电路以及第二压缩电路分别进行累加处理,该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
图3为另一实施例提供的一种数据处理器的具体结构示意图。所述数据处理器中的第一乘法运算电路11包括:第一修正编码子电路111、第一部分积选择子电路112以及第一修正压缩子电路113;所述第一修正编码子电路111的输出端与所述第一部分积选择子电路112的第一输入端连接,所述第一部分积选择子电路112的第二输入端与所述部分积交换电路13的第二输出端连接,所述第一部分积选择子电路112的输出端与所述第一修正压缩子电路113的第一输入端连接;所述第一修正编码子电路111用于对接收到的所述第一数据进行布斯编码处理,得到所述符号位扩展后的第一部分积,所述第一部分积选择子电路112用于接收所述部分积交换电路13输出的所述符号位扩展后的第二部分积,并且对所述符号位扩展后的第一部分积进行选择,将接收到的所述符号位扩展后的第二部分积,以及选择后得到的所述符号位扩展后的第一部分积,作为所述目标编码的第一部分积输入至所述第一修正压缩子电路113,所述第一修正压缩子电路113用于对所述目标编码的第一部分积进行累加处理。
具体的,上述第一修正编码子电路111可以包括多个具有不同功能的数据处理单元。可选的,第一修正编码子电路111可以对接收到的第一数据进行布斯编码处理,相当于第一修正编码子电路111可以对接收到的乘数进行布斯编码处理得到第一目标编码,并根据接收到的被乘数以及第一目标编码,得到符号位扩展后的第一部分积,该符号位扩展后的第一部分积的位宽可以等于数据处理器当前可处理乘法运算时被乘数位宽的2倍。示例性的,第一修正编码子电路111接收到的是16比特位宽的数据,若数据处理器当前可处理8位*8位数据的乘法运算,则第一修正编码子电路111需要将16比特位宽的数据划分成,高8位和低8位两组数据分别进行运算处理,此时,得到的符号位扩展后的第一部分积的位宽可以等于16;若数据处理器当前可处理16位*16位数据的乘法运算,则第一修正编码子电路111需要对整体16位数据进行运算处理,此时,得到的符号位扩展后的部分积的位宽可以等于32。
可选的,所述第二乘法运算电路12包括:第二修正编码子电路121、第二部分积选择子电路122以及第二修正压缩子电路123;所述第二修正编码子电路121的输出端与所述第二部分积选择子电路122的第一输入端连接,所述第二部分积选择子电路122的第二输入端与所述部分积交换电路13的第一输出端连接,所述第二部分积选择子电路122的输出端与所述第二修正压缩子电路123的第一输入端连接;所述第二修正编码子电路121用于对接收到的所述第二数据进行布斯编码处理,得到所述符号位扩展后的第二部分积,所述第二部分积选择子电路122用于接收所述部分积交换电路13输出的所述符号位扩展后的第二部分积,以及对所述符号位扩展后的第二部分积进行选择,并将所述符号位扩展后的第二部分积以及选择后得到的所述符号位扩展后的第二部分积,作为所述目标编码的第二部分积输入至所述第二修正压缩子电路123,所述第二修正压缩子电路123用于对所述目标编码的第二部分积进行累加处理。
需要说明的是,第二乘法运算电路12处理数据的方法与第一乘法运算电路11处理数据的方法基本相同,本实施例对第二乘法运算电路12处理数据的方法不再赘述。
本实施例提供的数据处理器,通过修正编码电路对接收到的第一数据进行编码处理得到符号位扩展后的第一部分积,并根据数据处理器当前所处理的数据模式,通过第一部分积选择子电路选择目标编码的第一部分积,通过修正压缩电路对目标编码的第一部分积进行累加处理,得到目标运算结果,数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
作为其中一个实施例,数据处理器中的所述第一修正编码子电路111包括:低位布斯编码单元1111、低位部分积获取单元1112、选择器1113、高位布斯编码单元1114、高位部分积获取单元1115、低位选择器组单元1116以及高位选择器组单元1117;所述低位布斯编码单元1111的第一输出端与所述选择器1112的输入端连接,所述低位布斯编码单元1111的第二输出端与所述低位部分积获取单元1112的第一输入端连接,所述选择器1112的输出端与所述高位布斯编码单元1113的第一输入端连接,所述高位布斯编码单元1113的输出端与所述高位部分积获取单元1115的第一输入端连接,所述低位选择器组单元1116的输出端与所述低位部分积获取单元1112的第二输入端连接,所述高位选择器组单元1117的输出端与所述高位部分积获取单元1115的第二输入端连接。其中,所述低位布斯编码单元1111用于对接收到的所述第一数据中的低位数据进行布斯编码处理得到第一低位目标编码,所述低位部分积获取单元1112用于根据所述第一低位目标编码,得到符号位扩展后的第一低位部分积,所述选择器1113用于选通所述第一数据中的高位数据进行布斯编码时的补位数值,所述高位布斯编码单元1114用于对接收到的第一数据中的所述高位数据以及所述补位数值,进行布斯编码处理得到第一高位目标编码,所述高位部分积获取单元1115用于根据所述第一高位目标编码,得到符号位扩展后的第一高位部分积,所述低位选择器组单元1116用于选通所述符号位扩展后的第一低位部分积中的数值,所述高位选择器组单元1117用于选通所述符号位扩展后的第一高位部分积中的数值。
具体的,上述第一修正编码子电路111可以接收乘法运算,或乘累加运算中的乘数和被乘数,对乘数进行布斯编码处理得到第一目标编码,并根据第一目标编码以及接收到的被乘数得到符号位扩展后的第一部分积。其中,第一数据在进行布斯编码处理前,低位布斯编码单元1111可以自动对第一修正编码子电路111接收到的第一数据中的低位数据进行一次补位处理,并对补位处理后的低位数据进行布斯编码处理,得到第一低位目标编码,所述低位数据可以为乘法运算中的乘数,并且第一数据中的低位数据可以包括第一数据中两个子数据对应的低位数据。可选的,若第一修正编码子电路111接收到的乘数位宽为N,则低位数据可以为低N/2位的数据,补位处理可以表征为对低位数据中最低位数值的低一位处补一位数值0。示例性的,若数据处理器当前可处理8位*8位的定点数乘法运算,乘数为“y7y6y5y4y3y2y1y0”,则在进行布斯编码处理前,低位布斯编码单元1111可以自动对乘数进行补位处理,将乘数转换为补位后的数据“y7y6y5y4y3y2y1y00”。可选的,上述第一低位目标编码的数目可以等于低位数据位宽的1/2,且该第一低位目标编码的数目可以等于低位数据对应得到的符号位扩展后的第一低位部分积的数目。需要说明的是,无论第一修正编码子电路111当前可处理的数据位宽,与第一修正编码子电路111接收到的第一数据中子数据的位宽是否相同,实现布斯编码处理时,低位布斯编码单元1111都需要自动对待编码数据中的低位数据进行补位处理,此时补位的数据为数值0。
同时,通过高位布斯编码单元1114可以对第一修正编码子电路111接收到的乘数中的高位数据,进行布斯编码处理得到第一高位目标编码,但是,第一数据中的高位数据在进行布斯编码处理前,需要通过选择器1113获得一个选通数值,该选通数值可以作为高位数据进行布斯编码时的补位数值,然后将高位数据与补位数值组合得到补位后的高位数据,通过高位布斯编码单元1114对补位后的高位数据进行布斯编码处理,得到第一高位目标编码。可选的,选择器1113可以为二路选择器,选通数值可以为数值0,以及第一数据中的低位数据(即乘数)的最高位数值。示例性的,一数据处理器接收到的第一数据以及第二数据中的两个子数据位宽均为2N比特,若该数据处理器当前可处理N位*N位数据的乘法运算,则选择器1113选通的数据为数值0,也就是说,数据处理器需要将接收到的2N比特位宽的数据划分成,高N位和低N位数据分别进行处理;若该数据处理器当前可处理2N位*2N位数据的乘法运算,则选择器1113选通的数据为第一数据的低位数据中的最高位数值,此时相当于数据处理器可以将接收到的2N比特位宽的数据,作为一个整体进行布斯编码处理。另外,选择器1112还可以根据接收到的不同功能选择模式信号确定选通的补位数值。
需要说明的是,低位部分积获取单元1114可以根据每一个第一低位目标编码,得到第一数据中的低位数据,对应的符号位扩展后的部分积,以及低位选择器组单元1116选通后得到的符号位扩展后的第一低位部分积中的数值,得到符号位扩展后的第一低位部分积。可选的,高位部分积获取单元1115可以根据每一个第一高位目标编码,得到第一数据中的高位数据,对应的符号位扩展后的部分积,以及高位选择器组单元1117选通后得到的符号位扩展后的第一高位部分积中的数值,得到符号位扩展后的第一高位部分积。可选的,布斯编码过程中,得到的第一低位目标编码的数目可以等于得到的第一高位目标编码的数目,还可以等于低位数据对应的符号位扩展后的第一低位部分积的数目,或高位数据对应的符号位扩展后的第一高位部分积的数目。可选的,若数据处理器当前可处理N位*N位的乘法运算,则第一修正编码子电路111可以包含N/4个低位布斯编码单元1111,还可以包含N/4个高位布斯编码单元1114。可选的,第一修正编码子电路111中可以包含N/4个低位部分积获取单元1112,还可以包含N/4个高位部分积获取单元1115。可选的,上述每一个低位部分积获取单元1112和每一个高位部分积获取单元1115中,均可以包含2N个数值生成子单元,每一个数值生成子单元可以获取符号位扩展后的第一低位部分积或第一高位部分积中的一位数值。
另外,第二修正编码子电路121目标编码数据的方法与第一修正编码子电路111目标编码数据的方法相同,并且第二修正编码子电路121与第一修正编码子电路111的内部结构,以及外部输出端口的功能也相同,本实施例对第二修正编码子电路121处理数据的方法和结构均不再赘述。
本实施例提供的一种数据处理器,通过修正编码电路中的低位布斯编码单元,选择器,高位布斯编码单元对接收到的数据进行布斯编码处理,得到低位目标编码及高位目标编码,并且低位部分积获取单元和高位部分积获取单元根据低位目标编码及高位目标编码,得到目标编码的部分积,再对目标编码的部分积进行累加处理,得到目标运算结果,该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性。
作为其中一个实施例,数据处理器中的所述低位布斯编码单元1111包括:低位数据输入端口1111a以及低位目标编码输出端口1111b。所述低位数据输入端口1111a用于接收进行布斯编码处理的所述第一数据中的低位数据,所述低位目标编码输出端口1111b用于输出对第一数据中的所述低位数据进行布斯编码处理后,得到的第一低位目标编码。
具体的,运算处理过程中,第一修正编码子电路111可以对乘法运算或乘累加运算时的乘数(即第一数据中的两个子数据)进行布斯编码处理,第一修正编码子电路111中的低位布斯编码单元1111可以通过低位目标编码输出端口1111b,接收两个子数据对应低位数据中的三位数值,该三位数值作为一组待编码数据,该三个数值可以为低位数据中相邻的三位数值。其中,每一个低位布斯编码单元1111对接收到的待编码数据处理后,将得到的低位目标编码可以通过低位目标编码输出端口1111b输出。另外,第一修正编码子电路111中的第一个低位布斯编码单元1111,通过低位目标编码输出端口1111b还可以接收补位数值0,以及低位数据中的低两位数值。
例如,若数据处理器接收到的一个子数据(即乘数)为16比特位宽的子数据“y15y1 4y13y12y11y10y9y8y7y6y5y4y3y2y1y0”,从最低位数值至最高位数值对应的编号为数值0,…,15,低位布斯编码单元1111可以对低位数据y7y6y5y4y3y2y1y0进行布斯编码处理,布斯编码处理前对8位低位数据进行补位处理后得到9位数据y7y6y5y4y3y2y1y00,低位布斯编码单元1111可以分别对y7y6y5y4y3y2y1y00中y7y6y5,y5y4y3,y3y2y1,y1y00这四组子数据分别进行布斯编码处理,通过低位布斯编码单元1111中的低位目标编码输出端口1111b可以接收9位子数据划分后的四组子数据中相邻的三位数值。
需要说明的是,每一次布斯编码处理时,可以将低位数据进行补位处理后的子数据划分成多组待编码子数据,低位布斯编码单元1111可以同时对划分后的多组待编码子数据进行布斯编码处理。可选的,划分多组待编码子数据的原则可以表征为对补位处理后的子数据中相邻的每3位数值作为一组待编码子数据,每一组待编码子数据中的最高位数值,可以作为相邻下一组待编码子数据中的最低位数值,即布斯编码处理时的补位数值。可选的,布斯编码的目标编码规则可以参见表1,其中,表1中的y2i+1,y2i和y2i-1可以表示每一组待编码子数据(即乘数)对应的数值,X可以表示数据处理器接收到的第二数据中的子数据(即被乘数),对每一组对应待编码子数据进行布斯编码处理后,得到对应的目标编码PPi(i=0,1,2,...,n)。可选的,根据表1所示,布斯编码后得到的目标编码可以包括五类,分别为-2X,2X,-X,X和0。示例性的,若数据处理器接收到的被乘数为“x7x6x5x4x3x2x1x0”,则X可以表示为“x7x6x5x4x3x2x1x0”。
表1
示例性的,继续参见上述示例,当i=0时,y2i+1=y1,y2i=y0,y2i-1=y-1,则y-1可以表示y0后的补位数值0(即补位处理后的乘数表示为y7y6y5y4y3y2y1y0y-1),布斯编码过程中,可以对y-1y0y1,y1y2y3,y3y4y5和y5y6y7四组待编码子数据分别进行目标编码,得到4个低位目标编码,其中,每一组待编码子数据中的最高位数值,可以作为相邻下一组待编码子数据中的最低位数值。
可选的,数据处理器还包括所述高位布斯编码单元1114,该高位布斯编码单元1114包括:高位数据输入端口1114a以及高位目标编码输出端口1114b;所述高位数据输入端口1114a用于接收进行布斯编码处理的第一数据中的所述高位数据,所述高位目标编码输出端口1114b用于输出对第一数据中的所述高位数据进行布斯编码处理后,得到的高位目标编码。
具体的,每一次布斯编码处理时,高位布斯编码单元1114对第一数据中的高位数据进行布斯编码处理的方法,与低位布斯编码单元1111对第一数据中的低位数据进行布斯编码处理的方法相同,本实施例不再赘述高位布斯编码单元1114进行布斯编码处理的方法。另外,高位布斯编码单元1114与低位布斯编码单元1111的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述高位布斯编码单元1114的具体结构。
本实施例提供的一种数据处理器,数据处理器通过低位布斯编码单元对第一数据中的低位数据进行布斯编码处理,得到该低位数据对应的低位目标编码,并且通过低位部分积获取单元根据低位目标编码得到目标编码的低位部分积,进而对目标编码的低位部分积以及高位部分积进行累加处理,得到不同模式的数据运算结果,该数据处理器能够实现多种不同模式的数据运算处理,从而提高数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
在其中一个实施例中,数据处理器中包括低位部分积获取单元1112,所述低位部分积获取单元1112包括:低位目标编码输入端口1112a、选通数值输入端口1112b、数据输入端口1112c以及低位部分积输出端口1112d;所述低位目标编码输入端口1112a用于接收所述低位布斯编码单元1111输出的低位目标编码,所述选通数值输入端口1112b用于接收所述低位选择器组单元1116选通后,得到的所述符号位扩展后的低位部分积中的数值,所述数据输入端口1112c用于接收所述第二数据,所述低位部分积输出端口1112d用于输出所述符号位扩展后的低位部分积。
具体的,数据处理器中的低位部分积获取单元1112,通过低位目标编码输入端口1112a可以接收低位布斯编码单元1111输出的低位目标编码,并通过数据输入端口1112c可以接收第二数据中的两个子数据(即被乘数)。可选的,数据处理器中的低位部分积获取单元1112可以根据接收到的低位目标编码,以及接收到的乘法运算或乘累加运算中的被乘数,得到低位数据对应的符号位扩展后的部分积;然后将该符号位扩展后的部分积,与选通的符号位扩展后的低位部分积中的数值进行结合,得到符号位扩展后的低位部分积。可选的,若低位部分积获取单元1112通过数据输入端口1112c接收到的被乘数位宽为N,则低位部分积获取单元1112得到的符号位扩展后的低位部分积的位宽可以等于2N。示例性的,若低位部分积获取单元1112接收到一个N比特位宽的被乘数X,则低位部分积获取单元1112可以根据被乘数X以及五类目标编码(即低位目标编码,-2X,2X,-X,X和0),得到对应的符号位扩展后的部分积,该符号位扩展后的部分积中的低(N+1)位数值可以等于原始部分积包含的数值,符号位扩展后的低位部分积中的高(N-1)位数值均可以等于原始部分积的符号位数值,该符号位数值也就是原始部分积中的最高位数值。当低位目标编码为-2X时,则原始部分积可以为对X进行左右一位后取反再加1,当低位目标编码为2X时,则原始部分积可以为对X进行左移一位,当低位目标编码为-X时,则原始部分积可以为对X按位取反再加1,当低位目标编码为X时,则原始部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据,当低位目标编码为+0时,则原始部分积可以为数值0,也就是9位原始部分积中的每一位数值均等于0。
需要说明的是,数据处理器中的低位部分积获取单元1112可以通过选通数值输入端口1112b,接收低位选择器组单元1116选通的不同模式的数据运算时,得到的符号位扩展后的低位部分积中的对应位数值;然后根据数据处理器当前得到的符号位扩展后的部分积,与选通后的对应位数值进行结合,得到符号位扩展后的低位部分积。
可选的,数据处理器包括所述高位部分积获取单元1115,所述高位部分积获取单元1115包括:高位目标编码输入端口1115a、选通数值输入端口1115b、数据输入端口1115c以及高位部分积输出端口1115d;所述高位目标编码输入端口1115a用于接收高位布斯编码单元1114输出的高位目标编码,所述选通数值输入端口1115b用于接收所述高位选择器组单元1117选通后,输出的所述符号位扩展后的高位部分积中的数值,所述数据输入端口1115c用于接收所述第二数据,所述高位部分积输出端口1115d用于输出所述符号位扩展后的高位部分积。
可以理解的是,低位部分积获取单元1112获取符号位扩展后的低位部分积的方法,与高位部分积获取单元1114获取符号位扩展后的高位部分积的方法相同,本实施例不再赘述高位部分积获取单元1114获取部分积的方法。另外,低位部分积获取单元1112与高位部分积获取单元1114的内部电路结构可以相同,外部输出端口的功能可以类似,本实施例不再赘述高位部分积获取单元1114的具体结构。
本实施例提供的一种数据处理器,数据处理器中的低位部分积获取单元,可以根据每一个低位目标编码得到符号位扩展后的部分积,然后将符号位扩展后的部分积,与低位选择器组单元选通的数值进行结合,得到符号位扩展后的低位部分积,进而根据符号位扩展后的低位部分积得到目标编码的低位部分积,并对目标编码的低位部分积以及目标编码的高位部分积进行累加处理,得到不同模式的数据运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器中包括选择器1113,所述选择器1113包括:功能选择模式信号输入端口(mode)1113a、第一选通数值输入端口1113b、第二选通数值输入端口1113c以及选通结果输出端口1113d;所述功能选择模式信号输入端口1113a用于接收不同模式的数据运算对应的所述功能选择模式信号,所述第一选通数值输入端口1113b用于接收第一选通数值,所述第二选通数值输入端口1113c用于接收第二选通数值,所述选通结果输出端口1113d用于输出选通后的所述第一选通数值或所述第二选通数值。
具体的,选择器1113可以根据功能选择模式信号输入端口1113a接收到的功能选择模式信号,确定修正编码电路111当前需要处理的数据模式,并确定选通结果输出端口1113d输出第一选通数值还是第二选通数值。可选的,第一选通数据可以为数值0或待编码子数据中低位数据的最高位数值,第二选通数据也可以为数值0或待编码子数据中低位数据的最高位数值。也就是,第一选通数值输入端口1113b和第二选通数值输入端口1113c中,其中一个输入端口可以选通数值0,另一个输入端口可以选通待编码子数据中低位数据的最高位数值,本实施例对该对应关系并不做任何限定。
例如,运算处理过程中,若修正编码电路111接收到的第一数据中的两个子数据的位宽为2N,并且当前需要对2N位数据进行布斯编码处理,则选择器1113可以通过第一选通数值输入端口1113b接收第一选通数值,另外,选择器1113也可以通过第二选通数值输入端口1113接收第二选通数值,该第一选通数值或第二选通数值可以等于数值0;若修正编码电路111接收到的第一数据中的两个子数据的位宽为2N,并且当前可以对N位数据进行布斯编码处理,则选择器1113可以通过第一选通数值输入端口1113b接收第一选通数值,另外,选择器1113也可以通过第二选通数值输入端口1113c接收第二选通数值,该第一选通数值或第二选通数值可以为待编码子数据中的最高位数值。
本实施例提供的一种数据处理器,数据处理器通过选择器接收到的功能选择模式信号,可以确定高位数据进行布斯编码处理时的补位数值,从而对补位后的高位数据进行布斯编码处理,从而可以实现不同模式的数据运算处理,提高了数据处理器的通用性。
在其中一个实施例中,数据处理器中包括低位选择器组单元1116,所述低位选择器组单元1116包括:低位选择器1116a,多个所述低位选择器1116a用于对所述符号位扩展后的低位部分积中的数值进行选通。
具体的,上述低位选择器组单元1116中包含的低位选择器1116a的数目,可以等于数据处理器当前进行乘法运算或乘累加运算时被乘数位宽平方的3/8倍,该低位选择器组单元1116中多个低位选择器1116a的内部电路结构可以相同。可选的,若数据处理器当前需要处理N位*N位数据的乘法运算,则每一个低位布斯编码单元1111连接的对应低位部分积获取单元1112中,可以包含2N个数值生成子单元,其中N个数值生成子单元可以连接N个低位选择器1116a,每一个数值生成子单元连接一个低位选择器1116a。可选的,上述N个低位选择器1116a对应的N个数值生成子单元,可以为符号位扩展后的低位部分积中高N位数值对应的数值生成子单元,且该N个低位选择器1116a与选择器1113的内部电路结构可以完全相同。同时,该N个低位选择器1116a的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若数据处理器可以处理四种不同模式的数据运算,并且数据处理器接收到的被乘数位宽是N,则上述低位选择器1116a的两个其它输入端口分别接收的信号可以为数值0,和数据处理器进行N位*N位数据的乘法运算时,该低位部分积获取单元1112得到的对应符号位扩展后的低位部分积中的符号位数值。其中,N/4个低位部分积获取单元1112可以连接N/4组N个低位选择器1116a,各组的N个低位选择器1116a接收到的符号位数值可以相同,也可以不同,但是,同一组的N个低位选择器1116a接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N个低位选择器1116a,对应连接的低位部分积获取单元1112获取的符号位扩展后的低位部分积中的符号位数值得到。
另外,每一个低位部分积获取单元1112包含的2N个数值生成子单元中,对应N/2个数值生成子单元可以不连接低位选择器1116a;此时,该N/2个数值生成子单元获取的数值可以为数据处理器当前所处理乘法运算不同位宽的数据,对应的一个低位数据得到的符号位扩展后的低位部分积中的对应位数值;也就是,N/2个数值生成子单元获取的数值可以为对应符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第((N/2)+1)位至第N位数值之间的所有数值。
需要说明的是,每一个低位部分积获取单元1112包含的2N个数值生成子单元中,剩余的N/2个数值生成子单元也可以连接N/2个低位选择器1116a,每一个数值生成子单元可以连接1个低位选择器1116a,该N/2个低位选择器1116a与选择器1113的内部电路结构可以相同,并且该N/2个低位选择器1116a的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为数据处理器进行N/2位*N/2位数据的乘法运算,得到的对应符号位扩展后的低位部分积中的符号位数值,以及数据处理器进行N位*N位数据的乘法运算,得到的对应符号位扩展后的低位部分积中对应位数值。其中,N/4个低位部分积获取单元1112可以连接N/4组N/2个低位选择器1116a,各组的N/2个低位选择器1116a接收到的符号位数值可以相同,也可以不同,但是,同一组的N/2个低位选择器1116a接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N/2个低位选择器1116a,对应连接的低位部分积获取单元1112获取的符号位扩展后的低位部分积中的符号位数值得到。
另外,各组的N/2个低位选择器1116a接收到的符号位扩展后的低位部分积中对应位数值,可以根据该组低位选择器1116a所连接的低位部分积获取单元1112,获取的符号位扩展后的低位部分积中的对应位数值确定,并且每一组的N/2个低位选择器1116a中,每一个低位选择器1116a接收到的对应位数值可以相同,可以不同。其中,每一个低位部分积获取单元1112中2N个数值生成子单元的位置,可以在上一个低位部分积获取单元1112中2N个数值生成子单元位置的基础上,左移两个数值生成子单元。可选的,符号位扩展后的低位部分积中,只有第一个低位部分积的位宽可以等于2N,剩余的低位部分积都会在上一个低位部分积的基础上少高两位的数值,且最后一个低位部分积的位宽可以等于(3N/2+2)。
可选的,所述高位选择器组单元1117包括:高位选择器1117a,多个所述低位选择器1117a用于对所述符号位扩展后的高位部分积中的数值进行选通。
需要说明的是,高位选择器1117a选通数值的方法,与低位选择器1116a选通数值的方法相同,本实施例对高位选择器1117a选通数值的方法不再赘述。
本实施例提供的一种数据处理器,数据处理器中的低位选择器组单元可以选通符号位扩展后的低位部分积中的数值,得到符号位扩展后的低位部分积,根据符号位扩展后的低位部分积得到目标编码的低位部分积,进而通过压缩电路对目标编码的低位部分积和目标编码的高位部分积进行累加处理,得到不同模式的运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括第一部分积选择子电路112,所述第一部分积选择子电路112包括:功能选择模式信号输入端口(mode)1121、第一部分积输入端口1122、第二部分积输入端口1123、第一部分积输出端口1124以及选通部分积输出端口1125;所述功能选择模式信号输入端口(mode)1121用于接收所述功能选择模式信号,所述第一部分积输入端口1122用于接收所述第一修正编码子电路111输入的所述符号位扩展后的第一部分积,所述第二部分积输入端口1123用于接收所述部分积交换电路13进行交换的所述符号位扩展后的第二部分积,所述第一部分积输出端口1124用于输出需要所述部分积交换电路13进行交换的所述符号位扩展后的第一部分积,所述选通部分积输出端口1125用于输出选通后的所述符号位扩展后的第一部分积,以及接收到的所述符号位扩展后的第二部分积。
具体的,若数据处理器当前可处理2N位*N位数据的乘累加运算,则部分积交换电路13可以交换符号位扩展后的第二部分积以及符号位扩展后的第一部分积,此时,第一部分积选择子电路112可以通过第二部分积输入端口1123,接收部分积交换电路13交换的符号位扩展后的第二部分积,并将需要交换的符号位扩展后的第一部分积通过第一部分积输出端口1124输出至部分积交换电路13。其中,选通部分积输出端口1125可以选通不需要交换的符号位扩展后的第一部分积,以及接收到的符号位扩展后的第二部分积,并且第一部分积选择子电路112将不需要交换的符号位扩展后的第一部分积,和/或接收到的符号位扩展后的第二部分积作为目标编码的部分积,输入至第一修正压缩子电路113进行压缩处理。
本实施例提供的一种数据处理器,通过第一部分积选择子电路可以选择符号位扩展后的部分积,以得到目标编码的部分积,使得数据处理器不仅能够实现同位宽数据的乘法运算以及乘累加运算,还能够实现不同位宽数据的乘累加运算,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括第一修正压缩子电路113,所述第一修正压缩子电路113包括:修正华莱士树组电路1131和累加电路1132,所述修正华莱士树组电路1131的输出端与所述累加电路1132的输入端连接;所述修正华莱士树组电路1131用于对不同模式的数据运算处理时,得到的所述目标编码的第一低位部分积,以及所述目标编码的第一高位部分积中的每一列数值进行累加处理得到累加运算结果,所述累加电路1132用于对所述累加运算结果进行加法运算。
具体的,上述修正华莱士树组电路1131可以对第一修正编码子电路111得到的目标编码的第一低位部分积,以及目标编码的第一高位部分积中的每一列数值进行累加处理,并通过累加电路1132对修正华莱士树组电路1131得到的两个运算结果进行累加处理,得到目标运算结果。其中,通过修正华莱士树组电路1131进行累加处理时,目标编码的所有部分积的分布规律,可以表征为每一行对应目标编码的部分积中最低位数值所处位置,比下一行对应目标编码的部分积中最低位数值所处位置向右错开两位数值,但是,目标编码的所有部分积的分布形式中,每一行对应目标编码的部分积中的最高位数值,均与第一行对应目标编码的部分积中最高位数值位于同一列,修正华莱士树组电路1131按照此分布规律,对目标编码的所有部分积中的每一列数值进行累加处理,其中,目标编码的所有部分积可以包括目标编码的第一低位部分积以及目标编码的第一高位部分积。可选的,上述修正华莱士树组电路1131得到的两个运算结果可以包括和位输出信号Sum与进位输出信号Carry。
示例性的,若数据处理器当前处理16位*16位的定点数乘法运算,通过第一部分积获取电路22得到的目标编码的4个低位部分积,以及4个高位部分积的分布规律如图4a所示,其中,“○”表示低位部分积中的每一位数值,
Figure BDA0002212290190000221
表示高位部分积中的每一位数值,“●”表示低位部分积或高位部分积的符号扩展位数值。
若数据处理器为图3所示的电路结构,则该数据处理器当前处理16位*8位的定点数乘累加运算,通过第一修正压缩子电路113或第二修正压缩子电路123接收到的目标编码的部分积的分布规律如图4b所示,其中,“○”表示第一部分积选择子电路112或第二部分积选择子电路122得到的部分积,
Figure BDA0002212290190000222
表示第一部分积选择子电路112通过部分积交换电路13获取的第二部分积选择子电路122得到的部分积,或者第二部分积选择子电路121通过部分积交换电路13获取的第一部分积选择子电路112得到的部分积。
另外,第二修正压缩子电路123处理数据的方法与第一修正压缩子电路113处理数据的方法相同,并且第二修正压缩子电路123与第一修正压缩子电路113的内部结构,以及外部输出端口的功能也相同,本实施例对第二修正压缩子电路123处理数据的方法和结构均不再赘述。
本实施例提供的一种数据处理器,数据处理器通过修正华莱士树组电路可以对目标编码的低位部分积和高位部分积进行累加处理,并通过累加电路对累加结果进行累加处理,得到目标运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
在其中一个实施例中,数据处理器包括修正华莱士树组电路1131,所述修正华莱士树组电路1131包括:低位华莱士树子电路1131a、选择器1131b以及高位华莱士树子电路1131c,所述低位华莱士树子电路1131a的输出端与所述选择器1131b的输入端连接,所述选择器1131b的输出端与所述高位华莱士树子电路1131c的输入端连接;其中,多个所述低位华莱士树子电路1131a用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果,所述选择器1131b用于选通所述高位华莱士树子电路1131c接收的进位输入信号,多个所述高位华莱士树子电路1131c用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果。
具体的,多个低位华莱士树子电路1131a和多个高位华莱士树子电路1131c的电路结构,均可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现,另外,还可以理解为是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,修正华莱士树组电路1131中高位华莱士树子电路1131c的数目,可以等于数据处理器当前可处理乘法运算或乘累加运算中被乘数的位宽N,还可以等于低位华莱士树子电路1131a的数目,并且各低位华莱士树子电路1131a之间可以串行连接,各高位华莱士树子电路1131c之间也可以串行连接。可选的,最后一个低位华莱士树子电路1131a的输出端与选择器1131b的输入端连接,选择器1131b的输出端与第一个高位华莱士树子电路1131a的输入端连接。可选的,修正华莱士树组电路1131中,每一个低位华莱士树子电路1131a可以对目标编码的所有部分积的每一列进行加法处理,每一个低位华莱士树子电路1131a可以输出两个信号,即进位信号Carryi与一个和位信号Sumi,其中,i可以表示每一个低位华莱士树子电路1131a对应的编号,第一个低位华莱士树子电路1131a的编号为数值0。可选的,每一个低位华莱士树子电路1131a接收到输入信号的数目,可以等于目标编码的第一部分积的数目。其中,修正华莱士树组电路1131中,高位华莱士树子电路1131c与低位华莱士树子电路1131a的数目之和,可以等于2N,目标编码的所有第一部分积中,从最低列至最高列的总列数可以等于2N,N个低位华莱士树子电路1131a可以对目标编码的所有第一部分积的低N列中,每一列进行累加运算,N个高位华莱士树子电路1131c可以对目标编码的所有第一部分积的高N列中的每一列进行累加运算。
示例性的,若当前数据处理器需要执行2N位*2N位数据的乘法运算,此时,选择器1131b可以选通修正华莱士树组电路1131中的最后一个低位华莱士树子电路1131a,输出的进位输出信号CoutN作为修正华莱士树组电路1131中,第一个高位华莱士树子电路1131c接收到的进位输入信号CinN+1;若当前数据处理器需要处理N位*N位数据的乘法运算,此时,选择器1131b可以选通0作为修正华莱士树组电路1131中,第一个高位华莱士树子电路1131c接收到的进位输入信号CinN+1,还可以理解为,数据处理器当前可以将接收到的2N位子数据,划分成高N/2位和低N/2位数据分别进行乘法运算,其中,从第一个低位华莱士树子电路1131a至最后一个低位华莱士树子电路1131a的对应编号i分别为1,2,…,N,从第一个高位华莱士树子电路1131c至最后一个高位华莱士树子电路1131c的对应编号i分别为N+1,N+2,…,2N。
需要说明的是,修正华莱士树组电路1131中每一个低位华莱士树子电路1131a和高位华莱士树子电路1131c,接收到的信号可以包括进位输入信号Cini,部分积数值输入信号,进位输出信号Couti。可选的,每一个低位华莱士树子电路1131a和高位华莱士树子电路1131c接收到的部分积数值输入信号,可以为目标编码的所有第一部分积中对应列的数值,每一个低位华莱士树子电路1131a和高位华莱士树子电路1131c,输出的进位信号Couti的位数可以等于NCout=floor((NI+NCin)/2)-1。其中,NI可以表示低位华莱士树子电路1131a或高位华莱士树子电路1131c的部分积数值输入信号的数目,NCin可以表示低位华莱士树子电路1131a或高位华莱士树子电路1131c的进位输入信号的数目,NCout可以表示低位华莱士树子电路1131a或高位华莱士树子电路1131c最少的进位输出信号的数目,floor(·)可以表示向下取整函数。可选的,修正华莱士树组电路1131中,每一个低位华莱士树子电路1131a或高位华莱士树子电路1131c接收到的进位输入信号,可以为上一个低位华莱士树子电路1131a或高位华莱士树子电路1131c输出的进位输出信号,并且第一个低位华莱士树子电路1131a接收到的进位数输入信号为数值0。其中,第一个高位华莱士树子电路1131c接收到的进位数输入信号,可以通过数据处理器当前所处理不同模式的数据位宽,与数据处理器需要处理的乘法运算或乘累加运算中被乘数的位宽确定。
本实施例提供的一种数据处理器,数据处理器通过修正华莱士树组电路可以对目标编码的部分积进行累加处理得到两路输出信号,并通过累加电路对该两路输出信号进行累加处理,得到不同模式的数据运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
在其中一个实施例中,数据处理器包括累加电路1132,所述累加电路1132包括:加法器1132a,所述进位加法器1132a用于对所述累加运算结果进行加法运算。
具体的,加法器1132a可以为不同位宽的进位加法器。可选的,加法器1132a可以接收修正华莱士树组电路1131输出的两路信号,对两路输出信号进行加法运算,输出数据处理器当前所处理模式的数据运算结果。可选的,上述加法器1132a可以为超前进位加法器,该超前进位加法器对应处理数据的位宽可以等于修正华莱士树组电路1131输出运算结果的位宽。
本实施例提供的一种数据处理器,数据处理器通过累加电路可以对修正华莱士树组电路输出的两路信号进行累加处理,输出不同模式的数据运算结果,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
在其中一个实施例中,数据处理器包括第二部分积选择子电路122,所述第二部分积选择子电路122包括:功能选择模式信号输入端口(mode)1221、第二部分积输入端口1222、第一部分积输入端口1223、第二部分积输出端口1224以及选通部分积输出端口1225;所述功能选择模式信号输入端口(mode)1221用于接收所述功能选择模式信号,所述第二部分积输入端口1222用于接收所述第二修正编码子电路121输出的所述符号位扩展后的第二部分积,所述第一部分积输入端口1223用于接收所述部分积交换电路13交换的所述符号位扩展后的第一部分积,所述第二部分积输出端口1224用于输出需要所述部分积交换电路13进行交换的所述符号位扩展后的第二部分积,所述选通部分积输出端口1225用于输出选通后的所述符号位扩展后的第二部分积,以及接收到的所述符号位扩展后的第一部分积。
具体的,若数据处理器当前可处理2N位*N位数据的乘累加运算,则部分积交换电路13可以交换符号位扩展后的第二部分积以及符号位扩展后的第一部分积,此时,第二部分积选择子电路122可以通过第一部分积输入端口1223,接收部分积交换电路13交换的符号位扩展后的第一部分积,并将需要交换的符号位扩展后的第二部分积通过第二部分积输出端口1224输出至部分积交换电路13。其中,选通部分积输出端口1225可以选通不需要交换的符号位扩展后的第二部分积,以及接收到的符号位扩展后的第一部分积,并且第二部分积选择子电路122将不需要交换的符号位扩展后的第二部分积,和/或接收到的符号位扩展后的第一部分积作为目标编码的部分积,输入至第二修正压缩子电路123进行压缩处理。
本实施例提供的一种数据处理器,数据处理器通过第二部分积选择子电路可以选择符号位扩展后的部分积,以得到目标编码的部分积,使得数据处理器不仅能够实现同位宽数据的乘法运算以及乘累加运算,还能够实现不同位宽数据的乘累加运算,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括部分积交换电路13,所述部分积交换电路13包括:功能选择模式信号输入端口(mode)131、第一部分积输入端口132、第一部分积输出端口133、第二部分积输入端口134以及第二部分积输出端口135,所述功能选择模式信号输入端口(mode)131用于接收所述功能选择模式信号,所述第一部分积输入端口132用于接收所述第一乘法运算电路11输入的需要交换的符号位扩展后的第一部分积,所述第一部分积输出端口133用于输出所述符号位扩展后的第一部分积,所述第二部分积输出端口134用于接收所述第二乘法运算电路12输入的需要交换的符号位扩展后的第二部分积,所述第二部分积输出端口135用于输出所述符号位扩展后的第二部分积。
具体可以理解的是,部分积交换电路13根据功能选择模式信号输入端口(mode)131,接收到的功能选择模式信号,确定当前是否需要交换符号位扩展后的第一部分积以及符号位扩展后的第二部分积,此时,部分积交换电路13可以交换符号位扩展后的第一低位部分积与符号位扩展后的第二低位部分积,或者交换符号位扩展后的第一高位部分积与符号位扩展后的第二高位部分积。但是,在本实施例中,只有当数据处理器需要执行2N位*N位数据的乘累加运算时,部分积交换电路13才需要交换符号位扩展后的部分积,执行其它三种模式的数据运算时,部分积交换电路13可以不需要进行交换处理。
本实施例提供的一种数据处理器,数据处理器通过第一部分积交换电路可以交换第一乘法运算电路得到的符号位扩展后的第一部分积,与第二乘法运算电路得到的符号位扩展后的第二部分积,进而实现2N位*N位数据的乘累加运算,该数据处理器不仅能够实现同位宽数据的乘法运算以及乘累加运算,还能够实现不同位宽数据的乘累加运算,从而提高了数据处理器的通用性。
图5为另一实施例提供的一种数据处理器的具体结构示意图,该数据处理器包括布斯编码电路21,所述布斯编码电路21包括低位布斯编码单元211、选择器212以及高位布斯编码单元213,所述低位布斯编码单元211的输出端与所述选择器212的输入端连接,所述选择器212的输出端与所述高位布斯编码单元213的输入端连接。其中,所述低位布斯编码单元211用于对接收到的所述第一数据中的低位数据,进行布斯编码处理得到低位目标编码,所述选择器212用于接收所述功能选择模式信号,并根据所述功能选择模式信号选通所述第一数据中的高位数据,进行布斯编码处理时的补位数值,所述高位布斯编码单元213用于对接收到的所述第一数据中的高位数据,以及所述补位数值进行布斯编码处理得到高位目标编码。
具体的,数据处理器可以根据选择器213接收到的功能选择模式信号,确定布斯编码电路21当前需要处理的数据位宽是N还是2N。若布斯编码电路21当前需要处理的数据位宽是N时,则布斯编码电路21可以自动将2N位子数据,划分成高N位数据(即高位数据)和低N位数据(即低位数据),并分别对这两部分数据进行布斯编码处理;若布斯编码电路21当前需要处理的数据位宽是2N时,则布斯编码电路21可以将两个2N位子数据作为整体,对这两个子数据进行布斯编码处理。另外,无论布斯编码电路21当前需要处理的数据位宽,与布斯编码电路21接收到的第一数据中子数据的位宽是否相同,实现布斯编码处理时,低位布斯编码单元211都需要自动对待编码数据中的低位数据进行补位处理,此时补位的数据为数值0。
例如,若布斯编码电路21当前需要对2N位数据进行处理,也就是,布斯编码电路21需要对第一数据中的完整子数据A进行布斯编码处理,其中,子数据A中的高位数据表示为A1,低位数据表示为A2,则低位布斯编码单元211可以对A2进行布斯编码处理,并且自动对A2进行补位处理,此时的补位数值为数值0,在编码处理过程中,选择器212可以选通低位数据A2中的最高位数值,并将该最高位数值作为高位布斯编码单元213对高位数据A1,进行布斯编码处理时的补位数值;若布斯编码电路21当前需要对N位数据进行处理,相当于布斯编码电路21需要对子数据A中的高位数据A1,以及低位数据A2分别进行布斯编码处理,此时,选择器212可以选通0,作为高位布斯编码单元213对高位数据A1进行布斯编码处理时的补位数值。
需要说明的是,第一数据可以包括两个2N位子数据,若布斯编码电路21当前需要对2N位数据进行编码处理,则第一数据中的低位数据可以包括两个2N位子数据中对应的两个低位数据;若布斯编码电路21当前需要对N位数据进行处理,相当于将两个2N位子数据分别划分成两个N位子数据,即四个N位子数据,此时,第一数据中的低位数据可以包括两个2N位子数据对应的四个低位数据。另外,布斯编码过程中,布斯编码电路21得到的低位目标编码的数目可以等于得到的高位目标编码的数目,还可以等于低位数据对应的目标编码的第一低位部分积的数目,或高位数据对应的目标编码的第一高位部分积的数目。另外,若数据处理器当前处理一个N位*N位数据的乘法运算,此时,第一数据和第二数据中均有一个子数据为数值0,另一个子数据中高N位或低N位数值全为数值0,另外,若数据处理器当前处理一个2N位*2N位数据的乘法运算,此时,第一数据和第二数据中均有一个子数据为数值0,另一个子数据均为2N位非0数值。
还可以理解的是,若布斯编码电路21当前需要对2N位数据进行处理,则布斯编码电路21可以包含N个低位布斯编码单元211,包含N个高位布斯编码单元213以及1个选择器212;若布斯编码电路21当前需要对N位数据进行处理,则布斯编码电路21可以包含N/2个低位布斯编码单元211,包含N/2个高位布斯编码单元213以及1个选择器212。
本实施例提供的一种数据处理器,数据处理器通过布斯编码电路中的低位布斯编码单元,选择器以及高位布斯编码单元,对接收到的第一数据进行布斯编码处理,得到低位目标编码及高位目标编码,进而根据低位目标编码以及高位目标编码,实现多种不同模式的数据运算处理,该数据处理器能够实现多种不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
在其中一个实施例中,数据处理器包括所述低位布斯编码单元211,该低位布斯编码单元211包括:低位数据输入端口2111以及低位目标编码输出端口2112。所述低位数据输入端口2111用于接收进行布斯编码处理的所述第一数据中的低位数据,所述低位目标编码输出端口2112用于输出对第一数据中的所述低位数据进行布斯编码处理后,得到的第一低位目标编码。
可选的,数据处理器还包括所述高位布斯编码单元213,该高位布斯编码单元213包括:高位数据输入端口2131以及高位目标编码输出端口2132;所述高位数据输入端口2131用于接收进行布斯编码处理的第一数据中的所述高位数据,所述高位目标编码输出端口2132用于输出对第一数据中的所述高位数据进行布斯编码处理后,得到的高位目标编码。
具体的,每一次布斯编码处理时,高位布斯编码单元213对第一数据中的高位数据进行布斯编码处理的方法,与低位布斯编码单元211对第一数据中的低位数据进行布斯编码处理的方法相同,本实施例不再赘述高位布斯编码单元213进行布斯编码处理的方法。另外,高位布斯编码单元213与低位布斯编码单元211的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述高位布斯编码单元213的具体结构。
本实施例提供的一种数据处理器,数据处理器通过低位布斯编码单元对第一数据中的低位数据进行布斯编码处理,得到该低位数据对应的低位目标编码,并且通过低位部分积获取单元根据低位目标编码得到目标编码的低位部分积,进而对目标编码的低位部分积以及高位部分积进行累加处理,得到不同模式的数据运算结果,该数据处理器能够实现多种不同模式的数据运算处理,从而提高数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
在其中一个实施例中,数据处理器包括所述选择器212,该选择器212包括:功能选择模式信号输入端口(mode)2121、第一选通数值输入端口2122、第二选通数值输入端口2123以及选通结果输出端口2124;所述功能选择模式信号输入端口2121用于接收不同模式的数据运算对应的所述功能选择模式信号,所述第一选通数值输入端口2122用于接收第一选通数值,所述第二选通数值输入端口2123用于接收第二选通数值,所述选通结果输出端口2124用于输出选通后的所述第一选通数值或所述第二选通数值。
具体的,选择器212可以根据功能选择模式信号输入端口2121接收到的功能选择模式信号,确定布斯编码电路21当前需要处理的数据模式,并确定选通结果输出端口2124输出第一选通数值还是第二选通数值。可选的,第一选通数据可以为数值0或待编码子数据中低位数据的最高位数值,第二选通数据也可以为数值0或待编码子数据中低位数据的最高位数值。也就是,第一选通数值输入端口2122和第二选通数值输入端口2123中,其中一个输入端口可以选通数值0,另一个输入端口可以选通待编码子数据中低位数据的最高位数值,本实施例对该对应关系并不做任何限定。
本实施例提供的一种数据处理器,数据处理器通过选择器接收到的功能选择模式信号,可以确定高位数据进行布斯编码处理时的补位数值,从而对补位后的高位数据进行布斯编码处理,从而可以实现不同模式的数据运算处理,提高了数据处理器的通用性。
作为其中一个实施例,数据处理器中的所述第一部分积获取电路22包括:低位部分积获取单元221、低位选择器组单元222、高位部分积获取单元223以及高位选择器组单元224;所述低位部分积获取单元221的第一输入端与所述低位布斯编码单元211的输出端连接,所述低位部分积获取单元221的第二输入端与所述低位选择器组单元222的输出端连接,所述高位部分积获取单元223的第一输入端与所述高位布斯编码单元213的输出端连接,所述高位部分积获取单元223的第二输入端与所述高位选择器组单元224的输出端连接。
其中,所述低位部分积获取单元221用于根据所述低位目标编码以及所述第二数据,得到符号位扩展后的第一低位部分积,并根据所述符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,所述低位选择器组单元222用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元223根据所述高位目标编码以及所述第二数据,得到符号位扩展后的第一高位部分积,并根据所述符号位扩展后的第一高位部分积得到目标编码的第一高位部分积,所述高位选择器组单元224用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一高位部分积中的数值。
具体可以理解的是,数据处理器中的低位部分积获取单元221可以根据低位布斯编码单元211输入的每一个低位目标编码,得到对应的符号位扩展后的部分积;上述低位选择器组单元222可以选通符号位扩展后的第一低位部分积中的数值;然后将符号位扩展后的部分积与选通后的符号位扩展后的第一低位部分积中的数值进行结合,得到符号位扩展后的第一低位部分积;同理,数据处理器中的高位部分积获取单元223可以根据高位布斯编码单元213输入的每一个高位目标编码,得到第一数据中的高位数据对应的符号位扩展后的部分积;上述高位选择器组单元224可以选通符号位扩展后的第一高位部分积中的数值;然后将符号位扩展后的部分积与选通后的符号位扩展后的第一高位部分积中的数值,得到符号位扩展后的第一高位部分积。
需要说明的是,若数据处理器当前可处理2N位*2N位数据的乘法运算,则第一部分积获取电路22可以包含N/2个低位部分积获取单元221以及N/2个高位部分积获取单元223,此时,每一个低位部分积获取单元221和每一个高位部分积获取单元223中,均可以包含4N个数值生成子单元;若数据处理器当前需要对N位数据进行处理,则第一部分积获取电路22可以包含N/4个低位部分积获取单元221以及N/4个高位部分积获取单元223,此时,每一个低位部分积获取单元221和每一个高位部分积获取单元223中,均可以包含2N个数值生成子单元。可选的,每一个数值生成子单元可以获取符号位扩展后的第一部分积中的一个数值。
另外,第一部分积获取电路22获取符号位扩展后的第一部分积的方法,与第二部分积获取电路23获取符号位扩展后的第二部分积的方法相同,本实施例不再赘述第二部分积获取电路23获取部分积的方法。另外,第一部分积获取电路22与第二部分积获取电路23的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述第二部分积获取电路23的具体结构。
进一步地,第一部分积获取电路22可以根据所有符号位扩展后的第一低位部分积,得到对应的目标编码的第一低位部分积,所有目标编码的低位部分积的分布规律可以表征为,第一个目标编码的第一低位部分积可以等于第一个符号位扩展后的第一低位部分积,即低位目标编码中最低位数值对应的符号位扩展后的第一低位部分积,从第二个目标编码的第一低位部分积开始,每一个目标编码的第一低位部分积中的最高位数值,与第一个目标编码的第一低位部分积中的最高位数值位于同一列,每一个目标编码的第一低位部分积,可以等于对应符号位扩展后的第一低位部分积,且该符号位扩展后的第一低位部分积的最低位数值,与上一个目标编码的第一低位部分积的次高位数值位于同一列,也就是,对应符号位扩展后的第一低位部分积超出第一个目标编码的第一低位部分积中最高列数值的多个数值不参与后续运算。
同时,第一部分积获取电路22可以根据所有符号位扩展后的第一高位部分积,得到对应的目标编码的第一高位部分积,所有目标编码的第一高位部分积的分布规律可以表征为,第一个目标编码的第一高位部分积可以位于最后一个目标编码的第一低位部分积的下一个目标编码的第一部分积,即高位目标编码中的最低位数值对应的目标编码的第一部分积,第一个目标编码的第一高位部分积的位宽可以等于最后一个目标编码的第一低位部分积的位宽减1,也就是,第一个目标编码的第一高位部分积可以等于第一个符号位扩展后的第一高位部分积,且该符号位扩展后的第一高位部分积的最低位数值,与最后一个目标编码的第一低位部分积的次高位数值位于同一列,相当于,第一个符号位扩展后的第一高位部分积超出最后一个目标编码的第一低位部分积中最高列数值的多个数值不参与后续运算,从第二个目标编码的高位部分积开始,每一个目标编码的第一高位部分积中的最高位数值,与第一个目标编码的第一高位部分积中的最高位数值位于同一列,每一个目标编码的第一高位部分积,可以等于对应符号位扩展后的第一高位部分积,且该符号位扩展后的第一高位部分积的最低位数值,与上一个目标编码的第一高位部分积的次高位数值位于同一列,也就是,对应符号位扩展后的第一高位部分积超出第一个目标编码的第一高位部分积中最高列数值的多个数值不参与后续运算。
可选的,所述第二部分积获取电路23包括低位部分积获取单元231、低位选择器组单元232、高位部分积获取单元233以及高位选择器组单元234;所述低位部分积获取单元231的第一输入端与所述低位布斯编码单元211的输出端连接,所述低位部分积获取单元231的第二输入端与所述低位选择器组单元232的输出端连接,所述高位部分积获取单元233的第一输入端与所述高位布斯编码单元213的输出端连接,所述高位部分积获取单元233的第二输入端与所述高位选择器组单元234的输出端连接。
其中,所述低位部分积获取单元231用于根据所述低位目标编码以及所述第二数据,得到符号位扩展后的第一低位部分积,并根据所述符号位扩展后的第一低位部分积得到目标编码的第一低位部分积,所述低位选择器组单元232用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一低位部分积中的数值,所述高位部分积获取单元233根据所述高位目标编码以及所述第二数据,得到符号位扩展后的第一高位部分积,并根据所述符号位扩展后的第一高位部分积得到目标编码的第一高位部分积,所述高位选择器组单元234用于根据接收到的所述功能选择模式信号,选通所述符号位扩展后的第一高位部分积中的数值。
在本实施例中,第二部分积获取电路23的内部电路结构与功能,和第一部分积获取电路22的内部电路结构与功能相同,对此本实施例不再对第二部分积获取电路23的具体结构及功能进行详细说明。
本实施例提供的一种数据处理器,数据处理器通过低位部分积获取单元、高位部分积获取单元以及选择器组单元,根据低位及高位目标编码,得到符号位扩展后的第一部分积,根据符号位扩展后的第一部分积得到目标编码的第一部分积,进而对目标编码的第一部分积进行累加处理,得到运算结果,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗;另外,数据处理器还可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括所述低位部分积获取单元221,该低位部分积获取单元221包括:低位目标编码输入端口2211、选通数值输入端口2212、数据输入端口2213以及低位部分积输出端口2214;所述低位目标编码输入端口2211用于接收所述低位布斯编码单元211输出的低位目标编码,所述选通数值输入端口2212用于接收所述低位选择器组单元222选通后,得到的所述符号位扩展后的低位部分积中的数值,所述数据输入端口2213用于接收所述第二数据,所述低位部分积输出端口2214用于输出所述符号位扩展后的低位部分积。
具体的,低位部分积获取单元221通过低位目标编码输入端口2211可以接收低位布斯编码单元211输出的低位目标编码,并通过数据输入端口2213可以接收第二数据中的两个子数据(即被乘数)。可选的,低位部分积获取单元221可以根据接收到的低位目标编码,以及接收到的乘法运算或乘累加运算中的被乘数,得到低位数据对应的符号位扩展后的低位部分积。可选的,若数据输入端口2213接收到的被乘数位宽为N,则符号位扩展后的低位部分积的位宽可以等于2N。
需要说明的是,低位部分积获取单元221可以通过选通数值输入端口2212,接收低位选择器组单元222选通的不同模式的数据运算时,得到的符号位扩展后的低位部分积中的对应位数值,并根据数据处理器当前得到的符号位扩展后的低位部分积,以及选通后的对应位数值,得到符号位扩展后的低位部分积。
可选的,数据处理器包括所述高位部分积获取单元223,所述高位部分积获取单元223包括:高位目标编码输入端口2231、选通数值输入端口2232、数据输入端口2233以及高位部分积输出端口2234;所述高位目标编码输入端口2231用于接收高位布斯编码单元223输出的高位目标编码,所述选通数值输入端口2232用于接收所述高位选择器组单元224选通后,输出的所述符号位扩展后的高位部分积中的数值,所述数据输入端口2233用于接收所述第二数据,所述高位部分积输出端口2234用于输出所述符号位扩展后的高位部分积。
可以理解的是,低位部分积获取单元221获取符号位扩展后的低位部分积的方法,与高位部分积获取单元223获取符号位扩展后的高位部分积的方法相同,本实施例不再赘述高位部分积获取单元223获取部分积的方法。另外,低位部分积获取单元221与高位部分积获取单元223的内部电路结构可以相同,外部输出端口的功能可以类似,本实施例不再赘述高位部分积获取单元223的具体结构。
本实施例提供的一种数据处理器,数据处理器通过低位部分积获取单元可以根据每一个低位目标编码得到符号位扩展后的低位部分积,并且低位部分积获取单元根据符号位扩展后的低位部分积,以及低位选择器组单元选通的数值,得到符号位扩展后的低位部分积,根据符号位扩展后的低位部分积得到目标编码的低位部分积,进而对目标编码的低位部分积以及高位部分积进行累加处理,得到不同模式的数据运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括低位选择器组单元222,所述低位选择器组单元222包括:低位选择器2221,多个所述低位选择器2221用于对所述符号位扩展后的低位部分积中的数值进行选通。
具体的,上述低位选择器组单元222中包含的低位选择器2221数目,可以等于数据处理器当前进行乘法运算或乘累加运算时被乘数位宽平方的3/8倍,该低位选择器组单元222中多个低位选择器2221的内部电路结构可以相同。可选的,若数据处理器当前需要处理N位*N位数据的乘法运算,则每一个低位布斯编码单元211连接的对应低位部分积获取单元221中,可以包含2N个数值生成子单元,其中N个数值生成子单元可以连接N个低位选择器2221,每一个数值生成子单元连接一个低位选择器2221。可选的,上述N个低位选择器2221对应的N个数值生成子单元,可以为目标编码的低位部分积中高N位数值对应的数值生成子单元,且该N个低位选择器2221与选择器212的内部电路结构可以完全相同,同时,该N个低位选择器2221的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若数据处理器可以处理四种不同模式的数据运算,并且数据处理器接收到的被乘数位宽是N,则上述低位选择器2221的两个其它输入端口分别接收的信号可以为数值0,和数据处理器进行N位*N位数据的乘法运算时,该低位部分积获取单元221得到的对应符号位扩展后的低位部分积中的符号位数值。其中,N/4个低位部分积获取单元221可以连接N/4组N个低位选择器2221,各组的N个低位选择器2221接收到的符号位数值可以相同,也可以不同,但是,同一组的N个低位选择器2221接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N个低位选择器2221,对应连接的低位部分积获取单元221获取的符号位扩展后的低位部分积中的符号位数值得到。
另外,每一个低位部分积获取单元221包含的2N个数值生成子单元中,对应N/2个数值生成子单元可以不连接低位选择器2221,此时,该N/2个数值生成子单元获取的数值可以为数据处理器当前所处理乘法运算不同位宽的数据,对应的一个低位数据得到的符号位扩展后的低位部分积中的对应位数值,也可以理解为,N/2个数值生成子单元获取的数值可以为对应符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(N/2)+1位至第N位数值之间的所有数值。
需要说明的是,每一个低位部分积获取单元221包含的2N个数值生成子单元中,剩余的N/2个数值生成子单元也可以连接N/2个低位选择器2221,每一个数值生成子单元可以连接1个低位选择器2221,该N/2个低位选择器2221与选择器212的内部电路结构可以相同,并且该N/2个低位选择器2221的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为数据处理器进行N/2位*N/2位数据的乘法运算,得到的对应符号位扩展后的低位部分积中的符号位数值,以及数据处理器进行N位*N位数据的乘法运算,得到的对应符号位扩展后的低位部分积中对应位数值。其中,N/4个低位部分积获取单元221可以连接N/4组N/2个低位选择器2221,各组的N/2个低位选择器2221接收到的符号位数值可以相同,也可以不同,但是,同一组的N/2个低位选择器2221接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N/2个低位选择器2221,对应连接的低位部分积获取单元221获取的符号位扩展后的低位部分积中的符号位数值得到。
另外,各组的N/2个低位选择器2221接收到的符号位扩展后的低位部分积中对应位数值,可以根据该组低位选择器2221所连接的低位部分积获取单元221,获取的符号位扩展后的低位部分积中的对应位数值确定,并且每一组的N/2个低位选择器2221中,每一个低位选择器2221接收到的对应位数值可以相同,可以不同。其中,每一个低位部分积获取单元221中2N个数值生成子单元的位置,可以在上一个低位部分积获取单元221中2N个数值生成子单元位置的基础上,左移两个数值生成子单元。
本实施例提供的一种数据处理器,数据处理器中的低位选择器组单元可以选通低位部分积中的数值,得到符号位扩展后的低位部分积,根据符号位扩展后的低位部分积得到目标编码的低位部分积,进而通过压缩电路对目标编码的低位部分积和高位部分积进行累加处理,得到不同模式的运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
在其中一个实施例中,数据处理器包括所述高位选择器组单元224,该高位选择器组单元224包括:高位选择器2241,多个所述高位选择器2241用于对所述符号位扩展后的高位部分积中的数值进行选通。
具体的,上述高位选择器组单元224中高位选择器2241的数目,可以等于数据处理器当前进行乘法运算或乘累加运算中被乘数位宽平方的3/8倍,该高位选择器组单元224中多个高位选择器2241的内部电路结构可以相同。可选的,若数据处理器当前需要处理N位*N位数据的乘法运算,则每一个高位布斯编码单元213连接的对应高位部分积获取单元223中,可以包含2N个数值生成子单元,其中,N个数值生成子单元可以连接N个高位选择器2241,每一个数值生成子单元连接一个高位选择器2241,其中,N表示数据处理器当前接收到的被乘数的位宽。可选的,上述N个高位选择器2241对应的N个数值生成子单元,可以为目标编码的高位部分积中低N位数值对应的数值生成子单元,且该N个高位选择器2241与选择器113的内部电路结构可以完全相同,同时,该N个高位选择器2241的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口。可选的,若数据处理器可以处理四种不同模式的数据运算处理,并且数据处理器接收到的被乘数的位宽是N,则上述高位选择器2241的两个其它输入端口分别接收的信号可以为数值0,以及数据处理器进行N位*N位数据的乘法运算时,该高位布斯编码单元213得到的对应符号位扩展后的高位部分积中的符号位数值。其中,N/4个高位部分积获取单元223可以连接N/4组N个高位选择器2241,各组的N个高位选择器2241接收到的对应位数值可以相同,也可以不同。
另外,每一个高位部分积获取单元223包含的2N个数值生成子单元中,对应N/2个数值生成子单元可以连接N/2个高位选择器2241,每一个数值生成子单元可以连接1个高位选择器2241,该N/2个高位选择器2241与选择器212的内部电路结构可以相同,并且该N/2个高位选择器2241的外部输入端口除了功能选择模式信号输入端口(mode)外,还有两个其它输入端口,这两个其它输入端口分别接收的信号,可以为数据处理器对N/2位*N/2位数据进行乘法运算,得到的对应符号位扩展后的高位部分积中的符号位数值,和数据处理器对N位*N位数据进行乘法运算,得到的对应符号位扩展后的高位部分积中的符号位数值。其中,N/4个高位部分积获取单元223可以连接N/4组N/2个高位选择器2241,各组的N/2个高位选择器2241接收到的符号位数值可以相同,也可以不同,但是,同一组的N/2个高位选择器2241接收到的符号位数值是相同的,并且该符号位数值可以根据每一组N/2个高位选择器2241对应连接的高位部分积获取单元223,获取的符号位扩展后的高位部分积中的符号位数值得到。另外,各组的N/2个高位选择器2241接收到的符号位扩展后的高位部分积中对应位数值,可以根据该组高位选择器2241所连接的高位部分积获取单元223,获取的符号位扩展后的高位部分积中的符号位数值确定,并且每一组的N/2个高位选择器2241中,每一个高位选择器2241接收到的对应位数值可以相同,可以不同。
需要说明的是,每一个高位部分积获取单元223包含的2N个数值生成子单元中,剩余的N/2个数值生成子单元可以不连接高位选择器2241,此时,该N/2个数值生成子单元获取的数值可以为数据处理器当前所处理乘法运算,不同位宽的数据对应的一个高位数据得到的符号位扩展后的高位部分积中的对应位数值,也可以理解为,N/2个数值生成子单元获取的数值可以为对应符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(N+1)位至第3N/2位数值之间的所有数值。其中,每一个高位部分积获取单元223中2N个数值生成子单元的位置,可以在上一个高位部分积获取单元223中2N个数值生成子单元位置的基础上,左移两个数值生成子单元。可选的,目标编码的高位部分积中,只有第一个高位部分积的位宽可以等于3N/2,剩余的高位部分积都会在上一个高位部分积的基础上少高两位的数值。
本实施例提供的一种数据处理器,数据处理器中的高位选择器组单元可以选通高位部分积中的数值,得到目标编码的高位部分积,进而通过压缩电路对目标编码的高位部分积和低位部分积进行累加处理,得到不同模式的运算结果,该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性。
图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和多个高位华莱士树子电路2413的电路结构,均可以由全加器和半加器组合实现,还可以由4-2压缩器组合实现,另外,还可以理解为是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,修正华莱士树组电路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列中的每一列进行累加运算。
可选的,所述修正华莱士树组电路251包括:低位华莱士树子电路2511、选择器2512以及高位华莱士树子电路2513,所述低位华莱士树子电路2511的输出端与所述选择器2512的输入端连接,所述选择器2512的输出端与所述高位华莱士树子电路2513的输入端连接;其中,多个所述低位华莱士树子电路2511用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果,所述选择器2512用于选通所述高位华莱士树子电路2513接收的进位输入信号,多个所述高位华莱士树子电路2513用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果。
在本实施例中,修正华莱士树组电路241的内部电路结构及功能,和修正华莱士树组电路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中根据所述功能选择模式信号,对所述待处理数据进行编码处理,得到目标编码的步骤,包括:根据所述功能选择模式信号,确定所述数据处理器当前可处理的对应模式的数据运算;根据所述对应模式的数据运算,对所述待处理数据进行布斯编码处理,得到目标编码。
具体的,数据处理器根据接收到的功能选择模式信号,可以确定当前可处理的具体模式数据运算。其中,待处理数据中包含的两个待处理子数据的位宽均为2N,则数据处理器根据待处理子数据的位宽以及当前需要处理的对应模式的数据运算,可以确定第一乘法运算电路以及第二乘法运算电路当前需要对N位数据,或者2N位数据进行布斯编码处理,以得到两组对应的目标编码。需要说明的是,第一乘法运算电路以及第二乘法运算电路均可以对接收到的乘数进行布斯编码处理,不需要对接收到的被乘数进行布斯编码处理。
需要说明的是,布斯编码的目标编码规则可以参见表1以及上述第一修正编码子电路111结构的相关实施例。可选的,上述目标编码可以包括第一乘法运算电路得到的第一目标编码,以及第二乘法运算电路得到的第二目标编码。其中,目标编码可以为乘法运算或乘累加运算处理时乘数中相邻的三位数值。
S103、通过所述目标编码以及所述待处理数据得到符号位扩展后的部分积。
具体的,第一乘法运算电路以及第二乘法运算电路均可以根据得到的目标编码,与接收到的待处理数据中的待处理子数据(即被乘数),得到对应的符号位扩展后的部分积。其中,该符号位扩展后的部分积的位宽可以等于运算处理过程中对应被乘数位宽的2倍。可选的,符号位扩展后的部分积可以包括第一乘法运算电路得到的符号位扩展后的第一部分积,以及第二乘法运算电路得到的符号位扩展后的第二部分积。
S104、根据所述功能选择模式信号以及所述符号位扩展后的部分积,获取目标编码的部分积。
可以理解的是,数据处理器通过功能选择模式信号可以确定当前需要处理对应模式的数据运算,并根据符号位扩展后的第一部分积和/或符号位扩展后的第一部分积,确定目标编码的第一部分积,根据符号位扩展后的第一部分积和/或符号位扩展后的第一部分积,确定目标编码的第二部分积。其中,上述目标编码的部分积可以包括第一乘法运算电路得到的目标编码的第一部分积,以及第二乘法运算电路得到的目标编码的第二部分积。
S105、对所述目标编码的部分积进行压缩处理,得到目标运算结果。
具体的,上述压缩处理可以称为累加运算处理。另外,目标运算结果可以为数据处理器执行N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算或2N位*N位数据的乘累加运算的结果。其中,N位*N位数据的乘累加运算是在目标编码部分积压缩处理时,数据处理器可以直接把两个待处理数据得到的目标编码的所有部分积,压缩成一个进位信号以及一个和位信号,再对这两个信号累加处理得到一个目标运算结果。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能选择模式信号确定当前可处理对应模式的数据运算,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
在其中一个实施例中,上述S103中通过所述目标编码以及所述待处理数据得到符号位扩展后的部分积的步骤,包括:
S1031、通过第一目标编码以及所述待处理数据,得到符号位扩展后的第一部分积。
具体的,数据处理器确定当前可处理对应模式的数据运算后,第一乘法运算电路可以根据得到的第一目标编码以及接收到的待处理数据中的待处理子数据(即被乘数),得到对应符号位扩展后的第一部分积。
例如,待处理数据中的两个待处理子数据的位宽均为2N比特,作为被乘数的待处理子数据可以表示为X,则第一目标编码可以包括五类信号,分别为-2X,2X,-X,X和0。另外,若数据处理器当前可处理的是N位*N位数据的乘法运算,第一乘法运算结果可以根据被乘数X和第一目标编码,直接得到对应的符号位扩展后的第一部分积,此时,符号位扩展后的第一部分积的位宽可以等于2N,该符号位扩展后的第一部分积中的低(N+1)位数值可以等于原始部分积包含的数值,符号位扩展后的第一部分积中的高(N-1)位数值均可以等于原始部分积的符号位数值,该符号位数值也就是原始部分积中的最高位数值。当第一目标编码为-2X时,则原始部分积可以为对X进行左右一位后取反再加1,当第一目标编码为2X时,则原始部分积可以为对X进行左移一位,当第一目标编码为-X时,则原始部分积可以为对X按位取反再加1,当第一目标编码为X时,则原始部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据,当第一目标编码为+0时,则原始部分积可以为数值0,也就是9位原始部分积中的每一位数值均等于0。
S1032、通过第二目标编码以及所述待处理数据,得到符号位扩展后的第二部分积。
可以理解的是,数据处理器确定当前可处理对应模式的数据运算后,第二乘法运算电路可以根据得到的第二目标编码以及接收到的待处理数据中的待处理子数据(即被乘数),得到对应符号位扩展后的第二部分积。
本实施例提供的一种数据处理方法,数据处理器通过第一乘法运算电路得到符号位扩展后的第一部分积,通过第二乘法运算电路得到符号位扩展后的第二部分积,以根据数据处理器当前可处理对应模式的数据运算,符号位扩展后的第一部分积以及符号位扩展后的第二部分积,确定目标编码的部分积,从而实现不同模式的数据运算,提高了数据处理器的通用性。
在其中一个实施例中,上述S104中根据所述功能选择模式信号以及所述符号位扩展后的部分积,获取目标编码的部分积的步骤,包括:
S1041、根据所述功能选择模式信号,确定数据处理器当前可处理对应模式的数据运算。
具体的,数据处理器根据接收到的不同功能选择模式信号,可以确定当前可处理的具体模式数据运算。
S1042、根据所述对应模式的数据运算,确定是否需要对所述符号位扩展后的部分积进行交换处理。
可选的,上述S1042中根据所述对应模式的数据运算,确定是否需要对所述符号位扩展后的部分积进行交换处理的步骤,包括:根据所述对应模式的数据运算,确定是否需要对符号位扩展后的第一部分积,以及符号位扩展后的第二部分积进行交换处理。
需要说明的是,符号位扩展后的部分积可以包括第一乘法运算电路得到的符号位扩展后的第一部分积,以及第二乘法运算电路得到的符号位扩展后的第二部分积。可选的,数据处理器可以接收到四种不同的功能选择模式信号,每一种功能选择模式信号均表示数据处理器当前可处理对应模式的数据运算。其中,对应的四种模式的数据运算可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。可以理解的是,只有当数据处理器接收到的功能选择模式信号表示当前需要处理2N位*N位数据的乘累加运算时,数据处理器才需要通过部分积交换电路,对第一乘法运算电路得到的符号位扩展后的第一部分积,以及第二乘法运算电路得到的符号位扩展后的第二部分积进行交换处理,以完成该模式运算处理,也就是,数据处理器接收到的功能选择模式信号表示其它三种模式的数据运算时,数据处理器不需要执行交换处理。
S1043、若不需要进行交换处理,则将所述符号位扩展后的部分积作为所述目标编码的部分积。
具体的,若数据处理器接收到的功能选择模式信号表示当前可处理,N位*N位数据的乘法运算,N位*N位数据的乘累加运算或2N位*2N位数据的乘法运算,此时,数据处理器可以不执行交换处理,并将符号位扩展后的第一部分积作为目标编码的第一部分积,将符号位扩展后的第二部分积作为目标编码的第二部分积,以分别进行压缩处理。可选的,符号位扩展后的第一部分积和符号位扩展后的第二部分积均可以为数值0,也可以为非0信号。
本实施例提供的一种数据处理方法,数据处理器根据接收到的功能选择模式信号,确定是否需要对符号位扩展后的部分积进行交换处理,若不需要交换处理,则将符号位扩展后的部分积作为目标编码的部分积,进而对目标编码的部分积进行压缩处理,该方法不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性。
在其中一个实施例中,上述S1042中根据所述对应模式的数据运算,确定是否需要对所述符号位扩展后的部分积进行交换处理的步骤之后,所述方法还包括:若需要进行交换处理,则对所述符号位扩展后的部分积进行交换处理。
需要说明的是,数据处理器可以对符号位扩展后的第一低位部分积,与符号位扩展后的第二低位部分积执行交换处理,或者对符号位扩展后的第一高位部分积,与符号位扩展后的第二高位部分积执行交换处理。
例如,若数据处理器接收到的待处理数据中的两个待处理子数据的位宽均为2N,一个待处理数据(即乘数)可以包括两个待处理子数据a和b,另一个待处理数据(即被乘数)可以包括两个待处理子数据c和d,并且当前需要对a*c,以及b*d执行2N位*2N位数据的乘法运算,则数据处理器中的第一乘法运算电路可以对接收到的c,进行布斯编码处理得到一组对应的目标编码,并根据实际运算需求,第一乘法运算电路可以通过子数据c对应的目标编码,以及a得到符号位扩展后的第一部分积,并将符号位扩展后的第一部分积作为目标编码的第一部分积进行压缩处理,第二乘法运算电路可以根据子数据d对应的目标编码,以及b得到符号位扩展后的第二部分积,并将符号位扩展后的第二部分积作为目标编码的第二部分积进行压缩处理。
继续上一示例,若数据处理器需要执行两组2N位*N位数据的乘累加运算,则第一乘法运算电路接收到的c(即乘数)可以为2N位的非0数据,a(即被乘数)中的低N位数值可以均为数值0,或者高N位数值可以均为数值0,第二乘法运算电路接收到的d(即乘数)可以为2N位的非0数据,b(即被乘数)中的低N位数值可以均为数值0,或者高N位数值可以均为数值0,运算处理时,第一乘法运算电路根据c对应的目标编码以及a中的N位非0数据,得到对应的符号位扩展后的第一部分积,第二乘法运算电路根据d对应的目标编码以及b中的N位非0数据,得到对应的符号位扩展后的第二部分积,然后第一乘法运算电路和第二乘法运算电路,将a和b中N位全0的数据得到的对应的符号位扩展后的低位部分积,或符号位扩展后的高位部分积进行交换得到目标编码的部分积,相当于得到两组2N位*N位数据的乘累加运算过程中目标编码的部分积,对该目标编码的部分积进行累加运算,得到目标运算结果。
本实施例提供的一种数据处理方法,数据处理器根据接收到的功能选择模式信号,确定是否需要对符号位扩展后的部分积进行交换处理,若需要交换处理,则实现交换处理后得到目标编码的部分积,进而对目标编码的部分积进行压缩处理,该方法不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性。
另一实施例提供的数据处理方法,上述S105中对所述目标编码的部分积进行压缩处理,得到目标运算结果的步骤,包括:
S1051、对所述目标编码的部分积进行累加处理得到中间运算结果。
具体的,数据处理器通过第一乘法运算电路可以对目标编码的第一部分积进行累加处理得到一个中间运算结果,通过第二乘法运算电路可以对目标编码的第二部分积进行累加处理得到另一个中间运算结果。可选的,这两个中间运算结果均可以包括和位输出信号Sum与进位输出信号Carry,其中,和位输出信号Sum与进位输出信号Carry的位宽可以相同,并且两个中间运算结果均可以等于0,也可以等于非0信号。例如,当前仅需要对一组2N位*2N位数据进行乘法运算,此时,数据处理器接收到的两个待处理数据中有一个数据为数值0,并且为数值0的待处理数据对应得到的目标编码,符号位扩展后的部分积以及中间运算结果均可以等于0;当前需要对两组2N位*2N位数据进行乘法运算时,据处理器接收到的两个待处理数据均为非0信号,并且两个待处理数据对应得到的两组目标编码,两个符号位扩展后的部分积以及两个中间运算结果均可以为非0信号。
S1052、对所述中间运算结果进行累加处理,得到所述目标运算结果。
具体的,数据处理器通过累加电路可以分别对两个中间运算结果进行累加处理,得到第一目标运算结果以及第二目标运算结果。其中,第一目标运算结果可以称为第一乘法运算电路得到的运算结果,第二目标运算结果可以称为第二乘法运算电路得到的运算结果。
另外,数据处理器可以通过累加电路中的加法器对修正华莱士树组电路输出的进位输出信号Carry与和位输出信号Sum进行加法运算,输出加法运算结果。可选的,修正华莱士树组电路中每一个华莱士树子电路(即低位华莱士树子电路或高位华莱士树子电路),均可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=0,…,2N-1,i为每一个华莱士树子电路的对应编号,编号从0开始)。可选的,加法器接收到的Carry={[Carry0:Carry2N-2],0},也就是说,加法器接收到的进位输出信号Carry的位宽为2N,进位输出信号Carry中前2N-1位数值对应修正华莱士树组电路中前2N-1个华莱士树子电路的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器接收到的和位输出信号Sum的位宽为2N,和位输出信号Sum中的数值可以等于修正华莱士树组电路中每一个华莱士树子电路的和位输出信号。
示例性的,若数据处理器当前需要处理8位*8位的乘法运算,则加法器可以为16位超前进位加法器,如图7所示,修正华莱士树组电路可以输出16个华莱士树子电路的和位输出信号Sum和进位输出信号Carry,但是16位超前进位加法器接收到的和位输出信号可以为修正华莱士树组电路输出的完整和位信号Sum,接收到的进位输出信号可以为修正华莱士树组电路中,除去最后一个华莱士树子电路输出的进位输出信号的所有进位输出信号与0结合后的进位信号Carry。
本实施例提供的一种数据处理方法,对目标编码的部分积进行累加处理得到中间运算结果,通过累加电路对中间运算结果进行累加处理,得到目标运算结果,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,有效降低了数据处理器的功耗。
图8为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图2和图5所示的数据处理器进行处理,本实施例涉及的是实现四种不同模式的数据运算的过程。如图8所示,该方法包括:
S201、接收待处理数据以及功能选择模式信号,其中,所述功能选择模式信号用于指示数据处理器当前可处理的对应模式的数据运算。
具体的,数据处理器可以通过布斯编码电路接收一个待处理数据,通过第一部分积获取电路以及第二部分积获取电路分别接收另一个待处理数据,并且布斯编码电路、第一部分积获取电路以及第二部分积获取电路均可以同时接收同一个功能选择模式信号。可选的,待处理数据可以包括两个待处理子数据,这两个待处理子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据。可选的,一个待处理数据中的两个待处理子数据可以拼接后作为一个整体,输入至布斯编码电路,还可以分开同时输入至布斯编码电路,另一个待处理数据中的两个待处理子数据可以拼接后作为一个整体,同时输入至第一部分积获取电路和第二部分积获取电路,还可以分开同时输入至第一部分积获取电路和第二部分积获取电路。其中,上述待处理子数据可以为定点数,且位宽可以为2N,两个待处理子数据拼接后得到的数据位宽可以为4N。
需要说明的是,上述功能选择模式信号可以有四种,四种功能选择模式信号分别对应数据处理器可处理的四种模式的数据运算,四种模式的数据运算可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。另外,一个待处理数据中的一个待处理子数据可以作为数据处理器执行乘法运算或乘累加运算处理时的乘数,另一个待处理子数据可以作为数据处理器执行乘法运算或乘累加运算处理时的被乘数。
S202、根据所述功能选择模式信号,对所述待处理数据进行布斯编码处理,得到目标编码。
可选的,上述S202中根据所述功能选择模式信号,对所述待处理数据进行布斯编码处理,得到目标编码的步骤,包括:根据所述功能选择模式信号,确定所述数据处理器当前可处理的对应模式的数据运算;根据所述对应模式的数据运算,对所述待处理数据进行布斯编码处理,得到目标编码。
具体的,数据处理器根据接收到的功能选择模式信号,可以确定当前可处理的具体模式数据运算,并且布斯编码电路接收到的待处理数据中的两个待处理子数据,均可以为运算处理过程中的乘数。其中,待处理数据中包含的两个待处理子数据的位宽均为2N,则数据处理器根据待处理子数据的位宽以及当前需要处理的对应模式的数据运算,可以确定布斯编码电路当前需要对N位数据,或者2N位数据进行布斯编码处理,以得到两组对应的目标编码。
需要说明的是,布斯编码处理的目标编码规则可以参见表1以及上述布斯编码电路21结构的相关实施例。可选的,若布斯编码电路当前需要对N位数据进行处理,则目标编码的数目可以等于N/2;若布斯编码电路当前需要对2N位数据进行处理,则目标编码的数目可以等于N。其中,目标编码可以为乘法运算或乘累加运算处理时乘数中相邻的三位数值。
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的位宽为2N,进位输出信号Carry中前2N-1位数值对应修正华莱士树组电路中前2N-1个华莱士树子电路的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器接收到的和位输出信号Sum的位宽为2N,和位输出信号Sum中的数值可以等于修正华莱士树组电路中每一个华莱士树子电路的和位输出信号。
S205、对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果。
可选的,上述S205中对所述目标编码的第二部分积进行压缩处理,得到第二目标运算结果的步骤,包括:对所述目标编码的第二部分积进行累加处理得到第二中间运算结果;对所述第二中间运算结果进行累加处理,得到所述第二目标运算结果。
具体的,数据处理器可以通过第二压缩电路中的修正华莱士树组电路对目标编码的第二部分积进行累加运算得到第二中间运算结果,再通过累加电路对第二中间运算结果进行累加处理,得到第二目标运算结果。可选的,上述第二目标运算结果可以为数值0,还可以为非0数据。
在本实施例中,数据处理器可以同步执行步骤S204和步骤S205,对这两个步骤的先后顺序本实施例不做任何限定。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能选择模式信号确定当前可处理对应模式的数据运算,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
作为其中一个实施例,上述S203中根据所述目标编码以及所述待处理数据,得到目标编码的第一部分积以及目标编码的第二部分积的步骤,可以包括:
S2031、根据所述目标编码以及所述待处理数据,得到符号位扩展后的第一部分积以及符号位扩展后的第二部分积。
具体的,上述待处理数据可以为乘法运算或乘累加运算时的被乘数(即X),目标编码可以包括第一目标编码以及第二目标编码。可选的,数据处理器根据被乘数和第一目标编码可以得到符号位扩展后的第一部分积,根据被乘数和第二目标编码可以得到符号位扩展后的第一部分积。
需要说明的是,当第一目标编码中的数值为-1时,则原始部分积可以为-X,当第一目标编码中的数值为1时,则原始部分积可以为X,当第一目标编码中的数值为0时,则原始部分积可以为0,对应地,符号位扩展后的第一部分积的位宽可以等于被乘数位宽(即N比特)的2倍,符号位扩展后的第一部分积中的低(N+1)位数值可以为原始部分积包括的(N+1)位数值,符号位扩展后的第一部分积中的高(N-1)位数值可以为原始部分积中的最高位数值,即原始部分积中的符号位数值。可选的,第一目标编码中的每一位数值可以得到对应的一个符号位扩展后的第一部分积。
同理,第二目标编码和被乘数得到符号位扩展后的第二部分积的方式,与获取符号位扩展后的第一部分积的方式相同,对此本实施例不再赘述。
S2032、对所述符号位扩展后的第一部分积以及所述符号位扩展后的第二部分积进行移位处理,得到所述目标编码的第一部分积以及所述目标编码的第二部分积。
需要说明的是,获取的所有目标编码的第一部分积的分布规律中,每一个目标编码的第一部分积可以等于对应的符号位扩展后的第一部分积,还可以等于对应符号位扩展后的第一部分积中的部分位数值,其中,第一个目标编码的第一部分积可以等于第一个对应的符号位扩展后的第一部分积,从第二个目标编码的第一部分积开始,每一个目标编码的第一部分积中的最低位数值可以与上一个目标编码的第一部分积中的次低位数值位于同一列,相当于每一个符号位扩展后的第一部分积中的每一位数值,在上一个符号位扩展后的第一部分积中的每一位数值所处对应列的基础上,左移一列,并且每一个目标编码的第一部分积的最高位数值,与第一个目标编码的第一部分积中的最高位数值均位于同一列,其中,超出第一个目标编码的第一部分积中的最高位数值对应列的其它高位数值可以不参与累加运算。可选的,所有目标编码的第一部分积的列数可以等于数据处理器当前所处理数据位宽的2倍。
同理,根据符号位扩展后的第二部分积得到目标编码的第二部分积的方式,与获取目标编码的第一部分积的方式可以相同,对此本实施例不再赘述。
本实施例提供的一种数据处理方法,该方法能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的数据处理器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过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 (10)

1.一种数据处理器,其特征在于,所述数据处理器包括:布斯编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路,所述布斯编码电路的输出端与所述第一部分积获取电路的第一输入端连接,所述第一部分积获取电路的输出端与所述第一压缩电路的第一输入端连接,所述布斯编码电路的输出端还与所述第二部分积获取电路的第一输入端连接,所述第二部分积获取电路的输出端与所述第二压缩电路的第一输入端连接;
其中,所述布斯编码电路用于对接收到的第一数据进行布斯编码处理得到目标编码,所述第一部分积获取电路用于接收第二数据,并根据所述目标编码得到目标编码的第一部分积,所述第二部分积获取电路用于接收第二数据,并根据所述目标编码得到目标编码的第二部分积,所述第一压缩电路用于对所述目标编码的第一部分积进行累加处理得到第一目标运算结果,所述第二压缩电路用于对所述目标编码的第二部分积进行累加处理得到第二目标运算结果。
2.根据权利要求1所述的数据处理器,其特征在于,所述布斯编码电路中包括第一输入端,用于接收功能选择模式信号,所述第一部分积获取电路和所述第二部分积获取电路中均包括第二输入端,用于接收所述功能选择模式信号;所述第一压缩电路和所述第二压缩电路中均包括第二输入端,用于接收所述功能选择模式信号;所述功能选择模式信号用于确定所述数据处理器当前可处理对应模式的数据运算。
3.根据权利要求1或2所述的数据处理器,其特征在于,所述布斯编码电路包括低位布斯编码单元、选择器以及高位布斯编码单元,所述低位布斯编码单元的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位布斯编码单元的输入端连接;
其中,所述低位布斯编码单元用于对接收到的所述第一数据中的低位数据,进行布斯编码处理得到低位目标编码,所述选择器用于接收功能选择模式信号,并根据所述功能选择模式信号选通所述第一数据中的高位数据,进行布斯编码处理时的补位数值,所述高位布斯编码单元用于对接收到的第一数据中的所述高位数据,以及所述补位数值进行布斯编码处理得到高位目标编码。
4.根据权利要求3所述的数据处理器,其特征在于,所述第一部分积获取电路包括:低位部分积获取单元、低位选择器组单元、高位部分积获取单元以及高位选择器组单元;所述低位部分积获取单元的第一输入端与所述低位布斯编码单元的输出端连接,所述低位部分积获取单元的第二输入端与所述低位选择器组单元的输出端连接,所述高位部分积获取单元的第一输入端与所述高位布斯编码单元的输出端连接,所述高位部分积获取单元的第二输入端与所述高位选择器组单元的输出端连接。
5.根据权利要求4所述的数据处理器,其特征在于,所述低位选择器组单元包括:低位选择器,所述低位选择器用于对符号位扩展后的低位部分积中的数值进行选通。
6.根据权利要求4所述的数据处理器,其特征在于,所述高位选择器组单元包括:高位选择器,所述高位选择器用于对符号位扩展后的高位部分积中的数值进行选通。
7.根据权利要求2所述的数据处理器,其特征在于,所述第一压缩电路包括:修正华莱士树组电路和累加电路,所述修正华莱士树组电路的输出端与所述累加电路的输入端连接;所述修正华莱士树组电路用于对不同模式的数据运算处理时,得到的所述目标编码的第一低位部分积,以及所述目标编码的第一高位部分积中的每一列数值进行累加处理得到累加运算结果,所述累加电路用于对所述累加运算结果进行加法运算。
8.根据权利要求7所述的数据处理器,其特征在于,所述修正华莱士树组电路包括:低位华莱士树子电路、选择器以及高位华莱士树子电路,所述低位华莱士树子电路的输出端与所述选择器的输入端连接,所述选择器的输出端与所述高位华莱士树子电路的输入端连接;
其中,所述低位华莱士树子电路用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果,所述选择器用于选通所述高位华莱士树子电路接收的进位输入信号,所述高位华莱士树子电路用于对所述目标编码的第一部分积中的每一列数值进行累加运算得到所述累加运算结果。
9.根据权利要求7所述的数据处理器,其特征在于,所述累加电路包括:加法器,所述加法器用于对所述累加运算结果进行加法运算。
10.根据权利要求9所述的数据处理器,其特征在于,所述加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收进位信号,和位信号输入端口用于接收和位信号,运算结果输出端口用于输出进位信号与和位信号进行累加处理的结果。
CN201921589734.2U 2019-09-24 2019-09-24 数据处理器 Active CN210109789U (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201921589734.2U CN210109789U (zh) 2019-09-24 2019-09-24 数据处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201921589734.2U CN210109789U (zh) 2019-09-24 2019-09-24 数据处理器

Publications (1)

Publication Number Publication Date
CN210109789U true CN210109789U (zh) 2020-02-21

Family

ID=69531864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201921589734.2U Active CN210109789U (zh) 2019-09-24 2019-09-24 数据处理器

Country Status (1)

Country Link
CN (1) CN210109789U (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110554854A (zh) * 2019-09-24 2019-12-10 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
CN110554854B (zh) * 2019-09-24 2024-05-03 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110554854A (zh) * 2019-09-24 2019-12-10 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
CN110554854B (zh) * 2019-09-24 2024-05-03 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备

Similar Documents

Publication Publication Date Title
CN110413254B (zh) 数据处理器、方法、芯片及电子设备
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110673823B (zh) 乘法器、数据处理方法及芯片
CN110515587B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258544B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258633B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031912A (zh) 乘法器、数据处理方法、装置及芯片
CN210006030U (zh) 数据处理器
CN110688087B (zh) 数据处理器、方法、芯片及电子设备
CN210006029U (zh) 数据处理器
CN210006031U (zh) 乘法器
CN209879493U (zh) 乘法器
CN110647307B (zh) 数据处理器、方法、芯片及电子设备
CN111258545B (zh) 乘法器、数据处理方法、芯片及电子设备
CN210109789U (zh) 数据处理器
CN209895329U (zh) 乘法器
CN113031915A (zh) 乘法器、数据处理方法、装置及芯片
CN110554854B (zh) 数据处理器、方法、芯片及电子设备
CN113033788B (zh) 数据处理器、方法、装置及芯片
CN110554854A (zh) 数据处理器、方法、芯片及电子设备
CN209879492U (zh) 乘法器、机器学习运算装置及组合处理装置
CN210006032U (zh) 乘法器、机器学习运算装置及组合处理装置
CN111258542A (zh) 乘法器、数据处理方法、芯片及电子设备
CN210006084U (zh) 乘法器

Legal Events

Date Code Title Description
GR01 Patent grant
GR01 Patent grant