
系統與記憶體架構
在設計程式或併發系統時,需要考慮不同的系統和記憶體架構風格。這非常必要,因為一種系統和記憶體風格可能適用於一項任務,但對另一項任務卻可能容易出錯。
支援併發的計算機系統架構
Michael Flynn 在 1972 年提出了對不同風格的計算機系統架構進行分類的分類法。該分類法定義了四種不同的風格:
- 單指令流單資料流 (SISD)
- 單指令流多資料流 (SIMD)
- 多指令流單資料流 (MISD)
- 多指令流多資料流 (MIMD)。
單指令流單資料流 (SISD)
顧名思義,這種系統將擁有一個順序的輸入資料流和一個執行該資料流的單個處理單元。它們就像具有平行計算架構的單處理器系統。以下是 SISD 的架構:

SISD 的優點
SISD 架構的優點如下:
- 它需要的功率較低。
- 不存在多個核心之間複雜通訊協議的問題。
SISD 的缺點
SISD 架構的缺點如下:
- SISD 架構的速度受到限制,就像單核處理器一樣。
- 它不適合大型應用程式。
單指令流多資料流 (SIMD)
顧名思義,這種系統將擁有多個輸入資料流和多個處理單元,這些單元可以在任何給定時間對單個指令進行操作。它們就像具有平行計算架構的多處理器系統。以下是 SIMD 的架構:

SIMD 的最佳示例是顯示卡。這些卡具有數百個獨立的處理單元。如果我們談論 SISD 和 SIMD 之間的計算差異,那麼對於新增陣列[5, 15, 20]和[15, 25, 10],SISD 架構必須執行三個不同的加法運算。另一方面,使用 SIMD 架構,我們可以在單個加法運算中新增它們。
SIMD 的優點
SIMD 架構的優點如下:
可以使用單個指令對多個元素執行相同的操作。
可以透過增加處理器核心數量來提高系統的吞吐量。
處理速度高於 SISD 架構。
SIMD 的缺點
SIMD 架構的缺點如下:
- 處理器多個核心之間存在複雜的通訊。
- 成本高於 SISD 架構。
多指令單資料 (MISD) 流
具有 MISD 流的系統擁有多個處理單元,它們透過對同一資料集執行不同的指令來執行不同的操作。以下是 MISD 的架構:

目前尚無 MISD 架構的商業化代表。
多指令多資料 (MIMD) 流
在使用 MIMD 架構的系統中,多處理器系統中的每個處理器都可以獨立地對不同資料集的不同指令集進行並行執行。這與 SIMD 架構相反,在 SIMD 架構中,對多個數據集執行單個操作。以下是 MIMD 的架構:

普通的多處理器使用 MIMD 架構。這些架構主要用於許多應用領域,例如計算機輔助設計/計算機輔助製造、模擬、建模、通訊交換機等。
支援併發的記憶體架構
在處理併發和並行等概念時,始終需要加快程式速度。計算機設計師找到的一個解決方案是建立共享記憶體多計算機,即具有單個物理地址空間的計算機,該地址空間由處理器擁有的所有核心訪問。在這種情況下,可能存在許多不同的架構風格,但以下三種重要的架構風格:
UMA(統一記憶體訪問)
在此模型中,所有處理器都統一共享物理記憶體。所有處理器對所有記憶體字的訪問時間相同。每個處理器可能都有一個私有快取記憶體。外圍裝置遵循一組規則。
當所有處理器都能平等地訪問所有外圍裝置時,該系統稱為對稱多處理器。當只有一個或幾個處理器可以訪問外圍裝置時,該系統稱為非對稱多處理器。

非統一記憶體訪問 (NUMA)
在 NUMA 多處理器模型中,訪問時間隨記憶體字的位置而變化。在這裡,共享記憶體在所有處理器之間物理分佈,稱為本地記憶體。所有本地記憶體的集合構成一個全域性地址空間,所有處理器都可以訪問該空間。

僅快取記憶體架構 (COMA)
COMA 模型是 NUMA 模型的特殊版本。在這裡,所有分散式主記憶體都被轉換為快取記憶體。
