在今天,一說到「高階伺服器」,特別是動輒16顆32顆處理器以上的超高階系統,現在唯一碩果僅存且持續發展者,大概也只剩下「藍色巨人」IBM的CISC (複雜指令集電腦) 大型主機IBM Z (Zero Downtime) 與RISC (精簡指令集電腦) 高階伺服器的Power Systems了。
硬科技:HotChips 32的新牙膏 IBM Power10與z15篇
後者因PowerPC的盛名,與IBM持續推陳出新看似高不可攀的Power處理器,也較為被眾人所知曉,但各位科科是否知道,嚴格說來,RISC的起源就來自於IBM,而今天看似一脈相承的Power指令集架構,其實也是歷經IBM內部多個RISC指令集發展計畫的長期競合與版本分裂,在2001年的Power4 (Power ISA 2.0) 首次統一伺服器的部分,更在2006年的Power6 (Power ISA 2.03) 才真正完全整併PowerPC,實現IBM RISC指令集的「統一大業」。這背後的故事與內幕,遠遠超過維基百科上面那張Power指令集演進史。
稍有資訊科班背景的科科,應該都知道RISC一詞是在1980年代由當代計算機結構大師David Patterson所發明 (CISC是RISC之後才出現的對照用名詞),他與另一位大師John Hennessy (MIPS創造者) 合著的2本教科書 (白算盤、計量方法) 更是資訊科系不可不讀的經典教科書。
但RISC的諸多核心概念,早已在1960年代萌芽。如果科科很用功,應該會查到超級電腦大師Seymour Cray在1964年的CDC6600與後繼機種CDC7600 (原CDC6800),與由IBM研究員John Cocke從1974年開始的IBM 801計畫。
第一台使用精簡指令集計算機 (RISC) 架構的原型計算機是由IBM研究員John Cocke和他的團隊在1970年代後期設計的。他在1987年獲得圖靈獎 (計算機工業最高榮譽),1994年獲得美國國家科學獎章,1991年獲得美國國家技術獎章。
在1960年代,IBM在科學應用導向的高效能運算市場,落後於其他競爭者,所以在1963年啟動ACS (Advanced Computing Systems) 計畫 (代號Project Y),在1965年基於John Cocke對於超級電腦的想法進行產品設計。雖然IBM在1968年取消了ACS,但John Cocke團隊將ACS累積的成果—特別是高階語言編譯器 (Compiler) 的最佳化技術與更加精簡的指令集架構一併帶到了IBM 801。
在1974年,IBM正在研究構建每小時處理一百萬個通話 (每秒300通) 的電話交換機的技術可能性,他們估計每通電話需要執行兩萬個指令,換言之,相當於每秒600萬的指令 (6 MIPS),加上額外的處理負擔,起碼需要12 MIPS的效能。當時IBM效能最頂級的系統是1972年的System/370 Model 168大型主機,卻只有「3 MIPS」,這意味著需要在性能方面取得重大進展。
他們做了一件很重要的事情:基於效能考量,刪除了大量直接操作記憶體資料的指令,只保留使用處理器內操作資料暫存器的指令,踏出了RISC概念真正成形的最重要一步:載入 (Load) / 回存 (Store) 架構。
此電話交換機計畫在1975年被取消,但團隊在這個概念上取得了相當大的進展,當年10 月 IBM決定將其作為通用設計繼續其發展,並以其研發部門所在Thomas J.Watson研究中心的建築物編號為名,將其命名為IBM 801。
他們進一步發現一個很重要的事實:雖然當時電腦設計的主流,都是透過微碼 (Microcode) 實作數量龐大且功能強大的複雜指令,例如一個加法指令可能就有幾十種版本,對應不同的運算元 (如記憶體和暫存器的配對組合),但指令集中可用的大多數指令 ,從未在編譯程序中被使用過。
他們做出歷史性的重大結論:「在計算機與其使用者之間強加微碼 (意謂著使用微碼實作「作為軟體與硬體界面的指令集架構」),會在執行最頻繁執行的指令時,產生昂貴的開銷」。
道理很簡單,為了提供充裕的指令數量與功能,反而拖慢了常用—而且往往還是功能相對簡單—指令的執行效率。這也成為RISC概念成形的第二步:取消微碼,直接使用硬體線路 (Hardwired) 實作常用的簡單指令,並有效管線化 (Pipeline),讓指令能夠在單一時脈週期內執行完畢。
IBM 801的最初版本,擁有16個24位元資料暫存器,指令編碼長度24位元,沒有虛擬記憶體,並且延續古老的雙運算元格式 (A = A + B),在1980年產品化,時脈約15.15MHz,運算效能高達15 MIPS,超出了原先的預期。IBM 801被普遍應用在各種IBM產品,包括System/370大型主機的I/O通道控制器、各種網路設備、IBM 9370大型主機的垂直維碼執行單元,並在日後成IBM ROMP微處理器、IBM RT PC工作站和幾個內部研究案的技術基礎。
畢竟IBM 801一開始是為了功能有限的系統設計的,特別是缺乏虛擬記憶體,後來IBM進行諸多改良,其中特別重要的是將指令編碼長度擴展到32位元,不僅資料暫存器的數量倍增到32個,更有足夠的位元數改為三運算元格式 (A = B + C),更利於數學應用,因為在理想狀態中,兩個數字都需要可以保留在暫存器中,以便在後繼的運算重新使用,但二運算元格式 (A = A + B) 卻會覆蓋其中一個,代表必須事先複製一個運算元的資料到另一個暫存器。是的,各位科科又看到一個RISC的重要特性了。
更值得注意的是,IBM 801計畫對於改善編譯器效率帶來的巨大貢獻。新版的IBM 801在System/370大型主機上以模擬器執行時,運行速度竟然會比System/370的原生程式碼還要快。IBM研發團隊將IBM 801計畫的編譯器最佳化技術 (盡量使用資料暫存器、減少記憶體存取頻率) 逆向移植回CISC架構的System/370,效能也比現有版本快了三倍,充分證明針對RISC而發展的編譯器技術,也同樣可提昇CISC處理器的軟體執行效能。
但IBM 801的傳奇故事並未就此劃下句點,更大的挑戰出現在John Cocke等人的眼前:同時執行一個以上指令的「超純量 (Superscalar)」管線,以及讓RISC搶灘個人電腦市場的努力,即將登場。
3 則回應
兼差聞主播 百分百女友FU 雪白皮膚無刺青 熱騷多情又火辣