ライトスルーとライトバックの違い:キャッシュの書き込み方式を比較
書き込みの方式は、CPUがキャッシュにあるデータへ書き込んだときに、何をするかを決めます。ライトスルーのキャッシュは、キャッシュとメインメモリを同時に更新するので、メモリはいつも最新ですが、書き込みのたびにメモリへの通信が発生します。ライトバックのキャッシュは、キャッシュだけを更新してラインにダーティの印を付け、そのラインが追い出されるときに、あとからメモリへ書き込みます。ライトバックは、速く、帯域も少なくて済みますが、整合性を保つのが複雑になります。
| 項目 | ライトスルー | ライトバック |
|---|---|---|
| 書き込みの方式 | 書き込みのたびに、キャッシュと次のメモリの階層の両方へ書く | 書き込みはキャッシュだけを更新してダーティビットを立て、メモリの更新は追い出し時 |
| メモリのトラフィック | 多い。書き込みのたびに外へ出る | 少ない。同じラインへの繰り返しの書き込みが、1回のライトバックにまとまる |
| 書き込みの速度 | 何もしないと遅い。ライトバッファが遅れの多くを隠す | 速い。書き込みはキャッシュの速度で終わる |
| メモリとの整合性 | メモリがいつも最新なので、DMAやほかのコアとの共有が簡単 | ラインが書き戻されるまでメモリが古いことがあるので、コヒーレンシにより注意が必要 |
| 複雑さ | 単純 | 複雑。ダーティビット、追い出し時のライトバック、コヒーレンシのプロトコル |
| 追い出しのコスト | 安い。書き込むものがない | ダーティなラインの追い出しには、メモリへの書き込みが1回余分にかかる |
| 書き込みミスの方針 | 通常はノーライトアロケート | 通常はライトアロケート |
| 主な用途 | 一部のL1キャッシュ、単純なシステムや信頼性を重視するシステム | 現代のほとんどのCPUのキャッシュ、特にL2とL3 |
数値は代表的な目安で、世代や製品によって異なります。