定点处理器VS浮点处理器:如何优化您的选择?
浮点处理器的优点众所周知。毫无疑问,许多算法的浮点实现执行起来比定点代码占用更少的周期(当然假设定点代码提供相同的精度)。浮点处理器也往往更容易用汇编代码编程。不过,浮点运算的这两种优势还不足以影响设计师的最终选择。随着编译器质量的日渐提高,人们几乎不再用汇编语言编写代码,无论是定点或者浮点运算,采用C语言写代码几乎同样简单。此外,在C语言中,你肯定能为一个定点处理器编写浮点算法,尽管这样做会使性能大幅下降。设计师关心的是最后的系统性能、成本以及上市时间。在下面的分析中,我要使用它们作为衡量标准以决定该使用何种类型处理器。
目前有各式各样的处理器,既有定点的也有浮点的。对每个处理器逐一进行分析将使这篇文章的长度足以与一本百科全书相媲美。因此我们将分析范围限制在以下处理器上:两款来自定点阵营的ADI Blackfin|0">Blackfin处理器和来自其浮点竞争对手的SHARC处理器。我们还将进一步挑选两个相似价位的处理器--ADSP-21531 Blackfin和ADSP-21375 SHARC进行比较,到截稿时,如果购买数量合理的话,它们的单价为5美元左右。
有人也许会认为,在芯片价格相似的情况下,应该选择浮点处理器,仅仅因为万一需要用到浮点运算的时候,它也可以应付。但是芯片价格的接近并不一定总能转化成最终系统价格的接近。例如,对于相同的定点运算任务来说,SHARC的功耗比Blackfin高,这将引起电源设计耗费的增加和其它一些相关问题。无论如何,单一的应用很可能会偏好某种处理器。所以,为了公平起见,我们将考虑四种单独的应用:1)军用雷达;2)移动电视;3)专业音效处理器;4)免提便携装置中的自动回波抵消器。
选择这些应用并非是乱选一通。相反,我选择这些应用出于以下标准:这种应用是所在领域的明显赢家;或者答案还不是很确定并需要深度分析;或者这种应用太简单,以致容易引起误解。我还想补充一点,如果没有考虑ASIC硬件协处理器(片上或片下)以及可以从DSP卸载一些信号处理任务的FPGA,那么任何实际分析都是不完全的。 有关这些方面的讨论完全在本文的范围之外,但是请记住,以下的研究仅仅是真实世界里更大范围分析的一部分。
军用雷达
我们最好从容易的选择开始。在军用雷达中你会经常用到浮点处理器。为什么?因为在这种应用中浮点性能是不可缺少的。雷达依靠的就是测定自模糊函数的最大绝对值。该函数表达的是发出的测试信号和接收的回波之间的互相关性。
这是一个指数函数的积分。这种积分能用FFT技术计算。在计算大型FFT时,浮点运算十分有用,而且在这里采用浮点处理器没有任何障碍。只要热量能排出(即处理器不发烫),功率不是大问题。该装置的成本也不是主要问题,因为这些处理器成本仅占整个系统成本的很小部分。事实上,一般不大会选择ADSP-21367 SHARC来完成这样的任务,因为该应用的一个目标是在每平方毫米中尽可能提供更多的处理能力。因此,ADI公司的TigerSHARC系列产品中的高性能ADSP-TS201会更适合这个应用。
移动电视
这是另一个易于决定的选择。在移动电视中完全没有必要进行浮点处理。大部分的信号链处理是在标准解码器中进行的,如MPEG-2, MPEG-4, JPEG-2000和H.264。这些算法被设计由定点运算来执行。更高精度和更大动态范围的浮点运算不仅毫无帮助,而且根本无法使用,因为这些算法通常都只精确到比特。
例如,在视频编解码器中使用的频域的变换实际上是某种形式的DCT变换(离散余弦变换)。表面上,似乎浮点运算更适合于DCT计算,就像适合FFT计算一样。浮点运算确实会产生更加精确的DCT。不幸的是,视频编解码器中的DCT是被设计在定点处理器上完成的,并且只精确到比特,因此在这里追求更高的精度是完全错误的。
更何况,视频编解码器的大部分工作量都用于控制代码,那里同样也不需要浮点编码。比如,视频编解码器中使用的熵编码器占了整个工作量的很大一部分(在H.264算法中使用的CABAC编码器更是如此)。
这里所考虑的两种处理器,能根据下列事实较清楚地做出正确的选择,即Blackfin处理器拥有特别设计的加速视频算法性能的指令。相反,SHARC处理器没有特殊的视频指令。此外,功耗对于移动市场来说是至关重要的,这几乎就将浮点处理器排除在外了。这些使选择变得轻而易举。
而其余的应用实例将需要我们进行更加深入的分析,才能做出正确的处理器选择。
专业音效处理器
现在我们将面对一个选择不是那么清晰的应用。这里没有移动应用所需要的严格功耗限制,音效处理器通常是通过外接电源供电的。除非处理器非常热,需要强制冷却(一个很昂贵的建议),否则关于功耗的讨论都将归于供电成本。
举例来说,我们正设法为一个双通道系统建立一个具有La Scala歌剧院混响的效果处理器。一种方法是去La Scala歌剧院实地测量脉冲响应(长到直到其最后回声听不见为止),或者你也可以作弊,从网上下载已经测量到的脉冲响应。我就是这样做的,该脉冲响应接近2秒长。如果采用96 KHz的抽样频率,该响应就换成FIR延迟线上192,000个样本(实际的抽样频率可能是48KHz或192KHz,所以我取了中间值)。因此,为了拥有准确的实施混响效果,我们需要实现一个192,000抽头的滤波器。
当然,直接做一个192,000抽头滤波器是一个疯狂的想法,这需要对每个输出样本做192,000次乘法运算。每秒96,000个样本,这意味着每秒将做超过180亿次的乘法。考虑到有两个输出通道,还要将这个数量乘2,再加上必须的额外处理,以及为未来扩展留出的空间,你能想象吗?我们在这里轻松谈论的是每秒1,000亿次的MAC!退一步说,即使你能用100个并行处理器来完成这项工作,但是最终这个盒子的售价(和其大小)都会对其销售产生消极影响。因此,进行优化是必要的,我们要根据处理器选择的情况来进行优化。
让我们首先考虑浮点运算的执行。如前所述,浮点运算处理对大型FFT来说是有益的,因此我们可以在频域中实现该滤波器。常用的一种算法是重叠相加FFT(这是通过一组较小型FFT来计算大型FFT的一种基本方法) 。本文将选择一个1,024点窗口来计算重叠相加FFT。
ADI的网站显示ADSP-21367 SHARC能在大约9,200个周期内完成1,024点复杂SIMD(单指令多数据)FFT。这样,为了计算1,024个输出样本,必须做一个1,024点FFT,然后再做1,024次复杂乘法,最后再做一个1,024点IFFT。复杂乘法运算要占用SHARC处理器的2,048个周期。因此,计算1,024个输出,将需要9,200+2,048+9,200=20,448个周期,即每个输出需要大约20个周期。加上完成重叠相加FFT所需的填零,访问外部存储器以读入脉冲响应的预计算FFT,同样由于有两个通道所以全部都要乘以2,这样每个输出需要大约100个周期。每秒抽样96,000次,那么每秒需要9,600,000个周期。换句话说,这将只消耗SHARC处理能力预算的10MIPS。
现在,让我们用一个定点处理器来实现相同的任务。不幸的是,上述FFT的执行遭遇了重大问题。一个1,024点FFT/IFFT组合产生一个1,024增益,即10位。为了避免溢出,在FFT/IFFT的计算过程中,信号要下移10位。如果我们希望输出有24位分辨率的话,就必须执行34位操作。由于A/D和D/A转换器通常提供少于24位的SNR,我们采用32位操作就可获得22位的性能。一个定点16位处理器要做4次乘法,还有一些移位和相加,才能完成一个32位乘法。
假如使用Blackfin处理器,每个32位乘法需要6个周期。结果,在SHARC上需要10MHz的处理过程在Blackfin上需要60MHz。出乎意料的是,在这点上Blackfin似乎占有优势。任何一个处理过程都能轻松处理其工作量,所以要靠其它因素,例如功耗,来决定哪种处理器更适合。在这样低的频率下,在整个功率消耗中泄漏功率占很大一部分,这就使得频差的相关性减小。Blackfin大大降低了泄漏功率,所以在这种情况下它可能脱颖而出。然而,随着处理工作量的增加,动态功率成分越来越占据主导地位,这样不久以后,六个频率差异因素将使SHARC占尽优势。在极端情况下,Blackfin执行会用完全部的MIPS,从而使SHARC成为唯一的选择。
用另一种不同的方式,可以实现所需混响的近似值。我们可以仅保留主项而将其它项归零。假设我们想要保持1%项非零,将其做成一个1,920抽头FIR。我们不能再用FFT来做这个滤波器,因为FFT不能有选择性地计算项目,它必须计算所有值。因此,我们将直接实现这个FIR。这意味着每个输出样值需要1,920次乘法才能实现。为了保持24位精度,我们要将其乘以6。Blackfin每个周期能做两个16位乘法,因此除以2可得到周期数。总而言之,每个输出归结为5,760个周期。要获得全部的工作量,再将其乘以2(通道数量),再乘以96,000MHz的抽样频率,而且还要为管理和新功能预留一定的空间。这样,我们得到2GHz的运行频率。这样,我们将99.9%的脉冲响应项归零后以200MHz来实现。但该频率仍远远高于我们用SHARC时基于FFT的解决方案。或许更重要的是,当我们将99.9%的项归零时滤波器的性能就已经开始受到损害了。
在现实生活中,一个专业音效果处理器拥有比混响更多的功能。要想充分认识定点/浮点之间的权衡比较,你必须全面分析处理过程。这不是一个简单的任务,但是混响的例子清楚表明了浮点解决方案比定点解决方案消耗更少的功率,尽管事实上数据表中的功率数据暗示了相反的结果。
- 风电要并网,智能电网是关键(08-05)
- SHARC 2147x系列处理器适用于便携式和电池供电的系统(03-26)
- 基于Blackfin处理器的继电保护完整解决方案解析(02-01)
- 利用SHARC处理器成就顶级音频系统品质(10-30)
- 让新型SHARC处理器满足“一高二低”的浮点设计需求(04-14)