新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于龍芯2F的Glibc庫優(yōu)化

基于龍芯2F的Glibc庫優(yōu)化

作者: 時間:2010-12-14 來源:網(wǎng)絡 收藏

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

本文引用地址:http://butianyuan.cn/article/173058.htm


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

e.JPG

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


上一頁 1 2 3 下一頁

關鍵詞: C語言

評論


相關推薦

技術專區(qū)

關閉