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的做法。
Cache寫機制