AMD推土機最大的祕密:Decoupled Front-end Architecture

ADVERTISEMENT

藍色巨人功敗垂成的eCLipz計畫

「eCLipz(enhanced Core logic for iSeries, pSeries and z Series)」很可能是近二十年來IT產業界最大秘密之一,繼IBM在Power5時期,將AS/400體系的System i全面轉用和System p相同的硬體,源自於1960年代號稱僅次於登陸月球與太空梭之「人類歷史上規模最大的商用產品開發計畫」的System z大型主機,就成為藍色巨人下一個企圖整併的目標。

根據當時已知情報,原先IBM打算在「超高時脈」Power6上,採用部分硬體支援的二進位執行檔轉換機制(Binary Translation)實現高速執行S/360體系指令集,也準備好該平台上的全系統模擬器,更讓Power6支援原先S/360才有的功能,如10進位整數和16進位浮點格式等,COBOL氾濫時代留下的遺產。

後來很可能是技術風險太高,或許擔憂客戶不信任整合後的軟硬體(畢竟大型主機是不能有down time的),這件事並沒有發生,僅「大量分享」Power6,但事後想想,這其實也蠻厲害的。

指令集和核心微架構深深影響彼此

不過這並不代表指令集和微架構涇渭分明、井水不犯河水,一套指令集的特性及優缺點,會深深影響著微架構的發展途徑與經濟效益,兩者相互潛移默化,直接或間接反映在「產品」本身的市場競爭力,與指令集未來的擴充發展方向。

AMD推土機最大的祕密:Decoupled Front-end Architecture

和編碼長度一致,指令編碼長度混亂的x86指令集,設計處理器時光控制單元的中斷與例外機制,就極度挑戰性,因為難以迅速儲存並回復處理器當時的狀態,對指令解碼器更是沈重負荷。

像x86處理器相對RISC陣營的產品,擁有優秀過頭的快取記憶體子系統,與非循序記憶體存取,真的就是被硬逼出來的,因為x86有太多編譯器常用的「簡單」指令,如「計算有效位址後回存記憶體」或「載入記憶體資料後進行計算」,會直接以記憶體作為運算目標,不快根本不行。x86指令集定義的資料暫存器過少,提高發生暫存器相依的機率,自然也強迫x86處理器廠商狂砸重本在非循序指令執行的刀口上。

ARM能在可攜式裝置市場享有壟斷地位,和其指令集簡潔明瞭、設計處理器時不必在最棘手的控制單元中斷例外處理焚膏繼晷、整合處理器核心時不需要耗費太多驗證時間、可縮短研發時程、儘速將產品送到市場上,脫離不了瓜葛。

避免指令集疊床架屋

Intel AVX一勞永逸解決因x86指令集持續擴張、加長指令長度與更動解碼演算法、而導致指令管線前端解碼效率不彰的宿疾(前提是未來的處理器微架構專心針對AVX最佳化,軟體也得努力使用AVX指令集),與ARMv8-A取消那四位元引述執行(Predication)條件碼、將省下的編碼位元數、挪為倍增資料暫存器之用、解除實作更複雜非循序指令集執行的緊箍咒,更是「在指令集擴充之路上,設法搬移未來微架構路障」的經典案例。

至於近來Apple A7「Cyclone」和NVIDIA喊很多年終於看到影子的Project Denver,雙方均可實現驚世駭俗的指令解碼發出率(Issue Rate),和ARM在64位元的v8指令集版本中,移除那嚴重限制非循序指令執行揮灑空間的四位元引述執行條件碼,更是唇齒相依,反倒和記憶體平面定址空間延伸到64位元這件事,一點關係都沒有。深信64位元讓處理器效能吃威而剛的人,應該好好捫心自問:處理器「位元數」的定義,到底是什麼。 

溫故知新:指令「發出率」與指令「派出率」

指令解碼發出率(Issue Rate):每個時脈週期最多解碼多少指令,一般等同於指令解碼器的數量。

解碼後指令派出率(Dispatch Rate):每個時脈可將多少解碼後(並暫存於指令保留站)的指令派發給執行單元。

Apple A7「Cyclone」的發出率是非常驚人的6,而NVIDIA的Denver更是驚世駭俗的7(筆者敢打包票,一定有用上類似預先解碼快取之類的技術),遠超過ARM自家Cortex系列。論x86陣營,當可實行Macro Fusion時,現階段Intel和AMD的高階產品都是4+1。

但指令集特性不同,x86就算相對簡單且常被編譯器使用的指令,像「計算有效位址後回存記憶體」或「載入記憶體資料後進行計算」等,把相同工作搬到ARM上,因涉及以記憶體作為運算目標,載入-儲存(Load-Store)架構的RISC指令集難以一個指令搞定,直接比較,並不公允。

不同指令集架構之間去比較DMIPS,其實意義不大,這根本是XX比雞腿,這已是無數計算機結構教科書教導大家的大道理,但今天還是一堆人亂比的很高興。

而指令派出率也容易引起混淆,因為近代x86處理器會在指令解碼端,轉譯成固定長度的微指令(尤其微碼控制產生訊號者),不同x86處理器的作法也不盡相同,像AMD就採取「MOP/ROP兩段式」轉譯,難有比較基準,但將這些微指令視為等同RISC單一指令,也是一種概約的檢視方式。

優秀指令集架構≠成功核心微架構

但天底下也沒有「只要指令集夠好(可能得外掛個「處理器時脈夠高」),就從此天下無敵」這種準則,市場規模往往顛覆很多約定俗成的常識,要不然這十多年來,也不會被x86陣營在伺服器工作站市場搞掛一狗票RISC家族,PA-RISC、Alpha、MIPS個個屍骨未寒,再加上快被Intel自己活活玩死的「舉世最先進伺服器指令集架構」IA-64,IBM更沒有靠著Power Everywhere征服計算機工業。

延伸閱讀:AMD的兩段式微指令轉譯,請參考電腦王69期(2010年四月)。

x86指令集長得如此難看,還不是靠著個人電腦市場的巨大動量,與x86陣營因此享有的製程技術和研發能量雙重優勢,才能一步一步的控制了高效能泛用處理器的市場,搞到論高效能單執行緒微架構,除藍色巨人IBM勉力抗衡外,已毫無敵手。現在還有誰會記得二十年多年前吵沸沸揚揚的「RISC vs CISC」之爭?在Intel傲視世界的製程前面通通變笑話了

今天靠著軟體生態圈的庇蔭,在伺服器市場存活下來的唯二RISC指令集:Power(IBM)和SPARC(併購Sun的Oracle和少人知曉的Fujitsu),在RISC戰隊中,還普遍被公認是「比較CISC」的雙人組,如史詩般優美動人的Alpha反倒是犧牲最壯烈的那一位。

下一頁:指令管線早已非「一條腸子通到底」

魯蛇實驗室
作者

戶田惠梨香 新垣結衣 長澤雅美 吉高由里子 志田未來 北川景子 香里奈 竹內結子 北乃紀伊 菅野美穗 黑川智花 宮崎葵 夏帆 貫地谷詩穗梨 石原里美 有村架純 井上真央 真野恵里菜 能年玲奈 深田恭子

使用 Facebook 留言
PCABC
1.  PCABC (發表於 2014年4月21日 15:44)
有沒有建議的入門參考用書

這篇有點難懂 希望增加更多詳盡的解釋與圖解

發表回應
謹慎發言,尊重彼此。按此展開留言規則