并行計算與分布式計算原理
云計算是一種新的技術(shù)趨勢,可以更好地利用IT基礎(chǔ)設(shè)施、服務(wù)和應(yīng)用。云計算采用了一種按使用付費的服務(wù)交付模式,用戶無需擁有自己的基礎(chǔ)設(shè)備、平臺或應(yīng)用,只在需要時使用這些服務(wù)即可。串行和并行是兩種基本的主要計算模型。串行計算起源于 20世紀(jì) 40年代,比并行(分布式)計算早了近十年。當(dāng)時,架構(gòu)、編譯器、應(yīng)用程序和問題解決環(huán)境成為計算發(fā)展的四個關(guān)鍵要素。
計算時代的興起離不開硬件架構(gòu)的發(fā)展,最終產(chǎn)生了系統(tǒng)軟件,特別是在編譯器和操作系統(tǒng)領(lǐng)域,實現(xiàn)了系統(tǒng)管理和應(yīng)用開發(fā)。應(yīng)用和系統(tǒng)的研發(fā)是最令人感興趣的地方,當(dāng)設(shè)計出問題解決環(huán)境并且可以為工程師們提供便利時,這種研發(fā)就會被逐漸整合。這標(biāo)志著計算范式已經(jīng)成熟并成為主流。另外,計算時代的每個方面都經(jīng)歷著三個階段;研究和開發(fā)(R&D)、商業(yè)化、商品化。
并行計算與分布式計算
雖然并行計算和分布式計算存在細(xì)微的差別,但兩個概念往往可以互換。并行代表一類緊耦合系統(tǒng),而分布式則代表更廣泛的一類系統(tǒng),包括緊耦合系統(tǒng)。
更準(zhǔn)確地說,并行計算指的是將計算任務(wù)分配給幾個共享相同內(nèi)存的處理器的計算模式。并行計算系統(tǒng)的架構(gòu)通常表現(xiàn)為組件的同構(gòu)性;每個處理器都是相同類型的,且擁有相同的處理性能。共享內(nèi)存有一個獨立的地址空間,可供所有處理器訪問。并行程序被分成若干執(zhí)行單元并分配給不同的處理器,它們之間依靠共享內(nèi)存相互通信。起初,只有具有共享同一物理內(nèi)存的多處理器的架構(gòu)才可稱為并行系統(tǒng)。隨著時間的推移,這些限制條件已經(jīng)放寬,只要是基于共享內(nèi)存這一概念的架構(gòu),無論是物理內(nèi)存系統(tǒng),還是由庫、特定的硬件和高效的網(wǎng)絡(luò)基礎(chǔ)設(shè)施組成的系統(tǒng),都可以稱為并行系統(tǒng)。例如,一個集群中節(jié)點通過無限帶寬網(wǎng)絡(luò)連接,且配置了分布式共享內(nèi)存系統(tǒng),就可以稱作并行系統(tǒng)。
分布式計算是指那些將計算任務(wù)進(jìn)行劃分,并在不同計算單元中同時執(zhí)行的架構(gòu)或系統(tǒng),不論計算單元是不同節(jié)點上的處理器,或是同一計算機(jī)上的處理器,再或是同一處理器中的內(nèi)核。因此,相比并行計算,分布式計算包含的系統(tǒng)和應(yīng)用程序的范圍更廣,是更為通用的概念。盡管沒有規(guī)定,但分布式這一術(shù)語通常意味著計算單元的位置不同,且這些單元在硬件和軟件功能上也可能各不相同。典型的分布式系統(tǒng)實例是計算網(wǎng)格或互聯(lián)網(wǎng)計算系統(tǒng),分布式系統(tǒng)在全球范圍內(nèi)集成各種架構(gòu)、系統(tǒng)和應(yīng)用。
并行處理硬件架構(gòu)
并行處理的核心元素是 CPU。根據(jù)可以同時處理的指令流和數(shù)據(jù)流的數(shù)量,計算機(jī)系統(tǒng)可以分為以下四類:
●單指令流單數(shù)據(jù)流(SISD)系統(tǒng)。
●單指令流多數(shù)據(jù)流(SIMD)系統(tǒng)。
● 多指令流單數(shù)據(jù)流(MISD)系統(tǒng)。
●多指令流多數(shù)據(jù)流(MIMD)系統(tǒng)。
1、SISD系統(tǒng)
SISD 計算系統(tǒng)是一個能在單數(shù)據(jù)流上執(zhí)行單指令的單處理器機(jī)器。在 SISD系統(tǒng)中,機(jī)器指令按順序進(jìn)行處理,因此采用這種模式的計算機(jī)通常稱為序列計算機(jī)。大多數(shù)傳統(tǒng)計算機(jī)采用SISD模型構(gòu)建。所有需要處理的指令和數(shù)據(jù)必須存放在主存儲器上。SISD模型中,處理單元的速度受到計算機(jī)內(nèi)部信息傳遞速率的限制。典型 SISD系統(tǒng)有32 IBM PC、Macintosh 和工作站。
2. SIMD系統(tǒng)
SIMD 計算系統(tǒng)是可以在不同的數(shù)據(jù)流上操作而在多 CPU 上執(zhí)行同一指令的多處理器機(jī)器。由于包括大量的向量和矩陣運算,所以基于 SIMD 模型的機(jī)器適用于科學(xué)計算。例如,語句Ci= Ai×Bi可以傳遞給所有處理單元(PE),向量A和 B中有組織的數(shù)據(jù)元素可以分成多組(N組對應(yīng)N個PE 系統(tǒng)),一個PE可以處理一個數(shù)據(jù)集。
3、MISD 系統(tǒng)
MISD 計算系統(tǒng)是能在同一數(shù)據(jù)集上操作而在不同 PE 執(zhí)行不同指令的多處理器機(jī)器。例如,語句 33y= sin(x) + cos(x) + tan(x)在同一數(shù)據(jù)集上執(zhí)行不同的操作。使用MISD模型構(gòu)建的機(jī)器不適于大多數(shù)應(yīng)用程序,已經(jīng)設(shè)計的幾臺機(jī)器沒有一個可以商業(yè)化,它們更像是智能測試而非實用的配置。

4、MIMD系統(tǒng)
MIMD計算系統(tǒng)是能在多個數(shù)據(jù)集上執(zhí)行多個指令的多處理器機(jī)器。MIMD模型中的每一個 PE 都有單獨的指令和數(shù)據(jù)流,因此使用該模型的機(jī)器適用于所有類型的應(yīng)用程序。與 SIMD 和 MISD模型不同,MIMD機(jī)器中的 PE 是異步工作的。
MIMD 機(jī)器按照 PE 與主存耦合方式不同大致可分為共享內(nèi)存 MIMD 和分布式內(nèi)存 MIMD。
(1)共享內(nèi)存 MIMD計算機(jī)
在共享內(nèi)存 MIMD 模型中,所有執(zhí)行單元都連接到一個可供訪問的單一全局內(nèi)存上?;谶@個模型的系統(tǒng)也稱為緊耦合多處理器系統(tǒng)。模型中 PE 之間通過共享內(nèi)存進(jìn)行通信,一個 PE 修改存儲在全局內(nèi)存中的數(shù)據(jù),對所有其他 PE都是可見的。共享內(nèi)存 MIMD 模型的典型系統(tǒng)主要有 Silicon Graphics 計算機(jī)和 Sun/IBM SMP(對稱多處理器)。
(2)分布式內(nèi)存MIMD計算機(jī)
在分布式內(nèi)存 MIMD 模型中,所有 PE都有一個本地內(nèi)存?;谶@種模型的系統(tǒng)也稱為松耦合多處理器系統(tǒng)。模型中的 PE 之間通過內(nèi)部互聯(lián)網(wǎng)絡(luò)進(jìn)行通信(進(jìn)程間通信通道/ IPC)。PE 之間的網(wǎng)絡(luò)連接可配置成樹狀、網(wǎng)狀、塊狀等。每一個 PE 進(jìn)行異步操作,如果任務(wù)之間需要通信/ 同步,那么可以通過互相交換信息來實現(xiàn)。
共享內(nèi)存 MIMD 架構(gòu)與分布式內(nèi)存 MIMD 模型相比,前者更易編程,但對故障的容忍度更低且更難擴(kuò)展。共享內(nèi)存 MIMD 中的故障會影響整個系統(tǒng),但是分布式模型則不然,分布式模型的每一個 PE 都可以輕易地實現(xiàn)隔離。此外,共享內(nèi)存 MIMD架構(gòu)難以擴(kuò)展,因為增加更多的 PE 會導(dǎo)致內(nèi)存爭用。在分布式內(nèi)存 MIMD 模型中不會出現(xiàn)這種情況,因為每一個 PE 都有自己的內(nèi)存。
分布式系統(tǒng)架構(gòu)和組件
分布式系統(tǒng)是從硬件到軟件的整個計算層次模型中多個組件交互的結(jié)果。許多組件協(xié)同工作,為用戶呈現(xiàn)出一個單一的整體系統(tǒng)。下圖描述了提供分布式系統(tǒng)服務(wù)的不同層的概況。
在底層,計算機(jī)和網(wǎng)絡(luò)硬件構(gòu)成了物理基礎(chǔ)設(shè)施,這些組件由操作系統(tǒng)直接管理。操作系統(tǒng)負(fù)責(zé)提供基礎(chǔ)服務(wù),用于進(jìn)程間通信、進(jìn)程調(diào)度和管理、文件系統(tǒng)和本地設(shè)備的資源管理。將網(wǎng)絡(luò)和計算機(jī)這兩層合并為一個平臺,在這個平臺上配置特定軟件,便可將聯(lián)網(wǎng)計算機(jī)組成一個分布式系統(tǒng)。
把公認(rèn)的標(biāo)準(zhǔn)應(yīng)用到操作系統(tǒng)層甚至硬件網(wǎng)絡(luò)層中,利用異構(gòu)組件可以很容易地構(gòu)造一個統(tǒng)一的集成系統(tǒng)。例如,不同設(shè)備之間的網(wǎng)絡(luò)連接由協(xié)議進(jìn)行控制,實現(xiàn)設(shè)備無縫交互。在操作系統(tǒng)層,進(jìn)程間通信服務(wù)在標(biāo)準(zhǔn)化通信協(xié)議下執(zhí)行,例如 TCP/IP協(xié)議、UDP 協(xié)議等。
中間件層利用這些服務(wù)構(gòu)建了一個開發(fā)和部署分布式應(yīng)用程序的統(tǒng)一環(huán)境。這一層支持分布式系統(tǒng)的編程范式。依靠操作系統(tǒng)提供的服務(wù),中間件層可開發(fā)協(xié)議、數(shù)據(jù)格式以及用于開發(fā)分布式應(yīng)用程序的編程語言或框架。這些為分布式應(yīng)用程序開發(fā)人員提供了統(tǒng)一接口,完全獨立于底層操作系統(tǒng)且屏蔽了底層的異構(gòu)性。
分布式系統(tǒng)層次架構(gòu)的頂層是利用中間件設(shè)計和開發(fā)的應(yīng)用或服務(wù)。設(shè)計應(yīng)用層可實現(xiàn)多個目的,并且具有通過本地或 Web 瀏覽器可訪問的圖形用戶接口(GUI)。例如,在云計算系統(tǒng)中,不論是為終端用戶提供分布式應(yīng)用接口,還是為構(gòu)建分布式系統(tǒng)提供平臺服務(wù),都強(qiáng)烈推薦采用 Web技術(shù)。laaS 的供應(yīng)商給出了很好的實例,如亞馬遜 Web 服務(wù)(AWS)便于創(chuàng)建虛擬機(jī)、將虛擬機(jī)組織成集群以及在集群中部署應(yīng)用和系統(tǒng)。圖 2-11說明了分布式系統(tǒng)的一般參考架構(gòu)如何應(yīng)用于云計算系統(tǒng)。
硬件和操作系統(tǒng)層組成了一個或多個數(shù)據(jù)中心的最基本結(jié)構(gòu),其中服務(wù)器通過高速網(wǎng)絡(luò)部署和連接在一起。這些硬件由操作系統(tǒng)管理,操作系統(tǒng)提供了基本的管理計算機(jī)和網(wǎng)絡(luò)的能力。核心業(yè)務(wù)邏輯在管理虛擬化層的中間件上實現(xiàn),虛擬化部署在物理機(jī)上,以實現(xiàn)最大化資源利用。并目提供可定制的應(yīng)用運行環(huán)培。按照為客戶提供的服務(wù)類利。中間件為應(yīng)用開發(fā)人員提供了不同的工具。這些工具通過 Web 2.0 兼容接口提供了—系列服務(wù),包括電擬機(jī)創(chuàng)建、應(yīng)用程序開發(fā)和運行環(huán)境部署。