逐漸迎向曙光的Itanium
5年來,Itanium未達成外界所賦予不切實際的期望,但再長的隧道終究有其盡頭,事實上,歷代Itanium處理器與伺服器並非一團糟,雖然飽受缺乏應用程式與延期之苦,其效能表現、低耗電、可靠性和延展性卻遠超過英特爾原先的保證。

Itanium的危機與轉機
回顧Itanium的危機與轉機,五年來的荊棘之路,我們將進一步瞭解進入高階伺服器市場的高門檻,與推動新架構的高風險

x86真能無所不在?
AMD負責K5處理器設計的總工程師Mike Johnson,曾在1994年講過一句被後人經常引用的名言:「x86不只複雜,它根本毫無道理可尋。X86的複雜性並非不可克服......x86最大的弱點是缺乏足夠的暫存器與難以處理的複雜定址模式」,一語道破最普及的指令集架構,實際上卻充滿缺陷的設計。

回顧Itanium發展史
環顧處理器發展史,很難找到像IA-64指令集和Itanium處理器一樣,被無數人前仆後繼唱衰,還視為「政治正確」,有人稍微提出正面的看法,就被抹黑成「英特爾100億美元行銷經費的成果」。

英特爾前院士驚爆Itanium開發內幕
英特爾前院士Robert Colwell,今年初發表回憶錄,我們就從最後一章的附錄中,以同處於英特爾Oregon研發部門與P6計畫領導人的角度,檢視Itanium的開發過程、英特爾高層的樂觀期待、英特爾與HP不盡理想的合作關係,以及造成的後遺症。

簡介IA-64指令集架構
毫無疑問的,Itanium最重要的特色,就是其「語言」:IA-64指令集,源自1980年代末期HP因併購Cydrome而進行的VLIW PA-RISC計畫,也是Itanium技術優勢的根源。現在我們就來看看,IA-64指令集究竟有何過人之處。逐漸迎向曙光的Itanium

2001年5月31號,半導體巨人英特爾寄以厚望、預料即將征服RISC與大型主機市場的首款IA-64處理器-Itanium-終於站上高階伺服器的舞臺。英特爾也一口氣公布氣勢磅礡、延續至2005年與90nm製程的巨大未來時程表,企圖心之強,不言可喻。


在進軍高階伺服器的背後,更隱藏了一個更大的雄圖:毀滅英特爾一手創造的歷史包袱80x86,一統伺服器與個人電腦的指令集架構。
當時就有不少人感覺到,有如納粹德國入侵蘇聯宣稱「拯救西方文明免於共產主義侵略,實乃德國人民的歷史使命」,要消滅x86勢必付出重大犧牲,只是沒人預料到,災情竟然慘重到空前絕後的程度。

RISC的凋零激發英特爾的野心
毫無疑問的,從1960年代的CDC6600萌芽,1975年John Cocke領導的IBM 801計畫逐漸成型,繼David Patterson(Berkeley的RISC I)和John Hennessy(Stanford的MIPS)兩位RISC(Reduced Instruction Set Computer,精簡指令集架構)先驅,在1980年代以雨後春筍之勢蓬勃發展的RISC處理器,是執行Unix作業系統的高階伺服器,不可或缺的心臟。RISC一詞,也有別於CISC的x86,等同於「高階」、「高效能」、「高延展性」與「高可靠度」的代名詞。

綜觀1980中期至1990年代初期,大型伺服器及工作站廠商都專注於專屬系統的研發,從指令集架構、處理器、Unix作業系統、編譯器,甚至應用軟體均一以貫之,系統平臺高度垂直整合,統統綁死在一起,例如SGI的MIPS/Irix、DEC的Alpha/OpenVMS、Sun的SPARC/Solaris、HP的PA-RISC/HP-UX和IBM的Power/AIX等。高階RISC/Unix伺服器的市場生態,與CISC大型主機幾無二致,極為封閉。

1990年代以降,持續上升的半導體製程、研發及產能建置成本,製程技術與產品設計的相依性越來越大,導致開發高階處理器所費不貲,市場基礎不大的廠商紛紛撐不下去,陸續退出了RISC處理器的生產及研發工作。另外,高階動態程式語言的普及,促成了大量獨立於指令集架構之外的作業系統及應用程式,降低了更換平臺的門檻,Linux與Java就是最好的例子。

伺服器廠商自己做不了,自然留下讓「專業處理器大廠」填補市場空隙的機會。1987年,HP評估PA-RISC處理器在1992年,將會面臨難以實作四指令發出架構的瓶頸,所以決定發展超長指令集(VLIW)化的PA-RISC指令集。剛好英特爾正替HP代工PA-RISC處理器,急於尋求進軍高階伺服器市場的契機(那時替英特爾打下低階伺服器市場的P6微架構都還沒誕生),加上英特爾自己並不看好x86指令集的未來發展空間,打算另起爐灶,是最適當的合作夥伴,兩家廠商一拍即合,在1994年進行IA-64指令集與處理器研發計畫,1996年公布「Itanium」商標,經歷諸多的技術困難與數次延宕,在2001年推出代號「Merced」的第一代Itanium處理器,半導體巨人終於一嘗宿願,站上高階伺服器的舞臺。

浮載浮沈的「Itanic」號觀光郵輪
Itanium誕生之後,除了死守SPARC的Sun與後來退出市場的IBM與Dell外,其餘伺服器大廠幾乎全面採用Itanium打造高階RISC伺服器。此外,先後併購Compaq與Tandem而同時擁有PA-RISC、Alpha和MIPS伺服器的HP,為了簡化產品線,逐步將作業系統與應用程式轉移至Itanium平臺,在未來全面取而代之,從此停止自行研發生產處理器,都向英特爾購買。

既然有了英特爾產能與研發能量的背書,一群不得不被迫升級的「肉票用戶」,以及眾多伺服器廠商的投靠,Itanium理應會是非常成功的產品,以秋風掃落葉之勢鯨吞市場,坐穩高階伺服器的「產業標準」。事與願違,初代Itanium歷經數次延宕(主因是x86相容性)、晚了近3年才上市,而且相較於市場上的RISC系統,不但效能、價格與系統可靠性都沒有明顯優勢,缺乏應用程式更是這艘大郵輪一頭撞上的大冰山,造就5年來在各媒體隨處可見的「Itanic」號傳奇故事。

理想和現實的差距有多大?IDC曾在1997年樂觀的預估,Itanium將完全征服高階伺服器市場,在2002年銷售規模可達「300億美元」-事後,2003年的高階伺服器市場總額也只不過280億美元,Itanium的實際營收僅10億美元,最初預測的「3%」。佔有近七成Itanium伺服器營收的HP,根據Gartner的報告,2005年第二季的Itanium銷售額1.08億美元,「應該被Itanium取代的」RA-RISC系統高達11億美元,相差十倍,極為諷刺。

挾著壓倒性製程技術優勢的英特爾,理論上應可比其他廠商更穩定的推出新產品,有著更大的出貨量,結果Itanium只有一張非常不穩定的時程表,預計2004出貨20萬顆處理器的目標也跳票了。去年底閃電宣布首款雙核心Itanium處理器「Montecito」延期半年,更讓廠商及客戶抓狂,促使老牌Unix廠商SGI破產的最後一根稻草。

經過半年延宕,英特爾在7/19日正式發表雙核心Itanium 2「Montecito」。


倒吃甘蔗,苦盡甘來
5年來,Itanic觀光郵輪的航程一路顛簸,未達成外界所賦予不切實際的期望,但再長的隧道終究有其盡頭,事實上,歷代Itanium處理器與伺服器並非一團糟,雖然飽受缺乏應用程式與延期之苦,其效能表現、低耗電、可靠性和延展性卻遠遠超過英特爾原先的保證。
以去年部分客戶先期導入、4月出貨的雙核心Itanium 2「Montecito」為例,其電晶體數量超過17億,數倍於現有的RISC高階處理器,標準耗電量介於104W至72W,遠低於主流的x86處理器,僅IBM Power5+的一半強,但效能反而更好。換言之,在高密度運算環境風行,追求節能蔚為風潮之際,Itanium處理器的IA-64指令集,毋需複雜的核心設計即可實作高效能的處理器,更適合打造緊緻省電的高階與高密度伺服器,IA-64這個先進指令集架構展現真正的潛力。先前HP發表新款刀鋒伺服器機箱c-Class時即表示,他們正在開發SuperDome與NonStop的刀鋒伺服器版本,理所當然的,這些都是雙核心Itanium處理器。

當初極不穩定、一再延期、讓企業用戶看不到未來的處理器時程表,在英特爾相繼承接DEC Alpha研發團隊與整個HP Itanium處理器部門後,投入更多資源推動Itanium的開發工作,效果立竿見影,時程更加穩定。由Alpha研發團隊操刀、將與Xeon共通系統架構、預定2008年上市的四核心Itanium「Tukwila」處理器,去年夏天已經首度試產晶粒(Tape Out),英特爾也著手開發下一世代的「Poulson」,兩年就推出一款新產品。從Tukwila開始,英特爾更將進一步透過CSI(Common Socket Interface)連結架構,統一Itanium與Xeon MP平臺,壓低Itanium系統的成本。

在2008年,由前DEC Alpha研發團隊操刀的4核心Itanium「Tukwila」將採用全新的系統架構,整合記憶體控制器,與Xeon MP共通平臺化。資料來源:英特爾。


微軟與Oracle加持Itanium
Itanium平臺最大的罩門-應用軟體,也獲得改善。姑且不論英特爾宣稱「超過8000個應用程式」究竟是不是有意義的數字,老早就該在五年前成立的Itanium解決方案聯盟(Itanium Solutions Alliance)能否發揮群策群力的效益,光軟體市場前兩大廠商,微軟與Oracle對Itanium採取日趨積極的態度,是最有力的強心針。尤其近來微軟展現進入高階伺服器市場的強烈企圖心,從更先進的伺服器作業系統、「企業級」應用軟體到大型主機換機潮所帶來的商機,無役不與。

更重要的是,對於企業來說,採用Windows伺服器最大的好處,莫過於相關人才遠比Unix平臺易尋,擁有極為完備的應用程式資源,而Itanium是唯一擁有微軟加持的RISC平臺,僅此一家,別無分號。HP也認為越來越多企業認真考慮微軟的發展性,Windows將會攻下起碼20%的Itanium市場。

熬過慘淡經營的4年後,Itanium終於在2005年第三季開花結果,根據IDC的統計,Itanium系統的全球整體營收大幅成長,分別是兩大RISC系統IBM Power與Sun SPARC的近一半。在臺灣,Itanium系統衝上Sun SPARC的1.55倍,市場龍頭IBM Power的九成,今年第一季也達到Sun的1.09倍。因長期承受泡沫經濟破滅之苦,企業普遍節約IT支出的日本,Itanium更一口氣甩開IBM和Sun,成為全球最歡迎Itanium的市場,逼著SPARC陣營的Fujitsu,也得推出Itanium伺服器PrimeQuest。

五年來爭議不斷,但已成為高階伺服器市場的要角
樹大招風的半導體巨人、過度樂觀的營收目標、企業界對RISC的迷信與偏見,結合英特爾與HP之間不盡理想的合作模式所衍生的諸多後遺症,使得Itanium一直都扮演著「北港香爐」般的角色-眾人揶揄嘲笑外加蓄意看衰的對象。英特爾也「不負眾望」,不缺給人借題發揮的材料。

但不可否認的,5年下來,事實證明Itanium的確被市場所接受,而且日漸成長,不再是昔日那個軟硬體環境五窮六絕、除指令集架構看似前瞻,其餘均一無可取的吳下阿蒙。如果企業在採購高階伺服器時,希望有多樣化的選擇,不願意被特定軟硬體廠商綁死,保留日後投奔Windows的彈性,請放下既有的成見,重新回頭檢視Itanium的歷史背景、技術特色、潛在優勢與發展軌跡,也許你將從此改變對高階伺服器的觀點及看法。文⊙劉人豪Itanium的危機與轉機

事出必有因,無風不起浪。回顧Itanium的危機與轉機,五年來的荊棘之路,我們將進一步瞭解進入高階伺服器市場的高門檻,與推動新架構的高風險。

危機1:企業對Itanium的不信任感
「很多企業與政府機關的IT部門主管過度迷信RISC這名詞,相信RISC代表最頂級的效能,因對英特爾的刻板印象,認定Itanium不是RISC,所以誤以為Itanium效能不好。」某系統整合商專案經理一語道破無數人對Itanium的誤解,從技術角度來看,IA-64是一個如假包換的RISC指令集,但英特爾與CISC一詞畫上等號,早已行之有年,至今仍難破除。

迷不迷信倒還不是重點,他表示,對系統整合商來說,「不管黑貓白貓,客戶要的就是好貓」,採購過程中還會有種種因素,例如成本、與原廠的關係,以及解決方案,而就他的經驗和觀察,用戶普遍比較信賴RISC伺服器與Unix作業系統,畢竟更換高階系統風險太大,「沒人想當第一個白老鼠」,像HP的PA-RISC系統的營收仍高於Itanium,其因在此。更有人一針見血的表示,IBM的用戶會拒絕Itanium,原因很簡單,「IBM沒有Itanium產品」。

轉機1:選擇性最佳的RISC平臺
這世上沒有真正的「完全開放平臺」,使用相同處理器也不代表就可以輕易轉換系統到其他廠商的產品上,宣揚「開放 vs. 封閉」十字軍東征般的激情口號更是毫無營養的口水,不過Itanium仍是廠商最多、選擇性最佳的RISC平臺,這點倒是毋庸置疑。

危機2 :對英特爾的偏見
外界對英特爾「僅生產個人電腦與低階伺服器處理器」的刻板印象讓企業裹足不前。「客戶問:用英特爾處理器打造出來的伺服器,憑什麼賣這麼貴?」臺灣Fujitsu產品經理張仲秋分析企業面對「Intel Inside」伺服器時,抱持的成見與心態,這也是英特爾進軍高階伺服器市場的心理障礙。

偏見是一回事,在多核心處理器確為趨勢,軟體授權走向按實體處理器數目計價之後,英特爾遲遲無法推出雙核心Itanium處理器,就成為成本上的大弱點,尤其當遭遇像IBM這種技術實力雄厚、不惜血本都要維持效能領先的競爭對手,因為需要安裝兩倍以上的處理器才能抗衡IBM的Power系統,代表兩倍以上的軟體價格,在「效能過剩」的呼聲背後,經常被忽略的成本。

不需要頂級效能與高可靠性,又長期使用x86應用程式的企業,直接採用雙核心Xeon與Opteron,還省事許多。英特爾千呼萬喚始出來的雙核心Itanium 2「Montecito」暫時紓解燃眉之急,只是競爭對手並不因此停下腳步。IBM預定今年內將發表的Power6處理器,採取5GHz以上的超高時脈架構,號稱將有「Power5的四倍效能」-Power5目前還是地球上最強的伺服器處理器,而四核心Itanium上市卻是2008年的事情,這場爭奪效能王者的戰爭還有得打。

轉機2 :英特爾研發能量的後盾
也許「僅生產個人電腦與低階伺服器處理器」是一種偏見,但反過來說,身為最大的半導體與處理器廠商,英特爾享有壓倒性的研發能量,而且製程與產能的投資早已被龐大的個人電腦處理器出貨量吸收了。

此外,優異的效能應該是選擇Itanium的理由中,最著無庸議者,Montecito正式推出後(過去一年已經不少用戶導入),Itanium單一核心效能優異、卻無雙核心版本的弱點,也從此煙消雲散。基本上,從Power4和Itanium 2出現後,僅剩IBM和英特爾兩家公司具備爭奪高階處理器效能桂冠的資格,從SPEC CPU 2000到TPC-C之類的效能指標,都可以看到極為激烈的軍備競賽。我們有充分的理由相信,挾著製程與指令集架構的雙重優勢,Itanium依舊將是效能頂尖的產品。

危機3 :缺乏明確的未來
企業要評估全新的伺服器架構,首要考量莫過於「這架構能穩定發展」,以防未來不會變成孤兒。Itanium不穩定的產品時程表,勢必打擊企業的信心。「衰話說了一千遍,也會變成真的」,多年來無數媒體與分析師組成合唱團,前仆後繼的唱衰Itanium,更是功不可沒。近期英特爾為了提振獲利,進行組織改造,出售營運表現不佳的部門,按照「慣例」,Itanium再度被預期是首波開刀的對象(英特爾近期以6億美元售出網路處理器部門)。

但就算傳言都是空穴來風,Itanium仍註定是一個燒錢的部門,難有獲利挹注。數年來,IBM就一再表示,Power處理器的應用遍及各領域,有穩定的發展基礎,而Itanium除了規模有限的高階伺服器市場外,沒有業外收入。英特爾願意當散財童子到何時,沒人敢打包票,雖然當初Itanium解決方案聯盟成立看來是「1400億美元的商機,先燒個100億美元都划算」。

轉機3 :Itanium能賣給誰?
假設英特爾希望自己在企業用戶與伺服器廠商的信用徹底破產,不打伺服器市場的腦筋,大可以把Itanium賣掉。問題是:要賣給誰?哪家廠商有能力養活一條高階處理器產品線?更罔論門檻極高的製程技術。臺灣Fujitsu產品經理張仲秋就直言,英特爾真的賣掉Itanium部門,Itanium解決方案聯盟就等於宣布解體了,怎麼想,機率都不高,他也不認為有任何廠商有能力承接,起碼不包括Fujitsu。

危機4 :最佳化應用程式不足
Itanium平臺上的「8000個應用程式」,到底有多少是真正跑得快又跑得好,可充分發揮IA-64指令集特長者,絕對是一個問號,這是全新指令集都會面對的問題。如果企業自行撰寫應用程式,重新最佳化恐怕免不了。菱光電子資訊室副理洪良宏回憶起當年評估時,英特爾還勞師動眾推銷自己的編譯器。

此外,英特爾總是宣稱相較於「封閉」的RISC與大型主機,Itanium是「開放」平臺,企業不再是單一廠商的肉票,真是如此嗎?基於歷史因素,HP佔了近70%的Itanium營收,超過80%的Itanium伺服器使用HP-UX,處理器架構統一了,但Linux與Windows以外的專屬Unix,多半因系統架構相異,無法相容其他廠牌的產品,只要企業被特定應用程式綁死,「開放平臺」根本毫無意義。

轉機4 :唯一支援Windows的RISC
可能很少人注意到一則新聞:根據IDC的報告,去年Windows伺服器的銷售總額首度超過Unix,成為市場上第一大的伺服器作業系統,同時越來越多的Itanium伺服器安裝Windows,甚至某些企業之所以導入Itanium,就著眼未來的Windows。

有別於一般人的刻板印象:Windows就只能作低階伺服器之用,Windows已非昔日吳下阿蒙,展現往高階應用發展的潛力,支援更強大高階功能(如系統不停機熱更新、更嚴密的系統核心保護機制、記憶體/處理器熱抽換與更大型的NUMA系統等)的Longhorn Server登場後,將大幅提昇Windows Server的競爭力。

無論你喜不喜歡微軟這家公司,對於企業來說,Windows伺服器最重要的好處,莫過於相關人才遠比Unix平臺易尋,擁有極為完備的應用程式開發平臺。此外,從SQL Server 2005開始,微軟的企業端應用程式終於真正到達了「企業級」的水準,這些都強化了Windows進軍高階伺服器的本錢。

一言以蔽之,應用皇帝大,如日後打算轉移至Windows者,Itanium是所有RISC中唯一的選擇。「夜奔敵營」的Fujitsu即表示,他們的Itanium伺服器就鎖定Windows與Linux用戶,而非Unix市場。

革命尚未成功,同志仍需努力
樹大招風的英特爾、惟恐天下不亂的唱衰媒體,企業對Itanium的陌生感,以及外界不切實際的過度期待,使得Itanium一直成為備受爭議的焦點,少人真正能放下偏見,以中立客觀的角度,檢視Itanium的真正價值。

不可否認,Itanium歷經五年一路走來,跌跌撞撞,最後走出隧道,重見曙光。很遺憾的,事實證明Itanium平臺的現況其實並不差,但很明顯的距離廠商的宣傳還有一段不小的距離。

最起碼,英特爾標榜的「開放性」與「低成本」,幾乎都被Itanium強烈的HP色彩給抵銷大半。

企業又該如何看待Itanium的未來?據了解,有些企業從不考慮Itanium,只因公司的IT主管「完全不知道有這玩意,腦袋裡只有IBM和Sun」。姑且不論毀譽參半的評價,Itanium的確替企業帶來更多樣化的產品選擇。導入與否,多了解這個已在市場站穩腳步的新興產品,有益無害。文⊙劉人豪x86真能無所不在?

所謂的「計算機結構(Computer Architecture)」,是由IBM在1964年創造給S/360大型主機用的名詞,用來表示「程式設計者可以看到的指令集(Instruction Set)」,指令集如同「電腦的語言」,指令集架構相同的不同電腦可以執行相同的軟體,像英特爾和AMD的x86處理器都可以執行由x86指令集所撰寫出來的程式碼。
因回朔相容之故,指令集架構的良窳和新增指令的方式,深深影響著處理器與電腦整體系統架構的後繼發展。如何針對不同的需求,設計出可長可久,利於實作產品,又兼備導入新技術彈性的指令集,是計算機結構教科書的作者念茲在茲的議題。但是,十多年來這些計算機組織結構教科書中的標準錯誤示範-x86指令集,卻長期支配個人電腦與低階伺服器市場。

x86先天不良,後天失調的原罪
AMD負責K5處理器設計的總工程師Mike Johnson,曾在1994年講過一句被後人經常引用的名言:「x86不只複雜,它根本毫無道理可尋。X86的複雜性並非不可克服......x86最大的弱點是缺乏足夠的暫存器與難以處理的複雜定址模式」,一語道破最普及的指令集架構,實際上卻充滿缺陷的設計。

為了彌補缺陷,新型x86處理器都普遍導入了大量加速機制,暫存器更名(Register Renaming)減輕了暫存器不足的影響,大型化快取記憶體彌補了x86指令集記憶體存取密集(Memory Intensive)的行為模式,而所謂「將複雜的CISC指令轉譯為數個簡單的RISC微指令」更被視為拯救x86的「仙丹良藥」。

但這些解決問題了嗎?其實不然。指令集編碼長度不一、格式混亂與定址模式複雜,影響的並非僅限於指令解碼器及指令擷取單元。設計一顆處理器,最困難的部分是產生控制訊號的控制單元,特別是中斷(Interrupt)與例外(Exception)處理機制,例如系統外部周邊單元,藉由產生中斷讓處理器先執行輸出入動作,或者是發生算術溢位時,讓處理器產生例外,再讓作業系統的設陷(Trap)機制取得處理器控制權。發生中斷或例外之類的事件,處理器都必須事先儲存執行狀態,以確保結束後可以恢復正常的程式流程。

換言之,假如今天一個指令集架構,指令編碼長度從1到17位元組不等,定址模式極為複雜,運算元同時包含記憶體與暫存器,該指令集的控制單元就非常難設計,更罔論「追求高效能」。歷史上成功的x86處理器,清一色皆有漫長的開發時程與天文數字般的研發成本,其因在此。

指令集架構的複雜性直接影響可靠性技術的導入度
所謂的「高階伺服器」並不是處理器數量多就可了事,處理器與系統架構所需的可靠性功能(RAS,Reliability/Availability/Serviceability)才是重點,如此才能確保系統的穩定度,越高階的伺服器越沒有停止服務的本錢,這時指令集架構越單純、越易於設計製造,就有更多的空間去實作RAS機制,反之亦同。

RISC指令集對高階伺服器最重要的價值,就是利於設計與製造,便於導入更完整的系統RAS功能。資料來源:Fujitsu。


像標榜「和大型主機同等級RAS」的Fujitsu SPARC64系列處理器,整顆處理器的所有電路均受到ECC/Parity保護,超過90%的面積可承受單位元錯誤,兼具指令執行錯誤重試功能,這都是任何一顆x86處理器所遠遠不及的能力。臺灣Fujitsu系統工程師吳明宗即表示,「指令集換成x86,幾乎不可能做到」,IBM和Sun也保持相同的觀點。值得一提的是,Fujitsu內負責研發SPARC64的人數,僅有三百人,隨便一顆x86處理器都遠超過這個數字,以Pentium 4為例,英特爾就動員了5000人以上。

臺灣Sun技術副總戴碧勳表示,RISC處理器因設計簡單,自然有較大的餘裕去改進可靠度,SPARC這點凌駕Opteron,後者其實並未達到「Service Grade」的等級。「曾經有某晶圓廠用x86伺服器計算光罩模擬,算出來導線竟然少兩根,最後只好購置四套來自不同廠商的同規格伺服器,用來比對執行結果」。關於Sun剛發表的8路Opteron伺服器X4600,他也表示,其產品定位仍僅限中小企業,而一年之內Sun並沒有開發更大型Opteron伺服器的計畫,高階系統仍以SPARC處理器為主力。

市場需求更是關鍵性的因素。x86處理器之所以給人「便宜」的印象,不外乎市場規模夠大,攤平天文數字般的研發成本,這是x86藉由成本優勢站穩低階伺服器市場的基礎:個人電腦所使用的桌上型處理器和伺服器處理器採用相同的核心。但這也是一把雙面刃:x86伺服器處理器就從此受制於個人電腦,不能充分滿足高階伺服器的需要。

RISC享有經過歷史驗證的大型多路處理器架構
目前市面上唯二可以見到的大型多路x86伺服器,僅有IBM X3與Unisys ES7000,數量及歷史均無法與RISC相提並論。除了x86處理器限於市場定位,遲遲未有廠商發展大型多路x86架構外,指令集的缺陷也是一個主因。在十幾年前,當時的製程技術與設計能力都無法實作大型化快取記憶體及高效率的系統連結架構,x86特別記憶體存取密集的特性,就成為一大瓶頸。

會有人這樣想:那廠商大可以重新開始研發新的多路x86處理器架構,不就得了?問題是,高階伺服器的系統架構都需要漫長的時間來驗證改進,今天站上檯面的高階RISC伺服器,其系統架構無一不是擁有十多年的累積經驗,才證明是極為可靠的產品。IBM X3和Unisys ES7000也都奠基於大型主機的基礎,而且因市場規模不大,所費不貲,相較於高階RISC系統,並無價格優勢。

x86指令集甩不掉的歷史包袱
很多人應該還記得,多年前英特爾曾爆發震驚全球的Pentium處理器浮點臭蟲事件,讓不少人首度意識到,原來看似高深莫測的「高科技結晶」,也是有可能因設計上的失誤,導致程式執行錯誤。事實上,不分指令集,在處理器的電晶體數目動輒以上億為基本單位的今天,處理器技術規格資料中的勘誤表,發布數十、甚至上百個臭蟲,早已司空見慣。Itanium 2也累積了111個臭蟲,AMD K8家族則達155個。

有臭蟲倒還不是大問題,修正就可以了(多數處理器都提供微碼修補能力)。問題是:為了相容「利用」這些處理器臭蟲的應用程式,無法修正,那該怎麼辦?偏偏x86累積下來的應用程式又如此之多,所以才曾有人這樣開玩笑,開發一顆x86處理器,最大的挑戰是:你要如何確定它可以相容所有的舊程式?特別是早期的x86處理器,很多未定義的運算碼並沒有遮蔽掉,假設被人發現,又拿來用了,以後的處理器就只好乖乖的作進去。由此可知,對一個指令集來說,缺乏應用程式是個問題,但應用程式太多,更是一種負擔。
最有名的案例,莫過於「Bubble Bobble(泡泡龍)」這個遊戲,在486上會因計時迴圈溢出(Timing Loop Overflow)無法執行,但又在Pentium 4「復活」了。在x86的歷史上,此類看似不可思議的案例可謂不勝枚舉。尤其x86處理器經歷過太多世代,指令集從16位元、24位元、32位元疊床架屋至64位元,連帶混亂的記憶體定址模式。

另一個隨處可見的例子,很多人可以在電腦的BIOS中看到,為了相容過去8086應用程式的「A20 Gate」選項。8086處理器的定址模式,是藉由16位元的節區(Segment)位址與另一個16位元的節區內(Offset)位址,組成20位元和1MB的定址空間。在1986年,Quarterdeck與微軟的程式設計師發現,一旦打開80286/386/486的A20(第21條定址線)邏輯閘,假使將程式碼放在960kB與1024kB之間,就多出1024kB之後的一個64kB空間。簡而言之,DOS可透過特殊的設計來使用這塊多餘的64kB記憶體,就是微軟HMA(高記憶體區)與HIMEM.SYS驅動程式的由來,源自80286與更高階x86處理器的臭蟲。

問題來了,80286以後的處理器就算是8086真實模式,A20邏輯閘可能因節區和節內組成位址超過1MB而啟動,無法正常相容8086應用程式,因此IBM想到利用8042鍵盤控制器上的某訊號腳位,作為控制A20邏輯閘的開關。打開的話,就可相容8086,但不打開的話,又會因少一條定址線,讓保護模式的可定址記憶體空間少掉一半。這就是該功能的用途,導至今日的所有x86作業系統也必須保留打開該功能的程式碼。

先天架構不良的原罪,進而限制x86引進虛擬化等新技術的可能性。當初VMWare等虛擬化軟體廠商在x86上吃足苦頭,因為x86無法透過設陷機制攔截每個指令的動作,只能土法煉鋼,讓每個指令後面都接著一個中斷,代價就是犧牲效能,這到了英特爾的Vanderpool和AMD的Pacifica後才解決。當其他RISC陸續支援條件執行機制(Conditional Execution),x86卻受限幾無餘裕的指令編碼,僅能新增幾個簡單的指令。

那是不是代表,RISC指令集就沒有這些問題?答案當然是否定的,但對於同步發展處理器與作業系統的RISC/Unix廠商而言,卻容易解決。像IBM第一代的Power處理器也曾留下不少不合時宜、後來在PowerPC取消的指令,Power4以後的系統,只要執行到這些指令,即可透過處理器的設陷機制,呼叫AIX內的模擬軟體執行,毋需讓新的Power處理器繼承這些包袱,「封閉」系統的先天優勢,可見一斑。

戴碧勳坦言,一個系統的可靠度是需要軟硬體彼此高度配合,這是x86平臺的弱點。身為電腦的語言,指令集的「穩定度」也是關鍵,像SPARC V9指令集已經相當完備,數年來一直無須改版新增指令,但x86處理器廠商卻樂此不疲,從MMX、3DNow!、SSE、SSE2到SSE3,英特爾近期又增加16個SSE4指令,英特爾與AMD的新增指令集並不完全相容。同樣是虛擬化技術,英特爾的Vanterpool和AMD的Pacifica就截然不同,增加發生軟體相容性問題的機率。

臺灣Fujitsu產品經理張仲秋對此也表示,x86平臺本來就缺乏高穩定性的作業系統,又欠缺具備軟硬體整合能力的系統廠商,市場仍需要RISC處理器與Unix作業系統。

隱而不現的是,x86指令集先天的複雜性,使得實作高效能x86處理器的廠商多半都採用極為特殊的微架構(如驚世駭俗的英特爾NetBurst),效能延展性不佳,微架構的壽命也不長。但其他RISC處理器,無論IBM的Power4、Sun的UltraSPARC III和Fujitsu的SPARC64V,都是一個微架構「一路用到底」,頂多小幅改良。本來不是說RISC處理器易於設計嗎?為何如此?道理很簡單,這樣會比較穩定,避免更換微架構造成的潛在風險。

邁向未來:指令集架構將決定多核心處理器的發展潛力
在邁向多核心架構的路上,無可避免的,要縮小單一核心的晶粒面積,放棄追求高時脈的超深指令管線,進一步精簡處理器的核心複雜度。這時處理器所採用的指令集架構就扮演著舉足輕重的角色,指令集架構越易於實作與驗證,越不需要複雜的核心就可達到合理的效能,就越適合多核心處理器,導入更完善的可靠性機制與省電功能,更可縮短產品研發的時間。

這也是Sun Niagara支援4執行緒的單一處理器核心,可以簡單到僅有4萬個邏輯閘,英特爾會大費周章發展IA-64指令集與Itanium處理器,IBM想用Power取代S/360的主因。在處理器與半導體製程研發成本如火箭般一飛沖天的時代,相較於CISC,RISC指令集在這裡就佔了很大的便宜。但在沒有導入極為複雜的實作加速機制之前,x86處理器的效能表現都慘不忍睹。x86在嵌入式處理器市場沒有地位,都是RISC的天下,連英特爾的嵌入式與網路處理器產品線都是ARM指令集,而不是x86,其理至明。

更重要的是,伺服器處理器逐步走向多執行緒的省電架構,開始與桌上型處理器的需求分道揚鑣,失去龐大個人電腦市場的保護傘,x86伺服器處理器是否有足夠的市場規模,去分擔開發x86核心的高昂成本與漫長時程,仍是一個問號。

回顧今日Itanium、RISC與x86伺服器處理器的現況,即可發現,多年來眾多「先賢先烈」所預期的技術發展趨勢,似乎紛紛一語成讖。我們有充分的理由相信,x86仍將在低階伺服器與個人電腦市場扮演主角,只是要站上高階市場,完全取代RISC,依舊遍地荊棘,困難重重。也許假以時日,這並非不可能的任務-但絕對不是現在。文⊙劉人豪回顧Itanium發展史

環顧處理器發展史,很難找到像IA-64指令集和Itanium處理器一樣,被無數人前仆後繼唱衰,還視為「政治正確」,有人稍微提出正面的看法,就被抹黑成「英特爾100億美元行銷經費的成果」。

最常見的情況,一手拿著某市場分析機構的統計數字,宣揚「AMD Opteron賣得比Itanium好很多,x86萬萬歲」,另一方面又同時質疑同一家機構對Itanium的樂觀預測,是與英特爾「密切合作」的不實數據。

不過,姑且不論這些批評者是否有合理的立論基礎,對Itanium的歷史有通盤的瞭解,還純粹為反對而反對,今日Itanium樹大招風的形象,有其歷史背景,英特爾本身亦難辭其咎。

不切實際的期望:順利取代x86
說英特爾發展「IA-64」,一開始不抱持日後取代「IA-32」x86指令集的動機,那絕對是騙人的。事實上,第一代Itanium處理器出師不利,因延期失去市場先機,Andy Grove時代的英特爾高層過度重視Itanium對x86的硬體相容性,要負起最大的責任。

根據統計,第一代Itanium「Merced」超過30%的核心電晶體數目花在x86硬體相容性,只為了讓時脈高達800MHz的Merced,做到「介於Pentium 75MHz至200MHz」等級的x86應用程式執行效能。曾有人這樣開玩笑,英特爾為何不乾脆硬塞一個P6核心算了。

有夢最美,希望相隨。原本英特爾的如意算盤是:在1998年推出時脈600MHz的Itanium,藉由高時脈的優勢,其x86應用程式執行效能可和同時期的Pentium 2 400MHz相當,如此一來,就可以將既有的x86處理器產品線逐步轉移至全新的IA-64架構。

結果變成:一再延期的Itanium在2001年上市時,拜AMD K7的強大競爭力之所賜,x86處理器時脈都突破1GHz大關了,浪費一堆時間和成本的x86相容能力根本形同虛設。初代Itanium的效能表現也不佳,應用程式不足更是一大致命傷,兩者皆空,沒有橫掃RISC伺服器市場,取代x86的「歷史性任務」更是遙遙無期。

英特爾是到了Itanium 2才注意到硬體「硬幹」不是正本清源之道,從Montecito開始取消掉相容x86的硬體電路,完全透過IA-32EL(Execution Layer)二進位執行檔轉換器的軟體解決方案,提供x86相容能力。事後證明,成本更低,效果更好,更可保留日後支援新x86指令集的彈性。英特爾甚至預期,在2008年時,Itanium搭配IA-32EL的x86效能更可超越最高階的x86處理器,但已經來不及了。

英特爾缺乏對高階伺服器市場的認知與經驗
產品上市四年後,「終於」在去年成立Itanium解決方案聯盟。「這聯盟在四年前就成立,該有多好」恐怕是所有軟硬體廠商的共同心聲。英特爾畢竟是處理器廠商,沒有高階伺服器市場的認知與系統整合能力,這對Itanium的發展造成不利影響。就算是半導體巨人,開發高階處理器、製造大型晶片與驗證產品的經驗,也非一蹴可及。

濃厚的HP色彩,則是推廣Itanium路上的大石頭,其他廠商因擔心HP「球員兼裁判」而裹足不前。最好的例子,就是當HP完全轉移Itanium研發團隊給英特爾後,過沒多久Fujitsu的PrimeQuest就出現了,軟體廠商態度也遠比過去積極。只是五年下來,享有地利之便的HP依舊佔有大多數的Itanium用戶與市場,幾乎與HP畫上等號的Itanium平臺並不見得有多「開放」。

沒有內部競爭對手
IA-64相容處理器僅英特爾Itanium一家,別無分號,不像x86同時有英特爾和AMD兩種選擇,SPARC陣營有Sun和Fujitsu兩家廠商研發產品,最封閉的IBM相容大型主機,IBM過去起碼還有Hitachi可當對手。

換言之,沒有內部競爭對手的後遺症是難以出現更廉價的IA-64處理器,限制了市場規模與普及。我們有充分的理由相信,如果市場上出現第二家IA-64處理器廠商,市場上對Itanium的「雜音」一定會小很多(很諷刺的是,IA-64指令集很多概念都源自AMD的29000 RISC指令集,但AMD並沒有繼續發展下去,而是全力投入x86市場),但這一天有可能到來嗎?英特爾願意開放IA-64實作上的專利嗎?難如登天。

英特爾隨時脫手不玩的疑慮
近來英特爾急於提振公司獲利,加上Itanium的應用面遠不如IBM的Power,除了伺服器以外,沒有其他收益,所以不少惟恐天下不亂的媒體與分析師都預期英特爾最終會脫手Itanium部門,而IA-64的生父、Itanium市佔率最高的HP,自然就是呼聲最高的承接者,也有傳言指出,日本數家廠商企圖聯合接手Itanium,因為日本是全世界最歡迎Itanium的市場。

回過頭來,能賣給誰?假設可以出售,買主得面對製造晶片的問題,而高階處理器有著極高的製程門檻,沒有自有高階製程與產能,難有競爭能力(這也是為何Sun UltraSPARC一直積弱不振的主因)。從這個角度來看,英特爾想賣也賣不掉。但只要脫手傳言陰魂不散,勢必動搖企業對Itanium的信心。

假如歷史可以重來,還會有Itanium嗎?
如果借給英特爾時光機,知道將會得到Alpha,而且同時又享有微軟在Alpha平臺上的巨大投資與現成的x86模擬軟體FX!32,他們還會和HP一起開發IA-64指令集與Itanium處理器嗎?連英特爾自己都承認「Alpha比我們擁有的任何東西都來得好」,延續Alpha的生命會不會比較輕鬆?或者是進一步擴展P6的成果,啟動因保護IA-64而延宕十年的「Yamhill」計畫,順勢將x86 64位元化,專心推動x86 Everywhere,大概今天AMD早就不見了。

無論如何,歷史不會重來,英特爾走上一條通往高階伺服器市場的荊棘之路。也許IA-64指令集終究成功,成為高階伺服器的主流,但答案可能不是Itanium,真正的最大獲利者也不會是英特爾。時間將告訴我們最後的答案。文⊙劉人豪


溫故知新:1999年分析師對Itanium的樂觀期望

「在2002年可橫掃RISC、市場規模到達300億美元」還不是對Itanium的最樂觀預測,在1999年In-Stat/MDR在處理器論壇中,大膽預測IA-64將進入桌上市場,而且在2005年全面取代英特爾的x86處理器產品線。

英特爾前院士驚爆Itanium開發內幕

領導英特爾史上最佳x86微架構P6研發團隊的英特爾前院士Robert Colwell,今年初發表回憶錄「The Pentium Chronicles: The People, Passion, and Politics behind Intel's Landmark Chips」,我們就從最後一章的附錄中,以同處於英特爾Oregon研發部門與P6計畫領導人的角度,檢視Itanium的開發過程、英特爾高層的樂觀期待、英特爾與HP不盡理想的合作關係,以及造成的後遺症。

首先,在1994年Itanium計畫啟動時,基於保護HP商業機密的考量,英特爾建立了公司內的「防火牆」機制隔離Itanium與x86部門,阻礙了技術與意見的交流。由於Itanium是全新架構,一切都在摸索階段,少了既有x86部門累積的資料、模擬數據與經驗,導致開發過程困難重重。

其次,英特爾高層對Itanium保持過高的期待,當時他們還被告知「在1999年,x86處理器就會開始被IA-64取代」,為了保護Itanium,「x86部門不准再提到『伺服器』這個名詞」,全力推動IA-64,限制x86的發展性。Robert Colwell本人與P6團隊卻不認為在2006年前64位元有普及的可能性,而且讓x86指令集64位元化,才是超越競爭對手的捷徑。那時英特爾內部已在爭論此事。

最後,在1999年,英特爾過度樂觀的支票都跳票了,Robert Colwell直接對英特爾高層建議,將第一代Itanium「Merced」視為純粹的研究計畫,等到第二代產品再上市,「如果我們希望新指令集是為了未來25年而生,那多出一到兩年的驗證期絕對是值得的」。結果,以「我們不能接受開發不能上市的產品」為由被打回票。事後證明,一語成讖,Itanium出師不利,Merced變成一個失敗的產品,為Itanic的悲劇搭建最華麗的舞臺。簡介IA-64指令集架構

毫無疑問的,Itanium最重要的特色,就是其「語言」:IA-64指令集,源自1980年代末期HP因併購Cydrome而進行的VLIW PA-RISC計畫,也是Itanium技術優勢的根源。現在我們就來看看,IA-64指令集究竟有何過人之處。


指令集架構的優勢直接反應在耗電量與核心電晶體數目上

  雙核心Itanium 2   單核心Itanium 2  Power5+ 雙核心Xeon MP 雙核心Opteron
代碼    Montecito Madison 9M Squadron Tulsa Egypt
指令集  IA-64 IA-64 Power x86 x86
製程     90nm 130nm 90nm 65nm 90nm
晶粒面積 596 432 245 435 199
耗電量 103W 107W 160W 150W 95W
電晶體 1720M 592M 276M 1328M 233M
最高時脈 1.6GHz 1.6GHz 2.2GHz 3.4GHz 2.6GHz
L2 cache 1.25MBx2 256kB 1.92MB 1MBx2 1MBx2
L3 cache 12MBx2 9MB 外部 16MB
核心電晶體數目 18M 20M 35M 50M 40M


追求指令平行化
有別於RISC與VLIW,英特爾將兼具兩者之長的IA-64相關技術命名為「Explicitly Parallel Instruction-set Computing」,追求高度指令平行化的潛能。IA-64的單一指令包編碼長度為128位元,包含三個41位元長的指令與5位元的指令排列模板,後者定義了數種常用的指令順序,可簡化指令解碼。

便於編譯器最佳化
IA-64堪稱是協助編譯器最佳化機制的集大成。首先,擁有多達128個通用暫存器與128個浮點暫存器,遠超過通用/浮點分別僅32個暫存器的RISC指令集,龐大的暫存器群降低記憶體頻寬的壓力與減少程序呼叫時暫存器的資料搬移工作。

其次,為了克服分支負擔和縮短記憶體延遲,IA-64導入預測執行與預測載入機制。最後,暫存器堆疊與暫存器輪轉技術,可改善不同程序傳遞參數和迴圈攤平的效率。

IA-64的問題與缺點
雖然IA-64看似先進,卻有著程式碼體積過大的缺點,如較長的指令編碼、缺乏基底偏移載入、預測執行與預測載入增加程式碼體積,以及整數乘除法無法直接使用通用暫存器作運算元等,根據IBM估算,IA-64程式碼體積高達x86的四倍,直接反映在記憶體使用量上。

此外,IA-64的設計精神在於「毋需實作複雜的微架構,即可設計出省電高效能的處理器」,但龐大的暫存器群與執行單元數,也難以提昇處理器的時脈。

為多核心鋪路
不過瑕不掩瑜,整體而言,IA-64的確遠邁既有的RISC指令集,歷代Itanium也證實IA-64的確便於打造簡單省電又高效能的核心,核心晶粒面積平均僅有同時期x86的一半,利於未來多核心的趨勢。


兼顧RISC與VLIW之長:彈性化的指令包(Bundle)
解除暫存器不足的困擾:龐大的暫存器群
減少分支負擔:預測執行機制(Predication)
降低記憶體延遲:預測記憶體載入機制(Speculative Load)
加速程序呼叫:暫存器堆疊機制(Register Stack)
攤平程式迴圈:暫存器輪轉機制(Register Rotation)

兼顧RISC與VLIW之長:彈性化的指令包(Bundle)

VLIW(超長指令集架構)雖然具備高平行化的特性,但也缺乏日後更動處理器架構的彈性,以及日後被迫重新編譯程式碼的麻煩。IA-64並未限制指令包內的三個指令型態,透過指令編碼最後5位元所定義的常用指令排序,簡化指令編碼,不同指令序列之間也可插入判斷位元,以便於處理器判定基本區塊。




解除暫存器不足的困擾:龐大的暫存器群

暫存器不足一直都是高階語言編譯器的最痛,限制程式碼最佳化的彈性與指令平行化執行的潛力(如發生暫存器相依)。IA-64定義高達128個64位元(實際65位元)通用暫存器、128個82位元浮點暫存器、64個1位元預測條件暫存器以及8個64位元分支位址暫存器,一勞永逸的解決暫存器不足的困擾。

減少分支負擔:預測執行機制(Predication)

分支與條件判斷指令會更改指令執行的流程,縮小程式碼的基本區塊(Basic Block),限制指令平行執行的空間,但硬體分支預測機制的效果亦有其限度。IA-64指令集全面支援條件執行,將分支判斷條件寫入預測條件暫存器,編譯器即可進行最佳化排程,同時執行所有程式碼,再保留所需要的結果。




降低記憶體延遲:預測記憶體載入機制(Speculative Load)

記憶體存取延遲是處理器效能的大殺手,無論是再完善的硬體預先擷取機制和快取記憶體都無法根除這個問題。IA-64指令集的預測記憶體載入機制,允許編譯器預測後面可能需要載入的記憶體位址,先行排程,再比對ALAT(Advanced Load Address Table)的位址紀錄,以確保預測的正確性。

加速程序呼叫:暫存器堆疊機制(Register Stack)

因今日程式架構均高度模組化之故,不同程序的呼叫動作與參數傳遞會消耗大量暫存器數目,製造暫存器之間的資料搬移動作。透過暫存器堆疊機制,只要修改預先建立的暫存器框架(Register Frame)的虛擬暫存器編號,即可重疊不同程序所使用的通用暫存器,毋需搬移資料即可交換不同程序的資料。




攤平程式迴圈:暫存器輪轉機制(Register Rotation)

迴圈攤平(Loop Unrolling)是編譯器經常用到的最佳化手段,避免無謂的條件判斷與分支預測錯誤,但迴圈攤平卻會因前置(Prolouge)與結尾碼(Epilouge)而大幅增加程式碼體積。IA-64無論通用和浮點暫存器均可透過暫存器輪轉機制,直接攤平迴圈,毋需付出增加程式碼體積的代價。


Advertisement

更多 iThome相關內容