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