當前位置: 華文問答 > 數碼

多核 CPU 和多個 CPU 有何區別?

2013-08-31數碼

架構可以千變萬化,面向需求、綜合考量是王道。
來,簡單舉個例子。假設現在我們要設計一台電腦的處理器部份的架構。現在擺在我們面前的有兩種選擇,多個單核CPU和單個多核CPU。

如果我們選擇多個單核CPU,那麽每一個CPU都需要有較為獨立的電路支持,有自己的Cache,而他們之間透過板上的總線進行通訊。假如在這樣的架構上,我們要跑一個多執行緒的程式(常見典型情況),不考慮超執行緒,那麽每一個執行緒就要跑在一個獨立的CPU上,執行緒間的所有協作都要走總線,而共享的數據更是有可能要在好幾個Cache裏同時存在。這樣的話,總線開銷相比較而言是很大的,怎麽辦?那麽多Cache,即使我們不心疼儲存能力的浪費,一致性怎麽保證?如果真正做出來,還要在主機板上占多塊地盤,給布局布線帶來更大的挑戰,怎麽搞定?

如果我們選擇多核單CPU,那麽我們只需要一套芯片組,一套儲存,多核之間透過芯片內部總線進行通訊,共享使用記憶體。在這樣的架構上,如果我們跑一個多執行緒的程式,那麽執行緒間通訊將比上一種情形更快。如果最終實作出來,對板上空間的占用較小,布局布線的壓力也較小。

看起來,多核單CPU完勝嘛。可是,如果需要同時跑多個大程式怎麽辦?每個程式都需要用很多記憶體怎麽辦?假設倆大程式,每一個程式都好多執行緒還幾乎用滿cache,它們分時使用CPU,那在程式間切換的時候,光指令和數據的替換就要費多大事情啊!

所以呢,大部份一般咱們使用的電腦,都是單CPU多核的,比如我們配的Dell T3600,有一顆Intel Xeon E5-1650,6核,虛擬為12個邏輯核心。少部份高端人士需要更強的多工並行能力,就會搞一個多顆多核CPU的機子,Mac Pro就可以有兩顆。高端的伺服器一般都是多顆多核,甚至還高頻率。