天天看點

對稱多處理器系統-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) 的單份拷貝就能控制所有核心,使任何處理器都能運作所有的線程,而無需考慮核心、應用或中斷服務的區分。

繼續閱讀