JP2001092656A - 命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法 - Google Patents

命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法

Info

Publication number
JP2001092656A
JP2001092656A JP2000269771A JP2000269771A JP2001092656A JP 2001092656 A JP2001092656 A JP 2001092656A JP 2000269771 A JP2000269771 A JP 2000269771A JP 2000269771 A JP2000269771 A JP 2000269771A JP 2001092656 A JP2001092656 A JP 2001092656A
Authority
JP
Japan
Prior art keywords
instruction
instructions
stage
processing
issue group
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.)
Granted
Application number
JP2000269771A
Other languages
English (en)
Other versions
JP2001092656A5 (ja
JP3773769B2 (ja
Inventor
Lee Arnold Ronney
ロニー・リー・アーノルド
Charles Soltis Donald Jr
ドナルド・チャールズ・ソルティス・ジュニア
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2001092656A publication Critical patent/JP2001092656A/ja
Publication of JP2001092656A5 publication Critical patent/JP2001092656A5/ja
Application granted granted Critical
Publication of JP3773769B2 publication Critical patent/JP3773769B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 インオーダ処理を採用する並列プロセッサの
効率を改善するシステム及び方法を提供すること。 【解決手段】 コンピュータプログラム(41)からの命令
を受信する処理システム(20)。各命令は、同時に処理す
ることが可能な命令のみを含む発行グループ内に含まれ
る。次いで該発行グループが、発行グループ内の複数の
命令をプログラム順で同時に処理し実行する複数のパイ
プライン(75)へ順次送信される。実行中に、発行グルー
プ内の命令が分析されて、該発行グループ中の命令の何
れかが利用不能な命令に依存するか否かが判定される。
利用不能なデータに依存すると判定された発行グループ
中の命令の何れかが独立して停止される一方、該発行グ
ループ中の他の命令は処理を続行することが可能とな
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にコンピュー
タ処理技術に関し、特に複数の命令をインオーダ式に実
行し、該命令の処理を必要に応じて独立して停止させる
(stall)スーパースケーラ処理システム及び方法に関す
る。
【0002】
【従来の技術】最も初期のコンピュータプロセッサで
は、コンピュータプログラムの未完了状態の命令を完全
に実行し、その実行結果をレジスタ又はメモリ内の所定
場所に書き込んだ後、プログラムの次の命令の実行を開
始していた。複数の命令の実行は、一度に1つ行われて
いたため、データ依存性ハザード(即ちデータの依存性
に起因する危険性)によるエラーを容易に防ぐことが可
能であった。
【0003】本書で用いる「データ依存性」とは、実行
中に、第1の命令が、第2の命令の実行に必要とされる
データを生成し又は読み出す状況をいう。かかる状況に
おいて、データ依存性は、該2つの命令間に存在すると
言われ、それらの命令の実行のタイミングは、第1の命
令の実行により生成される必要とされるデータが、第2
の命令の実行中に利用可能となるように、制御されなけ
ればならない。第1の命令が第2の命令の前に必ず実行
されることを確実にするステップを採らない場合には、
データ依存性ハザードが存在する。「データ依存性ハザ
ード」とは、別の命令によるデータに依存する命令が該
別の命令よりも先に実行されてしまう(このため別の命
令によるデータに依存する命令がその実行時に不正なデ
ータを利用することになる)ためにエラーが生じ得る状
況をいう。
【0004】上記のように、プロセッサがコンピュータ
プログラムの複数の命令を一度に1つ実行する場合に
は、データ依存性ハザードにより生じるエラーを防止す
ることは比較的簡単である。これに関連して、別の命令
からのデータに依存する各命令が該別の命令の後にプロ
セッサに入力される限り、データ依存性ハザードによる
エラーが生じることはない。
【0005】しかし、多数のプロセッサの性能を向上さ
せるために、パイプライン処理が開発された。パイプラ
イン処理では、1つのパイプラインが、多数の命令を同
時に処理する。これにより、パイプラインにおける1つ
の命令の実行を、該パイプラインにおける先行する命令
の実行結果が利用可能となる前に、開始させることが可
能となる。その結果として、パイプライン処理では、デ
ータ依存性ハザードに起因するエラーが生じ得る。
【0006】ほとんどのパイプラインプロセッサは、制
御機構を使用して、データ依存性ハザードに起因するエ
ラーを防止している。該制御機構は、プロセッサに入力
された命令間に存在するデータ依存性を検出する。各命
令の実行時に、制御機構は、実行中の命令(以下「未完
命令」と称す)が、別の命令の実行により生成されるデ
ータを必要とするか否かを判定する。未完命令が別の命
令の実行により生成されるデータを必要とする場合に
は、制御機構は、少なくとも、必要とされるデータが利
用可能となる時点まで、前記別の命令が実行されている
か否かを判定する。必要とされるデータがまだ利用可能
でない場合には、制御機構は、該データが利用可能にな
るまで未完命令の実行を停止させる(stall)(即ち一
時的に止める)。
【0007】未完命令の停止処理は、通常、該未完命令
を実行しているパイプラインに送信される停止信号をア
サートすることにより達成される。該停止信号に応じ
て、パイプラインは、制御機構により該停止信号がデア
サートされるまで未完命令の実行を停止するよう設計さ
れる。必要なデータが利用可能になると、制御機構が停
止信号をデアサートし、これに応じてパイプラインが未
完命令の実行を再開する。
【0008】命令の処理に要する時間を更に削減するた
めに、スーパースケーラ処理としても知られる並列処理
が開発された。並列処理では、複数の命令を同時に実行
する複数のパイプラインが規定される。並列処理の1つ
のタイプがアウトオブオーダ(out-of-order:順序を外
れた)処理である。アウトオブオーダ処理では、プロセ
ッサの各パイプラインが他の1つ又は複数のパイプライ
ンとは別個に異なる複数の命令を同時に実行する。
【0009】一般に、異なる命令の実行は異なる時間を
要するものであり、このため、1つの命令が1つのパイ
プラインに入力されるのが別の命令が別のパイプライン
に入力されるのよりも先であったとしても、該別の命令
が前記1つの命令よりも先に実行完了することが可能で
ある。したがって、命令は、必ずしもパイプラインに該
命令が入力された順序と同じ順序で実行されるとは限ら
ず、その結果として、データ依存性ハザードに起因する
エラーを回避するために必要となる制御機構は、アウト
オブオーダ型プロセッサの場合には比較的複雑なものと
なる。更に、パイプラインの数が増えると、制御機構も
劇的にその複雑性を増す。このため、多くの従来の並列
プロセッサ、特に多数のパイプラインを有するプロセッ
サは、上述のアウトオブオーダ型の処理の代わりにイン
オーダ型の処理を採用している。
【0010】インオーダでの処理時に、異なるパイプラ
インにより処理される複数の命令は、システムクロック
信号の特定のエッジでパイプラインの各ステージを段階
的に進行する。ここで、パイプラインにおける複数の命
令の処理は通常は複数ステージへと分割され、該パイプ
ラインの各ステージが異なる命令を同時に処理する。
【0011】一例として、各パイプラインにより実行さ
れる処理は、レジスタステージ、実行ステージ、例外検
出ステージ、及び書き込みステージへと分割することが
可能である。レジスタステージにおいて命令の実行に必
要なオペランドが取得される。オペランドが取得される
と、命令の処理が実行ステージに入って、命令が実行さ
れる。命令の実行が完了すると、命令の処理は例外検出
ステージに入り、実行時のオーバーラン等、例えばデー
タが信頼できないことを示す条件がチェックされる。例
外検出ステージが終了すると、書き込みステージに入
り、実行ステージの結果がレジスタ又はメモリ内の所与
の場所に書き込まれる。
【0012】インオーダ処理の主要な特徴は、1つの発
行グループの各命令が同時に各ステージを段階的に進行
することである。本書で規定する「発行グループ」と
は、単一のプロセッサ内において異なるパイプラインの
同一のステージにより同時に(即ち、同一クロックサイ
クルで)処理される1組の命令である。一例として、各
パイプラインの各ステージは、当業界で一般に行われて
いるように一度に1つの命令を処理するものと仮定す
る。パイプラインの例外検出ステージにおける命令は第
1の発行グループを構成し、パイプラインの実行ステー
ジにおける命令は第2の発行グループを構成する。更
に、パイプラインのレジスタステージにおける命令は第
3の発行グループを構成する。発行グループの各々は、
システムクロック信号のアクティブエッジに応じて、そ
れぞれの次のステージへと進む。換言すれば、システム
クロック信号のアクティブエッジに応じて、第1の発行
グループは書き込みステージへ進み、第2の発行グルー
プは例外検出ステージへと進み、第3の発行グループは
実行ステージへと進む。
【0013】本書で用いる「アクティブエッジ」とは、
システムクロック信号の任意のエッジであり、該エッジ
の発生により、パイプライン中の未停止状態の各命令が
該パイプライン中の次の処理ステージへと誘導される。
例えば、未停止状態の各命令を3クロックサイクル毎に
次の処理ステージへ進めるようプロセッサが設計されて
いるものと仮定する。本例では、アクティブエッジは、
クロック信号の各3番目のアップエッジと規定すること
ができる。なお、クロック信号のどのエッジを「アクテ
ィブエッジ」に指定するかは、設計パラメータに基づく
ものであり、プロセッサ毎に異ならせることが可能であ
る。
【0014】インオーダ処理時には、1つの発行グルー
プ中の各命令が別の発行グループ中の別の命令を◆通過
させる◆ことが防止される。換言すれば、◆1つの発行
グループの命令の後にパイプラインに入力される別の発
行グループの命令が前記1つの発行グループの命令を処
理するステージと同一のステージに入ることが防止され
る。◆したがって、如何なる時点においても、パイプラ
インの各ステージは、1つの発行グループのみからの命
令をそれぞれ処理する。異なる発行グループからの命令
を相互に◆通過させる◆ことが防止されるため、パイプ
ラインを制御すると共にデータ依存性ハザードに起因す
るエラーを防止する制御機構は、アウトオブオーダ処理
と比べて大幅に単純化される。
【0015】しかし、制御機構の複雑性の軽減は、一定
の犠牲の下に達成されるものである。即ち、インオーダ
処理は、幾つかの命令が考え得る最大速度でパイプライ
ンを通過するのを妨げるものとなる。これに関し、1つ
の発行グループの1つの命令が別の発行グループの命令
を通さないことを確実にするために、該1つの命令は、
該1つの発行グループ中の全ての命令が次のステージに
進むことができる状態になるまで、次のステージに進む
ことが許可されない。換言すれば、1つの発行グループ
の1つの命令が停止された場合には、該発行グループの
全ての命令が停止され、この命令の停止処理は、該発行
グループの命令の一部が現行ステージを完了して次のス
テージへ進むために利用できる十分なデータを有してい
る場合であっても行われる。
【0016】
【発明が解決しようとする課題】したがって、インオー
ダ処理を採用する並列プロセッサの効率性を改善するシ
ステム及び方法を提供する必要性は、当該業界において
これまで取り組まれずに残存している。
【0017】
【課題を解決するための手段】本発明は、上述のように
従来技術の不十分さ又は欠点を克服するものである。一
般に、本発明は、発行グループ内の複数の命令の処理を
実行可能にすると共に該発行グループ中の他の命令を独
立して停止させることによりコンピュータプログラムか
らの命令を効率的に処理するシステム及び方法を提供す
る。
【0018】アーキテクチャ面では、本発明の処理シス
テムは、複数のパイプライン、命令分散ユニット、及び
制御機構を使用する。命令分散ユニットは、コンピュー
タプログラムの命令を受信し、該受信した命令に基づい
て発行グループを規定する。各発行グループは、パイプ
ラインへ順次送信され、該パイプラインにより同時に処
理することが可能な複数の命令をそれぞれ含むものであ
る。
【0019】制御機構は、発行グループ中の命令を、該
命令がパイプラインにより処理される際に分析する。制
御機構は、発行グループのうちの1つにおける何れかの
命令を停止させるべきか否かを判定する。制御機構は次
いで、1つの発行グループ中の停止させるべき1つの命
令を処理しているパイプラインの各々にそれぞれ接続さ
れた接続部を介して停止信号をアサートし、該制御機構
はまた、該1つの発行グループ中の他の命令を処理して
いるパイプラインの各々にそれぞれ接続された接続部を
介して停止信号をデアサートする。アサートされた停止
信号のうちの1つを受信した各パイプラインは、前記1
つの発行グループ中の1つの命令を停止させ、またデア
サートされた停止信号のうちの1つを受信した各パイプ
ラインは、前記1つの発行グループ中の命令の処理を続
行させることを可能にする。
【0020】本発明はまた、コンピュータプログラムの
複数の命令を効率的に処理するための方法を提供するも
のと考えることができる。該方法は、コンピュータプロ
グラムから複数の命令を受信し、同時に処理することが
可能な複数の命令を各々が含む複数の発行グループを前
記命令に基づいて規定し、該発行グループを複数のパイ
プラインへ順次送信し、該発行グループのうちの1つに
おける各命令を同時に処理し、該1つの発行グループ中
の1つの命令を停止させ、該停止ステップで該1つの命
令を停止させた状態で前記1つの発行グループ中の他の
命令を処理可能にする、という各ステップにより広義に
概念化することが可能である。
【0021】本発明のその他の特徴及び利点について
は、当業者であれば以下の詳細な説明を図面を参照して
検討することにより明らかとなろう。本書では、かかる
特徴及び利点の全てを本発明の範囲内に含め、また特許
請求の範囲により保護することが意図されている。
【0022】
【発明の実施の形態】図面を参照することにより本発明
を一層良好に理解することができる。図面の各要素は、
必ずしも互いに同一の尺度で表されておらず、本発明の
原理を明確に図示することに重点がおかれている。更
に、同様の符号は幾つかの図面を通して対応する部分を
示している。
【0023】本発明は、命令を並列的に及びインオーダ
式に効率的に処理する処理システム及び方法に関する。
図1は、本発明の処理システム20を採用したコンピュー
タシステム15の好ましい実施形態を示している。該好ま
しい実施形態の処理システム20は、ハードウェアとして
実施することが好ましいが、必要であれば、処理システ
ム20の一部をソフトウェアで実施することも可能であ
る。
【0024】図1に示すように、コンピュータシステム
15は、ローカルインタフェース22を備えており、該ロー
カルインタフェース22は、処理システム20がコンピュー
タシステム15の他の構成要素と通信することを可能にす
る1つ又は2つ以上のバスを備えることが可能である。
更に、入力デバイス25(例えば、キーボード及び/又は
マウス)を使用してシステム15のユーザがデータを入力
することが可能であり、またディスプレイ27及び/又は
プリンタ29を使用してユーザに対するデータ出力を行う
ことが可能である。システムクロック31はクロック信号
を生成し、該信号が当業界で公知の技術を介して使用さ
れて、システム15により通信されるデータのタイミング
が制御される。ディスク記憶装置32をローカルインタフ
ェース22に接続して、不揮発性ディスク(例えば磁気デ
ィスクや光ディスク等)との間でデータ転送を行うこと
が可能である。必要であれば、システム15をネットワー
クインタフェース33に接続して、該システム15がネット
ワーク35とデータ交換を行うことができるようにするこ
とも可能である。
【0025】更に、システム15は、メモリ44に格納され
たプログラム41、システムマネージャ42、及びコンパイ
ラ46を有することが可能である。プログラム41は、処理
システム20により処理され実行されることになる複数の
命令を含む。システムマネージャ42は、入力デバイス25
及び/又はネットワークインタフェース33からの入力を
受信し、及び必要に応じてプログラム41の命令を処理シ
ステム20に送信するように設計されている。プログラム
41の命令を処理システム20に送信する前に、該命令は、
コンパイラ46により、処理システム20と互換性のある形
式へと翻訳されることが好ましい。例えば、プログラム
41の命令が高級コンピュータ言語(例えばC又はFORTRAN
等)で書かれている場合には、コンパイラ46は、該命令
を処理システム20と互換性のある機械言語へと翻訳する
よう設計される。
【0026】好ましい実施形態では、コンパイラ46は、
翻訳された複数の命令を含み、及び処理システム20へ直
接送信することが可能な命令バンドル(instruction bun
dle:一組の命令)を規定する。図2は、本発明の原理に
よる命令バンドル52を示している。同図に示すように、
各命令バンドル52は、1つ又は2つ以上の命令を規定す
るデータを有すると共にヘッダ55を有している。該ヘッ
ダ55は、命令バンドル52に含まれる命令のタイプを識別
する識別子情報を有している。例えば、ヘッダ55は、命
令バンドル52中の第1の命令がメモリ操作命令であり、
命令バンドル52中の第2の命令が整数演算命令であり、
及び命令バンドル52中の第3の命令が浮動小数点演算命
令であることを示す情報を有することが可能である。該
ヘッダ55はまた、ストップビット57を有することが可能
であり、これについては以下で詳述することとする。
【0027】命令バンドル52を規定する際に、コンパイ
ラ46は、データ依存性に関するチェックを行い、及び別
の命令に対するデータ依存性を有する命令がそれ以外の
命令と同一の命令バンドル52中に配置されることがない
ことを確実にするよう設計されるのが好ましい。更に、
コンパイラ46は、命令バンドル52を特定の順序(以下
「プログラム順序」と称す)で処理システム20に連続し
て送信するよう設計され、また、アサートされたストッ
プビット57により境界が画定される命令バンドル52中の
命令間にデータ依存性が存在しないことを確実にするよ
う設計されるのが好ましい。したがって、処理システム
20は、デアサートされたストップビット57を有する複数
の命令バンドル52からなるストリング(即ち一連の命令
バンドル)を受信する場合に、該ストリング中の命令で
該ストリング中の他の命令に依存するものが全く存在し
ないことを認識することになる。
【0028】上述のように命令を命令バンドル52という
形で処理システム20に送信することは、システム20の最
適な性能を向上させる一助となるものである、というこ
とが理解されよう。しかし、上述の命令バンドル52とい
う形で命令を処理システム20に送信することは必ずしも
必要ではない。命令を処理システム20に送信する技術で
あればそれが如何なる技術であっても本発明の実施に適
したものとなる。
【0029】図3に示すように、処理システム20は、処
理システム20に送信される命令を受信するよう設計され
た命令分散ユニット(IDU)72を備えている。該IDU72
は、該IDU72が受信した命令を用いて発行グループを規
定し、及び1つの発行グループの命令をパイプライン75
に送信し、これにより該1つの発行グループ中の各命令
がアクティブクロックエッジでパイプライン75のうちの
1つのみにより受信されると共に各パイプライン75が複
数の命令のうちの1つだけを受信するように構成され
る。
【0030】パイプライン75は、受信した命令を更に処
理し実行するよう設計される。並列のインオーダ型のプ
ロセッサにおける従来方式のパイプラインと同様に、パ
イプライン75は、各ステージで受信した各命令を処理す
ることが好ましい。図4は、パイプライン75の典型的な
1組のステージを示している。ここで、各パイプライン
75は、1つの命令を受信し、該1つの命令を、レジスタ
ステージ77、実行ステージ79、例外検出ステージ81、及
び最後に書き込みステージ83で、順次処理する。これら
のステージについては、既に従来の技術の欄で一層詳細
に説明しており、他のステージ及び/又は複数ステージ
の他の組み合わせを用いて命令を処理し実行することが
可能であることに留意されたい。
【0031】発行グループを規定する際、IDU72は、各
命令が該命令との互換性を有するパイプライン75にのみ
送信されるよう設計されることが好ましい。ここで、パ
イプライン75の一部を、特定のタイプの命令しか扱わな
いよう設計することが可能である。例えば、1つ又は2
つ以上のパイプライン75を、メモリ操作命令、整数演算
命令、浮動小数点演算命令、及びその他の既知のタイプ
の命令しか扱わないよう構成することが可能である。し
たがって、IDU72は、受信した命令を分析して発行グル
ープを規定し、これにより適当なタイプの命令が各パイ
プライン75に送信されるように設計される。好ましい実
施形態では、IDU72は、各命令バンドル52のヘッダ55を
分析して、どの命令がどのパイプライン75と互換性を有
するかを判定することが可能である。
【0032】IDU72はまた、相互間でデータ依存性を有
する2つの命令が同一の発行グループ中に配置されない
ことを確実にするよう設計される。したがって、クロッ
ク31により生成されるクロック信号のアクティブエッジ
で第1の処理ステージ(即ち、好ましい実施形態ではレ
ジスタステージ77)に入る各命令は、同一のクロックエ
ッジで第1のステージに入る他の命令とのデータ依存性
を全く有さない。上述のように、連続する命令バンドル
52がデータ依存性を有するか否かを命令バンドル52のス
トップビット57が示すため、IDU72は、該ストップビッ
ト57を使用して、発行グループを規定するプロセスを簡
素化することが可能である。ここで、IDU72は、デアサ
ートされたストップビット57を有する命令バンドル52の
ストリングにおける任意の命令を、該命令間のデータ依
存性をチェックすることなく同一の発行グループに配置
することが可能である。これは、該命令間にデータ依存
性がないことをストップビット57のアサート/デアサー
トを介してコンパイラ46が保証しているからである。
【0033】更に、IDU72は、他の受信した他の命令に
対する所与の命令の年齢(age)を表すデータを各命令に
挿入するように設計される。ここで、命令の処理をオリ
ジナルプログラム41が規定するのと同一の順序(「プロ
グラム順」という)で完了すべきであることは周知であ
る。プログラム順は、命令が処理システム20により受信
される順序である。
【0034】各命令の古さ(age)は、そのプログラム順
における位置に基づく。例えば、プログラム41において
実行される第1の命令(即ち、処理システム20に送信さ
れるプログラムの第1の命令)は、最も古い命令であ
り、該プログラムの他の命令は全て前記第1の命令より
も若い。第1の命令の後に実行される次の命令(即ち、
第1の命令の後に処理システム20により受信されるプロ
グラムの次の命令)は、第1の命令よりも若いがプログ
ラム41の残りの命令よりも古い。更に、実行される最後
の命令が最も若い命令である。スーパースケーラプロセ
ッサが多数の命令を一度に処理する場合であっても、該
命令は、非スーパースケーラプロセッサがプログラム41
を1ステップずつ進めて命令を一度に1つずつ処理して
いく場合と同一の順序で処理(即ち、上記の例では書き
込みステージ)を完了させなければならない。
【0035】若い命令が古い命令よりも先に処理を完了
しないことを確実にするために、IDU72は、若い命令を
含む発行グループの後にパイプライン75に送信されるこ
とになる発行グループに古い命令を割り当てないことが
好ましい。更に、若い命令が最終的に古い命令よりも先
に処理を完了しないことを確実にするための一助とし
て、IDU72は、年齢(age)データを命令に挿入して、どの
命令を最初に実行すべきかの判定をパイプライン75によ
る処理時に行うことができるようにする。「プログラム
順通り(in program order)」の処理を維持するために該
年齢データを如何に使用するかについては以下で詳述す
ることとする。
【0036】IDU72は、発行グループの規定を完了した
際に、各発行グループをインオーダ式にパイプライン75
へ順次送信するよう設計される。したがって、発行グル
ープ中の各命令は、該発行グループの各々にそれぞれ対
応するパイプライン75へクロック信号の同一のアクティ
ブエッジで送信される。理想的には、各発行グループ中
の各命令がクロック信号のアクティブエッジ間でそれぞ
れのステージにおいて完全に処理され、各発行グループ
が同一のクロックエッジで次のステージへと進むように
する。したがって、レジスタステージ77における発行グ
ループの各命令が実行ステージ79に入るクロックエッジ
は、実行ステージ79及び例外検出ステージ81における各
発行グループの命令が例外検出ステージ81及び書き込み
ステージ83にそれぞれ進むクロックエッジと同一であ
る。更に、レジスタステージ77、実行ステージ79、及び
例外検出ステージ81における各発行グループの命令がそ
れぞれの次のステージに進む際に、新たな発行グループ
の命令がレジスタステージ77に進む。その結果として、
それらの発行グループの処理は、1つの発行グループか
らの命令が別の発行グループ中の命令と同一のステージ
に入ることがないという点でインオーダ式のものとな
る。
【0037】しかし、特定の状況では、1つの命令を実
行する際に予想よりも多くの時間を要することがある。
例えば、別の発行グループ中の別の命令からのデータに
依存する命令が、該別の命令からの必要なデータが利用
可能になる前に実行ステージ79に入ることがある。かか
る場合、実行ステージ79における命令は、前記必要なデ
ータが利用可能になるまで停止され(即ち一時的に実行
が阻止され)なければならない。かかる状況において、
従来の知識により示唆されるところは次の通りである。
即ち、停止信号を各パイプライン75の実行ステージ79に
送信して実行ステージ79における発行グループを停止さ
せ、これにより、必要なデータが利用可能になるまで実
行ステージ79における命令が実行されるのを阻止すべき
である。更に、現在実行ステージ79にある発行グループ
が該実行ステージ79を完了する前に別の発行グループが
実行ステージ79に入るのを阻止するために、各パイプラ
イン75の一層早期のステージ(即ちレジスタステージ7
7)にも停止信号を送信する必要がある。その結果とし
て、実行ステージ79及びレジスタステージ77における各
命令は、実行ステージ79における各命令の実行に必要な
データが利用可能になるまで停止状態になる。該必要な
データが利用可能になった場合には、前記停止信号をデ
アサートし、停止されていた発行グループを次のステー
ジ79,81へと進行させなければならない。
【0038】しかし、本発明者は、かかる従来の知識が
実行ステージ79中の命令の一部を不必要に停止させるも
のであることに気づいた。したがって、システム20は、
各パイプライン75の実行ステージ79に独立した停止信号
を送信するよう設計された制御機構85(図5)を備える
ことが好ましい。ここで、制御機構85は、図5に示すよ
うに、各パイプライン75の実行ステージ79を実行する部
分に接続部88を介して接続され、各接続部88は異なるパ
イプライン75に接続される。
【0039】IDU72により挿入された年齢データに基づ
いて、制御機構85は、実行ステージ79における命令を
「プログラム順通り」に分析し、該分析された命令が利
用不能なデータに依存するか否かを判定する。したがっ
て、制御機構85は、発行グループ中の最も古い命令を分
析した後、その次に古い命令に移行し、これを命令の全
てが分析されるまで又は利用不能なデータに依存する命
令が見つかるまで行う。
【0040】ここで、制御機構85は、分析中の命令が利
用不能なデータに依存しないものであると判定した場合
に、分析中の命令を処理するパイプライン75に接続され
た接続部88上の停止信号をデアサートする。次いで制御
機構85は次に古い命令を分析する。制御機構85は、パイ
プライン75のうちの1つの実行ステージ79における1つ
の命令が利用不能なデータに依存すると判定した場合
に、該利用不能なデータに依存する命令を処理するパイ
プライン75に接続された接続部88を介して停止信号をア
サートするよう構成される。更に、「プログラム順」を
確実に維持するために、制御機構85は、次いで残りのパ
イプライン75(即ち、現在分析中の命令よりも若い命令
を処理するパイプライン75)に接続された接続部88上に
停止信号をアサートする。
【0041】したがって、実行する準備が整っており且
つ利用不能なデータに依存する命令の何れよりも古い
(IDU72により挿入された年齢データにより規定され
る)実行ステージ79における命令を実行すること、及び
該命令をクロック信号のアクティブエッジで他のステー
ジ(即ち、例外検出ステージ81及び書き込みステージ8
3)へと移行することが可能となる一方、利用不能なデ
ータに依存する命令と、利用不能なデータに依存する命
令の何れよりも若い(IDU72により挿入された年齢デー
タにより規定される)命令とが、実行ステージ79におい
て停止される。
【0042】制御機構85は、停止されている命令の監視
を引き続き行う。停止されている命令が、実行に必要な
データへのアクセスを有しており、且つ利用不能なデー
タに依存する実行ステージ79中の他の全ての命令よりも
古い場合に、該停止されている命令のパイプライン75に
加えられている停止信号がデアサートされ、このため、
該停止されている命令がクロックサイクルの次のアクテ
ィブエッジで次のステージ81,83に進行する(即ち1ス
テップ進む)ことが可能となる。
【0043】インオーダ処理を維持するため、実行ステ
ージ79における命令の何れか1つが停止されている場合
には、実行ステージ79に先立つ各ステージにおける発行
グループを停止させる必要がある。したがって、接続部
88上の信号は、図5に示すORゲート91に入力されること
が好ましい。接続部88の何れかがアサートされると、OR
ゲート91の出力もアサートされる。ORゲート91の出力
は、接続部96上の信号と共にORゲート93に入力される。
制御機構85は、レジスタステージ77における命令の何れ
か1つを停止させる必要がある状況を検出した場合に接
続部96上に信号をアサートするよう設計される。ORゲー
ト91の出力又は接続部96上の信号の何れか一方がアサー
トされると、ORゲート93の出力がアサートされる。
【0044】ORゲート93の出力は、各パイプライン75の
うちレジスタステージ77を実行する部分に接続部99を介
して接続される。接続部99上の信号がアサートされる
と、レジスタステージ77における命令が停止される。し
たがって、レジスタステージ77における発行グループ
は、レジスタステージ77における命令又は実行ステージ
79における命令を停止させるべきことを制御機構85が検
出した場合に必ず停止される。したがって、実行ステー
ジ79における各命令がその実行を完了して実行ステージ
79から出るまで、レジスタステージ77における命令が実
行ステージ79に進むことはない。その結果として、処理
システム20のインオーダ的な性質が維持される。
【0045】なお、特定の状況では、実行ステージ79よ
りも後のステージの発行グループを停止させる必要があ
ることに留意されたい。このため、制御機構85は、例外
検出ステージ81及び書き込みステージ83に送信される停
止信号をアサートするよう設計される。好ましい実施形
態では、制御機構85は、接続部106,105(図6)上に信
号をアサートして、例外検出ステージ81及び書き込みス
テージ83における発行グループをそれぞれ停止させるよ
う設計される。
【0046】前述したように、システム20のインオーダ
特性を保持するために、停止された命令を有するステー
ジよりも前のステージにおける発行グループを停止させ
る必要がある。したがって、接続部105を介して加えら
れたアサートされた停止信号は、パイプライン75の前の
ステージ77,79,81の各々にORゲート91,93,107,111を介
して提供され、また接続部106を介して加えられたアサ
ートされた停止信号は、パイプライン75の前のステージ
77,79の各々にORゲート91,93,107,111を介して提供され
る。何れかのステージ77,79,81,83がアサートされた停
止信号を有さない場合には、該何れかのステージ77,79,
81,83が現在の命令をクロック信号の次のアクティブエ
ッジで次のステージへ1ステップ進めることが可能とな
る。
【0047】なお、ORゲート91,93,107,111は本発明の
本質的な特徴ではないことに留意されたい。ここで、OR
ゲート91,93,107,111は、後のステージにおける命令が
停止されている場合に前のステージにおける命令を停止
させることを可能にし、これによりシステム20のインオ
ーダ処理を維持するものである。しかし、これと同一の
機能は、異なる多くの構成及び装置により達成可能なも
のであり、ORゲート91,93,107,111を不要にすることが
可能である。更に、必要であれば、ORゲート91,93,107,
111を制御機構85の回路内に組み込むことが可能であ
る。動作処理システム20及びそれに関連する方法につい
て、その好ましい用途及び動作を以下で説明する。
【0048】コンピュータプログラム41からの複数の命
令は、コンパイラ46によりコンパイルされて処理システ
ム20(図1)に送信される。処理システム20内のIDU72
(図3)は、前記命令を受信して該命令を複数の発行グ
ループへと分割する。該発行グループは複数の命令セッ
トであり、該命令セットは該命令セットのうちの他の命
令との間でのデータ依存性を有さない複数の命令から構
成される。次いで、該発行グループは、システムクロッ
ク31により生成されたクロック信号のアクティブエッジ
に応じてパイプライン75のステージ77,79,81,83を1ス
テップずつ順次進行する。したがって、停止状態が存在
しない場合には、ステージ77,79,81,83の何れかにおけ
る命令が、クロック信号の同一エッジで次のステージへ
と進み、別の発行グループからの命令がパイプライン75
の何れかにおいて現在処理されているステージ77,79,8
1,又は83と同一のステージに、1つの発行グループから
の任意の命令が入ることは決してない。
【0049】制御機構85は、パイプライン75により処理
されている命令を監視し、当業界で周知の技術を介し
て、停止を生じさせるべきか否かを判定する。図7にブ
ロック115,118で示すように、制御機構85は、書き込み
ステージ83における各命令を規定するデータをチェック
し、書き込みステージ83における命令の何れかを停止さ
せるべきか否かを判定する。書き込みステージ83におけ
る命令の何れかを停止させるべき場合には、制御機構85
は、ブロック119で接続部105上に停止信号をアサートす
る。また、書き込みステージ83における命令の何れかを
停止させるべきでない場合には、制御機構85は、ブロッ
ク121で接続部105上の停止信号をデアサートした後、ブ
ロック122,123に示すように、例外検出ステージ81にお
ける命令をチェックして、それらの命令の何れかを停止
させるべきか否かを判定する。例外検出ステージ81にお
ける命令の何れかを停止させるべき場合には、制御機構
85は、ブロック124で接続部106上に停止信号をアサート
する。また、例外検出ステージ81における命令の何れか
を停止させるべきでない場合には、制御機構85は、ブロ
ック125で接続部106上の停止信号をデアサートする。
【0050】ブロック125を実行した後、制御機構85
は、ブロック132に示すように、実行ステージ79におけ
る命令をチェックし、接続部88上に停止信号を適宜アサ
ートする。ここで、制御機構85は、図8のブロック141,
145に示すように、実行ステージ79における第1の命令
を「プログラム順通り」にチェックする(即ち、最も古
い命令をチェックする)。命令を停止させるべき場合
(例えば、命令を正しく実行するために必要なデータが
まだ利用可能でない場合)には、制御機構85は、ブロッ
ク147,149に示すように、該命令を処理するパイプライ
ン75に接続された接続部88上に信号をアサートすると共
に、ブロック145でチェックされた命令よりも若い命令
を処理するパイプライン75に接続された各接続部88上に
信号をアサートする。また、命令を停止させるべきでな
い場合には、制御機構85は、ブロック152に示すよう
に、チェックされた命令を処理しているパイプライン75
に接続された接続部88上の信号をデアサートする。次い
で制御機構85は、ブロック145,152,155,157に示すよう
に、停止させる必要のある命令が見つかるまで、実行ス
テージ79における各命令毎に上記と同様の操作を行う。
【0051】その結果として、クロック信号の各アクテ
ィブエッジ毎に、実行に必要なデータへのアクセスを有
し、且つ利用不能なデータに依存する全ての命令よりも
古い、実行ステージ79における命令を実行すること及び
該命令を次のステージ(即ち、好ましい実施形態では例
外検出ステージ81)へ進めることが可能となる。しか
し、実行に必要なデータへのアクセスをまだ有しておら
ず、又は利用不能なデータに依存する何れかの命令より
も若い、実行ステージ79における命令は、停止される
(即ち、次のステージに移行することが阻止される)。
【0052】ここで図7を再び参照する。制御機構85は
また、ブロック165,167に示すように、レジスタステー
ジ77における命令をチェックし、これらの命令の何れか
を停止させるべきか否かを判定する。レジスタステージ
77における命令の何れかを停止させるべき場合には、制
御機構85は、ブロック169で接続部96上に停止信号をア
サートする。また、レジスタステージ77における命令の
何れかを停止させるべきでない場合には、制御機構85
は、ブロック172で接続部96上の停止信号をデアサート
する。
【0053】したがって、書き込みステージ83における
命令の何れかを停止させるべき場合には、ステージ77,7
9,81,83の全てにおける各命令が停止される。例外検出
ステージ81における命令の何れかを停止させるべき場合
は、該例外検出ステージ81、実行ステージ79、及びレジ
スタステージ77における各命令が停止される。更に、実
行ステージ79における命令の何れかを停止させるべき場
合には、それらの命令と、それらの命令の何れよりも若
い実行ステージ79における各命令とが停止される。更
に、レジスタステージ77における各命令もまた停止され
る。最後に、レジスタステージ77における命令の何れか
を停止させるべき場合には、レジスタステージ77におけ
る命令の各々が停止される。ブロック175に示すよう
に、クロック信号の次のアクティブエッジが発生する
と、上述の処理が繰り返される。
【0054】説明のため、各パイプライン75のステージ
77,79,81,83の各々における命令をそれぞれチェックし
た後、実行ステージ79における1つの命令のみが利用不
能なデータに依存することが判明したと仮定する。その
結果として、該1つの命令又は該1つの命令よりも若い
命令を処理する実行ステージ79に接続された接続部88上
の信号がアサートされる。換言すれば、該1つの命令
と、該1つの命令よりも若い実行ステージ79における複
数の命令とが停止される。その結果として、接続部99上
の信号もまたアサートされることになる。しかし、接続
部105,106上の他の信号の各々と残りの接続部88上の信
号とはデアサートされる。
【0055】その結果として、例外検出ステージ81にお
ける命令の各々は、クロック信号の次のアクティブエッ
ジで書き込みステージ83に進み、実行ステージ79におけ
る命令の各々(停止されている命令は除く)は、前記と
同一のクロック信号のアクティブエッジで例外検出ステ
ージ81に進む。しかし、該クロック信号のアクティブエ
ッジが発生しても、レジスタステージ77における命令は
該レジスタステージ77に残留し、また実行ステージ79に
おける停止されている命令は該実行ステージ79に残留す
る。
【0056】更に、上述した1つの命令(即ち、利用不
能なデータに依存する実行ステージ79における1つの命
令)を実行するのに必要なデータが利用可能になったと
仮定する。この命令が図8のブロック141で制御機構85
によりチェックされた後、この命令を処理するパイプラ
イン75に接続された接続部88上の信号がブロック152で
デアサートされる。更に、この命令よりも若い実行ステ
ージ79における命令を処理するパイプライン75に接続さ
れた接続部88上の信号もまたデアサートされる(これら
の命令の各々は利用不能なデータに依存しないものとす
る)。その結果として、接続部99上の信号もまたデアサ
ートされる。例外検出ステージ81における命令が、クロ
ック信号の次のアクティブエッジで書き込みステージ83
に進む場合には、先に停止されている実行ステージ79に
おける命令が例外検出ステージ81に進む。更に、レジス
タステージ77における命令が実行ステージ79に進み、新
たな発行グループがレジスタステージ77に進む。
【0057】上述した例示から分かるように、実行可能
な実行ステージ79における命令は、該命令の実行及び他
のステージへの進行が可能となり、一方、実行の準備が
整っていない実行ステージ79における命令(例えば、利
用不能なデータに依存する命令、及び利用不能なデータ
に依存する実行ステージにおける別の命令よりも若い各
命令)は、実行ステージ79において停止される。更に、
パイプライン75によりデータを処理する時点で、1つの
発行グループからの1つの命令が、パイプライン75の何
れか1つにおける別の発行グループからの命令を処理し
ているステージと同一タイプのステージに入ることはな
い。換言すれば、システム20の処理は、インオーダ式で
ある。その結果として、制御機構85の複雑性を大幅に増
大させることなくシステム20の効率が最大限になる。
【0058】好ましい実施形態では、プログラム41が処
理システム20に命令を提供しているが、本発明の原理か
ら逸脱することなく様々なソースから命令を供給するこ
とが可能であることが理解されよう。例えば、コンピュ
ータディスク上に命令を配置し、ディスク記憶装置32を
介して該ディスクと処理システム20とのインタフェース
をとることが可能である。別の例として、命令はネット
ワーク35から提供することが可能である。更に、命令
は、システム15とインタフェースされる前にコンパイル
することが可能であり、又は処理システム20と互換性の
ある形式で書き込むことが可能であり、これによりコン
パイルの必要がなくなる。したがって、ローカルメモリ
44に格納されたプログラム41から命令を受信すること
は、本発明の本質的な特徴とみなすべきではない。
【0059】更に、利用不能なデータに依存する命令を
停止させるものとして本発明を説明してきた。しかし、
当業界で知られているように、命令を停止させる別の理
由が存在する場合がある。本発明の原理を用いてかかる
別の理由から命令を停止させることが可能であることは
当業者には明らかであろう。したがって、分析中の命令
を何らかの理由から停止させることになる場合には必
ず、図7及び図8のブロック118,123,167,145で「YES」
の判定が行われることが好ましい。分析された命令が利
用不能なデータに依存することは、命令を停止させるべ
き場合の単なる一例にすぎない。
【0060】更に、上述した方法により、実行ステージ
79における命令の一部が、実行ステージ79を完了して次
のステージ81に進む一方、実行ステージ79における他の
命令を停止させることが可能となる。しかし、これらの
原理は実行ステージ79のみに限定されるものではない。
ここで、本発明の原理を他のステージ77,81,83に適用し
て、ステージ77,81,83のうちの1つにおける命令の一部
のみを停止させる一方、同ステージにおける他の命令を
次のステージに進めることが可能である、ということ
が、当業者であれば本開示を読み進めることにより明ら
かとなろう。したがって、必要であれば、実行ステージ
79における命令を分析し停止させるために使用される方
法と同一の方法を使用して、他のステージ77,81,及び/
又は83の何れかにおける命令の分析及び停止を行うこと
が可能である。
【0061】上述した本発明の実施形態、特に、「好ま
しい」実施形態の何れも、単に考え得る実施例にすぎ
ず、本発明の原理を明確に理解するためだけに記載され
ていることを強調しておく。本発明の思想及び原理から
実質的に逸脱することなく上述の発明の実施形態に多数
の変更及び変形を加えることが可能である。かかる変形
及び変更の全てを本発明の範囲に含ませると共に特許請
求の範囲により保護することが意図されている。
【0062】以下においては、本発明の種々の構成要件
の組み合わせからなる例示的な実施態様を示す。
【0063】1.コンピュータプログラムの命令を効率
的に処理するインオーダ型のスーパースケーラ処理シス
テムであって、複数のパイプライン(75)と、コンピュー
タプログラム(41)の複数の命令を受信し、及び該受信し
た命令に基づき複数の発行グループを規定するよう構成
された命令分散ユニット(72)であって、更に、前記発行
グループを前記パイプライン(75)に送信するよう構成さ
れており、該発行グループの各々が、前記パイプライン
(75)により同時に処理されるべき複数の命令を有してい
る、命令分散ユニット(72)と、前記複数の発行グループ
のうちの1つにおける複数の命令の前記パイプライン(7
5)による処理中に該1つの発行グループ中の複数の命令
を分析するよう構成された制御機構(85)であって、更
に、前記1つの発行グループ中の前記命令の何れかが利
用不能なデータに依存するか否かを判定するよう構成さ
れ、及び利用不能なデータに依存する前記1つの発行グ
ループ中の命令を停止させるよう構成され、及び前記1
つの発行グループ中の他の命令の更なる処理を同時に可
能とするよう構成されている、制御機構(85)とを備えて
いる、インオーダ型のスーパースケーラ処理システム。 2.前記制御機構(85)が、利用不能なデータに依存する
と判定された前記命令よりも若いと前記制御機構(85)に
より判定された前記1つの発行グループ中の各命令を停
止させるよう構成されている、前項1に記載のインオー
ダ型のスーパースケーラ処理システム。 3.コンピュータプログラムの命令を効率的に処理する
処理システムであって、コンピュータプログラム(41)の
複数の命令を受信し、及び該受信した命令に基づいて発
行グループを規定するように構成された命令分散ユニッ
ト(72)であって、更に前記発行グループを送信するよう
構成され、該発行グループの各々が前記システムにより
同時に処理されるべき複数の命令を有している、命令分
散ユニット(72)と、少なくとも第1のステージ及び第2
のステージを各々有する複数のパイプライン(75)であっ
て、前記第1のステージが、一度に1つの発行グループ
のみからの複数の命令を処理し、前記第2のステージ
が、一度に1つの発行グループのみからの複数の命令を
処理する、複数のパイプライン(75)と、前記発行グルー
プのうちの1つにおける各命令を停止させるか否かを判
定するよう構成された制御機構(85)であって、更に、停
止させるべき前記1つの発行グループ中の命令を処理し
ている前記パイプライン(75)の前記第1のステージの各
々にそれぞれ接続された第1の接続部(88)上に停止信号
をアサートするよう構成され、更に、前記1つの発行グ
ループ中の他の命令を処理している前記パイプライン(7
5)の前記第1のステージにそれぞれ接続された第2の接
続部(88)上の停止信号をデアサートするよう構成されて
いる、前記制御機構(85)とを備えており、前記制御機構
(85)が、前記第1及び第2の接続部(88)上の前記停止信
号のアサート及びデアサートをそれぞれ同時に行う、処
理システム。 4.前記パイプライン(75)の各々が、前記接続部(88)の
うちの1つを介して送信されたデアサートされた停止信
号の受信時にのみ1つの命令を前記第1のステージから
前記第2のステージへと1ステップ進めるよう構成さ
れ、更に、前記パイプライン(75)の各々が、前記接続部
(88)のうちの1つを介して送信されたアサートされた停
止信号に応じて前記第1のステージにおける1つの命令
を停止させるよう構成されている、前項3に記載の処理
システム。 5.コンピュータプログラムの命令を効率的に処理する
インオーダ型のスーパースケーラ処理方法であって、コ
ンピュータプログラム(41)から複数の命令を受信し、同
時に処理することが可能な複数の命令を各々含む複数の
発行グループを前記命令に基づいて規定し、該発行グル
ープを複数のパイプライン(75)に順次送信し、前記発行
グループのうちの1つにおける各命令を同時に処理し、
前記1つの発行グループ中の1つの命令を停止させ、該
停止ステップで前記1つの命令が停止されている際に前
記1つの発行グループ中の他の命令の処理を可能にす
る、という各ステップを有する、インオーダ型のスーパ
ースケーラ処理方法。 6.前記1つの発行グループ中の命令が利用可能なデー
タに依存するか否かを判定し、前記停止されている命令
が利用不能なデータに依存するという前記判定ステップ
における判定に応じて前記停止ステップを実行する、と
いう各ステップを更に有する、前項5に記載のインオー
ダ型のスーパースケーラ処理方法。 7.前記停止ステップで停止された前記命令よりも若い
命令が、前記停止ステップで停止された前記命令よりも
前にその実行が完了しないことを確実にするステップを
更に有している、前項5に記載のインオーダ型のスーパ
ースケーラ処理方法。 8.コンピュータプログラムの複数の命令を効率的に処
理するインオーダ型のスーパースケーラ処理方法であっ
て、コンピュータプログラム(41)から複数の命令を受信
し、前記複数の命令に基づいて発行グループを規定し、
該発行グループの各々が、コンピュータプロセッサ(20)
において同時に実行することが可能な複数の命令を有し
ており、前記コンピュータプロセッサ(20)において複数
のステージで前記発行グループを処理し、前記発行グル
ープのうちの1つにおける複数の命令が、別の発行グル
ープ中の複数の命令と同一のステージで同時に処理され
ないことを確実にし、前記1つの発行グループ中の1つ
の命令を停止させ、該停止ステップにより前記命令が停
止されている際に前記1つの発行グループ中の他の命令
を別のステージへ進行させることを可能にする、という
各ステップを有する、インオーダ型のスーパースケーラ
処理方法。 9.前記1つの発行グループ中の命令が利用不能なデー
タに依存するか否かを判定し、前記停止された命令が利
用不能なデータに依存するという前記判定ステップでの
判定に応じて前記停止ステップを実行する、という各ス
テップを更に有する、前項8に記載のインオーダ型のス
ーパースケーラ処理方法。 10.前記1つの発行グループ中の前記命令の何れが前記
停止ステップで停止された前記命令よりも若いかを判定
し、前記停止ステップで停止された前記命令よりも若い
と判定された前記1つの発行グループ中の前記命令の各
々を停止させる、という各ステップを更に有する、前項
8に記載のインオーダ型のスーパースケーラ処理方法。
【図面の簡単な説明】
【図1】本発明に係る処理システムを採用したコンピュ
ータシステムを示すブロック図である。
【図2】図1に示す処理システムに送信される典型的な
命令バンドルを示すブロック図である。
【図3】図1に示す処理システムを更に詳細に示すブロ
ック図である。
【図4】図1に示す処理システムの各処理ステージを説
明するフローチャートである。
【図5】図3に示す処理システムのパイプラインに接続
される制御機構を詳細に示すブロック図である。
【図6】図5に示す制御機構、及び該制御機構と図3に
示すパイプラインとの間の接続を一層詳細に示すブロッ
ク図である。
【図7】図6に示す制御機構のアーキテクチャ及び機能
を示すフローチャートである。
【図8】図7に示す制御機構のアーキテクチャ及び機能
の一部を一層詳細に示すフローチャートである。
【符号の説明】
20 コンピュータプロセッサ 41 コンピュータプログラム 72 命令分散ユニット 75 パイプライン 85 制御機構 88 第1の接続部/第2の接続部
【符号の説明】
●●●●
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ドナルド・チャールズ・ソルティス・ジュ ニア アメリカ合衆国コロラド州80526,フォー トコリンズ,ローズゲート・コート・4414

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】コンピュータプログラムの命令を効率的に
    処理するインオーダ型のスーパースケーラ処理システム
    であって、 複数のパイプライン(75)と、 コンピュータプログラム(41)の複数の命令を受信し、及
    び該受信した命令に基づき複数の発行グループを規定す
    るよう構成された命令分散ユニット(72)であって、更
    に、前記発行グループを前記パイプライン(75)に送信す
    るよう構成されており、該発行グループの各々が、前記
    パイプライン(75)により同時に処理されるべき複数の命
    令を有している、命令分散ユニット(72)と、 前記複数の発行グループのうちの1つにおける複数の命
    令の前記パイプライン(75)による処理中に該1つの発行
    グループ中の複数の命令を分析するよう構成された制御
    機構(85)であって、更に、前記1つの発行グループ中の
    前記命令の何れかが利用不能なデータに依存するか否か
    を判定するよう構成され、及び利用不能なデータに依存
    する前記1つの発行グループ中の命令を停止させるよう
    構成され、及び前記1つの発行グループ中の他の命令の
    更なる処理を同時に可能とするよう構成されている、制
    御機構(85)とを備えている、インオーダ型のスーパース
    ケーラ処理システム。
JP2000269771A 1999-09-07 2000-09-06 命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法 Expired - Fee Related JP3773769B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/390199 1999-09-07
US09/390,199 US6618802B1 (en) 1999-09-07 1999-09-07 Superscalar processing system and method for selectively stalling instructions within an issue group

Publications (3)

Publication Number Publication Date
JP2001092656A true JP2001092656A (ja) 2001-04-06
JP2001092656A5 JP2001092656A5 (ja) 2005-07-07
JP3773769B2 JP3773769B2 (ja) 2006-05-10

Family

ID=23541515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000269771A Expired - Fee Related JP3773769B2 (ja) 1999-09-07 2000-09-06 命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法

Country Status (2)

Country Link
US (1) US6618802B1 (ja)
JP (1) JP3773769B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006134693A1 (ja) * 2005-06-15 2006-12-21 Matsushita Electric Industrial Co., Ltd. プロセッサ
WO2010128582A1 (ja) * 2009-05-08 2010-11-11 パナソニック株式会社 プロセッサ

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6885375B2 (en) * 2002-03-11 2005-04-26 Sun Microsystems, Inc. Stalling pipelines in large designs
US20040142620A1 (en) * 2002-09-10 2004-07-22 Fibermark, Inc. Nonwoven fiber webs with poly(phenylene sulfide) binder
US7627735B2 (en) * 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US20090210664A1 (en) * 2008-02-15 2009-08-20 Luick David A System and Method for Issue Schema for a Cascaded Pipeline
US20090210672A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare instructions
US20090210677A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline
US7984270B2 (en) * 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
US20090210669A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Prioritizing Floating-Point Instructions
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
US8095779B2 (en) * 2008-02-19 2012-01-10 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US7865700B2 (en) * 2008-02-19 2011-01-04 International Business Machines Corporation System and method for prioritizing store instructions
US7870368B2 (en) * 2008-02-19 2011-01-11 International Business Machines Corporation System and method for prioritizing branch instructions
US7996654B2 (en) * 2008-02-19 2011-08-09 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2911278B2 (ja) * 1990-11-30 1999-06-23 松下電器産業株式会社 プロセッサ
US6138230A (en) * 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US5592679A (en) * 1994-11-14 1997-01-07 Sun Microsystems, Inc. Apparatus and method for distributed control in a processor architecture
US5958042A (en) * 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US6047368A (en) * 1997-03-31 2000-04-04 Sun Microsystems, Inc. Processor architecture including grouping circuit

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006134693A1 (ja) * 2005-06-15 2006-12-21 Matsushita Electric Industrial Co., Ltd. プロセッサ
US7953959B2 (en) * 2005-06-15 2011-05-31 Panasonic Corporation Processor
WO2010128582A1 (ja) * 2009-05-08 2010-11-11 パナソニック株式会社 プロセッサ
JP2010262542A (ja) * 2009-05-08 2010-11-18 Panasonic Corp プロセッサ

Also Published As

Publication number Publication date
US6618802B1 (en) 2003-09-09
JP3773769B2 (ja) 2006-05-10

Similar Documents

Publication Publication Date Title
JP3773769B2 (ja) 命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法
JP3659877B2 (ja) ライトアフターライトデータハザードにより生じるエラーを効率的に防止するためのスーパースケーラ処理システム及び方法
KR100951092B1 (ko) 정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체
US7664928B1 (en) Method and apparatus for providing user-defined interfaces for a configurable processor
JP2001521215A (ja) マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
US20060206693A1 (en) Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
JP3756409B2 (ja) データハザード検出システム
JP3756410B2 (ja) 述語データを提供するシステム
US7181601B2 (en) Method and apparatus for prediction for fork and join instructions in speculative execution
JP5528804B2 (ja) 効率的な割込み復帰アドレス保存メカニズム
JP2001142699A (ja) パイプラインプロセッサにおける命令データの転送メカニズム
JP3704046B2 (ja) データハザードを検出するために用いられるデータを融合するためのシステム及び方法
JP2001216160A (ja) 長レイテンシ命令に対する命令属性およびステータス情報を示す処理システムおよび方法
US6711670B1 (en) System and method for detecting data hazards within an instruction group of a compiled computer program
JP2001142701A (ja) プロセッサにおけるパイプライン制御用メカニズムおよび方法
JP4745960B2 (ja) マイクロプロセッサにおいてデータ推測オペレーションを識別する推測ポインタ
JP2008537208A (ja) 条件付命令を実行しない時のソース・オペランドの停止待機
KR20140131199A (ko) 재구성 가능 프로세서 및 재구성 가능 프로세서의 동작 방법
JP3756411B2 (ja) データハザードを検出するシステム
JP3759398B2 (ja) コンピュータ・プログラムのハザードを検出するシステム
US6769057B2 (en) System and method for determining operand access to data
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
JP3158107B2 (ja) 浮動小数点状態および制御レジスタ(fpscr)命令を直接実行するための方法および装置
JPH09274567A (ja) プログラムの実行制御方法及びそのためのプロセッサ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041101

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041101

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060215

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090224

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100224

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees