新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DSP的汇编程序优化

DSP的汇编程序优化

作者:时间:2010-08-24来源:网络收藏

  xr4=[j4+:1];;

  xeomp(r4,r2);;

  if xah;do,xr4=0;;

  ifnxah;do,xr4=xr2;;

  [j5+=1]=xr4;;

  内循环结束*/

  _Pieture_Segment_Inner_Loop_End:

  if nlele,jump_Picture_Segment Inner Loop(p);;

  外循环结束*/

  _Picture_segment_Outter_Loop_End:

  if nleoe,jump_Pieture_Segment_Outter_Loop(p);;

  实例3:

  lcO=xr0;;

  xrl=lshifi r0 by一1;;_

  _Picture_Segment_Outter_Loop:

  lcl=xrl;;

  _Picture_Segment_Inner_Loop:

  xr3=[j4+=l];;

  xeomp(r3,r2);xr4=[j4+=1];;(1)

  ifxalt;do,xr3=0;;

  if nxalt;do,xr3=xr2;;

  [j5+=l]=xr3;xcomp(r4,r2);;(2)

  /*循环扩展部分*/

  if xalt;do,xr4:0;;

  ifnxah;do,xr4=xr2;;

  [j5+=1]=xr4;;

  _Picture_Segment_Inner_Loop_End:

  if nlele,jump_Pieture_Segmem Inner Loop(p);;

  _Picture segment_Outter_Loop_End:

  if nleoe,jump_Picture_Segment_Outter_Loop(p);;

  如实例3中的(1)、(2)所示,下一循环的取数和与阈值比较语句同上一循环中的指令达到了并行。分别运行实例1与实例3并计算其每个像素所花费的时间,可知实例1中平均每个像素花费7.12个时钟周期,而实例3中平均每个像素花费5.12个时钟周期,比前少用了差不多2个时钟周期。

  (2)提前取数达到并行

  在循环外提前取数,彻底打破循环中各指令间时间的先后顺序,增强其独立性并最终达到并行的目的,这也是一种常用的方法。实例4利用此种方法,在实例3的基础上对实例1的代码段做了进一步的与精简。

  如实例4中所示,(1)在循环外提前进行了取数,并在(2)达到了并行,(3)、(4)对由于提前取数造成的指针移位和额外的赋值进行了修正。但是,在使用此方法进行精简时要特别注意循环结束后对指针的修正。经计算。实例4平均每个像素所花费的时间为4.18个指令周期。

  实例4:

  lcO=xrO::

  xrl=lshifi rO by-1;;

  _Picture_Segment_Outter_Loop:

  lcl=xrl::

  xr3=[j4=1];; (1)

  _Picture_Segment_Inner_Loop:



关键词: 优化 程序 汇编 DSP

评论


相关推荐

技术专区

关闭