局所参照性 (キョクショサンスウ) とは | 意味や読み方など丁寧でわかりやすい用語解説

作成日: 更新日:

局所参照性 (キョクショサンスウ) の読み方

日本語表記

局所参照性 (キョクショサンショウセイ)

英語表記

Locality of Reference (ローカリティ オブ リファレンス)

局所参照性 (キョクショサンスウ) の意味や用語解説

局所参照性とは、コンピュータプログラムがメモリ上のデータや命令にアクセスする際、特定の傾向を示す性質を指す。この性質は、システム全体の性能、特にメモリの効率的な利用に大きく影響を及ぼすため、システムエンジニアを目指す上で理解しておくべき重要な概念である。プログラムはメモリ上のあらゆる場所にランダムにアクセスするわけではなく、アクセスする領域に何らかの偏りがあることが知られている。この偏りが、時間的な近接性と空間的な近接性という二つの側面から説明される。 時間的局所性(Temporal Locality)とは、一度参照されたデータや命令は、近い将来に再び参照される可能性が高いという性質である。例えば、プログラムがループ処理を行う際、ループカウンタ変数やループ本体の命令は、何度も繰り返し実行される。これらのデータや命令がメモリ上に存在する場合、一度アクセスされた後、非常に短い時間のうちに再度アクセスされることが頻繁に発生する。また、関数内で定義された一時変数なども、関数が実行されている間は頻繁にアクセスされる対象となる。このような、過去にアクセスされた要素が近い将来に再びアクセスされる傾向が時間的局所性と呼ばれる。 一方、空間的局所性(Spatial Locality)とは、あるメモリ番地が参照された場合、その近くにあるメモリ番地のデータや命令も、近い将来に参照される可能性が高いという性質である。例えば、プログラムが配列の要素に順次アクセスする場合、a[0]、a[1]、a[2]といったように、隣接するメモリ領域が連続して参照されることが一般的である。構造体のメンバー変数もメモリ上で連続して配置されていることが多く、あるメンバーにアクセスすれば、その隣のメンバーにもアクセスする可能性が高い。また、プログラムの命令コードも通常、メモリ上で連続して配置されており、CPUは一つの命令を実行した後、その次の命令を順次実行していくため、これも空間的局所性の一例と言える。 これらの局所参照性という性質は、現代のコンピュータシステムの性能を向上させる上で極めて重要な役割を果たす。特に、CPUの処理速度と主記憶装置(メインメモリ)のアクセス速度との間に存在する大きな隔たりを埋めるために不可欠である。CPUは非常に高速に動作するのに対し、主記憶装置へのアクセスは相対的に低速であるため、CPUが主記憶装置からデータを取得するたびに待機時間が発生すると、システム全体の性能が著しく低下してしまう。この問題を解決するために、CPUの近くに高速なキャッシュメモリが配置されている。 キャッシュメモリは、局所参照性の原理に基づいて設計されている。時間的局所性を利用し、一度読み込んだデータや命令をキャッシュに一時的に保持することで、次に同じデータが必要になった場合に主記憶装置にアクセスするよりもはるかに高速に提供できる。これにより、CPUの待機時間を大幅に削減し、処理効率を高めることが可能となる。また、空間的局所性を利用し、主記憶装置からデータを読み込む際に、要求されたデータだけでなく、その周辺のデータも「キャッシュライン」と呼ばれる一定のブロック単位でまとめてキャッシュに読み込んでおく。これにより、次に隣接するデータが必要になったときには、既にキャッシュに存在するため、高速なアクセスが可能となる。 このキャッシュメモリの階層構造(L1キャッシュ、L2キャッシュ、L3キャッシュなど)や、仮想記憶システムのページング処理、TLB(Translation Lookaside Buffer)など、現代のコンピュータアーキテクチャの多くの部分は、プログラムが局所参照性を持つという前提のもとに設計されている。局所参照性の高いプログラムはキャッシュヒット率が高くなり、結果として高いパフォーマンスを発揮しやすい。逆に、局所参照性の低いプログラム、例えばメモリ上の広範囲にわたるデータをランダムにアクセスするようなプログラムは、キャッシュミスが多発し、主記憶装置へのアクセスが増えるため、期待される性能が出にくい傾向がある。 システムエンジニアがプログラムを設計・実装する際には、この局所参照性を意識することが重要である。例えば、配列の要素にアクセスする際は、連続したアクセスを心がける。データ構造を設計する際には、関連性の高いデータをメモリ上で近くに配置するように考慮する。また、不要なデータへのアクセスを避けるなど、プログラミングの手法によって局所参照性を高めることが可能である。コンパイラもまた、プログラムの実行効率を上げるために、命令やデータの配置を最適化する際に局所参照性を考慮している。局所参照性の理解は、高性能なシステムを構築し、ボトルネックを特定し、最適化を行う上で不可欠な基礎知識と言える。

局所参照性 (キョクショサンスウ) とは | 意味や読み方など丁寧でわかりやすい用語解説