並行計算與分佈式計算原理

雲計算是一種新的技術趨勢,可以更好地利用 IT 基礎設施、服務和應用。雲計算採用了一種按使用付費的服務交付模式,用戶無需擁有自己的基礎設備、平臺或應用,只在需要時使用這些服務即可。串行和並行是兩種基本的主要計算模型。串行計算起源於 20 世紀 40 年代,比並行(分佈式)計算早了近十年。當時,架構、編譯器、應用程序和問題解決環境成爲計算發展的四個關鍵要素。

計算時代的興起離不開硬件架構的發展,最終產生了系統軟件,特別是在編譯器和操作系統領域,實現了系統管理和應用開發。應用和系統的研發是最令人感興趣的地方,當設計出問題解決環境並且可以爲工程師們提供便利時,這種研發就會被逐漸整合。這標誌着計算範式已經成熟併成爲主流。另外,計算時代的每個方面都經歷着三個階段; 研究和開發(R&D)、商業化、商品化。

並行計算與分佈式計算

雖然並行計算和分佈式計算存在細微的差別,但兩個概念往往可以互換。並行代表一類緊耦合系統,而分佈式則代表更廣泛的一類系統,包括緊耦合系統。

更準確地說,並行計算指的是將計算任務分配給幾個共享相同內存的處理器的計算模式。並行計算系統的架構通常表現爲組件的同構性;每個處理器都是相同類型的,且擁有相同的處理性能。共享內存有一個獨立的地址空間,可供所有處理器訪問。並行程序被分成若干執行單元並分配給不同的處理器,它們之間依靠共享內存相互通信。起初,只有具有共享同一物理內存的多處理器的架構纔可稱爲並行系統。隨着時間的推移,這些限制條件已經放寬,只要是基於共享內存這一概念的架構,無論是物理內存系統,還是由庫、特定的硬件和高效的網絡基礎設施組成的系統,都可以稱爲並行系統。例如,一個集羣中節點通過無限帶寬網絡連接,且配置了分佈式共享內存系統,就可以稱作並行系統。

分佈式計算是指那些將計算任務進行劃分,並在不同計算單元中同時執行的架構或系統,不論計算單元是不同節點上的處理器,或是同一計算機上的處理器,再或是同一處理器中的內核。因此,相比並行計算,分佈式計算包含的系統和應用程序的範圍更廣,是更爲通用的概念。儘管沒有規定,但分佈式這一術語通常意味着計算單元的位置不同,且這些單元在硬件和軟件功能上也可能各不相同。典型的分佈式系統實例是計算網格或互聯網計算系統,分佈式系統在全球範圍內集成各種架構、系統和應用。

並行處理硬件架構

並行處理的核心元素是 CPU。根據可以同時處理的指令流和數據流的數量,計算機系統可以分爲以下四類:

●單指令流單數據流(SISD)系統。

●單指令流多數據流(SIMD)系統。

● 多指令流單數據流(MISD)系統。

●多指令流多數據流(MIMD)系統。 

1、SISD 系統

SISD 計算系統是一個能在單數據流上執行單指令的單處理器機器。在 SISD 系統中,機器指令按順序進行處理,因此採用這種模式的計算機通常稱爲序列計算機。大多數傳統計算機採用 SISD 模型構建。所有需要處理的指令和數據必須存放在主存儲器上。SISD 模型中,處理單元的速度受到計算機內部信息傳遞速率的限制。典型 SISD 系統有 32 IBM PC、Macintosh 和工作站。

2. SIMD 系統

SIMD 計算系統是可以在不同的數據流上操作而在多 CPU 上執行同一指令的多處理器機器。由於包括大量的向量和矩陣運算,所以基於 SIMD 模型的機器適用於科學計算。例如,語句 Ci= Ai×Bi 可以傳遞給所有處理單元(PE),向量 A 和 B 中有組織的數據元素可以分成多組(N 組對應 N 個 PE 系統),一個 PE 可以處理一個數據集。

3、MISD 系統

MISD 計算系統是能在同一數據集上操作而在不同 PE 執行不同指令的多處理器機器。例如,語句 33y= sin(x) + cos(x) + tan(x) 在同一數據集上執行不同的操作。使用 MISD 模型構建的機器不適於大多數應用程序,已經設計的幾臺機器沒有一個可以商業化,它們更像是智能測試而非實用的配置。

** 4、MIMD 系統**

MIMD 計算系統是能在多個數據集上執行多個指令的多處理器機器。MIMD 模型中的每一個 PE 都有單獨的指令和數據流,因此使用該模型的機器適用於所有類型的應用程序。與 SIMD 和 MISD 模型不同,MIMD 機器中的 PE 是異步工作的。

MIMD 機器按照 PE 與主存耦合方式不同大致可分爲共享內存 MIMD 和分佈式內存 MIMD。

(1)共享內存 MIMD 計算機

在共享內存 MIMD 模型中,所有執行單元都連接到一個可供訪問的單一全局內存上。基於這個模型的系統也稱爲緊耦合多處理器系統。模型中 PE 之間通過共享內存進行通信,一個 PE 修改存儲在全局內存中的數據,對所有其他 PE 都是可見的。共享內存 MIMD 模型的典型系統主要有 Silicon Graphics 計算機和 Sun/IBM SMP(對稱多處理器)。

(2)分佈式內存 MIMD 計算機

在分佈式內存 MIMD 模型中,所有 PE 都有一個本地內存。基於這種模型的系統也稱爲松耦合多處理器系統。模型中的 PE 之間通過內部互聯網絡進行通信(進程間通信通道 / IPC)。PE 之間的網絡連接可配置成樹狀、網狀、塊狀等。每一個 PE 進行異步操作,如果任務之間需要通信 / 同步,那麼可以通過互相交換信息來實現。

共享內存 MIMD 架構與分佈式內存 MIMD 模型相比,前者更易編程,但對故障的容忍度更低且更難擴展。共享內存 MIMD 中的故障會影響整個系統,但是分佈式模型則不然,分佈式模型的每一個 PE 都可以輕易地實現隔離。此外,共享內存 MIMD 架構難以擴展,因爲增加更多的 PE 會導致內存爭用。在分佈式內存 MIMD 模型中不會出現這種情況,因爲每一個 PE 都有自己的內存。

分佈式系統架構和組件

分佈式系統是從硬件到軟件的整個計算層次模型中多個組件交互的結果。許多組件協同工作,爲用戶呈現出一個單一的整體系統。下圖描述了提供分佈式系統服務的不同層的概況。

在底層,計算機和網絡硬件構成了物理基礎設施,這些組件由操作系統直接管理。操作系統負責提供基礎服務,用於進程間通信、進程調度和管理、文件系統和本地設備的資源管理。將網絡和計算機這兩層合併爲一個平臺,在這個平臺上配置特定軟件,便可將聯網計算機組成一個分佈式系統。

把公認的標準應用到操作系統層甚至硬件網絡層中,利用異構組件可以很容易地構造一個統一的集成系統。例如,不同設備之間的網絡連接由協議進行控制,實現設備無縫交互。在操作系統層,進程間通信服務在標準化通信協議下執行,例如 TCP/IP 協議、UDP 協議等。

中間件層利用這些服務構建了一個開發和部署分佈式應用程序的統一環境。這一層支持分佈式系統的編程範式。依靠操作系統提供的服務,中間件層可開發協議、數據格式以及用於開發分佈式應用程序的編程語言或框架。這些爲分佈式應用程序開發人員提供了統一接口,完全獨立於底層操作系統且屏蔽了底層的異構性。

分佈式系統層次架構的頂層是利用中間件設計和開發的應用或服務。設計應用層可實現多個目的,並且具有通過本地或 Web 瀏覽器可訪問的圖形用戶接口(GUI)。例如,在雲計算系統中,不論是爲終端用戶提供分佈式應用接口,還是爲構建分佈式系統提供平臺服務,都強烈推薦採用 Web 技術。laaS 的供應商給出了很好的實例,如亞馬遜 Web 服務(AWS)便於創建虛擬機、將虛擬機組織成集羣以及在集羣中部署應用和系統。圖 2-11 說明了分佈式系統的一般參考架構如何應用於雲計算系統。

硬件和操作系統層組成了一個或多個數據中心的最基本結構,其中服務器通過高速網絡部署和連接在一起。這些硬件由操作系統管理,操作系統提供了基本的管理計算機和網絡的能力。核心業務邏輯在管理虛擬化層的中間件上實現,虛擬化部署在物理機上,以實現最大化資源利用。並目提供可定製的應用運行環培。按照爲客戶提供的服務類利。中間件爲應用開發人員提供了不同的工具。這些工具通過 Web 2.0 兼容接口提供了—系列服務,包括電擬機創建、應用程序開發和運行環境部署。

今天的內容分享完畢,深入技術細節及解決方案,請參考:

詳解 DPDK 和 SPDK 技術知識點

高性能計算技術、方案和行業全解 (第二版)

InfiniBand 架構和技術實戰總結 (第二版)

RDMA 原理分析、對比和技術實現解析

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/R_thW--TFbLYCVa-4gmz2g