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