⧉ キャッシュ(Cache)
コンピュータ上での計算や処理の際、データや計算結果を一時的にすぐに取得できる場所に保管しておき、次回のアクセスを高速化する手法をcaching(キャッシング)という。
キャッシュはキャッシングにおいて一時保存されるデータのことをさす。
具体例
身近な具体例としては- CPUのメモリアクセス メモリアクセスは遅いので、CPUに内蔵されているキャッシュ領域1を読みに行く。
- ソフトウェアのファイルアクセス コストが高いSSD, HDDへのアクセスを、メモリに保持したキャッシュで緩和する。
- ウェブブラウザのページ、画像キャッシュ 同じページや画像を毎回ダウンロードすると、サーバーにも利用者の回線にも良くないので、一度読み込んだ際にブラウザがキャッシュすることにより、次回のダウンロードを省略する。
局所性(locality)
応用上重要な局所性という概念について記述する。CPUのキャッシュには局所性2 という概念が存在する。
今使ったものは近いうちにまた使うことになる可能性が高いという性質を時間的局所性(Temporal Locality)という。
実生活における応用
cachingの考えは、目的を達成するにあたってコストが大きい行動の回数を減らして、コストを削減、効率化するという考えに近いものがある。その意味では、
- ペットボトルに排尿を行う、所謂ボトラー 尿をボトルにキャッシュすることにより、コストが高いトイレへの移動を減らす。
- シンクに食器を溜める
- 洗濯機に服を溜め込む
- トイレを流さない
- 風呂に入らない
- 机の上によく使うものをおいておく 物を取りに行く、収納するコストを避ける
- スマホをすぐそばに置く
しかし、理論に裏打ちされているからといって欠点がないわけではない。
スマホをすぐそばに置くことによって、家の中で紛失するというキャッシュミスを体験したことがある者は少なくないだろう。
-
容量、アクセス速度が異なるキャッシュが複数搭載されている製品が多い。
↩︎
CPUの性能が上がるにつれ、キャッシュミスしたときの遅延が相対的に大きくなるので、どうにかキャッシュヒット率をあげるように努力されているようだ。 -
Temporal Locality, Spatial Locality
↩︎
Locality of reference