JPH10161884A - パイプラインコンピュータのための改善されたコードオプティマイザ - Google Patents
パイプラインコンピュータのための改善されたコードオプティマイザInfo
- Publication number
- JPH10161884A JPH10161884A JP9318777A JP31877797A JPH10161884A JP H10161884 A JPH10161884 A JP H10161884A JP 9318777 A JP9318777 A JP 9318777A JP 31877797 A JP31877797 A JP 31877797A JP H10161884 A JPH10161884 A JP H10161884A
- Authority
- JP
- Japan
- Prior art keywords
- computer
- loop
- unspirable
- resource
- statement
- 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/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4452—Software pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】
【課題】 シングルベーシックブロックループの改良さ
れた最適化を提供する装置、方法、システム、およびコ
ンピュータプログラム製品を提供する。 【解決手段】 これらの最適化は、パイプライン化され
たコンピュータのためのブロッキング命令の改良スケジ
ューリング、およびメモリへのスピルが不可能な資源
(レジスタなど)の改良スケジューリングおよびアロケ
ーションを含む。ブロッキング命令のスケジューリング
はスケジューリング予約テーブルのスペースを予めアロ
ケートすることによって改良される。アンスピラブル資
源の改良スケジューリングおよびアロケーションは資源
制約をデータ依存性制約に変換することにより得られ
る。
れた最適化を提供する装置、方法、システム、およびコ
ンピュータプログラム製品を提供する。 【解決手段】 これらの最適化は、パイプライン化され
たコンピュータのためのブロッキング命令の改良スケジ
ューリング、およびメモリへのスピルが不可能な資源
(レジスタなど)の改良スケジューリングおよびアロケ
ーションを含む。ブロッキング命令のスケジューリング
はスケジューリング予約テーブルのスペースを予めアロ
ケートすることによって改良される。アンスピラブル資
源の改良スケジューリングおよびアロケーションは資源
制約をデータ依存性制約に変換することにより得られ
る。
Description
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムのコンパイラを最適化する分野に関する。特に、本
発明は、プログラムループのコンパイルの結果生じるコ
ンピュータ処理コードの順序を最適化するための、新規
かつ有効な、最適化の方法、装置、システム、およびコ
ンピュータプログラム製品に関する。
テムのコンパイラを最適化する分野に関する。特に、本
発明は、プログラムループのコンパイルの結果生じるコ
ンピュータ処理コードの順序を最適化するための、新規
かつ有効な、最適化の方法、装置、システム、およびコ
ンピュータプログラム製品に関する。
【0002】
【従来の技術】初期のコンピュータは、配線を替えるこ
とによってプログラムされていた。最近のコンピュータ
は、コンピュータのメモリ内のビット配列をアレンジす
ることによってプログラムされる。これらのビットは、
初期のコンピュータにおける配線と同様の(しかし、よ
り有用な)機能を発揮する。従って、最近のコンピュー
タは、コンピュータのメモリに常駐する2進命令に従っ
て処理する。これらの2進命令は、処理コード(opコ
ード)と称される。コンピュータは、プログラムカウン
タによってポイントされたメモリロケーションからop
コードを取り出す。コンピュータの中央処理装置(CP
U)は、opコードを評価し、そのopコードに関連し
た特定の処理を行う。2進値を直接メモリにロードし
て、コンピュータをプログラムすることは、時間を要
し、かつ気が遠くなる作業である、プログラミング言語
は、プログラマーが、コンピュータが行う処理の記号型
言語表現(ソースコード)を用いることを可能にして、こ
の問題を簡単にする。この記号型表現は、コンパイラま
たはアセンブラによって2進opコードに変換される。
ソースコードを加工することによって、コンパイラおよ
びアセンブラは、ソースコードに対応するopコードを
含むオブジェクトファイル(またはオブジェクトモジュ
ール)を作成する。このオブジェクトモジュールは、他
のオブジェクトモジュールとリンク(link)されると、コ
ンピュータのメモリにロードされ、コンピュータによっ
て実行され得る実行可能な命令を生じる。
とによってプログラムされていた。最近のコンピュータ
は、コンピュータのメモリ内のビット配列をアレンジす
ることによってプログラムされる。これらのビットは、
初期のコンピュータにおける配線と同様の(しかし、よ
り有用な)機能を発揮する。従って、最近のコンピュー
タは、コンピュータのメモリに常駐する2進命令に従っ
て処理する。これらの2進命令は、処理コード(opコ
ード)と称される。コンピュータは、プログラムカウン
タによってポイントされたメモリロケーションからop
コードを取り出す。コンピュータの中央処理装置(CP
U)は、opコードを評価し、そのopコードに関連し
た特定の処理を行う。2進値を直接メモリにロードし
て、コンピュータをプログラムすることは、時間を要
し、かつ気が遠くなる作業である、プログラミング言語
は、プログラマーが、コンピュータが行う処理の記号型
言語表現(ソースコード)を用いることを可能にして、こ
の問題を簡単にする。この記号型表現は、コンパイラま
たはアセンブラによって2進opコードに変換される。
ソースコードを加工することによって、コンパイラおよ
びアセンブラは、ソースコードに対応するopコードを
含むオブジェクトファイル(またはオブジェクトモジュ
ール)を作成する。このオブジェクトモジュールは、他
のオブジェクトモジュールとリンク(link)されると、コ
ンピュータのメモリにロードされ、コンピュータによっ
て実行され得る実行可能な命令を生じる。
【0003】ターゲットプログラムのソースは、ターゲ
ットコンピュータアーキテクチャによる実行に適した2
進表現(opコードおよびデータの両方を含む)に変換さ
れた、順序立ったストリング(ステートメント)のグルー
プからなる。ソースプログラムは、ソースのコンパイル
およびリンクによって生じる2進命令を実行する際にコ
ンピュータが行う処理の記号型記述を提供する。ソース
からバイナリへの変換は、ソースを書き込む際に使用さ
れるプログラミングの文法および構文規則に従って行わ
れる。このソースからバイナリへの変換は、コンパイラ
およびアセンブラの両方によって行われる。
ットコンピュータアーキテクチャによる実行に適した2
進表現(opコードおよびデータの両方を含む)に変換さ
れた、順序立ったストリング(ステートメント)のグルー
プからなる。ソースプログラムは、ソースのコンパイル
およびリンクによって生じる2進命令を実行する際にコ
ンピュータが行う処理の記号型記述を提供する。ソース
からバイナリへの変換は、ソースを書き込む際に使用さ
れるプログラミングの文法および構文規則に従って行わ
れる。このソースからバイナリへの変換は、コンパイラ
およびアセンブラの両方によって行われる。
【0004】アセンブラとコンパイラとの有意な差異の
1つは、アセンブラが、1対1様式(one-to-one fashio
n)によって(ただし、何らかの「マクロ」性能が提供され
ることが多い)、ソースコードステートメントを2進o
pコードに翻訳することである。一方、コンパイラは、
ソースコードステートメントを、コンピュータで実行さ
れる際に、ソースによって記述された処理を行う2進o
pコード(オブジェクトコード)の配列に変換する。いく
つかのコンパイラはまた、オブジェクトコードを表すア
センブラソースをアウトプットするためのオプションを
提供する。
1つは、アセンブラが、1対1様式(one-to-one fashio
n)によって(ただし、何らかの「マクロ」性能が提供され
ることが多い)、ソースコードステートメントを2進o
pコードに翻訳することである。一方、コンパイラは、
ソースコードステートメントを、コンピュータで実行さ
れる際に、ソースによって記述された処理を行う2進o
pコード(オブジェクトコード)の配列に変換する。いく
つかのコンパイラはまた、オブジェクトコードを表すア
センブラソースをアウトプットするためのオプションを
提供する。
【0005】コンパイラによって加工される記号型ステ
ートメントは、アセンブラによって加工されるものより
一般的である。また、コンパイルされたステートメント
は、それぞれ、コンピュータによって実行されると、記
号型ステートメントによって表された処理を履行するo
pコードの集まりを作成することができる。2進opコ
ード配列を作成する場合にソースコードの本質的な構造
機構を維持するアセンブラとは異なり、コンパイラは、
コンパイルされたバイナリを作成する場合にソースによ
って表される構造機構を有意に変更しえる。しかし、コ
ンパイラがこの機構をいくら変更しようとも、どのよう
にして結果を得るかに関係なく、コンパイルされたバイ
ナリが、コンピュータによって実行される際に、プログ
ラマーがソース言語を用いて表現したものと同じ結果を
提供しなければならない点で、コンパイラは制約を受け
る。
ートメントは、アセンブラによって加工されるものより
一般的である。また、コンパイルされたステートメント
は、それぞれ、コンピュータによって実行されると、記
号型ステートメントによって表された処理を履行するo
pコードの集まりを作成することができる。2進opコ
ード配列を作成する場合にソースコードの本質的な構造
機構を維持するアセンブラとは異なり、コンパイラは、
コンパイルされたバイナリを作成する場合にソースによ
って表される構造機構を有意に変更しえる。しかし、コ
ンパイラがこの機構をいくら変更しようとも、どのよう
にして結果を得るかに関係なく、コンパイルされたバイ
ナリが、コンピュータによって実行される際に、プログ
ラマーがソース言語を用いて表現したものと同じ結果を
提供しなければならない点で、コンパイラは制約を受け
る。
【0006】多くの最近のコンパイラは、コンパイルプ
ロセスから生じる2進opコードを最適化することがで
きる。プログラミング言語の設計により、コンパイラ
は、コンパイルされるプログラムの構造情報を確定(det
ermine)することができる。この情報はコンパイラに使
用されて、同じ処理(例えば、ソースコードがどのバー
ジョンのターゲットプロセッサにコンパイルされるかに
依存するデバッギング性能、または最適化命令を可能に
すること)を行う、異なるバージョンのopコードの配
列を生成することができる。一部の最適化は命令を維持
するために必要となるメモリ量を最小にし、他の最適化
は命令を実行する場合に必要となる時間を短縮する。
ロセスから生じる2進opコードを最適化することがで
きる。プログラミング言語の設計により、コンパイラ
は、コンパイルされるプログラムの構造情報を確定(det
ermine)することができる。この情報はコンパイラに使
用されて、同じ処理(例えば、ソースコードがどのバー
ジョンのターゲットプロセッサにコンパイルされるかに
依存するデバッギング性能、または最適化命令を可能に
すること)を行う、異なるバージョンのopコードの配
列を生成することができる。一部の最適化は命令を維持
するために必要となるメモリ量を最小にし、他の最適化
は命令を実行する場合に必要となる時間を短縮する。
【0007】最適化のいくつかの長所は、コンパイラを
最適化することによって、プログラマーを、時間のかか
るソースコードを手動で調整(tuning)する作業から解放
することである。これにより、プログラマーの生産力が
向上する。また、コンパイラを最適化することは、プロ
グラマーが維持可能なコードを書き込む助けになる。な
ぜなら、手動での調整は、ソースコードを、他のプログ
ラマーにとってより理解しにくいものとするからであ
る。最後に、最適化コンパイラは、コードの可搬性(por
tability)を改善する。なぜなら、1つのコンピュータ
アーキテクチャに調整された(tune)ソースコードは、他
のコンピュータアーキテクチャにおいては無効であり得
るからである。コンパイラの最適化についての概論、お
よびそれに関連した使用される技術は、Alfred V. Ah
o、Ravi Sethi、およびJeffrey D. UllmanによるCompil
ers: Principles, Techniques and Tools、(Addison-We
sley Publishing Co., 1988)、ISBN 0-201-10088-6の特
に、513〜723頁の第9章および第10章に記載されてい
る。
最適化することによって、プログラマーを、時間のかか
るソースコードを手動で調整(tuning)する作業から解放
することである。これにより、プログラマーの生産力が
向上する。また、コンパイラを最適化することは、プロ
グラマーが維持可能なコードを書き込む助けになる。な
ぜなら、手動での調整は、ソースコードを、他のプログ
ラマーにとってより理解しにくいものとするからであ
る。最後に、最適化コンパイラは、コードの可搬性(por
tability)を改善する。なぜなら、1つのコンピュータ
アーキテクチャに調整された(tune)ソースコードは、他
のコンピュータアーキテクチャにおいては無効であり得
るからである。コンパイラの最適化についての概論、お
よびそれに関連した使用される技術は、Alfred V. Ah
o、Ravi Sethi、およびJeffrey D. UllmanによるCompil
ers: Principles, Techniques and Tools、(Addison-We
sley Publishing Co., 1988)、ISBN 0-201-10088-6の特
に、513〜723頁の第9章および第10章に記載されてい
る。
【0008】図1は、概して参照符号100で示され
る、最近のコンパイラの概略的な構造を示す。そのよう
なコンパイラ100は、コンパイラフロントエンドセグ
メント103によって、ターゲットプログラムのソース
情報101を消費する(consume)。このコンパイラフロ
ントエンドセグメント103は、ソース情報101に適
用されるプログラミング言語の規則に従ってソース情報
101の構文および意味を加工する。コンパイラフロン
トエンドセグメント103は、ソース情報101の「中
間」コード表現104の少なくとも1つのバージョンを
生成する。ループコンストラクトとして、中間コード表
現は、概して、データ依存グラフ(DDG)を表すまたは
データ依存グラフ(DDG)を生成するために使用できる
データ構造を含む。この中間表現104は、次に、中間
表現オプティマイザセグメント105によって最適化さ
れる。中間表現オプティマイザセグメント105は、ソ
ース情報101の中間コード表現104を処理および調
節し、当該分野において公知の種々の手法によってプロ
グラムの実行を最適化する。中間表現オプティマイザセ
グメント105は、最適化された中間表現106を生成
する。コードジェネレータセグメント107は、最適化
された中間表現106を消費し、低レベルの最適化を行
い、物理レジスタをアロケートし、最適化された中間表
現106からアセンブラソースコードおよび/またはオ
ブジェクトコードモジュール109を生成する。オブジ
ェクトコードは、オブジェクトモジュール内に2進コン
ピュータ命令(opコード)を含む。アセンブラソースコ
ードは、アセンブラソース言語中の一連の記号型ステー
トメントである。アセンブラソースコードおよびオブジ
ェクトコードの両方が、特定コンピュータアーキテクチ
ャ(例えば、SPARC、X86、IBMなど)の対象と
なる。
る、最近のコンパイラの概略的な構造を示す。そのよう
なコンパイラ100は、コンパイラフロントエンドセグ
メント103によって、ターゲットプログラムのソース
情報101を消費する(consume)。このコンパイラフロ
ントエンドセグメント103は、ソース情報101に適
用されるプログラミング言語の規則に従ってソース情報
101の構文および意味を加工する。コンパイラフロン
トエンドセグメント103は、ソース情報101の「中
間」コード表現104の少なくとも1つのバージョンを
生成する。ループコンストラクトとして、中間コード表
現は、概して、データ依存グラフ(DDG)を表すまたは
データ依存グラフ(DDG)を生成するために使用できる
データ構造を含む。この中間表現104は、次に、中間
表現オプティマイザセグメント105によって最適化さ
れる。中間表現オプティマイザセグメント105は、ソ
ース情報101の中間コード表現104を処理および調
節し、当該分野において公知の種々の手法によってプロ
グラムの実行を最適化する。中間表現オプティマイザセ
グメント105は、最適化された中間表現106を生成
する。コードジェネレータセグメント107は、最適化
された中間表現106を消費し、低レベルの最適化を行
い、物理レジスタをアロケートし、最適化された中間表
現106からアセンブラソースコードおよび/またはオ
ブジェクトコードモジュール109を生成する。オブジ
ェクトコードは、オブジェクトモジュール内に2進コン
ピュータ命令(opコード)を含む。アセンブラソースコ
ードは、アセンブラソース言語中の一連の記号型ステー
トメントである。アセンブラソースコードおよびオブジ
ェクトコードの両方が、特定コンピュータアーキテクチ
ャ(例えば、SPARC、X86、IBMなど)の対象と
なる。
【0009】DDGは、どのステートメントが他のステ
ートメントに依存するかをオプティマイザが確定するた
めに必要となる情報を具現化する。グラフ中のノード
は、ループ中のステートメントを表し、アークはノード
間のデータ依存性を表す。特に、変数の範囲は、変数の
「def」から変数の「use」にわたる。defは、変数
を改変する命令(命令が変数に書き込むと変数を「規定す
る」命令)に対応する。useは、変数のコンテンツを使
用する命令に対応する。
ートメントに依存するかをオプティマイザが確定するた
めに必要となる情報を具現化する。グラフ中のノード
は、ループ中のステートメントを表し、アークはノード
間のデータ依存性を表す。特に、変数の範囲は、変数の
「def」から変数の「use」にわたる。defは、変数
を改変する命令(命令が変数に書き込むと変数を「規定す
る」命令)に対応する。useは、変数のコンテンツを使
用する命令に対応する。
【0010】例えば、命令「x=y+1」、ただし「de
f」のx、および「use」のy。DDG中のアークは、
変数のdefから変数のuseにわたる。DDGは、Ha
ns ZimaによるSupercompilers for Parallel and Vecto
r Computers (ACM press、1991)、ISBN 0-201-17560-6
の第4章に記載されている。
f」のx、および「use」のy。DDG中のアークは、
変数のdefから変数のuseにわたる。DDGは、Ha
ns ZimaによるSupercompilers for Parallel and Vecto
r Computers (ACM press、1991)、ISBN 0-201-17560-6
の第4章に記載されている。
【0011】上述のように、コードジェネレータセグメ
ント107は、ローレベル最適化を行い、オブジェクト
コード(オブジェクトモジュールの形態)とアセンブラ
ソースコードとのどちらか一方(または両方)を生成す
る。プログラムの中間表現は、通常、仮想レジスタを参
照する。すなわち、中間表現オプティマイザは、ターゲ
ットコンピュータが無限のレジスタを包含すると仮定す
る。コードジェネレータセグメント107の処理中に
は、これらの仮想レジスタは、ターゲットコンピュータ
の物理レジスタに割り当てられる。このリソース管理
は、レジスタアロケーション(拡張)プロセスによっ
て、コードジェネレータセグメント107において行わ
れる。レジスタアロケーションプロセスの1つの局面
は、物理レジスタのコンテンツが、プログラムの実行の
間の様々なポイントでメモリにしばしば「スピルされ
る」ことにより、限定数の物理レジスタが、それらの様
々なポイントにおいてプログラムにより近い関連性のあ
る値を保持するために用いられ得ることである。メモリ
にスピルされたそれらの値は、プログラムが実行の異な
るポイントに進むときに、レジスタに復元されることが
多い。
ント107は、ローレベル最適化を行い、オブジェクト
コード(オブジェクトモジュールの形態)とアセンブラ
ソースコードとのどちらか一方(または両方)を生成す
る。プログラムの中間表現は、通常、仮想レジスタを参
照する。すなわち、中間表現オプティマイザは、ターゲ
ットコンピュータが無限のレジスタを包含すると仮定す
る。コードジェネレータセグメント107の処理中に
は、これらの仮想レジスタは、ターゲットコンピュータ
の物理レジスタに割り当てられる。このリソース管理
は、レジスタアロケーション(拡張)プロセスによっ
て、コードジェネレータセグメント107において行わ
れる。レジスタアロケーションプロセスの1つの局面
は、物理レジスタのコンテンツが、プログラムの実行の
間の様々なポイントでメモリにしばしば「スピルされ
る」ことにより、限定数の物理レジスタが、それらの様
々なポイントにおいてプログラムにより近い関連性のあ
る値を保持するために用いられ得ることである。メモリ
にスピルされたそれらの値は、プログラムが実行の異な
るポイントに進むときに、レジスタに復元されることが
多い。
【0012】有意に最適化され得るプログラミングコン
ストラクトの1つは、シングルベーシックブロックルー
プ(SBBループ)である。SBBループは、決定可能
な数の反復(例えば、コンパイル時に計算可能または公
知の記号トリップカウント)を有する。SBBループ
は、いかなる制御流れ構造、機能、プロシージャ、また
はループ内でも実行の流れを変える他の構造は含まな
い。このようなループは、ただ1つの入口と1つの出口
を有し、ループ内にブランチは有さない。
ストラクトの1つは、シングルベーシックブロックルー
プ(SBBループ)である。SBBループは、決定可能
な数の反復(例えば、コンパイル時に計算可能または公
知の記号トリップカウント)を有する。SBBループ
は、いかなる制御流れ構造、機能、プロシージャ、また
はループ内でも実行の流れを変える他の構造は含まな
い。このようなループは、ただ1つの入口と1つの出口
を有し、ループ内にブランチは有さない。
【0013】ソフトウェアパイプライン化は、SBBル
ープにおける命令の実行をスケジュールする技術であ
る。ソフトウェアパイプライン化技術は、ループボディ
の異なるオーバーラップする反復をスケジュールし、そ
れによって、コンピュータの基礎をなす並列計算ユニッ
トを利用する。実行スケジュールは、プロローグ、核、
およびエピローグで構成される。プロローグは、第1の
p反復をイニシエートし、その結果、各反復が開始され
る。IIが、各イニシエートされた反復が命令を同時に
実行しているイニシエーションインターバルである、第
1のp×IIサイクル後に、定常状態が達成される。こ
の定常状態または核においては、ループの1つの反復
は、IIサイクルごとに完了する。一旦核がループにお
ける最後の反復をイニシエートすれば、エピローグは、
核によってイニシエートされたループの最後のp反復を
完了する。
ープにおける命令の実行をスケジュールする技術であ
る。ソフトウェアパイプライン化技術は、ループボディ
の異なるオーバーラップする反復をスケジュールし、そ
れによって、コンピュータの基礎をなす並列計算ユニッ
トを利用する。実行スケジュールは、プロローグ、核、
およびエピローグで構成される。プロローグは、第1の
p反復をイニシエートし、その結果、各反復が開始され
る。IIが、各イニシエートされた反復が命令を同時に
実行しているイニシエーションインターバルである、第
1のp×IIサイクル後に、定常状態が達成される。こ
の定常状態または核においては、ループの1つの反復
は、IIサイクルごとに完了する。一旦核がループにお
ける最後の反復をイニシエートすれば、エピローグは、
核によってイニシエートされたループの最後のp反復を
完了する。
【0014】あるコンピュータは述語命令を含む。述語
命令は、分岐するopコードを含むループをSBBルー
プに変換するために使用され得る。例えば、浮動小数点
条件付き評価命令は、述語条件を設定する。浮動小数点
の「ムーブオン述語条件」命令は、条件を評価し、それ
に従って実行するが、どのようなブランチング処理も行
わない。
命令は、分岐するopコードを含むループをSBBルー
プに変換するために使用され得る。例えば、浮動小数点
条件付き評価命令は、述語条件を設定する。浮動小数点
の「ムーブオン述語条件」命令は、条件を評価し、それ
に従って実行するが、どのようなブランチング処理も行
わない。
【0015】図2aおよび2bは、SBBループの概念
と、非SBBループをSBBループに変換するために述
語命令を用いる利点とを示す。図2aは、一般参照符号
200によって示される非SBBループを示す。ループ
は、コードブロック201でイニシエートする。ブロッ
ク201の「bne]命令では、ブロック201の「b
ne」命令がどのように引数を評価するかに応じて、実
行が、コードブロック203またはコードブロック20
5のいずれか一方で継続し得る。ループ内のこのブラン
チは、SBBループ要件に反する。実行がコードブロッ
ク203に継続した場合、実行は、コードブロック20
5におけるコードを越えてジャンプしなければならな
い。これは、SBBループ要件に反する別の例である。
ブロック201の「bne]命令でどのパスがとられる
かにかかわらず、実行は、コードブロック207で継続
する。コードブロック207は、ループの別の反復が実
行されるべきか、または、ループが完了するかどうかを
決定する命令を含む。
と、非SBBループをSBBループに変換するために述
語命令を用いる利点とを示す。図2aは、一般参照符号
200によって示される非SBBループを示す。ループ
は、コードブロック201でイニシエートする。ブロッ
ク201の「bne]命令では、ブロック201の「b
ne」命令がどのように引数を評価するかに応じて、実
行が、コードブロック203またはコードブロック20
5のいずれか一方で継続し得る。ループ内のこのブラン
チは、SBBループ要件に反する。実行がコードブロッ
ク203に継続した場合、実行は、コードブロック20
5におけるコードを越えてジャンプしなければならな
い。これは、SBBループ要件に反する別の例である。
ブロック201の「bne]命令でどのパスがとられる
かにかかわらず、実行は、コードブロック207で継続
する。コードブロック207は、ループの別の反復が実
行されるべきか、または、ループが完了するかどうかを
決定する命令を含む。
【0016】図2bは、どのように述語命令が、非SB
Bループ200を一般参照符号210によって示される
SBBループに変換し得るかを示す。コードブロック2
01に類似するコードブロック211は、条件(ここで
は、この条件はr1はゼロではないこと)に関連する述
語pを定義するように改変される。コードブロック21
3内の命令は、述語を割り当てられる。述語は、識別子
およびタイプを含む。コードブロック213に対する述
語は、識別子=pおよびタイプ=F(偽)である。従っ
て、コードブロック213における命令は、述語条件が
偽である場合にのみ実行されるが、ループ内にブランチ
ングは存在しない。実行のために要求される述語条件が
偽ではなく真であることを除いては、同じことがコード
ブロック215にも起こる。従って、述語が満たされる
かどうかに応じて命令が条件的に実行されるベーシック
ブロック211、213、および215を通して実行が
連続的に継続する。実行は、述語pが消費され、ループ
が条件的に再び反復されるコードブロック217で完了
する。ベーシックブロック211、213、215、お
よび217の各々は、このとき、SBBループに対する
現存するモジューロスケジューリング方法を用いて最適
化され得るSBBループ219を含む。
Bループ200を一般参照符号210によって示される
SBBループに変換し得るかを示す。コードブロック2
01に類似するコードブロック211は、条件(ここで
は、この条件はr1はゼロではないこと)に関連する述
語pを定義するように改変される。コードブロック21
3内の命令は、述語を割り当てられる。述語は、識別子
およびタイプを含む。コードブロック213に対する述
語は、識別子=pおよびタイプ=F(偽)である。従っ
て、コードブロック213における命令は、述語条件が
偽である場合にのみ実行されるが、ループ内にブランチ
ングは存在しない。実行のために要求される述語条件が
偽ではなく真であることを除いては、同じことがコード
ブロック215にも起こる。従って、述語が満たされる
かどうかに応じて命令が条件的に実行されるベーシック
ブロック211、213、および215を通して実行が
連続的に継続する。実行は、述語pが消費され、ループ
が条件的に再び反復されるコードブロック217で完了
する。ベーシックブロック211、213、215、お
よび217の各々は、このとき、SBBループに対する
現存するモジューロスケジューリング方法を用いて最適
化され得るSBBループ219を含む。
【0017】述語命令に関する難しさは、限定数の述語
レジスタがあり、しばしば、これらのレジスタは、メモ
リにスピルされず、復元され得ないことである。述語レ
ジスタは、アンスピラブルなリソースの1例である。従
って、これらの述語レジスタは、コンパイラのスケジュ
ーリングプロセスに対するリソースの制限である。
レジスタがあり、しばしば、これらのレジスタは、メモ
リにスピルされず、復元され得ないことである。述語レ
ジスタは、アンスピラブルなリソースの1例である。従
って、これらの述語レジスタは、コンパイラのスケジュ
ーリングプロセスに対するリソースの制限である。
【0018】モジューロスケジューリングの概要 モジューロスケジューリングは、当該分野で公知であ
り、一般的に、B. R. RauおよびC. D. Glaeserによる論
文「Some Scheduling Techniques and An EasilySchedu
lable Horizontal Architecture for High Performance
Scientific Computing」、および参照として本明細書
中に完全に組み入れられているthe Fourteenth Annual
Workshop on Microprogrammingの予稿集、 Advanced Pr
ocessor Technology Group, ESL, Inc.、1981年1
0月、183〜198頁に記載されている。要約すれ
ば、モジューロスケジューリング技術は、SBBループ
の以前にイニシエートされた反復が完了する前に、SB
Bループの新しい反復を開始させることにより、並列命
令プロセスをスケジュールする。この概念は、一定のタ
イムインターバル後のSBBループの新しい反復をイニ
シエートすることである。このタイムインターバルは、
イニシエーションインターバルまたは反復インターバル
(II)と呼ばれる。
り、一般的に、B. R. RauおよびC. D. Glaeserによる論
文「Some Scheduling Techniques and An EasilySchedu
lable Horizontal Architecture for High Performance
Scientific Computing」、および参照として本明細書
中に完全に組み入れられているthe Fourteenth Annual
Workshop on Microprogrammingの予稿集、 Advanced Pr
ocessor Technology Group, ESL, Inc.、1981年1
0月、183〜198頁に記載されている。要約すれ
ば、モジューロスケジューリング技術は、SBBループ
の以前にイニシエートされた反復が完了する前に、SB
Bループの新しい反復を開始させることにより、並列命
令プロセスをスケジュールする。この概念は、一定のタ
イムインターバル後のSBBループの新しい反復をイニ
シエートすることである。このタイムインターバルは、
イニシエーションインターバルまたは反復インターバル
(II)と呼ばれる。
【0019】図2cは、一般参照符号250で示される
ような、4つのステージを有し、7つの反復を持つスケ
ジュールを示す。完全な反復の実行に必要とされる時間
である、スケジュールされた長さTL251を、1つの
反復に持たせる。反復を、それぞれがイニシエーション
インターバルタイムII253をとるステージへと分割
する。ステージカウント(SC)は、SC=[TL/I
I]と定義される。従って、図2cに示される状態にお
いては、 TL=4およびII=1であるので、 SC=
4である。
ような、4つのステージを有し、7つの反復を持つスケ
ジュールを示す。完全な反復の実行に必要とされる時間
である、スケジュールされた長さTL251を、1つの
反復に持たせる。反復を、それぞれがイニシエーション
インターバルタイムII253をとるステージへと分割
する。ステージカウント(SC)は、SC=[TL/I
I]と定義される。従って、図2cに示される状態にお
いては、 TL=4およびII=1であるので、 SC=
4である。
【0020】ループの実行は、第1の反復257のステ
ージ0 255で始まる。第1のイニシエーションイン
ターバル253の間、他の反復は同時に実行されない。
第1のイニシエーションインターバル後、第1の反復2
57は、ステージ1に入り、第2の反復259は、ステ
ージ0に入る。新しい反復は、異なる反復のあらゆるス
テージが同時に実行されるまで、各IIごとに加わる。
ループが終結に近づくと、最後の反復260が終了する
まで、新しい反復はイニシエートされず、様々なステー
ジにおいて進行中の反復は、徐々に終了する。
ージ0 255で始まる。第1のイニシエーションイン
ターバル253の間、他の反復は同時に実行されない。
第1のイニシエーションインターバル後、第1の反復2
57は、ステージ1に入り、第2の反復259は、ステ
ージ0に入る。新しい反復は、異なる反復のあらゆるス
テージが同時に実行されるまで、各IIごとに加わる。
ループが終結に近づくと、最後の反復260が終了する
まで、新しい反復はイニシエートされず、様々なステー
ジにおいて進行中の反復は、徐々に終了する。
【0021】ループ実行は、3つのフェーズ、プロロー
グフェーズ261、核フェーズ263、およびエピロー
グフェーズ265を有する。プロローグフェーズ261
およびエピローグフェーズ265の間、連続的な反復の
全てのステージが実行されるわけではない。連続的な反
復の全てのステージを、核フェーズ263の間に実行す
る。プロローグ261およびエピローグ265は、(S
C−1)×IIサイクルの間継続する。ループのトリッ
プカウントが大きい場合、核フェース263はプロロー
グ261またはエピローグ265フェーズよりかなり長
く続く。モジューロスケジュールされたループに対する
主要パフォーマンスメトリックは、イニシエーションイ
ンターバル(II)253である。IIの値は、ループ
反復に対する定常状態スループットの尺度でもある。小
さなIIの値は、高いスループットを意味する。従っ
て、このスケジューラは、IIの値を最小化するスケジ
ュールを得ようとする。n個の反復を実行するための時
間は、T(n)=(n+SC−1)×IIである。スル
ープットは、nが無限に近づくにつれて、IIに近づ
く。
グフェーズ261、核フェーズ263、およびエピロー
グフェーズ265を有する。プロローグフェーズ261
およびエピローグフェーズ265の間、連続的な反復の
全てのステージが実行されるわけではない。連続的な反
復の全てのステージを、核フェーズ263の間に実行す
る。プロローグ261およびエピローグ265は、(S
C−1)×IIサイクルの間継続する。ループのトリッ
プカウントが大きい場合、核フェース263はプロロー
グ261またはエピローグ265フェーズよりかなり長
く続く。モジューロスケジュールされたループに対する
主要パフォーマンスメトリックは、イニシエーションイ
ンターバル(II)253である。IIの値は、ループ
反復に対する定常状態スループットの尺度でもある。小
さなIIの値は、高いスループットを意味する。従っ
て、このスケジューラは、IIの値を最小化するスケジ
ュールを得ようとする。n個の反復を実行するための時
間は、T(n)=(n+SC−1)×IIである。スル
ープットは、nが無限に近づくにつれて、IIに近づ
く。
【0022】モジューロスケジューリングプロセスで
は、まず、ループに対するデータ依存性グラフ(DD
G)が構成される。この(有向)グラフにおいて、ノー
ドは命令に対応し、アークは命令間の依存に対応する。
アークは、2つの属性:レイテンシおよびオメガを有す
る。レイテンシは、ソースとデスティネーションとを分
離するために必要なプロセッサクロックの数である。オ
メガは、ソースとデスティネーションとの間の反復距離
である。(例えば、0のオメガは、値が現在の反復にお
いて用いられることを意味し、1のオメガは、ソース命
令が次の反復に用いられるデスティネーション命令に対
する値を計算することを意味し、2のオメガは、値が計
算された後に2回反復して用いられることを意味す
る。) 次に、モジューロスケジューリングプロセスでは、2つ
のスループットバウンドの最大を取ることによって、最
小開始インターバル(MII)が決定される。これらの
バウンドは、リソース最小開始インターバル(Resm
II)および繰り返し最小開始インターバル(Recm
II)である。ResmIIは、ループを1回反復する
のに必要なサイクルの最小数におけるバウンドであり、
プロセッサリソースに基づく。例えば、ループが10個
の加算処理を有し、プロセッサがプロセッサクロック当
たり多くとも2つの加算処理を実行し得る場合、加算ユ
ニットリソースは、反復スループットを5クロック当た
り多くとも1つの加算処理に限定する。ResmII
は、各リソースを交替で取り、各リソースによって与え
られる(impose)バウンドの最大を取ることによって計
算される。
は、まず、ループに対するデータ依存性グラフ(DD
G)が構成される。この(有向)グラフにおいて、ノー
ドは命令に対応し、アークは命令間の依存に対応する。
アークは、2つの属性:レイテンシおよびオメガを有す
る。レイテンシは、ソースとデスティネーションとを分
離するために必要なプロセッサクロックの数である。オ
メガは、ソースとデスティネーションとの間の反復距離
である。(例えば、0のオメガは、値が現在の反復にお
いて用いられることを意味し、1のオメガは、ソース命
令が次の反復に用いられるデスティネーション命令に対
する値を計算することを意味し、2のオメガは、値が計
算された後に2回反復して用いられることを意味す
る。) 次に、モジューロスケジューリングプロセスでは、2つ
のスループットバウンドの最大を取ることによって、最
小開始インターバル(MII)が決定される。これらの
バウンドは、リソース最小開始インターバル(Resm
II)および繰り返し最小開始インターバル(Recm
II)である。ResmIIは、ループを1回反復する
のに必要なサイクルの最小数におけるバウンドであり、
プロセッサリソースに基づく。例えば、ループが10個
の加算処理を有し、プロセッサがプロセッサクロック当
たり多くとも2つの加算処理を実行し得る場合、加算ユ
ニットリソースは、反復スループットを5クロック当た
り多くとも1つの加算処理に限定する。ResmII
は、各リソースを交替で取り、各リソースによって与え
られる(impose)バウンドの最大を取ることによって計
算される。
【0023】RecmIIは、1回の反復を完了するの
に必要なクロックの最小数に基づくバウンドであり、D
DGのノード間の依存に基づく。DDGにおけるサイク
ルは、ある反復kにおいて計算された値Xjが、後の反
復jにおいて用いられ、反復jにおいて同様に伝播され
る値を計算するのに必要であることを意味する。これら
の循環依存は、反復をどのくらい迅速に実行できるかの
限界を定める。なぜなら、サイクル内で必要とされる値
の計算には時間がかかるからである。DDGにおける各
基本サイクルに対して、オメガ(d)の合計に対するレ
イテンシ(l)の合計の比が計算される。この値は、反
復スループットを限定する。なぜなら、d反復にわたる
サイクル内の値を計算するのに(l)クロックかかるか
らである。
に必要なクロックの最小数に基づくバウンドであり、D
DGのノード間の依存に基づく。DDGにおけるサイク
ルは、ある反復kにおいて計算された値Xjが、後の反
復jにおいて用いられ、反復jにおいて同様に伝播され
る値を計算するのに必要であることを意味する。これら
の循環依存は、反復をどのくらい迅速に実行できるかの
限界を定める。なぜなら、サイクル内で必要とされる値
の計算には時間がかかるからである。DDGにおける各
基本サイクルに対して、オメガ(d)の合計に対するレ
イテンシ(l)の合計の比が計算される。この値は、反
復スループットを限定する。なぜなら、d反復にわたる
サイクル内の値を計算するのに(l)クロックかかるか
らである。
【0024】重複した反復間の固定スペーシングによっ
て、DDGにおけるアークによって与えられる通常の制
約以外の制約がスケジュラに与えられる。時刻tにおい
て処理を行うということは、t+(k*II)における
k番目後の反復において対応の処理が存在することを意
味することに留意されたい。同一のリソースを用いる処
理は、異なる時刻にモジューロIIとして配置されなけ
ればならない。これを、「モジューロ制約」と呼ぶ。モ
ージューロ制約によると、ある処理が時刻t1でリソー
スを用い、他の処理が時刻t2で全く同一のリソースを
用いる場合、時刻t1およびt2は、「t1モジューロI
Iがt2モジューロIIと等しくない」ということを満
足しなければならない。このスケジューリングスキーム
は、スケジューリングが発生したときにリソース使用を
追跡するためのモジューロ予約テーブル(MRT)を用
いる。
て、DDGにおけるアークによって与えられる通常の制
約以外の制約がスケジュラに与えられる。時刻tにおい
て処理を行うということは、t+(k*II)における
k番目後の反復において対応の処理が存在することを意
味することに留意されたい。同一のリソースを用いる処
理は、異なる時刻にモジューロIIとして配置されなけ
ればならない。これを、「モジューロ制約」と呼ぶ。モ
ージューロ制約によると、ある処理が時刻t1でリソー
スを用い、他の処理が時刻t2で全く同一のリソースを
用いる場合、時刻t1およびt2は、「t1モジューロI
Iがt2モジューロIIと等しくない」ということを満
足しなければならない。このスケジューリングスキーム
は、スケジューリングが発生したときにリソース使用を
追跡するためのモジューロ予約テーブル(MRT)を用
いる。
【0025】スケジュラは、II=mII=max(R
esmII、RecmII)と定義される最小開始イン
ターバルを用いてスケジュールを得ようと試みることに
よって開始する。スケジュールが見いだせない場合に
は、IIが増加する。このプロセスは、スケージュール
が見いだされるかまたはIIの上限に到達するまで繰り
返される。スケジューリング後、連続した反復から得ら
れる値が互いに上書きしないようにするため、カーネル
が展開され、defsの名前が変更されなければならな
い。カーネルを展開するとは、生成されたコードにおけ
るカーネルの複数のコピーを作成するプロセスのことを
指す。必要とされる最小のカーネル展開因子(KUF)
は、IIによって分割される最も長い値の寿命によって
決定される。なぜなら、対応する新しい寿命は、IIブ
ロック毎に開始するからである。(値の寿命は、値が存
在する時間、即ち、その値の生成がステート(def)
されてから、(使用)または用いることが可能になる最
後の瞬間までの時間と等しい。残りの反復(KUF−1
まで)は、クリーンアップループを用いる。
esmII、RecmII)と定義される最小開始イン
ターバルを用いてスケジュールを得ようと試みることに
よって開始する。スケジュールが見いだせない場合に
は、IIが増加する。このプロセスは、スケージュール
が見いだされるかまたはIIの上限に到達するまで繰り
返される。スケジューリング後、連続した反復から得ら
れる値が互いに上書きしないようにするため、カーネル
が展開され、defsの名前が変更されなければならな
い。カーネルを展開するとは、生成されたコードにおけ
るカーネルの複数のコピーを作成するプロセスのことを
指す。必要とされる最小のカーネル展開因子(KUF)
は、IIによって分割される最も長い値の寿命によって
決定される。なぜなら、対応する新しい寿命は、IIブ
ロック毎に開始するからである。(値の寿命は、値が存
在する時間、即ち、その値の生成がステート(def)
されてから、(使用)または用いることが可能になる最
後の瞬間までの時間と等しい。残りの反復(KUF−1
まで)は、クリーンアップループを用いる。
【0026】上記のモジューロスケジューリングの他の
局面は、いくつかのコンピュータ命令が特定のコンピュ
ータアーキテクチャではパイプライニングされ得ないこ
とである。いくつかのプロセッサに対するこのタイプの
命令の例としては、除算および平方根命令が挙げられ
る。従って、倍精度除算は、連続するプロセッササイク
ルのいくつかの重要な数をとり得る。このサイクル中他
の除算命令は開始できない。従って、これらの命令は、
これらの命令が用いるリソースをブロックする。
局面は、いくつかのコンピュータ命令が特定のコンピュ
ータアーキテクチャではパイプライニングされ得ないこ
とである。いくつかのプロセッサに対するこのタイプの
命令の例としては、除算および平方根命令が挙げられ
る。従って、倍精度除算は、連続するプロセッササイク
ルのいくつかの重要な数をとり得る。このサイクル中他
の除算命令は開始できない。従って、これらの命令は、
これらの命令が用いるリソースをブロックする。
【0027】mII計算は、ループ内のすべての命令の
リソース使用の必要性を考慮するが、mII計算は、命
令間の依存を考慮しない。従って、モジューロスケジュ
ーリング技術によると、ループをスケジューリングする
ための十分なサイクルは確保されるが、十分な連続した
サイクルが、平方根および除算処理などのブロッキング
処理をスケジューリングするために確実に得られるとい
うわけではない。しばしば、スケジューリングループが
ブロッキング処理を含む場合、スケジュールが存在して
も、所定のIIにおいてスケジュールが見いだされ得な
い。従って、IIは増加し、他のスケジューリングの試
みが発生する。このプロセスの結果、ターゲットプログ
ラムのコンピレーションは長くなり、有効な実行コード
は少なくなる。
リソース使用の必要性を考慮するが、mII計算は、命
令間の依存を考慮しない。従って、モジューロスケジュ
ーリング技術によると、ループをスケジューリングする
ための十分なサイクルは確保されるが、十分な連続した
サイクルが、平方根および除算処理などのブロッキング
処理をスケジューリングするために確実に得られるとい
うわけではない。しばしば、スケジューリングループが
ブロッキング処理を含む場合、スケジュールが存在して
も、所定のIIにおいてスケジュールが見いだされ得な
い。従って、IIは増加し、他のスケジューリングの試
みが発生する。このプロセスの結果、ターゲットプログ
ラムのコンピレーションは長くなり、有効な実行コード
は少なくなる。
【0028】図2dは、全体にわたって参照符号270
で示される、(図1の)コンパイラのコード生成セグメ
ント107を最適化するのに用いられるプロセスを示
す。プロセス270は、ループステートメントを評価す
る場合、「開始」ターミナル271で開始する。プロセ
ス270は、モジューロ予約テーブル(MRT)プロシ
ージャ272の初期化に進む。このプロシージャ272
は、ループ反復をスケジューリングするのに適切なテー
ブルをアロケートする。次に、プロセス270は、従来
より公知の最適化を実施する最適化ステップ273に進
む。最適化ステップ273が完了した後、プロセス27
0は、SBBループなどの反復コンストラクトが決定プ
ロシージャ275で最適化されているか否かをチェック
する。決定プロシージャ275がSBB反復コンストラ
クトを検出しない場合、プロセスは通常のスケジューリ
ングプロシージャ277に進む。スケジューリングが完
了した後、プロセスは、仮想レジスタ拡張プロシージャ
279に進む。仮想レジスタ拡張プロシージャ279
は、物理的レジスタを、プログラムがコンパイルされた
最適化中間表現106によって用いられる仮想レジスタ
にアロケートし、これらの物理的レジスタの内容がプロ
グラム実行中の適切なポイントでメモリにスピルするよ
うにする。
で示される、(図1の)コンパイラのコード生成セグメ
ント107を最適化するのに用いられるプロセスを示
す。プロセス270は、ループステートメントを評価す
る場合、「開始」ターミナル271で開始する。プロセ
ス270は、モジューロ予約テーブル(MRT)プロシ
ージャ272の初期化に進む。このプロシージャ272
は、ループ反復をスケジューリングするのに適切なテー
ブルをアロケートする。次に、プロセス270は、従来
より公知の最適化を実施する最適化ステップ273に進
む。最適化ステップ273が完了した後、プロセス27
0は、SBBループなどの反復コンストラクトが決定プ
ロシージャ275で最適化されているか否かをチェック
する。決定プロシージャ275がSBB反復コンストラ
クトを検出しない場合、プロセスは通常のスケジューリ
ングプロシージャ277に進む。スケジューリングが完
了した後、プロセスは、仮想レジスタ拡張プロシージャ
279に進む。仮想レジスタ拡張プロシージャ279
は、物理的レジスタを、プログラムがコンパイルされた
最適化中間表現106によって用いられる仮想レジスタ
にアロケートし、これらの物理的レジスタの内容がプロ
グラム実行中の適切なポイントでメモリにスピルするよ
うにする。
【0029】決定プロシージャ275が反復コンストラ
クトを検出する場合、プロセスは、「SBBループSW
パイプライニング」プロシージャ281に進む。このプ
ロシージャ281の処理については上述した通りで、こ
のプロシージャ281の結果、カーネル展開因子(KU
F)によってループのカーネルが展開し、ループの命令
をモジューロスケジューリングする。実行は、仮想レジ
スタ拡張プロシージャ279で続行する。
クトを検出する場合、プロセスは、「SBBループSW
パイプライニング」プロシージャ281に進む。このプ
ロシージャ281の処理については上述した通りで、こ
のプロシージャ281の結果、カーネル展開因子(KU
F)によってループのカーネルが展開し、ループの命令
をモジューロスケジューリングする。実行は、仮想レジ
スタ拡張プロシージャ279で続行する。
【0030】レジスタアロケーションプロシージャ27
9の後、プロセスは、コード生成プロシージャ283に
進み、このコード生成プロシージャ283において、最
適化された中間表現106は、オブジェクトコード(ま
たは、ユーザの好みによっては必要に応じてアセンブラ
ソースコード)に変換される。プロセスは、「終了」タ
ーミナル285で完了する。
9の後、プロセスは、コード生成プロシージャ283に
進み、このコード生成プロシージャ283において、最
適化された中間表現106は、オブジェクトコード(ま
たは、ユーザの好みによっては必要に応じてアセンブラ
ソースコード)に変換される。プロセスは、「終了」タ
ーミナル285で完了する。
【0031】
【発明が解決しようとする課題】上記の説明から当業者
には当然のことながら、ソフトウェアパイプライニング
プロセスがレジスタアロケーションプロセス前に実施さ
れる。従って、スケジューリングプロセスでは、ループ
で用いられる物理的レジスタの数を決定することはでき
ない。多くのタイプの物理的レジスタに関しては、この
スケジューリングプロセスは、良好な結果をもたらす。
なぜなら、物理的レジスタの内容がメモリにスピルされ
(そして、必要に応じて物理的レジスタに再格納され)
得るからである。しかし、述語レジスタは、メモリには
スピルされ得ない。従って、スケジューリングプロセス
は、ループのコンピュータ処理をスケジューリングする
と共に、十分な述語レジスタが存在してスケジューリン
グされた処理を確実に実施しなければならない。
には当然のことながら、ソフトウェアパイプライニング
プロセスがレジスタアロケーションプロセス前に実施さ
れる。従って、スケジューリングプロセスでは、ループ
で用いられる物理的レジスタの数を決定することはでき
ない。多くのタイプの物理的レジスタに関しては、この
スケジューリングプロセスは、良好な結果をもたらす。
なぜなら、物理的レジスタの内容がメモリにスピルされ
(そして、必要に応じて物理的レジスタに再格納され)
得るからである。しかし、述語レジスタは、メモリには
スピルされ得ない。従って、スケジューリングプロセス
は、ループのコンピュータ処理をスケジューリングする
と共に、十分な述語レジスタが存在してスケジューリン
グされた処理を確実に実施しなければならない。
【0032】上記の技術に関する他の問題は、コンピュ
ータ命令の中にパイプライニングされないものがある
(ブロッキング命令)ことである。これらの命令では、
十分な連続サイクルを部分的にスケジューリングされた
反復に見いだすことが困難であるため、コンピレーショ
ン時間が長くなる。また、これらの命令では、スケジュ
ール内にブロッキング命令を配置するための反復インタ
ーバルが長くなる。
ータ命令の中にパイプライニングされないものがある
(ブロッキング命令)ことである。これらの命令では、
十分な連続サイクルを部分的にスケジューリングされた
反復に見いだすことが困難であるため、コンピレーショ
ン時間が長くなる。また、これらの命令では、スケジュ
ール内にブロッキング命令を配置するための反復インタ
ーバルが長くなる。
【0033】
【課題を解決するための手段】本発明のコンピュータ制
御の方法は、命令のパイプライン化を容易化し且つ2つ
以上の命令が単一のクロックサイクルで発せられること
を可能にする複数の並列計算ユニットを有するターゲッ
トコンピュータアーキテクチャに向けられたターゲット
プログラムの内部でループステートメントを最適化する
コンピュータ制御の方法であって、該ループステートメ
ントは反復的コンストラクトを記述し、該ループステー
トメントはシングルベーシックブロックループの特徴を
有しており、該方法が、(a)該ループステートメント
がアンスピラブル(unspillable)リソースのdefをも
たらす少なくとも1つのボディステートメントを含むこ
とを検出するステップと、(b)該反復的コンストラク
トのための制御オメガ値を決定するステップと、(c)
該defを該制御オメガ値を使用するデータ制約条件に
変換するステップと、(d)該反復的コンストラクトを
スケジューリングするステップとを包含する。
御の方法は、命令のパイプライン化を容易化し且つ2つ
以上の命令が単一のクロックサイクルで発せられること
を可能にする複数の並列計算ユニットを有するターゲッ
トコンピュータアーキテクチャに向けられたターゲット
プログラムの内部でループステートメントを最適化する
コンピュータ制御の方法であって、該ループステートメ
ントは反復的コンストラクトを記述し、該ループステー
トメントはシングルベーシックブロックループの特徴を
有しており、該方法が、(a)該ループステートメント
がアンスピラブル(unspillable)リソースのdefをも
たらす少なくとも1つのボディステートメントを含むこ
とを検出するステップと、(b)該反復的コンストラク
トのための制御オメガ値を決定するステップと、(c)
該defを該制御オメガ値を使用するデータ制約条件に
変換するステップと、(d)該反復的コンストラクトを
スケジューリングするステップとを包含する。
【0034】前記コンピュータ制御の方法は、(e)前
記アンスピラブルリソースを前記データ制約条件に依存
してアロケートするステップを更に包含してもよい。
記アンスピラブルリソースを前記データ制約条件に依存
してアロケートするステップを更に包含してもよい。
【0035】前記アンスピラブルリソースが述語レジス
タであってもよい。
タであってもよい。
【0036】前記ループステートメントがデータ依存性
グラフをもたらし、前記defは該データ依存性グラフ
の中のdefノードによって表現されており、前記ステ
ップ(c)が、(c1)自己出力アークを該defノー
ドに加えるステップと、(c2)前記制御オメガ値を該
自己出力アークに割り当てるステップとを更に包含して
もよい。
グラフをもたらし、前記defは該データ依存性グラフ
の中のdefノードによって表現されており、前記ステ
ップ(c)が、(c1)自己出力アークを該defノー
ドに加えるステップと、(c2)前記制御オメガ値を該
自己出力アークに割り当てるステップとを更に包含して
もよい。
【0037】前記データ依存性グラフが、アークによっ
て前記defノードに接続された使用ノードを更に備え
ており、前記ステップ(e)が、(e1)複数の使用可
能なアンスピラブルリソースを決定するステップと、
(e2)該複数の使用可能なアンスピラブルリソースの
うちの第1のアンスピラブルリソースを該defノード
に割り当てるステップと、(e3)該第1のアンスピラ
ブルリソースを該defノードから該使用ノードへ伝播
させるステップとを更に包含してもよい。
て前記defノードに接続された使用ノードを更に備え
ており、前記ステップ(e)が、(e1)複数の使用可
能なアンスピラブルリソースを決定するステップと、
(e2)該複数の使用可能なアンスピラブルリソースの
うちの第1のアンスピラブルリソースを該defノード
に割り当てるステップと、(e3)該第1のアンスピラ
ブルリソースを該defノードから該使用ノードへ伝播
させるステップとを更に包含してもよい。
【0038】前記ステップ(b)が、(b1)前記反復
的コンストラクトによって使用される異なるアンスピラ
ブルリソースの数を決定するステップと、(b2)該反
復的コンストラクトによる使用のために使用可能な、使
用可能なアンスピラブルリソースの数を決定するステッ
プと、(b3)該異なるアンスピラブルリソースの数と
該使用可能なアンスピラブルリソースの数とから前記制
御オメガ値を決定するステップとを更に包含してもよ
い。
的コンストラクトによって使用される異なるアンスピラ
ブルリソースの数を決定するステップと、(b2)該反
復的コンストラクトによる使用のために使用可能な、使
用可能なアンスピラブルリソースの数を決定するステッ
プと、(b3)該異なるアンスピラブルリソースの数と
該使用可能なアンスピラブルリソースの数とから前記制
御オメガ値を決定するステップとを更に包含してもよ
い。
【0039】本発明のコンピュータ制御の方法は、命令
のパイプライン化を容易化し且つ2つ以上の命令が単一
のクロックサイクルで発せられることを可能にする複数
の並列計算ユニットを有するターゲットコンピュータア
ーキテクチャに向けられたターゲットプログラムの内部
でループステートメントを最適化するコンピュータ制御
の方法であって、該ループステートメントは反復的コン
ストラクトを記述し、該ループステートメントはシング
ルベーシックブロックループの特徴を有しており、該方
法が、(a)該ループステートメントがブロッキング処
理を呼び出す少なくとも1つのボディステートメントを
含むことを検出するステップと、(b)該ブロッキング
処理のために予約された少なくとも1つの専用スケジュ
ーリング領域をプリアロケートするステップと、(c)
該専用スケジューリング領域の内部で該ブロッキング処
理をスケジューリングするステップとを包含する。
のパイプライン化を容易化し且つ2つ以上の命令が単一
のクロックサイクルで発せられることを可能にする複数
の並列計算ユニットを有するターゲットコンピュータア
ーキテクチャに向けられたターゲットプログラムの内部
でループステートメントを最適化するコンピュータ制御
の方法であって、該ループステートメントは反復的コン
ストラクトを記述し、該ループステートメントはシング
ルベーシックブロックループの特徴を有しており、該方
法が、(a)該ループステートメントがブロッキング処
理を呼び出す少なくとも1つのボディステートメントを
含むことを検出するステップと、(b)該ブロッキング
処理のために予約された少なくとも1つの専用スケジュ
ーリング領域をプリアロケートするステップと、(c)
該専用スケジューリング領域の内部で該ブロッキング処
理をスケジューリングするステップとを包含する。
【0040】前記ステップ(b)は、(b1)前記ルー
プを構成している複数の反復的コンストラクトに対する
複数の処理をスケジューリングするために使用される、
モジューロ予約テーブル(MRT)を生成するステップ
と、(b2)前記複数の反復的コンストラクトの各々に
対して、該MRTの内部で、前記専用スケジューリング
領域をプリアロケートするステップとを更に包含しても
よい。
プを構成している複数の反復的コンストラクトに対する
複数の処理をスケジューリングするために使用される、
モジューロ予約テーブル(MRT)を生成するステップ
と、(b2)前記複数の反復的コンストラクトの各々に
対して、該MRTの内部で、前記専用スケジューリング
領域をプリアロケートするステップとを更に包含しても
よい。
【0041】本発明のコンピュータシステムは、中央処
理ユニット(CPU)と該CPUに結合されたメモリと
を有し、命令のパイプライン化を容易化し且つ2つ以上
の命令が単一のクロックサイクルで発せられることを可
能にする複数の並列計算ユニットを有するターゲットコ
ンピュータアーキテクチャに向けられたターゲットプロ
グラムの内部でループステートメントを最適化するコン
ピュータシステムであって、該ループステートメントは
反復的コンストラクトを記述し、該ループステートメン
トはシングルベーシックブロックループの特徴を有して
おり、該コンピュータシステムは、コードジェネレータ
セグメントを有するコンパイラシステムを有しており、
該コンピュータシステムが、該ループステートメントが
アンスピラブルリソースのdefをもたらす少なくとも
1つのボディステートメントを含むことを検出するよう
に構成されたループ検出メカニズムと、該ループステー
トメントを表す該反復的コンストラクトのための制御オ
メガ値を決定するように構成された制御オメガ決定メカ
ニズムと、該defを該制御オメガ値を使用するデータ
制約条件に変換するように構成された変換メカニズム
と、該反復的コンストラクトを該データ制約条件を使用
してスケジューリングするように構成されたスケジュー
リングメカニズムとを備えている。
理ユニット(CPU)と該CPUに結合されたメモリと
を有し、命令のパイプライン化を容易化し且つ2つ以上
の命令が単一のクロックサイクルで発せられることを可
能にする複数の並列計算ユニットを有するターゲットコ
ンピュータアーキテクチャに向けられたターゲットプロ
グラムの内部でループステートメントを最適化するコン
ピュータシステムであって、該ループステートメントは
反復的コンストラクトを記述し、該ループステートメン
トはシングルベーシックブロックループの特徴を有して
おり、該コンピュータシステムは、コードジェネレータ
セグメントを有するコンパイラシステムを有しており、
該コンピュータシステムが、該ループステートメントが
アンスピラブルリソースのdefをもたらす少なくとも
1つのボディステートメントを含むことを検出するよう
に構成されたループ検出メカニズムと、該ループステー
トメントを表す該反復的コンストラクトのための制御オ
メガ値を決定するように構成された制御オメガ決定メカ
ニズムと、該defを該制御オメガ値を使用するデータ
制約条件に変換するように構成された変換メカニズム
と、該反復的コンストラクトを該データ制約条件を使用
してスケジューリングするように構成されたスケジュー
リングメカニズムとを備えている。
【0042】前記コンピュータシステムは、前記アンス
ピラブルリソースを前記データ制約条件に依存してアロ
ケートするように構成されたアロケーションメカニズム
を更に備えていてもよい。
ピラブルリソースを前記データ制約条件に依存してアロ
ケートするように構成されたアロケーションメカニズム
を更に備えていてもよい。
【0043】前記アンスピラブルリソースが述語レジス
タであってもよい。
タであってもよい。
【0044】前記ループステートメントがデータ依存性
グラフをもたらし、前記defは該データ依存性グラフ
の中のdefノードによって表現されており、前記変換
メカニズムが、自己出力アークを該defノードに加え
るように構成されたアーク追加メカニズムと、前記制御
オメガ値を該自己出力アークに割り当てるように構成さ
れたオメガ割り当てメカニズムとを更に備えていてもよ
い。
グラフをもたらし、前記defは該データ依存性グラフ
の中のdefノードによって表現されており、前記変換
メカニズムが、自己出力アークを該defノードに加え
るように構成されたアーク追加メカニズムと、前記制御
オメガ値を該自己出力アークに割り当てるように構成さ
れたオメガ割り当てメカニズムとを更に備えていてもよ
い。
【0045】前記データ依存性グラフが、アークによっ
て前記defノードに接続された使用ノードを更に備え
ており、前記アロケーションメカニズムが、複数の使用
可能なアンスピラブルリソースを決定するように構成さ
れた使用可能リソース決定メカニズムと、該複数の使用
可能なアンスピラブルリソースのうちの第1のアンスピ
ラブルリソースを該defノードに割り当てるように構
成されたリソース割り当てメカニズムと、該第1のアン
スピラブルリソースを該defノードから該使用ノード
へ伝播させるように構成されたリソース伝播メカニズム
とを更に備えていてもよい。
て前記defノードに接続された使用ノードを更に備え
ており、前記アロケーションメカニズムが、複数の使用
可能なアンスピラブルリソースを決定するように構成さ
れた使用可能リソース決定メカニズムと、該複数の使用
可能なアンスピラブルリソースのうちの第1のアンスピ
ラブルリソースを該defノードに割り当てるように構
成されたリソース割り当てメカニズムと、該第1のアン
スピラブルリソースを該defノードから該使用ノード
へ伝播させるように構成されたリソース伝播メカニズム
とを更に備えていてもよい。
【0046】前記制御オメガ決定メカニズムが、前記反
復的コンストラクトによって使用される異なるアンスピ
ラブルリソースの数を決定するように構成されたリソー
ス決定メカニズムと、該反復的コンストラクトによる使
用のために使用可能な、使用可能なアンスピラブルリソ
ースの数を決定するように構成された使用可能リソース
決定メカニズムと、該異なるアンスピラブルリソースの
数と該使用可能なアンスピラブルリソースの数とから前
記制御オメガ値を決定するように構成された制御オメガ
決定メカニズムとを更に備えていてもよい。
復的コンストラクトによって使用される異なるアンスピ
ラブルリソースの数を決定するように構成されたリソー
ス決定メカニズムと、該反復的コンストラクトによる使
用のために使用可能な、使用可能なアンスピラブルリソ
ースの数を決定するように構成された使用可能リソース
決定メカニズムと、該異なるアンスピラブルリソースの
数と該使用可能なアンスピラブルリソースの数とから前
記制御オメガ値を決定するように構成された制御オメガ
決定メカニズムとを更に備えていてもよい。
【0047】本発明のコンピュータシステムは、中央処
理ユニット(CPU)と該CPUに結合されたメモリと
を有し、命令のパイプライン化を容易化し且つ2つ以上
の命令が単一のクロックサイクルで発せられることを可
能にする複数の並列計算ユニットを有するターゲットコ
ンピュータアーキテクチャに向けられたターゲットプロ
グラムの中のループステートメントを最適化するコンピ
ュータシステムであって、該ループステートメントは反
復的コンストラクトを記述し、該ループステートメント
はシングルベーシックブロックループの特徴を有してお
り、該コンピュータシステムはコードジェネレータセグ
メントを有するコンパイラシステムを有しており、該コ
ンピュータシステムは、該ループステートメントがブロ
ッキング処理を呼び出す少なくとも1つのボディステー
トメントを含むことを検出するように構成されたブロッ
キングステートメント検出メカニズムと、該ブロッキン
グ処理のために予約された少なくとも1つの専用スケジ
ューリング領域をプリアロケートするように構成された
アロケーションメカニズムと、該専用スケジューリング
領域の内部で該ブロッキング処理をスケジューリングす
るように構成されたスケジューリングメカニズムとを備
えている。
理ユニット(CPU)と該CPUに結合されたメモリと
を有し、命令のパイプライン化を容易化し且つ2つ以上
の命令が単一のクロックサイクルで発せられることを可
能にする複数の並列計算ユニットを有するターゲットコ
ンピュータアーキテクチャに向けられたターゲットプロ
グラムの中のループステートメントを最適化するコンピ
ュータシステムであって、該ループステートメントは反
復的コンストラクトを記述し、該ループステートメント
はシングルベーシックブロックループの特徴を有してお
り、該コンピュータシステムはコードジェネレータセグ
メントを有するコンパイラシステムを有しており、該コ
ンピュータシステムは、該ループステートメントがブロ
ッキング処理を呼び出す少なくとも1つのボディステー
トメントを含むことを検出するように構成されたブロッ
キングステートメント検出メカニズムと、該ブロッキン
グ処理のために予約された少なくとも1つの専用スケジ
ューリング領域をプリアロケートするように構成された
アロケーションメカニズムと、該専用スケジューリング
領域の内部で該ブロッキング処理をスケジューリングす
るように構成されたスケジューリングメカニズムとを備
えている。
【0048】前記アロケーションメカニズムが、前記ル
ープを構成している複数の反復的コンストラクトに対す
る複数の処理をスケジューリングするために使用される
モジューロ予約テーブル(MRT)を生成するように構
成されたモジューロ予約テーブル生成メカニズムと、前
記複数の反復的コンストラクトの各々に対して、該MR
Tの内部で、前記専用スケジューリング領域をプリアロ
ケートするように構成されたプリアロケーションメカニ
ズムとを更に備えていてもよい。
ープを構成している複数の反復的コンストラクトに対す
る複数の処理をスケジューリングするために使用される
モジューロ予約テーブル(MRT)を生成するように構
成されたモジューロ予約テーブル生成メカニズムと、前
記複数の反復的コンストラクトの各々に対して、該MR
Tの内部で、前記専用スケジューリング領域をプリアロ
ケートするように構成されたプリアロケーションメカニ
ズムとを更に備えていてもよい。
【0049】本発明の装置は、中央処理ユニット(CP
U)と該CPUに結合されたメモリとを有し、命令のパ
イプライン化を容易化し且つ2つ以上の命令が単一のク
ロックサイクルで発せられることを可能にする複数の並
列計算ユニットを有するターゲットコンピュータアーキ
テクチャに向けられたターゲットプログラムの内部でル
ープステートメントを最適化する装置であって、該ルー
プステートメントは反復的コンストラクトを記述し、該
ループステートメントはシングルベーシックブロックル
ープの特徴を有しており、該装置は、コードジェネレー
タセグメントを有するコンパイラシステムを有してお
り、該装置が、該ループステートメントがアンスピラブ
ルリソースのdefをもたらす少なくとも1つのボディ
ステートメントを含むことを検出するように構成された
ループ検出メカニズムと、該ループステートメントを表
す該反復的コンストラクトのための制御オメガ値を決定
するように構成された制御オメガ決定メカニズムと、該
defを該制御オメガ値を使用するデータ制約条件に変
換するように構成された変換メカニズムと、該反復的コ
ンストラクトを該データ制約条件を使用してスケジュー
リングするように構成されたスケジューリングメカニズ
ムとを備えている。
U)と該CPUに結合されたメモリとを有し、命令のパ
イプライン化を容易化し且つ2つ以上の命令が単一のク
ロックサイクルで発せられることを可能にする複数の並
列計算ユニットを有するターゲットコンピュータアーキ
テクチャに向けられたターゲットプログラムの内部でル
ープステートメントを最適化する装置であって、該ルー
プステートメントは反復的コンストラクトを記述し、該
ループステートメントはシングルベーシックブロックル
ープの特徴を有しており、該装置は、コードジェネレー
タセグメントを有するコンパイラシステムを有してお
り、該装置が、該ループステートメントがアンスピラブ
ルリソースのdefをもたらす少なくとも1つのボディ
ステートメントを含むことを検出するように構成された
ループ検出メカニズムと、該ループステートメントを表
す該反復的コンストラクトのための制御オメガ値を決定
するように構成された制御オメガ決定メカニズムと、該
defを該制御オメガ値を使用するデータ制約条件に変
換するように構成された変換メカニズムと、該反復的コ
ンストラクトを該データ制約条件を使用してスケジュー
リングするように構成されたスケジューリングメカニズ
ムとを備えている。
【0050】前記装置は、前記アンスピラブルリソース
を前記データ制約条件に依存してアロケートするように
構成されたアロケーションメカニズムを更に備えていて
もよい。
を前記データ制約条件に依存してアロケートするように
構成されたアロケーションメカニズムを更に備えていて
もよい。
【0051】前記アンスピラブルリソースが述語レジス
タであってもよい。
タであってもよい。
【0052】前記ループステートメントがデータ依存性
グラフをもたらし、前記defは該データ依存性グラフ
の中のdefノードによって表現されており、前記変換
メカニズムが、自己出力アークを該defノードに加え
るように構成されたアーク追加メカニズムと、前記制御
オメガ値を該自己出力アークに割り当てるように構成さ
れたオメガ割り当てメカニズムとを更に備えていてもよ
い。
グラフをもたらし、前記defは該データ依存性グラフ
の中のdefノードによって表現されており、前記変換
メカニズムが、自己出力アークを該defノードに加え
るように構成されたアーク追加メカニズムと、前記制御
オメガ値を該自己出力アークに割り当てるように構成さ
れたオメガ割り当てメカニズムとを更に備えていてもよ
い。
【0053】前記データ依存性グラフが、アークによっ
て前記defノードに接続された使用ノードを更に備え
ており、前記アロケーションメカニズムが、複数の使用
可能なアンスピラブルリソースを決定するように構成さ
れた使用可能リソース決定メカニズムと、該複数の使用
可能なアンスピラブルリソースのうちの第1のアンスピ
ラブルリソースを該defノードに割り当てるように構
成されたリソース割り当てメカニズムと、該第1のアン
スピラブルリソースを該defノードから該使用ノード
へ伝播させるように構成されたリソース伝播メカニズム
とを更に備えていてもよい。
て前記defノードに接続された使用ノードを更に備え
ており、前記アロケーションメカニズムが、複数の使用
可能なアンスピラブルリソースを決定するように構成さ
れた使用可能リソース決定メカニズムと、該複数の使用
可能なアンスピラブルリソースのうちの第1のアンスピ
ラブルリソースを該defノードに割り当てるように構
成されたリソース割り当てメカニズムと、該第1のアン
スピラブルリソースを該defノードから該使用ノード
へ伝播させるように構成されたリソース伝播メカニズム
とを更に備えていてもよい。
【0054】前記制御オメガ決定メカニズムが、前記反
復的コンストラクトによって使用される異なるアンスピ
ラブルリソースの数を決定するように構成されたリソー
ス決定メカニズムと、該反復的コンストラクトによる使
用のために使用可能な、使用可能なアンスピラブルリソ
ースの数を決定するように構成された使用可能リソース
決定メカニズムと、該異なるアンスピラブルリソースの
数と該使用可能なアンスピラブルリソースの数とから前
記制御オメガ値を決定するように構成された制御オメガ
決定メカニズムとを更に備えていてもよい。
復的コンストラクトによって使用される異なるアンスピ
ラブルリソースの数を決定するように構成されたリソー
ス決定メカニズムと、該反復的コンストラクトによる使
用のために使用可能な、使用可能なアンスピラブルリソ
ースの数を決定するように構成された使用可能リソース
決定メカニズムと、該異なるアンスピラブルリソースの
数と該使用可能なアンスピラブルリソースの数とから前
記制御オメガ値を決定するように構成された制御オメガ
決定メカニズムとを更に備えていてもよい。
【0055】本発明の装置は、中央処理ユニット(CP
U)と該CPUに結合されたメモリとを有し、命令のパ
イプライン化を容易化し且つ2つ以上の命令が単一のク
ロックサイクルで発せられることを可能にする複数の並
列計算ユニットを有するターゲットコンピュータアーキ
テクチャに向けられたターゲットプログラムの内部でル
ープステートメントを最適化する装置であって、該ルー
プステートメントは反復的コンストラクトを記述し、該
ループステートメントはシングルベーシックブロックル
ープの特徴を有しており、該装置はコードジェネレータ
セグメントを有するコンパイラシステムを有しており、
該装置は、該ループステートメントがブロッキング処理
を呼び出す少なくとも1つのボディステートメントを含
むことを検出するように構成されたブロッキングステー
トメント検出メカニズムと、該ブロッキング処理のため
に予約された少なくとも1つの専用スケジューリング領
域をプリアロケートするように構成されたアロケーショ
ンメカニズムと、該専用スケジューリング領域の内部で
該ブロッキング処理をスケジューリングするように構成
されたスケジューリングメカニズムとを備えている。
U)と該CPUに結合されたメモリとを有し、命令のパ
イプライン化を容易化し且つ2つ以上の命令が単一のク
ロックサイクルで発せられることを可能にする複数の並
列計算ユニットを有するターゲットコンピュータアーキ
テクチャに向けられたターゲットプログラムの内部でル
ープステートメントを最適化する装置であって、該ルー
プステートメントは反復的コンストラクトを記述し、該
ループステートメントはシングルベーシックブロックル
ープの特徴を有しており、該装置はコードジェネレータ
セグメントを有するコンパイラシステムを有しており、
該装置は、該ループステートメントがブロッキング処理
を呼び出す少なくとも1つのボディステートメントを含
むことを検出するように構成されたブロッキングステー
トメント検出メカニズムと、該ブロッキング処理のため
に予約された少なくとも1つの専用スケジューリング領
域をプリアロケートするように構成されたアロケーショ
ンメカニズムと、該専用スケジューリング領域の内部で
該ブロッキング処理をスケジューリングするように構成
されたスケジューリングメカニズムとを備えている。
【0056】前記アロケーションメカニズムが、前記ル
ープを構成している複数の反復的コンストラクトに対す
る複数の処理をスケジューリングするために使用される
モジューロ予約テーブル(MRT)を生成するように構
成されたモジューロ予約テーブル生成メカニズムと、前
記複数の反復的コンストラクトの各々に対して、該MR
Tの内部で、前記専用スケジューリング領域をプリアロ
ケートするように構成されたプリアロケーションメカニ
ズムとを更に備えていてもよい。
ープを構成している複数の反復的コンストラクトに対す
る複数の処理をスケジューリングするために使用される
モジューロ予約テーブル(MRT)を生成するように構
成されたモジューロ予約テーブル生成メカニズムと、前
記複数の反復的コンストラクトの各々に対して、該MR
Tの内部で、前記専用スケジューリング領域をプリアロ
ケートするように構成されたプリアロケーションメカニ
ズムとを更に備えていてもよい。
【0057】本発明のコンピュータプログラム製品は、
コンピュータで使用可能な記憶媒体を備え、該コンピュ
ータで使用可能な記憶媒体は、その中に組み入れられて
いて、コンピュータに、命令のパイプライン化を容易化
し且つ2つ以上の命令が単一のクロックサイクルで発せ
られることを可能にする複数の並列計算ユニットを有す
るターゲットコンピュータアーキテクチャに向けられた
ターゲットプログラムの中のループステートメントを最
適化させるコンピュータで読み出し可能なコードを有し
ており、該ループステートメントは反復的コンストラク
トを記述し、該ループステートメントはシングルベーシ
ックブロックループの特徴を有しており、該コンピュー
タで読み出し可能なコードは、該ループステートメント
がアンスピラブルリソースのdefをもたらす少なくと
も1つのボディステートメントを含むことを検出するよ
うに構成されたループ検出メカニズムを、該コンピュー
タに実行させるように構成されたコンピュータで読み出
し可能なプログラムコードデバイスと、該ループステー
トメントを表す該反復的コンストラクトのための制御オ
メガ値を決定するように構成された制御オメガ決定メカ
ニズムを、該コンピュータに実行させるように構成され
たコンピュータで読み出し可能なプログラムコードデバ
イスと、該defを該制御オメガ値を使用するデータ制
約条件に変換するように構成された変換メカニズムを、
該コンピュータに実行させるように構成されたコンピュ
ータで読み出し可能なプログラムコードデバイスと、該
反復的コンストラクトを該データ制約条件を使用してス
ケジューリングするように構成されたスケジューリング
メカニズムを、該コンピュータに実行させるように構成
された、コンピュータで読み出し可能なプログラムコー
ドデバイスとを備えている。
コンピュータで使用可能な記憶媒体を備え、該コンピュ
ータで使用可能な記憶媒体は、その中に組み入れられて
いて、コンピュータに、命令のパイプライン化を容易化
し且つ2つ以上の命令が単一のクロックサイクルで発せ
られることを可能にする複数の並列計算ユニットを有す
るターゲットコンピュータアーキテクチャに向けられた
ターゲットプログラムの中のループステートメントを最
適化させるコンピュータで読み出し可能なコードを有し
ており、該ループステートメントは反復的コンストラク
トを記述し、該ループステートメントはシングルベーシ
ックブロックループの特徴を有しており、該コンピュー
タで読み出し可能なコードは、該ループステートメント
がアンスピラブルリソースのdefをもたらす少なくと
も1つのボディステートメントを含むことを検出するよ
うに構成されたループ検出メカニズムを、該コンピュー
タに実行させるように構成されたコンピュータで読み出
し可能なプログラムコードデバイスと、該ループステー
トメントを表す該反復的コンストラクトのための制御オ
メガ値を決定するように構成された制御オメガ決定メカ
ニズムを、該コンピュータに実行させるように構成され
たコンピュータで読み出し可能なプログラムコードデバ
イスと、該defを該制御オメガ値を使用するデータ制
約条件に変換するように構成された変換メカニズムを、
該コンピュータに実行させるように構成されたコンピュ
ータで読み出し可能なプログラムコードデバイスと、該
反復的コンストラクトを該データ制約条件を使用してス
ケジューリングするように構成されたスケジューリング
メカニズムを、該コンピュータに実行させるように構成
された、コンピュータで読み出し可能なプログラムコー
ドデバイスとを備えている。
【0058】前記コンピュータプログラム製品は、前記
アンスピラブルリソースを前記データ制約条件に依存し
てアロケートするように構成されたアロケーションメカ
ニズムを、前記コンピュータに実行させるように構成さ
れたコンピュータで読み出し可能なプログラムコードデ
バイスを更に備えていてもよい。
アンスピラブルリソースを前記データ制約条件に依存し
てアロケートするように構成されたアロケーションメカ
ニズムを、前記コンピュータに実行させるように構成さ
れたコンピュータで読み出し可能なプログラムコードデ
バイスを更に備えていてもよい。
【0059】前記アンスピラブルリソースが述語レジス
タであってもよい。
タであってもよい。
【0060】前記ループステートメントがデータ依存性
グラフをもたらし、前記defは該データ依存性グラフ
の中のdefノードによって表現されており、前記変換
メカニズムが、自己出力アークを該defノードに加え
るように構成されたアーク追加メカニズムを、前記コン
ピュータに実行させるように構成されたコンピュータで
読み出し可能なプログラムコードデバイスと、前記制御
オメガ値を該自己出力アークに割り当てるように構成さ
れたオメガ割り当てメカニズムを、前記コンピュータに
実行させるように構成されたコンピュータで読み出し可
能なプログラムコードデバイスとを更に備えていてもよ
い。
グラフをもたらし、前記defは該データ依存性グラフ
の中のdefノードによって表現されており、前記変換
メカニズムが、自己出力アークを該defノードに加え
るように構成されたアーク追加メカニズムを、前記コン
ピュータに実行させるように構成されたコンピュータで
読み出し可能なプログラムコードデバイスと、前記制御
オメガ値を該自己出力アークに割り当てるように構成さ
れたオメガ割り当てメカニズムを、前記コンピュータに
実行させるように構成されたコンピュータで読み出し可
能なプログラムコードデバイスとを更に備えていてもよ
い。
【0061】前記データ依存性グラフが、アークによっ
て前記defノードに接続された使用ノードを更に備え
ており、前記アロケーションメカニズムが、複数の使用
可能なアンスピラブルリソースを決定するように構成さ
れた使用可能リソース決定メカニズムを、前記コンピュ
ータに実行させるように構成されたコンピュータで読み
出し可能なプログラムコードデバイスと、該複数の使用
可能なアンスピラブルリソースのうちの第1のアンスピ
ラブルリソースを該defノードに割り当てるように構
成されたリソース割り当てメカニズムを、前記コンピュ
ータに実行させるように構成されたコンピュータで読み
出し可能なプログラムコードデバイスと、該第1のアン
スピラブルリソースを該defノードから該使用ノード
へ伝播させるように構成されたリソース伝播メカニズム
を、前記コンピュータに実行させるように構成されたコ
ンピュータで読み出し可能なプログラムコードデバイス
とを更に備えていてもよい。
て前記defノードに接続された使用ノードを更に備え
ており、前記アロケーションメカニズムが、複数の使用
可能なアンスピラブルリソースを決定するように構成さ
れた使用可能リソース決定メカニズムを、前記コンピュ
ータに実行させるように構成されたコンピュータで読み
出し可能なプログラムコードデバイスと、該複数の使用
可能なアンスピラブルリソースのうちの第1のアンスピ
ラブルリソースを該defノードに割り当てるように構
成されたリソース割り当てメカニズムを、前記コンピュ
ータに実行させるように構成されたコンピュータで読み
出し可能なプログラムコードデバイスと、該第1のアン
スピラブルリソースを該defノードから該使用ノード
へ伝播させるように構成されたリソース伝播メカニズム
を、前記コンピュータに実行させるように構成されたコ
ンピュータで読み出し可能なプログラムコードデバイス
とを更に備えていてもよい。
【0062】前記制御オメガ決定メカニズムが、前記反
復的コンストラクトによって使用される異なるアンスピ
ラブルリソースの数を決定するように構成されたリソー
ス決定メカニズムを、前記コンピュータに実行させるよ
うに構成されたコンピュータで読み出し可能なプログラ
ムコードデバイスと、該反復的コンストラクトによる使
用のために使用可能な、使用可能なアンスピラブルリソ
ースの数を決定するように構成された使用可能リソース
決定メカニズムを、前記コンピュータに実行させるよう
に構成されたコンピュータで読み出し可能なプログラム
コードデバイスと、該異なるアンスピラブルリソースの
数と該使用可能なアンスピラブルリソースの数とから前
記制御オメガ値を決定するように構成された制御オメガ
決定メカニズムを、前記コンピュータに実行させるよう
に構成されたコンピュータで読み出し可能なプログラム
コードデバイスとを更に備えていてもよい。
復的コンストラクトによって使用される異なるアンスピ
ラブルリソースの数を決定するように構成されたリソー
ス決定メカニズムを、前記コンピュータに実行させるよ
うに構成されたコンピュータで読み出し可能なプログラ
ムコードデバイスと、該反復的コンストラクトによる使
用のために使用可能な、使用可能なアンスピラブルリソ
ースの数を決定するように構成された使用可能リソース
決定メカニズムを、前記コンピュータに実行させるよう
に構成されたコンピュータで読み出し可能なプログラム
コードデバイスと、該異なるアンスピラブルリソースの
数と該使用可能なアンスピラブルリソースの数とから前
記制御オメガ値を決定するように構成された制御オメガ
決定メカニズムを、前記コンピュータに実行させるよう
に構成されたコンピュータで読み出し可能なプログラム
コードデバイスとを更に備えていてもよい。
【0063】本発明のコンピュータプログラム製品は、
コンピュータで使用可能な記憶媒体を備え、該コンピュ
ータで使用可能な記憶媒体は、その中に組み入れられて
いて、コンピュータに、命令のパイプライン化を容易化
し且つ2つ以上の命令が単一のクロックサイクルで発せ
られることを可能にする複数の並列計算ユニットを有す
るターゲットコンピュータアーキテクチャに向けられた
ターゲットプログラムの中のループステートメントを最
適化させるコンピュータで読み出し可能なコードを有し
ており、該ループステートメントは反復的コンストラク
トを記述し、該ループステートメントはシングルベーシ
ックブロックループの特徴を有しており、該コンピュー
タで読み出し可能なコードは、該ループステートメント
がブロッキング処理を呼び出す少なくとも1つのボディ
ステートメントを含むことを検出するように構成された
ブロッキングステートメント検出メカニズムを、該コン
ピュータに実行させるように構成されたコンピュータで
読み出し可能なプログラムコードデバイスと、該ブロッ
キング処理のために予約された少なくとも1つの専用ス
ケジューリング領域をプリアロケートするように構成さ
れたアロケーションメカニズムを、該コンピュータに実
行させるように構成されたコンピュータで読み出し可能
なプログラムコードデバイスと、該専用スケジューリン
グ領域の内部で該ブロッキング処理をスケジューリング
するように構成されたスケジューリングメカニズムを、
該コンピュータに実行させるように構成されたコンピュ
ータで読み出し可能なプログラムコードデバイスとを備
えている。
コンピュータで使用可能な記憶媒体を備え、該コンピュ
ータで使用可能な記憶媒体は、その中に組み入れられて
いて、コンピュータに、命令のパイプライン化を容易化
し且つ2つ以上の命令が単一のクロックサイクルで発せ
られることを可能にする複数の並列計算ユニットを有す
るターゲットコンピュータアーキテクチャに向けられた
ターゲットプログラムの中のループステートメントを最
適化させるコンピュータで読み出し可能なコードを有し
ており、該ループステートメントは反復的コンストラク
トを記述し、該ループステートメントはシングルベーシ
ックブロックループの特徴を有しており、該コンピュー
タで読み出し可能なコードは、該ループステートメント
がブロッキング処理を呼び出す少なくとも1つのボディ
ステートメントを含むことを検出するように構成された
ブロッキングステートメント検出メカニズムを、該コン
ピュータに実行させるように構成されたコンピュータで
読み出し可能なプログラムコードデバイスと、該ブロッ
キング処理のために予約された少なくとも1つの専用ス
ケジューリング領域をプリアロケートするように構成さ
れたアロケーションメカニズムを、該コンピュータに実
行させるように構成されたコンピュータで読み出し可能
なプログラムコードデバイスと、該専用スケジューリン
グ領域の内部で該ブロッキング処理をスケジューリング
するように構成されたスケジューリングメカニズムを、
該コンピュータに実行させるように構成されたコンピュ
ータで読み出し可能なプログラムコードデバイスとを備
えている。
【0064】前記アロケーションメカニズムが、前記ル
ープを構成している複数の反復的コンストラクトに対す
る複数の処理をスケジューリングするために使用される
モジューロ予約テーブル(MRT)を生成するように構
成されたモジューロ予約テーブル生成メカニズムを、前
記コンピュータに実行させるように構成されたコンピュ
ータで読み出し可能なプログラムコードデバイスと、前
記複数の反復的コンストラクトの各々に対して、該MR
Tの内部で、前記専用スケジューリング領域をプリアロ
ケートするように構成されたプリアロケーションメカニ
ズムを、前記コンピュータに実行させるように構成され
たコンピュータで読み出し可能なプログラムコードデバ
イスとを更に備えていてもよい。
ープを構成している複数の反復的コンストラクトに対す
る複数の処理をスケジューリングするために使用される
モジューロ予約テーブル(MRT)を生成するように構
成されたモジューロ予約テーブル生成メカニズムを、前
記コンピュータに実行させるように構成されたコンピュ
ータで読み出し可能なプログラムコードデバイスと、前
記複数の反復的コンストラクトの各々に対して、該MR
Tの内部で、前記専用スケジューリング領域をプリアロ
ケートするように構成されたプリアロケーションメカニ
ズムを、前記コンピュータに実行させるように構成され
たコンピュータで読み出し可能なプログラムコードデバ
イスとを更に備えていてもよい。
【0065】本発明は、コンパイラによってシングルベ
ーシックブロックループを最適化する経済的な方法、シ
ステム、装置、およびコンピュータプログラム製品を提
供する。本発明の1つの局面は、ターゲットプログラム
内の(シングルベーシックブロックループの特性を有す
る)ループを最適化するコンピュータ制御された方法で
ある。ターゲットプログラムは、命令のパイプライニン
グを促進する多数の計算ユニットを有するターゲットコ
ンピュータアーキテクチャーを目指す。多数の計算ユニ
ットにより、コンピュータアーキテクチャー内で単一ク
ロックサイクルで2つ以上の命令を発行することが可能
になる。シングルベーシックブロックループは反復コン
ストラクトを記述する。本発明のこの局面は、シングル
ベーシックブロックループステートメントが、アンスピ
ラブル資源のdefとなるボディステートメントを含む
ことを検出する。本発明は、反復コンストラクトのため
のcΩ値を決定し、このcΩ値を用いることによってd
efをデータ制約に変換する。最後に、本発明は反復コ
ンストラクトをスケジューリングする。
ーシックブロックループを最適化する経済的な方法、シ
ステム、装置、およびコンピュータプログラム製品を提
供する。本発明の1つの局面は、ターゲットプログラム
内の(シングルベーシックブロックループの特性を有す
る)ループを最適化するコンピュータ制御された方法で
ある。ターゲットプログラムは、命令のパイプライニン
グを促進する多数の計算ユニットを有するターゲットコ
ンピュータアーキテクチャーを目指す。多数の計算ユニ
ットにより、コンピュータアーキテクチャー内で単一ク
ロックサイクルで2つ以上の命令を発行することが可能
になる。シングルベーシックブロックループは反復コン
ストラクトを記述する。本発明のこの局面は、シングル
ベーシックブロックループステートメントが、アンスピ
ラブル資源のdefとなるボディステートメントを含む
ことを検出する。本発明は、反復コンストラクトのため
のcΩ値を決定し、このcΩ値を用いることによってd
efをデータ制約に変換する。最後に、本発明は反復コ
ンストラクトをスケジューリングする。
【0066】本発明の別の局面によれば、(シングルベ
ーシックブロックループの特性を有する)ループを最適
化するコンピュータシステムが開示される。このシステ
ムはメモリに接続したCPUを含む。コンピュータシス
テムはまた、コード生成部を有するコンパイラシステム
を含む。(ループを含む)ターゲットプログラムは、命
令のパイプライニングを促進する多数の計算ユニットを
有するターゲットコンピュータアーキテクチャーを目指
す。多数の計算ユニットにより、ターゲットコンピュー
タアーキテクチャー内で単一クロックサイクルで2つ以
上の命令を発行することが可能になる。シングルベーシ
ックブロックループは反復コンストラクトを記述する。
システムはまた、ループステートメントが、アンスピラ
ブル資源のdefとなるボディステートメントを含むこ
とを検出するループ検出メカニズムを含む。システムは
また、反復コンストラクトのための制御オメガの値を決
定する制御オメガ決定メカニズムを含む。システムはま
た、制御オメガの値を使用することによって、defを
データ制約に変換する変換メカニズムを含む。システム
は、スケジューリングメカニズムを使用することによっ
てデータ制約を用いて反復コンストラクトをスケジュー
リングする。
ーシックブロックループの特性を有する)ループを最適
化するコンピュータシステムが開示される。このシステ
ムはメモリに接続したCPUを含む。コンピュータシス
テムはまた、コード生成部を有するコンパイラシステム
を含む。(ループを含む)ターゲットプログラムは、命
令のパイプライニングを促進する多数の計算ユニットを
有するターゲットコンピュータアーキテクチャーを目指
す。多数の計算ユニットにより、ターゲットコンピュー
タアーキテクチャー内で単一クロックサイクルで2つ以
上の命令を発行することが可能になる。シングルベーシ
ックブロックループは反復コンストラクトを記述する。
システムはまた、ループステートメントが、アンスピラ
ブル資源のdefとなるボディステートメントを含むこ
とを検出するループ検出メカニズムを含む。システムは
また、反復コンストラクトのための制御オメガの値を決
定する制御オメガ決定メカニズムを含む。システムはま
た、制御オメガの値を使用することによって、defを
データ制約に変換する変換メカニズムを含む。システム
は、スケジューリングメカニズムを使用することによっ
てデータ制約を用いて反復コンストラクトをスケジュー
リングする。
【0067】本発明のさらに別の局面は、(シングルベ
ーシックブロックループの特性を有する)ループを最適
化する最適化装置である。装置はメモリに接続したCP
Uを含む。装置はまた、コード生成部を有するコンパイ
ラシステムを含む。(ループを含む)ターゲットプログ
ラムは、命令のパイプライニングを促進する多数の計算
ユニットを有するターゲットコンピュータアーキテクチ
ャーを目指す。多数の計算ユニットにより、ターゲット
コンピュータアーキテクチャー内で単一クロックサイク
ルで2つ以上の命令を発行することが可能になる。シン
グルベーシックブロックループは反復コンストラクトを
記述する。装置は、ループステートメントが、アンスピ
ラブル資源のdefとなるボディステートメントを含む
ことを検出するループ検出メカニズムを含む。装置はま
た、反復コンストラクトのための制御オメガの値を決定
する制御オメガ決定メカニズムを含む。装置はまた、制
御オメガの値を使用することによって、defをデータ
制約に変換する変換メカニズムを含む。システムは、ス
ケジューリングメカニズムを使用することによってデー
タ制約を用いて反復コンストラクトをスケジューリング
する。
ーシックブロックループの特性を有する)ループを最適
化する最適化装置である。装置はメモリに接続したCP
Uを含む。装置はまた、コード生成部を有するコンパイ
ラシステムを含む。(ループを含む)ターゲットプログ
ラムは、命令のパイプライニングを促進する多数の計算
ユニットを有するターゲットコンピュータアーキテクチ
ャーを目指す。多数の計算ユニットにより、ターゲット
コンピュータアーキテクチャー内で単一クロックサイク
ルで2つ以上の命令を発行することが可能になる。シン
グルベーシックブロックループは反復コンストラクトを
記述する。装置は、ループステートメントが、アンスピ
ラブル資源のdefとなるボディステートメントを含む
ことを検出するループ検出メカニズムを含む。装置はま
た、反復コンストラクトのための制御オメガの値を決定
する制御オメガ決定メカニズムを含む。装置はまた、制
御オメガの値を使用することによって、defをデータ
制約に変換する変換メカニズムを含む。システムは、ス
ケジューリングメカニズムを使用することによってデー
タ制約を用いて反復コンストラクトをスケジューリング
する。
【0068】本発明のさらに別の局面は、コンピュータ
が(シングルベーシックブロックループの特性を有す
る)ループを最適化するためにコンピュータで使用可能
な媒体に埋め込まれたコンピュータプログラム製品であ
る。コンピュータ上で実行されると、コンピュータ可読
コードによりコンピュータが、ループ検出メカニズム、
制御オメガ決定メカニズム、変換メカニズム、およびス
ケジューリングメカニズムを作動させる。これらのメカ
ニズムのそれぞれは、最適化装置のための上記の対応す
るメカニズムと同じ機能を有する。
が(シングルベーシックブロックループの特性を有す
る)ループを最適化するためにコンピュータで使用可能
な媒体に埋め込まれたコンピュータプログラム製品であ
る。コンピュータ上で実行されると、コンピュータ可読
コードによりコンピュータが、ループ検出メカニズム、
制御オメガ決定メカニズム、変換メカニズム、およびス
ケジューリングメカニズムを作動させる。これらのメカ
ニズムのそれぞれは、最適化装置のための上記の対応す
るメカニズムと同じ機能を有する。
【0069】本発明の別の局面は、(シングルベーシッ
クブロックループの特性を有する)ループを最適化する
コンピュータ制御された方法である。ターゲットプログ
ラムは、命令のパイプライニングを促進する多数の計算
ユニットを有するターゲットコンピュータアーキテクチ
ャーを目指す。多数の計算ユニットにより、コンピュー
タアーキテクチャー内で単一クロックサイクルで2つ以
上の命令を発行することが可能になる。シングルベーシ
ックブロックループは反復コンストラクトを記述する。
本発明は、ループステートメントがブロッキング処理を
引き起こす少なくとも1つのボディステートメントを含
むことを検出する。次に、本発明は、ブロッキング処理
のために予約される専用スケジューリング領域を予めア
ロケートする。本発明は、次に専用スケジューリング領
域内でブロッキング処理のスケジューリングを行う。
クブロックループの特性を有する)ループを最適化する
コンピュータ制御された方法である。ターゲットプログ
ラムは、命令のパイプライニングを促進する多数の計算
ユニットを有するターゲットコンピュータアーキテクチ
ャーを目指す。多数の計算ユニットにより、コンピュー
タアーキテクチャー内で単一クロックサイクルで2つ以
上の命令を発行することが可能になる。シングルベーシ
ックブロックループは反復コンストラクトを記述する。
本発明は、ループステートメントがブロッキング処理を
引き起こす少なくとも1つのボディステートメントを含
むことを検出する。次に、本発明は、ブロッキング処理
のために予約される専用スケジューリング領域を予めア
ロケートする。本発明は、次に専用スケジューリング領
域内でブロッキング処理のスケジューリングを行う。
【0070】本発明の別の局面によれば、(シングルベ
ーシックブロックループの特性を有する)ループを最適
化するコンピュータシステムが開示される。このシステ
ムはメモリに接続したCPUを含む。コンピュータシス
テムはまた、コード生成部を有するコンパイラシステム
を含む。(ループを含む)ターゲットプログラムは、命
令のパイプライニングを促進する多数の計算ユニットを
有するターゲットコンピュータアーキテクチャーを目指
す。多数の計算ユニットにより、ターゲットコンピュー
タアーキテクチャー内で単一クロックサイクルで2つ以
上の命令を発行することが可能になる。シングルベーシ
ックブロックループは反復コンストラクトを記述する。
システムは、コード生成部を有するコンパイラシステム
を含む。システムはまた、ループステートメント内に
(ブロッキング処理を引き起こす)ボディステートメン
トを検出するブロッキングステートメント検出メカニズ
ムを含む。システムは、少なくとも1つの専用スケジュ
ーリング領域を予めアロケートするアロケーションメカ
ニズムを含む。この予めアロケートされたスケジューリ
ング領域はブロッキング処理のために予約される。シス
テムはまた、専用スケジューリング領域内でブロッキン
グ処理のスケジューリングを行うメカニズムを含む。
ーシックブロックループの特性を有する)ループを最適
化するコンピュータシステムが開示される。このシステ
ムはメモリに接続したCPUを含む。コンピュータシス
テムはまた、コード生成部を有するコンパイラシステム
を含む。(ループを含む)ターゲットプログラムは、命
令のパイプライニングを促進する多数の計算ユニットを
有するターゲットコンピュータアーキテクチャーを目指
す。多数の計算ユニットにより、ターゲットコンピュー
タアーキテクチャー内で単一クロックサイクルで2つ以
上の命令を発行することが可能になる。シングルベーシ
ックブロックループは反復コンストラクトを記述する。
システムは、コード生成部を有するコンパイラシステム
を含む。システムはまた、ループステートメント内に
(ブロッキング処理を引き起こす)ボディステートメン
トを検出するブロッキングステートメント検出メカニズ
ムを含む。システムは、少なくとも1つの専用スケジュ
ーリング領域を予めアロケートするアロケーションメカ
ニズムを含む。この予めアロケートされたスケジューリ
ング領域はブロッキング処理のために予約される。シス
テムはまた、専用スケジューリング領域内でブロッキン
グ処理のスケジューリングを行うメカニズムを含む。
【0071】本発明のさらに別の局面によれば、(シン
グルベーシックブロックループの特性を有する)ループ
を最適化する最適化装置が開示される。装置はメモリに
接続したCPUを含む。装置はまた、コード生成部を有
するコンパイラシステムを含む。(ループを含む)ター
ゲットプログラムは、命令のパイプライニングを促進す
る多数の計算ユニットを有するターゲットコンピュータ
アーキテクチャーを目指す。多数の計算ユニットによ
り、ターゲットコンピュータアーキテクチャー内で単一
クロックサイクルで2つ以上の命令を発行することが可
能になる。シングルベーシックブロックループは反復コ
ンストラクトを記述する。装置は、コード生成部を有す
るコンパイラシステムを含む。装置はまた、ループステ
ートメント内に(ブロッキング処理を引き起こす)ボデ
ィステートメントを検出するブロッキングステートメン
ト検出メカニズムを含む。装置は、少なくとも1つの専
用スケジューリング領域を予めアロケートするアロケー
ションメカニズムを含む。この予めアロケートされたス
ケジューリング領域はブロッキング処理のために予約さ
れる。装置はまた、専用スケジューリング領域内でブロ
ッキング処理のスケジューリングを行うスケジューリン
グメカニズムを含む。
グルベーシックブロックループの特性を有する)ループ
を最適化する最適化装置が開示される。装置はメモリに
接続したCPUを含む。装置はまた、コード生成部を有
するコンパイラシステムを含む。(ループを含む)ター
ゲットプログラムは、命令のパイプライニングを促進す
る多数の計算ユニットを有するターゲットコンピュータ
アーキテクチャーを目指す。多数の計算ユニットによ
り、ターゲットコンピュータアーキテクチャー内で単一
クロックサイクルで2つ以上の命令を発行することが可
能になる。シングルベーシックブロックループは反復コ
ンストラクトを記述する。装置は、コード生成部を有す
るコンパイラシステムを含む。装置はまた、ループステ
ートメント内に(ブロッキング処理を引き起こす)ボデ
ィステートメントを検出するブロッキングステートメン
ト検出メカニズムを含む。装置は、少なくとも1つの専
用スケジューリング領域を予めアロケートするアロケー
ションメカニズムを含む。この予めアロケートされたス
ケジューリング領域はブロッキング処理のために予約さ
れる。装置はまた、専用スケジューリング領域内でブロ
ッキング処理のスケジューリングを行うスケジューリン
グメカニズムを含む。
【0072】本発明のさらに別の局面は、コンピュータ
が(シングルベーシックブロックループの特性を有す
る)ループを最適化するためにコンピュータで使用可能
な媒体に埋め込まれたコンピュータプログラム製品であ
る。コンピュータ上で実行されると、コンピュータ可読
コードによりコンピュータが、ブロッキングステートメ
ント検出メカニズム、アロケーションメカニズム、およ
びスケジューリングメカニズムを作動させる。これらの
メカニズムのそれぞれは、最適化装置のための上記の対
応するメカニズムと同じ機能を有する。
が(シングルベーシックブロックループの特性を有す
る)ループを最適化するためにコンピュータで使用可能
な媒体に埋め込まれたコンピュータプログラム製品であ
る。コンピュータ上で実行されると、コンピュータ可読
コードによりコンピュータが、ブロッキングステートメ
ント検出メカニズム、アロケーションメカニズム、およ
びスケジューリングメカニズムを作動させる。これらの
メカニズムのそれぞれは、最適化装置のための上記の対
応するメカニズムと同じ機能を有する。
【0073】本発明の上記のおよび多くの他の利点は、
図面で示される以下の好適な実施態様の詳細な説明を読
むことにより当業者にとっては明らかとなり得る。
図面で示される以下の好適な実施態様の詳細な説明を読
むことにより当業者にとっては明らかとなり得る。
【0074】
表記および術語 本発明およびその好適な実施形態の理解を助けるため
に、以下に「表記および術語」を示す。
に、以下に「表記および術語」を示す。
【0075】データ依存性グラフ−データ依存性グラフ
(DDG)は、ループ内のステートメントが他のステー
トメントにどのように依存するのかを表す、コンピュー
タメモリ内のデータ構造である。このグラフは、コンピ
ュータ処理を表すノードと、複数のノード間の依存性を
表すアークとを含む。この依存性には、フロー依存性(f
low dependency)、データ依存性および非依存性(anti-d
ependency)が含まれる。データ依存性グラフを表すコン
パイラ内のデータ構造は、ステートメントに対応するノ
ードとしての円およびノード間の依存性を表す弧(arc)
を用いた図によって表される場合が多い。
(DDG)は、ループ内のステートメントが他のステー
トメントにどのように依存するのかを表す、コンピュー
タメモリ内のデータ構造である。このグラフは、コンピ
ュータ処理を表すノードと、複数のノード間の依存性を
表すアークとを含む。この依存性には、フロー依存性(f
low dependency)、データ依存性および非依存性(anti-d
ependency)が含まれる。データ依存性グラフを表すコン
パイラ内のデータ構造は、ステートメントに対応するノ
ードとしての円およびノード間の依存性を表す弧(arc)
を用いた図によって表される場合が多い。
【0076】ループ−ループは、反復的なプロセスを記
述するプログラム言語コンストラクトであり、そのルー
プのボディ内のステートメントが、コンピュータによっ
て繰り返し実行される処理を規定する。つまり、コンパ
イルされたループがコンピュータ内で実行されたとき、
そのループはコンピュータに、何らかの完了条件(compl
etion condition)が満たされるまで、ループ内に含まれ
るステートメントによって記述される処理を反復的に行
わせるのである。そのようなものとして、ループステー
トメントは、ループのボディに含まれている他のステー
トメント(ボディステートメント)に連結した反復的制
御プロセスを提供する反復的コンストラクトを表す。本
発明によって最適化されるループは、シングルベーシッ
クブロックループ(single-basic-block-loop)(SBB
ループ)、即ち、制御フロー構造、ファンクション、プ
ロシージャ、あるいはループ内の実行の流れを変える他
のコンストラクトを全く含まないループに限定される。
このループ内には、入口、出口が1つしかなく、ブラン
チも全くない。
述するプログラム言語コンストラクトであり、そのルー
プのボディ内のステートメントが、コンピュータによっ
て繰り返し実行される処理を規定する。つまり、コンパ
イルされたループがコンピュータ内で実行されたとき、
そのループはコンピュータに、何らかの完了条件(compl
etion condition)が満たされるまで、ループ内に含まれ
るステートメントによって記述される処理を反復的に行
わせるのである。そのようなものとして、ループステー
トメントは、ループのボディに含まれている他のステー
トメント(ボディステートメント)に連結した反復的制
御プロセスを提供する反復的コンストラクトを表す。本
発明によって最適化されるループは、シングルベーシッ
クブロックループ(single-basic-block-loop)(SBB
ループ)、即ち、制御フロー構造、ファンクション、プ
ロシージャ、あるいはループ内の実行の流れを変える他
のコンストラクトを全く含まないループに限定される。
このループ内には、入口、出口が1つしかなく、ブラン
チも全くない。
【0077】ループ処理−ループ処理は、コンパイルさ
れ、得られたコンピュータ命令がコンピュータ上で実行
されたときに、コンピュータに、そのループ内に含まれ
る命令を反復的に実行させるものである。ループ内に含
まれる命令を一回繰り返すことが、そのループの一回の
反復(iteration)である。
れ、得られたコンピュータ命令がコンピュータ上で実行
されたときに、コンピュータに、そのループ内に含まれ
る命令を反復的に実行させるものである。ループ内に含
まれる命令を一回繰り返すことが、そのループの一回の
反復(iteration)である。
【0078】反復的コンストラクト−反復的コンストラ
クトは、ループステートメントとループに含まれるボデ
ィステートメントとによって定義されるループ処理を実
行する一連の処理である。
クトは、ループステートメントとループに含まれるボデ
ィステートメントとによって定義されるループ処理を実
行する一連の処理である。
【0079】命令−命令は、あるステートメントによっ
て記述された処理を実行する、ターゲットコンピュータ
アーキテクチャ用のコンパイルされた2進処理コード
(opコード)である。コンパイルされた1ステートメ
ントによって、複数の処理を記述して多数のコンピュー
タ命令を生成する場合も多い。
て記述された処理を実行する、ターゲットコンピュータ
アーキテクチャ用のコンパイルされた2進処理コード
(opコード)である。コンパイルされた1ステートメ
ントによって、複数の処理を記述して多数のコンピュー
タ命令を生成する場合も多い。
【0080】反復−反復は、コンピュータがループ内に
含まれる命令を実行する一回の繰り返しである。
含まれる命令を実行する一回の繰り返しである。
【0081】処理−処理は、1ステートメントによって
記述され、対応する中間コードによって表される。コン
パイラのコード生成部は、その中間コードによって記述
される処理を、ターゲットコンピュータアーキテクチャ
用の実行可能命令からなるシーケンスに変換する。これ
らの命令がターゲットコンピュータ上で実行されたとき
に、その処理が行われる。
記述され、対応する中間コードによって表される。コン
パイラのコード生成部は、その中間コードによって記述
される処理を、ターゲットコンピュータアーキテクチャ
用の実行可能命令からなるシーケンスに変換する。これ
らの命令がターゲットコンピュータ上で実行されたとき
に、その処理が行われる。
【0082】プロシージャ−プロシージャは、所望の結
果を導き出すステップからなるセルフコンシステントシ
ーケンス(self-consistent sequence)である。これらの
ステップは、物理量の物理的操作(physical manipulati
on)を必要とするステップである。通常、これらの量
は、格納、転送、結合(combined)、比較、あるいは操作
(manipulated)が可能な電気信号あるいは磁気信号の形
態ととる。これらの信号は、ビット、値、要素、記号、
文字、項(terms)、数等と呼ばれる。上記およびそれに
類似の用語は、全て上記物理量に関連するものであり、
単に便宜上これらの量に付けられたラベルであること
が、当業者には理解されるであろう。
果を導き出すステップからなるセルフコンシステントシ
ーケンス(self-consistent sequence)である。これらの
ステップは、物理量の物理的操作(physical manipulati
on)を必要とするステップである。通常、これらの量
は、格納、転送、結合(combined)、比較、あるいは操作
(manipulated)が可能な電気信号あるいは磁気信号の形
態ととる。これらの信号は、ビット、値、要素、記号、
文字、項(terms)、数等と呼ばれる。上記およびそれに
類似の用語は、全て上記物理量に関連するものであり、
単に便宜上これらの量に付けられたラベルであること
が、当業者には理解されるであろう。
【0083】概説 opコードを実行する際にコンピュータによって行われ
る操作は、加算(adding)あるいは比較(comparing)等
の、人間のオペレータの心の中で行われる処理(mental
operations)に共通に結びつく用語で呼ばれる場合が多
い。本発明の場合、ここに記載されるどの処理において
も、そのような人間のオペレータの能力を必要としな
い。上記の処理は、機械処理(machine operations)であ
る。本発明の処理を行うのに有用なマシンには、プログ
ラムされた汎用デジタルコンピュータあるいは同様のデ
バイスが含まれる。いずれの場合においても、演算の方
法は、コンピュータを操作する際の操作の方法と区別さ
れる。本発明は、電気的なあるいは他の(機械的、化学
的な)物理信号を処理して他の所望の物理信号を生成す
る際のコンピュータ操作の方法ステップに関する。
る操作は、加算(adding)あるいは比較(comparing)等
の、人間のオペレータの心の中で行われる処理(mental
operations)に共通に結びつく用語で呼ばれる場合が多
い。本発明の場合、ここに記載されるどの処理において
も、そのような人間のオペレータの能力を必要としな
い。上記の処理は、機械処理(machine operations)であ
る。本発明の処理を行うのに有用なマシンには、プログ
ラムされた汎用デジタルコンピュータあるいは同様のデ
バイスが含まれる。いずれの場合においても、演算の方
法は、コンピュータを操作する際の操作の方法と区別さ
れる。本発明は、電気的なあるいは他の(機械的、化学
的な)物理信号を処理して他の所望の物理信号を生成す
る際のコンピュータ操作の方法ステップに関する。
【0084】本発明は、これらの処理を行うための装置
にも関する。この装置は、要求される目的に応じて特別
に構築されてもよく、あるいは、コンピュータのメモリ
に格納されたコンピュータプログラムによって選択的に
アクティベートあるいは再構成(reconfigure)される汎
用コンピュータを含み得る。ここに示されるプロシージ
ャは、特定のコンピュータあるいはその他の装置に特有
のものではない。具体的には、本発明の教示内容に従っ
て書かれたプログラムについて、様々な汎用マシンを用
いることが可能である。あるいは、要求される方法ステ
ップを行うより専門化された装置を構築する方が簡便で
あるかもしれない。多岐にわたるこれらのマシンに要求
される構造を以下の説明に示す。また、本発明は、コン
ピュータにプログラム化ロジックを実行させるためのプ
ログラムをコード化したコンピュータ可読格納媒体とし
ても具現化され得る。
にも関する。この装置は、要求される目的に応じて特別
に構築されてもよく、あるいは、コンピュータのメモリ
に格納されたコンピュータプログラムによって選択的に
アクティベートあるいは再構成(reconfigure)される汎
用コンピュータを含み得る。ここに示されるプロシージ
ャは、特定のコンピュータあるいはその他の装置に特有
のものではない。具体的には、本発明の教示内容に従っ
て書かれたプログラムについて、様々な汎用マシンを用
いることが可能である。あるいは、要求される方法ステ
ップを行うより専門化された装置を構築する方が簡便で
あるかもしれない。多岐にわたるこれらのマシンに要求
される構造を以下の説明に示す。また、本発明は、コン
ピュータにプログラム化ロジックを実行させるためのプ
ログラムをコード化したコンピュータ可読格納媒体とし
ても具現化され得る。
【0085】使用環境 本発明は、ループコンストラクトを用いるあらゆるプロ
グラム言語において実施可能である。そのようなプログ
ラム言語の一例を挙げると、FORTRAN、PASC
AL、C、C++、ADA、およびコンパイルされたB
ASIC等があるが、これらの言語に限定されない。C
およびC++によるループコンストラクトの具体例に
は、「for」、「do−while」および「whi
le」ステートメントがある。本発明によって提供され
る最適化は、シングルベーシックブロックループに適用
される。このループ内には、入口、出口が1つしかな
く、実行のフローのブランチング(branching)も全くな
い。
グラム言語において実施可能である。そのようなプログ
ラム言語の一例を挙げると、FORTRAN、PASC
AL、C、C++、ADA、およびコンパイルされたB
ASIC等があるが、これらの言語に限定されない。C
およびC++によるループコンストラクトの具体例に
は、「for」、「do−while」および「whi
le」ステートメントがある。本発明によって提供され
る最適化は、シングルベーシックブロックループに適用
される。このループ内には、入口、出口が1つしかな
く、実行のフローのブランチング(branching)も全くな
い。
【0086】図3に、コンパイラアプリケーションをサ
ポートするように構成されたコンピュータシステムの構
成要素のいくつかを参照符号301で示す。コンピュータ
システム301は、入力/出力(I/O)部305と中央処理装置
(CPU)307とメモリ部309とを含むプロセッサ303を有す
る。I/O部305は、キーボード311、ディスク格納ユニッ
ト313、ディスプレイユニット315、およびCD-ROMドライ
ブユニット317に接続されている。CD-ROMユニット317
は、典型的にはプログラムおよびデータ321を含むCD-RO
M媒体319を読み出すことができる。CD-ROM媒体319をロ
ードされたときのCD-ROMドライブユニット317とディス
ク格納ユニット313とはファイル格納メカニズムを構成
する。このようなコンピュータシステムは、本発明を具
現化するコンパイラアプリケーションを実行することが
できる。
ポートするように構成されたコンピュータシステムの構
成要素のいくつかを参照符号301で示す。コンピュータ
システム301は、入力/出力(I/O)部305と中央処理装置
(CPU)307とメモリ部309とを含むプロセッサ303を有す
る。I/O部305は、キーボード311、ディスク格納ユニッ
ト313、ディスプレイユニット315、およびCD-ROMドライ
ブユニット317に接続されている。CD-ROMユニット317
は、典型的にはプログラムおよびデータ321を含むCD-RO
M媒体319を読み出すことができる。CD-ROM媒体319をロ
ードされたときのCD-ROMドライブユニット317とディス
ク格納ユニット313とはファイル格納メカニズムを構成
する。このようなコンピュータシステムは、本発明を具
現化するコンパイラアプリケーションを実行することが
できる。
【0087】図4は、本発明を用いる修正されたコード
生成プロセスを示し、上記プロセスを参照符号270'で示
す。図4は図2dに類似であり、図2dに示す構成要素と同
一のものには同一の参照符号を付し、対応するものには
同一の参照符号にダッシュ(’)を付けたものを付す。
従って、図4の「開始」ターミナル271'は、図2dの「開
始」ターミナル271に対応する。「MRTを初期化する」プ
ロシージャ272'は、本発明の複数の局面を用いており、
以下に述べる。「最適化」プロシージャ273'は、図2dの
「最適化」プロシージャ273と同一の動作を提供する。
さらに、決定プロシージャ275'および「非SBBループス
ケジューリング」プロシージャ277'は、図2dの対応する
プロシージャ275および277と同一の動作を有する。
生成プロセスを示し、上記プロセスを参照符号270'で示
す。図4は図2dに類似であり、図2dに示す構成要素と同
一のものには同一の参照符号を付し、対応するものには
同一の参照符号にダッシュ(’)を付けたものを付す。
従って、図4の「開始」ターミナル271'は、図2dの「開
始」ターミナル271に対応する。「MRTを初期化する」プ
ロシージャ272'は、本発明の複数の局面を用いており、
以下に述べる。「最適化」プロシージャ273'は、図2dの
「最適化」プロシージャ273と同一の動作を提供する。
さらに、決定プロシージャ275'および「非SBBループス
ケジューリング」プロシージャ277'は、図2dの対応する
プロシージャ275および277と同一の動作を有する。
【0088】本発明を利用する、修正された「SBBルー
プSWパイプライニング」プロシージャ281'は、「述語De
fのためのcΩを決定」するプロシージャ401を含む。プ
ロシージャ401は、述語レジスタのための制御オメガ
(cΩ)を決定するものであり、以下に述べる。一旦述
語レジスタがDDG内のDefに追加されたcΩアーク(述語
アーク)を有すると、プロセスは「最小のIIを決定」す
るプロセス403に進み、そこでcΩアークを考慮してMII
を生成する。次いで、プロセス270'は、「ループをスケ
ジューリング」するプロシージャ405に進み、そこで、
良く知られたスケジューリング技術と本発明による技術
との両方を適用してループをDDGにスケジューリングす
る(以下に記載)。
プSWパイプライニング」プロシージャ281'は、「述語De
fのためのcΩを決定」するプロシージャ401を含む。プ
ロシージャ401は、述語レジスタのための制御オメガ
(cΩ)を決定するものであり、以下に述べる。一旦述
語レジスタがDDG内のDefに追加されたcΩアーク(述語
アーク)を有すると、プロセスは「最小のIIを決定」す
るプロセス403に進み、そこでcΩアークを考慮してMII
を生成する。次いで、プロセス270'は、「ループをスケ
ジューリング」するプロシージャ405に進み、そこで、
良く知られたスケジューリング技術と本発明による技術
との両方を適用してループをDDGにスケジューリングす
る(以下に記載)。
【0089】修正された「仮想レジスタ拡張」プロシー
ジャ279'は、「DDG用」プロシージャ407においてDDGを
加工する。このプロシージャはDDG内の各アークおよび
ノードを加工する。DDGが完全に加工されると、プロセ
スは、矢印408で示すように「コード生成」プロシージ
ャ283'に進む。上述したように、コンパイラはDDG上の
各アークおよびノードを加工する。「アークタイプを選
択」するプロシージャ409は、アークのタイプを調べて
適切なプロシージャを選択する。アークが述語アークで
ない場合、プロセス270'は、物理的レジスタを仮想レジ
スタにアロケートする「他のアークを加工」するプロシ
ージャ411に進む。しかし、アークが述語アークである
場合、プロセス270'は以下に述べる「述語アークを加
工」するプロシージャ413に進む。各アークが適切なプ
ロシージャ411または413によって加工された後、プロセ
スは「DDG用」プロシージャ407に戻ってDDGの加工を続
ける。
ジャ279'は、「DDG用」プロシージャ407においてDDGを
加工する。このプロシージャはDDG内の各アークおよび
ノードを加工する。DDGが完全に加工されると、プロセ
スは、矢印408で示すように「コード生成」プロシージ
ャ283'に進む。上述したように、コンパイラはDDG上の
各アークおよびノードを加工する。「アークタイプを選
択」するプロシージャ409は、アークのタイプを調べて
適切なプロシージャを選択する。アークが述語アークで
ない場合、プロセス270'は、物理的レジスタを仮想レジ
スタにアロケートする「他のアークを加工」するプロシ
ージャ411に進む。しかし、アークが述語アークである
場合、プロセス270'は以下に述べる「述語アークを加
工」するプロシージャ413に進む。各アークが適切なプ
ロシージャ411または413によって加工された後、プロセ
スは「DDG用」プロシージャ407に戻ってDDGの加工を続
ける。
【0090】「コード生成」プロシージャ283'は、図2d
の「コード生成」プロシージャ283と同一の動作を提供
する。プロセス270'は、「終了」ターミナル285'を介し
て終了する。
の「コード生成」プロシージャ283と同一の動作を提供
する。プロセス270'は、「終了」ターミナル285'を介し
て終了する。
【0091】図5は、図4の「述語DefのためのcΩを
決定」するプロシージャ401内で用いられるプロセスを
示す。図5に示すプロセスは、参照符号500で示す。プ
ロセス500は、「開始」ターミナル501で初期化されて、
「すべての異なる述語定義命令を識別する」プロシージ
ャ503に進む。プロシージャ503は、ループ内の命令を評
価して異なる述語定義命令−−特定の述語レジスタを識
別する。述語レジスタの複数の矛盾しない定義が許可さ
れ、1つの述語レジスタのみが定義される結果となる
(すなわち、1つの述語レジスタのみが書き込まれ
る)。値NDEFは、ループ内で定義された述語レジスタの
数(すなわち、ループ内部で設定されている述語レジス
タの数)である。「使用可能な述語レジスタの数を決
定」するプロシージャ505において、プロセス500はルー
プ内の命令に使用可能な述語レジスタの数、−−フリー
な述語レジスタの数を決定する。この正またはゼロの値
はNREGである。NREGは、述語レジスタの総数からループ
全体からNDEFを差し引いた範囲を有するライブな(使用
中の)述語レジスタ数を差し引き、その数からさらにND
EFを差し引いたものである。すなわち、拡張のために使
用可能な述語レジスタの数は、 NREG = Total#PredRegs - #LiveRegsAroundLoop - NDEF である。
決定」するプロシージャ401内で用いられるプロセスを
示す。図5に示すプロセスは、参照符号500で示す。プ
ロセス500は、「開始」ターミナル501で初期化されて、
「すべての異なる述語定義命令を識別する」プロシージ
ャ503に進む。プロシージャ503は、ループ内の命令を評
価して異なる述語定義命令−−特定の述語レジスタを識
別する。述語レジスタの複数の矛盾しない定義が許可さ
れ、1つの述語レジスタのみが定義される結果となる
(すなわち、1つの述語レジスタのみが書き込まれ
る)。値NDEFは、ループ内で定義された述語レジスタの
数(すなわち、ループ内部で設定されている述語レジス
タの数)である。「使用可能な述語レジスタの数を決
定」するプロシージャ505において、プロセス500はルー
プ内の命令に使用可能な述語レジスタの数、−−フリー
な述語レジスタの数を決定する。この正またはゼロの値
はNREGである。NREGは、述語レジスタの総数からループ
全体からNDEFを差し引いた範囲を有するライブな(使用
中の)述語レジスタ数を差し引き、その数からさらにND
EFを差し引いたものである。すなわち、拡張のために使
用可能な述語レジスタの数は、 NREG = Total#PredRegs - #LiveRegsAroundLoop - NDEF である。
【0092】次に、「cΩを決定」するプロシージャ50
7において、プロセスは、制御オメガ(cΩ)を cΩ = floor(NREG/NDEF)+1 と決定する。
7において、プロセスは、制御オメガ(cΩ)を cΩ = floor(NREG/NDEF)+1 と決定する。
【0093】cΩの値は、NREG/NDEFの値に1を加えた
もの以下のうち、最も大きい整数である。従って、ター
ゲットコンピュータアーキテクチャが4つの述語レジス
タを提供し且つ1つの述語レジスタのみがループ内で用
いられる場合、cΩは4に等しく、アーキテクチャは4
つの同時反復をサポートする。しかし、cΩが1に等し
い場合(3つまたは4つの述語レジスタがループに必要
な場合など)、ループの1つの反復のみが許可される。
もの以下のうち、最も大きい整数である。従って、ター
ゲットコンピュータアーキテクチャが4つの述語レジス
タを提供し且つ1つの述語レジスタのみがループ内で用
いられる場合、cΩは4に等しく、アーキテクチャは4
つの同時反復をサポートする。しかし、cΩが1に等し
い場合(3つまたは4つの述語レジスタがループに必要
な場合など)、ループの1つの反復のみが許可される。
【0094】次に、「ループ内の各Def用」プロシージ
ャ509において、プロセスは、ループ内の各Defを調査す
る。ループ内の全てのDefが調査された後、プロセスは
「終了」ターミナル511を介して終了する。従って、ル
ープ内の各Defについて、決定プロシージャ513が述語レ
ジスタDefであるか否かを決定する。決定プロシージャ5
13が、Defが述語レジスタDefでないと決定した場合、プ
ロセスは「ループ内の各Def用」プロシージャ509により
ループ内の次のDefに進む。しかし、決定プロシージャ5
13が、Defが述語レジスタDefであると決定した場合、プ
ロセスは「DefにcΩアークを加える」プロシージャ515
に進む。プロシージャ515は、アークの依存性距離(depe
ndency distance)が制御オメガcΩの値であるDefに自
己出力アーク517を追加する。自己出力アーク517の追加
により、リソース制約条件(constraint)がデータ依存性
制約条件に変換される。プロセス500はプロシージャ509
に進んで、ループ内の次のDefに進む。このプロセスの
結果、レジスタスピリング(register spilling)のない
述語レジスタのアロケーションを保証するループのスケ
ジューリングができる。
ャ509において、プロセスは、ループ内の各Defを調査す
る。ループ内の全てのDefが調査された後、プロセスは
「終了」ターミナル511を介して終了する。従って、ル
ープ内の各Defについて、決定プロシージャ513が述語レ
ジスタDefであるか否かを決定する。決定プロシージャ5
13が、Defが述語レジスタDefでないと決定した場合、プ
ロセスは「ループ内の各Def用」プロシージャ509により
ループ内の次のDefに進む。しかし、決定プロシージャ5
13が、Defが述語レジスタDefであると決定した場合、プ
ロセスは「DefにcΩアークを加える」プロシージャ515
に進む。プロシージャ515は、アークの依存性距離(depe
ndency distance)が制御オメガcΩの値であるDefに自
己出力アーク517を追加する。自己出力アーク517の追加
により、リソース制約条件(constraint)がデータ依存性
制約条件に変換される。プロセス500はプロシージャ509
に進んで、ループ内の次のDefに進む。このプロセスの
結果、レジスタスピリング(register spilling)のない
述語レジスタのアロケーションを保証するループのスケ
ジューリングができる。
【0095】図6は、図4の「述語アークを加工」する
プロシージャ413を示す。このプロシージャは、参照符
号600で示す。プロシージャ600は、「開始」ターミナル
601で初期化されて、中間表現内の各ループを反復する
「各ループ用」プロシージャ603に進む。全てのループ
が加工された後、プロシージャは、「終了」ターミナル
605を介して終了する。
プロシージャ413を示す。このプロシージャは、参照符
号600で示す。プロシージャ600は、「開始」ターミナル
601で初期化されて、中間表現内の各ループを反復する
「各ループ用」プロシージャ603に進む。全てのループ
が加工された後、プロシージャは、「終了」ターミナル
605を介して終了する。
【0096】各ループについて、プロシージャ600は、
「未使用の述語レジスタを決定」するプロシージャ607
に進み、そこで拡張のために使用可能な未使用の述語レ
ジスタの数を決定する。この決定は、上記した「使用可
能な述語レジスタの数を決定」するプロシージャ505で
行った決定と同様である。その後、上記した「cΩを決
定」するプロシージャ507に類似の「cΩを決定」する
プロシージャ609において、プロシージャ600は、処理中
のループのためのcΩを決定する。次いで、プロシージ
ャ600は、述語レジスタを表す各Defのためのループを表
すDDGをスキャンする「述語レジスタの各Def用」プロシ
ージャ611に進む。ループ全体が一旦走査されて各述語D
efが加工されると、プロシージャ611は矢印613で示すよ
うに「各ループ用」プロシージャ603を介して終了す
る。
「未使用の述語レジスタを決定」するプロシージャ607
に進み、そこで拡張のために使用可能な未使用の述語レ
ジスタの数を決定する。この決定は、上記した「使用可
能な述語レジスタの数を決定」するプロシージャ505で
行った決定と同様である。その後、上記した「cΩを決
定」するプロシージャ507に類似の「cΩを決定」する
プロシージャ609において、プロシージャ600は、処理中
のループのためのcΩを決定する。次いで、プロシージ
ャ600は、述語レジスタを表す各Defのためのループを表
すDDGをスキャンする「述語レジスタの各Def用」プロシ
ージャ611に進む。ループ全体が一旦走査されて各述語D
efが加工されると、プロシージャ611は矢印613で示すよ
うに「各ループ用」プロシージャ603を介して終了す
る。
【0097】各述語Defは、「可能なレジスタ拡張の
テーブルを生成」するプロシージャ615で処理され、
このプロシージャにより長さベクトルcΩのテーブルが
作成される。このテーブルは、述語レジスタを、同時に
実行する反復の各々に用いられる拡張された仮想レジス
タ名称に関連付ける。このように、(他のバウンド(bo
unds)が同時に実行する反復の数を4未満に制限しない
と仮定すると)ループ(cΩ=4)に必要な述語レジス
タが1つだけであれば、このテーブルは、同時に実行す
る4つの反復の各々に用いられる述語レジスタを関連付
ける。
テーブルを生成」するプロシージャ615で処理され、
このプロシージャにより長さベクトルcΩのテーブルが
作成される。このテーブルは、述語レジスタを、同時に
実行する反復の各々に用いられる拡張された仮想レジス
タ名称に関連付ける。このように、(他のバウンド(bo
unds)が同時に実行する反復の数を4未満に制限しない
と仮定すると)ループ(cΩ=4)に必要な述語レジス
タが1つだけであれば、このテーブルは、同時に実行す
る4つの反復の各々に用いられる述語レジスタを関連付
ける。
【0098】「レジスタ拡張をそれぞれのDefに割り
当てる」プロシージャ617において、このプロセス
は、プロシージャ615で生成された可能な拡張のテー
ブルを用いて、同時に実行する反復の各々のための各D
efに述語レジスタを割り当てる。その後、Defに割
り当てられた述語レジスタが、「Defの使用を伝播さ
せる」プロシージャ619による各反復についての独立
したDefの使用に伝播され、プロセスは矢印621で
示すようにプロシージャ611に戻り、次のDefを処
理する。
当てる」プロシージャ617において、このプロセス
は、プロシージャ615で生成された可能な拡張のテー
ブルを用いて、同時に実行する反復の各々のための各D
efに述語レジスタを割り当てる。その後、Defに割
り当てられた述語レジスタが、「Defの使用を伝播さ
せる」プロシージャ619による各反復についての独立
したDefの使用に伝播され、プロセスは矢印621で
示すようにプロシージャ611に戻り、次のDefを処
理する。
【0099】このように、アンスピラブル(unspillabl
e)リソースによって許可される同時に実行する反復の
数を示すcΩを決定し、アンスピラブルリソースにアク
セスするDefにオーダcΩの自己出力アークを取り付
けることによって、リソースはデータ制約条件に変換さ
れる。
e)リソースによって許可される同時に実行する反復の
数を示すcΩを決定し、アンスピラブルリソースにアク
セスするDefにオーダcΩの自己出力アークを取り付
けることによって、リソースはデータ制約条件に変換さ
れる。
【0100】したがって、cΩは、(アンスピラブル述
語レジスタなどの)リソース制約条件をデータリカーレ
ンス制約条件(data recurrence constraint)に変換す
る。このデータリカーレンス制約条件により、同時に実
行する反復の数が制限される(ただし、同時に実行する
反復の数がまだあまりきつく制限されていない場合)。
この技術により、コンパイラのスケジューリングセグメ
ントが、利用可能なアンスピラブルリソースに依存して
レジスタの拡張を適切に制限することができるようにな
る。
語レジスタなどの)リソース制約条件をデータリカーレ
ンス制約条件(data recurrence constraint)に変換す
る。このデータリカーレンス制約条件により、同時に実
行する反復の数が制限される(ただし、同時に実行する
反復の数がまだあまりきつく制限されていない場合)。
この技術により、コンパイラのスケジューリングセグメ
ントが、利用可能なアンスピラブルリソースに依存して
レジスタの拡張を適切に制限することができるようにな
る。
【0101】図7aおよび図7bは、MRTを細分化す
るため、IIを増加させる必要がない除算および平方根の
演算などのモジュロスケジュールブロッキング処理を行
うプロセスを示している。このプロセスは、ループにお
けるブロッキング処理のためにMRTのスペースを予め
予約し、その後の非ブロッキング処理スケジューリング
処理では、スケジュールを可能するようにIIを増加させ
なければならない程度にはMRTを細分化しないように
する。
るため、IIを増加させる必要がない除算および平方根の
演算などのモジュロスケジュールブロッキング処理を行
うプロセスを示している。このプロセスは、ループにお
けるブロッキング処理のためにMRTのスペースを予め
予約し、その後の非ブロッキング処理スケジューリング
処理では、スケジュールを可能するようにIIを増加させ
なければならない程度にはMRTを細分化しないように
する。
【0102】図7aは、参照番号700で一般に示すよ
うなループに関して、MRTを初期化するために用いら
れるプロセスを示している。このプロセスは、図4のM
RT初期化プロシージャ272’によって起こる。この
プロセスは、「開始」ターミナル701で始まり、プロ
シージャ703に続き、このプロシージャ703でルー
プ中のブロッキング処理数が決定される。「モジューロ
予約テーブルを生成」するプロシージャ705では、プ
ロシージャ703で決定された値を用い、ループのIIに
適切なように十分なスロットを有するモジュロ予約テー
ブル(MRT)を作成する。次に、プロセスは、プロシ
ージャ707に続き、このプロシージャ707で、MR
T中の専用スケジューリング領域(すなわち、連続する
スロット)をプリアロケート(予約)して、ループ内に
ブロッキング処理を含むようにする。ブロッキング処理
に関してMRTの専用スケジューリング領域をプリアロ
ケートることによって、その後のパイプライン処理がこ
れらの予約されたスケジューリング領域でスケジューリ
ングされなくなる。したがって、パイプライン処理のた
め、ブロッキング処理のスケジューリングはその後のM
RT細分化による影響を受けない。当業者は、専用スケ
ジューリング領域が、特定のブロッキング処理専用では
なく、グループとしてのブロッキング処理専用とされる
ことを理解するだろう。最後に、プロセスは、「終了」
ターミナル709で終了する。
うなループに関して、MRTを初期化するために用いら
れるプロセスを示している。このプロセスは、図4のM
RT初期化プロシージャ272’によって起こる。この
プロセスは、「開始」ターミナル701で始まり、プロ
シージャ703に続き、このプロシージャ703でルー
プ中のブロッキング処理数が決定される。「モジューロ
予約テーブルを生成」するプロシージャ705では、プ
ロシージャ703で決定された値を用い、ループのIIに
適切なように十分なスロットを有するモジュロ予約テー
ブル(MRT)を作成する。次に、プロセスは、プロシ
ージャ707に続き、このプロシージャ707で、MR
T中の専用スケジューリング領域(すなわち、連続する
スロット)をプリアロケート(予約)して、ループ内に
ブロッキング処理を含むようにする。ブロッキング処理
に関してMRTの専用スケジューリング領域をプリアロ
ケートることによって、その後のパイプライン処理がこ
れらの予約されたスケジューリング領域でスケジューリ
ングされなくなる。したがって、パイプライン処理のた
め、ブロッキング処理のスケジューリングはその後のM
RT細分化による影響を受けない。当業者は、専用スケ
ジューリング領域が、特定のブロッキング処理専用では
なく、グループとしてのブロッキング処理専用とされる
ことを理解するだろう。最後に、プロセスは、「終了」
ターミナル709で終了する。
【0103】図7bは、参照番号750で一般的に示す
ようなスケジュールブロッキング処理に用いられるプロ
セスを示す。このプロセスは、図4の「スケジュールル
ープ」プロセス405によって起こり、「開始」ターミ
ナル751を介して始まる。このプロセスは、「各処理
用」のプロシージャ753で始まるループ中の各処理を
検査する。以下に示すようにすべてのループ処理の処理
が終わると、プロセスは「終了」ターミナル755で終
了する。
ようなスケジュールブロッキング処理に用いられるプロ
セスを示す。このプロセスは、図4の「スケジュールル
ープ」プロセス405によって起こり、「開始」ターミ
ナル751を介して始まる。このプロセスは、「各処理
用」のプロシージャ753で始まるループ中の各処理を
検査する。以下に示すようにすべてのループ処理の処理
が終わると、プロセスは「終了」ターミナル755で終
了する。
【0104】「ブロッキング処理」決定プロシージャ7
57で各処理が評価され、その処理がブロッキング処理
であるか非ブロッキング処理であるかが決定される。処
理が非ブロッキング処理である場合、プロセスは、処理
のモジュロスケジューリングを行う「スケジュール処
理」プロシージャ759に続く。しかし、処理がブロッ
キング処理である場合、プロセス750は決定プロシー
ジャ757からプロシージャ761に続き、このプロシ
ージャ761で、ブロッキング処理をスケジューリング
するのに利用できる予約済みのMRTに最も早い処理が
配置される。一旦このMRTのロケーションを発見する
と、このプロセスはプロシージャ763に続き、このプ
ロシージャ763で、このMRTの最も早く予約された
領域内で処理をスケジューリングする。次に、「MRT
を更新」するプロシージャ765で、プロセスは、用い
られているブロッキング命令によって今占有されている
予約領域をマークし、「各処理用」のプロシージャ75
3でこのプロセスが継続して行われる。
57で各処理が評価され、その処理がブロッキング処理
であるか非ブロッキング処理であるかが決定される。処
理が非ブロッキング処理である場合、プロセスは、処理
のモジュロスケジューリングを行う「スケジュール処
理」プロシージャ759に続く。しかし、処理がブロッ
キング処理である場合、プロセス750は決定プロシー
ジャ757からプロシージャ761に続き、このプロシ
ージャ761で、ブロッキング処理をスケジューリング
するのに利用できる予約済みのMRTに最も早い処理が
配置される。一旦このMRTのロケーションを発見する
と、このプロセスはプロシージャ763に続き、このプ
ロシージャ763で、このMRTの最も早く予約された
領域内で処理をスケジューリングする。次に、「MRT
を更新」するプロシージャ765で、プロセスは、用い
られているブロッキング命令によって今占有されている
予約領域をマークし、「各処理用」のプロシージャ75
3でこのプロセスが継続して行われる。
【0105】上述の本発明が、コンパイラの最適化能力
を向上する方法、装置、システム、およびコンピュータ
によりプログラムされたプロダクトを教示していること
は当業者には明らかである。
を向上する方法、装置、システム、およびコンピュータ
によりプログラムされたプロダクトを教示していること
は当業者には明らかである。
【0106】以上、本発明を現在好ましい実施形態につ
いて説明したが、本発明の範囲から逸脱することなく種
々の変形例および変更例をなすことができることは当業
者に明らかである。したがって、本発明の範囲はここで
説明した特定の実施形態に限定されるのではなく、前掲
の特許請求の範囲およびその均等物によってのみ規定さ
れる。
いて説明したが、本発明の範囲から逸脱することなく種
々の変形例および変更例をなすことができることは当業
者に明らかである。したがって、本発明の範囲はここで
説明した特定の実施形態に限定されるのではなく、前掲
の特許請求の範囲およびその均等物によってのみ規定さ
れる。
【図1】コンパイラ機構を示す図である。
【図2a】従来の最適化技術を示す図である。
【図2b】従来の最適化技術を示す図である。
【図2c】従来の最適化技術を示す図である。
【図2d】従来の最適化技術を示す図である。
【図3】好適な実施形態によるコンパイラアプリケーシ
ョンをサポートするように構成されたコンピュータシス
テムの構成要素を示す図である。
ョンをサポートするように構成されたコンピュータシス
テムの構成要素を示す図である。
【図4】好適な実施形態による変形コード生成プロセス
を示す図である。
を示す図である。
【図5】好適な実施形態によるアンスピラブル述語レジ
スタ定義の制御オメガ(cΩ)を決定するプロセスを示
す図である。
スタ定義の制御オメガ(cΩ)を決定するプロセスを示
す図である。
【図6】好適な実施形態による、述語レジスタを定義に
割り当てるのに用いられるプロセスを示す図である。
割り当てるのに用いられるプロセスを示す図である。
【図7a】好適な実施形態による、ブロッキング命令を
スケジューリングするのに用いられるプロセスを示す図
である。
スケジューリングするのに用いられるプロセスを示す図
である。
【図7b】好適な実施形態による、ブロッキング命令を
スケジューリングするのに用いられるプロセスを示す図
である。
スケジューリングするのに用いられるプロセスを示す図
である。
301 コンピュータシステム 303 プロセッサ 305 I/O部 307 CPU 309 メモリ 311 キーボード 313 ディスク格納ユニット 315 ディスプレイユニット 317 CD−ROMドライブユニット 319 CD−ROM媒体 321 プログラムおよびデータ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クリシュナ サブラマニアン アメリカ合衆国 カリフォルニア 95014, クパーティノ, ナンバー630, バレ ー グリーン 20990
Claims (32)
- 【請求項1】 命令のパイプライン化を容易化し且つ2
つ以上の命令が単一のクロックサイクルで発せられるこ
とを可能にする複数の並列計算ユニットを有するターゲ
ットコンピュータアーキテクチャに向けられたターゲッ
トプログラムの内部でループステートメントを最適化す
るコンピュータ制御の方法であって、 該ループステートメントは反復的コンストラクトを記述
し、該ループステートメントはシングルベーシックブロ
ックループの特徴を有しており、該方法が、 (a)該ループステートメントがアンスピラブル(unspi
llable)リソースのdefをもたらす少なくとも1つの
ボディステートメントを含むことを検出するステップ
と、 (b)該反復的コンストラクトのための制御オメガ値を
決定するステップと、 (c)該defを該制御オメガ値を使用するデータ制約
条件に変換するステップと、 (d)該反復的コンストラクトをスケジューリングする
ステップと、を包含する、コンピュータ制御の方法。 - 【請求項2】 (e)前記アンスピラブルリソースを前
記データ制約条件に依存してアロケートするステップを
更に包含する、請求項1に記載のコンピュータ制御の方
法。 - 【請求項3】 前記アンスピラブルリソースが述語レジ
スタである、請求項2に記載のコンピュータ制御の方
法。 - 【請求項4】 前記ループステートメントがデータ依存
性グラフをもたらし、前記defは該データ依存性グラ
フの中のdefノードによって表現されており、前記ス
テップ(c)が、 (c1)自己出力アークを該defノードに加えるステ
ップと、 (c2)前記制御オメガ値を該自己出力アークに割り当
てるステップと、を更に包含する、請求項2に記載のコ
ンピュータ制御の方法。 - 【請求項5】 前記データ依存性グラフが、アークによ
って前記defノードに接続された使用ノードを更に備
えており、前記ステップ(e)が、 (e1)複数の使用可能なアンスピラブルリソースを決
定するステップと、 (e2)該複数の使用可能なアンスピラブルリソースの
うちの第1のアンスピラブルリソースを該defノード
に割り当てるステップと、 (e3)該第1のアンスピラブルリソースを該defノ
ードから該使用ノードへ伝播させるステップと、を更に
包含する、請求項4に記載のコンピュータ制御の方法。 - 【請求項6】 前記ステップ(b)が、 (b1)前記反復的コンストラクトによって使用される
異なるアンスピラブルリソースの数を決定するステップ
と、 (b2)該反復的コンストラクトによる使用のために使
用可能な、使用可能なアンスピラブルリソースの数を決
定するステップと、 (b3)該異なるアンスピラブルリソースの数と該使用
可能なアンスピラブルリソースの数とから前記制御オメ
ガ値を決定するステップと、を更に包含する、請求項1
に記載のコンピュータ制御の方法。 - 【請求項7】 命令のパイプライン化を容易化し且つ2
つ以上の命令が単一のクロックサイクルで発せられるこ
とを可能にする複数の並列計算ユニットを有するターゲ
ットコンピュータアーキテクチャに向けられたターゲッ
トプログラムの内部でループステートメントを最適化す
るコンピュータ制御の方法であって、 該ループステートメントは反復的コンストラクトを記述
し、該ループステートメントはシングルベーシックブロ
ックループの特徴を有しており、該方法が、 (a)該ループステートメントがブロッキング処理を呼
び出す少なくとも1つのボディステートメントを含むこ
とを検出するステップと、 (b)該ブロッキング処理のために予約された少なくと
も1つの専用スケジューリング領域をプリアロケートす
るステップと、 (c)該専用スケジューリング領域の内部で該ブロッキ
ング処理をスケジューリングするステップと、を包含す
る、コンピュータ制御の方法。 - 【請求項8】 前記ステップ(b)は、 (b1)前記ループを構成している複数の反復的コンス
トラクトに対する複数の処理をスケジューリングするた
めに使用される、モジューロ予約テーブル(MRT)を
生成するステップと、 (b2)前記複数の反復的コンストラクトの各々に対し
て、該MRTの内部で、前記専用スケジューリング領域
をプリアロケートするステップと、を更に包含する、請
求項7に記載のコンピュータ制御の方法。 - 【請求項9】 中央処理ユニット(CPU)と該CPU
に結合されたメモリとを有し、命令のパイプライン化を
容易化し且つ2つ以上の命令が単一のクロックサイクル
で発せられることを可能にする複数の並列計算ユニット
を有するターゲットコンピュータアーキテクチャに向け
られたターゲットプログラムの内部でループステートメ
ントを最適化するコンピュータシステムであって、 該ループステートメントは反復的コンストラクトを記述
し、該ループステートメントはシングルベーシックブロ
ックループの特徴を有しており、該コンピュータシステ
ムは、コードジェネレータセグメントを有するコンパイ
ラシステムを有しており、該コンピュータシステムが、 該ループステートメントがアンスピラブルリソースのd
efをもたらす少なくとも1つのボディステートメント
を含むことを検出するように構成されたループ検出メカ
ニズムと、 該ループステートメントを表す該反復的コンストラクト
のための制御オメガ値を決定するように構成された制御
オメガ決定メカニズムと、 該defを該制御オメガ値を使用するデータ制約条件に
変換するように構成された変換メカニズムと、 該反復的コンストラクトを該データ制約条件を使用して
スケジューリングするように構成されたスケジューリン
グメカニズムと、を備える、コンピュータシステム。 - 【請求項10】 前記アンスピラブルリソースを前記デ
ータ制約条件に依存してアロケートするように構成され
たアロケーションメカニズムを更に備える、請求項9に
記載のコンピュータシステム。 - 【請求項11】 前記アンスピラブルリソースが述語レ
ジスタである、請求項10に記載のコンピュータシステ
ム。 - 【請求項12】 前記ループステートメントがデータ依
存性グラフをもたらし、前記defは該データ依存性グ
ラフの中のdefノードによって表現されており、前記
変換メカニズムが、 自己出力アークを該defノードに加えるように構成さ
れたアーク追加メカニズムと、 前記制御オメガ値を該自己出力アークに割り当てるよう
に構成されたオメガ割り当てメカニズムと、を更に備え
る、請求項10に記載のコンピュータシステム。 - 【請求項13】 前記データ依存性グラフが、アークに
よって前記defノードに接続された使用ノードを更に
備えており、前記アロケーションメカニズムが、 複数の使用可能なアンスピラブルリソースを決定するよ
うに構成された使用可能リソース決定メカニズムと、 該複数の使用可能なアンスピラブルリソースのうちの第
1のアンスピラブルリソースを該defノードに割り当
てるように構成されたリソース割り当てメカニズムと、 該第1のアンスピラブルリソースを該defノードから
該使用ノードへ伝播させるように構成されたリソース伝
播メカニズムと、を更に備える、請求項12に記載のコ
ンピュータシステム。 - 【請求項14】 前記制御オメガ決定メカニズムが、 前記反復的コンストラクトによって使用される異なるア
ンスピラブルリソースの数を決定するように構成された
リソース決定メカニズムと、 該反復的コンストラクトによる使用のために使用可能
な、使用可能なアンスピラブルリソースの数を決定する
ように構成された使用可能リソース決定メカニズムと、 該異なるアンスピラブルリソースの数と該使用可能なア
ンスピラブルリソースの数とから前記制御オメガ値を決
定するように構成された制御オメガ決定メカニズムと、
を更に備える、請求項9に記載のコンピュータシステ
ム。 - 【請求項15】 中央処理ユニット(CPU)と該CP
Uに結合されたメモリとを有し、命令のパイプライン化
を容易化し且つ2つ以上の命令が単一のクロックサイク
ルで発せられることを可能にする複数の並列計算ユニッ
トを有するターゲットコンピュータアーキテクチャに向
けられたターゲットプログラムの中のループステートメ
ントを最適化するコンピュータシステムであって、 該ループステートメントは反復的コンストラクトを記述
し、該ループステートメントはシングルベーシックブロ
ックループの特徴を有しており、該コンピュータシステ
ムはコードジェネレータセグメントを有するコンパイラ
システムを有しており、該コンピュータシステムは、 該ループステートメントがブロッキング処理を呼び出す
少なくとも1つのボディステートメントを含むことを検
出するように構成されたブロッキングステートメント検
出メカニズムと、 該ブロッキング処理のために予約された少なくとも1つ
の専用スケジューリング領域をプリアロケートするよう
に構成されたアロケーションメカニズムと、 該専用スケジューリング領域の内部で該ブロッキング処
理をスケジューリングするように構成されたスケジュー
リングメカニズムと、を備える、コンピュータシステ
ム。 - 【請求項16】 前記アロケーションメカニズムが、 前記ループを構成している複数の反復的コンストラクト
に対する複数の処理をスケジューリングするために使用
されるモジューロ予約テーブル(MRT)を生成するよ
うに構成されたモジューロ予約テーブル生成メカニズム
と、 前記複数の反復的コンストラクトの各々に対して、該M
RTの内部で、前記専用スケジューリング領域をプリア
ロケートするように構成されたプリアロケーションメカ
ニズムと、を更に備える、請求項15に記載のコンピュ
ータシステム。 - 【請求項17】 中央処理ユニット(CPU)と該CP
Uに結合されたメモリとを有し、命令のパイプライン化
を容易化し且つ2つ以上の命令が単一のクロックサイク
ルで発せられることを可能にする複数の並列計算ユニッ
トを有するターゲットコンピュータアーキテクチャに向
けられたターゲットプログラムの内部でループステート
メントを最適化する装置であって、 該ループステートメントは反復的コンストラクトを記述
し、該ループステートメントはシングルベーシックブロ
ックループの特徴を有しており、該装置は、コードジェ
ネレータセグメントを有するコンパイラシステムを有し
ており、該装置が、 該ループステートメントがアンスピラブルリソースのd
efをもたらす少なくとも1つのボディステートメント
を含むことを検出するように構成されたループ検出メカ
ニズムと、 該ループステートメントを表す該反復的コンストラクト
のための制御オメガ値を決定するように構成された制御
オメガ決定メカニズムと、 該defを該制御オメガ値を使用するデータ制約条件に
変換するように構成された変換メカニズムと、 該反復的コンストラクトを該データ制約条件を使用して
スケジューリングするように構成されたスケジューリン
グメカニズムと、を備える、装置。 - 【請求項18】 前記アンスピラブルリソースを前記デ
ータ制約条件に依存してアロケートするように構成され
たアロケーションメカニズムを更に備える、請求項17
に記載の装置。 - 【請求項19】 前記アンスピラブルリソースが述語レ
ジスタである、請求項18に記載の装置。 - 【請求項20】 前記ループステートメントがデータ依
存性グラフをもたらし、前記defは該データ依存性グ
ラフの中のdefノードによって表現されており、前記
変換メカニズムが、 自己出力アークを該defノードに加えるように構成さ
れたアーク追加メカニズムと、 前記制御オメガ値を該自己出力アークに割り当てるよう
に構成されたオメガ割り当てメカニズムと、を更に備え
る、請求項18に記載の装置。 - 【請求項21】 前記データ依存性グラフが、アークに
よって前記defノードに接続された使用ノードを更に
備えており、前記アロケーションメカニズムが、 複数の使用可能なアンスピラブルリソースを決定するよ
うに構成された使用可能リソース決定メカニズムと、 該複数の使用可能なアンスピラブルリソースのうちの第
1のアンスピラブルリソースを該defノードに割り当
てるように構成されたリソース割り当てメカニズムと、 該第1のアンスピラブルリソースを該defノードから
該使用ノードへ伝播させるように構成されたリソース伝
播メカニズムと、を更に備える、請求項20に記載の装
置。 - 【請求項22】 前記制御オメガ決定メカニズムが、 前記反復的コンストラクトによって使用される異なるア
ンスピラブルリソースの数を決定するように構成された
リソース決定メカニズムと、 該反復的コンストラクトによる使用のために使用可能
な、使用可能なアンスピラブルリソースの数を決定する
ように構成された使用可能リソース決定メカニズムと、 該異なるアンスピラブルリソースの数と該使用可能なア
ンスピラブルリソースの数とから前記制御オメガ値を決
定するように構成された制御オメガ決定メカニズムと、
を更に備える、請求項17に記載の装置。 - 【請求項23】 中央処理ユニット(CPU)と該CP
Uに結合されたメモリとを有し、命令のパイプライン化
を容易化し且つ2つ以上の命令が単一のクロックサイク
ルで発せられることを可能にする複数の並列計算ユニッ
トを有するターゲットコンピュータアーキテクチャに向
けられたターゲットプログラムの内部でループステート
メントを最適化する装置であって、 該ループステートメントは反復的コンストラクトを記述
し、該ループステートメントはシングルベーシックブロ
ックループの特徴を有しており、該装置はコードジェネ
レータセグメントを有するコンパイラシステムを有して
おり、該装置は、 該ループステートメントがブロッキング処理を呼び出す
少なくとも1つのボディステートメントを含むことを検
出するように構成されたブロッキングステートメント検
出メカニズムと、 該ブロッキング処理のために予約された少なくとも1つ
の専用スケジューリング領域をプリアロケートするよう
に構成されたアロケーションメカニズムと、 該専用スケジューリング領域の内部で該ブロッキング処
理をスケジューリングするように構成されたスケジュー
リングメカニズムと、を備える、装置。 - 【請求項24】 前記アロケーションメカニズムが、 前記ループを構成している複数の反復的コンストラクト
に対する複数の処理をスケジューリングするために使用
されるモジューロ予約テーブル(MRT)を生成するよ
うに構成されたモジューロ予約テーブル生成メカニズム
と、 前記複数の反復的コンストラクトの各々に対して、該M
RTの内部で、前記専用スケジューリング領域をプリア
ロケートするように構成されたプリアロケーションメカ
ニズムと、を更に備える、請求項23に記載の装置。 - 【請求項25】 コンピュータで使用可能な記憶媒体を
備え、 該コンピュータで使用可能な記憶媒体は、その中に組み
入れられていて、コンピュータに、命令のパイプライン
化を容易化し且つ2つ以上の命令が単一のクロックサイ
クルで発せられることを可能にする複数の並列計算ユニ
ットを有するターゲットコンピュータアーキテクチャに
向けられたターゲットプログラムの中のループステート
メントを最適化させるコンピュータで読み出し可能なコ
ードを有しており、 該ループステートメントは反復的コンストラクトを記述
し、該ループステートメントはシングルベーシックブロ
ックループの特徴を有しており、 該コンピュータで読み出し可能なコードは、 該ループステートメントがアンスピラブルリソースのd
efをもたらす少なくとも1つのボディステートメント
を含むことを検出するように構成されたループ検出メカ
ニズムを、該コンピュータに実行させるように構成され
たコンピュータで読み出し可能なプログラムコードデバ
イスと、 該ループステートメントを表す該反復的コンストラクト
のための制御オメガ値を決定するように構成された制御
オメガ決定メカニズムを、該コンピュータに実行させる
ように構成されたコンピュータで読み出し可能なプログ
ラムコードデバイスと、 該defを該制御オメガ値を使用するデータ制約条件に
変換するように構成された変換メカニズムを、該コンピ
ュータに実行させるように構成されたコンピュータで読
み出し可能なプログラムコードデバイスと、 該反復的コンストラクトを該データ制約条件を使用して
スケジューリングするように構成されたスケジューリン
グメカニズムを、該コンピュータに実行させるように構
成された、コンピュータで読み出し可能なプログラムコ
ードデバイスと、を備える、コンピュータプログラム製
品。 - 【請求項26】 前記アンスピラブルリソースを前記デ
ータ制約条件に依存してアロケートするように構成され
たアロケーションメカニズムを、前記コンピュータに実
行させるように構成されたコンピュータで読み出し可能
なプログラムコードデバイスを更に備える、請求項25
に記載のコンピュータプログラム製品。 - 【請求項27】 前記アンスピラブルリソースが述語レ
ジスタである、請求項26に記載のコンピュータプログ
ラム製品。 - 【請求項28】 前記ループステートメントがデータ依
存性グラフをもたらし、前記defは該データ依存性グ
ラフの中のdefノードによって表現されており、前記
変換メカニズムが、 自己出力アークを該defノードに加えるように構成さ
れたアーク追加メカニズムを、前記コンピュータに実行
させるように構成されたコンピュータで読み出し可能な
プログラムコードデバイスと、 前記制御オメガ値を該自己出力アークに割り当てるよう
に構成されたオメガ割り当てメカニズムを、前記コンピ
ュータに実行させるように構成されたコンピュータで読
み出し可能なプログラムコードデバイスと、を更に備え
る、請求項26に記載のコンピュータプログラム製品。 - 【請求項29】 前記データ依存性グラフが、アークに
よって前記defノードに接続された使用ノードを更に
備えており、前記アロケーションメカニズムが、 複数の使用可能なアンスピラブルリソースを決定するよ
うに構成された使用可能リソース決定メカニズムを、前
記コンピュータに実行させるように構成されたコンピュ
ータで読み出し可能なプログラムコードデバイスと、 該複数の使用可能なアンスピラブルリソースのうちの第
1のアンスピラブルリソースを該defノードに割り当
てるように構成されたリソース割り当てメカニズムを、
前記コンピュータに実行させるように構成されたコンピ
ュータで読み出し可能なプログラムコードデバイスと、 該第1のアンスピラブルリソースを該defノードから
該使用ノードへ伝播させるように構成されたリソース伝
播メカニズムを、前記コンピュータに実行させるように
構成されたコンピュータで読み出し可能なプログラムコ
ードデバイスと、を更に備える、請求項28に記載のコ
ンピュータプログラム製品。 - 【請求項30】 前記制御オメガ決定メカニズムが、 前記反復的コンストラクトによって使用される異なるア
ンスピラブルリソースの数を決定するように構成された
リソース決定メカニズムを、前記コンピュータに実行さ
せるように構成されたコンピュータで読み出し可能なプ
ログラムコードデバイスと、 該反復的コンストラクトによる使用のために使用可能
な、使用可能なアンスピラブルリソースの数を決定する
ように構成された使用可能リソース決定メカニズムを、
前記コンピュータに実行させるように構成されたコンピ
ュータで読み出し可能なプログラムコードデバイスと、 該異なるアンスピラブルリソースの数と該使用可能なア
ンスピラブルリソースの数とから前記制御オメガ値を決
定するように構成された制御オメガ決定メカニズムを、
前記コンピュータに実行させるように構成されたコンピ
ュータで読み出し可能なプログラムコードデバイスと、
を更に備える、請求項25に記載のコンピュータプログ
ラム製品。 - 【請求項31】 コンピュータで使用可能な記憶媒体を
備え、 該コンピュータで使用可能な記憶媒体は、その中に組み
入れられていて、コンピュータに、命令のパイプライン
化を容易化し且つ2つ以上の命令が単一のクロックサイ
クルで発せられることを可能にする複数の並列計算ユニ
ットを有するターゲットコンピュータアーキテクチャに
向けられたターゲットプログラムの中のループステート
メントを最適化させるコンピュータで読み出し可能なコ
ードを有しており、 該ループステートメントは反復的コンストラクトを記述
し、該ループステートメントはシングルベーシックブロ
ックループの特徴を有しており、 該コンピュータで読み出し可能なコードは、 該ループステートメントがブロッキング処理を呼び出す
少なくとも1つのボディステートメントを含むことを検
出するように構成されたブロッキングステートメント検
出メカニズムを、該コンピュータに実行させるように構
成されたコンピュータで読み出し可能なプログラムコー
ドデバイスと、 該ブロッキング処理のために予約された少なくとも1つ
の専用スケジューリング領域をプリアロケートするよう
に構成されたアロケーションメカニズムを、該コンピュ
ータに実行させるように構成されたコンピュータで読み
出し可能なプログラムコードデバイスと、 該専用スケジューリング領域の内部で該ブロッキング処
理をスケジューリングするように構成されたスケジュー
リングメカニズムを、該コンピュータに実行させるよう
に構成されたコンピュータで読み出し可能なプログラム
コードデバイスと、を備える、コンピュータプログラム
製品。 - 【請求項32】 前記アロケーションメカニズムが、 前記ループを構成している複数の反復的コンストラクト
に対する複数の処理をスケジューリングするために使用
されるモジューロ予約テーブル(MRT)を生成するよ
うに構成されたモジューロ予約テーブル生成メカニズム
を、前記コンピュータに実行させるように構成されたコ
ンピュータで読み出し可能なプログラムコードデバイス
と、 前記複数の反復的コンストラクトの各々に対して、該M
RTの内部で、前記専用スケジューリング領域をプリア
ロケートするように構成されたプリアロケーションメカ
ニズムを、前記コンピュータに実行させるように構成さ
れたコンピュータで読み出し可能なプログラムコードデ
バイスと、を更に備える、請求項31に記載のコンピュ
ータプログラム製品。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/752,683 US5930510A (en) | 1996-11-19 | 1996-11-19 | Method and apparatus for an improved code optimizer for pipelined computers |
| US08/752,683 | 1996-11-19 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10161884A true JPH10161884A (ja) | 1998-06-19 |
Family
ID=25027339
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9318777A Withdrawn JPH10161884A (ja) | 1996-11-19 | 1997-11-19 | パイプラインコンピュータのための改善されたコードオプティマイザ |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5930510A (ja) |
| EP (2) | EP0843257B1 (ja) |
| JP (1) | JPH10161884A (ja) |
| DE (1) | DE69722138T2 (ja) |
Families Citing this family (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6035125A (en) * | 1997-07-25 | 2000-03-07 | International Business Machines Corporation | Method and system for generating compact code for the loop unrolling transformation |
| WO1999012094A1 (de) * | 1997-09-01 | 1999-03-11 | Siemens Nixdorf Informationssysteme Ag | Verfahren zum umsetzen eines objektcodes in einen programmcode |
| US6253373B1 (en) * | 1997-10-07 | 2001-06-26 | Hewlett-Packard Company | Tracking loop entry and exit points in a compiler |
| US6341370B1 (en) * | 1998-04-24 | 2002-01-22 | Sun Microsystems, Inc. | Integration of data prefetching and modulo scheduling using postpass prefetch insertion |
| US6305014B1 (en) * | 1998-06-18 | 2001-10-16 | International Business Machines Corporation | Lifetime-sensitive instruction scheduling mechanism and method |
| US6421809B1 (en) * | 1998-07-24 | 2002-07-16 | Interuniversitaire Micro-Elektronica Centrum (Imec Vzw) | Method for determining a storage bandwidth optimized memory organization of an essentially digital device |
| US6671878B1 (en) * | 2000-03-24 | 2003-12-30 | Brian E. Bliss | Modulo scheduling via binary search for minimum acceptable initiation interval method and apparatus |
| US7774219B1 (en) * | 2000-04-28 | 2010-08-10 | Microsoft Corporation | Long running transaction integration with selective dehydration and selective compensation |
| US7503033B2 (en) * | 2000-04-28 | 2009-03-10 | Microsoft Corporation | Model for business workflow processes |
| US7234126B2 (en) * | 2000-08-23 | 2007-06-19 | Interuniversitair Microelektronica Centrum | Task concurrency management design method |
| US6658656B1 (en) * | 2000-10-31 | 2003-12-02 | Hewlett-Packard Development Company, L.P. | Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions |
| US6912709B2 (en) * | 2000-12-29 | 2005-06-28 | Intel Corporation | Mechanism to avoid explicit prologs in software pipelined do-while loops |
| JP2003005980A (ja) * | 2001-06-22 | 2003-01-10 | Matsushita Electric Ind Co Ltd | コンパイル装置およびコンパイルプログラム |
| US7203942B2 (en) | 2001-09-25 | 2007-04-10 | Interuniversitair Microelektronica Centrum | Method for operating a real-time multimedia terminal in a QoS manner |
| GB2398411B (en) | 2001-10-12 | 2005-04-27 | Pts Corp | Processors and compiling methods for processors |
| US7257808B2 (en) * | 2002-01-03 | 2007-08-14 | Intel Corporation | System and method to reduce the size of source code in a processing system |
| US7096438B2 (en) * | 2002-10-07 | 2006-08-22 | Hewlett-Packard Development Company, L.P. | Method of using clock cycle-time in determining loop schedules during circuit design |
| US7000137B2 (en) * | 2002-10-07 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | System for and method of clock cycle-time analysis using mode-slicing mechanism |
| 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 |
| US7454747B2 (en) * | 2003-02-07 | 2008-11-18 | Sun Microsystems, Inc. | Determining maximum acceptable scheduling load latency using hierarchical search |
| US7395419B1 (en) * | 2004-04-23 | 2008-07-01 | Apple Inc. | Macroscalar processor architecture |
| US7617496B2 (en) | 2004-04-23 | 2009-11-10 | Apple Inc. | Macroscalar processor architecture |
| US7814468B1 (en) * | 2005-04-20 | 2010-10-12 | Oracle America, Inc. | Method for loop reformulation |
| US7546592B2 (en) * | 2005-07-21 | 2009-06-09 | International Business Machines Corporation | System and method for optimized swing modulo scheduling based on identification of constrained resources |
| US8341615B2 (en) * | 2008-07-11 | 2012-12-25 | International Business Machines Corporation | Single instruction multiple data (SIMD) code generation for parallel loops using versioning and scheduling |
| KR20100046877A (ko) * | 2008-10-28 | 2010-05-07 | 삼성전자주식회사 | 언롤 루프에 대한 레지스터 스필을 줄이는 컴파일러 및 그 방법 |
| US9696995B2 (en) | 2009-12-30 | 2017-07-04 | International Business Machines Corporation | Parallel execution unit that extracts data parallelism at runtime |
| US8572359B2 (en) | 2009-12-30 | 2013-10-29 | International Business Machines Corporation | Runtime extraction of data parallelism |
| WO2011080054A1 (en) * | 2009-12-30 | 2011-07-07 | International Business Machines Corporation | Extraction of data parallelism |
| US8495607B2 (en) * | 2010-03-01 | 2013-07-23 | International Business Machines Corporation | Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations |
| US8683185B2 (en) | 2010-07-26 | 2014-03-25 | International Business Machines Corporation | Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set |
| US9329867B2 (en) * | 2014-01-08 | 2016-05-03 | Qualcomm Incorporated | Register allocation for vectors |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04211830A (ja) * | 1990-02-05 | 1992-08-03 | Matsushita Electric Ind Co Ltd | 並列化コンパイル方式 |
| US5551039A (en) * | 1992-02-03 | 1996-08-27 | Thinking Machines Corporation | Compiling a source code vector instruction by generating a subgrid loop for iteratively processing array elements by plural processing elements |
| 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 |
| US5491823A (en) * | 1994-01-25 | 1996-02-13 | Silicon Graphics, Inc. | Loop scheduler |
| US5659754A (en) * | 1995-03-31 | 1997-08-19 | Sun Microsystems, Inc. | Method and apparatus for an improved optimizing compiler |
| US5761514A (en) * | 1995-08-31 | 1998-06-02 | International Business Machines Corporation | Register allocation method and apparatus for truncating runaway lifetimes of program variables in a computer system |
| US5867711A (en) * | 1995-11-17 | 1999-02-02 | Sun Microsystems, Inc. | Method and apparatus for time-reversed instruction scheduling with modulo constraints in an optimizing compiler |
| US5809308A (en) * | 1995-11-17 | 1998-09-15 | Sun Microsystems, Inc. | Method and apparatus for efficient determination of an RMII vector for modulo scheduled loops in an optimizing compiler |
| US5835776A (en) * | 1995-11-17 | 1998-11-10 | Sun Microsystems, Inc. | Method and apparatus for instruction scheduling in an optimizing compiler for minimizing overhead instructions |
| US5664193A (en) * | 1995-11-17 | 1997-09-02 | Sun Microsystems, Inc. | Method and apparatus for automatic selection of the load latency to be used in modulo scheduling in an optimizing compiler |
| US5768596A (en) * | 1996-04-23 | 1998-06-16 | Silicon Graphics, Inc. | System and method to efficiently represent aliases and indirect memory operations in static single assignment form during compilation |
-
1996
- 1996-11-19 US US08/752,683 patent/US5930510A/en not_active Expired - Lifetime
-
1997
- 1997-11-11 DE DE69722138T patent/DE69722138T2/de not_active Expired - Fee Related
- 1997-11-11 EP EP97309064A patent/EP0843257B1/en not_active Expired - Lifetime
- 1997-11-11 EP EP97309065A patent/EP0843258A3/en not_active Withdrawn
- 1997-11-19 JP JP9318777A patent/JPH10161884A/ja not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| DE69722138D1 (de) | 2003-06-26 |
| EP0843257A3 (en) | 1999-05-19 |
| DE69722138T2 (de) | 2004-04-08 |
| EP0843257A2 (en) | 1998-05-20 |
| EP0843257B1 (en) | 2003-05-21 |
| EP0843258A2 (en) | 1998-05-20 |
| EP0843258A3 (en) | 1999-05-12 |
| US5930510A (en) | 1999-07-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5930510A (en) | Method and apparatus for an improved code optimizer for pipelined computers | |
| US5835776A (en) | Method and apparatus for instruction scheduling in an optimizing compiler for minimizing overhead instructions | |
| US5828886A (en) | Compiling apparatus and method for promoting an optimization effect of a program | |
| US5867711A (en) | Method and apparatus for time-reversed instruction scheduling with modulo constraints in an optimizing compiler | |
| US5303357A (en) | Loop optimization system | |
| US20090313600A1 (en) | Concurrent code generation | |
| US20140173575A1 (en) | Processors and compiling methods for processors | |
| US5809308A (en) | Method and apparatus for efficient determination of an RMII vector for modulo scheduled loops in an optimizing compiler | |
| JP2004234126A (ja) | コンパイラ装置およびコンパイル方法 | |
| Kessler | Compiling for VLIW DSPs | |
| Kessler | Scheduling expression DAGs for minimal register need | |
| JPH11194948A (ja) | コンパイラ最適化アルゴリズム | |
| JP3595158B2 (ja) | 命令割り当て方法及び命令割り当て装置 | |
| Johnson et al. | Combined code motion and register allocation using the value state dependence graph | |
| Schlansker et al. | Height reduction of control recurrences for ILP processors | |
| Warter-Perez et al. | Modulo scheduling with multiple initiation intervals | |
| Dewitt | A Machine Independent Approach To The Production Of Optimized Horizontal Microcode. | |
| US7073169B2 (en) | Compiler device with branch instruction inserting unit | |
| JP3311381B2 (ja) | コンパイラにおける命令スケジューリング処理方法 | |
| Keßler et al. | A dynamic programming approach to optimal integrated code generation | |
| Bodin et al. | Loop optimization for horizontal microcoded machines | |
| Lee et al. | Software pipelining and superblock scheduling: compilation techniques for VLIW machines | |
| Newburn et al. | Balancing Fine-and Medium-Grained Parallelism in Scheduling Loops for the XIMD Architecture. | |
| Govindarajan et al. | Co-scheduling hardware and software pipelines | |
| Lam | Software pipelining |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20050201 |