在所有的芯片品類中,中央處理器CPU一直是最核心的類型,可能沒有之一。它驅(qū)動著各種各樣的電子設(shè)備,小到我們的手機(jī)、電腦,大到數(shù)據(jù)中心里成千上萬臺服務(wù)器,它們的控制中樞和大腦都是CPU。
CPU最主要的優(yōu)勢就是通用性,它必須適應(yīng)各種不同的應(yīng)用場景,同時盡可能保持高性能和低功耗,這其實(shí)是一件非常復(fù)雜的事情。??次椅恼碌呐笥芽隙ǘ贾牢沂莻€吃貨,我們就拿吃來舉個例子。如果我們把設(shè)計芯片比作開飯店,那么設(shè)計那些針對特定應(yīng)用的專用芯片就好比是開個火鍋店,或者拉面館,只需要專注于做好幾道看家菜就可以了。而設(shè)計CPU就好比是開個大酒樓,各大菜系都得整明白,煎炒烹炸也得樣樣精通,甚至西餐甜點(diǎn)也得配齊。相比于開火鍋店來說,這個難度就大多了。
所以為了實(shí)現(xiàn)和完善這種通用性,現(xiàn)代CPU的設(shè)計思路也在不斷進(jìn)化。除了不斷升級微架構(gòu),做到性能和功耗的迭代優(yōu)化外,CPU還在不斷集成一些專用的加速單元,用來處理像人工智能這樣非常重要或者流行度越來越高的應(yīng)用。這種以通用性能升級為主,并兼顧部分專用應(yīng)用加速技術(shù)的思路,就成為了現(xiàn)代CPU設(shè)計的主旋律。
在之前的文章里,我們專門介紹過英特爾至強(qiáng)可擴(kuò)展處理器對人工智能應(yīng)用提供的優(yōu)化支持。今年四月,英特爾發(fā)布了最新的面向單路和雙路服務(wù)器的第三代至強(qiáng)可擴(kuò)展處理器,代號為Ice Lake。這篇文章我就想以Ice Lake為例,和大家一起來看下現(xiàn)代CPU的這種通用+專用的整體設(shè)計思路,包括微架構(gòu)、系統(tǒng)架構(gòu)、IO和存儲這些單元模塊的設(shè)計方法,以及如何圍繞CPU來構(gòu)建整體的生態(tài)系統(tǒng)。
還是老規(guī)矩,我總結(jié)了一個思維導(dǎo)圖,包含了這篇文章的所有知識點(diǎn),獲取的方法見文末。
Ice Lake概述
Ice Lake是英特爾第一個采用10納米工藝打造的至強(qiáng)CPU,單芯片最多集成40個核心,和上一代Cascade Lake相比提升了近43%。它采用了最新的Sunny Cove微架構(gòu),每時鐘周期指令數(shù)(IPC)提升了20%。它的DDR4內(nèi)存通道的數(shù)量從6個提升到了8個,首次支持了PCIe4.0,并且每路支持高達(dá)64個通道??偠灾?,Ice Lake無論是架構(gòu)還是性能,都比前代產(chǎn)品取得了明顯的提升。
在特定應(yīng)用的加速方面,它繼承了很多前代產(chǎn)品的重要特性,比如之前文章里介紹過的深度學(xué)習(xí)加速技術(shù),同時也有升級和新增,比如引入更多與安全相關(guān)的硬件支持,還有能靈活進(jìn)行頻率調(diào)配的SST技術(shù)等等。這些我們接下來就結(jié)合CPU架構(gòu)設(shè)計方面的知識,一個一個仔細(xì)說。
Sunny Cove內(nèi)核架構(gòu)
首先值得一說的,就是Ice Lake里采用的全新內(nèi)核架構(gòu)Sunny Cove。內(nèi)核是CPU最重要的組成部分,在現(xiàn)代CPU里一般都有少則幾個,多則幾十個內(nèi)核,它們和存儲器還有IO單元一起組成了完整的CPU片上系統(tǒng)。通常我們也把內(nèi)核架構(gòu)稱為CPU的微架構(gòu)。
CPU微架構(gòu)的本質(zhì),其實(shí)是對某種指令集架構(gòu)的具體實(shí)現(xiàn),常見的指令集架構(gòu)包括x86、ARM、RISC-V等。不過即便是相同的指令集架構(gòu),不同公司的實(shí)現(xiàn)方式也不盡相同。但是通常來說,CPU微架構(gòu)都需要實(shí)現(xiàn)四個主要的操作,分別是取指、解碼、執(zhí)行和寫回。
也就是說,CPU會從內(nèi)存中取出一條指令,然后通過解碼器把它分解成若干個部分,并識別出來這條指令的功能,比如算術(shù)運(yùn)算、跳轉(zhuǎn)、比較等等。解碼分解之后的指令和數(shù)據(jù)就會被送到執(zhí)行階段。執(zhí)行完的結(jié)果被寫回到寄存器或者存儲器里。這個過程周而復(fù)始,直到整個程序執(zhí)行完畢。
再深入一些,我們通常把這四個操作分成兩部分,實(shí)現(xiàn)“取指”和“解碼”這兩個操作的電路在CPU微架構(gòu)里叫做前端,實(shí)現(xiàn)“執(zhí)行”和“寫回”的結(jié)構(gòu)叫做后端。比如在Sunny Cove微架構(gòu)示意圖里,上面的這些綠色的部分都屬于前端,下面藍(lán)色的部分則屬于后端。
Sunny Cove架構(gòu)圖
CPU內(nèi)核的“前端”
前端最主要的作用就是盡全力給后端提供充足的彈藥,讓后端的執(zhí)行單元盡量保持滿負(fù)荷運(yùn)轉(zhuǎn),從而減少空轉(zhuǎn)造成的性能和功耗浪費(fèi)。因此前端就需要盡可能多地從內(nèi)存中獲取指令,然后把它們解碼成后端能夠直接執(zhí)行的微操作。
由于CPU運(yùn)行的速度遠(yuǎn)遠(yuǎn)高于從內(nèi)存中讀取指令和數(shù)據(jù)的速度,所以在前端中我們有指令緩存,它的讀取速度非常快,可以一次性把很多指令都取過來緩存起來,然后直接進(jìn)行解碼,這樣就減少了數(shù)據(jù)從內(nèi)存?zhèn)鬏數(shù)紺PU的等待時間。
前端另一個非常重要的功能就是分支預(yù)測。上圖里的BPU,就是專門做分支預(yù)測的單元(Branch Prediction Unit)。當(dāng)程序出現(xiàn)分支的時候,我們需要提前預(yù)判程序大概率會走哪個分支,然后提前取到與這個分支對應(yīng)的指令和數(shù)據(jù)?,F(xiàn)代CPU中的分支預(yù)測可以做到非常準(zhǔn)確,比如它采用了很多類似機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的方法,可以自己學(xué)習(xí)并預(yù)測分支的結(jié)果。對于Sunny Cove來說,它提升了前端的容量,并且進(jìn)一步改進(jìn)了分支預(yù)測的性能,這對內(nèi)核整體性能的提升都有很大的幫助。
CPU內(nèi)核的“后端”
CPU微架構(gòu)的后端有很多ALU,也就是算術(shù)邏輯單元(Arithmetic Logic Unit),它們是執(zhí)行算術(shù)和邏輯運(yùn)算的核心結(jié)構(gòu)。這些ALU可以并行執(zhí)行前端發(fā)送過來的微指令,這就是所謂的超標(biāo)量結(jié)構(gòu)。這些微指令先通過調(diào)度器進(jìn)行調(diào)度,然后發(fā)送給不同的ALU去執(zhí)行。它們可以是按順序的,也可以是亂序的。這就需要后端去仔細(xì)分配這些微指令的執(zhí)行單元,并且在執(zhí)行之后再把結(jié)果按順序組合起來。通常來說,能夠支持亂序執(zhí)行的數(shù)量越多,內(nèi)核性能就越高。
以Sunny Cove為例,它的亂序執(zhí)行的窗口數(shù)量就從上一代的224個增加到了352個,也就是說內(nèi)核變得更寬了,同時它的調(diào)度器和分配單元也都進(jìn)行了大幅改進(jìn),內(nèi)核上的緩存容量也有增加。所有這些更新升級,都幫助Sunny Cove微架構(gòu)顯著提升了性能。也使得Ice Lake在整數(shù)、浮點(diǎn)數(shù)、Stream Triad和LINPACK上的平均性能提升到了上一代的1.46倍。
CPU芯片整體架構(gòu)設(shè)計
CPU芯片的整體架構(gòu)包括內(nèi)核的排列、以及同樣至關(guān)重要的存儲和I/O子系統(tǒng)。和前一代產(chǎn)品相比,Ice Lake的芯片整體架構(gòu)也有了不少變化,其中一個最主要的區(qū)別就是把I/O單元放在了芯片的南北兩側(cè),這樣能夠更加充分地利用整個芯片的面積,提升芯片的集成度。
對于緩存架構(gòu),Ice Lake采用了分布式的三級緩存LLC,總?cè)萘肯喈?dāng)于Cascade Lake的1.5倍。這種結(jié)構(gòu)讓每個內(nèi)核都可以訪問片上的三級緩存,從而能實(shí)現(xiàn)比較均衡的訪問時延。這對于數(shù)據(jù)中心的很多應(yīng)用場景來說非常重要,因為它們需要的不僅是時延的平均值要低,同時對時延的抖動也非常敏感。這個和“木桶效應(yīng)”相似,也就是木桶能裝的水取決于最短的木條,這就要求每個木條都不能太拉胯。從下圖可以看到,Ice Lake在執(zhí)行網(wǎng)絡(luò)轉(zhuǎn)發(fā)任務(wù)的時候(下圖右),不僅時延平均值遠(yuǎn)低于前一代產(chǎn)品(下圖左),而且也非常穩(wěn)定,沒有太大波動。
在內(nèi)存和I/O接口方面,Ice Lake也提升了內(nèi)存通道的數(shù)量和性能,從上一代支持6通道的DDR4 2933,升級到8通道的DDR4 3200,這使得它的內(nèi)存容量和內(nèi)存帶寬可分別提升到上一代的2.66倍和1.6倍。Ice Lake還支持3個UPI、也就是超級通道互聯(lián),這使得雙路服務(wù)器CPU的通信帶寬可以達(dá)到11.2GT/s。此外,它還支持64通道的PCIe 4.0,這就使得它能與性能更優(yōu)的存儲和網(wǎng)絡(luò)設(shè)備協(xié)同工作。
通用 vs 專用:現(xiàn)代CPU的設(shè)計思路演進(jìn)
就像前面說的,現(xiàn)代CPU的設(shè)計思路是通用性能提升+特定場景優(yōu)化。在特定應(yīng)用優(yōu)化上,Ice Lake依然集成有英特爾的深度學(xué)習(xí)加速技術(shù)DL Boost,主攻INT8加速,能將推理性能提升到上一代產(chǎn)品的1.74倍。
Ice Lake另一個重要的性能優(yōu)化叫做頻率選擇技術(shù)(Speed Select Technology,SST)。它能靈活調(diào)整CPU單個和多個核心的基頻和睿頻,既可以作用于單個核心,也可以對多個核心組成的不同組合進(jìn)行精細(xì)化的調(diào)控,從而針對不同的應(yīng)用場景更好地平衡CPU的性能和功耗。
比如運(yùn)行在線游戲這類性能要求高、或?qū)τ跁r延比較敏感的業(yè)務(wù)的時候,就可以把CPU調(diào)整到高主頻、低核心數(shù)的模式,以滿足對實(shí)時性和響應(yīng)速度的需求。同樣的,對于很多云業(yè)務(wù)來說,就可以把CPU切換成頻率不那么高,但是有更多核心數(shù)同時工作的模式,這樣就能提升計算的吞吐量,并且?guī)砀叩男詢r比。
和前一代相比,Ice Lake對SST技術(shù)進(jìn)行了升級,可以借助軟件實(shí)時修改CPU核心的頻率調(diào)配方案,不再需要重啟服務(wù)器,這就讓頻率的調(diào)配更加靈活和便利。
接下來說一下和安全相關(guān)的技術(shù)支持,這對數(shù)據(jù)中心和企業(yè)級的應(yīng)用非常關(guān)鍵,特別是在數(shù)據(jù)敏感型應(yīng)用和關(guān)鍵業(yè)務(wù)的領(lǐng)域,我們都需要盡量保證代碼和用戶數(shù)據(jù)不被盜取或篡改。
Ice Lake進(jìn)一步擴(kuò)展了AVX-512指令集,從而在硬件層面上支持那些常見的密碼操作算法的并行執(zhí)行,從而大幅提升密碼操作應(yīng)用的性能和吞吐量,這就是密碼操作硬件加速技術(shù)(Crypto Acceleration)。它特別適合于5G基礎(chǔ)設(shè)施、VPN、還有SSL網(wǎng)絡(luò)服務(wù)器這些需要進(jìn)行大量密碼操作運(yùn)算的應(yīng)用場景。據(jù)了解IPSec公司就使用了這種加速技術(shù),將VPN數(shù)據(jù)包的處理速度提升到了原來的1.94倍。
除了密碼操作加速之外,Ice Lake還集成了另外一種和安全相關(guān)的指令集擴(kuò)展,叫做軟件防護(hù)擴(kuò)展技術(shù)SGX。它的本質(zhì)就是通過指令請求CPU在內(nèi)存中分配出一塊受CPU保護(hù)的區(qū)域,也叫做“飛地”。這個很像是疫情期間,人們建的封閉的隔離區(qū),只不過這個隔離區(qū)里都是沒有被感染的人。
英特爾SGX技術(shù)示意圖
飛地中受保護(hù)的代碼和數(shù)據(jù)不受操作系統(tǒng)或者VMM的影響,即便操作系統(tǒng)、BIOS、或者VMM這些比客戶軟件更為底層的基礎(chǔ)軟件在黑客攻擊或高權(quán)限軟件攻擊中淪陷,通過SGX技術(shù)生成的飛地也能更有效地阻斷這些攻擊,盡力避免其中應(yīng)用程序和數(shù)據(jù)被非法復(fù)制或篡改。
Ice Lake雙路服務(wù)器能支持最高達(dá)1TB的飛地空間,這就為很多企業(yè)推進(jìn)更大數(shù)據(jù)量的隱私計算打下了基礎(chǔ)。比如螞蟻集團(tuán)就利用SGX技術(shù)搭建了一個隱私保護(hù)機(jī)器學(xué)習(xí)平臺,并且基于之前文章介紹過的Analytics Zoo,提出了一個更加安全的分布式端到端推理服務(wù)流水線。百度在他們的深度學(xué)習(xí)平臺飛槳中,也通過SGX技術(shù)引入了機(jī)密計算的能力,這樣可以通過更加安全可信的方式,為深度學(xué)習(xí)模型提供更為多源的數(shù)據(jù)。
百度MesaTEE整體架構(gòu)
CPU平臺設(shè)計
除了CPU本身的算力之外,圍繞CPU搭建的計算平臺的性能也非常重要。特別是現(xiàn)代服務(wù)器和數(shù)據(jù)中心設(shè)計中要兼顧計算、存儲、網(wǎng)絡(luò)這些硬件,同時還有軟件和系統(tǒng)的優(yōu)化。這些軟硬件配合使用,不僅能對CPU進(jìn)行針對性的補(bǔ)強(qiáng),還可以起到1+1>2效果,最終實(shí)現(xiàn)一個高性能、低功耗的系統(tǒng)級解決方案。這個也是現(xiàn)代CPU系統(tǒng)設(shè)計的趨勢。
在存儲方面,Ice Lake可以搭配傲騰持久內(nèi)存,它能兼顧高性能、低時延,以及大容量和數(shù)據(jù)的持久性。由于Ice Lake相比上一代產(chǎn)品提升了內(nèi)存通道的數(shù)量和速度,搭配傲騰持久內(nèi)存200系列時,理論內(nèi)存帶寬平均提升幅度可達(dá)32%;單個Ice Lake搭配使用DRAM和傲騰持久內(nèi)存的時候,內(nèi)存總?cè)萘磕苓_(dá)到6TB。
英特爾還發(fā)布了全新的、支持PCIe4.0的傲騰固態(tài)盤P5800X系列。相比同樣支持PCIe4.0的NAND固態(tài)盤,它的時延可降低達(dá)13倍,QoS提升達(dá)66倍,每GB的IOPS提升達(dá)26倍,耐用性提升也達(dá)33倍以上。
網(wǎng)絡(luò)方面,Ice Lake搭配了英特爾800系列的以太網(wǎng)卡,它支持?jǐn)?shù)據(jù)中心常用的網(wǎng)絡(luò)端口以及RDMA協(xié)議,還能通過ADQ等技術(shù)為高優(yōu)先級網(wǎng)絡(luò)工作負(fù)載提供加速,特別適合于數(shù)據(jù)中心里的高速網(wǎng)絡(luò)應(yīng)用,比如網(wǎng)絡(luò)功能虛擬化NFV里關(guān)于數(shù)據(jù)轉(zhuǎn)發(fā)的加速。
結(jié)語
我們以英特爾最新發(fā)布的代號為Ice Lake的第三代至強(qiáng)可擴(kuò)展處理器為例,梳理了現(xiàn)代CPU設(shè)計的一些關(guān)鍵理念,包括微架構(gòu)設(shè)計、芯片的內(nèi)存、接口子系統(tǒng),還有針對不同應(yīng)用場景提供的特定加速能力。另外非常重要的就是CPU平臺的概念,也就計算、存儲和網(wǎng)絡(luò)這些關(guān)鍵組件如何相互配合、并且實(shí)現(xiàn)系統(tǒng)級的平臺方案。