蔣 林,田 璞,鄧軍勇
(1.西安郵電大學(xué),電子工程學(xué)院,陜西 西安 710121; 2.西安科技大學(xué),集成電路實(shí)驗(yàn)室,陜西 西安 710054)
計(jì)算機(jī)處理器需要處理大量的乘法運(yùn)算,由于乘法運(yùn)算的復(fù)雜度較高,所以,乘法器的運(yùn)算速度和功耗通常也就決定了處理器的運(yùn)行速度和功耗[1]。單精度浮點(diǎn)乘法器采用兩個(gè)符合IEEE754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)完成乘法運(yùn)算,與定點(diǎn)運(yùn)算相比,浮點(diǎn)運(yùn)算單元(floating point units,FPUs)提供了高精度、高動(dòng)態(tài)范圍的實(shí)際值以及簡(jiǎn)單的編程模型[2]。
一般而言,頻率、功耗和面積是衡量乘法器和處理器性能的3個(gè)重要指標(biāo)。為了降低浮點(diǎn)乘法器功耗,大多數(shù)的設(shè)計(jì)都是通過(guò)犧牲計(jì)算的精度來(lái)實(shí)現(xiàn)的[3-4]。例如,在某些對(duì)精度要求不高的機(jī)器學(xué)習(xí)和數(shù)據(jù)傳感技術(shù)中,有研究直接利用一個(gè)乘數(shù)的值來(lái)代替乘法的結(jié)果,以降低功耗[5],但是,該方法的誤差較大。在對(duì)運(yùn)算精度和速度比較高的應(yīng)用如信號(hào)處理、神經(jīng)網(wǎng)絡(luò)和流處理等應(yīng)用[6-7]中,為提高計(jì)算速度,有研究通過(guò)重構(gòu)流水線級(jí)數(shù)的方式來(lái)提高運(yùn)算頻率[8],這會(huì)增大設(shè)計(jì)面積開(kāi)銷(xiāo)。為了降低浮點(diǎn)乘法的面積開(kāi)銷(xiāo),使用改進(jìn)的Booth編碼,調(diào)整擴(kuò)展位的位置可以有效減少版圖面積[9],但是,這種設(shè)計(jì)會(huì)增加浮點(diǎn)乘法運(yùn)算的功耗。
單精度浮點(diǎn)乘法器的關(guān)鍵技術(shù)主要在尾數(shù)乘法的設(shè)計(jì)部分,該部分通常由定點(diǎn)數(shù)乘法實(shí)現(xiàn)。傳統(tǒng)的定點(diǎn)數(shù)乘法算法有原碼一位乘法、Booth算法和Wallace樹(shù)型結(jié)構(gòu)。原碼一位乘法基本思想是“判斷—加法—右移”循環(huán),實(shí)現(xiàn)簡(jiǎn)單,功耗小,但是,該算法的實(shí)現(xiàn)頻率低。Booth算法是對(duì)原碼一位乘法的改進(jìn),每次判斷右移的尾數(shù)為兩位,其實(shí)現(xiàn)的周期數(shù)幾乎是原碼一位乘法的一半,但是這種算法功耗較大[10]。Wallace結(jié)構(gòu)在乘法器設(shè)計(jì)中采用樹(shù)型結(jié)構(gòu),減少了關(guān)鍵路徑和所需的加法單元數(shù)目,但是,這種方法會(huì)增加功耗和面積[11]。目前的設(shè)計(jì)更多地關(guān)注某一個(gè)單個(gè)性能,難以兼顧對(duì)頻率、面積和功耗的需求。
針對(duì)以上方法的不足,擬設(shè)計(jì)一種模式可配置單精度浮點(diǎn)乘法器。利用互補(bǔ)金屬氧化物半導(dǎo)體(complementary metal oxide semiconductor,CMOS)工藝設(shè)計(jì)原碼一位、基4-Booth和Wallace樹(shù)型算法3種常用定點(diǎn)數(shù)乘法的浮點(diǎn)乘法器,并且測(cè)試這3種乘法器的性能。在乘法器的尾數(shù)乘法部分添加模式選擇模塊,根據(jù)應(yīng)用場(chǎng)景對(duì)頻率、功耗和面積3個(gè)性能的不同需求選擇和切換相應(yīng)的算法,以滿足不同應(yīng)用對(duì)處理器性能的要求。
浮點(diǎn)乘法器通過(guò)A和B兩個(gè)操作數(shù)的符號(hào)位進(jìn)行異或操作來(lái)計(jì)算C=A×B的符號(hào)位,其將指數(shù)項(xiàng)的有效值相加,并將兩個(gè)尾數(shù)相乘得到結(jié)果的尾數(shù)。浮點(diǎn)乘法器的原理示意圖如圖1所示。
圖1 浮點(diǎn)乘法器原理示意圖
單精度浮點(diǎn)乘法器的操作數(shù)符合IEEE754標(biāo)準(zhǔn)。這種表示方式可以使數(shù)據(jù)的精度更高,表示范圍更大。具體的精度浮點(diǎn)數(shù)格式示意圖如圖2。其中,最高位s表示符號(hào)位,階碼e表示第23-30位,尾數(shù)f表示第0-22位。尾數(shù)用原碼表示,第一位總是1,可以在尾數(shù)省略第一位的1,稱(chēng)為隱藏位,因而單精度格式的23位尾數(shù)實(shí)際是24位有效數(shù)字。
圖2 精度浮點(diǎn)數(shù)格式示意圖
單精度浮點(diǎn)乘法器的關(guān)鍵計(jì)算模塊就是尾數(shù)乘法部分,這部分通常通過(guò)定點(diǎn)數(shù)乘法實(shí)現(xiàn),常見(jiàn)的定點(diǎn)數(shù)乘法有原碼一位乘法、Booth算法[11]和Wallace樹(shù)型結(jié)構(gòu)[9]。
原碼一位乘法的原理示意圖如圖3所示。經(jīng)過(guò)n次的“判斷—加法—右移”循環(huán),直到輸出乘積,但隨著操作數(shù)位寬的增加原碼一位乘法循環(huán)的次數(shù)會(huì)增加,即圖中右移的次數(shù)會(huì)增加,導(dǎo)致較低的計(jì)算頻率。
圖3 原碼一位乘法原理
基4-Booth乘法[11]原理示意圖如圖4所示?;?-Booth乘法是對(duì)原碼一位乘法的改進(jìn),其每次右移的位數(shù)是兩位。基4-Booth乘法一定程度上減少了計(jì)算周期數(shù),圖4中控制邏輯的計(jì)數(shù)器比原碼一位乘法復(fù)雜,會(huì)造成更大的功耗。
圖4 基4-Booth乘法原理
Wallace結(jié)構(gòu)的乘法器在設(shè)計(jì)中采用樹(shù)型結(jié)構(gòu)[9],一種常用的6:4進(jìn)位保存加法器(carry save adder,CSA)的Wallace樹(shù)型結(jié)構(gòu)乘法器原理示意圖如圖5所示。Wallace樹(shù)型6:4CSA壓縮器能夠減少關(guān)鍵路徑和所需的加法器單元數(shù)目,同時(shí)也提高了計(jì)算頻率,但是,這會(huì)造成較大的能量消耗和面積,另外,由于每個(gè)計(jì)算單元的計(jì)算量會(huì)增大,從而增大了布線資源消耗。
圖5 6:4CSA壓縮器的Wallace樹(shù)型結(jié)構(gòu)
不同的應(yīng)用領(lǐng)域?qū)μ幚砥餍阅芤蟾鞑幌嗤?。例如,在電子產(chǎn)品等應(yīng)用領(lǐng)域,對(duì)功耗有較高的要求。在視頻圖像處理領(lǐng)域,由于對(duì)海量圖像數(shù)據(jù)處理的實(shí)時(shí)性要求越來(lái)越高,就需要低功耗且占用面積小的浮點(diǎn)乘法運(yùn)算。傳統(tǒng)的乘法算法無(wú)法同時(shí)兼顧面積、頻率和功耗。
提出一種模式可配置的浮點(diǎn)乘法器,根據(jù)不同應(yīng)用領(lǐng)域?qū)π阅艿牟煌枨笠约?種定點(diǎn)數(shù)乘法算法在頻率、面積和功耗方面的優(yōu)勢(shì),配置對(duì)應(yīng)的標(biāo)志位,選擇相應(yīng)的乘法算法實(shí)現(xiàn)浮點(diǎn)乘法運(yùn)算。
設(shè)計(jì)的可配置浮點(diǎn)乘法器包括符號(hào)異或模塊、指數(shù)加模塊、判斷模塊、尾數(shù)乘法模塊和尾數(shù)規(guī)格化及舍入模塊,其結(jié)構(gòu)示意圖如圖6所示。
圖6 可配置浮點(diǎn)乘法器結(jié)構(gòu)圖
單精度浮點(diǎn)乘法器的實(shí)現(xiàn)過(guò)程包括如下5個(gè)步驟。
步驟1將32位的浮點(diǎn)數(shù)分段,分別為符號(hào)位、指數(shù)位和尾數(shù),同時(shí)恢復(fù)尾數(shù)的隱藏位“1”。
步驟2對(duì)符號(hào)位進(jìn)行異或操作。
步驟3將階碼(指數(shù))相加,尾數(shù)相乘。
步驟4對(duì)尾數(shù)進(jìn)行規(guī)格化和舍入操作,然后判斷階碼是否有溢出。
步驟5將計(jì)算的符號(hào)位、階碼和尾數(shù)進(jìn)行拼接并作為結(jié)果輸出。
浮點(diǎn)乘法運(yùn)算的尾數(shù)乘法采用定點(diǎn)數(shù)乘法。尾數(shù)乘法部分一般采用原碼一位乘法、基4-Booth算法和Wallace樹(shù)型算法3種定點(diǎn)數(shù)乘法算法實(shí)現(xiàn)。利用90 nm CMOS工藝設(shè)計(jì)了基于這3種定點(diǎn)數(shù)乘法算法的浮點(diǎn)乘法器,并且完成邏輯綜合(design compiler,DC),3種算法的浮點(diǎn)乘法器性能測(cè)試結(jié)果如表1所示。
表1 3種浮點(diǎn)乘法器性能測(cè)試結(jié)果
可以看出,原碼一位乘法在面積和功耗方面具有優(yōu)勢(shì),當(dāng)應(yīng)用場(chǎng)景對(duì)面積和功耗要求較高時(shí),采用原碼一位乘法是較好的選擇。Wallace樹(shù)型算法在延時(shí)(即頻率)性能較好,當(dāng)應(yīng)用場(chǎng)景對(duì)延時(shí)/頻率有較高要求時(shí),應(yīng)該選擇Wallace樹(shù)型算法。
根據(jù)表1中的性能測(cè)試結(jié)果,進(jìn)而設(shè)計(jì)了可配置浮點(diǎn)乘法器的面積最優(yōu)模式、頻率最優(yōu)模式和功耗最優(yōu)模式3種計(jì)算模式,具體的模式及其算法選擇如表2所示。
表2 模式及實(shí)現(xiàn)算法
可配置的單精度浮點(diǎn)乘法器的設(shè)計(jì)思路是在尾數(shù)乘法部分添加了模式選擇模塊,根據(jù)不同應(yīng)用對(duì)延時(shí)、功耗和面積3個(gè)性能的需求在原碼一位乘法和Wallace 樹(shù)型算法之間進(jìn)行選擇和切換,以滿足不同應(yīng)用對(duì)處理器性能的要求。
1)面積、功耗最優(yōu)模式
當(dāng)應(yīng)用對(duì)乘法器面積要求較高時(shí),電路的標(biāo)志位模式切換至“00”,當(dāng)應(yīng)用對(duì)乘法器功耗要求較高時(shí),模式切換至“01”,選擇在面積和功耗方面有優(yōu)勢(shì)的原碼一位乘法算法實(shí)現(xiàn)浮點(diǎn)乘法運(yùn)算。面積或功耗最優(yōu)浮點(diǎn)乘法原理示意圖如圖7所示。
圖7 面積或功耗最優(yōu)浮點(diǎn)乘法原理
2)頻率最優(yōu)模式
在數(shù)字信號(hào)處理等應(yīng)用中,對(duì)浮點(diǎn)運(yùn)算單元的頻率要求較高,電路的標(biāo)志位模式切換至“01”,選擇頻率較優(yōu)的Wallace樹(shù)型算法來(lái)實(shí)現(xiàn)浮點(diǎn)乘法。頻率最優(yōu)浮點(diǎn)乘法原理示意圖如圖8所示。
圖8 頻率最優(yōu)浮點(diǎn)乘法原理
在ModelSim SE-6410.1c上實(shí)現(xiàn)功能仿真,仿真結(jié)果表明,設(shè)計(jì)的可配置浮點(diǎn)乘法器計(jì)算一次浮點(diǎn)乘法運(yùn)算最多需要23個(gè)時(shí)鐘周期,最少需要7個(gè)時(shí)鐘周期,平均需要15個(gè)時(shí)鐘周期。和文獻(xiàn)[12]的粗粒度可重構(gòu)處理器實(shí)現(xiàn)的浮點(diǎn)乘法器相比,所需周期個(gè)數(shù)平均降低了87.3%。對(duì)比結(jié)果如表3所示。
表3 與文獻(xiàn)[12]對(duì)比
為評(píng)估所提出的模式可配置單精度浮點(diǎn)乘法器,在90 nm CMOS工藝上做了邏輯綜合,其中面積、延時(shí)和功耗的結(jié)果如表4所示,綜合結(jié)果表明,與文獻(xiàn)[2]的ifpmul32相比,延時(shí)和功耗均有所降低,最小延時(shí)降低了57%,最小面積降低了76.6%。
表4 與文獻(xiàn)[2]對(duì)比
針對(duì)現(xiàn)有單精度浮點(diǎn)乘法器不能兼顧不同應(yīng)用領(lǐng)域?qū)︻l率、面積和功耗的需求,提出了一種模式可配置浮點(diǎn)乘法器。利用CMOS工藝設(shè)計(jì)原碼一位乘法、基4-Booth算法和Wallace樹(shù)型算法3種常用定點(diǎn)數(shù)乘法的浮點(diǎn)乘法器,并且測(cè)試其性能。在乘法器的尾數(shù)乘法部分添加模式選擇模塊,根據(jù)應(yīng)用場(chǎng)景對(duì)頻率、功耗和面積3個(gè)性能的不同需求選擇和切換相應(yīng)的算法,以滿足不同應(yīng)用對(duì)對(duì)處理器性能的要求。實(shí)驗(yàn)結(jié)果表明,設(shè)計(jì)方案能夠根據(jù)應(yīng)用場(chǎng)景實(shí)現(xiàn)不同算法之間的切換,且性能較好。