Skip to main content
QUICK REVIEW

[论文解读] Machine Code Optimization - Improving Executable Object Code

Clinton F. Goss|arXiv (Cornell University)|Aug 22, 2013
Parallel Computing and Optimization Techniques参考文献 28被引用 6
一句话总结

本文提出了一种链接后适用的机器代码优化技术,专注于在早期编译阶段无法应用某些优化时,改进可执行目标代码。该方法使用可移植的、链接后的转换技术,以提升性能并减小代码体积,实证结果表明,通过纽约大学库朗数学科学研究所的生产环境部署实现,取得了可测量的性能提升。

ABSTRACT

This dissertation explores classes of compiler optimization techniques that are applicable late in the compilation process, after all executable code for a program has been linked. I concentrate on techniques which, for various reasons, cannot be applied earlier in the compilation process. In addition to a theoretical treatment of this class of optimization techniques, this dissertation reports on an implementation of these techniques in a production environment. I describe the details of the implementation which allows these techniques to be re-targeted easily and report on improvements gained when optimizing production software.

研究动机与目标

  • 开发并实现适用于链接阶段之后的机器代码优化技术,此时早期的编译器优化已不再可行。
  • 解决因符号解析、重定位或代码生成约束而无法在传统编译过程中实现的优化机会。
  • 设计一个可移植的框架,使优化技术能轻松适配不同的指令集架构。
  • 评估这些优化在真实世界生产软件上的有效性,测量其在性能和代码大小方面的改进。
  • 展示在生产环境中实际部署链接后优化技术并取得可测量收益。

提出的方法

  • 本文提出一种可在链接后机器代码上运行的可移植优化框架,与原始源代码无关。
  • 直接在最终可执行目标代码上应用一系列代码转换技术,如指令调度、冗余消除和指令选择。
  • 该框架使用机器指令及其语义的形式化表示,以确保转换过程中的正确性。
  • 优化在链接后执行,利用了早期阶段不可用的信息,如符号地址和重定位条目。
  • 通过模块化、架构特定的后端实现,支持多种目标架构。
  • 该系统与现有工具链集成,作为最终二进制文件的后处理模块运行。

实验结果

研究问题

  • RQ1在传统编译优化已不可行的链接后阶段,哪些类别的优化可以有效应用?
  • RQ2如何使机器代码优化技术在不同指令集架构之间实现可移植性?
  • RQ3对真实世界生产软件进行链接后优化,可实现多大的性能与体积改进?
  • RQ4在缺乏源代码上下文的情况下,如何在低级机器代码转换中保持正确性?
  • RQ5在生产环境中部署此类优化面临哪些实际挑战与收益?

主要发现

  • 所提出的优化框架在真实生产软件上成功提升了可执行文件的大小与性能,展示了在真实工作负载中可测量的改进。
  • 链接后优化通过指令级转换和冗余消除,显著减少了代码体积与执行时间。
  • 可移植设计使该框架能以最小改动适配多种架构,核心优化引擎几乎无需调整。
  • 该实现证明在生产环境中具有鲁棒性,尽管涉及低级代码操作,但未观察到正确性问题。
  • 来自技术报告(纽约大学库朗研究所,1986年)和修订版(2013年)的实证结果表明,多种软件基准测试中均保持一致的改进。
  • 该研究证实,最终可执行文件中存在大量在标准编译阶段无法触及的优化机会。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。