ウィキペディアのサーバ上にある、高速に表示させるためのキャッシュについて、
この項目では、メモリやレジスタなどのハードウエアに限らず、システム全体でのキャッシュについて説明しています。キャッシュ用メモリについては「キャッシュメモリ 」をご覧ください。
キャッシュ (英語 : cache )は、CPU のバス やネットワーク 、データベース 、GPU 、DSP などにおいて、情報を転送する際、転送効率を向上するための記憶階層 の実現手段である[要出典 ] 。ハードウェア の形態とソフトウェア の形態がある。
キャッシュ概要図
転送元と転送先の中間に位置し、データ内容の一部とその参照 を保持する。
参照が既にキャッシュに格納されているデータが転送要求されたとき、転送元ではなくキャッシュが転送を代行する。これをキャッシュヒットという。所望のデータがキャッシュに存在せず元データから転送する状態をキャッシュミスという。由来は不明で和製英語と思われるが、日本の一部の文献及び資格試験において「キャッシュミスヒット」という用語が使われている。
もしくは、データを滞留させてデータ粒度を高める機能を持つ。これらにより、データの時間的局所性 と空間的局所性 を活用し、データ転送 の冗長性 やオーバヘッド を低減させることで、転送効率を向上させる。
基本概念
記憶階層 (Memory Hierarchy )
記憶階層の例
データを保持する記憶装置 の理想は大容量×高速アクセス であるが、通常コストパフォーマンスが悪く実現困難である。そのため、小容量×高速、中容量×中速、大容量×低速など複数段階にまたがった記憶構造とすることが多い。また一般に、CPUなどバスマスタに近い側を上位レベル、遠い側を下位レベルとし、各レベルを各々下位レベルの一時記憶として用いる。この構造を記憶階層 という。
小容量×高速の代表はCPU レジスタ であり、大容量×低速記憶装置の代表はハードディスク や磁気テープ などの補助記憶装置 である。
記憶階層のうちキャッシュに該当する、L1キャッシュとL2キャッシュ について、上位のL1キャッシュに存在するデータが下位のL2キャッシュにもデータが存在する方式(インクルージョンキャッシュ )と、上位のL1キャッシュに存在するデータが下位のL2キャッシュに必ずしもデータが存在しない方式(ビクティムキャッシュ )がある。
局所性 (Locality )
時間的局所性 (Temporal Locality )
データの再利用率とその時間的特性を示す言葉。ある領域のデータ転送が行われて、同一データの転送が再度、近い時間内に行われている場合を時間的局所性があるという。CPUにおける命令キャッシュや、ウェブブラウザ などにおけるファイル単位のデータ保持などは、転送が行われた近い期間にループや戻るボタンなどによる再転送要求を期待して、アクセスがあったデータをある程度後まで保持しておく。逆に音声のようなストリームデータなどは時間的局所性はあまりなく、下記にある空間的局所性に頼った効率化を図る必要がある。
空間的局所性 (Spatial Locality )
データの格納位置に対する偏在性を示す言葉。ある領域のデータ転送が行われて、近い時間内に、連続ないし近傍領域のデータ転送が行われている場合を空間的局所性があるという。真にランダムに転送されるべきデータというのは少なく、大抵のデータには空間的局所性が存在する。一般的にデータ転送でスループット よりレイテンシ 、すなわちデータ転送帯域より転送距離が問題となる場合は、小さなデータを何度も転送するよりも少ない回数でより多くのデータを転送することで効率向上する場合が多い。従って転送元は空間的局所性を期待して未要求の近傍データも同時に送り、キャッシュにより未要求データを保持することで、キャッシュ下位レベルとの転送セット回数を削減しようとする。CPUキャッシュメモリ のラインサイズは、この空間的局所性に鑑みて決定される。
歴史
1961年 マンチェスタ大学 のTom Kilburn らが開発中のコンピュータAtlasに仮想記憶機構を搭載
1962年 Kilburnらが論文"One-level storage system"を発表
1965年 ケンブリッジ大学 のM. V. Wilkes がキャッシュに関する最初の論文"Slave Memories and Dynamic Storage Allocation"を発表(論文ではキャッシュをスレーブメモリと呼んだ)
1965年 ケンブリッジ大学でGordon Scarrottがダイレクトマップ方式の命令キャッシュを実装
1967年 最初のキャッシュ搭載商用マシンIBM System/360 Model 85が完成(16-32KB, 80-160ns)。1968年発売
1968年 IBMのDonald H. GibsonらがIBM System/360 Model 85の性能評価に関する論文"Structural Aspects of the System/360 Model 85 I: General Organization."を発表。そのなかで初めてキャッシュという用語が使用された
参考文献
関連項目