對稱多處理機

對稱多處理機

對稱多處理機(SymmetricalMulti-Processing)又叫SMP,是指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享記憶體子系統以及匯流排結構。它是相對非對稱多處理技術而言的、套用十分廣泛的並行技術。在這種架構中,一台電腦不再由單個CPU組成,而同時由多個處理器運行作業系統的單一複本,並共享記憶體和一台計算機的其他資源。雖然同時使用多個CPU,但是從管理的角度來看,它們的表現就像一台單機一樣。系統將任務佇列對稱地分布於多個CPU之上,從而極大地提高了整個系統的數據處理能力。所有的處理器都可以平等地訪問記憶體、I/O和外部中斷。在對稱多處理系統中,系統資源被系統中所有CPU共享,工作負載能夠均勻地分配到所有可用處理器之上。從而提高整個系統的數據處理能力。

基本信息

概述

對稱多處理機AMD Athlon 64 X2
平時所說的雙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系統中最關鍵的技術是如何更好地解決多個處理器的相互通訊和協調問題。

系統結構

對稱多處理機PowerMac G4系統架構
對稱多處理機的系統結構,主要指處理器、存儲器、輸入輸出(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.系統由一個主處理機加上若干從處理機組成,硬體和軟體結構相對簡單,但靈活行差。

對稱多處理機Intel奔騰Ⅱ Xeon雙核處理器
2、獨立監督式(separatesupervisor)

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

獨立監督式的特點:

A.每個處理機將按自身的需要及分配給它的任務的需要來執行各種管理功能,這就是所謂的獨立性。
B.由於有好幾個處理機在執行管理程式,因此管理程式的代碼必須是可重入的,或者為每個處理機裝入專用的管理程式副本。
C.因為每個處理機都有其專用的管理程式,故訪問公用表格的衝突較少,阻塞情況自然也就較少,系統的效率就高。但衝突仲裁機構仍然是需要的。
D.每個處理相對獨立,因此一台處理機出現故障不會引起整個系統崩潰。但是,要想補救故障造成的損害或重新執行故障機未完成的工作非常困難。
E.每個處理機都有專用的I/O設備和檔案等。
F.這類作業系統適合於松耦合多處理機體系,因為每個處理機均有一個局部存儲器用來存放管理程式副本,存儲冗餘太多,利用率不高。
G.獨立監督式作業系統要實現處理機負載平衡更困難。

對稱多處理機對稱多處理機系統 模型
3、浮動監督式(floatingsupervisor)

每次只有一台處理機作為執行全面管理功能的“主處理機”,但根據需要,“主處理機”是可浮動的,即從一台切換到另一台處理機。這是最複雜、最有效、最靈活的一種多處理機作業系統,常用於對稱多處理機系統(即系統中所有處理機的許可權是相同的,有公用主存和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系統。

相關搜尋

熱門詞條

聯絡我們