侯力秩
(翱捷科技(深圳)有限公司,深圳 福田 518000)
目前,在DSP業(yè)界存在兩類數(shù)據(jù)表示形式,同時伴隨產(chǎn)生了兩類DSP架構(gòu)產(chǎn)品。關(guān)于兩類產(chǎn)品的不同特性,業(yè)界存在很多討論甚至爭議。本文大致描述兩類數(shù)據(jù)表示格式在DSP應(yīng)用中的不同特性,并闡述其特點(diǎn)和使用場景。
在計(jì)算機(jī)系統(tǒng)的發(fā)展過程中提出過多種方法表示實(shí)數(shù),但是目前為止使用最廣泛的是浮點(diǎn)表示法。IEEE(Institute of Electrical and Electronics Engineers,電子電氣工程師協(xié)會)在I985年制定的IEEE 754(IEEE Standard for Binary Floating-Point Arithmetic,ANSI/IEEE Std 754-1985)二進(jìn)制浮點(diǎn)運(yùn)算規(guī)范,是浮點(diǎn)運(yùn)算部件的工業(yè)標(biāo)準(zhǔn)[1]。
采用以下浮點(diǎn)表示格式表示16位浮點(diǎn)數(shù),該格式為IEEE 745標(biāo)準(zhǔn)的子集,除了能夠完成要求的實(shí)數(shù)表示外,處理上也更為簡潔??偽粚抦=16 bit,格式如圖1所示,用一個三元組{S,E,M}來表示一個數(shù)N。
圖1 三元組表示法舉例
(1)S(Sign)表示N的符號位,位寬為1 bit,對應(yīng)值s滿足:N>0時,s=0;N<0時,s=1;N=0時,s=0或1均可。
(2)E(Exponent)表示N的指數(shù)位,位于S和M之間的n位,默認(rèn)位寬n=5 bit。E采用移碼表示,固定偏置為16。E的數(shù)值范圍為0~31,但其表示數(shù)值的實(shí)際范圍為-16~15。
(3)M(Mantissa)表示N的尾數(shù)位,位于N末尾,默認(rèn)位寬為10 bit。小數(shù)點(diǎn)在最左邊,且左邊還有一個隱含位,這個隱含位固定為1。假定M為“0101100111”,其對應(yīng)的實(shí)際值在二進(jìn)制數(shù)值上是“1.0101100111”。
N數(shù)值計(jì)算式如下[2]:
可見,它的最小正數(shù)為min=1.0×2-16≈1.525 9×10-5,最大正數(shù)為max=(1.1111111111)bin×215=65 504。
定點(diǎn)數(shù)據(jù)格式如圖2所示,16位定點(diǎn)數(shù)的首位為符號位,0表示正數(shù),1表示負(fù)數(shù)。后面的數(shù)據(jù)部分為二進(jìn)制整數(shù)部分和二進(jìn)制小數(shù)部分。整個數(shù)值部分表示的數(shù)據(jù)大小為整數(shù)部分和小數(shù)部分之和。
圖2 16 bit定點(diǎn)數(shù)據(jù)格式
由于定點(diǎn)數(shù)表示的小數(shù)點(diǎn)位置可以發(fā)生變化,因此定點(diǎn)數(shù)根據(jù)小數(shù)點(diǎn)位置的不同可以定義成不同的數(shù)據(jù)格式。如表1所示,Q代表小數(shù)所占據(jù)的位寬,S則代表整數(shù)和小數(shù)所占據(jù)的位寬。
傳統(tǒng)意義上,浮點(diǎn)數(shù)運(yùn)算具有如下優(yōu)點(diǎn)。
(1)動態(tài)范圍大。由于浮點(diǎn)數(shù)采用了類似科學(xué)計(jì)數(shù)法形式的數(shù)據(jù)表示方式,因此其數(shù)據(jù)分布為非均勻狀態(tài),如圖3所示。在同樣數(shù)據(jù)寬度的情況下,浮點(diǎn)數(shù)據(jù)能夠表示更寬廣的動態(tài)范圍,因此浮點(diǎn)DSP進(jìn)行數(shù)據(jù)處理時基本不會發(fā)生數(shù)據(jù)溢出現(xiàn)象。
表1 定點(diǎn)數(shù)據(jù)格式范圍
圖3 浮點(diǎn)數(shù)和定點(diǎn)數(shù)的數(shù)據(jù)分布對此
(2)浮點(diǎn)數(shù)據(jù)舍入誤差小,表示數(shù)據(jù)更精確。定點(diǎn)數(shù)相對于浮點(diǎn)數(shù)會引入更大的量化誤差。例如:對于32位浮點(diǎn)數(shù),每個相鄰的數(shù)據(jù)之間的數(shù)據(jù)間隙約為該數(shù)據(jù)的千萬分之一。每引入一個新的浮點(diǎn)數(shù),需要舍入這個間隙的一半。對于16位定點(diǎn)數(shù),數(shù)據(jù)間的間隙是等間距的。對于整數(shù)表示的浮點(diǎn)數(shù)(-32 768~32 767),引入10 000左右的數(shù)據(jù)則會引入1/10 000左右的舍入誤差;表示1 000左右的數(shù)據(jù),則會引入1/1 000的舍入誤差。標(biāo)準(zhǔn)的量化誤差一般為舍入誤差的1/3,這樣在表示數(shù)據(jù)時,浮點(diǎn)數(shù)引入的量化噪聲將遠(yuǎn)遠(yuǎn)小于定點(diǎn)數(shù)。特別是在累加操作中,定點(diǎn)數(shù)引入的量化噪聲可能得到進(jìn)一步累加,導(dǎo)致結(jié)果精確度下降。
首先,尋找現(xiàn)場光源。即便在弱光環(huán)境下依然會有些許高光區(qū)域,利用畫面之中的最亮部分進(jìn)行對焦。其次,尋找對比度高的邊界進(jìn)行對焦。當(dāng)下不少數(shù)碼相機(jī)依然使用對比檢測方式進(jìn)行對焦,所以在對焦時尋找對比度高的邊界,可以發(fā)揮相機(jī)的優(yōu)勢。最后,利用相機(jī)的中心對焦點(diǎn)進(jìn)行對焦。一般相機(jī)的中心對焦點(diǎn)都是對焦能力最強(qiáng)的地方,關(guān)閉自動選擇對焦物體模式,而采用中心點(diǎn)的單點(diǎn)對焦模式,先對焦再構(gòu)圖,可以加大對焦的成功率。
傳統(tǒng)意義上,定點(diǎn)數(shù)運(yùn)算具有如下優(yōu)點(diǎn)。
(1)定點(diǎn)運(yùn)算單元的設(shè)計(jì)相對于浮點(diǎn)運(yùn)算單元較為簡單直接,一般定點(diǎn)運(yùn)算單元所需的內(nèi)部單元少,結(jié)構(gòu)想對簡單,因此定點(diǎn)運(yùn)算單元在設(shè)計(jì)成本上相對于浮點(diǎn)運(yùn)算單元具有一定的設(shè)計(jì)優(yōu)勢。
(2)定點(diǎn)運(yùn)算單元由于設(shè)計(jì)面積較小等原因,具有較小的運(yùn)行功耗,因此對于對功耗有需求的處理器具有一定的吸引力。
傳統(tǒng)意義上,定點(diǎn)數(shù)運(yùn)算具有如下缺點(diǎn)。
(1)定點(diǎn)數(shù)的動態(tài)范圍較小,對動態(tài)范圍較大的DSP運(yùn)算一般無法較好地表示,只能通過飽和截位等操作進(jìn)行近似處理,喪失了一定的運(yùn)算精度。
(2)定點(diǎn)數(shù)相對于浮點(diǎn)數(shù)會引入更大的量化誤差。
定點(diǎn)DSP由于在動態(tài)范圍、表示精度和開發(fā)復(fù)雜度上的不足,往往會通過多種方式進(jìn)行彌補(bǔ)[3]。
(1)提供相應(yīng)的庫函數(shù)和開發(fā)工具,輔助軟件設(shè)計(jì)人員加速完成浮點(diǎn)算法到定點(diǎn)程序的轉(zhuǎn)化;
(2)內(nèi)部設(shè)置較高精度范圍的累加器,防止誤差在累加時被累積;
(3)設(shè)置相應(yīng)的溢出等狀態(tài)位,通知程序人員當(dāng)前的運(yùn)算狀態(tài);
(4)設(shè)計(jì)專門的飽和歸一化指令,完成對數(shù)據(jù)結(jié)果的處理;
(5)指令集分為整數(shù)操作指令和定點(diǎn)數(shù)操作指令,并對結(jié)果進(jìn)行不同方式的舍入等處理;
(6)乘法器一般帶有對結(jié)果的移位功能,直接控制結(jié)果的輸出定點(diǎn)格式。
綜上所述,在進(jìn)行高復(fù)雜度、高精度要求的數(shù)據(jù)處理如3G、4G等通信算法時,浮點(diǎn)DSP具有很強(qiáng)的設(shè)計(jì)優(yōu)勢。因此,各大DSP處理器設(shè)計(jì)公司都在其高端DSP領(lǐng)域采用了浮點(diǎn)設(shè)計(jì)或浮點(diǎn)/定點(diǎn)混合技術(shù)。