JPH04263331A - コンピュータ用大域命令スケジューラ - Google Patents
コンピュータ用大域命令スケジューラInfo
- Publication number
- JPH04263331A JPH04263331A JP3195374A JP19537491A JPH04263331A JP H04263331 A JPH04263331 A JP H04263331A JP 3195374 A JP3195374 A JP 3195374A JP 19537491 A JP19537491 A JP 19537491A JP H04263331 A JPH04263331 A JP H04263331A
- Authority
- JP
- Japan
- Prior art keywords
- instructions
- block
- instruction
- candidate
- control
- 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/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、コンピュータ用の命令
スケジューラ、特に、並列/パイプライン式のコンピュ
ータと共に使用するのに適した方法で、基本のブロック
境界を超えて諸命令をスケジュールする(大域スケジュ
ーリング)ことを可能にする、命令スケジューラに関す
るものである。
スケジューラ、特に、並列/パイプライン式のコンピュ
ータと共に使用するのに適した方法で、基本のブロック
境界を超えて諸命令をスケジュールする(大域スケジュ
ーリング)ことを可能にする、命令スケジューラに関す
るものである。
【0002】
【従来の技術】命令スケジューリングは、プログラム文
を、プロセッサによるその実行の前に再構成もしくは変
形して、コンパイルした命令の間の実行時間の起こり得
る遅れを少なくしようとするプロセスである。この命令
スケジューリングは通常、中間言語のレベル又はアセン
ブリ・コードのレベルで実行するものである。そのよう
な変形は、データ依存性を保存しなければならず、また
その変形は、その他の制約も受けるようになっている。 このことは、パイプライン式のマシン・アーキテクチャ
(これは、命令の実行をオーバーラップさせることによ
って処理能力を増大させることが可能)に対してコンパ
イルする場合に、とりわけ有利となり得るものである。 例えば、もしある値Vの取出しとその使用との間に1サ
イクルの遅れが在る場合には、そのVとは独立していて
しかも実行に対し“レディ”となっているある命令によ
って、その遅れを“カバー”することが望ましくなる。
を、プロセッサによるその実行の前に再構成もしくは変
形して、コンパイルした命令の間の実行時間の起こり得
る遅れを少なくしようとするプロセスである。この命令
スケジューリングは通常、中間言語のレベル又はアセン
ブリ・コードのレベルで実行するものである。そのよう
な変形は、データ依存性を保存しなければならず、また
その変形は、その他の制約も受けるようになっている。 このことは、パイプライン式のマシン・アーキテクチャ
(これは、命令の実行をオーバーラップさせることによ
って処理能力を増大させることが可能)に対してコンパ
イルする場合に、とりわけ有利となり得るものである。 例えば、もしある値Vの取出しとその使用との間に1サ
イクルの遅れが在る場合には、そのVとは独立していて
しかも実行に対し“レディ”となっているある命令によ
って、その遅れを“カバー”することが望ましくなる。
【0003】この命令スケジューリングのある特定の用
途は、いわゆる命令セット削減形コンピュータ(RIS
C)の分野にある。このRISCコンピュータの入門的
解説は、次の論文中に見ることができる。 R1. パターソン(D.A.Patterson)
,D.A.の“命令セット削減形コン ピュータ”,A
CM通信(the Communications o
f the ACM)(19 85年1月)の8−21
ページ
途は、いわゆる命令セット削減形コンピュータ(RIS
C)の分野にある。このRISCコンピュータの入門的
解説は、次の論文中に見ることができる。 R1. パターソン(D.A.Patterson)
,D.A.の“命令セット削減形コン ピュータ”,A
CM通信(the Communications o
f the ACM)(19 85年1月)の8−21
ページ
【0004】70年代後半に出現した、高速のプロセッ
サを構築するためのRISCのアプローチは、プログラ
ム命令を流線形(ストリームライン)にする必要性を強
調したものである。その結果として、パイプライン方式
を十分活用して性能を向上させるためには、中間言語又
はアセンブリ・コード・レベルで諸命令を再構成しなけ
ればならない。命令スケジューリングのこの負担は、R
ISCプロセッサ用のコードを生成するコンパイラを最
適化する際にかかることになる。通常、それらコンパイ
ラは、その基本ブロック・レベルで命令スケジューリン
グを実行し、これにより、RISCプロセッサのパイプ
ライン式構造が提起する問題の大部分を解決している。
サを構築するためのRISCのアプローチは、プログラ
ム命令を流線形(ストリームライン)にする必要性を強
調したものである。その結果として、パイプライン方式
を十分活用して性能を向上させるためには、中間言語又
はアセンブリ・コード・レベルで諸命令を再構成しなけ
ればならない。命令スケジューリングのこの負担は、R
ISCプロセッサ用のコードを生成するコンパイラを最
適化する際にかかることになる。通常、それらコンパイ
ラは、その基本ブロック・レベルで命令スケジューリン
グを実行し、これにより、RISCプロセッサのパイプ
ライン式構造が提起する問題の大部分を解決している。
【0005】幾つかの機能性ユニットをもったプロセッ
サに関する命令レベルでのスケジューリングに対して、
その1つのアプローチが、以下の論文に記載されている
。 R2. バーンスタイン(D.Bernstein)
、ヤッフェ(J.M.Jaffe)及びロデ(M.Ro
deh)の“スピリング無しの並列のスケジューリング
算術演算処 理及びロード処理”,SIAM計算誌(S
IM Journal of Computing)、
1989年12月
サに関する命令レベルでのスケジューリングに対して、
その1つのアプローチが、以下の論文に記載されている
。 R2. バーンスタイン(D.Bernstein)
、ヤッフェ(J.M.Jaffe)及びロデ(M.Ro
deh)の“スピリング無しの並列のスケジューリング
算術演算処 理及びロード処理”,SIAM計算誌(S
IM Journal of Computing)、
1989年12月
【0006】パイプライン式マシンに関する命令レベル
でのスケジューリングに対するアプローチは、以下の一
連の論文中に記述されている。 R3. バーンスタイン(D.Bernstein)
及びゲルトナー(I.Gertner)の“1サイクル
の最大遅れをもったパイプライン式プロセッサ上での式
のスケジューリング”,プログラミング言語及びシステ
ムでのACM紀要(ACM Transactions
on ProgrammingLanguages
and Systems)、V ol.11,No.1
,1989年1月,57−66ページ R4. バーンスタイン(D.Bernstein)
,ロデ(M.Rodeh)及びゲルナトー(I.Ger
tner)の“パイプライン式マシン上での算術式をス
ケジュール するための近似アルゴリズム”,アルゴリ
ズム・ジャーナル(the Journal of A
lgorithms),10(1989年3月),12
0−139 ページ R5. ヘネシー(J.J.Hennessy)及び
グロス(T.Gross)の“パイプライン 制約のポ
ストパス・コード最適化”,プログラミング言語及びシ
ステムのACM紀要(ACM Transaction
s on Programming Language
s and Systems),5(1983年7月)
,422−448ページ R6. ギボンス(P.B.Gibbons)及びマ
チニック(S.S.Muchnick)の“パイ プラ
イン・アーキテクチャ用の効率的命令スケジューリング
”,コンパイラ構造に関するACMシンポジウムの紀要
(the Proceedings ofACM Sy
mposium on Compiler Const
ruction),1986年6月 R7. ワレン(H.Warren)の“IBM R
ISCシステム/6000プロセ ッサ用の命令スケジ
ューリング”,IBM研究開発ジャーナル(the I
BM Jounal of Research and
Development),Vol.34,No.l,
1990年1月,85−92ページ
でのスケジューリングに対するアプローチは、以下の一
連の論文中に記述されている。 R3. バーンスタイン(D.Bernstein)
及びゲルトナー(I.Gertner)の“1サイクル
の最大遅れをもったパイプライン式プロセッサ上での式
のスケジューリング”,プログラミング言語及びシステ
ムでのACM紀要(ACM Transactions
on ProgrammingLanguages
and Systems)、V ol.11,No.1
,1989年1月,57−66ページ R4. バーンスタイン(D.Bernstein)
,ロデ(M.Rodeh)及びゲルナトー(I.Ger
tner)の“パイプライン式マシン上での算術式をス
ケジュール するための近似アルゴリズム”,アルゴリ
ズム・ジャーナル(the Journal of A
lgorithms),10(1989年3月),12
0−139 ページ R5. ヘネシー(J.J.Hennessy)及び
グロス(T.Gross)の“パイプライン 制約のポ
ストパス・コード最適化”,プログラミング言語及びシ
ステムのACM紀要(ACM Transaction
s on Programming Language
s and Systems),5(1983年7月)
,422−448ページ R6. ギボンス(P.B.Gibbons)及びマ
チニック(S.S.Muchnick)の“パイ プラ
イン・アーキテクチャ用の効率的命令スケジューリング
”,コンパイラ構造に関するACMシンポジウムの紀要
(the Proceedings ofACM Sy
mposium on Compiler Const
ruction),1986年6月 R7. ワレン(H.Warren)の“IBM R
ISCシステム/6000プロセ ッサ用の命令スケジ
ューリング”,IBM研究開発ジャーナル(the I
BM Jounal of Research and
Development),Vol.34,No.l,
1990年1月,85−92ページ
【0007】非常に
長い命令ワード(VLIW)のマシン(即ち,一つのマ
シンのそれぞれの部分についての幾つかの在来の命令が
組合わさったマシン)に関する命令レベルでのスケジュ
ーリングについて、それに対するアプローチは、次の論
文に記述されている。 R8. エリス(J.R.Ellis)の“ブルドッ
グ:VLIWアーキテクチャ用コ ンパイラ”,Rh.
D.論文,Yale V/DCS/RR−364 ,エ
ール大学,1985年2月
長い命令ワード(VLIW)のマシン(即ち,一つのマ
シンのそれぞれの部分についての幾つかの在来の命令が
組合わさったマシン)に関する命令レベルでのスケジュ
ーリングについて、それに対するアプローチは、次の論
文に記述されている。 R8. エリス(J.R.Ellis)の“ブルドッ
グ:VLIWアーキテクチャ用コ ンパイラ”,Rh.
D.論文,Yale V/DCS/RR−364 ,エ
ール大学,1985年2月
【0008】しかるに、n個の機能性ユニットをもった
マシンは、その思想が、各サイクル毎にn個もの命令を
実行できるようにすることであるのに対し、パイプライ
ン式マシンでは、その目標が、サイクル毎に新たな命令
を発して、いわゆるNOP(無動作)を効果的に除くこ
とである。しかしながら、それらの両タイプのマシンに
おいて、コンパイラの方から要求される共通の事柄は、
コード中に、データに対し独立の命令を発見して、マシ
ン資源をより一層良く活用するコードを生成できるよう
にすることである。
マシンは、その思想が、各サイクル毎にn個もの命令を
実行できるようにすることであるのに対し、パイプライ
ン式マシンでは、その目標が、サイクル毎に新たな命令
を発して、いわゆるNOP(無動作)を効果的に除くこ
とである。しかしながら、それらの両タイプのマシンに
おいて、コンパイラの方から要求される共通の事柄は、
コード中に、データに対し独立の命令を発見して、マシ
ン資源をより一層良く活用するコードを生成できるよう
にすることである。
【0009】そのようなデータ独立性の命令を基本ブロ
ック内で見い出すことができ、また基本ブロック境界を
超えて命令を移動させる必要はない、というのが一般的
な見解であった。1つの基本ブロックは、一連の連続し
た命令の命令シーケンスであって、制御フローは、その
シーケンスの初めのところで入り、そして待機あるいは
分岐の可能性もなくそのシーケンスの終わりのところで
出るようになっている(但し、その出口点では、待機/
分岐の可能性はある)。事実上、命令スケジューリング
の実現に関する以前のものは全て、基本ブロック内での
スケジューリングに集中していた(上記参考文献R5,
R6,及びR7を参照されたい)。
ック内で見い出すことができ、また基本ブロック境界を
超えて命令を移動させる必要はない、というのが一般的
な見解であった。1つの基本ブロックは、一連の連続し
た命令の命令シーケンスであって、制御フローは、その
シーケンスの初めのところで入り、そして待機あるいは
分岐の可能性もなくそのシーケンスの終わりのところで
出るようになっている(但し、その出口点では、待機/
分岐の可能性はある)。事実上、命令スケジューリング
の実現に関する以前のものは全て、基本ブロック内での
スケジューリングに集中していた(上記参考文献R5,
R6,及びR7を参照されたい)。
【0010】しかしながら、基本的なRISCアーキテ
クチャに対してさえも、そのような制限されたタイプの
スケジューリングは、多くのユニックス(Unix)タ
イプ(Unixは、AT&Tベル研究所の商標である)
のプログラム(これは、予測不可能な分岐で終了するよ
うな多くの小さな基本ブロックを包含している)を含む
大きなプログラム・ファミリーの場合には、多くのNO
Pをもつコードをもたらす虞れがある。科学計算用プロ
グラムの場合には、基本ブロックは、大きくなる傾向が
あるから、それらの問題は、それ程厳しいものになりそ
うにはない。
クチャに対してさえも、そのような制限されたタイプの
スケジューリングは、多くのユニックス(Unix)タ
イプ(Unixは、AT&Tベル研究所の商標である)
のプログラム(これは、予測不可能な分岐で終了するよ
うな多くの小さな基本ブロックを包含している)を含む
大きなプログラム・ファミリーの場合には、多くのNO
Pをもつコードをもたらす虞れがある。科学計算用プロ
グラムの場合には、基本ブロックは、大きくなる傾向が
あるから、それらの問題は、それ程厳しいものになりそ
うにはない。
【0011】最近、新たなタイプのアーキテクチャが開
発されつつあり、このアーキテクチャは、サイクル当た
り1つより多い命令を発する能力によって、RISCを
拡張しようとしている。1例として、次の論文を参照さ
れたい。 R9. グローブ(R.D.Groves)及びエー
ラー(R.Oehler)の“IBM第2世代RISC
プロセッサ・アーキテクチャ”,コンピュータ設計に関
するIEEE会議議事録(the Proceedin
gs of the IEEE Conference
on Computer Design),1989
年10月,134−137ページ
発されつつあり、このアーキテクチャは、サイクル当た
り1つより多い命令を発する能力によって、RISCを
拡張しようとしている。1例として、次の論文を参照さ
れたい。 R9. グローブ(R.D.Groves)及びエー
ラー(R.Oehler)の“IBM第2世代RISC
プロセッサ・アーキテクチャ”,コンピュータ設計に関
するIEEE会議議事録(the Proceedin
gs of the IEEE Conference
on Computer Design),1989
年10月,134−137ページ
【0012】このタイプの高速プロセッサ機構は、スー
パースカラー・アーキテクチャもしくはスーパーパイプ
ライン式アーキテクチャと呼ばれており、これは、コン
パイラに対してより深刻な挑戦を提起するものであるが
、その理由は、基本ブロックレベルでの命令スケジュー
リングが、マシン資源を希望する程度まで活用するよう
なコードの生成を可能にする程十分なものではないため
である。以下の論文を参照されたい。 R10.ジューピ(N.P.Jouppi)及びウォー
ル(D.W.Wall)の“スーパースカラー及びスー
パーパイプライン式のマシン用に利用可能な命令レベル
平行性”,第3回ASPLOS会議議事録(the P
roceedings of theThird AS
PLOS Conference),1989年4月,
272−282ページ
パースカラー・アーキテクチャもしくはスーパーパイプ
ライン式アーキテクチャと呼ばれており、これは、コン
パイラに対してより深刻な挑戦を提起するものであるが
、その理由は、基本ブロックレベルでの命令スケジュー
リングが、マシン資源を希望する程度まで活用するよう
なコードの生成を可能にする程十分なものではないため
である。以下の論文を参照されたい。 R10.ジューピ(N.P.Jouppi)及びウォー
ル(D.W.Wall)の“スーパースカラー及びスー
パーパイプライン式のマシン用に利用可能な命令レベル
平行性”,第3回ASPLOS会議議事録(the P
roceedings of theThird AS
PLOS Conference),1989年4月,
272−282ページ
【0013】スーパースカラー・マシン用の命令スケジ
ューリングを追及する最近の試みは、次の論文に報告さ
れている。 R11.ゴランビック(M.C.Golumbic)及
びレイニッシュ(V.Rainish)、の “基本ブ
ロックを超える命令スケジューリング”,IBM研究開
発ジャーナル(the IBM Journal of
Research and Development
)、Vo l.34,No.1,1990年1月,93
−97ページ
ューリングを追及する最近の試みは、次の論文に報告さ
れている。 R11.ゴランビック(M.C.Golumbic)及
びレイニッシュ(V.Rainish)、の “基本ブ
ロックを超える命令スケジューリング”,IBM研究開
発ジャーナル(the IBM Journal of
Research and Development
)、Vo l.34,No.1,1990年1月,93
−97ページ
【0014】本論文においては、基本ブロ
ックの範囲を超えたスケジューリングのためのコード反
復手法が考察され、この結果、コンパイルされたコード
の走行時間の相当な改善が行われた。しかしながら、そ
こで説明されている方法は、依然として更に改善の余地
があるものである。
ックの範囲を超えたスケジューリングのためのコード反
復手法が考察され、この結果、コンパイルされたコード
の走行時間の相当な改善が行われた。しかしながら、そ
こで説明されている方法は、依然として更に改善の余地
があるものである。
【0015】スーパースカラー・プロセッサは、少数の
資源をもったVLIWマシンとして考えることができる
。このようなVLIWマシン用のコードをコンパイルす
るアプローチは、上記文献R8と以下の論文にも記載さ
れている。 R12.フィッシャー(J.Fisher)の“トレー
ス・スケジューリング:大域マイクロコード短縮技法”
,コンピュータIEEE会報(the IEEE Tr
ansactions on Computers),
C−30,No.7,1981年7月,478−490
ページ R13.エビシオグル(K.Ebcioglu)及びナ
カタニ(T.Nakatani)の“VLIWアーキテ
クチャ上で予測不能の分岐をもつループを並行化する新
たなコンパイル技法”,並列計算用の言語とコンパイラ
に関する講習会議事録(the Proceeding
s of the workshop on Lang
uages and Compilers forPa
rallel Computing),1989年8月
,アーバナ
資源をもったVLIWマシンとして考えることができる
。このようなVLIWマシン用のコードをコンパイルす
るアプローチは、上記文献R8と以下の論文にも記載さ
れている。 R12.フィッシャー(J.Fisher)の“トレー
ス・スケジューリング:大域マイクロコード短縮技法”
,コンピュータIEEE会報(the IEEE Tr
ansactions on Computers),
C−30,No.7,1981年7月,478−490
ページ R13.エビシオグル(K.Ebcioglu)及びナ
カタニ(T.Nakatani)の“VLIWアーキテ
クチャ上で予測不能の分岐をもつループを並行化する新
たなコンパイル技法”,並列計算用の言語とコンパイラ
に関する講習会議事録(the Proceeding
s of the workshop on Lang
uages and Compilers forPa
rallel Computing),1989年8月
,アーバナ
【0016】
【発明が解決しようとする課題】本発明の目的は、効率
的で柔軟性のあるやり方で大域的(即ち、ブロック間)
スケジューリングを実行することができる命令スケジュ
ーラを提供することである。
的で柔軟性のあるやり方で大域的(即ち、ブロック間)
スケジューリングを実行することができる命令スケジュ
ーラを提供することである。
【0017】
【課題を解決するための手段】本発明の第一面によれば
、入力コード・シーケンス中の命令間のデータ依存性と
制御依存性を表すプログラム依存性グラフ生成ロジック
と、このプログラム依存性グラフに応答して前記入力コ
ード・シーケンスの命令を、適当な場合には、基本ブロ
ック境界を超えて再編成して、出力コード・シーケンス
を生成する順序付けロジックと、を備えるコンピュータ
用命令スケジューラを提供する。
、入力コード・シーケンス中の命令間のデータ依存性と
制御依存性を表すプログラム依存性グラフ生成ロジック
と、このプログラム依存性グラフに応答して前記入力コ
ード・シーケンスの命令を、適当な場合には、基本ブロ
ック境界を超えて再編成して、出力コード・シーケンス
を生成する順序付けロジックと、を備えるコンピュータ
用命令スケジューラを提供する。
【0018】本発明によれば、基本ブロック境界を超え
る大域的スケジューリングを、プログラム依存性グラフ
の使用によって実行することができる。この命令スケジ
ューリングは、コンパイラのレジスタ割当てフェーズを
呼び込む前あるいはその後で適用することができる。命
令を再編成のためにより大きな柔軟性を残すことができ
るように、そのレジスタ割当てステップ前に本スケジュ
ーリングを実行することが有利である。
る大域的スケジューリングを、プログラム依存性グラフ
の使用によって実行することができる。この命令スケジ
ューリングは、コンパイラのレジスタ割当てフェーズを
呼び込む前あるいはその後で適用することができる。命
令を再編成のためにより大きな柔軟性を残すことができ
るように、そのレジスタ割当てステップ前に本スケジュ
ーリングを実行することが有利である。
【0019】好ましくは、前記のプログラム依存性グラ
フは、制御依存性サブグラフとデータ依存性サブグラフ
より成るプログラム依存性グラフを生成する。その制御
依存性サブグラフは、入力コード・シーケンスが規定す
るプログラムにおける制御依存性を表すものであり、そ
してそのデータ依存性サブグラフは、それにおけるデー
タ依存性を表すものである。
フは、制御依存性サブグラフとデータ依存性サブグラフ
より成るプログラム依存性グラフを生成する。その制御
依存性サブグラフは、入力コード・シーケンスが規定す
るプログラムにおける制御依存性を表すものであり、そ
してそのデータ依存性サブグラフは、それにおけるデー
タ依存性を表すものである。
【0020】順序付け(又はスケジューリング)ロジッ
クは、好ましくは、その制御依存性サブグラフを使用す
ることにより、入力コード・シーケンス中の基本ブロッ
クの命令をブロック毎にスケジュールし、そして、この
順序付けロジックは、現在スケジュール中の現行ブロッ
クについて、この現行ブロックに対し命令を寄与させる
ことが可能な候補ブロックのリストを判定する。制御依
存性サブグラフにおいて現行ブロックに等価でありかつ
その現行ブロックにより支配されると識別したブロック
に加えて、候補ブロックのリストは、制御依存性サブグ
ラフにおいて、現行ブロックの直後の後継者、もしくは
その現行ブロックに等価のブロックであって現行ブロッ
クにより支配されるそのブロックの直後の後継者、とし
て識別した全ブロックを含む。
クは、好ましくは、その制御依存性サブグラフを使用す
ることにより、入力コード・シーケンス中の基本ブロッ
クの命令をブロック毎にスケジュールし、そして、この
順序付けロジックは、現在スケジュール中の現行ブロッ
クについて、この現行ブロックに対し命令を寄与させる
ことが可能な候補ブロックのリストを判定する。制御依
存性サブグラフにおいて現行ブロックに等価でありかつ
その現行ブロックにより支配されると識別したブロック
に加えて、候補ブロックのリストは、制御依存性サブグ
ラフにおいて、現行ブロックの直後の後継者、もしくは
その現行ブロックに等価のブロックであって現行ブロッ
クにより支配されるそのブロックの直後の後継者、とし
て識別した全ブロックを含む。
【0021】前記のデータ依存性グラフから、順序付け
ロジックは、前記候補ブロック集合の内から1組の候補
命令を決めることができる。この候補命令リストは、好
ましくは、命令が1ブロック境界を超えて移動させこと
ができないタイプでなくかつ/又は命令が推測的にスケ
ジュールできないタイプではない限り、現行ブロック又
は候補ブロック集合中の1つのブロックに属する、実行
が推測的な命令を含む、全ての命令を含む。この候補命
令リストから、順序付けロジックは、機械記述に従って
、次にスケジュールするべき一つもしくはそれ以上の命
令を決める。
ロジックは、前記候補ブロック集合の内から1組の候補
命令を決めることができる。この候補命令リストは、好
ましくは、命令が1ブロック境界を超えて移動させこと
ができないタイプでなくかつ/又は命令が推測的にスケ
ジュールできないタイプではない限り、現行ブロック又
は候補ブロック集合中の1つのブロックに属する、実行
が推測的な命令を含む、全ての命令を含む。この候補命
令リストから、順序付けロジックは、機械記述に従って
、次にスケジュールするべき一つもしくはそれ以上の命
令を決める。
【0022】推測的命令の概念は、次の論文に求めるこ
とができる。 R14.エビシオグル(K.Ebcioglu)の“シ
ーケンス性ソフトウエアのVLIWアーキテクチャ用設
計思想”,並列計算に関するIFIP会議議事録(th
e Proceedings of the IFIP
Conference on Parallel C
omputing),1989年8月 R15.スミス(M.D.Smith),ラム(M.S
.Lam)及びホロヴィッツ(M.A.Horowit
z)の“スーパースカラー・プロセッサにおける静的ス
ケジューリングを超えるブースト”,コンピュータ・ア
ーキテクチャ会議議事録(the Proceedin
gs of the Computer Archit
ecture Conference),1990年5
月,344−354ページ
とができる。 R14.エビシオグル(K.Ebcioglu)の“シ
ーケンス性ソフトウエアのVLIWアーキテクチャ用設
計思想”,並列計算に関するIFIP会議議事録(th
e Proceedings of the IFIP
Conference on Parallel C
omputing),1989年8月 R15.スミス(M.D.Smith),ラム(M.S
.Lam)及びホロヴィッツ(M.A.Horowit
z)の“スーパースカラー・プロセッサにおける静的ス
ケジューリングを超えるブースト”,コンピュータ・ア
ーキテクチャ会議議事録(the Proceedin
gs of the Computer Archit
ecture Conference),1990年5
月,344−354ページ
【0023】しかしながら、
これらの論文では、推測的命令は、相当な実行時間オー
バーヘッドを支えるマシン・アーキテクチャによりサポ
ートしなければならない、ということが示唆されている
。本発明では、その欠点は、プログラム依存性グラフ内
に集めたデータを使用することによって、克服すること
ができる。その従来技術では、命令スケジューリングに
対しプログラム依存性グラフを使用することについては
示唆してはいない。
これらの論文では、推測的命令は、相当な実行時間オー
バーヘッドを支えるマシン・アーキテクチャによりサポ
ートしなければならない、ということが示唆されている
。本発明では、その欠点は、プログラム依存性グラフ内
に集めたデータを使用することによって、克服すること
ができる。その従来技術では、命令スケジューリングに
対しプログラム依存性グラフを使用することについては
示唆してはいない。
【0024】事実、本発明においては、機械記述は、好
ましくは、ある範囲のコンピュータを表すパラメータ型
機械記述と特定のコンピュータ用の1組のスケジューリ
ング・ヒューリスティックとして、記憶させる。ある範
囲のコンピュータを表すパラメータ型機械記述と、ある
特定のコンピュータ用の1組のスケジューリング・ヒュ
ーリスティックと、を設けることによって、本命令スケ
ジューラを、ある範囲のコンピュータに対し効率的なコ
ードを生成するように適合させることができる。その1
組のヒューリスティックを変更することによって、本ス
ケジューラを、その範囲内の特定のコンピュータに対し
うまく同調させることができる。
ましくは、ある範囲のコンピュータを表すパラメータ型
機械記述と特定のコンピュータ用の1組のスケジューリ
ング・ヒューリスティックとして、記憶させる。ある範
囲のコンピュータを表すパラメータ型機械記述と、ある
特定のコンピュータ用の1組のスケジューリング・ヒュ
ーリスティックと、を設けることによって、本命令スケ
ジューラを、ある範囲のコンピュータに対し効率的なコ
ードを生成するように適合させることができる。その1
組のヒューリスティックを変更することによって、本ス
ケジューラを、その範囲内の特定のコンピュータに対し
うまく同調させることができる。
【0025】本発明はまた、上記の如き命令スケジュー
ラを備えるコンピュータを包含している。このコンピュ
ータは、スーパースカラー/スーパーパイプライン式の
アーキテクチャを備えることができる。
ラを備えるコンピュータを包含している。このコンピュ
ータは、スーパースカラー/スーパーパイプライン式の
アーキテクチャを備えることができる。
【0026】ある1つの好ましい実施例においては、そ
のコンピュータは、スーパースカラー/スーパーパイプ
ライン式のアーキテクチャを備えている。
のコンピュータは、スーパースカラー/スーパーパイプ
ライン式のアーキテクチャを備えている。
【0027】本発明の第2の面によれば、コンピュータ
における命令をスケジュールするスケジュール方法を提
供し、この方法は、以下のステップ、即ち、a) 入
力コード・シーケンス中の複数の命令間のデータ依存性
と制御依存性とを表すプログラム依存性グラフを生成す
るステップと、 b) 前記プログラム依存性グラフを使用して、前記
入力コード・シーケンスからの命令をスケジュールして
、前記入力コード・シーケンスの命令を、適当な場合に
は基本ブロック境界を超えて再編成して、出力コード・
シーケンスを生成するステップと、から成っている。
における命令をスケジュールするスケジュール方法を提
供し、この方法は、以下のステップ、即ち、a) 入
力コード・シーケンス中の複数の命令間のデータ依存性
と制御依存性とを表すプログラム依存性グラフを生成す
るステップと、 b) 前記プログラム依存性グラフを使用して、前記
入力コード・シーケンスからの命令をスケジュールして
、前記入力コード・シーケンスの命令を、適当な場合に
は基本ブロック境界を超えて再編成して、出力コード・
シーケンスを生成するステップと、から成っている。
【0028】
【実施例】以下、この詳細な説明の末尾の表とそして図
面を参照しながら本発明のある特定の例について説明す
る。
面を参照しながら本発明のある特定の例について説明す
る。
【0029】尚、その末尾に示した表1は、本発明の動
作を説明するためのプログラムの1例である。表2は、
表1のプログラムの1部に対応した注釈付きの機械命令
シーケンスである。表3は、第1のスケジューリング動
作後の表2の機械命令シーケンスを例示したものである
。表4は、それに代わるスケジューリング動作の後の表
2の機械命令シーケンスを例示したものである。
作を説明するためのプログラムの1例である。表2は、
表1のプログラムの1部に対応した注釈付きの機械命令
シーケンスである。表3は、第1のスケジューリング動
作後の表2の機械命令シーケンスを例示したものである
。表4は、それに代わるスケジューリング動作の後の表
2の機械命令シーケンスを例示したものである。
【0030】図1は、本発明による命令スケジューラ1
0の全体図を与える概略ブロック図である。この命令ス
ケジューラは、その入力11として命令シーケンスを取
りまた同シーケンス用の制御フローグラフ12を取り、
そしてその出力として、スケジュールし直した命令シー
ケンス18を提供するものである。命令スケジューラ1
0は、プログラム依存性グラフ(PDG)14を生成す
るためのプログラム依存性グラフ生成ロジック13と、
順序付けロジック(又はスケジューリング・ロジック)
15とより構成してある。その順序付けロジック15は
、パラメータ型機械記述(PMD)16と1組のヒュー
リスティック17と共に、PDGを使用して命令をスケ
ジュールし直すようにする。
0の全体図を与える概略ブロック図である。この命令ス
ケジューラは、その入力11として命令シーケンスを取
りまた同シーケンス用の制御フローグラフ12を取り、
そしてその出力として、スケジュールし直した命令シー
ケンス18を提供するものである。命令スケジューラ1
0は、プログラム依存性グラフ(PDG)14を生成す
るためのプログラム依存性グラフ生成ロジック13と、
順序付けロジック(又はスケジューリング・ロジック)
15とより構成してある。その順序付けロジック15は
、パラメータ型機械記述(PMD)16と1組のヒュー
リスティック17と共に、PDGを使用して命令をスケ
ジュールし直すようにする。
【0031】本発明のこの実施例の場合、プログラム依
存性グラフ生成ロジック13と順序付けロジック15と
は、コンパイラの一部、特にIBM RISCシステム
/6000コンピュータ用のコンパイラのIBM XL
ファミリーの一つを構成している。本実施例の場合、入
力命令シーケンス11及び出力命令シーケンス18と制
御フローグラフ12だけでなく、プログラム依存性グラ
フ14、パラメータ型機械記述16、及びヒューリステ
ィック組17も、その上でコンパイラが走るIBM R
ISCシステム/6000コンピュータのワーキング記
憶内に保持している。このIBM RISCシステム/
6000コピュータ・ファミリーに関するより詳細な情
報については、IBM研究開発ジャーナルのVol.3
4,No.1(1990年1月)に公表の論文を参照さ
れたい。
存性グラフ生成ロジック13と順序付けロジック15と
は、コンパイラの一部、特にIBM RISCシステム
/6000コンピュータ用のコンパイラのIBM XL
ファミリーの一つを構成している。本実施例の場合、入
力命令シーケンス11及び出力命令シーケンス18と制
御フローグラフ12だけでなく、プログラム依存性グラ
フ14、パラメータ型機械記述16、及びヒューリステ
ィック組17も、その上でコンパイラが走るIBM R
ISCシステム/6000コンピュータのワーキング記
憶内に保持している。このIBM RISCシステム/
6000コピュータ・ファミリーに関するより詳細な情
報については、IBM研究開発ジャーナルのVol.3
4,No.1(1990年1月)に公表の論文を参照さ
れたい。
【0032】本命令スケジューリングは、コンパイラの
レジスタ割当てフェーズを呼び込む前あるいはその後で
適用するようにすることができる。尚、命令を再編成す
るためにより大きな柔軟性を残すようにするためには、
そのレジスタ割当てステップ前に本命令スケージュリン
グを実行することが有利である。
レジスタ割当てフェーズを呼び込む前あるいはその後で
適用するようにすることができる。尚、命令を再編成す
るためにより大きな柔軟性を残すようにするためには、
そのレジスタ割当てステップ前に本命令スケージュリン
グを実行することが有利である。
【0033】以下、パラメータ型機械記述16について
説明する。このパラメータ型機械記述は、典型的なRI
SCプロセッサ(メモリを参照する命令がロード命令と
ストア命令とだけであり、一方、全計算をレジスタ内で
行う)を有するスーパースカラー・マシン用の総称的モ
デルに基づいている。このスーパースカラー・マシンは
、m個のタイプの機能性ユニットの集まりと見ることが
でき、この場合、このマシンは、各タイプのn1,n2
,....nmのユニットをもっている。コード中の各
命令は、潜在的に、ある特定のタイプの2以上のユニッ
トによって実行可能である。
説明する。このパラメータ型機械記述は、典型的なRI
SCプロセッサ(メモリを参照する命令がロード命令と
ストア命令とだけであり、一方、全計算をレジスタ内で
行う)を有するスーパースカラー・マシン用の総称的モ
デルに基づいている。このスーパースカラー・マシンは
、m個のタイプの機能性ユニットの集まりと見ることが
でき、この場合、このマシンは、各タイプのn1,n2
,....nmのユニットをもっている。コード中の各
命令は、潜在的に、ある特定のタイプの2以上のユニッ
トによって実行可能である。
【0034】各命令は、これのタイプの機能性ユニット
の1つにより実行されるのに、ある整数個のマシン・サ
イクルを必要とする。また、諸命令の実行にパイプライ
ン化の制約がかかり、これは、プログラム依存性グラフ
のデータ依存性エッジに割り当てるその整数個の遅れに
よってモデル化する。
の1つにより実行されるのに、ある整数個のマシン・サ
イクルを必要とする。また、諸命令の実行にパイプライ
ン化の制約がかかり、これは、プログラム依存性グラフ
のデータ依存性エッジに割り当てるその整数個の遅れに
よってモデル化する。
【0035】ここで、エッジ(I1,I2)がデータ依
存性エッジであるような、2つの命令I1及びI2の次
の例について考えることにする。もしt(t>1)がI
1の実行時間であり、d(d>0)が(I1,I2)に
割り当てた遅れであり、またI1を時刻kでスタートさ
せるようにスケジュールした場合には、性能の目的のた
め、I2は、k+t+dよりも早くにはスタートさせな
いようにスケジュールすべきである。ここで注意された
いことは、もしI2を上記よりも早くスタートさせるよ
うに(コンパイラが)スケジュールした場合には、これ
は、プログラムの正しさを損うことにはならない、とい
うことである。何故ならば、本マシンは、実行時間のそ
の遅れを収拾するために、ハードウエア・インターロッ
クを装備していると想定しているからである。パイプラ
イン化制的に起因する遅れの一般的概念についての詳細
は、参考文献R3とR4に見ることができる。それらの
遅れは、アーキテクチャ毎に異なり得るものである、と
いうことに注意されたい。
存性エッジであるような、2つの命令I1及びI2の次
の例について考えることにする。もしt(t>1)がI
1の実行時間であり、d(d>0)が(I1,I2)に
割り当てた遅れであり、またI1を時刻kでスタートさ
せるようにスケジュールした場合には、性能の目的のた
め、I2は、k+t+dよりも早くにはスタートさせな
いようにスケジュールすべきである。ここで注意された
いことは、もしI2を上記よりも早くスタートさせるよ
うに(コンパイラが)スケジュールした場合には、これ
は、プログラムの正しさを損うことにはならない、とい
うことである。何故ならば、本マシンは、実行時間のそ
の遅れを収拾するために、ハードウエア・インターロッ
クを装備していると想定しているからである。パイプラ
イン化制的に起因する遅れの一般的概念についての詳細
は、参考文献R3とR4に見ることができる。それらの
遅れは、アーキテクチャ毎に異なり得るものである、と
いうことに注意されたい。
【0036】このパラメータ型機械記述は、その総称的
モデルのスーパースカラ・マシンを、IBM RISC
システム/6000マシンに適合するような構成にして
いる。そのIBM RISCシステム/6000プロセ
ッサは、次のようにモデル化する。 ・m=3 − 固定小数点、浮動小数点及び分岐タ
イプの3つのタイプの機能性ユニットが存在する。 ・n1=1,n2=1,n3=1 ─ 単一の固定
小数点ユニット、単一の浮動小数点ユニット、及び単一
の分岐ユニットがある。 ・命令の大部分は ─ 1サイクルで実行するもの
であるが、乗算、除算等の多サイクル命令もある。 ・3つの主要なタイプの遅れがある。 ・ロード命令とこれの結果のレジスタを使用する命令と
の間の1サイクルの遅れ(遅延ロード)。 ・浮動小数点命令とこれの結果のレジスタを使用する命
令との間の1サイクルの遅延。 ・比較命令とこの比較結果を使用する分岐命令との間の
3サイクルの遅れ。より正確に述べると、通常、比較と
その各分岐命令との間のその3サイクルの遅れは、分岐
を行う時にのみ遭遇することになる。しかしながら、こ
こでは、簡単にするために、分岐を行うか否かに拘わら
ずそのような遅れがあると仮定する。
モデルのスーパースカラ・マシンを、IBM RISC
システム/6000マシンに適合するような構成にして
いる。そのIBM RISCシステム/6000プロセ
ッサは、次のようにモデル化する。 ・m=3 − 固定小数点、浮動小数点及び分岐タ
イプの3つのタイプの機能性ユニットが存在する。 ・n1=1,n2=1,n3=1 ─ 単一の固定
小数点ユニット、単一の浮動小数点ユニット、及び単一
の分岐ユニットがある。 ・命令の大部分は ─ 1サイクルで実行するもの
であるが、乗算、除算等の多サイクル命令もある。 ・3つの主要なタイプの遅れがある。 ・ロード命令とこれの結果のレジスタを使用する命令と
の間の1サイクルの遅れ(遅延ロード)。 ・浮動小数点命令とこれの結果のレジスタを使用する命
令との間の1サイクルの遅延。 ・比較命令とこの比較結果を使用する分岐命令との間の
3サイクルの遅れ。より正確に述べると、通常、比較と
その各分岐命令との間のその3サイクルの遅れは、分岐
を行う時にのみ遭遇することになる。しかしながら、こ
こでは、簡単にするために、分岐を行うか否かに拘わら
ずそのような遅れがあると仮定する。
【0037】以下、プログラム依存性グラフ生成ロジッ
ク13の動作について、表1の小さなコード部分を例と
して説明する。表1に例示のプログラムは、C言語で書
いたものであり、ある配列の内の最大と最小とを計算す
るものである。本プログラムでは、表1内のマークした
ループに注目すると判るように、配列“a”の2つの要
素をこのループを各反復の度に取出す。次に“a”のこ
れらの要素は、その一方を他方と比較し(もしu>vの
場合)、次いでそれらを、最大変数及び最小変数と比較
し、そして必要とあらばその最大と最小を更新する。表
1のループのIBM RISCシステム/6000疑似
コード(これは、XL−Cコンパイラが生成する実コー
ドに対応している)の抜粋については、表2に提示して
ある。
ク13の動作について、表1の小さなコード部分を例と
して説明する。表1に例示のプログラムは、C言語で書
いたものであり、ある配列の内の最大と最小とを計算す
るものである。本プログラムでは、表1内のマークした
ループに注目すると判るように、配列“a”の2つの要
素をこのループを各反復の度に取出す。次に“a”のこ
れらの要素は、その一方を他方と比較し(もしu>vの
場合)、次いでそれらを、最大変数及び最小変数と比較
し、そして必要とあらばその最大と最小を更新する。表
1のループのIBM RISCシステム/6000疑似
コード(これは、XL−Cコンパイラが生成する実コー
ドに対応している)の抜粋については、表2に提示して
ある。
【0038】本例の場合、説明し易くするために、IB
M RISCシステム/6000のある特徴を無力化さ
せる。その特徴とは、ある特別のカウンタ・レジスタ中
にループの反復変数を保持するというものである。反復
変数をそのレジスタ内に保持すれば、減分が可能になり
、単一の命令においてはそれがゼロかどうかテストする
ことにより、ループ制御命令のオーバーヘッドを効果的
に低減することができるようになる、というものである
。
M RISCシステム/6000のある特徴を無力化さ
せる。その特徴とは、ある特別のカウンタ・レジスタ中
にループの反復変数を保持するというものである。反復
変数をそのレジスタ内に保持すれば、減分が可能になり
、単一の命令においてはそれがゼロかどうかテストする
ことにより、ループ制御命令のオーバーヘッドを効果的
に低減することができるようになる、というものである
。
【0039】便宜上、表2のコード中の命令は、I1か
らI20まで番号を付け、そして表1のプログラムの対
応する文で注釈を付してある。また、表2のコード中の
10個の基本ブロックには、今後の説明のためにマーク
してある(B1−B10)。
らI20まで番号を付け、そして表1のプログラムの対
応する文で注釈を付してある。また、表2のコード中の
10個の基本ブロックには、今後の説明のためにマーク
してある(B1−B10)。
【0040】表2のコード中のどの命令も、分岐は別と
して、固定小数点ユニットにおいて1サイクルを必要と
し、一方、それら分岐は、分岐ユニットにおいて1サイ
クルかかるものである。IBM RISCシステム/6
000コンピュータの遅延形ロードの特徴のために、命
令I2と命令I3との間には、1サイクルの遅れがある
。また、各比較命令とそれに対応する分岐命令との間に
は、3サイクルの遅れがある。固定小数点ユニットと分
岐ユニットが並行してランするということを考慮に入れ
る、本コードは、最大変数及び最小変数の0回、1回又
は2回の更新(LR命令)が行われたかどうかに応じて
、それぞれ、20個、21個、22個のサイクルで実行
されると見積もることができる。
して、固定小数点ユニットにおいて1サイクルを必要と
し、一方、それら分岐は、分岐ユニットにおいて1サイ
クルかかるものである。IBM RISCシステム/6
000コンピュータの遅延形ロードの特徴のために、命
令I2と命令I3との間には、1サイクルの遅れがある
。また、各比較命令とそれに対応する分岐命令との間に
は、3サイクルの遅れがある。固定小数点ユニットと分
岐ユニットが並行してランするということを考慮に入れ
る、本コードは、最大変数及び最小変数の0回、1回又
は2回の更新(LR命令)が行われたかどうかに応じて
、それぞれ、20個、21個、22個のサイクルで実行
されると見積もることができる。
【0041】プログラム依存性グラフ14は、本コード
中の諸命令の制御依存性とデータ依存性とを全て要約す
るのに便利な方法である。プログラム依存性グラフ生成
ロジック13が生成するそのプログラム依存性グラフは
、制御依存性を表す制御依存性サブグラフとデータ依存
性を表すデータ依存性サブグラフより成っている。デー
タ依存性(これは、ある1つの命令があるデータ値を算
出しそしてその値をもう一つの命令が使うという基本思
想を担う)の概念は、ずっと以前にコンパイラにおいて
使用されていたが、制御依存性の概念は、ごく最近に導
入されたものである。以下の論文を参照されたい。 R16.フェランテ(J.Ferrante)、オッテ
ンステイン(K.J.Ottenstein)、及びワ
レン(J.D.Warren)の“プログラム依存性グ
ラフとその最適使用”,プログラミング言語とシステム
に関するACM紀要(the ACM Transac
tions on Programming Lang
uages and Systems),Vol. N
o.3,1987年7月,319−349ページ
中の諸命令の制御依存性とデータ依存性とを全て要約す
るのに便利な方法である。プログラム依存性グラフ生成
ロジック13が生成するそのプログラム依存性グラフは
、制御依存性を表す制御依存性サブグラフとデータ依存
性を表すデータ依存性サブグラフより成っている。デー
タ依存性(これは、ある1つの命令があるデータ値を算
出しそしてその値をもう一つの命令が使うという基本思
想を担う)の概念は、ずっと以前にコンパイラにおいて
使用されていたが、制御依存性の概念は、ごく最近に導
入されたものである。以下の論文を参照されたい。 R16.フェランテ(J.Ferrante)、オッテ
ンステイン(K.J.Ottenstein)、及びワ
レン(J.D.Warren)の“プログラム依存性グ
ラフとその最適使用”,プログラミング言語とシステム
に関するACM紀要(the ACM Transac
tions on Programming Lang
uages and Systems),Vol. N
o.3,1987年7月,319−349ページ
【0042】プログラム依存性グラフ生成ロジック13
が使用する制御フローグラフ12の1例、特に表2のル
ープの制御フローグラフを、図2に示す。都合の良いよ
うに、この制御フローグラフは、その上をコンパイラが
ランするコンピュータのメモリ内に、あるデータ構造の
形態で記憶させてあり、そのデータ構造は、そのグラフ
内の諸ノードに対応した一組のリンクしたレコードを有
しており、そして諸ノード間のエッジはレコード間のポ
インタにより表している。この制御フローグラフは、コ
ード・シーケンス中の基本ブロックとループを識別する
ため、また各ブロック内へのエントリ時に種々のプロセ
ッサ・レジスタの状態をチェックするための在来のコン
パイラ・ロジックによって、生成することができる。
が使用する制御フローグラフ12の1例、特に表2のル
ープの制御フローグラフを、図2に示す。都合の良いよ
うに、この制御フローグラフは、その上をコンパイラが
ランするコンピュータのメモリ内に、あるデータ構造の
形態で記憶させてあり、そのデータ構造は、そのグラフ
内の諸ノードに対応した一組のリンクしたレコードを有
しており、そして諸ノード間のエッジはレコード間のポ
インタにより表している。この制御フローグラフは、コ
ード・シーケンス中の基本ブロックとループを識別する
ため、また各ブロック内へのエントリ時に種々のプロセ
ッサ・レジスタの状態をチェックするための在来のコン
パイラ・ロジックによって、生成することができる。
【0043】図2の制御フローグラフには、便宜上、独
特のENTRYノードとEXITノードとを増補してあ
る。以下では、この制御フローグラフ内には、ENTR
Yノードは1つであるが、EXITノードは多分幾つか
ある、と仮定する。本プログラム中の強く結合した領域
(これは、本説明中で使用する用語においては、ループ
に相当している)については、単一エントリの制御フロ
ーグラフのその仮定は、制御フローグラフが変形可能で
あるという仮定に対応している。
特のENTRYノードとEXITノードとを増補してあ
る。以下では、この制御フローグラフ内には、ENTR
Yノードは1つであるが、EXITノードは多分幾つか
ある、と仮定する。本プログラム中の強く結合した領域
(これは、本説明中で使用する用語においては、ループ
に相当している)については、単一エントリの制御フロ
ーグラフのその仮定は、制御フローグラフが変形可能で
あるという仮定に対応している。
【0044】一つの制御フローグラフ中のノードXから
ノードYへのエッジの意味は、プログラムの制御が基本
ブロックXから基本ブロックYへ流れるということであ
る。それらエッジ(即ち、データ構造中のポインタ)に
は、一つの基本ブロックからもう一つのブロックへ至る
プログラムの流れを制御する条件によって注釈をつける
のが普通である。しかしながら、図2のグラフからは、
何れの基本ブロックが何れの条件の下で実行されるのか
は、明らかではない。
ノードYへのエッジの意味は、プログラムの制御が基本
ブロックXから基本ブロックYへ流れるということであ
る。それらエッジ(即ち、データ構造中のポインタ)に
は、一つの基本ブロックからもう一つのブロックへ至る
プログラムの流れを制御する条件によって注釈をつける
のが普通である。しかしながら、図2のグラフからは、
何れの基本ブロックが何れの条件の下で実行されるのか
は、明らかではない。
【0045】次に、制御依存性サブグラフの生成につい
て、以下に図3を参照して説明する。この図3は、表2
のループについての制御依存性サブグラフを表している
。都合の良いように、プログラム依存性グラフ生成ロジ
ック13は、あるデータ構造の形態で制御依存性サブグ
ラフを生成するが、そのデータ構造は、グラフ内の諸ノ
ードに対応する一組のリンクしたレコードを有しており
、そして諸ノード間のエッジは、レコード間のポインタ
により表している。このグラフの各ノードは、図2の制
御フローグラフと同様に、プログラムの基本ブロックに
相当したものである。しかしながら、ノードXからノー
ドYへのエッジは、基本ブロックYが、基本ブロックX
の終わりのところで計算される条件の下で実行される、
ということを意味している(基本ブロックXの終わりで
、それらエッジには、同じく、対応する条件で注釈を付
してある)。図3では、実線のエッジは制御依存性エッ
ジを示しており、他方、点線のエッジについては、以下
に説明する。例えば、図3において、B1から出る幾つ
かのエッジは、B1の終りでの条件が真(T)であると
評価された時にB2とB4が実行されることを示し、他
方、B6とB8は、その同じ条件が偽(F)であった場
合に実行される、ということを示している。
て、以下に図3を参照して説明する。この図3は、表2
のループについての制御依存性サブグラフを表している
。都合の良いように、プログラム依存性グラフ生成ロジ
ック13は、あるデータ構造の形態で制御依存性サブグ
ラフを生成するが、そのデータ構造は、グラフ内の諸ノ
ードに対応する一組のリンクしたレコードを有しており
、そして諸ノード間のエッジは、レコード間のポインタ
により表している。このグラフの各ノードは、図2の制
御フローグラフと同様に、プログラムの基本ブロックに
相当したものである。しかしながら、ノードXからノー
ドYへのエッジは、基本ブロックYが、基本ブロックX
の終わりのところで計算される条件の下で実行される、
ということを意味している(基本ブロックXの終わりで
、それらエッジには、同じく、対応する条件で注釈を付
してある)。図3では、実線のエッジは制御依存性エッ
ジを示しており、他方、点線のエッジについては、以下
に説明する。例えば、図3において、B1から出る幾つ
かのエッジは、B1の終りでの条件が真(T)であると
評価された時にB2とB4が実行されることを示し、他
方、B6とB8は、その同じ条件が偽(F)であった場
合に実行される、ということを示している。
【0046】大域スケジューリングという目的のため、
プログラム依存性グラフ生成ロジックは、順方向制御依
存性グラフのみを生成する。この制御依存性サブグラフ
を生成するためには、プログラム依存性グラフ生成ロジ
ックは、まず、全ての事後支配関係を識別する事後支配
木を生成し、そしてこれから順方向制御依存性グラフを
生成する。その制御フローグラフの後方エッジから生ず
る、もしくはその後方エッジを伝播する制御依存性につ
いては、生成しない。かくして、図3の制御依存性サブ
グラフは、順方向制御依存性グラフとなる。尚、この順
方向制御依存性グラフは、非循環性であることに注意さ
れたい。
プログラム依存性グラフ生成ロジックは、順方向制御依
存性グラフのみを生成する。この制御依存性サブグラフ
を生成するためには、プログラム依存性グラフ生成ロジ
ックは、まず、全ての事後支配関係を識別する事後支配
木を生成し、そしてこれから順方向制御依存性グラフを
生成する。その制御フローグラフの後方エッジから生ず
る、もしくはその後方エッジを伝播する制御依存性につ
いては、生成しない。かくして、図3の制御依存性サブ
グラフは、順方向制御依存性グラフとなる。尚、この順
方向制御依存性グラフは、非循環性であることに注意さ
れたい。
【0047】図2と図3のグラフを比較すると判るよう
に、(B8からB10へのエッジのように)制御フロー
グラフ中に現れたある種のエッジは、制御依存性サブグ
ラフ中には存在していないが、その一方で、制御依存性
サブグラフ内には、(B1からB4へ至るエッジのよう
に)制御フローグラフ内に初めから存在しないエッジが
ある。本プログラム依存性グラフのこの制御依存性サブ
グラフから判るように、同じ組の制御依存性を有する基
本ブロック(例えば図3のB1とB10,又はB2とB
4,又はB6とB8)は、現存するデータ依存性のとこ
ろまで並行して実施することができる。このことは、そ
のような基本ブロックの命令を一緒にスケジュール可能
であることを意味している。
に、(B8からB10へのエッジのように)制御フロー
グラフ中に現れたある種のエッジは、制御依存性サブグ
ラフ中には存在していないが、その一方で、制御依存性
サブグラフ内には、(B1からB4へ至るエッジのよう
に)制御フローグラフ内に初めから存在しないエッジが
ある。本プログラム依存性グラフのこの制御依存性サブ
グラフから判るように、同じ組の制御依存性を有する基
本ブロック(例えば図3のB1とB10,又はB2とB
4,又はB6とB8)は、現存するデータ依存性のとこ
ろまで並行して実施することができる。このことは、そ
のような基本ブロックの命令を一緒にスケジュール可能
であることを意味している。
【0048】次に、本スケジューラを理解し易くするた
めに、幾つかの定義(D)を導入する。但し、XとYは
、制御フローグラフの2つのノードである。 ・D1 − Xが、エントリからYへ至る全てのパ
ス上に現われる場合、その場合のみ、Xは、Yを支配す
る。 ・D2 − Xが、Yから出口へ至る全てのパス上
に現われる場合、その場合のみ、Xは、Yを事後支配す
る。 ・D3 − XがYを支配しかつYがXを事後支配
する場合のみ、XとYは等価である。 ・D4 − ある命令をYからXへ移動させること
は、XがYに等価でかつその場合にのみ、“有効”であ
ると称する。 ・D5 − ある命令をYからXへ移動させること
は、もしYがXを事後支配しない場合には、“推測的”
と称する(即ち、そのような命令は、その結果が本プロ
グラムの起こり得る実行の内の若干のみにおいて使用す
ることができるものであるから、“推測的”と言う。)
。 ・D6 − ある命令をYからXへ移動させること
は、もしXがYを支配しない場合には、複製を要すると
称する。
めに、幾つかの定義(D)を導入する。但し、XとYは
、制御フローグラフの2つのノードである。 ・D1 − Xが、エントリからYへ至る全てのパ
ス上に現われる場合、その場合のみ、Xは、Yを支配す
る。 ・D2 − Xが、Yから出口へ至る全てのパス上
に現われる場合、その場合のみ、Xは、Yを事後支配す
る。 ・D3 − XがYを支配しかつYがXを事後支配
する場合のみ、XとYは等価である。 ・D4 − ある命令をYからXへ移動させること
は、XがYに等価でかつその場合にのみ、“有効”であ
ると称する。 ・D5 − ある命令をYからXへ移動させること
は、もしYがXを事後支配しない場合には、“推測的”
と称する(即ち、そのような命令は、その結果が本プロ
グラムの起こり得る実行の内の若干のみにおいて使用す
ることができるものであるから、“推測的”と言う。)
。 ・D6 − ある命令をYからXへ移動させること
は、もしXがYを支配しない場合には、複製を要すると
称する。
【0049】順序付けロジック15は、“有効”と“推
測的”の双方のスケジューリングに対して制御依存性サ
ブグラフを使用する。等価ノードを発見するためには、
その順序付けロジックは、等しく制御依存的なノード(
これらは、同じ組のノードから同じ条件で垂れ下がる)
についての制御依存性サブグラフ・データ構造を探索す
る。例えば、図3において、B1とB10は、それらが
何れのノードにも依存していないため、等価である。ま
た、B2とB4は共に、真の条件の下でB1に依存する
から、等価である。この図3において、等価なノードは
、点線のエッジによりマークしてあり、そしてそれらエ
ッジの方向は、ノード間の支配関係を示している。例え
ば、等価のノードB1とB10の場合、B1は、B10
を支配している。
測的”の双方のスケジューリングに対して制御依存性サ
ブグラフを使用する。等価ノードを発見するためには、
その順序付けロジックは、等しく制御依存的なノード(
これらは、同じ組のノードから同じ条件で垂れ下がる)
についての制御依存性サブグラフ・データ構造を探索す
る。例えば、図3において、B1とB10は、それらが
何れのノードにも依存していないため、等価である。ま
た、B2とB4は共に、真の条件の下でB1に依存する
から、等価である。この図3において、等価なノードは
、点線のエッジによりマークしてあり、そしてそれらエ
ッジの方向は、ノード間の支配関係を示している。例え
ば、等価のノードB1とB10の場合、B1は、B10
を支配している。
【0050】この制御依存性サブグラフは、命令を一つ
のブロックから別のブロックへ移動させるための“推測
度”を与えている。ある“推測的”命令をスケジュール
する際、一つもしくはそれ以上の分岐の結果には、常に
賭けが存在し、そして、それらの分岐の方向が正確に推
測した場合のみ、移動させた命令は、実際に有益なもの
となる。しかしながら、その推測が誤っていた場合には
、何も失われず、従って何も得ることはできない。この
制御依存性サブグラフは、どの対のノードに対しても、
(“推測的”スケジューリングの場合)賭けを行う多く
の分岐を提供している。例えば、命令をB8からB1へ
移動させる場合、単一の分岐の結果について賭けを行う
が、その理由は、図3のB8からB1へ移動させる場合
には、一つのエッジのみしかクロスしていないからであ
る。このことは、図2の制御フローグラフからは明らか
ではない点に注意されたい。B5からB1へ移動させる
場合には、図3の2つのエッジがクロスしているため、
2つの分岐の結果に対し賭けが存在する。
のブロックから別のブロックへ移動させるための“推測
度”を与えている。ある“推測的”命令をスケジュール
する際、一つもしくはそれ以上の分岐の結果には、常に
賭けが存在し、そして、それらの分岐の方向が正確に推
測した場合のみ、移動させた命令は、実際に有益なもの
となる。しかしながら、その推測が誤っていた場合には
、何も失われず、従って何も得ることはできない。この
制御依存性サブグラフは、どの対のノードに対しても、
(“推測的”スケジューリングの場合)賭けを行う多く
の分岐を提供している。例えば、命令をB8からB1へ
移動させる場合、単一の分岐の結果について賭けを行う
が、その理由は、図3のB8からB1へ移動させる場合
には、一つのエッジのみしかクロスしていないからであ
る。このことは、図2の制御フローグラフからは明らか
ではない点に注意されたい。B5からB1へ移動させる
場合には、図3の2つのエッジがクロスしているため、
2つの分岐の結果に対し賭けが存在する。
【0051】上記のことから、更に一つの定義を導き出
すことができる。 ・D7 − YからXへ命令を移動させることは、
もしXからYへ至る長さNのパスが制御依存性サブグラ
フ中に存在する場合、N−分岐“推測的”であると称す
る。 この定義D7が与えられると、“有効”スケジューリン
グは、0−分岐“推測的”と言うことができる。
すことができる。 ・D7 − YからXへ命令を移動させることは、
もしXからYへ至る長さNのパスが制御依存性サブグラ
フ中に存在する場合、N−分岐“推測的”であると称す
る。 この定義D7が与えられると、“有効”スケジューリン
グは、0−分岐“推測的”と言うことができる。
【0052】プログラム依存性グラフ生成ロジックは、
基本ブロック・レベルで制御依存性を計算する一方、命
令毎にデータ依存性を計算する。ブロック間データ及び
ブロック間データ依存性の双方について、計算する。デ
ータ依存性は、レジスタの使用によって、又はメモリ・
ロケーションをアクセスすることによって生ずることが
ある本コード中の“Ix”と“Iy”の2つの命令につ
いて、IxからIyへ至るデータ依存性エッジは、以下
のケースの一つの場合に、データ依存性サブグラフ内へ
挿入する。 ・Ixにおいて定義したレジスタを、Iyにおいて使用
する(フロー依存性); ・Ixにおいて使用したレジスを、Iyにおいて定義す
る(反依存性); ・Ixにおいて定義したレジスタを、Iyにおいて定義
する(出力依存性); ・aとbは共に、メモリに触れる命令(ロード、ストア
、サブルーチンに対する呼出し)であり、それらが異な
るロケーションをアドレス指定することについて証明す
ることは、不可能である。
基本ブロック・レベルで制御依存性を計算する一方、命
令毎にデータ依存性を計算する。ブロック間データ及び
ブロック間データ依存性の双方について、計算する。デ
ータ依存性は、レジスタの使用によって、又はメモリ・
ロケーションをアクセスすることによって生ずることが
ある本コード中の“Ix”と“Iy”の2つの命令につ
いて、IxからIyへ至るデータ依存性エッジは、以下
のケースの一つの場合に、データ依存性サブグラフ内へ
挿入する。 ・Ixにおいて定義したレジスタを、Iyにおいて使用
する(フロー依存性); ・Ixにおいて使用したレジスを、Iyにおいて定義す
る(反依存性); ・Ixにおいて定義したレジスタを、Iyにおいて定義
する(出力依存性); ・aとbは共に、メモリに触れる命令(ロード、ストア
、サブルーチンに対する呼出し)であり、それらが異な
るロケーションをアドレス指定することについて証明す
ることは、不可能である。
【0053】一個のレジスタの定義からその使用に導く
データ依存性エッジは、基礎にあるマシンを特徴付ける
ような(潜在的に非零の)遅れを担うものである。残り
のデータ依存性エッジは、ゼロ遅れを担うものである。
データ依存性エッジは、基礎にあるマシンを特徴付ける
ような(潜在的に非零の)遅れを担うものである。残り
のデータ依存性エッジは、ゼロ遅れを担うものである。
【0054】データ依存性の例として、表2内の基本ブ
ロックB1のデータ依存性について、その表2からの命
令をその番号で参照することにより考察する。I1はr
31を使用し、I2はr31の新たな値を規定するから
、I1からI2へは、反依存性がある。I3は、それぞ
れI1とI2で規定されたr12とr0を使用するから
、I1とI2の双方からI3へ至るフローデータ依存性
がある。エッジ(I1,I3)と(I2,I3)は、I
1とI2が共にロード命令(遅延形ロード)であるから
、1サイクルの遅れを担っている。また、I3は、I4
が使用するcr7をセットするから、I3からI4には
データ依存性エッジがある。このエッジは、I3が比較
命令でありまたI4がそれに対応する分岐命令であるか
ら、3サイクルの遅れをもっている。
ロックB1のデータ依存性について、その表2からの命
令をその番号で参照することにより考察する。I1はr
31を使用し、I2はr31の新たな値を規定するから
、I1からI2へは、反依存性がある。I3は、それぞ
れI1とI2で規定されたr12とr0を使用するから
、I1とI2の双方からI3へ至るフローデータ依存性
がある。エッジ(I1,I3)と(I2,I3)は、I
1とI2が共にロード命令(遅延形ロード)であるから
、1サイクルの遅れを担っている。また、I3は、I4
が使用するcr7をセットするから、I3からI4には
データ依存性エッジがある。このエッジは、I3が比較
命令でありまたI4がそれに対応する分岐命令であるか
ら、3サイクルの遅れをもっている。
【0055】ここで気付くべき重要なことは、計算した
制御依存性とデータ依存性とは、共に非循環性であるか
ら、その結果として生ずるプログラム依存性グラフも又
非循環性である、ということである。このことは、順序
付けロジックによる命令のスケジュールをし易くする。
制御依存性とデータ依存性とは、共に非循環性であるか
ら、その結果として生ずるプログラム依存性グラフも又
非循環性である、ということである。このことは、順序
付けロジックによる命令のスケジュールをし易くする。
【0056】この順序付けロジックは、プログラム中の
命令をループ毎にスケジュールする。最も内側のループ
から始まって外側のループへとスケジュールするように
する。このスケジューリング・プロセスを全般的に支配
する幾つかの原則がある。 ・命令は、決してループから外へ移動させたりあるいは
ループ内へ移動させたりしない。 ・命令は、全て上部方向へ移動させる。即ち、制御フロ
ーエッジに逆らって移動させる。 ・プログラム中の諸分岐の元の順序は、保持する。
命令をループ毎にスケジュールする。最も内側のループ
から始まって外側のループへとスケジュールするように
する。このスケジューリング・プロセスを全般的に支配
する幾つかの原則がある。 ・命令は、決してループから外へ移動させたりあるいは
ループ内へ移動させたりしない。 ・命令は、全て上部方向へ移動させる。即ち、制御フロ
ーエッジに逆らって移動させる。 ・プログラム中の諸分岐の元の順序は、保持する。
【0057】図4は、順序付けロジックによる命令のス
ケジューリングを示すフロー図である。そのスケジュー
リングは、基本ブロックを一時に1つずつ処理すること
によって行う。それら基本ブロックには、位相幾何学的
順序で出会うことになる。即ち、もしその制御フローグ
ラフ内にXからYへ至るパスがある場合には、Xは、Y
の前に処理する。
ケジューリングを示すフロー図である。そのスケジュー
リングは、基本ブロックを一時に1つずつ処理すること
によって行う。それら基本ブロックには、位相幾何学的
順序で出会うことになる。即ち、もしその制御フローグ
ラフ内にXからYへ至るパスがある場合には、Xは、Y
の前に処理する。
【0058】もしXが現在スケジュール中の基本ブロッ
クである場合には、順序付けロジックは、Xに対する1
組C(X)の候補ブロックを識別する。即ち、命令をX
に寄与させることの可能な基本ブロックのリストを識別
する。何れのブロックが候補ブロックであるかの判定は
、適用すべきスケジューリング原則に従って、制御依存
性グラフから行う。本実施例においては、2つのレベル
のスケジューリングがある。 1.有効命令のみ: この場合、C(X)は、Xと等
価でかつXによって支配される全ブロックを包含する。 2.1分岐“推測的”: C(X)は、以下のブロッ
クを含む。 a.Xと等価でかつXによって支配される全ブロック。 b.制御依存性サブグラフ中のXの直後のもの全部。 c.制御依存性サブグラフ中の“a”ブロックの直後の
もの全部。
クである場合には、順序付けロジックは、Xに対する1
組C(X)の候補ブロックを識別する。即ち、命令をX
に寄与させることの可能な基本ブロックのリストを識別
する。何れのブロックが候補ブロックであるかの判定は
、適用すべきスケジューリング原則に従って、制御依存
性グラフから行う。本実施例においては、2つのレベル
のスケジューリングがある。 1.有効命令のみ: この場合、C(X)は、Xと等
価でかつXによって支配される全ブロックを包含する。 2.1分岐“推測的”: C(X)は、以下のブロッ
クを含む。 a.Xと等価でかつXによって支配される全ブロック。 b.制御依存性サブグラフ中のXの直後のもの全部。 c.制御依存性サブグラフ中の“a”ブロックの直後の
もの全部。
【0059】現行ブロックについて1組の候補ブロック
を(20で)初期化した後、本順序付けロジックは、そ
の組の候補ブロックをスケジューリングのために(21
で)計算する。スケジューリング実行の準備が完了して
いる命令は、レディ・リスト中に保持する。ある1つの
命令Iは、もしこれが以下のカテゴリーの内の一つに属
する場合には、ブロックXにおけるスケジューリング用
候補となる。 ・Iは、初めにXに属していた。 ・Iは、Xの候補ブロック集合中のブロックの一つに属
し、かつ 1.Iは、“有効”であり、しかも基本ブロック境界を
超えて移動することが許される。(サブルーチンに対す
る呼出しの如き、決して基本ブロック境界を超えて移動
させない命令がある。) 2.Iは、“推測的”であり、しかもIは、推測的にス
ケジュールすることが許されている。
を(20で)初期化した後、本順序付けロジックは、そ
の組の候補ブロックをスケジューリングのために(21
で)計算する。スケジューリング実行の準備が完了して
いる命令は、レディ・リスト中に保持する。ある1つの
命令Iは、もしこれが以下のカテゴリーの内の一つに属
する場合には、ブロックXにおけるスケジューリング用
候補となる。 ・Iは、初めにXに属していた。 ・Iは、Xの候補ブロック集合中のブロックの一つに属
し、かつ 1.Iは、“有効”であり、しかも基本ブロック境界を
超えて移動することが許される。(サブルーチンに対す
る呼出しの如き、決して基本ブロック境界を超えて移動
させない命令がある。) 2.Iは、“推測的”であり、しかもIは、推測的にス
ケジュールすることが許されている。
【0060】全ての命令が、推測的にスケジュールする
ことが許されているわけではない。例えば、“推測的”
ロードは、存在しない仮想メモリ・ロケーションに対す
るアクセスに起因する例外を引き起こすことがある。順
序付けロジックは、何れの命令が推測的にスケジュール
可能であるか、またこの場合どのような結果が期待され
るかについて判定する。
ことが許されているわけではない。例えば、“推測的”
ロードは、存在しない仮想メモリ・ロケーションに対す
るアクセスに起因する例外を引き起こすことがある。順
序付けロジックは、何れの命令が推測的にスケジュール
可能であるか、またこの場合どのような結果が期待され
るかについて判定する。
【0061】その後、順序付けロジック15は、進行し
て、レディ・リストから命令を所与の命令サイクルに対
しスケジュールする(22)。このスケジューリング・
プロセスの間、順序付けロジックは、そのレディ命令リ
スト(即ち、データ依存性と制御依存性とが満たされた
“有効”候補命令と、データ依存性のみが満たされてい
る“推測的”候補命令)を更新する。サイクル毎に、マ
シン・アーキテクチャが必要とする数の多くの命令を、
次にスケジュールするべきレディ・リストからピックア
ップする。もしレディ命令が多過ぎる場合には、それら
の内の“最良のもの”を、その優先順位に基づいて順序
付けロジックが選択する。一旦、ある命令をスケジュー
ルするべくピックアップすると、この命令を、コード中
の適当な位置へ移動させ、そしてそれに続く命令に対す
るそれのデータ依存性と制御依存性とが満たされたもの
としてマークし、これにより、潜在的に新たな命令がレ
ディ状態となれるようにする。このプロセスは、ブロッ
クX内の全命令をスケジュールするまで、繰返す(23
)。その全命令をスケジュールした後、次のブロックの
スケジュールを行って、本ループ内の全ブロックをスケ
ジュールを行うまで続ける(25)。
て、レディ・リストから命令を所与の命令サイクルに対
しスケジュールする(22)。このスケジューリング・
プロセスの間、順序付けロジックは、そのレディ命令リ
スト(即ち、データ依存性と制御依存性とが満たされた
“有効”候補命令と、データ依存性のみが満たされてい
る“推測的”候補命令)を更新する。サイクル毎に、マ
シン・アーキテクチャが必要とする数の多くの命令を、
次にスケジュールするべきレディ・リストからピックア
ップする。もしレディ命令が多過ぎる場合には、それら
の内の“最良のもの”を、その優先順位に基づいて順序
付けロジックが選択する。一旦、ある命令をスケジュー
ルするべくピックアップすると、この命令を、コード中
の適当な位置へ移動させ、そしてそれに続く命令に対す
るそれのデータ依存性と制御依存性とが満たされたもの
としてマークし、これにより、潜在的に新たな命令がレ
ディ状態となれるようにする。このプロセスは、ブロッ
クX内の全命令をスケジュールするまで、繰返す(23
)。その全命令をスケジュールした後、次のブロックの
スケジュールを行って、本ループ内の全ブロックをスケ
ジュールを行うまで続ける(25)。
【0062】ステップ22で順序付けロジックがスケジ
ュールするべき命令を判定するための命令の相対的優先
順位は、1組のヒューリスティックに従って導出する。 例えば、その命令が属する基本ブロックのデータ依存性
サブグラフの根に至るパスの遅れの最大数は、ある命令
の優先順位を決めるためのヒューリスティックとして選
択する。しかしながら、他のヒューリスティックも、そ
の代わりとして、あるいはそれに加えて使用することが
できる。
ュールするべき命令を判定するための命令の相対的優先
順位は、1組のヒューリスティックに従って導出する。 例えば、その命令が属する基本ブロックのデータ依存性
サブグラフの根に至るパスの遅れの最大数は、ある命令
の優先順位を決めるためのヒューリスティックとして選
択する。しかしながら、他のヒューリスティックも、そ
の代わりとして、あるいはそれに加えて使用することが
できる。
【0063】表3は、どのように大域スケジューリング
が働くのかについての1例を示すものである。詳しくは
、この表3は、いわゆる有効命令のみが基本ブロック境
界を超えて移動することが許された状態で、大域スケジ
ューリングを表2の命令シーケンスに適用した結果を示
している。表3に示したそのコードは、ループの1反復
当たりほぼ13サイクルで実行できる。
が働くのかについての1例を示すものである。詳しくは
、この表3は、いわゆる有効命令のみが基本ブロック境
界を超えて移動することが許された状態で、大域スケジ
ューリングを表2の命令シーケンスに適用した結果を示
している。表3に示したそのコードは、ループの1反復
当たりほぼ13サイクルで実行できる。
【0064】表4は、大域スケジューリングを表2の命
令ーケンスに適用した結果を示しており、これでは、推
測的スケジューリングも行っている(即ち、推測的命令
も基本ブロック境界を超えて移動することが許されてい
る)。この表3に示すコードは、ループの各反復当たり
ほぼ12サイクルで実行できる。
令ーケンスに適用した結果を示しており、これでは、推
測的スケジューリングも行っている(即ち、推測的命令
も基本ブロック境界を超えて移動することが許されてい
る)。この表3に示すコードは、ループの各反復当たり
ほぼ12サイクルで実行できる。
【0065】以上に、囲んだループの範囲内で命令を基
本ブロック境界を十分超えて移動させことが可能な大域
命令スケジューリング用のスケジューラについて説明し
た。このスケジューラは、フェランテ外が提案したプロ
グラム依存性グラフ(参考文献R14を参照)を用いて
、コンパイラにおいて使用するようにし、これによって
、ベクトル化及びマルチプロセッサ用のコードの生成と
いう目的のための並行性を露呈させるようにしている。 本スケジューラは、スーパースカラー・マシンのファミ
リのパラメータ型記述と組み合わせてそのプログラム依
存性グラフを使用し、これにより、コンパイラを最適化
することによって大域命令スケジューリングする上で強
力な骨組みを提供する。
本ブロック境界を十分超えて移動させことが可能な大域
命令スケジューリング用のスケジューラについて説明し
た。このスケジューラは、フェランテ外が提案したプロ
グラム依存性グラフ(参考文献R14を参照)を用いて
、コンパイラにおいて使用するようにし、これによって
、ベクトル化及びマルチプロセッサ用のコードの生成と
いう目的のための並行性を露呈させるようにしている。 本スケジューラは、スーパースカラー・マシンのファミ
リのパラメータ型記述と組み合わせてそのプログラム依
存性グラフを使用し、これにより、コンパイラを最適化
することによって大域命令スケジューリングする上で強
力な骨組みを提供する。
【0066】本スケジューラは、一組のヒューリスティ
ックを使用して、プログラム依存性グラフ中の1つの命
令の相対的優先順位を提供するようにする。用いるヒュ
ーリスティック・ルールの組は、このスケジューラを使
用するよう意図するマシンの特定のアーキテクチャに依
存するものである。ヒューリスティック・ルールの種類
の例は、クリティカルなパス情報に関するものである。 本スケジューラは、命令をその優先順位に応じて発し、
これにより、上記の如くマシン資源を十分活用しようと
試みる。上記ヒューリスティック・ルールの組を変更す
ることによって、本スケジューラを、このスケジューラ
の残りの部分を変更せずに、選択されたマシン・アーキ
テクチャに対しうまく同調させる。
ックを使用して、プログラム依存性グラフ中の1つの命
令の相対的優先順位を提供するようにする。用いるヒュ
ーリスティック・ルールの組は、このスケジューラを使
用するよう意図するマシンの特定のアーキテクチャに依
存するものである。ヒューリスティック・ルールの種類
の例は、クリティカルなパス情報に関するものである。 本スケジューラは、命令をその優先順位に応じて発し、
これにより、上記の如くマシン資源を十分活用しようと
試みる。上記ヒューリスティック・ルールの組を変更す
ることによって、本スケジューラを、このスケジューラ
の残りの部分を変更せずに、選択されたマシン・アーキ
テクチャに対しうまく同調させる。
【0067】スケジューリング・プロセス中、命令を、
現存の制御依存性及びデータ依存性まで1つの基本ブロ
ックから別のものへと移動させることが可能である。こ
の骨組みにおいて、“有効”命令が可能になる。その命
令とは、プログラムの実行をスケジュールする間少なく
とも1回その結果が使用されるような命令のみを意味す
る。オプションとして、“推測的”命令を、所望の制約
内で移動させることもできる。命令スケジューリングに
対するそのより野心的なアプローチにおいては、そのよ
うな“推測的”命令は、XからYに対して存在するどん
な制御依存性にも拘わらず、基本ブロックXから基本ブ
ロックYへ移動させる。もしある“推測的”命令を、さ
もなければ遊んでいる機能性ユニットによって実行され
るような位置に移動させる場合、そのような変形だけが
、プログラムの走行時間を改善でき、従って有益である
と考えられる。
現存の制御依存性及びデータ依存性まで1つの基本ブロ
ックから別のものへと移動させることが可能である。こ
の骨組みにおいて、“有効”命令が可能になる。その命
令とは、プログラムの実行をスケジュールする間少なく
とも1回その結果が使用されるような命令のみを意味す
る。オプションとして、“推測的”命令を、所望の制約
内で移動させることもできる。命令スケジューリングに
対するそのより野心的なアプローチにおいては、そのよ
うな“推測的”命令は、XからYに対して存在するどん
な制御依存性にも拘わらず、基本ブロックXから基本ブ
ロックYへ移動させる。もしある“推測的”命令を、さ
もなければ遊んでいる機能性ユニットによって実行され
るような位置に移動させる場合、そのような変形だけが
、プログラムの走行時間を改善でき、従って有益である
と考えられる。
【0068】
表 1 /* find the largest an
d the smallest number in
a given array */ main()
{ static a□ = { 5,5,5,2,5,5,5,5,5,5,5,
5,5,5,5,5,5,5, 5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,9
, }; int i,u,v,min,max, n=s
izeof(a)/sizeof(a[0]);
min=a[0]; max=min; i=1;
/****************** LOO
P STARTS ***************
******************/ Whi
le (i < n) { u=a[i]
; v=a[i+1]; if (u>v
) { if (u>max) m
ax=u; if (v<m
in) min=v; } else { if (v>max) m
ax=v; if (u<m
in) min=u; } i= i+2; } /****************** L
OOP ENDS ***************
********************/ p
rintf(”min=%d max=%d\n”,m
in,max); }
表 1 /* find the largest an
d the smallest number in
a given array */ main()
{ static a□ = { 5,5,5,2,5,5,5,5,5,5,5,
5,5,5,5,5,5,5, 5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,9
, }; int i,u,v,min,max, n=s
izeof(a)/sizeof(a[0]);
min=a[0]; max=min; i=1;
/****************** LOO
P STARTS ***************
******************/ Whi
le (i < n) { u=a[i]
; v=a[i+1]; if (u>v
) { if (u>max) m
ax=u; if (v<m
in) min=v; } else { if (v>max) m
ax=v; if (u<m
in) min=u; } i= i+2; } /****************** L
OOP ENDS ***************
********************/ p
rintf(”min=%d max=%d\n”,m
in,max); }
【0069】
表 2 ... more instruction
s here ... ************
******* LOOP STARTS ***
************************
CL.O: (I1) L r12=
a(r31,4)
load u (I2) LU
r0,r31=a(r31,8)
load v (I3) C
cr7=r12,r0
u > v (I4)
BF CL.4,cr7,0×2
/gt −−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−− END BL1 (
I5) C cr6=r12,
r30 u >
max (I6) BF C
L.6,cr6,0×2gt −−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−− E
ND BL2 (I7) LR
r30=r12
max = u −−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−− E
ND BL3 CL.6: (I8) C cr7=
r0,r28
v < min (I9) BF
CL.9,cr7,0×1/1t −−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−− END BL4 (I10) LR
r28=r0
min = v (I11
) B CL.9 −−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−− END BL5 CL.4: (I12) C cr6=
r0,r30
v > max (I13) BF
CL.11,cr6,0×2/gt −−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−− END BL6 (I14) LR
r30=r0
max = v −−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−− END BL7 CL.11: (I15) C cr7=
r12,r28
u < min (I16) BF
CL.9,cr7,0×1/1t −−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−− END BL8 (I17) LR
r28=r12
min = u −−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−− END BL9 CL.9: (I18) AI r29=
r29,2
i = i+2 (I19) C
cr4=r29,171
i < n (I20) BT
CL.0,cr4,0×1/1t
−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−− END BL10 *****
************** LOOP ENDS
*************************
******** ... more ins
tructions here ...
表 2 ... more instruction
s here ... ************
******* LOOP STARTS ***
************************
CL.O: (I1) L r12=
a(r31,4)
load u (I2) LU
r0,r31=a(r31,8)
load v (I3) C
cr7=r12,r0
u > v (I4)
BF CL.4,cr7,0×2
/gt −−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−− END BL1 (
I5) C cr6=r12,
r30 u >
max (I6) BF C
L.6,cr6,0×2gt −−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−− E
ND BL2 (I7) LR
r30=r12
max = u −−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−− E
ND BL3 CL.6: (I8) C cr7=
r0,r28
v < min (I9) BF
CL.9,cr7,0×1/1t −−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−− END BL4 (I10) LR
r28=r0
min = v (I11
) B CL.9 −−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−− END BL5 CL.4: (I12) C cr6=
r0,r30
v > max (I13) BF
CL.11,cr6,0×2/gt −−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−− END BL6 (I14) LR
r30=r0
max = v −−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−− END BL7 CL.11: (I15) C cr7=
r12,r28
u < min (I16) BF
CL.9,cr7,0×1/1t −−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−− END BL8 (I17) LR
r28=r12
min = u −−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−− END BL9 CL.9: (I18) AI r29=
r29,2
i = i+2 (I19) C
cr4=r29,171
i < n (I20) BT
CL.0,cr4,0×1/1t
−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−− END BL10 *****
************** LOOP ENDS
*************************
******** ... more ins
tructions here ...
【0070】
表 3 ... more instruction
s here ... ************
******* LOOP STARTS ***
************************
CL.O: (I1) L r12=
a(r31,4)
(I2) LU r0,r
31=a(r31,8)
(I18) AI r29=
r29,2 (I3) C
cr7=r12,r0
(I19) C
cr4=r29,171 (I4) BF
CL.4,cr7,0×2/gt
(I5) C cr6=r1
2,r30
(I8) C cr7=r0
,r28 (I6) BF
CL.6,cr6,0×2gt (I7)
LR r30=r12
CL.6
: (I9) BF CL.9
,cr7,0×1/1t (I10) LR
r28=r0
(I11) B
CL.9 CL.4: (I12) C cr6=
r0,r30
(I15) C cr7=
r12,r28 (I13) BF
CL.11,cr6,0×2/gt (I1
4) LR r30=r0
CL.11: (I16) BF CL.9
,cr7,0×1/1t (I17) LR
r28=r12
CL.9: (I20) BT CL.0
,cr4,0×1/1t ***********
******** LOOP ENDS ******
*************************
** ... more instructi
ons here ...
表 3 ... more instruction
s here ... ************
******* LOOP STARTS ***
************************
CL.O: (I1) L r12=
a(r31,4)
(I2) LU r0,r
31=a(r31,8)
(I18) AI r29=
r29,2 (I3) C
cr7=r12,r0
(I19) C
cr4=r29,171 (I4) BF
CL.4,cr7,0×2/gt
(I5) C cr6=r1
2,r30
(I8) C cr7=r0
,r28 (I6) BF
CL.6,cr6,0×2gt (I7)
LR r30=r12
CL.6
: (I9) BF CL.9
,cr7,0×1/1t (I10) LR
r28=r0
(I11) B
CL.9 CL.4: (I12) C cr6=
r0,r30
(I15) C cr7=
r12,r28 (I13) BF
CL.11,cr6,0×2/gt (I1
4) LR r30=r0
CL.11: (I16) BF CL.9
,cr7,0×1/1t (I17) LR
r28=r12
CL.9: (I20) BT CL.0
,cr4,0×1/1t ***********
******** LOOP ENDS ******
*************************
** ... more instructi
ons here ...
【0071】
表 4 ... more instruction
s here ... ************
******* LOOP STARTS ***
************************
CL.O: (I1) L r12=
a(r31,4)
(I2) LU r0,r
31=a(r31,8)
(I18) AI r29=
r29,2 (I3) C
cr7=r12,r0
(I19) C
cr4=r29,171 (I5) C
cr6=r12,r30 (I1
2) C cr5=r0,r30
(I4) BF CL.4
,cr7,0×2/gt (I8) C
cr7=r0,r28 (I6)
BF CL.6,cr6,0×2
gt (I7) LR r3
0=r12
CL.6: (I9) BF CL.9
,cr7,0×1/1t (I10) LR
r28=r0
(I11) B
CL.9 CL.4: (I15) C cr7=
r12,r28 (I13) BF
CL.11,cr5,0×2/gt (I1
4) LR r30=r0
CL.11: (I16) BF CL.9
,cr7,0×1/1t (I17) LR
r28=r12
CL.9: (I20) BT CL.0
,cr4,0×1/1t ***********
******** LOOP ENDS ******
*************************
** ... more instructi
ons here ...
表 4 ... more instruction
s here ... ************
******* LOOP STARTS ***
************************
CL.O: (I1) L r12=
a(r31,4)
(I2) LU r0,r
31=a(r31,8)
(I18) AI r29=
r29,2 (I3) C
cr7=r12,r0
(I19) C
cr4=r29,171 (I5) C
cr6=r12,r30 (I1
2) C cr5=r0,r30
(I4) BF CL.4
,cr7,0×2/gt (I8) C
cr7=r0,r28 (I6)
BF CL.6,cr6,0×2
gt (I7) LR r3
0=r12
CL.6: (I9) BF CL.9
,cr7,0×1/1t (I10) LR
r28=r0
(I11) B
CL.9 CL.4: (I15) C cr7=
r12,r28 (I13) BF
CL.11,cr5,0×2/gt (I1
4) LR r30=r0
CL.11: (I16) BF CL.9
,cr7,0×1/1t (I17) LR
r28=r12
CL.9: (I20) BT CL.0
,cr4,0×1/1t ***********
******** LOOP ENDS ******
*************************
** ... more instructi
ons here ...
【図1】本発明による命令スケジューラの概観を与える
概要ブロック図である。
概要ブロック図である。
【図2】表2の機械命令シーケンスの制御フローグラフ
である。
である。
【図3】表2の命令シーケンスのプログラム依存性グラ
フの制御依存性サブグラフである。
フの制御依存性サブグラフである。
【図4】図1の命令スケジューラ内の命令順序付けロジ
ックのフロー図である。
ックのフロー図である。
11:入力命令シーケンス
12:PCF
13:PDG生成ロジック
14:PDG
15:順序付けロジック
16:PMD
17:ヒューリスティック
18:出力命令シーケンス
Claims (20)
- 【請求項1】 コンピュータ用の命令スケジューラで
あって、入力コード・シーケンス中の複数の命令の間の
データ依存性と制御依存性を表すプログラム依存性グラ
フを生成するプログラム依存性グラフ生成ロジックと、
前記プログラム依存性グラフに応答して、前記入力コー
ド・シーケンスの前記命令を、適当な場合に基本ブロッ
ク境界を超えて再配列して、出力コード・シーケンスを
生成する順序付けロジックと、から成る命令スケジュー
ラ。 - 【請求項2】 前記プログラム依存性グラフ生成ロジ
ックが、制御依存性サブグラフとデータ依存性サブグラ
フとから成るプログラム依存性グラフを生成する、請求
項1の命令スケジューラ。 - 【請求項3】 前記順序付けロジックが、前記制御依
存性サブグラフを用いて、前記入力コード・シーケンス
中の命令の基本ブロックをブロック毎にスケジュールし
、また、前記順序付けロジックが、現在スケジュールし
ている現行のブロックについて、前記現行ブロックに対
し命令を寄与させることが可能な候補ブロックのリスト
を決める、請求項2の命令スケジューラ。 - 【請求項4】 前記候補ブロック・リストが、前記制
御依存性サブグラフにおいて、前記現行ブロックに等価
でありかつ前記現行のブロックにより支配されると識別
した全ブロックを含む、請求項3の命令スケジューラ。 - 【請求項5】 前記候補ブロック・リストが更に、前
記制御依存性サブグラフにおいて、前記現行ブロックの
直後のもの、又は前記現行ブロックに等価のブロックで
あって前記現行ブロックにより支配されるそのブロック
の直後のもの、として識別した全ブロックを含む、請求
項4の命令スケジューラ。 - 【請求項6】 前記順序付けロジックが更に、前記デ
ータ依存性グラフを用いて、前記候補ブロックの集合の
内から1組の候補命令を判定する、請求項3ないし5の
いずれかの命令スケジューラ。 - 【請求項7】 前記候補命令のリストは、命令がブロ
ック境界を超えて移動させることができないタイプでは
なくかつ/又はその命令が推測的にスケジュールできな
いタイプではない限り、実行が推測的な命令を含む、前
記現行ブロック又は前記候補ブロック集合の内の1つの
ブロックに属する全命令を含む、請求項6の命令スケジ
ューラ。 - 【請求項8】 前記順序付けロジックが、機械記述に
従って、前記候補命令リストから次にスケジュールする
べき一つ又はそれ以上の命令を判定する、請求項6又は
7の命令スケジューラ。 - 【請求項9】 ある範囲のコンピュータを表すパラメ
ータ型機械記述と、特定のコンピュータ用の1組のスケ
ジューリング・ヒューリスティックと、から成る機械記
述を記憶する手段を備える、請求項1〜8のいずれかの
命令スケジューラ。 - 【請求項10】 請求項1〜9のいずれかに記載の命
令スケジューラを備えるコンピュータ。 - 【請求項11】 前記コンピュータが、スーパースカ
ラー/スーパーパイプライン式のアーキテクチャを備え
る、請求項10のコンピュータ。 - 【請求項12】 コンピュータにおける命令をスケジ
ュールする命令スケジュール方法であって、a) 入
力コード・シーケンス中の複数の命令の間のデータ依存
性と制御依存性を表すプログラム依存性グラフを生成す
るステップと、及び b) 前記プログラム依存性グラフを用いて前記入力
コード・シーケスからの命令をスケジュールして、前記
入力コード・シーケンスの命令を、適当な場合には基本
ブロック境界を超えて再配列して、出力コード・シーケ
ンスを生成するステップと、から成る命令スケジュール
方法。 - 【請求項13】 前記ステップaで生成した前記プロ
グラム依存性グラフが、制御依存性サブグラフとデータ
依存性サブグラフから成る、請求項12の方法。 - 【請求項14】 前記ステップbにおいて、前記入力
コード・シーケンス中の命令の基本ブロックを、前記制
御依存性サブグラフを用いてブロック毎にスケジュール
し、また前記ステップbが、スケジュール中の各ブロッ
クに対して、 b)(i) 前記現行ブロックに命令を寄与させるこ
との可能な候補ブロックのリストを決めるサブステップ
、を含んでいる、請求項13の方法。 - 【請求項15】 前記候補ブロック・リストが、前記
制御依存性サブグラフにおいて、前記現行ブロックに等
価でありかつ前記現行ブロックにより支配されると識別
した全ブロックを含む、請求項14の方法。 - 【請求項16】 前記候補ブロック・リストが更に、
前記制御依存性サブグラフにおいて、前記現行ブロック
の直後のもの、又は前記現行ブロックに等価のブロック
であって前記現行ブロックにより支配されるそのブロッ
クの直後のもの、として識別した全ブロックを含む、請
求項15の方法。 - 【請求項17】 b)(ii) 前記データ依存性
グラフを用いて前記候補ブロックの集合の中から1組の
候補命令を判定するサブステップ、を含む請求項14〜
16のいずれかの方法。 - 【請求項18】 前記候補命令リストが、命令がブロ
ックの境界を超えて移動させることができないタイプで
はなく、かつ/又はその命令が推測的にスケジュール不
可能なタイプではない限り、実行が推測的な命令を含む
、前記現行ブロック又は前記候補ブロック集合の中の1
つのブロックに属する全命令、を含む、請求項17の方
法。 - 【請求項19】 b)(iii) 機械記述に従っ
て、前記候補命令リストから次にスケジュールするべき
1つ又はそれ以上の命令を判定するサブステップ、を含
む請求項17又は18のいずれかの方法。 - 【請求項20】 前記機械記述が、ある範囲のコンピ
ュータを表すパラメータ型機械記述と、特定のコンピュ
ータ用の1組のスケジューリング・ヒューリスティック
と、から成る請求項19の方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IL95996 | 1990-10-15 | ||
| IL95996A IL95996A0 (en) | 1990-10-15 | 1990-10-15 | Global instruction scheduler for a computer |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04263331A true JPH04263331A (ja) | 1992-09-18 |
Family
ID=11061659
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3195374A Pending JPH04263331A (ja) | 1990-10-15 | 1991-08-05 | コンピュータ用大域命令スケジューラ |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP0481615A3 (ja) |
| JP (1) | JPH04263331A (ja) |
| IL (1) | IL95996A0 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010204904A (ja) * | 2009-03-03 | 2010-09-16 | Toshiba Corp | コンパイル装置およびコンパイルプログラム |
| US11275611B2 (en) | 2019-02-08 | 2022-03-15 | Fujitsu Limited | Information processing device, information processing method, and computer-readable recording medium recording program |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5968166A (en) * | 1996-03-22 | 1999-10-19 | Matsushita Electric Industrial Co., Ltd. | Information processing apparatus and method, and scheduling device for reducing inactivity due to wait state |
| GB0025053D0 (en) | 2000-10-12 | 2000-11-29 | Sgs Thomson Microelectronics | Compiling computer programs including branch instructions |
| GB0025052D0 (en) | 2000-10-12 | 2000-11-29 | Sgs Thomson Microelectronics | Compiling computer programs including branch instructions |
| GB2398411B (en) | 2001-10-12 | 2005-04-27 | Pts Corp | Processors and compiling methods for processors |
| SE521753C2 (sv) * | 2002-02-08 | 2003-12-02 | Xelerated Ab | Förfarande och system för att uppfylla realtidskrav för en dataprocessor |
| CA2439137A1 (en) | 2003-08-08 | 2005-02-08 | Ibm Canada Limited - Ibm Canada Limitee | Improved scheduling technique for software pipelining |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6081641A (ja) * | 1983-10-11 | 1985-05-09 | Matsushita Electric Ind Co Ltd | レジスタトレース方法 |
| JPS61262936A (ja) * | 1985-05-17 | 1986-11-20 | Fujitsu Ltd | マスク生成処理方式 |
| JPS62217325A (ja) * | 1986-03-18 | 1987-09-24 | Nec Corp | アセンブラコ−ド最適化方式 |
| JPS6365530A (ja) * | 1986-09-05 | 1988-03-24 | Nec Corp | コ−ド最適化方式 |
-
1990
- 1990-10-15 IL IL95996A patent/IL95996A0/xx unknown
-
1991
- 1991-08-05 JP JP3195374A patent/JPH04263331A/ja active Pending
- 1991-09-26 EP EP19910308797 patent/EP0481615A3/en not_active Withdrawn
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6081641A (ja) * | 1983-10-11 | 1985-05-09 | Matsushita Electric Ind Co Ltd | レジスタトレース方法 |
| JPS61262936A (ja) * | 1985-05-17 | 1986-11-20 | Fujitsu Ltd | マスク生成処理方式 |
| JPS62217325A (ja) * | 1986-03-18 | 1987-09-24 | Nec Corp | アセンブラコ−ド最適化方式 |
| JPS6365530A (ja) * | 1986-09-05 | 1988-03-24 | Nec Corp | コ−ド最適化方式 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010204904A (ja) * | 2009-03-03 | 2010-09-16 | Toshiba Corp | コンパイル装置およびコンパイルプログラム |
| US11275611B2 (en) | 2019-02-08 | 2022-03-15 | Fujitsu Limited | Information processing device, information processing method, and computer-readable recording medium recording program |
Also Published As
| Publication number | Publication date |
|---|---|
| IL95996A0 (en) | 1991-07-18 |
| EP0481615A2 (en) | 1992-04-22 |
| EP0481615A3 (en) | 1993-01-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Bernstein et al. | Global instruction scheduling for superscalar machines | |
| US6718541B2 (en) | Register economy heuristic for a cycle driven multiple issue instruction scheduler | |
| US6044222A (en) | System, method, and program product for loop instruction scheduling hardware lookahead | |
| US5526499A (en) | Speculative load instruction rescheduler for a compiler which moves load instructions across basic block boundaries while avoiding program exceptions | |
| Bodik et al. | Interprocedural conditional branch elimination | |
| US6918111B1 (en) | System and method for scheduling instructions to maximize outstanding prefetches and loads | |
| US6487715B1 (en) | Dynamic code motion optimization and path tracing | |
| Tirumalai et al. | Parallelization of loops with exits on pipelined architectures | |
| Huang et al. | Speculative disambiguation: A compilation technique for dynamic memory disambiguation | |
| Havanki et al. | Treegion scheduling for wide issue processors | |
| US5901318A (en) | Method and system for optimizing code | |
| JPH01108638A (ja) | 並列化コンパイル方式 | |
| US6892380B2 (en) | Method for software pipelining of irregular conditional control loops | |
| Hwang et al. | PLS: A scheduler for pipeline synthesis | |
| US5524242A (en) | System and method for determining the number of parallel processes to be created according to run cost value and parallelization overhead | |
| Lorenz et al. | Energy aware compilation for DSPs with SIMD instructions | |
| JPH04263331A (ja) | コンピュータ用大域命令スケジューラ | |
| August et al. | The program decision logic approach to predicated execution | |
| Beck et al. | Static scheduling for dynamic dataflow machines | |
| Chen et al. | Using profile information to assist advanced compiler optimization and scheduling | |
| Chuang et al. | Phi-predication for light-weight if-conversion | |
| Smith et al. | PIPE: A high performance VLSI architecture | |
| Rao et al. | Storage assignment using expression tree transformations to generate compact and efficient DSP code | |
| Schlansker et al. | Parallelization of control recurrences for ILP processors | |
| Shieh et al. | On reordering instruction streams for pipelined computers |