在計算機體系結構中,避免熱點有哪些技術?
在基於多級網路的共享記憶體系統中,成千上萬的處理器可能會嘗試訪問同一個記憶體位置。這個位置被稱為熱點,會顯著增加互連網路的延遲。當兩個處理器嘗試訪問相同的記憶體位置時,無論使用哪種互連網路(交叉開關或多級網路),它們的訊息都會在其中一個交換機中發生衝突。它們到達交換機的兩個多個輸入端,但需要從相同的輸出端出去。
排隊網路透過使用能夠容納少量訊息的佇列儲存,暫時影響交換機中的第二個訊息。儘管有交換機佇列,但排隊網路很容易出現網路飽和。實驗表明,即使只有一小部分訪問針對特定記憶體位置,熱點的存在也會影響不僅是請求訪問熱點的處理器,還會影響嘗試使用網路的其他處理器。
等待的訊息佔用交換機資源,限制了來自其他處理器的訊息對這些資源的可用性。結果,額外的訊息被阻塞,佔用更多資源,熱點飽和以樹狀方式向網路回傳,如圖所示。
非排隊網路拒絕第二個訊息,以便無效訊息退回並釋放網路。這使得需要不同路徑的其他訊息有機會透過網路。拒絕衝突訊息會將網路頻寬降低到O(N/logN)。
在排隊網路訊息中,P7→M4被阻塞,因此阻止了訊息P1→M5透過。這導致訊息P5→M7被阻塞。這種情況表明,嘗試訪問不同記憶體模組的處理器會因熱點而延遲。在非排隊網路中,P5→M7訊息沒有障礙,因為P1→M5將被網路拒絕。
減少交換網路中熱點影響的另一種方法是引入組合交換機。這些交換機識別出兩個訊息指向相同的記憶體模組,在這種情況下,它們可以將兩個訊息合併為一個。
這種方法在執行同步工具(如訊號量和屏障)時特別有利,這些工具通常由執行在特定處理器上的多個程序訪問。採用組合交換機的交換網路稱為組合網路。
NYU 超級計算機中使用的組合交換機的結構如圖所示。來自 Pi 和 Pj 的記憶體請求進入兩個組合佇列,一個用於 Mk 記憶體塊,一個用於 Ml 記憶體塊。如果兩個請求引用相同的記憶體地址,相應的組合佇列將一個請求轉發到記憶體塊,並將第二個請求放入關聯的等待緩衝區。