因有人一直好奇「IBM不是已經有傲視世界的Power處理器了,為何還有看起來好像更厲害卻又不知道到底用來幹嘛的Z系列,而且還是藍色巨人真正的伺服器台柱?」,筆者不得不重炒「大型主機(Mainframe)」這盤歷史超過半個世紀的冷飯。不過為何方便各位科科迅速進入狀況,就採用腦內補完的問答,希望不會被編輯部視為詐騙稿費的不當行為。
今日的大型主機,其定義是什麼?
如果要筆者真心話大冒險,根據當下的市場現況,只要一句「從1964年的IBM S/360一路發展到今日System Z的徒子徒孫」就打死了,但這極度的政治不正確,所以請各位科科繼續爬文看下去。
是不是電腦看起來比較大,外觀像冰箱,就叫做大型主機?
不對,大型有其嚴謹定義,就算賣出一堆高階伺服器的IBM,也不會用「大型主機」稱呼其源自IBM 801計畫的RISC體系伺服器,僅System Z一家,別無分號。
大型主機是不是超級電腦(Supercomputer)?
當然不是,大型主機是針對一般交易需求與多工環境而打造的高可用度集中式系統,超級電腦則是為了高密度浮點運算而最佳化的分散式運算平台,但好像一直不少人傻傻的搞不清楚這兩者的差別。
大型主機的優點和訴求是什麼?
首先,須提供足以支撐大量使用者與巨大交易量時(如每個月五號發薪日),依舊可穩定輸出的表現,所以必備極高的可靠性、超強的I/O效能、一絲不苟的加密安全性與極致的虛擬化能力,軟硬體高度垂直整合到完美的程度,實際上可以展現的真實世界效能,遠遠超出帳面上的MIPS數字,這也是有別於超級電腦截然不同的特色。
其次,因數十年來採用COBOL語言撰寫的核心業務程式碼,往往不會也不能被更動(因為恐怕已經沒有人完全看得懂裡面的商業邏輯),大型主機應具有毫無妥協的指令集回溯相容能力,確保過去的程式都可穩定的在新系統上執行,這對銀行和金融機構特別的重要。
是不是一定要古老的CISC指令集,才有資格被稱為大型主機?
在高階語言編譯器技術尚未成熟,記憶體容量小的可以的1960年代,透過微碼(Microcode)組成功能強大、盡其所能的貼近高階語言、並能支援豐富的字串與十進位數字處理的複雜指令集,並執行大量COBOL語言,算是大型主機誕生時的必備條件。但隨著時間演進,這定義也逐漸受到挑戰,也許連作業系統都無法買斷、須按時繳交「保護費」的封閉特性,才是唯一有意義的基準。
既然如此古老,那應該也引領了無數計算機工業史的創新?
基本上,大型主機堪稱近代計算機技術發展的縮影,而IBM就更具代表性。
- 計算機結構(Computer Architecture)一詞,就是IBM為S/360而創,代表指令集如同電腦的語言,指令集相同的不同電腦,可以執行同樣的軟體,這是歷史上的創舉,在S/360之前,包含IBM在1950年代的前兩代大型主機,不同電腦就會有不同的指令集。
- 微碼組成的處理器控制單元。
- 軟碟機,最早用來存放微碼。
- 1 Byte = 8 Bit的工業標準。
- 虛擬記憶體。(S/360 Model 67)
- 快取記憶體。(S/360 Model 85)
- 虛擬化。(VM/370)
- 先前引發CPU安全性疑慮的非循序指令預測執行,也是起源於大型主機(S/360 Model 91的Tomasulo演算法)。
為何近20年來,一直都有「大型主機換機潮」?
除了維護成本高昂,使用者如同被廠商綁架的肉票,更重要的因素在於「難以符合業務需求」,大型主機的封閉性延長了新服務開發測試佈署的時間成本,尤其對分秒必爭、盡速導入新服務的金融業者來說,大型主機讓他們難以「Time To Market」,人力市場長期缺乏COBOL人材更是致命的誘因。
不像台灣一狗票只想鼓勵大家多作功德即可「產業自動轉型,人人通通加薪」的無能政客、慣老闆企業和熱愛加班的奴工,以IBM為首的大型主機業者也不是躺著等死,從開始支援Java、作業系統可選用Linux、一路到「擁抱開源碼軟體社群」的純Linux大型主機,積極的進行一連串「讓自己看起來更加開放」的改革。畢竟羊毛出在羊身上,成效如何,在此按下不表,但唯一可以肯定的是,這些「活化石」依舊是支撐IBM伺服器業務的骨幹,位居傲視伺服器世界的頂峰。
1 則回應