您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

在DSP处理惩罚器上并行实现ATR算法

发布日期:2011-05-06

  主动目标辨认(ATR)算法通常包括主动地对目标举行检测、跟踪、辨认和选择打击点等算法。战场环境的巨大性和目标范例的不绝增长使ATR算法的运算量越来越大,因此ATR算法对微处理惩罚器的处理惩罚本领提出了更高的请求。由于通用数字信号处理惩罚芯片可以或许通过编程实现种种巨大的运算,处理惩罚精度高,具有较大的机动性,并且尺寸小、功耗低、速率快,以是一样平常选择DSP芯片作为微处理惩罚器来实现ATR算法的工程化和实用化。

  为了包管在DSP处理惩罚器上及时地实现ATR算法,用算法并行化技能。算法并行化处理惩罚的三要素是:①并行体系布局;②并行软件体系;③并行算法。并行体系布局是算法并行化的硬件底子,并行算法都是针对特定的并行体系布局开辟的并行步伐。根据DSP处理惩罚器的数量,ATR算法的并行实现可以分为处理惩罚器间并行和处理惩罚器内并行。处理惩罚器间并行是指多个DSP处理惩罚器以某种方法连接起来的多处理惩罚器并行体系,ATR算法在多个处理惩罚器上并行招待。根据处理惩罚器利用存储器的环境,多处理惩罚器并行体系又可分为共享存储器多处理惩罚器并行体系和散布式多处理惩罚器并行体系。处理惩罚器内并行是指在单个DSP处理惩罚器内通过多个成果单位的指令级并行(ILP)来实现ATR算法的并行化。本文分别对在共享存储器多处理惩罚器并行体系、散布式多处理惩罚器并行体系和指令级并行DSP处理惩罚器上并行实现ATR算法举行了探究。

 
 1 在共享存储器多处理惩罚并行体系上实现ATR算法

  在共享存储器多处理惩罚器并行体系中,各个处理惩罚器通过共享总线对全部的存储器举行操纵,实现各个处理惩罚器之间的数据通讯。而在任临时候,只容许一个处理惩罚器对共享总线举行操纵。以是处理惩罚器对存储器举行读/写操纵时就必须先得到对共享总线的控制权,这通过总线仲裁电路实现。然而,由于全部的处理惩罚器只能通过一条共享总线对存储器举行访问,这在处理惩罚器数量比较多大概处理惩罚器之间频繁互换数据的环境下容易引起总线辩论和等待而低落整个并行体系的运行速率。共享存储器多处理惩罚器并行体系的好处是布局大略,当处理惩罚器的数量较少时,可以到达较高的加快比。

  ADSP2106x处理惩罚器支持最为常用的共享存储器多处理惩罚器并行体系,构成多处理惩罚器体系的每一片ADSP2106x的片内存储器同一编址,任一ADSP2106x可以访问别的任意一片ADSP2106x的片内存储器。由于片内SRAM为双口存储器,因而这种访问并不停止被访问处理惩罚器的正常事变。每个处理惩罚器片内SRAM既是该处理惩罚器的局部存储器,又是共享存储器的部分。在不增长帮助电容的环境下,通过外部总线接口直接相连的处理惩罚器数量最多为6个。由于每个处理惩罚器的事变步伐放在其片内的双口SRAM中,因此各个处理惩罚器可以实现并行处理惩罚,这是ADSP2106x的存储器布局所决定的。

  ATR算法在共享存储器多处理惩罚器并行体系中实现时,在编写并行算法步伐方面应当重点思量的题目包括:

  (1)均衡地把任务分派给各个处理惩罚器

  ATR算法在共享存储器多处理惩罚器并行体系中实现任务级并行,因此必须把ATR算法分别为谋略量均衡的多个任务,把各个任务分派给多个处理惩罚器,才华发挥多处理惩罚器并行体系的最大并行服从。

  (2)只管即便淘汰多处理惩罚器之间数据通讯

  由于多处理惩罚器只能通过一条共享总线对存储器举行访问,这在多处理惩罚器之间频繁互换数据的环境下容易引起总线竞争而低落整个并行体系的运行速率。

  (3)利用单个处理惩罚器的并行编程特性

  充分应用单个处理惩罚器的并行编程特性,有利于收缩各个处理惩罚器上任务的运行时间。比方,ADSP2106x的32位浮点运算单位包括一个乘法器、一个加法器和移位逻辑电路,它们并行事变;比特倒转寻址在傅立叶更改运算时非常有效;循环寻址在作卷积、数字滤波运算时通常用到等。

  
2 在散布式多处理惩罚器并行体系上实现ATR算法

  在散布式多处理惩罚器并行体系中,多处理惩罚器有各自独立的存储器,多个处理惩罚器通过通讯口相连构身散布式多处理惩罚器并行体系。散布式多处理惩罚器并行体系的加快比和处理惩罚器的数量呈线性干系,以是只要增长处理惩罚器的数量,散布式多处理惩罚器并行体系的处理惩罚本领就可以或许成比例地增长。散布式多处理惩罚器比较得当于构成大范围并行体系。

  如今,谋略量过大仍旧是制约很多有效的ATR算法及时实现的个重要因素。ATR算法在散布式多处理惩罚器并行体系上及时实现是一个很有潜力的研究范畴,分外在地基和天基雷达信号处理惩罚体系中有广阔的应用远景。散布式多处理惩罚器并行体系的连接方法有线形、树形、星形、网孔和超立方体布局等。树形和星形网络的好处是网络办理容易、数据通讯进寻径大略;缺点是树形网络的根节点处理惩罚器和星形网络的中间节点处理惩罚器的输入/输出吞吐量大,易导致通讯瓶颈。以是树形和星形网络不得当ATR算法各个任务数据通讯量较大的应用场合。

  在散布式多处理惩罚器并行体系中并行实现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处理惩罚器的各个成果单位满负荷运行。

  ③循环归并

  要是两个循环计数差未几、循环实行互不雷同的操纵,可以把它们归并在一起构成一个循不。当两个循环的负荷都不满时,这黑白常有效的。

  ④利用内联函数

  TMS320C62x编译器提供的内联函数是直接映射为内联指令的特别函数,内联函数的代码高效、代码长度短。用户可以利用内联函数并行优化C代码。

  ⑤利用字节访问短整型数据

  内联函数中有些指令是对存储在32位寄存器的高16位和低16位字段举行操纵的。当有大量短整型数据举行操纵时,可以利用字(整型数)一次访问两个短整型数据。然后利用内联函数对这些数据举行操纵,从而淘汰对内存的访问。

  ⑥软件流水

  软件流水是用来摆设循环指令,使这个循环多次迭代并行实行的一种技能。在编译时利用-o2和-o3选项,编译器可对循环代码实现软件流水;利用-o3和-pm选项,使优化器访问整个步伐,相识循环次数;利用_nassert内联函数,防备冗余循环孕育产生;利用谋利实行(_mh选项)消除软件注流水循环的排空,从而淘汰代码尺寸。

  在嵌套循环中,编译器仅对最内里的循环实行软件流水,因此对招待周期很少的内循环作循环展开,外循环举行软件流水,如许可以改造C代码并行实行的性能。利用软件流水还应当细致:只管软件流水循环可以包括内联函数,但是不克不及包括函数调用;在循环中不可以有条件停止指令;在循环体中不可以修改循环控制变量。

  (3)编写线性汇编代码

  编写线性汇编代码是并行算法软件开辟流程的第三个阶段。了进步并行算法软件代码的性能,对影响并行步伐速率的关键C代码可以用线性编重新编写。编写线性汇编代码不必要指明利用的寄存器、指令的并行与否、指令的耽误周期和指令利用的成果单位,汇编优化器会根据环境确定这些住处。优化线性汇编代码的要领包括:为线性汇编指令指定成果单位,使得末了的汇编指令并行实行;利用字访问短整型数据;利用软件流水对循环举行优化。编写线性汇编代码的事变量非常大,必要很长的开辟周期,并且开辟后的汇编代码不克不及像C代码那样移植在别的的DSP平台上。

  应用上述并行步伐开辟要领,在TMS320C6201 EVM板上实现了宽带毫米波雷达目标时延神经网络辨认算法。颠末实际测试,并行算法步伐实行时间为0.850ms,餍足了目标辨认算法的及时性需求。