專利名稱:高速分裂式乘累加器mac裝置的制作方法
技術領域:
本發明涉及一種用于解決多種乘累加算法的高速分裂式乘累加器MAC裝置。
背景技術:
在數字信號處理應用中,很多操作如FIR、IIR、卷積算法和FFT等,都涉及各種不同模式的乘法或乘累加操作,乘累加算法的處理能力直接影響到處理器的性能。乘累加運算的乘數和被乘數很可能在有些情況下是有符號數,另一些情況是無符號數,也有可能出現一個是有符號數,一個是無符號數的情況;另外,在某些場合,不只需要乘累加操作,還需要考慮不同位寬操作數的乘法操作,乘累加操作以及并行的先乘再加操作。同時,現代信號處理器的處理能力要求越來越高,包括對工作頻率以及單周期信號處理能力的要求,這就需要乘累加運算滿足高速并且能夠單周期處理多個數據即SIMD指令。而現有的乘累加MAC裝置的計算并行度不高,通常在一個周期內只可以進行一個乘法或者乘累加操作,這不能夠滿足多媒體流的需求。并且,高速的處理器要求乘累加單元也具有高速的性能,有些設計中為了實現高速要求而犧牲了流水線的深度,使得啟動乘累加操作時需要多個周期才能輸出一個結果。由于現有乘累加設計中存在的這些不足,本發明提出了一種高速分裂式乘累加器MAC裝置,這種用于解決多種乘累加算法的乘累加裝置實現了高速、流水線深度小并且單周期內可以處理多個數據即SIMD指令。
發明內容
本發明的主要目的在于克服現有技術中的不足,提供一種高速分裂式乘累加器MAC裝置。
為了解決上述技術問題,本發明是通過以下技術方案實現的一種高速分裂式乘累加器MAC裝置,包括輸入和輸出,該裝置還包括四個功能單元功能單元I是數據選擇單元,在輸入中選擇合適的乘數和被乘數輸出;功能單元II是半字位寬的乘累加器,根據累加選擇信號A_mul和符號選擇信號U_mul將功能單元I輸入的乘數和被乘數相乘得到乘累加器結果;功能單元III包含兩部分電路,一是兩個半字模式乘加結果的輸出電路,二是全字模式乘法或乘累加運算的預處理電路;功能單元IV是全字模式乘法或乘累加運算的輸出電路,其是一個進位選擇結構,包含選擇器和一個比特加法器。
作為本發明的高速分裂式乘累加器MAC裝置的改進功能單元I為乘法器的數據選擇邏輯,其接收多位乘數和被乘數數據以及顆粒度選擇信號G_mul,根據顆粒度選擇信號G_mul選擇四組合適的數據輸出到乘法器中。
作為本發明的高速分裂式乘累加器MAC裝置的進一步改進功能單元II是由四個16比特乘累加器組成,分別對由功能單元I送來的信號根據累加選擇信號A_mul信號的狀態進行運算,輸出四個并行的結果。
作為本發明的高速分裂式乘累加器MAC裝置的進一步改進功能單元III包括兩部分電路第一部分電路是由兩個32比特加法器組成,為半字模式下的乘加操作服務,輸出兩個半字模式乘加操作結果;另一部分電路是由一個改進型的3輸入48比特加法器組成,是全字模式乘法或乘累加操作的一個預處理電路,得到三個全字模式操作的中間結果;所述的功能單元III是根據顆粒度選擇信號G_mul、符號選擇信號U_mul和累加選擇信號A_mul信號的狀態來對輸入數據進行累加。
作為本發明的高速分裂式乘累加器MAC裝置的進一步改進功能單元IV包含了兩個選擇器和一個64比特加法器,其根據累加選擇信號A_mul信號的狀態對功能單元III送來的三個輸出和先前的需要累加的數據進行運算,得到最終的全字模式乘法或乘累加結果。
作為本發明的高速分裂式乘累加器MAC裝置的進一步改進功能單元II中還包含了一個基于不同位寬的先行進位加法器的壓縮電路。該基于不同位寬的先行進位加法器的壓縮電路是通過如下方法實現的當部分積的個數M是奇數時,采用 組位寬為 比特的先行進位加法器錯位排列,將部分積的個數壓縮為 ,壓縮率為 ;當M是偶數時,采用 組位寬為 比特的先行進位加法器錯位排列,將部分積的個數壓縮為 ,壓縮率為 。
功能單元II中所包含的混合型的部分積壓縮電路方案,它是根據部分積的個數來選擇合適的壓縮電路對部分積進行壓縮處理,以達到最大的壓縮效率。這里使用的壓縮電路包括全加器、4-2壓縮器,5-2壓縮器以及本發明提出的一種新型的基于不同位寬的先行進位加法器的壓縮電路。具體實現方法為當部分積的個數是5的倍數并且為偶數時,采用5-2壓縮器將部分積的個數由M壓縮為2M/5。
當部分的個數是4的倍數時,采用4-2壓縮器將部分積的個數由M壓縮為M/2。
當部分積的個數是3的倍數時,采用全加器將部分積的個數由M壓縮為2M/3。
當不是以上各種情況時,采用基于不同位寬的先行進位加法器來進行壓縮。
與現有技術相比,本發明的有益效果是本發明提供的一種高速分裂式乘累加器MAC裝置工作頻率快、流水線深度不大、計算并行度高,能夠解決多種模式的乘累加運算,其中包括不同位寬(半字、全字)的無符號/有符號乘法操作、乘累加操作以及半字模式下的乘加操作。本發明劃分為若干個順序執行單元,通過對這些單元的安排和組合以匹配處理器的流水線結構,同時它易于通過流水線重新劃分以實現頻率擴展滿足不同頻率處理器的要求。
圖1為本發明實施例的高速分裂式MAC結構裝置系統構架圖。
圖2為傳統的基于全加器的部分積壓縮原理圖。
圖3為本發明實施例提出的基于先行進位加法器的壓縮原理圖。
圖4為16比特乘累加器的結構框圖。
圖5為本發明實施例的基于各種壓縮電路的混合型部分積累加方案圖。
具體實施例方式
結合附圖,下面對本發明進行詳細說明。
在圖1中,本發明實例將高速分裂式乘累加器MAC裝置分為4個順序執行的功能單元,每個功能單元分別完成MAC裝置的部分功能。
I為功能單元I,其為乘法器的數據選擇邏輯。其接收多位乘數和被乘數數據以及顆粒度選擇信號,它根據顆粒度選擇信號選擇合適的數據輸出到四個乘法器中。其具體邏輯為G_mul置高執行全字(32bit)運算。
乘法器1的操作數為AH,BH乘法器2的操作數為AL,BL乘法器3的操作數為AH,BL乘法器4的操作數為AL,BHG_mul置低執行半字(16bit)運算。
乘法器1的操作數為A1,B1乘法器2的操作數為A2,B2乘法器3的操作數為A3,B3
乘法器4的操作數為A4,B4II為功能單元II,它是由四個16比特乘累加器組成,分別對由功能單元I送來的四組信號根據累加選擇信號A_mul信號的狀態決定是進行乘法還是乘累加運算,輸出四個并行的結果。其具體邏輯為A_mul置高執行16bit乘累加操作,將這次乘法運算結果與之前的結果進行累加。
A_mul置低執行16bit乘法操作。
當為全字模式,即G_mul=1時,四個結果將作為四個部分積累加得到最終的全字乘法或乘累加的結果。
R20=AH×BH,R21=AL×BL,R22=AH×BL,R23=AL×BH。
當為半字模式,即G_mul=0時,四個結果作為四個16比特乘累加器的結果輸出半字模式下乘法或乘累加操作的最終結果。
R20=A1×B1,R21=A2×B2,R22=A3×B3,R23=A4×B4。
III為功能單元III,其接受功能單元II送來的四個32bit乘法或乘累加運算結果,根據顆粒度選擇信號G_mul、符號選擇信號U_mul和累加選擇信號A_mul信號的狀態來進行累加得到需要的結果。這一功能單元可以劃分為兩部分電路,分別執行不同的功能。第一部分電路是由兩個32比特加法器組成,為半字模式的乘加操作服務,輸出兩個半字模式的乘加操作結果R32、R33;另一部分電路是由一個改進型的3輸入48比特加法器組成,是全字模式乘法或乘累加操作的一個預處理電路,得到三個全字模式操作的中間結果R30、R31a和R31b。其具體邏輯如下所示第一部分電路當為半字模式,即G_mul=0時,將兩個相鄰的乘法結果相加,得到兩個并行的乘加操作的結果并作為整個高速分裂式MAC的結果輸出。
R32=R20+R21=A1×B1+A2×B2,R33=R22+R23=A3×B3+A4×B4。
當為半字模式,即G_mul=0時,這兩個加法器的結果沒有意義。
第二部分電路將功能單元II得到的四個結果移位相加得到三個中間結果,并送到下一個功能單元中進行運算得到最后的全字模式乘法或乘累加結果。
由于全字模式的乘法操作結果為A×B=AH×BH×232+sign_ext(AH×BL+AL×BH)×216+AL×BL=R20×232+sign_ext(R22+R23)×216+R21={R20,R21}+sign_ext(R22+R23)×216由于R20×232和R21沒有重疊,所以R20×232+R21的結果實際上就是將R20、R21兩個數直接連接即可。所以A×B實際上是三個數的累加。又由于A×B的低16位就是R21的低16位,無需進行累加,所以一個3輸入48比特的加法器就可以得到A×B的結果。
這一部分電路得到的三個結果為R3041比特數據,3輸入數據累加結果的低40比特和一個進位位,作為功能單元3的一個輸出;R31a24比特數據,假設進位為1時的高24比特累加結果,作為功能單元3的一個輸出;
R31b24比特數據,假設進位為0時的高24比特累加結果,作為功能單元3的一個輸出。
IV為功能單元IV,其接收功能單元III送來三個輸出和先前的需要累加的數據,根據A_mul信號的狀態得到最終的全字模式乘法或乘累加結果。在功能單元IV中包含了兩個選擇器和一個64比特加法器。
選擇器1接收來自功能單元三的三個輸出數據,經過選擇得到AH×BH的結果。其具體邏輯為AH×BH[39:0]=R30[39:0],AH×BH[63:40]由低40比特累加的進位選擇而成。當進位R30[40]為高電平時,AH×BH[63:40]=R31a;當進位R30[40]為低電平時,AH×BH[63:40]=R31b。
選擇器2接收的數據一個來自輸出寄存器R4,是上一個節拍的累加數據,另一個是64比特的零,并且由累加選擇信號A_mul確定輸出結果。
當A_mul為低電平時,不需要進行累加操作,Racc=64’h0;當A_mul為高電平時,需要進行累加操作,Racc=R4。
64比特加法器將兩個選擇器的選擇結果相加,得到最終的全字模式下乘法或乘累加結果,將結果通過R4輸出。這個64比特加法器的結構是基于4比特先行進位加法器的進位選擇結構。
由于受高速分裂式乘累加器MAC裝置的物理性質限制,其很難在一個DSP處理器時鐘周期內完成,因此在本發明具體實施例中,將整個結構劃分為四級流水實現,使之與流水線匹配。將功能單元I和功能單元II安排在前兩個流水級中,根據其電路實現關鍵時延均勻的其功能單元分配在各流水級中。將功能單元III安排在第3級流水中,功能單元IV在最后一個流水級中。這樣,四個平行的半字模式乘法或乘累加操作結果將在第2級流水中輸出,兩個并行的半字模式乘加操作結果在第3級流水中輸出,一個全字模式乘法或乘累加操作在第4級流水中輸出。本發明具體實施的性能如表1~3所示(實驗條件130nm標準單元CMOS工藝技術)表1、邏輯綜合后的時延信息
表2、物理綜合后的時延信息
表3、布線后的時延信息
此MAC裝置在最壞情況下可以與主頻為480MHZ的DSP匹配,在一般工作情況下可以與主頻為610MHz的DSP匹配。并且,本發明實施例提出的功能單元與流水級匹配方法可以進一步擴展,通過功能單元內外的子邏輯模塊層次的進一步細分和重組,可以實現與高頻或低頻各種不同的處理器之間的良好匹配。例如將流水線細分為8級,就可以達到最壞情況下的890MHz和一般工作情況下的1.18GHz。其各流水級的時延如表4所示表4、8級流水劃分設計邏輯綜合后的各級時延信息
圖2為傳統的基于全加器的部分積壓縮原理,以5個部分積為例。部分積壓縮電路是乘法器或乘累加器中的主要組成部分,它的性能可以直接影響到乘法器或乘累加器的性能好壞,由于大部分的時延和面積都消耗在這一部分。這一部分輸入信號為5個部分積A、B、C、D和E。首先利用全加器的3∶2壓縮特性,通過一組全加器將三個部分積A、B和E壓縮為兩個,這樣部分積的個數由5減少為4;在通過一組全加器將其中的三個部分積壓縮為兩個,這樣部分積的個數由4減少為3;最后一組全加器后就可以得到2個部分積,完成壓縮電路功能。這樣,基于全加器的壓縮電路的關鍵路徑上有3個全加器,時延T=3×Delay(全加器)。
圖3為本發明實施例提出的基于先行進位加法器的壓縮原理圖。其分為兩部分,第一部分接受5個部分積A、B、C、D和E,輸出3個部分積a、b和c;第二部分接收a、b和c,輸出最終累加結果sum和carry。
第一部分首先采用兩組位寬為2比特的先行進位加法器將5個部分積壓縮為3個,這兩組加法器是移位排列的,即第二組加法器相對第一組左移了一位。具體實現方法是將部分積B和C分成若干個子串,每個子串位寬為2比特,將這些子串作為輸入送到若干個位寬為2比特的先行進位加法器中進行加法運算,這就是第一組加法器。同樣的,將D和E也分為2比特位寬的子串送到2比特的加法器中形成第二組加法器。最后一個部分A是作為兩組加法器的進位來累加的,由于兩組加法器是錯開1比特排列的,所以A的每一個比特位都會得到累加。累加后的結果是a、b和c。a是由第一組加法器的結果輸出組成的,b是由第二組加法器的結果輸出組成的,c是由兩組加法器的進位輸出位組成的。
第二部分采用一組全加器將3個部分積累加為sum和carry。所以,這種基于不同位寬的先行進位加法器的累加電路的關鍵路徑包括一個2bit加法器和一個全加器。由于一個2bit加法器的延時小于兩個級聯的全加器的延時,所以這種壓縮電路的時間性能優于傳統的基于全加器的Wallace樹型結構。
將這種壓縮電路推廣到一般場合下,假設部分積的個數為M,當M是奇數時,采用 組位寬為 比特的先行進位加法器,將部分積的個數壓縮為 ,壓縮率為 。當M是偶數時,采用 組位寬為 比特的先行進位加法器,將部分積的個數壓縮為 ,壓縮率為 。可以看出這種壓縮電路的壓縮率大于全加器。
圖4為16比特乘累加器的結構框圖。其接收兩個16比特操作數,累加選擇信號A_mul和符號選擇信號U_mul,輸出一個無符號/有符號乘法或乘累加結果。本單元可分為三部分,部分積產生模塊,部分積壓縮樹和加法器。部分積產生模塊接收兩個操作數,輸出9個部分積;部分積壓縮樹模塊接收部分積產生模塊輸出的9個部分積和一個額外的部分積,這個額外的部分積是先前的結果經過由A_mul信號選擇后再送到部分積壓縮樹中。
當A_mul=0時,不需要進行累加,將0送入部分積壓縮模塊中。
當A_mul=1時,需要進行累加,將先前的結果送入部分積壓縮模塊中。本發明中的16比特乘累加器將先前的結果作為一個部分積返回到部分積壓縮樹模塊中,而不是在最后進行累加,這樣可以節省一級加法器。其輸出壓縮后的兩個部分積sum,carry。加法器將壓縮模塊產生的兩個部分積加起來,得到乘法或乘累加結果。這里采用的是基于8bit先行進位加法器的進位選擇結構。
圖5為本發明實施例的基于各種壓縮電路的混合型部分積累加方案在16bit乘累加器中的應用。這種基于各種壓縮電路的混合型部分積方案是合理利用現存的各種壓縮電路和本發明實施例中提出的一個基于不同位寬的先行進位加法器的壓縮電路,將其應用于最佳場合,使其壓縮率達到最大。具體實現方法在前面已經提到。
表5給出了采用這種基于各種壓縮電路的混合型部分積方案與傳統的全加器Wallace tree結構的時延對比,取得了11.6%到32.1%的改善。
表5、性能對比表
將這種方案應用到16bit乘累加器中,需要將9個部分積和一個額外的部分積累加壓縮為2個,并且用兩級流水實現,而這個額外的部分積要送到第2級流水中。
首先,三組全加器組將9個部分積壓縮為6個。
其次,由于6是3的倍數,兩組全加器組將這6個部分積壓縮為4個。
這作為第一級流水,在第二級流水中,首先,兩組2比特先行進位加法器將5個部分積壓縮為3個,這5個部分積包括從第一級流水輸出的四個部分積和一個額外的經過選擇的部分積。其次,一組全加器將3個部分積壓縮為2個。這樣,部分積壓縮電路完成。表6給出了本發明的各級及總門數。
表6、各級邏輯門信息
綜上所述,本發明實施例提出了一種高速分裂式乘累加器MAC裝置,用于解決多種模式的乘法和乘累加運算,其中包括32位模式下的有符號/無符號的乘法或乘累加運算,16位模式有符號/無符號的乘法或乘累加運算,16位模式下的乘加運算。將MAC裝置劃分成順序的四個結構單元,對每個結構單元分別處理和優化;提出了一種基于不同位寬的先行進位加法器的壓縮電路和利用各種壓縮電路以取得最優壓縮效果的壓縮方案。這樣不但從面積和時延方面都有較好的改善,為高速設計奠定了基礎。提出了一種MAC裝置和DSP處理器流水級匹配的方法,可以通過重新安排各功能模塊和流水線,來實現MAC的頻率擴展,使MAC設計可以和各種頻率的處理器相匹配。本發明實施例所提出的方法可以組合使用,也可以分別單獨使用,可以在DSP處理器中使用,也可以在面向各種需要MAC功能裝置的電路實現中使用。
最后,還需要注意的是,以上列舉的僅是本發明的若干個具體實施例。顯然,本發明不限于以上實施例,還可以有許多變形。本領域的普通技術人員能從本實用新型公開的內容直接導出或聯想到的所有變形,均應認為是本發明的保護范圍。
權利要求
1.一種高速分裂式乘累加器MAC裝置,包括輸入和輸出,其特征在于,該裝置還包括四個功能單元功能單元I是數據選擇單元,在輸入中選擇合適的乘數和被乘數輸出;功能單元II是半字位寬的乘累加器,根據累加選擇信號A_mul和符號選擇信號U_mul將功能單元I輸入的乘數和被乘數相乘得到乘累加器結果;功能單元III包含兩部分電路,一是兩個半字模式乘加結果的輸出電路,二是全字模式乘法或乘累加運算的預處理電路;功能單元IV是全字模式乘法或乘累加運算的輸出電路,其是一個進位選擇結構,包含選擇器和一個比特加法器。
2.根據權利要求1所述的一種高速分裂式乘累加器MAC裝置,其特征在于,所述的功能單元I為乘法器的數據選擇邏輯,其接收多位乘數和被乘數數據以及顆粒度選擇信號G_mul,根據顆粒度選擇信號G_mul選擇四組合適的數據輸出到乘法器中。
3.根據權利要求2所述的一種高速分裂式乘累加器MAC裝置,其特征在于,所述的功能單元II是由四個16比特乘累加器組成,分別對由功能單元I送來的信號根據累加選擇信號A_mul信號的狀態進行運算,輸出四個并行的結果。
4.根據權利要求3所述的一種高速分裂式乘累加器MAC裝置,其特征在于,所述的功能單元III包括兩部分電路第一部分電路是由兩個32比特加法器組成,為半字模式下的乘加操作服務,輸出兩個半字模式乘加操作結果;另一部分電路是由一個改進型的3輸入48比特加法器組成,是全字模式乘法或乘累加操作的一個預處理電路,得到三個全字模式操作的中間結果;所述的功能單元III是根據顆粒度選擇信號G_mul、符號選擇信號U_mul和累加選擇信號A_mul信號的狀態來對輸入數據進行累加。
5.根據權利要求4所述的一種高速分裂式乘累加器MAC裝置,其特征在于,所述的功能單元IV包含了兩個選擇器和一個64比特加法器,其根據累加選擇信號A_mul信號的狀態對功能單元III送來的三個輸出和先前的需要累加的數據進行運算,得到最終的全字模式乘法或乘累加結果。
6.根據權利要求5所述的一種高速分裂式乘累加器MAC裝置,其特征在于,所述的功能單元II中還包含了一個基于不同位寬的先行進位加法器的壓縮電路。
7.根據權利要求6所述的一種高速分裂式乘累加器MAC裝置,其特征在于,所述的一個基于不同位寬的先行進位加法器的壓縮電路是通過如下方法實現的當部分積的個數M是奇數時,采用 組位寬為 比特的先行進位加法器錯位排列,將部分積的個數壓縮為 壓縮率為 當M是偶數時,采用 組位寬為 比特的先行進位加法器錯位排列,將部分積的個數壓縮為 壓縮率為
全文摘要
本發明公開了一種高速分裂式乘累加器MAC裝置,包括輸入和輸出,該裝置還包括四個功能單元功能單元I是數據選擇單元,在輸入中選擇合適的乘數和被乘數輸出;功能單元II是半字位寬的乘累加器,根據累加選擇信號A_mul和符號選擇信號U_mul將功能單元I輸入的乘數和被乘數相乘得到乘累加器結果;功能單元III包含兩部分電路,一是兩個半字模式乘加結果的輸出電路,二是全字模式乘法或乘累加運算的預處理電路;功能單元IV是全字模式乘法或乘累加運算的輸出電路,其是一個進位選擇結構,包含選擇器和一個比特加法器。本發明的高速分裂式乘累加器MAC裝置,工作頻率快、流水線深度不大、計算并行度高,能夠解決多種模式的乘累加運算。
文檔編號G06F7/48GK1963745SQ200610154979
公開日2007年5月16日 申請日期2006年12月1日 優先權日2006年12月1日
發明者劉鵬, 夏冰潔, 姚慶棟 申請人:浙江大學