讓你說出知道的芯片的名稱,你可能會一時想不起,也不能一一羅列dsp芯片都有哪些。或許是對dsp芯片深刻的了解才了然于心,由于種種原因的忘卻;或許是因為大家在說dsp芯片好,既然大家都說好,那才是真的好,至于怎樣好,可能是似懂非懂。那好吧,不管是懂還是不懂,現在讓我們從新的視角來讀懂這個芯片的世界,讓你發現不曾明白的細節。
dsp芯片,也稱數字信號處理器,采用特殊的軟硬件結構,是一種專注于進行數字信號處理運算的微處理器,其主要應用是實時快速地實現各種數字信號處理,是數字信號處理理論實用化過程的重要技術工具。在語音處理、圖像處理等技術領域得到了廣泛的應用。那根據對dsp芯片的理解來對比與其他芯片的最要的區別是什么?杭州海康威視數字技術股份有限公司的高級嵌入式開發經理黃田認為,dsp芯片與其它芯片的最大區別在于它擁有針對各種算法設計的大量專用指令,比如各種向量運算。另外dsp芯片在設計時更多地考慮到數據總線的帶寬以及吞吐量,避免數據訪問成為影響算法性能的瓶頸。
芯片的基本結構
為了快速地實現數字信號處理運算,dsp芯片一般都采用特殊的軟硬件結構。下面簡單介紹dsp芯片的基本結構。
(1)哈佛結構
主要特點是將程序和數據存儲在不同的存儲空間中,即程序存儲器和數據存儲器是兩個相互獨立的存儲器,每個存儲器獨立編址,獨立訪問。與兩個存儲器相對應的是系統中設置了程序總線和數據總線,從而使數據的吞吐率提高了一倍。由于程序和數據在兩個分開的空間,因此取指和執行能完全重疊。
(2)流水線操作
流水線與哈佛結構相關,dsp芯片廣泛采用流水線以減少指令執行時間,從而增強了處理器的處理能力。處理器可以并行處理二到四條指令,每條指令處于流水線的不同階段。下面所列是一個三級流水線操作的例子:
cllout1
取指 n n-1 n-2;
譯碼 n-1 n n-2;
執行 n-2 n-1 n,
(3)專用的硬件乘法器
專用的硬件乘法器,乘法速度越快,dsp處理器的性能越高。由于具有專用的應用乘法器,乘法可在一個指令周期內完成。
(4)特殊的dsp指令
dsp是采用特殊的指令。
(5)快速的指令周期
特殊的dsp指令,dsp芯片是采用特殊的指令。快速的指令周期、哈佛結構、流水線操作、專用的硬件乘法器、特殊的dsp指令,再加上集成電路的優化設計可使dsp芯片的指令周期在200ns以下。
dsp系統的特點
數字信號處理有別于普通的科學計算與分析,它強調運算處理的實時性,因此dsp除了具備普通微處理器所強調的高速運算和控制功能外,針對實時數字信號處理,在處理器結構、指令系統、指令流程上具有許多新的特征,其特點如下:
算術單元
具有硬件乘法器和多功能運算單元,硬件乘法器可以在單個指令周期內完成乘法操作,這是dsp區別于通用的微處理器的一個重要標志。多功能運算單元可以完成加減、邏輯、移位、數據傳送等操作。新一代dsp內部甚至還包含多個并行的運算單元,以提高其處理能力。針對濾波、相關、矩陣運算等需要大量乘和累加運算的特點,dsp的算術單元的乘法器和加法器,可以在一個時鐘周期內完成相乘、累加兩個運算。近年出現的一些dsp如adsp2106x、 dsp96000系列dsp可以同時進行乘、加、減運算,大大加快了fft的蝶形運算速度。
總線結構
傳統的通用處理器采用統一的程序和數據空間、共享的程序和數據總線結構,即所謂的馮.諾依曼結構。dsp普遍采用了數據總線和程序總線分離的哈佛結構或者改進的哈佛結構,極大地提高了指令執行速度。片內的多套總線可以同時進行取指令和多個數據存取操作,許多dsp片內嵌有dma控制器,配合片內多總線結構,使數據塊傳送速度大大提高。
專用尋址單元
dsp面向數據密集型應用,伴隨著頻繁的數據訪問,數據地址的計算也需要大量時間。dsp內部配置了專用的尋址單元,用于地址的修改和更新,它們可以在尋址訪問前或訪問后自動修改內容,以指向下一個要訪問的地址。地址的修改和更新與算術單元并行工作,不需要額外的時間。dsp的地址產生器支持直接尋址、間接尋址操作,大部分dsp還支持位反轉尋址(用于fft算法)和循環尋址(用于數字濾波算法)。
片內存儲器
針對數字信號處理的數據密集運算的需要,dsp對程序和數據訪問的時間要求很高,為了減小指令和數據的傳送時間,許多dsp內部集成了高速程序存儲器和數據存儲器,以提高程序和數據訪問存儲器的速度。
流水處理技術
dsp大多采用流水技術,即將一條指令的執行過程分解成取指、譯碼、取數、執行等若干個階段,每個階段稱為一級流水。每條指令都由片內多個功能單元分別完成取指、譯碼、取數、執行等操作,從而在不提高時鐘頻率的條件下減少了每條指令的執行時間。
dsp與其它處理器的差別
數字信號處理器(dsp)、通用微處理器(mpu)、微控制器(mcu)三者的區別在于:dsp面向高性能、 重復性、數值運算密集型的實時處理;mpu大量應用于計算機;mcu則適用于以控制為主的處理過程。
dsp芯片的優點
dsp的運算速度比其它處理器要高得多,以fft為例,高性能dsp不僅處理速度是mpu的 4~10倍,而且可以連續不斷地完成數據的實時輸入/輸出。dsp結構相對單一,普遍采用匯編語言編程,其任務完成時間的可預測性相對于結構和指令復雜(超標量指令)、嚴重依賴于編譯系統的mpu強得多。以一個fir濾波器實現為例,每輸入一個數據,對應每階濾波器系數需要一次乘、一次加、一次取指、二次取數,還需要專門的數據移動操作,dsp可以單周期完成乘加并行操作以及3~4次數據存取操作,而普通mpu完成同樣的操作至少需要4個指令周期。因此,在相同的指令周期和片內指令緩存條件下,dsp的運算速度可以超過mpu運算速度的4倍以上。
dsp芯片的浮點與定點之分
在選擇dsp器件的時候,是采用浮點還是采用定點,如果用定點是16位還是32位?其實這個問題和你的算法所要求的信號的動態范圍有關。
浮點運算dsp比定點運算dsp的動態范圍(動態范圍:如音響系統重放時最大不失真輸出功率與靜態時系統噪聲輸出功率之比的對數值,又如一個多媒體硬盤播放器輸出圖像的最亮和最暗部分之間的相對比值)要大很多。定點dsp的字長每增加1bit,動態范圍擴大6db,16bit字長的動態范圍為96db。程序員必須時刻關注溢出的發生。例如:在做圖像處理時,圖像做旋轉、移動等,就很容易產生溢出。這時,要么不斷地移位定標,要么作截尾。前者要耗費大量的程序空間和執行時間,后者則很快帶來圖像質量的劣化。
總之,是使整個系統的性能下降。在處理低信噪比信號的場合,例如進行語音識別、雷達和聲納信號處理時,也會發生類似的問題。而32bit浮點運算dsp的動態范圍可以作到1536db,這不僅大大擴大了動態范圍,提高了運算精度,還大大節省了運算時間和存儲空間,因為大大減少了定標,移位和溢出檢查。
由于浮點dsp的浮點運算用硬件來實現,可以在單周期內完成,因而其處理速度大大高于定點dsp,這一優點在實現高精度復雜算法時尤為突出。
定點的計算不過是把一個數據當作整數來處理,通常ad采樣來的都是整數,這個數相對于真實的模擬信號有一個刻度因子,大家都知道用一個16位的ad 去采樣一個0到5v的信號,那么ad輸出的整數除以2^16再乘以5v就是對應的電壓。在定點dsp中是直接對這個16位的采樣進行處理,并不將它轉換成以小數表示的電壓,因為定點dsp無法以足夠的精度表示一個小數,它只能對整數進行計算。
而浮點dsp的優勢在于它可以把這個采樣得到的整數轉換成小數表示的電壓,并不損失精度(這個小數用科學記數法來表示),原因在于科學記數法可以表示很大的動態范圍的一個信號,以ieee754浮點數為例,單精度浮點格式:[31] 1位符號[30-23]8位指數[22-00]23位小數。這樣的能表示的最小的數是+-2^-149,最大的數是+-(2-2^23)*2^127,動態范圍為20*log(最大的數/最小的數)=1667.6db這樣大的動態范圍使得在編程的時候幾乎不必考慮乘法和累加的溢出,而如果使用定點處理器編程,對計算結果進行舍入和移位則是家常便飯,這在一定程度上會損失精度。
原因在于定點處理的信號的動態范圍有限,比如16位定點dsp,可以表示整數范圍為1-65536,其動態范圍為 20*log(65536/1)=96db.對于32 定點dsp,動態范圍為20*log(2^32/1)=192db,遠小于32位ieee浮點數的1667.6db,但是實際上192db對絕大多數應用所處理的信號已經足夠了。由于ad轉換器的位數限制,一般輸入信號的動態范圍都比較小,但在 dsp的信號處理中,由于點積運算會使中間節點信號的動態范圍增加,所以主要考慮信號處理流程中中間結果的動態范圍,以及算法對中間結果的精度要求,來選擇相應的dsp。另外就是浮點的dsp更易于編程,定點 dsp編程中程序員要不斷調整中間結果的pq值,實際就是不斷對中間結果進行移位調整和舍入。
實數運算可直接透過代碼加入硬件運算中,而定點元件必須透過軟件才能間接執行實數運算,這就增加了運算法指令并延長了開發時間。
整體上說,定點dsp在成本上具有優勢而浮點dsp在易用上較優。
dsp芯片的發展現狀與應用
自從dsp芯片誕生以來,dsp芯片得到了飛速的發展。一方面得益于集成電路的發展,另一方面也得益于巨大的市場。在短短的十多年時間,dsp芯片已經在信號處理、通信等許多領域得到了廣泛的應用。
對于dsp芯片的發展現狀和dsp如何與其他產品搭配應用解決方案海康威視的黃田作出了如下這樣的看法:dsp芯片已經在向專業化、多元化方向發展,各廠家的市場劃分越來越細,差異性也越來越大。另外,單純的dsp芯片已經不多見,更多的是dsp芯片與其它處理核心集成在一起,形成一個集成度高、針對性強的soc,不僅極大地降低了板級空間,也帶來了功耗、成本以及開發周期的全面優勢,從而推動了行業的發展和產品性能的提高。
dsp的優勢在于靈活的算法集成,可以給產品提供強大的性能以及靈活的定制,同一產品針對各類客戶不同的需求實現不同的解決方案。為了提高產品的競爭力,廠商都會在算法上做足文章,算法變得越來越復雜,但是算法的穩定性、產品的功耗、開發周期等都會成為難以駕馭的風險。dsp算法不是一大堆理論公式的堆砌,而是與所使用dsp芯片的具體特點緊密結合的精致軟件。
這些因素在產品設計時就需要予以充分考慮,不要為了一些噱頭功能而盲目采用所謂的先進算法和高性能dsp,而是要從用戶需求出發,尋找算法與dsp的最佳組合。在產品方案中,算法和dsp是核心,這個組合確定了,再去搭配其它的處理芯片和外圍設備,才能形成一套高效的產品解決方案。
目前 dsp技術應用從軍用到民用,從航空航天到生產生活,都越來越多地使用dsp。dsp技術在航空航天方面,主要用于雷達和聲納信號處理;在通信方面,主要用于移動電話、ip電話 (voice over ip)、adsl和hfc的信號傳輸;在控制方面,主要用于電機控制、光驅和硬盤驅動器;在測試/測量方面,主要用于虛擬儀器、自動測試系統、醫療診斷 等;在電子娛樂方面,主要用于高清晰度電視(hdtv)、機頂盒(stb)、ac-3、家庭影院、 dvd等應用;
在圖像/圖形上,主要用于二維和三維圖形處理、圖像壓縮與傳輸、圖像增強、動畫等;還有數字相機、網絡相機等等都應用了 dsp技術。同時,soc芯片系統、無線應用、嵌入式dsp都是未來dsp的發展方向和趨勢。可以說,沒有dsp就沒有對互聯網的訪問,也不會有多媒體, 也沒有無線通信。因此,dsp仍將是整個半導體工業的技術驅動力。現在,dsp應用領域不斷拓寬,其函蓋面包括寬帶internet接入業務、下一代無線通信系統的發展、數字消費電子市場、汽車電子市場的發展等諸多方面。
dsp芯片的分類
為不同算法而專門設計的dsp芯片可以分為基礎特性、數據格式和按用途分三大類。
按基礎特性分 ,根據dsp芯片的工作時鐘和指令類型來分類的。如果dsp芯片在某時鐘頻率范圍內的任何頻率上能正常工作,除計算速度有變化外,沒有性能的下降,這類dsp芯片一般稱之為靜態dsp芯片。如果有兩種或兩種以上的dsp芯片,它們的指令集和相應的機器代碼機管腳結構相互兼容,則這類dsp 芯片稱之為一致性的dsp芯片。
按數據格式分,這是根據dsp芯片工作的數據格式來分類的。數據以定點格式工作的dsp芯片稱之為定點 dsp芯片。以浮點格式工作的稱為dsp芯片。不同的浮點dsp芯片所采用的浮點格式不完全一樣,有的dsp芯片采用自定義的浮點格式,有的dsp芯片則采用ieee的標準浮點格式。
按用途分,可分為通用型dsp芯片和專用型的dsp芯片。通用型dsp芯片適合普通的dsp應用,如ti公司的一系列dsp芯片。專用型dsp芯片是為特定的dsp運算而設計,更適合特殊的運算,如數字濾波,卷積和fft等。
結語
隨著安防行業的高速發展,特別是高清和智能化需求的井噴,整個行業已經全面進入數字化時代,而作為數字化安防產品的核心,安防芯片已經成為一個巨大的產業,所以需要更多不同的算法。對于不斷涌現的算法需求來說,dsp的處理能力永遠是不夠的,算法開發人員需要不斷在性能指標和dsp的處理能力之間做平衡,是少做一次循環,還是允許偶爾丟幀,類似這樣,如果無法做取舍,則需要進一步對算法進行優化,可能是算法架構上的,也可能是匯編代碼級的。片內緩存是影響算法性能的一個重要因素,ddr帶寬則往往是系統級的。
由于dsp精于計算,而不善于邏輯處理,特別是網絡協議、數據庫管理方面,因此dsp往往與其它芯片配合使用。在安防領域的各種開發方案中,dsp+arm最為主流,arm負責網絡、存儲、外設管理,dsp負責圖像、音頻處理及編解碼。目前dsp+arm基本上都集成到一個soc中,盡管如此,對于軟件開發來說,dsp和arm還都是分開的。在需要更高處理性能的領域,往往采用多片dsp共同處理的方式。這些也是海康威視黃田,具多年行業資深技術人的深刻體會。