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

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

Info

Publication number
CN113031918A
CN113031918A CN201911351203.4A CN201911351203A CN113031918A CN 113031918 A CN113031918 A CN 113031918A CN 201911351203 A CN201911351203 A CN 201911351203A CN 113031918 A CN113031918 A CN 113031918A
Authority
CN
China
Prior art keywords
partial product
data
bit
order
sign 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.)
Granted
Application number
CN201911351203.4A
Other languages
English (en)
Other versions
CN113031918B (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 CN201911351203.4A priority Critical patent/CN113031918B/zh
Publication of CN113031918A publication Critical patent/CN113031918A/zh
Application granted granted Critical
Publication of CN113031918B publication Critical patent/CN113031918B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

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

Description

数据处理器、方法、装置及芯片
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理器、方法、装置及芯片。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能数据处理器的要求也越来越高,其中,数据处理器为乘法器、加法器或乘累加器。神经网络算法作为智能芯片广泛应用的算法之一,通过乘累加器进行乘累加运算在神经网络算法中是一种常见的操作。
通常,数据处理器是采用多个相同输入数据位宽或不同数据位宽的乘法器先进行并行乘法运算,得到多个乘法运算结果,再通过加法器对多个乘法运算结果进行累加运算,得到目标乘累加结果。但是,现有的数据处理器仅能够对相同位宽的数据进行乘累加运算,降低了数据处理器的通用性。另外,现有技术中对多个乘法运算结果还需要单独进行一次累加运算才能实现乘累加操作,从而增大了数据处理器的功耗。
发明内容
基于此,有必要针对上述技术问题,提供了一种低功耗且通用性较高的数据处理器、方法、装置及芯片。
一种数据处理器,所述数据处理器包括:数据处理器包括:第一乘法运算电路、第二乘法运算电路以及部分积交换电路,所述第一乘法运算电路包括第一修正编码支路、第一选择支路以及第一修正压缩支路,所述第二乘法运算电路包括第二修正编码支路、第二选择支路以及第二修正压缩支路;所述第一修正压缩支路和所述第二修正压缩支路均包括4-2压缩器,所述4-2压缩器包括选择电路以及全加器;所述第一乘法运算电路的输出端与所述部分积交换电路的第一输入端连接,所述部分积交换电路的第一输出端与所述第一乘法运算电路的输入端连接,所述部分积交换电路的第二输出端与所述第二乘法运算电路的第一输入端连接,所述第二乘法运算电路的输出端与所述部分积交换电路的第二输入端连接;
其中,所述第一乘法运算电路和所述第二乘法运算电路均包括逻辑门单元,所述逻辑门单元的输入端用于接收接收功能模式选择信号(mode信号),所述功能模式选择信号用于确定所述数据处理器当前可处理的对应数据运算模式,所述部分积交换电路中包括第三输入端,用于接收所述功能模式选择信号,所述第一修正编码支路用于对接收到的第一数据进行编码处理,得到第一符号位扩展后的部分积,所述第一选择支路用于从所述第一符号位扩展后的部分积中选择第一目标编码部分积,所述第一修正压缩支路用于对所述第一目标编码部分积进行压缩处理,得到第一目标运算结果,所述第二修正编码支路用于对接收到的第二数据进行编码处理,得到第二符号位扩展后的部分积,所述第二选择支路用于从所述第二符号位扩展后的部分积中选择第二目标编码部分积,所述第二修正压缩支路用于对所述第二目标编码部分积进行压缩处理,得到第二目标运算结果,所述部分积交换电路用于根据所述功能模式选择信号,控制是否对所述第一符号位扩展后的部分积,以及所述第二符号位扩展后的部分积进行交换处理。
在其中一个实施例中,所述第一乘法运算电路中的第一修正编码支路包括:第一修正布斯编码子电路;所述第一乘法运算电路中的第一选择支路包括:第一部分积选择子电路;所述第一修正布斯编码子电路的输出端与所述第一部分积选择子电路的第一输入端连接,所述第一部分积选择子电路的第二输入端与所述部分积交换电路的第一输出端连接,所述第一部分积选择子电路的输出端与所述第一修正压缩支路的第一输入端连接;
其中,所述第一修正布斯编码子电路用于对接收到的所述第一数据进行布斯编码处理得到第一目标编码,并根据所述第一目标编码得到所述第一符号位扩展后的部分积,所述第一部分积选择子电路用于接收所述部分积交换电路输出的所述第二符号位扩展后的部分积,以及对所述第一符号位扩展后的部分积进行选择,并且将所述部分积交换电路输出的所述第二符号位扩展后的部分积,以及选择后得到的所述第一符号位扩展后的部分积,作为所述第一目标编码部分积输入至所述第一修正压缩支路。
在其中一个实施例中,所述第二乘法运算电路中的第二修正编码支路包括:第二修正布斯编码子电路;所述第二乘法运算电路中的第二选择支路包括:第二部分积选择子电路;所述第二修正布斯编码子电路的输出端与所述第二部分积选择子电路的第一输入端连接,所述第二部分积选择子电路的第二输入端与所述部分积交换电路的第二输出端连接,所述第二部分积选择子电路的输出端与所述第二修正压缩支路的第一输入端连接;
其中,所述第二修正布斯编码子电路用于对接收到的所述第二数据进行布斯编码处理得到第二目标编码,并根据所述目标编码得到所述第二符号位扩展后的部分积,所述第二部分积选择子电路用于接收所述部分积交换电路输出的所述第二符号位扩展后的部分积,以及对所述第二符号位扩展后的部分积进行选择,并且将所述部分积交换电路输出的所述第一符号位扩展后的部分积,以及选择后得到的所述第二符号位扩展后的部分积,作为所述第二目标编码部分积输入至所述第二修正压缩支路。
在其中一个实施例中,所述第一修正布斯编码子电路包括:第一修正布斯编码单元、第一低位部分积获取单元、第一低位选择器组单元、第一低位与逻辑单元、第一高位部分积获取单元、第一高位选择器组单元以及第一高位与逻辑单元;所述第一修正布斯编码单元的第一输出端与所述第一低位部分积获取单元的第一输入端连接,所述第一低位选择器组单元的输出端与所述第一低位部分积获取单元的第二输入端连接,所述第一低位与逻辑单元的输出端与所述第一低位部分积获取单元的第三输入端连接,所述第一修正布斯编码单元的第二输出端与所述第一高位部分积获取单元的第一输入端连接,所述第一高位选择器组单元的输出端与所述第一高位部分积获取单元的第二输入端连接,所述第一高位与逻辑单元的输出端与所述第一高位部分积获取单元的第三输入端连接;
其中,所述第一修正布斯编码单元用于根据接收到的所述功能模式选择信号确定所述第一乘法运算电路当前可处理数据的位宽,并对接收到的所述第一数据进行布斯编码处理得到第一低位目标编码以及第一高位目标编码,所述第一低位部分积获取单元用于根据接收到的所述第一低位目标编码以及所述第一数据,得到第一符号位扩展后的低位部分积,所述第一低位选择器组单元用于选通所述第一符号位扩展后的低位部分积中的第一数值,所述第一低位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值,所述第一高位部分积获取单元用于根据接收到的所述第一高位目标编码以及所述第一数据,得到第一符号位扩展后的高位部分积,所述第一高位选择器组单元用于选通所述第一符号位扩展后的高位部分积中的第三数值,所述第一高位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的高位位部分积中的第四数值。
在其中一个实施例中,所述第一修正布斯编码子电路中的第一修正布斯编码单元包括:低位布斯编码单元、与逻辑单元以及高位布斯编码单元,所述低位布斯编码单元的输出端与所述与逻辑单元的输入端连接,所述与逻辑单元的输出端与所述高位布斯编码单元的输入端连接;所述低位布斯编码单元用于对接收到的所述第一数据中的低位数据进行布斯编码处理得到第一低位目标编码,所述与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一数据中的高位数据进行布斯编码处理时的补位数值,所述高位布斯编码单元用于对接收到的所述第一数据中的高位数据和所述补位数值进行布斯编码处理得到第一高位目标编码。
在其中一个实施例中,所述第一修正布斯编码单元中的低位布斯编码单元包括:低位数据输入端口、低位目标编码输出端口以及高位数值输出端口;所述低位数据输入端口用于接收进行布斯编码处理的所述第一数据中的低位数据,所述低位目标编码输出端口用于输出对第一数据中的所述低位数据进行布斯编码处理后,得到的第一低位目标编码,所述高位数值输出端口用于输出所述低位数据中的最高位数值。
在其中一个实施例中,所述第一修正布斯编码单元中的与逻辑单元包括:高位数值输入端口、模式选择信号输入端口以及逻辑运算结果输出端口;所述高位数值输入端口用于接收所述第一数据包含的低位数据中的最高位数值,所述模式选择信号输入端口用于接收所述功能模式选择信号,所述逻辑运算结果输出端口用于输出对所述第一数据包含的低位数据中的最高位数值,与所述功能模式选择信号进行与逻辑运算得到的所述第一逻辑运算结果。
在其中一个实施例中,所述第一修正布斯编码单元中的高位布斯编码单元包括:高位数据输入端口、低位数值输入端口以及高位目标编码输出端口;所述高位数据输入端口用于接收所述第一数据中的高位数据,所述低位数值输入端口用于接收所述第一数据中的低位数据中的最高位数值与所述功能模式选择信号进行与逻辑运算得到的第一逻辑运算结果,所述高位目标编码输出端口用于输出所述第一高位目标编码。
在其中一个实施例中,所述第二修正布斯编码子电路包括:第二修正布斯编码单元、第二低位部分积获取单元、第二低位选择器组单元、第二低位与逻辑单元、第二高位部分积获取单元、第二高位选择器组单元以及第二高位与逻辑单元;所述第二修正布斯编码单元的第一输出端与所述第二低位部分积获取单元的第一输入端连接,所述第二低位选择器组单元的输出端与所述第二低位部分积获取单元的第二输入端连接,所述第二低位与逻辑单元的输出端与所述第二低位部分积获取单元的第三输入端连接,所述第二修正布斯编码单元的第二输出端与所述第二高位部分积获取单元的第一输入端连接,所述第二高位选择器组单元的输出端与所述第二高位部分积获取单元的第二输入端连接,所述第二高位与逻辑单元的输出端与所述第二高位部分积获取单元的第三输入端连接;
其中,所述第二修正布斯编码单元用于根据接收到的所述功能模式选择信号确定所述第二乘法运算电路当前可处理数据的位宽,并对接收到的所述第二数据进行布斯编码处理得到第二低位目标编码以及第二高位目标编码,所述第二低位部分积获取单元用于根据接收到的所述第二低位目标编码以及所述第二数据,得到第二符号位扩展后的低位部分积,所述第二低位选择器组单元用于选通所述第二符号位扩展后的低位部分积中的第五数值,所述第二低位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值,所述第二高位部分积获取单元用于根据接收到的所述第二高位目标编码以及所述第二数据,得到第二符号位扩展后的高位部分积,所述第二高位选择器组单元用于选通所述第二符号位扩展后的高位部分积中的第七数值,所述第二高位与逻辑单元用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的高位位部分积中的第八数值。
在其中一个实施例中,所述第一修正布斯编码子电路中的第一低位部分积获取单元包括:低位目标编码输入端口、第一选通数值输入端口、第二选通数值输入端口、第一数据输入端口以及低位部分积输出端口;所述低位目标编码输入端口用于接收所述第一低位目标编码,所述第一选通数值输入端口用于接收所述第一低位选择器组单元选通后,输出的所述第一符号位扩展后的低位部分积中的第一数值,所述第二选通数值输入端口用于接收所述第一低位与逻辑单元输出的所述第一符号位扩展后的低位部分积中的第二数值,所述第一数据输入端口用于接收所述第一数据,所述低位部分积输出端口用于输出所有第一符号位扩展后的低位部分积。
在其中一个实施例中,所述第一修正布斯编码子电路中的第一低位选择器组单元包括:低位选择器,所述低位选择器用于选通所述第一符号位扩展后的低位部分积中的第一数值。
在其中一个实施例中,所述第一修正布斯编码子电路中的第一低位与逻辑单元包括:第一模式选择信号输入端口、第一符号位数值输入端口以及第一结果输出端口;其中,所述第一模式选择信号输入端口用于接收所述功能模式选择信号,所述第一符号位数值输入端口用于接收所述符号位扩展后的低位部分积中的第一符号位数值,所述第一结果输出端口用于输出对所述功能模式选择信号与所述第一符号位数值进行与逻辑运算得到的第三逻辑运算结果,即所述第二数值。
在其中一个实施例中,所述第一修正布斯编码子电路中的第一高位部分积获取单元包括:高位目标编码输入端口、第三选通数值输入端口、第四选通数值输入端口、第二数据输入端口以及高位部分积输出端口;所述高位目标编码输入端口用于接收所述第一高位目标编码,所述第三选通数值输入端口用于接收所述第一高位选择器组单元选通后,输出的所述第一符号位扩展后的高位部分积中的第三数值,所述第四选通数值输入端口用于接收所述第一高位与逻辑单元输出的所述第一符号位扩展后的高位部分积中的第四数值,所述第二数据输入端口用于接收所述第二数据,所述高位部分积输出端口用于输出所有第一符号位扩展后的高位部分积。
在其中一个实施例中,所述第一修正布斯编码子电路包括第一高位选择器组单元包括:高位选择器,所述高位选择器用于选通所述第一符号位扩展后的高位部分积中的第三数值。
在其中一个实施例中,所述第一修正布斯编码子电路中的第一高位与逻辑单元包括:第二模式选择信号输入端口、第二符号位数值输入端口以及第二结果输出端口;其中,所述第二模式选择信号输入端口用于接收所述功能模式选择信号,所述第二符号位数值输入端口用于接收所述符号位扩展后的高位部分积中的第二符号位数值,所述第二结果输出端口用于输出对所述功能模式选择信号与所述第二符号位数值进行与逻辑运算得到的第四逻辑运算结果,即所述第四数值。
在其中一个实施例中,所述第一选择支路中的第一部分积选择子电路包括:功能模式选择信号输入端口、第一部分积输入端口、第二部分积输入端口、第一部分积输出端口以及选通部分积输出端口;所述功能模式选择信号输入端口用于接收所述功能模式选择信号,所述第一部分积输入端口用于接收所述第一修正布斯编码子电路得到的所有第一符号位扩展后的部分积,所述第二部分积输入端口用于接收所述部分积交换电路进行交换的所述第二符号位扩展后的部分积,所述第一部分积输出端口用于输出需要所述部分积交换电路进行交换的所述第一符号位扩展后的部分积,所述选通部分积输出端口用于输出选通后的所述第一符号位扩展后的部分积,以及接收到的所述第二符号位扩展后的部分积。
在其中一个实施例中,所述第一乘法运算电路中的第一修正压缩支路包括:第一修正华莱士树单元以及第一修正累加单元,所述第一修正华莱士数单元的输出端与所述第一修正累加单元的输入端连接;所述第一修正华莱士树单元用于对所述第一目标编码部分积进行累加处理得到第一累加运算结果,所述第一修正累加单元用于对所述第一累加运算结果进行累加处理,得到第一目标运算结果。
在其中一个实施例中,所述第一修正压缩支路中的第一修正华莱士树单元包括:第一低位华莱士树子单元、第一与逻辑子单元以及第一高位华莱士树子单元,所述第一低位华莱士树子单元的输出端与所述第一与逻辑子单元的输入端连接,所述第一与逻辑子单元的输出端与所述第一高位华莱士树子单元的输入端连接;其中,所述第一低位华莱士树子单元用于对所有第一目标编码部分积中的低位列数值进行累加处理得到第一进位输出信号,所述第一与逻辑子单元用于对接收到的所述功能模式选择信号,和所述第一低位华莱士树子单元输出的所述第一进位输出信号进行与逻辑运算,得到所述第一高位华莱士树子单元接收到的第一进位输入信号,所述第一高位华莱士树子单元用于对所述第一进位输入信号和所有第一目标编码部分积中的高位列数值进行累加处理,得到所述第一累加运算结果。
在其中一个实施例中,所述第一低位华莱士树子单元1311和所述第一高位华莱士树子单元1313均包括所述4-2压缩器以及模式选择电路,所述模式选择电路的输出端与所述4-2压缩器的输入端连接,所述模式选择电路中包括第一输入端,用于接收所述功能模式选择信号;其中,所述4-2压缩器用于对所有第一目标编码部分积中每列的数值进行累加处理,所述模式选择电路用于选通所述4-2压缩器接收到的所述第一目标编码部分积中的数值。
在其中一个实施例中,所述第一修正累加单元包括:第一加法器,所述第一进位加法器用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
在其中一个实施例中,所述部分积交换电路包括:功能模式选择信号输入端口、第一部分积输入端口、第一部分积输出端口、第二部分积输入端口以及第二部分积输出端口,所述功能模式选择信号输入端口用于接收所述功能模式选择信号,所述第一部分积输入端口用于接收所述第一部分积选择子电路输入的需要交换的所述第一符号位扩展后的部分积,所述第一部分积输出端口用于输出所述第一部分积输入端口接收到的所述第一符号位扩展后的部分积,所述第二部分积输入端口用于接收所述第二部分积选择子电路输入的需要交换的第二符号位扩展后的部分积,所述第二部分积输出端口用于输出所述第二部分积输入端口接收到的所述第二符号位扩展后的部分积。
本实施例提供的一种数据处理器,数据处理器通过第一乘法运算电路和第二乘法运算电路分别对接收到的数据进行编码处理,得到符号位扩展后的部分积,并通过部分积交换电路控制是否对第一乘法运算电路得到的第一符号位扩展后的部分积,与第二乘法运算电路得到的第二符号位扩展后的部分积进行交换处理,以得到第一目标编码部分积以及第二目标编码部分积,进而通过第一修正压缩支路对第一目标编码部分积进行压缩处理,以及通过第二修正压缩支路对第二目标编码部分积进行压缩处理得到目标运算结果;该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗。
一种数据处理方法,所述方法包括:
接收待处理数据和功能模式选择信号,其中,所述功能模式选择信号用于指示数据处理器当前可处理的对应数据运算模式;
对所述待处理数据与所述功能模式选择信号进行逻辑运算,得到待编码数值;
对所述待处理数据以及所述待编码数值进行布斯编码处理,得到目标编码;
根据所述目标编码以及所述待处理数据,得到符号位扩展后的部分积;
根据所述功能模式选择信号以及所述符号位扩展后的部分积,获取目标编码部分积;
对所述目标编码部分积进行压缩处理,得到目标运算结果。
在其中一个实施例中,所述对所述待处理数据与所述功能模式选择信号进行逻辑运算,得到待编码数值,包括:对所述待处理数据中待处理低位数据对应的最高位数值和所述功能模式选择信号进行与逻辑运算,得到所述待编码数值。
在其中一个实施例中,所述对所述待处理数据以及所述待编码数值进行布斯编码处理,得到目标编码,包括:
根据所述待编码数值与所述待处理数据,得到待编码高位数据和待编码低位数据;
分别对所述待编码高位数据和所述待编码低位数据进行布斯编码处理,得到高位目标编码和低位目标编码。
在其中一个实施例中,所述目标编码包括第一目标编码和第二目标编码;所述根据所述目标编码以及所述待处理数据,得到符号位扩展后的部分积,包括:
通过所述第一目标编码以及所述待处理数据,得到第一符号位扩展后的部分积;
通过所述第二目标编码以及所述待处理数据,得到第二符号位扩展后的部分积。
在其中一个实施例中,所述符号位扩展后的部分积包括符号位扩展后的低位部分积以及符号位扩展后的高位部分积;所述根据所述目标编码以及所述待处理数据,得到所述符号位扩展后的部分积,包括:
根据所述目标编码以及所述待处理数据,得到符号位扩展后的第一部分积;
根据所述功能模式选择信号,得到所述符号位扩展后的低位部分积中的第一数值;
对所述功能模式选择信号和所述符号位扩展后的第一部分积中的符号位数值进行与逻辑运算,得到所述符号位扩展后的低位部分积中的第二数值;
将所述符号位扩展后的第一部分积中的数值、所述第一数值以及所述第二数值进行结合,得到所述符号位扩展后的低位部分积。
在其中一个实施例中,所述根据所述目标编码以及所述待处理数据,得到所述符号位扩展后的部分积,包括:
根据所述目标编码以及所述待处理数据,得到符号位扩展后的第二部分积;
根据所述功能模式选择信号,得到所述符号位扩展后的高位部分积中的第三数值;
对所述功能模式选择信号和所述符号位扩展后的第二部分积中的符号位数值进行与逻辑运算,得到所述符号位扩展后的高位部分积中的第四数值;
将所述符号位扩展后的第二部分积中的数值、所述第三数值以及所述第四数值进行结合,得到所述符号位扩展后的高位部分积。
在其中一个实施例中,所述根据所述功能模式选择信号以及所述符号位扩展后的部分积,获取目标编码部分积,包括:
根据所述功能模式选择信号,确定所述数据处理器当前可处理对应的数据运算模式;
根据所述数据运算模式,判断是否需要对所述第一符号位扩展后的部分积和所述第二符号位扩展后的部分积进行交换处理;
若不需要进行交换处理,则将所述第一符号位扩展后的部分积作为所述第一目标编码部分积,将所述第二符号位扩展后的部分积作为所述第二目标编码部分积。
在其中一个实施例中,所述方法还包括:若需要进行交换处理,则对所述第一符号位扩展后的部分积和所述第二符号位扩展后的部分积进行交换处理。
在其中一个实施例中,所述目标运算结果包括第一目标运算结果,所述对所述目标编码部分积进行压缩处理,得到目标运算结果,包括:
通过第一低位华莱士树子单元对所有第一目标编码部分积中的列数值进行累加处理,得到第一累加运算结果;
通过第一与逻辑子单元对所述第一累加运算结果和所述功能模式选择信号进行与逻辑运算,得到进位输入信号;
通过第一高位华莱士树子单元根据所述进位输入信号以及所有第一目标编码部分积中的列数值进行累加处理,得到所述第二累加运算结果;
通过第一修正累加单元对第二累加运算结果进行累加运算,得到所述第一目标运算结果。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能模式选择信号确定当前可处理的不同数据运算模式,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个上述所述的数据处理器;该机器学习运算装置用于从所述机器学习运算装置中除所述数据处理器以外的其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给所述机器学习运算装置中除所述数据处理器以外的其它处理装置;
当所述机器学习运算装置包含多个所述数据处理器时,多个所述数据处理器间通过预设结构进行连接并传输数据;
其中,多个所述数据处理器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理器共享同一控制系统或拥有各自的控制系统;多个所述数据处理器共享内存或者拥有各自的内存;多个所述数据处理器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括上述所述的机器学习处理装置、通用互联接口,和所述组合处理装置中除所述机器学习运算装置以外的其它处理装置。该机器学习运算装置与所述组合处理装置中除所述机器学习运算装置以外的其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置连接,用于保存所述机器学习运算装置和所述组合处理装置中除所述机器学习运算装置和所述存储装置以外的其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的数据处理器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的数据处理器。
本申请实施例提供的一种电子设备,包括如上述所述的芯片。
附图说明
图1为一实施例提供的一种数据处理器的电路结构示意图;
图2为另一实施例提供的一种数据处理器的具体电路结构示意图;
图3为另一实施例提供的数据处理器中的第一修正布斯编码子电路的具体电路结构图;
图4为另一实施例提供的数据处理器中的第二修正布斯编码子电路的具体电路结构图;
图5为另一实施例提供的数据处理器中的第一选择支路、第一修正压缩支路、第二选择支路、第二修正压缩支路以及部分积交换电路的具体结构示意图;
图6为另一实施例提供的8位数据乘法运算得到的目标编码低位部分积和目标编码高位部分积的分布形式示意图;
图7为另一实施例提供的16位数据乘法运算得到的目标编码低位部分积和目标编码高位部分积的分布形式示意图;
图8为另一实施例提供的8位数据运算时第一修正压缩支路的具体电路结构图;
图9为一实施例提供的一种数据处理方法流程示意图;
图10为一实施例提供的得到符号位扩展后的部分积的具体流程示意图;
图11为一实施例提供的获取目标编码部分积的具体流程示意图;
图12为一实施例提供的一种组合处理装置的结构图;
图13为一实施例提供的另一种组合处理装置的结构图;
图14为一实施例提供的一种板卡的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据处理器可应用于AI芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array,FPGA)芯片、或者是其它的硬件电路设备中进行乘法运算处理或乘累加运算处理,该数据处理器的结构示意图如图1所示。
如图1所示,图1为一个实施例提供的一种数据处理器的结构图。如图1所示,该数据处理器包括:第一乘法运算电路01、第二乘法运算电路02以及部分积交换电路03,所述第一乘法运算电路01包括第一修正编码支路11、第一选择支路12以及第一修正压缩支路13,所述第二乘法运算电路02包括第二修正编码支路21、第二选择支路22以及第二修正压缩支路23;所述第一修正压缩支路13和所述第二修正压缩支路23均包括4-2压缩器,所述4-2压缩器包括选择电路以及全加器;所述第一乘法运算电路01的输出端与所述部分积交换电路03的第一输入端连接,所述部分积交换电路03的第一输出端与所述第一乘法运算电路01的输入端连接,所述部分积交换电路03的第二输出端与所述第二乘法运算电路02的第一输入端连接,所述第二乘法运算电路02的输出端与所述部分积交换电路03的第二输入端连接。
其中,所述第一乘法运算电路01和所述第二乘法运算电路02均包括逻辑门单元,所述逻辑门单元的输入端用于接收接收功能模式选择信号(mode信号),所述功能模式选择信号用于确定所述数据处理器当前可处理的对应数据运算模式,所述部分积交换电路03中包括第三输入端,用于接收所述功能模式选择信号。所述第一修正编码支路11用于对接收到的第一数据进行编码处理,得到第一符号位扩展后的部分积,所述第一选择支路12用于从所述第一符号位扩展后的部分积中选择第一目标编码部分积,所述第一修正压缩支路13用于对所述第一目标编码部分积进行压缩处理,得到第一目标运算结果,所述第二修正编码支路21用于对接收到的第二数据进行编码处理,得到第二符号位扩展后的部分积,所述第二选择支路22用于从所述第二符号位扩展后的部分积中选择第二目标编码部分积,所述第二修正压缩支路23用于对所述第二目标编码部分积进行压缩处理,得到第二目标运算结果,所述部分积交换电路03用于根据所述功能模式选择信号,控制是否对所述第一符号位扩展后的部分积,以及所述第二符号位扩展后的部分积进行交换处理。
具体的,第一乘法运算电路01和第二乘法运算电路02均可以接收一个数据,该数据可以包括两个子数据,这两个子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据,子数据可以作为乘法运算或乘累加运算中的被乘数和乘数。可选的,上述第一数据以及第二数据中的两个子数据均可以拼接后作为一个整体,输入至第一乘法运算电路01或第二乘法运算电路02,还可以分开同步输入至第一乘法运算电路01或第二乘法运算电路02。其中,上述子数据可以为定点数,且位宽可以为2N,两个子数据拼接后得到的数据位宽可以为4N。可选的,上述第一乘法运算电路01可以包括多个具有不同处理功能的运算单元,这些数据处理单元可以为具有二进制编码处理功能的单元,还可以为具有不同处理功能的运算单元。其中,第一乘法运算电路01中的第一修正编码支路11,以及第一乘法运算电路02中的第二修正编码支路21均可以包括多个数据处理运算单元,这些数据处理单元可以为具有二进制编码处理功能的单元,还可以为具有不同处理功能的运算单元;第一乘法运算电路01中的第一修正压缩支路13,以及第一乘法运算电路02中的第二修正压缩支路23均可以包括多个累加处理单元;同时,第一乘法运算电路01中的第一修正编码支路11和第一修正压缩支路13均可以包含逻辑门单元,第二乘法运算电路02中的第二修正编码支路21和第二修正压缩支路23也均可以包含逻辑门单元。可选的,数据处理器在同一次数据运算处理时,第一乘法运算电路01或第二乘法运算电路02,接收到的其中一个子数据可以作为被乘数,另一个子数据可以作为乘数。还可以理解的是,第一符号位扩展后的部分积和第二符号位扩展后的部分积的位宽,均可以等于数据处理器当前可处理乘法运算或乘累加运算时被乘数位宽的2倍。其中,第一符号位扩展后的部分积可以包括符号位扩展后的第一低位部分积,以及符号位扩展后的第一高位部分积;第二符号位扩展后的部分积可以包括符号位扩展后的第二低位部分积,以及符号位扩展后的第二高位部分积。
需要说明的是,数据处理器在同一次数据运算处理时,第一乘法运算电路01、第二乘法运算电路02以及部分积交换电路03,接收到的功能模式选择信号均可以相等;且同一次数据运算处理,数据处理器、第一乘法运算电路01和第二乘法运算电路02可以处理的数据位宽可以相等。可选的,上述功能模式选择信号可以有四种,四种功能模式选择信号分别对应数据处理器可处理四种数据运算模式,四种数据运算模式可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。在本实施例中,N可以等于4、8、16、32以及64等等,对此数据本实施例不做任何限定。例如,若所述第一数据和第二数据均包括两个2N位子数据,则数据处理器根据接收到的不同功能模式选择信号,可以确定当前可处理对应数据运算模式。其中,四种功能模式选择信号可以用二进制数值分别表示为数值00,01,10,11,也可以为其它的表示方式,本实施例并不做任何限定。例如,mode=00可以表征数据处理器当前可处理N位*N位数据的乘法运算,mode=01可以表征数据处理器当前可处理N位*N位数据的乘累加运算,mode=10可以表征数据处理器当前可处理2N位*2N位数据的乘法运算,mode=11可以表征数据处理器当前可处理2N位*N位数据的乘累加运算,还有,四种功能模式选择信号与四种不同数据运算模式之间可以有任意的对应关系,本实施例对此不做任何限定。
进一步地,当数据处理器当前可处理2N位*N位数据的乘累加运算时,部分积交换电路03可以将第一乘法运算电路01得到的符号位扩展后的第一低位部分积或符号位扩展后的第一高位部分积,与第二乘法运算电路02得到的符号位扩展后的第二低位部分积或符号位扩展后的第二高位部分积进行交换处理;还可以理解为,若数据处理器可处理其它三种数据运算模式,此时,数据处理器中的部分积交换电路03可以处于悬空状态(即关闭状态),符号位扩展后的低位部分积和符号位扩展后的高位部分积不做对应交换处理。同时,第一数据和第二数据中的两个子数据位宽均为2N,若数据处理器当前可处理一个N位*N位数据的乘法运算时,该情况下,第一数据和第二数据中有一个数据为全0数据,另一个数据中两个子数据的高位数值均为数值0,或者低位数值均为数值0;根据实际数据运算模式,此时第一数据和第二数据可以按照原始数据进行计算,选择支路可以直接将修正编码支路得到符号位扩展后的部分积,作为目标编码部分积进行压缩处理得到目标运算结果。若数据处理器当前可处理一个2N位*2N位数据的乘法运算时该情况下,第一数据和第二数据中有一个数据为全0数据,另一个数据的两个子数据中高位数值和低位数值均为非0数值。若数据处理器当前可处理两个2N位*2N位数据的乘法运算时,该情况下,第一数据和第二数据中不存在全0数据。
本实施例提供的一种数据处理器,数据处理器通过第一乘法运算电路和第二乘法运算电路分别对接收到的数据进行编码处理,得到符号位扩展后的部分积,并通过部分积交换电路控制是否对第一乘法运算电路得到的第一符号位扩展后的部分积,与第二乘法运算电路得到的第二符号位扩展后的部分积进行交换处理,以得到第一目标编码部分积以及第二目标编码部分积,进而通过第一修正压缩支路对第一目标编码部分积进行压缩处理,以及通过第二修正压缩支路对第二目标编码部分积进行压缩处理得到目标运算结果;该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗;另外,该数据处理器通过修正压缩支路对符号位扩展后的部分积进行压缩处理,可以进一步降低数据处理器的功耗。
图2为另一实施例提供的一种数据处理器的具体结构示意图。所述数据处理器中的第一乘法运算电路01包括第一修正编码支路11,所述第一修正编码支路11包括:第一修正布斯编码子电路111;所述数据处理器中的第一乘法运算电路01包括第一选择支路12,所述第一选择支路12包括:第一部分积选择子电路121;所述第一修正布斯编码子电路111的输出端与所述第一部分积选择子电路121的第一输入端连接,所述第一部分积选择子电路121的第二输入端与所述部分积交换电路03的第一输出端连接,所述第一部分积选择子电路121的输出端与所述第一修正压缩支路13的第一输入端连接。
其中,所述第一修正布斯编码子电路111用于对接收到的所述第一数据进行布斯编码处理得到第一目标编码,并根据所述第一目标编码得到所述第一符号位扩展后的部分积,所述第一部分积选择子电路121用于接收所述部分积交换电路03输出的所述第二符号位扩展后的部分积,以及对所述第一符号位扩展后的部分积进行选择,并且将所述部分积交换电路03输出的所述第二符号位扩展后的部分积,以及选择后得到的所述第一符号位扩展后的部分积,作为所述第一目标编码部分积输入至所述第一修正压缩支路13。
具体的,上述第一修正布斯编码子电路111可以包括多个具有不同处理功能的运算单元。可选的,第一修正布斯编码子电路111可以对接收到的第一数据进行布斯编码处理,相当于第一修正布斯编码子电路111可以对接收到的乘数进行布斯编码处理得到第一目标编码,并根据接收到的被乘数以及第一目标编码,得到第一符号位扩展后的部分积,该第一符号位扩展后的部分积的位宽可以等于数据处理器当前可处理数据位宽的2倍。可选的,上述第一目标编码可以包括第一低位目标编码和第一高位目标编码。示例性的,数据处理器接收到的是16比特位宽的数据,若数据处理器当前可处理8位*8位数据的乘法运算,则数据处理器中的第一修正布斯编码子电路111可以将16比特位宽的数据划分成,高8位和低8位两组数据分别进行同步运算处理,此时,得到的第一符号位扩展后的部分积的位宽可以等于16;若数据处理器当前可处理16位*16位数据的乘法运算,则数据处理器中的第一修正布斯编码子电路111可以对整体16位数据进行运算处理,此时得到的符号位扩展后的部分积的位宽可以等于32。
可选的,继续参见图2所示,所述数据处理器中的第二乘法运算电路02包括第二修正编码支路21,所述第二修正编码支路21包括:第二修正布斯编码子电路211;所述数据处理器中的第二乘法运算电路02包括第二选择支路22,所述第二选择支路22包括:第二部分积选择子电路221;所述第二修正布斯编码子电路211的输出端与所述第二部分积选择子电路221的第一输入端连接,所述第二部分积选择子电路221的第二输入端与所述部分积交换电路03的第二输出端连接,所述第二部分积选择子电路221的输出端与所述第二修正压缩支路23的第一输入端连接。其中,所述第二修正布斯编码子电路211用于对接收到的所述第二数据进行布斯编码处理得到第二目标编码,并根据所述目标编码得到所述第二符号位扩展后的部分积,所述第二部分积选择子电路221用于接收所述部分积交换电路03输出的所述第二符号位扩展后的部分积,以及对所述第二符号位扩展后的部分积进行选择,并且将所述部分积交换电路03输出的所述第一符号位扩展后的部分积,以及选择后得到的所述第二符号位扩展后的部分积,作为所述第二目标编码部分积输入至所述第二修正压缩支路23。
可以理解的是,上述第二目标编码可以包括第二低位目标编码和第二高位目标编码。需要说明的是,第二乘法运算电路02的具体电路结构和具体功能,与第一乘法运算电路01的具体电路结构和具体功能可以相同;其中,第二乘法运算电路02处理数据的方法与第一乘法运算电路01处理数据的方法基本相同,本实施例对第二乘法运算电路02处理数据的方法不再赘述。另外,第二修正编码支路21的具体电路结构和具体功能,与第一修正编码支路11的具体电路结构和具体功能可以相同。
本实施例提供的数据处理器,数据处理器通过第一修正编码电路对接收到的第一数据进行布斯编码处理得到第一符号位扩展后的部分积,并数据处理器根据当前可处理的数据运算模式,通过第一部分积选择子电路对第一符号位扩展后的部分积进行选择处理,以得到第一目标编码部分积,通过第一修正压缩支路对第一目标编码部分积进行压缩处理得到目标运算结果;上述数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘累加或乘法运算操作,从而降低了数据处理器的功耗;同时,该数据处理器不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性。
作为其中一个实施例,参见图3所示的第一修正布斯编码子电路111的具体电路结构图,所述第一修正布斯编码子电路111包括:第一修正布斯编码单元1111、第一低位部分积获取单元1112、第一低位选择器组单元1113、第一低位与逻辑单元1114、第一高位部分积获取单元1115、第一高位选择器组单元1116以及第一高位与逻辑单元1117;所述第一修正布斯编码单元1111的第一输出端与所述第一低位部分积获取单元1112的第一输入端连接,所述第一低位选择器组单元1113的输出端与所述第一低位部分积获取单元1112的第二输入端连接,所述第一低位与逻辑单元1114的输出端与所述第一低位部分积获取单元1112的第三输入端连接,所述第一修正布斯编码单元1111的第二输出端与所述第一高位部分积获取单元1115的第一输入端连接,所述第一高位选择器组单元1116的输出端与所述第一高位部分积获取单元1115的第二输入端连接,所述第一高位与逻辑单元1117的输出端与所述第一高位部分积获取单元1115的第三输入端连接。
其中,所述第一修正布斯编码单元1111用于根据接收到的所述功能模式选择信号确定所述第一乘法运算电路01当前可处理数据的位宽,并对接收到的所述第一数据进行布斯编码处理得到第一低位目标编码以及第一高位目标编码,所述第一低位部分积获取单元1112用于根据接收到的所述第一低位目标编码以及所述第一数据,得到第一符号位扩展后的低位部分积,所述第一低位选择器组单元1113用于选通所述第一符号位扩展后的低位部分积中的第一数值,所述第一低位与逻辑单元1114用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的低位部分积中的第二数值,所述第一高位部分积获取单元1115用于根据接收到的所述第一高位目标编码以及所述第一数据,得到第一符号位扩展后的高位部分积,所述第一高位选择器组单元1116用于选通所述第一符号位扩展后的高位部分积中的第三数值,所述第一高位与逻辑单元1117用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一符号位扩展后的高位位部分积中的第四数值。
可选的,继续参见图3,所示第一修正布斯编码子电路111中的第一修正布斯编码单元1111包括低位布斯编码单元11111、与逻辑单元11112以及高位布斯编码单元11113,所述低位布斯编码单元11111的输出端与所述与逻辑单元11112的输入端连接,所述与逻辑单元11112的输出端与所述高位布斯编码单元11113的输入端连接;所述低位布斯编码单元11111用于对接收到的所述第一数据中的低位数据进行布斯编码处理得到第一低位目标编码,所述与逻辑单元11112用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第一数据中的高位数据进行布斯编码处理时的补位数值,所述高位布斯编码单元11113用于对接收到的所述第一数据中的高位数据和所述补位数值进行布斯编码处理得到第一高位目标编码。
具体的,上述第一修正布斯编码单元1111可以接收第一数据,并对该第一数据进行布斯编码处理,得到第一低位目标编码和第一高位目标编码,该第一数据可以为乘法运算中的乘数,第一低位目标编码和第一高位目标编码可以统称为第一目标编码。可选的,上述第一低位部分积获取单元1112可以根据接收到的第一数据,以及第一修正布斯编码单元1111得到的第一低位目标编码,得到第一符号位扩展后的低位部分积;第一高位部分积获取单元1115可以根据接收到的第一数据,以及第一修正布斯编码单元1111得到的第一高位目标编码,得到第一符号位扩展后的高位部分积;上述第一数据可以为乘法运算中的被乘数。可选的,若数据处理器当前可处理的数据位宽为N比特,数据处理器中的第一修正布斯编码单元1111接收到的第一数据位宽为2N,则第一修正布斯编码单元1111可以自动将接收到2N位第一数据拆分成高N位数据以及低N位数据,并同步对高N位数据和低N位数据进行布斯编码处理;其中,高N位数据得到的第一目标编码的数量可以等于N/2,还可以等于这些第一目标编码得到的第一符号位扩展后的部分积的数量,第一符号位扩展后的部分积的位宽可以等于2N;低N位数据得到的第一目标编码的数量可以等于N/2,还可以等于这些第一目标编码得到的第一符号位扩展后的部分积的数量,第一符号位扩展后的部分积的位宽可以等于2N。若数据处理器当前可处理的数据位宽为2N,数据处理器中的第一修正布斯编码单元1111接收到的第一数据位宽为2N,则第一修正布斯编码单元1111可以对接收到2N位第一数据进行自动补位数据,然后对补位后的第一数据进行布斯编码处理,得到N位第一目标编码。
进一步地,数据处理器接收到的数据均可以包括低位数据以及高位数据,若该数据为“y7y6y5y4y3y2y1y0”,则高位数据可以为“y7y6y5y4”,低位数据可以为“y3y2y1y0”;也就是,若数据位宽为N时,则数据中高N位数值可以称为高位数据,低N位数值可以称为低位数据。需要说明的是,无论数据处理器当前可处理的数据位宽和数据处理器接收到的数据位宽是否相同,实现布斯编码处理时,数据处理器仅需要通过低位布斯编码单元11111对低位数据进行补位处理,不需要通过高位布斯编码单元11113对高位数据进行补位处理。
例如,若数据处理器当前可处理的数据位宽为N比特,且接收到的第一数据(即乘数和被乘数)的位宽均为2N,此时,数据处理器中的第一修正布斯编码单元1111可以将2N位第一数据拆分为低N位数据和高N位数据分别进行同步布斯编码处理,第一修正布斯编码单元1111中的低位布斯编码单元11111可以对低N位数据进行补位数据,并对补位处理后的低位数据进行布斯编码处理,得到第一低位目标编码;同时,在该数据运算模式下,mode信号可以等于数值0,与逻辑单元11112可以对该mode信号以及低N位数据中的最高位数值进行与逻辑运算,并将与逻辑运算结果发送至高位布斯编码单元11113;高位布斯编码单元11113将该与逻辑运算结果作为高N位数据进行布斯编码处理时的补位数值,将该补位数值和高N位数据结合得到(N+1)位数据,高位布斯编码单元11113对这(N+1)位数据进行进行布斯编码处理得到第一高位目标编码。
另外,若数据处理器当前可处理的数据位宽为2N比特,此时,与逻辑单元11112可以不进行与逻辑运算,直接将接收到的低位数据中的最高位数值输出发送至高位布斯编码单元11113;高位布斯编码单元11113将该低位数据中的最高位数值作为高N位数据进行布斯编码处理时的补位数值,将该补位数值和高N位数据结合得到(N+1)位数据,高位布斯编码单元11113对这(N+1)位数据进行进行布斯编码处理得到第一高位目标编码。实际上,高位布斯编码单元11113对高N位数据不需要做补位处理,直接可以将接收到的低位数据与mode信号进行与逻辑运算,将逻辑运算结果作为高N位数据进行布斯编码处理时的补位数值。
需要说明的是,上述第一低位选择器组单元1113可以根据接收到的功能模式选择信号,选通第一符号位扩展后的低位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的低位部分积中的数值,还是为2N位乘法运算得到的符号位扩展后的低位部分积中的数值;同理,第一高位选择器组单元1116可以根据接收到的功能模式选择信号,选通第一符号位扩展后的高位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的高位部分积中的数值,还是为2N位乘法运算得到的符号位扩展后的高位部分积中的数值。
进一步地,上述第一低位与逻辑单元1114可以根据接收到的功能模式选择信号进行与逻辑运算得到逻辑运算结果,并将逻辑运算结果输出,作为第一符号位扩展后的低位部分积中的部分位数值,为2N位乘法运算得到的符号位扩展后的低位部分积中的数值;第一低位与逻辑单元1114还可以根据接收到的功能模式选择信号进行与逻辑运算得到逻辑运算结果,并将逻辑运算结果作为第一符号位扩展后的低位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的低位部分积中的数值。同理,第一高位与逻辑单元1117可以根据接收到的功能模式选择信号进行与逻辑运算得到逻辑运算结果,并将逻辑运算结果输出,作为第一符号位扩展后的高位部分积中的部分位数值,为2N位乘法运算得到的第一符号位扩展后的高位部分积中的数值;第一高位与逻辑单元1117还可以根据接收到的功能模式选择信号进行与逻辑运算得到逻辑运算结果,并将逻辑运算结果作为第一符号位扩展后的高位部分积中的部分位数值,为N位乘法运算得到的符号位扩展后的高位部分积中的数值。其中,第一低位与逻辑单元1114与第一低位选择器组单元1113,输出第一符号位扩展后的低位部分积中的部分位数值分别对应符号位扩展后的低位部分积中的不同位数值;第一高位与逻辑单元1117与第一高位选择器组单元1116,输出第一符号位扩展后的高位部分积中的部分位数值分别对应符号位扩展后的高位部分积中的不同位数值。
可以理解的是,若数据处理器接收到的数据位宽可以为2N比特,当前可处理N位数据乘法运算,则数据处理器中的第一低位部分积获取单元1112可以根据每个第一低位目标编码,得到低N位数据对应的符号位扩展后的部分积;上述第一低位选择器组单元1113可以选通第一符号位扩展后的低位部分积中的第一数值;上述第一低位与逻辑单元1114可以将最终输出的结果作为第一符号位扩展后的低位部分积中的第二数值;然后第一低位部分积获取单元1112将符号位扩展后的部分积、选通后获取的第一符号位扩展后的低位部分积中的第一数值,以及与逻辑运算得到的第一符号位扩展后的低位部分积中的第二数值进行结合,得到第一符号位扩展后的低位部分积。可选的,第一修正布斯编码子电路111包含的第一低位部分积获取单元1112的数量,可以等于第一乘法运算电路01当前可处理的数据位宽的1/4(图3仅示出了第一修正布斯编码子电路111中的一个第一低位部分积获取单元1112的电路结构示意图)。
还可以理解的是,数据处理器中的第一高位部分积获取单元1115可以根据第一高位目标编码得到高N位数据对应的符号位扩展后的部分积;上述第一高位选择器组单元1116可以选通第一符号位扩展后的高位部分积中的第三数值;所述第一高位与逻辑单元1117可以将最终输出的逻辑运算结果作为第一符号位扩展后的高位部分积中的第四数值;然后第一高位部分积获取单元1115将符号位扩展后的部分积、选通后获取的第一符号位扩展后的高位部分积中的第三数值,以及与逻辑运算得到的第一符号位扩展后的高位部分积中的第四数值进行结合,得到第一符号位扩展后的高位部分积。可选的,第一修正布斯编码子电路111包含的第一高位部分积获取单元1115的数量,可以等于第一乘法运算电路01当前可处理的数据位宽的1/4(图3仅示出了第一修正布斯编码子电路111中的一个第一高位部分积获取单元1115的电路结构示意图)。
其中,布斯编码处理过程中,第一修正布斯编码单元1111得到的第一低位目标编码的数量可以等于得到的第一高位目标编码的数量。可选的,上述每个第一低位部分积获取单元1112可以包含2N个数值生成子单元,每个第一高位部分积获取单元1115也可以包含2N个数值生成子单元,每个数值生成子单元可以获取第一修正布斯编码单元1111符号位扩展后的低位部分积中的一位数值,N表示第一乘法运算电路01当前可处理的数据位宽。在本实施例中,第一修正布斯编码单元1111可以包含1个低位布斯编码单元11111以及1个高位布斯编码单元11113;其中,低位布斯编码单元11111得到的每个第一低位目标编码可以按照位置分布顺序,分别输入至对应的一个第一低位部分积获取单元1112中;第一高位部分积获取单元1115得到的每个第一高位目标编码可以按照位置分布顺序,分别输入至对应的一个第一高位部分积获取单元1115中。
可选的,参见图4所示第二修正布斯编码子电路211的具体结构示意图,所述第二修正布斯编码子电路211包括:第二修正布斯编码单元2111、第二低位部分积获取单元2112、第二低位选择器组单元2113、第二低位与逻辑单元2114、第二高位部分积获取单元2115、第二高位选择器组单元2116以及第二高位与逻辑单元2117;所述第二修正布斯编码单元2111的第一输出端与所述第二低位部分积获取单元2112的第一输入端连接,所述第二低位选择器组单元2113的输出端与所述第二低位部分积获取单元2112的第二输入端连接,所述第二低位与逻辑单元2114的输出端与所述第二低位部分积获取单元2112的第三输入端连接,所述第二修正布斯编码单元2111的第二输出端与所述第二高位部分积获取单元2115的第一输入端连接,所述第二高位选择器组单元2116的输出端与所述第二高位部分积获取单元2115的第二输入端连接,所述第二高位与逻辑单元2117的输出端与所述第二高位部分积获取单元2115的第三输入端连接。
其中,所述第二修正布斯编码单元2111用于根据接收到的所述功能模式选择信号确定所述第二乘法运算电路02当前可处理数据的位宽,并对接收到的所述第二数据进行布斯编码处理得到第二低位目标编码以及第二高位目标编码,所述第二低位部分积获取单元2112用于根据接收到的所述第二低位目标编码以及所述第二数据,得到第二符号位扩展后的低位部分积,所述第二低位选择器组单元2113用于选通所述第二符号位扩展后的低位部分积中的第五数值,所述第二低位与逻辑单元2114用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的低位部分积中的第六数值,所述第二高位部分积获取单元2115用于根据接收到的所述第二高位目标编码以及所述第二数据,得到第二符号位扩展后的高位部分积,所述第二高位选择器组单元2116用于选通所述第二符号位扩展后的高位部分积中的第七数值,所述第二高位与逻辑单元2117用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二符号位扩展后的高位位部分积中的第八数值。
需要说明的是,第二修正布斯编码子电路211对目标编码的处理方法与第一修正布斯编码子电路111对目标编码的处理方法可以相同,具体实现方式不再赘述。可选的,第二修正布斯编码子电路211与第一修正布斯编码子电路111的内部电路结构,以及外部输出端口的功能也可以相同。
可选的,继续参见图4所示,所述第二修正布斯编码子电路211中的第二修正布斯编码单元2111包括:低位布斯编码单元21111、与逻辑单元21112以及高位布斯编码单元21113,所述低位布斯编码单元21111用于对接收到的所述第二数据中的低位数据进行布斯编码处理得到第二低位目标编码,所述与逻辑单元21112用于根据接收到的所述功能模式选择信号进行与逻辑运算,得到所述第二数据中的高位数据进行布斯编码处理时的补位数值,所述高位布斯编码单元21113用于对接收到的所述第二数据中的高位数据进行布斯编码处理得到第二高位目标编码。
进一步地,第二修正布斯编码单元2111对目标编码的处理方法与第一修正布斯编码单元1111对目标编码的处理方法可以相同,具体实现方式不再赘述。可选的,第二修正布斯编码单元2111与第一修正布斯编码单元1111的内部电路结构,以及外部输出端口的功能也可以相同。
本实施例提供的一种数据处理器,数据处理器通过修正布斯编码子电路中的修正布斯编码单元,对接收到的数据进行布斯编码处理,得到低位目标编码及高位目标编码,并且低位部分积获取单元和高位部分积获取单元根据低位目标编码及高位目标编码,分别得到符号位扩展后的低位部分积以及符号位扩展后的高位部分积,进而通过修正压缩支路对符号位扩展后的低位部分积以及符号位扩展后的高位部分积进行累加处理,以得到目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性;另外,数据处理器通过修正压缩支路对符号位扩展后的部分积进行累加运算,还可以有效降低数据处理器功耗。
作为其中一个实施例,继续参见图3,所述第一修正布斯编码子电路111中的第一修正布斯编码单元1111包括低位布斯编码单元11111,所述低位布斯编码单元11111包括:低位数据输入端口111111、低位目标编码输出端口111112以及高位数值输出端口111113。所述低位数据输入端口111111用于接收进行布斯编码处理的所述第一数据中的低位数据,所述低位目标编码输出端口111112用于输出对第一数据中的所述低位数据进行布斯编码处理后,得到的第一低位目标编码,所述高位数值输出端口111113用于输出所述低位数据中的最高位数值。
具体的,运算处理过程中,第一修正布斯编码子电路111可以对乘法运算或乘累加运算时的乘数(即第一数据中的两个子数据)进行布斯编码处理,第一修正布斯编码子电路111中的低位布斯编码单元11111可以通过低位目标编码输出端口111112,接收两个子数据对应低位数据,低位数据中的相邻三位数值可以作为一组待编码数据。其中,每个低位布斯编码单元11111对接收到的待编码数据处理后,将得到的每个第一低位目标编码可以通过低位目标编码输出端口111112输出,并发送至对应的第一低位部分积获取单元1112。另外,第一修正布斯编码子电路111中的第一个低位布斯编码单元11111,通过低位目标编码输出端口111112还可以接收补位数值0,以及低位数据中的低两位数值。
例如,若数据处理器接收到的一个子数据(即乘数)为16比特位宽的子数据“y15y1 4y13y12y11y10y9y8y7y6y5y4y3y2y1y0”,从最低位数值至最高位数值对应的编号为数值0,…,15,低位布斯编码单元11111可以对低位数据y7y6y5y4y3y2y1y0进行布斯编码处理,布斯编码处理前对8位低位数据进行补位处理后得到9位数据y7y6y5y4y3y2y1y00,低位布斯编码单元11111可以分别对y7y6y5y4y3y2y1y00中y7y6y5,y5y4y3,y3y2y1,y1y00这四组子数据,分别进行同步布斯编码处理,通过低位布斯编码单元11111中的低位目标编码输出端口111112可以接收9位子数据划分后的四组子数据中相邻的三位数值。
需要说明的是,每一次布斯编码处理时,可以将低位数据进行补位处理后的子数据划分成多组待编码子数据,低位布斯编码单元11111可以同步对划分后的多组待编码子数据进行布斯编码处理。可选的,划分多组待编码子数据的方式可以表征为将补位处理后的子数据中相邻的每3位数值作为一组待编码子数据,每组待编码子数据中的最高位数值,可以作为相邻下一组待编码子数据中的最低位数值。可选的,布斯编码处理得到目标编码的方式可以参见表1,其中,表1中的y2i+1,y2i和y2i-1可以表示每组待编码子数据(即乘数)对应的数值,X可以表示数据处理器接收到的第二数据中的子数据(即被乘数),对每组对应待编码子数据进行布斯编码处理后,得到对应的目标编码PPi(i=0,1,2,...,n)。可选的,根据表1所示,布斯编码处理后得到的目标编码可以包括五类,分别为-2X,2X,-X,X和0。示例性的,若数据处理器接收到的被乘数为“x7x6x5x4x3x2x1x0”,则X可以表示为“x7x6x5x4x3x2x1x0”。
表1
Figure BDA0002334704050000201
示例性的,继续参见上述示例,当i=0时,y2i+1=y1,y2i=y0,y2i-1=y-1,则y-1可以表示y0后的补位数值0(即补位处理后的乘数表示为y7y6y5y4y3y2y1y0y-1),布斯编码过程中,可以对y-1y0y1,y1y2y3,y3y4y5和y5y6y7四组待编码子数据分别进行布斯编码处理,得到4个低位目标编码,其中,每组待编码子数据中的最高位数值,可以作为相邻下一组待编码子数据中的最低位数值。其中,最后一组待编码子数据的最高位数值可以通过高位数值输出端口111113输入至与逻辑单元11112。
可选的,继续参见图3,所述第一修正布斯编码子电路111中的第一修正布斯编码单元1111包括高位布斯编码单元11113,所述高位布斯编码单元11113包括:高位数据输入端口111131、低位数值输入端口111132以及高位目标编码输出端口111133;所述高位数据输入端口111131用于接收所述第一数据中的高位数据,所述低位数值输入端口111132用于接收所述第一数据中的低位数据中的最高位数值与所述功能模式选择信号进行与逻辑运算得到的第一逻辑运算结果,所述高位目标编码输出端口111133用于输出所述第一高位目标编码。
可以理解的是,每次布斯编码处理时,第一修正布斯编码单元1111中的高位布斯编码单元11113对第一数据中的高位数据进行布斯编码处理的方法,与第一修正布斯编码单元1111中的低位布斯编码单元11111对第一数据中的低位数据进行布斯编码处理的方法相同,本实施例对高位布斯编码单元11113进行布斯编码处理的方法不再赘述。另外,高位布斯编码单元11113与低位布斯编码单元11111的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例不再赘述高位布斯编码单元11113的具体电路结构。
同时,继续参见图4所示,所述数据处理器中的第二修正布斯编码单元2111包括低位布斯编码单元21111,所述低位布斯编码单元21111包括:低位数据输入端口211111、低位目标编码输出端口211112以及高位数值输出端口211113。所述低位数据输入端口211111用于接收进行布斯编码处理的所述第二数据中的低位数据,所述低位目标编码输出端口211112用于输出对第二数据中的所述低位数据进行布斯编码处理后,得到的第二低位目标编码,所述高位数值输出端口211113用于输出所述低位数据中的最高位数值。
还可以理解的是,每次布斯编码处理时,第二修正布斯编码单元2111中的低位布斯编码单元21111对第二数据中的低位数据进行布斯编码处理的方法,与第一修正布斯编码单元1111中的低位布斯编码单元11111对第一数据中的低位数据进行布斯编码处理的方法相同,本实施例对低位布斯编码单元21111进行布斯编码处理的方法不再赘述。另外,低位布斯编码单元21111与低位布斯编码单元11111的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例对低位布斯编码单元21111的具体电路结构不再赘述。
此外,继续参见图4所示,所述第二修正布斯编码单元2111中的高位布斯编码单元21113包括:高位数据输入端口211131、低位数值输入端口211132以及高位目标编码输出端口211133;所述高位数据输入端口211131用于接收所述第一数据中的高位数据,所述低位数值输入端口211132用于接收所述第一数据包含的低位数据中的最高位数值与所述功能模式选择信号进行与逻辑运算得到的第二逻辑运算结果,所述高位目标编码输出端口211133用于输出所述第二高位目标编码。
可以理解的是,每次布斯编码处理时,第二修正布斯编码单元2111中的高位布斯编码单元21113对第二数据中的高位数据进行布斯编码处理的方法,与第一修正布斯编码单元1111中的低位布斯编码单元11111对第一数据中的低位数据进行布斯编码处理的方法相同,本实施例对高位布斯编码单元21113进行布斯编码处理的方法不再赘述。另外,高位布斯编码单元21113与第一修正布斯编码单元1111中的低位布斯编码单元11111的内部电路结构可以相同,外部输出端口的功能也可以相同,本实施例对高位布斯编码单元21113的具体电路结构不再赘述。
本实施例提供的一种数据处理器,数据处理器通过第一修正布斯编码单元中的低位布斯编码单元,对第一数据中的低位数据进行布斯编码处理,得到低位数据对应的第一低位目标编码,并且通过第一低位部分积获取单元根据第一低位目标编码得到第一目标编码低位部分积,进而对第一目标编码低位部分积进行压缩处理,得到不同数据运算模式下对应的目标运算结果;该数据处理器能够实现多种不同数据运算模式处理,从而提高数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
作为其中一个实施例,继续参见图3所示,所述第一修正布斯编码子电路111中的第一修正布斯编码单元1111包括与逻辑单元11112,所述与逻辑单元11112包括:高位数值输入端口111121、模式选择信号输入端口111122以及逻辑运算结果输出端口111123;所述高位数值输入端口111123用于接收所述第一数据包含的低位数据中的最高位数值,所述模式选择信号输入端口111122用于接收所述功能模式选择信号,所述逻辑运算结果输出端口111123用于输出对所述第一数据包含的低位数据中的最高位数值,与所述功能模式选择信号进行与逻辑运算得到的所述第一逻辑运算结果。
具体的,与逻辑单元11112可以对模式选择信号输入端口111122接收到的功能模式选择信号,与高位数值输入端口111121接收到的低位布斯编码单元11111输出的第一数据包含的低位数据中的最高位数值,进行与逻辑运算得到第一逻辑运算结果,并将该第一逻辑运算结果通过逻辑运算结果输出端口111123输出,作为第一数据包含的高位数据进行布斯编码处理时的补位数值。实际上,与逻辑单元11112可以对第一数据包含的低位数据中的最高位数值和表示功能模式选择信号的数值进行与逻辑运算,得到第一数据包含的高位数据进行布斯编码处理时的补位数值。
可选的,继续参见图4所示,所述第二修正布斯编码单元2111中的与逻辑单元21112包括:高位数值输入端口211121、模式选择信号输入端口211122以及逻辑运算结果输出端口211123;所述高位数值输入端口211123用于接收所述第二数据包含的低位数据中的最高位数值,所述模式选择信号输入端口211122用于接收所述功能模式选择信号,所述逻辑运算结果输出端口211123用于输出对所述第二数据包含的低位数据中的最高位数值,与所述功能模式选择信号进行与逻辑运算得到的所述第二逻辑运算结果。
在本实施例中,第二修正布斯编码单元2111中的与逻辑单元21112的具体电路结构和具体功能,与第一修正布斯编码单元1111中的与逻辑单元11112的具体电路结构和具体功能完全相同,本实施例不再赘述第二修正布斯编码单元2111中的与逻辑单元21112的具体电路结构和具体功能,以及数据处理方式。
本实施例提供的一种数据处理器,该数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性。
作为其中一个实施例,继续参见图3所示,所述第一修正布斯编码子电路111中的第一低位部分积获取单元1112包括:低位目标编码输入端口11121、第一选通数值输入端口11122、第二选通数值输入端口11123、第一数据输入端口11124以及低位部分积输出端口11125;所述低位目标编码输入端口11121用于接收所述第一低位目标编码,所述第一选通数值输入端口11122用于接收所述第一低位选择器组单元1113选通后,输出的所述第一符号位扩展后的低位部分积中的第一数值,所述第二选通数值输入端口11123用于接收所述第一低位与逻辑单元1114输出的所述第一符号位扩展后的低位部分积中的第二数值,所述第一数据输入端口11124用于接收所述第一数据,所述低位部分积输出端口11125用于输出所有第一符号位扩展后的低位部分积。
具体的,数据处理器中的第一低位部分积获取单元1112通过低位目标编码输入端口11121,可以接收低位布斯编码单元11111输出的第一低位目标编码,通过第一数据输入端口11124接收第一数据(即乘法运算中的被乘数),根据第一低位目标编码以及第一数据得到第一低位目标编码对应的符号位扩展后的部分积,然后将第一选通数值输入端口11122接收到的第一符号位扩展后的低位部分积中的第一数值、第二选通数值输入端口11123接收到的第一符号位扩展后的低位部分积中的第二数值以及符号位扩展后的部分积进行组合,得到第一符号位扩展后的低位部分积。可选的,若数据处理器当前可处理的数据位宽为2N,则数据处理器中的第一低位部分积获取单元1112可以包含4N个数值生成子单元,每个数值生成子单元可以对应得到第一符号位扩展后的低位部分积中的一位数值,其中,2N个数值生成子单元可以连接2N个第一低位与逻辑单元1114,N个数值生成子单元可以连接N个选择器,还有剩余的N个数值生成子单元不连接第一低位与逻辑单元1114和选择器;剩余的N个数值生成子单元可以为第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N位数值之间对应位数值生成子单元。其中,数值生成子单元的数量可以等于第一乘法运算电路01当前可处理数据位宽的2倍。其中,每个第一低位部分积获取单元1112中4N个数值生成子单元的位置分布可以描述为:每个第一低位部分积获取单元1112中相同位数值生成子单元均位于同一列。
示例性的,若数据处理器可处理2N位数据运算,第一低位部分积获取单元1112接收到一个2N比特位宽的被乘数X,则第一低位部分积获取单元1112可以根据被乘数X与第一高位目标编码得到对应的4N位第一符号位扩展后的低位部分积,该第一符号位扩展后的低位部分积中的低(2N+1)位数值可以等于第一低位目标编码直接得到的原始低位部分积中的所有数值,第一符号位扩展后的低位部分积中的高(2N-1)位数值可以等于该原始低位部分积中的符号位数值,该符号位数值也就是原始低位部分积的最高位数值。当第一低位目标编码为-2X时,则原始低位部分积可以为对X进行左右一位后取反再加1;当第一低位目标编码为2X时,则原始低位部分积可以为对X进行左移一位;当第一低位目标编码为-X时,则原始低位部分积可以为对X按位取反再加1;当第一低位目标编码为X时,则原始低位部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据;当第一低位目标编码为±0时,则原始低位部分积可以为0,也就是原始低位部分积中的每一位数值均等于0。
进一步地,所有第一低位部分积获取单元1112得到的所有第一符号位扩展后的低位部分积的分布形式可以表征为,第一个第一符号位扩展后的低位部分积中的最低位数值,与其它第一符号位扩展后的低位部分积中的最低位数值均位于同一列;第一个第一符号位扩展后的低位部分积中的其它位数值与其它第一符号位扩展后的低位部分积中的对应位数值均位于同一列。
可选的,继续参见图4所示,所述第二修正布斯编码子电路211中的第二低位部分积获取单元2112包括:低位目标编码输入端口21121、第五选通数值输入端口21122、第六选通数值输入端口21123、第二数据输入端口21124以及低位部分积输出端口21125;所述低位目标编码输入端口21121用于接收所述第二低位目标编码,所述第五选通数值输入端口21122用于接收所述第二低位选择器组单元2113选通后,输出的所述第二符号位扩展后的低位部分积中的第五数值,所述第六选通数值输入端口21123用于接收所述第二低位与逻辑单元2114输出的所述第二符号位扩展后的低位部分积中的第六数值,所述第二数据输入端口21124用于接收所述第二数据,所述低位部分积输出端口21125用于输出所有第二符号位扩展后的低位部分积。
可以理解的是,上述第二修正布斯编码子电路211中的第二低位部分积获取单元2112的电路结构和具体功能,与第一修正布斯编码子电路111中第一低位部分积获取单元1112的电路结构和具体功能相同,因此,本实施例对第二低位部分积获取单元2112的电路结构和具体功能不再赘述。可选的,第二低位部分积获取单元2112和第一低位部分积获取单元1112对数据处理的方式也相同,对此本实施例也不再赘述。
本实施例提供的一种数据处理器,该数据处理器可以通过第一低位部分积获取单元根据接收到的第一低位目标编码,以及接收到的第一数据中的被乘数,得到第一符号位扩展后的低位部分积,进而通过第一修正压缩支路对第一符号位扩展后的低位部分积进行压缩运算,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性。
在其中一个实施例中,继续参见图3所示,所述第一修正布斯编码子电路111中的第一低位选择器组单元1113包括:低位选择器11131,多个所述低位选择器11131用于选通所述第一符号位扩展后的低位部分积中的第一数值。
具体的,上述第一低位选择器组单元1113中低位选择器11131的数量,可以等于N2/2,2N可以表示第一乘法运算电路01当前可以处理的数据位宽,该第一低位选择器组单元1113中每个低位选择器11131的内部电路结构可以相同。可选的,乘法运算时,第一修正布斯编码子电路111连接的对应N/2个第一低位部分积获取单元1112中,每个第一低位部分积获取单元1112可以包含4N个数值生成子单元,其中N个数值生成子单元可以连接N个低位选择器11131,这N个数值生成子单元均分别可以连接一个低位选择器11131。可选的,N个低位选择器11131对应的N个数值生成子单元,可以为第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(N+1)位至第2N位数值之间对应位数值生成子单元;同时,该N个低位选择器11131的外部输入端口除了模式选择信号输入端口(mode信号输入端口)外,还有其它两个输入端口。可选的,若数据处理器可以处理n种不同位宽的数据运算,并且数据处理器接收到的数据位宽为2N,则上述低位选择器11131的其它两个输入端口接收的信号分别可以为,数据处理器进行2N位数据运算,得到的符号位扩展后的部分积中的符号位数值;以及数据处理器进行2N位数据运算,得到的符号位扩展后的部分积中的对应位数值。可选的,若数据处理器进行2N位数据运算时,每个低位选择器11131选通的是2N位数据运算得到的符号位扩展后的部分积中的对应位数值,即第一数值;若数据处理器进行N位数据运算时,每个低位选择器11131选通的是N位数据运算得到的符号位扩展后的部分积中的符号位数值,即第一数值。
可选的,继续参见图3所示,所述第一修正布斯编码子电路111中的第一高位选择器组单元1116包括:高位选择器11161,多个所述高位选择器11161用于选通所述第一符号位扩展后的高位部分积中的第三数值。
需要说明的是,第一高位选择器组单元1116中高位选择器11161的数量,可以等于N2/2,2N可以表示数据处理器当前所处理数据的位宽,该第一高位选择器组单元1116中每一个高位选择器11161的内部电路结构可以相同。可选的,乘法运算时,修正布斯编码单元111连接的对应N/2个第一高位部分积获取单元1115中,每一个第一高位部分积获取单元1115可以包含4N个数值生成子单元,其中N个数值生成子单元可以连接N个高位选择器11161,这N个数值生成子单元均分别可以连接一个高位选择器11161。可选的,N个高位选择器11161对应的N个数值生成子单元,可以为符号位扩展后的高位部分积中,对应从最高位(即第1位)向最低位算起,第(3N+1)位至第4N位数值之间对应位数值生成子单元;同时,该N个高位选择器11161的外部输入端口除了模式选择信号输入端口(mode信号输入端口)外,还有其它两个输入端口。可选的,若数据处理器可以处理n种不同位宽的数据运算,并且数据处理器接收到的数据的位宽为2N,则上述高位选择器11161的其它两个输入端口接收的信号分别可以为,数据处理器进行N位数据运算,得到的符号位扩展后的部分积中的符号位数值,和数据处理器进行2N位数据运算,得到的符号位扩展后的部分积中的符号位数值。可选的,若数据处理器进行不同位宽的数据运算时,高位选择器11161选通的是第三数值可以为对应位数据运算时,得到的符号位扩展后的部分积中的符号位数值。
可选的,继续参见图4,所述第二修正布斯编码子电路211中的第二低位选择器组单元2113包括:低位选择器21131,多个所述低位选择器21131用于选通所述第二符号位扩展后的低位部分积中的第五数值。
在本实施例中,上述第二修正布斯编码子电路211中的第二低位选择器组单元2113的电路结构和具体功能,与第一修正布斯编码子电路111中的第一低位选择器组单元1113的电路结构和具体功能可以完全相同,第二低位选择器组单元2113与第一低位选择器组单元1113对数据处理的方式也可以相同,对此本实施例不再赘述。
可选的,继续参见图4,所述第二修正布斯编码子电路211中的第二高位选择器组单元2116包括:高位选择器21161,多个所述高位选择器21161用于选通所述第二符号位扩展后的高位部分积中的第七数值。
在本实施例中,上述第二修正布斯编码子电路211中的第二高位选择器组单元2116的电路结构和具体功能,与第一修正布斯编码子电路111中的第一低位选择器组单元1113的电路结构和具体功能可以完全相同,第二高位选择器组单元2116与第一低位选择器组单元1113对数据处理的方式也可以相同,对此本实施例不再赘述。
本实施例提供的一种数据处理器,该数据处理器可以通过第一低位选择器组单元选通第一符号位扩展后的低位部分积中的部分位数值,以得到第一符号位扩展后的低位部分积,进而通过修正压缩支路对第一符号位扩展后的低位部分积进行压缩运算,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性。
作为其中一个实施例,继续参见图3所示,所述第一修正布斯编码子电路111中的第一低位与逻辑单元1114包括:第一模式选择信号输入端口11141、第一符号位数值输入端口11142以及第一结果输出端口11143;其中,所述第一模式选择信号输入端口11141用于接收所述功能模式选择信号,所述第一符号位数值输入端口11142用于接收所述符号位扩展后的低位部分积中的第一符号位数值,所述第一结果输出端口11143用于输出对所述功能模式选择信号与所述第一符号位数值进行与逻辑运算得到的第三逻辑运算结果,即所述第二数值。
具体的,若数据处理器接收的数据为2N位,且数据处理器中的第一模式选择信号输入端口11141接收到的功能模式选择信号为数值0,此时,数据处理器可以对N位数据进行乘法运算,并且第一低位与逻辑单元1114可以对该功能模式选择信号与第一符号位数值输入端口11142接收到的第一符号位数值进行与逻辑运算得到第三逻辑运算结果,并将第三逻辑运算结果通过第一结果输出端口11143输出,发送至第一低位部分积获取单元1112,其中,该第三逻辑运算结果可以作为第一符号位扩展后的低位部分积中的第二数值。可选的,第一低位与逻辑单元1114通过第一符号位数值输入端口11142可以接收其它部分积获取电路发送的第一符号位数值,上述其它部分积获取电路可以为数据处理器内部的其它部分积获取电路,或者数据处理器外的其它处理器中的部分积获取电路。可选的,若数据处理器中的第一模式选择信号输入端口11141接收到的功能模式选择信号为数值1,此时,数据处理器可以对2N位数据进行乘法运算,并且第一低位与逻辑单元1114可以对功能模式选择信号与第一符号位数值输入端口11142接收到的第一符号位数值进行与逻辑运算得到第三逻辑运算结果,并将第三逻辑运算结果通过第一结果输出端口11143输出,发送至第一高位部分积获取单元1115;其中,第一符号位数值可以等于数据处理器对2N位数据进行乘法运算的过程中,得到的符号位扩展后的部分积中的符号位数值。另外,若数据处理器当前可处理的数据位宽也为2N,则数据处理器中的第一低位部分积获取单元1112包含的4N个数值生成子单元中,连接N个第一低位与逻辑单元1114的N个数值生成子单元可以第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第4N位数值之间对应位数值生成子单元。
可选的,继续参见图3所示,所述第一修正布斯编码子电路111中的第一高位与逻辑单元1117包括:第二模式选择信号输入端口11171、第二符号位数值输入端口11172以及第二结果输出端口11173;其中,所述第二模式选择信号输入端口11171用于接收所述功能模式选择信号,所述第二符号位数值输入端口11172用于接收所述符号位扩展后的高位部分积中的第二符号位数值,所述第二结果输出端口11173用于输出对所述功能模式选择信号与所述第二符号位数值进行与逻辑运算得到的第四逻辑运算结果,即所述第四数值。
需要说明的是,若数据处理器接收的数据为2N位,且数据处理器中的第二模式选择信号输入端口11171接收到的功能模式选择信号为数值0,此时,数据处理器可以对N位数据进行乘法运算,并且第一高位与逻辑单元117可以对该功能模式选择信号与第二符号位数值输入端口11172接收到的第二符号位数值进行与逻辑运算得到第四逻辑运算结果,并将第四逻辑运算结果通过第二结果输出端口11173输出;若数据处理器中的第二模式选择信号输入端口11171接收到的功能模式选择信号为数值1,此时,数据处理器可以对2N位数据进行乘法运算,并且第一高位与逻辑单元1117可以对功能模式选择信号与第二符号位数值输入端口11172接收到的第二符号位数值进行与逻辑运算得到第四逻辑运算结果,并将第四逻辑运算结果通过第二结果输出端口11173输出;其中,第二符号位数值可以等于数据处理器对2N位数据进行乘法运算的过程中,得到符号位扩展后的高位部分积中的符号位数值。另外,若数据处理器当前可处理的数据位宽也为2N,则数据处理器中的第一高位部分积获取单元1115包含的4N个数值生成子单元中,连接2N个第一高位与逻辑单元1117的N个数值生成子单元可以第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第2N位数值之间对应位数值生成子单元。
可选的,继续参见图4所示,所述第二修正布斯编码子电路211中的第二低位与逻辑单元2114包括:第三模式选择信号输入端口21141、第三符号位数值输入端口21142以及第三结果输出端口21143;其中,所述第三模式选择信号输入端口21141用于接收所述功能模式选择信号,所述第三符号位数值输入端口21142用于接收所述符号位扩展后的低位部分积中的第三符号位数值,所述第一结果输出端口21143用于输出对所述功能模式选择信号与所述第三符号位数值进行与逻辑运算得到的第五逻辑运算结果。
可以理解的是,上述第五逻辑运算结果可以为第二符号位扩展后的低位部分积中的第六数值。在本实施例中,上述第二低位与逻辑单元2114的电路结构和具体功能,与第一低位与逻辑单元1114的电路结构和具体功能可以完全相同,第二低位与逻辑单元2114与第一低位与逻辑单元1114对数据处理的方式也可以相同,对此本实施例不再赘述。
可选的,继续参见图4所示,所述第二修正布斯编码子电路211中的第二高位与逻辑单元2117包括:第四模式选择信号输入端口21171、第四符号位数值输入端口21172以及第四结果输出端口21173;其中,所述第二模式选择信号输入端口21171用于接收所述功能模式选择信号,所述第四符号位数值输入端口21172用于接收所述符号位扩展后的高位部分积中的第四符号位数值,所述第四结果输出端口21173用于输出对所述功能模式选择信号与所述第四符号位数值进行与逻辑运算得到的第六逻辑运算结果。
还可以理解的是,上述第六逻辑运算结果可以为第二符号位扩展后的低位部分积中的第八数值。在本实施例中,上述第二高位与逻辑单元2117的电路结构和具体功能,与第一低位与逻辑单元1114的电路结构和具体功能可以完全相同,第二高位与逻辑单元2117与第一低位与逻辑单元1114对数据处理的方式也可以相同,对此本实施例不再赘述。
本实施例提供的一种数据处理器,该数据处理器可以通过第一低位与逻辑单元进行处理得到第一符号位扩展后的低位部分积中的部分位数值,进而以得到第一符号位扩展后的低位部分积,并通过修正压缩支路对第一符号位扩展后的低位部分积进行压缩处理,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性。
作为其中一个实施例,继续参见图3所示,所述第一修正布斯编码子电路111中的第一高位部分积获取单元1115包括:高位目标编码输入端口11151、第三选通数值输入端口11152、第四选通数值输入端口11153、第二数据输入端口11154以及高位部分积输出端口11155;所述高位目标编码输入端口11151用于接收所述第一高位目标编码,所述第三选通数值输入端口11152用于接收所述第一高位选择器组单元1116选通后,输出的所述第一符号位扩展后的高位部分积中的第三数值,所述第四选通数值输入端口11153用于接收所述第一高位与逻辑单元1117输出的所述第一符号位扩展后的高位部分积中的第四数值,所述第二数据输入端口11154用于接收所述第二数据,所述高位部分积输出端口11155用于输出所有第一符号位扩展后的高位部分积。
需要说明的是,数据处理器中的第一高位部分积获取单元1115通过高位目标编码输入端口11151,可以接收第一修正布斯编码单元1111输出的第一高位目标编码,通过第二数据输入端口11154接收乘法运算中的被乘数,根据第一高位目标编码以及被乘数得到第一高位目标编码对应的符号位扩展后的部分积,然后将第三选通数值输入端口11152接收到的符号位扩展后的高位部分积中的第三数值、第四选通数值输入端口11153接收到的符号位扩展后的高位部分积中的第四数值以及符号位扩展后的部分积进行组合,得到第一符号位扩展后的高位部分积。
另外,若数据处理器当前可处理的数据位宽也为2N,则数据处理器中的第一高位部分积获取单元1115可以包含4N个数值生成子单元,每个数值生成子单元可以对应第一符号位扩展后的高位部分积中的一位数值;其中,2N个数值生成子单元可以连接2N个第一高位与逻辑单元1117,N个数值生成子单元可以连接N个选择器,还有剩余的N个数值生成子单元不连接第一高位与逻辑单元1117和选择器;剩余的N个数值生成子单元可以为第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第3N位数值之间对应位数值生成子单元。其中,数值生成子单元的数量可以等于数据处理器当前可处理数据位宽的2倍。其中,每一个第一高位部分积获取单元1115中4N个数值生成子单元的位置分布形式可以描述为:每个第一高位部分积获取单元1115中相同位数值生成子单元均位于同一列。
进一步地,第一高位部分积获取单元1115得到的所有第一符号位扩展后的高位部分积的分布形式可以表征为,第一个第一符号位扩展后的高位部分积中的最低位数值,与其它第一符号位扩展后的高位部分积中的最低位数值均位于同一列;第一个第一符号位扩展后的高位部分积中的其它位数值与其它第一符号位扩展后的高位部分积中的对应位数值均位于同一列。
可选的,继续参见图4所示,所述第二修正布斯编码子电路211中的第二高位部分积获取单元2115包括:高位目标编码输入端口21151、第七选通数值输入端口21152、第八选通数值输入端口21153、第二数据输入端口21154以及高位部分积输出端口21155;所述高位目标编码输入端口21151用于接收所述第二高位目标编码,所述第七选通数值输入端口21152用于接收所述第二高位选择器组单元2116选通后,输出的所述第二符号位扩展后的高位部分积中的第七数值,所述第八选通数值输入端口21153用于接收所述第二高位与逻辑单元2117输出的所述第二符号位扩展后的高位部分积中的第八数值,所述第二数据输入端口21154用于接收所述第二数据,所述高位部分积输出端口21155用于输出所有第二符号位扩展后的高位部分积。
可以理解的是,上述第二修正布斯编码子电路211中的第二高位部分积获取单元2115的电路结构和具体功能,与第一修正布斯编码子电路111中第一高位部分积获取单元1115的电路结构和具体功能相同,因此,本实施例对第二高位部分积获取单元2115的电路结构和具体功能不再赘述。可选的,第二高位部分积获取单元2115和第一高位部分积获取单元1115对数据处理的方式也相同,对此本实施例也不再赘述。
本实施例提供的一种数据处理器,该数据处理器可以通过第一高位部分积获取单元根据接收到的第一高位目标编码,以及接收到的第一数据中的被乘数,得到第一符号位扩展后的高位部分积,进而通过第一修正压缩支路对第一符号位扩展后的高位部分积进行压缩运算,以得到第一目标运算结果;上述数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性。
图5为另一实施例提供的数据处理器中的第一选择支路12、第一修正压缩支路13、第二选择支路22、第二修正压缩支路23以及部分积交换电路03的具体结构示意图,如图5所示,其中,所述第一选择支路12中的第一部分积选择子电路121包括:功能模式选择信号输入端口(mode)1211、第一部分积输入端口1212、第二部分积输入端口1213、第一部分积输出端口1214以及选通部分积输出端口1215;所述功能模式选择信号输入端口(mode)1211用于接收所述功能模式选择信号,所述第一部分积输入端口1212用于接收所述第一修正布斯编码子电路111得到的所有第一符号位扩展后的部分积,所述第二部分积输入端口1213用于接收所述部分积交换电路03进行交换的所述第二符号位扩展后的部分积,所述第一部分积输出端口1214用于输出需要所述部分积交换电路03进行交换的所述第一符号位扩展后的部分积,所述选通部分积输出端口1215用于输出选通后的所述第一符号位扩展后的部分积,以及接收到的所述第二符号位扩展后的部分积。
具体的,若数据处理器当前可处理2N位*N位数据的乘累加运算,则部分积交换电路03可以交换第二符号位扩展后的部分积以及第一符号位扩展后的部分积,此时,第一部分积选择子电路121可以通过第二部分积输入端口1213,接收部分积交换电路03交换的第二符号位扩展后的部分积,并将需要交换的第一符号位扩展后的部分积通过第一部分积输出端口1214输出至部分积交换电路03。可选的,交换的部分积可以为第一符号位扩展后的低位部分积和第二符号位扩展后的低位部分积,或者为第一符号位扩展后的高位部分积和第二符号位扩展后的高位部分积。其中,选通部分积输出端口1215可以选通不需要交换的第一符号位扩展后的部分积,以及接收到的第二符号位扩展后的部分积,并且第一部分积选择子电路121将不需要交换的第一符号位扩展后的部分积,和/或接收到的第二符号位扩展后的部分积作为目标编码的部分积,输入至第一修正压缩支路13进行压缩处理。
可选的,继续参见图5所示,其中,所述第二选择支路22中的第二部分积选择子电路221包括:功能模式选择信号输入端口(mode)2211、第二部分积输入端口2212、第一部分积输入端口2213、第一部分积输出端口2214以及选通部分积输出端口2215;所述功能模式选择信号输入端口(mode)2211用于接收所述功能模式选择信号,所述第二部分积输入端口2212用于接收所述部分积交换电路03进行交换的所述第二符号位扩展后的部分积,所述第一部分积输入端口2213用于接收所述第一修正布斯编码子电路211得到的所有第一符号位扩展后的部分积,所述第一部分积输出端口2214用于输出需要所述部分积交换电路03进行交换的所述第一符号位扩展后的部分积,所述选通部分积输出端口2215用于输出选通后的所述第一符号位扩展后的部分积,以及接收到的所述第二符号位扩展后的部分积。
在本实施例中,上述第二选择支路22中的第二部分积选择子电路221,与第一选择支路12中的第一部分积选择子电路121的电路结构和具体实现功能完全相同,对此本实施例不再赘述。
本实施例提供的一种数据处理器,数据处理器中第一乘法运算电路通过第一部分积选择子电路,可以选通第一符号位扩展后的部分积,以得到第一目标编码的部分积,使得数据处理器不仅能够实现同位宽数据的乘法运算以及乘累加运算,还能够实现不同位宽数据的乘累加运算,从而提高了数据处理器的通用性。
作为其中一个实施例,继续参见图5,所述第一修正压缩支路13包括第一修正华莱士树单元131以及第一修正累加单元132,所述第一修正华莱士数单元131的输出端与所述第一修正累加单元132的输入端连接;所述第一修正华莱士树单元131用于对所述第一目标编码部分积进行累加处理得到第一累加运算结果,所述第一修正累加单元132用于对所述第一累加运算结果进行累加处理,得到第一目标运算结果。
具体的,第一修正华莱士树单元131以及第一修正累加单元132均可以包含逻辑门单元;同一次乘法运算时,逻辑门单元接收到的功能模式选择信号均可以相等。可选的,上述逻辑门单元可以为与门逻辑单元,还可以为与门逻辑单元以及或门逻辑单元组合而成的逻辑门单元。在本实施例中,第一修正华莱士树单元131可以通过华莱士树单元和逻辑门单元组成,第一修正累加单元132可以通过进位加法器和逻辑门单元组成。
可选的,继续参见图5,其中,所述第二修正压缩支路23包括第二修正华莱士树单元231以及第二修正累加单元232,所述第二修正华莱士数单元231的输出端与所述第二修正累加单元232的输入端连接;所述第二修正华莱士树单元231用于对所述第二目标编码部分积进行累加处理得到第二累加运算结果,所述第二修正累加单元232用于对所述第二累加运算结果进行累加处理,得到第二目标运算结果。
需要说明的是,第二乘法运算电路02中的第二修正压缩支路23,与第一乘法运算电路01中的第一修正压缩支路13的内部电路结构和具体功能可以完全一致,本实施例对第二修正压缩支路23的内部电路结构和具体功能不再赘述。
本实施例提供的一种数据处理器,数据处理器中的第一乘法运算结果,可以通过第一修正压缩支路对第一部分积选择子电路得到的所有第一目标编码部分积进行压缩处理,得到第一目标运算结果;该数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,数据处理器通过第一修正压缩支路对所有第一目标编码部分积进行压缩处理,还可以有效降低数据处理器功耗。
作为其中一个实施例,继续参见图5,所述第一修正压缩支路13中的第一修正华莱士树单元131包括:第一低位华莱士树子单元1311、第一与逻辑子单元1312以及第一高位华莱士树子单元1313,所述第一低位华莱士树子单元1311的输出端与所述第一与逻辑子单元1312的输入端连接,所述第一与逻辑子单元1312的输出端与所述第一高位华莱士树子单元1313的输入端连接;其中,多个所述第一低位华莱士树子单元1311用于对所有第一目标编码部分积中的低位列数值进行累加处理得到第一进位输出信号,所述第一与逻辑子单元1312用于对接收到的所述功能模式选择信号,和所述第一低位华莱士树子单元1311输出的所述第一进位输出信号进行与逻辑运算,得到所述第一高位华莱士树子单元1313接收到的第一进位输入信号,多个所述第一高位华莱士树子单元1313用于对所述第一进位输入信号和所有第一目标编码部分积中的高位列数值进行累加处理,得到所述第一累加运算结果。
其中,所述第一低位华莱士树子单元1311和所述第一高位华莱士树子单元1313均包括所述4-2压缩器以及模式选择电路,所述模式选择电路的输出端与所述4-2压缩器的输入端连接,所述模式选择电路中包括第一输入端,用于接收所述功能模式选择信号;其中,所述4-2压缩器用于对所有第一目标编码部分积中每列数值进行累加处理,所述模式选择电路用于选通所述4-2压缩器接收到的所述第一目标编码部分积中的数值。
具体的,第一低位华莱士树子单元1311可以通过4-2压缩器组成。可选的,1个4-2压缩器可以包括多个全加器以及选择电路,在一定条件下,4-2压缩器中的选择电路可以控制全加器为关闭状态,以提高第一修正压缩支路13的运算效率,减少时延。可选的,选择电路可以为多个选择器构成的电路,该选择器可以为二路选择器,并且选择电路可以接收功能模式选择信号,根据接收到的功能模式选择信号控制全加器的开闭状态。
在本实施例中,第一修正华莱士树单元131可以理解为是一种能够对多位输入信号进行相加处理,得到两路输出信号的电路。可选的,所有第一目标编码部分积的列数可以等于第一乘法运算电路01当前可处理数据位宽的2倍,且所有第一目标编码部分积中的数值均参与累加运算。示例性的,若数据处理器接收到的两个数据位宽均为16比特,当前数据处理器可处理8位数据的乘法运算,则当前数据处理器可以对拆分后的两组8位*8位数据进行同步乘法运算,该数据处理器通过第一修正布斯编码子电路111得到的2个第一目标编码低位部分积,以及2个第一目标编码高位部分积的分布形式如图6所示,其中,右上角为2个第一目标编码低位部分积的分布图,左下角为2个第一目标编码高位部分积的分布图,“○”表示第一目标编码低位部分积中的部分位数值,
Figure BDA0002334704050000321
表示第一目标编码高位部分积中的部分位数值,“●”表示第一目标编码低位部分积和第一目标编码高位部分积的符号位数值;若数据处理器当前可处理16位*16位的数据乘法运算,该数据处理器通过第一修正布斯编码子电路111得到的4个第一目标编码低位部分积,以及4个第一目标编码高位部分积的分布形式如图7所示,其中,“○”表示第一目标编码低位部分积中的部分位数值,
Figure BDA0002334704050000322
表示第一目标编码高位部分积中的部分位数值,“●”表示第一目标编码低位部分积和第一目标编码高位部分积的符号位数值。
需要说明的是,第一修正压缩支路13中第一低位华莱士树子单元1311的数量可以等于数据处理器当前接收到的数据位宽N,还可以等于第一高位华莱士树子单元1313的数量;并且各第一低位华莱士树子单元1311之间可以串行连接,各第一高位华莱士树子单元1313之间也可以串行连接。可选的,最后一个第一低位华莱士树子单元1311的输出端和第一与逻辑子单元1312的输入端连接,第一与逻辑子单元1312的输出端与第一个第一高位华莱士树子单元1313的输入端连接。可选的,第一修正压缩支路13中每个第一低位华莱士树子单元1311可以对所有第一目标编码部分积中低位列数值进行加法处理,每个第一低位华莱士树子单元1311可以输出两路信号,即和位信号Sumi与进位信号Carryi;其中,i可以表示每个第一低位华莱士树子单元1311对应的编号,第一个第一低位华莱士树子单元1311的编号为0。同时,第一修正压缩支路13中每个第一高位华莱士树子单元1313可以对所有第一目标编码部分积中高位列数值进行加法处理,每个第一高位华莱士树子单元1313也可以输出两路信号,即和位信号Sumi与进位信号Carryi。可选的,每个第一低位华莱士树子单元1311和每个第一高位华莱士树子单元1313,接收到输入信号的数量可以等于第一目标编码的数量,或者第一符号位扩展后的部分积的数量。其中,第一修正压缩支路13中第一低位华莱士树子单元1311与第一高位华莱士树子单元1313的数量之和,可以等于2N;所有第一目标编码部分积中,从最低列至最高列的总列数可以等于2N,N个第一低位华莱士树子单元1311可以对所有第一目标编码部分积的低N列数值(即低位列数值)中的对应列数值进行累加运算,N个第一高位华莱士树子单元1313可以对所有第一目标编码部分积的高N列数值(即高位列数值)中的对应列数值进行累加运算。
示例性的,若数据处理器接收到的数据位宽为2N比特,并且无论当前数据处理器进行N位或者2N位数据乘法运算时,数据处理器包含的第一低位华莱士树子单元1311和第一高位华莱士树子单元1313的总数量,均可以等于数据处理器接收到的数据位宽的2倍,第一低位华莱士树子单元1311和第一高位华莱士树子单元1313的数量各占一半,此时,第一与逻辑子单元1312可以对第一修正压缩支路13中最后一个第一低位华莱士树子单元1311,输出的第一进位输出信号CoutN与功能模式选择信号进行与逻辑运算得到第七逻辑运算结果,并将第七逻辑运算结果作为第一修正压缩支路13中,第一个第一高位华莱士树子单元1313接收到的第一进位输入信号CinN+1。可选的,数据处理器当前可以将接收到的2N位数据,划分成高N位和低N位数据分别进行同步乘法运算;其中,从第一个第一低位华莱士树子单元1311至最后一个第一低位华莱士树子单元1311的对应编号i分别为1,2,…,N,从第一个第一高位华莱士树子单元1313至最后一个第一高位华莱士树子单元1313的对应编号i分别为N+1,N+2,…,2N。
可以理解的是,第一修正压缩支路13中每个第一低位华莱士树子单元1311和每个第一高位华莱士树子单元1313,接收到的信号可以包括第一进位输入信号Cini,部分积数值输入信号和第一进位输出信号Couti。可选的,每个第一低位华莱士树子单元1311和每个第一高位华莱士树子单元1313接收到的部分积数值输入信号,可以为所有第一目标编码部分积中对应列的数值,每个第一低位华莱士树子单元1311和每个第一高位华莱士树子单元1313,输出的进位信号Couti的位数可以等于NCout=floor((NI+NCin)/2)-1。其中,NI可以表示该华莱士树单元的数据输入位数,NCin可以表示该华莱士树单元的进位输入位数,NCout可以表示该华莱士树单元最少的进位输出位数,floor(·)可以表示向下取整函数。可选的,第一修正压缩支路13中每个第一低位华莱士树子单元1311接收到的第一进位输入信号,可以为上一个第一低位华莱士树子单元13113输出的第一进位输出信号,每个第一高位华莱士树子单元1313接收到的第一进位输入信号,可以为上一个第一高位华莱士树子单元1313输出的第一进位输出信号,并且第一个第一低位华莱士树子单元1311接收到的进位数输入信号为0。其中,第一个第一高位华莱士树子单元1313接收到的第一进位输入信号,可以通过数据处理器当前可处理的数据的位宽与数据处理器接收到的数据位宽确定。
可选的,继续参见图5所示,所述第二修正压缩支路23中的第二修正华莱士树单元231包括:第二低位华莱士树子单元2311、第二与逻辑单元2312以及第二高位华莱士树子单元2313,所述第二低位华莱士树子单元2311的输出端与所述第二与逻辑单元2312的输入端连接,所述第二与逻辑单元2312的输出端与所述第二高位华莱士树子单元2313的输入端连接;其中,多个所述第二低位华莱士树子单元2311用于对所有第二目标编码部分积中的低位列数值进行累加处理得到第二进位输出信号,所述第二与逻辑单元2312用于对接收到的所述功能模式选择信号,和所述第二低位华莱士树子单元2311输出的所述第二进位输出信号进行与逻辑运算,得到所述第二高位华莱士树子单元2313接收到的第二进位输入信号,多个所述第二高位华莱士树子单元2313用于对所述第二进位输入信号和所有第二目标编码部分积中的高位列数值进行累加处理,得到所述第二累加运算结果。
其中,所述第二低位华莱士树子单元2311和所述第一低位华莱士树子单元1311均包括所述4-2压缩器以及模式选择电路,所述模式选择电路的输出端与所述4-2压缩器的输入端连接;其中,所述4-2压缩器用于对所有第二目标编码部分积中每列数值进行累加处理,所述模式选择电路用于选通所述4-2压缩器接收到的所述第二目标编码部分积中的数值;其中,所述模式选择电路中包括第一输入端,用于接收所述功能模式选择信号。
可以理解的是,上述第二修正压缩支路23中的第二与逻辑单元2312,可以对接收到的功能模式选择信号,和第二低位华莱士树子单元2311输出的进位输出信号进行与逻辑运算得到第八逻辑运算结果,并将第八逻辑运算结果作为第二高位华莱士树子单元2313接收到的进位输入信号。
本实施例提供的一种数据处理器,数据处理器中的第一乘法运算结果,可以通过第一修正华莱士树单元对第一部分积选择子电路得到的所有第一目标编码部分积进行累加处理得到第一累加运算结果,进而通过第一修正累加单元对第一累加运算结果进行再次累加运算,得到第一目标运算结果;该数据处理器可以对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;另外,数据处理器通过第一修正华莱士树单元对所有第一目标编码部分积进行累加处理,还可以有效降低数据处理器功耗。
在其中一个实施例中,继续参见图5所示,所述第一修正压缩支路13中的第一修正累加单元132包括:第一加法器1321,所述第一进位加法器1321用于对所述第一累加运算结果进行加法运算得到所述第一目标运算结果。
具体的,第一加法器1321可以为不同位宽的进位加法器。可选的,第一加法器1321可以接收第一修正华莱士树单元131输出的两路信号,对输出的两路信号进行加法运算,输出数据处理器当前所处理数据运算模式结果,即第一目标运算结果。可选的,上述第一加法器1321可以为超前进位加法器,该超前进位加法器对应处理数据的位宽可以等于第一修正华莱士树单元131输出的第一累加运算结果的位宽。
示例性的,若乘法器当前处理8位*8位的定点数乘法运算,则第一修正累加单元132中的第一加法器1321可以为16位超前进位加法器,如图6所示第一修正压缩支路13,图8中Wallace_i表示第一低位华莱士树子单元1311和第一高位华莱士树子单元1313,i为第一低位华莱士树子单元1311和第一高位华莱士树子单元1313从0开始的编号,并且两两华莱士树子单元之间连接的实线表示高位编号对应的华莱士树子单元有进位输出信号,虚线表示高位编号对应的华莱士树子单元没有进位输出信号。
可选的,继续参见图5所示,其中,所述第二修正压缩支路23中的第二修正累加单元232包括:第二加法器2321,所述第二加法器2321用于对所述第二累加运算结果进行加法运算得到所述第二目标运算结果。
需要说明的是,第二加法器2321和第一加法器1321对数据处理的方式也相同,对此本实施例也不再赘述。
本实施例提供的一种数据处理器,数据处理器中的第一修正编码支路通过第一修正累加电路可以对第一修正华莱士树单元输出的两路信号进行累加处理,输出不同数据运算模式结果,该数据处理器并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,从而降低了数据处理器的功耗。
在其中一个实施例中,继续参见图5所示,其中,所述部分积交换电路03包括:功能模式选择信号输入端口(mode)31、第一部分积输入端口32、第一部分积输出端口33、第二部分积输入端口34以及第二部分积输出端口35,所述功能模式选择信号输入端口(mode)31用于接收所述功能模式选择信号,所述第一部分积输入端口32用于接收所述第一部分积选择子电路121输入的需要交换的所述第一符号位扩展后的部分积,所述第一部分积输出端口33用于输出所述第一部分积输入端口32接收到的所述第一符号位扩展后的部分积,所述第二部分积输入端口34用于接收所述第二部分积选择子电路221输入的需要交换的第二符号位扩展后的部分积,所述第二部分积输出端口35用于输出所述第二部分积输入端口34接收到的所述第二符号位扩展后的部分积。
具体可以理解的是,部分积交换电路03根据功能模式选择信号输入端口(mode)31,接收到的功能模式选择信号,确定当前是否需要交换第一符号位扩展后的部分积以及第二符号位扩展后的部分积;若需要,则部分积交换电路03可以交换符号位扩展后的第一低位部分积与符号位扩展后的第二低位部分积,或者交换符号位扩展后的第一高位部分积与符号位扩展后的第二高位部分积。在本实施例中,只有当数据处理器需要执行2N位*N位数据的乘累加运算时,部分积交换电路03才需要交换符号位扩展后的部分积,执行其它三种数据运算模式时,部分积交换电路03可以不需要进行交换处理。
本实施例提供的一种数据处理器,数据处理器通过部分积交换电路可以交换第一乘法运算电路得到的第一符号位扩展后的部分积,与第二乘法运算电路得到的第二符号位扩展后的部分积,进而实现2N位*N位数据的乘累加运算,该数据处理器不仅能够实现同位宽数据的乘法运算以及乘累加运算,还能够实现不同位宽数据的乘累加运算,从而提高了数据处理器的通用性。
图9为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图1所示的数据处理器进行处理,本实施例涉及的是实现四种不同数据运算模式的过程。如图9所示,该方法包括:
步骤S101、接收待处理数据和功能模式选择信号,其中,所述功能模式选择信号用于指示数据处理器当前可处理的对应数据运算模式。
具体的,数据处理器可以通过第一乘法运算电路以及第二乘法运算电路,分别接收一个待处理数据,该待处理数据可以包括两个待处理子数据,这两个待处理子数据可以为同位宽的相同子数据,也可以为同位宽的不同子数据。可选的,上述待处理数据中的两个子数据均可以拼接后作为一个整体,输入至第一乘法运算电路或第二乘法运算电路,还可以分开同时输入至第一乘法运算电路或第二乘法运算电路。其中,上述待处理子数据可以为定点数,且位宽可以为2N,两个待处理子数据拼接后得到的数据位宽可以为4N。
需要说明的是,第一乘法运算电路以及第二乘法运算电路均可以接收到相同的功能模式选择,该功能模式选择信号可以有四种,四种功能模式选择信号分别对应数据处理器可处理的四种数据运算模式,四种功能模式选择信号可以用二进制数值分别表示为数值00,01,10,11,也可以为其它的表示方式,本实施例并不做任何限定。可选的,上述四种数据运算模式分别可以表示为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。其中,数据处理器根据接收到的不同功能模式选择信号,可以确定当前需要处理的数据运算模式。另外,一个待处理数据包含的其中一个待处理子数据可以作为数据处理器执行乘法运算或乘累加运算处理时的乘数,另一个待处理子数据可以作为数据处理器执行乘法运算或乘累加运算处理时的被乘数。
步骤S102、对所述待处理数据与所述功能模式选择信号进行逻辑运算,得到待编码数值。
具体的,上述逻辑运算可以为与逻辑运算,还可以为与逻辑运算和其它逻辑运算结合实现的逻辑运算。可选的,数据处理器接收到的待处理数据均可以包括待处理低位数据以及待处理高位数据,若该待处理数据为“y7y6y5y4y3y2y1y0”,则待处理高位数据可以为“y7y6y5y4”,待处理低位数据可以为“y3y2y1y0”。
可选的,上述步骤S102中对所述待处理数据与所述功能模式选择信号进行逻辑运算,得到待编码数值的过程,具体可以包括:对所述待处理数据中待处理低位数据对应的最高位数值和所述功能模式选择信号进行与逻辑运算,得到所述待编码数值。
需要说明的是,数据处理器可以对待处理低位数据中的最高位数值和功能模式选择信号进行与逻辑运算,得到待编码数值,实际上,数据处理器可以对待处理低位数据中的最高位数值和表示功能模式选择信号的数值进行与逻辑运算,得到待编码数值;该待编码数值可以作为待处理高位数据进行布斯编码处理时的补位数值。其中,待处理低位数据可以为乘法运算或者乘累加运算中的乘数。
步骤S103、对所述待处理数据以及所述待编码数值进行布斯编码处理,得到目标编码。
具体的,上述目标编码可以包括高位目标编码和低位目标编码。
可选的,上述步骤S103中对所述待处理数据和所述待编码数值进行布斯编码处理,得到目标编码的过程,具体可以包括:根据所述待编码数值与所述待处理数据,得到待编码高位数据和待编码低位数据;分别对所述待编码高位数据和所述待编码低位数据进行布斯编码处理,得到高位目标编码和低位目标编码。
需要说明的是,数据处理器可以将待处理数据与待编码数值结合,得到待编码高位数据和待编码低位数据,其中,待编码数值可以作为待编码高位数据中的最低位数值。可选的,数据处理器可以根据待编码数值确定待处理高位数据对应的多组待编码高位数据。可选的,待处理低位数据与补位数值0组合可以得到多组待编码低位数据,待处理高位数据与待编码数值可以得到多组待编码的位数据;然后数据处理器可以对待编码低位数据和待编码高位数据进行布斯编码处理。可选的,待编码低位数据的组数可以等于待编码高位数据的组数,还可以等于数据处理器当前可处理数据位宽的1/4。
需要说明的是,划分多组待编码低位数据的方式可以表征为对补位处理后的待处理低位数据中相邻的每3位数值作为一组待编码低位数据,每组待编码低位数据中的最高位数值可以作为相邻下一组待编码低位数据中的最低位数值。可选的,划分多组待编码高位数据的方式可以表征为将待编码数值作为待处理高位数据进行布斯编码处理时的补位数值,对补位后的待处理高位数据中相邻的每3位数值作为一组待编码高位数据,每组待编码高位数据中的最高位数值可以作为相邻下一组待编码高位数据中的最低位数值。
进一步地,上述布斯编码处理过程中的编码方式可以参见表1,根据表1可知,通过低位布斯编码单元对划分后的待编码低位数据进行布斯编码处理,通过高位布斯编码单元对划分后的待编码高位数据进行布斯编码处理,可以得到五类不同的目标编码,分别为-2X,2X,-X,X和0;其中,X为乘法运算或乘累加运算中的被乘数。
步骤S104、根据所述目标编码以及所述待处理数据,得到符号位扩展后的部分积。
其中,所述目标编码包括第一目标编码和第二目标编码;上述步骤S104中根据所述目标编码以及所述待处理数据,得到符号位扩展后的部分积的过程,可以包括:通过所述第一目标编码以及所述待处理数据,得到第一符号位扩展后的部分积;通过所述第二目标编码以及所述待处理数据,得到第二符号位扩展后的部分积。
具体的,上述第一目标编码可以包括第一乘法运算电路得到的第一低位目标编码和第一高位目标编码。可选的,第二目标编码可以包括第二乘法运算电路得到的第二低位目标编码和第二高位目标编码。同时,符号位扩展后的部分积可以包括第一乘法运算电路得到的第一符号位扩展后的部分积,以及第二乘法运算电路得到的第二符号位扩展后的部分积。可选的,布斯编码处理后,数据处理器得到的第一低位目标编码的数量和第一高位目标编码的数量可以相等,第二低位目标编码的数量和第二高位目标编码的数量可以相等;并且第一符号位扩展后的部分积的数量可以等于第一目标编码的数量,第二符号位扩展后的部分积的数量可以等于第二目标编码的数量。
可以理解的是,数据处理器中的第一乘法运算电路可以根据得到的第一目标编码,与接收到的待处理数据中的待处理子数据(即被乘数),得到对应的第一符号位扩展后的部分积;数据处理器中的第二乘法运算电路可以根据得到的第二目标编码,与接收到的待处理数据中的待处理子数据(即被乘数),得到对应的第二符号位扩展后的部分积。其中,该第一符号位扩展后的部分积的位宽可以等于第一乘法运算电路当前可处理的数据位宽的2倍;第二符号位扩展后的部分积的位宽可以等于第二乘法运算电路当前可处理的数据位宽的2倍。
需要说明的是,数据处理器确定当前可处理的具体数据运算模式后,第一乘法运算电路可以根据得到的第一目标编码以及接收到的待处理数据中的待处理子数据(即被乘数),得到对应第一符号位扩展后的部分积;第二乘法运算电路可以根据得到的第二目标编码以及接收到的待处理数据中的待处理子数据(即被乘数),得到对应第二符号位扩展后的部分积。
例如,待处理数据中的两个待处理子数据的位宽均为2N比特,作为被乘数的待处理子数据可以表示为X,则第一目标编码可以包括五类信号,分别为-2X,2X,-X,X和0。另外,若数据处理器当前可处理的是N位*N位数据的乘法运算,第一乘法运算结果可以根据被乘数X和第一目标编码,直接得到对应的第一符号位扩展后的部分积,此时,第一符号位扩展后的部分积的位宽可以等于2N,该第一符号位扩展后的部分积中的低(N+1)位数值可以等于原始部分积包含的数值,第一符号位扩展后的部分积中的高(N-1)位数值均可以等于原始部分积的符号位数值,该符号位数值也就是原始部分积中的最高位数值。当第一目标编码为-2X时,则原始部分积可以为对X进行左右一位后取反再加1;当第一目标编码为2X时,则原始部分积可以为对X进行左移一位;当第一目标编码为-X时,则原始部分积可以为对X按位取反再加1;当第一目标编码为X时,则原始部分积可以为X与X的符号位数值(即X的最高位数值)结合的数据;当第一目标编码为+0时,则原始部分积可以为数值0,也就是9位原始部分积中的每位数值均等于0。可选的,数据处理器根据第二目标编码得到第二符号位扩展后的部分积的具体过程,与第一目标编码得到第一符号位扩展后的部分积的具体过程相同,对此不再赘述。
步骤S105、根据所述功能模式选择信号以及所述符号位扩展后的部分积,获取目标编码部分积。
具体的,上述目标编码部分积可以包括第一乘法运算电路得到的第一目标编码部分积,以及第二乘法运算电路得到的第二目标编码部分积。可选的,数据处理器通过功能模式选择信号可以确定当前需要处理的数据运算模式,并根据具体的数据运算模式、第一符号位扩展后的部分积和第二符号位扩展后的部分积,确定第一目标编码部分积和第二目标编码部分积。
步骤S106、对所述目标编码部分积进行压缩处理,得到目标运算结果。
具体的,上述压缩处理可以称为累加运算处理。另外,目标运算结果可以为数据处理器执行N位*N位数据的乘法运算结果,N位*N位数据的乘累加运算结果,2N位*2N位数据的乘法运算结果,或者2N位*N位数据的乘累加运算结果。其中,N位*N位数据的乘累加运算是在目标编码部分积压缩处理时,数据处理器可以直接把两组待处理数据得到的所有目标编码部分积,压缩成一个进位信号以及一个和位信号,再对这两个信号累加处理得到一个目标运算结果。
本实施例提供的一种数据处理方法,该方法可以根据接收到的功能模式选择信号确定当前可处理的不同数据运算模式,不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性;另外,该方法并不需要对乘法运算结果再进行一次累加运算才能完成乘累加运算操作,仅通过一次运算过程就可以直接实现乘法或乘累加运算操作,也有效降低了数据处理器的功耗。
作为其中一个实施例,上述符号位扩展后的部分积包括符号位扩展后的低位部分积以及符号位扩展后的高位部分积;图10为得到符号位扩展后的部分积的具体流程示意图,如图10所示,上述步骤S104中根据所述目标编码以及所述待处理数据,得到符号位扩展后的部分积的过程,可以通过以下过程实现:
步骤S1041、根据所述目标编码以及所述待处理数据,得到符号位扩展后的第一部分积。
具体的,上述符号位扩展后的第一部分积可以包括符号位扩展后的第一低位部分积和符号位扩展后的第一高位部分积。需要说明的是,数据处理器中的第一乘法运算电路可以根据第一低位目标编码和待处理被乘数,得到符号位扩展后的第一低位部分积;数据处理器还可以根据第一高位目标编码和待处理被乘数,得到符号位扩展后的第一高位部分积。可选的,符号位扩展后的第一部分积、符号位扩展后的第一低位部分积以及符号位扩展后的第一高位部分积的位宽均可以等于第一乘法运算电路当前所处理的待处理被乘数位宽的2倍。
另外,数据处理器中的第二乘法运算电路可以根据第二低位目标编码和待处理被乘数,得到符号位扩展后的第二低位部分积;数据处理器还可以根据第二高位目标编码和待处理被乘数,得到符号位扩展后的第二高位部分积。可选的,符号位扩展后的第二部分积、符号位扩展后的第二低位部分积以及符号位扩展后的第二高位部分积的位宽均可以等于第二乘法运算电路当前所处理的待处理被乘数位宽的2倍。
步骤S1042、根据所述功能模式选择信号,得到所述符号位扩展后的低位部分积中的第一数值。
具体的,上述第一数值可以位于第一符号位扩展后的低位部分积或第二符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(N+1)位至第2N位数值之间对应位数值。可选的,若数据处理器接收到的功能模式选择信号对应当前可处理2N位数据,则第一数值可以等于数据处理器中的第一乘法运算电路当前可处理2N位数据时,得到的第一符号位扩展后的部分积中的对应位数值;若数据处理器接收到的功能模式选择信号对应当前可处理N位数据,则第一数值可以等于数据处理器中的第一乘法运算电路当前可处理N位数据时,得到的第一符号位扩展后的部分积中的符号位数值;其中,数据处理器接收到的数据位宽为2N。
另外,数据处理器中第二乘法运算电路得到的第二符号位扩展后的低位部分积中的第五数值,与第一符号位扩展后的低位部分积中的第一数值的具体位置和具体获取方式也类似,对此本实施例不再赘述。
步骤S1043、对所述功能模式选择信号和所述符号位扩展后的第一部分积中的符号位数值进行与逻辑运算,得到所述符号位扩展后的低位部分积中的第二数值。
具体的,数据处理器接收到的数据位宽为2N,数据处理器中的第一乘法运算电路可以通过第一低位与逻辑单元对功能模式选择信号,与数据处理器对2N位数据进行乘法运算的过程中,得到的符号位扩展后的第一部分积中的符号位数值进行与逻辑运算,得到第一符号位扩展后的低位部分积中的第二数值。可选的,第二数值可以位于第一符号位扩展后的低位部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第4N位数值之间对应位数值。另外,数据处理器中的第二乘法运算电路得到的第二符号位扩展后的低位部分积中的第六数值,与第一符号位扩展后的低位部分积中的第二数值的获取方式和具体位置类似,对此不再赘述。
步骤S1044、将所述符号位扩展后的第一部分积中的数值、所述第一数值以及所述第二数值进行结合,得到所述符号位扩展后的低位部分积。
具体的,继续上一示例,将符号位扩展后的第一部分积中,对应从最低位(即第1位)向最高位算起,第1位至第N位数值之间对应位数值、第(2N+1)位至第4N位数值之间对应位数值(即第二数值)以及第(N+1)位至第2N位数值之间对应位数值(即第一数值)结合,得到第一符号位扩展后的低位部分积。可选的,第二符号位扩展后的低位部分积的获取方式,与第一符号位扩展后的低位部分积的获取方式类似,对此不再赘述。
可选的,上述步骤S104中根据所述目标编码以及所述待处理数据,得到符号位扩展后的部分积的过程,可以通过以下过程实现:根据所述目标编码以及所述待处理数据,得到符号位扩展后的第二部分积;根据所述功能模式选择信号,得到所述符号位扩展后的高位部分积中的第三数值;对所述功能模式选择信号和所述符号位扩展后的第二部分积中的符号位数值进行与逻辑运算,得到所述符号位扩展后的高位部分积中的第四数值;将所述符号位扩展后的第二部分积中的数值、所述第三数值以及所述第四数值进行结合,得到所述符号位扩展后的高位部分积。
进一步地,数据处理器可以根据第一高位目标编码和待处理被乘数,得到符号位扩展后的第二部分积。可选的,符号位扩展后的第二部分积的位宽可以等于待处理被乘数位宽的2倍。可选的,上述第三数值可以位于第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第(3N+1)位至第4N位数值之间对应位数值。可选的,若数据处理器接收到的功能模式选择信号对应处理2N位数据,则第三数值可以等于数据处理器对2N位数据进行乘法运算的过程中,得到符号位扩展后的部分积中的符号位数值,还可以等于数据处理器对N位数据进行乘法运算的过程中,符号位扩展后的部分积中的符号位数值;其中,数据处理器接收到的数据位宽为2N。可选的,数据处理器接收到的数据位宽为2N,数据处理器通过第一高位与逻辑单元对功能模式选择信号,与数据处理器对2N位数据进行乘法运算的过程中,得到的符号位扩展后的第二部分积中的符号位数值进行与逻辑运算,得到第二符号位扩展后的高位部分积中的第四数值。可选的,第四数值可以位于第一符号位扩展后的高位部分积中,对应从最低位(即第1位)向最高位算起,第1位至第2N位数值之间对应位数值。继续上一示例,将符号位扩展后的第二部分积中,对应从最低位(即第1位)向最高位算起,第(2N+1)位至第3N位数值之间对应位数值、第(3N+1)位至第4N位数值之间对应位数值(即第四数值)以及第1位至第2N位数值之间对应位数值(即第三数值)结合,得到第一符号位扩展后的高位部分积。同理,数据处理器中的第二乘法运算电路获取的第二符号位扩展后的高位部分积的方式,与第一乘法运算电路获取的第一符号位扩展后的高位部分积的方式相同,对此不再赘述。
本实施例提供的一种数据处理方法,该方法可以根据数据处理器接收到的功能模式选择信号对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积。
图11为另一实施例提供的获取目标编码部分积的具体流程示意图,如图11所示,上述步骤S105中根据所述功能模式选择信号以及所述符号位扩展后的部分积,获取目标编码部分积的过程,可以通过以下方式实现:
步骤S1051、根据所述功能模式选择信号,确定所述数据处理器当前可处理对应的数据运算模式。
具体的,数据处理器根据接收到的不同功能模式选择信号,可以确定当前可处理的具体数据运算模式。
步骤S1052、根据所述数据运算模式,判断是否需要对所述第一符号位扩展后的部分积和所述第二符号位扩展后的部分积进行交换处理。
可选的,在上述步骤S1052之后,所述数据处理方法还可以包括:若需要进行交换处理,则对所述第一符号位扩展后的部分积和所述第二符号位扩展后的部分积进行交换处理。
需要说明的是,数据处理器可以接收到四种不同的功能模式选择信号,每种功能模式选择信号均表示数据处理器当前可处理的对应数据运算模式。其中,四种对应的数据运算模式可以为N位*N位数据的乘法运算,N位*N位数据的乘累加运算,2N位*2N位数据的乘法运算以及2N位*N位数据的乘累加运算。可以理解的是,只有当数据处理器接收到的功能模式选择信号表示当前需要处理2N位*N位数据的乘累加运算时,数据处理器才需要通过部分积交换电路,对第一乘法运算电路得到的符号位扩展后的第一部分积,以及第二乘法运算电路得到的符号位扩展后的第二部分积进行交换处理,以完成该模式运算处理,也就是,数据处理器接收到的功能模式选择信号表示其它三种数据运算模式时,数据处理器不需要对第一符号位扩展后的部分积和第二符号位扩展后的部分积执行交换处理。
其中,部分积交换电路可以对第一符号位扩展后的低位部分积和第二符号位扩展后的低位部分积进行交换处理,或者对第一符号位扩展后的高位部分积和第二符号位扩展后的高位部分积进行交换处理。例如,若数据处理器接收到的待处理数据中的两个待处理子数据的位宽均为2N,一个待处理数据(即乘数)可以包括两个待处理子数据a和b,另一个待处理数据(即被乘数)可以包括两个待处理子数据c和d,并且当前需要对a*c,以及b*d执行2N位*2N位数据的乘法运算,则数据处理器中的第一乘法运算电路可以对接收到的c,进行布斯编码处理得到一组对应的第一目标编码,并根据实际运算需求,第一乘法运算电路可以通过子数据c对应的第一目标编码,以及a得到第一符号位扩展后的部分积,并将第一符号位扩展后的部分积作为第一目标编码部分积进行压缩处理,第二乘法运算电路可以根据子数据d对应的第二目标编码,以及b得到第二符号位扩展后的部分积,并将第二符号位扩展后的部分积作为第二目标编码部分积进行压缩处理。
若数据处理器需要执行两组2N位*N位数据的乘累加运算,则第一乘法运算电路接收到的c(即乘数)可以为2N位的非0数据,a(即被乘数)中的低N位数值可以均为数值0,或者高N位数值可以均为数值0,第二乘法运算电路接收到的d(即乘数)可以为2N位的非0数据,b(即被乘数)中的低N位数值可以均为数值0,或者高N位数值可以均为数值0,运算处理时,第一乘法运算电路根据c对应的第一目标编码以及a中的N位非0数据,得到对应的第一符号位扩展后的部分积,第二乘法运算电路根据d对应的第二目标编码以及b中的N位非0数据,得到对应的第二符号位扩展后的部分积;然后第一乘法运算电路将a中N位全0的数据得到的第一符号位扩展后的低位部分积,与第二乘法运算电路将b中N位全0的数据得到的第二符号位扩展后的低位部分积进行交换,分别得到第一目标编码部分积和第二目标编码部分积,或者第一乘法运算电路将a中N位全0的数据得到的第一符号位扩展后的高位部分积,与第二乘法运算电路将b中N位全0的数据得到的第二符号位扩展后的高位部分积进行交换,分别得到第一目标编码部分积和第二目标编码部分积。
步骤S1053、若不需要进行交换处理,则将所述第一符号位扩展后的部分积作为所述第一目标编码部分积,将所述第二符号位扩展后的部分积作为所述第二目标编码部分积。
具体的,若数据处理器接收到的功能模式选择信号表示当前可处理,N位*N位数据的乘法运算,N位*N位数据的乘累加运算或2N位*2N位数据的乘法运算,此时,数据处理器可以不执行交换处理,并将第一符号位扩展后的部分积作为第一目标编码部分积,将第二符号位扩展后的部分积作为第二目标编码部分积,进而通过第一乘法运算电路对第一目标编码部分积进行压缩处理,通过第二乘法运算电路对第二目标编码部分积进行压缩处理。可选的,第一符号位扩展后的部分积和第二符号位扩展后的部分积均可以为数值0,也可以为非0信号。
本实施例提供的一种数据处理方法,数据处理器根据接收到的功能模式选择信号,判断是否需要对第一符号位扩展后的部分积和第二符号位扩展后的部分积进行交换处理,若不需要交换处理,则将第一符号位扩展后的部分积作为第一目标编码部分积,将第二符号位扩展后的部分积作为第二目标编码部分积,进而分别对第一目标编码部分积和第二目标编码部分积进行压缩处理;该方法不仅能够实现乘法运算,还能够实现乘累加运算,从而提高了数据处理器的通用性。
作为其中一个实施例,所述目标运算结果包括第一目标运算结果;上述步骤S106中对所述目标编码部分积进行压缩处理,得到目标运算结果的过程,具体可以包括:通过第一低位华莱士树子单元对所有第一目标编码部分积中的列数值进行累加处理,得到第一累加运算结果;通过第一与逻辑子单元对所述第一累加运算结果和所述功能模式选择信号进行与逻辑运算,得到进位输入信号;通过第一高位华莱士树子单元根据所述进位输入信号以及所有第一目标编码部分积中的列数值进行累加处理,得到所述第二累加运算结果。
具体的,若第一符号位扩展后的部分积的位宽可以等于2N,则数据处理器可以包括N个第一低位华莱士树子单元以及N个第一高位华莱士树子单元。其中,N个第一低位华莱士树子单元可以对所有第一目标编码部分积中的低N列数值进行累加运算,得到第一累加运算结果;N个第一高位华莱士树子单元可以对所有第一目标编码部分积中的高N列数值进行累加运算,得到另一累加运算结果;在累加运算过程中,第一低位华莱士树子单元可以对所有第一目标编码部分积中,从最低列(即第1列)至最高列算起,第1列数值至第N列数值进行累加运算得到第一累加运算结果;第一个高位华莱士树子单元可以对接收到的第一与逻辑子单元输出的逻辑运算结果(即该逻辑运算结果作为进位输入信号),与所有第一目标编码部分积中,从最低列至最高列算起,第(N+1)列数值进行累加运算。然后数据处理器在通过第一修正累加单元对第一修正华莱士树单元的输出的第二累加运算结果进行累加运算得到第一目标运算结果。
需要说明的是,数据处理器通过第一乘法运算电路可以对第一目标编码部分积进行累加处理得到第二累加运算结果,该第二累加运算结果均可以包括和位输出信号Sum与进位输出信号Carry;其中,和位输出信号Sum与进位输出信号Carry的位宽可以相同,并且第二累加运算结果可以等于0,也可以等于非0信号。例如,当前仅需要对一组2N位*2N位数据进行乘法运算,此时,数据处理器接收到的两个待处理数据中有一个数据为数值0,并且为数值0的待处理数据对应得到的第一目标编码,第一符号位扩展后的部分积以及第二累加运算结果均可以等于0;当前需要对两组2N位*2N位数据进行乘法运算时,据处理器接收到的两个待处理数据均为非0信号,并且两个待处理数据对应得到的第一目标编码,第一符号位扩展后的部分积以及第一累加运算结果均可以为非0信号。
可以理解的是,数据处理器通过第一修正累加单元可以对第一累加运算结果进行累加处理,得到第一目标运算结果。另外,数据处理器可以通过第一修正累加单元中的第一加法器对第一修正华莱士树单元输出的进位输出信号Carry与和位输出信号Sum进行加法运算,输出加法运算结果。可选的,第一修正华莱士树单元中每个华莱士树子单元(即低位华莱士树子单元或高位华莱士树子单元),均可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=0,…,2N-1,i为每个华莱士树子单元的对应编号,编号从0开始)。可选的,第一加法器接收到的Carry={[Carry0:Carry2N-2],0},也就是说,第一加法器接收到的进位输出信号Carry的位宽为2N,进位输出信号Carry中前2N-1位数值对应第一修正华莱士树单元中前2N-1个华莱士树子单元的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,第一加法器接收到的和位输出信号Sum的位宽为2N,和位输出信号Sum中的数值可以等于第一修正华莱士树单元中每个华莱士树子单元的和位输出信号。
示例性的,若数据处理器当前需要处理8位*8位的乘法运算,则第一加法器可以为16位超前进位加法器,如图6所示,第一修正华莱士树单元可以输出16个华莱士树子单元的和位输出信号Sum和进位输出信号Carry,但是16位超前进位加法器接收到的和位输出信号可以为第一修正华莱士树单元输出的完整和位信号Sum,接收到的进位输出信号可以为第一修正华莱士树单元中,除去最后一个华莱士树子单元输出的进位输出信号的所有进位输出信号与0结合后的进位信号Carry。
另外,目标运算结果还可以包括第二乘法运算电路得到的第二目标运算结果。其中,第二乘法运算电路获取到的第二目标运算结果的方式,与第一乘法运算电路获取到的第一目标运算结果的方式相同,对此本实施例不再赘述。
本实施例提供的一种数据处理方法,该方法可以根据数据处理器接收到的功能选择模式信号对多种不同位宽的数据进行乘法运算,提高了数据处理器的通用性,有效减少了数据处理器占用AI芯片的面积;同时,数据处理器通过修正华莱士树单元对符号位扩展后的部分积进行累加运算,得到目标运算结果,能够有效降低数据处理器的功耗。
本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的数据处理器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上数据处理器时,数据处理器间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图12为组合处理装置的示意图。
其它处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。
可选的,该结构如图13所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图14所示,图14提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接收装置与所述芯片封装结构内的芯片电连接。所述接收装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接收装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接收装置还可以是其它的接口,本申请并不限制上述其它的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接收装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备可以为数据处理器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的电路组合,但是本领域技术人员应该知悉,本申请并不受所描述的电路组合方式的限制,因为依据本申请,某些电路可以采用其它方式或者结构实现。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的器件和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (33)

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

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN113031918A true CN113031918A (zh) 2021-06-25
CN113031918B CN113031918B (zh) 2024-07-30

Family

ID=76452106

Family Applications (1)

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

Country Status (1)

Country Link
CN (1) CN113031918B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1118472A (zh) * 1994-05-26 1996-03-13 摩托罗拉公司 组合的乘法器/移位器及其方法
JPH09245019A (ja) * 1996-03-11 1997-09-19 Oki Electric Ind Co Ltd 積和演算回路
EP0840207A1 (en) * 1996-10-30 1998-05-06 Texas Instruments Incorporated A microprocessor and method of operation thereof
US6353843B1 (en) * 1999-10-08 2002-03-05 Sony Corporation Of Japan High performance universal multiplier circuit
CN1598757A (zh) * 2004-09-02 2005-03-23 中国人民解放军国防科学技术大学 一种支持单指令多操作数的混合乘法器的设计方法
CN101458617A (zh) * 2008-01-22 2009-06-17 西北工业大学 基于cisc微处理器的32位整数乘法器
US20120143934A1 (en) * 2010-12-03 2012-06-07 Via Technologies, Inc Mechanism for carryless multiplication that employs booth encoding
CN103092560A (zh) * 2013-01-18 2013-05-08 中国科学院自动化研究所 一种基于Bypass技术的低功耗乘法器
CN106897046A (zh) * 2017-01-24 2017-06-27 青岛朗思信息科技有限公司 一种定点乘累加器
CN110413254A (zh) * 2019-09-24 2019-11-05 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1118472A (zh) * 1994-05-26 1996-03-13 摩托罗拉公司 组合的乘法器/移位器及其方法
JPH09245019A (ja) * 1996-03-11 1997-09-19 Oki Electric Ind Co Ltd 積和演算回路
EP0840207A1 (en) * 1996-10-30 1998-05-06 Texas Instruments Incorporated A microprocessor and method of operation thereof
US6353843B1 (en) * 1999-10-08 2002-03-05 Sony Corporation Of Japan High performance universal multiplier circuit
CN1598757A (zh) * 2004-09-02 2005-03-23 中国人民解放军国防科学技术大学 一种支持单指令多操作数的混合乘法器的设计方法
CN101458617A (zh) * 2008-01-22 2009-06-17 西北工业大学 基于cisc微处理器的32位整数乘法器
US20120143934A1 (en) * 2010-12-03 2012-06-07 Via Technologies, Inc Mechanism for carryless multiplication that employs booth encoding
CN103092560A (zh) * 2013-01-18 2013-05-08 中国科学院自动化研究所 一种基于Bypass技术的低功耗乘法器
CN106897046A (zh) * 2017-01-24 2017-06-27 青岛朗思信息科技有限公司 一种定点乘累加器
CN110413254A (zh) * 2019-09-24 2019-11-05 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备

Also Published As

Publication number Publication date
CN113031918B (zh) 2024-07-30

Similar Documents

Publication Publication Date Title
CN110413254B (zh) 数据处理器、方法、芯片及电子设备
CN110515587B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110673823B (zh) 乘法器、数据处理方法及芯片
CN110554854B (zh) 数据处理器、方法、芯片及电子设备
CN111258633B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258544B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031912A (zh) 乘法器、数据处理方法、装置及芯片
CN210109789U (zh) 数据处理器
CN209879493U (zh) 乘法器
CN210006031U (zh) 乘法器
CN113033799B (zh) 数据处理器、方法、装置及芯片
CN210006029U (zh) 数据处理器
CN210006030U (zh) 数据处理器
CN110647307B (zh) 数据处理器、方法、芯片及电子设备
CN111258545B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031911B (zh) 乘法器、数据处理方法、装置及芯片
CN110688087B (zh) 数据处理器、方法、芯片及电子设备
CN113031915B (zh) 乘法器、数据处理方法、装置及芯片
CN111258542B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031916A (zh) 乘法器、数据处理方法、装置及芯片
CN113031918B (zh) 数据处理器、方法、装置及芯片
CN113033788B (zh) 数据处理器、方法、装置及芯片
CN210006084U (zh) 乘法器
CN209879492U (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