新闻中心

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所示。

本文引用地址://m.amcfsurvey.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语言

评论


相关推荐

技术专区

关闭