面向UniCore32体系结构的C语言函数库的移植与优化

来源 :北京大学 | 被引量 : 0次 | 上传用户:chengyihan
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
函数库是一组目标文件的集合,它们被包含到需要链接它们的程序中。它为软件开发和程序运行提供丰富的库函数,成为计算机系统的重要组成部分。随着计算机系统的不断发展和应用领域的不断多样化,C语言函数库也得到了快速的发展,并且针对不同需求发展出了很多不同的类型。   本文基于北京大学微处理器研究开发中心自主设计的UniCore32体系结构进行Glibc和Bionic函数库的移植与优化,主要工作分为常见C语言函数库的对比分析、Glibc和Bionic函数库的移植以及重点库函数的优化三部分。   1)C语言函数库的对比分析和选择部分,本文重点分析了Glibc函数库、uClibc函数库、EGlibc函数库、Newlib函数库和Bionic函数库的各自特点,并从函数库的发展历程、实现目标、提供功能、模块大小、源码结构组成及版权协议等几方面进行对比;最后选择了Glibc函数库和Bionic函数库作为移植对象。   2)Glibc函数库和Bionic函数库的移植部分,这一部分阐述了面向UniCore32体系结构对这两个函数库进行的移植工作,并重点介绍了遇到的问题及解决方法。遇到的问题主要在于对原子操作、线程局部存储和全局构造函数的调用等几个方面的支持,以及对有关汇编文件的重新编写。移植工作完成后,在UniCore32体系结构的微处理器上可以正常运行完整的GNU/Linux操作系统和桌面应用软件。   3)常用库函数的优化部分,本文主要完成了对内存和字符串处理函数的优化以及对三角函数的优化。对于内存和字符串处理函数的优化,本文针对UniCore32体系结构特点,针对常见情况使用高效算法,并用汇编语言仔细调优。对于三角函数优化,本文分别用查表法和Cordic算法对三角函数计算方法进行了改进。   在上述工作完成的过程中本文分别总结了基于特定体系结构进行函数库移植和优化的方法及经验。在函数库的移植方面主要工作是解决体系结构相关性问题,比如:在Glibc函数库的移植工作中针对UniCore32体系结构重新实现了原子操作和线程局部存储;在函数优化方面可以从以下几个方面进行考虑:调整编译选项,手动修改汇编文件以及考虑体系结构相关性问题。
其他文献
随着计算机技术的深入发展和计算机软件在生产生活中的广泛应用,软件的正确性验证成了人们关心的重要问题。而模型检查作为一种软件正确性验证的方法,受到工业界广泛认同。它
随着互联网的快速发展,互联网应用越来越依赖于支持高吞吐量和海量可扩展性的数据管理系统。近年来,云环境在解决海量数据的高效管理方面正得到越来越多的关注。当前,有若干提供
对于大量的文物碎片,如果进行人工拼接则不仅工作量大而且容易造成文物的再次破坏,因此需要借助计算机实现文物复原。在计算机辅助的文物复原系统中,碎片自动复原是指从众多
随着VLSI技术的迅猛发展,处理器主频日益提高,而存储器的速度提升相对缓慢,处理器和存储器之间速度的差距越来越大,存储器层次结构则很好的弥补了高速处理器和低速存储器之间
真实感绘制一直是计算机图形学中一项基本而重要的研究内容,它使用计算机来模拟并重现真实世界中的景象。全局光照技术是实现真实感绘制的主要手段,由于其能模拟自然界中的多
运动捕获是人机交互、可穿戴计算、普适计算和计算机视觉领域的一个重要研究方向。基于惯性传感器的运动捕获则是其中一个重要而活跃的研究课题,在自然用户界面、普适计算、
蛋白质相互作用网络在细胞生命中起着非常关键的作用,当前蛋白质组学研究的一个首要任务即是构建整个细胞的蛋白质相互作用网络。所以无论是实验的方法还是计算的方法,准确的鉴
合成孔径雷达(Synthetic Aperture Radar ,SAR)是一种安装在运动载体上的高分辨率成像雷达,它采用脉冲压缩技术实现了距离向高分辨,采用“合成孔径”原理得到方位向高分辨率,
本文针对在桌面虚拟机办公环境下启动应用软件响应时间过长的问题,提出一种利用固态硬盘高速缓存来改善虚拟机响应时间和交互性的方法。在传统磁盘和内存之间添加固态硬盘高
Maze是教育网内有着众多用户的P2P共享软件,由北京大学网络实验室于2005年发布,本文主要是针对Maze在系统架构上的单点失效风险以及资源索引时效性缺失的问题,设计并实现了一