JPH07295810A - 命令列最適化処理方法及び装置 - Google Patents

命令列最適化処理方法及び装置

Info

Publication number
JPH07295810A
JPH07295810A JP8949194A JP8949194A JPH07295810A JP H07295810 A JPH07295810 A JP H07295810A JP 8949194 A JP8949194 A JP 8949194A JP 8949194 A JP8949194 A JP 8949194A JP H07295810 A JPH07295810 A JP H07295810A
Authority
JP
Japan
Prior art keywords
instruction
weight
scheduling
interlock
instructions
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
JP8949194A
Other languages
English (en)
Inventor
Tomohiko Yamada
朝彦 山田
Tomohiro Kanda
智宏 神田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP8949194A priority Critical patent/JPH07295810A/ja
Publication of JPH07295810A publication Critical patent/JPH07295810A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】命令スケジューリング時に、未選択命令を考慮
することにより、対象命令列で発生するインタロックを
最小化できるようにする。 【構成】重み#1計算部120により算出された依存関
係グラフ上の命令のうちの選択候補命令の重み#1が重
み#2として書き込まれる重み#2格納部230と、こ
の格納部230を参照して、選択候補命令の中で重み#
2が最大の命令を選択する次命令選択部138と、次命
令選択に際し、選択候補命令が選択されるならば後のス
ケジューリングで大きなインタロックが起こるかを、当
該命令とそれに依存する命令間で起こるインタロックの
サイクル数と、未選択命令中の整数演算系命令及び浮動
小数点演算系命令の数の比率をもとに予測し、大きなイ
ンタロックが起こるなら、当該選択候補命令についての
重み#2格納部230内の重み#2を増やす後続インタ
ロック重み増加部136とを備えた構成とする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、特に、スーパスカラ・
アーキテクチャを持つRISC(縮小命令セットコンピ
ュータ)プロセッサで処理される命令列を最適化するの
に好適な命令列最適化処理方法及び装置に関する。
【0002】
【従来の技術】従来、スーパスカラ・アーキテクチャを
持つRISCプロセッサ搭載した計算機における命令ス
ケジューリングは、対象命令間の依存関係を抽出するこ
とにより作成される依存関係グラフに対し、命令選択以
前に付けた重み情報と命令選択時に既選択命令と選択候
補命令(スケジューリング候補命令)との間の関係のみ
を使用して行われていた。
【0003】さて、スーパスカラ・アーキテクチャを持
つRISCプロセッサは、IU(Integer Unit: 整数演
算ユニット)と、FPU(Floating Point Unit:浮動小
数点ユニット)を有している。上記RISCプロセッサ
で取り扱われる命令は、IU側だけでパイプライン処理
されるものと、IU及びFPUの両方でパイプライン処
理されるものに大別される。いずれの命令も1つの独立
した命令であり、したがって従来のパイプラインのシミ
ュレーションは、IUとFPUとに分けることなく1本
のパイプラインとして行われていた。
【0004】
【発明が解決しようとする課題】しかし、依存関係グラ
フに重みを付けた情報だけでは、後に起こるインタロッ
ク、並列実行を予測することはできない。また、パイプ
ラインのシミュレーションは、元来2つのパイプライン
を、そのパイプラインで1つの独立した命令が処理され
ることから、1本のパイプラインとして扱って行ってい
たため、正確ではなかった。また、IUとFPUのシミ
ュレーションの情報は分離できない等、最適なスケジュ
ーリングのための情報が不足していた。
【0005】本発明は上記事情を考慮してなされたもの
でその目的は、スーパスカラ・アーキテクチャを持つR
ISCプロセッサに代表されるプロセッサで処理される
命令列を対象とする命令スケジューリング時に、未選択
命令を考慮することにより、対象命令列で発生するイン
タロックを減らすような命令並び換えが行える命令列最
適化処理方法及び装置を提供することにある。
【0006】本発明の他の目的は、命令スケジューリン
グ時に、未選択命令を考慮することにより、対象命令列
で発生する並列実行を増やすような命令並び換えが行え
る命令列最適化処理方法及び装置を提供することにあ
る。
【0007】本発明の更に他の目的は、命令スケジュー
リングに必要なパイプラインのシミュレーションをI
U、FPUで分離することにより、対象命令列で発生す
るインタロックを減らし、更に並列実行可能なプロセッ
サを対象とする命令スケジューリングであれば、並列実
行を増やすような命令並び換えが行える命令列最適化処
理方法及び装置を提供することにある。
【0008】
【課題を解決するための手段及び作用】本発明の第1の
観点に係る構成は、整数演算装置(IU)と浮動小数点
演算処理装置(FPU)を持つパイプライン処理方式の
プロセッサを搭載した計算機を対象とする命令スケジュ
ーリング処理において、対象命令列の各命令間の依存関
係を表す依存関係グラフ上の各命令について、その命令
のデコードサイクルに応じた命令固有の重みと、当該グ
ラフ上で子となる命令があれば、その子の重みとその子
との間のインタロックのサイクル数をもとに、その命令
に重みを付けておき、対象命令列の並び換えによる命令
スケジューリングのために、依存関係グラフ上でスケジ
ューリング済みの命令を除いて先行命令を持たない全て
の未選択命令をスケジューリング候補命令(選択候補命
令と称する)として扱い、その選択候補命令の中で重み
が最大の命令を次のスケジューリング命令(次命令)と
して選択する動作を繰り返すようにし、この動作におけ
る1命令(次命令)の選択に際しては、それに先行し
て、選択の対象となり得る各選択候補命令について、当
該選択候補命令が選択されたものとした場合に、後のス
ケジューリングで大きなインタロックが起こるか否か
を、当該選択候補命令とそれに依存している命令間で起
こるインタロックのサイクル数と、対象命令列に含まれ
ている未選択命令中の整数演算系命令及び浮動小数点演
算系命令の数の比率の情報をもとに予測し、大きなイン
タロックが起こると予測できるならば、当該選択候補命
令についての重みを増やすようにしたことを特徴とす
る。
【0009】上記の構成において、対象命令列の各命令
間の依存関係を表す依存関係グラフ上の各命令につい
て、その命令のデコードサイクルに応じた命令固有の重
みをもとに(当該グラフ上で子となる命令があれば、更
に、その子の重みとその子との間のインタロックのサイ
クル数をもとに)、その命令に重みを付しておく。
【0010】その後、依存関係グラフ上で既選択命令
(スケジューリング済みの命令)を除いて先行命令を持
たない全ての未選択命令を選択命令として、その選択候
補命令の中で重みが最大の命令を選択する動作を繰り返
すことにより、命令列の最適化のための命令並び換え処
理が行われるが、この命令並び換え処理で1つの命令の
選択が行われる際には、その都度、それに先行して、以
下の動作が行われる。即ち、その時点において選択の対
象となり得る各選択候補命令について当該選択候補命令
が選択されたものとしてシミュレーションが行われる。
このシミュレーションでは、既選択命令とインタロック
を起こすか否かが判断され、インタロックを起こす場合
にはインタロックサイクル数が求められる。
【0011】そして、上記のシミュレーションが行われ
る毎に、そのシミュレーション結果に従い、当該選択候
補命令が選択されたものとした場合に既選択命令との間
でインタロックを起こすならば、そのインタロックサイ
クル数に応じて当該選択候補命令の重みが減らされる。
【0012】さて、全ての選択候補命令について、その
選択候補命令が選択されたものとして、その命令の重み
の再評価が行われると、その選択候補命令の中から最も
重みの大きい命令が次命令として選択される。
【0013】以上の処理は、依存グラフの根から葉に向
かって、選択候補命令がなくなるまで行われ、対象命令
列の各命令が並び換えられる。この並び換えでは、上記
の重み減少操作により、次命令として選択されたものと
した場合に既選択命令との間でインタロックを起こすよ
うな命令は後でスケジューリングされることから、イン
タロックを減らすことが可能である。
【0014】なお、上記プロセッサが並列実行可能であ
るものとすると、上記のシミュレーションにおいて並列
実行の可否も判断され、並列実行可であれば、該当する
選択候補命令の重みが増やされる。この操作により、当
該命令は早い時期にスケジューリングされることから、
並列実行を増やすことが可能となる。
【0015】さて、上記の構成において最も特徴的な部
分は、選択候補命令(親)とそれに依存している命令
(子)との間のインタロックが大きい場合、或いは選択
候補命令と子との間のインタロックはそれほど大きくな
いが、未選択命令のうち整数演算系命令に比べて浮動小
数点演算系命令の割合が多い場合には、(浮動小数点演
算系命令の方が一般にサイクル数が多いことから)後に
大きなインタロックが起こると判断されて、その選択候
補命令の重みが増やされることである。この重み増加操
作により、当該命令は早い時期にスケジューリングされ
るようになり、後に大きなインタロックが起こることが
回避される。したがって、インタロックを一層減少する
ことが可能となる。
【0016】本発明の第2の観点に係る構成は、パイプ
ライン処理方式による並列実行が可能なプロセッサを搭
載した計算機を対象とする命令スケジューリング処理に
おいて、上記第1の観点に係る構成と同様に、依存関係
グラフ上の各命令について重みを付けておき、依存関係
グラフ上で既選択命令を除いて先行命令を持たない全て
の未選択命令(選択候補命令)の中から重みが最大の命
令を次命令として選択する際には、それに先行して、各
選択候補命令について、今回、当該選択候補命令が選択
されたとしても並列実行されないが、他の選択候補命令
が選択された直後に選択されると並列実行できる命令で
あるか否かを判断し、直後に選択されると並列実行でき
る命令であるならば、当該選択候補命令についての重み
を減らすようにしたことを特徴とするものである。
【0017】上記の構成においては、今、選択候補命令
を選択したとしても、既選択命令(以前にスケジューリ
ングされた命令)のいずれとも並列実行されないが、他
の選択候補命令が次命令として選択された直後に選択さ
れたなら並列実行可能と判断される選択候補命令につい
て、その重みが減らされる。
【0018】このような選択候補命令は、例えば次のよ
うにして判断される。まず、選択候補命令が、デコード
サイクル2以上であり、最初のデコードサイクルで先行
する命令列との組み合わせによっては並列実行(ここで
はデコードサイクルが同時実行)可能で、その上、最後
のデコードサイクルで後続する命令列とも組み合わせに
よっては並列実行が可能な命令であるものの、実際には
既に選択された先行命令列と並列実行されない命令であ
るか否かが判断される。もし、今、選択されたとして
も、既に選択された先行命令列と並列実行されない選択
候補命令の場合、当該選択候補命令以外の選択候補命令
のうちに、当該選択候補命令の先行命令となり当該選択
候補命令と並列実行できる命令と、当該選択候補命令の
後続命令として当該選択候補命令と並列実行できる命令
とがそれぞれ存在するか否かが調べられる。これによ
り、当該選択候補命令が、今回選択されたとしても並列
実行されないが、直後に選択されると並列実行できる命
令であるか否かが判断される。
【0019】もし、当該選択候補命令が上記直後に選択
されると並列実行が可能な命令であると判断された場合
には、当該選択候補命令の重みが減らされる。この重み
減少操作により、当該選択候補命令は後でスケジューリ
ングが行われるようになり、これにより並列実行数を増
やすことが可能となる。
【0020】本発明の第3の観点に係る構成は、IUと
FPUを持つパイプライン処理方式による並列実行が可
能なプロセッサを搭載した計算機を対象とする命令スケ
ジューリング処理において、上記第1の観点に係る構成
と同様に、依存関係グラフ上の各命令について重みを付
けておき、依存関係グラフ上で既選択命令を除いて先行
命令を持たない全ての未選択命令(選択候補命令)の中
から重みが最大の命令を次命令として選択する際には、
それに先行して、各選択候補命令について、当該選択候
補命令が選択されたものとして、IU、FPU別々にシ
ミュレーションを行い、既選択命令とインタロックを起
こすか、或いは並列実行可能かを判断し、インタロック
を起こす場合にはインタロックサイクル数を求め、I
U、FPUの少なくとも一方の側でインタロックを起こ
すならば、そのインタロックサイクル数に応じて当該選
択候補命令の重みを減らし、既選択命令と並列実行可能
ならば当該選択候補命令の重みを増やすようにしたこと
を特徴とするものである。
【0021】上記の構成においては、選択候補命令が選
択されたものとして行われるシミュレーションが、I
U、FPUの2本のパイプライン別々に実施されるた
め、正確なシミュレーションが実現される。そして、こ
のシミュレーションにより、IU、FPU別々にインタ
ロックの情報(インタロックを起こすか否かの情報、起
こす場合には更にインタロックサイクル数)が取得さ
れ、インタロックを起こすならば、そのインタロックサ
イクル数に応じて該当する選択候補命令の重みが減らさ
れる。この操作は、IU、FPUの両方でインタロック
が起こるなら、それぞれのインタロックサイクル数につ
いて行われる。ここで、FPUのインタロックは実行サ
イクルの遅延に必ずしもつながらないことから、IUの
インタロックに比べて重み減少の割合を少なくすると良
い。
【0022】上記のシミュレーションでは、既選択命令
と並列実行可能か否かの情報も取得され、並列実行可能
であるならば、該当する選択候補命令の重みが増やされ
る。以上の重み減少操作により、既選択命令とのインタ
ロックを起こす命令は後でスケジューリングされるた
め、インタロックを減らすことが可能となる。また、重
み増加操作により、既選択命令と並列実行可能な命令は
比較的早い時期にスケジューリングされるため、並列実
行を増やすことが可能となる。
【0023】
【実施例】図1は本発明の命令列最適化処理方法を適用
する命令列最適化処理装置の一実施例を示す機能ブロッ
ク構成図である。図1に示す命令列最適化処理装置は、
命令列最適化処理機能を持つ処理部100及びメモリ2
00から構成される。このメモリ200には、詳細を後
述する、依存関係グラフデータ・重み#1格納部21
0、シミュレーション結果格納部220、重み#2格納
部230及び実行状態格納部240が設けられる。
【0024】処理部100は、依存関係グラフ構築部1
10、重み#1計算部120及び重み評価・命令並べ換
え部130から構成される。依存関係グラフ構築部11
0は、対象命令列300に対して、命令間の依存関係を
抽出して依存関係グラフを構築するものである。この依
存関係グラフのデータは依存関係グラフデータ・重み#
1格納部210に書き込まれる。
【0025】重み#1計算部120は、依存関係グラフ
データ・重み#1格納部210を参照して、対象命令列
300の各命令に対応した重み(以下、重み#1と称す
る)を計算するものである。この重み#1は、依存関係
グラフデータ・重み#1格納部210に書き込まれる。
【0026】重み評価・命令並べ換え部130は、重み
を評価して、インタロックが最小、並列実行が最大とな
るように、命令列の並び換えを行うもので、未選択命令
確認部131、次選択命令確認部132、シミュレーシ
ョン部133、インタロック重み減少部134、並列実
行重み増加部135、後続インタロック重み増加部13
6、後続並列実行重み減少部137及び次命令選択部1
38から構成される。
【0027】未選択命令確認部131は、シミュレーシ
ョン結果格納部220をもとに未選択命令が残っている
か否かを調べるものである。次選択命令確認部132
は、依存関係グラフデータ・重み#1格納部210とシ
ミュレーション結果格納部220をもとに未選択命令の
中に先行命令を持たない命令が残っているか否かを調べ
るものである。
【0028】シミュレーション部133は、IU、FP
U別々にシミュレーションを行い、未選択命令の中で先
行命令を持たない命令を選択した場合に起こるインタロ
ックによる待ちサイクル数(インタロックサイクル数)
と並列実行可否を判断するものである。この判断結果は
実行状態格納部240に書き込まれる。
【0029】インタロック重み減少部134は、シミュ
レーション部133でのシミュレーション対象となった
未選択命令が既に選んだ命令とインタロックを起こす場
合に、重み#2格納部230内の対応する重み#2を減
らすものである。
【0030】並列実行重み増加部135は、当該未選択
命令が既に選んだ命令と並列実行されるならば、重み#
2格納部230内の対応する重み#2を増やすものであ
る。後続インタロック重み増加部136は、当該未選択
命令が選択された場合に後に大きなインタロックが起こ
ると予測できるならば、重み#2格納部230内の対応
する重み#2を増やすものである。
【0031】後続並列実行重み減少部137は、当該未
選択命令が他の命令の選択直後に選択されるならば並列
実行できると判断できるなら、重み#2格納部230内
の対応する重み#2を減らすものである。
【0032】次命令選択部138は、重み#2格納部2
30をもとに、既に選ばれている命令(既選択命令)を
除いて先行命令を持たない未選択命令の中で最も重み#
2が大きい命令を探し、次命令として選択するものであ
る。次命令選択部138はまた、この命令選択後の状態
にシミュレーション結果格納部220を書き換えるよう
になっている。次命令選択部138による次命令選択が
繰り返されることにより、対象命令列300を対象とす
る命令並び換えがなされた目的命令列400が求められ
ることになる。
【0033】依存関係グラフデータ・重み#1格納部2
10は、対象命令列300の依存関係を示す依存関係グ
ラフのデータと各命令に対応した重み#1を格納するの
に用いられる。
【0034】シミュレーション結果格納部220は、次
命令選択部138によって選択された命令までのシミュ
レーションの実行結果(パイプラインの状態)を、I
U、FPU別々に格納するのに用いられる。
【0035】重み#2格納部230は、次命令選択部1
38による選択の候補となる命令(選択候補命令)の重
み#1の再評価値である重み#2を格納するのに用いら
れる。
【0036】実行状態格納部240は、未選択命令の中
で先行命令を持たない命令が選択されたものとして、シ
ミュレーション部133にてIU、FPU別々に行われ
るシミュレーションの結果、当該シミュレーション部1
33で判断されるインタロックのサイクル数と並列実行
の可否の情報を格納するのに用いられる。
【0037】次に、本実施例の前提条件について述べ
る。本実施例における命令列最適化処理方法は、IUと
FPUを1つのCPUに内蔵し、2命令まで並列実行可
能なスーパスカラ・アーキテクチャを持つRISCプロ
セッサを搭載した計算機で実行される命令列を対象とす
る命令スケジューリングに適用されるものとする。並列
実行可能か否かは、命令の組み合わせ、パイプラインの
状態によって決定される。
【0038】1命令は、命令のデコード(D)、実行
(E)、データの書き込み(W)の3つのステージに分
けられるものとする。命令中には、デコードステージが
2サイクル以上になるものが存在するまた、FPUを用
いる演算は、f1,f2,f3,f4の4ステージに分
けられ、演算の種類によってf2ステージ数が異なるも
のとする。インタロックが起こらない場合のFPUを用
いる命令のパイプラインは、当該命令をaとすると、図
2のように実行される。この図2は、f2ステージ数が
2の例である。
【0039】また、本実施例における並列実行とは、最
初のデコードサイクルが、先行命令の最終デコードサイ
クルと同時実行されることをいう。つまり、デコードサ
イクルが2である並列実行可能な命令では、先行命令を
a、後続命令をbとすると、図3のように並列実行され
る。
【0040】また、説明を簡単にするために、命令a、
命令bの順にデコードされて並列実行される場合は、そ
の逆の命令b、命令aの順にデコードされても並列実行
できると仮定する。
【0041】次に、図1の構成の動作を、図4乃至図6
のフローチャートを参照して、アセンブラソースプログ
ラムに命令スケジューリングを行って最適化する場合を
例に、説明する。
【0042】まず、本実施例において命令スケジューリ
ング(命令列最適化処理)の対象とするのは、両端の命
令以外にジャンプによる飛び込み、飛び出しが存在しな
い、必ず連続して実行される命令列(アセンブラソー
ス)である。対象命令列300は、このような命令列で
ある。
【0043】依存関係グラフ構築部110は、最適化前
後で命令列の意味を変えないために、命令スケジューリ
ング(命令列最適化処理)の対象命令列300に対し
て、その命令間の依存関係を抽出し、依存関係グラフの
データをメモリ200内の依存関係グラフデータ・重み
#1格納部210に書き込む(ステップS1)。
【0044】ここで、命令間の依存関係を、図7のよう
に命令がa,b,c,d,eと並んでいた場合を例に説
明する。図7のように、命令aの演算結果が命令cの演
算に用いられるならば、命令cは命令aに依存してい
る、或いは命令aと命令cは依存関係にあるという。
【0045】もし、対象命令列300が命令a〜eから
なり、これら命令間に図7に示すような依存関係がある
ものとすると、図8(a)のようにグラフ化することが
できる。このグラフは「依存関係グラフ」と呼ばれる。
また、この重み依存関係が結ばれている命令の先行命令
は「親」、後続命令は「子」と呼ばれる。
【0046】図8(a)の依存関係グラフにおいて、各
命令i(i=a〜e)に対応するノード(命令ノード)
を示す円内下側の数字は、その命令iのデコードサイク
ル数di を示し、上側の数字は依存関係グラフから(重
み#1計算部120によって)計算される、その命令i
に対応した重み(重み#1)wi を示す。また、丸数字
は、依存する命令i,j間のインタロックのサイクル数
hijを示す。依存関係グラフ構築部110が依存関係グ
ラフを構築した段階では、重み(重み#1)wi は図8
(a)に示すように未だ求められていない。
【0047】依存関係グラフ構築部110により依存関
係グラフが構築されると、即ち依存関係グラフデータ・
重み#1格納部210に対象命令列300についての依
存関係グラフのデータが書き込まれると、重み#1計算
部120が起動される。
【0048】重み#1計算部120は、依存関係グラフ
データ・重み#1格納部210の保存内容をもとに、依
存関係グラフ上の各命令ノード(命令)iに付ける重み
#1(重みwi )を算出し、依存関係グラフデータ・重
み#1格納部210に書き込む(ステップS2)。この
ステップS2の重み算出処理の詳細を以下に説明する。
【0049】まず、命令iには、固有の重みがある。重
み#1計算部120は、命令iの固有の重みに、当該命
令iのデコードステージのサイクル数(デコードサイク
ル数)di に応じた値を用いる。
【0050】重み#1計算部120は、依存関係グラフ
上で命令(命令ノード)iの「子」となる命令(子命令
ノード)jがあるならば、その子命令ノードjの重み#
1(wj )と、その子命令ノードjとの間でのインタロ
ックのサイクル数hij(インタロックがなければ0)と
の和(wj +hij)を、すべての子命令ノードjについ
て求める。そして重み#1計算部120は、その和が最
大となる値(子命令ノードがなければ0)を、命令iの
固有の重みに加え、命令iの重み(重み#1)wi とす
る。重み#1計算部120は、この重み算出動作を、依
存関係グラフの根から葉へ再帰的に実行する。
【0051】図8(b)は、図8(a)の依存関係グラ
フを対象に、上記のようにして各命令i(i=a〜e)
の重み(重み#1)wi が算出されて、依存関係グラフ
データ・重み#1格納部210に書き込まれた段階での
依存関係グラフを示したものである。
【0052】なお、図8(b)の例では、命令iの固有
の重みには、その命令iのデコードサイクル数di をそ
のまま用いているが、実際には、その重みに加えられる
インタロックサイクル数に比べ、スケジューリングによ
り大きな影響を与えるような値を、その命令iのデコー
ドサイクル数から決定して用いる(例えばデコードサイ
クル数の整数倍値)。これは、デコードサイクルは減ら
ないのに対し、インタロックはスケジューリングで解消
され得るからである。
【0053】次に、未選択命令確認部131が起動され
る。未選択命令確認部131は、シミュレーション結果
格納部220を参照し、未選択命令(次命令選択部13
8によって選択されていない命令)が残っているか否か
を調べる(ステップS3)。この例のように、未選択命
令があるならば、次選択命令確認部132に制御が渡さ
れる。
【0054】次選択命令確認部132は、依存関係グラ
フデータ・重み#1格納部210及びシミュレーション
結果格納部220を参照し、シミュレーション結果格納
部220をもとに検出される未選択命令のうちに、既選
択命令を除いて先行命令を持たない命令(即ち依存関係
グラフデータ・重み#1格納部210により示される依
存関係グラフ上で既選択命令を除いて親の命令がない未
選択命令)が存在するか否かを調べる(ステップS
4)。
【0055】もし、既選択命令を除いて先行命令を持た
ない命令(未選択命令)が残っている場合には、シミュ
レーション部133が起動される。シミュレーション部
133は、IUとFPUを1つのCPUに内蔵している
RISCプロセッサのパイプラインの動作を正確に予測
するために、IU、FPU別々にシミュレーションを行
う。即ちシミュレーション部133は、IU、FPU別
々にシミュレーション結果格納部220に保存されてい
る、既選択命令までのIU、FPU別々のパイプライン
のシミュレーションの実行結果(パイプラインの状態)
をもとに、次選択命令確認部132により確認された先
行命令を持たない未選択命令(以下、選択候補命令と称
する)を次に選択したものとして、IU、FPU別々に
シミュレーションを行う(ステップS5)。
【0056】そしてシミュレーション部133は、ステ
ップS5でのIU、FPU別々のシミュレーションの結
果から、当該選択候補命令(スケジューリング候補命
令)が選択された場合に、既選択命令とインタロックを
起こすか(起こす場合にはインタロックサイクル数)、
或いは並列実行可能かを判断し、その判断結果を実行状
態格納部240に書き込む(ステップS6)。
【0057】更にシミュレーション部133は、依存関
係グラフデータ・重み#1格納部210から上記選択候
補命令の重み#1データを取り出し、重み#2格納部2
30に重み#2として書き込む(ステップS7)。この
重み#2格納部230には、後述するように、全ての選
択候補命令の重み#1の再評価値である重み#2の値が
選択候補命令毎に格納されることになる。
【0058】次に、インタロック重み減少部134が起
動される。インタロック重み減少部134は、実行状態
格納部240を参照して、現在対象となっている選択候
補命令(当該選択候補命令)が選択された場合の上記シ
ミュレーション部133による判断結果を調べ、既選択
命令とインタロックを起こす(と判断された)場合に
は、重み#2格納部230から当該選択候補命令の重み
#2を取り出し、そのインタロックサイクル数に応じた
値だけ、その重み#2から減少し、その減少後の重み#
2を重み#2格納部230に再び書き込む(ステップS
8,S9)。
【0059】本実施例では、シミュレーション部133
によりIU,FPU別々にシミュレーションが行われる
ため、IU側とFPU側でそれぞれ既選択命令とインタ
ロックを起こす(と判断される)ことがあり得る。した
がって、IU側とFPU側でいずれも既選択命令とイン
タロックを起こす場合には、上記ステップS8,S9の
処理が、IU側のインタロック(IUインタロック)と
FPU側のインタロック(FPUインタロック)のそれ
ぞれについて実行される。ここでは、IUインタロック
サイクル数をnとすると、10*nだけ、選択候補命令
の重み#2から減らされ、FPUインタロックサイクル
数をmとすると、K*mだけ、選択候補命令の重み#2
から減らされる。このKには、FPUインタロックが
(IUインタロックに比べて)実行サイクルの遅延に必
ずしもつながらないことを考慮して、IUインタロック
での値10より小さな値が用いられる。
【0060】次に、並列実行重み増加部135が起動さ
れる。並列実行重み増加部135は、実行状態格納部2
40を参照して、当該選択候補命令が選択された場合の
上記シミュレーション部133による判断結果を調べ、
既選択命令と並列実行可能な場合には、重み#2格納部
230から当該選択候補命令の重み#2を取り出し、予
め定められた値、例えば10だけ、その重み#2を増加
し、その増加後の重み#2を重み#2格納部230に再
び書き込む(ステップS10,S11)。
【0061】以上の操作を全ての選択候補命令(既選択
命令を除いて先行命令を持たない未選択命令)について
繰り返した後、後述するように、全ての選択候補命令の
中から重み#2が最大の命令を次命令として選択する構
成とするならば、インタロックを最小に、並列実行を最
大にすることが可能となる。
【0062】さて、並列実行重み増加部135によるス
テップS11の処理が終了すると、後続インタロック重
み増加部136が起動される。後続インタロック重み増
加部136は、現在対象となっている選択候補命令(当
該選択候補命令)が選択された場合、後に、即ちその命
令に依存している子(または子孫)のスケジュール時に
大きなインタロックが起こるか否かを、依存関係グラフ
データ・重み#1格納部210を参照して予測する(ス
テップS12)。本実施例において、後続インタロック
重み増加部136は、(1)子とのインタロックサイク
ル数が大きい場合(ここでは3以上の場合)、(2)子
とのインタロックサイクル数がそれほど大きくない場合
(ここでは2の場合)で、且つ未選択命令の中の整数演
算系より浮動小数点演算系の命令数が多い場合のいずれ
かの条件を満たすならば、後に大きなインタロックが起
こると予測する。
【0063】後続インタロック重み増加部136は、後
に大きなインタロックが起こると予測した場合、重み#
2格納部230から当該選択候補命令の重み#2を取り
出し、予め定められた値、例えばを15だけ、その重み
#2を増加し、その増加後の重み#2を重み#2格納部
230に再び書き込む(ステップS13)。
【0064】この後続インタロック重み増加部136に
よる重み増加操作によって、当該選択候補命令が比較的
早い時期にスケジューリングされ、後で起こるインタロ
ックをできるだけ避けることが可能となる。
【0065】後続インタロック重み増加部136による
ステップS13の処理が終了すると、後続並列実行重み
減少部137が起動される。後続並列実行重み減少部1
37は、当該選択候補命令が、今回選択されたとしても
並列実行されないが、他の選択候補命令が選択された直
後に選択されるならば並列実行できる命令であるか否か
を判断する(ステップS14)。このステップS14で
の具体的動作は次の通りである。
【0066】後続並列実行重み減少部137はまず、当
該選択候補命令が、2以上のデコードサイクル数で、最
初のデコードサイクルで既に選択された先行命令(先行
命令列)との組み合わせによっては並列実行が可能で、
その上、最後のデコードサイクルで後続命令(後続命令
列)との組み合わせによっては並列実行が可能な命令で
あるものの、実際には既に選択された先行命令(先行命
令列)と並列実行できない命令であるか否かを判断す
る。後続並列実行重み減少部137は当該選択候補命令
が、今回選択されたとしても並列実行されない命令であ
ると判断した場合には、当該選択候補命令以外の選択候
補命令のうちに、当該選択候補命令の先行命令となり当
該選択候補命令と並列実行できる命令と、当該選択候補
命令の後続命令として当該選択候補命令と並列実行でき
る命令とがそれぞれ存在するか否かを調べる。これによ
り後続並列実行重み減少部137は、当該選択候補命令
が、今回選択されたとしても並列実行されないが、直後
に選択されると並列実行できる命令であるか否かを判断
する。
【0067】後続並列実行重み減少部137は、上記ス
テップS14により、今回当該選択候補命令を選択して
も並列実行されないが、直後に選択すると並列実行でき
ると判断した場合、重み#2格納部230から当該選択
候補命令の重み#2を取り出し、予め定められた値、例
えば5だけ、その重み#2から減少し、その減少後の重
み#2を重み#2格納部230に再び書き込む(ステッ
プS15)。
【0068】この後続並列実行重み減少部137による
重み減少操作によって、当該選択候補命令の選択が抑制
され、前後に2つの並列実行を作成する可能性をより高
められるようになる。
【0069】後続並列実行重み減少部137によるステ
ップS15の処理が終了すると、次選択命令確認部13
2に制御が戻る。以後、選択候補命令(既選択命令を除
いて先行命令を持たない未選択命令)がなくなるまで、
上記したステップS4〜S15(またはS14)が繰り
返される。そして、次選択命令確認部132により選択
候補命令が残っていないと判断されると、次命令選択部
138が起動される。
【0070】次命令選択部138は、重み#2格納部2
30を参照し、各選択候補命令の中で、最も重み#2
(即ち重み#1の再評価値)が大きい命令を次命令とし
て選択して、それまでに求められている目的命令列40
0の最後に加える(ステップS16)。なお、最初に選
択した命令であれば、目的命令列400の先頭命令とさ
れる。
【0071】次に次命令選択部138は、シミュレーシ
ョン結果格納部220の内容を、ステップS16で選択
した命令までのIU、FPU別々のパイプラインの状態
に書き換える(ステップS17)。
【0072】次命令選択部138によるステップS17
の処理が終了すると、未選択命令確認部131に制御が
戻る。以後、未選択命令がなくなるまで、上記したステ
ップS3〜S17が繰り返され、未選択命令がなくなっ
たところで、一連の命令列最適化処理が終了する。この
とき求められている目的命令列400が、対象命令列3
00中の命令を並べ換えて、インタロックを最小化し、
並列実行を最大化するように最適化された目的とする命
令列である。
【0073】なお、以上に述べた図4乃至図6のフロー
チャートに従う命令列最適化処理において、インタロッ
ク重み減少部134の処理(ステップS8,S9)、並
列実行重み増加部135の処理(ステップS10,S1
1)、後続インタロック重み増加部136の処理(ステ
ップS12,S13)、及び後続並列実行重み減少部1
37の処理(ステップS14,S15)の実行順序は、
本実施例に限るものではなく、どの順番に行われても構
わない。また、インタロック重み減少部134、並列実
行重み増加部135、後続インタロック重み増加部13
6及び後続並列実行重み減少部137の各処理が並列に
行われるものであっても構わない。
【0074】次に、以上の命令列最適化処理の適用例に
ついて説明する。まず、以上の命令列最適化処理では、
依存関係グラフから求められる重み(重み#1)を再評
価した重み(重み#2)をもとに対象命令列300から
次命令として順に選択することにより、命令の並び換え
が行われている。
【0075】次命令の選択は、先行命令のないもの(親
のないもの)から順に行われることを基本としている。
また、既に選択されている先行命令の後に、選択候補命
令を配置したとき、その際のシミュレーション部133
のパイプラインシミュレーションの結果から起こると予
想される、並列実行、インタロックサイクル数によって
重み(重み#2)を更新し、その更新後の重み(重み#
2)によって、実際の選択命令(次命令)を決めてい
る。本実施例では、並列実行できる場合には、並列実行
重み増加部135によって当該選択候補命令の重み#2
が10増やされ、インタロックがnサイクル起こる場合
には、インタロック重み減少部134によって当該選択
候補命令の重み(重み#2)が10*n減らされる(I
Uインタロックの場合)。そして、選択候補命令のうち
で、重み(重み#2)が最大の命令が次命令として選択
される。このような、再評価後の重みに従う命令選択を
行うことで、インタロックを減らし、並列実行を増やす
ような命令列の最適化を行うことができる。
【0076】さて、図8(b)の例では、最初に選択可
能な命令(先行命令を持たない未選択命令)は(重みが
7の)命令aと(重みが8の)命令bのいずれかで、ま
ず重みの大きいbが選択される。bが選択されると、次
に選択可能な命令は(重みが7の)命令aと(重みが2
の)命令d(dの親であるbは選択されているため、d
は既選択命令bを除いて先行命令を持たない未選択命令
となる)である。もし、命令a,dがいずれも先に選択
した命令bと並列実行できないならば、重みのより大き
いaが選択される。また、bとaは並列実行できない
が、bとdは並列実行可能であるならば、dの重みが1
0増やされて(12となるため)、dが選択される。
【0077】本実施例における命令列最適化処理では、
以上を基本としているが、一層の命令列の最適化を図る
ため、既に述べてきたように、更に後続インタロック重
み増加部136による重みの再評価、後続並列実行重み
減少部137による重みの再評価を行うようにしてい
る。
【0078】まず、後続インタロック重み増加部136
による重みの再評価と、その効果について、図9及び図
10を参照して説明する。なお、図9(a)は、対象命
令列300が命令a〜fからなる命令列である場合の、
命令並び換え前の依存関係グラフ例、図9(b)は各命
令a〜f間で並列実行が可能か否かを示すテーブル、図
9(c)は後続インタロック重み増加部136による重
みの再評価を適用しない場合の命令並び換え後のパイプ
ライン状態、図9(d)は後続インタロック重み増加部
136による重みの再評価を適用した場合の命令並び換
え後のパイプライン状態を、それぞれ示す。
【0079】図10(a)は、対象命令列300が命令
a〜hからなる命令列である場合の、命令並び換え前の
依存関係グラフ例、図10(b)は各命令a〜h間で並
列実行が可能か否かを示すテーブル、図10(c)は後
続インタロック重み増加部136による重みの再評価を
適用しない場合の命令並び換え後のパイプライン状態、
図10(d)は後続インタロック重み増加部136によ
る重みの再評価を適用した場合の命令並び換え後のパイ
プライン状態を、それぞれ示す。
【0080】図9の例では、まずa,b,cの中から、
重みの大きいaが選択される。次に、d,b,cのう
ち、aとb、aとcが並列実行できるため、b,cの重
みは(並列実行重み増加部135によって)10増やさ
れる。この結果、d:5(変化せず)、b:14、c:
14となる。これにより、再評価後の重み(重み#2)
が最大のものはbとcとなり、上記基本操作だけであれ
ば、そのどちらかが選択されることになる。
【0081】しかし、ここで後続インタロック重み増加
部136の処理を加えることにより、以下に述べるよう
にdが選択される。まず後続インタロック重み増加部1
36では、前記したように、(1)子とのインタロック
サイクル数が3以上の場合、(2)子とのインタロック
サイクル数が2の場合で、且つ未選択命令の中の整数演
算系より浮動小数点演算系の命令数が多い場合のいずれ
かの条件を満たすならば、後に大きなインタロックが起
こると予測し、重み(重み#2)を15増やすようにし
ている。
【0082】図9の例では、d,b,cのうちのdが、
上記(1)の条件を満たす。このため、dの重みが後続
インタロック重み増加部136によって15増やされ
る。この結果、d:20、b:14、c:14となり、
dが選択される。
【0083】そして、この後の同様のスケジューリング
によって、図9(c)に示すような後続インタロック重
み増加部136による重みの再評価を適用しない場合の
パイプライン状態に対して、図9(d)に示すように、
全体で1サイクル処理時間を短縮できる。
【0084】次に図10の例では、まずa,d,eの中
から、重みの大きいaが選択される。次に、b,c,
d,eのうち、aとd、aとeが並列実行できるため、
d,eの重みは(並列実行重み増加部135によって)
10増やされる。この結果、b:7(変化せず)、c:
7(変化せず)、d:14、e:14となる。これによ
り、再評価後の重み(重み#2)が最大のものはdとe
となり、上記基本操作だけであれば、そのどちらかが選
択されることになる。
【0085】しかし、ここで後続インタロック重み増加
部136の処理を加えることにより、以下に述べるよう
にdが選択される。図10の例では、b,c,d,eの
うちのb,cが、上記(2)の条件を満たす。このた
め、b,cの重みが、後続インタロック重み増加部13
6によって15増やされる。この結果、b:22、c:
22、d:14、e:14となり、bまたはcが選択さ
れる。
【0086】そして、この後の同様のスケジューリング
によって、図10(c)に示すような後続インタロック
重み増加部136による重みの再評価を適用しない場合
のパイプライン状態に対して、図10(d)に示すよう
に、全体で2サイクル処理時間を短縮できる。
【0087】以上の後続インタロック重み増加部136
による重みの再評価を適用した命令列最適化処理は、I
U及びFPUを持つCPUで処理される命令列を対象と
する命令スケジューリングであれば適用可能であり、ス
ーパスカラ・アーキテクチャを必ずしも前提としない。
【0088】次に、後続並列実行重み減少部137によ
る重みの再評価と、その効果について、図11を参照し
て説明する。なお、図11(a)は、対象命令列300
が命令a〜cを含む命令列である場合の、命令並び換え
前の部分的な依存関係グラフ例、図11(b)は各命令
a〜c間で並列実行が可能か否かを示すテーブル、図1
1(c)は後続並列実行重み減少部137による重みの
再評価を適用しない場合の命令並び換え後のパイプライ
ン状態、図11(d)は後続並列実行重み減少部137
による重みの再評価を適用した場合の命令並び換え後の
パイプライン状態を、それぞれ示す。
【0089】まず、既にスケジューリングされた命令列
が存在し、その命令列と、図11に示すa,b,c全て
の命令は、インタロックが起こらず、並列実行もされな
いものとする。この場合、上記基本操作だけであれば、
図11(a)の部分的な依存関係グラフで示される各命
令a〜cの重みに従い、まずaが選択され、次にbが選
択されることになる。
【0090】しかし、ここで後続並列実行重み減少部1
37の処理を加えることにより、以下に述べるように、
最初にbが選択され、aは2番目に選択される。まず後
続並列実行重み減少部137では、前記したように、現
在対象となっている選択候補命令を今回選択しても並列
実行されないが、他の選択候補命令が選択された直後に
選択すると並列実行できると判断される場合、その命令
の重み(重み#2)を5減らすようにしている。
【0091】図11の例では、a,b,cのうちのa
が、上記(1)の条件を満たす。このため、aの重みが
後続並列実行重み減少部137によって5減らされる。
この結果、a:7、b:10(変化せず)、c:9(変
化せず)となり、まずbが選択され、aは2番目に選択
される。すると、並列実行数が増加し、図11(c)に
示すような後続並列実行重み減少部137による重みの
再評価を適用しない場合のパイプライン状態に対して、
図11(d)に示すように、この部分だけで1サイクル
処理時間を短縮できる。
【0092】以上の後続並列実行重み減少部137によ
る重みの再評価を適用した命令列最適化処理は、パイプ
ライン処理方式による命令の並列実行が可能なプロセッ
サで処理される命令列を対象とする命令スケジューリン
グであれば適用可能であり、本実施例のように、スーパ
スカラ・アーキテクチャ、更にはIU、FPUをCPU
内部で別々に持つ機構を必ずしも前提としない。
【0093】さて、本実施例では、前記したように、I
UとFPUを1つのCPUに内蔵しているRISCプロ
セッサのパイプラインの動作を正確に予測するために、
シミュレーション部133においてIU、FPU別々に
シミュレーションを行うようにしている。また、このシ
ミュレーションによって求められるFPUで起こるパイ
プラインの乱れの情報もスケジューリングに利用するよ
うにしている。この効果について、図12を参照して説
明する。
【0094】図12は、FPUのf2ステージで同時実
行できないアーキテクチャの例で、a,b,cの3命令
は互いに依存していないものとする。同図(a)は、I
U、FPU別々にシミュレーションを行わず、したがっ
てFPUのパイプライン情報を持っていない場合のパイ
プライン予想を示し、同図(b)は、実際に起こるパイ
プラインの乱れを示す。
【0095】本実施例では、シミュレーション部133
において、FPUのパイプラインをシミュレーションし
ているため、その図12(b)のようにパイプラインの
乱れが発生する場合のインタロックを予想することがで
きる。
【0096】以上のシミュレーション部133によるI
U,FPU別々のシミュレーションを適用した命令列最
適化処理は、スーパスカラ・アーキテクチャを持たない
機構のように、パイプライン処理方式による並列実行が
可能でないものでも、IU、FPUをCPU内部に搭載
しているプロセッサで処理される命令列を対象とする命
令スケジューリングであれば、インタロックの最小化に
対してのみには、適用可能である。
【0097】
【発明の効果】以上詳述したように本発明によれば、整
数演算装置(IU)と浮動小数点演算処理装置(FP
U)を持つパイプライン処理方式のプロセッサを搭載し
た計算機を対象とする命令スケジューリングに適用さ
れ、重み付けされた対象命令列から重みの大きい順に命
令を順次選択する命令列最適化処理において、スケジュ
ーリング候補命令(選択候補命令)が次のスケジューリ
ング命令として選択されたものとした場合に、後のスケ
ジューリングで大きなインタロックが起こるか否かを、
当該スケジューリング候補命令とそれに依存している命
令間で起こるインタロックのサイクル数と、対象命令列
に含まれている未選択命令中の整数演算系命令及び浮動
小数点演算系命令の数の比率の情報をもとに予測し、大
きなインタロックが起こると予測できるならば、当該ス
ケジューリング候補命令についての重みを増やして、比
較的早い時期にスケジューリングされるようにしたの
で、後に起きる大きなインタロックを回避でき、対象命
令列で発生するインタロックの最小化を図ることができ
る。
【0098】また、本発明によれば、パイプライン処理
方式による命令の並列実行が可能なプロセッサを搭載し
た計算機を対象とする命令スケジューリングに適用さ
れ、重み付けされた対象命令列から重みの大きい順に命
令を順次選択する命令列最適化処理において、スケジュ
ーリング候補命令が次のスケジューリング命令として選
択されたとしても並列実行されないが、他のスケジュー
リング候補命令が選択された直後に選択されると並列実
行できる命令であるか否かを判断し、直後に選択される
と並列実行できる命令であるならば、当該スケジューリ
ング候補命令についての重みを減らして、後でスケジュ
ーリングされるようにしたので、対象命令列で発生する
並列実行を最大化することができる。
【0099】また、本発明によれば、IUとFPUを持
つパイプライン処理方式による命令の並列実行が可能な
プロセッサを搭載した計算機を対象とする命令スケジュ
ーリングに適用され、重み付けされた対象命令列から重
みの大きい順に命令を順次選択する命令列最適化処理に
おいて、スケジューリング候補命令が次のスケジューリ
ング命令として選択されたものとして、IU、FPU別
々にシミュレーションを行って、既選択命令とインタロ
ックを起こすか、或いは並列実行可能かを判断し、イン
タロックを起こす場合にはインタロックサイクル数を求
め、そのシミュレーション結果に従い、当該スケジュー
リング候補命令が選択されたものとした場合に既選択命
令との間でIUまたはFUの少なくとも一方の側でイン
タロックを起こすならば、そのインタロックサイクル数
に応じて当該スケジューリング候補命令の重みを減ら
し、既選択命令と並列実行可能ならば、当該スケジュー
リング候補命令の重みを増やして、既選択命令との間で
大きなインタロックを起こす命令は後でスケジューリン
グされ、既選択命令と並列実行可能な命令は比較的早い
時期にスケジューリングされるようしたので、対象命令
列で発生するインタロックを最小化し、並列実行を最大
化することができる。
【図面の簡単な説明】
【図1】本発明の命令列最適化処理方法を適用する命令
列最適化処理装置の一実施例を示す機能ブロック構成
図。
【図2】FPUを用いる命令のパイプラインを説明する
ための図。
【図3】並列実行を説明するための図。
【図4】同実施例における命令列最適化処理を説明する
ためのフローチャートの一部を示す図。
【図5】同実施例における命令列最適化処理を説明する
ためのフローチャートの他の一部を示す図。
【図6】同実施例における命令列最適化処理を説明する
ためのフローチャートの残りを示す図。
【図7】命令間の依存関係の一例を示す図。
【図8】命令間の依存関係を示す依存関係グラフの一例
を示す図。
【図9】図1中の後続インタロック重み増加部136に
よる重みの再評価と、その効果について、子とのインタ
ロックサイクル数が3以上という条件を満たす場合を例
に説明するための図。
【図10】図1中の後続インタロック重み増加部136
による重みの再評価と、その効果について、子とのイン
タロックサイクル数が2の場合で、且つ未選択命令の中
の整数演算系より浮動小数点演算系の命令数が多いとい
う条件を満たす場合を例に説明するための図。
【図11】図1中の後続並列実行重み減少部137によ
る重みの再評価と、その効果について説明するための
図。
【図12】図1中のシミュレーション部133において
IU、FPU別々にシミュレーションを行うことによる
効果を説明するための図。
【符号の説明】
100…処理部、110…依存関係グラフ構築部、12
0…重み#1計算部、130…重み評価・命令並べ換え
部、131…未選択命令確認部、132…次選択命令確
認部、133…シミュレーション部、134…インタロ
ック重み減少部、135…並列実行重み増加部、136
…後続インタロック重み増加部、137…後続並列実行
重み減少部、138…次命令選択部、200…メモリ、
210…依存関係グラフデータ・重み#1格納部(第1
の格納手段)、220…シミュレーション結果格納部、
230…重み#2格納部(第2の格納手段)、240…
実行状態格納部(第3の格納手段)、300…対象命令
列、400…目的命令列。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 整数演算装置(IU)と浮動小数点演算
    処理装置(FPU)を持つパイプライン処理方式のプロ
    セッサを搭載した計算機を対象とする命令スケジューリ
    ングに適用される命令列最適化処理方法において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する第1の段階と、 前記依存関係グラフ上の各命令について、その命令のデ
    コードサイクルに応じた値をその命令固有の重みとし、
    その固有の重みと、当該グラフ上で子となる命令があれ
    ば、その子の重みとその子との間のインタロックのサイ
    クル数をもとに、その命令に重みを付ける第2の段階
    と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う第3の段階であって、前記
    依存関係グラフ上でスケジューリング済みの命令を除い
    て先行命令を持たない全ての未選択命令をスケジューリ
    ング候補命令として、そのスケジューリング候補命令の
    中で重みが最大の命令を選択する動作を繰り返す第3の
    段階と、 前記第3の段階で1つの命令を選択する際に、それに先
    行して、その時点における前記各スケジューリング候補
    命令について、当該スケジューリング候補命令が次のス
    ケジューリング命令として選択されたものとした場合
    に、後のスケジューリングで大きなインタロックが起こ
    るか否かを、当該スケジューリング候補命令とそれに依
    存している命令間で起こるインタロックのサイクル数
    と、前記対象命令列に含まれている未選択命令中の整数
    演算系命令及び浮動小数点演算系命令の数の比率の情報
    をもとに予測し、大きなインタロックが起こると予測で
    きるならば、当該スケジューリング候補命令についての
    重みを増やす第4の段階とを具備し、前記第4の段階で
    の重み増加操作により、前記後のスケジューリングで大
    きなインタロックが起こると予測された命令は比較的早
    い時期にスケジューリングされるようにしたことを特徴
    とする命令列最適化処理方法。
  2. 【請求項2】 パイプライン処理方式による命令の並列
    実行が可能なプロセッサを搭載した計算機を対象とする
    命令スケジューリングに適用される命令列最適化処理方
    法において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する第1の段階と、 前記依存関係グラフ上の各命令について、その命令のデ
    コードサイクルに応じた値をその命令固有の重みとし、
    その固有の重みと、当該グラフ上で子となる命令があれ
    ば、その子の重みとその子との間のインタロックのサイ
    クル数をもとに、その命令に重みを付ける第2の段階
    と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う第3の段階であって、前記
    依存関係グラフ上でスケジューリング済みの命令を除い
    て先行命令を持たない全ての未選択命令をスケジューリ
    ング候補命令として、そのスケジューリング候補命令の
    中で重みが最大の命令を選択する動作を繰り返す第3の
    段階と、 前記第3の段階で1つの命令を選択する際に、それに先
    行して、その時点における前記各スケジューリング候補
    命令について、今回、当該スケジューリング候補命令が
    次のスケジューリング命令として選択されたとしても並
    列実行されないが、他のスケジューリング候補命令が選
    択された直後に選択されると並列実行できる命令である
    か否かを判断し、前記直後に選択されると並列実行でき
    る命令であるならば、当該スケジューリング候補命令に
    ついての重みを減らす第4の段階とを具備し、前記第4
    の段階での重み減少操作により、前記直後に選択される
    と並列実行できると判断された命令は後でスケジューリ
    ングされるようにしたことを特徴とする命令列最適化処
    理方法。
  3. 【請求項3】 整数演算装置(IU)と浮動小数点演算
    処理装置(FPU)を持つパイプライン処理方式のプロ
    セッサを搭載した計算機を対象とする命令スケジューリ
    ングに適用される命令列最適化処理方法において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する第1の段階と、 前記依存関係グラフ上の各命令について、その命令のデ
    コードサイクルに応じた値をその命令固有の重みとし、
    その固有の重みと、当該グラフ上で子となる命令があれ
    ば、その子の重みとその子との間のインタロックのサイ
    クル数をもとに、その命令に重みを付ける第2の段階
    と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う第3の段階であって、前記
    依存関係グラフ上でスケジューリング済みの命令を除い
    て先行命令を持たない全ての未選択命令をスケジューリ
    ング候補命令として、そのスケジューリング候補命令の
    中で重みが最大の命令を選択する動作を繰り返す第3の
    段階と、 前記第3の段階で1つの命令を選択する際に、それに先
    行して、その時点における前記各スケジューリング候補
    命令について、当該スケジューリング候補命令が次のス
    ケジューリング命令として選択されたものとして、前記
    整数演算装置及び浮動小数点演算装置別々にシミュレー
    ションを行い、既選択命令とインタロックを起こすか否
    かを判断し、インタロックを起こす場合にはインタロッ
    クサイクル数を求める第4の段階と、 前記第4の段階で前記各スケジューリング候補命令が次
    のスケジューリング命令として選択されたものとして前
    記シミュレーションが行われる毎に、そのシミュレーシ
    ョン結果に従い、当該スケジューリング候補命令が選択
    されたものとした場合に既選択命令との間で前記整数演
    算装置または浮動小数点演算装置の少なくとも一方の側
    でインタロックを起こすならば、そのインタロックサイ
    クル数に応じて当該スケジューリング候補命令の重みを
    減らす第5の段階とを具備し、前記第5の段階での重み
    減少操作により、既選択命令との間でインタロックを起
    こす命令は後でスケジューリングされるようにしたこと
    を特徴とする命令列最適化処理方法。
  4. 【請求項4】 整数演算装置(IU)と浮動小数点演算
    処理装置(FPU)を持つパイプライン処理方式による
    命令の並列実行が可能なプロセッサを搭載した計算機を
    対象とする命令スケジューリングに適用される命令列最
    適化処理方法において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する第1の段階と、 前記依存関係グラフ上の各命令について、その命令のデ
    コードサイクルに応じた値をその命令固有の重みとし、
    その固有の重みと、当該グラフ上で子となる命令があれ
    ば、その子の重みとその子との間のインタロックのサイ
    クル数をもとに、その命令に重みを付ける第2の段階
    と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う第3の段階であって、前記
    依存関係グラフ上でスケジューリング済みの命令を除い
    て先行命令を持たない全ての未選択命令をスケジューリ
    ング候補命令として、そのスケジューリング候補命令の
    中で重みが最大の命令を選択する動作を繰り返す第3の
    段階と、 前記第3の段階で1つの命令を選択する際に、それに先
    行して、その時点における前記各スケジューリング候補
    命令について、当該スケジューリング候補命令が次のス
    ケジューリング命令として選択されたものとして、前記
    整数演算装置及び浮動小数点演算装置別々にシミュレー
    ションを行い、既選択命令とインタロックを起こすか、
    或いは並列実行可能かを判断し、インタロックを起こす
    場合にはインタロックサイクル数を求める第4の段階
    と、 前記第4の段階で前記各スケジューリング候補命令が次
    のスケジューリング命令として選択されたものとして前
    記シミュレーションが行われる毎に、そのシミュレーシ
    ョン結果に従い、当該スケジューリング候補命令が選択
    されたものとした場合に既選択命令との間で前記整数演
    算装置または浮動小数点演算装置の少なくとも一方の側
    でインタロックを起こすならば、そのインタロックサイ
    クル数に応じて当該スケジューリング候補命令の重みを
    減らす第5の段階と、 前記第4の段階で前記各スケジューリング候補命令が次
    のスケジューリング命令として選択されたものとして前
    記シミュレーションが行われる毎に、そのシミュレーシ
    ョン結果に従い、当該スケジューリング候補命令が選択
    されたものとした場合に既選択命令と並列実行可能なら
    ば、当該スケジューリング候補命令の重みを増やす第6
    の段階とを具備し、前記第5の段階での重み減少操作に
    より、既選択命令との間でインタロックを起こす命令は
    後でスケジューリングされ、前記第6の段階での重み増
    加操作により、既選択命令と並列実行可能な命令は比較
    的早い時期にスケジューリングされるようにしたことを
    特徴とする命令列最適化処理方法。
  5. 【請求項5】 整数演算装置(IU)と浮動小数点演算
    処理装置(FPU)を持つパイプライン処理方式による
    命令の並列実行が可能なプロセッサを搭載した計算機を
    対象とする命令スケジューリングに適用される命令列最
    適化処理方法において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する第1の段階と、 前記依存関係グラフ上の各命令について、その命令のデ
    コードサイクルに応じた値をその命令固有の重みとし、
    その固有の重みと、当該グラフ上で子となる命令があれ
    ば、その子の重みとその子との間のインタロックのサイ
    クル数をもとに、その命令に重みを付ける第2の段階
    と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う第3の段階であって、前記
    依存関係グラフ上でスケジューリング済みの命令を除い
    て先行命令を持たない全ての未選択命令をスケジューリ
    ング候補命令として、そのスケジューリング候補命令の
    中で重みが最大の命令を選択する動作を繰り返す第3の
    段階と、 前記第3の段階で1つの命令を選択する際に、それに先
    行して、その時点における前記各スケジューリング候補
    命令について、当該スケジューリング候補命令が次のス
    ケジューリング命令として選択されたものとして、前記
    整数演算装置及び浮動小数点演算装置別々にシミュレー
    ションを行い、既選択命令とインタロックを起こすか、
    或いは並列実行可能かを判断し、インタロックを起こす
    場合にはインタロックサイクル数を求める第4の段階
    と、 前記第4の段階で前記各スケジューリング候補命令が次
    のスケジューリング命令として選択されたものとして前
    記シミュレーションが行われる毎に、そのシミュレーシ
    ョン結果に従い、当該スケジューリング候補命令が選択
    されたものとした場合に既選択命令との間で前記整数演
    算装置または浮動小数点演算装置の少なくとも一方の側
    でインタロックを起こすならば、そのインタロックサイ
    クル数に応じて当該スケジューリング候補命令の重みを
    減らす第5の段階と、 前記第4の段階で前記各スケジューリング候補命令が次
    のスケジューリング命令として選択されたものとして前
    記シミュレーションが行われる毎に、そのシミュレーシ
    ョン結果に従い、当該スケジューリング候補命令が選択
    されたものとした場合に既選択命令と並列実行可能なら
    ば、当該スケジューリング候補命令の重みを増やす第6
    の段階と、 前記第4の段階で前記各スケジューリング候補命令が次
    のスケジューリング命令として選択されたものとして前
    記シミュレーションが行われる毎に、当該スケジューリ
    ング候補命令が選択されたものとした場合に、後のスケ
    ジューリングで大きなインタロックが起こるか否かを、
    当該スケジューリング候補命令とそれに依存している命
    令間で起こるインタロックのサイクル数と、前記対象命
    令列に含まれている未選択命令中の整数演算系命令及び
    浮動小数点演算系命令の数の比率の情報をもとに予測
    し、大きなインタロックが起こると予測できるならば、
    当該スケジューリング候補命令についての重みを増やす
    第7の段階と、 前記第4の段階で前記各スケジューリング候補命令が次
    のスケジューリング命令として選択されたものとして前
    記シミュレーションが行われる毎に、今回、当該スケジ
    ューリング候補命令が選択されたとしても並列実行され
    ないが、他のスケジューリング候補命令が選択された直
    後に選択されると並列実行できる命令であるか否かを判
    断し、前記直後に選択されると並列実行できる命令であ
    るならば、当該スケジューリング候補命令についての重
    みを減らす第8の段階とを具備し、前記第5の段階での
    重み減少操作により、既選択命令との間でインタロック
    を起こす命令は後でスケジューリングされ、前記第6の
    段階での重み増加操作により、既選択命令と並列実行可
    能な命令は比較的早い時期にスケジューリングされ、前
    記第7の段階での重み増加操作により、前記後のスケジ
    ューリングで大きなインタロックが起こると予測された
    命令は比較的早い時期にスケジューリングされ、前記第
    8の段階での重み減少操作により、前記直後に選択され
    ると並列実行できると判断された命令は後でスケジュー
    リングされるようにしたことを特徴とする命令列最適化
    処理方法。
  6. 【請求項6】 整数演算装置(IU)と浮動小数点演算
    処理装置(FPU)を持つパイプライン処理方式のプロ
    セッサを搭載した計算機を対象とする命令スケジューリ
    ングに適用される命令列最適化処理装置において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する依存関係グラフ構築手段と、 前記依存関係グラフ構築手段により作成された依存関係
    グラフのデータが格納される第1の格納手段と、 前記第1の格納手段に格納されている前記依存関係グラ
    フデータの示す前記対象命令列の各命令について、その
    命令のデコードサイクルに応じた値をその命令固有の重
    みとし、その固有の重みと、当該グラフ上で子となる命
    令があれば、その子の重みとその子との間のインタロッ
    クのサイクル数をもとに、その命令に付ける重みを第1
    の重みとして算出する重み計算手段と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う次命令選択手段であって、
    前記依存関係グラフ上でスケジューリング済みの命令を
    除いて先行命令を持たない全ての未選択命令をスケジュ
    ーリング候補命令として、そのスケジューリング候補命
    令の中で前記第1の重みの再評価値である第2の評価値
    が最大の命令を選択する動作を繰り返す次命令選択手段
    と、 前記次命令選択手段により1つの命令を選択する際の対
    象となる前記各スケジューリング候補命令についての前
    記重み算出手段によって算出された前記第1の重みが前
    記第2の重みとして格納される第2の格納手段と、 前記次命令選択手段により1つの命令を選択する際に、
    それに先行して、その時点における前記各スケジューリ
    ング候補命令について、当該スケジューリング候補命令
    が次のスケジューリング命令として選択されたものとし
    た場合に、後のスケジューリングで大きなインタロック
    が起こるか否かを、当該スケジューリング候補命令とそ
    れに依存している命令間で起こるインタロックのサイク
    ル数と、前記対象命令列に含まれている未選択命令中の
    整数演算系命令及び浮動小数点演算系命令の数の比率の
    情報をもとに予測し、大きなインタロックが起こると予
    測できるならば、当該スケジューリング候補命令につい
    ての前記第2の格納手段内の前記第2の重みを増やす後
    続インタロック重み増加手段とを具備することを特徴と
    する命令列最適化処理装置。
  7. 【請求項7】 パイプライン処理方式による命令の並列
    実行が可能なプロセッサを搭載した計算機を対象とする
    命令スケジューリングに適用される命令列最適化処理装
    置において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する依存関係グラフ構築手段と、 前記依存関係グラフ構築手段により作成された依存関係
    グラフのデータが格納される第1の格納手段と、 前記第1の格納手段に格納されている前記依存関係グラ
    フデータの示す前記対象命令列の各命令について、その
    命令のデコードサイクルに応じた値をその命令固有の重
    みとし、その固有の重みと、当該グラフ上で子となる命
    令があれば、その子の重みとその子との間のインタロッ
    クのサイクル数をもとに、その命令に付ける重みを第1
    の重みとして算出する重み計算手段と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う次命令選択手段であって、
    前記依存関係グラフ上でスケジューリング済みの命令を
    除いて先行命令を持たない全ての未選択命令をスケジュ
    ーリング候補命令として、そのスケジューリング候補命
    令の中で前記第1の重みの再評価値である第2の評価値
    が最大の命令を選択する動作を繰り返す次命令選択手段
    と、 前記次命令選択手段により1つの命令を選択する際の対
    象となる前記各スケジューリング候補命令についての前
    記重み算出手段によって算出された前記第1の重みが前
    記第2の重みとして格納される第2の格納手段と、 前記次命令選択手段により1つの命令を選択する際に、
    それに先行して、その時点における前記各スケジューリ
    ング候補命令について、今回、当該スケジューリング候
    補命令が次のスケジューリング命令として選択されたと
    しても並列実行されないが、他のスケジューリング候補
    命令が選択された直後に選択されると並列実行できる命
    令であるか否かを判断し、前記直後に選択されると並列
    実行できる命令であるならば、当該スケジューリング候
    補命令についての前記第2の格納手段内の前記第2の重
    みを減らす後続並列実行重み減少手段とを具備すること
    を特徴とする命令列最適化処理装置。
  8. 【請求項8】 整数演算装置(IU)と浮動小数点演算
    処理装置(FPU)を持つパイプライン処理方式のプロ
    セッサを搭載した計算機を対象とする命令スケジューリ
    ングに適用される命令列最適化処理装置において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する依存関係グラフ構築手段と、 前記依存関係グラフ構築手段により作成された依存関係
    グラフのデータが格納される第1の格納手段と、 前記第1の格納手段に格納されている前記依存関係グラ
    フデータの示す前記対象命令列の各命令について、その
    命令のデコードサイクルに応じた値をその命令固有の重
    みとし、その固有の重みと、当該グラフ上で子となる命
    令があれば、その子の重みとその子との間のインタロッ
    クのサイクル数をもとに、その命令に付ける重みを第1
    の重みとして算出する重み計算手段と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う次命令選択手段であって、
    前記依存関係グラフ上でスケジューリング済みの命令を
    除いて先行命令を持たない全ての未選択命令をスケジュ
    ーリング候補命令として、そのスケジューリング候補命
    令の中で前記第1の重みの再評価値である第2の評価値
    が最大の命令を選択する動作を繰り返す次命令選択手段
    と、 前記次命令選択手段により1つの命令を選択する際の対
    象となる前記各スケジューリング候補命令についての前
    記重み算出手段によって算出された前記第1の重みが前
    記第2の重みとして格納される第2の格納手段と、 前記次命令選択手段により1つの命令を選択する際に、
    それに先行して、その時点における前記各スケジューリ
    ング候補命令について、当該スケジューリング候補命令
    が次のスケジューリング命令として選択されたものとし
    て、前記整数演算装置及び浮動小数点演算装置別々にシ
    ミュレーションを行い、既選択命令とインタロックを起
    こすか否かを判断し、インタロックを起こす場合にはイ
    ンタロックサイクル数を求めるシミュレーション手段
    と、 前記シミュレーション手段により判断されたインタロッ
    クのサイクル数を格納するための第3の格納手段と、 前記シミュレーション手段により、前記各スケジューリ
    ング候補命令が次のスケジューリング命令として選択さ
    れたものとして前記シミュレーションが行われる毎に前
    記第3の格納手段を参照し、当該スケジューリング候補
    命令が選択されたものとした場合に既選択命令との間で
    前記整数演算装置または浮動小数点演算装置の少なくと
    も一方の側でインタロックを起こすことが示されている
    ならば、そのインタロックサイクル数に応じて当該スケ
    ジューリング候補命令についての前記第2の格納手段内
    の前記第2の重みを減らすインタロック重み減少手段と
    を具備することを特徴とする命令列最適化処理装置。
  9. 【請求項9】 整数演算装置(IU)と浮動小数点演算
    処理装置(FPU)を持つパイプライン処理方式による
    命令の並列実行が可能なのプロセッサを搭載した計算機
    を対象とする命令スケジューリングに適用される命令列
    最適化処理装置において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する依存関係グラフ構築手段と、 前記依存関係グラフ構築手段により作成された依存関係
    グラフのデータが格納される第1の格納手段と、 前記第1の格納手段に格納されている前記依存関係グラ
    フデータの示す前記対象命令列の各命令について、その
    命令のデコードサイクルに応じた値をその命令固有の重
    みとし、その固有の重みと、当該グラフ上で子となる命
    令があれば、その子の重みとその子との間のインタロッ
    クのサイクル数をもとに、その命令に付ける重みを第1
    の重みとして算出する重み計算手段と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う次命令選択手段であって、
    前記依存関係グラフ上でスケジューリング済みの命令を
    除いて先行命令を持たない全ての未選択命令をスケジュ
    ーリング候補命令として、そのスケジューリング候補命
    令の中で前記第1の重みの再評価値である第2の評価値
    が最大の命令を選択する動作を繰り返す次命令選択手段
    と、 前記次命令選択手段により1つの命令を選択する際の対
    象となる前記各スケジューリング候補命令についての前
    記重み算出手段によって算出された前記第1の重みが前
    記第2の重みとして格納される第2の格納手段と、 前記次命令選択手段により1つの命令を選択する際に、
    それに先行して、その時点における前記各スケジューリ
    ング候補命令について、当該スケジューリング候補命令
    が次のスケジューリング命令として選択されたものとし
    て、前記整数演算装置及び浮動小数点演算装置別々にシ
    ミュレーションを行い、既選択命令とインタロックを起
    こすか、或いは並列実行可能かを判断し、インタロック
    を起こす場合にはインタロックサイクル数を求めるシミ
    ュレーション手段と、 前記シミュレーション手段により判断されたインタロッ
    クのサイクル数と並列実行の可否の情報を格納するため
    の第3の格納手段と、 前記シミュレーション手段により、前記各スケジューリ
    ング候補命令が次のスケジューリング命令として選択さ
    れたものとして前記シミュレーションが行われる毎に前
    記第3の格納手段を参照し、当該スケジューリング候補
    命令が選択されたものとした場合に既選択命令との間で
    前記整数演算装置または浮動小数点演算装置の少なくと
    も一方の側でインタロックを起こすことが示されている
    ならば、そのインタロックサイクル数に応じて当該スケ
    ジューリング候補命令についての前記第2の格納手段内
    の前記第2の重みを減らすインタロック重み減少手段
    と、 前記シミュレーション手段により、前記各スケジューリ
    ング候補命令が次のスケジューリング命令として選択さ
    れたものとして前記シミュレーションが行われる毎に前
    記第3の格納手段を参照し、当該スケジューリング候補
    命令が選択されたものとした場合に既選択命令と並列実
    行可能であることが示されているならば、当該スケジュ
    ーリング候補命令についての前記第2の格納手段内の前
    記第2の重みを増やす並列実行重み増加手段とを具備す
    ることを特徴とする命令列最適化処理装置。
  10. 【請求項10】 整数演算装置(IU)と浮動小数点演
    算処理装置(FPU)を持つパイプライン処理方式によ
    る命令の並列実行が可能なプロセッサを搭載した計算機
    を対象とする命令スケジューリングに適用される命令列
    最適化処理装置において、 対象命令列の各命令間の依存関係を表す依存関係グラフ
    を作成する依存関係グラフ構築手段と、 前記依存関係グラフ構築手段により作成された依存関係
    グラフのデータが格納される第1の格納手段と、 前記第1の格納手段に格納されている前記依存関係グラ
    フデータの示す前記対象命令列の各命令について、その
    命令のデコードサイクルに応じた値をその命令固有の重
    みとし、その固有の重みと、当該グラフ上で子となる命
    令があれば、その子の重みとその子との間のインタロッ
    クのサイクル数をもとに、その命令に付ける重みを第1
    の重みとして算出する重み計算手段と、 前記対象命令列の並び換えによる命令スケジューリング
    のための命令選択動作を行う次命令選択手段であって、
    前記依存関係グラフ上でスケジューリング済みの命令を
    除いて先行命令を持たない全ての未選択命令をスケジュ
    ーリング候補命令として、そのスケジューリング候補命
    令の中で前記第1の重みの再評価値である第2の評価値
    が最大の命令を選択する動作を繰り返す次命令選択手段
    と、 前記次命令選択手段により1つの命令を選択する際の対
    象となる前記各スケジューリング候補命令についての前
    記重み算出手段によって算出された前記第1の重みが前
    記第2の重みとして格納される第2の格納手段と、 前記次命令選択手段により1つの命令を選択する際に、
    それに先行して、その時点における前記各スケジューリ
    ング候補命令について、当該スケジューリング候補命令
    が次のスケジューリング命令として選択されたものとし
    て、前記整数演算装置及び浮動小数点演算装置別々にシ
    ミュレーションを行い、既選択命令とインタロックを起
    こすか、或いは並列実行可能かを判断し、インタロック
    を起こす場合にはインタロックサイクル数を求めるシミ
    ュレーション手段と、 前記シミュレーション手段により判断されたインタロッ
    クのサイクル数と並列実行の可否の情報を格納するため
    の第3の格納手段と、 前記シミュレーション手段により、前記各スケジューリ
    ング候補命令が次のスケジューリング命令として選択さ
    れたものとして前記シミュレーションが行われる毎に前
    記第3の格納手段を参照し、当該スケジューリング候補
    命令が選択されたものとした場合に既選択命令との間で
    前記整数演算装置または浮動小数点演算装置の少なくと
    も一方の側でインタロックを起こすことが示されている
    ならば、そのインタロックサイクル数に応じて当該スケ
    ジューリング候補命令についての前記第2の格納手段内
    の前記第2の重みを減らすインタロック重み減少手段
    と、 前記シミュレーション手段により、前記各スケジューリ
    ング候補命令が次のスケジューリング命令として選択さ
    れたものとして前記シミュレーションが行われる毎に前
    記第3の格納手段を参照し、当該スケジューリング候補
    命令が選択されたものとした場合に既選択命令と並列実
    行可能であることが示されているならば、当該スケジュ
    ーリング候補命令についての前記第2の格納手段内の前
    記第2の重みを増やす並列実行重み増加手段と、 前記シミュレーション手段により、前記各スケジューリ
    ング候補命令が次のスケジューリング命令として選択さ
    れたものとして前記シミュレーションが行われる毎に、
    当該スケジューリング候補命令が次のスケジューリング
    命令として選択されたものとした場合に、後のスケジュ
    ーリングで大きなインタロックが起こるか否かを、当該
    スケジューリング候補命令とそれに依存している命令間
    で起こるインタロックのサイクル数と、前記対象命令列
    に含まれている未選択命令中の整数演算系命令及び浮動
    小数点演算系命令の数の比率の情報をもとに予測し、大
    きなインタロックが起こると予測できるならば、当該ス
    ケジューリング候補命令についての前記第2の格納手段
    内の前記第2の重みを増やす後続インタロック重み増加
    手段と、 前記シミュレーション手段により、前記各スケジューリ
    ング候補命令が次のスケジューリング命令として選択さ
    れたものとして前記シミュレーションが行われる毎に、
    今回、当該スケジューリング候補命令が次のスケジュー
    リング命令として選択されたとしても並列実行されない
    が、他のスケジューリング候補命令が選択された直後に
    選択されると並列実行できる命令であるか否かを判断
    し、前記直後に選択されると並列実行できる命令である
    ならば、当該スケジューリング候補命令についての前記
    第2の格納手段内の前記第2の重みを減らす後続並列実
    行重み減少手段とを具備することを特徴とする命令列最
    適化処理装置。
JP8949194A 1994-04-27 1994-04-27 命令列最適化処理方法及び装置 Pending JPH07295810A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8949194A JPH07295810A (ja) 1994-04-27 1994-04-27 命令列最適化処理方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8949194A JPH07295810A (ja) 1994-04-27 1994-04-27 命令列最適化処理方法及び装置

Publications (1)

Publication Number Publication Date
JPH07295810A true JPH07295810A (ja) 1995-11-10

Family

ID=13972227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8949194A Pending JPH07295810A (ja) 1994-04-27 1994-04-27 命令列最適化処理方法及び装置

Country Status (1)

Country Link
JP (1) JPH07295810A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100305467B1 (ko) * 1998-02-19 2001-09-26 포만 제프리 엘 파이프라인화된 부동 소수점 저장
JP2012174114A (ja) * 2011-02-23 2012-09-10 Fujitsu Ltd 演算処理装置および演算処理装置のスロット制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100305467B1 (ko) * 1998-02-19 2001-09-26 포만 제프리 엘 파이프라인화된 부동 소수점 저장
JP2012174114A (ja) * 2011-02-23 2012-09-10 Fujitsu Ltd 演算処理装置および演算処理装置のスロット制御方法

Similar Documents

Publication Publication Date Title
US20210072998A1 (en) Reducing data hazards in pipelined processors to provide high processor utilization
US7533375B2 (en) Program parallelization device, program parallelization method, and program parallelization program
CA2250924C (en) Software pipelining a hyperblock loop
US7065759B2 (en) System and method for assigning basic blocks to computer control flow paths
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
US5386562A (en) Circular scheduling method and apparatus for executing computer programs by moving independent instructions out of a loop
WO1997036228A9 (en) Software pipelining a hyperblock loop
US8954946B2 (en) Static branch prediction method and code execution method for pipeline processor, and code compiling method for static branch prediction
JPH02217926A (ja) コード生成方法
JPH07168717A (ja) 最適化機械コード変換方法およびコンピュータ装置
US7143403B2 (en) System and method for merging control flow paths
JPH07295810A (ja) 命令列最適化処理方法及び装置
KR20150040663A (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
CN113918225A (zh) 指令预测方法、指令数据处理装置、处理器以及存储介质
JPH05508040A (ja) 命令スケジューリング最適化方法
JP2008523523A (ja) プログラム内のループ用のコンパイル方法、コンパイル装置およびコンピュータシステム
Shah et al. Comprehensive study of the features, execution steps and microarchitecture of the superscalar processors
Prabhu et al. Global mobility based scheduling
JPH08115220A (ja) ループ最適化方法
JPH06131197A (ja) 最適化処理装置
JPH03255530A (ja) 並列命令フェッチ機構
JPH05233380A (ja) 並列実行性能測定処理方法
JPH04215130A (ja) 並列パイプライン命令処理装置の命令実行処理方式
JPH1153197A (ja) ループ最適化方法
JPH08287123A (ja) 動作モデル生成方法