<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    Rss & SiteMap

    曙海教育集團論壇 http://www.bjzhda.cn

    曙海教育集團論壇
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
    [瀏覽完整版]

    標題:TMS320C6000嵌入式系統優化編程的研究

    1樓
    wangxinxin 發表于:2010-11-22 14:08:03
    使用匯編語言進行編程時特別需要注意的是C6000指令的延遲情況,有些指令并不是立刻就能得到結果。C6000指令集中有延遲的指令如表1所示。

    表1 C6000的有延遲指令

    圖片點擊可在新窗口打開查看

    例1 32位歸一化函數morm_1()
    short morm_1(long L_var1)
    {short var_out;
    if (L_var1= = 0L){
    var_out = (short)0;
    }
    else {
    if (L_var1= = (logn)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);
    }
    使用匯編語言進行優化;
    .global norm_1
    _norm1:
    B B3
    CMPEQ 0,A4,B0
    [!B0] NORM A4,A4
    NOP 3
    消耗時間(時鐘周期):C語言norm_1()為723;匯編語言為11。

    2.2 使用線性匯編語言重寫整個函數

    對于某些以循環體為主的函數可以使用線性匯編語言重寫整個函數。使用匯編優化器進行優化之后,效率是非常高的。

    下面例子是算法中計算幀能量的函數,其中包含兩個單循環體。進行優化時,首先要確定循環的次數。對于循環次數是變量的情況,優化器不進行并行優化;其次盡量減少數據存取次數,例如以32位存取指令對16位數據進行存取,可以節省一增的存取周期。仔細觀察C代碼,會發現兩次循環次數相同。第二個循環要用到第一個循環的結果,因此可以將兩個循環合并在一起,這樣就避免了在第二個循環中再從存儲器中取結果,減少了一半的Load操作。

    Long Comp_En(short *Dpnt)
    { int i;
    long Rez;
    short Temp[60];
    for (i=0;i<60;i ++) Temp [i] = shr(Dpnt[i],(short) 2);
    Rez=(long) 0;
    for (i=0; i <60; i ++) Rez=L_mac(Rez,Temp[i],Temp[i]);
    return Rez;
    }
    相應的線性匯編程序如下:
    .global _Comp_En ;函數名定義,對c變量前加_
    _Comp_En .cproc Dpnt;函數頭定義,Dpnt是參數
    .reg Rez,Rez1,Rez2,1 ;寄存器定義,不必考慮實際的寄存器分配
    .reg t1,t2,x1,c1,m1,m2
    zero Rez
    zero Rez1
    zero Rez2
    mv Dpnt,c1
    mvk 30,i ;確定循環次數。因為用LDW代替LDH,循五環次數減少一半。
    loop1 .trip 30
    ldw *c1++,x1
    sh1 x1,16,t1
    shr t1,2,t1
    shr x1,2,t2 ;將兩個循環合在一起,又減少了一半的從內存取數據的時間。
    smpyh t1,t1,m1
    smpyh t2,t2,m2
    sadd Rez1,m1,Rez1
    sadd Rez2,m2,Rez2
    [i] sub i,1,i ;循環計數器從30遞減
    [i] b loop1
    sadd Rez1,Rez2,Rez
    .return Rez
    .endproc
    消耗時間(時鐘周期):C語言為32971;線性匯編語言為93。

    2.3 使用線性匯編改寫復雜函數中的循環體

    當函數的邏輯關系復雜,判斷、跳轉、函數調用情況特別多時,上面方法的效果就會在打折扣。這時可以使用線性匯編將其中的循環部分改寫成一個函數,以優化后的函數調用代替環部分,而不是優化整個復雜函數。

    高速數字信號處理器件的應用范圍越來越廣,特別是在移動通信領域中,軟件無線電、智能天線等新技術的實都需要強大的實時數字信號處理的支持。TMS320C6000系列DSP完全可以滿足此類要求。但目前對于并行DSP技術的軟硬件開發還處在摸索階段,如何充分利用高速DSP的資源,是這方面的研究重點。本文研究了最新推出的TMS320C6000的優化策略,從工程和系統的角度總結出一套既能滿足實時性又能保證開發時效性的實用的優化編程方法,以供分饗。
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

    Copyright © 2000 - 2009 曙海教育集團
    Powered By 曙海教育集團 Version 2.2
    Processed in .01563 s, 2 queries.
    主站蜘蛛池模板: 无码吃奶揉捏奶头高潮视频| 无翼乌全彩里番蛇姬本子| 精品性高朝久久久久久久| 色偷偷888欧美精品久久久| 经典国产一级毛片| 特黄特色大片免费| 欧美激情一区二区| 欧美一区二区日韩国产| 日韩精品免费视频| 日本人的色道免费网站| 成人免费观看一区二区| 成人免费无码精品国产电影| 日本三区精品三级在线电影| 成人国产精品视频| 国精品午夜福利视频不卡| 国产欧美日韩综合精品一区二区| 国产亚洲成AV人片在线观看 | 奇米综合四色77777久久| 国产精品视频播放| 国产亚洲综合色就色| 免费观看成人毛片| 亚洲欧美综合在线天堂| 久久国产劲暴∨内射新川| 一个人看的免费观看日本视频www| 337p欧美日本超大胆艺术裸| 美国式禁忌在完整有限中字| 武林高贵肥臀胖乳美妇| 日本在线视频一区二区三区| 奇米影视四色中文字幕| 国产日产成人免费视频在线观看| 午夜时刻免费实验区观看| 亚洲国产成人资源在线软件| 久久久久国色AV免费观看性色| a级一级黄色片| 老司机精品福利在线| 雨宫琴音加勒比在线观看| 中文字幕无码精品三级在线电影 | 欧美性色19p| 成人午夜视频精品一区| 国产男女猛烈无遮挡| 国产区在线视频|