SICI · 天机门 · 第十六章

性能分析与优化方法 · 结丹五层

你以为跑分高就是快。但性能测量充满了陷阱——均值、加权、基准选择都可能误导。度量的陷阱不在数据里,在选择里。

测量之谬低语:「数字大的快。挑一个。」
序章

跑分神殿

一个数字定胜负?响应时间还是吞吐量?

神殿穹顶悬着一块巨大的数字盘,上面只有一个数字在跳动——跑分。数字盘下面排着五座石台,各浮着一块处理器晶核。

分布之网,分布式系统
诺依曼老祖 诺依曼老祖

「你先挑。挑完再测。」

测量之谬 测量之谬

「数字大的快。挑一个。你连那个数字量的是什么都没问,对吧?」

跑分神殿预测挑战器

单数下注(五选一)→ 石台翻转露真容 → 双轴重排(响应时间轴/吞吐量轴)

测量之谬逼你下注:五块处理器,跑分高的最快?
第一幕 · 自信→崩塌

测速台 · MIPS之谎

CPU时间=IC×CPI×T_cycle,MIPS高的反而更慢?

石径尽头是一座悬空石台,台上立着三旋钮测速仪:左盘"指令数"、中盘"每指令周期数"、右盘"时钟周期"。

诺依曼老祖 诺依曼老祖

「别看跑分了。自己算——一个程序跑完要多久,被几样东西决定?」

测量之谬 测量之谬

「MIPS嘛,百万指令每秒。数字大的快。这还用想?」

CPU性能公式三旋钮实验台

预测二选一 → 三旋钮控制变量实验 → 公式因子拖拽组装 → MIPS陷阱对比验证

A的MIPS=1000,B的MIPS=600。谁更快?
第一幕 · 撞墙

加速殿 · Amdahl之墙

串行部分决定一切——95%可并行,1000核也只能快20倍

殿中央竖着一面巨大的石墙,墙面上刻着一行字:"串行部分决定一切。"墙前摆着并行加速器。

诺依曼老祖 诺依曼老祖

「你ch15搭过多核。现在算算——加到100个核,能快多少?」

测量之谬 测量之谬

「100个核,100倍嘛。线性叠加,这不是明摆着吗?」

Amdahl-Gustafson加速曲线追踪器

双旋钮加速实验台(p×n)→ Amdahl公式分步推导 → Gustafson曲线对比翻转

100个核,能加速100倍吗?
第一幕 · 谷底

基准场 · 均值陷阱

算术平均两头骗,几何平均才满足互反一致性

场地中央排着六座基准石碑:SPECint、SPECfp、Dhrystone、Whetstone、STREAM、LMbench。

诺依曼老祖 诺依曼老祖

「六块基准,两台机器A和B。A在有些基准上快、在有些上慢。你给个总评——谁更快?」

测量之谬 测量之谬

「取个平均不就行了?算术平均,小学就会。」

基准认识 · 算术/几何平均切换

点亮六座基准石碑 → 算术平均陷阱(两头骗)→ 几何平均互反一致性

第二幕 · 重获掌控

计数室 · 硬件之眼

性能计数器——处理器自己的眼睛,CPI不是黑箱

石室四壁嵌满微型水晶窗,每扇窗后是一个硬件计数器——周期数、指令数、Cache缺失数、分支预测失败数。

诺依曼老祖 诺依曼老祖

「合成基准是假的,跑分是别人选的。但处理器自己有眼睛——这些计数器,它每跑一个周期就数一笔,不会骗你。」

测量之谬 测量之谬

「好,你看见数据了。但数据告诉你发生了什么,不告诉你为什么。」

性能计数器 · CPI分解

点亮四类计数器水晶窗 → CPI分解(基础+L1+L2+分支+其他)→ 真实测量对比

第二幕 · 误导

瓶颈渊 · 阿喀琉斯之踵

最热的不等于最该优化的——瓶颈由Amdahl定律决定

渊底悬着一张巨大的系统剖面图,渊壁上嵌着CPUlator——一台架构模拟器,能量化"改了某个参数后性能变多少"。

诺依曼老祖 诺依曼老祖

「计数器告诉你每层花了多少时间。但哪层是瓶颈?不是最亮的那层——是最该优化的那层。」

瓶颈渊CPUlator三旋钮实验台

三旋钮(优化目标/优化倍数/场景)→ 实时加速比 → 瓶颈迁移 → Amdahl回扣

优化目标
优化倍数 n
n = 2x
第二幕 · 再崩塌

能效塔 · 功耗之墙

P∝f³,5GHz热熔——更快不等于更好

能效塔中央是一根频率柱,从1GHz标到6GHz。柱旁一面功耗仪表盘,刻度从10W到300W。

诺依曼老祖 诺依曼老祖

「你一路优化瓶颈、提升频率。但频率不是免费的——每一次提速,都在买热量。」

测量之谬 测量之谬

「拉满它。更快就是更好。热?加风扇不就行了?」

频率-功耗实验 · EDP拐点

拖频率旋钮(1-6GHz)→ 功耗立方增长 → 找EDP拐点 → TOPS/W对比

功耗 = 30 W 延迟 = 1.00 s EDP = 30.0
第二幕 · 权衡

三角阵 · PPA之衡

性能、功耗、面积——三者不能同时最优

三角阵中央悬着一个等边三角形,三个顶点各亮着一盏灯:性能(P)、功耗(P)、面积(A)。

诺依曼老祖 诺依曼老祖

「你撞了功耗墙。但你不是只有频率一条路。面积、功耗、性能——三样东西,你只能选两个。」

PPA三角权衡 · 三场景投放

拖三角顶点感受拉扯 → 三场景芯片投放 → 机会成本标记

第三幕 · 整全

方法阁 · 系统之道

七层优化栈 + 模拟/仿真/分析模型三镜

阁中悬着一张七层栈图,阁壁上排着三面镜子:模拟、仿真、分析模型。

诺依曼老祖 诺依曼老祖

「你一路从MIPS走到功耗墙,每一步都是被陷阱逼着学的。现在——把它们装进一个框架。」

七层优化栈 · 三镜评估

逐层点击七层栈 → 三镜精度-速度对比 → 优化第一原则

第三幕 · 最高潮

Boss 战 · 测量之谬

三问对决 · 排除法收网 · Roofline破局

方法阁灯火齐灭。谬雾从四面八方压过来,凝成一张巨大的、没有五官的脸——脸上戴着你在S0戴上的那块跑分面具。

测量之谬 测量之谬

「我是测量之谬。我不住在你的无知里——数据是死的,救不了我。我住在你'以为数据自己会说话'的地方。你每选一个基准、每选一种平均、每选一个指标,你以为你在'测量'性能——不,你在'定义'性能。而定义权,是我的。」

渊账累计 0 笔 · 三问全对后清零

第三幕 · 收束

尾声 · 度量之门

结丹五层·性能度量·圆满——下一章:谁来管性能?

谬雾散尽时你手里多了一张Roofline图——不是它变了,是你变了。图上两个屋顶清晰可见,像两条地平线。

诺依曼老祖 诺依曼老祖

「你结丹五层圆满了。不是因为你答对了三问——答对的会忘。是因为你摔过的每一道度量陷阱,都刻在你眼睛上了。但——你能量化处理器有多快了。可你知道,是谁在把你的程序变成处理器的指令?是谁在分配内存、调度任务、管理那些性能计数器?」

知识图谱点亮 · 度量之悟

点亮全章12块碎片 → Roofline剪影定格 → 境界突破