為何Apple自產自銷的ARM處理器這麼厲害(下)

2018.01.15 12:36PM
iphone8-plus-spgray-select-2017

Apple從2013年九月iPhone 5S的心臟A7「Cyclone」開始邁進64位元的世界,也以此為起點,Apple Ax應用處理器開始展現驚世駭俗的效能優勢,從2015年六月趕盡殺絕32位元應用程式,直到今年的iOS 11中止支援32位元處理器(意思就是只回朔支援到iPhone 5S),更是深具重大意義的里程碑。

64位元是為了破除高效能架構障礙

但64位元運算真的有這麼神奇嗎?當然不是,真正有舉足輕重影響的,是ARM指令集擴充到64位元時,「順便」帶來的革新,特別是移除了打造高效能微架構的重大障礙。

要提高處理器效能,不外乎增加每個時脈週期可處理的指令數:

  • 提高時脈,對於行動裝置來說,這幾乎是難以考慮的選項。
  • 增加同時可以平行處理的指令數量,像硬體指令排程的超純量(Superscalar)和編譯器決定如何「一個蘿蔔一個坑」的超長指令集(VLIW)。
  • 接著,提高管線效率,特別是當發生同時執行的指令,要存取相同暫存器而強碰時,就需要以「暫存器更名機制」為中心的「非循序指令執行」來解決。

前面有提到,電腦有別於計算器的最大差別,在於「條件判斷的能力」。

你可將電腦程式的正常執行流程,想像成一個「棋盤」,以一個角落當做起點,對角線的角落作為終點,在棋盤上反覆移動,不限制前進或後退。如發生條件判斷的分支(Branch),或無條件判斷的跳躍(Jump),就會變更指令流,並且中斷指令管線的運作,特別是必須先等待條件判斷的執行結果,才能決定該分支是否發生的分支,對效能的傷害尤其明顯。

所以某些指令集就具備了所謂「引述執行(Predicaton)」的能力,包含32位元的ARM指令集。一個在一般指令集的簡單條件判斷(相信各位一定看得懂):

beq ra, label   // if (ra) = 0, branch to ‘label’
or rb, rb, rc     // else move (rb) into rc

改用具備引述執行的條件搬移指令,一行就解決了,避開了分支指令,也無須啟動分支預測機制。講的直白一點,就是把所有相關工作打包起來送作堆,一次搞定。

cmovne ra, rb, rc

這對追求高度平行化的指令集,有著莫大的吸引力,所以也不外乎多數超長指令集(VLIW)電腦,都具備這樣的能力,包含Intel的IA-64(Itanium),連x86從Pentium Pro開始也有cmov體系指令,只是因種種因素不那麼實用,而逐漸邊緣化了。

引述執行Predication的缺點

但天底下沒有白吃的午餐,先不提「事後」才支援引述執行的困難度,引述執行不但會增加處理器的工作量,更會提高指令管線前端的複雜度,不僅不利於提昇時脈,更會影響非循序指令執行引擎的設計,因為暫存器重新更名機制要「替身」的資料就更多了。很諷刺的,原本寄望可以提高指令平行化的引述執行,竟然反過來變成了打造高效能微架構的麻煩製造者。

64位元的ARMv8-A取消4位元引述執行(Predication)碼,將省下的指令編碼位元數,挪為倍增資料暫存器之用,不但降低了發生暫存器相依的機率,一併解除實作更高效率非循序指令集執行的緊箍咒,更是「在指令集擴充之路上,設法搬移未來微架構路障」的經典案例,這遠比整數邏輯運算暫存器和記憶體平面定址空間擴充到64位元還重要上百倍。

蘋果看到的64位元大未來

基於未來性,Apple也很早就把重心放在64位元效能,根據某些實際的指令排程輸出率測試,Apple兼具32/64位元相容性的Ax應用處理器,64位元的指令輸出量,就幾乎是32位元的足足兩倍,例如每個時脈可輸出6個64位元指令,32位元就會腰斬。當然,Apple自家晶片亦具備極度優異的記憶體效能,A10X改絃易徹走向大型化L2快取,也隱約透露出些有趣的弦外之音,這就有賴前P.A.Semi團隊的功力了。

問題又來了,那為何A11會強到破表?

有沒有想起來,iOS 11已純粹對應64位元環境?那A11為何還要硬扛著相容32位元ARM指令集的包袱呢?伺服器導向的Qualcomm Centriq 2400就是「純64位元」ARM處理器。少了後顧之憂,自然就可以把所有電晶體預算砸到刀口上,效能自然好,這就是Apple同時掌握全部軟硬體的天然優勢。

最後,不提A11,光A10每個時脈最多可同時輸出4個整數、2個浮點和2個記憶體載入,就已經很接近IBM Power7的水準,幾乎是其他ARM對手的兩倍,真是嚇死人了。A11有多可怕?我們以後再研究,謝謝收看。

連載告一段落,看到這裡應該對蘋果自家處理器有些想法,與我們分享看看你覺得這系列如何吧!

為何Apple自產自銷的ARM處理器這麼厲害(上)

為何Apple自產自銷的ARM處理器這麼厲害(中)

為何Apple自產自銷的ARM處理器這麼厲害(下)

3 則回應