特點
只有部分應用程式在滿足以下條件的情況下可利用並行處理:具有充足的能充分利用
多處理機的應用程式; 並行化目標應用程式或用戶需進行新的編碼來利用並行程式。
傳統上,
多處理機專為“並行
計算機”所設計,沿著這樣的思路,當前 Linux 支持 SMP 奔騰系統,在該系統中多處理機共享單個計算機中的單個
存儲器和
匯流排接口。每個運行 Linux 的機器組都有可能通過網路互相連線形成並行處理群。第三種選擇是使用 Linux 系統作為“
主機”,提供專門的相關並行
處理機(attached parallel processor)。第四種新選擇是暫存器內 SIMD 並行,套用於多媒體擴展(MMX)。
單處理機上的單個區;
多處理機(SMP)中的單個區;
多區配置
一個處理機(MPP)中的各區 ;
多處理機(SMP 群)中的各區;
邏輯資料庫區(在 AIX 第1版的 DB2 並行版 - DB2 PE 中也稱之為多邏輯代碼或 MLN)
並行計算機具有代表性的套用領域有:天氣預報建摸、VLSI電路的
計算機輔助設計、大型
資料庫管理、
人工智慧、犯罪控制和國防戰略研究等,而且它的套用範圍還在不斷地擴大。
並行處理技術主要是以算法為核心,並行語言為描述,軟硬體作為實現工具的相互聯繫而又相互制約的一種結構技術。
算法基本策略
1.分而治之法:也就是把多個任務分解到多個處理器或多個
計算機中,然後再按照一定的
拓撲結構來進行求解。
2.重新排序法:分別採用
靜態或動態的指令詞度方式。
3.顯式/隱式
並行性結合:顯式指的是並行語言通過編譯形成並行程式,隱式指的是串列語言通過編譯形成並行程式,顯式/隱式
並行性結合的關鍵就在於並行編譯,而並行編譯涉及到語句、
程式段、進程以及各級程式的
並行性。
並行性描述定義
利用
計算機語言進行並行性描述的時候主要有三種方案:
1.語言擴展方案:也就是利用各種語言的
庫函式來進行並行性功能的擴展。
2.編譯製導法:也稱為智慧型編譯,它是隱式並行策略的體現,主要是由並行
編譯系統進行程式表示、
控制流的分析、相關分析、最佳化分析和並行化劃分,由相關分析得到方法庫管理方案,由最佳化分析得到知識庫管理方案,由並行化劃分得到程式重構,從而形成並行程式。
3.新的語言結構法:這是顯式並行策略的體現。也就是建立一種全新的並行語言的體系,而這種並行語言通過編譯就能直接形成並行程式。
並行軟體
1.程式的相關性:程式的相關性主要分為數據相關、控制相關和資源相關三類。
數據相關說明的是語句之間的有序關係,主要有流相關、反相關、輸出相關、I/O相關和求知相關等,這種關係在程式運行前就可以通過分析程式確定下來。數據相關是一種偏序關係,程式中並不是每一對語句的成員都是相關聯的。可以通過分析程式的數據相關,把程式中一些不存在相關性的指令並行地執行,以提高程式運行的速度。
控制相關指的是語句執行次序在運行前不能確定的情況。它一般是由轉移指令引起的,只有在程式執行到一定的語句時才能判斷出語句的相關性。控制相關常使正在開發的
並行性中止,為了開發更多的並行性,必須用
編譯技術克服控制相關。
而資源相關則與系統進行的工作無關,而與並行事件利用整數部件、浮點部件、
暫存器和存儲區等共享資源時發生的衝突有關。
軟體的
並行性主要是由程式的控制相關和數據相關性決定的。在
並行性開發時往往把程式劃分成許多的
程式段——顆粒。顆粒的規模也稱為粒度,它是衡量
軟體進程所含計算量的尺度,一般用細、中、粗來描述。劃分的粒度越細,各子系統間的通信時延也越低,
並行性就越高,但
系統開銷也越大。因此,我們在進行程式
組合最佳化的時候應該選擇適當的粒度,並且把通訊時延儘可能放在
程式段中進行,還可以通過軟硬體適配和編譯最佳化的手段來提高程式的
並行度。
2.網路互連:將
計算機子系統互連在一起或構造
多處理機或多計算機時可使用靜態或動態
拓撲結構的網路。靜態網路由點一點直接相連而成,這種連線方式在程式執行過程中不會改變,常用來實現
集中式系統的子系統之間或
分散式系統的多個計算結點之間的固定連線。
動態網路是用開關通道實現的,它可動態地改變結構,使之與
用戶程式中的通信要求匹配。
動態網路包括
匯流排、
交叉開關和多級網路,常用於共享存儲型
多處理機中。在網路上的訊息傳遞主要通過尋徑來實現。常見的尋徑方式有
存儲轉發尋徑和
蟲蝕尋徑等。在
存儲轉發網路中以長度固定的包作為信息流的基本單位,每個結點有一個包
緩衝區,包從源結點經過一系列中間結點到達目的結點。
存儲轉發網路的時延與源和目的之間的距離(段數)成正比。而在新型的
計算機系統中採用
蟲蝕尋徑,把包進一步分成一些固定長度的片,與結點相連的硬體尋徑器中有片
緩衝區。訊息從源傳送到目的結點要經過一系列尋徑器。同一個包中所有的片以流水方式順序傳送,不同的包可交替地傳送,但不同包的片不能交叉,以免被送到錯誤的目的地。
蟲蝕尋徑的時延幾乎與源和目的之間的距離無關。在尋徑中產生的
死鎖問題可以由虛擬通道來解決。虛擬通道是兩個結點間的邏輯鏈,它由源結點的片
緩衝區、結點間的物理通道以及接收結點的片緩衝區組成。物理通道由所有的虛擬通道分時地共享。虛擬通道雖然可以避免死鎖,但可能會使每個請求可用的有效通道頻寬降低。因此,在確定虛擬通道數目時,需要對
網路吞吐量和通信時延折衷考慮。
硬體技術
硬體技術在硬體技術方面主要從
處理機、
存儲器和流水線三個方面來實現並行。
1.
處理機:主要的處理機系列包括CISC、RISC、
超標量、VL1W、
超流水線、向量以及符號處理機。
傳統的
處理機屬於複雜
指令系統計算(CISC)結構。
指令系統大,
指令格式可變,
通用暫存器個數較少,基本上使用合一的指令與數據高速快取,
時鐘頻率較低,CPI較高,大多數利用ROM 實現微碼控制CPU,而當今的精簡指令系統計算(RISC)
處理機指令格式簡單
規範,面向暫存器堆,採用重疊暫存器
視窗技術,具有多級Cache,多種
流水線結構,強調編譯最佳化技術,時鐘頻率快,CPI低,大多數用硬連線控制CPU。
VL1W 結構是將水平微碼和
超標量處理這兩種普遍採用的概念結合起來產生的。典型的超長
指令字VL1W
機器指令字長度有數百位。在VLlW
處理機中,多個功能部件是並發工作的,所有的功能部件共享使用公用大型
暫存器堆,由功能部件同時執行的各種操作是用VL1W 指令來同步的,每條指令可指定多個操作。VL1W 指令解碼比
超標量指令容易,但在開發不同數量的
並行性時總是需要不同的
指令系統。VL1W 主要是開發標量操作之間的
並行性,它的成功與否很大程度取決於代碼壓縮的效率,其結構和任何傳統的通用
處理機完全不兼容。即使同一結構的不同實現也不大可能做到彼此二進制兼容。VL1W 的主要優點在於它的硬體結構和
指令系統簡單,在科學套用領域可以發揮良好作用,但在一般套用場合可能並不很好用。
向量處理機對
數組執行向量指令,每條指令都包含一串重複的操作。它是專門設計用來完成向量運算的協
處理機,通常用於多流水線
超級計算機中。向量處理機可以利用循環級展開所得的
並行性,它可以附屬於任何標量處理機。專用的向量流水線可以在循環控制中消除某些
軟體開銷,它的效果與最佳化
編譯器將順序代碼向量化的性能很有關係。從理論上說,向量機可以具有和
超標量處理機同樣的性能,因此可以說向量機的
並行性與超標量機相同。
存放在
存儲器層次結構中的信息滿足三個重要特性:包含性、一致性和局部性。所謂包含性,指的是一個信息字的複製品可以在比它高的所有層中找到,而如果在高層中丟失了一個信息,則在比它低的所有層中此信息也將丟失。CPU 和高速快取之間的信息傳送是按字進行的,高速快取和
主存儲器間用塊作為
數據傳送的基本單位,主存和
磁碟之間又是以頁面為基本單位來傳送信息的,而在磁碟和
磁帶機之間的數據傳送則是按檔案級處理的。所謂一致性要求的是同一個信息項與後繼
存儲器層次上的副本是一致的。也就是說,如果在高速快取中的一個字被修改過,那么在所有更高層上該字的副本也必須立即或最後加以修改。為了儘量減少
存儲器層次結構的有效
存取時間,通常把頻繁使用的信息放在較低層次。維護
存儲器層次結構一致性一般有兩種策略,一種是寫直達策略,也就是如果,則立即在所有高層存儲器中進行同樣的修改;另一種是寫回策略,也就是在較低層中對信息進行修改後並不立即在高層存儲器中進行相應的修改,而是等到該信息將被替換或將從低層中消失時才在所有高層存儲器中進行同樣的修改。甚至可以將寫直達和寫回策略的優點結合起來,形成寫一次協定來維護
存儲器的一致性。
存儲器的層次結構是在一種程式行為——訪問的局部性基礎上開發出來的。主要有時間局部性、空間局部性和順序局部性。時間局部性指的是最近的訪問項很可能在不久的將來再次被訪問。它往往會引起對最近使用區域的集中訪問。空間局部性表示一種趨勢,指的是一個進程訪問的各項其地址彼此很近。順序局部性指的是在典型程式中,除非是轉移指令,一般指令都是
順序執行的。
在
多處理機系統中一般使用共享
存儲器。對共享
存儲器的組織一般採用低位交叉、高位交叉、高低位交叉三種方法。低位交叉又稱並發存取,它是把相鄰的地址放在相鄰的
存儲器模組中,在訪問時不容易產生衝突,
並行性較好,但可靠性容錯能力和擴展性均較差。高位交叉又稱允許同時存取,它是把相鄰地址分配到同一個
存儲器模組中,可靠性、容錯能力和擴展性均較強,但訪問時易產生衝突,頻寬較窄,
並行性較差。高低位交叉存取又稱C—s存取,它是結合了高位交叉和低位交叉兩種方法的優點,既解決了衝突問題,又能有效地提高容錯能力和
並行性,最適合於
向量處理機結構。
3.流水線:
流水線技術主要有指令流水線技術和運算流水線技術兩種。
指令流水線技術主要目的是要提高
計算機的運行效率和
吞吐率。它主要通過設定預取指令
緩衝區、設定多功能部件、進行內部數據定向、採取適當的指令調度策略來實現。指令調度的策略主要有靜態和動態兩種,靜態詞度是基於
軟體的,主要由
編譯器完成,動態詞度是基於硬體的,主要是通過硬體技術進行。
運算流水線主要有單功能流水線和多功能流水線兩種。其中多功能流水線又可分為靜態流水線和
動態流水線。靜態
流水線技術只用來實現確定的功能,而
動態流水線可以在不同時間重新組合,實現不同的功能,它除流線連線外,還允許前饋和反饋連線,因此也稱為非線性流水線。這些前饋和反饋連線使得進入流水線的相繼事件的詞度變得很不簡單。由於這些連線,流水線不一定從最後一段輸出。根據不同的數據流動模式,人們可以用同一條流水線求得不同功能的值。
並行計算機發展簡述
40 年代開始的現代
計算機發展歷程可以分為兩個明顯的發展時代:串列計算時代、
並行計算時代。每一個計算時代都從
體系結構發展開始,接著是系統
軟體(特別是
編譯器與
作業系統)、
套用軟體,最後隨著問題求解環境的發展而達到頂峰。創建和使用並行計算機的主要原因是因為並行計算機是解決單處理器速度瓶頸的最好方法之一。
並行計算機是由一組處理單元組成的,這組處理單元通過相互之間的通信與協作,以更快的速度共同完成一項大規模的計算任務。因此,並行計算機的兩個最主要的組成部分是計算節點和節點間的通信與協作機制。
並行計算機體系結構的發展也主要體現在計算節點性能的提高以及節點間通信技術的改進兩方面。
60 年代初期,由於電晶體以及
磁芯存儲器的出現,處理單元變得越來越小,存儲器也更加小巧和廉價。這些技術發展的結果導致了並行計算機的出現,這一時期的並行計算機多是規模不大的共享存儲
多處理器系統,即所謂大型主機(Mainframe)。IBM360 是這一時期的典型代表。
到了60 年代末期,同一個處理器開始設定多個功能相同的功能單元,
流水線技術也出現了。與單純提高
時鐘頻率相比,這些並行特性在處理器內部的套用大大提高了並行計算機系統的性能。
伊利諾依大學和Burroughs 公司此時開始實施IlliacIV 計畫,研製一台64 個CPU 的SIMD
主機系統,它涉及到硬體技術、
體系結構、I/O 設備、
作業系統、
程式設計語言直至應用程式在內的眾多研究課題。不過,當一台規模大大縮小了的16CPU 系統終於在1975 年面世時,整個
計算機界已經發生了巨大變化。
首先是
存儲系統概念的革新,提出
虛擬存儲和快取的思想。IBM360/85 系統與360/91是屬於同一系列的兩個機型,360/91 的
主頻高於360/85,所選用的
記憶體速度也較快,並且採用了動態調度的
指令流水線;但是,360/85 的整體性能卻高於360/91,唯一的原因就是前者採用了
快取技術,而後者則沒有。
其次是
半導體存儲器開始代替
磁芯存儲器。最初,半導體存儲器只是在某些機器被用作快取,而CDC7600 則率先全面採用這種體積更小、速度更快、可以直接定址的半導體存儲器,
磁芯存儲器從此退出了歷史舞台。與此同時,積體電路也出現了,並迅速套用到了
計算機中。元器件技術的這兩大革命性突破,使得IlliacIV 的設計者們在底層硬體以及並行體系結構方面提出的種種改進都大為遜色。
1976 年CRAY-1 問世以後,
向量計算機從此牢牢地控制著整個高性能計算機市場15 年。CRAY-1 對所使用的邏輯電路進行了精心的設計,採用了我們如今稱為RISC 的
精簡指令集,還引入了向量
暫存器,以完成向量運算。這一系列全新技術手段的使用,使CRAY-1 的
主頻達到了80MHz。
微處理器隨著機器的
字長從4 位、8 位、16 位一直增加到32 位,其性能也隨之顯著提高。正是因為看到了
微處理器的這種潛力,卡內基- 梅隆大學開始在當時流行的DECPDP11
小型計算機的基礎上研製成功一台由16 個PDP11/40
處理機通過
交叉開關與16 個共享
存儲器模組相連線而成的共享存儲
多處理器系統C.mmp。
從80 年代開始,微處理器技術一直在高速前進。稍後又出現了非常適合於SMP 方式的
匯流排協定,而伯克利
加州大學則對匯流排協定進行了擴展,提出了Cache 一致性問題的處理方案。從此,C.mmp 開創出的共享存儲多處理器之路越走越寬;現在,這種體系結構已經基本上統治了伺服器和
桌面工作站市場。
同一時期,基於訊息傳遞機制的並行計算機也開始不斷湧現。80 年代中期,加州理工成功地將64 個i8086/i8087 處理器通過超立方體互連結構連結起來。此後,便先後出現了Intel iPSC 系列、INMOS Transputer 系列,Intel Paragon 以及IBM SP 的前身Vulcan 等基於訊息傳遞機制的並行計算機。
80 年代末到90 年代初,共享
存儲器方式的大規模並行計算機又獲得了新的發展。IBM將大量早期RISC 微處理器通過蝶形
互連網路連結起來。人們開始考慮如何才能在實現共享
存儲器快取一致的同時,使系統具有一定的可擴展性(Scalability)。90 年代初期,
史丹福大學提出了DASH 計畫,它通過維護一個保存有每一快取塊位置信息的目錄結構來實現分散式共享
存儲器的快取一致性。後來,IEEE 在此基礎上提出了快取一致性協定的標準。
90 年代以來,主要的幾種體系結構開始走向融合。屬於數據並行類型的CM-5 除大量採用商品化的微處理器以外,也允許
用戶層的程式傳遞一些簡單的訊息;CRAY T3D是一台NUMA 結構的共享存儲型並行計算機,但是它也提供了全局同步機制、
訊息佇列機制,並採取了一些減少訊息傳遞延遲的技術。
隨著商品化
微處理器、網路設備的發展,以及MPI/PVM 等並行編程標準的發布,機群架構的並行計算機出現。IBM SP2 系列
機群系統就是其中的典型代表。在這些系統中,各個節點採用的都是標準的商品化
計算機,它們之間通過高速網路連線起來。
越來越多的並行計算機系統採用商品化的
微處理器加上商品化的互連網路構造,這種分布存儲的並行計算機系統稱為機群。國內幾乎所有的高性能
計算機廠商都生產這種具有極高性能價格比的高性能計算機,
並行計算機就進入了一個新的時代,並行計算的套用達到了前所未有的廣度和深度。
並行計算機隨著微處理晶片的發展,已經進入了一個新時代。並行計算機的性能已經突破20PFLOPS,正在向百億億次發展。我國並行計算機的研製已經走在世界前列。2003年由
聯想公司生產的深騰6800 在2003 年11 月世界TOP500 排名中位列第14 名,2004 年
曙光公司生產的曙光4000A 在2004 年6 月的世界TOP500 排名中位列第10 名,這是我國
公開發布的高性能
計算機在世界TOP500 中首次進入前十名,這標誌著我國在並行計算機系統的研製和生產中已經趕上了國際先進水平,為提高我國的科學研究水平奠定了物質基礎。2013年國際超級計算機大會最新發布的世界超級計算機500強排名中,國防科技大學研製的天河二號超級計算機系統,以峰值計算速度每秒5.49億億次、持續計算速度每秒3.39億億次雙精度浮點運算的優異性能位居榜首。
從TOP500 的前10 名來看,
美國仍然是
超級計算機的最大擁有者。按照世界TOP500 的統計數據來分析,美國在計算能力上占有近全世界的一半,在TOP500 中的所有
計算機中擁有的數量超過50%。