NUMA

用於多處理器的電腦記憶體設計

NUMA(Non Uniform Memory Access Architecture)技術可以使眾多伺服器像單一系統那樣運轉,同時保留小系統便於編程和管理的優點。基於電子商務應用對內存訪問提出的更高的要求,NUMA也向複雜的結構設計提出了挑戰。

產生


非統一內存訪問(NUMA)是一種用於多處理器的電腦記憶體設計,內存訪問時間取決於處理器的內存位置。在NUMA下,處理器訪問它自己的本地存儲器的速度比非本地存儲器(存儲器的地方到另一個處理器之間共享的處理器或存儲器)快一些。
NUMA架構在邏輯上遵循對稱多處理(SMP)架構。它是在二十世紀九十年代被開發出來的,開發商包括Burruphs (優利系統), Convex Computer(惠普),義大利霍尼韋爾信息系統(HISI)的(後來的Group Bull),Silicon Graphics公司(後來的矽谷圖形),Sequent電腦系統(後來的IBM),通用數據(EMC), Digital (後來的Compaq ,HP)。這些公司研發的技術後來在類Unix操作系統中大放異彩,並在一定程度上運用到了Windows NT中。
首次商業化實現基於NUMA的Unix系統的是對稱多處理XPS-100系列伺服器,它是由VAST公司的Dan Gielen為HISI設計的。這個架構的巨大成功使HISI成為了歐洲的頂級Unix廠商。

基本概念


現代計算機的處理速度比它的主存速度快不少。而在早期的計算和數據處理中,CPU通常比它的主存慢。但是隨著超級計算機的到來,處理器和存儲器的性能在二十世紀六十年代達到平衡。自從那個時候,CPU常常對數據感到飢餓而且必須等待存儲器的數據到來。為了解決這個問題,很多在80和90年代的超級計算機設計專註於提供高速的存儲器訪問,使得計算機能夠高速地處理其他系統不能處理的大數據集。
限制訪問存儲器的次數是現代計算機提高性能的要點。對於商品化的處理器,這意味著設置數量不斷增長的高速緩存和使用不斷變得精巧複雜的演演算法以防止“緩存數據缺失(cache missed)”。但是操作系統和應用程序大小的明顯增長壓制了前述的緩存技術造成的提升。沒有使用NUMA的多處理器系統使得問題更糟糕。因為同一時間只能有一個處理器訪問計算機的存儲器,所以在一個系統中可能存在多個處理器在等待訪問存儲器。
NUMA通過提供分離的存儲器給各個處理器,避免當多個處理器訪問同一個存儲器產生的性能損失來試圖解決這個問題。對於涉及到分散的數據的應用(在伺服器和類似於伺服器的應用中很常見),NUMA可以通過一個共享的存儲器提高性能至n倍,而n大約是處理器(或者分離的存儲器)的個數。
當然,不是所有數據都局限於一個任務,所以多個處理器可能需要同一個數據。為了處理這種情況,NUMA系統包含了附加的軟體或者硬體來移動不同存儲器的數據。這個操作降低了對應於這些存儲器的處理器的性能,所以總體的速度提升受制於運行任務的特點。

介紹


當今數據計算領域的主要應用程序和模型可大致分為聯機事務處理(OLTP)、決策支持系統(DSS)和企業信息通訊(BusinessCommunications)三大類。而小型獨立伺服器模式、SMP(對稱多處理)模式、MPP(大規模并行處理)模式和NUMA模式,則是上述3類系統設計人員在計算平台的體系結構方面可以採用的選擇。
為了全面的了解NUMA的優勢,我們不妨先來考察一下這幾種模式在處理器與存儲器結構方面的區別。
SMP模式將多個處理器與一個集中的存儲器相連。在SMP模式下,所有處理器都可以訪問同一個系統物理存儲器,這就意味著SMP系統只運行操作系統的一個拷貝。因此SMP系統有時也被稱為一致存儲器訪問(UMA)結構體系,一致性意指無論在什麼時候,處理器只能為內存的每個數據保持或共享唯一一個數值。很顯然,SMP的缺點是可伸縮性有限,因為在存儲器介面達到飽和的時候,增加處理器並不能獲得更高的性能。
MPP模式則是一種分散式存儲器模式,能夠將更多的處理器納入一個系統的存儲器。一個分散式存儲器模式具有多個節點,每個節點都有自己的存儲器,可以配置為SMP模式,也可以配置為非SMP模式。單個的節點相互連接起來就形成了一個總系統。MPP體系結構對硬體開發商頗具吸引力,因為它們出現的問題比較容易解決,開發成本比較低。由於沒有硬體支持共享內存或高速緩存一致性的問題,所以比較容易實現大量處理器的連接。
可見,單一SMP模式與MPP模式的關鍵區別在於,在SMP模式中,數據一致性是由硬體專門管理的,這樣做比較容易實現,但成本較高;在MPP模式中,節點之間的一致性是由軟體來管理,因此,它的速度相對較慢,但成本卻低得多。
在美國某大學的研究項目中被提出來的NUMA模式,也採用了分散式存儲器模式,不同的是所有節點中的處理器都可以訪問全部的系統物理存儲器。然而,每個處理器訪問本節點內的存儲器所需要的時間,可能比訪問某些遠程節點內的存儲器所花的時間要少得多。換句話說,也就是訪問存儲器的時間是不一致的,這也就是這種模式之所以被稱為“NUMA”的原因。簡而言之,NUMA既保持了SMP模式單一操作系統拷貝、簡便的應用程序編程模式以及易於管理的特點,又繼承了MPP模式的可擴充性,可以有效地擴充系統的規模。這也正是NUMA的優勢所在。

緩存


幾乎所有利用少量的極快的非共享的內存例如cache的CPU結構利用內存訪問方法中引用的位置。使用NUMA的系統,在共享內存時維持高速緩存一致性的開銷非常大。儘管設計與搭建更簡單,但是非一致性高速緩存NUMA系統編程在馮諾依曼編程架構標準下變得非常複雜。
NUMA
NUMA
典型的,ccNUMA在緩存控制器中使用處理器間通信,以此來保持穩定的存儲器映像當多個緩存試圖存儲在同一個內存位置時。由於這個原因,當多處理器快速連續的嘗試訪問相同的內存區時ccNUMA可能表現比較差。支持NUMA的操作系統嘗試通過以NUMA友好的方式分配處理器和內存,同時避免會使NUMA非友好方式成為必然的調度、鎖定演演算法來降低這種類型訪問的頻率。另外,緩存一致性協議如MESIF協議試圖減少需要維護緩存一致性的通信。可擴展一致性介面(SCI)是一個IEEE標準定義的一個基於目錄的緩存一致性協議,以避免在早期的多處理器系統中發現的可擴展性限制。SCI被用作Numascale NumaConnect的基礎技術。
截止2011年,ccNUMA系統是基於AMD Opteron處理器的多處理器系統(該系統可以在沒有外部邏輯的情況下執行),或者基於英特爾安騰處理器(需要晶元組以支持NUMA的系統)。支持CCNUMA的晶元組例子有SGI SHUB(Super hub),Intel E8870,HP sx2000(在Integrity and Superdome伺服器中使用),和那些以NEC Itanium-based的系統上。早期ccNUMA系統例如那些來自矽谷圖形(計算機公司)是基於MIPS處理器和DEC Alpha 21364(EV7)處理器的。

發展經過


Sequent公司是世界公認的NUMA技術領袖。早在1986年,Sequent公司率先利用微處理器作為創建大型系統的構建,開發了基於Unix的SMP體系結構,開創了業界轉入SMP領域的先河。1999年9月,IBM公司收購了Sequent公司,將NUMA技術集成到IBMUnix陣營中,並推出了能夠支持和擴展Intel平台的NUMA-Q系統及解決方案,為全球大型企業客戶適應高速發展的電子商務市場提供了更加多樣化、高可擴展性及易於管理的選擇,成為NUMA技術的領先開發者與革新者。
此後,IBM還推出了名為NUMACenter的多層次系統,集成了Unix和WindowsNT系統優勢,為WindowsNT應用程序提供了預集成的環境,允許客戶在高可擴充性和高可用性的Unix數據層中,自由使用WindowsNT應用程序,有效的實現了Unix和WindowsNT的互操作。
NUMA-Q結構的基本構成是Intel的4個處理器組建塊(Quad)設計,NUMA-Q實現的2項關鍵技術是Quad設計和IQ-Link互連設備。NUMA-QQuad由4個處理器、一定數量的內存和7個位於PCI通道的PCI插槽組成。NUMA-Q體系結構利用Quad實現了CC-NUMA結構,大規模擴展並保留了SMP編程模式,並可提供容錯光纖通道I/O子系統,使SMP應用程序能運行於其上。NUMA-Q能在單一節點上支持高達256個處理器。IQ-Link互聯設備是NUMA-QQuad匯流排間的互聯設備,這種互聯設備的一致性嚴格以硬體實現,不需要用軟體維護。IQ-Link互聯設備允許使用多個低延遲匯流排,具備低延遲和吞吐量高的特點,提供了很強的系統可擴充性和整體性能。
可見,這種體系結構的優勢在於:首先,NUMA的突破性技術徹底擺脫了傳統的超大匯流排對多處理結構的束縛。它大大增強單一操作系統可管理的處理器、內存和I/O插槽。
其次,NUMA設計的重點是讓處理器快速的訪問在同一單元的內存,NUMA-Q處理器訪問同一單元上的內存的速度比一般SMP模式超出一倍。並且,NUMA-Q操作系統充分利用處理器緩存,能達到極高的定址命中率。SMP模式雖然比NUMA簡單,但是,所有的處理器訪問內存的時間是一致且緩慢的。同時,基於SMP的匯流排存著在一個物理極限,令系統的擴充性逐步降低。此外,在基於SMP體系結構的大型系統中,平衡的增加處理器、I/O和內存變得更加困難。
此外,NUMA系統提供內存互連的硬體系統,這種技術可以開發新型動態的分區系統。系統分區的好處在於允許系統管理員在同一計算機內運行多個操作系統(如Unix和WindowsNT),並根據用戶工作負荷的要求,在不同的操作系統環境間,簡單的管理和使用CPU和內存資源,從而實現最佳的性能和最高的資源利用率。
NUMA-Q現已成為IBM網際網路伺服器部門的支柱產品,加強了IBM伺服器在電子商務領域的競爭力。不難看出,NUMA-Q的目標市場是那些解決“關鍵事務性”(Mission-Critical)的商業數據中心。這些商業數據中心的計算機系統具有一些共同的特徵,如具有高可用性、高可靠性、能夠適應與日俱增的性能需求的高可擴充性的特點。NUMA-Q體系結構可以幫助聯機事務處理、決策支持系統和企業信息通訊系統設計人員創建這種大規模的“關鍵事務性”解決方案。
因此,NUMA-Q廣泛的適用於具有大量I/O計算、商業智能、客戶關係管理、企業資源規劃的環境。它給企業提供利用同一組部件創建多種體系結構的靈活性,以及適用於多種解決方案的高可用性和高可管理性的工具集,同時可以支持多用戶和更大的吞吐量,減少客戶故障停機時間,提升了I/O功能,實現更大的聯機存儲與備份能力,並具有很強的擴展性,可以最大程度地保護客戶的投資。
目前,包括美國Nasdaq證券自動報價系統,波音飛機製造公司、福特汽車公司等在內的諸多國際著名企業都選用了IBMNUMA-Q體系結構的伺服器,全球最大的Internet兒童產品零售商eToys依靠NUMA-Q成功地實現了電子商務。國內已有很多大型企業,包括中國銀行中國建設銀行、郵政儲蓄管理局、北京西單商場股份有限公司及國務院辦公廳等等部門,採用IBMNUMA-Q建立了自己的系統環境。
業界許多伺服器產品供應商,如Sun、HP、Compaq、Unisys、SGI和DataGeneral等廠商的硬體結構也將向NUMA結構轉移,很多廠商正在計劃或正在研製基於NUMA體系結構的計算機系統。IBM也將推出更有競爭力的第4代NUMA-Q體系結構,迎接NUMA對複雜設計、多路I/O提出的挑戰。
高速緩存相關的非一致性內存訪問(CacheCoherentNon-UniformMemoryAccess,CC-NUMA)是NUMA的一種類型。在CC-NUMA系統中,分散式內存相連接形成單一內存,內存之間沒有頁面複製或數據複製,也沒有軟體消息傳送。CC-NUMA只有一個內存映象,存儲部件利用銅纜和某些智能硬體進行物理連接。CacheCoherent是指不需要軟體來保持多個數據拷貝的一致性,也不需要軟體來實現操作系統與應用系統的數據傳輸。如同在SMP模式中一樣,單一操作系統和多個處理器完全在硬體級實現管理。
高速緩存唯一的內存體系結構(Cache-OnlyMemoryArchitecture,COMA)是CC-NUMA體系結構的競爭者,兩者擁有相同的目標,但實現方式不同。COMA節點不對內存部件進行分佈,也不通過互連設備使整個系統保持一致性。COMA節點沒有內存,只在每個Quad中配置大容量的高速緩存。

集群運算


我們可以把NUMA看作集群運算的一個緊密耦合的形式。虛擬內存對集群結構的頁式調度技術的加入更是使得NUMA可以完全由軟體實現。基於軟體的NUMA在節點間的延遲仍然比基於硬體的NUMA大幾個數量級。