來源:內容由 微信公眾號 半導體行業觀察(ID:icbank)翻譯自「anandtech」,謝謝。

在過去的幾年裡,蘋果的晶元設計團隊一直處於架構設計和製造工藝的前沿。蘋果A12是該公司又一次跨越代際的飛躍,因為它號稱是首款商用7nm晶元。

在談論工藝節點時,一般而言,數字越小,晶體管就越小。雖然最近節點的名稱與實際物理尺寸之間的關聯早已失去了意義,但它仍代表密度的飛躍,因此,供應商能夠在相同的晶元空間中封裝更多的晶體管。

感謝TechInsights公開分享了蘋果A12晶元的圖片,我們隨後發布了裸片照片的首篇分析評論:

蘋果A12晶元裸片照片(來源:TechInsights )

本文中,我再次回顧了A12晶元,我寫下了我自己定義的關於裸片照片的標籤和解釋。新的A12晶元主要遵循蘋果的SoC佈局結構(同過去大多數裸片相比旋轉了90度)。

在右側,我們看到了GPU複合體,中間是四個GPU內核和共享的邏輯部分。CPU複合體位於底部,中間靠左側有兩個Vortex大CPU內核,由大型L2緩存分隔開,緊挨著4個小CPU核心和它們各自的L2緩存。

中間的4個SRAM大組塊是系統緩存的一部分,這是SoC範圍的緩存層,位於內存控制器和內部系統互連以及區塊內存子系統之間。蘋果將這個區塊用作節能功能:由於DRAM的內存事務在能源使用方面非常昂貴,因此在片上進行緩存會節省很多功率,而且由於數據的局部性,性能可能會有所提升,由此會帶來額外的好處。

到目前為止,蘋果A12的系統緩存出現了自蘋果A7推出以來最大的變化。佈局上的巨大變化也表明了區塊功能的巨大變化,因為現在我們清楚地看到區塊被分成明顯的4個部分。在先前的蘋果SoC中,例如A11和A10,系統緩存看起來更像一個邏輯區塊,看起來似乎是兩個部分。區塊中部分的加倍可能會表明這個區塊的內存性能發生了很大的變化,在後文中,我會進行更詳細的分析。

最後一個關於A12的重要介紹是神經網路加速器IP的重大改進。蘋果聲稱已經從A11的雙核設計轉變為新的8核設計。在演講中,很重要的一點是,蘋果從來沒有提到這是內部設計,營銷材料總是急著介紹SoC的其他IP區塊。

據傳去年的設計是CEVA IP,但是我們從未得到完全的確認,因為蘋果不希望它被人們所知。A12是8核設計,性能提升了4倍,但實際的性能提升接近8倍,從A11的600GigaOP增加到A12的5TeraOP。在裸片照片中,我們看到8個MAC引擎圍繞著一個大型中央緩存,頂部可能有共享的邏輯部分,負責固定功能和完全連接的層處理。

縱觀從A11到A12的不同區塊大小的變化,我們看到了臺積電新7nm工藝節點的優點。值得注意的是,幾乎所有的IP區塊都經歷了變化,所以用A11 vs A12的比較來確定新工藝節點的密度提高了多少並不是有效的方法。儘管如此,我們將單個GPU核心作為可能的候選(因為我們看到的結構基本相同),觀察發現,與A11相比,A12尺寸減小了37%。顯而易見的是,新節點使蘋果能夠添加一個額外的GPU核心,然而在絕對值上,A12中的GPU仍然較小。

更大的CPU和大規模緩存層次結構

來源:TechInsights的蘋果A12裸片照片,ChipRebel的蘋果A11裸片照片

接下來是CPU複合體,尤其是新的大CPU核心,我們現在看到的可能是蘋果幾代晶元在CPU佈局上最大的變化。特別是,我們看到新的Vortex CPU中的L1數據緩存增加了一倍,從64KB增加到128KB。在前端,我們還看到了雙倍的SRAM區塊,我將其歸因於L1指令緩存,我現在相信它也一定翻倍到了128KB。有趣的是,即使在幾年之後的今天,我們仍然沒有真正弄清楚A10在前端區塊中引入了什麼:在這裡,我們看到了一個新的非常大的緩存區塊,其具體功能尚不清楚。

多年來的一個大問題是,蘋果的緩存層次結構到底是什麼樣的。查看不同測試深度下的內存延遲行為,我們可以看到不同測試深度下的不同跳躍。我沒有標註延遲數值,因為稍後我們將在此圖的非對數版本中再次看到它們。

在大核心方面,我們清楚地看到L1$從64KB跳躍到128KB,我認為這裡的增長毫無疑問。然而,進入L2緩存,我們在延遲方面看到了一些奇怪的特性。很明顯,在3MB的範圍內,延遲增加,直到6MB左右。值得注意的是,只有在完全隨機模式下訪問時,才會出現3MB左右延遲緩慢增加的特性,在較小的訪問窗口中,延遲始終平坦,直到6MB。

我們暫時不再考慮這個問題,轉而進入系統緩存服務的6MB以上區域。一開始很難弄清楚,因為整體低延遲會造成偏移,但總體而言,在我們達到DRAM延遲之前,延遲曲線會進一步增加4MB左右。這與我們在裸片上實際看到的是一致的:新的系統緩存不僅使其區塊中劃分的部分加倍,而且容量也從4MB增加到8MB,翻了一倍。

我們接下來分析小核心,事情變得有點複雜。乍一看,你會相信A11的小核心L2被限制在512KB,而A12則高達1.5MB,然而我認為我們正在被緩存的電源管理策略所欺騙。看看A11 Mistral核心延遲,我們可以看到768KB和1MB處的明顯跳躍。A12核心在2MB處也可以看到類似的跳躍。

此時,我們最好是回到裸片照片,做一些像素計算,從而得出下表:

大核心L2在A11和A12之間沒有任何結構上的變化,二者都有128個SRAM macros instances ,分成兩個組塊。這裡的問題仍然是,如果L2確實只有6MB,那麼這意味著每SRAM區塊有48KB。

在查看小核心時,我們看到它們使用相同的SRAM macros。A12的小核心L2已從16個instance增加到32個,這意味著這裡一定有加倍。然而,正如我們所看到的,L2的實測延遲深度至少增加了三倍,其他的事情肯定也在發生。我們測得的數據絕不代表硬體中的內容,實際上,我們可以通過以更特殊的方式運行延遲測試來確認這一點,這使得電源管理認為它只是一些小的工作負載。在A12中,Tempest核心似乎只有512KB可用。

結論是,蘋果在每個bank的間隔尺度上使用了部分緩存電源關閉。在A12上,每個小核心的L2 bank是512KB,而在A11上是256KB。而且,這更讓我堅信A12上有2MB, A11上有1MB,只是測試可能無法滿足訪問完整緩存的策略要求。

反過來,因為這會確認每個SRAM instance是64KB,我們可以回過頭來做一些關於大核心L2的假設。請再看一次,你會認為它停留在了6MB,但仔細看,特別是A12,在8MB時特性發生了變化。同樣,內核可能有8MB的物理緩存,一旦我們接近完整緩存,訪問行為就會發生明顯的變化。

這裡的要點是,蘋果的緩存非常龐大,A12在這方面進一步擴展,將系統緩存大小加倍。在實踐中,我們在大型CPU內核上有大約16MB的可用緩存層次結構——這個龐大的數量只會讓SoC競爭者的內存和緩存子系統相形見絀。

進化的GPU

在GPU方面,我們對A12有很大的期望,不僅在性能方面,而且在架構方面。去年,Imagination發布了一份新聞稿,聲稱蘋果已經通知他們,公司計劃在15至24個月內不再在新產品中使用其IP。這最終導致股票價格暴跌,隨後公司被出售給一家股權公司。

因此,儘管蘋果聲稱A11 GPU是內部設計,但它仍然看起來像Imagination衍生設計,因為它的區塊設計與之前的Rogue非常相似——最大的區別在於,現在所謂的核心是比先前的兩個核心更大的結構。事實上,它仍然是一個TBDR(基於圖塊的延遲渲染),IMG擁有許多專利,但一個重要的事實是,蘋果仍然非常公開和支持PVRTC(PowerVR紋理壓縮,一種專有格式),這意味著GPU仍然可能與IMG的IP相關聯。此處,我們可能仍然會認為是架構許可設計,而不是我們通常所說的「清白」設計。

來源:TechInsights的蘋果A12裸片照片,ChipRebel的蘋果A11裸片照片

我們再來看A12 GPU,模型命名為G11P,我們看到與去年的A11 GPU有一些非常明顯的相似之處。各個功能區塊似乎在很大程度上位於相同的位置,並以類似的方式構造。

我認為蘋果A12 GPU最大的進步是支持內存壓縮。在發布會上聽到這個消息,我非常驚訝,因為這同時也意味著兩件事:先前的蘋果SoC和GPU顯然沒有內存壓縮,而現在僅此一點就足以顯著提升新GPU的性能。

所謂內存壓縮,特別是指從GPU到主內存的透明幀緩衝區壓縮。在桌面領域,像英偉達和AMD這樣的廠商擁有這一功能已經很多年了,即使在內存帶寬沒有增加的情況下,它也能提高GPU的性能。智能手機GPU同樣需要內存壓縮,這不僅是因為移動SoC上的帶寬有限,而且最重要的是因為與高帶寬要求相關的功耗降低。ARM的AFBC一直是移動領域最公開談論的機制,但高通甚至Imagination等其他廠商都有自己的實現機制。

蘋果似乎很晚才通過A12引入了這一功能,但這也意味著A12將受益於效率和性能的巨大的代際提升,考慮到蘋果宣稱將大幅增加新GPU,這一舉措意義重大。

A12 Vortex CPU巡禮

在談到Vortex微架構時,我們首先需要討論的是我們在蘋果新SoC上看到的頻率。在過去幾代中,Apple一直在穩步提高其大核心的頻率,同時也提升了微架構的IPC。我對A12和A11的頻率特性進行了快速測試,得出了下表:

A11和A12的最大頻率實際上是單線程boost時鐘—— A11的Monsoon核心為2380MHz,A12的新Vortex核心為2500MHz。在ST的應用中,這隻有5%的頻率提升。當添加第二個大線程時,A11和A12時鐘分別降至2325MHz和2380MHz。當我們同時在小內核上運行線程時,兩個SoC之間的情況發生了分歧:A11進一步降至2083MHz,而A12繼續保持在2380MHz,直到達到熱極限並最終停止工作。

在小核心方面,相對於之前的Mistral,新的Tempest核心實際上更加保守。當系統只在A11上運行一個小核心時,最大頻率提升到1694MHz。這種特性現在在A12上消失了,最大頻率是1587MHz。當4個小內核滿載時,頻率進一步降低至1538MHz。

大大改進的內存延遲

正如前文所述,很顯然,蘋果在A12的緩存層次結構和內存子系統方面投入了大量工作。回到線性延遲圖,我們可以看到,對於大核心和小核心的完全隨機延遲有以下特性:

與Monsoon內核相比,Vortex內核的頻率僅提升了5%,但絕對L2內存延遲從11.5ns降至8.8ns,提升了29%。這意味著新的Vortex內核的L2緩存現在可以在更少的週期內完成操作。在Tempest方面,L2週期延遲似乎保持不變,但在L2分區和電源管理方面又發生了很大的變化,允許訪問更大的物理L2組塊。

我只在小於64MB的範圍內進行了深度測試,很明顯,在測試數據集中,延遲曲線還沒有變平緩,但可以看出DRAM的延遲已經有所改善。當小內核處於活躍狀態時,內存控制器的DVFS頻率的最大值會提高,這可以解釋為什麼Tempest內核的DRAM訪問存在較大的差異——當大內核上有大線程運行時,它們的性能會更好。

A12的系統緩存在其特性上發生了巨大的變化。雖然緩存層次結構的這一部分帶寬與A11相比有所減少,但延遲得到了很大改善。這裡的一個重要影響可以歸結為L2預取器,我也看到了系統緩存端有預取器的可能:延遲性能和流預取器的數量都提升了。

指令吞吐量和延遲

為了比較Vortex的後端特性,我們測試了指令吞吐量。後端性能由執行單元的數量決定,延遲由設計質量決定。

Vortex核心與先前的Monsoon(A11)看起來非常相似,除了我們貌似找到了新的除法單元,因為執行延遲在整數和FP方面都減少了2個週期。在FP方面,除法吞吐量翻了一番。

從核心中部和後端來看,Monsoon(A11)是一個重要的微架構更新。正是在這裡,蘋果將Hurricane(A10)的微架構從6-wide解碼改為7-wide解碼。後端最重要的變化是添加了兩個整數ALU單元,從4個單元增加到了6個。

Monsoon(A11)和Vortex(A12)是寬度極大的機器——具有6個整數執行流水線,其中有兩個複雜單元、兩個負載單元和存儲單元、兩個分支埠、三個FP/矢量流水線,這給出了估計的13個執行埠,遠遠超過ARM即將推出的Cortex A76,也比三星的M3寬度更大。事實上,假設我們沒有看到非典型的共享埠情況,蘋果的微架構在寬度方面似乎遠遠超過其他任何東西,包括桌面CPU。

SPEC2006性能:達到桌面水平

我們在iOS設備上嘗試SPEC已經有一段時間了——由於各種原因,在過去的幾年裡我們無法繼續嘗試SPEC。我知道,很多人都希望我們能從我們離開的地方重新開始,我很高興告訴大家,我花了一些時間讓SPEC2006重新投入使用。

SPEC2006是一個重要的行業標準檢查基準測試,與其他工作負載的區別在於,它所處理的數據集更大,更複雜。雖然GeekBench 4已經成為了流行的行業基準測試——我對實現完全跨平臺基準測試的努力表示讚賞——但是我們必須考慮到,工作負載的程序大小和數據大小仍然是相對重要的。因此,SPEC2006作為基準測試更好,它充分展示了給定的微架構的更多細節,特別是在內存子系統性能方面。

以下SPEC數據是估算值,因為它們未經SPEC提交和正式驗證。基準測試庫的編譯設置如下:

  • Android:工具鏈:NDK r16 LLVM編譯器;Flags:-Ofast, -mcpu=cortex-A53

  • iOS: 工具鏈:Xcode 10; Flags:-Ofast

在iOS上,429.mcf是一個問題,因為內核內存分配器通常拒絕分配程序需要的單獨的大型1.8GB組塊(即使是新的4GB iPhone)。我修改了基準測試,只使用了一半的arc,從而將內存佔用減少到大約1GB。我在幾個平臺上測量了運行時間的減少,還對iOS評分應用了類似的比例因子,我估計評分的準確率為+-5%。其餘工作負載用手動驗證,並驗證是否正確執行。

性能測量是在人造環境中運行的(即:用臺式風扇冷卻手機),我們保證,在完成全套運行所需的1-2小時內,熱量不會成為問題。

在數據展示方面,我參考了今年早期的文章,例如我們在Galaxy S9評論中對Snapdragon 845和Exynos 9810的評估。

在衡量性能和效率時,重要的是要考慮三個指標:顯然,基準測試的性能和運行時間表示在右側軸上,從右側開始增長。數據越大,SoC/CPU的性能就越好。標籤代表SPECspeed分數。

在左側軸上,條形圖表示給定工作負載的能量使用情況。條越長,意味著平臺使用的能量越多。條越短,代表平臺更節能,意味著使用的能量越少。標籤代表平均功率(用瓦特表示),它是熱約束器件中考慮的重要次要指標,以及總能量(用焦耳表示),這是主要的效率指標。

數據按照圖例中的順序排列,不同顏色代表不同的SoC供應商以及不同的代際。我列出了蘋果A12、A11、Exynos 9810(2.7和2.3GHz)、Exynos 8895、Snapdragon 845和Snapdragon 835的數據。這讓我們概述了過去兩年來所有相關的CPU微架構。

我們從SPECint2006工作負載開始:

在大多數工作負載下,A12的時鐘頻率比A11高5%,但我們必須記住,我們無法真正鎖定iOS設備上的頻率,所以這只是基準測試期間運行時時鐘的一個假設。在SPECint2006中,A12的表現平均比A11好24%。

最小的增長見於456.hmmer和464.h264ref——它們是整套測試中兩個執行最多的瓶頸測試。由於A12在這方面似乎並沒有什麼大的變化,小幅增長主要歸因於更高的頻率以及緩存層次結構的改進。

445.gobmk的改進非常大,達到了27%——這裡的工作負載特徵是存儲地址事件中的瓶頸以及分支錯誤預測。我確實測量到A12在處理緩存線路的存儲方式方面有一些重大變化,因為分支預測精度沒有顯著變化。

403.gcc的一部分、429.mcf、471.omnetpp、473.Astar和483.xalancbmk對內存子系統很敏感,此時A12的性能從30%提高到42%,令人震驚。很明顯,新的緩存層次結構和內存子系統在這方面取得了很大的成效,因為蘋果實現了最近幾代晶元最主要的性能飛躍之一。

在衡量功率效率時,我們發現,總體而言A12提高了12%,但我們必須記住,我們說的是最高性能時的能耗降低12%。A12展示出性能提高了24%,兩個SoC的性能/功耗曲線已經大不相同。

在性能提升幅度最大的基準測試中(即前面提到的內存限制工作負載),我們看到功耗顯著上升。因此,儘管7nm工藝承諾增加功率,但蘋果選擇花費的能量比新工藝節點節省的能量更多,因此SPECint2006的平均功率從A11的3.36W上升到A12的3.64W。

接下來,我們轉到SPECfp2006,探討C和C++基準測試,因為我們在XCode中沒有Fortran編譯器,而且要讓它在Android上工作非常複雜,因為它不是NDK的一部分,NDK有一個不推薦使用的GCC版本。

SPECfp2006有更多的內存密集型測試,在7個測試中,只有444.namd,447.dealII和453.povray在內存子系統達不到標準時看不到主要的性能回歸。

當然,這主要有利於A12,因為SPECfp的平均增長為28%。433.milc從中脫穎而出,性能提升了75%。該基準測試的特點是指令存儲受限,這又一次展示了Vortex的強大,我看到了很大的改進。同樣的分析適用於450.soplex,出色的緩存層次結構和內存存儲性能的組合提高了42%的性能。

470.lbm對於蘋果CPU是一個有趣的工作負載,與ARM和三星的核心相比,它展示出了多因素性能優勢。奇怪的是,高通的Snapdragon 820 Kryo CPU的表現仍然優於最近的Android SoC。470.lbm的特點是最熱的代碼中有很大的循環。微架構可以通過具有(更大的)指令循環緩衝區來優化這樣的工作負載,在循環迭代中,核心將繞過解碼階段並從緩衝區獲取指令。蘋果的微架構似乎有某種這樣的機制。另一種解釋是蘋果內核的矢量執行性能——Lbm的熱循環大量使用SIMD,而蘋果的3倍執行吞吐量優勢也可能是性能的重要貢獻者。

與SPECint類似,性能躍升幅度最大的SPECfp工作負載的功耗也有所增加。433.milc的功耗從2.7W提高到4.2W,性能同時提高了75%。

總體而言,功耗從3.65W躍升至4.27W。所有測試中的整體能效都有所增加,但482.sphinx3除外,其功率增加達到A12所有SPEC工作負載的最大值5.35W。在SPECfp2006中,A12的總能耗比A11低10%。

我沒有時間回去測量A10和A9的功率,但它們對於SPEC而言一般為3W左右。我運行了性能基準測試,以下是A9到A12以及最新的Android SoC的綜合性能概述,適用於正在研究比較過去幾代蘋果的人士。

總體而言,新的A12 Vortex內核以及SoC內存子系統的架構改進為蘋果的新晶元提供了比蘋果的營銷材料提到的更大的性能優勢。與最好的Android SoC相比,無論是在性能上還是在功率效率上,蘋果的優勢都非常明顯。蘋果的SoC比最近所有的Android SoC具有更高的能效,並且有將近兩倍的性能優勢。如果我們將能源使用正常化,蘋果的性能效率將領先3倍,對此我不會感到驚訝。

這也讓我們對今年發布的三星M3核心有了一個很好的瞭解,只有當總能量在可控範圍內時,高能耗才能帶來更高的性能。在這裡,Exynos 9810的能耗是去年A11的兩倍——性能赤字為55%。

與此同時,ARM的Cortex A76預定在幾周內進入麒麟980,作為華為Mate 20的一部分。我保證我們會為新的旗艦產品進行適當的測試,並將其添加到目前的SoC性能和效率圖表中。

令人驚訝的是,蘋果的A11和A12與目前的臺式機CPU已經相當接近。我還沒有機會用更具有可比性的方式運行程序,但從我們的網站編輯Johan De Gelas在今年夏天早些時候提供的最新數據來看,我們看到A12在單線程性能方面優於中等速度的Skylake CPU。當然,我們要考慮到編譯器因素和各種頻率問題,但我們現在討論的仍然是非常小的差距,直到蘋果的移動SoC在ST性能方面優於最快的桌面CPU。在接下來的幾個月裏,在這個話題上得到更準確的數據將是一件有趣的事情。

系統性能

雖然綜合測試性能是一回事,並且希望我們能夠很好地使用SPEC,但實際使用情況下的交互性能表現不同,而且軟體在測試性能方面可以發揮重要作用。

我必須承認,我們的iOS系統性能測試套件看起來非常糟糕:我們只剩下了web瀏覽器測試,因為iOS缺乏有意義的替代品,比如在Android的PCMark測試工具。

Speedometer 2.0是最新的行業標準JavaScript基準測試,可測試最常見和最現代的JS框架性能。

A12與A11相比性能大幅躍升了31%,再次指出蘋果廣告中的性能數據遠遠低於新款晶元。

我們還看到iOS 12在上一代設備上的小幅提升。這不僅得益於iOS調度器處理負載的方式發生了變化,還得益於蘋果使用的每個不斷發展的JS引擎的進一步改進。

WebXPRT 3也是一種瀏覽器測試,但是它的工作負載更加廣泛和多樣化,包含了大量的處理測試。在這裡,iPhone XS比iPhone X顯示出11%的優勢,比Speedometer 2.0測試的優勢稍小。

此前的設備也看到了穩定的性能提升,iPhone X的得分從134分上升到147分,即10%。與iPhone 7的A10相比有33%的大幅提升,我們稍後會詳細介紹。

iOS12調度器載入斜坡分析

蘋果公司承諾iOS12系統將會有顯著的性能提升,這要歸功於他們的新調度器計算單個任務負載的方式。操作系統的內核調度器跟蹤線程的執行時間,並將其聚合為一個利用率指標,然後由DVFS機制等使用。決定這種負載如何隨時間變化的演算法通常是一個簡單的軟體決策——它可以根據供應商認為合適的方式進行調整和設計。

因為iOS的內核是閉源的,所以我們無法真正看到變化是什麼,但我們可以測量它們的效果。一個相對簡單的方法是跟蹤工作負載中從空閑到最高性能的頻率。在iOS12系統升級前後,我在iphone 6到X(和XS)上進行了這個測試。

我們從帶有A8晶元組的iPhone 6開始,我在iOS11上得到了一些奇怪的結果,因為從空閑到最高性能的上升特性非常不尋常。我重複了幾次,但結果還是一樣。A8的CPU在空閑時為400MHz,並在此停留了110ms,直到它躍至600MHz,然後又停留了10ms,進入最高性能時的1400MHz。

iOS12系統展示了一種更階梯式的特性,更早的時候就開始上升,並在90ms後達到最高性能。

iPhone 6S在iOS11上有明顯不同的上升特性,而A9晶元的DVFS非常慢。在這裡,CPU總共需要435ms才能達到其最大頻率。隨著iOS12的更新,這個時間大幅縮減到80ms,大大提高了在更短的交互工作負載下的性能。

我很驚訝地看到調度器以前的速度之慢,這正是目前三星Exynos晶元組以及其他不優化調度器的Android SoC的問題。雖然硬體性能可能存在,但它並沒有在短時間交互工作負載中表現出來,因為調度器負載跟蹤演算法太慢了。

A10與A9有類似的缺點,達到最高性能的時間超過400ms。在iOS12系統中,iPhone 7將這個速度減半,約為210ms。與A9相比,A10在這方面更為保守,這很奇怪,但這可能與小核心有關。

在這張圖中,我們還可以看到小核心Zephyr的頻率,它們從400MHz開始,在1100MHz達到峯值。圖中的頻率回落到758MHz,因為此時有一個核心切換到大核心,然後它們的頻率繼續上升,直到達到最高性能。

在蘋果A11上,我沒有看到任何重大變化,實際上任何差異都可能是測量不同固件之間的隨機雜訊。在iOS11和iOS12中,A11在大約105ms內上升到全頻。請注意,此圖中的x軸比之前的圖短很多。

最後,在iPhone XS的A12晶元組上,我們無法測量任何預更新和更新後的特性,因為iPhone XS自帶了iOS12。此時,我們再次看到它在108ms後達到了最高性能,我們看到了從Tempest核心轉向Vortex核心的趨勢。

總之,我希望這是iOS12給舊設備帶來的性能差異的最好和清晰的展示。

就iPhone XS而言,我對它的性能沒有任何質疑,它的速度很快。我不得不承認我仍然是Android用戶,並且我的手機完全關閉動畫,因為我發現這會阻礙設備的速度。iOS無法完全關閉動畫,雖然這只是我的主觀個人觀點,但我發現它們嚴重妨礙了手機的真實性能。在非互動式工作負載中,iPhone XS只是在沒有任何問題或異常的情況下完成了測試。

GPU性能

A12的GPU的性能提升是演講的最大亮點之一,與A11的GPU相比,性能提升了50%。蘋果通過「簡單地」在A11的三個GPU上添加第四個GPU核心,以及在GPU上引入內存壓縮實現了這一目標。我認為,內存壓縮是最有助於提高GPU的微架構性能的因素,因為它實際上是巨大的一次性轉變,無可否認,蘋果花了很長時間才完成。

在進入基準測試之前,我想提一點,最新的蘋果 GPU的峯值性能和峯值功耗是一個問題。我們已經看到,蘋果從一段時間內的持續性能提升轉變為從SoC的峯值性能下降到實際性能下降的最糟糕的「罪犯」之一。這是有原因的,但我很快就會講到。

3DMark物理測試主要是一個CPU限制測試,它也強調整體平臺功率限制,而GPU也正在工作。我們看到,iPhone XS和A12相比於去年的iPhone取得了很大的進步。這是一個在過去對蘋果CPU而言特別有問題的測試,然而這個微架構的小問題似乎在A11和Monsoon核心中得到了解決。Vortex核心以及總是在提高的SoC功率效率進一步提高了性能,最終在這項特定測試中匹配了ARM的核心。

在3DMark測試的圖形部分,iPhone XS的持續性能比去年的iPhone X提高了41%。在這個特殊的測試中,OnePlus 6更慷慨大方的熱敏元件仍然讓Snapdragon 845比新晶元表現更好。

在峯值性能方面,我在3DMark中遇到了一些大問題:我完全無法在iPhone XS或XS Max保持涼爽的情況下完成一次運行。如果設備足夠涼爽,GPU會提高到非常高的性能,甚至會崩潰。我一直可以一遍遍地重現這一現象。我嘗試在測試中測量功率,平臺的瞬時平均功率為7-8瓦。對於高於8的數值,我懷疑這種測量方法沒能記錄下來。GPU崩潰意味著在運行過程中,電源輸出無法提供必要的瞬態電流,我們將看到電壓下降,引起GPU崩潰。

在幾次嘗試中多次重複測試時,我加熱SoC,直到它決定以較低的GPU頻率啟動,這便可以成功完成測試。

GFXBench測試

Kishonti最近發布了新的GFXBench 5 Aztec Ruins測試,它為我們的測試套件帶來了更新、更現代、更複雜的工作負載。在理想的情況下,我們將測試真正的遊戲,但這在移動設備上令人難以置信,因為基本上沒有哪款遊戲內置基準測試模式。有一些工具可以收集fps值,但這裡最大的問題是手動玩遊戲時工作負載的可重複性,這也是當今許多在線遊戲的一個大問題。

我仍然認為,人造基準測試在這裡有一個非常穩固的位置,只要你理解基準測試的特性。Kishonti的GFXBench多年來一直是行業標準,而新的Aztec測試給了我們不同的工作量。新的測試著色更濃,利用更複雜的效果來強調GPU的運算能力。儘管上表中的數據是在Mali G72 GPU上收集的,但它仍能夠提供對其他架構的總體預期。新的測試由於其更大的紋理,因此也非常需要帶寬。

一般而言,遊戲與基準測試的關聯具體取決於各種圖形工作負載的百分比、是否有較大的填充或粗重的紋理、是否具有複雜的幾何形狀、或僅僅是著色效果越來越複雜,這就需要GPU的運算能力。

普通模式的Aztec Ruins是一項要求不高的新測試,新的蘋果A12手機展示出了極高的峯值性能,比去年的iPhone高出51%。

在持續表現方面,數字在幾分鐘後迅速下降,並在隨後進一步穩定下來。此時,iPhone XS的性能比iPhone X高出61%。蘋果A12也能夠在持續表現上以45%的優勢擊敗目前的領導者OnePlus 6中的Snapdragon 845。

在Aztec Ruins的高級模式中,我們看到了一個驚人相似的性能排名。iPhone XS的峯值性能又一次非常出色,但重要的是持續的分數。此時,iPhone XS性能比iPhone X高61%。OnePlus 6的Snapdragon 845的性能差值在這裡降低到31%,比普通模式略低一點,我們可能在微架構的某些方面遇到一些瓶頸。

GPU功率

蘋果設備的平臺和GPU功能一直是我想要發布的東西,但實現起來很複雜。我得到了新iPhone XS的合理數據,但是舊的SoC數據仍然需要等待機會。

我沒有時間在各種設備上測試Aztec Ruins,所以我們仍然依賴於標準的Manhattan 3.1和T-Rex。首先,我們先列出測試結果:

同樣,在Manhattan 3.1中,新款iPhone XS的性能比iPhone X高出75%。這裡的改進不僅僅是因為GPU的微架構的改進、擁有一個額外的核心,以及SoC新工藝節點,還因為新的內存壓縮減少了外部DRAM的能耗,它在帶寬繁重的3D工作負載中可佔系統功耗的20-30%。DRAM上的功率節省意味著GPU和SoC可以使用更多的能量,從而提高了性能。

這裡的功率數字是系統的有效功率,表示總設備功率減去給定工作負載情況下的空閑功率(其中包括屏幕功率)。

在峯值性能下,當設備在22°C環境溫度下冷卻時,蘋果A12的GPU會非常耗電,功率達到6W。這並不是GPU的平均峯值,因為我先前提到過3DMark達到7.5W左右(在崩潰之前)。

即使在這個高功率數字下,A12的效率也超過了其他所有SoC。雖然這頗為有趣,但強調蘋果的節流特性是非常重要的。在僅僅3分鐘或3個基準測試運行後,手機將節流約25%,達到我在效率表中所說的「溫暖」狀態。功率達到合理的3.79W。值得注意的是,電源效率並沒有大幅提高,只是比峯值提高了16%。這意味著該平臺的功率曲線相對較低,並且性能受到熱量的限制。

接下來看T-Rex,iPhone XS再次展示了61%的持續性能提升。

我們看到,T-Rex的功耗與Manhattan的功耗一致,低溫設備的峯值功率達到6W多一點。在運行3次之後,峯值功率再次降低到4W以下,性能下降了28%。這裡的效率並沒有太大的提高,再次表明功率曲線相對較低。

需要注意的是,「溫暖」運行的功率度量並不代表持續的性能,我只是想在峯值數據旁邊添加一個額外的數據點。大多數設備的持續功率在3-3.5W範圍內。

為什麼蘋果公司在峯值性能和持續性能之間存在如此巨大的差異?先前,iPhone 6和A8發布的時候,持續性能便是蘋果的主要關注點之一。這種變化是由於日常GPU用例發生了變化,以及蘋果如何將GPU用於與3D無關的工作負載。

Apple大量使用GPU計算,用於各種用途,例如app中的一般硬體加速、使用GPU計算進行相機圖像處理。在這些用例中,持續的性能並不重要,因為它們是事務性工作負載,這意味著需要儘快處理的固定工作負載。

在過去的幾年裡,Android GPU計算一直是一場徹頭徹尾的災難,我主要是聲討谷歌沒有在AOSP中支持OpenCL,這使得供應商對OpenCL的支持非常零散。RenderScript從未獲得太多的關注,因為它不能保證性能。Android設備和SoC的碎片化意味著在第三方app中基本不存在GPU計算(如有錯誤,敬請指正!)

蘋果對API棧的垂直集成和嚴格控制意味著GPU計算成為了現實,而事務性GPU峯值性能是值得考慮的指標。

現在,雖然這確實解釋了節流的原因,但我仍然認為蘋果可以做一些熱優化。我在iPhone XS上玩了Fortnite遊戲,手機的發熱讓我不是很喜歡。此時,必須有某種方式來讓具有持續性能特徵的遊戲和app切實從GPU開始限制這種持續的性能狀態。

除了熱性能和峯值性能的考慮因素以外,iPhone XS和XS Max由於新的A12 SoC,展示出業界領先的性能和效率,並且目前是最好的手機遊戲平臺。


推薦閱讀:
相關文章