亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 53509 | 回復(fù): 1
打印 上一主題 下一主題

Cache 的write back和write through【ZT】 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-10-15 10:25 |只看該作者 |倒序瀏覽
為了保證cache和memory的數(shù)據(jù)一致性,通常有三種方法:
1〉write through:CPU向cache寫入數(shù)據(jù)時,同時向memory也寫一份,使cache和memory的數(shù)據(jù)保持一致。優(yōu)點是簡單,缺點是每次都要訪問memory,速度比較慢。
2〉post write:CPU更新cache數(shù)據(jù)時,把更新的數(shù)據(jù)寫入到一個更新緩沖器,在合適的時候才對memory進行更新。這樣可以提高cache訪問速度,但是,在數(shù)據(jù)連續(xù)被更新兩次以上的時候,緩沖區(qū)將不夠使用,被迫同時更新memory。
3〉write back:CPU更新cache時,只是把更新的cache區(qū)標記一下,并不同步更新memory。只是在cache區(qū)要被新進入的數(shù)據(jù)取代時,才更新memory。這樣做的原因是考慮到很多時候cache存入的是中間結(jié)果,沒有必要同步更新memory。優(yōu)點是CPU執(zhí)行的效率提高,缺點是實現(xiàn)起來技術(shù)比較復(fù)雜。
     
   對于cache的算法。大方面有兩種,Write-Through(通寫)和Write-Back(回寫).    Write-Through,也就是說OS發(fā)送的處理data的請求,一直要等到全部memory里面的data正確寫到穩(wěn)定存儲media(如硬盤)中,然后返回給OS報告處理完畢,然后OS才會去update其狀態(tài);這種情況下,通常不會有dirty cache.      而Write-Back,就是在OS發(fā)送處理data的請求后,該算法會將它用buffer存起來,并在沒有正確寫到穩(wěn)定存儲media(如硬盤)中前,就告訴OS處理完畢,然后OS就會去update;但是要是此時掉電或其他故障,buffer的數(shù)據(jù)沒有被寫入穩(wěn)定存儲media(如硬盤),那么os update的信息就和media中的信息不一致.為了避免這樣,所以才用NVRAM,它在調(diào)電后數(shù)據(jù)仍然不丟失,但是在被重新上電后,其數(shù)據(jù)會是dirty的,也就是樓主所提到的dirty cache(如何將dirty cache更新到media,這是Write-Back應(yīng)該做的事)。    這和買賣東西相似,Write-Through就相當(dāng)于你親自去買東西,你買到什么就可以親手拿到;而Write-Back就和中介差不多,你給了中介錢,然后它告訴你說你的東西買到了,然后就相信拿到這個東西了,但是要是出現(xiàn)特殊情況中介跑了(掉鏈子了),你再去檢查,東西原來沒有真正到手。

1.Cache的兩個類型
    --Write Through
    當(dāng)寫數(shù)據(jù)進Cache時,也同時更新了相應(yīng)的Memory里的內(nèi)容
    --Write back
    只是寫到Cache里,Memory的內(nèi)容要等到cache保存的要被別的數(shù)據(jù)替換或者系統(tǒng)做cache flush時,才會被更新。
2.Cache的兩個函數(shù)
    --Flush
    把Cache內(nèi)容寫回Memory,當(dāng)Cache為Write through,不需要Flush
    --Invalidate
    把Cache內(nèi)容直接丟掉不要。
3.Cache的使用場合
    當(dāng)有DMA在使用memory的時候,一般要用到cache的處理。因為DMA在訪問memory時是不經(jīng)過cache的。比較典型的比如在Ethernet,wireless,USB等driver里,DMA會操作descriptors和packet buffers,Driver要做這些處理
    --如果driver使用descripter和packet buffer的地址都是cache的地址,那么
    a).Driver在讀descripter里一些狀態(tài)比如Owned by CPU/DMA,有沒有收到包時,要對descripter當(dāng)前結(jié)構(gòu)里的內(nèi)容做cache invalidate,收到packet后,也要對packet buffer做cache invalidate
    b).Driver在寫descripter里一些狀態(tài)比如Owned by DMA,要發(fā)送包時,要對descripter當(dāng)前結(jié)構(gòu)里的內(nèi)容做cache flush,發(fā)送packet時,也要對packet buffer做cache flush
    --有些driver會對descripter使用uncache 地址,那么上面兩種情況里invalidate/flush就不用做了。一般很少會對packet buffer也用uncache地址的,因為對packet內(nèi)容的處理將會很頻繁,使用uncache會很慢。而descripter一般由于結(jié)構(gòu)比較小,如果也使用cache地址的話,做invalidate/flush的時間消耗可能會比uncache的還要多。

本文來自CSDN博客,轉(zhuǎn)載請標明出處:
http://blog.csdn.net/efan_linux/archive/2009/09/23/4584807.aspx


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/58716/showart_2070757.html

論壇徽章:
0
2 [報告]
發(fā)表于 2014-06-20 19:32 |只看該作者
非常好的介紹,感謝。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP