基於4*4Torus結構的一級Cache的一致性協議的提案

摘要:在帶有一級Cache的多處理器系統中,由於不同處理器Cache對內存存儲塊的共享會產生一致性問題,並且隨着多核處理器規模擴大愈加複雜,因此設計有效且高效一級Cache的一致性協議是很重要的。本文借鑑Token的思想,對目錄表法加以改動提出了一種基於4*4Torus結構的Cache一致性協議。

1.引言

在共享內存的多處理器系統中,Cache結構可以將共享存儲空間的數據緩存在本地,加速處理器獲取數據的過程,但是由此也會帶來嚴重的數據不一致現象。爲了保證多處理器並行工作的正確性,高效的Cache一致性協議是必須的。

目前在多處理器系統中,較爲典型的Cache一致性協議主要有監聽法、目錄表發、Token協議和Hammer協議[1]。這四種協議在不同情況下各有不同的優勢,同時也存在比較明顯的缺陷。因此,研究人員在此基礎上提出了多種改進型協議。

2.Cache一致性協議概述

監聽法通過共享總線向片內所有處理器進行消息廣播,並需要時刻監聽總線事務來更新本地數據的一致性狀態,較爲通用的有MESI和MOESI協議。但是監聽法依賴於總線的完全順序性,在處理器單元數較多時總線爭用較爲嚴重,且無法直接應用於無序互聯結構,如Torus結構;且請求時需要向全體處理器單元廣播消息,導致總線上通信量較大。

目錄協議對共享存儲器中的數據塊設置目錄項以跟蹤、記錄其狀態信息,只需對需要的節點進行點對點通信而不需要廣播消息。根據目錄項的位置,可以分爲集中式目錄表法(Tang方法)和分散式目錄表法[2,3]。依據目錄項存儲內容,可以分爲全映射法、有限目錄法和鏈式目錄法。目錄表法會增大Cache缺失延遲,並額外佔用存儲空間。有研究人員提出了一種使用兩級目錄的Cache一致性協議以減少額外存儲[4,5],但在4*4Torus網中,使用兩級目錄並不能減少目錄項佔用的存儲空間。

Token協議將一致性協議分爲正確性框架和性能策略兩層。正確性框架中的Token計數策略通過令牌的持有保證執行的安全性,持續性請求避免現象的發生。而在性能策略層可以選擇高性能的協議來提升效率[6]。

3. 系統結構和基本思想說明

       本文基於4*4的Torus結構,借鑑Token的計數機制,對分散的全映射的目錄表法的做了一些變動,提出了一種Cache一致性協議。

       本文所提出的Cache一致性協議所適用的多處理器系統結構如圖2-1所示:使用4*4Torus結構作爲互連結構連接16個處理器單元,每個處理器單元包含相連的處理器內核、一級Cache和通信接口。同時,互連結構與分散共享的內存(具有一致的地址空間)相連,該內存即爲Home Memory。

圖2-1

同時,需要對內存數據存儲方式進行改動,爲數據塊添加特定標記位,具體見圖2-2。數據塊的前兩bit用作狀態標籤,有00、01、10三種狀態。接下來16bit用於存儲對應16個處理器Cache的共享信息,如果對應的Cache保存有可用副本則設置爲1,否則設置爲0。最後在數據區存放數據。

圖2-2

       之所以使用全映射目錄而不是採用有限目錄或者鏈式目錄,因爲對於16個處理器的系統,有限目錄法和鏈式目錄都無法減少目錄項所額外消耗的內存空間,同時全映射法又可以很好的找到對應的Cache。且使用分散共享的Memory和分散式目錄項可以有效減少目錄查詢所造成的時間延遲。

4、協議內容詳述

       協議共使用三種狀態:

       Invalid(00):該數據塊不可用;

       Owner(01):該數據塊是系統中唯一一個可用數據塊,其他副本皆不可用,且與內存中數據不一致。

       Share(10):該數據塊可用且系統中可能存在與該數據塊相同的可用副本,且與內存中的數據一致。

在內存中,每個數據塊標誌位初始值爲10(Share),且只可能存在Share和Invalid兩種狀態。

當本地CPU寫時,如果Cache未命中,或者命中後數據塊標誌位爲Invalid,則向Home Memory發出寫請求。Home接收到寫請求後,查找該數據塊的標誌位。如果該數據塊的狀態爲Share,則直接向請求CPU返回數據、共享副本的數量值(Num),然後向其他共享者發送無效化消息,其他Cache將各自的副本置無效化後向請求者發送ACK,當請求者接受到Num個ACK後,將數據塊的狀態置爲Owner,開始進行寫操作。具體流程可見圖3-1。如果該數據塊的狀態爲Invalid,則檢查目錄項,向擁有者轉發寫請求信息,之後Owner將所有權轉移給請求者。具體流程可見圖3-2。如果Cache命中且狀態爲Owner,直接進行寫操作即可。如果Cache命中,且狀態爲Share,則檢查目錄項,向其他所有共享者以及Home Memory發送無效化信息,獲得ACK之後置爲Owner狀態,之後進行寫操作,具體流程可見圖3-3。


圖3-1


圖3-2


圖3-3

當本地CPU讀時,如果Cache未命中,或者命中後標誌位爲Invalid,則向HomeMemory發出讀請求。Home接收到讀請求後,查找該數據塊的標誌位。如果該數據塊的狀態爲Share,則直接向請求者返回數據,置請求者狀態爲Owner,開始進行寫操作,同時向其他共享者發送新共享消息以修改目錄項。具體流程可見圖3-4。如果該數據塊的狀態爲Invalid,則檢查目錄項,向擁有者轉發讀請求信息,之後Owner將狀態設置爲Share,將數據發送給請求者,同時更新Home Memory。請求者接受到數據後即可進行讀操作,具體流程可見圖3-5。如果Cache命中且狀態爲Owner,直接進行讀操作即可。如果Cache命中,且狀態爲Share,直接進行讀操作即可。


圖3-4


圖3-5

在整個協議中,整體的狀態遷移過程可以用圖3-6來說明。其中,RW和RR分別代表其他處理器寫操作和其他處理器讀操作;LR和LW分別代表本地處理器讀操作和本地處理器寫操作。


圖3-6

       綜上所述,該協議的處理流程、狀態轉換和通信方式彼此是統一、自洽的,可以通過正常的狀態轉移和通信保證Cache的一致性。

5、協議評價和總結

       本文所提出的Cache一致性協議針對4*4Torus的互連結構,以分散式全映射目錄表法爲基礎,並借用了Token協議中Token計數機制,即當需要進行寫操作而本身Cache的狀態不爲Owner時,需要獲得所有其他擁有者的無效化應答,纔可以進行寫操作。

       同時,本文所提出的一致性協議在維護Cache數據塊一致性的同時,也保證有效數據塊中目錄項的一致性,同時藉助本文協議中所設計的處理流程,對於所有可遇狀況中的一半可以在第二步獲取到所需要數據,少於基礎目錄表法的三步,同時使用分散目錄表法減少了目錄查詢延遲。因此本文所提出的方法的數據缺失延遲多於監聽法,但少於基礎目錄表法。當然,本協議可以直接用於Torus等無序結構,而監聽協議不可以。

       當然,本方法會佔用一定的存儲空間,若一個數據塊存放的數據量爲16Byte,那麼該方法造成的額外內存消耗爲12.3%左右,是可以接受的,但是如果處理器的數目增加,會導致佔用量迅速上升,也就是說該方法的擴展度有限。

       當然,本文提出的一致性協議並沒有經過仿真實驗,並且可能存在一些瑕疵,具體的效果有待驗證。

 

 

參考文獻:

[1]黃安文,張民選.多核處理器 Cache 一致性協議關鍵技術研究[J]. 計算機工程與科學, 2009, 31(A01): 104-108.

[2] Tang C K. Cache system design in the tightly coupledmultiprocessor system[C]//Proceedings of the June 7-10, 1976, national computerconference and exposition. ACM, 1976: 749-753.

[3] Censier L M, Feautrier P. A new solution to coherenceproblems in multicache systems[J]. Computers, IEEE Transactions on, 1978,100(12): 1112-1118.

[4] 王鈺. 可縮放性Cache一致性協議分析[J]. 電光與控制, 1999 (2): 44-48.

[5]潘國騰, 竇強, 謝倫國. 基於目錄的Cache 一致性協議的可擴展性研究[J]. 計算機工程與科學, 2008, 30(6): 131-133.

[6] 周川. 衆核處理器中動態可重構 Cache 一致性協議的研究與實現[D]. 上海交通大學, 2013.

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