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

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

Info

Publication number
CN113033788B
CN113033788B CN201911349759.XA CN201911349759A CN113033788B CN 113033788 B CN113033788 B CN 113033788B CN 201911349759 A CN201911349759 A CN 201911349759A CN 113033788 B CN113033788 B CN 113033788B
Authority
CN
China
Prior art keywords
partial product
data
order
bit
low
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
CN201911349759.XA
Other languages
English (en)
Other versions
CN113033788A (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 CN201911349759.XA priority Critical patent/CN113033788B/zh
Publication of CN113033788A publication Critical patent/CN113033788A/zh
Application granted granted Critical
Publication of CN113033788B publication Critical patent/CN113033788B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

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

Description

数据处理器、方法、装置及芯片
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理器、方法、装置及芯片。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能数据处理器的要求也越来越高,其中,数据处理器为乘法器、加法器或乘累加器。神经网络算法作为智能芯片广泛应用的算法之一,通过乘累加器进行乘累加运算在神经网络算法中是一种常见的操作。
通常,数据处理器是采用多个相同输入数据位宽或不同数据位宽的乘法器先进行并行乘法运算,得到多个乘法运算结果,再通过加法器对多个乘法运算结果进行累加运算,得到目标乘累加结果。但是,现有的数据处理器仅能够对相同位宽的数据进行乘累加运算,降低了数据处理器的通用性。另外,现有技术中对多个乘法运算结果还需要单独进行一次累加运算才能实现乘累加操作,从而增大了数据处理器的功耗。
发明内容
基于此,有必要针对上述技术问题,提供了一种低功耗且通用性较高的数据处理器、方法、装置及芯片。
一种数据处理器,所述数据处理器包括:修正布斯编码电路、第一部分积获取电路、第二部分积获取电路、第一压缩电路以及第二压缩电路,所述第一压缩电路和所述第二压缩电路均包括4-2压缩器,所述4-2压缩器包括选择电路以及全加器;所述修正布斯编码电路的输出端与所述第一部分积获取电路的第一输入端连接,所述第一部分积获取电路的输出端与所述第一压缩电路的第一输入端连接,所述修正布斯编码电路的输出端还与所述第二部分积获取电路的第一输入端连接,所述第二部分积获取电路的输出端与所述第二压缩电路的第一输入端连接;
其中,所述修正布斯编码电路、所述第一部分积获取电路、所述第二部分积获取电路、所述第一压缩电路以及所述第二压缩电路均包括逻辑门单元,所述逻辑门单元的输入端用于接收功能模式选择信号,所述功能模式选择信号用于确定所述数据处理器当前可处理的对应数据运算模式;所述修正布斯编码电路用于接收第一数据、第二数据和功能模式选择信号,对所述第一数据进行布斯编码处理得到目标编码,并根据所述功能模式选择信号,确定是否将所述目标编码输入至所述第一部分积获取电路和/或第二部分积获取电路,所述第一部分积获取电路用于对接收到的所述第二数据和所述目标编码得到第一符号位扩展后的部分积,所述第二部分积获取电路用于对接收到的所述第二数据和所述目标编码得到第二符号位扩展后的部分积,所述第一压缩电路用于对所述第一符号位扩展后的部分积进行累加处理得到第一目标运算结果,所述第二压缩电路用于对所述第二符号位扩展后的部分积进行累加处理得到第二目标运算结果。
在其中一个实施例中,所述修正布斯编码电路中包括第一输入端,用于接收功能模式选择信号;所述第一部分积获取电路和所述第二部分积获取电路中均包括第二输入端,用于接收所述功能模式选择信号;所述第一压缩电路和所述第二压缩电路中均包括第二输入端,用于接收所述功能模式选择信号。
在其中一个实施例中,所述数据处理器包括修正布斯编码电路,所述修正布斯编码电路包括低位布斯编码单元、与逻辑单元以及高位布斯编码单元,所述低位布斯编码单元的输出端与所述与逻辑单元的输入端连接,所述与逻辑单元的输出端与所述高位布斯编码单元的输入端连接;
其中,所述低位布斯编码单元用于对接收到的所述第一数据中的第一低位数据进行布斯编码处理得到第一目标编码,所述与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一数据中的第一高位数据进行布斯编码处理时的补位数值,所述高位布斯编码单元用于对接收到的所述第一数据中的第一高位数据和所述补位数值进行布斯编码处理得到第二目标编码。
在其中一个实施例中,所述数据处理器中的修正布斯编码电路包括低位布斯编码单元,所述低位布斯编码单元包括:低位数据输入端口、第一目标编码输出端口、高位数值输出端口;所述低位数据输入端口用于接收进行布斯编码处理的所述第一数据中的第一低位数据,所述第一目标编码输出端口用于输出对所述第一低位数据进行布斯编码处理后,得到的第一目标编码,所述高位数值输出端口用于输出所述第一低位数据中的最高位数值。
在其中一个实施例中,所述修正布斯编码电路中的高位布斯编码单元包括:高位数据输入端口、低位数值输入端口以及第二目标编码输出端口;所述高位数据输入端口用于接收所述第一数据中的第一高位数据,所述低位数值输入端口用于接收所述第一数据中的第一低位数据包含的最高位数值与所述功能模式选择信号进行与逻辑运算,得到的第一逻辑运算结果,所述第二目标编码输出端口用于输出所述第二目标编码。
在其中一个实施例中,所述修正布斯编码电路中的与逻辑单元包括:高位数值输入端口、模式选择信号输入端口以及逻辑运算结果输出端口;所述高位数值输入端口用于接收所述第一数据中第一低位数据对应的最高位数值,所述模式选择信号输入端口用于接收所述功能模式选择信号,所述逻辑运算结果输出端口用于输出对所述第一低位数据中的最高位数值,与所述功能模式选择信号进行与逻辑运算得到的所述第一逻辑运算结果。
在其中一个实施例中,所述数据处理器中的第一部分积获取电路包括:第一低位部分积获取单元、第一低位选择器组单元、第一低位与逻辑单元、第一高位部分积获取单元、第一高位选择器组单元以及第一高位与逻辑单元;所述修正布斯编码电路的第一输出端与所述第一低位部分积获取单元的第一输入端连接,所述第一低位选择器组单元的输出端与所述第一低位部分积获取单元的第二输入端连接,所述第一低位与逻辑单元的输出端与所述第一低位部分积获取单元的第三输入端连接,所述修正布斯编码电路的第二输出端与所述第一高位部分积获取单元的第一输入端连接,所述第一高位选择器组单元的输出端与所述第一高位部分积获取单元的第二输入端连接,所述第一高位与逻辑单元的输出端与所述第一高位部分积获取单元的第三输入端连接;
其中,所述第一低位部分积获取单元用于根据接收到的所述目标编码以及所述第二数据,得到第一符号位扩展后的低位部分积,所述第一低位选择器组单元用于选通所述第一符号位扩展后的低位部分积中的第一数值,所述第一低位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值,所述第一高位部分积获取单元用于根据接收到的所述目标编码以及所述第二数据,得到第一符号位扩展后的高位部分积,所述第一高位选择器组单元用于选通所述第一符号位扩展后的高位部分积中的第三数值,所述第一高位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值。
在其中一个实施例中,所述数据处理器中的第一部分积获取电路包括第一低位部分积获取单元,所述第一低位部分积获取单元包括:目标编码输入端口、第一选通数值输入端口、第二选通数值输入端口、第二数据输入端口以及低位部分积输出端口;所述目标编码输入端口用于接收所述目标编码,所述第一选通数值输入端口用于接收所述第一低位选择器组单元选通后,输出的所述第一符号位扩展后的低位部分积中的第一数值,所述第二选通数值输入端口用于接收所述第一低位与逻辑单元输出的所述第一符号位扩展后的低位部分积中的第二数值,所述第二数据输入端口用于接收所述第二数据,所述低位部分积输出端口用于输出所有第一符号位扩展后的低位部分积。
在其中一个实施例中,所述第一低位选择器组单元包括:第一低位选择器,所述第一低位选择器用于选通所述第一符号位扩展后的低位部分积中的第一数值。
在其中一个实施例中,所述数据处理器中的第一部分积获取电路包括第一高位选择器组单元,所述第一高位选择器组单元包括:第一高位选择器,所述第一高位选择器用于选通所述第一符号位扩展后的高位部分积中的第三数值。
在其中一个实施例中,所述数据处理器中的第一部分积获取电路包括第一低位与逻辑单元,所述第一低位与逻辑单元包括:第一模式选择信号输入端口、第一符号位数值输入端口以及第一结果输出端口;其中,所述第一模式选择信号输入端口用于接收所述功能模式选择信号,所述第一符号位数值输入端口用于接收所述符号位扩展后的低位部分积中的第一符号位数值,所述第一结果输出端口用于输出对所述功能模式选择信号与所述第一符号位数值进行与逻辑运算得到的第三逻辑运算结果。
在其中一个实施例中,所述数据处理器中的第一部分积获取电路包括第一高位与逻辑单元,所述第一高位与逻辑单元包括:第二模式选择信号输入端口、第二符号位数值输入端口以及第二结果输出端口;其中,所述第二模式选择信号输入端口用于接收所述功能模式选择信号,所述第二符号位数值输入端口用于接收所述符号位扩展后的高位部分积中的第二符号位数值,所述第二结果输出端口用于输出对所述功能模式选择信号与所述第二符号位数值进行与逻辑运算得到的第四逻辑运算结果。
在其中一个实施例中,所述数据处理器中的第一部分积获取电路包括第一高位部分积获取单元,所述第一高位部分积获取单元包括:高位目标编码输入端口、第三选通数值输入端口、第四选通数值输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述第一高位目标编码,所述第三选通数值输入端口用于接收所述第一高位选择器组单元选通后,输出的所述第一符号位扩展后的高位部分积中的第三数值,所述第四选通数值输入端口用于接收所述第一高位与逻辑单元输出的所述第一符号位扩展后的高位部分积中的第四数值,所述第二数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所有第一符号位扩展后的高位部分积。
在其中一个实施例中,所述数据处理器中的第一压缩电路包括:第一修正华莱士树组单元和第一累加单元,所述第一修正华莱士树组单元的输出端与所述第一累加单元的输入端连接;所述第一修正华莱士树组单元用于对不同数据运算模式,得到的所述第一符号位扩展后的低位部分积,以及所述第一符号位扩展后的高位部分积中的列数值进行累加处理得到第一累加运算结果,所述第一累加单元用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
在其中一个实施例中,所述数据处理器中的第二部分积获取电路包括:第二低位部分积获取单元、第二低位选择器组单元、第二低位与逻辑单元、第二高位部分积获取单元、第二高位选择器组单元以及第二高位与逻辑单元;所述修正布斯编码电路的第一输出端与所述第二低位部分积获取单元的第一输入端连接,所述第二低位选择器组单元的输出端与所述第二低位部分积获取单元的第二输入端连接,所述第二低位与逻辑单元的输出端与所述第二低位部分积获取单元的第三输入端连接,所述修正布斯编码电路的第二输出端与所述第二高位部分积获取单元的第一输入端连接,所述第二高位选择器组单元的输出端与所述第二高位部分积获取单元的第二输入端连接,所述第二高位与逻辑单元的输出端与所述第二高位部分积获取单元的第三输入端连接;
其中,所述第二低位部分积获取单元用于根据接收到的所述目标编码以及所述第二数据,得到第二符号位扩展后的低位部分积,所述第二低位选择器组单元用于选通所述第二符号位扩展后的低位部分积中的第五数值,所述第二低位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值,所述第二高位部分积获取单元用于根据接收到的所述目标编码以及所述第二数据,得到第二符号位扩展后的高位部分积,所述第二高位选择器组单元用于选通所述第二符号位扩展后的高位部分积中的第七数值,所述第二高位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的高位部分积中的第八数值。
在其中一个实施例中,所述数据处理器中的第二压缩电路包括:第二修正华莱士树组单元和第二累加单元,所述第二修正华莱士树组单元的输出端与所述第二累加单元的输入端连接;所述第二修正华莱士树组单元用于对不同数据运算模式,得到的所述第二目标编码低位部分积,以及所述第二目标编码高位部分积中的列数值进行累加处理得到第二累加运算结果,所述第二累加单元用于对所述第二累加运算结果进行加法运算得到所述第二目标运算结果。
在其中一个实施例中,所述第一压缩电路中的第一修正华莱士树组单元包括:第一低位华莱士树子单元、第一与逻辑子单元以及第一高位华莱士树子单元,所述第一低位华莱士树子单元的输出端与所述第一与逻辑子单元的输入端连接,所述第一与逻辑子单元的输出端与所述第一高位华莱士树子单元的输入端连接;其中,所述第一低位华莱士树子单元用于对所有第一符号位扩展后的部分积中的低位列数值进行累加处理得到第一进位输出信号,所述第一与逻辑子单元用于对接收到的所述功能模式选择信号,和所述第一低位华莱士树子单元输出的所述第一进位输出信号进行与逻辑运算,得到所述第一高位华莱士树子单元接收到的进位输入信号,所述第一高位华莱士树子单元用于对所述进位输入信号和所有第一符号位扩展后的部分积中的高位列数值进行累加处理,得到所述第一累加运算结果。
在其中一个实施例中,所述第一低位华莱士树子单元和所述第一高位华莱士树子单元均包括所述4-2压缩器以及模式选择电路,所述模式选择电路的输出端与所述4-2压缩器的输入端连接,所述模式选择电路中包括第一输入端,用于接收所述功能模式选择信号;其中,所述4-2压缩器用于对所有第一符号位扩展后的部分积中每列数值进行累加处理,所述模式选择电路用于选通所述4-2压缩器接收到的所述第一符号位扩展后的部分积中的数值。
在其中一个实施例中,所述第一压缩电路中的第一累加单元包括:第一加法器,所述第一加法器用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
在其中一个实施例中,所述第一累加单元中的第一加法器包括:进位信号输入端口、和位信号输入端口以及运算结果输出端口;所述进位信号输入端口用于接收第一进位信号,所述和位信号输入端口用于接收第一和位信号,所述运算结果输出端口用于输出第一进位信号与第一和位信号进行累加处理得到所述第一目标运算结果。
本实施例提供的数据处理器,数据处理器通过修正布斯编码电路对接收到的第一数据进行编码处理得到目标编码,通过第一部分积获取电路根据接收到的第二数据以及目标编码,得到对应的第一符号位扩展后的部分积,第二部分积获取电路根据接收到的第二数据以及目标编码,得到对应的第二符号位扩展后的部分积,并通过第一压缩电路对第一符号位扩展后的部分积进行累加处理得到第一目标运算结果,通过第二压缩电路对第二符号位扩展后的部分积进行累加处理得到第二目标运算结果;该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
一种数据处理方法,所述方法包括:
接收待处理数据以及功能模式选择信号,其中,所述功能模式选择信号用于指示数据处理器当前可处理的数据运算模式;
将所述待处理数据与所述功能模式选择信号进行逻辑运算,得到待编码数值;
对所述待处理数据以及所述待编码数值进行布斯编码处理,得到目标编码;
根据所述功能模式选择信号、所述目标编码以及所述待处理数据,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积;
对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果;
对所有第二符号位扩展后的部分积进行压缩处理,得到第二目标运算结果。
在其中一个实施例中,所述对所述待处理数据与所述功能模式选择信号进行逻辑运算,得到待编码数值,包括:对所述待处理数据中的待处理低位数据对应的最高位数值和所述功能模式选择信号进行与逻辑运算,得到所述待编码数值。
在其中一个实施例中,所述对所述待处理数据以及所述待编码数值进行布斯编码处理,得到目标编码,包括:
根据所述待编码数值与所述待处理数据,得到待编码高位子数据和待编码低位子数据;
分别对所述待编码高位子数据和所述待编码低位子数据进行布斯编码处理,得到所述目标编码,所述目标编码包括第一目标编码和第二目标编码。
在其中一个实施例中,所述根据所述功能模式选择信号、所述目标编码以及所述待处理数据,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积,包括:
根据所述功能模式选择信号,确定数据处理器当前所处理的数据运算模式;
根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/或第二目标编码,与所述待处理数据,得到所述第一符号位扩展后的部分积以及所述第二符号位扩展后的部分积。
在其中一个实施例中,所述第一符号位扩展后的部分积包括第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积;所述方法包括:
根据所述第一目标编码和/或所述第二目标编码,与所述待处理数据,得到符号位扩展后的第一部分积;
根据所述功能模式选择信号,得到所述第一符号位扩展后的低位部分积中的第一数值;
对所述功能模式选择信号和所述符号位扩展后的第一部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值;
将所述符号位扩展后的第一部分积中的数值、所述第一数值以及所述第二数值进行结合,得到所述第一符号位扩展后的低位部分积;
根据所述第一目标编码和/或所述第二目标编码,与所述待处理数据,得到符号位扩展后的第二部分积;
根据所述功能模式选择信号,得到所述第一符号位扩展后的高位部分积中的第三数值;
对所述功能模式选择信号和所述符号位扩展后的第二部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值;
将所述符号位扩展后的第二部分积中的数值、所述第三数值以及所述第四数值进行结合,得到所述第一符号位扩展后的高位部分积。
在其中一个实施例中,所述第二符号位扩展后的部分积包括第二符号位扩展后的低位部分积和第二符号位扩展后的高位部分积;所述方法还包括:
根据所述第一目标编码和/或所述第二目标编码,与所述待处理数据,得到符号位扩展后的第三部分积;
根据所述功能模式选择信号,得到所述第二符号位扩展后的低位部分积中的第五数值;
对所述功能模式选择信号和所述符号位扩展后的第三部分积中的符号位数值进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值;
将所述符号位扩展后的第三部分积中的数值、所述第五数值以及所述第六数值进行结合,得到所述第二符号位扩展后的低位部分积;
根据所述第一目标编码和/或所述第二目标编码,与所述待处理数据,得到符号位扩展后的第四部分积;
根据所述功能模式选择信号,得到所述第二符号位扩展后的高位部分积中的第七数值;
对所述功能模式选择信号和所述符号位扩展后的第二部分积中的符号位数值进行与逻辑运算,得到所述第二符号位扩展后的高位部分积中的第八数值;
将所述符号位扩展后的第四部分积中的数值、所述第七数值以及所述第八数值进行结合,得到所述第二符号位扩展后的高位部分积。
在其中一个实施例中,所述对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果,包括:
通过第一低位华莱士树子单元对所有第一符号位扩展后的部分积中的列数值进行累加处理,得到第一进位输出信号;
通过第一与逻辑子单元对所述第一进位输出信号和所述功能模式选择信号进行与逻辑运算,得到第一进位输入信号;
通过第一高位华莱士树子单元对所述第一进位输入信号以及所有第一符号位扩展后的部分积中的列数值进行累加处理,得到所述第一累加运算结果;
通过第一累加单元对第一累加运算结果进行加法运算,得到所述第一目标运算结果。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能模式选择信号确定当前可处理对应的数据运算模式,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个上述所述的数据处理器;该机器学习运算装置用于从所述机器学习运算装置中除所述数据处理器以外的其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给所述机器学习运算装置中除所述数据处理器以外的其它处理装置;
当所述机器学习运算装置包含多个所述数据处理器时,多个所述数据处理器间通过预设结构进行连接并传输数据;
其中,多个所述数据处理器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理器共享同一控制系统或拥有各自的控制系统;多个所述数据处理器共享内存或者拥有各自的内存;多个所述数据处理器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括上述所述的机器学习处理装置、通用互联接口,和所述组合处理装置中除所述机器学习运算装置以外的其它处理装置。该机器学习运算装置与所述组合处理装置中除所述机器学习运算装置以外的其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置连接,用于保存所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的数据处理器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的数据处理器。
本申请实施例提供的一种电子设备,包括如上述所述的芯片。
附图说明
图1为一实施例提供的一种数据处理器的电路结构示意图;
图2为另一实施例提供的数据处理器中的修正布斯编码电路的具体结构示意图;
图3为另一实施例提供的数据处理器中的第一部分积获取电路的具体结构示意图;
图4为另一实施例提供的数据处理器中的第二部分积获取电路的具体电路结构示意图;
图5为另一实施例提供的数据处理器中的第一压缩电路的具体电路结构示意图;
图6为另一实施例提供的数据处理器中的第二压缩电路的具体电路结构示意图;
图7为另一实施例提供的8位数据乘法运算得到的符号位扩展后的部分积的分布规律示意图;
图8为另一实施例提供的16位*16位数据乘法运算得到的符号位扩展后的部分积的分布规律示意图;
图9为另一实施例提供的8位数据运算时第一压缩电路的具体电路结构图;
图10为一实施例提供的一种数据处理方法流程示意图;
图11为另一实施例提供的得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积的具体流程示意图;
图12为另一实施例提供的得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积的具体流程示意图;
图13为一实施例提供的一种组合处理装置的结构图;
图14为一实施例提供的另一种组合处理装置的结构图;
图15为一实施例提供的一种板卡的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据处理器可应用于AI芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array,FPGA)芯片、或者是其它的硬件电路设备中进行乘法运算处理或乘累加运算处理,该数据处理器的结构示意图如图1所示。
如图1所示,图1为另一实施例提供的一种数据处理器的结构示意图,该数据处理器包括修正布斯编码电路01、第一部分积获取电路02、第二部分积获取电路03、第一压缩电路04以及第二压缩电路05;所述第一压缩电路04和所述第二压缩电路05均包括4-2压缩器,所述4-2压缩器包括选择电路以及全加器,所述修正布斯编码电路01的输出端与所述第一部分积获取电路02的第一输入端连接,所述第一部分积获取电路02的输出端与所述第一压缩电路04的第一输入端连接,所述修正布斯编码电路01的输出端还与所述第二部分积获取电路03的第一输入端连接,所述第二部分积获取电路03的输出端与所述第二压缩电路05的第一输入端连接。
其中,所述修正布斯编码电路01、所述第一部分积获取电路02、所述第二部分积获取电路03、所述第一压缩电路04以及所述第二压缩电路05均包括逻辑门单元,所述逻辑门单元的输入端用于接收功能模式选择信号(mode信号),所述功能模式选择信号用于确定所述数据处理器当前可处理的对应数据运算模式。所述修正布斯编码电路01用于接收第一数据、第二数据和功能模式选择信号,对所述第一数据进行布斯编码处理得到目标编码,并根据所述功能模式选择信号,确定是否将所述目标编码输入至所述第一部分积获取电路02和/或第二部分积获取电路03,所述第一部分积获取电路02用于对接收到的所述第二数据和所述目标编码得到第一符号位扩展后的部分积,所述第二部分积获取电路03用于对接收到的所述第二数据和所述目标编码得到第二符号位扩展后的部分积,所述第一压缩电路04用于对所述第一符号位扩展后的部分积进行累加处理得到第一目标运算结果,所述第二压缩电路05用于对所述第二符号位扩展后的部分积进行累加处理得到第二目标运算结果。
具体的,上述第一数据和第二数据均可以包括两个子数据,第一数据包括的两个子数据均可以作为数据处理器进行乘法运算或乘累加运算中的乘数,第二数据包括的两个子数据均可以作为数据处理器进行乘法运算或乘累加运算中的被乘数;但是,乘数和被乘数的位宽均可以为2N,此时,第一数据中包含的两个子数据可以拼接后作为一个整体,输入至修正布斯编码电路01,还可以分开同步输入至修正布斯编码电路01,第二数据中包含的两个子数据可以拼接后作为一个整体,输入至第一部分积获取电路02和第二部分积获取电路03,还可以分开同步输入至第一部分积获取电路02以及第二部分积获取电路03。另外,数据处理器中的修正布斯编码电路01可以接收第一数据,第一部分积获取电路02和第二部分积获取电路03可以直接接收第二数据。其中,修正布斯编码电路01可以包括多个数据处理运算单元,这些数据处理单元可以为具有二进制编码处理功能的单元,还可以为具有不同处理功能的运算单元;上述第一部分积获取电路02以及第二部分积获取电路03均可以包括不同处理功能的运算单元;上述第一压缩电路04和第二压缩电路05均可以包括多个累加处理单元。可选的,第一部分积获取电路02和第二部分积获取电路03,均可以接收修正布斯编码电路01输入的目标编码,并根据接收到的第二数据,分别得到对应的符号位扩展后的部分积。可选的,修正布斯编码电路01可以不对接收到的第二数据进行数据处理,直接将接收到的第二数据输出,输入至第一部分积获取电路02以及第二部分积获取电路03。
其中,在布斯编码处理前,修正布斯编码电路01可以自动对接收到的第一数据中的两个子数据分别进行补位处理,该补位处理可以为对两个子数据的最低位数值的低一位处补一位数值0。例如,若一个子数据(即乘数)为y7y6y5y4y3y2y1y0,则在布斯编码前,修正布斯编码电路01可以自动将该子数据进行补位处理,将该子数据转换为y7y6y5y4y3y2y1y00。可选的,上述目标编码的数量可以等于数据处理器当前处理的子数据(即乘数)位宽的1/2。
需要说明的是,第一数据以及第二数据均包括两个子数据,若数据处理器当前可处理的数据位宽等于子数据的位宽,则完成布斯编码处理后,修正布斯编码电路01可以得到两个子数据对应的两组目标编码。可选的,第一数据可以包括第一低位数据和第一高位数据,第一低位数据和第一高位数据的位宽可以相等。可选的,目标编码可以包括第一低位数据得到的第一目标编码,以及第一高位数据得到的第二目标编码。可选的,上述修正布斯编码电路01可以将两组目标编码或其中一组目标编码输入至第一部分积获取电路02,同时可以将两组目标编码或另一组目标编码输入至第二部分积获取电路03。可选的,若数据处理器当前可处理乘法运算,此时,修正布斯编码电路01可以根据实际运算需求,将其中一组目标编码输入至第一部分积获取电路02或第二部分积获取电路03,以便通过第一压缩电路04或第二压缩电路05实现累加运算,得到乘法运算结果;该情况下,相当于根据其中一组目标编码与第二数据中的对应子数据(被乘数)得到一组符号位扩展后的部分积,并对一组符号位扩展后的部分积进行累加运算,得到乘法运算结果。可选的,若数据处理器当前可处理乘累加运算,此时,修正布斯编码电路01可以根据实际运算需求,将两组目标编码均输入至第一部分积获取电路02或第二部分积获取电路03,以便通过第一压缩电路04或第二压缩电路05实现累加运算,得到乘累加运算结果;该情况下,相当于根据两组目标编码分别与第二数据中的对应子数据(被乘数)得到两组符号位扩展后的部分积,并对两组符号位扩展后的部分积进行累加运算,得到乘累加运算结果。其中,第一部分积获取电路02可以得到第一符号位扩展后的部分积,第二部分积获取电路03可以得到第二符号位扩展后的部分积。另外,若数据处理器实现乘累加运算时,修正布斯编码电路01可以得到第一数据对应的两组目标编码,并将两组目标编码发送至第一部分积获取电路02和/或第二部分积获取电路03中,第一部分积获取电路02和/或第二部分积获取电路03可以依据实际运算需求,根据两组目标编码和接收到的第二数据得到两组符号位扩展后的部分积,然后第一压缩电路04和/或对这两组符号位扩展后的部分积进行累加处理,从而实现乘累加运算得到目标运算结果。可选的,目标运算结果可以包括第一压缩电路04得到的第一目标运算结果,以及第二压缩电路05得到的第二目标运算结果。在本实施例中,数据处理器接收到的第一数据以及第二数据中,包含的子数据的位宽均为2N。
可选的,所述修正布斯编码电路01中包括第一输入端,用于接收功能模式选择信号;所述第一部分积获取电路02和所述第二部分积获取电路03中均包括第二输入端,用于接收所述功能模式选择信号;所述第一压缩电路04和所述第二压缩电路05中均包括第二输入端,用于接收所述功能模式选择信号。
可以理解的是,上述功能模式选择信号(mode信号)可以有四种,这四种功能模式选择信号(mode信号)对应于所述数据处理器可以处理四种不同的数据运算模式。可选的,同一次数据运算处理时,修正布斯编码电路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可以根据接收到的功能模式选择信号,确定是否接收修正布斯编码电路01得到的所有目标编码进行数据运算。可选的,所有目标编码可以包括修正布斯编码电路01得到的两组目标编码。
本实施例提供的数据处理器,数据处理器通过修正布斯编码电路对接收到的第一数据进行编码处理得到目标编码,通过第一部分积获取电路根据接收到的第二数据以及目标编码,得到对应的第一符号位扩展后的部分积,第二部分积获取电路根据接收到的第二数据以及目标编码,得到对应的第二符号位扩展后的部分积,并通过第一压缩电路对第一符号位扩展后的部分积进行累加处理,通过第二压缩电路对第二符号位扩展后的部分积进行累加处理;该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
图2为另一实施例提供的一种修正布斯编码电路的具体结构示意图,所述修正布斯编码电路01包括低位布斯编码单元11、与逻辑单元12以及高位布斯编码单元13,所述低位布斯编码单元11的输出端与所述与逻辑单元12的输入端连接,所述与逻辑单元12的输出端与所述高位布斯编码单元13的输入端连接;所述低位布斯编码单元11用于对接收到的所述第一数据中的第一低位数据进行布斯编码处理得到第一目标编码,所述与逻辑单元12用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一数据中的第一高位数据进行布斯编码处理时的补位数值,所述高位布斯编码单元13用于对接收到的所述第一数据中的第一高位数据和所述补位数值进行布斯编码处理得到第二目标编码。
具体的,上述修正布斯编码电路01可以接收第一数据,并对该第一数据中包含的两个子数据进行布斯编码处理,得到低位目标编码和高位目标编码;第一数据可以为乘法运算中的乘数,低位目标编码和高位目标编码可以统称为目标编码。可选的,若数据处理器当前可处理N位数据运算,且接收到的第一数据中包含的两个子数据均为N比特,则数据处理器中的修正布斯编码电路01可以对两个子数据分别进行布斯编码处理,得到两组目标编码,即一组第一目标编码和第二目标编码。可选的,第一目标编码可以包括第一低位目标编码和第一高位目标编码,第二目标编码可以包括第二低位目标编码和第二高位目标编码。其中,将第一低位目标编码和第二低位目标编码才可以统称为低位目标编码,将第一高位目标编码和第二高位目标编码才可以统称为高位目标编码。可选的,数据处理器可以根据与逻辑单元12接收到的功能模式选择信号,确定修正布斯编码电路01当前需要处理的数据位宽是N还是2N;若数据处理器当前可处理的数据位宽为N比特,且数据处理器接收到的第一数据位宽为2N,此时,数据处理器中的修正布斯编码电路01可以自动将接收到2N位第一数据拆分成高N位数据(即第一高位数据)以及低N位数据(即第一低位数据),并同步对第一高位数据和第一低位数据进行布斯编码处理;例如,若第一数据为“y7y6y5y4y3y2y1y0”,则第一高位数据可以为“y7y6y5y4”,第一低位数据可以为“y3y2y1y0”。需要说明的是,无论数据处理器当前可处理的数据位宽和数据处理器接收到的数据位宽是否相同,实现布斯编码处理时,数据处理器仅需要通过低位布斯编码单元11对第一低位数据进行补位处理,不需要通过高位布斯编码单元13对第一高位数据进行补位处理。可选的,上述第一高位数据得到的一组目标编码的数量可以等于N/2,还可以等于这组目标编码得到的符号位扩展后的部分积的数量,该符号位扩展后的部分积的位宽可以等于2N;第一低位数据得到的另一组目标编码的数量也可以等于N/2,还可以等于这组目标编码得到的符号位扩展后的部分积的数量,这些符号位扩展后的部分积的位宽可以等于2N。若数据处理器当前可处理的数据位宽为2N,数据处理器接收到的第一数据位宽为2N,则数据处理器中的修正布斯编码电路01可以对接收到2N位第一数据进行自动补位处理,然后对补位后的第一数据进行布斯编码处理,得到N个目标编码。
需要说明的是,若数据处理器当前可处理的数据位宽为N比特,且接收到的第一数据(即乘法运算或乘累加运算中的乘数)的位宽均为2N,此时,数据处理器中的修正布斯编码电路01可以将2N位第一数据拆分为第一低位数据和第一高位数据分别进行同步布斯编码处理,修正布斯编码电路01中的低位布斯编码单元11可以对第一低位数据进行补位数据,并对补位处理后的第一低位数据进行布斯编码处理,可以得到第一目标编码;同时,在该数据运算模式下,mode信号可以等于数值0,与逻辑单元12可以选通过第一低位数据中的最高位数值,并对该mode信号以及第一低位数据中的最高位数值进行与逻辑运算,将与逻辑运算结果输入至高位布斯编码单元13;高位布斯编码单元13将该与逻辑运算结果作为第一高位数据进行布斯编码处理时的补位数值,将该补位数值和第一高数据结合得到(N+1)位数据,高位布斯编码单元13对这(N+1)位数据进行布斯编码处理,得到第二目标编码。可选的,布斯编码处理过程中,修正布斯编码电路01得到的第一目标编码的数量可以等于得到的第二目标编码的数量。
另外,若数据处理器当前可处理的数据位宽为2N比特,此时,与逻辑单元12可以不进行与逻辑运算,直接将接收到的第一低位数据中的最高位数值输出输入至高位布斯编码单元13;高位布斯编码单元13将第一低位数据中的最高位数值作为第一高位数据进行布斯编码处理时的补位数值,将该补位数值和第一高位数据结合得到(N+1)位数据,高位布斯编码单元13对这(N+1)位数据进行布斯编码处理得到第二目标编码。实际上,高位布斯编码单元13对第一高位数据不需要做补位处理,直接可以将接收到的第一低位数据中的最高位数值与mode信号进行与逻辑运算,将与逻辑运算结果作为第一高位数据进行布斯编码处理时的补位数值。
例如,若数据处理器当前可处理2N位数据运算,且接收到的数据位宽也为2N,此时,数据处理器中的修正布斯编码电路01可以对接收到的完整第一数据A进行布斯编码处理;其中,第一数据A中的第一高位数据表示为A1,第一低位数据表示为A2,则低位布斯编码单元11可以对A2进行布斯编码处理,并且自动对A2进行补位处理,此时的补位数值为数值0,在布斯编码处理过程中,与逻辑单元12可以选通第一低位数据A2中的最高位数值,并将该最高位数值作为高位布斯编码单元13对第一高位数据A1,进行布斯编码处理时的补位数值;若数据处理器当前可处理N位数据运算,此时,数据处理器中的修正布斯编码电路01可以对第一数据A中的第一高位数据A1,以及第一低位数据A2分别进行布斯编码处理,此时,与逻辑单元12可以选通0,作为高位布斯编码单元13对第一高位数据A1进行布斯编码处理时的补位数值。
需要说明的是,第一数据可以包括两个2N位子数据,若数据处理器当前可以对2N位数据进行布斯编码处理,则第一数据中的第一低位数据可以包括两个2N位子数据中对应的两个第一低位子数据,第一数据中的第一高位数据可以包括两个2N位子数据中对应的两个第一高位子数据。若数据处理器当前可处理N位数据运算,此时,数据处理器中的修正布斯编码电路01可以将两个2N位子数据分别划分成两个N位子数据,即四个N位子数据,其中,第一数据中的第一低位子数据可以包括两个2N位子数据对应的四个第一低位子数据。另外,布斯编码过程中,修正布斯编码电路01得到的第一目标编码的数量可以等于得到的第二目标编码的数量,还可以等于第一低位子数据得到的对应第一符号位扩展后的低位部分积的数量,或第一高位子数据得到的对应第一符号位扩展后的高位部分积的数量。另外,若数据处理器当前可处理一个N位*N位数据的乘法运算,此时,第一数据和第二数据中均有一个子数据为数值0,另一个子数据中的高N位数据或低N位数据可以为全0数据;若数据处理器当前可处理一个2N位*2N位数据的乘法运算,此时,第一数据和第二数据中均有一个子数据可以为全0数据,另一个子数据均为2N位非0数据。
本实施例提供的一种数据处理器,数据处理器通过修正布斯编码电路中的低位布斯编码单元,与逻辑单元以及高位布斯编码单元,对接收到的第一数据进行布斯编码处理,得到低位目标编码及高位目标编码,进而根据低位目标编码以及高位目标编码,实现多种不同数据运算模式;该数据处理器可以实现多种不同数据运算模式,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
图2为乘法器中修正布斯编码电路01的具体电路结构示意图,所述修正布斯编码电路01中的低位布斯编码单元11包括:低位数据输入端口111、第一目标编码输出端口112、高位数值输出端口113。所述低位数据输入端口111用于接收进行布斯编码处理的所述第一数据中的第一低位数据,所述第一目标编码输出端口112用于输出对所述第一低位数据进行布斯编码处理后,得到的第一目标编码,所述高位数值输出端口113用于输出所述第一低位数据中的最高位数值。
具体的,运算处理过程中,修正布斯编码电路01可以对乘法运算或乘累加运算时的乘数(即第一数据中的两个子数据)进行布斯编码处理,修正布斯编码电路01中的低位布斯编码单元11可以通过低位数据输入端口111,接收两个子数据对应的第一低位数据,然后对第一低位数据进行补位处理,得到多个待编码低位数据;上述待编码低位数据的数量可以等于数据处理器当前可处理数据位宽的1/4。其中,低位布斯编码单元11可以根据得到的多个待编码低位数据得到多个第一目标编码,将低位目标编码通过第一目标编码输出端口112输出,并输入至第一部分积获取电路02。可选的,第一目标编码的数量可以等于待编码低位数据的数量。
需要说明的是,每次布斯编码处理时,可以将第一低位数据进行补位处理后的数据划分成多个待编码低位数据,低位布斯编码单元11可以同步对划分后的多组待编码低位数据进行布斯编码处理。可选的,划分多个待编码低位数据的方式可以表征为将补位处理后的第一低位数据中相邻的每3位数值作为一个待编码低位数据,每个待编码低位数据中的最高位数值,可以作为相邻下一个待编码低位数据中的最低位数值。例如,若数据处理器接收的第一数据中包含的一个子数据(即乘数)为16比特,该子数据表示为“y15y14y13y12y1 1y10y9y8y7y6y5y4y3y2y1y0”,从最低位数值至最高位数值对应的编号为数值0,…,15,数据处理器中的低位布斯编码单元11可以对第一低位数据y7y6y5y4y3y2y1y0进行布斯编码处理,布斯编码处理前对8位第一低位数据进行补位处理后,得到9位数据“y7y6y5y4y3y2y1y00”,将补位处理后的9位数据划分成四个待编码低位数据,每个待编码低位数据可以为补位处理后的9位数据中相邻的三位数值,每个待编码低位数据中的最高位数值可以作为下一个待编码低位数据中的最低位数值;低位布斯编码单元11可以分别对“y7y6y5y4y3y2y1y00”中y7y6y5,y5y4y3,y3y2y1,y1y00这个待编码低位数据,进行同步布斯编码处理。
在本实施例中,布斯编码处理得到第一目标编码的方式可以参见表1,其中,表1中的y2i+1,y2i和y2i-1可以表示每个待编码低位数据(即乘数)中对应相邻的三位数值,X可以表示数据处理器接收到的第二数据中的子数据(即被乘数),修正布斯编码电路01对每个待编码低位数据进行布斯编码处理后,得到对应的第一目标编码可以表示为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个第一目标编码。其中,最后一个待编码低位数据中的最高位数值可以通过高位数值输出端口113输入至与逻辑单元12。
可选的,继续参见图2,其中,所述修正布斯编码电路01包括高位布斯编码单元13,所述高位布斯编码单元13包括:高位数据输入端口131、低位数值输入端口132以及第二目标编码输出端口133;所述高位数据输入端口131用于接收所述第一数据中的第一高位数据,所述低位数值输入端口132用于接收所述第一数据中的第一低位数据包含的最高位数值与所述功能模式选择信号进行与逻辑运算,得到的第一逻辑运算结果,所述第二目标编码输出端口133用于输出所述第二目标编码。
可以理解的是,每次布斯编码处理时,修正布斯编码电路01中的高位布斯编码单元13对第一数据中的第一高位数据进行布斯编码处理的方法,与修正布斯编码电路01中的低位布斯编码单元11对第一数据中的第一低位数据进行布斯编码处理的方法可以相同,因此,本实施例对高位布斯编码单元13进行布斯编码处理的方法不再赘述。另外,高位布斯编码单元13与低位布斯编码单元11的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述高位布斯编码单元13的具体电路结构。
本实施例提供的一种数据处理器,数据处理器通过修正布斯编码电路中的低位布斯编码单元,对第一数据中的第一低位数据进行布斯编码处理,得到第一低位数据对应的第一目标编码,进而数据处理器中的第一部分积获取电路和/或第二部分积获取电路根据第一目标编码得到符号位扩展后的部分积,并通过压缩电路对符号位扩展后的部分积进行压缩处理,以实现不同的数据运算模式;该数据处理器能够实现多种不同数据运算模式处理,从而提高数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,继续参见图2,其中,所述修正布斯编码电路01包括与逻辑单元12,所述与逻辑单元12包括:高位数值输入端口121、模式选择信号输入端口122以及逻辑运算结果输出端口123;所述高位数值输入端口123用于接收所述第一数据中第一低位数据对应的最高位数值,所述模式选择信号输入端口122用于接收所述功能模式选择信号,所述逻辑运算结果输出端口123用于输出对所述第一低位数据中的最高位数值,与所述功能模式选择信号进行与逻辑运算得到的所述第一逻辑运算结果。
具体的,数据处理器中的与逻辑单元12可以对模式选择信号输入端口122接收到的功能模式选择信号,与高位数值输入端口121接收到的低位布斯编码单元11输出的第一数据中的第一低位数据对应的最高位数值,进行与逻辑运算得到第一逻辑运算结果,并将该第一逻辑运算结果通过逻辑运算结果输出端口123输出,作为第一数据中第一高位数据进行布斯编码处理时的补位数值。实际上,与逻辑单元12可以对第一低位数据中的最高位数值和表示功能模式选择信号的数值进行与逻辑运算,得到第一数据中第一高位数据进行布斯编码处理时的补位数值。
本实施例提供的一种数据处理器,该数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性。
作为其中一个实施例,如图3所示为数据处理器中的第一部分积获取电路的具体结构示意图,所述第一部分积获取电路02包括:第一低位部分积获取单元21、第一低位选择器组单元22、第一低位与逻辑单元23、第一高位部分积获取单元24、第一高位选择器组单元25以及第一高位与逻辑单元26;所述修正布斯编码电路01的第一输出端与所述第一低位部分积获取单元21的第一输入端连接,所述第一低位选择器组单元22的输出端与所述第一低位部分积获取单元21的第二输入端连接,所述第一低位与逻辑单元23的输出端与所述第一低位部分积获取单元21的第三输入端连接,所述修正布斯编码电路01的第二输出端与所述第一高位部分积获取单元24的第一输入端连接,所述第一高位选择器组单元25的输出端与所述第一高位部分积获取单元24的第二输入端连接,所述第一高位与逻辑单元26的输出端与所述第一高位部分积获取单元24的第三输入端连接。
其中,所述第一低位部分积获取单元21用于根据接收到的所述目标编码以及所述第二数据,得到第一符号位扩展后的低位部分积,所述第一低位选择器组单元22用于选通所述第一符号位扩展后的低位部分积中的第一数值,所述第一低位与逻辑单元23用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值,所述第一高位部分积获取单元24用于根据接收到的所述目标编码以及所述第二数据,得到第一符号位扩展后的高位部分积,所述第一高位选择器组单元25用于选通所述第一符号位扩展后的高位部分积中的第三数值,所述第一高位与逻辑单元26用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值。
具体的,上述第一低位部分积获取单元21可以根据接收到的第二数据,以及修正布斯编码电路01得到的第一目标编码和/或第二目标编码,得到第一符号位扩展后的低位部分积;第一高位部分积获取单元24可以根据接收到的第二数据,以及修正布斯编码电路01得到的第一目标编码和/或第二目标编码,得到第一符号位扩展后的高位部分积;上述第二数据可以为乘法运算或乘累加运算中的被乘数。可选的,上述第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积,可以统称为第一符号位扩展后的部分积。可选的,若数据处理器当前可处理的数据位宽为N,数据处理器中的修正布斯编码电路01接收到的第一数据位宽为2N,则数据处理器中的修正布斯编码电路01可以自动将接收到2N位第一数据拆分成第一高位数据以及第一低位数据,并对第一高位数据和第一低位数据进行同步布斯编码处理;第一符号位扩展后的高位部分积的位宽和第一符号位扩展后的低位部分积的位宽均可以等于2N。若数据处理器当前可处理的数据位宽为2N,数据处理器中的修正布斯编码电路01接收到的第一数据位宽为2N,则数据处理器中的修正布斯编码电路01可以对接收到2N位第一数据进行自动补位数据,然后对补位后的第一数据进行布斯编码处理,得到N个目标编码。
需要说明的是,上述第一低位选择器组单元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/4(图4仅示出了第一部分积获取电路02中的一个第一低位部分积获取单元21的电路结构示意图)。
还可以理解的是,数据处理器中的第一高位部分积获取单元24可以根据每个第一目标编码或每个第二目标编码,得到第一高位数据对应的符号位扩展后的高位部分积;上述第一高位选择器组单元25可以选通第一符号位扩展后的高位部分积中的第三数值;所述第一高位与逻辑单元26可以将输出的第三逻辑运算结果作为第一符号位扩展后的高位部分积中的第四数值;然后第一高位部分积获取单元24将符号位扩展后的部分积、选通后获取的第一符号位扩展后的高位部分积中的第三数值,以及与逻辑运算得到的第一符号位扩展后的高位部分积中的第四数值进行结合,得到第一符号位扩展后的高位部分积。可选的,第一部分积获取电路02包含的第一高位部分积获取单元24的数量,可以等于数据处理器当前可处理的数据位宽的1/4(图4仅示出了第一部分积获取电路02中的一个第一高位部分积获取单元24的电路结构示意图)。
在本实施例中,上述每个第一低位部分积获取单元21可以包含2N个数值生成子单元,每个第一高位部分积获取单元24也可以包含2N个数值生成子单元,每个数值生成子单元可以获取符号位扩展后的低位部分积中的一位数值,N表示数据处理器当前可处理的数据位宽。在本实施例中,修正布斯编码电路01可以包含1个低位布斯编码单元11以及1个高位布斯编码单元13;其中,低位布斯编码单元11得到的每个第一目标编码和/或每个第二目标编码可以按照位置分布顺序,分别输入至对应的一个第一低位部分积获取单元21中;第一高位部分积获取单元24得到的每个第一目标编码和/或每个第二目标编码可以按照位置分布顺序,分别输入至对应的一个第一高位部分积获取单元24中。
需要说明的是,若数据处理器当前可处理2N位*2N位数据的乘法运算,则第一部分积获取电路02可以包含N/2个第一低位部分积获取单元21以及N/2个第一高位部分积获取单元24,此时,每个第一低位部分积获取单元21和每个第一高位部分积获取单元24中,均可以包含4N个数值生成子单元;若数据处理器当前需要对N位数据进行处理,则第一部分积获取电路02可以包含N/4个第一低位部分积获取单元21以及N/4个第一高位部分积获取单元24,此时,每个第一低位部分积获取单元21和每个第一高位部分积获取单元24中,均可以包含2N个数值生成子单元。可选的,每个数值生成子单元可以获取符号位扩展后的部分积中的一个数值。
在本实施例中,所有第一符号位扩展后的低位部分积的分布形式可以表征为,每个第一符号位扩展后的低位部分积中的最低位数值均位于同一列,每个第一符号位扩展后的低位部分积中的其它位数值也均位于不同的对应列。可选的,所有第一符号位扩展后的高位部分积的分布方式可以表征为,每个第一符号位扩展后的高位部分积中的最低位数值均位于同一列,每个第一符号位扩展后的高位部分积中的其它位数值也均位于不同的对应列。另外,第一符号位扩展后的高位部分积中的最低位数值,与第一符号位扩展后的低位部分积中的最低位数值位于同一列,其它位数值也均位于不同的列。
可选的,如图4所示为数据处理器中的第二部分积获取电路03的具体电路结构示意图,所述第二部分积获取电路03包括:第二低位部分积获取单元31、第二低位选择器组单元32、第二低位与逻辑单元33、第二高位部分积获取单元34、第二高位选择器组单元35以及第二高位与逻辑单元36;所述修正布斯编码电路01的第一输出端与所述第二低位部分积获取单元31的第一输入端连接,所述第二低位选择器组单元32的输出端与所述第二低位部分积获取单元31的第二输入端连接,所述第二低位与逻辑单元33的输出端与所述第二低位部分积获取单元31的第三输入端连接,所述修正布斯编码电路01的第二输出端与所述第二高位部分积获取单元34的第一输入端连接,所述第二高位选择器组单元35的输出端与所述第二高位部分积获取单元34的第二输入端连接,所述第二高位与逻辑单元36的输出端与所述第二高位部分积获取单元34的第三输入端连接。
其中,所述第二低位部分积获取单元31用于根据接收到的所述目标编码以及所述第二数据,得到第二符号位扩展后的低位部分积,所述第二低位选择器组单元32用于选通所述第二符号位扩展后的低位部分积中的第五数值,所述第二低位与逻辑单元33用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值,所述第二高位部分积获取单元34用于根据接收到的所述目标编码以及所述第二数据,得到第二符号位扩展后的高位部分积,所述第二高位选择器组单元35用于选通所述第二符号位扩展后的高位部分积中的第七数值,所述第二高位与逻辑单元36用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的高位部分积中的第八数值。
可以理解的是,第二符号位扩展后的低位部分积和第二符号位扩展后的高位部分积,可以统称为第二符号位扩展后的部分积。例如,若数据处理器接收到的第一数据中包含的子数据分别为A和B,接收到的第二数据中包含的子数据分别为C和D,且当前需要对A*C、B*D进行乘法运算,则数据处理器中的修正布斯编码电路01可以对数据A进行布斯编码处理得到第一目标编码(包括第一低位目标编码和第一高位目标编码),对数据B进行布斯编码处理得到第二目标编码(包括第二低位目标编码和第二高位目标编码);数据处理器中的第一低位部分积获取单元21可以接收到第一目标编码、第二目标编码和第二数据中的数据C和数据D,并根据其中的第一低位目标编码和数据C,得到第一符号位扩展后的低位部分积,或者根据其中的第二低位目标编码和数据D,得到第一符号位扩展后的低位部分积;同时,数据处理器中的第二低位部分积获取单元31可以接收到第一目标编码、第二目标编码和第二数据中的数据C和数据D,并根据其中的第二低位目标编码和数据D,得到第二符号位扩展后的低位部分积,或者根据其中的第一低位目标编码和数据C,得到第二符号位扩展后的低位部分积。可选的,数据处理器可以根据实际运算需求,通过修正布斯编码电路01直接将第一目标编码和第二目标编码,分别发送至第一部分积获取电路02和第二部分积获取电路03,并将第二数据中的两个子数据,分别发送至第一部分积获取电路02和第二部分积获取电路03。其中,发送至第一部分积获取电路02的数据可以为第一目标编码和数据C,此时,发送至第二部分积获取电路03的数据可以为第二目标编码和数据D;或者发送至第二部分积获取电路03的数据可以为第一目标编码和数据C,此时,发送至第一部分积获取电路02的数据可以为第二目标编码和数据D。
另外,若数据处理器当前需要处理A*C+B*D的乘累加运算时,则数据处理器中的修正布斯编码电路01可以将第一目标编码、第二目标编码、数据C和数据D,同时发送至第一部分积获取电路02或者第二部分积获取电路03,以实现成乘累加运算。
在本实施例中,第二部分积获取电路03对数据处理后得到第二符号位扩展后的部分积的方式,与第一部分积获取电路02对数据处理后得到第一符号位扩展后的部分积的方式可以相同,对此本实施例不做赘述第二部分积获取电路03对数据处理的过程。另外,第一部分积获取电路02与第二部分积获取电路03的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述第二部分积获取电路03的具体结构。
本实施例提供的一种数据处理器,数据处理器中的第一低位部分积获取单元可以根据目标编码得到第一符号位扩展后的低位部分积,第一高位部分积获取单元可以根据目标编码得到第一符号位扩展后的高位部分积,进而通过第一压缩电路对第一符号位扩展后的低位部分积以及第一符号位扩展后的高位部分积进行累加处理,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,继续参见图3所示,所述第一部分积获取电路02包括第一低位部分积获取单元21,所述第一低位部分积获取单元21包括:目标编码输入端口211、第一选通数值输入端口212、第二选通数值输入端口213、第二数据输入端口214以及低位部分积输出端口215;所述目标编码输入端口211用于接收所述目标编码,所述第一选通数值输入端口212用于接收所述第一低位选择器组单元22选通后,输出的所述第一符号位扩展后的低位部分积中的第一数值,所述第二选通数值输入端口213用于接收所述第一低位与逻辑单元23输出的所述第一符号位扩展后的低位部分积中的第二数值,所述第二数据输入端口214用于接收所述第二数据,所述低位部分积输出端口215用于输出所有第一符号位扩展后的低位部分积。
具体的,数据处理器中的第一低位部分积获取单元21通过目标编码输入端口211,可以接收低位布斯编码单元11输出的第一目标编码和/或第二目标编码,通过第一数据输入端口214接收第一数据(即乘法运算中的被乘数),根据第一目标编码和/或第二目标编码以及第二数据得到所述第一目标编码和/或第二目标编码对应的符号位扩展后的部分积;然后将第一选通数值输入端口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与第一目标编码和/或第二目标编码,得到对应的4N位第一符号位扩展后的低位部分积;该第一符号位扩展后的低位部分积中的低(2N+1)位数值可以等于第一目标编码和/或第二目标编码,直接得到的原始低位部分积中的所有数值,第一符号位扩展后的低位部分积中的高(2N-1)位数值可以等于该原始低位部分积中的符号位数值,该符号位数值也就是原始低位部分积的最高位数值。当目标编码为-2X时,则原始低位部分积可以为对X进行左右一位后取反再加1;当目标编码为2X时,则原始低位部分积可以为对X进行左移一位;当目标编码为-X时,则原始低位部分积可以为对X按位取反再加1;当目标编码为X时,则原始低位部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据;当目标编码为±0时,则原始低位部分积可以为0,也就是原始低位部分积中的每一位数值均等于0。
进一步地,所有第一低位部分积获取单元21得到的所有第一符号位扩展后的低位部分积的分布形式可以表征为,第一个第一符号位扩展后的低位部分积中的最低位数值,与其它第一符号位扩展后的低位部分积中的最低位数值均位于同一列;第一个第一符号位扩展后的低位部分积中的其它位数值与其它第一符号位扩展后的低位部分积中的对应位数值分别位于对应列。
可选的,继续参见图4所示,所述第二部分积获取电路03包括第二低位部分积获取单元31,所述第一低位部分积获取单元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的数量,可以等于N2/2,2N可以表示数据处理器当前可处理的数据位宽,该第一低位选择器组单元22中每个第一低位选择器221的内部电路结构可以相同。可选的,乘法运算时,修正布斯编码电路01连接的对应N/2个第一低位部分积获取单元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的数量,可以等于N2/2,2N可以表示数据处理器当前所处理数据的位宽,该第一高位选择器组单元25中每一个第一高位选择器251的内部电路结构可以相同。可选的,乘法运算时,修正布斯编码电路01连接的对应N/2个第一高位部分积获取单元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通过第一符号位数值输入端口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,所述第一高位部分积获取单元24包括:高位目标编码输入端口241、第三选通数值输入端口242、第四选通数值输入端口243、第二数据输入端口244以及高位部分积输出端口245;所述高位目标编码输入端口241用于接收所述第一高位目标编码,所述第三选通数值输入端口242用于接收所述第一高位选择器组单元25选通后,输出的所述第一符号位扩展后的高位部分积中的第三数值,所述第四选通数值输入端口243用于接收所述第一高位与逻辑单元26输出的所述第一符号位扩展后的高位部分积中的第四数值,所述第二数据输入端口244用于接收所述第二数据,所述高位部分积输出端口245用于输出所有第一符号位扩展后的高位部分积。
需要说明的是,数据处理器中的第一高位部分积获取单元24通过目标编码输入端口241,可以接收修正布斯编码电路01输出的第一目标编码和/或第二目标编码,通过第二数据输入端口244接收乘法运算或乘累加运算中的被乘数,第一高位部分积获取单元24根据被乘数、第一目标编码和/或第二目标编码,得到第一目标编码和/或第二目标编码对应的符号位扩展后的部分积;然后将第三选通数值输入端口242接收到的符号位扩展后的高位部分积中的第三数值、第四选通数值输入端口243接收到的符号位扩展后的高位部分积中的第四数值以及符号位扩展后的部分积进行组合,得到第一符号位扩展后的高位部分积。
另外,若数据处理器当前可处理的数据位宽也为2N,则数据处理器中的第一高位部分积获取单元24可以包含4N个数值生成子单元,每个数值生成子单元可以对应第一符号位扩展后的高位部分积中的一位数值;其中,2N个数值生成子单元可以连接2N个第一高位与逻辑单元26,N个数值生成子单元可以连接N个选择器,还有剩余的N个数值生成子单元不连接第一高位与逻辑单元26和选择器;剩余的N个数值生成子单元可以为第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第3N位数值之间对应位数值生成子单元。其中,数值生成子单元的数量可以等于数据处理器当前可处理数据位宽的2倍。其中,每个第一高位部分积获取单元24中4N个数值生成子单元的位置分布形式可以描述为:每个第一高位部分积获取单元24中相同位数值生成子单元均位于同一列。
进一步地,第一高位部分积获取单元24得到的所有第一符号位扩展后的高位部分积的分布形式可以表征为,第一个第一符号位扩展后的高位部分积中的最低位数值,与其它第一符号位扩展后的高位部分积中的最低位数值均位于同一列;第一个第一符号位扩展后的高位部分积中的其它位数值与其它第一符号位扩展后的高位部分积中的对应位数值分别位于对应列。
可选的,如图4所示,所述第二部分积获取电路03中的第二高位部分积获取单元35包括:高位目标编码输入端口351、第七选通数值输入端口352、第八选通数值输入端口353、第二数据输入端口354以及低位部分积输出端口355;所述目标编码输入端口351用于接收所述目标编码,所述第七选通数值输入端口352用于接收所述第二高位选择器组单元35选通后,输出的所述第二符号位扩展后的低位部分积中的第七数值,所述第八选通数值输入端口353用于接收所述第二高位与逻辑单元36输出的所述第二符号位扩展后的低位部分积中的第八数值,所述第二数据输入端口354用于接收所述第二数据,所述低位部分积输出端口355用于输出所有第二符号位扩展后的低位部分积。
可以理解的是,上述第二部分积获取电路03中的第二高位部分积获取单元35的电路结构和具体功能,与第一部分积获取电路02中第一低位部分积获取单元21的电路结构和具体功能相同,因此,本实施例对第二低位部分积获取单元35的电路结构和具体功能不再赘述。可选的,第二低位部分积获取单元35和第一低位部分积获取单元21对数据处理的方式也相同,对此本实施例也不再赘述。
本实施例提供的一种数据处理器,该数据处理器可以通过第一高位部分积获取单元根据接收到的目标编码,以及接收到的第二数据中的被乘数,得到第一符号位扩展后的高位部分积,进而通过第一压缩支路对第一符号位扩展后的高位部分积和第一符号位扩展后的低位部分积进行压缩运算,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,如图5所示为第一压缩电路的具体结构示意图,所述第一压缩电路04,该第一压缩电路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,所述第一修正华莱士树组单元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倍,且所有第一符号位扩展后的部分积中的数值均参与累加运算。示例性的,若数据处理器接收到的两个数据位宽均为16比特,当前数据处理器可处理8位数据的乘法运算,则当前数据处理器可以对拆分后的两组8位*8位数据进行同步乘法运算,该数据处理器通过第一部分积获取电路02得到的2个第一符号位扩展后的低位部分积,以及2个第一符号位扩展后的高位部分积的分布形式如图7所示;其中,右上角为2个第一符号位扩展后的低位部分积的分布图,左下角为2个第一符号位扩展后的高位部分积的分布图,“○”表示第一符号位扩展后的低位部分积中的部分位数值,表示第一符号位扩展后的高位部分积中的部分位数值,“●”表示第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积的符号位数值。若数据处理器当前可处理16位*16位的数据乘法运算,该数据处理器通过第一部分积获取电路02得到的4个第一符号位扩展后的低位部分积,以及4个第一符号位扩展后的高位部分积的分布形式如图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,接收到输入信号的数量可以等于第一目标编码和/或第二目标编码的总数量,或者第一符号位扩展后的部分积的数量。其中,第一修正华莱士树组单元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,所述第一累加单元42包括:第一加法器421,所述第一加法器421用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
具体的,第一加法器421可以为不同位宽的进位加法器。可选的,第一加法器421可以接收第一修正华莱士树组单元41输出的两路信号,对输出的两路信号进行加法运算,输出数据处理器当前所处理的数据运算模式的运算结果,即第一目标运算结果。可选的,上述第一加法器421可以为超前进位加法器,该超前进位加法器对应处理数据的位宽可以等于第一修正华莱士树组单元41输出的第一累加运算结果的位宽。
示例性的,若数据处理器当前处理8位*8位的定点数乘法运算,则第一累加单元42中的第一加法器421可以为16位超前进位加法器,如图8所示为第一压缩电路04的具体电路结构图,图9中Wallace_i表示第一低位华莱士树子单元411和第一高位华莱士树子单元413,i为第一低位华莱士树子单元411和第一高位华莱士树子单元413从0开始的编号,并且两两华莱士树子单元之间连接的实线表示高位编号对应的华莱士树子单元有进位输出信号,虚线表示高位编号对应的华莱士树子单元没有进位输出信号。其中,图8中Wallace_0和Wallace_7为第一低位华莱士树子单元411,Wallace_8和Wallace_15为第一高位华莱士树子单元413。
可选的,继续参见图6,所述第二压缩电路05中的第二累加单元52包括:第二加法器521,所述第二加法器521用于对所述第二累加运算结果进行加法运算得到所述第二目标运算结果。
需要说明的是,第二加法器521和第一加法器421对数据处理的方式也相同,对此本实施例也不再赘述。
本实施例提供的一种数据处理器,数据处理器中的第一压缩电路通过第一累加电路可以对第一修正华莱士树组单元输出的两路信号进行累加处理,输出不同数据运算模式的运算结果,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
在其中一个实施例中,继续参见图5所示,所述第一压缩电路04包括第一加法器421,所述第一加法器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、接收待处理数据以及功能模式选择信号,其中,所述功能模式选择信号用于指示数据处理器当前可处理的数据运算模式。
具体的,数据处理器可以通过修正布斯编码电路接收两个待处理数据,并且修正布斯编码电路、第一部分积获取电路以及第二部分积获取电路均可以同时接收相同的功能模式选择信号。可选的,待处理数据可以包括两个待处理子数据,这两个待处理子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据。可选的,每个待处理数据中的两个待处理子数据可以拼接后作为一个整体,输入至修正布斯编码电路,还可以分开同步输入至修正布斯编码电路。其中,上述待处理子数据可以为定点数,且位宽可以为2N,两个待处理子数据拼接后得到的数据位宽可以为4N。
需要说明的是,上述功能模式选择信号可以有四种,四种功能模式选择信号分别对应数据处理器可处理的四种数据运算模式,四种数据运算模式可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。另外,一个待处理数据中的待处理子数据可以作为数据处理器执行乘法运算或乘累加运算处理时的乘数,另一个待处理数据中的待处理子数据可以作为数据处理器执行乘法运算或乘累加运算处理时的被乘数。
步骤S200、将所述待处理数据与所述功能模式选择信号进行逻辑运算,得到待编码数值。
具体的,上述逻辑运算可以为与逻辑运算,还可以为与逻辑运算和其它逻辑运算结合实现的逻辑运算。可选的,数据处理器接收到的待处理数据均可以包括待处理低位子数据以及待处理高位子数据,若该待处理子数据为“y7y6y5y4y3y2y1y0”,则待处理高位子数据可以为“y7y6y5y4”,待处理低位子数据可以为“y3y2y1y0”。
可选的,上述步骤S200中对所述待处理数据与所述功能模式选择信号进行逻辑运算,得到待编码数值的过程,具体可以包括:对所述待处理数据中的待处理低位子数据对应的最高位数值和所述功能模式选择信号进行与逻辑运算,得到所述待编码数值。
需要说明的是,若待处理数据的位宽和数据处理器当前可处理数据的位宽相同,则数据处理器可以对待处理低位子数据中的最高位数值和功能模式选择信号进行与逻辑运算,得到待编码数值,实际上,数据处理器可以对待处理低位子数据中的最高位数值和表示功能模式选择信号的数值进行与逻辑运算,得到待编码数值;该待编码数值可以作为待处理高位子数据进行布斯编码处理时的补位数值;若待处理数据的位宽,等于数据处理器当前可处理数据位宽的2倍,则数据处理器可以对待处理子数据包含的低位子数据中的最高位数值和功能模式选择信号进行与逻辑运算,得到待编码数值。可选的,不同数据运算模式下,功能模式选择信号可以不相同。
步骤S300、对所述待处理数据以及所述待编码数值进行布斯编码处理,得到目标编码。
具体的,上述目标编码可以包括第一目标编码和第二目标编码;第一目标编码可以包括第一低位目标编码和第一高位目标编码,第二目标编码可以包括第二低位目标编码和第二高位目标编码。
可选的,上述步骤S300中对所述待处理数据和所述待编码数值进行布斯编码处理,得到目标编码的过程,具体可以包括:根据所述待编码数值与所述待处理数据,得到待编码高位子数据和待编码低位子数据;分别对所述待编码高位子数据和所述待编码低位子数据进行布斯编码处理,得到第一目标编码和第二目标编码。
需要说明的是,数据处理器可以将待处理数据与待编码数值结合,得到待编码高位子数据和待编码低位子数据,其中,待编码数值可以作为待编码高位子数据中的最低位数值。可选的,数据处理器可以根据待编码数值确定待处理高位子数据对应的多组待编码高位子数据。可选的,待处理低位数据与补位数值0组合可以得到多组待编码低位子数据,待处理高位子数据与待编码数值可以得到多组待编码高位子数据;然后数据处理器可以对待编码低位子数据和待编码高位子数据进行布斯编码处理。可选的,待编码低位子数据的组数可以等于待编码高位子数据的组数,还可以等于数据处理器当前可处理数据位宽的1/4。
在本实施例中,划分多组待编码低位子数据的方式可以表征为对补位处理后的待处理低位子数据中相邻的每3位数值作为一组待编码低位子数据,每组待编码低位子数据中的最高位数值可以作为相邻下一组待编码低位子数据中的最低位数值。可选的,划分多组待编码高位子数据的方式可以表征为将待编码数值作为待处理高位子数据进行布斯编码处理时的补位数值,对补位后的待处理高位子数据中相邻的每3位数值作为一组待编码高位子数据,每组待编码高位子数据中的最高位数值可以作为相邻下一组待编码高位子数据中的最低位数值。例如,待处理数据中包含两个子数据A(即x1x2x3x4,x1为最低位数值)和B(即x5x6x7x8),子数据A为待处理数据中的低位子数据,子数据B为待处理数据中的高位子数据,对子数据A进行自动补位处理,得到补位处理后的子数据(即0x1x2x3x4),进而得到两组待编码低位子数据(即0x1x2和x2x3x4);然后将待编码数值y与高位子数据(即x5x6x7x8)组合,得到两组待编码高位子数据(即yx5x6和x6x7x8)。
进一步地,上述布斯编码处理过程中的编码方式可以参见表1以及上述修正布斯编码电路01结构的相关实施例,根据表1可知,通过低位布斯编码单元对划分后的待编码低位子数据进行布斯编码处理,通过高位布斯编码单元对划分后的待编码高位子数据进行布斯编码处理,可以得到五类不同的第一目标编码和/或第二目标编码,分别为-2X,2X,-X,X和0;其中,X为乘法运算或乘累加运算中的被乘数。
在本实施例中,数据处理器根据接收到的功能模式选择信号,可以确定当前可处理的具体模式数据运算,并且修正布斯编码电路接收到的待处理数据中的两个待处理子数据,均可以为运算处理过程中的乘数。其中,待处理数据中包含的两个待处理子数据的位宽均为2N,则数据处理器根据待处理子数据的位宽以及当前需要处理的对应数据运算模式,可以确定修正布斯编码电路当前需要对N位数据,或者2N位数据进行布斯编码处理,以得到两组对应的目标编码,即一组第一目标编码和一组第二目标编码。可选的,若修正布斯编码电路当前需要对N位数据进行处理,则得到的第一目标编码或第二目标编码的数量可以等于N/2;若修正布斯编码电路当前需要对2N位数据进行处理,则得到的第一目标编码或第二目标编码的数量可以等于N。
步骤S400、根据所述功能模式选择信号、所述目标编码以及所述待处理数据,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积。
具体的,数据处理器可以根据实际运算需求,待处理数据中的待处理子数据以及待处理子数据得到的对应第一目标编码和第二目标编码,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积。其中,数据处理器可以通过第一部分积获取电路得到第一符号位扩展后的部分积,通过第二部分积获取电路得到第二符号位扩展后的部分积。可选的,第一符号位扩展后的部分积和第二符号位扩展后的部分积,分别是根据第一目标编码和/或第二目标编码得到的部分积。
需要说明的是,数据处理器接收到的两个待处理数据(包括待处理乘数和待处理被乘数)均包括两个待处理子数据,若数据处理器当前可处理的数据位宽等于待处理子数据(即待处理乘数)的位宽,则完成布斯编码处理后,可以得到两个待处理子数据(即第一待处理子数据和第二待处理子数据)对应的两组目标编码。可选的,第一待处理数据可以包括第一待处理低位子数据和第一待处理高位子数据,第一待处理低位子数据和第一待处理高位子数据的位宽可以相等。可选的,目标编码可以包括第一待处理低位子数据得到的第一目标编码,以及第一待处理高位子数据得到的第二目标编码。可选的,若数据处理器当前可处理乘法运算,此时,数据处理器中的第一部分积获取电路或第二部分积获取电路可以根据实际运算需求,通过其中一组目标编码和待处理被乘数得到符号位扩展后的部分积,以便实现累加运算,得到乘法运算结果;该情况下,相当于数据处理器根据其中一组目标编码与待处理被乘数中的对应子数据,得到一组符号位扩展后的部分积,并对一组符号位扩展后的部分积进行累加运算,得到乘法运算结果。可选的,若数据处理器当前可处理乘累加运算,此时,数据处理器中的第一部分积获取电路和/或第二部分积获取电路可以根据实际运算需求,通过两组目标编码得到两组符号位扩展后的部分积,以便实现累加运算,得到乘累加运算结果;该情况下,相当于数据处理器根据两组目标编码分别与待处理被乘数中的对应子数据,得到两组符号位扩展后的部分积,并对两组符号位扩展后的部分积进行累加运算,得到乘累加运算结果。
步骤S500、对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果。
可选的,上述步骤S500中对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果的过程,可以包括:对所有第一符号位扩展后的部分积进行累加处理得到第一累加运算结果;对所述第一累加运算结果进行累加处理,得到所述第一目标运算结果。
具体的,数据处理器可以通过第一压缩电路中的第一修正华莱士树组单元对所有第一符号位扩展后的部分积中的列数值进行累加运算得到第一累加运算结果,再通过第一累加单元对第一累加运算结果进行累加处理,得到第一目标运算结果。可选的,第一累加运算结果可以包括第一修正华莱士树组单元进行累加运算,得到的和位输出信号Sum与进位输出信号Carry,其中,和位输出信号Sum与进位输出信号Carry的位宽可以相同。另外,第一累加单元相当于对和位输出信号Sum与进位输出信号Carry进行累加运算。可选的,上述第一目标运算结果可以为全0数据,还可以为非0数据。
需要说明的是,数据处理器可以通过第一累加单元中的第一加法器,对第一修正华莱士树组单元输出的进位输出信号Carry与和位输出信号Sum进行加法运算,输出第一目标运算结果。
步骤S600、对所有第二符号位扩展后的部分积进行压缩处理,得到第二目标运算结果。
可选的,上述步骤S600中对所述第二符号位扩展后的部分积进行压缩处理,得到第二目标运算结果的步骤,包括:对所有第二符号位扩展后的部分积进行累加处理得到第二累加运算结果;对所述第二累加运算结果进行累加处理,得到所述第二目标运算结果。
具体的,数据处理器可以通过第二压缩电路中的第二修正华莱士树组单元对第二符号位扩展后的部分积进行累加运算得到第二累加运算结果,再通过累加单元对第二累加运算结果进行累加处理,得到第二目标运算结果。可选的,上述第二目标运算结果可以为全0数据,还可以为非0数据。
在本实施例中,数据处理器可以同步执行步骤S500和步骤S600,对这两个步骤的先后顺序本实施例不做任何限定。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能模式选择信号确定当前可处理对应的数据运算模式,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
作为其中一个实施例,图11为另一实施例提供的得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积的具体流程示意图,如图11所示,上述步骤S400中根据所述功能模式选择信号、所述目标编码以及所述待处理数据,得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积的过程,可以包括:
步骤S401、根据所述功能模式选择信号,确定数据处理器当前所处理的数据运算模式。
具体的,根据不同的功能模式选择信号可以确定数据处理器当前所处理的具体数据运算模式。在本实施例中,数据运算模式可以包括N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。可选的,不同数据运算模式对应的功能模式选择信号可以不相同。
步骤S402、根据所述数据运算模式,确定通过所述目标编码中的第一目标编码和/或第二目标编码,与所述待处理数据,得到所述第一符号位扩展后的部分积以及所述第二符号位扩展后的部分积。
具体的,根据确定的数据运算模式,数据处理器中的修正布斯编码电路可以确定将一组目标编码还是两组目标编码,分别输入至第一部分积获取电路和/或第二部分积获取电路中;然后第一部分积获取电路和第二部分积获取电路根据接收到的目标编码与待处理被乘数,分别得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积。可选的,同一次数据运算时,第一符号位扩展后的部分积和第二符号位扩展后的部分积的位宽可以相等,且位宽可以等于数据处理器当前可处理数据位宽的2倍。可选的,第一符号位扩展后的部分积的数量可以等于第一部分积获取电路接收到的所有目标编码的数量,第二符号位扩展后的部分积的数量可以等于第二部分积获取电路接收到的所有目标编码的数量。
可选的,所述第一符号位扩展后的部分积包括第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积;如图12所示为得到第一符号位扩展后的部分积以及第二符号位扩展后的部分积的具体流程示意图,如图12所示,上述步骤S402中通过所述目标编码中的第一目标编码和/或第二目标编码,与所述待处理数据,得到所述第一符号位扩展后的部分积以及所述第二符号位扩展后的部分积的过程,可以包括以下步骤:
步骤S412根据所述第一目标编码和/或所述第二目标编码,与所述待处理数据,得到符号位扩展后的第一部分积。
具体的,数据处理器中的第一部分积获取电路,可以根据接收到的第一目标编码和/或第二目标编码,以及待处理被乘数,得到符号位扩展后的第一低位部分积;数据处理器还可以根据第一目标编码和/或第二目标编码,以及待处理被乘数,得到符号位扩展后的第一高位部分积。可选的,符号位扩展后的第一部分积、符号位扩展后的第一低位部分积以及符号位扩展后的第一高位部分积的位宽均可以等于数据处理器当前可处理的待处理被乘数位宽的2倍。其中,符号位扩展后的第一部分积可以包括符号位扩展后的第一低位部分积和符号位扩展后的第一高位部分积。
另外,数据处理器中的第二部分积获取电路可以根据第一目标编码和/或第二目标编码,以及待处理被乘数,得到符号位扩展后的第二低位部分积;数据处理器还可以根据第一目标编码和/或第二目标编码,以及待处理被乘数,得到符号位扩展后的第二高位部分积。可选的,符号位扩展后的第二部分积、符号位扩展后的第二低位部分积以及符号位扩展后的第二高位部分积的位宽均可以等于第二部分积获取电路当前所处理的待处理被乘数位宽的2倍。
步骤S422、根据所述功能模式选择信号,得到所述第一符号位扩展后的低位部分积中的第一数值。
具体的,第一符号位扩展后的部分积可以包括第一符号位扩展后的低位部分积和第一符号位扩展后的高位部分积。可选的,上述第一数值可以位于第一符号位扩展后的低位部分积或第二符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(N+1)位至第2N位数值之间对应位数值。可选的,若数据处理器接收到的功能模式选择信号对应当前可处理2N位数据,则第一数值可以等于数据处理器当前可处理2N位数据时,得到的第一符号位扩展后的部分积中的对应位数值;若数据处理器接收到的功能模式选择信号对应当前可处理N位数据,则第一数值可以等于数据处理器当前可处理N位数据时,得到的第一符号位扩展后的部分积中的符号位数值;其中,数据处理器接收到的数据位宽为2N。
另外,数据处理器中的第二部分积获取电路得到的第二符号位扩展后的低位部分积中的第五数值,与第一符号位扩展后的低位部分积中的第一数值的具体位置和具体获取方式也类似,对此本实施例不再赘述。
步骤S432、对所述功能模式选择信号和所述符号位扩展后的第一部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值。
具体的,数据处理器接收到的数据位宽为2N,数据处理器中的第一部分积获取电路可以通过第一低位与逻辑单元对功能模式选择信号,与数据处理器对2N位数据进行乘法运算或乘累加运算的过程中,得到的符号位扩展后的第一部分积中的符号位数值进行与逻辑运算,得到第一符号位扩展后的低位部分积中的第二数值。可选的,第二数值可以位于第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第4N位数值之间对应位数值。
另外,数据处理器中的第二部分积获取电路得到的第二符号位扩展后的低位部分积中的第六数值,与第一符号位扩展后的低位部分积中的第二数值的获取方式和具体位置类似,对此不再赘述。
步骤S442、将所述符号位扩展后的第一部分积中的数值、所述第一数值以及所述第二数值进行结合,得到所述第一符号位扩展后的低位部分积。
具体的,继续上一示例,将符号位扩展后的第一部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N位数值之间对应位数值、第(2N+1)位至第4N位数值之间对应位数值(即第二数值)以及第(N+1)位至第2N位数值之间对应位数值(即第一数值)结合,得到第一符号位扩展后的低位部分积。
另外,第二符号位扩展后的低位部分积的获取方式,与第一符号位扩展后的低位部分积的获取方式类似,对此不再赘述。
步骤S452、根据所述第一目标编码和/或所述第二目标编码,与所述待处理数据,得到符号位扩展后的第二部分积。
具体的,数据处理器中的第一部分积获取电路,可以根据接收到的第一目标编码和/或第二目标编码,以及待处理被乘数,得到符号位扩展后的第二低位部分积;数据处理器还可以根据第一目标编码和/或第二目标编码,以及待处理被乘数,得到符号位扩展后的第二高位部分积。可选的,符号位扩展后的第二部分积、符号位扩展后的第二低位部分积以及符号位扩展后的第二高位部分积的位宽均可以等于数据处理器当前可处理的待处理被乘数位宽的2倍。其中,符号位扩展后的第二部分积可以包括符号位扩展后的第二低位部分积和符号位扩展后的第二高位部分积。可选的,数据处理器可以根据不同组目标编码,分别得到符号位扩展后的第一部分积和符号位扩展后的第二部分积。
步骤S462、根据所述功能模式选择信号,得到所述第一符号位扩展后的高位部分积中的第三数值。
需要说明的是,上述第三数值可以位于第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(3N+1)位至第4N位数值之间对应位数值。可选的,若数据处理器接收到的功能模式选择信号对应处理2N位数据,则第三数值可以等于数据处理器对2N位数据进行乘法运算的过程中,得到符号位扩展后的部分积中的符号位数值,还可以等于数据处理器对N位数据进行乘法运算的过程中,符号位扩展后的部分积中的符号位数值;其中,数据处理器接收到的数据位宽为2N。
步骤S472、对所述功能模式选择信号和所述符号位扩展后的第二部分积中的符号位数值进行与逻辑运算,得到所述第一符号位扩展后的高位部分积中的第四数值。
具体的,数据处理器接收到的数据位宽为2N,数据处理器通过第一高位与逻辑单元对功能模式选择信号,与数据处理器对2N位数据进行乘法运算的过程中,得到的符号位扩展后的第二部分积中的符号位数值进行与逻辑运算,得到第二符号位扩展后的高位部分积中的第四数值。可选的,第四数值可以位于第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第2N位数值之间对应位数值。
步骤S482、将所述符号位扩展后的第二部分积中的数值、所述第三数值以及所述第四数值进行结合,得到所述第一符号位扩展后的高位部分积。
继续上一示例,将符号位扩展后的第二部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第3N位数值之间对应位数值、第(3N+1)位至第4N位数值之间对应位数值(即第四数值)以及第1位至第2N位数值之间对应位数值(即第三数值)结合,得到第一符号位扩展后的高位部分积。
其中,上述步骤S412~步骤S442,与步骤S452~步骤S482在本实施例中的执行顺序可以互换,对此本实施例不做限定。
可选的,所述第二符号位扩展后的部分积包括第二符号位扩展后的低位部分积和第二符号位扩展后的高位部分积;上述步骤S402中通过所述目标编码中的第一目标编码和/或第二目标编码,与所述待处理数据,得到所述第一符号位扩展后的部分积以及所述第二符号位扩展后的部分积的过程,还可以包括以下步骤:根据所述第一目标编码和/或所述第二目标编码,与所述待处理数据,得到符号位扩展后的第三部分积;根据所述功能模式选择信号,得到所述第二符号位扩展后的低位部分积中的第五数值;对所述功能模式选择信号和所述符号位扩展后的第三部分积中的符号位数值进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值;将所述符号位扩展后的第三部分积中的数值、所述第五数值以及所述第六数值进行结合,得到所述第二符号位扩展后的低位部分积;根据所述第一目标编码和/或所述第二目标编码,与所述待处理数据,得到符号位扩展后的第四部分积;根据所述功能模式选择信号,得到所述第二符号位扩展后的高位部分积中的第七数值;对所述功能模式选择信号和所述符号位扩展后的第二部分积中的符号位数值进行与逻辑运算,得到所述第二符号位扩展后的高位部分积中的第八数值;将所述符号位扩展后的第四部分积中的数值、所述第七数值以及所述第八数值进行结合,得到所述第二符号位扩展后的高位部分积。
同理,数据处理器中的第二部分积电路获取的第二符号位扩展后的低位部分积的方式,与第一部分积获取电路获取的第一符号位扩展后的低位部分积的方式相同,对此不再赘述,数据处理器中的第二部分积电路获取的第二符号位扩展后的高位部分积的方式,与第一部分积获取电路获取的第一符号位扩展后的高位部分积的方式相同,对此不再赘述。其中,第二部分积电路获取第二符号位扩展后的低位部分积,与获取第二符号位扩展后的高位部分积的步骤,在本实施例中的执行顺序可以互换,对此本实施例不做赘述。另外,本实施例获取第二符号位扩展后的部分积的过程,和获取第一符号位扩展后的部分积的过程可以同步执行。
本实施例提供的一种数据处理方法,该方法可以根据数据处理器接收到的功能模式选择信号对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,上述步骤S500中对所有第一符号位扩展后的部分积进行压缩处理,得到第一目标运算结果的过程,具体可以通过以下方式实现:通过第一低位华莱士树子单元对所有第一符号位扩展后的部分积中的列数值进行累加处理,得到第一进位输出信号;通过第一与逻辑子单元对所述第一进位输出信号和所述功能模式选择信号进行与逻辑运算,得到第一进位输入信号;通过第一高位华莱士树子单元对所述第一进位输入信号以及所有第一符号位扩展后的部分积中的列数值进行累加处理,得到所述第一累加运算结果;通过第一累加单元对第一累加运算结果进行加法运算,得到所述第一目标运算结果。
具体的,数据处理器可以通过第一累加单元中的第一加法器对第一修正华莱士树组单元输出的进位输出信号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)列数据进行累加运算。然后数据处理器通过第一累加单元对第一修正华莱士树组单元的输出结果进行累加运算;其中,数据处理器中的第一累加单元可以根据接收到的功能模式选择信号与第一低位加法器输出的信号进行与逻辑运算得到逻辑运算结果,并将逻辑运算结果输入至高位加法器中,从而达到第一目标运算结果。其中,数据处理器中的第一修正华莱士树组单元和第一累加单元,对所有第一符号位扩展后的部分积进行累加处理的具体实现电路结构图如图9所示。
可选的,上述步骤S600中对所有第二符号位扩展后的部分积进行压缩处理,得到第二目标运算结果的过程,具体可以通过以下方式实现:通过第二低位华莱士树子单元对所有第二符号位扩展后的部分积中的列数值进行累加处理,得到第二进位输出信号;通过第二与逻辑子单元对所述第二进位输出信号和所述功能模式选择信号进行与逻辑运算,得到第二进位输入信号;通过第二高位华莱士树子单元对所述第二进位输入信号以及所有第二符号位扩展后的部分积中的列数值进行累加处理,得到所述第二累加运算结果;通过第二累加单元对第二累加运算结果进行加法运算,得到所述第二目标运算结果。
在本实施例中,数据处理器可以通过第二压缩电路对所有第二符号位扩展后的部分积进行累加处理,以得到第二目标运算结果。其中,数据处理器对所有第二符号位扩展后的部分积进行累加处理,得到第二目标运算结果的过程,与数据处理器对所有第一符号位扩展后的部分积进行累加处理,得到第一目标运算结果的过程类似,对此本实施例不再赘述。
本实施例提供的一种数据处理方法,该方法能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性,有效减少了数据处理器占用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接口电连接。所述控制器件可以包括单片机(MicroController Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备可以为数据处理器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的电路组合,但是本领域技术人员应该知悉,本申请并不受所描述的电路组合方式的限制,因为依据本申请,某些电路可以采用其它方式或者结构实现。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的器件和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (31)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911349759.XA CN113033788B (zh) 2019-12-24 2019-12-24 数据处理器、方法、装置及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911349759.XA CN113033788B (zh) 2019-12-24 2019-12-24 数据处理器、方法、装置及芯片

Publications (2)

Publication Number Publication Date
CN113033788A CN113033788A (zh) 2021-06-25
CN113033788B true CN113033788B (zh) 2023-08-18

Family

ID=76452348

Family Applications (1)

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

Country Status (1)

Country Link
CN (1) CN113033788B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413254A (zh) * 2019-09-24 2019-11-05 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
CN110515587A (zh) * 2019-08-30 2019-11-29 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备
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
US7313585B2 (en) * 2003-08-30 2007-12-25 Hewlett-Packard Development Company, L.P. Multiplier circuit

Patent Citations (3)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
CN110515589B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110515587B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110554854B (zh) 数据处理器、方法、芯片及电子设备
CN110673823B (zh) 乘法器、数据处理方法及芯片
CN110531954B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110515590B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031912B (zh) 乘法器、数据处理方法、装置及芯片
CN111258633B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258544B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110688087B (zh) 数据处理器、方法、芯片及电子设备
CN113031911B (zh) 乘法器、数据处理方法、装置及芯片
CN110647307B (zh) 数据处理器、方法、芯片及电子设备
CN113031915B (zh) 乘法器、数据处理方法、装置及芯片
CN210109789U (zh) 数据处理器
CN113033799B (zh) 数据处理器、方法、装置及芯片
CN110515588B (zh) 乘法器、数据处理方法、芯片及电子设备
CN210006030U (zh) 数据处理器
CN210006029U (zh) 数据处理器
CN210006031U (zh) 乘法器
CN110515586B (zh) 乘法器、数据处理方法、芯片及电子设备
CN209879493U (zh) 乘法器
CN113033788B (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