1. 程式人生 > >對稱多處理器系統-SMP

對稱多處理器系統-SMP

1 概念:SMP和MP

在講SMP之前需要先了解下MP系統的概念以及其分類

SMP(Symmetric multiprocessing,對稱多處理器技術)是提高系統處理能力的一種方法。單CPU同時只能處理一個執行緒,如果有許多執行緒需要執行,PU數量必然是一個瓶頸,只能通過提高CPU頻率提高處理效能。MP技術(Multi-Processing,多處理技術)使用多個CPU能夠協同工作,並行處理,每個CPU在執行佇列中選取一個執行緒執行。MP系統依據資源共享方式,有多種型別:

1.1.鬆耦合的多處理技術

許多不同系統通過網路通訊技術進行互聯,通常通過軟體技術實現,例如IBM的SP系統(System Parallel,並行系統)、使用群集軟體HACMP的並行版(PSSP),建立起鬆耦合的多處理架構。不同的系統被稱為節點,可以互相共享檔案、儲存,但並不共享CPU和記憶體,通過專用高速網路進行節點間通訊(SP系統專用的交換網路,或者Infinity Band網路等),利用軟體控制任務分發和並行處理。

1.2.緊耦合的多處理技術

多個CPU之間共享部分記憶體,但每個CPU都有自己的獨立記憶體和匯流排結構,通過一個作業系統控制不同處理器之間協同工作,一般有一個主處理器,管理其他從處理器,如果此主處理器不能工作,則由第二候選處理器升級為主處理器。

1.3.對稱多處理技術

多個CPU之間沒有區別,平等地訪問記憶體、外設、一個作業系統。作業系統管理著一個佇列,每個處理器依次處理佇列中的程序。如果兩個處理器同時請求訪問一個資源(例如同一段記憶體地址),由硬體、軟體的鎖機制去解決資源爭用問題。

pSeries採用的就是SMP結構。在AIX中,每個處理器依據其物理位置,依次標記為:proc0,proc1,…不同處理器在正常執行的時候沒有區別,但是在機器啟動的時候,通常由proc0控制引導過程,如果必要,也可以控制系統核心從其他的處理器引導系統。

由於SMP需要協調各個處理器之間的工作,因此當處理器數量很多,或者執行任務的並行度差(任務之間有複雜的邏輯關聯)時,CPU數量增加,則系統性能提高的比例遞減,也就是所謂的線性度不好。線性度與CPU設計、作業系統架構及任務型別關係密切,每個計算機廠商都有自己的一套理論來支援自己的設計體系,並沒有哪一種理論可以佔據絕對優勢。例如Sun走的是"群毆"路線,用數量眾多的CPU、記憶體來提高總體效能,儘管最後將近滿配的時候,每個CPU所帶來的效能提升非常有限。Sun伺服器中動輒幾十顆,甚至一百多顆CPU並行!IBM則走向另一個極端,甚至曾經建議客戶不要使用12顆以上的CPU執行一個作業系統映像(當然也有人說這是因為當時IBM的最高階伺服器S70只能支援12顆CPU,作者則覺得兩種原因都有)。現在呢,IBM的UNIX伺服器仍然是採用少而精的策略,最高階伺服器也只可以配到64顆CPU(在IBM只支援最多32顆CPU的時候,HP和Sun的伺服器就有可以支援到128顆的配置了,當然可能當時的作業系統並不支援這麼多,需要分割槽後才能使用,一個分割槽最多64顆CPU)。IBM的一種解釋是這樣可以降低軟體License的費用(因為現在大部分UNIX伺服器軟體都是按照CPU數量收費的);另一方面,IBM的POWER 5 CPU確實擁有很高的處理能力,可以以一敵二(至少現在的TPCC測試結果是這樣),能夠讓IBM的銷售代表理直氣壯地任意解釋。

2 SMP 

SMP是一種緊耦合、共享儲存的系統模型,特點是多個CPU使用共同的系統匯流排,因此可訪問共同的外設和儲存器資源。(所有處理器通過一條高速匯流排或者一個轉換器在同一機器中緊密耦合處理器共享同樣的全域性記憶體、磁碟和 I/0 裝置。只有一份作業系統的副本跨所有處理器執行,並且作業系統必須設計為能利用這種體系結構多執行緒作業系統)

2.1 構建SMP 系統的條件

首先,關鍵的是需要支援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系統。 其次,需要作業系統的支援,例如LINUX UNIX WINDOWS SERVER 2003 等支援SMP 的系統。 最後,需要支援SMP的應用軟體。 2.2  對稱多處理 (SMP) 的應用優勢 對稱多處理 (SMP) 廣泛應用於 PC 領域,能夠顯著提升臺式計算機的效能。SMP 能使單晶片上多個相同的處理子系統執行相同的指令集,而且都對儲存器、I/O 和外部中斷具有同等的訪問許可權。作業系統 (OS) 的單份拷貝就能控制所有核心,使任何處理器都能執行所有的執行緒,而無需考慮核心、應用或中斷服務的區分。