天天看點

Cache一緻性協定

在multi-core處理器中,一般情況下,資料可以被多core共享。如果多core通路了一個相同位址,為了保證通路資料的正确性,需要進行資料同步。

常用的最簡單的一緻性協定為MESI :

Modified: 資料隻存在此cacheline中,cache和下級存儲不一緻,dirty (注意:Instruction cache沒有M狀态)

Exclusive:資料隻存在此cacheline中,cache資料和下級存儲一緻,clean

Shared : 資料存在多個(或1個)cacheline中, cache資料和下級存儲一緻,clean

Invalid: 此cacheline資料無效

其他增強版:

Intel 采用MESIF,增加一個F狀态( Forward )

AMD采用MOESI,增加一個O狀态(Owned )

IBM 采用MERSI,增加一個R狀态 (Recent)

以一個inclusive + write back + Write allocate 的cache為例, 且隻考慮L1d cache 和L2,來看下cache的狀态遷移。

Cache一緻性協定

也可參考《大話處理器》中的狀态遷移圖

Cache一緻性協定

參考 木兮清揚 《大話處理器》

https://blog.csdn.net/muxiqingyang/article/details/6615199

https://en.wikipedia.org/wiki/Cache_coherence

繼續閱讀