
文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片

文章圖片
【高通的Centriq 2400和Falkor架構】
文章圖片

文章圖片

文章圖片

探秘高通Falkor云處理器 。
云計算在 2010 年左右迅速崛起 , 這得益于 AMD 的皓龍(Opteron)和英特爾的至強(Xeon)處理器 。 龐大的云市場激發了包括高通在內的其他 CPU 制造商的興趣 。 到 2010 年代中期 , 高通已在移動 SoC 市場成長為一支強大的力量 , 并擁有多個內部 CPU 設計 。 他們有充分的理由對其云服務器前景充滿信心 。 服務器芯片的高核心數意味著低單核功耗 , 這削弱了AMD 和英特爾在高單線程性能方面的最大優勢 。
與此同時 , 高通的移動背景使其在低功耗 CPU 設計方面積累了豐富經驗 。 其龐大的移動產品銷量使其能夠采用三星的 10nm FinFET 工藝 。 這至少可以讓高通在功耗和密度方面與英特爾的 14nm 工藝競爭 , 甚至可能帶來直接優勢 。 高通希望利用這些因素在云計算領域推出更便宜、功耗更低的競爭對手 。
為了進入云計算領域 , 高通需要一種具有足夠性能的 CPU 架構 , 以滿足尾端延遲等關鍵指標 。 在 Hot Chips 演講中 , 高通指出 , 僅僅在芯片上堆砌弱核心并不能解決問題 。 ARM 架構的云 CPU 可能不必在核心性能上與英特爾和 AMD 一一對應 , 但它們確實需要達到基線性能水平 。 高通希望在保持其傳統功耗和密度優勢的同時做到這一點 。
核心概述Falkor CPU 架構旨在以低功耗和小芯片面積滿足性能閾值 。 Falkor 是一款四發射 aarch64 核心 , 繼承了高通此前移動核心的特性 。 它運行 64 位 ARM 指令集(aarch64 , armv8) , 并從 armv8.1 引入了一些功能 。 由于現有的 ARM 服務器應用程序基礎不大 , 因此不支持 32 位 ARM 。 Falkor 是高通的第五個內部核心設計 , 也是該公司首個專門為云計算設計的核心 。
Centriq 2400 系列芯片在 398mm2 的芯片上集成了多達 48 個 Falkor 核心 , 熱設計功耗(TDP)為 120W 。 這意味著每個核心的功耗不到 2.5W 。 高通指出 , 在典型的全核心負載下 , 功耗通常遠低于 120W 。
高通展示Centriq服務器SKU的幻燈片
前端Falkor 和高通之前的 Krait 架構一樣 , 同時擁有 L0 和 L1 指令緩存 。 24KB、3 路組相聯的 L0 緩存以更低的功耗和更低的延遲提供指令 。 L0 的大小足以容納大多數指令提取 , 而 64KB、8 路的 L1 指令緩存則處理更大的代碼占用空間 。 盡管 L0 的作用類似于其他 CPU 中的微操作緩存和循環緩沖區 , 但它像傳統指令緩存一樣存儲 ISA 指令字節 。
兩個指令緩存層級都有足夠的帶寬為 Falkor 的四發射解碼器提供指令 。 這兩個指令緩存層級是互斥的 , 因此核心實際上擁有 88KB 的指令緩存容量 。 高通可能使用了 victim 緩存設置來維持這種互斥關系 。 如果是這樣 , 傳入的探測請求必須同時檢查 L0 和 L1 , 并且 L1 訪問除了填充 L0 之外 , 還需要從 L0 回寫的額外開銷 。 包含性設置會讓 L1 充當 L0 的窺探過濾器 , 并減少 L1 訪問的開銷 , 但總緩存容量較少 。
與同時代的核心相比 , 互斥的 L0/L1 設置為 Falkor 提供了高指令緩存容量 。 直到幾年后蘋果的 M1 推出 , Falkor 在這方面才被超越 。 高指令緩存容量使得 L2 代碼提取帶寬變得不那么重要 。 與當時許多 64 位 ARM 核心(甚至 AMD 的 Zen 之前核心)一樣 , 一旦代碼溢出到 L2 , Falkor 的指令吞吐量會急劇下降 。 不過 , Falkor 在這方面的表現比 A72 更好 。
Falkor 的指令緩存和許多 CPU 一樣采用奇偶校驗保護 。 硬件通過使損壞的緩存行失效并從 L2 重新加載來解決奇偶校驗錯誤 。 指令緩存還將分支目標與指令字節一起存儲 , 因此充當分支目標緩沖區(BTB) 。 一次緩存訪問即可提供指令和分支目標 , 因此 Falkor 不必像具有獨立 BTB 的核心那樣進行單獨的 BTB 訪問 。 然而 , 這使得分支預測器在 L1i 未命中時無法跟蹤指令流 。
在 L0 中 , 已執行的分支會產生一個流水線氣泡(2 周期延遲) , 而從 L1 獲取則最多需要 6 周期延遲 。 對于較小的分支占用空間 , Falkor 使用 16 條目分支目標指令緩存(BTIC)實現零氣泡已執行分支 。 與 BTB 不同 , BTIC 緩存的是分支目標處的指令 , 而不是目標地址 。 因此 , 它繞過了緩存延遲 , 允許零氣泡已執行分支 , 而無需使 L0 實現單周期延遲 。
方向預測使用多個歷史表 , 每個歷史表使用不同的歷史長度 。 分支預測器跟蹤給定分支最適合的歷史長度和相應的表 。 高通描述的方案在概念上類似于 TAGE 預測器 , 后者也使用多個歷史表和標簽表來指示它們對給定分支是否有用 。 Falkor 不一定使用經典的 TAGE 預測器 。 例如 , 歷史長度可能不是幾何級數 。 但為每個分支使用最合適的歷史長度來節省歷史存儲的想法仍然存在 。 ARM 的 Cortex A72 使用兩級預測器 , 可能帶有單個表和固定歷史長度 。
在一個具有不同數量分支的抽象測試中 , 每個分支以長度遞增的隨機模式被執行或不執行 , Falkor 的表現略好于 Kryo 。 Falkor 在處理大量分支時表現更好 , 盡管對于少量分支 , 兩個核心能夠處理的最長重復模式相似 。
Falkor 為間接分支提供了兩級間接目標數組 , 間接分支從寄存器讀取目標 , 而不是指定跳轉距離 。 間接分支可能指向不同的目標 , 這給分支預測增加了另一個難度維度 。 Falkor 的第一級間接目標數組有 16 個條目 , 第二級有 512 個條目 。
只要間接分支的目標總數不超過 16 個 , 就幾乎沒有懲罰 。 這可以是一個在 16 個目標之間切換的分支 , 或者是八個在兩個目標之間交替的分支 。
返回是間接分支的一種特殊情況 , 因為它們通常返回到調用站點 。 Falkor 和 Kryo 一樣有一個 16 條目返回棧 。 Cortex A72 有一個更大的 31 條目返回棧 。 在 Falkor、Kryo 和 A72 上 , 函數調用和返回大約需要四個周期 , 平均每個帶鏈接的分支指令需要 2 個周期 。
Falkor 的解碼器每個周期最多將四條指令轉換為微操作 。 與大多數其他 CPU 一樣 , 高通旨在將大多數常見指令解碼為單個微操作 。 值得注意的是 , 128 位向量數學指令是個例外 。
重命名 / 分配來自解碼器的微操作需要在后端分配資源 , 以便在亂序執行期間進行記錄 。 Falkor 的重命名器每個周期最多可以處理四個微操作的寄存器重命名和資源分配 。 然而 , 第四個槽位只能處理直接分支和少數特殊情況 , 如 NOP 或已識別的寄存器清零情況 。 包含 ALU 操作的條件分支(如 cbz/cbnz)不能進入第四個槽位 。
高通 Hot Chips 演講的幻燈片
除了通過將立即值零移動到寄存器中來對寄存器清零的特殊處理外 , 本文沒有看到其他常見的優化 。 沒有 MOV 消除 , 重命名器也無法識別將寄存器與自身異或或相減會得到零 。
亂序執行
Falkor 沒有經典的重排序緩沖區(ROB) , 而是使用一系列結構共同實現亂序執行 , 同時確保程序結果與順序執行一致 。 Falkor 有一個 256 條目的重命名 / 完成緩沖區 。 高通進一步表示 , Falkor 可以有 128 條未提交指令在執行中 , 加上另外 70 多條未提交指令 , 總共有 190 條在執行中的指令 。 核心每個周期可以退出 4 條指令 。
從微基準測試的角度來看 , Falkor 的行為類似于 ARM 的 Cortex A73 。 它可以在長延遲加載后釋放寄存器和加載 / 存儲隊列條目等資源 , 即使超過 256 條指令 , 亂序執行能力也沒有明顯限制 。 未解決的分支同樣會阻塞亂序資源釋放 , 此時可以測量 Falkor 的重排序窗口 。 此時 , 本文可能正在測量高通所認為的未提交指令 。
從未提交指令的角度來看 , Kryo 和 Falkor 的重排序能力相似 。 但除此之外 , 高通已經重新平衡了執行引擎 , 以支持非向量代碼的一致性能 。 Falkor 的寄存器文件條目比 Kryo 多一些 , 更關鍵的是 , 內存排序隊列要大得多 。
Falkor 的整數執行流水線專門用于處理不同類別的操作 。 三個流水線有整數 ALU , 第四個流水線專用于直接分支 。 間接分支使用其中一個 ALU 端口 。 另一個 ALU 端口有一個整數乘法器 , 可以在 5 周期延遲內每個周期完成一次 64 位乘法 。 每個 ALU 流水線有一個中等大小的調度器 , 約有 11 個條目 。
Falkor 有兩個基本對稱的 FP / 向量流水線 , 每個流水線也有一個 11 條目調度器 。 兩個流水線都可以處理基本操作 , 如 FP 加法、乘法和融合乘加 。 向量整數加法和乘法也可以在兩個流水線上執行 。 更專業的操作(如 AES 加速指令)僅由一個流水線支持 。
FP 和向量執行延遲與 Kryo 相似 , 標量 FP 操作的吞吐量也是如此 。 Falkor 的兩個 FP / 向量流水線每個周期的吞吐量均為 64 位 。 128 位數學指令被分解為兩個微操作 , 因為它們在調度器、寄存器文件和完成緩沖區中占據兩個條目 。 這兩個因素都會影響向量化代碼的潛在收益 。
內存訪問Falkor 的加載 / 存儲子系統設計為每個周期處理一次加載和一次存儲 。 內存流水線從一對地址生成單元(AGU)開始 , 一個用于加載 , 一個用于存儲 。 兩個 AGU 都由一個約 13 條目的統一調度器提供數據 。 對于 L1D 命中 , 加載到使用的延遲為 3 個周期 , 加載 AGU 可以處理索引尋址而沒有懲罰 。
來自加載 AGU 的虛擬地址(VA)用于訪問 32KB、8 路的 L1 數據緩存 , 該緩存每個周期可以提供 16 字節 。 通過測試 , Falkor 每個周期可以處理一次 128 位加載或存儲 , 或者在同一個周期處理一次 64 位加載和一次 64 位存儲 。 混合 128 位加載和存儲不會使吞吐量超過每個周期 128 位 。
緩存中的每個位置都有一個虛擬標簽和一個物理標簽與之關聯…… 如果不必在緩存之前進行 TLB 查找 , 就可以更快地獲取數據 , 并且可以以更好的延遲返回數據 。
—— 高通 Hot Chips 29 演講
L1D 同時具有虛擬標簽和物理標簽 , 這使得 Falkor 無需等待地址轉換即可從 L1D 檢索數據 。 傳統的 VIPT(虛擬索引 , 物理標簽)緩存可以使用虛擬地址選擇一組緩存行 , 但需要物理地址(PA)在檢查標簽是否命中之前可用 。 高通表示 , 某些加載可以完全跳過地址轉換 , 因此加載根本不需要檢查物理標簽 。 這是一個非常有趣的設置 , 令人好奇它會如何處理多個 VA 別名指向同一個 PA 的情況 。
…… 這是一種構建在 L1 數據緩存旁邊的新穎結構 , 幾乎像一個回寫緩存 。 它結合了存儲緩沖區、加載填充緩沖區和來自 L2 的窺探過濾器緩沖區 , 因此這種位于旁邊的結構為我們提供了回寫緩存的所有性能優勢和功耗節省 , 而無需 L1 數據緩存真正成為回寫緩存 。
—— 高通 Hot Chips 29 演講
Falkor 的存儲流水線根本不檢查標簽 。 核心有一個直寫式 L1D , 并使用一個未命名的結構來提供回寫式 L1D 的功耗和性能優勢 。 從功能上講 , 它聽起來類似于 Bulldozer 的寫合并緩存(WCC) , 因此在高通沒有提供更好名稱的情況下 , 本文將其稱為 WCC 。 對同一緩存行的多次寫入在 WCC 中合并 , 減少了 L2 訪問 。
Falkor 上的存儲操作訪問 L1D 物理標簽以確保一致性 , 并且在到達 WCC 后進行訪問 。 因此 , 存儲合并機制也有助于減少物理標簽檢查 , 節省功耗 。
高通有理由說他們可以提供回寫緩存的性能 。 Falkor 核心每個周期不能寫入超過 16B , 而 L2 的帶寬似乎比這高得多 。 查看 WCC 的一種方法是每個 128B 緩存行進行一次存儲 , 這表明它是一個每個核心 3KB 的結構 , 并且可以每 2-3 個周期將一個 128B 緩存行回寫到 L2 。 但實際上軟件不應該遇到這種情況 。
其他使用直寫式 L1D 的架構(尤其是英特爾的奔騰 4 和 AMD 的 Bulldozer)在存儲轉發性能方面表現不佳 。 Falkor 在這方面表現不好 , 但也不是很差 。 在依賴的存儲操作中 32 位對齊的加載可以在 8 周期延遲內獲取數據(因此存儲可能需要 4 個周期 , 加載需要 4 個周期) 。 較慢的情況(包括部分重疊)僅需多一個周期即可處理 。 本文懷疑大多數核心通過等待存儲提交 , 然后讓加載從緩存中讀取數據來處理部分重疊 。 高通可能為 Falkor 提供了更高級的轉發機制 , 以避免從 WCC 讀取的懲罰 。
使用直寫式 L1D 使高通能夠對 L1D 進行奇偶校驗保護 , 而無需 ECC 。 與指令緩存一樣 , 硬件通過從較低級別的緩存(受 ECC 保護)重新加載緩存行來解決奇偶校驗錯誤 。
地址轉換與移動核心不同 , 服務器核心可能會在虛擬機中運行的工作負載遇到大的數據占用空間 。 虛擬化會顯著增加地址轉換開銷 , 因為程序可見的 VA 會被轉換為 VM 可見的 PA , 而 PA 又會通過虛擬機監控器頁表轉換為主機 PA 。 TLB 未命中可能需要遍歷兩組分頁結構 , 使一次內存訪問在底層變為十幾次訪問 。
Kryo 似乎有一個單級 192 條目 TLB , 顯然不適合這種服務器需求 。 Falkor 放棄了這種 “全有或全無” 的方法 , 轉而采用更傳統的兩級 TLB 設置 。 64 條目 L1 DTLB 由 512 條目 L2 TLB 支持 。 從 L2 TLB 獲取轉換僅增加兩個周期的延遲 , 使其相當快 。 L1 DTLB 和 L2 TLB 都存儲 “最終” 轉換 , 將程序的虛擬地址一直映射到主機上的物理地址 。
Falkor 還有一個 64 條目 “非最終” TLB , 用于緩存指向最后一級分頁結構的指針 , 并可以跳過大部分頁遍歷 。 另一個 64 條目 “階段 2” TLB 緩存從 VM PA 到主機 PA 的轉換 。
系統架構服務器芯片必須支持高核心數和高 IO 帶寬 , 這是服務器和移動 SoC 之間的另一個顯著區別 。 高通在稱為雙工(duplexes)的雙核集群中實現 Falkor 核心 , 并將其用作 Centriq 服務器 SoC 的基本構建塊 。 Kryo 也使用帶有共享 L2 的雙核集群 , 因此這個概念對高通來說并不完全陌生 。
Falkor 的 L2 是 512KB、8 路組相聯的 , 包含 L1 內容 。 它既是 L1 和片上網絡之間的中級緩存 , 也是 L2 緩存的窺探過濾器 。 L2 受 ECC 保護 , 因為它可以包含尚未回寫到其他地方的修改數據 。
高通表示 L2 延遲為 15 個周期 , 盡管指針追逐模式顯示延遲為 16-17 個周期 。 無論如何 , 這比 Kryo 超過 20 個周期的 L2 延遲有所改善 。 Kryo 和 ARM 的 Cortex A72 將 L2 用作最后一級緩存 , 這使它們面臨艱巨的任務:既要保持足夠低的延遲以處理 L1 未命中時的良好性能 , 又要有足夠的容量使核心免受 DRAM 延遲的影響 。 A72 使用 4MB L2 緩存 , 延遲 21 個周期 , 而 Kryo 在延遲高和 L2 容量低兩方面都表現不佳 。
多個交錯(即存儲體)有助于增加 L2 帶寬 。 高通沒有指定交錯數量 , 但表示每個交錯每個周期可以提供 32 字節 。 L2 似乎能夠每個周期處理 128B 回寫 , 因此它可能至少有四個交錯 。 一個復合體中的兩個 Falkor 核心一起僅具有 32B / 周期的加載 / 存儲帶寬 , 因此 L2 有足夠的帶寬為兩個核心提供數據 。 相比之下 , Kryo 和 A72 上的 L2 緩存帶寬明顯低于其 L1 緩存 。
Falkor 雙工使用高通系統總線(QSB)協議與系統接口 。 QSB 是一種專有協議 , 其功能與 ARM 使用的 ACE 協議相同 。 它也可以與英特爾的 IDI 或 AMD 的 Infinity Fabric 協議相比較 。 雙工的系統總線接口每個 128B 交錯每個方向每個周期提供 32 字節的帶寬 。
片上網絡高通使用雙向分段環形總線連接核心、L3 緩存和 IO 控制器 。 數據傳輸使用兩組雙向環 , 流量在兩個雙向環之間以 128B 緩存行粒度交錯 。 總體而言 , Centriq 有四個環 , 覆蓋順時針和逆時針方向的偶數和奇數交錯 。 高通的幻燈片顯示每個環可以移動 32B / 周期 , 因此環形總線實際上每個方向有 64B / 周期的帶寬 。
通過簡單的帶寬測試 , 雙核集群可以訪問接近 64GB/s 的 L3 帶寬 , 這使高通比 Cortex A72 具有顯著的緩存帶寬優勢 。 來自雙核 Falkor 復合體的 L3 帶寬類似于 Core i5-6600K 上的 Skylake 核心 。
環形總線客戶端包括多達 24 個雙核集群、12 個 L3 緩存切片、六個 DDR4 控制器通道、六個處理 32 條 Gen 3 通道的 PCIe 控制器 , 以及各種低速 IO 控制器 。
L3 緩存Centriq 的 L3 緩存切片容量為 5MB , 采用 20 路組相聯設計 , 12 個切片使芯片的 L3 總容量達到 60MB 。 46 核的 Centriq 2452 啟用了 57.5MB 的 L3 緩存 。 緩存路(ways)可預留用于在不同應用和請求類型間分配 L3 容量 , 這有助于確保服務質量 。
與許多其他多核心共享大型 L3 的設計類似 , 地址通過哈希分布到各個 L3 切片以實現帶寬擴展 。 不同于英特爾和 AMD 的設計 , Centriq 的 L3 切片數量與核心數量不匹配 。 然而 , 每個 Centriq L3 切片有兩個環形總線端口 , 因此 L3 和 Falkor 雙核集群向片上網絡提供的總帶寬相同 。
L3 延遲較高 , 超過 40 納秒(即超過 100 個周期) 。 對于擁有 512KB L2 緩存的核心來說 , 這一延遲較為明顯 。 帶寬可擴展至 500GB/s 以上 , 除了帶寬密集型的向量工作負載外 , 這一性能基本足夠 。 鑒于 Falkor 本身并不適合向量工作負載 , Centriq 的 L3 帶寬顯得綽綽有余 。 在中等帶寬負載下 , 延遲增加至約 50 納秒;接近 L3 帶寬極限時 , 延遲可達 70-80 納秒 。 當所有雙核集群同時加載數據時 , 競爭會使延遲略超過 90 納秒 。
Centriq 的 L3 還充當芯片級的一致性點 。 L3 不包含上層緩存(L1/L2)的內容 , 而是通過維護 L2 窺探過濾器來確保一致性 。 這一點與 AMD Zen 或英特爾 Skylake 服務器的 L3 機制類似 。 每個 L3 切片最多可跟蹤 32 個未完成的窺探請求 。 同一雙核集群內核心之間的緩存一致性操作無需通過環形總線傳輸 。
核心間延遲測試顯示 , 雙核集群內的核心對延遲較低 , 但絕對延遲仍然較高 。 測試還表明 , 高通在 Centriq 2452 上通過關閉一對雙核集群中的一個核心 , 禁用了兩個物理核心 。 這種做法可略微提升性能 , 因為兩個核心無需共享 L2 容量和系統總線接口 。
Centriq 通過六個通道支持高達 768GB 的 DDR4 內存 。 內存控制器支持最高 2666 MT/s 的速度 , 理論帶寬為 128GB/s 。 內存延遲約為 121.4 納秒 , 在高帶寬負載下延遲控制較差 。 當帶寬使用超過 100GB/s 時 , 延遲可能超過 500 納秒 。 相比之下 , 英特爾在帶寬利用率超過 90% 時仍能將延遲控制在 200 納秒以下 。 盡管如此 , 從絕對值來看 , Centriq 的帶寬依然充足 。 與同期的 Arm 服務器競品(如亞馬遜的 Graviton 1)相比 , Centriq 具有巨大的帶寬優勢 。 此外 , 大容量 L3 緩存相比 Graviton 1 可減少對 DRAM 帶寬的需求 。
與英特爾和 AMD 的服務器處理器不同 , Centriq 不支持多插槽配置 , 這使其服務器核心數上限為 48 核 , 而 AMD Zen 1 和英特爾 Skylake 可通過多插槽進一步擴展 。 高通不追求多插槽設計的決策是合理的 , 因為跨插槽連接需要巨大的帶寬和額外的互連工作 。 但這也使其無法滿足需要超過百核虛擬機和 TB 級內存的專業云應用場景 。 僅 32 條 PCIe 通道也限制了 Centriq 搭載大量加速器的能力 —— 即使是同期的高端工作站也擁有更多 PCIe 通道 。
因此 , Centriq 的系統架構旨在應對主流云應用 , 而非試圖覆蓋英特爾的全部市場 。 通過不涉足所有專業應用 , 高通的數據中心業務能夠避免分散精力 , 專注于為常見云場景提供最佳解決方案 。 對于這些用例 , 保留 32 條 PCIe 通道并集成 USB、SATA 等傳統南橋功能可能降低平臺成本 。 盡管 Centriq 的互連性能不及英特爾 , 但其表現遠超 Graviton 1 。
性能表現在 SPEC CPU2017 測試中 , Falkor 核心輕松超越 Arm 的 Cortex A72 , 整數套件領先 21.6% , 浮點套件領先 53.4% 。 但在采用更先進工藝節點的后續 Arm 產品面前 , 其性能稍顯落后 。
在 SPEC CPU2017 的整數工作負載中 , Falkor 在內存受限的任務(如 505.mcf 和 502.gcc)中表現最佳 。 在 503.bwaves 和 507.cactuBSSN 等多個浮點子測試中 , Falkor 取得了巨大領先 , 這使其在浮點套件中的總體優勢顯著擴大 。
從每時鐘周期指令數(IPC)來看 , Falkor 在 538.imagick 等緩存友好型工作負載中能充分發揮性能 。 但并非所有高 IPC 工作負載都讓 Falkor 占據明顯優勢:在 SPEC CPU2017 整數套件的 548.exchange2 和 525.x264 兩項高 IPC 測試中 , Cortex A72 僅略微落后 。 這也提醒我們 , Falkor 并非真正的四發射核心 。
作為對比 , 本文加入了 Skylake 的 IPC 數據(這是一款無重命名器槽位限制的四發射核心) 。 在較簡單的工作負載中 , Skylake 的 IPC 可達 3 以上 , 而 Falkor 則無法做到 。
四核性能對比在 7-Zip 測試中(設置為使用 8 線程并固定到 4 個核心) , Falkor 輕松領先 Cortex A72 。 每個集群使用一個核心與在兩個集群中加載兩個核心的性能提升微乎其微 。
與 7-Zip 不同 , libx264 是一個高度向量化的工作負載 。 Falkor 的向量處理能力較弱 , 但 Cortex A72 亦然 。 使用四個雙核集群提供的額外 L2 容量僅帶來輕微性能提升 , 但 Falkor 仍毫無懸念地擊敗 A72 。
總結高通的 Kryo 移動核心以高核心吞吐量與欠佳的內存子系統為特點 , 而 Falkor 在進軍服務器市場時采取了不同的策略 。 其核心流水線在許多方面相比 Kryo 有所簡化:執行資源更少、加載 / 存儲帶寬更低、對 128 位向量的處理更弱 。 其 “3+1” 重命名器更多是作為分支融合的替代方案 , 而非使 Falkor 成為真正的四發射核心 , 這是相較 Kryo 的又一退步 。 盡管 Falkor 在亂序資源釋放等方面有所改進 , 但是缺乏 Kryo 的原始吞吐量 。
比較起來 , Falkor 擁有更強的內存子系統:指令緩存容量是 Kryo 的兩倍以上 , 加載 / 存儲單元可跟蹤更多未完成訪問 , 并實現更快的存儲轉發 , 即使是部分加載 / 存儲重疊等復雜場景也能良好處理 。 核心之外 , Falkor 的 L2 延遲比 Kryo 低得多 , L2 未命中時可通過高帶寬互連訪問 60MB 的 L3 緩存 。 高通并未堆砌執行單元和核心寬度 , 而是致力于為 Falkor 提供充足的數據供給 。
Falkor 的目標 likely 是在多種工作負載中提供足夠的性能 , 而非在少數簡單任務中追求極致表現 。 精簡核心流水線可能也是為了實現高通的密度目標:2017 年集成 48 核堪稱壯舉 , 這使高通在單插槽服務器中擁有超越英特爾和 AMD 的核心數優勢 , 且在 120W 功耗范圍內實現這一點更為令人印象深刻 。 Kryo 或許因架構 “過于臃腫” 而不適合這一角色 —— 寬流水線和完整的 128 位向量執行單元耗電較高 , 數據傳輸也會顯著消耗功率 , 而 Kryo 欠佳的緩存容量更雪上加霜 。
Falkor 最終成為 2017 年 Arm 服務器市場的有力競爭者 。 Centriq 全面碾壓亞馬遜的 Graviton 1(后者是主流云廠商推出的首款 Arm 平臺) 。 盡管相比 Kryo 精簡了核心 , 但 Falkor 仍比 A72 強大得多 , 結合更強的內存子系統 , 既能實現單核性能超越 A72 , 又能在芯片上集成更多核心 。
但僅擊敗 Graviton 1 遠遠不夠 。 2010 年代后期的 Arm 服務器市場環境并不友好 , 多家廠商嘗試推出密度優化的 Arm 服務器 CPU 卻紛紛折戟 , 包括 AMD 的 “Seattle”、Ampere 的 eMAG 8180 和 Cavium 的 ThunderX2 。 x86-64 架構的強勢競爭與 Arm 軟件生態的不成熟 , 使得這些早期 Arm 服務器芯片難以打開市場 。 例如 , 對比 Skylake-X , Falkor 的核心規模更?。 籆entriq 的內存子系統雖比 Kryo 或 A72 更強 , 但 L2 容量更少且 L3 延遲更高 。
高通數據中心技術部門在開發 Centriq 服務器 SoC 時無疑取得了諸多成就:在單芯片上集成數十個核心并實現數百 GB/s 的數據傳輸絕非易事 , 這與移動 SoC 設計截然不同 。 但瞄準云計算細分市場 , 挑戰英特爾、AMD 等經驗豐富的玩家依然是困難重重的 。 直到 2020 年后 Ampere Altra 發布 , Arm 才真正在服務器市場站穩腳跟 —— 彼時 Arm 更強的 Neoverse N1 核心和臺積電 7nm FinFET 工藝已讓 Falkor 相形見絀 。 高通曾計劃推出 Falkor 的繼任者 “Saphira” 核心 , 但據本文所知 , 該核心并未落地 。
不過 , 高通正試圖重返服務器市?。 浩湫冀蟶程毓?AI 公司 HUMAIN 供應 “數據中心 CPU 和 AI 解決方案” , 英偉達的 NVLink Fusion 公告也將高通列為可通過 NVLink 集成 GPU 的服務器 CPU 供應商 。
*聲明:本文系原作者創作 。 文章內容系其個人觀點 , 我方轉載僅為分享與討論 , 不代表我方贊成或認同 , 如有異議 , 請聯系后臺 。
想要獲取半導體產業的前沿洞見、技術速遞、趨勢解析 , 關注我們!
推薦閱讀
- 國產手機這些新技術,讓我感覺iPhone17真的不香了
- 老人機≠低配機!講個道理,你真的低估老年人的用機習慣
- 看似無害的提問偷走RAG記憶,IKEA:隱蔽高效數據提取攻擊新范式
- 輕薄全能旗艦vivo S30,這個夏天最酷的科技潮品
- 即將發布的5款新機,每一款都很有看點!你最期待哪一款?
- vivo S30 Pro mini影像深度測評:氛圍感直出的藝術
- 原來 2124 元也能有提升幸福感的好手機
- 下一次品牌告訴你‘這是福利’時,請先問:進步了誰的利益?
- EPEL 倉庫詳解:Linux 系統上的安裝與使用指南
- 預售進行時!vivo S30系列選購指南:哪款配色最適合你的style
