Posted on 2011-11-23 17:11
C小加 閱讀(3543)
評論(1) 編輯 收藏 引用 所屬分類:
操作系統
由于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中仍然為原值,錯誤