數字(zi)(zi)信(xin)(xin)號(hao)處(chu)(chu)理(li)(Digital Signal Processing,簡稱(cheng)DSP)是門(men)涉及許多(duo)學科而又廣(guang)泛應(ying)用于許多(duo)領域(yu)的(de)(de)新興學科。20世紀60年代以(yi)(yi)來,隨(sui)著計算機和信(xin)(xin)息(xi)技術的(de)(de)飛速(su)發展,數字(zi)(zi)信(xin)(xin)號(hao)處(chu)(chu)理(li)技術應(ying)運而生并得到迅速(su)的(de)(de)發展。在(zai)過去的(de)(de)二十多(duo)年時間里,數字(zi)(zi)信(xin)(xin)號(hao)處(chu)(chu)理(li)已經在(zai)通信(xin)(xin)等領域(yu)得到極為廣(guang)泛DSP技術圖(tu)解的(de)(de)應(ying)用。數字(zi)(zi)信(xin)(xin)號(hao)處(chu)(chu)理(li)是利用計算機或專用處(chu)(chu)理(li)設備(bei),以(yi)(yi)數字(zi)(zi)形(xing)(xing)式對信(xin)(xin)號(hao)進行采集、變換、濾波、估(gu)值、增強、壓(ya)縮、識別等處(chu)(chu)理(li),以(yi)(yi)得到符(fu)合人們需要的(de)(de)信(xin)(xin)號(hao)形(xing)(xing)式。
?
DSP的特點
1.對密集的乘法運算的支持
GPP不是設計來(lai)(lai)做密(mi)集乘(cheng)(cheng)法任務的(de),即使(shi)(shi)是些(xie)現代(dai)的(de)GPP,也要求多個(ge)指令周期(qi)來(lai)(lai)做次(ci)乘(cheng)(cheng)法。而DSP處(chu)理(li)器(qi)使(shi)(shi)用專門的(de)硬件來(lai)(lai)實現單(dan)周期(qi)乘(cheng)(cheng)法。DSP處(chu)理(li)器(qi)還增加(jia)了累加(jia)器(qi)寄(ji)存器(qi)來(lai)(lai)處(chu)理(li)多個(ge)乘(cheng)(cheng)積的(de)和。累加(jia)器(qi)寄(ji)存器(qi)通常比其他寄(ji)存器(qi)寬,增加(jia)稱為結(jie)果bits的(de)額外bits來(lai)(lai)避免溢出(chu)。
同時,為了充分體(ti)現專(zhuan)門(men)的(de)乘(cheng)法-累(lei)加硬件的(de)好(hao)處,幾(ji)乎(hu)所有的(de)DSP的(de)指令集(ji)都包含有顯式的(de)MAC指令。
?
2.存儲器結構
傳統上,GPP使用(yong)馮.諾依曼存(cun)儲(chu)(chu)器結構。這種結構中(zhong),只有個(ge)存(cun)儲(chu)(chu)器空間通過組總(zong)(zong)線(個(ge)地址(zhi)總(zong)(zong)線和(he)個(ge)數(shu)據總(zong)(zong)線)連接到(dao)處理器核。通常,做次乘法(fa)會發生4次存(cun)儲(chu)(chu)器訪問,用(yong)掉至少(shao)四個(ge)指令(ling)周(zhou)期。
大(da)多數DSP采用(yong)了哈佛結(jie)構(gou),將存(cun)儲器(qi)空間劃分成兩(liang)個(ge),分別存(cun)儲程序和數據。它們有兩(liang)組(zu)總線連(lian)接到處理(li)器(qi)核(he)(he),允許同時(shi)對(dui)它們進行(xing)訪(fang)問。這(zhe)種(zhong)安(an)排將處理(li)器(qi)存(cun)貯器(qi)的帶(dai)寬加倍,更重要(yao)的是同時(shi)為處理(li)器(qi)核(he)(he)提供(gong)數據與指令(ling)(ling)。在(zai)這(zhe)種(zhong)布局下,DSP得(de)以實現單周期的MAC指令(ling)(ling)。
還有(you)個(ge)問題(ti),即(ji)現在典型的(de)(de)高性能GPP實際上(shang)(shang)(shang)已包含兩(liang)個(ge)片內(nei)高速緩存(cun),個(ge)是(shi)數(shu)據,個(ge)是(shi)指令,它們直接連接到處理器(qi)核,以(yi)加快運行時的(de)(de)訪問速度。從(cong)物理上(shang)(shang)(shang)說,這種片內(nei)的(de)(de)雙(shuang)存(cun)儲器(qi)和(he)總線的(de)(de)結(jie)構幾乎與哈佛結(jie)構的(de)(de)樣了。然而(er)從(cong)邏輯上(shang)(shang)(shang)說,兩(liang)者還是(shi)有(you)重要的(de)(de)區別。
GPP使(shi)用(yong)(yong)控制(zhi)(zhi)邏輯來決定哪些(xie)數(shu)據和(he)指(zhi)令字存(cun)(cun)(cun)儲(chu)(chu)在片(pian)內(nei)(nei)(nei)的高(gao)速緩存(cun)(cun)(cun)里,其程序(xu)員并不加以指(zhi)定(也可能根本(ben)不知道)。與(yu)此相反,DSP使(shi)用(yong)(yong)多個片(pian)內(nei)(nei)(nei)存(cun)(cun)(cun)儲(chu)(chu)器(qi)(qi)和(he)多組總線來保證每個指(zhi)令周期內(nei)(nei)(nei)存(cun)(cun)(cun)儲(chu)(chu)器(qi)(qi)的多次訪問。在使(shi)用(yong)(yong)DSP時,程序(xu)員要明確地控制(zhi)(zhi)哪些(xie)數(shu)據和(he)指(zhi)令要存(cun)(cun)(cun)儲(chu)(chu)在片(pian)內(nei)(nei)(nei)存(cun)(cun)(cun)儲(chu)(chu)器(qi)(qi)中。程序(xu)員在寫程序(xu)時,必須保證處理(li)器(qi)(qi)能夠有效地使(shi)用(yong)(yong)其雙(shuang)總線。
此外,DSP處(chu)理(li)器幾乎(hu)(hu)都(dou)不具(ju)備數(shu)據高速緩存。這是(shi)因(yin)為DSP的(de)典(dian)型數(shu)據是(shi)數(shu)據流。也就是(shi)說,DSP處(chu)理(li)器對(dui)每個數(shu)據樣(yang)本做計算(suan)后,就丟棄了,幾乎(hu)(hu)不再(zai)重復使用(yong)。
3.零開銷循環
如果了解到(dao)(dao)DSP算法(fa)的個共同(tong)的特(te)點,即大多(duo)數的處(chu)理(li)(li)時間(jian)是花(hua)(hua)在(zai)執行較小的循環(huan)(huan)(huan)(huan)上,也就容(rong)易理(li)(li)解,為什么大多(duo)數的DSP都有專門的硬件(jian),用(yong)于(yu)零(ling)(ling)開(kai)銷(xiao)循環(huan)(huan)(huan)(huan)。所謂零(ling)(ling)開(kai)銷(xiao)循環(huan)(huan)(huan)(huan)是指處(chu)理(li)(li)器在(zai)執行循環(huan)(huan)(huan)(huan)時,不用(yong)花(hua)(hua)時間(jian)去檢(jian)查循環(huan)(huan)(huan)(huan)計數器的值、條件(jian)轉移(yi)到(dao)(dao)循環(huan)(huan)(huan)(huan)的頂部、將循環(huan)(huan)(huan)(huan)計數器減1。
與此相反,GPP的(de)循(xun)(xun)環使(shi)用(yong)(yong)軟件(jian)來實現。某些高性能的(de)GPP使(shi)用(yong)(yong)轉移預報硬件(jian),幾乎達到與硬件(jian)支持的(de)零開銷循(xun)(xun)環同樣的(de)效果。
4.定點計算
大多數(shu)DSP使用(yong)定點(dian)計算(suan),而(er)不是(shi)使用(yong)浮點(dian)。雖然DSP的(de)(de)(de)應(ying)用(yong)必須(xu)十分注意數(shu)字的(de)(de)(de)精(jing)確,用(yong)浮點(dian)來(lai)做應(ying)該容易的(de)(de)(de)多,但是(shi)對DSP來(lai)說,廉價也是(shi)非(fei)常重要的(de)(de)(de)。定點(dian)機(ji)器比起相(xiang)應(ying)的(de)(de)(de)浮點(dian)機(ji)器來(lai)要便宜(而(er)且更快)。為了不使用(yong)浮點(dian)機(ji)器而(er)又保證(zheng)數(shu)字的(de)(de)(de)準確,DSP處(chu)理器在指(zhi)令集和(he)(he)硬件方面都支持(chi)飽和(he)(he)計算(suan)、舍入(ru)和(he)(he)移(yi)位。
5.專門的尋址方式
DSP處理器往往都支持專門(men)的(de)尋(xun)(xun)址(zhi)模(mo)(mo)式(shi),它們對(dui)通(tong)常的(de)信號(hao)處理操(cao)作和算法是(shi)很(hen)(hen)有(you)用(yong)(yong)的(de)。例如,模(mo)(mo)塊(循環)尋(xun)(xun)址(zhi)(對(dui)實現數字濾波器延(yan)時線很(hen)(hen)有(you)用(yong)(yong))、位倒序尋(xun)(xun)址(zhi)(對(dui)FFT很(hen)(hen)有(you)用(yong)(yong))。這些非常專門(men)的(de)尋(xun)(xun)址(zhi)模(mo)(mo)式(shi)在GPP中是(shi)不(bu)常使用(yong)(yong)的(de),只有(you)用(yong)(yong)軟件(jian)來實現。
6.執行時間的預測
大多(duo)數的(de)(de)DSP應(ying)用(如蜂窩電話和調(diao)制解(jie)調(diao)器(qi))都是嚴格的(de)(de)實時(shi)應(ying)用,所有的(de)(de)處理必須在指定的(de)(de)時(shi)間(jian)內完(wan)成。這就(jiu)要(yao)(yao)求(qiu)程序員(yuan)準確(que)地確(que)定每個樣本需要(yao)(yao)多(duo)少(shao)(shao)處理時(shi)間(jian),或者,至(zhi)少(shao)(shao)要(yao)(yao)知(zhi)道,在不(bu)良情況下,需要(yao)(yao)多(duo)少(shao)(shao)時(shi)間(jian)。
如果打算用(yong)(yong)低成(cheng)本的(de)(de)(de)GPP去完成(cheng)實(shi)時(shi)信號處理的(de)(de)(de)任(ren)務,執行(xing)時(shi)間(jian)的(de)(de)(de)預測(ce)(ce)大(da)概不會成(cheng)為(wei)什么問題,因為(wei)低成(cheng)本GPP具有相對直接(jie)的(de)(de)(de)結(jie)構,比(bi)較容易預測(ce)(ce)執行(xing)時(shi)間(jian)。然而(er),大(da)多數實(shi)時(shi)DSP應用(yong)(yong)所(suo)要求的(de)(de)(de)處理能力是低成(cheng)本GPP所(suo)不能提(ti)供的(de)(de)(de)。
這時(shi)候(hou),DSP對高性(xing)能GPP的(de)優勢在(zai)于(yu),即便是(shi)使用了(le)高速緩存的(de)DSP,哪些指(zhi)令會(hui)放(fang)進去也(ye)是(shi)由(you)程序員(而不(bu)是(shi)處理(li)器)來決定的(de),因此很容易判斷指(zhi)令是(shi)從(cong)高速緩存還是(shi)從(cong)存儲器中讀取。DSP般(ban)不(bu)使用動態特性(xing),如轉移預測和(he)推理(li)執行等。因此,由(you)段給定的(de)代碼來預測所要求的(de)執行時(shi)間是(shi)完全直截(jie)了(le)當的(de)。從(cong)而使程序員得以確定芯片(pian)的(de)性(xing)能限(xian)制。
7.定點DSP指令集
定點DSP指令集是按(an)兩(liang)個目(mu)標來設計的(de):
- 使處理器能夠在每個指令周期內完成多個操作,從而提高每個指令周期的計算效率。
- 將存貯DSP程序的存儲器空間減到盡可能小(由于存儲器對整個系統的成本影響甚大,該問題在對成本敏感的DSP應用中尤為重要)。
為了實現這些目標(biao),DSP處(chu)理器的(de)(de)指(zhi)令(ling)集(ji)通常都(dou)允許程序員在個(ge)指(zhi)令(ling)內說(shuo)明(ming)若干個(ge)并行的(de)(de)操作(zuo)(zuo)。例如,在條指(zhi)令(ling)包含(han)了MAC操作(zuo)(zuo),即同時(shi)的(de)(de)個(ge)或兩個(ge)數據移動。在典型的(de)(de)例子里,條指(zhi)令(ling)就包含(han)了計(ji)算FIR濾波器的(de)(de)節(jie)所(suo)需要的(de)(de)所(suo)有操作(zuo)(zuo)。這種高效率付出的(de)(de)代價是,其(qi)指(zhi)令(ling)集(ji)既不(bu)(bu)直觀(guan),也不(bu)(bu)容易使(shi)用(與GPP的(de)(de)指(zhi)令(ling)集(ji)相比)。
GPP的(de)(de)(de)程序通(tong)常并不在意處理器的(de)(de)(de)指(zhi)令集(ji)是(shi)否容易使用(yong),因為他們般(ban)使用(yong)像C或C++等(deng)高(gao)(gao)級語(yu)(yu)(yu)言(yan)(yan)。而對于DSP的(de)(de)(de)程序員來(lai)說,不幸的(de)(de)(de)是(shi)主要的(de)(de)(de)DSP應(ying)用(yong)程序都是(shi)用(yong)匯編語(yu)(yu)(yu)言(yan)(yan)寫的(de)(de)(de)(至少部分是(shi)匯編語(yu)(yu)(yu)言(yan)(yan)優化的(de)(de)(de))。這里有兩個理由:首先,大(da)多數廣泛使用(yong)的(de)(de)(de)高(gao)(gao)級語(yu)(yu)(yu)言(yan)(yan),例(li)如(ru)C,并不適合于描(miao)述典型(xing)的(de)(de)(de)DSP算法。其次(ci),DSP結(jie)構的(de)(de)(de)復雜性,如(ru)多存儲器空間、多總線、不規(gui)則的(de)(de)(de)指(zhi)令集(ji)、高(gao)(gao)度(du)專(zhuan)門化的(de)(de)(de)硬件等(deng),使得難于為其編寫高(gao)(gao)效(xiao)率(lv)的(de)(de)(de)編譯(yi)器。
即便用(yong)編譯器(qi)將C源代(dai)碼編譯成為DSP的(de)(de)匯編代(dai)碼,優化的(de)(de)任(ren)務(wu)仍(reng)然很重。典(dian)型的(de)(de)DSP應(ying)(ying)用(yong)都具有大量計算(suan)的(de)(de)要求,并(bing)有嚴格的(de)(de)開銷限制,使得程(cheng)序的(de)(de)優化必不可少(至少是對程(cheng)序的(de)(de)關鍵(jian)部分)。因此,考慮選用(yong)DSP的(de)(de)個關鍵(jian)因素是,是否存在足夠的(de)(de)能夠較(jiao)好(hao)地適應(ying)(ying)DSP處理器(qi)指令集的(de)(de)程(cheng)序員(yuan)。
8.開發工具的要求
因為DSP應(ying)用要求高度優化(hua)的代碼(ma),大多數(shu)DSP廠商(shang)都提供(gong)些開(kai)發工(gong)(gong)具,以幫(bang)助程序員完成其優化(hua)工(gong)(gong)作(zuo)。例(li)如,大多數(shu)廠商(shang)都提供(gong)處理器的仿真工(gong)(gong)具,以準確地仿真每個(ge)指令(ling)周(zhou)期內處理器的活動。無論對于確保實時操(cao)作(zuo)還是代碼(ma)的優化(hua),這些都是很有用的工(gong)(gong)具。
GPP廠商通常并不(bu)提供(gong)這(zhe)(zhe)樣的(de)(de)工(gong)具,主要(yao)是(shi)因為GPP程序員通常并不(bu)需要(yao)詳(xiang)細到(dao)(dao)這(zhe)(zhe)層的(de)(de)信息(xi)。GPP缺乏精確到(dao)(dao)指令(ling)周期(qi)的(de)(de)仿(fang)真(zhen)工(gong)具,是(shi)DSP應用(yong)開發者所(suo)面(mian)臨的(de)(de)的(de)(de)大問題(ti):由于幾乎不(bu)可能(neng)(neng)預測高性能(neng)(neng)GPP對于給定(ding)任(ren)務所(suo)需要(yao)的(de)(de)周期(qi)數(shu),從而(er)無法說明如何去(qu)改善代碼的(de)(de)性能(neng)(neng)。
公司介紹
北京(jing)數(shu)聯云創(chuang)科技有限責任公(gong)司是以(yi)物聯網為(wei)基礎的開發類公(gong)司,集(ji)電路(lu)設計(ji)、智能居、教學設備,倉(cang)儲系統(tong)等(deng)研發、生產、銷售(shou)(shou)為(wei)體(ti),我們在物聯網、嵌入式系統(tong)集(ji)成、智能硬件等(deng)新興領域有豐富開發經驗,致(zhi)力于提(ti)供各行業(ye)內領先成熟的解決(jue)方案和(he)完善的售(shou)(shou)后服務體(ti)系。
評論