国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于符號補(bǔ)償?shù)腞ISC-V處理器乘法器優(yōu)化

2023-08-03 02:07:50高嘉軒劉鴻瑾張紹林華更新
計(jì)算機(jī)測量與控制 2023年7期
關(guān)鍵詞:樹型乘法器功耗

高嘉軒,劉鴻瑾,施 博,張紹林,華更新

(1.北京控制工程研究所,北京 100190;2.北京軒宇空間科技有限公司,北京 100080)

0 引言

目前嵌入式領(lǐng)域主要應(yīng)用的處理器為ARM架構(gòu)處理器,然而該架構(gòu)經(jīng)過多年的研究與擴(kuò)展,其實(shí)現(xiàn)逐漸變得復(fù)雜。同時(shí),ARM架構(gòu)需要高昂的授權(quán)費(fèi),導(dǎo)致應(yīng)用開發(fā)成本增高,不利于進(jìn)行自主擴(kuò)展開發(fā)。而RISC-V是由加州大學(xué)伯克利分校提出的一個開源指令集架構(gòu),其特點(diǎn)是開源、簡單、可擴(kuò)展等,具有良好的內(nèi)部結(jié)構(gòu)[1]。其高度模塊化的指令集架構(gòu)可應(yīng)用于各種需求的處理器設(shè)計(jì)[2]。出于自主可控的考慮,開源的RISC-V架構(gòu)將成為處理器開發(fā)的新方向。作為一種新興的開源指令集架構(gòu),RISC-V已經(jīng)在學(xué)術(shù)界和工業(yè)界都得到了廣泛的關(guān)注[3]。RISC-V生態(tài)系統(tǒng)的開源社區(qū)為其提供了豐富的對應(yīng)工具鏈與開源軟件,使研究者們能夠在研究中快速利用RISC-V[4]?;赗ISC-V官方指令集手冊,已發(fā)布了多款RISC-V處理器[5],比如Rocket Core[6]、SiFive[7]、BOOM Core[8]和LowRISCSoC[5]。

乘法器是處理器的運(yùn)算核心,其運(yùn)行速度影響了處理器的運(yùn)行速度[9]。許多數(shù)字信號處理和機(jī)器學(xué)習(xí)應(yīng)用需要進(jìn)行大量乘法計(jì)算,其表現(xiàn)在很大程度上受到乘法器性能的限制。以卷積神經(jīng)網(wǎng)絡(luò)為例,超過90%的CNN計(jì)算為乘法累加計(jì)算[10]。因此面對嵌入式領(lǐng)域乘法算力需求較高的應(yīng)用場景,研究開源指令集架構(gòu)的RISC-V乘法器算力與功耗優(yōu)化十分必要。乘法器主要包括三個階段:操作數(shù)相乘產(chǎn)生部分積、部分積累加產(chǎn)生兩個結(jié)果以及兩個結(jié)果相加產(chǎn)生最終結(jié)果。目前整型乘法器的算法設(shè)計(jì)主要有串行累加陣列、Booth編碼和Wallace樹型結(jié)構(gòu)[11]。針對Booth編碼的研究,通過改進(jìn)后的4位編碼加快了對部分積最低位的獲取,但編碼位數(shù)更多,邏輯更為復(fù)雜[12]。而縮減基4-Booth編碼位數(shù),則無法對最低位獲取進(jìn)行優(yōu)化,浪費(fèi)了芯片面積[13]。有研究采用了符號擴(kuò)展,從而減少了資源消耗,但未考慮部分積累加時(shí)的壓縮[14]。而針對Wallace樹型結(jié)構(gòu),有研究表明僅由基本壓縮器構(gòu)成 Wallace 樹結(jié)構(gòu),需要經(jīng)過5級壓縮才能將9個部分積壓縮為2個結(jié)果,其運(yùn)算效率十分低下[15]。文獻(xiàn)[16]對Wallace樹型結(jié)構(gòu)進(jìn)行了改進(jìn),縮短了壓縮延時(shí),解決了蜂鳥E203部分積壓縮延時(shí)大的問題,但其未考慮有符號部分積擴(kuò)展帶來的損失。對壓縮器的研究主要是對其硬件結(jié)構(gòu)進(jìn)行研究,通過傳輸門結(jié)構(gòu)設(shè)計(jì)基本壓縮器,節(jié)省了壓縮器面積,但不能實(shí)現(xiàn)雙軌輸出[17]。而高階壓縮器可以由多個基本壓縮器串聯(lián)形成,但關(guān)鍵路徑上門數(shù)較多,延時(shí)較長影響壓縮器性能[18]。

為了在不提升處理器功耗的前提下,提高RISC-V乘法器算力,減少進(jìn)位次數(shù),壓縮延時(shí),本文提出了一種基于符號補(bǔ)償、基4-Booth編碼以及Wallace樹型結(jié)構(gòu)的優(yōu)化乘法器。由于基4-Booth編碼的系數(shù)存在負(fù)數(shù),在壓縮時(shí),需要進(jìn)行符號擴(kuò)展補(bǔ)齊,負(fù)數(shù)部分積累加時(shí)將產(chǎn)生大量進(jìn)位以及比特翻轉(zhuǎn)。針對該問題,本文提出了基于符號補(bǔ)償?shù)幕?-Booth編碼,有效壓縮了負(fù)數(shù)符號擴(kuò)展時(shí)連續(xù)比特1,減少了在加法時(shí)造成的進(jìn)位以及比特翻轉(zhuǎn),降低了乘法器功耗。傳統(tǒng)Wallace樹型結(jié)構(gòu)由于硬件壓縮器功能簡單,因此其層次過多,關(guān)鍵路徑過長,結(jié)構(gòu)不對稱。針對該問題,本文提出了交替使用3-2壓縮器與4-2壓縮器的Wallace樹型結(jié)構(gòu)。改進(jìn)后的Wallace樹型結(jié)構(gòu)對稱,有效減少了樹型結(jié)構(gòu)的層次,縮短了關(guān)鍵路徑的長度,壓縮了累加過程的延遲,降低了乘法指令執(zhí)行延遲,提高了處理器乘法算力。同時(shí)由于壓縮器階數(shù)不高,因此對電路復(fù)雜度以及延遲未有明顯影響。本文從仿真、綜合以及板級層面對其進(jìn)行了功能性驗(yàn)證以及性能評估,測試結(jié)果表明,與未改進(jìn)的PicoRV32相比,使用改進(jìn)乘法器的PicoRV32在功耗有所降低的情況下,乘法器性能得到了顯著提升。

1 RISC-V指令集架構(gòu)

作為一種新興指令集架構(gòu),RISC-V架構(gòu)在設(shè)計(jì)之初總結(jié)了傳統(tǒng)指令集的優(yōu)缺點(diǎn),避免了傳統(tǒng)指令集的不合理設(shè)計(jì)。RISC-V指令編碼簡單,并且為擴(kuò)展指令集預(yù)留出了足夠的編碼空間。RISC-V指令主要分為6個類型[19],包括:R型指令:寄存器-寄存器操作;I型指令:短立即數(shù)和訪存load操作;S型指令:訪存store操作;B型指令:條件跳轉(zhuǎn)操作;U型指令:長立即數(shù)操作;J型指令:無條件跳轉(zhuǎn)操作。各個類型指令結(jié)構(gòu)如圖1所示。

其中,opcode為操作碼,表示指令操作。funct3和funct7部分作為opcode的附加字段,和opcode共同決定指令的具體操作。rs1和rs2表示兩個源操作數(shù)的寄存器編號,rd表示目的操作數(shù)的寄存器編號。該編碼結(jié)構(gòu)位置固定,便于譯碼模塊對指令進(jìn)行解析。

RISC-V指令集的整數(shù)乘法指令共有4條,分別為MUL、MULH、MULHSU、MULHU,均為R型指令。指令具體描述及用法如表1所示。

表1 RISC-V乘法指令表

其中MUL指令將源操作數(shù)進(jìn)行符號位擴(kuò)展,選取計(jì)算結(jié)果的低32位,MULH指令將源操作數(shù)進(jìn)行符號位擴(kuò)展,選取計(jì)算結(jié)果的高32位,MULHSU指令的源操作數(shù)rs1為有符號數(shù),rs2為無符號數(shù),指令結(jié)果選取計(jì)算結(jié)果的高32位,MULHU指令將源操作數(shù)進(jìn)行零擴(kuò)展,選取計(jì)算結(jié)果的高32位。

2 基4-Booth編碼

1951年,A.D Booth 在其論文“A Signed binary multiplication technique”中提出一種快速乘法算法——Booth算法[20],即為了解決有符號乘法運(yùn)算中復(fù)雜的符號修正問題而提出一種乘法算法,將乘數(shù)轉(zhuǎn)變數(shù)據(jù)表示形式,使其數(shù)據(jù)出現(xiàn)盡可能多的0,其編碼原理如式(1)所示。

y=2n-1(-yn-1+yn-2)+2n-2(-yn-2+yn-3)+

2(-y1+y0)+(-y0+y-1)

(1)

式中,y為乘數(shù),n為乘數(shù)位數(shù),yn-1為y的n-1位。

從式(1)可以看出,基礎(chǔ)Booth編碼并不能在硬件乘法器電路中起到真正的優(yōu)化作用,實(shí)際部分積個數(shù)并未減少。因此在基2-Booth編碼的基礎(chǔ)上提出了改進(jìn)的Booth編碼,即基4-Booth編碼,進(jìn)一步減少部分積個數(shù),從而達(dá)到減少硬件加法器的目的,其編碼原理如式(2)所示。

y=2n-2(-2yn-1+yn-2+yn-3)+

2n-4(-2yn-3+yn-4+yn-5)+

22(-2y3+y2+y1)+(-2y1+y0+y-1)

(2)

式中,y為乘數(shù),n為乘數(shù)位數(shù),yn-1為y的n-1位。

從式(2)可以看出,多項(xiàng)式的項(xiàng)數(shù)相較于式1減少了一半,因此通過基4-Booth編碼可以有效減少部分積的個數(shù)。

然而基4-Booth編碼的系數(shù)存在負(fù)數(shù)的情況,以2n-2項(xiàng)系數(shù)為例,當(dāng)yn-2=0,yn-3=0且yn-1=1時(shí),該項(xiàng)系數(shù)為-2,因此需要考慮負(fù)數(shù)部分積對壓縮的影響。由于部分積位數(shù)不同,在壓縮時(shí),需要進(jìn)行符號擴(kuò)展進(jìn)行補(bǔ)齊,當(dāng)部分積為負(fù)數(shù)時(shí),符號位補(bǔ)齊為1,累加時(shí)將產(chǎn)生大量進(jìn)位以及比特翻轉(zhuǎn),增加乘法器功耗。

3 Wallace樹型結(jié)構(gòu)

基4-Booth編碼優(yōu)化了整型乘法中部分積的數(shù)量,從而減少累加次數(shù)。而為了進(jìn)一步減少累加操作產(chǎn)生的延遲,1964年,C.S.Wallace提出的一種高效快速的加法樹結(jié)構(gòu),被后人稱為Wallace樹[21],其核心思想為將每3個加數(shù)分為一組,壓縮至2個加數(shù),即計(jì)算結(jié)果與進(jìn)位,循環(huán)往復(fù),最終得到累加結(jié)果,其結(jié)構(gòu)如圖2所示。

圖2 Wallace樹型結(jié)構(gòu)圖

圖3 RISC-V處理器結(jié)構(gòu)圖

Wallace樹型結(jié)構(gòu)提高了累加操作的執(zhí)行并發(fā)性,通過樹型結(jié)構(gòu)提高了硬件壓縮器的復(fù)用性,縮短了關(guān)鍵路徑的長度,有效地縮短了累加操作的執(zhí)行時(shí)間。

然而傳統(tǒng)Wallace樹型結(jié)構(gòu)由于硬件壓縮器功能簡單,其層次依舊過多,并且對于32位數(shù)據(jù)計(jì)算,其結(jié)構(gòu)不對稱,增加了電路的復(fù)雜度,消耗了更多布線資源。不規(guī)則的布局布線結(jié)構(gòu),增大了關(guān)鍵路徑的時(shí)延。隨著硬件壓縮器的不斷發(fā)展,Wallace樹型結(jié)構(gòu)可通過使用高階壓縮器實(shí)現(xiàn)進(jìn)一步優(yōu)化。而階數(shù)過高的壓縮器,例如7-3壓縮器、6-3壓縮器存在電路設(shè)計(jì)復(fù)雜、硬件占用資源多、功耗高以及面積大等問題,因此面對嵌入式領(lǐng)域?qū)Φ凸牡男枨?,需要在控制乘法器功耗以及面積的情況下,優(yōu)化Wallace樹型結(jié)構(gòu),從而提高乘法器算力。

4 乘法器優(yōu)化設(shè)計(jì)

本文設(shè)計(jì)的乘法器用于單發(fā)射順序執(zhí)行五級流水線RISC-V處理器32×32位有符號整數(shù)乘法運(yùn)算,主要模塊包括:通過改進(jìn)的基4-Booth編碼產(chǎn)生部分積,通過改進(jìn)的Wallace樹型結(jié)構(gòu)對部分積進(jìn)行壓縮。RISC-V處理器結(jié)構(gòu)圖以及乘法器的結(jié)構(gòu)圖如圖3所示。

在處理器五級流水線結(jié)構(gòu)中,乘法器位于執(zhí)行階段,譯碼模塊從指令中解析出被乘數(shù)與乘數(shù),通過改進(jìn)的基4-Booth編碼產(chǎn)生部分積,部分積陣列通過Wallace樹型結(jié)構(gòu)計(jì)算出累加結(jié)果和進(jìn)位兩個數(shù)據(jù),最后通過加法器計(jì)算出最終結(jié)果,通過多選器根據(jù)指令功能選取對應(yīng)的結(jié)果位。

本文對基4-Booth編碼進(jìn)行改進(jìn),將補(bǔ)碼計(jì)算以及符號位擴(kuò)展與基4-Booth編碼相結(jié)合,減少符號位擴(kuò)展對壓縮效率的影響。對Wallace樹型結(jié)構(gòu)進(jìn)行改進(jìn),加入4-2壓縮器,使改進(jìn)的Wallace樹型結(jié)構(gòu)對稱,減少其層次數(shù)量,縮短關(guān)鍵路徑長度。部分積陣列經(jīng)過改進(jìn)后的Wallace樹型結(jié)構(gòu),產(chǎn)生兩個結(jié)果,通過全加器得到乘法計(jì)算結(jié)果。

4.1 改進(jìn)的基4-Booth編碼

基4-Booth編碼減少了部分積的數(shù)量,其中存在負(fù)數(shù)部分積,而當(dāng)部分積為負(fù)數(shù)時(shí),符號位補(bǔ)齊為1,累加時(shí)將產(chǎn)生大量進(jìn)位以及比特翻轉(zhuǎn),增加乘法器功耗。針對該符號位問題,有研究提出了一種有效的符號補(bǔ)償方式[22],有效減少了符號位擴(kuò)展以及補(bǔ)碼引起的功率消耗。采用符號位直接擴(kuò)展時(shí),以8位數(shù)據(jù)snXXXXXXX為例,其中sn表示符號位,將其擴(kuò)展為16位數(shù)據(jù),其結(jié)果為sn sn sn sn sn sn sn sn snXXXXXXX。而使用該符號補(bǔ)償方式,可對其進(jìn)行等價(jià)邏輯變換,如式(3)所示:

snsnsnsnsnsnsnsnsnXXXXXXX=

(3)

從式(3)可以得出,由于符號位擴(kuò)展部分為連續(xù)相同的數(shù)據(jù),因此根據(jù)二進(jìn)制計(jì)算特點(diǎn),可將符號擴(kuò)展變換為只與符號位及固定值有關(guān)的運(yùn)算,而固定值可提前根據(jù)部分積數(shù)量以及位數(shù)進(jìn)行計(jì)算,其計(jì)算結(jié)果可在部分積累加前通過編碼實(shí)現(xiàn)。因此本文通過將該符號補(bǔ)償方式、補(bǔ)碼計(jì)算與基4-Booth編碼相結(jié)合,形成改進(jìn)后的基4-Booth編碼,擴(kuò)展方式如圖4所示。

圖4 改進(jìn)符號擴(kuò)展圖

本文在基4-Booth編碼的基礎(chǔ)上,加入對符號補(bǔ)償以及補(bǔ)碼的編碼,從而將上述符號補(bǔ)償方式與基4-Booth編碼相結(jié)合,減少部分積壓縮的功率消耗。本文采用如表2所示的編碼。

表2 改進(jìn)的基4-Booth編碼表

表中y2i+1y2iy2i-1代表乘數(shù)的第2i+1、2i和2i-1位,對于32位處理器,i的范圍為0到16;Coefi代表第i個部分積系數(shù);E代表乘上系數(shù)后的符號位,sn代表被乘數(shù)的符號位;S代表補(bǔ)碼加1操作產(chǎn)生的中間值,本級的中間值拼接至下一級部分積,在壓縮過程中實(shí)現(xiàn)補(bǔ)碼計(jì)算。改進(jìn)的基4-Booth編碼電路圖如圖5所示。

其中:Y_2i+1、Y_2i和Y_2i-1代表y2i+1y2iy2i-1,即乘數(shù)的第2i+1、2i和2i-1位,sign代表Coefi的符號,coef1代表Coefi[1],coef0代表Coefi[0],E代表被乘數(shù)符號位的系數(shù),S1代表中間值S[1],S0代表中間值S[0]。

圖5 改進(jìn)基4-Booth編碼電路圖

從圖5可以看出,改進(jìn)的Booth編碼通過與門、或門、非門以及二選一多選器實(shí)現(xiàn),經(jīng)過4個門的時(shí)間延遲即可得出編碼結(jié)果。

根據(jù)Coefi的編碼結(jié)果,分別對被乘數(shù)進(jìn)行相應(yīng)操作。對于系數(shù)為負(fù)數(shù)的部分積,對被乘數(shù)進(jìn)行按位取反,對于系數(shù)絕對值為2的部分積,對被乘數(shù)進(jìn)行左移1位操作。將乘以系數(shù)的部分積與編碼后的符號位以及中間值進(jìn)行拼接,形成改進(jìn)后的部分積,該部分積陣列輸入Wallace樹型結(jié)構(gòu)進(jìn)行累加計(jì)算。

采用基于符號補(bǔ)償?shù)幕?-Booth編碼,不需要擴(kuò)展全部符號位,減少了由于擴(kuò)展大量連續(xù)的1,在加法時(shí)造成的進(jìn)位以及翻轉(zhuǎn),降低了乘法器功耗。

4.2 改進(jìn)的Wallace樹型結(jié)構(gòu)

基礎(chǔ)的Wallace樹型結(jié)構(gòu)采用3-2壓縮器,通過樹型結(jié)構(gòu)有效提高累加操作的并行性,同時(shí)從硬件設(shè)計(jì)角度,增加了加法器的復(fù)用性,減少了硬件加法器的數(shù)量。為了更好地配合32位處理器的運(yùn)算需求,在不提高處理器功耗的情況下,盡可能減少Wallace樹型結(jié)構(gòu)的層次,提出了一種交替使用3-2壓縮器與4-2壓縮器的Wallace樹型結(jié)構(gòu),改進(jìn)后的Wallace樹型結(jié)構(gòu)示意圖如圖6所示。

圖6 改進(jìn)的Wallace樹型結(jié)構(gòu)圖

由于使用符號補(bǔ)償方式,32位操作數(shù)將產(chǎn)生17個部分積,因此為了使Wallace樹型結(jié)構(gòu)對稱,將32位乘法運(yùn)算經(jīng)過符號擴(kuò)展,產(chǎn)生18個部分積,18個部分積經(jīng)過3-2壓縮器產(chǎn)生12個操作數(shù),再經(jīng)過4-2壓縮器產(chǎn)生6個操作數(shù),6個操作數(shù)經(jīng)過3-2壓縮器產(chǎn)生4個操作數(shù),在經(jīng)過4-2壓縮器產(chǎn)生最終的2個結(jié)果。

其中3-2壓縮器的邏輯表達(dá)式如式(4)~(5)所示:

S0=X0⊕X1⊕X2

(4)

C1=X0X1+X0X2+X1X2

(5)

式中,S0為第0個3-2壓縮器的壓縮結(jié)果,C1為第0個3-2壓縮器的進(jìn)位結(jié)果,X0、X1和X2為3-2壓縮器的3個輸入操作數(shù)。

其1位電路示意圖如圖7所示。

圖7 3-2壓縮器1位電路圖

從圖7可以看出,3-2壓縮器僅使用與門、或門和或非門構(gòu)成,經(jīng)過3個門的時(shí)間延遲即可得出結(jié)果。

4-2壓縮器,又稱5-3計(jì)數(shù)器,包括5個輸入和3個輸出,輸入和輸出分別包括一個進(jìn)位。傳統(tǒng)的4-2壓縮器是由兩個串行連接的3-2壓縮器組成,而改進(jìn)后的4-2壓縮器可以通過異或門和2-1的多選器構(gòu)成,改進(jìn)后的4-2壓縮器的邏輯表達(dá)式如下所示:

Cout=X0X1+X0X2+X1X2

Xor=X0⊕X1⊕X2⊕X3

S0=Xor⊕Cin

式中,S0為第0個4-2壓縮器的壓縮結(jié)果,C1為第0個4-2壓縮器的進(jìn)位結(jié)果,Cout為同級4-2壓縮器的進(jìn)位結(jié)果,X0、X1、X2和X3為4-2壓縮器的4個輸入操作數(shù)。

由于Cout的邏輯表達(dá)式與Cin無關(guān),所以4-2壓縮器之間雖有信號連接,但不會形成行波進(jìn)位鏈,4-2壓縮器之間依舊是并行的,其結(jié)構(gòu)示意圖如圖8所示。

圖8 4-2壓縮器結(jié)構(gòu)圖

圖9 乘法指令波形圖

采用3-2壓縮器和4-2壓縮器交替的Wallace樹型結(jié)構(gòu)對稱,減少了布局布線資源,有效減少了樹型結(jié)構(gòu)的層次,縮短了關(guān)鍵路徑的長度,壓縮了累加過程的延遲。同時(shí),使用的3-2壓縮器和4-2壓縮器電路簡單,電路最大延時(shí)短,未造成處理器功耗以及面積大幅提高。

5 實(shí)驗(yàn)結(jié)果與分析

本文的實(shí)驗(yàn)環(huán)境如表3所示。

表3 實(shí)驗(yàn)環(huán)境表

采用Verilog語言對設(shè)計(jì)的32位乘法器進(jìn)行實(shí)現(xiàn),并嵌入到PicoRV32中,通過匯編語言對乘法器進(jìn)行功能仿真,將結(jié)果與Spike仿真結(jié)果進(jìn)行對比驗(yàn)證乘法器功能的正確性。

圖9為乘法器執(zhí)行乘法指令的仿真波形,其結(jié)果與Spike仿真的結(jié)果一致。

從圖9可以看出,通過MUL指令計(jì)算32’habcde與32’habcde相乘,其計(jì)算結(jié)果為32’h4caed084,與預(yù)期結(jié)果相符。通過如下所示代碼,對其余指令以及邊界值進(jìn)行驗(yàn)證。

.global MUL

MUL:

li x3, 0x80000000

li x4, 0x7fffffff

li x10, 0xabcde

mul x5, x0, x3

bne x5, x0, __fail

mul x5, x0, x0

bne x5, x0, __fail

mul x5, x0, x4

bne x5, x0, __fail

mul x5, x4, x4

li x6, 0x1

bne x5, x6, __fail

mul x5, x4, x0

bne x5, x0, __fail

mul x5, x4, x3

li x6, 0x80000000

bne x5, x6, __fail

mul x5, x4, x10

li x6, 0xfff54322

bne x5, x6, __fail

mul x5, x3, x3

li x6, 0x0

bne x5, x6, __fail

mul x5, x3, x0

bne x5, x0, __fail

mul x5, x3, x4

li x6, 0x80000000

bne x6, x5, __fail

mul x5, x3, x10

li x6, 0x0

bne x6, x5, __fail

mul x5, x10, x10

li x6, 0x4caed084

bne x6, x5, __fail

上述代碼對32位操作數(shù)的最大正值0x7fffffff、最小負(fù)值0x80000000、中間值0xabcde以及0進(jìn)行乘法計(jì)算,通過對乘法器計(jì)算結(jié)果的判斷,進(jìn)行程序跳轉(zhuǎn),從而測試指令執(zhí)行結(jié)果是否正確。當(dāng)指令結(jié)果正確,即符合預(yù)期時(shí),程序順序執(zhí)行,仿真成功結(jié)束。當(dāng)指令結(jié)果不正確時(shí),程序跳轉(zhuǎn)至__fail,表示程序執(zhí)行錯誤,仿真錯誤結(jié)束。其余3條乘法指令與MUL指令測試程序相同。如圖10所示,測試結(jié)果為仿真成功結(jié)束,表明指令執(zhí)行結(jié)果正確,即設(shè)計(jì)的乘法器功能正確。

圖10 乘法指令測試結(jié)果圖

通過圖9波形圖,本文的乘法器接收到乘法指令,第一個時(shí)鐘周期計(jì)算累加結(jié)果以及進(jìn)位,第二個時(shí)鐘周期兩者相加得出最終結(jié)果,因此乘法所需時(shí)鐘周期為2個時(shí)鐘周期。為了更加直觀地體現(xiàn)本文乘法器的性能,將優(yōu)化后的乘法器與PicoRV32乘法器以及文獻(xiàn)[16]進(jìn)行了性能對比,結(jié)果如表4所示。

表4 乘法器時(shí)鐘周期數(shù)對比表

從表4可以看出,與文獻(xiàn)[16]相比,本文的乘法器執(zhí)行乘法運(yùn)算花費(fèi)的時(shí)鐘周期數(shù)相同。而相較于PicoRV32乘法器,本文改進(jìn)后的乘法器大幅減少了乘法計(jì)算所花費(fèi)的時(shí)鐘周期數(shù),乘法指令執(zhí)行時(shí)間縮短了88.2%,減少了乘法指令的執(zhí)行延遲,提高了處理器的算力。

本文使用Synopsys公司的Design Compiler軟件,基于smic40nm工藝庫,對乘法器進(jìn)行了綜合,對其面積進(jìn)行了評估,結(jié)果如表5所示。

表5 乘法器面積對比表

從表5可以看出,由于擴(kuò)展了基4-Booth編碼以及使用了4-2壓縮器,本文乘法器相較于PicoRV32原乘法器在面積上增加了13.3%。而與文獻(xiàn)[16]乘法器相比,本文乘法器在面積上優(yōu)于文獻(xiàn)[16],減少了10.6%。從表4可以得出,本文乘法器與文獻(xiàn)[16]乘法器執(zhí)行乘法指令時(shí)鐘周期數(shù)相同,因此本文設(shè)計(jì)優(yōu)化的乘法器優(yōu)于文獻(xiàn)[16]。

Dhrystone可對處理器的整型運(yùn)算性能進(jìn)行測量。因此本文通過運(yùn)行測量處理器運(yùn)算能力的基準(zhǔn)程序之一的Dhrystone,在板級對帶有本文乘法器的RISC-V處理器進(jìn)行了進(jìn)一步性能與功耗測試,其性能與PicoRV32對比如表6所示。

表6 處理器性能對比表

從表6可以看出,與PicoRV32相比,本文設(shè)計(jì)的乘法器在算力方面提高了71.7%,而處理器算力提高的同時(shí),處理器功耗降低了4.9%。文獻(xiàn)[16]提升了處理器算力,但處理器功耗也有所提高,而本文的乘法器與其相比,算力有所提高,功耗有所降低,提高了處理器的能耗比。

6 結(jié)束語

本文通過對RISC-V架構(gòu)中整數(shù)乘法指令的研究以及乘法器的研究,提出了基于符號補(bǔ)償?shù)幕?-Booth編碼以及使用3-2壓縮器和4-2壓縮的改進(jìn)Wallace樹型結(jié)構(gòu),設(shè)計(jì)實(shí)現(xiàn)了改進(jìn)后的RISC-V處理器乘法器。通過RISC-V匯編語言對改進(jìn)后的乘法器進(jìn)行功能仿真,驗(yàn)證了其功能正確性。使用Design Compiler軟件對乘法器面積進(jìn)行了綜合,與處理器原乘法器以及已有工作進(jìn)行了對比分析。通過板級測試,對處理器算力以及功耗進(jìn)行了評估,并與原處理器以及已有工作進(jìn)行了對比分析。結(jié)果表明,本文改進(jìn)的乘法器功能正確,執(zhí)行整型乘法指令所花費(fèi)的時(shí)鐘周期為2,相較于PicoRV32乘法器,縮短了88.2%。Dhrystone分?jǐn)?shù)為2.115 728 DMIPS/MHz,功耗為0.035 42 W,相較于未改進(jìn)的PicoRV32,性能提高了71.7%,功耗降低了4.9%,在功耗有少許降低的情況下,大幅提高了處理器性能,提高了處理器計(jì)算速度。與已有研究工作相比,本文改進(jìn)的乘法器在執(zhí)行乘法指令時(shí)鐘周期數(shù)相同的情況下,面積與功耗均優(yōu)于已有工作,適用于嵌入式領(lǐng)域?qū)μ幚砥髅娣e、功耗以及算力有較高需求的應(yīng)用場景。本文的乘法器確實(shí)在縮短整型乘法執(zhí)行時(shí)間方面有一定效果,但在功耗方面優(yōu)化并不明顯,同時(shí)由于增加了符號擴(kuò)展編碼,乘法器面積有所增加,未來的改進(jìn)方向?yàn)椋?/p>

1)優(yōu)化編碼設(shè)計(jì),盡可能降低編碼邏輯復(fù)雜度;

2)考慮乘法器的低功耗優(yōu)化。

猜你喜歡
樹型乘法器功耗
勘 誤
遼寧絲綢(2022年3期)2022-11-24 16:06:07
一種快速養(yǎng)成的柞樹樹型—壓干樹型
遼寧絲綢(2022年2期)2022-07-09 03:40:02
基于FPGA的流水線單精度浮點(diǎn)數(shù)乘法器設(shè)計(jì)*
揭開GPU功耗的面紗
個人電腦(2016年12期)2017-02-13 15:24:40
基于樹型結(jié)構(gòu)的防空力量配屬方案生成模型研究
數(shù)字電路功耗的分析及優(yōu)化
電子制作(2016年19期)2016-08-24 07:49:54
“功耗”說了算 MCU Cortex-M系列占優(yōu)
電子世界(2015年22期)2015-12-29 02:49:44
IGBT模型優(yōu)化及其在Buck變換器中的功耗分析
樹型組織結(jié)構(gòu)圖的算法研究及實(shí)現(xiàn)
乘法器模塊在FPGA中的實(shí)現(xiàn)
新郑市| 托克托县| 武穴市| 扶绥县| 福州市| 玉田县| 镇康县| 苍南县| 射洪县| 抚顺市| 谢通门县| 海伦市| 丹江口市| 曲靖市| 凤翔县| 石渠县| 平安县| 鹤庆县| 普安县| 宜宾市| 孟州市| 青冈县| 安国市| 蒲江县| 利辛县| 定兴县| 固原市| 湄潭县| 克山县| 文山县| 恩平市| 高碑店市| 天全县| 曲麻莱县| 连平县| 大姚县| 涿州市| 河曲县| 林西县| 宣化县| 镇安县|