新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 浮點計算的動態(tài)范圍適合更多應(yīng)用

浮點計算的動態(tài)范圍適合更多應(yīng)用

——
作者:美國模擬器件公司 Boris Lerner博士 時間:2007-04-23 來源:電子產(chǎn)品世界 收藏

  迄今為止浮點數(shù)字信號處理器(DSP)的成本比定點DSP急劇下降。隨著價格差距開始消失,你什么時候應(yīng)該重新考慮浮點DSP是否更適合你的應(yīng)用?如果定點DSP為已經(jīng)成功的設(shè)計提供了最好的結(jié)果,那么就沒有什么要重新考慮了。如果不是這樣,這種“權(quán)衡”可能會向浮點DSP傾斜,因為它擴(kuò)大動態(tài)范圍(而且它對提高應(yīng)用性能和簡化編程具有重要意義),縮短面市時間并且節(jié)約成本。

動態(tài)范圍:寬廣的優(yōu)勢

  工程師選擇浮點處理器的主要原因就是它們能夠擴(kuò)大的動態(tài)范圍,這樣或者滿足多種算法的需要,或者有利于多種算法。常見的例子包括由方程系統(tǒng)構(gòu)成的解決方案,例如矩陣求逆、快速傅立葉變換(FFT)、濾波、自適應(yīng)濾波、運(yùn)動估計、最優(yōu)控制、模式檢測、算法編碼數(shù)據(jù)壓縮,以及計算機(jī)圖形學(xué)等。這些算法支持各種各樣的產(chǎn)品:從高性能的音頻到雷達(dá)、工業(yè)控制,再到醫(yī)學(xué)和軍事應(yīng)用必需的高端圖像處理。

  過去,性能與價格的折衷意味著具有浮點運(yùn)算能力的DSP只能專門用于非寬動態(tài)范圍不可的高端的應(yīng)用。對于希望有大動態(tài)范圍但不是非常必須的大多數(shù)應(yīng)用,開發(fā)商可以在提高應(yīng)用性能和(或)簡化編程方面從浮點DSP中得到好處。

  定點處理器和浮點處理器的可用動態(tài)范圍之間有多大差別呢?用數(shù)字對比可提供清晰的描述。例如,一個16 bit的定點處理器具有96 dB的動態(tài)范圍,支持65,536個量化步長。(在信號處理中,量化是用一個有限精度的數(shù)字表示的一個值。可提供的量化等級越多,表示結(jié)果的精度就越高。)一個32 bit的定點處理器具有192 dB的動態(tài)范圍,支持4,294,967,296個量化步長。

  與此不同的是,一個32 bit的IEEE格式的浮點處理器具有1536 dB的動態(tài)范圍,它可能導(dǎo)致推出支持115,792,089,237,316,195,423,570,985,008,687,907,853,269,
984,665,640,564,039,457,584,007,913,129,639,936個量化步長。雖然這么大的量化步長數(shù)是不可能的,因為需要256 bit才能將它們?nèi)烤幋a,但是像這種程度的分辨率對于非常小的數(shù)字是有可能的。而且小數(shù)字的用處就在于它能精確地表示信號,因為隨著數(shù)字增大,分辨率就會變得越來越粗。

  在某些情況下這樣程度的分辨率可能會認(rèn)為過分。但是,幾乎可以肯定如果換成減小動態(tài)范圍的16 bit和32 bit定點處理器完全不能充分地讓工程師高效而輕松地完成工作。

  讓我們舉一個在定點處理器上進(jìn)行矩陣求逆算法的簡單例子。如果假設(shè)輸入數(shù)字具有16 bit的精度,輸出數(shù)字可能需要擴(kuò)展16 bit的動態(tài)范圍,取決于輸入的小數(shù)形式。最壞情況下按照16.0形式(16 bit整數(shù),0 bit小數(shù))輸入,那么輸出必定為0.16形式(0 bit整數(shù),16 bit小數(shù))。因此它必需將處理器的總動態(tài)范圍擴(kuò)展到32 bit以便處理這兩種數(shù)字,或者采用塊浮點算法——該方法將指數(shù)相同而尾數(shù)不同的一組數(shù)據(jù)作為數(shù)據(jù)塊進(jìn)行處理來補(bǔ)償有限動態(tài)范圍的定點處理技術(shù)

  采用塊浮點將數(shù)據(jù)分成組,組內(nèi)的數(shù)據(jù)相對彼此按比例縮放,但是不能與其它組的成員按相同的比例縮放,即使諸如加法這樣簡單的數(shù)學(xué)運(yùn)算。在比較復(fù)雜的矩陣求逆情況中,分組之間需要比較復(fù)雜的數(shù)學(xué)運(yùn)算,即使是中等的矩陣求逆運(yùn)算如果采用定點處理器而不是浮點處理器也很難實現(xiàn),。

  為了更好地理解浮點處理器能夠提供寬動態(tài)范圍的意義,讓我們來分析幾種其它的廣泛使用的DSP算法,看它們?nèi)绾尾捎枚c和浮點運(yùn)算的。

FFT,F(xiàn)IR濾波和相關(guān)

  快速傅立葉變換(FFT)是另一類不適用于定點處理器的算法。其原因是:FFT分級實現(xiàn),每一級都要經(jīng)歷所謂的“位增長”率。每一級的最大值可能會逐級加倍。(實際上這些值幾乎增加到三倍,但是這樣的增長率并不是每一級都會持續(xù)發(fā)生的。)如果不精心地規(guī)劃設(shè)計,這些值就會溢出,結(jié)果產(chǎn)生的FFT不是噪聲就是精度不夠而無法使用。

  浮點處理器克服了這些問題,因為它具有極大的動態(tài)范圍不可能發(fā)生溢出,還因為它可以自動地縮放。工程師只需要寫代碼,而無需擔(dān)心數(shù)值會溢出或者當(dāng)算法需要縮放時會丟失尾數(shù)位的問題。

  當(dāng)然,可提供許多算法可抵消定點運(yùn)算中的位增長。但是它們對于某些應(yīng)用需求還不是令人滿意的。這些算法中最簡單的一種就是在進(jìn)行FFT的每一級運(yùn)算之前將所有數(shù)值減半,如果這樣做,每一級都會損失許多寶貴的動態(tài)范圍的bit位。一種比較復(fù)雜的方法是實現(xiàn)塊浮點(在前面部分介紹),它會檢查位增長而且僅當(dāng)位增長需要時才將數(shù)值減半。其缺點就是塊浮點耗費(fèi)性能周期——而且更重要的是——有時候仍然需要在每一級減半,這取決于輸入信號。

  無論哪一種方法,用定點處理器完成一次8192點FFT都會損失13 bit的動態(tài)范圍,因為要計算其13級中的每一級。當(dāng)輸入為16 bit時,這樣只剩下3 bit的有效分辨率,其中1 bit為符號位。如果FFT只是用來測量信號的頻譜,那么就只能提供8個量化等級——這對于測量主諧波往往都不夠用,更別說其它了。如果對于大于8192點的FFT采用16 bit的定點運(yùn)算,結(jié)果就更加不夠用了。

  下面考慮一種更加嚴(yán)重的情況,其中FFT用于實現(xiàn)一個有限沖擊響應(yīng)(FIR)濾波器或相關(guān)器。FFT的結(jié)果需要乘以一個向量,而且必須完成8192點的反FFT(IFFT)變換以便回到時域。好情況是信號只有3 bit,所以位增長不會給IFFT變換造成問題。壞情況是IFFT變換的結(jié)果只有3 bit的動態(tài)范圍,即使在有無限精度可能的情況下。記住采用更多的bit數(shù)來表示一個樣值可以更接近信號并減小量化誤差(噪聲),這樣可以合乎要求地提高噪比(SNR)。如果這個FIR濾波器是一種16 bit的CD質(zhì)量音頻產(chǎn)品的器件,該器件應(yīng)該具有18 dB的SNR——不可能達(dá)到高銷售量的產(chǎn)品。

  采用FFT和定點數(shù)學(xué)運(yùn)算來實現(xiàn)高保真音頻產(chǎn)品的FIR濾波器可能會導(dǎo)致更差的結(jié)果。音頻混響的實現(xiàn)通常需要延時為1 s或者更長的FIR濾波器。當(dāng)今高端的音頻產(chǎn)品采用192 kHz采樣速率,必須要120 dB的SNR值。以192 kHz采樣速率采集1 s長的數(shù)據(jù)需要一個容納192,000個音頻采樣值的緩沖器。

  傳統(tǒng)的FFT方法需要用2的冪指數(shù)表示的緩沖器,它需要256K 點的FFT。損失的動態(tài)范圍將達(dá)到18 bit,從而去掉16 bit的定點處理器,就沒有可用的數(shù)據(jù)位。一個32 bit的處理器只能留下14 bit的數(shù)據(jù),產(chǎn)生84 dB的SNR值——遠(yuǎn)遠(yuǎn)達(dá)不到需要的性能。另外一種方法就是采用64 bit的處理,但是性能會受到嚴(yán)重的沖擊,因為一個64 bit的乘法運(yùn)算需要16次16 bit乘法和少量的移位運(yùn)算。

  在雷達(dá)、聲納和醫(yī)學(xué)圖像處理等相關(guān)計算和濾波器長度可能達(dá)上百萬樣點的應(yīng)用中,浮點處理和定點處理方法之間的區(qū)別仍然比較明顯。因為這些應(yīng)用需要如此之大的FFT,所以它們一直都采用浮點處理器。

最優(yōu)控制

  最優(yōu)控制問題,它包括一些自適應(yīng)的濾波技術(shù),可以看成是方程組系統(tǒng)的一種解決方案(通常令最小化函數(shù)的偏導(dǎo)數(shù)等于零)。最優(yōu)控制算法用于根據(jù)動態(tài)變化的輸入特性自動完成系統(tǒng)控制某種行為的任何場合;典型實例包括諸如防抱死制動系統(tǒng)的工業(yè)設(shè)備和汽車系統(tǒng)。

  即使是在最簡單的最小均方值(LMS)濾波器算法中(方程是線性的,因為它們是二次方程式的導(dǎo)數(shù)),解決系統(tǒng)問題也需要對矩陣求逆。如果矩陣非?!耙?guī)則”——即特征值都一樣大小——可以采用定點運(yùn)算完成求逆,但是實現(xiàn)起來還是有很困難。

  如果矩陣不是很規(guī)則(通常情況都是這樣),矩陣求逆所需的數(shù)學(xué)運(yùn)算開始同時處理小的和大的數(shù)字。將大的數(shù)字縮小以便防止它們溢出,同時損失了小的數(shù)字,這樣會嚴(yán)重降低結(jié)果的精度。相比之下,浮點算法能同時處理小的和大的數(shù)字,因為可用動態(tài)范圍很大,而且浮點縮放不會損失較小的數(shù)字。

C語言, 匯編,或二者均可

  讓我們將動態(tài)范圍和瞬時的數(shù)學(xué)精度放在一邊,面市時間和系統(tǒng)成本是任何系統(tǒng)設(shè)計工程的決定性因素。顯然,加快開發(fā)周期可以縮短面市時間。許多開發(fā)商都因為這個原因很喜愛C語言的生產(chǎn)力和易編程性,而且他們都已經(jīng)很精通這種高級語言。目前一代的浮點DSP支持高級C語言和匯編語言兩種語言的開發(fā)。

  對于項目中的這些部分,可能從手工優(yōu)化的匯編代碼中獲得額外的性能優(yōu)勢,最好的DSP還能通過一種為喜愛采用C語言編碼的工程師所熟悉的代數(shù)匯編語法,簡化了匯編程序設(shè)計?;ユi流水線保護(hù)是一種相關(guān)的功能,它允許正如C語言那樣順序地寫匯編代碼。執(zhí)行的順序不會改變,所有的代碼都是可中斷的。

  再回到動態(tài)范圍,因為浮點數(shù)學(xué)運(yùn)算減輕了影響精度的某些計算問題——溢出、縮放、同時處理小數(shù)字和大數(shù)字——它有助于縮短面市時間,因為程序設(shè)計變得簡單了。

成本“方程式”

  與定點DSP相比,浮點DSP的單位成本正變得越來越低,這都多虧了技術(shù)和封裝的進(jìn)步。但是,無論原始單位成本看起來多么吸引人,如果系統(tǒng)總成本可以滿足設(shè)計的價格目標(biāo),外圍設(shè)備和存儲器等方面是不能忽視的。

  例如,選擇一種具有每美元最高性能密度但是沒有適合于應(yīng)用的外圍設(shè)備的處理器,就需要在印制電路板(PCB)上增加外部邏輯電路。選擇一種具有每美元最高性能密度以及適當(dāng)?shù)耐鈬O(shè)備但是板內(nèi)存儲器不夠的處理器,該設(shè)計就需要外部存儲器。在兩種情況下,起初看起來很有吸引力的系統(tǒng)性能和成本都很可能打折扣。

  根據(jù)需要擴(kuò)展到增加計算能力的功能也會影響系統(tǒng)總成本(以及面市時間)。但是這個屬性對于浮點處理器來說不受限制,當(dāng)今市場上的領(lǐng)先浮點處理器,例如ADI公司的SHARC和TigerSHARC系列處理器,都是無需外接電路的。也就是說,它們使得開發(fā)商僅僅在系統(tǒng)中增加處理器的數(shù)量就可以提高性能。

為你自己算一算

  隨著浮點處理器相對于定點處理器的成本差距的下降,浮點DSP的寬動態(tài)范圍和高計算精度的特性正在被越來越多的應(yīng)用所采用并且從中獲益。應(yīng)該根據(jù)對你特定的設(shè)計關(guān)系最大的參數(shù)提供的信息做出選擇決定。如今,這種選擇就是關(guān)于相對于你對應(yīng)用性能和容易編程的需求能達(dá)到怎樣的滿意程度。

作者簡介

  Boris Lerner現(xiàn)任美國模擬器件公司(Analog Devices, Inc.,簡稱ADI)的高級DSP應(yīng)用工程師(boris.lerner@analog.com),工作在馬薩諸塞州諾伍德市。動態(tài)范圍是作者所精通的領(lǐng)域。Lerner是一位有12年工作經(jīng)驗的應(yīng)用電子工程師,獲得數(shù)學(xué)博士學(xué)位,而且在大學(xué)任教。他擁有兩項專利,而且與他人合作完成的自適應(yīng)均衡器獲得《Discover Magazine(發(fā)現(xiàn))》雜志1996年技術(shù)創(chuàng)新獎決賽選手的榮譽(yù)。

  SHARC和TigerSHARC是ADI公司的注冊商標(biāo)。

http://www.analog.com/processors/china/pr141



關(guān)鍵詞: 浮點計算

評論


技術(shù)專區(qū)

關(guān)閉