现代CPU性能分析与优化

[美] 丹尼斯·巴赫瓦洛夫
译者序 多年前,在上一家公司参与某编译器项目时,为了度量编译器生成汇编指令的效率,我曾经尝试过基于控制流图(Control Flow Graph,CFG)模拟计算某个Java函数包含的汇编指令运行所需的总时钟周期数。虽然这是一种粗略的静态计算方法,跟CPU的真实运行场景有相当大的差别,但却在我心里种下了进一步了解指令在CPU内部究竟如何运行的种子。 后来,到新公司工作后,我开始整体负责虚拟机和编译优化相关业务,苦苦探索用于分析和度量程序性能的方法,以判断某段程序是否可以进行编译优化,以及可用何种方法进行优化。我们注意到了Intel在x86平台上的自顶向下微架构性能分析方法,但是相关论文中有大量的术语和背景知识,如架构、微架构、流水线、前后端、翻译后备缓冲区(Translation Lookaside Buffer,TLB)等,理解起来非常困难。在网上搜索相关资料时,大部分都是碎片化的信息,对从整体上全面理解自顶向下分析方法并不能提供太大的帮助。 就在我们苦苦探索时,偶然在微信公众号“Linux阅码场”上看到一篇文章推荐了两本书,其中一本是Brendan Gregg的《性能之巅》,另一本就是来自Denis Bakhvalov的Performance Analysis and Tuning on Modern CPUs。我们瞬间就被目录中的内容吸引了,这不就是我们正在追寻的东西吗?于是,我们便一头扎了进去,如饥似渴地读了起来,读完感觉酣畅淋漓。之前很多不清晰的点,逐渐清晰了起来,尤其是架构、性能分析和优化方法。 为了让更多人能够学习书中的内容,我们有了翻译这本书的念头,于是便跟Denis联络,申请翻译这本书,很快便得到了Denis的同意。然后,通过朋友联系到了机械工业出版社,洽谈协商后便开始了本书的翻译工作。因为本书主要讲的是芯片架构和编译优化,属于计算机领域基础软件部分,所…