dsp汇编程序的优化

dsp汇编程序的优化

ID:31707752

大小:59.17 KB

页数:5页

时间:2019-01-17

dsp汇编程序的优化_第1页
dsp汇编程序的优化_第2页
dsp汇编程序的优化_第3页
dsp汇编程序的优化_第4页
dsp汇编程序的优化_第5页
资源描述:

《dsp汇编程序的优化》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、数字信号处理器(DSP)相对于模拟信号处理器有很大的优越性,表现在精度高,灵活性大,可靠性好,易于大规模集成等方面。随着半导体制造工艺的发展和计算机体系结构的改进,数字信号处理器的功能越来越强大,对信号处理系统的研究重点又重新回到软件算法上,而不再像过去那样过多地考虑硬件的可实现性。随着DSP运算能力的不断提高,能够实时处理的信号带宽也大大增加,数字信号处理的研究重点也由最初的非实时性应用转向高速实时应用。目前大多数DSP虽然都支持C语言编程,但是在实际工程应用中,最常用的方法是用C语言编写流程控制。搭建工程框架,具体的算法模块及比较耗吋的功能模块还是采用汇编语言來编写。这是因为

2、C语言虽然具有易读性、可移植性等优点,但是它不便于对系统硬件资源的直接控制,无法发挥DSP自身的特点,无法充分利用DSP系统结构中有限的资源。特别是在硬实时性系统屮,用汇编语言进行编程可利用DSP自身硬件结构的特点对汇编程序进行优化与精简,往往能够使一些复杂的算法和功能模块在实时性方面取得非常好的效果。2汇编程序优化DSP的种类繁多.各类DSP都有其自身的硬件特点,而对DSP汇编程序进行优化的过程就是根据程序自身特点充分利用DSP硬件资源的过程。因此,具体到不同的器件.其优化方式也不尽相同。目前比较流行的大多数DSF,都支持程序并行和软件流水,本文从这二方面出发,概括归纳出对汇编

3、程序进行优化的一般方法。希望能够在对不同DSP汇编程序优化的过程中提供一些思考方式上的切人点。为了易于说明,笔者提供了一些实例,这些例子均是用AD公司TS101系列电路的汇编语言编写的。2」加强程序并行程序的并行是汇编优化的关键。但是,在开始进行任何优化之前,必须了解从何处着手,首先了解瓶颈在何处。软件的某些部分可能只执行一次(初始化)或者只执行少数几次,费尽心思优化此部分代码并非明智之举,因为获得的整体节省效果是微乎其微。对程序的优化应将主要力量集中在最为费时的部分。(1)循环展开达到并行通过对大量DSP程序的研究.可以发现整个程序比较耗时的部分往往是在1个或儿个大的循环中。这

4、些循环部分又往往可分为取数、处理、储存处理结果3个顺序执行的步骤,这3个步骤有明显的时间先后关系.只有収了数才能处理。处理后才能存储结果,这种时间上的相互依赖性为程序的并行带來了非常大的困难。循环展开是最常用的一种优化技巧。1次循环处理过程屮的各语句是具有很强的时间先后顺序的,但是在连续2次循环过程中的各种语句却是相互独立的,它们是以相同的语句处理不同的数据。因此可以采用将循环次数减半,每2次(也可以是3次、4次等,应根据具体情况來确定,同时循环次数要做相应改变)循环合并为1次循环过程的方法來使程序并行,提高效率。例1是一段对图像进行二值化的代码的主要部分.是一段2次的循环,并未

5、经过优化;实例2是将其循环展开,2次循环过程合并为1次循环的代码段(这里假设其每行像素个数为偶数,如果不为偶数只需在内循环外额外处理一个像素即可);实例3是循环展开并进行优化精简后的代码段。这3段代码均用TS101的汇编语言编写,英屮j4指向待处理的图像;i5指向处理后的图像;xrO、xrl分别为图像行、列个数;xr2为二值化的阈值,像素灰度值大于或等于该值的使其等于该值,而像素灰度值小于该值的设为零。实例1:lcO=xrO;;_Picture_Segment_Outte「_Loop:lcl=xrl::_Picture_Segment_Inner_Loop:/*取图像各像素点*/

6、xr3=

7、j4+=lj;;严像素灰度值与阈值比较,大于或等于阈值的令其等于阈值,小于闽值的置为零*/xcomp(r3,r2);;tfxalt;dO,xr3:0;;ifnxaltjdO,xr3=xr2;;/*存储处理结果生成新图像*/U5+=l]=xr3;;*内循环结束*/.Picture—Segment_Inner_Lcop_End:讦nlcle,jump_Picture_Segment_Inner_Loop(p);;/*外循环结束*/_Picture_Segment_Outter_L,cop_End:讦nlcOe,jump_Picture_Segment_Outter_Loop

8、(p);;实例2:lcO=xrO;;/*将循环数减半*/xrl=lshiftrOby一1;;_PictureSegment_Outter_Loop:lcl=xrl::_PictureSegmentInnerLoop:/*取图像各像素点*/xr3=[j4+=l];;/咅像素灰度值与阚值比较,大于或等于阈值的令其等于阈值.小于阈值的置为零勺xcomp(r3,r2);;ifxah;do,xr3=0;;讦nxnh;do,xr3=xr2;;严存储处理结果生成新图像*/[J5+=l]=xr3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。