專利名稱:一種低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及中央處理器以及數(shù)字信號處理器中核心運算單元的設(shè)計領(lǐng)域,尤其涉及一種低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法。
背景技術(shù):
計算機和通訊技術(shù)的迅猛發(fā)展,極大的改變了我們的工作和生活方式,人類的生產(chǎn)生活越來越依賴計算機等設(shè)備,科學研究和工程應(yīng)用都對浮點數(shù)的運算性能提出了很高的要求,其中乘累加是數(shù)字信號處理、科學計算中的關(guān)鍵運算單元。在傳統(tǒng)結(jié)構(gòu)中,矢量點乘運算由于數(shù)據(jù)相關(guān)性的原因,流水線無法每個周期計算一次乘累加,所以吞吐率會大幅下降,其每秒浮點運算次數(shù)與峰值性能相距甚遠。在實現(xiàn)諸如有限長單位沖激響應(yīng)濾波器時,傳統(tǒng)的浮點數(shù)運算裝置需要多次寄存器存取操作才能完成,性能損失嚴重。另外,隨著嵌入式手持設(shè)備越來越普及,系統(tǒng)的功耗越來越被人們所關(guān)注和研究,因而如何降低芯片功耗也成為當前集成電路設(shè)計中的關(guān)鍵因素之一。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有設(shè)計對矢量點乘操作的不足,提供一種低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法。低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法的步驟如下:I)提取計算矢量點乘運算C = 舄X馬的個數(shù)N,在N個周期內(nèi)每周期輸入一對
操作數(shù)A與操作數(shù)B,前三級流水線執(zhí)行操作數(shù)A與操作數(shù)B的浮點乘法操作,得到乘積結(jié)果,乘積結(jié)果采用進位保留形式傳遞給下一級;2)在第四級流水線將乘積進行位寬拓展,對于雙精度浮點數(shù)將乘積從基2權(quán)重轉(zhuǎn)換到基64權(quán)重,對于單精度浮點數(shù)將乘積從基2權(quán)重轉(zhuǎn)換到基32權(quán)重,將權(quán)重提高以后,尾數(shù)位寬增加,指數(shù)位寬減少;3)將轉(zhuǎn)換后的乘積在第五級流水線進行累加操作,累加的臨時結(jié)果反饋到輸入端,與下一周期輸入的乘積繼續(xù)累加,直到N次全部完成,從而消除流水線的停頓,到達每周期完成一次乘積累加,累加器采用4-2進位保留加法器;4)將進位保留結(jié)果通過第六級流水線與第七級流水線的最終加法器與移位器完成權(quán)重的復原,在第N+6個周期輸出最終乘累加的結(jié)果。所述的權(quán)重轉(zhuǎn)換為:乘積需要的位寬調(diào)整采用基64-2/32-2轉(zhuǎn)換模塊,對于雙精度浮點數(shù)指數(shù)的高5位保留,尾數(shù)根據(jù)指數(shù)低6位左移;對于單精度浮點數(shù)指數(shù)的高3位保留,尾數(shù)根據(jù)指數(shù)低5位左移。所述的累加操作為:累加值根據(jù)三種指數(shù)差值的執(zhí)行不同的常量移位,分別對應(yīng)累加值右移位64位,左移位64位,或者不移位,將移位后的尾數(shù)相加,在累加器執(zhí)行的過程中,如果累加的臨時結(jié)果積累了超過63個零,那么需要將臨時結(jié)果左移64位,從而使有效位大于53位。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:I)本發(fā)明的浮點數(shù)乘累加裝置可以完成任意長度N的矢量點乘運算,可以每周期計算一次乘累加,避免了處理器中寄存器的頻繁存取操作。本發(fā)明可以全流水執(zhí)行,上述運算可以在N+6個周期內(nèi)完成,兼容單精度與雙精度浮點數(shù);2)本發(fā)明執(zhí)行一次長度為N的矢量點乘運算,規(guī)格化與舍入模塊僅僅使用到一次,從而大幅降低了該類運算的功耗;3)本發(fā)明具有模塊化設(shè)計思想,可以運用到處理器,或者在FPGA上組成運算陣列,完全符合IEEE浮點數(shù)運算標準,針對矢量運算具有低功耗和高吞吐率的特點。
圖1是低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法的原理圖;圖2是本發(fā)明的浮點數(shù)數(shù)據(jù)存儲格式示意圖;圖3是本發(fā)明的乘法器模塊圖;圖4是本發(fā)明的基64-2轉(zhuǎn)換模塊圖;圖5是本發(fā)明的單周期累加算法的原理示意圖;圖6是本發(fā)明的單周期累加模塊圖;圖7是本發(fā)明的低功耗原理示意圖。具體實施方法如圖1、2所示,低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法的步驟如下:I)提取計算矢量點乘運算C = I=為X馬的個數(shù)N,在N個周期內(nèi)每周期輸入一對
操作數(shù)A與操作數(shù)B,前三級流水線執(zhí)行操作數(shù)A與操作數(shù)B的浮點乘法操作,得到乘積結(jié)果,乘積結(jié)果采用進位保留形式傳遞給下一級;2)在第四級流水線將乘積進行位寬拓展,對于雙精度浮點數(shù)將乘積從基2權(quán)重轉(zhuǎn)換到基64權(quán)重,對于單精度浮點數(shù)將乘積從基2權(quán)重轉(zhuǎn)換到基32權(quán)重,將權(quán)重提高以后,尾數(shù)位寬增加,指數(shù)位寬減少;3)將轉(zhuǎn)換后的乘積在第五級流水線進行累加操作,累加的臨時結(jié)果反饋到輸入端,與下一周期輸入的乘積繼續(xù)累加,直到N次全部完成,從而消除流水線的停頓,到達每周期完成一次乘積累加,累加器采用4-2進位保留加法器;4)將進位保留結(jié)果通過第六級流水線與第七級流水線的最終加法器與移位器完成權(quán)重的復原,在第N+6個周期輸出最終乘累加的結(jié)果。如圖3所示,乘法器采用booth編碼與華萊士樹實現(xiàn),結(jié)果采用進位保留的形式,而不直接求出乘積結(jié)果,從而節(jié)約一個加法器的面積與功耗,最終結(jié)果求和會在累加完成后執(zhí)行。為了保證同時兼容雙精度與單精度浮點數(shù)。該乘法器采用硬件隔離的手段,在單精度模式下復用雙精度模式下的運算邏輯,同時并行執(zhí)行兩組單精度浮點數(shù)。如圖4所示,所述的權(quán)重轉(zhuǎn)換為:乘積需要的位寬調(diào)整采用基64-2/32-2轉(zhuǎn)換模塊,對于雙精度浮點數(shù)指數(shù)的高5位保留,尾數(shù)根據(jù)指數(shù)低6位左移;對于單精度浮點數(shù)指數(shù)的高3位保留,尾數(shù)根據(jù)指數(shù)低5位左移。擴展了尾數(shù)位寬后,使得在累加的過程中可以將規(guī)格化與舍入步驟后置到后續(xù)流水線,在完成所有累加之后只做一次處理。同理對于兩組單精度浮點數(shù)而言,該模塊將采用硬件隔離的手段,同時做兩組基32-2的轉(zhuǎn)換。經(jīng)過轉(zhuǎn)換以后的尾數(shù)寬度為116位,指數(shù)僅保留聞5位。如圖5、6所示,所述的累加操作為:累加值根據(jù)三種指數(shù)差值的執(zhí)行不同的常量移位,分別對應(yīng)累加值右移位64位,左移位64位,或者不移位,將移位后的尾數(shù)相加,在累加器執(zhí)行的過程中,如果累加的臨時結(jié)果積累了超過63個零,那么需要將臨時結(jié)果左移64位,從而使有效位大于53位。對于基轉(zhuǎn)換以后的乘積,如果乘積與累加臨時結(jié)果的指數(shù)相差在I或0,那么直接將較小的數(shù)右移64位,再執(zhí)行累加。如果乘積與累加臨時結(jié)果的指數(shù)相差大于等于2,那么直接將較大數(shù)作為累加結(jié)果。如圖7所示,由于圖1中第6,7級流水線在整個乘累加過程中只使用到一次,因此在累加過程中可以將其關(guān)閉,本發(fā)明采用簡單的與門邏輯來隔離第6,7級的數(shù)據(jù)翻轉(zhuǎn),只要乘累加的數(shù)據(jù)還在第5級流水線反饋循環(huán),那么控制信號將置為0,從而第6,7級的組合邏輯的信號將不會改變,當乘累加運算結(jié)束以后,第6,7級的控制信號將置為1,從而使得數(shù)據(jù)可以傳遞到后續(xù)模塊。本發(fā)明采用smic 0.13um工藝實現(xiàn),頻率可以達到400MHz,邏輯規(guī)模等效于50K標準與非門,動態(tài)功耗為54mW,由此可以看到本設(shè)計相比傳統(tǒng)設(shè)計在不犧牲面積與速度的前
提下,使得矢量點乘操作的效率大幅提高。計算一次x#僅僅需要N+6個周期即
可完成。上述實施例用來解釋說明本發(fā)明,而不是對本發(fā)明進行限制,在本發(fā)明的精神和權(quán)利要求的保護范圍內(nèi),對本發(fā)明做出的任何修改和潤飾,都落入本發(fā)明的保護范圍。
權(quán)利要求
1.一種低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法,其特征在于,它的步驟如下: 1)提取計算矢量點乘運算C=1:1X馬的個數(shù)N,在N個周期內(nèi)每周期輸入一對操作數(shù)A與操作數(shù)B,前三級流水線執(zhí)行操作數(shù)A與操作數(shù)B的浮點乘法操作,得到乘積結(jié)果,乘積結(jié)果采用進位保留形式傳遞給下一級; 2)在第四級流水線將乘積進行位寬拓展,對于雙精度浮點數(shù)將乘積從基2權(quán)重轉(zhuǎn)換到基64權(quán)重,對于單精度浮點數(shù)將乘積從基2權(quán)重轉(zhuǎn)換到基32權(quán)重,將權(quán)重提高以后,尾數(shù)位寬增加,指數(shù)位寬減少; 3)將轉(zhuǎn)換后的乘積在第五級流水線進行累加操作,累加的臨時結(jié)果反饋到輸入端,與下一周期輸入的乘積繼續(xù)累加,直到N次全部完成,從而消除流水線的停頓,到達每周期完成一次乘積累加,累加器采用4-2進位保留加法器; 4)將進位保留結(jié)果通過第六級流水線與第七級流水線的最終加法器與移位器完成權(quán)重的復原,在第N+6個周期輸出最終乘累加的結(jié)果。
2.根據(jù)權(quán)利要求1所述的一種低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法,其特征在于所述的權(quán)重轉(zhuǎn)換為:乘積需要的位寬調(diào)整采用基64-2/32-2轉(zhuǎn)換模塊,對于雙精度浮點數(shù)指數(shù)的高5位保留,尾數(shù)根據(jù)指數(shù)低6位左移;對于單精度浮點數(shù)指數(shù)的高3位保留,尾數(shù)根據(jù)指數(shù)低5位左移。
3.根據(jù)權(quán)利要求1所述的一種低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法,其特征在于所述的累加操作為:累加值根據(jù)三種指數(shù)差值的執(zhí)行不同的常量移位,分別對應(yīng)累加值右移位64位,左移位64位,或者不移位,將移位后的尾數(shù)相加,在累加器執(zhí)行的過程中,如果累加的臨時結(jié)果積累了超過63個零,那么需要將臨時結(jié)果左移64位,從而使有效位大于53位。
全文摘要
本發(fā)明公開了一種低功耗高吞吐的浮點數(shù)乘累加單元的實現(xiàn)方法。它的步驟如下1)計算矢量點乘運算時,在N個周期內(nèi)每周期輸入一對操作數(shù)A與操作數(shù)B,前三級流水線執(zhí)行操作數(shù)A與操作數(shù)B的浮點乘法操作;2)在第四級流水線將乘積進行權(quán)重轉(zhuǎn)換,使尾數(shù)位寬增加,指數(shù)位寬減少;3)將轉(zhuǎn)換后的乘積在第五級流水線進行累加操作,每周期完成一次乘積的累加;4)第六級流水線與第七級流水線完成權(quán)重的復原,在第N+6個周期輸出最終乘累加的結(jié)果。本發(fā)明可完成任意長度N的矢量點乘運算,每周期計算一次乘累加,避免了處理器中寄存器的頻繁存取操作。上述運算可以在N+6個周期內(nèi)完成,兼容單精度與雙精度浮點數(shù),并有效降低浮點數(shù)運算的功耗。
文檔編號G06F7/52GK103176767SQ20131006690
公開日2013年6月26日 申請日期2013年3月1日 優(yōu)先權(quán)日2013年3月1日
發(fā)明者沈海斌, 沈俊 申請人:浙江大學