参照局所性

参照局所性とは

プログラムがアクセスするアドレスは一部あるいは特定の箇所に集中する。これを参照局所性という。
参照局所性は「空間的参照局所性」と「時間的参照局所性」の2種類に分けられる。

これだけではよくわからないので、それぞれを下にまとめてみます。

空間的参照局所性

空間的参照局所性とは、一度アクセスされたアドレスに近いアドレスは他に比べアクセスされる可能性が高いということです。
これはどういうことかというのを雑に作った図を用いて説明しようと思います。

f:id:kisaragi211:20181218203649p:plain
図1

色合いが気持ち悪いのはスルーでお願いします。
ABCDと書かれている塊がメモリで、AやBはアドレスだと思ってください。
アドレスCにアクセスしていると仮定すると、水色に塗られた部分がCですがその前後がアクセスされやすいよ。ということが空間的参照局所性があるということになります。今回でしたら緑色に塗られた部分が対象になります。
言われてみると確かにそうかもという感じですね。

f:id:kisaragi211:20181218204957p:plain
図2

こういうAという配列があった時に、使用しているのがA(0)なら次に使用する可能性が高いのはA(1)ですよね。
もちろんA(2)やA(4)を使うこともありますが、可能性が高いと言われたらA(1)です。
これをメモリに当てはめて考えれば空間的参照局所性も少しわかりやすいのかなと思います。
(まあ配列もメモリに塊で確保されますしね...(間違ってたらすいません))

時間的参照局所性

一度アクセスしたアドレスは再度アクセスされる可能性が高い。
まあ、これはそのままなので特に説明はないです。
関数なんかも作ったのであれば何回も使うと思いますし、そういうことだと思います。

まとめ

この参照局所性がメモリアレイ構成に繋がってきます。
また機会があればメモリアレイも勉強してまとめてみたいです。
他のアーキテクチャも同様。

個人的なやつ(読み飛ばしもちろんOK)

まずは参考にさせていただいた書籍を載せます(ここに載せるな)
柴山潔, コンピュータアーキテクチャの基礎, 近代科学社
この本を参考にまとめてみたのですが、解釈が間違ってる部分等あると思うのでありましたらツイッターまでお願いします(@nabesan_C)
あと、本当は演算アーキテクチャの繰り返し乗算法とか面白くてまとめてみたかったんですけど、筆算の図形とか作れなくて断念しました。何か良いソフトあれば教えてください。筆算の図形作り次第ブログ書きます。
C言語勉強中なので再現してソースを解説とかでもいいかなとも思っています。
以上です。