高速緩存(cache)和主存內容不一致的情況

 由於cache的內容只是主存部分內容的拷貝,它應當與主存內容保持一致。但是,在一些情況下會出現cache和主存內容不一致的情況。如下:

1、 寫操作後,沒有刷洗cache到內存裏面,那麼cache爲髒,跟內存不同步
解決方案:
(1)寫回法:當CPU寫cache命中時,只修改cache的內容,而不立即寫入主存;只有當此行被換出時才寫回主存。這種方法使cache真正在CPU-主存之間讀寫兩方面都起到高速緩存的作用。對一個cache行的多次寫命中都在cache中快速完成,只是需要替換時才寫回速度較慢的主存,減少了訪問主存的次數。實現這種方法時,每個cache行必須配置一個修改位,以反映此行是否被CPU修改過。當某行被換出時,根據此行的修改位是1還是0,來決定將該行內容寫回主存還是簡單丟棄。
(2)全寫法(寫直達法):當寫cache命中時,cache與主存同時發生寫修改,因而較好地維護了cache與主存的內容的一致性。當寫cache未命中時,只能直接向主存進行寫入。全寫法是寫cache與寫主存同步進行,優點是cache中每行無需設置一個修改位,以及相應的判斷邏輯。缺點是,cache對CPU向主存的寫操作無高速緩衝功能,降低了cache的功效。

2、多CPU模式。  一個CPU修改了本地cache,那麼其它CPU的cache全部失效

3、DMA訪問。DMA修改了內存中的值,cache中仍然爲原值,錯誤

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