CPU、物理核、邏輯核概念與關系
文章將解答如下問題
- 一個物理核可以分成兩個邏輯核,是嗎?
- 我們常說的電腦是8核的,服務器是64核的,指的是邏輯核,還是物理核?
- 怎么查看Linux服務器的物理核、邏輯核數?
基礎概念
CPU(Central Processing Unit): 中央處理單元,CPU != 物理核,更 != 邏輯核。
物理核(physical core/processor): 可以看的到的,真實的cpu核,有獨立的電路元件以及L1,L2緩存,可以獨立地執行指令。
邏輯核(logical core/processor): 在同一個物理核內,邏輯層面的核。(比喻,像動畫片一樣,我們看到的“動畫”,其實是一幀一幀靜態的畫面,24幀/s連起來就騙過了人類的眼睛,看起來像動起來一樣。邏輯核也一樣,物理核通過高速運算,讓應用程序以為有兩個cpu在運算)。
超線程(Hyper-threading, HT):超線程可以在一個邏輯核等待指令執行的間隔(等待從cache或內存中獲取下一條指令),把時間片分配到另一個邏輯核。高速在這兩個邏輯核之間切換,讓應用程序感知不到這個間隔,誤認為自己是獨占了一個核。
關系: 一個CPU可以有多個物理核。如果開啟了超線程,一個物理核可以分成n個邏輯核,n為超線程的數量。
Linux查看cpu信息
cat /proc/cpuinfo
...
processor : 23 // 邏輯核編號
cpu MHz : 2299.863 // CPU主頻
cache size : 15360 KB // L2 cache大小
physical id : 1 // CPU編號
siblings : 12 // 一顆CPU中有多少邏輯核
core id : 5 // CPU的物理核編號
cpu cores : 6 // 一顆CPU中有多少物理核
...
針對于上邊的這個服務器,我們說,它有2顆CPU,每顆CPU中有6個物理核,CPU開啟了超線程,每顆CPU中有12個邏輯核。所以,這臺服務器共有12個物理核,24個邏輯核。我們通常意義上說的24核,是指邏輯核是24個。
延伸閱讀
CPU架構的簡要演進,為什么會有雙核、多核CPU,可以看這篇文章 http://www.daniloaz.com/en/differences-between-physical-cpu-vs-logical-cpu-vs-core-vs-thread-vs-socket/