论文部分内容阅读
为了进一步提高计算机处理性能,计算机系统架构逐步朝向异构多核系统架构发展,比如异构计算。为了使我们开发的软件充分利用计算机系统架构资源,我们迫切需要一款热点识别系统工具,它能够分析软件中的热点。然后我们可以基于软件的热点,利用计算机系统架构资源对软件进行改造,从而提高软件的性能。本文研究了二进制动态翻译技术,对国内外主流的二进制动态翻译技术的框架进行了分析,如MIT和HP联合开发的DynamoRio,上海交大开发的CrossBit。在分析了它们的优点和缺点后,借鉴它们的技术框架,本文设计和实现了二进制热点识别系统。该系统能够对ARM平台上的二进制可执行程序的热点进行识别,且不需要可执行程序的源代码。为了实现二进制热点识别系统,首先对设计二进制热点识别系统需要的相关技术进行了分析:ARM体系结构,特别对ARM的指令集和工作模式进行了研究,通过解释执行的方式模拟了ARM指令集;二进制可执行文件elf,对它的文件头以及文件头在整个程序编译链接装载过程中的作用进行了研究;性能分析工具,分析了gprof的实现原理和二进制动态翻译技术的技术框架。其次通过数据流图对二进制热点识别系统的功能、性能需求进行分析,并通过数据流图导出二进制热点识别系统的功能模块图以及模块结构图。最后对整个二进制识别系统进行设计和实现,根据各模块对外提供的功能,分析各模块需要解决的技术难题,如初始化模块如何加载不同程序到同一地址空间,缓存模块中如何选择置换算法,系统调用模块中如何在虚拟寄存器上模拟执行系统调用,热点生成模块中热点算法的选择。在上述基础上,设计各模块的解决方案,并编码实现。在测试阶段,设计不同的测试用例,对二进制热点识别系统的功能和性能进行测试。测试二进制热点识别系统是否能够识别出不同测试用例的热点,以验证系统功能。收集二进制热点识别系统识别出测试用例所花的运行时间,并对它们进行分析,得到了二进制热点识别系统不足之处以及未来优化的方向。