曾领先美国13年!突破封锁/禁运,前苏联/俄罗斯的CPU自研之路!
2020-05-12 13:06:07 EETOP整理自technews 前苏联计算机工业象征的Elbrus电脑系列
Elbrus崛起路上的两位重量级大人物
1999年初倍受争议的《俄罗斯人来了》
充满俄国式暴力美学的Elbrus 2000
高性能能处理器的研制能力仍为国家安全的重中之重
2019年,俄罗斯制「Elbrus」处理器执行游戏《上古卷轴III》画面在网路曝光,提醒世人,俄罗斯并未放弃将处理器视为核心技术、企图掌握自主研发能量的努力。
注:Elbrus为高加索山脉主峰,为欧洲最高峰,中文翻译:厄尔布鲁士峰
这30年来,坊间也一直不缺「很少有人知道,Intel的Pentium和Itanium处理器,在世界上最著名的技术源头,其实来自于苏联的超级电脑与优秀工程师」之类的乡野谣传。
从1947年到1991年的冷战,世界分成两大阵营,在这将长达近半世纪的时间内,前苏联也建立起和西方世界分厅抗拒的计算机工业技术体系。回顾历史,不可否认,前苏联在计算机技术的发展中,取得相当重要的成就。
各位想想看,苏联早在1957年就发射人类第一颗太空卫星,震撼了整个西方世界,1965年更创下人类史上第一次的太空漫步,看在庞大的国家核心重工业份上,加上航空航天和核能等琳琅满目的先进科技研究,难道苏联的科学家都非得自己用纸笔,去算那些有字天书般的数学方程式吗?无论如何,苏联非得自行打造高效能电脑,以满足尖端科技的计算需求不可。(EETOP编辑)
早从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突破日本防空网,迫降在日本北海道的函馆,向美国和日本投诚,当然马上被拆个一干二净,好好的研究一番。让西方世界大吃一惊的,除了苏联的最先进战斗机「竟然是钢做的(被戏称「飞得比飞弹还快的不锈钢」)」,再就是航电系统「还在用真空管」!(EETOP编辑)
论军用电子科技,过去约定俗成的「苏联落后西方十年」都还是太过客气的说法,直到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年,这应该会颠覆很多人对前苏联计算机技术水准的刻板想像。(EETOP编辑)
讽刺的是,因俄国人「太早体验」超越时代的先进处理器架构,觉得这类硬件设计太过复杂,反而转向超长指令集架构(VLIW),企图将复杂度转嫁到软件,才催生了在1999年让众人瞠目结舌的Elbrus 2000。
在这里必须介绍被誉为「俄罗斯的克雷(Cray)」、苏联超级电脑之父Boris Babayan,出生于1933年,现已高龄87岁,从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年2月,【微处理器报导】发表了《The Russians Are Coming》一文,深入介绍当时尚无实品,仍处于VerilogRTL语言阶段的Elbrus 2000 处理器。
这篇看似平凡的报导,之所以引起争议和质疑,有3个主因:
俄国人摆明借此来找肯掏钱的金主:Boris Babayan在英属开曼群岛,成立了号称拥有366名成员研发团队的Elbrus International,宣称他们没有足够的资金购置EDA工具,需要6,000万美元和3年时间,才能完成设计。然后将Verilog语言落实成真正的处理器产品,光要做出嵌入式应用的缩水版E2K处理器,就开价500万到1,000万美元的经费。换言之,要做好做满完整的产品规格,开销只会更高。
极度不可思议的超高效能、超小芯片面积与超低功耗:假设Elbrus团队宣称的效能为真,那将是当时的王者Alpha 21264(EV68)的2.5到3倍,而且耗电量竟然只有一半,晶体管数量也才2800万。天知道前苏联到底藏了哪些不为人知的「黑科技」,但这也太夸张了,怎么看都不像是真的。
看完这张比较表后,各位大概也不难理解,为何Intel和HP携手合作的Itanium会出师不利了,并且被前苏联的VLIW专家,视为很好殴打的沙包,在宣传文件与技术白皮书,紧紧的抓着Itanium穷追猛打。
透过二进制动态编译的软件手段件容x86指令集:这让人不得不第一时间联想到Transmeta。事实上,TransmetaCEO兼共同创办人Dave Ditzel,在Sun任职期间,于1992年到1995年,还真的跟Elbrus团队共事过。但在1999年,经由软件途径相容x86的效率,并未获得充分的实证,更让Elbrus团队宣示的惊异效能,充满了满满的问号。
在1999年,笔者还只是躲在学生宿舍熬夜上网混日子的文组大学生,没事闲晃Micro Design Resources(主办微处理器论坛与出版微处理器报导的公司)的网站,寻找计算机结构课程作业要用到的资料。一翻到这篇《The Russians Are Coming》 ,看完之后,除了满脸黑直线,就无法有其他的生理反应了,更没料到事隔多年,他们还真的做出如假包换的实际产品。
研发超级电脑长达数十年,「追求极致的平行化」是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个浮点运算,光靠帐面上的数字就活活吓死人。
双核心化的数据Cache和暂存器: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 一样小。更何况,这票俄国人对当代的先进半导体制程,也是欠缺经验,预估的2800万晶体管数量,实在是彻头彻尾的乐观过头。
E2K倒是有个符合「军事等级安全性」而承袭自Elbrus列祖列宗的特殊技能:每一笔32位元数据都附上2位元标签,近似于x86指令集分页表中的禁止执行位元(NX Bits),但更加坚壁清野,据称能让E2K可硬件进行动态型别检查(Dynamic Type Checking),有助于保护软件运行环境不受不必要的更改和篡改,提升系统安全性。这让人看起来一头雾水的功能,其真实效果和真正作用,恐怕只有前苏联红军和俄罗斯国防军才会知道了。
预先准备分支目标指令:为了缩短分支代价,减少撷取分支目标指令的时脉周期,E2K提供了同时最多可执行3个的「分支目标准备」(Branch Preparation)指令,编译器可将其放在分支之前,从指令快Cache预先获取分支指令的目标。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年的2800万爆增到7580万,证明当年外界的诸多质疑并非空穴来风,昔日「0.18um制程时126 mm² 晶片面积」会超标多少,就死无对证了。
虽然MCST持续增加E2K核心数量,也不间断的微幅改进核心架构,一路将Elbrus处理器推进到16核心(硬件动态指令排程、主频2GHz、整合南桥晶片组、60亿晶体管、台积电16nm制程、晶片面积400 mm²、功耗100W、2021年量产),但光从历代产品的制程和芯片面积,就足以断定Elbrus对上同期Intel与AMD的产品,俄国人的「x86相容处理器」毫无竞争优势,丝毫占不了便宜。
既然产品缺乏竞争力,那俄国人干嘛死撑活撑,乖乖的掏钱购买美国人的产品不就得了?但从国家安全的角度去考量,完全不是这么一回事,特别对俄罗斯这种长期跟西方国家对抗的大国来说,更是如此。从民生到军事,没有不需要高效能处理器的地方,天底下没有任何对前途抱有企图心的国家,会想眼睁睁的看着像处理器这样的核心技术,完全受制于人。
以俄罗斯来说,尽管计算机技术明显不如众多战略竞争者,近年来制定并实施「2013-2025年电子工业发展规划」和「国防工业综合体发展规划」等产业战略,仍尽其所能的对内采购国产电子产品,维持本国的软硬件研发能量(笔者必须再次强调:Elbrus二进制动态转译技术的重要性,绝不低于处理器硬件)。否则哪天出现大规模国际冲突,甚至爆发战争,美国人一发动禁运,一切就都完了。