glibc库在龙芯2f上的优化

glibc库在龙芯2f上的优化

ID:21171220

大小:1.85 MB

页数:52页

时间:2018-10-20

glibc库在龙芯2f上的优化_第1页
glibc库在龙芯2f上的优化_第2页
glibc库在龙芯2f上的优化_第3页
glibc库在龙芯2f上的优化_第4页
glibc库在龙芯2f上的优化_第5页
资源描述:

《glibc库在龙芯2f上的优化》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第一章绪论符测试,国际化与本土化,消息传递处理,初级I/O,标准I/O,文件和管道处理,Socket处理,时间和日期,进程及流程控制,用户和用户组管理和信号处理等函数组。它们与Linux操作系统相关,大部分流程固定,有关操作系统优化的工作可能会对某些函数进行改进,如[13]对其中的内存配置函数针对龙芯2F进行了优化。仅从函数实现来看,它们没有太大优化余地,我们对其不做处理。C库中的另一种函数群为一般的工具型函数,它们提供了经常使用的功能的实现,包括标准输入输出控制,字符串处理,数学计算函数,正则表达式,字符串加密,查找与排序等。它们提供基本的与平台无关的功能,含有一

2、定的计算量,是我们优化工作关注的部分。Glibc库的版本处于不断更新中,本文的工作以Glibc-2.7为基础,同时结合了最新版本Glibc-2.11的更新做了相应的改动。1.2龙芯2F体系结构龙芯2F是一款我国自主研发的实现64位MIPSIII指令集的通用CPU。它实现了动态分支预测,非阻塞Cache,超标量四发射乱序执行流水线[1]。龙芯2F的指令流水线每个时钟周期取四条指令进行译码,并动态发射到五个全流水的功能部件中。但每次取指不能跨越32字节的指令Cache行。发射的四条指令中,定点指令和浮点指令的个数最多为两条,访存指令为一条。龙芯2F的基本流水线有9级,包

3、括取指,预译码,译码,寄存器重命名,调度,发射,读寄存器,执行,提交。对于一些较复杂的指令,如定点乘除法指令,浮点指令及访存指令,在执行阶段需要多拍。1.2.1指令执行1.2.1.1指令集龙芯2F处理器实现了64位的MIPSIII指令集,整数寄存器和浮点寄存器均为64位,支持o32/n32和n64的ABI类型。除了MIPS标准指令外,龙芯2F还提供了特有的整型计算和浮点计算指令[1]。整型计算指令包括单字和双字的乘法,除法及求模,它们提供了单条指令对3个寄存器进行操作,减少了整数运算的指令数。浮点计算指令包括浮点乘加/减,乘加/减取负,开平方等。它们为科学计算提供了

4、很大方便。龙芯2F不支持硬件Cache预取指令。它屏蔽了向0号寄存器加载数据时的地址2第一章绪论错例外,可以使用向0号寄存器加载数据的指令实现软件预取。但该方法会阻碍指令提交。1.2功能部件龙芯2F处理器具有五个功能部件,其中包括两个定点部件ALU1和ALU2,两个浮点部件FALU1和FALU2,一个访存部件。定点部件与浮点部件支持的运算以及运算延迟如下[1]:定点部件ALU1和ALU2均可执行的操作包括定点加减法,逻辑运算,移位,比较指令。除此之外,定点部件ALU1还可以执行转移指令,ALU2还可以执行定点乘除法指令。其中定点乘法为全流水操作,延迟为4拍。定点除法

5、是非全流水操作,它采用了SRT算法进行计算。定点除法的延迟从4拍到37拍不等,其具体数值与操作数有关。除了定点乘除法,其它指令均可在1拍内完成执行并写回。浮点部件FALU1和FALU2均可执行的操作包括浮点加减法,浮点乘法以及浮点乘加/减。浮点部件FALU1还可执行浮点取对值,取反,浮点精度转换,定点浮点转换,比较及转移指令,其所有运算为全流水操作。其中的浮点取绝对值,取反,浮点精度转换,比较和转移的延迟为2拍,定点浮点间格式转换延迟为4拍。浮点部件FALU2可执行的特有指令包括浮点除法和浮点开平方。它们使用SRT算法,为非全流水操作。单/双精度的浮点除法延时从4到

6、10/17拍不等,单/双精度的浮点开平方操作延时从4到16/31拍不等,具体数值与操作数有关。除了FALU1和FALU2各自特有的指令外,它们均可执行的浮点加减法,浮点乘法,浮点乘加/减的延迟为6拍。除了由MIPS标准定义的浮点指令,龙芯2F还加入了一些特殊的操作。其浮点功能部件可以执行并行的单精度浮点指令,即在64位数据通路上同时执行两个单精度运算。此外,浮点功能部件还可通过扩展浮点指令的指令域执行SIMD多媒体指令。1.3乱序执行乱序执行指CPU可以不按程序文件的顺序而将多条指令发送给多个处理单元的技术。其目的是为了让CPU尽可能地满转从而提高一个周期内指令执行

7、的个数[14]。CPU首先分析各个指令,确定其是否能在保证依赖关系的前提下提前执行。接下来根据各处理单元的空闲状态,将可以提前执行的指令发射。指令在乱序执行后需要顺序提交,保证精确中断和访存顺序执行。龙芯的乱序执行技术包括寄存器重命名技术、动态调度技术、分支预测技术等[1]。寄存器重命名是物理寄存器与逻辑寄存器建立动态映射的过程[14]。它为每3第一章绪论个逻辑目标寄存器分配一个新的物理寄存器,并将逻辑寄存器映射到最近分配给该逻辑寄存器的物理寄存器。寄存器重命名技术可以解决指令的读后写(WAR),写后写(WAW)相关,充分发挥乱序执行的作用。龙芯2F使用物理寄存

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。