CPU拓撲結構之非一致性內存訪問

非一致內存訪問——NUMA

       硬件已經趨向使用多條系統總線,每條系統總線爲一小組處理器提供服務。每組處理器都有自己的內存,並可能有自己的 I/O 通道。但是,每個 CPU 都可以通過一致的方式訪問與其他組關聯的內存。每個組稱爲一個“NUMA 點”。NUMA 節點中的 CPU 數量取決於硬件供應商。訪問本地內存比訪問與其他 NUMA 節點關聯的內存快。這就是“非一致性內存訪問體系結構”名稱的由來。
 
        在對稱多處理系統中,處理器共享北橋中的內存控制器來達到共同訪問外部內存和IO的目的,也就是說所有的處理器對內存和I/O的訪問方式和開銷都是相同的。在這種系統中,隨着更多的處理器被添加到SMP系統中,總線的競爭將會越來越大,系統的性能也必將隨之大打折扣。
 
        NUMA系統擁有多條內存總線,於是將幾個處理器通過內存總線與一塊內存相連構成一個組,這樣整個龐大的系統就可以被分爲若干個組,這個組的概念在NUMA系統中被稱爲節點(node)。處於該節點中的內存被稱爲本地內存(local memory),處於其他節點中的內存對於該組而言被稱爲外部內存(foreign memory)。而節點又可以分爲三類,即本地節點(local node),鄰居節點(neighbour node)和遠端節點(remote node).

本地節點:對於某個節點中的所有CPU,此節點稱爲本地節點;

鄰居節點:與本地節點相鄰的節點稱爲鄰居節點;

遠端節點:非本地節點或鄰居節點的節點,稱爲遠端節點。

 
介紹完這些基本概念後來看計算機系統中CPU拓撲是如何體現出這個特性的!

        在現今的多核處理器架構中,一臺主機往往存在多個物理封裝(socket),每一個物理封裝中又封裝了多個物理核(core),採用超線程技術後,每一個物理核(core)又包括多個物理CPU,同一物理封裝中的各物理核能夠共享三級緩存;同一物理核中的物理CPU能夠共享二級緩存;

如下圖所示

那麼如何來查看計算機的NUMA節點呢

通過ls /sys/devices/system/node/命令即可

 

至於socket、core與processor之間的關係可以通過cat /proc/cpuinfo命令來看

cat /proc/cpuinfo|grep “physical id”  顯示出的就是soceket的物理編號

cat /proc/cpuinfo也會顯示每個processor的core編號,查看同時每個processor也都有自己的編號

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章