專利名稱:用于微處理器的多功能定點mac運算裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器的運算部件,具體涉及一種適用于包括單指令多數(shù)據(jù)流 (Single Instruction Multiple Data,SIMD)DSP在內(nèi)的微處理器的多功能定點乘加單元 (Multiply Add Cell,MAC)運算裝置。
背景技術(shù):
在圖像處理、雷達(dá)信號處理和現(xiàn)代通信等應(yīng)用領(lǐng)域,由于處理數(shù)據(jù)量較大,對數(shù)據(jù)計算的精度和實時性要求高,通常需要使用超高性能的微處理器進(jìn)行處理。由于這些算法具有高的乘法運算密集性和加法運算密集型,涉及大量包括定點乘加/減運算、點積運算和復(fù)數(shù)運算在內(nèi)的定點累積乘法,因此微處理器的定點數(shù)據(jù)處理能力顯得越發(fā)重要。目前針對上述的應(yīng)用特點,已有研究中提出了各種用于實現(xiàn)上述定點累積乘法的運行機(jī)制和硬件實現(xiàn)結(jié)構(gòu),使其支持大量的乘法運算,如TIC64系列的M單元。但是,現(xiàn)有技術(shù)普遍存在的缺點是1)僅實現(xiàn)了定點的乘法或定點乘加等一些運算功能,不能支持加法和減法等運算,功能單一 ;2)占用較多硬件資源,硬件復(fù)用率低,可擴(kuò)展性差,編程代碼量大。
發(fā)明內(nèi)容
本發(fā)明針對上述現(xiàn)有技術(shù)的問題,提供一種支持多種定點累積乘法、占用硬件資源少、硬件復(fù)用率高,可擴(kuò)展性好,編程代碼量小的用于微處理器的多功能定點MAC運算裝置。為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為
一種用于微處理器的多功能定點MAC運算裝置,包括指令派發(fā)單元、指令譯碼單元、存儲單元和指令運算單元,所述指令運算單元包括用于MAC運算的四級流水運算結(jié)構(gòu)和用于獲取所述四級流水運算結(jié)構(gòu)的輸出結(jié)果并將輸出結(jié)果寫回存儲單元的結(jié)果選擇模塊,所述四級流水運算結(jié)構(gòu)從輸入端到輸出端依次包括二級乘法器運算站、加法器運算站以及用于進(jìn)行復(fù)數(shù)、點積和32位乘法運算的復(fù)合運算站,所述二級乘法器運算站包括多個并行分布的SIMD乘法器,所述加法器運算站包括多個并行分布的SIMD加法器,所述二級乘法器運算站、加法器運算站和復(fù)合運算站分別與所述結(jié)果選擇模塊相連。作為本發(fā)明上述技術(shù)方案的進(jìn)一步改進(jìn)
所述SIMD乘法器包括用于實現(xiàn)傳統(tǒng)乘法運算和SIMD乘法運算的一級乘法運算模塊和用于完成符號擴(kuò)展、拼接運算的二級乘法運算模塊,所述一級乘法運算模塊與二級乘法運算模塊相串連。所述SIMD乘法器包括用于實現(xiàn)SIMD乘法運算模式控制的SIMD控制信號輸入端, 所述SIMD控制信號輸入端分別與一級乘法運算模塊、二級乘法運算模塊相連,所述一級乘法運算模塊與二級乘法運算模塊在所述SIMD控制信號輸入端輸入無效信號時將輸入的操作數(shù)進(jìn)行普通乘法運算,所述一級乘法運算模塊與二級乘法運算模塊在所述SIMD控制信
3號輸入端輸入有效信號時將輸入的操作數(shù)進(jìn)行SIMD乘法運算。所述SIMD加法器為40位SIMD定點加法器,所述SIMD加法器包括5個依次串接的8位加法運算模塊。所述復(fù)合運算站包括復(fù)數(shù)指令處理模塊、點積指令處理模塊和32位乘法指令處理模塊。所述指令譯碼單元包括指令區(qū)分模塊、32位指令譯碼模塊和16位指令譯碼模塊, 所述32位指令譯碼模塊的輸入端、16位指令譯碼模塊的輸入端分別通過指令區(qū)分模塊與指令派發(fā)單元相連,所述32位指令譯碼模塊的輸出端分別與存儲單元、指令運算單元相連,所述16位指令譯碼模塊的輸出端分別與存儲單元、指令運算單元相連。所述存儲單元包括局部寄存器和累加器,所述局部寄存器和累加器分別與指令運算單元相連。所述局部寄存器和累加器均為雙輸入雙輸出結(jié)構(gòu)。本發(fā)明具有下述優(yōu)點
1、本發(fā)明的指令運算單元包括四級流水運算結(jié)構(gòu),能夠?qū)IMD乘、SIMD加減法、SIMD 乘加乘減、8位點積、16位點積、8位復(fù)數(shù)和16位復(fù)數(shù)融合到一個體系結(jié)構(gòu)中,支持高效定點 SIMD乘法運算、SIMD加法、SIMD減法、SIMD乘加、SIMD乘減、點積和復(fù)數(shù)運算,既可以適用于SIMD微處理器,又可以適用于DSP微處理器,具有支持定點乘法類運算種類豐富、分棧合理、占用資源小、代碼復(fù)用率高、運算性能好、運算功能多,可擴(kuò)展性強(qiáng)、適用范圍廣的優(yōu)點。2、本發(fā)明的二級乘法器運算站包括多個并行分布的SIMD乘法器,從先乘法指令、 乘加乘減指令、點積指令和復(fù)數(shù)指令都通過復(fù)用SIMD乘法器實現(xiàn);加法器運算站包括多個并行分布的SIMD加法器,加法指令、減法指令和乘加乘減指令以及點積和復(fù)數(shù)指令都通過復(fù)用SIMD加法器實現(xiàn),因此代碼的復(fù)用率高。3、本發(fā)明的指令譯碼單元進(jìn)一步包括指令區(qū)分模塊、32位指令譯碼模塊和16位指令譯碼模塊,能夠針對不同位數(shù)的指令進(jìn)行區(qū)別對待,有利于提高硬件的利用效率。4、本發(fā)明的存儲單元進(jìn)一步包括局部寄存器和累加器,局部寄存器和累加器分別與指令運算單元相連,因此能夠勝任各種DSP的定點乘法類運算,操作數(shù)的調(diào)度和選擇效率高、能夠完成單個部件各種乘法類相關(guān)指令運算,而且在寄存器不夠用時還可以對操作數(shù)進(jìn)行調(diào)度和選擇當(dāng)累加器作為寄存器使用。5、本發(fā)明的局部寄存器和累加器進(jìn)一步均為雙輸入雙輸出結(jié)構(gòu),因此既可以實線多種SIMD加法的參數(shù)存儲,而且又可以用于SIMD乘法的參數(shù)存儲,因此具有硬件復(fù)用率高、功能多、可擴(kuò)展性強(qiáng)的優(yōu)點。
圖1為本發(fā)明實施例框架結(jié)構(gòu)示意圖。圖2為本發(fā)明實施例四級流水運算結(jié)構(gòu)的框架結(jié)構(gòu)示意圖。圖3為本發(fā)明實施例的詳細(xì)電路框架結(jié)構(gòu)示意圖。圖4為本發(fā)明實施例SIMD乘法器的框架結(jié)構(gòu)示意圖。圖5為本發(fā)明實施例SIMD加法器的框架結(jié)構(gòu)示意圖。圖6為本發(fā)明實施例指令譯碼單元的框架結(jié)構(gòu)示意圖。
圖例說明1、指令派發(fā)單元;2、指令譯碼單元;21、指令區(qū)分模塊;22、32位指令譯碼模塊;23、16位指令譯碼模塊;3、存儲單元;31、局部寄存器;32、累加器;4、指令運算單元;5、四級流水運算結(jié)構(gòu);51、二級乘法器運算站;511、SIMD乘法器;512、一級乘法運算模塊;513、二級乘法運算模塊;52、加法器運算站;521、SIMD加法器;522、加法運算模塊;53、 復(fù)合運算站;531、復(fù)數(shù)指令處理模塊;532、點積指令處理模塊;533、32位乘法指令處理模塊;6、結(jié)果選擇模塊;71、一拍指令數(shù)據(jù)和控制信號總線;72、一拍和三拍指令寫回結(jié)果和地址信號總線;73、二拍指令寫回結(jié)果和地址信號總線;74、寫回總線。
具體實施例方式如圖1、圖2和圖3所示,本發(fā)明實施例用于微處理器的多功能定點MAC運算裝置包括指令派發(fā)單元1、指令譯碼單元2、存儲單元3和指令運算單元4,指令運算單元4包括用于MAC運算的四級流水運算結(jié)構(gòu)5和用于獲取四級流水運算結(jié)構(gòu)5的輸出結(jié)果并將輸出結(jié)果寫回存儲單元3的結(jié)果選擇模塊6,四級流水運算結(jié)構(gòu)5從輸入端到輸出端依次包括二級乘法器運算站51、加法器運算站52以及用于進(jìn)行復(fù)數(shù)、點積和32位乘法運算的復(fù)合運算站53,二級乘法器運算站51包括4個并行分布的SIMD乘法器511,加法器運算站52包括 2個并行分布的SIMD加法器521,二級乘法器運算站51、加法器運算站52和復(fù)合運算站53 分別與結(jié)果選擇模塊6相連。如圖3所示,本實施例采用4級流水化設(shè)計,四級流水運算結(jié)構(gòu)5從輸入端到輸出端依次包括二級乘法器運算站51、加法器運算站52以及用于進(jìn)行復(fù)數(shù)、點積和32位乘法運算的復(fù)合運算站53,二級乘法器運算站51包括4個并行分布的SIMD乘法器511,加法器運算站52包括2個并行分布的SIMD加法器521,二級乘法器運算站51、加法器運算站52和復(fù)合運算站53分別與結(jié)果選擇模塊6相連。其中二級乘法器運算站51完成乘法運算,加法器運算站52完成加減法運算以及相關(guān)結(jié)果的飽和處理,復(fù)合運算站53用于完成結(jié)果移位、拼接、修正、飽和和舍入處理,復(fù)合運算站53包括復(fù)數(shù)指令處理模塊531、點積指令處理模塊532和32位乘法指令處理模塊533。二級乘法器運算站51的輸出端通過二拍指令寫回結(jié)果和地址信號總線73與結(jié)果選擇模塊6相連;加法器運算站52的輸入端通過一拍指令數(shù)據(jù)和控制信號總線71與指令譯碼單元2和存儲單元3相連,加法器運算站52的輸出端通過一拍和三拍指令寫回結(jié)果和地址信號總線72與結(jié)果選擇模塊6相連。此外,二級乘法器運算站51包括SIMD乘法器511的數(shù)量以及加法器運算站52包括SIMD加法器521的數(shù)量也可以采用更多,其原理與本實施例相同。本實施例中,存儲單元3包括局部寄存器31和累加器32,局部寄存器31和累加器 32分別與指令運算單元4相連。本實施例中,局部寄存器31和累加器32均為雙輸入雙輸出結(jié)構(gòu),局部寄存器31和累加器32分別通過兩路輸入端口與指令譯碼單元2相連,局部寄存器31和累加器32分別通過兩路輸出端口與與指令運算單元4相連。以8位的SIMD加法為例,8位的SIMD加法為Srcl和Src2分別以η個對應(yīng)的8位相加,因為在加法器運算站52中有兩個SIMD加法器521,因此通過雙輸入雙輸出結(jié)構(gòu)能夠?qū)崿F(xiàn)兩種8位的SIMD加法采用兩個輸入端口以實現(xiàn)4個對應(yīng)的8位相加,或者采用4個輸入端口實現(xiàn)8個對應(yīng)的 8位相加。同樣,雙輸入雙輸出結(jié)構(gòu)也可以適用于SIMD乘法運算,雙輸入雙輸出結(jié)構(gòu)具有硬件復(fù)用率高、功能多樣、可擴(kuò)展性強(qiáng)的優(yōu)點。
5
如圖4所示,SIMD乘法器511包括用于實現(xiàn)傳統(tǒng)乘法運算和SIMD乘法運算的一級乘法運算模塊512和用于完成符號擴(kuò)展、拼接運算的二級乘法運算模塊513,一級乘法運算模塊512與二級乘法運算模塊513相串連,一級乘法運算模塊512的輸入端分別與指令譯碼單元2、存儲單元3相連,二級乘法運算模塊513的輸出端與加法器運算站52相連。SIMD乘法器511包括用于實現(xiàn)SIMD乘法運算模式控制的SIMD控制信號輸入端, SIMD控制信號輸入端分別與一級乘法運算模塊512、二級乘法運算模塊513相連,一級乘法運算模塊512與二級乘法運算模塊513在SIMD控制信號輸入端輸入無效信號時將輸入的操作數(shù)進(jìn)行普通乘法運算,一級乘法運算模塊512與二級乘法運算模塊513在SIMD控制信號輸入端輸入有效信號時將輸入的操作數(shù)進(jìn)行SIMD乘法運算。本實施例中,從SIMD控制信號輸入端輸入的SIMD控制信號后,SIMD控制信號在一級乘法運算模塊512中,分別參與操作數(shù)符號擴(kuò)展及處理、符號預(yù)處理、鎖存器鎖存的處理步驟;SIMD控制信號在二級乘法運算模塊513中,參與多路轉(zhuǎn)接器(MUX)進(jìn)行多路轉(zhuǎn)接的處理步驟。除SIMD控制信號(SIMD) 以外,SIMD乘法器511的輸入信號還包括兩路操作數(shù)Srcl和Srcl、兩路符號數(shù)信號Signl 和Sign2。SIMD乘法器511通過SIMD控制信號來控制完成SIMD運算和普通運算。(1)在SIMD模式下,本乘法器并行完成2個8位SIMD乘法運算 Dst [15:0]= Srcl[7:0] XSrc2[7: 0]
Dst[31:16]= Srcl[15:8] XSrc2[15: 8]
仍然得到1個32位的乘積,其高低16位分別存放2個8位乘法的結(jié)果。此時兩個 16X8的乘法器分別完成一個8X8的運算。計算低16位結(jié)果時,只需將Srcl的低8位進(jìn)行符號擴(kuò)展到16位和Src2的低8 位送入第一個16X8乘法器,所得的24位結(jié)果Dst_L的低16位即為我們所需要SIMD低位結(jié)果。計算高16位結(jié)果時,這時將Srcl的低8位取零后和Src2的高8位送入第二個 16X8乘法器,所得的24位結(jié)果Dst_H的高16位即為我們所需要SIMD高位結(jié)果。(2)在普通模式下,本乘法器如同傳統(tǒng)乘法器,完成一個16位的傳統(tǒng)乘法運算 Dst[31:0]= Srcl[15:0] XSrc2[15: 0]
兩個 16 X 8 的乘法器分別完成 Srcl [15:0] X Src2 [15: 8]和 Srcl [15 0] X Src2 [7 0] 的運算,運算結(jié)果為Dst_H和Dst_L。對Dst_L[23:8]進(jìn)行符號擴(kuò)展為24位,再與Dst_H相加,得到一個24位的結(jié)果。這個結(jié)果與Dst_L[7:0]拼接即為我們所需要Dst[31:0]。如圖5所示,SIMD加法器521為40位SIMD定點加法器,SIMD加法器521包括5 個依次串接的8位加法運算模塊522,SIMD加法器521能在一拍中完成4個8位有無符號加減法、或2個16位有無符號加減法、或1個32位有無符號加減法、或一個40位有無符號加減法。如圖6所示,指令譯碼單元2包括指令區(qū)分模塊21、32位指令譯碼模塊22和16位指令譯碼模塊23和鎖存器,32位指令譯碼模塊22的輸入端、16位指令譯碼模塊23的輸入端分別通過指令區(qū)分模塊21與指令派發(fā)單元1相連,32位指令譯碼模塊22的輸出端分別與存儲單元3、指令運算單元4相連,16位指令譯碼模塊23的輸出端分別與存儲單元3、指令運算單元4相連。指令譯碼單元2通過針對不同位數(shù)的指令進(jìn)行區(qū)別對待,有利于提高硬件的利用效率。指令區(qū)分模塊21用來區(qū)分長度為16位和32位的指令,以及無效指令。32位指令譯碼模塊22用來譯碼32位指令,16位指令譯碼模塊23用來譯碼16位指令,譯碼得到的讀信號和讀地址發(fā)送給局部寄存器31或者累加器32。鎖存器將控制信號鎖存一拍后輸出給指令運算單元4。指令譯碼單元2將指令派發(fā)單元1派發(fā)過來的指令進(jìn)行譯碼, 向局部寄存器31和累加器32發(fā)送讀操作數(shù)請求和讀地址,并將向指令運算單元4發(fā)送的指令執(zhí)行控制信號鎖存一拍后發(fā)出。指令運算單元4用于對所述操作數(shù)和控制信號進(jìn)行各種運算,獲取運算結(jié)果并將運算結(jié)果寫回存儲單元3的局部寄存器31或者累加器32等。下面以具體算法為例說明實施例的具體工作過程。1、SIMD 乘法指令。SIMD乘法指令為8位、16位和32位乘法指令,乘法指令分為無符號乘無符號、無符號乘有符號、有符號乘無符號和有符號乘有符號。8位和16位乘法指令均通過一級乘法運算模塊512和二級乘法運算模塊513中完成運算。32 位乘法的算法思想為Dst=(HH<<32) + (HL<<16) + (LH<<16)+LL,其中 Dst 為 64 位運算結(jié)果、HH為操作數(shù)1的高16位和操作數(shù)2的高16位相乘的32位結(jié)果、HL為操作數(shù) 1的高16位和操作數(shù)2的低16位相乘的32位結(jié)果、LH為操作數(shù)1的低16位和操作數(shù)2 的高16位相乘的32位結(jié)果、LL為操作數(shù)1的低16位和操作數(shù)2的低16位相乘的32位結(jié)果。32位乘法指令首先在4個SIMD乘法器511中進(jìn)行乘法運算,然后在加法器運算站 52中完成第一次移位相加,再在復(fù)合運算站53中完成最后一次移位相加并修正,其具體實現(xiàn)方法如下
1)在4個SIMD乘法器511中進(jìn)行如下運算
HH=Srcl_H*Src2_H、HL=Srcl_H*Src2_L、LH=Srcl_L*Src2_H、LL=Srcl_L*Src2_L,其中 Src 1_H為操作數(shù)1的高16位,Src2_H為操作數(shù)2的高16位,Src 1_L為操作數(shù)1的低16 位,Src2_L為操作數(shù)2的低16位。2)在加法器運算站52中,HL的高16位符號擴(kuò)展到32位,再與32位的HH在第一個SIMD加法器中完成相加,得到一個32位的結(jié)果,此結(jié)果與HL的低16位拼接得到一個 48位的結(jié)果。在第二個SIMD加法器中采用同樣的方法實現(xiàn)了(LH 16)+LL,得一個32位結(jié)果。3)在復(fù)合運算站53中將加法器運算站52中第二個SIMD加法器521得到的32位的結(jié)果擴(kuò)展為48位,再與加法器運算站52中的48位結(jié)果相加。這個過程在乘法指令處理模塊完成,這次采用一個48位加法器就可以了,其結(jié)果與LL的低16位拼接即可得到32位乘法的64位的結(jié)果。32乘16乘法的算法思想為Dst= (HL 16) + LL,其中Dst為48位運算結(jié)果HL為操作數(shù)1的高16位和操作數(shù)2的低16位相乘的32位結(jié)果、LL為操作數(shù)1的低16位和操作數(shù)2的低16位相乘的32位結(jié)果。在2個SIMD乘法器中計算即可完成HL和LL運算,在加法器站中將LL的高16位擴(kuò)展到32位,與HL完成相加得到一個32位的結(jié)果,再與LL的低八位拼接得到最后48位結(jié)果Dst。16乘32乘法的思想類推得之。2、SIMD 加法指令。SIMD減法指令分為8位、16位、32位和40位加法指令,分別支持有符號和無符號加法,以及立即數(shù)加法。指令操作從指令譯碼單元2出來,源操作數(shù)從存儲單元3送出,兩
7者直接送往加法器運算站52在SIMD加法器521完成運算。3、SIMD 減法指令。SIMD減法指令分為8位、16位、32位和40位減法指令,分別支持有符號和無符號減法,以及立即數(shù)減法。指令操作從指令譯碼單元2出來,源操作數(shù)從存儲單元3送出,兩者直接送往加法器運算站52在SIMD加法器521完成運算。4、SIMD 乘加指令。SIMD乘減指令分為8位和16位乘加指令。SIMD乘加指令為3操作數(shù)指令,操作數(shù)包括乘數(shù)、被乘數(shù)和加數(shù),其中乘數(shù)和被乘數(shù)來自局部寄存器31,加數(shù)來自累加器32,乘數(shù)和被乘數(shù)的乘法部分在SIMD乘法器511中完成,其結(jié)果在加法器運算站52的SIMD加法器521中完成加法部分,通過一拍和三拍指令寫回結(jié)果和地址信號總線72中的3拍指令寫回總線送往結(jié)果選擇模塊6,再通過寫回總線74寫回累加器32。5、SIMD 乘減指令。SIMD乘減指令分為8位和16位乘減指令。SIMD乘減指令為3操作數(shù)指令,操作數(shù)包括乘數(shù)、被乘數(shù)和減數(shù),其中乘數(shù)和被乘數(shù)來自局部寄存器31,減數(shù)來自累加器32,乘數(shù)和被乘數(shù)的乘法部分在SIMD乘法器511中完成,其結(jié)果在加法器運算站52的SIMD加法器521中完成減法部分,通過一拍和三拍指令寫回結(jié)果和地址信號總線72中的3拍指令寫回總線送往結(jié)果選擇模塊6,再通過寫回總線74寫回累加器32。6、點積類指令。點積類指令分為8位點積和16位點積指令。點積類指令運算的乘法部分在SIMD 乘法器511中完成,求和部分在加法器運算站52中完成,結(jié)果是否舍入修正部分等操作在復(fù)合運算站53完成。7、復(fù)數(shù)類指令。復(fù)數(shù)類指令分為8位復(fù)數(shù)和16位復(fù)數(shù)指令。復(fù)數(shù)類指令運算的乘法部分在SIMD 乘法器511中完成,求和部分在加法器運算站52中完成,結(jié)果是否舍入修正部分等操作在復(fù)合運算站53完成。其中,SIMD加法和SIMD減法為1拍完成,SIMD乘法中的8位和16位乘法為2拍指令,32乘16乘法和16乘32乘法為3拍完成,32位乘法指令為4拍完成,SIMD乘加和 SIMD乘減為3拍完成,點積和復(fù)數(shù)指令為4拍完成。結(jié)果選擇模塊6則完成對各站計算完成的指令進(jìn)行選擇處理,避免造成不同節(jié)拍的指令同時流出,之后送往寫回總線74,寫回總線74接入局部寄存器31和累加器32,從而將結(jié)果寫回局部寄存器31或者累加器32。以上所述僅是本發(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.一種用于微處理器的多功能定點MAC運算裝置,包括指令派發(fā)單元(1)、指令譯碼單元(2)、存儲單元(3)和指令運算單元(4),其特征在于所述指令運算單元(4)包括用于 MAC運算的四級流水運算結(jié)構(gòu)(5)和用于獲取所述四級流水運算結(jié)構(gòu)(5)的輸出結(jié)果并將輸出結(jié)果寫回存儲單元(3)的結(jié)果選擇模塊(6),所述四級流水運算結(jié)構(gòu)(5)從輸入端到輸出端依次包括二級乘法器運算站(51)、加法器運算站(52)以及用于進(jìn)行復(fù)數(shù)、點積和32位乘法運算的復(fù)合運算站(53),所述二級乘法器運算站(51)包括多個并行分布的SIMD乘法器(511),所述加法器運算站(52)包括多個并行分布的SIMD加法器(521),所述二級乘法器運算站(51)、加法器運算站(52)和復(fù)合運算站(53)分別與所述結(jié)果選擇模塊(6)相連。
2.根據(jù)權(quán)利要求1所述的用于微處理器的多功能定點MAC運算裝置,其特征在于所述SIMD乘法器(511)包括用于實現(xiàn)傳統(tǒng)乘法運算和SIMD乘法運算的一級乘法運算模塊 (512)和用于完成符號擴(kuò)展、拼接運算的二級乘法運算模塊(513),所述一級乘法運算模塊 (512)與二級乘法運算模塊(513)相串連。
3.根據(jù)權(quán)利要求2所述的用于微處理器的多功能定點MAC運算裝置,其特征在于所述SIMD乘法器(511)包括用于實現(xiàn)SIMD乘法運算模式控制的SIMD控制信號輸入端,所述 SIMD控制信號輸入端分別與一級乘法運算模塊(512)、二級乘法運算模塊(513)相連,所述一級乘法運算模塊(512)與二級乘法運算模塊(513)在所述SIMD控制信號輸入端輸入無效信號時將輸入的操作數(shù)進(jìn)行普通乘法運算,所述一級乘法運算模塊(512)與二級乘法運算模塊(513)在所述SIMD控制信號輸入端輸入有效信號時將輸入的操作數(shù)進(jìn)行SIMD乘法運笪弁。
4.根據(jù)權(quán)利要求1所述的用于微處理器的多功能定點MAC運算裝置,其特征在于所述SIMD加法器(521)為40位SIMD定點加法器,所述SIMD加法器(521)包括5個依次串接的8位加法運算模塊(522)。
5.根據(jù)權(quán)利要求1所述的用于微處理器的多功能定點MAC運算裝置,其特征在于所述復(fù)合運算站(53)包括復(fù)數(shù)指令處理模塊(531)、點積指令處理模塊(532)和32位乘法指令處理模塊(533)。
6.根據(jù)權(quán)利要求1所述的用于微處理器的多功能定點MAC運算裝置,其特征在于所述指令譯碼單元(2)包括指令區(qū)分模塊(21)、32位指令譯碼模塊(22)和16位指令譯碼模塊(23),所述32位指令譯碼模塊(22)的輸入端、16位指令譯碼模塊(23)的輸入端分別通過指令區(qū)分模塊(21)與指令派發(fā)單元(1)相連,所述32位指令譯碼模塊(22)的輸出端分別與存儲單元(3)、指令運算單元(4)相連,所述16位指令譯碼模塊(23)的輸出端分別與存儲單元(3)、指令運算單元(4)相連。
7.根據(jù)權(quán)利要求1 6中任意一項所述的用于微處理器的多功能定點MAC運算裝置, 其特征在于所述存儲單元(3)包括局部寄存器(31)和累加器(32),所述局部寄存器(31) 和累加器(32)分別與指令運算單元(4)相連。
8.根據(jù)權(quán)利要求7所述的用于微處理器的多功能定點MAC運算裝置,其特征在于所述局部寄存器(31)和累加器(32)均為雙輸入雙輸出結(jié)構(gòu)。
全文摘要
本發(fā)明公開了一種用于微處理器的多功能定點MAC運算裝置,包括指令派發(fā)單元、指令譯碼單元、存儲單元和指令運算單元,指令運算單元包括用于MAC運算的四級流水運算結(jié)構(gòu)和用于獲取四級流水運算結(jié)構(gòu)的輸出結(jié)果并將輸出結(jié)果寫回存儲單元的結(jié)果選擇模塊,四級流水運算結(jié)構(gòu)從輸入端到輸出端依次包括二級乘法器運算站、加法器運算站以及用于進(jìn)行復(fù)數(shù)、點積和32位乘法運算的復(fù)合運算站,二級乘法器運算站包括多個并行分布的SIMD乘法器,加法器運算站包括多個并行分布的SIMD加法器。本發(fā)明支持多種定點累積乘法,具有占用硬件資源少、硬件復(fù)用率高,可擴(kuò)展性好,編程代碼量小的優(yōu)點。
文檔編號G06F9/302GK102360281SQ20111033697
公開日2012年2月22日 申請日期2011年10月31日 優(yōu)先權(quán)日2011年10月31日
發(fā)明者萬江華, 孫書為, 彭元喜, 李國強(qiáng), 李振濤, 楊惠, 王海波, 陳書明, 陳海燕, 陳勝剛 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)