1. 程式人生 > >DSP將走上窮途末路,FPGA是未來的替代者?

DSP將走上窮途末路,FPGA是未來的替代者?

  DSP技術,在某些人看來,或者已經面臨著英雄遲暮的感覺,就我們當前所知道的。Freesacle、ADI、NXP早就停掉了新技術發展,而當前從大的方面說只剩下TI一家扛著Digital Signal Processor的大旗。

  在很多人看來,這十年來,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、Xilinx等。他們不屬於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的發展。雖然現在Xilinx的Vivado支援high level synthesis,把C轉成HDL,但是,這也是一個很困難的問題。這也不是一個明智的選擇。

  在某些工程師看來,作為一個帶有專用計算單元的處理器。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才是未來的大殺器,大家怎麼看待?當然,整個討論只是一家之言,希望大家能夠理性看待整個討論。