當(dāng)前位置:首頁 > 嵌入式 > 嵌入式動態(tài)
[導(dǎo)讀]蘋果在2008 年4 月23 日,冒著極大風(fēng)險硬著頭皮發(fā)表初代iPhone 的隔年,耗費2 億7,800 萬美元,購并了專注開發(fā)高效能Power 處理器的PA Semi,組成其處理器研發(fā)團(tuán)隊的骨干,然后在2012 年9 月發(fā)表的iPhone 5,其心臟「A6」處理器,終于不再使用來自ARM 授權(quán)的核心,采用自家的「Swift」微架構(gòu)(Micro Architecture)。

蘋果在2008 年4 月23 日,冒著極大風(fēng)險硬著頭皮發(fā)表初代iPhone 的隔年,耗費2 億7,800 萬美元,購并了專注開發(fā)高效能Power 處理器的PA Semi,組成其處理器研發(fā)團(tuán)隊的骨干,然后在2012 年9 月發(fā)表的iPhone 5,其心臟「A6」處理器,終于不再使用來自ARM 授權(quán)的核心,采用自家的「Swift」微架構(gòu)(Micro Architecture)。

再以世界上首款搶灘登陸智慧型手機(jī)與平板的64 位元ARM 處理器「A7」(Cyclone 微架構(gòu))為起點,蘋果自家SoC 開始逐漸展現(xiàn)壓倒ARM Cortex 家族(與躺著中槍的Qualcomm 自有核心)效能優(yōu)勢,且隨著時間演進(jìn),差距越拉越開。

 

接著,每代iPhone 發(fā)表后,各大科技媒體網(wǎng)站的報導(dǎo),與底下的讀者回應(yīng),只會有兩種制式的單細(xì)胞生物反應(yīng):

文章高高掛著「眾人都驚呆了,連開發(fā)效能測試軟件的人都不知道發(fā)生了什么事」如內(nèi)容農(nóng)場般的標(biāo)題,再來繼續(xù)機(jī)械化的炒作「蘋果會不會用自家芯片取代Intel處理器」的多年冷飯。

底下的讀者留言雞同鴨吵成一團(tuán),上演「Android 自由主義」和「蘋果神權(quán)政治」信徒大對決,沒有人講到任何值得注意的重點,連一絲一毫的學(xué)理成分都沒有,宗教信仰就是如此奇妙。

筆者不啰唆,直接在這里講結(jié)論:

藉由牢牢把持軟硬件平臺的「封閉性」先天優(yōu)勢,蘋果掌握了ARM 指令集邁向64 位元帶來的機(jī)會,打造出一系列同時間能夠有效處理更多指令的先進(jìn)微架構(gòu)。

看起來好像微言大義到接近廢話的程度?如果你真的這樣想,那你就更有繼續(xù)讀下去的必要。

撥亂反正:做為電腦語言的「指令集架構(gòu)」vs. 執(zhí)行語言載具的「處理器核心微架構(gòu)」

近年來拜ARM 為首的授權(quán)IP 商業(yè)模式之所賜,越來越多人搞不懂這兩者的差別,完全混在一起,這些年來筆者已經(jīng)聽過太多讓人完全笑不出來的笑話,所以在此特別重述一次。

支配智慧型手機(jī)市場的ARM 又是怎么一回事呢?以32 位元ARMv7-A 指令集為例,在手機(jī)上常見的微架構(gòu)(核心),總計有:

ARM 本家賣IP 授權(quán)給別人的Cortex-A5 / A7 / A9 / A12 / A15 / A17 這幾種核心微架構(gòu)。

Qualcomm 自行打造的Scorpio / Krait。

蘋果并購PA Semi 后關(guān)起門來搞出的A6「Swift」,iPhone 5 的心臟。

換成64 位元ARMv8-A,就變成以下場景:

ARM 本家賣IP 授權(quán)給別人的Cortex-A35 / A53 / A57 / A72 / A73 這幾種核心微架構(gòu)。

增加半精度浮點支援和系統(tǒng)可靠度機(jī)能的ARMv8.2-A 指令集:Cortex-A55 / A75。

Qualcomm 自行打造的Kyro。

nVidia 的Project Denver。

蘋果繼續(xù)關(guān)起門來搞出的A7「Cyclone」,與之后的眾多芯片,如A8「Typhoon」、A9「Twister」、A10「Fusion」(Hurricane + Zephyr)、A11「Bionic」(Monsoon + Mistra) 。

為了伺服器而量身訂做的特殊微架構(gòu),如Qualcomm Centriq 2400 的「Falkor」,和Cavium Thunder X 系列的核心。

只要作業(yè)系統(tǒng)相同(如同版本Android 或iOS),這些核心微架構(gòu)應(yīng)當(dāng)正確執(zhí)行使用ARM 指令集撰寫或編譯出來的軟件,講的更專業(yè)或更假掰一點,它們擁有相同的應(yīng)用程式二進(jìn)位執(zhí)行檔介面(ABI,Application Binary Interface),如同Intel 與AMD 的x86 處理器都應(yīng)可正確安裝Windows 作業(yè)系統(tǒng),理所當(dāng)然執(zhí)行Office 等應(yīng)用軟件和Battlefield 等套裝游戲。

至于Qualcomm、蘋果和nVidia,是否根本自身特殊需求,自行定義「非官方」ARM 指令,那就后頭有空再討論了。

高效能之路:讓核心微架構(gòu)同時間內(nèi)能夠有效處理更多的指令

在執(zhí)行相同指令集「語言」的前提之上,相容處理器的效能要能夠勝出,只有微架構(gòu)設(shè)計能否比競爭對手有效處理更多的指令。方向不外乎:

更高的時脈: 雖然往往計算機(jī)概論會教你「指令管線階段越多,代表處理器同時執(zhí)行更多的指令,只是這些指令位處于不同的階段」,但實際上最多還是一個時脈周期「吐出」一個被執(zhí)行完畢的指令,所以現(xiàn)實層面的「加深指令管線」,實際上跟「提高運行時脈」講的是同一件事。很不幸的,智慧型手機(jī)因嚴(yán)格的功耗限制,透過積極追求高時脈以提高效能,是比較不切實際的方向。

更寬的管線: 一個便當(dāng)吃不夠,你可以吃第二個,嫌執(zhí)行一個指令不夠看,你也可以同時執(zhí)行第二個,這就是源自1966年CDC6600的「超純量」(Superscalar)架構(gòu)。另外也有純軟件方式、讓編譯器去一個蘿卜一個坑塞指令到不同執(zhí)行單元的「超長指令集」(VLIW),這就不在本文的討論范圍內(nèi)了。

足以喂飽嗷嗷待哺執(zhí)行單元的高效能記憶體子系統(tǒng): 包含系統(tǒng)主記憶體、快取記憶體、連結(jié)多個處理器核心的匯流排、舉足輕重的快取記憶體資料一致性協(xié)定(Cache Coherence Protocol) ,甚至可以非循序的存取記憶體位址(Memory Disambiguation),都是不可或缺的「基礎(chǔ)建設(shè)」。

天底下沒有白吃的午餐:兩種該死的「相依性」

但「指令管線化」與「指令執(zhí)行平行化」也帶來了新的挑戰(zhàn)。

控制相依性 電腦有別于計算器的最重要特征在于「條件判斷」的能力,根據(jù)不同的條件執(zhí)行不同的指令流,處理器如碰到分支(Branch)或跳躍(Jump),就須改變指令執(zhí)行的流程,清除已經(jīng)進(jìn)入管線的指令,從另一個記憶體位址擷取指令,重新執(zhí)行并存取相關(guān)的資料(或稱為「運算元」,意指運算的目標(biāo),如特定資料暫存器或記憶體位址),而具備條件判斷的分支,造成的傷害更大,因為需要管線停下來等待其結(jié)果、或著事先預(yù)測并「先斬后奏」。

解決方案: 分支預(yù)測(Branch Prediction),與后面會提到、釜底抽薪減少分支指令的「條件執(zhí)行」(Conditional Execution)。

資料相依性 當(dāng)同時執(zhí)行多個指令,最忌諱遭遇「撞衫」同時存取相同的資料暫存器與記憶體位址,特別是當(dāng)指令集定義可操作的資料暫存器越少,軟件手段可以盡量排除的空間越少,發(fā)生的機(jī)率也越高。[!--empirenews.page--]

解決方案: 以暫存器重新更名機(jī)制(Register Rename)為中心的非循序指令執(zhí)行(Out-Of-Order Execution)。

然后根據(jù)分支預(yù)測結(jié)果而先斬后奏「預(yù)測性執(zhí)行指令」(Speculative Execution),是分支預(yù)測與非循序指令執(zhí)行的結(jié)合體??傊?,我們盡其所能的讓管線「順暢」的像生產(chǎn)線不停的運轉(zhuǎn),實現(xiàn)最高的指令執(zhí)行效率。

理所當(dāng)然的,指令管線越深,一旦「筊杯」失敗,要復(fù)原管線并恢復(fù)指令執(zhí)行的代價,也越像火燒摩天樓一樣恐怖,這也是高時脈深管線近年來不太受歡迎的另類主因,因為現(xiàn)實世界的應(yīng)用程式,其實有很多難以預(yù)測的分支行為,越高的「代價」,更意味著更差勁的「效能/功耗」比。

LLVM 開發(fā)環(huán)境參數(shù)透露的神秘訊息

講了那么多原理,蘋果從來不公開自主微架構(gòu)的技術(shù)細(xì)節(jié),那該如何掌握他們追求高效能的設(shè)計方向?

2014 年初,當(dāng)多數(shù)世人正「驚呆」A7 的64 位元與驚人的性能表現(xiàn)時,有人注意到蘋果提交的LLVM 原始代碼,不僅透露了微架構(gòu)代號是「Cyclone」,更包含眾多重要的規(guī)格參數(shù):

指令發(fā)出寬度(Issue Width):6

非循序指令執(zhí)行緩沖區(qū)(Reorder Buffer):192

記憶體載入延遲(Load Latency):4

分支預(yù)測錯誤代價(Misprediction Penalty):16(一般介于14~19)

 

在當(dāng)時,這是非常驚人的規(guī)格,就算擺在今天也是同樣駭人,可同時處理的指令是同時期ARM 核心足足兩倍(即使64 位元的Cortex-A57 也只能3 個指令),非循序指令執(zhí)行引擎的「深度」則是Intel Haswell 等級,指令管線深度則中規(guī)中矩的維持在16 階這一般水準(zhǔn)。

相信有些讀者早已從其他網(wǎng)站看過相關(guān)的報導(dǎo),但有個「江湖傳言」倒是值得注意:部分開發(fā)iOS 應(yīng)用程式的程式設(shè)計者,做了一些指令輸出率的實驗,察覺到「A7 一旦執(zhí)行32 位元程式碼,指令輸出率就腰斬了」,這個「特性」一路延續(xù)到A10,直到A11 根本沒有32 位元應(yīng)用程式可執(zhí)行為止。

后來蘋果當(dāng)然就沒有繼續(xù)「規(guī)格大放送」,Wiki上蘋果處理器的規(guī)格表,一路從A7到A11,都是維持這些數(shù)字,有沒有經(jīng)過實測考驗也不得而知,反正就大家一起無限回圈繼續(xù)驚呆,蘋果持之以恒的甩開和其他競爭者的差距。

唯一可以確定的是,筆者在自己的iPad Pro 9.7 吋A10X 上,透過配對簡單指令,測出每個時脈周期可同時輸出「4 個整數(shù),2 個浮點,2 個記憶體載入」的可怕性能。此外,A10X 與A11 放棄第三階4MB 快取記憶體,而以大型化第二階8MB 取而代之,也暗示了蘋果極可能在快取記憶體技術(shù)有了重大的突破,可兼顧高容量與低延遲。

A11?筆者沒有iPhone 8 和iPhone X 可用,有機(jī)會再測測看。

讓我們重新畫出命案現(xiàn)場的人形粉筆圈,歸納出蘋果的產(chǎn)品設(shè)計取向:

微架構(gòu)以64 位元效能為優(yōu)先設(shè)計考量。

既然行動處理器受制于低功耗需求,難以透過提高時脈追求效能,索性以「更寬」的指令管線取勝。

同時執(zhí)行更多指令,代表要耗費更多心思去解決暫存器相依的問題。

更強(qiáng)力的非循序指令執(zhí)行引擎。

寄望指令集本身就定義更多的資料暫存器,降低「強(qiáng)碰」機(jī)率。

ARM 指令集走向64 位元帶來的重大改革

讓ARM 指令集邁向64 位元的ARMv8-A,并非只有「將整數(shù)邏輯暫存器寬度延長到64 位元」和「提供64 位元記憶體定址空間」這么簡單,拋棄昔日專注于嵌入式應(yīng)用的遺產(chǎn),更加的簡潔優(yōu)雅,更利于打造高效能微架構(gòu),引領(lǐng)ARM 榮登高效能的天堂,是這次指令集改版最神圣不可侵犯的絕對使命。

 

ARMv8-A 修訂項目極多,但就筆者的角度,除了取消「加速重建儲存CPU 狀態(tài)的Context Switch 相關(guān)機(jī)制」(一堆就今日觀點實在很小家子氣的技術(shù)),和簡化例外處理與執(zhí)行特權(quán)階層外,最重大的改革,只有兩項:

倍增通用暫存器(GPR)數(shù)量,這件事在當(dāng)年AMD 讓x86 邁向64 位元時也發(fā)生過,意義重大。

取消涵蓋整套指令集的「條件執(zhí)行」(Conditional Execution),這和前者互為表里,因為總算擠出了珍貴的指令編碼空間去增加暫存器數(shù)量。

其中又稱為「引述式執(zhí)行」(Predicated Execution,或Guarded Exectuion)的后者,目的在于減少程式中的分支,指令集提供簡單扼要的條件執(zhí)行指令,一次做完所有事情。

直接舉例比較快。原本一個簡單的If-Then-Else 循序條件判斷,會需要等待確認(rèn)條件結(jié)果,或著強(qiáng)行進(jìn)行分支預(yù)測,管線才會繼續(xù)動作:

if condition

then do this

else

do that

就變成這樣:

(condition) do this

(not condition) do that

有沒有感覺簡潔多了?講的玄一點,條件執(zhí)行的中心精神在于「將控制相依性轉(zhuǎn)化為資料相依性」。

然后有鑒于過去的應(yīng)用程式,在這種If-Then-Else 的條件判斷中,有60% 都是資料搬移指令,這也是為何指令集「事后」擴(kuò)充條件執(zhí)行功能,如DEC Alpha、MIPS、甚至x86,都以「條件搬移」(Conditional Move)為主。

以Alpha 為例,其指令格式統(tǒng)一為cmovxx(xx 代表條件),一個簡單的條件搬移:

beq ra, label // if (ra) = 0, branch to ‘label‘

or rb, rb, rc // else move (rb) into rc

可以透過新指令,簡化如下:

cmovne ra, rb, rc

在ARMv8 之前,整套ARM 指令集每道指令,都包含了4 位元的條件碼,必須符合「某個條件」才會執(zhí)行指令。如條件成立,執(zhí)行此指令并寫回運算結(jié)果。反之,指令執(zhí)行結(jié)果無效,或不予執(zhí)行。

回到原點,條件執(zhí)行的優(yōu)點很明顯:

加速實際條件判斷的效率,因為實際上只要比較0 與1(Bitwise)。

減少簡單條件判斷的分支,可以提升指令平行化執(zhí)行的潛力。這也是為何很多VLIW 指令集普遍支援條件執(zhí)行。甚至定義存放引述碼(Predicate)的專用暫存器,以因應(yīng)更復(fù)雜多樣的條件判斷,如攤平回圈的軟件管線(Software Pipeline)。[!--empirenews.page--]

但為何ARM 要取消看似完美的條件執(zhí)行?

占用4 位元指令編碼,實在是太浪費了,所以用「條件選擇」(Conditional Select)取而代之。

舉個范例:「CSEL W1, W2, W3, Cond」,如條件符合,W2 暫存器資料搬移到W1,如非,就W3 到W1。缺點是會稍微增加程式碼體積,但絕對劃算。

提高打造高效能非循序指令執(zhí)行引擎的復(fù)雜度,在管線前端就要「預(yù)鎖」后面所需要的相關(guān)資源,也增加后方需要「更名」的暫存器,更不利提升時脈。

A11「極可能」是純64 位元的微架構(gòu)

可確保處理器正確執(zhí)行所有軟件的指令集回溯相容性,是商業(yè)上的「資產(chǎn)」,但也是設(shè)計處理器微架構(gòu)的「包袱」。

我們有非常充分的理由相信,蘋果急著驅(qū)離「32 位元低階應(yīng)用程式」,就是為了其處理器全力針對64 位元最佳化造橋鋪路,而A11 如此驚世駭俗的效能表現(xiàn),除了它根本是純64 位元處理器,所有電晶體預(yù)算都砸在提升效能的刀口上,沒有其他合理的解釋了(新的異質(zhì)多處理器排程也有影響,但沒那么絕對)。「就算」A11 具備32 位元相容性,其性能表現(xiàn)恐怕也僅聊勝于無,不足掛齒。

無獨有偶,Qualcomm 企圖搶攻伺服器市場的Centriq 2400,也是純64 位元的設(shè)計,這就是ARM 制定64 位元指令集擴(kuò)充時,最希望看到的結(jié)果:雨后春筍般的高效能產(chǎn)品。

同場加映:Mac 改用自家芯片的可能性

關(guān)于這個「年經(jīng)」(每年發(fā)表一支新iPhone)議題,筆者不會賭上爺爺?shù)拿u(yù)做不負(fù)責(zé)任的推論,但只留下兩個留待讀者思考的問題:

蘋果能否承擔(dān)轉(zhuǎn)移的成本,尤其當(dāng)Mac 用戶已非弱勢族群的當(dāng)下。

蘋果是否仍希望「吸收」Windows PC 的使用者。

Mac 是否改用蘋果自家芯片這檔事,并不只是「效能夠好」就可以一筆輕松帶過的大哉問,請各位多多考量商業(yè)層面的因素。

蘋果同時掌握軟硬件的「不公平競爭」

最后,再重新貼出本文標(biāo)題的答案:

「藉由牢牢把持軟硬件平臺的『封閉性』先天優(yōu)勢,蘋果掌握了ARM 指令集邁向64 位元帶來的機(jī)會,打造出一系列同時間能夠有效處理更多指令的先進(jìn)微架構(gòu)?!?/strong>

這「一體成形」的絕對優(yōu)勢,在可見未來的深度學(xué)習(xí)之路上,會更加的牢不可破,這就是蘋果在iPhone 前景未明之際,就膽敢購并PA Semi 投資未來,所得到的豐碩成果,就算你不喜歡「果粉」,你也不能不佩服喬布斯的遠(yuǎn)見。

至于PA Semi 究竟干過哪些值得蘋果冒險的好事,等以后有機(jī)會,再好好談?wù)劊绻娴倪€有機(jī)會。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉