论文研究-广义预测自适应控制的双重控制算法.pdf

所需积分/C币:9 2019-09-07 13:21:16 653KB .PDF
1
收藏 收藏
举报

探讨了智能视觉监控算法在TI DSP平台上的移植方法。详细介绍了算法优化、CCS编译器优化、C代码优化、汇编指令优化及存储器配置优化等优化技术。通过具体的监控实例,在TMS320DM642平台上实现了多个运动目标的实时检测、跟踪算法,结果表明,对DSP进行优化之后其性能获得了指数级的增长。
李斌,李功燕,许世颐,等:DSP体系结构下视觉监控优化方法研究 2008,44(34)233 LDW D2T2*B21,B8 (1)使用 Intrinsics函数的程序 LDW DITI*A6.A6 ;89<1,8> cmpeq4(amem4 const(pdiff),0);/比较pdif指针所指对象与0 (2)使用关键字 const来修饰对象 的大小; const修饰的对象表示该变量或其所指存储区的数值保持 (2)汇编程序 不变,利用其他变量或指针的写入操作不会针对该变量,所以 ZERO BI7 定程度上消除了存储器之间的相关性。 CMPEO4. S +B9(4),B17,B21 (3)循环展开 通过对比,本来需要多个指令周期的C程序,用 Intrinsics 循环展开是在程序里把小循环的迭代展开,使可能并行的函数编写的程序结构简单且仅需一条到两条指令周期,具有 指令数增加,从而改变软件流水线编排。为了提高性能应当尽极高的效率。因此,应尽量使用 intrinsics函数提高程序的执 可能地是内循环展开,内循环展开后就可以对原来的外循环进行效率 行软件流水,展开循环的方法有使用 Pragma UNROLL和手工3.5线性汇编和汇编的使用 展开。 当编译器不能充分利用TIC6000构架的潜能时,可以通 (4) DATA ALIGN的使用 过把循坏写成线性汇编代码来获得更好的性能。针对程序中调 DATA ALIGN为数据对齐指令,对于υM642支持的内存用频繁耗时较多的部分用线性汇编和汇编实现。在使用汇编 空间对不对齐的双字(64位)一次性读取,但是在同一时钟周语言编写DsP程序时,需要考虑的问题有:写并行指令,CPU 期内,如果内存地址对齐则可以同时进行两组双字读取。因此功能单元的最大化使用,填充延迟间隙,指令乱序技术,程序中 在定义数组的时候使用 DATA ALIGN可以很大程度上增加程的某些指令的执行没有严格的顺序要求,可以调整这些指令的 序的并行性。 位置,穿插于其它指令之间,以提高并行性。 xH: #pragma DATA_ALIGN(fgndy, 4) 3.6编译器优化选项 unsigned char fgndyILENTHI TIC6000的CC++编译器支持标准C语言,并做了补充 33数据打包处理 和扩展,程序的优化是一个交互的过程,需要开发者利用编译 数据打包处理是一种用单一指令对多个独立的数据器反馈回来的信息不断修改源程序,编译器再根据所编程序中 (SIMD)执行相同操作的处理方法。C64系列支持两种基本的提供的信息和指定的编译选项来进行优化,表1为编译器所提 数据打包处理优化方法:向量化和宏操作。向量化是同时对多供的一些重要的编译选项机器功能例表。 个数据元素执行完全相同的单一操作,即充分利用C64X宽的 存储空间访问通路,换用字或双字的读取和存储操作来进行字 表1一些重要的编译选项与功能 或半字数据访问;宏操作与矢量化很相似,主要差别是它在相使程序得到最程度的优化,译器我行文件级的优化 邻元素间有数学运算。 编译器将保留编译过程中的.asm文件,编译者可以根据需要查看asm 数据打包处理机制的核心是打包数据类型——用来将多 中的信息 片数据元素保存到一个寄存器内。打包数据类型是C64X打包 pm在程序级将代码优化,容许编译器对整个项目的所有源程序联合观测 数据处理的基石,每一个打包数据类型将多个数据单元打包到 q除了源文件名和报错之外,不输出所有工具在处理过程中产生的标语 个32位的通用寄存器中。例如, matrix add_2x2()函数,使用 和过程信息 了数据打包处理,其效率提高了一倍以上,并且精简了代码的 表示在程序中没有使用存储器混叠技术,使得编译器可以更积极的优 长度。具体修改见下面函数,其功能可以用公式C2=42+B2 -nt化。使用nt选顶,它允许编译器假定可以消除冇储器相关性路径,可 以消除访问这些变量之间的存储相关性 来描述 使用-o3的时候,编译器会将函数自动展开,这样会增加代码的尺寸 inline void matrix_add_2x2( short a[restrict [2], short b[restrict [2] oInoin选项将限制代码的尺寸,即对函数展开的程度予以限制,但保留 short c[ restrict [2])( 03选项的其他优化功能 (oIo]=ao|0]+bOIO;∥数据打包前的代码 /eo=al0[+b|o1]; 编译者根据需要在CCS中 Build options中自行设置编译 /c1o alo)+ bll; 选项,如图2所示。其中-pm联合使用-3来指定程序级优 /c[1[1= a[l1]+ b[1l1] 化。在该过程中,所有源代码在编译过程中将编译成一个中间 mcn4(c0)=sad.(mcm4cnst(a0),mem4cons(b0);文件以给编译器一个完整的可视程序。对于确定指针位置传到 数据打包后的代码 函数时有着突出的优点。一旦编译器确定两个指针不访问同 mem4(c[])=sad2(mem4coms(a),mem4 const(b1);个存储空间,就可以在软件流水中取得很大的改进。因为编译 器访问整个程序,它将进行几个附加的、在文件级优化中很少 在程序中使用 pragma directive: MUST ITERATE等指令见的优化。 向编译器提供访问的数据是字(或双字)边界且循环次数为偶 在一个函数中,如果一个特定变量总是有着相同的值,则 数的信息,编译器将自动采用数据打包处理技术进行编译。 编译器用这个值取代这个变量,代替该变量传递值;如果函数 34 intrinsics函数的使用 的返回值从未用到,则编译器删除该返回值;如果函数无论是 TIC6000编译器可以识别许多 intrinsics函数。 intrinsics直接还是间接都不会被调用,则编译器消除这个函数。同时, 函数直接调用某些汇编语句,而这些汇编语句可以用来替代复用-pm选项可以为一个循环安排更好的进度。如果循环重复的 杂的C程序,可以使其执行效率显著提高。 intrinsics函数在其数目由传给函数的值确定,并且编译器可以确定被调函数返回 函数名前加一个“”符号来特别标注,它的使用方法与函数调的值,则编译器将会给出较好进度的循环最小数值。 用类似,可以使用C程序中的变量。例如: (下转238页)

...展开详情
试读 3P 论文研究-广义预测自适应控制的双重控制算法.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
weixin_38743481 欢迎大家使用并留下宝贵意见
2019-09-07
  • 至尊王者

    成功上传501个资源即可获取
关注 私信 TA的资源
上传资源赚积分or赚钱
    最新推荐
    论文研究-广义预测自适应控制的双重控制算法.pdf 9积分/C币 立即下载
    1/3
    论文研究-广义预测自适应控制的双重控制算法.pdf第1页

    试读结束, 可继续阅读

    9积分/C币 立即下载 >