文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.011
中文引用格式: 尹培培. 非精確浮點(diǎn)數(shù)乘法器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2016,42(3):38-41,46.
英文引用格式: Yin Peipei. Design and analysis of inexact floating-point multiplier[J].Application of Electronic Technique,2016,42(3):38-41,46.
0 引言
目前,集成電路的設(shè)計(jì)工藝已經(jīng)進(jìn)入深亞微米階段,工藝水平大幅度提高,計(jì)算機(jī)微處理器也不斷更新?lián)Q代。在微處理系統(tǒng)中,數(shù)據(jù)類型分為定點(diǎn)數(shù)和浮點(diǎn)數(shù),相對(duì)于定點(diǎn)數(shù)的有限范圍及有限精度,浮點(diǎn)數(shù)可以靈活地表示更大范圍及更高精度的實(shí)數(shù),由于以上原因,浮點(diǎn)數(shù)運(yùn)算成為微處理器以及信號(hào)處理系統(tǒng)中的重要部件之一。但同時(shí)相對(duì)于定點(diǎn)數(shù)而言,浮點(diǎn)數(shù)運(yùn)算需要更復(fù)雜的硬件電路,消耗更大的面積及能量,因此為數(shù)據(jù)范圍的拓寬帶來(lái)了能量及面積上的消耗。傳統(tǒng)的電路設(shè)計(jì)大多運(yùn)用精確計(jì)算算法,但對(duì)于一些圖像處理的可容錯(cuò)應(yīng)用,這些系統(tǒng)并不需要絕對(duì)的精確性。所以將非精確運(yùn)算[1]運(yùn)用到這些系統(tǒng)中可以減小能量損耗及電路面積,同時(shí)也可提高系統(tǒng)的性能。
非精確的算法設(shè)計(jì)作為減少容錯(cuò)設(shè)備的動(dòng)態(tài)及靜態(tài)能量損耗的有效方法,它的主要思想是通過(guò)減小硬件的復(fù)雜度來(lái)提高系統(tǒng)的性能及效率。目前非精確計(jì)算主要集中在定點(diǎn)數(shù)的研究[2-5],文獻(xiàn)[2]中非精確處理器犧牲了7.58%的相對(duì)錯(cuò)誤率,但速度、面積比精確處理器速度提高了將近15倍,能量損耗也減少了將近15倍。研究表明運(yùn)用非精確算法設(shè)計(jì)出的芯片面積更小,速度更快,能量損耗更低。雖然定點(diǎn)數(shù)在非精確研究方面取得了較成功的應(yīng)用,但相對(duì)于定點(diǎn)數(shù)而言,目前對(duì)非精確浮點(diǎn)數(shù)運(yùn)算的研究并不多。由于浮點(diǎn)數(shù)運(yùn)算電路更復(fù)雜,能量也消耗更多,非精確浮點(diǎn)數(shù)算法的研究顯得尤為重要。
文獻(xiàn)[5]設(shè)計(jì)了一種非精確的浮點(diǎn)數(shù)加法器,該設(shè)計(jì)通過(guò)將低位部分精確加法替代為或門(mén)算法實(shí)現(xiàn)非精確運(yùn)算;文獻(xiàn)[6]研究了一種低功耗的浮點(diǎn)數(shù)乘法器,該研究通過(guò)直接截?cái)喔↑c(diǎn)數(shù)的數(shù)值位來(lái)減少硬件;文獻(xiàn)[7]設(shè)計(jì)了一種高效率的浮點(diǎn)數(shù)乘法器;文獻(xiàn)[8]利用低精度浮點(diǎn)數(shù)來(lái)減小MP3解碼時(shí)的內(nèi)存損耗。
本文提出了一種非精確浮點(diǎn)數(shù)乘法器的算法設(shè)計(jì),同時(shí)將該算法應(yīng)用于高動(dòng)態(tài)范圍圖片的圖像處理中,并將結(jié)果與精確浮點(diǎn)數(shù)乘法器的應(yīng)用結(jié)果進(jìn)行對(duì)比。文章內(nèi)容分布如下:在第1節(jié)中,首先簡(jiǎn)單介紹了浮點(diǎn)數(shù)構(gòu)成及精確的浮點(diǎn)數(shù)乘法器的結(jié)構(gòu);在第2節(jié)中提出了非精確乘法器的設(shè)計(jì)方法;在第3節(jié)中將該非精確乘法器應(yīng)用到高動(dòng)態(tài)范圍圖片中;最后總結(jié)了該設(shè)計(jì)算法。
1 背景簡(jiǎn)介
1.1 浮點(diǎn)數(shù)表示方法
在算數(shù)運(yùn)算中,數(shù)據(jù)的表示方法有兩個(gè),定點(diǎn)數(shù)和浮點(diǎn)數(shù)。定點(diǎn)數(shù)可以表示以0為中心的一定范圍的正負(fù)整數(shù),由于定點(diǎn)數(shù)小數(shù)點(diǎn)固定,不能表示太大動(dòng)態(tài)范圍的數(shù),同時(shí)也不能表示過(guò)大或過(guò)小的數(shù),此時(shí)浮點(diǎn)數(shù)的優(yōu)勢(shì)就體現(xiàn)了出來(lái),它可以在不增加位數(shù)的前提下擴(kuò)展數(shù)據(jù)的動(dòng)態(tài)范圍。
在IEEE 754-2008標(biāo)準(zhǔn)中,浮點(diǎn)數(shù)是一個(gè)以3個(gè)量表示的二進(jìn)制位串(如圖1所示),該位串分為3個(gè)部分:符號(hào)位部分、指數(shù)位部分和尾數(shù)位部分。
浮點(diǎn)數(shù)的標(biāo)準(zhǔn)表達(dá)式為:
其中,S為符號(hào)位,當(dāng)S=0時(shí)表示該浮點(diǎn)數(shù)是一個(gè)正值,當(dāng)S=1時(shí)表示該浮點(diǎn)數(shù)是一個(gè)負(fù)值;E為指數(shù)位,bias表示偏移量,對(duì)于單精度bias=127,雙精度bias=1023,則E-bias既可為正數(shù)也可為負(fù)數(shù);M為尾數(shù)位,對(duì)于規(guī)格化的尾數(shù),存儲(chǔ)時(shí)默認(rèn)省去小數(shù)點(diǎn)前的1,則對(duì)于非零尾數(shù),尾數(shù)值為1.M。
1.2 精確浮點(diǎn)數(shù)乘法器
最初的浮點(diǎn)數(shù)乘法器是依靠軟件實(shí)現(xiàn)的,但隨著超大規(guī)模集成技術(shù)的發(fā)展以及乘法器對(duì)計(jì)算速度要求的提高,乘法運(yùn)算逐漸變成一個(gè)硬件的部件,浮點(diǎn)數(shù)乘法的基本原理是將相乘兩數(shù)的指數(shù)和作為乘積的指數(shù),相乘兩數(shù)尾數(shù)的積作為乘積的尾數(shù),相乘兩數(shù)的符號(hào)位異或作為乘積符號(hào)位。
精確的浮點(diǎn)數(shù)乘法器如圖2所示,默認(rèn)這里兩個(gè)操作數(shù)都已規(guī)格化,如若沒(méi)有,則首先需將輸入的操作數(shù)規(guī)格化。然后從兩操作數(shù)中分別提取每個(gè)操作數(shù)的符號(hào)位、指數(shù)位及尾數(shù)位,并將尾數(shù)位補(bǔ)充省略的第一位1。浮點(diǎn)數(shù)的乘法只要包括兩個(gè)運(yùn)算:指數(shù)的加法和尾數(shù)的乘法,這兩運(yùn)算結(jié)束后就是將結(jié)果進(jìn)行規(guī)格化,生成符合IEEE 754-2008標(biāo)準(zhǔn)的結(jié)果。
2 非精確浮點(diǎn)數(shù)乘法器設(shè)計(jì)
非精確乘法器的設(shè)計(jì)是基于圖2所示的精確計(jì)算的算法級(jí)設(shè)計(jì),主要是將非精確定點(diǎn)數(shù)乘法器運(yùn)用到浮點(diǎn)數(shù)尾數(shù)乘法設(shè)計(jì)中,同時(shí)考慮到尾數(shù)乘積已是非精確結(jié)果,舍入單元及規(guī)格化也進(jìn)行了簡(jiǎn)化。
2.1 尾數(shù)乘法器
尾數(shù)乘法器就是計(jì)算兩個(gè)浮點(diǎn)數(shù)尾數(shù)部分的乘積,也就是兩個(gè)無(wú)符號(hào)定點(diǎn)數(shù)的乘法,主要包括3個(gè)部分:部分積的生成、部分積壓縮及最終結(jié)果的生成。本文部分積通過(guò)非精確Booth編碼[9]生成,部分積壓縮通過(guò)非精確4-2壓縮器[10]及Wallace樹(shù)[11]完成。對(duì)于單精度浮點(diǎn)數(shù),尾數(shù)的乘法是無(wú)符號(hào)定點(diǎn)24×24位的乘法器,修正Booth編碼產(chǎn)生了13個(gè)部分積;4-2壓縮器、Wallace樹(shù)以及進(jìn)位存儲(chǔ)加法器將部分積壓縮成2個(gè)操作數(shù);最后48位和進(jìn)位采用快速超前進(jìn)位加法器相加。
非精確Booth編碼是在修正Booth編碼算法上改進(jìn)的,修正Booth編碼算法的門(mén)級(jí)電路如圖3(a)所示,式(2)給出了部分積(Partial Products,PP)與輸入之間的關(guān)系。非精確Booth編碼的門(mén)級(jí)電路如圖3(b)所示,式(3)給出了部分積與輸入之間的關(guān)系。
部分積的壓縮通過(guò)4-2壓縮器實(shí)現(xiàn),非精確壓縮器是在精確4-2壓縮器上改進(jìn)得到,精確4-2壓縮器的實(shí)現(xiàn)方法如圖4(a)所示,式(4)~式(6)給出了壓縮結(jié)果與部分積輸入之間的關(guān)系。非精確4-2壓縮器的實(shí)現(xiàn)方法如圖4(b)所示,式(7)~式(8)給出了壓縮結(jié)果與部分積輸入之間的關(guān)系。
以單精度浮點(diǎn)數(shù)為例,非精確尾數(shù)乘法器的Wallace樹(shù)結(jié)構(gòu)如圖5所示,由于最終標(biāo)準(zhǔn)化后只取乘積的前24位,所以進(jìn)行24×24乘法時(shí)0~23位的計(jì)算直接舍去,24~42位進(jìn)行非精確計(jì)算,43~47位進(jìn)行精確計(jì)算,圖5中實(shí)線框中進(jìn)行非精確Booth編碼及非精確壓縮,虛線框進(jìn)行精確Booth編碼及精確壓縮。
2.2 舍入單元
舍入單元的作用是在結(jié)果被返回放回浮點(diǎn)格式時(shí),將多出來(lái)的位舍棄,使得有效數(shù)據(jù)的位數(shù)保持在固定的位數(shù)范圍內(nèi)。在精確浮點(diǎn)數(shù)乘法器中,IEEE列出了4種不同的舍入方法:舍入到最近(Round To Nearest,RTN)、朝正無(wú)窮大方向舍入(Round To Positive Infinity,RTPI)、朝負(fù)無(wú)窮大方向舍入(Round To Negative Infinity,RTNI)、朝0方向舍入(Round To Zero,RTZ)。在非精確設(shè)計(jì)中,乘積結(jié)果已是非精確的,舍入方法的選擇對(duì)算法沒(méi)有太大意義,所以在非精確浮點(diǎn)數(shù)乘法器中,舍入單元將不再考慮。
2.3 非精確浮點(diǎn)數(shù)乘法器結(jié)構(gòu)
基于以上分析,非精確浮點(diǎn)數(shù)乘法器可以通過(guò)設(shè)計(jì)非精確無(wú)符號(hào)定點(diǎn)數(shù)乘法器、簡(jiǎn)化規(guī)格化處理及省略舍入單元來(lái)實(shí)現(xiàn),具體結(jié)構(gòu)如圖6所示。
3 圖像處理應(yīng)用
很多非精確浮點(diǎn)數(shù)乘法都應(yīng)用于圖像處理中, OpenEXR是由Industrial Light and Magic開(kāi)發(fā)的高動(dòng)態(tài)范圍圖片(High Dynamic-Range,HDR)的文件格式,它支持16位及32位浮點(diǎn)。本文采用高動(dòng)態(tài)范圍圖片來(lái)驗(yàn)證該非精確浮點(diǎn)數(shù)乘法器的有效性。高動(dòng)態(tài)范圍可視區(qū)分度檢測(cè)(High Dynamic Range Visible Difference Predictor,HDR-VDP)是度量?jī)煞鶊D片區(qū)別的方法,它可以檢測(cè)兩幅圖片的可視區(qū)別。圖7、圖8分別為精確、非精確浮點(diǎn)數(shù)乘法生成圖片,兩幅圖片的區(qū)別檢測(cè)圖如圖9所示。
HDR-VDP中整體可視檢測(cè)中定義了兩個(gè)度量方法,一個(gè)為P_det,定義為兩幅圖片的可視區(qū)別概率,它的范圍為0~1,數(shù)值越大,說(shuō)明兩圖片的區(qū)別人眼越容易察覺(jué);另一度量方法是Q_MOS,它定義為圖片的平均觀測(cè)質(zhì)量,它的范圍是0~100,數(shù)值越大說(shuō)明圖片質(zhì)量越好。經(jīng)測(cè)量本文設(shè)計(jì)的非精確浮點(diǎn)數(shù)乘法器的兩個(gè)度量值分別為:
度量值P_det表明兩幅圖片的差異不太容易被檢測(cè),度量值Q_MOS表明兩幅圖片質(zhì)量很好。
4 結(jié)論
本文主要采用非精確定點(diǎn)尾數(shù)乘法器設(shè)計(jì)非精確浮點(diǎn)數(shù)乘法器,并將該乘法器運(yùn)用到圖像處理中,結(jié)果表明本文所設(shè)計(jì)的非精確浮點(diǎn)數(shù)乘法器具有很好的性能。
參考文獻(xiàn)
[1] PALEM K,INGAMNENI A.Ten years of building broken-chips:the physics and engineeringofinexact computing[J].ACMTrans.Embedded Computing Systems,2013,12(2),87:1-23.
[2] LINGAMNENI A,MUNTIMADUGU A,ENZ C,et al.Algorithmic methodologies for ultra-efficient inexact architectures for sustaining technology scaling[J].Proc.ACM Int.Conf.Computing Frontiers,2012:3-12.
[3] YANG Z,JAIN A,LIANG J,et al.Approximate XOR XNOR-based Adders for inexact computing[J].Proc.13rd IEEE Conf.Nanotechnol.(IEEE-NANO),2013:690-693.
[4] Liu Weiqiang,Chen Linbin,Wang Chenghua,et al.Design and analysis of inexact floating-point adders[J].IEEE Transactions on Computers,2016,65(1):308-314.
[5] Liu Weiqiang,Chen Linbin,WANG C,et al.Inexact Floating-Point Adder for Dynamic Image Processing[J].Proceedings of the 14th IEEEInternational Conference on Nano-technology Toronto,Canada,2014.
[6] TONG J Y,NAGLE D,RUTENBAR R.Reducing power byoptimizingthe necessary precision/rangeof floating-point arithmetic[J].IEEE Trans.Very Large Scale Integr.Syst.2000,8:273-286.
[7] GUPTA A,MANDAVALLI S,MOONEY V,et al.Low power probabilistic floatingpoint multiplier design[J].Proc.IEEE Comput.Soc.Annu.Symp.VLSI,2011:182-187.
[8] EILERT J,EHLIAR A,LIU D.Using low precision floating point numbers to reduce memory cost for MP3 decoding[J].Proc. 6th IEEE Workshop on Multimedia Signal Processing,2004:119-122.
[9] YEH W C,JEN C W.High-speed booth encoded parallel multiplier design[J].IEEE Trans.Computers,2000,49(7):692-701.
[10] Amir Momeni,Jie Han,Paolo Montuschi,et al.Design and analysis of approximate compressor for multilication[J].IEEE Trans.Computers,2015,64(4):984-994.
[11] MILLAR B,MADRID P E,SWARTZLANDER E E.A fast hybrid multiplier combining Booth and Wallace/Dadda algorithms[J].Proceedings of the 35th MidwestSymposium on Circuits and Systems,1992,1(8):158-165.