複製鏈接
請複製以下鏈接發送給好友

Booth算法

鎖定
Booth算法是一種適合於通過硬件實現的簡便算法 [1]  。將乘數看作從最低位開始的一串二進制數字。Booth算法的基本思路是:對於具有連續0和1的組,需要產生的部分積較少。對於乘數中每個0,僅需要將前面的累加的部分積向右移動一位 [2] 
中文名
Booth算法
外文名
Booth
提出者
Booth夫婦
適用領域
信息科學
應用學科
數學
方    法
操作計算補碼數據的乘積

Booth算法簡介

利用移位和加法,可以實現二進制無符號數的乘法,在無符號數乘法的基礎上,加上適當的符號處理,很容易得到帶符號數的原碼乘法器。但是,在計算機中,帶符號數都以補碼錶示,若採用原碼乘法器進行帶符號數的乘法運算,則首先要將乘數和被乘數轉換成原碼,相乘後再將負的乘積轉換成補碼,致使運算過程比較複雜。
不少處理器直接採用補碼相乘的方法,以避免運算過程中的碼制轉換,提高處理器的工作效率。然而,二進制無符號的乘法並不能直接推廣到補碼的乘法運算,比較普遍採用的是布斯(Booth)補碼相乘算法 [3] 

Booth算法原理

布斯算法將乘數看作從最低位開始的一串二進制數字。從最低位算起,只要這串數字為“0“,就不執行任何操作;當這串數字遇到第一個“1”時執行一次減法,即減被乘數與該位權值的乘積,而對於其後的“1”不執行任何操作;當這串數字再變為“0”時,則遇到第一個“0”時執行一次加法,即加被乘數與該位權值的乘積,而對其後的“0”則不執行任何操作。如此一直進行到最高位 [1] 
舉例來説,假設被乘數是5,乘數是7,即進行二進制數00000101與00000111相乘。該算法將7看作為三個“1”後面跟有五個“0”的一串數字。對於第一個”1”,該算法將減去5×20,對於第二和第三個“1”,則不執行任何操作;當遇到第一個“0”時,加5×23,得到最後結果是35。用算式表示為 [1] 

Booth算法計算步驟

Booth算法對乘數從低位開始判斷,根據兩個數據位的情況決定進行加法、減法還是僅僅移位操作。判斷的兩個數據位為當前位及其右邊的位(初始時需要增加一個輔助位0),移位操作是向右移動 [4] 
其中booth算法在操作時,需要遵循一個操作表 [4] 
Yn
Yn+1
操作
0
0
+0,右移一位
0
1
+[x]補,右移一位
1
0
+[-x]補,右移一位
1
1
+0,右移一位
具體步驟如下:
1、被乘數X與乘數Y均以補碼的形式參加乘法運算,運算結果是積的補碼 [5] 
2、部分積和被乘數X採用雙符號位,乘數Y採用單符號位 [5] 
3、初始部分積為0。運算前,在乘數Y的補碼末位添加一位附加位Yn+1,初始值為0 [5]  [6] 
4、根據YnYn+1的值,按照上表進行累加右移操作,右移時遵循補碼的移位規則 [5] 
5、累加n+1次,右移n次,最後一次不右移 [5] 

Booth算法用途

對於算術四則運算,加減用補碼方法、乘除用原碼方法無法實現。這樣會使同一運算部件做四則算術運算需要進行碼制轉換,這會非常困難 [7] 
原碼乘法中的符號位不能參加運算,需要單獨用一個異或門產生乘積的符號位。故人們自然地思考能否讓符號數字化後也參加乘法運算的問題,補碼乘法就可以實現符號位直接參加運算 [7] 
補碼乘除解決符號位參加運算的問題,但過程比較複雜,人們尋求較好的補碼乘法和除法。由Booth(布斯)夫婦首先提出的比較法即Booth算法是一種比較好的帶符號數乘法的方法,被廣泛採用 [7] 
Booth算法採用相加和相減的操作,計算補碼數據的乘積。Booth算法對乘數從低位開始判斷,根據兩個數據位的情況決定進行加法、減法還是僅僅移位操作。判斷的兩個數據位為當前位及其右邊的位(初始時需要增加一個輔助位0),移位操作是向右移動 [7] 

Booth算法特點

2位Booth編碼可以將部分積的個數減少1/2,3位或4位的Booth編碼可以使部分積的個數減少得更多。但是,在3位或3位以上的Booth編碼中,雖然部分積的個數減少了,但是部分積產生電路變複雜了,部分積的產生需要的時間增加了,在一定程度上抵消了部分積的減少帶來的好處。因此,在實際的乘法器設計中,常被使用的仍然是2位Booth編碼 [2] 
參考資料
  • 1.    朱競夫編著.高等學校教材 坦克火控系統:兵器工業出版社,1992年08月第1版:第187頁
  • 2.    許邦建,唐濤,張坤赤,陳強編著,DSP處理器算法概論,國防工業出版社,2012.02,第46頁~第48頁
  • 3.    萬國春,蘇立峯,羅勝欽,陳怡編著,系統芯片(SOC)設計方法與實踐,同濟大學出版社,2016.12,第214頁
  • 4.    胡越明主編;全國高等駕馭自學考試指導委員會編,計算機組成原理 (附:計算機組成原理自學考試大綱),經濟科學出版社,2000.03,第32頁
  • 5.    包健,馮建文,章復嘉編著,計算機組成原理,浙江科學技術出版社,2004年8月,第79頁
  • 6.    陳琳琳,趙正平,紀平,吳婷編著,計算機組成原理答疑解惑與典型題解,北京郵電大學出版社,2015.01,第44頁
  • 7.    方輝雲,何苗,陳琛主編;金大衞,李雙星,宋潔副主編.計算機組成原理:華中科技大學出版社,2016.02:第82頁