專利名稱:一種任意字長、任意精度的乘法運算方法及乘法器的制作方法
技術領域:
本發(fā)明涉及一種計算機中心處理單元中的算術運算器。
傳統(tǒng)的定點乘法器是一種采用n位移位寄存器和n位加法器,重復n次位移和n次n位加法,實現(xiàn)n位整數(shù)相乘,這種乘法器速度較慢。另一種采用陣列乘法器,采用n(n-1)個一位全加器和n2個“與”門,實現(xiàn)n位數(shù)乘以n位數(shù),這種在位數(shù)增多時,線路復雜。還有一種采用ROM查表法,這種在位數(shù)增多時,空間需要很大。這幾種乘法器線路實現(xiàn)都受到運算器字長的限制,不可能做到任意長度的兩操作數(shù)相乘。線路上需設置專門機構檢測溢出。傳統(tǒng)的浮點乘法器比定點乘法器可實現(xiàn)大范圍數(shù)的乘積,線路比定點乘法器復雜,操作數(shù)大時,精度降低。上述乘法器在數(shù)的表示范圍和精度上受到結構限制。傳統(tǒng)的乘法器把兩個操作數(shù)一次存入兩個n位寄存器,進行運算,這種需要等到全部都到齊才開始運算,用于流水處理或多處理機并行處理時,進行多于兩個操作數(shù)連續(xù)相乘,下一級運算必須等到上一級運算的全部2n位結果都出來才能開始,增加了等待時間。
本發(fā)明的目的在于避免上述現(xiàn)有技術不足之處,提供一種可以實現(xiàn)兩操作數(shù)有任意長度,任意精度的乘法運算方法及乘法器;在運算時從高位到低位逐位計算,乘積從高位到低位得出;在不需要絕對精度時,舍去對低位處理,加快運算速度;用一個乘法器既可作為浮點乘法器又可作為定點乘法器;運算不需操作數(shù)全部位到齊就開始進行,利于多級連乘運算的并行處理。
附圖的圖面說明
圖1.乘法運算流程2.乘法器結構3.控制邏輯電路4.五進制電路5.進位電路6.個位電路圖本發(fā)明的目的可以通過以下措施來達到該乘法器包括操作數(shù)寄存器、控制邏輯電路、五進制轉換電路、進位電路、個位電路、緩存器、累加器、寄存器、乘積寄存器堆;乘法器操作數(shù)以任意長度,成對由高位到低位順序輸入,通過轉換電路、進位電路、個位電路、累加器逐位運算,將乘積由高位到低位有序輸出;任意字長、任意精度的乘法運算流程為——輸入運算的控制參數(shù)位數(shù)n、精度p——操作數(shù)按規(guī)律每次從A、B隊列中各取一位Ai、Bj——將Ai、Bj分別轉換成五進制表示——分別求Ai、Bj的進位和Ai、Bj的個位——根據(jù)進位和個位的有序累加(參數(shù)k)得出一位乘積Cm參看乘法流程圖,A、B是二個任意多位的二—十進制或二—十六進制的操作數(shù)(為敘述方便,假設為等長度n位)。p是所需計算精度位數(shù)。
A=A1A2A3……AnB=B1B2B3……Bn其中位Ai、Bj(1≤i,j≤n)。計算A*B=C的過程即求C=C1C2C3……C2n-1位Cm(1≤m≤2n-1)與Ai、Bj有如下對應關系C1A1B1C2A2B1A1B2
C3A3B1A2B2A1B3… ……CnAnB1An-1B2……A1BnCn+1 AnB2An-1B3…A2Bn………C2n-2 AnBn-1An-1BnC2n-1 AnBnAi、Bj以固定周期時鐘讀入,則Cm輸出的周期為CmC1、C2、C3、…Cn、Cn+1、…、C2n-1周期1、 2、 3、 …n、 n-1、 …、1結合圖2進一步詳述乘法運算方法,A寄存器堆、B寄存器堆分別以高位到低位的順序存放二—十進制或二—十六進制n位操作數(shù)A、B,其中的位表示為Ai、Bj(1≤i,j≤n),位數(shù)n、運算精度p和時鐘信號ck送入控制邏輯電路,由此產(chǎn)生讀取操作數(shù)的時鐘ck1和輸出乘積位的時鐘ck2,并在達到所需精度的第p位時停上后續(xù)位的計算。
使用五進制在于簡化進位、個位運算時的線路。數(shù)的五進制表示為,二—十進制或二—十進制數(shù)a0a1a2a3小于5時a0a1a2取0…4,a3=0大于5時取a0a1a2a3-5的倍數(shù),另有三位表示數(shù)的大小大于5 a3=1 反之為零。
大于10a4=1 …等于15a5=1 …以Ai為例Ai(a0a1a2a3a4a5)Ai(a0a1a2a3a4a5)3 ( 1 1 0 0 0 0 ) 2 ( 0 1 0 0 0 0 )8 ( 1 1 0 1 0 0 ) 7 ( 0 1 0 1 0 0 )C ( 1 1 0 1 1 0 ) B ( 0 1 0 1 1 0 )
進位電路由五進制數(shù)直接輸出其乘積的百位和十位數(shù)值。求Ai*Bj的進位Cmk=Cmk11Cmk10Cmk9Cmk8Cmk7Cmk6Cmk5Cmk4?;谖暹M制求進位規(guī)律為((Ai*Bj)的進位表示為(Ai*Bj)進)(1)Ai、Bj皆小于5 (Ai*Bj)進=1或者0(2)一大于5、一小于5 [(Ai+5)*Bj]進(3)兩皆大于5、小于10[(Ai+5)*(Bj+5)]進(4)一大于10、一小于5[(Ai+10)*Bj]進(5)一大于10、一小于5[(Ai+10)*(Bj+5)]進(6)二大于10 [(Ai+10)*(Bj+10)]進經(jīng)過對輸入數(shù)據(jù)譯碼,并把各分解運算的進位相加,可求出任意二數(shù)相乘進位。表示為高位的Cmk進高和低位Cmk進,第m個乘積位第k個節(jié)拍的進位高位和低位。
求Ai*Bj的個位指其乘積中小于10(十進制)的部份,輸入操作數(shù)的五進制數(shù)和原二—十進制或二—十六進制的最低位ao、bo,具體如下個位對操作數(shù)譯碼真值表如下左二圖,將Ai、Bj譯碼輸出相加,作為乘積譯碼的輸入,輸出乘積的五進制數(shù)。按照ao、bo的乘法規(guī)則,若滿足乘法奇偶性,則乘積譯碼輸出即為(Ai*Bj)個,否則加5后作為(Ai*Bj)個。
乘積譯碼真值表記為Cmk個,第m個乘積位第k個節(jié)拍的個位。
累加器在每個乘積位運算前置零,以后每一固定時鐘ck1輸入Ai、Bj對,計算 然后與累加器相加,結果仍送回寄存器,寄存器同時輸出一位二—十進制乘積到乘積寄存器。這個過程重復,直到m=2n-1(精度到最低位)或m=p(精度到所需位)。乘積根據(jù)需要可為二—十進制或二—十六進制數(shù),提高實用性。
這樣的單元乘法器重復設置,可實現(xiàn)乘法運算的兩操作數(shù)并行運算,或多操作數(shù)并行連乘的功能。
本發(fā)明相比現(xiàn)有技術有如下優(yōu)點由于本發(fā)明基于操作數(shù)位的運算,位數(shù)增加僅僅意味重復運算次數(shù),因而可以做到無限字長,不會產(chǎn)生溢出。乘積的個位,進位獨立地求出,可以并行化,運算由高位開始,可以在任意位終止,因而具有任意精度,可以犧牲精度贏來處理速度,把精度、數(shù)表示范圍大小對線路結構復雜度的依賴變?yōu)閷\行時間快慢的依賴,而且可由應用程序直接控制。實現(xiàn)可用一個乘法器既取代目前的定點乘法器,同時又代替浮點乘法器。把單個乘法單元重復設置可多位操作數(shù)并行處理,甚至可對連乘高度并行,更體現(xiàn)速度的提高。
下面將結合附圖實施例進一步詳述參看圖2,A寄存器堆、B寄存器堆分別以高位到低位的順序存放二—十進制或二—十六進制n位操作數(shù)A、B,其中的位表示為Ai、Bj(1≤i,j≤n),位數(shù)n和運算精度p、時鐘信號ck送入控制邏輯電路,由此產(chǎn)生讀取操作數(shù)的時鐘ck1和輸出乘積位的時鐘ck2,并在達到所需精度時停止后續(xù)位的計算。兩個五進制譯碼電路,分別將上述Ai、Bj轉換成進位電路、個位電路易于處理的五進制數(shù)。進位電路由兩個五進制數(shù)直接輸出其乘積的百位、十位數(shù)值。個位電路輸出個位數(shù)值。緩存器作用是對數(shù)據(jù)延遲一個ck1時鐘。進位緩存器對進位數(shù)緩沖一拍,兩個位緩存器對個位數(shù)據(jù)各緩沖一拍。三個緩存器先將原有數(shù)據(jù)輸出到下一級,然后再接收新數(shù)據(jù)。累加器先后將原有數(shù)據(jù)和乘積Cmk-2的個位相加,再和Cmk-1的進位相加,再和Cmk的較高進位相加,累加器的位數(shù)決定操作數(shù)至少允許最大的位數(shù)<
每增加4位長度,操作數(shù)位數(shù)擴大十倍。累加器在ck2的控制下,結束上述過程。與寄存器左移4位(二進制)后的數(shù)據(jù)累加,并將結果送回寄存器。上述寄存器左移即可送出一位乘積給乘積寄存器堆,完成一位乘積。只要m≤2n-1或m≠p,這過程就繼續(xù)下去。
下面對本乘法器電路所采用的控制邏輯電路,五進制電路、進位電路、個位電路加以更詳細說明參看圖3,控制邏輯電路由減計數(shù)器1、加計數(shù)器2、與門3、輔助計數(shù)器4、5和加法器6、比較器7、8、9、與門10組成。作用是控制Ai、Bj的輸入順序和Cm輸出順序,根據(jù)輸入的控制參數(shù)n、p和時鐘信號ck,產(chǎn)生讀入數(shù)據(jù)的固定時鐘信號ck1,產(chǎn)生乘積輸出時鐘ck2、運算結束信號stop。具體是減計數(shù)器1對i計數(shù),加計數(shù)器2對j計數(shù),m(n時,輔助計數(shù)器4由與門3控制設置i的初值(即j的末值),輔助計數(shù)單元5由與們10控制設置i的末值(即j的初值,當m≥n時,輔助計數(shù)單元4設置i的末值(j的初值),輔助計數(shù)單元5設置j的末值(i的初值)。當p≥n時,加法單元6將n和i的末值相加輸出,與p比較產(chǎn)生停止信號stop。當p<n時,i的末值直接與p比較產(chǎn)生信號stop。
參看圖4,五進制電路由數(shù)值判定電路11,加法單元12組成。四位二進制a3a2a1a0送入數(shù)值判定電路11,決定a5a4a3,然后經(jīng)控制門13選擇5或10的補碼,送加法單元12和原數(shù)相加,得到數(shù)的五進制表示a5a4a3a2a1a0。
參看圖5,進位電路由譯碼電路14、15、16、17加法單元18、19、20組成。譯碼電路對輸入的Ai、Bj的五進制數(shù)譯碼,輸出(15*15)進, (10*10)進, (5*10)進,(5*5)進,(3*3)進,(4*4)進,(d*5)進(d小于5)。根據(jù)兩數(shù)相乘的六種情況,由加法器18、19、20相加,加法器輸出即是乘積的百位十位的值。
參看圖6.個位電路由譯碼電路21、22和加法器23、26、與門組成。譯碼電路21、22分別對輸入的Ai、Bj的五進制譯碼,(見前真值表)加法器23的輸出由譯碼電路(見前真值表),譯碼后輸出,由原操作數(shù)的最低位經(jīng)與門25相”與”,決定是否由加法器26“加”5。
如果N個結構完全相同的完整單乘法器并行,就能夠實現(xiàn)N+1個操作數(shù)連乘的并行處理,A*B*C*D*…的計算,其中A、B、C、D等都是多位數(shù),利用前述的本乘法器的運算特點,將本級的乘積寄存器堆和下級的A寄存器堆相連接,便能實現(xiàn)當A*B的高位結果一出來就可以立即著手處理乘C的高位,其乘積高位一出來,就可以立即著手乘以D的高位,達到A*B的較低位同A*B*C的較高位,和A*B*C*D*…的更高位同時處理。
權利要求
1.一種任意字長、任意精度的乘法運算方法,其特征在于乘法操作數(shù)以任意長度,成對由高位到低位順序輸入,通過轉換電路、進位電路、個位電路、累加器逐位運算,將乘積由高位到低位有序輸出;乘積Cm(1≤m≤2n-1)與操作數(shù)Ai、Bj有如下對應關系C1A1B1C2A2B1A1B2C3A3B1A2B2A1B3… ……CnAnB1An-1B2… … A1BnCn+1 AnB2An-1B3… A2Bn… … …C2n-2 AnBn-1An-1BnC2n-1 AnBn操作數(shù)寄存器堆以高位到低位的順序存放二—十進制或二—十六進制n位操作數(shù);控制邏輯電路根據(jù)輸入位和要求運算精度產(chǎn)生讀取操作數(shù)的時鐘ck1和輸出乘積位的時鐘ck2,并在達到所需精度時停止后續(xù)位的計算;五進制轉換電路將成對輸入的每位操作數(shù)轉成五進制數(shù);進位電路將兩個十或者十六進制數(shù)相乘的進位簡化為兩個五進制相乘的進位與五進制數(shù)乘與5、10的進位的和,直接輸出其乘積的十位數(shù)值;個位電路對輸入Ai、Bj直接譯碼Ai 01234Bj 01234譯碼 01243譯碼 00132譯碼輸出相加后再譯碼輸出個位數(shù)值相加01234567譯碼01243124緩存器、累加器根據(jù)邏輯電路的控制時鐘進行有序累加,將乘積從高位到低位輸出,累加器的位數(shù)決定操作數(shù)至少允許最大位數(shù);乘法運算可兩操作數(shù)并行運算,或多操作數(shù)并行連乘。
2.一種根據(jù)任意字長、任意精度的乘法運算方法而設計的乘法器,其特征在于乘法器由操作數(shù)寄存器、控制邏輯電路、五進制轉換電路、進位電路、個位電路、緩存器、累加器、寄存器、乘積寄存器堆組成。
3.根據(jù)權利要求2所述的根據(jù)任意字長、任意精度的乘法運算方法而設計的乘法器,其特征在于控制邏輯電路由減計數(shù)器[1]、加計數(shù)器[2]、與門[3]、輔助計數(shù)器[4]、[5]和加法器[6]、比較器[7]、[8]、[9]、與門[10]組成,控制Ai、Bj的輸入順序,Cm輸出順序,根據(jù)輸入的控制參數(shù)n、p和時鐘信號ck產(chǎn)生輸入數(shù)據(jù)的固定時鐘信號ck1、乘積位輸出時鐘ck2和計算結束信號stop。
4.根據(jù)權利要求2或3所述的根據(jù)任意字長、任意精度的乘法運算方法而設計的乘法器,其特征在于五進制電路由數(shù)值判定電路[11]、加法單元[12]和控制門[13]組成,把四位二進制a3a2a1a0送入數(shù)值判定電路[11],決定a5a4a3,然后選擇5或10的補碼,送加法單元[12]與原數(shù)相加,得到數(shù)的五進制表示a5a4a3a2a1a0。
5.根據(jù)權利要求4所述的根據(jù)任意字長、任意精度的乘法運算方法而設計的乘法器,其特征在于進位電路由譯碼電路[14]、[15]、[16]、[17]、加法電路[18]、[19]組成。譯碼電路對輸入的Ai、Bj五進制數(shù)譯碼,輸出乘積的百位十位的值。
6.根據(jù)權利要求4所述的根據(jù)任意字長、任意精度的乘法運算方法而設計的乘法器,其特征在于個位電路由譯碼電路[21]、[22]和加法電路[23]組成,譯碼電路[21]、[22]分別對輸入的Ai、Bj的五進制譯碼,加法器[23]的輸出經(jīng)由譯碼電路[24]譯碼,由原操作數(shù)的最低位的”與”,決定是否由加法器[26]加5后輸出。
7.根據(jù)權利要求5或6所述的根據(jù)任意字長、任意精度的乘法運算方法而設計的乘法器,其特征在于所述乘法單元重復設置,將上級乘積寄存器堆和下一級中的一個操作數(shù)寄存器堆互聯(lián)達到多于兩個操作數(shù)連乘的并行處理。
全文摘要
本發(fā)明提供了一種有任意長度、任意精度的乘法運算方法及乘法器。該乘法運算的操作數(shù)以任意長度,各取一位成對由高位到低位有規(guī)律順序輸入,通過轉換電路、進位電路、個位電路、累加器逐位計算,乘積從高位到低位有序輸出,運算由高位開始,可以在任意位終止,因而具有任意精度,提高處理速度。可代替目前使用的浮點乘法器和定點乘法器,運算不需操作數(shù)全部位到齊就開始進行,利于多級連乘的并行運算。
文檔編號G06F7/48GK1122024SQ94114858
公開日1996年5月8日 申請日期1994年8月15日 優(yōu)先權日1994年8月15日
發(fā)明者張胤微 申請人:張胤微