【转】回顧消失在歷史洪流的Intel旗艦處理器Itanium
硬科技:回顧消失在歷史洪流的Intel旗艦處理器Itanium(上)
by 痴漢水球 2018.07.26 09:01PM

2017年2月中旬,Intel宣佈開始發貨代號「Kittson」的Itanium 9700系列處理器,是繼2012年的Itanium 9500系列「Poulson」後,睽違五年的「更新」,除了聊勝於無的稍稍提高點時脈,仍沿用與前代相同的老舊32nm製程,與充滿懷舊風的DDR3-1067記憶體規格。Kittson將是Itanium的終點,一場糾纏著處理器巨人的二十年惡夢,也從此劃下了休止符。在今天,腦海中仍對Itanium存有印象者,恐怕不外乎骨灰級電腦玩家,或著年紀不小的企業IT人員吧。 不知道Itanium該怎麼念?科科們就請記得發音很像「唉坦你啞」就好了。 算上後繼的蝴蝶效應(NetBurst的悲劇),這場也許堪稱Intel史上最大災難的拖棚歹戲,其導火線源自於想進軍伺服器市場的Intel,和HP合作重新打造的全新指令集架構「IA-64」。在1987年,HP評估在1992年,其自家的PA-RISC處理器,難以實現每個時脈週期處理四個指令,所以進行超長指令集(VLIW)化PA-RISC的相關研究。 指令平行處理的2種作法 談到指令平行處理,一般而言,有兩種作法,一個是硬體手段的「超純量(Superscalar)」,今日我們看到多數高效能泛用處理器,幾乎都是動態指令排程兼具預測執行的超純量架構(當然早期也有循序靜態排程的超純量,如x86世界首發的Pentium),先前處理器資安漏洞連環爆,都是根源於此。 另一種則是軟體手段的「超長指令集(VLIW)」,指令集架構將多個運算打包在一起,透過編譯器「靜態」的一個蘿蔔一個坑的塞進去,優點是硬體設計比較簡單,等於把追求平行化的工作全部丟給軟體搞定,缺點是編譯器最佳化難度頗高,以及不易日後更動處理器微架構。 VLIW的IA-64就是Intel對先天不足、後天失調的x86指令集,最激烈的反動,身為電腦根本語言的指令集架構,徹底為了「便於編譯器開發者發掘出最極致的指令平行化」與「最簡單、最長壽的高效能處理器微架構」而量身訂做,Itanium則是這世上唯一相容IA-64指令集的處理器家族。

相較被自家生父嫌棄到不行的x86,砍掉重練的IA-64究竟解決了哪些問題?細節太多,就挑幾個比較代表性的來講。 x86指令集最令人詬病的缺陷,莫過於指令編碼格式混亂,長短不一,不僅增加實作控制單元的複雜度(特別是發生例外和中斷時,如何迅速儲存和回復處理器狀態),因為不好做複數指令解碼器,也不利於研製高平行化的處理器微架構。IA-64指令包編碼統一128位元,包含3個41位元的運算指令,和標示最多32種指令排序的5位元,一勞永逸的根除宿疾,處理器只要同時執行2個指令包,就等於一次進行6個指令。x86亂無章法的運算元定址模式,也在IA-64上消失的無影無蹤。

x86指令集缺乏足夠的資料暫存器(整數浮點各8個),頻繁發生的暫存器相依,嚴重限制了編譯器最佳化的彈性與指令平行化的潛力,Intel就在IA-64「要五毛,給十塊」,很豪邁的定義128個通用暫存器和128個浮點暫存器,遠超過當時主流RISC指令集的32個(講的嚴格一點是31個)。

IA-64設計精神Relax Limitation For Performance 對付分支指令更是超級重頭戲,像利於降低分支負擔的引述執行(Predication),亦配備了專用的條件碼暫存器群,可應對更加複雜的軟體管線,而存放分支位址更有「專款專用」的暫存器配置。至於方便編譯器提前載入後面資料的預測載入機制(Speculative Load),加速程序呼叫的暫存器堆疊機制(Register Stack),攤平迴圈的暫存器輪轉機制(Register Rotation)等,無一不是極度豪華的「超重武裝」。 以前曾有人以 “Relax Limitation For Performance” 描述IA-64的設計精神,毫無過譽。事實上,IA-64的確比x86,甚至是其他的RISC,更適合用來打造簡單、省電、又高效能的處理器核心,核心晶粒面積和電晶體數量,也不到同時期Intel AMD x86處理器的一半,功耗表現更是異常的出色,這就是毫無包袱的嶄新指令集架構,與傲視世界的處理器研發能量,合而為一的成果。

但再先進的指令集架構並不能保證成功的「處理器產品」,更何況,IA-64並不是沒有缺點的,而且恐怕還是各位科科意想不到的那種。 還看不過癮嗎?讓我們繼續看下去「硬科技:回顧消失在歷史洪流的Intel旗艦處理器Itanium(中)」 硬科技:回顧消失在歷史洪流的Intel旗艦處理器Itanium(中)
by 痴漢水球 2018.07.26 09:21PM

前情提要:「硬科技:回顧消失在歷史洪流的Intel旗艦處理器Itanium(上)」。俗語說的好:過猶不及,物極必反。為了擺脫昔日x86包袱而過度反動的IA-64,早在Intel公佈指令集架構之際,就不乏來自外界的質疑,尤其同時擁有CISC大型主機(S/360體系,zSeries, System Z)和RISC效能王者(Power體系,pSeries, System P)的藍色巨人IBM,對IA-64的專業批評,事隔多年,通通一語成讖。 2000年的Microprocessor Forum,就上演了IBM與宣稱「非循序執行超純量處理器已經過時」的Intel/HP陣營,針鋒相對的強碰戲碼。IBM提出了2個重點,細節就在此不贅述了。 首先,程式碼體積過大:根據IBM內部的評估,VLIW的IA-64因編譯器不見得可以指令塞好塞滿、先天較長的指令編碼(3個指令128位元,一般RISC都固定為32位元)、引述執行、預測載入、缺乏基底偏移載入定址模式([base + disp],少了會增加多餘的位址計算,蠻蠢的),以及整數乘除法無法直接使用通用暫存器作運算元(這非常的愚蠢,後面會提)等諸多因素,IA-64的程式碼體積將是x86的4.8倍,經過最佳化後也高達3.7倍,筆者當年還聽過「8倍」的版本。

程式碼過肥的直接影響就是:IA-64指令集相容處理器需要更充裕的記憶體頻寬和更大型化的快取記憶體,導致Itanium發展歷程屢創快取容量的世界紀錄。當然,這奠定了Intel日後在快取記憶體領域的技術優勢,但這也是事後諸葛的馬後砲了。

其次,為了追求最高指令平行化而生的大型化資料暫存器群,與伴隨而來的龐大執行運算單元,也不利於提昇處理器時脈。也許科科會反問:時下超純量動態指令排程處理器的實體暫存器數量也沒比較少啊?近代GPU更是成千上萬,但「結構上可見」讓軟體直接存取的資料暫存器,和用來「默默墊檔」的實體暫存器,複雜度完全是兩碼子事。 即使IBM也許基於身為潛在競爭對手的立場「酸」個幾句,但這也證明了藍色巨人對於指令集設計和高階處理器的認知,遠非當時的Intel和HP所能望其項背。最近因榮獲計算機工業最高榮譽圖靈獎(Turing Award)2位創造RISC一詞的計算機結構大師,在資訊科班學生爾孰能詳非讀不可的教科書中,就毫不留情的做出和IBM同樣的批判:Itanium只是時脈上不去的平庸整數運算處理器。 接著就是Intel自己那令人感到匪夷所思的蠢事了。按照常識,由大到小,「指令集架構(電腦的語言)」是戰略,「處理器微架構(執行語言的載具)」是作戰,「設計實作與製造」則是戰術,但Intel卻反過來,往往以「利於製造」作為思考的出發點,套句普魯士名將老毛奇的名言:「只要戰術成功,戰略可以讓步」,這也許就是Intel設計指令集的信念,所以x86指令集會如此的毫無道理可循,事後想想,好像也不會讓人感到驚訝。 Intel設計IA-64指令集幹下的蠢事,保證讓各位科科看到瞠目結舌,事後有沒有亡羊補牢就不重要了。
- IA-64的整數除法指令,竟然無法直接使用通用暫存器,而是必須先把數值傳遞到浮點暫存器,才能執行。誰能告訴我這是想幹嘛?
- IA-64的浮點除法指令,是透過乘積和指令(Multiply-Add,如A x B + C)進行倒數運算,為維持和x87 80位元浮點相同的精確度,浮點暫存器寬度增加到82位元。有沒有聽過因小失大這個成語?
- IA-64沒有自動加長資料長度的Sign-Extended載入指令,無法直接將32位元值載入至64位元的通用暫存器。但在x86的世界,早從「8086」就有這樣的指令了,拜託,相隔30年耶。
- 最後,就是前面提到的,IA-64欠缺基底偏移定址模式([base + disp]),進行資料載入與回存,需額外執行位址計算的指令,相對於定址模式太多太亂的x86,IA-64卻是極度精簡到連最該有的東西都不見,蠻納悶Intel研發團隊的決策動機是什麼,難道是用研究案的心態去做事嗎?
回過頭來,就算IA-64存在這些讓人滿臉黑直線的低級缺陷,爛到爆炸的x86指令集都可以存活下來了,那整體來說只會更好不會更壞的IA-64為何就不行?ㄨ 提醒各位科科,天底下任何史詩級的慘劇,都是天時地利人和交互核子反應的總和,而「人和」:Intel自身的內部管理和行銷策略,更是「功不可沒」,值得大書特書,成為計算機工業史上被撕掉的一頁。 看不過癮?還想繼續看說書的說下去?接著看下集吧!「硬科技:回顧消失在歷史洪流的Intel旗艦處理器Itanium(下)」 硬科技:回顧消失在歷史洪流的Intel旗艦處理器Itanium(下)
by 痴漢水球 2018.07.26 09:39PM

前情提要:「硬科技:回顧消失在歷史洪流的Intel旗艦處理器Itanium(中)」1994年Intel與HP合作啟動IA-64指令集與Itanium處理器專案時,那時候HP的處理器研發團隊尚未移籍到Intel,為了保護HP的商業機密,Intel特別建立「防火牆」隔離x86與IA-64的研發人員,妨礙了內部的技術交流,IA-64團隊難以汲取現有x86專案的數據和經驗,加重了研發工作的困難度,替由Santa Clara總部操刀的第一代Itanium「Merced」大延期,埋下了災難的種子。 更糟糕的是,肖想進攻高階伺服器市場的Intel高層,目標在1999年就讓IA-64逐步取代x86,下令「x86研發團隊不准提到『伺服器』這個字」,雞蛋完全放在同一個籃子內,而Pentium Pro研發末期,被內部提案的64位元x86計畫「Yamhill」,就更是天大的「政治不正確」。 畢竟IA-64是全新的指令集架構,在尚未累積足夠的原生軟體資源前,也須仰賴現有x86的軟體生態圈,維持具有效能競爭優勢的x86執行效能,勢在必行,也因此,第一代Itanium有將近30%的核心面積(排除快取記憶體和系統匯流排界面),用來實作「理論上效能近似同時脈Pentium」的x86硬體執行單元。

Intel原先的如意算盤是,在1998年上市第一代時脈600MHz的Itanium,可提供相當同期400MHz Pentium II的x86執行效能,再慢慢的無縫接軌,從伺服器、工作站、桌機甚至筆電,一步一步的轉移到「放眼未來二十五年」的最先進指令集架構。

AMD K7半路殺出加速1GHz時脈競賽 但Intel萬萬沒算到,AMD「x86世界的Alpha 21264」K7微架構強大的競爭優勢,讓Intel毫無擠牙膏的餘裕,加速了x86處理器的1GHz時脈競賽,加上Itanium一再延宕,當拖到2001年才勉強「風光上市」時,耗費一堆時間搞定的x86硬體相容性,只讓800MHz的初代Itanium實際上僅具備「介於Pentium 75到200」的水準,更罔論對後繼新增x86指令的支援性,毫無實用價值,欠缺足以推動市場發展的IA-64原生應用程式,更是壓死駱駝的最後一根稻草。 Intel內部亦不乏有識之士,以「如果新指令集放眼未來25年,那多出1到2年的驗證期,絕對是值得的」,力勸不要發售第一代Itanium,將其轉為研究案,等到舊有HP團隊負責的第二代產品再上市,但被「我們不能研發不能銷售的產品」為由打回票,「Itanic」號觀光郵輪一頭撞上冰山,史詩級的災難就此發生,市場分析機構樂觀預期的伺服器銷售金額,也逐年穩定下修,從350億一路砍到不到35億美元,征服RISC伺服器和CISC大型主機市場的偉業,還沒開始就結束了。 到了2002年Itanium II「McKinley」出現、HP PA-RISC和Alpha處理器的軟體陸續移植過去後,IA-64才展現應有的價值,但傷害已經造成,況且隔年AMD的Opteron挾來自微軟的暗助,開始四處攻城掠地,逼迫Intel跟進64位元x86,打亂NetBurst的布局,IA-64的前景也蒙上了厚厚一層不詳的陰影。 後來Intel是到了雙核心Itanium II「Montecito」才放棄吃力不討好的x86硬體相容手段,改用IA-32EL(IA-32 Execution Layer)二進位執行檔轉換器,成本更低,效果更好。 除此之外,早該在2001年就成立的Itanium解決方案聯盟,不僅透過Transitive的QuickTransit二進位執行檔轉換軟體,讓SGI將MIPS移轉到IA-64,更企圖「相容」SPARC,狂吃Sun和Fujitsu的豆腐。 Intel宣稱在2008年,Itanium的x86效能會超越同時期最高階的Xeon,IA-64與x86也會共用系統平台架構(原名CSI的QPI為此而生)。但已經沒有兌現這張支票的機會了,因為軟體廠商陸續跳船,讓Intel不得不重回全力發展x86的老路。 徹底毀滅Itanium的一刀 首先,微軟在2005年先配合HP停止Itanium工作站用的Windows Workstation,更在2010年宣佈「快速發展的x86伺服器,同樣也可以做到高階伺服器所需的延展性與穩定性,因此停止發展Itanium版本作業系統與應用程式」原本Itanium濃厚的HP色彩就是推廣IA-64的最大心理障礙,微軟這一刀,這等於是徹底毀滅了Itanium往中低階企業應用市場發展的一切可能,也讓Itanium淪為HP Unix系統專用的處理器。 無獨有偶,企業資料庫與ERP系統的老大Oracle,因併購Sun而取得Solaris作業系統與搭載UltraSPARC處理器的伺服器,想仿照IBM專注於自家的軟硬體整合解決方案,在2011年片面決定停止旗下軟體產品繼續支援採用Itanium處理器的伺服器,HP批評Oracle此舉形同宣布採用Itanium處理器的伺服器面臨遭淘汰命運,引爆HP和Oracle之間的法律紛爭。 這訴訟拖到2016年,加州Santa Clara(碰巧就是Intel總部所在地) 高等法院才判決Oracle要賠償30億美元,但Itanium早已時不我予,軟體生態圈更早就土崩瓦解。拜虛擬化技術成熟普及之所賜,x86平台的可靠度亦非昔日吳下阿蒙,2015年HP發表x86版本的SuperDome,象徵Itanium即將退出歷史的舞台。 行文至此,僅為Itanic號撞上冰山的一角,關於IA-64指令集和Itanium處理器的往事,其實有太多的點點滴滴,再多的千言萬語亦述說不盡。 2006年Intel總算推出延期半年(還被外界揶揄害SGI破產)、但各方面都有強大競爭力的雙核心Itanium時,坊間還以為Intel貨真價實的「旗艦」,終於爬出了隧道的盡頭,但萬萬沒想到的是,後面就再也沒有可以繼續走下去的旅途了,時過境遷,令人不勝唏噓。 如果時間可以重來,也許Intel和HP高層會悔不當初,寧願繼續發展已經有現成FX32! x86轉譯器又有原生Windows NT、連Intel自己都承認「比我們擁有的任何東西都來得好」的Alpha,但歷史沒有如果。所謂「天才造成的災難是天災」,Itanium的災難,大概就是這麼一回事。