热门搜索: 中考 高考 考试 开卷17
服务电话 024-23945002/96192
 

现代CPU性能分析与优化(原书第2版)

编号:
wx1204429781
销售价:
¥113.50
(市场价: ¥129.00)
赠送积分:
114
数量:
   
商品介绍

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

本书聚焦现代CPU底层性能优化核心需求,分为性能分析与源代码调优两大部分,构建了从理论到实操的完整知识体系:第一部分深入解析CPU微架构(流水线、缓存层次、SIMD 等)、性能指标(IPC、CPI、缓存未命中)、分析方法(TMA、采样、追踪)及跨平台工具(VTune、perf、uProf);第二部分聚焦内存访问优化、计算优化、分支预测优化、多线程应用调优等落地技术。相较上一版,本书新增20多个实验练习与“Performance Ninja”在线课程,补充AMD、ARM架构适配内容及系统级性能优化,突破第1版Intel架构局限。书中融入Google、Netflix等大厂案例,配套Python/SQL代码示例与工具实操方案,既覆盖基础原理,又深挖前沿技术(如大页、SIMD向量化、缓存一致性),兼具理论深度与工程实用性,是高性能计算、AI、游戏开发等领域从业者的必备指南。

丹尼斯·巴赫瓦洛夫(Denis Bakhvalov)<br />性能优化专家,拥有近20年行业经验。现任Meta性能工程师,负责AI推理工作负载的性能优化。在加入Meta之前,他曾在Intel任职近8年,历任C++编译器开发工程师、性能工程师等多个岗位。任职期间,他为广泛应用于生产环境的应用程序和基准测试实现了显著的性能提升。<br />软件与硬件协同性能优化一直是他最主要的兴趣领域。2016年,他创建了博客easyperf.net,专注于分享底层性能优化、C/C++编译器以及CPU微架构相关内容。<br />业余时间,他喜欢踢足球、下国际象棋和旅行。

目  录 Contents <br />译者序<br />前言<br />致谢<br />作者简介<br />第1章 导读1<br />1.1 为什么软件很慢2<br />1.2 为什么要关注性能5<br />1.3 什么是性能分析8<br />1.4 什么是性能调优8<br />1.5 本书讨论了什么10<br />1.6 本书未讨论的内容11<br />1.7 练习12<br />1.8 本章总结13<br />第一部分 现代CPU性能分析<br />第2章 性能测量16<br />2.1 现代系统中的噪声17<br />2.2 在生产环境中测量性能19<br />2.3 持续基准测试20<br />2.4 手动性能测试23<br />2.5 软件计时器和硬件计时器27<br />2.6 微基准测试28<br />2.7 主动基准测试30<br />2.8 问题与练习31<br />2.9 本章总结31<br />第3章 CPU微架构33<br />3.1 指令集架构33<br />3.2 流水线34<br />3.3 利用指令级并行性37<br />3.3.1 乱序执行38<br />3.3.2 超标量引擎40<br />3.3.3 投机执行41<br />3.3.4 分支预测42<br />3.4 SIMD多处理器44<br />3.5 利用线程级并行性46<br />3.5.1 多核系统47<br />3.5.2 同步多线程48<br />3.5.3 混合架构50<br />3.6 存储器层次51<br />3.6.1 缓存层次51<br />3.6.2 主存55<br />3.7 虚拟内存59<br />3.7.1 转译后备缓冲区61<br />3.7.2 大页62<br />3.8 现代CPU设计63<br />3.8.1 CPU前端64<br />3.8.2 CPU后端65<br />3.8.3 加载-存储单元68<br />3.8.4 TLB层次71<br />3.9 性能监控单元72<br />3.10 问题与练习75<br />3.11 本章总结75<br />第4章 性能分析中的术语和<br />指标77<br />4.1 已退休指令与已执行指令78<br />4.2 CPU利用率78<br />4.3 IPC和CPI79<br />4.4 微操作81<br />4.5 流水线槽位83<br />4.6 核心时钟周期与参考时钟周期83<br />4.7 缓存未命中84<br />4.8 分支预测错误85<br />4.9 性能指标86<br />4.10 内存延迟和带宽89<br />4.11 案例研究:四个基准测试的<br />性能指标分析92<br />4.12 问题与练习98<br />4.13 本章总结98<br /><br />第5章 性能分析方法100<br />5.1 代码插桩101<br />5.2 追踪105<br />5.3 采集性能监控事件107<br />5.3.1 事件的时分复用和<br />缩放108<br />5.3.2 使用标记API109<br />5.4 采样114<br />5.4.1 用户模式与基于硬件<br />事件的采样114<br />5.4.2 发现热点115<br />5.4.3 采集调用栈117<br />5.5 屋顶线性能模型119<br />5.6 静态性能分析123<br />5.7 编译器优化报告127<br />5.8 问题与练习130<br />5.9 本章总结131<br />第6章 CPU性能分析特性133<br />6.1 自顶向下微架构分析135<br />6.1.1 Intel平台上的TMA136<br />6.1.2 AMD平台上的TMA142<br />6.1.3 ARM平台上的TMA144<br />6.1.4 TMA总结148<br />6.2 分支记录机制149<br />6.2.1 Intel平台上的LBR151<br />6.2.2 AMD平台上的LBR153<br />6.2.3 ARM平台上的BRBE154<br />6.2.4 捕获调用栈154<br />6.2.5 识别热点分支155<br />6.2.6 分析分支预测错误率156<br />6.2.7 机器码的精确计时157<br />6.2.8 评估分支结果概率160<br />6.2.9 提供编译器反馈数据160<br />6.3 基于硬件的采样功能161<br />6.3.1 Intel平台上的PEBS161<br />6.3.2 AMD平台上的IBS163<br />6.3.3 ARM平台上的 SPE164<br />6.3.4 精确事件165<br />6.3.5 分析内存访问166<br />6.4 问题和练习167<br />6.5 本章总结167<br />第7章 性能分析工具概述169<br />7.1 Intel VTune Profiler170<br />7.2 AMD uProf174<br />7.3 Apple Xcode Instruments176<br />7.4 Linux perf180<br />7.5 火焰图181<br />7.6 Windows 事件追踪182<br />7.7 专用剖析器与混合剖析器184<br />7.8 内存剖析191<br />7.8.1 内存使用情况191<br />7.8.2 案例研究:分析Stockfish的堆内存分配193<br />7.8.3 内存强度与内存占用196<br />7.9 持续性能剖析199<br />7.10 问题与练习202<br />7.11 本章总结203<br /><br />第二部分 源代码调优<br />第8章 优化内存访问211<br />8.1 缓存友好的数据结构212<br />8.1.1 顺序访问数据212<br />8.1.2 使用适当的容器213<br />8.1.3 数据打包214<br />8.1.4 字段重排215<br />8.1.5 其他数据结构重构<br />方法216<br />8.2 动态内存分配217<br />8.3 规避内存带宽限制219<br />8.4 减少DTLB未命中220<br />8.4.1 显式大页221<br />8.4.2 透明大页222<br />8.4.3 显式大页与透明大页224<br />8.5 显式内存预取224<br />8.6 问题与练习229<br />8.7 本章总结229<br />第9章 计算优化230<br />9.1 数据依赖231<br />9.2 内联函数236<br />9.3 循环优化240<br />9.3.1 低级优化240<br />9.3.2 高级优化242<br />9.3.3 发现循环优化机会245<br />9.4 向量化246<br />9.4.1 编译器自动向量化246<br />9.4.2 发现向量化机会248<br />9.5 编译器内置函数255<br />9.6 问题与练习258<br />9.7 本章总结259<br />第10章 优化分支预测260<br />10.1 用查找表替换分支262<br />10.2 用算术运算替换分支263<br />10.3 用条件选择替换分支263<br />10.4 多重测试单一分支266<br />10.5 问题与练习268<br />10.6 本章总结269<br />第11章 机器码布局优化270<br />11.1 机器码布局271<br />11.2 基本块271<br />11.3 基本块布局272<br />11.4 基本块对齐274<br />11.5 函数拆分276<br />11.6 函数重排278<br />11.7 反馈式优化279<br />11.8 减少ITLB未命中282<br />11.9 案例研究:测量代码占用<br />空间284<br />11.10 问题与练习287<br />11.11 本章总结288<br />第12章 其他调优领域289<br />12.1 针对特定CPU的优化289<br />12.1.1 ISA扩展291<br />12.1.2 CPU特性动态分发292<br />12.1.3 指令延迟和吞吐量293<br />12.2 微架构特定的性能问题295<br />12.2.1 内存顺序冲突296<br />12.2.2 非对齐内存访问297<br />12.2.3 缓存别名300<br />12.2.4 浮点运算速度慢302<br />12.3 低延迟调优技术304<br />12.3.1 避免次要缺页305<br />12.3.2 缓存预热307<br />12.3.3 避免TLB击落308<br />12.3.4 防止无意的核心<br />降频309<br />12.4 系统调优310<br />12.5 案例研究:LLC大小的敏感度<br />分析311<br />12.6 问题与练习317<br />12.7 本章总结317<br />第13章 优化多线程应用程序318<br />13.1 并行效率指标319<br />13.2 多线程程序的性能扩展321<br />13.3 任务调度335<br />13.4 缓存一致性338<br />13.4.1 缓存一致性协议338<br />13.4.2 真共享340<br />13.4.3 伪共享340<br />13.5 高级分析工具343<br />13.5.1 Coz343<br />13.5.2 eBPF和GAPP344<br />13.6 问题与练习345<br />13.7 本章总结345<br />附 录<br />附录A 减少测量噪声348<br />附录B 启用大页352<br />附录C Intel处理器追踪355<br />附录D Windows事件追踪分析361<br />跋368<br />术语表371<br />主流CPU微架构列表373<br />参考文献375<br />

商品参数
基本信息
出版社 机械工业出版社
ISBN 9787111807711
条码 9787111807711
编者 [美]丹尼斯·巴赫瓦洛夫(Denis Bakhvalov) 著 朱金鹏 李成栋 俞峰 译
译者
出版年月 2026-06-01 00:00:00.0
开本 16开
装帧 平装
页数 380
字数 434
版次 1
印次 1
纸张
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]