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