Nothing Special   »   [go: up one dir, main page]

JPH0721061A - Program performance analyzing method - Google Patents

Program performance analyzing method

Info

Publication number
JPH0721061A
JPH0721061A JP5191730A JP19173093A JPH0721061A JP H0721061 A JPH0721061 A JP H0721061A JP 5191730 A JP5191730 A JP 5191730A JP 19173093 A JP19173093 A JP 19173093A JP H0721061 A JPH0721061 A JP H0721061A
Authority
JP
Japan
Prior art keywords
instruction
execution
basic block
interlock
program
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
Application number
JP5191730A
Other languages
Japanese (ja)
Inventor
Hiroyuki Hashimoto
博幸 橋本
Sumio Kikuchi
純男 菊池
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP5191730A priority Critical patent/JPH0721061A/en
Publication of JPH0721061A publication Critical patent/JPH0721061A/en
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

PURPOSE:To provide a method to analyze the performance of a program by setting only an instruction pass executed actually as a target, and calculating execution time considering the pipeline interlock of a continuous instruction string without changing a source program. CONSTITUTION:A mechanical word instruction string 70 is inputted, and it is divided into plural fundamental blocks by fundamental block division processing 31, and the number of static execution cycles of the fundamental block is calculated by using interlock information 40 in cycle number calculation processing 32. At this time, the number of times of generation at every interlock specification is tabulated in generating number of times tabulation processing 33 simultaneously. The number of times of execution of each fundamental block is inputted from execution number of times information 80, and the execution time of the fundamental block is displayed by calculating from the number of cycles calculated by execution time calculation processing 34.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、プログラムの性能解析
方法に関し、詳しくは、パイプラインインタロックを考
慮してプログラムの実行時間を算出することによりプロ
グラムの性能を解析することができるプログラム性能解
析方法に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a program performance analysis method, and more particularly, to a program performance analysis capable of analyzing program performance by calculating program execution time in consideration of pipeline interlock. Regarding the method.

【0002】[0002]

【従来の技術】従来より、プログラムの性能を評価する
ための種々のプログラム性能解析方法が知られている。
2. Description of the Related Art Conventionally, various program performance analysis methods for evaluating program performance have been known.

【0003】例えば、ソースプログラムをコンパイル
し、得られたロードモジュールを実行させたとき、プロ
グラムのどの箇所の実行比率が大きいかを解析するプロ
グラム性能解析方法として、ソースプログラム中に実行
時間測定用の処理を挿入する方法がある。これは、解析
を行う者がソースプログラム中に実行時間を測定するた
めの文を人為的に挿入し、それをコンパイルして得られ
たロードモジュールを実行し、これにより実行時間を測
定する方法である。
For example, as a program performance analysis method for analyzing which part of the program has a large execution ratio when the source program is compiled and the obtained load module is executed, a method for measuring execution time in the source program is used. There is a way to insert a process. This is a method in which the parser artificially inserts a statement for measuring the execution time into the source program, compiles it, executes the load module obtained, and thereby measures the execution time. is there.

【0004】また、別の解析方法が、特開平4−320
536号公報に開示されている。これは、ソースプログ
ラムをコンパイルして得られた機械語またはアセンブラ
のリストから、プログラムのフローグラフを作成し、フ
ローグラフに存在する各々のパスの静的な実行時間を計
算し、その総和によってプログラムの実行時間に関する
性能を評価する方法である。
Another analysis method is disclosed in Japanese Patent Laid-Open No. 4-320.
It is disclosed in Japanese Patent No. 536. This is to create a flow graph of a program from a machine language or assembler list obtained by compiling a source program, calculate the static execution time of each path existing in the flow graph, and calculate the program by the sum of them. This is a method for evaluating the performance related to the execution time of.

【0005】さらに、POHUA P.CHANGらの
論文「Using ProfileInformati
on to Assist Code Optimiz
ation」:SOFTWARE−PRACTICE
AND EXPERIENCE,Vol.21(1
2),1301−1321(DECEMBER 199
1)には、基本ブロック(逐次的に実行される一連の代
入文や式の列)の実行回数を取得する方法が開示されて
いる。
Furthermore, POHUA P. CHANG et al.'S paper "Using Profile Information"
on to Assist Code Optimize
ation ”: SOFTWARE-PRACTICE
AND EXPERIENCE, Vol. 21 (1
2), 1301-1321 (DECEMBER 199
1) discloses a method of acquiring the number of times of execution of a basic block (a series of assignment statements or sequences of expressions that are executed sequentially).

【0006】この論文に開示されている基本ブロックの
実行回数の取得方法では、各基本ブロックの入口で、基
本ブロックごとにつけられた識別子を引数にして、実行
回数を記録する関数を呼び出す。識別子は、基本ブロッ
クごとに付与されたプログラム中でユニークな識別子で
ある。呼び出された関数では、引数として与えられた識
別子で表わされる基本ブロックの実行回数に1を加える
処理を行う。これにより、プログラムの実行が終了した
ときには各基本ブロックが何回実行されたかを知ること
ができ、この各基本ブロックの実行回数によって当該プ
ログラムを評価することができる。
In the basic block execution count acquisition method disclosed in this paper, at the entrance of each basic block, a function for recording the execution count is called using the identifier assigned to each basic block as an argument. The identifier is a unique identifier in the program assigned to each basic block. The called function performs a process of adding 1 to the execution count of the basic block represented by the identifier given as an argument. This makes it possible to know how many times each basic block has been executed when the execution of the program is completed, and the program can be evaluated by the number of times each basic block has been executed.

【0007】[0007]

【発明が解決しようとする課題】ところが、ソースプロ
グラム中に実行時間測定用の処理を挿入する方法では、
各々のプログラム部分のすべてについて実行時間を測定
しようとすると、ある程度多くの実行時間測定用の処理
をプログラム中に挿入する必要がある。したがって、実
行時間測定用の処理のオーバーヘッドが、測定対象部分
の実行時間に含まれてしまい、プログラム部分だけの実
行時間が正確に測定できないという問題がある。
However, in the method of inserting the process for measuring the execution time in the source program,
In order to measure the execution time for all of the respective program parts, it is necessary to insert a certain number of processes for measuring the execution time into the program. Therefore, the processing overhead for measuring the execution time is included in the execution time of the measurement target portion, and there is a problem that the execution time of only the program portion cannot be accurately measured.

【0008】また、プログラム中に時間測定用の処理を
挿入する場合、解析者は、プログラムのどの位置からど
の位置までの実行時間を測定すればそのプログラムを評
価できるのかをある程度予測し、そのような予測のもと
に挿入場所の決定を行う。しかし、その予測がはずれて
いた場合は、再度、ソースプログラムへの時間測定用処
理の挿入をやり直し、コンパイルおよび実行を行う必要
がある。
Further, when inserting a process for measuring time in a program, the analyst predicts to some extent whether the program can be evaluated by measuring the execution time from which position of the program to which position. The insertion location is determined based on such predictions. However, if the prediction is incorrect, it is necessary to insert the time measurement process into the source program again, compile and execute it again.

【0009】さらに、上記特開平4−320536号に
開示された方法は、プログラムのフローグラフ中に存在
する各々のパスの実行時間を求め、それらの実行時間の
総和でプログラムの性能解析を行うため、実行時に一度
も実行されない可能性のあるパスの実行時間も解析対象
としてしまう場合がある。
Further, in the method disclosed in the above-mentioned Japanese Patent Laid-Open No. 4-320536, the execution time of each path existing in the flow graph of the program is obtained, and the performance of the program is analyzed by the sum of those execution times. In some cases, the execution time of a path that may never be executed at the time of execution is also subject to analysis.

【0010】また、基本ブロックの実行回数を取得して
プログラムを評価する方法では、プログラムの実際の実
行時間による評価ができない。
Further, in the method of evaluating the program by acquiring the number of executions of the basic block, the evaluation cannot be performed by the actual execution time of the program.

【0011】そこで、本発明の第1の目的は、実際に実
行された実行パスのみを対象にしたプログラム性能解析
方法を提供することにある。
Therefore, a first object of the present invention is to provide a program performance analysis method targeting only the actually executed execution path.

【0012】また、本発明の第2の目的は、ソースプロ
グラムの変更を行うことなく、連続した命令列のパイプ
ラインインタロックを考慮して実行時間を算出すること
により、プログラムの性能を解析するプログラム性能解
析方法を提供することにある。
A second object of the present invention is to analyze the performance of the program by calculating the execution time in consideration of the pipeline interlock of continuous instruction sequences without changing the source program. It is to provide a program performance analysis method.

【0013】[0013]

【課題を解決するための手段】上記目的を達成するた
め、本発明は、入力した機械語命令列を、連続した部分
命令列である基本ブロックに分割する分割ステップと、
該基本ブロックの実行回数を入力する実行回数入力ステ
ップと、パイプラインインタロックを考慮して、該基本
ブロックの実行サイクル数を求めるサイクル数計算ステ
ップと、該基本ブロックの実行サイクル数と実行回数と
を用いて、該基本ブロックの実行時間を算出する実行時
間算出ステップとを備えたことを特徴とする。
In order to achieve the above object, the present invention comprises a dividing step of dividing an inputted machine language instruction sequence into basic blocks which are continuous partial instruction sequences,
An execution count input step for inputting the execution count of the basic block; a cycle count calculating step for obtaining the execution cycle count of the basic block in consideration of pipeline interlock; and an execution cycle count and execution count for the basic block. And an execution time calculation step for calculating the execution time of the basic block using

【0014】前記分割ステップは、例えば、前記機械語
命令列の機械語命令を先頭から1つずつ読み込み、読み
込んだ命令が分岐命令であるときその分岐命令と次の命
令との間で分割し、あるいは読み込んだ命令がラベルで
あるときそのラベルの前で分割することにより、前記機
械語命令列を基本ブロックに分割する。
In the dividing step, for example, the machine language instructions of the machine language instruction string are read one by one from the beginning, and when the read instruction is a branch instruction, it is divided between the branch instruction and the next instruction, Alternatively, when the read instruction is a label, it is divided before the label to divide the machine language instruction sequence into basic blocks.

【0015】機械語命令列は、どのような手順で用意し
たものでもよい。例えば、性能解析の対象である高級言
語のソースプログラムをコンパイルして作成したものを
用いればよい。
The machine language instruction sequence may be prepared by any procedure. For example, a program created by compiling a high-level language source program that is the target of performance analysis may be used.

【0016】基本ブロックの実行回数は、従来より知ら
れている方法で計測すればよい。例えば、ソースプログ
ラムをコンパイルする際に、基本ブロックごとに実行回
数を計測するためのオブジェクトコードを付加したロー
ドモジュールを生成して出力し、該ロードモジュールを
実行して、各基本ブロックの実行回数を計測する方法な
どが用いられる。
The number of times the basic block is executed may be measured by a conventionally known method. For example, when compiling a source program, a load module to which an object code for measuring the number of executions is added and output for each basic block, the load module is executed, and the number of executions of each basic block is calculated. A measuring method or the like is used.

【0017】サイクル数計算ステップにおいて、基本ブ
ロックの実行サイクル数算出時にパイプラインインタロ
ックの発生する命令列の並びがある場合、インタロック
の種別ごとの発生回数を集計する処理を行うようにして
もよい。インタロックの種別ごとの発生回数も、プログ
ラムの性能を評価する指標になる。
In the cycle number calculation step, if there is a sequence of instruction sequences in which pipeline interlocks occur when the number of execution cycles of a basic block is calculated, a process of totalizing the number of occurrences for each type of interlock may be performed. Good. The number of occurrences of each type of interlock is also an index for evaluating program performance.

【0018】性能解析の対象であるソースプログラムが
ループを含む場合には、そのループを構成する基本ブロ
ックの各実行サイクル数と実行回数とからループの実行
時間を算出するようにしてもよい。
When the source program which is the object of performance analysis includes a loop, the execution time of the loop may be calculated from the number of execution cycles and the number of executions of the basic blocks forming the loop.

【0019】さらに、上述したようにして得たプログラ
ムの性能解析結果(例えば、基本ブロックごとの実行回
数および実行時間、並びにインタロック種別ごとのイン
タロック発生回数)を、表示装置に表示するようにする
とよい。
Further, the performance analysis result of the program obtained as described above (for example, the execution count and execution time for each basic block, and the interlock occurrence count for each interlock type) is displayed on the display device. Good to do.

【0020】[0020]

【作用】機械語命令列を基本ブロックに分割し、該基本
ブロックのパイプラインインタロックを考慮した静的な
実行サイクル数を算出する。また、基本ブロックの実行
回数を入力し、上記実行サイクル数と実行回数とを用い
て、基本ブロックの実行時間を算出することができる。
基本ブロックの実行回数は、ソースプログラムをコンパ
イルする際に、基本ブロックごとに実行回数を計測する
ためのオブジェクトコードを付加したロードモジュール
を生成して出力し、該ロードモジュールを実行すれば、
各基本ブロックの実行回数を計測することができる。
The machine language instruction sequence is divided into basic blocks, and the number of static execution cycles is calculated in consideration of the pipeline interlock of the basic blocks. Further, the execution time of the basic block can be calculated by inputting the execution count of the basic block and using the execution cycle count and the execution count.
The number of executions of the basic block is determined by generating and outputting a load module to which an object code for measuring the number of executions is added for each basic block when the source program is compiled, and executing the load module.
The number of executions of each basic block can be measured.

【0021】これにより、ソースプログラムの変更を行
うことなく、かつ、実際に実行された実行パスのみを対
象にしたプログラム性能解析をすることができる。
As a result, it is possible to analyze the program performance without changing the source program and targeting only the actually executed execution path.

【0022】[0022]

【実施例】以下、図面を用いて、本発明の実施例を説明
する。
Embodiments of the present invention will be described below with reference to the drawings.

【0023】まず、各図面の説明を行う前に、パイプラ
インインタロック(以下、インタロックと略す)につい
て説明する。
Before explaining each drawing, a pipeline interlock (hereinafter, abbreviated as interlock) will be described.

【0024】ある2つの命令(先に実行されるほうを先
行命令と呼び、その後に実行されるほうを後続命令と呼
ぶ)があり、先行命令と後続命令との間に依存関係があ
るために、後続命令の実行開始が遅れる場合がある。例
えば、先行命令と後続命令間に同一レジスタあるいは同
一メモリ領域への定義・引用の関係があるために、先行
命令の実行により後続命令の実行開始が遅れる場合や、
先行命令と後続命令が同じ演算器を使用するために、後
続命令の実行開始が遅れる場合などである。このような
場合に、先行命令と後続命令間でインタロックがあると
いう。
There is a certain two instructions (the one that is executed first is called the preceding instruction and the one that is executed subsequently is called the succeeding instruction), and there is a dependency between the preceding instruction and the succeeding instruction. The start of instruction execution may be delayed. For example, if there is a definition / citation relationship between the preceding instruction and the succeeding instruction in the same register or the same memory area, execution of the preceding instruction may delay the start of execution of the succeeding instruction, or
This is the case where the start of execution of the subsequent instruction is delayed because the preceding and subsequent instructions use the same arithmetic unit. In such a case, there is an interlock between the preceding instruction and the subsequent instruction.

【0025】このインタロックが発生する条件は、CP
Uごとに異なる。本実施例で説明するインタロック発生
の条件はその一例であり、これにより本発明が限定され
るものではない。
The condition under which this interlock occurs is CP
Different for each U. The condition for interlock occurrence described in the present embodiment is an example thereof, and the present invention is not limited thereby.

【0026】図17は、本実施例で扱う命令種別とその
命令のアセンブラでの記述方法を示したものである。オ
ペランド中、Memはメモリへのアクセスを示し、Rx
はレジスタのアクセスを示す。
FIG. 17 shows an instruction type handled in this embodiment and a method of writing the instruction in assembler. In the operand, Mem indicates access to memory, and Rx
Indicates access to a register.

【0027】ロード命令201は、メモリMemに格納
されているデータをレジスタRiに読み込む命令であ
る。ストア命令202は、レジスタRiに格納されてい
るデータをメモリMemに書き込む命令である。加算命
令は、2つのレジスタRj,Rkに格納されているデー
タを加算し、結果をレジスタRiに格納する命令であ
る。乗算命令は、2つのレジスタRj,Rkに格納され
ているデータを乗算し、結果をレジスタRiに格納する
命令である。ブランチ命令は、ラベルlab−xxの位
置に制御を移す分岐命令である。
The load instruction 201 is an instruction to read the data stored in the memory Mem into the register Ri. The store instruction 202 is an instruction to write the data stored in the register Ri into the memory Mem. The addition instruction is an instruction to add the data stored in the two registers Rj and Rk and store the result in the register Ri. The multiplication instruction is an instruction for multiplying the data stored in the two registers Rj and Rk and storing the result in the register Ri. The branch instruction is a branch instruction that transfers control to the position of label lab-xx.

【0028】図1は、本発明の一実施例に係るプログラ
ム性能解析方法を適用したプログラム性能解析システム
のシステム構成図である。
FIG. 1 is a system configuration diagram of a program performance analysis system to which a program performance analysis method according to an embodiment of the present invention is applied.

【0029】本システムは、CPU装置1、メモリ装置
2、入力装置3、および表示装置4を備えている。具体
的には、コンピュータに所定のプログラムを組合せたシ
ステムである。CPU装置1は、コンパイラ10、実行
部20、およびプログラム性能解析部30を備えてい
る。
This system comprises a CPU device 1, a memory device 2, an input device 3, and a display device 4. Specifically, it is a system in which a computer is combined with a predetermined program. The CPU device 1 includes a compiler 10, an execution unit 20, and a program performance analysis unit 30.

【0030】コンパイラ10は、ソースプログラム50
を入力し、そのソースプログラムをコンパイルする。特
に、機械語命令列出力処理11は、入力したソースプロ
グラムに応じて機械語命令列70を生成する。また、実
行回数出力コード生成処理12は、基本ブロックごとに
実行回数を計測するためのオブジェクトコードを付加し
たロードモジュール60を生成する。
The compiler 10 uses the source program 50.
And compile the source program. In particular, the machine language instruction string output process 11 generates a machine language instruction string 70 according to the input source program. The execution count output code generation process 12 also generates a load module 60 to which an object code for measuring the execution count is added for each basic block.

【0031】実行部20は、そのロードモジュール60
を入力して実行し、実行回数出力処理21で各基本ブロ
ックの実行回数を計測する。計測結果は、実行回数情報
80として出力する。
The execution unit 20 has its load module 60.
Is executed and the execution count output processing 21 measures the execution count of each basic block. The measurement result is output as the execution count information 80.

【0032】プログラム性能解析部30は、基本ブロッ
ク分割処理31、サイクル数計算処理32、インタロッ
ク発生回数集計33、および実行時間計算処理34から
なる。
The program performance analysis unit 30 is composed of a basic block division process 31, a cycle number calculation process 32, an interlock occurrence count total 33, and an execution time calculation process 34.

【0033】図2に、図1のコンパイラ10および実行
部20による処理、すなわち機械語命令列70および実
行回数情報80を得るための処理の流れを示す。
FIG. 2 shows a flow of processing by the compiler 10 and the execution unit 20 of FIG. 1, that is, processing for obtaining the machine language instruction string 70 and the execution count information 80.

【0034】コンパイラ10における機械語命令列出力
処理11は、ソースプログラム50を入力し、機械語命
令列70を出力する。
The machine language instruction sequence output processing 11 in the compiler 10 inputs the source program 50 and outputs a machine language instruction sequence 70.

【0035】図4は、ソースプログラム50と機械語命
令列70の一例を示したものである。801で示される
高級言語のソースプログラムが、コンパイルされ、アセ
ンブラリストで表された機械語命令列が出力されてい
る。この機械語命令列は、ラベル802と命令列805
−1〜805−6からなる。命令列805−1〜805
−6は、図17で説明した記法で記述されている。
FIG. 4 shows an example of the source program 50 and the machine language instruction sequence 70. A high-level language source program 801 is compiled and a machine language instruction string represented by an assembler list is output. This machine language instruction sequence includes a label 802 and an instruction sequence 805.
-1 to 805-6. Instruction sequence 805-1 to 805
-6 is described by the notation described in FIG.

【0036】再び図2を参照して、コンパイラ10にお
ける実行回数出力コード生成処理12は、基本ブロック
の実行回数を計測するためのオブジェクトコードを付加
したロードモジュール60を出力する。このオブジェク
トコードは、各基本ブロックごとに付加される。
Referring again to FIG. 2, the execution count output code generation processing 12 in the compiler 10 outputs the load module 60 to which the object code for measuring the execution count of the basic block is added. This object code is added to each basic block.

【0037】次に、実行部20でこのロードモジュール
60を実行する。これにより、各基本ブロックの実行回
数が計測される。実行回数出力処理21は、その計測結
果を出力する。これにより、基本ブロックごとの実行回
数を記録した実行回数情報80が作成される。
Next, the execution module 20 executes the load module 60. As a result, the number of executions of each basic block is measured. The execution count output process 21 outputs the measurement result. As a result, the execution count information 80 recording the execution count for each basic block is created.

【0038】図3に、図1のプログラム性能解析部30
における処理の流れを示す。
FIG. 3 shows the program performance analysis unit 30 of FIG.
The flow of processing in is shown.

【0039】プログラム性能解析部30は、インタロッ
ク情報が登録されているインタロック情報40と、コン
パイラにより出力された機械語命令列70と、ロードモ
ジュール60を実行させて得られた実行回数情報80と
を入力する。
The program performance analysis unit 30 stores the interlock information 40 in which the interlock information is registered, the machine language instruction sequence 70 output by the compiler, and the execution count information 80 obtained by executing the load module 60. Enter and.

【0040】プログラム性能解析部30は、まず基本ブ
ロック分割処理31を行う。基本ブロック分割処理31
では、入力された機械語命令列70を、基本ブロック
(逐次的に実行される一連の代入文や式の列)に分割す
る。そして、分割して得られた基本ブロックのすべてに
ついて、各基本ブロックごとに、基本ブロック情報テー
ブル、命令列情報テーブル、およびインタロック集計テ
ーブルを作成する。
The program performance analysis section 30 first performs basic block division processing 31. Basic block division processing 31
Then, the input machine language instruction sequence 70 is divided into basic blocks (a sequence of a series of assignment statements and expressions that are executed sequentially). Then, a basic block information table, an instruction sequence information table, and an interlock tabulation table are created for each basic block of all the basic blocks obtained by division.

【0041】図5は、これらのテーブルの構造を示す。FIG. 5 shows the structure of these tables.

【0042】図5(A)は、基本ブロック内にある全命
令の情報を格納する命令列情報テーブル900の構造を
示す。この命令列情報テーブル900は、基本ブロック
内で、その基本ブロック内にある命令の個数分だけ確保
される。901は命令種別を格納するフィールド、90
2はその命令が基本ブロック内で何サイクル目に実行可
能になるかを示す開始サイクル数を格納するフィール
ド、903はその命令で定義されるレジスタがある場合
にそのレジスタ名を格納するフィールド、904はその
命令で引用されるレジスタがある場合にそのレジスタ名
を格納するフィールドである。
FIG. 5A shows the structure of an instruction sequence information table 900 which stores information on all the instructions in the basic block. This instruction sequence information table 900 is secured in a basic block by the number of instructions in the basic block. 901 is a field for storing the instruction type, 90
Reference numeral 2 is a field for storing the number of start cycles indicating the cycle in which the instruction can be executed in the basic block, 903 is a field for storing the register name of the register defined by the instruction, 904 Is a field for storing the register name when there is a register referred to by the instruction.

【0043】図5(B)は、インタロックの種別ごとに
発生回数を格納するインタロック集計テーブル920の
構造を示す。インタロック集計テーブル920は、基本
ブロック内で発生するインタロックの種別ごとに作成さ
れる。921はインタロックの種別を記載するフィール
ド、922はその種別のインタロックの発生回数を格納
するフィールドである。
FIG. 5B shows the structure of the interlock aggregation table 920 which stores the number of occurrences for each type of interlock. The interlock tabulation table 920 is created for each type of interlock generated in the basic block. Reference numeral 921 is a field for describing the type of interlock, and 922 is a field for storing the number of occurrences of the interlock of that type.

【0044】図5(C)は、全基本ブロックの情報を格
納する基本ブロック情報テーブル950を示す。基本ブ
ロック情報テーブル950は、基本ブロックごとに作成
される。
FIG. 5C shows a basic block information table 950 which stores information on all basic blocks. The basic block information table 950 is created for each basic block.

【0045】951は基本ブロックのラベル名を格納す
るフィールド、952は当該基本ブロック内の命令の個
数を格納するフィールド、953は当該基本ブロックの
1回あたりの静的実行サイクル数を格納するフィール
ド、954は当該基本ブロック内のインタロック発生回
数を格納するインタロック集計テーブル(図5(B))
へのポインタを格納するフィールド、955は当該基本
ブロック内の命令に関する命令列情報テーブル(図5
(A))へのポインタを格納するフィールド、956は
次の基本ブロック情報へのポインタを格納するフィール
ドである。
Reference numeral 951 is a field for storing the label name of the basic block, 952 is a field for storing the number of instructions in the basic block, and 953 is a field for storing the number of static execution cycles of the basic block at one time. Reference numeral 954 is an interlock aggregation table storing the number of interlock occurrences in the basic block (FIG. 5 (B)).
A field for storing a pointer to the instruction sequence information table 955 relating to the instructions in the basic block (see FIG. 5).
(A)) is a field for storing a pointer, and 956 is a field for storing a pointer to the next basic block information.

【0046】図5(D)は、基本ブロック情報テーブ
ル、命令列情報テーブル、およびインタロック集計テー
ブルで構成するリスト構造を示す。各基本ブロックごと
に基本ブロック情報テーブル950が作成され、ポイン
タ956でつなげられている。基本ブロック情報950
のポインタ954には、その基本ブロックのインタロッ
ク集計テーブル920のリストの先頭アドレスが格納さ
れている。また、基本ブロック情報950のポインタ9
55には、その基本ブロックの命令列情報テーブル90
0のリストの先頭アドレスが格納されている。
FIG. 5D shows a list structure composed of a basic block information table, an instruction string information table, and an interlock aggregation table. A basic block information table 950 is created for each basic block and is connected by a pointer 956. Basic block information 950
The pointer 954 stores the head address of the list of the interlock aggregation table 920 of the basic block. Also, the pointer 9 of the basic block information 950
55 is an instruction sequence information table 90 of the basic block.
The start address of the list of 0 is stored.

【0047】再び図3を参照して、基本ブロック分割処
理31では、機械語命令列70を入力して、図5で説明
したリスト構造を有する基本ブロック情報テーブル、命
令列情報テーブル、およびインタロック集計テーブルを
作成する。なお、この時点では、図5(A)の命令サイ
クル数902、図5(B)の発生回数922、および図
5(C)のサイクル数953は、0に初期化される。
Referring again to FIG. 3, in the basic block division processing 31, the machine language instruction string 70 is input, and the basic block information table, the instruction string information table and the interlock having the list structure described in FIG. 5 are input. Create a summary table. At this point, the number of instruction cycles 902 in FIG. 5A, the number of occurrences 922 in FIG. 5B, and the number of cycles 953 in FIG. 5C are initialized to 0.

【0048】基本ブロック分割処理31の後、サイクル
数計算処理32を行う。サイクル数計算処理32では、
分割された全基本ブロックについて、インタロック情報
40に登録されているインタロック情報に基づき、各基
本ブロック内の命令列の実行サイクル数を計算する。
After the basic block division processing 31, a cycle number calculation processing 32 is performed. In the cycle number calculation process 32,
For all divided basic blocks, the number of execution cycles of the instruction sequence in each basic block is calculated based on the interlock information registered in the interlock information 40.

【0049】図6は、図1および図3のインタロック情
報40の内容例を示す。本実施例では、インタロック情
報として、インタロックの発生する条件である「命令の
組合わせ」および「レジスタ利用条件」と、そのインタ
ロックが発生した場合に何サイクルの遅れが起こるかを
示す「インタロックサイクル数」を、あらかじめ用意し
ている。
FIG. 6 shows an example of the contents of the interlock information 40 shown in FIGS. In the present embodiment, as the interlock information, a "instruction combination" and a "register use condition" that are conditions under which the interlock occurs, and "how many cycles are delayed when the interlock occurs" are shown. "Number of interlock cycles" is prepared in advance.

【0050】例えば、インタロック情報301は、先行
命令である「ロード」で定義されるレジスタと後続命令
である「加算」で使用(引用)されるレジスタとが同一
の場合、その2つの命令間に、先行命令である「ロー
ド」による影響を受けない(インタロックの発生しな
い)命令を最低一命令挿入しておかなければ、後続命令
である「加算」の実行が通常より1サイクル遅れて開始
されることを示している。
For example, when the register defined by the preceding instruction “load” and the register used (quoted) by the subsequent instruction “addition” are the same, the interlock information 301 is between the two instructions. If at least one instruction that is not affected by the preceding instruction "load" (interlock does not occur) is inserted, execution of the subsequent instruction "addition" starts one cycle later than usual. Is shown to be done.

【0051】例えば、次のような命令列でロード命令の
実行がnサイクル目に開始されたとする。
For example, assume that execution of a load instruction is started in the nth cycle with the following instruction sequence.

【0052】n Ri=Mem n+1 (1サイクルのインタロック) n+2 Rk=Ri+RjN Ri = Mem n + 1 (1 cycle interlock) n + 2 Rk = Ri + Rj

【0053】この場合、先行命令のロードと後続命令の
加算との間に1サイクルのインタロックが発生するた
め、後続の加算命令が開始されるのは、n+2サイクル
目になる。他のインタロック情報302、303、30
4もインタロック情報301と同様の意味を持つ。
In this case, since one cycle of interlock occurs between the loading of the preceding instruction and the addition of the succeeding instruction, the subsequent addition instruction is started in the (n + 2) th cycle. Other interlock information 302, 303, 30
4 also has the same meaning as the interlock information 301.

【0054】再び図3を参照して、サイクル数計算処理
32では、図6に示したようなインタロック情報を参照
しながら、インタロックを考慮して各基本ブロック内の
命令列の実行サイクル数を計算する。その結果(すなわ
ち、基本ブロックの命令列の実行サイクル数)は、図5
(C)の基本ブロック情報950のサイクル数953に
セットされる。また、その実行サイクル数を計算する途
中で明らかになる各命令の開始サイクル数は、図5
(A)の命令列情報テーブル900の開始サイクル数9
02にセットされる。
Referring again to FIG. 3, in the cycle number calculation process 32, while referring to the interlock information as shown in FIG. 6, the number of execution cycles of the instruction sequence in each basic block is considered in consideration of the interlock. To calculate. The result (that is, the number of execution cycles of the instruction sequence of the basic block) is shown in FIG.
It is set to the cycle number 953 of the basic block information 950 of (C). In addition, the number of start cycles of each instruction which becomes clear during calculation of the number of execution cycles is shown in FIG.
The number of start cycles of the instruction sequence information table 900 in (A) is 9
It is set to 02.

【0055】次に、インタロック集計処理33を行う。
インタロック集計処理33では、インタロック情報40
に登録されているインタロック情報に基づき、各基本ブ
ロック内でどの種類のインタロックが何回発生したかを
集計する。集計結果は、図5(B)のインタロック集計
テーブル920の発生回数922にセットされる。
Next, the interlock counting process 33 is performed.
In the interlock aggregation processing 33, the interlock information 40
Based on the interlock information registered in, the type of interlock in each basic block and how many times it occurred are totaled. The counting result is set in the occurrence count 922 of the interlock counting table 920 of FIG.

【0056】次に、実行時間計算処理33を行う。実行
時間計算処理33では、分割された全基本ブロックにつ
いて、基本ブロックの実行回数とその基本ブロックのサ
イクル数とに基づいて、実行時間の計算を行う。基本ブ
ロックの実行回数は、実行回数情報80を参照して得
る。基本ブロックのサイクル数は、その基本ブロックの
基本ブロック情報テーブル950のサイクル数953を
参照して得る。実行時間の計算は、以下の式で行う。
Next, the execution time calculation process 33 is performed. In the execution time calculation process 33, the execution time is calculated for all the divided basic blocks based on the number of times of execution of the basic block and the number of cycles of the basic block. The execution count of the basic block is obtained by referring to the execution count information 80. The cycle number of the basic block is obtained by referring to the cycle number 953 of the basic block information table 950 of the basic block. The execution time is calculated by the following formula.

【0057】実行時間[秒]=実行回数[回]×サイク
ル数[cycle ]×(1÷CPUの動作周波数)[秒/cy
cle ]
Execution time [seconds] = number of executions [times] × number of cycles [cycle] × (1 ÷ CPU operating frequency) [seconds / cy
cle]

【0058】例えば、ある基本ブロックの実行回数が1
0,000,000回で、サイクル数が100サイクル
で、CPUの動作周波数が50MHzの場合、その基本
ブロックの実行時間は以下のようになる。
For example, the execution count of a certain basic block is 1
When the number of cycles is 100,000,000, the number of cycles is 100, and the operating frequency of the CPU is 50 MHz, the execution time of the basic block is as follows.

【0059】実行時間[秒]=10000000×10
0×(1÷50000000)=20[秒]
Execution time [sec] = 10000000 × 10
0 × (1 ÷ 50000000) = 20 [seconds]

【0060】次に、図7〜図11を参照して、本実施例
におけるプログラム性能解析処理30の手順を詳細に説
明する。
Next, the procedure of the program performance analysis processing 30 in this embodiment will be described in detail with reference to FIGS.

【0061】図7は、本実施例におけるプログラム性能
解析処理30の手順を示したものである。まず、ステッ
プ401aでは、機械語命令列70から機械語命令列を
入力し、基本ブロック分割処理(図3の31)を行い、
各基本ブロックごとに基本ブロック情報テーブル、命令
列情報テーブル、およびインタロック集計テーブル(図
5)を作成して、ステップ401bに進む。
FIG. 7 shows the procedure of the program performance analysis processing 30 in this embodiment. First, in step 401a, a machine language instruction sequence is input from the machine language instruction sequence 70, basic block division processing (31 in FIG. 3) is performed,
A basic block information table, an instruction sequence information table, and an interlock aggregation table (FIG. 5) are created for each basic block, and the process proceeds to step 401b.

【0062】ステップ401bでは、ステップ401a
で作成された全基本ブロックに対して、その基本ブロッ
ク内に含まれる命令列の実行サイクル数とインタロック
発生回数を計算し(図3の32,33)、ステップ40
1cに進む。
In step 401b, step 401a
For all the basic blocks created in step 1, the number of execution cycles and the number of interlock occurrences of the instruction sequence contained in the basic block are calculated (32, 33 in FIG. 3), and step 40
Go to 1c.

【0063】ステップ401cでは、ステップ401a
で作成された全基本ブロックに対して、ステップ401
bで計算されたサイクル数と実行回数情報80の実行回
数とから実行時間を計算し(図3の34)、その計算結
果とステップ401bで集計されたインタロックの発生
回数とを表示装置4(図1、図3)に表示する。
In step 401c, step 401a
Step 401 for all basic blocks created in
The execution time is calculated from the number of cycles calculated in step b and the number of executions of the execution count information 80 (34 in FIG. 3), and the calculation result and the number of interlocks generated in step 401b are displayed on the display device 4 ( Displayed in FIGS. 1 and 3).

【0064】図8および図9は、基本ブロック分割処理
401aの処理手順を示すフローチャートである。
8 and 9 are flowcharts showing the processing procedure of the basic block division processing 401a.

【0065】この処理手順を説明する前に、まずこの処
理で使用するワークデータ領域について説明する。ワー
クデータ領域としては、ラベルスタック、命令スタッ
ク、および変数inst_cntが用意されている。
Before describing this processing procedure, the work data area used in this processing will be described first. A label stack, an instruction stack, and a variable inst_cnt are prepared as the work data area.

【0066】ラベルスタックは、機械語命令列70に出
力されているラベル名を格納する領域である。このラベ
ル名は、基本ブロックを識別するために用いるもので、
実行回数情報80に出力されているラベル情報と一対一
に対応しているものとする。命令スタックは、基本ブロ
ック内にある命令を格納する領域である。最初、命令ス
タックは空の状態である。命令を1つ読むごとに命令ス
タックに命令が格納される。1つの基本ブロックの処理
が終了すると、命令スタックは再び空の状態になる。変
数inst_cntは、基本ブロック内にある命令の数
をカウントするために用いる変数である。
The label stack is an area for storing the label name output to the machine language instruction sequence 70. This label name is used to identify the basic block,
It is assumed that there is a one-to-one correspondence with the label information output in the execution count information 80. The instruction stack is an area for storing instructions in the basic block. Initially, the instruction stack is empty. An instruction is stored in the instruction stack each time one instruction is read. When the processing of one basic block is completed, the instruction stack becomes empty again. The variable inst_cnt is a variable used to count the number of instructions in the basic block.

【0067】次に、図8および図9を参照して、基本ブ
ロック分割処理401aを説明する。
Next, the basic block division processing 401a will be described with reference to FIGS. 8 and 9.

【0068】ステップ501aでは、ラベルスタックお
よび命令スタックを空にし、変数inst_cntを0
にして、ステップ505aに進む。ステップ505aで
は、機械語命令列70で読み込んでない機械語命令があ
るか否かを判定する。読み込んでない機械語命令があれ
ば、ステップ501bに進む。機械語命令がなければ、
ステップ515aに進む。
In step 501a, the label stack and the instruction stack are emptied, and the variable inst_cnt is set to 0.
Then, the process proceeds to step 505a. In step 505a, it is determined whether or not there is a machine language instruction that is not read in the machine language instruction sequence 70. If there is a machine language command that has not been read, the process proceeds to step 501b. Without machine instructions,
Proceed to step 515a.

【0069】ステップ510bでは、機械語命令列70
から機械語命令を1つ読み込み、ステップ505bに進
む。ステップ505bでは、読み込んだ命令がブランチ
命令かどうかを判定する。読み込んだ命令がブランチ命
令であれば、ステップ501dに進む。ブランチ命令で
なければ、ステップ505cに進む。
At step 510b, the machine language instruction sequence 70
One machine language instruction is read from and the process proceeds to step 505b. In step 505b, it is determined whether the read instruction is a branch instruction. If the read instruction is a branch instruction, the process proceeds to step 501d. If it is not a branch instruction, the process proceeds to step 505c.

【0070】ステップ505cでは、読み込んだ命令が
ラベルかどうかを判定する。読み込んだ命令がラベルで
あれば、ステップ505dに進む。ラベルでなければ、
ステップ501cに進む。
In step 505c, it is determined whether the read instruction is a label. If the read instruction is a label, the process proceeds to step 505d. If not a label
Proceed to step 501c.

【0071】ステップ501cでは、読み込んだ命令を
命令スタックに格納する。そして、命令スタックに命令
を格納したことで基本ブロック内の命令が1命令増えた
ので、変数inst_cntに1を加えた後、ステップ
505aに進む。
In step 501c, the read instruction is stored in the instruction stack. Since one instruction is added to the basic block by storing the instruction in the instruction stack, 1 is added to the variable inst_cnt, and the process proceeds to step 505a.

【0072】ステップ501dでは、読み込んだブラン
チ命令を命令スタックに格納し、変数inst_cnt
に1を加えた後、ステップ501eに進む。
In step 501d, the read branch instruction is stored in the instruction stack, and the variable inst_cnt is stored.
After adding 1 to step 501e, the process proceeds to step 501e.

【0073】ステップ505dでは、ラベルスタックに
ラベル名が格納されてなく、かつ、変数inst_cn
tが0であるかどうかを判定する。この判定は、基本ブ
ロックのラベル名がなく、かつ、基本ブロック内に命令
が1つも存在しない基本ブロックの作成を防ぐためのも
のである。この判定条件を満たした場合は、ステップ5
05aに進む。判定条件を満たさない場合は、ステップ
501eに進む。
In step 505d, the label name is not stored in the label stack, and the variable inst_cn is set.
It is determined whether t is 0. This determination is to prevent the creation of a basic block that does not have the label name of the basic block and has no instructions in the basic block. If this determination condition is satisfied, step 5
Go to 05a. If the determination condition is not satisfied, the process proceeds to step 501e.

【0074】ステップ501eでは、ラベルスタックお
よび命令スタックに格納されている情報から、1つの基
本ブロック情報を作成する。
In step 501e, one basic block information is created from the information stored in the label stack and the instruction stack.

【0075】基本ブロック情報作成は、以下の手順で行
う。まず、図5(C)に示した基本ブロック情報テーブ
ル950を1つ作成し、基本ブロック情報テーブルリス
トの最後に追加する。次に、ラベルスタックに格納され
ているラベルを、作成した基本ブロック情報テーブル9
50のラベル名フィールド951に登録する。次に、ブ
ロック内命令数フィールド952に、変数inst_c
ntの値を格納する。また、合計サイクル数フィールド
953に、0を登録する。
The basic block information is created in the following procedure. First, one basic block information table 950 shown in FIG. 5C is created and added to the end of the basic block information table list. Next, the labels stored in the label stack are stored in the created basic block information table 9
The label name field 951 of 50 is registered. Next, in the block instruction count field 952, the variable inst_c
Stores the value of nt. Also, 0 is registered in the total cycle number field 953.

【0076】さらに、図5(B)に示したインタロック
発生回数集計テーブル920を作成し、そのインタロッ
ク発生回数集計テーブル920のすべてのインタロック
種別の発生回数フィールドを0に初期化する。なお、イ
ンタロック発生回数集計テーブル920は、図6のイン
タロック情報40に登録されているすべてのインタロッ
ク種別についてインタロックの発生回数を集計するため
の領域を備えているように作成される。
Further, the interlock occurrence count table 920 shown in FIG. 5B is created, and the occurrence count fields of all interlock types in the interlock occurrence count table 920 are initialized to zero. The interlock occurrence count totaling table 920 is created so as to have an area for totaling the number of interlock occurrences for all interlock types registered in the interlock information 40 of FIG.

【0077】また、変数inst_cnt個の命令列が
格納できる領域を持った命令列情報テーブル900(図
5(A))を作成し、命令スタックに格納されている命
令を命令列情報テーブルの命令フィールド901に登録
する。その際、登録した命令が定義あるいは引用するレ
ジスタを、それぞれ、定義レジスタフィールド903あ
るいは引用レジスタフィールド904に登録する。開始
サイクル数フィールド902は、全ての命令について0
に初期化する。
Further, an instruction string information table 900 (FIG. 5A) having an area capable of storing variable inst_cnt instruction strings is created, and the instructions stored in the instruction stack are stored in the instruction field of the instruction string information table. Register in 901. At that time, the registers defined or quoted by the registered instruction are registered in the definition register field 903 or the reference register field 904, respectively. The number of start cycles field 902 is 0 for all instructions.
Initialize to.

【0078】以上の処理で、ステップ501eにおける
基本ブロック情報(図5のテーブル)の作成が完了す
る。
With the above processing, the creation of the basic block information (table in FIG. 5) in step 501e is completed.

【0079】ステップ501eでは、さらに、ラベルス
タックおよび命令スタックを空の状態とし、直前に読み
込んだ命令がラベルであればラベル名をラベルスタック
に格納する。もし、直前に読み込んだ命令がブランチ命
令であれば、ラベルスタックへのラベル名の格納は行わ
ない。そして、最後に変数inst_cntを0とし、
ステップ505aに進む。
In step 501e, the label stack and the instruction stack are further emptied, and if the instruction read immediately before is the label, the label name is stored in the label stack. If the instruction read immediately before is a branch instruction, the label name is not stored in the label stack. Finally, the variable inst_cnt is set to 0,
Go to step 505a.

【0080】ステップ515aでは、命令スタックに命
令が積み残されているか否かを判定する。積み残されて
いる場合は、ステップ511aに進む。積み残されてい
なければ、基本ブロック分割処理を終了する。ステップ
511aでは、ステップ501eの動作と同様に、ラベ
ルスタックおよび命令スタックに格納されている情報か
ら1つの基本ブロック情報を作成する。その後、基本ブ
ロック分割処理を終了する。
At step 515a, it is judged whether or not there is an instruction left on the instruction stack. If there are unloaded items, the process proceeds to step 511a. If not left, the basic block division processing is terminated. In step 511a, similar to the operation in step 501e, one basic block information is created from the information stored in the label stack and the instruction stack. After that, the basic block division processing ends.

【0081】図10は、サイクル数計算・インタロック
発生回数集計処理401bの処理手順を示すフローチャ
ートである。
FIG. 10 is a flow chart showing the processing procedure of the cycle number calculation / interlock occurrence frequency totaling processing 401b.

【0082】まず、ステップ605aでは、基本ブロッ
ク情報テーブルリストにサイクル数をまだ計算していな
い基本ブロックがあるかどうかを判定する。この判定
は、図5(C)の基本ブロック情報テーブル950のサ
イクル数フィールド953が0である基本ブロックがあ
るかどうかを調べることで行う。サイクル数を計算して
いない基本ブロックがある場合は、ステップ601aに
進む。サイクル数を計算していない基本ブロックがない
場合は、全基本ブロックでサイクル数の計算を終了して
いるので、サイクル数計算・インタロック発生回数集計
処理を終了する。
First, in step 605a, it is determined whether or not there is a basic block whose cycle number has not been calculated in the basic block information table list. This determination is made by checking whether or not there is a basic block whose cycle number field 953 of the basic block information table 950 of FIG. If there is a basic block for which the number of cycles has not been calculated, the process proceeds to step 601a. If there is no basic block for which the number of cycles has not been calculated, the calculation of the number of cycles has been completed for all the basic blocks, so the cycle number calculation / interlock occurrence count totaling process ends.

【0083】ステップ601aでは、まず、命令を割り
当てることが可能なサイクル数を保持する変数crt_
cycleを1にする。このサイクル数を1にするとい
うことは、基本ブロック内の先頭にある命令が、必ず1
サイクル目に割り当てられるということを表わしてい
る。次に、命令列情報テーブル900の何番目のテーブ
ルを指しているのかを示す変数iを1にする。
In step 601a, first, a variable crt_ holding the number of cycles to which an instruction can be assigned is held.
Set cycle to 1. Setting the number of cycles to 1 means that the first instruction in the basic block must be 1
It means that it is assigned to the cycle. Next, the variable i indicating which table in the instruction string information table 900 is pointed to is set to 1.

【0084】図12は、命令列情報テーブル900の例
を示す。同図を用いて説明すると、テーブル900−1
が1番目、テーブル900−2が2番目、テーブル90
0−3が3番目となる。
FIG. 12 shows an example of the instruction sequence information table 900. Explaining with reference to FIG.
Is first, table 900-2 is second, table 90
0-3 is the third.

【0085】さらに、ステップ601aでは、基本ブロ
ック内の命令数を格納する変数max_instに、基
本ブロック情報テーブル950のブロック内命令数フィ
ールド952の値を代入する。そして、ステップ605
bに進む。
Further, in step 601a, the value of the in-block instruction number field 952 of the basic block information table 950 is substituted into the variable max_inst for storing the number of instructions in the basic block. And step 605
Go to b.

【0086】ステップ605bでは、変数iが変数ma
x_inst以下であるかどうかを判定する。変数iが
変数max_inst以下の場合は、ステップ601b
に進む。変数iが変数max_instより大きい場合
は、ステップ605eに進む。
At step 605b, the variable i is changed to the variable ma.
It is determined whether it is less than or equal to x_inst. If the variable i is less than or equal to the variable max_inst, step 601b
Proceed to. If the variable i is larger than the variable max_inst, the process proceeds to step 605e.

【0087】ステップ605eでは、変数max_in
stが0であるかどうかを判定する。変数max_in
stが0の場合は、その基本ブロックに命令がないとい
うことなので、その基本ブロック情報テーブル950の
サイクル数フィールド953は初期値0のままとして、
ステップ601gに進む。変数max_instが0で
ない場合は、ステップ601fに進み、max_ins
t番目の命令列情報テーブル900の開始サイクル数フ
ィールド902に格納されている値をその基本ブロック
の実行サイクル数とし、その値を基本ブロック情報テー
ブル950のサイクル数フィールド953へ格納する。
そして、ステップ601gに進む。
At step 605e, the variable max_in
It is determined whether st is 0. Variable max_in
If st is 0, it means that there is no instruction in the basic block, so the cycle number field 953 of the basic block information table 950 is left at the initial value 0,
Go to step 601g. If the variable max_inst is not 0, the process proceeds to step 601f and max_ins
The value stored in the start cycle number field 902 of the t-th instruction string information table 900 is set as the execution cycle number of the basic block, and the value is stored in the cycle number field 953 of the basic block information table 950.
Then, the process proceeds to step 601g.

【0088】ステップ601gでは、いまサイクル数計
算処理を終了した基本ブロックの次の基本ブロックを選
択し、ステップ605aに進む。
At step 601g, the basic block next to the basic block for which the cycle number calculation process has been completed is selected, and the routine proceeds to step 605a.

【0089】ステップ601bでは、まずi番目の命令
を開始することが可能なサイクル数(すなわち、i番目
の命令の開始サイクル数)を次の式によって決定する。
In step 601b, first, the number of cycles at which the i-th instruction can be started (that is, the start cycle number of the i-th instruction) is determined by the following equation.

【0090】i_cycle=MAX(i_cycl
e,crt_cycle)
I_cycle = MAX (i_cycle
e, crt_cycle)

【0091】ここで、記号i_cycleは命令列情報
テーブル900のi番目の命令の開始サイクル数フィー
ルド902を表すものとする。また、MAXは2つの引
数が持つ値のうちより大きい値を持つものを結果として
返す関数とする。
Here, the symbol i_cycle represents the start cycle number field 902 of the i-th instruction of the instruction sequence information table 900. In addition, MAX is a function that returns, as a result, one having a larger value out of the values of the two arguments.

【0092】上式の評価の結果、i_cycleが返さ
れる場合は、i番目の命令より先に割り当てられた命令
とi番目の命令との間で、インタロックが発生している
ことを示す。また、crt_cycleが返される場合
は、先行命令との間でインタロックがないか、またはイ
ンタロックが発生する命令の間に他の命令があるために
インタロックが解消されていることを示す。次に、変数
crt_cycleに、i番目の命令の開始サイクル数
i_cycleを代入する。
If i_cycle is returned as a result of the evaluation of the above expression, it indicates that an interlock has occurred between the instruction assigned before the i-th instruction and the i-th instruction. If crt_cycle is returned, it indicates that the interlock has been canceled because there is no interlock with the preceding instruction, or because there is another instruction between the instruction in which the interlock occurs. Next, the start cycle number i_cycle of the i-th instruction is substituted into the variable crt_cycle.

【0093】さらに、ステップ601bでは、i番目の
命令とその後続の命令との間でインタロックが発生する
可能性があるか否かを検査するために検査範囲の決定を
行う。検査は、ステップ605c以降で行なうが、具体
的には、変数jをi+1からloop_endまで動か
しながらi番目の命令とj番目の命令との間でインタロ
ックがあるかどうかを検査するものである。このloo
p_endの値、すなわちi番目の命令との間でインタ
ロックが発生するかどうかを検査する範囲は、下記式で
決定される。
Further, in step 601b, the inspection range is determined in order to inspect whether or not an interlock may occur between the i-th instruction and its subsequent instruction. The check is performed after step 605c. Specifically, it is checked whether there is an interlock between the i-th instruction and the j-th instruction while moving the variable j from i + 1 to loop_end. This loo
The value of p_end, that is, the range for checking whether an interlock occurs with the i-th instruction is determined by the following formula.

【0094】loop_end=MIN(max_in
st,i番目の命令がインタロック種別にある場合その
インタロックサイクル数のうちの最大サイクル数+i+
1)
Loop_end = MIN (max_in
If the st, i-th instruction is of the interlock type, the maximum number of interlock cycles + i +
1)

【0095】ただし、MINは、MAXと反対の結果と
してより小さい値を持つものを結果として返す関数とす
る。上記式は、i番目の命令によって発生する可能性の
あるインタロックのうち最大のインタロックサイクル数
分だけ後の命令までが検査範囲の基本であり、ただし基
本ブロック内の命令数はmax_instであるから、
どちらか小さい値をloop_endに設定するという
意味である。
However, MIN is a function that returns a result having a smaller value as a result opposite to MAX. In the above equation, the basic range of the check is the instruction after the maximum number of interlock cycles among the interlocks that may occur by the i-th instruction, but the number of instructions in the basic block is max_inst. From
This means that either smaller value is set to loop_end.

【0096】最後に、i番目の命令との間で検査を行う
j番目の命令を示す変数jに初期値としてi+1を代入
する。そして、ステップ605cに進む。
Finally, i + 1 is assigned as an initial value to a variable j indicating the jth instruction to be checked with the ith instruction. Then, the process proceeds to step 605c.

【0097】ステップ605cでは、i番目の命令との
間でのインタロックの検査がすべて終了したか否かを判
断するために、変数jがloop_end以下であるか
どうかを検査する。変数jがloop_end以下の場
合は、ステップ605cに進む。変数jがloop_e
ndより大きい場合は、ステップ605dに進む。
In step 605c, it is checked whether or not the variable j is less than or equal to loop_end in order to judge whether or not all the interlocks with the i-th instruction have been checked. If the variable j is less than or equal to loop_end, the process proceeds to step 605c. Variable j is loop_e
If it is larger than nd, the process proceeds to step 605d.

【0098】ステップ605dでは、命令iと命令jと
の間で、インタロック情報テーブル300に登録されて
いるインタロックが発生しているかを、命令の組み合わ
せ、およびレジスタの利用条件から判定する。インタロ
ックがある場合は、ステップ601cに進む。インタロ
ックがない場合は、ステップ601dに進む。
In step 605d, it is determined whether an interlock registered in the interlock information table 300 has occurred between the instruction i and the instruction j based on the instruction combination and the register use condition. If there is an interlock, the process proceeds to step 601c. If there is no interlock, the process proceeds to step 601d.

【0099】ステップ601cでは、まず、ステップ6
05dで判定されたインタロック種別の発生回数(図5
(B)の922)に1を加える。次に、i番目の命令に
よって発生するインタロックによりj番目の命令が何サ
イクル目から開始可能になるかを次の式によって決定す
る。
In step 601c, first, in step 6
Number of occurrences of interlock type determined in 05d (Fig. 5
Add 1 to 922) of (B). Next, the number of cycles from which the j-th instruction can be started due to the interlock generated by the i-th instruction is determined by the following formula.

【0100】j_cycle=MAX(j_cycl
e,i_cycle+1+iのインタロックサイクル
数)
J_cycle = MAX (j_cycle
e, i_cycle + 1 + i interlock cycle number)

【0101】ここで、記号j_cycleは、i_cy
cleと同様、命令列情報テーブル900のj番目の命
令の開始サイクル数フィールド902を表すものとす
る。j番目の命令は、既にi番目と異なる命令間でイン
タロックが発生している可能性もあるため、既に設定さ
れているインタロックによる遅延のほうが大きい場合
は、既に決定されているj_cycleを開始サイクル
とし、i番目の命令による遅延のほうが大きい場合は、
「i_cycle+1+iによるインタロックサイクル
数」をj_cycleの開始サイクルとする。そして、
ステップ601dに進む。
Here, the symbol j_cycle is i_cy.
Similar to cle, it represents the start cycle number field 902 of the j-th instruction of the instruction sequence information table 900. Since the j-th instruction may already have an interlock between instructions different from the i-th instruction, if the delay due to the already set interlock is larger, the already determined j_cycle is started. Cycle and if the delay due to the i-th instruction is greater,
The “interlock cycle number by i_cycle + 1 + i” is the start cycle of j_cycle. And
Go to step 601d.

【0102】ステップ601dでは、i番目とj+1番
目の命令間での検査を行うために変数jに1を加える。
そして、ステップ605cに進む。
At step 601d, 1 is added to the variable j in order to perform a check between the i-th and j + 1-th instructions.
Then, the process proceeds to step 605c.

【0103】ステップ601eでは、まず、i番目とそ
の後続命令間でのインタロックの検査が終了し、i+1
番目の命令による検査を行うために変数iに1を加え
る。そして、i+1番目の命令が開始可能なサイクル
は、最も早い場合i番目の開始サイクルを示すcrt_
cycleの次のサイクル、すなわちcrt_cycl
e+1になるため、crt_cycleに1を加える。
そして、ステップ605bに進む。
In step 601e, the interlock check between the i-th instruction and its succeeding instruction is completed, and i + 1
Add 1 to the variable i to perform the check by the th instruction. The cycle in which the i + 1th instruction can be started is crt_, which indicates the ith start cycle in the earliest case.
next cycle of cycle, ie crt_cycle
Since it becomes e + 1, 1 is added to crt_cycle.
Then, the process proceeds to step 605b.

【0104】図12は、図4の機械語命令列に対して基
本ブロック分割処理401aを実行することにより作成
された命令列情報テーブル900を示す。命令フィール
ド901、定義レジスタフィールド903、および引用
レジスタフィールド904に、それぞれの命令に応じた
データが設定されている。開始サイクル数フィールド9
02は、全て0に初期化されている。
FIG. 12 shows an instruction sequence information table 900 created by executing the basic block division processing 401a for the machine language instruction sequence of FIG. Data corresponding to each instruction is set in the instruction field 901, the definition register field 903, and the reference register field 904. Start cycle number field 9
02 are all initialized to 0.

【0105】図13は、図12の命令列情報テーブル9
00に対してサイクル数計算・インタロック発生回数集
計処理401bを実行した結果を示す。開始サイクル数
フィールド902に、それぞれの命令が開始されるサイ
クル数が設定されている。
FIG. 13 shows the instruction sequence information table 9 of FIG.
The result of executing the cycle number calculation / interlock occurrence frequency totaling process 401b for 00 is shown. The number of cycles at which each instruction is started is set in the start cycle number field 902.

【0106】次に、実行時間計算処理401cについて
説明する。
Next, the execution time calculation process 401c will be described.

【0107】図14は、実行回数情報80(図2)を格
納する実行回数情報テーブル120の内容の一例を示し
たものである。実行回数情報テーブル120は、基本ブ
ロックを識別するためのラベル名を格納するラベル名フ
ィールド121と、実際にその基本ブロックが実行され
た回数を格納する実行回数フィールド122とからな
る。
FIG. 14 shows an example of the contents of the execution count information table 120 which stores the execution count information 80 (FIG. 2). The execution count information table 120 includes a label name field 121 that stores a label name for identifying a basic block and an execution count field 122 that stores the number of times the basic block was actually executed.

【0108】図11は、実行時間計算処理401cの処
理手順を示すフローチャートである。
FIG. 11 is a flow chart showing the processing procedure of the execution time calculation processing 401c.

【0109】まず、ステップ705aでは、実行回数情
報テーブル120に格納された実行回数情報があるかど
うかを判定する。実行回数情報があれば、ステップ70
1aに進む。実行回数情報がなければ、実行時間計算処
理を終了する。
First, in step 705a, it is determined whether or not there is the execution count information stored in the execution count information table 120. If there is execution count information, step 70
Go to 1a. If there is no execution count information, the execution time calculation process ends.

【0110】ステップ701aでは、まず、実行回数情
報を1つ読み込む。次に、読み込んだ実行回数情報のラ
ベル名に対応する基本ブロックの基本ブロック情報95
0からサイクル数953を取り出す。次に、実行回数と
サイクル数とから実行時間を計算する。最後に、計算結
果を表示装置4に表示する。そして、ステップ705a
に進む。
In step 701a, first, one execution count information is read. Next, basic block information 95 of the basic block corresponding to the label name of the read execution count information
The cycle number 953 is taken out from 0. Next, the execution time is calculated from the number of executions and the number of cycles. Finally, the calculation result is displayed on the display device 4. Then, step 705a
Proceed to.

【0111】図15は、計算した実行時間とインタロッ
ク発生回数の表示例130である。表示する内容は、基
本ブロックのラベル名、実行回数、その基本ブロックの
1回あたりのサイクル数と実行時間、およびインタロッ
ク種別ごとの発生回数である。
FIG. 15 is a display example 130 of the calculated execution time and the number of interlock occurrences. The contents to be displayed are the label name of the basic block, the number of executions, the number of cycles and the execution time per basic block, and the number of occurrences for each interlock type.

【0112】以上説明した実施例を用いることにより、
基本ブロックの実行時間を算出し、さらにインタロック
種別ごとの発生回数を取得し、それぞれの結果を表示す
ることができるようになる。これにより、プログラムの
どの箇所の実行比率が大きいかを検出することができ、
プログラムの性能を評価できる。
By using the embodiment described above,
It becomes possible to calculate the execution time of the basic block, obtain the number of occurrences for each interlock type, and display the respective results. This makes it possible to detect in which part of the program the execution ratio is high,
Evaluate program performance.

【0113】なお、上記実施例において、性能解析対象
のソースプログラムがループ処理を含む場合には、その
ループを構成する部分命令列群の各実行サイクル数と実
行回数とからループの実行時間を算出し、それを表示す
るようにしてもよい。
In the above embodiment, when the source program of the performance analysis includes a loop process, the execution time of the loop is calculated from the number of execution cycles and the number of executions of the partial instruction sequence group forming the loop. However, it may be displayed.

【0114】図16は、ループを含むソースプログラム
の例である。この例を用いてループの実行時間算出手順
を説明する。ループは、基本ブロック分割処理により、
幾つかの基本ブロックに分割される。この図の例では、
3つの基本ブロック141,142,143に分割され
る。1つの基本ブロックの実行時間の算出は、上述した
手順で行なうことができ、この例の3つの基本ブロック
に対しても実行時間を算出できる。したがって、ループ
の実行時間は、これら3つの基本ブロックのそれぞれの
実行時間を単純に加えたものとして算出可能である。
FIG. 16 is an example of a source program including a loop. The loop execution time calculation procedure will be described using this example. The loop is divided into basic blocks,
It is divided into several basic blocks. In this example,
It is divided into three basic blocks 141, 142, 143. The execution time of one basic block can be calculated by the procedure described above, and the execution time can also be calculated for the three basic blocks in this example. Therefore, the execution time of the loop can be calculated by simply adding the execution times of the three basic blocks.

【0115】ループの実行時間を表示することにより、
そのプログラムのループ部の性能を評価することができ
る。
By displaying the execution time of the loop,
The performance of the loop part of the program can be evaluated.

【0116】[0116]

【発明の効果】以上説明したように、本発明によれば、
パイプラインインタロックを考慮した実行時間を知るこ
とができ、また実際に実行した実行パスを対象にしたプ
ログラムの性能解析ができる。さらに、ソースプログラ
ムの変更を行う必要もない。
As described above, according to the present invention,
You can know the execution time considering the pipeline interlock, and you can analyze the performance of the program for the actual execution path. Furthermore, it is not necessary to change the source program.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の一実施例に係るプログラム性能解析方
法を適用したプログラム性能解析システムのシステム構
成図である。
FIG. 1 is a system configuration diagram of a program performance analysis system to which a program performance analysis method according to an embodiment of the present invention is applied.

【図2】機械語命令列および実行回数情報を得るための
処理の流れ図である。
FIG. 2 is a flowchart of a process for obtaining a machine language instruction string and execution count information.

【図3】プログラム性能解析部における処理の流れ図で
ある。
FIG. 3 is a flowchart of processing in a program performance analysis unit.

【図4】ソースプログラムと機械語命令列の一例を示す
図である。
FIG. 4 is a diagram showing an example of a source program and a machine language instruction sequence.

【図5】基本ブロック情報テーブル、命令列情報テーブ
ル、およびインタロック集計テーブル図である。
FIG. 5 is a basic block information table, an instruction string information table, and an interlock aggregation table.

【図6】インタロック情報の内容の例を示す図である。FIG. 6 is a diagram showing an example of contents of interlock information.

【図7】プログラム性能解析処理の動作を示すフローチ
ャートである。
FIG. 7 is a flowchart showing the operation of program performance analysis processing.

【図8】基本ブロック分割処理の動作を示すフローチャ
ートである。
FIG. 8 is a flowchart showing an operation of basic block division processing.

【図9】基本ブロック分割処理の動作を示すフローチャ
ートである。
FIG. 9 is a flowchart showing an operation of basic block division processing.

【図10】基本ブロックのサイクル数計算・インタロッ
ク発生回数集計処理の動作を示すフローチャートであ
る。
FIG. 10 is a flowchart showing the operation of a cycle number calculation / interlock occurrence frequency totaling process of a basic block.

【図11】実行時間計算処理の動作を示すフローチャー
トである。
FIG. 11 is a flowchart showing the operation of execution time calculation processing.

【図12】基本ブロック分割処理の実行後の命令列情報
テーブルの内容例を示す図である。
FIG. 12 is a diagram showing an example of contents of an instruction sequence information table after execution of basic block division processing.

【図13】サイクル数計算・インタロック発生回数集計
処理後の命令列情報テーブルの内容例を示す図である。
FIG. 13 is a diagram showing an example of the contents of an instruction sequence information table after the cycle number calculation / interlock occurrence number aggregation process.

【図14】実行回数情報を示す図である。FIG. 14 is a diagram showing execution count information.

【図15】実行時間とインタロック発生回数の表示例で
ある。
FIG. 15 is a display example of execution time and interlock occurrence frequency.

【図17】実施例で扱う命令の種別とアセンブラでの記
述方法を示す図である。
FIG. 17 is a diagram showing the types of instructions handled in the example and the description method in the assembler.

【符号の説明】[Explanation of symbols]

4…表示装置、30…プログラム性能解析、31…基本
ブロック分割、32…サイクル数計算、33…インタロ
ック集計、34…実行時間計算、40…インタロック情
報、70…機械語命令列、80…実行回数情報。
4 ... Display device, 30 ... Program performance analysis, 31 ... Basic block division, 32 ... Cycle number calculation, 33 ... Interlock aggregation, 34 ... Execution time calculation, 40 ... Interlock information, 70 ... Machine language instruction string, 80 ... Execution count information.

─────────────────────────────────────────────────────
─────────────────────────────────────────────────── ───

【手続補正書】[Procedure amendment]

【提出日】平成5年7月8日[Submission date] July 8, 1993

【手続補正1】[Procedure Amendment 1]

【補正対象書類名】明細書[Document name to be amended] Statement

【補正対象項目名】図面の簡単な説明[Name of item to be corrected] Brief description of the drawing

【補正方法】変更[Correction method] Change

【補正内容】[Correction content]

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の一実施例に係るプログラム性能解析方
法を適用したプログラム性能解析システムのシステム構
成図である。
FIG. 1 is a system configuration diagram of a program performance analysis system to which a program performance analysis method according to an embodiment of the present invention is applied.

【図2】機械語命令列および実行回数情報を得るための
処理の流れ図である。
FIG. 2 is a flowchart of a process for obtaining a machine language instruction string and execution count information.

【図3】プログラム性能解析部における処理の流れ図で
ある。
FIG. 3 is a flowchart of processing in a program performance analysis unit.

【図4】ソースプログラムと機械語命令列の一例を示す
図である。
FIG. 4 is a diagram showing an example of a source program and a machine language instruction sequence.

【図5】基本ブロック情報テーブル、命令列情報テーブ
ル、およびインタロック集計テーブル図である。
FIG. 5 is a basic block information table, an instruction string information table, and an interlock aggregation table.

【図6】インタロック情報の内容の例を示す図である。FIG. 6 is a diagram showing an example of contents of interlock information.

【図7】 プログラム性能解析処理の動作を示すフロー
チャートである。
FIG. 7 is a flowchart showing the operation of program performance analysis processing.

【図8】 基本ブロック分割処理の動作を示すフローチ
ャートである。
FIG. 8 is a flowchart showing an operation of basic block division processing.

【図9】基本ブロック分割処理の動作を示すフローチャ
ートである。
FIG. 9 is a flowchart showing an operation of basic block division processing.

【図10】基本ブロックのサイクル数計算・インタロッ
ク発生回数集計処理の動作を示すフローチャートであ
る。
FIG. 10 is a flowchart showing the operation of a cycle number calculation / interlock occurrence frequency totaling process of a basic block.

【図11】実行時間計算処理の動作を示すフローチャー
トである。
FIG. 11 is a flowchart showing the operation of execution time calculation processing.

【図12】基本ブロック分割処理の実行後の命令列情報
テーブルの内容例を示す図である。
FIG. 12 is a diagram showing an example of contents of an instruction sequence information table after execution of basic block division processing.

【図13】サイクル数計算・インタロック発生回数集計
処理後の命令列情報テーブルの内容例を示す図である。
FIG. 13 is a diagram showing an example of the contents of an instruction sequence information table after the cycle number calculation / interlock occurrence number aggregation process.

【図14】実行回数情報を示す図である。FIG. 14 is a diagram showing execution count information.

【図15】実行時間とインタロック発生回数の表示例で
ある。
FIG. 15 is a display example of execution time and interlock occurrence frequency.

【図16】ループを含むソースプログラムの例である。FIG. 16 is an example of a source program including a loop.

【図17】実施例で扱う命令の種別とアセンブラでの記
述方法を示す図である。
FIG. 17 is a diagram showing the types of instructions handled in the example and the description method in the assembler.

【符号の説明】 4…表示装置、30…プログラム性能解析、31…基本
ブロック分割、32…サイクル数計算、33…インタロ
ック集計、34…実行時間計算、40…インタロック情
報、70…機械語命令列、80…実行回数情報。
[Explanation of Codes] 4 ... Display device, 30 ... Program performance analysis, 31 ... Basic block division, 32 ... Cycle number calculation, 33 ... Interlock aggregation, 34 ... Execution time calculation, 40 ... Interlock information, 70 ... Machine language Instruction string, 80 ... Execution count information.

Claims (7)

【特許請求の範囲】[Claims] 【請求項1】入力した機械語命令列を、連続した部分命
令列である基本ブロックに分割する分割ステップと、 該基本ブロックの実行回数を入力する実行回数入力ステ
ップと、 パイプラインインタロックを考慮して、該基本ブロック
の実行サイクル数を求めるサイクル数計算ステップと、 該基本ブロックの実行サイクル数と実行回数とを用い
て、該基本ブロックの実行時間を算出する実行時間算出
ステップとを備えたことを特徴とするプログラム性能解
析方法。
1. A division step of dividing an input machine language instruction sequence into basic blocks which are continuous partial instruction sequences, an execution number input step of inputting the number of times of execution of the basic block, and a pipeline interlock. Then, a cycle number calculation step for obtaining the number of execution cycles of the basic block, and an execution time calculation step for calculating the execution time of the basic block using the number of execution cycles and the number of executions of the basic block are provided. A program performance analysis method characterized by the above.
【請求項2】請求項1に記載のプログラム性能解析方法
において、前記分割ステップは、前記機械語命令列の機
械語命令を先頭から1つずつ読み込み、読み込んだ命令
が分岐命令であるときその分岐命令と次の命令との間で
分割し、あるいは読み込んだ命令がラベルであるときそ
のラベルの前で分割することにより、前記機械語命令列
を基本ブロックに分割することを特徴とするプログラム
性能解析方法。
2. The program performance analysis method according to claim 1, wherein in the dividing step, the machine language instructions of the machine language instruction sequence are read one by one from the beginning, and when the read instruction is a branch instruction, the branch is executed. A program performance analysis characterized in that the machine language instruction sequence is divided into basic blocks by dividing between an instruction and the next instruction, or when the read instruction is a label, it is divided before the label. Method.
【請求項3】請求項1に記載のプログラム性能解析方法
において、前記機械語命令列は、ソースプログラムをコ
ンパイルして作成したものであることを特徴とするプロ
グラム性能解析方法。
3. The program performance analysis method according to claim 1, wherein the machine language instruction sequence is created by compiling a source program.
【請求項4】請求項3に記載のプログラム性能解析方法
において、さらに、 前記ソースプログラムをコンパイルする際に、基本ブロ
ックごとに実行回数を計測するためのオブジェクトコー
ドを付加したロードモジュールを生成して出力する実行
回数出力コード生成処理ステップと、 該ロードモジュールを実行し、各基本ブロックの実行回
数を計測して、前記実行回数入力ステップに出力する実
行回数出力処理ステップとを備えたことを特徴とするプ
ログラム性能解析方法。
4. The program performance analysis method according to claim 3, further comprising: when compiling the source program, generating a load module added with an object code for measuring an execution count for each basic block. An execution count output code generation processing step for outputting, and an execution count output processing step for executing the load module, measuring the execution count of each basic block, and outputting to the execution count input step. Program performance analysis method.
【請求項5】請求項1記載のプログラム性能解析方法に
おいて、前記サイクル数計算ステップは、連続した命令
列の実行サイクル数算出時にパイプラインインタロック
の発生する命令列の並びがある場合、インタロックの種
別ごとの発生回数を集計する処理をも行うことを特徴と
するプログラム性能解析方法。
5. The program performance analysis method according to claim 1, wherein the step of calculating the number of cycles includes an interlock when an instruction string in which pipeline interlock occurs is generated when calculating the number of execution cycles of consecutive instruction strings. A program performance analysis method characterized by also performing a process of totaling the number of occurrences of each type.
【請求項6】請求項3において、前記ソースプログラム
がループを含む場合に、ループを構成する基本ブロック
の各実行サイクル数と実行回数とからループの実行時間
を算出することを特徴とするプログラム性能解析方法。
6. The program performance according to claim 3, wherein when the source program includes a loop, the execution time of the loop is calculated from the number of execution cycles and the number of executions of basic blocks forming the loop. analysis method.
【請求項7】請求項1から6のいずれかに記載のプログ
ラム性能解析方法において、さらに、プログラムの性能
解析結果を表示するステップを備えたことを特徴とする
プログラム性能解析方法。
7. The program performance analysis method according to claim 1, further comprising a step of displaying a performance analysis result of the program.
JP5191730A 1993-07-05 1993-07-05 Program performance analyzing method Pending JPH0721061A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5191730A JPH0721061A (en) 1993-07-05 1993-07-05 Program performance analyzing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5191730A JPH0721061A (en) 1993-07-05 1993-07-05 Program performance analyzing method

Publications (1)

Publication Number Publication Date
JPH0721061A true JPH0721061A (en) 1995-01-24

Family

ID=16279542

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5191730A Pending JPH0721061A (en) 1993-07-05 1993-07-05 Program performance analyzing method

Country Status (1)

Country Link
JP (1) JPH0721061A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009093310A (en) * 2007-10-05 2009-04-30 Hitachi Ltd Apparatus and method for creating execution code and method of managing source code
US9880841B2 (en) 2014-01-07 2018-01-30 Fujitsu Limited Computation method for computing performance value when processor executes code, computation apparatus for computing performance value when processor executes code, and computer readable storage medium storing computation program for computing performance value when processor executes code
US10564992B2 (en) 2013-04-18 2020-02-18 Fujitsu Limited Simulation apparatus and storage medium

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009093310A (en) * 2007-10-05 2009-04-30 Hitachi Ltd Apparatus and method for creating execution code and method of managing source code
US10564992B2 (en) 2013-04-18 2020-02-18 Fujitsu Limited Simulation apparatus and storage medium
US9880841B2 (en) 2014-01-07 2018-01-30 Fujitsu Limited Computation method for computing performance value when processor executes code, computation apparatus for computing performance value when processor executes code, and computer readable storage medium storing computation program for computing performance value when processor executes code

Similar Documents

Publication Publication Date Title
Healy et al. Integrating the timing analysis of pipelining and instruction caching
US5854924A (en) Static debugging tool and method
US5615357A (en) System and method for verifying processor performance
US5317743A (en) System for compiling iterated loops based on the possibility of parallel execution
US5838975A (en) Method for testing and debugging computer programs
US20030204819A1 (en) Method of generating development environment for developing system LSI and medium which stores program therefor
US6148427A (en) Method and apparatus for test data generation
US6611779B2 (en) Automatic test vector generation method, test method making use of the test vectors as automatically generated, chip manufacturing method and automatic test vector generation program
US4843545A (en) Compile method using copy propagation of a variable
Harmon et al. A retargetable technique for predicting execution time of code segments
US5592674A (en) Automatic verification of external interrupts
JPH0721061A (en) Program performance analyzing method
US5708594A (en) Automatic instruction string generation method and device for verifying processor operation model and logic
US7885806B2 (en) Simulation method and simulation system of instruction scheduling
CN112631925A (en) Method for detecting single variable atom violation defect
US4882691A (en) Caching argument values in pattern-matching networks
US6430676B1 (en) Method and system for calculating instruction lookahead
US20050050524A1 (en) Generating software test information
Goossens et al. PerPI: A tool to measure instruction level parallelism
EP3997593B1 (en) A streaming compiler for automatic adjoint differentiation
Paulin et al. Method for Constructing the Model of Computing Processbased on Petri net
US20140173572A1 (en) Constraint derivation in context following for use with object code insertion
US20220308885A1 (en) Method and electronic device for monitoring executable code adapted to be executed on a computer platform, and computer program implementing such a method
Cheng The task dependence net in Ada software development
CN114153750B (en) Code checking method and device, code compiling method and electronic equipment