新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 在ADSP-BF561上實現與優化的H.264

        在ADSP-BF561上實現與優化的H.264

        作者: 時間:2012-05-11 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257521.htm


          (1)匯編代碼編寫
          使用匯編優化有兩個方法:對于LEAF函數(函數體中不再調用其余函數),采用整個函數完全用匯編指令重寫的方式;而對于NONLEAF函數則可使用asm關鍵字,在C代碼中嵌入匯編代碼。在匯編代碼的編寫過程中一些情況會造成流水線stall,在編寫匯編代碼時要特別注意避免這些情況。IDE集成了PIPLELINEVIEWER工具,如圖4所示。在編寫完成匯編代碼后,可使用該工具觀察運行時流水線的情況。如果有stall等出現,會給出原因,優化人員根據工具分析結果重新更改代碼,提高執行效率。


          ADI公司提供的IDE具有非常靈活的設置,能根據用戶的需要生成針對不同限制的代碼。如內存有限,用戶可以設置生成文件更小的代碼;如果用戶更注重運行速度,則設置編譯器生成運行速度更快的代碼,或是在其間取一個折中。
          ADSP-BF561有專門用于處理視頻相關的一些專用DSP指令(video pixel operations、vectoroperations等),這些專用指令通過SIMD技術或者操作專門硬件支持某些特殊運算(累加、多參數取均值,同時完成加減法等),以提高運行速度。如前文求SAD情況,匯編指令中有指令專門計算連續4個像素與另外連續4個像素之差的絕對值之和,結果與累加器的值相加。如果要隔點算(即取一半的點計算),反而需要增加指令后對數據進行下采樣,既耗時而且不準確。所以采用計算一半像素點的策略并不適用于ADSP-BF561。編譯器自動生成的代碼中不會使用到這些專用指令。所以只能根據對算法的理解和對平臺的熟悉程度來對算法進行匯編優化。
          在編寫匯編代碼時還需注意部分寄存器的使用,如I0、I1,其值不僅用做地址索引,還會影響許多指令的計算結果。在使用這些寄存器時,一定要注意將其壓棧或置為適當的值。此外,關于數據的載入,一般應遵循對齊原則,但在做運動估計計算匹配準則函數時,這樣的要求往往達不到。故如能將兩者分開來計算,將更能提高效率。
          此外,應盡量合理地使用寄存器,多使用并行指令也能提高代碼的執行效率。
          (2)分級存儲器結構
          ADSP-BF561采用改進的哈佛結構和分級的存儲器結構。Level1(L1)存儲器以全速運行,只有很少的延遲。在L1級,指令存儲器存放指令。兩個數據存儲器存放數據,一個專用的臨時數據存儲器存放堆棧和局部變量信息。由多個L1 存儲器組成的模塊,可進行SRAM和CACHE的混合配置。存儲器管理單元(MMU)提供存儲器保護功能,對運行于內核上的獨立任務,可保護系統寄存器免于意外的存取。L1存儲器是ADSP-BF561內核中性能最高、最重要的存儲器。通過外部總線接口單元(EBIU),片外存儲器可以由SDRAM、FLASH和SRAM 進行擴展,可以訪問多達132MB的物理存儲器。根據這樣的特點,將執行率更高的代碼放入L1指令緩存中,能使代碼更快地運行。IDE提供了Profile工具,能在運行時統計各個函數所占的CYCLE數和占總CYCLE數的百分比。通過將X264中比較耗時的部分算法代碼,如模式選擇部分代碼放入L1指令空間,能進一步提升運行效率。Profile工具統計結果同樣也是選擇需要使用匯編優化函數的依據,IDE可根據Profile結果對代碼進行優化。X264代碼Profile統計結果與測試數據有很大關系,選用更類似以后應用場所的數據作為測試數據,能使統計結果更接近以后的應用環境。為達到比較準確的統計結果,最好在Simulation階段進行統計。雖然這樣非常耗時,但為得到一個準確的統計作為參考依據是值得的。此外CACHEVIEWER工具能提供運行時CACHE的使用情況,使用它來分析CACHE的使用,對于提高代碼運行效率很有用處。
        3 實驗結果評估
        3.1 關鍵函數優化測試結果
          采用以上優化方法對編碼關鍵函數進行優化,優化前后函數耗時如表1所示。可見,以上優化方法能大幅度減少編碼時間。


        3.2 測試序列測試結果
          對三種測試序列在總線頻率120MHz下進行優化前后幀率測試,結果如表2所示。從表2可以看出,采用以上優化方法能顯著提高幀率。


        3.3 不同數據總線頻率下測試結果
          對于不同的總線頻率,優化后編碼幀率不同,結果如表3所示,采用的測試序列為foreman。


          本文介紹了H.264標準的框架,研究了X264軟件的實現方案,對ADSP-BF561體系結構進行分析,提出了一套X264優化方案,包括:算法替代和改進、內聯函數、匯編代碼編寫、高速存儲器應用等。測試結果表明,優化后的算法編碼效率有顯著提高,具有很強的實用價值。但是,本文主要從編碼速度和效率兩方面對編碼器進行優化,在復雜度和編碼質量上仍需不斷對關鍵算法進行分析整合,提出新的優化算法。同時,編碼器的碼率控制尚未完善,如何在降低計算復雜度的前提下有效進行碼率控制,需進一步研究。

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

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 云阳县| 宿松县| 彭州市| 莱芜市| 谢通门县| 玛纳斯县| 台东县| 塔城市| 名山县| 虹口区| 杭州市| 临潭县| 宝兴县| 焉耆| 安图县| 紫云| 谷城县| 洱源县| 卢湾区| 红原县| 涞水县| 丽水市| 岳阳市| 陇南市| 宁蒗| 徐水县| 霍山县| 铜鼓县| 汶上县| 揭东县| 祁阳县| 衡阳市| 钟祥市| 内黄县| 东辽县| 黄陵县| 平度市| 久治县| 永兴县| 若羌县| 桓台县|