CN102804128A - 执行饱和乘法和饱和乘加运算的算术处理单元及方法 - Google Patents

执行饱和乘法和饱和乘加运算的算术处理单元及方法 Download PDF

Info

Publication number
CN102804128A
CN102804128A CN2010800262786A CN201080026278A CN102804128A CN 102804128 A CN102804128 A CN 102804128A CN 2010800262786 A CN2010800262786 A CN 2010800262786A CN 201080026278 A CN201080026278 A CN 201080026278A CN 102804128 A CN102804128 A CN 102804128A
Authority
CN
China
Prior art keywords
operand
signal
input end
deviation
receive
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
CN2010800262786A
Other languages
English (en)
Other versions
CN102804128B (zh
Inventor
凯文·A·赫德
斯科特·A·希尔克
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN102804128A publication Critical patent/CN102804128A/zh
Application granted granted Critical
Publication of CN102804128B publication Critical patent/CN102804128B/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/499Denomination or exception handling, e.g. rounding or overflow
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

形成表示第一操作数(212)和第二操作数(214)的乘积的总和信号和进位信号。形成(240)具有由所述第一操作数和所述第二操作数的乘积符号确定的值的偏差信号。根据所述总和信号、所述进位信号、经符号扩展的加数和所述偏差信号的相加(230),提供输出信号。根据所述乘积的所述符号和所述输出信号的符号,在所述输出信号的一部分、最小饱和值(462)或最大饱和值(464)中选择一个作为最终结果。

Description

执行饱和乘法和饱和乘加运算的算术处理单元及方法
技术领域
本发明大体上涉及数据处理装置,确切地说,涉及算术处理装置。
背景技术
数据处理装置可包括专门的算术处理单元,如整数或浮点处理装置。算术处理单元尤其适用于执行与图形处理、数字信号处理和科学应用相关的任务。算术处理单元通常执行指令,其中一项指令与特定数学计算相关。例如,算术处理单元可包括一些指令,以执行算术运算,如乘法、加法、乘加、矩阵计算等。算术处理单元通常使用二进制浮点格式、二进制整数格式或两种格式的组合来表示数字。浮点数字和整数数字均具有相关精度,并可表示由用于表示数字的二进制位数确定的特定范围的值。算术处理单元可使用饱和运算来表示超出支持范围的数学运算结果。
饱和运算是算术的一种,其算术运算结果限制于最小值和最大值之间的固定范围内。此外,如果运算结果大于最大值,即称为上溢的条件发生,那么算术处理单元会提供与可表示的最大值对应的结果。如果运算结果小于最小值,即称为下溢的条件发生,那么算术处理单元会提供与可表示的最小值对应的结果。使用饱和运算可降低在计算结果造成上溢条件或下溢条件发生时可能出现的错误的严重性。例如,算术处理单元不使用饱和即可在计算结果上溢出支持范围时提供负值结果。但不幸的是,如果检测到已发生饱和,由此算术处理单元可提供正确的饱和结果,那么这可能会对该单元的计算性能产生不利影响。这对于其中结果大小(二进制位数,用于表示某个数字)限制为与被乘数、乘数或加数相同的乘加运算尤其如此。
附图说明
通过参考附图可更深入地理解本发明,且所属领域一般技术人员可显而易见地了解本发明的许多特征和优点,其中:
图1所示为可根据已知技术执行饱和运算的传统算术处理单元的方框图;
图2所示为根据本发明的一项实施例的可执行饱和运算的算术处理单元的方框图;
图3所示为图2所示偏差产生器的局部示意图和局部方框图;
图4所示为根据本发明的另一项实施例的可执行饱和运算的算术处理单元的方框图;
图5所示为图4所示偏差加数产生器的局部示意图和局部方框图;以及
图6所示为根据本发明的又一项实施例的可对压缩的操作数执行饱和运算的算术处理单元的方框图。
在不同附图中使用相同的参考标号表示类似或相同的物品。为清楚起见,相同的名称指代信号、传输信号的节点和信号所表示的信息。
具体实施方式
图1所示为可根据已知技术执行饱和运算的传统算术处理单元100的方框图。算术处理单元100通过将两个操作数相乘得到乘积,然后将乘积与第三个操作数相加得到中间结果来执行乘加运算。饱和检测电路接收中间结果,并提供最终计算结果。算术处理单元100包括标记为“A”的被乘数操作数112、标记为“B”的乘数操作数114、标记为“C”的加数操作数116、提供中间结果的乘加模块120以及提供标记为“RESULT”的最终结果的饱和模块190。
乘加模块120具有用于接收操作数112的第一输入端、用于接收操作数114的第二输入端、用于接收操作数116的第三输入端以及输出端。饱和模块190具有与乘加模块120的输出端连接的输入端和用于提供信号RESULT的输出端。算术处理单元100还可通过将之前计算出的乘加结果作为随后的乘加运算中的加数来执行乘加运算。
算术处理单元100接收操作数A、B和C,这三个操作数均为16位有符号整数。乘加模块120提供的中间结果包括附加位,用于精确表示乘加运算的结果。在图1所示的本实例中,饱和模块190提供的最终结果是32位有符号整数。饱和模块190检测乘加模块120提供的中间结果的值是否超过32位有符号整数可表示的范围,即称为上溢或下溢的条件。如果发生上溢,那么饱和模块190会产生表示32位有符号正整数最大值的信号RESULT,其二进制表示为01111...1111。如果发生下溢,那么饱和模块190会产生表示32位有符号负整数最小值的信号RESULT,其二进制表示为100...0000。如果乘加模块120提供的中间结果在支持范围内,那么饱和检测模块190会提供输出时未更改的中间结果。
饱和模块190根据每个操作数的相应符号和中间结果的符号来确定上溢或下溢条件是否发生。但是,如果最终结果表示限制为16位有符号整数,那么饱和模块190中的运算就更为复杂和耗时。因此,算术处理单元100的计算性能会降低。
乘加运算的上溢和下溢根据运算的最终结果进行确定。因此,执行饱和乘加运算在数学上并不等同于先执行饱和乘法运算,再执行饱和加法运算。例如,乘法运算本身所产生的乘积超过支持范围,但加上加数则可能使最终乘加结果返回至可由受支持的二进制位数表示的值。乘加运算存在以下四种情况:1)乘法运算的乘积超过所分配用于表示结果的位数,且加上加数不会使最终结果返回到支持范围内;2)乘法运算的乘积超过所分配用于表示结果的位数,但加上加数会使最终结果返回到支持范围内;3)乘法运算的乘积未超过所分配用于表示结果的位数,但加上加数所得到的值超过支持范围;以及4)乘法运算未超过所分配用于表示结果的位数,但加上加数所得到的值未超过支持范围。
图2所示为根据本发明的一项实施例的可执行饱和运算的算术处理单元200的方框图。算术处理单元200执行乘加运算,并包括用于提供偏差值的偏差产生器。将偏差值、中间乘积和加数操作数相加,这样,可快速执行的简单多路复用运算就可替代由图1所示饱和模块190执行的复杂且耗时的函数,且不会像图1所示算术处理单元100那样大大延迟结果。
算术处理单元200包括标记为“A”的被乘数操作数212、标记为“B”的乘数操作数214、标记为“C”的加数操作数216、乘法器220、偏差产生器240、扩展逻辑250、加法器230以及输出选择电路260。
乘法器220具有用于接收操作数212的第一输入端、用于接收操作数214的第二输入端、用于提供标记为“CARRY”的信号的第一输出端,以及用于提供标记为“SUM”的信号的第二输出端。偏差产生器240具有用于接收与操作数212的符号对应且标记为“SIGNA”的信号的第一输入端,用于接收与操作数214的符号对应且标记为“SIGNB”的信号的第二输入端,用于提供标记为“BIAS”的信号的输出端,以及用于提供表示操作数212与操作数214的乘积符号且标记为“SIGN PROD”的信号的输出端。扩展逻辑250具有用于接收操作数216的第一输入端,以及用于提供标记为“CEXT”的信号的输出端。加法器230具有用于接收信号CARRY的第一输入端,用于接收信号SUM的第二输入端,用于接收信号BIAS的第三输入端,用于接收信号CEXT的第四输入端,以及用于提供标记为“IR”的中间结果的输出端。选择电路260具有用于接收中间结果信号IR的第一输入端,用于接收信号SIGNPROD的第二输入端,以及用于提供标记为“RESULT”的最终结果的输出端。
操作数212、214和216均为16位有符号整数。乘法器220接收操作数212和操作数214,然后以信号CARRY所表示的32位进位值,以及信号SUM所表示的32位总和值的形式提供乘积。
偏差产生器240根据被乘数操作数212与乘数操作数214的乘积符号来提供由信号BIAS表示的偏差值。乘积符号根据信号SIGNA和信号SIGNB所表示的每个操作数的符号进行确定。信号BIAS包括32位的信息,其中17个高阶位是有效位,15个低阶位均为零位。扩展逻辑250对加数操作数216进行符号扩展,以提供32位信号CEXT,从而与信号SUM、CARRY和BIAS中每个信号的相关位数对应。
加法器230将32位偏差值(信号BIAS)、经符号扩展的32位加数(信号CEXT)和两个32位乘法结果(信号CARRY和信号SUM)相加,然后提供信号IR所表示的32位中间结果。在一项实施例中,加法器230包括一个或多个进位存储加法器(CSA)级和最终进位传递加法器(CPA)。在另一项实施例中,加法器230上包括的CSA级可与乘法器220中包括的CSA级进行共享。因此,32位偏差值和经符号扩展的加数可添加(压缩)到乘法器220中包括的一个或多个CSA级中。如果任何结果超过16位有符号整数的相关范围,但在32位有符号整数的范围内,那么偏差值会强制此类结果提供信号IR所表示的32位中间结果的上溢或下溢指示。具体而言,16位有符号整数的上溢或下溢可只根据32位中间结果的符号以及操作数212和214的乘积符号来确定。
输出选择电路260通过操作数212和操作数214的乘积符号,其由信号SIGN PROD表示,中间结果的符号,其由信号IR的最高有效位表示,来确定乘加运算是否产生上溢或下溢条件。由于中间结果加入了偏差值,因此输出选择电路260可根据32位中间结果较为容易地检测出与所需的16位结果对应的上溢和下溢条件。如果操作数212和操作数214的乘积符号为一(负),中间结果的符号为零(正),则发生下溢,且输出选择电路260将信号RESULT设为以16位有符号整数表示的最小负值,其二进制表示为1000 0000 0000 0000。如果操作数212和操作数214的乘积符号为零(正),中间结果的符号为一(负),则发生上溢,且输出选择电路260将信号RESULT设为以十六位有符号整数表示的最大正值,其二进制表示为0111 1111 1111 1111。如果上溢和下溢均未发生,则输出选择电路260根据中间结果的一部分来提供输出结果。具体而言,未发生饱和时,最终结果等于位15反转后信号IR所表示的中间结果的16个低阶位。
图3所示为图2所示偏差产生器240的局部示意图和局部方框图。偏差产生器240包括负偏差值242、正偏差值244、异或非门/同或门246和多路复用器248。异或非门/同或门246具有用于接收信号SIGN A的第一输入端、用于接收信号SIGN B的第二输入端和用于提供信号SIGN PROD的输出端。多路复用器248具有用于接收负偏差值242的第一数据输入端、用于接收正偏差值244的第二输入端、用于接收信号SIGN PROD的控制输入端和用于提供信号BIAS的输出端。
如果信号SIGN PROD处于逻辑高电平(负),那么多路复用器248选择负偏差值242,然后产生带有如下二进制值的信号BIAS:
1000 0000 0000 0000 1000 0000 0000 0000
如果信号SIGN PROD处于逻辑低电平(正),那么多路复用器248会选择正偏差值244,然后产生带有如下二进制值的信号BIAS:
0111 1111 1111 1111 1000 0000 0000 0000
图4所示为根据本发明的一项实施例的可执行饱和运算的算术处理单元400的方框图。算术处理单元400可执行乘加运算。与图2所示算术处理单元200不同,算术处理单元400将偏差产生器240和扩展逻辑250的函数组合到单个模块中,从而形成标记为“BIASED ADDEND”的偏差加数。算术处理单元400包括标记为“A”的被乘数操作数412、标记为“B”的乘数操作数414、标记为“C”的加数操作数416、包括布斯(Booth)编码器422和CSA阵列424的乘法器模块420、偏差加数产生器440、包括3:2压缩器432和进位传递加法器434的加法器430,以及包括最小饱和值462、最大饱和值464、多路复用器466、反相器450和选择逻辑468的输出选择电路460。
乘法器420具有用于接收操作数412的第一输入端、用于接收操作数414的第二输入端、用于提供标记为“CARRY”的信号的第一输出端和用于提供标记为“SUM”的信号的第二输出端。偏差加数产生器440具有用于接收与操作数412的符号对应且标记为“SIGN A”的信号的第一输入端,用于接收与操作数414的符号对应且标记为“SIGN B”的信号的第二输入端,用于接收标记为“ADDEND”的信号所表示的加数操作数416的输入端,用于提供标记为“BIASED ADDEND”的信号的第一输出端,以及用于提供与操作数412和操作数414的乘积符号对应且标记为“SIGN PROD”的信号的第二输出端。加法器430具有第一输入端,用于接收信号CARRY;第二输入端,用于接收信号SUM;第三输入端,用于接收信号BIASED ADDEND;第一输出端,用于提供标记为“IR”的中间结果,该中间结果与CPA 434提供的32位中间结果中16个最低有效位对应;以及第二输出端,用于提供标记为“SIGN IR”的信号,该信号与CPA 434所提供的32位中间结果的符号对应。反相器450具有输入端,用于接收信号IR的位15;以及输出端。多路复用器466具有用于接收最小饱和值462的第一输入端、用于接收最大饱和值464的第二输入端、用于接收16位非饱和结果的第三输入端、用于接收标记为“SELECT”的信号的控制输入端和用于提供标记为“RESULT”的输出端。16位非饱和结果的最高有效位由反相器450提供,16位非饱和结果的位14到零位由信号IR提供(14:0)。选择逻辑468具有用于接收信号SIGN IR的第一输入端、用于接收信号SIGN PROD的第二输入端和用于向多路复用器466提供信号SELECT的输出端。
操作数412、414和416均为16位有符号整数。乘法器420接收操作数412和操作数414,并以信号CARRY所表示的32位进位值,以及信号SUM所表示的32位总和值的形式提供乘积。在称作布斯(Booth)重编码的过程中,乘法器420使用布斯(Booth)编码器422来提供部分乘积。CSA阵列424在连续CSA级中将这些部分乘积减少至两个部分乘积,以提供信号CARRY和SUM。
偏差加数产生器440产生偏差值,并将该偏差值与加数操作数416合并,从而提供32位信号BIASED ADDEND。下文将参考图5进一步说明偏差加数产生器440的运算。
压缩器432接收信号CARRY、SUM和BIASED ADDEND,然后向CPA 434提供32位进位信号和32位总和信号所表示的相应值的总和。CPA434将压缩器432所产生的进位/总和表示转换成由单个32位二进制整数表示的结果,然后通过信号IR向多路复用器466提供该值中16个最低有效位。如果选择模块468确定上溢和下溢条件未发生,则信号IR所表示的值等于乘加计算的最终结果。
多路复用器466和选择模块468的运算与参考图2的输出选择电路260描述的相同,其他详情如下所示。如果选择模块468检测到上溢条件,那么选择模块468会通过信号SELECT配置多路复用器466,以通过信号RESULT提供最大饱和值464作为最终结果。如果选择模块468检测到下溢条件,那么选择模块468会配置多路复用器466,以通过信号RESULT提供最小饱和值462作为最终结果。如果选择模块468未检测到上溢和下溢条件,那么选择模块468会配置多路复用器466,以提供非饱和结果作为最终结果。
图5所示为图4所示偏差加数产生器440的局部示意图和局部方框图。偏差加数产生器440组合由图2的偏差产生器240和扩展逻辑250执行的运算,以提供单个偏差加数,而非提供偏差值和单独的经符号扩展的加数。此特征可使加法器430只计算三个值的总和,而图2的加法器230必须计算四个值的总和。
偏差加数产生器440包括第一偏差值510、第二偏差值520、第三偏差值530、第四偏差值540、异或非门/同或门550和多路复用器560。异或非门/同或门550具有用于接收信号SIGN A的第一输入端、用于接收信号SIGN B的第二输入端和用于提供信号SIGN PROD的输出端。多路复用器560具有用于接收偏差值510的第一数据输入端,用于接收偏差值520的第二数据输入端,用于接收偏差值530的第三数据输入端,用于接收偏差值540的第四数据输入端,用于接收信号SIGN PROD的第一控制输入端,用于接收表示加数操作数416的符号且标记为“SIGN C”的信号的第二控制输入端,以及用于提供标记为“BIAS”的信号的输出端。信号BIAS是17位二进制值,且提供32位信号BIASED ADDEND中17个高阶位部分。信号BIASEDADDEND中15个最低有效位根据信号ADDEND中的15个最低有效位来确定。偏差加数产生器的运算如下表所示:
Figure BDA0000119473320000101
因此,信号BIASED ADDEND是偏差值和加数的无符号部分的串联。应注意的是,信号BIASED ADDEND的位15与加数操作数416的符号相反。
图6所示为根据本发明的又一项实施例的可对压缩的操作数执行饱和运算的算术处理单元600的方框图。算术处理单元600包括标记为“A1、A2、A3和A4”的被乘数操作数612、标记为“B1、B2、B3和B4”的乘数操作数614、标记为“C1、C2、C3和C4”的加数操作数616、乘法器620、偏差产生器640、扩展逻辑650、加法器630、输出选择电路660,以及标记为“R1、R2、R3和R4”的结果618。
算术处理单元600的连通性和运算与图2所示算术处理单元200类似,不同之处在于,操作数612、614和616以及结果618中的每个操作数均为已压缩的操作数,每个已压缩的操作数包括四个不同的16位有符号整数。我们也可将已压缩的操作数称作多倍精度操作数。算术处理单元600并行执行四个乘加运算。例如,算术处理单元600按照以下方式计算结果:R1=(A1×B1)+C1,R2=(A2×B2)+C2,R3=(A3×B3)+C3,以及R4=(A4×B4)+C4。算术处理单元600以类似于参考图2的算术处理单元200所述的方式,执行这些独立计算。乘法器620提供128位进位信号和128位总和信号,其中每个信号均表示多个乘积。偏差产生器640提供对应于每个计算的唯一偏差值。输出选择电路660确定每个相应计算是否上溢或下溢,并根据具体情况替换为可表示的最大值或可表示的最小值。
在第一方面中,乘加器包括乘法器,其具有用于接收第一操作数和第二操作数的第一输入端和第二输入端、用于提供总和信号的第一输出端,以及用于提供进位信号的第二输出端;偏差加数产生器,其具有用于接收第一操作数和第二操作数的符号位的第一输入端和第二输入端、用于接收第三操作数的第三输入端、用于提供偏差加数信号的第一输出端,以及用于提供表示第一操作数和第二操作数的乘积符号的信号的第二输出端;加法器,其具有耦接到乘法器第一输出端和第二输出端的第一输入端和第二输入端、用于接收偏差加数信号的第三输入端,以及用于提供表示第一输入端、第二输入端和第三输入端总和的信号的输出端;多路复用器,其具有耦接到加法器第一输出端的第一输入端、用于接收最小饱和值的第二输入端、用于接收最大饱和值的第三输入端、控制输入端,以及用于通过饱和信号提供乘加结果的输出端;以及选择逻辑,其具有耦接到偏差产生器第二输出端的第一输入端、用于接收可表示总和符号的信号的第二输入端,以及耦接到多路复用器的所述控制输入端的输出端。
在第一方面的一项实施例中,乘法器为进位存储乘法器阵列,且其表征为使用布斯(Booth)重编码。在第一方面的另一项实施例中,偏差加数信号包括与总和信号和进位信号相同的位数。在第一方面的进一步实施例中,第一操作数、第二操作数和第三操作数中均包括有符号整数。在第一方面的又一项实施例中,偏差加数产生器包括逻辑门,其具有用于接收第一操作数的符号位的第一输入端、用于接收第二操作数的符号位的第二输入端,以及用于提供可表示第一操作数和第二操作数的乘积符号的符号信号的输出端;以及多路复用器,其具有用于接收第一偏差的第一输入端、用于接收第二偏差的第二输入端、用于接收第三偏差的第三输入端、用于接收第四偏差的第四输入端、耦接到逻辑门输出端的第一控制输入端、用于接收第三操作数符号的第二控制输入端,以及耦接到用于提供偏差加数信号的加法器第三输入端的输出端。在第一方面的另一项实施例中,第一操作数和第二操作数包括已压缩的操作数,多路复用器包括可产生类似多个饱和乘加结果的多个部分。
在第二方面中,算术处理单元包括乘法器,其用于提供表示第一操作数和第二操作数乘积的总和信号和进位信号;加法器,其用于提供表示总和信号、进位信号和偏差信号总和的中间结果信号;偏差产生器,其用于提供具有由第一操作数和第二操作数的乘积符号确定的值的偏差信号;以及输出选择电路,其响应于乘积符号和中间结果的符号,选择加法器第一输出信号的一部分、最小饱和值和最大饱和值中的一个。在第二方面的一项实施例中,加法器根据经符号扩展的加数进一步提供中间结果信号。在第二方面的另一项实施例中,算术处理单元进一步包括符号扩展逻辑,其用于对第三操作数进行符号扩展,以提供经符号扩展的加数。在第二方面的进一步实施例中,第一操作数、第二操作数和第三操作数中均包括有符号整数。在第二方面的又一项实施例中,偏差产生器响应于第一操作数和第二操作数的乘积符号,提供负偏差或正偏差作为偏差信号。在第二方面的另一项实施例中,第一操作数和第二操作数包括已压缩的操作数,且算术处理单元包括可产生类似多个饱和结果的多个部分。在第二方面的另一项实施例中,输出选择电路进一步反转第一输出信号的一部分中的最高有效位。
在第三方面中,一种方法包括:形成表示第一操作数的第二操作数乘积的总和信号和进位信号;形成具有由第一操作数和第二操作数的乘积符号确定的值的偏差信号;响应于总和信号、进位信号、经符号扩展的加数和偏差信号的相加,提供第一输出信号;以及响应于乘积符号和第一输出信号的符号,在第一输出信号的一部分、最小饱和值和最大饱和值中选择一个作为最终结果。在第三方面的一项实施例中,形成总和信号和进位信号进一步包括使用进位存储乘法器阵列和布斯(Booth)重编码来形成总和信号和进位信号。在第三方面的进一步实施例中,该方法进一步包括对第三操作数进行符号扩展,以匹配总和信号和进位信号中每个信号的位大小。在第三方面的又一项实施例中,形成偏差信号进一步包括响应于以下方面形成偏差信号:第一操作数的符号位,第二操作数的符号位;根据第一操作数和第二操作数确定乘法运算的乘积符号;以及根据乘积符号在负偏差或正偏差之间进行选择。在第三方面的又一项实施例中,最终结果包括与第三操作数相同的二进制位数。在第三方面的另一项实施例中,形成总和信号和进位信号包括形成已压缩的总和信号和已压缩的进位信号,以表示第一已压缩的操作数和第二已压缩的操作数的乘积。在第三方面的进一步实施例中,提供第一输出信号包括提供第一输出信号作为总和信号、进位信号、经符号扩展的加数和偏差信号的总和,且其中最终结果的二进制位数少于总和的二进制位数。
应注意的是,上文概述中描述的所有活动或元件并非都是必需的,部分特定活动或装置可能是不需要的,且除了上述活动和元件外,可能需要进一步执行一个或多个活动,或需要进一步包括一个或多个元件。此外,活动的排列顺序并不一定是其执行顺序。
此外,已参考具体实施例对概念进行了描述。但是,所属领域一般技术人员应了解,在不违背如权利要求书中所阐明的本发明的范围的前提下,可对本发明作出多种修改和变化。因此,说明书和附图应视为说明性而非限制性的,且所有此类修改均应包括在本发明的范围内。
例如,本专利申请文件中使用的技术可用于只能执行乘法运算而非乘加运算的乘法器。在这种情况下,加数输入端将省略。但是,能够执行乘加运算的算术处理单元可由执行控制单元进行配置,以停用加数输入端,从而执行简单乘法运算。所公开的技术可在乘法或乘加运算的结果所包含的信息的位数少于表示相应的中间乘积所使用的位数时进行应用。例如,当表示最终结果所使用的位数等于表示每个操作数所使用的位数时,或者当表示最终结果所使用的位数等于表示加数操作数所使用的位数时,就可能需要进行饱和操作。
优点、其他优势以及问题的解决方案已参考具体实施例在上文中进行了描述。但是,可导致任何优点、优势或解决方案产生或更为明确的优点、优势、问题的解决方案以及任何特征不应解释为任何或所有权利要求的决定性、必需或基本特征。

Claims (20)

1.一种乘加器(400),其包括:
乘法器(420),其具有用于接收第一操作数和第二操作数的第一输入端和第二输入端、用于提供总和信号的第一输出端,以及用于提供进位信号的第二输出端;
偏差加数产生器(440),其具有用于接收所述第一操作数和所述第二操作数的符号位的第一输入端和第二输入端、用于接收第三操作数的第三输入端、用于提供偏差加数信号的第一输出端,以及用于提供表示所述第一操作数和所述第二操作数的乘积符号的信号的第二输出端;
加法器(430),其具有耦接到所述乘法器的所述第一输出端和所述第二输出端的第一输入端和第二输入端、用于接收所述偏差加数信号的第三输入端,以及用于提供表示所述第一输入端、所述第二输入端和所述第三输入端总和的信号的输出端;
多路复用器(466),其具有耦接到所述加法器的所述第一输出端的第一输入端、用于接收最小饱和值的第二输入端、用于接收最大饱和值的第三输入端、控制输入端,以及使用饱和信号提供乘加结果的输出端;以及
选择逻辑(468),其具有耦接到所述偏差产生器的所述第二输出端的第一输入端、用于接收表示所述总和的符号的信号的第二输入端,以及耦接到所述多路复用器的所述控制输入端的输出端。
2.根据权利要求1所述的乘加器(400),其中所述乘法器的表征为使用布斯(Booth)重编码(422)的进位存储乘法器阵列(424)。
3.根据权利要求1所述的乘加器(400),其中所述偏差加数信号包括与所述总和信号和所述进位信号相同的位数。
4.根据权利要求1、2、3和5所述的乘加器(400),其中所述第一操作数、所述第二操作数和所述第三操作数均包括有符号整数。
5.根据权利要求3所述的乘加器(400),其中所述偏差加数产生器(440)包括:
逻辑门(550),其具有第一输入端,用于接收所述第一操作数的符号位;第二输入端,用于接收所述第二操作数的符号位;以及输出端,用于提供表示所述第一操作数和所述第二操作数的所述乘积的所述符号的符号信号;以及
多路复用器(560),其具有用于接收第一偏差的第一输入端、用于接收第二偏差的第二输入端、用于接收第三偏差的第三输入端、用于接收第四偏差的第四输入端、耦接到所述逻辑门的所述输出端的第一控制输入端、用于接收所述第三操作数的所述符号的第二控制输入端,以及耦接到用于提供所述偏差加数信号的所述加法器的所述第三输入端的输出端。
6.根据权利要求1、2、3和5所述的乘加器(400),其中所述第一操作数和所述第二操作数包括已压缩的操作数,且所述乘加器包括可产生类似多个饱和结果的多个部分。
7.一种算术处理单元(200),其包括:
乘法器(220),其用于提供表示第一操作数和第二操作数乘积的总和信号和进位信号;
加法器(230),其用于提供表示所述总和信号、所述进位信号和偏差信号总和的中间结果信号;
偏差产生器(240),其用于提供具有由所述第一操作数和所述第二操作数的乘积符号确定的值的所述偏差信号;以及
输出选择电路(260),其响应于所述乘积的所述符号和所述中间结果的符号,选择所述加法器的所述第一输出信号的一部分、最小饱和值和最大饱和值中的一个。
8.根据权利要求7所述的算术处理单元(200),其中所述加法器根据经符号扩展的加数进一步提供所述中间结果信号。
9.根据权利要求8所述的算术处理单元(200),其进一步包括符号扩展逻辑(250),用于对第三操作数进行符号扩展,以提供所述经符号扩展的加数。
10.根据权利要求7、8、9、11和13所述的算术处理单元(200),其中所述第一操作数、所述第二操作数和所述第三操作数均包括有符号整数。
11.根据权利要求9所述的算术处理单元(200),其中所述偏差产生器(240)响应于所述第一操作数和所述第二操作数的所述乘积的所述符号,提供负偏差和正偏差中的一个作为所述偏差信号。
12.根据权利要求7、8、9、11和13所述的算术处理单元(200),其中所述第一操作数(612)和所述第二操作数(614)包括已压缩的操作数,且算术处理单元包括可产生类似多个饱和结果(618)的多个部分。
13.根据权利要求7所述的算术处理单元(200),其中所述输出选择电路(260、460)进一步反转(450)所述第一输出信号的所述部分的最高有效位。
14.一种方法,其包括:
形成表示第一操作数(212)和第二操作数(214)的乘积的总和信号和进位信号;
形成具有由所述第一操作数和所述第二操作数的乘积符号确定的值的偏差信号(240);
响应于所述总和信号、所述进位信号、经符号扩展的加数和所述偏差信号的相加(230),提供第一输出信号;以及
响应于所述乘积的所述符号和所述第一输出信号的符号,在所述第一输出信号的一部分、最小饱和值(462)和最大饱和值(464)中选择一个作为最终结果。
15.根据权利要求14所述的方法,其中形成所述总和信号和所述进位信号进一步包括使用进位存储乘法器阵列(424)和布斯(Booth)重编码(422)来形成所述总和信号和所述进位信号。
16.根据权利要求14所述的方法,其进一步包括对第三操作数(216)进行符号扩展(250),以匹配所述总和信号和所述进位信号中每个信号的位大小。
17.根据权利要求16所述的方法,其中形成所述偏差信号进一步包括响应于以下方面形成所述偏差信号:
所述第一操作数(212)的符号位,
所述第二操作数(214)的符号位,
根据所述第一操作数和所述第二操作数来确定所述乘法运算的所述乘积的所述符号;以及
根据所述乘积的所述符号选择(248)负偏差(242)或正偏差(244)。
18.根据权利要求14、15、16和17所述的方法,其中所述最终结果包括与所述第三操作数相同的二进制位数。
19.根据权利要求14所述的方法,其中形成所述总和信号和所述进位信号包括形成已压缩的总和信号和已压缩的进位信号,此类信号可表示所述第一已压缩的操作数和所述第二已压缩的操作数的乘积。
20.根据权利要求14、15、16和17所述的方法,其中提供所述第一输出信号包括提供所述第一输出信号作为所述总和信号、所述进位信号、所述经符号扩展的加数和所述偏差信号的总和,且其中所述最终结果所包括的二进制位数少于所述总和的二进制位数。
CN201080026278.6A 2009-05-27 2010-05-24 执行饱和乘法和饱和乘加运算的算术处理单元及方法 Active CN102804128B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/472,715 2009-05-27
US12/472,715 US8316071B2 (en) 2009-05-27 2009-05-27 Arithmetic processing unit that performs multiply and multiply-add operations with saturation and method therefor
PCT/US2010/035900 WO2010138432A1 (en) 2009-05-27 2010-05-24 Integer multiply and multiply-add operations with saturation

Publications (2)

Publication Number Publication Date
CN102804128A true CN102804128A (zh) 2012-11-28
CN102804128B CN102804128B (zh) 2015-08-19

Family

ID=42299237

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080026278.6A Active CN102804128B (zh) 2009-05-27 2010-05-24 执行饱和乘法和饱和乘加运算的算术处理单元及方法

Country Status (6)

Country Link
US (1) US8316071B2 (zh)
EP (1) EP2435904B1 (zh)
JP (1) JP5640081B2 (zh)
KR (1) KR101560340B1 (zh)
CN (1) CN102804128B (zh)
WO (1) WO2010138432A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077332A (zh) * 2014-12-23 2017-08-18 英特尔公司 执行矢量饱和双字/四倍字长加法的指令和逻辑
CN107533462A (zh) * 2015-05-29 2018-01-02 华为技术有限公司 浮点运算装置以及方法
CN111610955A (zh) * 2020-06-28 2020-09-01 中国人民解放军国防科技大学 一种数据饱和加打包处理部件、芯片及设备
CN116257207A (zh) * 2022-09-08 2023-06-13 重庆位图信息技术有限公司 一种数据截位方法、模块、计算机设备及存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838664B2 (en) * 2011-06-29 2014-09-16 Advanced Micro Devices, Inc. Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
WO2014105154A1 (en) * 2012-12-24 2014-07-03 Intel Corporation Systems, methods, and computer program products for performing mathematical operations
CN116009814A (zh) 2016-10-20 2023-04-25 英特尔公司 用于经融合的乘加的系统、装置和方法
US11327718B2 (en) * 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0209049B1 (en) * 1985-07-09 1993-12-15 Nec Corporation Processing circuit capable of raising throughput of accumulation
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
CN1821954A (zh) * 2005-04-12 2006-08-23 威盛电子股份有限公司 分离饱和加减功能以改善处理器管线的关键执行阶段时程

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623434A (en) 1994-07-27 1997-04-22 Chromatic Research, Inc. Structure and method of using an arithmetic and logic unit for carry propagation stage of a multiplier
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
JP3710193B2 (ja) * 1996-03-11 2005-10-26 沖電気工業株式会社 積和演算回路
JPH1173408A (ja) * 1997-08-29 1999-03-16 Internatl Business Mach Corp <Ibm> 演算処理システム及び演算処理方法
US6223198B1 (en) 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US7882165B2 (en) * 2003-12-29 2011-02-01 Xilinx, Inc. Digital signal processing element having an arithmetic logic unit
US7870182B2 (en) * 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
WO2006059267A2 (en) 2004-12-01 2006-06-08 Koninklijke Philips Electronics N.V. Electronic device having multi operand arithmetic circuitry
US7716266B2 (en) * 2005-02-01 2010-05-11 International Business Machines Corporation Common shift-amount calculation for binary and hex floating point
JP2006227939A (ja) * 2005-02-17 2006-08-31 Matsushita Electric Ind Co Ltd 演算装置
US8082287B2 (en) 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0209049B1 (en) * 1985-07-09 1993-12-15 Nec Corporation Processing circuit capable of raising throughput of accumulation
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
CN1821954A (zh) * 2005-04-12 2006-08-23 威盛电子股份有限公司 分离饱和加减功能以改善处理器管线的关键执行阶段时程

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NAVINDRA YADAV ET.AL: "《VLSI,1999.Proceedings.Ninth Great Lakes Symposium on》", 6 March 1999 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077332A (zh) * 2014-12-23 2017-08-18 英特尔公司 执行矢量饱和双字/四倍字长加法的指令和逻辑
CN107533462A (zh) * 2015-05-29 2018-01-02 华为技术有限公司 浮点运算装置以及方法
CN107533462B (zh) * 2015-05-29 2020-07-24 华为技术有限公司 浮点运算装置以及方法
CN111610955A (zh) * 2020-06-28 2020-09-01 中国人民解放军国防科技大学 一种数据饱和加打包处理部件、芯片及设备
CN111610955B (zh) * 2020-06-28 2022-06-03 中国人民解放军国防科技大学 一种数据饱和加打包处理部件、芯片及设备
CN116257207A (zh) * 2022-09-08 2023-06-13 重庆位图信息技术有限公司 一种数据截位方法、模块、计算机设备及存储介质
CN116257207B (zh) * 2022-09-08 2023-10-03 重庆位图信息技术有限公司 一种数据截位方法、模块、计算机设备及存储介质

Also Published As

Publication number Publication date
JP2012528391A (ja) 2012-11-12
JP5640081B2 (ja) 2014-12-10
WO2010138432A1 (en) 2010-12-02
EP2435904B1 (en) 2016-05-04
KR101560340B1 (ko) 2015-10-14
EP2435904A1 (en) 2012-04-04
CN102804128B (zh) 2015-08-19
US20100306301A1 (en) 2010-12-02
US8316071B2 (en) 2012-11-20
KR20120017457A (ko) 2012-02-28

Similar Documents

Publication Publication Date Title
CN102804128A (zh) 执行饱和乘法和饱和乘加运算的算术处理单元及方法
US7080111B2 (en) Floating point multiply accumulator
Nachtigal et al. Design of a reversible single precision floating point multiplier based on operand decomposition
US6779013B2 (en) Floating point overflow and sign detection
JPH02196328A (ja) 浮動小数点演算装置
US5148386A (en) Adder-subtracter for signed absolute values
US8635262B2 (en) Carryless multiplication preformatting apparatus and method
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
GB2341702A (en) Floating-point multiply-accumulate unit
US20100125621A1 (en) Arithmetic processing device and methods thereof
Kaivani et al. Floating-point butterfly architecture based on binary signed-digit representation
US20130282784A1 (en) Arithmetic processing device and methods thereof
Mehta et al. Implementation of single precision floating point multiplier using karatsuba algorithm
CN101371221B (zh) 预饱和固定点乘法器
Lin et al. VLSI design of diminished-one modulo $2^{n}+ 1$ adder using circular carry selection
Zarandi et al. An Efficient Component for Designing Signed Reverse Converters for a Class of RNS Moduli Sets of Composite Form $\{2^{k}, 2^{P}-1\} $
US20020184285A1 (en) Floating point adder
GB2511314A (en) Fast fused-multiply-add pipeline
Haritha et al. Design of an enhanced array based approximate arithmetic computing model for multipliers and squarers
US8667040B2 (en) Mechanism for carryless multiplication that employs booth encoding
Schwarz Binary Floating-Point Unit Design: the fused multiply-add dataflow
Krishnan A comparative study on the performance of FPGA implementations of high-speed single-precision binary floating-point multipliers
Yun et al. A low complexity floating-point complex multiplier with a three-term dot-product unit
Saeed et al. Implementation of low-power multiply-accumulate (MAC) unit for IoT processors
US5742533A (en) Method and apparatus for modulus error checking

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant