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

文档序号:6605136阅读:237来源:国知局
专利名称:算术电路、算术处理设备和算术处理方法
技术领域
这里讨论的实施例涉及一种算术电路、算术处理设备和算术过程。
背景技术
算术逻辑电路包括加法器_减法器、除法器、平方根计算器等。用于通过使用电 子电路来进行除法和平方根计算的技术包括恢复算法(restoringalgorithm)、非恢复算法 (nonrestroing algorithm)、SRT (Sweeney-Robertson-Tocher)算法等。在这些算术算法 中,重复用于获得商或者平方根的η个数位(digit)的运算,其中η是自然数。上述算术算 法具有的特征在于商或者平方根的数位总数与上述运算的重复次数成比例。由于如在纸面 上的计算中那样在上述算术算法中重复减法和数位移位,所以下文将上述算术算法称为减 法和移位型算术算法。可以通过使用故障检测设备检测故障来提高减法和移位型算术电路的可靠性。例 如,一种已知的故障检测电路在除数和被除数均为非零并且中间商(在商的归一化之前的 中间阶段中由除法器获得)的最高有效数位与商的溢出数位(其位置紧邻商的最高有效数 位左侧)均为零时生成故障信号,使得故障检测电路可以检测其中商由于误差而变成零的 故障。附带提及,在减法和移位型算术逻辑运算中发现的一些逻辑失效仅出现于在运算 期间很少产生的一些数据模式。上述逻辑错误在减法和移位型算术电路中可能出现的位置 是已知的。然而,没有发现用于证实在这样的位置的逻辑正确的技术。因此,目前用于发现 很少产生的数据模式出现的逻辑失效的仅有方式是可视地检验逻辑的绘图等并且通过逻 辑仿真来收集运算验证测试的结果。然而,由于通过可视检验来适当检测逻辑失效的能力依赖于可视地检验逻辑电路 示意图等的个人的能力,所以可视检验无法保证逻辑的可靠性。另一方面,在目标电路如单个运算元件那样小的情况下,可以在充分长的时间内 收集运算验证测试的结果,因此通过逻辑仿真来检测逻辑失效可以保证高可靠性。然而,在 目标电路如减法和移位型算术电路那样大的情况下,即使在进行通过逻辑仿真的运算验证 测试时也难以保证充分的可靠性。也就是说,可以用来检验各运算元件的时间在通过逻辑 仿真来进行或者对实际系统进行大规模系统的验证时受到限制。由于这样的时间限制,所 以难以通过逻辑仿真来发现减法和移位型算术电路中的缺陷。因此常规上,算术电路的逻 辑质量的提高受到限制。即使在无法通过运算验证测试来完全地预先避免失效的情况下,如果有可能防止 错误的计算结果传递到后续处理阶段,则仍然可以保证可靠性。因此,需要一种用于即使在 计算运算期间很少出现故障的情况下仍然高可靠性地检测故障的技术。[专利文献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 生成的中间值Ia和通过中间值Ia的符号扩展向中间值Ia附加的扩展符号lb。处理电路2在寄存器1中存储将对其进行算术运算的一个或者多个数值。例如, 预处理电路2在寄存器1进行除法的情况下在寄存器1中存储被除数或者在寄存器1进行 平方根计算的情况下在寄存器1中存储被开方数。在除法的情况下,单独地布置另一寄存 器用于存储除数,并且预处理电路2在单独布置的寄存器中存储除数。每当数值存储于寄存器1中时,解预测电路3基于寄存器1中存储的数值来预测 部分解(partial solution),其中部分解由代表将根据一个或者多个数值获得的解的部分
6数位(digit)的值构成并且以数位有效性的降序来预测。例如,在除法的情况下,解预测电 路3以数位有效性的降序预测部分商(partial quotient),其中部分商由代表商的部分数 位的值构成。在平方根计算的情况下,解预测电路3以数位有效性(significance)的降序 预测部分平方根(partial square root),其中部分平方根由代表平方根的部分数位的值 构成。中间值计算电路4使用由解预测电路3预测的一个或者多个部分解、通过预定计 算来生成中间值,并且在寄存器1中存储由中间值和通过符号扩展向中间值附加的一个或 者多个扩展符号位构成的数值。解生成电路5依次获取由解预测电路3预测的一个或者多个部分解,并且基于一 个或者多个部分解来生成解。例如,在除法的情况下,解生成电路5依次获取由解预测电路 3预测的一个或者多个部分商并且生成商。在平方根计算的情况下,解生成电路5依次获取 由解预测电路3预测的一个或者多个部分平方根并且生成平方根。错误检测电路6比较由存储于寄存器1中的中间值Ia的符号位所代表的值与由 构成扩展符号Ib的一个或者多个扩展符号位之一所代表的值,并且在比较的值不同时输 出错误信号。例如,错误检测电路6是连接到中间值Ia的符号位和一个或者多个扩展符号 位之一的异或电路,并且异或电路6a接收符号位和扩展符号位的值并且输出接收的值的 异或。当异或电路6a的输出为“1”时,输出信号为错误信号。在上述配置的算术电路中,预处理电路2在寄存器1中存储将对其进行算术运算 的一个或者多个数值。然后,解预测电路3预测部分解,并且中间值计算电路4生成中间 值、进行中间值的符号扩展(即产生由中间值和通过符号扩展向中间值附加的一个或者多 个扩展符号位构成的数值)并且在寄存器1中存储符号扩展的中间值。当中间值如上所述存储于寄存器1中时,解预测电路3重新预测与构成解的部分 数位相对应的部分解,其中部分数位比与解预测电路3已经预测的一个或者多个部分解相 对应的一个或者多个数位具有更低的有效性。然后,中间值计算电路4基于重新预测的部 分解来重新生成中间值、进行重新生成的中间值的符号扩展并且在寄存器1中存储符号扩 展的中间值。随后,重复地进行部分解的预测和中间值的更新直至完成与解的数位的预定 数目相对应的部分解的预测。解生成电路5通过组合由解预测电路3预测的部分解来形成解。此外,每当中间值存储于寄存器1中时,错误检测电路6检测错误。当正确地预测 解时,中间值的符号位的值与通过符号扩展附加的扩展符号位的值相同,使得错误检测电 路6不输出错误信号。当解预测电路3在部分解的预测中出错时,由中间值计算电路4生 成的中间值也变成错误值。当预测错误的部分解时并且重复部分解的预测和中间值的生成 时,中间值中发生溢出。当中间值中发生溢出时,中间值的最高有效非符号位的值存储于中 间值的符号位的位置中。因此,扩展符号Ib变得不同于中间值的符号位,使得检测电路6 输出错误信号。如上所述,可以高可靠性地检测由解预测电路3在部分解的预测中的错误引起的 错误。由于错误是由内置于算术电路中的错误检测电路6来检测,所以可以在算术电路运 算时总是检测出错误的出现或者未出现。因此,即使在部分解的预测中很少出现错误的情 况下,错误检测电路6仍可以在错误实际上出现时输出错误信号。由于错误信号是从错误检测电路6输出,所以有可能防止在后处理电路中使用错误的解,后处理电路通常使用由 解生成电路5生成的解。因此,提高了计算结果的可靠性。此外,由于错误检测电路6当中 间值溢出时检测出错误,所以可以容易地确定错误的原因。另外,由于错误检测电路6例如 可以由异或电路6a实现,所以可以通过增加很少量的逻辑电路来检测失效(failure)。虽然上文说明了由于解预测电路3在部分解的预测中的错误而出现错误的例子, 但是也可以由于其它原因而产生中间值的溢出。在一些情况下,算术电路例如由于LSI (大 规模集成电路)中的早期失效(比如晶体管单元的固定失效或者由比如放射性这样的因素 而引起的软件失效)而没有如预期的那样操作。图1的算术电路甚至可以在中间值的溢出 发生时检测上述失效。因此,在图1的算术电路内置于产品中安装的LSI中的情况下提高 了包含算术电路的产品的可靠性。因此,图1的算术电路可以有助于提高通称为RAS的可 靠性、可用性和可服务性。图1的算术电路可以使用于包括除法器或者平方根计算器的所有减法和移位型 算术电路中。在除法器和平方根计算器中,解预测电路3的设计并不容易,并且错误可能出 现于解预测电路3的设计中。当使用图1的算术电路时,有可能进行减法和移位型除法器 和平方根计算器中的解预测电路的运算验证,并且因此防止出现由解预测电路的设计中的 失误引起的缺陷。此外,也有可能在通过使用与图1的算术电路等效的电路来进行逻辑仿真时通过 逻辑仿真来检测在部分解的预测中的错误。另外,即使在由软件进行减法和移位型算术的 情况下,可以通过向软件添加进行与图1中的错误检测电路6类似的运算的模块来检测中 间值的溢出。下文说明除法器的例子作为第二和第三实施例而说明平方根计算器的例子作为 第四和第五实施例。下面说明实现检测故障的根据第二实施例的除法器。首先说明使用递推方程的减 法和移位型算术的序列,然后说明在符号位之间的比较为何实现逻辑检验器的功能的原因。在以下说明中,被除数由opl(操作数1)表示,除数由op2(操作数)表示,而基数 由k表示(其中k = 2m,而m为自然数)。通常,在除法运算之前进行除数op2和被除数opl的最高有效数位的位置的对准。 在下文中,已经经历数位位置对准的被除数opl和除数op2分别称为数位对准的被除数和 数位对准的除数,并且分别由OPl (操作数1)和0P2(操作数2)表示。在以下方程中分别 表明数位对准的被除数OPl和数位对准的除数0P2。OPl = OplXka (其中 a 为整数)0P2 = op2Xkb(其中 b 为整数)在对准时,将数位位置移位,使得数位对准的除数0P2和数位对准的被除数OPl的 最高有效数位的位置相匹配或者数位对准的被除数OPl的最高有效数位的位置从数位对 准的除数0P2的最高有效数位的位置右移一个数位。用于获得商和余数的减法和移位型算术序列由递推方程(1)定义。r(n) = kXr(n-l)-q(n-l) X0P2r(0) = 0P1. . . (1)这时,q(n-l)为选择成满足不等式判据|r (η) | < 0Ρ2的整数。虽然用于q(n-l)的多个候选可以存在于满足条件|q(n_l)| <k的范围中,但是可以选择候选中的任意一 个。在递推方程⑴中,Hn)称为第η个中间余数,而q(n-l)称为与第η个有效数位相对 应的部分商。恢复算法是选择表明部分商q(n-l)的整数使得中间余数r (η)总是为零或者为正 的计算算法。非恢复算法是允许中间余数Hn)为负的计算算法。SRT算法是允许中间余 数Hn)为负并且仅基于中间余数r(η)的少数有效位来确定是否满足不等式判据|r(n) < 0P2的计算算法。也就是说,根据恢复算法,中间余数r(η)总是限于零或者正数。在这种情况下,用 于每个部分商q(n-l)的候选被自动并唯一地确定为零或者正数。另一方面,根据非恢复算 法或者SRT算法,允许中间余数r(n)为负。在这种情况下,每个部分商q(n_l)可以为负, 并且可以存在用于每个部分商q(n-l)的多个候选。当由在将数位对准的被除数OPl除以数位对准的除数0P2的过程中获得的第一至 第η个有效数位构成的商由Q(n)表示时,商Q(n)可以通过使用部分商q(0),q(l),..., q(n-2)和 q(n-l)表达为Q (n) = q (0) X kn_1+q(l) X kn_2+. · · +q (n_2) X k+q (n_l)…(2)根据方程(1)导出以下方程。r(n) = kXr(n-l)-q(n-l) X0P2= kX {kXr (n_2)-q(n_2) X0P2}-q(n_l) X0P2= k2Xr (n-2)-{kXq(n_2) +q(n_l)} X0P2= k3Xr (n-3)-{k2Xq(n_3) +kXq(n-2) +q(n_l)} X0P2= knXr (0)-{kn_1 Xq(0) +k"2Xq(I)+. · · +k2Xq(n_3) +kXq (n-2) +q (n_l)} X 0P2= kn Xr(O)-Q (η) X0P2…(3)通过针对r (0)求解方程(3)并且将方程0P2 = op2 X kb代入针对r (0)求解的方 程⑶中来获得以下方程(4)。由于0P2 = op2Xkb,所以方程(3)等效于方程(4)。(等 效性由<_>表示。)<->r (0) = {Q (η) X 0P2+r (η)} /kn= {Q (η) X kb/kn} X op2+r (n) /kn ... (4)此外,通过在方程(4)中用OPl替换r(0)并且将方程OPl = op IXkaR入方程(4) 中来获得以下方程(5)。由于r(0) = OPl = OplXka,所以方程(4)等效于方程(5)。<->op 1 = {Q (η) X kb/kn+a} X op2+r (η) /kn+a ... (5)在被除数op 1除以除数op2的情况下,商和余数满足关系opl =(商)Xop2+(余 数)。鉴于方程(3)、⑷和(5),商可以表达为0(11)\1^/1^+3,并且...(6)余数可以表达为
r(n)/kn+a0 ... (7)在定点除法的情况下,通常重复根据递推方程⑴的算术运算直至方程(6)和(7) 中的任一方程的右侧变成非整数。在浮点除法的情况下,重复根据递推方程(1)的算术运 算直至商Q(n)的数位的数目达到与有效数位和附加数位的总数相等的必需数目。必需有 效数位例如包括Q (η)的归一化表示的分数部分的23位(在根据IEEE 754标准的单精度 浮点格式的情况下)或商Q (η)的归一化表示的分数部分的52位(在根据IEEE 754标准 的双精度浮点格式的情况下)。附加位包括用于所谓隐藏位的一位(在商Q(n)的归一化表 示中的整数部分中)和用于舍入的少数有效性更低的位。(舍入意味着根据某种规则由 近似值代表数值。例如,舍去有效性比有效数位更低的数位。)在用于进行上述减法和移位型算术的逻辑设计中,根据递推方程(1)和对满足不 等式判据Ir (n) I < 0Ρ2的整数q(n_l)的选择在运算中需要谨慎。具体而言,在用于确定是否满足不等式判据|r(n) | < 0P2的逻辑中,可能出现逻 辑错误并且难以发现。在20世纪90年代,在个人计算机中的CPU(中央处理单元)中进行 的浮点除法中使用SRT算法。然而,在发货之后发现了在产品中响应于特定输入值在计算 结果中出现错误的事实,并且召回产品。上述错误的原因在于在确定是否满足不等式判据 |r(n) <0P2中的错误。即使在计算结果中出现错误的频率低的情况下,除非保证计算结 果的正确性,否则不可能使用于科学和技术领域中。因此,有必要置入防止错误的计算结果 传递到后续处理阶段的电路。根据第二实施例,当在确定是否满足不等式判据|r (η) | < 0Ρ2中出现错误时,检 测出该确定中的错误,并且输出错误信号。下文说明用于检测在确定是否满足不等式判据 |r(n)| <0Ρ2中的错误的逻辑。下面将首先考虑在确定是否满足不等式判据|r(n) | < 0P2中出现错误之后进行 的运算。当在确定是否满足不等式判据|r (η) | < 0Ρ2中出现错误时,选择错误的部分商 q(n-l),并且此后继续条件|r(n) I彡0P2,使得中间余数如下所示不会收敛。由于整数 q(n-l)满足q(n-l) |彡k,所以当r(n) |彡0P2时,r(n+l) = kXr(n)-q(n) X0P2彡 |kX (士0P2)_q(n) X0P2= I 士k-q(n) I X0P2彡 0P2. . . (8)也就是说,在条件I r (η) |彡0Ρ2存在时,条件| r (n+1) |彡0P2必然地存在。换而 言之,在确定是否满足不等式判据|r(n) I <0P2中出现错误之后相继地出现错误(即相继 获得的中间余数保持于发散条件下)。在许多情况下,在发散条件之下当重复根据递推方程(1)的算术运算时中间余数 溢出。由于中间余数的溢出意味着中间余数的值变得太大而无法存储于算术电路中为中间 余数提供的数位中,所以在算术电路中存储作为中间余数的值由于溢出所引起的丢失一些 有效位而变成错误的。错误的中间余数的出现导致相继生成错误的中间余数和错误的中间 商。因而,当在确定是否满足不等式判据|r(n)| <0P2中出现错误时,相继地生成在发散 条件下的中间余数或者相继地生成错误的中间余数和错误的中间商。在任一情况下,不可能在上述情形之下获得商的正确值。鉴于上情况,根据第二实施例,通过从上述错误状态之中检测中间余数的溢出来 检测在确定是否满足不等式判据|r(n)| <0P2中的错误。在以下说明中,假设算术电 路由具有符号扩展功能的数字电路实现。符号扩展是如下运算,该运算是在位串列(bit series)代表有符号数并且具有比存储区的位宽度更短的长度时进行的并且在该运算中存 储区中的一个或者多个空数位由一个或者多个适当的位填充同时保留有符号数的标识。在 本实施例中,假设通过用各自具有与符号位的值相同的值的一位或者多位来填充位于有效 侧上的一个或者多个空数位来进行符号扩展。如前所述,在算术运算之前,进行除数和被除数的最高有效数位的位置对准。在对 准时,将数位位置移位,使得数位对准的除数0P2和数位对准的被除数OPl ( = r (0))的最 高有效位的位置相匹配或者数位对准的被除数OPl ( = r(0))的最高有效数位的位置从数 位对准的除数0P2的最高有效数位的位置右移一个数位。此后,只要算术运算在逻辑上正 确,在满足不等式判据|r(n)| <0P2之时进行算术运算。因此,中间余数r(n)的最高有效 数位的有效性不超过数位对准的除数0P2的最高有效数位的有效性,并且只要算术运算在 逻辑上正确,数位对准的除数0P2的符号位的位置与中间余数r (η)的符号位的位置匹配。 由于各自具有与中间余数r (η)的符号位的值相同的值的一个或者多个位通过符号扩展位 于中间余数r (η)的有效侧(significant side)上,所以中间余数r (η)的符号位的值通常 可以有望与位于中间余数r (η)的符号位的有效侧上的每个位的值相同。如果发现中间余 数r(n)的符号位的值与位于中间余数r (η)的符号位的有效侧上的位的值不相同,则有可 能确定数据溢出到符号位的位置中。在中间余数r(n)的符号位(位置紧邻中间余数r (η)的最高有效非符号位左侧并 且是符号位中的最右符号位)的值由sO表示,并且扩展符号位中紧邻上述符号位右侧的扩 展符号位(即扩展符号位中的最右扩展符号位)的值由si表示的情况下,可以仅基于上述 两个符号位的异或(sO XOR si)来检测逻辑失效,因为在没有出现错误时(sO XOR si)= 0而在出现错误时(sO XOR si) =1。因此,向上述算术电路添加的、并且用于检测在确定 是否满足不等式判据|r(n) I < 0P2中的错误的逻辑电路可以仅由一个异或电路(X0R门) 来实现。图2图示了根据第二实施例的除法器。图2的除法器包括预处理电路11、中间余 数寄存器12、除数寄存器13、商预测电路14、加数生成电路15、加法器16、商生成电路17、 商寄存器18和异或电路19。预处理电路11进行预处理,比如被除数和除数的数位位置的对准。预处理电路11 具有分别连接到中间余数寄存器12和除数寄存器13的输出信号线,并且在中间余数寄存 器12中存储数位对准的被除数OPl而在除数寄存器13中存储数位对准的除数0P2。中间余数寄存器12是用于存储中间余数的寄存器。例如,可以使用位宽度为64 位的寄存器作为中间余数寄存器12,用于以根据IEEE 754标准的双精度浮点格式存储中 间余数。中间余数寄存器12具有分别连接到商预测电路14、加法器16和如下电路(未示 出)的输出信号线,该电路进行对作为由图2的除法器进行的除法的结果而获得的最终余 数的后处理。商预测电路14基于中间余数寄存器12中保存的中间余数和除数寄存器13中存
11储的数位对准的除数0P2来预测部分商q(n-l)。(虽然在图2中未指明除数寄存器13与 商预测电路14之间的连接,但是商预测电路14可以查询除数寄存器13以便使用数位对准 的除数0P2进行上述预测。)具体而言,商预测电路14确定部分商q(n-l),使得数位对准 的除数0P2和通过递推方程(1)获得的中间余数满足不等式判据|r (η) | < 0Ρ2。然而,当 商预测电路14具有逻辑失效并且出现使逻辑失效明显的数位对准的除数0Ρ2与中间余数 的组合时,或者当出现晶体管单元的固定失效或者由比如放射性这样的因素引起的软件错 误时,商预测电路14可以预测导致违反不等式判据|r(n)| <0P2的部分商q(n-l)。商预 测电路14具有分别连接到加数生成电路15和商生成电路17的输出信号线。加数生成电路15计算要与中间余数相加的值(加数)。具体而言,加数生成电路 15计算由商预测电路14预测的部分商q(n-l)与从除数寄存器13获取的数位对准的除数 0P2的乘积、并且将该乘积与-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的有效侧上。起初,数位对准的被除数OPl存储于位串列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中输入被除数opl和除数op2。然后,预处理 电路11进行被除数和除数的数位位置的对准,从而生成数位对准的被除数OPl和数位对准 的除数0P2。预处理电路11在中间余数寄存器12中存储数位对准的被除数OPl而在除数 寄存器13中存储数位对准的除数0P2。随后,商预测电路14预测与根据存储于中间余数存 储器12中的数位对准的被除数OPl获得的最高有效位相对应的部分商并且向加数生成电 路15和商生成电路17中输入预测的部分商。商生成电路17在商寄存器18中照原样存储先由商预测电路14预测的部分商。此外,加数生成电路15计算输入的部分商与数位对准的除数0P2的乘积、反转乘 积的符号以生成加数并且将加数输入到加法器16。加法器16将由加数生成电路15计算的 加数与起初存储于中间余数寄存器12中的数位对准的被除数OPl相加,并且中间余数寄存 器12的内容从数位对准的被除数OPl更新成中间余数。当中间余数寄存器12的内容被更新时,商预测电路14重新预测与下一有效数位 对应的部分商并且将预测的部分商输入到加数生成电路15和商生成电路17。然后,商生成 电路17将存储于商寄存器18中的值左移、将重新预测的部分商与位于移位的值的有效性 更低的一侧上的数位相加,并且用被相加了重新预测的部分商的值来更新商寄存器18的 内容。随后,加数生成电路15计算输入的部分商与数位对准的除数0P2的乘积、反转乘 积的符号以生成加数并且将加数输入到加法器16。加法器16将由加数生成电路15计算的 加数与存储于中间余数寄存器12中的中间余数相加,并且用加法器16的输出更新中间余 数寄存器12的内容。随后,重复地进行部分商的预测和基于预测的部分商的运算直至获得具有期望数 目的数位的最终商。因此,最终分别在商寄存器18和中间余数寄存器12中存储通过将数 位对准的被除数OPl除以数位对准的除数0P2所获得商和余数。在上述除法过程中,除非商预测电路13在部分商的预测中出错,否则扩展符号位 串列12c中的最低有效位12e的值总是与符号位12d的值相同。图4图示了正常地确定部分商的除法的例子。在图4的例子中,为求简化,处理
13的数为8位二进制数,并且被假设已经经历了数位位置的对准,其中数位对准的被除数OPl 为“+11000000”,而数位对准的除数0P2为“+10000001”。在这种情况下,除法器进行除法 0P1 + 0P2 = (+11000000) + (+10000001)。在图4中,在左半部中表明除法过程,而在右半部中表明中间余数寄存器在除法 过程期间的相应阶段中的内容。在中间余数寄存器在各阶段的所示的位中,最左位为扩展 符号位中的前述最低有效扩展符号位,从左侧起的第二位为中间余数的前述符号位,而在 符号位的右侧上图示的八个位表明中间余数的非符号位。商预测电路14以数位有效性的降序、在逐位基础上预测部分商。当中间余数为正 时,符号位和在符号位的有效侧上表明的扩展符号位均为零。当中间余数为负时,符号位和 扩展符号位均为一。在任一情况下,只要正常地进行部分商的预测,则符号位和扩展符号位 相同。当商预测电路14具有逻辑失效时,或者当出现晶体管单元的固定失效或者由比 如放射性这样的因素引起的软件错误时,商预测电路14可能在除法过程期间、在部分商 的预测中出错,即商预测电路14可能预测导致违反不等式判据|r(n)| <0P2的部分商 q(n-l)。当违反不等式判据|r(n)| < 0P2时,发生中间余数的溢出,使得在要设置中间余 数的符号位的符号位12d的位置中设置与中间余数的符号位不同的数值。因此,符号位的 值变成不同于扩展符号位中的最低有效扩展符号位的值。图5图示了错误地确定部分商的除法的例子。在图5的例子中,在与第四有效数位 对应的部分商q(3)的确定中出现错误。在该确定中,为了满足不等式判据|r(4)| < 0P2, 确定部分商q(3)为一。然而,在图5的例子中,商预测电路14错误地确定部分商为零。通过使用与第四有效数位对应的、上述错误的部分商来计算的中间余数变成大于 数位对准的除数0P2。在图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中存储数位对准的被除数OPl并在除数寄存器23中存储数位对准的除数 0P2。中间余数寄存器22a和22b是为了单独地存储和与进位而提供的寄存器。例如, 和的值存储于中间余数寄存器22a中,而进位的值存储于中间余数寄存器22b中。中间余 数寄存器22a和22b具有分别连接到商预测电路24、CSA 26和加法器/溢出检测器29的 输出信号线。商预测电路24基于中间余数寄存器22a和22b中存储的中间余数(即基于分 别地存储于中间余数寄存器22a和22b中并且表明中间余数的和与进位)来预测部分商 q(n-l)。商预测电路24具有分别连接到加数生成器25和商生成电路27的输出信号线。 (虽然在图6中未表明在除数寄存器23与商预测电路24之间的连接,但是商预测电路24 可以查询除数寄存器23以便使用数位对准的除数0P2来进行上述预测。)加数生成电路25计算要与中间余数相加的值(加数)。具体而言,加数生成电路 25计算由商预测电路24预测的部分商q(n-l)与从除数寄存器23获取的数位对准的除 数0P2的乘积,并且将乘积与-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中输入被除数opl和除数op2。然后,预处理 电路21进行被除数和除数的数位位置的对准,从而生成数位对准的被除数OPl和数位对准的除数0P2。预处理电路21在中间余数寄存器22a中存储数位对准的被除数OPl而在除数 寄存器23中存储数位对准的除数0P2。随后,商预测电路24预测与根据存储于中间余数 寄存器22a中的数位对准的被除数OPl获得的最高有效数位相对应的部分商,并且将预测 的部分商输入到加数生成电路25和商生成电路27。商生成电路27在商寄存器28中照原 样存储先由商预测电路24预测的部分商。此外,加数生成电路25计算输入的部分商与数 位对准的除数0P2的乘积、反转乘积的符号以生成加数并且将加数输入到CSA 26。CSA 26 将加数生成电路25计算的加数与起初存储于中间余数寄存器22a中的数位对准的被除数 OPl相加,并且输出由和与进位表示的计算结果。这时,在中间余数寄存器22a中写入和, 而在中间余数寄存器22b中写入进位。当中间余数寄存器22a和22b的内容被更新时,商 预测电路24基于中间余数寄存器22a和22b的内容来重新预测与下一有效数位相对应的 部分商,并且将预测的部分商输入到加数生成电路25和商生成电路27。然后,商生成电路 27将存储于商寄存器28中的值左移,将重新预测的部分商与位于移位的值的有效性更低 的一侧上的数位相加,并且用被相加了重新预测的部分商的值来更新商寄存器28的内容。 随后,加数生成电路25计算输入的部分商与数位对准的除数0P2的乘积,反转乘积的符号 以生成加数,并且将加数输入到CSA 26。CSA 26基于中间余数寄存器22a中存储的和、中 间余数寄存器22b中存储的进位以及加数生成电路25的计算结果来进行加法处理。然后, 在中间余数寄存器22a中写入通过CSA 26的处理所获得的和,而在中间余数寄存器22b中 写入通过CSA 26的处理所获得的进位。随后,重复地进行部分商的预测和基于预测的部分 商的运算直至获得具有期望数目的数位的最终商。这样,最终在商寄存器28中存储通过将 数位对准的被除数OPl除以数位对准的除数0P2所获得的商,并且分别在中间余数寄存器 22a和22b中存储通过将数位对准的被除数OPl除以数位对准的除数0P2所获得的、代表余 数的和与进位。另外,当中间余数寄存器22a和22b的内容被更新时,加法器/溢出检测器 29计算中间余数并且确定是否发生溢出。当确定发生溢出时,加法器/溢出检测器29输 出错误检测信号。当完成除法过程时,加法器/溢出检测器29基于中间余数寄存器22a和 22b的内容来计算最终余数。如上所述,甚至可以在使用CSA的除法器中检测中间余数的溢出,因此当商预测 电路24在部分商的预测中出错时,除法器可以输出错误检测信号。下面说明检测解的预测中的错误的、根据第四实施例的平方根计算器。首先说明 使用递推方程的减法和移位型算术的序列,然后说明为何符号位之间的比较作为逻辑检验 器来工作的原因。在以下说明中,作为被开方数(即作为要计算其平方根的对象)输入的数值与中 间解(在中间阶段中获得的平方根)的平方的差称为中间余数,而作为被开方数输入的数 值与最终解(在最终阶段中获得的平方根)的平方的差称为最终余数。在根据第四实施例 的平方根计算中也进行中间余数的符号扩展。此外,负数由于二的补码代表。仅一个由op3表示的数值被输入到根据第四实施例的平方根计算器,并且平方根 计算器获得被开方数op3的平方根。被开方数op3经历数位对准,并且数位对准的被开方 数0P3由以下方程表示。0P3 = op3Xkb(其中k为基数,而b为整数)类似于除法中的商,可以通过使用部分平方根q(0)至q(n-l)来表达由第一至第
16η个数位构成的平方根Q (η)。Q (η) = q (0) X kn_1+q(l) X kn_2+. · · +q (n_2) X k+q (n_l),…(9)其中Q(O)定义为零。通过使方程(9)变形来获得以下方程。Q (n) = q(0) Xkn_1+q(l) Xk『2+· · · +q(n_2) Xk+q(n_l)= kX {q(0) Xk『2+q(l) Xklrf+. . . +q (n_2)}+q (n_l)= kXQ(n-l)+q(n-l). . . (10)通过使用数位对准的被开方数0P3和平方根Q(n),可以由以下递推方程(11)定义 减法和移位型平方根计算,其中r (η)表示第η个中间余数。r(n) = k2Xr (n_l)_2kXQ(n_l) Xq(n_l)-q2(n_l)r(0) = 0P3. . . (11)(递推方程(11)的证明将在后文中称为证明1。)这时,部分平方根q(n-l)是选择成满足不等式判据|r(n)-l < 2Q(n)的整数。 虽然对于整数的多个候选可以存在于满足条件|q(n-l) I <1^的范围中,但是可以选择任意 一个候选。也就是说,通过使用不等式判据|r(n)-l| <2Q(n)来计算部分平方根q(n_l)。 (使用不等式判据|r(n)-l| <2Q(n)的适当性的证明将在后文中称为证明2。)因此,类似于除法过程,在中间余数r(η)的符号位(位置紧邻中间余数r(η)的最 高有效数位右侧并且是符号位中的最右符号位)的值由sO表示,并且扩展符号位中紧邻上 述符号位右侧的扩展符号位(即扩展符号位中的最右扩展符号位)的值由si表示的情况 下,可以仅基于上述两个符号位的异或(sO XOR si)来检测逻辑失效,因为当没有出现错误 时(sOXORsl) = 0而当出现错误时(sOXOR si) = 1。(当出现错误时(sOXOR si) = 1的 证明将在后文中称为证明3)下面表明可以通过使用递推方程(11)来进行平方根计算的前述证明1。由于存在关系Q2(Ii) 0P3 = r(0),所以如方程(12)中所示,可以通过使用r(0) 和Q2(Ii)来表达中间余数r (η)。r(n) = k2nXr (0)-Q2 (η) · · · (12)另外,根据方程(10)导出以下方程。r(n) = k2nXr (0) - {kX Q (n_l)+q (n_l)}2= k2nX r (0) - {k2 X Q2 (n-1) +2kX Q (n-1) X q (n_l)+q2 (n_1)}= k2X Ik2fc-Dxr (O)-Q2 (n-1)} _2k X Q (n-1) Xq(n-l)-q2 (n-1)= k2 Xr (n-1)-2k X Q (n-1) X q (n_l)-q2 (n_l) · · . (13)也就是说,导出递推方程(11)。下面表明可以在部分平方根q(n-l)的计算中适当地使用不等式判据|r(n)_l < 2Q(n)的前述证明2。不等式判据|r (n) _1| < 2Q(n)等效地改写如下。-2Q (η) +1 < r (η) < 2Q (η) +1. . . (14)下文证明对于η = 1存在方程(14)。随后,证明当对于η_1存在方程(14)时对于η > 1存在方程(14)。当η = 1,Q(I) = q(0) >0 时,期望选择 q(0)以便满足条件 | k(0P3) 1/2-q(0) < 1,因为k(0P3)1/2和q(0)的数位位置对准,使得k(0P3)"2和q(0)的最高有效数位的位 置匹配,并且选择q(0),使得|k(0P3)"2*q(0)的整数部分匹配。也就是说,-1 < kX (0P3)1/2-q(0) < 1<->-1 < kX (r (0))1/2-q(0) < 1. . . (15)联立不等式(15)中的左侧不等式引出以下不等式(16)。0 < kX (r(0)) 1/2-q(0) +1<->0 < (kX (r (0)) 1/2+q(O)-I) (kX (r (0)1/2)-q(0) +1)<->0 < k2Xr(0)-(q(0)_1)2<->0 < k2Xr (0) -q2 (0) +2q (0) _1<->-2q (0) < k2Xr (0) -q2 (0) · · (16)此外,联立不等式(15)中的右侧不等式引出以下不等式(17)。kX (r (0)) 1/2-q(O)-I < 0<->(kX (r (0)) 1/2+q (0) +1) (kX (r (0)1/2) -q (O)-I) <0<->k2Xr (0)-(q(0) +1)2 < 0<->k2Xr (0) -q2 (0) _2q (0) _1 < 0<->k2Xr (0) -q2 (0) < 2q (0) · · · (17)鉴于q(0) >0的事实,不等式(16)和(17)可以概括为联立不等式(18)。k2Xr(0)-q2(0)-l | < 2q(0)<->r(l)-l| < 2Q(1). . . (18)也就是说,当η = 1时存在方程(14)。接着是当存在不等式-2Q (n-1) +l<r (η_1)时存在不等式_2Q (η) +l<r (η)的证 明。鉴于不等式-2Q(n-l)+l <r(n-l),方程(11)表达的r(n)可以估计如下。r(n) = k2Xr (n-1)-2kXQ(n-1) Xq(n-1)-q2(n-1)> k2X {-2Q(n-l)+l}-2kXQ(n-l) X q (n_l)-q2 (n_l)= -2kQ (n-1) X {k+q (n-1)} + {k+q (n-1)} X {k_q (n-1)}= {k+q (n-1)} X {-2k X Q (n-1) +k_q (n-1)}
18
= {k+q (n-1)} X [-2 X {k X Q (n_l) +2q (n_l)} +k+q (n_
1)]= {k+q (n-1)} X [_2Q (n) +k+q (n-1) ] · · · (19)由于不等式(19)的右侧为r(n)的下限,所以r(n)在任何情况下大于不等式(19) 的右侧。当选择q(n-l)的值以使不等式(19)的右侧增加时,存在方程q(n_l) =_(k_l), 因为鉴于-2Q(n)+k+q(n-l) < 0 并且 1 < k+q (n-1) ( 2k_l 的事实,当 q(n_l) = _(k_l) 时不等式(19)的右侧最大化。因此,通过将q(n-l) = _(k_l)代入不等式(19)来获得方 程(20)。r(n) > -2Q(n)+l. . . (20)下面是当存在不等式r (n-1) < 2Q(n_l)+1时存在不等式r (η) <2Q(n)+l的证明。鉴于不等式r(n-l) < 2Q(n_l)+l,方程(11)表达的r(n)可以估计如下。r(n) = k2Xr (n-1)-2kXQ(n-1) Xq(n-1)-q2(n-1)< k2X {2Q(n-l)+l}-2kXQ(n-l) X q (n_l)-q2 (n_l)= 2kQ(n-1) X {k-q(n-1)}+ {k+q(n-1)} X {k-q(n-1)}
= {k-q (n-1)} X {2k X Q (n-1) +k+q (n-1)}= {k-q (n-1)} X [2 X {k X Q (n-1) +2q (n-1)} +k-q (n_1)]= {k-q(n-1)} X [2Q(n) +k-q(n-1)]. · · (21)当选择q(n-l)的值以使不等式(21)的右侧减少时,存在方程q(n_l) = k_l。因 此,获得方程(22)。r(n) < 2Q(n)+l. . . (22)因此,不等式(20)和(22)可以概况为不等式判据r(n)-l <2Q(n)。也就是说, 对于η > 1满足不等式判据(14)。概括而言,完成了对于η彡1满足不等式判据(14)的证明。下面表明当出现错误时(sOXOR si) = 1的前述证明3。在根据方程(11)的平方根计算过程中,平方根Q(Ii)和中间余数r(n)各自为整 数。然而,在这种情况下,将最高有效数位的位置左移与运算次数成比例的多个数位。在 通过硬件实现平方根计算器的许多实际应用中,为了固定最高有效数位的位置,中间余数 r(n)和平方根Q(n)分别由定义如下的数位移位的中间余数r' (η)和数位移位的平方根 Q' (η)替换。r' (n) = r (η) /knQ' (η) = Q(n)/kn. . . (23)当递推方程(11)的两侧均除以kn时,获得以下递推方程(24)。r ‘ (η)= kXr' (n-l)-2Q' (n_l) X q(n_l) -(l/kn) X q2 (n_l)r (0) = 0P3. · · (24)在这种情况下,用于在选择整数作为部分平方根q(n-l)时使用的前述不等式判 据变成Ir' (n)-l/kn| <2Q' (η)。当选择不满足不等式判据|r' (n)-l/kn| < 2Q' (η) 的整数作为部分平方根q(n-l)时,在重复部分平方根的预测时在数位移位的中间余数r' (η)的计算结果中发生溢出。换而言之,数位移位的中间余数r' (η)的计算结果的数 位数目超过用于存储数位移位的中间余数r' (η)的区域的数位数目,使得数位移位的中 间余数r' (η)的符号位sO(位置紧邻数位移位的中间余数r' (η)的非符号位的最高有 效非符号位的右侧)的值不同于紧邻符号位s0右侧的扩展符号位si的值。因此,可以仅 基于上述两个符号位的异或(sOXOR si)来检测逻辑失效,并且向算术电路添加的、用于检 测在确定是否满足不等式判据Ir' (n)-l/kn| <2Q' (η)中的错误的逻辑电路可以仅是 一个异或电路(X0R门)。图7图示了根据第四实施例的平方根计算器。图7的平方根计算器包括预处理电 路31、中间余数寄存器32、平方根预测电路33、加数生成电路34、加法器35、平方根生成电 路36、平方根寄存器37和异或电路38。预处理31进行预处理,比如被开方数的数位位置的对准。预处理电路31具有连 接到中间余数寄存器32的输出信号线并且在中间余数寄存器32中存储数位对准的被开方 数 0Ρ3。中间余数寄存器32是用于存储中间余数的寄存器。例如,可以使用位宽度为64位 的寄存器作为中间余数寄存器32,用于以根据IEEE 754标准的双精度浮点格式存储中间 余数。中间余数寄存器32具有分别连接到平方根预测电路33、加法器35和如下电路(未 示出)的输出信号线,该电路进行对作为由图7的平方根计算器进行的平方根计算的结果 而获得的最终余数的后处理。平方根预测电路33基于中间余数寄存器32中保存的中间余数来预测部分平方根 q(n-l)。具体而言,平方根预测电路33确定部分平方根q(n-l),使得根据递推方程(24)获 得的中间余数满足不等式判据Ir' (n)-l/kn| <2Q' (η)。然而,当平方根预测电路33具 有逻辑失效并且出现使逻辑失效明显的数位移位的平方根Q' (η)与中间余数的值的具体 组合时,或者当出现晶体管单元的固定失效或者由比如放射性这样的因素而引起的软件错 误时,平方根预测电路33可以预测导致违反不等式判据(n)-l/kn| < 2Q' (η)的部 分平方根q(n-l)。平方根预测电路33具有分别连接到加数生成电路34和平方根生成电路 36的输出信号线。加数生成电路34计算要与中间余数相加的值(加数)。具体而言,加数生成电路 34计算{-2XQ' (n-l)Xq(n-l)-(l/kn)Xq2(n-l)}0计算的值由加法器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进行被开方数的数位位置的对准,使得生成数位对准的被开方数0P3。预处理 电路31在中间余数寄存器32中存储数位对准的被开方数0P3。接着,平方根预测电路33 预测与根据存储于中间余数寄存器32中的数位对准的被开方数0P3获得的最高有效数位 相对应的部分平方根并且将预测的部分平方根输入到加数生成电路34和平方根生成电路 36。平方根生成电路36在平方根寄存器37中照原样存储先由平方根预测电路33预测的 部分平方根。此外,加数生成电路34计算{-2XQ' (n-1) Xq(n-l)-(l/kn) Xq2(n-1)}作 为加数,并且将计算的加数输入到加法器35。加法器35将由加数生成电路34计算的加数 与起初存储于中间余数寄存器32中的数位对准的被开方数0P3相加,并且中间余数寄存器 32的内容从数位对准的被开方数0P3更新成中间余数。当中间余数寄存器32的内容被更 新时,平方根预测电路33重新预测与下一有效数位相对应的部分平方根,并且将预测的部 分平方根输入到加数生成电路34和平方根生成电路36。然后,平方根生成电路36将存储 于平方根寄存器37中的值左移,将重新预测的部分平方根与位于移位的值的有效性更低 的一侧上的数位相加,并且用被相加了重新预测的部分平方根的值来更新平方根寄存器37 的内容。随后,加数生成电路34计算{-2XQ' (n-1) Xq(n-l)-(l/kn) Xq2(n-1)}作为加 数,并且将加数输入到加法器35。加法器35将由加数生成电路34计算的加数与存储于中 间余数寄存器32中的中间余数相加,并且用加法器35的输出更新中间余数寄存器32的内 容。随后,重复地进行部分平方根的预测和基于预测的部分平方根的运算直至获得具有期 望数目的数位的最终平方根。这样,最终分别在平方根寄存器37和中间余数寄存器32中 存储通过数位对准的被开方数0P3的平方根计算所获得的数位对准的被开方数0P3的平方 根和余数。在上述平方根计算过程中,除非平方根预测电路33在部分平方根的预测中出错, 否则中间余数的扩展符号位串列中的最低有效位的值总是与中间余数的符号位的值相同。
图8图示了正常地确定部分平方根的平方根计算的例子。在图8的例子中,为求简 化,被开方数为8位二进制数并且被假设已经经历了数位位置的对准,并且数位对准的被 开方数0P3为“+11111111”。平方根计算器计算数位对准的被开方数0P3的平方根。在图 8中,在左半部中表明平方根计算过程,而在右半部中表明中间余数寄存器在平方根计算过 程期间的相应阶段中的内容。在中间余数寄存器在各阶段中的所示的位中,最左位为扩展 符号位中的最低有效扩展符号位,从左侧起的第二位为中间余数的符号位为中间余数的符 号位,而在符号位的右侧上图示的九个位表明中间余数的非符号位。平方根预测电路33以数位有效性的降序、在逐位基础上预测部分平方根。在中间 余数为正时,符号位和在符号位的有效侧上表明的扩展符号位均为“0”。当中间余数为负 时,符号位和扩展符号位均为“1”。在任一情况下,除非平方根预测电路3在部分平方根的 预测中出错,否则符号位和扩展符号位相同。当平方根预测电路33具有逻辑失效时,或者当出现晶体管单元的固定失效或者 由比如放射性这样的因素引起的软件错误时,平方根预测电路33可能在平方根计算过 程期间、在部分平方根的预测中出错,即平方根预测电路33可能预测导致违反不等式判 据|r' (n)-l/kn| <2Q' (η)的部分平方根q(n_l)。当违反不等式判据|r‘ (n)-l/kn| <2Q' (η)时,发生中间余数的溢出,使得在要设置中间余数的符号位的符号位的位置中 设置与中间余数的符号位不同的数值。因此,符号位的值变成不同于扩展符号位中的最低 有效扩展符号位的值。图9图示了错误地确定部分平方根的平方根计算的例子。在图9的例子中,在与 第四有效数位对应的部分平方根q(3)的确定中出现错误。在该确定中,为了满足不等式判 据Ir' (4)-l/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中存储 数位对准的被开方数0P3。中间余数寄存器42a和42b是为了单独地存储和与进位而提供的寄存器。例如, 和的值存储于中间余数寄存器42a中,而进位的值存储于中间余数寄存器42b中。中间余 数寄存器42a和42b具有分别连接到平方根预测电路43、CSA45和加法器/溢出检测器48 的输出信号线。平方根预测电路43基于中间余数寄存器42a和42b中存储的中间余数(即基于 分别地存储于中间余数寄存器42a和42b中并且表明中间余数的和与进位)来预测部分平 方根q(n-l)。平方根预测电路43具有分别连接到加数生成电路44和平方根生成电路46 的输出信号线。加数生成电路44计算要与中间余数相加的值(加数)。具体而言,加数生成电路 44计算{-2XQ' (n-l)Xq(n-l)-(l/kn)Xq2(n-l)}作为加数。加数生成电路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进行被开方数的数位位置的对准,从而生成数位对准的被开方数0P3。预处 理电路41在中间余数寄存器42a中存储数位对准的被开方数0P3。接着,平方根预测电路 43预测与根据存储于中间余数寄存器42a中的数位对准的被开方数0P3获得的最高有效数位相对应的部分平方根,并且将预测的部分平方根输入到加数生成电路44和平方根生成 电路46。平方根生成电路46在平方根寄存器47中照原样存储先由平方根预测电路43预 测的部分平方根。此外,加数生成电路44计算{-2XQ' (n-1) Xq(n-1)-(l/kn) Xq2(n-1)} 作为加数,并且将加数输入到CSA45。CSA 45将由加数生成电路44计算的加数与起初存储 于中间余数寄存器42a中的数位对准的被开方数0P3相加,并且输出由和与进位表示的计 算结果。这时,在中间余数寄存器42a中写入和,而在中间余数寄存器42b中写入进位。当 中间余数寄存器42a和42b的内容被更新时,平方根预测电路43基于中间余数寄存器42a 和42b的内容来重新预测与下一有效数位相对应的部分平方根,并且将预测的部分平方根 输入到加数生成电路44和平方根生成电路46。然后,平方根生成电路46将存储于平方根 寄存器47中的值左移,将最新预测的部分平方根与位于移位的值的有效性更低的一侧上 的数位相加,并且用被相加了重新预测的部分平方根的值更新平方根寄存器47的内容。随 后,加数生成电路44计算{-2XQ' (n-1) Xq (n-1)-(l/kn)X q2 (n-1)}作为加数,并且将加 数输入到CSA45。CSA 45基于中间余数寄存器42a中存储的和、中间余数寄存器42b中存 储的进位和加数生成电路44的计算结果来进行加法处理。然后,在中间余数寄存器42a中 写入通过CSA45的处理所获得的和,而在中间余数寄存器42b中写入通过CSA 45的处理所 获得的进位。随后,重复地进行部分平方根的预测和基于预测的部分平方根的运算直至获 得具有期望数目的数位的最终平方根。这样,最终在平方根寄存器47中存储通过上述平方 根计算所获得的数位对准的被开方数0P3的平方根,并且分别在中间余数寄存器42a和42b 中存储通过数位对准的被开方数0P3的平方根计算所获得的、代表余数的和与进位。另外, 当最终余数寄存器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中所示的平方根计算器。上述算术电路可以高可靠性地检测可能在算术运算期间出现的故障。这里记载的所有例子和条件语言旨在于教学目的以帮助读者理解本发明和发明 人为了发展本领域而贡献的概念,并且理解为不限于这样具体记载的例子和条件,而这样 的例子在说明书中的组织也不涉及说明本发明的优劣性。虽然已经具体描述本发明的一个 或者多个实施例,但是应当理解可以对其进行各种改变、替换和变更而不脱离本发明的精 神和范围。具体而言,构成第一至第六实施例的各单元可以由具有类似功能的另一单元替 换,并且可以向第一至第六实施例添加任何另外的单元或者任何另外的步骤。此外,有可能 任意地组合前述第一至第六实施例的两个或者更多个特征。
2权利要求
一种算术电路,包括寄存器;预处理电路,在所述寄存器中存储目标数值;解预测电路,每当在所述寄存器中存储所述数值时,所述解预测电路基于所述数值来预测部分解,其中所述部分解是由构成解的部分数位表示的值,所述解根据所述目标数值而获得,并且以数位有效性的降序来进行预测;中间值计算电路,使用由所述解预测电路预测的一个或者多个部分解、通过预定计算来生成中间值,通过符号扩展向所述中间值附加一个或者多个扩展符号位,并且在所述寄存器中存储被附加了所述一个或者多个扩展符号位的所述中间值;解生成电路,依次获取由所述解预测电路预测的所述一个或者多个部分解,并且基于所述一个或者多个部分解来生成解;以及错误检测电路,比较构成所述寄存器中存储的所述中间值的符号位的值与所述寄存器中存储的所述一个或者多个扩展符号位中的一个扩展符号位的值,并且在所述符号位的值不同于所述一个或者多个扩展符号位中的所述一个扩展符号位的值时检测出错误。
2.根据权利要求1所述的算术电路,其中所述错误检测电路是异或电路,所述异或电 路具有连接到存储于所述寄存器中的所述中间值的所述符号位和所述一个或者多个扩展 符号位中的所述一个扩展符号位的输入。
3.根据权利要求1所述的算术电路,还包括存储用于除法的除数的除数寄存器,其中 所述预处理电路在所述寄存器中存储用于所述除法的被除数而在所述除数寄存器中存储 所述除数,所述解预测电路预测构成商的部分商作为所述部分解,所述商通过所述被除数 除以所述除数而获得,并且所述中间值计算电路通过获得所述除数与所述部分商的乘积并 且从存储于所述寄存器中的所述数值中减去所述乘积来生成中间余数作为所述中间值。
4.根据权利要求3所述的算术电路,其中所述中间值计算电路包括加数生成电路,通过生成所述除数与所述部分商的乘积并且反转所述乘积的符号来生 成加数,以及加法器,将所述加数与存储于所述寄存器中的所述数值相加。
5.根据权利要求1所述的算术电路,其中所述预处理电路在所述寄存器中存储用于 平方根计算的被开方数,并且所述解预测电路预测构成平方根的部分平方根作为所述部分 解,所述平方根通过所述平方根计算根据所述被开方数而获得。
6.根据权利要求5所述的算术电路,其中所述中间值计算电路包括加数生成电路,所 述加数生成电路生成在计算所述被开方数与由所述解预测电路预测的一个或者多个部分 解构成的平方根的平方之差时使用的加数;以及加法器,所述加法器将所述加数与存储于 所述寄存器中的所述数值相加。
7.根据权利要求1所述的算术电路,其中所述寄存器包括第一寄存器和第二寄存器,所述解预测电路基于所述第一寄存器和所述第二寄存器中存储的数值来预测所述部分解,所述中间值计算电路在所述第一寄存器中存储和,所述和通过在所述预定计算的最终 阶段中进行的加法在相应的数位获得并且不含进位,而在所述第二寄存器中存储进位,所 述进位通过在所述预定计算的所述最终阶段中进行的所述加法在所述相应的数位获得,并且所述错误检测电路基于所述第一寄存器和所述第二寄存器中存储的所述和与所述进 位来进行加法,基于所述第一寄存器和所述第二寄存器中存储的所述和与所述进位来比较 加法结果中的符号位和扩展符号位的值,并且在基于所述第一寄存器和所述第二寄存器中 存储的所述数值的加法结果中的所述符号位和所述扩展符号位的值不同时检测出错误。
8.根据权利要求2所述的算术电路,其中所述一个或者多个扩展符号位中的所述一个 扩展符号位的位置紧邻有效性更高的一侧上的所述符号位。
9.一种算术处理设备,包括存储设备,所述存储设备存储一个或者多个数值;寄存器;预处理电路,所述预处理电路从所述存储设备读出目标数值,并且在所述寄存器中存 储所述目标数值;解预测电路,每当在所述寄存器中存储所述数值时,所述解预测电路基于所述数值来 预测部分解,其中所述部分解是由构成解的部分数位表示的值,所述解根据所述目标数值 而获得,并且以数位有效性的降序来进行预测;中间值计算电路,使用由所述解预测电路预测的一个或者多个部分解、通过预定计算 来生成中间值,通过符号扩展向所述中间值附加一个或者多个扩展符号位,并且在所述寄 存器中存储被附加了所述一个或者多个扩展符号位的所述中间值;解生成电路,依次获取由所述解预测电路预测的所述一个或者多个部分解,并且基于 所述一个或者多个部分解来生成解;以及错误检测电路,比较构成所述寄存器中存储的所述中间值的符号位的值与所述寄存器 中存储的所述一个或者多个扩展符号位中的一个扩展符号位的值,并且在所述符号位的值 不同于所述一个或者多个扩展符号位中的所述一个扩展符号位的值时检测出错误。
10.根据权利要求9所述的算术处理设备,其中所述错误检测电路是异或电路,所述异 或电路具有连接到存储于所述寄存器中的所述中间值的所述符号位和所述一个或者多个 扩展符号位中的所述一个扩展符号位的输入。
11.根据权利要求9所述的算术处理设备,还包括存储用于除法的除数的除数寄存器, 其中所述预处理电路在所述寄存器中存储用于所述除法的被除数而在所述除数寄存器中 存储所述除数,所述解预测电路预测构成商的部分商作为所述部分解,所述商通过所述被 除数除以所述除数而获得,并且所述中间值计算电路通过获得所述除数与所述部分商的乘 积并且从存储于所述寄存器中的所述数值中减去所述乘积来生成中间余数作为所述中间 值。
12.根据权利要求9所述的算术处理设备,其中所述预处理电路在所述寄存器中存储 用于平方根计算的被开方数,并且所述解预测电路预测构成平方根的部分平方根作为所述 部分解,所述平方根通过所述平方根计算根据所述被开方数而获得。
13.一种在算术电路中的算术处理方法,包括每当在寄存器中存储数值时基于所述数值来预测部分解,其中所述部分解是由构成 解的部分数位表示的值,所述解根据目标数值而获得,并且以数位有效性的降序来进行预 测;使用预测的一个或者多个部分解、通过预定计算来生成中间值,通过符号扩展向所述 中间值附加一个或者多个扩展符号位,并且在所述寄存器中存储被附加了所述一个或者多 个扩展符号位的所述中间值;依次获取所述预测的一个或者多个部分解,并且基于所述一个或者多个部分解来生成 解;并且比较构成所述寄存器中存储的所述中间值的符号位的值与所述寄存器中存储的所述 一个或者多个扩展符号位中的一个扩展符号位的值并且在所述符号位的值不同于所述一 个或者多个扩展符号位中的所述一个扩展符号位的值时检测出错误。
全文摘要
提供了算术电路、算术处理设备和算术处理方法。在一种算术电路中,每当在寄存器中存储数值时,基于该数值来预测部分解,使用一个或者多个预测的部分解、通过预定计算来生成中间值,通过符号扩展向中间值附加扩展符号位,并且在寄存器中存储被附加了扩展符号位的中间值。此外,基于一个或者多个部分解生成解。比较构成寄存器中存储的中间值的符号位的值与寄存器中存储的扩展符号位的值,并且在符号位的值不同于扩展符号位的值时输出错误信号。
文档编号G06F11/18GK101937379SQ20101021567
公开日2011年1月5日 申请日期2010年6月24日 优先权日2009年6月29日
发明者鸭志田志郎 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1