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
Application number
JP5045609A
Other languages
English (en)
Inventor
Hiroshi Igarashi
寛 五十嵐
Koichiro Hotta
耕一郎 堀田
Masakazu Hayashi
正和 林
Manabu Matsuyama
学 松山
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP5045609A priority Critical patent/JPH06259262A/ja
Publication of JPH06259262A publication Critical patent/JPH06259262A/ja
Priority to US08/803,376 priority patent/US5742803A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting 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 に
基づいて,分岐文に対して指定された真率を満足するよ
うに,個々の条件判断の真率を決定する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は,前もって予想した,ま
たは実測したプログラムの実行時の分岐確率情報をコン
パイル時に反映してスケジューリングを行うためのコン
パイラの処理技術に係り,特に複数の条件判断を含む分
岐文に対する分岐確率を設定するコンパイラの処理方法
および処理装置に関する。
【0002】近年のコンピュータシステムに対する高速
化の要求に伴い,高効率で動作するようにプログラムを
翻訳するコンパイラが要求されている。そのための有力
な手法として,例えばトレーススケジューリングと呼ば
れる方法が提案されている(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通りの処理方法がある。
【0008】その一つは,図11(ロ)に示すように,
複数からなる条件A,B,Cを計算し,その最終値の如
何によって処理を行うものである。このような処理は,
分岐判断が一箇所で行われるため,then節またはe
lse節が実行される確率が一箇所で行われる分岐命令
の分岐確率と一致する。したがって,複合if文の実行
確率を設定することが容易に可能であり,従来はこの処
理が採用されていた(例えば,“条件付命令の実行時命
令選択方式”,特公平1−42019号公報)。
【0009】もう一つの処理方法は,図11(ハ)に示
すように,複数からなる条件判断を個々の分岐に分解し
て処理を行うものである。これは,分岐の判断を一箇所
で行うのではなく個々の条件ごとに行うので,Aが真で
あれば直ちにthen節のxxを実行し,B以下の判定
は実行する必要がないので,図11(ロ)に示す処理に
比べ,実行時間が短くて済むという利点を持っている。
【0010】
【発明が解決しようとする課題】したがって,より高性
能な命令実行のスケジューリングを行うためには,図1
1(ハ)に示すような処理をとり,かつ複合if文の真
率を設定するための方法が必要となる。
【0011】本発明は,複合if文に対して指定された
真率または複合if文における個々の条件判断に対して
指定された真率に基づき,個々の条件判断における分岐
に関係する真率を各々設定し,より高性能なプログラム
を生成するための精度のよい実行頻度の予測を可能とす
ることを目的とする。
【0012】
【課題を解決するための手段】図1は,本発明の原理説
明図である。図中,10は翻訳(コンパイル)対象のプ
ログラム,11はフローグラフ作成処理,12は真率決
定/設定処理,13a,13bはフローグラフを表す。
【0013】プログラム10において,文1は最適化指
示文,文2は複合if文である。文3のxxは複合if
文の条件が真のときに実行される命令文であり,これを
then節という。yyは複合if文の条件が偽のとき
に実行される命令文であり,これをelse節という。
【0014】文1は,コンパイラに対して最適化などの
ための実行時分岐確率情報を与えるものであり,この例
では,複合if文2のthen節文3が実行される確率
(真率)が40%であることを表している。
【0015】フローグラフ作成処理11では,複合if
文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における個々の条件判断の真
率を順次設定する。
【0017】最適化オプションの指定によっては,この
ようにして設定された分岐確率に基づいて実行頻度が低
いと判断されたパスの最適化レベルを低減させることに
より,プログラムの翻訳時間を短縮させることができ
る。
【0018】また,本発明による分岐確率を設定するコ
ンパイラの処理装置は,複数の条件判断を含む一つの分
岐を表す分岐文を,個々の条件判断に分解して基本ブロ
ック単位にまとめ,フローグラフ13aを作成するため
の情報を収集する情報収集フェーズ処理手段と,収集し
た情報をもとに,各基本ブロックの先行/後続に関する
接続関係を示すフローグラフ13aを表す結合マトリク
スを作成する結合マトリクス作成フェーズ処理手段と,
作成された結合マトリクスにおいて,指定された真率を
もとに後続ブロックから先行ブロックへと順次各ブロッ
クへのパス数に応じた実行回数の割合を計算し,個々の
条件判断での真率を求める結合マトリクス計算フェーズ
処理手段とを有し,フローグラフにおける個々の条件分
岐に対し分岐確率を設定するように構成される。
【0019】
【作用】フローグラフ作成処理11により,図1に示す
ような複数の条件判断を含む一つの複合if文2を,個
々の条件判断に分解し,then節,else節および
個々の分岐判断を表すブロックをノードとするフローグ
ラフ13aを作成する。これに対して,真率決定/設定
処理12により,最適化指示文1により指定された真率
を満足するように,個々の真率を決定する。
【0020】例えば,複合if文2における条件判断の
全体に対して真率が指定された場合には,then節,
else節側から実行回数の割合を計算していき,複合
if文2における個々の条件判断に対して真率が指定さ
れた場合には,フローグラフ13aの各ノードに対し順
次,真率を割り振るようにする。
【0021】フローグラフ13aは,処理装置内部では
条件判断を示す各ノードの先行・後続関係を示す結合マ
トリクスとして表すことができ,これにより各ブロック
の実行回数の割合から真率を計算することが可能であ
る。
【0022】以上のように,複数の条件判断を含む一つ
の分岐文における個々の条件判断に対して真率が決定さ
れることにより,コンパイラにおけるきめ細かな最適化
スケジューリングなどができるようになる。例えば,通
常のコンパイラでは,個々の条件判断の内のあるものが
常に真または偽であることにより,その条件判断を削除
するというような最適化が行われるが,本発明では,こ
のような最適化により分岐構造が変化・削除されても,
変化後のフローグラフに対して個々の真率を決定できる
ので,複合if文に対して,常に指定された真率を反映
することができる。
【0023】また,従来,特定のプログラムに対しコン
パイルの最適化レベルを変えるということは行われてい
たが,一つのプログラムの中の特定のパスだけ,その実
行頻度の高低から最適化レベルを変えるようなことは行
われていなかった。最適化を行うためには,プログラム
の制御の流れの解析,データの流れの解析等が必要であ
り,高いレベルの最適化を行おうとすればするほど,よ
り詳細な解析が必要になり,結果的にその処理に要する
時間が長くなる。
【0024】しかし,もともと実行頻度が低いパスは実
行されることが少ないので,最適化レベルが低くても,
プログラム全体の実行時間には寄与するところは小さい
ので,プログラムの実行時間よりもプログラムの翻訳時
間が短いほうがよいとする場合がある。したがって,設
定された分岐確率に基づいて実行頻度が低いと判断され
たパスの最適化レベルを低減させることにより,あまり
有益でない最適化処理に要する時間を短縮することがで
きる。
【0025】
【実施例】例えば,図1に示すプログラム10のよう
に,複合if文2全体に対して真率(この例では40
%)が指定された場合の処理は,以下のとおりである。
【0026】(1) 複合if文2を個々の分岐に分解す
る。このとき,then節,else節及び個々の分岐
にマークを付ける。 (2) マークが付いているものに対して,制御のフローグ
ラフを作成する。
【0027】(3) then節,else節に実行回数を
設定する。この例では,xxの実行回数が40,yyの
実行回数が60となる。 (4) then節,else節にくるパスの数を調べる。
【0028】この例では,xxに2本,yyに3本であ
る。 (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(回)となる。
【0031】(7) 上記処理(5) と(6) とを繰り返し,す
べてのパスの実行回数を求める。この結果は図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文内の条
件判断のいずれであるかを決定することができる。ここ
で,親または子の基本ブロックを示すリストとは,複数
個の親または子の基本ブロックをリスト構造のデータ構
造で保持するためのものである。
【0034】また,図3に示すように,then節また
はelse節を示す擬似ブロック(Dummy−tru
e,Dummy−false)を挿入しても,同様に各
々のブロックがthen節またはelse節のいずれで
あるかを決定することができる。
【0035】図4は,複合if文内の個々の条件判断に
対して,個々に真率が指定された場合のプログラムの例
を示す。このときの設定処理は,以下のとおりである。 (1) 複合if文を個々の分岐に分解する。このとき,個
々の分岐にマークを付ける。
【0036】(2) 個々の分岐に,指定された各々の真率
を設定する。図4に示すプログラム10では,Aの条件
判断の真率として0.4,Bの条件判断の真率として
0.2,Cの条件判断の真率として0.9,Dの条件判
断の真率として0.8,Eの条件判断の真率として0.
4が設定されることになる。
【0037】なお,if文内の条件判断の数が一つの場
合は,この処理の特殊な場合と考えることができ,これ
に準じて容易に設定できることは言うまでもない。図5
は,本発明の他の実施例説明図である。
【0038】上述の実施例はelse節がある場合であ
るが,図5(イ)に示すプログラム10のように,el
se節がない場合でも同様に実施することができる。こ
の場合,zzが実行される確率は実際には100%であ
るが,真率を計算する際にはzzは60%の確率である
として計算する。これによって,図5(ロ)に示すフロ
ーグラフ13のように各パスの実行回数が計算され,各
条件判断の真率が求められる。
【0039】また,図1に挙げたプログラム10の例に
おいて,最適化が行われるコンパイラでは,例えば常に
Dが真であることがわかれば,D及びEの条件判断を削
除し,制御フローを変えてしまう。しかし,本方法で
は,真率計算の直前に制御フローを調べるので,図5
(ハ)のフローグラフ13に示すように,正しく真率を
設定することができる。
【0040】図6に本発明の処理装置構成例を示す。図
6において,60はCPUおよびメモリを備えた処理装
置であって,コンパイラが動作するもの,61はフロー
グラフを作成するための情報を収集する情報収集フェー
ズ処理部,62はフローグラフを表す結合マトリクスを
作成する結合マトリクス作成フェーズ処理部,63は結
合マトリクスを用いて真率を計算する結合マトリクス計
算フェーズ処理部を表す。以下,これらの各部による処
理の詳細について,図7ないし図9に従って説明する。
図10は,結合マトリクスの例を示す。
【0041】情報処理フェーズでは,図7に示す処理
(a) 〜(e) を行う。 (a) 構文解析,意味解析などにより中間表現に変換され
たプログラムを,基本ブロック単位にまとめ,各先行ブ
ロックおよび後続ブロックに関する制御フロー情報をと
る。
【0042】(b) 分岐確率が指定されたif文の条件に
含まれるブロックに識別マークをつける。識別マーク
は,同一のif文中の条件であることを示す印である。
識別マークは,何らかの識別が可能であるものであれば
よいので,実際には同一情報を示すアドレスやフラグで
もよい。
【0043】(c) 次に,thenブロックにthen属
性をつけ,elseブロックにelse属性をつける。 (d) 最適化指示文などにより指定された真率を求める。
【0044】(e) if文毎に構造情報テーブルを作成す
る。構造情報テーブルは,次のような情報を持つテーブ
ルである。 ・真率 ・if文条件を構成するブロックとその数 ・thenブロック ・elseブロック 次に,図8に示す結合マトリクス作成フェーズに進む。
結合マトリクス作成フェーズでは,図8(イ)に示すよ
うに,情報収集フェーズで作成した構造情報テーブルを
参照し,マトリクスの行に,複合if文を構成する各ブ
ロック(n個)とthenブロックとelseブロック
をとり,列に,複合if文を構成する各ブロック(n
個)をとった結合マトリクスを作成する。
【0045】例えば,図1に示すプログラム10から結
合マトリクスを作成すると,図10(イ)に示したよう
なものになる。マトリクスの要素は,初期状態として,
行ブロックが列ブロックと先行関係を示す属性(IP属
性)か,行ブロックが列ブロックと後続関係を示す属性
(IS属性)か,関係なし(DISCONNECT属
性,図10では×印で表す)か,いずれかの属性を持
つ。なお,後の結合マトリクス計算の過程で各要素は,
ブロックの実行回数に置き換えられる。
【0046】この結合マトリクス作成に関する処理の詳
細を,図10(ロ)に示す。 (a) 各ブロックの数をnとする。n+1番目のブロック
をthenブロック,n+2番目のブロックをelse
ブロックとする。
【0047】(b) 行をn+2,列をnとする配列MAT
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(イ)に示す結合マトリクスが得られ
ることになる。
【0049】次に,結合マトリクス計算フェーズに進
む。結合マトリクス計算フェーズでは,図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ブロックの実行回数に相当する真率(%)をパス数で
割った値とする。
【0051】(c) MATRIX(n+2,i)=IP
(但し,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となる。
【0053】 IS属性を持つ要素の数elemen
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(ハ)に示す
結合マトリクスが得られる。
【0055】(f) 元々IP属性がついていた結合マトリ
クスの要素の値だけを残し,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. 【請求項1】 プログラム実行時の分岐確率情報に基づ
    いてプログラムの翻訳処理を行うコンパイラの処理方法
    において,複数の条件判断を含む一つの分岐を表す分岐
    文に対して,その分岐文を個々の条件判断に分解したフ
    ローグラフ(13a) を作成する処理過程(11)と,作成した
    フローグラフに基づいて,前記分岐文全体に対して指定
    された真率を満足するように,フローグラフにおける個
    々の条件判断の真率を決定する処理過程(12)とを備えた
    ことを特徴とする分岐確率を設定するコンパイラの処理
    方法。
  2. 【請求項2】 プログラム実行時の分岐確率情報に基づ
    いてプログラムの翻訳処理を行うコンパイラの処理方法
    において,複数の条件判断を含む一つの分岐を表す分岐
    文に対して,その分岐文を個々の条件判断に分解したフ
    ローグラフを作成する処理過程と,作成したフローグラ
    フに基づいて,前記分岐文の個々の条件判断に対して指
    定された真率を満足するように,フローグラフにおける
    個々の条件判断の真率を設定する処理過程とを備えたこ
    とを特徴とする分岐確率を設定するコンパイラの処理方
    法。
  3. 【請求項3】 プログラム実行時の分岐確率情報に基づ
    いてプログラムの翻訳処理を行うコンパイラの処理方法
    において,設定された分岐確率に基づいて実行頻度が低
    いと判断されたパスの最適化レベルを低減させる処理過
    程を備えたことを特徴とする分岐確率を設定するコンパ
    イラの処理方法。
  4. 【請求項4】 プログラム実行時の分岐確率情報に基づ
    いてプログラムの翻訳処理を行うコンパイラの処理装置
    において,複数の条件判断を含む一つの分岐を表す分岐
    文を,個々の条件判断に分解して基本ブロック単位にま
    とめ,フローグラフを作成するための情報を収集する情
    報収集フェーズ処理手段と,収集した情報をもとに,各
    基本ブロックの先行/後続に関する接続関係を示すフロ
    ーグラフを表す結合マトリクスを作成する結合マトリク
    ス作成フェーズ処理手段と,作成された結合マトリクス
    において,指定された真率をもとに後続ブロックから先
    行ブロックへと順次各ブロックへのパス数に応じた実行
    回数の割合を計算し,個々の条件判断での真率を求める
    結合マトリクス計算フェーズ処理手段とを有することを
    特徴とする分岐確率を設定するコンパイラの処理装置。
JP5045609A 1993-03-08 1993-03-08 分岐確率を設定するコンパイラの処理方法および処理装置 Withdrawn JPH06259262A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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