JPH10161882A - 述語型コード処理システム - Google Patents
述語型コード処理システムInfo
- Publication number
- JPH10161882A JPH10161882A JP9312965A JP31296597A JPH10161882A JP H10161882 A JPH10161882 A JP H10161882A JP 9312965 A JP9312965 A JP 9312965A JP 31296597 A JP31296597 A JP 31296597A JP H10161882 A JPH10161882 A JP H10161882A
- Authority
- JP
- Japan
- Prior art keywords
- predicate
- predicates
- partition
- node
- code
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
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)【要約】
【課題】述語型コードにおける述語間の干渉の可能性を
判断するため述語を大域的に分析するシステムおよび方
法を提供する。 【解決手段】制御フローと明示的述語を単一のパーティ
ション・グラフにマップして両者を統一的に取り扱うこ
とによって述語の間の関係が大域的に追跡される。これ
によってプロシジャ全体にわたる述語関係の分析が可能
となる。そのため、本発明のシステムは、各述語に関す
る領域を決定する手段、決定した領域の各々を互いに素
の部分集合に細分化する手段、および、述語の大域的関
係を捕捉するため細分化された領域の各々に基づいてパ
ーティション・グラフを構築する手段を備える。
判断するため述語を大域的に分析するシステムおよび方
法を提供する。 【解決手段】制御フローと明示的述語を単一のパーティ
ション・グラフにマップして両者を統一的に取り扱うこ
とによって述語の間の関係が大域的に追跡される。これ
によってプロシジャ全体にわたる述語関係の分析が可能
となる。そのため、本発明のシステムは、各述語に関す
る領域を決定する手段、決定した領域の各々を互いに素
の部分集合に細分化する手段、および、述語の大域的関
係を捕捉するため細分化された領域の各々に基づいてパ
ーティション・グラフを構築する手段を備える。
Description
【0001】
【発明の属する技術分野】本発明は、高性能マイクロプ
ロセッサにおける述語コードの使用に関するもので、干
渉の可能性を判断するため述語を大域的に分析するシス
テムおよび方法に関するものである。
ロセッサにおける述語コードの使用に関するもので、干
渉の可能性を判断するため述語を大域的に分析するシス
テムおよび方法に関するものである。
【0002】
【従来の技術】現代の高性能マイクロプロセッサにおけ
る広範囲の機械資源を完全に利用するためには、個々の
基本ブロックを越えた並列性を開拓することが必要であ
る。異なる基本ブロックからの命令をブール述語によっ
てガードされた直線的コードに変換することを可能にす
ることによって、述語化された実行に関するアーキテク
チャ上のサポートが命令レベルの並列性を増加させる。
しかしながら、述語化された実行は、また,最適化コン
パイラに対して大きな挑戦を提示する。
る広範囲の機械資源を完全に利用するためには、個々の
基本ブロックを越えた並列性を開拓することが必要であ
る。異なる基本ブロックからの命令をブール述語によっ
てガードされた直線的コードに変換することを可能にす
ることによって、述語化された実行に関するアーキテク
チャ上のサポートが命令レベルの並列性を増加させる。
しかしながら、述語化された実行は、また,最適化コン
パイラに対して大きな挑戦を提示する。
【0003】以下の記述において、V. Kathail、M. Sch
lansker、B. Rau3氏著の"HPL Playdoh Architecture S
pecification: Version 1.0, Hewlett-Packard Laborat
ories Technical Report, HPL-93-80, Feb. 1993"に記
載のHPL Playdohアーキテクチャで提供される一般的述
語化実行モデルのアーキテクチャ・サポートが前提とさ
れている。このアーキテクチャでは、命令の実行は限定
述語(qualifying predicate)によってガードされる。次
の形式の比較命令が述語を設定するために提供される。 p1,p2 = cmpp.<d1><d2> (a rel b) if qp 述語p1およびp2は、2つの宛先を持つ述語である。<d1>
および<d2>の各々は、比較命令に関するタイプおよびモ
ードを指定する2字記述子である。記述子の最初の文字
によって指定される、unconditionalすなわち無条件
(u)、conditionalすなわち条件付き(c)、parallel-orす
なわち並列OR(o)、およびparallel-andすなわち並列
AND(a)という4つの比較タイプがある。各タイプ
は、記述子の2番目の文字によって指定されるnormal m
odeすなわち通常モード(n)およびcomplement modeすな
わち補完モード(c)を持つ。記述子<d1>および<d2>は、
宛先述語p1およびp2をそれぞれ制御する。条件(a rel
b)は、relはeq(等しい)、ne(等しくない)、lt(未満)等
が実際に記入されて,2つの変数aおよびbの論理比較を
示す形式である。述語qpは、qualifying predicate(限
定述語)を表す。
lansker、B. Rau3氏著の"HPL Playdoh Architecture S
pecification: Version 1.0, Hewlett-Packard Laborat
ories Technical Report, HPL-93-80, Feb. 1993"に記
載のHPL Playdohアーキテクチャで提供される一般的述
語化実行モデルのアーキテクチャ・サポートが前提とさ
れている。このアーキテクチャでは、命令の実行は限定
述語(qualifying predicate)によってガードされる。次
の形式の比較命令が述語を設定するために提供される。 p1,p2 = cmpp.<d1><d2> (a rel b) if qp 述語p1およびp2は、2つの宛先を持つ述語である。<d1>
および<d2>の各々は、比較命令に関するタイプおよびモ
ードを指定する2字記述子である。記述子の最初の文字
によって指定される、unconditionalすなわち無条件
(u)、conditionalすなわち条件付き(c)、parallel-orす
なわち並列OR(o)、およびparallel-andすなわち並列
AND(a)という4つの比較タイプがある。各タイプ
は、記述子の2番目の文字によって指定されるnormal m
odeすなわち通常モード(n)およびcomplement modeすな
わち補完モード(c)を持つ。記述子<d1>および<d2>は、
宛先述語p1およびp2をそれぞれ制御する。条件(a rel
b)は、relはeq(等しい)、ne(等しくない)、lt(未満)等
が実際に記入されて,2つの変数aおよびbの論理比較を
示す形式である。述語qpは、qualifying predicate(限
定述語)を表す。
【0004】無条件および条件つきのタイプに関する議
論を単純化するため、以下の記述において、それらをそ
れぞれcmpp.un.ucおよびcmpp.cn.ccという形式に一般化
する。従って、無条件タイプの比較に関しては、p1およ
びp2の値は相補的である。比較タイプがand(or)でqpが
真であれば、(on)目標述語(例えばp1)は,p1の前の値と
AND(OR)された(a rel b)の結果に等しい。
論を単純化するため、以下の記述において、それらをそ
れぞれcmpp.un.ucおよびcmpp.cn.ccという形式に一般化
する。従って、無条件タイプの比較に関しては、p1およ
びp2の値は相補的である。比較タイプがand(or)でqpが
真であれば、(on)目標述語(例えばp1)は,p1の前の値と
AND(OR)された(a rel b)の結果に等しい。
【0005】次の表1は、宛先述語がこれらの比較命令
でどのように設定されているかをまとめたものである。
この表において、TおよびFは、true(真)およびfalse
(偽)をそれぞれ意味し、Xは"該当せず"を表し、ncは結
果が変わらない(unchanged)ことを表す。また、特別述
語レジスタp0の存在が仮定される。このレジスタから読
みとられるすべては常に真であり、書き込まれるものす
べては無視される。
でどのように設定されているかをまとめたものである。
この表において、TおよびFは、true(真)およびfalse
(偽)をそれぞれ意味し、Xは"該当せず"を表し、ncは結
果が変わらない(unchanged)ことを表す。また、特別述
語レジスタp0の存在が仮定される。このレジスタから読
みとられるすべては常に真であり、書き込まれるものす
べては無視される。
【0006】
【表1】qp (a rel b) un uc cn cc on oc an ac F X F F nc nc nc nc nc nc T T T F T F T nc nc F T F F T F T nc T F nc
【0007】下記表2に(1)として記載されているコー
ド部分は、グローバルな範囲における述語関係を認識す
る重要性を示している。xおよびyの両方は、異なる基本
ブロック内で定義され使用される。干渉について調べる
ため、pの下のxの使用がrの下のxの定義に向かってelse
節へ伝播される。このプロセスの間sの下のyの定義を交
差させている間、pおよびsが互いに素であることが確認
されない限り、xとyの間の干渉が推定される。コードを
調べることによって、pおよびsがthenおよびelse節にそ
れぞれ定義されているので、pおよびsの両方が同時に真
であることは決してあり得ないことがわかる。しかしな
がら、pおよびsの間の互いに素という関係を体系的に確
認する大域的分析が必要とされる。この関係は、複合ブ
ロックまたは基本ブロックに基づく分析によって補足す
ることはできない。大域述語分析を用いればpおよびrが
互いに素であることを確認することができる。従って、
rの下のxの定義は、pの下のxの使用に決して到達するこ
とができないので、この定義は、はたらいていない。
ド部分は、グローバルな範囲における述語関係を認識す
る重要性を示している。xおよびyの両方は、異なる基本
ブロック内で定義され使用される。干渉について調べる
ため、pの下のxの使用がrの下のxの定義に向かってelse
節へ伝播される。このプロセスの間sの下のyの定義を交
差させている間、pおよびsが互いに素であることが確認
されない限り、xとyの間の干渉が推定される。コードを
調べることによって、pおよびsがthenおよびelse節にそ
れぞれ定義されているので、pおよびsの両方が同時に真
であることは決してあり得ないことがわかる。しかしな
がら、pおよびsの間の互いに素という関係を体系的に確
認する大域的分析が必要とされる。この関係は、複合ブ
ロックまたは基本ブロックに基づく分析によって補足す
ることはできない。大域述語分析を用いればpおよびrが
互いに素であることを確認することができる。従って、
rの下のxの定義は、pの下のxの使用に決して到達するこ
とができないので、この定義は、はたらいていない。
【0008】
【表2】(1) p,q,r,s = false if (..) then { p,q = cmpp.un.uc if true x = .. if p } else { r,s = cmpp.un.uc (...) if true x = .. if r y = .. if s } .. = x if p .. = y if s
【0009】従来技術のコンパイラは、述語階層グラフ
(すなわちpredicate hierarchy graph,PHG)を使用し
て、複合ブロックにおける述語のすべてについてブール
式を追跡した。この方法は、S.A. Mahike、D.C. Lin、
W.Y Chen、R.E. HankおよびR. A. Bringnann著の"Effec
tive Compiler Support for Predicated Execution Usi
ng Hyperblock," In Proc. of the 25th Annual Int'l
Symp. on Microarchitecture, pp. 45-54, Dec. 1992に
記載されている。上記文献では、複合ブロックの範囲に
わたって分析が行われるが、それは大域的には拡張され
ない。PHGのようなコンパニオン・データ構造がコー
ドと共に維持されると、プログラムが変更するときは必
ずデータ構造も更新されなければならない。
(すなわちpredicate hierarchy graph,PHG)を使用し
て、複合ブロックにおける述語のすべてについてブール
式を追跡した。この方法は、S.A. Mahike、D.C. Lin、
W.Y Chen、R.E. HankおよびR. A. Bringnann著の"Effec
tive Compiler Support for Predicated Execution Usi
ng Hyperblock," In Proc. of the 25th Annual Int'l
Symp. on Microarchitecture, pp. 45-54, Dec. 1992に
記載されている。上記文献では、複合ブロックの範囲に
わたって分析が行われるが、それは大域的には拡張され
ない。PHGのようなコンパニオン・データ構造がコー
ドと共に維持されると、プログラムが変更するときは必
ずデータ構造も更新されなければならない。
【0010】N.J. Waters, S.A. Mahike, W.-M.W. Hwu
およびB.R. Rau各氏共著の"ReverseIf-conversion," In
Proc, of the SIGPLAN'93 Conf. on Programming Lang
uageDesign and Implementation, pp. 290-299, June 1
993によって提唱された反転if変換方式がある。これ
は、データ・フロー領域からの述語を、よく知られてい
る制御フロー領域に対応づけるものである。この方式の
主な欠点は、再対応付けプロセスの間に元々存在しなか
った制御経路がいくつか作成される可能性がある点であ
る。この事象は、典型的には、コードがif変換され次に
スケジュールされ、従ってコード順序が入れ替わる時、
発生する。このコードが反転if変換される時、存在しな
い経路はが多くの分析および変換における保守的処置を
引き起こす可能性がある。
およびB.R. Rau各氏共著の"ReverseIf-conversion," In
Proc, of the SIGPLAN'93 Conf. on Programming Lang
uageDesign and Implementation, pp. 290-299, June 1
993によって提唱された反転if変換方式がある。これ
は、データ・フロー領域からの述語を、よく知られてい
る制御フロー領域に対応づけるものである。この方式の
主な欠点は、再対応付けプロセスの間に元々存在しなか
った制御経路がいくつか作成される可能性がある点であ
る。この事象は、典型的には、コードがif変換され次に
スケジュールされ、従ってコード順序が入れ替わる時、
発生する。このコードが反転if変換される時、存在しな
い経路はが多くの分析および変換における保守的処置を
引き起こす可能性がある。
【0011】Alexandre E. Eichenberger、Edward S.Da
vidson両氏著の"Register Allocation for Predicated
Code," In Proc. of the 28th Annual Int'l Symp. on
Microarchitecture, November 1995は、述語をP-事実
(論理的に不変の表現)として表すことによって、述語が
直面するレジスタ割当て問題を解決する。このメカニズ
ムは、P-事実の2つのセットの交差部を記号パッケー
ジを使用して偽に単純化することができるならば,2つ
の生きた範囲は干渉しないと結論づけている。このアプ
ローチもまた複合ブロックの範囲に制限されていて、述
語の数に関する潜在的な指数的コンパイル時間行動を所
与とすれば、実用性を制限している。
vidson両氏著の"Register Allocation for Predicated
Code," In Proc. of the 28th Annual Int'l Symp. on
Microarchitecture, November 1995は、述語をP-事実
(論理的に不変の表現)として表すことによって、述語が
直面するレジスタ割当て問題を解決する。このメカニズ
ムは、P-事実の2つのセットの交差部を記号パッケー
ジを使用して偽に単純化することができるならば,2つ
の生きた範囲は干渉しないと結論づけている。このアプ
ローチもまた複合ブロックの範囲に制限されていて、述
語の数に関する潜在的な指数的コンパイル時間行動を所
与とすれば、実用性を制限している。
【0012】
【発明が解決しようとする課題】従って、データ・フロ
ー分析のようなコンパイル分析の間,人工的または不要
なステップをプロセスに付加することなく、述語の意味
論を考慮することのできる述語型実行システムの必要性
が当業界に存在する。
ー分析のようなコンパイル分析の間,人工的または不要
なステップをプロセスに付加することなく、述語の意味
論を考慮することのできる述語型実行システムの必要性
が当業界に存在する。
【0013】
【課題を解決するための手段】本発明は、述語型コード
が存在する場合種々のコンパイラ分析および変換フェー
ズの精度および効果を向上させるため述語の間の関係を
分析するシステムおよび方法を提供する。本発明の述語
分析システムは、プロシージャ全体の範囲に基づいて述
語の間の関係を取得するため大域的に動作する。更に、
本発明のシステムおよび方法は、制御フローと述語を単
一の統一されたフレームワークに結合し、後続の最適化
および分析フェーズがこのフレームワークに照会を行う
ことを可能にする。
が存在する場合種々のコンパイラ分析および変換フェー
ズの精度および効果を向上させるため述語の間の関係を
分析するシステムおよび方法を提供する。本発明の述語
分析システムは、プロシージャ全体の範囲に基づいて述
語の間の関係を取得するため大域的に動作する。更に、
本発明のシステムおよび方法は、制御フローと述語を単
一の統一されたフレームワークに結合し、後続の最適化
および分析フェーズがこのフレームワークに照会を行う
ことを可能にする。
【0014】述語分析における従来技術は、一般的に、
if変換単一入口複数出口制御フロー領域である複合ブ
ロックに基づいている。本発明においては、制御フロー
・グラフ(以下Control Flow Graphの頭文字をとってC
FGと略称する場合がある)の各ノードは、直線的シー
ケンスの述語型コードを含む単一入口単一出口領域であ
る基本ブロックである。この表現形式の1つの利点は、
この形式がいまだにコンパイラ分析および最適化にとっ
て最もよく知られた表現であるということである。本発
明は、CFGが単一の開始ノードおよび単一の終了ノー
ドを持つと仮定する。本発明の大域述語分析は、プロシ
ージャ全体における制御フローおよびコード・ストリー
ムに基づく。大域述語分析は、述語が異なる基本ブロッ
クにおいて定義され使用される場合一層明確な述語関係
を作成する。
if変換単一入口複数出口制御フロー領域である複合ブ
ロックに基づいている。本発明においては、制御フロー
・グラフ(以下Control Flow Graphの頭文字をとってC
FGと略称する場合がある)の各ノードは、直線的シー
ケンスの述語型コードを含む単一入口単一出口領域であ
る基本ブロックである。この表現形式の1つの利点は、
この形式がいまだにコンパイラ分析および最適化にとっ
て最もよく知られた表現であるということである。本発
明は、CFGが単一の開始ノードおよび単一の終了ノー
ドを持つと仮定する。本発明の大域述語分析は、プロシ
ージャ全体における制御フローおよびコード・ストリー
ムに基づく。大域述語分析は、述語が異なる基本ブロッ
クにおいて定義され使用される場合一層明確な述語関係
を作成する。
【0015】本発明は、従来技術において定義された表
記法をプロシージャ全体にに拡大する。トレースは、C
FGにおける開始ノードから終了ノードまでの非周期的
な経路について実行される命令のすべてを含む。pが真
の時トレースについての命令のすべてが実行されるとす
れば、このトレースは述語pの領域(すなわちドメインdo
main)に属する。異なる基本ブロックにおいて定義され
る述語を関連づける鍵は、これらの基本ブロックの間で
の到達可能性を分析することである。述語に関する場合
と同様に、本発明は、基本ブロックの領域を、その基本
ブロックが実行されるトレースのすべてであると定義す
る。従って、ある基本ブロックに別の基本ブロックから
到達することができるなら(またはその逆)、これらの2
つの基本ブロックは、"互いに素(すなわちdisjoint)"で
はない。この到達可能性情報が大域パーティション・グ
ラフに表され、述語の存在に関係なく、基本ブロックの
間の関係を追跡することができる。
記法をプロシージャ全体にに拡大する。トレースは、C
FGにおける開始ノードから終了ノードまでの非周期的
な経路について実行される命令のすべてを含む。pが真
の時トレースについての命令のすべてが実行されるとす
れば、このトレースは述語pの領域(すなわちドメインdo
main)に属する。異なる基本ブロックにおいて定義され
る述語を関連づける鍵は、これらの基本ブロックの間で
の到達可能性を分析することである。述語に関する場合
と同様に、本発明は、基本ブロックの領域を、その基本
ブロックが実行されるトレースのすべてであると定義す
る。従って、ある基本ブロックに別の基本ブロックから
到達することができるなら(またはその逆)、これらの2
つの基本ブロックは、"互いに素(すなわちdisjoint)"で
はない。この到達可能性情報が大域パーティション・グ
ラフに表され、述語の存在に関係なく、基本ブロックの
間の関係を追跡することができる。
【0016】制御フローおよび述語を一様に取り扱うた
め、本発明は、各基本ブロックに1つの述語を割り当て
る。本発明は、区別の必要があれば、基本ブロックに割
り当てられる述語を制御述語(control predicate)と呼
び、命令ストリームに明示的に現れる述語を実体述語(m
aterialized predicate)と呼ぶ。基本ブロックの制御述
語は、基本ブロックが実行されるか否かを制御する条件
のすべてを組み合わせる述語と見なされる。本発明は、
制御述語および実体述語を含む1つの完全な述語パーテ
ィション・グラフの構築に基づいた大域述語分析を実行
する。この単一大域パーティション・グラフによって、
プログラム分岐を通る条件付き実行ならびに述語型実行
の意味論を追跡することが可能となる。注:制御述語が
また実体述語に実体化されれば、それらが同じ領域を共
有しパーティション・グラフの中の同じノードにマップ
されることを本発明のif変換は保証する。このことに
より、述語分析の精度が更に向上する。
め、本発明は、各基本ブロックに1つの述語を割り当て
る。本発明は、区別の必要があれば、基本ブロックに割
り当てられる述語を制御述語(control predicate)と呼
び、命令ストリームに明示的に現れる述語を実体述語(m
aterialized predicate)と呼ぶ。基本ブロックの制御述
語は、基本ブロックが実行されるか否かを制御する条件
のすべてを組み合わせる述語と見なされる。本発明は、
制御述語および実体述語を含む1つの完全な述語パーテ
ィション・グラフの構築に基づいた大域述語分析を実行
する。この単一大域パーティション・グラフによって、
プログラム分岐を通る条件付き実行ならびに述語型実行
の意味論を追跡することが可能となる。注:制御述語が
また実体述語に実体化されれば、それらが同じ領域を共
有しパーティション・グラフの中の同じノードにマップ
されることを本発明のif変換は保証する。このことに
より、述語分析の精度が更に向上する。
【0017】後述のグラフ構築メカニズムは、持続的デ
ータ構造の更新を必要とすることなく、最適化ルーチン
全体を通して呼び出されることができる。これは、if
変換の前でも後でも実行できる。この柔軟性は、本発明
が制御フローおよび実体述語を統一的方法で取り扱うと
いう事実による。if変換が実体述語作成の主要源では
あるが、高水準疑似コード拡張のようなフェーズも述語
型コードを生成することができる。実体述語の間の大域
的関係を知ることによって、if変換の前後のデータ・
フロー分析が一層正確になる得る。
ータ構造の更新を必要とすることなく、最適化ルーチン
全体を通して呼び出されることができる。これは、if
変換の前でも後でも実行できる。この柔軟性は、本発明
が制御フローおよび実体述語を統一的方法で取り扱うと
いう事実による。if変換が実体述語作成の主要源では
あるが、高水準疑似コード拡張のようなフェーズも述語
型コードを生成することができる。実体述語の間の大域
的関係を知ることによって、if変換の前後のデータ・
フロー分析が一層正確になる得る。
【0018】本発明の1つの技術的利点は、述語の間の
関係を分析する大域的技術の開発であり、それらの関係
を後続のコンパイル分析または変換フェーズが照会する
ことができるということである。制御フローと述語の間
の関係を統合するため述語分析を使用することは本発明
の別の利点である。
関係を分析する大域的技術の開発であり、それらの関係
を後続のコンパイル分析または変換フェーズが照会する
ことができるということである。制御フローと述語の間
の関係を統合するため述語分析を使用することは本発明
の別の利点である。
【0019】本発明のシステムおよび方法は、多くの既
知のコンピュータ上で動作することができる。例えば
は、ヒューレット・パッカード社から市販のPA−RI
SC8200である。
知のコンピュータ上で動作することができる。例えば
は、ヒューレット・パッカード社から市販のPA−RI
SC8200である。
【0020】発明の課題を解決する手段として、本発明
は、複数の述語を持つ述語型コードを処理するシステム
を提供する。該システムは、各述語に関する領域を決定
する手段、決定した領域の各々を互いに素の部分集合に
細分化する手段、および、述語の大域的関係を捕捉する
ため細分化された領域の各々に基づいてパーティション
・グラフを構築する手段を備える。
は、複数の述語を持つ述語型コードを処理するシステム
を提供する。該システムは、各述語に関する領域を決定
する手段、決定した領域の各々を互いに素の部分集合に
細分化する手段、および、述語の大域的関係を捕捉する
ため細分化された領域の各々に基づいてパーティション
・グラフを構築する手段を備える。
【0021】
【発明の実施の形態】図1のAおよびBは、それぞれ、
オリジナルの制御フローおよびIF変換コードの例を示
す。IF変換は、すべての6つの基本ブロックを述語型
コードを持つ1つの基本ブロックに変換する。S1および
S2を含む基本ブロックでの切り替えポイントの各々は、
無条件タイプの比較命令に変換される。S4を含む基本ブ
ロックでの合流ポントは、無条件タイプの1つの比較命
令とORタイプの1つの比較命令の組合せに変換され
る。
オリジナルの制御フローおよびIF変換コードの例を示
す。IF変換は、すべての6つの基本ブロックを述語型
コードを持つ1つの基本ブロックに変換する。S1および
S2を含む基本ブロックでの切り替えポイントの各々は、
無条件タイプの比較命令に変換される。S4を含む基本ブ
ロックでの合流ポントは、無条件タイプの1つの比較命
令とORタイプの1つの比較命令の組合せに変換され
る。
【0022】本明細書の記述において、述語の間の関係
を追跡するため述語パーティション・グラフの概念が使
用される。説明を簡略にするため、述語は、各述語がた
だ一度だけ静的に定義される静的単一割り当て形式を持
つと仮定する。このような形式をStatic Single Assign
mentの頭文字をとって以下SSAと呼称する。
を追跡するため述語パーティション・グラフの概念が使
用される。説明を簡略にするため、述語は、各述語がた
だ一度だけ静的に定義される静的単一割り当て形式を持
つと仮定する。このような形式をStatic Single Assign
mentの頭文字をとって以下SSAと呼称する。
【0023】しかし、これは本発明の実施形態上の要件
ではない。図1のBに示されるように、p4は2回定義さ
れている。SSA形式でのp4への参照を記述するため、
関連定義および使用が以下の表3の(3)に示されるよう
な中間形式に変換される。
ではない。図1のBに示されるように、p4は2回定義さ
れている。SSA形式でのp4への参照を記述するため、
関連定義および使用が以下の表3の(3)に示されるよう
な中間形式に変換される。
【0024】
【表3】 (3) ... p4_1 = cmpp.uc (...) if true ... p4_2 = p4_1 | px, where px = cmpp,un (s2 cond) if p2 ... S4 if p4_2 ...
【0025】述語の間の関係を記述するため実行集合の
概念を使用する。まず直線的コードで以下の表記法を定
義し、後に制御フローを取り入れるようにそれらを拡張
する。実行トレースは、直線的コードで最初から最後ま
で実行される命令のすべてを含む。pが真の時トレース
についての命令のすべてが実行されるならば、このトレ
ースは述語pの領域(または基本実行集合)に属してい
る。pの領域は、そのようなトレースのすべてを含む。
注:領域の概念は例示目的のためだけのもので、それら
の経路を列挙する必要はない。曖昧でなければ、pの領
域を意味するため単にpを使用することもできる。
概念を使用する。まず直線的コードで以下の表記法を定
義し、後に制御フローを取り入れるようにそれらを拡張
する。実行トレースは、直線的コードで最初から最後ま
で実行される命令のすべてを含む。pが真の時トレース
についての命令のすべてが実行されるならば、このトレ
ースは述語pの領域(または基本実行集合)に属してい
る。pの領域は、そのようなトレースのすべてを含む。
注:領域の概念は例示目的のためだけのもので、それら
の経路を列挙する必要はない。曖昧でなければ、pの領
域を意味するため単にpを使用することもできる。
【0026】図2で示されるように、述語のパーティシ
ョンは、複数の"互いに素"の部分集合への述語領域の分
割であり、従って、それらの部分集合の和集合は領域に
等しい。例えば、命令p1,p2=cmpp.un,uc ( .. . )if p3
を図で表せば、図2のようになる。p3が真の時、p1およ
びp2の値は常に相補的である。言い換えると、p1および
p2の両方が真である場合非周期的実行経路は存在しな
い。p1またはp2が真であれば、p3が真でなければならな
いことを導出することができる。
ョンは、複数の"互いに素"の部分集合への述語領域の分
割であり、従って、それらの部分集合の和集合は領域に
等しい。例えば、命令p1,p2=cmpp.un,uc ( .. . )if p3
を図で表せば、図2のようになる。p3が真の時、p1およ
びp2の値は常に相補的である。言い換えると、p1および
p2の両方が真である場合非周期的実行経路は存在しな
い。p1またはp2が真であれば、p3が真でなければならな
いことを導出することができる。
【0027】述語パーティション・グラフG=(V,E)にお
いて、Vの中の各ノードpは述語pを表し、各エッジ(p,q)
は、qがパーティションの部分集合であるようなパーテ
ィションがpに存在することを表す。Gにおけるエッジが
指示され、同じパーティションから作成されたエッジは
同じラベルを与えられる。異なるパーティションによっ
て2つの所与のノードの間に複数のエッジが存在するの
で、Gは指示された非周期的複数グラフである。全体集
合p0がユニークなルートであれば、パーティション・グ
ラフは完全である。これは、述語分析で使用されるアル
ゴリズムによって必要とされる場合、あらゆるノードを
ルートから到達可能とさせる。パーティション・グラフ
は述語関係に近似するので、同じコード・ストリームに
関して、いろいろな精度を持つ異なるパーティション・
グラフを作成することができる。
いて、Vの中の各ノードpは述語pを表し、各エッジ(p,q)
は、qがパーティションの部分集合であるようなパーテ
ィションがpに存在することを表す。Gにおけるエッジが
指示され、同じパーティションから作成されたエッジは
同じラベルを与えられる。異なるパーティションによっ
て2つの所与のノードの間に複数のエッジが存在するの
で、Gは指示された非周期的複数グラフである。全体集
合p0がユニークなルートであれば、パーティション・グ
ラフは完全である。これは、述語分析で使用されるアル
ゴリズムによって必要とされる場合、あらゆるノードを
ルートから到達可能とさせる。パーティション・グラフ
は述語関係に近似するので、同じコード・ストリームに
関して、いろいろな精度を持つ異なるパーティション・
グラフを作成することができる。
【0028】図1のBで示されたif変換されたコード
のためのパーティション・グラフが図3のBに示され
る。図3のBは領域がどのように分割されるかを理解す
るのに役立つ。パーティション・グラフのルートp0は、
l1でp2およびp3に細分化される。l4で、p2は、p5、およ
びこのパーティションを完成させるために作成される暗
黙的述語pxに細分化される。命令l1およびl2は両方とも
に無条件の比較タイプを持ち、同じ条件について調べる
ので、これらの2つの命令は、本質的に値合同である。
従って、p3およびp4_1は常に同じ値を持ち、同じ述語ノ
ードにマップされることができる。l5において、pxおよ
び4_1和集合がp4_2に関する領域を形成する。p4_2の補
集合は、p5であり、親述語としてp0を、子述語としてp4
_2およびp5を持つ別のパーティションを生成する。この
ステップは、p4_2をルートから到達可能にするため必要
である。上記は、図3のAに示されている。
のためのパーティション・グラフが図3のBに示され
る。図3のBは領域がどのように分割されるかを理解す
るのに役立つ。パーティション・グラフのルートp0は、
l1でp2およびp3に細分化される。l4で、p2は、p5、およ
びこのパーティションを完成させるために作成される暗
黙的述語pxに細分化される。命令l1およびl2は両方とも
に無条件の比較タイプを持ち、同じ条件について調べる
ので、これらの2つの命令は、本質的に値合同である。
従って、p3およびp4_1は常に同じ値を持ち、同じ述語ノ
ードにマップされることができる。l5において、pxおよ
び4_1和集合がp4_2に関する領域を形成する。p4_2の補
集合は、p5であり、親述語としてp0を、子述語としてp4
_2およびp5を持つ別のパーティションを生成する。この
ステップは、p4_2をルートから到達可能にするため必要
である。上記は、図3のAに示されている。
【0029】パーティション・グラフが構築されると、
そのグラフに基づく大域的述語照会システムを構築し
て、述語型関係に関する(以下のような)多数の異なる照
会をサポートすることができる。
そのグラフに基づく大域的述語照会システムを構築し
て、述語型関係に関する(以下のような)多数の異なる照
会をサポートすることができる。
【0030】isDisjoint(p.q.): 述語pの領域が述語qの
領域と重なるかどうかを照会する。2つの述語が同じパ
ーティションの異なるエッジを経由して2つの共通の先
祖に到達することができれば、それら2つの述語は"互
いに素"である。例えば、図3のAにおいて、p3およびp
5は互いに素であるが、p2およびp4_2は互いに素ではな
い。注:この点は、pxがp2およびp4_2の部分集合である
ように示されている図3のBの領域関係から明白であ
る。Qが述語の集合である場合、この照会をIsDisjoint
(p.Q.)に展開することは容易であり、回答は、pがQにお
けるあらゆる述語と互いに素であれば、真である。
領域と重なるかどうかを照会する。2つの述語が同じパ
ーティションの異なるエッジを経由して2つの共通の先
祖に到達することができれば、それら2つの述語は"互
いに素"である。例えば、図3のAにおいて、p3およびp
5は互いに素であるが、p2およびp4_2は互いに素ではな
い。注:この点は、pxがp2およびp4_2の部分集合である
ように示されている図3のBの領域関係から明白であ
る。Qが述語の集合である場合、この照会をIsDisjoint
(p.Q.)に展開することは容易であり、回答は、pがQにお
けるあらゆる述語と互いに素であれば、真である。
【0031】IsSuperset(p,q): pの領域がqの領域の上
位集合であるかどうかを照会する。pからqへのエッジが
存在すれば、述語pは述語qの上位集合である。例えば、
図3のAにおいて、p2はp5の上位集合である。
位集合であるかどうかを照会する。pからqへのエッジが
存在すれば、述語pは述語qの上位集合である。例えば、
図3のAにおいて、p2はp5の上位集合である。
【0032】IsComplement(p,q): pおよびqの領域が互
いに補集合であるかどうか照会する。述語pおよびqは、
それらの領域の和集合が既存の述語の和集合と等しけれ
ば、補集合であり、それらの領域の共通部分は空集合で
ある。
いに補集合であるかどうか照会する。述語pおよびqは、
それらの領域の和集合が既存の述語の和集合と等しけれ
ば、補集合であり、それらの領域の共通部分は空集合で
ある。
【0033】LeastUpperBoundSum(p,Q): 述語集合Qに述
語pを加える計算結果の集合の領域は、pの領域およびQ
の領域の和集合の最小上位集合である。あるパーティシ
ョンの中の子述語のすべてがpおよびQの和集合に現れれ
ば、それら子述語はそれらの親述語と置き換えられるこ
とによって、上記計算結果の集合は簡略化される。
語pを加える計算結果の集合の領域は、pの領域およびQ
の領域の和集合の最小上位集合である。あるパーティシ
ョンの中の子述語のすべてがpおよびQの和集合に現れれ
ば、それら子述語はそれらの親述語と置き換えられるこ
とによって、上記計算結果の集合は簡略化される。
【0034】LeastUpperBoundDiff(p,Q): 述語集合Qか
ら述語pを減ずる。計算結果の集合の領域は、pの領域に
よって減じられたQの領域の最小上位集合である。例え
ば、図3のAにおいて、pxはLeastUpperBoundDiff(p5,p
2)と等しい。
ら述語pを減ずる。計算結果の集合の領域は、pの領域に
よって減じられたQの領域の最小上位集合である。例え
ば、図3のAにおいて、pxはLeastUpperBoundDiff(p5,p
2)と等しい。
【0035】制御フローを分析するため、制御述語が基
本ブロックに割り当てられ、制御フロー切り替えおよび
合流ポイントにおいてパーティションが形成される。特
別の関心が下記の制御フロー構造に払われるとはいえ、
本発明の述語分析は、簡略不可能なグラフ、切り替え文
その他を含むいかなる任意の制御フロー・グラフをも取
り扱う。
本ブロックに割り当てられ、制御フロー切り替えおよび
合流ポイントにおいてパーティションが形成される。特
別の関心が下記の制御フロー構造に払われるとはいえ、
本発明の述語分析は、簡略不可能なグラフ、切り替え文
その他を含むいかなる任意の制御フロー・グラフをも取
り扱う。
【0036】臨界エッジ−臨界エッジは、そのソースが
複数の後続ノードを持ち、その行き先が複数の先行ノー
ドを持つエッジとして定義される。例えば、図1のAに
おいて、S2からS4へのエッジは臨界エッジである。切り
替え(合流)ポイントにおいて、臨界エッジは、パーティ
ションにおける子述語として行き先(ソース)ノードの制
御述語の使用を防ぐ。このことは、この臨界エッジ上
で、ソース・ノードが行き先ノードを支配しないためあ
るいは行き先ノードがソース・ノードを事後支配しない
ため、発生する。この問題を解決するため、本発明は、
臨界エッジ上にノードを概念的に作成し、暗黙的述語を
ノードに割り当てる。注:このエッジ分割は概念レベル
で行われるもので、CFGを実際に変えない。この仮想
エッジ分割によって、すべての先行ノードは切り替えポ
イントにおいてそれらの後続ノードを支配し、すべての
後続ノードは合流ポイントにおいてその先行ノードを事
後支配する。これによってパーティションの作成が単純
化される。注:ノードpがノードqを支配または事後支配
すれば、pはパーティション・グラフにおいて常にqの先
祖であり得る。
複数の後続ノードを持ち、その行き先が複数の先行ノー
ドを持つエッジとして定義される。例えば、図1のAに
おいて、S2からS4へのエッジは臨界エッジである。切り
替え(合流)ポイントにおいて、臨界エッジは、パーティ
ションにおける子述語として行き先(ソース)ノードの制
御述語の使用を防ぐ。このことは、この臨界エッジ上
で、ソース・ノードが行き先ノードを支配しないためあ
るいは行き先ノードがソース・ノードを事後支配しない
ため、発生する。この問題を解決するため、本発明は、
臨界エッジ上にノードを概念的に作成し、暗黙的述語を
ノードに割り当てる。注:このエッジ分割は概念レベル
で行われるもので、CFGを実際に変えない。この仮想
エッジ分割によって、すべての先行ノードは切り替えポ
イントにおいてそれらの後続ノードを支配し、すべての
後続ノードは合流ポイントにおいてその先行ノードを事
後支配する。これによってパーティションの作成が単純
化される。注:ノードpがノードqを支配または事後支配
すれば、pはパーティション・グラフにおいて常にqの先
祖であり得る。
【0037】バック・エッジ−バック・エッジはCFG
におけるサイクルを完了するエッジである。現在の技術
では、述語分析においてバック・エッジを考慮したとし
ても、述語に関して導出できる有用な情報は少ない。例
えば、ループにおいて囲われるif-then-else構造は、th
en-およびelse-節の両方が同じ繰り返しの中で実行され
ることはないが、別の繰り返しの中では実行される場合
がある。従って、この2つの節に割り当てられる述語
は、特定の繰り返しの範囲内では互いに素であるが、繰
り返し全体にわたって互いに素であるとは限らない。こ
の述語分析の結果は、バック・エッジを無視して割り込
まれる。これは、分析精度に対する影響をほとんど持た
ない。これは、if変換がすでに非周期的な地域に制限
されているという事実に部分的による。パーティション
・グラフ構築の間、バック・エッジも、また、仮想ノー
ドをそれらに割り当てることによって、分割される。本
発明の分析は、簡略化不可能なグラフにも適用できる。
しかしながら、バック・エッジは簡略化不可能なグラフ
に対してむしろ恣意的に選択されるので、結果の精度は
あまり高くないかもしれない。
におけるサイクルを完了するエッジである。現在の技術
では、述語分析においてバック・エッジを考慮したとし
ても、述語に関して導出できる有用な情報は少ない。例
えば、ループにおいて囲われるif-then-else構造は、th
en-およびelse-節の両方が同じ繰り返しの中で実行され
ることはないが、別の繰り返しの中では実行される場合
がある。従って、この2つの節に割り当てられる述語
は、特定の繰り返しの範囲内では互いに素であるが、繰
り返し全体にわたって互いに素であるとは限らない。こ
の述語分析の結果は、バック・エッジを無視して割り込
まれる。これは、分析精度に対する影響をほとんど持た
ない。これは、if変換がすでに非周期的な地域に制限
されているという事実に部分的による。パーティション
・グラフ構築の間、バック・エッジも、また、仮想ノー
ドをそれらに割り当てることによって、分割される。本
発明の分析は、簡略化不可能なグラフにも適用できる。
しかしながら、バック・エッジは簡略化不可能なグラフ
に対してむしろ恣意的に選択されるので、結果の精度は
あまり高くないかもしれない。
【0038】図4は、制御述語に基づいてパーティショ
ン・グラフを構築するアルゴリズムを示す。入力はCF
Gである。臨界エッジおよびバック・エッジに関する分
割が先ず実行される(ステップ401)。制御同等ノード
の検出(ステップ402)は正確性にとって不可欠のもの
ではないが、制御同等領域を持つノードが同じ述語にマ
ップされる(ステップ403)と述語分析の精度は向上す
る。すべてのプログラム切り替えおよび合流ポイントに
おいてパーティションを作成して(ステップ404およ
び405)、述語関係を追跡する。最後に(ステップ40
6)、非開始ノードが親ノードを持っていなければ、パ
ーティションを作成し、そのノードをその最近接の支配
ノードに結合して、パーティション・グラフを完成させ
る。
ン・グラフを構築するアルゴリズムを示す。入力はCF
Gである。臨界エッジおよびバック・エッジに関する分
割が先ず実行される(ステップ401)。制御同等ノード
の検出(ステップ402)は正確性にとって不可欠のもの
ではないが、制御同等領域を持つノードが同じ述語にマ
ップされる(ステップ403)と述語分析の精度は向上す
る。すべてのプログラム切り替えおよび合流ポイントに
おいてパーティションを作成して(ステップ404およ
び405)、述語関係を追跡する。最後に(ステップ40
6)、非開始ノードが親ノードを持っていなければ、パ
ーティションを作成し、そのノードをその最近接の支配
ノードに結合して、パーティション・グラフを完成させ
る。
【0039】図1のAのCFGに基づいて図3のAのパ
ーティション・グラフを構築する方法を以下記述する。
if変換コードに基づいてパーティション・グラフを構
築する本発明の記述と同様に、(図1のAの)ノードS1
は、CFGにおける開始ノードであり、その制御述語と
してp0を与えられる。ノードS6は、S1に対する制御同等
ノードであってp0を同様に割り当てられる。残りのノー
ドに割り当てられる制御述語(p2-p5)は図1のAに示さ
れている。S1における切り替えポイントのため(図3の
Aに符号で示されているように)パーティションaが作
成される。S2からS4へのエッジは臨界エッジであり、px
がこのエッジに割り当てられ、エッジ分割が実行され
る。パーティションbは、S2における切り替えポイント
であるので、作成される。パーティションcおよびdは、
S4およびS6における合流ポイントであるので、作成され
る。
ーティション・グラフを構築する方法を以下記述する。
if変換コードに基づいてパーティション・グラフを構
築する本発明の記述と同様に、(図1のAの)ノードS1
は、CFGにおける開始ノードであり、その制御述語と
してp0を与えられる。ノードS6は、S1に対する制御同等
ノードであってp0を同様に割り当てられる。残りのノー
ドに割り当てられる制御述語(p2-p5)は図1のAに示さ
れている。S1における切り替えポイントのため(図3の
Aに符号で示されているように)パーティションaが作
成される。S2からS4へのエッジは臨界エッジであり、px
がこのエッジに割り当てられ、エッジ分割が実行され
る。パーティションbは、S2における切り替えポイント
であるので、作成される。パーティションcおよびdは、
S4およびS6における合流ポイントであるので、作成され
る。
【0040】実体述語の間のローカルな関係を捕捉する
パーティション・グラフを構築する詳細を以下記述す
る。実体述語の間の関係は、比較(compare)命令のよう
な述語が定義されるポイントの各々において作成され
る。
パーティション・グラフを構築する詳細を以下記述す
る。実体述語の間の関係は、比較(compare)命令のよう
な述語が定義されるポイントの各々において作成され
る。
【0041】図5は、実体述語に関するパーティション
・グラフを構築するアルゴリズムを示す。実体述語を定
義する最も普通のケースは、無条件タイプを持つ比較命
令である(ステップ501)。図5において、親述語とし
てppを持ち、互いに素な子述語としてp1およびp2を持つ
パーティションが作成される。qpがp0であれば、基本ブ
ロックの制御述語であるbpによって現在命令はガードさ
れ、p1およびp2の領域の和集合はbpの領域であることが
観察される。従って、親述語として制御述語bpを持つパ
ーティションが構築される。この点は、制御述語と実体
述語の関係を確立して大域的視野からの述語分析を可能
にする上での鍵である。qpがp0でなければ、この命令が
実行されるかどうかに影響を与える制御条件のすべて
が、定義qpに統合されている。この点は本発明の実施に
おいて確認されている。従って、qpがp0でなければ、p1
およびp2の和集合はqpであり、p1およびp2をbpへ結合さ
せるパーティションを構築する必要はない。比較命令を
ガードする実際の述語(pp)の領域は、常に、bpの領域の
部分集合である。
・グラフを構築するアルゴリズムを示す。実体述語を定
義する最も普通のケースは、無条件タイプを持つ比較命
令である(ステップ501)。図5において、親述語とし
てppを持ち、互いに素な子述語としてp1およびp2を持つ
パーティションが作成される。qpがp0であれば、基本ブ
ロックの制御述語であるbpによって現在命令はガードさ
れ、p1およびp2の領域の和集合はbpの領域であることが
観察される。従って、親述語として制御述語bpを持つパ
ーティションが構築される。この点は、制御述語と実体
述語の関係を確立して大域的視野からの述語分析を可能
にする上での鍵である。qpがp0でなければ、この命令が
実行されるかどうかに影響を与える制御条件のすべて
が、定義qpに統合されている。この点は本発明の実施に
おいて確認されている。従って、qpがp0でなければ、p1
およびp2の和集合はqpであり、p1およびp2をbpへ結合さ
せるパーティションを構築する必要はない。比較命令を
ガードする実際の述語(pp)の領域は、常に、bpの領域の
部分集合である。
【0042】その他の3つのタイプの比較命令は、述語
の前の値が新しい述語に影響を及ぼすという形態での述
語更新を伴う。これらタイプの比較命令が頻繁に使用さ
れず、またパーティション・グラフによるモデル化が簡
単ではないので、本発明はそれらタイプの取り扱いに消
極的である。条件つきのタイプをもつ比較命令に関して
は、qpがp0であれば、この命令は実質的に無条件タイプ
であって、無条件タイプと同じ方法で取り扱う。qpがp0
でなければ、p1およびp2に単にヌルの述語ノードをマッ
プして、述語分析に対する照会の間それらは消極的方法
で取り扱われる。注:onおよびoc(またはanおよびan)目
標述語の両方が比較命令に現れるならば、ただ1つの目
標が存在するかのようにそれらを分離して処理する。an
andタイプの比較命令に関しては、p1の領域は、常に、
p1_oldの領域の部分集合である。an orタイプの比較命
令に関しては、p1の領域は、常に、p1_oldの領域の上位
集合であって、p1を制御述語bpに結合するパーティショ
ンが作成され、パーティション・グラフが完成される。
の前の値が新しい述語に影響を及ぼすという形態での述
語更新を伴う。これらタイプの比較命令が頻繁に使用さ
れず、またパーティション・グラフによるモデル化が簡
単ではないので、本発明はそれらタイプの取り扱いに消
極的である。条件つきのタイプをもつ比較命令に関して
は、qpがp0であれば、この命令は実質的に無条件タイプ
であって、無条件タイプと同じ方法で取り扱う。qpがp0
でなければ、p1およびp2に単にヌルの述語ノードをマッ
プして、述語分析に対する照会の間それらは消極的方法
で取り扱われる。注:onおよびoc(またはanおよびan)目
標述語の両方が比較命令に現れるならば、ただ1つの目
標が存在するかのようにそれらを分離して処理する。an
andタイプの比較命令に関しては、p1の領域は、常に、
p1_oldの領域の部分集合である。an orタイプの比較命
令に関しては、p1の領域は、常に、p1_oldの領域の上位
集合であって、p1を制御述語bpに結合するパーティショ
ンが作成され、パーティション・グラフが完成される。
【0043】図4および図5に示される方法およびシス
テムに基づいて、図6のパーティション・グラフが構築
され、例(1)における述語に関する大域的関係が捕捉さ
れる。if節を含む基本ブロックは、その制御述語とし
てp0を割り当てられ、パーティション・グラフのルート
となる。then節およびelse節はそれらの制御述語として
それぞれp_then節およびp_else節を割り当てられる。述
語の偽への初期化は、パーティション・グラフのにおい
て述語ノードを何も作成しない。if-then-else構造のた
め制御フローにおける切り替えポイントにおいてパーテ
ィションaが作成される。then節において実体述語pお
よびqを割り当てている比較命令のためパーティション
bが作成される。else節において実体述語rおよびsを割
り当てている比較命令のためパーティションcが作成さ
れる。このパーティション・グラフは、p、q、rおよびs
が互いに素という大域的述語関係を追跡する。この関係
は、xおよびyが相互に干渉しないことを保証するために
必要である。
テムに基づいて、図6のパーティション・グラフが構築
され、例(1)における述語に関する大域的関係が捕捉さ
れる。if節を含む基本ブロックは、その制御述語とし
てp0を割り当てられ、パーティション・グラフのルート
となる。then節およびelse節はそれらの制御述語として
それぞれp_then節およびp_else節を割り当てられる。述
語の偽への初期化は、パーティション・グラフのにおい
て述語ノードを何も作成しない。if-then-else構造のた
め制御フローにおける切り替えポイントにおいてパーテ
ィションaが作成される。then節において実体述語pお
よびqを割り当てている比較命令のためパーティション
bが作成される。else節において実体述語rおよびsを割
り当てている比較命令のためパーティションcが作成さ
れる。このパーティション・グラフは、p、q、rおよびs
が互いに素という大域的述語関係を追跡する。この関係
は、xおよびyが相互に干渉しないことを保証するために
必要である。
【0044】本発明のif変換によって生成される比較
命令の2つの共通のパターンがある。プログラム切り替
えポイントに関して、cmpp.un.uc命令が生成され、図5
のシステムおよび方法(ステップ502)がこれを正確に
モデル化する。(しばしば臨界エッジによる)構造化され
ないプログラム合流ポイントに関して、mpp.un.ucおよ
びcmpp.on(またはcmpp.oc)命令の組み合わせが割り当て
られる。図5の中のアルゴリズムは常に正しいが、an o
rタイプの比較命令については消極的かもしれない。そ
の理由は、この初期の実施において、述語を制御する比
較条件が追跡されなかったしまた述語に番号付けの値が
与えられなかったためである。例えば、図1のBのif
変換コードについて、番号付けの値がなければ、p3およ
びp4_1が同じ述語ノードにマップされることができるこ
とを認識できないし、p4_2がp4_1とpxの和集合であるこ
とを把握することはできない。しかしながら、このよう
なタイプの非構造化合流は、if変換比較命令のわずか
な部分(本発明実施形態の経験では10%以下)にすぎな
い。将来、an orタイプの比較命令の正確なモデル化が
行われるであろう。
命令の2つの共通のパターンがある。プログラム切り替
えポイントに関して、cmpp.un.uc命令が生成され、図5
のシステムおよび方法(ステップ502)がこれを正確に
モデル化する。(しばしば臨界エッジによる)構造化され
ないプログラム合流ポイントに関して、mpp.un.ucおよ
びcmpp.on(またはcmpp.oc)命令の組み合わせが割り当て
られる。図5の中のアルゴリズムは常に正しいが、an o
rタイプの比較命令については消極的かもしれない。そ
の理由は、この初期の実施において、述語を制御する比
較条件が追跡されなかったしまた述語に番号付けの値が
与えられなかったためである。例えば、図1のBのif
変換コードについて、番号付けの値がなければ、p3およ
びp4_1が同じ述語ノードにマップされることができるこ
とを認識できないし、p4_2がp4_1とpxの和集合であるこ
とを把握することはできない。しかしながら、このよう
なタイプの非構造化合流は、if変換比較命令のわずか
な部分(本発明実施形態の経験では10%以下)にすぎな
い。将来、an orタイプの比較命令の正確なモデル化が
行われるであろう。
【0045】本発明およびその特長の詳細を以上記述し
たが、本発明の理念および範囲を逸脱することなく種々
の変更修正を行うことができる点は認められるべきであ
ろう。
たが、本発明の理念および範囲を逸脱することなく種々
の変更修正を行うことができる点は認められるべきであ
ろう。
【0046】本発明には、例として次のような実施様態
が含まれる。 (1)複数の述語を持つ述語型コードを処理するシステ
ムであって、各述語に関する領域を決定する手段と、決
定した領域の各々を互いに素の部分集合に細分化する手
段と、述語の大域的関係を捕捉するため細分化された領
域の各々に基づいてパーティション・グラフを構築する
手段と、を備える述語型コード処理システム。 (2)各述語を細分化する上記手段が、制御述語を細分
化する手段を含む、上記(1)に記載の述語型コード処
理システム。 (3)制御述語を細分化する上記手段が、各臨界エッジ
および各バック・エッジに関する仮想ノードを作成する
ことによって臨界エッジおよびバック・エッジを分割す
る手段と、同等制御ノードを確認する手段と、同等制御
ノードの各集合に同一述語を割り当てる手段と、合流ポ
イントおよび切り替えポイントを持つノードに割り当て
られた述語にパーティションを形成する手段と、を含む
上記(2)に記載の述語型コード処理システム。 (4)制御述語を分割する上記手段が、先行ノードを持
たない非開始ノードにとって最近節の支配ノードの中に
パーティションを形成する手段を含む、上記(3)に記
載の述語型コード処理システム。 (5)制御述語を細分化する上記手段が、開始ノードに
対してその制御述語として述語p0を割り当てる手段を含
む、上記(3)に記載の述語型コード処理システム。
が含まれる。 (1)複数の述語を持つ述語型コードを処理するシステ
ムであって、各述語に関する領域を決定する手段と、決
定した領域の各々を互いに素の部分集合に細分化する手
段と、述語の大域的関係を捕捉するため細分化された領
域の各々に基づいてパーティション・グラフを構築する
手段と、を備える述語型コード処理システム。 (2)各述語を細分化する上記手段が、制御述語を細分
化する手段を含む、上記(1)に記載の述語型コード処
理システム。 (3)制御述語を細分化する上記手段が、各臨界エッジ
および各バック・エッジに関する仮想ノードを作成する
ことによって臨界エッジおよびバック・エッジを分割す
る手段と、同等制御ノードを確認する手段と、同等制御
ノードの各集合に同一述語を割り当てる手段と、合流ポ
イントおよび切り替えポイントを持つノードに割り当て
られた述語にパーティションを形成する手段と、を含む
上記(2)に記載の述語型コード処理システム。 (4)制御述語を分割する上記手段が、先行ノードを持
たない非開始ノードにとって最近節の支配ノードの中に
パーティションを形成する手段を含む、上記(3)に記
載の述語型コード処理システム。 (5)制御述語を細分化する上記手段が、開始ノードに
対してその制御述語として述語p0を割り当てる手段を含
む、上記(3)に記載の述語型コード処理システム。
【0047】(6)各述語を細分化する上記手段が、実
体述語を細分化する手段を含む、上記(1)に記載の述
語型コード処理システム。 (7)実体述語を細分化する上記手段が、比較命令を持
つノードに割り当てられた述語にパーティションを形成
する手段を含む、上記(6)に記載の述語型コード処理
システム。 (8)実体述語を細分化する上記手段が、述語を定義す
る定義命令を持つノードに割り当てられた述語にパーテ
ィションを形成する手段を含む、上記(6)に記載の述
語型コード処理システム。 (9)上記述語型コードが複数の基本ブロックに分割さ
れていて、該システムが、2つの基本ブロックが互いに
素であるか否かを判断する手段を更に備える、上記
(1)に記載の述語型コード処理システム。 (10)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、1つの基本ブロックが別の
基本ブロックの上位集合であるか否かを判断する手段を
更に備える、上記(1)に記載の述語型コード処理シス
テム。 (11)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、2つの基本ブロックが互い
に補集合であるか否かを判断する手段を更に備える、上
記(1)に記載の述語型コード処理システム。
体述語を細分化する手段を含む、上記(1)に記載の述
語型コード処理システム。 (7)実体述語を細分化する上記手段が、比較命令を持
つノードに割り当てられた述語にパーティションを形成
する手段を含む、上記(6)に記載の述語型コード処理
システム。 (8)実体述語を細分化する上記手段が、述語を定義す
る定義命令を持つノードに割り当てられた述語にパーテ
ィションを形成する手段を含む、上記(6)に記載の述
語型コード処理システム。 (9)上記述語型コードが複数の基本ブロックに分割さ
れていて、該システムが、2つの基本ブロックが互いに
素であるか否かを判断する手段を更に備える、上記
(1)に記載の述語型コード処理システム。 (10)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、1つの基本ブロックが別の
基本ブロックの上位集合であるか否かを判断する手段を
更に備える、上記(1)に記載の述語型コード処理シス
テム。 (11)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、2つの基本ブロックが互い
に補集合であるか否かを判断する手段を更に備える、上
記(1)に記載の述語型コード処理システム。
【0048】(12)制御フロー・グラフ・コードに関
してif変換を実行してグラフ・コードにおける各命令
に関する述語を形成する手段を更に備える、上記(1)
に記載の述語型コード処理システム。 (13)if変換を実行する上記手段が、各領域を細分
化する上記手段の前に動作する、上記(12)に記載の
述語型コード処理システム。 (14)if変換を実行する上記手段が、パーティショ
ン・グラフを構築する上記手段の後に動作する、上記
(12)に記載の述語型コード処理システム。 (15)上記領域が、述語型コードの基本ブロックを完
全に実行するために必要なすべてのトレースを含み、従
って、ある1つのトレースは、Pが真の時該トレースの
すべての命令が実行されるように、特定の述語pによっ
てガードされる命令集合である、上記(1)に記載の述
語型コード処理システム。 (16)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、基本ブロックに関して制御
述語を作成する手段を更に備える、上記(1)に記載の
述語型コード処理システム。 (17)述語コードの処理が、持続的データ構造の徐々
に増加する更新によって制約されずに、種々のフェーズ
のコンパイラ最適化ルーチンによって呼び出されること
ができる、上記(1)に記載の述語型コード処理システ
ム。
してif変換を実行してグラフ・コードにおける各命令
に関する述語を形成する手段を更に備える、上記(1)
に記載の述語型コード処理システム。 (13)if変換を実行する上記手段が、各領域を細分
化する上記手段の前に動作する、上記(12)に記載の
述語型コード処理システム。 (14)if変換を実行する上記手段が、パーティショ
ン・グラフを構築する上記手段の後に動作する、上記
(12)に記載の述語型コード処理システム。 (15)上記領域が、述語型コードの基本ブロックを完
全に実行するために必要なすべてのトレースを含み、従
って、ある1つのトレースは、Pが真の時該トレースの
すべての命令が実行されるように、特定の述語pによっ
てガードされる命令集合である、上記(1)に記載の述
語型コード処理システム。 (16)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、基本ブロックに関して制御
述語を作成する手段を更に備える、上記(1)に記載の
述語型コード処理システム。 (17)述語コードの処理が、持続的データ構造の徐々
に増加する更新によって制約されずに、種々のフェーズ
のコンパイラ最適化ルーチンによって呼び出されること
ができる、上記(1)に記載の述語型コード処理システ
ム。
【0049】(18)複数の基本ブロックに分割された
コードを処理するシステムであって、各ブロックに関し
て領域を決定する手段と、決定した領域の各々を互いに
素な部分集合に細分化する手段と、述語の大域的関係を
捕捉するため細分化された領域の各々に基づいてパーテ
ィション・グラフを構築する手段と、を備える、コード
処理システム。 (19)2つの基本ブロックが互いに素であるか否かを
判断する手段を更に備える、上記(18)に記載のコー
ド処理システム。 (20)1つの基本ブロックが別の基本ブロックの上位
集合であるか否かを判断する手段を更に備える、上記
(18)に記載のコード処理システム。 (21)2つの基本ブロックが互いに補集合であるか否
かを判断する手段を更に備える、上記(18)に記載の
コード処理システム。
コードを処理するシステムであって、各ブロックに関し
て領域を決定する手段と、決定した領域の各々を互いに
素な部分集合に細分化する手段と、述語の大域的関係を
捕捉するため細分化された領域の各々に基づいてパーテ
ィション・グラフを構築する手段と、を備える、コード
処理システム。 (19)2つの基本ブロックが互いに素であるか否かを
判断する手段を更に備える、上記(18)に記載のコー
ド処理システム。 (20)1つの基本ブロックが別の基本ブロックの上位
集合であるか否かを判断する手段を更に備える、上記
(18)に記載のコード処理システム。 (21)2つの基本ブロックが互いに補集合であるか否
かを判断する手段を更に備える、上記(18)に記載の
コード処理システム。
【0050】(22)複数の述語を持つ述語型コードを
処理する方法であって、各述語に関する領域を決定する
ステップと、決定した領域の各々を互いに素の部分集合
に細分化するステップと、述語の大域的関係を捕捉する
ため細分化された領域の各々に基づいてパーティション
・グラフを構築するステップと、を含む述語型コード処
理方法。 (23)各述語を細分化する上記ステップが、制御述語
を細分化するステップを含む、上記(22)に記載の述
語型コード処理方法。 (24)制御述語を細分化する上記ステップが、各臨界
エッジおよび各バック・エッジに関する仮想ノードを作
成することによって臨界エッジおよびバック・エッジを
分割するステップと、同等制御ノードを確認するステッ
プと、同等制御ノードの各集合に同一述語を割り当てる
ステップと、合流ポイントおよび切り替えポイントを持
つノードに割り当てられた述語にパーティションを形成
するステップと、を含む上記(23)に記載の述語型コ
ード処理方法。 (25)制御述語を分割する上記ステップが、先行ノー
ドを持たない非開始ノードにとって最近節の支配ノード
の中にパーティションを形成するステップを含む、上記
(24)に記載の述語型コード処理方法。 (26)制御述語を細分化する上記ステップが、開始ノ
ードに対してその制御述語として述語p0を割り当てるス
テップを含む、上記(24)に記載の述語型コード処理
方法。 (27)各述語を細分化する上記ステップが、実体述語
を細分化するステップを含む、上記(22)に記載の述
語型コード処理方法。 (28)実体述語を細分化する上記ステップが、比較命
令を持つノードに割り当てられた述語にパーティション
を形成するステップを含む、上記(27)に記載の述語
型コード処理方法。 (29)実体述語を細分化する上記ステップが、述語を
定義する定義命令を持つノードに割り当てられた述語に
パーティションを形成するステップを含む、上記(2
7)に記載の述語型コード処理方法。
処理する方法であって、各述語に関する領域を決定する
ステップと、決定した領域の各々を互いに素の部分集合
に細分化するステップと、述語の大域的関係を捕捉する
ため細分化された領域の各々に基づいてパーティション
・グラフを構築するステップと、を含む述語型コード処
理方法。 (23)各述語を細分化する上記ステップが、制御述語
を細分化するステップを含む、上記(22)に記載の述
語型コード処理方法。 (24)制御述語を細分化する上記ステップが、各臨界
エッジおよび各バック・エッジに関する仮想ノードを作
成することによって臨界エッジおよびバック・エッジを
分割するステップと、同等制御ノードを確認するステッ
プと、同等制御ノードの各集合に同一述語を割り当てる
ステップと、合流ポイントおよび切り替えポイントを持
つノードに割り当てられた述語にパーティションを形成
するステップと、を含む上記(23)に記載の述語型コ
ード処理方法。 (25)制御述語を分割する上記ステップが、先行ノー
ドを持たない非開始ノードにとって最近節の支配ノード
の中にパーティションを形成するステップを含む、上記
(24)に記載の述語型コード処理方法。 (26)制御述語を細分化する上記ステップが、開始ノ
ードに対してその制御述語として述語p0を割り当てるス
テップを含む、上記(24)に記載の述語型コード処理
方法。 (27)各述語を細分化する上記ステップが、実体述語
を細分化するステップを含む、上記(22)に記載の述
語型コード処理方法。 (28)実体述語を細分化する上記ステップが、比較命
令を持つノードに割り当てられた述語にパーティション
を形成するステップを含む、上記(27)に記載の述語
型コード処理方法。 (29)実体述語を細分化する上記ステップが、述語を
定義する定義命令を持つノードに割り当てられた述語に
パーティションを形成するステップを含む、上記(2
7)に記載の述語型コード処理方法。
【0051】(30)上記述語型コードが複数の基本ブ
ロックに分割されていて、該方法が、2つの基本ブロッ
クが互いに素であるか否かを判断するステップを更に備
える、上記(22)に記載の述語型コード処理方法。 (31)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、1つの基本ブロックが別の基本
ブロックの上位集合であるか否かを判断するステップを
更に備える、上記(22)に記載の述語型コード処理方
法。 (32)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、2つの基本ブロックが互いに補
集合であるか否かを判断するステップを更に備える、上
記(22)に記載の述語型コード処理方法。 (33)制御フロー・グラフ・コードに関してif変換
を実行してグラフ・コードにおける各命令に関する述語
を形成するステップを更に備える、上記(22)に記載
の述語型コード処理方法。 (34)if変換を実行する上記ステップが、各領域を
細分化する上記ステップの前に動作する、上記(33)
に記載の述語型コード処理方法。 (35)if変換を実行する上記ステップが、パーティ
ション・グラフを構築する上記ステップの後に動作す
る、上記(33)に記載の述語型コード処理方法。 (36)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、基本ブロックに関して制御述語
を作成するステップを更に備える、上記(22)に記載
の述語型コード処理方法。
ロックに分割されていて、該方法が、2つの基本ブロッ
クが互いに素であるか否かを判断するステップを更に備
える、上記(22)に記載の述語型コード処理方法。 (31)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、1つの基本ブロックが別の基本
ブロックの上位集合であるか否かを判断するステップを
更に備える、上記(22)に記載の述語型コード処理方
法。 (32)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、2つの基本ブロックが互いに補
集合であるか否かを判断するステップを更に備える、上
記(22)に記載の述語型コード処理方法。 (33)制御フロー・グラフ・コードに関してif変換
を実行してグラフ・コードにおける各命令に関する述語
を形成するステップを更に備える、上記(22)に記載
の述語型コード処理方法。 (34)if変換を実行する上記ステップが、各領域を
細分化する上記ステップの前に動作する、上記(33)
に記載の述語型コード処理方法。 (35)if変換を実行する上記ステップが、パーティ
ション・グラフを構築する上記ステップの後に動作す
る、上記(33)に記載の述語型コード処理方法。 (36)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、基本ブロックに関して制御述語
を作成するステップを更に備える、上記(22)に記載
の述語型コード処理方法。
【0052】(37)複数の述語を持ち、述語関係を大
域的に分析するため述語型コードを処理するシステムで
あって、各述語に関する領域を決定する手段と、決定し
た領域の各々を互いに素の部分集合に細分化する手段
と、述語の大域的関係を捕捉するため細分化された領域
の各々に基づいてパーティション・グラフを構築する手
段と、を備える述語型コード処理システム。 (38)各述語を細分化する上記手段が、制御述語を細
分化する手段と、実体述語を細分化する手段と、を含
む、上記(37)に記載の述語型コード処理システム。 (39)制御述語を細分化する上記手段が、各臨界エッ
ジおよび各バック・エッジに関する仮想ノードを作成す
ることによって臨界エッジおよびバック・エッジを分割
する手段と、同等制御ノードを確認する手段と、同等制
御ノードの各集合に同一述語を割り当てる手段と、合流
ポイントおよび切り替えポイントを持つノードに割り当
てられた述語にパーティションを形成する手段と、先行
ノードを持たない非開始ノードにとって最近節の支配ノ
ードの中にパーティションを形成する手段と、開始ノー
ドに対してその制御述語として述語p0を割り当てる手段
と、を含む、上記(38)に記載の述語型コード処理シ
ステム。 (40)実体述語を細分化する上記手段が、比較命令を
持つノードに割り当てられた述語にパーティションを形
成する手段を含む、上記(38)に記載の述語型コード
処理システム。
域的に分析するため述語型コードを処理するシステムで
あって、各述語に関する領域を決定する手段と、決定し
た領域の各々を互いに素の部分集合に細分化する手段
と、述語の大域的関係を捕捉するため細分化された領域
の各々に基づいてパーティション・グラフを構築する手
段と、を備える述語型コード処理システム。 (38)各述語を細分化する上記手段が、制御述語を細
分化する手段と、実体述語を細分化する手段と、を含
む、上記(37)に記載の述語型コード処理システム。 (39)制御述語を細分化する上記手段が、各臨界エッ
ジおよび各バック・エッジに関する仮想ノードを作成す
ることによって臨界エッジおよびバック・エッジを分割
する手段と、同等制御ノードを確認する手段と、同等制
御ノードの各集合に同一述語を割り当てる手段と、合流
ポイントおよび切り替えポイントを持つノードに割り当
てられた述語にパーティションを形成する手段と、先行
ノードを持たない非開始ノードにとって最近節の支配ノ
ードの中にパーティションを形成する手段と、開始ノー
ドに対してその制御述語として述語p0を割り当てる手段
と、を含む、上記(38)に記載の述語型コード処理シ
ステム。 (40)実体述語を細分化する上記手段が、比較命令を
持つノードに割り当てられた述語にパーティションを形
成する手段を含む、上記(38)に記載の述語型コード
処理システム。
【0053】
【発明の効果】本発明によって、述語の間の関係を大域
的に分析することが可能となり、それら関係を後続のコ
ンパイル分析または変換フェーズにおいてそれら述語関
係を照会すること可能となり、述語型コード開発の効率
が向上する。
的に分析することが可能となり、それら関係を後続のコ
ンパイル分析または変換フェーズにおいてそれら述語関
係を照会すること可能となり、述語型コード開発の効率
が向上する。
【図1】Aが制御フロー・グラフの1例を示し、Bがi
f変換コードを示すブロック図である。
f変換コードを示すブロック図である。
【図2】述語領域の間の集合関係を示すブロック図であ
る。
る。
【図3】Aが図1のAの制御フローのパーティション・
グラフを示し、Bがその述語の領域を示すブロック図で
ある。
グラフを示し、Bがその述語の領域を示すブロック図で
ある。
【図4】制御述語に関するパーティション・グラフ構築
の処理の流れ図である。
の処理の流れ図である。
【図5】実体述語に関するパーティション・グラフ構築
の処理の流れ図である。
の処理の流れ図である。
【図6】パーティション・グラフの1例を示すブロック
図である。
図である。
Claims (1)
- 【請求項1】複数の述語を持つ述語型コードを処理する
システムであって、 各述語に関する領域を決定する手段と、 決定した領域の各々を互いに素の部分集合に細分化する
手段と、 述語の大域的関係を捕捉するため細分化された領域の各
々に基づいてパーティション・グラフを構築する手段
と、 を備える述語型コード処理システム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US756,600 | 1985-07-19 | ||
| US08/756,600 US5937195A (en) | 1996-11-27 | 1996-11-27 | Global control flow treatment of predicated code |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH10161882A true JPH10161882A (ja) | 1998-06-19 |
| JPH10161882A5 JPH10161882A5 (ja) | 2005-07-07 |
Family
ID=25044210
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9312965A Withdrawn JPH10161882A (ja) | 1996-11-27 | 1997-11-14 | 述語型コード処理システム |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5937195A (ja) |
| JP (1) | JPH10161882A (ja) |
Families Citing this family (62)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6807583B2 (en) * | 1997-09-24 | 2004-10-19 | Carleton University | Method of determining causal connections between events recorded during process execution |
| US6427234B1 (en) * | 1998-06-11 | 2002-07-30 | University Of Washington | System and method for performing selective dynamic compilation using run-time information |
| US6324496B1 (en) * | 1998-06-18 | 2001-11-27 | Lucent Technologies Inc. | Model checking of hierarchical state machines |
| US6182284B1 (en) * | 1998-09-30 | 2001-01-30 | Hewlett-Packard Company | Method and system for eliminating phi instruction resource interferences and redundant copy instructions from static-single-assignment-form computer code |
| US6564372B1 (en) * | 1999-02-17 | 2003-05-13 | Elbrus International Limited | Critical path optimization-unzipping |
| JP3838825B2 (ja) * | 1999-09-27 | 2006-10-25 | 富士通株式会社 | システム解析装置及び方法、並びに解析プログラムを格納した記憶媒体 |
| US6505345B1 (en) * | 2000-01-18 | 2003-01-07 | Intel Corporation | Optimization of initialization of parallel compare predicates in a computer system |
| US6637026B1 (en) * | 2000-03-01 | 2003-10-21 | Intel Corporation | Instruction reducing predicate copy |
| US6631465B1 (en) * | 2000-06-30 | 2003-10-07 | Intel Corporation | Method and apparatus for instruction re-alignment using a branch on a falsehood of a qualifying predicate |
| US20030023959A1 (en) * | 2001-02-07 | 2003-01-30 | Park Joseph C.H. | General and efficient method for transforming predicated execution to static speculation |
| US20020144101A1 (en) * | 2001-03-30 | 2002-10-03 | Hong Wang | Caching DAG traces |
| US6834383B2 (en) * | 2001-11-26 | 2004-12-21 | Microsoft Corporation | Method for binary-level branch reversal on computer architectures supporting predicated execution |
| US7143403B2 (en) * | 2002-06-18 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | System and method for merging control flow paths |
| US7065759B2 (en) * | 2002-06-18 | 2006-06-20 | Hewlett-Packard Development Company, L.P. | System and method for assigning basic blocks to computer control flow paths |
| US7120898B2 (en) | 2003-06-26 | 2006-10-10 | Microsoft Corporation | Intermediate representation for multiple exception handling models |
| US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
| US7305666B2 (en) * | 2003-07-23 | 2007-12-04 | Microsoft Corporation | Description language for an extensible compiler and tools infrastructure |
| US7707566B2 (en) | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
| US7146606B2 (en) * | 2003-06-26 | 2006-12-05 | Microsoft Corporation | General purpose intermediate representation of software for software development tools |
| US7685581B2 (en) * | 2003-06-27 | 2010-03-23 | Microsoft Corporation | Type system for representing and checking consistency of heterogeneous program components during the process of compilation |
| US7086041B2 (en) * | 2003-06-27 | 2006-08-01 | Microsoft Corporation | Extensible type system for representing and checking consistency of program components during the process of compilation |
| US7788652B2 (en) * | 2003-06-27 | 2010-08-31 | Microsoft Corporation | Representing type information in a compiler and programming tools framework |
| US7584455B2 (en) * | 2003-10-23 | 2009-09-01 | Microsoft Corporation | Predicate-based test coverage and generation |
| US7536379B2 (en) * | 2004-12-15 | 2009-05-19 | International Business Machines Corporation | Performing a multiple table join operating based on generated predicates from materialized results |
| US7774769B2 (en) * | 2005-09-22 | 2010-08-10 | Intel Corporation | Transmitting trace-specific information in a transformed application |
| US20090037887A1 (en) * | 2007-07-30 | 2009-02-05 | Chavan Shasank K | Compiler-inserted predicated tracing |
| US8225295B2 (en) * | 2007-09-21 | 2012-07-17 | Jens Palsberg | Register allocation by puzzle solving |
| US8484611B2 (en) * | 2007-10-15 | 2013-07-09 | International Business Machines Corporation | Method and system for simplified assembly of information processing applications |
| US8312426B2 (en) * | 2008-01-07 | 2012-11-13 | International Business Machines Corporation | Method and system for simplified service composition in web environment |
| US8239828B2 (en) * | 2008-01-08 | 2012-08-07 | International Business Machines Corporation | Method of recovering from software failures using replanning |
| US8245122B2 (en) * | 2008-01-08 | 2012-08-14 | International Business Machines Corporation | Method and system for modeling user requests, applications and components used in dynamic application assembly |
| US8640149B2 (en) * | 2008-03-26 | 2014-01-28 | International Business Machines Corporation | Method and apparatus for dynamic web service composition and invocation |
| US8949140B2 (en) * | 2008-04-21 | 2015-02-03 | International Business Machines Corporation | Method and system for dynamic software reconfiguration triggered by component- or system- initiated events |
| US8898624B2 (en) * | 2008-05-05 | 2014-11-25 | International Business Machines Corporation | Method and apparatus for simplified assembly of parametric information processing applications |
| US8327339B2 (en) * | 2008-06-30 | 2012-12-04 | Oracle America, Inc. | Method and system for fast static taint analysis |
| US8296748B2 (en) * | 2008-07-24 | 2012-10-23 | Intel Corporation | Method and system for intermediate representation of source code |
| US9305238B2 (en) | 2008-08-29 | 2016-04-05 | Oracle International Corporation | Framework for supporting regular expression-based pattern matching in data streams |
| US8935293B2 (en) | 2009-03-02 | 2015-01-13 | Oracle International Corporation | Framework for dynamically generating tuple and page classes |
| US8959106B2 (en) | 2009-12-28 | 2015-02-17 | Oracle International Corporation | Class loading using java data cartridges |
| US9430494B2 (en) | 2009-12-28 | 2016-08-30 | Oracle International Corporation | Spatial data cartridge for event processing systems |
| US9305057B2 (en) | 2009-12-28 | 2016-04-05 | Oracle International Corporation | Extensible indexing framework using data cartridges |
| US8713049B2 (en) | 2010-09-17 | 2014-04-29 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
| US9189280B2 (en) | 2010-11-18 | 2015-11-17 | Oracle International Corporation | Tracking large numbers of moving objects in an event processing system |
| US8990416B2 (en) | 2011-05-06 | 2015-03-24 | Oracle International Corporation | Support for a new insert stream (ISTREAM) operation in complex event processing (CEP) |
| US9329975B2 (en) | 2011-07-07 | 2016-05-03 | Oracle International Corporation | Continuous query language (CQL) debugger in complex event processing (CEP) |
| US9563663B2 (en) | 2012-09-28 | 2017-02-07 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
| US9805095B2 (en) | 2012-09-28 | 2017-10-31 | Oracle International Corporation | State initialization for continuous queries over archived views |
| US10956422B2 (en) | 2012-12-05 | 2021-03-23 | Oracle International Corporation | Integrating event processing with map-reduce |
| US9098587B2 (en) | 2013-01-15 | 2015-08-04 | Oracle International Corporation | Variable duration non-event pattern matching |
| US10298444B2 (en) | 2013-01-15 | 2019-05-21 | Oracle International Corporation | Variable duration windows on continuous data streams |
| US9047249B2 (en) | 2013-02-19 | 2015-06-02 | Oracle International Corporation | Handling faults in a continuous event processing (CEP) system |
| US9390135B2 (en) | 2013-02-19 | 2016-07-12 | Oracle International Corporation | Executing continuous event processing (CEP) queries in parallel |
| US9286032B2 (en) | 2013-03-15 | 2016-03-15 | International Business Machines Corporation | Automated software composition |
| US9418113B2 (en) | 2013-05-30 | 2016-08-16 | Oracle International Corporation | Value based windows on relations in continuous data streams |
| US9569187B2 (en) | 2013-10-08 | 2017-02-14 | International Business Machines Corporation | Irreducible modules |
| US9934279B2 (en) | 2013-12-05 | 2018-04-03 | Oracle International Corporation | Pattern matching across multiple input data streams |
| US9244978B2 (en) | 2014-06-11 | 2016-01-26 | Oracle International Corporation | Custom partitioning of a data stream |
| US9712645B2 (en) | 2014-06-26 | 2017-07-18 | Oracle International Corporation | Embedded event processing |
| US10120907B2 (en) | 2014-09-24 | 2018-11-06 | Oracle International Corporation | Scaling event processing using distributed flows and map-reduce operations |
| US9886486B2 (en) | 2014-09-24 | 2018-02-06 | Oracle International Corporation | Enriching events with dynamically typed big data for event processing |
| WO2017018901A1 (en) | 2015-07-24 | 2017-02-02 | Oracle International Corporation | Visually exploring and analyzing event streams |
| CN114003868B (zh) * | 2021-11-04 | 2026-01-23 | 中国科学院计算技术研究所 | 一种处理软件代码的方法和电子设备 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4782444A (en) * | 1985-12-17 | 1988-11-01 | International Business Machine Corporation | Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering |
| US5161216A (en) * | 1989-03-08 | 1992-11-03 | Wisconsin Alumni Research Foundation | Interprocedural slicing of computer programs using dependence graphs |
| US5339238A (en) * | 1991-03-07 | 1994-08-16 | Benson Thomas R | Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph |
| 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 |
| CA2102089C (en) * | 1993-10-29 | 1999-05-25 | David M. Gillies | Recompilation of computer programs for enhanced optimization |
| US5659754A (en) * | 1995-03-31 | 1997-08-19 | Sun Microsystems, Inc. | Method and apparatus for an improved optimizing compiler |
-
1996
- 1996-11-27 US US08/756,600 patent/US5937195A/en not_active Expired - Lifetime
-
1997
- 1997-11-14 JP JP9312965A patent/JPH10161882A/ja not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| US5937195A (en) | 1999-08-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH10161882A (ja) | 述語型コード処理システム | |
| Deutsch | Interprocedural may-alias analysis for pointers: Beyond k-limiting | |
| Crew | ASTLOG: A Language for Examining Abstract Syntax Trees. | |
| Kirner et al. | Transformation of path information for WCET analysis during compilation | |
| Schneider et al. | A verified compiler for synchronous programs with local declarations | |
| Alt et al. | Cosy compiler phase embedding with the cosy compiler model | |
| Cedersjö et al. | Tÿcho: a framework for compiling stream programs | |
| Darabi et al. | A verification technique for deterministic parallel programs | |
| Kojarski et al. | Modeling aspect mechanisms: A top-down approach | |
| Zavatteri et al. | Repair of unsound data-aware process models | |
| Palsberg et al. | A new approach to compiling adaptive programs | |
| Amla et al. | Abstract patterns of compositional reasoning | |
| Ulmann | Multi-level rewriting for stream processing to RTL compilation | |
| HAOKUN | Survey About Value Numbering Optimization | |
| Hoffmann et al. | Towards rule-based visual programming of generic visual systems | |
| Andres et al. | EDS—Collaborating for a high performance parallel relational database | |
| Fronc et al. | Towards a certified Petri net model-checker | |
| Dancanet et al. | Programming language expressiveness and circuit complexity | |
| Liua et al. | A survey of siphons in Petri nets | |
| Baxter | Parallel support for source code analysis and modification | |
| Fenwick Jr et al. | Global compiler analysis for optimizing tuplespace communication on distributed systems | |
| Omer et al. | Monitoring Distributed Systems Based on Partial Order Executions with Global States | |
| Castro et al. | Structure, semantics and speedup: reasoning about structured parallel programs using dependent types | |
| Wöhrer et al. | Logical optimization of dataflows for data mining and integration processes | |
| Reps | G. Ramalingam Microsoft Research India; Bangalore, India |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041108 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041108 |
|
| A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060320 |