送书了:我会随机抽一位点赞朋友,赠送由图灵编辑部赞助的《计算机体系结构》一本,欢迎大家转发点赞!
如今聊 AI,很多话题最后都会落到同一个问题上:算力。
新模型发布,要比推理速度;AI 应用上线,要考虑响应时间和运行成本;芯片厂商推出新产品,大家又开始比较 GPU 性能、显存带宽、功耗和价格。
但这里有一个很容易被忽略的问题:我们究竟该如何判断一台计算机、一款芯片,或者一种新的技术架构,到底好在哪里?
是核心越多越好?峰值算力越高越好?还是采用的技术越先进,实际表现就一定越好?
如果你认真研究过计算机性能,就会发现,事情远没有这么简单。
这些问题,其实在一本出版了多年的计算机教材中,早就有过非常系统的讨论。这本书就是《计算机体系结构:量化研究方法》。
01 黄仁勋为什么会推荐一本计算机教材?
9 月 23 日,在《纽约时报》播客《The Ezra Klein Show》中,英伟达 CEO 黄仁勋接受了一场近两个小时的访谈。
临近结束时,主持人请他推荐三本书。
黄仁勋提到的第一本,不是商业管理著作,也不是企业家传记,而是 John L. Hennessy 和 David A. Patterson 合著的《计算机体系结构:量化研究方法》。
他解释说,这本书对自己产生了巨大影响,因为它把计算机体系结构这样复杂、抽象的概念,变成了可以真正付诸实践的工程问题。
这句话值得仔细琢磨。
对于大部分人来说,计算机体系结构听上去是一门非常硬核的学科。CPU、指令集、流水线、缓存、多处理器……光是这些名词,就足以让不少读者望而却步。
何况,这本书还有厚厚的一摞公式、图表和实验数据。
但如果因此把它理解成一本专门介绍计算机硬件知识的教材,就低估了它。
它真正想解决的,是一个非常实际的问题:面对复杂的计算系统,怎样知道什么设计更好,以及为什么更好?
这也是书名中“量化研究方法”几个字的意义。
02 这本书教你不要轻易相信性能更强
想象一个场景:现在有两款处理器,A 的峰值计算能力更高,B 的峰值计算能力稍弱。
应该选哪一个?
直觉告诉我们,当然是 A。
但如果真正运行一段程序,结果却发现 A 没有快多少,甚至不如 B 呢?
究竟哪里出了问题?
《计算机体系结构:量化研究方法》从第 1 章开始,就反复强调一个原则:“评价计算机,不能只看某项孤立的硬件参数,而要回到实际运行的程序和工作负载。”
书中明确指出,对于性能比较,实际程序的执行时间才是稳定、可靠的衡量标准。用其他指标替代真实的程序运行结果,可能造成误导。
这听起来很简单,但在实际技术讨论中,我们恰恰很容易忽略它。处理器主频高,不代表所有程序都跑得快。增加更多处理器核心,也不意味着性能就能按比例增加。理论计算能力惊人,更不等于实际应用能够充分利用这些能力。
书中有一个经典的理论工具:Amdahl 定律(阿姆达尔定律)。
它解释了为什么即便大幅加速某一部分工作,整体性能提升依然会受到限制。
例如,一项任务有 10% 的工作无法并行执行,那么即使其他 90% 的部分可以无限并行,整体加速比也不可能超过 10 倍。
问题不在于核心数量不够,而是有一部分工作根本无法通过增加核心来消除。
这也告诉我们一个很重要的道理:优化系统时,首先要知道真正限制性能的是什么,而不是把所有资源都投入到看起来最强的地方。
这本书的价值,正是让这种判断从经验和直觉,走向可以测量、计算、验证的工程分析。
03 为什么芯片算得越来越快,数据搬运却成了大问题?
在今天的 AI 计算中,我们经常会听到显存带宽、内存访问、数据传输等术语。
为什么处理器明明有那么强的计算能力,还要如此在意数据能不能及时送到?
书中有一组很有冲击力的数据。
在作者引用的技术条件下,一次 32 位浮点加法的能耗,大约是一次 8 位整数加法的 30 倍。
而从 DRAM 读写 32 位数据的能耗,大约是一次 8 位整数加法的 21333 倍。
这组数字来自书中图 1-6,对应的是特定工艺和硬件设计条件,并不代表今天所有芯片的实际能耗比例。
但它揭示了一个非常关键的问题:在计算机里,移动数据的代价,有时远远超过处理数据本身。
你可能拥有大量计算单元,能够快速完成乘法、加法等操作,但如果需要的数据不能及时送到,这些计算能力就无法得到充分利用。
这也是为什么存储器层次结构如此重要。
缓存、片上存储、DRAM,以及它们之间的数据传输,并不是计算系统里无关紧要的配角,而是决定实际性能和能耗的重要因素。
作者还介绍了一个非常实用的工具:屋檐性能模型(Roofline Model)。
它将处理器的峰值计算性能、存储器带宽以及程序的运算密度放在同一张图里,帮助读者判断:一个程序究竟受到计算能力限制,还是受到存储带宽限制。
这个模型并不意味着拿到三个指标就能准确预测所有程序的最终性能,但它能够给出一个重要的性能上限。
如果瓶颈在数据传输上,单纯增加计算能力,可能很难取得预期收益。如果瓶颈在计算能力上,继续增加内存带宽,也未必有意义。
学会这种分析方式,再去看各种芯片性能参数,理解就会完全不同。
04 为什么有了 CPU 和 GPU,还要专门设计 AI 芯片?
如果说前面的内容是在建立计算机性能分析的方法,那么书中第 7 章,很可能是 AI 时代的读者最值得关注的一章。
这一章的名字叫作《领域专用体系结构》。
作者讨论了一个重要变化:过去,通用处理器的性能持续高速增长,许多计算任务都能自然地享受到硬件升级的好处。
但随着功耗、能耗和制造技术逐渐遇到限制,单纯依靠通用处理器性能增长的道路越来越难走。
于是,一种新的思路变得更加重要:既然通用处理器不可能在所有任务上都达到最佳效果,为什么不针对某类任务,专门设计更适合它的硬件?
例如,深度神经网络需要大量重复的数学运算,而且在一些应用中,并不需要所有计算都使用很高的数据精度。
如果针对这样的计算特点设计硬件,就有机会减少不必要的开销,让更多芯片资源用于真正需要的计算。
书中把这种设计思路归纳为五条原则,包括减少数据移动距离、将资源投入更多运算单元或更大存储器、使用符合任务特点的并行方式、选择满足需求的数据精度,以及使用领域专用语言降低软件移植难度。
这些原则没有追求让一颗芯片完成所有事情,而是强调让它在特定领域内更高效地完成任务。
为了证明这种思路,作者没有停留在概念层面,而是给出了 Google TPU、Microsoft Catapult、Intel Crest 和 Pixel Visual Core 等实际案例。
其中最值得展开的是 Google TPU。
书中第 7.9 节直接把 TPU、Intel Haswell CPU 和 NVIDIA K80 GPU 放在一起,使用 Google 数据中心真实的深度神经网络工作负载进行比较。
这些测试涉及多层感知机、循环神经网络和卷积神经网络,并且考虑了实际服务对响应时间的要求。
结果显示,在书中采用的六种应用及其实际工作负载占比下,TPU 的加权平均推理性能约为 CPU 的 29.2 倍、GPU 的 15.3 倍。
这里必须强调:这些数字来自当时特定的芯片、工作负载和部署环境,不代表 TPU 在所有任务上都优于 GPU,更不能直接拿来比较今天的新款芯片。
但这个案例真正精彩的地方,恰恰不只是性能提升的倍数。
书中还分析了一个容易被忽略的事实:对实际在线服务而言,只有满足响应时间要求的吞吐量才有意义。
有些处理器可以通过增加批处理规模,提高单位时间内的总计算量,但单个请求等待的时间也可能随之增加。
如果超出应用允许的延迟,再高的吞吐量也未必有实际价值。
这与今天开发 AI 应用时遇到的问题并不遥远。
我们需要的不只是更高的理论算力,还包括能够满足真实业务需求的响应时间、吞吐量和成本。
而这,正是计算机体系结构研究的核心。
05 一本计算机教材,为什么还要研究数据中心的电费?
作者花了大量篇幅讨论仓库级计算机(Warehouse-Scale Computer)。它研究的对象不再是一颗处理器,也不再是一台服务器,而是由大量服务器、存储设备、网络设备以及供电和冷却设施组成的大规模计算系统。
书中甚至会讨论数据中心的配电、制冷、设备成本和运营费用。
为什么一本计算机体系结构教材,要研究这些看起来更接近机房建设和经营管理的问题?
因为当计算规模足够大时,单独研究一颗芯片的性能,已经不足以评价整个系统。
作者讨论了总拥有成本、能源使用效率,以及大规模计算系统的设计与运营。同样的性能提升,放到一台个人计算机上,可能只是让程序快一点;放到拥有海量计算资源的数据中心里,就可能产生完全不同的经济价值。
但为了得到这种收益,也可能需要付出额外的购买、供电、散热和维护成本。
所以,一个设计方案是否值得采用,不能脱离整体系统。
从处理器内部的一条指令,到整个数据中心的运行成本,这本书实际上在用同一种方法分析不同规模的问题:明确目标,找到限制条件,用真实数据评估设计,再作出取舍。
这也是为什么,它不是一本只关心芯片内部结构的教材。
06 这么大部头,普通程序员值得读吗?
读到这里,可能还是有人会犹豫:“我又不是芯片工程师,真的需要读这么专业的书吗?”
我认为,要看你希望从中获得什么。
如果你只是想学会调用大模型 API、搭建一个简单应用,那么这本书确实不是最直接的入门选择。
但如果你希望进一步理解计算系统的性能瓶颈,理解 CPU、GPU 和专用加速器之间的设计差异,或者弄明白为什么某项技术改进能够提升性能、降低能耗,那么这本书就值得认真研究。
尤其是做高性能计算、底层系统、性能优化、推理系统和 AI 基础设施相关工作的技术人员,会更容易从中找到与实际工作相关的内容。
而且,虽然它是一本高级教材,作者并没有要求读者从第一页开始,一口气读到最后一页。
在前言的“内容导读”中,作者明确提出,所有读者都应该从第 1 章开始,但除此之外,并不存在唯一的最佳阅读顺序。
对 AI 计算感兴趣,可以重点关注第 4 章的数据级并行、GPU 和屋檐性能模型,以及第7章的领域专用体系结构。
对大规模 AI 服务和基础设施感兴趣,可以进一步研究第 6 章的仓库级计算机。
对性能优化和硬件执行机制感兴趣,可以阅读第 2 章的存储器层次结构,以及第 3 章的指令级并行。
基础不够扎实,也不必硬着头皮直接进入复杂章节。书中附录 A、B、C 分别补充了指令集、存储器层次结构和流水线的基础知识。
另外,每一章都有很值得关注的“融会贯通”和“谬论与易犯错误”部分。
前者通过真实计算机系统解释设计思想,后者则专门分析那些看似正确、实际上可能导致错误判断的观点。
这两部分尤其适合希望先建立工程直觉、再逐步深入理论的读者。
当然,要完整掌握书中的分析方法,仍然需要一定的计算机基础和数学能力。但不必把完全理解每一个公式作为开始阅读的条件。
先从自己最关心的问题出发,再回到书中寻找解释,也是一条可行的阅读路径。
07 技术变化很快,但好的判断方法不会轻易过时
这本书的第 6 版英文原版出版于 2017 年,因此,部分硬件型号、性能数据和产业背景已经具有历史性。
今天的 AI 芯片、模型和计算基础设施,当然已经发生了巨大的变化。
但书中那些关于性能测量、数据移动、并行计算、能耗与成本权衡的基本原理,依然能够为理解新技术提供有价值的分析框架。
这也是我认为它最值得推荐的地方。
它没有试图告诉读者哪一款芯片永远最好,也不是教你记住某一代处理器的所有细节。
它更希望读者学会追问,一个设计为什么有效?它改善了什么指标?付出了什么代价?它在哪些工作负载下成立?又会受到什么限制?
这些问题,在计算机体系结构领域重要,在 AI 算力快速发展的今天,同样值得认真思考。
回头再看黄仁勋推荐这本书的理由,就不难理解了。
真正有价值的工程知识,不是让复杂的东西显得更加神秘,而是帮助人们把复杂问题拆解成可以分析、可以衡量、可以解决的问题。
《计算机体系结构:量化研究方法(第6版)》还是值得读的,不只是计算机体系结构的知识,更是一套面对复杂计算系统时,如何作出更好工程判断的方法。
这或许才是一本经典教材,能够持续影响一代又一代工程师的原因。

