電腦的核心 (Core) 和執行緒 (Thread)

核心 (Core)、多核心 (Multi-Core)

核心就是封裝在積體電路 (IC) 中的處理器。而多核心就是多核處理器 (Multi-core processor),是物理上實體存在的。例如:2 核心就是有 2 個獨立實體處理器,可以分別獨立地執行程式或執行緒 (thread) 指令,利用平行計算的能力加快程式的執行速度。

參考資料:
多核心處理器

執行緒 (Thread)、多執行緒 (Multithreading)

執行緒 (thread) 是作業系統能夠進行運算排程最小單位多執行緒 (multithreading),是指從硬體或者軟體上實現多個執行緒並行執行的技術。

硬體上

「一般消費者」買電腦時看到的執行緒數量 (# of Threads) 其實是指:同一時間電腦能執行的執行緒數量。

由於 intel 研發的一種叫做超執行緒 (HT, Hyper-Threading) 的技術,在 CPU 內部僅複製必要的資源,讓兩個執行緒可以在一單位時間內同時執行,就好像真的有實體雙核心,能進行雙執行緒運作。

像是下圖中很明顯的就是:i7-10710U 有 6 核心 12 執行緒處理器、i7-1065G7 有 4 核心 8 執行緒處理器,都是有 HT 技術。i7-9700T 則是 8 核心 8 執行緒處理器,沒有 HT 技術。

通常超執行緒技術必須配合「有對多執行緒進行優化的軟體或程式」,才能真正利用到 HT 的資源。

參考資料:
超執行緒
Intel® Core™ i7 Processors

軟體上

一般一個執行中的軟體或應用程式,可以是一個或多個程序;一個程序裡面會有一個或多個執行緒,等待被執行。例如:開啟 Chrome 瀏覽器就是產生多個程序,而每個程序中,會需要許多執行緒來完成工作。

即便處理器只能執行一個執行緒,作業系統也可以通過快速的在不同執行緒之間進行切換,由於時間間隔很小,來給使用者造成一種多個執行緒同時執行的假象。這樣的程式執行機制被稱為軟體多執行緒。

而「程序」會有唯一的 ID 作為識別,又叫做 Process ID (PID)。A 程序和 B 程序之間的資料儲存空間無法共享。每個程序都可用同步 (循序)非同步 (平行) 的方式獨立執行。

而位在同一個程序下的「執行緒」之間,有可以共享的資料儲存空間,也可以有私有的資源。執行緒有自己的 call stack,裡面的 stack 可以被依照順序平行執行。例如:JavaScript 是一個同步的單執行緒語言,但是它會用額外的方式處理非同步事件。

參考資料:
程序、行程(process)