(57)【要約】【課題】膨大なプログラムを短時間で性能解析することができる方法を提供する。【解決手段】シミュレータ２はプログラム１をシミュレートする際に、分岐が発生すると分岐トレース情報３１をトレースファイル３に出力する。パフォーマンスアナライザ４は、分岐トレース情報３１に基づき、プログラム１に含まれる基本ブロックを決定し、基本ブロック５１の単位で実行回数５２と実行サイクル数５３を出力する。基本ブロック単位でトレース情報を圧縮できるので、トレースファイル３に出力する情報量を削減することができ、シミュレーションに費やされる時間を短縮できる。【選択図】　　　　図１
2004030514.tif 000002
【特許請求の範囲】
【請求項１】
解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第１のトレース情報をトレースファイルに出力するシミュレート工程と、
前記トレースファイルから、前記分岐先の命令または前記分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析工程とを有する性能解析方法。
【請求項２】
請求項１において、前記シミュレート工程では、所定のタイミングからの実行サイクル数をさらに含む前記第１のトレース情報を出力し、
前記解析工程では、前記基本ブロック毎の実行サイクル数をさらに出力する性能解析方法。
【請求項３】
請求項２において、前記シミュレート工程では、直前の前記第１のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む第１のトレース情報を前記トレースファイルに出力する性能解析方法。
【請求項４】
請求項２において、前記シミュレート工程では、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第２のトレース情報を前記トレースファイルに出力し、
前記解析工程では、前記キャッシュミスによる損失サイクル数をさらに出力する性能解析方法。
【請求項５】
請求項４において、前記シミュレート工程では、直前の前記第１または第２のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む前記第１および第２のトレース情報を出力する性能解析方法。
【請求項６】
解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第１のトレース情報をトレースファイルに出力する第１のトレース処理を実行可能な命令を有するシミュレートプログラム。
【請求項７】
請求項６において、前記第１のトレース処理では、所定のタイミングからの実行サイクル数をさらに含む前記第１のトレース情報を出力するシミュレートプログラム。
【請求項８】
請求項７において、前記第１のトレース処理では、直前の前記第１のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む第１のトレース情報を前記トレースファイルに出力する、シミュレートプログラム。
【請求項９】
請求項７において、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第２のトレース情報を前記トレースファイルに出力する第２のトレース処理を実行可能な命令をさらに有するシミュレートプログラム。
【請求項１０】
請求項９において、前記第１のトレース処理では、直前の前記第１または第２のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む前記第１のトレース情報を出力し、
前記第２のトレース処理では、直前の前記第１または第２のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む前記第２のトレース情報を出力するシミュレートプログラム。
【請求項１１】
解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第１のトレース情報が記録されたトレースファイルから、前記分岐先の命令または前記分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析処理を実行可能な命令を有する性能解析プログラム。
【請求項１２】
請求項１１において、前記第１のトレース情報には、所定のタイミングからの実行サイクル数が含まれており、
前記解析処理では、前記基本ブロック毎の実行サイクル数も出力する性能解析プログラム。
【請求項１３】
請求項１２において、前記トレースファイルには、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第２のトレース情報がさらに記録されており、
前記解析処理は、前記キャッシュミスによる損失サイクル数をさらに出力する性能解析プログラム。
【請求項１４】
解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第１のトレース情報をトレースファイルに出力する第１のトレース手段を有するシミュレータ。
【請求項１５】
請求項１４において、前記第１のトレース手段は、所定のタイミングからの実行サイクル数をさらに含む前記第１のトレース情報を出力するシミュレータ。
【請求項１６】
請求項１５において、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第２のトレース情報を前記トレースファイルに出力する第２のトレース手段をさらに有するシミュレータ。
【請求項１７】
解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第１のトレース情報が記録されたトレースファイルから、前記分岐先の命令または前記分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析手段を有するアナライザ。
【請求項１８】
請求項１７において、前記第１のトレース情報には、所定のタイミングからの実行サイクル数が含まれており、
前記解析手段は、前記基本ブロック毎の実行サイクル数をさらに出力するアナライザ。
【請求項１９】
請求項１８において、前記トレースファイルには、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第２のトレース情報がさらに記録されており、
前記解析手段は、前記キャッシュミスによる損失サイクル数をさらに出力するアナライザ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムの性能解析に関するものである。
【０００２】
【従来の技術】
コンピュータは一連の命令を有するプログラムを実行する際に、それらの命令を通常、順番に実行する。条件分岐あるいはジャンプ命令などの無条件分岐を含む分岐命令が含まれている場合は、後続の命令を実行する代わりに分岐命令に示されている分岐先の命令を実行することもある。
【０００３】
【発明が解決しようとする課題】
プログラムの性能を検討する際、特に、プログラムの実行速度を向上するためにプログラムを解析する場合、どの命令の実行に時間が費やされているかは大きく注目されることである。そのためにプログラムをシミュレートする場合は、どの命令が最も頻繁に実行されているかを見つけることがプログラムの性能解析にとって重要なことである。そして、頻繁に実行されている命令をさらに最適に実行できるようにすることにより、プログラムの実行速度を最も向上できる可能性がある。
【０００４】
そのために、シミュレータは、プログラム中の命令のうち、実際に実行された命令に関する情報をトレース情報としてトレースファイルなどに出力し、パフォーマンスアナライザは、それを統計処理する必要がある。したがって、数百万サイクルの実行サイクルが必要なプログラムをシミュレートして、その性能を解析するためには、数百万ものトレース情報を出力する必要がある。このため、トレースファイルは膨大な容量となり、それを統計処理する時間も膨大となる。さらに、命令を実行するたびにトレース情報を出力するとなると、プログラムをシミュレートするために必要な時間も膨大になり、シミュレータは何時間も稼動し続ける必要がある。
【０００５】
そこで、本発明においては、短時間でプログラムの性能解析ができる性能解析方法を提供する。本発明においては、トレースファイルの容量を削減し、トレース情報を出力するというシミュレーションにはオーバヘッドとなる時間を圧縮することができる性能解析方法、およびそれに適したシミュレータおよびアナライザを提供する。
【０００６】
【課題を解決するための手段】
本発明においては、各命令が個別に実行されるのではなく、ある程度の範囲で連続した命令が、必ず順番に実行されることに着目し、その範囲を１つの固まり、あるいは基本ブロックとして捉えることにより、トレースファイルに出力するデータ量を削減する。基本ブロックは、プログラムの最初あるいは最後などの例外を除けば、以下の条件を満たすものである。
条件１．最後の命令は分岐命令であり、最初の命令は分岐命令の分岐先の命令または分岐命令に続く命令である。分岐命令は条件付分岐命令および無条件で分岐する命令を含み、プログラムの実行中に少なくとも１度は分岐命令の後続の命令に制御が渡されることがないすべての命令を含む。
条件２．基本ブロック内では、それに含まれる命令が順番に実行され、後続の命令を飛び越して他の命令に制御がわたることがない。
条件３．最後の命令を除き、基本ブロック内には、分岐命令が含まれない。
【０００７】
この基本ブロック内に含まれる命令は、この基本ブロックの先頭の命令に制御がわたされると必ず一度ずつ順番に、すなわち、飛んだり、繰り返されたりすることなく実行される。したがって、１つの基本ブロックは、１つの命令よりも大きな実行単位として認識することが可能である。このため、基本ブロックに制御がわたされたこと、および基本ブロック毎の実行回数を記録し解析することにより、個々の命令レベルで実行回数を記録したのと同様にプログラムの性能を解析することができる。
【０００８】
この基本ブロックをベースとする性能解析方法であると、トレース情報は基本ブロック毎に出力すればよく、個々の命令ベースでトレース情報を出力するよりもデータ量は非常に削減される。このため、トレースファイルの容量は小さくなる。また、トレース情報が減るので、そのＩ／Ｏのために必要となる処理時間も省かれ、オーバヘッドが減るのでシミュレーションの時間も短縮される。さらに、性能解析するための入力量も減るので性能解析にかかる時間も短縮される。したがって、膨大な命令数を含み、実行サイクル数の大きなプログラムであっても短時間に性能を解析することができる。
【０００９】
このため、本発明の性能解析方法は、解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、分岐命令のアドレス情報および分岐先の命令のアドレス情報を含む第１のトレース情報をトレースファイルに出力するシミュレート工程と、トレースファイルから、分岐先の命令または分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析工程とを有する。分岐したときに、分岐命令のアドレスと、分岐先のアドレスがトレース情報として出力されれば、解析工程では、解析対象のプログラムに含まれる基本ブロックを見つけることができ、トレース情報を統計処理することにより、基本ブロック毎の実行回数を出力できる。
【００１０】
本発明の性能解析方法は、解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、分岐命令のアドレス情報および分岐先の命令のアドレス情報を含む第１のトレース情報をトレースファイルに出力する第１のトレース処理を実行可能な命令を有するシミュレートプログラムと、そのトレースファイルから、分岐命令が最終の命令となり、分岐先の命令または分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析処理を実行可能な命令を有する性能解析プログラムとを順次実行することによりソフトウェアで実現できる。また、第１のトレース情報をトレースファイルに出力する第１のトレース手段を有するシミュレータと、トレースファイルから、基本ブロック毎の実行回数を出力する解析手段を有するアナライザとを用いてハードウェアで実現できる。
【００１１】
この性能解析により、プログラム中の実行頻度の高い基本ブロックが判明すれば、その基本ブロックに含まれる命令を最適化することによりプログラムの実行速度を効率良く向上できる。最適化には、基本ブロックに含まれる命令をハードウェア化することも含まれる。その基本ブロックに含まれる命令を専用回路化したり、複数の専用回路を組み合わせて実行することにより実行頻度の高い部分を高速化することが可能となり、プログラムの実行速度を向上できる。
【００１２】
この解析方法では、基本ブロック毎の実行サイクル数を把握することにより、キャッシュミス（キャッシュストール）などの外的要因により基本ブロックの実行速度が低下することも解析できる。一般的には、基本ブロック内では１命令が１サイクルで実行あるいはフェッチされるので、基本ブロックの実行サイクルは基本ブロックに含まれる命令数に一致する。しかしながら、データキャッシュあるいは命令キャッシュにキャッシュミスが発生すると、メインメモリとの間で入出力するために実行サイクルが消費され、基本ブロックの実行サイクル数が増加する。したがって、第１のトレース情報として、所定のタイミングからの実行サイクル数をさらにトレースファイルに出力し、解析工程では、基本ブロック毎の実行サイクル数をさらに出力することにより、サイクル数が浪費されているか否か判断できる。また、基本ブロック毎の実行サイクル数を出力することにより、解析対象のプログラムの処理時間中の基本ブロック毎の実行時間が占める割合を、より明確に把握できる。
【００１３】
実行サイクル数を計測する基本となる所定のタイミングは解析工程が共通して認識できるタイミングであれば良い。直前の第１のトレース情報を出力する条件が成立してから、それに続く第１のトレース情報までの実行サイクル数を出力することができ、第１のトレース情報として出力する実行サイクル数の値がもっとも小さくなるのでトレース情報のデータ量を小さくできる。
【００１４】
さらに、シミュレートする際中に、キャッシュミスが発生したときに、所定のタイミングからの実行サイクル数、キャッシュミスが発生した命令およびそのアドレス情報を含む第２のトレース情報をトレースファイルに出力することが望ましい。これにより、キャッシュミスが発生した箇所の詳細が分かり、その命令から命令キャッシュのキャッシュミスなのか、データキャッシュのキャッシュミスなのかなど、さらに詳しい実行状況を知ることができる。上述したように所定のタイミングは解析する際にシミュレータと共通して認識できるタイミングであれば良い。また、直前の第１または第２のトレース情報を出力する条件が成立してからの実行サイクル数であれば、出力する実行サイクル数の値をもっとも小さくできる。
【００１５】
【発明の実施の形態】
以下では、図面を参照しながら、さらに詳しく説明する。図１に、本発明の性能解析方法の概要を示してある。処理対象のプログラム１をシミュレータ２でシミュレートしてトレースファイル３を出力し、そのトレースファイル３をアナライザ４で解析してプログラム１の実行状態を示す解析結果５を出力する。プログラム１には、ポインタまたはアドレス（図中の「ｐ−？？」）１１と対応付けられた複数の命令（図中の「ｉｎｓ　？？」）１２が含まれており、基本的には、アドレス１１の順番で命令１２をフェッチされ、実行される。しかしながら、命令１２がジャンプ命令などの無条件で分岐する命令や条件付で分岐する命令などの後続の命令以外の命令を実行する命令（本明細書では、そのような命令をすべて含めて分岐命令と称する）であると、その分岐命令で指示されたアドレスの命令がフェッチされ、実行される。
【００１６】
図１に示したプログラム１では、アスタリスクを付した命令、すなわち、「ｉｎｓ　ａｎ」、「ｉｎｓ　ｃｎ」、「ｉｎｓ　ｄｎ」および「ｉｎｓ　ｘｎ」が分岐命令１３であり、その結果、破線で示したようにプログラムの制御が移行する。「ｉｎｓ　ａｎ」はアドレスｐ−ｘ１を分岐先とするジャンプ命令であり、「ｉｎｓ　ｃｎ」はアドレスｐ−ｂ１を分岐先とする条件付分岐命令であり、「ｉｎｓ　ｄｎ」はアドレスｐ−ｙ１を分岐先とする分岐命令であり、「ｉｎｓ　ｘｎ」はアドレスｐ−ｃ１を分岐先とする条件付分岐命令である。
【００１７】
シミュレータ２は、プログラム１の命令１２をフェッチするユニット２１と、その命令１２をシミュレートするユニット２２と、分岐が発生すると分岐トレース情報（Ｊｂｒ、第１のトレース情報）３１をトレースファイル３に出力するトレースユニット２３とを備えている。このトレースユニット２３は、さらに、命令１２をフェッチまたは実行するときに命令キャッシュまたはデータキャッシュにキャッシュミス（キャッシュストール）が発生すると、そのキャッシュミス情報（Ｊｓｔａｌｌ、第２のトレース情報）３２をトレースファイル３に出力する。トレースユニット２３は、分岐トレース情報３１として、その命令を実行しているＣＰＵの番号３５、直前の分岐トレース情報３１またはキャッシュミス情報３２を出力したときからの実行サイクル数３６、分岐命令１３のアドレス３７および分岐先のアドレス３８を出力する。また、キャッシュミス情報３２として、その命令を実行しているＣＰＵの番号３５、直前の分岐トレース情報３１またはキャッシュミス情報３２を出力したときからキャッシュミスが発生した命令１２を実行するまでの実行サイクル数３６、キャッシュミスが発生した命令１２のアドレス３６を出力する。
【００１８】
したがって、トレースファイル３には、命令１２が分岐命令１３であり、制御が後続の命令以外の命令に移行する、分岐条件が成立すると、分岐トレース情報３１が追加され、キャッシュミスが発生するとキャッシュミス情報３２が追加される。
【００１９】
パフォーマンスアナライザ４は、トレースファイル３を読み込むロードユニット４１と、トレースファイル３のトレース情報３１および３２から、プログラム１に含まれる基本ブロックを決定し、それぞれの基本ブロックの実行サイクルと実行回数を出力する解析ユニット４２とを備えている。基本ブロックは、上記にて説明した条件１から３を満足するものである。本例であると、トレースファイル３に出力された分岐トレース情報３１の分岐先アドレス３８から、アドレス「ｐ−ｘ１」、「ｐ−ｃ１」「ｐ−ｂ１」および「ｐ−ｙ１」の命令１２を先頭とする基本ブロックが決定できる。さらに、分岐命令「ｉｎｓ　ｃｎ」に続くアドレス「ｐ−ｄ１」を先頭する基本ブロックが決定できる。また、アドレス「ｐ−ａ１」もそれ以前に実行された分岐命令の分岐先であり、アドレス「ｐ−ａ１」の命令を先頭とする基本ブロックも決定できる。
【００２０】
したがって、アドレス「ｐ−ａ１」から「ｐ−ａｎ」の範囲が基本ブロックＡ、アドレス「ｐ−ｂ１」から「ｐ−ｂｎ」の範囲が基本ブロックＢ、アドレス「ｐ−ｃ１」から「ｐ−ｃｎ」の範囲が基本ブロックＣ、アドレス「ｐ−ｄ１」から「ｐ−ｄｎ」の範囲が基本ブロックＤ、アドレス「ｐ−ｘ１」から「ｐ−ｘｎ」の範囲が基本ブロックＸとなり、それぞれの基本ブロックＡ〜Ｘには、最終の命令を除き分岐命令１３は含まれない。あるいは、少なくともプログラム１の実行中に分岐条件が成立する分岐命令は含まれない。したがって、これらの基本ブロックＡ〜Ｘでは、先頭の命令１２から最終の命令１２までが順番に、飛んだり、繰り返されたりすることなく、一度ずつ順番に実行される。
【００２１】
トレースファイル３に出力された分岐トレース情報３１から上述したようにプログラム１に含まれる基本ブロック５１が決定できるので、解析ユニット４２はその情報を解析出力ファイル５に出力する。また、分岐が発生するたびに分岐トレース情報３１がトレースファイル３に追加されるので、基本ブロック５１を何回実行したかも分かるので、実行回数５２を基本ブロック毎に出力する。条件分岐命令であると、条件によって分岐が発生しないこともある。しかしながら、トレースファイル３に含まれる分岐トレース情報３１からすべての基本ブロック５１が決定されれば、分岐トレース情報３１のアドレス情報３７と分岐先のアドレス情報３８とから、それらのアドレス情報に挟まれた基本ブロック５１が静的に解析できるので、すべての基本ブロック毎に実行回数５２を出力できる。
【００２２】
さらに、分岐トレース情報３１には、実行サイクル数の情報３６も含まれているので、各々の基本ブロック５１で消費される実行サイクル数５３も出力できる。キャッシュミス、ファンクションコール、ＤＬＬコールなどの特殊な条件が発生しないかぎり、命令１２はサイクル毎にフェッチおよび実行される。したがって、基本ブロック５１の実行サイクルは基本ブロック５１に含まれる命令数によって決まる。しかしながら、キャッシュミスなどが発生すると基本ブロック５１の実行サイクル数は命令数からは一義的に決定できない。したがって、分岐トレース情報３１として直前の分岐トレース情報３１あるいはキャッシュミス情報３２からの実行サイクル数３６を出力しておくことが望ましい。実行サイクル数３６のカウント開始するタイミングは直前のトレース情報３１または３２が出力される条件が成立したときではなく、たとえば、プログラム１のシミュレーションを開始したときからでも良い。しかしながら、実行サイクル数が多くなると、実行サイクル数を示す数値が膨大になり、トレース情報３１または３２に含まれる数値が膨大になる。したがって、直近のトレース情報３１または３２を基準にして実行サイクルをカウントすることが望ましい。
【００２３】
また、本例のシミュレータ２は、キャッシュミスが発生するとキャッシュミス情報３２をトレースファイル３に追加する。キャッシュミス情報３２は、直前のトレース情報３１または３２からの実行サイクル数３６を備えている。したがって、直前のトレース情報３１または３２の要因となった命令からキャッシュミスが発生した命令の間にファンクションコールやＤＬＬコールなどの特殊な命令が含まれていなければ、直前のトレース情報３１または３２の要因となった命令からキャッシュミスが発生した命令の間の命令数を、キャッシュミス情報３２の実行サイクル数３６から引き算することによりキャッシュストールによるロスサイクル５４が判明する。したがって、パフォーマンスアナライザ５は、そのロスサイクルの情報５４も出力する。
【００２４】
さらに、キャッシュミス情報３２として、キャッシュミスが発生したアドレス３７もトレースファイル３に出力されているので、キャッシュミスが発生した命令１２を特定できる。したがって、命令の内容から命令キャッシュのストールなのか、データキャッシュのストールなのかも解析することができる。その情報をあわせて解析出力ファイル５に出力することも可能である。
【００２５】
また、キャッシュミス以外で実行サイクル数が不明となる命令として、上述したファンクションコールやＤＬＬコール命令がある。したがって、シミュレータ２は、そのような命令を実行したときにもキャッシュミス情報３２と同様に、実行サイクル数３６を出力するようにできる。これにより、コール命令で消費している実行サイクル数も特定できるので、さらに精度の高い性能解析が可能となる。
【００２６】
図２に、シミュレータ２の概略の処理をフローチャートで示してある。ステップ６１で、前の命令で制御が移行したアドレスの命令をフェッチおよび実行する。そのときにキャッシュミスが発生すると、ステップ６２でそれを判断し、ステップ６３でキャッシュミス情報３２をトレースファイル３に出力する。また、分岐が発生すると、ステップ６４でそれを判断し、分岐トレース情報３１をトレースファイル３に出力する。
【００２７】
図３に、パフォーマンスアナライザ４の概略の処理をフローチャートで示してある。まず、ステップ７１でトレースファイル３をロードし、ステップ７２で基本ブロック５１を決定する。次に、ステップ７３で、トレース情報３１および３２を解析し、基本ブロック毎に、実行回数５２と、実行サイクル数５３とを求め、ステップ７４で出力ファイル５に出力する。キャッシュストールによるロスサイクル数５４が求まる場合はそれも出力ファイル５に出力する。シミュレータ２およびパフォーマンスアナライザ４の機能は、各々の処理を実行する命令を有するプログラムとして、ＣＤ−ＲＯＭなどの適当な記録媒体に記録して提供することが可能であり、インターネットなどのコンピュータネットワークを介しても提供することができる。そして、十分なハードウェア資源を備えたコンピュータにそれらのプログラムをインストールすることにより、本発明の性能解析方法を実施する装置として機能させることができる。
【００２８】
本発明の性能解析方法では、上述したように、シミュレータ２はプログラム１に含まれる各命令のトレース情報を出力するのではなく、基本的には分岐が発生したときのみ分岐とレース情報３１をトレースファイル３に出力する。したがって、分岐が発生しないかぎりトレースファイル３へはデータを書き込まずにプログラム１をシミュレートできる。このため、シミュレーション時間を短縮できる。特に、実行サイクル数が膨大な、たとえば、数百万にもなるようなプログラムをシミュレートする際には、個々の命令を実行する毎にトレース情報を出力するのと、分岐が発生したときにだけトレース情報を出力するのでは、トレース情報の量が大幅に異なり、シミュレーションに要する時間に大きく影響する。
【００２９】
また、トレース情報を基本ブロック単位で圧縮できるので、情報量を大幅に削減することができる。したがって、トレースファイルは簡略化され、ファイル容量も小さくて良くなる。このため、シミュレーションを行うためのハードウェア資源もコンパクトなもので良くなる。
【００３０】
パフォーマンスアナライザ４においても、解析するためにロードする情報量が大幅に減るので、解析時間を短縮することができる。また、プログラム中に含まれる個々の命令ではなく、複数の命令の集合である基本ブロック単位でプログラムの性能を解析すれば良いので、解析時間も短縮される。一方、基本ブロック単位で解析しても、基本ブロック内の命令は必ずシーケンシャルに行われ、同一回数だけ実行されるので、性能解析の精度が低下することはない。したがって、本発明により、短時間でプログラムの性能解析ができる信頼性の高い性能解析方法を提供することが可能となる。
【００３１】
本発明の性能解析方法では、分岐命令であっても、プログラムを実行する際に実際には分岐することのない命令は分岐トレース情報の対象としておらず、基本ブロックを構成する要因とはしていない。プログラムを実行する際に分岐しないのであれば、それに続く命令が常にシーケンシャルに実行されるので、そのような分岐命令を基本ブロックに含めても性能解析上はなんら支障がない。その一方で、そのような分岐命令を実行しても分岐トレース情報を出力しないでよいので、そのために費やされる時間を省くことができ、シミュレーションに要する時間を短縮する効果がある。
【００３２】
実行サイクル数が大きく、実行回数が大きな基本ブロック５１が判明すれば、その基本ブロック５１の実行速度を改善することによりプログラム１の実行速度は大幅に改善される。本願の出願人は、それぞれ異なる特定の処理に適した内部データパスを備えた複数種類の専用処理要素（エレメント）と、複数の専用処理要素を接続する配線群とを備えたデータ処理ユニットを提案している。このデータ処理ユニットであれば、解析結果に基づき、実行回数の大きな基本ブロック５１をハードウェアで実行できる種類の専用処理要素を予め設けておくことにより、プログラム１の最も実行速度を左右する処理をハードウェアで高速に実行することが可能となる。したがって、本発明の性能解析方法を用いることにより、プログラム１に適した処理速度の速いデータ処理ユニットを提供することが可能となる。
【００３３】
もちろん、本発明の性能解析方法はプロセッサの開発だけではなく、負荷の高い基本ブロックをソフトウェア的に高速にするなどプログラムそのものの性能向上のためなどにおいても有効である。
【００３４】
【発明の効果】
以上に説明したように、本発明においては、各命令が個別に実行されるのではなく、ある程度の範囲で連続した命令が、必ず順番に実行されることに着目し、その範囲を基本ブロックとして捉えることにより、トレース情報を大幅に削減可能にしている。したがって、プログラムの性能解析をするためのシミュレーションに費やされる時間を大幅に短縮することができる。
【図面の簡単な説明】
【図１】本発明の性能解析方法の概略の処理を示す図である。
【図２】シミュレータの処理の概要を示すフローチャートである。
【図３】パフォーマンスアナライザの処理の概要を示すフローチャートである。
【符号の説明】
１　　処理対象のプログラム
２　　シミュレータ
３　　トレースファイル
４　　パフォーマンスアナライザ
５　　解析結果
３１　　分岐トレース情報
３２　　キャッシュミス情報
【図１】
2004030514.tif 000003
【図２】
2004030514.tif 000004
【図３】
2004030514.tif 000005