JPH10283178A - 命令を発行するための方法及びシステム - Google Patents

命令を発行するための方法及びシステム

Info

Publication number
JPH10283178A
JPH10283178A JP10049303A JP4930398A JPH10283178A JP H10283178 A JPH10283178 A JP H10283178A JP 10049303 A JP10049303 A JP 10049303A JP 4930398 A JP4930398 A JP 4930398A JP H10283178 A JPH10283178 A JP H10283178A
Authority
JP
Japan
Prior art keywords
instruction
execution unit
valid
operand
source operand
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
JP10049303A
Other languages
English (en)
Inventor
Klaus Joerg Getzlaff
クラウス・イェルク・ゲッツラフ
Bernd Leppla
ベルント・レプラ
Erwin Pfeffer
エルヴィン・プフェッファー
Thomas Pflueger
トマス・プフリューガー
Birgit Withelm
ビルギット・ヴィテルム
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 JPH10283178A publication Critical patent/JPH10283178A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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/3824Operand accessing
    • 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
    • G06F9/384Register renaming

Landscapes

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

Abstract

(57)【要約】 【課題】 順不同処理システムにおいて命令バッファか
ら少なくとも1つの実行ユニットに命令を効率的に発行
するための装置及び方法を提供する。 【解決手段】 そのソース・オペランドのすべてについ
て有効ビットが設定されると、直ちに命令を発行するこ
とができる。ソース・オペランドは、先行命令のターゲ
ット・オペランドとして生成される。本発明によれば、
対応するターゲット・オペランドが実際に計算される前
に、ソース・オペランドが所与の実行ユニットについて
有効であると投機的に宣言される。そのターゲット・オ
ペランドが実際に使用可能になるまで待機する必要はな
い。むしろ、1つのパイプラインに対してバック・ツー
・バックで命令を発行し、バイパスにより先行命令のタ
ーゲット・オペランドを後続命令のソース・オペランド
に転送することが可能である。したがって、一連の命令
は混乱せず、非常に効率よく発行が行われる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、順不同処理に関
し、具体的には命令ウィンドウから少なくとも1つの実
行ユニットに効率よく命令を発行するための方法及び装
置に関する。
【0002】
【従来の技術】長い間、プロセッサはその逐次順序で命
令を実行してきた。これは、プログラム・シーケンスに
現れるのと同じ順序で命令がプロセッサの実行ユニット
に逐次転送されることを暗に意味する。
【0003】命令スループットの向上とその結果として
パフォーマンスの向上を達成するため、クロック・サイ
クルごとに複数の独立した命令を発行するかまたはその
実行を開始するプロセッサが導入された。このようなプ
ロセッサは、スーパースカラ・プロセッサと呼ばれてい
る。複数の命令は、データ依存関係、手順上の依存関
係、または資源競合が一切発生しない限り、単一サイク
ルで実行することができる。このような依存関係または
競合が存在する場合は、シーケンス内の第1の命令しか
実行できない。その結果、スーパースカラ・アーキテク
チャに含まれる複数の機能ユニットを完全に使用するこ
とができない。
【0004】ハイ・パフォーマンス・プロセッサの開発
における次のステップは、順不同処理の導入に見られる
はずである。順不同プロセッサは、プログラムを実行す
るときに命令シーケンスに従わず、逐次順序とは異なる
順番で命令を処理する。
【0005】命令Aがターゲット・データを生成し、命
令Bがソース・データとして前記ターゲット・データを
必要とする場合、このデータ依存関係を処理する必要が
ある。命令を順不同で発行すると、レジスタと値との対
応関係が崩れる。所与の論理レジスタへの書込みアクセ
スを行うたびに前記レジスタの新しいインスタンスが作
成されるので、1つの論理レジスタに対応する複数のレ
ジスタ値が並行して存在する可能性がある。
【0006】各種レジスタ・インスタンスの値は混乱さ
せてはならない。したがって、論理レジスタごとに複数
の値を保持し識別できるレジスタ・アレイを設ける必要
がある。いずれかの実行ユニットに命令を発行する前
に、アドレス指定した論理レジスタのどのインスタンス
を使用するかを示す必要がある。所与の瞬間に論理レジ
スタを表す実際の記憶セルを識別する作業は、通常、
「レジスタ・リネーム」という。
【0007】順不同で処理すべき命令は、まず、予約ス
テーションにディスパッチされる。そこで命令は、順不
同で実行ユニットに対して発行できるようになるまで待
機する。これまで述べられてきた解決策では、命令は、
そのソース・オペランドが実際に計算されるまで待機す
る。すべてのソース・オペランドが使用可能になると、
直ちに実行ユニットに命令を発行できるようになる。
【0008】この発行方式の欠点は、命令シーケンスが
崩壊することである。というのは、所与のオペランドを
必要とする命令は、前記オペランドを生成する先行命令
が完了するまで待機しなければならないからである。
【0009】したがって、1つの実行ユニットに複数の
命令をバック・ツー・バックで発行し、命令間でデータ
を転送するために各実行ユニットに実現されたバイパス
を使用することは不可能である。結果的に、低速かつ不
連続に命令が発行されることになる。
【0010】
【発明が解決しようとする課題】したがって、本発明の
目的は、先行技術の解決策の欠点を回避し、順不同処理
システムにおいて命令バッファから少なくとも1つの実
行ユニットに命令を発行するための装置及び方法を提供
することにある。具体的には、本発明の目的は、連続シ
ーケンスでしかもバック・ツー・バックでも実行ユニッ
トに命令を発行するための装置及び方法を提供すること
にある。
【0011】
【課題を解決するための手段】本発明の目的は、請求項
1に記載の処理システムと、請求項13に記載の命令を
発行する方法によって解決される。
【0012】命令のターゲット・オペランドが使用可能
になる前にそのターゲット・オペランドの有効ビットを
設定することにより、連続的に発行することが可能にな
り、バック・ツー・バックの発行も可能になる。また、
ターゲット値が必要とするランタイムを考慮することが
可能になり、所与のパイプへの発行に最適の時点でオペ
ランドの有効ビットを設定することも可能である。した
がって、各種実行ユニットに対応して、ソース・オペラ
ンドごとにいくつかの異なる有効ビットを導入すること
は意味のあることである。大幅なパフォーマンスの向上
が達成される。
【0013】
【発明の実施の形態】図1には、順不同処理システムの
典型的なセットアップが示されている。命令は、命令メ
モリ(100)から取り出され、命令キャッシュ(10
1)に順次バッファされる。次に命令は、共通内部命令
フォーマットにデコードされる(102)。また、1つ
の外部命令が複数の小さい内部命令に分割され、その内
部命令が後で順不同で処理可能な解決策も存在する。命
令デコード・ユニット(102)は依存関係の解決も担
当するが、これは、それぞれの命令のソース及びターゲ
ットとして使用される論理レジスタに実際の物理記憶セ
ルを割り当てる必要があることを意味する。
【0014】命令デコード段階では、分岐予測も行われ
る。
【0015】次に命令は予約ステーション(103)に
転送される。命令の各ターゲット・レジスタ・インスタ
ンスごとに、リオーダ・バッファ(108)内に1つの
項目が作成される。したがって、リオーダ・バッファ
は、論理レジスタのインスタンスを表すすべての物理レ
ジスタを、逐次順序である発生順に識別する。
【0016】予約ステーションでは、機能ユニットの1
つに対して発行できるようになるまで命令が待機する。
分岐の場合、分岐ユニット(104)に命令を発行する
必要があり、整数ユニット(105)の1つに整数計算
を転送する必要があり、メモリにアクセスする命令をロ
ード/ストア・ユニット(106)の1つに対して発行
する必要がある。したがって、各命令は対応する機能ユ
ニットによって処理され、その命令のターゲット・デー
タを計算することができる。メモリ・アクセスの場合、
ロード/ストア・ユニット(106)は、データ・キャ
ッシュ(109)を介してデータ・メモリ(110)に
データを書き込むかまたはデータ・メモリ(110)か
らデータを受け取る。
【0017】いわゆる「コミット・プロセス」は命令の
リタイヤを担当し、これは、前記命令のターゲット・レ
ジスタ値が設計済みレジスタ値になることを意味する。
命令は必ず順序通りにコミットされる。したがって、リ
タイヤ・ポインタは、設計済みレジスタ値とともに、マ
シンの精密な状態を定義する。この定義済み状態は、
「精密割込み」の可能性に備えるために、中断するプロ
グラムのために保管しておかなければならない。例外が
発生した場合、プロセッサは、前記定義済み状態に戻る
ことができなければならない。また、分岐予測を誤り、
前記分岐に続く複数の命令が投機実行された場合、プロ
セッサは、十分定義された非投機マシン状態に戻ること
ができなければならない。このマシン状態は、それ以上
変更される可能性はない。これは逐次順序で前進する。
【0018】設計済み順序通り状態を定義するための手
法の1つは次の通りである。すなわち、1つの命令が完
了し、前の命令もすべて完了している場合、その命令の
結果は対応するレジスタの順序通り状態として格納する
ことができ、その命令は「リタイヤ済み」と見なすこと
ができる。したがって、順不同処理システムの設計済み
状態は、複数の完了命令からなる連続ストリングのうち
の最新完了命令によって定義することができる。対応す
る設計済みレジスタ値は、前記命令が完了した瞬間の値
である。各種レジスタ・インスタンスを処理できること
と前記設計済み順序通り状態を連続的に前進させること
の両方に関する概念は、レジスタ・ファイルと組み合わ
せてリオーダ・バッファを使用することである。
【0019】図2には、スーパースカラ・コンピュータ
・システムの詳細ブロック図が示されている。図1のよ
うに、命令メモリ(200)に収容されている命令はま
ず命令キャッシュ(201)に転送される。次に命令は
プレデコード・ユニット(202)に順序通りに転送さ
れ、そのユニットは外部命令ストリームの命令を順不同
処理に適した共通内部フォーマットに変換する。この命
令フォーマットには、OPコード用と、少なくとも2つ
のソース・レジスタ用と、命令がメモリにアクセスしな
ければならない場合のアドレス演算に使用する2つのレ
ジスタ用と、少なくとも2つのターゲット・レジスタ用
のデータ・フィールドが存在する。
【0020】外部命令ストリーム内の命令は、読み取る
かまたは変更すべき論理レジスタのみを参照する。1つ
の論理レジスタが命令実行中に持ちうる各種物理インス
タンスの全体的な問題は、この段階ではまだ解決されな
い。外部命令ストリームの命令が順序通りに処理される
限り、この問題で悩む必要はない。しかし、その通常の
順序以外の順序で命令を実行した場合は、直ちに1つか
つ同じ論理レジスタの各種物理インスタンスを慎重に追
跡することが必要である。
【0021】この問題は、論理レジスタの各インスタン
スに1つの物理レジスタを割り当てることによって解決
される。すなわち、1つの命令が所与の論理ターゲット
・レジスタを変更し、その結果、前記論理レジスタの新
しいインスタンスを作成する場合は、必ず新しい物理レ
ジスタを割り振る必要があることを意味する。また、前
記論理レジスタのこのインスタンスを他の命令がソース
として使用する場合は、同じ物理レジスタを使用する必
要がある。1つの論理レジスタについて多数のインスタ
ンスが存在する可能性があるので、前記論理レジスタに
対応する物理レジスタも多数存在する可能性がある。
【0022】所与の命令が使用する論理レジスタに対し
てどの物理レジスタが対応するかを分析し、前記論理レ
ジスタを適切な物理レジスタで置き換え(レジスタ・リ
ネーム)、任意の論理レジスタの新しいインスタンスが
作成される場合に新しい物理レジスタを割り振る(レジ
スタ割振り)という作業は、「レジスタ・リネーム及び
割振りユニット」(204)によって行われる。
【0023】新しい物理レジスタが割り振られると、
「レジスタ・リネーム及び割振りユニット」(204)
はリオーダ・バッファ(205)にも通知する。リオー
ダ・バッファは、各物理ターゲットごとに1つの項目を
保持し、所与の論理レジスタの所与のインスタンスを識
別する。各リオーダ・バッファ項目は、物理レジスタ
と、それが表す論理レジスタと、前記物理レジスタの完
了状況とを含む。後述する実施態様には、所与の時点で
最高32個のリオーダ・バッファ項目が存在する可能性
がある。「レジスタ・リネーム及び割振りユニット」
(204)によって新しい物理レジスタが割り振られる
と、リオーダ・バッファ(205)内に新しい項目が作
成される。プレデコード段階では命令が依然として順序
通りに処理されているので、リオーダ・バッファ項目も
逐次順序で作成されるが、これは、論理レジスタの早期
インスタンスを表す項目が同じ論理レジスタの後期イン
スタンスに対応する項目より必ず先行することを意味す
る。
【0024】各リオーダ・バッファ項目は、そのターゲ
ット・レジスタの完了状況も含む。当然のことながら、
項目が作成された場合、その完了状況は「未完了」にな
る。所与のレジスタ値が評価されると、直ちにそれに対
応するリオーダ・バッファ項目の完了状況は「完了」に
変更される。リオーダ・バッファは折返しバッファとし
て認識され、最高32個の項目を含むことができる。
【0025】この時点で命令バッファ(203)は、予
約ステーションに適したフォーマットの外部命令ストリ
ームのうちの2つの命令を含んでいる。論理レジスタは
「レジスタ・リネーム及び割振りユニット」(204)
によって適切な物理レジスタに置き換えられており、新
しい物理レジスタを割り振る必要がある場合は、適切な
項目がリオーダ・バッファ(205)内に作成されてい
る。
【0026】この時点で命令は、予約ステーション(2
06)に転送できる状態になっている。予約ステーショ
ンは、最高16個の項目が可能な折返しバッファとして
実現される。
【0027】予約ステーション(206)では、機能ユ
ニットの1つに対して発行できる状態になるまで命令が
待機する。命令はその逐次順序以外の順序で機能ユニッ
トに対して発行されるが、これは、先行命令または後続
命令がすでに発行されたかどうかにかかわらず、命令発
行が行われることを意味する。命令は、その命令のタイ
プに応じて機能ユニットの1つに対して発行される。す
なわち、分岐は分岐ユニット(207)に転送され、整
数計算は整数ユニット(208)によって行われ、メモ
リにアクセスするすべての命令はロード/ストア・ユニ
ット(209)に対して発行される。ロード/ストア・
ユニットは、データ・キャッシュ(211)を介してデ
ータ・メモリ(212)とデータを交換する。
【0028】レジスタ・ファイル(210)のコピーは
各機能ユニットに付加される。このようなレジスタ・フ
ァイルのいずれかに変更を加えると、各種機能ユニット
にある他のレジスタ・ファイルが更新される。各レジス
タ・ファイル(210)は、それまでに割り振られたす
べての物理レジスタの値を含んでいる。
【0029】各物理レジスタは所与の論理レジスタのイ
ンスタンスに対応するので、レジスタ・ファイル(21
0)は、それまでに評価された論理レジスタのインスタ
ンスの値を保持している。
【0030】各機能ユニットにきわめて接近したところ
にレジスタ・ファイルのコピーを有することは有利であ
る。機能ユニット(207、208、209)の1つに
転送された命令は、そのそれぞれのソース・レジスタの
値にアクセスする必要がある。このようなレジスタ値は
レジスタ・ファイル(210)のローカル・コピーに含
まれている。結果データが生成されると、この結果デー
タは直ちにローカル・レジスタ・ファイルに書き込まれ
る。ある命令の論理ソース・レジスタ及びターゲット・
レジスタはプレデコード段階(202)ですでに物理レ
ジスタに名前変更されているので、機能ユニットに転送
される命令はレジスタ・ファイルの物理ソース・レジス
タ及びターゲット・レジスタに直接アクセスすることが
できる。というのは、もはや論理レジスタから物理レジ
スタに変換する必要がないからである。この変換は、
「レジスタ・リネーム及び割振りユニット」(204)
によってプレデコード段階(202)で一度だけ行われ
ている。各機能ユニットでレジスタ・ファイルのローカ
ル・コピーを保持することにより、レジスタの内容への
アクセス時間をさらに短縮することが可能である。
【0031】コミット・プロセス中、このような命令に
よって生成されたターゲット・レジスタ値は設計済みレ
ジスタ値になる。したがって、コミットまたはリタイヤ
・プロセスはマシンの設計済み状態を定義する。この設
計済み状態は、古い命令からより最新の命令に逐次順序
で前進し、それにより、対応する論理レジスタの暫定イ
ンスタンスを有効な設計済みレジスタ値に変形する。
【0032】コミット・プロセスが機能する方法を理解
するためには、リオーダ・バッファ(205)に格納さ
れた各種ターゲット・レジスタ・インスタンスの完了状
況を調べることが必要である。コミット・プロセスは、
まだ完了していない命令のうち最も古い命令の探索を開
始する。リタイヤ・ポインタ(213)は、前記命令に
対応する項目を指し示す。この命令はまだリタイヤする
ことができない。というのは、その結果がまだ使用可能
になっていないからである。すべての命令と、リタイヤ
・ポインタによって定義された項目より先行する対応タ
ーゲット・レジスタのすべてをコミットすることができ
る。対応する命令は予約ステーションからクリアされ、
ターゲット・レジスタ値が設計済みレジスタ値になる。
したがって、設計済み状態(214)は、リタイヤ・ポ
インタ(213)が指し示すリオーダ・バッファ項目よ
り先行するターゲット・レジスタ値によって定義され
る。
【0033】予約ステーションとリオーダ・バッファと
の相互作用は、図3を参照すればより明確になるだろ
う。予約ステーション(300)は、最高16個の命令
を収容することができる。予約ステーション項目の1つ
(302)を示す。これは、命令のOPコードと、ソー
ス・レジスタ、ターゲット・レジスタ、アドレス計算用
のデータ・フィールドを含む。各命令は、最高2つのタ
ーゲット・レジスタにアクセスすることができる。
【0034】1つの命令に属するターゲット・レジスタ
について、リオーダ・バッファ(301)内に項目が作
成される。それぞれの新しいターゲット・レジスタは、
所与の論理レジスタの新しいインスタンスに対応する。
その物理レジスタとその論理レジスタはどちらもそれぞ
れのリオーダ・バッファ項目(304、311)で識別
される。
【0035】予約ステーション項目(302)と、その
命令が使用する1つまたは複数のターゲット・レジスタ
に関する情報を保持する対応リオーダ・バッファ項目
(304)との接続は、リオーダ・バッファ・ポインタ
(303)によって確立される。リオーダ・バッファ・
ポインタは予約ステーション項目(302)の一部であ
る。
【0036】各リオーダ・バッファ項目(304)に
は、ROB項目に含まれるターゲット・レジスタ(30
4)の完了状況を監視するデータ・フィールド(30
5)がさらに存在する。最初は、ターゲット・レジスタ
の状況は「未完了」(305)である。
【0037】図3の例では、命令309が実行ユニット
308に対して発行され、ちょうど処理中であるが、こ
れは、その命令が実行ユニットのパイプラインの所定の
段階にあることを意味する。この命令とともにROBポ
インタ(310)が実行ユニット(308)に転送され
ている。したがって、命令(309)とそれに対応する
リオーダ・バッファ内の項目(311)との接続は、命
令実行中でも維持される。
【0038】通常は実行ユニットのパイプラインの末尾
にある命令実行の結果が使用可能になると、ROBの完
了状況が直ちに「未完了」から「完了」に変化する。そ
の結果、リオーダ・バッファ(301)は、論理レジス
タの各種インスタンスの識別子をその逐次順序で含み、
前記レジスタ・インスタンスの値がすでに評価されたか
どうかに関する情報をさらに含む。
【0039】予約ステーション(300)は折返し付き
アレイとして実現され、その管理はポインタによって行
われる。その正しいフォーマットになっている命令を命
令バッファ(203)から予約ステーション(300)
に転送する場合、適切な項目位置はインポインタ(30
6)によって決まる。命令が1つまたは2つのターゲッ
ト・レジスタをアドレス指定する場合、リオーダ・バッ
ファにも項目を作成しなければならなくなる。
【0040】リオーダ・バッファ(301)は、循環バ
ッファとしても実現される。リオーダ・バッファのイン
ポインタとして機能する割振りポインタ(307)が存
在する。これは、リオーダ・バッファ内で次の項目が作
成される位置を指し示すものである。
【0041】割振りポインタ(307)は新しい命令の
ターゲットを収容するために必要であり、リタイヤ・ポ
インタ(312)は古いターゲット・レジスタ値をリタ
イヤするために必要である。
【0042】リタイヤ・ポインタ(312)は、ターゲ
ット・レジスタのうち、まだ完了していない最も古いも
のを指し示す。コミット・プロセスは、リタイヤ・ポイ
ンタが指し示す項目より古い、すなわち、順序が前の項
目のターゲット・レジスタをコミットする。すなわち、
それぞれの項目が解放され、ターゲット・レジスタ値が
設計済みレジスタの値になり、それがマシンの「公式」
状態を表すことになる。さらに、コミット・プロセス
は、リタイヤ・ポインタ(312)が指し示す項目より
先行するROB項目に対応する、予約ステーション内の
すべての命令を除去する。
【0043】順不同で命令を実行すると、依然として変
更または除去の対象になりうる論理レジスタの暫定イン
スタンスがいくつか生成される。しかし、順次命令スト
リーム内の定義済みポイントである精密設計済み状態
(313)も存在し、設計済みレジスタ値は命令ストリ
ーム内の前記ポイントに対応する。
【0044】図4には、2つの実行ユニットU及びVが
示されているが、これは、分岐ユニット(207)、整
数ユニット(208)、ロード/ストア・ユニット(2
09)のいずれかにすることができる。いわゆるロード
・ユニットによってデータと命令の両方が取り出され
る。データと命令の両方を実行ユニットU(402)に
供給するロード・ユニットLU(400)が存在し、実
行ユニットV(416)に対応するロード・ユニットL
V(415)が存在する。
【0045】まず、実行ユニットUについて検討する。
データと命令はいずれも結果バスLU(401)と書込
みポート403を介して実行ユニットUのパイプライン
に転送される。並行して4つの書込みポート(404)
が存在するが、これらは汎用レジスタ(405)のアレ
イに入力を送達する。このアレイは投機レジスタ値と設
計レジスタ値の両方を保持し、図2のそれぞれのレジス
タ・ファイル210に対応する。実行ユニットの書込み
ポートの1つに到着した情報はこれらの汎用レジスタに
書き込まれ、バイパス409を介して演算論理ユニット
(ALU、408)の入力ラッチA(406)及びB
(407)に直接供給される。
【0046】情報は、前記汎用レジスタ(405)から
ALUの入力ラッチA及びBに転送することができる。
ALU408は、入力レジスタA及びB内のオペランド
にアクセスし、結果値を計算する。この結果は出力ラッ
チD(412)に書き込まれる。
【0047】また、これは、バイパス410を介して書
込みポート411にも直接供給されるが、このポートは
パイプラインの入力を構成する4つの書込みポート40
4の1つである。前記書込みポートは汎用レジスタ・ア
レイ405と、バイパス409を介してALUの入力ラ
ッチとに接続されるので、計算した結果値をALU入力
として直ちに再使用することが可能である。その結果
は、バイパス410及び409を介してALUの入力レ
ジスタA(406)及びB(407)に転送される。
【0048】結果値は汎用レジスタ405にも書き込ま
れる。実行ユニットごとにレジスタ・ファイルを1つず
つ有することは有利である。というのは、これによっ
て、実際のレジスタ値へのアクセス時間の短縮が可能に
なるからである。図2に示すように、前記レジスタ・フ
ァイル210のコピーは各種機能ユニット(207、2
08、209)に付加される。このような各種レジスタ
・アレイ間ではデータ保全性を維持しなければならな
い。1つのアレイのレジスタ値を変更した場合は、必ず
各種実行ユニットに対応する残りのアレイに通知しなけ
ればならない。
【0049】上記の例では、これは結果バス413によ
って行われるが、このバスは、出力レジスタD(41
2)に格納された実行ユニットUのALUの結果を実行
ユニットVの書込みポートの1つ(414)に転送す
る。したがって、実行ユニットVの汎用レジスタ・アレ
イを更新することが可能になり、実行ユニットUの結果
を実行ユニットVで直ちに使用することも可能になる。
【0050】これとは逆に、実行ユニットVの出力レジ
スタDの内容は、結果バス117を介して実行ユニット
Uの書込みポート418に転送される。前記結果は実行
ユニットUのGPRアレイ405を更新するために使用
されるが、バイパス409を介して実行ユニットUで実
行すべき計算用のオペランドとして使用することもでき
る。
【0051】ロード・ユニットLU(400)は、結果
バス401及び書込みポート403を介して専用パイプ
ラインに命令及びデータを供給するだけでなく、実行ユ
ニットVにも供給する。ロード・ユニットLU(40
0)からの情報はレジスタD0(423)にラッチさ
れ、前記情報は結果バス422及び書込みポート420
を介して実行ユニットVに転送される。
【0052】ロード・ユニットLV(415)は、書込
みポート418を介して実行ユニットV(416)にデ
ータ及び命令を送達し、実行ユニットVのラッチD0
(423)に前記情報を格納する。前記情報は、そこか
ら結果バス424及び書込みポート425を介して実行
ユニットUのパイプラインに転送される。
【0053】図5には、実行ユニットと、予約ステーシ
ョンともいう命令ウィンドウ・バッファとの相互作用が
示されている。同図には、実行ユニットU(500)と
実行ユニットV(501)が存在する。そのソース・レ
ジスタ識別子及びターゲット・レジスタ識別子とともに
命令がパイプラインU(500)に転送されたと想定す
る。各クロック・サイクル中に、前記命令は各種パイプ
ライン段階OP1、OP2、OP3、・・・の1つを通
過することになる。命令がOP1段階に達すると、OP
1−U信号(502)が予約ステーション(506)に
転送される。前記OP1−U信号は5本の線を含む。こ
れは、現在、実行ユニットUのパイプライン段階OP1
にある命令によって、どの物理レジスタがターゲット・
レジスタとして計算されるかを予約ステーションに通知
する。
【0054】パイプラインUの現行命令の物理ターゲッ
ト・レジスタを指定する5ビット幅の識別子である同一
情報が、同じくパイプUのOP3段階にある予約ステー
ション506に転送される(504)。その結果、実際
のターゲット・レジスタに関する情報が予約ステーショ
ン506に2回転送される。早期OP1−U信号(50
2)は、オペランドとして前記物理ターゲット・レジス
タを必要とする命令を現行命令によってバック・ツー・
バックでパイプUに対して発行できることを示してい
る。現行命令のターゲット・オペランドが実際に評価さ
れる前に、早期OP1−U信号が予約ステーションに送
られる。これは、今後、そのオペランドが使用可能にな
るかどうかを投機的に示すものである。
【0055】これは、図4に示すバイパス410及び4
09によって可能になるが、それにより、ターゲット・
データは後続命令によってソース・データとして直ちに
再使用できるようになる。
【0056】後期OP3−U信号は、実際の物理ターゲ
ット・レジスタの値がパイプUで使用可能であるだけで
なく、システムのすべての実行ユニットでも使用可能で
あることを示している。OP3段階では、結果データは
すべての実行ユニットのすべてのレジスタ・ファイルに
すでに転送されている。システム内の各GPRアレイ
は、すでに更新されている。したがって、OP3−U信
号は、実際の物理ターゲット・レジスタをソース・オペ
ランドとして必要とする命令を実行ユニットU(50
0)だけでなく、いずれの実行ユニットに対しても発行
できることを示している。
【0057】現行命令の物理ターゲット・レジスタの状
況を示す対応OP1−信号及びOP3−信号も、システ
ム内の他のすべての実行ユニットによって生成される。
上記の例では、パイプラインV(501)は、実際のパ
イプVターゲット・レジスタを参照するOP1−V(5
03)信号及びOP3−V(505)信号を生成する。
したがって、2つのパイプラインが存在する場合、4つ
の信号(502〜505)が予約ステーション506に
転送される。
【0058】予約ステーションが実際に項目0(50
7)〜項目N(509)を活動項目として保持している
と想定する。各項目は、1つの命令に対応し、前記命令
のOPコード、その命令のソース・オペランドを指定す
るソース・レジスタ識別子、前記命令のソース・オペラ
ンドと見なすこともできるアドレス・オペランド、ター
ゲット・レジスタ識別子、対応するROB項目への接続
を確立するROBポインタ(303)を保持している。
【0059】所与の命令のソース・オペランドが各種の
実行ユニットに有効であるかどうかを判定するために
は、一致を検出するために前記ソース・オペランドのレ
ジスタ識別子を信号OP1−U、OP3−U、OP1−
V、OP3−Vによって供給されるターゲット・レジス
タ識別子と比較することが必要である。
【0060】第1のケースとして、SRC0(511)
に含まれる物理レジスタ識別子がOP1−Uによって伝
送される識別子と等しいと想定する。この場合、一致線
514は活動状態になり、SRC0がパイプVではなく
パイプUに対して発行できる状態になっていることを示
す。この場合、有効ビットVU(512)は設定される
が、有効ビットVV(513)は設定されない。
【0061】SRC0(511)の識別子とOP3−U
線との間に一致が存在する場合、一致線515は活動状
態になる。これはSRC0がパイプUとパイプVの両方
に有効であることを示し、したがって、有効ビットVU
(512)とVV(513)の両方が設定される。
【0062】第3のケースとして、SRC0とOP1−
Vとの一致を想定する。一致線516は活動状態にな
り、SRC0がパイプV(501)への発行には有効で
あるが、パイプU(500)への発行には有効ではない
ことを示す。これに対応して、VV(513)は設定さ
れが、VU(512)は設定されない。
【0063】SRC0識別子(511)がOP3−V上
で伝送されたものと同一である場合、活動一致線517
によって示されるが、SRC0はパイプUとパイプVの
両方に有効であると宣言される。これは、ビットV
U(512)とVV(513)の両方を設定することによ
って示される。
【0064】上記の比較は、予約ステーション内の各活
動項目の各ソース・オペランドごとに実行される。所与
の実行ユニットを参照する、1つの命令項目のすべての
有効ビットが設定されると、直ちにその命令全体は前記
実行ユニットに対して発行できる状態になっている。予
約ステーションの項目(507、509)に含まれる命
令(508、510)の1つを所与の実行ユニットに転
送できるようにするために、その項目は、発行セレクタ
(527、528)によって制御される複数の書込みポ
ート(522、523、525、526)に接続される
(521、524)。実行ユニットごとに1つの発行セ
レクタが存在するが、それはその書込みポートのうち、
その対応実行ユニットのパイプラインに接続すべきもの
を選択することができる。たとえば、命令508をパイ
プV(501)に転送する場合、パイプVに対応する発
行セレクタ(528)が書込みポート523を選択し、
その結果、命令508をパイプVに転送できるようにな
る。
【0065】図6の表は、所与のターゲット・オペラン
ドを生成する命令の処理状況がソース・オペランド識別
子511のソース有効ビットにどのように影響するかを
示している。命令がまだ処理されていない場合、ソース
有効ビットVUとVVはどちらも設定されず、ソース・レ
ジスタ値はパイプUまたはパイプVのいずれでも使用不
能である。
【0066】前記ソース識別子についてOP1−Uの一
致が発生した場合、ソース有効ビットVUは設定される
が、ソース有効ビットVVはゼロのままになる。これ
は、必要なソース・レジスタ値がパイプUだけで使用可
能であり、Vでは使用不能であることを意味する。
【0067】OP3−Uの一致の場合、VUとVVの両方
が設定される。ソース・レジスタ値はパイプUとパイプ
Vの両方で使用可能である。
【0068】所与のターゲット・レジスタ値を生成する
という命令がパイプVで予想される場合、所与のソース
・レジスタ識別子についてOP1−Vの一致が発生する
可能性がある。この場合、ソース・オペランド識別子有
効ビットVVは設定されるが、VUはリセットされたまま
になる。必要なソース・レジスタ値はパイプVだけで使
用可能になるので、前記ソース・オペランドはパイプV
に発行できる状態になっているが、パイプUに発行でき
る状態にはなっていないことを示す。
【0069】OP3−Vの一致の場合、必要なソース・
レジスタ値はパイプUだけでなくパイプVでも使用可能
なので、ソース有効ビットVUとVVはどちらも設定され
る。対応するパイプUのレジスタ・ファイルは更新され
ているので、前記ソース・レジスタ値はパイプUでも使
用可能である。
【0070】図7には、ある命令がパイプUまたはVの
いずれかに発行できる状態になっているかどうかを判定
するために、前記命令のソース有効ビットのANDを取
る方法が示されている。図示の命令は、共通予約ステー
ション・フォーマットに変換済みで、現在、予約ステー
ション項目に含まれている命令である。前記項目はOP
コード(700)を含み、SRC0(701)とSRC
1(702)の両方の物理レジスタ識別子を保持するた
めのデータ・フィールドを含む。さらに、アドレス計算
用の2つのオペランド(703、704)が設けられて
いるが、これはソース・オペランドと見なすこともでき
る。その上、ターゲット・オペランドはレジスタ識別子
TGT0(705)及びTGT1(706)によって指
定される。ROBポインタ707は前記命令に対応する
ROB項目を指し示し、その命令の実際の完了状況を追
跡できるようにする。
【0071】各ソース・オペランドSRC0、SRC
1、A0、A1ごとに、実行ユニット当たり1つの有効
ビットが存在し、前記ソース・オペランドが前記実行ユ
ニットに対して発行できる状態になっているかどうかを
示す。上記の例のシステムは、2つの実行ユニットU
(500)及びV(501)を含む。したがって、各ソ
ース・オペランドごとに、2つの有効ビットVU(70
8)とVV(709)が存在し、前記ソース・オペラン
ドが対応する実行ユニットに対して発行できる状態にな
っているかどうかを示す。
【0072】実行ユニットVに対して図7の命令を発行
できるかどうかを判定するために、すべてのソース・オ
ペランド(701〜704)のすべてのVVビットがA
NDゲート(711)に転送される(710)。前記A
NDゲートの出力(712)は、その命令がVに対して
発行できる状態になっているかどうかを判定するもので
ある。これに対応して、すべてのVUビットがANDゲ
ート716に転送され、前記ANDゲートの出力717
が実行ユニットUへの発行が可能かどうかを判定する。
【0073】1つの実行ユニットに対して複数の命令が
順次発行された場合、前記実行ユニットはそれ以上命令
を処理できなくなる可能性がある。前記実行ユニットの
パイプラインの前に複数の命令をバッファできるバッフ
ァが存在する可能性もあるが、このバッファが占有され
た場合、前記実行ユニットに対してそれ以上命令が発行
されるのを停止する方法が存在しなければならない。
【0074】これは、所与の実行ユニット、上記の例で
は実行ユニットVまたは実行ユニットUのいずれかが使
用中(713、715)であることを通知する、使用中
信号(714)によって行われる。パイプV用の反転使
用中線はANDゲート711へのもう1つの入力であ
り、Vへの発行が可能であるかどうかを判定する。前記
使用中線が活動状態である場合、出力712は非活動状
態になり、パイプVへの発行が不可能であることを示
す。
【0075】図8には、2つのソース・オペランドを有
する命令の場合に前記ソース・オペランドの有効ビット
U及びVVの状況によって、どの実行ユニットに命令を
発行するかを決定する方法が示されている。VVビット
が非活動状態であるソース・オペランドが存在する限
り、パイプVへの発行は不可能である。したがって、い
ずれかのソース・オペランドのVUビットがゼロである
場合、命令はパイプVに対してのみ発行することができ
る。両方のソース・オペランドの両方のビットVU及び
Vが設定されている場合のみ、パイプUまたはパイプ
Vのいずれかへの発行が可能になる。
【0076】図9には、命令シーケンスが示されている
が、それに関するタイミング図は図10に示す。この命
令シーケンスは第1のレジスタ加算(AR)命令を含む
が、これはレジスタR0及びR1をソース(SRC0、
SRC1)として使用し、レジスタR0にターゲット
(TGT0)として書き込むものである。次の命令であ
るレジスタ加算2は、レジスタR4及びR0をソース
(SRC0、SRC1)として使用し、ターゲット・レ
ジスタR4(TGT0)に書き込むものである。したが
って、レジスタ加算1によって生成されたR0の値は、
レジスタ加算2によってソース・オペランドとして再使
用される。
【0077】図10には、対応するタイミング図が示さ
れている。レジスタ加算1は、パイプUに対して発行さ
れ、最初はOP1段階にある(800)。これは、レジ
スタ値R0及びR1を読み取るために、汎用レジスタ・
アレイをアドレス指定する(801)。ターゲット・レ
ジスタR0の識別子はOP1−U信号に現れる(80
2)。したがって、レジスタ加算2命令はバック・ツー
・バックでパイプUに対して発行できるので、レジスタ
加算2命令のソース・レジスタR0用の有効ビットVU
が設定される。パイプVへの発行はまだ不可能である。
第2のサイクルでは、レジスタ加算2がパイプUのOP
1段階に転送されている(804)。レジスタ加算1は
OP2段階に移動している(805)。レジスタ加算1
命令のR0及びR1値は読取り済みであり、その時点で
はALUの入力レジスタA(406)及びB(407)
に含まれている(806)。また、第2のサイクルでは
ターゲット値R0も計算されるが(807)、これはB
レジスタに転送されない。
【0078】レジスタ加算2はOP1段階にあるので、
R4用の識別子はOP1−U用の一致線上に現れる(8
08)。したがって、まだ予約ステーションに含まれて
いる命令のうち、ソース・オペランドとしてR4を必要
とするすべての命令は、それぞれの有効ビットVUを設
定する(809)。
【0079】第3のサイクルでは、レジスタ加算1がO
P3段階に移動している(810)。したがって、R0
用の識別子はOP3−U一致線上に現れ(811)、R
0をソース・オペランドとして必要とするすべての命令
について、パイプUとパイプVの両方への発行が可能に
なる。というのは、その時点でR0が両方のパイプライ
ンで使用可能であるからである。したがって、それぞれ
のソース・オペランドについてVU及びVVの両方の有効
ビットが設定される(812)。
【0080】同時に、レジスタ加算2命令はOP2段階
に移動しており(813)、その時点で入力レジスタA
に含まれているGPRファイルのR4値にアクセスし
(406)、レジスタ加算1命令が計算したR0用の値
がバイパス410を介して入力レジスタB(407)に
転送されている(815)。
【0081】したがって、バイパス410を使用して、
第1の命令によって生成されたターゲット・データを第
2の命令のソース・オペランドに転送するが、このソー
ス・オペランドは前記第1の命令によってバック・ツー
・バックで同一パイプラインに対してすでに発行されて
いる。そのバイパスにより後続命令にターゲット・デー
タを転送できるために、早期OP1−U信号が設定され
た時点でR0値がまだ使用可能になっていなくても、早
期OP1−U信号によってソース・オペランドを有効で
あると宣言することは有利である。ターゲット・データ
はまだ計算されていないが、バイパス手段がパイプライ
ン内の命令間のデータ転送のための手段になるので、パ
イプUのR0用の有効ビットは投機的に設定されてい
る。
【0082】レジスタ加算命令のターゲット・オペラン
ドR0は、第2のサイクルですでに計算されている。第
3のサイクルでは、前記R0値がBレジスタ(412)
に転送され、パイプUのGPRファイルに書き込まれる
(814)。
【0083】第4のサイクルでは、レジスタ加算2がO
P3段階に移動している(816)。識別子R4はOP
3−U一致線上に現れ(817)、R4がその時点で両
方のパイプで使用可能になっていることを示す。したが
って、R4を参照する各ソース・オペランドごとに、V
Uビットに加えVVビットが設定される。
【0084】レジスタ加算1命令の結果R0は、第4の
サイクルでBレジスタからパイプUのGPRファイルに
転送される(820)。次に実際のR0値は、パイプU
とパイプVの両方のGPRファイルで計算される。第5
のサイクルでは、R4の値がパイプUのBレジスタ(4
12)から実行ユニットVのGPRファイルに転送され
る(821)。次にパイプUとパイプVの両方のGPR
ファイルは、レジスタ加算2命令によって生成される実
際のR4値を含むことになる。
【0085】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0086】(1)少なくとも1つの実行ユニットと、
命令を保持し、前記命令のソース・オペランドとターゲ
ット・オペランドを指定するための命令バッファであっ
て、それによりオペランドが前記命令バッファ内の第1
の命令のターゲット・オペランドとして指定され、前記
命令バッファ内の第2の命令のソース・オペランドとし
て指定される命令バッファと、前記実行ユニットの1つ
に対して命令を発行するための発行手段であって、前記
命令のソース・オペランドのすべてが有効になるまで命
令を発行しない発行手段とを含み、前記第1の命令が第
1の実行ユニットに対して発行された後であって、しか
も前記オペランドの値が使用可能になる前に、前記第2
の命令の前記ソース・オペランドが有効であると宣言す
るための指示手段を特徴とする、処理システム。 (2)前記指示手段が、前記第2の命令の前記ソース・
オペランドが前記第1の実行ユニットに対する発行に有
効であるかどうかと、前記第2の命令の前記ソース・オ
ペランドが前記第1の実行ユニットとは異なる実行ユニ
ットに対する発行に有効であるかどうかをさらに宣言す
ることを特徴とする、上記(1)に記載の処理システ
ム。 (3)前記指示手段が前記命令のすべてのソース・オペ
ランドを実行ユニットに対する発行に有効であると宣言
するまで、前記発行手段が前記実行ユニットに対して命
令を発行しないことを特徴とする、上記(1)または
(2)のいずれかに記載の処理システム。 (4)前記第2の命令の前記ソース・オペランドが、前
記第1の実行ユニットとは異なる前記実行ユニットの1
つに対する発行に有効であると宣言される前に、前記第
1の実行ユニットに対する発行に有効であると宣言され
ることを特徴とする、上記(2)または(3)に記載の
処理システム。 (5)前記第1の実行ユニット内にあって、前記第2の
命令が前記第1の実行ユニットに対して発行された場合
に前記第1の実行ユニット内の前記第1の命令の前記タ
ーゲット・オペランドを前記第2の命令の前記ソース・
オペランドに転送するためのバイパス手段を特徴とす
る、上記(1)ないし(4)のいずれかに記載の処理シ
ステム。 (6)前記第1の実行ユニットと第2の実行ユニットと
の間にあって、前記第2の命令が前記第2の実行ユニッ
トに対して発行された場合に前記第1の実行ユニット内
の前記第1の命令の前記ターゲット・オペランドを前記
第2の命令の前記ソース・オペランドに転送するための
バイパス手段を特徴とする、上記(1)ないし(5)の
いずれかに記載の処理システム。 (7)ソース・オペランドごとの少なくとも1つの有効
ビットであって、前記ソース・オペランドが有効である
かまたは無効であるかを宣言し、前記指示手段内に含ま
れる有効ビットを特徴とする、上記(1)ないし(6)
のいずれかに記載の処理システム。 (8)ソース・オペランドと実行ユニットごとの少なく
とも1つの有効ビットであって、前記ソース・オペラン
ドが前記実行ユニットに対する発行に有効であるかどう
かを宣言し、前記指示手段内に含まれる有効ビットを特
徴とする、上記(1)ないし(7)のいずれかに記載の
処理システム。 (9)命令が前記実行ユニットに対する発行に有効であ
るかどうかを判定するために、前記命令のすべてのソー
ス・オペランドの前記有効ビットのうち、前記実行ユニ
ットの1つを参照する前記有効ビットのANDを取るた
めの手段を特徴とする、上記(7)または(8)に記載
の処理システム。 (10)前記命令バッファの前記命令を含み、前記命令
のソース・オペランドの前記有効ビットを含む命令バッ
ファ項目を特徴とする、上記(7)ないし(9)に記載
の処理システム。 (11)分岐の結果を示すための条件コードであって、
命令の前記ソース・オペランド及び前記ターゲット・オ
ペランドに含まれる可能性のある条件コードを特徴とす
る、上記(1)ないし(10)のいずれかに記載の処理
システム。 (12)前記実行ユニットの使用中信号が設定されてい
るときに前記命令バッファから前記実行ユニットの1つ
への命令の発行を停止するための使用中手段を特徴とす
る、上記(1)ないし(11)のいずれかに記載の処理
システム。 (13)処理システム内で命令を発行するための方法に
おいて、前記処理システムが、少なくとも1つの実行ユ
ニットと、命令を保持し、前記命令のソース・オペラン
ドとターゲット・オペランドを指定するための命令バッ
ファであって、それによりオペランドが前記命令バッフ
ァ内の第1の命令のターゲット・オペランドとして指定
され、前記命令バッファ内の第2の命令のソース・オペ
ランドとして指定される命令バッファと、前記実行ユニ
ットの1つに対して命令を発行するための発行手段であ
って、前記命令のソース・オペランドのすべてが有効に
なるまで命令を発行しない発行手段とを含み、前記第1
の命令が第1の実行ユニットに対して発行された後であ
って、しかも前記オペランドの値が使用可能になる前
に、前記第2の命令の前記ソース・オペランドが有効で
あると宣言するステップを特徴とする方法。 (14)前記第2の命令の前記ソース・オペランドが有
効であると宣言する前記ステップが、前記第2の命令の
前記ソース・オペランドが前記第1の実行ユニットに対
する発行に有効であるかどうかを宣言するステップと、
前記第2の命令の前記ソース・オペランドが前記第1の
実行ユニットとは異なる実行ユニットに対する発行に有
効であるかどうかを宣言するステップとを含むことを特
徴とする、上記(13)に記載の方法。 (15)前記第2の命令の前記ソース・オペランドが前
記第1の実行ユニットに対する発行に有効であるかどう
かを宣言する前記ステップが、前記第2の命令の前記ソ
ース・オペランドが前記第1の実行ユニットとは異なる
実行ユニットに対する発行に有効であるかどうかを宣言
する前記ステップより先行することを特徴とする、上記
(14)に記載の方法。 (16)前記処理システムが、ソース・オペランドごと
に少なくとも1つの有効ビットをさらに含み、前記第2
の命令の前記ソース・オペランドが有効であると宣言す
る前記ステップが、前記第2の命令の前記ソース・オペ
ランドに対応する前記有効ビットの少なくとも1つを設
定するステップを含むことを特徴とする、上記(13)
ないし(15)のいずれかに記載の方法。 (17)命令のソース・オペランドのすべてが前記実行
ユニットに対する発行に有効であると宣言されたかどう
かを判定するために、前記命令の前記ソース・オペラン
ドに対応し、前記実行ユニットの1つに対応するすべて
の前記有効ビットのANDを取るステップをさらに含む
ことを特徴とする、上記(16)に記載の方法。 (18)命令のソース・オペランドのすべてが実行ユニ
ットに対する発行に有効であると宣言されているときに
前記実行ユニットに対して前記命令を発行するステップ
をさらに含むことを特徴とする、上記(13)ないし
(17)のいずれかに記載の方法。
【図面の簡単な説明】
【図1】順不同処理システムの一般構造を示す図であ
る。
【図2】レジスタ・リネーム及び割振りユニットを含
む、順不同処理システムの詳細図である。
【図3】完了状況を正しく監視し、精密割込みに対応す
るために、予約ステーションがリオーダ・バッファとや
りとりする方法を示す図である。
【図4】2つの実行ユニットU及びVとそれぞれのロー
ド・ユニット間のデータフローを示す図である。
【図5】パイプU及びVのOP1及びOP3信号が予約
ステーションから実行ユニットへの命令発行を制御する
方法を示す図である。
【図6】実行ユニットUまたはVのOP1及びOP3信
号と、いずれかのパイプUまたはVでソース・オペラン
ドが使用可能であるかどうかとの関係を示す図である。
【図7】所与の実行ユニットに命令を発行できるかどう
かを判定するために、各実行ユニットごとに個別に命令
のソース・オペランドのソース有効ビットのANDを取
る方法を示す図である。
【図8】ソース・オペランドの有効ビットの状況によっ
て、どのパイプラインに命令を発行するかを決定する方
法を示す図である。
【図9】2つの「レジスタ加算」命令を含む命令シーケ
ンスの一例を示す図である。
【図10】図9の命令シーケンスを実行する場合のタイ
ミング図である。
【符号の説明】
100 命令メモリ 101 命令キャッシュ 102 命令デコード・ユニット 103 予約ステーション 104 分岐ユニット 105 整数ユニット 106 ロード/ストア・ユニット 107 レジスタ・ファイル 108 リオーダ・バッファ 109 データ・キャッシュ 110 データ・メモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ベルント・レプラ ドイツ国、デー71139、エーニンゲン、ケ ーニヒシュトラーセ 93 (72)発明者 エルヴィン・プフェッファー ドイツ国、デー71088、ホルツガーリンゲ ン、テックシュトラーセ 12 (72)発明者 トマス・プフリューガー ドイツ国、デー70771、ラインフェルデン、 コルンブルーメンヴェーク 9 (72)発明者 ビルギット・ヴィテルム ドイツ国、デー71101、シェーンアイヒ、 ケストナーヴェーク 5

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】少なくとも1つの実行ユニットと、 命令を保持し、前記命令のソース・オペランドとターゲ
    ット・オペランドを指定するための命令バッファであっ
    て、それによりオペランドが前記命令バッファ内の第1
    の命令のターゲット・オペランドとして指定され、前記
    命令バッファ内の第2の命令のソース・オペランドとし
    て指定される命令バッファと、 前記実行ユニットの1つに対して命令を発行するための
    発行手段であって、前記命令のソース・オペランドのす
    べてが有効になるまで命令を発行しない発行手段とを含
    み、 前記第1の命令が第1の実行ユニットに対して発行され
    た後であって、しかも前記オペランドの値が使用可能に
    なる前に、前記第2の命令の前記ソース・オペランドが
    有効であると宣言するための指示手段を特徴とする、処
    理システム。
  2. 【請求項2】前記指示手段が、前記第2の命令の前記ソ
    ース・オペランドが前記第1の実行ユニットに対する発
    行に有効であるかどうかと、前記第2の命令の前記ソー
    ス・オペランドが前記第1の実行ユニットとは異なる実
    行ユニットに対する発行に有効であるかどうかをさらに
    宣言することを特徴とする、請求項1に記載の処理シス
    テム。
  3. 【請求項3】前記指示手段が前記命令のすべてのソース
    ・オペランドを実行ユニットに対する発行に有効である
    と宣言するまで、前記発行手段が前記実行ユニットに対
    して命令を発行しないことを特徴とする、請求項1また
    は2のいずれかに記載の処理システム。
  4. 【請求項4】前記第2の命令の前記ソース・オペランド
    が、前記第1の実行ユニットとは異なる前記実行ユニッ
    トの1つに対する発行に有効であると宣言される前に、
    前記第1の実行ユニットに対する発行に有効であると宣
    言されることを特徴とする、請求項2または3に記載の
    処理システム。
  5. 【請求項5】前記第1の実行ユニット内にあって、前記
    第2の命令が前記第1の実行ユニットに対して発行され
    た場合に前記第1の実行ユニット内の前記第1の命令の
    前記ターゲット・オペランドを前記第2の命令の前記ソ
    ース・オペランドに転送するためのバイパス手段を特徴
    とする、請求項1ないし4のいずれかに記載の処理シス
    テム。
  6. 【請求項6】前記第1の実行ユニットと第2の実行ユニ
    ットとの間にあって、前記第2の命令が前記第2の実行
    ユニットに対して発行された場合に前記第1の実行ユニ
    ット内の前記第1の命令の前記ターゲット・オペランド
    を前記第2の命令の前記ソース・オペランドに転送する
    ためのバイパス手段を特徴とする、請求項1ないし5の
    いずれかに記載の処理システム。
  7. 【請求項7】ソース・オペランドごとの少なくとも1つ
    の有効ビットであって、前記ソース・オペランドが有効
    であるかまたは無効であるかを宣言し、前記指示手段内
    に含まれる有効ビットを特徴とする、請求項1ないし6
    のいずれかに記載の処理システム。
  8. 【請求項8】ソース・オペランドと実行ユニットごとの
    少なくとも1つの有効ビットであって、前記ソース・オ
    ペランドが前記実行ユニットに対する発行に有効である
    かどうかを宣言し、前記指示手段内に含まれる有効ビッ
    トを特徴とする、請求項1ないし7のいずれかに記載の
    処理システム。
  9. 【請求項9】命令が前記実行ユニットに対する発行に有
    効であるかどうかを判定するために、前記命令のすべて
    のソース・オペランドの前記有効ビットのうち、前記実
    行ユニットの1つを参照する前記有効ビットのANDを
    取るための手段を特徴とする、請求項7または8に記載
    の処理システム。
  10. 【請求項10】前記命令バッファの前記命令を含み、前
    記命令のソース・オペランドの前記有効ビットを含む命
    令バッファ項目を特徴とする、請求項7ないし9に記載
    の処理システム。
  11. 【請求項11】分岐の結果を示すための条件コードであ
    って、命令の前記ソース・オペランド及び前記ターゲッ
    ト・オペランドに含まれる可能性のある条件コードを特
    徴とする、請求項1ないし10のいずれかに記載の処理
    システム。
  12. 【請求項12】前記実行ユニットの使用中信号が設定さ
    れているときに前記命令バッファから前記実行ユニット
    の1つへの命令の発行を停止するための使用中手段を特
    徴とする、請求項1ないし11のいずれかに記載の処理
    システム。
  13. 【請求項13】処理システム内で命令を発行するための
    方法において、 前記処理システムが、 少なくとも1つの実行ユニットと、 命令を保持し、前記命令のソース・オペランドとターゲ
    ット・オペランドを指定するための命令バッファであっ
    て、それによりオペランドが前記命令バッファ内の第1
    の命令のターゲット・オペランドとして指定され、前記
    命令バッファ内の第2の命令のソース・オペランドとし
    て指定される命令バッファと、 前記実行ユニットの1つに対して命令を発行するための
    発行手段であって、前記命令のソース・オペランドのす
    べてが有効になるまで命令を発行しない発行手段とを含
    み、 前記第1の命令が第1の実行ユニットに対して発行され
    た後であって、しかも前記オペランドの値が使用可能に
    なる前に、前記第2の命令の前記ソース・オペランドが
    有効であると宣言するステップを特徴とする方法。
  14. 【請求項14】前記第2の命令の前記ソース・オペラン
    ドが有効であると宣言する前記ステップが、 前記第2の命令の前記ソース・オペランドが前記第1の
    実行ユニットに対する発行に有効であるかどうかを宣言
    するステップと、 前記第2の命令の前記ソース・オペランドが前記第1の
    実行ユニットとは異なる実行ユニットに対する発行に有
    効であるかどうかを宣言するステップとを含むことを特
    徴とする、請求項13に記載の方法。
  15. 【請求項15】前記第2の命令の前記ソース・オペラン
    ドが前記第1の実行ユニットに対する発行に有効である
    かどうかを宣言する前記ステップが、 前記第2の命令の前記ソース・オペランドが前記第1の
    実行ユニットとは異なる実行ユニットに対する発行に有
    効であるかどうかを宣言する前記ステップより先行する
    ことを特徴とする、請求項14に記載の方法。
  16. 【請求項16】前記処理システムが、 ソース・オペランドごとに少なくとも1つの有効ビット
    をさらに含み、 前記第2の命令の前記ソース・オペランドが有効である
    と宣言する前記ステップが、 前記第2の命令の前記ソース・オペランドに対応する前
    記有効ビットの少なくとも1つを設定するステップを含
    むことを特徴とする、請求項13ないし15のいずれか
    に記載の方法。
  17. 【請求項17】命令のソース・オペランドのすべてが前
    記実行ユニットに対する発行に有効であると宣言された
    かどうかを判定するために、前記命令の前記ソース・オ
    ペランドに対応し、前記実行ユニットの1つに対応する
    すべての前記有効ビットのANDを取るステップをさら
    に含むことを特徴とする、請求項16に記載の方法。
  18. 【請求項18】命令のソース・オペランドのすべてが実
    行ユニットに対する発行に有効であると宣言されている
    ときに前記実行ユニットに対して前記命令を発行するス
    テップをさらに含むことを特徴とする、請求項13ない
    し17のいずれかに記載の方法。
JP10049303A 1997-03-13 1998-03-02 命令を発行するための方法及びシステム Pending JPH10283178A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP97104211 1997-03-13
DE97104211.4 1997-03-13

Publications (1)

Publication Number Publication Date
JPH10283178A true JPH10283178A (ja) 1998-10-23

Family

ID=8226586

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10049303A Pending JPH10283178A (ja) 1997-03-13 1998-03-02 命令を発行するための方法及びシステム

Country Status (4)

Country Link
JP (1) JPH10283178A (ja)
KR (1) KR19980079634A (ja)
CN (1) CN1193777A (ja)
DE (1) DE19804146A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014044509A (ja) * 2012-08-24 2014-03-13 Fujitsu Ltd 演算処理装置および演算処理装置の制御方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8543796B2 (en) 2008-11-05 2013-09-24 Intel Corporation Optimizing performance of instructions based on sequence detection or information associated with the instructions
GB2509830B (en) * 2013-02-11 2014-12-24 Imagination Tech Ltd Speculative load issue
CN113778528B (zh) * 2021-09-13 2023-03-24 北京奕斯伟计算技术股份有限公司 指令发送方法、装置、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014044509A (ja) * 2012-08-24 2014-03-13 Fujitsu Ltd 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
DE19804146A1 (de) 1998-09-17
CN1193777A (zh) 1998-09-23
KR19980079634A (ko) 1998-11-25

Similar Documents

Publication Publication Date Title
JP3588755B2 (ja) コンピュータシステム
EP0638183B1 (en) A system and method for retiring instructions in a superscalar microprocessor
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
US5442757A (en) Computer processor with distributed pipeline control that allows functional units to complete operations out of order while maintaining precise interrupts
JP3014773B2 (ja) プロセサアーキテクチャ
EP0437044B1 (en) Data processing system with instruction tag apparatus
KR930004214B1 (ko) 데이타 처리 시스템
US5826055A (en) System and method for retiring instructions in a superscalar microprocessor
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5664137A (en) Method and apparatus for executing and dispatching store operations in a computer system
JP2004118862A (ja) レジスタ・ファイルのバックアップ方法
JPH07160501A (ja) データ処理システム
KR100242403B1 (ko) 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템
JPH10301778A (ja) レジスタの名前変更を管理する方法および装置
KR100263013B1 (ko) 슈퍼 스칼라 컴퓨터 시스템의 리네임 레지스터 와 구조화된레지스터를 관리하는 방법 및 컴퓨터 시스템
US5802340A (en) Method and system of executing speculative store instructions in a parallel processing computer system
US6311267B1 (en) Just-in-time register renaming technique
JPH10283178A (ja) 命令を発行するための方法及びシステム
EP1050805B1 (en) Transfer of guard values in a computer system
JPH09138748A (ja) 浮動小数点命令の早期完了方法および装置
JPH117389A (ja) プロセサ用の命令を処理するシステム及び方法
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers