论文标题

CCNAV:了解二进制代码中的编译器优化

CcNav: Understanding Compiler Optimizations in Binary Code

论文作者

Devkota, Sabin, Aschwanden, Pascal, Kunen, Adam, Legendre, Matthew, Isaacs, Katherine E.

论文摘要

计划开发人员花费大量时间在优化和调整程序上。在此迭代过程中,他们采用优化,分析结果代码并修改编译,直到满足它们为止。了解编译器对代码所做的事情对于此过程至关重要,但非常耗时和劳动力密集。用户需要浏览数千行二进制代码,并将其与源代码概念相关联,以了解编译结果并确定优化。我们与计划开发人员和绩效分析师合作介绍了一项设计研究。我们的合作者使用与程序有关的各种工件,例如二进制代码,源代码,控制流程图和呼叫图。通过访谈,反馈和成对分析会议,我们分析了他们的任务和工作流程。基于此任务分析并通过以人为本的设计过程,我们设计了视觉分析系统编译导航器(CCNAV),以帮助探索编译器优化对程序的影响。 CCNAV提供了简化的工作流程和统一的上下文,以集成不同的人工制品。 CCNAV支持在所有工件中的一致交互,从而易于将二进制代码与源代码概念相关联。 CCNAV使用户能够导航和过滤大型二进制代码,以识别和总结优化,例如内部,矢量化,环形展开和代码吊装。我们通过指导会议和半结构化访谈评估CCNAV。我们反思了我们的设计过程,尤其是沉浸式元素,以及通过以前的设计分析设计研究经验的设计研究的可转移性。

Program developers spend significant time on optimizing and tuning programs. During this iterative process, they apply optimizations, analyze the resulting code, and modify the compilation until they are satisfied. Understanding what the compiler did with the code is crucial to this process but is very time-consuming and labor-intensive. Users need to navigate through thousands of lines of binary code and correlate it to source code concepts to understand the results of the compilation and to identify optimizations. We present a design study in collaboration with program developers and performance analysts. Our collaborators work with various artifacts related to the program such as binary code, source code, control flow graphs, and call graphs. Through interviews, feedback, and pair-analytics sessions, we analyzed their tasks and workflow. Based on this task analysis and through a human-centric design process, we designed a visual analytics system Compilation Navigator (CcNav) to aid exploration of the effects of compiler optimizations on the program. CcNav provides a streamlined workflow and a unified context that integrates disparate artifacts. CcNav supports consistent interactions across all the artifacts making it easy to correlate binary code with source code concepts. CcNav enables users to navigate and filter large binary code to identify and summarize optimizations such as inlining, vectorization, loop unrolling, and code hoisting. We evaluate CcNav through guided sessions and semi-structured interviews. We reflect on our design process, particularly the immersive elements, and on the transferability of design studies through our experience with a previous design study on program analysis.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源