DSP技術,在某些人看來,或者已經面臨著英雄遲暮的感覺,就我們當前所知道的。Freesacle、ADI、NXP早就停掉了新技術發展,而當前從大的方面說只剩下TI一家扛著Digital Signal Processor的大旗。
FPGA才是未來的大殺器,真的是這樣嗎?
在很多人看來,這十年來,ARM和Intel的發展幅度已經遠遠超過了DSP。尤其是在ARM,其A9雙核、A15四核在嵌入式市場已經以摧枯拉朽之勢占領了主導地位,但我們不能否認,在工業領域,DSP的應用還是占有很重要的位置。而在Intel,自Silvermont推出以后,低功耗的X86又稱為一股強勁勢力。有人就會覺得ARM和Intel在未來的某個日子能夠取代DSP。
關于這個問題,電子工程師陳俊直接給出了一個這樣的看法:他認為,對于DSP,有兩個解釋:
第一個Digital Signal Processing,是數字信號處理,是門學科技術,簡單的說是將現實世界中的模擬信號量轉換為數字信號量然后進行分析、離散變換、調制解調等等方面的數字運算。其有別于簡單的加減乘數等四則運算;
第二個解釋就是Digital Signal Processor,數字信號處理器,簡單的說就是嵌入了可以快速處理數字信號分析、離散變換、調制解調等方面的一種特殊的微處理器。
從解釋上可以看出,DSP芯片就是一顆加入了數字信號處理功能的微處理器芯片。那么ARM、和Intel的芯片也是微處理器芯片,大家其實工作都是進行運算,那么不帶數字信號處理功能的微處理器和帶該功能的處理器有什么區別呢?DSP處理器有一個指標,就是“乘法和累加運算”,就是一個32位數乘上另一個32位數其積再加一個32位數,這個運算過程要在一兩個指令周期內完成。換了ARM和Intel的微處理器,是不可能在一兩個指令周期完成的,它們乘法就要跑好幾個指令周期了。而DSP芯片自帶了一個MAC模塊,主頻相同情況下,可以比ARM和INTEL快N倍的計算出來。類似的還有快速傅里葉變換功能,這種數學運算在有DSP功能的芯片中,往往要算好長時間才能出結果。
那么你會說了,那我ARM和Intel的芯片業嵌入這種模塊就行了啊。是的,可以嵌。但是,一旦嵌入這種芯片,那么ARM芯片也可以叫做DSP芯片了。
所以,DSP只是一種技術,一種嵌了該技術的芯片,誰都可以生產。其實有些ARM芯片內部就嵌入了DSP功能,比如很多高通的一系列用于手機上的ARM主控芯片就自帶DSP功能。
而Intel自身發展是做計算領域的主控,在工業航天醫療等嵌入式領域才用得多的數字信號處理他們并不怎么涉及,所以他們的東西基本不會嵌入DSP模塊。
Microchip為了避免和TI的C2000系列DSP直接競爭,他們把旗下的dsPIC系列DSP芯片叫做DSC,其實還是DSP芯片,而且他們一直在推出新品。還有,飛思卡爾、ADI、NXP他們還都有生產DSP,只是他們爭不過TI的專用DSP。主要一點還是發現爭不過FPGA芯片。
這里又引出了FPGA這個技術,說到這個,或許才真的是DSP的真正敵人。目前做FPGA芯片的大廠有Altera等。他們不屬于Intel公司,也不生產ARM芯片,他們只專注于FPGA芯片。
我們知道,微處理器芯片其實是一堆數字電路大規模超高密度集成在芯片中,其最小單元其實就是晶體管,晶體管集成一個個門電路。門電路通過一系列排列組合形成了芯片內部CPU、存儲單元。這都是出廠前固化好的。
那我能否修改一下CPU 模塊的某個門電路,讓它有別的用途呢?已經出廠就固化的沒法改,但現在有了FPGA,你可以用程序編一個你自己發明的CPU內核出來,嵌到FPGA芯片中去,那么你想加入DSP有的MAC模塊等都可以,如果你覺得一個CPU內核不過癮,還可以再加一個內核進去(前提是FPGA芯片容量和資源夠大,當然這芯片就貴了)。
所以,現在飛思卡爾、ADI等看到FPGA芯片如此強勢,工業級的DSP成本又高,賣的價格跟FPGA差不多,價格比FPGA低點但又爭不過TI的DSP市場。所以沒辦法,只好慢慢退出了。現在TI也是靠以前的老客戶死扛著。萬一哪天,高端的FPGA降到跟他們差不多的價格,他們也要退出了。
當然FPGA的缺點除了自身成本高以外,如果要嵌入ARM、DSP核的話,這些核也更是要花錢的。同時就是FPGA的HDL開發難度要遠大于DSP的C,特別是在典型的圖像處理算法上,這也在一定程度上限制了FPGA的發展。
在某些工程師看來,作為一個帶有專用計算單元的處理器。DSP是為了滿足專用市場做的一種帶許多數學計算功能的處理器。比如哈弗結構,比如帶SIMD、VLIW技術的計算單元,曾經讓DSP在專用市場領先很多。而TI DSP的優勢就是低功耗、高運算性能、成熟穩定,再加上明顯的價格優勢。
從架構來說,TI固守的哈弗結構近十年沒大的改動,而arm、intel推陳出新的速度還是有目共睹的。看兩個小例子,intel的分支預測領先TI家很多;再比如TI的二級緩存、片內片外還需要用戶來管理,cache miss penalty也相當高,而intel高超的緩存技術讓你基本感覺不到片內片外的區別。
再看運算單元,現在arm有neon,intel有sse、avx、亂序執行,還有專用圖像計算的gpp;再加上FPGA。這些產品計算單元都已經很強悍了,所以說DSP的數學計算性能已經不能算是領先了。比如DSP里兩個4字節整型做乘加運算,TI的C674x需要4個時鐘周期,intel的sse3處理16個字節的乘加運算也只需要4個周期;而在復雜算法領域,比如圖像處理、模式識別,DSP是真的不夠用了,跑個boosting都吃力的要死,壓縮感知算法也就預研預研,最終絕大部分還是跑在intel、amd平臺。
簡單算法,可選的處理器太多,所以最重要的就是價格。我看好arm,而fpga沒有價格優勢。當然現在c2000現在還是有很多擁躉的,但是已經被別的處理器吃掉不少市場了。
以上是以計算性能為核心介紹的,沒有涉及到功耗。而在同樣的計算量,耗時相近的情況下,DSP的功耗控制是最優秀的,ARM、atom都不如DSP功耗低(asic可能也很好,但是不算通用處理器)。這也是為什么在嵌入式復雜算法市場,還是DSP為主流。
而就陳工看來,DSP的計算優勢并不在于普通四則運算上。就拿快速傅里葉變換FFT來說,同頻率下,其他任何不帶DSP內核的微處理器的FFT都要遜色于DSP。我們做DSP或者嵌入式其他的算法,都是根據《自動控制原理》或者《信號系統》,而不是根據《數據結構》。
他認為DSP做boosting不是一個明智的選擇,DSP對頻域方面的運算能力可以設計一個實時聲音過濾器(將嘈雜環境中的聲音全部通過麥克風傳到AD電路上,后通過DSP運算,把其中某個人的聲音摘出來,并通過喇叭實時放出來某人的聲音。這樣的數字濾波器可以做到比手機還小)。在TI DSP最大供貨的工業控制、航天領域,多數的DSP應用上跟計算機算法技術沒啥關系。
而說到DSP的低功耗,當然DSP做濾波、音頻處理等方面的時候,沒用到DSP功能把(只是把它們當一個單片機那樣來使用),這樣功耗是很低的。但如果用DSP做SPWM或數字濾波器什么的時候,功耗就大起來。具體對比數值我已經忘了,以前做礦用電機控制的時候對比過用ARM控制的功耗。(但好像Microchip的DSP芯片在做濾波時候功耗更低)。
其實,16bit/32bit的DSP芯片(或是其他32位MCU/ARM嵌入DSP功能的芯片)在長期發展中一直和各種單片機、ARM、PowerPC、X86等共存,并且不僅僅是TI,其他很多廠家都專門生產或者嵌入DSP模塊(比如Microchip的dsPIC系列DSP芯片,就一直不斷出新品)。這就說明DSP擁有著其他各種架構處理器都不擁有的信號處理能力。
綜合看下來,FPGA才是未來的大殺器,是真的嗎?