什麼是NUMA?
NUMA代表非一致性記憶體訪問(Non-Uniform Memory Access)。NUMA是一種多處理器模型,其中每個處理器都連線到專用的記憶體。非一致性記憶體訪問(NUMA)機器旨在避免UMA機器的記憶體訪問瓶頸。邏輯共享記憶體在NUMA機器的處理節點之間物理分配,從而形成分散式共享記憶體架構。
這些平行計算機的可擴充套件性非常高,但它們對本地記憶體中的資料分配非常敏感。訪問節點的本地記憶體段比訪問遠端記憶體段快得多。
主要區別在於地址空間的組織方式。在多處理器中,使用全域性地址空間,該空間從每個處理器都能一致地看到。多個處理器可以訪問所有記憶體區域。
在多計算機中,地址空間在處理單元(PE)的本地記憶體中被複制。不允許任何PE直接訪問另一個PE的本地記憶體。
這種記憶體地址空間的差異也反映在軟體層面:分散式記憶體多計算機基於訊息傳遞正規化進行程式設計,而NUMA機器基於全域性地址空間原則進行程式設計。
在近期的平行計算機(例如Cray T3D)中,這些機器變得越來越難以區分,因為兩種程式設計正規化都以庫包的形式提供給使用者。
另一個使差異更小的因素是,訪問遠端記憶體模組的實際方式在這兩類MIMD計算機中是相同的。即使在NUMA機器中,遠端記憶體訪問也是透過訊息實現的,類似於訊息傳遞多計算機。
在分散式記憶體多計算機中不會出現快取一致性問題,因為訊息傳遞正規化顯式地管理多個等效資料結構的副本,這些副本以自主訊息的形式存在。
在共享記憶體正規化中,可以訪問類似的全域性資料結構,如果在本地快取中保留全域性資料結構的本地副本,則可以提高訪問效率。
硬體提供的快取一致性方案沒有引入到NUMA機器中。這些系統可以快取只讀程式碼和資料以及本地資料,但不能快取共享的可修改資訊。這是NUMA和CC-NUMA多處理器之間的顯著區別。NUMA機器更接近多計算機,而不是其他共享記憶體多處理器,而CC-NUMA機器代表真正的共享記憶體系統。
在NUMA機器(例如多計算機)中,主要設計問題是處理器節點的組織、互連網路以及降低遠端記憶體訪問的可能方法。典型的NUMA機器包括Cray T3D和Hector多處理器。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP