如何在計算機體系結構中解決可擴充套件計算機的問題?


在任何可擴充套件的計算機系統中,需要解決兩個基本問題:

  • 容忍並隱藏遠端載入的延遲。

  • 容忍並隱藏由於並行處理器之間的同步而導致的空閒。

在使用某種形式的分散式記憶體的可擴充套件並行系統中,遠端載入是不可避免的。訪問本地記憶體通常只需要一個時鐘週期,而訪問遠端記憶體單元可能需要長得多,時間上可能相差兩個數量級。如果發出遠端載入操作的處理器不得不等待操作完成,在此期間不做任何其他工作,則遠端載入會顯著降低計算速度。

由於大多數程式中的載入指令速率很高,延遲問題會消除並行活動的所有潛在好處。一個典型的例子如圖所示,其中P0必須從兩個遠端記憶體塊M1和Mn載入兩個值A和B來計算表示式A + B。

A和B的指標分別為rA和rB,儲存在P0的本地記憶體中。透過rload rA和rload rB指令訪問A和B,這些指令必須透過互連網路來獲取A和B。

如果rA和rB的值當前在M1和Mn中不可用,因為它們要由稍後執行的其他程序產生,情況會更糟。在這種情況下,由於並行程序之間的同步而導致空閒,原始程序P0必須等待不可預測的時間,從而導致不可預測的延遲。

為了解決這些問題,已經提出並應用於各種平行計算機中幾種可能的硬體/軟體解決方案:

  • 應用快取記憶體

  • 預取

  • 引入執行緒和執行緒之間快速的上下文切換機制。

如果大多數遠端載入操作都可以在本地快取上執行,則使用快取記憶體可以大大減少遠端載入操作所花費的時間。假設A與表示式中包含A的後續表示式中的物件C和D位於同一個快取塊中:

  • Result:= A + B;
  • Result2:= C – D;

在這種情況下,快取A也會將C和D帶入P0的快取記憶體中,因此C和D的遠端載入被本地快取操作替換,從而導致程式執行速度顯著加快。

預取技術依賴於類似的原理。其主要思想是在需要資料之前將其載入到本地記憶體或快取中。預取操作是在發出實際記憶體操作之前,直接發出非阻塞請求來獲取資訊。

更新於:2021年7月27日

1K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.