基于TS201的软件优化设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于TS201的软件优化设计
任腊梅;古康;李增元
【摘要】数据实时处理能力是雷达信号处理等实时系统的重要指标,提高软件运行效率是系统软件设计中必须要考虑的问题。

大批量数据读取和存储操作存在于信号处理各工作阶段,对其进行充分优化是信号处理软件设计的重要组成部分。

在此以ADSP TS201平台数据转存为例,描述了软件优化的设计思路和处理方法,运行结果表明,充分应用DSP并行处理特性和宽数据操作,采用汇编语言编程,可以使软件运行效率得到显著提高。

%The capability of real⁃time data processing is a significant index for evaluation of real⁃time processing systems, such as radar signal processing system. Improvement of software efficiency must be considered in system software design. Due to the fact that the readout and storage of mass data exist in every stage of data processing,the sufficient optimization becomes im⁃perative for design of signal processing software. Taking data dump based on ADSP TS201 platform for example,the principle of optimization design and its processing approach are illuminated. Preliminary results verify that the software running efficiency can be dramatically improved by the parallel processing and broad data operation with DSP,as well as application of assembler language programming.
【期刊名称】《现代电子技术》
【年(卷),期】2015(000)002
【总页数】3页(P46-48)
【关键词】TS201;汇编语言;优化设计;指令并行;信号处理
【作者】任腊梅;古康;李增元
【作者单位】陕西黄河集团有限公司,陕西西安710043;陕西黄河集团有限公司,陕西西安 710043;陕西黄河集团有限公司,陕西西安 710043
【正文语种】中文
【中图分类】TN919-34;TP312
雷达作为一种探测、捕获及跟踪目标的现代化设备,要求具有较高的实时处理能力。

信号处理系统作为雷达的重要组成部分,负责对回波信号进行处理并检测目标信号,是雷达系统中数据处理量最大、运算复杂度最高的部分,其实时处理能力的提高能够达到提升雷达系统整体性能的目的[1⁃2]。

对信号处理软件的优化通常需结合具
体DSP处理器平台进行,本文主要介绍了基于ADSP TS201的软件优化设计方法。

1 优化设计方法
软件的优化设计通常包括如下两部分:
(1)对软件算法的优化,即通过寻找最适合硬件实现的算法,提高软件运行效率;(2)对代码的优化,即通过优化代码的组合及顺序,提高代码执行效率。

当实现算法确定后,软件的优化主要是代码的优化。

为了提高软件执行效率需采用汇编语言进行编程,通过充分利用CPU资源,使其在最少的时间完成最多的指令。

ADSP TS201是ADI的一款支持浮点数运算的高
性能数字信号处理芯片,其内部包含两个运算模块(X、Y模块)及2个整数运算寄存器组(J、K寄存器组),双运算模块及双整数运算寄存器组支持并行操作。

4条相互独立的128位宽度的内部数据总线分别连接6个4 Mb内部存储器块中的
一个,提供4字的数据、指令及I/O访问。

内部静态超标量结构使得DSP每周期可执行多达4条指令,24个16位定点运算和6个浮点运算[3⁃5]。

结合ADSP TS201的硬件结构,对软件的优化主要可从如下几个方面进行考虑:充分利用双运算模块和双整型ALU,进行并行操作;使用自增的指针寻址方式,减小寻址时间;充分利用单周期多指令操作。

2 软件优化实例
通常雷达信号处理包括脉冲压缩、MTI、MTD、恒虚警等一系列处理[6⁃8]。

这些处理包含大量的乘法、加法等运算,计算处理较为复杂,不可能将处理中间结果直接存储在寄存器中用于后续处理,因此需要将各算法处理结果及时存储在DSP内存中,这样就要对数据进行反复地读取和存储[9⁃10]。

数据读取和存储操作的优化设计就成为软件优化中的重要部分。

本文就以包含数据读取和存储的数据转存操作为例,介绍软件的优化设计方法。

数据转存操作要求将数组Source中的200项数据转移到数组Destination中。

该功能可使用C语言实现,也可以使用汇编语言编写。

2.1 方案1:C语言for循环实现数据转移
采用C语言编程,最简单的方法是用for循环语句进行数据的循环读取和存储,如下所示:
int Trans_loop;
for(Trans_loop=0;Trans_loop <200;Trans_loop++)
{ Source[Trans_loop]=Destination[Trans_loop];}
该段代码经编译器编译后产生的汇编代码如表1所示。

表1 for循环语句执行过程注:表中的黑体字表示插入了等待周期。

?
表1汇编代码中,第2~16行循环执行200次,实现200项数据的转移。

一个数据的转移需15行指令,若无等待周期需消耗15个指令周期,则转存200项数据
总共需要1+15×200=3 001个指令周期。

实际运行中,有时会由于数据不稳定,DSP自动插入等待周期;部分跳转指令会打断流水的执行,也会插入等待周期,导致实际消耗指令周期大于理论值。

表1中给出了实际的指令周期消耗数,表中的黑体字表示插入了等待周期,其中第3行、第4行、第8行、第11行的插入是因为指令中用了立即数,此指令在执行时需从程序存储块中取出数据,导致指令执行时间增加。

总指令周期计算时最后加10是因为循环结束时,PC预测错误,指令流水被打断,系统插入10个等待周期,该段代码总共消耗4 823个指令周期。

2.2 方案2:汇编语言双字转移
第2种方案是用汇编语言编写实现数据转移,编写代码如下:
行号指令
1 j10=j31+_Source;;
2 k10=k31+_Source+2;xr0=200;;
3 j0=j31+_Destination;;
4 k0=k31+_Destination+2;;
5 xr0=lshift r0 by ⁃2;;
6 lc0=xr0;;
7 xr1:0=l[j10+=4];;
8 transfer_begin:
9 yr1:0=l[k10+=4];l[j0+=4]=xr1:0;;
10 .align_code 4;
11 if nlc0e,jump transfer_begin;l[k0+=4]=yr1:0;xr1:0=l[j10+=4];;与方案1相比,该方案使用TS201的零开销循环计数器lc0减少循环开销;通过j9和j10地址自增寻址减小寻址时间;并行运行双寄存器减少存取次数;利用DSP宽数据总线进行数据双字访问,减少循环次数,理论上总共需要107个指令
周期。

实际运行时,第9行、第11行的在前两次执行时由于数据不稳定会插入等待周期,当Source与Destination处于相同存储块时,由于第9行和第11行中读数和写数是对同一存储块进行的,而DSP对同一存储块分配的数据总线不能同
时进行读和写,因此第9行和第11行执行时插入等待周期,各消耗2个指令周期,总共消耗246个周期;当Source与Destination处于不同存储块时,DSP的不
同数据总线可以同时访问两个存储块,第9行和第11行的执行不需额外等待,共消耗116个指令周期。

2.3 方案3:汇编语言四字转移
由于200是8的整数倍,因此还可以考虑采用128位数据总线进行4字访问,此时代码如下:
行号指令
1 j10=j31+_Source;;
2 k10=k31+_Source+4;xr0=200;;
3 j0=j31+_Destination;;
4 k0=k31+_Destination+4;;
5 xr0=lshift r0 by ⁃3;;
6 lc0=xr0;;
7 xr3:0=q[j10+=8];;
8 transfer_begin:
9 yr3:0=q[k10+=8];q[j0+=8]=xr3:0;;
10 .align_code 4;
11 if nlc0e,jump transfer_begin;q[k0+=8]=yr3:0;xr3:0=q[j10+=8];;与方案2相比,该方案将双字访问变为4字访问,进一步减少了读取次数,理论
消耗57个指令周期。

实际执行时由于第7行到第9行、第9行到第11行以及第
11行到第9行2个连续的指令行中都有对xr1:0和yr1:0寄存器的操作,当数据未稳定时,会插入等待周期。

当Source与Destination处于相同存储块时,总共消耗132个周期。

当Source与Destination处于不同存储块时,总共消耗66
个指令周期。

从3种方案的执行结果可以看到,通过充分利用指令并行、宽数据总线以及零开
销循环计数器,并将源数据区和目的数据区分配到不同的存储块中,对汇编代码进行一步步的优化,方案2可以在116个周期内完成方案1中需用4 823个指令周期才能完成的任务,效率提高了约40倍;方案3可以在66个指令周期内完成,
相对方案1效率提高了约70倍。

需要说明的是,此时统计的指令周期数包含了循环运行前的准备计算,这些计算与循环次数无关,此处仅以200个数据为例,当转存数据越大时,实际的效率差异
越大。

方案3要求使用存储区是双字对齐的,方案4要求存储区都是4字对齐的,这要求在数组定义时使用关键字align进行设置。

3 结语
通过充分利用指令并行、宽数据总线以及零开销循环计数器,可以显著提高数据转移的运行效率。

本文所述方法为软件优化中的基础方法,更多的方法可结合具体算法进行,包括充分利用双运算模块和双整型ALU进行并行操作、合理安排指令顺
序减少指令等待延时充分发挥软件流水作用、将程序和数据或同一指令周期中涉及的数据放在不同存储器块中、循环展开等[11⁃13]。

数据的读取与存储是所有算法
实现的基础,本文所述优化处理方法可应用到各类需要对大批量数据进行处理的算法中。

本文以AD公司TS201为例进行了说明,对于诸如TI6678等其他DSP处理器,虽然具体指令有所不同,但优化处理的思路是同样适用的。

参考文献
[1]苏涛.实时信号处理系统设计[M].西安:西安电子科技大学出版社,2005.
[2]Analog Devices.ADSP⁃TS201 TigerSHARC processor program⁃ming reference(1.0)[R].USA:Analog Devices,2004.
[3]Analog Devices.ADSP⁃TS201 TigerSHARC Processor hardware reference (1.1)[R].USA:Analog Devices,2004.
[4]刘书明,罗勇江.ADSP TS20XS系列DSP原理与应用设计[M].北京:电子工业出版社,2007.
[5]罗军.基于TS20X DSP的机载雷达实时信号处理[D].成都:电子科技大学,2004.
[6]韩婧.微波稀布阵雷达目标检测技术的设计与实现[D].西安:西安电子科技大学,2010.
[7]李军华.脉冲压缩线性调频测距系统信号处理技术研究[D].南京:南京理工大学,2007.
[8]吴旖.雷达信号恒虚警检测处理研究[D].南京:南京理工大学,2009.
[9]夏金艳.某末制导雷达信号处理机系统设计与实现[D].西安:西安电子科技大学,2009.
[10]吴顺君,梅晓春.雷达信号处理和数据处理技术[M].北京:电子工业出版社,2010.
[11]郭淑婷.DSP汇编语言优化设计[J].河南师范大学学报:自然科学版,2009,
37(1):151⁃154.
[12]Analog Devices.Writing efficient floating⁃point FFTs for ADSP⁃TS201 TigerSHARC processors[R].USA:Analog Devices,2004.
[13]刘浪,陈伯孝,任腊梅.TS20XS系列DSP程序优化设计方法及应用[J].火控雷达技术,2011(3):66⁃71.。

相关文档
最新文档