Cache寫機制


Cache 寫機制分為:Write-through和Write-back

 

Write-through(直寫模式)

定義:在數據更新時,同時寫入緩存Cache和后端存儲(主存);

優點:操作簡單;

缺點:因為數據修改需要同時寫入存儲,數據寫入速度較慢。

 

對於寫缺失使用no write allocate policy(見下文)的write through 處理流程

 

 

Write-back(回寫模式)

定義:在數據更新時只寫入緩存Cache,只在數據被替換出緩存時,被修改(用dirty標記)的緩存數據才會被寫到后端存儲(主存);

優點:數據寫入速度快,因為不需要寫到后端存儲(主存);

缺點:一旦更新后的數據未被寫入存儲時出現系統掉電的情況,數據將無法找回。

 

對於寫缺失使用write allocate policy(見下文)的write back 的處理流程:

注意:上述兩種寫模式都是針對當緩存cache中存在要寫的數據的地址時的分配策略,然而,當要寫的數據的地址不在緩存cache中,即發生Write miss。

 

Write-miss(寫失效)

write-miss(即所要寫的數據的地址不在cache中)的處理方式有兩種:

no write allocate policy:將要寫的內容直接寫回main memory;

write allocate policy:將要寫的地址所在的塊先從main memory(主存)調入cache中,然后寫cache;

 

注意:拿L1 Dcache為例,因為對一個cache line的寫入一般不會剛好是一個cache line的長度(抓了trace看過,肉眼觀察是8個字節的訪問粒度居多),

一個cache line一般是64字節,你的一次register spilling只有幾個字節,也就是說你的一次寫入只更新了一個cache line的一小部分,其他部分的值必須保持和內存一致,

所以你不能在cache里隨便找一個地方就寫,而是要先把舊值取上來,再寫入,這是write-allocate的做法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM