快捷搜索:

计算机芯片的发展历程,以及所有架构的未来趋势

John Hennessy 和 David Patterson 是 2017 年图灵奖获得者,目前这两位学者都供职于谷歌,前者是谷歌母公司 Alphabet 的董事会主席,后者任谷歌杰出工程师,致力于研究机器学习和人工智能。他们更为人所知的就是共同完成的计算机系统结构学科「圣经」《计算机体系结构:量化研究方法》了。

计算机芯片的发展历程,以及所有架构的未来趋势

本文《计算机架构的新黄金时代》是两人在 2019 年新发表的文章,完整介绍了计算机芯片发展历程,以及所有架构未来趋势,值得所有希望了解硬件架构的人阅读。

计算机芯片的发展历程,以及所有架构的未来趋势

图注:2019 年 2 月刊发

2018 年 6 月 4 日,我们回顾了自 20 世纪 60 年代以来计算机架构的发展,并以此开始了我们的图灵讲座(Turing Lecture)。除了那个回顾,我们还在讲座中介绍了当前的难题和未来机遇。我们还预测未来十年计算机架构领域将迎来下一个黄金时代,就像 20 世纪 80 年代那样——我们做的研究能为我们带来回报,能改善成本、能源、安全以及性能。

「不能铭记过去的人注定要重蹈覆辙。」

——George Santayana,1905

计算机芯片的发展历程,以及所有架构的未来趋势

软件与硬件的通信是通过指令集架构(ISA)进行的。在 1960 年代早期,IBM 有四个互不兼容的计算机产品线,每个都有自己的 ISA、软件堆栈、I/O 系统和利基市场(分别针对的是小型企业、大型企业、科研和实时应用)。包括 ACM 图灵奖获得者 Fred Brooks, Jr. 在内的 IBM 工程师都认为他们可以创造一种能有效统一所有这四种 ISA 基础的单个 ISA。

他们需要一种技术解决方案,让便宜的 8 位数据路径计算机与高速的 64 位数据路径计算机都能共用一个 ISA。这些数据路径是处理器的「身体」,它们在其中执行算术运算但相对而言较容易「变宽」或「变窄」。对于那时以及现在的计算机设计者来说,最大的难题是处理器的「大脑」——控制硬件。受软件编程的启发,计算先驱和图灵奖获得者 Maurice Wilkes 提出了简化控制的方法。控制可被描述为一个二维数组,他称之为「控制存储器(control store)」。这个数组的每一列都对应于一条控制线,每一行都是一个微指令(microinstruction),而编写微指令则被称为微编程(microprogramming)。一个控制存储器包含一个用微指令编写的 ISA 解释器,所以执行一个常规指令需要多个微指令。这种控制存储器是通过内存实现的,成本比逻辑门要低得多。

表 1 列出了 IBM 在 1964 年 4 月 7 日宣布的新 System/360 ISA 的 4 种型号。数据路径的变化范围有 8 倍,内存容量的变化范围有 16 倍,时钟频率是 4 倍,性能是 50 倍,成本接近 6 倍。成本最高的计算机的控制存储器最宽,因为更复杂的数据路径使用更多控制线。成本最低的计算机因为硬件更简单而有更窄的控制存储器,但因为它们需要更多时钟周期来执行一个 System/360 指令,所以需要更多微指令。

计算机芯片的发展历程,以及所有架构的未来趋势

表 1:IBM System/360 系列四个型号的特性;IPS 表示每秒执行指令数。

在微编程的推动下,IBM 将公司的未来押在了这款新 ISA 上,寄希望其能革新计算行业,为 IBM 赢得回报。IBM 成功主宰了这一市场,IBM 计算机家族的大型机后裔在推出 55 年后仍然每年创造着 100 亿美元的收入。

正如我们反复看到的那样,尽管市场并不能完美地判定各种技术问题,但鉴于架构和商业计算机之间联系紧密,市场才能最终决定架构创新是否成功,而这往往需要大量的工程开发投入。

集成电路,CISC,432,8086,IBM PC

当计算机开始使用集成电路时,摩尔定律意味着控制存储器可以变大很多。更大的内存反过来又意味着允许使用更复杂的 ISA。要知道,数字设备公司(Digital Equipment Corp.)在 1977 年推出的 VAX-11/780 的控制存储器为 5120 字×96 位,而其前一代仅有 256 字× 56 位。

某些制造商选择开放微编程功能,让选定的客户能添加定制功能,他们称之为「可写控制存储器(WCS)」。最有名的 WCS 计算机是 Alto,这是图灵奖得主 Chuck Thacker 和 Butler Lampson 及其同事于 1973 年一起为施乐(Xerox)帕洛阿托研究中心开发的。这实际上是第一款个人计算机(PC),配备有首款位映像显示器(bit-mapped display)和首个以太网局域网。用于这种全新显示器和网络的设备控制器是存储在一个 4096 字×32 位 WCS 中的微程序。

您可能还会对下面的文章感兴趣: