浮點算法是壹種比較復雜的常規算法,利用浮點數據可以實現大的數據動態範圍(這個動態範圍可以用最大值和最小值的比值來表示)。在浮點DSP的應用中,設計工程師不必關心動態範圍和精度。浮點DSP比定點DSP更容易編程,但成本和功耗高。
由於成本和功耗的原因,定點DSP壹般用於量產。程序員和算法設計人員通過分析或仿真來確定所需的動態範圍和精度。如果要求易於開發,且動態範圍寬、精度高,可以考慮浮點DSP。
浮點運算在使用定點DSP的情況下也可以用軟件實現,但這類軟件程序會占用大量處理器時間,所以很少使用。壹種有效的方法是“塊浮點”,即把壹組指數相同但尾數不同的數據當作數據塊。塊浮點處理通常在軟件中實現。所有浮點DSP的字寬都是32位,而定點DSP的字寬壹般是16位。也有24位和20位的DSP,如摩托羅拉的DSP563XX系列和Zoran的ZR3800X系列。由於字寬與DSP的外部尺寸、管腳數量以及所需存儲器的大小有很大的關系,所以字寬直接影響到器件的成本。字寬越寬,尺寸越大,管腳越多,內存需求越大,成本相應增加。在滿足設計要求的情況下,盡量選擇小字寬的DSP,以降低成本。
在定點和浮點之間選擇時,可以權衡字寬和開發復雜度的關系。比如壹個16位寬的DSP器件,通過組合指令也可以實現32位寬的雙精度算法(當然雙精度算法比單精度算法慢很多)。如果單精度能滿足大部分計算要求,只有少數代碼需要雙精度,這種方法也是可行的,但如果大部分計算要求高精度,就需要選擇大字寬的處理器。
請註意,大多數DSP器件的指令字和數據字的寬度是壹樣的,只是有壹些區別。例如,ADI公司的ADSP-21XX系列的數據字是16位,指令字是24位。處理器是否符合設計要求,要看是否符合速度要求。有許多方法可以測試處理器的速度。最基本的是衡量處理器的指令周期,也就是處理器執行最快指令所需的時間。用指令周期的倒數除以壹百萬,再乘以每個周期執行的指令數,結果就是處理器的最高速度,單位為百萬指令每秒MIPS。
但是,指令執行時間並不能表明處理器的真實性能。不同的處理器在壹條指令中有不同的任務,簡單地比較指令執行時間並不能公平地區分性能差異。目前,壹些新的DSP采用VLIW架構。在這種架構中,可以在單個周期時間內實現多條指令,每條指令完成的任務比傳統DSP少。所以相比VLIW和壹般的DSP器件,比較MIPS的大小會有誤導性。
甚至比較傳統DSP之間的MIPS大小也是片面的。例如,壹些處理器允許在單個指令中壹起移位幾個位,而壹些DSP指令只能移位單個數據位;有些DSP可以並行處理與正在執行的ALU指令無關的數據(在執行指令的同時加載操作數),有些DSP只能支持與正在執行的ALU指令相關的數據的並行處理;壹些新的DSP允許在壹條指令中定義兩個MAC。所以只有MIPS對比並不能準確的得到處理器的性能。
解決上述問題的壹種方法是用壹個基本操作(不是壹條指令)來比較處理器的性能。MAC運算是常用的,但是MAC運算時間並不能提供足夠的信息來比較DSP的性能差異。在大多數DSP中,MAC操作只在單個指令周期內實現,其MAC時間等於指令周期時間。如上所述,在單個MAC周期中,壹些DSP比其他DSP處理更多的任務。MAC時間不反映所有應用中都使用的性能,例如循環操作。
最常見的方法是定義壹套標準例程,比較不同DSP上的執行速度。該例程可以是算法的“核心”功能,如FIR或IIR濾波器,也可以是應用程序的全部或壹部分(如語音編碼器)。圖1顯示了用BDTI工具測試的幾種DSP器件的性能。
在比較DSP處理器的速度時,要註意宣傳的MOPS(每秒百萬次運算)和MFLOPS(每秒百萬次浮點運算)參數,因為不同廠商對“運算”的理解不同,指標的含義也不同。例如,壹些處理器可以同時執行浮點乘法和浮點加法,因此他們宣傳他們的產品具有兩倍於MIPS的MFLOPS。
其次,在比較處理器時鐘速率時,DSP的輸入時鐘可能與其指令速率相同,也可能是指令速率的2到4倍,不同的處理器可能不同。另外,很多DSP都有時鐘乘法器或鎖相環,可以利用外部低頻時鐘產生芯片上需要的高頻時鐘信號。語音處理:語音編碼、語音合成、語音識別、語音增強、語音郵件、語音存儲等。
圖像/圖形:2D和三維圖形處理、圖像壓縮和傳輸、圖像識別、動畫、機器人視覺、多媒體、電子地圖、圖像增強等。
軍事;保密通信、雷達處理、聲納處理、導航、全球定位、跳頻電臺、搜索和反搜索等。
儀器:頻譜分析、函數生成、數據采集、地震處理等。
自動控制:控制、深空操作、自動駕駛、機器人控制、磁盤控制等。
醫療:助聽器、超聲波設備、診斷工具、病人監護、心電圖等。
家用電器:數字音頻、數字電視、可視電話、音樂合成、音調控制、玩具和遊戲等。
生物醫學信號處理示例:
CT:計算機X射線斷層攝影設備。(其中發明顱骨CT的英國EMI公司的豪斯菲爾德獲得了諾貝爾獎。)
計算機X射線空間重建裝置。全身掃描,心臟活動的三維模式,腦腫瘤異物和人體軀幹圖像重建出現。
心電圖分析。DSP的性能受到其管理存儲器子系統的能力的影響。如上所述,MAC和其他信號處理功能是DSP器件的基本信號處理能力。快速MAC執行能力要求在每個指令周期從存儲器中讀取壹個指令字和兩個數據字。有許多方法可以實現這種讀取,包括多接口存儲器(允許在每個指令周期內對存儲器進行多次訪問)、獨立的指令和數據存儲器(“哈佛”結構及其衍生物)以及指令緩存(允許從緩存而不是存儲器中讀取指令,從而釋放存儲器用於數據讀取)。圖2和圖3顯示了許多微控制器采用的哈佛存儲器結構和“馮·諾曼”結構之間的差異。
另外,要註意支持的內存空間大小。很多定點DSP的主要目標市場是嵌入式應用系統,其中的存儲器壹般都比較小,所以這種DSP器件有中小的片內存儲器(大約4K到64K字)和較窄的外部數據總線。另外,大部分定點DSP的地址總線小於等於16位,所以外部存儲空間有限。
有些浮點DSP片內存儲器很少或沒有,但外部數據總線很寬。比如TI公司的TMS320C30只有6K片內存儲器,其外部總線是24位和13位外部地址總線。ADI公司的ADSP2-21060有4Mb的片內存儲器,在很多方面可以分為程序存儲器和數據存儲器。
在選擇DSP時,需要根據存儲空間的大小和具體應用對外部總線的要求來選擇。DSP處理器和英特爾、奔騰或Power等處理器
PC的通用處理器(GPPs)就大不壹樣了。這些差異源於DSP的結構和指令是專門為信號處理而設計和開發的。它具有以下特點。
硬件乘累加運算
為了有效地完成信號濾波等乘法和累加運算,處理器必須進行有效的乘法運算。GPPs最初不是為重乘法而設計的。DSP區別於早期GPP的第壹個主要技術改進是添加了專門的硬件和可以執行單周期乘法的清晰MAC指令。
哈佛結構
傳統的GPPs使用馮·諾曼存儲結構。在這種結構中,存儲空間通過兩條總線(地址總線和數據總線)連接到處理器內核。這種結構不能滿足MAC在壹個指令周期內必須訪問存儲器四次的要求。DSP壹般采用哈佛結構。在哈佛結構中,有兩個存儲空間:程序存儲空間和數據存儲空間。處理器內核通過兩組總線連接到這些內存空間,允許同時對內存進行兩次訪問,從而使處理器的帶寬加倍。在哈佛結構中,有時添加第二數據存儲空間和總線以實現更大的存儲帶寬。現代高性能GPPs通常有兩個片上緩存,壹個用於存儲數據,另壹個用於存儲指令。從理論上講,這種雙片上緩存和總線連接相當於哈佛結構。然而,GPPs使用控制邏輯來確定哪些數據和指令字駐留在片上緩存中,這通常對程序員是不可見的。在DSP中,程序員可以清楚地控制哪些數據和指令存儲在片內存儲單元或緩存中。
零消耗循環控制
DSP算法的相同特點:大部分處理時間都花在執行相對較小的循環中包含的少量指令上。因此,大多數DSP處理器都有專門的零功耗環路控制硬件。零消耗周期是指處理器可以執行壹組指令周期,而不需要花時間測試周期計數器的值,硬件完成周期的跳轉和周期計數器的衰減。有些DSP還通過壹個指令緩存實現高速單指令循環。
特殊尋址模式
DSP通常包含特殊的地址生成器,可以生成信號處理算法所需的特殊尋址,如循環尋址和位翻轉尋址。循環尋址對應流水線FIR濾波算法,比特翻轉尋址對應FFT算法。
執行時間的可預見性
大多數DSP應用都有嚴格的實時要求,所有的處理工作都必須在規定的時間內完成。這種實時限制要求程序員確定每個樣本需要多少時間,或者至少在最壞的情況下需要多少時間。DSP執行程序的過程對程序員是透明的,因此很容易預測每個作業的執行時間。但是對於高性能GPPs,由於使用了大量的超高速數據和程序緩存,程序是動態分配的,所以執行時間的預測變得復雜和困難。
擁有豐富的外設。
DSP具有DMA、串行端口、鏈接端口和定時器等外設。