多處理器的基本概念
1. 計算機體系結構
- 分類依據:根據指令流和數據流的數量關系,計算機體系結構可分為四種類型:SISD、SIMD、MISD、MIMD。
(1)SISD 單指令流單數據流
- 定義:任意時刻計算機只能執行單一指令操作單一數據。
- 特點:
- 傳統桌面計算機處理文本編輯或簡單圖形操作時采用。
- 指令執行過程是串行的。
- 類比:如同單個廚師按食譜單獨完成整個菜肴的制作過程。
(2)SIMD 單指令流多數據流
- 定義:一條指令同時操作多個數據
- 適用場景:
- 重復相同操作(如圖像處理中的像素操作)
- 現代 GPU 渲染 3D 圖形時處理頂點和像素
- 實現方式:通過指令控制部件指揮多個處理單元并行操作
- 類比:單個廚師指揮多個助手同時完成食譜不同部分的食材處理
(3)MISD 多指令流單數據流
- 定義:多條指令流同時操作同一數據
- 現狀:
- 難以實現且不必要
- 實際中不存在此類架構
- 類比:多個廚師對同一份食材進行不同處理(如一個切菜一個腌制)
(4)MIMD 多指令流多數據流
- 定義:多個處理器同時執行不同指令序列處理不同數據
- 應用場景:
- 大型服務器處理多用戶請求
- Web 服務器和數據庫服務器
- 特點:各處理器獨立執行指令流處理各自數據流
- 類比:多個廚師各自獨立按不同食譜做不同的菜
(5)總結
- 核心區別:
- SISD:單指令單數據(串行處理)
- SIMD:單指令多數據(向量化處理)
- MISD:多指令單數據(理論存在)
- MIMD:多指令多數據(完全并行)
- 效率對比:SIMD 相比 SISD 可并行處理相同指令,效率更高
(6)向量處理器
- 本質:SIMD 的變體,專為復雜數學運算設計
- 特點:
- 處理數據量級遠大于普通 SIMD
- 使用向量寄存器同時處理大量數據
- 工作方式:一次性對向量中所有元素執行相同操作
- 類比:廚師用超大炒鍋同時翻炒所有食材
2. 線程
- 定義:操作系統中的基本執行單位
- 與進程關系:
- 進程包含多個線程
- 每個線程可執行多條指令
- 注意:詳細區別將在操作系統課程中講解
3. 細粒度多線程
- 實現方式:處理器每個時鐘周期輪換不同線程
- 優勢:避免因單個線程阻塞導致資源閑置
- 調度機制:按固定時間片輪轉執行各線程指令
4. 粗粒度多線程
- 實現方式:當前線程阻塞或完成后才切換
- 切換條件:等待 I/O 操作、長時間計算等資源延遲
- 特點:相比細粒度切換頻率低,上下文切換開銷小
5. 同時多線程
- 實現基礎:多核處理器
- 特點:多個線程指令在同一時間內并行執行
- 資源利用:通過處理器內部資源共享和復用實現
6. 多核處理器
- 定義:單個 CPU 中集成多個處理單元(核)
- 特點:
- 各核有獨立執行單元和 cache
- 共享主存資源
- 現代應用:當前計算機普遍采用多核架構
7. 共享內存多處理器
- 別名:對稱多處理器 (SMP)
- 基本特征:
- 多個相同處理器共享主存和 I/O 設備
- 通過高速總線互聯
- 共享單一操作系統
(1)統一存儲訪問 UMA 多處理器
- 內存訪問:
- 所有處理器平等訪問全部內存單元
- 訪問時間基本一致
- 緩存問題:需特別注意各處理器中的 cache 的一致性
(2)非統一存儲訪問 NUMA 多處理器
- 內存分配:主存分割給不同處理器
- 訪問特點:
- 訪問本地內存更快(自身附近)
- 訪問遠程內存較慢(遠程內存)
- 適用場景:需要大規模并行處理的系統