專利名稱:一種異步迭代的多位整型乘法器及其計(jì)算方法
技術(shù)領(lǐng)域:
本發(fā)明屬于64位計(jì)算機(jī)乘法器領(lǐng)域。特別涉及一種異步迭代的64位整型乘法器; 本發(fā)明還包括該乘法器的計(jì)算方法。
背景技術(shù):
乘法器是現(xiàn)代計(jì)算機(jī)的基本組成部分,其性能的高低直接影響到計(jì)算機(jī)的整體運(yùn) 算和處理能力。現(xiàn)有乘法器的數(shù)學(xué)原理比較簡單——掃描乘數(shù)的每一位,產(chǎn)生部分積,然后 將部分積進(jìn)行累加,得到最終的結(jié)果。 上面的例子將5個(gè)部分積同時(shí)相加,需要4 (5-1)個(gè)加法器。這是一種陣列乘法器 的結(jié)構(gòu),η位陣列乘法器需要n-1個(gè)加法器,所需要的硬件較多。為了節(jié)省硬件資源,可以 采用一種迭代的結(jié)構(gòu),將η個(gè)部分積用同一個(gè)加法器進(jìn)行加法運(yùn)算,迭代計(jì)算n-1次,其原 理如下例所示 迭代乘法器需要較少的硬件資源,但是其速度較慢——η位乘法器需要進(jìn)行Π-1 次迭代的加法運(yùn)算。這種劣勢在64位計(jì)算機(jī)中尤其突出,64位乘法器需要63次迭代,用64 位二進(jìn)制能表示的最大無符號自然數(shù)為264-1 = 1844 67440737 0955 1615,18千億億!人 們極少使用如此大的數(shù)字。而人們經(jīng)常使用的數(shù)字完全可以用較少的位數(shù)表示,例如1000 只用10個(gè)二進(jìn)制數(shù)表示即可。但是由于64位CPU采用統(tǒng)一的表達(dá)形式,即使像1000這 樣的數(shù)字也需要用64位表示,即0000... 000 1111101000,前面有54個(gè)0。這樣,即使對于1000這樣較小的數(shù)字,普通的迭代乘法器也需要63次迭代。這63次迭代中,只有前9次有意義,而后54次所產(chǎn)生的部分積都為零。也就是說后54次加法運(yùn)算只是進(jìn)行無謂的加 0運(yùn)算,浪費(fèi)了整個(gè)乘法器的運(yùn)算時(shí)間。隨著計(jì)算機(jī)進(jìn)入到64位時(shí)代,計(jì)算機(jī)每次運(yùn)算的范圍擴(kuò)大了,運(yùn)算能力也增強(qiáng) 了。乘法器作為一個(gè)基本的運(yùn)算單元,性能也急需得到改善。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,設(shè)計(jì)一種能有效節(jié)省運(yùn)算時(shí)間的異步迭 代的多位整型乘法器,本發(fā)明還包括該乘法器的計(jì)算方法。本發(fā)明包括如下技術(shù)特征一種異步迭代的多位整型乘法器,包括一個(gè)用于存放 被乘數(shù)的寄存器R1,一個(gè)用于存放乘數(shù)和中間計(jì)算值的移位寄存器R2,一個(gè)用于進(jìn)行迭代 加法的加法器Al,移位寄存器R2在移位信號R2_CLK的作用下向右移動移位;寄存器Rl和 R2都與初始化信號Req連接;還包括一個(gè)用于檢測乘數(shù)高位零的個(gè)數(shù),從而動態(tài)改變迭代 乘法器累加次數(shù)的加法循環(huán)次數(shù)控制器,所述加法循環(huán)次數(shù)控制器通過移位信號R2_CLK 與移位寄存器R2連接。更進(jìn)一步的,所述循環(huán)次數(shù)控制器包括一個(gè)八分頻電路、一個(gè)八位移位寄存器、或 門連接電路;以及一個(gè)選擇器與門;所述八分頻電路輸入端與加法時(shí)鐘信號連接,其輸出端與八位移位寄存器連接;或門連接電路包括八個(gè)八輸入或門和七個(gè)二輸入或門,所述八個(gè)八輸入或門的輸 入端與乘數(shù)的每個(gè)數(shù)位連接;每一個(gè)八輸入或門的輸出端分別與一個(gè)二輸入或門和八位移 位寄存器連接;所述八位移位寄存器與選擇器與門連接;所述選擇器與門的輸入端為CLK_add信號輸入端和CLK_shif 信號輸入端,所述 CLK_add信號為一個(gè)時(shí)鐘周期可以滿足一次64位的加法運(yùn)算;CLK_shif 信號為不需要做加 法運(yùn)算時(shí),一個(gè)時(shí)鐘周期滿足一次移位操作;所述選擇器與門的輸出端分別連接移位信號 R2.CLK輸出端和64分頻器,所述64分頻器的輸出端為結(jié)果信號端Ack。本發(fā)明還包括一種異步迭代的多位整型乘法器的計(jì)算方法,先是掃描乘數(shù)MR,產(chǎn) 生部分積,然后將部分積進(jìn)行累加,最后得到結(jié)果;還通過一個(gè)循環(huán)次數(shù)控制器檢測乘數(shù)高 位零的個(gè)數(shù),從而動態(tài)改變迭代乘法器累加的次數(shù)。跟進(jìn)一步的,乘法器將64位的乘數(shù)MR按照8位一組分為8組,用一個(gè)八輸入或門 檢測該組是否都為O ;用Zg (7. . 0)表示;Do (i)表示需不需要對第i組進(jìn)行迭代加法運(yùn)算,Do (i)的邏輯關(guān)系為Do(i)= Do (i+1) Zg ⑴,其中 i = 0. . 6,I 表示邏輯或;Do (7) = Zg (7);如果對于第i組,Do(i) = 1,那么當(dāng)j < i,Do(j)都為1 ;即如果一組需要進(jìn)行迭 代運(yùn)算,比它低位的部分積都需要進(jìn)行迭代運(yùn)算;如果對于第i組,Do (i) = 0,那么當(dāng)j > i,Do(j)都為O ;即如果發(fā)現(xiàn)某個(gè)i,第 一次出現(xiàn)Do(i) =0,迭代加法運(yùn)算就結(jié)束了 ;移位寄存器R2的移位信號R2_CLK的間隔時(shí)間由選擇與門控制;如果需要做迭代 加法運(yùn)算,時(shí)間間隔為CLK_add,一個(gè)時(shí)鐘周期可以滿足一次64位的加法運(yùn)算;如果不需要 做加法運(yùn)算,時(shí)間間隔為CLK_shif,一個(gè)時(shí)鐘周期滿足一次移位操作;CLK_shif時(shí)鐘周期是CLK_add時(shí)鐘周期的1/20 ;Do7. . DoO都被放在一個(gè)八位移位寄存器內(nèi);乘法器每做完一組的運(yùn)算,CLK/8使 得八位移位寄存器向右邊移一位;如果八位移位寄存器的最低位為1表示乘數(shù)的下一組仍 然需要運(yùn)算,R2_CLK為CLK_add ;如果Do7. . DoO移位寄存器最低位為0,表示乘數(shù)的下一組以及其它高位的組都為 0,不需要再做迭代加法運(yùn)算,運(yùn)算結(jié)果經(jīng)過多次正確的移位后即可輸出,移位寄存器R2的 移位信號R2_CLK為CLK_shif ; 如果R2_CLK出現(xiàn)了 64個(gè)時(shí)鐘脈沖,表示運(yùn)算結(jié)束;64分頻器將Ack置為1。本發(fā)明與現(xiàn)有技術(shù)相比,采用循環(huán)次數(shù)控制器檢測高位零的個(gè)數(shù),動態(tài)改變迭代 乘法器累加的次數(shù),加快乘法器的速度,使得該乘法器可以節(jié)省大量的運(yùn)算時(shí)間,并且在64 位計(jì)算機(jī)時(shí)代比在32位計(jì)算機(jī)時(shí)代更能發(fā)揮其速度優(yōu)勢。
圖1乘法器輸入輸出接口定義;圖2乘法器內(nèi)部電路結(jié)構(gòu);
具體實(shí)施例方式圖1為乘法器的輸入輸出信號定義MD是64位被乘數(shù)輸入;MR是64位乘數(shù)輸入; CLK_add為乘法器的加法運(yùn)算時(shí)鐘輸入,其時(shí)鐘周期必須滿足一次迭代加法和一次移位的 時(shí)間;CLK_shif為乘法器的移位時(shí)鐘輸入,其時(shí)鐘周期必須滿足一次移位寄存器的移位的 時(shí)間;CLK_shif的時(shí)鐘周期比CLK_add的時(shí)鐘周期小的多,實(shí)驗(yàn)數(shù)據(jù)表明,CLK_shif的時(shí) 鐘周期是CLK_add時(shí)鐘周期的1/20 ;Req為乘法請求的輸入信號。Result是128位結(jié)果輸 出;Ack是乘法器是否完成運(yùn)算的信號輸出。它與外圍電路的接口方式為CLK_add和CLK_ shif由外部時(shí)鐘電路產(chǎn)生,電路啟動就一直有效;外圍電路檢測Ack為0,說明乘法器空閑, 它向乘法器輸出被乘數(shù)MD和乘數(shù)MR,并且將Req信號變?yōu)?,初始化R1、R2和Do7. . DoO移 位寄存器,啟動一次乘法運(yùn)算;乘法器對MD和MR進(jìn)行相乘運(yùn)算,得到結(jié)果Result后將Ack 變?yōu)?,告訴外圍電路乘法完成;外圍電路取走結(jié)果Result,并將Req清0,結(jié)束請求;乘法 器將Ack變0,等待下一次運(yùn)算。圖1顯示的是一種異步握手電路。圖2為乘法器內(nèi)部電路結(jié)構(gòu)。其工作原理如下被乘數(shù)MD放在一個(gè)普通64位寄 存器Rl中;乘數(shù)MR放在一個(gè)128位移位寄存器R2的后64位中;運(yùn)算過程變量和最終結(jié)果 放在R2中。一次乘法運(yùn)算之前必須初始化,使得Rl = MD,R2的前半部分為0,后半部分為 MR0如果Do7. . DoO移位寄存器的最低位為1,做加法迭代運(yùn)算。每次加法迭代運(yùn)算中, R2的最后一位和MD進(jìn)行邏輯與運(yùn)算(and)產(chǎn)生部分積,部分積與R2的前64位進(jìn)行相加, 然后把結(jié)果放回到R2中,隨后R2在移位信號R2_CLK的作用下向右移動移位;準(zhǔn)備進(jìn)行下
一次迭代運(yùn)算。如果Do7. . DoO移位寄存器的最低位為0,不需要做加法迭代運(yùn)算,只需要做移位 操作。每次移位操作,R2在移位信號R2_CLK的作用下向右移一位。一次乘法運(yùn)算由若干次加法迭代運(yùn)算和若干次移位操作組成。加法迭代運(yùn)算和移位操作的總數(shù)為64次。對于普通迭代乘法器,每一次運(yùn)算要進(jìn)行64次迭代加法,哪怕最后進(jìn)行多次加0 的迭代加法運(yùn)算。本乘法器考慮到高位的MR產(chǎn)生的部分積為0,不需要再進(jìn)行加法運(yùn)算,結(jié) 果可以提前給出。為了達(dá)到這個(gè)目的,本乘法器設(shè)計(jì)了 一個(gè)全新的加法循環(huán)次數(shù)控制器。加法循環(huán)次數(shù)控制器是本乘法器的重要組成部分,圖2左邊是新循環(huán)次數(shù)控制器 的結(jié)構(gòu),下面介紹它的工作原理。乘法器將64位的乘數(shù)MR按照8位一組分為8組,用一個(gè)8 輸入或門檢測該組是否都為0 ;用Zg(7. · 0)表示;其中,Zg(7) = 0表示MR[63. · 56]都為0 ; Zg (7) = 1 表示 MR[63. · 56]不全為 0 ;Zg (6)對應(yīng) MR[55..48] ;. . . ;Zg(O)對應(yīng) MR[7..0]。Do (i)表示需不需要對第i組進(jìn)行迭代加法運(yùn)算,Do (i)的邏 輯關(guān)系為Do(i)= Do(i+l)|Zg(i)(ii=0..6,I 表示邏輯或);Do (7) =Zg (7)。如果第 i 組,Do ⑴=1, 那么對于j < i,Do(j)都為1 ;這意味著如果某一組需要進(jìn)行迭代運(yùn)算,比它低位的部分積 都需要進(jìn)行迭代運(yùn)算。如果第i組,Do(i) = 0,那么對于j > i,Do(j)都為O ;這意味著如 果發(fā)現(xiàn)某個(gè)i,第一次出現(xiàn)Do(i) =0,迭代加法運(yùn)算就結(jié)束了。不需要再做迭代加法運(yùn)算, 運(yùn)算結(jié)果經(jīng)過正確的移位后即可輸出。Do7. . DoO的值被放到一個(gè)8位移位寄存器“Do7. . DoO移位寄存器”中,加法循環(huán)次 數(shù)控制器利用Do7. . DoO移位寄存器的最低位控制數(shù)據(jù)通路的時(shí)間間隔,完成不同的操作。 如果最低位為1,數(shù)據(jù)通路做1次加法迭代運(yùn)算和1次移位操作;如果最低位為0,數(shù)據(jù)通路 不需要做加法迭代運(yùn)算只需要做1次移位操作。下面舉例說明乘數(shù)MR = 0000000 00000000 00000000 00000000 00110110 0000000000000000 001010011得至Ij :Zg7 = 0 ;Zg6 = 0 ;Zg5 = 0 ;Zg4 = 0 ;Zg3 = 1 ;Zg2 = 0 ;Zgl = 0 ;ZgO = 1得至Ij :Do7 = 0 ;Do6 = 0 ;Do5 = 0 ;Do4 = 0 ;Do3 = 1 ;Do2 = 1 ;Dol = 1 ;DoO = 1 ;對于這個(gè)乘數(shù),乘法器需要做4組,總共是32次迭代加法運(yùn)算(而傳統(tǒng)方法需要 做64次迭代加法運(yùn)算),和32次移位操作,根據(jù)實(shí)驗(yàn)數(shù)據(jù),1次移位操作的時(shí)間僅僅是加法 運(yùn)算時(shí)間的1/20,利用本方法,只需要一般乘法運(yùn)算時(shí)間52. 5%。
權(quán)利要求
一種異步迭代的多位整型乘法器,包括一個(gè)用于存放被乘數(shù)的寄存器R1,一個(gè)用于存放乘數(shù)和中間計(jì)算值的移位寄存器R2,一個(gè)用于進(jìn)行迭代加法的加法器A1,移位寄存器R2在移位信號R2_CLK的作用下向右移動移位;寄存器R1和R2都與初始化信號Req連接;其特征在于還包括一個(gè)用于檢測乘數(shù)高位零的個(gè)數(shù),從而動態(tài)改變迭代乘法器累加次數(shù)的加法循環(huán)次數(shù)控制器,所述加法循環(huán)次數(shù)控制器通過移位信號R2_CLK與移位寄存器R2連接。
2.根據(jù)權(quán)利要求1所述的異步迭代的多位整型乘法器,其特征在于所述循環(huán)次數(shù)控制 器包括一個(gè)八分頻電路、一個(gè)八位移位寄存器、或門連接電路;以及一個(gè)選擇器與門;所述八分頻電路輸入端與加法時(shí)鐘信號連接,其輸出端與八位移位寄存器連接; 或門連接電路包括八個(gè)八輸入或門和七個(gè)二輸入或門,所述八個(gè)八輸入或門的輸入端 與乘數(shù)的每個(gè)數(shù)位連接;每一個(gè)八輸入或門的輸出端分別與一個(gè)二輸入或門和八位移位寄 存器連接;所述八位移位寄存器與選擇器與門連接;所述選擇器與門的輸入端為CLK_add信號輸入端和CLK_shif信號輸入端,所述CLK_ add信號為一個(gè)時(shí)鐘周期可以滿足一次64位的加法運(yùn)算;CLK_shif 信號為不需要做加法運(yùn) 算時(shí),一個(gè)時(shí)鐘周期滿足一次移位操作;所述選擇器與門的輸出端分別連接移位信號R2_ CLK輸出端和64分頻器,所述64分頻器的輸出端為結(jié)果信號端Ack。
3.根據(jù)權(quán)利要求2所述異步迭代的多位整型乘法器的計(jì)算方法,先是掃描乘數(shù)MR,產(chǎn) 生部分積,然后將部分積進(jìn)行累加,最后得到結(jié)果;其特征在于還通過一個(gè)循環(huán)次數(shù)控制 器檢測乘數(shù)高位零的個(gè)數(shù),從而動態(tài)改變迭代乘法器累加的次數(shù)。
4.根據(jù)權(quán)利要求3所述的異步迭代的多位整型乘法器的計(jì)算方法,其特征在于乘法 器將64位的乘數(shù)MR按照8位一組分為8組,用一個(gè)八輸入或門檢測該組是否都為0 ;用 Zg(i),i = 0. 6 表示;Do(i)表示需不需要對第i組進(jìn)行迭代加法運(yùn)算,Do(i)的邏輯關(guān)系為Do(i)= Do (i+1) Zg ⑴,其中 i = 0. . 6,| 表示邏輯或;Do (7) = Zg (7);如果對于第i組,Do(i) = 1,那么當(dāng)j < i,Do(j)都為1 ;即如果一組需要進(jìn)行迭代運(yùn) 算,比它低位的部分積都需要進(jìn)行迭代運(yùn)算;如果對于第i組,Do(i) = 0,那么當(dāng)j > i,Do(j)都為0 ;即如果發(fā)現(xiàn)某個(gè)i,第一次 出現(xiàn)Do(i) = 0,迭代加法運(yùn)算就結(jié)束了 ;移位寄存器R2的移位信號R2_CLK的間隔時(shí)間由選擇與門控制;如果需要做迭代加法 運(yùn)算,時(shí)間間隔為CLK_add,一個(gè)時(shí)鐘周期可以滿足一次64位的加法運(yùn)算;如果不需要做 加法運(yùn)算,時(shí)間間隔為CLK_shif,一個(gè)時(shí)鐘周期滿足一次移位操作;CLK_shif時(shí)鐘周期是 CLK_add時(shí)鐘周期的1/20 ;Do7. . DoO都被放在一個(gè)八位移位寄存器內(nèi);乘法器每做完一組的運(yùn)算,CLK/8使得八 位移位寄存器向右邊移一位;如果八位移位寄存器的最低位為1表示乘數(shù)的下一組仍然需 要運(yùn)算,R2_CLK 為 CLK_add ;如果Do7. . DoO移位寄存器最低位為0,表示乘數(shù)的下一組以及其它高位的組都為0,不 需要再做迭代加法運(yùn)算,運(yùn)算結(jié)果經(jīng)過多次正確的移位后即可輸出,移位寄存器R2的移位 信號 R2_CLK 為 CLK_shif ;如果R2_CLK出現(xiàn)了 64個(gè)時(shí)鐘脈沖,表示運(yùn)算結(jié)束;64分頻器將Ack置為1。
全文摘要
本發(fā)明屬于64位計(jì)算機(jī)乘法器領(lǐng)域。特別涉及一種異步迭代的64位整型乘法器一種異步迭代的多位整型乘法器及其計(jì)算方法。本發(fā)明電路包括一個(gè)用于存放被乘數(shù)的寄存器R1,一個(gè)用于存放乘數(shù)和中間計(jì)算值的移位寄存器R2,一個(gè)用于進(jìn)行迭代加法的加法器A1,移位寄存器R2在移位信號R2_CLK的作用下向右移動移位;寄存器R1和R2都與初始化信號Req連接;還包括一個(gè)用于檢測乘數(shù)高位零的個(gè)數(shù),從而動態(tài)改變迭代乘法器累加次數(shù)的加法循環(huán)次數(shù)控制器,所述加法循環(huán)次數(shù)控制器通過移位信號R2_CLK與移位寄存器R2連接。本發(fā)明采用循環(huán)次數(shù)控制器檢測高位零的個(gè)數(shù),動態(tài)改變迭代乘法器累加的次數(shù),加快乘法器的速度,使得該乘法器可以節(jié)省大量的運(yùn)算時(shí)間。
文檔編號G06F7/523GK101866278SQ20101020472
公開日2010年10月20日 申請日期2010年6月18日 優(yōu)先權(quán)日2010年6月18日
發(fā)明者劉怡俊 申請人:廣東工業(yè)大學(xué)