JPH03135630A - 命令スケジューリング方式 - Google Patents

命令スケジューリング方式

Info

Publication number
JPH03135630A
JPH03135630A JP27355189A JP27355189A JPH03135630A JP H03135630 A JPH03135630 A JP H03135630A JP 27355189 A JP27355189 A JP 27355189A JP 27355189 A JP27355189 A JP 27355189A JP H03135630 A JPH03135630 A JP H03135630A
Authority
JP
Japan
Prior art keywords
instruction
instructions
scheduling
dag
instruction block
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
JP27355189A
Other languages
English (en)
Inventor
Kuniko Yamamoto
山本 久仁子
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP27355189A priority Critical patent/JPH03135630A/ja
Publication of JPH03135630A publication Critical patent/JPH03135630A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 【産業上の利用分野〕 本発明は電子計算機システムにおけるプログラムの最適
化方式に関し、特にパイプライン機構を持つアーキテク
チャ上で実行される命令のスケジューリング方式に関す
るものである。
〔従来の技術〕
パイプライン機構を持つアーキテクチャでは、命令やデ
ータが定常的に供給され、各ステージで遊び時間が生じ
ないような場合に最大性能を発揮する。
従来、パイプライン機構の性能を充分に引き出すため、
コンパイラにおいて次のような最適化処理が行われてい
る。
■ビープホール(覗き穴)最適化によるスケジューリン
グ ■命令の全組み合わせ調査によるスケジューリング ここで、ビーブホール最適化によるスケジューリングと
は、目的コードあるいは疑似的な目的コードの中から目
的計算機の特定の命令パターンをもつ箇所を見つけ出し
、その部分を削除したり効率の良い命令群で置き換えた
りすることをいう。
また1命令の全組み合わせ調査によるスケジューリング
とは、命令の全ての組み合わせを調査し、実行効率の良
い順序に命令を並べ換えることをいう。
〔発明が解決しようとする課題〕
上述した従来のスケジューリング方式にあっては、次の
ような欠点があった。
■ビーブホール最適化によるスケジューリングにあって
は、その対象範囲が限られるため、充分な実行効率の向
上が達成できない。
■命令の全組み合わせ調査によるスケジューリングにあ
っては、処理が膨大になるため、コンパイル時間がかか
り過ぎる。
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、コンパイルに長時間を要しないと共
に、充分な実行効率の向上を図ることのできる命令スケ
ジューリング方式を提供することにある。
〔課題を解決するための手段〕 本発明は上記の目的を達成するため、パイプライン機構
を持つアーキテクチャ上で実行される命令を最適化する
方式において、 命令ブロックを入力する命令ブロック入力手段と、 入力した命令ブロック内の各命令の依存関係を調査し、
命令をチェーニングしてDAGを構築するDAG構築手
段と、 構築されたDAGからパイプライン機構を最も有効に利
用するように命令を並べ換える命令スケジューリング手
段と、 並べ替えた命令列を出力する命令ブロック出力手段とを
備えるようにしている。
なお、命令ブロックとは、入口が一つで出口が一つ、か
つ出口以外に分岐命令を含まないような命令の並びであ
り、DAGとは、命令ブロック内の各命令を依存関係に
従ってチェーニングしたグラフである。
〔作用〕
本発明の命令スケジューリング方式にあっては、命令ブ
ロック入力手段が命令ブロックを入力し、入力した命令
ブロック内の各命令の依存関係をDAG構築手段が調査
すると共に命令をチェーニングしてDAGを構築し、構
築されたDAGからパイプライン機構を最も有効に利用
するように命令スケジューリング手段が命令を並べ換え
、並べ替えた命令列を命令ブロック出力手段が出力する
〔実施例〕
以下、本発明の実施例につき図面を参照して説明する。
第1図は本発明の命令スケジューリング方式の一実施例
を示す構成図である。なお、本実施例では、構成および
動作を簡略化するため、スケジューリング対象とする命
令は、データ領域の先頭を指すヘースレジスタを固定に
し、アドレスシラブルをペースレジスタ+ディスプレイ
スメント(インデックスレジスタなし)で表現する命令
、すなわち、1つの記憶域のアクセスは1パターンのア
ドレスシラブルのみで行われる命令のみに限定する。
第1図において、本実施例は、機能部として命令ブロッ
ク入力手段1とDAG構築手段2と命令スケジューリン
グ手段3と命令ブロック出力手段4とを有し、作業領域
としてメモリ6内に命令ブロック展開メモリ61とレジ
スタ生死表62とメモリ生死表63とDAG表現命令テ
ーブル64とスケジューリング済命令ブロック展開メモ
リ65とを有している。また、スケジューリングする命
令の命令ブロック51を格納した命令ブロック格納ファ
イル5と、スケジェーリング済命令ブロック71を格納
するスケジューリング済命令ブロック格納ファイル7と
を備えている。なお、各部の機能等の詳細については以
下の動作を通して説明することとする。
以下、上記の実施例の動作について説明する。
先ず、命令ブロック入力手段1は、命令ブロック格納フ
ァイル5または他の記憶値yt<図示せず)から命令ブ
ロック(入口が一つで出口が一つ、かつ出口以外に分岐
命令を含まないような命令の並び)51を入力し、メモ
リ6の命令ブロック展開メモリ61上に展開する。この
入力した命令プロツク51は、その命令ブロックの出口
で生きているレジスタの情報をもっているものとする。
次に、DAG構築手段2は、命令ブロック展開メモリ6
1上に展開された命令ブロック51内の各命令に対し、
レジスタ生死表62.メモリ生死表63を使用すること
により、各命令間の依存関係(2命令間の絶対的命令実
行順序の規定)を調べ、その関係に従って命令間をチェ
ーニングしたグラフであるD A C(Directe
d Acyclic Graph)を構築する。なお、
DAGは、命令ブロック展開メモリ61上に展開された
命令1つにつき、第4図に示すように、その命令の元の
順序を示すチェーニング情報と、依存関係を示すチェー
ニング情頼とをもつDAG表現命令テーブル64を1つ
ずつ生成して表現する。
また、レジスタ生死表62は第2図に示すような論理的
構成をしており、データ領域の先頭を指す固定ペースレ
ジスタ以外の全レジスタについて、その内容を定義した
命令の情報をもち、レジスタ参照命令は対応する定義命
令よりも先にスケジューリングすることはできないとい
う依存関係を求めるのに用いる。メモリ生死表63は第
3図に示すような論理的構成をしており、アクセスされ
る全メモリについて、そのアドレス情報および定義命令
の情報をもち、メモリ参照命令は対応する定義命令より
も先にスケジューリングすることはできないという依存
関係を求めるのに用いる。
以下、第5図のフローチャートに沿ってDAG構築手段
2の処理を説明する。なお、命令ブロック内の命令と命
令ブロック外の命令との依存関係を示すために、命令ブ
ロックの最初の命令の前と最後の命令の後とにそれぞれ
仮想人口命令と仮想出口命令とを考え、仮想入口命令は
命令ブロック内のどの命令よりも先にスケジューリング
されなければならず、仮想出口命令は命令ブロック内の
どの命令よりも後にスケジューリングされなければなら
ないものとする。
先ず、各テーブル(レジスタ生死表62.メモリ生死表
63.DAG表現命令テーブル64等)を初期化する(
ステップ201)。
次いで、各命令につき以下の処理を行う。
(1ルジスタ参照命令については(ステップ202のY
eS)、レジスタ生死表62の同一レジスタに対して定
義命令があれば(ステップ203のY(is)%その定
義命令へのポインタが示す命令からチェーニングする(
ステップ204)、定義命令がない場合すなわち定義命
令へのポインタが初期状態の場合は(ステップ203の
No)、仮想入口命令からチェ一二ソグする(ステップ
205)。
(2)メモリ参照命令については(ステップ206のY
eS)、メモリ生死表63のペースレジスタおよびディ
スプレイスメントで一意に表現されている同一メモリの
定義命令があれば(ステップ207のYes)、そのポ
インタが示す命令からチェーニングする(ステップ20
8)。メモリ生死表63に同一メモリに対するエントリ
がなければ(ステップ207のNO)、仮想入口命令か
らチェ一二ソグする(ステップ209)。
(3)レジスタ定義命令については(ステップ210の
Yes)、レジスタ生死表62の同一レジスタに対して
定義命令へのポインタを設定する(ステップ211)。
(4)メモリ定義命令については(ステップ212のY
es)、メモリ生死表63に同一メモリに対するエント
リがあれば(ステップ213のYeS)、その定義命令
へのポインタを再設定する(ステップ214)。メモリ
生死表63に同一メモリに対するエントリがなければ(
ステップ213のNO)、メモリ生死表63に新たに1
エントリを追加しくステ・ノブ215)、定義命令への
ポインタおよびメモリ位置の情報を設定する(ステ・ノ
ブ216)。
命令ブロック内の全ての命令に対して上記の処理を行っ
た後に(ステップ217のYeS)、命令ブロックの出
口で生きているレジスタにつ%sで、レジスタ生死表6
2の定義命令へのポインタが示す命令から仮想出口命令
へチェーニングする(ステップ218)。次いで、メモ
リ生死表63に残っている全ての定義命令へのポインタ
が示す命令から仮想出口命令へチェーニングする(ステ
ップ219)。
このようにしてDAGが構築される。なお、DAG表現
命令テーブル64を使ってチェーニングされた命令の関
係は、自分の命令の前にチェーニングされている命令が
全て実行されなければ、自分の命令が実行できないとい
う命令の依存関係を示している。
以上のように、DAG構築手段2によって命令ブロック
51内の命令の依存関係を解析した後、命令スケジュー
リング手段3は、命令実行時にできるだけ遅れが生じな
いように、パイプライン機構を最大限に有効利用するよ
うな命令列にメモリ上の命令列を矛盾なく並べ換える。
この場合、命令ブロック展開メモリ61上に展開した命
令を直接置き換えないで、別のスケジューリング済命令
ブロック展開メモリ65上にスケジューリングしていく
以下、第6図のフローチャートに沿って命令スケジュー
リング手段3の処理を説明する。
先ず、命令スケジューリングのための時刻(クロック数
)を初期化する(ステップ31)。
次いで、DAG表現命令テーブル64を元の命令の順序
通りに辿りながら、命令の依存関係でチェーニングされ
た2命令が続けて実行された場合の遅れのクロック数(
インタロック数)を求める(ステップ32)。
次に、DAGから、自分の前にスケジューリングされな
ければならない命令が全てスケジューリングされている
未スケジューリング命令をスケジューリング候補命令と
して選択する(ステップ33)。
次に、スケジューリング候補命令の中から現時点でスケ
ジューリング可能な命令を選択する(ステップ34)。
以下、第7図の詳細フローチャートに沿って、スケジュ
ーリング候補命令aが現時点でスケジューリング可能か
否かをチエツクする処理を説明する。なお、第7図にお
ける記号D()等は次のような内容を表すものとする。
D(t);命令iが破壊するリソースと同じリソースを
破壊する命令群 F (i)  ;命令iから直接チェーニングされてい
る命令群 P(i);命令iの前にスケジューリングされなければ
ならない未スケジューリン グ命令群 R(i)H命令iが破壊するリソース群S;スケジュー
リング済命令群 各スケジューリング候補命令aにつき以下の処理を行う
■スケジューリング候補命令aがレジスタまたはメモリ
等のリソースを破壊しない場合は(ステップ341のY
es)、スケジューリング候補命令aは出力可能命令と
判定する。
■スケジューリング候補命令aがリソースを破壊する場
合(ステップ341のNO)、同じリソースを破壊した
スケジューリング済命令があって、かつスケジューリン
グ候補命令a以外にその命令から直接チェーニングされ
ている未スケジューリング命令があれば(ステップ34
2のYes)、スケジューリング候補命令aは出力不可
能命令と判定する。
■上記■の処理で判定できない場合は(ステップ342
のNo)%スケジューリング候補命令aからチェーニン
グされていて、スケジューリング候補命令aの後にスケ
ジューリングされなければならない命令、およびその命
令の前にスケジューリングされなければならないスケジ
ューリング候補命令a以外の命令をXとする(ステップ
343)。ここで、命令Xはスケジューリング候補命令
aが破壊するリソースの値の寿命を切るのにスケジュー
リングされなければならない命令の集合である。
■命令Xがリソースを破壊しない場合(ステップ344
のYes)、スケジューリング候補命令aは出力可能命
令と判定する。
■命令Xがリソースを破壊する場合(ステップ344の
No)%同しリソースを破壊するスケジューリング済命
令がないか、あってもその命令からチェーニングされて
いる未スケジューリング命令がないか、またはあっても
その命令がリソースを破壊しないならば(ステップ34
5のYes)、スケジューリング候補命令aは出力可能
命令と判定する。
■上記■の処理で判定できない場合は(ステップ345
のNo) 、命令Xが破壊するリソースと同じリソース
を破壊するスケジューリング済命令からチェーニングさ
れている未スケジューリング命令が破壊するリソースが
、なければスケジューリング候補命令aは出力可能命令
と判定しくステップ346のYe s)、それがスケジ
ューリング候補命令aが破壊するリソースと同じならば
(ステップ347のYeS)、スケジューリング候補命
令aは出力不可能命令と判定する。
■命令Xが破壊するリソースと同じリソースを破壊する
スケジューリング済命令からチェーニングされている未
スケジューリング命令が破壊するリソースが、スケジュ
ーリング候補命令aが破壊するリソースと異なっている
ならば(ステップ347のNO)、その未スケジューリ
ング命令を新しい命令Xとしくステップ34B)、上記
の■から処理を繰り返す。
上記の■〜■の処理によって、スケジューリング候補命
令の中からスケジューリング可能命令を選択したならば
、次はスケジューリング可能命令の中から、現時点でス
ケジューリングするのに最適な命令を選択する(第6図
のステップ35)。
ここで、スケジューリングは先ずスケジューリング可能
時刻からインクロック数の小さいものが優先となる。こ
れは実行時の遅れを最小にするためである。優先順位1
位の命令が1つならば、その命令を最適なスケジューリ
ング命令と判定する。
優先順位1位の命令が複数あった場合は、スケジューリ
ング可能命令がスケジューリングされた場合に未スケジ
ューリングの命令に与える影響度によって命令に重み付
けをし、影響度の高い方を優先する。影響度も同じもの
が複数あった場合は、元の順序に従って元々あった方の
命令を優先する。
最適なスケジューリング命令が決定したならば、スケジ
ューリング済命令ブロック展開メモリ65上にその命令
をスケジューリングする(ステップ36)。
1命令スケジユーリングする度に、クロック数をカウン
トアツプしくステップ37)、スケジューリングした命
令とそこからチェーニングされている命令間のインタロ
フタ数とカウントアツプしたクロック数とから、チェー
ニングされている未スケジューリング命令をインクロッ
ク数−〇でスケジューリングできるクロック数であるス
ケジューリング可能時刻を求める(ステップ38)、そ
して、再びスケジューリング候補命令選択から繰り返し
処理を行い(ステップ39)、命令ブロック内の全ての
命令について終了した場合に処理を終了する。
このようにして、スケジューリング済命令ブロック展開
メモリ65上に命令をスケジューリングした後、命令ブ
ロック出力手段4は、スケジューリング済命令ブロック
格納ファイル7または他の記憶語W(図示せず)にスケ
ジューリング済命令ブロック71を出力する。
実行プログラムを構成する各命令ブロックにつき上記処
理を行った後、この実行プログラムはパイプライン機構
をもつアーキテクチャ上において実行される。
〔発明の効果〕
以上説明したように、本発明の命令スケジューリング方
式にあっては、命令ブロックを単位としてスケジューリ
ングを行うため、 ■従来のビーブホール最適化によるスケジューリングに
比して対象範囲が広(なり、充分な実行効率の向上が達
成できる。
■従来の命令の全組み合わせ調査によるスケジューリン
グに比して処理が簡略化され、コンパイル時間の増大を
招かない。
等の効果がある。
【図面の簡単な説明】
第1図は本発明の命令スケジューリング方式の一実施例
を示す構成図、 第2図は第1図におけるレジスタ生死表の論理的構成図
、 第3図は第1図におけるメモリ生死表の論理的構成図、 第4図は第1図におけるDAG表現命令テーブルの論理
的構成図、 第5図は第1図におけるDAG構築手段の処理のフロー
チャート、 第6図は第1図における命令スケジューリング手段の処
理のフローチャートおよび、 第7図は第6図のスケジューリング可能命令選択処理の
詳細を示すフローチャートである。 図において、 1・・・・・・命令ブロック入力手段 2・・・・・・DAG構築手段 3・・・・・・命令スケジューリング手段4・・・・・
・命令ブロック出力手段 5・・・・・・命令ブロック格納ファイル51・・・命
令プロ・7り 6・・・・・・メモリ 61・・・命令ブロック展開メモリ 62・・・レジスタ生死表 63・・・メモリ生死表 64・・・DAG表現命令テーブル 65・・・スケジューリング済命令ブロック展開メモリ 7・・・・・・スケジューリング済命令ブロック格納フ
ァイル

Claims (1)

  1. 【特許請求の範囲】 パイプライン機構を持つアーキテクチャ上で実行される
    命令を最適化する方式において、命令ブロックを入力す
    る命令ブロック入力手段と、 入力した命令ブロック内の各命令の依存関係を調査し、
    命令をチェーニングしてDAGを構築するDAG構築手
    段と、 構築されたDAGからパイプライン機構を最も有効に利
    用するように命令を並べ換える命令スケジューリング手
    段と、 並べ替えた命令列を出力する命令ブロック出力手段とを
    備えたことを特徴とする命令スケジューリング方式。
JP27355189A 1989-10-20 1989-10-20 命令スケジューリング方式 Pending JPH03135630A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27355189A JPH03135630A (ja) 1989-10-20 1989-10-20 命令スケジューリング方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27355189A JPH03135630A (ja) 1989-10-20 1989-10-20 命令スケジューリング方式

Publications (1)

Publication Number Publication Date
JPH03135630A true JPH03135630A (ja) 1991-06-10

Family

ID=17529394

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27355189A Pending JPH03135630A (ja) 1989-10-20 1989-10-20 命令スケジューリング方式

Country Status (1)

Country Link
JP (1) JPH03135630A (ja)

Cited By (4)

* 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 パイプラインプロセッサ用のコストを基にしてヒューリスティックに命令をスケージューリングする方法および装置
US5515519A (en) * 1993-03-19 1996-05-07 Hitachi, Ltd. Data processor and method utilizing coded no-operation instructions
US5850552A (en) * 1995-04-27 1998-12-15 Matsushita Electric Industrial Co., Ltd. Optimization apparatus for removing hazards by arranging instruction order
WO2004012079A1 (ja) * 2002-07-30 2004-02-05 The Circle For The Promotion Of Science And Engineering 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置

Cited By (4)

* 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 パイプラインプロセッサ用のコストを基にしてヒューリスティックに命令をスケージューリングする方法および装置
US5515519A (en) * 1993-03-19 1996-05-07 Hitachi, Ltd. Data processor and method utilizing coded no-operation instructions
US5850552A (en) * 1995-04-27 1998-12-15 Matsushita Electric Industrial Co., Ltd. Optimization apparatus for removing hazards by arranging instruction order
WO2004012079A1 (ja) * 2002-07-30 2004-02-05 The Circle For The Promotion Of Science And Engineering 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置

Similar Documents

Publication Publication Date Title
US5689712A (en) Profile-based optimizing postprocessors for data references
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
EP0806725B1 (en) Method and apparatus for early insertion of assembler code for optimization
US6446258B1 (en) Interactive instruction scheduling and block ordering
US5317743A (en) System for compiling iterated loops based on the possibility of parallel execution
JPH05143332A (ja) 命令スケジユーラを備えたコンピユータ・システム及び入力命令シーケンスを再スケジユールする方法
US20120066668A1 (en) C/c++ language extensions for general-purpose graphics processing unit
US9495136B2 (en) Using aliasing information for dynamic binary optimization
JP2500079B2 (ja) プログラムの最適化方法及びコンパイラ・システム
US5960182A (en) Hardware-software co-simulation system, hardware-software co-simulation method, and computer-readable memory containing a hardware-software co-simulation program
US6230317B1 (en) Method and apparatus for software pipelining of nested loops
JPH02217926A (ja) コード生成方法
JP2000035893A (ja) デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体
JPH03135630A (ja) 命令スケジューリング方式
JP3318051B2 (ja) 翻訳処理方法
Ruggiero Throttle Mechanisms for the Manchester Dataflow Machine
KR20150040663A (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
CN115004150A (zh) 用于预测和调度软件流水化循环中的复制指令的方法和装置
US20190102153A1 (en) Information processing apparatus, information processing method, and recording medium recording program
KR20090107972A (ko) 범용 프로세서에 의해 실행하기 위한 어플리케이션 프로그램의 리타게팅
KR20090107973A (ko) 리타게팅된 그래픽 프로세서 가속 코드의 범용 프로세서에 의한 실행
JPH08286896A (ja) ソフトウェア開発方法及びソフトウェア開発システム
Feuerhahn A data-flow driven resource allocation in a retargetable microcode compiler
JPH02176938A (ja) 機械語命令最適化方式
JP3309810B2 (ja) プログラムリンクシステム、方法及び記録媒体