<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > TMS320C6000嵌入式系統(tǒng)優(yōu)化編程的研究

          TMS320C6000嵌入式系統(tǒng)優(yōu)化編程的研究

          作者: 時間:2009-03-19 來源:網(wǎng)絡(luò) 收藏

            這時可以考慮使用線性匯編語言進(jìn)行開發(fā)。線性匯編語言是中獨(dú)有的一種語言,介于高級語言和低級語言之間。因?yàn)樵谟檬謱憛R編語言進(jìn)行應(yīng)用開發(fā)時,開發(fā)者除了要精通C6000的指令之外,還必須為指令分配功能單元、考慮指令的延遲和功能單元之間的配合以及合理分配使用32個寄存器,才能寫出高效的并行指令,發(fā)揮C6000的威力。上面任何一個方面出現(xiàn)問題,都會嚴(yán)重影響算法的效率。

            線性匯編語言的指令和匯編語言的指令完全相同,但是它有自己的匯編器指令系統(tǒng),用于和匯編器配合使用。與匯編語言的最大區(qū)別在于,編寫線性匯編語言時不需要考慮指令的延時、寄存器的使用和功能單元的分配,完全可以按照高級語言的方式進(jìn)行編寫。當(dāng)然由于它不是高級語言,有許多的限制。例如,在循環(huán)體時,不能使用跳轉(zhuǎn)到循環(huán)體之外的跳轉(zhuǎn)指令;另外計數(shù)器只能使用減計數(shù),如果使用加計數(shù),優(yōu)化器將不能工作等等。但總的說來,它的代碼效率遠(yuǎn)遠(yuǎn)高于高級語言,而且開發(fā)難度和開發(fā)周期比匯編語言要小得多。

            在實(shí)際開發(fā)過程中需要具體情況具體分析,選擇一種高效、快捷的開發(fā)方法。以下結(jié)合應(yīng)用開發(fā)中的幾個模塊來簡述我們使用的優(yōu)化方法。

          2.1 使用匯編語言

            使用匯編語言進(jìn)行并行難度比較大。但在有些情況下,程序中數(shù)據(jù)有非常強(qiáng)的承接關(guān)系,并且該程序體邏輯關(guān)系清楚,使用的寄存器不超過32個,這時直接使用匯編語言實(shí)現(xiàn),效率會更高。另外,有些使用C語言比較難實(shí)現(xiàn)的運(yùn)算函數(shù),在C6000的匯編指令集中可能有專用指令,這時就可以直接使用匯編語言實(shí)現(xiàn)。

            使用匯編語言進(jìn)行編程時特別需要注意的是C6000指令的延遲情況,有些指令并不是立刻就能得到結(jié)果。C6000指令集中有延遲的指令如表1所示。

          例1 32位歸一化函數(shù)norm_l()

            short norm_l(long L_var1)

             {short var_out;

             if (L_var1 == 0L) {

             var_out = (short)0;

             }

            else {

               if (L_var1 == (long)0xffffffffL) {

          var_out = (short)31;

          }

          else {

          if (L_var1 0L) {

          L_var1 = *L_var1;

          }

          for(var_out=(short)0;L_var1(long)0x40000000L;

          var_out++) {

          L_var1 = 1L;

          }}}

          return(var_out);

          }

          使用匯編語言進(jìn)行優(yōu)化:

          .global _norm_l

          _norm_l:

          B B3

          CMPEQ 0,A4,B0

          [!B0] NORM A4,A4

          NOP 3

            消耗時間(時鐘周期):C語言norm_l()為723;匯編語言為11。

          2.2 使用線性匯編語言重寫整個函數(shù)

            對于某些以循環(huán)體為主的函數(shù)可以使用線性匯編語言重寫整個函數(shù)。使用匯編優(yōu)化器進(jìn)行優(yōu)化之后,效率是非常高的。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();