JPH04247527A - コンピュータの命令スケジューラ - Google Patents

コンピュータの命令スケジューラ

Info

Publication number
JPH04247527A
JPH04247527A JP3174113A JP17411391A JPH04247527A JP H04247527 A JPH04247527 A JP H04247527A JP 3174113 A JP3174113 A JP 3174113A JP 17411391 A JP17411391 A JP 17411391A JP H04247527 A JPH04247527 A JP H04247527A
Authority
JP
Japan
Prior art keywords
instruction
instructions
subsequence
scheduling
logic
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
Application number
JP3174113A
Other languages
English (en)
Inventor
Charles Golumbic Martin
マーティン・チャールズ・ゴルムビック
Rainish Vladimir
ブラディミール・ライニッシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH04247527A publication Critical patent/JPH04247527A/ja
Pending legal-status Critical Current

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)
  • Advance Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータ用の命令
スケジューラに関し、特に並列/パイプライン化コンピ
ュータで使用されるのに適する方法で基本ブロックを越
えて命令のスケジューリングを可能にする命令スケジュ
ーラに関する。命令のスケジューリングとは、コンパイ
ルされた命令の間であり得るランタイム遅延を小さくす
るために、プロセッサによる実行以前にプログラム・ス
テートメントの再構成または変更をするプロセスである
。命令スケジューラは通常コンピュータのコンパイラの
一部として実現される。コンパイラに対する一般的な紹
介は、下記の文献に見出すことができる。即ち、R1 
 A.V.Aho,R.SethiおよびJ.D.Ul
lman著「コンパイラ:原理、手法およびツール(C
ompilers:  Principles,  T
echniques  andTools)」(Add
ison−Wesley社、1986年発行)
【000
2】
【従来の技術】命令のスケジューリングは、通常中間言
語あるいはアセンブリ・コード・レベルで行われる。こ
のような変換は、データ依存性を保存しなければならず
、他の制約を受ける。このことは、命令の実行を重複さ
せることにより処理能力の増大を可能にするパイプライ
ン化マシン・アーキテクチャのためのコンパイルを行う
時、特に有利であり得る。例えば、もし1つの値Vの取
出しと使用の間に1サイクルの遅れがあるならば、この
遅れをVとは独立でありかつ実行の「用意ができている
」命令で「カバー」することが望ましいことになる。
【0003】従来の知恵は、スケジュール可能な命令を
基本ブロック内に見出せるようにすること、および基本
ブロックの境界を越えて命令を移動する必要がないこと
である。基本ブロックとは、制御の流れが、出口点を除
いて待機あるいは分岐の可能性なしにシーケンスの初め
に入りかつその終りで抜ける、一連の連続する命令であ
る。事実上、命令のスケジューリングの実現における以
前の作業の全ては、基本ブロック内のスケジューリング
に集中したものであった。基本ブロックのスケジューラ
の事例については、下記の文献に記載されている。即ち
、R2  Bernstein,D.,Boral,H
.およびPinter,R.Y.著「表現ツリーの最適
なチェイニング(Optimal  Chaining
  in  Expression  Trees)」
(コンパイラ構造についてのACMシンポジウムの議事
録1〜10頁、1986年6月発行) R3  Gibbons,P.B.およびMuchni
ck,S.S.著「パイプライン化アーキテクチャのた
めの有効な命令スケジューリング(Efficient
  Instruction  Scheduling
  for  a  Pipelined  Arch
itecture)」(コンパイラ構造についてのAC
Mシンポジウムの議事録11〜16頁、1986年6月
発行)R4  Goodman,J.R.およびHsu
,W.−C.著「大きな基本ブロックにおけるコード・
スケジューリングおよびレジスタの割付け(CodeS
cheduling  and  Register 
 Allocation  in  Large  B
asic  Blocks)」(スーパーコンピューテ
ィングに関する国際会議の議事録(仏国St.Malo
)442〜452頁、ACMPress、1988年7
月発行)R5  Hennessy,J.L.およびG
ross,T.著「パイプラインの制約のポストパス・
コードの最適化(Postpass  Code  O
ptimization  of  Pipeline
  Constraints)」(プログラミング言語
およびシステムに関するACM報告書、422〜448
頁、1984年7月発行) R6  H.Warren著「IBM  RISCシス
テム/6000プロセッサにおける命令スケジューリン
グ(Instruction  Scheduling
for  the  IBM  RISC  Syst
em/6000  Processor)」(IBM 
 Journal  of  Research  a
nd  Development、第34巻、第1号、
85〜92頁、1990年1月発行) R7  S.WeissおよびJ.E.Smith著「
パイプライン化スーパーコンピュータにおけるスカラー
・コンパイル手法の研究(A  Study  ofS
calar  Compilation  Techn
iques  for  Pipelined  Su
percomputers)」(プログラミング言語お
よびオペレーティング・システムに対するアーキテクチ
ャ・サポートに関する第2回国際会議の議事録、105
〜109頁、1987年10月発行)
【0004】
【発明が解決しようとする課題】上記の文献に記載され
た如き基本ブロック・スケジューラは、一般に、浪費さ
れるマシン・サイクルを排除するため、各基本ブロック
内の独立的な命令をインターリーブすることを試みる。 このようなスケジューラは、ある科学的用途において普
通である長い基本ブロックにおけるプログラムに非常に
有効である。しかし、分岐命令は、基本ブロックの変換
のみでは取扱うことができないことでパイプライン化ア
ーキテクチャの有効性を制約する。
【0005】命令スケジューリングのための特定の用途
は、いわゆる縮小命令セット・コンピュータ(RISC
)の分野に含まれる。RISCコンピュータの紹介は、
下記の文献に見出すことができる。即ち、R8  Pa
tterson,D.A.著「縮小命令セット・コンピ
ュータ(Reduced  Instruction 
 Set  Computers)」(Communi
cations  of  the  ACM、8〜2
1頁、1985年1月発行) 1970年代の後半に出現した高速プロセッサを構築す
るRISCの試みは、プログラム命令のストリームライ
ン化の必要を強調する。その結果、命令は、通常は中間
言語あるいはアセンブリ・コード・レベルで、パイプラ
インの全ての利点を利用し、またこれにより性能を改善
するように構成し直されねばならない。命令のスケジュ
ーリングの負担は、RISCプロセッサに対するコード
を生成するコンパイラを最適化することに置かれた。通
常、コンパイラは、基本ブロック・レベルで命令のスケ
ジューリングを行い、RISCプロセッサのパイプライ
ン構造により課される諸問題の大半を解決している。
【0006】基本的なRISCアーキテクチャにあって
も、基本ブロック内のみのスケジューリングは、予測し
得ない分岐で終る多くの小さな基本ブロックを含むある
UNIXタイプ(UNIXは、AT&T  Bell研
究所の商標)のプログラムに対して多くのノーオペレー
ション・コードを伴うコードを結果として得る。これら
の問題は、通常基本ブロックがより大きくなる科学的演
算プログラムにとっては非常に厳しいものとなる傾向に
はない。
【0007】最近、サイクル当たり1つ以上の命令を発
行する能力によってRISCを拡張する新しいタイプの
アーキテクチャが登場しつつある。例えば、下記の文献
を参照されたい。即ち、R9  R.D.Groves
およびR.Oehler著「IBMの第2世代RISC
プロセッサのアーキテクチャ(An  IBMSeco
nd  Generation  RISC  Pro
cessor  Architecture)」(コン
ピュータ設計に関するIEEE会議の議事録、134〜
137頁、1989年10月発行) スーパースカラーあるいはスーパーパイプライン化アー
キテクチャと呼ばれるこのタイプの高速プロセッサは、
基本ブロック・レベルにおける命令スケジューリングで
は要求される程度にマシンの資源を利用するコードを生
成するのに充分でないため、コンパイラに対してより重
大な問題を呈する。下記の文献を参照されたい。即ち、
R10  N.P.JouppiおよびD.W.Wal
l著「スーパースカラーおよびスーパーパイプライン化
マシンに使用可能な命令レベルの並行処理(Avail
able  Instruction−level  
Parallelism  for  Supersc
alar  and  Superpipelined
Machines)」(第3回ASPLOS会議の議事
録、272〜282頁、1989年4月発行) スーパースカラー・マシンに対する命令スケジューリン
グを研究する最近の1つの努力は、下記の文献に報告さ
れている。即ち、R11  M.C.Golumbic
およびV.Rainish著「基本ブロックを越えた命
令スケジューリング(Instruction  Sc
heduling  beyond  BasicBl
ocks)」(IBM  Journalof  Re
search  and  Development、
第34巻、第1号、93〜97頁、1990年1月発行
)この文献においては、基本ブロックの範囲を越えたス
ケジューリングのためのコード複写法が研究され、コン
パイルされたコードの実行時間の改善をもたらす結果と
なる。しかし、上記の試みは、更に改善するための余地
を依然として残している。
【0008】
【課題を解決するための手段】本発明の目的は、浪費さ
れるマシン・サイクルが更に少ないより効率のよいコン
パイル・コードを提供するため、基本ブロックを越えた
スケジューリングを行うことができる命令スケジューラ
の提供することにある。
【0009】本発明によれば、コンピュータ用の命令ス
ケジューラが提供され、この命令スケジューラは、命令
スケジューリングの目的のため抑制し得る命令の候補と
なるサブシーケンスを命令シーケンス内で識別する前処
理ロジックと、抑制された識別サブシーケンスを含む命
令シーケンスをスケジューリングするために前処理ロジ
ックに応答する基本ブロック・スケジューリング・ロジ
ックからなっている。
【0010】本発明は、前処理ロジックおよび後処理ロ
ジックのみを付設して従来の基本ブロック・スケジュー
ラの使用を可能にする。本発明は、基本ブロックを充分
に越えた能力を持つ制御フロー全体にわたるスケジュー
リングを行う。本発明は、分岐、ループ等によるランタ
イムの遅れの減少を可能にし、またパイプライン化アー
キテクチャを他の方法では不可能な方法で利用すること
を可能にする。
【0011】前処理ロジックは、命令の基本ブロックが
制御フローの順序で配列される修正された命令シーケン
スを生じるように作動することが望ましい。従って、基
本ブロックのスケジューリング・ロジックにこの修正さ
れた命令シーケンスを使用する命令をスケジュールさせ
ることにより、基本ブロックのスケジューリング・ロジ
ックの正しい処理の順序を容易に確保することができる
。
【0012】また、前処理ロジックは、候補となるサブ
シーケンスに対する入口ブロックと出口ブロックを識別
し、この基本ブロック・スケジューリング・ロジックは
、1つの疑似命令として取扱うことによりこのサブシー
ケンスを抑制するため相互に異なる入口ブロック値と出
口ブロック値の通知に応答する。このようにして、サブ
シーケンスは、スケジューリング操作に対する入口点と
出口点が別々の基本ブロックと関連することの通知に応
答して基本ブロック・スケジューラにより自動的に抑制
される。
【0013】しかし、あるいはまた、前処理は、抑制さ
れるべきサブシーケンスの命令に物理的にタグを付すこ
とができ、基本ブロック・スケジューリング・ロジック
はこのタグを用いて抑制される命令を決定する。
【0014】あるいはまた更に、前処理ロジックは、サ
ブシーケンスをセーブして疑似命令をその場所に挿入す
ることによりサブシーケンスを抑制するように構成する
ことができ、この疑似命令はこれが置換する命令のレジ
スタおよびメモリー参照を記録する。このことは、従来
の基本ブロック・スケジューラを基本ブロック・スケジ
ューリング・ロジックとして修正しないで使用すること
を可能にする。この場合、命令スケジューラはまた、疑
似命令と関連するポインタを用いてセーブされたサブシ
ーケンスをアクセスして、セーブされたサブシーケンス
により疑似命令を置換することにより、修正されたシー
ケンスのスケジューリング後に疑似命令を拡張するため
の後処理ロジックを含むことが望ましい。
【0015】前処理ロジックは、入力命令シーケンスに
対する制御フロー・グラフに応答して、一義的な入口お
よび一義的な出口を持ち予め定めた基準を満たすグラフ
の領域を識別することにより抑制される候補となるサブ
シーケンスを識別することが望ましい。入口xおよび出
口y(x≠y)を持つグラフの領域Hに対して望ましい
基準は、 a)xおよびyがHに帰属すること b)(H−x)の全ての直前のセットは、(H−y)の
サブセットであること c)(H−y)の全ての直後のセットは、(H−x)の
サブセットであること d)入口x’および出口y’が(a)−(c)を満足し
、x=x’あるいはy=y’であるHのサブセットであ
る領域H’は存在しないことである。
【0016】入口xおよび出口yが基本ブロックである
場合、領域Hの候補となるサブシーケンスは下記のもの
からなることが望ましい。即ち、 −もし分岐ならば、入口ブロックxの最後の命令−存在
するならば、出口ブロックyの先頭のラベル、および −Hの全ての残るブロックにおける全ての命令前処理ロ
ジックが、抑制の候補となる複数のサブシーケンスを識
別するため命令の入力シーケンスについて反復的に演算
することが望ましい。このようにして、前処理ロジック
は、略式疑似命令によりフロー・グラフの連続するより
大きな部分を置換するように働き、結果として基本ブロ
ック・スケジューラによりスケジュール可能な直線コー
ドの新しいより大きな部分を生じることになる。
【0017】本発明はまた、前に述べた如き命令スケジ
ューラを含むコンピュータを提供する。
【0018】本発明の第2の特質によれば、下記のステ
ップを含むコンピュータにおける命令のスケジュール方
法が提供される。即ち、 a)命令スケジューリングの目的のため抑制することが
できる候補となる命令サブシーケンスを命令シーケンス
内で識別し、 b)基本ブロック・スケジューリング・ロジックを用い
て、識別された抑制サブシーケンスを含む命令シーケン
スをスケジューリングする。
【0019】以下においては本発明の特定例について、
本文の記述の終りに見出される表および添付図面に関し
て説明する。
【0020】−表1は、本発明の動作を説明するための
プログラムの事例である。
【0021】−表2は、表1のプログラムの一部と対応
するマシン命令の注釈を付したシーケンスである。
【0022】−表3は、前処理後の表2の命令シーケン
スを示す。
【0023】−表4は、スケジューリング後の表3の命
令シーケンスを示す。
【0024】−表5は、命令の出力シーケンスを示す。
【0025】
【実施例】図1は、本発明による命令スケジューラ10
の概説用の概略ブロック図である。この命令スケジュー
ラは、その入力として一連の命令11を受取り、更にス
ケジュールされるプログラムに対する制御フロー・グラ
フ12に応答する。この命令スケジューラは、その出力
として一連の再スケジュール命令16を与える。この命
令スケジューラは、修正された命令シーケンス14を生
じる前処理ロジック13と、参考のため本文に引用され
るWarrenの文献(文献R6)に記載された如き従
来の基本ブロック・スケジューラ15とを含む。用語「
命令」とは、ラベル、分岐ステートメント等のプログラ
ム中に見出すことができる如何なるステートメントも含
むように広義に解釈されるべきであることに注意された
い。
【0026】本発明の実施例においては、命令スケジュ
ーラは、コンパイラ、特にIBMRISCシステム/6
000コンピュータに対するIBM  XLファミリー
のコンパイラの1つの一部を形成する。この命令スケジ
ューラは、コンパイル動作の間、必要に応じて1回以上
作動するように呼出すことができる。以下本文において
は、この命令スケジューラは中間言語レベルで命令に対
して用いられるものとして記述される。しかし、この命
令スケジューラは、アセンブリ・コード・レベルでも等
しく使用することができる。本例においては、前処理ロ
ジック13および基本ブロック・スケジューラ15は、
入力11、修正14および出力16の命令シーケンスと
同様に、コンパイラが動作中のIBM  RISCシス
テム/6000コンピュータの作業用記憶域に保持され
る。IBM  RISCシステム/6000コンピュー
タ・ファミリーについてのこれ以上の情報については、
IBMJournal  of  Research 
 and  Development、第34巻、第1
号、1990年1月発行を参照されたい。
【0027】前処理ロジック13は、その機能として、
一義的な入口および出口を持ちある最低条件を満たす命
令のサブシーケンスを入力命令シーケンスにおいて識別
する。このようなサブシーケンスは、以下本文で「S領
域」と呼ばれる命令シーケンスに対するフロー・グラフ
の1つの領域を形成する。フロー・グラフのこのような
領域は、「ハンモック」として文献に記載されている(
Kas’janov,V.N.著「Distingui
shing  Hammocks  in  a  D
irected  Graph」(Soviet  M
ath.Doclady  16,5、448〜550
頁、1975年発行)参照)。
【0028】この機能を実施する際、前処理ロジック1
3は、基本ブロックおよびループをコード・シーケンス
で識別するため、また各ブロックへのエントリと同時に
種々のプロセッサのレジスタの情報を調べるため、従来
のコンパイラ・ロジックにより生成される制御フロー・
グラフ12を使用する。この制御フロー・グラフは、入
口および出口点、ブロックの構成命令およびブロック間
の論理的関係(例えば、前後の関係)を識別するデータ
を含む入力命令シーケンスにおける基本ブロックについ
て詳細を与える基本ブロック・テーブルを含んでいる。 基本ブロックおよびフロー・グラフの意味の一般的な論
議は、文献R1の528乃至534頁に見出される。
【0029】スケジュールされるプログラムを表わす制
御フロー・グラフGの一部の事例が図2に示される。フ
ロー・グラフにおけるノードB1乃至B23は、種々の
ブロックのどれが直前および直後であるかを示すノード
間の方向付けされたエッジを持つプログラムの基本ブロ
ックと対応している。例えば、ブロックB1からB2へ
の方向付けされたエッジDE1がある時、これはB2が
B1の直後のものであることを意味する。換言すれば、
プログラムの制御は、基本ブロックB1から基本ブロッ
クB2へ流れる。フロー・グラフは一義的な入口ノード
B1と一義的な出口ノードB23を有することが判る。
【0030】好都合にも、制御フロー・グラフ12は、
コンパイラがそのグラフにおけるノードと対応する1組
のリンクされたレコードを有し、ノード間のエッジがレ
コード間のポインタにより表わされるデータ構造形態で
動作するコンピュータのメモリー中に格納される。ポイ
ンタは、ある基本ブロックから他の基本ブロックへのプ
ログラムの流れを制御する条件を示すフィールドにより
適当に補充することができる。
【0031】命令の入力、出力および修正されたシーケ
ンスもまた、コンパイラが動作中のコンピュータのメモ
リーに格納される。各シーケンスは、2重にリンクされ
たリストとして格納される。1つのシーケンスにおける
各命令は、そのパラメータ(レジスタ、メモリー参照、
等)を記述するフィールドの他2つのフィールドで格納
される。最初の付加的フィールドは、シーケンスにおけ
る前の命令に対するポインタを含み、2番目のフィール
ドは次の命令に対するポインタを含む。従って、これら
のポインタを用いて、命令シーケンスを一方から他方へ
のいずれの方向にも走査することが可能となる。
【0032】前処理プログラムは、修正された命令シー
ケンス14を生成し、基本ブロック・スケジューラに対
して制御パラメータを発して抑制された命令のサブシー
ケンス(複数または単数)で命令シーケンスをスケジュ
ールさせる。命令の各抑制サブシーケンスは、命令シー
ケンスにおけるS領域と対応する。このような各サブシ
ーケンスは、1つの疑似命令として取扱われ、命令を基
本ブロック境界を越えて移動することを可能にする。デ
ータ依存は無論保存されねばならない。
【0033】前処理ロジック13は、制御フロー・グラ
フ12を分析することにより、スケジューリングの目的
のため疑似命令として要約できるS領域(即ち、命令の
サブシーケンス)を識別する。前処理ロジックは、制御
フロー・グラフを分析して、入口xおよび出口y(x≠
y)を有し下記の要件を満たすグラフGのサブグラフH
を探すことによりS領域を識別する。即ち、a)xおよ
びyがHに帰属すること b)(H−x)の全ての直前のセットは、(H−y)の
サブセットであること c)(H−y)の全ての直後のセットは、(H−x)の
サブセットであること d)入口x’および出口y’が(a)−(c)を満足し
、x=x’あるいはy=y’であるHのサブセットであ
る領域H’は存在しないことである。
【0034】S領域Hの定義は、Hの外側(Gのノード
)からHへの各経路がxを通過すること、HからHの外
側(Gのノード)への各経路がyを通過すること、およ
び入口xあるいは出口yを持つ高々1つのS領域がある
ことを意味する。
【0035】図2においては、7つのS領域があり、こ
れらは下記の如くS0乃至S6で示される。即ち、S0
は、入口B2および出口B5を持つB2〜B5からなる
。
【0036】S1は、入口B5および出口B7を持つB
5〜B7からなる。
【0037】S2は、入口B7および出口B10を持つ
B7〜B10からなる。
【0038】S3は、入口B11および出口B20を持
つB11〜B20からなる。
【0039】S4は、入口B16および出口B19を持
つB16〜B19からなる。
【0040】S5は、入口B20および出口B22を持
つB20〜B22からなる。
【0041】S6は、入口B1および出口B23を持つ
B1〜B23からなる。
【0042】S領域は、ネストおよび(または)連鎖さ
せることができる。本例においては、S0、S1、S2
およびS3、S5は、連鎖されたS領域であり、領域S
4は領域S3内にネストされ、S0〜S5はS6内にネ
ストされる。
【0043】1つのS領域の概念は、最小条件のない充
分に構造化された言語におけるステートメントのそれに
類似するが、任意のプログラム構造の取扱いに加えて、
ある充分に構造化されたステートメントは許容されない
。例えば、S領域S0およびS2は、「非常に非構造的
」である。また、ある定義においてはステートメントと
見做され得るが、基本ブロックB12、B13、B14
、B15のグループはS領域でないことに注意されたい
。
【0044】疑似命令でS領域を置換することにより、
後に述べるように、「直線」コードの比較的長い部分を
作ることができ、命令を基本ブロックを越えて移動する
ことを許容する。例えば、図2においては、連鎖B2、
P0、B5、P1、B7、P2、B10(但し、P0、
P1、P2は、それぞれS領域S0、S1およびS2に
対する疑似命令を表わす)は、直線コードであり、通常
の方法でデータ依存が許容するものとして、命令をB7
からB2まで、あるいはB5からB10までのように移
動することが可能となる。基本ブロック20が分岐を持
たず基本ブロック22がラベルを持たないため、(疑似
命令P5が置換する)S5に対するセーブされた命令サ
ブシーケンスは、ブロックB21からの命令のみからな
ることに注意されたい。
【0045】S領域への分解は、分岐およびループの結
果として生じる残りの遅延(NO−OP)の排除機構を
提供する。全てのS領域を生成することにより、あるい
はこれら領域を必要に応じて生成することにより、命令
スケジューリングは下記の如く行うことができる。以降
においては、スケジュールされる命令が、各基本ブロッ
クが分岐の目標である等の如き必要がある場合にのみラ
ベル(命令なし)で始まる中間言語(IL)にあるもの
とする。
【0046】制御フロー・グラフは、各々の入り口ノー
ドx、出口ノードyおよび中間ノードの決定を含むS領
域の識別に必要な基本ブロックの構造上の情報を提供す
る。前処理ロジックは、これが識別する各S領域毎に各
々の入口ノードx、出口ノードyおよび中間ノードのデ
ータを格納するS領域テーブルを生成する。S領域テー
ブルは、コンパイラが動作中であるコンピュータのメモ
リーに保持される。
【0047】S領域テーブルのセットアップの際、前処
理ロジックはS領域の命令に黙示的にタグを付す。換言
すれば、S領域テーブルをアクセスすることにより、抑
制のための候補となるサブシーケンスに帰属する命令を
識別することができる。命令が物理的にタグ付けされな
い時、スケジューリング後に取外されるタグはない。
【0048】与えられたS領域に対して黙示的にタグを
付される、抑制のための命令のサブシーケンス(P)は
、下記を含む。即ち、 ・もしbが分岐ステートメントならば、入口ブロックx
の最後のステートメント ・もし1が存在するならば、出口ブロックyの先頭のラ
ベル1 ・全ての残るブロックHにおけるステートメント遅れが
依然として存在する時、前処理プログラムは、連続的に
より大きなS領域Hを探して、識別される時各S領域毎
に適当なデータをS領域テーブルに格納する。前処理が
完了すると、基本ブロック・スケジューラが作動するよ
うに呼出される。しかし、基本ブロック・スケジューラ
の呼出しの前に、前処理ロジックはS領域テーブルおよ
び制御フロー・グラフを用いて命令シーケンスにおける
ポインタを修正して、基本ブロックが命令シーケンスの
制御フローにより指定される論理シーケンスに生じるよ
うにし、即ち、1つのS領域の入口ブロックが全ての中
間ブロックの先になり、出口ノードが全ての中間ブロッ
クに続くようにする。本発明の本実施例においては、前
処理ロジックは命令フィールド(単に命令フィールドを
伴うポインタ)の内容の修正も制御フロー・グラフの修
正のいずれも行わない。
【0049】命令シーケンスにおけるポインタを修正し
た後、基本ブロック・スケジューラにとっては、修正さ
れた命令シーケンスにおけるポインタを用いて入口ノー
ドから出口ノードへのS領域の全ての命令を通して順序
付けすることは簡単なことである。(ポインタにより決
定される如き)入力命令シーケンスにおける1つの基本
ブロック内の命令の順序は制御フローに従って論理シー
ケンスと対応するが、これは基本ブロック間の分岐およ
び飛越し命令の故に、基本ブロック境界の場合通常では
ないことに注意すべきである。
【0050】従来の基本ブロック・スケジューラは、ス
ケジュールされる基本ブロックを表示するパラメータを
受取ることになる。これは、基本ブロックに対する命令
を決定し、かつ基本ブロックに対する命令毎の1つのノ
ードであって、各々が対応する命令に対するレジスタお
よびメモリー参照を記録するノードでデータ依存グラフ
を形成するため制御フロー・グラフにおけるデータを使
用する。そして、これは、データ依存グラフを用いて、
種々のヒューリスティックス(文献R6参照)に従って
基本ブロックの命令を構成し直す。このヒューリスティ
ックスは、一連の命令を含むプログラムがコンパイルさ
れつつあるコンピュータ(即ち、目標のコンピュータ)
の詳細に依存する。
【0051】本発明における基本ブロック・スケジュー
リング・ロジックの動作は概して類似している。しかし
、このロジックは、1つのパラメータではなく、前処理
ロジックから2つの入力パラメータ、即ち、入口および
出口のブロックに対するパラメータxおよびyを受取る
。
【0052】基本ブロック・スケジューラ15は、入口
ノードxが出口ノードyと等しいかどうかを判定するた
めのロジックを含む。もしそうであれば、このロジック
は、単一の基本ブロックの取扱いを行い、このブロック
の命令をスケジュールするため正確に正常なものとして
進行する。しかし、もしxおよびyが等しくなければ、
このロジックは制御フローを越えてスケジュールすべき
ことを判定する。
【0053】スケジューラが制御フローを越えてスケジ
ュールしなければならない(即ち、xとyが等しくない
)場合は、基本ブロック・スケジューラは下記のものか
らなる直線コードについて働く。即ち、(i)xの命令
(分岐ならば、最後の命令なしに)(ii)疑似命令(
サブシーケンスPと対応する)(iii)yの命令(ラ
ベルならば、第1の命令なしに)特に、基本ブロック・
スケジューラは、修正シーケンスにおけるポインタを用
いて命令(i)(即ち、この最後の命令が分岐ならば、
その命令以外のブロックxの命令)を命令毎に位に走査
し始め、各命令毎に1つのデータ依存グラフに1つのノ
ードを生成する。このデータ依存グラフは、コンパイラ
が動作中のコンピュータのメモリーに保持される。基本
ブロック・スケジューラが命令(ii)(即ち、これが
分岐ならばブロックxの最後の命令、さもなければ、最
初の中間基本ブロックの最初の命令)に達する時、この
スケジューラはこれがS領域内にあることを表示するフ
ラッグをセットする。このスケジューラは、これがラベ
ルであるならば基本ブロックyの最初の命令に、さもな
ければ、論理的に先行する中間基本ブロックの最後の命
令に達するまで、修正シーケンスにおいて命令の走査を
継続する。このスケジューラは、修正シーケンスにおけ
る命令を伴うポインタを用いて命令を走査する。これが
命令を走査する時、これら命令に対するレジスタおよび
メモリー参照を照合する。これら全ての命令に対して、
基本ブロック・スケジューラは単にデータ依存グラフ(
即ち、疑似命令に対して)における1つのノードを割付
け、このノードが照合されたレジスタおよびメモリー参
照を記録する。このようにして、S領域と対応する個々
の命令は抑制され、疑似命令Pにより置換される。次い
で、これは、「内部のS領域」フラッグをリセットして
、命令(iii)(即ち、これが分岐ならば、最初の命
令のない基本ブロックyの命令)を通常の方法で処理す
るため進み、各命令毎にデータ依存グラフにノードをセ
ットアップする。
【0054】その後、基本ブロック・スケジューラは正
常に進んで、(bがPに帰属するならば、bのない)ブ
ロックx、タグを付した命令からなる疑似命令P、およ
び(1がPに帰属するならば、1のない)ブロックyか
らなる「直線」コードの命令を、目標コンピュータに対
するヒューリスティックスに従って生成したデータ依存
グラフを用いて構成し直す。
【0055】スケジューリングの後、ポインタは、基本
ブロックの元の順序を復元するため、制御フロー・グラ
フを用いて修正することができる。しかし、基本ブロッ
クの順序は復元できる(即ち、入出力シーケンスにおけ
る基本ブロックの順序が同じになるように)が、命令の
順序は再スケジューリングが生じた場合は異なることに
注意されたい。
【0056】本発明による命令スケジューラの動作の一
例については、表1乃至表5に関して更に説明する。表
1は、スケジューリングのためのサンプル・プログラム
を示す。表2における2つの中間の列は、表1のプログ
ラムの行2から行6までに対応する中間レベルのマシン
命令シーケンスを示す。表2の左側の列は、命令の番号
(I1〜I12)を示し、右側の列は命令における基本
ブロック(B1〜B4)を示す。左側の列の左の3つの
+符号については後で説明する。
【0057】表3は、基本ブロック・スケジューラ15
により認識される如き修正された命令シーケンス14を
示す。前処理ロジック13は、基本ブロックB2、B3
、B4が基本ブロックB2における入口および基本ブロ
ックB4における出口を持つS領域を形成すると判定し
た。このS領域から、表2の+符号で示した3つの命令
、即ち、(分岐である)基本ブロックB2の最後の命令
、基本ブロックB3の全ての命令(本例では、1つしか
ない)、および(ラベルである)基本ブロックB4の最
初の命令が抑制できることになる。基本ブロックB2と
して入口点およびブロックB4として出口点を与える入
口パラメータを受取ると同時に、基本ブロック・スケジ
ューラは、抑制される命令I8、I9およびI10でそ
のデータ依存グラフを生成し、これらの命令は「PSE
UDO」と呼ばれSUPRを付した1つの疑似命令とし
て取扱われる。
【0058】命令I8乃至I10の抑制に続いて、表3
の命令I4乃至I12は、データ依存グラフを用いて周
知の方法で基本ブロック・スケジューラ15によりスケ
ジュールされる「直線」コードを形成する。結果として
得るスケジュールされたコードは表4に示され、これに
おいては命令I11およびI12間のパイプライン遅れ
をカバーするため、基本ブロック・スケジューラ15が
命令番号I11をPSEUDO命令を越えて移動したこ
とが判る。抑制された命令I8、I9およびI10を含
む全出力命令シーケンスは、表5に示される。
【0059】コアに基本ブロック・スケジューラを持ち
ながら、基本ブロックを越えるコードのスケジューリン
グを可能にすることにより、パイプライン化アーキテク
チャ特性を取ることの全ての利点を可能にする命令スケ
ジューラが記述された。本発明は、略式疑似命令として
処理される候補となるコード・シーケンスを識別するた
め、従来のコンパイラにより生成される如きフロー・グ
ラフを使用することが望ましい。基本ブロック・スケジ
ューラにより操作される前にフロー・グラフを前処理す
るためのロジックを付設することにより、現行のコンパ
イラを最小限度に変更することによってS領域を生成あ
るいは認識することが可能である。前処理ロジックの効
果は、フロー・グラフを分解し、スケジューリング目的
のため疑似命令により置換できるコードの部分を識別す
ることである。このため、基本ブロック・スケジューラ
が、さもなければその範囲を越えることになる有効なス
ケジューリングの機会を識別することを可能にする。
【0060】本発明の一例を記述したが、修正および(
または)付設が頭書の特許請求の範囲内で可能であるこ
とが理解されよう。
【0061】例えば、望ましい実施態様においては、S
領域に対する入口点および出口点を識別することにより
黙示的に行われるが、前処理ロジックは、抑制すること
が可能な命令を物理的に「タグ付け」しない。次いで、
基本ブロック・スケジューリング・ロジックは、これが
受取る情報に応答して黙示的に「タグ付け」された命令
を抑制する。別の実施例においては、前処理ロジックは
、抑制される命令を物理的にタグ付けするように構成す
ることができる。換言すれば、タグ・フィールドを基本
ブロック・スケジューラにより使用される中間言語命令
に設けることもでき、このタグ・フィールドはS領域に
帰属する命令に対してセットされてこれが帰属するS領
域を識別する。従って、基本ブロック・スケジューラは
、疑似命令により置換される命令を識別するため、命令
上のタグを直接使用することも可能である。この場合、
いったん基本ブロック・スケジューラがその作業を行う
と、タグは再スケジュールされた出力命令シーケンス1
6を形成するため落とされる必要がある。
【0062】疑似命令の生成のため命令のタグ付けに代
わるものは、サブシーケンスをメモリーにセーブして、
前処理ロジックにより照合される時、置換する命令のレ
ジスタおよびメモリー参照を記録する疑似命令をその場
所に挿入することによって、各S領域サブシーケンスの
命令を物理的に置換することである。この場合、前処理
ロジックは、命令(i)〜(iii)のリストを用意し
て疑似サブルーチン呼出しの使用によりS領域を抑制す
る。この場合、前処理ロジックの出力は、(bがPに帰
属するならば、bのない)ブロックx、疑似サブルーチ
ン呼出し、および(1がPに帰属するならば、1のない
)ブロックy、更には疑似サブルーチン呼出しが指示す
る別のセーブされたサブシーケンスからなる結果として
の直線コードを含む修正命令シーケンスとなる。
【0063】一旦S領域が識別されて疑似サブルーチン
呼出しにより置換されると、完全に周知の基本ブロック
・スケジューラが結果として得た直線コードに応用する
ことができる。セーブされたサブシーケンスに対するポ
インタは、(基本ブロック・スケジューラによりスケジ
ュールされないコメントとして)疑似命令と関連する。 このポインタを用いてセーブされたサブシーケンスをア
クセスする後処理ロジックを、セーブされたサブシーケ
ンスをスケジューリング後にアクセスするため設けるこ
とができる。このようにして、スケジュール後の修正さ
れた命令シーケンスを完全な再スケジュールされた出力
命令シーケンスに拡張するため疑似サブシーケンス呼出
しの代わりに、サブシーケンスをスケジュールされた命
令シーケンスに挿入することができる。このような実施
例においては、修正することなくどんな従来の基本ブロ
ック・スケジューラでも使用することができる。
【0064】S領域と対応する命令の抑制の上記以外の
別の試みを本発明の範囲内で考えられることが理解され
よう。即ち、基本ブロック・スケジューラの外部で(最
後に述べた代替におけるように)、あるいは望ましい実
施態様および最初に述べた代替におけるように部分的に
基本ブロック・スケジューラ内部で行うことができる。 しかし、上記の全ての代替において、スケジューリング
・プロセスのある段階で、スケジューラはS領域と対応
する命令のサブシーケンスを1つの命令として解釈する
。
【0065】スケジューリング後に必要な後処理の程度
は、特定の構成に依存する。先に述べたように、もしサ
ブシーケンスが中間言語の命令シーケンスから物理的に
排除されるならば、後処理ロジックがこれらを復元しな
ければならない。もし命令が物理的にタグ付けされるな
らば、後処理がタグを取外す(タグ・フィールドをゼロ
にする)ことが必要である。望ましい実施態様における
ように全てが黙示的に取扱われるならば、後処理は不要
である。
【0066】本発明の望ましい実施態様においては、命
令スケジューラは、コンパイラ・プログラムの一部とし
てソフトウエアで実現される。しかし、このスケジュー
ラは少なくとも部分的にハードウエア・ロジックの形態
で実現することも可能である。
【0067】また、パイプライン化マシンや他の最適化
基準以外の他のコンピュータ・アーキテクチャに対して
本発明を使用することが可能なことも理解されよう。例
えば、ヒューリスチックスがレジスタに対する圧力の低
減を試みる基本ブロック・スケジューラを使用する少数
のレジスタを備えたマシンにおいて使用可能である。
【0068】                          
        表  1sample() {     int i,count;         
                         
     |ライン1    count=0;   
                         
               |ライン2    f
or(i=0;i<10;i++)         
                         
|ライン3    {               
                         
          |ライン4         i
f(function1(i)) {count +=
 1;}                |ライン5
    }                    
                         
     |ライン6    return coun
t; }                          
        表  2  I1         
LI         r31=0         
               基本ブロックB1  
I2         LR         r30
=r31                     
 基本ブロックB1  I3         CL.
0:                       
              基本ブロックB2  I
4         LR         r3=r
30                       
  基本ブロックB2  I5         CA
LL       r3=function1,1,r
3              基本ブロックB2  
I6         C          cr0
=r3,0                    
   基本ブロックB2  I7         A
I         r30=r30,1      
                基本ブロックB2 
+I8         BT         CL
.3,cr0,0x4/eq            
    基本ブロックB2 +I9         
AI         r31=r31,1     
               基本ブロックB3 +
I10 CL.3:                
                         
  基本ブロックB4  I11    C     
         cr1=r30,10      
               基本ブロックB4  
I12    BT             CL.
0,cr1,0x1/1t             
   基本ブロックB4
【図面の簡単な説明】
【図1】本発明による命令スケジューラの概説用の概略
ブロック図である。
【図2】典型的なフロー・グラフの概略図である。
【符号の説明】
10  命令スケジューラ 11  命令シーケンス入力 12  制御フロー・グラフ 13  前処理ロジック 14  修正された命令シーケンス 15  基本ブロック・スケジューラ 16  一連の再スケジュール命令

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】  コンピュータ用の命令スケジューラで
    あって、命令シーケンスにおいて命令スケジューリング
    の目的のため抑制し得る候補となる命令サブシーケンス
    を識別する前処理ロジックと、該前処理ロジックに応答
    して識別された抑制サブシーケンスで命令シーケンスを
    スケジューリングする基本ブロック・スケジューリング
    ・ロジックとを設けることを特徴とする命令スケジュー
    ラ。
  2. 【請求項2】  前記前処理ロジックが、前記命令の基
    本ブロックが制御フローの順序で配列される修正された
    命令シーケンスを生じるように作動し、前記基本ブロッ
    ク・スケジューリング・ロジックが、修正された命令シ
    ーケンスを用いて命令をスケジュールすることを特徴と
    する請求項1記載の命令スケジューラ。
  3. 【請求項3】  前記前処理ロジックが、候補となるサ
    ブシーケンスに対する入口ブロックおよび出口ブロック
    を識別し、前記基本ブロック・スケジューリング・ロジ
    ックが相互に異なる入口ブロック値と出口ブロック値の
    通知に応答して、前記サブシーケンスを1つの疑似命令
    として取扱うことによりサブシーケンスを抑制すること
    を特徴とする請求項1または2記載の命令スケジューラ
    。
  4. 【請求項4】  前記前処理ロジックが前記サブシーケ
    ンスの命令にタグを付け、前記基本ブロック・スケジュ
    ーリング・ロジックがタグを付した命令を単一の疑似命
    令として取扱うことによりこれを抑制することを特徴と
    する請求項1または2記載の命令スケジューラ。
  5. 【請求項5】  前記前処理ロジックが、前記サブシー
    ケンスをセーブしかつその場所に疑似命令を挿入するこ
    とにより該サブシーケンスを抑制し、該疑似命令はこれ
    が置換する命令のレジスタおよびメモリー参照を記録す
    ることを特徴とする請求項1または2記載の命令スケジ
    ューラ。
  6. 【請求項6】  前記修正されたシーケンスのスケジュ
    ーリング後に、前記疑似命令と関連するポインタを用い
    て前記疑似命令をセーブされたサブシーケンスにより置
    換することにより、該疑似命令を拡張する後処理ロジッ
    クを設けることを特徴とする請求項5記載の命令スケジ
    ューラ。
  7. 【請求項7】  前記前処理ロジックが、制御フロー・
    グラフに応答して、一義的な入口と一義的な出口とを有
    しかつ所定の基準を満たすグラフの領域を識別すること
    により、抑制のための候補となるサブシーケンスを識別
    することを特徴とする請求項1乃至6のいずれかに記載
    の命令スケジューラ。
  8. 【請求項8】  入口xおよび出口y(x≠y)を有す
    るグラフの領域Hに対する所定の基準が、a)xおよび
    yがHに帰属すること b)(H−x)の全ての直前のセットは、(H−y)の
    サブセットであること c)(H−y)の全ての直後のセットは、(H−x)の
    サブセットであること d)入口x’および出口y’が(a)−(c)を満足し
    、x=x’あるいはy=y’であるHのサブセットであ
    る領域H’は存在しないことを特徴とする請求項7記載
    の命令スケジューラ。
  9. 【請求項9】  前記入口xおよび出口yが基本ブロッ
    クであり、領域Hに対する候補となるサブシーケンスが
    、−もし分岐ならば、入口ブロックxの最後の命令−存
    在するならば、出口ブロックyの先頭のラベル、および −Hの全ての残るブロックにおける全ての命令を含むこ
    とを特徴とする請求項8記載の命令スケジューラ。
  10. 【請求項10】  前記前処理ロジックが、抑制される
    複数の候補となるサブシーケンスを識別するために命令
    シーケンスについて反復的に作動することを特徴とする
    請求項1乃至9のいずれかに記載の命令スケジューラ。
  11. 【請求項11】  請求項1乃至9のいずれかに記載の
    如き命令スケジューラを設けてなることを特徴とするコ
    ンピュータ用コンパイラ。
  12. 【請求項12】  請求項1乃至10のいずれかに記載
    の如き命令スケジューラを設けてなることを特徴とする
    コンピュータ。
  13. 【請求項13】  コンピュータにおける命令をスケジ
    ュールする方法であって、 a)命令シーケンスにおいて、命令スケジューリングの
    目的のため抑制し得る候補となる命令サブシーケンスを
    識別し、 b)基本ブロック・スケジューリング・ロジックを用い
    て、識別された抑制サブシーケンスで前記命令シーケン
    スをスケジュールするステップを含むことを特徴とする
    方法。
  14. 【請求項14】  前記ステップ(a)が、命令の基本
    ブロックが制御フローの順序で配列される修正された命
    令シーケンスを生じ、前記ステップ(b)において、命
    令が修正された命令シーケンスを用いてスケジュールさ
    れることを特徴とする請求項13記載の方法。
  15. 【請求項15】  前記ステップ(a)が、候補となる
    サブシーケンスに対する入口ブロックと出口ブロックを
    識別することを含み、前記ステップ(b)が、相互に異
    なる入口ブロック値および出口ブロック値の通知に応答
    して、前記サブシーケンスを1つの疑似命令として取扱
    うことにより該サブシーケンスを抑制することを含むこ
    とを特徴とする請求項13または14に記載の方法。
  16. 【請求項16】  前記ステップ(a)が、前記サブシ
    ーケンスの命令にタグを付すことを含み、前記ステップ
    (b)が、前記タグを付した命令を単一の疑似命令とし
    て取扱うことにより該命令を抑制することを含むことを
    特徴とする請求項13または14に記載の方法。
  17. 【請求項17】  前記ステップ(a)が、−識別され
    たサブシーケンスをセーブし、−置換する命令のレジス
    タおよびメモリー参照を記録する疑似命令をその代わり
    に挿入するサブステップを含むことを特徴とする請求項
    13または14に記載の方法。
  18. 【請求項18】  c)前記修正された命令シーケンス
    のスケジューリング後に、前記疑似命令と関連するポイ
    ンタを用いて前記セーブされたサブシーケンスをアクセ
    スして該セーブされたサブシーケンスにより前記疑似命
    令を置換することにより、疑似命令を拡張する、後続ス
    テップを含むことを特徴とする請求項17記載の方法。
  19. 【請求項19】  抑制される候補となるサブシーケン
    スの前記識別ステップが、入力命令シーケンスに対する
    制御フロー・グラフの領域を識別することを含み、該領
    域は、一義的な入口および一義的な出口を有して所定の
    基準を満たすことを特徴とする請求項13乃至18のい
    ずれかに記載の方法。
  20. 【請求項20】  入口xおよび出口y(x≠y)を有
    するグラフの領域Hに対する所定の基準が、a)xおよ
    びyがHに帰属すること b)(H−x)の全ての直前のセットは、(H−y)の
    サブセットであること c)(H−y)の全ての直後のセットは、(H−x)の
    サブセットであること d)入口x’および出口y’が(a)−(c)を満足し
    、x=x’あるいはy=y’であるHのサブセットであ
    る領域H’は存在しないことを特徴とする請求項19記
    載の方法。
  21. 【請求項21】  前記入口xおよび出口yが基本ブロ
    ックであり、領域Hに対する候補となるサブシーケンス
    が、 −もし分岐ならば、入口ブロックxの最後の命令−存在
    するならば、出口ブロックyの先頭のラベル、および −Hの全ての残るブロックにおける全ての命令を含むこ
    とを特徴とする請求項20記載の方法。
  22. 【請求項22】  前記ステップ(a)が、抑制される
    複数の候補となるサブシーケンスを識別するため反復的
    に行われることを特徴とする請求項13乃至21のいず
    れかに記載の方法。
JP3174113A 1990-10-15 1991-07-15 コンピュータの命令スケジューラ Pending JPH04247527A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IL95995 1990-10-15
IL95995A IL95995A0 (en) 1990-10-15 1990-10-15 Instruction scheduler for a computer

Publications (1)

Publication Number Publication Date
JPH04247527A true JPH04247527A (ja) 1992-09-03

Family

ID=11061658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3174113A Pending JPH04247527A (ja) 1990-10-15 1991-07-15 コンピュータの命令スケジューラ

Country Status (3)

Country Link
EP (1) EP0481617A3 (ja)
JP (1) JPH04247527A (ja)
IL (1) IL95995A0 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06208462A (ja) * 1991-02-27 1994-07-26 Sun Microsyst Inc パイプラインプロセッサ用のコストを基にしてヒューリスティックに命令をスケージューリングする方法および装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6081641A (ja) * 1983-10-11 1985-05-09 Matsushita Electric Ind Co Ltd レジスタトレース方法
JPS62217325A (ja) * 1986-03-18 1987-09-24 Nec Corp アセンブラコ−ド最適化方式
JPS6365530A (ja) * 1986-09-05 1988-03-24 Nec Corp コ−ド最適化方式

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6081641A (ja) * 1983-10-11 1985-05-09 Matsushita Electric Ind Co Ltd レジスタトレース方法
JPS62217325A (ja) * 1986-03-18 1987-09-24 Nec Corp アセンブラコ−ド最適化方式
JPS6365530A (ja) * 1986-09-05 1988-03-24 Nec Corp コ−ド最適化方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06208462A (ja) * 1991-02-27 1994-07-26 Sun Microsyst Inc パイプラインプロセッサ用のコストを基にしてヒューリスティックに命令をスケージューリングする方法および装置

Also Published As

Publication number Publication date
EP0481617A3 (en) 1993-01-07
IL95995A0 (en) 1991-07-18
EP0481617A2 (en) 1992-04-22

Similar Documents

Publication Publication Date Title
EP0515016B1 (en) Instruction scheduler for a computer
US7197747B2 (en) Compiling method, apparatus, and program
Rosen et al. Global value numbers and redundant computations
Aiken et al. Perfect pipelining: A new loop parallelization technique
US6044222A (en) System, method, and program product for loop instruction scheduling hardware lookahead
JP3311462B2 (ja) コンパイル処理装置
US5586328A (en) Module dependency based incremental compiler and method
Pinter et al. Program optimization and parallelization using idioms
Huang et al. Speculative disambiguation: A compilation technique for dynamic memory disambiguation
US6230317B1 (en) Method and apparatus for software pipelining of nested loops
EP0789298A1 (en) Method and system for processing speculative operations
JPH08123685A (ja) 推測的実行を支援する方法
JP2010529559A (ja) トランザクションを用いるシーケンシャルフレームワークの並行化
JPH0738158B2 (ja) コード最適化方法およびコンパイラ・システム
US7069555B1 (en) Super-region instruction scheduling and code generation for merging identical instruction into the ready-to-schedule instruction
US6367070B1 (en) Means and method for establishing loop-level parallelism
US6077314A (en) Method of, system for, and computer program product for providing improved code motion and code redundancy removal using extended global value numbering
US6202203B1 (en) Method of, system for, and computer program product for providing global value numbering
US20080104372A1 (en) Method, apparatus and computer program for executing a program
EP0481615A2 (en) Global instruction scheduler for a computer
Glass An elementary discussion of compiler/interpreter writing
EP0481617A2 (en) Instruction scheduler for a computer
Ford et al. A greedy concurrent approach to incremental code generation
JPH06290057A (ja) ループ最適化方法
DeJean et al. A definition optimization technique used in a code translation algorithm