前面講了這麼多HP PA-RISC這個在眾多伺服器導向的RISC諸神中的「奇葩」,科科們爬文至今,很可能到現在對此還是很無感,但當看到容量大到令人感到不可思議的第一階 (L1) 快取記憶體,各位絕對瞬間眼睛將為之一亮 (臉上可能還順便掛著三條線),這也是PA-RISC處理器家族最重大的特色。
1991年的PA-7000 (PA-RISC 1.1版指令集首款產品),就已經具備分別多達256kB的第一階指令與資料快取 (同場加映:1992年的初代Intel Pentium是8kB指令和8kB資料),1992年的PA-7100更是驚世駭俗的「1MB指令和2MB資料」(對照組:1993年的IBM PowerPC 601是指令資料共用32kB),更扯的是,PA-7000還只有第一階快取,連第二第三階都付之闕如,後繼家族成員幾乎全體如法泡製,彷彿一門英烈。
照理說,越接近處理器運算核心的快取記憶體,尤其是資料,須盡其所能的縮短存取延遲 (Latency),所以容量不該太大,往下以此類推,讓當代高效能處理器的多層快取記憶體形同某座「金字塔」,不禁讓人不得不好奇HP的考量點。
筆者在這系列首篇,有提及HP希望可以盡其所能的透過軟體手段控制快取記憶體,這也是PA-RISC那個 Precise Architecture 的由來。
或許將快取記憶體階層簡化到極致,有助於他們進行軟體最佳化 (感覺Apple也是英雄所見略同),否則筆者怎麼想破頭,也再也想不出其更加合理的解釋。這背後的祕辛,也只有HP-UX作業系統團隊成員才會心知肚明了。
更重要的是,在1998年的PA-8500之前,除了1994年的PA-7100LC和1996年PA-7300LC,以及PA-8500之後的型號,這些快取記憶體,都是獨立於CPU本體的外部SRAM顆粒,甚至還有1T-SRAM (特化後的超高速DRAM,任天堂NGC用過的秘密武器) 的。相信各位科科都和筆者一樣好奇:PA-RISC家族處理器的快取存取延遲,究竟會長到什麼程度。坦白講,筆者自己也不知道。
眼尖的科科勢必注意到PA-7100LC那個容量看起來似乎很搞笑的「1kB L1指令快取」,嚴格說來,那一小塊全關聯式快取 (Fully Associative Cache) 的存在目的,在於減少第二階直接映射快取 (Direct-Mapped Cache) 因記憶體位址過度集中存取某個快區區塊的頻繁快取置換 (Cache Thrashing)。PA-7200內建的2kB「輔助用」快取記憶體,其實是基於類似的作用。
以下是筆者過去畫過的全關聯式快取結構示意圖,不代表PA-RISC的某處理器快取記憶體。
說到PA-RISC,就不得不談到HP的伺服器旗艦產品線Superdome (別緊張,作者沒忘記Tandem NonStop的存在)。既然HP早已決定要讓Itanium逐步取代PA-RISC,自然也該替客戶準備好「無縫轉移」的計畫。
在這裡,筆者要對因癌症離世於2005年5月26日的 “Shannon Knows” 作者Terry Shannon,施與最高的敬意,他諸多精彩的文章和簡報,對年輕時的筆者,帶來無可抹滅的啟發。
在2002年,Itanium 2的Superdome正名為HP Integrity Superdome,PA-RISC版本則改名為HP 9000 Superdome。隨著2010年Itanium 9300系列 (四核心的 “Tukwila”) 的姍姍來遲的登場,接替的HP Integrity Superdome 2開始與HP BladeSystem C7000整合系統設計,在當時給人一股「HP準備替前景不妙的Itanium找後路」的感覺,事後證實這猜測的確並非空穴來風。
高度模組化結構的Superdome可藉由更換不同的Cell Board,選擇使用PA-RISC或Itanium處理器。
由HP自行研發的Superdome系統晶片組sx1000也同時對應「末代」的PA-RISC處理器與「嶄新」的Itanium。很諷刺的是,雙核心的PA-8800的問世時間 (2003年),竟還遠早於雙核心的Itanium 2 (2006年)。雖然Itanium打從一開始就出師不利,狀況連連,但「頭已經洗下去」的HP依然按照原訂計畫,在2008年底,停止銷售PA-RISC系統,對於客戶的技術支援則延續到2013年。
後來滿載著眾人期待的Itanic號觀光郵輪,是如何從載沉載浮到慢慢的沉到海底,就有請各位科科複習筆者的舊文了。HP在2016年發表x86版本的Superdome X,更象徵「RISC諸神統治高階伺服器」時代的結束,與虛擬化技術的成熟和普及對企業IT架構帶來的革命性衝擊,讓昔日難登大雅之堂的x86處理器,也能肩負著高階伺服器的重責大任。
在這裡複習一下微軟在2010年的爆炸性宣言:
「快速發展的x86伺服器,同樣也可以做到高階伺服器所需的延展性與穩定性,因此微軟立刻停止發展Itanium版本作業系統與應用程式。」
更糟糕的事態還沒結束:企業資料庫與ERP系統的領導者Oracle,因併購Sun而取得Solaris作業系統 (以及大量極富價值的軟體,包含Java和MySQL) 與搭載UltraSPARC處理器的伺服器,想仿照IBM專注於自家的軟硬體整合解決方案,在2011年片面決定停止旗下軟體產品繼續支援採用Itanium處理器的伺服器。
HP批評Oracle此舉形同宣布採用Itanium處理器的伺服器將面臨遭淘汰命運,並採取法律行動且取得勝訴,但Itanium早已時不我與,軟硬體生態系統一起徹底崩潰。
HP在處理器技術上對抗不了IBM和DEC,軟體實力更遠不如Sun和Oracle,又失去了微軟Windows這個可讓Itanium攻入中小企業市場的超級外掛,即使Intel的半導體製程技術再強再也救不了Itanium了,PA-RISC也就這樣陪著「Intel 64位元真命天子」一起殉情。
回顧消失在歷史洪流的Intel旗艦處理器Itanium(上)
回顧消失在歷史洪流的Intel旗艦處理器Itanium(中)
回顧消失在歷史洪流的Intel旗艦處理器Itanium(下)
行文至此,筆者就順便介紹一下PA-8000系列引進的「3位元動態分支預測」,非常有趣的「偷吃步」巧思 (跟AMD將K8的分支預測選擇器「偷放」在L2快取的ECC欄位實在有拼),這也許堪稱HP PA-RISC處理器研發團隊的思維縮影。
一般我們所常見的「2位元」分支預測器 (Branch Predictor),紀錄分支是否發生,然後切換四種狀態,再決定預測的結果。
但單一的分支預測也可能會受到其他分支的影響 (如迴圈和間接分支),也因此發展出了透過「全域歷史紀錄 (Branch History)」去選擇在分支行為歷史表 (Pattern History Table) 中選擇分支預測器,以改善預測精確度。
但HP PA-8000系列之後,卻發明了結構極為單純的「3位元分支預測器」:利用簡單的FIFO (First In, First Out),持續更新發生 (Taken) 和未發生 (Not Taken) 的次數,只要1比0多,就是預測分支發生,反之亦同。HP宣稱這種簡化的方式,更易於實作大型化的分支預測歷史表,可達成接近其他分支預測技術的準確度 (筆者對此高度存疑)。實際的效果如何,也就死無對證了。
寫了這麼多,這艘Itanic觀光郵輪的悲劇,連帶讓5個RISC諸神中的其中3個 (DEC Alpha、SGI MIPS、HP PA-RISC) 一同陪葬到海底,回顧筆者從大學時代有幸躬逢其盛Itanium的「風光崛起」直到20年後親眼目睹其最後的隕落,內心依舊有著無盡的感慨。所謂「天才造成的災難是天災」,大概就是這麼一回事。
1 則回應