首页> 中国专利> 算术电路、算术处理设备和算术处理方法

算术电路、算术处理设备和算术处理方法

摘要

提供了算术电路、算术处理设备和算术处理方法。在一种算术电路中,每当在寄存器中存储数值时,基于该数值来预测部分解,使用一个或者多个预测的部分解、通过预定计算来生成中间值,通过符号扩展向中间值附加扩展符号位,并且在寄存器中存储被附加了扩展符号位的中间值。此外,基于一个或者多个部分解生成解。比较构成寄存器中存储的中间值的符号位的值与寄存器中存储的扩展符号位的值,并且在符号位的值不同于扩展符号位的值时输出错误信号。

著录项

  • 公开/公告号CN101937379A

    专利类型发明专利

  • 公开/公告日2011-01-05

    原文格式PDF

  • 申请/专利权人 富士通株式会社;

    申请/专利号CN201010215671.1

  • 发明设计人 鸭志田志郎;

    申请日2010-06-24

  • 分类号G06F11/18;G06F7/57;

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人潘士霖

  • 地址 日本神奈川县

  • 入库时间 2023-12-18 01:26:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-10

    未缴年费专利权终止 IPC(主分类):G06F11/18 授权公告日:20130612 终止日期:20150624 申请日:20100624

    专利权的终止

  • 2013-06-12

    授权

    授权

  • 2011-03-02

    实质审查的生效 IPC(主分类):G06F11/18 申请日:20100624

    实质审查的生效

  • 2011-01-05

    公开

    公开

说明书

技术领域

这里讨论的实施例涉及一种算术电路、算术处理设备和算术过程。

背景技术

算术逻辑电路包括加法器-减法器、除法器、平方根计算器等。用于通过使用电子电路来进行除法和平方根计算的技术包括恢复算法(restoringalgorithm)、非恢复算法(nonrestroing algorithm)、SRT(Sweeney-Robertson-Tocher)算法等。在这些算术算法中,重复用于获得商或者平方根的n个数位(digit)的运算,其中n是自然数。上述算术算法具有的特征在于商或者平方根的数位总数与上述运算的重复次数成比例。由于如在纸面上的计算中那样在上述算术算法中重复减法和数位移位,所以下文将上述算术算法称为减法和移位型算术算法。

可以通过使用故障检测设备检测故障来提高减法和移位型算术电路的可靠性。例如,一种已知的故障检测电路在除数和被除数均为非零并且中间商(在商的归一化之前的中间阶段中由除法器获得)的最高有效数位与商的溢出数位(其位置紧邻商的最高有效数位左侧)均为零时生成故障信号,使得故障检测电路可以检测其中商由于误差而变成零的故障。

附带提及,在减法和移位型算术逻辑运算中发现的一些逻辑失效仅出现于在运算期间很少产生的一些数据模式。上述逻辑错误在减法和移位型算术电路中可能出现的位置是已知的。然而,没有发现用于证实在这样的位置的逻辑正确的技术。因此,目前用于发现很少产生的数据模式出现的逻辑失效的仅有方式是可视地检验逻辑的绘图等并且通过逻辑仿真来收集运算验证测试的结果。

然而,由于通过可视检验来适当检测逻辑失效的能力依赖于可视地检验逻辑电路示意图等的个人的能力,所以可视检验无法保证逻辑的可靠性。

另一方面,在目标电路如单个运算元件那样小的情况下,可以在充分长的时间内收集运算验证测试的结果,因此通过逻辑仿真来检测逻辑失效可以保证高可靠性。然而,在目标电路如减法和移位型算术电路那样大的情况下,即使在进行通过逻辑仿真的运算验证测试时也难以保证充分的可靠性。也就是说,可以用来检验各运算元件的时间在通过逻辑仿真来进行或者对实际系统进行大规模系统的验证时受到限制。由于这样的时间限制,所以难以通过逻辑仿真来发现减法和移位型算术电路中的缺陷。因此常规上,算术电路的逻辑质量的提高受到限制。

即使在无法通过运算验证测试来完全地预先避免失效的情况下,如果有可能防止错误的计算结果传递到后续处理阶段,则仍然可以保证可靠性。因此,需要一种用于即使在计算运算期间很少出现故障的情况下仍然高可靠性地检测故障的技术。

[专利文献1]日本专利申请第62-212728号

发明内容

本发明的目的在于提供一种实现可靠检测在计算运算期间出现的故障的算术电路、算术处理设备和算术处理方法。

根据本发明的一个方面,一种算术电路包括:寄存器;预处理电路,在寄存器中存储要对其进行算术运算的目标数值;解预测电路,每当在寄存器中存储数值时,基于数值来预测部分解,其中部分解是由构成解的部分数位表示的值,所述解根据目标数值而获得,并且以数位有效性的降序来进行预测;中间值计算电路,使用由解预测电路预测的一个或者多个部分解、通过预定计算来生成中间值,通过符号扩展向中间值附加一个或者多个扩展符号位、并且在寄存器中存储被附加了一个或者多个扩展符号位的中间值;解生成电路,依次获取由解预测电路预测的一个或者多个部分解,并且基于一个或者多个部分解来生成解;以及错误检测电路,比较构成寄存器中存储的中间值的符号位的值与寄存器中存储的一个或者多个扩展符号位中的一个扩展符号位的值,并且在符号位的值不同于一个或者多个扩展符号位中的一个扩展符号位的值时检测出错误。

附图说明

图1图示了根据第一实施例的算术电路;

图2图示了根据第二实施例的除法器;

图3图示了中间余数寄存器和异或电路的连接的例子;

图4图示了正常地确定部分商的除法的例子;

图5图示了错误地确定部分商的除法的例子;

图6图示了根据第三实施例的除法器;

图7图示了根据第四实施例的平方根计算器;

图8图示了正常地确定部分平方根的平方根计算的例子;

图9图示了错误地确定部分平方根的平方根计算的例子;

图10图示了根据第五实施例的平方根计算器;并且

图11表明算术处理设备的例子。

具体实施方式

下文将参照附图来说明实施例,其中相似的标号通篇地指代相似的单元。

图1图示了根据第一实施例的算术电路。图1的算术电路包括寄存器1、预处理电路2、解预测电路3、中间值计算电路4、解生成电路5和错误检测电路6。

图1中的寄存器1代表一个或者多个寄存器。寄存器1存储由中间值计算电路4生成的中间值1a和通过中间值1a的符号扩展向中间值1a附加的扩展符号1b。

处理电路2在寄存器1中存储将对其进行算术运算的一个或者多个数值。例如,预处理电路2在寄存器1进行除法的情况下在寄存器1中存储被除数或者在寄存器1进行平方根计算的情况下在寄存器1中存储被开方数。在除法的情况下,单独地布置另一寄存器用于存储除数,并且预处理电路2在单独布置的寄存器中存储除数。

每当数值存储于寄存器1中时,解预测电路3基于寄存器1中存储的数值来预测部分解(partial solution),其中部分解由代表将根据一个或者多个数值获得的解的部分数位(digit)的值构成并且以数位有效性的降序来预测。例如,在除法的情况下,解预测电路3以数位有效性的降序预测部分商(partial quotient),其中部分商由代表商的部分数位的值构成。在平方根计算的情况下,解预测电路3以数位有效性(significance)的降序预测部分平方根(partial square root),其中部分平方根由代表平方根的部分数位的值构成。

中间值计算电路4使用由解预测电路3预测的一个或者多个部分解、通过预定计算来生成中间值,并且在寄存器1中存储由中间值和通过符号扩展向中间值附加的一个或者多个扩展符号位构成的数值。

解生成电路5依次获取由解预测电路3预测的一个或者多个部分解,并且基于一个或者多个部分解来生成解。例如,在除法的情况下,解生成电路5依次获取由解预测电路3预测的一个或者多个部分商并且生成商。在平方根计算的情况下,解生成电路5依次获取由解预测电路3预测的一个或者多个部分平方根并且生成平方根。

错误检测电路6比较由存储于寄存器1中的中间值1a的符号位所代表的值与由构成扩展符号1b的一个或者多个扩展符号位之一所代表的值,并且在比较的值不同时输出错误信号。例如,错误检测电路6是连接到中间值1a的符号位和一个或者多个扩展符号位之一的异或电路,并且异或电路6a接收符号位和扩展符号位的值并且输出接收的值的异或。当异或电路6a的输出为“1”时,输出信号为错误信号。

在上述配置的算术电路中,预处理电路2在寄存器1中存储将对其进行算术运算的一个或者多个数值。然后,解预测电路3预测部分解,并且中间值计算电路4生成中间值、进行中间值的符号扩展(即产生由中间值和通过符号扩展向中间值附加的一个或者多个扩展符号位构成的数值)并且在寄存器1中存储符号扩展的中间值。

当中间值如上所述存储于寄存器1中时,解预测电路3重新预测与构成解的部分数位相对应的部分解,其中部分数位比与解预测电路3已经预测的一个或者多个部分解相对应的一个或者多个数位具有更低的有效性。然后,中间值计算电路4基于重新预测的部分解来重新生成中间值、进行重新生成的中间值的符号扩展并且在寄存器1中存储符号扩展的中间值。随后,重复地进行部分解的预测和中间值的更新直至完成与解的数位的预定数目相对应的部分解的预测。

解生成电路5通过组合由解预测电路3预测的部分解来形成解。

此外,每当中间值存储于寄存器1中时,错误检测电路6检测错误。当正确地预测解时,中间值的符号位的值与通过符号扩展附加的扩展符号位的值相同,使得错误检测电路6不输出错误信号。当解预测电路3在部分解的预测中出错时,由中间值计算电路4生成的中间值也变成错误值。当预测错误的部分解时并且重复部分解的预测和中间值的生成时,中间值中发生溢出。当中间值中发生溢出时,中间值的最高有效非符号位的值存储于中间值的符号位的位置中。因此,扩展符号1b变得不同于中间值的符号位,使得检测电路6输出错误信号。

如上所述,可以高可靠性地检测由解预测电路3在部分解的预测中的错误引起的错误。由于错误是由内置于算术电路中的错误检测电路6来检测,所以可以在算术电路运算时总是检测出错误的出现或者未出现。因此,即使在部分解的预测中很少出现错误的情况下,错误检测电路6仍可以在错误实际上出现时输出错误信号。由于错误信号是从错误检测电路6输出,所以有可能防止在后处理电路中使用错误的解,后处理电路通常使用由解生成电路5生成的解。因此,提高了计算结果的可靠性。此外,由于错误检测电路6当中间值溢出时检测出错误,所以可以容易地确定错误的原因。另外,由于错误检测电路6例如可以由异或电路6a实现,所以可以通过增加很少量的逻辑电路来检测失效(failure)。

虽然上文说明了由于解预测电路3在部分解的预测中的错误而出现错误的例子,但是也可以由于其它原因而产生中间值的溢出。在一些情况下,算术电路例如由于LSI(大规模集成电路)中的早期失效(比如晶体管单元的固定失效或者由比如放射性这样的因素而引起的软件失效)而没有如预期的那样操作。图1的算术电路甚至可以在中间值的溢出发生时检测上述失效。因此,在图1的算术电路内置于产品中安装的LSI中的情况下提高了包含算术电路的产品的可靠性。因此,图1的算术电路可以有助于提高通称为RAS的可靠性、可用性和可服务性。

图1的算术电路可以使用于包括除法器或者平方根计算器的所有减法和移位型算术电路中。在除法器和平方根计算器中,解预测电路3的设计并不容易,并且错误可能出现于解预测电路3的设计中。当使用图1的算术电路时,有可能进行减法和移位型除法器和平方根计算器中的解预测电路的运算验证,并且因此防止出现由解预测电路的设计中的失误引起的缺陷。

此外,也有可能在通过使用与图1的算术电路等效的电路来进行逻辑仿真时通过逻辑仿真来检测在部分解的预测中的错误。另外,即使在由软件进行减法和移位型算术的情况下,可以通过向软件添加进行与图1中的错误检测电路6类似的运算的模块来检测中间值的溢出。

下文说明除法器的例子作为第二和第三实施例而说明平方根计算器的例子作为第四和第五实施例。

下面说明实现检测故障的根据第二实施例的除法器。首先说明使用递推方程的减法和移位型算术的序列,然后说明在符号位之间的比较为何实现逻辑检验器的功能的原因。

在以下说明中,被除数由op1(操作数1)表示,除数由op2(操作数)表示,而基数由k表示(其中k=2m,而m为自然数)。

通常,在除法运算之前进行除数op2和被除数op1的最高有效数位的位置的对准。在下文中,已经经历数位位置对准的被除数op1和除数op2分别称为数位对准的被除数和数位对准的除数,并且分别由OP1(操作数1)和OP2(操作数2)表示。在以下方程中分别表明数位对准的被除数OP1和数位对准的除数OP2。

OP1=op1×ka  (其中a为整数)

OP2=op2×kb(其中b为整数)

在对准时,将数位位置移位,使得数位对准的除数OP2和数位对准的被除数OP1的最高有效数位的位置相匹配或者数位对准的被除数OP1的最高有效数位的位置从数位对准的除数OP2的最高有效数位的位置右移一个数位。

用于获得商和余数的减法和移位型算术序列由递推方程(1)定义。

r(n)=k×r(n-1)-q(n-1)×OP2

r(0)=OP1...(1)

这时,q(n-1)为选择成满足不等式判据|r(n)|<OP2的整数。虽然用于q(n-1)的多个候选可以存在于满足条件|q(n-1)|<k的范围中,但是可以选择候选中的任意一个。在递推方程(1)中,r(n)称为第n个中间余数,而q(n-1)称为与第n个有效数位相对应的部分商。

恢复算法是选择表明部分商q(n-1)的整数使得中间余数r(n)总是为零或者为正的计算算法。非恢复算法是允许中间余数r(n)为负的计算算法。SRT算法是允许中间余数r(n)为负并且仅基于中间余数r(n)的少数有效位来确定是否满足不等式判据|r(n)|<OP2的计算算法。

也就是说,根据恢复算法,中间余数r(n)总是限于零或者正数。在这种情况下,用于每个部分商q(n-1)的候选被自动并唯一地确定为零或者正数。另一方面,根据非恢复算法或者SRT算法,允许中间余数r(n)为负。在这种情况下,每个部分商q(n-1)可以为负,并且可以存在用于每个部分商q(n-1)的多个候选。

当由在将数位对准的被除数OP1除以数位对准的除数OP2的过程中获得的第一至第n个有效数位构成的商由Q(n)表示时,商Q(n)可以通过使用部分商q(0),q(1),...,q(n-2)和q(n-1)表达为:

Q(n)=q(0)×kn-1+q(1)×kn-2+...+q(n-2)×k+q(n-1)

...(2)

根据方程(1)导出以下方程。

r(n)=k×r(n-1)-q(n-1)×OP2

=k×{k×r(n-2)-q(n-2)×OP2}-q(n-1)×OP2

=k2×r(n-2)-{k×q(n-2)+q(n-1)}×OP2

=k3×r(n-3)-{k2×q(n-3)+k×q(n-2)+q(n-1)}×OP2

=kn×r(0)-{kn-1×q(0)+kn-2×q(1)+...+k2×q(n-3)+

k×q(n-2)+q(n-1)}×OP2

=kn×r(0)-Q(n)×OP2

...(3)

通过针对r(0)求解方程(3)并且将方程OP2=op2×kb代入针对r(0)求解的方程(3)中来获得以下方程(4)。由于OP2=op2×kb,所以方程(3)等效于方程(4)。(等效性由<->表示。)

<->

r(0)={Q(n)×OP2+r(n)}/kn

={Q(n)×kb/kn}×op2+r(n)/kn    ...(4)

此外,通过在方程(4)中用OP1替换r(0)并且将方程OP1=op1×ka代入方程(4)中来获得以下方程(5)。由于r(0)=OP1=op1×ka,所以方程(4)等效于方程(5)。

<->

op1={Q(n)×kb/kn+a}×op2+r(n)/kn+a  ...(5)

在被除数op1除以除数op2的情况下,商和余数满足关系op1=(商)×op2+(余数)。鉴于方程(3)、(4)和(5),商可以表达为:

Q(n)×kb/kn+a,并且...(6)

余数可以表达为:

r(n)/kn+a。...(7)

在定点除法的情况下,通常重复根据递推方程(1)的算术运算直至方程(6)和(7)中的任一方程的右侧变成非整数。在浮点除法的情况下,重复根据递推方程(1)的算术运算直至商Q(n)的数位的数目达到与有效数位和附加数位的总数相等的必需数目。必需有效数位例如包括Q(n)的归一化表示的分数部分的23位(在根据IEEE 754标准的单精度浮点格式的情况下)或商Q(n)的归一化表示的分数部分的52位(在根据IEEE 754标准的双精度浮点格式的情况下)。附加位包括用于所谓隐藏位的一位(在商Q(n)的归一化表示中的整数部分中)和用于舍入的少数有效性更低的位。(舍入意味着:根据某种规则由近似值代表数值。例如,舍去有效性比有效数位更低的数位。)

在用于进行上述减法和移位型算术的逻辑设计中,根据递推方程(1)和对满足不等式判据|r(n)|<OP2的整数q(n-1)的选择在运算中需要谨慎。

具体而言,在用于确定是否满足不等式判据|r(n)|<OP2的逻辑中,可能出现逻辑错误并且难以发现。在20世纪90年代,在个人计算机中的CPU(中央处理单元)中进行的浮点除法中使用SRT算法。然而,在发货之后发现了在产品中响应于特定输入值在计算结果中出现错误的事实,并且召回产品。上述错误的原因在于在确定是否满足不等式判据|r(n)|<OP2中的错误。即使在计算结果中出现错误的频率低的情况下,除非保证计算结果的正确性,否则不可能使用于科学和技术领域中。因此,有必要置入防止错误的计算结果传递到后续处理阶段的电路。

根据第二实施例,当在确定是否满足不等式判据|r(n)|<OP2中出现错误时,检测出该确定中的错误,并且输出错误信号。下文说明用于检测在确定是否满足不等式判据|r(n)|<OP2中的错误的逻辑。

下面将首先考虑在确定是否满足不等式判据|r(n)|<OP2中出现错误之后进行的运算。

当在确定是否满足不等式判据|r(n)|<OP2中出现错误时,选择错误的部分商q(n-1),并且此后继续条件|r(n)|≥OP2,使得中间余数如下所示不会收敛。由于整数q(n-1)满足|q(n-1)|≥k,所以当|r(n)|≥OP2时,

r(n+1)=|k×r(n)-q(n)×OP2|

≥|k×(±OP2)-q(n)×OP2|

=|±k-q(n)|×OP2

≥OP2...(8)

也就是说,在条件|r(n)|≥OP2存在时,条件|r(n+1)|≥OP2必然地存在。换而言之,在确定是否满足不等式判据|r(n)|<OP2中出现错误之后相继地出现错误(即相继获得的中间余数保持于发散条件下)。

在许多情况下,在发散条件之下当重复根据递推方程(1)的算术运算时中间余数溢出。由于中间余数的溢出意味着中间余数的值变得太大而无法存储于算术电路中为中间余数提供的数位中,所以在算术电路中存储作为中间余数的值由于溢出所引起的丢失一些有效位而变成错误的。错误的中间余数的出现导致相继生成错误的中间余数和错误的中间商。因而,当在确定是否满足不等式判据|r(n)|<OP2中出现错误时,相继地生成在发散条件下的中间余数或者相继地生成错误的中间余数和错误的中间商。在任一情况下,不可能在上述情形之下获得商的正确值。

鉴于上情况,根据第二实施例,通过从上述错误状态之中检测中间余数的溢出来检测在确定是否满足不等式判据|r(n)|<OP2中的错误。在以下说明中,假设算术电路由具有符号扩展功能的数字电路实现。符号扩展是如下运算,该运算是在位串列(bit series)代表有符号数并且具有比存储区的位宽度更短的长度时进行的并且在该运算中存储区中的一个或者多个空数位由一个或者多个适当的位填充同时保留有符号数的标识。在本实施例中,假设通过用各自具有与符号位的值相同的值的一位或者多位来填充位于有效侧上的一个或者多个空数位来进行符号扩展。

如前所述,在算术运算之前,进行除数和被除数的最高有效数位的位置对准。在对准时,将数位位置移位,使得数位对准的除数OP2和数位对准的被除数OP1(=r(0))的最高有效位的位置相匹配或者数位对准的被除数OP1(=r(0))的最高有效数位的位置从数位对准的除数OP2的最高有效数位的位置右移一个数位。此后,只要算术运算在逻辑上正确,在满足不等式判据|r(n)|<OP2之时进行算术运算。因此,中间余数r(n)的最高有效数位的有效性不超过数位对准的除数OP2的最高有效数位的有效性,并且只要算术运算在逻辑上正确,数位对准的除数OP2的符号位的位置与中间余数r(n)的符号位的位置匹配。由于各自具有与中间余数r(n)的符号位的值相同的值的一个或者多个位通过符号扩展位于中间余数r(n)的有效侧(significant side)上,所以中间余数r(n)的符号位的值通常可以有望与位于中间余数r(n)的符号位的有效侧上的每个位的值相同。如果发现中间余数r(n)的符号位的值与位于中间余数r(n)的符号位的有效侧上的位的值不相同,则有可能确定数据溢出到符号位的位置中。

在中间余数r(n)的符号位(位置紧邻中间余数r(n)的最高有效非符号位左侧并且是符号位中的最右符号位)的值由s0表示,并且扩展符号位中紧邻上述符号位右侧的扩展符号位(即扩展符号位中的最右扩展符号位)的值由s1表示的情况下,可以仅基于上述两个符号位的异或(s0 XOR s1)来检测逻辑失效,因为在没有出现错误时(s0 XOR s1)=0而在出现错误时(s0 XOR s1)=1。因此,向上述算术电路添加的、并且用于检测在确定是否满足不等式判据|r(n)|<OP2中的错误的逻辑电路可以仅由一个异或电路(XOR门)来实现。

图2图示了根据第二实施例的除法器。图2的除法器包括预处理电路11、中间余数寄存器12、除数寄存器13、商预测电路14、加数生成电路15、加法器16、商生成电路17、商寄存器18和异或电路19。

预处理电路11进行预处理,比如被除数和除数的数位位置的对准。预处理电路11具有分别连接到中间余数寄存器12和除数寄存器13的输出信号线,并且在中间余数寄存器12中存储数位对准的被除数OP1而在除数寄存器13中存储数位对准的除数OP2。

中间余数寄存器12是用于存储中间余数的寄存器。例如,可以使用位宽度为64位的寄存器作为中间余数寄存器12,用于以根据IEEE 754标准的双精度浮点格式存储中间余数。中间余数寄存器12具有分别连接到商预测电路14、加法器16和如下电路(未示出)的输出信号线,该电路进行对作为由图2的除法器进行的除法的结果而获得的最终余数的后处理。

商预测电路14基于中间余数寄存器12中保存的中间余数和除数寄存器13中存储的数位对准的除数OP2来预测部分商q(n-1)。(虽然在图2中未指明除数寄存器13与商预测电路14之间的连接,但是商预测电路14可以查询除数寄存器13以便使用数位对准的除数OP2进行上述预测。)具体而言,商预测电路14确定部分商q(n-1),使得数位对准的除数OP2和通过递推方程(1)获得的中间余数满足不等式判据|r(n)|<OP2。然而,当商预测电路14具有逻辑失效并且出现使逻辑失效明显的数位对准的除数OP2与中间余数的组合时,或者当出现晶体管单元的固定失效或者由比如放射性这样的因素引起的软件错误时,商预测电路14可以预测导致违反不等式判据|r(n)|<OP2的部分商q(n-1)。商预测电路14具有分别连接到加数生成电路15和商生成电路17的输出信号线。

加数生成电路15计算要与中间余数相加的值(加数)。具体而言,加数生成电路15计算由商预测电路14预测的部分商q(n-1)与从除数寄存器13获取的数位对准的除数OP2的乘积、并且将该乘积与-1相乘以便反转乘积的符号。加数生成电路15具有连接到加法器16的输出信号线,使得加数生成电路15的输出被提供给加法器15。

加法器16将输入的值相加。具体而言,加法器16将加数生成电路15计算的加数与存储于中间余数寄存器12中的中间寄存器相加。加法器16具有连接到中间余数寄存器12的输出信号线,使得在中间余数寄存器12中存储从加法器16输出的加法结果作为中间余数。

当除数和部分商均为正时,加数生成电路15获得的加数为负值。在这种情况下,加法器16进行的加法是从中间余数中减去加数生成电路15获得加数的绝对值的运算。根据本实施例,负数由二的补码代表。二进制数的二的补码通过将二进制数的每个位取非(布尔求补或者求逆)并且加一来获得。也就是说,加数生成电路15在计算结果为负时输出以二的补码表示的计算结果。在这种情况下,加法器16将加数生成电路15的计算结果与中间余数相加并且忽略来自相加结果中的最高有效位的进位。这样,实现了负数的加法。

商生成电路17基于已经由商预测电路14生成的一个或者多个部分商来生成商值并且输出生成的商值。商生成电路17具有连接到商寄存器18的输出信号线,并且在商寄存器18中写入由商生成电路17生成的商值。具体而言,每当商预测电路14重新预测部分商时,商生成电路17读入当前存储于商寄存器18中的商值,将商值左移预定数目的数位并且将重新预测的部分商与由于移位而空出的、预定数目的数位相加并且在商寄存器18中写入被相加了重新预测的部分商的商值。

商寄存器18是用于存储商值的寄存器。商寄存器18具有分别连接到商生成电路17和如下电路(未示出)的输出信号线,该电路进行商的最终值(最终商)的后处理。

异或电路19连接到中间余数寄存器12。具体而言,存储于中间余数寄存器12中的中间余数的符号位的输出信号线和位于中间余数寄存器中的中间余数的符号位的有效侧上的扩展符号位的输出信号线连接到异或电路19的输入。

图3图示了中间余数寄存器和异或电路的连接的例子。在图3的例子中,中间余数寄存器12具有64位的宽度。在中间余数寄存器12中,以有效性的升序存储用于舍入的位串列12a、中间余数的位串列12b和扩展符号位串列12c。

用于舍入的位串列12a包括中间余数寄存器12中的少数有效性更低的位(例如两位)并且表明用于对中间余数进行舍入的值。

位串列12b位于用于舍入的位串列12a的有效侧上。起初,数位对准的被除数OP1存储于位串列12b中。随后,每当进行加法器16的运算时,在位串列12b中存储运算的结果作为中间余数。例如,中间余数寄存器12中的53位用于位串列12b。位串列12b的最高有效位为符号位12d。符号位12d表明:表明中间余数的符号的值。在中间余数为正时符号位为“0”,而在中间余数为负时符号位为“1”。

扩展符号位串列12c位于位串列12b的有效侧上。扩展符号位存储于扩展符号位串列12c中。在中间余数为正时,每个扩展符号位为“0”,而在中间余数为负时,每个扩展符号位为“1”。

在图3的例子中,存储于中间余数寄存器12中的中间余数的符号位和中间余数寄存器12中的扩展符号位12c的最低有效扩展符号位12e连接到异或电路19的输入,使得异或电路19计算向异或电路19中输入的两位的异或。异或电路19在两个输入位相同时输出“0”而在两个输入位不同时输出“1”。

根据本实施例,通过使用具有图2和图3中所示构造的除法器来进行除法运算。下文概括根据第二实施例的除法器的运算。

为了进行除法运算,向预处理电路11中输入被除数op1和除数op2。然后,预处理电路11进行被除数和除数的数位位置的对准,从而生成数位对准的被除数OP1和数位对准的除数OP2。预处理电路11在中间余数寄存器12中存储数位对准的被除数OP1而在除数寄存器13中存储数位对准的除数OP2。随后,商预测电路14预测与根据存储于中间余数存储器12中的数位对准的被除数OP1获得的最高有效位相对应的部分商并且向加数生成电路15和商生成电路17中输入预测的部分商。

商生成电路17在商寄存器18中照原样存储先由商预测电路14预测的部分商。

此外,加数生成电路15计算输入的部分商与数位对准的除数OP2的乘积、反转乘积的符号以生成加数并且将加数输入到加法器16。加法器16将由加数生成电路15计算的加数与起初存储于中间余数寄存器12中的数位对准的被除数OP1相加,并且中间余数寄存器12的内容从数位对准的被除数OP1更新成中间余数。

当中间余数寄存器12的内容被更新时,商预测电路14重新预测与下一有效数位对应的部分商并且将预测的部分商输入到加数生成电路15和商生成电路17。然后,商生成电路17将存储于商寄存器18中的值左移、将重新预测的部分商与位于移位的值的有效性更低的一侧上的数位相加,并且用被相加了重新预测的部分商的值来更新商寄存器18的内容。

随后,加数生成电路15计算输入的部分商与数位对准的除数OP2的乘积、反转乘积的符号以生成加数并且将加数输入到加法器16。加法器16将由加数生成电路15计算的加数与存储于中间余数寄存器12中的中间余数相加,并且用加法器16的输出更新中间余数寄存器12的内容。

随后,重复地进行部分商的预测和基于预测的部分商的运算直至获得具有期望数目的数位的最终商。因此,最终分别在商寄存器18和中间余数寄存器12中存储通过将数位对准的被除数OP1除以数位对准的除数OP2所获得商和余数。

在上述除法过程中,除非商预测电路13在部分商的预测中出错,否则扩展符号位串列12c中的最低有效位12e的值总是与符号位12d的值相同。

图4图示了正常地确定部分商的除法的例子。在图4的例子中,为求简化,处理的数为8位二进制数,并且被假设已经经历了数位位置的对准,其中数位对准的被除数OP1为“+11000000”,而数位对准的除数OP2为“+10000001”。在这种情况下,除法器进行除法OP1÷OP2=(+11000000)÷(+10000001)。

在图4中,在左半部中表明除法过程,而在右半部中表明中间余数寄存器在除法过程期间的相应阶段中的内容。在中间余数寄存器在各阶段的所示的位中,最左位为扩展符号位中的前述最低有效扩展符号位,从左侧起的第二位为中间余数的前述符号位,而在符号位的右侧上图示的八个位表明中间余数的非符号位。

商预测电路14以数位有效性的降序、在逐位基础上预测部分商。当中间余数为正时,符号位和在符号位的有效侧上表明的扩展符号位均为零。当中间余数为负时,符号位和扩展符号位均为一。在任一情况下,只要正常地进行部分商的预测,则符号位和扩展符号位相同。

当商预测电路14具有逻辑失效时,或者当出现晶体管单元的固定失效或者由比如放射性这样的因素引起的软件错误时,商预测电路14可能在除法过程期间、在部分商的预测中出错,即商预测电路14可能预测导致违反不等式判据|r(n)|<OP2的部分商q(n-1)。当违反不等式判据|r(n)|<OP2时,发生中间余数的溢出,使得在要设置中间余数的符号位的符号位12d的位置中设置与中间余数的符号位不同的数值。因此,符号位的值变成不同于扩展符号位中的最低有效扩展符号位的值。

图5图示了错误地确定部分商的除法的例子。在图5的例子中,在与第四有效数位对应的部分商q(3)的确定中出现错误。在该确定中,为了满足不等式判据|r(4)|<OP2,确定部分商q(3)为一。然而,在图5的例子中,商预测电路14错误地确定部分商为零。

通过使用与第四有效数位对应的、上述错误的部分商来计算的中间余数变成大于数位对准的除数OP2。在图5的例子中,通过使用与第四有效数位对应的、错误的部分商来计算的中间余数变成由九个数位代表的数值、即数位的数目超过存储于中间余数寄存器中的中间余数的位数,使得中间余数发散并且发生溢出。结果,在符号位的位置设置用溢出计算的中间余数的最高有效数位的值,使得尽管中间余数为正,但是符号位的值变成“1”。这时,扩展符号位中的最低有效扩展符号位仍然为“0”。也就是说,符号位的值变成不同于扩展符号位的最低有效扩展符号位的值。由异或电路19检测在符号位与扩展符号位的最低有效扩展符号位之间的值的一致或者不一致。当异或电路19的输出信号为“1”时,输出信号为错误通知。

附带提及,在中间余数一旦发散之后如何进行计算的运算是未知的。例如,是否如在图5的右半部中所示那样进行计算的运算是未知的。

如上所述,根据第二实施例,可以通过仅将异或电路19连接到中间余数寄存器12来检测中间余数的溢出。因此,当商预测电路14在部分商的预测中出错时,有可能发出错误通知。由于可以通过简单添加异或电路19来实现检测部分商的预测中的错误的功能,所以可以最小化由于实现该功能所引起的算术电路的规模的增加。

下面说明使用CSA(carry save adder,进位保存加法器)的根据第三实施例的除法器。

图6图示了根据第三实施例的除法器。图6的除法器包括预处理电路21、中间余数寄存器22a和22b、除数寄存器23、商预测电路24、加数生成电路25、CSA(进位保存加法器)26、商生成电路27、商寄存器28和加法器/溢出检测器29。

预处理电路21进行预处理,比如被除数和除数的数位位置的对准。预处理电路21具有分别连接到中间余数寄存器22a和22b以及除数寄存器23的输出信号线,并且在中间余数寄存器22a中存储数位对准的被除数OP1并在除数寄存器23中存储数位对准的除数OP2。

中间余数寄存器22a和22b是为了单独地存储和与进位而提供的寄存器。例如,和的值存储于中间余数寄存器22a中,而进位的值存储于中间余数寄存器22b中。中间余数寄存器22a和22b具有分别连接到商预测电路24、CSA 26和加法器/溢出检测器29的输出信号线。

商预测电路24基于中间余数寄存器22a和22b中存储的中间余数(即基于分别地存储于中间余数寄存器22a和22b中并且表明中间余数的和与进位)来预测部分商q(n-1)。商预测电路24具有分别连接到加数生成器25和商生成电路27的输出信号线。(虽然在图6中未表明在除数寄存器23与商预测电路24之间的连接,但是商预测电路24可以查询除数寄存器23以便使用数位对准的除数OP2来进行上述预测。)

加数生成电路25计算要与中间余数相加的值(加数)。具体而言,加数生成电路25计算由商预测电路24预测的部分商q(n-1)与从除数寄存器23获取的数位对准的除数OP2的乘积,并且将乘积与-1相乘以便反转乘积的符号。加数生成电路25具有连接到CSA26的输出信号线,并且加数生成电路25的输出被提供给CSA 26。

CSA 26基于输入的值来进行加法处理并且输出由分离的和与进位表示的中间余数。CSA 26针对各数位获得和与进位并且针对各数位单独地输出来自该数位的进位以及无进位的和。具体而言,CSA 26基于由加数生成电路25计算的加数以及存储于中间余数寄存器22a和22b并且表明中间余数的和与进位来进行加法处理。CSA 26具有连接到中间余数寄存器22a和22b的输出信号线,使得通过由CSA26进行的加法处理而获得的和与进位分别存储于中间余数寄存器22a和22b中。

商生成电路27基于已经由商预测电路24生成的一个或者多个部分商来生成商值,并且输出生成的商值。商生成电路27具有连接到商寄存器28的输出信号线。

商寄存器28是用于存储商值的寄存器。商寄存器28具有分别连接到商生成电路27和如下电路(未示出)的输出信号线,该电路进行商的最终值(最终商)的后处理。

加法器/溢出检测器29从中间余数寄存器22a和22b获取和与进位,基于和与进位来进行加法处理并且生成余数。加法器/溢出检测器29计算的余数是在完成除法过程之前的中间余数。当完成除法过程时,加法器/溢出检测器29计算最终余数并且将最终余数输出到进行后处理的电路(未示出)。

此外,加法器/溢出检测器29进行用于检测溢出的处理。具体而言,加法器/溢出检测器29确定计算的、包括符号位的余数的数位数目是否超过预定数目并且在确定为是时输出错误检测信号。

根据第三实施例,通过使用具有图6中所示构造的除法器来进行除法运算。下面概括根据第三实施例的除法器的运算。

为了进行除法运算,向预处理电路21中输入被除数op1和除数op2。然后,预处理电路21进行被除数和除数的数位位置的对准,从而生成数位对准的被除数OP1和数位对准的除数OP2。预处理电路21在中间余数寄存器22a中存储数位对准的被除数OP1而在除数寄存器23中存储数位对准的除数OP2。随后,商预测电路24预测与根据存储于中间余数寄存器22a中的数位对准的被除数OP1获得的最高有效数位相对应的部分商,并且将预测的部分商输入到加数生成电路25和商生成电路27。商生成电路27在商寄存器28中照原样存储先由商预测电路24预测的部分商。此外,加数生成电路25计算输入的部分商与数位对准的除数OP2的乘积、反转乘积的符号以生成加数并且将加数输入到CSA 26。CSA 26将加数生成电路25计算的加数与起初存储于中间余数寄存器22a中的数位对准的被除数OP1相加,并且输出由和与进位表示的计算结果。这时,在中间余数寄存器22a中写入和,而在中间余数寄存器22b中写入进位。当中间余数寄存器22a和22b的内容被更新时,商预测电路24基于中间余数寄存器22a和22b的内容来重新预测与下一有效数位相对应的部分商,并且将预测的部分商输入到加数生成电路25和商生成电路27。然后,商生成电路27将存储于商寄存器28中的值左移,将重新预测的部分商与位于移位的值的有效性更低的一侧上的数位相加,并且用被相加了重新预测的部分商的值来更新商寄存器28的内容。随后,加数生成电路25计算输入的部分商与数位对准的除数OP2的乘积,反转乘积的符号以生成加数,并且将加数输入到CSA 26。CSA 26基于中间余数寄存器22a中存储的和、中间余数寄存器22b中存储的进位以及加数生成电路25的计算结果来进行加法处理。然后,在中间余数寄存器22a中写入通过CSA 26的处理所获得的和,而在中间余数寄存器22b中写入通过CSA 26的处理所获得的进位。随后,重复地进行部分商的预测和基于预测的部分商的运算直至获得具有期望数目的数位的最终商。这样,最终在商寄存器28中存储通过将数位对准的被除数OP1除以数位对准的除数OP2所获得的商,并且分别在中间余数寄存器22a和22b中存储通过将数位对准的被除数OP1除以数位对准的除数OP2所获得的、代表余数的和与进位。另外,当中间余数寄存器22a和22b的内容被更新时,加法器/溢出检测器29计算中间余数并且确定是否发生溢出。当确定发生溢出时,加法器/溢出检测器29输出错误检测信号。当完成除法过程时,加法器/溢出检测器29基于中间余数寄存器22a和22b的内容来计算最终余数。

如上所述,甚至可以在使用CSA的除法器中检测中间余数的溢出,因此当商预测电路24在部分商的预测中出错时,除法器可以输出错误检测信号。

下面说明检测解的预测中的错误的、根据第四实施例的平方根计算器。首先说明使用递推方程的减法和移位型算术的序列,然后说明为何符号位之间的比较作为逻辑检验器来工作的原因。

在以下说明中,作为被开方数(即作为要计算其平方根的对象)输入的数值与中间解(在中间阶段中获得的平方根)的平方的差称为中间余数,而作为被开方数输入的数值与最终解(在最终阶段中获得的平方根)的平方的差称为最终余数。在根据第四实施例的平方根计算中也进行中间余数的符号扩展。此外,负数由于二的补码代表。

仅一个由op3表示的数值被输入到根据第四实施例的平方根计算器,并且平方根计算器获得被开方数op3的平方根。被开方数op3经历数位对准,并且数位对准的被开方数OP3由以下方程表示。

OP3=op3×kb(其中k为基数,而b为整数)

类似于除法中的商,可以通过使用部分平方根q(0)至q(n-1)来表达由第一至第n个数位构成的平方根Q(n)。

Q(n)=q(0)×kn-1+q(1)×kn-2+...+q(n-2)×k+q(n-1),

...(9)

其中Q(0)定义为零。通过使方程(9)变形来获得以下方程。

Q(n)=q(0)×kn-1+q(1)×kn-2+...+q(n-2)×k+q(n-1)

=k×{q(0)×kn-2+q(1)×kn-3+...+q(n-2)}+q(n-1)

=k×Q(n-1)+q(n-1)...(10)

通过使用数位对准的被开方数OP3和平方根Q(n),可以由以下递推方程(11)定义减法和移位型平方根计算,其中r(n)表示第n个中间余数。

r(n)=k2×r(n-1)-2k×Q(n-1)×q(n-1)-q2(n-1)

r(0)=OP3...(11)

(递推方程(11)的证明将在后文中称为证明1。)

这时,部分平方根q(n-1)是选择成满足不等式判据|r(n)-1|<2Q(n)的整数。虽然对于整数的多个候选可以存在于满足条件|q(n-1)|<k的范围中,但是可以选择任意一个候选。也就是说,通过使用不等式判据|r(n)-1|<2Q(n)来计算部分平方根q(n-1)。(使用不等式判据|r(n)-1|<2Q(n)的适当性的证明将在后文中称为证明2。)

因此,类似于除法过程,在中间余数r(n)的符号位(位置紧邻中间余数r(n)的最高有效数位右侧并且是符号位中的最右符号位)的值由s0表示,并且扩展符号位中紧邻上述符号位右侧的扩展符号位(即扩展符号位中的最右扩展符号位)的值由s1表示的情况下,可以仅基于上述两个符号位的异或(s0 XOR s1)来检测逻辑失效,因为当没有出现错误时(s0XORs1)=0而当出现错误时(s0XOR s1)=1。(当出现错误时(s0XOR s1)=1的证明将在后文中称为证明3)

下面表明可以通过使用递推方程(11)来进行平方根计算的前述证明1。

由于存在关系Q2(n)≈OP3=r(0),所以如方程(12)中所示,可以通过使用r(0)和Q2(n)来表达中间余数r(n)。

r(n)=k2n×r(0)-Q2(n)...(12)

另外,根据方程(10)导出以下方程。

r(n)=k2n×r(0)-{k×Q(n-1)+q(n-1)}2

=k2n×r(0)-{k2×Q2(n-1)+2k×Q(n-1)×q(n-1)+q2(n-

1)}

=k2×{k2(n-1)×r(0)-Q2(n-1)}-2k×Q(n-1)×q(n-1)-

q2(n-1)

=k2×r(n-1)-2k×Q(n-1)×q(n-1)-q2(n-1)...(13)

也就是说,导出递推方程(11)。

下面表明可以在部分平方根q(n-1)的计算中适当地使用不等式判据|r(n)-1|<2Q(n)的前述证明2。

不等式判据|r(n)-1|<2Q(n)等效地改写如下。

-2Q(n)+1<r(n)<2Q(n)+1...(14)

下文证明对于n=1存在方程(14)。随后,证明当对于n-1存在方程(14)时对于n>1存在方程(14)。

当n=1,Q(1)=q(0)>0时,期望选择q(0)以便满足条件|k(OP3)1/2-q(0)|<1,因为k(OP3)1/2和q(0)的数位位置对准,使得k(OP3)1/2和q(0)的最高有效数位的位置匹配,并且选择q(0),使得|k(OP3)1/2和q(0)的整数部分匹配。也就是说,

-1<k×(OP3)1/2-q(0)<1

<->

-1<k×(r(0))1/2-q(0)<1...(15)

联立不等式(15)中的左侧不等式引出以下不等式(16)。

0<k×(r(0))1/2-q(0)+1

<->

0<(k×(r(0))1/2+q(0)-1)(k×(r(0)1/2)-q(0)+1)

<->

0<k2×r(0)-(q(0)-1)2

<->

0<k2×r(0)-q2(0)+2q(0)-1

<->

-2q(0)<k2×r(0)-q2(0)-1...(16)

此外,联立不等式(15)中的右侧不等式引出以下不等式(17)。

k×(r(0))1/2-q(0)-1<0

<->

(k×(r(0))1/2+q(0)+1)(k×(r(0)1/2)-q(0)-1)<0

<->

k2×r(0)-(q(0)+1)2<0

<->

k2×r(0)-q2(0)-2q(0)-1<0

<->

k2×r(0)-q2(0)-1<2q(0)...(17)

鉴于q(0)>0的事实,不等式(16)和(17)可以概括为联立不等式(18)。

|k2×r(0)-q2(0)-1|<2q(0)

<->

|r(1)-1|<2Q(1)...(18)

也就是说,当n=1时存在方程(14)。

接着是当存在不等式-2Q(n-1)+1<r(n-1)时存在不等式-2Q(n)+1<r(n)的证明。

鉴于不等式-2Q(n-1)+1<r(n-1),方程(11)表达的r(n)可以估计如下。

r(n)=k2×r(n-1)-2k×Q(n-1)×q(n-1)-q2(n-1)

>k2×{-2Q(n-1)+1}-2k×Q(n-1)×q(n-1)-q2(n-1)

=-2kQ(n-1)×{k+q(n-1)}+{k+q(n-1)}×{k-q(n-1)}

={k+q(n-1)}×{-2k×Q(n-1)+k-q(n-1)}

={k+q(n-1)}×[-2×{k×Q(n-1)+2q(n-1)}+k+q(n-

1)]

={k+q(n-1)}×[-2Q(n)+k+q(n-1)]...(19)

由于不等式(19)的右侧为r(n)的下限,所以r(n)在任何情况下大于不等式(19)的右侧。当选择q(n-1)的值以使不等式(19)的右侧增加时,存在方程q(n-1)=-(k-1),因为鉴于-2Q(n)+k+q(n-1)<0并且1<k+q(n-1)≤2k-1的事实,当q(n-1)=-(k-1)时不等式(19)的右侧最大化。因此,通过将q(n-1)=-(k-1)代入不等式(19)来获得方程(20)。

r(n)>-2Q(n)+1...(20)

下面是当存在不等式r(n-1)<2Q(n-1)+1时存在不等式r(n)<2Q(n)+1的证明。

鉴于不等式r(n-1)<2Q(n-1)+1,方程(11)表达的r(n)可以估计如下。

r(n)=k2×r(n-1)-2k×Q(n-1)×q(n-1)-q2(n-1)

<k2×{2Q(n-1)+1}-2k×Q(n-1)×q(n-1)-q2(n-1)

=2kQ(n-1)×{k-q(n-1)}+{k+q(n-1)}×{k-q(n-1)}

={k-q(n-1)}×{2k×Q(n-1)+k+q(n-1)}

={k-q(n-1)}×[2×{k×Q(n-1)+2q(n-1)}+k-q(n-

1)]

={k-q(n-1)}×[2Q(n)+k-q(n-1)]...(21)

当选择q(n-1)的值以使不等式(21)的右侧减少时,存在方程q(n-1)=k-1。因此,获得方程(22)。

r(n)<2Q(n)+1...(22)

因此,不等式(20)和(22)可以概况为不等式判据|r(n)-1|<2Q(n)。也就是说,对于n>1满足不等式判据(14)。概括而言,完成了对于n≥1满足不等式判据(14)的证明。

下面表明当出现错误时(s0XOR s1)=1的前述证明3。

在根据方程(11)的平方根计算过程中,平方根Q(n)和中间余数r(n)各自为整数。然而,在这种情况下,将最高有效数位的位置左移与运算次数成比例的多个数位。在通过硬件实现平方根计算器的许多实际应用中,为了固定最高有效数位的位置,中间余数r(n)和平方根Q(n)分别由定义如下的数位移位的中间余数r′(n)和数位移位的平方根Q′(n)替换。

r′(n)=r(n)/kn

Q′(n)=Q(n)/kn...(23)

当递推方程(11)的两侧均除以kn时,获得以下递推方程(24)。

r′(n)

=k×r′(n-1)-2Q′(n-1)×q(n-1)-(1/kn)×q2(n-1)

r(0)=OP3...(24)

在这种情况下,用于在选择整数作为部分平方根q(n-1)时使用的前述不等式判据变成|r′(n)-1/kn|<2Q′(n)。当选择不满足不等式判据|r′(n)-1/kn|<2Q′(n)的整数作为部分平方根q(n-1)时,在重复部分平方根的预测时在数位移位的中间余数r′(n)的计算结果中发生溢出。换而言之,数位移位的中间余数r′(n)的计算结果的数位数目超过用于存储数位移位的中间余数r′(n)的区域的数位数目,使得数位移位的中间余数r′(n)的符号位s0(位置紧邻数位移位的中间余数r′(n)的非符号位的最高有效非符号位的右侧)的值不同于紧邻符号位s0右侧的扩展符号位s1的值。因此,可以仅基于上述两个符号位的异或(s0XOR s1)来检测逻辑失效,并且向算术电路添加的、用于检测在确定是否满足不等式判据|r′(n)-1/kn|<2Q′(n)中的错误的逻辑电路可以仅是一个异或电路(XOR门)。

图7图示了根据第四实施例的平方根计算器。图7的平方根计算器包括预处理电路31、中间余数寄存器32、平方根预测电路33、加数生成电路34、加法器35、平方根生成电路36、平方根寄存器37和异或电路38。

预处理31进行预处理,比如被开方数的数位位置的对准。预处理电路31具有连接到中间余数寄存器32的输出信号线并且在中间余数寄存器32中存储数位对准的被开方数OP3。

中间余数寄存器32是用于存储中间余数的寄存器。例如,可以使用位宽度为64位的寄存器作为中间余数寄存器32,用于以根据IEEE 754标准的双精度浮点格式存储中间余数。中间余数寄存器32具有分别连接到平方根预测电路33、加法器35和如下电路(未示出)的输出信号线,该电路进行对作为由图7的平方根计算器进行的平方根计算的结果而获得的最终余数的后处理。

平方根预测电路33基于中间余数寄存器32中保存的中间余数来预测部分平方根q(n-1)。具体而言,平方根预测电路33确定部分平方根q(n-1),使得根据递推方程(24)获得的中间余数满足不等式判据|r′(n)-1/kn|<2Q′(n)。然而,当平方根预测电路33具有逻辑失效并且出现使逻辑失效明显的数位移位的平方根Q′(n)与中间余数的值的具体组合时,或者当出现晶体管单元的固定失效或者由比如放射性这样的因素而引起的软件错误时,平方根预测电路33可以预测导致违反不等式判据|r′(n)-1/kn|<2Q′(n)的部分平方根q(n-1)。平方根预测电路33具有分别连接到加数生成电路34和平方根生成电路36的输出信号线。

加数生成电路34计算要与中间余数相加的值(加数)。具体而言,加数生成电路34计算{-2×Q′(n-1)×q(n-1)-(1/kn)×q2(n-1)}。计算的值由加法器35用于根据当前中间余数获得与其中并入了重新预测的部分平方根的新平方根相对应的新中间余数。在当前中间余数大于新中间余数的情况下,加数生成电路34获得的计算结果(加数)为负数。负数由二的补码表示。加数生成电路34具有连接到加法器35的输出信号线,并且加数生成电路34的输出被提供给加法器35。

加法器35将输入的值相加。具体而言,加法器将加数生成电路34计算的加数与存储于中间余数寄存器32中的中间余数相加。加法器35具有连接到中间余数寄存器32的输出信号线,使得在中间余数寄存器32中存储从加法器35输出的加法结果作为中间余数。类似于第一实施例中的加法器16,加法器35可以通过与由二的补码所表示的负数相加来进行减法。

平方根生成电路36基于已经由平方根预测电路33生成的一个或者多个部分平方根来生成平方根的值并且输出生成的平方根的值。平方根生成电路36具有连接到平方根寄存器37的输出信号线,并且在平方根寄存器37中写入由平方根生成电路36生成的平方根的值。具体而言,每当平方根预测电路33重新预测部分平方根时,平方根生成电路36读入当前存储于平方根寄存器37中的平方根的值,将平方根的值左移预定数目的数位,将重新预测的部分平方根与由于移位而空出的、预定数目的数位相加并且在平方根寄存器37中写入被相加了重新预测的部分平方根的平方根的值。

平方根寄存器37是用于存储平方根的值的寄存器。平方根寄存器37具有分别连接到加数生成电路34、平方根生成电路36和如下电路(未示出)的输出信号线,该电路进行平方根(最终平方根)的最终值的后处理。

异或电路38连接到中间余数寄存器32。具体而言,存储于中间余数寄存器32中的中间余数的符号位的输出信号线和位于中间余数寄存器32中的中间余数的符号位的有效侧上的扩展符号位的输出信号线连接到异或电路38的输入。也就是说,异或电路38以与图3中所示异或电路19到中间余数寄存器12的连接类似的方式连接到中间余数寄存器32。异或电路38计算输入到异或电路38中的两位的异或。异或电路38在两个输入位相同时输出“0”而在两个输入位不同时输出“1”。

根据本实施例,通过使用具有图7中所示构造的平方根计算器来进行平方根计算的运算。下面概括根据第四实施例的平方根计算器的运算。

为了进行平方根计算的运算,向预处理电路31中输入被开方数op3。然后,预处理电路31进行被开方数的数位位置的对准,使得生成数位对准的被开方数OP3。预处理电路31在中间余数寄存器32中存储数位对准的被开方数OP3。接着,平方根预测电路33预测与根据存储于中间余数寄存器32中的数位对准的被开方数OP3获得的最高有效数位相对应的部分平方根并且将预测的部分平方根输入到加数生成电路34和平方根生成电路36。平方根生成电路36在平方根寄存器37中照原样存储先由平方根预测电路33预测的部分平方根。此外,加数生成电路34计算{-2×Q′(n-1)×q(n-1)-(1/kn)×q2(n-1)}作为加数,并且将计算的加数输入到加法器35。加法器35将由加数生成电路34计算的加数与起初存储于中间余数寄存器32中的数位对准的被开方数OP3相加,并且中间余数寄存器32的内容从数位对准的被开方数OP3更新成中间余数。当中间余数寄存器32的内容被更新时,平方根预测电路33重新预测与下一有效数位相对应的部分平方根,并且将预测的部分平方根输入到加数生成电路34和平方根生成电路36。然后,平方根生成电路36将存储于平方根寄存器37中的值左移,将重新预测的部分平方根与位于移位的值的有效性更低的一侧上的数位相加,并且用被相加了重新预测的部分平方根的值来更新平方根寄存器37的内容。随后,加数生成电路34计算{-2×Q′(n-1)×q(n-1)-(1/kn)×q2(n-1)}作为加数,并且将加数输入到加法器35。加法器35将由加数生成电路34计算的加数与存储于中间余数寄存器32中的中间余数相加,并且用加法器35的输出更新中间余数寄存器32的内容。随后,重复地进行部分平方根的预测和基于预测的部分平方根的运算直至获得具有期望数目的数位的最终平方根。这样,最终分别在平方根寄存器37和中间余数寄存器32中存储通过数位对准的被开方数OP3的平方根计算所获得的数位对准的被开方数OP3的平方根和余数。

在上述平方根计算过程中,除非平方根预测电路33在部分平方根的预测中出错,否则中间余数的扩展符号位串列中的最低有效位的值总是与中间余数的符号位的值相同。

图8图示了正常地确定部分平方根的平方根计算的例子。在图8的例子中,为求简化,被开方数为8位二进制数并且被假设已经经历了数位位置的对准,并且数位对准的被开方数OP3为“+11111111”。平方根计算器计算数位对准的被开方数OP3的平方根。在图8中,在左半部中表明平方根计算过程,而在右半部中表明中间余数寄存器在平方根计算过程期间的相应阶段中的内容。在中间余数寄存器在各阶段中的所示的位中,最左位为扩展符号位中的最低有效扩展符号位,从左侧起的第二位为中间余数的符号位为中间余数的符号位,而在符号位的右侧上图示的九个位表明中间余数的非符号位。

平方根预测电路33以数位有效性的降序、在逐位基础上预测部分平方根。在中间余数为正时,符号位和在符号位的有效侧上表明的扩展符号位均为“0”。当中间余数为负时,符号位和扩展符号位均为“1”。在任一情况下,除非平方根预测电路3在部分平方根的预测中出错,否则符号位和扩展符号位相同。

当平方根预测电路33具有逻辑失效时,或者当出现晶体管单元的固定失效或者由比如放射性这样的因素引起的软件错误时,平方根预测电路33可能在平方根计算过程期间、在部分平方根的预测中出错,即平方根预测电路33可能预测导致违反不等式判据|r′(n)-1/kn|<2Q′(n)的部分平方根q(n-1)。当违反不等式判据|r′(n)-1/kn|<2Q′(n)时,发生中间余数的溢出,使得在要设置中间余数的符号位的符号位的位置中设置与中间余数的符号位不同的数值。因此,符号位的值变成不同于扩展符号位中的最低有效扩展符号位的值。

图9图示了错误地确定部分平方根的平方根计算的例子。在图9的例子中,在与第四有效数位对应的部分平方根q(3)的确定中出现错误。在该确定中,为了满足不等式判据|r′(4)-1/k4|<2Q′(4),确定部分平方根q(3)为一。然而,在图9的例子中,平方根预测电路33错误地确定部分平方根为零。

通过使用与第四有效数位对应的、上述错误的部分平方根来计算的中间余数的数位数目变成十,这超过中间余数寄存器32中的中间余数的位串列中的位数(九),从而发生溢出。结果,在符号位的位置设置用溢出计算的中间余数的最高有效数位的值,使得尽管中间余数为正,但是符号位的值变成“1”。这时,扩展符号位中的最低有效扩展符号位仍然为“0”。也就是说,符号位的值不同于扩展符号位中的最低有效扩展符号位的值。由异或电路38检测在符号位与扩展符号位中的最低有效扩展符号位之间的值的一致或者不一致。当异或电路38的输出信号为“1”时,输出信号为错误通知。

附带提及,在中间余数一旦发散之后如何进行计算的运算是未知的。例如,是否如在图9的左半部中所示那样进行计算的运算是未知的。

如上所述,根据第四实施例,可以通过仅将异或电路38连接到中间余数寄存器32来检测中间余数的溢出。因此,当平方根预测电路33在部分平方根的预测中出错时,有可能发出错误通知。由于可以通过仅添加异或电路38来实现检测部分平方根的预测中的错误的功能,所以可以最小化由于实现该功能所引起的算术电路的尺寸的增加。

下面说明使用CSA(进位保存加法器)的根据第五实施例的平方根计算器。

图10图示了根据第五实施例的平方根计算器。图10的平方根计算器包括预处理电路41、中间余数寄存器42a和42b、平方根预测电路43、加数生成电路44、CSA(进位保存加法器)45、平方根生成电路46、平方根寄存器47和加法器/溢出检测器48。

预处理电路41进行预处理,比如被开方数的数位位置的对准。预处理电路41具有分别连接到中间余数寄存器42a和42b的输出信号线并且在中间余数寄存器42a中存储数位对准的被开方数OP3。

中间余数寄存器42a和42b是为了单独地存储和与进位而提供的寄存器。例如,和的值存储于中间余数寄存器42a中,而进位的值存储于中间余数寄存器42b中。中间余数寄存器42a和42b具有分别连接到平方根预测电路43、CSA45和加法器/溢出检测器48的输出信号线。

平方根预测电路43基于中间余数寄存器42a和42b中存储的中间余数(即基于分别地存储于中间余数寄存器42a和42b中并且表明中间余数的和与进位)来预测部分平方根q(n-1)。平方根预测电路43具有分别连接到加数生成电路44和平方根生成电路46的输出信号线。

加数生成电路44计算要与中间余数相加的值(加数)。具体而言,加数生成电路44计算{-2×Q′(n-1)×q(n-1)-(1/kn)×q2(n-1)}作为加数。加数生成电路44具有连接到CSA 45的输出信号线,并且加数生成电路44的输出被提供给CSA 45。

CSA 45基于输入的值来进行加法处理,并且输出由分离的和与进位表示的中间余数。CSA 45针对各数位获得和与进位并且针对各数位单独地输出来自该数位的进位以及无进位的和。具体而言,CSA 45基于由加数生成电路44计算的加数以及存储于中间余数寄存器42a和42b中并且表明中间余数的和与进位来进行加法处理。CSA 45具有连接到中间余数寄存器42a和42b的输出信号线,使得通过由CSA 45进行的加法处理而获得的和与进位分别存储于中间余数寄存器42a和42b中。

平方根生成电路46基于已经由平方根预测电路43生成的一个或者多个部分平方根来生成平方根的值,并且输出生成的平方根的值。平方根生成电路46具有连接到平方根寄存器47的输出信号线。

平方根寄存器47是用于存储平方根的值的寄存器。平方根寄存器47具有分别连接到加数生成电路44、平方根生成电路46和如下电路(未示出)的输出信号线,该电路进行平方根的最终值(最终平方根)的后处理。

加法器/溢出检测器48从中间余数寄存器42a和42b获取和与进位,基于和与进位来进行加法处理并且生成余数。加法器/溢出检测器48计算的余数是在完成平方根计算过程之前的中间余数。当完成平方根计算过程时,加法器/溢出检测器48计算最终余数并且将最终余数输出到进行后处理的电路(未示出)。

此外,加法器/溢出检测器48进行用于检测溢出的处理。具体而言,加法器/溢出检测器48确定计算的、包括符号位的余数的数位数目是否超过预定数目并且在确定为是时输出错误检测信号。

根据第五实施例,通过使用具有图10中所示构造的平方根计算器来进行用于计算平方根的运算。下文概括根据第五实施例的平方根计算器的运算。

为了进行用于计算平方根的运算,向预处理电路41中输入被开方数op3。然后,预处理电路41进行被开方数的数位位置的对准,从而生成数位对准的被开方数OP3。预处理电路41在中间余数寄存器42a中存储数位对准的被开方数OP3。接着,平方根预测电路43预测与根据存储于中间余数寄存器42a中的数位对准的被开方数OP3获得的最高有效数位相对应的部分平方根,并且将预测的部分平方根输入到加数生成电路44和平方根生成电路46。平方根生成电路46在平方根寄存器47中照原样存储先由平方根预测电路43预测的部分平方根。此外,加数生成电路44计算{-2×Q′(n-1)×q(n-1)-(1/kn)×q2(n-1)}作为加数,并且将加数输入到CSA45。CSA 45将由加数生成电路44计算的加数与起初存储于中间余数寄存器42a中的数位对准的被开方数OP3相加,并且输出由和与进位表示的计算结果。这时,在中间余数寄存器42a中写入和,而在中间余数寄存器42b中写入进位。当中间余数寄存器42a和42b的内容被更新时,平方根预测电路43基于中间余数寄存器42a和42b的内容来重新预测与下一有效数位相对应的部分平方根,并且将预测的部分平方根输入到加数生成电路44和平方根生成电路46。然后,平方根生成电路46将存储于平方根寄存器47中的值左移,将最新预测的部分平方根与位于移位的值的有效性更低的一侧上的数位相加,并且用被相加了重新预测的部分平方根的值更新平方根寄存器47的内容。随后,加数生成电路44计算{-2×Q′(n-1)×q(n-1)-(1/kn)×q2(n-1)}作为加数,并且将加数输入到CSA45。CSA 45基于中间余数寄存器42a中存储的和、中间余数寄存器42b中存储的进位和加数生成电路44的计算结果来进行加法处理。然后,在中间余数寄存器42a中写入通过CSA45的处理所获得的和,而在中间余数寄存器42b中写入通过CSA 45的处理所获得的进位。随后,重复地进行部分平方根的预测和基于预测的部分平方根的运算直至获得具有期望数目的数位的最终平方根。这样,最终在平方根寄存器47中存储通过上述平方根计算所获得的数位对准的被开方数OP3的平方根,并且分别在中间余数寄存器42a和42b中存储通过数位对准的被开方数OP3的平方根计算所获得的、代表余数的和与进位。另外,当最终余数寄存器42a和2b的内容被更新时,加法器/溢出检测器48计算中间余数并且确定是否发生溢出。当确定发生溢出时,加法器/溢出检测器48输出错误检测信号。当完成平方根计算过程时,加法器/溢出检测器48基于中间余数寄存器42a和42b的内容来计算最终余数。

如上所述,甚至可以在使用CSA的平方根计算器中检测中间余数的溢出,因此当平方根预测电路43在部分商的预测中出错时,平方根计算器可以输出错误检测信号。

下面说明根据第六实施例的算术处理设备,该设备包含根据第二实施例的除法器和根据第四例子的平方根计算器。算术处理设备可以例如为CPU(中央处理单元)或者FPU(浮点数处理单元)。

图11表明根据第六实施例的算术处理设备。图11的算术处理设备50包括除法器51、平方根计算器52、寄存器文件53和高速缓存存储器54。除法器51具有如图2中所示的内部构造,而平方根计算器52具有如图7中所示的内部构造。算术处理设备50被配置成在除法器51或者平方根计算器52输出错误信号时进行错误处理。

寄存器文件53和高速缓存存储器54为存储设备,用于提供数值作为要对其进行算术运算的对象并且存储由除法器51或者平方根计算器52进行的算术运算的结果。因此,除法器51和平方根计算器52中的各预处理电路从寄存器文件53或者高速缓存存储器54读出一个或者多个数值作为要对其进行算术运算的对象。

由于算术处理设备50包含各自具有错误检测功能的除法器51和平方根计算器52,所以算术处理设备50可以高可靠性地检测部分商或者部分平方根的预测中的错误,从而增加算术处理设备50的可靠性。

除法器51和平方根计算器52中的错误检测电路主要为异或电路。因此,例如在算术处理设备50为具有高密度布线并且称为LSI的集成电路(大规模集成电路)的情况下,LSI的芯片尺寸基本上没有由于添加错误检测电路而增加。如果LSI的尺寸增加,则可以由单个硅晶片生产的芯片数目减少,从而LSI的单位制造成本增加。由于可以在基本上不增加芯片尺寸的情况下内置根据前述实施例的错误检测电路,所以也可以基本上不增加LSI的制造成本而内置错误检测电路。

可替换地,图11中所示除法器51可以包含图6中所示的除法器而不是图2中所示的除法器,并且包含图10中所示的平方根计算器而不是图7中所示的平方根计算器。

上述算术电路可以高可靠性地检测可能在算术运算期间出现的故障。

这里记载的所有例子和条件语言旨在于教学目的以帮助读者理解本发明和发明人为了发展本领域而贡献的概念,并且理解为不限于这样具体记载的例子和条件,而这样的例子在说明书中的组织也不涉及说明本发明的优劣性。虽然已经具体描述本发明的一个或者多个实施例,但是应当理解可以对其进行各种改变、替换和变更而不脱离本发明的精神和范围。

具体而言,构成第一至第六实施例的各单元可以由具有类似功能的另一单元替换,并且可以向第一至第六实施例添加任何另外的单元或者任何另外的步骤。此外,有可能任意地组合前述第一至第六实施例的两个或者更多个特征。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号