記憶階層【storage hierarchy】

記憶装置には様々な種類があり、アクセス速度が高いほど容量あたりの単価が高いという傾向がある。このため、高速な記憶装置を少量、低速な記憶容量を大量に用意し、使用頻度などに応じてデータやプログラムの配置を工夫するという手法が用いられる。
最上位には、中央処理装置(CPU)の内部にあるレジスタやキャッシュメモリが置かれる。これらは半導体素子を用いた極めて高速な記憶媒体であり、CPUの演算速度に追従してデータを読み書きできる。しかし、製造コストが非常に高く、回路の規模にも制限があるため、搭載できる容量はレジスタで数十~数百バイト、キャッシュメモリで数十キロバイト~数メガバイト程度と、ごくわずかである。
その下には、半導体メモリの一種であるDRAM(Dynamic RAM)を用いたメインメモリ(主記憶装置)が配置される。キャッシュメモリほどではないが、高速に動作して実行中のプログラムやデータを一時的に保持する。ここまでの上位階層は、CPUが容易にデータを参照できる領域であり、システムの処理能力を左右する重要な部分となる。
下位には、ハードディスクやSSDなどのストレージ(外部記憶装置)が位置する。メインメモリと比べると動作速度は著しく遅いが、数十倍、数百倍の極めて大きな容量を安価に確保できる。上位階層の装置群は電源を切ると記憶内容が失われる「揮発性」だが、ストレージ装置は電源を切ってもデータが消えない「不揮発性」であり、オペレーティングシステム(OS)やアプリケーションを構成するプログラム、利用者の作成したデータなどの永続的な保存先となる。クラウドストレージやネットワーク越しの共有ストレージ、長期保存用の磁気テープなどもこの階層の一部として組み合わせて用いる場合がある。
CPUは処理を実行する際、必要なデータがより高速な上位の記憶装置にあるかを確認し、存在しなければ順次下位の装置からデータを読み出す。プログラムの実行時には直前に参照したデータの近傍が再び利用されることが多いという性質(参照の局所性)があり、使用頻度の高いデータをあらかじめ上位の階層へ複製(キャッシング)しておくことで、装置間の大きな速度差による性能低下をある程度防ぐことができる。