text: Dragon 協議是一種用於多處理器系統的基於更新的快取一致性協議。透過直接更新跨多個處理器的所有快取值來執行寫傳播。基於更新的協議在寫入快取塊之後由其他處理器進行多次讀取時會高效執行，因為更新的快取塊很容易在與所有處理器關聯的快取中使用。狀態.每個快取塊都處於以下四種狀態之一：Exclusive-clean、Shared clean 、Shared modified和Modify。對於任何給定的快取對，給定快取塊的允許狀態連同其他快取狀態的狀態如下：事務.有 4 個處理器事務和 2 個匯流排事務。處理器讀取 (PrRd) ：當處理器成功讀取放置在其快取中的某個快取塊時，就會發生這個事務。處理器寫入 (PrWr) ：當處理器完成對放置在其快取中的某個快取塊的成功寫入時，就會發生這個事務。這使得處理器成為最新更新快取塊的處理器。處理器讀取未命中 (PrRdMiss) ：當處理器無法從其快取中讀取快取塊並需要從記憶體或另一個快取中獲取塊時，就會發生這個事務。處理器寫入未命中 (PrWrMiss) ：當處理器無法從其快取中寫入快取塊時，會發生這個事務，需要從記憶體或另一個快取中獲取塊然後寫入。這再次使處理器成為最新更新快取塊的處理器。匯流排讀取 ：當處理器請求匯流排獲取快取塊的最新值時，會發生這個事務，無論它來自主儲存器還是另一個處理器的快取。重新整理：當處理器將整個快取塊放在總線上時會發生這個事務。這是為了反映處理器對主存中快取塊所做的更改。匯流排更新 ：當一個處理器修改一個快取塊，而其他處理器需要更新它們各自的快取塊時，就會發生這個事務。這是寫更新協議所獨有的。與 Flush 操作相比，BusUpd 需要更短的時間，因為對快取的寫入比對記憶體的寫入要快。另一點需要注意的是，快取不能更新其快取塊的本地副本，然後請求匯流排傳送匯流排更新事務。如果確實發生了這種情況，那麼兩個快取可能會獨立更新它們的本地副本，然後請求匯流排。然後他們會同時看到兩個不遵循順序一致性的寫入。還需要一條shared line來指示某個快取塊在多個快取中是否可用。這是必需的，因為其中一個快取可以驅逐該塊而無需更新其他塊。在某些情況下，shared line有助於減少記憶體和匯流排事務，其中塊僅在一個快取記憶體中可用，因此不需要匯流排更新。這種檢測共享的專用線路在寫更新協議等匯流排標準實現。狀態轉換.處理器發起的轉換.根據塊的當前狀態和處理器發起的事務，快取塊經歷以下狀態轉換之一：匯流排發起的轉換.根據塊的當前狀態和匯流排發起的事務，快取塊經歷以下狀態轉換之一：底層設計選擇.消除共享修改狀態.快取塊處於 Sm 狀態的處理器負責在快取塊被替換時更新記憶體。但是如果每當發生匯流排更新事務時就更新主儲存器，則不需要單獨的 Sm 和 Sc 狀態，並且協議可以提供單個共享狀態。但是，這會導致更多的記憶體事務 ，這可能會降低系統速度，尤其是當多個處理器寫入同一個快取塊時。廣播更換Sc塊.該協議允許在沒有任何匯流排活動的情況下靜默替換 Sc 狀態的快取塊。如果進行廣播以讓其他快取知道正在替換 Sc 塊，則它們可以測試shared line並在沒有其他共享者的情況下移動到狀態 E。有一個處於狀態 E 的塊的好處是，如果該塊稍後被寫入，它會進入 M 狀態，並且不需要生成匯流排更新事務。因此，以廣播 Sc 塊的替換為代價，我們能夠避免匯流排更新事務。而且由於廣播替換不是時間關鍵，如果不需要快取來立即處理替換，則沒有缺點。另一方面，如果快取不立即處理更新，則可能導致無序更新。在這種情況下，三態更新協議可能具有效能優勢。比較.Dragon vs 寫無效協議.寫無效協議是另一套快取一致性協議，一旦一個快取塊被修改，其他快取中相同塊的其他值不會被更新，而是失效。 寫入無效協議在對同一快取塊有許多後續寫入的情況下更有效，因為無效發生一次，並且避免了其他處理器的進一步匯流排事務。但是，在對一個塊進行寫入之後對同一塊進行多次讀取的情況下，寫入更新協議更有效。由於我們在寫入後會更新其他快取值，因此它們可以立即訪問資料。在這種情況下。寫無效協議是非常不利的，因為每次在另一個快取中修改一個快取塊時，其餘快取需要會遇到一致性未命中，並啟動匯流排事務以讀取新值。相比之下，寫入更新協議有時會使塊的值保持更新的時間超過必要的時間，這將導致其他型別的未命中的增加。Dragon vs Firefly 協議.在Firefly的情況下，修改塊的快取到快取傳輸也會同時寫回主記憶體。但是，由於與快取記憶體相比，對主儲存器的訪問要慢幾個數量級，因此需要增加執行回寫作為單獨匯流排操作的複雜性。在任何情況下，它都會導致效能下降。 在 Dragon 協議的情況下完全避免了這個問題，因為共享塊根本不會寫回記憶體。然而，這是以增加一個狀態為代價的。
metadata.dataset: erhwenkuo/wikipedia-zhtw
metadata.title: Dragon協議
metadata.url: https://zh.wikipedia.org/wiki?curid=7969485