图书前言

前言

通概念——通用可编程计算机——首次出现。

第二次世界大战爆发后,图灵继续在位于布莱切利园(Bletchley Park) 开展的盟军代码

破解工作中发挥了核心作用。在这个过程中,图灵(作为团队一员——别相信在电影中看

到的)卷入到大量专用硬件的研发工作中,包括机电炸弹机,这台机器加速了破解德国恩

尼格码密码的自动化进程。这些设备都没有使用图灵初始实验想法中的“有限状态机加无

限纸带”这种具体架构,但与实际执行相比,却更适于数学分析。不过,即使是纯粹的电

子巨人Colossus——如同炸弹机处理恩尼格码一样处理繁复冗杂的洛伦兹流密码——也没

有触及通用程序设计的边界。尽管如此,对于这一代理论工程师而言,当他们返回到平民

生活以后,使用真空管研发用于代码破解、雷达和火炮以及实现数字逻辑电路的大规模电

子系统的经历,使得他们极具革新能力。

在莫里斯·威尔克斯(Maurice Wilkes) 的带领下,位于剑桥大学数学实验室的一个工程

师小组着手搭建了电子延迟存储自动计算机(Electronic Delay Storage Automatic Computer, 

EDSAC) 。1949 年投入运行时,时钟频率达到500KHz ,通过两个温度控制水箱中的32 条

水印延迟线,构成了一个容量为2KB的易失性存储器。程序和代码可以通过纸带读写。

美国和英国的很多机构都可以狭隘地宣称自己首次研发出通用数字计算机,仅仅是标榜

“首次”。对于EDSAC,公开的声明指出,它是第一台将应用扩展到研发团队之外的计

算机。其他学科的学者可以申请时间在这台机器上运行他们自己的程序,并由此引入了以

计算为服务的概念。EDSAC之后研发了EDSAC II,然后是泰坦(Titan) 。直到20世纪60年

代,剑桥大学才停止从底层出发搭建自己的计算机,并开始从商业贸易商那里购买。这项

实际举措直接影响到目前计算机部门的名称:剑桥大学没有计算机科学系,大学里有一个

计算机实验室——威尔克斯早期数学实验室的延续。

对于计算机工程实践应用的专注,使得剑桥大学成为孕育新技术的沃土。很多新技术

在计算机实验室、工程系或者不同的数学和科学系(即使是我们的数学家也懂得如何进行

程序设计)中被提出来,由此吸引了大量跨国公司到此寻找工程技术人才。围绕剑桥大学

成长起来的公司网(有时被冠以剑桥产业集群、剑桥现象或硅藻等不同的称谓)代表了美国

硅谷之外的少量真正的技术集群之一。那台告诉我应当成为一名芯片设计师的BBC微型计

算机就是剑桥生产的,包括其长期的竞争对手——辛克莱频谱。你的手机(以及Raspberry 

Pi)就包含几个由立足于剑桥的ARM芯片公司设计的处理器。EDSAC问世70年之后,在英

国剑桥依然是高科技的家园。

言归正传

在我误打误撞所接受的计算机教育中,最大的缺失是对计算机工作过程的系统认识。

在从BASIC 开始深入到汇编语言时,我被汇编层面的抽象“困住”了。我可以控制Amiga 

计算机的硬件寄存器在屏幕上移动小精灵,但对于如何搭建一台自己的计算机则一头雾

水。在我花费了另一个十年的时间、取得了几个学位、离开学术界并到博通公司(一家在

剑桥启动并在此寻求工程技术人才的美国半导体公司)工作之后,我才搞清楚这个问题。

在这里,我的名片上印着“微电子芯片设计师”(实际上是更漂亮的称谓,“专用集成电

路架构师”)的字样。在此期间,我拥有良好的条件与大量该领域的娴熟的从业者一起工

作并向他们学习,包括索菲 威尔逊(Sophie Wilson) 

— 

原始ARM处理器和BBC微型计算

机(和Steve Furber一起)的设计师,还有博通3D图形硬件工程团队的Tim Mamtora,他提供

了本书图形处理单元(GPU)章节的内容。

很大程度上讲,撰写本书的目的在于阐述“它是如何工作的”这个话题,正如我18岁

时期望的那样。我们尝试覆盖所有现代计算机系统的主要部分,从CPU到易失性随机访问

存储器、稳定存储器、网络及接口,以一种中学学生或一年级大学生乐于阅读的方式呈现

出来。依托对当前技术发展水平的讨论,我们尝试提供一点历史性知识。绝大多数讨论的

话题(尽管不是全部,特别是在技术细节方面)都与1949年维尔克斯的EDSAC工程团队有关

系。阅读完本书后,你至少会对计算机的基本工作原理有所了解。我坚信你将发现加强这

方面理解的价值,即使你的目标职业是软件工程师并且从未打算设计一台自己的计算机。

如果不了解cache的作用,当工作组的大小超出cache或者分配的缓冲区耗尽了cache的关联

性时,程序性能的急速下降会令你很惊讶。如果对网络的工作过程一无所知,就很难为数

据中心构建一个高效网络。

关于哪些方面本书不会涉及,有必要花点时间阐述一下。对于任何涉及的话题,本

书都不是一本综合性技术参考书。关于cache设计、CPU流水线、编译器和网络堆栈,

可以编写(有人已经写过)整卷图书。相反,对于每个话题,我们尝试提供一种入门式的

讲解,并提供一些深入学习的建议。本书主要专注于通用计算机(本质上讲,PC机)的架

构。对于只对特殊目的和应用领域感兴趣的数字信号处理(DSP)和现场可编程阵列(Field 

Programmable Gate Array,FPGA)等话题,只进行了有限的覆盖。最后,涉及一点定量决

策过程的知识,这是良好的计算机架构的核心:如何在访问时间和cache大小之间折中,

或者决定是否允许某个子系统一致访问一个属于其他部件的cache?我们无法教你像架构

师一样思考。对于高级读者,Hennessy和Patterson的Computer Architecture: A Quantitative 

Approach是这方面不可或缺的参考资料。

曲线上的拐点

首先提出免责声明,此处我愿意分享多年来总结出的几点有益的指导原则。

在计算机架构中,像很多事情一样,有一个收益递减规律。当然,不论是以原始的

CPU性能、标准化为能量消耗的CPU性能、存储密度、晶体管尺寸还是媒介上的网络带宽

的形式,在任何时候,硬件对所完成的东西有一个限制。但情况往往是,在达到这些理论

限制前,工程应用上就会遇到收益递减问题:每一项新增的改进都来之不易,都会引起成

本和时间开销的提升。如果将研发成本、系统复杂性 (容易受到漏洞攻击) 或是为提升系

统性能而花费的资金绘成图,在某个位置曲线就会急剧弯曲下来。“拐点”的左侧,性能

以一种可预测(甚至是直线!)的方式响应花费支出,在右侧,随着努力的增加性能只是缓

慢提升,并逐渐逼近由基础技术限制带来的“墙壁”。

有时候找不到性能的替代品。例如阿波罗登月计划,就是工程学上一个极具吸引力的

实例。阿波罗登月计划在“拐点”右侧走出了相当远的距离,从根本上误导了旁观者对于

宇航技术成熟度的认识。直到今天——火箭技术、航空电子和材料科学持续发展了50年以

后——拐点已经移动了足够远的距离,才允许以合理的成本访问太空,甚至从月球返回。

虽然如此,那些以谦卑的态度准确定位拐点位置的团队,为市场带来简单、稳健而又流行

的工程系统,然后迅速更新换代,这些团队将最终战胜登月工程。

在对待架构方面,保守和更迭一直铭记于心。迄今为止,我们生产的三代Raspberry 

Pi芯片都严格地采用相同的系统基础架构、存储器控制器和多媒体,所做的改变只局限于

ARM内核的复杂性、少量致命缺陷的修复和时钟频率的提升。这里会出现一些博弈,因

为工程师(包括我自己)是富有激情的,他们总希望打破界限。优秀架构师的任务在于精确

把握颠覆性改变引发的风险代价,并与预期的利润进行权衡。

迈向基金会

2008 年,我们创建了Raspberry Pi 基金会,初始目标很简单:应对申请剑桥大学计算

机科学专业的学生数量逐步下降的问题。现在,我们看到了令人鼓舞的复苏信号,不论是

剑桥还是其他学校,申请数量都超过了20世纪90年代末网络热潮时期的峰值。

我们目睹的一个最显著的变化可能是,新一代年轻人比我们在20世纪80年代时对硬

件的兴趣还要高。编写一个汇编语言源程序,在屏幕上移动小精灵不再像以前那么有吸引

力,但是在地板上移动机器人却更令人兴奋。我们看到12岁的孩子构建我在20多岁时才引

以为豪的控制和传感器项目。我的愿望是,当这些年轻人坐在我孩童时期BBC Micro的新

生代面前规划职业生涯时,有一些人可以明白他们将成为优秀的微电子芯片设计师,本书

将帮助他们完成这趟旅行。

—Eben Upton,剑桥,2016.05