动态二进制翻译后端代码热路径的重组优化

动态二进制翻译后端代码热路径的重组优化

论文摘要

二进制翻译(Binary Translation)是指在没有二进制文件的源代码的情况下,将一个平台的二进制程序翻译到另外一个平台上运行的方法。动态二进制翻译就在翻译的同时并且执行代码。而动态二进制翻译器可以做很多优化和探测,所以动态二进制翻译为解决代码遗留,代码移植以及构建分布式虚拟计算环境等问题提供了一个良好的解决方法,因此在近年来得到了越来越广泛的关注和研究。本文主要研究在动态二进制翻译中研究程序的后端代码在内存布局上跟程序的特性(超级块,跳转等方面)之间的关系,以及对程序的性能的影响。有效地收集运行时的profiling信息,利用这些信息对程序进行优化,以及检测内存布局是如何影响程序超级块的质量以及其他特性的,研究内容主要包括:利用profiling对热路径进行识别与监测,利用动静结合框架对内存布局进行重组,以及在动态执行中的代码复制(Code Replication)对超级块生成质量进行优化,并通过实验数据分析上述方法对系统所带来的特性变化。Profiling是指对程序运行时信息的统计和收集。传统的动态二进制翻译器采用的profiling方法分为三种:基于基本块、基于跳转边、基于路径。不同的方法有不同的特性,基于基本块的方法实现复杂度最低,但是收集的信息是最少的,而基于路径的方法实现的复杂度最高,但是收集的信息却是最多的。热路径是指程序中频繁执行的代码块序列。热路径需要通过一定的预测算法来识别。动态二进制翻译器通常采用基本块或边的执行信息来预测热路径。本文在CrossBit平台上利用基于基本块的执行信息预测热路径的方法来预测热路径,并基于此算法得出的热路径进行分析。超级块是指将热路径上的基本块合并成具有单一入口和多个出口的指令序列。热路径的构造实际操作来说就是超级块的构造。超级块可以减少因基本块的结束而带来的上下文切换,也可以给代码优化带来更广阔的优化空间。程序在运行过程中从超级块内部跳出的概率越小意味着超级块的性能越好。所以超级块的长度越长越好,而数量越少越好。代码复制是超级块的构造过程中利用复制共享基本块以生成质量更好的超级块的方法。它可以很好的提高超级块的质量和数量等指标。动静结合的动态二进制翻译器是指运行完程序一次记录下来程序的运行信息,然后离线的对内存布局进行整理优化,再重新加载到内存中运行优化后的代码。这样可以充分利用profiling信息进行离线的优化,在重新加载阶段获取性能的大幅提升。本文中的动静结合框架是首先利用边的profiling信息来检测热路径,并执行完程序然后按照热度在内存空间上对程序超级块进行重排,再重新加载到内存中运行。本文在CrossBit平台上利用代码复制和对超级块内存中按热度重排来改变程序的内存布局,并通过SPEC CPU2000基准测试程序对超级块生成质量以及程序行为特性进行测试。实验数据表明,CrossBit生成的超级块质量有不同程度的提高,而相应的整体性能有所提高。从而证明合理的内存布局对程序的优化提升。

论文目录

  • 摘要
  • ABSTRACT
  • 图目录
  • 表目录
  • 第一章 绪论
  • 1.1 研究背景
  • 1.1.1 二进制翻译与动态二进制翻译技术
  • 1.1.2 二进制翻译中的优化
  • 1.1.3 国内外研究现状
  • 1.2 研究目标
  • 1.3 论文的主要工作
  • 1.4 论文结构
  • 第二章 Crossbit 简介
  • 2.1 项目背景
  • 2.2 系统概述
  • 2.3 关键技术
  • 2.3.1 源代码加载
  • 2.3.2 内存管理
  • 2.3.3 中间指令
  • 2.3.4 Crossbit 性能分析
  • 2.4 其他典型二进制翻译及优化系统介绍
  • 2.4.1 Dynamo
  • 2.4.2 Valgrind
  • 2.5 本章小结
  • 第三章 动态热路径构造和动静结合框架介绍
  • 3.1 热路径优化的框架介绍
  • 3.1.1 热路径优化的流程
  • 3.1.2 热路径优化的具体实现
  • 3.1.3 代码整体结构
  • 3.2 动静结合框架的介绍
  • 3.2.1 整体框架
  • 3.2.2 信息收集阶段
  • 3.2.3 静态分析阶段
  • 3.2.4 代码加载执行阶段
  • 3.3 小结
  • 第四章 内存重组优化和代码复制实现
  • 4.1 动态过程的内存整理
  • 4.1.1 热路径的检测优化
  • 4.1.2 超级块构造中代码复制的需求
  • 4.1.3 代码复制与内存膨胀
  • 4.2 动静结合Crossbit(SI-Crossbit)的内存整理过程
  • 4.2.1 内存布局优化的介绍
  • 4.2.2 SI-Crossbit 内存布局优化的设计
  • 4.2.3 具体实现
  • 4.3 小结
  • 第五章 后端代码内存布局的重组以及数据分析
  • 5.1 动态构造超级块中代码复制数据分析
  • 5.1.1 实验平台与框架
  • 5.1.2 动态构造热路径的过程中对代码复制的分析
  • 5.1.3 超级块的指标数据评价
  • 5.1.4 性能和内存分析
  • 5.1.5 数据的相关性分析
  • 5.2 动静结合中内存重组的数据整理分析
  • 5.2.1 实验平台与框架
  • 5.2.2 执行频率和内存之间的关系分析
  • 5.2.3 超级块质量的评测
  • 5.2.4 性能分析
  • 5.3 小结
  • 第六章 总结与展望
  • 6.1 总结
  • 6.2 展望
  • 参考文献
  • 致谢
  • 攻读硕士期间发表论文
  • 相关论文文献

    标签:;  ;  ;  ;  ;  ;  

    动态二进制翻译后端代码热路径的重组优化
    下载Doc文档

    猜你喜欢