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

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