回顾历史梦幻处理器:单芯片超级电脑的幻影与RISC普及(80 ...
来源:technews(台)作者:痴汉水球本篇文章将带你了解 :·i860在1990年代初期是那时代的「超级计算机单芯片」
·英特尔i860累积的宝贵经验,对后来Pentium出现的MMX指令集产生极大影响
笔者在2020年7月撰文介绍过IBM BlueGene/L(1999年)和Fujitsu A64FX(2019年)两款相隔20年、承先启后的「超级计算机系统单芯片 」。但早在1989年,英特尔发布以色列海法团队操刀的i860,不但声势浩大,是计算机工业史上第一个「百万晶体管」芯片,更被誉为「Cray On a Chip」的「单芯片超级计算机」──虽然日后证实完全是不切实际的营销炒作,但或多或少掩盖了整体更优秀的i960。
▲ 虽然以失败收场,但 i860 却充分象征 RISC 对计算机工业的影响有多深远。上图可清楚看到i860有一个整数逻辑运算单元和三个浮点运算单元(乘法、加法、图形)。
反过来说,i860 也让英特尔提前体验 MMX 之类的 SIMD(单一指令多重数据) 指令,以及冥冥之中预言超长指令集(VLIW)架构的Itanium 处理器,当碰到编译器无法充分优化代码时,究竟会发生什么惨剧。
英特尔1989年推出的初代i860 XR(代号N10),运行频率为25MHz、33MHz或40MHz,第一级cache是4kB指令加上8kB数据。1991 年问世的第二代i860 XP(代号 N11)增加 4MB 分页、更高容量第一级cache内存(16kB 指令、16kB数据)、支持外部第二级cache(82495 快取内存控制器搭配数颗 32kB 容量的 82490 SRAM)、更快系统总线(理论传输带宽 400MB/s)、频率提升至 50MHz 且提供多处理器环境必备的总线窥探协议、与可外挂的 MESI 快取数据一致性协议控制器,以上诸多强化项目,让i860 XP的晶体管数量激增到255万。
▲ i860 在 1990 年代初期可是非常吓人的怪物,说是那时代的「超级计算机单芯片」一点都不为过,只是最后还是雷声大雨点小,无疾而终。
当时i860结合了许多独一无二的功能,最引人注目的是超长指令集(VLIW)架构与高速浮点运算能力。
i860 有一个 32 位宽度的整数逻辑运算单元和三个 64 位宽度的浮点运算器(浮点加法、浮点乘法、绘图),标准「单指令标量」(Scalar)模式,i860 每个频率周期仅能撷取并执行一个指令,但「双指令超标量」(Superscalar,这名称很容易误导人,超标量流水线和超长指令集本质上是截然不同的概念)模式时,可配对一个 32 位编码长度的整数指令和一个32位编码长度的浮点指令成64位指令包,使能同时透过64位宽的总线撷取并执行,这一个萝卜一个坑能塞多满,极度仰赖编译器的指令安排。因此英特尔命名为「i860 64 位微处理器」,很显然是极易让人困惑的说法,坊间已长期以讹传讹积非成是的「如何定义 64 位」只会越来越乱无章法。
i860 还有一种看起来很神奇的「用户可见流水线」(User Visible Pipeline)模式,当指令用到某个「存放多频率周期运算结果」的暂存器,可直接使用目前值,而不必等待最后结果,这让笔者隐约想起 DEC Alpha 为了追求更佳浮点运算效能的「不精确中断」和 Itanium 处理器的背后精神「Relax Limitations For Performance」。
此外,i860 内置浮点运算器,32个32 位浮点数据暂存器,可为「16 个 64 位双倍精确度浮点」或「8 个128 位四倍精确度浮点」。附着在浮点运算器的「绘图单元」(是的,你绝对没看错)可当成「16个64位整数」,执行线条绘制、Gouraud着色、去除隐藏线条的Z缓冲(ZBuffer),与如SIMD指令的让64位数据路径处理8个8位像素、4个16位像素或2个32位像素。
▲ 多处理器配置是 i860 XP 的重头戏,英特尔就以此为基础,建造 4096 颗 i860 XP 的 Paragon XP/S 超级电脑。
英特尔 i860 累积的宝贵经验,对后来 Pentium 出现的 MMX 指令集产生极大影响,负责 i860 的主架构师、以色列海法研发中心的 David Perlmutter,也是 Pentium MMX(P55C)主导者,之后更藉领导Pentium M「Banias」体系发展,替英特尔变出救命稻草,奠定世人对英特尔的以色列人「 擅长精炼现有产物,压榨最多潜在价值等既定印象。
乍看i860好像很厉害,号称频率33MHz时,拥有高达66M FLOPS(每秒6,600万次浮点运算)的理论浮点运算效能,远远超越「介于5M~10M」的主流处理器,但还是老话一句:整个i860的设计都基于「编译器能有效处理好指令排程任务」,但现实证明是不可能的任务。宣称峰值60M~80M FLOPS的i860 XP(英特尔于HotChips公布的数字更是惊世骇俗的100M FLOPS),即使执行人工撰写的组合语言代码,也顶多达40MFLOPS,甚至大多数编译器,连实现区区10MFLOPS都有困难。
i860 还有更严重的问题:无法高效快速执行多进程(Process)储存和重现处理器状态(Context Switch,可翻译成上下文交换或「环境切换」)。当多工操作系统的多行程要共享单一处理器,交换处理器的行程或发生中断(Interrupt)时,必须先储存目前行程状态,再将准备执行的行程状态载回处理器。i860 最理想也需最少 62 个时钟周期,最差更高达「2 千个」,使其根本无法当成一般用途的泛用处理器。想当初,Pentium MMX 那共用浮点寄存器的 MMX 暂存器切换,才不过「几十个」时钟周期,就让很多人不满意了。
总之,简单一句话回答 i860 没有成功的主要原因:账面空有优异的理论性能,但缺少配套的最佳化编译器(英特尔又再次栽在软件)及正常行程切换,无法发挥「一定程度」潜能。时任英特尔CEO的安迪·葛洛夫(Andy Grove)就暗示i860市场失败,应归因于「分身乏术」(being stretched too thin),同时推出「基于CISC,却兼容所有个人计算机软件」的80486和「基于RISC,效能很棒,却不兼容任何现有软件」的i860,让消费者完全搞不懂英特尔到底要走哪个方向, 最终市场依旧做出习以为常的决定。
话说回来,i860 还是导入超级计算机,最具代表性者莫过于英特尔自家 Paragon 系列和 iPSC(Personal SuperComputer)系列,前者长出多达 4,096 颗 i860 XP 的 Paragon XP/S 超级计算机,后者第三代产品则是用最多 128 颗 i860 XP 的iPSC/860「个人超级计算机」。
▲ 英特尔Paragon 超级计算机的 CP16 运算节点,可很清楚看到三颗 i860 XP。(Source:维基百科)
除此之外,具GPU单元的i860也用在工作站,如NeXT Cube工作站的NeXTDimensions显卡图形加速器和SGI RealityEngine的几何处理引擎(Geometry Engine)。美国军方亦采购相当数量的i860,给航空计算和数字数据处理辅助处理器使用。
▲ 昔日 3D 图形处理霸主 SGI 的 RealityEngine 几何处理引擎,上面壮观的 12 颗 i860 XP。
有趣的是,至今构成微软 Windows 操作系统心脏的 Windows NT 系统核心,最早就以代号「Dazzle」的 i860 XR 工作站为最初平台,后面才陆续移植到「Jazz」MIPS 处理器系统、80386、Alpha和 PowerPC,所以一直不乏 NT 简写并不是「New Technology」而是 i860 XR 代号「N-Ten」(N10)的说法。
行文至此,i860 处理器本身是英特尔尝试RISC架构时的产物,继i960再次用实际行动面对RISC新潮流,不放弃CISC同时,也做点新东西试手气,而从RISC出现后,更无人胆敢逆向操作、自找麻烦打造全新CISC指令集。英特尔i960和i860充分象征无论新来还是后到的处理器厂商,整个计算机工业界,无不遵循RISC精神和思路,改进或设计指令集架构和处理器微架构。
斯坦福大学MIPS共同设计者Steven Przybylski 说过的名言:「RISC 是1985 年后的所有电脑。」 (RISC:any computer announced after 1985.)其意就在此,RISC 的普及大势,仿佛飞出全垒打墙的棒球和变心的爱人,一去不回头。
既然RISC是历史的必然,那身为RISC始祖精灵的蓝色巨人IBM,要怎样设法将旗下纷乱的中端CISC产品线,统合至崛起中的IBM 801后代,就是非常有趣的话题,这也造成IBM的RISC指令集陷入空前绝后的版本分裂,耗费近20年才再度统一。这就是下一期的主题:镜头转回 IBM,一窥 AS/400 的诞生与 PowerPC 的演进史。
<hr/>推荐阅读:
[*]回顾历史梦幻处理器:计算机架构、商业大型机与超级电脑的诞生(1960 年代)
[*]曾经的黑科技:三进制计算机
[*]曾领先美国13年!突破封锁/禁运,前苏联/俄罗斯的CPU自研之路!
页:
[1]