CN100440136C - 算术单元 - Google Patents

算术单元 Download PDF

Info

Publication number
CN100440136C
CN100440136C CNB2006100083264A CN200610008326A CN100440136C CN 100440136 C CN100440136 C CN 100440136C CN B2006100083264 A CNB2006100083264 A CN B2006100083264A CN 200610008326 A CN200610008326 A CN 200610008326A CN 100440136 C CN100440136 C CN 100440136C
Authority
CN
China
Prior art keywords
carry
corrected value
value
preliminary
multiplier
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.)
Expired - Fee Related
Application number
CNB2006100083264A
Other languages
English (en)
Other versions
CN1821951A (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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN1821951A publication Critical patent/CN1821951A/zh
Application granted granted Critical
Publication of CN100440136C publication Critical patent/CN100440136C/zh
Expired - Fee Related 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
    • 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/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm

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

为了校正乘法结果中的溢出同时提高运算速度,一个溢出检测单元以被乘数A和乘数B是否均为具有最大绝对值的负值为基础检测溢出。一个进位保留加法器通过将部分积和作为第一校正值的-1(所有位都为1)在进位保留加法中相加在一起,来输出与A×B-1对应的中间和与中间进位。一个进位传递加法器通过将中间和,中间进位与第二校正值在进位传递加法中相加在一起,来输出乘法结果。如果没有溢出,第二校正值变为1以抵偿第一校正值,由此,运算结果为A×B。如果存在溢出,该第二校正值变为0,由此,该运算结果为A×B-1,其中溢出由第一校正值校正。

Description

算术单元
技术领域
本发明涉及一种用于进行诸如定点数的乘法运算、乘加运算和乘减运算的算术运算的算术单元。
背景技术
在用于音频数据、多媒体数据等数字处理的大规模集成电路(LSI)中,提供作为片上元件的算术单元,例如乘法单元,乘加单元等,已经变得普通。对于需要高精度运算的处理,这类算术单元利用二进制补码代表的定点数进行运算。在这种定点数运算中,当乘法结果溢出时需要进行饱和运算。具体地,一个n位定点数可以在是-2n到+2n-1(二进制表示为100...00到011...11)的范围内取值,如果被乘数和乘数都是最小值(具有最大绝对值的负值),乘法结果就会溢出(也就是,超出能够正确表示的正值的范围)。因此,进行饱和运算以将乘法结果校正为最大的可表示的正值。
如图17所示,例如,能够完成上面提到的饱和运算的常规单元包括用于产生被乘数A和乘数B的多个部分积的部分积产生器901,用于将产生的部分积加起来的加法器902,用于检测出现/不出现溢出的溢出检测单元903和一个可按照出现/不出现溢出选择性地输出来自加法器902的加法结果或者输出饱和值(最大正值)的选择器904。因此,如果出现溢出(也就是说,如果被乘数A和乘数B都是具有最大绝对值的负值),则选择饱和值,由此校正乘法结果。
然而,在加法器902的输出与饱和值之间的选择是由选择器904决定的情况下,只有当乘法结果从加法器902输出并在通过选择器904的延时以后才能够知道不溢出的乘法结果。
考虑到这一点,已经提出应用布斯(Booth)算法的算术单元,在布斯算法中,如果出现溢出,布斯编码器输出预定值,对其进行乘法运算以给出饱和值(参见例如,日本未决公开专利NO:1-267728)。
然而,那样的方法仅能应用于包括布斯编码器的算术单元。此外,即使带有这种布斯编码器,实际中提高运算速度也并不总是那么容易。即,布斯编码器是以出现/不出现溢出为基础控制的,溢出检测运算所需的时间量被加到总的运算时间中。因此,即使没有由于选择器的延时,总运算时间也增加了由于溢出检测运算所需的时间量,由此运算速度未必总是能够提高。
发明内容
因此,本发明的目的是提高算术运算的速度,该算术运算包括乘法运算同时正确地校正乘法结果的溢出。
为了达到前面提出的目标,本发明的算术单元是用于进行包括被乘数A和乘数B的乘法运算的算术运算的算术单元,A和B均为表达为二进制补码的定点数,该算术单元包括:
溢出检测单元,用于检测被乘数A和乘数B的乘积出现/不出现溢出;
中间乘积产生器,通过将被乘数A和乘数B的多个部分积与预定的第一校正值(例如,-1)在进位保留加法中相加在一起以得到中间和与中间进位;以及
进位传递加法器,通过将中间和与中间进位在进位传递加法中相加在一起以得到运算结果,
其中,根据溢出检测单元的检测结果的预定的第二校正值(例如,出现溢出时为0,不出现溢出时为1),或者在中间乘积产生器中加入,或者在进位传递加法器中加入。
当被乘数A和乘数B均为具有最大绝对值的负值时,溢出检测单元检测到溢出。
中间乘积产生器被配置为使多个部分积与第一校正值以并行的树结构在进位保留加法中相加在一起。
由此,例如,不管溢出出现或者不出现,都可以将所有位都为1的第一校正值作为校正溢出的校正值在进位保留加法中加入,由此有可能避免由溢出检测定时的限制引起的延时以及由于进位传递引起的延时。而且,例如可以根据溢出的出现或者不出现,加入或者为1或者为0的1位的第二校正值,这样就有可能以很少的延时或者无延时地来抵偿或者不抵偿第一校正值的校正。此外,第二校正值的加入可以在算术运算的后级完成,由此增加了溢出检测定时的裕度。因此,有可能容易地提高包括乘法的算术运算的运算速度,同时正确地校正溢出。
上面描述的配置可用于算术单元以在除得到乘积之外,还得到与加数X的乘加结果。具体地,部分积,第一校正值与加数可以在进位保留加法中加在一起,或者中间和,中间进位与加数可以在进位保留加法中加在一起,其中中间和与中间进位是将部分积与第一校正值加在一起得到的。在这种情况下,可以对中间和与中间进位进行移位(位扩展)使得运算结果的位数等于被乘数的位数与乘数的位数的和,其中例如最低有效位可以用1填充,由此正确地进行等效于加/减预定的校正值的运算。
而且,可以提供用于根据运算选择信号等可选择地得到与加数X的乘加结果或者乘减结果的算术单元。具体地,可以将部分积与第一校正值在进位保留加法中相加得到的中间和与中间进位进行二进制补码变换或者按位取反,并且与一个预定校正值相加,然后与加数相加,由此得到乘减结果。在这种情况下,按位取反可以根据运算为乘加运算或者乘减运算进行控制,并且第一校正值也可以变换或者可以在第一校正值固定的同时将第三校正值变换,以便得到从加数减去中间和与中间进位得到的值。
并且,前面描述的配置可用于使用布斯算法的算术单元。具体地,取决于运算是一个乘加运算或者一个乘减运算,乘数编码单元可以用来编码乘数或编码被乘以-1的乘数,由此,有可能得到乘加结果或者乘减结果,并且,有可能很快得到溢出校正的运算结果。
附图说明
图1为表示根据实施例1的算术单元配置的框图。
图2表示根据实施例1出现溢出时的示例性乘法运算。
图3为表示根据实施例2的算术单元的配置的框图。
图4表示了根据实施例2出现溢出时的示例性乘加运算。
图5为表示根据实施例3的算术单元配置的框图。
图6表示了根据实施例3出现溢出时的示例性乘加运算。
图7表示了根据实施例3出现溢出时的示例性乘减运算。
图8为表示根据实施例4的算术单元配置的框图。
图9表示了根据实施例4出现溢出时的示例性乘加运算。
图10表示了根据实施例4出现溢出时的示例性乘减运算。
图11为表示根据实施例5的算术单元配置的框图。
图12表示了根据实施例5出现溢出时的示例性乘加运算。
图13表示了根据实施例5出现溢出时的示例性乘减运算。
图14为表示根据实施例6的算术单元配置的框图。
图15表示了根据实施例6出现溢出时的示例性乘加运算。
图16表示了根据实施例6出现溢出时的示例性乘减运算。
图17为常规算术单元配置的框图。
具体实施方式
现在将参照附图说明本发明的优选的实施例。需要注意,以下的每个实施例中,任何前述实施例中的相同元件会用相同的参考标号表示,并且不会重复地说明。
实施例1
本发明的实施例1是针对用于得到被乘数A和乘数B乘积的算术单元。参照图1,这个算术单元包括中间乘积产生器101,溢出检测单元102,选择器103和进位传递加法器104。
中间乘积产生器101包括用于产生多个部分积的部分积产生器101a,以及用于将多个部分积以及作为第一校正值的-1(所有位均为1的值)作进位保留加法的进位保留加法器101b。这样,中间乘积产生器101为A×B-1输出中间和与中间进位。应当注意的是,中间乘积产生器101可以是应用布斯算法的单元,或者是将乘数每一位的部分积加在一起的单元。虽然本发明不局限于此,但如果通过进位保留加法器树将多个部分积和第一校正值并行地相加,则在许多情况下,通过避免增加用于加上第一校正值的逻辑门的数量有可能更加容易地提高运算速度。
溢出检测单元102检测溢出,由此如果被乘数A和乘数B都是具有最大绝对值的负值,则溢出检测单元断定溢出检测信号OD。
选择器103有选择地输出,作为第二校正值,当断定溢出检测信号OD时,选择器输出0,当没有断定溢出检测信号OD时,选择器输出1,并且第二校正值作为进位被输入到进位传递加法器104的最低有效位(LSB)。
进位传递加法器104在进位传递加法中将中间和,中间进位以及第二校正值相加以输出乘法结果。
在具有这种结构的算术单元中,中间乘积产生器101不管溢出出现还是没出现,都将第一校正值,-1,加到部分积上。当不出现溢出时,进位传递加法器104将1作为第二校正值加入,而当出现溢出时,将0作为第二校正值加入。
因此,当溢出不出现时,计算A×B-1+1,其中已加上的第一校正值被第二校正值抵偿,由此正确地得到A×B的值作为运算结果。
当溢出出现时,得到A×B-1的运算结果,其中校正了溢出。具体地,进行了例如图2所示的运算。(参照图2,小数点指出了最高有效位(MSB),小数点的左面是定点数的符号。注意除非另外说明,以下描述用二进制表示。)由此,如果被乘数A和乘数B都是具有最大绝对值的负值(1.000000),则最高有效数字的部分积为1000000,而其他数字的部分积为0000000。如果简单地将这些部分积加在一起就会溢出,并且得到的结果是只有符号位为1的值,当这些部分积以及第一校正值,-1(=1.111111111111),通过进位保留加法器101b加在一起时,得到中间和0.111111111111与中间进位0.00000000000。因此,得到了对应最大正值的中间和以及中间进位。当中间和,中间进位以及第二校正值(当溢出被溢出检测单元102检测到时,其值为0)通过进位传递加法器104相加时,得到乘法结果0.111111111111,也就是校正为可表示的最大正值的结果。
如前面所描述的,固定的第一校正值(例如,出现溢出的情况的校正值)不管溢出出现还是不出现都在进位保留加法中与部分积相加,并且第二校正值(例如,这个值或者抵偿第一校正值的校正,或者不影响校正)根据是否实际出现溢出在进位传递加法等中被加上。因此,在进位传递加法中相加时,会增加延时时间的校正值,作为第一校正值在进位保留加法中被预先加入,其后,根据溢出出现或者不出现,第二校正值可以抵偿第一校正值。因此,有可能正确地校正溢出同时保持短的总运算时间。而且,由于溢出检测可以在任何定时进行,使得可以控制第二校正值,而检测时间就会有大的裕度,由此,有可能容易地抑制总运算时间的增加。
特别地,如前所述,第一校正值在进位保留加法中加入的情况中,没有进位传递中将出现的这种延时。在多个部分积以及第一校正值由进位保留加法器树并行相加的情况中,通过避免增加用于加入第一校正值的逻辑级的数量,有可能容易地保持短的总运算时间。第二校正值被控制为1或者0的情况中,仅需进行中间和以及LSB的两位加法,由此关于不加入第二校正值的情况,有可能容易地抑制电路单元延时的增加。而且,由于第一校正值是常数,与不加入第一校正值的情况相比,电路规模没有明显的增加。
在前面描述的示例中,为了说明的目的,提供了选择器103以便根据溢出检测信号OD,选择地输出0或者1作为第二校正值。然而实际上,溢出检测信号OD的电平被指定为0或1的第二校正值,其中溢出检测信号OD(它本身或者它的反码)被直接输入到进位传递加法器104。
由于第二校正值的加法在后级进行,所以为溢出检测定时提供了更大的裕度。然而如果检测可以及时进行,则可选地第二校正值也可以作为进位在进位保留加法器101b中加入。而且,第一校正值也可以可选地根据出现/不出现溢出控制为-1或0。
实施例2
本发明的实施例2是针对用于得到被乘数A和乘数B的乘积与加数X的和(也就是乘加运算)的算术单元。如图2所示,与实施例1中的算术单元相比,本实施例的算术单元包括中间乘积产生器201以代替中间乘积产生器101。中间乘积产生器201除了部分积产生器101a和进位保留加法器101b外,还有移位单元201c和进位保留加法器201d。
移位单元201c进行第一中间和与第一中间进位的一位左移,以分别输出移位的中间和与移位的中间进位,第一中间和与第一中间进位是将所有的部分积以及第一校正值(-1)通过进位保留加法器101b相加在一起得到的。在一位左移运算中,以1填充移位的中间和的LSB,以0填充移位的中间进位的LSB。
进位保留加法器201d将移位的中间和,移位的中间进位以及加数X(将三个数减少为两个)相加在一起,以输出第二中间和与第二中间进位。
移位单元201c并不一定是诸如移位寄存器的能够存储和移位数据的单元,其只需要能够将来自进位保留加法器101b的输出的LSB移一位到更高的位置并输入到进位保留加法器201d,并且加数X的LSB与1相加。利用上面描述的移位运算,例如表示为二进制补码的7位定点数的乘法产生14位的乘积。然而,只要达到必要的精度,例如加数X有13位时,上面描述的移位运算(按位扩展)并不一定要进行。在加数的位数大于乘积的位数时,例如加数X有24位,则第一中间和与第一中间进位可以左移几位使得乘积的小数点的位置与加数X的小数点对齐,按照移位的数量第一中间和的一部分要从LSB开始以1填充。
利用具有这样配置的算术单元,第一中间和被左移并且以1填充LSB,这等效于将-1加到按位扩展的乘积上面。
具体地,例如如图4所示,当出现溢出时,进行移位和填充运算将-1加到14位的乘积上面,由此得到与溢出校正乘法结果A×B-1对应的移位的中间和与移位的中间进位(0.1111111111111和0.000000000000)。移位的中间和与移位的中间进位,通过进位保留加法器201d与加数X相加,以产生第二中间和(y.y...)以及第二中间进位(z.z...),它们通过进位传递加法器104与第二校正值(因为检测到溢出其值为0)相加,由此得到加数X与校正的乘法结果0.1111111111111(最大的正值)的乘加结果X+A×B-1。
当不出现溢出时,如上实施例1中描述的第二校正值为1,从而抵偿第一校正值的校正,由此得到X+A×B-1+1,也就是普通的乘加结果X+A×B。
同样在实施例2中,第二校正值的加法不一定由进位传递加法器104进行,它可以作为进位保留加法器201d或者任何其它合适的地方的进位加入,以及时进行溢出检测并且得到校正运算结果。并且,本发明不局限于每个校正值在加法器中被加/减的情况,校正值的加/减可以利用在移位单元中的填充运算所使用的数值来实现或者结合使用如上数值以及加/减运算来实现。无论如何,为了获得更短的延时和更小的电路规模,加法器并行的树的级数和对每个数字进行加法的数目优选为小的。
而且,加数X不一定要在进位保留加法器201d中加入,而是可选地在进位保留加法器101b中加入,同时省掉移位单元201c和进位保留加法器201d。在这种情况下(如实施例1中描述的,其中能够及时进行溢出检测),第二校正值也可以在进位保留加法器101b中加入。
虽然上面介绍了用于得到乘加结果的算术单元,但也可以通过例如输入0作为乘数X得到乘积A×B或者A×B-1。
实施例3
本发明的实施例3是针对用于按照作为运算选择信号给出的指示,可选择地获得被乘数A和乘数B的乘积与加数X的和(乘加结果)或差(乘减结果)的算术单元。如图5所示,与实施例2中的算术单元相比,本实施例的算术单元包括一个选择器305,还包括分别代替中间乘积产生器201和选择器103的中间乘积产生器301和选择器303。中间乘积产生器301具有与实施例1和实施例2中类似的部分积产生器101a和进位保留加法器101b,与实施例2中类似的进位保留加法器201d,移位单元301c和二进制补码转换单元301e。
选择器305,移位单元301c,二进制补码转换单元301e和选择器303按如下方式输出数值。选择器305作为第一校正值的输出:
当执行乘加运算时为-1;或者
当执行乘减运算时为0。
移位单元301c执行在从进位保留加法器101b输出的第一中间和与第一中间进位的一位左移运算,并且
对乘加运算,用1填充中间和的LSB、对乘减运算,用0填充中间和的LSB;并且
总是用0填充中间进位的LSB。
二进制补码转换单元301e
在当其用于乘加运算时,输出移位的中间和与移位的中间进位;以及
在用于乘减运算时,输出它们的二进制补码。
选择器303作为第二校正值的输出:
对乘加运算,在出现溢出时为0,在不出现溢出时为1;以及
对乘减运算,在出现溢出时为1,在不出现溢出时为0。
在进行乘加运算的情况下,本算术单元具有进行与实施例2中的算术单元所进行的相同运算的配置。具体地,如图6所示,当出现溢出时,算术单元得到溢出校正的适当的乘加结果X+A×B-1。当没有溢出时,第一校正值的校正被第二校正值抵偿,由此得到普通的乘加结果X+A×B-1+1=X+A×B。
当进行乘减运算时,如上所述,第一校正值为0,当溢出不出现时,第二校正值为0,而当出现溢出时为1。
考虑到这点,当溢出不出现时,进位保留加法器101b通过将所有的部分积以及作为第一校正值的0在进位保留加法中相加在一起来输出第一中间和与第一中间进位,并且第一中间和与第一中间进位由移位单元301c左移且将LSB填充为0,并且然后通过二进制补码转换单元301e将其转换为二进制补码,然后此补码与加数X由进位保留加法器201d在进位保留加法中相加。因此,得到与乘减结果X-A×B对应的第二中间和与第二中间进位,然后它们由进位传递加法器104在进位传递加法中相加在一起。如果没有溢出,第一中间和,第一中间进位以及通过将这些值移位和转换为二进制补码得到的值都是正确表达的值。因此,当第二中间和,第二中间进位以及0(第二校正值)由进位传递加法器104在进位传递加法中相加在一起时,就能得到适当的乘减结果X-A×B。
如图7所示,当进行乘减运算并且出现溢出时,第一中间和为只有符号位为1的值(1.000000000000),也就是说,比最大可表示的值大1的值,并且左移这个值并将LSB填充为0得到的值也是如此(1.0000000000000(S))。当出现溢出时,第一中间进位为0.00000000000,并且移位这个值得到的值为0.000000000000(C)。因此,-A×B((S)和(C)的二进制补码的和)是1.0000000000000。这是一个比最大正值大1的值的二进制补码(即没有被溢出校正的乘积A×B)。因此,即使乘积A×B溢出,将乘积乘以-1(二进制补码转换)得到的值也是可表示的值。然而在乘以-1之前已经进行溢出校正是必要的(即在那时,乘法结果已是可表示的A×B-1是必要的)。因此,当第二中间和与第二中间进位由进位传递加法器104相加在一起时,1作为第二校正值被加上,由此得到乘减结果X-A×B+1=X-(A×B-1),它是加数X与溢出校正的乘法结果乘以-1(1.0000000000001)得到的值的和,也就是适当的溢出校正的乘减结果。
对于第一中间和,即使在算术运算过程的中间点,值不是逻辑的合法地可表达的形式,最终也可以得到适当的运算结果。
应当注意为了进行二进制补码转换而进行的校正值的加法可以在进位保留加法器201d中进行,以便省去或减少由于进位传递造成的总运算时间的增加,由此有可能更可靠地减少总运算时间。
而且,正如上述实施例2中介绍的,第二校正值可以由进位保留加法器201d来加入。
而且,只要用于二进制补码转换以及溢出校正的加法能够进行,任何将在各种单元中相加的加数与在移位运算中用于填充的值的适当的组合都是可以的。
实施例4
本发明的实施例4是针对用于进行乘加运算或者乘减运算的算术单元的可选择的示例。如图8所示,与实施例3中的算术单元相比,本实施例的算术单元包括代替中间乘积产生器301的中间乘积产生器401。中间乘积产生器401具有与实施例1和实施例2中类似的部分积产生器101a与进位保留加法器101b,与实施例3中类似的移位单元301c,进位保留加法器401d以及逻辑取反单元401e。
没有提供选择器305,以及-1总是输入到中间乘积产生器401的进位保留加法器101b中。提供了选择器406,并根据运算选择信号将第三校正值输入到进位保留加法器401d中。
更具体的,逻辑取反单元401e在进行乘加运算时,从移位单元301c输出移位的中间和与移位的中间进位,以及在进行乘减运算时,输出通过对位值逻辑地取反的得到的值。
在进位保留加法器401d中,从逻辑取反单元401e输出的中间和与中间进位,加数X以及从选择器406输出的第三校正值(当进行乘加运算时为0,当进行乘减运算时为1)在进位保留加法中相加在一起,从而将它们减少为两个数,也就是第二中间和与第二中间进位。
在进行乘加运算的情况下,本算术单元具有进行与实施例2和实施例3中的算术单元所进行的相同运算的配置。具体地,如图9所示,当出现溢出时,溢出被校正从而得到适当的乘加结果X+A×B-1。当不出现溢出时,第一校正值的校正被第二校正值抵偿,由此得到普通的乘加结果X+A×B-1+1=X+A×B。
参照图10,进行乘减运算中当出现溢出时,与进行乘加运算一样第一校正值为-1。然而,当第一中间和与第一中间进位在移位单元301c中移位时,LSB(用于中间进位的与中间和的LSB相邻的较高数字)填充为0,并且位值被逻辑取反,之后当加数X由进位保留加法器401d加入时,1作为第三校正值被加上。(注意例如,可以把1直接加到进位保留加法器401d中,而不是将中间和的LSB填充为0和对位值取反。)
由此,考虑到接下来的移位和填充0的运算,加入第一校正值(-1)等效于加入-10。因此,移位的中间和(S)与移位的中间进位(C)就是与A×B-10相对应的中间和与中间进位。
S+C=A×B-10
在逻辑取反单元401e中,通过逻辑取反移位的中间和的所有的位以及逻辑取反移位的中间进位的直到与移位的中间和的LSB相邻的较高数字的位,得到逻辑取反值S′以及逻辑取反值C′。
S′=-S-1
C′=-C-10
进位保留加法器401d将逻辑取反的值S′和C′,加数X以及作为第三校正值的1相加在一起,以输出第二中间和与第二中间进位。由此,
X+S′+C′+1
=X+(-S-1)+(-C-10)+1
=X-(S+C)-10
=X-(A×B-10)-10
=X-A×B
因此,与实施例3中一样,第二中间和与第二中间进位是与乘减结果X-A×B相应的值。
由此,当出现溢出时,第二中间和,第二中间进位以及作为第二校正值的1由进位传递加法器104在进位传递加法中相加在一起,从而得到适当的溢出校正的乘减结果X-A×B+1=X-(A×B-1)。而且,既然对于二进制补码的转换没有必要进行进位传递加法,运算速度有可能容易地提高。
当不出现溢出时,第二校正值为0,因此得到普通的乘减结果X-A×B。
如前所述,在使用0或者1的第三校正值,并且不管该运算是乘加运算还是乘减运算,第一校正值固定为-1的情况下,通过控制1位值有可能控制是否加入-1(所有位都是1),由此有可能容易地降低电路的规模。
注意正如前面实施例2中所述,第二校正值可以由进位保留加法器101b或者进位保留加法器401d加入,并且第三校正值可以由进位保留加法器101b或者进位传递加法器104加入。
实施例5
本发明的实施例5是针对用于使用布斯算法进行乘加运算或者乘减运算的算术单元。如图11所示,与实施例3的算术单元相比(图5),本实施例的算术单元具有包括乘数编码单元511的中间乘积产生器501,代替了包括二进制补码转换单元301e的中间乘积产生器301。其它结构以及第一校正值,第二校正值与实施例3中的相同。
根据以4为基数的布斯算法,例如乘数编码单元511在得到乘加结果时,输出与乘数B对应的编码结果以及部分积的二进制补码校正项,而乘数编码单元511在获得乘减结果时,输出与乘数B乘以-1对应的编码结果以及部分积的二进制补码校正项。具体地,在获得乘减结果时,乘数编码单元511得到被乘数A与乘以了-1的乘数B的乘积,也就是,A×(-B),其代替了实施例3中通过将乘法结果转换为二进制补码而将其乘以-1的操作。
利用具有这样的配置的算术单元进行乘加运算时,如图12所示,对乘数B(1000000)进行以4为基数的布斯编码产生编码结果-1,0,0,0,与其对应的二进制补码校正项为1,0,0,0。因此,从进位保留加法器101b输出的第一中间和与第一中间进位与实施例3(图6)中的一样,并且根据出现或者不出现溢出来决定是否进行校正也类似的进行,由此得到适当的乘加结果X+A×B-1或者X+A×B。因此,通过加入作为第一校正值的-1来校正溢出,当不出现溢出时,作为第二校正值的1也被加入以抵偿校正,因此得到适当的乘加结果。
如图13所示,在进行乘减运算时,编码结果为1,0,0,0(进行乘加运算时为编码结果的二进制补码),二进制补码校正项为0,0,0,0。当不出现溢出时,第一校正值和第二校正值都是0,因此进行了合理的运算以得到普通的乘减结果X-A×B。此外,当出现溢出时,正如以上在实施例3中描述的一样,在乘以-1之前已经完成溢出校正是必要的(即在那时,可表达的乘法结果已经为A×B-1是必要的)。因此,当第二中间和与第二中间进位由进位传递加法器104相加时,加入作为第二校正值的1,由此得到乘数X与溢出校正的乘法结果乘以-1(1.0000000000001)的乘减结果X-A×B+1=X-(A×B-1),也就是,适当的溢出校正的乘减结果。
实施例6
本发明的实施例6是针对利用布斯算法的算术单元的可选的示例。如图14所示,与实施例5中的算术单元相比,本实施例的算术单元具有中间乘积产生器601,其代替了中间乘积产生器501。没有提供选择器305,并且而-1总是输入到中间乘积产生器601中,以作为第一校正值。提供了有类似于实施例4(图8)中的选择器406,以及与运算是否为乘加运算或者乘减运算相对应的第三校正值被输入到中间乘积产生器601的进位保留加法器401d中。
中间乘积产生器601包括移位单元201c和进位保留加法器401d,以代替实施例5中的中间乘积产生器501的移位单元301c和移位保留加法器201d。在一位左移运算中,不管运算为乘加运算还是乘减运算,移位单元201c总是用1填充中间和,用0填充中间进位。进位保留加法器401d与实施例4中的相同,以及在进位保留加法中将由移位单元201c移位的移位的中间和与移位的中间进位,加数X以及第三校正值加在一起。
如图15所示,对于乘加运算,该算术单元具有进行与实施例5中算术单元相同运算的配置。具体地,第一校正值为-1,在左移运算中所要填充的一位或者几位的值,对于中间和为1而对于中间进位为0,第三校正值为0,以及第二校正值按照出现或者不出现溢出为0或者1,由此得到适当的乘加结果X+A×B-1或者X+A×B。
对于乘减运算,进行如图16所示的运算。在实施例5中,对于乘减运算,第一校正值被置为0。相反,在实施例6中,不管运算是乘加运算还是乘减运算,-1作为第一校正值被加入,并且中间和被左移并填充为1。在进行乘减运算时,作为第三校正值的1由进位保留加法器401d在加法运算中加入,由此抵偿了第一校正值。因此,从进位保留加法器401d输出的第二中间和与第二中间进位与实施例5中的一样,并且根据出现或者不出现溢出的第二校正值的加法也类似地进行,从而得到适当的乘减结果X-A×B或者X-(A×B-1)。
如前所述,通过使用其值为0或者1的第三校正值,以及不管运算是乘加运算还是乘减运算都固定为-1的第一校正值,与实施例4中一样,只需要控制1位值,由此有可能容易地降低电路规模。
即使乘积溢出,乘积乘以-1也可以利用二进制补码正常地表达,但是如前所述,当-1作为第一校正值被加入时,与图16中的第一中间和一样,其值仍落在可表示的范围之外。然而,当左移这个值并填充它的LSB为1,然后向其加入作为第三校正值的1时,这个值又变成为可表示的值,由此有可能得到适当的乘减结果。因此,正如前面实施例3中描述的,即使在算术运算过程中的中间点,值不是逻辑的合法地可表达的形式都没有问题,只要最终能够得到适当的运算结果。
注意只要应用合乎逻辑,上面实施例中介绍的示例或可选择的示例中的每个元件都可以应用在其它实施例中。例如,如前所述,对实施例1中的选择器103,溢出检测信号OD,运算选择信号,或者其修改的信号(例如,其逻辑取反的信号或者经过异或的信号)可以,作为进位或者作为在左移运算中用于填充1位或者几位的值,输入到进位传递加法器104等中。此外,在实施例3等中,除了得到乘加或者乘减结果外,0可以输入作为如上面实施例2所述的加数X,因此通过省掉与加数X的加法,有可能得到乘积(A×B或者A×B-1)。
如前所述,本发明的算术单元能够正确校正乘法结果的溢出,并有可能容易和可靠地提高包括乘法在内的算术运算的速度,其可用于例如进行诸如定点数的乘法运算、乘加运算和乘减运算的算术运算的算术单元。

Claims (18)

1.一种用于进行包括被乘数A和乘数B的乘法运算的算术运算的算术单元,A和B均为表达为二进制补码的定点数,该算术单元包括:
溢出检测单元,用于检测该被乘数A和该乘数B的乘积溢出的出现;
中间乘积产生器,用于通过该被乘数A和该乘数B的多个部分积与预定的第一校正值的进位保留加法,得到中间和与中间进位;以及
进位传递加法器,用于通过该中间和与该中间进位的进位传递加法,得到运算结果,
其中将根据该溢出检测单元的检测结果的预定的第二校正值,或者在该中间乘积产生器中加入,或者在该进位传递加法器中加入。
2.如权利要求1中所述的算术单元,其中在该被乘数A和该乘数B均为具有最大绝对值的负值时,该溢出检测单元检测到溢出。
3.如权利要求1中所述的算术单元,其中:
该第一校正值是-1;以及
当出现溢出时,该第二校正值为0,当不出现溢出时,该第二校正值为1。
4.如权利要求1中所述的算术单元,其中该中间乘积产生器被配置为可以通过进位保留加法树并行地将该多个部分积与该第一校正值相加。
5.如权利要求1中所述的算术单元,其中:
该中间乘积产生器通过用二进制补码表示的该被乘数A和该乘数B的多个部分积、该第一校正值与加数X的进位保留加法得到中间和与中间进位;
该进位传递加法器获得该加数X与该被乘数A与该乘数B的乘积的和,即X+A×B。
6.如权利要求5中所述的算术单元,其中:
该第一校正值为-1;以及
当出现溢出时,该第二校正值为0,而当不出现溢出时,该第二校正值为1
7.如权利要求6中所述的算术单元,其中该中间乘积产生器得到:
中间和与中间进位,这是通过将初步的中间和左移一位并在其最低有效位插入1得到的值、将初步的中间进位左移一位并在其最低有效位插入0得到的值、与加数X的进位保留加法而得到的,其中该初步的中间和与该初步的中间进位是通过该被乘数A和该乘数B的多个部分积与该第一校正值的进位保留加法得到的;或者
中间和与中间进位,这是通过该被乘数A和该乘数B的多个部分积、该第一校正值、与该加数X的进位保留加法而得到的。
8.如权利要求1中所述的算术单元,其中:
当要得到乘加结果时,该中间乘积产生器通过表示为二进制补码的该被乘数A和该乘数B的多个部分积、该第一校正值、与加数X的进位保留加法,得到中间和与中间进位;
当要得到乘减结果时,该中间乘积产生器通过将初步的中间和转换为二进制补码得到的值、将初步的中间进位转换为二进制补码得到的值、与加数X的进位保留加法,得到中间和与中间进位,其中该初步的中间和与该初步的中间进位,是通过该被乘数A和该乘数B的多个部分积与该第一校正值的进位保留加法得到的;以及
该进位传递加法器得到该加数X与该被乘数A与该乘数B的乘积的和或者差,即X+A×B或者X-A×B。
9.如权利要求8中所述的算术单元,其中:
当要得到乘加结果时,该第一校正值为-1,并且该第二校正值在出现溢出时为0,在不出现溢出时为1;以及
当要得到乘减结果时,该第一校正值为0,并且该第二校正值在出现溢出时为1,在不出现溢出时为0;
10.如权利要求9中所述的算术单元,其中:
当要得到乘加结果时,该中间乘积产生器通过将初步的中间和左移一位并在其最低有效位插入1得到的值、将初步的中间进位左移一位并在其最低有效位插入0得到的值、与该加数X的进位保留加法得到中间和与中间进位,其中该初步的中间和与该初步的中间进位,是通过该被乘数A和该乘数B的多个部分积与该第一校正值的进位保留加法得到的;以及
当要得到乘减结果时,该中间乘积产生器通过将初步的中间和左移一位然后在其最低有效位插入0并将该移位后的初步的中间和转换为二进制补码得到的值、将初步的中间进位左移一位然后在其最低有效位插入0并将该移位后的初步的中间进位为转换二进制补码得到的值、与该加数X的进位保留加法,得到中间和与中间进位,其中该初步的中间和与该初步的中间进位,是通过该被乘数A和该乘数B的多个部分积与该第一校正值的进位保留加法得到的。
11.如权利要求1中所述的算术单元,其中:
当要得到乘加结果时,该中间乘积产生器通过表示为二进制补码的该被乘数A和该乘数B的多个部分积、该第一校正值和加数X的进位保留加法,得到中间和与中间进位,
当要得到乘减结果时,该中间乘积产生器通过表示为二进制补码的初步的中间和的位值取反得到的值、初步的中间进位的位值取反得到的值、与加数X的进位保留加法,得到中间和与中间进位,其中该初步的中间和与该初步的中间进位是通过将该被乘数A和该乘数B的多个部分积与该第一校正值的进位保留加法得到的;
预定的第三校正值,或者在该中间乘积产生器中加入,或者在该进位传递加法器中加入;以及
该进位传递加法器得到该加数X与该被乘数A与该乘数B的乘积的和或者差,即X+A×B或者X-A×B。
12.如权利要求11中所述的算术单元,其中:
该第一校正值为-1;
当要得到乘加结果时,当出现溢出时,该第二校正值为0,而当不出现溢出时,该第二校正值为1;
当要得到乘减结果时,当出现溢出时,该第二校正值为1,而当不出现溢出时,该第二校正值为0;
当要得到乘加结果时,该第三校正值为0;以及
当要得到乘减结果时,该第三校正值为1。
13.如权利要求12中所述的算术单元,其中:
当要得到乘加结果时,该中间乘积产生器通过将初步的中间和左移一位并在其最低有效位插入1得到的值、将初步的中间进位左移一位并在其最低有效位插入0得到的值、与该加数X在进位保留加法中相加在一起,得到中间和与中间进位,其中该初步的中间和与该初步的中间进位,是通过该被乘数A和该乘数B的多个部分积与该第一校正值的进位保留加法得到的;
当要得到乘减结果时,该中间乘积产生器通过将初步的中间和左移一位然后在其最低有效位插入0并对其位值取反得到的值、将初步的中间进位左移一位然后在其最低有效位插入0并对其位值取反得到的值、与该加数X的进位保留加法,得到中间和与中间进位,其中该初步的中间和与该初步的中间进位,是通过该被乘数A和该乘数B的多个部分积与该第一校正值的进位保留加法得到的。
14.如权利要求1中所述的算术单元,进一步包括用于输出乘数D以及对该乘数D的二进制补码校正项E的乘数编码单元,其中在要得到乘加结果时,该乘数D为根据布斯算法对该乘数B进行编码得到的结果,以及在要得到乘减结果时,为该乘数B乘以-1所得的值根据布斯进行编码得到的结果,其中:
该中间乘积产生器通过该被乘数A和该乘数D的多个部分积、该二进制补码校正项E、与该第一校正值的进位保留加法,得到中间和与中间进位;以及
该进位传递加法器得到该加数X与该被乘数A与该乘数B的乘积的和或者差,即X+A×B或者X-A×B。
15.如权利要求14中所述的算术单元,其中:
当要得到乘加结果时,该第一校正值为-1,并且当出现溢出时,该第二校正值为0,当不出现溢出时,该第二校正值为1;以及
当要得到乘减结果时,该第一校正值为0,并且当出现溢出时,该第二校正值为1,当不出现溢出时,该第二校正值为0;
16.如权利要求15中所述的算术单元,其中:
当要得到乘加结果时,该中间乘积产生器通过将初步的中间和左移一位并在其最低有效位插入1得到的值、将初步的中间进位左移一位并在其最低有效位插入0得到的值、与该加数X的进位保留加法,得到中间和与中间进位,其中该初步的中间和与该初步的中间进位,是通过该被乘数A与该乘数D的多个部分积、该二进制补码校正项E与该第一校正值的进位保留加法得到的;
当要得到乘减结果时,该中间乘积产生器通过将初步的中间和左移一位然后在其最低有效位插入0得到的值、将初步的中间进位左移一位并在其最低有效位插入0得到的值、与该加数X的进位保留加法,得到中间和与中间进位,其中该初步的中间和与初步的中间进位,是通过该被乘数A和该乘数D的多个部分积、该二进制补码校正项E、与该第一校正值的进位保留加法得到的。
17.如权利要求14中所述的算术单元,其中:
预定的第三校正值,或者在该中间乘积产生器中加入,或者在该进位传递加法器中加入;
该第一校正值为-1;
当要得到乘加结果时,当出现溢出时,该第二校正值为0,以及当不出现溢出时,该第二校正值为1;
当要得到乘减结果时,当出现溢出时,该第二校正值为1,以及当不出现溢出时,该第二校正值为0;
当要得到乘加结果时,该第三校正值为0;以及
当要得到乘减结果时,该第三校正值为1。
18.如权利要求17中所述的算术单元,其中该中间乘积产生器通过将初步的中间和左移一位然后在其最低有效位插入1得到的第一值、将初步的中间进位左移一位然后在其最低有效位插入0得到的第二值、与该加数X的进位保留加法,得到中间和与中间进位,或者通过该第一值、该第二值、该加数X与该第三校正值的进位保留加法,得到中间和与中间进位,其中该初步的中间和与该初步的中间进位,是通过该被乘数A与该乘数D的多个部分积、该二进制补码校正项E、与该第一校正值的进位保留加法得到的。
CNB2006100083264A 2005-02-17 2006-02-17 算术单元 Expired - Fee Related CN100440136C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005041340A JP2006227939A (ja) 2005-02-17 2005-02-17 演算装置
JP041340/2005 2005-02-17

Publications (2)

Publication Number Publication Date
CN1821951A CN1821951A (zh) 2006-08-23
CN100440136C true CN100440136C (zh) 2008-12-03

Family

ID=36816887

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100083264A Expired - Fee Related CN100440136C (zh) 2005-02-17 2006-02-17 算术单元

Country Status (3)

Country Link
US (1) US7315163B2 (zh)
JP (1) JP2006227939A (zh)
CN (1) CN100440136C (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725522B2 (en) * 2005-04-14 2010-05-25 Texas Instruments Incorporated High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area
JP2010238011A (ja) * 2009-03-31 2010-10-21 Nec Computertechno Ltd ベクトル乗算処理装置および方法ならびにプログラム
US8316071B2 (en) * 2009-05-27 2012-11-20 Advanced Micro Devices, Inc. Arithmetic processing unit that performs multiply and multiply-add operations with saturation and method therefor
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US9092213B2 (en) 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
US9329835B1 (en) * 2011-10-19 2016-05-03 Marvell International Ltd. Systems and methods for performing mathematical functions
CN103853662B (zh) * 2014-02-21 2016-08-17 北京神舟航天软件技术有限公司 一种航天软件系统溢出检测和破坏限制机制
CN109753268B (zh) * 2017-11-08 2021-02-02 北京思朗科技有限责任公司 多粒度并行运算乘法器
US11068238B2 (en) * 2019-05-21 2021-07-20 Arm Limited Multiplier circuit
WO2020246018A1 (ja) * 2019-06-07 2020-12-10 日本電信電話株式会社 秘密共役勾配法計算システム、秘密計算装置、共役勾配法計算装置、秘密共役勾配法計算方法、共役勾配法計算方法、およびプログラム
US11327718B2 (en) * 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01267728A (ja) * 1988-04-19 1989-10-25 Ricoh Co Ltd 乗算器
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
JPH11126157A (ja) * 1997-10-24 1999-05-11 Matsushita Electric Ind Co Ltd 乗算方法および乗算回路
US6148319A (en) * 1997-01-10 2000-11-14 Nec Corporation Multiplier
US6233597B1 (en) * 1997-07-09 2001-05-15 Matsushita Electric Industrial Co., Ltd. Computing apparatus for double-precision multiplication
CN1421001A (zh) * 1999-11-12 2003-05-28 太阳微系统公司 N基数类型算术表达式的优化
US20030229659A1 (en) * 2002-06-08 2003-12-11 Dror Halahmi Bit exactness support in dual-MAC architecture

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01267728A (ja) * 1988-04-19 1989-10-25 Ricoh Co Ltd 乗算器
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
US6148319A (en) * 1997-01-10 2000-11-14 Nec Corporation Multiplier
US6233597B1 (en) * 1997-07-09 2001-05-15 Matsushita Electric Industrial Co., Ltd. Computing apparatus for double-precision multiplication
JPH11126157A (ja) * 1997-10-24 1999-05-11 Matsushita Electric Ind Co Ltd 乗算方法および乗算回路
CN1421001A (zh) * 1999-11-12 2003-05-28 太阳微系统公司 N基数类型算术表达式的优化
US20030229659A1 (en) * 2002-06-08 2003-12-11 Dror Halahmi Bit exactness support in dual-MAC architecture

Also Published As

Publication number Publication date
US7315163B2 (en) 2008-01-01
JP2006227939A (ja) 2006-08-31
US20060184604A1 (en) 2006-08-17
CN1821951A (zh) 2006-08-23

Similar Documents

Publication Publication Date Title
CN100440136C (zh) 算术单元
CN107273090A (zh) 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN105468331A (zh) 独立的浮点转换单元
US5798955A (en) High-speed division and square root calculation unit
CN112860220B (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
US20060129623A1 (en) Division and square root arithmetic unit
KR100203468B1 (ko) 부동소수점수를 위한 산술연산장치
US20200073637A1 (en) Compressing like magnitude partial products in multiply accumulation
CN101295237B (zh) 求商和余数的高速除法器
CN100517213C (zh) 乘法装置
US20060143260A1 (en) Low-power booth array multiplier with bypass circuits
US5260889A (en) Computation of sticky-bit in parallel with partial products in a floating point multiplier unit
CN108334304B (zh) 数字递归除法
JP3297683B2 (ja) 乗算器
RU2348965C1 (ru) Вычислительное устройство
KR100329914B1 (ko) 제산장치
EP0205850A1 (en) Operation unit with an error amount calculating circuit for output data thereof
KR19990074385A (ko) 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치및 방법
US20100146031A1 (en) Direct Decimal Number Tripling in Binary Coded Adders
US6317772B1 (en) Split remainder divider
Liang et al. An innovative Booth algorithm
Abraham et al. An ASIC design of an optimized multiplication using twin precision
US6529924B1 (en) Method and apparatus for generating shift amount signals for an alignment shifter
JP3563043B2 (ja) 平方根の逆数計算方法、計算回路、及びプログラム
Vijaya Vardhan et al. Ultra-Low-Power Modulo Adder with Thermometer Coding for Uncertain RNS Applications

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081203

Termination date: 20130217