1. 程式人生 > >計算機的cup顆數、核數、執行緒數

計算機的cup顆數、核數、執行緒數

只要買過/賣過電腦,肯定聽過這幾個名詞;

1.cpu顆數:封裝在積體電路(IC)中的處理器個數,  普通計算機多為單顆cup。

2.cpu核數:是指物理上,也就是單顆CPU上存在著幾個核心。比如,雙核就是包括2個相對獨立的CPU核心單元組,四核就包含4個相對獨立的CPU核心單元組。

3.cup支援的執行緒數:是一種邏輯的概念,簡單地說,就是模擬出的CPU核心數。比如,可以通過一個CPU核心數模擬出2執行緒的CPU,也就是說,這個單核心的CPU被模擬成了一個類似雙核心CPU的功能。我們從工作管理員的效能標籤頁中看到的是兩個CPU。

    例如:Inte l賽揚G460是單核心,雙執行緒的CPU,Intel 酷睿i3 3220是雙核心 四執行緒,Intel 酷睿i7 4770K是四核心 八執行緒 ,Intel 酷睿i5 4570是四核心 四執行緒等等。 對於一顆CPU,執行緒數總是大於或等於核心數的。一個核心最少對應一個執行緒,但通過超執行緒技術,一個核心可以對應兩個執行緒,也就是說它可以同時執行兩個執行緒。

 注:CPU的執行緒數概念僅僅只針對Intel的CPU才有用,因為它是通過Intel超執行緒技術來實現的,最早應用在Pentium4上。如果沒有超執行緒技術,一個CPU核心對應一個執行緒。所以,對於AMD的CPU來說,只有核心數的概念,沒有執行緒數的概念。

4.另外區分一對概念。

多核處理器是在單個計算元件(單顆CPU)中,加入兩個或以上的獨立中央處理單元(簡稱核心)。這些核心可以分別獨立地執行程式指令,利用平行計算的能力加快程式的執行速度。

    多處理器:多顆cpu。

5. 還有一組概念:

       單核多CPU,那麼每一個CPU都需要有較為獨立的電路支援,有自己的Cache,而他們之間通過板上的匯流排進行通訊。(一致性問題)

假如在這樣的架構上,我們要跑一個多執行緒的程式(常見典型情況),不考慮超執行緒,那麼每一個執行緒就要跑在一個獨立的CPU上,執行緒間的所有協作都要走匯流排,而共享的資料更是有可能要在好幾個Cache裡同時存在。這樣的話,匯流排開銷相比較而言是很大的,怎麼辦?那麼多Cache,即使我們不心疼儲存能力的浪費,一致性怎麼保證?

多核單CPU那麼我們只需要一套晶片組,一套儲存,多核之間通過晶片內部匯流排進行通訊,共享使用記憶體。在這樣的架構上,如果我們跑一個多執行緒的程式,那麼執行緒間通訊將比上一種情形更快。
各自的 應用場景
        多個CPU常見於分散式系統,用於普通消費級市場的不多,多用於cluster,雲端計算平臺什麼的。多CPU架構最大的瓶頸就是I/O,尤其是各個CPU之間的通訊,低成本的都用100M乙太網做,稍微好一點的用1000M乙太網,再好的就用光纖等等,但無論如何速度和通量都比不上主機板的主線。所以多CPU適用於大計算量,對速度(時間)不(太)敏感的任務,比如一些工程建模,或者像SATI找外星人這種極端的,跑上幾千年都不著急的。而且多CPU架構更簡單清晰,可以用消費級產品簡單做數量堆疊,成本上有優勢。而多核單CPU則適合對通訊I/O速度要求較快的應用,(相同核數量下)成本上也高一些,好像只有在超級計算機裡會用到以萬為單位的核心數,普通消費級產品也就是到16核封頂了,因為成本控制的原因。

6. 檢視自己計算機的cpu顆數、核心數、執行緒數

        

   另外: 可以在cmd中輸入命令:systemifno 檢視其它硬體資訊

  特別說明: VM 軟體中建立的虛擬機器,顯示的處理器數量,指的是cpu的核數,顯示的cpu核心數量,指的是cpu支援的執行緒數