正文

基于任務(wù)的程序設(shè)計(jì)(19)

C#并行編程高級(jí)教程 作者:(美)Gastón C.Hillar


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)存的速度要慢。


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)