深入了解服務(wù)器 CPU 的型號、代際、片內(nèi)與片間互聯(lián)架構(gòu)
我隨手找到的一個 CPU 型號 Intel(R) Xeon(R) Platinum 8260 CPU。這個 CPU 型號中的各段數(shù)字分別都代表的是什么含義,從中我們可以得到哪些有價值的信息。讓我們帶著這個型號進入到今天的服務(wù)器 CPU 原理解讀。
服務(wù)器 CPU 市場上目前雖然有 arm 和 RISV-V 架構(gòu)入場,但最主流的品牌目前仍然還是 x86 架構(gòu),廠家主要還是 Intel 和 AMD 兩家。
其中 Intel 針對服務(wù)器市場推出的子品牌型號是 Xeon。我們今天主要圍繞 Intel 的 Xeon CPU 來展開介紹。
圖片
第一部分是品牌標志。Intel(R) Xeon(R) 表示的是這是 Intel 的 Xeon 服務(wù)器 CPU。第二部分是 CPU 級別。Intel 在 2017 年之前對服務(wù)器 CPU 是使用 E3、E5 和 E7 的方式來命名。其中 E3 代表的是入門級別的服務(wù)器處理器、E5 代表中端、E7代表高端。這種命名方式類似于桌面處理器中的 i3、i5 和 i7,數(shù)字越大代表的檔次越高。但在 2017 年之后,開始使用 Platinum(鉑金)、Gold(金牌)、Silver(銀牌)。
另外代表級別的字符串如 Platinum 和后面的第一位數(shù)字是有對應(yīng)關(guān)系的,
如果數(shù)字是 8、9 都代表的是 Platinum 系列,定位高端
如果數(shù)字是 6、5 都代表的是 Gold 系列,定位中端
如果數(shù)字是 4 代表的是 Silver 銀牌系列,定位入門級服務(wù)器 CPU
第三部分的一位數(shù)字代表的是 CPU 的代際。這是 2017 年之后開始的可擴展處理器家族代際標識。其中數(shù)字越大代表 CPU 架構(gòu)越新。
- 1 代表第一代可擴展處理器,對應(yīng)代號 Skylake(2017 年發(fā)布) 的架構(gòu)設(shè)計
- 2 代表第二代可擴展處理器,對應(yīng)代號 Cascade Lake(2019 年發(fā)布) 和 Casecade Lake-R(2020 年發(fā)布) 的架構(gòu)設(shè)計
- 3 代表第三代可擴展處理器,對應(yīng)代號 Cooper Lake(2020 年發(fā)布) 和 Ice Lake(2021 年發(fā)布)的架構(gòu)設(shè)計
- 4 代表第四代可擴展處理器,對應(yīng)代號 Sapphire Rapids(2023 年發(fā)布)的架構(gòu)設(shè)計
第四部分是 SKU 編號。這是 CPU 廠商為了方便對所有的產(chǎn)品進行庫存管理而制定的編號。這類似于超市里商品的條形碼、圖書的 ISBN 號,方便查詢和管理產(chǎn)品的庫存量。一般來說,這個值也是越大性能越好,但不絕對。
第五部分是產(chǎn)品線后綴。其中 C 代表單 CPU 插槽。Q 代表支持液冷。N 代表的是針對通信/網(wǎng)絡(luò)/NFV 網(wǎng)絡(luò)功能虛擬化優(yōu)化。T 代表的是根據(jù)長壽命使用要求設(shè)計的能滿足 10 年使用周期支持。P 代表針對 IaaS 云環(huán)境優(yōu)化。V 代表針對 Saas 云環(huán)境優(yōu)化。
二、服務(wù)器 CPU 代際簡介
服務(wù)器 CPU 的代際發(fā)展和 PC 家用 CPU 的過程基本上是一致的,但在命名方式上有所不一樣。服務(wù)器 CPU 的代際從 2017 的 Skylake 開始,命名為了第一代可擴展處理器。接下來的代際命名都是在這個基礎(chǔ)之上更新。
時間 | 代數(shù) | CPU代際 | 制程工藝 | 微架構(gòu) |
2017 | 第1代 | Skylake(server) | 14nm | Skylake |
2019 | 第2代 | Cascade Lake | 14nm | Skylake |
2020 | 第3代 | Cooper Lake | 14nm | Skylake |
2021 | 第3代 | Ice Lake(server) | 10nm | Sunny Cove |
2023 | 第4代 | Sapphire Rapids | 7nm | Golden Cove |
其中我們開頭提到的 8260 是屬于第二代,2019 年發(fā)布,對應(yīng)代號 Cascade Lake。
圖片
在第二代可擴展處理器這個代際中,采用的是 14nm 工藝。該代際既包括服務(wù)器 CPU,也包括個人 PC CPU。對于個人 PC CPU,是歸屬到酷睿 i7 和 i9 等型號中。對于服務(wù)器是歸屬到 Xeon Platinum(鉑金)、Xeon Gold(金牌)、Xeon Silver(銀牌)、Xeon Bronze(銅牌)。
其中在 Xeon Platinum(鉑金)系列中,最高可以支持到 28 個物理核心。核更多是和個人 PC CPU 中最大的不同點。下圖是 28 物理核 CPU 芯片的系統(tǒng)結(jié)構(gòu)如下。
圖片
主要分成三個大部分。
第一個大部分是 IMC(integrated memory controller)內(nèi)存控制器。
就是上圖中的 Memory Controller。Cascade Lake 支持的服務(wù)器內(nèi)存規(guī)格是 DDR4 2933 MHz。從圖中可見有該 CPU 兩個內(nèi)存控制器模塊,每個內(nèi)存控制器都可以支持 3 個內(nèi)存通道(channels),每個通道可以插兩個 DIMM 內(nèi)存條,總共支持最大插 2*3*2 = 12 個內(nèi)存條。
第二個大部分就是各個物理核了。
這個代際中采用的是 Mesh 架構(gòu)。在 Mesh 架構(gòu)中,把所有的物理就是把所有的物理核按照行、列的二維的結(jié)構(gòu)進行排列。關(guān)于 Mesh 架構(gòu)后面我們在第四小節(jié)中介紹。
在每個核上方的 LLC 是我們常說的 L3 級緩存,其實 LLC 是末級緩存 (Last Level Cache)的意思,叫法更為準確一些。值得注意的是,雖然 LLC 是分成了在每個核上都有一塊,但整個 CPU 上的所有 LLC 都是共享的。
每個物理核的內(nèi)部就和個人 PC CPU 中的核一樣,都是采用的 Skylake 微處理器架構(gòu)設(shè)計的。每個物理核有 32 KiB 的 L1 指令緩存、32 KiB 的 L1 數(shù)據(jù)緩存、1 MiB 的 L2 緩存。更詳細的 Skylake 微處理器架構(gòu)圖如下。
圖片
第三個大部分是 Notrh Cap 部分。
這個部分包含 PCIe 總線(用來連接顯卡硬盤等)和 UPI 總線(用于多 CPU 片間互聯(lián))。
關(guān)于 PCIe 總線,我們在個人 CPU 的型號、代際架構(gòu)與微架構(gòu) 中提到過。它是一種用于連接高速組件的高速串行計算機擴展總線標準。第二代 Cascade Lake 支持的是 PCIe 3.0 標準,單通道速率為 8 GT/s (984.6 MB/s)。用來連接顯卡或者固態(tài)硬盤等高速設(shè)備。
UPI 總線是用于多 CPU 片間互聯(lián)使用的。Xeon Platinum 系列 CPU 支持 3 個 UPI 連接。而低端的 Xeon Gold 5xxx、Xeon Silver 等只支持 2 個 UPI。關(guān)于 UPI 后面我們再單獨說。
三、片內(nèi)總線之 Mesh 多核架構(gòu)
在服務(wù)器 CPU 架構(gòu)設(shè)計中,要解決的關(guān)鍵問題是如何合理設(shè)計多核布局,以更低的延遲實現(xiàn)對內(nèi)存的訪問。所以,片內(nèi)也需要“總線”進行互聯(lián)。
在 2017 年的 Skylake 之前,Intel 采樣的方式是環(huán)狀互聯(lián),也叫 Ring 架構(gòu)。在 Ring 架構(gòu)里,所有的核都用一個環(huán)來連接。每個核需要訪問內(nèi)存的時候,都通過這個這個環(huán)來進行。
大家都知道,后來服務(wù)器的發(fā)展都是朝著多 CPU 核的方向在發(fā)展。隨著時間的推進,核數(shù)越來越多。傳統(tǒng)的 Ring 架構(gòu)的環(huán)狀結(jié)構(gòu)中,核越多,環(huán)就越大,核通過環(huán)來訪問內(nèi)存數(shù)據(jù)時延遲就會越大。
圖片
為了降低環(huán)上核的數(shù)量,Intel 還曾在高端 CPU 中為了塞進更多的核,設(shè)計了個雙環(huán)結(jié)構(gòu)。這樣,環(huán)上的核就少了,數(shù)據(jù)傳輸路徑就短了一些。
圖片
但即便是分成了兩個環(huán),依舊會有核心越多延遲越大的問題,且跨環(huán)訪問時會增加一個額外的 CPU cycle 的延遲,所以 Broadwell 算是把 Ring 架構(gòu)續(xù)命做到了極致最多也只塞到了 24 個核心。
所以為了更好地控制多核處理器訪問內(nèi)存時的延遲。Intel 于 2017 年推出的 Skylake 中采用了 Mesh 架構(gòu)來設(shè)計多核處理器。所謂 Mesh 架構(gòu),就是把所有的物理核按照行、列的二維的結(jié)構(gòu)進行排列 。
在最高規(guī)格的 28 個物理核的芯片設(shè)計中,采用了 5 行 6 列的矩陣結(jié)構(gòu)。其中 2 個位置用于放上面提到的內(nèi)存控制器。接下來的每個位置都放了一個物理核。
Ring 架構(gòu)演進到 Mesh 架構(gòu)后,片內(nèi)總線也從一維結(jié)構(gòu)演變到了二維結(jié)構(gòu)
圖片
這樣,當某個物理核在訪問內(nèi)存數(shù)據(jù)的時候,就可以通過這個二維結(jié)構(gòu)找到一個最短路徑來通信了。例如下圖中 Start 這個位置的核想要訪問內(nèi)存,這時候的訪問路徑是先沿著紅色箭頭向上,然后再沿著另一個紅色箭頭向右到達內(nèi)存控制器來訪問內(nèi)存。
圖片
有了這個二維結(jié)構(gòu)后,訪問內(nèi)存的路徑就會低一些,也就為在低延遲的情況下設(shè)計更多的物理核提供了可能。在 Cascade Lake 代際下設(shè)計到了 28 個物理核。
圖片
后面的服務(wù)器 CPU 仍然還延續(xù)使用 Mesh 架構(gòu),在 2021 年發(fā)布的 ice lake 中,更是設(shè)計到了 7 行 8 列的矩陣結(jié)構(gòu),共放了 40 個物理核。
關(guān)于更多 Mesh 架構(gòu)的介紹參見 https://en.wikichip.org/wiki/intel/mesh_interconnect_architecture
四、片間總線之 UPI 多處理器互聯(lián)
單個 CPU 即使用盡全力,能設(shè)計進去的物理核仍然是有限的。所以另外一個計算擴展思路是多處理器互聯(lián),在一臺服務(wù)器上安裝多個物理 CPU,進而達到擴展算力的目的。
前面我們看到,每個 CPU 都是支持多條內(nèi)存的,都可以通過內(nèi)存控制器和自己的內(nèi)存插槽上的內(nèi)存進行通信。但現(xiàn)代的服務(wù)器一般都不只是一個 CPU。這樣問題就來了,A CPU 如何訪問另外一個 CPU 插槽上內(nèi)存里的數(shù)據(jù)。
答案就是 UPI 總線,它是 Ultra Path Interconnect 的簡稱。
在 17 年之前的服務(wù)器 CPU 中,采用的是 QPI(QuickPath Interconnect) 總線進行 CPU 之間的互聯(lián)。從 2017 年的第一代可擴展處理器開始,Intel 就采用了更為快速的 UPI(Ultra Path Interconnect) 總線。UPI 總線相對于 QPI 總線,傳輸速度更快,從9.6 GT/s 提升到了 10.4 GT/s,而且功耗還更低。
通過 UPI,可以實現(xiàn)雙處理器、四處理器、甚至是八處理器之間的互聯(lián)。Xeon Platinum 都支持 3 UPI 連接。對于 Xeon Platinum 系列,雙處理器的連接方式如下
圖片
四處理器的連接方式如下
八處理器的連接方式如下
Intel 通過 UPI 總線,極大地提高了多處理器可擴展性。不過雖然 Intel 支持最多八處理器,業(yè)界線上使用的最多的仍然是雙處理器的 UPI 互聯(lián)。
總結(jié)
在本節(jié)中,我們以較為常用的 Intel(R) Xeon(R) Platinum 8260 型號的 CPU 作為引子,對服務(wù)器 CPU 的型號命名規(guī)范、各個代際的發(fā)展過程、以及片內(nèi)總線之 Mesh 架構(gòu)、片間 UPI 總線互聯(lián)。
Intel 的服務(wù)器 CPU 從 2017 年開始后采用了新的代際命名規(guī)范。2017 年的 skylake 作為第一代,目前到了第四代。在每一代中,Platinum 都是最高端的 CPU 型號、接下來依次是 Gold、Silver。
其中 8260 是屬于第二代可擴展 CPU,代際代號為 Cascade Lake。我們找到了它的芯片結(jié)構(gòu)圖。主要包括內(nèi)存控制器、各個物理核、PCIe總線、UPI總線等部分。
為了更好地在低延遲的情況下實現(xiàn)更多的物理核,8260 采用的 Mesh 架構(gòu)來組織所有的物理核。在 Mesh 架構(gòu)中,把所有的物理就是把所有的物理核按照行、列的二維的結(jié)構(gòu)進行排列。能較為有效地控制物理核訪問內(nèi)存時的延遲。
除了片內(nèi)設(shè)計更多的物理 CPU 的思路外,另外一個擴展算力的方法是在一臺服務(wù)器內(nèi)設(shè)計多個 CPU。而多個 CPU 之間是通過 UPI 總線進行互聯(lián)的。通過該總線,單服務(wù)器最多可以實現(xiàn)八顆 CPU 的互聯(lián)。