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等。他们不属于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才是未来的大杀器,大家怎么看待?当然,整个讨论只是一家之言,希望大家能够理性看待整个讨论。