對稱多處理機

對稱多處理機

多處理機硬件架構
對稱多處理機(SymmetricalMulti-Processing)又叫SMP,是指在一個計算機上彙集了一組處理器(多CPU),各CPU之間共享内存子系統以及總線結構。它是相對非對稱多處理技術而言的、應用十分廣泛的并行技術。在這種架構中,一台電腦不再由單個CPU組成,而同時由多個處理器運行操作系統的單一複本,并共享内存和一台計算機的其他資源。1993年研制的曙光一号是我國第一台全對稱多處理機,也是國内首次采用商品化微處理器芯片和Unix操作系統,1995年研制的曙光1000是我國第一台采用大規模并行處理技術(MPP)的計算機,也是國際上第一次采用蛀洞路由機制的計算機,從此開啟了曙光高性能計算機的産業化之路。[1]
  • 中文名:對稱多處理機
  • 外文名:
  • 别名:
  • 英文名:SymmetricalMulti-Processing

概述

平時所說的雙CPU系統,實際上是對稱多處理機系統中最常見的一種,通常稱為2路對稱多處理,它在普通的商業、家庭應用之中并沒有太多實際用途,但在專業制作,如3DMaxStudio、Photoshop等軟件應用中獲得了非常良好的性能表現,是組建廉價工作站的良好夥伴。

随着用戶應用水平的提高,隻使用單個的處理器确實已經很難滿足實際應用的需求,因而各服務器廠商紛紛通過采用對稱多處理系統來解決這一矛盾。

在中國國内市場上這類機型的處理器一般以4個或8個為主,有少數是16個處理器。但是一般來講,SMP結構的機器可擴展性較差,很難做到100個以上多處理器,常規的一般是8個到16個,不過這對于多數的用戶來說已經夠用了。這種機器的好處在于它的使用方式和微機或工作站的區别不大,編程的變化相對來說比較小,原來用微機工作站編寫的程序如果要移植到SMP機器上使用,改動起來也相對比較容易。

SMP結構的機型可用性比較差。因為4個或8個處理器共享一個操作系統和一個存儲器,一旦操作系統出現了問題,整個機器就完全癱瘓掉了。而且由于這個機器的可擴展性較差,不容易保護用戶的投資。但是這類機型技術比較成熟,相應的軟件也比較多,因此現在中國國内市場上推出的并行機大量都是這一種。

PC服務器中最常見的對稱多處理系統通常采用2路、4路、6路或8路處理器。目前UNIX服務器可支持最多64個CPU的系統,如Sun公司的産品Enterprise10000。SMP系統中最關鍵的技術是如何更好地解決多個處理器的相互通訊和協調問題。

系統結構

對稱多處理機的系統結構,主要指處理器、存儲器、輸入輸出(I/O)設備三者之間的連接,它對我們更好地理解多處理機操作系統是非常必要的。

多處理器與存儲器之間的連接:

1、多端口存儲器方式:這是最簡單的連接。被共享的存儲器有3塊,每塊都有4個端口,分别與4個處理器連接。因此,各處理器能并行訪問不同的存儲塊,但對同一塊的訪問必須是順序的。各存儲塊内的硬件邏輯自動控制其訪問。優點是連接相當簡單。由于存儲器的端口不可能太多,這種方式限制了能夠連接的處理器個數,适用于處理器數目較少的場合。

2、集中控制開關方式:集中控制開關方式能克服多端口方式的缺點。它的做法是,把各存儲塊内的硬件控制邏輯換成一個集中式開關,集中式開關給出處理器到存儲塊的訪問路徑。這種方式的優點是支持更多的處理器。缺點是開關單元比較複雜,降低了系統的可靠性。若有m個存儲塊,n個處理器,則連接路徑數為m乘n。

當處理器要訪問某存儲塊時,經過集中式開關線路時應考慮不能有明顯的延時。萬一某一路徑故障,有可能殃及其他路徑。

3、局部存儲器方式:多處理機競争共享存儲器時,因相互沖突而延遲,從而使各處理器訪問主存的平均時間增加。如果一個存儲塊上連接的處理器不多,則引起沖突的概率當然就小。但我們又不願意通過減少處理器數目來縮短訪問主存的平均時間。這是一個兩難問題。

一種解決辦法是,在處理器和開關之間增加高速緩沖存儲器(Cache)。把剛訪問過的共享存儲器的内容保留在Cache中,當處理器再度訪問主存時,先查詢Cache,如果要訪問的數據已在Cache中,則不必訪問主存。這樣可以減少訪問主存的次數但必須配置Cache置換算法并承擔置換時間開銷。

另一種解決辦法是,為每個處理器配備一個局部存儲器,局部存儲器的容量通常比Cache大,造價卻比Cache小,所以受到歡迎。局部存儲器Mi隻屬于Pi(i=1.…,n),不能被其他處理器訪問。任一處理器都隻能訪問共享存儲器和私有的局部存儲器,不能訪問其他局部存儲器,稱為不對稱性體系結構。局部存儲器也由操作系統管理,使之起到一個高速緩沖存儲器的作用。

然而,把在一個處理器上運行的進程移到另一個處理器上運行的代價是非常高的。

4、分布式:變集中式開關為分布式開關是處理器與存儲器連接的另一種設計思路。右圖是分布式多處理器體系結構示意圖。每個處理器都與一個局部存儲器相連,但局部存儲器不具有私有性,它能被各處理器訪問。這樣,所有處理器共享尋址空間。處理器Pi(i=1,…,n)對Mi的訪問不經過開關切換線路,但對Mj(j≠i)的訪問要經過開關切換。

開關切換是這樣實現的:局部開關把請求信号作為消息包packet()發給目的開關,途中各開關起轉發作用。當目的開關得到消息後,就把自己的局部存儲器中的數據作為一個消息包發回源開關,再轉至等待該數據的處理器。

分布式多處理器比集中式開關多處理器有更高的可靠性和可擴充性,但在訪問非局部存儲器時有一定的延時,這取決于被訪問非局部存儲器Mj與處理器Pi的距離。在這樣的系統中,操作系統的設計一定要考慮盡量減少這種延時等待。

一個設計精良的任務分配算法不但能減少Pi對Mj的請求次數,而且能縮短Pi對Mj的距離。我們将在任務分配策略中讨論這個問題。

其中分布式多處理器被看作是松耦合型(looselycoupled),多端口存儲器方式、集中控制開關方式和多處理器帶局部存儲器的多處理器被看作是緊耦合型(tightlycoupled).

處理器與輸入輸出設備之間的連接

1、多端口輸入輸出設備類似于多端口存儲器;設備的每個端口同一個處理器的總線相連接,設備可用此端口進行數據傳輸和中斷處理。

2、由交叉開關連接處理器與輸入輸出設備,交叉開關的作用類似集中式或分布式開關,但設備開關的硬件邏輯更複雜些。因為一個設備同一個處理器保持聯系的時間在一個事務處理過程中(比如讀盤、寫盤)可能很長,因而用軟件來控制開關切換比用硬件實現會更方便。

3、隻與一個處理器相連而不能被其他處理器訪問的輸入輸出設備,容易理解,一個處理器隻能訪問與之相連的設備。如果想訪問别的設備,需要軟件參與協調,例如,向其他處理器發出一個請求使本處理器能在别的設備上操作。

4、隻與一個處理器相連但可被其他處理器訪問的輸入輸出設備;使用分布式開關且用存儲器地址而不用輸入輸出指令來訪問輸入輸出設備時用方式,因為輸入輸出操作是對一個存儲地址寫數據或讀數據,所以無需分布式開關做額外工作,處理器就可方便地訪問其他設備。盡管處理器能訪問任一設備,但從設備發出的數據和中斷信号卻隻能由與之相連接的處理器處理。

這種不對稱的原因來自兩個方面。一方面,設備發出的中斷信号必須得到快速響應,這對遠程處理器來說是做不到的;另一方面,到非局部存儲器的數據傳輸存在不同的時間延遲,此延遲有可能比設備讀或寫的時間大。

上述幾種方式對操作系統的I輸入輸出設備控制進程有不同的要求。方式①和②的設備進程要在每個處理器上運行。方式③的設備進程隻要在可訪問該設備的處理器上運行。方式④的設備進程操作要分成能在所有處理器上運行和在同設備相連的處理器上運行這兩種情況考慮

功能的差異

對稱多處理機操作系統,目前有三種類型:主從式(master-slave)、獨立監督式(separatesupervisor)、浮動監督式(floatingsupervisor)。從資源管理觀點來看,雖然多處理機操作系統也具有單機操作系統所具有的各種功能,如進程管理、線程管理、存儲管理文件與設備管理功能,但在各方面存在不同之處:

1、共享資源

在多處理機環境下,由于多個處理機上運行的進程并行執行,因而可能有若幹個進程絕對同時訪問某共享資源,這種情況比起單機環境下并發進程交替訪問共享資源要難以處理,多處理機操作系統應具有新的進程同步與互斥算法。

2、多處理機調度

對稱多處理機調度要考慮到負載平衡才能發揮多處理機體系的最大效能。因此在任務分配時,一方面必須了解每台處理機的能力以便把适合的任務分配給它,另一方面也要确切地了解作業中諸任務之間的關系,即哪些任務必須順序、哪些任務可以并行執行。

3、存儲器訪問

在對稱多處理機環境下,存儲器體系既有局部的又有全局的,其地址變換機構比單機環境複雜。當多個進程競争訪問某存儲塊時,訪問沖突仲裁機構決定哪一個處理機上的進程可立即訪問,哪個或哪些處理機上的進程應等待。當共享主存中的數據在多個局部存儲器出現時,操作系統應保證這些數據的一緻性。

4、提高可靠性

為了提高多處理機系統的可靠性,應使操作系統具有重構能力:當系統中某個處理機或存儲塊等資源發生故障時,系統自動切除故障資源并換上備份資源,使之能繼續工作。如果沒有備份資源,則重構系統使之降級運行。如果在故障的處理機上有進程亟待執行,操作系統應能安全地把它遷移到其他處理機上繼續運行,處于故障處的其他可利用資源同樣也予以安全轉移。

系統類型

對稱多處理機操作系統,目前有三種類型:

1、主從式(master-slave)

主從式操作系統由一台主處理機記錄、控制其它從處理機的狀态,并分配任務給從處理機。例如,Cyber-170就是主從式多處理機操作系統,它駐留在一個外圍處理機Po上運行,其餘所有處理機包括中心處理機都從屬于Po。另一個例子是DECSystem10,有兩台處理機,一台為主,另一台為從

。操作系統在主處理機上運行,從處理機的請求通過陷入傳送給主處理機,然後主處理機回答并執行相應的服務操作。主從式操作系統的監控程序及其提供服務的過程不必遷移,因為隻有主處理機利用它們。當不可恢複錯誤發生時,系統很容易導緻崩潰,此時必須重新啟動主處理機。由于主處理機的責任重大,當它來不及處理進程請求時,其它從屬處理機的利用率就會随之降低。

主從式的特點:

A.操作系統程序在一台處理機上運行。如果從處理機需要主處理機提供服務,則向主處理機發出請求,主處理機接受請求并提供服務。不一定要求把整個管理程序都編寫成可重入的程序代碼,因為隻有一個處理機在使用它,但有些公用例程必須是可重入的才行。

B.由于隻有一個處理機訪問執行表,所以不存在管理表格存取沖突和訪問阻塞問題。

C.當主處理機故障時很容易引起整個系統的崩潰。如果主處理機不是固定設計的,管理員可從其他處理機中選一個作為新主處理機并重新啟動系統。

D.任務分配不但容易使部分從處理機閑置而導緻系統效率下降。

E.用于工作負載不是太重或由功能相差很大的處理機組成的非對稱系統。

F.系統由一個主處理機加上若幹從處理機組成,硬件和軟件結構相對簡單,但靈活行差。

2、獨立監督式

獨立監督式與主從式不同,在這種類型中,每一個處理機均有各自的管理程序(核心)。采用獨立監督式操作系統的多處理機系統有IBM370/158等。

獨立監督式的特點:

A.每個處理機将按自身的需要及分配給它的任務的需要來執行各種管理功能,這就是所謂的獨立性。

B.由于有好幾個處理機在執行管理程序,因此管理程序的代碼必須是可重入的,或者為每個處理機裝入專用的管理程序副本。

C.因為每個處理機都有其專用的管理程序,故訪問公用表格的沖突較少,阻塞情況自然也就較少,系統的效率就高。但沖突仲裁機構仍然是需要的。

D.每個處理相對獨立,因此一台處理機出現故障不會引起整個系統崩潰。但是,要想補救故障造成的損害或重新執行故障機未完成的工作非常困難。

E.每個處理機都有專用的I/O設備和文件等。

F.這類操作系統适合于松耦合多處理機體系,因為每個處理機均有一個局部存儲器用來存放管理程序副本,存儲冗餘太多,利用率不高。

G.獨立監督式操作系統要實現處理機負載平衡更困難。

3、浮動監督式

每次隻有一台處理機作為執行全面管理功能的“主處理機”,但根據需要,“主處理機”是可浮動的,即從一台切換到另一台處理機。這是最複雜、最有效、最靈活的一種多處理機操作系統,常用于對稱多處理機系統(即系統中所有處理機的權限是相同的,有公用主存和I/O子系統)。

浮動監督式操作系統适用于緊耦合多處理機體系。采用這種操作系統的多處理機系統有IBM3081上運行的MVS,VM以及C·mmp上運行的Hydra,等等。

浮動監督式的特點:

A.每次隻有一台處理機作為執行全面管理功能的“主處理機”,但容許數台處理機同時執行同一個管理服務子程序。因此,多數管理程序代碼必須是可重入的。

B.根據需要,“主處理機”是可浮動的,即從一台切換到另一台處理機。這樣,即使執行管理功能的主處理機故障,系統也能照樣運行下去。

C.一些非專門的操作(如I/O中斷)可送給那些在特定時段内最不忙的處理機去執行,使系統的負載達到較好的平衡。

D.服務請求沖突可通過優先權辦法解決,對共享資源的訪問沖突用互斥方法解決。

E.系統内的處理機采用處理機集合概念進行管理,其中每一台處理機都可用于控制任一台I/O設備和訪問任一存儲塊。這種管理方式對處理機是透明的,并且有很高的可靠性和相當大的靈活行。

設計的原則

對稱多處理機操作系統的設計與單處理機多道程序設計的不同主要基于兩點:

1、系統的體系結構

各處理機是異構的還是同構的,如果各處理機是異構(nonhomogeneity)的而不是同構(homogeneity)的,則各台處理機上的可執行代碼格式不一樣,浮動管理就困難。解決的辦法之一是通過仿真軟件來“抹平”異構機之間的硬件差異。在非對稱主存系統中,不是所有的處理機都能訪問所有的存儲器,這給操作系統的主存管理帶來複雜性。

2、程序設計環境

(1)同步的重要性

一個并行程序由兩個或多個相互作用的進程組成,進程間的同步和通信顯得更加重要。如果并行算法不是設計得很有效,則會降低并行系統的性能。同步原語通常由硬件實現,也可由軟件實現,但硬件實現可以減少系統花在同步上的開銷。

(2)同步的實現

多處理機器是系統是共享存儲的,因此各處理機上的進程可通過共享存儲器進行同步。但是,對于松耦合的多處理機,各處理機有很大的獨立性,它們的進程一部分采用集中式,另一部分采用分布式同步機制。集中式系統的同步問題已有介紹。在狹義的多處理機系統中,進程間更多的是同步且其實現相對簡單。廣義的多處理機系統利用計算機網絡與分布式系統實現進程間的通信。在那樣的環境下,同步被看作為是低級的通信。

(3)利用中心進程實現同步

中心進程又稱協調進程,它是多處理機系統管理程序的一部分。中心進程保存了所有用戶的存取權限和沖突圖(conflictgraph)等信息。每一個要求訪問共享資源的進程先向中心進程發送請求消息,中心進程收到該請求後便去查看沖突圖。如果該請求不會引起死鎖,便将該請求插入請求隊列,否則将請求退回。當輪到該請求使用共享資源時,中心進程便向請求進程發送一回答信息并讓請求者進入臨界段訪問共享資源。在退出臨界段時,原請求進程還得向中心進程發送一釋放資源的消息,中心進程收到消息後又可向下一個請求進程發送回答消息,允許它進入臨界段。由此看來,中心進程的作用是安排訪問共享資源的順序。由于任一進程要訪問共享資源需要申請、回答、釋放3個消息傳遞,同步的效率不高。

組建

要組建SMP系統,首先最關鍵的一點就是需要合适的CPU相配合。平時看到的CPU都是單顆使用,所以看不出來它們有什麼區别,但是,實際上,支持SMP功能并不是沒有條件的,要實現SMP功能,使用的CPU必須具備以下要求:

1、CPU内部必須内置APIC(AdvancedProgrammableInterruptControllers)單元。Intel多處理規範的核心就是高級可編程中斷控制器(AdvancedProgrammableInterruptControllers--APICs)的使用。CPU通過彼此發送中斷來完成它們之間的通信。通過給中斷附加動作(actions),不同的CPU可以在某種程度上彼此進行控制。每個CPU有自己的APIC(成為那個CPU的本地APIC),并且還有一個I/OAPIC來處理由I/O設備引起的中斷,這個I/OAPIC是安裝在主闆上的,但每個CPU上的APIC則不可或缺,否則将無法處理多CPU之間的中斷協調。

2、相同的産品型号,同樣類型的CPU核心。例如,雖然Athlon和PentiumIII各自都内置有APIC單元,想要讓它們一起建立SMP系統是不可能的,當然,即使是Celeron和PentiumIII,那樣的可能性也為0,甚至Coppermine核心的PentiumIII和Tualatin的PentiumIII也不能建立SMP系統--這是因為他們的運行指令不完全相同,APIC中斷協調差異也很大。

3、完全相同的運行頻率。如果要建立雙PentiumIII系統,必須兩顆866MHz或者兩顆1000MHz處理器,不可以用一顆866MHz,另一顆1000MHz來組建,否則系統将無法正常點亮。

4、盡可能保持相同的産品序列編号。即使是同樣核心的相同頻率處理器,由于生産批次不同也會造成不可思議的問題。兩個生産批次的CPU作為雙處理器運行的時候,有可能會發生一顆CPU負擔過高,而另一顆負擔很少的情況,無法發揮最大性能,更糟糕的是可能導緻死機,因此,應該盡可能選擇同一批生産的處理器來組建SMP系統。

相關詞條

相關搜索

其它詞條