引言
是否想为ADSP-TS201 TigerSHARC®处理器编写高效的代码?或者,也许有关该处理器的优化浮点FFT举例给你留下了深刻印象,你想了解它的工作原理以及程序员在书写代码时的所思所想。本应用手记试图通过全面细致地分析该FFT代码例子及其所有优化级来回答你的这两个问题。本例可以在开发针对ADSPTS201S处理器的其它的优化算法和代码时遵循。一般来讲,大多数算法都有几个优化级,这些将在本手记中详加讨论。第一个和最直接的优化层次是正如处理器所允许的,是指令的并行。它简单而枯燥。第二个优化层次是循环体展开( loop unrolling)和软件流水线操作,以获得最大 的并行性和避免流水线阻塞(stall)。尽管比级别1的简单并行性要复杂,但它不要求对算法的很好理解便可以依规定的步骤完成,因而它要求很少的智力劳动。第三个优化层次是对算法的数学表达进行重建,仍能产生有效的结果,而重建后的新算法更好地适于处理器架构。做到这一步需要对算法的全面理解,且不像软件流水线操作那样,它没有规定步骤引导出最佳解决方案。这也正是编写优化代码的最精妙之处。实际应用中,不是经常要经历全部三个层次的。但在需要经过全部三个层次时,以反向的次序来做这些优化层次总是最好的。在代码完全进入流水线操作后,再来改变基础的底层算法就太迟了。因此,作为一名编程人员,需要首先考虑算法结构并据此对代码进行组织。而后,级别2和级别1(并行、展开以及流水线操作)优化层次通常同时进行。
在本手记中出现的代码由模拟器件公司以某种形式提供,它允许作为一种实数或复数FFT被调用,函数的最后调用参数定义是调用实数还是复数。实数N-点FFT由复数N/2-点FFT取得,它在终结处有一个附加的特别进程( stage)。本手记更多关注代码的优化而不是该特别进程的技术性,因此,只讨论代码的复数FFT部分的算法。实数FFT最后的特别进程在代码注释中详加讨论。
标准Radix-2 FFT算法
优化ADSP-TS201处理器的FFT结构
使用准则
附录
完整文档资料请百度云盘下载:链接:http://pan.baidu.com/s/1qWUyJ3A 密码:wfgw
ADI DSP任何问题,可联系OP的QQ:5516164,邮箱:sale@openadsp.com
|