什麼是SMT
SMT(Simultaneous Multithreading),中文稱為「超線程」,是一種讓一顆 CPU 核心能同時執行多條指令序列(執行緒)的技術。它的目標是提高處理器的資源利用率與整體運算效率。
傳統上,一顆 CPU 核心在執行一條執行緒時,當遇到等待記憶體或 I/O 資料的情況時,就會閒置一段時間。而 SMT 的做法是:在這段「閒置時間」中,插入另一條執行緒的工作,讓同一顆核心的硬體資源能被更充分地利用。
- 🧠 無 SMT: 1 核心 = 1 執行緒,一次只能處理一條指令序列。
- ⚡ 有 SMT: 1 核心 = 2 執行緒,核心可以在等待階段執行另一條執行緒,提升效率。
舉例來說,4 核心處理器 在開啟 SMT 之後,作業系統會將它視為 8 執行緒 來排程任務:
| 配置 | 實體核心數 | 執行緒數 | 大致效能 |
|---|---|---|---|
| ❌ 無 SMT | 4 | 4 | 100%(基準) |
| ✅ 有 SMT | 4 | 8 | 約 120%~130%(依應用不同) |
要注意的是:SMT 並不會讓效能翻倍。雖然邏輯上多了執行緒,但底層實體運算單元還是同一組。效能提升幅度依工作負載而定,通常落在 20~30% 左右。
🌐 沒有 SMT 的情況(只有物理核心)
如果處理器沒有啟用 SMT,就等於每一顆核心一次只能處理一個任務:
- 當某個任務在等待記憶體或資料時,該核心只能閒置,不能幫別的任務。
- 整體 CPU 利用率較低,對多工處理的支援能力也較弱。
- 例如:4 核心、4 執行緒的 CPU 同時面對多個任務時,只能排隊輪流處理。
而有 SMT 的情況下,這些「閒置空檔」就能被另一條執行緒插隊利用,提升整體效率。
🪄 生活化的比喻:一張桌子兩個人
想像每一顆 CPU 核心就是一張工作桌。
- 👤 無 SMT: 一張桌子只坐一個人,他需要不停拿資料、計算、等待。等待資料時,桌子空著,沒人用。
- 👥 有 SMT: 老闆安排兩個人共用這張桌子。一個人在等資料的時候,另一個人就馬上接手桌上的工具繼續工作,整張桌子的使用率大幅提升。
不過桌子還是原本那張,兩個人也不能同時用桌上的工具;只能「交錯使用」。所以這種方式不會翻倍效率,但整體工作量確實會變多。
✅ 一句話總結: SMT 就像讓兩個人共用一張桌子,輪流使用空檔時間,讓桌子幾乎不再閒著,整體效率自然就提升了。
⚠️ SMT 的限制與注意事項
- 並非所有程式都能從 SMT 受益,尤其是高度佔滿核心的運算任務。
- 某些對延遲敏感的工作(例如遊戲、即時渲染),有時關閉 SMT 反而更穩定。
- 但在伺服器或多工作業環境中,SMT 幾乎都能帶來穩定的效能提升。
📝 關於「核心數」與「執行緒數」的澄清
在介紹 SMT 時,常常會看到像「2 核 4 執行緒」這樣的標示。有些人會誤以為這代表處理器「變成了 4 核心」,但事實並非如此。
- 實體核心(Physical Core): 真正具備完整運算單元的核心,每一顆都能獨立執行任務。
- 執行緒(Thread): 作業系統看到的「邏輯核心」,包含實體核心與 SMT 技術提供的虛擬執行單元。
以「2 核 4 執行緒」為例:
- 實體上仍然只有 2 顆物理核心。
- 開啟 SMT 後,模擬出 4 條執行緒,讓作業系統以為有 4 顆邏輯核心可排程。
這並不代表「偷偷多給你 2 顆核心」,而是讓原本的 2 顆核心更有效率地被利用。所以效能的提升取決於實際應用場景,並不會等於 4 顆核心的效能。
同樣地,如果某些廠商在銷售時標示「4 vCPU」,其中可能包含的是 2 物理核心 + SMT 技術產生的 4 執行緒,這在技術上是合理的,但效能上與真正的 4 物理核心仍有明顯差距。重點是要了解 vCPU ≠ 實體核心,而非說這樣的標示就是欺騙。