paperbot · PL 论文追踪

全部论文 待读 收藏

P2 AnICA: analyzing inconsistencies in microarchitectural code analyzers

AnICA:分析微架构代码分析器中的不一致
OOPSLA 6(OOPSLA2)2022匹配度 4/10 · 论文属于程序分析与抽象解释,但研究对象是微架构代码分析器,与用户画像的核心方向(PL与AI/Agent交叉、浮点程序分析、贝叶斯程序分析)关联较弱,未涉及LLM或浮点分析,仅方法层面有借鉴意义。引用 2 inbox
Fabian Ritter, Sebastian Hack
crossref: 2026-09-10

AI 速览

一句话:提出 AnICA,用差分测试与抽象解释系统分析微架构代码分析器之间的不一致并归纳原因。

微架构代码分析器用于估计机器码基本块的吞吐量,但 llvm-mca、uiCA、Ithem al 等先进工具对同一代码常给出不同结果,这些不一致可能是错误,也可能源于未文档化的建模假设。本文提出 AnICA,借鉴差分测试与抽象解释,系统分析此类工具间的不一致。该方法通过收集、比较并抽象概括这些不一致,将大量结果汇总为少量高层描述。评估表明,AnICA 能将数千条不一致压缩为几十条可解释描述,揭示工具行为差异;案例研究还自动发现并刻画了 llvm-mca 中已知与未知缺陷,以及 AMD Zen 微架构的一个特殊行为。

问题
微架构代码分析器对同一基本块的吞吐量预测常不一致,且原因可能是错误,也可能是工具设计者未文档化的建模假设。
方法
AnICA 结合差分测试与抽象解释,系统收集、概括并刻画分析器间的不一致,从而定位行为差异与缺陷。
评估
评估中将数千条不一致归纳为几十条描述,并通过案例研究自动发现 llvm-mca 的已知/未知缺陷及 AMD Zen 微架构的特殊行为。
原文摘要(Abstract)

Microarchitectural code analyzers, i.e., tools that estimate the throughput of machine code basic blocks, are important utensils in the tool belt of performance engineers. Recent tools like llvm-mca, uiCA, and Ithemal use a variety of techniques and different models for their throughput predictions. When put to the test, it is common to see these state-of-the-art tools give very different results. These inconsistencies are either errors, or they point to different and rarely documented assumptions made by the tool designers. In this paper, we present AnICA, a tool taking inspiration from differential testing and abstract interpretation to systematically analyze inconsistencies among these code analyzers. Our evaluation shows that AnICA can summarize thousands of inconsistencies in a few dozen descriptions that directly lead to high-level insights into the different behavior of the tools. In several case studies, we further demonstrate how AnICA automatically finds and characterizes known and unknown bugs in llvm-mca, as well as a quirk in AMD's Zen microarchitectures.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot1410,
  title = {AnICA: analyzing inconsistencies in microarchitectural code analyzers},
  author = {Fabian Ritter and Sebastian Hack},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {6},
  number = {OOPSLA2},
  year = {2022},
  doi = {10.1145/3563288}
}