计算机架构的黄金时代来了
Johnhenessy和Davidpatterson是2017年图灵奖的获得者。目前,这两位学者都在谷歌工作。前者是谷歌母公司Alphabet董事长,后者是谷歌优秀工程师,致力于机器学习和人工智能的研究。
计算机架构的黄金时代来了
软件和硬件通过一个名为指令集架构的词汇表进行对话(Instructionsetarchitecture,ISA)。20世纪60年代初,IBM有四条不兼容的计算机产品线,每条都有自己的ISA、软件堆栈、I/O系统和利基市场(分别针对小企业、大企业、科研和实时应用)。IBM工程师,包括ACM图灵奖得主FredBroks和Jr.,都认为他们可以创建一个单一的ISA,可以有效地统一所有这四个ISA基础。
他们需要一个技术解决方案,让便宜的8位数据通路计算机和高速的64位数据通路计算机共用一个ISA。这些数据通路是处理器的身体,它们执行算术操作,但相对容易变宽或变窄。对于当时和现在的计算机设计师来说,最大的问题是处理器的大脑——控制硬件。受软件编程的启发,计算先驱和图灵奖获得者MauriceWilkes提出了简化控制的方法。控制可以描述为二维数组,称为控制存储器。这个数组的每一列都对应于一条控制线,每一行都是一个微指令(microinstruction),而编写微指令则称为微编程(microprogramming)。一个控制存储器包含一个用微指令编写的ISA解释器,因此执行一个常规指令需要多个微指令。这种控制存储器是通过内存实现的,成本远低于逻辑门。
表1列出了IBM于1964年4月7日宣布的四种新型System/360ISA。数据通路的变化范围是8倍,内存容量的变化范围是16倍,时钟频率是4倍,性能是50倍,成本接近6倍。最昂贵的计算机控制存储器是最宽的,因为更复杂的数据通路使用更多的控制线。成本最低的计算机有更窄的控制存储器,因为它们需要更多的时钟周期来执行System/360指令,因为它们需要更多的微指令。
在微编程的推动下,IBM将公司的未来放在了这个新的ISA上,希望它能创新计算行业,为IBM赢得回报。IBM成功宰了这个市场,IBM计算机家族的大型机器后裔在推出55年后仍然每年创造100亿美元的收入。
正如我们反复看到的,虽然市场并不是判断各种技术问题的完美判断,但鉴于结构与商业计算机之间的密切联系,市场最终可以决定那些往往需要大量工程投资的结构创新是否成功。
集成电路、CISC、432、8086、IBMPC。
当计算机开始使用集成电路时,摩尔定律意味着控制存储器可以变得更大。更大的内存反过来又意味着允许使用更复杂的ISA。要知道,1977年推出的VAX-11/780控制存储器为5120字×96位,而前一代仅为256字×56位。
一些制造商选择开放微编程功能,以便选定的客户可以添加定制功能,他们称之为可写控制存储器(WCS)。最著名的WCS计算机是图灵奖得主Chuckthacker和ButlerLampson及其同事于1973年为施乐(Xerox)帕洛阿托研究中心开发的Alto。这实际上是第一台个人计算机(PC),配备了第一个图像显示器(bit-mappeddisplay)和第一个以太网局域网。该新显示器和网络的设备控制器是存储在4096字×32位WCS中的微程序。
20世纪70年代的微处理器(如英特尔的8080)仍处于8个时代,主要依靠汇编语言编写程序。相互竞争的设计师会通过添加新的指令来赶上对方,他们会通过汇编语言示例来展示自己的优势。
戈登·摩尔相信英特尔的下一代ISA将伴随英特尔的一生,所以他聘请了许多聪明的计算机科学博士,并把他们送到波特兰发明优秀的下一代ISA。英特尔最早被命名为8800的计算机架构项目雄心勃勃—这在任何时代都是最雄心勃勃的,显然是20世纪80年代最雄心勃勃的。它具有基于32位的搜索能力、面向对象的架构、位长可变的指令以及Ada用新的编程语言编写的操作传统。
不幸的是,这个雄心勃勃的项目在几年后停止了,迫使英特尔在圣克拉拉开始紧急更换,并于1979年推出了16位微处理器。英特尔给了新团队52周的时间来开发新的8086ISA,并设计和构建芯片。鉴于时间表的紧迫性,该团队实际上将8080的8个寄存器和指令集扩展到16个,最终在3个常规工作周内只用了10周的工作量就完成了ISA的设计。该团队按时完成了8086年的开发,但在发布时并没有引起任何关注。
英特尔很幸运,IBM正在开发一台个人计算机来与AppleII竞争,并需要一个16位微处理器。IBM以前对Motorola68000感兴趣,ISA类似于IBM360,但落后于IBM的激进计划。IBM使用了8086的8位总线版本。IBM于1981年8月12日推出了这款PC,希望到1986年能卖出25万台。事实上,该公司在全球销售了1亿台,为这款紧急替代的英特尔ISA铺平了一个非常光明的未来。
英特尔最初的8800项目更名为iAPX-432,最终于1981年推出,但它需要多个芯片,并有严重的性能问题。该项目于1986年再次终止。今年,英特尔在80386年扩展了16位8086ISA,并将其寄存器从16位扩展到32位。因此,摩尔的预测是正确的——下一代ISA确实会像英特尔一样长寿,但市场选择了8086,而不是专门精心开发的432。正如Motorola68000和iAPX-432的设计师所学到的,市场往往缺乏耐心。
从复杂指令集到精简指令集计算机。
20世纪80年代初,人们对大型控制存储器中大型微程序使用的复杂指令集计算机(CISC)进行了一些研究。Unix表明,即使是操作系统也可以用高级语言编写,关键问题变成了编译器会生成什么指令?而不是编程师会使用什么汇编语言?。硬件/软件接口的显著改进为架构创新带来了机遇。
图灵奖得主杰克和他的同事们为小型计算机开发了更简单的ISA和编译器。作为实验,他们重新设定了自己研究的编译器的目标:只使用IBM360ISA中简单的register操作和load-store数据传输,避免更复杂的指令。他们发现,当使用这个简单的子集时,程序可以快速运行三倍。Emer和clark发现VAX指令中20%的指令需要60%的微代码(microcode),但这些指令只占实际执行时间的0.2%。
DavidPatterson将在DEC的学术假期投入到研究减少VAX指令中的漏洞上。他认为,如果微处理器制造商遵循这一点。