LOCSIM : プログラム実行位置観測シミュレータ
どの程度の局所性を持ってプログラムが実行されているのか、非常に簡単にシミュレートするプログラムを作ってみました。
仮想記憶というアプローチは、実際にはこの局所性があるためにうまく機能するのだ、ということを実感してもらえると良いのですが。
(動作環境は京産大 cc 環境の Linux など、EGGX のインストールされている X11 が動作するシステム。)
- README.Yasu : 簡単なドキュメント
- ソースプログラム
グラフィクス表示に EGGX を用いています。cc 環境には EGGX がインストールされていますから、eggx -o locsim locsim.c などとしてコンパイルしてください。
- サンプルデータ
仮想記憶シミュレータをトレースしてみました。
シミュレーション用プログラムソース
実行時ログデータ
$ locsim_pst vmsim_sim.c vmsim_1.dat
などとして実行します。
タイトル図のような画像ウィンドウが表示されますので、何かキーを押してください。
自動的に実行されている行の部分をハイライトし、最終的に最もよく実行された行が赤く、殆ど実行されなかった行が青く残るようになります。
このシミュレーションは「実行コードではなくソースコードレベルで追跡している」「コードだけでデータのアクセスを追跡していない」などの点で実際のプログラムがメモリをどのように局所的に扱うかということについては不充分です。より実際的には、最適化された実行プログラムが、どの実行コードを走らせ、どのデータ領域を読み書きするのか、その双方を追う必要があるでしょう。これはあくまで理解を助けるためのモデルと考えて下さい。
Yutaka Yasuda (yasuda@cc.kyoto-su.ac.jp)