Web教材一覧ハードウェアとソフトウェア

記憶階層とキャッシュメモリ

キーワード

記憶階層、アクセスの局部性、キャッシュメモリ、緩衝記憶装置、ヒット率、2次キャッシュ


記憶階層の体系図

コンピュータの能力を向上するには,CPUやすべての記憶装置に高速のものを用いればよいのですが,大量のデータを保管するには大きな記憶容量が必要ですから,膨大な費用がかかってしまいます。それで,高価だが高速な小容量の記憶装置と,低速だが安価な大容量の記憶装置を組み合わせることが必要になります。これを記憶階層といいます。
 しかし,CPU-メモリ-ディスクをそのままつないだのでは,それらの間の処理速度に大きなギャップがあります。メモリからCPUに取り出して処理をする時間やディスクからデータを読み込んでメモリに入れる時間で空き時間が生じてしまいます。それを防ぐために,キャッシュメモリディスクキャッシュを設置します。これらを総称して緩衝記憶装置(バッファメモリ)といいます。

アクセスの局部性
常識的に考えて,あるデータやプログラムのある部分をアクセスすれば,次にはその近くにあるデータやプログラムがアクセスされる確率が大きいと思われます。それをアクセスの局部性といいます。
キャッシュメモリ
CPUとメモリの間にキャッシュメモリという高速のSRAMのメモリを設置し,CPUからの命令によりメモリからCPUにデータを読み込むときに,その付近のデータもキャッシュメモリに転送しておきます。次にCPUから取り出し命令があったときは,まずキャッシュメモリを調べてそこにあればそのデータをCPUに取り出します。

キャッシュの説明図

必要なデータがキャッシュメモリにある確率をヒット率といいます。もし,メモリからの取り出し時間が50ns,キャッシュメモリからの取り出し時間を10nsであり,ヒット率0.9であるとすれば,平均取り出し時間は,
   10×0.9+50×(1-0.9)=14ns
になります。
 ヒット率を高めるには,キャッシュメモリの容量を大きくすることもありますが,どのようなデータを持ってくるかの工夫(私たちの工夫ではなく,コンピュータ設計者の工夫ですが)も重要です。
 CPUからメモリに書き込むときには,いくつかの方法がありますが,1データごとの書き込みはキャッシュメモリだけに書き込み,一定量のデータをまとめてキャッシュメモリからメモリに転送するような方法があります。

1次キャッシュと2次キャッシュ
また,最近のパソコンでは,キャッシュメモリを2段階に用意しています。CPUから近い順に1次キャッシュ,2次キャッシュといいます。一般には1次キャッシュを内部キャッシュとして1~16KB程度のメモリをCPU内部に内蔵し,2次キャッシュを外部キャッシュとしてCPU外部に64KB~1MB程度のSRAMを実装しています。
ディスクキャッシュ
メモリとディスク間に置くキャッシュで,考え方はキャッシュメモリと同じです。個々のディスク装置あるいはディスク制御装置に半導体記憶装置を置き,必要なデータがここにあれば,いちいちディスクを読みに行かないでデータが得られるようにしたものです。

本シリーズの目次へ