新聞中心

        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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 德保县| 民丰县| 古田县| 澄江县| 墨竹工卡县| 竹山县| 尚志市| 江津市| 繁峙县| 郯城县| 来凤县| 马尔康县| 太保市| 精河县| 沙河市| 闽清县| 宿迁市| 瓦房店市| 黑山县| 洛浦县| 乌恰县| 茂名市| 鹿泉市| 永平县| 三门县| 商都县| 若尔盖县| 洮南市| 偏关县| 焦作市| 安阳县| 呼图壁县| 柏乡县| 邹平县| 岳池县| 志丹县| 明水县| 济南市| 太湖县| 利津县| 大田县|