高通最強晶片解讀,蘋果M晶片終於迎來了對手

2019 年,一家名為Nuvia 的新創公司走出了隱身模式。

Nuvia 之所以引人注目,是因為其領導層包括幾位著名的晶片架構師,其中一位曾為Apple 工作。 M1 等Apple 晶片因性能與AMD 和Intel 產品相同,同時提供更好的能源效率而受到認可。 Nuvia 有著類似的目標,旨在打造一個節能的內核,可以超越AMD、Apple、Arm 和Intel 的設計。

高通於2021 年收購了Nuvia,將員工納入高通內部CPU 工作。



Nuvia 員工的加入讓高通內部CPU 工作煥發了生機,最終促成了Snapdragon X Elite 中Oryon 核心的誕生。 Oryon 的推出距離Nuvia 的發布已過去了五年,距離高通上一次發布採用內部設計核心的智慧型手機SoC 也已經過了八年。對於關注Nuvia 發展的人來說,這是一個漫長的等待。



最近,我們擁有了一台配備高通驍龍X1E-80-100 CPU 的三星Galaxy Book4 Edge 16 吋筆記型電腦。

請注意,由於這台筆記型電腦沒有任何上游設備樹,我們無法在其上安裝Linux 桌面,所以我們的許多測試必須在Windows Subsystem for Linux (WSL) 上進行。


系統架構

Snapdragon X1E-80-10 在三個四核叢集中實現了12 個Oryon 內核,每個內核具有12 MB L2 快取。與Snapdragon 820 中的Kryo 一樣,高通沒有選擇混合內核組態。相反,Snapdragon X Elite 的Oryon CPU 叢集以不同的最大時脈頻率運行,從而提供良好的單執行緒和多執行緒效能組合。



Snapdragon X Elite 的叢集安排在核心到核心延遲測試中清晰可見,該測試在核心對之間反彈快取行並測量所需的時間。核心內的傳輸處理得相當快,但跨叢集傳輸會導致高延遲,尤其是對於具有消費級核心數量的單晶片而言。



與高通之前製造筆記型電腦晶片的嘗試相比,延遲不太一致。 8cx Gen 3 有四個Cortex X1 核心和四個Cortex A78 核心。它可能使用Arm 的DSU 互連,該互連還實現了共享的L3 快取。



Nuvia 的共同創辦人曾任職於Apple,因此M1 是值得注意的比較點。 Apple 也使用四核心叢集和共享L2。但是,M1 使用混合核心排列。叢集內的核心到核心延遲相似。跨叢集傳輸會產生高延遲,就像Snapdragon X Elite 一樣,不過絕對值要好一些。



Snapdragon X Elite 和M1 均具有系統級快取(SLC),可為晶片上的多個區塊提供服務,但效能低於專用於一個區塊的快取。



Snapdragon X Elite 的主要競爭對手將是AMD 的Phoenix 和英特爾的Meteor Lake。 AMD 的Phoenix SoC 有八個Zen 4 內核,L3 為16 MB。 Phoenix 的所有八個核心都位於同一個叢集中,因此核心到核心延遲測試看起來相當無聊。總體而言,延遲非常低。然而,值得注意的是,AMD 在16 核心桌面Zen 4 變體上的跨叢集延遲仍然優於Snapdragon X Elite 或M1,為80-90 奈秒。



英特爾的Meteor Lake 具有複雜的混合設置,包括六個Redwood Cove 性能核心、八個Crestmont 效率核心和兩個Crestmont 低功耗核心。 Redwood Cove 和常規Cresmont 核心共享24 MB L3,而低功耗Crestmont 叢集使用2 MB L2 作為其最後一級快取。



只要我們停留在Meteor Lake 的CPU 區塊內,核心到核心的延遲就很低,但跨越到低功耗E-Core 叢集需要更長的時間。



時鐘行為

CPU 透過在空閒時降低時脈來節省電量。從空閒狀態過渡到高效能狀態需要時間。在電池供電下,Snapdragon X Elite 在負載施加後超過110 毫秒才達到最大時脈速度。這幾乎肯定是三星故意為之,透過避免在短時間活動期間進入高功率狀態來延長電池壽命。英特爾的Meteor Lake 將這項策略發揮到了極致,在電池供電下不會達到最大加速時鐘。 AMD 的牆壁電源和電池電源的加速策略都非常快,在一毫秒或更短的時間內達到5 GHz。



在電源供應器方面,三星選擇不讓CPU 閒置。這樣可以提高響應速度,因為核心的起始頻率為3.4 GHz,可以在1.44 毫秒內達到4 GHz。然而,這會使筆記型電腦即使在閒置時也明顯發熱,而Meteor Lake 或Phoenix 則沒有這種特點。


核心概述

高通的Oryon 是8 核心處理器,具有極高的重新排序能力。 Oryon 秉持了其血統,繼承了蘋果Firestorm 和高通自己的老Kryo 的理念。但與Kryo 和M1 不同,Oryon 可以運行在4 GHz 甚至更高的頻率。頂級Snapdragon X Elite SKU 可以在兩個核心上達到4.3 GHz。我們在這裡測試的X1E-80-100 可以達到4 GHz。



Zen 4 仍然具有時脈速度優勢,但與行動裝置相比差距並不大。與Oryon 相比,Zen 4 的架構看起來很小。它只有6 寬,並且具有較小的無序緩衝區。但是,Zen 4 可以以更高的時脈速度運作。 Ryzen 7840HS 在HP ZBook Firefly 14 G10 A 中可以達到5.1 GHz。



高通表示,Oryon 的錯誤預測懲罰為13 個周期,與Zen 4 的常見情況相同。


分支預測器

分支預測器是提高每焦耳能耗性能的最佳方法之一。因此,現代CPU 在分支預測方面投入了大量資金。隨著核心寬度和重新排序能力的提高,準確的分支預測器變得更加重要,因為錯誤預測往往會導致更多的工作浪費。


1 方向預測

方向預測器的作用正如其名稱所示,它告訴分支預測器分支可能朝那個方向發展。 Oryon 似乎有一個單級方向預測器,與Golden Cove 非常相似。



Oryon 分支預測單元方向預測器在與Golden Cove 的對抗中表現良好,但在與Zen 4 的對抗中表現不佳。





2 分支目標緩存

分支預測器的工作可以簡化為告訴前端它接下來應該從那個位址取得。其中一部分涉及確定是否執行分支。如果是,預測器需要以最小的延遲告訴前端該分支的去向。分支目標緩衝區(BTB) 快取分支目標位址以加快流程。與任何快取一樣,不同的BTB 實作具有不同的效能特徵。現代CPU 通常也具有多級BTB,以在速度和處理大型分支佔用空間的能力之間取得平衡。

Oryon 似乎將其BTB 與指令快取綁定在一起,因為當測試循環溢出指令快取時,執行的分支會經歷更高的延遲。 8 KB 記憶體佔用內的分支可以在單周期延遲內處理,AMD 稱之為「零泡沫」分支。具有較大分支佔用空間的應用程式可以每三個周期執行一次分支,只要程式碼適合192 KB L1 指令快取即可。



高通可以在解碼管道的早期放置一個分支位址計算器。透過這種解釋,Oryon 將擁有一個具有單周期延遲的8 KB L0 指令快取。 192 KB L1i 將具有3 個周期延遲。 Oryon 的BTB 設定與Kryo 的相似,因為只要測試在8 KB 以內,兩個核心都可以快速分支。它也與M1 有共同的特徵,當測試超過某些程式碼佔用空間大小時,M1 也會看到分支延遲增加。然而,M1 僅在4 KB 以內獲得單周期分支。



AMD 的Zen 4 以及Arm Ltd 和英特爾核心都將分支目標快取與指令快取分開。一旦分支超過一定數量,Clam 的BTB 測試就會發現延遲更高,而分支間距的影響較小。



3 間接分支預測

間接分支可以轉到多個目標,這又增加了預測的難度。 Oryon 似乎有一個2048 條目間接分支預測器。



Oryon 的間接預測器不如Zen 4 的3072 入口間接分支預測器大,無法追蹤那麼多目標。但與Zen 4 不同的是,單一分支在32 個目標之後不會出現緩慢增加的懲罰。這可能意味著Oryon 沒有使用與Zen 4 類似的機制。現在將Oryon 與Golden Cove 進行比較,它們彼此非常相似,但Oryon 可以追蹤的目標比Golden Cove 多。

返回是間接分支的一個特例。 Oryon 有一個深度為48 的回傳堆疊。相比之下,Zen 4 有一個32 的返回堆疊。兩者都相當深,可能足以處理絕大多數程式碼。高通的策略與Apple M1 的Firestorm 架構相似,後者顯然有50 的回傳堆疊。



當超出返回堆疊容量時,Oryon 發現呼叫+返回時間急遽增加。 4-5 奈秒在3.7 GHz 下相當於15-18 個周期,足以成為分支預測錯誤。這與Dougall 在Apple 的M1 上發現的情況類似,表明核心在溢出時清除返回堆疊,而不是實施一種機制來更優雅地處理這種情況。


取得並解碼

接下來,前端必須從記憶體中獲取指令並將其解碼為微操作。 Oryon 和Apple 的Firestorm 核心使用非常相似的策略。兩者都有一個巨大的192 KB L1 指令緩存,為8 寬解碼器提供資料。 AMD 的Zen 4 享有高指令頻寬,指令佔用空間小,但持續頻寬受到Zen 4 下游6 寬重新命名階段的限制。與Oryon 和Firestorm 相比,Zen 4c 的小32 KB 指令快取是一個明顯的劣勢。



但是,AMD 為非常大的程式碼佔用空間保持了較高的前端頻寬,因為即使從L3 提取程式碼,它也可以維持每周期超過12 個字節。在L1i 未命中後,Oryon 和M1 的程式碼提取頻寬要低得多。


重新命名/分配

前端的微操作需要分配後端資源,以便在無序執行期間追蹤它們。該過程涉及暫存器重新命名,以打破錯誤的寫後寫依賴關係。重新命名器還可以透過創造性地分配後端資源來打破其他依賴關係。例如,可以透過讓其「結果」指向來源暫存器來消除在暫存器之間移動值的指令。已知將暫存器設為零的指令也可以進行類似最佳化。



Oryon 具有行動消除功能,但它不如Intel 或AMD 的鍊式依賴MOV 實作那麼強大。對於將暫存器與自身進行異或或將暫存器從自身減去,沒有歸零慣用語辨識。將立即值零移動到暫存器當然可以打破依賴關係。但是,吞吐量不超過6 IPC,這表明Oryon 仍然使用ALU 管道將零寫入暫存器。


無序執行

Oryon 具有龐大的無序執行引擎,可隱藏延遲並提取指令級並行性。其重排序緩衝區有助於按程序順序提交指令結果,具有680 個條目,非常龐大。整數和浮點暫存器檔案都有384 個條目可用於推測結果。再增加32 個條目用於已知良好的架構暫存器值,總共有416 個條目。



記憶體排序隊列的大小更為保守。載入佇列和儲存佇列分別有192 個和56 個條目。雖然載入佇列的容量與Redwood Cove 相當,並且大小合適,可以覆蓋重新排序緩衝區,但儲存佇列感覺有點小。



Oryon 真正擅長的是調度能力。調度器是一種昂貴的結構,因為每個周期,它們都必須檢查所有條目,以尋找準備好執行的微操作。而且,它們必須查看剛完成的微操作的結果是否使任何待處理的微操作準備就緒。進行所有這些檢查和比較可能會佔用大量空間和功耗。高通可能透過將每個調度佇列與一個執行連接埠關聯來降低成本,確保每個調度器每個周期只需選擇一個微操作。



Oryon 僅針對基本整數運算就能帶來令人難以置信的120 個調度器條目。它略低於Firestorm 的134 個條目,但遠高於Zen 4 的96 個條目。 Oryon 和Zen 4 之間的差距更大,因為Zen 4 的ALU 調度條目與記憶體存取操作共享。英特爾的Redwood Cove 有97 個調度條目,由整數和FP/向量運算共享。

在FP/向量方面,Oryon 同樣具有強大的調度能力。 Arm CPU 傳統上具有較弱的向量執行能力,因為在智慧型手機或平板電腦的功率預算中,處理吞吐量受限的工作負載會很困難。然而,x86 應用程式有不同的期望,使用者希望在本地執行密集型任務,而不是將它們發送到遠端伺服器進行處理。 Oryon 透過為四個128 位元執行連接埠提供總共192 個調度程序條目來解決這個問題。所有四個管道都可以處理基本的浮點和向量整數運算。



在這方面,Oryon 與Firestorm 非常相似,儘管這兩個核心在處理不太常見的操作方面有所不同。 Firestorm 還與眾不同,它使用較小的(儘管在絕對意義上仍然很大)調度程序,並使用可以延遲重新命名階段停頓的非調度隊列來彌補這一點。

AMD 再次擁有最低的調度能力,而是使用一個巨大的非調度隊列來防止滿載的調度程序導致管線進一步停滯。儘管如此,Zen 4 對不完整FP/向量運算的緩衝能力仍遠不及Oryon。但是,AVX(2) 和AVX-512 仍然可以為Zen 4 帶來優勢,因為寬向量運算使用單一微操作可以完成更多工作。英特爾的Redwood Cove 同樣可以從更寬的向量中受益,儘管Meteor Lake 的混合核心設定使其無法支援AVX-512。

Oryon 的FP/向量方面感覺與任何NEON/ASIMD 設定一樣強大。如果沒有SVE 支援,Oryon 就無法使用寬度超過128 位元的向量。在所有四個管道上支援FMA 操作使其具有與Zen 4 類似的浮點吞吐量,但可能使Oryon 在不使用寬度超過128 位元的向量的程式碼方面具有優勢。但是為該設定提供資料需要12 個FP 暫存器檔案連接埠,因為每個FMA 都需要三個輸入。使用416 個條目的暫存器檔案來實現這一點聽起來很昂貴。



Oryon 的位址產生操作調度能力比數學操作弱,但4 個16 條目調度器也算不上什麼。這些調度器加起來可以容納的微操作比Firestorm 的AGU 調度和非調度隊列加起來還要多。理論上,Zen 4 可以同時執行72 個不完整的位址產生操作,但這些條目與整數數學操作共用。


地址轉換

在任何現代CPU 上,程式都會對虛擬位址進行操作,這些虛擬位址會即時轉換為實體位址。位址轉換快取(稱為轉換後備緩衝區(TLB))透過快取常用的轉換來幫助加速這個過程。 Oryon 具有非常大的TLB,有助於減少位址轉換延遲。



Oryon 的第一級資料TLB 有224 個條目,是7 路組相聯的,提供896 KB 的覆蓋範圍和4K 頁。與AMD 和Intel CPU 上的第一級TLB 相比,這是一個很大的容量。它讓人想起Kryo 的192 個條目L1 DTLB,它同樣在相對較大的位址空間上提供快速位址轉換覆蓋。而且,與AMD、Intel 和Arm 的小型L1 DTLB 相比,它令人耳目一新。



但與Kryo 不同,Oryon 擁有一個大型二級TLB,可容納超過8K 個條目,而Kryo 會直接丟棄L1 TLB 未命中。從L2 TLB 轉換似乎需要額外的7 個周期,考慮到Oryon 的4 GHz 以上時脈頻率和L2 TLB 的大小,這還是不錯的。



不過,測量結果令人困惑,顯示地址轉換懲罰在超過6 MB 後有所增加。這相當於1536 個L2 TLB 條目,遠低於Zen 4 的L2 TLB 可覆蓋的12 MB。超過128 MB 的測試大小顯示出另一個增加,但這並不對應於8K 條目* 4K 頁面= 32 MB。


快取和記憶體訪問

Oryon 採用類似Apple 的快取策略。大型96 KB L1 和相對較快的L2(延遲時間為20 個周期)意味著Oryon 不需要中階快取。 Firestorm 擁有更大的128 KB L1,但Oryon 的L1 仍然比Zen 4 或Redwood Cove 中的32 或48 KB L1 快取大得多。



AMD 為每個核心配備了1 MB 的L2 中階緩存,然後是16 MB 的L3。這種設定使增加快取容量變得更加容易,因為L2 快取可以將核心與L3 延遲隔離。但是,對於行動版Zen 4 元件來說,這種優勢微乎其微,因為其L3 快取最大為16 MB。因此,Oryon 提供了具有競爭力的延遲,尤其是當訪問超出Zen 4 的L2 時。 Meteor Lake 遵循與Zen 4 類似的快取策略,但具有更大的快取容量,但代價是更高的延遲。



在L2 之後,Oryon 擁有6 MB 系統級快取(SLC),聲稱延遲為26-29 奈秒。 12 到18 MB 之間的測試大小通常與此一致。例如,使用2 MB 頁面時,14 MB 的延遲約為25 奈秒。準確評估SLC 延遲很困難,因為即使是18 MB 陣列中的許多訪問也會導致L2 命中。與L2 快取相比,SLC 的容量較低,這可能會限制其與CPU 端程式碼的相關性。

1 GB 陣列的DRAM 延遲為110.9 奈秒,與高通聲稱的102-104 奈秒相差不遠。 Ryzen 7840HS 的延遲稍低,為103.3 奈秒,可能是因為它使用的是DDR5 記憶體而不是LPDDR5X。 Meteor Lake 的記憶體延遲更差,超過140 奈秒。


頻寬

x86 CPU 傳統上非常注重向量執行,並且擁有足夠的快取頻寬來支援其向量單元。 Oryon 在這一領域的競爭力出乎意料地強。雖然沒有SVE 支援,但Oryon 可以合理地使用128 位元向量寬度,支援每周期4 次128 位元載入。這與Zen 4 的2×256 位元負載頻寬相當,但略遜於Redwood Cove 的3×256 位元載入能力。

Oryon 的大型L1 快取容量應該能夠很好地處理較小的資料佔用空間,但如果資料超出L1,AMD 和英特爾的中階快取可提供頻寬優勢。 AMD 的L3 也表現出色,為單一核心提供的頻寬比高通的L2 要多。 Apple 的Firestorm 並不強調向量工作負載,在這次比較中落後於其他核心。



從DRAM 讀取時,單一Oryon 核心可以實現驚人的80 GB/s 頻寬。高通表示,每個核心可以向系統發出超過50 個正在運行的請求,而L2 實例可以追蹤超過220 個記憶體事務。這些大型隊列可能是單一Oryon 核心可以從DRAM 中獲得如此多頻寬的原因。



在多執行緒負載下,共享快取承受的壓力更大,因為更多核心需要頻寬。 Oryon 處理得當,L2 為四個核心提供近330 GB/s 的頻寬。這相當於每個核心約82 GB/s,略低於Oryon 核心在沒有爭用的情況下可以獲得的100 GB/s。



同樣,AMD 和英特爾從其核心專用的L2 快取中獲得了大量的頻寬,而AMD 的L3 繼續在更大的資料佔用空間方面大放異彩。英特爾的Redwood Cove P-Core 具有非常高的快取頻寬,但一旦資料溢出到L3,這種優勢就會消失。

對於全核心工作負載,Oryon 與Phoenix 的較量取決於我們擊中了那個層級的記憶體層級。 L1 快取頻寬相當,AMD 的八個Zen 4 核心時脈頻率更高,略微領先。 AMD 在所有核心中享有約25% 的L2 頻寬。英特爾的Meteor Lake 通常具有頻寬領先優勢,這要歸功於核心數量多以及Redwood Cove 的3×256 位元/周期負載能力。然而,當所有線程都加載時,由於時脈速度下降和較低頻寬的E-Core 發揮作用,領先優勢就不那麼明顯了。



由於測試規模超出了AMD 的L2 容量,高通的三個L2 實例可以提供比AMD 的L3 多16% 的頻寬。 Snapdragon X Elite 擁有三個12 MB 的L2 實例,總容量為36 MB。使用三個L3 實例也更容易提供高頻寬。

最後,由於快速的LPDDR5X,高通擁有更高的DRAM 頻寬。憑藉超過110 GB/s 的測量讀取頻寬,Snapdragon X Elite 遠遠領先Phoenix 和Meteor Lake。


Cinebench 2024

多年來,Maxon 的Cinebench 一直是基準測試的主流,因為它能夠隨著核心數量而擴展。現代CPU 擁有大量核心,但在有限的功率預算內提供高多執行緒效能非常困難。 Cinebench 2024 採用原生ARM64 構建,因此Snapdragon X Elite 將不受二進位翻譯懲罰的影響。



高通表現非常出色。 SMT 透過為每個Zen 4 核心提供明確並行性來幫助AMD。然而,這不足以抵消驍龍X Elite 更高的核心數量。驍龍X Elite 擁有12 個核心,而AMD 只有8 個,性能領先8.4%,而功耗僅高出2%。但從另一個角度來看,每個Zen 4 核心都發揮了超乎尋常的作用。高通的核心數量增加了50%,而且核心更大。驍龍X Elite 在紙面上應該會壓倒競爭對手,但熱量和功耗限制阻礙了它脫穎而出。



高通的幻燈片顯示,更高功率的參考設備確實可以實現這樣的結果。更高的核心數需要更多的功率和更好的冷卻才能發揮最佳性能。我們不知道高通更高功率的參考設備能夠維持什麼樣的時脈速度。在三星Book Edge4 中,驍龍X Elite 平均為2.71 GHz。在惠普ZBook Firefly G10 A 中,Ryzen 7840HS 平均為3.75 GHz,這解釋了AMD 為何能夠以更少的核心如此接近目標。

英特爾的Meteor Lake 擁有更高的核心數量,但在類似的平台功率下卻表現不佳。它只比蘋果的M2 快一點。在華碩Zenbook 14 OLED 中,Core Ultra 7 155H 的Redwood Cove P 核心平均頻率為2.75 GHz。 Crestmont E 核心平均頻率為2.33 GHz。在Cinebench 2024 運作期間,六個P 核心中的一個和兩個LPE 核心沒有看到顯著的負載。


最後的話

Oryon 結合了Firestorm 和該公司更老的Kryo 的設計理念。結果是一個非常堅固的架構,因為高通小心翼翼地將這兩個領域中最好的部分都發揮出來了。高通一直想超越智慧型手機,佔領筆記型電腦市場,而驍龍X Elite 是該公司迄今為止最強大的產品。從理論上講,12 個Oryon 大核心應該是AMD 的8 個Zen 4 核心和Meteor Lake 的16 個各種類型核心的強大對手。

我們將把詳細的基準測試留給主流技術網站,因為他們可以在更受控制的環境中進行測試,並且有預算提供更多比較點。但乍一看,Snapdragon X Elite 在運行本機應用程式時提供了具有競爭力的效能。即使使用二進位翻譯,Oryon 的速度也足夠快,可以提供可用的效能。考慮到這一點,Oryon 已經滿足了推動Apple Firestorm 在2020 年取得成功的兩個條件。



但與蘋果的M1 相比,驍龍X Elite 的挑戰更大。 Apple Silicon 是蘋果生態系統中唯一的升級選項,而PC 客戶可以選擇最新的AMD 和Intel 選項。 PC 生態系統的受歡迎程度和持久力歸功於其出色的軟體相容性傳統。 Oryon 依靠二進位翻譯來執行x86 程式碼,這會帶來效能損失。相容性期望也延伸到了作業系統。 PC 使用者希望能夠(重新)安裝自己選擇的作業系統。通常,無論裝置或主機板製造商是誰,原廠Linux 或Windows 映像都可以在幾代之前的x86 CPU 上啟動。 Arm 裝置遭受嚴重的平台碎片化困擾,驍龍X Elite 也不例外。必須為每台筆記型電腦定製作業系統映像,即使是使用相同Oryon 核心的筆記型電腦也是如此。



最後,驍龍X Elite 設備太貴了。 Phoenix 和Meteor Lake 筆記型電腦通常價格較低,即使配備了更多RAM 和更大的SSD。要說服消費者為較低規格支付更多費用已經很難了。相容性問題讓事情變得更加困難。高通需要與OEM 合作,提供具有競爭力的價格。較低的價格將鼓勵懷疑的消費者嘗試驍龍X Elite,讓更多設備投入流通。這反過來又會帶來更多使用ARM64 Windows 裝置的開發人員和更多ARM64 原生應用程式。

高通的任務已經很艱鉅了。我們期待他們的下一代CPU 核心,希望它足夠強大,能夠與AMD 和英特爾的下一代產品保持同步。 ( 半導體產業觀察)