專利名稱:整數(shù)除法運算裝置及整數(shù)除法運算方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機系統(tǒng)中進(jìn)行除法運算用的裝置及方法。
大多數(shù)計算機系統(tǒng)都有整數(shù)除法運算裝置,即整數(shù)被除數(shù)除以整數(shù)除數(shù)的運算裝置。原有的整數(shù)除法運算裝置都是對被除數(shù)及除數(shù)返復(fù)進(jìn)行移位及減法處理。原有的這種整數(shù)除法運算裝置已經(jīng)多次公開發(fā)表。例如,在約翰·埃爾·赫奈西(ジョン·ェル·ヘネツ-)和戴維特·埃·帕達(dá)松(デビツド.エ-パタ-ソン)合著的“計算機功能結(jié)構(gòu)、定量方法”(1990年,美國加利福尼亞州圣馬特奧,莫爾干考夫曼(モルガンカウフマン)公司出版)中就有闡述。本說明書參考了其中的闡述內(nèi)容。
移位及減法處理都要花費時間和運算費用。原有的整數(shù)除法裝置由于反復(fù)對被除數(shù)及除數(shù)進(jìn)行移位和減法運算,由于運算所花費的時間,增大了運算費用。
因此要求提供一種更有效的除法運算裝置及除法運算方法。
為了解決上述課題,本發(fā)明提供一種進(jìn)行整數(shù)被除數(shù)除以整數(shù)除數(shù)的運算,生成整數(shù)商用的裝置及方法。本發(fā)明的裝置是在將除數(shù)的右端位與被除數(shù)的M位對位以后進(jìn)行的除法運算。M是表示被除數(shù)的位的位置上正整數(shù)值。從被除數(shù)的各個位中選定看來應(yīng)該是與除數(shù)位對位的位的整數(shù)值同除數(shù)進(jìn)行比較。
根據(jù)該比較的結(jié)果,將與被除數(shù)的M位和位于其左側(cè)的被除數(shù)位相對應(yīng)的位置處的商數(shù)位設(shè)為0。再根據(jù)上述比較結(jié)果,在經(jīng)過上述對位處理的狀態(tài)下,進(jìn)行被除數(shù)除以除數(shù)的除法運算,算出未設(shè)定為0的商數(shù)位的值。
圖1是表示以本發(fā)明的實施例為根據(jù)的整數(shù)除法裝置的運作的流程圖。
圖2A—2C是以本發(fā)明的實施例為根據(jù)的整數(shù)除法運算處理的示例圖。
圖3是表示根據(jù)本發(fā)明的實施例,將除數(shù)和被除數(shù)對位,進(jìn)行處理的流程圖。
圖4A—4L是表示以本發(fā)明的實施例為根據(jù)的整數(shù)除法運算處理的另一示例圖。
圖5是整數(shù)除法的示意圖。
圖6是以本發(fā)明的第1實施例為根據(jù)的整數(shù)除法運算裝置的框圖。
圖7是以本發(fā)明的第2實施例為根據(jù)的整數(shù)除法運算裝置的框圖。
圖8是以本發(fā)明的第3實施例為根據(jù)的整數(shù)除法運算裝置的框圖。
下面參照附圖詳細(xì)說明本發(fā)明的特征和優(yōu)點、以及各實施例的結(jié)構(gòu)和運作。附圖中,同一標(biāo)號表示相同的或類似的部件。
本發(fā)明的整數(shù)除法運算裝置與原有的整數(shù)除法運算裝置及方法相比較,其運算時間短,運算費用低。特別是在整數(shù)除法運算中,當(dāng)商位短時,即與商數(shù)的全部位數(shù)相對應(yīng)的設(shè)在商數(shù)開頭的0的位數(shù)多時,或被除數(shù)的位數(shù)短時,本發(fā)明的有效性顯著。本發(fā)明能應(yīng)用于需用整數(shù)除法的一切數(shù)據(jù)處理裝置。例如,本發(fā)明能應(yīng)用于RISC(限定命令置位計算機)。在ジ-ケ·ケィソ和ジェ?!ぅ膝%螗辚磨液现摹癕IPSRISC功能結(jié)構(gòu)”(1992年,美國新澤西州英格爾伍德,プレンティスホ-ル公司出版);マィク·ヅョンソソ著的超標(biāo)量微處理機結(jié)構(gòu)(1991年,プレンティスホ-ル公司出版),以及ステフアン·ビ-·フア-バ-著的VLSIRISC功能結(jié)構(gòu)(1989年,美國紐約州紐約,マ-セルデツカ-公司出版)等中都有關(guān)于RISC的說明。本說明書參考了這些說明。
本發(fā)明的整數(shù)除法運算裝置能進(jìn)行帶符號的整數(shù)除法運算和不帶符號的整數(shù)除法運算。為了便于說明,本說明書首先說明不帶符號的整數(shù)除法運算。然后再討論帶符號的整數(shù)除法運算。
在詳細(xì)說明本發(fā)明之前,先說明原有的整數(shù)除法運算裝置如何運算,例如怎樣進(jìn)行9÷3的運算。在許多文獻(xiàn)中都對原有的整數(shù)除法運算裝置發(fā)表過闡述。例如有上述的赫奈西和帕達(dá)松所著的“計算機功能結(jié)構(gòu)定量方法。圖4A表示在9÷3的運算中,被除數(shù)9和除數(shù)3=值的表示方法。被除數(shù)的各位用DD0—DD7表示。DD0是右端位即最低位,DD7是左端位即最高位。除數(shù)的各位用DS0—DS7表示。DS0是右端位。DS7是左端位。商數(shù)的各位用Q0—Q7表示。Q0是右端位,Q7是左端位。圖5示出了這些位。
如圖4B所示,原有的整數(shù)除法運算裝置將除數(shù)的右端位DS0與被除數(shù)的左端位DD7對齊。然后,從被除數(shù)中與除數(shù)對齊的位(在圖4B的情況下,是位DD7)相對應(yīng)的整數(shù)值中減去除數(shù)。即從與被除數(shù)位DD7相對應(yīng)的整數(shù)值0中減去除數(shù)3,得-3。因減得的結(jié)果為負(fù),所以將商數(shù)位Q7設(shè)定為0。如果減得的結(jié)果為正(包括0),則商位Q7設(shè)定為1。在圖4B的情況下,商位Q7設(shè)定為0。
其次,如圖4C所示,將除數(shù)向右移1位。從與除數(shù)對齊的被除數(shù)位(在圖4C中,位DD7及DD6)相對應(yīng)的右端一側(cè)的位中所有的整數(shù)值中減去除數(shù)。即從與被除數(shù)位DD7及DD6相對應(yīng)的右端一例的位中所有的整數(shù)值0中減去除數(shù)3,得-3。由于減得的結(jié)果為負(fù),所以設(shè)定商數(shù)位Q6為0。如果減得的結(jié)果為正,則商位Q6設(shè)定為1。在圖4C中,商數(shù)位Q6設(shè)定為0。
這樣,如圖4D—4G所示,商數(shù)位Q5—Q2也設(shè)定為0。
設(shè)定商數(shù)位Q2為0后,如圖4H所示,將除數(shù)向右移1位,從與除數(shù)對齊的被除數(shù)位(圖4H中,位DD7—DD1)相對應(yīng)的右端一側(cè)的位中所有的整數(shù)值中減去除數(shù)。即從與被除數(shù)位DD7—DD1相對應(yīng)的右端一側(cè)的位中所有的整數(shù)值4中減去除數(shù)3,得1。因減得的結(jié)果為正,所以設(shè)定商數(shù)位Q1為1。這時,如圖4I所示,根據(jù)該減法運算結(jié)果修正被除數(shù)。
其次,如圖4I所示,將除數(shù)向右移1位,從與除數(shù)對齊的被除數(shù)位(圖4I中,位DD7—DD0)相對應(yīng)的右端一側(cè)位中所有的整數(shù)值中減去除數(shù)。即從與被除數(shù)DD7—DD0相對應(yīng)的右端一側(cè)位中所有的整數(shù)值3中減去除數(shù)3,得0。因減得的結(jié)果為正,所以設(shè)定商數(shù)位Q0為1。這時,由于除數(shù)的右端位DS0與被除數(shù)的右端位DD0對齊,所以整數(shù)除法運算結(jié)束。
至此應(yīng)該注意的是,在原有的整數(shù)除法裝置的運算中,與被除數(shù)起始的各0位相對應(yīng)的商數(shù)位總為0。這在無符號整數(shù)除法運算中總是正確的。這是因為從0中減去非零的除數(shù)所致。
因此,正如本發(fā)明者們所發(fā)現(xiàn)的那樣,如果將與被除數(shù)起始一側(cè)的各0位相對應(yīng)位置的商數(shù)位設(shè)定為0,然后將除數(shù)的右端位DS0與被除數(shù)起始的非零位即被除數(shù)左端一側(cè)開始為1的位對齊,開始進(jìn)行原有的整數(shù)除法運算,則可省去許多移位過程和減法運算過程。
這樣,如果能省去移位及減法過程,則可縮短整數(shù)除法處理的時間,減少運算費用。實際上能縮短的時間或能節(jié)約的費用的多少都取決于被除數(shù)、除數(shù)及商值。通常,如果商數(shù)位短,即如果與商數(shù)的全部位數(shù)相對應(yīng)的起始的0數(shù)多,或者如果被除數(shù)短,則能提高整數(shù)除法運算裝置的性能。
本發(fā)明的第1個實施例進(jìn)行整數(shù)除法運算時,對被除數(shù)從左向右搜索,具體確定最初的非零被除數(shù)位的位置,即起始非零被除數(shù)位的位置。然后將除數(shù)的右端位DS0與該起始非零被除數(shù)位對齊。而且將與該起始非零被除數(shù)位的左側(cè)的被除數(shù)位相對應(yīng)的商數(shù)位設(shè)為0。這樣,將被除數(shù)和除數(shù)對齊,并將適當(dāng)個數(shù)的0設(shè)定為商數(shù)后,開始進(jìn)行用圖4A—4I說明過的原有的整數(shù)除法處理。
圖4J表示本發(fā)明的第1個實施例的運作。圖中,起始非零被除數(shù)位為DD3。將除數(shù)的右端位DS0與該被除數(shù)位DD3對齊,將與起始非零被除數(shù)位DD3的左側(cè)的被除數(shù)位DD7—DD4相對應(yīng)的商數(shù)位Q7—Q4設(shè)為0。
圖6是以本發(fā)明的第1個實施例為根據(jù)的整數(shù)除法運算裝置602的框圖。整數(shù)除法運算裝置602備有被除數(shù)寄存器604和除數(shù)寄存器606。
起始非零位探試電路(FFO)608將寄存器604中的被除數(shù)的各位從左向右調(diào),具體確定起始非零被除數(shù)位的位置W。檢索的位的位置W提供給控制狀態(tài)裝置610。在圖4J中,位的位置W為3。
控制狀態(tài)裝置610將指示送給1—63位右移位寄存器612,將被除數(shù)的W位向右進(jìn)行邏輯移位。該寄存器612能將1—63任意位數(shù)的目標(biāo)數(shù)據(jù)向右移位。這時,各0移向寄存器612的左端。向右移位后的被除數(shù)根據(jù)控制狀態(tài)裝置610的指示,通過多路轉(zhuǎn)換器616及620,存儲在寄存器604中。
移出右移位寄存器612以外的被除數(shù)位存儲在暫存寄存器(圖中未示出)中。該暫存寄存器分別與右移位寄存器612、左移位寄存器614及左移位寄存器622連接。在圖4J中,該暫存寄存器所存的為“001”。
控制狀態(tài)裝置610將與被除數(shù)位W的左側(cè)的被除數(shù)位相對應(yīng)的商數(shù)位設(shè)定為0。這些商數(shù)位最好存儲在寄存器(圖中未示出)中。在圖4J中,將商數(shù)位Q7—Q4設(shè)定為0。
這樣將除數(shù)和被除數(shù)對齊,并將適當(dāng)個數(shù)的起始商數(shù)位設(shè)定為0,并將其存入寄存器中,然后利用圖6所示的各部件開始進(jìn)行原有的整數(shù)除法運算。
即減法器618從寄存器604中的被除數(shù)中減去寄存器606中的除數(shù)。在圖4J所示例中,從1減去3??刂茽顟B(tài)裝置610斷定減得結(jié)果為負(fù)時,將商數(shù)位Q3設(shè)定為0,將指示送給左移位寄存器614,將寄存器604中的被除數(shù)向左移一位。這時,暫存寄存器內(nèi)的左端位被移到左移位寄存器614的右端位置。該左移位后的被除數(shù)值通過多路轉(zhuǎn)換器616及620,存入寄存器604。在圖4J中,將二進(jìn)制數(shù)字“10”存入寄存器604。
控制狀態(tài)裝置610反復(fù)進(jìn)行上述處理,設(shè)商數(shù)位Q2為0,將二進(jìn)制數(shù)字“100”存入寄存器604。
根據(jù)控制狀態(tài)裝置610的指示反復(fù)進(jìn)行同樣的處理,在圖4J的情況下,用減法器618從寄存器604中現(xiàn)在的被除數(shù)中減去寄存器606中的除數(shù)后的值為正1。即4-3=1。因此,控制狀態(tài)裝置610設(shè)定商數(shù)位Q1為1,指示左移位寄存器622,將減法器618的輸出數(shù)據(jù)向左移1位。而且將存儲在暫存寄存器中的值的左端位移到該左移后的輸出數(shù)據(jù)的右端位置。該左移后的輸出數(shù)據(jù)成為現(xiàn)在的被除數(shù),通過多路轉(zhuǎn)換器616及620,存入寄存器604中。在圖4J所示例中,將二進(jìn)制數(shù)字“11”存入寄存器604。
根據(jù)控制狀態(tài)裝置610的指令,再反復(fù)進(jìn)行上述處理。即在減法器618中,從存儲在寄存器604中的現(xiàn)在的被除數(shù)中減去存儲在寄存器606中的除數(shù)。因減法器輸出0,所以控制狀態(tài)裝置610設(shè)定商位Q0為1。至此,整數(shù)除法運算結(jié)束。
圖6中的整數(shù)除法裝置602的控制狀態(tài)裝置610最好用硬件實現(xiàn)?;蛘卟捎酶鶕?jù)計算機的軟件運作的處理機也可。起始非零探試電路(FFO)608可應(yīng)用浮點加法器的正規(guī)化控制來實現(xiàn)。其結(jié)構(gòu)及運作,通過參照本說明書,本專業(yè)的技術(shù)人員自會明白。圖6中的其它部件是專業(yè)的技術(shù)人員已知的。
現(xiàn)說明本發(fā)明的第2個實施例。該實施例在進(jìn)行整數(shù)除法運算時,將被除數(shù)從左向右調(diào)動,具體確定最初的非零位、即起始非零被除數(shù)位的位置。然后將除數(shù)從左向右調(diào)動,確定最初的非零位即起始非零除數(shù)位的具體位置。從起始非零被除數(shù)位的位置減去起始非零除數(shù)位的位置,生成兩者對齊的位的位置。
與該對位的位置相對應(yīng)的被除數(shù)位,簡稱為對位被除數(shù)位,將除數(shù)的右端位DS0與該經(jīng)過對位處理的被除數(shù)位對齊。然后將與該對位被除數(shù)位和其左側(cè)的被除數(shù)位相對應(yīng)的商數(shù)位設(shè)為0。這樣將除數(shù)和被除數(shù)進(jìn)行對位處理,在商數(shù)的開頭設(shè)定適當(dāng)個數(shù)的0后,開始進(jìn)行參照圖4A—4I說明過的原有的整數(shù)除法運算。
圖4L表示本發(fā)明的第2個實施例的運作。該圖中,起始非零被除數(shù)位為DD3。起始非零除數(shù)位為DS1。因此對位的位置為2。因此,將除數(shù)的右端位DS0與被除數(shù)位DD2對齊,將與被除數(shù)位DD2和其左側(cè)的被除數(shù)位DD7—DD3相對應(yīng)的商數(shù)位Q2及Q7—Q3設(shè)為0。
第2個實施例根據(jù)起始非零被除數(shù)位的位置和起始非零除數(shù)位的位置,將除數(shù)與被除數(shù)的對位處理達(dá)到最佳位置。
圖7是以本發(fā)明的第2個實施例為根據(jù)的整數(shù)除法運算裝置702的框圖。整數(shù)除法運算裝置702備有被除數(shù)寄存器704和除數(shù)寄存器706。
起始非零探試電路(FFO)708將寄存器704中的被除數(shù)從左向右調(diào)動,具體確定起始非零被除數(shù)位的位置X,將該位置X輸送至減法器712。在圖4L所示例中,X=3。
起始非零探試電路(FFO)710將寄存器706中的除數(shù)從左向右調(diào)動,具體確定起始非零除數(shù)位的位置Y,將該位置Y輸送至減法器712。在圖4L所示例中,Y=1。
減法器712從X中減去Y,生成上述對位位的位置。在圖4L所示例中,該對位位置為2。該對位位置被輸至控制狀態(tài)裝置714。
控制狀態(tài)裝置714向1—63位右移位寄存器716發(fā)送指示,指令將被除數(shù)右移進(jìn)行與對位位置相對應(yīng)位數(shù)的邏輯移位。根據(jù)控制狀態(tài)裝置714的指示,右移后的被除數(shù)通過多路轉(zhuǎn)換器720及726,存入寄存器704。
移出右移位寄存器716以外的被除數(shù)位存入暫存寄存器中(圖中未示出)。該暫存寄存器分別與右移位寄存器716、左移位寄存器718和左移位寄存器724連接。在圖4L中,該暫存寄存器所存的為“01”。
控制狀態(tài)裝置714將比對位位置高的商數(shù)位設(shè)定為0。這些商數(shù)位存入寄存器中即可(圖中未示出)。在圖4L中,設(shè)定商數(shù)位Q7—Q2為0。
對除數(shù)和被除數(shù)進(jìn)行對位處理,將從開頭算起的適當(dāng)個數(shù)的商數(shù)位設(shè)定為0,并存入寄存器。然后利用圖7所示的各部件,開始進(jìn)行原有的整數(shù)除法運算。該整數(shù)除法運算方法與參照圖6說明過的相同,所以不再重復(fù)說明。
圖7中的整數(shù)除法運算裝置702的控制狀態(tài)裝置714最好用硬件實現(xiàn)?;蛘咭部刹捎酶鶕?jù)計算機軟件運作的處理機。起始非零探試電路(FFO)708及710可應(yīng)用浮點加法器的正規(guī)化控制來實現(xiàn)。其結(jié)構(gòu)及運作,通過參照本說明書,本專業(yè)的技術(shù)人員會明白的。圖7中的其它部件是本專業(yè)工作者已知的。
現(xiàn)說明本發(fā)明的第3個實施例。該實施例將除數(shù)右端位DS0與被除數(shù)的規(guī)定位對齊。然后從被除數(shù)中與除數(shù)對齊的位相對應(yīng)的整數(shù)值中減去除數(shù)。
如果減得的結(jié)果為負(fù),則將上述規(guī)定的與被除數(shù)位和其左側(cè)的被除數(shù)位相對應(yīng)的商位設(shè)定為0,對經(jīng)過對位運算的被除數(shù)及除數(shù)進(jìn)行原有的整數(shù)除法運算。如果減得結(jié)果為正(包括0),則對被除數(shù)和未經(jīng)過對位運算的除數(shù)進(jìn)行原有的整數(shù)除法運算。下面詳細(xì)說明本發(fā)明的第3個實施例。
圖4K表示本發(fā)明的第3個實施例的運作。該圖中,DD4是被除數(shù)的規(guī)定位。將除數(shù)的右端位DS0與該被除數(shù)位DD4對齊。將與規(guī)定的被除數(shù)位DD4和其左側(cè)的被除數(shù)位DD7—DD5相對應(yīng)的商數(shù)位Q4及Q7—Q5設(shè)為0。
圖1是表示本發(fā)明的第3個實施例的運作的流程圖。參照該流程圖和圖2A—2C中的除法例,詳細(xì)說明本發(fā)明的第3個實施例。在圖示例中使用16位被除數(shù)202和16位除數(shù)204。在本發(fā)明中,被除數(shù),除數(shù)及商數(shù)最好為同一位長。圖1中的流程圖從步102開始。
在步104中,將除數(shù)204的右端位DS0與被除數(shù)202的第1規(guī)定被除數(shù)位M對齊。即通過將被除數(shù)位M與除數(shù)位DS0對齊,將被除數(shù)和除數(shù)進(jìn)行對位處理。M是預(yù)先決定的值。在圖2A—2C中,M為4。因此如圖2B所示,除數(shù)204的位DS0與被除數(shù)202的位DD4對位。
再在步104中,從表示被除數(shù)202的位中與除數(shù)204對位的位(圖2B中DD15—DD4)的整數(shù)值中減去除數(shù)204。在圖2B中,得32-4=28。
在步106中,判定步104中減得的結(jié)果是否為負(fù)。即在步106中判斷如下的關(guān)系是否正確。
2的M次方*除數(shù)>被除數(shù)式中符號*表示乘號。
在圖2A—2C所示例中,步104中的減得結(jié)果不為負(fù),即上述關(guān)系不正確。因此執(zhí)行步112以后的一系列處理。如果步104中減得的結(jié)果為負(fù),即如果上述關(guān)系正確,則執(zhí)行步108以后的一系列處理。
在步108中,在商數(shù)的開頭部分插入“K—M”個數(shù)的0,將該商數(shù)存入寄存器中。在本實施例中,K是被除數(shù)202的位數(shù),與除數(shù)204或商的位數(shù)相等。于是,將與第1規(guī)定的被除數(shù)位DD4和其左側(cè)的被除數(shù)位DD15—DD5相對應(yīng)的商數(shù)位設(shè)為0。
步108結(jié)束后,參照圖4A—4I說明的原有的整數(shù)除法的第1階段也就結(jié)束。即將除數(shù)的右端位DS0與第1規(guī)定的被除數(shù)位DD4對位進(jìn)行的除法的第1階段結(jié)束。就是說對與第1規(guī)定的被除數(shù)位DD4相對應(yīng)的商數(shù)位Q4設(shè)定數(shù)值。另外,也可以采用其它眾所周知的整數(shù)除法運算方法代替圖4A—4I中的方法。在步110中,繼續(xù)進(jìn)行參照圖4A一4I說明的原有的整數(shù)除法運算,在步108中生成未設(shè)定為0的商數(shù)位。在步110中利用眾所周知的方法生成余數(shù)。經(jīng)過步110以后,在步122中除法運算結(jié)束。
當(dāng)在步106判定步104中減得的結(jié)果不為負(fù)時,執(zhí)行步112以后的一系列處理。
步112將除數(shù)204的右端位DS0與被除數(shù)202的第2規(guī)定被除數(shù)位N對位。N是預(yù)先確定的規(guī)定正整數(shù)。在圖2A—2C所示例中,N=8。因此,如圖2C所示,除數(shù)204的右端位DS0與被除數(shù)204的位DD8對位。然后,從被除數(shù)202的位中表示與除數(shù)204對位的位(在本例的情況下,為DD15—DD8)的整數(shù)值中減去除數(shù)204。在圖2C的情況下為2-4=-2。
步114判斷步112中減得的結(jié)果是否為負(fù)。如果不為負(fù),執(zhí)行步120以后的處理。如圖2C所示;如果為負(fù),則執(zhí)行步116以后的一系列處理。
在步116中,在商數(shù)的開頭端插入“K—N”個0。這樣將與第2規(guī)定的被除數(shù)位DD8和其左側(cè)的被除數(shù)位DD15—DD9相對應(yīng)的商數(shù)位設(shè)為0。
步116結(jié)束后,參照圖4A—4I說明的原有的整數(shù)除法的第1階段也就結(jié)束。即將除數(shù)204的右端位DS0與第2規(guī)定被除數(shù)位DD8對齊進(jìn)行的除法的第1階段結(jié)束。就是說將與第2規(guī)定的被除數(shù)位DD8相對應(yīng)的商數(shù)位Q8設(shè)定數(shù)值。另外,也可以采用其它已知的整數(shù)除法運算方法代替圖4A—4I中的方法。在步118中,繼續(xù)進(jìn)行參照圖4A—4I說明的原有的整數(shù)除法運算,在步116中生成未設(shè)定0的商數(shù)位。步118利用眾所周知的方法生成余數(shù)。經(jīng)過步118以后,在步122中除法運算結(jié)束。
當(dāng)在步114中判定步112中減得的結(jié)果不為負(fù)后,執(zhí)行步120以后的處理。
步120開始進(jìn)行上述原有的整數(shù)除法處理或眾所周知的其它除法處理。即將除數(shù)204的右端位DS0與被除數(shù)202的左端位“K—1”對齊后,生成全部商數(shù)位。這時,商數(shù)中連一個0也不作預(yù)設(shè)定。另外,除數(shù)204也不與被除數(shù)202的位對位。即,直接執(zhí)行原有的整數(shù)除法運算。步120利用眾所周知的方法生成余數(shù)。經(jīng)過步120以后,在步122中除法運算結(jié)束。
本發(fā)明的第3實施例在整數(shù)除法運算中試行兩次最佳化處理。第1次最佳化處理與步104、106、108及110相對應(yīng),將除數(shù)204的右端位與被除數(shù)202的M位對齊。第2次最佳化處理與步112、114、116及118相對應(yīng),將除數(shù)204的右端位與被除數(shù)202的N位對位。在本發(fā)明中,由于在整數(shù)除法運算中進(jìn)行最佳化處理,所以只進(jìn)行一次最佳化即可。或者也可以試行3次以上的最佳化處理。隨著最佳化處理次數(shù)的重復(fù),作為與除數(shù)右端位對位的目標(biāo)規(guī)定的被除數(shù)位的位置增多。這種變更形態(tài),本專業(yè)工作者是會明白的。
可使用各種數(shù)字,例如K=64、M=16、N=32。K、M、N的值也取永久的設(shè)定值,也可使用適當(dāng)?shù)能浖?,由程序進(jìn)行調(diào)整。
圖3是表示圖1中的步104的詳細(xì)過程的流程圖。該流程從步302開始,直接移到步304。
在步304中,將被除數(shù)向右移M位。這時,各0移到被除數(shù)的左端位的位置。將其稱為邏輯右移值。
在步306中,從右移位后的被除數(shù)中減去除數(shù)。
圖1中的步112與步104相同,但可說明將步304中的M置換成N。步104及步112中的其它運作,本專業(yè)工作者是會明白的。
圖8是以本發(fā)明的第3個實施例為根據(jù)的整數(shù)除法運算裝置802的框圖。該整數(shù)除法運算裝置802備有被除數(shù)寄存器804和除數(shù)寄存器806。
控制狀態(tài)裝置814將指示發(fā)送至右移位寄存器808,將寄存器804中的被除數(shù)向右進(jìn)行M位邏輯移位。最好使M=16,但也可是其它數(shù)。根據(jù)控制狀態(tài)裝置814的指示,右移位后的被除數(shù)通過多路轉(zhuǎn)換器812及820,存入寄存器804。移出右移位寄存器808以外的被除數(shù)位存入暫存寄存器中(圖中未示出)。該暫存寄存器分別與右移位寄存器808,左移位寄存器810及左移位寄存器818連接。在圖4K中,M為4,該暫存寄存器中所存由為“1001”。
控制狀態(tài)裝置814將指示發(fā)送至減法器816,從寄存器804中的被除數(shù)中減去寄存器806中的除數(shù),并接收減得的結(jié)果。如果減得的結(jié)果為負(fù),控制狀態(tài)裝置814將寄存器中存儲的商數(shù)位中位置在M以上的商數(shù)位設(shè)為0。在圖4K所示例中,將商數(shù)位Q7—Q4設(shè)為0。
經(jīng)過對除數(shù)和被除數(shù)進(jìn)行對位處理后,在商數(shù)位的開頭設(shè)定適當(dāng)個數(shù)的0,并存入寄存器。然后利用圖8所示的各部件,開始進(jìn)行原有的整數(shù)除法運算。該整數(shù)除法與參照圖6說明過的相同,其重復(fù)說明從略。
當(dāng)減法器816減得的結(jié)果為正時,控制狀態(tài)裝置814指示右移位寄存器808,再將寄存器804中的被除數(shù)向右移M位,將被除數(shù)從原來的位置向右共計移N位(N=M+M)。根據(jù)控制狀態(tài)裝置814的指示,向右移位后的被除數(shù)通過多路轉(zhuǎn)換器812及820,存入寄存器604。移出左移位寄存器808以外的被除數(shù)位存入暫存寄存器中作為右移位。
控制狀態(tài)裝置814指示減法器816,從寄存器804中的被除數(shù)的現(xiàn)在值減去寄存器806中的除數(shù),并接收減得的結(jié)果。如果減得的結(jié)果為負(fù),控制狀態(tài)裝置814將寄存器中存儲的商數(shù)位中位于N以上的商數(shù)位設(shè)定為0。
經(jīng)過對除數(shù)和被除數(shù)進(jìn)行對位處理后,在商數(shù)位的開頭設(shè)定適當(dāng)個數(shù)的0,并存入寄存器中。然后使用圖8所示的各部件,開始進(jìn)行原有的整數(shù)除法運算。該整數(shù)除法與參照圖6說明過的相同,因此其重復(fù)說明從略。
如果上述第2次減得的結(jié)果為正,控制狀態(tài)裝置814再將原被除數(shù)存入寄存器804。然后利用圖8所示的各部件,開始進(jìn)行原有的整數(shù)除法運算。這時,除數(shù)的右端位與被除數(shù)的左端位對位。
圖8中的整數(shù)除法運算裝置802的控制狀態(tài)裝置814最好用硬件實現(xiàn)?;蛘咭部梢圆捎酶鶕?jù)計算機軟件運作的處理機來實現(xiàn)。圖8中的其它部件是本專業(yè)工作者已知的。
以本發(fā)明為根據(jù)的整數(shù)除法運算裝置,已說明了有關(guān)無符號整數(shù)除法運算。將本發(fā)明的第1—第3實施例經(jīng)過稍加變更之后,就能進(jìn)行帶符號的整數(shù)除法運算。
例如,在本發(fā)明的任意一個實施例中都可增加第1電路。該第1電路是在進(jìn)行前面說明過的整數(shù)除法的算法之前產(chǎn)生被除數(shù)及除數(shù)兩者的絕對值的電路。另外,再增加第2電路。該第2電路是根據(jù)被除數(shù)和除數(shù)的符號調(diào)整商數(shù)符號的電路。例如,如果被除數(shù)和除數(shù)都為正或都為負(fù),則設(shè)定商的符號為正。在進(jìn)行絕對值運算之前進(jìn)行該符號的設(shè)定。
對于實現(xiàn)該第1及第2電路的方法,本專業(yè)技術(shù)人員都很清楚。為了實現(xiàn)帶符號的整數(shù)除法運算,在本發(fā)明的整數(shù)除法運算裝置中也可進(jìn)行其它形態(tài)的變更,參照本說明書,本專業(yè)工作者能明白這種變更形態(tài)。
以第2實施例為根據(jù)的整數(shù)除法裝置的運算速度,通常比以第3實施例為根據(jù)的裝置快。其原因有二,其一是在第2實施例對除數(shù)和被除數(shù)進(jìn)行對位處理,找出最適合的對位的位置。然而第3實施例是將除數(shù)和被除數(shù)的對位選定在任意的位置上。其二是第2實施例預(yù)先確定除數(shù)的對位位置,不需要反復(fù)進(jìn)行移位及減法運算。
可是在第3實施例中的整數(shù)除法運算裝置中所需要的硬件比第2個實施例中的少。其原因有三,其一是第3實施例完全不需要右移位處理器。即第3實施例不需要進(jìn)行1—”K—1”(K為除數(shù)的長度)的任意位數(shù)的移位的右移位處理器。其二是第3實施例不需要上述的兩個起始非零探試電路(FFO)。其三是第3實施例與第2實施例相比較,前者不需要復(fù)雜的狀態(tài)裝置。
第1實施例中的整數(shù)除法運算裝置則是將第2及第3實施例的優(yōu)點及缺點折中的一種裝置??墒?,對于具有這種一般性特征的實施例來說,本發(fā)明的實施并不一定正確。
在全部除法運算階段中原有的非復(fù)原除法運算程序都能適用。
在以上對于各實施例所作的說明,都是展示在開始進(jìn)行原有的除法運算之前,為了與被除數(shù)對位在確定除數(shù)需要前移的范圍的過程中所用的各種不同的程序和技術(shù)。
上述各實施例只是本發(fā)明的幾個示例,本發(fā)明并不受此限,即本發(fā)明的范圍不受上述實施例的限制,而由權(quán)利要求范圍所規(guī)定。
權(quán)利要求
1.一種整數(shù)被除數(shù)除以整數(shù)除數(shù)產(chǎn)生整數(shù)商的方法,該方法的特征在于具有下述四個步驟,即(1)將除數(shù)的右端位排在被除數(shù)M位的位置上的被除數(shù)和除數(shù)的對位步驟;(2)從上述被除數(shù)的各個位中選定看來是應(yīng)該與上述除數(shù)對位的被除數(shù)位的第1整數(shù)值和上述除數(shù)進(jìn)行比較的步驟;(3)根據(jù)上述比較結(jié)果,將與上述被除數(shù)的M位及位于其左側(cè)的被除數(shù)位相對應(yīng)的位置處的商數(shù)位設(shè)定為0的步驟;(4)根據(jù)上述比較結(jié)果,在上述步驟(1)的對位狀態(tài)下,通過被除數(shù)除以除數(shù)的除法運算,算出在未設(shè)定為0的商數(shù)位中的商位值的步驟。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于上述步驟(1)包括將上述被除數(shù)向右移M位的邏輯右移步驟。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于上述步驟(2)包括判定2的M次方乘以上述除數(shù)后的值是否大于上述被除數(shù)的步驟。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于上述步驟(2)包括從上述第1整數(shù)值中減去上述除數(shù)、算出減后結(jié)果的步驟;以及如果上述減后結(jié)果為負(fù),判定上述除數(shù)比上述第1整數(shù)值大時,執(zhí)行上述步驟(3)及(4)的步驟。
5.根據(jù)權(quán)利要求4所述的方法,其特征為當(dāng)上述被除數(shù)和上述商的位長分別為K位時,上述步驟(3)包括在上述除數(shù)比上述第1整數(shù)值大的條件下,將“K-M”個數(shù)的0插入上述商數(shù)開頭的步驟。
6.根據(jù)權(quán)利要求4所述的方法,其特征為還具有下述各步驟,即(5)將上述除數(shù)的右端位與上述被除數(shù)的位N的位置對齊,對該被除數(shù)和除數(shù)進(jìn)行對位處理的步驟;(6)從上述被除數(shù)的各個位中選定看來是應(yīng)該與在上述步驟(5)中的上述除數(shù)對位的被除數(shù)位的第2整數(shù)值和上述除數(shù)進(jìn)行比較的步驟;(7)根據(jù)上述步驟(6)的比較結(jié)果,將與上述被除數(shù)位N以及位于其左側(cè)的被除數(shù)位相對應(yīng)的商數(shù)位設(shè)定為0的步驟;以及(8)根據(jù)上述步驟(6)的比較結(jié)果,在上述步驟(5)的對位狀態(tài)下,通過進(jìn)行上述被除數(shù)除以上述除數(shù)的除法運算,算出在未設(shè)定為0的商數(shù)位中的商位值的步驟。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于當(dāng)上述被除數(shù),上述除數(shù)和上述商的位長為K位時,K=64,M=16,N=32。
8.一種整數(shù)被除數(shù)除以整數(shù)除數(shù)產(chǎn)生整數(shù)商的裝置,該裝置的特征在于包括將除數(shù)的右端位與被除數(shù)的M位的位置對齊,對該被除數(shù)和除數(shù)進(jìn)行對位處理的對位裝置;從上述被除數(shù)的各個位中選定看來是應(yīng)該與上述除數(shù)對位的被除數(shù)位的第1整數(shù)值和上述除數(shù)進(jìn)行比較的比較裝置;根據(jù)上述比較結(jié)果,將與上述被除數(shù)的M位及位于其左側(cè)的被除數(shù)位相對應(yīng)的商數(shù)位設(shè)定為0的零設(shè)定裝置;以及根據(jù)上述比較的結(jié)果,在由上述對位裝置進(jìn)行的對位狀態(tài)下,通過進(jìn)行上述被除數(shù)除以上述除數(shù)的除法運算,算出在未設(shè)定為0商數(shù)位中的商位值的除法運算裝置。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于上述對位裝置對上述被除數(shù)進(jìn)行M位的邏輯右移。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于由前述比較裝置判定2的M次方乘以上述除數(shù)后的值是否大于上述被除數(shù)。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于上述比較裝置包括從上述第1整數(shù)值中減去上述除數(shù)、算出減后結(jié)果的裝置;并在上述減后結(jié)果為負(fù)的條件下,判定上述除數(shù)比上述第1整數(shù)值大的裝置,以及當(dāng)判定上述除數(shù)比上述第1整數(shù)值大時,則由上述零設(shè)定裝置和上述除法裝置運作。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于當(dāng)上述被除數(shù)和上述商的位長為K位時,上述零設(shè)定裝置在上述除數(shù)比上述第1整數(shù)值大的條件下,將“K-M”個數(shù)的0插入上述商數(shù)的開頭。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于包括根據(jù)上述比較裝置比較的結(jié)果,將上述除數(shù)的右端位與上述被除數(shù)的N位位對位,對該被除數(shù)和除數(shù)進(jìn)行對位處理的第2對位裝置;從上述被除數(shù)的各個位中選定看來是應(yīng)該與經(jīng)過上述第2對位裝置處理過的、與上述除數(shù)對位的被除數(shù)位的第2整數(shù)值和上述除數(shù)進(jìn)行比較的第2比較裝置;根據(jù)上述第2比較裝置的比較結(jié)果,將與上述被除數(shù)的N位以及位于其左側(cè)的被除數(shù)位相對應(yīng)的商數(shù)位設(shè)定為0的第2零設(shè)定裝置;以及根據(jù)上述第2比較裝置比較的結(jié)果,在經(jīng)過上述第2對位裝置處理過的對位狀態(tài)下,通過進(jìn)行上述被除數(shù)除以上述除數(shù)的除法運算,算出在未設(shè)定為0商數(shù)位中的商位值的第2除法運算裝置。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于當(dāng)上述被除數(shù)、上述除數(shù)和上述商的位長為K位時,K=64,M=16,N=32。
15.一種整數(shù)被除數(shù)除以整數(shù)除數(shù)、產(chǎn)生整數(shù)商的方法,其特征在于具有下述各步驟(1)確定被除數(shù)的起始非零位的具體位置的步驟;(2)使除數(shù)的右端位與上述起始非零的被除數(shù)位對齊、對該除數(shù)和被除數(shù)進(jìn)行對位處理的步驟;(3)將與位于上述起始非零被除數(shù)位的左側(cè)的被除數(shù)位相對應(yīng)的商數(shù)位設(shè)定為0的步驟;(4)在上述步驟(2)的對位狀態(tài)下,通過進(jìn)行上述被除數(shù)除以上述除數(shù)的除法運算,算出在未設(shè)定為0的商數(shù)位的商位值的步驟。
16.一種整數(shù)被除數(shù)除以整數(shù)除數(shù)、產(chǎn)生整數(shù)商的方法,其特征在于具有下述各步驟(1)確定被除數(shù)的起始非零位的具體位置、以及除數(shù)的起始非零位的具體位置的階段;(2)從上述起始非零的被除數(shù)位的位置減去上述起始非零的除數(shù)位的位置、算出對位位值的步驟;(3)將上述除數(shù)的右端位與上述對位位值所對應(yīng)的被除數(shù)位對齊、對上述除數(shù)和上述被除數(shù)進(jìn)行對位處理的步驟;(4)將較比上述對位位值高的高位位置的商數(shù)位設(shè)定為0的步驟;(5)在上述步驟(3)的對位狀態(tài)下,通過進(jìn)行上述被除數(shù)除以上述除數(shù)的除法運算、算出在未設(shè)定為0的商數(shù)位中的商位值的步驟。
全文摘要
本發(fā)明的裝置用整數(shù)除數(shù)除整數(shù)被除數(shù)、產(chǎn)生整數(shù)商。該裝置將除數(shù)右端位與被除數(shù)的M位對齊,對該被除數(shù)和除數(shù)進(jìn)行對位處理。從被除數(shù)的各個位中選定看來應(yīng)該與除數(shù)對齊的位的整數(shù)值和上述除數(shù)進(jìn)行比較。根據(jù)該比較結(jié)果,將與被除數(shù)的M位及其左側(cè)的位相對應(yīng)的商數(shù)位設(shè)為0。根據(jù)上述比較結(jié)果、在上述對位狀態(tài)下,通過被除數(shù)除以除數(shù),算出在未設(shè)定為0的商數(shù)位中的商位值。
文檔編號G06F7/535GK1117763SQ94191178
公開日1996年2月28日 申請日期1994年12月15日 優(yōu)先權(quán)日1993年12月15日
發(fā)明者威廉姆·A·赫夫曼 申請人:株式會社東芝, 硅圖像有限公司