Cache 的write back和write through

http://blog.sina.com.cn/s/blog_6a4b57e30100mpjz.html

Write-Through(通寫)和Write-Back(回寫)

1、write through:CPU向cache寫入數據時,同時向memory也寫一份,使cache和memory的數據保持一致。優點是簡單缺點是每次都要訪問memory速度比較慢

 

2、write back:CPU更新cache時,只是把更新的cache 區標記一下並不同步更新memory只是在cache區要被新進入的數據取代時,才更新memory。這樣做的原因是考慮到很多時候cache存入的是中間結果,沒有必要同步更新memory。優點是CPU執行的效率提高,缺點是實現起來技術比較複雜。

3、post write:CPU更新cache數據時,把更新的數據寫入到一個更新緩衝器,在合適的時候纔對memory進行更新。這樣可以提高cache訪問速度,但是,在數據連續被更新兩次以上的時候,緩衝區將不夠使用,被迫同時更新memory。

 

Cache的使用場合
    當有DMA在使用memory的時候,一般要用到cache的處理。因爲DMA在訪問memory時是不經過cache的。比較典型的比如在Ethernet,wireless,USB等driver裏,DMA會操作descriptors和packet buffers,Driver要做這些處理
    --如果driver使用descripter和packet buffer的地址都是cache的地址,那麼
    a).Driver在讀descripter裏一些狀態比如Owned by CPU/DMA,有沒有收到包時,要對descripter當前結構裏的內容做cache invalidate,收到packet後,也要對packet buffer做cache invalidate
    b).Driver在寫descripter裏一些狀態比如Owned by DMA,要發送包時,要對descripter當前結構裏的內容做cache flush,發送packet時,也要對packet buffer做cache flush
    --有些driver會對descripter使用uncache 地址,那麼上面兩種情況裏invalidate/flush就不用做了。一般很少會對packet buffer也用uncache地址的,因爲對packet內容的處理將會很頻繁,使用uncache會很慢。而descripter一般由於結構比較小,如果也使用cache地址的話,做invalidate/flush的時間消耗可能會比uncache的還要多。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章