關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于龍芯3B的H.264解碼器的向量化

        基于龍芯3B的H.264解碼器的向量化

        作者: 時間:2010-12-15 來源:網絡 收藏

        4 實驗結果
        4.1 ffmpeg各函數加速比
        本文分別對化后的各個函數進行了測試,并且與未化之前的函數進行了比較,各個函數化優化后的加速比如圖3所示。其中圖中橫坐標所示函數序號與表2中的各個函數一一對應。
        g.jpg

        圖3中的函數的加速比所跨越的范圍較大,比如6號函數的加速比約有23.9左右,而最后一個函數的加速比只有1.2左右。之所以會出現上述情況,除了與改進后的函數所使用的向量指令的數量和修改代碼的比重有關以外,也與運算所使用的操作數的類型有關。對于6號函數,其循環內的運算所使用的操作數的類型為字節類型,因而僅僅使用向量指令進行優化,理論加速比就可以達到32,不過本文僅僅對該函數的內層循環進行了向量化,而向量化后的內層循環一次僅僅處理了 16個字節類型的數據,即并未充分使用256位的向量寄存器。因而理論的加速比應該為16,但是由于結合了循環展開和指令調度等其他優化策略,因而實際的加速比可以達到23.9左右。同樣,對4號、5號和6號這三個同類型的函數進行分析,我們也可以發現:后一個函數的加速比均約為前一個函數加速比的兩倍。這是因為對于4號函數,內層循環向量化后一次可以同時計算4個字節類型的數據,而5號函數可以同時計算8個字節類型的數據,因而理論上的加速比也應該是兩倍的等比數列形式,而實際結果與理論分析是一致的。
        對于3.3.2小節中重點介紹的7號函數和8號函數,其原函數無法進行簡單向量化,而本文使用了掩碼以及矩陣轉置等優化方法,使其能夠使用的向量擴展指令,因而盡管性能提升不大,但是加速比也分別有3.2和5.5。
        4.2 不同平臺上的向量化比較
        本文同樣將ffmpeg分別在不同的平臺上進行了測試,使用的兩個測試視頻分別為是“問道武當002.mkv”(視頻A)和“walk_vag_ 640x480_qp26.264”(視頻B)。其中視頻A是問道武當視頻(720p)中截取的片段,而后者是通過x264對walk_vag.yuv(480p)編碼生成的,編碼時選用的qp值為26。而測試平臺則分別選擇了AMD和Intel處理器平臺。
        e.JPG

        從表3的測試結果可以看出對于視頻A,在上的性能提升比其他兩個平臺上都高很多;而對于視頻B,在上的性能提升也與其它兩個平臺接近。實驗結果表明:在龍芯3B上實現ffmpeg的向量化,對性能提升有很大幫助,而且解碼某些視頻時,性能的提升甚至高于性能優越的商用處理器。而通過與表1中使用GCC向量化編譯的結果進行比較,也可以看出:手工對ffmpeg進行向量化比使用GCC進行向量化,性能有更大的提升。

        5 總結和展望
        本文實現了ffmpeg解碼器到龍芯3B的移植,并針對龍芯3B實現了對向量擴展指令支持的特點,對ffmpeg解碼器進行了手工向量化。實驗結果表明:手工向量化后的ffmpeg解碼器的性能比使用GCC向量化編譯后的ffmpeg解碼器性能要好很多,而且性能的提升也比Intel和 AMD平臺更多。
        本文僅僅從代碼級實現了針對龍芯3B的ffmpeg解碼器的向量化移植,為了進一步提高性能,還需要從整個算法層面上進行優化。另外,由于龍芯3B的多核特性,還可以考慮使用多核進行解碼。

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

        上一頁 1 2 3 下一頁

        關鍵詞: 龍芯3B 解碼器 向量

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 巫溪县| 尖扎县| 吴旗县| 中牟县| 呼伦贝尔市| 衡山县| 前郭尔| 勐海县| 房山区| 石台县| 大方县| 宁陕县| 曲周县| 安塞县| 丰原市| 新晃| 化隆| 宁陕县| 丹江口市| 仁怀市| 永城市| 济宁市| 和林格尔县| 奉贤区| 南皮县| 武胜县| 光山县| 台中县| 伊川县| 莫力| 天台县| 河西区| 万载县| 穆棱市| 井研县| 迭部县| 花莲县| 河曲县| 蚌埠市| 青岛市| 五华县|