掀开苏联超级电脑血统 Elbrus 处理器的神祕面纱-

掀开苏联超级电脑血统 Elbrus 处理器的神祕面纱

阿里云服务器优惠

在 2019 年,俄罗斯製的「Elbrus」处理器执行游戏《上古卷轴 III》的画面在网路上曝光,提醒世人,俄罗斯并未放弃将处理器视为核心技术、企图掌握自主研发能量的努力。

这 30 年来,坊间也一直不缺「很少有人知道,Intel 的 Pentium 和 Itanium 处理器,在世界上最着名的技术源头,其实来自于苏联的超级电脑与优秀工程师」之类的乡野谣传。

从 1947 年到 1991 年的冷战,世界分成两大阵营,在这将长达近半世纪的时间内,前苏联也建立起和西方世界分庭抗礼的计算机工业技术体系。回顾历史,不可否认,苏联在计算机技术的发展中,取得相当重要的成就。

各位想想看,苏联早在 1957 年就发射人类第一颗太空卫星,震撼了整个西方世界,1965 年更创下人类史上第一次的太空漫步,看在庞大的国家核心重工业份上,加上航太和核能等琳瑯满目的先进科技研究,难道苏联的科学家都非得自己用纸笔,去算那些有字天书般的数学方程式吗?无论如何,苏联非得自行打造高效能电脑,以满足尖端科技的计算需求不可。

早从 1948 年,苏联就建造了用于研发弹道飞弹与火箭的 MESM(Malaya Elektronno-Schetnaya Mashina,虽然以今天的观点来看可是一点都不小的「小型电子计算机」),在 1950 到 1960 年代,再由 5,000 根真空管组成的 BESM(Bolshaya Elektronno-Schetnaya Mashina)系列所接替。

BESM 系列相当长寿,做为末代机种的 BESM-6,从 1968 年到 1987 年,总计生产了多达 355 台,在 1992 年才陆续被技术领先好几个世代的 Elbrus-1K2 取代。

至于一般民生应用的计算机产品,毕竟苏联在这段时期,在怎幺说也是仅次于美国的世界第二大经济体,就算计算机技术着重在军工产业,也不代表苏联人民就没电脑和网路可用。但冷战结束后,直至今日,却仍然有不少人依然对此偏见深信不疑。

在 1980 年代,苏联陆续仿照西方世界的产品,研製民用电脑与电子游戏机,像普及的 DEC PDP-11 和 Apple II 都成为苏联「借鑒」的对象。1984 年,苏联大学与高等学术机构的数学和物理相关科系,普遍设置电脑教室。共产世界的网际网路服务和广域无线通讯,也在 1991 年苏联解体前陆续实用化。

但整体看来,前苏联在电子工业和半导体产业,远远落后于西方阵营和日本,一直是不争的事实,因为俄国人认为积体电路在核子战争的可靠度与抗干扰都不佳,走向了偏好小型化真空管的路线(但这不代表没在研发积体电路,只是投入优先权较低),从此被西方阵营按着头在地上摩擦好几十年。

1976 年 9 月 6 日,一架苏联空军的 Mig-25 突破日本防空网,迫降在日本北海道的函馆,向美国和日本投诚,当然马上被拆个一乾二净,好好的研究一番。让西方世界大吃一惊的,除了苏联的最先进战斗机「竟然是钢做的(被戏称「飞得比飞弹还快的不鏽钢」)」,就是航电系统「还在用真空管」。

论军用电子科技,过去约定俗成的「苏联落后西方十年」都还是太过客气的说法,直到 Su-27 战斗机,都还发生雷达严重过重,导致重新设计机体的状况。不过今日的音响爱好者,可能得多多感谢当年俄国人的错误决定,让他们还买得到便宜耐用的苏联军规真空管,听说还包括 Mig-25 专用的高档货色。

苏联解体后,俄罗斯继承了其计算机工业的主体,但也失去了国家的全力支持,人才大量外流,既有的技术研发团队也急着寻求资金挹注,这也埋下了在 1999 年 2 月,做为苏联计算机工业象徵的 Elbrus,在微处理器报导(Microprocessor Report)的争议性亮相。

做为苏联计算机工业象徵的 Elbrus 电脑系列

Elbrus 山位于俄罗斯西南部大高加索山脉,其海拔 5,642 公尺的最高峰,不仅是俄罗斯的最高点,更是欧洲第一高峰。俄国人以 Elbrus 命名苏联用来开发飞弹系统、核子武器和太空计画的超级电脑,可见地位之崇高与期待之殷切。

时下关于计算机组织结构的主流历史与课堂上使用的教科书,清一色都是出自于西方世界(尤其是美国)的产物,鲜少对冷战时期共产铁幕内的介绍。目前存在的俄罗斯半导体相关企业,几乎成立于 1950 到 1960 年代,做为苏联计算机工业象徵的 Elbrus 电脑系列(现属于 MCST,Moscow Center for SPARC Technologies,莫斯科 SPARC 技术中心),其产品历程堪称其缩影。

论「世界上第一个非循序指令执行的 RISC 处理器」,一般的制式答案是 1990 年的 IBM Power1(限于浮点运算指令),或者 1993 年的 IBM PowerPC 601。但在 1978 年完成的苏联 Elbrus-1,就已经使用结合超纯量、非循序执行与预测执行的 RISC 处理器了,领先美国人整整 13 年,这应该会颠覆很多人对前苏联计算机技术水準的刻板想像。

讽刺的是,因俄国人「太早体验」超越时代的先进处理器架构,觉得这类硬体设计太过複杂,反而转向超长指令集架构(VLIW),企图将複杂度转嫁到软体,才催生了在 1999 年让众人瞠目结舌的 Elbrus 2000。

如果对 VLIW 尚无认识,请参照笔者前文「VLIW 身为大量非主流处理器技术基础的超长指令集,有哪些神奇魅力?」

在 Elbrus 崛起之路上的两位重量级大人物

在这里必须介绍被誉为「俄罗斯的 Seymour Cray」、苏联超级电脑之父 Boris Babayan,出生于 1933 年,现已高龄 86 岁,从 1950 年代就历经苏联早期计算机与超级电脑的研发,担任 Elbrus-1 与 Elbrus-2 的副首席设计师,并负责超长指令集架构的 Elbrus-3,和后继的 Elbrus 2000(Elbrus-3 的单晶片实作)与 Elbrus90micro(Elbrus 的 SPARC v9 指令集相容处理器)。

苏联解体后,理所当然的,美国人一定对老对手的计算机技术深感兴趣。Boris Babayan 从 1992 年开始,在当年成立的 MCST(Moscow Center of SPARC Technologies)与昇阳(Sun)一同研发 UltraSPARC 处理器架构、作业系统(包含Solaris)、编译器与多媒体函式库,间接或直接的帮助了 Sun 的崛起。

据说,原本先找上门洽谈合作的是惠普(HP),那时 HP 和 Intel 正展开 IA-64 指令集与 Itanium 处理器的研发,但 Boris Babayan 早在 1989 年,就跟 Sun 创办人 Scott McNealy 碰头了。

Boris Babayan 在 2004 年 8 月加入 Intel,担任 Intel 莫斯科研发中心的微处理器研发主管,也成为第二位获得 Intel 院士(Fellow)头衔的欧洲人。此外,他也得到两项前苏联的最高荣誉,1974 年在电脑辅助设计(CAD)的成就拿到「十月革命勋章」,1987 年因 Elbrus-2 超级电脑取得「列宁勋章」,看起来很威。

此外,也值得一提 Elbrus 另一位重要人物 Vladimir Pentkovski,1946 年生,2012 年逝世于美国,享年 66 岁。他也参与过 Elbrus-1 与 Elbrus-2 超级电脑的研发,并领导高阶程式语言 El-76 的开发。在 1986 年,他带领 32 位元 El-90 微处理器的研製,1987 年设计完成,1990 年样品问世,基于 El-90 的 El-91C 则随着苏联解体而无疾而终。坊间对 El-90 的普遍评价是「很像稍晚出现的 Intel Pentium」,江湖也流传着 Pentium 此名,其实源自于 Vladimir Pentkovski 的传说。

Vladimir Pentkovski 在 1990 年代初期移民到美国,1993 年进入 Intel 并晋升为首席工程师,主导 Pentium III 的架构(重点在于新增 128 位元 SIMD 的 SSE 指令集,以及为此改善微架构),后来他也长眠于 Pentium III 研发工作主要所在地的加州 Folsom。无独有偶,Intel 下一个「升级现有处理器的製程,并趁机增加大量新指令」的 45nm 製程 Core 2「Penryn」(SSE4 指令集),也是在此地诞生。也许 Intel 在这里的团队,对这件事颇具心得,或本来就专精于此。

各位或多或少应能察觉到:冷战结束后,在某些科技领域,美国逐步拉开与俄国的差距,前苏联人才大量外流,很可能是举足轻重的因素。

总之,Elbrus 以超级电脑起家,其深远影响也就原封不动的呈现在 Elbrus 2000 的特色上,让世人见识到俄国人独特的思考逻辑与行事风格。

1999 年初那篇倍受争议的「俄罗斯人来了」

在 1999 年 2 月,微处理器报导发表了《The Russians Are Coming》一文,深入介绍当时尚无实品,仍处于 Verilog 硬体行为描述语言阶段的 Elbrus 2000 处理器。

这篇看似平凡的报导,之所以引起争议和质疑,有 3 个主因:

俄国人摆明藉此来找肯掏钱的金主:Boris Babayan 在英属开曼群岛,成立了号称拥有 366 名成员研发团队的 Elbrus International,宣称他们没有足够的资金购置电脑辅助设计(CAD)工具,需要 6,000 万美元和 3 年时间,才能完成设计。然后将 Verilog 语言落实成真正的处理器产品,光要做出嵌入式应用的缩水版 E2K 处理器,就开价 500 万到 1,000 万美元的经费。换言之,要做好做满完整的产品规格,开销只会更高。

极度不可思议的超高效能、超小晶片面积与超低功耗:假设 Elbrus 团队宣称的效能为真,那将是当时的王者 Alpha 21264(EV68)的 2.5 到 3 倍,而且耗电量竟然只有一半,电晶体数量也才 28M。天知道前苏联到底藏了哪些不为人知的「黑科技」,但这也太夸张了,怎幺看都不像是真的。

看完这张比较表后,各位大概也不难理解,为何 Intel 和 HP 携手合作的 Itanium 会出师不利了,并且被前苏联的 VLIW 专家,视为很好殴打的沙包,在宣传文件与技术白皮书,紧紧的抓着 Itanium 穷追猛打。

透过二进位码动态编译的软体手段相容 x86 指令集:这让人不得不第一时间联想到 Transmeta。事实上,Transmeta 执行长兼共同创办人 Dave Ditzel,在 Sun 任职期间,于 1992 年到 1995 年,还真的跟 Elbrus 团队共事过。但在 1999 年,经由软体途径相容 x86 的效率,并未获得充分的实证,更让 Elbrus 团队宣示的惊异效能,充满了满满的问号。

在 1999 年,笔者还只是躲在学生宿舍熬夜上网混日子的文组大学生,没事闲晃 Micro Design Resources(主办微处理器论坛与出版微处理器报导的公司)的网站,寻找计算机结构课程作业要用到的资料。一翻到这篇《The Russians Are Coming》 ,看完之后,除了满脸黑直线,就无法有其他的生理反应了,更没料到事隔多年,他们还真的做出如假包换的实际产品。

充满俄国式暴力美学的 Elbrus 2000

研发超级电脑长达数十年,「追求极致的平行化」是 Elbrus 的基因,所以这些俄国人对于 VLIW 的看法也极度的独树一帜,让起源于 Elbrus-3 超级电脑的 Elbrus 2000(E2K)看起来就不太像西方人会想出来的玩意。

从 VLIW 变成「VLI-CIS」:标準的 VLIW 处理器,假如编译器能力不足,将会导致指令包内塞 NOP(什幺都不做的 No-Operation),浪费执行单元、记忆体空间与频宽,并降低执行效能。俄国人索性就让 E2K 变成像 CISC 一样可变指令长度的 VLIW,想跑什幺就放什幺,一丝一毫都不会浪费。

有趣的是,同样在 1999 年面世的 Sun MAJC(Microprocessor Architecture for Java Computing,发音是 Magic)处理器,也是可变指令长度的 VLIW「指令封包」,有鉴于 Elbrus 团队与 Sun 的合作经历,说这只是单纯的巧合,大概也没人会信吧。但 MAJC 被 Sun 用来打造 XVR-1000 和 XVR-4000 工作站专业绘图卡,却让人感到有些意外。

E2K 单一指令包长度,从 1 到 15 个 32 位元指令,加上标示后面整排指令的排序与行为的 32 位元标头(Header),介于 64 位元到 512 位元。相较于 E2K,仅仅 3 个 41 位元指令加上 5 位元指令排序码的 Intel IA-64(Itanium 处理器)简直小巫见大巫。而 IA-64 也曾是 E2K 预定「相容」的指令集之一,不限 x86。

然后标头长达 32 位元,可存放更多的资讯,不只标定指令长度,更可定义複杂的运算行为,协助编译器进行更积极的最佳化,实现更有效率的静态指令排程。

一个 VLIW 指令包只有 3 个指令的 IA-64,容易因多路指令排程浪费指令包空间,造成管线气泡(Pipeline Bubble)。

相较之下,E2K 单一 VLIW 指令包可吃 1 到 15 个指令,弹性就大多了,也具备减少呼叫副程式资料传输量的暂存器框格(Register Window),更额外配置了阵列资料预先撷取缓冲区(Array Prefetch Buffer,APB),以便于执行超级电脑常见的迴圈重叠(Loop Overlapping)。

Elbrus 团队号称 E2K 理论上可个别做到单一时脉週期 14 个整数运算、或 16 个浮点运算、或当迴圈重叠时 24 个浮点运算,光靠帐面上的数字就活活吓死人。

双核心化的资料快取记忆体和暂存器:VLIW 处理器内部也需相匹配的宽敞执行单元,因应超长的指令包。E2K 的 6 个整数逻辑运算单元(不含除法)、4 个浮点运算单元(加法和乘法)、4 个载入回存单元、3 个引述(Predicate)单元、2 个 MMX 加法 / 减法单元、2 个 MMX 乘法 / 搬移单元、1 个整数浮点除法单元(位于 ALC5)、1 个分支处理单元,分散在 6 个执行单元(ALC 0 到 ALC 5)区块。

但 E2K 的暂存器档案由 256 个 64 位元所组成,整数和浮点共用(意谓 80 位元延伸双倍精确度浮点数或 128 位元 SIMD 需动用两个暂存器),如果这幺多的运算,要同时存取同一块暂存器档案与资料快取记忆体,势必拉长关键电路路径与存取延迟,更别提资源冲突了。

面对这个问题,俄国人的想法就如同某位台湾前总统的「便当一个吃不够,你可以吃第二个」,索性放了两块内容同步的暂存器档案(Register File,RF)和资料快取记忆体(L1 Data Cache,L1D),分而治之,乍看之下还以为看到了 AMD 推土机家族的丛集多执行绪双核。此外,暂存器档案的存取介面埠,更是骇人听闻的「20 读取,10 写入」。

採用如此暴力的高成本手段,解除潜在的效能瓶颈,的确非常的「俄式风格」,极度的「超级电脑」,也难怪当时根本没人相信,在相近的半导体製程,E2K 晶片能够做的跟 Alpha 21264 一样小。更何况,这票俄国人对当代的先进半导体製程,也是欠缺经验,预估的 28M 电晶体数量,实在是彻头彻尾的乐观过头。

E2K 倒是有个符合「军事等级安全性」而承袭自 Elbrus列祖列宗的特殊技能:每一笔 32 位元资料都附上 2 位元标籤,近似于 x86 指令集分页表中的禁止执行位元(NX Bits),但更加坚壁清野,据称能让 E2K 可硬体进行动态型别检查(Dynamic Type Checking),有助于保护软体运行环境不受不必要的更改和篡改,提昇系统安全性。这让人看起来一头雾水的功能,其真实效果和真正作用,恐怕只有前苏联红军和俄罗斯国防军才会知道了。

预先準备分支目标指令:为了缩短分支代价,减少撷取分支目标指令的时脉週期,E2K 提供了同时最多可执行 3 个的「分支目标準备」(Branch Preparation)指令,编译器可将其放在分支之前,从指令快取记忆体预先撷取分支指令的目标。E2K 的指令快取的「暴力度」亦不遑多让,可同时送出多达 4 个 512 位元最长指令包(总长度 2048 位元),也充满了超级电脑的色彩。

另外,E2K 亦具有 VLIW 指令集常见的引述执行(Predicated Execution)机制,当可在分支发生之前,确认分支条件的结果,编译器即可使用引述码取代分支,来控制指令执行流程。

但假若碰到引述执行无法应付的场合,像分支发生时,来不及确定分支条件结果的话,可选择性的启动「双向预测执行」,彻底挥霍执行单元,两边指令流一起跑。当分支条件尘埃落定,不论是否执行完毕,仅保留正确的那一边。不愧是俄国人,有够土豪。

动态二进位码编译实现 x86 指令集相容性:E2K 并非原生 x86 处理器,类似系出同源的 Transmeta,需藉由动态二进位码编译技术相容 x86 程式码,必然带来转译过程的效能折损,但也蕴含了对应未来新增 x86 指令的弹性。按照 Elbrus 团队的原始计画,E2K 将同时支援 x86 与 IA-64,但后者已被 Intel 宣告死亡,被 x86-64 取而代之,也就没进展下去的必要。

理想与现实的差距究竟有多大

E2K 迟至 2005 年才以 0.13um 製程晶片粉墨登场,即使耗电量仅 6W,第一阶资料快取容量从 8kB 激增到 64kB,但时脉却从 1.2GHz 大幅缩水到 300MHz(那时 Intel Pentium 4 已进逼 4GHz 大关),电晶体数量从 1999 年的 28M 爆增到 75.8M,证明当年外界的诸多质疑并非空穴来风,昔日「0.18um 製程时 126 mm² 晶片面积」会超标多少,就死无对证了。

虽然 MCST 持续增加 E2K 核心数量,也不间断的微幅改进核心架构,一路将 Elbrus 处理器推进到 16 核心(硬体动态指令排程、时脉 2GHz、整合南桥晶片组、60 亿电晶体、台积电 16nm 製程、晶片面积 400 mm²、功耗 100W、2021 年量产),但光从历代产品的製程和晶片面积,就足以断定 Elbrus 对上同期 Intel 与 AMD 的产品,俄国人的「x86 相容处理器」毫无竞争优势,丝毫占不了便宜。

高效能处理器的研製能力仍为国家安全的重中之重

既然产品缺乏竞争力,那俄国人干嘛死撑活撑,乖乖的掏钱购买美国人(或许得加上「台湾生产」)的产品不就得了?但从国家安全的角度去考量,完全不是这幺一回事,特别对俄罗斯这种长期跟西方国家对抗的帝国主义大国来说,更是如此。从民生到军事,没有不需要高效能处理器的地方,天底下没有任何对前途抱有企图心的国家,会想眼睁睁的看着像处理器这样的核心技术,完全受制于人。

以俄罗斯来说,儘管计算机技术明显不如众多战略竞争者,近年来制定并实施「2013-2025 年电子工业发展规划」和「国防工业综合体发展规划」等产业战略,仍尽其所能的对内採购国产电子产品,维持本国的软硬体研发能量(笔者必须再次强调:Elbrus 二进位码动态转译技术的重要性,绝不低于处理器硬体)。否则哪天出现大规模国际冲突,甚至爆发战争,美国人一发动禁运,一切就都完了。

相对于俄罗斯,连续十年身为全球最大半导体材料市场与晶圆代工封测重镇的台湾,在这方面所展现的态度,似乎就给人有点身在福中不知福的感觉,但也许这并不是什幺坏事就是了。乐见俄国人继续下单给台积电与相关供应链,增强台湾的「硅盾」,进一步确保台湾的国家安全。

看完苏联血统 Elbrus 处理器的演进源流与历史概要后,接着就要进入唤起读者过往回忆的重要主题:同为 VLIW 架构与软体相容 x86 指令集、时代眼泪之一的 Transmeta,一个在 1996 年 8 月 20 日归档的某份专利权,做为起点的精彩故事。

赞(0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • potplayer
  • directx