産生
非統一内存訪問(NUMA)是一種用于多處理器的電腦記憶體設計,内存訪問時間取決于處理器的内存位置。在NUMA下,處理器訪問它自己的本地存儲器的速度比非本地存儲器(存儲器的地方到另一個處理器之間共享的處理器或存儲器)快一些。
NUMA架構在邏輯上遵循對稱多處理(SMP)架構。它是在二十世紀九十年代被開發出來的,開發商包括Burruphs(優利系統),ConvexComputer(惠普),意大利霍尼韋爾信息系統(HISI)的(後來的GroupBull),SiliconGraphics公司(後來的矽谷圖形),Sequent電腦系統(後來的IBM),通用數據(EMC),Digital(後來的Compaq,HP)。這些公司研發的技術後來在類Unix操作系統中大放異彩,并在一定程度上運用到了WindowsNT中。
首次商業化實現基于NUMA的Unix系統的是對稱多處理XPS-100系列服務器,它是由VAST公司的DanGielen為HISI設計的。這個架構的巨大成功使HISI成為了歐洲的頂級Unix廠商。
基本概念
現代計算機的處理速度比它的主存速度快不少。而在早期的計算和數據處理中,CPU通常比它的主存慢。但是随着超級計算機的到來,處理器和存儲器的性能在二十世紀六十年代達到平衡。自從那個時候,CPU常常對數據感到饑餓而且必須等待存儲器的數據到來。為了解決這個問題,很多在80和90年代的超級計算機設計專注于提供高速的存儲器訪問,使得計算機能夠高速地處理其他系統不能處理的大數據集。
限制訪問存儲器的次數是現代計算機提高性能的要點。對于商品化的處理器,這意味着設置數量不斷增長的高速緩存和使用不斷變得精巧複雜的算法以防止“緩存數據缺失(cachemissed)”。但是操作系統和應用程序大小的明顯增長壓制了前述的緩存技術造成的提升。沒有使用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的優勢所在。
發展經過
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大幾個數量級。



















