wwdc 2020上用a12z演示了古墓麗影,剪輯4k視頻,此時win陣營的surface pro x只能當上網本用。


其實不是什麼運行效率高,而是蘋果硬體堆得很到位。

蘋果其實是很捨得堆硬體的,尤其捨得堆處理器性能。只不過蘋果從來不說這一點。搞得那些只有蘋果處理器兩年前性能的處理器還特么好意思有一堆「利益相關者」大呼現在的手機處理器性能過剩。。。過剩你個大頭鬼。

為什麼性能夠強?簡單說就是A12Z硬體堆得夠足,在測試Mac上肯定還解鎖了功耗牆提升到更高頻率。就是這麼簡單,並不是所謂的神優化。

等A14系列上市,將來為Mac電腦專門定製的特供版標壓A14X一定具有夠強的性能,翻車的概率很低。蘋果在功耗續航上翻過車,在性能上其實還真沒翻過,而電腦跟手機比起來又恰好是不太在意功耗續航的,基本是穩的。


因為從嚴格意義上講,遊戲(GPU)和視頻編碼(VPU)和arm(CPU)沒有什麼關係:

不管是ARM,還是MIPS(龍芯),還是RISC-V(SiFive),都可以通過PCIE接上AMD的GPU然後跑Mesa開源驅動,然後用vaapi/vupau加速視頻編解碼.

所以題目描述的現象和mac採用的arm指令集沒有什麼關聯,將A12z的原生性能和SQ1在跑x86 jit的性能做對比也是很不合適的.

更有意義的測試可以比較clang/llvm在這些設備上的自舉速度.llvm可是Apple的項目

Apples Compiler Team Starts Upstreaming Changes For macOS 11


A12X本身GPU 規模就差不多夠的上GM107(PS4GTX750tiGTX960M)水平了,繼續提頻擴張一下,適度跑一跑中低畫質的古墓麗影11並不是什麼了不起的事情,不然CPU殘廢得多的主機都是怎麼跑的?

以當年孤島危機2 為例,正版發售前夕直接把PS3XBOX模式的閹割版畫質選項給放出來了,最低配置附近的8800GT和HD4830跑PC模式最低畫質勉強30幀,跑PS3模式直接躍升到40+,不是遊戲製作人員拿到大圖仔細對比光屏攝根本看不出任何東西。

DX11以後的3A遊戲有著鮮明的特點——堆十分算力提升一分畫質效果,沒有嚴格定量的對比本身都異想天開。A12X 作為SOC所有的晶體管數量加起來100億,GTX1080是72億,很多人藉此認定A12X 的GPU部分比後者一半還強,然而實際上1080是GTX750ti的4到5倍之間。都是屏攝情況給孤島危機3來個控制台開啟SSAA超採樣讓後者和GTX750ti跑在類似的幀數上完全沒有任何問題,大批的主機遊戲縮水貼圖紋理光照之後給你三米抗鋸齒,普通人又能看出來什麼?

Photoshop 能否打開5GB大小文件,是否流暢的主要瓶頸在內存和硬碟,載入完畢之後很大一批跨度很大配置的電腦所謂「流暢性」都是差不多的,甚至可能出現28核至強在很多操作中被高頻i3 吊打的情況。

而視頻方面,Final cut pro 和prores本身都是蘋果的東西,應該類比的對象是Intel平台沒有明顯bug,優化效率及格的黑蘋果電腦,而不是Windows下古董機使用Adobe全家桶的情況。都比轉碼,都用最新編碼器直接暴力輸出才是真理,Adobe的編碼、解碼能力在壓片領域本來就不值一提。

硬解方面,NA走的都是獨立的解碼單元,都是AISC電路,不同的解碼器不同的片源兼容性不同,網頁端兼容性尤其千奇百怪。如果拿去Madvr軟解,顯卡並不差。這方面PC用戶應該做的是熟悉更充分的解碼器編碼器認識。

當然,系統對系統而論,蘋果的軟硬方案很有價值,也在一定程度上動搖了業界,但這個和「蘋果(索尼)大法就是好」是兩回事。蘋果本來就是PC鼻祖,現在淪落到被揶揄了十年才勉強動搖一下現狀的局面本身就是嚴重的歷史倒退,無論如何都不是光榮事件。

有一說一,東西出來在說,而且要在一個固定有共識的頻道上說,蘋果垃圾桶供電不足用戶可以說設計合理本來就不應該考慮極限情況,imac Pro 用戶說我打星際2 電腦涼快得很,這種雞同鴨講,動不動雞血上天的氛圍,只有索尼牌SSD能夠與之相比。


首先遊戲不一定吃CPU,更多的是GPU負載。

這種系統的跨架構模擬,通常只需要模擬應用本身。

應用依賴的系統API和庫,包括GPU驅動這些東西,其實是可以用原生代碼實現的(這就是所謂的HLE,Windows上是CHPE技術,Rosetta應該也會有類似的)

也就是說,調用GPU的代碼其實很大一部分是不用模擬的

前陣子有人在刷了Win10 ARM64的一加6T(驍龍845手機,用850平台的驅動)上跑使命召喚6,也不見得完全跑不動

手機能玩《使命召喚6》?不好意思,一加6T真可以-太平洋電腦網?

mobile.pconline.com.cn

LOL就更流暢一點(國服TP要加驅動,ARM64上無法載入,外服就沒這個問題)

https://www.bilibili.com/video/BV1cJ411H7VD?

www.bilibili.com

再說現在Windows ARM平台雖然說應用生態一團糟,但也還是在改善的

前幾天我還在吐槽Windows ARM64 沒Java,昨天就公布beta了

Announcing OpenJDK for Windows 10 on ARM | Java at Microsoft?

devblogs.microsoft.com圖標

還有.Net 5、Python 3.8、Electron、Rust等平台都有官方支持了(Python還沒官方二進位要自己編譯),Go表示正在研究中

有了各種底層框架/庫/運行時的支持,才會有上層應用生態的改善,這總得要時間

不過你說蘋果在這方面有沒有優勢,當然有

首先A系列SoC本來就吊打安卓全家(高通給Windows定製的這三代晶元其實都只是小改版,850對應845,8cx對應855),原生性能更強,模擬器性能自然也就更給力

其次蘋果將iOS應用導入了過來,這些都是現成的原生App。即使是在第一天,ARM Mac找到原生App完成工作的概率還是比ARM Windows高得多

當然ARM Windows上可以用WSL解決一些問題,但Linux上的應用生態受用的主要還是開發者,日常工作生活工具App還是缺

還有蘋果對軟硬體生態的管控,讓它能夠給自家硬體深度優化,晶元有什麼功能都能用得上

微軟在Surface Pro X的宣傳片里吹SQ1(8cx定製版,也就是855改改)里有個9T算力的AI引擎,但別說Windows了,安卓上能用到的App又有多少?蘋果可從來不需要擔心這個問題。


ARM 和英特爾版本的 Mac 本質不同;

運行效率高只是表象,實質原因是多晶元各司其職。

本文中,我將以從 ARM 與 x86 晶元在 Mac 中使用方式的區別開始,探討 ARM 版 Mac 應用的運作方式。在開始之前,先明確幾個事實:

1. 至今為止蘋果並未展示任何 ARM 版 Mac 晶元

2. ARM 版 Mac 會採用自研 GPU

3. iOS 應用不可運行在任何英特爾晶元的 Mac 上

若你對這幾點有疑惑,可以參考我之前寫的文字:「ARM, AMD,英特爾」硬體科普及我見的未來,蘋果 A12Z 大概與哪款桌面級處理器及顯卡性能相當?

我們先從現有所有型號的 Mac 電腦說起。無論是產品線里最小號的 Mac Mini,還是性能最強的 Mac Pro,基本都具備如下晶元。

一顆英特爾的多核心處理器 + 一顆性能比較強的顯卡(英特爾的 IRIS,AMD 的 Navi,或者早期英偉達的顯卡) + 蘋果的 T2 晶元。其中 CPU 負責邏輯運算,GPU 具備超多核心並行處理圖形內容,T2 負責安全和存儲管理。在這套邏輯中,CPU 和 GPU 分別具備自己的存儲區域,互不相干。

以常見的視頻渲染工作流為例:當你往時間軸上加複雜的特效時,CPU 會用掉大部分算力來進行特效運算;當視頻加碼或解碼時,則需要犧牲掉 CPU 的一部分算力來軟解,或使用部分 CPU 上搭載的額外硬體來進行硬解碼;當你要將這些特效渲染到一個完整視頻以便導出時,GPU 便利用自身多核心並行運算的優勢來負責渲染工作。

在操作系統運作時,T2 上的安全模塊負責處理用戶身份的驗證,Apple Watch 手錶解鎖之類的安全事務。它的運作機理是自己根據一個獨特的只讀密碼來生成可用的驗證信息,經過安全處理後來判斷其它設備是否使用同一個賬戶登錄。當然 T2 還負責一些別的事情,比如硬碟加密和 APFS 系統存儲區塊只讀處理,防止惡意軟體修改系統代碼。

CPU,GPU 和 T2 這三個晶元太過分散,且架構不同,直接後果是互相之間能交流的信息有限。那有沒有更好的解決方案,讓它們能協同起來做事,被統一調度,在同一時間內能一起處理共有信息?答案是有的,這個方案叫做 SoC 片上系統,也就是手機晶元用了十來年的技術。

它的核心思想便是整合,即把所有東西都放在一起。這樣晶元只需要用最好的工藝生產一遍,而不是更具不同廠商的進度將 3 個不同的東西用不同的工藝生產好然後拼在一起。比如近年來英特爾的 CPU 工藝就在拖後腿,性能無法提升的情況下發熱還很大。倘若 CPU,GPU,T2 集成在一起使用最新工藝,既能移除沒必要的生產成本,還能大幅提高效能,一舉兩得。

於是乎蘋果提出了自己 ARM 版 Mac 新品的結構圖,也就是上圖。這次晶元換代,蘋果不僅處理掉了第三方的 CPU,且一併處理掉了第三方的 GPU。仔細觀察,你會發現這個片上系統除了 CPU 與 GPU 之外,還包含了許多其它的重要模塊。首先 T2 不需要在單獨放一顆晶元,將安全模塊整合進來即可。

接著將高性能的顯卡整合進來,高性能的統一訪問存儲整合進來,滿足未來需求的神經網路運算模塊整合進來。加密加速模塊,視頻獨立硬解模塊,內核保護模塊,能耗管理模塊,HDR 顯示支持模塊,視頻播放模塊全給它放進來。這樣的規劃是之前的因特爾架構下不可能做到的,即不方便加新的硬體,也不可能做硬體間整合。

那麼很多人好奇的為什麼 FCPX 可以在 A12Z 上跑三路 4K ProRes 視頻,正是因為這裡負責視頻解碼的不是 CPU,也不是 GPU,而是 A 系列晶元里獨立的視頻編碼硬體模塊。這個模塊和蘋果放在自己 Mac Pro 上的那個用於 ProRes RAW 加速的 Afterburner 卡設計思路類似。

說完了視頻解碼,你也許會問這個 A 系列晶元里的 CPU 和傳統的 x86 CPU 有什麼區別?在傳統的多核心處理器中,各個處理器的能力是非常接近的。比如英特爾的四核處理器,可以類比成四個能力相當的克隆人。

而在 ARM 晶元中,設計則有很大區別,ARM 架構中的 CPU 分為性能核心和低功耗核心。這裡注重能耗指的並不是為了省電而犧牲性能,而是指需要多少性能付出多少勞動,不要殺雞用牛刀(空費電)。

為了解決這個按勞分配的難題,蘋果採用的是 GCD 的 QOS 邏輯。你可以把 GCD 理解成一個包工頭,手下指揮著性能核心和低功耗核心,為其分派任務。QOS 則是開發者定義的性能指標,比如開發者說這個東西是用戶點擊正在操作的內容,需要儘快給出結果,便會將 QOS 設置為 UI 級。此時 GCD 分派任務時看到開發者要求的 QOS 是 UI 級,便會將任務分配到高性能核心上儘快完成。

反之若開發者不急著要,也可以把 QOS 設置為後台級。這時候 GCD 分工時就會看到開發者不急著要這裡面的結果,因此若需要省電時則這部分內容可以放在低功耗核心上運算。若有其它更緊要的任務則可以把低優先順序的任務先緩一緩,緊著最著急的來。

說完了 ARM 在 CPU 運算上的區別,我們來聊聊內容顯示。最近新聞中一個常見的誤解便是把 Rosetta 翻譯後的圖像效能也當作被折損的效能,其實不然。羅賽塔翻譯器本質上來說是個指令集翻譯器,在把 x86 指令集的內容翻譯到精簡指令集時確實有性能折損,但這個折損和圖形顯示沒有一點關係。

當計算機需要 GPU 來處理圖形運算時,我們需要用一種特殊的語言來和顯卡溝通,這個語言我們叫做圖形框架。大家所熟知的圖形框架可能有微軟的 DirectX,開源的 OpenGL 和蘋果自家的 Metal 框架都屬其中。

即便是被翻譯後的應用,也會直接調用 Metal 指令對顯卡做出訪問,因此沒有圖形性能折損。蘋果過去五年始終喊著讓開發者儘快使用跨平台 Metal 框架,除平台統一性考量外,便也在為這次轉型做準備。

處理器和顯卡大家比較熟悉,接下來我們來看看大家不那麼熟悉的機器學習與神經網路硬體模塊。機器學習的理論基礎是神經網路,科學界的大牛提出一系列神經網路模型,在大量數據(大數據)的基礎下進行訓練,得到的結果是一個可用的機器學習模型。

這個過程中有兩個點值得關注。第一個是神經網路訓練的效率,第二個是得到模型之後放進新數據進行預測的效率。訓練好的模型還可能根據用戶需求進行強化學習,因此保證機器學習能力的晶元就變的至關重要。

在過去,這些訓練大多是在處理器或顯卡上完成的。一心不易二用,這些硬體終究不是做這件事的最佳載體,因此便有了專用模塊。你也許會好奇,這些東西與我們有什麼關係呢?事實上,機器學習和神經網路可能是接下來幾年最重要的發展方向之一。

當我們的手錶在判斷我們是否進入夢鄉時,用的是機器學習運動感知訓練的結果;當我們在 iPad 上用鉛筆做出手寫識別時,我們用的是機器學習視覺訓練的結果;當我們做語音同聲翻譯時,我們用的是聲學辨識訓練的結果。如此種種,均需要片上系統上獨立晶元的支持。

上文中我們說完了 ARM 的晶元核心,接下來我們將目光放在軟體上。要了解其性能表現,我們需要對它們的運行方式做個區分。在 ARM 版的 Mac 上,軟體有如下運作方式:

所有蘋果自家應用,包括系統本身以 ARM 原生模式運行,無任何性能折損;所有 iOS 和 iPadOS 應用,以 ARM 原生模式運行,無任何性能折損;所有虛擬機應用,運行在 Big Sur 提供的虛擬機環境下;所有 Catalyst 應用,需重新編譯為 Universal 應用,無任何性能折損;

所有 32 位 x86 應用,已在三年前被蘋果淘汰,無法運行;所有 64 位 x86 應用,若以應用商店分發,則下載的便是已翻譯版本;所有 64 位 x86 應用,若在網路上下載安裝,則在安裝時翻譯;所有 64 位 x86 應用,若以拖拽形式安裝,則在首次運行時翻譯。

古墓麗影雖是翻譯應用,但它的性能主要由 GPU 體現。翻譯後遊戲的渲染仍使用 Metal 指令,因此性能本沒有折損,反饋到幀數上便是高幀數運行。剪輯 4K 用的是 A 系列晶元中的視頻硬解碼模塊,專長於處理 ProRes 視頻,所以可以同時編輯多路視頻。

可能你會覺得有點反常識,但這次 ARM 的切換與英特爾擠牙膏太久並無直接關聯。Mac 這次的晶元變革需要撐得起未來十年,其最優解便是將專精晶元以最優工藝的整合在 Soc 中。

而本文中的一切分析,帶來的表象便是:

ARM 版 Mac 的運行效率很高

--------教程

我正在製作一個系列教程「面向創作者的 iOS 獨立開發指南」。若你感興趣可以添加我的微信:caryota 並註明 iOS 教程。

--------更新

看到評論里有人說 CPU 和 GPU 必須分開放,放在一起了不可能散熱。其實這是不合理猜想,不是客觀事實。新 Xbox Series X 也用的 Soc 片上系統。8 核 CPU 和 12 TFLOPS GPU,一個風扇主動散熱。


推薦閱讀:
相关文章