在 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 命名蘇聯用來開發飛彈系統、核子武器和太空計畫的超級電腦,可見地位之崇高與期待之殷切。

(Source:Koshmarov at Russian Wikipedia / CC BY-SA)
時下關於計算機組織結構的主流歷史與課堂上使用的教科書,清一色都是出自於西方世界(尤其是美國)的產物,鮮少對冷戰時期共產鐵幕內的介紹。目前存在的俄羅斯半導體相關企業,幾乎成立於 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 的傳說。

(Source:Thebeatles84 / CC BY-SA)
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 日歸檔的某份專利權,做為起點的精彩故事。

(首圖來源:pixabay)
"更是如此" - Google 新聞
April 10, 2020 at 02:53PM
https://ift.tt/3b0wcMS
掀開蘇聯超級電腦血統Elbrus 處理器的神祕面紗 - 科技新報 TechNews
"更是如此" - Google 新聞
https://ift.tt/2VUFiGf
Shoes Man Tutorial
Pos News Update
Meme Update
Korean Entertainment News
Japan News Update
Bagikan Berita Ini
0 Response to "掀開蘇聯超級電腦血統Elbrus 處理器的神祕面紗 - 科技新報 TechNews"
Post a Comment