文獻(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ù)范圍的拓寬帶來了能量及面積上的消耗,。傳統(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)能量損耗的有效方法,它的主要思想是通過減小硬件的復(fù)雜度來提高系統(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ì)通過將低位部分精確加法替代為或門算法實(shí)現(xiàn)非精確運(yùn)算,;文獻(xiàn)[6]研究了一種低功耗的浮點(diǎn)數(shù)乘法器,該研究通過直接截?cái)喔↑c(diǎn)數(shù)的數(shù)值位來減少硬件,;文獻(xiàn)[7]設(shè)計(jì)了一種高效率的浮點(diǎn)數(shù)乘法器,;文獻(xiàn)[8]利用低精度浮點(diǎn)數(shù)來減小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í)也不能表示過大或過小的數(shù),,此時(shí)浮點(diǎn)數(shù)的優(yōu)勢(shì)就體現(xiàn)了出來,它可以在不增加位數(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ī)格化,,如若沒有,,則首先需將輸入的操作數(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è)無符號(hào)定點(diǎn)數(shù)的乘法,,主要包括3個(gè)部分:部分積的生成、部分積壓縮及最終結(jié)果的生成,。本文部分積通過非精確Booth編碼[9]生成,,部分積壓縮通過非精確4-2壓縮器[10]及Wallace樹[11]完成。對(duì)于單精度浮點(diǎn)數(shù),,尾數(shù)的乘法是無符號(hào)定點(diǎn)24×24位的乘法器,,修正Booth編碼產(chǎn)生了13個(gè)部分積;4-2壓縮器,、Wallace樹以及進(jìn)位存儲(chǔ)加法器將部分積壓縮成2個(gè)操作數(shù),;最后48位和進(jìn)位采用快速超前進(jìn)位加法器相加。
非精確Booth編碼是在修正Booth編碼算法上改進(jìn)的,,修正Booth編碼算法的門級(jí)電路如圖3(a)所示,,式(2)給出了部分積(Partial Products,PP)與輸入之間的關(guān)系,。非精確Booth編碼的門級(jí)電路如圖3(b)所示,,式(3)給出了部分積與輸入之間的關(guān)系。
部分積的壓縮通過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樹結(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í),將多出來的位舍棄,,使得有效數(shù)據(jù)的位數(shù)保持在固定的位數(shù)范圍內(nèi),。在精確浮點(diǎn)數(shù)乘法器中,IEEE列出了4種不同的舍入方法:舍入到最近(Round To Nearest,,RTN),、朝正無窮大方向舍入(Round To Positive Infinity,,RTPI)、朝負(fù)無窮大方向舍入(Round To Negative Infinity,,RTNI),、朝0方向舍入(Round To Zero,RTZ),。在非精確設(shè)計(jì)中,,乘積結(jié)果已是非精確的,舍入方法的選擇對(duì)算法沒有太大意義,,所以在非精確浮點(diǎn)數(shù)乘法器中,,舍入單元將不再考慮。
2.3 非精確浮點(diǎn)數(shù)乘法器結(jié)構(gòu)
基于以上分析,,非精確浮點(diǎn)數(shù)乘法器可以通過設(shè)計(jì)非精確無符號(hào)定點(diǎn)數(shù)乘法器,、簡(jiǎn)化規(guī)格化處理及省略舍入單元來實(shí)現(xiàn),具體結(jié)構(gòu)如圖6所示,。
3 圖像處理應(yīng)用
很多非精確浮點(diǎn)數(shù)乘法都應(yīng)用于圖像處理中,, OpenEXR是由Industrial Light and Magic開發(fā)的高動(dòng)態(tài)范圍圖片(High Dynamic-Range,HDR)的文件格式,,它支持16位及32位浮點(diǎn),。本文采用高動(dòng)態(tà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ù)值越大,,說明兩圖片的區(qū)別人眼越容易察覺,;另一度量方法是Q_MOS,它定義為圖片的平均觀測(cè)質(zhì)量,,它的范圍是0~100,,數(shù)值越大說明圖片質(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.