1.7 為NUMA架構(gòu)和更高的可擴展性做好準備
近年來,使用最廣的多處理器模型——多稱多處理器(symmetric multiprocessor,SMP)模型——已經(jīng)讓位給了非一致性內(nèi)存訪問(non-uniform memory access,NUMA)體系結(jié)構(gòu)。SMP最大的問題之一在于處理器總線成為了未來可擴展性的瓶頸,因為每一個處理器都能平等地訪問內(nèi)存和I/O。
而在NUMA體系結(jié)構(gòu)中,每一個處理器訪問距離自己近的內(nèi)存的速度比訪問距離自己遠的內(nèi)存的速度要快。當處理器數(shù)目大于4的時候,NUMA能夠提供更好的可擴展性。在Windows垂直擴展技術(shù)的術(shù)語中,NUMA是按照以下方式組織的(這種組織的示意圖見圖1-17):
● 一臺計算機可以有一個或多個組(group)。
● 每個組可以有一個或多個NUMA節(jié)點(node)。
● 每個NUMA節(jié)點可以包含一個或多個物理處理器或插槽(真正的微處理器)。構(gòu)成一個NUMA節(jié)點的不同微處理器可以訪問本地內(nèi)存和I/O。
● 每個處理器或插槽具有一個或多個物理內(nèi)核,因為處理器通常都是多核微處理器。
● 每個物理內(nèi)核可以提供一個或多個邏輯處理器或硬件線程。
圖1-18展示了一臺具有一個組的計算機,這一個組具有兩個NUMA節(jié)點。每個NUMA節(jié)點具有兩個能夠訪問這個節(jié)點的本地內(nèi)存和I/O的微處理器。如果運行在NUMA節(jié)點#0上的處理器#0的物理內(nèi)核#0上的一個線程需要訪問NUMA節(jié)點#1的本地內(nèi)存,那么這個線程必須通過兩個NUMA節(jié)點之間共享的總線來傳輸數(shù)據(jù),因此,這個過程比訪問本地內(nèi)存的速度要慢。