ディスクキャッシュ
主記憶と磁気ディスク装置などの補助記憶装置の間に置くバッファメモリ。よく使うデータを一時的に保存し、双方のアクセス速度の差を補う。
イマシルちゃんの解説
主記憶(メモリ)に比べて、磁気ディスクはとっても遅いんだ。
毎回ディスクまで取りに行っていたら、待ち時間ばかりになっちゃうよね。
ディスクキャッシュは、ディスクから読んだデータを、近くの「一時置き場」に取っておく仕組みなんだ。
同じデータをもう一度使うときは、一時置き場からすぐに取り出せる。
キャッシュメモリと同じ考え方を、メモリとディスクの間で使っているんだよ!
より深い解説
定義
ディスクキャッシュは、補助記憶装置(磁気ディスク装置など)と主記憶の間でやり取りするデータを、高速なメモリに一時的に保持して、補助記憶装置へのアクセスの回数を減らし、見かけのアクセス速度を高める仕組みである。
置かれる場所
| 種類 | 場所 |
|---|---|
| 装置内のキャッシュ | ハードディスクやSSDの装置の中にあるメモリ |
| OSのキャッシュ(ページキャッシュ) | 主記憶の一部を、OSがディスクのデータのキャッシュとして使う |
| RAIDコントローラのキャッシュ | ディスクアレイの制御装置にあるメモリ |
読み込みと書き込み
| 処理 | 動作 |
|---|---|
| 読み込み | キャッシュにあれば(ヒット)すぐに返す。なければディスクから読んでキャッシュに置く。続きのデータを先読みすることもある |
| 書き込み(ライトスルー) | キャッシュとディスクの両方に書いてから完了とする。安全だが遅い |
| 書き込み(ライトバック) | キャッシュに書いた時点で完了とし、後でまとめてディスクに書く。速いが、停電でデータを失うおそれがある |
ライトバック方式のキャッシュを持つRAIDコントローラなどは、停電に備えてバッテリーやフラッシュメモリでキャッシュの内容を守る仕組みを持つ。
実効アクセス時間
実効アクセス時間 = ヒット率 × キャッシュのアクセス時間 + (1 − ヒット率) × ディスクのアクセス時間
キャッシュメモリと同じ考え方で、ヒット率が高いほど、実効アクセス時間は短くなる。
記憶の階層の中の位置
| 階層 | 高速化の仕組み |
|---|---|
| CPU ⇔ 主記憶 | キャッシュメモリ |
| 主記憶 ⇔ 磁気ディスク | ディスクキャッシュ |
| 主記憶の容量の不足 | 仮想記憶(ディスクで主記憶を補う) |
似た仕組みとの区別
| 仕組み | 内容 |
|---|---|
| ディスクキャッシュ | 主記憶と磁気ディスクの間にバッファメモリを置き、アクセス速度の差を補う |
| メモリインタリーブ | 主記憶を複数のバンクに分け、アクセスを並列に処理する |
| DMA | 主記憶と入出力装置の間で、CPUを介さずにデータを転送する |
| 仮想記憶 | 外部記憶装置を使って、主記憶の容量を超えるメモリ空間を使えるようにする |