ライトバック方式は何のため?ライトスルーとの違いを整理
基本情報技術者試験 平成29年度春期 午前 問9 / コンピュータ構成要素 › メモリ
過去問にチャレンジ
キャッシュの書込み方式には,ライトスルー方式とライトバック方式がある。ライトバック方式を使用する目的として,適切なものはどれか。
- ア
キャッシュと主記憶の一貫性(コヒーレンシ)を保ちながら,書込みを行う。
- イ
キャッシュミスが発生したときに,キャッシュの内容の主記憶への書き戻しを不要にする。
- ウ
個々のプロセッサがそれぞれのキャッシュをもつマルチプロセッサシステムにおいて,キャッシュ管理をライトスルー方式よりも簡単な回路構成で実現する。
- エ
プロセッサから主記憶への書込み頻度を減らす。
会話形式の解説
講師今回は、キャッシュの書込み方式のうち、ライトバック方式を使う目的を問う問題です。キャッシュは、CPUと主記憶の間に置く、小さくて速い記憶装置のことです。注目するのは「主記憶をいつ更新するか」の一点です。
受験者名前は覚えているのですが、ライトスルーとライトバックのどちらがどちらか、すぐに混ざってしまいます。
講師整理しましょう。ライトスルー方式は、書込みのたびにキャッシュと主記憶の両方を更新します。ライトバック方式は、書込み時にはキャッシュだけを更新し、そのブロックがキャッシュから追い出されるときに主記憶へ書き戻します。では、ライトバック方式で同じブロックに何度も書き込むと、主記憶へのアクセスはどうなるでしょうか。
受験者キャッシュの中だけで更新が済むので、主記憶にはその都度書きに行かなくてよい、ということでしょうか。
講師そのとおりです。そのブロックがキャッシュに載っている間の更新は、追い出すときにまとめて1回書き戻すだけで済みます。遅い主記憶へのアクセスが減るので、処理が速くなります。これが「主記憶への書込み頻度を減らす」という選択肢の内容で、正解です。
受験者「一貫性を保ちながら書き込む」という選択肢も、よさそうに見えて迷いました。
講師確かめてみましょう。ライトバック方式で書き込んだ直後、主記憶の内容はどうなっていますか。
受験者まだ書き戻していないので、古いままです。キャッシュと主記憶の内容が食い違っていますね。
講師はい。追い出されるまでの間は、内容が一致しない期間があります。書込みのたびに両方をそろえるのはライトスルー方式のやり方なので、この選択肢はライトバック方式の目的には当たりません。
受験者「キャッシュミスのときの書き戻しを不要にする」という選択肢はどうでしょうか。書込みを減らすという点で、正解と似ている気がします。
講師そこは実際の動作と逆です。キャッシュミスで変更済みのブロックを追い出すとき、ライトバック方式ではその内容を主記憶へ書き戻さなければなりません。ライトスルー方式は常に主記憶も更新済みなので、追い出すときの書き戻しが不要です。
受験者残りの「ライトスルーより簡単な回路で実現する」は、マルチプロセッサの話なので判断しにくいです。
講師ライトバック方式では、どのブロックが変更済みかを管理する必要があります。さらにマルチプロセッサでは、主記憶が古いままの期間があるぶん、ほかのプロセッサのキャッシュとの整合をとる制御がより複雑になります。ライトスルー方式より単純になるとはいえないので、不適切です。
受験者まとめると、ライトバック方式は主記憶への書込みを減らして速くする代わりに、内容が一致しない期間があって制御が複雑になる、ということですね。
講師そのとおりです。補足すると、ライトバック方式では各ブロックにダーティビットという印を持たせて、書き換えたかどうかを記録します。追い出すときに書き戻すのは、ダーティビットが立っている変更済みのブロックだけです。方式の特徴を取り違えさせる選択肢に迷わないよう、「主記憶をいつ更新するか」から考える習慣をつけておきましょう。
まとめ
ライトバック方式は、書込み時にはキャッシュだけを更新し、ブロックを追い出すときに主記憶へ書き戻す方式です。キャッシュに載っている間の更新はまとめて書き戻すため、主記憶への書込み頻度が減って処理が速くなります。これがライトバック方式を使う目的です。一方で、キャッシュと主記憶の内容が一致しない期間があり、変更済みブロックの管理などで制御は複雑になります。書込みのたびに両方を更新して一貫性を保つのはライトスルー方式の特徴なので、取り違えないよう注意が必要です。
解答・解説
正解はエです
この問題のテーマ
キャッシュメモリの2つの書込み方式の違いを理解したうえで、ライトバック方式を採用する理由を選ぶ問題です。
解き方の考え方
まず、ライトスルー方式とライトバック方式が、それぞれいつ主記憶を更新するかを整理します。ライトバック方式では、書込みのたびに主記憶へアクセスすることはありません。主記憶への書込みは、そのブロックがキャッシュから追い出されるときにまとめて行います。この性質から得られる利点と得られない利点を、選択肢ごとに照らし合わせます。
選択肢ごとの解説
- ×ア キャッシュと主記憶の一貫性(コヒーレンシ)を保ちながら,書込みを行う。アの「一貫性を保ちながら書き込む」という説明は、ライトバック方式の目的に当たりません。ライトバック方式は書込み時にキャッシュだけを更新するので、追い出されるまでの間はキャッシュと主記憶の内容が食い違います。書込みのたびに両方をそろえるのはライトスルー方式のやり方です。
- ×イ キャッシュミスが発生したときに,キャッシュの内容の主記憶への書き戻しを不要にする。イの「キャッシュミス時の書き戻しを不要にする」という説明は、実際の動作と逆です。キャッシュミスで変更済みのブロックを追い出すとき、ライトバック方式ではその内容を主記憶へ書き戻さなければなりません。書き戻しを必要としないのは、主記憶を常に更新しているライトスルー方式のほうです。
- ×ウ 個々のプロセッサがそれぞれのキャッシュをもつマルチプロセッサシステムにおいて,キャッシュ管理をライトスルー方式よりも簡単な回路構成で実現する。ウの「ライトスルーより簡単な回路で実現する」という説明は当てはまりません。ライトバック方式では、どのブロックが変更済みかを管理する必要があります。マルチプロセッサではさらに、ほかのプロセッサのキャッシュとの整合をとる制御が加わります。そのため、ライトスルー方式より単純になるとはいえません。
- ○エ プロセッサから主記憶への書込み頻度を減らす。エの「主記憶への書込み頻度を減らす」という説明が、ライトバック方式の目的です。同じブロックに何度書き込んでも、その間はキャッシュの中だけで更新が済みます。主記憶へ書き込むのは追い出すときの1回だけなので、遅い主記憶へのアクセスが減り、処理が速くなります。
補足
ライトバック方式では、各ブロックにダーティビットを持たせて、書き換えたかどうかを記録します。追い出すときに書き戻すのは、ダーティビットが立っている(変更済みの)ブロックだけです。
POINT
- ライトスルー方式は、書込みのたびにキャッシュと主記憶の両方を更新します。
- ライトバック方式は、書込み時にはキャッシュだけを更新し、ブロックを追い出すときに主記憶へ書き戻します。
- ライトバック方式の利点は、主記憶への書込み回数が減って速くなることです。
- ライトバック方式の欠点は、キャッシュと主記憶の内容が一致しない期間があり、制御が複雑になることです。
