☰
CPU Performance Engineering 书单:10 份必读一手资料,从入门到 CPU 推理的正确阅读顺序
2026/10/15 12:19:03 网站建设 项目流程

【免费下载链接】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.

项目地址:https://gitcode.com/gh_mirrors/cp/cpu-performance-engineering
点击查看免费下载

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" 章节,每条只有一行"它凭什么上榜"的说明:

#资料它解决什么问题阶段
1Computer Architecture: A Quantitative Approach(第 7 版)建立 pipeline、hazard、推测执行、cache 的词汇表心智模型
2Optimizing software in C++(Agner)为什么限制循环的是依赖链,而不是指令条数心智模型
3Intel Optimization Reference Manual真实出货的 x86 核心如何落地教科书式流水线心智模型
4What Every Programmer Should Know About Memory实测每一级 cache 边界的成本台阶与预取器收益心智模型
5Memory Barriers: a Hardware View for Software Hackers为什么多核下 load/store 会重排、barrier 排掉什么测量方法
6Systems Performance: Enterprise and the Cloud(第 2 版)方法先于工具:测什么、按什么顺序、benchmark 如何骗人测量方法
7Roofline: An Insightful Visual Performance Model不读任何 counter,只用字节数和带宽就能给循环定界建模
8A Top-Down Method for Performance Analysis(Yasin)把流水线 slot 拆成前端/坏推测/后端/retiring 四类建模
9Performance Analysis and Tuning on Modern CPUs从噪声计时走到"点名的瓶颈",全书实操实操
10What Has My Compiler Done for Me Lately?逐行对照源码与汇编,验证编译器到底做了什么实操

第 1、6 是付费书(公认唯一可读的入门路径),第 3 是"只翻指定章节"的手册——项目明确标注了哪些要通读、哪些当参考书用。

🗺️ 正确阅读顺序:三个阶段的递进逻辑

书单不是随机排列的——"每条条目只假设你读完了它前面的条目"。可以把它理解成三步:

  1. 第 1~4 份:建立直觉。先懂"CPU 对每条指令做了什么",再懂"时间到底花在哪"。第 4 份尤其关键:它给出的"cache 边界成本台阶"曲线,就是后文基准测试要复现的形状。
  2. 第 5~8 份:测量与建模。多核重排(第 5)→ 系统级测量方法(第 6)→ Roofline 定界(第 7)→ Top-Down 定位(第 8)。到这里你才具备判断"某个数字可不可信"的能力。
  3. 第 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 份资料讲的"方法先于工具"。

✅ 使用这份书单的检查清单

  1. 先通读README.md 的第 1 章,把 10 份资料的顺序和理由过一遍,再按编号章节查参考。
  2. 读完一份,跑一个:书单每条"Reproduce it"行都指向misc/benchmarks/下的对应目录,边读边验证。
  3. 引用任何数字前先核对七字段:CPU 型号、核心数、频率/turbo/SMT、编译器与 flags、workload、baseline、测量方法——缺一项就当它不存在。
  4. 区分"付费"与"手册":第 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.

项目地址:https://gitcode.com/gh_mirrors/cp/cpu-performance-engineering
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询