【らいとばっく】

ライトバック とは?

最終更新:
💡 とりあえずメモして、まとめて清書

キャッシュ内のデータを更新し、その先のメモリへの反映を後回しにする書き込み方式。更新済みのラインを追い出すときや、明示的に書き戻すときなどに反映する。ここではCPUキャッシュを例に説明する。

📌 このページのポイント
更新を後から書き戻す 例:キャッシュにある値を 1 → 2 に更新 ① まずキャッシュを更新 CPU キャッシュ 値 = 2 dirty = 1 メモリ 値 = 1 ② 追い出し・クリーン操作などで反映 キャッシュ 値 = 2 メモリ 値 = 2 同じ場所への更新をまとめられる 共有する装置との整合性も管理する
CPUキャッシュの単純化した例。矢印はデータの書き込み方向。多段のキャッシュでは、書き戻し先が次のキャッシュになる場合もある。
ひよこ ひよこ
ライトバックってどういう仕組みなの?
ペンギン先生 ペンギン先生
キャッシュにあるデータを更新するとき、まずキャッシュを更新して、その先のメモリへの反映を遅らせる方式だよ。手元のメモを何度か直してから、共有のノートへ書き戻すイメージだね。
ひよこ ひよこ
後回しにした分は、いつ書くの?
ペンギン先生 ペンギン先生
更新したキャッシュラインを別のデータのために追い出すときなどに書き戻すよ。明示的なクリーン操作で反映することもある。追い出すときだけに限らず、装置の仕組みや操作によって変わるんだ。
ひよこ ひよこ
どうやって「まだメモリに書いてないデータ」を区別するの?
ペンギン先生 ペンギン先生
ダーティビットなどの印で管理するよ。ダーティは、キャッシュ側にまだ書き戻していない更新がある状態。更新したラインを捨てる前に、その内容を必要な書き戻し先へ渡すんだ。
ひよこ ひよこ
ライトスルーより速いの?
ペンギン先生 ペンギン先生
同じ場所を繰り返し更新する場合などに、メモリへ送る回数を減らせるよ。ただ、実際の速度差は処理内容や書き込みバッファ、書き戻しの負担にもよる。いつも圧倒的に速い、とまでは言えないんだ。
ひよこ ひよこ
ほかのコアが古いデータを読まないの?
ペンギン先生 ペンギン先生
そこでキャッシュコヒーレンシが重要になるよ。共有する側が更新を正しく扱えるよう、ハードウェアのプロトコルや必要なキャッシュ操作で整合性を保つ。単に後で書けばよい、というだけの仕組みではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ライトバック」って出てきたら「キャッシュで先に更新し、後でメモリへ書き戻す方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Write-Back」 = 書き戻し
💬 キャッシュに書いたデータを、あとでメモリに back(戻す)するという意味だよ

参考資料

← 用語集にもどる