專利名稱:結(jié)構(gòu)化混合位寬乘法運算方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器涉及領(lǐng)域,具體涉及一種實現(xiàn)結(jié)構(gòu)化混合位寬乘法運算的方法及裝置。
背景技術(shù):
乘法器是現(xiàn)代微處理器的關(guān)鍵運算部件,單位時間內(nèi)完成的乘法運算次數(shù)是衡量微處理器性能的一個重要指標(biāo)。不同的運算類型,對乘法器的位寬有不同的需求。在科學(xué)計算中,32位和64位是基本的要求,因此在高性能微處理器中一般都設(shè)置專門硬件直接支持32位或64位的乘法操作。在多媒體和通信類應(yīng)用中,大部分運算類型是8位和16位的。 為了提高小位寬數(shù)據(jù)處理的能力,許多處理器都增加了 SMD指令。SMD指令一次可以對多個數(shù)據(jù)做同樣的操作,大大提高了小位寬運算的處理能力。SMD在硬件實現(xiàn)上有兩種方式,一種是設(shè)置專門的SMD部件,該部件僅能執(zhí)行SMD操作,如PentumII中的MMX部件; 另一種是對原先的運算部件進(jìn)行改進(jìn),使其既保持原先的運算能力,又具備新的執(zhí)行SIMD 操作的能力,如Intel XScale 。后一種實現(xiàn)方法,不需要對體系結(jié)構(gòu)進(jìn)行大的改動,就可使其多媒體數(shù)據(jù)處理能力提高一倍,因此在DSP等嵌入式微處理器設(shè)計中得到了廣泛的應(yīng)用,如TI公司和AD公司最新的DSP乘法器的設(shè)計均采用了這種方法。
為了實現(xiàn)混合位寬乘法運算,現(xiàn)有技術(shù)包括兩種方法一種直接的實現(xiàn)方法是設(shè)置多個乘法器,該方法的缺點是硬件開銷大;另一種方法是采用流水技術(shù),如Intel XScale , 它的缺點是提高了 CPI,即單拍內(nèi)完成的指令數(shù)。因此,高性能、低功耗微處理器設(shè)計迫切需要一種高效的混合位寬乘法器設(shè)計技術(shù)。而且現(xiàn)在常用的乘法器一般包括布斯譯碼、部分積產(chǎn)生、部分積壓縮三部分。布斯譯碼首先將乘數(shù)進(jìn)行譯碼,產(chǎn)生控制信號控制被乘數(shù)產(chǎn)生部分積,然后將部分積送入壓縮陣列相加產(chǎn)生最后的乘積。部分積壓縮陣列一般采用華萊士樹結(jié)構(gòu),為了縮短連線,在布局時通常將同位權(quán)的壓縮模塊放在同一列,最后得到的版圖一般是平行四邊形的形狀,因此在面積上有一定的浪費,當(dāng)乘法器位寬很大時,面積浪費更為嚴(yán)重。為了改善乘法器版圖的面積利用率,需要對乘法器進(jìn)行新的設(shè)計。在全定制乘法器版圖實現(xiàn)時,一種位寬的操作數(shù)對應(yīng)一種部分積壓縮陣列結(jié)構(gòu),當(dāng)輸入的位寬改變時, 需要對壓縮陣列進(jìn)行調(diào)整甚至重新設(shè)計,版圖的復(fù)用率不高。全定制設(shè)計可以很好的提高設(shè)計性能,但實現(xiàn)的過程是相當(dāng)耗時的,為了提高乘法器的設(shè)計效率,也需要對乘法器的實現(xiàn)算法進(jìn)行探索。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種硬件利用率及面積利用率高、運算速度快、 硬件開銷小、得到版圖規(guī)整、結(jié)構(gòu)簡單的結(jié)構(gòu)化混合位寬乘法運算方法及裝置。為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為
一種結(jié)構(gòu)化混合位寬乘法運算方法,其實施步驟如下
I)輸入乘數(shù)、被乘數(shù)以及包含運算類型、符號位的運算控制信號;
42)根據(jù)所述運算類型對乘數(shù)、被乘數(shù)進(jìn)行拆分,根據(jù)所述符號位對拆分后的被乘數(shù)進(jìn)行符號位擴(kuò)展;
3 )將拆分和符號位擴(kuò)展后的乘數(shù)、被乘數(shù)分別送入兩個M X N乘法器進(jìn)行布斯譯碼、部分積生成,并對所有MXN乘法器生成的部分積分別進(jìn)行壓縮;
4)根據(jù)所述運算控制信號中的運算類型和符號位生成修正值;
5)將所述步驟3)壓縮得到的所有輸出結(jié)果與所述步驟4)得到的修正值進(jìn)行壓縮得到乘法結(jié)果。作為本發(fā)明結(jié)構(gòu)化混合位寬乘法運算方法的進(jìn)一步改進(jìn)
所述步驟I)中的運算類型包括I個MX 2N乘法運算和2個(M/2) XN乘法運算。所述步驟2)中根據(jù)運算類型對乘數(shù)、被乘數(shù)進(jìn)行拆分的詳細(xì)步驟包括如果運算類型為I個MX 2N乘法運算,則將乘數(shù)拆分為高位乘數(shù)部分和低位乘數(shù)部分,被乘數(shù)保持不變;如果運算類型為2個(M/2) XN乘法運算,則將乘數(shù)拆分為高位乘數(shù)部分和低位乘數(shù)部分,并將M位被乘數(shù)拆分為均為M/2位的高位被乘數(shù)部分和低位被乘數(shù)部分。所述步驟2)中根據(jù)所述符號位對拆分后的被乘數(shù)進(jìn)行符號位擴(kuò)展的詳細(xì)步驟包括如果所述運算類型為實現(xiàn)I個MX 2N乘法運算,則被乘數(shù)保持不變;如果所述運算類型為實現(xiàn)2個(M/2) XN乘法運算,則將高位被乘數(shù)部分的低位擴(kuò)展0,將低位乘數(shù)部分做符號擴(kuò)展。所述步驟3)中將拆分和符號位擴(kuò)展后的乘數(shù)、被乘數(shù)分別送入兩個MXN乘法器具體是指如果所述運算類型為實現(xiàn)I個MX 2N乘法運算,則將高位乘數(shù)部分和被乘數(shù)送入一個MXN乘法器,將低位乘數(shù)部分和被乘數(shù)送入另一個MXN乘法器;如果所述運算類型為實現(xiàn)2個(M/2) XN乘法運算,則低位擴(kuò)展O后的高位被乘數(shù)部分和被乘數(shù)送入一個MXN 乘法器,將符號擴(kuò)展后的低位乘數(shù)部分和被乘數(shù)送入另一個MXN乘法器。所述步驟4)中根據(jù)所述運算控制信號中的運算類型和符號位生成修正值的詳細(xì)步驟包括如果所述運算類型為實現(xiàn)I個MX 2N乘法運算,則生成修正值為O ;如果所述運算類型為實現(xiàn)2個(M/2) XN乘法運算,且所述符號擴(kuò)展后的低位乘數(shù)部分和被乘數(shù)的運算結(jié)果為負(fù)數(shù),則生成修正值的(M/2) +N位為I,其余位為O。所述步驟3)中對所有MXN乘法器生成的部分積進(jìn)行壓縮的具體步驟包括首先將所有MXN乘法器生成的部分積按照陣列或者樹形排列,然后將所述排列中每一位上的多個部分積進(jìn)行壓縮得到以冗余表示方式的結(jié)果。本發(fā)明還包括一種結(jié)構(gòu)化混合位寬乘法運算裝置,包括用于根據(jù)運算控制信號將輸入的乘數(shù)、被乘數(shù)進(jìn)行拆分以及符號位擴(kuò)展的操作數(shù)選擇擴(kuò)展單元、第一 MXN乘法器、 第二 MXN乘法器、用于修正乘法運算結(jié)果中低位乘法符號位的修正單元、用于將修正單元輸出的修正值與乘法運算的結(jié)果進(jìn)行壓縮得到乘法結(jié)果的最終乘積運算單元,所述操作數(shù)選擇擴(kuò)展單元分別通過第一 MXN乘法器、第二 MXN乘法器、修正單元與所述最終乘積運算單元相連。作為本發(fā)明結(jié)構(gòu)化混合位寬乘法運算裝置的進(jìn)一步改進(jìn)
所述第一 MXN乘法器和第二 MXN乘法器為結(jié)構(gòu)相同的乘法器模塊,所述乘法器模塊包括依次串聯(lián)的布斯譯碼模塊、部分積產(chǎn)生模塊、部分積壓縮模塊,所述布斯譯碼模塊的輸入端與操作數(shù)選擇擴(kuò)展單元相連,所述部分積壓縮模塊的輸出端與最終乘積運算單元相連。所述部分積壓縮模塊包括用于存儲所述部分積產(chǎn)生模塊輸出部分積的部分積存儲結(jié)構(gòu)和用于將部分積存儲結(jié)構(gòu)中存儲的部分積壓縮處理的壓縮處理邏輯,所述部分積存儲結(jié)構(gòu)的輸入端與所述部分積產(chǎn)生模塊相連,所述部分積存儲結(jié)構(gòu)的輸出端通過壓縮處理邏輯與所述最終乘積運算單元相連,所述部分積存儲結(jié)構(gòu)為樹形結(jié)構(gòu)或者陣列結(jié)構(gòu)。本發(fā)明結(jié)構(gòu)化混合位寬乘法運算方法具有下述優(yōu)點
I、本發(fā)明通過根據(jù)運算類型對操作數(shù)進(jìn)行拆分以及符號位擴(kuò)展、根據(jù)運算控制信號中的運算類型和符號位生成修正值,并將MXN乘法器輸出的結(jié)果與修正值進(jìn)行壓縮得到乘法結(jié)果,能夠通過同一套硬件實現(xiàn)2個(M/2) XN或I個MX2N兩種位寬的乘法運算,硬件資源的利用率高、硬件開銷小。2、本發(fā)明的主體結(jié)構(gòu)是2個MX N乘法器,MX N乘法器的設(shè)計復(fù)雜性要比與MX 2N 乘法器低許多,本發(fā)明能夠通過2個MXN乘法器來構(gòu)建MX2N乘法器,具有結(jié)構(gòu)簡單、得到版圖規(guī)整、面積利用率更高的優(yōu)點。3、本發(fā)明單個MXN乘法器內(nèi)部可只對部分積進(jìn)行第一次壓縮,然后將壓縮后的結(jié)果輸出繼續(xù)進(jìn)行第二次壓縮,能夠有效提升乘法器的乘法運算速度。本發(fā)明結(jié)構(gòu)化混合位寬乘法運算裝置由于具有結(jié)構(gòu)化混合位寬乘法運算方法對應(yīng)的結(jié)構(gòu),因此也具有硬件資源的利用率高、運算速度快、硬件開銷小、結(jié)構(gòu)簡單、面積利用率更高的優(yōu)點;本發(fā)明部分積壓縮模塊進(jìn)一步包括用于存儲所述部分積產(chǎn)生模塊輸出部分積的部分積存儲結(jié)構(gòu)和用于將部分積存儲結(jié)構(gòu)中存儲的部分積壓縮處理的壓縮處理邏輯, 且部分積存儲結(jié)構(gòu)為樹形結(jié)構(gòu)或者陣列結(jié)構(gòu),得到的版圖更加規(guī)整。
圖I為本發(fā)明實施例結(jié)構(gòu)化混合位寬乘法運算方法的流程示意圖。圖2是本發(fā)明實施例MXN乘法器部分積的壓縮原理示意圖。圖3為本發(fā)明實施例結(jié)構(gòu)化混合位寬乘法運算裝置的框架結(jié)構(gòu)示意圖。圖4是本發(fā)明實施例實現(xiàn)I個MX2N乘法的流程示意圖。圖5是本發(fā)明實施例實現(xiàn)2個(M/2) XN乘法的流程示意圖。圖例說明1、操作數(shù)選擇擴(kuò)展單元;21、第一 MXN乘法器;22、第二 MXN乘法器; 23、布斯譯碼模塊;24、部分積產(chǎn)生模塊;25、部分積壓縮模塊;3、修正單元;4、最終乘積運算單元。
具體實施例方式如圖I所示,本實施例結(jié)構(gòu)化混合位寬乘法運算方法的實施步驟如下
1)輸入乘數(shù)、被乘數(shù)以及包含運算類型、符號位的運算控制信號;
2)根據(jù)運算類型對乘數(shù)、被乘數(shù)進(jìn)行拆分,根據(jù)符號位對拆分后的被乘數(shù)進(jìn)行符號位擴(kuò)展;
3 )將拆分和符號位擴(kuò)展后的乘數(shù)、被乘數(shù)分別送入兩個M X N乘法器進(jìn)行布斯譯碼、部分積生成,并對所有MXN乘法器生成的部分積分別進(jìn)行壓縮;
4)根據(jù)運算控制信號中的運算類型和符號位生成修正值;5)將步驟3)壓縮得到的所有輸出結(jié)果與步驟4)得到的修正值進(jìn)行壓縮得到乘法結(jié)
果O本實施例中共包含兩次壓縮過程,第一次壓縮是在步驟3)中完成的,其壓縮對象是部分積;第二次壓縮是在步驟5)中完成的,其壓縮對象是所有第一次壓縮輸出的結(jié)果以及步驟4)產(chǎn)生的修正值,其輸出的結(jié)果為最終得到的乘法結(jié)果。步驟I)中的運算類型包括I個M X 2N乘法運算和2個(M/2) X N乘法運算。步驟2)中根據(jù)運算類型對乘數(shù)、被乘數(shù)進(jìn)行拆分的詳細(xì)步驟包括如果運算類型為I個MX 2N乘法運算,則將乘數(shù)拆分為高位乘數(shù)部分和低位乘數(shù)部分,被乘數(shù)保持不變; 如果運算類型為2個(M/2) XN乘法運算,則將乘數(shù)拆分為高位乘數(shù)部分和低位乘數(shù)部分, 并將M位被乘數(shù)拆分為均為M/2位的高位被乘數(shù)部分和低位被乘數(shù)部分。步驟2)中根據(jù)符號位對拆分后的被乘數(shù)進(jìn)行符號位擴(kuò)展的詳細(xì)步驟包括如果運算類型為實現(xiàn)I個MX2N 乘法運算,則被乘數(shù)保持不變;如果運算類型為實現(xiàn)2個(M/2) XN乘法運算,則將高位被乘數(shù)部分的低位擴(kuò)展0,將低位乘數(shù)部分做符號擴(kuò)展。步驟3)中將拆分和符號位擴(kuò)展后的乘數(shù)、被乘數(shù)分別送入兩個MXN乘法器具體是指如果運算類型為實現(xiàn)I個MX 2N乘法運算,則將高位乘數(shù)部分和被乘數(shù)送入一個 MXN乘法器,將低位乘數(shù)部分和被乘數(shù)送入另一個MXN乘法器;如果運算類型為實現(xiàn)2個 (M/2) XN乘法運算,則低位擴(kuò)展O后的高位被乘數(shù)部分和被乘數(shù)送入一個MXN乘法器,將符號擴(kuò)展后的低位乘數(shù)部分和被乘數(shù)送入另一個MXN乘法器。本實施例步驟3)中對所有 MXN乘法器生成的部分積進(jìn)行壓縮的具體步驟包括首先將所有MXN乘法器生成的部分積按照陣列或者樹形排列,然后將排列中每一位上的多個部分積進(jìn)行壓縮得到以冗余表示方式的結(jié)果。如圖2所示,21B為拆分后的乘數(shù)經(jīng)過布斯譯碼可得到的部分積的控制信號, 由該控制信號可產(chǎn)生部分積陣列21C,在壓縮時采用3-2壓縮或者4-2壓縮的方法將排列中每一位上的多個部分積進(jìn)行壓縮得到以冗余表示方式的結(jié)果21D。其中S為標(biāo)識符號的冗余位,當(dāng)部分積為正時S=0,當(dāng)部分積為負(fù)時S=l。E為符號擴(kuò)展位,當(dāng)被乘數(shù)與部分積符號異號時或部分積為-OX被乘數(shù)時E=0,當(dāng)被乘數(shù)與部分積同號時或部分積為+OX被乘數(shù)時 E=I0由該壓縮陣列形狀可知,可以將兩邊的部分積壓縮模塊在版圖設(shè)計時放在一起構(gòu)成一列,以此來使壓縮陣列更加規(guī)整,從而得到的版圖更加規(guī)整。此外,部分積按照樹形排列同樣也可以達(dá)到使壓縮陣列更加規(guī)整、得到的版圖更加規(guī)整的技術(shù)效果。步驟4)中根據(jù)運算控制信號中的運算類型和符號位生成修正值的詳細(xì)步驟包括 如果運算類型為實現(xiàn)I個MX 2N乘法運算,則生成修正值為O ;如果運算類型為實現(xiàn)2個 (M/2) XN乘法運算,且符號擴(kuò)展后的低位乘數(shù)部分和被乘數(shù)的運算結(jié)果為負(fù)數(shù),則生成修正值的(M/2) + N位為I,其余位為O。如圖3所示,本實施例結(jié)構(gòu)化混合位寬乘法運算裝置包括用于根據(jù)運算控制信號將輸入的乘數(shù)、被乘數(shù)進(jìn)行拆分以及符號位擴(kuò)展的操作數(shù)選擇擴(kuò)展單元I、第一 MXN乘法器21、第二 MXN乘法器22、用于修正乘法運算結(jié)果中低位乘法符號位的修正單元3、用于將修正單元3輸出的修正值與乘法運算的結(jié)果進(jìn)行壓縮得到乘法結(jié)果的最終乘積運算單元4,操作數(shù)選擇擴(kuò)展單元I分別通過第一 MXN乘法器21、第二 MXN乘法器22、修正單元 3與最終乘積運算單元4相連。本實施例的第一MXN乘法器21和第二MXN乘法器22為結(jié)構(gòu)相同的乘法器模塊,該乘法器模塊包括依次串聯(lián)的布斯譯碼模塊23、部分積產(chǎn)生模塊24、部分積壓縮模塊25, 布斯譯碼模塊23的輸入端與操作數(shù)選擇擴(kuò)展單元I相連,部分積壓縮模塊25的輸出端與最終乘積運算單元4相連。本實施例的第一次壓縮是由部分積壓縮模塊25在步驟3)中完成的,第二次壓縮是由最終乘積運算單元4在步驟5)中完成的。本實施例中,部分積壓縮模塊25包括用于存儲部分積產(chǎn)生模塊24輸出部分積的部分積存儲結(jié)構(gòu)和用于將部分積存儲結(jié)構(gòu)中存儲的部分積壓縮處理的壓縮處理邏輯,部分積存儲結(jié)構(gòu)的輸入端與部分積產(chǎn)生模塊24相連,部分積存儲結(jié)構(gòu)的輸出端通過壓縮處理邏輯與最終乘積運算單元4相連,部分積存儲結(jié)構(gòu)為樹形結(jié)構(gòu)或者陣列結(jié)構(gòu)。本實施例中,部分積存儲結(jié)構(gòu)為陣列結(jié)構(gòu),最終乘積運算單元4也為陣列結(jié)構(gòu)。參照圖2,本實施例中部分積存儲結(jié)構(gòu)為陣列結(jié)構(gòu)能夠使壓縮陣列更加規(guī)整、得到的版圖更加規(guī)整的技術(shù)效果;此外,部分積存儲結(jié)構(gòu)為樹形結(jié)構(gòu)同樣也可以達(dá)到使壓縮陣列更加規(guī)整、得到的版圖更加規(guī)整的技術(shù)效果。如圖I和圖3所示,運算類型控制信號IOC用于標(biāo)示當(dāng)前乘法是I個MX 2N的普通乘法還是2個(M/2) XN的SIMD乘法、同時標(biāo)示當(dāng)前乘法是有符號乘法還是無符號乘法; 被乘數(shù)IOA和乘數(shù)IOB的位寬分別為M和2N。操作數(shù)選擇擴(kuò)展單元I首先將被乘數(shù)IOA和乘數(shù)IOB進(jìn)行分拆得到I IAUlBU 1C、IID ;拆分后的被乘數(shù)11A、IIC分別與乘數(shù)I IB、IID組合送入第一 MXN乘法器21和第二 MXN乘法器22進(jìn)行布斯譯碼、部分積產(chǎn)生和一級部分積壓縮操作。第一 MXN乘法器21和第二 MXN乘法器22共產(chǎn)生兩組壓縮后的結(jié)果21A、 22k,同時修正單元3產(chǎn)生一個修正值3A,一并送入最終乘積運算單元4進(jìn)行繼續(xù)壓縮得到乘法結(jié)果。操作數(shù)選擇模塊根據(jù)運算類型控制信號,當(dāng)執(zhí)行一個MX2N的普通乘法時,將位寬為2N的乘數(shù)IOC分拆為兩個位寬為N的乘數(shù)I IB、11D,如果當(dāng)前是有符號乘法,將分拆后的乘數(shù)做符號擴(kuò)展,否則擴(kuò)展O ;當(dāng)執(zhí)行兩個(M/2) XN的SIMD乘法時,由于硬件復(fù)用,被乘數(shù)輸入位置仍為一個位寬為M的數(shù),此時要將位寬為M的被乘數(shù)分別提取高(M/2)位和低 (M/2)位,高(M/2)被乘數(shù)向低位擴(kuò)展(M/2)位個O形成一個新的位寬為M的被乘數(shù)11A, 低(M/2)位被乘數(shù)根據(jù)當(dāng)前乘法是否為有符號乘法向高位做符號擴(kuò)展或O擴(kuò)展形成新的位寬為M的被乘數(shù)11C。如圖4所示,實現(xiàn)I個MX2N乘法(普通乘法)運算過程中,Srcl和Src2分別為位寬為M和2N的被乘數(shù)和乘數(shù),這種情況下不需要修正,因此修正單元3輸出的修正值為 O。步驟2)中,乘數(shù)Srcl保持不變,2N位的被乘數(shù)Src2拆分為均為N位的高位被乘數(shù)部分(Src2_H)和低位被乘數(shù)部分(Src2_L)。步驟3)中,Srcl與Src2_H—起送入第一 MXN 乘法器21 (高位MXN乘法器)得到高位部分積21A,Srcl與Src2_L送入第二 MXN乘法器 22 (低位MXN乘法器)得到低位部分積22A,如果當(dāng)前為有符號乘法,低位部分積22A需向高位擴(kuò)展N位個符號位得到22B,否則22A直接擴(kuò)展O得到22B,然后22B與高位部分積21A 送入最終乘積運算單元4進(jìn)行繼續(xù)壓縮得到乘法結(jié)果4A。如圖5所示,實現(xiàn)2個(M/2) XN乘法(SMD乘法)運算過程中,Srcl為被乘數(shù), Src2為乘數(shù)。步驟2)中,乘數(shù)Srcl拆分為高位乘數(shù)部分(Src 1_H)和低位乘數(shù)部分(Src 1_ L),被乘數(shù)Src2拆分為均為M/2位的高位被乘數(shù)部分(Src2_H)和低位被乘數(shù)部分(Src2_ L);然后Srcl_H向低位擴(kuò)展0,Src 1_L做符號擴(kuò)展,向高位擴(kuò)展符號位或O。步驟3)中,低位擴(kuò)展O后的Src 1_H與Src2_H —起送入第一 MXN乘法器21 (高位MXN乘法器),符號擴(kuò)展后Src 1_L與Src2_L送入第二 MX N乘法器22 (低位MX N乘法器),第一 MX N乘法器21運算得到高位部分積21A,第二 MXN乘法器22運算得到低位部分積22A。由于SIMD乘法和普通的乘法共用了該乘法器結(jié)構(gòu),所以低位部分積22A同樣會根據(jù)當(dāng)前是否為有符號乘法做符號位擴(kuò)展,這樣就會影響高位的SIMD乘法得到正確的結(jié)果。當(dāng)22A為負(fù)數(shù)時,亦即 Src 1_L與Src2_L符號相反時,需要對該情況修正。此種情況下修正單元3生成的修正值的第(M/2) + N位為1,其余位為O。如果當(dāng)前為有符號乘法,低位部分積22A需向高位擴(kuò)展N位個符號位得到22B,否則22A直接擴(kuò)展O得到22B,這樣高位部分積21A和擴(kuò)展后的低位部分積22B以及修正值3A —起送入最終乘積運算單元4完成最后的乘積計算(第二次壓縮),最終得到兩個(M/2) X N乘法的乘法結(jié)果4A。 以上所述僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種結(jié)構(gòu)化混合位寬乘法運算方法,其特征在于其實施步驟如下1)輸入乘數(shù)、被乘數(shù)以及包含運算類型、符號位的運算控制信號;2)根據(jù)所述運算類型對乘數(shù)、被乘數(shù)進(jìn)行拆分,根據(jù)所述符號位對拆分后的被乘數(shù)進(jìn)行符號位擴(kuò)展;3 )將拆分和符號位擴(kuò)展后的乘數(shù)、被乘數(shù)分別送入兩個M X N乘法器進(jìn)行布斯譯碼、部分積生成,并對所有MXN乘法器生成的部分積分別進(jìn)行壓縮;4)根據(jù)所述運算控制信號中的運算類型和符號位生成修正值;5)將所述步驟3)壓縮得到的所有輸出結(jié)果與所述步驟4)得到的修正值進(jìn)行壓縮得到乘法結(jié)果。
2.根據(jù)權(quán)利要求I所述的結(jié)構(gòu)化混合位寬乘法運算方法,其特征在于所述步驟I)中的運算類型包括I個MX 2N乘法運算和2個(M/2) XN乘法運算。
3.根據(jù)權(quán)利要求2所述的結(jié)構(gòu)化混合位寬乘法運算方法,其特征在于,所述步驟2)中根據(jù)運算類型對乘數(shù)、被乘數(shù)進(jìn)行拆分的詳細(xì)步驟包括如果所述運算類型為I個MX 2N乘法運算,則將乘數(shù)拆分為高位乘數(shù)部分和低位乘數(shù)部分,被乘數(shù)保持不變;如果所述運算類型為2個(M/2) XN乘法運算,則將乘數(shù)拆分為高位乘數(shù)部分和低位乘數(shù)部分,并將M位被乘數(shù)拆分為均為M/2位的高位被乘數(shù)部分和低位被乘數(shù)部分。
4.根據(jù)權(quán)利要求3所述的結(jié)構(gòu)化混合位寬乘法運算方法,其特征在于,所述步驟2)中根據(jù)所述符號位對拆分后的被乘數(shù)進(jìn)行符號位擴(kuò)展的詳細(xì)步驟包括如果所述運算類型為實現(xiàn)I個MX 2N乘法運算,則被乘數(shù)保持不變;如果所述運算類型為實現(xiàn)2個(M/2) XN乘法運算,則將高位被乘數(shù)部分的低位擴(kuò)展0,將低位乘數(shù)部分做符號擴(kuò)展。
5.根據(jù)權(quán)利要求4所述的結(jié)構(gòu)化混合位寬乘法運算方法,其特征在于,所述步驟3)中將拆分和符號位擴(kuò)展后的乘數(shù)、被乘數(shù)分別送入兩個MXN乘法器具體是指如果所述運算類型為實現(xiàn)I個MX 2N乘法運算,則將高位乘數(shù)部分和被乘數(shù)送入一個MXN乘法器,將低位乘數(shù)部分和被乘數(shù)送入另一個MXN乘法器;如果所述運算類型為實現(xiàn)2個(M/2) XN乘法運算,則低位擴(kuò)展O后的高位被乘數(shù)部分和被乘數(shù)送入一個MXN乘法器,將符號擴(kuò)展后的低位乘數(shù)部分和被乘數(shù)送入另一個MXN乘法器。
6.根據(jù)權(quán)利要求5所述的結(jié)構(gòu)化混合位寬乘法運算方法,其特征在于所述步驟4) 中根據(jù)所述運算控制信號中的運算類型和符號位生成修正值的詳細(xì)步驟包括如果所述運算類型為實現(xiàn)I個MX 2N乘法運算,則生成修正值為O ;如果所述運算類型為實現(xiàn)2個 (M/2) XN乘法運算,且所述符號擴(kuò)展后的低位乘數(shù)部分和被乘數(shù)的運算結(jié)果為負(fù)數(shù),則生成修正值的(M/2) + N位為I,其余位為O。
7.根據(jù)權(quán)利要求I 6中任意一項所述的結(jié)構(gòu)化混合位寬乘法運算方法,其特征在于,所述步驟3)中對所有MXN乘法器生成的部分積進(jìn)行壓縮的具體步驟包括首先將所有 MXN乘法器生成的部分積按照陣列或者樹形排列,然后將所述排列中每一位上的多個部分積進(jìn)行壓縮得到以冗余表示方式的結(jié)果。
8.—種結(jié)構(gòu)化混合位寬乘法運算裝置,其特征在于包括用于根據(jù)運算控制信號將輸入的乘數(shù)、被乘數(shù)進(jìn)行拆分以及符號位擴(kuò)展的操作數(shù)選擇擴(kuò)展單元(I)、第一 MXN乘法器(21)、第二 MXN乘法器(22)、用于修正乘法運算結(jié)果中低位乘法符號位的修正單元(3)、用于將修正單元(3)輸出的修正值與乘法運算的結(jié)果進(jìn)行壓縮得到乘法結(jié)果的最終乘積運算單元(4),所述操作數(shù)選擇擴(kuò)展單元(I)分別通過第一 MXN乘法器(21)、第二 MXN乘法器(22)、修正單元(3)與所述最終乘積運算單元(4)相連。
9.根據(jù)權(quán)利要求8所述的結(jié)構(gòu)化混合位寬乘法運算裝置,其特征在于所述第一MXN 乘法器(21)和第二 MX N乘法器(22 )為結(jié)構(gòu)相同的乘法器模塊,所述乘法器模塊包括依次串聯(lián)的布斯譯碼模塊(23)、部分積產(chǎn)生模塊(24)、部分積壓縮模塊(25),所述布斯譯碼模塊(23 )的輸入端與操作數(shù)選擇擴(kuò)展單元(I)相連,所述部分積壓縮模塊(25 )的輸出端與最終乘積運算單元(4)相連。
10.根據(jù)權(quán)利要求9所述的結(jié)構(gòu)化混合位寬乘法運算裝置,其特征在于所述部分積壓縮模塊(25)包括用于存儲所述部分積產(chǎn)生模塊(24)輸出部分積的部分積存儲結(jié)構(gòu)和用于將部分積存儲結(jié)構(gòu)中存儲的部分積壓縮處理的壓縮處理邏輯,所述部分積存儲結(jié)構(gòu)的輸入端與所述部分積產(chǎn)生模塊(24)相連,所述部分積存儲結(jié)構(gòu)的輸出端通過壓縮處理邏輯與所述最終乘積運算單元(4)相連,所述部分積存儲結(jié)構(gòu)為樹形結(jié)構(gòu)或者陣列結(jié)構(gòu)。
全文摘要
本發(fā)明公開了一種結(jié)構(gòu)化混合位寬乘法運算方法及裝置,方法包括1)輸入乘數(shù)、被乘數(shù)以及運算控制信號;2)對乘數(shù)、被乘數(shù)進(jìn)行拆分和符號位擴(kuò)展;3)將乘數(shù)、被乘數(shù)分別送入兩個M×N乘法器進(jìn)行布斯譯碼、部分積生成,并對部分積進(jìn)行壓縮;4)生成修正值;5)將壓縮得到的輸出結(jié)果與修正值進(jìn)行壓縮得到乘法結(jié)果;裝置包括操作數(shù)選擇擴(kuò)展單元、第一M×N乘法器、第二M×N乘法器、修正單元和最終乘積運算單元,操作數(shù)選擇擴(kuò)展單元分別通過第一M×N乘法器、第二M×N乘法器、修正單元與所述最終乘積運算單元相連。本發(fā)明具有硬件利用率及面積利用率高、運算速度快、硬件開銷小、得到版圖規(guī)整、結(jié)構(gòu)簡單的優(yōu)點。
文檔編號G06F7/523GK102591615SQ20121001246
公開日2012年7月18日 申請日期2012年1月16日 優(yōu)先權(quán)日2012年1月16日
發(fā)明者劉祥遠(yuǎn), 唐濤, 張科勛, 李振濤, 楊唐第, 溫亮, 郭海勇, 郭陽, 陳書明 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)