寫透與寫回的差異:快取寫入方式比較
寫入方式決定CPU寫入快取中的資料時要做什麼。寫透快取同時更新快取與主記憶體,因此記憶體永遠是最新的,但每次寫入都會產生往記憶體的通訊。寫回快取只更新快取,並在該快取列標上髒位元,等該列被逐出時才寫入記憶體。寫回較快,所需頻寬也少,但維持一致性較為複雜。
| 項目 | 寫透 | 寫回 |
|---|---|---|
| 寫入方式 | 每次寫入,同時寫入快取與下一層記憶體階層 | 寫入只更新快取並設定髒位元,記憶體的更新在逐出時 |
| 記憶體流量 | 多。每次寫入都要送到外部 | 少。對同一列的重複寫入合併成一次寫回 |
| 寫入速度 | 若不處理則慢。寫入緩衝區可隱藏大部分延遲 | 快。寫入以快取的速度完成 |
| 與記憶體的一致性 | 記憶體永遠是最新的,因此與DMA或其他核心的共用較簡單 | 在快取列被寫回之前,記憶體可能是舊的,因此對一致性需要更加留意 |
| 複雜度 | 簡單 | 複雜。髒位元、逐出時的寫回、一致性協定 |
| 逐出成本 | 便宜。沒有要寫入的東西 | 逐出髒的快取列,需要額外一次寫入記憶體 |
| 寫入未命中的策略 | 通常為不配置寫入 | 通常為配置寫入 |
| 主要用途 | 部分L1快取、簡單或重視可靠度的系統 | 現代大部分CPU的快取,尤其是L2與L3 |
數值為具代表性的大致參考值,會因世代或產品而異。