JPH0667868A - アルゴリズムを記号評価する方法およびアルゴリズムをトランスレートする装置 - Google Patents
アルゴリズムを記号評価する方法およびアルゴリズムをトランスレートする装置Info
- Publication number
- JPH0667868A JPH0667868A JP5029567A JP2956793A JPH0667868A JP H0667868 A JPH0667868 A JP H0667868A JP 5029567 A JP5029567 A JP 5029567A JP 2956793 A JP2956793 A JP 2956793A JP H0667868 A JPH0667868 A JP H0667868A
- Authority
- JP
- Japan
- Prior art keywords
- node
- conditional
- algorithm
- branch
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
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/49—Partial evaluation
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)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 ソフトウェアからハードウェアへの変換を可
能とするアルゴリズムの記号評価方法およびその装置を
提供すること。 【構造】 このアルゴリズムは、少なくとも一つの入力
データの値に依存した少なくとも一つの条件分岐ステー
トメントを有する。この方法は、アルゴリズムを複数の
ノード(各ノードは複数のステートメントのうちの少な
くとも一つを表す)を有する制御フローグラフに変換す
る工程を含む。この制御フローグラフは、データ依存性
条件付分岐ステートメントの各々に対し一つの条件付分
岐ノードを更に含む。次に複数のノードの各々に対する
逆ドミネータを計算し、これら逆ドミネータから各々の
条件付分岐ノードに対する合流点ノードを引き出す。
能とするアルゴリズムの記号評価方法およびその装置を
提供すること。 【構造】 このアルゴリズムは、少なくとも一つの入力
データの値に依存した少なくとも一つの条件分岐ステー
トメントを有する。この方法は、アルゴリズムを複数の
ノード(各ノードは複数のステートメントのうちの少な
くとも一つを表す)を有する制御フローグラフに変換す
る工程を含む。この制御フローグラフは、データ依存性
条件付分岐ステートメントの各々に対し一つの条件付分
岐ノードを更に含む。次に複数のノードの各々に対する
逆ドミネータを計算し、これら逆ドミネータから各々の
条件付分岐ノードに対する合流点ノードを引き出す。
Description
【0001】
【産業上の利用分野】本発明は、一般的には記号のイン
タープリテイション技術の分野に関し、詳細にはデータ
依存性制御フローによりアルゴリズムを記号評価する方
法に関する。
タープリテイション技術の分野に関し、詳細にはデータ
依存性制御フローによりアルゴリズムを記号評価する方
法に関する。
【0002】
【従来の技術】所定のデジタル信号処理(DSP)アプ
リケーションを実現して必要な性能を得るのに、カスタ
ムデザインの集積回路が設計されることが多い。このこ
とは、一回のクロックサイクルで何回もの計算を行う並
列アーキテクチャを必要とするDSPアプリケーション
に特に当てはまる。一般的にデザイナーはまずアルゴリ
ズムの試験台となるソフトウェアでDSPアルゴリズム
を作成する。このDSPアルゴリズムがソフトウェアで
充分にテストされ、デバッグされた後に、このアルゴリ
ズムはソフトウェアでの実現を忠実に再現するようハー
ドウェアで再度実現される。しかしながら、ハードウェ
アの設計で利用できるツールおよび基本ビルディングブ
ロックは異なるので、達成できるハードウェアの実現
は、ソフトウェアのプロトタイプとは、異なって機能し
たり、機能しなかったりすることがある。したがって、
再実現プロセスから生じるエラーを除くことができるよ
うソフトウェアの実現からハードウェアの実現を直接に
導くことができるトランスレータが望まれている。
リケーションを実現して必要な性能を得るのに、カスタ
ムデザインの集積回路が設計されることが多い。このこ
とは、一回のクロックサイクルで何回もの計算を行う並
列アーキテクチャを必要とするDSPアプリケーション
に特に当てはまる。一般的にデザイナーはまずアルゴリ
ズムの試験台となるソフトウェアでDSPアルゴリズム
を作成する。このDSPアルゴリズムがソフトウェアで
充分にテストされ、デバッグされた後に、このアルゴリ
ズムはソフトウェアでの実現を忠実に再現するようハー
ドウェアで再度実現される。しかしながら、ハードウェ
アの設計で利用できるツールおよび基本ビルディングブ
ロックは異なるので、達成できるハードウェアの実現
は、ソフトウェアのプロトタイプとは、異なって機能し
たり、機能しなかったりすることがある。したがって、
再実現プロセスから生じるエラーを除くことができるよ
うソフトウェアの実現からハードウェアの実現を直接に
導くことができるトランスレータが望まれている。
【0003】
【発明が解決しようとする課題】ソフトウェアからハー
ドウェアへのトランスレーションの達成を行う一つの方
法は、ソフトウェアのアルゴリズムをまずデータフロー
グラフにトランスレートすることであり、このデータフ
ローグラフからハードウェア回路を構成できる。トラン
スレーションの一つの技術として記号評価方法がある
が、この方法は部分的評価のコンパイル技術と関係して
いる。部分評価方法とは、既知の入力データを備えたプ
ログラムの部分を評価するもので、特定されていない入
力データを備えたプログラム部分は、実行時にしか評価
されない。従って、プログラムにデータ依存性がない場
合、プログラムは完全に評価できる。しかしながら、デ
ータに依存しないアルゴリズムはほとんど無い。例え
ば、IFステートメントの条件またはFORループ上の
境界がある入力データに依存している場合、アルゴリズ
ムはデータ依存制御フローを有することになる。
ドウェアへのトランスレーションの達成を行う一つの方
法は、ソフトウェアのアルゴリズムをまずデータフロー
グラフにトランスレートすることであり、このデータフ
ローグラフからハードウェア回路を構成できる。トラン
スレーションの一つの技術として記号評価方法がある
が、この方法は部分的評価のコンパイル技術と関係して
いる。部分評価方法とは、既知の入力データを備えたプ
ログラムの部分を評価するもので、特定されていない入
力データを備えたプログラム部分は、実行時にしか評価
されない。従って、プログラムにデータ依存性がない場
合、プログラムは完全に評価できる。しかしながら、デ
ータに依存しないアルゴリズムはほとんど無い。例え
ば、IFステートメントの条件またはFORループ上の
境界がある入力データに依存している場合、アルゴリズ
ムはデータ依存制御フローを有することになる。
【0004】従来の記号評価方法は、データ依存制御フ
ローを備えたアルゴリズムを満足できるよう処理できな
い。従って、データ依存制御フローを備えたアルゴリズ
ムを記号評価する技術が望まれてきた。かかる技術は、
この技術をDPS用ハードウェアの設計に応用するのに
役立つだけでなく、コンパイラーによるプログラムの最
適化および並列化を利用するアプリケーションにも役立
つ。
ローを備えたアルゴリズムを満足できるよう処理できな
い。従って、データ依存制御フローを備えたアルゴリズ
ムを記号評価する技術が望まれてきた。かかる技術は、
この技術をDPS用ハードウェアの設計に応用するのに
役立つだけでなく、コンパイラーによるプログラムの最
適化および並列化を利用するアプリケーションにも役立
つ。
【0005】
【課題を解決するための手段および作用】本発明によれ
ば、従来技術に関連した欠点および問題を実質的に解消
または減少したデータ依存性制御フロー評価方法が提供
される。
ば、従来技術に関連した欠点および問題を実質的に解消
または減少したデータ依存性制御フロー評価方法が提供
される。
【0006】本発明の一つの様相によれば、アルゴリズ
ムを記号評価する方法が提供される。このアルゴリズム
は、少なくとも一つの入力データの値に依存した少なく
とも一つの条件分岐付ステートメントを有する。この方
法は、アルゴリズムを複数のノード(各ノードは複数の
ステートメントのうちの少なくとも一つを表す)を有す
る制御フローグラフに変換する工程を含む。この制御フ
ローグラフは、データ依存性条件付分岐ステートメント
の各々に対し一つの条件付分岐ノードを更に含む。次に
複数のノードの各々に対する逆ドミネータを計算し、こ
れら逆ドミネータから各々の条件付分岐ノードに対する
合流点ノードを引き出す。
ムを記号評価する方法が提供される。このアルゴリズム
は、少なくとも一つの入力データの値に依存した少なく
とも一つの条件分岐付ステートメントを有する。この方
法は、アルゴリズムを複数のノード(各ノードは複数の
ステートメントのうちの少なくとも一つを表す)を有す
る制御フローグラフに変換する工程を含む。この制御フ
ローグラフは、データ依存性条件付分岐ステートメント
の各々に対し一つの条件付分岐ノードを更に含む。次に
複数のノードの各々に対する逆ドミネータを計算し、こ
れら逆ドミネータから各々の条件付分岐ノードに対する
合流点ノードを引き出す。
【0007】本方法は、更にアルゴリズムで参照される
すべての変数を含むシャドー記号表を作成し、かつ条件
付分岐ノードに応答してデータの各々の可能な値に対し
重複したシャドー記号表を作成するようになっている。
換言すれば、評価に達したとき条件付分岐ステートメン
トの各々の可能な分岐に対し、一つのシャドー記号表例
を作成する。
すべての変数を含むシャドー記号表を作成し、かつ条件
付分岐ノードに応答してデータの各々の可能な値に対し
重複したシャドー記号表を作成するようになっている。
換言すれば、評価に達したとき条件付分岐ステートメン
トの各々の可能な分岐に対し、一つのシャドー記号表例
を作成する。
【0008】本方法は、さらに制御フローに従って各ノ
ードを次々に記号的に評価し、シャドー記号表内の変数
の各々に一つの記号値を割り当てる。各々の分岐に対
し、データを各々の可能な値とし、シャドー記号表内の
変数の各々に記号値を割り当てることにより条件付分岐
ノードを評価する。各々の分岐は、その合流点ノードに
達するまで別々かつ次々に評価される。次に重複された
シャドー記号表がマージされ、別々の分岐に沿って異な
る記号値を得た各々の変数のを表す条件式となる。
ードを次々に記号的に評価し、シャドー記号表内の変数
の各々に一つの記号値を割り当てる。各々の分岐に対
し、データを各々の可能な値とし、シャドー記号表内の
変数の各々に記号値を割り当てることにより条件付分岐
ノードを評価する。各々の分岐は、その合流点ノードに
達するまで別々かつ次々に評価される。次に重複された
シャドー記号表がマージされ、別々の分岐に沿って異な
る記号値を得た各々の変数のを表す条件式となる。
【0009】
【効果】本発明の重要な技術的効果としては、アプリケ
ーションアルゴリズムのソフトウェアでの実現をハード
ウェアでの実現、例えばカスタムアプリケーションの特
定集積回路(ASIC)へ置換トランスレートするため
のデータフローグラフに変換できるようデータ依存性制
御フローを除くための技術が得られることが挙げられ
る。
ーションアルゴリズムのソフトウェアでの実現をハード
ウェアでの実現、例えばカスタムアプリケーションの特
定集積回路(ASIC)へ置換トランスレートするため
のデータフローグラフに変換できるようデータ依存性制
御フローを除くための技術が得られることが挙げられ
る。
【0010】本発明の別の重要な効果としては、コンパ
イラーによるプログラムの最適化および高度の並列化を
必要とするアプリケーションに有効な記号評価技術が得
られることが挙げられる。
イラーによるプログラムの最適化および高度の並列化を
必要とするアプリケーションに有効な記号評価技術が得
られることが挙げられる。
【0011】本発明の理解をより良好とするため、以下
添付図面を参照する。
添付図面を参照する。
【0012】
【実施例】添付図面を参照すると、図1は特定のアプリ
ケーションのソフトウェアアルゴリズムの作成からハー
ドウェア回路を実現するためのトランスレーション方法
を示す略図である。これまで、回路デザイナーは、アプ
リケーションアルゴリズムをまずソフトウェアで作成し
ていた。このソフトウェアは、次にアルゴリズムの保全
性を保証するように充分にテストでき、デザイナーはそ
の後できるだけ忠実にソフトウェアを再現するようこの
アルゴリズムをハードウェアで再実現しなければならな
い。アーキテクタ上高度の並列性が必要とされる所定の
デジタル信号処理(DSP)アプリケーションでは、ソ
フトウェアおよびハードウェアでのアプリケーションの
双方での実現が特に必要である。従って、このトランス
レーションプロセスは、テストされるソフトウェアのア
ルゴリズムをハードウェアで再実現する際にエラーの生
じやすいステップを除くことができる。
ケーションのソフトウェアアルゴリズムの作成からハー
ドウェア回路を実現するためのトランスレーション方法
を示す略図である。これまで、回路デザイナーは、アプ
リケーションアルゴリズムをまずソフトウェアで作成し
ていた。このソフトウェアは、次にアルゴリズムの保全
性を保証するように充分にテストでき、デザイナーはそ
の後できるだけ忠実にソフトウェアを再現するようこの
アルゴリズムをハードウェアで再実現しなければならな
い。アーキテクタ上高度の並列性が必要とされる所定の
デジタル信号処理(DSP)アプリケーションでは、ソ
フトウェアおよびハードウェアでのアプリケーションの
双方での実現が特に必要である。従って、このトランス
レーションプロセスは、テストされるソフトウェアのア
ルゴリズムをハードウェアで再実現する際にエラーの生
じやすいステップを除くことができる。
【0013】第1図を参照すると、ソフトウェアの作成
は、高度のコンピュータ言語、例えばC言語およびフォ
ートランで一般に表現される。このソフトウェアの作成
は、次に記号評価方法2によりインタープリットされ、
この方法はソフトウェアの作成をデータフローグラフ3
で表す。このデータフローグラフ3から、アプリケーシ
ョンアルゴリズムのハードウェア回路の実現へと導くこ
とができる。
は、高度のコンピュータ言語、例えばC言語およびフォ
ートランで一般に表現される。このソフトウェアの作成
は、次に記号評価方法2によりインタープリットされ、
この方法はソフトウェアの作成をデータフローグラフ3
で表す。このデータフローグラフ3から、アプリケーシ
ョンアルゴリズムのハードウェア回路の実現へと導くこ
とができる。
【0014】ソフトウェアの作成は、ほとんど常にデー
タ依存性制御フローパスを含んでいるが、この制御フロ
ーパスは、トランスレーション方法における従来の記号
評価技術では取り扱いできない。本発明は、データ依存
性制御フローによるアルゴリズムの記号評価技術を提供
するものである。
タ依存性制御フローパスを含んでいるが、この制御フロ
ーパスは、トランスレーション方法における従来の記号
評価技術では取り扱いできない。本発明は、データ依存
性制御フローによるアルゴリズムの記号評価技術を提供
するものである。
【0015】図2を参照すると、トランスレーション方
法の大半は、ブロック10で開始する。ソフトウェア実
現コード1は、ブロック12に示すようにN個のノード
を有する制御フローグラフにまず変換される。かかる制
御フローグラフ変換技術は、本明細書で引用するアルフ
レッド・ヴイ・エイホー(Alfred.V.Aho)
外著、「コンパイラー、原理、技術およびツール(Co
mpilers,Principles,Techni
ques and Tools)」に述べられているよ
うなコンパイラー設計およびコード最適化分野において
は従来技術となっている。この変換方法は、一般にデー
タフローグラフを含むデータ構造、例えばツリー構造を
組み立てる。概念的には、このデータフローグラフは、
ノードを含み、各ノードが、ソフトウェアアルゴリズム
からの内部分岐のない実行可能なステートメントの組を
含む。
法の大半は、ブロック10で開始する。ソフトウェア実
現コード1は、ブロック12に示すようにN個のノード
を有する制御フローグラフにまず変換される。かかる制
御フローグラフ変換技術は、本明細書で引用するアルフ
レッド・ヴイ・エイホー(Alfred.V.Aho)
外著、「コンパイラー、原理、技術およびツール(Co
mpilers,Principles,Techni
ques and Tools)」に述べられているよ
うなコンパイラー設計およびコード最適化分野において
は従来技術となっている。この変換方法は、一般にデー
タフローグラフを含むデータ構造、例えばツリー構造を
組み立てる。概念的には、このデータフローグラフは、
ノードを含み、各ノードが、ソフトウェアアルゴリズム
からの内部分岐のない実行可能なステートメントの組を
含む。
【0016】C++言語で書かれた次のソフトウェアコ
ード例を参照しても本技術が良好に理解されよう。
ード例を参照しても本技術が良好に理解されよう。
【0017】
【数1】
【0018】図3に例A内のアルゴリズムの制御フロー
グラフを示す。図3中の制御フローグラフは、4つのノ
ード36〜40を示す。ノード36で、条件式内の変数
cが真すなわち非ゼロであれば制御はノード37へフロ
ーし、変数iには変数yの値が割り当てられる。一方、
変数cがゼロであれば、ノード38にフローし、このノ
ード38で変数iに変数xの値が割り当てられる。ノー
ド40では、変数iの値にリターンされる。したがっ
て、例Aは条件式を有し、その値iは入力cに依存して
いるので、ノード36は条件付分岐ノードとなることが
判る。
グラフを示す。図3中の制御フローグラフは、4つのノ
ード36〜40を示す。ノード36で、条件式内の変数
cが真すなわち非ゼロであれば制御はノード37へフロ
ーし、変数iには変数yの値が割り当てられる。一方、
変数cがゼロであれば、ノード38にフローし、このノ
ード38で変数iに変数xの値が割り当てられる。ノー
ド40では、変数iの値にリターンされる。したがっ
て、例Aは条件式を有し、その値iは入力cに依存して
いるので、ノード36は条件付分岐ノードとなることが
判る。
【0019】次に図2のブロック16に移る。ここでは
ブロック12で得た制御フローグラフから逆ドミネータ
を計算する。所定ノードの逆ドミネータは、ノードの組
として定義され、制御ステップはこの所定ノードからこ
れらのノードの組を通過するよう保証されている。ノー
ドNと最終ノードnoの組を備えた制御フローグラフの
逆ドミネータを見つけるための疑似コードアルゴリズム
は次の通りである。
ブロック12で得た制御フローグラフから逆ドミネータ
を計算する。所定ノードの逆ドミネータは、ノードの組
として定義され、制御ステップはこの所定ノードからこ
れらのノードの組を通過するよう保証されている。ノー
ドNと最終ノードnoの組を備えた制御フローグラフの
逆ドミネータを見つけるための疑似コードアルゴリズム
は次の通りである。
【0020】
【数2】各n∈Nに対し、 R(n):=N; R(no):={no}; R(n)へ変わる間に、N内のnに対し、
【0021】ここでR(n)はノードnの逆ドミネータ
の組であり、suc(n)はノードnのサクセッサの組
である。一つのノードnのサクセッサは、実行フロー内
のノードnのサクセッサは、実行フロー内のノードnの
直接後に続くノードの組と定義される。例えば、図3内
のノード36のサクセッサはノード37および38であ
る。上記アルゴリズム(1)が続けば、例Aに対する逆
ドミネータは次の通りである。
の組であり、suc(n)はノードnのサクセッサの組
である。一つのノードnのサクセッサは、実行フロー内
のノードnのサクセッサは、実行フロー内のノードnの
直接後に続くノードの組と定義される。例えば、図3内
のノード36のサクセッサはノード37および38であ
る。上記アルゴリズム(1)が続けば、例Aに対する逆
ドミネータは次の通りである。
【0022】
【数3】
【0023】ここでR(n)は、ノードnに対する逆ド
ミネータの組であり、Nは{36、37、38、40}
を含む。各々のノードに対し、逆ドミネータの組はそれ
自身を含んでいることが判る。
ミネータの組であり、Nは{36、37、38、40}
を含む。各々のノードに対し、逆ドミネータの組はそれ
自身を含んでいることが判る。
【0024】図2中のブロック18に進む。逆ドミネー
タの組から合流点を計算する。一つのノードが2つ以上
のサクセッサノードを有している場合すなわち条件付分
岐1である場合、合流点を逆ドミネータしているが、条
件付分岐ノード自体を排除しているノードから合流点ノ
ードを計算する。特定の条件付分岐ノードを計算する。
特定の条件付分岐ノードに対する逆ドミネータの残りに
より逆ドミネートされている逆ドミネータは、その条件
付分岐ノードに対する合流点となる。条件付分岐ノード
nに対する合流点を計算するための疑似コードアルゴリ
ズムは、次のように与えられる。
タの組から合流点を計算する。一つのノードが2つ以上
のサクセッサノードを有している場合すなわち条件付分
岐1である場合、合流点を逆ドミネータしているが、条
件付分岐ノード自体を排除しているノードから合流点ノ
ードを計算する。特定の条件付分岐ノードを計算する。
特定の条件付分岐ノードに対する逆ドミネータの残りに
より逆ドミネートされている逆ドミネータは、その条件
付分岐ノードに対する合流点となる。条件付分岐ノード
nに対する合流点を計算するための疑似コードアルゴリ
ズムは、次のように与えられる。
【0025】
【数4】 候補点 :=R(n)−{n}: 合流点 :=候補点のうちのいくつか 候補点−{合流点}内のいくつかに対し、合流点∈R
(n)であれば、合流点:=n;とする。従って、ノー
ド40は図3中内の条件付ノード36に対する合流点と
なる。
(n)であれば、合流点:=n;とする。従って、ノー
ド40は図3中内の条件付ノード36に対する合流点と
なる。
【0026】ブロック18内で合流点が計算されると、
準備ステップが完了し、ブロック20内で記号評価方法
が開始する。ブロック20に示すようにシャドー記号表
と称されるデータ構造が構成される。シャドー記号表の
代表例は次の通りである。
準備ステップが完了し、ブロック20内で記号評価方法
が開始する。ブロック20に示すようにシャドー記号表
と称されるデータ構造が構成される。シャドー記号表の
代表例は次の通りである。
【0027】
【表1】
【0028】このシャドー記号表は、アーギュメント、
静的変数および大域変数に対するエントリを含む。エン
トリには変数を表す記号値が割り当てられる。エントリ
にたいする記号値は、ストリングとして示されるが、有
向非同期グラフとして実施することが好ましい。
静的変数および大域変数に対するエントリを含む。エン
トリには変数を表す記号値が割り当てられる。エントリ
にたいする記号値は、ストリングとして示されるが、有
向非同期グラフとして実施することが好ましい。
【0029】この点では、制御フローグラフ(CFG)
内のノードは、図2中のブロック21に示すように次々
にインタープリットされる。記号評価のための開始ノー
ドは、制御フローグラフの初期ノードとして、すなわち
ノード40としてセットされている。
内のノードは、図2中のブロック21に示すように次々
にインタープリットされる。記号評価のための開始ノー
ドは、制御フローグラフの初期ノードとして、すなわち
ノード40としてセットされている。
【0030】ブロック22では、終了ノードがこのとき
はノード40に達しているか否か判別する。終了ノード
40に達していなければ、ノード23まで進み、このノ
ードでそのときのノードは条件付分岐ノードであるか否
か判別する。ノード36は変数cの値に応じてノード3
7またはノード38のいずれかを実施するデータ依存性
分岐式を含んでいるので、次にブロック25を実施す
る。
はノード40に達しているか否か判別する。終了ノード
40に達していなければ、ノード23まで進み、このノ
ードでそのときのノードは条件付分岐ノードであるか否
か判別する。ノード36は変数cの値に応じてノード3
7またはノード38のいずれかを実施するデータ依存性
分岐式を含んでいるので、次にブロック25を実施す
る。
【0031】この点では、条件付分岐ノードの各分岐を
インタープリテイションのための実行準備ができてい
る。条件付分岐ノードnの各々のサクセッサノードに対
し、シャドー記号表の重複例を作成し、各々の分岐のノ
ードを記号的に評価し、ここで開始ノードをノードnに
変更し、終了ノードを条件付分岐ノードに対する合流点
に変更する。したがって、合流点に達するまで各分岐内
のノードごとに記号評価を行う。よって、各分岐のイン
タープリテイションを表すよう分岐ごとのシャドー記号
表を変える。例Aでは、シャドー記号表の2つの例を構
成する。合流点ノード40までに各条件式分岐を評価
し、それぞれのシャドー記号表内にそれらの結果を記録
する。例えばノード37の式に指示されているように変
数iがインタープリットされ、”y”の値が割り当てら
れる。この割り当て完了時にノード40すなわち合流点
に達するので、真の分岐のインタープリテイションが完
了する。真の分岐のインタープリテイションの終了時の
シャドー記号表は、次の通りである。
インタープリテイションのための実行準備ができてい
る。条件付分岐ノードnの各々のサクセッサノードに対
し、シャドー記号表の重複例を作成し、各々の分岐のノ
ードを記号的に評価し、ここで開始ノードをノードnに
変更し、終了ノードを条件付分岐ノードに対する合流点
に変更する。したがって、合流点に達するまで各分岐内
のノードごとに記号評価を行う。よって、各分岐のイン
タープリテイションを表すよう分岐ごとのシャドー記号
表を変える。例Aでは、シャドー記号表の2つの例を構
成する。合流点ノード40までに各条件式分岐を評価
し、それぞれのシャドー記号表内にそれらの結果を記録
する。例えばノード37の式に指示されているように変
数iがインタープリットされ、”y”の値が割り当てら
れる。この割り当て完了時にノード40すなわち合流点
に達するので、真の分岐のインタープリテイションが完
了する。真の分岐のインタープリテイションの終了時の
シャドー記号表は、次の通りである。
【0032】
【表2】
【0033】同様にして、例Aのデータフローグラフの
偽分岐に対するシャドー記号表を作成できる。
偽分岐に対するシャドー記号表を作成できる。
【0034】
【表3】
【0035】合流点すなわちノード40に達すれば、偽
分岐のインタープリテイションが完了する。この点で
は、ブロック25(図2)内の再帰インタープリテイシ
ョンが完了し、ブロック26に進む。ブロック26で
は、すべての分岐のシャドー記号表がマージされ表内の
対応する式が異なる条件式が得られる。例Aでは、双方
の条件付分岐のインタープリテイションは、合流点ノー
ド40に達しているので、表Bと表Cの結果は次のよう
にマージされる。
分岐のインタープリテイションが完了する。この点で
は、ブロック25(図2)内の再帰インタープリテイシ
ョンが完了し、ブロック26に進む。ブロック26で
は、すべての分岐のシャドー記号表がマージされ表内の
対応する式が異なる条件式が得られる。例Aでは、双方
の条件付分岐のインタープリテイションは、合流点ノー
ド40に達しているので、表Bと表Cの結果は次のよう
にマージされる。
【0036】
【表4】
【0037】変数iの値は、c言語の3部構成条件式に
より表される。
より表される。
【0038】
【数5】
【0039】ここで、e1が非ゼロすなわち真のとき式
は値2となり、e1がゼロすなわち偽のとき、式はe3
となる。従って変数iの値は、条件の値cが非ゼロのと
き、変数yの値に等しく、cの値がゼロのとき変数xの
値に等しい。図2中のブロック30では、条件式(c?
y:x)にリターンする。
は値2となり、e1がゼロすなわち偽のとき、式はe3
となる。従って変数iの値は、条件の値cが非ゼロのと
き、変数yの値に等しく、cの値がゼロのとき変数xの
値に等しい。図2中のブロック30では、条件式(c?
y:x)にリターンする。
【0040】例Aでは、条件付分岐ノードは2つのサク
セッサノードしか有していない。すなわち真分岐と偽分
岐しか有していないので、本発明の好ましい実施態様
は、マルチ分岐に関連する条件付分岐ステートメント、
例えばc言語のスイッチステートメントにも同様に適用
できる。3部構成式を拡張してマルチ分岐化を実現する
ような式を容易に考案できる。
セッサノードしか有していない。すなわち真分岐と偽分
岐しか有していないので、本発明の好ましい実施態様
は、マルチ分岐に関連する条件付分岐ステートメント、
例えばc言語のスイッチステートメントにも同様に適用
できる。3部構成式を拡張してマルチ分岐化を実現する
ような式を容易に考案できる。
【0041】本例に戻ると、式(c?y:x)を供給す
ることにより、先のデータ依存性アルゴリズムの制御フ
ローを完全に除き、最大の可能な並列化を実現する。デ
ータ依存性条件付分岐は条件式まで減少され、これらの
条件式は全アプリケーションアルゴリズム用の最終デー
タフローグラフに容易に組み込むことができる。本発明
をさらによく理解できるようにするためさらに別の例を
挙げる。図4は、ループ構造の記号解釈をデモンストレ
ートする次のアルゴリズムのための代表的制御フローグ
ラフである。
ることにより、先のデータ依存性アルゴリズムの制御フ
ローを完全に除き、最大の可能な並列化を実現する。デ
ータ依存性条件付分岐は条件式まで減少され、これらの
条件式は全アプリケーションアルゴリズム用の最終デー
タフローグラフに容易に組み込むことができる。本発明
をさらによく理解できるようにするためさらに別の例を
挙げる。図4は、ループ構造の記号解釈をデモンストレ
ートする次のアルゴリズムのための代表的制御フローグ
ラフである。
【0042】
【数6】
【0043】制御フローグラフは、ノード42〜46を
含む。図2中でアウトラインを示したステップの後で、
逆ドミネータを計算する。アルゴリズム41により計算
され、得られた逆ドミネータは次のとおりである。
含む。図2中でアウトラインを示したステップの後で、
逆ドミネータを計算する。アルゴリズム41により計算
され、得られた逆ドミネータは次のとおりである。
【0044】
【数7】
【0045】ブロック18に示すように上記アルゴリズ
ム(2)を使用して各条件付分岐ノード43および44
に対する合流点を計算する。ノード43に対し、これ自
体を除く逆ドミネータはノード47だけである。従っ
て、ノード47はノード43内の条件付分岐に対する合
流点である。ノード44に対し、ノード46が合流点と
なる。
ム(2)を使用して各条件付分岐ノード43および44
に対する合流点を計算する。ノード43に対し、これ自
体を除く逆ドミネータはノード47だけである。従っ
て、ノード47はノード43内の条件付分岐に対する合
流点である。ノード44に対し、ノード46が合流点と
なる。
【0046】(図2中のブロック20に示すように)次
のようにシャドー記号表を作成することにより記号評価
が進行する。
のようにシャドー記号表を作成することにより記号評価
が進行する。
【0047】
【表5】
【0048】次にノード42で開始して記号評価が進行
する。ノード42内の2つの割り当てステートメントを
インタープリットすると、その結果次のシャドー記号表
が得られる。
する。ノード42内の2つの割り当てステートメントを
インタープリットすると、その結果次のシャドー記号表
が得られる。
【0049】
【表6】
【0050】次に、ノード43内で最初の条件付分岐に
合流する。条件式(i<3)は変数iを含み、この値は
既知であるので、この式はデータ依存性条件付分岐では
ない。iはこのとき1であるので、ノード44に進む
と、ここでデータ依存性条件付分岐に合う。ノード44
は、条件(a[i]>b)(変数bは”a[0]”に等
しくなるようセットされているので、この条件はシャド
ー記号表では”a[1]>a[0]”となる)に依存し
た条件付分岐ノードである。条件”a[0]>a
[0]”は、シャドー記号表をマージするとき使用され
る。
合流する。条件式(i<3)は変数iを含み、この値は
既知であるので、この式はデータ依存性条件付分岐では
ない。iはこのとき1であるので、ノード44に進む
と、ここでデータ依存性条件付分岐に合う。ノード44
は、条件(a[i]>b)(変数bは”a[0]”に等
しくなるようセットされているので、この条件はシャド
ー記号表では”a[1]>a[0]”となる)に依存し
た条件付分岐ノードである。条件”a[0]>a
[0]”は、シャドー記号表をマージするとき使用され
る。
【0051】条件(a[i]>a[0])はデータに依
存しているので、合流点ノード46に達するまで各分岐
をインタープリットする。このことは、図2中のブロッ
ク25内の実施に対応する。(a[i]>a[0])の
真条件の結果、シャドー記号表が得られる。
存しているので、合流点ノード46に達するまで各分岐
をインタープリットする。このことは、図2中のブロッ
ク25内の実施に対応する。(a[i]>a[0])の
真条件の結果、シャドー記号表が得られる。
【0052】
【表7】
【0053】偽条件に対し、変数bの値は変わらないの
で、その結果得られるシャドー記号表は表Fと同じとな
るノード46、すなわち合流点では、分岐”a[1]>
a[0]”の条件を次のように使用するループを最初に
繰り返すようシャドー記号表FおよびGをマージする。
で、その結果得られるシャドー記号表は表Fと同じとな
るノード46、すなわち合流点では、分岐”a[1]>
a[0]”の条件を次のように使用するループを最初に
繰り返すようシャドー記号表FおよびGをマージする。
【0054】
【表8】
【0055】合流点からインタープリテイションを進
め、変数iの値をノード46で1だけ増加する。
め、変数iの値をノード46で1だけ増加する。
【0056】
【表9】
【0057】ノード43まで実行を進め、ここで条件付
分岐を評価する。この条件は真であるので、データ依存
性条件付分岐ノードであるノード44に実行を進める。
ノード44は、条件(a[i]>b)に依存する条件付
分岐ノードであり、この条件はシャドー記号表のコンテ
キスト中では次のようになっている。
分岐を評価する。この条件は真であるので、データ依存
性条件付分岐ノードであるノード44に実行を進める。
ノード44は、条件(a[i]>b)に依存する条件付
分岐ノードであり、この条件はシャドー記号表のコンテ
キスト中では次のようになっている。
【0058】
【数8】
【0059】図2中のブロック25に示すように、各分
岐に対しシャドー記号表の一列を作成し、その値をイン
タープリットする。偽分岐に対し、シャドー記号表内の
値は変わらない。真分岐に対し、シャドー記号表は次の
とおりである。
岐に対しシャドー記号表の一列を作成し、その値をイン
タープリットする。偽分岐に対し、シャドー記号表内の
値は変わらない。真分岐に対し、シャドー記号表は次の
とおりである。
【0060】
【表10】
【0061】ノード45で、シャドー記号表IおよびJ
をマージする。これらの表は、変数bの値が異なってい
るだけであるので、マージステップではこの値だけを変
える。条件付分岐における条件は、条件式内のセレクタ
として使用されるので、この結果次のシャドー記号表が
得られる。
をマージする。これらの表は、変数bの値が異なってい
るだけであるので、マージステップではこの値だけを変
える。条件付分岐における条件は、条件式内のセレクタ
として使用されるので、この結果次のシャドー記号表が
得られる。
【0062】
【表9】
【0063】ノード46を再び評価するとき、変数iの
値を3に増加する。再度ノード43まで実行を戻す。其
のときiは3であり、3以上であるので、条件が偽とな
ったノード43をインタープリットする。従って、ノー
ド47まで実行を進める。ここでは変数bの値はシャド
ー記号表Kに示すように次のとおりである。
値を3に増加する。再度ノード43まで実行を戻す。其
のときiは3であり、3以上であるので、条件が偽とな
ったノード43をインタープリットする。従って、ノー
ド47まで実行を進める。ここでは変数bの値はシャド
ー記号表Kに示すように次のとおりである。
【0064】
【数9】
【0065】本例は、指向非同期グラフに式を残す利点
を示す。上記変数bの値は、サブ式”(a[1]>a
[0]?a[1]:a[0]”を2回含み、この式はツ
リー構造の一つの式で経済的に示すことができる。
を示す。上記変数bの値は、サブ式”(a[1]>a
[0]?a[1]:a[0]”を2回含み、この式はツ
リー構造の一つの式で経済的に示すことができる。
【0066】最終例は繰り返し回数がデータに依存して
いるループに適用した本例を示す。このアルゴリズム例
は下記のとおりであり、図5に対応する制御フローグラ
フをしめす。
いるループに適用した本例を示す。このアルゴリズム例
は下記のとおりであり、図5に対応する制御フローグラ
フをしめす。
【0067】
【数10】
【0068】図5に示すように、例Cの制御フローグラ
フはノード50〜56を含み、このうちのノード51、
52および54は条件付分岐ノードである。
フはノード50〜56を含み、このうちのノード51、
52および54は条件付分岐ノードである。
【0069】図2にノンアウトラインを示したステップ
の後にブロック16で次の結果を用い、上記アルゴリズ
ム(1)に従い逆ドミネータを計算する。
の後にブロック16で次の結果を用い、上記アルゴリズ
ム(1)に従い逆ドミネータを計算する。
【0070】
【数11】
【0071】ブロック18では、上記アルゴリズム
(2)に従って、逆ドミネータからノード51、52お
よび54に対する合流点を計算する。ノード51に対し
ては、合流点はノード56であり、ノード52に対して
は、合流点はノード54であり、ノード54に対して合
流点はノード56である。
(2)に従って、逆ドミネータからノード51、52お
よび54に対する合流点を計算する。ノード51に対し
ては、合流点はノード56であり、ノード52に対して
は、合流点はノード54であり、ノード54に対して合
流点はノード56である。
【0072】アーギュメント、静的変数および大域変数
およびそれぞれの記号値を含むシャドー記号表を作成す
ることにより例Cのアルゴリズムの記号評価が始まる。
次に制御フローグラフの第1ノードすなわちノード50
で開始させて記号評価を進める。ノード50での割り当
て式の後で、シャドー記号表は次のようになる。
およびそれぞれの記号値を含むシャドー記号表を作成す
ることにより例Cのアルゴリズムの記号評価が始まる。
次に制御フローグラフの第1ノードすなわちノード50
で開始させて記号評価を進める。ノード50での割り当
て式の後で、シャドー記号表は次のようになる。
【0073】
【表12】
【0074】ノード51には条件式があり、この値は既
知の値だけに依存しているので、この条件を評価する。
このとき変数iは3未満であるので、ノード52まで実
行を進める。ノード52は”a[1]>a[0]”と翻
訳されているデータ依存性条件式(a[i]>b)を含
んでいる。従って、2例のシャドー記号表を作成し、合
流点に達するまで条件付分岐のうちの各分岐を別々に評
価する。この条件の偽分岐の結果、変わっていないシャ
ドー記号表が得られるが、真分岐の結果、次の変わって
いない表が得られる。
知の値だけに依存しているので、この条件を評価する。
このとき変数iは3未満であるので、ノード52まで実
行を進める。ノード52は”a[1]>a[0]”と翻
訳されているデータ依存性条件式(a[i]>b)を含
んでいる。従って、2例のシャドー記号表を作成し、合
流点に達するまで条件付分岐のうちの各分岐を別々に評
価する。この条件の偽分岐の結果、変わっていないシャ
ドー記号表が得られるが、真分岐の結果、次の変わって
いない表が得られる。
【0075】
【表14】
【0076】合流点であるノード54では、2例のシャ
ドー記号表をマージする。シャドー記号表LおよびM
は、変数bの値が異なっているだけである。条件付分岐
内の条件は、条件式のセレクタとして使用され、次の表
を与える。
ドー記号表をマージする。シャドー記号表LおよびM
は、変数bの値が異なっているだけである。条件付分岐
内の条件は、条件式のセレクタとして使用され、次の表
を与える。
【0077】
【表14】
【0078】ノード54をインタープリットすると、こ
のノードは別のデータ依存性条件付分岐として認識され
る。ノード54は、条件(a[i]>10)に依存して
おり、この条件は現在のシャドー記号表のコンテキスト
ではデータ依存性条件(a[i]>10)となってい
る。この条件はデータ依存性であるのでその分岐は次々
にインタープリットしなければならない。
のノードは別のデータ依存性条件付分岐として認識され
る。ノード54は、条件(a[i]>10)に依存して
おり、この条件は現在のシャドー記号表のコンテキスト
ではデータ依存性条件(a[i]>10)となってい
る。この条件はデータ依存性であるのでその分岐は次々
にインタープリットしなければならない。
【0079】例cは、本技術の重要な様相を示す。ノー
ド54内のデータ依存性分岐は、ループ構造内にあるの
で、このノードの偽分岐は、合流点ノード56に達する
前にノード54内のデータ依存性条件に達する。本例で
はインタープリタはノード56の合流点に達するまでそ
の後の条件付分岐を反復して評価し、偽分岐の結果を生
じる。この点では、ノード54内の元の条件付分岐の2
つのパスが合流点ノード56に達し、マージできる。本
例は、2回深く反復するだけであるが、更に繰り返しを
必要とするデータ依存性分岐を含むループを制御フロー
グラフが有しているとき、この技術は任意の反復深さに
も適用できる。例えば、例Cのアルゴリズムのノード5
1内の条件を(i<10)に変更したと仮定すれば、こ
の方法は、9の深さに反復する。
ド54内のデータ依存性分岐は、ループ構造内にあるの
で、このノードの偽分岐は、合流点ノード56に達する
前にノード54内のデータ依存性条件に達する。本例で
はインタープリタはノード56の合流点に達するまでそ
の後の条件付分岐を反復して評価し、偽分岐の結果を生
じる。この点では、ノード54内の元の条件付分岐の2
つのパスが合流点ノード56に達し、マージできる。本
例は、2回深く反復するだけであるが、更に繰り返しを
必要とするデータ依存性分岐を含むループを制御フロー
グラフが有しているとき、この技術は任意の反復深さに
も適用できる。例えば、例Cのアルゴリズムのノード5
1内の条件を(i<10)に変更したと仮定すれば、こ
の方法は、9の深さに反復する。
【0080】ノード54を評価すると、シャドー記号表
の重複例が作成される。条件(a[1]>10)の真分
岐は、すぐに合流点(ノード56)に至るので、シャド
ー記号表は変わらないままである。他方、ノード54内
の条件の偽分岐はノード55進み、変数iの値をインク
リメントすることによりシャドー記号表を変える。
の重複例が作成される。条件(a[1]>10)の真分
岐は、すぐに合流点(ノード56)に至るので、シャド
ー記号表は変わらないままである。他方、ノード54内
の条件の偽分岐はノード55進み、変数iの値をインク
リメントすることによりシャドー記号表を変える。
【0081】
【表15】
【0082】ノード51に進み、この中が真条件であれ
ばノード52に進む。ノード52はデータ依存性条件付
分岐を含んでいるので、シャドー記号表0の別の2つの
例が作成され、合流点(ノード54)に達するまで各分
岐を評価する。ノード52は次の式の値に依存してい
る。
ばノード52に進む。ノード52はデータ依存性条件付
分岐を含んでいるので、シャドー記号表0の別の2つの
例が作成され、合流点(ノード54)に達するまで各分
岐を評価する。ノード52は次の式の値に依存してい
る。
【0083】
【数12】
【0084】条件付分岐ノード51の偽分岐はシャドー
記号表を変えることなくすぐに合流点ノード56に進
み、一方真分岐は変数bに”a[2]”の値を割り当て
る。
記号表を変えることなくすぐに合流点ノード56に進
み、一方真分岐は変数bに”a[2]”の値を割り当て
る。
【0085】
【表16】
【0086】合流点(ノード54)で、シャドー記号表
(表0およびP)の2例をマージすると、その結果得ら
れるシャドー記号表は次のようになる。
(表0およびP)の2例をマージすると、その結果得ら
れるシャドー記号表は次のようになる。
【0087】
【表17】
【0088】ノード54を評価するとき、データ依存性
条件式(a[2]>10)は、別の分岐評価を必要とす
る。ここでは、元の条件付分岐ノード54の偽分岐をま
だ評価していることに留意されたい。ノード54は、シ
ャドー記号表のコンテキスト内で値が(a[2]>1
0)となっている条件に依存しているので条件付分岐で
ある。合流点ノード56まで真分岐および偽分岐の双方
が評価され、マージされる。真分岐は、シャドー記号表
を変えることなく直接合流点までジャンプする。偽分岐
は、ノード55内の変数iをまずインクリメントし、次
にノード51内のデータ依存性条件をジャンプする。変
数iの値が異なっているだけの結果をマージすると、こ
の結果得られるシャドー記号表は、次のようになる。
条件式(a[2]>10)は、別の分岐評価を必要とす
る。ここでは、元の条件付分岐ノード54の偽分岐をま
だ評価していることに留意されたい。ノード54は、シ
ャドー記号表のコンテキスト内で値が(a[2]>1
0)となっている条件に依存しているので条件付分岐で
ある。合流点ノード56まで真分岐および偽分岐の双方
が評価され、マージされる。真分岐は、シャドー記号表
を変えることなく直接合流点までジャンプする。偽分岐
は、ノード55内の変数iをまずインクリメントし、次
にノード51内のデータ依存性条件をジャンプする。変
数iの値が異なっているだけの結果をマージすると、こ
の結果得られるシャドー記号表は、次のようになる。
【0089】
【表18】
【0090】ノード54の偽分岐のインタープリテイシ
ョンにより合流点すなわちノード56に達するので、真
分岐に対するシャドー記号表、表Nは偽分岐に対するシ
ャドー記号表、表Rとマージされる。この結果得られる
シャドー記号表は次のとおりになる。
ョンにより合流点すなわちノード56に達するので、真
分岐に対するシャドー記号表、表Nは偽分岐に対するシ
ャドー記号表、表Rとマージされる。この結果得られる
シャドー記号表は次のとおりになる。
【0091】
【表19】
【0092】従って、ノード56に達すると、上記表S
に示されるような変数bの値がリターンされる。本発明
は、大域変数の条件式およびリターンステートメントで
明らかにリターンされる大域変数の条件式のリターン操
作に関係している。更に条件付分岐内にリターンステー
トメントが埋め込まれた合流点を計算するコンテキスト
で、リターンステートメントを制御フローグラフ内のユ
ニークな出口ノードへの潜在的分岐として扱う。このよ
うに実現することにより合流点を有するよう全ての条件
付分岐を保証する。
に示されるような変数bの値がリターンされる。本発明
は、大域変数の条件式およびリターンステートメントで
明らかにリターンされる大域変数の条件式のリターン操
作に関係している。更に条件付分岐内にリターンステー
トメントが埋め込まれた合流点を計算するコンテキスト
で、リターンステートメントを制御フローグラフ内のユ
ニークな出口ノードへの潜在的分岐として扱う。このよ
うに実現することにより合流点を有するよう全ての条件
付分岐を保証する。
【0093】以上で本発明を詳細に説明したが、特許請
求の範囲に示した本発明の精神および範囲から逸脱する
ことなく種々の変更、置換、改変が可能であると理解さ
れたい。
求の範囲に示した本発明の精神および範囲から逸脱する
ことなく種々の変更、置換、改変が可能であると理解さ
れたい。
【0094】以上の説明に関してさらに以下の項を開示
する。
する。
【0095】(1)複数の変数の値を操作する複数のス
テートメントを有し、更にデータ依存条件の値に依存す
る少なくとも一つの条件付分岐化ステートメントを有す
るアルゴリズムを記号評価する方法であって、開始ノー
ドおよび終了ノードおよび複数のノード(各ノードは前
記複数のステートメントのうちの少なくとも一つを示
す)を有し、前期データ依存性条件付分岐化ステートメ
ント用の条件付分岐ノードを含む制御フローグラフに前
記アルゴリズムを変換し、前記複数のノードの各々に対
する逆ドミネータの組を計算し、前記逆ドミネータに応
答して各々の条件付分岐ノードに対する合流点ノードを
引き出し、前記変数に対する記号値を有するシャドー記
号表を作成し、制御フローにしたがって各ノードを次々
に評価して前記シャドー記号表内の前記変数に記号値を
割り当て、前記条件付分岐ノードを評価し、前記条件付
分岐ノードに応答して前記データ依存性条件の各々の可
能な値にたいして重複したシャドー記号表を作成し、前
記データ依存性条件の各々の可能な値を仮定して、前記
重複したシャドー記号表内の各々の前記変数に記号値を
割り当て、前記合流点に達するまで前記条件付分岐化ス
テートメントの各分岐内に含まれるノードの評価を続
け、各前記合流点ノードで前記重複したシャドー記号表
をマージし、すべての条件付分岐の評価を完了して、前
記制御フローグラフの前記終了ノードに達し、前記アル
ゴリズムを示す条件式を与えるステップから成るアルゴ
リズムを記号評価する方法。
テートメントを有し、更にデータ依存条件の値に依存す
る少なくとも一つの条件付分岐化ステートメントを有す
るアルゴリズムを記号評価する方法であって、開始ノー
ドおよび終了ノードおよび複数のノード(各ノードは前
記複数のステートメントのうちの少なくとも一つを示
す)を有し、前期データ依存性条件付分岐化ステートメ
ント用の条件付分岐ノードを含む制御フローグラフに前
記アルゴリズムを変換し、前記複数のノードの各々に対
する逆ドミネータの組を計算し、前記逆ドミネータに応
答して各々の条件付分岐ノードに対する合流点ノードを
引き出し、前記変数に対する記号値を有するシャドー記
号表を作成し、制御フローにしたがって各ノードを次々
に評価して前記シャドー記号表内の前記変数に記号値を
割り当て、前記条件付分岐ノードを評価し、前記条件付
分岐ノードに応答して前記データ依存性条件の各々の可
能な値にたいして重複したシャドー記号表を作成し、前
記データ依存性条件の各々の可能な値を仮定して、前記
重複したシャドー記号表内の各々の前記変数に記号値を
割り当て、前記合流点に達するまで前記条件付分岐化ス
テートメントの各分岐内に含まれるノードの評価を続
け、各前記合流点ノードで前記重複したシャドー記号表
をマージし、すべての条件付分岐の評価を完了して、前
記制御フローグラフの前記終了ノードに達し、前記アル
ゴリズムを示す条件式を与えるステップから成るアルゴ
リズムを記号評価する方法。
【0096】(2)前記制御フローグラフ変換ステップ
は、前記終了ノードがサクセッサノードを有していない
場合、前記複数のノードの各々に対し、サクセッサノー
ドのリストを与えるステップを含む第1項記載の方法。
は、前記終了ノードがサクセッサノードを有していない
場合、前記複数のノードの各々に対し、サクセッサノー
ドのリストを与えるステップを含む第1項記載の方法。
【0097】(3)前記逆ドミネータを計算するステッ
プは、各ノード自体を含む前記制御フローグラフ内に前
記ノードのすべてを含むよう各ノードに対する逆ドミネ
ータ候補点の一組を初期化し、前記終了ノード自体のみ
を含むよう前記終了ノードに対する逆ドミネータ候補点
の組を改変し、その逆ドミネータ候補点の組とそのサク
セッサノードのすべての逆ドミネータ候補点の組との論
理積を演算し、ノード自体を追加し、その結果得られる
逆ドミネータ候補点の組を発生し、前記逆ドミネータ候
補点の組に変化が生じなくなるまで上記ステップを繰り
返すと共に各ノードに対する逆ドミネータの組を発生す
ることから成る第2項記載の方法。
プは、各ノード自体を含む前記制御フローグラフ内に前
記ノードのすべてを含むよう各ノードに対する逆ドミネ
ータ候補点の一組を初期化し、前記終了ノード自体のみ
を含むよう前記終了ノードに対する逆ドミネータ候補点
の組を改変し、その逆ドミネータ候補点の組とそのサク
セッサノードのすべての逆ドミネータ候補点の組との論
理積を演算し、ノード自体を追加し、その結果得られる
逆ドミネータ候補点の組を発生し、前記逆ドミネータ候
補点の組に変化が生じなくなるまで上記ステップを繰り
返すと共に各ノードに対する逆ドミネータの組を発生す
ることから成る第2項記載の方法。
【0098】(4)条件付分岐ノードに対する合流点ノ
ードを引き出すステップは、組内の他のすべての逆ドミ
ネータによりドミネートされている逆ドミネータを、ノ
ード自体を除く逆ドミネータの組から選択するステップ
を含む第3項記載の方法。
ードを引き出すステップは、組内の他のすべての逆ドミ
ネータによりドミネートされている逆ドミネータを、ノ
ード自体を除く逆ドミネータの組から選択するステップ
を含む第3項記載の方法。
【0099】(5)前記マージをするステップは、次の
3部構成条件式
3部構成条件式
【0100】
【数13】
【0101】(ここで、e1は条件付分岐ノードのデー
タ依存性条件で、e2は条件が真の場合の変数の値であ
り、e3は条件が偽の場合の変数の値である)を使用
し、e1をデータ依存性条件に置換し、e2を前記デー
タ依存性条件に対し偽条件となる前記重複シャドー記号
表内の変数に割り当てられた記号値に置換し、e3を前
記データ依存性条件に対し偽条件となる前記重複シャド
ー記号表内の変数に割り当てられた記号値に置換するこ
とから成る第1項記載の方法。
タ依存性条件で、e2は条件が真の場合の変数の値であ
り、e3は条件が偽の場合の変数の値である)を使用
し、e1をデータ依存性条件に置換し、e2を前記デー
タ依存性条件に対し偽条件となる前記重複シャドー記号
表内の変数に割り当てられた記号値に置換し、e3を前
記データ依存性条件に対し偽条件となる前記重複シャド
ー記号表内の変数に割り当てられた記号値に置換するこ
とから成る第1項記載の方法。
【0102】(6)前記マージするステップは、前記重
複したシャドー記号表内の前期変数の値を組み合わせ、
前記データ依存性条件の各々の可能な値に対し変数が前
記値となる時を特定することから成る第1項記載の方
法。
複したシャドー記号表内の前期変数の値を組み合わせ、
前記データ依存性条件の各々の可能な値に対し変数が前
記値となる時を特定することから成る第1項記載の方
法。
【0103】(7)データ依存性条件の値に応じて変数
に異なる値を割り当てる少なくとも2との分岐に至る少
なくとも一つの条件付分岐化ステートメントを有するア
ルゴリズムをトランスレートする装置であって、複数の
ノード(このノードの一つは前記条件付分岐ノードを示
す)を有する制御フローグラフに前記アルゴリズムを変
換するための手段と、前記複数のノードの各々に対し逆
ドミネータの組を計算するための手段と、前記条件付分
岐化ステートメントの前記分岐が収束する合流点ノード
を前記計算された逆ドミネータに応答して引き出すため
の手段と、前記条件式および前記変数を有するシャドー
記号表を作成するための手段と、前記制御フローグラフ
内の各ノードを次々に記号評価するための手段と、前記
条件付分岐化ノードを評価すると共に前記データ依存性
条件の各々の可能な値を取ることにより前記条件付分岐
ノードの評価に応答して前記条件付分岐ノードの各分岐
に対する前記シャドー記号表の一つの例を作成するため
の手段と、前記合流点ノードに達するまで前記条件付分
岐化ステートメントの各分岐の評価に応答して前記シャ
ドー記号表の前記それぞれの例内の前記変数に記号値を
割り当てるための手段と、前記合流点ノードに達した時
に前記シャドー記号表の前記例をマージするための手段
と、すべての条件付分岐の評価を続け、前記制御フロー
グラフの前記終了ノードに達するための手段と、前記ア
ルゴリズムを表す条件式を与えるための手段とから成る
アルゴリズムをトランスレートするための装置。
に異なる値を割り当てる少なくとも2との分岐に至る少
なくとも一つの条件付分岐化ステートメントを有するア
ルゴリズムをトランスレートする装置であって、複数の
ノード(このノードの一つは前記条件付分岐ノードを示
す)を有する制御フローグラフに前記アルゴリズムを変
換するための手段と、前記複数のノードの各々に対し逆
ドミネータの組を計算するための手段と、前記条件付分
岐化ステートメントの前記分岐が収束する合流点ノード
を前記計算された逆ドミネータに応答して引き出すため
の手段と、前記条件式および前記変数を有するシャドー
記号表を作成するための手段と、前記制御フローグラフ
内の各ノードを次々に記号評価するための手段と、前記
条件付分岐化ノードを評価すると共に前記データ依存性
条件の各々の可能な値を取ることにより前記条件付分岐
ノードの評価に応答して前記条件付分岐ノードの各分岐
に対する前記シャドー記号表の一つの例を作成するため
の手段と、前記合流点ノードに達するまで前記条件付分
岐化ステートメントの各分岐の評価に応答して前記シャ
ドー記号表の前記それぞれの例内の前記変数に記号値を
割り当てるための手段と、前記合流点ノードに達した時
に前記シャドー記号表の前記例をマージするための手段
と、すべての条件付分岐の評価を続け、前記制御フロー
グラフの前記終了ノードに達するための手段と、前記ア
ルゴリズムを表す条件式を与えるための手段とから成る
アルゴリズムをトランスレートするための装置。
【0104】(8)前記制御フローグラフを変換するた
めの前記手段は、前記複数のノードの各々に対するサク
セッサノードおよびサクセッサノードを有しない終了ノ
ードのリストを与えるための手段を含む第7項記載の装
置。
めの前記手段は、前記複数のノードの各々に対するサク
セッサノードおよびサクセッサノードを有しない終了ノ
ードのリストを与えるための手段を含む第7項記載の装
置。
【0105】(9)前記逆ドミネータ計算手段は、各ノ
ード自体を含む、前記制御フローグラフ内の前記ノード
のすべてを含むよう各ノードに対する逆ドミネータ候補
点の組を初期化する手段と、ノード自体を含むようサク
セッサノードを有しない前記終了ノードに対する逆ドミ
ネータ候補点の組を改変するための手段と、ノードごと
にその逆ドミネータの組とそのサクセッサノードのすべ
ての逆ドミネータの組との論理積を演算し、前記ドミネ
ータ候補点の組の変化が生じなくなるまで演算の結果得
られる逆ドミネータの組を発生し、ノードごとに逆ドミ
ネータの組を発生するための手段とから成る第8項記載
の装置。
ード自体を含む、前記制御フローグラフ内の前記ノード
のすべてを含むよう各ノードに対する逆ドミネータ候補
点の組を初期化する手段と、ノード自体を含むようサク
セッサノードを有しない前記終了ノードに対する逆ドミ
ネータ候補点の組を改変するための手段と、ノードごと
にその逆ドミネータの組とそのサクセッサノードのすべ
ての逆ドミネータの組との論理積を演算し、前記ドミネ
ータ候補点の組の変化が生じなくなるまで演算の結果得
られる逆ドミネータの組を発生し、ノードごとに逆ドミ
ネータの組を発生するための手段とから成る第8項記載
の装置。
【0106】(10)合流点ノードを引き出すための手
段は、他のすべての逆ドミネータ候補点を逆ドミネート
している逆ドミネータを各ノードに対する逆ドミネータ
候補点の前記組から選択するための手段を含む、第9項
記載の装置。
段は、他のすべての逆ドミネータ候補点を逆ドミネート
している逆ドミネータを各ノードに対する逆ドミネータ
候補点の前記組から選択するための手段を含む、第9項
記載の装置。
【0107】(11)前記マージする手段は、次の3部
構成条件式
構成条件式
【0108】
【数14】
【0109】(ここで、e1は条件付分岐ノードのデー
タ依存性条件で、e2は条件が真の場合の変数の値であ
り、e3は条件が偽の場合の変数の値である)を使用
し、e1をデータ依存性条件に置換し、e2を前記デー
タ依存性条件に対し偽条件となる前記重複シャドー記号
表内の変数に割り当てられた記号値に置換し、e3を前
記データ依存性条件に対し偽条件となる前記重複シャド
ー記号表内の変数に割り当てられた記号値に置換する第
7項記載の装置。
タ依存性条件で、e2は条件が真の場合の変数の値であ
り、e3は条件が偽の場合の変数の値である)を使用
し、e1をデータ依存性条件に置換し、e2を前記デー
タ依存性条件に対し偽条件となる前記重複シャドー記号
表内の変数に割り当てられた記号値に置換し、e3を前
記データ依存性条件に対し偽条件となる前記重複シャド
ー記号表内の変数に割り当てられた記号値に置換する第
7項記載の装置。
【0110】(12)前記マージする手段は、前記重複
したシャドー記号表内の前記変数の値を組み合わせ、前
記データ依存性条件の各々の可能な値に対し変数が前記
値となる時を特定するステップを含む第11項記載の装
置。
したシャドー記号表内の前記変数の値を組み合わせ、前
記データ依存性条件の各々の可能な値に対し変数が前記
値となる時を特定するステップを含む第11項記載の装
置。
【0111】(13)アルゴリズムを記号評価する方法
が提供される。このアルゴリズムは、少なくとも一つの
入力データの値に依存した少なくとも一つの条件付分岐
ステートメントを有する。この方法は、アルゴリズムを
複数のノード(各ノードは複数のステートメントのうち
の少なくとも一つを表す)を有する制御フローグラフに
変換する工程を含む。この制御フローグラフは、データ
依存性条件付分岐ステートメントの各々に対し一つの条
件付分岐ノードを更に含む。次に複数のノードの各々に
対する逆ドミネータを計算し、これら逆ドミネータから
各々の条件付分岐ノードに対する合流点ノードを引き出
す。本方法は、更にアルゴリズムで参照されるすべての
変数を収容するシャドー記号テーブルを作成し、かつ条
件付分岐ノードに応答してデータの各々の可能な値に対
し重複したシャドー記号テーブルを作成するようになっ
ている。本方法は更に制御フローにしたがって各ノード
を次々に記号的に評価し、シャドー記号テーブル内の変
数の各々に一つの記号値を割り当てる。各々の分岐に対
し、データを各々の可能な値とし、シャドー記号表内の
変数の各々に記号値を割り当てることにより条件付分岐
ノードを評価する。各々の分岐内のノードは、その合流
点ノードに達するまで評価される。次に重複されたシャ
ドー記号表がマージされる。すべての条件付分岐が評価
され、制御フローグラフの終了点に達するまで記号評価
を続け、アルゴリズムを表す条件式を得る。
が提供される。このアルゴリズムは、少なくとも一つの
入力データの値に依存した少なくとも一つの条件付分岐
ステートメントを有する。この方法は、アルゴリズムを
複数のノード(各ノードは複数のステートメントのうち
の少なくとも一つを表す)を有する制御フローグラフに
変換する工程を含む。この制御フローグラフは、データ
依存性条件付分岐ステートメントの各々に対し一つの条
件付分岐ノードを更に含む。次に複数のノードの各々に
対する逆ドミネータを計算し、これら逆ドミネータから
各々の条件付分岐ノードに対する合流点ノードを引き出
す。本方法は、更にアルゴリズムで参照されるすべての
変数を収容するシャドー記号テーブルを作成し、かつ条
件付分岐ノードに応答してデータの各々の可能な値に対
し重複したシャドー記号テーブルを作成するようになっ
ている。本方法は更に制御フローにしたがって各ノード
を次々に記号的に評価し、シャドー記号テーブル内の変
数の各々に一つの記号値を割り当てる。各々の分岐に対
し、データを各々の可能な値とし、シャドー記号表内の
変数の各々に記号値を割り当てることにより条件付分岐
ノードを評価する。各々の分岐内のノードは、その合流
点ノードに達するまで評価される。次に重複されたシャ
ドー記号表がマージされる。すべての条件付分岐が評価
され、制御フローグラフの終了点に達するまで記号評価
を続け、アルゴリズムを表す条件式を得る。
【図1】ソフトウェアでの実現をハードウェア回路の実
現にトランスレートするための方法を示す大幅に簡略化
した図。
現にトランスレートするための方法を示す大幅に簡略化
した図。
【図2】本発明の好ましい実施例の簡略化したフローチ
ャート。
ャート。
【図3】本発明を良好に理解するための図例となるアル
ゴリズムの代表的制御フローグラフ。
ゴリズムの代表的制御フローグラフ。
【図4】ループ構造を有するアルゴリズムの代表的制御
フローグラフ。
フローグラフ。
【図5】反復回数が入力データに依存するループ構造を
有するアルゴリズム代表的制御フローグラフ。
有するアルゴリズム代表的制御フローグラフ。
1 ソフトウェア実現コード 3 データフローグラフ 36 条件付ノード 43、46、47 ノード 51、52、54 条件付分岐ノード 56 分岐点ノード c、b、i、y、x 変数
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成5年3月29日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正内容】
【書類名】 明細書
【発明の名祢】 アルゴリズムを記号評価する方法およ
ひアルゴリズムをトランスレートする装置
ひアルゴリズムをトランスレートする装置
【特許請求の範囲】
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的には記号のイン
タープリテイション技術の分野に関し、詳細にはデータ
依存性制御フロニによりアルゴリズムを記号評価する方
法に関する。
タープリテイション技術の分野に関し、詳細にはデータ
依存性制御フロニによりアルゴリズムを記号評価する方
法に関する。
【0002】
【従来の技術】所定のデジタル信号処理(DSP)アプ
リケーションを実現して必要な性能を得るのに、カスタ
ムデザインの集積回路が設計されることが多い。このこ
とは、一回のクロックサイクルで何回もの計算を行う並
列アーキテクチャを必要とするDSPアプリケーション
に特に当てはまる。一般的にデザイナーはまずアルゴリ
ズムの試験台となるソフトウェアでDSPアルゴリズム
を作成する。このDSPアルゴリズムがソフトウェアで
充分にテストされ、デバッグされた後に、このアルゴリ
ズムはソフトウェアでの実現を忠実に再現するようハー
ドウェアで再度実現される。しかしながら、ハードウェ
アの設計で利用できるツールおよび基本ビルディングブ
ロックは異なるので、達成できるハードウェアの実現
は、ソフトウェアのプロトタイプとは、異なって機能し
たり、機能しなかったりすることがある。したがって、
再実現プロセスから生じるエラーを除くことができるよ
うソフトウェアの実現からハードウェアの実現を直接に
導くことができるトランスレータが望まれている。
リケーションを実現して必要な性能を得るのに、カスタ
ムデザインの集積回路が設計されることが多い。このこ
とは、一回のクロックサイクルで何回もの計算を行う並
列アーキテクチャを必要とするDSPアプリケーション
に特に当てはまる。一般的にデザイナーはまずアルゴリ
ズムの試験台となるソフトウェアでDSPアルゴリズム
を作成する。このDSPアルゴリズムがソフトウェアで
充分にテストされ、デバッグされた後に、このアルゴリ
ズムはソフトウェアでの実現を忠実に再現するようハー
ドウェアで再度実現される。しかしながら、ハードウェ
アの設計で利用できるツールおよび基本ビルディングブ
ロックは異なるので、達成できるハードウェアの実現
は、ソフトウェアのプロトタイプとは、異なって機能し
たり、機能しなかったりすることがある。したがって、
再実現プロセスから生じるエラーを除くことができるよ
うソフトウェアの実現からハードウェアの実現を直接に
導くことができるトランスレータが望まれている。
【0003】
【発明が解決しようとする課題】ソフトウェアからハー
ドウェアへのトランスレーションの達成を行う一つの方
法は、ソフトウェアのアルゴリズムをまずデータフロー
グラフにトランスレートすることであり、このデータフ
ローグラフからハードウェア回路を構成できる。トラン
スレーションの一つの技術として記号評価方法がある
が、この方法は部分的評価のコンパイル技術と関係して
いる。部分評価方法とは、既知の入力データを備えたプ
ログラムの部分を評価するもので、特定されていない入
力データを備えたプログラム部分は、実行時にしか評価
されない。従って、プログラムにデータ依存性がない場
合、プログラムは完全に評価できる。しかしながら、デ
ータに依存しないアルゴリズムはほとんど無い。例え
ば、IFステートメントの条件またはFORループ上の
境界がある入力データに依存している場合、アルゴリズ
ムはデータ依存制御フローを有することになる。
ドウェアへのトランスレーションの達成を行う一つの方
法は、ソフトウェアのアルゴリズムをまずデータフロー
グラフにトランスレートすることであり、このデータフ
ローグラフからハードウェア回路を構成できる。トラン
スレーションの一つの技術として記号評価方法がある
が、この方法は部分的評価のコンパイル技術と関係して
いる。部分評価方法とは、既知の入力データを備えたプ
ログラムの部分を評価するもので、特定されていない入
力データを備えたプログラム部分は、実行時にしか評価
されない。従って、プログラムにデータ依存性がない場
合、プログラムは完全に評価できる。しかしながら、デ
ータに依存しないアルゴリズムはほとんど無い。例え
ば、IFステートメントの条件またはFORループ上の
境界がある入力データに依存している場合、アルゴリズ
ムはデータ依存制御フローを有することになる。
【0004】従来の記号評価方法は、データ依存制御フ
ローを備えたアルゴリズムを満足できるよう処理できな
い。従って、データ依存制御フローを備えたアルゴリズ
ムを記号評価する技術が望まれてきた。かかる技術は、
この技術をDPS用ハードウェアの設計に応用するのに
役立つだけでなく、コンパイラーによるプログラムの最
適化および並列化を利用するアプリケーションにも役立
つ。
ローを備えたアルゴリズムを満足できるよう処理できな
い。従って、データ依存制御フローを備えたアルゴリズ
ムを記号評価する技術が望まれてきた。かかる技術は、
この技術をDPS用ハードウェアの設計に応用するのに
役立つだけでなく、コンパイラーによるプログラムの最
適化および並列化を利用するアプリケーションにも役立
つ。
【0005】
【課題を解決するための手段および作用】本発明によれ
ば、従来技術に関連した欠点および問題を実質的に解消
または減少したデータ依存性制御フロー評価方法が提供
される。
ば、従来技術に関連した欠点および問題を実質的に解消
または減少したデータ依存性制御フロー評価方法が提供
される。
【0006】本発明の一つの様相によれば、アルゴリズ
ムを記号評価する方法が提供される。このアルゴリズム
は、少なくとも一つの入力データの値に依存した少なく
とも一つの条件分岐付ステートメントを有する。この方
法は、アルゴリズムを複数のノード(各ノードは複数の
ステートメントのうちの少なくとも一つを表す)を有す
る制御フローグラフに変換する工程を含む。この制御フ
ローグラフは、データ依存性条件付分岐ステートメント
の各々に対し一つの条件付分岐ノードを更に含む。次に
複数のノードの各々に対する逆ドミネータを計算し、こ
れら逆ドミネータから各々の条件付分岐ノードに対する
合流点ノードを引き出す。
ムを記号評価する方法が提供される。このアルゴリズム
は、少なくとも一つの入力データの値に依存した少なく
とも一つの条件分岐付ステートメントを有する。この方
法は、アルゴリズムを複数のノード(各ノードは複数の
ステートメントのうちの少なくとも一つを表す)を有す
る制御フローグラフに変換する工程を含む。この制御フ
ローグラフは、データ依存性条件付分岐ステートメント
の各々に対し一つの条件付分岐ノードを更に含む。次に
複数のノードの各々に対する逆ドミネータを計算し、こ
れら逆ドミネータから各々の条件付分岐ノードに対する
合流点ノードを引き出す。
【0007】本方法は、更にアルゴリズムで参照される
すべての変数を含むシャドー記号表を作成し、かつ条件
付分岐ノードに応答してデータの各々の可能な値に対し
重複したシャドー記号表を作成するようになっている。
換言すれば、評価に達したとき条件付分岐ステートメン
トの各々の可能な分岐に対し、一つのシャドー記号表例
を作成する。
すべての変数を含むシャドー記号表を作成し、かつ条件
付分岐ノードに応答してデータの各々の可能な値に対し
重複したシャドー記号表を作成するようになっている。
換言すれば、評価に達したとき条件付分岐ステートメン
トの各々の可能な分岐に対し、一つのシャドー記号表例
を作成する。
【0008】本方法は、さらに制御フローに従って各ノ
ードを次々に記号的に評価し、シャドー記号表内の変数
の各々に一つの記号値を割り当てる。各々の分岐に対
し、データを各々の可能な値とし、シャドー記号表内の
変数の各々に記号値を割り当てることにより条件付分岐
ノードを評価する。各々の分岐は、その合流点ノードに
達するまで別々かつ次々に評価される。次に重複された
シャドー記号表がマージされ、別々の分岐に沿って異な
る記号値を得た各々の変数のを表す条件式となる。
ードを次々に記号的に評価し、シャドー記号表内の変数
の各々に一つの記号値を割り当てる。各々の分岐に対
し、データを各々の可能な値とし、シャドー記号表内の
変数の各々に記号値を割り当てることにより条件付分岐
ノードを評価する。各々の分岐は、その合流点ノードに
達するまで別々かつ次々に評価される。次に重複された
シャドー記号表がマージされ、別々の分岐に沿って異な
る記号値を得た各々の変数のを表す条件式となる。
【0009】
【効果】本発明の重要な技術的効果としては、アプリケ
ーションアルゴリズムのソフトウェアでの実現をハード
ウェアでの実現、例えばカスタムアプリケーションの特
定集積回路(ASIC)へ置換トランスレートするため
のデータフローグラフに変換できるようデータ依存性制
御フローを除くための技術が得られることが挙げられ
る。
ーションアルゴリズムのソフトウェアでの実現をハード
ウェアでの実現、例えばカスタムアプリケーションの特
定集積回路(ASIC)へ置換トランスレートするため
のデータフローグラフに変換できるようデータ依存性制
御フローを除くための技術が得られることが挙げられ
る。
【0010】本発明の別の重要な効果としては、コンパ
イラーによるプログラムの最適化および高度の並列化を
必要とするアプリケーションに有効な記号評価技術が得
られることが挙げられる。
イラーによるプログラムの最適化および高度の並列化を
必要とするアプリケーションに有効な記号評価技術が得
られることが挙げられる。
【0011】木発明の理解をより良好とするため、以下
添付図面を参照する。
添付図面を参照する。
【0012】
【実施例】添付図面を参照すると、図1は特定のアプリ
ケーションのソフトウェアアルゴリズムの作成からハー
ドウェア回路を実現するためのトランスレーション方法
を示す略図である。これまで、回路デザイナーは、アプ
リケーションアルゴリズムをまずソフトウェアで作成し
ていた。このソフトウェアは、次にアルゴリズムの保全
性を保証するように充分にテストでき、デザイナーはそ
の後できるだけ忠実にソフトウェアを再現するようこの
アルゴリズムをハードウェアで再実現しなければならな
い。アーキテクタ上高度の並列性が必要とされる所定の
デジタル信号処理(DSP)アプリケーションでは、ソ
フトウェアおよびハードウェアでのアプリケーションの
双方での実現が特に必要である。従って、このトランス
レーションプロセスは、テストされるソフトウェアのア
ルゴリズムをハードウェアで再実現する際にエラーの生
じやすいステップを除くことができる。
ケーションのソフトウェアアルゴリズムの作成からハー
ドウェア回路を実現するためのトランスレーション方法
を示す略図である。これまで、回路デザイナーは、アプ
リケーションアルゴリズムをまずソフトウェアで作成し
ていた。このソフトウェアは、次にアルゴリズムの保全
性を保証するように充分にテストでき、デザイナーはそ
の後できるだけ忠実にソフトウェアを再現するようこの
アルゴリズムをハードウェアで再実現しなければならな
い。アーキテクタ上高度の並列性が必要とされる所定の
デジタル信号処理(DSP)アプリケーションでは、ソ
フトウェアおよびハードウェアでのアプリケーションの
双方での実現が特に必要である。従って、このトランス
レーションプロセスは、テストされるソフトウェアのア
ルゴリズムをハードウェアで再実現する際にエラーの生
じやすいステップを除くことができる。
【0013】第1図を参照すると、ソフトウェアの作成
は、高度のコンピュータ言語、例えばC言語およびフォ
ートランで一般に表現される。このソフトウェアの作成
は、次に記号評価方法2によりインタープリットされ、
この方法はソフトウェアの作成をデータフローグラフ3
で表す。このデータフローグラフ3から、アプリケーシ
ョンアルゴリズムのハードウェア回路の実現へと導くこ
とができる。
は、高度のコンピュータ言語、例えばC言語およびフォ
ートランで一般に表現される。このソフトウェアの作成
は、次に記号評価方法2によりインタープリットされ、
この方法はソフトウェアの作成をデータフローグラフ3
で表す。このデータフローグラフ3から、アプリケーシ
ョンアルゴリズムのハードウェア回路の実現へと導くこ
とができる。
【0014】ソフトウェアの作成は、ほとんど常にデー
タ依存性制御フローパスを含んでいるが、この制御フロ
ーパスは、トランスレーション方法における従来の記号
評価技術では取り扱いできない。本発明は、データ依存
性制御フローによるアルゴリズムの記号評価技術を提供
するものである。
タ依存性制御フローパスを含んでいるが、この制御フロ
ーパスは、トランスレーション方法における従来の記号
評価技術では取り扱いできない。本発明は、データ依存
性制御フローによるアルゴリズムの記号評価技術を提供
するものである。
【0015】図2を参照すると、トランスレーション方
法の大半は、ブロック10で開始する。ソフトウェア実
現コード1は、ブロック12に示すようにN個のノード
を有する制御フローグラフにまず変換される。かかる制
御フローグラフ変換技術は、本明細書で引用するアルフ
レッド・ヴイ・エイホー(Alfred.V.Aho)
外著、「コンパイラー、原理、技術およびツール(Co
mpilers,Principles,Techni
ques and Tools)」に述べられているよ
うなコンパイラー設計およびコード最適化分野において
は従来技術となっている。この変換方法は、一般にデー
タフローグラフを含むデータ構造、例えばツリー構造を
組み立てる。概念的には、このデータフローグラフは、
ノードを含み、各ノードが、ソフトウェアアルゴリズム
からの内部分岐のない実行可能なステートメントの組を
含む。
法の大半は、ブロック10で開始する。ソフトウェア実
現コード1は、ブロック12に示すようにN個のノード
を有する制御フローグラフにまず変換される。かかる制
御フローグラフ変換技術は、本明細書で引用するアルフ
レッド・ヴイ・エイホー(Alfred.V.Aho)
外著、「コンパイラー、原理、技術およびツール(Co
mpilers,Principles,Techni
ques and Tools)」に述べられているよ
うなコンパイラー設計およびコード最適化分野において
は従来技術となっている。この変換方法は、一般にデー
タフローグラフを含むデータ構造、例えばツリー構造を
組み立てる。概念的には、このデータフローグラフは、
ノードを含み、各ノードが、ソフトウェアアルゴリズム
からの内部分岐のない実行可能なステートメントの組を
含む。
【0016】C++言語で書かれた次のソフトウェアコ
ード例を参照しても本技術が良好に理解されよう。
ード例を参照しても本技術が良好に理解されよう。
【0017】
【数1】
【0018】図3に例A内のアルゴリズムの制御フロー
グラフを示す。図3中の制御フローグラフは、4つのノ
ード36〜40を示す。ノード36で、条件式内の変数
cが真すなわち非ゼロであれば制御はノード37へフロ
ーし、変数iには変数yの値が割り当てられる。一方、
変数cがゼロであれば、ノード38にフローし、このノ
ード38で変数iに変数xの値が割り当てられる。ノー
ド40では、変数iの値にリターンされる。したがっ
て、例Aは条件式を有し、その値iは入力cに依存して
いるので、ノード36は条件付分岐ノードとなることが
判る。
グラフを示す。図3中の制御フローグラフは、4つのノ
ード36〜40を示す。ノード36で、条件式内の変数
cが真すなわち非ゼロであれば制御はノード37へフロ
ーし、変数iには変数yの値が割り当てられる。一方、
変数cがゼロであれば、ノード38にフローし、このノ
ード38で変数iに変数xの値が割り当てられる。ノー
ド40では、変数iの値にリターンされる。したがっ
て、例Aは条件式を有し、その値iは入力cに依存して
いるので、ノード36は条件付分岐ノードとなることが
判る。
【0019】次に図2のブロック16に移る。ここでは
ブロック12で得た制御フローグラフから逆ドミネータ
を引算する。所定ノードの逆ドミネータは、ノードの組
として定義され、制御ステップはこの所定ノードからこ
れらのノードの組を通過するよう保証されている。ノー
ドNと最終ノードnoの組を備えた制御フローグラフの
逆ドミネータを見つけるための疑似コードアルゴリズム
は次の通りである。
ブロック12で得た制御フローグラフから逆ドミネータ
を引算する。所定ノードの逆ドミネータは、ノードの組
として定義され、制御ステップはこの所定ノードからこ
れらのノードの組を通過するよう保証されている。ノー
ドNと最終ノードnoの組を備えた制御フローグラフの
逆ドミネータを見つけるための疑似コードアルゴリズム
は次の通りである。
【0020] 【0020]【数2】
【0021】ここでR(n)はノードnの逆ドミネータ
の組であり、suc(n)はノードnのサクセッサの組
である。一つのノードnのサクセッサは、実行フロー内
のノードnのサクセッサは、実行フロー内のノードnの
直接後に続くノードの組と定義される。例えば、図3内
のノード36のサクセッサはノード37および38であ
る。上記アルゴリズム(1)が続けば、例Aに対する逆
ドミネータは次の通りである。
の組であり、suc(n)はノードnのサクセッサの組
である。一つのノードnのサクセッサは、実行フロー内
のノードnのサクセッサは、実行フロー内のノードnの
直接後に続くノードの組と定義される。例えば、図3内
のノード36のサクセッサはノード37および38であ
る。上記アルゴリズム(1)が続けば、例Aに対する逆
ドミネータは次の通りである。
【0022】
【数3】
【0023】ここでR(n)は、ノードnに対する逆ド
ミネータの組であり、Nは{36、37、38、40}
を含む。各々のノードに対し、逆ドミネータの組はそれ
自身を含んでいることが判る。
ミネータの組であり、Nは{36、37、38、40}
を含む。各々のノードに対し、逆ドミネータの組はそれ
自身を含んでいることが判る。
【0024】図2中のブロック18に進む。逆ドミネー
タの組から合流点を計算する。一つのノードが2つ以上
のサクセッサノードを有している場合すなわち条件付分
岐1である場合、合流点を逆ドミネータしているが、条
件付分岐ノード自体を排除しているノードから合流点ノ
ードを計算する。特定の条件付分岐ノードを計算する。
特定の条件付分岐ノードに対する逆ドミネータの残りに
より逆ドミネートされている逆ドミネータは、その条件
付分岐ノードに対する合流点となる。条件付分岐ノード
nに対する合流点を計算するための疑似コードアルゴリ
ズムは、次のように与えられる。
タの組から合流点を計算する。一つのノードが2つ以上
のサクセッサノードを有している場合すなわち条件付分
岐1である場合、合流点を逆ドミネータしているが、条
件付分岐ノード自体を排除しているノードから合流点ノ
ードを計算する。特定の条件付分岐ノードを計算する。
特定の条件付分岐ノードに対する逆ドミネータの残りに
より逆ドミネートされている逆ドミネータは、その条件
付分岐ノードに対する合流点となる。条件付分岐ノード
nに対する合流点を計算するための疑似コードアルゴリ
ズムは、次のように与えられる。
【0025】
【数4】 候補点 :=R(n)−{n}: 合流点 :=候補点のうちのいくつか 候補点−{合流点}内のいくつかに対し、合流点∈R
(n)であれば、合流点:=n;とする。従って、ノー
ド40は図3中内の条件付ノード36に対する合流点と
なる。
(n)であれば、合流点:=n;とする。従って、ノー
ド40は図3中内の条件付ノード36に対する合流点と
なる。
【0026】ブロック18内で合流点が引算されると、
準備ステップが完了し、ブロック20内で記号評価方法
が開始する。ブロック20に示すようにシャドー記号表
と称されるデータ構造が構成される。シャドー記号表の
代表例は次の通りである。
準備ステップが完了し、ブロック20内で記号評価方法
が開始する。ブロック20に示すようにシャドー記号表
と称されるデータ構造が構成される。シャドー記号表の
代表例は次の通りである。
【0027】
【表1】
【0028】このシャドー記号表は、アーギュメント、
静的変数および大域変数に対するエントリを含む。エン
トリには変数を表す記号値が割り当てられる。エントリ
にたいする記号値は、ストリングとして示されるが、有
向非同期グラフとして実施することが好ましい。
静的変数および大域変数に対するエントリを含む。エン
トリには変数を表す記号値が割り当てられる。エントリ
にたいする記号値は、ストリングとして示されるが、有
向非同期グラフとして実施することが好ましい。
【0029】この点では、制御フローグラフ(CFG)
内のノードは、図2中のブロック21に示すように次々
にインタープリットされる。記号評価のための開始ノー
ドは、制御フローグラフの初期ノードとして、すなわち
ノード40としてセットされている。
内のノードは、図2中のブロック21に示すように次々
にインタープリットされる。記号評価のための開始ノー
ドは、制御フローグラフの初期ノードとして、すなわち
ノード40としてセットされている。
【0030】ブロック22では、終了ノードがこのとき
はノード40に達しているか否か判別する。終了ノード
40に達していなければ、ノード23まで進み、このノ
ードでそのときのノードは条件付分岐ノードであるか否
か判別する。ノード36は変数cの値に応じてノード3
7またはノード38のいずれかを実施するデータ依存性
分岐式を含んでいるので、次にブロック25を実施す
る。
はノード40に達しているか否か判別する。終了ノード
40に達していなければ、ノード23まで進み、このノ
ードでそのときのノードは条件付分岐ノードであるか否
か判別する。ノード36は変数cの値に応じてノード3
7またはノード38のいずれかを実施するデータ依存性
分岐式を含んでいるので、次にブロック25を実施す
る。
【0031】この点では、条件付分岐ノードの各分岐を
インタープリテイションのための実行準備ができてい
る。条件付分岐ノードnの各々のサクセッサノードに対
し、シャドー記号表の重複例を作成し、各々の分岐のノ
ードを記号的に評価し、ここで開始ノードをノードnに
変更し、終了ノードを条件付分岐ノードに対する合流点
に変更する。したがって、合流点に達するまで各分岐内
のノードごとに記号評価を行う。よって、各分岐のイン
タープリテイションを表すよう分岐ごとのシャドー記号
表を変える。例Aでは、シャドー記号表の2つの例を構
成する。合流点ノード40までに各条件式分岐を評価
し、それぞれのシャドー記号表内にそれらの結果を記録
する。例えばノード37の式に指示されているように変
数iがインタープリットされ、”y”の値が割り当てら
れる。この割り当て完了時にノード40すなわち合流点
に達するので、真の分岐のインタープリテイションが完
了する。真の分岐のインタープリテイションの終了時の
シャドー記号表は、次の通りである。
インタープリテイションのための実行準備ができてい
る。条件付分岐ノードnの各々のサクセッサノードに対
し、シャドー記号表の重複例を作成し、各々の分岐のノ
ードを記号的に評価し、ここで開始ノードをノードnに
変更し、終了ノードを条件付分岐ノードに対する合流点
に変更する。したがって、合流点に達するまで各分岐内
のノードごとに記号評価を行う。よって、各分岐のイン
タープリテイションを表すよう分岐ごとのシャドー記号
表を変える。例Aでは、シャドー記号表の2つの例を構
成する。合流点ノード40までに各条件式分岐を評価
し、それぞれのシャドー記号表内にそれらの結果を記録
する。例えばノード37の式に指示されているように変
数iがインタープリットされ、”y”の値が割り当てら
れる。この割り当て完了時にノード40すなわち合流点
に達するので、真の分岐のインタープリテイションが完
了する。真の分岐のインタープリテイションの終了時の
シャドー記号表は、次の通りである。
【0032】
【表2】
【0033】同様にして、例Aのデータフローグラフの
偽分岐に対するシャドー記号表を作成できる。
偽分岐に対するシャドー記号表を作成できる。
【0034】
【表3】
【0035】合流点すなわちノード40に達すれば、偽
分岐のインタープリテイションが完了する。この点で
は、ブロック25(図2)内の再帰インタープリテイシ
ョンが完了し、ブロック26に進む。ブロック26で
は、すべての分岐のシャドー記号表がマージされ表内の
対応する式が異なる条件式が得られる。例Aでは、双方
の条件付分岐のインタープリテイションは、合流点ノー
ド40に達しているので、表Bと表Cの結果は次のよう
にマージされる。
分岐のインタープリテイションが完了する。この点で
は、ブロック25(図2)内の再帰インタープリテイシ
ョンが完了し、ブロック26に進む。ブロック26で
は、すべての分岐のシャドー記号表がマージされ表内の
対応する式が異なる条件式が得られる。例Aでは、双方
の条件付分岐のインタープリテイションは、合流点ノー
ド40に達しているので、表Bと表Cの結果は次のよう
にマージされる。
【0036】
【表4】
【0037】変数iの値は、c言語の3部構成条件式に
より表される。
より表される。
【0038】
【数5】e1?e2:e3
【0039】ここで、e1が非ゼロすなわち真のとき式
は値2となり、e1がゼロすなわち偽のとき、式はe3
となる。従って変数iの値は、条件の値cが非ゼロのと
き、変数yの値に等しく、cの値がゼロのとき変数xの
値に等しい。図2中のブロック30では、条件式(c?
y:x)にリターンする。
は値2となり、e1がゼロすなわち偽のとき、式はe3
となる。従って変数iの値は、条件の値cが非ゼロのと
き、変数yの値に等しく、cの値がゼロのとき変数xの
値に等しい。図2中のブロック30では、条件式(c?
y:x)にリターンする。
【0040】例Aでは、条件付分岐ノードは2つのサク
セッサノードしか有していない。すなわち真分岐と偽分
岐しか有していないので、本発明の好ましい実施態様
は、マルチ分岐に関連する条件付分岐ステートメント、
例えばc言語のスイッチステートメントにも同様に適用
できる。3部構成式を拡張してマルチ分岐化を実現する
ような式を容易に考案できる。
セッサノードしか有していない。すなわち真分岐と偽分
岐しか有していないので、本発明の好ましい実施態様
は、マルチ分岐に関連する条件付分岐ステートメント、
例えばc言語のスイッチステートメントにも同様に適用
できる。3部構成式を拡張してマルチ分岐化を実現する
ような式を容易に考案できる。
【0041】本例に戻ると、式(c?y:x)を供給す
ることにより、先のデータ依存性アルゴリズムの制御フ
ローを完全に除き、最大の可能な並列化を実現する。デ
ータ依存性条件化分岐は条件式まで減少され、これらの
条件式は全アプリケーションアルゴリズム用の最終デー
タフローグラフに容易に組み込むことができる。本発明
をさらによく理解できるようにするためさらに別の例を
挙げる。図4は、ループ構造の記号解釈をデモンストレ
ートする次のアルゴリズムのための代表的制御フローグ
ラフである。
ることにより、先のデータ依存性アルゴリズムの制御フ
ローを完全に除き、最大の可能な並列化を実現する。デ
ータ依存性条件化分岐は条件式まで減少され、これらの
条件式は全アプリケーションアルゴリズム用の最終デー
タフローグラフに容易に組み込むことができる。本発明
をさらによく理解できるようにするためさらに別の例を
挙げる。図4は、ループ構造の記号解釈をデモンストレ
ートする次のアルゴリズムのための代表的制御フローグ
ラフである。
【0042】
【数6】
【0043】制御フローグラフは、ノード42〜46を
含む。図2中でアウトラインを示したステップの後で、
逆ドミネータを計算する。アルゴリズム41により計算
され、得られた逆ドミネータは次のとおりである。
含む。図2中でアウトラインを示したステップの後で、
逆ドミネータを計算する。アルゴリズム41により計算
され、得られた逆ドミネータは次のとおりである。
【0044】
【数7】
【0045】ブロック18に示すように上記アルゴリズ
ム(2)を使用して各条件付分岐ノード43および44
に対する合流点を計算する。ノード43に対し、これ自
体を除く逆ドミネータはノード47だけである。従っ
て、ノード47はノード43内の条件付分岐に対する合
流点である。ノード44に対し、ノード46が合流点と
なる。
ム(2)を使用して各条件付分岐ノード43および44
に対する合流点を計算する。ノード43に対し、これ自
体を除く逆ドミネータはノード47だけである。従っ
て、ノード47はノード43内の条件付分岐に対する合
流点である。ノード44に対し、ノード46が合流点と
なる。
【0046】(図2中のブロック20に示すように)次
のようにシャドー記号表を作成することにより記号評価
が進行する。
のようにシャドー記号表を作成することにより記号評価
が進行する。
【0047】
【表5】
【0048】次にノード42で開始して記号評価が進行
する。ノード42内の2つの割り当てステートメントを
インタープリットすると、その結果次のシャドー記号表
が得られる。
する。ノード42内の2つの割り当てステートメントを
インタープリットすると、その結果次のシャドー記号表
が得られる。
【0049】
【表6】
【0050】次に、ノード43内で最初の条件付分岐に
合流する。条件式(i<3)は変数iを含み、この値は
既知であるので、この式はデータ依存性条件付分岐では
ない。iはこのとき1であるので、ノード44に進む
と、ここでデータ依存性条件付分岐に合う。ノード44
は、条件(a[i]>b)(変数bは”a[0]”に等
しくなるようセットされているので、この条件はシャド
ー記号表では”a[1]>a[0]”となる)に依存し
た条件付分岐ノードである。条件”a[0]>a
[0]”は、シャドー記号表をマージするとき使用され
る。
合流する。条件式(i<3)は変数iを含み、この値は
既知であるので、この式はデータ依存性条件付分岐では
ない。iはこのとき1であるので、ノード44に進む
と、ここでデータ依存性条件付分岐に合う。ノード44
は、条件(a[i]>b)(変数bは”a[0]”に等
しくなるようセットされているので、この条件はシャド
ー記号表では”a[1]>a[0]”となる)に依存し
た条件付分岐ノードである。条件”a[0]>a
[0]”は、シャドー記号表をマージするとき使用され
る。
【0051】条件(a[i]>a[0])はデータに依
存しているので、合流点ノード46に達するまで各分岐
をインタープリットする。このことは、図2中のブロッ
ク25内の実施に対応する。(a[i]>a[0])の
真条件の結果、シャドー記号表が得られる。
存しているので、合流点ノード46に達するまで各分岐
をインタープリットする。このことは、図2中のブロッ
ク25内の実施に対応する。(a[i]>a[0])の
真条件の結果、シャドー記号表が得られる。
【0052】
【表7】
【0053】偽条件に対し、変数bの値は変わらないの
で、その結果得られるシャドー記号表は表Fと同じとな
る。ノード46、すなわち合流点では、分岐”a[1]
>a[0]”の条件を次のように使用するループを最初
に繰り返すようシャドー記号表FおよびGをマージす
る。
で、その結果得られるシャドー記号表は表Fと同じとな
る。ノード46、すなわち合流点では、分岐”a[1]
>a[0]”の条件を次のように使用するループを最初
に繰り返すようシャドー記号表FおよびGをマージす
る。
【0054】
【表8】
【0055】合流点からインタープリテイションを進
め、変数iの値をノード46で1だけ増加する。
め、変数iの値をノード46で1だけ増加する。
【0056】
【表9】
【0057】ノード43まで実行を進め、ここで条件付
分岐を評価する。この条件は真であるので、データ依存
性条件付分岐ノードであるノード44に実行を進める。
ノード44は、条件(a[i]>b)に依存する条件付
分岐ノードであり、この条件はシャドー記号表のコンテ
キスト中では次のようになっている。
分岐を評価する。この条件は真であるので、データ依存
性条件付分岐ノードであるノード44に実行を進める。
ノード44は、条件(a[i]>b)に依存する条件付
分岐ノードであり、この条件はシャドー記号表のコンテ
キスト中では次のようになっている。
【0058】
【数8】 ”a[2]>(a[1]>a[0])?a[1]:a[0])”
【0059】図2中のブロック25に示すように、各分
岐に対しシャドー記号表の一列を作成し、その値をイン
タープリットする。偽分岐に対し、シャドー記号表内の
値は変わらない。真分岐に対し、シャドー記号表は次の
とおりである。
岐に対しシャドー記号表の一列を作成し、その値をイン
タープリットする。偽分岐に対し、シャドー記号表内の
値は変わらない。真分岐に対し、シャドー記号表は次の
とおりである。
【0060】
【表10】
【0061】ノード45で、シャドー記号表IおよびJ
をマージする。これらの表は、変数bの値が異なってい
るだけであるので、マージステップではこの値だけを変
える。条件付分岐における条件は、条件式内のセレクタ
として使用されるので、この結果次のシャドー記号表が
得られる。
をマージする。これらの表は、変数bの値が異なってい
るだけであるので、マージステップではこの値だけを変
える。条件付分岐における条件は、条件式内のセレクタ
として使用されるので、この結果次のシャドー記号表が
得られる。
【0062】
【表11】
【0063】ノード46を再び評価するとき、変数iの
値を3に増加する。再度ノード43まで実行を戻す。其
のときiは3であり、3以上であるので、条件が偽とな
ったノード43をインタープリットする。従って、ノー
ド47まで実行を進める。ここでは変数bの値はシャド
ー記号表Kに示すように次のとおりである。
値を3に増加する。再度ノード43まで実行を戻す。其
のときiは3であり、3以上であるので、条件が偽とな
ったノード43をインタープリットする。従って、ノー
ド47まで実行を進める。ここでは変数bの値はシャド
ー記号表Kに示すように次のとおりである。
【0064】
【数9】
【0065】本例は、指向非同期グラフに式を残す利点
を示す。上記変数bの値は、サブ式”(a[1]>a
[0]?a[1]:a[0]”を2回含み、この式はツ
リー構造の一つの式で経済的に示すことができる。
を示す。上記変数bの値は、サブ式”(a[1]>a
[0]?a[1]:a[0]”を2回含み、この式はツ
リー構造の一つの式で経済的に示すことができる。
【0066】最終例は繰り返し回数がデータに依存して
いるループに適用した本例を示す。このアルゴリズム例
は下記のとおりであり、図5に対応する制御フローグラ
フをしめす。
いるループに適用した本例を示す。このアルゴリズム例
は下記のとおりであり、図5に対応する制御フローグラ
フをしめす。
【0067】
【数10】
【0068】図5に示すように、例Cの制御フローグラ
フはノード50〜56を含み、このうちのノード51、
52および54は条件付分岐ノードである。
フはノード50〜56を含み、このうちのノード51、
52および54は条件付分岐ノードである。
【0069】図2にノンアウトラインを示したステップ
の後にブロック16で次の結果を用い、上記アルゴリズ
ム(1)に従い逆ドミネータを計算する。
の後にブロック16で次の結果を用い、上記アルゴリズ
ム(1)に従い逆ドミネータを計算する。
【0070】
【数11】
【0071】ブロック18では、上記アルゴリズム
(2)に従って、逆ドミネータからノード51、52お
よび54に対する合流点を計算する。ノード51に対し
ては、合流点はノード56であり、ノード52に対して
は、合流点はトード54であり、ノード54に対して合
流点はノード56である。
(2)に従って、逆ドミネータからノード51、52お
よび54に対する合流点を計算する。ノード51に対し
ては、合流点はノード56であり、ノード52に対して
は、合流点はトード54であり、ノード54に対して合
流点はノード56である。
【0072】アーギュメント、静的変数および大域変数
およびそれぞれの記号値を含むシャドー記号表を作成す
ることにより例Cのアルゴリズムの記号評価が始まる。
次に制御フローグラフの第1ノードすなわちノード50
で開始させて記号評価を進める。ノード50での割り当
て式の後で、シャドー記号表は次のようになる。
およびそれぞれの記号値を含むシャドー記号表を作成す
ることにより例Cのアルゴリズムの記号評価が始まる。
次に制御フローグラフの第1ノードすなわちノード50
で開始させて記号評価を進める。ノード50での割り当
て式の後で、シャドー記号表は次のようになる。
【0073】
【表12】
【0074】ノード51には条件式があり、この値は既
知の値だけに依存しているので、この条件を評価する。
このとき変数iは3未満であるので、ノード52まで実
行を進める。ノード52は”a[1]>a[0]”と翻
訳されているデータ依存性条件式(a[i]>b)を含
んでいる。従って、2例のシャドー記号表を作成し、合
流点に達するまで条件付分岐のうちの各分岐を別々に評
価する。この条件の偽分岐の結果、変わっていないシャ
ドー記号表が得られるが、真分岐の結果、次の変わって
いない表が得られる。
知の値だけに依存しているので、この条件を評価する。
このとき変数iは3未満であるので、ノード52まで実
行を進める。ノード52は”a[1]>a[0]”と翻
訳されているデータ依存性条件式(a[i]>b)を含
んでいる。従って、2例のシャドー記号表を作成し、合
流点に達するまで条件付分岐のうちの各分岐を別々に評
価する。この条件の偽分岐の結果、変わっていないシャ
ドー記号表が得られるが、真分岐の結果、次の変わって
いない表が得られる。
【0075】
【表13】
【0076】合流点であるノード54では、2例のシャ
ドー記号表をマージする。シャドー記号表LおよひM
は、変数bの値が異なっているだけである。条件付分岐
内の条件は、条件式のセレクタとして使用され、次の表
を与える。
ドー記号表をマージする。シャドー記号表LおよひM
は、変数bの値が異なっているだけである。条件付分岐
内の条件は、条件式のセレクタとして使用され、次の表
を与える。
【0077】
【表14】
【0078】ノード54をインタープリットすると、こ
のノードは別のデータ依存性条件付分岐として認識され
る。ノード54は、条件(a[i]>10)に依存して
おり、この条件は現在のシャドー記号表のコンテキスト
ではデータ依存性条件(a[i]>10)となってい
る。この条件はデータ依存性であるのでその分岐は次々
にインタープリットしなければならない。
のノードは別のデータ依存性条件付分岐として認識され
る。ノード54は、条件(a[i]>10)に依存して
おり、この条件は現在のシャドー記号表のコンテキスト
ではデータ依存性条件(a[i]>10)となってい
る。この条件はデータ依存性であるのでその分岐は次々
にインタープリットしなければならない。
【0079】例cは、本技術の重要な様相を示す。ノー
ド54内のデータ依存性分岐は、ループ構造内にあるの
で、このノードの偽分岐は、合流点ノード56に達する
前にノード54内のデータ依存性条件に達する。本例で
はインタープリタはノード56の合流点に達するまでそ
の後の条件付分岐を反復して評価し、偽分岐の結果を生
じる。この点では、ノード54内の元の条件付分岐の2
つのパスが合流点ノード56に達し、マージできる。本
例は、2回深く反復するだけであるが、更に繰り返しを
必要とするデータ依存性分岐を含むループを制御フロー
グラフが有しているとき、この技術は任意の反復深さに
も適用できる。例えば、例Cのアルゴリズムのノード5
1内の条件を(i<10)に変更したと仮定すれば、こ
の方法は、9の深さに反復する。
ド54内のデータ依存性分岐は、ループ構造内にあるの
で、このノードの偽分岐は、合流点ノード56に達する
前にノード54内のデータ依存性条件に達する。本例で
はインタープリタはノード56の合流点に達するまでそ
の後の条件付分岐を反復して評価し、偽分岐の結果を生
じる。この点では、ノード54内の元の条件付分岐の2
つのパスが合流点ノード56に達し、マージできる。本
例は、2回深く反復するだけであるが、更に繰り返しを
必要とするデータ依存性分岐を含むループを制御フロー
グラフが有しているとき、この技術は任意の反復深さに
も適用できる。例えば、例Cのアルゴリズムのノード5
1内の条件を(i<10)に変更したと仮定すれば、こ
の方法は、9の深さに反復する。
【0080】ノード54を評価すると、シャドー記号表
の重複例が作成される。条件(a[1]>10)の真分
岐は、すぐに合流点(ノード56)に至るので、シャド
ー記号表は変わらないままである。他方、ノード54内
の条件の偽分岐はノード55進み、変数iの値をインク
リメントすることによりシャドー記号表を変える。
の重複例が作成される。条件(a[1]>10)の真分
岐は、すぐに合流点(ノード56)に至るので、シャド
ー記号表は変わらないままである。他方、ノード54内
の条件の偽分岐はノード55進み、変数iの値をインク
リメントすることによりシャドー記号表を変える。
【0081】
【表15】
【0082】ノード51に進み、この中が真条件であれ
ばノード52に進む。ノード52はデータ依存性条件付
分岐を含んでいるので、シャドー記号表0の別の2つの
例が作成され、合流点(ノード54)に達するまで各分
岐を評価する。ノード52は次の式の値に依存してい
る。
ばノード52に進む。ノード52はデータ依存性条件付
分岐を含んでいるので、シャドー記号表0の別の2つの
例が作成され、合流点(ノード54)に達するまで各分
岐を評価する。ノード52は次の式の値に依存してい
る。
【0083】
【数12】 (a[2]>(a[1]>a[0])?a[1]:a[0])
【0084】条件付分岐ノード51の偽分岐はシャドー
記号表を変えることなくすぐに合流点ノード56に進
み、一方真分岐は変数bに”a[2]”の値を割り当て
る。
記号表を変えることなくすぐに合流点ノード56に進
み、一方真分岐は変数bに”a[2]”の値を割り当て
る。
【0085】
【表16】
【0086】合流点(ノード54)で、シャドー記号表
(表OおよびP)の2例をマージすると、その結果得ら
れるシャドー記号表は次のようになる。
(表OおよびP)の2例をマージすると、その結果得ら
れるシャドー記号表は次のようになる。
【0087】
【表17】
【0088】ノード54を評価するとき、データ依存性
条件式(a[2]>10)は、別の分岐評価を必要とす
る。ここでは、元の条件付分岐ノード54の偽分岐をま
だ評価していることに留意されたい。ノード54は、シ
ャドー記号表のコンテキスト内で値が(a[2]>1
0)となっている条件に依存しているので条件付分岐で
ある。合流点ノード56まで真分岐および偽分岐の双方
が評価され、マージされる。真分岐は、シャドー記号表
を変えることなく直接合流点までジャンプする。偽分岐
は、ノード55内の変数iをまずインクリメントし、次
にノード51内のデータ依存性条件をジャンプする。変
数iの値が異なっているだけの結果をマージすると、こ
の結果得られるシャドー記号表は、次のようになる。
条件式(a[2]>10)は、別の分岐評価を必要とす
る。ここでは、元の条件付分岐ノード54の偽分岐をま
だ評価していることに留意されたい。ノード54は、シ
ャドー記号表のコンテキスト内で値が(a[2]>1
0)となっている条件に依存しているので条件付分岐で
ある。合流点ノード56まで真分岐および偽分岐の双方
が評価され、マージされる。真分岐は、シャドー記号表
を変えることなく直接合流点までジャンプする。偽分岐
は、ノード55内の変数iをまずインクリメントし、次
にノード51内のデータ依存性条件をジャンプする。変
数iの値が異なっているだけの結果をマージすると、こ
の結果得られるシャドー記号表は、次のようになる。
【0089】
【表18】
【0090】ノード54の偽分岐のインタープリテイシ
ョンにより合流点すなわちノード56に達するので、真
分岐に対するシャドー記号表、表Nは偽分岐に対するシ
ャドー記号表、表Rとマージされる。この結果得られる
シャドー記号表は次のとおりになる。
ョンにより合流点すなわちノード56に達するので、真
分岐に対するシャドー記号表、表Nは偽分岐に対するシ
ャドー記号表、表Rとマージされる。この結果得られる
シャドー記号表は次のとおりになる。
【0091】
【表19】
【0092】従って、ノード56に達すると、上記表S
に示されるような変数bの値がリターンされる。本発明
は、大域変数の条件式およびリターンステートメントで
明らかにリターンされる大域変数の条件式のリターン操
作に関係している。更に条件付分岐内にリターンステー
トメントか埋め込まれた合流点を計算するコンテキスト
で、リターンステートメントを制御フローグラフ内のユ
ニークな出口ノードへの潜在的分岐として扱う。このよ
うに実現することにより合流点を有するよう全ての条件
付分岐を保証する。
に示されるような変数bの値がリターンされる。本発明
は、大域変数の条件式およびリターンステートメントで
明らかにリターンされる大域変数の条件式のリターン操
作に関係している。更に条件付分岐内にリターンステー
トメントか埋め込まれた合流点を計算するコンテキスト
で、リターンステートメントを制御フローグラフ内のユ
ニークな出口ノードへの潜在的分岐として扱う。このよ
うに実現することにより合流点を有するよう全ての条件
付分岐を保証する。
【0093】以上で本発明を詳細に説明したが、特許請
求の範囲に示した本発明の精神および範囲から逸脱する
ことなく種々の変更、置換、改変が可能であると理解さ
れたい。
求の範囲に示した本発明の精神および範囲から逸脱する
ことなく種々の変更、置換、改変が可能であると理解さ
れたい。
【0094】以上の説明に関してさらに以下の項を開示
する。
する。
【0095】(1)複数の変数の値を操作する複数のス
テートメントを有し、更にデータ依存条件の値に依存す
る少なくとも一つの条件付分岐化ステートメントを有す
るアルゴリズムを記号評価する方法であって、開始ノー
ドおよび終了ノードおよび複数のノード(各ノードは前
記複数のステートメントのうちの少なくとも一つを示
す)を有し、前期データ依存性条件付分岐化ステートメ
ント用の条件付分岐ノードを含む制御フローグラフに前
記アルゴリズムを変換し、前記複数のノードの各々に対
する逆ドミネータの組を計算し、前記逆ドミネータに応
答して各々の条件付分岐ノードに対する合流点ノードを
引き出し、前記変数に対する記号値を有するシャドー記
号表を作成し、制御フローにしたがって各ノードを次々
に評価して前記シャドー記号表内の前記変数に記号値を
割り当て、前記条件付分岐ノードを評価し、前記条件付
分岐ノードに応答して前記データ依存性条件の各々の可
能な値にたいして重複したシャドー記号表を作成し、前
記データ依存性条件の各々の可能な値を仮定して、前記
重複したシャドー記号表内の各々の前記変数に記号値を
割り当て、前記合流点に達するまで前記条件付分岐化ス
テートメントの各分岐内に含まれるノードの評価を続
け、各前記合流点ノードで前記重複したシャドー記号表
をマージし、すべての条件付分岐の評価を完了して、前
記制御フローグラフの前記終了ノードに達し、前記アル
ゴリズムを示す条件式を与えるステップから成るアルゴ
リズムを記号評価する方法。
テートメントを有し、更にデータ依存条件の値に依存す
る少なくとも一つの条件付分岐化ステートメントを有す
るアルゴリズムを記号評価する方法であって、開始ノー
ドおよび終了ノードおよび複数のノード(各ノードは前
記複数のステートメントのうちの少なくとも一つを示
す)を有し、前期データ依存性条件付分岐化ステートメ
ント用の条件付分岐ノードを含む制御フローグラフに前
記アルゴリズムを変換し、前記複数のノードの各々に対
する逆ドミネータの組を計算し、前記逆ドミネータに応
答して各々の条件付分岐ノードに対する合流点ノードを
引き出し、前記変数に対する記号値を有するシャドー記
号表を作成し、制御フローにしたがって各ノードを次々
に評価して前記シャドー記号表内の前記変数に記号値を
割り当て、前記条件付分岐ノードを評価し、前記条件付
分岐ノードに応答して前記データ依存性条件の各々の可
能な値にたいして重複したシャドー記号表を作成し、前
記データ依存性条件の各々の可能な値を仮定して、前記
重複したシャドー記号表内の各々の前記変数に記号値を
割り当て、前記合流点に達するまで前記条件付分岐化ス
テートメントの各分岐内に含まれるノードの評価を続
け、各前記合流点ノードで前記重複したシャドー記号表
をマージし、すべての条件付分岐の評価を完了して、前
記制御フローグラフの前記終了ノードに達し、前記アル
ゴリズムを示す条件式を与えるステップから成るアルゴ
リズムを記号評価する方法。
【0096】(2)前記制御フローグラフ変換ステップ
は、前記終了ノードがサクセッサノードを有していない
場合、前記複数のノードの各々に対し、サクセッサノー
ドのリストを与えるステップを含む第1項記載の方法。
は、前記終了ノードがサクセッサノードを有していない
場合、前記複数のノードの各々に対し、サクセッサノー
ドのリストを与えるステップを含む第1項記載の方法。
【0097】(3)前記逆ドミネータを計算するステッ
プは、各ノード自体を含む前記制御フローグラフ内に前
記ノードのすべてを含むよう各ノードに対する逆ドミネ
ータ候補点の一組を初期化し、前記終了ノード自体のみ
を含むよう前記終了ノードに対する逆ドミネータ候補点
の組を改変し、その逆ドミネータ候補点の組とそのサク
セッサノードのすべての逆ドミネータ候補点の組との論
理積を演算し、ノード自体を追加し、その結果得られる
逆ドミネータ候補点の組を発生し、前記逆ドミネータ候
補点の組に変化が生じなくなるまで上記ステップを繰り
返すと共に各ノードに対する逆ドミネータの組を発生す
ることから成る第2項記載の方法。
プは、各ノード自体を含む前記制御フローグラフ内に前
記ノードのすべてを含むよう各ノードに対する逆ドミネ
ータ候補点の一組を初期化し、前記終了ノード自体のみ
を含むよう前記終了ノードに対する逆ドミネータ候補点
の組を改変し、その逆ドミネータ候補点の組とそのサク
セッサノードのすべての逆ドミネータ候補点の組との論
理積を演算し、ノード自体を追加し、その結果得られる
逆ドミネータ候補点の組を発生し、前記逆ドミネータ候
補点の組に変化が生じなくなるまで上記ステップを繰り
返すと共に各ノードに対する逆ドミネータの組を発生す
ることから成る第2項記載の方法。
【0098】(4)条件付分岐ノードに対する合流点ノ
ードを引き出すステップは、組内の他のすべての逆ドミ
ネータによりドミネートされている逆ドミネータを、ノ
ード自体を除く逆ドミネータの組から選択するステップ
を含む第3項記載の方法。
ードを引き出すステップは、組内の他のすべての逆ドミ
ネータによりドミネートされている逆ドミネータを、ノ
ード自体を除く逆ドミネータの組から選択するステップ
を含む第3項記載の方法。
【0099】(5)前記マージをするステップは、次の
3部構成条件式
3部構成条件式
【0100】
【数13】e1? e2:e3
【0101】(ここで、e1は条件付分岐ノードのデー
タ依存性条件で、e2は条件が真の場合の変数の値であ
り、e3は条件が偽の場合の変数の値である)を使用
し、e1をデータ依存性条件に置換し、e2を前記デー
タ依存性条件に対し偽条件となる前記重複シャドー記号
表内の変数に割り当てられた記号値に置換し、e3を前
記データ依存性条件に対し偽条件となる前記重複シャド
ー記号表内の変数に割り当てられた記号値に置換するこ
とから成る第1項記載の方法。
タ依存性条件で、e2は条件が真の場合の変数の値であ
り、e3は条件が偽の場合の変数の値である)を使用
し、e1をデータ依存性条件に置換し、e2を前記デー
タ依存性条件に対し偽条件となる前記重複シャドー記号
表内の変数に割り当てられた記号値に置換し、e3を前
記データ依存性条件に対し偽条件となる前記重複シャド
ー記号表内の変数に割り当てられた記号値に置換するこ
とから成る第1項記載の方法。
【0102】(6)前記マージするステップは、前記重
複したシャドー記号表内の前期変数の値を組み合わせ、
前記データ依存性条件の各々の可能な値に対し変数が前
記値となる時を特定することから成る第1項記載の方
法。
複したシャドー記号表内の前期変数の値を組み合わせ、
前記データ依存性条件の各々の可能な値に対し変数が前
記値となる時を特定することから成る第1項記載の方
法。
【0103】(7)データ依存性条件の値に応じて変数
に異なる値を割り当てる少なくとも2との分岐に至る少
なくとも一つの条件付分岐化ステートメントを有するア
ルゴリズムをトランスレートする装置であって、複数の
ノード(このノードの一つは前記条件付分岐ノードを示
す)を有する制御フローグラフに前記アルゴリズムを変
換するための手段と、前記複数のノードの各々に対し逆
ドミネータの組を計算するための手段と、前記条件付分
岐化ステートメントの前記分岐が収束する合流点ノード
を前記計算された逆ドミネータに応答して引き出すため
の手段と、前記条件式および前記変数を有するシャドー
記号表を作成するための手段と、前記制御フローグラフ
内の各ノードを次々に記号評価するための手段と、前記
条件付分岐化ノードを評価すると共に前記データ依存性
条件の各々の可能な値を取ることにより前記条件付分岐
ノードの評価に応答して前記条件付分岐ノードの各分岐
に対する前記シャドー記号表の一つの例を作成するため
の手段と、前記合流点ノードに達するまで前記条件付分
岐化ステートメントの各分岐の評価に応答して前記シャ
ドー記号表の前記それぞれの例内の前記変数に記号値を
割り当てるための手段と、前記合流点ノードに達した時
に前記シャドー記号表の前記例をマージするための手段
と、すべての条件付分岐の評価を続け、前記制御フロー
グラフの前記終了ノードに達するための手段と、前記ア
ルゴリズムを表す条件式を与えるための手段とから成る
アルゴリズムをトランスレートするための装置。
に異なる値を割り当てる少なくとも2との分岐に至る少
なくとも一つの条件付分岐化ステートメントを有するア
ルゴリズムをトランスレートする装置であって、複数の
ノード(このノードの一つは前記条件付分岐ノードを示
す)を有する制御フローグラフに前記アルゴリズムを変
換するための手段と、前記複数のノードの各々に対し逆
ドミネータの組を計算するための手段と、前記条件付分
岐化ステートメントの前記分岐が収束する合流点ノード
を前記計算された逆ドミネータに応答して引き出すため
の手段と、前記条件式および前記変数を有するシャドー
記号表を作成するための手段と、前記制御フローグラフ
内の各ノードを次々に記号評価するための手段と、前記
条件付分岐化ノードを評価すると共に前記データ依存性
条件の各々の可能な値を取ることにより前記条件付分岐
ノードの評価に応答して前記条件付分岐ノードの各分岐
に対する前記シャドー記号表の一つの例を作成するため
の手段と、前記合流点ノードに達するまで前記条件付分
岐化ステートメントの各分岐の評価に応答して前記シャ
ドー記号表の前記それぞれの例内の前記変数に記号値を
割り当てるための手段と、前記合流点ノードに達した時
に前記シャドー記号表の前記例をマージするための手段
と、すべての条件付分岐の評価を続け、前記制御フロー
グラフの前記終了ノードに達するための手段と、前記ア
ルゴリズムを表す条件式を与えるための手段とから成る
アルゴリズムをトランスレートするための装置。
【0104】(8)前記制御フローグラフを変換するた
めの前記手段は、前記複数のノードの各々に対するサク
セッサノードおよびサクセッサノードを有しない終了ノ
ードのリストを与えるための手段を含む第7項記載の装
置。
めの前記手段は、前記複数のノードの各々に対するサク
セッサノードおよびサクセッサノードを有しない終了ノ
ードのリストを与えるための手段を含む第7項記載の装
置。
【0105】(9)前記逆ドミネータ計算手段は、各ノ
ード自体を含む、前記制御フローグラフ内の前記ノード
のすべてを含むよう各ノードに対する逆ドミネータ候補
点の組を初期化する手段と、ノード自体を含むようサク
セッサノードを有しない前記終了ノードに対する逆ドミ
ネータ候補点の組を改変するための手段と、ノードごと
にその逆ドミネータの組とそのサクセッサノードのすべ
ての逆ドミネータの組との論理積を演算し、前記ドミネ
ータ候補点の組の変化が生じなくなるまで演算の結果得
られる逆ドミネータの組を発生し、ノードごとに逆ドミ
ネータの組を発生するための手段とから成る第8項記載
の装置。
ード自体を含む、前記制御フローグラフ内の前記ノード
のすべてを含むよう各ノードに対する逆ドミネータ候補
点の組を初期化する手段と、ノード自体を含むようサク
セッサノードを有しない前記終了ノードに対する逆ドミ
ネータ候補点の組を改変するための手段と、ノードごと
にその逆ドミネータの組とそのサクセッサノードのすべ
ての逆ドミネータの組との論理積を演算し、前記ドミネ
ータ候補点の組の変化が生じなくなるまで演算の結果得
られる逆ドミネータの組を発生し、ノードごとに逆ドミ
ネータの組を発生するための手段とから成る第8項記載
の装置。
【0106】(10)合流点ノードを引き出すための手
段は、他のすべての逆ドミネータ候補点を逆ドミネート
している逆ドミネータを各ノードに対する逆ドミネータ
候補点の前記組から選択するための手段を含む、第9項
記載の装置。
段は、他のすべての逆ドミネータ候補点を逆ドミネート
している逆ドミネータを各ノードに対する逆ドミネータ
候補点の前記組から選択するための手段を含む、第9項
記載の装置。
【0107】(11)前記マージする手段は、次の3部
構成条件式
構成条件式
【0108】
【数14】e1?e2:e3
【0109】(ここで、e1は条件付分岐ノードのデー
タ依存性条件で、e2は条件が真の場合の変数の値であ
り、e3は条件が偽の場合の変数の値である)を使用
し、e1をデータ依存性条件に置換し、e2を前記デー
タ依存性条件に対し偽条件となる前記重複シャドー記号
表内の変数に割り当てられた記号値に置換し、e3を前
記データ依存性条件に対し偽条件となる前記重複シャド
ー記号表内の変数に割り当てられた記号値に置換する第
7項記載の装置。
タ依存性条件で、e2は条件が真の場合の変数の値であ
り、e3は条件が偽の場合の変数の値である)を使用
し、e1をデータ依存性条件に置換し、e2を前記デー
タ依存性条件に対し偽条件となる前記重複シャドー記号
表内の変数に割り当てられた記号値に置換し、e3を前
記データ依存性条件に対し偽条件となる前記重複シャド
ー記号表内の変数に割り当てられた記号値に置換する第
7項記載の装置。
【0110】(12)前記マージする手段は、前記重複
したシャドー記号表内の前記変数の値を組み合わせ、前
記データ依存性条件の各々の可能な値に対し変数が前記
値となる時を特定するステップを含む第11項記載の装
置。
したシャドー記号表内の前記変数の値を組み合わせ、前
記データ依存性条件の各々の可能な値に対し変数が前記
値となる時を特定するステップを含む第11項記載の装
置。
【0111】(13)アルゴリズムを記号評価する方法
が提供される。このアルゴリズムは、少なくとも一つの
入力データの値に依存した少なくとも一つの条件付分岐
ステートメントを有する。この方法は、アルゴリズムを
複数のノード(各ノードは複数のステートメントのうち
の少なくとも一つを表す)を有する制御フローグラフに
変換する工程を含む。この制御フローグラフは、データ
依存性条件付分岐ステートメントの各々に対し一つの条
件付分岐ノードを更に含む。次に複数のノードの各々に
対する逆ドミネータを計算し、これら逆ドミネータから
各々の条件付分岐ノードに対する合流点ノードを引き出
す。本方法は、更にアルゴリズムで参照されるすべての
変数を収容するシャドー記号テーブルを作成し、かつ条
件付分岐ノードに応答してデータの各々の可能な値に対
し重複したシャドー記号テーブルを作成するようになっ
ている。本方法は更に制御フローにしたがって各ノード
を次々に記号的に評価し、シャドー記号テーブル内の変
数の各々に一つの記号値を割り当てる。各々の分岐に対
し、データを各々の可能な値とし、シャドー記号表内の
変数の各々に記号値を割り当てることにより条件付分岐
ノードを評価する。各々の分岐内のノードは、その合流
点ノードに達するまで評価される。次に重複されたシャ
ドー記号表がマージされる。すべての条件付分岐が評価
され、制御フローグラフの終了点に達するまで記号評価
を続け、アルゴリズムを表す条件式を得る。
が提供される。このアルゴリズムは、少なくとも一つの
入力データの値に依存した少なくとも一つの条件付分岐
ステートメントを有する。この方法は、アルゴリズムを
複数のノード(各ノードは複数のステートメントのうち
の少なくとも一つを表す)を有する制御フローグラフに
変換する工程を含む。この制御フローグラフは、データ
依存性条件付分岐ステートメントの各々に対し一つの条
件付分岐ノードを更に含む。次に複数のノードの各々に
対する逆ドミネータを計算し、これら逆ドミネータから
各々の条件付分岐ノードに対する合流点ノードを引き出
す。本方法は、更にアルゴリズムで参照されるすべての
変数を収容するシャドー記号テーブルを作成し、かつ条
件付分岐ノードに応答してデータの各々の可能な値に対
し重複したシャドー記号テーブルを作成するようになっ
ている。本方法は更に制御フローにしたがって各ノード
を次々に記号的に評価し、シャドー記号テーブル内の変
数の各々に一つの記号値を割り当てる。各々の分岐に対
し、データを各々の可能な値とし、シャドー記号表内の
変数の各々に記号値を割り当てることにより条件付分岐
ノードを評価する。各々の分岐内のノードは、その合流
点ノードに達するまで評価される。次に重複されたシャ
ドー記号表がマージされる。すべての条件付分岐が評価
され、制御フローグラフの終了点に達するまで記号評価
を続け、アルゴリズムを表す条件式を得る。
【図面の簡単な説明】
【図1】ソフトウェアでの実現をハードウェア回路の実
現にトランスレートするための方法を示す大幅に簡略化
した図。
現にトランスレートするための方法を示す大幅に簡略化
した図。
【図2】本発明の好ましい実施例の簡略化したフローチ
ャート。
ャート。
【図3】本発明を良好に理解するための図例となるアル
ゴリズムの代表的制御フローグラフ。
ゴリズムの代表的制御フローグラフ。
【図4】ループ構造を有するアルゴリズムの代表的制御
フローグラフ。
フローグラフ。
【図5】反復回数が入力データに依存するループ構造を
有するアルゴリズム代表的制御フローグラフ。
有するアルゴリズム代表的制御フローグラフ。
【符号の説明】 1 ソフトウエア実現ロード 3 データフローグラフ 36 条件付ノード 43,46,47 ノード 51,52,54 条件付分岐ノード 56 分岐点ノード c,b,i,y,x 変数
Claims (2)
- 【請求項1】複数の変数の値を操作する複数のステート
メントを有し、更にデータ依存条件の値に依存する少な
くとも一つの条件付分岐化ステートメントを有するアル
ゴリズムを記号評価する方法であって、 開始ノードおよび終了ノードを含み複数のノード(各ノ
ードは前記複数のステートメントのうちの少なくとも一
つを示す)を有し、前記データ依存性条件付分岐化ステ
ートメント用の条件付分岐ノードを含む制御フローグラ
フに前記アルゴリズムを変換し、 前記複数のノードの各々に対する逆ドミネータの組を計
算し、 前記逆ドミネータに応答して各々の条件付分岐ノードに
対する合流点ノードを引き出し、 前記変数に対する記号値を有するシャドー記号表を作成
し、 制御フローに従って各ノードを次々に評価して前記シャ
ドー記号表内の前記変数に記号値を割り当て、 前記条件付分岐ノードを評価し、前記条件付分岐ノード
に応答して前記データ依存性条件の各々の可能な値に対
して重複したシャドー記号表を作成し、前記データ依存
性条件の各々の可能な値を仮定して、前記重複したシャ
ドー記号表内の各々の前記変数に記号値を割り当て、 前記合流点に達するまで前記条件付分岐化ステートメン
トの各分岐内に含まれるノードの評価を続け、 各前記合流点ノードで前記重複したシャドー記号表をマ
ージし、 すべての条件付分岐の評価を完了して、前記制御フロー
グラフの前記終了ノードに達し、 前記アルゴリズムを示す条件式を与えるステップから成
るアルゴリズムを記号評価する方法。 - 【請求項2】データ依存性条件の値に応じて変数に異な
る値を割り当てる少なくとも2との分岐に至る少なくと
も一つの条件付分岐化ステートメントを有するアルゴリ
ズムをトランスレートする装置であって、 複数のノード(このノードの一つは前記条件付分岐ノー
ドを示す)を有する制御フローグラフに前記アルゴリズ
ムを変換するための手段と、 前記複数のノードの各々に対し逆ドミネータの組を計算
するための手段と、 前記条件付分岐化ステートメントの前記分岐が収束する
合流点ノードを前記計算された逆ドミネータに応答して
引き出すための手段と、 前記条件式および前記変数を有するシャドー記号表を作
成するための手段と、 前記制御フローグラフ内の各ノードを次々に記号評価す
るための手段と、 前記条件付分岐化ノードを評価すると共に前記データ依
存性条件の各々の可能な値を取ることにより前記条件付
分岐ノードの評価に応答して前記条件付分岐ノードの各
分岐に対する前記シャドー記号表の一つの例を作成する
ための手段と、 前記合流点ノードに達するまで前記条件付分岐化ステー
トメントの各分岐の評価に応答して前記シャドー記号表
の前記それぞれの例内の前記変数に記号値を割り当てる
ための手段と、 前記合流点ノードに達した時に前記シャドー記号表の前
記例をマージするための手段と、 すべての条件付分岐の評価を続け、前記制御フローグラ
フの前記終了ノードに達するための手段と、 前記アルゴリズムを表す条件式を与えるための手段とか
ら成るアルゴリズムをトランスレートするための装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US815442 | 1991-12-31 | ||
| US07/815,442 US5666296A (en) | 1991-12-31 | 1991-12-31 | Method and means for translating a data-dependent program to a data flow graph with conditional expression |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0667868A true JPH0667868A (ja) | 1994-03-11 |
Family
ID=25217797
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5029567A Pending JPH0667868A (ja) | 1991-12-31 | 1993-01-04 | アルゴリズムを記号評価する方法およびアルゴリズムをトランスレートする装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US5666296A (ja) |
| JP (1) | JPH0667868A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2018018548A (ja) * | 2017-11-01 | 2018-02-01 | 株式会社東芝 | 仕様抽出装置、仕様抽出方法およびプログラム |
Families Citing this family (44)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5978588A (en) * | 1997-06-30 | 1999-11-02 | Sun Microsystems, Inc. | Method and apparatus for profile-based code placement using a minimum cut set of the control flow graph |
| US6233733B1 (en) * | 1997-09-30 | 2001-05-15 | Sun Microsystems, Inc. | Method for generating a Java bytecode data flow graph |
| JP3765923B2 (ja) * | 1998-02-26 | 2006-04-12 | シャープ株式会社 | ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体 |
| US6199201B1 (en) * | 1998-08-03 | 2001-03-06 | Xerox Corporation | Software constructs that facilitate partial evaluation of source code |
| US7225436B1 (en) | 1998-12-08 | 2007-05-29 | Nazomi Communications Inc. | Java hardware accelerator using microcode engine |
| US6826749B2 (en) | 1998-12-08 | 2004-11-30 | Nazomi Communications, Inc. | Java hardware accelerator using thread manager |
| US20050149694A1 (en) * | 1998-12-08 | 2005-07-07 | Mukesh Patel | Java hardware accelerator using microcode engine |
| US6332215B1 (en) | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
| US7092523B2 (en) | 1999-01-11 | 2006-08-15 | Certicom Corp. | Method and apparatus for minimizing differential power attacks on processors |
| US7599491B2 (en) * | 1999-01-11 | 2009-10-06 | Certicom Corp. | Method for strengthening the implementation of ECDSA against power analysis |
| US6378066B1 (en) * | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
| US6449711B1 (en) | 1999-02-04 | 2002-09-10 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs |
| US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
| US6389587B1 (en) * | 1999-02-04 | 2002-05-14 | Sun Microsystems, Inc. | User interface for developing and executing data flow programs and methods, apparatus, and articles of manufacture for optimizing the execution of data flow programs |
| US6463521B1 (en) * | 1999-06-23 | 2002-10-08 | Sun Microsystems, Inc. | Opcode numbering for meta-data encoding |
| JP3722351B2 (ja) * | 2000-02-18 | 2005-11-30 | シャープ株式会社 | 高位合成方法およびその実施に使用される記録媒体 |
| US7414626B1 (en) * | 2000-05-30 | 2008-08-19 | Autodesk, Inc. | System for passing algorithms with polymorphic parameter sets in a dependency graph of a graphic creation process |
| EP1197847A3 (en) * | 2000-10-10 | 2003-05-21 | Nazomi Communications Inc. | Java hardware accelerator using microcode engine |
| US7406681B1 (en) | 2000-10-12 | 2008-07-29 | Sun Microsystems, Inc. | Automatic conversion of source code from 32-bit to 64-bit |
| US7962716B2 (en) * | 2001-03-22 | 2011-06-14 | Qst Holdings, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
| US7406682B2 (en) * | 2001-03-26 | 2008-07-29 | Emc Corporation | Translator-compiler for converting legacy management software |
| US8769508B2 (en) | 2001-08-24 | 2014-07-01 | Nazomi Communications Inc. | Virtual machine hardware for RISC and CISC processors |
| US6834383B2 (en) * | 2001-11-26 | 2004-12-21 | Microsoft Corporation | Method for binary-level branch reversal on computer architectures supporting predicated execution |
| US6996802B2 (en) * | 2002-03-18 | 2006-02-07 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using initialization order and calling order constraints |
| US7010783B2 (en) * | 2002-03-18 | 2006-03-07 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation |
| US7181737B2 (en) * | 2002-03-18 | 2007-02-20 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using static procedure return addresses |
| US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
| US7107445B2 (en) * | 2002-11-20 | 2006-09-12 | International Business Machines Corporation | Method and apparatus for secure processing of sensitive data |
| SE0300742D0 (sv) * | 2003-03-17 | 2003-03-17 | Flow Computing Ab | Data Flow Machine |
| US20040239674A1 (en) * | 2003-06-02 | 2004-12-02 | Microsoft Corporation | Modeling graphs as XML information sets and describing graphs with XML schema |
| US20050081104A1 (en) * | 2003-09-25 | 2005-04-14 | Borislav Nikolik | Test diversity software testing method and apparatus |
| US7343482B2 (en) * | 2004-10-20 | 2008-03-11 | Arm Limited | Program subgraph identification |
| JP4165712B2 (ja) * | 2004-11-10 | 2008-10-15 | シャープ株式会社 | データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体 |
| US8467535B2 (en) * | 2005-01-18 | 2013-06-18 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
| US8204232B2 (en) | 2005-01-18 | 2012-06-19 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
| US8091079B2 (en) * | 2007-08-29 | 2012-01-03 | International Business Machines Corporation | Implementing shadow versioning to improve data dependence analysis for instruction scheduling |
| US8745376B2 (en) | 2011-10-14 | 2014-06-03 | Certicom Corp. | Verifying implicit certificates and digital signatures |
| US8806464B2 (en) | 2012-04-26 | 2014-08-12 | Hewlett-Packard Development Company, L.P. | Process flow optimized directed graph traversal |
| US9195458B2 (en) * | 2013-07-31 | 2015-11-24 | International Business Machines Corporation | System and/or method for computing interprocedural dominators |
| US9043739B1 (en) * | 2014-05-15 | 2015-05-26 | Altera Corporation | Placement based arithmetic operator selection |
| CN109508412B (zh) * | 2018-11-20 | 2019-12-20 | 中科驭数(北京)科技有限公司 | 一种时间序列处理的计算流图构建方法和装置 |
| US11449347B1 (en) * | 2019-05-23 | 2022-09-20 | Xilinx, Inc. | Time-multiplexed implementation of hardware accelerated functions in a programmable integrated circuit |
| US10956135B1 (en) | 2019-10-11 | 2021-03-23 | International Business Machines Corporation | Enforcing policy in dataflows |
| US11599079B2 (en) * | 2021-03-25 | 2023-03-07 | International Business Machines Corporation | Static safety analysis for control-flow linearization |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4860204A (en) * | 1987-02-05 | 1989-08-22 | Softron, Inc. | Computer based workstation for development of graphic representation of computer programs |
| US5005119A (en) * | 1987-03-02 | 1991-04-02 | General Electric Company | User interactive control of computer programs and corresponding versions of input/output data flow |
| US5276881A (en) * | 1990-06-25 | 1994-01-04 | Hewlett-Packard Company | ANDF producer using the HPcode-Plus compiler intermediate language |
-
1991
- 1991-12-31 US US07/815,442 patent/US5666296A/en not_active Expired - Lifetime
-
1993
- 1993-01-04 JP JP5029567A patent/JPH0667868A/ja active Pending
-
1995
- 1995-06-07 US US08/486,471 patent/US5650948A/en not_active Expired - Lifetime
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2018018548A (ja) * | 2017-11-01 | 2018-02-01 | 株式会社東芝 | 仕様抽出装置、仕様抽出方法およびプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| US5650948A (en) | 1997-07-22 |
| US5666296A (en) | 1997-09-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0667868A (ja) | アルゴリズムを記号評価する方法およびアルゴリズムをトランスレートする装置 | |
| CN110187885B (zh) | 一种量子程序编译的中间代码生成方法及装置 | |
| US4773007A (en) | Complier code optimization method for a source program having a first and second array definition and use statements in a loop | |
| US12229529B2 (en) | Program generation apparatus, program generation method and program | |
| CN119512557B (zh) | 基于多层中间表示的领域特定语言编译器优化方法及系统 | |
| US7694288B2 (en) | Static single assignment form pattern matcher | |
| US20190171426A1 (en) | Program compiler and linker, and method | |
| Bahmann et al. | Perfect reconstructability of control flow from demand dependence graphs | |
| Daly et al. | Synthesizing instruction selection rewrite rules from RTL using SMT | |
| CN112270176A (zh) | 深度学习框架中模式转换的方法、装置和计算机存储介质 | |
| Tardieu et al. | Curing schizophrenia by program rewriting in Esterel | |
| US10013244B2 (en) | Apparatus and method to compile a variadic template function | |
| Sadasue et al. | LLVM-C2RTL: C/C++ based system level RTL design framework using LLVM compiler infrastructure | |
| JP6481515B2 (ja) | 情報処理装置、コンパイル方法、及びコンパイラプログラム | |
| WO2021161428A1 (ja) | プログラム生成装置、プログラム生成方法及びプログラム | |
| Moyen et al. | Loop quasi-invariant chunk motion by peeling with statement composition | |
| CN117827209A (zh) | 函数调用显示方法、装置、存储介质及计算机设备 | |
| US11656857B2 (en) | Method and apparatus for optimizing code for field programmable gate arrays | |
| JP7513204B2 (ja) | プログラム修正装置、プログラム修正方法及びプログラム | |
| Konat et al. | Bootstrapping domain-specific meta-languages in language workbenches | |
| Grov et al. | Hume box calculus: robust system development through software transformation | |
| Bornebusch et al. | Performance Aspects of Correctness-oriented Synthesis Flows. | |
| JP3551352B2 (ja) | ループ分割方法 | |
| Patil et al. | Comparative Analysis of Code Optimization Techniques with Eminent Applications (Tools) | |
| Rao et al. | LibraryX-ASIC: A First Look |