JPH06259262A - 分岐確率を設定するコンパイラの処理方法および処理装置 - Google Patents
分岐確率を設定するコンパイラの処理方法および処理装置Info
- Publication number
- JPH06259262A JPH06259262A JP5045609A JP4560993A JPH06259262A JP H06259262 A JPH06259262 A JP H06259262A JP 5045609 A JP5045609 A JP 5045609A JP 4560993 A JP4560993 A JP 4560993A JP H06259262 A JPH06259262 A JP H06259262A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- compiler
- flow graph
- true rate
- condition
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims description 29
- 239000011159 matrix material Substances 0.000 claims description 38
- 238000005457 optimization Methods 0.000 claims description 19
- 238000003672 processing method Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 6
- 239000002131 composite material Substances 0.000 abstract description 3
- 150000001875 compounds Chemical class 0.000 description 23
- 238000010586 diagram Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】前もって予想した,または実測したプログラム
の実行時の分岐確率情報をコンパイル時に反映してスケ
ジューリングを行うための分岐確率を設定するコンパイ
ラの処理方法および処理装置に関し,高効率で動作する
プログラムの翻訳を可能とするため,プログラム中の各
命令の実行頻度を精度よく予測できるようにすることを
目的とする。 【構成】フローグラフ作成処理11により,複数の条件判
断を含む一つの分岐を表す分岐文に対して,その分岐文
を個々の条件判断に分解したフローグラフ13a を作成
し,真率決定/設定処理12により,フローグラフ13a に
基づいて,分岐文に対して指定された真率を満足するよ
うに,個々の条件判断の真率を決定する。
の実行時の分岐確率情報をコンパイル時に反映してスケ
ジューリングを行うための分岐確率を設定するコンパイ
ラの処理方法および処理装置に関し,高効率で動作する
プログラムの翻訳を可能とするため,プログラム中の各
命令の実行頻度を精度よく予測できるようにすることを
目的とする。 【構成】フローグラフ作成処理11により,複数の条件判
断を含む一つの分岐を表す分岐文に対して,その分岐文
を個々の条件判断に分解したフローグラフ13a を作成
し,真率決定/設定処理12により,フローグラフ13a に
基づいて,分岐文に対して指定された真率を満足するよ
うに,個々の条件判断の真率を決定する。
Description
【0001】
【産業上の利用分野】本発明は,前もって予想した,ま
たは実測したプログラムの実行時の分岐確率情報をコン
パイル時に反映してスケジューリングを行うためのコン
パイラの処理技術に係り,特に複数の条件判断を含む分
岐文に対する分岐確率を設定するコンパイラの処理方法
および処理装置に関する。
たは実測したプログラムの実行時の分岐確率情報をコン
パイル時に反映してスケジューリングを行うためのコン
パイラの処理技術に係り,特に複数の条件判断を含む分
岐文に対する分岐確率を設定するコンパイラの処理方法
および処理装置に関する。
【0002】近年のコンピュータシステムに対する高速
化の要求に伴い,高効率で動作するようにプログラムを
翻訳するコンパイラが要求されている。そのための有力
な手法として,例えばトレーススケジューリングと呼ば
れる方法が提案されている(Bulldog: A Compiler for
VLIW Architecture, J.R.Ellis著,the MIT Press,198
6)。この手法は,実行頻度の高いパスを見つけ,そのパ
スを最も効率よく実行できるように命令を並び換えるス
ケジューリングを行うものである。実行頻度の高い命令
を検出することにより,最適化を図るこの種の方法で
は,実行頻度を推定するためのループの繰り返し数や条
件分岐文(以下,if文という)での真率の情報が非常
に重要になってくる。
化の要求に伴い,高効率で動作するようにプログラムを
翻訳するコンパイラが要求されている。そのための有力
な手法として,例えばトレーススケジューリングと呼ば
れる方法が提案されている(Bulldog: A Compiler for
VLIW Architecture, J.R.Ellis著,the MIT Press,198
6)。この手法は,実行頻度の高いパスを見つけ,そのパ
スを最も効率よく実行できるように命令を並び換えるス
ケジューリングを行うものである。実行頻度の高い命令
を検出することにより,最適化を図るこの種の方法で
は,実行頻度を推定するためのループの繰り返し数や条
件分岐文(以下,if文という)での真率の情報が非常
に重要になってくる。
【0003】また,実行頻度の高いパス側に優先的にレ
ジスタ等のリソースを割り当てるような場合にも,実行
頻度の高いパスを検出するために,分岐文/分岐命令の
分岐確率に関する情報が必要になる。他に,分岐命令に
おいては,一般に分岐するほうが分岐しない場合よりも
実行コストが高くなるので,分岐しない側を分岐確率の
高い方にした方が実行時間が短くなる。そのため,分岐
確率に関する情報を利用することが必要となる。
ジスタ等のリソースを割り当てるような場合にも,実行
頻度の高いパスを検出するために,分岐文/分岐命令の
分岐確率に関する情報が必要になる。他に,分岐命令に
おいては,一般に分岐するほうが分岐しない場合よりも
実行コストが高くなるので,分岐しない側を分岐確率の
高い方にした方が実行時間が短くなる。そのため,分岐
確率に関する情報を利用することが必要となる。
【0004】さらに,コンパイラの最適化にかける時間
を短縮するような場合に,実行頻度の低いパスの最適化
にかけるレベルを下げることが考えられるが,このよう
な場合にも実行頻度を正しく推定するための情報が必要
となる。
を短縮するような場合に,実行頻度の低いパスの最適化
にかけるレベルを下げることが考えられるが,このよう
な場合にも実行頻度を正しく推定するための情報が必要
となる。
【0005】
【従来の技術】図11は,従来技術と本発明の課題の説
明図である。従来のコンパイラにおいては,ループの繰
り返し数は,ソースプログラム上に明示されることが多
い。また,従来からループの繰り返し数を利用した最適
化が行われており,ループの繰り返し数の情報はコンパ
イル時の内部情報として管理されている。
明図である。従来のコンパイラにおいては,ループの繰
り返し数は,ソースプログラム上に明示されることが多
い。また,従来からループの繰り返し数を利用した最適
化が行われており,ループの繰り返し数の情報はコンパ
イル時の内部情報として管理されている。
【0006】一方,真率の情報は,通常ソースプログラ
ム上に明示されることがないので,分岐文に対してはコ
ンパイル時に出現する都度,その分岐構造を識別して処
理を行うことが必要となる。
ム上に明示されることがないので,分岐文に対してはコ
ンパイル時に出現する都度,その分岐構造を識別して処
理を行うことが必要となる。
【0007】図11(イ)に示すプログラム10は,C
言語で記述されたプログラムであって,AまたはBまた
はCのいずれかが真であるときxxを実行し,そうでな
いときyyを実行し,その後にzzを実行するプログラ
ムである。この例のように,一つの分岐を表す文の中に
複数の条件判断が含まれるif文(これを複合if文と
いう)に対して,次のような2通りの処理方法がある。
言語で記述されたプログラムであって,AまたはBまた
はCのいずれかが真であるときxxを実行し,そうでな
いときyyを実行し,その後にzzを実行するプログラ
ムである。この例のように,一つの分岐を表す文の中に
複数の条件判断が含まれるif文(これを複合if文と
いう)に対して,次のような2通りの処理方法がある。
【0008】その一つは,図11(ロ)に示すように,
複数からなる条件A,B,Cを計算し,その最終値の如
何によって処理を行うものである。このような処理は,
分岐判断が一箇所で行われるため,then節またはe
lse節が実行される確率が一箇所で行われる分岐命令
の分岐確率と一致する。したがって,複合if文の実行
確率を設定することが容易に可能であり,従来はこの処
理が採用されていた(例えば,“条件付命令の実行時命
令選択方式”,特公平1−42019号公報)。
複数からなる条件A,B,Cを計算し,その最終値の如
何によって処理を行うものである。このような処理は,
分岐判断が一箇所で行われるため,then節またはe
lse節が実行される確率が一箇所で行われる分岐命令
の分岐確率と一致する。したがって,複合if文の実行
確率を設定することが容易に可能であり,従来はこの処
理が採用されていた(例えば,“条件付命令の実行時命
令選択方式”,特公平1−42019号公報)。
【0009】もう一つの処理方法は,図11(ハ)に示
すように,複数からなる条件判断を個々の分岐に分解し
て処理を行うものである。これは,分岐の判断を一箇所
で行うのではなく個々の条件ごとに行うので,Aが真で
あれば直ちにthen節のxxを実行し,B以下の判定
は実行する必要がないので,図11(ロ)に示す処理に
比べ,実行時間が短くて済むという利点を持っている。
すように,複数からなる条件判断を個々の分岐に分解し
て処理を行うものである。これは,分岐の判断を一箇所
で行うのではなく個々の条件ごとに行うので,Aが真で
あれば直ちにthen節のxxを実行し,B以下の判定
は実行する必要がないので,図11(ロ)に示す処理に
比べ,実行時間が短くて済むという利点を持っている。
【0010】
【発明が解決しようとする課題】したがって,より高性
能な命令実行のスケジューリングを行うためには,図1
1(ハ)に示すような処理をとり,かつ複合if文の真
率を設定するための方法が必要となる。
能な命令実行のスケジューリングを行うためには,図1
1(ハ)に示すような処理をとり,かつ複合if文の真
率を設定するための方法が必要となる。
【0011】本発明は,複合if文に対して指定された
真率または複合if文における個々の条件判断に対して
指定された真率に基づき,個々の条件判断における分岐
に関係する真率を各々設定し,より高性能なプログラム
を生成するための精度のよい実行頻度の予測を可能とす
ることを目的とする。
真率または複合if文における個々の条件判断に対して
指定された真率に基づき,個々の条件判断における分岐
に関係する真率を各々設定し,より高性能なプログラム
を生成するための精度のよい実行頻度の予測を可能とす
ることを目的とする。
【0012】
【課題を解決するための手段】図1は,本発明の原理説
明図である。図中,10は翻訳(コンパイル)対象のプ
ログラム,11はフローグラフ作成処理,12は真率決
定/設定処理,13a,13bはフローグラフを表す。
明図である。図中,10は翻訳(コンパイル)対象のプ
ログラム,11はフローグラフ作成処理,12は真率決
定/設定処理,13a,13bはフローグラフを表す。
【0013】プログラム10において,文1は最適化指
示文,文2は複合if文である。文3のxxは複合if
文の条件が真のときに実行される命令文であり,これを
then節という。yyは複合if文の条件が偽のとき
に実行される命令文であり,これをelse節という。
示文,文2は複合if文である。文3のxxは複合if
文の条件が真のときに実行される命令文であり,これを
then節という。yyは複合if文の条件が偽のとき
に実行される命令文であり,これをelse節という。
【0014】文1は,コンパイラに対して最適化などの
ための実行時分岐確率情報を与えるものであり,この例
では,複合if文2のthen節文3が実行される確率
(真率)が40%であることを表している。
ための実行時分岐確率情報を与えるものであり,この例
では,複合if文2のthen節文3が実行される確率
(真率)が40%であることを表している。
【0015】フローグラフ作成処理11では,複合if
文2における複数の条件A,B,C,D,Eをまとめて
扱うのではなく,個々の条件判断に分解し,各条件判断
の真/偽に応じた制御フローを示すフローグラフ13a
を作成する。次に,真率決定/設定処理12により,作
成したフローグラフ13aに基づいて,複合if文2に
対して文1により指定された全体の真率(40%)を満
足するように,フローグラフ13bにおいて数値で示す
ような各パスの実行回数に相当する値を計算し,個々の
条件判断の真率をそれぞれのノード(ブロック)に割り
振る処理を行う。
文2における複数の条件A,B,C,D,Eをまとめて
扱うのではなく,個々の条件判断に分解し,各条件判断
の真/偽に応じた制御フローを示すフローグラフ13a
を作成する。次に,真率決定/設定処理12により,作
成したフローグラフ13aに基づいて,複合if文2に
対して文1により指定された全体の真率(40%)を満
足するように,フローグラフ13bにおいて数値で示す
ような各パスの実行回数に相当する値を計算し,個々の
条件判断の真率をそれぞれのノード(ブロック)に割り
振る処理を行う。
【0016】例えば,文1において,Aの真率がa%,
Bの真率がb%,…,Eの真率がe%というように,複
合if文2の全体に対してでなく,個々の条件判断に対
する真率が指定された場合には,フローグラフ作成処理
11によりフローグラフ13aを作成した後,真率決定
/設定処理12によって,指定された真率を満足するよ
うに,フローグラフ13aにおける個々の条件判断の真
率を順次設定する。
Bの真率がb%,…,Eの真率がe%というように,複
合if文2の全体に対してでなく,個々の条件判断に対
する真率が指定された場合には,フローグラフ作成処理
11によりフローグラフ13aを作成した後,真率決定
/設定処理12によって,指定された真率を満足するよ
うに,フローグラフ13aにおける個々の条件判断の真
率を順次設定する。
【0017】最適化オプションの指定によっては,この
ようにして設定された分岐確率に基づいて実行頻度が低
いと判断されたパスの最適化レベルを低減させることに
より,プログラムの翻訳時間を短縮させることができ
る。
ようにして設定された分岐確率に基づいて実行頻度が低
いと判断されたパスの最適化レベルを低減させることに
より,プログラムの翻訳時間を短縮させることができ
る。
【0018】また,本発明による分岐確率を設定するコ
ンパイラの処理装置は,複数の条件判断を含む一つの分
岐を表す分岐文を,個々の条件判断に分解して基本ブロ
ック単位にまとめ,フローグラフ13aを作成するため
の情報を収集する情報収集フェーズ処理手段と,収集し
た情報をもとに,各基本ブロックの先行/後続に関する
接続関係を示すフローグラフ13aを表す結合マトリク
スを作成する結合マトリクス作成フェーズ処理手段と,
作成された結合マトリクスにおいて,指定された真率を
もとに後続ブロックから先行ブロックへと順次各ブロッ
クへのパス数に応じた実行回数の割合を計算し,個々の
条件判断での真率を求める結合マトリクス計算フェーズ
処理手段とを有し,フローグラフにおける個々の条件分
岐に対し分岐確率を設定するように構成される。
ンパイラの処理装置は,複数の条件判断を含む一つの分
岐を表す分岐文を,個々の条件判断に分解して基本ブロ
ック単位にまとめ,フローグラフ13aを作成するため
の情報を収集する情報収集フェーズ処理手段と,収集し
た情報をもとに,各基本ブロックの先行/後続に関する
接続関係を示すフローグラフ13aを表す結合マトリク
スを作成する結合マトリクス作成フェーズ処理手段と,
作成された結合マトリクスにおいて,指定された真率を
もとに後続ブロックから先行ブロックへと順次各ブロッ
クへのパス数に応じた実行回数の割合を計算し,個々の
条件判断での真率を求める結合マトリクス計算フェーズ
処理手段とを有し,フローグラフにおける個々の条件分
岐に対し分岐確率を設定するように構成される。
【0019】
【作用】フローグラフ作成処理11により,図1に示す
ような複数の条件判断を含む一つの複合if文2を,個
々の条件判断に分解し,then節,else節および
個々の分岐判断を表すブロックをノードとするフローグ
ラフ13aを作成する。これに対して,真率決定/設定
処理12により,最適化指示文1により指定された真率
を満足するように,個々の真率を決定する。
ような複数の条件判断を含む一つの複合if文2を,個
々の条件判断に分解し,then節,else節および
個々の分岐判断を表すブロックをノードとするフローグ
ラフ13aを作成する。これに対して,真率決定/設定
処理12により,最適化指示文1により指定された真率
を満足するように,個々の真率を決定する。
【0020】例えば,複合if文2における条件判断の
全体に対して真率が指定された場合には,then節,
else節側から実行回数の割合を計算していき,複合
if文2における個々の条件判断に対して真率が指定さ
れた場合には,フローグラフ13aの各ノードに対し順
次,真率を割り振るようにする。
全体に対して真率が指定された場合には,then節,
else節側から実行回数の割合を計算していき,複合
if文2における個々の条件判断に対して真率が指定さ
れた場合には,フローグラフ13aの各ノードに対し順
次,真率を割り振るようにする。
【0021】フローグラフ13aは,処理装置内部では
条件判断を示す各ノードの先行・後続関係を示す結合マ
トリクスとして表すことができ,これにより各ブロック
の実行回数の割合から真率を計算することが可能であ
る。
条件判断を示す各ノードの先行・後続関係を示す結合マ
トリクスとして表すことができ,これにより各ブロック
の実行回数の割合から真率を計算することが可能であ
る。
【0022】以上のように,複数の条件判断を含む一つ
の分岐文における個々の条件判断に対して真率が決定さ
れることにより,コンパイラにおけるきめ細かな最適化
スケジューリングなどができるようになる。例えば,通
常のコンパイラでは,個々の条件判断の内のあるものが
常に真または偽であることにより,その条件判断を削除
するというような最適化が行われるが,本発明では,こ
のような最適化により分岐構造が変化・削除されても,
変化後のフローグラフに対して個々の真率を決定できる
ので,複合if文に対して,常に指定された真率を反映
することができる。
の分岐文における個々の条件判断に対して真率が決定さ
れることにより,コンパイラにおけるきめ細かな最適化
スケジューリングなどができるようになる。例えば,通
常のコンパイラでは,個々の条件判断の内のあるものが
常に真または偽であることにより,その条件判断を削除
するというような最適化が行われるが,本発明では,こ
のような最適化により分岐構造が変化・削除されても,
変化後のフローグラフに対して個々の真率を決定できる
ので,複合if文に対して,常に指定された真率を反映
することができる。
【0023】また,従来,特定のプログラムに対しコン
パイルの最適化レベルを変えるということは行われてい
たが,一つのプログラムの中の特定のパスだけ,その実
行頻度の高低から最適化レベルを変えるようなことは行
われていなかった。最適化を行うためには,プログラム
の制御の流れの解析,データの流れの解析等が必要であ
り,高いレベルの最適化を行おうとすればするほど,よ
り詳細な解析が必要になり,結果的にその処理に要する
時間が長くなる。
パイルの最適化レベルを変えるということは行われてい
たが,一つのプログラムの中の特定のパスだけ,その実
行頻度の高低から最適化レベルを変えるようなことは行
われていなかった。最適化を行うためには,プログラム
の制御の流れの解析,データの流れの解析等が必要であ
り,高いレベルの最適化を行おうとすればするほど,よ
り詳細な解析が必要になり,結果的にその処理に要する
時間が長くなる。
【0024】しかし,もともと実行頻度が低いパスは実
行されることが少ないので,最適化レベルが低くても,
プログラム全体の実行時間には寄与するところは小さい
ので,プログラムの実行時間よりもプログラムの翻訳時
間が短いほうがよいとする場合がある。したがって,設
定された分岐確率に基づいて実行頻度が低いと判断され
たパスの最適化レベルを低減させることにより,あまり
有益でない最適化処理に要する時間を短縮することがで
きる。
行されることが少ないので,最適化レベルが低くても,
プログラム全体の実行時間には寄与するところは小さい
ので,プログラムの実行時間よりもプログラムの翻訳時
間が短いほうがよいとする場合がある。したがって,設
定された分岐確率に基づいて実行頻度が低いと判断され
たパスの最適化レベルを低減させることにより,あまり
有益でない最適化処理に要する時間を短縮することがで
きる。
【0025】
【実施例】例えば,図1に示すプログラム10のよう
に,複合if文2全体に対して真率(この例では40
%)が指定された場合の処理は,以下のとおりである。
に,複合if文2全体に対して真率(この例では40
%)が指定された場合の処理は,以下のとおりである。
【0026】(1) 複合if文2を個々の分岐に分解す
る。このとき,then節,else節及び個々の分岐
にマークを付ける。 (2) マークが付いているものに対して,制御のフローグ
ラフを作成する。
る。このとき,then節,else節及び個々の分岐
にマークを付ける。 (2) マークが付いているものに対して,制御のフローグ
ラフを作成する。
【0027】(3) then節,else節に実行回数を
設定する。この例では,xxの実行回数が40,yyの
実行回数が60となる。 (4) then節,else節にくるパスの数を調べる。
設定する。この例では,xxの実行回数が40,yyの
実行回数が60となる。 (4) then節,else節にくるパスの数を調べる。
【0028】この例では,xxに2本,yyに3本であ
る。 (5) 実行回数をパス数で割り,その値を各々のパスの実
行回数とする。この例では,次のようになる。
る。 (5) 実行回数をパス数で割り,その値を各々のパスの実
行回数とする。この例では,次のようになる。
【0029】D→xxのパスの実行回数は,40/2, E→xxのパスの実行回数は,40/2, B→yyのパスの実行回数は,60/3, C→yyのパスの実行回数は,60/3, E→yyのパスの実行回数は,60/3。
【0030】(6) 分岐パスの総実行回数が決定したな
ら,その総実行回数をその分岐の実行回数とする。この
例の場合, E→xxのパスの実行回数は20, E→yyのパスの実行回数は20, である。したがって,条件分岐E(すなわち,D→Eの
パス)の実行回数は,20+20=40(回)となる。
ら,その総実行回数をその分岐の実行回数とする。この
例の場合, E→xxのパスの実行回数は20, E→yyのパスの実行回数は20, である。したがって,条件分岐E(すなわち,D→Eの
パス)の実行回数は,20+20=40(回)となる。
【0031】(7) 上記処理(5) と(6) とを繰り返し,す
べてのパスの実行回数を求める。この結果は図1に示す
フローグラフ13bのようになる。 (8) 各々のパスの実行回数から各々の真率を求める。例
えば, Aの真率は,40/100(=0.4), Bの真率は,40/60(=0.66…)となる。
べてのパスの実行回数を求める。この結果は図1に示す
フローグラフ13bのようになる。 (8) 各々のパスの実行回数から各々の真率を求める。例
えば, Aの真率は,40/100(=0.4), Bの真率は,40/60(=0.66…)となる。
【0032】ここで,A,B,…,E及びxx,yy
は,各々,連続した文の列からなり,制御は先頭の文に
与えられ,その後,途中で停止したり,途中から分岐し
たりしないで,最後の文から制御が離れる基本ブロック
である。
は,各々,連続した文の列からなり,制御は先頭の文に
与えられ,その後,途中で停止したり,途中から分岐し
たりしないで,最後の文から制御が離れる基本ブロック
である。
【0033】図2にその基本ブロックのデータ構造を示
す。通常のコンパイラでは,基本ブロックは,図2に示
すように,親の基本ブロックを示すリストへのポイン
タ,子の基本ブロックを示すリストへのポインタ,
ブロック先頭の命令を示すポインタ,ブロック最後の
命令を示すポインタ,属性領域,というデータ構造を
持つ。したがって,フローグラフを作成するために,t
hen節もしくはelse節,または複合if文内の条
件判断であることを示すマークとして,基本ブロックの
データ構造の属性領域に属性を付けてもよいし,基本ブ
ロック内に,then節もしくはelse節,または複
合if文内の条件判断であることを示す擬似命令を挿入
するようにしてもよい。このようにすれば,各々のブロ
ックがthen節,else節または複合if文内の条
件判断のいずれであるかを決定することができる。ここ
で,親または子の基本ブロックを示すリストとは,複数
個の親または子の基本ブロックをリスト構造のデータ構
造で保持するためのものである。
す。通常のコンパイラでは,基本ブロックは,図2に示
すように,親の基本ブロックを示すリストへのポイン
タ,子の基本ブロックを示すリストへのポインタ,
ブロック先頭の命令を示すポインタ,ブロック最後の
命令を示すポインタ,属性領域,というデータ構造を
持つ。したがって,フローグラフを作成するために,t
hen節もしくはelse節,または複合if文内の条
件判断であることを示すマークとして,基本ブロックの
データ構造の属性領域に属性を付けてもよいし,基本ブ
ロック内に,then節もしくはelse節,または複
合if文内の条件判断であることを示す擬似命令を挿入
するようにしてもよい。このようにすれば,各々のブロ
ックがthen節,else節または複合if文内の条
件判断のいずれであるかを決定することができる。ここ
で,親または子の基本ブロックを示すリストとは,複数
個の親または子の基本ブロックをリスト構造のデータ構
造で保持するためのものである。
【0034】また,図3に示すように,then節また
はelse節を示す擬似ブロック(Dummy−tru
e,Dummy−false)を挿入しても,同様に各
々のブロックがthen節またはelse節のいずれで
あるかを決定することができる。
はelse節を示す擬似ブロック(Dummy−tru
e,Dummy−false)を挿入しても,同様に各
々のブロックがthen節またはelse節のいずれで
あるかを決定することができる。
【0035】図4は,複合if文内の個々の条件判断に
対して,個々に真率が指定された場合のプログラムの例
を示す。このときの設定処理は,以下のとおりである。 (1) 複合if文を個々の分岐に分解する。このとき,個
々の分岐にマークを付ける。
対して,個々に真率が指定された場合のプログラムの例
を示す。このときの設定処理は,以下のとおりである。 (1) 複合if文を個々の分岐に分解する。このとき,個
々の分岐にマークを付ける。
【0036】(2) 個々の分岐に,指定された各々の真率
を設定する。図4に示すプログラム10では,Aの条件
判断の真率として0.4,Bの条件判断の真率として
0.2,Cの条件判断の真率として0.9,Dの条件判
断の真率として0.8,Eの条件判断の真率として0.
4が設定されることになる。
を設定する。図4に示すプログラム10では,Aの条件
判断の真率として0.4,Bの条件判断の真率として
0.2,Cの条件判断の真率として0.9,Dの条件判
断の真率として0.8,Eの条件判断の真率として0.
4が設定されることになる。
【0037】なお,if文内の条件判断の数が一つの場
合は,この処理の特殊な場合と考えることができ,これ
に準じて容易に設定できることは言うまでもない。図5
は,本発明の他の実施例説明図である。
合は,この処理の特殊な場合と考えることができ,これ
に準じて容易に設定できることは言うまでもない。図5
は,本発明の他の実施例説明図である。
【0038】上述の実施例はelse節がある場合であ
るが,図5(イ)に示すプログラム10のように,el
se節がない場合でも同様に実施することができる。こ
の場合,zzが実行される確率は実際には100%であ
るが,真率を計算する際にはzzは60%の確率である
として計算する。これによって,図5(ロ)に示すフロ
ーグラフ13のように各パスの実行回数が計算され,各
条件判断の真率が求められる。
るが,図5(イ)に示すプログラム10のように,el
se節がない場合でも同様に実施することができる。こ
の場合,zzが実行される確率は実際には100%であ
るが,真率を計算する際にはzzは60%の確率である
として計算する。これによって,図5(ロ)に示すフロ
ーグラフ13のように各パスの実行回数が計算され,各
条件判断の真率が求められる。
【0039】また,図1に挙げたプログラム10の例に
おいて,最適化が行われるコンパイラでは,例えば常に
Dが真であることがわかれば,D及びEの条件判断を削
除し,制御フローを変えてしまう。しかし,本方法で
は,真率計算の直前に制御フローを調べるので,図5
(ハ)のフローグラフ13に示すように,正しく真率を
設定することができる。
おいて,最適化が行われるコンパイラでは,例えば常に
Dが真であることがわかれば,D及びEの条件判断を削
除し,制御フローを変えてしまう。しかし,本方法で
は,真率計算の直前に制御フローを調べるので,図5
(ハ)のフローグラフ13に示すように,正しく真率を
設定することができる。
【0040】図6に本発明の処理装置構成例を示す。図
6において,60はCPUおよびメモリを備えた処理装
置であって,コンパイラが動作するもの,61はフロー
グラフを作成するための情報を収集する情報収集フェー
ズ処理部,62はフローグラフを表す結合マトリクスを
作成する結合マトリクス作成フェーズ処理部,63は結
合マトリクスを用いて真率を計算する結合マトリクス計
算フェーズ処理部を表す。以下,これらの各部による処
理の詳細について,図7ないし図9に従って説明する。
図10は,結合マトリクスの例を示す。
6において,60はCPUおよびメモリを備えた処理装
置であって,コンパイラが動作するもの,61はフロー
グラフを作成するための情報を収集する情報収集フェー
ズ処理部,62はフローグラフを表す結合マトリクスを
作成する結合マトリクス作成フェーズ処理部,63は結
合マトリクスを用いて真率を計算する結合マトリクス計
算フェーズ処理部を表す。以下,これらの各部による処
理の詳細について,図7ないし図9に従って説明する。
図10は,結合マトリクスの例を示す。
【0041】情報処理フェーズでは,図7に示す処理
(a) 〜(e) を行う。 (a) 構文解析,意味解析などにより中間表現に変換され
たプログラムを,基本ブロック単位にまとめ,各先行ブ
ロックおよび後続ブロックに関する制御フロー情報をと
る。
(a) 〜(e) を行う。 (a) 構文解析,意味解析などにより中間表現に変換され
たプログラムを,基本ブロック単位にまとめ,各先行ブ
ロックおよび後続ブロックに関する制御フロー情報をと
る。
【0042】(b) 分岐確率が指定されたif文の条件に
含まれるブロックに識別マークをつける。識別マーク
は,同一のif文中の条件であることを示す印である。
識別マークは,何らかの識別が可能であるものであれば
よいので,実際には同一情報を示すアドレスやフラグで
もよい。
含まれるブロックに識別マークをつける。識別マーク
は,同一のif文中の条件であることを示す印である。
識別マークは,何らかの識別が可能であるものであれば
よいので,実際には同一情報を示すアドレスやフラグで
もよい。
【0043】(c) 次に,thenブロックにthen属
性をつけ,elseブロックにelse属性をつける。 (d) 最適化指示文などにより指定された真率を求める。
性をつけ,elseブロックにelse属性をつける。 (d) 最適化指示文などにより指定された真率を求める。
【0044】(e) if文毎に構造情報テーブルを作成す
る。構造情報テーブルは,次のような情報を持つテーブ
ルである。 ・真率 ・if文条件を構成するブロックとその数 ・thenブロック ・elseブロック 次に,図8に示す結合マトリクス作成フェーズに進む。
結合マトリクス作成フェーズでは,図8(イ)に示すよ
うに,情報収集フェーズで作成した構造情報テーブルを
参照し,マトリクスの行に,複合if文を構成する各ブ
ロック(n個)とthenブロックとelseブロック
をとり,列に,複合if文を構成する各ブロック(n
個)をとった結合マトリクスを作成する。
る。構造情報テーブルは,次のような情報を持つテーブ
ルである。 ・真率 ・if文条件を構成するブロックとその数 ・thenブロック ・elseブロック 次に,図8に示す結合マトリクス作成フェーズに進む。
結合マトリクス作成フェーズでは,図8(イ)に示すよ
うに,情報収集フェーズで作成した構造情報テーブルを
参照し,マトリクスの行に,複合if文を構成する各ブ
ロック(n個)とthenブロックとelseブロック
をとり,列に,複合if文を構成する各ブロック(n
個)をとった結合マトリクスを作成する。
【0045】例えば,図1に示すプログラム10から結
合マトリクスを作成すると,図10(イ)に示したよう
なものになる。マトリクスの要素は,初期状態として,
行ブロックが列ブロックと先行関係を示す属性(IP属
性)か,行ブロックが列ブロックと後続関係を示す属性
(IS属性)か,関係なし(DISCONNECT属
性,図10では×印で表す)か,いずれかの属性を持
つ。なお,後の結合マトリクス計算の過程で各要素は,
ブロックの実行回数に置き換えられる。
合マトリクスを作成すると,図10(イ)に示したよう
なものになる。マトリクスの要素は,初期状態として,
行ブロックが列ブロックと先行関係を示す属性(IP属
性)か,行ブロックが列ブロックと後続関係を示す属性
(IS属性)か,関係なし(DISCONNECT属
性,図10では×印で表す)か,いずれかの属性を持
つ。なお,後の結合マトリクス計算の過程で各要素は,
ブロックの実行回数に置き換えられる。
【0046】この結合マトリクス作成に関する処理の詳
細を,図10(ロ)に示す。 (a) 各ブロックの数をnとする。n+1番目のブロック
をthenブロック,n+2番目のブロックをelse
ブロックとする。
細を,図10(ロ)に示す。 (a) 各ブロックの数をnとする。n+1番目のブロック
をthenブロック,n+2番目のブロックをelse
ブロックとする。
【0047】(b) 行をn+2,列をnとする配列MAT
RIX(n+2,n)を作る。 (c) 初期値としてMATRIXのすべての要素をDIS
CONNECT属性とする。
RIX(n+2,n)を作る。 (c) 初期値としてMATRIXのすべての要素をDIS
CONNECT属性とする。
【0048】(d) iを1からn+2まで,jを1からn
まで,1ずつ増やしながら,次の処理を繰り返し行う。
ブロックiの先行ブロックがブロックjであるかどうか
を判定し,そうであれば,MATRIX(i,j)にI
P属性を設定するとともに,MATRIX(j,i)に
IS属性を設定する。すべての要素に対する処理が終了
したならば,結合マトリクス作成フェーズを終了する。
この結果,図10(イ)に示す結合マトリクスが得られ
ることになる。
まで,1ずつ増やしながら,次の処理を繰り返し行う。
ブロックiの先行ブロックがブロックjであるかどうか
を判定し,そうであれば,MATRIX(i,j)にI
P属性を設定するとともに,MATRIX(j,i)に
IS属性を設定する。すべての要素に対する処理が終了
したならば,結合マトリクス作成フェーズを終了する。
この結果,図10(イ)に示す結合マトリクスが得られ
ることになる。
【0049】次に,結合マトリクス計算フェーズに進
む。結合マトリクス計算フェーズでは,図9に示す処理
(a) 〜(g) を行う。 (a) thenブロック及びelseブロックへのパス
(path)の数を計算する。thenブロックへのパ
スの数をthen_path_cnt,elseブロッ
クへのパスの数をelse_path_cntとする。
む。結合マトリクス計算フェーズでは,図9に示す処理
(a) 〜(g) を行う。 (a) thenブロック及びelseブロックへのパス
(path)の数を計算する。thenブロックへのパ
スの数をthen_path_cnt,elseブロッ
クへのパスの数をelse_path_cntとする。
【0050】(b) MATRIX(n+1,i)=IP
(但し,i=1,…,n)である要素の値(実行回数)
を真率/then_path_cntとする。すなわ
ち,thenブロックへの各パスの実行回数を,the
nブロックの実行回数に相当する真率(%)をパス数で
割った値とする。
(但し,i=1,…,n)である要素の値(実行回数)
を真率/then_path_cntとする。すなわ
ち,thenブロックへの各パスの実行回数を,the
nブロックの実行回数に相当する真率(%)をパス数で
割った値とする。
【0051】(c) MATRIX(n+2,i)=IP
(但し,i=1,…,n)である要素の値(実行回数)
を(100−真率)/else_path_cntとす
る。すなわち,elseブロックへの各パスの実行回数
を,elseブロックの実行回数に相当する値をパス数
で割った値とする。以上の処理(b) ,(c) により,結合
マトリクスは,図10(ロ)に示すようになる。
(但し,i=1,…,n)である要素の値(実行回数)
を(100−真率)/else_path_cntとす
る。すなわち,elseブロックへの各パスの実行回数
を,elseブロックの実行回数に相当する値をパス数
で割った値とする。以上の処理(b) ,(c) により,結合
マトリクスは,図10(ロ)に示すようになる。
【0052】(d) 次に,結合マトリクスを列毎に見て,
IP属性がなく,IS属性がある列に対して,次の処理
〜を行う。 実行回数が格納されている要素に対し,その和su
m_cntを求める。例えば図10(ロ)に示すEの列
に対して,sum_cntは20+20=40となる。
IP属性がなく,IS属性がある列に対して,次の処理
〜を行う。 実行回数が格納されている要素に対し,その和su
m_cntを求める。例えば図10(ロ)に示すEの列
に対して,sum_cntは20+20=40となる。
【0053】 IS属性を持つ要素の数elemen
t_cntを求める。図10(ロ)に示すEの列では,
element_cntは1である。 IS属性を持つ要素の値(実行回数)をsum_c
nt/element_cntとする。この結果,図1
0(ロ)に示す(D,E)の要素に値40が設定される
ことになる。
t_cntを求める。図10(ロ)に示すEの列では,
element_cntは1である。 IS属性を持つ要素の値(実行回数)をsum_c
nt/element_cntとする。この結果,図1
0(ロ)に示す(D,E)の要素に値40が設定される
ことになる。
【0054】 この要素の対角要素にも処理で計算
した値を設定する。なお,この要素は必ずIP属性であ
る。 (e) 以上の処理(d) を,全てのIP/IS属性の要素が
なくなるまで繰り返す。この結果,図10(ハ)に示す
結合マトリクスが得られる。
した値を設定する。なお,この要素は必ずIP属性であ
る。 (e) 以上の処理(d) を,全てのIP/IS属性の要素が
なくなるまで繰り返す。この結果,図10(ハ)に示す
結合マトリクスが得られる。
【0055】(f) 元々IP属性がついていた結合マトリ
クスの要素の値だけを残し,IS属性がついていた要素
の値は消去する。この結果,図10(ニ)に示す結合マ
トリクスが得られる。この結合マトリクスは,図1に示
すフローグラフ13bに相当する。
クスの要素の値だけを残し,IS属性がついていた要素
の値は消去する。この結果,図10(ニ)に示す結合マ
トリクスが得られる。この結合マトリクスは,図1に示
すフローグラフ13bに相当する。
【0056】(g) 各列毎の要素は,各ISへの実行頻度
を示すので,これを百分率に変換し,個々の条件での分
岐確率を求める。
を示すので,これを百分率に変換し,個々の条件での分
岐確率を求める。
【0057】
【発明の効果】以上説明したように,本発明によれば,
一つの分岐を表す文の中に一つ以上の条件判断が含まれ
る分岐文に対して,個々の条件判断に分解して,個々の
条件判断に対して真率を設定することにより,前もって
予想した,または実測したプログラムの実行時の分岐確
率情報をコンパイル時に設定できるので,コンパイル時
にプログラム中の各命令の実行頻度を精度よく予測する
ことができ,トレーススケジューリングのような各命令
の実行頻度に基づいてスケジューリングを行う手法に寄
与することができる。したがって,高効率で動作するよ
うにプログラムを翻訳するコンパイラの性能向上に寄与
するところが大きい。
一つの分岐を表す文の中に一つ以上の条件判断が含まれ
る分岐文に対して,個々の条件判断に分解して,個々の
条件判断に対して真率を設定することにより,前もって
予想した,または実測したプログラムの実行時の分岐確
率情報をコンパイル時に設定できるので,コンパイル時
にプログラム中の各命令の実行頻度を精度よく予測する
ことができ,トレーススケジューリングのような各命令
の実行頻度に基づいてスケジューリングを行う手法に寄
与することができる。したがって,高効率で動作するよ
うにプログラムを翻訳するコンパイラの性能向上に寄与
するところが大きい。
【図1】本発明の原理説明図である。
【図2】基本ブロックのデータ構造説明図である。
【図3】擬似ブロック挿入例説明図である。
【図4】本発明の実施例説明図である。
【図5】本発明の他の実施例説明図である。
【図6】本発明の処理装置構成例を示す図である。
【図7】本発明の実施例による情報収集フェーズの処理
フローチャートである。
フローチャートである。
【図8】本発明の実施例による結合マトリクス作成フェ
ーズの処理フローチャートである。
ーズの処理フローチャートである。
【図9】本発明の実施例による結合マトリクス計算フェ
ーズの処理フローチャートである。
ーズの処理フローチャートである。
【図10】結合マトリクスの例を示す図である。
【図11】従来技術と本発明の課題の説明図である。
10 プログラム 11 フローグラフ作成処理 12 真率決定/設定処理 13a,13b フローグラフ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 松山 学 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内
Claims (4)
- 【請求項1】 プログラム実行時の分岐確率情報に基づ
いてプログラムの翻訳処理を行うコンパイラの処理方法
において,複数の条件判断を含む一つの分岐を表す分岐
文に対して,その分岐文を個々の条件判断に分解したフ
ローグラフ(13a) を作成する処理過程(11)と,作成した
フローグラフに基づいて,前記分岐文全体に対して指定
された真率を満足するように,フローグラフにおける個
々の条件判断の真率を決定する処理過程(12)とを備えた
ことを特徴とする分岐確率を設定するコンパイラの処理
方法。 - 【請求項2】 プログラム実行時の分岐確率情報に基づ
いてプログラムの翻訳処理を行うコンパイラの処理方法
において,複数の条件判断を含む一つの分岐を表す分岐
文に対して,その分岐文を個々の条件判断に分解したフ
ローグラフを作成する処理過程と,作成したフローグラ
フに基づいて,前記分岐文の個々の条件判断に対して指
定された真率を満足するように,フローグラフにおける
個々の条件判断の真率を設定する処理過程とを備えたこ
とを特徴とする分岐確率を設定するコンパイラの処理方
法。 - 【請求項3】 プログラム実行時の分岐確率情報に基づ
いてプログラムの翻訳処理を行うコンパイラの処理方法
において,設定された分岐確率に基づいて実行頻度が低
いと判断されたパスの最適化レベルを低減させる処理過
程を備えたことを特徴とする分岐確率を設定するコンパ
イラの処理方法。 - 【請求項4】 プログラム実行時の分岐確率情報に基づ
いてプログラムの翻訳処理を行うコンパイラの処理装置
において,複数の条件判断を含む一つの分岐を表す分岐
文を,個々の条件判断に分解して基本ブロック単位にま
とめ,フローグラフを作成するための情報を収集する情
報収集フェーズ処理手段と,収集した情報をもとに,各
基本ブロックの先行/後続に関する接続関係を示すフロ
ーグラフを表す結合マトリクスを作成する結合マトリク
ス作成フェーズ処理手段と,作成された結合マトリクス
において,指定された真率をもとに後続ブロックから先
行ブロックへと順次各ブロックへのパス数に応じた実行
回数の割合を計算し,個々の条件判断での真率を求める
結合マトリクス計算フェーズ処理手段とを有することを
特徴とする分岐確率を設定するコンパイラの処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5045609A JPH06259262A (ja) | 1993-03-08 | 1993-03-08 | 分岐確率を設定するコンパイラの処理方法および処理装置 |
US08/803,376 US5742803A (en) | 1993-03-08 | 1997-02-20 | Method of performing a compilation process for determining a branch probability and an apparatus for performing the compilation process |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5045609A JPH06259262A (ja) | 1993-03-08 | 1993-03-08 | 分岐確率を設定するコンパイラの処理方法および処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06259262A true JPH06259262A (ja) | 1994-09-16 |
Family
ID=12724115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5045609A Withdrawn JPH06259262A (ja) | 1993-03-08 | 1993-03-08 | 分岐確率を設定するコンパイラの処理方法および処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5742803A (ja) |
JP (1) | JPH06259262A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008004082A (ja) * | 2006-05-26 | 2008-01-10 | Matsushita Electric Ind Co Ltd | コンパイラ装置、コンパイル方法およびコンパイラプログラム |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6412105B1 (en) * | 1997-12-31 | 2002-06-25 | Elbrus International Limited | Computer method and apparatus for compilation of multi-way decisions |
US6430676B1 (en) * | 1998-12-23 | 2002-08-06 | Cray Inc. | Method and system for calculating instruction lookahead |
JP3664473B2 (ja) * | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
US20040205718A1 (en) * | 2000-12-11 | 2004-10-14 | Sun Microsystems, Inc. | Self-tuning object libraries |
US20030005422A1 (en) * | 2001-07-02 | 2003-01-02 | Nicolai Kosche | Technique for improving the prediction rate of dynamically unpredictable branches |
US6834383B2 (en) * | 2001-11-26 | 2004-12-21 | Microsoft Corporation | Method for binary-level branch reversal on computer architectures supporting predicated execution |
US7120907B2 (en) * | 2003-08-28 | 2006-10-10 | International Business Machines Corporation | Unrolling loops with partial hot traces |
JP2009528611A (ja) * | 2006-03-02 | 2009-08-06 | エヌエックスピー ビー ヴィ | 条件分岐中における最適化されたコンパイル法 |
US8341612B2 (en) * | 2007-05-16 | 2012-12-25 | International Business Machines Corporation | Method and apparatus for run-time statistics dependent program execution using source-coding |
US8146065B2 (en) * | 2007-08-13 | 2012-03-27 | International Business Machines Corporation | Running time of short running applications by effectively interleaving compilation with computation in a just-in-time environment |
US20140223439A1 (en) * | 2010-02-22 | 2014-08-07 | Analog Devices, Inc. | Superscalar control for a probability computer |
US9397902B2 (en) | 2013-01-28 | 2016-07-19 | Rackspace Us, Inc. | Methods and systems of tracking and verifying records of system change events in a distributed network system |
US9813307B2 (en) | 2013-01-28 | 2017-11-07 | Rackspace Us, Inc. | Methods and systems of monitoring failures in a distributed network system |
US9483334B2 (en) | 2013-01-28 | 2016-11-01 | Rackspace Us, Inc. | Methods and systems of predictive monitoring of objects in a distributed network system |
US9135145B2 (en) | 2013-01-28 | 2015-09-15 | Rackspace Us, Inc. | Methods and systems of distributed tracing |
US10536357B2 (en) | 2015-06-05 | 2020-01-14 | Cisco Technology, Inc. | Late data detection in data center |
US10142353B2 (en) | 2015-06-05 | 2018-11-27 | Cisco Technology, Inc. | System for monitoring and managing datacenters |
US11755484B2 (en) * | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US10613842B2 (en) * | 2018-04-30 | 2020-04-07 | International Business Machines Corporation | Simplifying a control flow graph based on profiling data |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4755966A (en) * | 1985-06-28 | 1988-07-05 | Hewlett-Packard Company | Bidirectional branch prediction and optimization |
US4860203A (en) * | 1986-09-17 | 1989-08-22 | International Business Machines Corporation | Apparatus and method for extracting documentation text from a source code program |
US5179680A (en) * | 1987-04-20 | 1993-01-12 | Digital Equipment Corporation | Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus |
JP2834171B2 (ja) * | 1989-02-06 | 1998-12-09 | 株式会社日立製作所 | コンパイル方法 |
US5127092A (en) * | 1989-06-15 | 1992-06-30 | North American Philips Corp. | Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition |
US5202995A (en) * | 1989-10-12 | 1993-04-13 | International Business Machines Corporation | Method for removing invariant branches from instruction loops of a computer program |
CA2010067C (en) * | 1990-02-14 | 1993-10-26 | Steven Murray Hoxey | Reducing pipeline delays in compilers by code hoisting |
EP0450658B1 (en) * | 1990-04-06 | 2001-08-01 | Nec Corporation | Parallel pipelined instruction processing system for very long instruction word |
US5212794A (en) * | 1990-06-01 | 1993-05-18 | Hewlett-Packard Company | Method for optimizing computer code to provide more efficient execution on computers having cache memories |
US5448737A (en) * | 1992-03-17 | 1995-09-05 | International Business Machines Corporation | System and method for optimizing computer code using a compact data flow representation |
US5452457A (en) * | 1993-01-29 | 1995-09-19 | International Business Machines Corporation | Program construct and methods/systems for optimizing assembled code for execution |
-
1993
- 1993-03-08 JP JP5045609A patent/JPH06259262A/ja not_active Withdrawn
-
1997
- 1997-02-20 US US08/803,376 patent/US5742803A/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008004082A (ja) * | 2006-05-26 | 2008-01-10 | Matsushita Electric Ind Co Ltd | コンパイラ装置、コンパイル方法およびコンパイラプログラム |
Also Published As
Publication number | Publication date |
---|---|
US5742803A (en) | 1998-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH06259262A (ja) | 分岐確率を設定するコンパイラの処理方法および処理装置 | |
JP4785213B2 (ja) | コンピュータ性能データを分析する方法 | |
US7509632B2 (en) | Method and apparatus for analyzing call history data derived from execution of a computer program | |
US6112317A (en) | Processor performance counter for sampling the execution frequency of individual instructions | |
US8091075B2 (en) | Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions | |
JP5209059B2 (ja) | ソース・コード処理方法、システム、及びプログラム | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
US5517629A (en) | Methods for analyzing computer program performance | |
US5852734A (en) | Method and compiler for parallel execution of a program | |
US20030171907A1 (en) | Methods and Apparatus for Optimizing Applications on Configurable Processors | |
US20020184615A1 (en) | System and method for selectively and automatically modifying the source code of a computer program | |
JP3480973B2 (ja) | 並列処理システムの動作解析装置 | |
JPH04307625A (ja) | ループ最適化方法及び装置 | |
US6038391A (en) | Method and apparatus for evaluating performance of multi-processing system and memory medium storing program for the same | |
CN114253862A (zh) | 一种hdl代码仿真覆盖率异步事件驱动自动分析方法 | |
JP2000347900A (ja) | 入力パラメータ生成装置、その方法及び記録媒体 | |
Wolf et al. | Execution cost interval refinement in static software analysis | |
US7210128B2 (en) | Event-driven observability enhanced coverage analysis | |
US20050050524A1 (en) | Generating software test information | |
JP2663893B2 (ja) | アーキテクチャ・シミュレータ | |
JPS62217325A (ja) | アセンブラコ−ド最適化方式 | |
Rugina | System dependability evaluation using aadl (architecture analysis and design language) | |
CN109710538A (zh) | 一种用于大规模系统中状态相关缺陷的静态检测方法 | |
JPH0916642A (ja) | データ処理装置のアーキテクチャ評価方法 | |
JP3295803B2 (ja) | プロセッサ方式性能測定方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20000509 |