專利名稱:能使srt算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器體系結(jié)構(gòu)技術(shù)領(lǐng)域,特別涉及能使SRT算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的方法,尤其是微處理器中定點除法部件的處理方法。
背景技術(shù):
定點除法是處理器(包括一些DSP和嵌入式芯片)的一個非常重要功能部件之一,它的性能是影響處理器性能的一個重要方面。定點除法的實現(xiàn)方法比較多,本發(fā)明涉及的領(lǐng)域主要是針對所有使用SRT算法(參照文獻M.D.Ercegovac and T.Lang,Divi sion and Square RootDigitRecurrence Algorithms and Implementations,Kluwer AcademicPublishers,Norwell,Mass.,1994.)實現(xiàn)的定點除法。SRT算法是一種數(shù)字循環(huán)算法,是采用減法的方法,每次循環(huán)得到最后結(jié)果中的固定位數(shù)。例如采用基4的SRT算法的定點除法部件,每次循環(huán)得到2位結(jié)果,對于單精度的定點除法來說至少需要16次循環(huán)才能得到最后結(jié)果;而對于雙精度的定點除法來說,至少需要循環(huán)32次才能得到最后結(jié)果。
然而,在實際的運算中,在所有參與定點除法的兩個操作數(shù)中,有很大部分有下面特點,即被除數(shù)前面0個數(shù)與除數(shù)前面0個數(shù)相差的數(shù)值比較小。例如對一個無符號單精度的定點除法,被除數(shù)為19,除數(shù)為5它們的二進制表示分別如下被除數(shù)00000000 00000000 00000000 00010011;除數(shù) 00000000 00000000 00000000 00000101
那么被除數(shù)前面0的個數(shù)為27,而除數(shù)為29,那除數(shù)比被除數(shù)只大2,一般的使用SRT算法的定點除法部件不能利用兩個操作數(shù)的這個特點來改善除法性能。而只有參照文獻(Huffman;William A《Mechanism andmethod for integer divide involving pre-alignment of the divisorrelative to the dividend》Appl.No167006)中的方法也只是針對不恢復余數(shù)算法,充分利用操作數(shù)前面位數(shù)為零的個數(shù)來減少循環(huán)次數(shù)。本發(fā)明適用于所有的SRT算法,不需要利用參照文獻(Huffman;William A《Mechani sm and method for integer divide involving pre-alignmentof the divisor relative to the dividend》Appl.No167006)中的對齊操作數(shù),而是根據(jù)參與除法的兩個操作數(shù)前面位數(shù)為零的個數(shù)直接得出需要循環(huán)的次數(shù)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種能使SRT算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的方法。
為了說明本發(fā)明的實現(xiàn)方法,我們只以定點無符號除法,基2n的SRT為例。
因為是定點無符號除法,所以操作數(shù)都是正數(shù);采用的是基2n的SRT算法,所以每次循環(huán)產(chǎn)生n位結(jié)果。本發(fā)明只需要通過計算兩個操作數(shù)前面零個數(shù)的差值確定定點除法循環(huán)的次數(shù)。例如參與計算的兩個操作數(shù),除數(shù)opa,被除數(shù)為opb,并且除數(shù)opa前面位數(shù)為0的個數(shù)為a,被除數(shù)opb前面位數(shù)為0的個數(shù)為b,則循環(huán)次數(shù)為 如果a<b,則說明被除數(shù)小于除數(shù),直接得到商的值為0,余數(shù)的值為被除數(shù)。
本發(fā)明的技術(shù)方案一種能使SRT算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的方法在開始定點除法循環(huán)計算之前,根據(jù)參加定點除法的兩個操作數(shù)前面0的個數(shù)(如果是負數(shù)則是1的個數(shù))差值確定完成定點除法循環(huán)的次數(shù)。從而達到減小循環(huán)次數(shù),加快定點除法速度同時降低功耗的目的。
本發(fā)明能使SRT算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的方法,假設(shè)參加除法的兩個數(shù)都為正數(shù),其步驟如下1)根據(jù)定點除法的兩個操作數(shù),先計算每個操作數(shù)前面位數(shù)為0的個數(shù),我們不妨假設(shè)除數(shù)opa前面位數(shù)為0的個數(shù)為a,被除數(shù)opb前面位數(shù)為0的個數(shù)為b,根據(jù)上述原理,計算需要循環(huán)的次數(shù)為 其中如果a<b,則直接得到商的值為0,余數(shù)的值為被除數(shù)的值;然后把除數(shù)向左移動a位,而被除數(shù)向左移動 位,(即移動后的除數(shù)最前面位數(shù)的值為1),這樣得到SRT算法執(zhí)行前除數(shù)和被除數(shù)的初始值;2)根據(jù)SRT算法進行計算得出每次循環(huán)的結(jié)果;3)在得出最后商的結(jié)果后,對余數(shù)進行調(diào)整,因為除數(shù)在開始SRT算法之前向左移動a位,所以最后的余數(shù)要根據(jù)除數(shù)移動的位數(shù)向右移動相同的位數(shù),即a位。
具體實施例方式
下面,我們將以8位無符號的定點除法,基4的SRT算法為例,進一步說明本發(fā)明的方法。假如兩個操作數(shù)分別為被除數(shù)7,除數(shù)4,其二進制表示如下被除數(shù)opb=0000,0111(7)除數(shù) opa=0000,0100(4)第一步分別計算被除數(shù),除數(shù)前面位數(shù)為0的個數(shù),得到除數(shù),被除數(shù)前面位數(shù)0的個數(shù)都為5。因為兩個操作數(shù)前面0的個數(shù)差為0,并采用基4的SRT算法所以根據(jù)本發(fā)明的原理,整個計算需要循環(huán)的次數(shù)為1次。同時可以得到操作數(shù)循環(huán)前的初始值為opb=000.1110,0000,opa=000.1000,0000。
第二步使用基4的SRT算法計算,得到商為0000,0001;余數(shù)為0110,000。
第三步對余數(shù)進行調(diào)整,余數(shù)向右移5位,得到最后余數(shù)為0000,0011;而對于有符號定點除法來說實現(xiàn)方法和無符號定點除法相同,只不過對于有符號定點除法并且操作數(shù)為負數(shù)的情況時,計算操作數(shù)前面零的個數(shù)是通過計算操作數(shù)前面1的個數(shù)來實現(xiàn)的。
比較本發(fā)明與一般定點除法部件的處理方法,我們顯然可以看出本發(fā)明有以下優(yōu)點1)加快計算速度;一般定點除法采用固定循環(huán)次數(shù)的方法,這樣不能充分利用操作數(shù)特性加快除法的計算速度。在實際情況中,參加定點除法計算的兩個操作數(shù)前面0的個數(shù)比較多,并且兩個操作數(shù)前面0個數(shù)差值比較小。使用本發(fā)明的方法就可以大大縮短這些操作數(shù)的計算速度,而不象一般定點除法方法對待任何數(shù)都需要固定的循環(huán)次數(shù)。
2)減小功耗;因為加快計算速度,減少了需要循環(huán)次數(shù),所以同時能減少定點除法部件的功耗。
本發(fā)明的能使SRT算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的處理方法,在開始定點除法循環(huán)計算之前,根據(jù)參加定點除法的兩個操作數(shù)前面0的個數(shù)(如果是負數(shù)則是1的個數(shù))差值確定完成定點除法循環(huán)的次數(shù)。從而達到減小循環(huán)次數(shù),加快定點除法速度同時降低功耗的目的。為當代微處理器加快定點除法部件的計算速度同時降低該部件功耗提供了一種新型的處理方法。
本發(fā)明已經(jīng)應用在“龍芯”2處理器中。
權(quán)利要求
1.一種能使SRT算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的處理方法,其特征在于,在開始定點除法循環(huán)計算之前,根據(jù)參加定點除法的兩個操作數(shù)前面0的個數(shù),如果是負數(shù)則是1的個數(shù),其差值確定完成定點除法循環(huán)的次數(shù),從而達到減小循環(huán)次數(shù),加快定點除法速度同時降低功耗。
2.一種能使SRT算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的處理方法,假設(shè)參加除法的兩個數(shù)都為正數(shù),其步驟如下1)根據(jù)定點除法的兩個操作數(shù),先計算每個操作數(shù)前面位數(shù)為0的個數(shù),假設(shè)除數(shù)opa前面位數(shù)為0的個數(shù)為a,被除數(shù)opb前面位數(shù)為0的個數(shù)為b,計算需要循環(huán)的次數(shù)為 其中如果a<b,則直接得到商的值為0,余數(shù)的值為被除數(shù)的值;然后把除數(shù)向左移動a位,而被除數(shù)向左移動 位,得到SRT算法執(zhí)行前除數(shù)和被除數(shù)的初始值;2)根據(jù)SRT算法進行計算得出每次循環(huán)的結(jié)果;3)在得出最后商的結(jié)果后,對余數(shù)進行調(diào)整,因為除數(shù)在開始SRT算法之前向左移動a位,所以最后的余數(shù)要根據(jù)除數(shù)移動的位數(shù)向右移動相同的位數(shù),即a位。
全文摘要
本發(fā)明涉及微處理器體系結(jié)構(gòu)技術(shù)領(lǐng)域,為當代微處理器加快定點除法部件的計算速度同時降低該部件功耗提供了一種新型的處理方法。本發(fā)明的能使SRT算法實現(xiàn)的定點除法部件減少循環(huán)次數(shù)的處理方法,在開始定點除法循環(huán)計算之前,根據(jù)參加定點除法的兩個操作數(shù)前面0的個數(shù)(如果是負數(shù)則是1的個數(shù))差值確定完成定點除法循環(huán)的次數(shù)。從而達到減小循環(huán)次數(shù),加快定點除法速度同時降低功耗的目的。
文檔編號G06F7/60GK1485726SQ0315484
公開日2004年3月31日 申請日期2003年8月20日 優(yōu)先權(quán)日2003年8月20日
發(fā)明者劉華平, 齊子初, 胡偉武 申請人:中國科學院計算技術(shù)研究所