以下に記載されている質問に行き詰まっています。
以下を示すプログラムの一般的な特性と動作を説明してください:
(a) データアクセスに関する時間
的局所性が低い (b) 命令フェッチに関する時間的局所性が低い
時間的局所性は理解できますが、データ アクセスと命令フェッチに関しては、それが何を意味するのか理解できません。誰かが私にそれを説明してくれたら、とてもありがたいです。
以下に記載されている質問に行き詰まっています。
以下を示すプログラムの一般的な特性と動作を説明してください:
(a) データアクセスに関する時間
的局所性が低い (b) 命令フェッチに関する時間的局所性が低い
時間的局所性は理解できますが、データ アクセスと命令フェッチに関しては、それが何を意味するのか理解できません。誰かが私にそれを説明してくれたら、とてもありがたいです。
彼らは、CPU 内のデータと命令にアクセスするためのキャッシュの最適化について話している。基本的に、一時的な局所性が低いということは、頻繁に再利用されるが、1 つの大きなチャンク (つまり、時間の経過とともに広がる) ではないことを意味します。
時間的局所性の低い例:
read file
process data
output result
....
read file
process data
output result
....
read file
process data
output result
これを改善するには、すべての読み取りが一緒に行われ、すべての処理が一緒に行われ、すべての出力が一緒に行われるように再配置できます。
CPU のコンテキストでは、メモリの読み取りを頻繁に行う必要がある場合は、一度読み取ってキャッシュし、破棄する前にできるだけ多くのことを行うと言えます。命令の場合、これは、ループ命令などを非常に高速なキャッシュ (通常は L1) に保持することを意味します。データの場合、最もよく使用するものは何でもキャッシュすることを意味します。
適切な説明については、次のリンクを参照してください:
http://www.dotnetperls.com/temporal-locality
http://en.wikipedia.org/wiki/Locality_of_reference#Use_of_spatial_and_temporal_locality:_hierarchical_memory
参照: コンピュータの構成と設計: ハードウェア/ソフトウェア インターフェイス