複製鏈接
請複製以下鏈接發送給好友

對稱多處理器

鎖定
多處理器系統的工作方式分為非對稱多處理(asym-metrical mulit-processing)和對稱多處理(symmetrical mulit-processing,SMP)兩種。在對稱多處理器系統中,所有處理器的地位都是相同的,所有的資源,特別是存儲器、中斷及I/O空間,都具有相同的可訪問性,消除了結構上的障礙。
中文名
對稱多處理器
外文名
Symmetric Multi-Processor
簡    稱
SMP
類    別
計算機硬件
學    科
計算機科學與技術
特    點
共享

對稱多處理器基本概念

對稱多處理器(Symmetric Multi-Processing)又叫SMP,是指在一個計算機上彙集了一組處理器(多CPU),各CPU之間共享內存子系統以及總線結構。它是相對非對稱多處理技術而言的、應用十分廣泛的並行技術
在這種技術的支持下,一個服務器系統可以同時運行多個處理器,並共享內存和其他的主機資源。像雙至強,也就是我們所説的二路,這是在對稱處理器系統中最常見的一種(至強MP可以支持到四路,AMD Opteron可以支持1-8路)。也有少數是16路的。但是一般來講,SMP結構的機器可擴展性較差,很難做到100個以上多處理器,常規的一般是8個到16個,不過這對於多數的用户來説已經夠用了。在高性能服務器和工作站級主板架構中最為常見,像UNIX服務器可支持最多256個CPU的系統。

對稱多處理器SMP系統的組建

要組建SMP系統,首先最關鍵的一點就是需要合適的CPU相配合。我們平時看到的CPU都是單個使用,所以看不出來它們有什麼區別,但是,實際上,支持SMP功能並不是沒有條件的,隨意拿幾塊CPU來就可以建立多處理系統那簡直是天方夜談。要實現SMP功能,我們使用的CPU必須具備以下要求:
(1)CPU內部必須內置APIC(Advanced Programmable Interrupt Controllers)單元。Intel 多處理規範的核心就是高級可編程中斷控制器(Advanced Programmable Interrupt Controllers--APICs)的使用。CPU通過彼此發送中斷來完成它們之間的通信。通過給中斷附加動作(actions),不同的CPU可以在某種程度上彼此進行控制。每個CPU有自己的APIC(成為那個CPU的本地APIC),並且還有一個I/O APIC來處理由I/O設備引起的中斷,這個I/O APIC是安裝在主板上的,但每個CPU上的APIC則不可或缺,否則將無法處理多CPU之間的中斷協調。
(2)相同的產品型號,同樣類型的CPU核心。例如,雖然Athlon和Pentium III各自都內置有APIC單元,想要讓它們一起建立SMP系統是不可能的,當然,即使是Celeron和Pentium III,那樣的可能性也為0,甚至Coppermine核心的Pentium III和Tualatin的Pentium III也不能建立SMP系統--這是因為他們的運行指令不完全相同,APIC中斷協調差異也很大。
(3)完全相同的運行頻率。如果要建立雙Pentium III系統,必須兩顆866MHz或者兩顆1000MHz處理器,不可以用一顆866MHz,另一顆1000MHz來組建,否則系統將無法正常點亮。
(4)儘可能保持相同的產品序列編號。即使是同樣核心的相同頻率處理器,由於生產批次不同也會造成不可思議的問題。兩個生產批次的CPU作為雙處理器運行的時候,有可能會發生一顆CPU負擔過高,而另一顆負擔很少的情況,無法發揮最大性能,更糟糕的是可能導致死機,因此,應該儘可能選擇同一批生產的處理器來組建SMP系統。

對稱多處理器SMP的優缺點

對稱多處理器優勢

SMP有幾個優點:
(1)它們是增加吞吐量的一種划算的方法。
(2)由於操作系統由所有處理器共享,它們提供了一個單獨的系統映象(易於管理)。
(3)它們對一個單獨的問題應用多處理器(並行編程)。
(4)負載平衡是由操作系統實現的。
(5)這種單處理器(UP)編程模型可用於一個SMP中。
(6)對於共享數據來説,它們是可伸縮的。
(7)所有數據可由所有處理器尋址,並且由硬件監視邏輯保持連續性。
(8)由於通信經由全局共享內存執行,在處理器之間通信不必使用消息傳送庫。
(9)更多能量的需求可通過向系統添加更多處理器來解決。然而,在一個SMP系統裏添加更多處理器時,您必須設置關於性能增強的現實期望值。
(10)越來越多的應用程序和工具都可以使用。大多數UP應用程序可以在SMP體系結構中運行或者被移植到SMP體系結構中。

對稱多處理器侷限性

SMP 系統有一些侷限性,如下所述:
(1)由於高速緩存相關性、鎖定機制、共享對象和其它問題,可伸縮性受到限制。
(2)需要新技術來利用多處理器,例如線程編程和設備驅動程序編程。

對稱多處理器多處理的類型

有幾種多處理(MP)系統,如下所述:

對稱多處理器非共享MP(純羣集)

每個處理器都是一個完全獨立的機器,運行操作系統的一個副本。處理器之間沒有共享的部分(每一個都有自己的內存,高速緩存和磁盤),但是它們是互聯的。通過LAN連接時,處理器之間是鬆散耦合的。而通過轉換器連接時,處理器之間是緊密耦合的。處理器之間的通信是通過消息傳送來實現的。
這樣一個系統的優點是它具有很好的可伸縮性和高可用性。而缺點則是該系統是一個不為人熟悉的編程模型(消息傳送)。

對稱多處理器共享磁盤MP

處理器擁有自身的內存和高速緩存。處理器並行運行並共享磁盤。每個處理器都運行操作系統的一份副本,並且處理器之間是鬆散耦合的(通過LAN連接)。處理器之間的通信是通過信息傳送實現的。
共享磁盤的優點是保留了熟悉的編程模型的一部分(磁盤數據是可尋址和連續的,而內存則不是),而且與共享內存的系統相比,這種系統更容易實現高可用性。缺點是由於在對共享數據進行物理和邏輯訪問時存在瓶頸,它的可伸縮性受到限制。

對稱多處理器共享內存羣集(SMC)

一個共享內存羣集中的所有處理器有自己的資源(主存儲器、磁盤和I/0),並且每個處理器運行一份操作系統的副本。處理器之間是緊密耦合的(通過一個轉換器連接)。處理器之間的通信是通過共享內存實現的。

對稱多處理器共享內存MP

所有處理器通過一條高速總線或者一個轉換器在同一機器中緊密耦合。處理器共享同樣的全局內存、磁盤和I/0設備。只有一份操作系統的副本跨所有處理器運行,並且操作系統必須設計為能利用這種體系結構(多線程操作系統)。

對稱多處理器對稱多處理器和非對稱多處理器

多處理器系統的工作方式分為非對稱多處理(asym-metrical mulit-processing)和對稱多處理(symmetrical mulit-processing,SMP)兩種。
非對稱多處理器是將若干個處理器掛接到總線上,在各處理器之間形成簡單的主從設備關係。非對稱處理器不允許所有處理器訪問所有系統資源,使系統性能受到限制。
在對稱多處理器系統中,所有處理器的地位都是相同的,所有的資源,特別是存儲器、中斷及I/O空間,都具有相同的可訪問性,消除了結構上的障礙。由多個RISC微處理器構成的共享存儲器的多處理器並行處理系統,不但顯著改善了系統的計算能力和效率,而且具有性能價格比高、通用性和伸縮性強等特點,因此正在成為多機並行系統的主流產品 [1] 

對稱多處理器SMP並行化應用程序

有兩種方法可以在一個SMP中使應用程序並行化,如下所述:
(1)傳統方法是把應用程序分解為多個進程。這些進程使用進程間通信(IPC)方法進行通信,例如管道、信號量或者共享內存。必須能夠阻塞進程使其等待事件的發生(例如來自其它進程的消息),並且進程必須用類似鎖的東西協調對共享對象的訪問。
(2)另一種方法是使用面向 UNIX(POSIX)線程的可移植操作系統接口。線程和進程一樣存在協調的問題,並有類似的處理機制。因此一個單獨的進程可以同時有很多線程運行在不同的處理器上。協調這些線程並且使得對共享數據的訪問序列化是開發者的責任。
在並行化一個應用程序的時候,考慮線程和進程兩者各自的優勢並且決定使用哪種方法。線程可能比進程快,並且它對內存的共享也比較容易。另一方面,進程的實現更容易分佈到多個機器或者羣集中。如果一個應用程序需要創建或者刪除新實例,則線程會更快(在派生進程中開銷更大)。就其它功能而言,線程的開銷和進程差不多 [2] 
參考資料
  • 1.    孟憲海, 李曦. 對稱多處理器系統CPU轉換機制研究[J]. 計算機工程, 2000, 26(3):61-62.
  • 2.    劉瑋. 一種SMP機羣下程序並行化模式的設計與應用[J]. 微電子學與計算機, 2005, 22(11):110-112.