【免费下载链接】cpu-performance-engineering
A reading path for CPU performance engineering, from one instruction to production inference. Primary sources only, with a runnable benchmark for every section.
cpu-performance-engineering 是一个专为 CPU Performance Engineering(CPU 性能工程)设计的阅读路径项目:只收录一手资料(原始论文、厂商手册、官方仓库、作者实测报告),给出 10 份必读材料的正确阅读顺序,并为每个主要章节配备可运行的 benchmark,带你从"一条指令"一路走到"在 CPU 上跑模型推理"。这篇文章一次讲清这份书单怎么读、为什么这么读、以及如何在本地验证。
🎯 为什么只选"一手资料"
这份书单最核心的选品原则是Primary sources only:
- 描述某个机制的原始论文(而不是转述它的博客)
- 定义该机制的厂商手册与 ISA 规范(如 Intel Optimization Reference Manual)
- 机制实现所在的官方代码仓库
- 做过这项工作的人发布的带代码和数字的实测报告
并且每条性能数字必须带齐"七字段":CPU 型号、使用核心数、频率(含 turbo/SMT 状态)、编译器与 flags、workload、baseline、测量方法。缺一个字段,这个数字就不敢出现在仓库里。规则全文见 CONTRIBUTING.md。
💡 对新手最大的好处:你读到的每一个结论,都能追到源头、还能自己跑一遍复现。
📚 10 份一手资料清单(按阅读顺序)
完整条目在 misc/notes/sections/01-start-here.md 与主目录 README.md 的 "1. Start here" 章节,每条只有一行"它凭什么上榜"的说明:
| # | 资料 | 它解决什么问题 | 阶段 |
|---|---|---|---|
| 1 | Computer Architecture: A Quantitative Approach(第 7 版) | 建立 pipeline、hazard、推测执行、cache 的词汇表 | 心智模型 |
| 2 | Optimizing software in C++(Agner) | 为什么限制循环的是依赖链,而不是指令条数 | 心智模型 |
| 3 | Intel Optimization Reference Manual | 真实出货的 x86 核心如何落地教科书式流水线 | 心智模型 |
| 4 | What Every Programmer Should Know About Memory | 实测每一级 cache 边界的成本台阶与预取器收益 | 心智模型 |
| 5 | Memory Barriers: a Hardware View for Software Hackers | 为什么多核下 load/store 会重排、barrier 排掉什么 | 测量方法 |
| 6 | Systems Performance: Enterprise and the Cloud(第 2 版) | 方法先于工具:测什么、按什么顺序、benchmark 如何骗人 | 测量方法 |
| 7 | Roofline: An Insightful Visual Performance Model | 不读任何 counter,只用字节数和带宽就能给循环定界 | 建模 |
| 8 | A Top-Down Method for Performance Analysis(Yasin) | 把流水线 slot 拆成前端/坏推测/后端/retiring 四类 | 建模 |
| 9 | Performance Analysis and Tuning on Modern CPUs | 从噪声计时走到"点名的瓶颈",全书实操 | 实操 |
| 10 | What Has My Compiler Done for Me Lately? | 逐行对照源码与汇编,验证编译器到底做了什么 | 实操 |
第 1、6 是付费书(公认唯一可读的入门路径),第 3 是"只翻指定章节"的手册——项目明确标注了哪些要通读、哪些当参考书用。
🗺️ 正确阅读顺序:三个阶段的递进逻辑
书单不是随机排列的——"每条条目只假设你读完了它前面的条目"。可以把它理解成三步:
- 第 1~4 份:建立直觉。先懂"CPU 对每条指令做了什么",再懂"时间到底花在哪"。第 4 份尤其关键:它给出的"cache 边界成本台阶"曲线,就是后文基准测试要复现的形状。
- 第 5~8 份:测量与建模。多核重排(第 5)→ 系统级测量方法(第 6)→ Roofline 定界(第 7)→ Top-Down 定位(第 8)。到这里你才具备判断"某个数字可不可信"的能力。
- 第 9~10 份:闭环实操。第 9 份把前面所有方法套到完整程序上,第 10 份教会你读汇编输出——于是每一条机制都能在 listing 里被检查,而不是被"假设"。
之后按 README 的 2~16 章当作参考书查阅:微架构、内存层次、测量、并发、NUMA、OS 与 I/O、尾延迟,直到 CPU 推理(GEMM/BLAS、量化、AMX 与 SME 矩阵扩展、何时 CPU 胜过 GPU)。
⏱️ 用 14 个可运行 benchmark 验证书单
项目最大的特点是:每读到一个结论,都有对应的可复现实测。基准测试总览见 misc/benchmarks/README.md,目录结构为源码 + 构建行 + 运行脚本 + 机器描述 + 原始数据 + 分析。几个和书单直接呼应的例子:
- 04-cache-latency:随机指针追逐,工作集从 4 KiB 倍增到 1 GiB,L1→L2→DRAM 的成本台阶一目了然——正是第 4 份资料实测曲线的复现。
- 06-roofline:先实测"天花板",再跑 5 个算术强度递增的内核,验证第 7 份资料的 Roofline 预测。
- 08-autovectorization-aliasing:同一个循环加不加
restrict,向量化结果天差地别——第 10 份资料"读汇编"能力的直接练习。 - 13-sgemm-naive-vs-blas:朴素 GEMM、手写 microkernel 与厂商 BLAS 同场对比,是通往 CPU 推理章节的入口。
运行方式(C11 + pthreads,x86-64 与 arm64 均可编译):
./run_all.sh:串行跑全部基准测试QUICK=1 ./run_all.sh:小尺寸冒烟测试,每项 10 秒内
计时统一使用clock_gettime(CLOCK_MONOTONIC_RAW),预热后至少 10 次重复取 min/median,并输出变异系数——这些细节本身就是在示范第 6 份资料讲的"方法先于工具"。
✅ 使用这份书单的检查清单
- 先通读README.md 的第 1 章,把 10 份资料的顺序和理由过一遍,再按编号章节查参考。
- 读完一份,跑一个:书单每条"Reproduce it"行都指向
misc/benchmarks/下的对应目录,边读边验证。 - 引用任何数字前先核对七字段:CPU 型号、核心数、频率/turbo/SMT、编译器与 flags、workload、baseline、测量方法——缺一项就当它不存在。
- 区分"付费"与"手册":第 1、6 是需要通读的书,第 3 只需按章节查,别一上来就啃。
按这个顺序走,你会在几个月内建立起"从单条指令到生产级 CPU 推理"的完整证据链——这正是 CPU Performance Engineering 的核心。
【免费下载链接】cpu-performance-engineering
A reading path for CPU performance engineering, from one instruction to production inference. Primary sources only, with a runnable benchmark for every section.
相关推荐
awesome-postgres书籍推荐:从入门到精通的10本必读书籍
awesome postgres书籍推荐:从入门到精通的10本必读书籍 PostgreSQL作为业界领先的开源关系型数据库,以其强大的功能、稳定性和扩展性赢得了
文档知识库数据库eSearch与Snipaste对比:功能差异与优势分析
eSearch与Snipaste对比:功能差异与优势分析 引言:屏幕工具的选择困境 在日常工作和学习中,我们经常需要处理屏幕内容——截图标注、文字识别、信息搜索
文档教程系统设计书籍推荐:从入门到架构师的必读清单
系统设计书籍推荐:从入门到架构师的必读清单 为什么系统设计书籍如此重要? 系统设计(System Design)是构建可扩展、高性能、可靠系统的核心能力,也是大
文档教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考