SMP英文全稱為Symmetrical Multi-Processing,意指「對稱多處理」技術,是指在一個電腦上彙集了一組處理器―即多CPU,各CPU之間共用記憶體子系統以及匯流排結構。 它是相對非對稱多處理技術而言的、應用十分廣泛的並行技術。
在這種架構中,一台電腦不再由單個CPU組成,而同時由多個處理器運行作業系統的單一複本,並共用記憶體和一台電腦的其他資源。 雖然同時使用多個CPU,但是從管理的角度來看,它們的表現就像一台單機一樣。 系統將任務佇列對稱地分佈于多個CPU之上,從而極大地提高了整個系統的資料處理能力。 所有的處理器都可以平等地訪問記憶體、I/O和外部中斷。 在對稱多處理系統中,系統資源被系統中所有CPU共用,工作負載能夠均勻地分配到所有可用處理器之上。
SMP應用
目前的SMP技術主要用在RISC伺服器陣營的多路小型機、X86伺服器陣營的多路處理系統以及採用部分採用虛擬CPU技術實現單CPU(或多CPU)虛擬多路中。
我們平時見到的雙路CPU系統,屬於對稱多處理系統中最常見的一種,通常稱為"2路對稱多處理",它在普通的商業、家庭應用之中並沒有太多實際用途,但在專業製作,如3DMax Studio、 Photoshop等軟體應用中獲得了非常良好的性能表現,是組建廉價工作站的良好夥伴。 隨著使用者應用水準的提高,只使用單個的處理器確實已經很難滿足實際應用的需求,因而各伺服器廠商紛紛通過採用對稱多處理系統來解決這一矛盾。 在國內市場上這類機型的處理器一般以4個或8個為主,有少數是16個處理器。 但是一般來講,SMP結構的機器可擴充性較差,很難做到100個以上多處理器,常規的一般是8個到16個,不過這對於多數的使用者來說已經夠用了。
這種機器的好處在於它的使用方式和微機或工作站的區別不大,程式設計的變化相對來說比較小,原來用微機工作站編寫的程式如果要移植到SMP機器上使用,改動起來也相對比較容易。 SMP結構的機型可用性比較差。 因為4個或8個處理器共用一個作業系統和一個儲存體,一旦作業系統出現了問題,整個機器就完全癱瘓掉了。 而且由於這個機器的可擴充性較差,不容易保護使用者的投資。 但是這類機型技術比較成熟,相應的軟體也比較多,因此現在國內市場上推出的並行機大量都是這一種。 PC伺服器中最常見的對稱多處理系統通常採用2路、4路、6路或8路處理器。 目前UNIX伺服器可支援最多64個CPU的系統,如Sun公司的產品Enterprise 10000。 SMP系統中最關鍵的技術是如何更好地解決多個處理器的相互通訊和協調問題。
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核心。 例如,雖然至強和皓龍各自都內置有APIC單元,想要讓它們一起建立SMP系統是不可能的,同時,即使同屬於至強系列或者皓龍系列的CPU核心,而且屬於同一開發平臺,也不能建立SMP系統--這是因為他們的運行指令不完全相同, APIC中斷協調差異也很大。
3、完全相同的運行頻率。 如果要建立雙至強或雙皓龍系統,必須兩顆2.8GHz或者兩顆3.0GHz處理器,不可以用一顆2.8GHz,另一顆3.0GHz來組建,否則系統將無法正常點亮。
4、盡可能保持相同的產品序列編號。 即使是同樣核心的相同頻率處理器,由於生產批次不同也會造成不可思議的問題。 兩個生產批次的CPU作為雙處理器運行的時候,有可能會發生一顆CPU負擔過高,而另一顆負擔很少的情況,無法發揮最大性能,更糟糕的是可能導致死機,因此,應該盡可能選擇同一批生產的處理器來組建SMP系統。