玛里琳?沃尔夫(Marilyn Wolf)佐治亚理工学院教授,佐治亚研究联合会很好学者。她分别于1980年、1981年和1984年获得斯坦福大学工程士学、硕士和博士。1984年至1989年任职于贝尔实验室。1989年至2007年执教于普林斯顿大学。她是IEEE和ACM会士、IEEE计算机协会核心成员以及ASEE和SPIE成员。她于2003年获得ASEE Frederick E.Terman奖,于2006年获得IEEE电路与系统教育奖。她的研究兴趣主要包括嵌入式计算、嵌入式视频和计算机视觉、VLSI系统。
前 言The Physics of Computing本书试图从更广泛、更基础的角度来描述计算机工程。一直以来,计算机系统设计采用的都是示例驱动的方法,大量软件都遵循从理论到实现的设计过程——比如排序算法。以前,我们并不能十分确定计算机系统设计中的一些关键问题,因此需要针对特定的系统需求进行分析研究,但是现在,我们已经能够对其中的许多问题进行普适描述。本书中计算机工程设计方法的核心则是那些更基础的理论。 数字系统的基本原理是我们学习的重中之重,因为现在我们已经很难再触摸到或看到逻辑电路层面的操作。当我还是学生的时候,大多数系统由电路板搭建而成,而电路板则由小规模集成(SSI)逻辑电路和中规模集成(MSI)逻辑电路组成。我们当时别无选择,必须通过分析电路和信号波形来解决问题。而现在,所有东西都隐藏在一块芯片里面,即使对于电路板来说,连线也更细并且更难以分析。今天,许多学生只知道芯片中处理的是“0”和“1”,而对计算机系统中的电压与电流毫无概念。 本书并不要求学生设计任何东西,而是将带领学生研究决定计算机系统设计空间的基本原理。我认为这些基本原理相对于计算机系统就像控制面板上的旋钮相对于仪表一样:改变旋钮的设置会导致仪表数值发生变化,并且一个旋钮可能会影响几个仪表数值。想想看,这就像是降低MOS电介质厚度之后的连锁效应:晶体管跨导发生变化,进而缩短门电路的延迟,却增大了泄漏电流。 不能只在理想情况下进行系统设计,而应该关注一系列的指标或需求。计算机架构设计的经典指标是能,或者更准确地说是吞吐量。但实际设计时还必须兼顾一些指标,其中重要的就是耗以可靠。能、功耗和可靠都是底层物理现象的基础,并与物理实现有着千丝万缕的联系:改善其中一个指标可能会导致指标恶化。就像一句老话,天下没有免费的午餐,这也同样适用于计算机系统设计领域。 计算机工程是一个相对较新的研究领域,刚开始时往往专注于如何设计与归类——如实现某个系统,或者通过不同方式实现某个系统。随着该领域的逐渐成熟,现在可以开始研究其基本原理了。生物学家E. Wilson曾说过,“一个领域初由提出的问题定义,但则由这个问题的确定。”计算机工程设计领域经过70年的发展,是时候开始思考这个了。 我关注计算机系统设计领域很长时间了。多年来,能一直是计算机系统设计重要的指标,当然,在ASIC设计领域则更关注面积(也就是成本)。在Perry Cook教授和我开设的关于普适信息系统的课程中,我开始更加认真地考虑限制因素,特别是功耗。佐治亚理工学院的这门新课程推动我把这一思路完善成合乎逻辑的结论。 这门课程涵盖了计算机系统的工程设计与物理实现。一些在计算机架构甚至软件设计中基本的现象,比如内存墙、电源墙、快速暗场(race to dark)等问题,都与其物理基础有关。要想理解这些专业的计算问题,仅有肖克利半导体理论是远远不够的,我们还需要了解热力学、静电学以及大量的电路理论知识。 当我思考本书内容时,我意识到玻耳兹曼常数k是一个关键概念。k随处可见:二极管方程、阿伦尼乌斯方程、温度等,数不胜数。玻耳兹曼常数将温度和能耗联系在一起,因此它理所应当地与本书主题紧密相关。 本书中的某些内容仅针对现代CMOS技术,比如漏电机制,而内容则可能适用于大量电路与元器件技术。对于计算机而言,即使CMOS被技术所取代,逻辑线网延迟、亚稳态以及可靠基础也仍然属于应掌握的基础知识。 一些读者可能会觉得本书中的部分内容过于简单和精练,但我希望这些读者能够在本书的部分找到浓缩和高深的感觉。理解计算机工作原理的途径就是了解所有相关主题之间的关联,即使在刚开始时关联表现得并不明显。我们知道设计过程中的一些关键点是相互联系的,因为当调节其中一个参数来优化设计时,却往往发现其副作用会抵消优势。本书将用尽可能简单的方式来描述概念,希望读者能够对它们有基本的了解。感兴趣的读者可以自行深入学习,不过本书的主要目的是为计算机物理实现提供统一的描述。 本书同时适用于计算机和。但这两类读者具有的知识背景差异很大:计算机往往缺乏电路设计经验,即便他们知道基尔霍夫定律,但仍不擅长电路分析;而则往往对计算机体系结构所知甚少。本书写作过程中的一个挑战就是为每一类读者都提供足够多的知识背景。 本书涵盖了大量的发现史和发明史。首先,回顾那些影响当下技术的设计方案,能够使我们认识到一个问题总有多种解决方案,并且能够令我们关注那些经过历史沉淀下来的方案的真正优势。其次,20世纪一些重要的发明都来自于半导体物理和计算机工程领域。这些发明在未来的几个世纪里仍然有用,但我们不能因为习惯了而忘记对这些发明以及发明家致以深深的敬意。 本书的初灵感来源于Richard Feynman所著的《Lectures on Computing》一书,但那本书主要讲述量子计算,并没有考虑太多传统计算领域的问题。比如,Feynman并没有提及的亚稳态其实是计算机系统设计中的一个基本物理现象。我们对Feynman在计算机物理本质方面的早期认知致以崇高的敬意,并感谢他所著的《Lectures on Physics》一书,这本书为我们认识计算机底层的基本物理现象提供了一个清晰且简洁的思路。 本书在写作过程中得到了许多人的帮,他们是:我的朋友及同事Saibal Mukhopodhyay开设了“Physical Foundations of Computer Engineering”课程,他提供了许多具体建议,尤其在可靠及漏电机制方面,在此对他的耐心及洞察力表示衷心的感谢;Dave Coelho慷慨地提供了有关配电系统的相关信息;Kees Vissers提出了弧焊机电流比较法;Alec Ishii在时钟分配方面提供了建议;Kevin Cao给出了如何地利用预测技术模型(Predictive Technology Model)的建议;Bruce Jacob对DRAM提供了见解;Srini Devadas为附录D提供了建议;Tom Conte提供了关于内核存储、Pentium Pro的内容,并针对当今及未来计算展开了讨论。感谢审稿人的宝贵意见,感谢编辑Nate McFadden为本书的开发及出版提供的指导意见。若你发现本书中的任何错误,可以直接联系我。 玛里琳·沃尔夫(Marilyn Wolf)亚特兰大