CN113031909B - 数据处理器、方法、装置及芯片 - Google Patents

数据处理器、方法、装置及芯片 Download PDF

Info

Publication number
CN113031909B
CN113031909B CN201911351199.1A CN201911351199A CN113031909B CN 113031909 B CN113031909 B CN 113031909B CN 201911351199 A CN201911351199 A CN 201911351199A CN 113031909 B CN113031909 B CN 113031909B
Authority
CN
China
Prior art keywords
partial product
data
order
low
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911351199.1A
Other languages
English (en)
Other versions
CN113031909A (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 CN201911351199.1A priority Critical patent/CN113031909B/zh
Publication of CN113031909A publication Critical patent/CN113031909A/zh
Application granted granted Critical
Publication of CN113031909B publication Critical patent/CN113031909B/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/4824Methods 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 using signed-digit representation
    • 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
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请提供一种数据处理器、方法、装置及芯片,数据处理器包括改进CSD编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路;所述第一压缩电路和所述第二压缩电路均包括4‑2压缩器,所述4‑2压缩器包括选择电路以及全加器,其中,所述改进CSD编码电路、所述第一部分积获取电路、所述第二部分积获取电路、所述第一压缩电路以及所述第二压缩电路均包括逻辑门单元;该数据处理器不仅能够实现乘法运算还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算实现乘累加运算,仅通过一次运算过程就可以直接实现乘法运算或乘累加运算,从而降低了数据处理器的功耗。

Description

数据处理器、方法、装置及芯片
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理器、方法、装置及芯片。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能数据处理器的要求也越来越高,其中,数据处理器为乘法器、加法器或乘累加器。神经网络算法作为智能芯片广泛应用的算法之一,通过乘累加器进行乘累加运算在神经网络算法中是一种常见的操作。
通常,数据处理器是采用多个相同输入数据位宽或不同数据位宽的乘法器先进行并行乘法运算,得到多个乘法运算结果,再通过加法器对多个乘法运算结果进行累加运算,得到目标乘累加结果。但是,现有的数据处理器仅能够对相同位宽的数据进行乘累加运算,降低了数据处理器的通用性。另外,现有技术中对多个乘法运算结果还需要单独进行一次累加运算才能实现乘累加操作,从而增大了数据处理器的功耗。
发明内容
基于此,有必要针对上述技术问题,提供了一种低功耗且通用性较高的数据处理器、方法、装置及芯片。
一种数据处理器,所述数据处理器包括:改进正则有符号数CSD编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路;所述第一压缩电路和所述第二压缩电路均包括4-2压缩器,所述4-2压缩器包括选择电路以及全加器,所述改进CSD编码电路的输出端与所述第一部分积获取电路的第一输入端连接,所述第一部分积获取电路的输出端与所述第一压缩电路的第一输入端连接,所述改进CSD编码电路的输出端还与所述第二部分积获取电路的第一输入端连接,所述第二部分积获取电路的输出端与所述第二压缩电路的第一输入端连接;
其中,所述所述第一部分积获取电路、所述第二部分积获取电路、所述第一压缩电路以及所述第二压缩电路均包括逻辑门单元;所述改进CSD编码电路用于对接收到的第一数据进行正则有符号数编码处理得到目标编码,并根据接收到的功能模式选择信号,确定是否将所有目标编码输入至所述第一部分积获取电路和/或第二部分积获取电路,所述第一部分积获取电路用于根据接收到的第二数据和所述目标编码,得到第一符号位扩展后的部分积,所述第二部分积获取电路用于根据接收到的所述第二数据和所述目标编码,得到第二符号位扩展后的部分积,所述第一压缩电路用于对所述第一符号位扩展后的部分积进行累加处理得到第一目标运算结果,所述第二压缩电路用于对所述第二符号位扩展后的部分积进行累加处理得到第二目标运算结果。
在其中一个实施例中,所述逻辑门单元的输入端用于接收接收功能模式选择信号;所述改进CSD编码电路中包括第一输入端,用于接收功能模式选择信号;所述第一部分积获取电路和所述第二部分积获取电路中均包括第二输入端,用于接收所述功能模式选择信号;所述第一压缩电路和所述第二压缩电路中均包括第二输入端,用于接收所述功能模式选择信号;其中,所述功能模式选择信号用于确定所述数据处理器当前可处理的对应数据运算模式。
在其中一个实施例中,所述数据处理器中的改进CSD编码电路包括:数据输入端口、第一模式选择信号输入端口、目标编码输出端口以及数据输出端口;所述数据输入端口用于接收所述第一数据和所述第二数据,所述第一模式选择信号输入端口用于接收所述功能模式选择信号,所述目标编码输出端口用于输出所述改进CSD编码电路对所述第一数据进行正则有符号数编码处理后,得到的第一目标编码和第二目标编码。
在其中一个实施例中,所述第一部分积获取电路包括:第一低位部分积获取单元、第一低位选择器组单元、第一低位与逻辑单元、第一高位部分积获取单元、第一高位选择器组单元以及第一高位与逻辑单元;所述改进CSD编码电路的第一输出端与所述第一低位部分积获取单元的第一输入端连接,所述第一低位选择器组单元的输出端与所述第一低位部分积获取单元的第二输入端连接,所述第一低位与逻辑单元的输出端与所述第一低位部分积获取单元的第三输入端连接,所述改进CSD编码电路的第二输出端与所述第一高位部分积获取单元的第一输入端连接,所述第一高位选择器组单元的输出端与所述第一高位部分积获取单元的第二输入端连接,所述第一高位与逻辑单元的输出端与所述第一高位部分积获取单元的第三输入端连接;
其中,所述第一低位部分积获取单元用于根据接收到的所述目标编码以及所述第二数据,得到第一符号位扩展后的低位部分积,所述第一低位选择器组单元用于选通所述第一符号位扩展后的低位部分积中的第一数值,所述第一低位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值,所述第一高位部分积获取单元用于根据接收到的所述目标编码以及所述第二数据,得到第一符号位扩展后的高位部分积,所述第一高位选择器组单元用于选通所述第一符号位扩展后的高位部分积中的第三数值,所述第一高位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值。
在其中一个实施例中,所述第一部分积获取电路中的第一低位部分积获取单元包括:目标编码输入端口、第一选通数值输入端口、第二选通数值输入端口、第二数据输入端口以及第一低位部分积输出端口;所述目标编码输入端口用于接收所述目标编码,所述第一选通数值输入端口用于接收所述第一低位选择器组单元选通后,输出的所述第一符号位扩展后的低位部分积中的第一数值,所述第二选通数值输入端口用于接收所述第一低位与逻辑单元输出的所述第一符号位扩展后的低位部分积中的第二数值,所述第二数据输入端口用于接收所述第二数据,所述第一低位部分积输出端口用于输出所有第一符号位扩展后的低位部分积。
在其中一个实施例中,所述第一部分积获取电路中的第一低位选择器组单元包括:第一低位选择器,所述第一低位选择器用于选通所述第一符号位扩展后的低位部分积中的第一数值。
在其中一个实施例中,所述第一部分积获取电路中的第一低位与逻辑单元包括:第一模式选择信号输入端口、第一符号位数值输入端口以及第一结果输出端口;其中,所述第一模式选择信号输入端口用于接收所述功能模式选择信号,所述第一符号位数值输入端口用于接收所述符号位扩展后的低位部分积中的第一符号位数值,所述第一结果输出端口用于输出对所述功能模式选择信号与所述第一符号位数值进行与逻辑运算得到的第三逻辑运算结果,并将所述第三逻辑运算结果作为所述第二数值。
在其中一个实施例中,所述第一部分积获取电路中的第一高位部分积获取单元包括:目标编码输入端口、第三选通数值输入端口、第四选通数值输入端口、第二数据输入端口以及第一高位部分积输出端口;所述目标编码输入端口用于接收所述目标编码,所述第三选通数值输入端口用于接收所述第一高位选择器组单元选通后,输出的所述第一符号位扩展后的高位部分积中的第三数值,所述第四选通数值输入端口用于接收所述第一高位与逻辑单元输出的所述第一符号位扩展后的高位部分积中的第四数值,所述第二数据输入端口用于接收所述第二数据,所述第一高位部分积输出端口用于输出所有第一符号位扩展后的高位部分积。
在其中一个实施例中,所述第一部分积获取电路中的第一高位选择器组单元包括:第一高位选择器,所述第一高位选择器用于选通所述第一符号位扩展后的高位部分积中的第三数值。
在其中一个实施例中,所述第一部分积获取电路中的第一高位与逻辑单元包括:第二模式选择信号输入端口、第二符号位数值输入端口以及第二结果输出端口;其中,所述第二模式选择信号输入端口用于接收所述功能模式选择信号,所述第二符号位数值输入端口用于接收所述符号位扩展后的高位部分积中的第二符号位数值,所述第二结果输出端口用于输出对所述功能模式选择信号与所述第二符号位数值进行与逻辑运算得到的第四逻辑运算结果,并将所述第四逻辑运算结果作为所述第四数值。
在其中一个实施例中,所述数据处理器包括第二部分积获取电路,所述第二部分积获取电路包括:第二低位部分积获取单元、第二低位选择器组单元、第二低位与逻辑单元、第二高位部分积获取单元、第二高位选择器组单元以及第二高位与逻辑单元;所述改进CSD编码电路的第一输出端与所述第二低位部分积获取单元的第一输入端连接,所述第二低位选择器组单元的输出端与所述第二低位部分积获取单元的第二输入端连接,所述第二低位与逻辑单元的输出端与所述第二低位部分积获取单元的第三输入端连接,所述改进CSD编码电路的第二输出端与所述第二高位部分积获取单元的第一输入端连接,所述第二高位选择器组单元的输出端与所述第二高位部分积获取单元的第二输入端连接,所述第二高位与逻辑单元的输出端与所述第二高位部分积获取单元的第三输入端连接;
其中,所述第二低位部分积获取单元用于根据接收到的所述目标编码以及所述第二数据,得到第二符号位扩展后的低位部分积,所述第二低位选择器组单元用于选通所述第二符号位扩展后的低位部分积中的第五数值,所述第二低位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值,所述第二高位部分积获取单元用于根据接收到的所述目标编码以及所述第二数据,得到第二符号位扩展后的高位部分积,所述第二高位选择器组单元用于选通所述第二符号位扩展后的高位部分积中的第七数值,所述第二高位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的高位部分积中的第八数值。
在其中一个实施例中,所述第一压缩电路包括:第一改进华莱士树组单元和第一累加单元,所述第一改进华莱士树组单元的输出端与所述第一累加单元的输入端连接;所述第一改进华莱士树组单元用于对不同数据运算模式,得到的所述第一符号位扩展后的低位部分积,以及所述第一符号位扩展后的高位部分积中的列数值进行累加处理得到第一累加运算结果,所述第一累加单元用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
在其中一个实施例中,所述第一压缩电路中的第一改进华莱士树组单元包括:第一低位华莱士树子单元、第一与逻辑子单元以及第一高位华莱士树子单元,所述第一低位华莱士树子单元的输出端与所述第一与逻辑子单元的输入端连接,所述第一与逻辑子单元的输出端与所述第一高位华莱士树子单元的输入端连接;其中,所述第一低位华莱士树子单元用于对所有第一符号位扩展后的部分积中的低位列数值进行累加处理得到第一进位输出信号,所述第一与逻辑子单元用于对接收到的所述功能模式选择信号,和所述第一低位华莱士树子单元输出的所述第一进位输出信号进行与逻辑运算,得到所述第一高位华莱士树子单元接收到的进位输入信号,所述第一高位华莱士树子单元用于对所述进位输入信号和所有第一符号位扩展后的部分积中的高位列数值进行累加处理,得到所述第一累加运算结果。
在其中一个实施例中,所述所述第一低位华莱士树子单元和所述第一高位华莱士树子单元均包括所述4-2压缩器以及模式选择电路,所述模式选择电路的输出端与所述4-2压缩器的输入端连接,所述模式选择电路中包括第一输入端,用于接收所述功能模式选择信号;其中,所述4-2压缩器用于对所有第一符号位扩展后的部分积中每列数值进行累加处理,所述模式选择电路用于选通所述4-2压缩器接收到的所述第一符号位扩展后的部分积中的数值。
在其中一个实施例中,所述第一压缩电路中的第一累加单元包括:第一加法器,所述第一加法器用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
在其中一个实施例中,所述第一压缩电路中的第一加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收第一进位信号,所述和位信号输入端口用于接收第一和位信号,所述运算结果输出端口用于输出第一进位信号与第一和位信号进行累加处理得到所述第一目标运算结果。
在其中一个实施例中,所述第二压缩电路包括:第二改进华莱士树组单元和第二累加单元,所述第二改进华莱士树组单元的输出端与所述第二累加单元的输入端连接;所述第二改进华莱士树组单元用于对不同数据运算模式,得到的所述第二符号位扩展后的低位部分积,以及所述第二符号位扩展后的高位部分积中的列数值进行累加处理得到第二累加运算结果,所述第二累加单元用于对所述第二累加运算结果进行加法运算得到所述第二目标运算结果。
本实施例提供的数据处理器,数据处理器通过改进CSD编码电路对接收到的第一数据进行正则有符号数编码处理得到目标编码,通过第一部分积获取电路根据接收到的第二数据以及目标编码,得到对应的第一符号位扩展后的部分积,第二部分积获取电路根据接收到的第二数据以及目标编码,得到对应的第二符号位扩展后的部分积,并通过第一压缩电路对第一符号位扩展后的部分积进行累加处理得到目标运算结果,通过第二压缩电路对第二符号位扩展后的部分积进行累加处理得到另一目标运算结果;该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
一种数据处理方法,所述方法包括:
接收待处理数据和功能模式选择信号,其中,所述功能模式选择信号用于指示数据处理器当前可处理的对应数据运算模式;
根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理;
若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据;
对所述拆分后的数据进行正则有符号数编码处理,得到目标编码;
根据所述功能模式选择信号、所述目标编码以及所述拆分后的数据,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积;
对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果;
对所有第二符号位扩展后的部分积进行压缩处理,得到第二目标运算结果。
在其中一个实施例中,所述根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理,包括:根据所述功能模式选择信号,判断所述待处理数据的位宽与数据处理器当前可处理的数据运算模式对应的数据位宽是否相等。
在其中一个实施例中,所述方法还包括:若所述待处理数据的位宽与数据处理器当前可处理的数据运算模式的对应的数据位宽相等,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码。
在其中一个实施例中,若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据,包括:若所述待处理数据的位宽与数据处理器当前可处理的数据运算模式对应的数据位宽不相等,则对所述待处理数据进行拆分处理,得到拆分后的数据。
在其中一个实施例中,所述对所述拆分后的数据进行正则有符号数编码处理,得到目标编码,包括:将所述拆分后的数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2,所述目标编码包括第一目标编码和第二目标编码。
在其中一个实施例中,所述根据所述功能模式选择信号、所述目标编码以及所述拆分后的数据,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积,包括:
根据所述功能模式选择信号,确定数据处理器当前可处理的数据运算模式;
根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/或第二目标编码,与所述拆分后的数据,得到所述第一符号位扩展后的部分积以及所述第二符号位扩展后的部分积。
在其中一个实施例中,所述第一符号位扩展后的部分积包括第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积;所述根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/或第二目标编码,与所述拆分后的数据,得到所述第一符号位扩展后的部分积,包括:
根据所述第一目标编码和/或所述第二目标编码,与所述拆分后的数据,得到符号位扩展后的第一低位部分积;
根据所述功能模式选择信号,得到所述第一符号位扩展后的低位部分积中的第一数值;
对所述功能模式选择信号和所述符号位扩展后的第一低位部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值;
将所述符号位扩展后的第一低位部分积中的数值、所述第一数值以及所述第二数值进行结合,得到所述第一符号位扩展后的低位部分积;
根据所述第一目标编码和/或所述第二目标编码,与所述拆分后的数据,得到符号位扩展后的第一高位部分积;
根据所述功能模式选择信号,得到所述第一符号位扩展后的高位部分积中的第三数值;
对所述功能模式选择信号和所述符号位扩展后的第一高位部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值;
将所述符号位扩展后的第二部分积中的数值、所述第三数值以及所述第四数值进行结合,得到所述第一符号位扩展后的高位部分积。
在其中一个实施例中,所述第二符号位扩展后的部分积包括第二符号位扩展后的低位部分积和第二符号位扩展后的高位部分积;所述根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/或第二目标编码,与所述拆分后的数据,得到所述第二符号位扩展后的部分积,包括:
根据所述第一目标编码和/或所述第二目标编码,与所述拆分后的数据,得到符号位扩展后的第二低位部分积;
根据所述功能模式选择信号,得到所述第二符号位扩展后的低位部分积中的第五数值;
对所述功能模式选择信号和所述符号位扩展后的第二低位部分积中的符号位数值进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值;
将所述符号位扩展后的第二低位部分积中的数值、所述第五数值以及所述第六数值进行结合,得到所述第二符号位扩展后的低位部分积;
根据所述第一目标编码和/或所述第二目标编码,与所述拆分后的数据,得到符号位扩展后的第二高位部分积;
根据所述功能模式选择信号,得到所述第二符号位扩展后的高位部分积中的第七数值;
对所述功能模式选择信号和所述符号位扩展后的第二高位部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值,得到所述第二符号位扩展后的高位部分积中的第四数值;
将所述符号位扩展后的第二高位部分积中的数值、所述第七数值以及所述第八数值进行结合,得到所述第二符号位扩展后的高位部分积。
在其中一个实施例中,所述对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果,包括:
通过第一低位华莱士树子单元对所有第一符号位扩展后的部分积中的列数值进行累加处理,得到第一进位输出信号;
通过第一与逻辑子单元对所述第一进位输出信号和所述功能模式选择信号进行与逻辑运算,得到第一进位输入信号;
通过第一高位华莱士树子单元对所述第一进位输入信号以及所有第一符号位扩展后的部分积中的列数值进行累加处理,得到所述第一累加运算结果;
通过第一累加单元对第一累加运算结果进行加法运算,得到所述第一目标运算结果。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能模式选择信号确定当前可处理对应的数据运算模式,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个上述所述的数据处理器;该机器学习运算装置用于从所述机器学习运算装置中除所述数据处理器以外的其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给所述机器学习运算装置中除所述数据处理器以外的其它处理装置;
当所述机器学习运算装置包含多个所述数据处理器时,多个所述数据处理器间通过预设结构进行连接并传输数据;
其中,多个所述数据处理器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理器共享同一控制系统或拥有各自的控制系统;多个所述数据处理器共享内存或者拥有各自的内存;多个所述数据处理器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括上述所述的机器学习处理装置、通用互联接口,和所述组合处理装置中除所述机器学习运算装置以外的其它处理装置。该机器学习运算装置与所述组合处理装置中除所述机器学习运算装置以外的其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置连接,用于保存所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的数据处理器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的数据处理器。
本申请实施例提供的一种电子设备,包括如上述所述的芯片。
附图说明
图1为一实施例提供的一种数据处理器的电路结构示意图;
图2为另一实施例提供的数据处理器中的改进CSD编码电路的电路结构示意图;
图3为另一实施例提供的数据处理器中的第一部分积获取电路的具体电路结构图;
图4为另一实施例提供的数据处理器中的第二部分积获取电路的具体电路结构图;
图5为另一实施例提供的数据处理器中的第一压缩电路的具体结构示意图;
图6为另一实施例提供的数据处理器中的第二压缩电路的具体电路结构示意图;
图7为一实施例提供的4位数据乘法运算得到的部分积的分布方式示意图;
图8为一实施例提供的8位*4位数据乘累加运算得到的部分积的分布方式示意图;
图9为另一实施例提供的8位数据运算时第一压缩电路的具体电路结构图;
图10为一实施例提供的一种数据处理方法流程示意图;
图11为另一实施例提供的得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积的具体流程示意图;
图12为另一实施例提供的得到第一符号位扩展后的部分积的具体流程示意图;
图13为一实施例提供的一种组合处理装置的结构图;
图14为一实施例提供的另一种组合处理装置的结构图;
图15为一实施例提供的一种板卡的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据处理器可应用于AI芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array,FPGA)芯片、或者是其它的硬件电路设备中进行乘法运算处理或乘累加运算处理,该数据处理器的结构示意图如图1所示。
如图1所示,图1为另一实施例提供的一种数据处理器的结构示意图,该数据处理器包括改进正则有符号数CSD编码电路01、第一部分积获取电路02、第二部分积获取电路03、第一压缩电路04以及第二压缩电路05;所述第一压缩电路04和所述第二压缩电路05均包括4-2压缩器,所述4-2压缩器包括选择电路以及全加器,所述改进CSD编码电路01的输出端与所述第一部分积获取电路02的第一输入端连接,所述第一部分积获取电路02的输出端与所述第一压缩电路04的第一输入端连接,所述改进CSD编码电路01的输出端还与所述第二部分积获取电路03的第一输入端连接,所述第二部分积获取电路03的输出端与所述第二压缩电路05的第一输入端连接。
其中,所述所述第一部分积获取电路02、所述第二部分积获取电路03、所述第一压缩电路04以及所述第二压缩电路05均包括逻辑门单元,所述逻辑门单元的输入端用于接收接收功能模式选择信号(mode信号),所述功能模式选择信号用于确定所述数据处理器当前可处理的对应数据运算模式。所述改进CSD编码电路01用于对接收到的第一数据进行正则有符号数编码处理得到目标编码,并根据接收到的功能模式选择信号,确定是否将所有目标编码输入至所述第一部分积获取电路02和/或第二部分积获取电路03,所述第一部分积获取电路02用于根据接收到的第二数据和所述目标编码,得到第一符号位扩展后的部分积,所述第二部分积获取电路03用于根据接收到的所述第二数据和所述目标编码,得到第二符号位扩展后的部分积,所述第一压缩电路04用于对所述第一符号位扩展后的部分积进行累加处理得到第一目标运算结果,所述第二压缩电路05用于对所述第二符号位扩展后的部分积进行累加处理得到第二目标运算结果。
具体的,上述改进CSD编码电路01可以同时接收到第一数据和第二数据,并对第一数据进行处理;但改进CSD编码电路01不需要对第二数据进行处理,仅需要将接收到的第二数据直接输入至第一部分积获取电路02和第二部分积获取电路03即可。可选的,第一数据和第二数据均可以包括两个子数据,第一数据包括的两个子数据均可以作为数据处理器进行乘法运算或乘累加运算中的乘数,第二数据包括的两个子数据均可以作为数据处理器进行乘法运算或乘累加运算中的被乘数;但是,乘数和被乘数的位宽均可以为2N,此时,第一数据中包含的两个子数据可以拼接后作为一个整体,以分开同步输入至改进CSD编码电路01,第二数据中包含的两个子数据可以拼接后作为一个整体,输入至第一部分积获取电路02和第二部分积获取电路03,还可以分开同步输入至第一部分积获取电路02以及第二部分积获取电路03。另外,数据处理器中的改进CSD编码电路01可以接收第一数据,第一部分积获取电路02和第二部分积获取电路03可以直接接收第二数据。其中,改进CSD编码电路01可以包括数据处理运算单元,该数据处理单元可以为具有正则有符号数编码处理功能的单元;上述第一部分积获取电路02以及第二部分积获取电路03均可以包括不同处理功能的运算单元;上述第一压缩电路04和第二压缩电路05均可以包括多个累加处理单元。可选的,第一部分积获取电路02和第二部分积获取电路03,均可以接收改进CSD编码电路01输入的目标编码,并根据接收到的第二数据和目标编码,分别得到对应的符号位扩展后的部分积。
需要说明的是,第一数据以及第二数据均包括两个子数据,若数据处理器当前可处理的数据位宽等于子数据的位宽,则完成正则有符号数编码处理后,改进CSD编码电路01可以得到两个子数据对应的两组目标编码。可选的,第一数据可以包括第一低位数据和第一高位数据,第一低位数据和第一高位数据的位宽可以相等。可选的,目标编码可以包括第一低位数据得到的第一目标编码,以及第一高位数据得到的第二目标编码。可选的,上述改进CSD编码电路01可以将两组目标编码或其中一组目标编码,输入至第一部分积获取电路02,同时可以将两组目标编码或另一组目标编码输入至第二部分积获取电路03。可选的,若数据处理器当前可处理乘法运算,此时,改进CSD编码电路01可以根据实际运算需求,将其中一组目标编码输入至第一部分积获取电路02或第二部分积获取电路03,以便通过第一压缩电路04或第二压缩电路05实现累加运算,得到乘法运算结果;该情况下,相当于根据其中一组目标编码与第二数据中的对应子数据(被乘数),得到一组符号位扩展后的部分积,并对一组符号位扩展后的部分积进行累加运算,得到乘法运算结果。可选的,若数据处理器当前可处理乘累加运算,此时,改进CSD编码电路01可以根据实际运算需求,将两组目标编码均输入至第一部分积获取电路02或第二部分积获取电路03,以便通过第一压缩电路04或第二压缩电路05实现累加运算,得到乘累加运算结果;该情况下,相当于根据两组目标编码分别与第二数据中的对应子数据(被乘数),得到两组符号位扩展后的部分积,并对两组符号位扩展后的部分积进行累加运算,得到乘累加运算结果。其中,第一部分积获取电路02可以得到第一符号位扩展后的部分积,第二部分积获取电路03可以得到第二符号位扩展后的部分积。另外,若数据处理器实现乘累加运算时,改进CSD编码电路01可以得到第一数据对应的两组目标编码,并将两组目标编码发送至第一部分积获取电路02和/或第二部分积获取电路03中,第一部分积获取电路02和/或第二部分积获取电路03可以依据实际运算需求,根据两组目标编码和接收到的第二数据得到两组符号位扩展后的部分积,然后第一压缩电路04和/或对这两组符号位扩展后的部分积进行累加处理,从而实现乘累加运算得到目标运算结果。可选的,目标运算结果可以包括第一压缩电路04得到的第一目标运算结果,以及第二压缩电路05得到的第二目标运算结果。在本实施例中,数据处理器接收到的第一数据以及第二数据中,包含的子数据的位宽均为2N。
可以理解的是,数据处理器中的改进CSD编码电路01可以对接收到的第一数据进行正则有符号数编码处理;相当于改进CSD编码电路01可以对接收到的乘数进行正则有符号数编码处理得到目标编码,并将目标编码输入至第一部分积获取电路02和/或第二部分积获取电路03中,第一部分积获取电路02和第二部分积获取电路03根据接收到的目标编码和第二数据,得到符号位扩展后的部分积。可选的,第一压缩电路04以及第二压缩电路05均可以包括多个累加处理单元;同时,第一部分积获取电路02、第二部分积获取电路03、第一压缩电路04和第二压缩电路05均可以包含逻辑门单元。还可以理解的是,同一次数据运算过程中,第一部分积获取电路02和第二部分积获取电路03得到的符号位扩展后的部分积的位宽,均可以等于数据处理器当前可处理乘法运算或乘累加运算时被乘数位宽的2倍。其中,第一部分积获取电路02可以得到第一符号位扩展后的部分积,第一符号位扩展后的部分积可以包括符号位扩展后的第一低位部分积,以及符号位扩展后的第一高位部分积;第二部分积获取电路03可以得到第二符号位扩展后的部分积,第二符号位扩展后的部分积可以包括符号位扩展后的第二低位部分积,以及符号位扩展后的第二高位部分积。
在本实施例中,上述正则有符号数编码处理的方法可以通过以下方式表征:对于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转换处理的方式也类似。
例如,改进CSD编码电路01接收到的乘数为“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,此时,将第五新数据可以称为初始编码,并对该初始编码进行一次补位处理后得到中间编码,表征正则有符号数编码处理完成;其中,初始编码的位宽可以等于乘数的位宽。可选的,改进CSD编码电路01对乘数进行正则有符号数编码处理后,得到新数据(即初始编码);若新数据中的最高位数值和次高位数值为“10”或“01”,则改进CSD编码电路01可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于数据处理器当前可处理数据的位宽加1。
另外,若数据处理器接收到的数据位宽为2N,且当前可处理N位数据运算,则数据处理器中的改进CSD编码电路01,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若数据处理器当前可处理2N位数据运算,则数据处理器中的改进CSD编码电路01,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。在本实施例中,数据处理器可以对初始编码执行的是补位处理,且对中间编码执行的是补数处理。
可以理解的是,上述改进CSD编码电路01可以接收第一数据(即乘数),并对第一数据进行正则有符号数编码处理,得到第一目标编码和第二目标编码;然后将第一目标编码和/或第二目标编码,输入至第一部分积获取电路02,和/或第二部分积获取电路03中。在本实施例中,若数据处理器当前可处理的数据位宽为N比特,数据处理器中的改进CSD编码电路01接收到的第一数据的位宽均为2N比特,则改进CSD编码电路01可以将第一数据拆分成第一高位数据和第一低位数据,第一低位数据得到的第一目标编码的位宽可以等于数据处理器当前可处理数据的位宽加1,第一高位数据得到的第二目标编码的位宽可以等于数据处理器当前可处理数据的位宽加1,对应的,第一部分积获取电路02或第二部分积获取电路03得到的符号位扩展后的部分积的数量可以等于第一目标编码的位宽,且符号位扩展后的部分积的位宽可以等于数据处理器当前可处理的数据位宽的2倍;若数据处理器当前可处理的数据位宽为2N,数据处理器中的改进CSD编码电路01接收到的第一数据的位宽为2N,则改进CSD编码电路01可以对接收到2N位第一数据直接进行正则有符号数编码处理,得到(2N+1)位的中间编码,并对中间编码进行补数处理,得到(2N+2)位数据,将这(2N+2)位的数据作为目标编码,其中,补数处理可以表征为对数据的最高位数值的高一位处补数值0;此时,目标编码中的低(N+1)位数据可以称为第一目标编码,目标编码中的高(N+1)位数据可以称为第二目标编码。可选的,目标编码的最高位数值为补数处理后获取的数值0,对应得到的符号位扩展后的部分积中包含的数值均可以为数值0。
在本实施例中,数据处理器接收到的数据均可以包括低位数据以及高位数据,若该数据为“y7y6y5y4y3y2y1y0”,则高位数据可以为“y7y6y5y4”,低位数据可以为“y3y2y1y0”;也就是,若数据位宽为N时,则数据中高N位数值可以称为高位数据,低N位数值可以称为低位数据。需要说明的是,本实施例可以适用于数据处理器接收到的数据位宽大于等于数据处理器当前可处理的数据位宽。
可选的,所述改进CSD编码电路01中包括第一输入端,用于接收功能模式选择信号;所述第一部分积获取电路02和所述第二部分积获取电路03中均包括第二输入端,用于接收所述功能模式选择信号;所述第一压缩电路04和所述第二压缩电路05中均包括第二输入端,用于接收所述功能模式选择信号。
可以理解的是,上述功能模式选择信号(mode信号)可以有四种,这四种功能模式选择信号(mode信号)对应于所述数据处理器可以处理四种不同的数据运算模式。可选的,同一次数据运算处理时,改进CSD编码电路01、第一部分积获取电路02、第二部分积获取电路03、第一压缩电路04以及第二压缩电路05,接收到的功能模式选择信号(mode信号)均可以相等,且四种功能模式选择信号(mode信号)均可以用二进制数值分别表示为mode=00,mode=01,mode=10,mode=11,四种对应数据运算模式分别可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算,2N位*N位数据的乘累加运算。其中,第一部分积获取电路02以及第二部分积获取电路03可以根据接收到的功能模式选择信号,确定是否接收改进CSD编码电路01得到的所有目标编码或者其中一组目标编码进行数据运算。
本实施例提供的数据处理器,数据处理器通过改进CSD编码电路对接收到的第一数据进行正则有符号数编码处理得到目标编码,通过第一部分积获取电路根据接收到的第二数据以及目标编码,得到对应的第一符号位扩展后的部分积,第二部分积获取电路根据接收到的第二数据以及目标编码,得到对应的第二符号位扩展后的部分积,并通过第一压缩电路对第一符号位扩展后的部分积进行累加处理得到目标运算结果,通过第二压缩电路对第二符号位扩展后的部分积进行累加处理得到另一目标运算结果;该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗;同时,该数据处理器可以对数据进行正则有符号数编码处理,以降低乘法运算过程中获取的有效部分积的数量,从而降低数据处理器实现乘法运算或者乘累加运算的复杂性,提高了运算效率,有效降低了数据处理器的功耗。
图2为另一实施例提供的数据处理器中的改进CSD编码电路01的电路结构示意图,如图2所示,所述改进CSD编码电路01包括:数据输入端口11、第一模式选择信号输入端口12、目标编码输出端口13以及数据输出端口14;所述数据输入端口11用于接收所述第一数据和所述第二数据,所述第一模式选择信号输入端口12用于接收所述功能模式选择信号,所述目标编码输出端口13用于输出所述改进CSD编码电路01对所述第一数据进行正则有符号数编码处理后,得到的第一目标编码和第二目标编码。
具体的,乘法运算过程中,数据处理器中的改进CSD编码电路01可以通过第一数据输入端口11接收第一数据和第二数据,通过第一模式选择信号输入端口12接收功能模式选择信号,并且对第一数据进行正则有符号数编码处理得到中间编码,并根据接收到的功能模式选择信号确定是否需要对中间编码进行补数处理,以得到目标编码;然后通过目标编码输出端口13输出目标编码中的第一目标编码和第二目标编码,之后改进CSD编码电路01可以将第二数据、第一目标编码和/或第二目标编码输出,发送至第一部分积获取电路02以及第二部分积获取电路03。在本实施例中,若数据处理器当前可处理乘累加运算时,则数据处理器中的改进CSD编码电路01可以将得到的第一目标编码和第二目标编码,同时输入至第一部分积获取电路02或第二部分积获取电路03;数据处理器当前执行其它数据运算模式时,数据处理器中的改进CSD编码电路01可以将第一目标编码和/或第二目标编码,输入至第一部分积获取电路02和/或第二部分积获取电路03。
本实施例提供的一种数据处理器,该数据处理器能够对接收到的数据进行正则有符号数编码处理,以降低乘法运算过程中获取的有效部分积的数量,从而降低数据处理器实现乘法运算或者乘累加运算的复杂性,提高了运算效率,有效降低了数据处理器的功耗。
图3为另一实施例提供的数据处理器中的第一部分积获取电路02的具体电路结构图,如图3所示,所述第一部分积获取电路02包括:第一低位部分积获取单元21、第一低位选择器组单元22、第一低位与逻辑单元23、第一高位部分积获取单元24、第一高位选择器组单元25以及第一高位与逻辑单元26;所述改进CSD编码电路01的第一输出端与所述第一低位部分积获取单元21的第一输入端连接,所述第一低位选择器组单元22的输出端与所述第一低位部分积获取单元21的第二输入端连接,所述第一低位与逻辑单元23的输出端与所述第一低位部分积获取单元21的第三输入端连接,所述改进CSD编码电路01的第二输出端与所述第一高位部分积获取单元24的第一输入端连接,所述第一高位选择器组单元25的输出端与所述第一高位部分积获取单元24的第二输入端连接,所述第一高位与逻辑单元26的输出端与所述第一高位部分积获取单元24的第三输入端连接。
其中,所述第一低位部分积获取单元21用于根据接收到的所述目标编码以及所述第二数据,得到第一符号位扩展后的低位部分积,所述第一低位选择器组单元22用于选通所述第一符号位扩展后的低位部分积中的第一数值,所述第一低位与逻辑单元23用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值,所述第一高位部分积获取单元24用于根据接收到的所述目标编码以及所述第二数据,得到第一符号位扩展后的高位部分积,所述第一高位选择器组单元25用于选通所述第一符号位扩展后的高位部分积中的第三数值,所述第一高位与逻辑单元26用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值。
具体的,上述第一低位部分积获取单元21可以根据接收到的第二数据,以及改进CSD编码电路01得到的第一目标编码和/或第二目标编码,得到第一符号位扩展后的低位部分积;第一高位部分积获取单元24可以根据接收到的第二数据,以及改进CSD编码电路01得到的第一目标编码和/或第二目标编码,得到第一符号位扩展后的高位部分积;上述第二数据可以为乘法运算或乘累加运算中的被乘数。可选的,上述第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积,可以统称为第一符号位扩展后的部分积。可选的,若数据处理器当前可处理的数据位宽为N,数据处理器中的改进CSD编码电路01接收到的第一数据位宽为2N,则数据处理器中的改进CSD编码电路01可以自动将接收到2N位第一数据拆分成第一高位数据以及第一低位数据,并对第一高位数据和第一低位数据进行同步正则有符号数编码处理得到第一目标编码和第二目标编码,第一目标编码和第二目标编码的位宽均可以等于(N+1);相当于目标编码的总位宽可以等于第一目标编码的位宽和第二目标编码的位宽之和;第一低位部分积获取单元21根据第一目标编码和/或第二目标编码,得到的对应第一符号位扩展后的高位部分积的位宽,与第一高位部分积获取单元24根据第一目标编码和/或第二目标编码,得到的对应第一符号位扩展后的低位部分积的位宽均可以等于2N,且第一符号位扩展后的部分积的数量可以等于第一目标编码的位宽与第二目标编码的位宽之和。若数据处理器当前可处理的数据位宽为2N,数据处理器中的改进CSD编码电路01接收到的第一数据位宽为2N,则数据处理器中的改进CSD编码电路01可以直接对接收到2N位第一数据进行正则有符号数编码处理,得到目标编码,此时,该目标编码的位宽可以等于(2N+2),此时,第一低位部分积获取单元21得到的对应第一符号位扩展后的高位部分积的位宽,与第一高位部分积获取单元24得到的对应第一符号位扩展后的低位部分积的位宽均可以等于4N,第一符号位扩展后的部分积的数量可以等于目标编码的位宽,即(2N+2)。
需要说明的是,上述第一低位选择器组单元22可以根据接收到的功能模式选择信号,选通第一符号位扩展后的低位部分积中的第一数值,为N位乘法运算得到的符号位扩展后的低位部分积中的数值,还是为2N位乘法运算得到的符号位扩展后的低位部分积中的数值;同理,第一高位选择器组单元25可以根据接收到的功能模式选择信号,选通第一符号位扩展后的高位部分积中的第三数值,为N位乘法运算得到的符号位扩展后的高位部分积中的数值,还是为2N位乘法运算得到的符号位扩展后的高位部分积中的数值。
进一步地,上述第一低位与逻辑单元23可以根据接收到的功能模式选择信号进行与逻辑运算得到第二逻辑运算结果,并将第二逻辑运算结果输出,作为第一符号位扩展后的低位部分积中的第二数值,该第二数值可以为2N位乘法运算时得到的符号位扩展后的低位部分积中的对应位数值;第一低位与逻辑单元23还可以根据接收到的功能模式选择信号进行与逻辑运算得到第二逻辑运算结果,并将第二逻辑运算结果作为第一符号位扩展后的低位部分积中的第二数值,该第二数值可以为N位乘法运算得到的符号位扩展后的低位部分积中的对应位数值。同理,第一高位与逻辑单元26可以根据接收到的功能模式选择信号进行与逻辑运算得到第三逻辑运算结果,并将第三逻辑运算结果输出,作为第一符号位扩展后的高位部分积中的第四数值,该第四数值可以为2N位乘法运算得到的第一符号位扩展后的高位部分积中的数值。可选的,第一高位与逻辑单元26还可以根据接收到的功能模式选择信号进行与逻辑运算得到第三逻辑运算结果,并将第三逻辑运算结果作为第一符号位扩展后的高位部分积中的第四数值,该第四数值可以为N位乘法运算得到的符号位扩展后的高位部分积中的数值。其中,第一低位与逻辑单元23与第一低位选择器组单元22,输出的第一符号位扩展后的低位部分积中的部分位数值,分别对应符号位扩展后的低位部分积中的不同位数值;第一高位与逻辑单元26与第一高位选择器组单元25,输出的第一符号位扩展后的高位部分积中的部分位数值,分别对应符号位扩展后的高位部分积中的不同位数值。在本实施例,对功能模式选择信号进行与逻辑运算,实际上是对表示功能模式选择信号的数值进行与逻辑运算。
可以理解的是,若数据处理器接收到的数据位宽可以为2N,当前可处理N位乘法运算,则数据处理器中的第一低位部分积获取单元21,可以根据第二数据、每个第一目标编码和/或每个第二目标编码,得到对应的符号位扩展后的低位部分积;上述第一低位选择器组单元22可以选通第一符号位扩展后的低位部分积中的第一数值;上述第一低位与逻辑单元23可以将输出的第二逻辑运算结果作为第一符号位扩展后的低位部分积中的第二数值;然后第一低位部分积获取单元21将符号位扩展后的低位部分积、选通后获取的第一符号位扩展后的低位部分积中的第一数值,以及与逻辑运算得到的第一符号位扩展后的低位部分积中的第二数值进行结合,得到第一符号位扩展后的低位部分积。可选的,第一部分积获取电路02包含的第一低位部分积获取单元21的数量,可以等于数据处理器当前可处理的数据位宽的加1(图2仅示出了第一部分积获取电路02中的一个第一低位部分积获取单元21的电路结构示意图)。
还可以理解的是,数据处理器中的第一高位部分积获取单元24可以根据第二数据、每个第一目标编码或每个第二目标编码,得到对应的符号位扩展后的高位部分积;上述第一高位选择器组单元25可以选通第一符号位扩展后的高位部分积中的第三数值;所述第一高位与逻辑单元26可以将输出的第三逻辑运算结果作为第一符号位扩展后的高位部分积中的第四数值;然后第一高位部分积获取单元24将符号位扩展后的部分积、选通后获取的第一符号位扩展后的高位部分积中的第三数值,以及与逻辑运算得到的第一符号位扩展后的高位部分积中的第四数值进行结合,得到第一符号位扩展后的高位部分积。可选的,第一部分积获取电路02包含的第一高位部分积获取单元24的数量,可以等于数据处理器当前可处理的数据位宽加1(图3仅示出了第一部分积获取电路02中的一个第一高位部分积获取单元24的电路结构示意图)。
在本实施例中,上述每个第一低位部分积获取单元21可以包含2N个数值生成子单元,每个第一高位部分积获取单元24也可以包含2N个数值生成子单元,每个数值生成子单元可以获取第一符号位扩展后的低位部分积中的一位数值,N表示数据处理器当前可处理的数据位宽。在本实施例中,改进CSD编码电路01得到的每个第一目标编码和/或每个第二目标编码可以按照位置分布顺序,分别输入至对应的一个第一低位部分积获取单元21中;改进CSD编码电路01得到的每个第一目标编码和/或每个第二目标编码可以按照位置分布顺序,分别输入至对应的一个第一高位部分积获取单元24中。
需要说明的是,若数据处理器当前可处理2N位*2N位数据的乘法运算,则数据处理器中的第一部分积获取电路02可以包含(N+1)个第一低位部分积获取单元21以及(N+1)个第一高位部分积获取单元24,此时,每个第一低位部分积获取单元21和每个第一高位部分积获取单元24中,均可以包含4N个数值生成子单元;若数据处理器当前需要对N位数据进行处理,则数据处理器中的第一部分积获取电路02可以包含(N+1)个第一低位部分积获取单元21以及(N+1)个第一高位部分积获取单元24,此时,每个第一低位部分积获取单元21和每个第一高位部分积获取单元24中,均可以包含2N个数值生成子单元。可选的,每个数值生成子单元可以获取第一符号位扩展后的部分积中的一位数值。
在本实施例中,所有第一符号位扩展后的低位部分积的分布形式可以表征为,每个第一符号位扩展后的低位部分积中的最低位数值均位于同一列,每个第一符号位扩展后的低位部分积中的其它位数值也均位于不同的对应列。可选的,所有第一符号位扩展后的高位部分积的分布方式可以表征为,每个第一符号位扩展后的高位部分积中的最低位数值均位于同一列,每个第一符号位扩展后的高位部分积中的其它位数值也均位于不同的对应列。另外,第一符号位扩展后的高位部分积中的最低位数值,与第一符号位扩展后的低位部分积中的最低位数值位于同一列,其它位数值也均位于不同的列。
可选的,如图4所示为数据处理器中的第二部分积获取电路03的具体电路结构图,如图4所示,所述第二部分积获取电路03包括:第二低位部分积获取单元31、第二低位选择器组单元32、第二低位与逻辑单元33、第二高位部分积获取单元34、第二高位选择器组单元35以及第二高位与逻辑单元36;所述改进CSD编码电路01的第一输出端与所述第二低位部分积获取单元31的第一输入端连接,所述第二低位选择器组单元32的输出端与所述第二低位部分积获取单元31的第二输入端连接,所述第二低位与逻辑单元33的输出端与所述第二低位部分积获取单元31的第三输入端连接,所述改进CSD编码电路01的第二输出端与所述第二高位部分积获取单元34的第一输入端连接,所述第二高位选择器组单元35的输出端与所述第二高位部分积获取单元34的第二输入端连接,所述第二高位与逻辑单元36的输出端与所述第二高位部分积获取单元34的第三输入端连接。
其中,所述第二低位部分积获取单元31用于根据接收到的所述目标编码以及所述第二数据,得到第二符号位扩展后的低位部分积,所述第二低位选择器组单元32用于选通所述第二符号位扩展后的低位部分积中的第五数值,所述第二低位与逻辑单元33用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值,所述第二高位部分积获取单元34用于根据接收到的所述目标编码以及所述第二数据,得到第二符号位扩展后的高位部分积,所述第二高位选择器组单元35用于选通所述第二符号位扩展后的高位部分积中的第七数值,所述第二高位与逻辑单元36用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的高位部分积中的第八数值。
可以理解的是,第二符号位扩展后的低位部分积和第二符号位扩展后的高位部分积,可以统称为第二符号位扩展后的部分积。例如,若数据处理器接收到的第一数据中包含的子数据分别为A和B,接收到的第二数据中包含的子数据分别为C和D,且数据处理器当前需要分别对A*C、B*D进行乘法运算,则数据处理器中的改进CSD编码电路01可以对数据A进行正则有符号数编码处理得到第一目标编码或第二目标编码,对数据B进行正则有符号数编码处理得到第二目标编码或第一目标编码;数据处理器中的第一低位部分积获取单元21可以接收到第一目标编码、第二目标编码和第二数据中的数据C和数据D,并根据其中的第一目标编码和数据C,或者第二目标编码和数据C,得到第一符号位扩展后的低位部分积;或者,数据处理器中的第一低位部分积获取单元21可以根据其中的第二目标编码和数据D,或者第一目标编码和数据D,得到第一符号位扩展后的低位部分积,其中,数据A对应第一目标编码和第二目标编码中的一个目标编码,另一个目标编码与数据B对应。同时,数据处理器中的第二低位部分积获取单元31可以接收到第一目标编码、第二目标编码和第二数据中的数据C和数据D,并根据其中的第二目标编码和数据D,或者第一目标编码和数据D,得到第二符号位扩展后的低位部分积;或者,数据处理器中的第二低位部分积获取单元31可以根据其中的第一目标编码和数据C,或者第二目标编码和数据C,得到第二符号位扩展后的低位部分积。可选的,数据处理器可以根据实际运算需求,通过改进CSD编码电路01直接将第一目标编码和/或第二目标编码,分别发送至第一部分积获取电路02和第二部分积获取电路03,并将第二数据中的两个子数据,分别发送至第一部分积获取电路02和第二部分积获取电路03;可选的,上述实际运算需求可以表征为数据处理器当前可处理的具体运算模式,例如,A*B、C*D或A*B+C*D等等。其中,发送至第一部分积获取电路02的数据可以为第一目标编码和数据C,此时,发送至第二部分积获取电路03的数据可以为第二目标编码和数据D;或者发送至第二部分积获取电路03的数据可以为第一目标编码和数据C,此时,发送至第一部分积获取电路02的数据可以为第二目标编码和数据D。
另外,若数据处理器当前需要处理A*C+B*D的乘累加运算时,则数据处理器中的改进CSD编码电路01可以将第一目标编码、第二目标编码、数据C和数据D,同时发送至第一部分积获取电路02或者第二部分积获取电路03,以实现成乘累加运算。
在本实施例中,第二部分积获取电路03对数据处理后得到第二符号位扩展后的部分积的方式,与第一部分积获取电路02对数据处理后得到第一符号位扩展后的部分积的方式可以相同,对此本实施例不做赘述第二部分积获取电路03对数据处理的过程。另外,第一部分积获取电路02与第二部分积获取电路03的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述第二部分积获取电路03的具体结构。
本实施例提供的一种数据处理器,数据处理器中的第一低位部分积获取单元可以根据目标编码得到第一符号位扩展后的低位部分积,第一高位部分积获取单元可以根据目标编码得到第一符号位扩展后的高位部分积,进而通过第一压缩电路对第一符号位扩展后的低位部分积以及第一符号位扩展后的高位部分积进行累加处理,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,继续参见图3,所述第一部分积获取电路02中的第一低位部分积获取单元21包括:目标编码输入端口211、第一选通数值输入端口212、第二选通数值输入端口213、第二数据输入端口214以及第一低位部分积输出端口215;所述目标编码输入端口211用于接收所述目标编码,所述第一选通数值输入端口212用于接收所述第一低位选择器组单元22选通后,输出的所述第一符号位扩展后的低位部分积中的第一数值,所述第二选通数值输入端口213用于接收所述第一低位与逻辑单元23输出的所述第一符号位扩展后的低位部分积中的第二数值,所述第二数据输入端口214用于接收所述第二数据,所述第一低位部分积输出端口215用于输出所有第一符号位扩展后的低位部分积。
具体的,数据处理器中的第一低位部分积获取单元21通过目标编码输入端口211,可以接收低位CSD编码单元11输出的第一目标编码和/或第二目标编码,通过第二数据输入端口214接收第二数据(即乘法运算或乘累加运算中的被乘数),第一低位部分积获取单元21根据第一目标编码和/或第二目标编码以及第二数据,得到第一目标编码和/或第二目标编码对应的符号位扩展后的低位部分积;然后将第一选通数值输入端口212接收到的第一符号位扩展后的低位部分积中的第一数值、第二选通数值输入端口213接收到的第一符号位扩展后的低位部分积中的第二数值以及符号位扩展后的低位部分积进行组合,得到第一符号位扩展后的低位部分积。可选的,若数据处理器当前可处理的数据位宽为2N,则数据处理器中的第一低位部分积获取单元21可以包含4N个数值生成子单元,每个数值生成子单元可以对应得到第一符号位扩展后的低位部分积中的一位数值,其中,2N个数值生成子单元可以连接2N个第一低位与逻辑单元13,N个数值生成子单元可以连接N个选择器,还有剩余的N个数值生成子单元不连接第一低位与逻辑单元13和选择器;剩余的N个数值生成子单元可以为第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N位数值之间对应位数值生成子单元。其中,数值生成子单元的数量可以等于数据处理器当前可处理数据位宽的2倍。其中,每个第一低位部分积获取单元21中4N个数值生成子单元的位置分布可以描述为:每个第一低位部分积获取单元21中相同位数值生成子单元均位于同一列。
示例性的,若数据处理器当前可处理2N位数据运算,且数据处理器接收到一个2N比特位宽的被乘数X,则数据处理器中的第一低位部分积获取单元21可以根据被乘数X与第一目标编码和/或第二目标编码中包含的三种数值(即-1,1和0),得到对应的原始部分积,并根据原始部分积得到4N位符号位扩展后的低位部分积;该符号位扩展后的低位部分积中的低(2N+1)位数值可以等于第一目标编码和/或第二目标编码,直接得到的原始部分积中的所有数值,符号位扩展后的低位部分积中的高(2N-1)位数值可以等于该原始部分积中的符号位数值,该符号位数值也就是原始部分积的最高位数值。其中,当第一目标编码或第二目标编码中的数值为-1时,则原始部分积可以为-X,当第一目标编码或第二目标编码中的数值为1时,则原始部分积可以为X,当第一目标编码或第二目标编码中的数值为0时,则原始部分积可以为0。
进一步地,所有第一低位部分积获取单元21得到的所有第一符号位扩展后的低位部分积的分布形式可以表征为,第一个第一符号位扩展后的低位部分积中的最低位数值,与其它第一符号位扩展后的低位部分积中的最低位数值均位于同一列;第一个第一符号位扩展后的低位部分积中的其它位数值与其它第一符号位扩展后的低位部分积中的对应位数值分别位于对应列。
可选的,继续参见图4,所述第二部分积获取电路03中的第一低位部分积获取单元31包括:目标编码输入端口311、第五选通数值输入端口312、第六选通数值输入端口313、第二数据输入端口314以及第二低位部分积输出端口315;所述目标编码输入端口311用于接收所述目标编码,所述第五选通数值输入端口312用于接收所述第二低位选择器组单元32选通后,输出的所述第二符号位扩展后的低位部分积中的第五数值,所述第六选通数值输入端口313用于接收所述第二低位与逻辑单元33输出的所述第二符号位扩展后的低位部分积中的第六数值,所述第二数据输入端口314用于接收所述第二数据,所述第二低位部分积输出端口315用于输出所有第二符号位扩展后的低位部分积。
可以理解的是,上述第一部分积获取电路02中的第一低位部分积获取单元21的电路结构和具体功能,与第二部分积获取电路03中的第二低位部分积获取单元31的电路结构和具体功能相同,因此,本实施例对第二低位部分积获取单元31的电路结构和具体功能不再赘述。可选的,第二低位部分积获取单元31和第一低位部分积获取单元21对数据处理的方式也相同,对此本实施例也不再赘述。
本实施例提供的一种数据处理器,该数据处理器中的第一低位部分积获取单元可以根据接收到的目标编码,以及接收到的第二数据得到第一符号位扩展后的低位部分积,进而通过第一压缩电路对第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积进行压缩运算,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
在其中一个实施例中,继续参见图3,所述第一部分积获取电路02中的第一低位选择器组单元22包括:第一低位选择器221,多个所述第一低位选择器221用于选通所述第一符号位扩展后的低位部分积中的第一数值。
具体的,上述第一低位选择器组单元22中第一低位选择器221的数量,可以等于N*(N+1),2N可以表示数据处理器当前可处理的数据位宽,该第一低位选择器组单元22中每个第一低位选择器221的内部电路结构可以相同。可选的,乘法运算或者乘累加运算时,改进CSD编码电路01连接的对应(N+1)个第一低位部分积获取单元21中,每个第一低位部分积获取单元21可以包含4N个数值生成子单元,其中N个数值生成子单元可以连接N个第一低位选择器221,这N个数值生成子单元均分别可以连接一个第一低位选择器221。可选的,N个第一低位选择器221对应的N个数值生成子单元,可以为第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(N+1)位至第2N位数值之间对应位数值生成子单元;同时,该N个第一低位选择器221的外部输入端口除了模式选择信号输入端口(mode信号输入端口)外,还有其它两个输入端口。可选的,若数据处理器可处理n种不同位宽的数据运算,且数据处理器接收到的数据位宽为2N,则上述第一低位选择器221的其它两个输入端口接收的信号分别可以为,数据处理器进行2N位数据运算,得到的符号位扩展后的低位部分积中的符号位数值,以及数据处理器进行2N位数据运算,得到的符号位扩展后的低位部分积中的对应位数值。可选的,若数据处理器进行2N位数据运算时,每个第一低位选择器221选通的是2N位数据运算,得到的符号位扩展后的低位部分积中的对应位数值,即第一数值;若数据处理器进行N位数据运算时,每个第一低位选择器221选通的是N位数据运算得到的符号位扩展后的低位部分积中的符号位数值,即第一数值。
可选的,继续参见图3,所述第一部分积获取电路02中的第一高位选择器组单元25包括:第一高位选择器251,多个所述第一高位选择器251用于选通所述第一符号位扩展后的高位部分积中的第三数值。
需要说明的是,第一高位选择器组单元25中第一高位选择器251的数量,可以等于N*(N+1),2N可以表示数据处理器当前可处理数据的位宽,该第一高位选择器组单元25中每一个第一高位选择器251的内部电路结构可以相同。可选的,乘法运算时,改进CSD编码电路01连接的对应(N+1)个第一高位部分积获取单元24中,每个第一高位部分积获取单元24可以包含4N个数值生成子单元,其中N个数值生成子单元可以连接N个第一高位选择器251,这N个数值生成子单元均分别可以连接一个第一高位选择器251。可选的,N个第一高位选择器251对应的N个数值生成子单元,可以为第一符号位扩展后的高位部分积中,对应从最高位(即第1位)向最低位算起,第(3N+1)位至第4N位数值之间对应位数值生成子单元;同时,该N个第一高位选择器251的外部输入端口除了模式选择信号输入端口(mode信号输入端口)外,还有其它两个输入端口。可选的,若数据处理器可以处理n种不同位宽的数据运算,并且数据处理器接收到的数据的位宽为2N,则上述第一高位选择器251的其它两个输入端口接收的信号分别可以为,数据处理器进行N位数据运算,得到的符号位扩展后的高位部分积中的符号位数值,和数据处理器进行2N位数据运算,得到的符号位扩展后的高位部分积中的符号位数值。可选的,若数据处理器进行不同位宽的数据运算时,第一高位选择器251选通的是第三数值可以为对应位数据运算时,得到的符号位扩展后的高位部分积中的符号位数值。
可选的,继续参见图4所示,所述第二部分积获取电路03中的第二低位选择器组单元32包括:第二低位选择器321,多个所述第二低位选择器321用于选通所述第二符号位扩展后的低位部分积中的第五数值。
在本实施例中,同一次数据运算处理,第一部分积获取电路02得到的第一符号位扩展后的低位部分积的位宽,与得到的第一符号位扩展后的高位部分积的位宽可以相同。可选的,上述第五数值在第二符号位扩展后的低位部分积中的位置,与第一数值在第一符号位扩展后的低位部分积中的位置类似,对第五数值在第二符号位扩展后的低位部分积中的位置本实施例不再赘述。可选的,第二部分积获取电路03中的第二低位选择器组单元32的电路结构和具体功能,与第一部分积获取电路02中的第一低位选择器组单元22的电路结构和具体功能可以完全相同,第二低位选择器组单元32与第一低位选择器组单元22对数据处理的方式也可以相同,对此本实施例不再赘述。
可选的,继续参见图4所示,所述第二部分积获取电路03中的第二高位选择器组单元35包括:第二高位选择器351,多个所述第二高位选择器351用于选通所述第二符号位扩展后的高位部分积中的第七数值。
在本实施例中,同一次数据运算处理,第一部分积获取电路02得到的第一符号位扩展后的部分积的位宽,与第二部分积获取电路03得到的第二符号位扩展后的部分积的位宽可以相同。可选的,上述第七数值在第二符号位扩展后的高位部分积中的位置,与第三数值在第一符号位扩展后的高位部分积中的位置类似,对第七数值在第二符号位扩展后的高位部分积中的位置本实施例不再赘述。可选的,第二部分积获取电路03中的第二高位选择器组单元35的电路结构和具体功能,与第一部分积获取电路02中的第一低位选择器组单元22的电路结构和具体功能可以完全相同,第二高位选择器组单元35与第一低位选择器组单元22对数据处理的方式也可以相同,对此本实施例不再赘述。
本实施例提供的一种数据处理器,该数据处理器可以通过第一低位选择器组单元选通第一符号位扩展后的低位部分积中的部分位数值,以得到第一符号位扩展后的低位部分积,进而通过第一压缩电路对第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积进行压缩运算,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,继续参见图3所示,所述第一部分积获取电路02中的第一低位与逻辑单元23包括:第一模式选择信号输入端口231、第一符号位数值输入端口232以及第一结果输出端口233;其中,所述第一模式选择信号输入端口231用于接收所述功能模式选择信号,所述第一符号位数值输入端口232用于接收所述符号位扩展后的低位部分积中的第一符号位数值,所述第一结果输出端口233用于输出对所述功能模式选择信号与所述第一符号位数值进行与逻辑运算得到的第三逻辑运算结果,并将所述第三逻辑运算结果作为所述第二数值。
具体的,若数据处理器接收的数据为2N位,且数据处理器中的第一模式选择信号输入端口231接收到的功能模式选择信号为数值0,此时,数据处理器可以对N位数据进行乘法运算,并且第一低位与逻辑单元23可以对该功能模式选择信号与第一符号位数值输入端口232接收到的第一符号位数值进行与逻辑运算得到第三逻辑运算结果,并将第三逻辑运算结果通过第一结果输出端口233输出,发送至第一低位部分积获取单元21;实际上,第一低位与逻辑单元23是对表示功能模式选择信号的数值与第一符号位数值进行与逻辑运算的得到第三逻辑运算结果,其中,该第三逻辑运算结果可以作为第一符号位扩展后的低位部分积中的第二数值。可选的,第一低位与逻辑单元23通过第一符号位数值输入端口232可以接收其它部分积获取电路发送的第一符号位数值,上述其它部分积获取电路可以为数据处理器内部的其它部分积获取电路,或者数据处理器外的其它处理器中的部分积获取电路。可选的,若数据处理器中的第一模式选择信号输入端口231接收到的功能模式选择信号为数值1,此时,数据处理器可以对2N位数据进行乘法运算,并且第一低位与逻辑单元23可以对功能模式选择信号与第一符号位数值输入端口232接收到的第一符号位数值进行与逻辑运算,得到第三逻辑运算结果,并将第三逻辑运算结果通过第一结果输出端口233输出,发送至第一高位部分积获取单元24;其中,第一符号位数值可以等于数据处理器对2N位数据进行乘法运算的过程中,得到的符号位扩展后的低位部分积中的符号位数值。另外,若数据处理器当前可处理的数据位宽也为2N,则数据处理器中的第一低位部分积获取单元21包含的4N个数值生成子单元中,连接N个第一低位与逻辑单元23的N个数值生成子单元可以第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第4N位数值之间对应位数值生成子单元。可选的,上述第三逻辑运算结果可以为第一符号位扩展后的低位部分积种的第二数值。
可选的,继续参见图3所示,所述第一部分积获取电路02中的第一高位与逻辑单元26包括:第二模式选择信号输入端口261、第二符号位数值输入端口262以及第二结果输出端口263;其中,所述第二模式选择信号输入端口261用于接收所述功能模式选择信号,所述第二符号位数值输入端口262用于接收所述符号位扩展后的高位部分积中的第二符号位数值,所述第二结果输出端口263用于输出对所述功能模式选择信号与所述第二符号位数值进行与逻辑运算得到的第四逻辑运算结果,并将所述第四逻辑运算结果作为所述第四数值。
需要说明的是,若数据处理器接收的数据为2N位,且数据处理器中的第二模式选择信号输入端口261接收到的功能模式选择信号为数值0,此时,数据处理器可以对N位数据进行乘法运算,并且第一高位与逻辑单元26可以对该功能模式选择信号与第二符号位数值输入端口262接收到的第二符号位数值进行与逻辑运算得到第四逻辑运算结果,并将第四逻辑运算结果通过第二结果输出端口263输出;若数据处理器中的第二模式选择信号输入端口261接收到的功能模式选择信号为数值1,此时,数据处理器可以对2N位数据进行乘法运算,并且第一高位与逻辑单元26可以对功能模式选择信号与第二符号位数值输入端口262接收到的第二符号位数值进行与逻辑运算,得到第四逻辑运算结果,并将第四逻辑运算结果通过第二结果输出端口263输出;其中,第二符号位数值可以等于数据处理器对2N位数据进行乘法运算的过程中,得到符号位扩展后的高位部分积中的符号位数值。另外,若数据处理器当前可处理的数据位宽也为2N,则数据处理器中的第一高位部分积获取单元24包含的4N个数值生成子单元中,连接2N个第一高位与逻辑单元26的N个数值生成子单元可以第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第2N位数值之间对应位数值生成子单元。可选的,上述第四逻辑运算结果可以为第一符号位扩展后的高位部分积种的第四数值。
可选的,继续参见图4所示,所述第二部分积获取电路03中的第二低位与逻辑单元33包括:第三模式选择信号输入端口331、第三符号位数值输入端口332以及第三结果输出端口333;其中,所述第三模式选择信号输入端口331用于接收所述功能模式选择信号,所述第三符号位数值输入端口332用于接收所述符号位扩展后的低位部分积中的第三符号位数值,所述第一结果输出端口333用于输出对所述功能模式选择信号与所述第三符号位数值进行与逻辑运算得到的第五逻辑运算结果。
可以理解的是,上述第五逻辑运算结果可以为第二符号位扩展后的低位部分积中的第六数值;第六数值在第二符号位扩展后的低位部分积中的位置,与第二数值在第一符号位扩展后的低位部分积中的位置相同,因此,本实施例对第六数值在第二符号位扩展后的低位部分积中的位置不再详细赘述。在本实施例中,上述第二部分积获取电路03中的第二低位与逻辑单元33的电路结构和具体功能,与第一部分积获取电路02中的第一低位与逻辑单元23的电路结构和具体功能可以完全相同,第二低位与逻辑单元33与第一低位与逻辑单元23对数据处理的方式也可以相同,对此本实施例不再赘述。
可选的,继续参见图4所示,所述第二部分积获取电路03中的第二高位与逻辑单元36包括:第四模式选择信号输入端口361、第四符号位数值输入端口362以及第四结果输出端口363;其中,所述第二模式选择信号输入端口361用于接收所述功能模式选择信号,所述第四符号位数值输入端口362用于接收所述符号位扩展后的高位部分积中的第四符号位数值,所述第四结果输出端口363用于输出对所述功能模式选择信号与所述第四符号位数值进行与逻辑运算得到的第六逻辑运算结果。
还可以理解的是,上述第六逻辑运算结果可以为第二符号位扩展后的高位部分积中的第八数值;第八数值在第二符号位扩展后的高位部分积中的位置,与第四数值在第一符号位扩展后的高位部分积中的位置相同,因此,本实施例对第八数值在第二符号位扩展后的高位部分积中的位置不再详细赘述。在本实施例中,第二部分积获取电路03中的第二高位与逻辑单元36的电路结构和具体功能,与第一部分积获取电路02中的第一低位与逻辑单元23的电路结构和具体功能可以完全相同,第二高位与逻辑单元36与第一低位与逻辑单元23对数据处理的方式也可以相同,对此本实施例不再赘述。
本实施例提供的一种数据处理器,该数据处理器可以通过第一低位与逻辑单元进行处理得到第一符号位扩展后的低位部分积中的部分位数值,进而以得到第一符号位扩展后的低位部分积,并通过第一压缩电路对第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积进行压缩处理,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,继续参见图3所示,所述第一部分积获取电路02中的第一高位部分积获取单元24包括:目标编码输入端口241、第三选通数值输入端口242、第四选通数值输入端口243、第二数据输入端口244以及第一高位部分积输出端口245;所述目标编码输入端口241用于接收所述目标编码,所述第三选通数值输入端口242用于接收所述第一高位选择器组单元25选通后,输出的所述第一符号位扩展后的高位部分积中的第三数值,所述第四选通数值输入端口243用于接收所述第一高位与逻辑单元26输出的所述第一符号位扩展后的高位部分积中的第四数值,所述第二数据输入端口244用于接收所述第二数据,所述第一高位部分积输出端口245用于输出所有第一符号位扩展后的高位部分积。
具体的,数据处理器中的第一高位部分积获取单元24通过目标编码输入端口241,可以接收改进CSD编码电路01输出的第一目标编码和/或第二目标编码,并通过第二数据输入端口244可以接收第二数据。可选的,第一高位部分积获取单元24可以根据接收到的第一目标编码和/或第二目标编码,以及接收到的乘法运算或乘累加运算中的被乘数,得到对应的符号位扩展后的高位部分积;并且第一高位部分积获取单元24通过第三选通数值输入端口242,可以接收第一高位选择器组单元25输出的第一符号位扩展后的高位部分积中的第三数值;第一高位部分积获取单元24通过第四选通数值输入端口243,可以接收第一高位与逻辑单元26输出的第一符号位扩展后的高位部分积中的第四数值;最后将第三选通数值输入端口242接收到的第一符号位扩展后的高位部分积中的第三数值、第四选通数值输入端口243接收到的第一符号位扩展后的高位部分积中的第四数值以及符号位扩展后的高位部分积进行组合,得到第一符号位扩展后的高位部分积。可选的,若数据处理器当前可处理的数据位宽为2N,则数据处理器中的第一高位部分积获取单元24可以包含4N个数值生成子单元,每个数值生成子单元可以对应得到第一符号位扩展后的高位部分积中的一位数值,其中,2N个数值生成子单元可以连接2N个第一高位与逻辑单元26,N个数值生成子单元可以连接N个选择器,还有剩余的N个数值生成子单元不连接第一高位与逻辑单元26和选择器;剩余的N个数值生成子单元可以为第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第3N位数值之间对应位数值生成子单元。其中,数值生成子单元的数量可以等于数据处理器当前可处理数据位宽的2倍;第一高位部分积获取单元24得到的第一符号位扩展后的高位部分积的位宽可以等于4N。其中,每个第一高位部分积获取单元24中4N个数值生成子单元的位置分布可以描述为:每个第一高位部分积获取单元24中相同位数值生成子单元均位于同一列。
示例性的,若第一高位部分积获取单元24接收到一个N位被乘数X,则第一高位部分积获取单元24可以根据被乘数X以及第一目标编码和/或第二目标编码中包含的三种数值(即-1,1和0),得到对应的原始部分积,并根据原始部分积得到符号位扩展后的高位部分积;该符号位扩展后的高位部分积中的低(N+1)位数值可以等于原始部分积包含的所有数值,符号位扩展后的高位部分积中的高(N-1)位数值均可以等于原始部分积的符号位数值(即最高位数值)。其中,当第一目标编码或第二目标编码中的数值为-1时,则原始部分积可以为-X,当第一目标编码或第二目标编码中的数值为1时,则原始部分积可以为X,当第一目标编码或第二目标编码中的数值为0时,则原始部分积可以为0。
进一步地,第一高位部分积获取单元24得到的所有第一符号位扩展后的高位部分积的分布形式可以表征为,第一个第一符号位扩展后的高位部分积中的最低位数值,与其它第一符号位扩展后的高位部分积中的最低位数值均位于同一列;第一个第一符号位扩展后的高位部分积中的其它位数值与其它第一符号位扩展后的高位部分积中的对应位数值均位于同一列。
可选的,继续参见图4所示,所述第二部分积获取电路03中的第二高位部分积获取单元34包括:目标编码输入端口341、第七选通数值输入端口342、第八选通数值输入端口343、第二数据输入端口344以及第二高位部分积输出端口345;所述目标编码输入端口341用于接收所述目标编码,所述第七选通数值输入端口342用于接收所述第二高位选择器组单元35选通后,输出的所述第二符号位扩展后的高位部分积中的第七数值,所述第八选通数值输入端口343用于接收所述第二高位与逻辑单元36输出的所述第二符号位扩展后的高位部分积中的第八数值,所述第二数据输入端口344用于接收所述第二数据,所述第二高位部分积输出端口345用于输出所有第二符号位扩展后的高位部分积。
可以理解的是,上述第二部分积获取电路03中的第二高位部分积获取单元34的电路结构和具体功能,与第一部分积获取电路02中第一高位部分积获取单元24的电路结构和具体功能相同,因此,本实施例对第二高位部分积获取单元34的电路结构和具体功能不再赘述。可选的,第二高位部分积获取单元34和第一高位部分积获取单元24对数据处理的方式也相同,对此本实施例也不再赘述。
本实施例提供的一种数据处理器,该数据处理器可以通过第一高位部分积获取单元根据接收到的目标编码,以及接收到的第二数据中的被乘数,得到第一符号位扩展后的高位部分积,进而通过第一压缩电路对第一符号位扩展后的高位部分积和第一符号位扩展后的低位部分积进行压缩运算,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
图5为另一实施例提供的数据处理器中的第一压缩电路的具体结构示意图,所述第一压缩电路04包括:第一改进华莱士树组单元41和第一累加单元42,所述第一改进华莱士树组单元41的输出端与所述第一累加单元42的输入端连接;所述第一改进华莱士树组单元41用于对不同数据运算模式,得到的所述第一符号位扩展后的低位部分积,以及所述第一符号位扩展后的高位部分积中的列数值进行累加处理得到第一累加运算结果,所述第一累加单元42用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
具体的,上述第一改进华莱士树组单元41可以对第一部分积获取电路02得到的第一符号位扩展后的低位部分积,以及第一符号位扩展后的高位部分积中的所有列数值进行累加处理,得到第一累加运算结果(即两路输出信号),并通过第一累加单元42对第一改进华莱士树组单元41得到的第一累加运算结果进行加法运算,得到第一目标运算结果。其中,通过第一改进华莱士树组单元41进行累加处理时,所有第一符号位扩展后的部分积的分布形式,可以表征为每个第一符号位扩展后的部分积中最低位数值所处位置,和其它第一符号位扩展后的部分积中的最低位数值位于同一列;每个第一符号位扩展后的部分积中的其它位数值,与其它第一符号位扩展后的部分积中的对应位数值分别位于对应列。可选的,第一改进华莱士树组单元41按照所有第一符号位扩展后的部分积的分布方式,对所有第一符号位扩展后的部分积中的每列数值进行累加处理;其中,第一符号位扩展后的部分积可以包括第一符号位扩展后的低位部分积以及第一符号位扩展后的高位部分积。可选的,上述第一改进华莱士树组单元41得到的第一累加运算结果可以包括和位输出信号Sum与进位输出信号Carry。
可选的,如图6所示为数据处理器中的第二压缩电路05的具体电路结构示意图,其中,所述第二压缩电路05包括:第二改进华莱士树组单元51和第二累加单元52,所述第二改进华莱士树组单元51的输出端与所述第二累加单元52的输入端连接;所述第二改进华莱士树组单元51用于对不同数据运算模式,得到的所述第二符号位扩展后的低位部分积,以及所述第二符号位扩展后的高位部分积中的列数值进行累加处理得到第二累加运算结果,所述第二累加单元52用于对所述第二累加运算结果进行加法运算得到所述第二目标运算结果。
需要说明的是,第一压缩电路04对第一符号位扩展后的部分积进行压缩处理的方法,与第二压缩电路05对第二符号位扩展后的部分积进行压缩处理的方法相同,对此本实施例不再赘述第二压缩电路05的压缩方法。另外,第一压缩电路04和第二压缩电路05的内部结构,以及外部端口的功能完全相同,本实施例不再赘述第二压缩电路05的具体结构。
本实施例提供的一种数据处理器,数据处理器中的第一压缩电路通过第一改进华莱士树组单元,可以对第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积进行累加处理得到第一累加运算结果,并通过第一累加单元对第一累加运算结果进行累加处理,得到第一目标运算结果;该数据处理器可以实现不同模式的数据运算处理,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,继续参见图5所示,所述第一压缩电路04中的第一改进华莱士树组单元41包括:第一低位华莱士树子单元411、第一与逻辑子单元412以及第一高位华莱士树子单元413,所述第一低位华莱士树子单元411的输出端与所述第一与逻辑子单元412的输入端连接,所述第一与逻辑子单元412的输出端与所述第一高位华莱士树子单元413的输入端连接;其中,多个所述第一低位华莱士树子单元411用于对所有第一符号位扩展后的部分积中的低位列数值进行累加处理得到第一进位输出信号,所述第一与逻辑子单元412用于对接收到的所述功能模式选择信号,和所述第一低位华莱士树子单元411输出的所述第一进位输出信号进行与逻辑运算,得到所述第一高位华莱士树子单元413接收到的进位输入信号,多个所述第一高位华莱士树子单元413用于对所述进位输入信号和所有第一符号位扩展后的部分积中的高位列数值进行累加处理,得到所述第一累加运算结果。
其中,所述第一低位华莱士树子单元411和所述第一高位华莱士树子单元413均包括所述4-2压缩器以及模式选择电路,所述模式选择电路的输出端与所述4-2压缩器的输入端连接,所述模式选择电路中包括第一输入端,用于接收所述功能模式选择信号;其中,所述4-2压缩器用于对所有第一符号位扩展后的部分积中每列数值进行累加处理,所述模式选择电路用于选通所述4-2压缩器接收到的所述第一符号位扩展后的部分积中的数值。
具体的,第一低位华莱士树子单元411可以通过4-2压缩器组成。可选的,1个4-2压缩器可以包括多个全加器以及选择电路,在一定条件下,4-2压缩器中的选择电路可以控制全加器为关闭状态,以提高第一改进华莱士树组单元41的运算效率,减少时延。可选的,选择电路可以为多个选择器构成的电路,该选择器可以为二路选择器,并且选择电路可以接收功能模式选择信号,根据接收到的功能模式选择信号控制全加器的开闭状态。
在本实施例中,第一改进华莱士树组单元41可以理解为是一种能够对多位输入信号进行相加处理,得到两路输出信号的电路。可选的,所有第一符号位扩展后的部分积的列数可以等于数据处理器当前可处理数据位宽的2倍,且所有第一符号位扩展后的部分积中的数值均参与累加运算。示例性的,若数据处理器接收到的两个数据位宽均为8比特,当前数据处理器可处理8位数据的乘法运算,则当前数据处理器可以对拆分后的两组4位*4位数据进行同步乘法运算,该数据处理器通过第一部分积获取电路02得到的5个第一符号位扩展后的低位部分积,以及5个第一符号位扩展后的高位部分积的分布形式如图7所示;其中,右上角为5个第一符号位扩展后的低位部分积的分布图,左下角为5个第一符号位扩展后的高位部分积的分布图,“○”表示第一符号位扩展后的低位部分积中的部分位数值,表示第一符号位扩展后的高位部分积中的部分位数值,“●”表示第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积的符号位数值。若数据处理器当前可处理8位*4位的数据乘累加运算,该数据处理器通过第一部分积获取电路02得到的5个第一符号位扩展后的低位部分积,以及5个第一符号位扩展后的高位部分积的分布形式如图8所示,其中,“○”表示第一符号位扩展后的低位部分积中的部分位数值,/>表示第一符号位扩展后的高位部分积中的部分位数值,“●”表示第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积的符号位数值。
需要说明的是,第一改进华莱士树组单元41中的第一低位华莱士树子单元411的数量可以等于数据处理器当前接收到的数据位宽N,还可以等于第一高位华莱士树子单元413的数量;并且各第一低位华莱士树子单元411之间可以串行连接,各第一高位华莱士树子单元413之间也可以串行连接。可选的,最后一个第一低位华莱士树子单元411的输出端和第一与逻辑子单元412的输入端连接,第一与逻辑子单元412的输出端与第一个第一高位华莱士树子单元413的输入端连接。可选的,第一改进华莱士树组单元41中每个第一低位华莱士树子单元411可以对所有第一符号位扩展后的部分积中低位列数值进行加法处理,每个第一低位华莱士树子单元411可以输出两路信号,即和位信号Sumi与进位信号Carryi;其中,i可以表示每个第一低位华莱士树子单元411对应的编号,第一个第一低位华莱士树子单元411的编号为0。同时,第一改进华莱士树组单元41中每个第一高位华莱士树子单元413可以对所有第一符号位扩展后的部分积中高位列数值进行加法处理,每个第一高位华莱士树子单元413也可以输出两路信号,即和位信号Sumi与进位信号Carryi。可选的,每个第一低位华莱士树子单元411和每个第一高位华莱士树子单元413,接收到输入信号的数量可以等于第一目标编码和/或第二目标编码的总数量,第一符号位扩展后的部分积的数量或者大于第一符号位扩展后的部分积的数量;其中,当数据处理器当前可处理乘累加运算时,则每个第一低位华莱士树子单元411和每个第一高位华莱士树子单元413,接收到输入信号的数量可以大于等于第一目标编码和第二目标编码的总数量。其中,第一改进华莱士树组单元41中第一低位华莱士树子单元411与第一高位华莱士树子单元413的数量之和,可以等于2N;所有第一符号位扩展后的部分积中,从最低列至最高列的总列数可以等于2N,N个第一低位华莱士树子单元411可以对所有第一符号位扩展后的部分积的低N列数值(即低位列数值)中的对应列数值进行累加运算,N个第一高位华莱士树子单元413可以对所有第一符号位扩展后的部分积的高N列数值(即高位列数值)中的对应列数值进行累加运算。
示例性的,若数据处理器接收到的数据位宽为2N比特,并且无论当前数据处理器进行N位或者2N位数据乘法运算时,数据处理器包含的第一低位华莱士树子单元411和第一高位华莱士树子单元413的总数量,均可以等于数据处理器接收到的数据位宽的2倍,第一低位华莱士树子单元411和第一高位华莱士树子单元413的数量各占一半,此时,第一与逻辑子单元412可以对第一改进华莱士树组单元41中最后一个第一低位华莱士树子单元411,输出的第一进位输出信号CoutN与功能模式选择信号进行与逻辑运算得到第七逻辑运算结果,并将第七逻辑运算结果作为第一改进华莱士树组单元41中,第一个第一高位华莱士树子单元413接收到的进位输入信号CinN+1。可选的,数据处理器当前可以将接收到的2N位数据,划分成高N位和低N位数据分别进行同步乘法运算;其中,从第一个第一低位华莱士树子单元411至最后一个第一低位华莱士树子单元411的对应编号i分别为1,2,…,N,从第一个第一高位华莱士树子单元413至最后一个第一高位华莱士树子单元413的对应编号i分别为N+1,N+2,…,2N。
可以理解的是,第一改进华莱士树组单元41中每个第一低位华莱士树子单元411和每个第一高位华莱士树子单元413,接收到的信号可以包括进位输入信号Cini,部分积数值输入信号和第一进位输出信号Couti。可选的,每个第一低位华莱士树子单元411和每个第一高位华莱士树子单元413接收到的部分积数值输入信号,可以为所有第一符号位扩展后的部分积中对应列的数值,每个第一低位华莱士树子单元411和每个第一高位华莱士树子单元413,输出的进位信号Couti的位数可以等于NCout=floor((NI+NCin)/2)-1。其中,NI可以表示该华莱士树单元的数据输入位数,NCin可以表示该华莱士树子单元的进位输入位数,NCout可以表示该华莱士树子单元最少的进位输出位数,floor(·)可以表示向下取整函数。可选的,第一改进华莱士树组单元41中每个第一低位华莱士树子单元411接收到的进位输入信号,可以为上一个第一低位华莱士树子单元4113输出的第一进位输出信号,每个第一高位华莱士树子单元413接收到的进位输入信号,可以为上一个第一高位华莱士树子单元413输出的第一进位输出信号,并且第一个第一低位华莱士树子单元411接收到的进位数输入信号为0。其中,第一个第一高位华莱士树子单元413接收到的进位输入信号,可以通过数据处理器当前可处理的数据的位宽与数据处理器接收到的数据位宽确定。
可选的,继续参见图6所示,所述第二压缩电路05中的第二改进华莱士树组单元51包括:第二低位华莱士树子单元511、第二与逻辑子单元512以及第二高位华莱士树子单元513,所述第二低位华莱士树子单元511的输出端与所述第二与逻辑子单元512的输入端连接,所述第二与逻辑子单元512的输出端与所述第二高位华莱士树子单元513的输入端连接;其中,多个所述第二低位华莱士树子单元511用于对所有第二符号位扩展后的部分积中的低位列数值进行累加处理得到第二进位输出信号,所述第二与逻辑子单元512用于对接收到的所述功能模式选择信号,所述第二低位华莱士树子单元511输出的所述第二进位输出信号进行与逻辑运算,得到所述第二高位华莱士树子单元513接收到的第二进位输入信号,多个所述第二高位华莱士树子单元513用于对所述第二进位输入信号和所有第二符号位扩展后的部分积中的高位列数值进行累加处理,得到所述第二累加运算结果。
其中,所述第二低位华莱士树子单元511和所述第一低位华莱士树子单元411均包括所述4-2压缩器以及模式选择电路,所述模式选择电路的输出端与所述4-2压缩器的输入端连接;其中,所述4-2压缩器用于对所有第二符号位扩展后的部分积中每列数值进行累加处理,所述模式选择电路用于选通所述4-2压缩器接收到的所述第二符号位扩展后的部分积中的数值;其中,所述模式选择电路中包括第一输入端,用于接收所述功能模式选择信号。
可以理解的是,上述第二改进华莱士树组单元51中的第二与逻辑子单元512,可以对接收到的功能模式选择信号,和第二低位华莱士树子单元511输出的进位输出信号进行与逻辑运算得到第八逻辑运算结果,并将第八逻辑运算结果作为第二高位华莱士树子单元513接收到的进位输入信号。
本实施例提供的一种数据处理器,数据处理器中的第一改进华莱士树组单元可以对第一部分积获取电路得到的所有第一符号位扩展后的部分积进行累加处理得到第一累加运算结果,进而通过第一累加单元对第一累加运算结果进行再次累加运算,得到第一目标运算结果;该数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,数据处理器通过第一改进华莱士树组单元对所有第一符号位扩展后的部分积进行累加处理,还可以有效降低数据处理器的功耗。
在其中一个实施例中,继续参见图5,所述第一压缩电路04中的第一累加单元42包括:第一加法器421,所述第一加法器421用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
具体的,第一加法器421可以为不同位宽的进位加法器。可选的,第一加法器421可以接收第一改进华莱士树组单元41输出的两路信号,对输出的两路信号进行加法运算,输出数据处理器当前可处理的数据运算模式的运算结果,即第一目标运算结果。可选的,上述第一加法器421可以为超前进位加法器,该超前进位加法器对应处理数据的位宽可以等于第一改进华莱士树组单元41输出的第一累加运算结果的位宽。
示例性的,若数据处理器当前处理8位*8位的定点数乘法运算,则第一累加单元42中的第一加法器421可以为16位超前进位加法器,如图6所示为第一压缩电路04的具体电路结构图,图9中Wallace_i表示第一低位华莱士树子单元411和第一高位华莱士树子单元413,i为第一低位华莱士树子单元411和第一高位华莱士树子单元413从0开始的编号,并且两两华莱士树子单元之间连接的实线表示高位编号对应的华莱士树子单元有进位输出信号,虚线表示高位编号对应的华莱士树子单元没有进位输出信号。其中,图6中Wallace_0和Wallace_7为第一低位华莱士树子单元411,Wallace_8和Wallace_15为第一高位华莱士树子单元413。
可选的,继续参见图6所示,所述第二压缩电路05中的第二累加单元52包括:第二加法器521,所述第二加法器521用于对所述第二累加运算结果进行加法运算得到所述第二目标运算结果。
需要说明的是,第二加法器521和第一加法器421对数据处理的方式也相同,对此本实施例也不再赘述。
本实施例提供的一种数据处理器,数据处理器中的第一压缩电路通过第一累加电路可以对第一改进华莱士树组单元输出的两路信号进行累加处理,输出不同数据运算模式的运算结果,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
在其中一个实施例中,继续参见图5所示,所述第一压缩电路04中的第一加法器421包括:进位信号输入端口4211、和位信号输入端口4212以及运算结果输出端口4213;所述进位信号输入端口4211用于接收第一进位信号,所述和位信号输入端口4212用于接收第一和位信号,所述运算结果输出端口4213用于输出第一进位信号与第一和位信号进行累加处理得到所述第一目标运算结果。
具体的,第一加法器421可以通过进位信号输入端口4211接收第一改进华莱士树组单元41输出的进位信号Carry,通过和位信号输入端口4212接收第一改进华莱士树组单元41输出的和位信号Sum,第一加法器421并将进位信号Carry与和位信号Sum进行累加的结果,通过运算结果输出端口4213输出。
需要说明的是,运算处理过程中,数据处理器可以采用不同位宽的第一加法器421,对第一改进华莱士树组单元41输出的进位输出信号Carry,以及和位输出信号Sum进行加法运算;其中,上述第一加法器421可处理数据的位宽可以等于数据处理器需要进行乘法运算或乘累加运算中被乘数位宽的2倍。
可选的,继续参见图6,所述第二压缩电路05中的第二加法器521包括:进位信号输入端口5211、和位信号输入端口5212以及运算结果输出端口5213;所述进位信号输入端口5211用于接收第二进位信号,所述和位信号输入端口5212用于接收第二和位信号,所述运算结果输出端口5213用于输出第二进位信号与第二和位信号进行累加处理得到所述第二目标运算结果。
在本实施例中,上述第二压缩电路05中的第二加法器521,与第一压缩电路04中的第一加法器421的数据处理方式相同,且内部电路结构和实现功能也相同,对此本实施例均不再赘述。
本实施例提供的一种数据处理器,数据处理器可以通过第一累加单元可以对第一改进华莱士树组单元输出的两路信号进行累加运算,输出不同数据运算模式的运算结果,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
图10为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图1所示的数据处理器进行处理,本实施例涉及的是实现四种不同数据运算模式的过程。如图10所示,该方法包括:
步骤S100、接收待处理数据和功能模式选择信号,其中,所述功能模式选择信号用于指示数据处理器当前可处理的对应数据运算模式。
具体的,数据处理器可以通过改进CSD编码电路接收两个待处理数据,并且改进CSD编码电路、第一部分积获取电路以及第二部分积获取电路均可以同时接收相同的功能模式选择信号。可选的,待处理数据可以包括两个待处理子数据,这两个待处理子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据。可选的,每个待处理数据中的两个待处理子数据可以拼接后作为一个整体,输入至改进CSD编码电路,还可以分开同步输入至改进CSD编码电路。其中,上述待处理子数据可以为定点数,且位宽可以为2N,两个待处理子数据拼接后得到的数据位宽可以为4N。
需要说明的是,上述功能模式选择信号可以有四种,四种功能模式选择信号分别对应数据处理器可处理的四种数据运算模式,四种数据运算模式可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。另外,一个待处理数据中的待处理子数据可以作为数据处理器执行乘法运算或乘累加运算处理时的乘数,另一个待处理数据中的待处理子数据可以作为数据处理器执行乘法运算或乘累加运算处理时的被乘数。
步骤S200、根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理。
具体的,数据处理器可以根据接收到的功能模式选择信号,确定数据处理器当前可处理的数据运算模式,以判断是否需要对待处理数据进行拆分处理。其中,拆分处理可以表征为将待处理数据分成多组相同位宽的数据。
可选的,上述步骤S200中根据所述功能模式选择信号,判断所述待处理数据是否需要进行拆分处理的过程,可以包括:根据所述功能模式选择信号,判断所述待处理数据的位宽与数据处理器当前可处理的数据运算模式对应的数据位宽是否相等。另外,在根据所述功能模式选择信号,判断所述待处理数据的位宽与数据处理器当前可处理的数据运算模式对应的数据位宽是否相等的步骤之后,所述方法还可以包括:若所述待处理数据的位宽与数据处理器当前可处理的数据运算模式的对应的数据位宽相等,则继续执行对所述待处理数据进行正则有符号数编码处理,得到所述目标编码。
需要说明的是,若数据处理器当前可处理的数据位宽与数据处理器接收到的数据位宽相等,此时,数据处理器不需要对待处理数据进行拆分处理,可以直接对完整的待处理数据进行正则有符号数编码处理。
可选的,若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据的步骤,具体包括:若所述待处理数据的位宽与数据处理器当前可处理的数据运算模式对应的数据位宽不相等,则对所述待处理数据进行拆分处理,得到拆分后的数据。
在本实施例中,若数据处理器当前可处理的数据位宽与数据处理器接收到的数据位宽不相等,此时,数据处理器需要对待处理数据进行拆分处理,得到拆分后的数据。其中,不相等的情况可以表征为当前可处理的数据位宽小于数据处理器接收到的数据位宽的情况。
例如,数据处理器中的改进CSD编码电路接收到的两个数据的位宽均为N比特,且数据处理器可以当前可处理N位*N位的乘法运算,此时,表征数据处理器当前可处理的数据位宽与数据处理器接收到的数据位宽相等。其中,上述正则有符号数编码处理可以表征为通过数值0,-1和1编码的数据处理过程。可选的,若数据处理器当前可处理N位数据运算,则目标编码的位宽可以等于N加1;若数据处理器当前可处理2N位数据运算,则目标编码的位宽可以等于2N加2;相当于数据处理器当前接收到的数据位宽x等于数据处理器可处理的最小数据位宽的a倍,则目标编码的位宽可以等于ax加a。
步骤S300、若所述待处理数据需要进行拆分处理,则对所述待处理数据进行拆分处理,得到拆分后的数据。
例如,数据处理器中的改进CSD编码电路接收到的两个数据的位宽均为2N比特,且数据处理器可以当前可处理N位*N位的乘法运算,此时,改进CSD编码电路可以自动将接收到的两个数据均分成高N位数据以及低N位数据,以满足数据处理器当前可处理的对应数据运算模式的数据位宽。
步骤S400、对所述拆分后的数据进行正则有符号数编码处理,得到目标编码。
可选的,上述步骤S400中对所述拆分后的数据进行正则有符号数编码处理,得到目标编码的过程,可以包括:将所述拆分后的数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2,所述目标编码包括第一目标编码和第二目标编码。
具体的,若数据处理器接收到的待处理数据(即乘数和被乘数)的位宽为2N,数据处理器当前可处理的数据位宽为N,则数据处理器中的改进CSD编码电路可以自动将2N位数据拆分成高N位数据以及低N位数据,同时,对高N位乘数和低N位乘数进行正则有符号数编码处理,得到对应的第一目标编码以及第二目标编码。可选的,上述待处理数据进行拆分处理后可以包括待处理高N位数据和待处理低N位数据。其中,若待处理数据的位宽为2N,则高N位数据可以称为待处理高位数据,低N位数据可以称为待处理低位数据。
步骤S500、根据所述功能模式选择信号、所述目标编码以及所述拆分后的数据,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积。
具体的,数据处理器可以根据实际运算需求,拆分后的数据以及拆分后的数据得到的对应第一目标编码和第二目标编码,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积;可选的,上述实际运算需求可以表征为数据处理器当前可处理的具体运算模式,例如,A*B、C*D或A*B+C*D等等。其中,数据处理器可以通过第一部分积获取电路得到第一符号位扩展后的部分积,通过第二部分积获取电路得到第二符号位扩展后的部分积。可选的,第一符号位扩展后的部分积可以是根据第一目标编码和/或第二目标编码得到的部分积;第二符号位扩展后的部分积也可以是根据第一目标编码和/或第二目标编码得到的部分积。
需要说明的是,数据处理器接收到的两个待处理数据(包括待处理乘数和待处理被乘数)均包括两个待处理子数据,即两个拆分后的数据;若数据处理器当前可处理的数据位宽等于拆分后的数据的位宽,则完成正则有符号数编码处理后,可以得到两个拆分后的数据对应的两组目标编码,即第一目标编码和第二目标编码。可选的,拆分后的数据可以为数据处理器接收到的第一数据中的低位数据和第一数据中的高位数据。可选的,若数据处理器当前可处理乘法运算,此时,数据处理器中的第一部分积获取电路或第二部分积获取电路可以根据实际运算需求,通过其中一组目标编码和拆分后的被乘数得到符号位扩展后的部分积,以便实现累加运算,得到乘法运算结果;该情况下,相当于数据处理器根据其中一组目标编码与拆分后的被乘数中的对应子数据,得到一组符号位扩展后的部分积,并对一组符号位扩展后的部分积进行累加运算,得到另一乘法运算结果。可选的,若数据处理器当前可处理乘累加运算,此时,数据处理器中的第一部分积获取电路和/或第二部分积获取电路可以根据实际运算需求,通过两组目标编码得到两组符号位扩展后的部分积,以便实现累加运算,得到乘累加运算结果;该情况下,相当于数据处理器根据两组目标编码分别与拆分后的被乘数,得到两组符号位扩展后的部分积,并对两组符号位扩展后的部分积进行累加运算,得到乘累加运算结果。
步骤S600、对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果。
可选的,上述步骤S600中对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果的过程,可以包括:对所有第一符号位扩展后的部分积进行累加处理得到第一累加运算结果;对所述第一累加运算结果进行累加处理,得到所述第一目标运算结果。
具体的,数据处理器可以通过第一压缩电路中的第一改进华莱士树组单元,对所有第一符号位扩展后的部分积中的列数值进行累加运算得到第一累加运算结果,再通过第一累加单元对第一累加运算结果进行累加处理,得到第一目标运算结果。可选的,第一累加运算结果可以包括第一改进华莱士树组单元进行累加运算,得到的和位输出信号Sum与进位输出信号Carry,其中,和位输出信号Sum与进位输出信号Carry的位宽可以相同。另外,第一累加单元相当于对和位输出信号Sum与进位输出信号Carry进行累加运算。可选的,上述第一目标运算结果可以为全0数据,还可以为非0数据。
需要说明的是,数据处理器可以通过第一累加单元中的第一加法器,对第一改进华莱士树组单元输出的进位输出信号Carry与和位输出信号Sum进行加法运算,输出第一目标运算结果。
步骤S700、对所有第二符号位扩展后的部分积进行压缩处理,得到第二目标运算结果。
可选的,上述步骤S700中对所述第二符号位扩展后的部分积进行压缩处理,得到第二目标运算结果的步骤,包括:对所有第二符号位扩展后的部分积进行累加处理得到第二累加运算结果;对所述第二累加运算结果进行累加处理,得到所述第二目标运算结果。
具体的,数据处理器可以通过第二压缩电路中的第二改进华莱士树组单元,对第二符号位扩展后的部分积进行累加运算得到第二累加运算结果,再通过累加单元对第二累加运算结果进行累加处理,得到第二目标运算结果。可选的,上述第二目标运算结果可以为全0数据,还可以为非0数据。
在本实施例中,数据处理器可以同步执行步骤S600和步骤S700,对这两个步骤的先后顺序本实施例不做任何限定。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能模式选择信号确定当前可处理对应的数据运算模式,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗;同时,该方法可以对待处理数据进行正则有符号数编码处理,以降低乘法运算过程中获取的有效部分积的数量,从而降低数据处理器实现乘法运算或者乘累加运算的复杂性,提高了运算效率,有效降低了数据处理器的功耗。
作为其中一个实施例,上述步骤S400中对所述拆分后的数据进行正则有符号数编码处理,得到目标编码的过程,具体可以包括以下过程:将所述拆分后的数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2,所述目标编码包括第一目标编码和第二目标编码。
具体的,若数据处理器接收到的待处理数据的位宽为2N,数据处理器当前可处理的数据位宽为N,则数据处理器中的改进CSD编码电路,可以自动将2N位数据拆分成高N位数据以及低N位数据,同时,分别对高N位数据和低N位数据进行正则有符号数编码处理,得到对应的第一目标编码以及第二目标编码。可选的,上述待处理数据进行拆分处理后可以包括待处理高N位数据和待处理低N位数据(即拆分后的数据)。其中,若待处理数据的位宽为2N,则高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转换处理的方式也类似。
例如,数据处理器中的改进CSD编码电路接收到的乘数为“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,此时,将第五新数据可以称为初始编码,并对初始编码进行一次补位处理后,表征正则有符号数编码处理完成得到中间编码,其中,初始编码的位宽可以等于乘数的位宽。可选的,改进CSD编码电路对乘数进行正则有符号数编码处理后,得到新数据(即初始编码),若新数据中的最高位数值和次高位数值为“10”或“01”,则改进CSD编码电路可以对该新数据的最高位数值的高一位处补一位数值0,得到对应中间编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于数据处理器当前可处理数据的位宽加1。
另外,若数据处理器接收到的数据位宽为2N,且当前可处理N位数据运算,则数据处理器中的改进CSD编码电路,可以将2N位数据拆分成两组N位数据分别进行数据运算,此时,将得到的两组(N+1)位中间编码进行结合后可以作为目标编码;若数据处理器当前可处理2N位数据运算,则数据处理器中的改进CSD编码电路,可以对获取的(2N+1)位中间编码的最高位数值的高一位处补一位数值0(即补数处理)后,将补数处理后的(2N+2)位数据作为目标编码。其中,改进CSD编码电路可以得到第一目标编码和第二目标编码。
本实施例提供的一种数据处理方法,该方法能够对多种不同位宽的数据进行乘法运算以及乘累加运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;同时,该方法能够对数据进行正则有符号数编码处理,降低运算过程中获取的有效部分积的数量,从而降低乘法运算或乘累加运算的复杂性,提高了运算效率,降低了数据处理器的功耗。
图11为另一实施例提供的得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积的具体流程示意图,如图11所示,上述步骤S500中根据所述功能模式选择信号、所述目标编码以及所述拆分后的数据,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积的过程,可以包括:
步骤S510、根据所述功能模式选择信号,确定数据处理器当前可处理的数据运算模式。
具体的,根据不同的功能模式选择信号可以确定数据处理器当前可处理的具体数据运算模式。在本实施例中,数据运算模式可以包括N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。可选的,不同数据运算模式对应的功能模式选择信号可以不相同。
步骤S520、根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/或第二目标编码,与所述拆分后的数据,得到所述第一符号位扩展后的部分积以及所述第二符号位扩展后的部分积。
具体的,根据确定的数据运算模式,数据处理器中的改进CSD编码电路可以确定将一组目标编码还是两组目标编码,分别输入至第一部分积获取电路和/或第二部分积获取电路中;然后第一部分积获取电路根据接收到的目标编码与拆分后的被乘数,得到第一符号位扩展后的部分积,第二部分积获取电路根据接收到的目标编码与拆分后的被乘数,得到第二符号位扩展后的部分积。可选的,同一次数据运算时,第一符号位扩展后的部分积和第二符号位扩展后的部分积的位宽可以相等,且位宽可以等于数据处理器当前可处理数据位宽的2倍。可选的,第一符号位扩展后的部分积的数量可以等于第一部分积获取电路接收到的所有目标编码的数量,第二符号位扩展后的部分积的数量可以等于第二部分积获取电路接收到的所有目标编码的数量。
可选的,所述第一符号位扩展后的部分积包括第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积;如图12所示为得到第一符号位扩展后的部分积的具体流程示意图,如图12所示,上述步骤S520中根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/或第二目标编码,与所述拆分后的数据,得到所述第一符号位扩展后的部分积的过程,可以包括以下步骤:
步骤S521、根据所述第一目标编码和/或所述第二目标编码,与所述拆分后的数据,得到符号位扩展后的第一低位部分积。
具体的,数据处理器中的第一部分积获取电路,可以根据接收到的第一目标编码和/或第二目标编码,以及拆分后的被乘数,得到符号位扩展后的第一低位部分积。可选的,符号位扩展后的第一低位部分积可以等于数据处理器当前可处理的拆分后的被乘数位宽的2倍。
步骤S522、根据所述功能模式选择信号,得到所述第一符号位扩展后的低位部分积中的第一数值。
具体的,第一符号位扩展后的部分积可以包括第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积。可选的,上述第一数值可以位于第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(N+1)位至第2N位数值之间对应位数值。可选的,若数据处理器接收到的功能模式选择信号对应当前可处理2N位数据,则第一数值可以等于数据处理器当前可处理2N位数据时,得到的符号位扩展后的低位部分积中的对应位数值;若数据处理器接收到的功能模式选择信号对应当前可处理N位数据,则第一数值可以等于数据处理器当前可处理N位数据时,得到的符号位扩展后的低位部分积中的符号位数值;其中,数据处理器接收到的数据位宽为2N。
步骤S523、对所述功能模式选择信号和所述符号位扩展后的第一低位部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值。
具体的,数据处理器接收到的数据位宽为2N,数据处理器中的第一部分积获取电路可以通过第一低位与逻辑单元对功能模式选择信号,与数据处理器对2N位数据进行乘法运算或乘累加运算的过程中,得到的符号位扩展后的第一低位部分积中的符号位数值进行与逻辑运算,得到第一符号位扩展后的低位部分积中的第二数值;实际上,数据处理器对表示功能模式选择信号的数值进行与逻辑运算的。可选的,第二数值可以位于第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第4N位数值之间对应位数值。
步骤S524、将所述符号位扩展后的第一低位部分积中的数值、所述第一数值以及所述第二数值进行结合,得到所述第一符号位扩展后的低位部分积。
具体的,继续上一示例,将符号位扩展后的第一低位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N位数值之间对应位数值、第(2N+1)位至第4N位数值之间对应位数值(即第二数值)以及第(N+1)位至第2N位数值之间对应位数值(即第一数值)结合,得到第一符号位扩展后的低位部分积。
步骤S525、根据所述第一目标编码和/或所述第二目标编码,与所述拆分后的数据,得到符号位扩展后的第一高位部分积。
具体的,数据处理器中的第一部分积获取电路,可以根据接收到的第一目标编码和/或第二目标编码,以及拆分后的被乘数,得到符号位扩展后的第一高位部分积。可选的,符号位扩展后的第一高位部分积可以等于数据处理器当前可处理的拆分后的被乘数位宽的2倍。还可以理解的是,数据处理器可以根据第一目标编码和/或第二目标编码,分别得到符号位扩展后的第一低位部分积和符号位扩展后的第一高位部分积。
步骤S526、根据所述功能模式选择信号,得到所述第一符号位扩展后的高位部分积中的第三数值。
需要说明的是,上述第三数值可以位于第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(3N+1)位至第4N位数值之间对应位数值。可选的,若数据处理器接收到的功能模式选择信号对应处理2N位数据,则第三数值可以等于数据处理器对2N位数据进行乘法运算的过程中,得到符号位扩展后的高位部分积中的符号位数值,还可以等于数据处理器对N位数据进行乘法运算的过程中,符号位扩展后的高位部分积中的符号位数值;其中,数据处理器接收到的数据位宽为2N。
步骤S527、对所述功能模式选择信号和所述符号位扩展后的第一高位部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值。
具体的,数据处理器接收到的数据位宽为2N,数据处理器通过第一高位与逻辑单元对功能模式选择信号,与数据处理器对2N位数据进行乘法运算的过程中,得到的符号位扩展后的第一高位部分积中的符号位数值进行与逻辑运算,得到第一符号位扩展后的高位部分积中的第四数值。可选的,第四数值可以位于第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第2N位数值之间对应位数值。
步骤S528、将所述符号位扩展后的第一高位部分积中的数值、所述第三数值以及所述第四数值进行结合,得到所述第一符号位扩展后的高位部分积。
继续上一示例,将符号位扩展后的第一高位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第3N位数值之间对应位数值、第(3N+1)位至第4N位数值之间对应位数值(即第四数值)以及第1位至第2N位数值之间对应位数值(即第三数值)结合,得到第一符号位扩展后的高位部分积。
其中,上述步骤S521~步骤S524,与步骤S525~步骤S528在本实施例中的执行顺序可以互换,对此本实施例不做限定。
可选的,所述第二符号位扩展后的部分积包括第二符号位扩展后的低位部分积和第二符号位扩展后的高位部分积;上述步骤S520中根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/或第二目标编码,与所述拆分后的数据,得到所述第二符号位扩展后的部分积的过程,可以包括以下步骤:根据所述第一目标编码和/或所述第二目标编码,与所述拆分后的数据,得到符号位扩展后的第二低位部分积;根据所述功能模式选择信号,得到所述第二符号位扩展后的低位部分积中的第五数值;对所述功能模式选择信号和所述符号位扩展后的第二低位部分积中的符号位数值进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值;将所述符号位扩展后的第二低位部分积中的数值、所述第五数值以及所述第六数值进行结合,得到所述第二符号位扩展后的低位部分积;根据所述第一目标编码和/或所述第二目标编码,与所述拆分后的数据,得到符号位扩展后的第二高位部分积;根据所述功能模式选择信号,得到所述第二符号位扩展后的高位部分积中的第七数值;对所述功能模式选择信号和所述符号位扩展后的第二高位部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值,得到所述第二符号位扩展后的高位部分积中的第四数值;将所述符号位扩展后的第二高位部分积中的数值、所述第七数值以及所述第八数值进行结合,得到所述第二符号位扩展后的高位部分积。
其中,数据处理器中的第二部分积获取电路得到的第二符号位扩展后的低位部分积中的第五数值,与第一符号位扩展后的低位部分积中的第一数值的具体位置和具体获取方式相同;数据处理器中的第二部分积获取电路得到的第二符号位扩展后的低位部分积中的第六数值,与第一符号位扩展后的低位部分积中的第二数值的获取方式和具体位置相同;数据处理器中的第二部分积获取电路得到的第二符号位扩展后的高位部分积中的第七数值,与第一符号位扩展后的高位部分积中的第三数值的具体位置和具体获取方式相同;数据处理器中的第二部分积获取电路得到的第二符号位扩展后的高位部分积中的第八数值,与第一符号位扩展后的高位部分积中的第四数值的获取方式和具体位置相同,第二符号位扩展后的低位部分积和第二符号位扩展后的高位部分积的获取方式和位置本实施例将不再赘述。其中,第二部分积电路获取第二符号位扩展后的低位部分积,与获取第二符号位扩展后的高位部分积的步骤,在本实施例中的执行顺序可以互换,本实施例对此执行顺序不做任何限定。
本实施例提供的一种数据处理方法,该方法可以根据数据处理器接收到的功能模式选择信号对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,上述步骤S600中对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果的过程,具体可以通过以下方式实现:通过第一低位华莱士树子单元对所有第一符号位扩展后的部分积中的列数值进行累加处理,得到第一进位输出信号;通过第一与逻辑子单元对所述第一进位输出信号和所述功能模式选择信号进行与逻辑运算,得到第一进位输入信号;通过第一高位华莱士树子单元对所述第一进位输入信号以及所有第一符号位扩展后的部分积中的列数值进行累加处理,得到所述第一累加运算结果;通过第一累加单元对第一累加运算结果进行加法运算,得到所述第一目标运算结果。
具体的,数据处理器可以通过第一累加单元中的第一加法器对第一改进华莱士树组单元输出的进位输出信号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中的数值可以等于第一改进华莱士树组单元中每个华莱士树子单元的和位输出信号。
需要说明的是,若第一符号位扩展后的部分积的位宽可以等于2N,则数据处理器可以包括N个第一低位华莱士树子单元以及N个第一高位华莱士树子单元;N个第一低位华莱士树子单元可以对所有第一符号位扩展后的部分积中的低N列数据进行累加运算,得到第一进位输出信号;N个第一高位华莱士树子单元可以对所有第一符号位扩展后的部分积中的高N列数据进行累加运算,得到累加运算结果;在乘法运算或乘累加运算过程中,第一个第一高位华莱士树子单元可以对接收到第一部分积获取电路中第一与逻辑子单元输出的逻辑运算结果(即第一进位输入信号),与所有第一符号位扩展后的部分积中,从最低列至最高列算起,第(N+1)列数据进行累加运算。然后数据处理器通过第一累加单元对第一改进华莱士树组单元的输出结果进行累加运算;其中,数据处理器中的第一累加单元可以根据接收到的功能模式选择信号与第一低位加法器输出的信号进行与逻辑运算得到逻辑运算结果,并将逻辑运算结果输入至高位加法器中,从而达到第一目标运算结果。其中,数据处理器中的第一改进华莱士树组单元和第一累加单元,对所有第一符号位扩展后的部分积进行累加处理的具体实现电路结构图如图6所示。
可选的,上述步骤S700中对所有第二符号位扩展后的部分积进行压缩处理,得到第二目标运算结果的过程,具体可以通过以下方式实现:通过第二低位华莱士树子单元对所有第二符号位扩展后的部分积中的列数值进行累加处理,得到第二进位输出信号;通过第二与逻辑子单元对所述第二进位输出信号和所述功能模式选择信号进行与逻辑运算,得到第二进位输入信号;通过第二高位华莱士树子单元对所述第二进位输入信号以及所有第二符号位扩展后的部分积中的列数值进行累加处理,得到所述第二累加运算结果;通过第二累加单元对第二累加运算结果进行加法运算,得到所述第二目标运算结果。
在本实施例中,数据处理器可以通过第二压缩电路对所有第二符号位扩展后的部分积进行累加处理,以得到第二目标运算结果。其中,数据处理器对所有第二符号位扩展后的部分积进行累加处理,得到第二目标运算结果的过程,与数据处理器对所有第一符号位扩展后的部分积进行累加处理,得到第一目标运算结果的过程类似,对此本实施例不再赘述。
本实施例提供的一种数据处理方法,该方法能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的数据处理器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上数据处理器时,数据处理器间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图13为组合处理装置的示意图。
其它处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。
可选的,该结构如图14所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图15所示,图15提供了一种板卡,上述板卡除了包括上述芯片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 (30)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911351199.1A CN113031909B (zh) 2019-12-24 2019-12-24 数据处理器、方法、装置及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911351199.1A CN113031909B (zh) 2019-12-24 2019-12-24 数据处理器、方法、装置及芯片

Publications (2)

Publication Number Publication Date
CN113031909A CN113031909A (zh) 2021-06-25
CN113031909B true CN113031909B (zh) 2023-09-08

Family

ID=76452082

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911351199.1A Active CN113031909B (zh) 2019-12-24 2019-12-24 数据处理器、方法、装置及芯片

Country Status (1)

Country Link
CN (1) CN113031909B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360276A (zh) * 2010-12-03 2012-02-22 威盛电子股份有限公司 无进位乘法装置及其处理方法
CN105183424A (zh) * 2015-08-21 2015-12-23 电子科技大学 一种具有高精度低能耗特性的固定位宽乘法器
CN110554854A (zh) * 2019-09-24 2019-12-10 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996601B2 (en) * 2012-06-21 2015-03-31 Advanced Micro Devices, Inc. Method and apparatus for multiply instructions in data processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360276A (zh) * 2010-12-03 2012-02-22 威盛电子股份有限公司 无进位乘法装置及其处理方法
CN105183424A (zh) * 2015-08-21 2015-12-23 电子科技大学 一种具有高精度低能耗特性的固定位宽乘法器
CN110554854A (zh) * 2019-09-24 2019-12-10 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张晓潇 ; 陈杰 ; 韩亮 ; 林川 ; .一种旨在优化速度的多功能乘累加器设计.科学技术与工程.2006,(第13期),全文. *

Also Published As

Publication number Publication date
CN113031909A (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
CN110515589B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110515587B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110554854B (zh) 数据处理器、方法、芯片及电子设备
CN110673823B (zh) 乘法器、数据处理方法及芯片
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258544B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031912A (zh) 乘法器、数据处理方法、装置及芯片
CN110647307B (zh) 数据处理器、方法、芯片及电子设备
CN110515586B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110515588B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258633A (zh) 乘法器、数据处理方法、芯片及电子设备
CN110688087B (zh) 数据处理器、方法、芯片及电子设备
CN209879493U (zh) 乘法器
CN210006029U (zh) 数据处理器
CN113031909B (zh) 数据处理器、方法、装置及芯片
CN210109789U (zh) 数据处理器
CN210006031U (zh) 乘法器
CN210109863U (zh) 乘法器、装置、神经网络芯片及电子设备
CN209895329U (zh) 乘法器
CN111258545B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258542B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113033799B (zh) 数据处理器、方法、装置及芯片
CN110378477B (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