
並行架構的融合
並行機採用幾種不同的體系結構進行開發。在本節中,我們將討論不同的平行計算機體系結構及其融合的性質。
通訊架構
並行架構透過通訊架構增強了計算機架構的傳統概念。計算機架構定義了關鍵的抽象(例如使用者-系統邊界和硬體-軟體邊界)和組織結構,而通訊架構定義了基本的通訊和同步操作。它還解決了組織結構。

程式設計模型是頂層。應用程式是用程式設計模型編寫的。並行程式設計模型包括:
- 共享地址空間
- 訊息傳遞
- 資料並行程式設計
共享地址程式設計就像使用公告板一樣,使用者可以透過在特定位置釋出資訊與一個或多個個人進行通訊,該位置由所有其他個人共享。個體活動透過記錄誰在執行什麼任務來協調。
訊息傳遞就像電話或信件一樣,特定接收者從特定傳送者接收資訊。
資料並行程式設計是一種有組織的合作形式。在這裡,幾個人同時對資料集的不同元素執行操作並全域性共享資訊。
共享記憶體
共享記憶體多處理器是最重要的並行機類別之一。它在多程式工作負載上提供更好的吞吐量並支援並行程式。

在這種情況下,所有計算機系統都允許處理器和一組I/O控制器透過某些硬體互連訪問記憶體模組的集合。透過新增記憶體模組來增加記憶體容量,並透過向I/O控制器新增裝置或新增額外的I/O控制器來增加I/O容量。可以透過等待更快的處理器可用或新增更多處理器來增加處理能力。
所有資源都圍繞中央記憶體匯流排組織。透過匯流排訪問機制,任何處理器都可以訪問系統中的任何物理地址。由於所有處理器與所有記憶體位置的距離相等,因此所有處理器在記憶體位置上的訪問時間或延遲相同。這稱為對稱多處理器。
訊息傳遞架構
訊息傳遞架構也是一類重要的並行機。它提供處理器之間的通訊作為顯式的I/O操作。在這種情況下,通訊在I/O級別組合,而不是在記憶體系統中。
在訊息傳遞架構中,使用者通訊透過使用執行許多更低級別操作的作業系統或庫呼叫來執行,其中包括實際的通訊操作。結果,在程式設計模型和物理硬體級別的通訊操作之間存在距離。
傳送和接收是訊息傳遞系統中最常見的使用者級通訊操作。傳送指定本地資料緩衝區(要傳輸的資料)和接收遠端處理器。接收指定傳送程序和放置傳輸資料的本地資料緩衝區。在傳送操作中,將識別符號或標記附加到訊息,並且接收操作指定匹配規則,例如來自特定處理器的特定標記或來自任何處理器的任何標記。
傳送和匹配接收的組合完成記憶體到記憶體的複製。每一端都指定其本地資料地址和成對的同步事件。
融合
硬體和軟體的開發模糊了共享記憶體和訊息傳遞陣營之間的清晰界限。訊息傳遞和共享地址空間代表兩種不同的程式設計模型;每個模型都提供了一種透明的共享、同步和通訊範例。但是,基本的機器結構已經融合到一個共同的組織中。
資料並行處理
另一類重要的並行機被稱為——處理器陣列、資料並行架構和單指令多資料機。程式設計模型的主要特點是可以在大型規則資料結構(如陣列或矩陣)的每個元素上並行執行操作。
資料並行程式語言通常透過檢視每處理器一個程序的程序組的本地地址空間來強制執行,形成一個顯式的全域性空間。由於所有處理器都一起通訊並且全域性檢視所有操作,因此可以使用共享地址空間或訊息傳遞。
基本設計問題
僅開發程式設計模型並不能提高計算機的效率,僅開發硬體也無法做到這一點。但是,計算機體系結構的發展可以改變計算機的效能。我們可以透過關注程式如何使用機器以及提供了哪些基本技術來理解設計問題。
在本節中,我們將討論通訊抽象和程式設計模型的基本要求。
通訊抽象
通訊抽象是程式設計模型和系統實現之間的主要介面。它就像指令集一樣,提供了一個平臺,以便相同的程式可以在許多實現上正確執行。此級別的操作必須簡單。
通訊抽象就像硬體和軟體之間的契約,它允許彼此靈活地改進而不會影響工作。
程式設計模型要求
並行程式具有一個或多個線上程上操作資料的執行緒。並行程式設計模型定義了執行緒可以命名哪些資料、可以對命名資料執行哪些操作以及操作遵循哪個順序。
為了確認程式之間的依賴性得到執行,並行程式必須協調其執行緒的活動。