JP2004030514A - 性能解析方法 - Google Patents
性能解析方法 Download PDFInfo
- Publication number
- JP2004030514A JP2004030514A JP2002189393A JP2002189393A JP2004030514A JP 2004030514 A JP2004030514 A JP 2004030514A JP 2002189393 A JP2002189393 A JP 2002189393A JP 2002189393 A JP2002189393 A JP 2002189393A JP 2004030514 A JP2004030514 A JP 2004030514A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- trace
- branch
- program
- trace information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】膨大なプログラムを短時間で性能解析することができる方法を提供する。
【解決手段】シミュレータ2はプログラム1をシミュレートする際に、分岐が発生すると分岐トレース情報31をトレースファイル3に出力する。パフォーマンスアナライザ4は、分岐トレース情報31に基づき、プログラム1に含まれる基本ブロックを決定し、基本ブロック51の単位で実行回数52と実行サイクル数53を出力する。基本ブロック単位でトレース情報を圧縮できるので、トレースファイル3に出力する情報量を削減することができ、シミュレーションに費やされる時間を短縮できる。
【選択図】 図1
【解決手段】シミュレータ2はプログラム1をシミュレートする際に、分岐が発生すると分岐トレース情報31をトレースファイル3に出力する。パフォーマンスアナライザ4は、分岐トレース情報31に基づき、プログラム1に含まれる基本ブロックを決定し、基本ブロック51の単位で実行回数52と実行サイクル数53を出力する。基本ブロック単位でトレース情報を圧縮できるので、トレースファイル3に出力する情報量を削減することができ、シミュレーションに費やされる時間を短縮できる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、プログラムの性能解析に関するものである。
【0002】
【従来の技術】
コンピュータは一連の命令を有するプログラムを実行する際に、それらの命令を通常、順番に実行する。条件分岐あるいはジャンプ命令などの無条件分岐を含む分岐命令が含まれている場合は、後続の命令を実行する代わりに分岐命令に示されている分岐先の命令を実行することもある。
【0003】
【発明が解決しようとする課題】
プログラムの性能を検討する際、特に、プログラムの実行速度を向上するためにプログラムを解析する場合、どの命令の実行に時間が費やされているかは大きく注目されることである。そのためにプログラムをシミュレートする場合は、どの命令が最も頻繁に実行されているかを見つけることがプログラムの性能解析にとって重要なことである。そして、頻繁に実行されている命令をさらに最適に実行できるようにすることにより、プログラムの実行速度を最も向上できる可能性がある。
【0004】
そのために、シミュレータは、プログラム中の命令のうち、実際に実行された命令に関する情報をトレース情報としてトレースファイルなどに出力し、パフォーマンスアナライザは、それを統計処理する必要がある。したがって、数百万サイクルの実行サイクルが必要なプログラムをシミュレートして、その性能を解析するためには、数百万ものトレース情報を出力する必要がある。このため、トレースファイルは膨大な容量となり、それを統計処理する時間も膨大となる。さらに、命令を実行するたびにトレース情報を出力するとなると、プログラムをシミュレートするために必要な時間も膨大になり、シミュレータは何時間も稼動し続ける必要がある。
【0005】
そこで、本発明においては、短時間でプログラムの性能解析ができる性能解析方法を提供する。本発明においては、トレースファイルの容量を削減し、トレース情報を出力するというシミュレーションにはオーバヘッドとなる時間を圧縮することができる性能解析方法、およびそれに適したシミュレータおよびアナライザを提供する。
【0006】
【課題を解決するための手段】
本発明においては、各命令が個別に実行されるのではなく、ある程度の範囲で連続した命令が、必ず順番に実行されることに着目し、その範囲を1つの固まり、あるいは基本ブロックとして捉えることにより、トレースファイルに出力するデータ量を削減する。基本ブロックは、プログラムの最初あるいは最後などの例外を除けば、以下の条件を満たすものである。
条件1.最後の命令は分岐命令であり、最初の命令は分岐命令の分岐先の命令または分岐命令に続く命令である。分岐命令は条件付分岐命令および無条件で分岐する命令を含み、プログラムの実行中に少なくとも1度は分岐命令の後続の命令に制御が渡されることがないすべての命令を含む。
条件2.基本ブロック内では、それに含まれる命令が順番に実行され、後続の命令を飛び越して他の命令に制御がわたることがない。
条件3.最後の命令を除き、基本ブロック内には、分岐命令が含まれない。
【0007】
この基本ブロック内に含まれる命令は、この基本ブロックの先頭の命令に制御がわたされると必ず一度ずつ順番に、すなわち、飛んだり、繰り返されたりすることなく実行される。したがって、1つの基本ブロックは、1つの命令よりも大きな実行単位として認識することが可能である。このため、基本ブロックに制御がわたされたこと、および基本ブロック毎の実行回数を記録し解析することにより、個々の命令レベルで実行回数を記録したのと同様にプログラムの性能を解析することができる。
【0008】
この基本ブロックをベースとする性能解析方法であると、トレース情報は基本ブロック毎に出力すればよく、個々の命令ベースでトレース情報を出力するよりもデータ量は非常に削減される。このため、トレースファイルの容量は小さくなる。また、トレース情報が減るので、そのI/Oのために必要となる処理時間も省かれ、オーバヘッドが減るのでシミュレーションの時間も短縮される。さらに、性能解析するための入力量も減るので性能解析にかかる時間も短縮される。したがって、膨大な命令数を含み、実行サイクル数の大きなプログラムであっても短時間に性能を解析することができる。
【0009】
このため、本発明の性能解析方法は、解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、分岐命令のアドレス情報および分岐先の命令のアドレス情報を含む第1のトレース情報をトレースファイルに出力するシミュレート工程と、トレースファイルから、分岐先の命令または分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析工程とを有する。分岐したときに、分岐命令のアドレスと、分岐先のアドレスがトレース情報として出力されれば、解析工程では、解析対象のプログラムに含まれる基本ブロックを見つけることができ、トレース情報を統計処理することにより、基本ブロック毎の実行回数を出力できる。
【0010】
本発明の性能解析方法は、解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、分岐命令のアドレス情報および分岐先の命令のアドレス情報を含む第1のトレース情報をトレースファイルに出力する第1のトレース処理を実行可能な命令を有するシミュレートプログラムと、そのトレースファイルから、分岐命令が最終の命令となり、分岐先の命令または分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析処理を実行可能な命令を有する性能解析プログラムとを順次実行することによりソフトウェアで実現できる。また、第1のトレース情報をトレースファイルに出力する第1のトレース手段を有するシミュレータと、トレースファイルから、基本ブロック毎の実行回数を出力する解析手段を有するアナライザとを用いてハードウェアで実現できる。
【0011】
この性能解析により、プログラム中の実行頻度の高い基本ブロックが判明すれば、その基本ブロックに含まれる命令を最適化することによりプログラムの実行速度を効率良く向上できる。最適化には、基本ブロックに含まれる命令をハードウェア化することも含まれる。その基本ブロックに含まれる命令を専用回路化したり、複数の専用回路を組み合わせて実行することにより実行頻度の高い部分を高速化することが可能となり、プログラムの実行速度を向上できる。
【0012】
この解析方法では、基本ブロック毎の実行サイクル数を把握することにより、キャッシュミス(キャッシュストール)などの外的要因により基本ブロックの実行速度が低下することも解析できる。一般的には、基本ブロック内では1命令が1サイクルで実行あるいはフェッチされるので、基本ブロックの実行サイクルは基本ブロックに含まれる命令数に一致する。しかしながら、データキャッシュあるいは命令キャッシュにキャッシュミスが発生すると、メインメモリとの間で入出力するために実行サイクルが消費され、基本ブロックの実行サイクル数が増加する。したがって、第1のトレース情報として、所定のタイミングからの実行サイクル数をさらにトレースファイルに出力し、解析工程では、基本ブロック毎の実行サイクル数をさらに出力することにより、サイクル数が浪費されているか否か判断できる。また、基本ブロック毎の実行サイクル数を出力することにより、解析対象のプログラムの処理時間中の基本ブロック毎の実行時間が占める割合を、より明確に把握できる。
【0013】
実行サイクル数を計測する基本となる所定のタイミングは解析工程が共通して認識できるタイミングであれば良い。直前の第1のトレース情報を出力する条件が成立してから、それに続く第1のトレース情報までの実行サイクル数を出力することができ、第1のトレース情報として出力する実行サイクル数の値がもっとも小さくなるのでトレース情報のデータ量を小さくできる。
【0014】
さらに、シミュレートする際中に、キャッシュミスが発生したときに、所定のタイミングからの実行サイクル数、キャッシュミスが発生した命令およびそのアドレス情報を含む第2のトレース情報をトレースファイルに出力することが望ましい。これにより、キャッシュミスが発生した箇所の詳細が分かり、その命令から命令キャッシュのキャッシュミスなのか、データキャッシュのキャッシュミスなのかなど、さらに詳しい実行状況を知ることができる。上述したように所定のタイミングは解析する際にシミュレータと共通して認識できるタイミングであれば良い。また、直前の第1または第2のトレース情報を出力する条件が成立してからの実行サイクル数であれば、出力する実行サイクル数の値をもっとも小さくできる。
【0015】
【発明の実施の形態】
以下では、図面を参照しながら、さらに詳しく説明する。図1に、本発明の性能解析方法の概要を示してある。処理対象のプログラム1をシミュレータ2でシミュレートしてトレースファイル3を出力し、そのトレースファイル3をアナライザ4で解析してプログラム1の実行状態を示す解析結果5を出力する。プログラム1には、ポインタまたはアドレス(図中の「p−??」)11と対応付けられた複数の命令(図中の「ins ??」)12が含まれており、基本的には、アドレス11の順番で命令12をフェッチされ、実行される。しかしながら、命令12がジャンプ命令などの無条件で分岐する命令や条件付で分岐する命令などの後続の命令以外の命令を実行する命令(本明細書では、そのような命令をすべて含めて分岐命令と称する)であると、その分岐命令で指示されたアドレスの命令がフェッチされ、実行される。
【0016】
図1に示したプログラム1では、アスタリスクを付した命令、すなわち、「ins an」、「ins cn」、「ins dn」および「ins xn」が分岐命令13であり、その結果、破線で示したようにプログラムの制御が移行する。「ins an」はアドレスp−x1を分岐先とするジャンプ命令であり、「ins cn」はアドレスp−b1を分岐先とする条件付分岐命令であり、「ins dn」はアドレスp−y1を分岐先とする分岐命令であり、「ins xn」はアドレスp−c1を分岐先とする条件付分岐命令である。
【0017】
シミュレータ2は、プログラム1の命令12をフェッチするユニット21と、その命令12をシミュレートするユニット22と、分岐が発生すると分岐トレース情報(Jbr、第1のトレース情報)31をトレースファイル3に出力するトレースユニット23とを備えている。このトレースユニット23は、さらに、命令12をフェッチまたは実行するときに命令キャッシュまたはデータキャッシュにキャッシュミス(キャッシュストール)が発生すると、そのキャッシュミス情報(Jstall、第2のトレース情報)32をトレースファイル3に出力する。トレースユニット23は、分岐トレース情報31として、その命令を実行しているCPUの番号35、直前の分岐トレース情報31またはキャッシュミス情報32を出力したときからの実行サイクル数36、分岐命令13のアドレス37および分岐先のアドレス38を出力する。また、キャッシュミス情報32として、その命令を実行しているCPUの番号35、直前の分岐トレース情報31またはキャッシュミス情報32を出力したときからキャッシュミスが発生した命令12を実行するまでの実行サイクル数36、キャッシュミスが発生した命令12のアドレス36を出力する。
【0018】
したがって、トレースファイル3には、命令12が分岐命令13であり、制御が後続の命令以外の命令に移行する、分岐条件が成立すると、分岐トレース情報31が追加され、キャッシュミスが発生するとキャッシュミス情報32が追加される。
【0019】
パフォーマンスアナライザ4は、トレースファイル3を読み込むロードユニット41と、トレースファイル3のトレース情報31および32から、プログラム1に含まれる基本ブロックを決定し、それぞれの基本ブロックの実行サイクルと実行回数を出力する解析ユニット42とを備えている。基本ブロックは、上記にて説明した条件1から3を満足するものである。本例であると、トレースファイル3に出力された分岐トレース情報31の分岐先アドレス38から、アドレス「p−x1」、「p−c1」「p−b1」および「p−y1」の命令12を先頭とする基本ブロックが決定できる。さらに、分岐命令「ins cn」に続くアドレス「p−d1」を先頭する基本ブロックが決定できる。また、アドレス「p−a1」もそれ以前に実行された分岐命令の分岐先であり、アドレス「p−a1」の命令を先頭とする基本ブロックも決定できる。
【0020】
したがって、アドレス「p−a1」から「p−an」の範囲が基本ブロックA、アドレス「p−b1」から「p−bn」の範囲が基本ブロックB、アドレス「p−c1」から「p−cn」の範囲が基本ブロックC、アドレス「p−d1」から「p−dn」の範囲が基本ブロックD、アドレス「p−x1」から「p−xn」の範囲が基本ブロックXとなり、それぞれの基本ブロックA〜Xには、最終の命令を除き分岐命令13は含まれない。あるいは、少なくともプログラム1の実行中に分岐条件が成立する分岐命令は含まれない。したがって、これらの基本ブロックA〜Xでは、先頭の命令12から最終の命令12までが順番に、飛んだり、繰り返されたりすることなく、一度ずつ順番に実行される。
【0021】
トレースファイル3に出力された分岐トレース情報31から上述したようにプログラム1に含まれる基本ブロック51が決定できるので、解析ユニット42はその情報を解析出力ファイル5に出力する。また、分岐が発生するたびに分岐トレース情報31がトレースファイル3に追加されるので、基本ブロック51を何回実行したかも分かるので、実行回数52を基本ブロック毎に出力する。条件分岐命令であると、条件によって分岐が発生しないこともある。しかしながら、トレースファイル3に含まれる分岐トレース情報31からすべての基本ブロック51が決定されれば、分岐トレース情報31のアドレス情報37と分岐先のアドレス情報38とから、それらのアドレス情報に挟まれた基本ブロック51が静的に解析できるので、すべての基本ブロック毎に実行回数52を出力できる。
【0022】
さらに、分岐トレース情報31には、実行サイクル数の情報36も含まれているので、各々の基本ブロック51で消費される実行サイクル数53も出力できる。キャッシュミス、ファンクションコール、DLLコールなどの特殊な条件が発生しないかぎり、命令12はサイクル毎にフェッチおよび実行される。したがって、基本ブロック51の実行サイクルは基本ブロック51に含まれる命令数によって決まる。しかしながら、キャッシュミスなどが発生すると基本ブロック51の実行サイクル数は命令数からは一義的に決定できない。したがって、分岐トレース情報31として直前の分岐トレース情報31あるいはキャッシュミス情報32からの実行サイクル数36を出力しておくことが望ましい。実行サイクル数36のカウント開始するタイミングは直前のトレース情報31または32が出力される条件が成立したときではなく、たとえば、プログラム1のシミュレーションを開始したときからでも良い。しかしながら、実行サイクル数が多くなると、実行サイクル数を示す数値が膨大になり、トレース情報31または32に含まれる数値が膨大になる。したがって、直近のトレース情報31または32を基準にして実行サイクルをカウントすることが望ましい。
【0023】
また、本例のシミュレータ2は、キャッシュミスが発生するとキャッシュミス情報32をトレースファイル3に追加する。キャッシュミス情報32は、直前のトレース情報31または32からの実行サイクル数36を備えている。したがって、直前のトレース情報31または32の要因となった命令からキャッシュミスが発生した命令の間にファンクションコールやDLLコールなどの特殊な命令が含まれていなければ、直前のトレース情報31または32の要因となった命令からキャッシュミスが発生した命令の間の命令数を、キャッシュミス情報32の実行サイクル数36から引き算することによりキャッシュストールによるロスサイクル54が判明する。したがって、パフォーマンスアナライザ5は、そのロスサイクルの情報54も出力する。
【0024】
さらに、キャッシュミス情報32として、キャッシュミスが発生したアドレス37もトレースファイル3に出力されているので、キャッシュミスが発生した命令12を特定できる。したがって、命令の内容から命令キャッシュのストールなのか、データキャッシュのストールなのかも解析することができる。その情報をあわせて解析出力ファイル5に出力することも可能である。
【0025】
また、キャッシュミス以外で実行サイクル数が不明となる命令として、上述したファンクションコールやDLLコール命令がある。したがって、シミュレータ2は、そのような命令を実行したときにもキャッシュミス情報32と同様に、実行サイクル数36を出力するようにできる。これにより、コール命令で消費している実行サイクル数も特定できるので、さらに精度の高い性能解析が可能となる。
【0026】
図2に、シミュレータ2の概略の処理をフローチャートで示してある。ステップ61で、前の命令で制御が移行したアドレスの命令をフェッチおよび実行する。そのときにキャッシュミスが発生すると、ステップ62でそれを判断し、ステップ63でキャッシュミス情報32をトレースファイル3に出力する。また、分岐が発生すると、ステップ64でそれを判断し、分岐トレース情報31をトレースファイル3に出力する。
【0027】
図3に、パフォーマンスアナライザ4の概略の処理をフローチャートで示してある。まず、ステップ71でトレースファイル3をロードし、ステップ72で基本ブロック51を決定する。次に、ステップ73で、トレース情報31および32を解析し、基本ブロック毎に、実行回数52と、実行サイクル数53とを求め、ステップ74で出力ファイル5に出力する。キャッシュストールによるロスサイクル数54が求まる場合はそれも出力ファイル5に出力する。シミュレータ2およびパフォーマンスアナライザ4の機能は、各々の処理を実行する命令を有するプログラムとして、CD−ROMなどの適当な記録媒体に記録して提供することが可能であり、インターネットなどのコンピュータネットワークを介しても提供することができる。そして、十分なハードウェア資源を備えたコンピュータにそれらのプログラムをインストールすることにより、本発明の性能解析方法を実施する装置として機能させることができる。
【0028】
本発明の性能解析方法では、上述したように、シミュレータ2はプログラム1に含まれる各命令のトレース情報を出力するのではなく、基本的には分岐が発生したときのみ分岐とレース情報31をトレースファイル3に出力する。したがって、分岐が発生しないかぎりトレースファイル3へはデータを書き込まずにプログラム1をシミュレートできる。このため、シミュレーション時間を短縮できる。特に、実行サイクル数が膨大な、たとえば、数百万にもなるようなプログラムをシミュレートする際には、個々の命令を実行する毎にトレース情報を出力するのと、分岐が発生したときにだけトレース情報を出力するのでは、トレース情報の量が大幅に異なり、シミュレーションに要する時間に大きく影響する。
【0029】
また、トレース情報を基本ブロック単位で圧縮できるので、情報量を大幅に削減することができる。したがって、トレースファイルは簡略化され、ファイル容量も小さくて良くなる。このため、シミュレーションを行うためのハードウェア資源もコンパクトなもので良くなる。
【0030】
パフォーマンスアナライザ4においても、解析するためにロードする情報量が大幅に減るので、解析時間を短縮することができる。また、プログラム中に含まれる個々の命令ではなく、複数の命令の集合である基本ブロック単位でプログラムの性能を解析すれば良いので、解析時間も短縮される。一方、基本ブロック単位で解析しても、基本ブロック内の命令は必ずシーケンシャルに行われ、同一回数だけ実行されるので、性能解析の精度が低下することはない。したがって、本発明により、短時間でプログラムの性能解析ができる信頼性の高い性能解析方法を提供することが可能となる。
【0031】
本発明の性能解析方法では、分岐命令であっても、プログラムを実行する際に実際には分岐することのない命令は分岐トレース情報の対象としておらず、基本ブロックを構成する要因とはしていない。プログラムを実行する際に分岐しないのであれば、それに続く命令が常にシーケンシャルに実行されるので、そのような分岐命令を基本ブロックに含めても性能解析上はなんら支障がない。その一方で、そのような分岐命令を実行しても分岐トレース情報を出力しないでよいので、そのために費やされる時間を省くことができ、シミュレーションに要する時間を短縮する効果がある。
【0032】
実行サイクル数が大きく、実行回数が大きな基本ブロック51が判明すれば、その基本ブロック51の実行速度を改善することによりプログラム1の実行速度は大幅に改善される。本願の出願人は、それぞれ異なる特定の処理に適した内部データパスを備えた複数種類の専用処理要素(エレメント)と、複数の専用処理要素を接続する配線群とを備えたデータ処理ユニットを提案している。このデータ処理ユニットであれば、解析結果に基づき、実行回数の大きな基本ブロック51をハードウェアで実行できる種類の専用処理要素を予め設けておくことにより、プログラム1の最も実行速度を左右する処理をハードウェアで高速に実行することが可能となる。したがって、本発明の性能解析方法を用いることにより、プログラム1に適した処理速度の速いデータ処理ユニットを提供することが可能となる。
【0033】
もちろん、本発明の性能解析方法はプロセッサの開発だけではなく、負荷の高い基本ブロックをソフトウェア的に高速にするなどプログラムそのものの性能向上のためなどにおいても有効である。
【0034】
【発明の効果】
以上に説明したように、本発明においては、各命令が個別に実行されるのではなく、ある程度の範囲で連続した命令が、必ず順番に実行されることに着目し、その範囲を基本ブロックとして捉えることにより、トレース情報を大幅に削減可能にしている。したがって、プログラムの性能解析をするためのシミュレーションに費やされる時間を大幅に短縮することができる。
【図面の簡単な説明】
【図1】本発明の性能解析方法の概略の処理を示す図である。
【図2】シミュレータの処理の概要を示すフローチャートである。
【図3】パフォーマンスアナライザの処理の概要を示すフローチャートである。
【符号の説明】
1 処理対象のプログラム
2 シミュレータ
3 トレースファイル
4 パフォーマンスアナライザ
5 解析結果
31 分岐トレース情報
32 キャッシュミス情報
【発明の属する技術分野】
本発明は、プログラムの性能解析に関するものである。
【0002】
【従来の技術】
コンピュータは一連の命令を有するプログラムを実行する際に、それらの命令を通常、順番に実行する。条件分岐あるいはジャンプ命令などの無条件分岐を含む分岐命令が含まれている場合は、後続の命令を実行する代わりに分岐命令に示されている分岐先の命令を実行することもある。
【0003】
【発明が解決しようとする課題】
プログラムの性能を検討する際、特に、プログラムの実行速度を向上するためにプログラムを解析する場合、どの命令の実行に時間が費やされているかは大きく注目されることである。そのためにプログラムをシミュレートする場合は、どの命令が最も頻繁に実行されているかを見つけることがプログラムの性能解析にとって重要なことである。そして、頻繁に実行されている命令をさらに最適に実行できるようにすることにより、プログラムの実行速度を最も向上できる可能性がある。
【0004】
そのために、シミュレータは、プログラム中の命令のうち、実際に実行された命令に関する情報をトレース情報としてトレースファイルなどに出力し、パフォーマンスアナライザは、それを統計処理する必要がある。したがって、数百万サイクルの実行サイクルが必要なプログラムをシミュレートして、その性能を解析するためには、数百万ものトレース情報を出力する必要がある。このため、トレースファイルは膨大な容量となり、それを統計処理する時間も膨大となる。さらに、命令を実行するたびにトレース情報を出力するとなると、プログラムをシミュレートするために必要な時間も膨大になり、シミュレータは何時間も稼動し続ける必要がある。
【0005】
そこで、本発明においては、短時間でプログラムの性能解析ができる性能解析方法を提供する。本発明においては、トレースファイルの容量を削減し、トレース情報を出力するというシミュレーションにはオーバヘッドとなる時間を圧縮することができる性能解析方法、およびそれに適したシミュレータおよびアナライザを提供する。
【0006】
【課題を解決するための手段】
本発明においては、各命令が個別に実行されるのではなく、ある程度の範囲で連続した命令が、必ず順番に実行されることに着目し、その範囲を1つの固まり、あるいは基本ブロックとして捉えることにより、トレースファイルに出力するデータ量を削減する。基本ブロックは、プログラムの最初あるいは最後などの例外を除けば、以下の条件を満たすものである。
条件1.最後の命令は分岐命令であり、最初の命令は分岐命令の分岐先の命令または分岐命令に続く命令である。分岐命令は条件付分岐命令および無条件で分岐する命令を含み、プログラムの実行中に少なくとも1度は分岐命令の後続の命令に制御が渡されることがないすべての命令を含む。
条件2.基本ブロック内では、それに含まれる命令が順番に実行され、後続の命令を飛び越して他の命令に制御がわたることがない。
条件3.最後の命令を除き、基本ブロック内には、分岐命令が含まれない。
【0007】
この基本ブロック内に含まれる命令は、この基本ブロックの先頭の命令に制御がわたされると必ず一度ずつ順番に、すなわち、飛んだり、繰り返されたりすることなく実行される。したがって、1つの基本ブロックは、1つの命令よりも大きな実行単位として認識することが可能である。このため、基本ブロックに制御がわたされたこと、および基本ブロック毎の実行回数を記録し解析することにより、個々の命令レベルで実行回数を記録したのと同様にプログラムの性能を解析することができる。
【0008】
この基本ブロックをベースとする性能解析方法であると、トレース情報は基本ブロック毎に出力すればよく、個々の命令ベースでトレース情報を出力するよりもデータ量は非常に削減される。このため、トレースファイルの容量は小さくなる。また、トレース情報が減るので、そのI/Oのために必要となる処理時間も省かれ、オーバヘッドが減るのでシミュレーションの時間も短縮される。さらに、性能解析するための入力量も減るので性能解析にかかる時間も短縮される。したがって、膨大な命令数を含み、実行サイクル数の大きなプログラムであっても短時間に性能を解析することができる。
【0009】
このため、本発明の性能解析方法は、解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、分岐命令のアドレス情報および分岐先の命令のアドレス情報を含む第1のトレース情報をトレースファイルに出力するシミュレート工程と、トレースファイルから、分岐先の命令または分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析工程とを有する。分岐したときに、分岐命令のアドレスと、分岐先のアドレスがトレース情報として出力されれば、解析工程では、解析対象のプログラムに含まれる基本ブロックを見つけることができ、トレース情報を統計処理することにより、基本ブロック毎の実行回数を出力できる。
【0010】
本発明の性能解析方法は、解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、分岐命令のアドレス情報および分岐先の命令のアドレス情報を含む第1のトレース情報をトレースファイルに出力する第1のトレース処理を実行可能な命令を有するシミュレートプログラムと、そのトレースファイルから、分岐命令が最終の命令となり、分岐先の命令または分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析処理を実行可能な命令を有する性能解析プログラムとを順次実行することによりソフトウェアで実現できる。また、第1のトレース情報をトレースファイルに出力する第1のトレース手段を有するシミュレータと、トレースファイルから、基本ブロック毎の実行回数を出力する解析手段を有するアナライザとを用いてハードウェアで実現できる。
【0011】
この性能解析により、プログラム中の実行頻度の高い基本ブロックが判明すれば、その基本ブロックに含まれる命令を最適化することによりプログラムの実行速度を効率良く向上できる。最適化には、基本ブロックに含まれる命令をハードウェア化することも含まれる。その基本ブロックに含まれる命令を専用回路化したり、複数の専用回路を組み合わせて実行することにより実行頻度の高い部分を高速化することが可能となり、プログラムの実行速度を向上できる。
【0012】
この解析方法では、基本ブロック毎の実行サイクル数を把握することにより、キャッシュミス(キャッシュストール)などの外的要因により基本ブロックの実行速度が低下することも解析できる。一般的には、基本ブロック内では1命令が1サイクルで実行あるいはフェッチされるので、基本ブロックの実行サイクルは基本ブロックに含まれる命令数に一致する。しかしながら、データキャッシュあるいは命令キャッシュにキャッシュミスが発生すると、メインメモリとの間で入出力するために実行サイクルが消費され、基本ブロックの実行サイクル数が増加する。したがって、第1のトレース情報として、所定のタイミングからの実行サイクル数をさらにトレースファイルに出力し、解析工程では、基本ブロック毎の実行サイクル数をさらに出力することにより、サイクル数が浪費されているか否か判断できる。また、基本ブロック毎の実行サイクル数を出力することにより、解析対象のプログラムの処理時間中の基本ブロック毎の実行時間が占める割合を、より明確に把握できる。
【0013】
実行サイクル数を計測する基本となる所定のタイミングは解析工程が共通して認識できるタイミングであれば良い。直前の第1のトレース情報を出力する条件が成立してから、それに続く第1のトレース情報までの実行サイクル数を出力することができ、第1のトレース情報として出力する実行サイクル数の値がもっとも小さくなるのでトレース情報のデータ量を小さくできる。
【0014】
さらに、シミュレートする際中に、キャッシュミスが発生したときに、所定のタイミングからの実行サイクル数、キャッシュミスが発生した命令およびそのアドレス情報を含む第2のトレース情報をトレースファイルに出力することが望ましい。これにより、キャッシュミスが発生した箇所の詳細が分かり、その命令から命令キャッシュのキャッシュミスなのか、データキャッシュのキャッシュミスなのかなど、さらに詳しい実行状況を知ることができる。上述したように所定のタイミングは解析する際にシミュレータと共通して認識できるタイミングであれば良い。また、直前の第1または第2のトレース情報を出力する条件が成立してからの実行サイクル数であれば、出力する実行サイクル数の値をもっとも小さくできる。
【0015】
【発明の実施の形態】
以下では、図面を参照しながら、さらに詳しく説明する。図1に、本発明の性能解析方法の概要を示してある。処理対象のプログラム1をシミュレータ2でシミュレートしてトレースファイル3を出力し、そのトレースファイル3をアナライザ4で解析してプログラム1の実行状態を示す解析結果5を出力する。プログラム1には、ポインタまたはアドレス(図中の「p−??」)11と対応付けられた複数の命令(図中の「ins ??」)12が含まれており、基本的には、アドレス11の順番で命令12をフェッチされ、実行される。しかしながら、命令12がジャンプ命令などの無条件で分岐する命令や条件付で分岐する命令などの後続の命令以外の命令を実行する命令(本明細書では、そのような命令をすべて含めて分岐命令と称する)であると、その分岐命令で指示されたアドレスの命令がフェッチされ、実行される。
【0016】
図1に示したプログラム1では、アスタリスクを付した命令、すなわち、「ins an」、「ins cn」、「ins dn」および「ins xn」が分岐命令13であり、その結果、破線で示したようにプログラムの制御が移行する。「ins an」はアドレスp−x1を分岐先とするジャンプ命令であり、「ins cn」はアドレスp−b1を分岐先とする条件付分岐命令であり、「ins dn」はアドレスp−y1を分岐先とする分岐命令であり、「ins xn」はアドレスp−c1を分岐先とする条件付分岐命令である。
【0017】
シミュレータ2は、プログラム1の命令12をフェッチするユニット21と、その命令12をシミュレートするユニット22と、分岐が発生すると分岐トレース情報(Jbr、第1のトレース情報)31をトレースファイル3に出力するトレースユニット23とを備えている。このトレースユニット23は、さらに、命令12をフェッチまたは実行するときに命令キャッシュまたはデータキャッシュにキャッシュミス(キャッシュストール)が発生すると、そのキャッシュミス情報(Jstall、第2のトレース情報)32をトレースファイル3に出力する。トレースユニット23は、分岐トレース情報31として、その命令を実行しているCPUの番号35、直前の分岐トレース情報31またはキャッシュミス情報32を出力したときからの実行サイクル数36、分岐命令13のアドレス37および分岐先のアドレス38を出力する。また、キャッシュミス情報32として、その命令を実行しているCPUの番号35、直前の分岐トレース情報31またはキャッシュミス情報32を出力したときからキャッシュミスが発生した命令12を実行するまでの実行サイクル数36、キャッシュミスが発生した命令12のアドレス36を出力する。
【0018】
したがって、トレースファイル3には、命令12が分岐命令13であり、制御が後続の命令以外の命令に移行する、分岐条件が成立すると、分岐トレース情報31が追加され、キャッシュミスが発生するとキャッシュミス情報32が追加される。
【0019】
パフォーマンスアナライザ4は、トレースファイル3を読み込むロードユニット41と、トレースファイル3のトレース情報31および32から、プログラム1に含まれる基本ブロックを決定し、それぞれの基本ブロックの実行サイクルと実行回数を出力する解析ユニット42とを備えている。基本ブロックは、上記にて説明した条件1から3を満足するものである。本例であると、トレースファイル3に出力された分岐トレース情報31の分岐先アドレス38から、アドレス「p−x1」、「p−c1」「p−b1」および「p−y1」の命令12を先頭とする基本ブロックが決定できる。さらに、分岐命令「ins cn」に続くアドレス「p−d1」を先頭する基本ブロックが決定できる。また、アドレス「p−a1」もそれ以前に実行された分岐命令の分岐先であり、アドレス「p−a1」の命令を先頭とする基本ブロックも決定できる。
【0020】
したがって、アドレス「p−a1」から「p−an」の範囲が基本ブロックA、アドレス「p−b1」から「p−bn」の範囲が基本ブロックB、アドレス「p−c1」から「p−cn」の範囲が基本ブロックC、アドレス「p−d1」から「p−dn」の範囲が基本ブロックD、アドレス「p−x1」から「p−xn」の範囲が基本ブロックXとなり、それぞれの基本ブロックA〜Xには、最終の命令を除き分岐命令13は含まれない。あるいは、少なくともプログラム1の実行中に分岐条件が成立する分岐命令は含まれない。したがって、これらの基本ブロックA〜Xでは、先頭の命令12から最終の命令12までが順番に、飛んだり、繰り返されたりすることなく、一度ずつ順番に実行される。
【0021】
トレースファイル3に出力された分岐トレース情報31から上述したようにプログラム1に含まれる基本ブロック51が決定できるので、解析ユニット42はその情報を解析出力ファイル5に出力する。また、分岐が発生するたびに分岐トレース情報31がトレースファイル3に追加されるので、基本ブロック51を何回実行したかも分かるので、実行回数52を基本ブロック毎に出力する。条件分岐命令であると、条件によって分岐が発生しないこともある。しかしながら、トレースファイル3に含まれる分岐トレース情報31からすべての基本ブロック51が決定されれば、分岐トレース情報31のアドレス情報37と分岐先のアドレス情報38とから、それらのアドレス情報に挟まれた基本ブロック51が静的に解析できるので、すべての基本ブロック毎に実行回数52を出力できる。
【0022】
さらに、分岐トレース情報31には、実行サイクル数の情報36も含まれているので、各々の基本ブロック51で消費される実行サイクル数53も出力できる。キャッシュミス、ファンクションコール、DLLコールなどの特殊な条件が発生しないかぎり、命令12はサイクル毎にフェッチおよび実行される。したがって、基本ブロック51の実行サイクルは基本ブロック51に含まれる命令数によって決まる。しかしながら、キャッシュミスなどが発生すると基本ブロック51の実行サイクル数は命令数からは一義的に決定できない。したがって、分岐トレース情報31として直前の分岐トレース情報31あるいはキャッシュミス情報32からの実行サイクル数36を出力しておくことが望ましい。実行サイクル数36のカウント開始するタイミングは直前のトレース情報31または32が出力される条件が成立したときではなく、たとえば、プログラム1のシミュレーションを開始したときからでも良い。しかしながら、実行サイクル数が多くなると、実行サイクル数を示す数値が膨大になり、トレース情報31または32に含まれる数値が膨大になる。したがって、直近のトレース情報31または32を基準にして実行サイクルをカウントすることが望ましい。
【0023】
また、本例のシミュレータ2は、キャッシュミスが発生するとキャッシュミス情報32をトレースファイル3に追加する。キャッシュミス情報32は、直前のトレース情報31または32からの実行サイクル数36を備えている。したがって、直前のトレース情報31または32の要因となった命令からキャッシュミスが発生した命令の間にファンクションコールやDLLコールなどの特殊な命令が含まれていなければ、直前のトレース情報31または32の要因となった命令からキャッシュミスが発生した命令の間の命令数を、キャッシュミス情報32の実行サイクル数36から引き算することによりキャッシュストールによるロスサイクル54が判明する。したがって、パフォーマンスアナライザ5は、そのロスサイクルの情報54も出力する。
【0024】
さらに、キャッシュミス情報32として、キャッシュミスが発生したアドレス37もトレースファイル3に出力されているので、キャッシュミスが発生した命令12を特定できる。したがって、命令の内容から命令キャッシュのストールなのか、データキャッシュのストールなのかも解析することができる。その情報をあわせて解析出力ファイル5に出力することも可能である。
【0025】
また、キャッシュミス以外で実行サイクル数が不明となる命令として、上述したファンクションコールやDLLコール命令がある。したがって、シミュレータ2は、そのような命令を実行したときにもキャッシュミス情報32と同様に、実行サイクル数36を出力するようにできる。これにより、コール命令で消費している実行サイクル数も特定できるので、さらに精度の高い性能解析が可能となる。
【0026】
図2に、シミュレータ2の概略の処理をフローチャートで示してある。ステップ61で、前の命令で制御が移行したアドレスの命令をフェッチおよび実行する。そのときにキャッシュミスが発生すると、ステップ62でそれを判断し、ステップ63でキャッシュミス情報32をトレースファイル3に出力する。また、分岐が発生すると、ステップ64でそれを判断し、分岐トレース情報31をトレースファイル3に出力する。
【0027】
図3に、パフォーマンスアナライザ4の概略の処理をフローチャートで示してある。まず、ステップ71でトレースファイル3をロードし、ステップ72で基本ブロック51を決定する。次に、ステップ73で、トレース情報31および32を解析し、基本ブロック毎に、実行回数52と、実行サイクル数53とを求め、ステップ74で出力ファイル5に出力する。キャッシュストールによるロスサイクル数54が求まる場合はそれも出力ファイル5に出力する。シミュレータ2およびパフォーマンスアナライザ4の機能は、各々の処理を実行する命令を有するプログラムとして、CD−ROMなどの適当な記録媒体に記録して提供することが可能であり、インターネットなどのコンピュータネットワークを介しても提供することができる。そして、十分なハードウェア資源を備えたコンピュータにそれらのプログラムをインストールすることにより、本発明の性能解析方法を実施する装置として機能させることができる。
【0028】
本発明の性能解析方法では、上述したように、シミュレータ2はプログラム1に含まれる各命令のトレース情報を出力するのではなく、基本的には分岐が発生したときのみ分岐とレース情報31をトレースファイル3に出力する。したがって、分岐が発生しないかぎりトレースファイル3へはデータを書き込まずにプログラム1をシミュレートできる。このため、シミュレーション時間を短縮できる。特に、実行サイクル数が膨大な、たとえば、数百万にもなるようなプログラムをシミュレートする際には、個々の命令を実行する毎にトレース情報を出力するのと、分岐が発生したときにだけトレース情報を出力するのでは、トレース情報の量が大幅に異なり、シミュレーションに要する時間に大きく影響する。
【0029】
また、トレース情報を基本ブロック単位で圧縮できるので、情報量を大幅に削減することができる。したがって、トレースファイルは簡略化され、ファイル容量も小さくて良くなる。このため、シミュレーションを行うためのハードウェア資源もコンパクトなもので良くなる。
【0030】
パフォーマンスアナライザ4においても、解析するためにロードする情報量が大幅に減るので、解析時間を短縮することができる。また、プログラム中に含まれる個々の命令ではなく、複数の命令の集合である基本ブロック単位でプログラムの性能を解析すれば良いので、解析時間も短縮される。一方、基本ブロック単位で解析しても、基本ブロック内の命令は必ずシーケンシャルに行われ、同一回数だけ実行されるので、性能解析の精度が低下することはない。したがって、本発明により、短時間でプログラムの性能解析ができる信頼性の高い性能解析方法を提供することが可能となる。
【0031】
本発明の性能解析方法では、分岐命令であっても、プログラムを実行する際に実際には分岐することのない命令は分岐トレース情報の対象としておらず、基本ブロックを構成する要因とはしていない。プログラムを実行する際に分岐しないのであれば、それに続く命令が常にシーケンシャルに実行されるので、そのような分岐命令を基本ブロックに含めても性能解析上はなんら支障がない。その一方で、そのような分岐命令を実行しても分岐トレース情報を出力しないでよいので、そのために費やされる時間を省くことができ、シミュレーションに要する時間を短縮する効果がある。
【0032】
実行サイクル数が大きく、実行回数が大きな基本ブロック51が判明すれば、その基本ブロック51の実行速度を改善することによりプログラム1の実行速度は大幅に改善される。本願の出願人は、それぞれ異なる特定の処理に適した内部データパスを備えた複数種類の専用処理要素(エレメント)と、複数の専用処理要素を接続する配線群とを備えたデータ処理ユニットを提案している。このデータ処理ユニットであれば、解析結果に基づき、実行回数の大きな基本ブロック51をハードウェアで実行できる種類の専用処理要素を予め設けておくことにより、プログラム1の最も実行速度を左右する処理をハードウェアで高速に実行することが可能となる。したがって、本発明の性能解析方法を用いることにより、プログラム1に適した処理速度の速いデータ処理ユニットを提供することが可能となる。
【0033】
もちろん、本発明の性能解析方法はプロセッサの開発だけではなく、負荷の高い基本ブロックをソフトウェア的に高速にするなどプログラムそのものの性能向上のためなどにおいても有効である。
【0034】
【発明の効果】
以上に説明したように、本発明においては、各命令が個別に実行されるのではなく、ある程度の範囲で連続した命令が、必ず順番に実行されることに着目し、その範囲を基本ブロックとして捉えることにより、トレース情報を大幅に削減可能にしている。したがって、プログラムの性能解析をするためのシミュレーションに費やされる時間を大幅に短縮することができる。
【図面の簡単な説明】
【図1】本発明の性能解析方法の概略の処理を示す図である。
【図2】シミュレータの処理の概要を示すフローチャートである。
【図3】パフォーマンスアナライザの処理の概要を示すフローチャートである。
【符号の説明】
1 処理対象のプログラム
2 シミュレータ
3 トレースファイル
4 パフォーマンスアナライザ
5 解析結果
31 分岐トレース情報
32 キャッシュミス情報
Claims (19)
- 解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第1のトレース情報をトレースファイルに出力するシミュレート工程と、
前記トレースファイルから、前記分岐先の命令または前記分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析工程とを有する性能解析方法。 - 請求項1において、前記シミュレート工程では、所定のタイミングからの実行サイクル数をさらに含む前記第1のトレース情報を出力し、
前記解析工程では、前記基本ブロック毎の実行サイクル数をさらに出力する性能解析方法。 - 請求項2において、前記シミュレート工程では、直前の前記第1のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む第1のトレース情報を前記トレースファイルに出力する性能解析方法。
- 請求項2において、前記シミュレート工程では、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第2のトレース情報を前記トレースファイルに出力し、
前記解析工程では、前記キャッシュミスによる損失サイクル数をさらに出力する性能解析方法。 - 請求項4において、前記シミュレート工程では、直前の前記第1または第2のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む前記第1および第2のトレース情報を出力する性能解析方法。
- 解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第1のトレース情報をトレースファイルに出力する第1のトレース処理を実行可能な命令を有するシミュレートプログラム。
- 請求項6において、前記第1のトレース処理では、所定のタイミングからの実行サイクル数をさらに含む前記第1のトレース情報を出力するシミュレートプログラム。
- 請求項7において、前記第1のトレース処理では、直前の前記第1のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む第1のトレース情報を前記トレースファイルに出力する、シミュレートプログラム。
- 請求項7において、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第2のトレース情報を前記トレースファイルに出力する第2のトレース処理を実行可能な命令をさらに有するシミュレートプログラム。
- 請求項9において、前記第1のトレース処理では、直前の前記第1または第2のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む前記第1のトレース情報を出力し、
前記第2のトレース処理では、直前の前記第1または第2のトレース情報を出力する条件が成立してからの前記実行サイクル数を含む前記第2のトレース情報を出力するシミュレートプログラム。 - 解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第1のトレース情報が記録されたトレースファイルから、前記分岐先の命令または前記分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析処理を実行可能な命令を有する性能解析プログラム。
- 請求項11において、前記第1のトレース情報には、所定のタイミングからの実行サイクル数が含まれており、
前記解析処理では、前記基本ブロック毎の実行サイクル数も出力する性能解析プログラム。 - 請求項12において、前記トレースファイルには、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第2のトレース情報がさらに記録されており、
前記解析処理は、前記キャッシュミスによる損失サイクル数をさらに出力する性能解析プログラム。 - 解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第1のトレース情報をトレースファイルに出力する第1のトレース手段を有するシミュレータ。
- 請求項14において、前記第1のトレース手段は、所定のタイミングからの実行サイクル数をさらに含む前記第1のトレース情報を出力するシミュレータ。
- 請求項15において、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第2のトレース情報を前記トレースファイルに出力する第2のトレース手段をさらに有するシミュレータ。
- 解析対象のプログラムをシミュレートし、分岐命令により分岐先の命令を実行する分岐条件が成立したときに、前記分岐命令のアドレス情報および前記分岐先の命令のアドレス情報を含む第1のトレース情報が記録されたトレースファイルから、前記分岐先の命令または前記分岐命令に続く命令が先頭の命令となる基本ブロック毎の実行回数を出力する解析手段を有するアナライザ。
- 請求項17において、前記第1のトレース情報には、所定のタイミングからの実行サイクル数が含まれており、
前記解析手段は、前記基本ブロック毎の実行サイクル数をさらに出力するアナライザ。 - 請求項18において、前記トレースファイルには、キャッシュミスが発生したときに、所定のタイミングからの前記実行サイクル数、前記キャッシュミスが発生した命令およびそのアドレス情報を含む第2のトレース情報がさらに記録されており、
前記解析手段は、前記キャッシュミスによる損失サイクル数をさらに出力するアナライザ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002189393A JP2004030514A (ja) | 2002-06-28 | 2002-06-28 | 性能解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002189393A JP2004030514A (ja) | 2002-06-28 | 2002-06-28 | 性能解析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004030514A true JP2004030514A (ja) | 2004-01-29 |
Family
ID=31183832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002189393A Pending JP2004030514A (ja) | 2002-06-28 | 2002-06-28 | 性能解析方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004030514A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007080049A (ja) * | 2005-09-15 | 2007-03-29 | Ricoh Co Ltd | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 |
JP2007133836A (ja) * | 2005-11-14 | 2007-05-31 | Canon Inc | シミュレーション装置及びシミュレーション方法 |
WO2011058946A1 (ja) * | 2009-11-10 | 2011-05-19 | 株式会社日立製作所 | 実行命令数計測方法、実行クロック数計測方法及び計算機システム |
JP2012243011A (ja) * | 2011-05-18 | 2012-12-10 | Ntt Data Corp | ソースコード分析装置、ソースコード分析方法およびプログラム |
JP2015210574A (ja) * | 2014-04-24 | 2015-11-24 | 富士通株式会社 | 情報処理装置,処理方法及び処理プログラム |
-
2002
- 2002-06-28 JP JP2002189393A patent/JP2004030514A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007080049A (ja) * | 2005-09-15 | 2007-03-29 | Ricoh Co Ltd | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 |
JP2007133836A (ja) * | 2005-11-14 | 2007-05-31 | Canon Inc | シミュレーション装置及びシミュレーション方法 |
WO2011058946A1 (ja) * | 2009-11-10 | 2011-05-19 | 株式会社日立製作所 | 実行命令数計測方法、実行クロック数計測方法及び計算機システム |
JP2011103026A (ja) * | 2009-11-10 | 2011-05-26 | Hitachi Ltd | 実行命令数計測方法、実行クロック数計測方法及び計算機システム |
JP2012243011A (ja) * | 2011-05-18 | 2012-12-10 | Ntt Data Corp | ソースコード分析装置、ソースコード分析方法およびプログラム |
JP2015210574A (ja) * | 2014-04-24 | 2015-11-24 | 富士通株式会社 | 情報処理装置,処理方法及び処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7788535B2 (en) | Means and method for debugging | |
US8527812B2 (en) | Information processing device | |
US20070011664A1 (en) | Device and method for generating an instruction set simulator | |
US20130318504A1 (en) | Execution Breakpoints in an Integrated Development Environment for Debugging Dataflow Progrrams | |
US20020152061A1 (en) | Data processing system and design system | |
US8296607B2 (en) | Serialization module separating pipelined trace-worthy event and sync packet data | |
JP4866241B2 (ja) | ソースプログラムの分析装置 | |
US8819496B2 (en) | Apparatus for collecting trace information and processing trace information, and method for collecting and processing trace information | |
CN111813672B (zh) | 一种针对多种处理器架构的非侵入式覆盖率统计方法 | |
JP2008176453A (ja) | シミュレーション装置 | |
US7684971B1 (en) | Method and system for improving simulation performance | |
JPH04233040A (ja) | コンピュータプログラム実行シミュレーションシステム | |
US20010025339A1 (en) | User configurable operating system | |
CN114595054A (zh) | 用于生成图形处理单元长指令踪迹的方法和装置 | |
JP5440287B2 (ja) | シンボリック実行支援プログラム、方法及び装置 | |
JP2004030514A (ja) | 性能解析方法 | |
US7110934B2 (en) | Analysis of the performance of a portion of a data processing system | |
EP2972880B1 (en) | Kernel functionality checker | |
CN107769987B (zh) | 一种报文转发性能评估方法和装置 | |
US20040193395A1 (en) | Program analyzer for a cycle accurate simulator | |
US20050050524A1 (en) | Generating software test information | |
JP2008250838A (ja) | ソフトウェア生成装置、方法、およびプログラム | |
Langdon | Debugging cuda | |
US20080141223A1 (en) | Mock source program generation program, method and apparatus | |
Miwa et al. | PredCom: a predictive approach to collecting approximated communication traces |