專利名稱:算術(shù)電路、算術(shù)處理設(shè)備和算術(shù)處理方法
技術(shù)領(lǐng)域:
這里討論的實施例涉及一種算術(shù)電路、算術(shù)處理設(shè)備和算術(shù)過程。
背景技術(shù):
算術(shù)邏輯電路包括加法器_減法器、除法器、平方根計算器等。用于通過使用電 子電路來進(jìn)行除法和平方根計算的技術(shù)包括恢復(fù)算法(restoringalgorithm)、非恢復(fù)算法 (nonrestroing algorithm)、SRT (Sweeney-Robertson-Tocher)算法等。在這些算術(shù)算法 中,重復(fù)用于獲得商或者平方根的η個數(shù)位(digit)的運算,其中η是自然數(shù)。上述算術(shù)算 法具有的特征在于商或者平方根的數(shù)位總數(shù)與上述運算的重復(fù)次數(shù)成比例。由于如在紙面 上的計算中那樣在上述算術(shù)算法中重復(fù)減法和數(shù)位移位,所以下文將上述算術(shù)算法稱為減 法和移位型算術(shù)算法??梢酝ㄟ^使用故障檢測設(shè)備檢測故障來提高減法和移位型算術(shù)電路的可靠性。例 如,一種已知的故障檢測電路在除數(shù)和被除數(shù)均為非零并且中間商(在商的歸一化之前的 中間階段中由除法器獲得)的最高有效數(shù)位與商的溢出數(shù)位(其位置緊鄰商的最高有效數(shù) 位左側(cè))均為零時生成故障信號,使得故障檢測電路可以檢測其中商由于誤差而變成零的 故障。附帶提及,在減法和移位型算術(shù)邏輯運算中發(fā)現(xiàn)的一些邏輯失效僅出現(xiàn)于在運算 期間很少產(chǎn)生的一些數(shù)據(jù)模式。上述邏輯錯誤在減法和移位型算術(shù)電路中可能出現(xiàn)的位置 是已知的。然而,沒有發(fā)現(xiàn)用于證實在這樣的位置的邏輯正確的技術(shù)。因此,目前用于發(fā)現(xiàn) 很少產(chǎn)生的數(shù)據(jù)模式出現(xiàn)的邏輯失效的僅有方式是可視地檢驗邏輯的繪圖等并且通過邏 輯仿真來收集運算驗證測試的結(jié)果。然而,由于通過可視檢驗來適當(dāng)檢測邏輯失效的能力依賴于可視地檢驗邏輯電路 示意圖等的個人的能力,所以可視檢驗無法保證邏輯的可靠性。另一方面,在目標(biāo)電路如單個運算元件那樣小的情況下,可以在充分長的時間內(nèi) 收集運算驗證測試的結(jié)果,因此通過邏輯仿真來檢測邏輯失效可以保證高可靠性。然而,在 目標(biāo)電路如減法和移位型算術(shù)電路那樣大的情況下,即使在進(jìn)行通過邏輯仿真的運算驗證 測試時也難以保證充分的可靠性。也就是說,可以用來檢驗各運算元件的時間在通過邏輯 仿真來進(jìn)行或者對實際系統(tǒng)進(jìn)行大規(guī)模系統(tǒng)的驗證時受到限制。由于這樣的時間限制,所 以難以通過邏輯仿真來發(fā)現(xiàn)減法和移位型算術(shù)電路中的缺陷。因此常規(guī)上,算術(shù)電路的邏 輯質(zhì)量的提高受到限制。即使在無法通過運算驗證測試來完全地預(yù)先避免失效的情況下,如果有可能防止 錯誤的計算結(jié)果傳遞到后續(xù)處理階段,則仍然可以保證可靠性。因此,需要一種用于即使在 計算運算期間很少出現(xiàn)故障的情況下仍然高可靠性地檢測故障的技術(shù)。[專利文獻(xiàn)1]日本專利申請第62-212728號
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種實現(xiàn)可靠檢測在計算運算期間出現(xiàn)的故障的算術(shù)電 路、算術(shù)處理設(shè)備和算術(shù)處理方法。根據(jù)本發(fā)明的一個方面,一種算術(shù)電路包括寄存器;預(yù)處理電路,在寄存器中存 儲要對其進(jìn)行算術(shù)運算的目標(biāo)數(shù)值;解預(yù)測電路,每當(dāng)在寄存器中存儲數(shù)值時,基于數(shù)值來 預(yù)測部分解,其中部分解是由構(gòu)成解的部分?jǐn)?shù)位表示的值,所述解根據(jù)目標(biāo)數(shù)值而獲得,并 且以數(shù)位有效性的降序來進(jìn)行預(yù)測;中間值計算電路,使用由解預(yù)測電路預(yù)測的一個或者 多個部分解、通過預(yù)定計算來生成中間值,通過符號擴展向中間值附加一個或者多個擴展 符號位、并且在寄存器中存儲被附加了一個或者多個擴展符號位的中間值;解生成電路, 依次獲取由解預(yù)測電路預(yù)測的一個或者多個部分解,并且基于一個或者多個部分解來生成 解;以及錯誤檢測電路,比較構(gòu)成寄存器中存儲的中間值的符號位的值與寄存器中存儲的 一個或者多個擴展符號位中的一個擴展符號位的值,并且在符號位的值不同于一個或者多 個擴展符號位中的一個擴展符號位的值時檢測出錯誤。
圖1圖示了根據(jù)第一實施例的算術(shù)電路;圖2圖示了根據(jù)第二實施例的除法器;圖3圖示了中間余數(shù)寄存器和異或電路的連接的例子;圖4圖示了正常地確定部分商的除法的例子;圖5圖示了錯誤地確定部分商的除法的例子;圖6圖示了根據(jù)第三實施例的除法器;圖7圖示了根據(jù)第四實施例的平方根計算器;圖8圖示了正常地確定部分平方根的平方根計算的例子;圖9圖示了錯誤地確定部分平方根的平方根計算的例子;圖10圖示了根據(jù)第五實施例的平方根計算器;并且圖11表明算術(shù)處理設(shè)備的例子。
具體實施例方式下文將參照附圖來說明實施例,其中相似的標(biāo)號通篇地指代相似的單元。圖1圖示了根據(jù)第一實施例的算術(shù)電路。圖1的算術(shù)電路包括寄存器1、預(yù)處理電 路2、解預(yù)測電路3、中間值計算電路4、解生成電路5和錯誤檢測電路6。圖1中的寄存器1代表一個或者多個寄存器。寄存器1存儲由中間值計算電路4 生成的中間值Ia和通過中間值Ia的符號擴展向中間值Ia附加的擴展符號lb。處理電路2在寄存器1中存儲將對其進(jìn)行算術(shù)運算的一個或者多個數(shù)值。例如, 預(yù)處理電路2在寄存器1進(jìn)行除法的情況下在寄存器1中存儲被除數(shù)或者在寄存器1進(jìn)行 平方根計算的情況下在寄存器1中存儲被開方數(shù)。在除法的情況下,單獨地布置另一寄存 器用于存儲除數(shù),并且預(yù)處理電路2在單獨布置的寄存器中存儲除數(shù)。每當(dāng)數(shù)值存儲于寄存器1中時,解預(yù)測電路3基于寄存器1中存儲的數(shù)值來預(yù)測 部分解(partial solution),其中部分解由代表將根據(jù)一個或者多個數(shù)值獲得的解的部分
6數(shù)位(digit)的值構(gòu)成并且以數(shù)位有效性的降序來預(yù)測。例如,在除法的情況下,解預(yù)測電 路3以數(shù)位有效性的降序預(yù)測部分商(partial quotient),其中部分商由代表商的部分?jǐn)?shù) 位的值構(gòu)成。在平方根計算的情況下,解預(yù)測電路3以數(shù)位有效性(significance)的降序 預(yù)測部分平方根(partial square root),其中部分平方根由代表平方根的部分?jǐn)?shù)位的值 構(gòu)成。中間值計算電路4使用由解預(yù)測電路3預(yù)測的一個或者多個部分解、通過預(yù)定計 算來生成中間值,并且在寄存器1中存儲由中間值和通過符號擴展向中間值附加的一個或 者多個擴展符號位構(gòu)成的數(shù)值。解生成電路5依次獲取由解預(yù)測電路3預(yù)測的一個或者多個部分解,并且基于一 個或者多個部分解來生成解。例如,在除法的情況下,解生成電路5依次獲取由解預(yù)測電路 3預(yù)測的一個或者多個部分商并且生成商。在平方根計算的情況下,解生成電路5依次獲取 由解預(yù)測電路3預(yù)測的一個或者多個部分平方根并且生成平方根。錯誤檢測電路6比較由存儲于寄存器1中的中間值Ia的符號位所代表的值與由 構(gòu)成擴展符號Ib的一個或者多個擴展符號位之一所代表的值,并且在比較的值不同時輸 出錯誤信號。例如,錯誤檢測電路6是連接到中間值Ia的符號位和一個或者多個擴展符號 位之一的異或電路,并且異或電路6a接收符號位和擴展符號位的值并且輸出接收的值的 異或。當(dāng)異或電路6a的輸出為“1”時,輸出信號為錯誤信號。在上述配置的算術(shù)電路中,預(yù)處理電路2在寄存器1中存儲將對其進(jìn)行算術(shù)運算 的一個或者多個數(shù)值。然后,解預(yù)測電路3預(yù)測部分解,并且中間值計算電路4生成中間 值、進(jìn)行中間值的符號擴展(即產(chǎn)生由中間值和通過符號擴展向中間值附加的一個或者多 個擴展符號位構(gòu)成的數(shù)值)并且在寄存器1中存儲符號擴展的中間值。當(dāng)中間值如上所述存儲于寄存器1中時,解預(yù)測電路3重新預(yù)測與構(gòu)成解的部分 數(shù)位相對應(yīng)的部分解,其中部分?jǐn)?shù)位比與解預(yù)測電路3已經(jīng)預(yù)測的一個或者多個部分解相 對應(yīng)的一個或者多個數(shù)位具有更低的有效性。然后,中間值計算電路4基于重新預(yù)測的部 分解來重新生成中間值、進(jìn)行重新生成的中間值的符號擴展并且在寄存器1中存儲符號擴 展的中間值。隨后,重復(fù)地進(jìn)行部分解的預(yù)測和中間值的更新直至完成與解的數(shù)位的預(yù)定 數(shù)目相對應(yīng)的部分解的預(yù)測。解生成電路5通過組合由解預(yù)測電路3預(yù)測的部分解來形成解。此外,每當(dāng)中間值存儲于寄存器1中時,錯誤檢測電路6檢測錯誤。當(dāng)正確地預(yù)測 解時,中間值的符號位的值與通過符號擴展附加的擴展符號位的值相同,使得錯誤檢測電 路6不輸出錯誤信號。當(dāng)解預(yù)測電路3在部分解的預(yù)測中出錯時,由中間值計算電路4生 成的中間值也變成錯誤值。當(dāng)預(yù)測錯誤的部分解時并且重復(fù)部分解的預(yù)測和中間值的生成 時,中間值中發(fā)生溢出。當(dāng)中間值中發(fā)生溢出時,中間值的最高有效非符號位的值存儲于中 間值的符號位的位置中。因此,擴展符號Ib變得不同于中間值的符號位,使得檢測電路6 輸出錯誤信號。如上所述,可以高可靠性地檢測由解預(yù)測電路3在部分解的預(yù)測中的錯誤引起的 錯誤。由于錯誤是由內(nèi)置于算術(shù)電路中的錯誤檢測電路6來檢測,所以可以在算術(shù)電路運 算時總是檢測出錯誤的出現(xiàn)或者未出現(xiàn)。因此,即使在部分解的預(yù)測中很少出現(xiàn)錯誤的情 況下,錯誤檢測電路6仍可以在錯誤實際上出現(xiàn)時輸出錯誤信號。由于錯誤信號是從錯誤檢測電路6輸出,所以有可能防止在后處理電路中使用錯誤的解,后處理電路通常使用由 解生成電路5生成的解。因此,提高了計算結(jié)果的可靠性。此外,由于錯誤檢測電路6當(dāng)中 間值溢出時檢測出錯誤,所以可以容易地確定錯誤的原因。另外,由于錯誤檢測電路6例如 可以由異或電路6a實現(xiàn),所以可以通過增加很少量的邏輯電路來檢測失效(failure)。雖然上文說明了由于解預(yù)測電路3在部分解的預(yù)測中的錯誤而出現(xiàn)錯誤的例子, 但是也可以由于其它原因而產(chǎn)生中間值的溢出。在一些情況下,算術(shù)電路例如由于LSI (大 規(guī)模集成電路)中的早期失效(比如晶體管單元的固定失效或者由比如放射性這樣的因素 而引起的軟件失效)而沒有如預(yù)期的那樣操作。圖1的算術(shù)電路甚至可以在中間值的溢出 發(fā)生時檢測上述失效。因此,在圖1的算術(shù)電路內(nèi)置于產(chǎn)品中安裝的LSI中的情況下提高 了包含算術(shù)電路的產(chǎn)品的可靠性。因此,圖1的算術(shù)電路可以有助于提高通稱為RAS的可 靠性、可用性和可服務(wù)性。圖1的算術(shù)電路可以使用于包括除法器或者平方根計算器的所有減法和移位型 算術(shù)電路中。在除法器和平方根計算器中,解預(yù)測電路3的設(shè)計并不容易,并且錯誤可能出 現(xiàn)于解預(yù)測電路3的設(shè)計中。當(dāng)使用圖1的算術(shù)電路時,有可能進(jìn)行減法和移位型除法器 和平方根計算器中的解預(yù)測電路的運算驗證,并且因此防止出現(xiàn)由解預(yù)測電路的設(shè)計中的 失誤引起的缺陷。此外,也有可能在通過使用與圖1的算術(shù)電路等效的電路來進(jìn)行邏輯仿真時通過 邏輯仿真來檢測在部分解的預(yù)測中的錯誤。另外,即使在由軟件進(jìn)行減法和移位型算術(shù)的 情況下,可以通過向軟件添加進(jìn)行與圖1中的錯誤檢測電路6類似的運算的模塊來檢測中 間值的溢出。下文說明除法器的例子作為第二和第三實施例而說明平方根計算器的例子作為 第四和第五實施例。下面說明實現(xiàn)檢測故障的根據(jù)第二實施例的除法器。首先說明使用遞推方程的減 法和移位型算術(shù)的序列,然后說明在符號位之間的比較為何實現(xiàn)邏輯檢驗器的功能的原因。在以下說明中,被除數(shù)由opl(操作數(shù)1)表示,除數(shù)由op2(操作數(shù))表示,而基數(shù) 由k表示(其中k = 2m,而m為自然數(shù))。通常,在除法運算之前進(jìn)行除數(shù)op2和被除數(shù)opl的最高有效數(shù)位的位置的對準(zhǔn)。 在下文中,已經(jīng)經(jīng)歷數(shù)位位置對準(zhǔn)的被除數(shù)opl和除數(shù)op2分別稱為數(shù)位對準(zhǔn)的被除數(shù)和 數(shù)位對準(zhǔn)的除數(shù),并且分別由OPl (操作數(shù)1)和0P2(操作數(shù)2)表示。在以下方程中分別 表明數(shù)位對準(zhǔn)的被除數(shù)OPl和數(shù)位對準(zhǔn)的除數(shù)0P2。OPl = OplXka (其中 a 為整數(shù))0P2 = op2Xkb(其中 b 為整數(shù))在對準(zhǔn)時,將數(shù)位位置移位,使得數(shù)位對準(zhǔn)的除數(shù)0P2和數(shù)位對準(zhǔn)的被除數(shù)OPl的 最高有效數(shù)位的位置相匹配或者數(shù)位對準(zhǔn)的被除數(shù)OPl的最高有效數(shù)位的位置從數(shù)位對 準(zhǔn)的除數(shù)0P2的最高有效數(shù)位的位置右移一個數(shù)位。用于獲得商和余數(shù)的減法和移位型算術(shù)序列由遞推方程(1)定義。r(n) = kXr(n-l)-q(n-l) X0P2r(0) = 0P1. . . (1)這時,q(n-l)為選擇成滿足不等式判據(jù)|r (η) | < 0Ρ2的整數(shù)。雖然用于q(n-l)的多個候選可以存在于滿足條件|q(n_l)| <k的范圍中,但是可以選擇候選中的任意一 個。在遞推方程⑴中,Hn)稱為第η個中間余數(shù),而q(n-l)稱為與第η個有效數(shù)位相對 應(yīng)的部分商?;謴?fù)算法是選擇表明部分商q(n-l)的整數(shù)使得中間余數(shù)r (η)總是為零或者為正 的計算算法。非恢復(fù)算法是允許中間余數(shù)Hn)為負(fù)的計算算法。SRT算法是允許中間余 數(shù)Hn)為負(fù)并且僅基于中間余數(shù)r(η)的少數(shù)有效位來確定是否滿足不等式判據(jù)|r(n) < 0P2的計算算法。也就是說,根據(jù)恢復(fù)算法,中間余數(shù)r(η)總是限于零或者正數(shù)。在這種情況下,用 于每個部分商q(n-l)的候選被自動并唯一地確定為零或者正數(shù)。另一方面,根據(jù)非恢復(fù)算 法或者SRT算法,允許中間余數(shù)r(n)為負(fù)。在這種情況下,每個部分商q(n_l)可以為負(fù), 并且可以存在用于每個部分商q(n-l)的多個候選。當(dāng)由在將數(shù)位對準(zhǔn)的被除數(shù)OPl除以數(shù)位對準(zhǔn)的除數(shù)0P2的過程中獲得的第一至 第η個有效數(shù)位構(gòu)成的商由Q(n)表示時,商Q(n)可以通過使用部分商q(0),q(l),..., q(n-2)和 q(n-l)表達(dá)為Q (n) = q (0) X kn_1+q(l) X kn_2+. · · +q (n_2) X k+q (n_l)…(2)根據(jù)方程(1)導(dǎo)出以下方程。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)在被除數(shù)op 1除以除數(shù)op2的情況下,商和余數(shù)滿足關(guān)系opl =(商)Xop2+(余 數(shù))。鑒于方程(3)、⑷和(5),商可以表達(dá)為0(11)\1^/1^+3,并且...(6)余數(shù)可以表達(dá)為
r(n)/kn+a0 ... (7)在定點除法的情況下,通常重復(fù)根據(jù)遞推方程⑴的算術(shù)運算直至方程(6)和(7) 中的任一方程的右側(cè)變成非整數(shù)。在浮點除法的情況下,重復(fù)根據(jù)遞推方程(1)的算術(shù)運 算直至商Q(n)的數(shù)位的數(shù)目達(dá)到與有效數(shù)位和附加數(shù)位的總數(shù)相等的必需數(shù)目。必需有 效數(shù)位例如包括Q (η)的歸一化表示的分?jǐn)?shù)部分的23位(在根據(jù)IEEE 754標(biāo)準(zhǔn)的單精度 浮點格式的情況下)或商Q (η)的歸一化表示的分?jǐn)?shù)部分的52位(在根據(jù)IEEE 754標(biāo)準(zhǔn) 的雙精度浮點格式的情況下)。附加位包括用于所謂隱藏位的一位(在商Q(n)的歸一化表 示中的整數(shù)部分中)和用于舍入的少數(shù)有效性更低的位。(舍入意味著根據(jù)某種規(guī)則由 近似值代表數(shù)值。例如,舍去有效性比有效數(shù)位更低的數(shù)位。)在用于進(jìn)行上述減法和移位型算術(shù)的邏輯設(shè)計中,根據(jù)遞推方程(1)和對滿足不 等式判據(jù)Ir (n) I < 0Ρ2的整數(shù)q(n_l)的選擇在運算中需要謹(jǐn)慎。具體而言,在用于確定是否滿足不等式判據(jù)|r(n) | < 0P2的邏輯中,可能出現(xiàn)邏 輯錯誤并且難以發(fā)現(xiàn)。在20世紀(jì)90年代,在個人計算機中的CPU(中央處理單元)中進(jìn)行 的浮點除法中使用SRT算法。然而,在發(fā)貨之后發(fā)現(xiàn)了在產(chǎn)品中響應(yīng)于特定輸入值在計算 結(jié)果中出現(xiàn)錯誤的事實,并且召回產(chǎn)品。上述錯誤的原因在于在確定是否滿足不等式判據(jù) |r(n) <0P2中的錯誤。即使在計算結(jié)果中出現(xiàn)錯誤的頻率低的情況下,除非保證計算結(jié) 果的正確性,否則不可能使用于科學(xué)和技術(shù)領(lǐng)域中。因此,有必要置入防止錯誤的計算結(jié)果 傳遞到后續(xù)處理階段的電路。根據(jù)第二實施例,當(dāng)在確定是否滿足不等式判據(jù)|r (η) | < 0Ρ2中出現(xiàn)錯誤時,檢 測出該確定中的錯誤,并且輸出錯誤信號。下文說明用于檢測在確定是否滿足不等式判據(jù) |r(n)| <0Ρ2中的錯誤的邏輯。下面將首先考慮在確定是否滿足不等式判據(jù)|r(n) | < 0P2中出現(xiàn)錯誤之后進(jìn)行 的運算。當(dāng)在確定是否滿足不等式判據(jù)|r (η) | < 0Ρ2中出現(xiàn)錯誤時,選擇錯誤的部分商 q(n-l),并且此后繼續(xù)條件|r(n) I彡0P2,使得中間余數(shù)如下所示不會收斂。由于整數(shù) q(n-l)滿足q(n-l) |彡k,所以當(dāng)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必然地存在。換而 言之,在確定是否滿足不等式判據(jù)|r(n) I <0P2中出現(xiàn)錯誤之后相繼地出現(xiàn)錯誤(即相繼 獲得的中間余數(shù)保持于發(fā)散條件下)。在許多情況下,在發(fā)散條件之下當(dāng)重復(fù)根據(jù)遞推方程(1)的算術(shù)運算時中間余數(shù) 溢出。由于中間余數(shù)的溢出意味著中間余數(shù)的值變得太大而無法存儲于算術(shù)電路中為中間 余數(shù)提供的數(shù)位中,所以在算術(shù)電路中存儲作為中間余數(shù)的值由于溢出所引起的丟失一些 有效位而變成錯誤的。錯誤的中間余數(shù)的出現(xiàn)導(dǎo)致相繼生成錯誤的中間余數(shù)和錯誤的中間 商。因而,當(dāng)在確定是否滿足不等式判據(jù)|r(n)| <0P2中出現(xiàn)錯誤時,相繼地生成在發(fā)散 條件下的中間余數(shù)或者相繼地生成錯誤的中間余數(shù)和錯誤的中間商。在任一情況下,不可能在上述情形之下獲得商的正確值。鑒于上情況,根據(jù)第二實施例,通過從上述錯誤狀態(tài)之中檢測中間余數(shù)的溢出來 檢測在確定是否滿足不等式判據(jù)|r(n)| <0P2中的錯誤。在以下說明中,假設(shè)算術(shù)電 路由具有符號擴展功能的數(shù)字電路實現(xiàn)。符號擴展是如下運算,該運算是在位串列(bit series)代表有符號數(shù)并且具有比存儲區(qū)的位寬度更短的長度時進(jìn)行的并且在該運算中存 儲區(qū)中的一個或者多個空數(shù)位由一個或者多個適當(dāng)?shù)奈惶畛渫瑫r保留有符號數(shù)的標(biāo)識。在 本實施例中,假設(shè)通過用各自具有與符號位的值相同的值的一位或者多位來填充位于有效 側(cè)上的一個或者多個空數(shù)位來進(jìn)行符號擴展。如前所述,在算術(shù)運算之前,進(jìn)行除數(shù)和被除數(shù)的最高有效數(shù)位的位置對準(zhǔn)。在對 準(zhǔn)時,將數(shù)位位置移位,使得數(shù)位對準(zhǔn)的除數(shù)0P2和數(shù)位對準(zhǔn)的被除數(shù)OPl ( = r (0))的最 高有效位的位置相匹配或者數(shù)位對準(zhǔn)的被除數(shù)OPl ( = r(0))的最高有效數(shù)位的位置從數(shù) 位對準(zhǔn)的除數(shù)0P2的最高有效數(shù)位的位置右移一個數(shù)位。此后,只要算術(shù)運算在邏輯上正 確,在滿足不等式判據(jù)|r(n)| <0P2之時進(jìn)行算術(shù)運算。因此,中間余數(shù)r(n)的最高有效 數(shù)位的有效性不超過數(shù)位對準(zhǔn)的除數(shù)0P2的最高有效數(shù)位的有效性,并且只要算術(shù)運算在 邏輯上正確,數(shù)位對準(zhǔn)的除數(shù)0P2的符號位的位置與中間余數(shù)r (η)的符號位的位置匹配。 由于各自具有與中間余數(shù)r (η)的符號位的值相同的值的一個或者多個位通過符號擴展位 于中間余數(shù)r (η)的有效側(cè)(significant side)上,所以中間余數(shù)r (η)的符號位的值通常 可以有望與位于中間余數(shù)r (η)的符號位的有效側(cè)上的每個位的值相同。如果發(fā)現(xiàn)中間余 數(shù)r(n)的符號位的值與位于中間余數(shù)r (η)的符號位的有效側(cè)上的位的值不相同,則有可 能確定數(shù)據(jù)溢出到符號位的位置中。在中間余數(shù)r(n)的符號位(位置緊鄰中間余數(shù)r (η)的最高有效非符號位左側(cè)并 且是符號位中的最右符號位)的值由sO表示,并且擴展符號位中緊鄰上述符號位右側(cè)的擴 展符號位(即擴展符號位中的最右擴展符號位)的值由si表示的情況下,可以僅基于上述 兩個符號位的異或(sO XOR si)來檢測邏輯失效,因為在沒有出現(xiàn)錯誤時(sO XOR si)= 0而在出現(xiàn)錯誤時(sO XOR si) =1。因此,向上述算術(shù)電路添加的、并且用于檢測在確定 是否滿足不等式判據(jù)|r(n) I < 0P2中的錯誤的邏輯電路可以僅由一個異或電路(X0R門) 來實現(xiàn)。圖2圖示了根據(jù)第二實施例的除法器。圖2的除法器包括預(yù)處理電路11、中間余 數(shù)寄存器12、除數(shù)寄存器13、商預(yù)測電路14、加數(shù)生成電路15、加法器16、商生成電路17、 商寄存器18和異或電路19。預(yù)處理電路11進(jìn)行預(yù)處理,比如被除數(shù)和除數(shù)的數(shù)位位置的對準(zhǔn)。預(yù)處理電路11 具有分別連接到中間余數(shù)寄存器12和除數(shù)寄存器13的輸出信號線,并且在中間余數(shù)寄存 器12中存儲數(shù)位對準(zhǔn)的被除數(shù)OPl而在除數(shù)寄存器13中存儲數(shù)位對準(zhǔn)的除數(shù)0P2。中間余數(shù)寄存器12是用于存儲中間余數(shù)的寄存器。例如,可以使用位寬度為64 位的寄存器作為中間余數(shù)寄存器12,用于以根據(jù)IEEE 754標(biāo)準(zhǔn)的雙精度浮點格式存儲中 間余數(shù)。中間余數(shù)寄存器12具有分別連接到商預(yù)測電路14、加法器16和如下電路(未示 出)的輸出信號線,該電路進(jìn)行對作為由圖2的除法器進(jìn)行的除法的結(jié)果而獲得的最終余 數(shù)的后處理。商預(yù)測電路14基于中間余數(shù)寄存器12中保存的中間余數(shù)和除數(shù)寄存器13中存
11儲的數(shù)位對準(zhǔn)的除數(shù)0P2來預(yù)測部分商q(n-l)。(雖然在圖2中未指明除數(shù)寄存器13與 商預(yù)測電路14之間的連接,但是商預(yù)測電路14可以查詢除數(shù)寄存器13以便使用數(shù)位對準(zhǔn) 的除數(shù)0P2進(jìn)行上述預(yù)測。)具體而言,商預(yù)測電路14確定部分商q(n-l),使得數(shù)位對準(zhǔn) 的除數(shù)0P2和通過遞推方程(1)獲得的中間余數(shù)滿足不等式判據(jù)|r (η) | < 0Ρ2。然而,當(dāng) 商預(yù)測電路14具有邏輯失效并且出現(xiàn)使邏輯失效明顯的數(shù)位對準(zhǔn)的除數(shù)0Ρ2與中間余數(shù) 的組合時,或者當(dāng)出現(xiàn)晶體管單元的固定失效或者由比如放射性這樣的因素引起的軟件錯 誤時,商預(yù)測電路14可以預(yù)測導(dǎo)致違反不等式判據(jù)|r(n)| <0P2的部分商q(n-l)。商預(yù) 測電路14具有分別連接到加數(shù)生成電路15和商生成電路17的輸出信號線。加數(shù)生成電路15計算要與中間余數(shù)相加的值(加數(shù))。具體而言,加數(shù)生成電路 15計算由商預(yù)測電路14預(yù)測的部分商q(n-l)與從除數(shù)寄存器13獲取的數(shù)位對準(zhǔn)的除數(shù) 0P2的乘積、并且將該乘積與-1相乘以便反轉(zhuǎn)乘積的符號。加數(shù)生成電路15具有連接到加 法器16的輸出信號線,使得加數(shù)生成電路15的輸出被提供給加法器15。加法器16將輸入的值相加。具體而言,加法器16將加數(shù)生成電路15計算的加數(shù) 與存儲于中間余數(shù)寄存器12中的中間寄存器相加。加法器16具有連接到中間余數(shù)寄存器 12的輸出信號線,使得在中間余數(shù)寄存器12中存儲從加法器16輸出的加法結(jié)果作為中間 余數(shù)。當(dāng)除數(shù)和部分商均為正時,加數(shù)生成電路15獲得的加數(shù)為負(fù)值。在這種情況下, 加法器16進(jìn)行的加法是從中間余數(shù)中減去加數(shù)生成電路15獲得加數(shù)的絕對值的運算。根 據(jù)本實施例,負(fù)數(shù)由二的補碼代表。二進(jìn)制數(shù)的二的補碼通過將二進(jìn)制數(shù)的每個位取非 (布爾求補或者求逆)并且加一來獲得。也就是說,加數(shù)生成電路15在計算結(jié)果為負(fù)時輸 出以二的補碼表示的計算結(jié)果。在這種情況下,加法器16將加數(shù)生成電路15的計算結(jié)果 與中間余數(shù)相加并且忽略來自相加結(jié)果中的最高有效位的進(jìn)位。這樣,實現(xiàn)了負(fù)數(shù)的加法。商生成電路17基于已經(jīng)由商預(yù)測電路14生成的一個或者多個部分商來生成商值 并且輸出生成的商值。商生成電路17具有連接到商寄存器18的輸出信號線,并且在商寄 存器18中寫入由商生成電路17生成的商值。具體而言,每當(dāng)商預(yù)測電路14重新預(yù)測部分 商時,商生成電路17讀入當(dāng)前存儲于商寄存器18中的商值,將商值左移預(yù)定數(shù)目的數(shù)位并 且將重新預(yù)測的部分商與由于移位而空出的、預(yù)定數(shù)目的數(shù)位相加并且在商寄存器18中 寫入被相加了重新預(yù)測的部分商的商值。商寄存器18是用于存儲商值的寄存器。商寄存器18具有分別連接到商生成電路 17和如下電路(未示出)的輸出信號線,該電路進(jìn)行商的最終值(最終商)的后處理。異或電路19連接到中間余數(shù)寄存器12。具體而言,存儲于中間余數(shù)寄存器12中 的中間余數(shù)的符號位的輸出信號線和位于中間余數(shù)寄存器中的中間余數(shù)的符號位的有效 側(cè)上的擴展符號位的輸出信號線連接到異或電路19的輸入。圖3圖示了中間余數(shù)寄存器和異或電路的連接的例子。在圖3的例子中,中間余 數(shù)寄存器12具有64位的寬度。在中間余數(shù)寄存器12中,以有效性的升序存儲用于舍入的 位串列12a、中間余數(shù)的位串列12b和擴展符號位串列12c。用于舍入的位串列12a包括中間余數(shù)寄存器12中的少數(shù)有效性更低的位(例如 兩位)并且表明用于對中間余數(shù)進(jìn)行舍入的值。位串列12b位于用于舍入的位串列12a的有效側(cè)上。起初,數(shù)位對準(zhǔn)的被除數(shù)OPl存儲于位串列12b中。隨后,每當(dāng)進(jìn)行加法器16的運算時,在位串列12b中存儲運算的結(jié) 果作為中間余數(shù)。例如,中間余數(shù)寄存器12中的53位用于位串列12b。位串列12b的最高 有效位為符號位12d。符號位12d表明表明中間余數(shù)的符號的值。在中間余數(shù)為正時符 號位為“0”,而在中間余數(shù)為負(fù)時符號位為“1”。擴展符號位串列12c位于位串列12b的有效側(cè)上。擴展符號位存儲于擴展符號位 串列12c中。在中間余數(shù)為正時,每個擴展符號位為“0”,而在中間余數(shù)為負(fù)時,每個擴展符 號位為“1”。在圖3的例子中,存儲于中間余數(shù)寄存器12中的中間余數(shù)的符號位和中間余數(shù)寄 存器12中的擴展符號位12c的最低有效擴展符號位12e連接到異或電路19的輸入,使得 異或電路19計算向異或電路19中輸入的兩位的異或。異或電路19在兩個輸入位相同時 輸出“ 0 ”而在兩個輸入位不同時輸出“ 1”。根據(jù)本實施例,通過使用具有圖2和圖3中所示構(gòu)造的除法器來進(jìn)行除法運算。下 文概括根據(jù)第二實施例的除法器的運算。為了進(jìn)行除法運算,向預(yù)處理電路11中輸入被除數(shù)opl和除數(shù)op2。然后,預(yù)處理 電路11進(jìn)行被除數(shù)和除數(shù)的數(shù)位位置的對準(zhǔn),從而生成數(shù)位對準(zhǔn)的被除數(shù)OPl和數(shù)位對準(zhǔn) 的除數(shù)0P2。預(yù)處理電路11在中間余數(shù)寄存器12中存儲數(shù)位對準(zhǔn)的被除數(shù)OPl而在除數(shù) 寄存器13中存儲數(shù)位對準(zhǔn)的除數(shù)0P2。隨后,商預(yù)測電路14預(yù)測與根據(jù)存儲于中間余數(shù)存 儲器12中的數(shù)位對準(zhǔn)的被除數(shù)OPl獲得的最高有效位相對應(yīng)的部分商并且向加數(shù)生成電 路15和商生成電路17中輸入預(yù)測的部分商。商生成電路17在商寄存器18中照原樣存儲先由商預(yù)測電路14預(yù)測的部分商。此外,加數(shù)生成電路15計算輸入的部分商與數(shù)位對準(zhǔn)的除數(shù)0P2的乘積、反轉(zhuǎn)乘 積的符號以生成加數(shù)并且將加數(shù)輸入到加法器16。加法器16將由加數(shù)生成電路15計算的 加數(shù)與起初存儲于中間余數(shù)寄存器12中的數(shù)位對準(zhǔn)的被除數(shù)OPl相加,并且中間余數(shù)寄存 器12的內(nèi)容從數(shù)位對準(zhǔn)的被除數(shù)OPl更新成中間余數(shù)。當(dāng)中間余數(shù)寄存器12的內(nèi)容被更新時,商預(yù)測電路14重新預(yù)測與下一有效數(shù)位 對應(yīng)的部分商并且將預(yù)測的部分商輸入到加數(shù)生成電路15和商生成電路17。然后,商生成 電路17將存儲于商寄存器18中的值左移、將重新預(yù)測的部分商與位于移位的值的有效性 更低的一側(cè)上的數(shù)位相加,并且用被相加了重新預(yù)測的部分商的值來更新商寄存器18的 內(nèi)容。隨后,加數(shù)生成電路15計算輸入的部分商與數(shù)位對準(zhǔn)的除數(shù)0P2的乘積、反轉(zhuǎn)乘 積的符號以生成加數(shù)并且將加數(shù)輸入到加法器16。加法器16將由加數(shù)生成電路15計算的 加數(shù)與存儲于中間余數(shù)寄存器12中的中間余數(shù)相加,并且用加法器16的輸出更新中間余 數(shù)寄存器12的內(nèi)容。隨后,重復(fù)地進(jìn)行部分商的預(yù)測和基于預(yù)測的部分商的運算直至獲得具有期望數(shù) 目的數(shù)位的最終商。因此,最終分別在商寄存器18和中間余數(shù)寄存器12中存儲通過將數(shù) 位對準(zhǔn)的被除數(shù)OPl除以數(shù)位對準(zhǔn)的除數(shù)0P2所獲得商和余數(shù)。在上述除法過程中,除非商預(yù)測電路13在部分商的預(yù)測中出錯,否則擴展符號位 串列12c中的最低有效位12e的值總是與符號位12d的值相同。圖4圖示了正常地確定部分商的除法的例子。在圖4的例子中,為求簡化,處理
13的數(shù)為8位二進(jìn)制數(shù),并且被假設(shè)已經(jīng)經(jīng)歷了數(shù)位位置的對準(zhǔn),其中數(shù)位對準(zhǔn)的被除數(shù)OPl 為“+11000000”,而數(shù)位對準(zhǔn)的除數(shù)0P2為“+10000001”。在這種情況下,除法器進(jìn)行除法 0P1 + 0P2 = (+11000000) + (+10000001)。在圖4中,在左半部中表明除法過程,而在右半部中表明中間余數(shù)寄存器在除法 過程期間的相應(yīng)階段中的內(nèi)容。在中間余數(shù)寄存器在各階段的所示的位中,最左位為擴展 符號位中的前述最低有效擴展符號位,從左側(cè)起的第二位為中間余數(shù)的前述符號位,而在 符號位的右側(cè)上圖示的八個位表明中間余數(shù)的非符號位。商預(yù)測電路14以數(shù)位有效性的降序、在逐位基礎(chǔ)上預(yù)測部分商。當(dāng)中間余數(shù)為正 時,符號位和在符號位的有效側(cè)上表明的擴展符號位均為零。當(dāng)中間余數(shù)為負(fù)時,符號位和 擴展符號位均為一。在任一情況下,只要正常地進(jìn)行部分商的預(yù)測,則符號位和擴展符號位 相同。當(dāng)商預(yù)測電路14具有邏輯失效時,或者當(dāng)出現(xiàn)晶體管單元的固定失效或者由比 如放射性這樣的因素引起的軟件錯誤時,商預(yù)測電路14可能在除法過程期間、在部分商 的預(yù)測中出錯,即商預(yù)測電路14可能預(yù)測導(dǎo)致違反不等式判據(jù)|r(n)| <0P2的部分商 q(n-l)。當(dāng)違反不等式判據(jù)|r(n)| < 0P2時,發(fā)生中間余數(shù)的溢出,使得在要設(shè)置中間余 數(shù)的符號位的符號位12d的位置中設(shè)置與中間余數(shù)的符號位不同的數(shù)值。因此,符號位的 值變成不同于擴展符號位中的最低有效擴展符號位的值。圖5圖示了錯誤地確定部分商的除法的例子。在圖5的例子中,在與第四有效數(shù)位 對應(yīng)的部分商q(3)的確定中出現(xiàn)錯誤。在該確定中,為了滿足不等式判據(jù)|r(4)| < 0P2, 確定部分商q(3)為一。然而,在圖5的例子中,商預(yù)測電路14錯誤地確定部分商為零。通過使用與第四有效數(shù)位對應(yīng)的、上述錯誤的部分商來計算的中間余數(shù)變成大于 數(shù)位對準(zhǔn)的除數(shù)0P2。在圖5的例子中,通過使用與第四有效數(shù)位對應(yīng)的、錯誤的部分商來 計算的中間余數(shù)變成由九個數(shù)位代表的數(shù)值、即數(shù)位的數(shù)目超過存儲于中間余數(shù)寄存器中 的中間余數(shù)的位數(shù),使得中間余數(shù)發(fā)散并且發(fā)生溢出。結(jié)果,在符號位的位置設(shè)置用溢出計 算的中間余數(shù)的最高有效數(shù)位的值,使得盡管中間余數(shù)為正,但是符號位的值變成“ 1 ”。這 時,擴展符號位中的最低有效擴展符號位仍然為“0”。也就是說,符號位的值變成不同于擴 展符號位的最低有效擴展符號位的值。由異或電路19檢測在符號位與擴展符號位的最低 有效擴展符號位之間的值的一致或者不一致。當(dāng)異或電路19的輸出信號為“1”時,輸出信 號為錯誤通知。附帶提及,在中間余數(shù)一旦發(fā)散之后如何進(jìn)行計算的運算是未知的。例如,是否如 在圖5的右半部中所示那樣進(jìn)行計算的運算是未知的。如上所述,根據(jù)第二實施例,可以通過僅將異或電路19連接到中間余數(shù)寄存器12 來檢測中間余數(shù)的溢出。因此,當(dāng)商預(yù)測電路14在部分商的預(yù)測中出錯時,有可能發(fā)出錯 誤通知。由于可以通過簡單添加異或電路19來實現(xiàn)檢測部分商的預(yù)測中的錯誤的功能,所 以可以最小化由于實現(xiàn)該功能所引起的算術(shù)電路的規(guī)模的增加。下面說明使用CSA(carry save adder,進(jìn)位保存加法器)的根據(jù)第三實施例的除 法器。圖6圖示了根據(jù)第三實施例的除法器。圖6的除法器包括預(yù)處理電路21、中間余 數(shù)寄存器22a和22b、除數(shù)寄存器23、商預(yù)測電路24、加數(shù)生成電路25、CSA (進(jìn)位保存加法器)26、商生成電路27、商寄存器28和加法器/溢出檢測器29。預(yù)處理電路21進(jìn)行預(yù)處理,比如被除數(shù)和除數(shù)的數(shù)位位置的對準(zhǔn)。預(yù)處理電路21 具有分別連接到中間余數(shù)寄存器22a和22b以及除數(shù)寄存器23的輸出信號線,并且在中間 余數(shù)寄存器22a中存儲數(shù)位對準(zhǔn)的被除數(shù)OPl并在除數(shù)寄存器23中存儲數(shù)位對準(zhǔn)的除數(shù) 0P2。中間余數(shù)寄存器22a和22b是為了單獨地存儲和與進(jìn)位而提供的寄存器。例如, 和的值存儲于中間余數(shù)寄存器22a中,而進(jìn)位的值存儲于中間余數(shù)寄存器22b中。中間余 數(shù)寄存器22a和22b具有分別連接到商預(yù)測電路24、CSA 26和加法器/溢出檢測器29的 輸出信號線。商預(yù)測電路24基于中間余數(shù)寄存器22a和22b中存儲的中間余數(shù)(即基于分 別地存儲于中間余數(shù)寄存器22a和22b中并且表明中間余數(shù)的和與進(jìn)位)來預(yù)測部分商 q(n-l)。商預(yù)測電路24具有分別連接到加數(shù)生成器25和商生成電路27的輸出信號線。 (雖然在圖6中未表明在除數(shù)寄存器23與商預(yù)測電路24之間的連接,但是商預(yù)測電路24 可以查詢除數(shù)寄存器23以便使用數(shù)位對準(zhǔn)的除數(shù)0P2來進(jìn)行上述預(yù)測。)加數(shù)生成電路25計算要與中間余數(shù)相加的值(加數(shù))。具體而言,加數(shù)生成電路 25計算由商預(yù)測電路24預(yù)測的部分商q(n-l)與從除數(shù)寄存器23獲取的數(shù)位對準(zhǔn)的除 數(shù)0P2的乘積,并且將乘積與-1相乘以便反轉(zhuǎn)乘積的符號。加數(shù)生成電路25具有連接到 CSA26的輸出信號線,并且加數(shù)生成電路25的輸出被提供給CSA 26。CSA 26基于輸入的值來進(jìn)行加法處理并且輸出由分離的和與進(jìn)位表示的中間余 數(shù)。CSA 26針對各數(shù)位獲得和與進(jìn)位并且針對各數(shù)位單獨地輸出來自該數(shù)位的進(jìn)位以及無 進(jìn)位的和。具體而言,CSA 26基于由加數(shù)生成電路25計算的加數(shù)以及存儲于中間余數(shù)寄 存器22a和22b并且表明中間余數(shù)的和與進(jìn)位來進(jìn)行加法處理。CSA 26具有連接到中間余 數(shù)寄存器22a和22b的輸出信號線,使得通過由CSA26進(jìn)行的加法處理而獲得的和與進(jìn)位 分別存儲于中間余數(shù)寄存器22a和22b中。商生成電路27基于已經(jīng)由商預(yù)測電路24生成的一個或者多個部分商來生成商 值,并且輸出生成的商值。商生成電路27具有連接到商寄存器28的輸出信號線。商寄存器28是用于存儲商值的寄存器。商寄存器28具有分別連接到商生成電路 27和如下電路(未示出)的輸出信號線,該電路進(jìn)行商的最終值(最終商)的后處理。加法器/溢出檢測器29從中間余數(shù)寄存器22a和22b獲取和與進(jìn)位,基于和與進(jìn) 位來進(jìn)行加法處理并且生成余數(shù)。加法器/溢出檢測器29計算的余數(shù)是在完成除法過程 之前的中間余數(shù)。當(dāng)完成除法過程時,加法器/溢出檢測器29計算最終余數(shù)并且將最終余 數(shù)輸出到進(jìn)行后處理的電路(未示出)。此外,加法器/溢出檢測器29進(jìn)行用于檢測溢出的處理。具體而言,加法器/溢 出檢測器29確定計算的、包括符號位的余數(shù)的數(shù)位數(shù)目是否超過預(yù)定數(shù)目并且在確定為 是時輸出錯誤檢測信號。根據(jù)第三實施例,通過使用具有圖6中所示構(gòu)造的除法器來進(jìn)行除法運算。下面 概括根據(jù)第三實施例的除法器的運算。為了進(jìn)行除法運算,向預(yù)處理電路21中輸入被除數(shù)opl和除數(shù)op2。然后,預(yù)處理 電路21進(jìn)行被除數(shù)和除數(shù)的數(shù)位位置的對準(zhǔn),從而生成數(shù)位對準(zhǔn)的被除數(shù)OPl和數(shù)位對準(zhǔn)的除數(shù)0P2。預(yù)處理電路21在中間余數(shù)寄存器22a中存儲數(shù)位對準(zhǔn)的被除數(shù)OPl而在除數(shù) 寄存器23中存儲數(shù)位對準(zhǔn)的除數(shù)0P2。隨后,商預(yù)測電路24預(yù)測與根據(jù)存儲于中間余數(shù) 寄存器22a中的數(shù)位對準(zhǔn)的被除數(shù)OPl獲得的最高有效數(shù)位相對應(yīng)的部分商,并且將預(yù)測 的部分商輸入到加數(shù)生成電路25和商生成電路27。商生成電路27在商寄存器28中照原 樣存儲先由商預(yù)測電路24預(yù)測的部分商。此外,加數(shù)生成電路25計算輸入的部分商與數(shù) 位對準(zhǔn)的除數(shù)0P2的乘積、反轉(zhuǎn)乘積的符號以生成加數(shù)并且將加數(shù)輸入到CSA 26。CSA 26 將加數(shù)生成電路25計算的加數(shù)與起初存儲于中間余數(shù)寄存器22a中的數(shù)位對準(zhǔn)的被除數(shù) OPl相加,并且輸出由和與進(jìn)位表示的計算結(jié)果。這時,在中間余數(shù)寄存器22a中寫入和, 而在中間余數(shù)寄存器22b中寫入進(jìn)位。當(dāng)中間余數(shù)寄存器22a和22b的內(nèi)容被更新時,商 預(yù)測電路24基于中間余數(shù)寄存器22a和22b的內(nèi)容來重新預(yù)測與下一有效數(shù)位相對應(yīng)的 部分商,并且將預(yù)測的部分商輸入到加數(shù)生成電路25和商生成電路27。然后,商生成電路 27將存儲于商寄存器28中的值左移,將重新預(yù)測的部分商與位于移位的值的有效性更低 的一側(cè)上的數(shù)位相加,并且用被相加了重新預(yù)測的部分商的值來更新商寄存器28的內(nèi)容。 隨后,加數(shù)生成電路25計算輸入的部分商與數(shù)位對準(zhǔn)的除數(shù)0P2的乘積,反轉(zhuǎn)乘積的符號 以生成加數(shù),并且將加數(shù)輸入到CSA 26。CSA 26基于中間余數(shù)寄存器22a中存儲的和、中 間余數(shù)寄存器22b中存儲的進(jìn)位以及加數(shù)生成電路25的計算結(jié)果來進(jìn)行加法處理。然后, 在中間余數(shù)寄存器22a中寫入通過CSA 26的處理所獲得的和,而在中間余數(shù)寄存器22b中 寫入通過CSA 26的處理所獲得的進(jìn)位。隨后,重復(fù)地進(jìn)行部分商的預(yù)測和基于預(yù)測的部分 商的運算直至獲得具有期望數(shù)目的數(shù)位的最終商。這樣,最終在商寄存器28中存儲通過將 數(shù)位對準(zhǔn)的被除數(shù)OPl除以數(shù)位對準(zhǔn)的除數(shù)0P2所獲得的商,并且分別在中間余數(shù)寄存器 22a和22b中存儲通過將數(shù)位對準(zhǔn)的被除數(shù)OPl除以數(shù)位對準(zhǔn)的除數(shù)0P2所獲得的、代表余 數(shù)的和與進(jìn)位。另外,當(dāng)中間余數(shù)寄存器22a和22b的內(nèi)容被更新時,加法器/溢出檢測器 29計算中間余數(shù)并且確定是否發(fā)生溢出。當(dāng)確定發(fā)生溢出時,加法器/溢出檢測器29輸 出錯誤檢測信號。當(dāng)完成除法過程時,加法器/溢出檢測器29基于中間余數(shù)寄存器22a和 22b的內(nèi)容來計算最終余數(shù)。如上所述,甚至可以在使用CSA的除法器中檢測中間余數(shù)的溢出,因此當(dāng)商預(yù)測 電路24在部分商的預(yù)測中出錯時,除法器可以輸出錯誤檢測信號。下面說明檢測解的預(yù)測中的錯誤的、根據(jù)第四實施例的平方根計算器。首先說明 使用遞推方程的減法和移位型算術(shù)的序列,然后說明為何符號位之間的比較作為邏輯檢驗 器來工作的原因。在以下說明中,作為被開方數(shù)(即作為要計算其平方根的對象)輸入的數(shù)值與中 間解(在中間階段中獲得的平方根)的平方的差稱為中間余數(shù),而作為被開方數(shù)輸入的數(shù) 值與最終解(在最終階段中獲得的平方根)的平方的差稱為最終余數(shù)。在根據(jù)第四實施例 的平方根計算中也進(jìn)行中間余數(shù)的符號擴展。此外,負(fù)數(shù)由于二的補碼代表。僅一個由op3表示的數(shù)值被輸入到根據(jù)第四實施例的平方根計算器,并且平方根 計算器獲得被開方數(shù)op3的平方根。被開方數(shù)op3經(jīng)歷數(shù)位對準(zhǔn),并且數(shù)位對準(zhǔn)的被開方 數(shù)0P3由以下方程表示。0P3 = op3Xkb(其中k為基數(shù),而b為整數(shù))類似于除法中的商,可以通過使用部分平方根q(0)至q(n-l)來表達(dá)由第一至第
16η個數(shù)位構(gòu)成的平方根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)通過使用數(shù)位對準(zhǔn)的被開方數(shù)0P3和平方根Q(n),可以由以下遞推方程(11)定義 減法和移位型平方根計算,其中r (η)表示第η個中間余數(shù)。r(n) = k2Xr (n_l)_2kXQ(n_l) Xq(n_l)-q2(n_l)r(0) = 0P3. . . (11)(遞推方程(11)的證明將在后文中稱為證明1。)這時,部分平方根q(n-l)是選擇成滿足不等式判據(jù)|r(n)-l < 2Q(n)的整數(shù)。 雖然對于整數(shù)的多個候選可以存在于滿足條件|q(n-l) I <1^的范圍中,但是可以選擇任意 一個候選。也就是說,通過使用不等式判據(jù)|r(n)-l| <2Q(n)來計算部分平方根q(n_l)。 (使用不等式判據(jù)|r(n)-l| <2Q(n)的適當(dāng)性的證明將在后文中稱為證明2。)因此,類似于除法過程,在中間余數(shù)r(η)的符號位(位置緊鄰中間余數(shù)r(η)的最 高有效數(shù)位右側(cè)并且是符號位中的最右符號位)的值由sO表示,并且擴展符號位中緊鄰上 述符號位右側(cè)的擴展符號位(即擴展符號位中的最右擴展符號位)的值由si表示的情況 下,可以僅基于上述兩個符號位的異或(sO XOR si)來檢測邏輯失效,因為當(dāng)沒有出現(xiàn)錯誤 時(sOXORsl) = 0而當(dāng)出現(xiàn)錯誤時(sOXOR si) = 1。(當(dāng)出現(xiàn)錯誤時(sOXOR si) = 1的 證明將在后文中稱為證明3)下面表明可以通過使用遞推方程(11)來進(jìn)行平方根計算的前述證明1。由于存在關(guān)系Q2(Ii) 0P3 = r(0),所以如方程(12)中所示,可以通過使用r(0) 和Q2(Ii)來表達(dá)中間余數(shù)r (η)。r(n) = k2nXr (0)-Q2 (η) · · · (12)另外,根據(jù)方程(10)導(dǎo)出以下方程。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)也就是說,導(dǎo)出遞推方程(11)。下面表明可以在部分平方根q(n-l)的計算中適當(dāng)?shù)厥褂貌坏仁脚袚?jù)|r(n)_l < 2Q(n)的前述證明2。不等式判據(jù)|r (n) _1| < 2Q(n)等效地改寫如下。-2Q (η) +1 < r (η) < 2Q (η) +1. . . (14)下文證明對于η = 1存在方程(14)。隨后,證明當(dāng)對于η_1存在方程(14)時對于η > 1存在方程(14)。當(dāng)η = 1,Q(I) = q(0) >0 時,期望選擇 q(0)以便滿足條件 | k(0P3) 1/2-q(0) < 1,因為k(0P3)1/2和q(0)的數(shù)位位置對準(zhǔn),使得k(0P3)"2和q(0)的最高有效數(shù)位的位 置匹配,并且選擇q(0),使得|k(0P3)"2*q(0)的整數(shù)部分匹配。也就是說,-1 < kX (0P3)1/2-q(0) < 1<->-1 < kX (r (0))1/2-q(0) < 1. . . (15)聯(lián)立不等式(15)中的左側(cè)不等式引出以下不等式(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)此外,聯(lián)立不等式(15)中的右側(cè)不等式引出以下不等式(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)可以概括為聯(lián)立不等式(18)。k2Xr(0)-q2(0)-l | < 2q(0)<->r(l)-l| < 2Q(1). . . (18)也就是說,當(dāng)η = 1時存在方程(14)。接著是當(dāng)存在不等式-2Q (n-1) +l<r (η_1)時存在不等式_2Q (η) +l<r (η)的證 明。鑒于不等式-2Q(n-l)+l <r(n-l),方程(11)表達(dá)的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)的右側(cè)為r(n)的下限,所以r(n)在任何情況下大于不等式(19) 的右側(cè)。當(dāng)選擇q(n-l)的值以使不等式(19)的右側(cè)增加時,存在方程q(n_l) =_(k_l), 因為鑒于-2Q(n)+k+q(n-l) < 0 并且 1 < k+q (n-1) ( 2k_l 的事實,當(dāng) q(n_l) = _(k_l) 時不等式(19)的右側(cè)最大化。因此,通過將q(n-l) = _(k_l)代入不等式(19)來獲得方 程(20)。r(n) > -2Q(n)+l. . . (20)下面是當(dāng)存在不等式r (n-1) < 2Q(n_l)+1時存在不等式r (η) <2Q(n)+l的證明。鑒于不等式r(n-l) < 2Q(n_l)+l,方程(11)表達(dá)的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)當(dāng)選擇q(n-l)的值以使不等式(21)的右側(cè)減少時,存在方程q(n_l) = k_l。因 此,獲得方程(22)。r(n) < 2Q(n)+l. . . (22)因此,不等式(20)和(22)可以概況為不等式判據(jù)r(n)-l <2Q(n)。也就是說, 對于η > 1滿足不等式判據(jù)(14)。概括而言,完成了對于η彡1滿足不等式判據(jù)(14)的證明。下面表明當(dāng)出現(xiàn)錯誤時(sOXOR si) = 1的前述證明3。在根據(jù)方程(11)的平方根計算過程中,平方根Q(Ii)和中間余數(shù)r(n)各自為整 數(shù)。然而,在這種情況下,將最高有效數(shù)位的位置左移與運算次數(shù)成比例的多個數(shù)位。在 通過硬件實現(xiàn)平方根計算器的許多實際應(yīng)用中,為了固定最高有效數(shù)位的位置,中間余數(shù) r(n)和平方根Q(n)分別由定義如下的數(shù)位移位的中間余數(shù)r' (η)和數(shù)位移位的平方根 Q' (η)替換。r' (n) = r (η) /knQ' (η) = Q(n)/kn. . . (23)當(dāng)遞推方程(11)的兩側(cè)均除以kn時,獲得以下遞推方程(24)。r ‘ (η)= kXr' (n-l)-2Q' (n_l) X q(n_l) -(l/kn) X q2 (n_l)r (0) = 0P3. · · (24)在這種情況下,用于在選擇整數(shù)作為部分平方根q(n-l)時使用的前述不等式判 據(jù)變成Ir' (n)-l/kn| <2Q' (η)。當(dāng)選擇不滿足不等式判據(jù)|r' (n)-l/kn| < 2Q' (η) 的整數(shù)作為部分平方根q(n-l)時,在重復(fù)部分平方根的預(yù)測時在數(shù)位移位的中間余數(shù)r' (η)的計算結(jié)果中發(fā)生溢出。換而言之,數(shù)位移位的中間余數(shù)r' (η)的計算結(jié)果的數(shù) 位數(shù)目超過用于存儲數(shù)位移位的中間余數(shù)r' (η)的區(qū)域的數(shù)位數(shù)目,使得數(shù)位移位的中 間余數(shù)r' (η)的符號位sO(位置緊鄰數(shù)位移位的中間余數(shù)r' (η)的非符號位的最高有 效非符號位的右側(cè))的值不同于緊鄰符號位s0右側(cè)的擴展符號位si的值。因此,可以僅 基于上述兩個符號位的異或(sOXOR si)來檢測邏輯失效,并且向算術(shù)電路添加的、用于檢 測在確定是否滿足不等式判據(jù)Ir' (n)-l/kn| <2Q' (η)中的錯誤的邏輯電路可以僅是 一個異或電路(X0R門)。圖7圖示了根據(jù)第四實施例的平方根計算器。圖7的平方根計算器包括預(yù)處理電 路31、中間余數(shù)寄存器32、平方根預(yù)測電路33、加數(shù)生成電路34、加法器35、平方根生成電 路36、平方根寄存器37和異或電路38。預(yù)處理31進(jìn)行預(yù)處理,比如被開方數(shù)的數(shù)位位置的對準(zhǔn)。預(yù)處理電路31具有連 接到中間余數(shù)寄存器32的輸出信號線并且在中間余數(shù)寄存器32中存儲數(shù)位對準(zhǔn)的被開方 數(shù) 0Ρ3。中間余數(shù)寄存器32是用于存儲中間余數(shù)的寄存器。例如,可以使用位寬度為64位 的寄存器作為中間余數(shù)寄存器32,用于以根據(jù)IEEE 754標(biāo)準(zhǔn)的雙精度浮點格式存儲中間 余數(shù)。中間余數(shù)寄存器32具有分別連接到平方根預(yù)測電路33、加法器35和如下電路(未 示出)的輸出信號線,該電路進(jìn)行對作為由圖7的平方根計算器進(jìn)行的平方根計算的結(jié)果 而獲得的最終余數(shù)的后處理。平方根預(yù)測電路33基于中間余數(shù)寄存器32中保存的中間余數(shù)來預(yù)測部分平方根 q(n-l)。具體而言,平方根預(yù)測電路33確定部分平方根q(n-l),使得根據(jù)遞推方程(24)獲 得的中間余數(shù)滿足不等式判據(jù)Ir' (n)-l/kn| <2Q' (η)。然而,當(dāng)平方根預(yù)測電路33具 有邏輯失效并且出現(xiàn)使邏輯失效明顯的數(shù)位移位的平方根Q' (η)與中間余數(shù)的值的具體 組合時,或者當(dāng)出現(xiàn)晶體管單元的固定失效或者由比如放射性這樣的因素而引起的軟件錯 誤時,平方根預(yù)測電路33可以預(yù)測導(dǎo)致違反不等式判據(jù)(n)-l/kn| < 2Q' (η)的部 分平方根q(n-l)。平方根預(yù)測電路33具有分別連接到加數(shù)生成電路34和平方根生成電路 36的輸出信號線。加數(shù)生成電路34計算要與中間余數(shù)相加的值(加數(shù))。具體而言,加數(shù)生成電路 34計算{-2XQ' (n-l)Xq(n-l)-(l/kn)Xq2(n-l)}0計算的值由加法器35用于根據(jù)當(dāng)前 中間余數(shù)獲得與其中并入了重新預(yù)測的部分平方根的新平方根相對應(yīng)的新中間余數(shù)。在當(dāng) 前中間余數(shù)大于新中間余數(shù)的情況下,加數(shù)生成電路34獲得的計算結(jié)果(加數(shù))為負(fù)數(shù)。 負(fù)數(shù)由二的補碼表示。加數(shù)生成電路34具有連接到加法器35的輸出信號線,并且加數(shù)生 成電路34的輸出被提供給加法器35。加法器35將輸入的值相加。具體而言,加法器將加數(shù)生成電路34計算的加數(shù)與 存儲于中間余數(shù)寄存器32中的中間余數(shù)相加。加法器35具有連接到中間余數(shù)寄存器32 的輸出信號線,使得在中間余數(shù)寄存器32中存儲從加法器35輸出的加法結(jié)果作為中間余 數(shù)。類似于第一實施例中的加法器16,加法器35可以通過與由二的補碼所表示的負(fù)數(shù)相加 來進(jìn)行減法。平方根生成電路36基于已經(jīng)由平方根預(yù)測電路33生成的一個或者多個部分平方 根來生成平方根的值并且輸出生成的平方根的值。平方根生成電路36具有連接到平方根寄存器37的輸出信號線,并且在平方根寄存器37中寫入由平方根生成電路36生成的平 方根的值。具體而言,每當(dāng)平方根預(yù)測電路33重新預(yù)測部分平方根時,平方根生成電路36 讀入當(dāng)前存儲于平方根寄存器37中的平方根的值,將平方根的值左移預(yù)定數(shù)目的數(shù)位,將 重新預(yù)測的部分平方根與由于移位而空出的、預(yù)定數(shù)目的數(shù)位相加并且在平方根寄存器37 中寫入被相加了重新預(yù)測的部分平方根的平方根的值。平方根寄存器37是用于存儲平方根的值的寄存器。平方根寄存器37具有分別連 接到加數(shù)生成電路34、平方根生成電路36和如下電路(未示出)的輸出信號線,該電路進(jìn) 行平方根(最終平方根)的最終值的后處理。異或電路38連接到中間余數(shù)寄存器32。具體而言,存儲于中間余數(shù)寄存器32中 的中間余數(shù)的符號位的輸出信號線和位于中間余數(shù)寄存器32中的中間余數(shù)的符號位的有 效側(cè)上的擴展符號位的輸出信號線連接到異或電路38的輸入。也就是說,異或電路38以 與圖3中所示異或電路19到中間余數(shù)寄存器12的連接類似的方式連接到中間余數(shù)寄存器 32。異或電路38計算輸入到異或電路38中的兩位的異或。異或電路38在兩個輸入位相 同時輸出“ 0 ”而在兩個輸入位不同時輸出“ 1”。根據(jù)本實施例,通過使用具有圖7中所示構(gòu)造的平方根計算器來進(jìn)行平方根計算 的運算。下面概括根據(jù)第四實施例的平方根計算器的運算。為了進(jìn)行平方根計算的運算,向預(yù)處理電路31中輸入被開方數(shù)op3。然后,預(yù)處 理電路31進(jìn)行被開方數(shù)的數(shù)位位置的對準(zhǔn),使得生成數(shù)位對準(zhǔn)的被開方數(shù)0P3。預(yù)處理 電路31在中間余數(shù)寄存器32中存儲數(shù)位對準(zhǔn)的被開方數(shù)0P3。接著,平方根預(yù)測電路33 預(yù)測與根據(jù)存儲于中間余數(shù)寄存器32中的數(shù)位對準(zhǔn)的被開方數(shù)0P3獲得的最高有效數(shù)位 相對應(yīng)的部分平方根并且將預(yù)測的部分平方根輸入到加數(shù)生成電路34和平方根生成電路 36。平方根生成電路36在平方根寄存器37中照原樣存儲先由平方根預(yù)測電路33預(yù)測的 部分平方根。此外,加數(shù)生成電路34計算{-2XQ' (n-1) Xq(n-l)-(l/kn) Xq2(n-1)}作 為加數(shù),并且將計算的加數(shù)輸入到加法器35。加法器35將由加數(shù)生成電路34計算的加數(shù) 與起初存儲于中間余數(shù)寄存器32中的數(shù)位對準(zhǔn)的被開方數(shù)0P3相加,并且中間余數(shù)寄存器 32的內(nèi)容從數(shù)位對準(zhǔn)的被開方數(shù)0P3更新成中間余數(shù)。當(dāng)中間余數(shù)寄存器32的內(nèi)容被更 新時,平方根預(yù)測電路33重新預(yù)測與下一有效數(shù)位相對應(yīng)的部分平方根,并且將預(yù)測的部 分平方根輸入到加數(shù)生成電路34和平方根生成電路36。然后,平方根生成電路36將存儲 于平方根寄存器37中的值左移,將重新預(yù)測的部分平方根與位于移位的值的有效性更低 的一側(cè)上的數(shù)位相加,并且用被相加了重新預(yù)測的部分平方根的值來更新平方根寄存器37 的內(nèi)容。隨后,加數(shù)生成電路34計算{-2XQ' (n-1) Xq(n-l)-(l/kn) Xq2(n-1)}作為加 數(shù),并且將加數(shù)輸入到加法器35。加法器35將由加數(shù)生成電路34計算的加數(shù)與存儲于中 間余數(shù)寄存器32中的中間余數(shù)相加,并且用加法器35的輸出更新中間余數(shù)寄存器32的內(nèi) 容。隨后,重復(fù)地進(jìn)行部分平方根的預(yù)測和基于預(yù)測的部分平方根的運算直至獲得具有期 望數(shù)目的數(shù)位的最終平方根。這樣,最終分別在平方根寄存器37和中間余數(shù)寄存器32中 存儲通過數(shù)位對準(zhǔn)的被開方數(shù)0P3的平方根計算所獲得的數(shù)位對準(zhǔn)的被開方數(shù)0P3的平方 根和余數(shù)。在上述平方根計算過程中,除非平方根預(yù)測電路33在部分平方根的預(yù)測中出錯, 否則中間余數(shù)的擴展符號位串列中的最低有效位的值總是與中間余數(shù)的符號位的值相同。
圖8圖示了正常地確定部分平方根的平方根計算的例子。在圖8的例子中,為求簡 化,被開方數(shù)為8位二進(jìn)制數(shù)并且被假設(shè)已經(jīng)經(jīng)歷了數(shù)位位置的對準(zhǔn),并且數(shù)位對準(zhǔn)的被 開方數(shù)0P3為“+11111111”。平方根計算器計算數(shù)位對準(zhǔn)的被開方數(shù)0P3的平方根。在圖 8中,在左半部中表明平方根計算過程,而在右半部中表明中間余數(shù)寄存器在平方根計算過 程期間的相應(yīng)階段中的內(nèi)容。在中間余數(shù)寄存器在各階段中的所示的位中,最左位為擴展 符號位中的最低有效擴展符號位,從左側(cè)起的第二位為中間余數(shù)的符號位為中間余數(shù)的符 號位,而在符號位的右側(cè)上圖示的九個位表明中間余數(shù)的非符號位。平方根預(yù)測電路33以數(shù)位有效性的降序、在逐位基礎(chǔ)上預(yù)測部分平方根。在中間 余數(shù)為正時,符號位和在符號位的有效側(cè)上表明的擴展符號位均為“0”。當(dāng)中間余數(shù)為負(fù) 時,符號位和擴展符號位均為“1”。在任一情況下,除非平方根預(yù)測電路3在部分平方根的 預(yù)測中出錯,否則符號位和擴展符號位相同。當(dāng)平方根預(yù)測電路33具有邏輯失效時,或者當(dāng)出現(xiàn)晶體管單元的固定失效或者 由比如放射性這樣的因素引起的軟件錯誤時,平方根預(yù)測電路33可能在平方根計算過 程期間、在部分平方根的預(yù)測中出錯,即平方根預(yù)測電路33可能預(yù)測導(dǎo)致違反不等式判 據(jù)|r' (n)-l/kn| <2Q' (η)的部分平方根q(n_l)。當(dāng)違反不等式判據(jù)|r‘ (n)-l/kn| <2Q' (η)時,發(fā)生中間余數(shù)的溢出,使得在要設(shè)置中間余數(shù)的符號位的符號位的位置中 設(shè)置與中間余數(shù)的符號位不同的數(shù)值。因此,符號位的值變成不同于擴展符號位中的最低 有效擴展符號位的值。圖9圖示了錯誤地確定部分平方根的平方根計算的例子。在圖9的例子中,在與 第四有效數(shù)位對應(yīng)的部分平方根q(3)的確定中出現(xiàn)錯誤。在該確定中,為了滿足不等式判 據(jù)Ir' (4)-l/k4| <2Q' (4),確定部分平方根q(3)為一。然而,在圖9的例子中,平方根 預(yù)測電路33錯誤地確定部分平方根為零。通過使用與第四有效數(shù)位對應(yīng)的、上述錯誤的部分平方根來計算的中間余數(shù)的數(shù) 位數(shù)目變成十,這超過中間余數(shù)寄存器32中的中間余數(shù)的位串列中的位數(shù)(九),從而發(fā)生 溢出。結(jié)果,在符號位的位置設(shè)置用溢出計算的中間余數(shù)的最高有效數(shù)位的值,使得盡管中 間余數(shù)為正,但是符號位的值變成“ 1 ”。這時,擴展符號位中的最低有效擴展符號位仍然為 “0”。也就是說,符號位的值不同于擴展符號位中的最低有效擴展符號位的值。由異或電路 38檢測在符號位與擴展符號位中的最低有效擴展符號位之間的值的一致或者不一致。當(dāng)異 或電路38的輸出信號為“1”時,輸出信號為錯誤通知。附帶提及,在中間余數(shù)一旦發(fā)散之后如何進(jìn)行計算的運算是未知的。例如,是否如 在圖9的左半部中所示那樣進(jìn)行計算的運算是未知的。如上所述,根據(jù)第四實施例,可以通過僅將異或電路38連接到中間余數(shù)寄存器32 來檢測中間余數(shù)的溢出。因此,當(dāng)平方根預(yù)測電路33在部分平方根的預(yù)測中出錯時,有可 能發(fā)出錯誤通知。由于可以通過僅添加異或電路38來實現(xiàn)檢測部分平方根的預(yù)測中的錯 誤的功能,所以可以最小化由于實現(xiàn)該功能所引起的算術(shù)電路的尺寸的增加。下面說明使用CSA(進(jìn)位保存加法器)的根據(jù)第五實施例的平方根計算器。圖10圖示了根據(jù)第五實施例的平方根計算器。圖10的平方根計算器包括預(yù)處理 電路41、中間余數(shù)寄存器42a和42b、平方根預(yù)測電路43、加數(shù)生成電路44、CSA(進(jìn)位保存 加法器)45、平方根生成電路46、平方根寄存器47和加法器/溢出檢測器48。
預(yù)處理電路41進(jìn)行預(yù)處理,比如被開方數(shù)的數(shù)位位置的對準(zhǔn)。預(yù)處理電路41具 有分別連接到中間余數(shù)寄存器42a和42b的輸出信號線并且在中間余數(shù)寄存器42a中存儲 數(shù)位對準(zhǔn)的被開方數(shù)0P3。中間余數(shù)寄存器42a和42b是為了單獨地存儲和與進(jìn)位而提供的寄存器。例如, 和的值存儲于中間余數(shù)寄存器42a中,而進(jìn)位的值存儲于中間余數(shù)寄存器42b中。中間余 數(shù)寄存器42a和42b具有分別連接到平方根預(yù)測電路43、CSA45和加法器/溢出檢測器48 的輸出信號線。平方根預(yù)測電路43基于中間余數(shù)寄存器42a和42b中存儲的中間余數(shù)(即基于 分別地存儲于中間余數(shù)寄存器42a和42b中并且表明中間余數(shù)的和與進(jìn)位)來預(yù)測部分平 方根q(n-l)。平方根預(yù)測電路43具有分別連接到加數(shù)生成電路44和平方根生成電路46 的輸出信號線。加數(shù)生成電路44計算要與中間余數(shù)相加的值(加數(shù))。具體而言,加數(shù)生成電路 44計算{-2XQ' (n-l)Xq(n-l)-(l/kn)Xq2(n-l)}作為加數(shù)。加數(shù)生成電路44具有連接 到CSA 45的輸出信號線,并且加數(shù)生成電路44的輸出被提供給CSA 45。CSA 45基于輸入的值來進(jìn)行加法處理,并且輸出由分離的和與進(jìn)位表示的中間余 數(shù)。CSA 45針對各數(shù)位獲得和與進(jìn)位并且針對各數(shù)位單獨地輸出來自該數(shù)位的進(jìn)位以及無 進(jìn)位的和。具體而言,CSA 45基于由加數(shù)生成電路44計算的加數(shù)以及存儲于中間余數(shù)寄 存器42a和42b中并且表明中間余數(shù)的和與進(jìn)位來進(jìn)行加法處理。CSA 45具有連接到中間 余數(shù)寄存器42a和42b的輸出信號線,使得通過由CSA 45進(jìn)行的加法處理而獲得的和與進(jìn) 位分別存儲于中間余數(shù)寄存器42a和42b中。平方根生成電路46基于已經(jīng)由平方根預(yù)測電路43生成的一個或者多個部分平方 根來生成平方根的值,并且輸出生成的平方根的值。平方根生成電路46具有連接到平方根 寄存器47的輸出信號線。平方根寄存器47是用于存儲平方根的值的寄存器。平方根寄存器47具有分別連 接到加數(shù)生成電路44、平方根生成電路46和如下電路(未示出)的輸出信號線,該電路進(jìn) 行平方根的最終值(最終平方根)的后處理。加法器/溢出檢測器48從中間余數(shù)寄存器42a和42b獲取和與進(jìn)位,基于和與進(jìn) 位來進(jìn)行加法處理并且生成余數(shù)。加法器/溢出檢測器48計算的余數(shù)是在完成平方根計 算過程之前的中間余數(shù)。當(dāng)完成平方根計算過程時,加法器/溢出檢測器48計算最終余數(shù) 并且將最終余數(shù)輸出到進(jìn)行后處理的電路(未示出)。此外,加法器/溢出檢測器48進(jìn)行用于檢測溢出的處理。具體而言,加法器/溢 出檢測器48確定計算的、包括符號位的余數(shù)的數(shù)位數(shù)目是否超過預(yù)定數(shù)目并且在確定為 是時輸出錯誤檢測信號。根據(jù)第五實施例,通過使用具有圖10中所示構(gòu)造的平方根計算器來進(jìn)行用于計 算平方根的運算。下文概括根據(jù)第五實施例的平方根計算器的運算。為了進(jìn)行用于計算平方根的運算,向預(yù)處理電路41中輸入被開方數(shù)op3。然后, 預(yù)處理電路41進(jìn)行被開方數(shù)的數(shù)位位置的對準(zhǔn),從而生成數(shù)位對準(zhǔn)的被開方數(shù)0P3。預(yù)處 理電路41在中間余數(shù)寄存器42a中存儲數(shù)位對準(zhǔn)的被開方數(shù)0P3。接著,平方根預(yù)測電路 43預(yù)測與根據(jù)存儲于中間余數(shù)寄存器42a中的數(shù)位對準(zhǔn)的被開方數(shù)0P3獲得的最高有效數(shù)位相對應(yīng)的部分平方根,并且將預(yù)測的部分平方根輸入到加數(shù)生成電路44和平方根生成 電路46。平方根生成電路46在平方根寄存器47中照原樣存儲先由平方根預(yù)測電路43預(yù) 測的部分平方根。此外,加數(shù)生成電路44計算{-2XQ' (n-1) Xq(n-1)-(l/kn) Xq2(n-1)} 作為加數(shù),并且將加數(shù)輸入到CSA45。CSA 45將由加數(shù)生成電路44計算的加數(shù)與起初存儲 于中間余數(shù)寄存器42a中的數(shù)位對準(zhǔn)的被開方數(shù)0P3相加,并且輸出由和與進(jìn)位表示的計 算結(jié)果。這時,在中間余數(shù)寄存器42a中寫入和,而在中間余數(shù)寄存器42b中寫入進(jìn)位。當(dāng) 中間余數(shù)寄存器42a和42b的內(nèi)容被更新時,平方根預(yù)測電路43基于中間余數(shù)寄存器42a 和42b的內(nèi)容來重新預(yù)測與下一有效數(shù)位相對應(yīng)的部分平方根,并且將預(yù)測的部分平方根 輸入到加數(shù)生成電路44和平方根生成電路46。然后,平方根生成電路46將存儲于平方根 寄存器47中的值左移,將最新預(yù)測的部分平方根與位于移位的值的有效性更低的一側(cè)上 的數(shù)位相加,并且用被相加了重新預(yù)測的部分平方根的值更新平方根寄存器47的內(nèi)容。隨 后,加數(shù)生成電路44計算{-2XQ' (n-1) Xq (n-1)-(l/kn)X q2 (n-1)}作為加數(shù),并且將加 數(shù)輸入到CSA45。CSA 45基于中間余數(shù)寄存器42a中存儲的和、中間余數(shù)寄存器42b中存 儲的進(jìn)位和加數(shù)生成電路44的計算結(jié)果來進(jìn)行加法處理。然后,在中間余數(shù)寄存器42a中 寫入通過CSA45的處理所獲得的和,而在中間余數(shù)寄存器42b中寫入通過CSA 45的處理所 獲得的進(jìn)位。隨后,重復(fù)地進(jìn)行部分平方根的預(yù)測和基于預(yù)測的部分平方根的運算直至獲 得具有期望數(shù)目的數(shù)位的最終平方根。這樣,最終在平方根寄存器47中存儲通過上述平方 根計算所獲得的數(shù)位對準(zhǔn)的被開方數(shù)0P3的平方根,并且分別在中間余數(shù)寄存器42a和42b 中存儲通過數(shù)位對準(zhǔn)的被開方數(shù)0P3的平方根計算所獲得的、代表余數(shù)的和與進(jìn)位。另外, 當(dāng)最終余數(shù)寄存器42a和2b的內(nèi)容被更新時,加法器/溢出檢測器48計算中間余數(shù)并且 確定是否發(fā)生溢出。當(dāng)確定發(fā)生溢出時,加法器/溢出檢測器48輸出錯誤檢測信號。當(dāng)完 成平方根計算過程時,加法器/溢出檢測器48基于中間余數(shù)寄存器42a和42b的內(nèi)容來計 算最終余數(shù)。如上所述,甚至可以在使用CSA的平方根計算器中檢測中間余數(shù)的溢出,因此當(dāng) 平方根預(yù)測電路43在部分商的預(yù)測中出錯時,平方根計算器可以輸出錯誤檢測信號。下面說明根據(jù)第六實施例的算術(shù)處理設(shè)備,該設(shè)備包含根據(jù)第二實施例的除法器 和根據(jù)第四例子的平方根計算器。算術(shù)處理設(shè)備可以例如為CPU(中央處理單元)或者 FPU (浮點數(shù)處理單元)。圖11表明根據(jù)第六實施例的算術(shù)處理設(shè)備。圖11的算術(shù)處理設(shè)備50包括除法 器51、平方根計算器52、寄存器文件53和高速緩存存儲器54。除法器51具有如圖2中所 示的內(nèi)部構(gòu)造,而平方根計算器52具有如圖7中所示的內(nèi)部構(gòu)造。算術(shù)處理設(shè)備50被配 置成在除法器51或者平方根計算器52輸出錯誤信號時進(jìn)行錯誤處理。寄存器文件53和高速緩存存儲器54為存儲設(shè)備,用于提供數(shù)值作為要對其進(jìn)行 算術(shù)運算的對象并且存儲由除法器51或者平方根計算器52進(jìn)行的算術(shù)運算的結(jié)果。因此, 除法器51和平方根計算器52中的各預(yù)處理電路從寄存器文件53或者高速緩存存儲器54 讀出一個或者多個數(shù)值作為要對其進(jìn)行算術(shù)運算的對象。由于算術(shù)處理設(shè)備50包含各自具有錯誤檢測功能的除法器51和平方根計算器 52,所以算術(shù)處理設(shè)備50可以高可靠性地檢測部分商或者部分平方根的預(yù)測中的錯誤,從 而增加算術(shù)處理設(shè)備50的可靠性。
除法器51和平方根計算器52中的錯誤檢測電路主要為異或電路。因此,例如在 算術(shù)處理設(shè)備50為具有高密度布線并且稱為LSI的集成電路(大規(guī)模集成電路)的情況 下,LSI的芯片尺寸基本上沒有由于添加錯誤檢測電路而增加。如果LSI的尺寸增加,則可 以由單個硅晶片生產(chǎn)的芯片數(shù)目減少,從而LSI的單位制造成本增加。由于可以在基本上 不增加芯片尺寸的情況下內(nèi)置根據(jù)前述實施例的錯誤檢測電路,所以也可以基本上不增加 LSI的制造成本而內(nèi)置錯誤檢測電路。可替換地,圖11中所示除法器51可以包含圖6中所示的除法器而不是圖2中所 示的除法器,并且包含圖10中所示的平方根計算器而不是圖7中所示的平方根計算器。上述算術(shù)電路可以高可靠性地檢測可能在算術(shù)運算期間出現(xiàn)的故障。這里記載的所有例子和條件語言旨在于教學(xué)目的以幫助讀者理解本發(fā)明和發(fā)明 人為了發(fā)展本領(lǐng)域而貢獻(xiàn)的概念,并且理解為不限于這樣具體記載的例子和條件,而這樣 的例子在說明書中的組織也不涉及說明本發(fā)明的優(yōu)劣性。雖然已經(jīng)具體描述本發(fā)明的一個 或者多個實施例,但是應(yīng)當(dāng)理解可以對其進(jìn)行各種改變、替換和變更而不脫離本發(fā)明的精 神和范圍。具體而言,構(gòu)成第一至第六實施例的各單元可以由具有類似功能的另一單元替 換,并且可以向第一至第六實施例添加任何另外的單元或者任何另外的步驟。此外,有可能 任意地組合前述第一至第六實施例的兩個或者更多個特征。
2權(quán)利要求
一種算術(shù)電路,包括寄存器;預(yù)處理電路,在所述寄存器中存儲目標(biāo)數(shù)值;解預(yù)測電路,每當(dāng)在所述寄存器中存儲所述數(shù)值時,所述解預(yù)測電路基于所述數(shù)值來預(yù)測部分解,其中所述部分解是由構(gòu)成解的部分?jǐn)?shù)位表示的值,所述解根據(jù)所述目標(biāo)數(shù)值而獲得,并且以數(shù)位有效性的降序來進(jìn)行預(yù)測;中間值計算電路,使用由所述解預(yù)測電路預(yù)測的一個或者多個部分解、通過預(yù)定計算來生成中間值,通過符號擴展向所述中間值附加一個或者多個擴展符號位,并且在所述寄存器中存儲被附加了所述一個或者多個擴展符號位的所述中間值;解生成電路,依次獲取由所述解預(yù)測電路預(yù)測的所述一個或者多個部分解,并且基于所述一個或者多個部分解來生成解;以及錯誤檢測電路,比較構(gòu)成所述寄存器中存儲的所述中間值的符號位的值與所述寄存器中存儲的所述一個或者多個擴展符號位中的一個擴展符號位的值,并且在所述符號位的值不同于所述一個或者多個擴展符號位中的所述一個擴展符號位的值時檢測出錯誤。
2.根據(jù)權(quán)利要求1所述的算術(shù)電路,其中所述錯誤檢測電路是異或電路,所述異或電 路具有連接到存儲于所述寄存器中的所述中間值的所述符號位和所述一個或者多個擴展 符號位中的所述一個擴展符號位的輸入。
3.根據(jù)權(quán)利要求1所述的算術(shù)電路,還包括存儲用于除法的除數(shù)的除數(shù)寄存器,其中 所述預(yù)處理電路在所述寄存器中存儲用于所述除法的被除數(shù)而在所述除數(shù)寄存器中存儲 所述除數(shù),所述解預(yù)測電路預(yù)測構(gòu)成商的部分商作為所述部分解,所述商通過所述被除數(shù) 除以所述除數(shù)而獲得,并且所述中間值計算電路通過獲得所述除數(shù)與所述部分商的乘積并 且從存儲于所述寄存器中的所述數(shù)值中減去所述乘積來生成中間余數(shù)作為所述中間值。
4.根據(jù)權(quán)利要求3所述的算術(shù)電路,其中所述中間值計算電路包括加數(shù)生成電路,通過生成所述除數(shù)與所述部分商的乘積并且反轉(zhuǎn)所述乘積的符號來生 成加數(shù),以及加法器,將所述加數(shù)與存儲于所述寄存器中的所述數(shù)值相加。
5.根據(jù)權(quán)利要求1所述的算術(shù)電路,其中所述預(yù)處理電路在所述寄存器中存儲用于 平方根計算的被開方數(shù),并且所述解預(yù)測電路預(yù)測構(gòu)成平方根的部分平方根作為所述部分 解,所述平方根通過所述平方根計算根據(jù)所述被開方數(shù)而獲得。
6.根據(jù)權(quán)利要求5所述的算術(shù)電路,其中所述中間值計算電路包括加數(shù)生成電路,所 述加數(shù)生成電路生成在計算所述被開方數(shù)與由所述解預(yù)測電路預(yù)測的一個或者多個部分 解構(gòu)成的平方根的平方之差時使用的加數(shù);以及加法器,所述加法器將所述加數(shù)與存儲于 所述寄存器中的所述數(shù)值相加。
7.根據(jù)權(quán)利要求1所述的算術(shù)電路,其中所述寄存器包括第一寄存器和第二寄存器,所述解預(yù)測電路基于所述第一寄存器和所述第二寄存器中存儲的數(shù)值來預(yù)測所述部分解,所述中間值計算電路在所述第一寄存器中存儲和,所述和通過在所述預(yù)定計算的最終 階段中進(jìn)行的加法在相應(yīng)的數(shù)位獲得并且不含進(jìn)位,而在所述第二寄存器中存儲進(jìn)位,所 述進(jìn)位通過在所述預(yù)定計算的所述最終階段中進(jìn)行的所述加法在所述相應(yīng)的數(shù)位獲得,并且所述錯誤檢測電路基于所述第一寄存器和所述第二寄存器中存儲的所述和與所述進(jìn) 位來進(jìn)行加法,基于所述第一寄存器和所述第二寄存器中存儲的所述和與所述進(jìn)位來比較 加法結(jié)果中的符號位和擴展符號位的值,并且在基于所述第一寄存器和所述第二寄存器中 存儲的所述數(shù)值的加法結(jié)果中的所述符號位和所述擴展符號位的值不同時檢測出錯誤。
8.根據(jù)權(quán)利要求2所述的算術(shù)電路,其中所述一個或者多個擴展符號位中的所述一個 擴展符號位的位置緊鄰有效性更高的一側(cè)上的所述符號位。
9.一種算術(shù)處理設(shè)備,包括存儲設(shè)備,所述存儲設(shè)備存儲一個或者多個數(shù)值;寄存器;預(yù)處理電路,所述預(yù)處理電路從所述存儲設(shè)備讀出目標(biāo)數(shù)值,并且在所述寄存器中存 儲所述目標(biāo)數(shù)值;解預(yù)測電路,每當(dāng)在所述寄存器中存儲所述數(shù)值時,所述解預(yù)測電路基于所述數(shù)值來 預(yù)測部分解,其中所述部分解是由構(gòu)成解的部分?jǐn)?shù)位表示的值,所述解根據(jù)所述目標(biāo)數(shù)值 而獲得,并且以數(shù)位有效性的降序來進(jìn)行預(yù)測;中間值計算電路,使用由所述解預(yù)測電路預(yù)測的一個或者多個部分解、通過預(yù)定計算 來生成中間值,通過符號擴展向所述中間值附加一個或者多個擴展符號位,并且在所述寄 存器中存儲被附加了所述一個或者多個擴展符號位的所述中間值;解生成電路,依次獲取由所述解預(yù)測電路預(yù)測的所述一個或者多個部分解,并且基于 所述一個或者多個部分解來生成解;以及錯誤檢測電路,比較構(gòu)成所述寄存器中存儲的所述中間值的符號位的值與所述寄存器 中存儲的所述一個或者多個擴展符號位中的一個擴展符號位的值,并且在所述符號位的值 不同于所述一個或者多個擴展符號位中的所述一個擴展符號位的值時檢測出錯誤。
10.根據(jù)權(quán)利要求9所述的算術(shù)處理設(shè)備,其中所述錯誤檢測電路是異或電路,所述異 或電路具有連接到存儲于所述寄存器中的所述中間值的所述符號位和所述一個或者多個 擴展符號位中的所述一個擴展符號位的輸入。
11.根據(jù)權(quán)利要求9所述的算術(shù)處理設(shè)備,還包括存儲用于除法的除數(shù)的除數(shù)寄存器, 其中所述預(yù)處理電路在所述寄存器中存儲用于所述除法的被除數(shù)而在所述除數(shù)寄存器中 存儲所述除數(shù),所述解預(yù)測電路預(yù)測構(gòu)成商的部分商作為所述部分解,所述商通過所述被 除數(shù)除以所述除數(shù)而獲得,并且所述中間值計算電路通過獲得所述除數(shù)與所述部分商的乘 積并且從存儲于所述寄存器中的所述數(shù)值中減去所述乘積來生成中間余數(shù)作為所述中間 值。
12.根據(jù)權(quán)利要求9所述的算術(shù)處理設(shè)備,其中所述預(yù)處理電路在所述寄存器中存儲 用于平方根計算的被開方數(shù),并且所述解預(yù)測電路預(yù)測構(gòu)成平方根的部分平方根作為所述 部分解,所述平方根通過所述平方根計算根據(jù)所述被開方數(shù)而獲得。
13.一種在算術(shù)電路中的算術(shù)處理方法,包括每當(dāng)在寄存器中存儲數(shù)值時基于所述數(shù)值來預(yù)測部分解,其中所述部分解是由構(gòu)成 解的部分?jǐn)?shù)位表示的值,所述解根據(jù)目標(biāo)數(shù)值而獲得,并且以數(shù)位有效性的降序來進(jìn)行預(yù) 測;使用預(yù)測的一個或者多個部分解、通過預(yù)定計算來生成中間值,通過符號擴展向所述 中間值附加一個或者多個擴展符號位,并且在所述寄存器中存儲被附加了所述一個或者多 個擴展符號位的所述中間值;依次獲取所述預(yù)測的一個或者多個部分解,并且基于所述一個或者多個部分解來生成 解;并且比較構(gòu)成所述寄存器中存儲的所述中間值的符號位的值與所述寄存器中存儲的所述 一個或者多個擴展符號位中的一個擴展符號位的值并且在所述符號位的值不同于所述一 個或者多個擴展符號位中的所述一個擴展符號位的值時檢測出錯誤。
全文摘要
提供了算術(shù)電路、算術(shù)處理設(shè)備和算術(shù)處理方法。在一種算術(shù)電路中,每當(dāng)在寄存器中存儲數(shù)值時,基于該數(shù)值來預(yù)測部分解,使用一個或者多個預(yù)測的部分解、通過預(yù)定計算來生成中間值,通過符號擴展向中間值附加擴展符號位,并且在寄存器中存儲被附加了擴展符號位的中間值。此外,基于一個或者多個部分解生成解。比較構(gòu)成寄存器中存儲的中間值的符號位的值與寄存器中存儲的擴展符號位的值,并且在符號位的值不同于擴展符號位的值時輸出錯誤信號。
文檔編號G06F11/18GK101937379SQ20101021567
公開日2011年1月5日 申請日期2010年6月24日 優(yōu)先權(quán)日2009年6月29日
發(fā)明者鴨志田志郎 申請人:富士通株式會社