RISC,诸神乱斗的时代!
编者按
现在,RISC–V的崛起,并有望与Arm和英特尔三分天下。但其实在几十年前,处理器架构曾经有过一个诸神乱斗的年代。而这一切,可以从上世纪七十年代的IBM System/360说起。
以下为文章正文:
20 世纪 70 年代初,IBM 的大型机主导了功能更强大的计算机市场。IBM 在 System/360 的开发上投资了 50 亿美元(是当时年营业额的两倍多)。1970 年,公司推出了高度兼容的后继系统System/370。
S/370 有大量指令,而且通常很复杂。某些指令(例如“移动字符”指令)将从内存的一部分读取多项数据,以某种方式对其进行操作,然后将该数据写入内存的另一部分。
这种复杂性是由于需要避免缓慢的内存访问(以获取指令)减慢程序执行速度。指定大量活动的单个指令将节省获取多个指令所需的工作。
客户可以从一系列具有不同价格和性能特征的 S/360 或 S/370 系统中进行选择。更便宜的机器之所以成为可能,部分原因是更广泛地使用“微代码”,其中指令被分解为更小的“微指令”。解码和执行这些微指令需要时间,因此减慢了程序的执行速度。典型的 S/370 指令可能使用 20 或 30 条微指令来执行。更昂贵的机器将更多的指令集“硬编码”到电路中,因此速度更快。
这种方法对 IBM 的业务非常有效。预算较低的客户可以购买更便宜的机器,并且始终可以选择升级到更昂贵但仍然兼容的机器。
1971 年,爱立信电话公司与 IBM 接洽,提议成立一家合资企业,建立电话系统,与 IBM 的强大技术竞争对手 AT&T 竞争。
IBM 的工程师意识到像 S/370 这样的架构不太适合电话技术。微编码系统的性能不够好,并且“硬连线”机器的成本太大。
因此,IBM 的工程师开始寻找更适合电话系统的替代方案。经过三个月的紧张工作,两家公司的团队在伦敦克拉里奇酒店会面。在一次深夜会议上,IBM 团队提出了他们的想法。获得了继续进行的许可。但第二天早上,爱立信又改变了想法。如果 IBM 的想法奏效,爱立信的核心业务就会遇到麻烦。合资企业关闭了。
但 IBM 需要爱立信吗?该团队认为 IBM 可以单枪匹马地对抗 AT&T。于是,电话系统的开发工作就开始了。
但是,该项目的结果再次被 IBM 高级管理层拒绝。
801项目开始
但随着这些想法如此先进,IBM 的工程师也相信其带来的好处,IBM 研究中心启动了一个项目,将这些想法变成现实。
在约克镇 Thomas J. Watson 研究中心的 801 大楼内,一个由大约 20 名工程师组成的团队(最初由 Joel Birnbaum 管理)开始致力于将想法变为现实。该机器以前被称为“电话机”,但这开始显得不合适,因此团队决定以他们工作的建筑物的名称命名。
该小组的领军人物是 IBM 院士 John Cocke。科克是一名朝鲜战争老兵,在开发计算机系统方面拥有丰富的经验。他深入参与了 IBM Stretch(S/360 之前的大型机系列)的开发。他也是编译器方面的专家,并撰写了一本有关编译器构造的开创性教科书。
Cocke 参与早期项目以及他对 S/360 开发项目的观察已经开始在他的脑海中播下对 S/360 设计方法的怀疑种子。该项目的目标是创建一个明显优于 IBM 平淡无奇的 System/3 小型机的系统,该系统正在与竞争对手 Digital Equipment Corporation 商业上成功的 VAX 系列作斗争。
该团队的优势在于拥有 S/360 上程序执行模式的大量详细信息(称为“指令跟踪”:Instruction Traces)。这显示了哪些指令最常被执行,并且这些指令中的很大一部分实际上非常简单。
引用团队成员之一的话:令人惊讶的是……加载、存储、分支和一些简单的寄存器操作完全主导了指令组合。
此外,对更复杂的指令(例如“移动字符”)的分析表明,对于该指令的典型使用实例,所操作的数据量非常小,因此使用少量的简单指令会更快。
有了 S/360 上的这些数据,团队就能够开始设计新系统。
构建 RISC 理念
为了使他们的新设计工作需要许多功能,这些功能很快就会成为 RISC 理念的一部分。并非所有这些想法都是新的,但这是第一次将它们结合在一起。
借鉴 Control Data 6600(Seymour Cray 设计的第一台“超级计算机”)的想法,新机器将具有“加载-存储”(load-store)架构,其中简单的“加载”或“存储”指令将是访问或更改存储的唯一方式。S/360 的“内存到内存”指令已经不复存在。
这反过来又帮助机器实现了一种简单的流水线形式,其中一条指令可以在从内存加载下一条指令的同时执行。
然后引入了与数据缓存不同的指令缓存,这有助于消除其他系统中由于访问内存以读取指令时的延迟而产生的损失。该团队推断,如果 S/360 能够快速访问保存微代码的内存,那么他们就可以通过指令缓存提供对 801 指令的快速访问。
但 801 的开发不仅仅涉及硬件。801 的成功取决于编译器能否避免大多数汇编语言编程并优化生成的代码以充分利用新硬件。
因此该团队还为一种名为 PL 0.8 的新语言构建了一个编译器。PL 之所以选择这个名称,是因为它最初是 IBM PL/1 语言的一个大子集,PL/1 被认为对于重新实现这样的实验项目来说过于“丰富”。在适当的时候,小数点被删除,它被称为 PL/8。
充分利用 801 硬件的关键是有效利用机器的寄存器。寄存器分配使用了一种称为“图形着色”的方法。
801 架构和性能
那么801是什么样子的呢?
801 是一台小型计算机而不是微处理器。它是使用摩托罗拉制造的安装在许多电路板上的“现成”逻辑芯片构建的。电路板排列成半圆形,连接位于中心,从而缩短了组件之间的距离。在上面 John Cocke 的图片中,可以看到他靠在 801 的一些从机器中心向外的板上。第一个版本有 7600 个逻辑门。
801 架构实际上有两个版本。我们先来看看 801 的第一个版本。
按照计划,说明保持简单。没有内存到内存指令或将从内存加载或存储数据与其他操作相结合的指令。所有这些简单的指令都可以实现,而无需求助于微代码。
最初的 801 有 16 个 24 位寄存器,外加 3 个特殊用途寄存器,包括程序计数器和条件代码寄存器。指令长度为 16 位或 32 位。更长的指令允许包含可以添加的十六位常量。
指令集的简单性意味着可以实现简单的流水线操作——#Add。与寄存器长度一致,寻址内存为 24 位长,允许机器访问最多 16 兆字节(或 16777216 字节)的内存。分支给管道带来了问题。因此 801 引入了“执行分支”指令(这些指令后来被称为“延迟分支”)。这些允许分支指令的伴随指令,无论是否采用分支,该指令都将与分支指令并行执行。缓存失效带来了一个潜在问题,团队通过添加使缓存行无效的指令解决了这个问题:
按照IBM当时的团队成员说:当时,人们普遍认为正在运行的程序不会在执行时修改自身。因此,没有添加任何机制来确保指令流中的存储立即反映在指令缓存中。相反,指令集中添加了无效高速缓存行的功能。
大多数 801 指令可以按计划在单个时钟周期内执行。平均而言,机器每 1.1 或 1.2 个时钟周期即可执行一条指令。
801 的第二个版本根据团队的经验和他们对用户可能需求的看法进行了更新,做出了许多重大更改。所以。以至于两台机器使用相同的名称几乎显得很奇怪。
在研究寄存器分配之后,修订版本将寄存器数量增加了一倍,从 16 个增加到 32 个。寄存器大小从 24 位增加到 32 位。第二个 801 具有统一的 32 位指令长度,这简化了指令解码机制,并且意味着指令不能再跨过高速缓存行,从而再次简化了设计。
正如团队预测的那样,801 的性能明显优于更传统和更复杂的机器。当运行“real world”测试并与 IBM System/3 小型机进行比较时,发现实验机的速度大约是原来的三到四倍。但 IBM 管理层再次放弃将 801 转变为商业项目。IBM 团队似乎感觉到他们正在逆流而上。乔治·拉丁 (George Radin) 在该项目早期的一篇论文中评论道:
“从某种意义上说,801 似乎正朝着与该领域传统观点相反的方向前进。也就是说,其他人都忙着将软件转变为硬件,而我们显然正在将硬件转变为软件。我们并没有消耗预计更便宜、更快的硬件,而是致力于节省电路、缩短路径长度并减少正常系统层次结构各个级别的功能。”
这些想法被搁置,团队转向其他事情。正如我们将看到的那样,有关 RISC 理念的工作确实在 IBM 内部继续进行,但该概念将在 IBM 外部引起重视。
John Cocke 和 IBM 团队都没有创造“Reduced Instruction Set Computer”这个术语。事实上,乔尔·伯恩鲍姆(Joel Birnbaum)和其他人会抗议说,这种哲学实际上应该是关于“Reduced Complexity Instruction Set Computer”。而 RISC 可以理解为暗示它的全部目的是减少指令数量,这可能是一个副产品,但不是根本原因。但这个缩写词一直沿用至今,多年来导致了严重的混乱。
RISC 一词是由伯克利大学的 David Patterson 发明的。Patterson和他的学生与斯坦福大学的 John Hennessy 一起学习了 RISC 概念,并使用 RISC 原理构建了第一个微处理器。
RISC的起源:David Patterson的创举
如果说 IBM 是 RISC 技术的先驱,那么“RISC”这个名字以及使 RISC 成为主流的真正推动力来自加州大学伯克利分校,其团队包括 David Patterson(大卫 帕特森)。他们的工作仍然对我们今天使用的设计产生影响,包括直接在 RISC-V 架构中。但令人惊讶的是,performance 并不是在伯克利工作的最初动机。
David Patterson 和 VAX
与 DEC 的小型计算机的竞争促使 IBM 团队寻找一种新的计算机架构方法。下一代 DEC 机器的工作将推动 RISC 概念的下一阶段的发展。
David Patterson 曾在加州大学伯克利分校学习计算机科学,并撰写了关于微程序(microprograms)的形式验证的博士论文。微程序是用微代码编写的程序,微代码(microcode)在计算机的中央处理单元中使用,以实现向用户公开的指令集架构。
1977年,DEC推出了VAX,这是其最新、最强大的小型机设计系列。与 IBM 的大型机一样,VAX 具有复杂的指令集 (CISC) 架构,并广泛使用微代码。
由于对微代码的兴趣,Patterson 在马萨诸塞州 Boxborough 的 DEC 小型计算机设施之一积极参与,以帮助处理 VAX 系列微代码中的错误。1979 年秋天,对 VAX 微代码的研究使他确信,调试复杂 CISC 指令集的微代码极具挑战性。
KA780(VAX 11/780 计算机的中央处理单元)在两个地方有微代码。它在只读存储器中具有 4k 复杂的 96 位长微代码指令,在快速随机存取存储器中具有 2k 微代码指令。RAM 中的微代码将在启动时从连接到 VAX 的 PDP-11 小型计算机加载到内存中。
RAM 中微代码的存在提供了在 VAX 发货后更新代码的机会,包括修复任何错误。
20 世纪 70 年代末,第一批 16 位微处理器问世。随着微处理器添加了更复杂的指令,公司开始转向微代码来实现他们的设计。一些公司,例如 Zilog 的 Z8000,坚持使用非微编码设计,但正如我们看到的那样,即使对于最熟练的设计师来说,这也是困难且耗时的。16 位时代最成功的两种微处理器架构,Intel 8086 和 Motorola 68000,都广泛使用了微代码。
Patterson 使用 VAX 的经验使他相信,随着微处理器架构变得更加复杂,他们的微代码设计将不可避免地存在错误。对于像 VAX 这样的小型计算机,这些错误可以在出厂后使用 RAM 中的微代码进行纠正。对于微处理器,微代码硬编码在 CPU 芯片上,更新意味着更换整个芯片,这是一个不方便且昂贵的过程。
因此帕特森写了一篇论文,建议微处理器应该有两种类型的微代码存储,大致遵循 VAX 中使用的方法。ROM 用于最简单和最常用的指令,少量的高速缓存 RAM 用于更复杂的指令。
论文被拒绝了。帕特森回忆了拒绝的重要理由:“这是一种愚蠢的计算机设计方法。以这种方式设计微处理器没有意义,而且需要额外的 RAM、成本、补丁和现场。这太疯狂了。”
构建 RISC-I
几个月后,即 1980 年秋天,帕特森开始教授研究生课程,其中包括微处理器架构的设计工作。他没有采用被拒绝论文中的方法,而是尝试了另一种方法。复杂的指令被完全省略,这意味着不需要微代码。如果没有微代码,就不会有微代码错误,也不需要 RAM 来缓存更复杂指令的微代码。
帕特森和他的一位学生David Ditzel(戴维·迪泽尔)(当时在贝尔实验室工作)已经将这些想法写在一篇名为《The Case for the Reduced Instruction Set Computer》的论文中。该论文承认 IBM 的 John Cocke 的工作(Cocke 甚至出现在伯克利校园讨论他的一些想法),提出了支持 RISC 方法的几个理由,包括更容易和更快的实现、更好地利用芯片面积和速度。
至关重要的是,帕特森和他的同事为该方法发明了“RISC”名称,并更广泛地分享了其背后的想法。
帕特森将《The Case for the Reduced Instruction Set Computer》这篇论文的副本发送给了他在 DEC 休假期间共事的朋友。1980 年 9 月,VAX 团队以论文“对“The Case for the Reduced Instruction Set Computer”的形式提出了反驳。反驳主要是因为缺乏真正的硬件来支持Patterson和Ditzel的主张。
但 Patterson和他的同事 Carlo Séquin 以及他们的学生已经着手构建基于 RISC 原理的微处理器,最初被称为“Gold”,后来被称为“RISC-I”。只有国防高级研究计划局 (DARPA) 为许多相关项目提供资金,包括硅制造服务 (MOSIS) 和开发计算机辅助设计工具的项目,构建物理微处理器才成为可能。
在实践中,事实证明该设计对于在伯克利自己的 VAX 11/780 小型机上运行的设计工具来说过于复杂(也许有些讽刺)。该团队被迫重写工具,RISC-I 的工作进展缓慢。
RISC-I 设计最终于 1981 年 6 月被送往制造服务。在设计的初始制造出现了一系列问题之后,带有工作芯片的晶圆于 1982 年 5 月才运回伯克利。伯克利团队利用它构建了一个单板计算机,很快就能够演示它运行 C 程序(尽管该设计在单个指令中存在错误,需要修改编译器以避免)。
RISC-I 设计使用了 44,500 个晶体管,这些晶体管采用 4 微米 NMOS 工艺实现,芯片尺寸相对较大,为 10mm x 7.8 mm。值得注意的是,由于指令集简单,只有 6% 的芯片面积专用于解码指令或处理器控制。事实上,超过一半的晶体管专用于提供 78 个物理 32 位长通用寄存器。
随着 RISC-I 工作的进展,帕特森在伯克利的两名学生开始了第二个设计,称为“Blue”(后来的 RISC-II)。RISC-II的进展比RISC-I顺利。RISC-II 设计的寄存器数量比 RISC-I 还要多,有 138 个 32 位通用寄存器。它能够通过更经济的设计来实现它们,每位仅使用 6 个晶体管,而不是 RISC-I 中使用的 11 个晶体管,因此总共只需要 40,760 个晶体管。它还采用了更先进的3微米NMOS制造工艺。
RISC-I 和 RISC-II 性能
构建 RISC-I 的最初动机是避免复杂的微代码,但帕特森和他的同事对新设计的性能表示了很高的期望。Patterson 和 Séquin 的论文总结了 RISC 项目的初步结果,其摘要中有一个惊人的结论:初步基准测试证明了 RISC 的性能优势。构建比 VAX 11/780 更快的单芯片计算机似乎是可能的。
然而,最初的 RISC-I 芯片的速度在某些方面令人失望。一些指令的执行符合伯克利团队的预期,但其他指令的速度慢了五倍,该团队将这一结果归因于制造问题而不是设计。后来的一篇论文更详细地阐述了 RISC-I(使用模拟来纠正制造问题)与 VAX 11/780 和 Zilog Z8000 微处理器的强大理论性能。
RISC-II 不存在 RISC-I 的制造问题,并且轻松优于 VAX 和当时最先进的微处理器设计 Motorola 68000。现在,通过实际硬件的结果,大多数挑战和怀疑都得到了表达DEC VAX 团队已经给出了答案。
这些成果是显着的。VAX 11/780 是一台复杂且昂贵的小型计算机。它被 RISC-I 和 RISC-II(单芯片微处理器设计)击败。
伯克利团队关于 RISC 的论文被广泛传播。不出所料,人们对 RISC 设计的兴趣、投资和工作很快就会出现“寒武纪爆发”。
RISC 战争:寒武纪大爆发
上文谈到的伯克利的这项工作得到了国防高级研究计划局 (DARPA) 的支持,作为其超大规模集成 (VLSI) 计划的一部分。这种支持包括资助构建设计工具和支持 VLSI 制造服务 MOSIS 的工作。
与此同时,DARPA 还资助了斯坦福大学的 RISC 设计工作。在那里,John Hennessy 和他的研究生于 1981 年初开始了名为“MIPS”的设计工作,MIPS 是“Microprocessor without Interlocked Pipeline Stages”的缩写。
MIPS 与伯克利 RISC 共享许多功能,但有两个重要区别:
Register windows:MIPS 设计没有像 Berkeley RISC 设计那样使用寄存器窗口。因此,当调用子例程时,通常需要将寄存器保存到内存中;
Pipeline Hazards:设计没有硬件来处理Pipeline Hazards,例如,流水线意味着指令的结果尚不可用于需要该结果的后续指令。相反,编译器应该能够处理这个hazard,这一假设可以简化 MIPS 处理器的设计;
与伯克利 RISC 项目的情况一样,斯坦福大学的团队发表了大量论文。这些再次表明 RISC 可以胜过当时领先的 CISC 微处理器,例如 Motorola 68000。此表来自 John Hennessy 等人于 1982 年发表的论文“MIPS a Microprocessor Architecture”。
伯克利分校和斯坦福大学的论文现在公开了 RISC 背后的想法,并揭示了 RISC 设计可以实现的性能。自然地,人们对 RISC 的兴趣开始迅速增长。
与性能同样重要的是,它们都是由研究生小团队在一年多一点的时间范围内构建的,并且几乎没有错误。如果公司能够复制这一点,那么这将是一个引人注目的商业主张。Acorn 计算机公司的 Steve Furber(后来继续开发 ARM 架构)后来说:
“伯克利和斯坦福故事的另一个特点是,他们仅使用一班研究生一年的时间就成功地生产出了具有相当竞争力的微处理器。因此,与大公司相比,他们的经验和资源要少得多,因此我们认为,也许,只是也许,有了这些想法,如果我们出发,我们可能会想出一些有趣的东西。”
但这些简单的设计可以胜过大公司复杂而昂贵的计算机的想法并不总是受欢迎。引用大卫·帕特森的话,很久以后谈到对他和约翰·轩尼诗的作品的反应:“这是两位助理教授,而不是终身教授,他们让强大的公司对他们非常生气,也许因为我的个性,我比约翰更生气。我认为他们更加生气了,约翰说他们并没有对他生气。现在,他是大学校长。我还是个教授。他们真的非常非常生我的气。”
这将是一场长达数十年、有时甚至是激烈的关于 RISC 与 CISC 优劣争论的开始,这一争论一直持续到今天。
伯克利的 RISC 工作将继续进行,但重点略有不同。Patterson 和同事首先希望构建一个修改后的 RISC 设计来运行 Smalltalk 编程语言(在一个名为 SOAR 的项目中,即 Smalltalk On A RISC),然后形成桌面工作站的基础(称为 SPUR,用于符号处理) RISC)。
RISC寒武纪大爆发
很快,几乎每个对半导体制造感兴趣的人都拥有了自己的 RISC 设计。
以下是 20 世纪 70 年代后半叶和 1980 年代出现的重要 RISC(或 RISC 派生)架构的(非详尽)列表(如果我在评论中遗漏了任何值得注意的设计,请告诉我)。
▪️ 1、1975年(1978年设计)
IBM 801:由 John Cocke 领导的团队采用 ECL 集成电路(而非微处理器)构建的第一个完全 RISC 设计。
▪️ 2、1977 年(1984 年公开,1986 年首次出现在产品中)
IBM ROMPIBM ROMP:原始 IBM 801 项目的开发。
▪️ 3、1980年(1981年开始设计)
加州大学伯克利分校RISC-I / RISC-II:DARPA 资助了包括 David Patterson 在内的团队的研究项目。
▪️ 4、1981年(1982年开始设计)
斯坦福大学MIPS:DARPA 资助了 John Hennessy 领导的团队的研究项目。
▪️ 5、1982年(1986年引入产品)
惠普PA-RISC (PA for Precision Architecture):设计旨在取代所有 HP 非 IBM PC 兼容机器中的处理器。
▪️ 6、1982-1984
DEC的Multiple projects
以下内容引用自维基百科:
来自位于加利福尼亚州帕洛阿尔托的 DEC 西部研究实验室 (WRL) 的TitanTitan是一种基于 ECL 的高性能设计,于 1982 年开始设计,旨在运行 Unix。
SAFE(Streamlined Architecture for Fast Execution)是同年开始的 64 位设计,由 Alan Kotok(因太空战争而闻名)和 Dave Orbits 设计,旨在运行 VMS。
HR-32(Hudson, RISC, 32-bit)由 Rich Witek 和 Dan Dobberpuhl 在马萨诸塞州 Hudson 工厂于 1984 年启动,旨在用作 VAX 机器中的协处理器。
同年,Dave CutlerT在华盛顿州贝尔维尤的 DECwest启动了CASCADE项目。
▪️ 7、1985年
DEC PRISM (Parallel Reduced Instruction Set Machine):在 Rich Witek 的指导下统一了 DEC 的 RISC 工作。
▪️ 8、1984 年(第一个设计于 1985 年推出)
MIPS计算机系统的MIPS:斯坦福 MIPS 项目的商业衍生品。
▪️ 9、1984 年(第一个工作设计于 1985 年)
英特尔的i960:最初是与西门子的合资企业,由 iAPX432 首席工程师 Fred Pollack 领导。
▪️ 10、1984 年(1988 年发布)
AMD Am29000:设计受到 Berkeley RISC 的影响。
▪️ 11、1984年(1985年工作设计)
Acorn Computers的Acorn RISC Machine (later Advanced RISC Machine or ARM):由 Sophie Wilson 和 Steve Furber 领导的团队更换了 BBC Micro 的 6502。
▪️ 12、1986 年(1987 年商业发行)
Sun Microsystems的SPARC (Scalable Processor Architecture):商业开发深受 Berkeley RISC 项目的影响,该项目最初是为 Sun 工作站提供支持的。
▪️ 13、1986 年(1990 年首次商业发布)
IBM Power:IBM 801 开发之后的 IBM 研究项目的顶峰。
14、1986年(商业介绍)
Fairchild / Intergraph的Clipper:RISC 通过“Macro instruction ROM”中定义的一些更复杂的指令影响了设计。
▪️ 15、1987 年(1988 年商业发行)
摩托罗拉88000:针对高端市场,发布时声称是世界上最快的微处理器。
▪️ 16、1988 年(1989 年商业发行)
英特尔i860:第一个百万晶体管CPU也采用了超长指令字方法。
▪️ 17、1988年
Apollo的PRISM (Parallel Reduced Instruction Set Microprocessor):专为 Apollo 的 DN10000 工作站提供动力。
CISC 的消亡?
也许与所有新的 RISC 设计一样值得注意的是,新的 CISC 架构将变得罕见。
20 世纪 70 年代末出现了英特尔 8086、摩托罗拉 68000、国家半导体 32016,以及德州仪器 (Texas Instruments) 和几家小型计算机制造商的努力,希望将其设计缩小到 VLSI 上。然而 20 世纪 80 年代因缺乏新的 CISC 设计而引人注目。当开发速度更快的 RISC 架构会便宜得多时,为什么有人会花更多的钱来构建新的 CISC 架构呢?
David Patterson 亲自参与了可能是这个时代最复杂的设计的命运,即我们在他们于1982 年 5 月发布的论文“Intel iAPX432 : Gordon Moore, Risk and Intel’s Super-CISC Failure’”中讨论的英特尔 iAPX432微主机。讨论结果表明,iAPX432 不仅在与 VAX 11/780 相比时表现不佳,而且在与第一代 16 位微处理器(例如 8086)相比时也表现不佳。
那么,到 20 世纪 80 年代中期,RISC 已经赢得了这场战斗吗?不是完全。已经立足市场的CISC架构不断更新。Intel 的 8086 的后继者是 80286,然后是 80386,每一个都在性能和功能以及最重要的向后软件兼容性方面提供了阶跃变化。凭借英特尔的制造专业知识以及 IBM 兼容设计在商用个人计算机市场上的控制力,x86 架构的未来是有保障的。
同样,摩托罗拉不断更新 68000 架构,这些设计将用于苹果的 Mac、Steve Job 的 Next 工作站以及 Atari 和 Commodore 的其他工作站和家用电脑。不过,这与 RISC 潮流背道而驰。许多 CISC 设计被 RISC 新设计所取代,例如在 Sun 工作站中,68000 系列被 Sun 自己的 SPARC RISC 处理器所取代。
但如果在 20 世纪 80 年代初构建新的 RISC 芯片是一项低成本、低风险的提议,那么更新并确保其获得适当的支持将会更加昂贵。市场总是不太可能支持如此多的 RISC 设计,而且这些设计之间没有任何软件兼容性。
这些简单的 RISC 设计开始添加更多功能并变得更加复杂。他们需要浮点协处理器、高速缓冲存储器、更复杂的管道等等。另外,它们必须采用越来越昂贵的工艺来制造。所有这些都使得公司开发和支持它们的成本更高。
那么,问题是:谁将在 RISC 市场取得胜利?
这不是一个容易回答的问题。由于 RISC 背后的原理相对简单,而且设计通常有很多共同点,因此架构之间几乎没有什么可挑剔的。甚至现在的情况是,以复杂指令的形式添加新功能可能会被视为违背 RISC 的整体理念。
所以这取决于其他因素。1988 年的电子杂志在“RISC Slugfest”标题下问道“营销力量是否变得比芯片性能更重要?”。文章接着说,英特尔和摩托罗拉凭借其在微处理器市场的地位,也可能成为 RISC 市场的赢家。一位评论员引用了这样的话:
“摩托罗拉因其经验、声誉、客户关系以及 68000 系列以及其他 8 位处理器产品的成功而位居榜首,英特尔也是如此。如果你看一下 RISC 的整体情况,大多数公司都不是传统的微处理器厂商。目前在 RISC 竞争中被公认为长期微处理器创新者的只有摩托罗拉和英特尔,AMD 紧随其后位列第三,但 29000 再次标志着他们的一次全新冒险。”
另一个人接着说:
“由于 RISC 架构更加简单,英特尔和摩托罗拉进入该市场的开发成本只是他们在 32 位 CISC 产品上花费的一小部分。这意味着他们有更多的[可用资源]用于软件支持、营销和推广”。
那么,谁会赢得 RISC 架构之战呢?是英特尔和摩托罗拉等现有微处理器供应商,IBM、惠普或 DEC 等计算机制造商,还是 MIPS 和 ARM 等初创公司?
大多数架构的消亡
在 RISC 的竞争者名单中,我们需要着重强调一家公司——DEC。他们在 20 世纪 80 年代中期构建了多个新的实验性 RISC 架构,甚至发布了使用 MIPS 设计的工作站后,DEC 最终致力于自己的新设计,最初称为“DECchip”,该名称将在 90 年代中期被“DEC Alpha”取代。第一个 Alpha CPU Alpha 21064 于 1992 年 11 月问世。
竞争公司可以被视为属于三个类别之一。第一批制造和销售计算机的公司需要强大的 RISC 处理器来为这些计算机提供动力。IBM、DEC、HP 和 Sun 均属于此类。其中一些公司还拥有自己的工厂来构建这些设计。
第二类是由半导体制造商组成,他们希望利用自己的制造专业知识来制造和销售 RISC 微处理器。英特尔、摩托罗拉和 AMD 均属于这一组。
最后一类由新的独立公司组成,这些公司纯粹是为了设计和销售 RISC 处理器或设计而创建的。MIPS 和 ARM(从 Acorn 中分离出来后)就属于这一类,他们既没有自己的产品可以使用他们的设计,也没有能力进行自己的设计。
每个群体都有自己的竞争优势,也都有自己的问题。
计算机制造商的产品拥有现成的市场,并且有能力开发在其系统上运行的软件堆栈。即使对于像 IBM 这样大的公司来说,这些系统的销量与基于 Intel x86 的个人计算机的销量相比也相形见绌。
一些评论家认为,英特尔或摩托罗拉凭借其制造专业知识以及在微处理器市场的良好记录,最终将在 RISC 市场取得胜利,就像他们分别在 x86 和 68000 上取得的胜利一样。但这些公司将销售 RISC 处理器,这些处理器将与他们自己领先的 CISC 设计竞争。
最后一类似乎有最大的困难。独立公司 MIPS 和 ARM(从 Acorn 分拆出来后)。他们必须争取新客户,资金有限,而且与大公司相比没有明显的竞争优势。
联盟时代
对于大多数 RISC 供应商来说,其 RISC 设计最重要的用途是在 Unix 工作站或其他台式计算机中。其中有 Sun 工作站 (SPARC)、Silicon Graphics (MIPS)、IBM PC/RT (RT)、Acorn Archimedes (ARM)、HP 工作站 (PA-RISC)。然而,这些产品产量低,通常价格昂贵,并且越来越需要与高端 x86 PC 市场竞争。
我们可以将 1990 年和 1991 年 Unix 工作站市场的销量(来源 Computerworld)与 IBM PC 兼容销量进行比较,1990 年 IBM PC 兼容销量超过 1500 万台:
与容量大得多的 x86 架构相比,RISC 架构处于巨大劣势。
对于许多这样的公司来说,他们的反应是争取其他公司支持他们的架构。这并不是什么新鲜事。“second sourcing”有着悠久的传统,拥有多个供应商被认为对于确保重要部件的供应连续性至关重要。最接近“second sourcing”的方法是将架构许可给第三方。
Sun 于 1989 年开始授权 SPARC,当时设计被传递给“SPARC International”,这是一家为发展 SPARC 生态系统而创建的新公司。SPARC 授权商包括富士通、德州仪器、Atmel、赛普拉斯和松下。
1992 年的 TI SuperSPARC 1
ARM 于 1990 年从 Acorn 中分离出来,与苹果成立了一家合资企业。尽管新公司已签约为合资伙伴进行设计,但该公司立即开始寻找能够授权 ARM 设计的新合作伙伴。
但在某些情况下,企业寻求建立联盟的目的往往不仅仅是许可,联盟通过自己的专业知识来补充彼此的技术。
高级计算环境 (ACE) 联盟于 1991 年 4 月宣布成立。ACE 汇集了 21 个成员公司,包括 MIPS、DEC、康柏、微软和 SCO(销售基于 Unix 的操作系统)等。ACE 带来了高级 RISC 计算 (ARC),它开发了围绕 MIPS 设计的硬件标准。
1991 年 10 月,AIM 紧随其后,将苹果、IBM 和摩托罗拉联合起来。这三个公司集中资源来构建基于 IBM Power 架构的设计。结果,摩托罗拉放弃了自己的 88000 架构的开发。
为了不被排除在联盟游戏之外,惠普围绕 PA-RISC 架构组建了自己的团队。Precision RISC组织是由HP领导的行业组织,成立于1992年,旨在推广PA-RISC架构。成员包括 Convex、日立、休斯飞机公司、三菱、NEC、OKI 和 Prime Computers。
然后在 1992 年,Silicon Graphics 收购了 MIPS,以确保为其工作站提供所需的处理器。
在企业起舞继续进行的同时,这些设计继续快速推进。所倡导的变革的简短列表以及采用这些变革的设计示例包括:
64 位:MIPS R4000(1991 年 10 月)
SIMD 指令:具有 MAX 指令集扩展的 HP PA-7100LC(1994 年 1 月)
超标量架构:DEC Alpha 21064(1992 年 9 月)
在每种情况下,我们都在将这些功能引入 x86 之前就对其进行了介绍。但英特尔往往会很快迎头赶上,在 RISC 中出现后不久就添加功能。英特尔在 x86 中添加的 MMX SIMD 于 1997 年出现。奔腾 (Pentium) 是第一个 x86 超标量设计,于 1993 年出现。
联盟的破裂
RISC 联盟看起来很强大,通常将财力雄厚或拥有丰富制造专业知识的公司聚集在一起。然而,他们经常遇到一个主要问题:合作伙伴的利益不一致。
第一个失败的是ACE。
ACE 从一开始就注定要失败。它支持多种架构(MIPS 和 x86)以及多种操作系统(Windows 和 Unix)。
在某些情况下,ACE 成员的利益不仅不一致,而且实际上是直接对立的:微软与 SCO(生产竞争性操作系统)以及康柏与 MIPS(最大的 x86 PC 制造商之一与竞争性架构)。
ACE 崩溃的第一个迹象出现在 1992 年 1 月,当时康柏宣布终止与 MIPS 生产台式机的合作。康柏承认:“很明显,我们合作得越多,我们就越发现我们确实有非常不同的策略。”康柏最终于当年 5 月退出 ACE。一些符合 ARC 标准的机器将由 ACE 联盟的剩余成员发布,但这永远不会成为 x86 PC 的可信竞争。
一些人猜测,康柏成立该联盟只是因为担心作为其业务支柱的 x86 PC 会输给 Sun 等公司的由 SPARC 驱动的工作站。据说康柏想在英特尔的领导下“点燃一把火”。
无论这是否是有意为之,英特尔很快就推出了 Pentium、Pentium Pro 和 Pentium II 处理器来应对 RISC 设计带来的挑战。
我们在上文看到的不少商业 RISC 设计也一一被搁置,或者变得越来越不相关。随着 x86 设计变得更加强大以及 PC 市场的增长,英特尔将重点放在其最大的产品上是有意义的。当它需要更强大的服务器 CPU 时,它于 1992 年与 HP 合作支持 Itanium(一种超长指令字 (VLIW))设计。
英特尔在 20 世纪 90 年代放弃了 i860 和 i960,转而采用基于 Arm 的 StrongARM 设计,该设计是作为诉讼和解的一部分从 DEC 获得的。随后,StrongARM 业务更名为 XScale,并于 2006 年出售给 Marvell。同样,惠普放弃了 PA-RISC,转而采用安腾。
AMD 对 Am 29000 开发的支持一直持续到 1995 年,当时从事该架构的团队被转移到 AMD 的 x86 设计上。
DEC 于 1996 年尝试与三星结盟生产 Alpha 设计,但 DEC 于 1998 年被康柏收购,康柏于 2001 年放弃了 Alpha,再次转而支持英特尔的安腾。康柏本身于 2002 年被惠普收购,Alpha 的开发在几年后结束。
Apple 继续使用 PowerPC 设计,直到 2006 年才转向英特尔的 x86 设计。苹果的 Mac 业务越来越专注于笔记本电脑,改用英特尔更节能的笔记本电脑 CPU 显着提高了性能和电池寿命。
Sun继续在其工作站中使用SPARC,但于2010年被甲骨文收购,甲骨文于2017年终止了SPARC开发。富士通暂时继续生产SPARC处理器,但在新设计中已改用自己的基于ARM的设计。
因此,MIPS 和 ARM 这两家公司的起始地位最弱。
MIPS 于 1998 年从 Silicon Graphics 中分离出来,其公司剧变的历史在 2010 年代仍在继续。2013 年,它被 Imagination Technologies 收购,四年后又将其卖给了一家风险投资公司。第二年被出售给Wave Computing,并于2020年破产。Wave更名为MIPS,但最终在2021年放弃了MIPS,转而采用RISC-V。
只剩下ARM了。那么,当其他架构消失时,为什么 ARM 能够幸存下来呢。
与联盟共赢
到 2010 年代中期,只有一种原始 RISC 架构拥有可行的未来。只是 2010 年代的 ARM 架构看起来与 1980 年代有很大不同。64 位 ARM64 指令集放弃了许多使原始 ARM 及其直接后继产品与众不同的功能(条件执行、16 位长指令)。
英国剑桥的 Advanced RISC Machines 诞生于一个看起来特别弱的联盟。苹果想要为牛顿配备处理器,但该设备从来都不是苹果业务的核心。当 Acorn Computer 推出 ARM 技术时,其业务已经陷入困境。
但合资伙伴的弱点意味着该公司必须将目光投向其创始伙伴之外的领域。
ARM 的成功可以归因于许多因素:它对移动市场的承诺和成功、满足客户需求的敏捷性、它的文化、Robin Saxby 领导的团队的承诺,或者它在移动市场上避免与英特尔竞争的方式。桌面。所有这些无疑都很重要。但还有另一个因素:它找到了一种建立联盟的方式,这种方式对 ARM 及其所有合作伙伴都有效。
ARM 方法与其他方法有何不同?ARM 不与其合作伙伴竞争,其开展业务的方式在所有合作伙伴之间建立了相对公平的竞争环境。这意味着合作伙伴关系可以持续,并且与 ARM 合作的公司范围可以继续扩大。
这种关系建立在简单而明确的合同基础上。合作伙伴将获得 Arm 设计的许可,以换取预付费用和版税。这些关系的直接性将使它们更有弹性。
结论
那么我们可以从 20 世纪 80 年代和 90 年代的 RISC 战争中学到什么呢?
我确信读者会发现,本文中几乎没有讨论支撑每种 RISC 设计的技术。因为20 世纪 80 年代 RISC 设计架构之间的差异可能并不重要。有些功能被证明存在问题,而其他创新则流行起来。我认为可以公平地说,这些都不是决定建筑是否幸存的决定性因素。事实上,这些架构中最成功的 ARM 会根据需要不断调整、添加或删除功能。
英特尔凭借 x86 成为了当时最成功的微处理器设计者,尽管 x86 架构至少在这一时期的大部分时间里明显不如其 RISC 竞争对手。运行 IBM PC 兼容软件的能力是大多数台式计算机购买决策中最重要的因素,而 PC 市场给英特尔带来的销量使其能够继续投资于 x86 架构并保持其制造领先地位。
所以最终,架构可能并不重要。
RISC 在 20 世纪 80 年代可能是一个好主意。然而,随着 20 世纪 90 年代的发展,x86 显然可以成功地与最好的 RISC 设计竞争。
第二个事实与每个联盟中涉及的公司之间关系的性质有关。利益不同的公司之间的松散联盟很难维持,并且常常会破裂和失败。
例如,对于 ACE 和 AIM,合作伙伴的利益要么从一开始就存在分歧,要么随着时间的推移而出现分歧。尽管所涉及的公司规模和能力都很大,但联盟的实力还不足以确保它们及其架构的生存。
同样,如果没有强大的合作伙伴和足够大的生态系统,任何新的 RISC 架构都不足以支持持续不断上升的开发和支持成本。
与此相反,ARM 得以生存并繁荣发展,部分原因在于不妨碍英特尔的发展,而且还在于创建了一种围绕创建、维持和扩大联盟的商业模式。
虽然RISC的诸神乱斗时代结束了,但RISC-V在2010年的横空出世,又掀开了RISC架构的另一页,这容我们后面再说。
👇👇 点击文末【阅读原文】,可查看原文链接!
*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。
今天是《半导体行业观察》为您分享的第3505期内容,欢迎关注。
推荐阅读
半导体行业观察
『半导体第一垂直媒体』
实时 专业 原创 深度
识别二维码,回复下方关键词,阅读更多
晶圆|集成电路|设备|汽车芯片|存储|台积电|AI|封装
回复 投稿,看《如何成为“半导体行业观察”的一员 》
回复 搜索,还能轻松找到其他你感兴趣的文章!
微信扫码关注该文公众号作者