ライトバック方式
キャッシュメモリへの書込み方式の1つ。データをキャッシュメモリだけに書き込み、主記憶へは、そのデータをキャッシュから追い出すときに書き戻す。書込みは速いが、一時的に主記憶の内容が古くなる。
イマシルちゃんの解説
ノートには毎回書くけど、清書用の紙に書き写すのは、ノートのページを破って捨てるときだけ……っていうやり方なんだ。
ふだんはノートに書くだけだから、とっても速い!
でも、そのあいだ清書用の紙は古いまま。
だから、捨てる前には必ず書き写すのを忘れちゃいけないんだよ。
より深い解説
定義
ライトバック方式は、CPUがデータを書き込むとき、キャッシュメモリだけに書き込む方式である。主記憶への反映は、そのデータ(ブロック)がキャッシュから追い出されるときにまとめて行う。これを書き戻し(ライトバック)という。
ダーティビット
キャッシュの各ブロックには、書き換えられて主記憶と内容が違っているかどうかを示すダーティビットが付いている。
| ダーティビット | 状態 | 追い出すとき |
|---|---|---|
| 0(クリーン) | 主記憶と同じ内容 | 書き戻さずに捨ててよい |
| 1(ダーティ) | 書き換えられ、主記憶より新しい | 主記憶に書き戻す必要がある |
特徴
| 項目 | 内容 |
|---|---|
| 書込みの速さ | キャッシュに書くだけなので速い |
| 主記憶との一致 | 書き戻すまでの間、主記憶の内容は古い |
| 主記憶へのアクセス回数 | 同じデータを何度書き換えても、書き戻しは1回で済むので少ない |
| 仕組み | ダーティビットの管理などが必要で複雑 |
キャッシュミスのときの動き
読出しのときにキャッシュミスが起き、新しいデータを入れるために追い出すブロックがダーティだった場合は、まずそのブロックを主記憶に書き戻してから、新しいデータを読み込む。そのぶん、キャッシュミスのときの処理には時間がかかる。
注意が必要な場面
| 場面 | 問題 |
|---|---|
| 複数のCPU(コア)がそれぞれキャッシュを持つ | あるCPUのキャッシュだけが新しく、ほかのCPUが古いデータを読むおそれがある。各キャッシュの一致を保つ仕組み(キャッシュコヒーレンシ、MESIプロトコルなど)が必要になる |
| 電源が突然落ちる | キャッシュにしかない最新のデータが失われる。ストレージのキャッシュでは、バッテリーで保護するなどの対策をとる |
ライトスルー方式との比較
| ライトバック方式 | ライトスルー方式 | |
|---|---|---|
| 書き込む先 | キャッシュだけ | キャッシュと主記憶の両方 |
| 書込みの速さ | 速い | 遅い |
| 主記憶との一致 | 一時的に一致しない | 常に一致する |
| 追い出すときの書き戻し | 書き換えたデータなら必要 | 不要 |