多核CPU和多CPU的區(qū)別主要在于性能和成本。多核CPU性能最好,但成本最高;多CPU成本小,便宜,但性能相對(duì)較差。我們來(lái)看一個(gè)例子:如果我們需要組成一個(gè)48核的計(jì)算機(jī),我們可以有這么三種選擇:
- 把48個(gè)核全部做到一個(gè)大Die上,Die很大。這個(gè)Die加上一些外圍電路組成一個(gè)單Die多核CPU。
- 弄4個(gè)小Die,每個(gè)Die 12個(gè)內(nèi)核,每個(gè)Die很小。把這4個(gè)Die,加上互聯(lián)總線(xiàn)和外圍電路,全部封裝(Packaging)到一個(gè)多Die多核CPU中。
- 還是弄4個(gè)Die,每個(gè)Die 12個(gè)內(nèi)核,每個(gè)Die很小。每個(gè)Die加上外圍電路封裝成一個(gè)單獨(dú)的CPU,4個(gè)CPU再通過(guò)總線(xiàn)組成一個(gè)多路(way/socket)系統(tǒng)。
我們來(lái)看看他們的性能差距和成本差距。
性能差距
為了很好的理解三者之間的區(qū)別,我們通過(guò)一個(gè)生活中的場(chǎng)景分別指代三種方式。我們想像每個(gè)Die是一棟大樓,Die里面的內(nèi)核們,內(nèi)存控制器們、PCIe控制器們和其他功能模塊是其中的一個(gè)個(gè)房間。數(shù)據(jù)流和指令流在它們之間的流動(dòng)看作房間里面的人們互相串門(mén),這種串門(mén)的方便程度和走廊寬度決定了人們?cè)覆辉敢夂投嗌偃丝梢酝瑫r(shí)串門(mén),也就指代了數(shù)據(jù)的延遲和帶寬。
好了,有了這種方便的比喻,我們來(lái)看看三種情況分別是什么。
48核的大Die是Intel至強(qiáng)系列的標(biāo)準(zhǔn)做法:

這種方法就是既然需要這么多房間,業(yè)主有錢(qián),就建一個(gè)大樓,每層都是超級(jí)大平層:

走廊眾多,這里堵了,換個(gè)路過(guò)去,反正方向?qū)α司托校偰艿降摹K匀藗兛梢院芊奖愕拇T(mén),也可以有很多人同時(shí)串門(mén)。所以延遲小,帶寬高。
一個(gè)CPU pacakge里面包了4個(gè)小Die的做法是AMD的標(biāo)準(zhǔn)做法,也有部分Intel也這樣:

這種做法可以看作業(yè)主沒(méi)錢(qián)搞大平層,但也要這么多房間,怎么辦呢?在原地相鄰得建4個(gè)小高層,再把小高層連起來(lái),房間數(shù)目不變。怎么把它們連起來(lái)呢?比較現(xiàn)代的做法有兩種:

這種做法也叫做MCM(Multi-Chip-Module),詳細(xì)內(nèi)容可以看我的這篇文章:
如何像搭積木一樣構(gòu)建CPU?Intel和AMD都是怎么做的?
其中AMD采用硅中介(Interposer),也就是上面那種;Intel采用EMIB(Embedded Multi-die Interconnect Bridge),是下面那種。
硅中介的做法可以看作為了兩個(gè)樓互通,我們把地下都挖空了,搞了個(gè)換乘大廳。而EMIB可以看成在兩個(gè)樓之間挖了一個(gè)地下通道。顯然挖通道更省錢(qián)省力,但因?yàn)橥ǖ朗莾蓛苫ヂ?lián)的,如果大樓多了,還不如換乘大廳方便。
好了,那我們的串門(mén)問(wèn)題怎么解決呢?因?yàn)闃呛蜆?Die和Die)之間只有地下互通,要串門(mén)的人都要做電梯到地下一層,通過(guò)地道或者換乘大廳到另一個(gè)大樓地下,再做電梯去想要的樓層。路途遙遠(yuǎn),好多人都不想串門(mén)了,同時(shí)如果串門(mén)人太多,會(huì)擠爆電梯,不得不串門(mén)聯(lián)系工作的人們?cè)陔娞菘谂牌鹆碎L(zhǎng)隊(duì)。顯然,建筑四個(gè)相鄰小高層的辦法,延遲和帶寬都比較差。
那么多CPU呢?

還是沒(méi)錢(qián)蓋大平層,這次更慘,因?yàn)?層小高層間隔比較遠(yuǎn),為了方便人們串門(mén),不得不在園區(qū)里面搞了班車(chē),用于跨樓通勤。因?yàn)榘嘬?chē)開(kāi)停需要時(shí)間,人們串門(mén)更加麻煩了。
借助這個(gè)比喻,我們應(yīng)該能夠得出結(jié)論,這三種方式提供48核的算力,延遲和帶寬是依次下降的。下降的幅度和需要進(jìn)行的work load有關(guān),不能一概而論。大家可以借助一個(gè)工具[1]來(lái)具體測(cè)量一下內(nèi)存的延遲:

在這個(gè)例子里面看出,本大樓的訪(fǎng)問(wèn)延遲比跨大樓的訪(fǎng)問(wèn)延遲低了一倍!
成本差距
既然大平層這么好,為什么還有人蓋小高層呢?存在都是合理的,當(dāng)然是成本高了。我在這篇文章中講述了為什么Die大了成本就高:
CPU制造的那些事之二:Die的大小和良品率
簡(jiǎn)單來(lái)說(shuō),晶圓在制造過(guò)程中總是避免不了缺陷,這些缺陷就像撒芝麻粒,分布在整個(gè)Wafer上:

如果考慮缺陷,Die的大小會(huì)嚴(yán)重影響良率:

上圖大家可以點(diǎn)開(kāi)看(圖比較大),其中不太清楚的紅色小點(diǎn)是晶圓的缺陷,在Die很大時(shí),有很大概率它的范圍內(nèi)會(huì)缺陷,而只要有缺陷該Die就報(bào)廢了(簡(jiǎn)化處理);在Die比較小的時(shí)候,它含有缺陷的可能性就大大降低了。如圖中,隨著Die的減小,良率從第一個(gè)的35.7%提高到了95.2%!我們舉個(gè)極端的例子,整個(gè)Wafer就一個(gè)Die,那么良率只有0%了,生產(chǎn)一個(gè)報(bào)廢一個(gè)。誰(shuí)還干這么傻的事!
這種成本增加不是線(xiàn)性的,而是指數(shù)性增加,具體的數(shù)字是廠(chǎng)商的核心機(jī)密,不為外人道。但總的來(lái)說(shuō),結(jié)合前面的例子來(lái)說(shuō)就是:
1個(gè)大Die成本 > 4個(gè)小Die+互聯(lián)線(xiàn)路總成本
那么方式2和方式3成本誰(shuí)高呢?實(shí)際上方式2節(jié)約了主板上大量布線(xiàn)和VR等成本,總成本更低,也是主板和服務(wù)器廠(chǎng)商喜聞樂(lè)見(jiàn)的形式;而方式3往往用于堆出更多的內(nèi)核和需要更多內(nèi)存的情況。
結(jié)論
相信讀到這里,同學(xué)們已經(jīng)有了答案,結(jié)論開(kāi)頭已經(jīng)說(shuō)明,就不再贅述了。多核CPU和多Die乃至多路CPU,對(duì)操作系統(tǒng)等來(lái)看,區(qū)別不大,BIOS都報(bào)告了同樣多的很多CPU供他們調(diào)度。區(qū)別主要在于性能上面,大Die多核性能最好,也最貴。多Die性能下降,但經(jīng)濟(jì)實(shí)惠。
最后要注意,這些性能區(qū)別有些是操作系統(tǒng)可以感知的,如通過(guò)NUMA等方式,操作系統(tǒng)可以具體做出優(yōu)化。但也有部分是操作系統(tǒng)不能夠知道的,只有通過(guò)各種真實(shí)的workload,用戶(hù)那里才會(huì)感覺(jué)有明顯的不同。