隨着計算機中CPU核數目的增加,傳統的UMA(unifonn memory access)架構由於對關鍵硬件(如中央內存控制器)的競爭加劇出現了性能上的瓶頸,即擴展性不強。而NUMA架構則以其良好的可擴展性,逐漸成為多核系統的主流架構。本節主要介紹一下目前三大主流的架構體系。
在傳統的PC機上我們的CPU和內存是這樣互聯的:
CPU和內存之間的交互,中間通過北橋芯片進行轉發和交互,如圖,途中顯示了一個CPU的情況下和內存的連接架構圖。
在最初的時候,我們的電腦都單顆CPU的,隨着我們工藝的進步和我們應用的越來越復雜,我們發現單顆CPU以及無法承載我們的計算能力,那么解決的辦法就是多來幾顆CPU,只要在我們的電腦主板上多加幾個CPU插槽,就可以增加CPU的數量,當然這樣加CPU不能隨便在主板上找個空地插上吧,計算機底層全部都是基礎電路,所以對於他的體系結構設計就顯得很重要,所以在進過一眾高手的理論和實踐之后,出來了一種如下所示的架構:
如圖,我們這里顯示了4顆CPU,每個CPU 4核心,組成一個多處理結構。當然這里面還有很多的技術細節,但是在這里我沒法一一呈現。我們知道,在CPU當中,每個CPU有幾個核心,就表明同一時刻可以有多少個進程可以運行。如圖,如果一顆CPU的核心數是4核心的話,那么他就支持在同一時刻同時運行4個進程,開啟了超線程技術之后,就可以同時運行8個進程。所以在上圖中,我們的計算能力就是4x4=16,如果開啟超線程就是4x4x2=32。
SMP架構
在上圖中間,CPU的處理能力增加了,內存的存儲容量提升了,但是這個時候瓶頸就出現在了北橋芯片上,於是那掉中間的北橋芯片,讓CPU直接和內存進行交互。如下圖:
這就是SMP架構,SMP(Symmetric Multi-Processing),對稱多處理結構的簡稱,是指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享內存子系統以及總線結構。在這種技術的支持下,一個服務器系統可以同時運行多個處理器,並共享內存和其他的主機資源。以上這段介紹摘自百度百科。
SMP模式將多個處理器與一個集中的存儲器相連。在SMP模式下,所有處理器都可以訪問同一個系統物理存儲器,這就意味着SMP系統只運行操作系統的一個拷貝。因此SMP系統有時也被稱為一致存儲器訪問(UMA)結構體系,一致性意指無論在什么時候,處理器只能為內存的每個數據保持或共享唯一一個數值。很顯然,SMP的缺點是可伸縮性有限,因為在存儲器接口達到飽和的時候,增加處理器並不能獲得更高的性能。SMP系統有時也被稱為一致存儲器訪問(UMA)結構體系。
MPP架構
由於SMP的缺點,人們開發出了另一種架構來試圖避免這種缺點,這種架構就是MPP架構,其結構如下圖所示:
MPP是一種分布式存儲器模式,能夠將更多的處理器納入一個系統的存儲器。一個分布式存儲器模式具有多個節點,每個節點都有自己的存儲器,可以配置為SMP模式,也可以配置為非SMP模式。單個的節點相互連接起來就形成了一個總系統。MPP體系結構對硬件開發商頗具吸引力,因為它們出現的問題比較容易解決,開發成本比較低。由於沒有硬件支持共享內存或高速緩存一致性的問題,所以比較容易實現大量處理器的連接。
NUMA架構
但是這種MPP架構每個處理器只能訪問他自己的本地的存儲,而不能訪問別是處理器的存儲,這就可能造成可能這個處理器需要的存儲資源比較多時,沒法遠程調用其他處理器的存儲資源,而且也可能另一個處理器的存儲資源總是處於閑置狀態,為了解決這個問題,開發了另一種架構,即NUMA架構,如下圖:
非統一內存訪問(NUMA)是一種用於多處理器的電腦記憶體設計,內存訪問時間取決於處理器的內存位置。在NUMA下,處理器訪問它自己的本地存儲器的速度比非本地存儲器(存儲器的地方到另一個處理器之間共享的處理器或存儲器)快一些。
NUMA架構在邏輯上遵循對稱多處理(SMP)架構。 它是在二十世紀九十年代被開發出來的,開發商包括Burruphs (優利系統), Convex Computer(惠普),意大利霍尼韋爾信息系統(HISI)的(后來的Group Bull),Silicon Graphics公司(后來的硅谷圖形),Sequent電腦系統(后來的IBM),通用數據(EMC), Digital (后來的Compaq,HP)。 這些公司研發的技術后來在類Unix操作系統中大放異彩,並在一定程度上運用到了Windows NT中。
NUMA通過提供分離的存儲器給各個處理器,避免當多個處理器訪問同一個存儲器產生的性能損失來試圖解決這個問題。對於涉及到分散的數據的應用(在服務器和類似於服務器的應用中很常見),NUMA可以通過一個共享的存儲器提高性能至n倍,而n大約是處理器(或者分離的存儲器)的個數。
NUMA既保持了SMP模式單一操作系統拷貝、簡便的應用程序編程模式以及易於管理的特點,又繼承了MPP模式的可擴充性,可以有效地擴充系統的規模。這也正是NUMA的優勢所在。
本文出自 “我拿流年亂了浮生” 博客,請務必保留此出處http://tasnrh.blog.51cto.com/4141731/1729312