中央處理器 Central Processing Unit (CPU) 的別名 [1]
- 主處理器 main processor
- 處理器 processor
CPU 的功能[1:1]
- 主要是解釋計算機指令以及處理計算機軟體中的資料 (順嘴提一下它的兄弟: GPU[2] --- 主要用于圖形處理和大量并行計算; FPU[3] --- 主要用于執行浮點數運算, 它可能集成在 CPU 中)
CPU 主要組成[1:2]
- 運算器
- 算術邏輯單元 Arithmetic Logic Unit (ALU), 用于進行二進制 (補碼) 的算術運算
- 累加器
- 狀態暫存器
- 通用暫存器組
- 控制器
- 控制單元 Control Unit (CU), 用于解釋存盤器中的指令, 并發出各種操作命令來執行指令
- 程式計數器
- 指令暫存器
- 指令譯碼器
- 時序產生器
- 操作控制器
CPU Die[4]
- 它是以半導體材料 (通常是硅) 制作的一塊集成電路, 在其上可以包含任意數量的 CPU 內核
CPU 核心, 也稱內核[5]
- 指在 CPU Die 上的獨立處理單元, 它可以獨立的執行計算機指令 (如果一個 CPU Die 包含多個核心, 那么它可以并行的執行指令, 加快程式的運行速度)
多核 CPU 與多 CPU[5:1]
- 多核處理器 (多核 CPU)
- 一 Die 多核, 指在單一集成電路 (Die) 中封裝多個獨立的處理器 (成本最高)
- 多 Die 多核 (一個 Die 上有多個核心) CPU, 但 Die 與Die 之間通過內部總線連接, 最終封裝成一個 CPU Package (成本最低)
- 多處理器 (多 CPU) - 指在不同的集成電路 (Die) 上封裝的獨立的處理器
- 多 Die 多核 (一個 Die 上有多個核心) CPU, 但 Die 與Die 之間通過外部 (系統) 總線連接, 最終封裝成多個 CPU Package (有幾個 Die 就可以有幾個 CPU Package) (成本較低)
如果還沒懂可以參考知乎 多核 CPU 和多個 CPU 有何區別? 的回答
執行緒[6]
- 執行緒是作業系統能夠進行運算調度的最小單位. 大部分情況下, 它被包含在行程中, 是行程中的實際運作單位
- 同一行程中的多條執行緒將共享該行程中的全部系統資源, 但同一行程中的多個執行緒有各自的呼叫堆疊 call stack, 自己的暫存器環境 register context,自己的執行緒本地存盤 thread-local storage
- 一個行程可以有很多執行緒, 每條執行緒并行執行不同的任務. 每一個執行緒都代表一個行程內的一個獨立執行背景關系
- 多執行緒之間切換開銷小且通信 (交換資源) 效率較高[7][8]
行程[9]
- 行程是作業系統進行資源分配和調度的基本單位, 是執行中的程式, 也是執行緒的容器
- 程式本身知識指令, 資料及其組織形式的描述, 行程才是程式 (那些指令和資料) 真正運行的實體 (物體)
- 若干行程有可能與同一個程式相關系 (執行在不同的資料集上就會成為不同的行程實體), 也即行程與程式是 n:1 的關系
- 多行程之間切換開銷大且通信 (交換資源) 效率較低[7:1][8:1]
超執行緒 Hyper-Threading (HT)[10]
- 核心在運行指令時, 并不能完全利用所有的資源, 為了有效利用這些空閑資源, 干脆再增加一些資源來運行第二個執行緒, 讓閑置的資源可以執行另一個執行緒. 因此, (增加了資源的) 核心內部可以復制足夠兩個邏輯執行緒同時運行的資源. 這樣, 一個核心在單位時間內就可以模擬處理兩個執行緒的作業
- 目的: 提高處理器吞吐量以及執行緒化軟體的整體性能
多執行緒[11][12]
- 是指從軟體或者硬體上實作多個執行緒并發執行的技術. 具有多執行緒能力的計算機如果硬體支持多執行緒, 則能夠實作多個執行緒并行執行, 進而提升整體的處理性能
多行程[13][14]
- 是指從軟體或硬體上實作多個行程并發執行的技術, 具有多核 CPU 或多 CPU 的計算機能夠實作多個行程并行執行
多執行緒與多行程[15][16]
任務可以分為計算密集型和IO密集型,假設我們現在使用一個行程來完成這個任務,對計算密集型任務,可以使用【核心數】個執行緒,就可以占滿cpu資源,進而可以充分利用cpu,如果再多,就會造成額外的開銷;對于IO密集型任務(涉及到網路、磁盤IO的任務都是IO密集型任務),執行緒由于被IO阻塞,如果仍然用【核心數】個執行緒,cpu是跑不滿的,于是可以使用更多個執行緒來提高cpu使用率
最后以 多執行緒與多行程的思考 中的一張圖片結尾:

中央處理器 ?? ?? ??
圖形處理器) ??
浮點運算器 ??
CPU 芯片 ??
核心 ?? ??
執行緒 ??
行程切換和執行緒切換? ?? ??
執行緒通信與行程通信的區別 ?? ??
行程 ??
超執行緒 ??
多執行緒 ??
關于多執行緒編程和CPU多核多執行緒的關系? - 朱元的回答 ??
Multiprocessing ??
Computer multitasking ??
多執行緒,多行程,多核總結 ??
多執行緒與多行程的思考 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/2158.html
標籤:其他
上一篇:JS-DOM事件
