什么是dsp技術(shù)
數字信號處理(DigitalSignalProcessing,簡(jiǎn)稱(chēng)DSP)是一門(mén)涉及許多學(xué)科而又廣泛應用于許多領(lǐng)域的新興學(xué)科。20世紀60年代以來(lái),隨著(zhù)計算機和信息技術(shù)的飛速發(fā)展,數字信號處理技術(shù)應運而生并得到迅速的發(fā)展。在過(guò)去的二十多年時(shí)間里,數字信號處理已經(jīng)在通信等領(lǐng)域得到極為廣泛的應用。
數字信號處理是利用計算機或專(zhuān)用處理設備,以數字形式對信號進(jìn)行采集、變換、濾波、估值、增強、壓縮、識別等處理,以得到符合人們需要的信號形式。
數字信號處理是圍繞著(zhù)數字信號處理的理論、實(shí)現和應用等幾個(gè)方面發(fā)展起來(lái)的。數字信號處理在理論上的發(fā)展推動(dòng)了數字信號處理應用的發(fā)展。反過(guò)來(lái),數字信號處理的應用又促進(jìn)了數字信號處理理論的提高。而數字信號處理的實(shí)現則是理論和應用之間的橋梁。
數字信號處理是以眾多學(xué)科為理論基礎的,它所涉及的范圍極其廣泛。例如,在數學(xué)領(lǐng)域,微積分、概率統計、隨機過(guò)程、數值分析等都是數字信號處理的基本工具,與網(wǎng)絡(luò )理論、信號與系統、控制論、通信理論、故障診斷等也密切相關(guān)。近來(lái)新興的一些學(xué)科,如人工智能、模式識別、神經(jīng)網(wǎng)絡(luò )等,都與數字信號處理密不可分??梢哉f(shuō),數字信號處理是把許多經(jīng)典的理論體系作為自己的理論基礎,同時(shí)又使自己成為一系列新興學(xué)科的理論基礎。
世界上第一個(gè)單片DSP芯片應當是1978年AMI公司發(fā)布的S2811,1979年美國Intel公司發(fā)布的商用可編程器件2920是DSP芯片的一個(gè)主要里程碑。這兩種芯片內部都沒(méi)有現代DSP芯片所必須有的單周期乘法器。1980年,日本NEC公司推出的μPD7720是第一個(gè)具有乘法器的商用DSP芯片。
在這之后,最成功的DSP芯片當數美國德州儀器公司(TexasInstruments,簡(jiǎn)稱(chēng)TI)的一系列產(chǎn)品。TI公司在1982年成功推出其第一代DSP芯片TMS32010及其系列產(chǎn)品TMS32011、TMS320C10/C14/C15/C16/C17等,之后相繼推出了第二代DSP芯片TMS32020、TMS320C25/C26/C28,第三代DSP芯片TMS320C30/C31/C32,第四代DSP芯片TMS320C40/C44,第五代DSP芯片TMS320C5X/C54X,第二代DSP芯片的改進(jìn)型TMS320C2XX,集多片DSP芯片于一體的高性能DSP芯片TMS320C8X以及目前速度最快的第六代DSP芯片TMS320C62X/C67X等。TI將常用的DSP芯片歸納為三大系列,即:TMS320C2000系列(包括TMS320C2X/C2XX)、TMS320C5000系列(包括TMS320C5X/C54X/C55X)、TMS320C6000系列(TMS320C62X/C67X)。如今,TI公司的一系列DSP產(chǎn)品已經(jīng)成為當今世界上最有影響的DSP芯片。TI公司也成為世界上最大的DSP芯片供應商,其DSP市場(chǎng)份額占全世界份額近50%。
DSP處理器與通用處理器的比較
考慮一個(gè)數字信號處理的實(shí)例,比如有限沖擊響應濾波器(FIR)。用數學(xué)語(yǔ)言來(lái)說(shuō),FIR濾波器是做一系列的點(diǎn)積。取一個(gè)輸入量和一個(gè)序數向量,在系數和輸入樣本的滑動(dòng)窗口間作乘法,然后將所有的乘積加起來(lái),形成一個(gè)輸出樣本。
類(lèi)似的運算在數字信號處理過(guò)程中大量地重復發(fā)生,使得為此設計的器件必須提供專(zhuān)門(mén)的支持,促成了了DSP器件與通用處理器(GPP)的分流:
1、對密集的乘法運算的支持
GPP不是設計來(lái)做密集乘法任務(wù)的,即使是一些現代的GPP,也要求多個(gè)指令周期來(lái)做一次乘法。而DSP處理器使用專(zhuān)門(mén)的硬件來(lái)實(shí)現單周期乘法。DSP處理器還增加了累加器寄存器來(lái)處理多個(gè)乘積的和。累加器寄存器通常比其他寄存器寬,增加稱(chēng)為結果bits的額外bits來(lái)避免溢出。
同時(shí),為了充分體現專(zhuān)門(mén)的乘法-累加硬件的好處,幾乎所有的DSP的指令集都包含有顯式的MAC指令。
2、存儲器結構
傳統上,GPP使用馮.諾依曼存儲器結構。這種結構中,只有一個(gè)存儲器空間通過(guò)一組總線(xiàn)(一個(gè)地址總線(xiàn)和一個(gè)數據總線(xiàn))連接到處理器核。通常,做一次乘法會(huì )發(fā)生4次存儲器訪(fǎng)問(wèn),用掉至少四個(gè)指令周期。
大多數DSP采用了哈佛結構,將存儲器空間劃分成兩個(gè),分別存儲程序和數據。它們有兩組總線(xiàn)連接到處理器核,允許同時(shí)對它們進(jìn)行訪(fǎng)問(wèn)。這種安排將處理器存貯器的帶寬加倍,更重要的是同時(shí)為處理器核提供數據與指令。在這種布局下,DSP得以實(shí)現單周期的MAC指令。
還有一個(gè)問(wèn)題,即現在典型的高性能GPP實(shí)際上已包含兩個(gè)片內高速緩存,一個(gè)是數據,一個(gè)是指令,它們直接連接到處理器核,以加快運行時(shí)的訪(fǎng)問(wèn)速度。從物理上說(shuō),這種片內的雙存儲器和總線(xiàn)的結構幾乎與哈佛結構的一樣了。然而從邏輯上說(shuō),兩者還是有重要的區別。
GPP使用控制邏輯來(lái)決定哪些數據和指令字存儲在片內的高速緩存里,其程序員并不加以指定(也可能根本不知道)。與此相反,DSP使用多個(gè)片內存儲器和多組總線(xiàn)來(lái)保證每個(gè)指令周期內存儲器的多次訪(fǎng)問(wèn)。在使用DSP時(shí),程序員要明確地控制哪些數據和指令要存儲在片內存儲器中。程序員在寫(xiě)程序時(shí),必須保證處理器能夠有效地使用其雙總線(xiàn)。
此外,DSP處理器幾乎都不具備數據高速緩存。這是因為DSP的典型數據是數據流。也就是說(shuō),DSP處理器對每個(gè)數據樣本做計算后,就丟棄了,幾乎不再重復使用。
3、零開(kāi)銷(xiāo)循環(huán)
如果了解到DSP算法的一個(gè)共同的特點(diǎn),即大多數的處理時(shí)間是花在執行較小的循環(huán)上,也就容易理解,為什么大多數的DSP都有專(zhuān)門(mén)的硬件,用于零開(kāi)銷(xiāo)循環(huán)。所謂零開(kāi)銷(xiāo)循環(huán)是指處理器在執行循環(huán)時(shí),不用花時(shí)間去檢查循環(huán)計數器的值、條件轉移到循環(huán)的頂部、將循環(huán)計數器減1。
與此相反,GPP的循環(huán)使用軟件來(lái)實(shí)現。某些高性能的GPP使用轉移預報硬件,幾乎達到與硬件支持的零開(kāi)銷(xiāo)循環(huán)同樣的效果。
4、定點(diǎn)計算
大多數DSP使用定點(diǎn)計算,而不是使用浮點(diǎn)。雖然DSP的應用必須十分注意數字的精確,用浮點(diǎn)來(lái)做應該容易的多,但是對DSP來(lái)說(shuō),廉價(jià)也是非常重要的。定點(diǎn)機器比起相應的浮點(diǎn)機器來(lái)要便宜(而且更快)。為了不使用浮點(diǎn)機器而又保證數字的準確,DSP處理器在指令集和硬件方面都支持飽和計算、舍入和移位。
5、專(zhuān)門(mén)的尋址方式
DSP處理器往往都支持專(zhuān)門(mén)的尋址模式,它們對通常的信號處理操作和算法是很有用的。例如,模塊(循環(huán))尋址(對實(shí)現數字濾波器延時(shí)線(xiàn)很有用)、位倒序尋址(對FFT很有用)。這些非常專(zhuān)門(mén)的尋址模式在GPP中是不常使用的,只有用軟件來(lái)實(shí)現。
6、執行時(shí)間的預測
大多數的DSP應用(如蜂窩電話(huà)和調制解調器)都是嚴格的實(shí)時(shí)應用,所有的處理必須在指定的時(shí)間內完成。這就要求程序員準確地確定每個(gè)樣本需要多少處理時(shí)間,或者,至少要知道,在最壞的情況下,需要多少時(shí)間。
如果打算用低成本的GPP去完成實(shí)時(shí)信號處理的任務(wù),執行時(shí)間的預測大概不會(huì )成為什么問(wèn)題,應為低成本GPP具有相對直接的結構,比較容易預測執行時(shí)間。然而,大多數實(shí)時(shí)DSP應用所要求的處理能力是低成本GPP所不能提供的。
這時(shí)候,DSP對高性能GPP的優(yōu)勢在于,即便是使用了高速緩存的DSP,哪些指令會(huì )放進(jìn)去也是由程序員(而不是處理器)來(lái)決定的,因此很容易判斷指令是從高速緩存還是從存儲器中讀取。DSP一般不使用動(dòng)態(tài)特性,如轉移預測和推理執行等。因此,由一段給定的代碼來(lái)預測所要求的執行時(shí)間是完全直截了當的。從而使程序員得以確定芯片的性能限制。
7、定點(diǎn)DSP指令集
定點(diǎn)DSP指令集是按兩個(gè)目標來(lái)設計的:
·使處理器能夠在每個(gè)指令周期內完成多個(gè)操作,從而提高每個(gè)指令周期的計算效率。
·將存貯DSP程序的存儲器空間減到最?。ㄓ捎诖鎯ζ鲗φ麄€(gè)系統的成本影響甚大,該問(wèn)題在對成本敏感的DSP應用中尤為重要)。
為了實(shí)現這些目標,DSP處理器的指令集通常都允許程序員在一個(gè)指令內說(shuō)明若干個(gè)并行的操作。例如,在一條指令包含了MAC操作,即同時(shí)的一個(gè)或兩個(gè)數據移動(dòng)。在典型的例子里,一條指令就包含了計算FIR濾波器的一節所需要的所有操作。這種高效率付出的代價(jià)是,其指令集既不直觀(guān),也不容易使用(與GPP的指令集相比)。
GPP的程序通常并不在意處理器的指令集是否容易使用,因為他們一般使用象C或C++等高級語(yǔ)言。而對于DSP的程序員來(lái)說(shuō),不幸的是主要的DSP應用程序都是用匯編語(yǔ)言寫(xiě)的(至少部分是匯編語(yǔ)言?xún)?yōu)化的)。這里有兩個(gè)理由:首先,大多數廣泛使用的高級語(yǔ)言,例如C,并不適合于描述典型的DSP算法。其次,DSP結構的復雜性,如多存儲器空間、多總線(xiàn)、不規則的指令集、高度專(zhuān)門(mén)化的硬件等,使得難于為其編寫(xiě)高效率的編譯器。
即便用編譯器將C源代碼編譯成為DSP的匯編代碼,優(yōu)化的任務(wù)仍然很重。典型的DSP應用都具有大量計算的要求,并有嚴格的開(kāi)銷(xiāo)限制,使得程序的優(yōu)化必不可少(至少是對程序的最關(guān)鍵部分)。因此,考慮選用DSP的一個(gè)關(guān)鍵因素是,是否存在足夠的能夠較好地適應DSP處理器指令集的程序員。
8、開(kāi)發(fā)工具的要求
因為DSP應用要求高度優(yōu)化的代碼,大多數DSP廠(chǎng)商都提供一些開(kāi)發(fā)工具,以幫助程序員完成其優(yōu)化工作。例如,大多數廠(chǎng)商都提供處理器的仿真工具,以準確地仿真每個(gè)指令周期內處理器的活動(dòng)。無(wú)論對于確保實(shí)時(shí)操作還是代碼的優(yōu)化,這些都是很有用的工具。
GPP廠(chǎng)商通常并不提供這樣的工具,主要是因為GPP程序員通常并不需要詳細到這一層的信息。GPP缺乏精確到指令周期的仿真工具,是DSP應用開(kāi)發(fā)者所面臨的的大問(wèn)題:由于幾乎不可能預測高性能GPP對于給定任務(wù)所需要的周期數,從而無(wú)法說(shuō)明如何去改善代碼的性能。
評論