JPH10275078A - 命令をディスパッチする方法及びシステム - Google Patents

命令をディスパッチする方法及びシステム

Info

Publication number
JPH10275078A
JPH10275078A JP10066375A JP6637598A JPH10275078A JP H10275078 A JPH10275078 A JP H10275078A JP 10066375 A JP10066375 A JP 10066375A JP 6637598 A JP6637598 A JP 6637598A JP H10275078 A JPH10275078 A JP H10275078A
Authority
JP
Japan
Prior art keywords
instruction
queue
instructions
pointer
execution
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
JP10066375A
Other languages
English (en)
Other versions
JP3335306B2 (ja
Inventor
Kyuu Re Fun
フン・キュー・レ
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 JPH10275078A publication Critical patent/JPH10275078A/ja
Application granted granted Critical
Publication of JP3335306B2 publication Critical patent/JP3335306B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)【要約】 【課題】 待ち行列内の隣接している命令の選択だけに
限定されない、命令を選択して互いに対にするシステム
及びプロセスを提供すること。 【解決手段】 スーパースカラ・データ処理システムに
おいて、相互に依存する命令を複数の実行ユニットにデ
ィスパッチするために対にする。ペアリングによって、
必ずしも連続したアドレスにあるとは限らない命令が対
にされる。ペアリングは様々な命令の汎用レジスタ・ソ
ース・ポインタと汎用レジスタ・ターゲット・ポインタ
を比較することによって行うことができる。ペアリング
は、ソース・オペランドのターゲット識別番号をターゲ
ット命令のターゲット識別番号と比較することによって
も行うことができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にデータ処理
システムに関し、具体的にはプロセッサにおける依存命
令の動的ペアリングに関する。
【0002】
【従来の技術】スーパスカラ・マイクロプロセッサ設計
では、複数の命令を並列して様々な実行ユニットにディ
スパッチすることができる。しかし、多くの命令は他の
命令の結果の受け取りに依存する。このような依存命令
は、命令フロー内で互いに隣り合って存在していない場
合がある。隣合う命令の対をディスパッチするための従
来技術の設計は、命令フロー内で互いに隣接していない
依存命令をディスパッチするには不十分である。
【0003】
【発明が解決しようとする課題】したがって、当技術分
野では、待ち行列内の隣接している命令の選択だけに限
定されない、命令を選択して互いに対にするシステム及
びプロセスが必要である。
【0004】
【課題を解決するための手段】本発明は、連続したアド
レス場所にある場合もない場合もある命令を動的に対に
するシステム及び方法を提供することによって上記の必
要を満たす。
【0005】本発明は、上記のような命令を対にする1
つまたは複数の並列プロセスを実施することができる。
本発明は、命令待ち行列から実行前待ち行列にディスパ
ッチする命令のグループ内で、より新しい命令の汎用レ
ジスタ(「GPR」)ソース・ポインタをより古い命令
のGPRターゲット・ポインタと比較する。一致する場
合、最も若いターゲット命令と最も古い依存命令とを対
にする。ターゲット命令は実行前待ち行列に入れるとき
に、そのDPTRフィールドを、依存命令を入れる実行
前待ち行列内場所を指すように設定する。
【0006】実施可能な並列プロセスは、命令待ち行列
から実行前待ち行列に現在ディスパッチ中の命令のGP
Rソース・ポインタを、すでに実行前待ち行列内に入っ
ている命令のGPRターゲット・ポインタと比較するプ
ロセスである。一致する場合、ディスパッチする最も古
い依存命令を実行前待ち行列内の最も若いターゲット命
令と対にする。依存命令がどのディスパッチ命令とも対
にされない場合、依存命令を実行前待ち行列に入れると
きに、実行前待ち行列内の場所をターゲット命令のDP
TRフィールドに保管する。これを実施することによっ
て、GPRにアクセスしてTIDを入手し、比較を行
い、次にDPTRを計算するサイクル抑止プロセスを回
避することができる。
【0007】本発明で実施可能な他の並列プロセスは、
ディスパッチされた命令のソース・オペランドのTID
を実行前待ち行列内の命令のターゲットTIDと比較す
るプロセスである。
【0008】
【発明の実施の形態】以下の説明では、本発明を十分に
理解することができるように特定のワード長やバイト長
など多くの特定の詳細を記載する。しかし、本発明はそ
のような特定の詳細がなくても実施することができるこ
とが当業者には明らかであろう。他の場合には、本発明
が無用な詳細によって不明瞭にならないように、周知の
回路はブロック図の形で示している。たいていの場合、
タイミング上の考慮すべき事柄に関する詳細などは、本
発明を十分に理解するために必要ではなく、当業者の技
術の範囲内にあるため、そのような詳細は省いた。
【0009】図を参照すると、図の要素は必ずしも一定
の縮小率で図示されておらず、いくつかの図面を通して
同様の要素は同じ参照番号で示してある。
【0010】本発明について、PowerPCアーキテ
クチャ(PowerPCはインターナショナル・ビジネ
ス・マシーンズ・コーポレイションの商標である)の固
定小数点ユニットに対応する実施態様に関して説明す
る。同じ方式は、他の実行ユニット及び他のアーキテク
チャに対応するように適応させることができる。
【0011】典型的な情報処理システムは図1に示す通
りであり、少なくとも1つの中央処理装置(CPU)2
を含む。CPU2はシステム・バス4を介して、ランダ
ム・アクセス・メモリ(RAM)6、読取り専用メモリ
(ROM)8、ディスク装置12やテープ装置14など
の周辺装置をバス4に接続する入出力(I/O)アダプ
タ10、キーボード18、マウス22、スピーカ24、
マイクロフォン20またはタッチ・スクリーン装置(図
示せず)などのその他のユーザ・インタフェース装置を
バス4に接続するユーザ・インタフェース・アダプタ1
6、情報処理システムをデータ処理ネットワークに接続
する通信アダプタ26、バス4を表示装置30に接続す
るディスプレイ・アダプタ28と相互接続されている。
【0012】図2に、命令待ち行列40と、実行前待ち
行列(PEQ)42と、固定小数点ユニット44と、分
岐ユニット41と、比較ユニット43と、ストア・ユニ
ット45と、浮動小数点ユニット47とを含むCPU2
の高水準概要図が図示されている。固定小数点ユニット
44は、実行ユニット46、48、50、及び52の4
つから成り、これらはクラスタ0 54とクラスタ1
56の2つのクラスタに構成されている。各クラスタ5
4、56は先行実行ユニット46、50と後続実行ユニ
ット48、52を有する。複数の宛先にデータを転送す
るタイミング上の問題を回避するために、各実行ユニッ
ト46、48、50、52の結果の転送は、宛先の場所
と、結果が入手可能になった時点とにより一様ではな
い。
【0013】命令待ち行列内の命令は、命令キャッシュ
またはその他の記憶装置(図示せず)から取り出され
る。命令は、クラスタ54、56に送る命令とデータを
保持するPEQ42に入れられる。命令とデータはPE
Q42からラッチL1 58、L2 60、L3 6
2、及びL4 64に送られる。ラッチから命令とデー
タが実行ユニットに入れられる。たとえば、ラッチ58
から実行ユニット46に命令とデータが入れられる。実
行ユニット46、48、50、52の結果もラッチL1
58、L2 60、L3 62、またはL4 64に
送ることができ、さらに特定のラッチに関連づけられた
実行ユニットによって処理される。ラッチL5 64、
L6 66、L7 68、及びL8 70が各実行ユニ
ット46、48、50、52から結果を受け取り、次に
それらの結果をさらに処理するためにPEQ42に送り
返す。
【0014】固定小数点クラスタ54、56は以下のよ
うな特性を持っている。クラスタ内の先行するユニット
は、結果を同じクラスタ内の後続のユニットに転送して
同じサイクルで使用できるようにすることができる。た
とえば、先行ユニット46でサイクルnで実行している
命令が、その結果を同じクラスタ54内の後続ユニット
48に転送して、サイクルnで依存命令が後続ユニット
48でその結果を使用して実行することができるように
することができる(0サイクル転送)。また、クラスタ
内の後続ユニットは、その結果を同じクラスタ内の先行
ユニットに転送し、それによってその結果が生成された
後のサイクル中に先行ユニットでその結果を実行に使用
できるようにすることができる(クラスタ内の1サイク
ル転送)。たとえば、サイクルnで後続ユニット48で
実行している命令が、同じクラスタ54内の先行ユニッ
ト46に結果を転送し、それによって依存命令がその結
果をサイクルn+1で先行ユニット46で使用して実行
できるようにすることができる。
【0015】クラスタ(ローカル・クラスタ)内の先行
ユニットは他のクラスタ(リモート・クラスタ)内の実
行ユニットに結果を転送し、それによってその結果が生
成された後のサイクル中にリモート・クラスタでその結
果を実行に使用できるようにすることができる。たとえ
ば、サイクルnでローカル・クラスタ54の先行ユニッ
ト46で実行している命令がリモート・クラスタ56内
の先行ユニット50または後続ユニット52に結果を転
送し、それによって依存命令がサイクルn+1でその結
果を先行ユニット50または後続ユニット52で使用で
きるようにすることができる。
【0016】ローカル・クラスタ内の後続ユニットは、
結果が生成された1サイクル後にリモート・クラスタの
実行ユニットにその結果を転送することができる(クラ
スタ間の2サイクル転送)。たとえば、サイクルn中に
ローカル・クラスタ54の後続ユニット48で実行して
いる命令が遠隔クラスタ56内の先行ユニット50また
は後続ユニット52に結果を転送し、それによって依存
命令がn+2サイクル中に先行ユニット50または後続
ユニット52でその結果を使用して実行できるようにす
ることができる。
【0017】クラスタ内のすべてのユニットは、結果が
生成された1サイクル後にその結果をGPR(図示せ
ず)及びPEQ42に転送することができる(2サイク
ル転送)。
【0018】ロード命令はクラスタ内の後続ユニットで
のみ実行することができる。
【0019】クラスタ内のすべてのユニットの効率的な
動作を維持するために、命令発行ユニットであるPEQ
42はクラスタへの命令をスケジュールするときにクラ
スタ内及びクラスタ間で実行ユニットによる結果データ
の一様でない転送を考慮に入れなければならない。さら
に、PEQ42は使用可能なオペランドの命令だけをス
ケジュールしなければならない。しかし、アウト・オブ
・オーダー発行が可能である。
【0020】投機命令がスケジュールされて打ち切られ
た場合、PEQ42は迅速な回復方法も講じなければな
らない。たとえば、特定の分岐が特定の経路を取るとい
う仮定のもとに命令がスケジュールされたのに、分岐が
別の経路を取る場合がある。また、スケジュールされた
2つの命令の間に例外が発生する可能性もある。
【0021】さらに、PEQ42は、ロード命令を後続
ユニットに送るなどのように、特定の命令のスケジュー
ルを限定しなければならない。最後に、PEQ42はプ
ロセッサのサイクル時間を満たすように簡略化された方
法で上記の機能を実現しなければならない。
【0022】この命令待ち行列化及び発行機構には以下
のような特徴がある。PEQ 42は予約ステーション
の役割を果たし、クラスタ54、56に対して発行する
命令とそのデータを保持する。優先順位配列を実現する
1組のラッチ(図3、図5、及び図6に示す)がPEQ
42内の命令の相対エージを追跡する。PEQ42内の
1組のビットを使用して、命令のためにオペランドが使
用可能であることを示す。使用可能なオペランドを持つ
命令だけがPEQ42によって選択され、クラスタ5
4、56に発行される。
【0023】PEQ42内の他の1組のビットによっ
て、依存命令を「対」にすることができる。すなわち、
命令Aがロード命令ではなく、命令Aが命令Bが使用す
る結果を生成する場合、命令AとBを対にする。PEQ
42は、先行ユニットから後続ユニットへの0サイクル
転送を利用するために、ABの対を一緒に同じクラスタ
(Aを先行ユニット、Bを後続ユニットに)に発行しよ
うとする。
【0024】PEQ42内の他の1組のビットは、結果
が生成される場所を追跡し、それによってその結果を使
用する依存命令が適切なクラスタに発行されるようにす
る。たとえば、命令Aがクラスタ0 54の後続ユニッ
ト48で実行されている場合、PEQ42はクラスタ内
のデータの1サイクル転送を利用するために、Aに依存
する命令Bをクラスタ0 54に発行しようとする。
【0025】命令分類方式によって、命令をバケットに
グループ化する。命令選択論理は各バケットに対して並
列に作用する。命令を順次に選択する方式から命令をバ
ケットの中から並列して選択する方式に命令選択プロセ
スが変更されるため、命令選択時間が短縮される。たと
えば、命令Aがサイクルn中にクラスタ0 54内の先
行ユニット46で実行されるとする。命令Aに依存する
命令Bは、サイクルn中にクラスタ0 54内の後続ユ
ニット48で実行することができる。Bはサイクルn+
1またはその後のサイクルに4つのユニット46、4
8、50、52のいずれかで実行することができる。
【0026】他の例として、命令Aがサイクルn中にク
ラスタ0 54内の後続ユニット48で実行されている
とする。命令Aに依存する命令Bはサイクルn+1でク
ラスタ0 54のいずれかのユニット46、48で実行
することができる。Bはサイクルn+2またはその後の
サイクル中に4つのユニット46、48、50、52の
いずれかで実行することができる。
【0027】図3に、PEQ42を通る命令の流れを示
す。図2に示す命令待ち行列(IQ)40から命令がデ
ィスパッチされる。命令はマルチプレクサ80、82、
84、86、88、90を通してPEQに入れられる。
命令選択のための制御信号を計算して4つのマルチプレ
クサC0Eptr92、C1Eptr94、C0Lpt
r96、及びC1Lptr98を通してゲートする。P
EQ42からの命令は4つのバスC0E100(クラス
タ0内の先行ユニット46へ)、C1E102(クラス
タ1内の先行ユニット50へ)、C0L104(クラス
タ0内の後続ユニット48へ)、及びC1L106(ク
ラスタ1内の後続ユニット52へ)を通ってゲート出力
される。PEQ42に命令が入っていない場合は、ディ
スパッチされた命令は、4つのマルチプレクサB0E1
08、B1E110、B0L112、及びB1L114
を通して実行ユニット46、48、50、52に直接バ
イパスすることができる。
【0028】図4に、PEQ42の各項目のフィールド
を示す。各項目は、命令コード及び他の制御信号120
と、RAデータ122と、RBデータ124とから成
る。各PEQ項目に付随するビットは以下の通りであ
る。 ・ V126:項目が有効かどうかを示す。 ・ L128:命令がロード命令かどうかを示す。 ・ T130:命令が依存対命令のうちの前の方の(タ
ーゲット)命令かどうかを示す。(命令が依存命令の場
合は、ターゲット命令として扱われないことに留意され
たい。しかし、独立命令になった場合、すなわちそのD
132ビットがリセットされ、T130ビットが設定さ
れた場合は、自動的にターゲット命令になる。) ・ D132:命令が依存対命令のうちの後の命令(タ
ーゲット命令に依存する命令)かどうかを示す。 ・ RT(命令ターゲットがGPR): U134:フィールドが有効かどうかを示す。 TID136:命令の送り先であるGPRのターゲット
IDを示す。TID136はオペランド・インタロック
として使用されるポインタである。TID136は命令
識別子でもある。 ・ RA(命令ソースがGPR): U138:フィールドが有効かどうかを示す。 W140:RAフィールドにデータが入れられているか
どうかを示す(RAを使用しない場合、このビットはデ
ィスパッチ時に1に設定される)。 C0 142、C1 144:オペランドがクラスタ内
の後続ユニットで実行される命令に依存するかどうかを
示す(クラスタ0の場合はビット0、クラスタ1の場合
はビット1)。これらのビットは1サイクルの間アクテ
ィブになり、当該命令をデータを持っているユニットに
向けて送る。 CD146:1サイクル遅延させたC0 142、C1
144ビット。データが取り消された場合、PEQ4
2はCD146を使用してWビット140をリセットす
る。 TID148:必要な命令を供給するGPRのターゲッ
トID。 ・ RB(命令ソースがGPR):U150:フィール
ドが有効かどうかを示す。 W152:RBフィールドにデータが入っているかどう
かを示す(RBを使用しない場合、このビットはディス
パッチ時に1に設定される)。 C0 154、C1 156:オペランドがクラスタの
うちの後続ユニットで実行される命令に依存することを
示す(クラスタ0の場合はビット0、クラスタ1の場合
はビット1)。これらのビットは1サイクルの間アクテ
ィブになり、当該命令をデータを持っているユニットに
向けて送る。 CD158:1サイクル遅延させたC0 154、C1
156ビット。データが取り消された場合、PEQ4
2はCD158を使用してWビット152をリセットす
る。 TID160:必要な情報を供給するGPRのターゲッ
トID。 ・ DPTR162:当該命令に依存する命令を含む項
目を指すポインタ。T130ビットがアクティブのとき
に有効である。
【0029】図4には、PEQ42の各項目の状態を指
定する上述の個々のビットの組み合わせである以下のP
EQ42命令状態標識も図示されている。 ・ Ci(0)164:命令が後続ユニット48で実行
されている命令に依存することを示す。このビットは2
つのオペランドのC0ビット142、154の「OR」
である。 ・ Ci(1)166:命令が後続ユニット52で実行
されている命令に依存することを示す。このビットは、
2つのオペランドのC1ビット144、156の「O
R」である。 ・ RV168:命令が実行可能状態であることを示
す。このビットは2つのオペランド使用可能ビットW1
40、W152と、待ち行列項目有効ビットV126
と、2つのCビット164、166との組み合わせであ
る(命令は、両方の後続ユニットで生成されるオペラン
ドに依存している場合は実行可能状態ではないことに留
意されたい)。 ・ Li165:命令がロードであることを示す。 ・ Ti167:命令が依存対命令のターゲット命令で
あり、依存命令ではないことを示す。 ・ Di169:命令が依存対命令の依存命令であるこ
と示す。
【0030】古いものから順に(IQ0からIQ4の
順)IQ40からディスパッチされた命令は、PEQ有
効ビットV126で示された最下位空き場所に入れられ
る。待ち行列内項目数が6のPEQ42内のすべての項
目の順序は、図5に示すビット優先順位配列170によ
ってマークされる。「n o m」という各ビットによ
って、項目nが項目mより古いことが示される。項目0
172は5ビット(001から005まで)あり、項
目1 174は4ビット(102から105まで)あ
り、以下同様である。
【0031】命令がディスパッチされると、PEQ42
を走査して既存の命令が入っていないか調べ、PEQ4
2内の他の命令を基準にした命令のエージを示すように
優先順位配列170が設定される。
【0032】ディスパッチされた命令はそれらの命令相
互及びPEQ42内の既存の命令と照らして照合され、
対にすることができるかどうかを判断する。命令は、そ
のソース・オペランドがディスパッチ済みまたはPEQ
42に入っているそれより古い命令の結果であり(TI
Dを使用してインタロックを判断する)、より古い命令
がロードでない場合、そのより古い命令と対にすること
ができる。
【0033】ディスパッチされた命令が前の命令に依存
することがわかった場合、その依存命令のPEQ位置が
ターゲット命令と共に図4のDPTR162フィールド
に保管される。ターゲット命令のTビット130が設定
され、依存命令のDビット132が設定される。同じタ
ーゲット命令に複数の命令が依存する場合、最も古い依
存命令だけがそのターゲット命令と対にすることができ
る。命令の2つのソースが2つの異なる命令に依存する
場合、依存命令のRAソースについてのみ「ペアリン
グ」が行われる。命令の対のターゲットが発行され、依
存命令は発行されない場合(すなわち後続ユニットが使
用可能でない場合)、依存オペランドのDビット132
がリセットされる。これによって、依存命令は次のサイ
クルで独立命令になることができる。
【0034】PEQ42内の各ソース・オペランドはそ
れに付随するW(書込み済み)ビット140、152を
持ち、そのオペランドのデータが使用可能かどうかを示
す。Wビット140、152は、GPRにデータが入っ
ている場合、命令がソースを必要としない場合、または
ディスパッチするソースがそのサイクル中にブロードキ
ャストされるいずれかのTIDと一致する場合、ディス
パッチ時に設定される。その項目が依存対のうちの依存
命令である場合、依存ソースは実行可能状態としてマー
クされる。
【0035】最も速い結果バス上に結果が現れる1サイ
クル前に、その結果に付随するTIDがPEQ42にブ
ロードキャストされる。これはPEQ42内のすべての
ソースTIDと比較される。一致するものがある場合、
そのソース・フィールドのWビット140、152が設
定される。Wビット140、152が設定された場合、
そのビットは新しい項目によって上書きされる(待ち行
列内のより古い命令が発行または取消しされている)ま
で設定されたままになっている。また、Wビットは、ユ
ニットによって生成されると思われる対応するデータが
有効でない場合(すなわちキャッシュ・ミス条件)にも
リセットされる。
【0036】PEQ項目が有効(V=1)であり、異な
るクラスタで実行されている命令に依存せず、依存対の
うちの依存命令ではなく2つのソース・オペランドが使
用可能状態(W=1)であるか、または依存対のうちの
依存命令であってその命令の独立ソース・オペランドと
その命令が依存する命令とが実行可能状態である場合、
PEQ項目は実行ユニット46、48、50、52のう
ちの1つにディスパッチできる状態にある。これは、D
PTR162にそれに依存する命令を指定させておき、
依存ソースのWビット140、152を無条件に設定す
ることによって行う。
【0037】各ソース・オペランドも2ビットのCフィ
ールド142、144、または154、156を持ち、
当該オペランドのためのデータを生成するクラスタ内の
後続ユニットがある場合にそのユニットを示す。Cフィ
ールド142、144、または154、156は、ソー
ス・オペランドTID148、160と、それに対応す
る後続ユニットからのブロードキャストTIDとの一致
の結果としてWビット140、152が設定されると設
定される。
【0038】図5に示すように、各項目内の命令のR
V、Ci、Li、Ti、Di状態標識を調べることによ
って、PEQ42内の実行可能命令が分類されバケット
に入れられる。図7に、様々なバケット・タイプを示
す。バケットは以下の通りである。 ・ タイプA180(Ci=00、Li=0、Ti=
0) いずれかのクラスタ内の先行または後続ユニットに送る
ことができ、依存対命令のターゲットではない命令が入
る。 ・ タイプB182(Ci=10、Li=0、Ti=
0) クラスタ0内のみの先行または後続ユニットに送ること
ができ、依存対命令のターゲットではない命令が入る。 ・ タイプC184(Ci=10、Li=0、Ti=
1) クラスタ0内のみの先行または後続ユニットに送ること
ができ、依存対命令のターゲットである命令が入る。 ・ タイプD18G(Ci=01、Li=0、Ti=
0) クラスタ1内のみの先行または後続ユニットに送ること
ができ、依存対命令のターゲットではない命令が入る。 ・ タイプE188(Ci=01、Li=0、Ti=
1) クラスタ1内のみの先行または後続ユニットに送ること
ができ、依存対命令のターゲットである命令が入る。 ・ タイプF190(Ci=00、Li=0、Ti=
1) いずれかのクラスタ内の先行または後続ユニットに送る
ことができ、依存対命令のターゲットである命令が入
る。 ・ タイプG192(Ci=00、Li=1、Di=
0) いずれかのクラスタ内の後続ユニットに送ることがで
き、依存対命令の依存命令ではない命令が入る。 ・ タイプH194(Ci=10、Li=1、Di=
0) クラスタ0内の後続ユニットにのみ送られ、依存対命令
の依存命令ではない命令が入る。 ・ タイプC"196(Ci=x0、Li=x、Di=
1) そのターゲットがグループCに入っている依存命令が入
る。 ・ タイプI198(Ci=01、Li=1、Di=
0) クラスタ1内の後続ユニットのみに送られ、依存対命令
の依存命令ではない命令が入る。 ・ タイプE'200(Ci=0x、Li=x、Di=
1) そのターゲットがグループEに入っている依存命令が入
る。 ・ タイプF'202(Ci=00、Li=x、Di=
1) そのターゲットがグループFに入っている依存命令が入
る。
【0039】図5及び図6に、PEQ42から固定小数
点ユニット44に発行する命令を選択するプロセスを示
す。このプロセスは以下の3つのステップから成る。 ・ バケット分類176:実行可能命令(Rv=1)を
適切なバケット180〜202にグループ化する(図7
参照)。 ・ エージ優先順位づけ178:各バケット内の実行可
能命令(RV=1)の相対エージを計算する。これは、
優先順位配列ラッチ170を調べ、その命令が入ってい
るPEQ項目を指すポインタを生成することによって行
う。たとえば、Fバケット内の最も古い実行可能命令が
PEQ42の項目番号3に入っている場合、マルチプレ
クサ500のF1入力の値は3になる。 ・ バケット選択177、179:バケット内の実行可
能命令の数をカウントし、マルチプレクサ500、50
2、504、506に送る選択制御信号を生成する。こ
れは、バケット内の命令数をカウントし、そのカウント
を調べて選択制御信号を生成することによって行う。た
とえば、Fバケット内に命令が1つ入っており、Eバケ
ット内に命令が少なくとも1つ入っており、Gバケット
に命令が2つ入っており、その他のバケットには命令が
入っていない場合、マルチプレクサ500に送られる制
御信号によって入力F1が選択され、マルチプレクサ5
02への制御信号によって入力Eが選択され、マルチプ
レクサ504への制御信号によって入力G1が選択さ
れ、マルチプレクサ506への制御信号によって入力G
2が選択される。
【0040】図7にバケットの分類を示す。各バケット
内のエージ優先順位付けは縦方向(各パケットについて
上から下の順)に示されている。図8に、論理選択表を
示す。各列には、各実行ユニット46、48、50、5
2の候補が入っており、文字は各実行ユニット46、4
8、50、52に割り当てられた命令バケットを示し、
数字は特定のバケット内の命令の相対エージを示す。各
列ごとに1つの命令しか選択できない。選択の優先順位
は左から右、上から下である。たとえば、クラスタ0内
の先行ユニット46のためにA1(この表記はバケット
A内で最も古い命令を指す)が選択された場合、クラス
タ1の先行ユニット50のためにバケットAからA2し
か選択することができない。
【0041】各バケット内の最大命令数は実行ユニット
数と一致していることが好ましい。たとえば、バケット
A(図7の180)は4つの実行ユニット46、48、
50、52のいずれかに送ることができる命令を4命令
持っているのに対し、バケットC(図7の184)は2
命令しか持っていないが、これは2つの実行ユニット4
6、48しか持っていないクラスタ0に命令を送らなけ
ればならないためである。こうすることによって、本発
明は「深い」PEQ、すなわち実行ユニット数より多い
項目数を有するPEQの実現を可能にすると同時に、各
バケット内の扱いやすい命令数に合わせて選択プロセス
を制限することができる。
【0042】命令が発行され実行されるとき、PEQ4
2内の状態ビットが動的に変化し、異なる相対エージを
持つ異なるバケットに命令が動的に再割当てされること
に留意されたい。これは、発行済み優先順位競合などと
の実行時の命令相互作用(すなわちサイクル3内の命令
18)、実行中に遅延を引き起こす条件(キャッシュ・
ミス、マルチサイクル演算)、予測誤り分岐命令、また
は割込みによって発生する。また、ストア命令と分岐命
令はそれぞれの待ち行列に対して発行され、PEQ42
には入れられないことにも留意されたい。
【0043】次に図10を参照すると、GPR801の
構造が図示されている。GPR801は32項目配列で
あり、TID802とデータ803が入っている。TI
D802は、ターゲットGPRを設定する命令がIQ4
0からディスパッチされる時点で各ターゲットGPRに
割り当てられる固有のタグである。TIDはディスパッ
チ時にターゲットGPR項目に書き込まれる。ディスパ
ッチ時に、TID802はディスパッチ命令にも割り当
てられ、その命令がCPUを通るときに命令に加えてタ
グ付けされる。GPRを設定する命令が実行され、デー
タが送り戻されてGPR配列801に書き込まれると、
ターゲットGPR場所にあるTID802が命令のTI
Dと比較される。2つのTIDが一致する場合、データ
803をGPR配列に書き込むことができる。このプロ
セスによって、GPRを設定する最も若い命令だけがG
PR場所を更新することができるように保証される。G
PRを使用するディスパッチ命令は、GPR配列801
を読み取ってそのGPRのデータ803またはTID8
02を入手する。ディスパッチ時にデータ803が使用
可能でない場合、ソースGPRのTIDに、データを必
要とする命令によるタグが付けられる。GPRを設定す
る命令が実行されるとき、その命令はそのTIDをPE
Q42内の他の命令にブロードキャストする。このブロ
ードキャストされたTIDはPEQ42内のすべてのソ
ースTIDと比較され、それによって実行中の命令に依
存する命令がデータを獲得して実行ステージに進むこと
ができるようになる。
【0044】図10に示す例は、最新の命令のTIDが
GPR801に書込みを行う様子を示している。たとえ
ば、TID1及びTID4を持つ命令が両方ともGPR
1に書き込むとすると、TID4を持つ命令がディスパ
ッチされた後、GPR1に関連づけられたTIDは4で
ある。
【0045】図9に、PEQ42によって1つの依存命
令をターゲット命令と対にするプロセスを示す。これら
のステップは、ディスパッチされる命令ごとに繰り返さ
れる。これらの順次プロセスは例示に過ぎないことに留
意されたい。実際の実施態様ではこれらのステップの1
つまたは複数のステップを並列して行うことができる。
ペアリングは適格な命令に対して行われる。ペアリング
に適格な命令とは、その命令のソース・オペランドの1
つがより古い命令の結果であり、そのより古い命令がロ
ード命令ではなく、そのより古い命令がまだ他の命令と
対にされていない命令である。命令の両方のソースが異
なるターゲット命令に依存する場合、RAソース・オペ
ランドだけを使用してペアリングを決定する。
【0046】ステップ701で、IQ40からPEQ4
2にディスパッチされた命令のグループ内で、より新し
い命令のGPRソース・ポインタ(RA、RB GP
R)をより古い命令のGPRターゲット・ポインタ(R
T GPR)と比較する。一致する場合(ステップ70
2)、ステップ703で、最も若いターゲット命令が最
も古い依存命令と対にされる。ターゲット命令がPEQ
42に入れられるとき、そのDPTR162フィールド
が、依存命令を入れるPEQ42内場所を指すように設
定され、Tビット130が設定される。依存命令がPE
Q42に入れられるとき、その各ソース・オペランドの
Dビット32が設定される。
【0047】ほぼステップ701と同時に、ステップ7
04を行うことができ、IQ40からPEQ42にディ
スパッチされる命令のGPRソース・ポインタ(RA、
RBGPR)が、PEQ42内にすでに入っている命令
のGPRターゲット・ポインタ(RT GPR)と比較
される。ステップ705で一致するものがある場合、ス
テップ706で、ディスパッチされる最も古い命令がP
EQ42内の最も若いターゲット命令と対にされる。依
存命令がディスパッチされたどの命令とも対にされない
場合、依存命令がPEQ42に入れられるときにそのP
EQ42内場所がターゲット命令のDPTR162フィ
ールドに保管される。このステップは、TIDを入手
し、比較を行い、次いでDPTRを計算するためにGP
Rにアクセスするサイクル抑止プロセスを回避するため
に行う。
【0048】以下の結果として、ステップ704で一致
するポインタが複数生じる場合がある。 ・ IQ40からディスパッチされた複数の命令がPE
Q42内の同じターゲット命令に依存する。 例: ディスパッチ命令: Add1(3)<−−(1),(2) より古い Add2(4)<−−(1),(6) より若い PEQ42内の命令:Add0(1)<−−(7),(8) この例では、「Add1」と「Add2」の両方がGP
R1を使用する。両方の命令が同じサイクルにディスパ
ッチされ、「Add2」は「Add1」より若い。RE
Q42内の「Add0」によってGPR1が設定され
る。ディスパッチ命令がPEQ42に入れられるとき
に、「Add0」のDPTRは、最も古いディスパッチ
命令すなわち「Add1」のPEQポインタが入るよう
に設定される。 ・ ディスパッチされた命令がPEQ42内の複数のタ
ーゲット命令に依存する。 例: ディスパッチ命令: Add2(3)<−−(1),(6) PEQ42内の命令:Add0(1)<−−(7),(8) より古い Add1(1)<−−(9),(10)より若い この例では、「Add0」と「Add1」の両方がGP
R1を設定する。両方の命令はPEQ42に入ってお
り、「Add0」は「Add1」より古い。ディスパッ
チされた命令「Add2」はGPR1を使用する。ステ
ップ704で、命令「Add2」について2つのヒット
が発生する。優先順位配列170にアクセスしてどちら
のヒットがPEQ42内の最も若い命令のヒットである
かを判断する。この例ではこれは命令「Add1」であ
る。「Add2」がPEQ42に入れられるとき、PE
Q42内で最も若いヒットすなわち「Add1」のDP
TRは、「Add2」のPEQポインタが入るように設
定される。
【0049】ステップ704と同時に、ステップ707
でGPR配列(図10を参照)にアクセスしてディスパ
ッチされた命令のソース・オペランドのTIDを入手す
る。これらのTIDを、PEQ42内の命令のTID
(RT TID)と比較する。一致があれば(ステップ
708)、上記のステップで入手したDPTRが正しい
ことが保証される。最も古い依存命令がPEQ42に入
れられるとき、それに対応するソースDビット132が
設定される。
【0050】ステップ707は、ステップ704で一致
が発生したターゲット命令がCPUで最も若いターゲッ
トであるように保証するために必要である。
【0051】たとえば、以下の3つの命令を考えてみ
る。 Add0(1)<−−(6),(7) 最も古い Add1(1)<−−(8),(9) Add2(4)<−−(1),(6) 最も若い
【0052】「Add0」と「Add1」がディスパッ
チされ、何らかの理由で「Add1」が実行されてPE
Q42から除去された。「Add0」はPEQ42内に
残っているのに対し、「Add2」はディスパッチされ
る。ステップ704で一致するものがあることが示さ
れ、ステップ706でPEQ42内の「Add2」を指
す「Add0」のDPTRが生じる。しかし、「Add
2」がディスパッチ時にGPRにアクセスするとき、G
PR1に付随するTIDは「Add0」のTIDとは異
なる「Add1」のTIDである。ステップ707では
一致は発生せず、したがって「Add0」のTビットと
「Add2」のDビットは設定されない。TビットとD
ビットが設定されないことによって、「Add0」と
「Add2」が命令の対とみなされないようになる。
【0053】DPTRの計算には、タグを比較し、その
比較を使用して優先順位配列にアクセスしてターゲット
命令のエージ(最も若い)を判断する必要がある。その
結果、比較で使用されるタグは(GPRのTIDではな
く)GPRポインタ自体である。DビットとTビットの
設定には、最も若いターゲットを見つけるために優先順
位配列にアクセスする必要がない(TID比較の際の一
致によって、一致したターゲット命令が最も若い命令で
あることが保証される。
【0054】PEQ42は発行する命令を選択すると
き、他の制御ビット(図示せず)と共にD132、T1
30、及びDPTR162ビットを調べて対を選択すべ
きかどうかを判断する。この実施態様のPEQ発行アル
ゴリズムは前述の通りである。
【0055】ステップ705と708のいずれでも一致
が発生しない場合、プロセスはステップ710に進み、
命令はペアリングに適格ではないことになる。
【0056】命令のD132ビットとT130ビットは
両方ともアクティブとなることができる。ターゲット命
令が発行されるが依存命令は発行されない場合、依存命
令のD132ビットはリセットされる。D132ビット
とT130ビットの両方がアクティブな命令の場合、そ
のD132ビットがリセットされ、次に動的に命令の対
のターゲットになる。このペアリング・アルゴリズム
は、ディスパッチされる命令をそれらの命令相互及びP
EQ42内に残っている命令と照合して対にする。この
アルゴリズムによって、命令を対にするには命令が互い
に隣接または近接していなければならないという制約が
なくなる。
【0057】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0058】(1)データ処理システムにおいて命令を
ディスパッチする方法であって、第1の命令が第2の命
令に依存するかどうかを判断するステップと、第1の命
令と第2の命令が連続したアドレスを持っていることも
持っていないことも可能な、ディスパッチのために第1
の命令と第2の命令を対にするステップとを含む方法。 (2)判断ステップが、第1の命令のオペランドが第2
の命令の結果に依存するかどうかを判断するステップを
さらに含む、上記(1)に記載の方法。 (3)第1の命令と第2の命令が、命令待ち行列から実
行前待ち行列に転送される命令のグループに含まれる、
上記(1)に記載の方法。 (4)第1の命令が命令待ち行列から実行前待ち行列に
転送され、第2の命令が実行前待ち行列にすでに入って
いる、上記(1)に記載の方法。 (5)判断ステップが、第1の命令の汎用レジスタ・ソ
ース・ポインタを第2の命令の汎用レジスタ・ターゲッ
ト・ポインタと比較するステップをさらに含む、上記
(3)に記載の方法。 (6)ソース・ポインタとターゲット・ポインタとの間
に一致がある場合、(1)第2の命令を第1の命令とリ
ンクし、(2)第1の命令をターゲット命令としてマー
クし、(3)第2の命令を依存命令としてマークする、
上記(5)に記載の方法。 (7)判断ステップが、第1の命令の汎用レジスタ・ソ
ース・ポインタを第2の命令の汎用レジスタ・ターゲッ
ト・ポインタと比較するステップをさらに含む、上記
(4)に記載の方法。 (8)ソース・ポインタとターゲット・ポインタとの間
に一致がある場合、第2の命令を第1の命令とリンクす
る、上記(7)に記載の方法。 (9)ソース・ポインタとターゲット・ポインタとの間
に一致がある場合、第1の命令を実行前待ち行列に入れ
るときに第1の命令を第2の命令とリンクするステップ
をさらに含む、上記(7)に記載の方法。 (10)判断ステップが、第1の命令に付随するタグを
第2の命令に付随するタグと比較するステップをさらに
含む、上記(4)に記載の方法。 (11)判断ステップが、第1の命令の汎用レジスタ・
ソース・ポインタを第2の命令の汎用レジスタ・ターゲ
ット・ポインタと比較するステップと、第1の命令に付
随するタグを第2の命令に付随するタグと比較するステ
ップとをさらに含む、上記(4)に記載の方法。 (12)命令待ち行列と、命令待ち行列に結合された実
行前待ち行列と、実行前待ち行列に結合された実行クラ
スタと、第1の命令と第2の命令が命令待ち行列から実
行前待ち行列に転送される命令のグループに含まれる、
第1の命令のオペランドが第2の命令の結果に依存する
かどうかを判断する回路と、第1の命令の汎用レジスタ
・ソース・ポインタが第2の命令の汎用レジスタ・ター
ゲット・ポインタと一致する場合、第1の命令と第2の
命令を実行クラスタにディスパッチするために対にする
回路とを含むプロセッサ。 (13)第1の命令のオペランドが、実行前待ち行列に
すでに入っている第3の命令の結果に依存するかどうか
を判断する回路と、第1の命令の汎用レジスタ・ソース
・ポインタが第3の命令の汎用レジスタ・ターゲット・
ポインタと一致する場合、第1の命令と第3の命令を実
行クラスタにディスパッチするために対にする回路とを
さらに含む、上記(12)に記載のプロセッサ。 (14)ソース・ポインタとターゲット・ポインタとの
間に一致がある場合、第2の命令を第1の命令とリンク
する、上記(12)に記載のプロセッサ。 (15)第1の命令が第2の命令と対にされていない場
合、第1の命令を第3の命令と対にする、上記(13)
に記載のプロセッサ。 (16)ソース・ポインタとターゲット・ポインタとの
間に一致がある場合、第2の命令に付随するフィールド
を第1の命令が入ることになる実行前待ち行列内の場所
を指すように設定する、上記(13)に記載のプロセッ
サ。 (17)第3の命令がロード命令ではない場合、第1の
命令が第3の命令と対にされる、上記(15)に記載の
プロセッサ。 (18)バス・システムによって入力装置と出力装置と
メモリ装置とに結合されたプロセッサを含み、前記プロ
セッサが、命令待ち行列と、命令待ち行列に結合された
実行前待ち行列と、実行前待ち行列に結合された実行ク
ラスタと、第1の命令のオペランドが第2の命令の結果
に依存するかどうかを判断する手段と、第1の命令と第
2の命令が連続したアドレスを持っていることも持って
いないこともある、第1の命令と第2の命令を実行クラ
スタにディスパッチするために対にする手段とをさらに
含む、データ処理システム。 (19)第1の命令と第2の命令が命令待ち行列から実
行前待ち行列に転送される命令のグループに含まれる、
上記(18)に記載のシステム。 (20)第1の命令が命令待ち行列から実行前待ち行列
に転送され、第2の命令がすでに実行前待ち行列に入っ
ている、上記(18)に記載のシステム。 (21)判断手段が、第1の命令の汎用レジスタ・ソー
ス・ポインタを第2の命令の汎用レジスタ・ターゲット
・ポインタと比較する手段をさらに含む、上記(19)
に記載のシステム。 (22)ソース・ポインタとターゲット・ポインタとの
間に一致がある場合、第2の命令に付随するフィールド
を、第1の命令が入ることになる実行前待ち行列内の場
所を指すように設定する、上記(21)に記載のシステ
ム。 (23)判断手段が、第1の命令の汎用レジスタ・ソー
ス・ポインタを第2の命令の汎用レジスタ・ターゲット
・ポインタと比較する手段をさらに含む、上記(20)
に記載のシステム。 (24)ソース・ポインタとターゲット・ポインタとの
間に一致がある場合、第2の命令に付随するフィールド
を、第1の命令が入ることになる実行前待ち行列内の場
所を指すように設定する、上記(23)に記載のシステ
ム。 (25)判断手段が、タグが第1の命令と第2の命令に
付随する汎用レジスタを識別する、第1の命令に付随す
るタグを第2の命令に付随するタグと比較する手段をさ
らに含む、上記(20)に記載のシステム。
【図面の簡単な説明】
【図1】本発明を実施する情報処理システムのブロック
図である。
【図2】命令待ち行列と実行前待ち行列と固定小数点ユ
ニットの高水準図を含む、本発明を実施するシステムの
アーキテクチャを示すブロック図である。
【図3】命令をディスパッチする装置のブロック図であ
る。
【図4】命令とそれに付随する状況ビットを示す図であ
る。
【図5】命令を分類する装置のブロック図である。
【図6】命令を分類する装置のブロック図である。
【図7】図5の装置が行う分類の論理シーケンスを示す
図である。
【図8】図6の論理シーケンスで使用する論理選択表を
示す図である。
【図9】本発明による流れ図である。
【図10】GPRの構造を示す図である。
【符号の説明】
2 中央処理装置 4 システム・バス 6 ランダム・アクセス・メモリ 8 読取り専用メモリ 10 入出力アダプタ 16 ユーザ・インタフェース・アダプタ 26 通信アダプタ 28 ディスプレイ・アダプタ 40 命令待ち行列 42 実行前待ち行列 44 固定小数点ユニット 41 分岐ユニット 43 比較ユニット 45 ストア・ユニット 47 浮動小数点ユニット 46 実行ユニット 58 ラッチ 64 ラッチ 80 マルチプレクサ 92 マルチプレクサ 100 バス 108 マルチプレクサ 170 優先順位配列

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】データ処理システムにおいて命令をディス
    パッチする方法であって、第1の命令が第2の命令に依
    存するかどうかを判断するステップと、 第1の命令と第2の命令が連続したアドレスを持ってい
    ることも持っていないことも可能な、ディスパッチのた
    めに第1の命令と第2の命令を対にするステップとを含
    む方法。
  2. 【請求項2】判断ステップが、 第1の命令のオペランドが第2の命令の結果に依存する
    かどうかを判断するステップをさらに含む、請求項1に
    記載の方法。
  3. 【請求項3】第1の命令と第2の命令が、命令待ち行列
    から実行前待ち行列に転送される命令のグループに含ま
    れる、請求項1に記載の方法。
  4. 【請求項4】第1の命令が命令待ち行列から実行前待ち
    行列に転送され、第2の命令が実行前待ち行列にすでに
    入っている、請求項1に記載の方法。
  5. 【請求項5】判断ステップが、 第1の命令の汎用レジスタ・ソース・ポインタを第2の
    命令の汎用レジスタ・ターゲット・ポインタと比較する
    ステップをさらに含む、請求項3に記載の方法。
  6. 【請求項6】ソース・ポインタとターゲット・ポインタ
    との間に一致がある場合、(1)第2の命令を第1の命
    令とリンクし、(2)第1の命令をターゲット命令とし
    てマークし、(3)第2の命令を依存命令としてマーク
    する、請求項5に記載の方法。
  7. 【請求項7】判断ステップが、 第1の命令の汎用レジスタ・ソース・ポインタを第2の
    命令の汎用レジスタ・ターゲット・ポインタと比較する
    ステップをさらに含む、請求項4に記載の方法。
  8. 【請求項8】ソース・ポインタとターゲット・ポインタ
    との間に一致がある場合、第2の命令を第1の命令とリ
    ンクする、請求項7に記載の方法。
  9. 【請求項9】ソース・ポインタとターゲット・ポインタ
    との間に一致がある場合、第1の命令を実行前待ち行列
    に入れるときに第1の命令を第2の命令とリンクするス
    テップをさらに含む、請求項7に記載の方法。
  10. 【請求項10】判断ステップが、 第1の命令に付随するタグを第2の命令に付随するタグ
    と比較するステップをさらに含む、請求項4に記載の方
    法。
  11. 【請求項11】判断ステップが、 第1の命令の汎用レジスタ・ソース・ポインタを第2の
    命令の汎用レジスタ・ターゲット・ポインタと比較する
    ステップと、 第1の命令に付随するタグを第2の命令に付随するタグ
    と比較するステップとをさらに含む、請求項4に記載の
    方法。
  12. 【請求項12】命令待ち行列と、 命令待ち行列に結合された実行前待ち行列と、 実行前待ち行列に結合された実行クラスタと、 第1の命令と第2の命令が命令待ち行列から実行前待ち
    行列に転送される命令のグループに含まれる、第1の命
    令のオペランドが第2の命令の結果に依存するかどうか
    を判断する回路と、 第1の命令の汎用レジスタ・ソース・ポインタが第2の
    命令の汎用レジスタ・ターゲット・ポインタと一致する
    場合、第1の命令と第2の命令を実行クラスタにディス
    パッチするために対にする回路とを含むプロセッサ。
  13. 【請求項13】第1の命令のオペランドが、実行前待ち
    行列にすでに入っている第3の命令の結果に依存するか
    どうかを判断する回路と、 第1の命令の汎用レジスタ・ソース・ポインタが第3の
    命令の汎用レジスタ・ターゲット・ポインタと一致する
    場合、第1の命令と第3の命令を実行クラスタにディス
    パッチするために対にする回路とをさらに含む、請求項
    12に記載のプロセッサ。
  14. 【請求項14】ソース・ポインタとターゲット・ポイン
    タとの間に一致がある場合、第2の命令を第1の命令と
    リンクする、請求項12に記載のプロセッサ。
  15. 【請求項15】第1の命令が第2の命令と対にされてい
    ない場合、第1の命令を第3の命令と対にする、請求項
    13に記載のプロセッサ。
  16. 【請求項16】ソース・ポインタとターゲット・ポイン
    タとの間に一致がある場合、第2の命令に付随するフィ
    ールドを第1の命令が入ることになる実行前待ち行列内
    の場所を指すように設定する、請求項13に記載のプロ
    セッサ。
  17. 【請求項17】第3の命令がロード命令ではない場合、
    第1の命令が第3の命令と対にされる、請求項15に記
    載のプロセッサ。
  18. 【請求項18】バス・システムによって入力装置と出力
    装置とメモリ装置とに結合されたプロセッサを含み、前
    記プロセッサが、 命令待ち行列と、 命令待ち行列に結合された実行前待ち行列と、 実行前待ち行列に結合された実行クラスタと、 第1の命令のオペランドが第2の命令の結果に依存する
    かどうかを判断する手段と、 第1の命令と第2の命令が連続したアドレスを持ってい
    ることも持っていないこともある、第1の命令と第2の
    命令を実行クラスタにディスパッチするために対にする
    手段とをさらに含む、データ処理システム。
  19. 【請求項19】第1の命令と第2の命令が命令待ち行列
    から実行前待ち行列に転送される命令のグループに含ま
    れる、請求項18に記載のシステム。
  20. 【請求項20】第1の命令が命令待ち行列から実行前待
    ち行列に転送され、第2の命令がすでに実行前待ち行列
    に入っている、請求項18に記載のシステム。
  21. 【請求項21】判断手段が、第1の命令の汎用レジスタ
    ・ソース・ポインタを第2の命令の汎用レジスタ・ター
    ゲット・ポインタと比較する手段をさらに含む、請求項
    19に記載のシステム。
  22. 【請求項22】ソース・ポインタとターゲット・ポイン
    タとの間に一致がある場合、第2の命令に付随するフィ
    ールドを、第1の命令が入ることになる実行前待ち行列
    内の場所を指すように設定する、請求項21に記載のシ
    ステム。
  23. 【請求項23】判断手段が、 第1の命令の汎用レジスタ・ソース・ポインタを第2の
    命令の汎用レジスタ・ターゲット・ポインタと比較する
    手段をさらに含む、請求項20に記載のシステム。
  24. 【請求項24】ソース・ポインタとターゲット・ポイン
    タとの間に一致がある場合、第2の命令に付随するフィ
    ールドを、第1の命令が入ることになる実行前待ち行列
    内の場所を指すように設定する、請求項23に記載のシ
    ステム。
  25. 【請求項25】判断手段が、 タグが第1の命令と第2の命令に付随する汎用レジスタ
    を識別する、第1の命令に付随するタグを第2の命令に
    付随するタグと比較する手段をさらに含む、請求項20
    に記載のシステム。
JP06637598A 1997-03-26 1998-03-17 命令をディスパッチする方法、プロセッサ及びデータ処理システム Expired - Fee Related JP3335306B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/827076 1997-03-26
US08/827,076 US5963723A (en) 1997-03-26 1997-03-26 System for pairing dependent instructions having non-contiguous addresses during dispatch

Publications (2)

Publication Number Publication Date
JPH10275078A true JPH10275078A (ja) 1998-10-13
JP3335306B2 JP3335306B2 (ja) 2002-10-15

Family

ID=25248254

Family Applications (1)

Application Number Title Priority Date Filing Date
JP06637598A Expired - Fee Related JP3335306B2 (ja) 1997-03-26 1998-03-17 命令をディスパッチする方法、プロセッサ及びデータ処理システム

Country Status (2)

Country Link
US (1) US5963723A (ja)
JP (1) JP3335306B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
JP2007293842A (ja) * 2006-04-25 2007-11-08 Internatl Business Mach Corp <Ibm> アウトオブオーダー発行待ち行列中の依存命令をバックツーバックに発行する方法及び装置
JP2007328484A (ja) * 2006-06-07 2007-12-20 Univ Of Tokyo プロセッサ
JP2015518995A (ja) * 2012-06-05 2015-07-06 クアルコム,インコーポレイテッド レジスタ関連優先度に基づく実行パイプラインへの命令の発行、ならびに関係する命令処理回路、プロセッサシステム、方法、およびコンピュータ可読媒体

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060129764A1 (en) * 2004-12-09 2006-06-15 International Business Machines Corporation Methods and apparatus for storing a command
US7921279B2 (en) * 2008-03-19 2011-04-05 International Business Machines Corporation Operand and result forwarding between differently sized operands in a superscalar processor
US20160170770A1 (en) * 2014-12-12 2016-06-16 Qualcomm Incorporated Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
DE68928113T2 (de) * 1988-04-01 1997-10-09 Nippon Electric Co Reihenfolgesteuersystem zur Behandlung von Befehlen
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
DE69130588T2 (de) * 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5163139A (en) * 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
JP2683488B2 (ja) * 1992-06-30 1997-11-26 インターナショナル・ビジネス・マシーンズ・コーポレイション 3−1論理演算装置
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
US7127591B2 (en) 1998-12-17 2006-10-24 Fujitsu Limited Instruction control device and method therefor
US7275146B2 (en) 1998-12-17 2007-09-25 Fujitsu Limited Instruction control device and method therefor
US7313674B2 (en) 1998-12-17 2007-12-25 Fujitsu Limited Instruction control device and method therefor
JP2007293842A (ja) * 2006-04-25 2007-11-08 Internatl Business Mach Corp <Ibm> アウトオブオーダー発行待ち行列中の依存命令をバックツーバックに発行する方法及び装置
JP2007328484A (ja) * 2006-06-07 2007-12-20 Univ Of Tokyo プロセッサ
JP2015518995A (ja) * 2012-06-05 2015-07-06 クアルコム,インコーポレイテッド レジスタ関連優先度に基づく実行パイプラインへの命令の発行、ならびに関係する命令処理回路、プロセッサシステム、方法、およびコンピュータ可読媒体
US9858077B2 (en) 2012-06-05 2018-01-02 Qualcomm Incorporated Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media

Also Published As

Publication number Publication date
US5963723A (en) 1999-10-05
JP3335306B2 (ja) 2002-10-15

Similar Documents

Publication Publication Date Title
US5809268A (en) Method and system for tracking resource allocation within a processor
US5828874A (en) Past-history filtered branch prediction
US5835745A (en) Hardware instruction scheduler for short execution unit latencies
US5619662A (en) Memory reference tagging
US5864341A (en) Instruction dispatch unit and method for dynamically classifying and issuing instructions to execution units with non-uniform forwarding
JPH04230528A (ja) ディジタルコンピュータシステム
US6308260B1 (en) Mechanism for self-initiated instruction issuing and method therefor
JPH07281896A (ja) 情報処理装置
US20050076189A1 (en) Method and apparatus for pipeline processing a chain of processing instructions
US20030182536A1 (en) Instruction issuing device and instruction issuing method
US6393550B1 (en) Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
JPH10124315A (ja) 分岐処理方法およびそのための情報処理装置
KR20020097149A (ko) 종속성 체인을 발행 또는 재발행할 수 있는 스케줄러
US5689674A (en) Method and apparatus for binding instructions to dispatch ports of a reservation station
US6324640B1 (en) System and method for dispatching groups of instructions using pipelined register renaming
EP0482200B1 (en) Interrupt processing system
US5581719A (en) Multiple block line prediction
JP3335306B2 (ja) 命令をディスパッチする方法、プロセッサ及びデータ処理システム
US6240507B1 (en) Mechanism for multiple register renaming and method therefor
US5761474A (en) Operand dependency tracking system and method for a processor that executes instructions out of order
US6378063B2 (en) Method and apparatus for efficiently routing dependent instructions to clustered execution units
US6873184B1 (en) Circular buffer using grouping for find first function
US7080170B1 (en) Circular buffer using age vectors
US5875326A (en) Data processing system and method for completing out-of-order instructions
US20040199749A1 (en) Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080802

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees