还在为程序运行缓慢、性能瓶颈难以定位发愁?这本《现代CPU性能分析与优化(原书第2版)》是底层发从业者的优质参考。全书从CPU微架构讲起,系统梳理IPC、缓存、分支预测等核心性能指标,详解代码插桩、采样、追踪等主流分析方法,同时讲解Linux perf等常用工具的实操技巧。书中搭配大量真实案例、指令示例与基准测试场景,理论结合实操,层层拆解性能问题的排查与优化思路。无论是后端发、编译器工程师,还是运维、架构师,都能从中掌握专业的性能分析能力,学会从硬件视角优化代码,有效提升程序运行效率,是阶路上不可或缺的技术好书。
售 价:¥
纸质售价:¥92.90购买纸书
6.5
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐

Preface 译者序
Preface 前言
acknowledgements 致谢
authors 作者简介
Chapter 1 第1章 导读
1.1 为什么软件很慢
1.2 为什么要关注性能
1.3 什么是性能分析
1.4 什么是性能调优
1.5 本书讨论了什么
1.6 本书未讨论的内容
1.7 练习
1.8 本章总结
第一部分 现代CPU性能分析
Chapter 2 第2章 性能测量
2.1 现代系统中的噪声
2.2 在生产环境中测量性能
2.3 持续基准测试
2.4 手动性能测试
2.5 软件计时器和硬件计时器
2.6 微基准测试
2.7 主动基准测试
2.8 问题与练习
2.9 本章总结
Chapter 3 第3章 CPU微架构
3.1 指令集架构
3.2 流水线
3.3 利用指令级并行性
3.3.1 乱序执行
3.3.2 超标量引擎
3.3.3 投机执行
3.3.4 分支预测
3.4 SIMD多处理器
3.5 利用线程级并行性
3.5.1 多核系统
3.5.2 同步多线程
3.5.3 混合架构
3.6 存储器层次
3.6.1 缓存层次
3.6.2 主存
3.7 虚拟内存
3.7.1 转译后备缓冲区
3.7.2 大页
3.8 现代CPU设计
3.8.1 CPU前端
3.8.2 CPU后端
3.8.3 加载-存储单元
3.8.4 TLB层次
3.9 性能监控单元
3.10 问题与练习
3.11 本章总结
Chapter 4 第4章 性能分析中的术语和指标
4.1 已退休指令与已执行指令
4.2 CPU利用率
4.3 IPC和CPI
4.4 微操作
4.5 流水线槽位
4.6 核心时钟周期与参考时钟周期
4.7 缓存未命中
4.8 分支预测错误
4.9 性能指标
4.10 内存延迟和带宽
4.11 案例研究:四个基准测试的性能指标分析
4.12 问题与练习
4.13 本章总结
Chapter 5 第5章 性能分析方法
5.1 代码插桩
5.2 追踪
5.3 采集性能监控事件
5.3.1 事件的时分复用和缩放
5.3.2 使用标记API
5.4 采样
5.4.1 用户模式与基于硬件事件的采样
5.4.2 发现热点
5.4.3 采集调用栈
5.5 屋顶线性能模型
5.6 静态性能分析
5.7 编译器优化报告
5.8 问题与练习
5.9 本章总结
Chapter 6 第6章 CPU性能分析特性
6.1 自顶向下微架构分析
6.1.1 Intel平台上的TMA
6.1.2 AMD平台上的TMA
6.1.3 ARM平台上的TMA
6.1.4 TMA总结
6.2 分支记录机制
6.2.1 Intel平台上的LBR
6.2.2 AMD平台上的LBR
6.2.3 ARM平台上的BRBE
6.2.4 捕获调用栈
6.2.5 识别热点分支
6.2.6 分析分支预测错误率
6.2.7 机器码的精确计时
6.2.8 评估分支结果概率
6.2.9 提供编译器反馈数据
6.3 基于硬件的采样功能
6.3.1 Intel平台上的PEBS
6.3.2 AMD平台上的IBS
6.3.3 ARM平台上的SPE
6.3.4 精确事件
6.3.5 分析内存访问
6.4 问题和练习
6.5 本章总结
Chapter 7 第7章 性能分析工具概述
7.1 Intel VTune Profiler
7.2 AMD uProf
7.3 Apple Xcode Instruments
7.4 Linux perf
7.5 火焰图
7.6 Windows事件追踪
7.7 专用剖析器与混合剖析器
7.8 内存剖析
7.8.1 内存使用情况
7.8.2 案例研究:分析Stockfish的堆内存分配
7.8.3 内存强度与内存占用
7.9 持续性能剖析
7.10 问题与练习
7.11 本章总结
第二部分 源代码调优
Chapter 8 第8章 优化内存访问
8.1 缓存友好的数据结构
8.1.1 顺序访问数据
8.1.2 使用适当的容器
8.1.3 数据打包
8.1.4 字段重排
8.1.5 其他数据结构重构方法
8.2 动态内存分配
8.3 规避内存带宽限制
8.4 减少DTLB未命中
8.4.1 显式大页
8.4.2 透明大页
8.4.3 显式大页与透明大页
8.5 显式内存预取
8.6 问题与练习
8.7 本章总结
Chapter 9 第9章 计算优化
9.1 数据依赖
9.2 内联函数
9.3 循环优化
9.3.1 低级优化
9.3.2 高级优化
9.3.3 发现循环优化机会
9.4 向量化
9.4.1 编译器自动向量化
9.4.2 发现向量化机会
9.5 编译器内置函数
9.6 问题与练习
9.7 本章总结
Chapter 10 第10章 优化分支预测
10.1 用查找表替换分支
10.2 用算术运算替换分支
10.3 用条件选择替换分支
10.4 多重测试单一分支
10.5 问题与练习
10.6 本章总结
Chapter 11 第11章 机器码布局优化
11.1 机器码布局
11.2 基本块
11.3 基本块布局
11.4 基本块对齐
11.5 函数拆分
11.6 函数重排
11.7 反馈式优化
11.8 减少ITLB未命中
11.9 案例研究:测量代码占用空间
11.10 问题与练习
11.11 本章总结
Chapter 12 第12章 其他调优领域
12.1 针对特定CPU的优化
12.1.1 ISA扩展
12.1.2 CPU特性动态分发
12.1.3 指令延迟和吞吐量
12.2 微架构特定的性能问题
12.2.1 内存顺序冲突
12.2.2 非对齐内存访问
12.2.3 缓存别名
12.2.4 浮点运算速度慢
12.3 低延迟调优技术
12.3.1 避免次要缺页
12.3.2 缓存预热
12.3.3 避免TLB击落
12.3.4 防止无意的核心降频
12.4 系统调优
12.5 案例研究:LLC大小的敏感度分析
12.6 问题与练习
12.7 本章总结
Chapter 13 第13章 优化多线程应用程序
13.1 并行效率指标
13.2 多线程程序的性能扩展
13.3 任务调度
13.4 缓存一致性
13.4.1 缓存一致性协议
13.4.2 真共享
13.4.3 伪共享
13.5 高级分析工具
13.5.1 Coz
13.5.2 eBPF和GAPP
13.6 问题与练习
13.7 本章总结
附录
Chapter a 附录 A 减少测量噪声
Chapter B 附录 B 启用大页
Chapter C 附录 C Intel处理器追踪
Chapter D 附录 D Windows事件追踪分析
跋
术语表
主流CPU微架构列表
参考文献
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜