1. <pre id="seaah"><ruby id="seaah"></ruby></pre>
    2. <acronym id="seaah"><label id="seaah"><menu id="seaah"></menu></label></acronym>
      <acronym id="seaah"></acronym>

          下载
          加入VIP
          • 专属下载特权
          • 现金文档折扣购买
          • VIP免费专区
          • 千万文档免费下载

          上传资料

          关闭

          关闭

          关闭

          封号提示

          内容

          首页 DSP C语言缟程

          DSP C语言缟程.doc

          DSP C语言缟程

          敢爱敢恨敢失去best
          2019-06-24 0人阅读 举报 0 0 暂无简介

          简介:本文档为《DSP C语言缟程doc》,可适用于IT/计算机领域

          数字信号处理器的汇编程序优化方案摘要:虽然目前大多数DSP都支持C语言缟程,但是在实际工程应用中,多是用C语言编写流程控制,搭建工程框架,具体的算法??橐约氨冉虾氖钡墓δ苣?榛故遣捎没惚嘤镅岳幢嘈?。因为用汇编语言进行编程可以利用电路自身硬件结构的特点对其进行优化与精简,从而能够使一些复杂的算法和功能??樵谑凳毙苑矫嫒〉梅浅:玫男Ч?。文中从指令并行和软件流水二方面出发。以ADI公司PSl系列电路的程序为实例,概括归纳出对DSP汇编程序进行优化的一般方法。关键词:数字信号处理器汇编优化指令并行软件流水引言数字信号处理器(DSP)相对于模拟信号处理器有很大的优越性,表现在精度高,灵活性大,可靠性好,易于大规模集成等方面。随着半导体制造工艺的发展和计算机体系结构的改进,数字信号处理器的功能越来越强大,对信号处理系统的研究重点又重新回到软件算法上,而不再像过去那样过多地考虑硬件的可实现性。随着DSP运算能力的不断提高,能够实时处理的信号带宽也大大增加,数字信号处理的研究重点也由最初的非实时性应用转向高速实时应用。目前大多数DSP虽然都支持C语言编程,但是在实际工程应用中,最常用的方法是用C语言编写流程控制。搭建工程框架,具体的算法??榧氨冉虾氖钡墓δ苣?榛故遣捎没惚嘤镅岳幢嘈?。这是因为C语言虽然具有易读性、可移植性等优点,但是它不便于对系统硬件资源的直接控制,无法发挥DSP自身的特点,无法充分利用DSP系统结构中有限的资源。特别是在硬实时性系统中,用汇编语言进行编程可利用DSP自身硬件结构的特点对汇编程序进行优化与精简,往往能够使一些复杂的算法和功能??樵谑凳毙苑矫嫒〉梅浅:玫男Ч??;惚喑绦蛴呕疍SP的种类繁多各类DSP都有其自身的硬件特点,而对DSP汇编程序进行优化的过程就是根据程序自身特点充分利用DSP硬件资源的过程。因此,具体到不同的器件其优化方式也不尽相同。目前比较流行的大多数DSF,都支持程序并行和软件流水,本文从这二方面出发,概括归纳出对汇编程序进行优化的一般方法。希望能够在对不同DSP汇编程序优化的过程中提供一些思考方式上的切人点。为了易于说明,笔者提供了一些实例,这些例子均是用AD公司TSl系列电路的汇编语言编写的。加强程序并行程序的并行是汇编优化的关键。但是,在开始进行任何优化之前,必须了解从何处着手,首先了解瓶颈在何处。软件的某些部分可能只执行一次(初始化)或者只执行少数几次,费尽心思优化此部分代码并非明智之举,因为获得的整体节省效果是微乎其微。对程序的优化应将主要力量集中在最为费时的部分。()循环展开达到并行通过对大量DSP程序的研究可以发现整个程序比较耗时的部分往往是在个或几个大的循环中。这些循环部分又往往可分为取数、处理、储存处理结果个顺序执行的步骤,这个步骤有明显的时间先后关系只有取了数才能处理。处理后才能存储结果,这种时间上的相互依赖性为程序的并行带来了非常大的困难。循环展开是最常用的一种优化技巧。次循环处理过程中的各语句是具有很强的时间先后顺序的,但是在连续次循环过程中的各种语句却是相互独立的,它们是以相同的语句处理不同的数据。因此可以采用将循环次数减半,每次(也可以是次、次等,应根据具体情况来确定,同时循环次数要做相应改变)循环合并为次循环过程的方法来使程序并行,提高效率。例是一段对图像进行二值化的代码的主要部分是一段次的循环,并未经过优化实例是将其循环展开,次循环过程合并为次循环的代码段(这里假设其每行像素个数为偶数,如果不为偶数只需在内循环外额外处理一个像素即可)实例是循环展开并进行优化精简后的代码段。这段代码均用TSl的汇编语言编写,其中j指向待处理的图像i指向处理后的图像xrO、xrl分别为图像行、列个数xr为二值化的阈值,像素灰度值大于或等于该值的使其等于该值,而像素灰度值小于该值的设为零。实例:lcO=xrPictureSegmentOutterLoop:lcl=xrl::PictureSegmentInnerLoop:*取图像各像素点*xr=j=l*像素灰度值与阈值比较,大于或等于阈值的令其等于阈值,小于闽值的置为零*xcomp(r,r)tfxaltd,xr:ifnxaltd,xr=xr*存储处理结果生成新图像*j==xr*内循环结束*PictureSegmentInnerLcopEnd:ifnlcle,jumpPictureSegmentInnerLoop(p)*外循环结束*PictureSegmentOutterL,copEnd:ifnlcOe,jumpPictureSegmentOutterLoop(p)实例:lcO=xrO*将循环数减半*xrl=lshiftrbylPictureSegmentOutterLoop:cl=xrl::PictureSegmentInnerLoop:*取图像各像素点*xr=j=*像素灰度值与阚值比较,大于或等于阈值的令其等于阈值小于阈值的置为零*xcomp(r,r)ifxahdo,xr=ifnxahdo,xr=xr*存储处理结果生成新图像*j=l=xr*循环扩展部分*xr=j:xeomp(r,r)ifxahdo,xr=ifnxahdo,xr=xrj==xr内循环结束*PietureSegmentInnerLoopEnd:ifnlele,jumpPictureSegmentInnerLoop(p)外循环结束*PicturesegmentOutterLoopEnd:ifnleoe,jumpPietureSegmentOutterLoop(p)实例:lcO=xrxrl=lshifirby一PictureSegmentOutterLoop:lcl=xrlPictureSegmentInnerLoop:xr=j=lxeomp(r,r)xr=j=()ifxaltdo,xr=ifnxaltdo,xr=xrj=l=xrxcomp(r,r)()*循环扩展部分*ifxaltdo,xr:ifnxahdo,xr=xrj==xrPictureSegmentInnerLoopEnd:ifnlele,jumpPietureSegmemInnerLoop(p)PicturesegmentOutterLoopEnd:ifnleoe,jumpPictureSegmentOutterLoop(p)如实例中的()、()所示,下一循环的取数和与阈值比较语句同上一循环中的指令达到了并行。分别运行实例与实例并计算其每个像素所花费的时间,可知实例中平均每个像素花费个时钟周期,而实例中平均每个像素花费个时钟周期,比优化前少用了差不多个时钟周期。()提前取数达到并行在循环外提前取数,彻底打破循环中各指令间时间的先后顺序,增强其独立性并最终达到并行的目的,这也是一种常用的方法。实例利用此种方法,在实例的基础上对实例的代码段做了进一步的优化与精简。如实例中所示,()在循环外提前进行了取数,并在()达到了并行,()、()对由于提前取数造成的指针移位和额外的赋值进行了修正。但是,在使用此方法进行精简优化时要特别注意循环结束后对指针的修正。经计算。实例平均每个像素所花费的时间为个指令周期。实例:lcO=xrO::xrl=lshifirObyPictureSegmentOutterLoop:lcl=xrl::xr=j=()PictureSegmentInnerLoop:xcomp(r,r)xr=j=ifxahdo,xr=ifnxaltdo,xr=xrj==xrxcomp(r,r)*循环扩展部分*ifxahdo,xr=xr=j=()ifnxahdoxr=xrj==xrPictureSegmentInnerLoopEnd:ifnlelejumpPietureSegmentInnerLoop(p)j=j一l()xr=()PictnreSegmentOutterLoopEnd:ifnleoe,jumpPietureSegmentutterLoop(p)()改换语句达到并行有时,不同的语句利用不同的硬件资源可以得到相同的结果?;灰惶跤锞渲葱懈谋湓锞渌糜布试?。往往也能够增加程序的并行程度。例如DSP中往往提供独立的加法、乘法运算单元,同样一条赋值语句可以用加或者乘l代替,这样就可以将原来不能并行的从内存中取数语句和对寄存器赋值语句(这两条语句都要到总线资源)并行起来。这在许多参考资料中都可以见到。在此不再列举具体实例。()增加取数个数达到并行某些DSP还支持联合取数的功能,其寄存器可能是位但是却支持位数据的存取,即一条语句可完成二组数据的存取。而对这两组数据的处理却是相互独立、可以并行的,利用这一功能来达到优化,也不失为一种好方法。利用软件流水流水技术是提高DSP程序执行效率的另一种主要手段。它可以使若干条指令的不同执行阶段并行处理。有时由于相邻的几个指令行有可能使用相同的资源,其间又可能有相关性,从而使DSP在执行时自动插人延迟,使DSP的运行速度比预期的慢:有时又可能由于指令本身的原因造成延时(例如跳转指令),使得DSP的效率降低。由于流水技术本身的复杂性以及DSP硬件结构的多样性,这里不再讨论造成这种延迟的种种原因(事实上各个DSIC的使用手册中均有详细的说明),只是想告诉读者其实有时候只需要移动几条指令的位置就可以达到优化的目的。在这里仍继续采用实例的代码段作为例子(TI公司C系列电路的编程更适合此例,只是其汇编指令太复杂)。如实例()所示,它将例中并行的语句重新分开,变为二条语句执行。计算其效率可以发现平均每个像素仍然花费个指令周期,与将其并行的效率相同。这是因为取数与比较这二条指令共用了同一寄存器资源xr,造成这二条语句间插入一个指令周期的延迟,而把语句插入到这两条指令之间,恰恰利用了这一延迟,达到了优化的效果。实例:lc=xrxrl=lshiftrby一PictureSegmentOutterImp:lcl=xrl::PictureSegmentlnnellLoop:xr=j=lxr=j=()xcomp(r,r)ifxaltd,xr=ifnxaltd,xr=xrj==xrxcomp(r,r)ifxaltd,xr=ifnxaltd,xr:xrj==xrPictureSegmentInnerlLoopEnd:ifnlcle,jumpPictureSegmentInnerLoop(p)PictureSegmentOutterLoopEnd:ifnlcoe~jumpPictureSegmentOutterLoop(p)对汇编程序进行优化,应综合上面提到的各种方法。首先使循环内各语句在时间关系上尽量相互独立然后利用种种技巧最大限度地使语句并行最后再考虑软件流水造成的延时,调整各条语句的位置尽量减少延时。结束语对特定DSP汇编程序进行优化的过程就是对其芯片结构充分熟悉利用的过程,程序优化与精简的程度正比于对芯片结构的熟悉程度。这是一个不断深入、永无止境的过程。但是还应看到,在程序达到高效的同时,牺牲的是程序应有的可读性。在软件高度产业化的今天,程序的可读性有时甚至比其高效性更为重要。因此如何在程序达到高效的同时尽量保证其可读性也是在对程序进行优化时应着重考虑的问题。

          用户评价(0)

          关闭

          新课改视野下建构高中语文教学实验成果报告(32KB)

          抱歉,积分不足下载失败,请稍后再试!

          提示

          试读已结束,如需要继续阅读或者下载,敬请购买!

          文档小程序码

          使用微信“扫一扫”扫码寻找文档

          1

          打开微信

          2

          扫描小程序码

          3

          发布寻找信息

          4

          等待寻找结果

          我知道了
          评分:

          /11

          DSP C语言缟程

          VIP

          在线
          客服

          免费
          邮箱

          爱问共享资料服务号

          扫描关注领取更多福利

          平特一肖加减公式-平特一肖精准资料-平特一肖开特肖算中吗
          m.2121buy.com m.304496092.com m.52chendumeishi.com m.52qqcz.com m.7568872.com m.99vv340.com m.agag70.com m.anpinglansai.com m.asshishicai.com m.baoshidamall.com m.bjoso.com m.bocdima.com m.bxxyzl.com m.cdjutaiedu.com m.cl1899.com m.cpexe.com m.cztxhg666.com m.diejuji66.com m.dmgjzx.com m.dphhw.com m.elitecld.com m.esexfree.com m.ezupdos.com m.fanfan-zone.com m.fengwoyidong.com m.getfault.com m.hcxiangjiao.com m.hf556.com m.hongfushangmao.com m.huibobet.com m.hyhatch.com m.hzybqh.com m.ibroyeur.com m.jiangyaqing.com m.ksuca.com m.liangdianjiaoyu.com m.lovegwu.com m.mayihuobang.com m.miaoxiangshike.com m.miiqin.com m.modelslimming.com m.msjyhs.com m.mysoushou.com m.myteenssex.com m.nanahey.com m.o48d.com m.o8jw.com m.pzsyr.com m.qgbrs.com m.rbrbt.com m.rfynq.com m.rqwdt.com m.rxbled.com m.rxdmn.com m.sct-ys.com m.sdyxtjy.com m.spark-eo.com m.spyware-pcrisk.com m.sxlrr.com m.syhrzg.com m.tadeyijia.com m.tengjingkj.com m.tiantianoa.com m.tykjr.com m.uxf7.com m.weakbug.com m.wgppd.com m.xajyz.net m.xiqidai.com m.yczszw.com m.youxiaad.com m.yue8888.com m.yzkths.com m.zqbf137.com m.zqssc05.com m.zsbxp.com m.zspxk.com m.zsxscj.com www.88366666.com www.942dn.com www.lottimes.com www.opc32.com www.ss-tm.com www.tiaopigui.com www.xmyinhe.com www.mfkof.com www.upsbbs.com www.gzesmb.com www.niqzone.com www.m-instyLe.cn m.1yguz.com m.2huoo.net m.51bpbpz.net m.53zy.net m.5ecn.net m.91youhui.net m.adospados.com m.afty.net m.afzn.net m.baobeiqianbao.net m.bestmeet.net m.bjbna.net m.bjkjwj.net m.cg365sc.net m.cnyntq.net m.congdash.net m.coybcs.net m.csoug.net m.dijier.net m.djhsc.net m.donghuiwan.com m.dsi-ag.com m.dzshgwx.net m.eamoy.net m.ecopote.com m.ehuiche.net m.eiconf.net m.eimeeting.net m.ez-ns.com m.freshkpop.net m.gaoxiaoduanzi.net m.glxiduobao.com m.guiqin.net m.guogai.net m.gydushu.com m.haokan5.net m.hltjq.net m.hshardcover.com m.huangjinnc.com m.huangzhe0910.com m.i517.net m.icauto.net m.ijiawei.net m.iyaorao.net m.iyuwei.net m.izxs.net m.jlskjk.com m.jnrstc.com m.jnxins.com m.joinchampions.com m.jsywym.net m.juezhe.net m.julisports.net m.kardon023.com m.keiee.net m.kkdb168.com m.ksb120.net m.kzbiz.net m.laziw.com m.lcoder.net m.lefuxx.com m.live-cam4sex.com m.louboutinb.com m.ly568.net m.matengfei.net m.mblabc.net m.mcmcmc.net m.meitwo.net m.miyueing.com m.mjrgb.com m.mmd47.com m.mms39.com m.nanjingwx.com m.naodongxueyuan.com m.ncwywk.com m.neimengguly.com m.newcityvr.com m.newhnwg.com m.ngzrb.com m.nianlai.net m.niuhuotong.com m.nj142.com m.nmgmmw.com m.nnwsn.com m.nongtaifruit.com m.npymh.com m.nqbcs.com m.nwezq.com m.oe2pq.com m.p950r.com m.panoad.net m.papasj.com m.pcfordlm.com m.pinkypunk.com m.pojox.net m.popo365.net m.portalfan.net m.qhy360.com m.qinghuayingyu.com m.qingjiankeji.com m.qirongzhongchou.net m.qiutianzichan.com m.quanminkuaiduobao.com m.quansiweizhiyuan.com m.readc.net m.rpocr.net m.sdell.net m.sdhzz.net m.senrijin.com m.shangzewangluo.com m.shanmeme.com m.shanrenzixunjituan.com m.shengwh.com m.shengzhiqi.net m.shfongwei.com m.shiguangji888.com m.shiyihui.net m.shop666.net m.shoppniac.com m.shyarun.com m.softsweet.net m.sxsgky.net m.szifresh.com m.tahuyu.net m.taiyear.net m.taowogo.com m.taxionghaizi.com m.thirftyfun.com m.tiqianme.com m.tjcbmy.com m.tjynet.com m.tyc1413191.com m.v-liandong.com m.v-quick.net m.vrwar.net m.walyy.net m.we30.net m.weixd.net m.wenancn.net m.wetrussian.com m.wuaimei.net m.wuyutong.net m.wzj0759.com m.xianyoujie.com m.xiaolangli.com m.xiaolieai.com m.xiawangshipin.com m.xiyuesh.com m.xuanf.net m.xyflower.net m.xzcit.net m.yifoobao.net m.yjhzttjq.com m.yjk1997.com m.ylmov.net m.yongyijinfu.com m.yueguoji.net m.zhansen8.com m.zhaokuandai.com m.zhc-nj.com m.zhongruiedu.com m.zivdoll.com m.zjjyjn.com m.zmkaolu.com m.zmtbs.com m.zmysjh.com m.zzfreemaker.com