(57)【要約】【課題】キャッシュ情報を管理して、最適なリンクオプションを生成することによりキャッシュメモリの使用効率を向上させる。【解決手段】ターゲットプログラム３を主記憶装置に読み込ませ、キャッシュライン情報生成部５ａが構成されるために、キャッシュ性能情報６ｂとともに、キャッシュライン上のターゲットプログラム３の関数におけるメモリアドレス情報とシンボル情報とを有するキャッシュライン情報６ａが表示される。これにより、キャッシュコンフリクトを生じさせている関数を容易に特定でき、同一のキャッシュラインを共有しないようにそのような関数をリンクオプションで再配置することができ、キャッシュミスを削減することができる。【選択図】図１
2008015941.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュの情報を管理し、調整を行うプログラム調整装置において、
受信したソースプログラムをビルドによりターゲットプログラムに変換させるビルド部と、
前記ターゲットプログラムを主記憶装置に読み込ませるメモリロード部と、
前記ターゲットプログラムのシンボル情報とメモリアドレス情報とを有するキャッシュライン情報を生成させるキャッシュライン情報生成部と、
前記ターゲットプログラムのキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報を生成させるキャッシュ性能情報生成部と、
前記キャッシュライン情報と前記キャッシュ性能情報とを統合させ、キャッシュ情報を生成させるキャッシュ情報統合部と、
前記キャッシュ情報を表示させるキャッシュ情報表示部と、
を有することを特徴とするプログラム調整装置。
【請求項２】
前記キャッシュライン情報生成部により、前記キャッシュライン情報とともに、同一のキャッシュラインを共有する前記ターゲットプログラムの関数が判別され、前記キャッシュ情報表示部にて、前記キャッシュ情報とともに、前記判別された前記関数が表示されることを特徴とする請求項１記載のプログラム調整装置。
【請求項３】
前記判別された前記関数と前記キャッシュ情報を用いて、前記関数を再配置する配置調整部と、前記再配置後のアドレスを計算するアドレス計算部と、前記再配置後の配置にリンカオプションを生成するリンカオプション生成部とを有することを特徴とする請求項２記載のプログラム調整装置。
【請求項４】
前記再配置にドラッグアンドドロップまたは規定のアルゴリズムを用いることを特徴とする請求項３記載のプログラム調整装置。
【請求項５】
前記関数が、着色されて表示されることを特徴とする請求項２乃至４のいずれか一項に記載のプログラム調整装置。
【請求項６】
キャッシュの情報を管理し、調整を行うプログラム調整方法において、
受信したソースプログラムをビルドによりターゲットプログラムに変換させるビルド工程と、
前記ターゲットプログラムを主記憶装置に読み込ませるメモリロード工程と、
前記ターゲットプログラムのシンボル情報とメモリアドレス情報とを有するキャッシュライン情報を生成させるキャッシュライン情報生成工程と、
前記ターゲットプログラムのキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報を生成させるキャッシュ性能情報生成工程と、
前記キャッシュライン情報と前記キャッシュ性能情報とを統合させ、キャッシュ情報を生成させるキャッシュ情報統合工程と、
前記キャッシュ情報を表示させるキャッシュ情報表示工程と、
を有することを特徴とするプログラム調整方法。
【請求項７】
前記キャッシュライン情報生成工程により、前記キャッシュライン情報とともに、同一のキャッシュラインを共有する前記ターゲットプログラムの関数が判別され、前記キャッシュ情報表示工程にて、前記キャッシュ情報とともに、前記判別された前記関数が表示されることを特徴とする請求項６記載のプログラム調整方法。
【請求項８】
前記判別された前記関数と前記キャッシュ情報を用いて、前記関数を再配置する配置調整工程と、前記再配置後のアドレスを計算するアドレス計算工程と、前記再配置後の配置にリンカオプションを生成するリンカオプション生成工程とを有することを特徴とする請求項７記載のプログラム調整方法。
【請求項９】
前記再配置にドラッグアンドドロップまたは規定のアルゴリズムを用いることを特徴とする請求項８記載のプログラム調整方法。
【請求項１０】
前記関数が、着色されて表示されることを特徴とする請求項７乃至９のいずれか一項に記載のプログラム調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム調整装置およびプログラム調整方法に関し、特にキャッシュの情報を管理し、調整を行うプログラム調整装置およびその製造方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の処理を速くしても、演算に使用されるデータを揃える時間や演算結果を外部メモリに書き込む時間が隘路となるため、システム全体の処理速度の向上は難しいとされていた。
【０００３】
そこで、今日では、高速で小容量のメモリであるキャッシュを、外部メモリとＣＰＵの間に配置させることにより、ＣＰＵの処理速度と外部メモリへのアクセスに係るコストの差を吸収させることができ、システム全体の処理速度の向上に寄与することができた。
【０００４】
しかし、キャッシュは高速ではあるが、小容量であるために、キャッシュ上には、外部メモリにあるデータのごく一部しか置くことができない。すなわち、ＣＰＵからキャッシュへデータを取りに行くと、所望のデータがキャッシュ上にある場合（キャッシュヒット）は、そのままキャッシュからデータを持っていくことができる。しかし、所望のデータがキャッシュ上に無い場合（キャッシュミス）は、キャッシュからさらに外部メモリに存在する所望のデータをキャッシュまで持ってこなくてはならない。このキャッシュミスによって、システム全体の処理速度向上の隘路となってしまう。
【０００５】
そこで、キャッシュミスを減らし、キャッシュを有効に扱う方法として、例えば、以下の方法が提案されている。
図１６は、従来のプログラム調整の処理手順を示したフローチャートである。
【０００６】
従来のプログラム調整は、図１６に示す従来のプログラム調整の処理手順をコンピュータに実行させることによって、コンピュータはプログラム調整による処理手順を実行し、従来のプログラム調整装置として機能する。
【０００７】
従来のプログラム調整装置にて、図１６に示すフローチャートに沿って以下のような処理が行われる。
［ステップＳ１］  プロジェクトが作成され、ソースプログラムが編集される。
【０００８】
［ステップＳ２］  ソースプログラム中に測定範囲が、必要に応じて設定される。
［ステップＳ３］  ソースプログラムがコンパイル、アセンブル、リンクなどのビルドによってターゲットプログラムに変換される。
【０００９】
［ステップＳ４］  ターゲットプログラムをメインメモリに読み込ませる。
［ステップＳ８］  メインメモリに読み込まれるとＣＰＵによってターゲットプログラムのキャッシュ性能情報（キャッシュヒット数およびキャッシュミス数）の測定が実行される。
【００１０】
［ステップＳ９］  キャッシュ性能情報が取得される。
［ステップＳ１１］  キャッシュ性能情報がＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）で表示される。
【００１１】
［ステップＳ１３］  表示されたキャッシュ性能情報から、プログラムが十分な性能を有するか否かが判断される。十分な性能に至っていない場合は、ステップＳ１４に進む。
［ステップＳ１４］  ステップＳ９で得られたキャッシュ性能情報を参照して、プログラム中のロジックの変更、外部アクセスの局所性の構成、キャッシュへの事前配置措置、コンパイラなどのビルドオプションの調整などが行われる。調整後、ステップＳ３に戻って再度ステップＳ３からステップＳ１１を経て、ステップＳ１３にてプログラムが十分な性能を有するか否かが判断され、十分な性能があれば、ステップＳ１５に進む。
【００１２】
［ステップＳ１５］  十分な性能を有するキャッシュ性能情報が得られる。キャッシュ性能情報から判断して、ユーザのニーズによってステップＳ１またはステップＳ３に戻って再測定が行われる。
【００１３】
以上の処理手順によって、キャッシュヒット数およびキャッシュミス数が表示されることによって、最適なリンクオプションを生成し、キャッシュミスを削減する方法が提案されている。
【００１４】
また、この手順の他に、キャッシュの容量、ウェイ数、ラインの大きさなどのキャッシュの情報を内部情報として蓄えておく蓄積機能と、原始プログラムよりループを認識し、そのループにおけるデータのアクセス状況を解析する解析機能と、解析機能による解析結果を表示する表示機能とを有するキャッシュの情報表示システム（例えば、特許文献１参照。）も提案されている。
【００１５】
このようなプログラムの調整およびキャッシュの情報表示システムなどにより、キャッシュに関する情報が表示され、この表示された情報を用いることによって、ユーザは自らソースを変更し、あるいはユーザが知っている情報をコンパイラに提供し、プログラム調整を行うことによって、キャッシュミスを減少させ、キャッシュを有効に利用することが可能となった。
【特許文献１】特開平０８−２４１２０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかし、キャッシュミスを改善するために上記にあげた従来のプログラム調整を行うことには、以下のような問題点があった。
キャッシュミスを改善するために、例えば、Ｃ言語のようなプログラムの調整を行う場合、キャッシュミスから特定の関数のロジックやキャッシュメモリ上の配置を最適化する必要があるが、従来のプログラム調整の方法では、キャッシュミス数などは表示されるが、同じキャッシュラインを共有する他の関数や変数への影響が見えない。このため、関数同士や変数同士のキャッシュライン上から追い出し合い（キャッシュコンフリクト）が発生しても原因となる関数や変数の特定が難しいという問題があった。
【００１７】
本発明はこのような点に鑑みてなされたものであり、キャッシュ情報を管理して、最適なリンクオプションを生成することによりキャッシュメモリの使用効率を向上させるプログラム調整装置およびプログラム調整方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明では上記課題を解決するために、キャッシュの情報を管理し、調整を行うプログラム調整装置において、図１に示すように、受信したソースプログラム１をビルドによりターゲットプログラム３に変換させるビルド部２と、ターゲットプログラム３を主記憶装置に読み込ませるメモリロード部４と、ターゲットプログラム３のシンボル情報とメモリアドレス情報とを有するキャッシュライン情報６ａを生成させるキャッシュライン情報生成部５ａと、ターゲットプログラム３のキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報６ｂを生成させるキャッシュ性能情報生成部５ｂと、キャッシュライン情報６ａとキャッシュ性能情報６ｂとを統合させ、キャッシュ情報８を生成させるキャッシュ情報統合部７と、キャッシュ情報８を表示させるキャッシュ情報表示部９と、を有することを特徴とするプログラム調整装置が提供される。
【００１９】
上記の構成によれば、ターゲットプログラム３を主記憶装置に読み込ませ、キャッシュライン情報生成部５ａが構成されるために、キャッシュ性能情報６ｂとともに、キャッシュライン上のターゲットプログラム３の関数におけるメモリアドレス情報とシンボル情報とを有するキャッシュライン情報６ａが表示される。
【００２０】
また、本発明では、キャッシュの情報を管理し、調整を行うプログラム調整方法において、受信したソースプログラムをビルドによりターゲットプログラムに変換させるビルド工程と、前記ターゲットプログラムを主記憶装置に読み込ませるメモリロード工程と、前記ターゲットプログラムのシンボル情報とメモリアドレス情報とを有するキャッシュライン情報を生成させるキャッシュライン情報生成工程と、前記ターゲットプログラムのキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報を生成させるキャッシュ性能情報生成工程と、前記キャッシュライン情報と前記キャッシュ性能情報とを統合させ、キャッシュ情報を生成させるキャッシュ情報統合工程と、前記キャッシュ情報を表示させるキャッシュ情報表示工程と、を有することを特徴とするプログラム調整方法が提供される。
【００２１】
上記の方法によれば、受信したソースプログラムがビルドによりターゲットプログラムに変換され、ターゲットプログラムが主記憶装置に読み込まれ、ターゲットプログラムのシンボル情報とメモリアドレス情報とを有するキャッシュライン情報が生成され、ターゲットプログラムのキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報が生成され、キャッシュライン情報とキャッシュ性能情報とが統合され、キャッシュ情報が生成され、キャッシュ情報が表示されるため、キャッシュ性能情報とともに、キャッシュライン上のターゲットプログラムの関数におけるメモリアドレス情報とシンボル情報とを有するキャッシュライン情報が表示される。
【発明の効果】
【００２２】
本発明では、ターゲットプログラムを主記憶装置に読み込ませ、キャッシュライン情報生成部が構成されるために、キャッシュ性能情報とともに、キャッシュライン上のターゲットプログラムの関数におけるメモリアドレス情報とシンボル情報とを有するキャッシュライン情報を表示することができる。これにより、キャッシュコンフリクトを生じさせている関数を容易に特定でき、同一のキャッシュラインを共有しないようにそのような関数をリンクオプションで再配置することができ、キャッシュミスを削減することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。まず、本発明の原理について説明する。
本発明は、キャッシュメモリを搭載したコンピュータ用のアプリケーションプログラムについて、キャッシュライン情報およびキャッシュ性能情報を表示させ、その情報をもとに、プログラムの調整を行う。このようなプログラムの調整を行うことによって、キャッシュミスを削減させ、メモリ使用効率の向上が実現できる。
【００２４】
図１は、本発明の原理図である。
本発明に係るプログラム調整の処理手順は、ビルド部２、メモリロード部４、キャッシュライン情報生成部５ａ、キャッシュ性能情報生成部５ｂ、キャッシュ情報統合部７およびキャッシュ情報表示部９より構成されている。
【００２５】
ソースプログラム１が入力されると、ビルド部２により、コンパイル、アセンブル、リンクなどの処理が行われ、ターゲットプログラム３が生成される。
ターゲットプログラム３がメモリロード部４により、メインメモリに読み込まれ、開発環境に認識される。開発環境に認識されることによって、キャッシュライン情報生成部５ａによりシンボル情報とメモリアドレス情報とを有するキャッシュライン情報６ａが生成され、キャッシュ性能情報生成部５ｂにより、ターゲットプログラム３に関するキャッシュヒット数とキャッシュミス数を有するキャッシュ性能情報６ｂが生成される。
【００２６】
キャッシュライン情報６ａおよびキャッシュ性能情報６ｂがキャッシュ情報統合部７により統合され、キャッシュ情報８が生成される。
キャッシュ情報表示部９において、キャッシュ情報８が、例えばＧＵＩで表示される。
【００２７】
以上のように、従来のプログラム調整の処理方法と比較すると、キャッシュライン情報生成部５ａにおいて、キャッシュライン情報６ａを生成することによって、同一のキャッシュライン上にコピーされる関数を容易に表示することができる。このため、キャッシュコンフリクトを生じさせている関数や変数を容易に特定でき、同一のキャッシュラインを共有しないようにそのような関数や変数をリンクオプションで再配置することができ、キャッシュミスを削減することができ、キャッシュメモリの使用効率を向上させることが可能となる。
【００２８】
なお、本発明に係るプログラム調整の処理手順をコンピュータに実行させることによって、コンピュータはプログラム調整による処理手順を実行し、プログラム調整装置として機能する。
【００２９】
図２は、本発明のプログラム調整装置のハードウェア構成例を示すブロック図である。
図２に示すように、プログラム調整装置３００は、ＣＰＵ３０１によって、装置全体が制御されている。ＣＰＵ３０１には、バス３０４を介してＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、キャッシュメモリ３０２ａ、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）３０３、モニタ３１０が接続されたグラフィック処理装置３０７、マウス３０８およびキーボード３０９が接続された入力インタフェース３０６および通信インタフェース３０５が接続されている。このようなハードウェア構成によって、本発明のプログラム調整の処理手順が実行され、プログラム調整装置３００を実現することができる。
【００３０】
以下、第１の実施の形態について図面を参照にして説明する。
図３は、第１の実施の形態の処理手順を示したフローチャートである。
第１の実施の形態に係るプログラム調整は、本発明の原理にて説明したように、プログラム調整の処理手順をコンピュータに実行させることにより、コンピュータはプログラム調整の処理手順を実行し、プログラム調整装置として機能する。
【００３１】
このようなプログラム調整装置によって、図３に示すような、第１の実施の形態の処理手順が実現される。
第１の実施の形態のプログラム調整の処理手順は、図１６に示す従来のプログラム調整の処理手順のステップＳ４のターゲットロードのあとに、ステップＳ５のシンボル情報抽出、ステップＳ６のメモリアドレス情報抽出およびステップＳ７のキャッシュライン情報生成、そして、ステップＳ９のキャッシュ性能情報取得のあとに、ステップＳ１０のキャッシュ性能情報マージ、およびステップＳ１１のキャッシュ性能情報表示のあとに、ステップＳ１２のキャッシュライン情報表示が新たに具備されている。
【００３２】
以上のような第１の実施の形態のプログラム調整の処理手順が、以下のようなステップに沿って実行される。
［ステップＳ１］  プロジェクトが作成され、ソースプログラムが編集される。
【００３３】
［ステップＳ２］  ソースプログラム中に測定範囲が、必要に応じて設定される。
［ステップＳ３］  ソースプログラムがコンパイル、アセンブル、リンクなどのビルドによってターゲットプログラムに変換される。
【００３４】
［ステップＳ４］  ターゲットプログラムをメインメモリに読み込ませる。
［ステップＳ５］  ターゲットプログラムが読み込まれることによって、開発環境にシンボル情報およびメモリアドレス情報が認識される。そして、認識されたシンボル情報が抽出される。
【００３５】
［ステップＳ６］  認識されたメモリアドレス情報を抽出する。
［ステップＳ７］  ターゲットプログラムのどの関数がどのキャッシュラインにコピーされるのかを知るために、シンボル情報とメモリアドレス情報を有するキャッシュライン情報が計算されてテーブル管理される。
【００３６】
［ステップＳ８］  ターゲットプログラムがメインメモリに読み込まれるとＣＰＵによってターゲットプログラムのキャッシュ性能情報（キャッシュヒット数およびキャッシュミス数）の測定が実行される。
【００３７】
［ステップＳ９］  キャッシュ性能情報が取得される。
［ステップＳ１０］  キャッシュライン情報とキャッシュ性能情報とが統合されて、１つのテーブルにして管理する。
【００３８】
［ステップＳ１１］  キャッシュ性能情報をＧＵＩで表示させる。
［ステップＳ１２］  キャッシュライン情報をＧＵＩで表示させる。
［ステップＳ１３］  表示されたキャッシュライン情報およびキャッシュ性能情報から、プログラムが十分な性能を有するか否かが判断される。十分な性能に至っていない場合は、ステップＳ１４に進む。
【００３９】
［ステップＳ１４］  ステップＳ９で得られたキャッシュ性能情報を参照して、プログラム中のロジックの変更、外部アクセスの局所性の構成、キャッシュへの事前配置措置、コンパイラなどのビルドオプションの調整などが自動もしくは手動にて行われる。調整後、ステップＳ３に戻って再度ステップＳ３からステップＳ１１を経て、ステップＳ１３にてプログラムが十分な性能を有するか否かが判断され、十分な性能があれば、ステップＳ１５に進む。
【００４０】
［ステップＳ１５］  十分な性能を有するキャッシュライン情報およびキャッシュ性能情報が得られる。キャッシュライン情報およびキャッシュ性能情報から判断して、ユーザのニーズによってステップＳ１またはステップＳ３に戻って再測定が行われる。
【００４１】
以上のステップを経て、第１の実施の形態のプログラム調整の処理手順が終了する。
図４〜図６は、第１の実施の形態による内部データのイメージ図、図７は、第１の実施の形態によるメモリウィンドウ中にキャッシュイメージが表示されたＧＵＩのイメージ図である。
【００４２】
以下に第１の実施の形態においてテーブル管理されるデータについて、第１の実施の形態におけるキャッシュサイズが４Ｋバイト、キャッシュラインが１２８ライン（３２バイト／ライン）である場合を例に説明する。
【００４３】
ステップＳ７により、メインメモリ上のターゲットプログラムの関数と、キャッシュラインとの対応に関するキャッシュライン情報が計算される。そして、図４に示すように、メモリアドレス情報、キャッシュラインおよびシンボル情報がテーブル管理される。
【００４４】
一方、ステップＳ９により、メインメモリ上のターゲットプログラムからキャッシュ性能情報が測定される。そして、図５に示すように、キャッシュミス数が測定され、メモリアドレス情報、キャッシュライン、キャッシュミス数がテーブル管理される。
【００４５】
そして、ステップＳ１０により、図６に示すように、図４および図５のテーブルが内部データとして１つのテーブルに統合される。このようにして統合された図６では、左からメモリアドレス情報、キャッシュライン、シンボル情報、キャッシュミス数が内部データとしてテーブル管理される。なお、図６における、＿ｓｕｂ、＿ｓｕｂ２、＿ｓｕｂ３に関するキャッシュミス数は未測定であるとする。
【００４６】
そして、この内部データイメージがＧＵＩによって、図７に示すようにメモリウィンドウイメージ７ｂ中にキャッシュイメージ７ａとして表示される。
以上のような処理手順を経ることによって、ターゲットプログラムにおいて、キャッシュライン上にコピーされる関数を容易に表示することができる。このため、キャッシュコンフリクトを生じさせている関数や変数を容易に特定でき、そのような関数や変数が同一のキャッシュラインを共有しないようにリンクオプションで再配置することができ、キャッシュミスを削減することができ、キャッシュメモリの使用効率を向上させることが可能となる。
【００４７】
次に第２の実施の形態について図面を参照にして以下に説明する。
図８は、第２の実施の形態の処理手順を示したフローチャートである。
第１の実施の形態ではメインメモリ上のターゲットプログラムの関数と、キャッシュラインとの対応に関する情報を表示できるようにしたのに対し、第２の実施の形態では、複数の関数および変数が、同一のキャッシュラインを共有している情報について強調表示されるようにした。これを実現するために、ステップＳ７のキャッシュライン情報生成に代わってステップＳ７ａのキャッシュライン共有情報生成を設けた。
【００４８】
第２の実施の形態に係るプログラム調整は、本発明の原理にて説明したように、プログラム調整の処理手順をコンピュータに実行させることにより、コンピュータはプログラム調整の処理手順を実行し、プログラム調整装置として機能する。
【００４９】
このようなプログラム調整装置によって、図８に示すような、第２の実施の形態の処理手順を示したフローチャートが実現される。
以上のような第２の実施の形態のプログラム調整の処理手順が、以下のようなステップに沿って実行される。
【００５０】
［ステップＳ１］  プロジェクトが作成され、ソースプログラムが編集される。
［ステップＳ２］  ソースプログラム中に測定範囲が、必要に応じて設定される。
［ステップＳ３］  ソースプログラムがコンパイル、アセンブル、リンクなどのビルドによってターゲットプログラムに変換される。
【００５１】
［ステップＳ４］  ターゲットプログラムをメインメモリに読み込ませる。
［ステップＳ５］  ターゲットプログラムが読み込まれることによって、開発環境にシンボル情報およびメモリアドレス情報が認識される。そして、認識されたシンボル情報が抽出される。
【００５２】
［ステップＳ６］  認識されたメモリアドレス情報を抽出する。
［ステップＳ７ａ］  ターゲットプログラムのどの関数がどのキャッシュラインにコピーされるのかを知るために、シンボル情報とメモリアドレス情報を有するキャッシュライン情報が計算されてテーブル管理される。各キャッシュラインを共有する関数が判別され、後にＧＵＩで強調表示される。
【００５３】
［ステップＳ８］  ターゲットプログラムがメインメモリに読み込まれるとＣＰＵによってターゲットプログラムのキャッシュ性能情報（キャッシュヒット数およびキャッシュミス数）の測定が実行される。
【００５４】
［ステップＳ９］  キャッシュ性能情報が取得される。
［ステップＳ１０］  キャッシュライン情報とキャッシュ性能情報とが統合されて、１つのテーブルにして管理する。
【００５５】
［ステップＳ１１］  キャッシュ性能情報をＧＵＩで表示させる。
［ステップＳ１２］  キャッシュライン情報をＧＵＩで表示させる。
［ステップＳ１３］  表示されたキャッシュライン情報およびキャッシュ性能情報から、プログラムが十分な性能を有するか否かが判断される。十分な性能に至っていない場合は、ステップＳ１４に進む。
【００５６】
［ステップＳ１４］  ステップＳ９で得られたキャッシュ性能情報を参照して、プログラム中のロジックの変更、外部アクセスの局所性の構成、キャッシュへの事前配置措置、コンパイラなどのビルドオプションの調整などが自動もしくは手動にて行われる。調整後、ステップＳ３に戻って再度ステップＳ３からステップＳ１１を経て、ステップＳ１３にてプログラムが十分な性能を有するか否かが判断され、十分な性能があれば、ステップＳ１５に進む。
【００５７】
［ステップＳ１５］  十分な性能を有するキャッシュライン情報およびキャッシュ性能情報が得られる。キャッシュライン情報およびキャッシュ性能情報から判断して、ユーザのニーズによってステップＳ１またはステップＳ３に戻って再測定が行われる。
【００５８】
以上のステップを経て、第２の実施の形態のプログラム調整の処理手順が終了する。
図９〜図１１は、第２の実施の形態による内部データのイメージ図、図１２は、第２の実施の形態によるメモリウィンドウ中にキャッシュイメージが表示されたＧＵＩのイメージ図である。
【００５９】
以下に第２の実施の形態においてテーブル管理されるデータについて、第１の実施の形態と同様に、キャッシュサイズが４Ｋバイト、キャッシュラインが１２８ライン（３２バイト／ライン）である場合を例に説明する。
【００６０】
ステップＳ７ａにより、メインメモリ上のターゲットプログラムの関数と、キャッシュラインとの対応に関するキャッシュライン情報およびキャッシュラインとの共有情報が計算される。そして、図９に示すように、メモリアドレス情報、キャッシュラインおよびシンボル情報がテーブル管理される。
【００６１】
一方、ステップＳ９により、メインメモリ上のターゲットプログラムからキャッシュ性能情報が測定される。そして、図１０に示すように、キャッシュミス数が測定され、メモリアドレス情報、キャッシュライン、キャッシュミス数がテーブル管理される。
【００６２】
そして、ステップＳ１０により、図１１に示すように、図９および図１０のテーブルが内部データとして１つのテーブルに統合される。このようにして統合された図１１では、左からメモリアドレス情報、キャッシュライン、シンボル情報、キャッシュミス数が内部データとしてテーブル管理される。
【００６３】
そして、この内部データイメージがＧＵＩによって、図１２に示すようにメモリウィンドウイメージ８ｂ中にキャッシュイメージ８ａとして表示される。このとき、同一のＬｉｎｅ４を共有している関数の情報について強調表示される（図１２中では、点線で囲まれている。）。
【００６４】
以上のような処理手順を経ることによって、ターゲットプログラムにおいて、キャッシュライン上にコピーされる関数を容易に表示することができる。このため、キャッシュコンフリクトを生じさせている関数や変数を容易に特定でき、そのような関数や変数が同一のキャッシュラインを共有しないようにリンクオプションで再配置することができ、キャッシュミスを削減することができ、キャッシュメモリの使用効率を向上させることが可能となる。
【００６５】
次に第３の実施の形態について以下に図面を参照にして説明する。
図１３は、第３の実施の形態の処理手順を示したフローチャートである。
第１の実施の形態ではメインメモリ上のターゲットプログラムの関数と、キャッシュラインとの対応に関する情報を表示できるようにして、さらに第２の実施の形態ではターゲットプログラムの関数が同一のキャッシュラインを共有している情報が強調して表示されるようにした。第３の実施の形態では、第２の実施の形態に対して、ステップＳ１４の調整手段に代わってステップＳ１４ａの配置調整手段、ステップＳ１４ｂのアドレス計算手段、ステップＳ１４ｃのリンカオプション生成手段を設けることで最適なリンカオプションができるようにした。
【００６６】
第３の実施の形態に係るプログラム調整は、本発明の原理にて説明したように、プログラム調整の処理手順をコンピュータに実行させることにより、コンピュータはプログラム調整の処理手順を実行し、プログラム調整装置として機能する。
【００６７】
このようなプログラム調整装置によって、図１３に示すような、第３の実施の形態の処理手順を示したフローチャートが実現される。
以上のような第３の実施の形態のプログラム調整の処理手順が、以下のようなステップに沿って実行される。
【００６８】
［ステップＳ１］  プロジェクトが作成され、ソースプログラムが編集される。
［ステップＳ２］  ソースプログラム中に測定範囲が、必要に応じて設定される。
［ステップＳ３］  ソースプログラムがコンパイル、アセンブル、リンクなどのビルドによってターゲットプログラムに変換される。
【００６９】
［ステップＳ４］  ターゲットプログラムをメインメモリに読み込ませる。
［ステップＳ５］  ターゲットプログラムが読み込まれることによって、開発環境にシンボル情報およびメモリアドレス情報が認識される。そして、認識されたシンボル情報が抽出される。
【００７０】
［ステップＳ６］  認識されたメモリアドレス情報を抽出する。
［ステップＳ７ａ］  ターゲットプログラムのどの関数がどのキャッシュラインにコピーされるのかを知るために、シンボル情報とメモリアドレス情報を有するキャッシュライン情報が計算されてテーブル管理される。各キャッシュラインを共有する関数が判別され、後にＧＵＩで強調表示される。
【００７１】
［ステップＳ８］  ターゲットプログラムがメインメモリに読み込まれるとＣＰＵによってターゲットプログラムのキャッシュ性能情報（キャッシュヒット数およびキャッシュミス数）の測定が実行される。
【００７２】
［ステップＳ９］  キャッシュ性能情報が取得される。
［ステップＳ１０］  キャッシュライン情報とキャッシュ性能情報とが統合されて、１つのテーブルにして管理する。
【００７３】
［ステップＳ１１］  キャッシュ性能情報をＧＵＩで表示させる。
［ステップＳ１２］  キャッシュライン情報をＧＵＩで表示させる。
［ステップＳ１３］  表示されたキャッシュライン情報およびキャッシュ性能情報から、プログラムが十分な性能を有するか否かが判断される。十分な性能に至っていない場合は、ステップＳ１４ａに進む。
【００７４】
［ステップＳ１４ａ］  ユーザによりＧＵＩ上で関数の再配置をドラッグアンドドロップにより行う。あるいは、規定のアルゴリズムなどにより配置を調整する。
［ステップＳ１４ｂ］  配置調整後の配置に対して、境界整合を計算し、再配置後のアドレスを計算し、表示する。
【００７５】
［ステップＳ１４ｃ］  再配置を行うためのリンカオプションを生成し、ステップＳ１５に進む。また、生成されたリンカオプションを必要に応じてステップＳ３のターゲットビルド手段に反映させる。
【００７６】
［ステップＳ１５］  十分な性能を有するキャッシュライン情報およびキャッシュ性能情報が得られる。キャッシュライン情報およびキャッシュ性能情報から判断して、ユーザのニーズによってステップＳ１またはステップＳ３に戻って再測定が行われる。
【００７７】
以上のステップを経て、第３の実施の形態のプログラム調整の処理手順が終了する。
図１４は、第３の実施の形態によってメモリウィンドウ中にキャッシュイメージを表示したＧＵＩのイメージ図、図１５は、第３の実施の形態によってメモリウィンドウ中に再配置後のキャッシュイメージを表示したＧＵＩのイメージ図である。
【００７８】
以下に第３の実施の形態においてテーブル管理されるデータについて、第１、第２の実施の形態と同様に、キャッシュサイズが４Ｋバイト、キャッシュラインが１２８ライン（３２バイト／ライン）である場合を例に説明する。
【００７９】
第２の実施の形態と同様に、ステップＳ７ａおよびステップＳ９にて得られて、テーブル管理される内部データが、ステップＳ１０によって１つのテーブルに統合される。
この統合された内部データイメージがＧＵＩによって、図１４に示すようにメモリウィンドウイメージ９ｂ中にキャッシュイメージ９ａとして表示される。このとき、同一のｌｉｎｅ＿０を共有している関数の情報について強調表示される（図１４中では、点線で囲まれている。）。
【００８０】
図１４にて表示されたキャッシュイメージ９ａにおいて、ドロップアンドドラッグによって、キャッシュミス数が多い＿ｆｕｎｃを、例えば、＿ｆｕｎｃ２と再配置を行うと、再配置後のアドレスが計算されて、再配置用のリンカオプションが生成されて、図１５に示すように表示される。なお、図１５では、再配置後のキャッシュミス数は未測定であるとする。
【００８１】
そして、生成されたリンカオプションは、必要に応じて、ステップＳ３のターゲットビルド手段に反映することができる。
以上のような処理手順を経ることによって、ターゲットプログラムにおいて、キャッシュライン上にコピーされる関数を容易に表示することができる。このため、キャッシュコンフリクトを生じさせている関数や変数を容易に特定でき、そのような関数や変数が同一のキャッシュラインを共有しないようにリンクオプションで再配置することができ、キャッシュミスを削減することができ、キャッシュメモリの使用効率を向上させることが可能となる。
【図面の簡単な説明】
【００８２】
【図１】本発明の原理図である。
【図２】本発明のプログラム調整装置のハードウェア構成例を示すブロック図である。
【図３】第１の実施の形態の処理手順を示したフローチャートである。
【図４】第１の実施の形態による内部データのイメージ図（その１）である。
【図５】第１の実施の形態による内部データのイメージ図（その２）である。
【図６】第１の実施の形態による内部データのイメージ図（その３）である。
【図７】第１の実施の形態によるメモリウィンドウ中にキャッシュイメージが表示されたＧＵＩのイメージ図である。
【図８】第２の実施の形態の処理手順を示したフローチャートである。
【図９】第２の実施の形態による内部データのイメージ図（その１）である。
【図１０】第２の実施の形態による内部データのイメージ図（その２）である。
【図１１】第２の実施の形態による内部データのイメージ図（その３）である。
【図１２】第２の実施の形態によるメモリウィンドウ中にキャッシュイメージが表示されたＧＵＩのイメージ図である。
【図１３】第３の実施の形態の処理手順を示したフローチャートである。
【図１４】第３の実施の形態によってメモリウィンドウ中にキャッシュイメージを表示したＧＵＩのイメージ図である。
【図１５】第３の実施の形態によってメモリウィンドウ中に再配置後のキャッシュイメージを表示したＧＵＩのイメージ図である。
【図１６】従来のプログラム調整の処理手順を示したフローチャートである。
【符号の説明】
【００８３】
１  ソースプログラム
２  ビルド部
３  ターゲットプログラム
４  メモリロード部
５ａ  キャッシュライン情報生成部
５ｂ  キャッシュ性能情報生成部
６ａ  キャッシュライン情報
６ｂ  キャッシュ性能情報
７  キャッシュ情報統合部
８  キャッシュ情報
９  キャッシュ情報表示部
【図１】
2008015941.tif 000003
【図２】
2008015941.tif 000004
【図３】
2008015941.tif 000005
【図４】
2008015941.tif 000006
【図５】
2008015941.tif 000007
【図６】
2008015941.tif 000008
【図７】
2008015941.tif 000009
【図８】
2008015941.tif 000010
【図９】
2008015941.tif 000011
【図１０】
2008015941.tif 000012
【図１１】
2008015941.tif 000013
【図１２】
2008015941.tif 000014
【図１３】
2008015941.tif 000015
【図１４】
2008015941.tif 000016
【図１５】
2008015941.tif 000017
【図１６】
2008015941.tif 000018