0

「CPU(データキャッシュ) → メモリ 」へのライト動作(データ更新)方式

データ更新方式 (Purging)
CPUキャッシュは命令キャッシュとデータキャッシュの2種類が搭載されている場合が多い。

命令キャッシュはプログラムという静的なデータを扱うのでデータ更新は存在しないが、
データキャッシュはメモリへのライト動作があるためデータ更新が存在する。

更新されたデータはいずれかのタイミングで下位レベルのメモリにも反映される必要があり、
そのタイミングの相違により2つのアルゴリズムが存在する。

ライトスルー方式 (Write Through Algorithm)
CPUがメモリ書き込みを行ったら、
キャッシュにストアすると同時に下位レベルのメモリにも書き戻す方式。
必ず下位レベルのバスが活性化するため、
バスの競合や下位レベルの低いスループットに律速されるなどの制約はあるが、
単純な構成で実現でき、またデータのコヒーレンシを保つことが容易である。
出力段にライトバッファを設けることにより、
単一CPUであればライトバック方式に比べ遜色のない性能が期待できる。
そのためCPUのL1キャッシュなどに実装される場合が多い。

ライトバック方式 (Write Back Algorithm)
CPUがメモリ書き込みを行っても、
条件が整わない限りキャッシュに留まりメモリへの書き戻しを行わない方式。
書き戻す条件は対象エントリにウエイ数以上のフレームアドレスのリード/ライトが行われる、
他のバスマスタが対象エントリが保持しているアドレスに対しアクセスを行った時にコヒーレンシを保つために行うなどがある。
ライトスルー方式に対し下位レベルのバスが競合を起こしにくく、
マルチCPU構成に向くため、
記憶階層の同一レベルに複数のキャッシュが接続されているようなL2キャッシュに実装される。

■IBMより

(1)ライトスルー (write through)
ディスク書き込みが発生した場合、OSはディスクの書き込みが完了するまで待つ。書き込みが完了したら次の処理を行う。
→処理が確実だが、ディスク書き込みの待ちが発生するため処理は遅くなる。(ディスク書き込みはメモリ書き込みより圧倒的に遅い)

(2)ライトバック (write back)
ディスク書き込みが発生した場合、キャッシュメモリに書き込んだ時点で書き込み完了として次の処理を行う。メモリからディスクへの書き込みはCPUなどの処理の負荷が下がった時点で行う。
→メモリに書き込むだけで処理が完了するのでライトスルーと比較して処理は早い。ただし停電等でメモリの内容がロストするとディスクへ書き込んだはずのでデータはロストする。一般的に高価なRAID装置などはバッテリ装置を標準装備し停電/瞬停時にも電源を供給しデータロストを防ぐ。
BBU(バッテリー・バックアップ装置)
AC電源障害あるいは瞬停発生時にディスクコントローラに電源を供給する装置。
キャッシュ上のデータを電源断によりロストすることを防止する。

■wikiより

命令キャッシュ
プログラムなどCPUの命令を格納するキャッシュ。命令は静的なデータなため、書き換えが発生せず(x86を除く最近のCPUは命令の自己書き換えなどには対応していない場合が多い)コヒーレンシを保つ必要がないと想定し、CPUからの入力はアドレスのみでデータ更新ユニットなどを省いている。
データキャッシュ
CPUが処理するデータを格納するキャッシュ。
命令キャッシュとデータキャッシュが分離され、命令バスとデータバスの2種類のバスがCPUに接続されているCPUをハーバードアーキテクチャと言う。現在のCPUはハーバードアーキテクチャが主流である。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です