打开主菜单

求真百科

现代CPU性能分析与优化

现代CPU性能分析与优化》,丹尼斯·巴赫瓦洛夫 著,出版社: 机械工业出版社,出版日期: 22-11-01,ISBN: 9787111719489。

截至2022年,机械工业出版社年出版新书近2700种,年引进和输出版权总量近800种,产品横跨科技出版、教育出版、大众出版三大板块,覆盖机械、电工电子、汽车、建筑、计算机、经管、心理[1]、生活、科普、艺术设计、文创等十多个专业领域,以及高等教育[2]职业教育、技能教育等不同教育层次。

目录

内容简介

本书旨在指导大家优化运行在现代CPU上的应用程序的性能。具体来说,主要分为两部分内容:? 部分介绍性能分析括对CPU微架构、术语和指标的简要概述,还探讨了分析性能的不同方法和现代平台上可用的硬件能。 ? 第二部分展示如何发现优化机会,以及可以做哪些转换来提高程序的性能。此外,还提供了一份可应用于用户应用程序的优化清单括循环优化、向量化、函数内联等,并讨论了有助于消除CPU微架构层面的问题(如缓存未命中、分支预测错误等)的代码转换。本书对于从事性能关键型应用程序开发行系统底层优化的技术人员来说是不可或缺的。对于任何想更好地了解应用程序性能并探索其诊断和方法的来说,这本书也很有用。

目录

Preface?目 录译者序前言致谢作者简介第1章?导读11.1?为什么需要性能调优21.2?谁需要做性能调优51.3?什么是性能分析71.4?本书的主要内容81.5?本书含什么内容91.6?本结10部分?现代CPU性能分析第2章?性能测量122.1?现代系统中的噪声132.2?生产环境中的性能测量152.3?自动检测性能退化问题162.4?手动性能测试182.5?软件计时器和硬件计时器222.6?微基准测试242.7?本结25第3章?CPU微架构273.1?指令集架构273.2?流水线283.3?利用指令级并行303.3.1?乱序执行303.3.2?超标量引擎和超长指令字313.3.3?投机执行333.4?利用线程级并行343.5?存储器层次353.5.1?高速缓存层次353.5.2?主存393.6?虚拟内存393.7?单指令多数据多处理器403.8?现代CPU设计423.8.1?CPU前端423.8.2?CPU后端443.9?性能监控单元44第4章?性能分析中的术语和指标474.1?退休指令与执行指令474.2?CPU利用率484.3?CPI和IPC484.4?微操作494.5?流水线槽位514.6?核时钟周期和参考时钟周期514.7?缓存未命中524.8?分支预测错误53第5章?性能分析方法555.1?代码插桩565.2?跟踪585.3?负载表征595.3.1?统计性能事件595.3.2?手动收集性能605.3.3?事件多路复用和缩放625.4?采样635.4.1?用户模式采样和基于硬件 事件的采样645.4.2?寻找热点645.4.3?采集调用栈665.4.4?火焰图695.5?屋顶线性能模型695.6?静态性能分析735.7?编译器优化报告755.8?本结78第6章?性能分析相关的CPU特性806.1?自顶向下微架构分析技术816.1.1?Intel VTune Prof iler中的 TMA846.1.2?Linux perf中的TMA856.1.3?步:确定瓶颈866.1.4?第二步:定位具体的代码 位置886.1.5?第三步:解决问题906.1.6?小结916.2?后分支记录926.2.1?采集LBR栈946.2.2?获取调用图956.2.3?识别热点分支966.2.4?分析分支预测错误率976.2.5?机器码的计时986.2.6?评估分支输出的概率1006.2.7?其他应用场景1016.3?基于处理器事件的采样1016.3.1?精准事件1026.3.2?降低采样开销1036.3.3?分析内存访问1046.4?Intel处理器跟踪技术1056.4.1?工作流1056.4.2?时间报文1066.4.3?采集和解析跟踪文件1076.4.4?用法1086.4.5?磁盘空间和解析时间1096.5?本结110第二部分?基于源代码的CPU调优第7章?CPU前端优化1177.1 机器码布局1187.2 基本块1187.3 基本块布局1197.4 基本块对齐1217.5 函数拆分1237.6 函数分组1257.7 基于剖析文件的编译优化1267.8 对ITLB的优化1287.9 本结128第8章?CPU后端优化1308.1 内存绑定1308.1.1 缓存友好的数据结构1318.1.2 显式内存预取1368.1.3 针对DTLB优化1388.2 核心绑定1418.2.1 函数内联1418.2.2 循环优化1438.2.3 向量化1498.3 本结158第9章?优化错误投机1609.1 用查表替换分支1619.2 用断言替换分支1629.3 本结164第10章?其他调优16510.1 编译时计算16510.2 编译器内建函数16610.3 缓存预热16710.4 减少慢速浮点运算16810.5 系69第11章?优化多线程应用程序17111.1 性能扩展和开销17111.2 并行效率指标17411.2.1 有效CPU利用率17411.2.2 线程数量17411.2.3 等待时间17511.2.4 自旋时间17511.3 使用Intel VTune Profile行 分析17511.3.1 寻找耗时锁17511.3.2 平台视图17811.4 使用Linux per行分析17811.5 使用Co行分析18111.6 使用eBPF和GAP行分析18111.7 检测一致性问题18211.7.1 缓存一致性协议18211.7.2 真共享18411.7.3 伪共享18411.8 本结186附录A?减少测量噪声188附录B?LLVM向量化程序193跋198术语0参考文献

参考文献