Posted on 2011-11-23 17:11
C小加 閱讀(3545)
評論(1) 編輯 收藏 引用 所屬分類:
操作系統(tǒng)
由于cache的內(nèi)容只是主存部分內(nèi)容的拷貝,它應(yīng)當(dāng)與主存內(nèi)容保持一致。但是,在一些情況下會出現(xiàn)cache和主存內(nèi)容不一致的情況。如下:
1、 寫操作后,沒有刷洗cache到內(nèi)存里面,那么cache為臟,跟內(nèi)存不同步
解決方案:
(1)寫回法:當(dāng)CPU寫cache命中時,只修改cache的內(nèi)容,而不立即寫入主存;只有當(dāng)此行被換出時才寫回主存。這種方法使cache真正在CPU-主存之間讀寫兩方面都起到高速緩存的作用。對一個cache行的多次寫命中都在cache中快速完成,只是需要替換時才寫回速度較慢的主存,減少了訪問主存的次數(shù)。實現(xiàn)這種方法時,每個cache行必須配置一個修改位,以反映此行是否被CPU修改過。當(dāng)某行被換出時,根據(jù)此行的修改位是1還是0,來決定將該行內(nèi)容寫回主存還是簡單丟棄。
(2)全寫法(寫直達法):當(dāng)寫cache命中時,cache與主存同時發(fā)生寫修改,因而較好地維護了cache與主存的內(nèi)容的一致性。當(dāng)寫cache未命中時,只能直接向主存進行寫入。全寫法是寫cache與寫主存同步進行,優(yōu)點是cache中每行無需設(shè)置一個修改位,以及相應(yīng)的判斷邏輯。缺點是,cache對CPU向主存的寫操作無高速緩沖功能,降低了cache的功效。
2、多CPU模式。 一個CPU修改了本地cache,那么其它CPU的cache全部失效
3、DMA訪問。DMA修改了內(nèi)存中的值,cache中仍然為原值,錯誤