下载PDF摘要:CPU模拟器是建模CPU执行行为的有用工具。然而,由于设置细粒度参数的成本和复杂性,例如单个指令的延迟,它们会受到不准确的影响。这种复杂性源于设计基准和测量框架所需的专业知识,这些基准和测量框架可以在如此精细的粒度下精确测量参数值。在某些情况下,这些参数不一定具有物理实现,因此基本上是近似的,甚至是不可测量的。本文介绍了一个用于从粗粒度端到端测量中学习x86基本块CPU模拟器参数的系统DiffTune。给定一个模拟器,DiffTune首先用一个可微的代理(另一个近似于原始函数的函数)替换原来的模拟器来学习它的参数;通过使代理是可微的,DiffTune可以应用基于梯度的优化技术,即使在原始函数不可微的情况下也是如此,就像CPU模拟器的情况一样。有了这个可区分的替代项,DiffTune然后应用基于梯度的优化来生成模拟器的参数值,从而将模拟器在基本真实端到端性能测量数据集上的误差降至最低。最后,将学习到的参数重新插入到原始模拟器中。DiffTune能够自动学习基于LLVM指令调度模型的基本块CPU模拟器lvm-mca的英特尔x86仿真模型中的整个微体系结构特定参数集。DiffTune的学习参数会导致llvm-mca的平均误差,该误差不仅与专家提供的原始参数值相匹配,而且还会降低其平均误差。