新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于龍芯2F的Glibc庫優化

        基于龍芯2F的Glibc庫優化

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

        由于龍芯2F只支持小尾端的字符序,因此SHA算法首先將進行運算的字轉換為大尾端。原始實現中使用表達式x=((n24)| ((n&0xff00)8)|((n>>8)&0xff00)|(n>>24))進行轉換,其中n為無符號的 32位整數。該轉換操作總共需要兩次與,四次移位與三次或運算,我們對其
        進行改進,采用二分方的思想,使用表達式n1=(n16)|(n>>16)和x=(((n1&0xff00ff00) gt;>8)|(n1&0xff00ff)8))。其中計算n1的表達式可以由編譯器編譯為一條循環移位指令,這樣改進的實現共需要兩次與,三次移位與一次或運算,省去了一次移位與兩次或運算。
        算法接下來的操作是消息擴散與迭代計算,計算公式分別如圖3和圖4所示。

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


        d.JPG
        我們對其計算過程進行層數為2的循環展開。對于迭代計算過程,循環展開之后還可以繼續進行賦值傳遞優化,減少運算量和迭代次數。循環展開層數增加時,循環次數減小,但增加了循環內的計算量,寄存器的數目滿足不了中間結果的保存,需要讀寫內存,反而造成性能的下降。經過實驗確定,層數為2是一個較好的選擇。
        表2是改進前后SHA256算法的性能對比,取數據大小從64B到2kB倍增。

        e.JPG

        4 總結
        Glibc庫是Linux系統最底層的運行庫,是所有應用程序賴以執行的基礎環境。本文基于龍芯2F平臺對Glibc庫中的字符串與內存處理函數、數據轉換函數、哈希表查找函數以及加密函數進行了代碼優化,大部分函數的優化比率達到30%以上,對龍芯2F平臺的整體運行性能提升具有重要意義。


        上一頁 1 2 3 下一頁

        關鍵詞: C語言

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 刚察县| 安阳市| 郎溪县| 通化县| 九江县| 旺苍县| 宁河县| 玉树县| 广德县| 朝阳市| 门头沟区| 蕉岭县| 宁河县| 河西区| 罗城| 高雄县| 阿城市| 松江区| 柳州市| 南华县| 中阳县| 湘潭县| 苍溪县| 十堰市| 昭平县| 安陆市| 蚌埠市| 苏尼特左旗| 合阳县| 改则县| 英山县| 城固县| 松江区| 梁平县| 汾西县| 淮滨县| 洛隆县| 玉屏| 宜兴市| 陆川县| 定西市|