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