DSP在自动目标识别中的应用
个任务数据通信量较大的应用场合。
在分布式多处理器并行系统中并行实现ATR算法目前还处于研究的初始阶段,在编写并行算法程序应当重点考虑两个方面:
(1)各处理器任务的均衡分配
在分布式多处理器并行系统中处理器的数目通常较多,只有合理地对众多的处理器均衡地分配任务,才能最大地发挥并行系统的总体性能,提高并行系统的加速比。
(2)处理器节点间的高效通信
在分布式多处理器并行系统中数据通信都是点对点通信。即两个相邻的处理器之间通过通信口通信。因此需要合理安排各个处理器节点在网络结构中的位置,尽可能地缩短处理器节点间的通信路径长度,从而实现处理器节点间的高效数据通信。
3 在指令级并行DSP处理器上实现ATR算法
在单片DSP处理器内通过多个功能单元的指令级并行(ILP)实现ATR算法的并行化处理,目前适合ATR算法实时处理的指令级并行芯片是TI公司的TMS320C6x系列DSP。TMS320C6x系列DSP处理器是第一个使用超长指令字(VLIW)体系结构的数字信号处理芯片。下面以TMS320C62x定点系列DSP为例说明指令级并行的原理和ATR并行算法软件开发方法。
3.1 VLIW体系结构
TMS320C62x的内核结构如图1所示。内核中的8个功能单元可以完全并行运行,功能单元执行逻辑、位移、乘法、加法和数据寻址等操作。内核采用VLIW体系结构,单指令字长32位,取指令、指令分配和指令译码单元每周期可以从程序存储器传递8条指令到功能单元。这8条指令组成一个指令包,总字长为256位。芯片内部设置了专门的指令分配模块,可以将每个256位的指令分配到8个功能单元中,并由8个功能单元并行运行。TMS320C62x芯片的最高时钟频率可以达到200MHz。当8个功能单元同时运行时,该芯片的处理能力高达1600MIPS。
3.2 基于TMS320C62x的并行算法软件开发方法
基于TMS320C62x的并行编译系统支持C语言和汇编语言开发并行程序代码。通常,开发ATR并行算法按照代码开发流程的三个阶段进行并行程序设计:第一阶段是开发C代码;第二阶段是优化C代码;第三阶段是编写线性汇编代码。以上三个阶段不是必须的,如果在某一阶段已经实现了ATR算法的功能和性能要求,就不必进入下一阶段。
(1)开发C代码
开发C代码需要考虑的要点包括:
①数据结构
TMS320C62x编译器定义了各种数据结构的长度:字符型(char)为8位,短整型(short)为16位,整型(int)为32位,长整形(long)为40位,浮点型(float)为32位,双精度浮点型(double)为64位。在编写C代码时应当遵循的规则是:避免在代码中将int和long型作为同样长度处理;对于定点乘法,应当尽可能使用short型数据;对循环计数器使用int或者无符号int类型,避免不必要的符号扩展。
②提高C代码性能
应用调试器的Profile工具可以得到一个关于C代码中各特定代码段执行情况的统计表,也可以得到特定代码段招待所用的CPU时钟周期数。因此可以找出影响软件程序总体性能的C代码段加以改进,通常是循环代码段影响软件程序总体性能。
③数据的定标
由于TMS320C62x是定点系列芯片,不支持浮点操作。在程序编写过程中,应当尽量采用定点的数据结构。而实际处理的数据通常都是浮点的,所以需要把浮点数据通过定标转化为整型数据处理,提高程序的处理速度。数据的定标是十分关键的步骤,既要使数据处理精度满足性能要求,又要防止在数据处理过程中出现溢出。
(2)优化C代码
优化C代码包括向编译器指明不相关的指令、循环展开、循环合并、使用内联函数、使用字访问短整型数据和软件流水等方法。
①向编译器指明不相关的指令
为使指令并行操作,编译器必须确定指令间的相关性,只有不相关的指令才可以并行执行。如果编译器不能确定两条指令是不相关的,则认为是相关的,安排它们串行招待。用户可通过如下方法指明相关的指令:
·关键字const可以指定一个目标,const表示一个变量或者一个变量的存储单元保持不变,使用const可以提高代码的性能和适应性。
·一起使用-pm选项和-03选项可以确定程序优先级。在程序优先级中,所有源文件都被编译成一个模块,从而使编译器更有效地消除相关性。
·使用-mt选项向编译器说明在代码中不存在存储器相关性,即允许编译器在无存储器相关性的假设下进行优化。
②循环展开
循环展开就是把循环计数小的循环展开,成为非循环形式的串行程序,或者把循环计数大的循环部分展开,减少循环迭代次数,增加单个循环内的代码,使得循环内的操作可以均匀分布在各个功能单元上,保持DSP处理器的各个功能单元满负荷运行。
③循环合并
如果两个循环计数差不多、循
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)