システムキャッシュ (システムキャッシュ) とは | 意味や読み方など丁寧でわかりやすい用語解説

作成日: 更新日:

システムキャッシュ (システムキャッシュ) の読み方

日本語表記

システムキャッシュ (システムキャッシュ)

英語表記

system cache (システムキャッシュ)

システムキャッシュ (システムキャッシュ) の意味や用語解説

システムキャッシュとは、コンピュータシステムにおいて、一度利用したデータや計算結果を、より高速にアクセスできる記憶領域に一時的に保存しておく仕組みのことである。その主目的は、処理速度の向上にある。コンピュータは、CPU、メインメモリ(RAM)、ストレージ(SSDやHDD)など、速度と容量が異なる複数の記憶装置で構成されている。CPUの処理速度は極めて速いが、メインメモリやストレージからのデータ読み出しには時間がかかり、これがシステム全体の性能を低下させるボトルネックとなり得る。システムキャッシュは、この速度差を埋めるための重要な技術である。CPUがデータを必要とした際に、低速な記憶装置へ毎回アクセスするのではなく、まずは高速なキャッシュにデータが存在するかを確認する。もしデータが存在すれば(これをキャッシュヒットと呼ぶ)、そこから素早くデータを取得できるため、処理時間を大幅に短縮できる。逆にデータが存在しない場合(これをキャッシュミスと呼ぶ)は、本来の低速な記憶装置へアクセスし、取得したデータをCPUへ渡すと同時にキャッシュにも保存する。これにより、次に同じデータが必要になった際には高速なアクセスが可能となる。この仕組みは、CPU内部のキャッシュから、OSが管理するディスクキャッシュ、Webブラウザが利用するブラウザキャッシュまで、コンピュータシステムのあらゆる階層で利用されている。 システムキャッシュが効率的に機能する背景には、「時間的局所性」と「空間的局所性」というプログラムの動作原理が存在する。時間的局所性とは、一度アクセスされたデータは、近い将来に再びアクセスされる可能性が高いという性質である。例えば、ループ処理で何度も参照される変数がこれに該当する。空間的局所性とは、あるデータにアクセスした場合、その周辺のデータも続けてアクセスされる可能性が高いという性質を指す。配列の要素を順番に処理していくようなケースが典型例である。キャッシュシステムはこれらの性質を利用し、一度アクセスしたデータとその周辺のデータをまとめてキャッシュに保存しておくことで、キャッシュヒット率を高め、性能向上を実現している。コンピュータシステムにおけるキャッシュは単一ではなく、階層構造を形成しているのが一般的である。CPUに最も近い場所から、L1キャッシュ、L2キャッシュ、L3キャッシュといったCPUキャッシュが存在し、その次にメインメモリ、そして最も低速なストレージと続く。CPUに近い階層ほど、非常に高速だが容量は小さく、コストも高い。逆に遠い階層になるほど、低速だが大容量で、コストは低くなる。このトレードオフの関係を持つ記憶装置を階層的に組み合わせることで、システム全体としてコストを抑えつつ高いパフォーマンスを実現している。OSもまた、システムキャッシュにおいて重要な役割を担っている。OSはメインメモリの一部を利用して、低速なストレージのデータを一時保管する「ディスクキャッシュ(またはページキャッシュ)」を管理する。アプリケーションがファイル読み込みを要求すると、OSはまずディスクキャッシュを確認し、データがあればストレージへのアクセスを省略して高速に応答する。書き込み処理においてもキャッシュは活用されるが、データの整合性を保つために方式が分かれる。「ライトスルー」方式では、データをキャッシュとストレージの両方に同時に書き込むため、信頼性は高いが書き込み速度はストレージの速度に依存する。「ライトバック」方式では、まず高速なキャッシュにのみ書き込みを行い、OSが適切なタイミングでまとめてストレージに書き出す。これにより書き込み処理を高速化できるが、ストレージに書き込まれる前にシステムの電源が落ちるとデータが失われるリスクを伴う。このため、多くのシステムではジャーナリングなどの技術と組み合わせて信頼性を確保している。キャッシュを利用する上で常に考慮しなければならないのが、キャッシュ上のデータと元の記憶装置にあるデータとの整合性、すなわちキャッシュコヒーレンシの問題である。元のデータが更新されたにもかかわらず、キャッシュ上に古いデータが残り続け、それを参照してしまうと、システムの不整合や誤動作の原因となる。この問題を解決するため、キャッシュ内のデータを適切に破棄・更新する様々なアルゴリズムが考案されている。例えば、最も長い時間アクセスされていないデータを破棄するLRU(Least Recently Used)アルゴリズムなどがある。システムキャッシュは、現代のコンピュータの高性能化を支える根幹技術であり、その仕組みを理解することは、システム全体の動作を把握し、性能問題の分析やチューニングを行う上でシステムエンジニアにとって不可欠な知識と言える。

システムキャッシュ (システムキャッシュ) とは | 意味や読み方など丁寧でわかりやすい用語解説