メモリキャッシュ

 メモリにアクセスする速度は、プログラムの処理速度に大きく影響します。

 そこで、高価だけどアクセス速度の速い領域をちょっとだけ用意して、最近使ったメモリ領域のデータをその領域に置いておいて、2度目のアクセスを高速にするような機構が用いられています。この領域がメモリキャッシュ(キャッシュ)です。

 キャッシュに置かれるのは32バイト単位(ものによって違う可能性があるけど)なので、近いデータを使うときには1回キャッシュに置いただけで、あとは全部高速にアクセスできたりします。引数と内部変数の領域は隣接しているので、内部変数を使用するようにしていると速度的に多少有利になることがあります。どこまで期待できるかは分かりませんが。

 また、キャッシュはそれ程大きくないので、あまり使われないデータはいつの間にか別のデータに取って代わられます。

 細かいことを言えば、アドレスの下位数ビットが同じような領域には同じキャッシュ領域が割り当てられます。それぞれの領域は、またいくつかの領域に分かれていて、この領域が溢れたときに古いデータから順番にキャッシュから消されていきます。ちょっとしたデータしか扱っていなくても、すぐにキャッシュから消されてしまうこともあるということです。

 最近(2000年7月8日現在)のCPUでは、4096バイト毎に同じ領域が割り当てられているのが普通ですね。

参照 : C++でのグローバル変数