JP2002522841A - 異なる待ち時間を伴う命令のスケジューリング - Google Patents

異なる待ち時間を伴う命令のスケジューリング

Info

Publication number
JP2002522841A
JP2002522841A JP2000565456A JP2000565456A JP2002522841A JP 2002522841 A JP2002522841 A JP 2002522841A JP 2000565456 A JP2000565456 A JP 2000565456A JP 2000565456 A JP2000565456 A JP 2000565456A JP 2002522841 A JP2002522841 A JP 2002522841A
Authority
JP
Japan
Prior art keywords
latency
register
expected
issue group
instruction
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
JP2000565456A
Other languages
English (en)
Other versions
JP2002522841A5 (ja
JP3984786B2 (ja
Inventor
グロチョウスキー,エドワード
マルダー,ハンス
リン,ダーリック・シイ
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2002522841A publication Critical patent/JP2002522841A/ja
Publication of JP2002522841A5 publication Critical patent/JP2002522841A5/ja
Application granted granted Critical
Publication of JP3984786B2 publication Critical patent/JP3984786B2/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, 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, 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Abstract

(57)【要約】 装置(30、50)は、パルス(25、27)を生成するクロック(20)および複数の行(14、16、18)および1つまたは複数のポート(12)を有する電子ハードウェア構造(10)を含む。各行(14、16、18)はポート(12)のうち1つのポートを介して書き込まれる別の待ち時間ベクトル(24、26、28)を記録するように構成されている。そこに記録された待ち時間ベクトル(24、26、28)はクロック(20)に応答する。プロセッサ(30、50)内で命令をディスパッチする方法は、クロック・パルス(25、27)に応答して複数の待ち時間をレジスタ待ち時間表(10)の行(14、16、18)の一部に更新し、他の行(14、16、18)に残っている予想される待ち時間を低減することを含む。一部の行(14、16、18)は特定のレジスタ(32、33、34)に対応する。

Description

【発明の詳細な説明】
【0001】 (発明の背景) (1.発明の分野) 本発明は一般にコンピュータおよびプロセッサに関し、より詳細には、異なる
待ち時間を伴う命令をスケジューリングすることに関する。
【0002】 (2.関連技術の説明) プロセッサは、1つまたは複数のメモリ内に格納された命令のシーケンスを検
索し実行する。実行された命令の多くは、前記シーケンスのより先の命令にデー
タ依存性および/または制御依存性を有する。プロセッサは通常、この依存性を
尊重する方法で命令をスケジューリングし実行する。
【0003】 このような依存性の1つは、ソース・オペランドおよび宛先オペランドの使用
可能度に関係する。ソース・オペランドおよび宛先オペランドは命令が読み出す
および書き込む各レジスタ・アドレスであろう。ソース・オペランドは、命令シ
ーケンスのより先の命令が書込みを完了した後、正しいデータが格納されると使
用可能になる。宛先オペランドは、命令シーケンスのより先の命令のすべてがア
ドレスの読出しを完了した後に命令をアドレスへ書き込みできると使用可能にな
る。多くのプロセッサは命令のオペランドが使用可能であると決定されたことに
応じて、命令をスケジューリングし実行する。オペランドの使用可能度を決定す
ることは、各スケジュール・サイクル内で多数のオペランドをチェックしなけれ
ばならない時には、時間を消費し、命令処理を遅らせるであろう。
【0004】 最近のプロセッサは、順次(順序どおり)プロセッサの処理スピードよりスピ
ードを増すための種々の機能を含んでいる。このような機能の1つが推論実行で
ある。推論実行においては、プロセッサは実行の前に依存性に関して予想を決定
し、実行の後にその予想が真であったかどうかをチェックする。予想が間違って
いることが分かった場合、プロセッサは影響を受けた命令を再実行する。推論実
行は依存性に関する予想が正確である時に、決定されていない命令の依存性によ
って起こされる遅延をなくすことができる。いくつかのプロセッサが使用してい
る第2の機能は、スーパースカラ処理である。スーパースカラ処理では、別の入
力ポートを伴ういくつかの実行ユニットがある。スーパースカラ・プロセッサは
、1つのクロック・サイクルの間にいくつかの命令のイシュー・グループをディ
スパッチすることができる。イシュー・グループの各命令は、異なる入力ポート
にディスパッチされる。推論実行およびスーパースカラ処理は一般に、決定され
ない命令の依存性を処理する技法を必要とする。
【0005】 いくつかのプロセッサ・パイプラインをストールし、続く命令を実行する前に
オペランドの使用可能度を解決させる。ストール可能なパイプラインは、ストー
ル制御ネットワークを使用してストールを処理する。ストール制御ネットワーク
は、種々のパイプラインステージからストール・コントローラおよびネットワー
クへ状態信号を送るためのネットワークを含み、ストール・コントローラからパ
イプラインの種々のステージへ「ストール」信号または「アドバンス」信号をブ
ロードキャストする。状態信号はストール・コントローラに、その結果を1つの
ステージから次のステージへ送ってさらに処理できるかどうかを伝える。「アド
バンス」信号によって、たとえば、並列フリップ・フロップのバンクが結果を1
つのステージから次のステージへ送る。受け取りネットワークおよびブロードキ
ャスト・ネットワークはキャパシタンスおよびそれに関連した過渡時間を伴うワ
イヤを使用するので、これらのネットワークは時間遅延を起こし、それがパイプ
ラインステージの間で結果を送るために達成可能な最小の時間を制限する。
【0006】 ストール制御ネットワークの時間遅延は最近のチップではより悪化し、かなり
の物理的な大きさに達し、多くのステージを伴うパイプラインを使用することに
なる。どちらの特性もストール制御ネットワークに必要なワイヤを増加する傾向
があるので、キャパシタンスによって起こされる関連した時間遅延を増加させる
【0007】 ストール・ネットワークがない場合、プロセッサは各ディスパッチ・サイクル
の間1つのイシュー・グループをスケジューリングする必要がある。イシュー・
グループの各命令のオペランドとして現れるレジスタが次のイシュー・グループ
をディスパッチする間の時間に使用可能かどうかをプロセッサが決定しなければ
ならない場合、このようなタイミング要件は達成するのが困難である。これらの
タイミング要件はイシュー・グループの大きさが増大するにつれて達成するのが
さらに困難になる。
【0008】 本発明は上記の1つまたは複数の問題を克服するかまたは少なくともその問題
の影響を削減することに関する。
【0009】 (発明の概要) 本発明の一態様では、装置が提供される。この装置はパルスを生成するクロッ
クと、複数の行および1つまたは複数のポートを有する電子ハードウェア構造を
含む。各行は、ポートのうち1つのポートを介して書き込まれる別の待ち時間ベ
クトルを記録するように構成される。そこに記録された待ち時間ベクトルはクロ
ックに応答する。
【0010】 本発明の別の態様では、プロセッサ内で命令をディスパッチする方法が提供さ
れる。この方法は複数の予想される待ち時間をレジスタ待ち時間表の行の一部で
更新し、他の行に残っている予想される待ち時間をクロック・パルスに応答して
削減することを含む。その部分の行は特定のレジスタに対応する。
【0011】 本発明の他の目的および利点は、次の詳細な説明を読み、図面を参照すると明
らかになろう。
【0012】 (具体的な実施形態の詳細な説明) 本発明の例としての実施形態が次に説明される。明確にするために、本明細書
では実際の実装におけるすべての機能が説明されているわけではない。もちろん
、このような実際の実施形態の開発においては、実装に特有な多くの決定を行っ
て、システム関連の制約や業務関連の制約に従うなど、実装によって変化する開
発者の特有の目的を達成しなければならないことを理解されよう。さらに、この
ような開発努力は複雑で時間のかかるものである場合があるが、この開示から利
点を得られる当業者であれば日常業務の仕事であることを理解されよう。
【0013】 今後、イシュー・グループは、実質的に同時、すなわち同じクロックまたはデ
ィスパッチ・サイクルの間にディスパッチされ実行される命令のグループを意味
する。いくつかの実施形態では、イシュー・グループは命令を1つだけ含む。
【0014】 特定の命令における「実際の待ち時間」は、その特定の命令がレジスタに書き
込むかまたはそこから読み出すかによって異なる。特定の命令がレジスタから読
み出す場合、「実際の待ち時間」は命令シーケンスのより先の命令がレジスタへ
の書込みを実行するための時間と定義される。特定の命令がレジスタに書き込む
場合、「実際の待ち時間」は命令シーケンスのより先の命令がレジスタへの書込
みとそこからの読出しを実行するための時間である。本発明の実施形態は、「予
想される待ち時間」に基づいて各命令をスケジューリングする。本発明の実施形
態は、命令が読出しまたは書込みのどちらを実行する場合でも「予想される待ち
時間」を使用する。
【0015】 本発明の実施形態は、「実際の」レジスタ待ち時間ではなく「予想される」レ
ジスタ待ち時間の決定に基づいて命令をスケジューリングする。「予想される」
レジスタ待ち時間はプロセッサの起動時にゼロにリセットされる。次いで、「予
想される」レジスタ待ち時間は命令タイプに基づいて更新される。たとえば、一
実施形態では、任意のロード命令、任意の整数計算命令、および任意の浮動小数
点計算命令によって書き込まれたレジスタに関して、それぞれ2クロック・パル
ス、1クロック・パルス、5クロック・パルスで予想されるレジスタ待ち時間を
更新する。予想されるレジスタ待ち時間への更新の特定の値は、特定のハードウ
ェア実装態様によって異なり、本発明にとっては本質的ではない。スケジューリ
ングは予想されるレジスタ待ち時間を使用するので、いくつかの実施形態は新し
い命令がスケジューリングされるごとに予想を更新し、他の実施形態は新しい命
令がディスパッチされ実行されるごとに予想を更新する。
【0016】 図1は、命令をスケジューリングして実行するのに使用されるレジスタ待ち時
間表10に関する一実施形態を示す。レジスタ待ち時間表10はいくつかの行1
4、16、18を有する電子ハードウェア構造であり、対応するレジスタ(図示
せず)のバイナリの待ち時間ベクトル、すなわち、レジスタ待ち時間を格納する
。レジスタ待ち時間表10はまた、それぞれそこから待ち時間ベクトルを読み出
し、そこへ待ち時間ベクトルを書き込むための少なくとも1つのポート12を有
する。レジスタ待ち時間表10の各行14、16、18は、クロック20からの
パルスに応答して残りの予想される待ち時間間隔をカウントダウンする、すなわ
ち行14、16、18は、時間内の予想されるレジスタ待ち時間を追跡する。
【0017】 図2は図1のレジスタ待ち時間表10の行14、16、18に関する1つの特
定の実施形態22を示すが、本発明はこのように限定されるものではない。示さ
れた実施形態では各行14、16、18はシフト・レジスタであり、ベクトルを
シフトする、すなわち2で整数除算することによってそこに格納された待ち時間
ベクトルをカウントダウンする。レジスタ待ち時間表10の14、16、18の
各行は、「有限状態マシン」として作用する。「有限状態マシン」は、ハードウ
ェアと1つまたは複数のレジスタの組合せであり、ハードウェアはレジスタ内に
格納された物理量を発展させるように構成されており、たとえば、行14、16
、18は予想されるレジスタ待ち時間を一時的に発展させ、現在の値を反映する
ように構成されている。
【0018】 図2は、図1のレジスタ待ち時間表10の一実施形態において行14、16、
18のうち1つの状態を時間発展させたところを示す。最初の時に、制御論理(
図示せず)はMバイナリ桁のバイナリ待ち時間ベクトル24の並列ロードをシフ
ト・レジスタ内に作成し、Mバイナリ桁を格納する。Nクロック・サイクルの待
ち時間に対応する待ち時間ベクトルは値1を伴うN個の連続する桁および、値0
を有するM−N個の連続する桁を有する。図1のクロック20からの第1のパル
ス25の後、レジスタは1つのバイナリ桁だけ待ち時間ベクトル24をシフトし
、値1を伴うN−1個の連続する桁および、値0を伴うM−N+1個の連続する
桁を有する新しい待ち時間ベクトル26を生成する。図1のクロック20から第
2のパルス27の後、レジスタは別のバイナリ桁だけ待ち時間ベクトル26をシ
フトし、値1を伴うN−2個の連続する桁および、値0を伴うM−N+2個の連
続する桁を有する新しい待ち時間ベクトル28を生成する。Nクロック・サイク
ルの後、待ち時間ベクトル(図示せず)は値0を伴うM桁を含むことになる。図
1のレジスタ待ち時間表10の各行14、16、18は、そこに格納された待ち
時間ベクトルを図1のクロック20の各パルスで1バイナリ桁だけシフトする。
レジスタ待ち時間表10は、予想される待ち時間をシフトすることにより予想さ
れるレジスタ待ち時間を「追跡」し、それによって予想されるレジスタ待ち時間
の残りを格納する。
【0019】 予想されるレジスタ待ち時間の残りは、最後の更新から経過した時間を引いた
後に残る予想されるレジスタ待ち時間である。種々の実施形態は命令を検索する
こと、命令をスケジューリングすること、命令をディスパッチすることに応答し
て、または実行の前の命令処理シーケンス内の別の時間のいずれかで、予想され
るレジスタ待ち時間を更新することができる。
【0020】 別の実施形態は他の方法を使用して、レジスタ待ち時間表10の各行14、1
6、18内の予想されるレジスタ待ち時間の残りを追跡することができる。この
ような一実施形態では、レジスタ待ち時間表の行14、16、18はデクリメン
トするカウンタとして作用する、すなわち、クロック20の各パルスで現在の予
想されるレジスタ待ち時間から1を引く場合がある。行14、16、18は、そ
こに格納された予想される待ち時間を修正して現在の物理値を反映する「有限状
態マシン」として作用する。
【0021】 図3は、図1のレジスタ待ち時間表10を使用して命令のディスパッチをスケ
ジューリングし実行するプロセッサ30の一部を示す。プロセッサ30は複数の
内部レジスタ32、33、34を含み、命令によって読み出されおよび書き込ま
れるデータを格納する。レジスタ32、33、34はレジスタ・ファイル36を
形成する。いくつかの実施形態では、レジスタ待ち時間表10およびレジスタ・
ファイル36は、同じ数の読出しポート12、37および同じ数の書込みポート
12、37を有する。レジスタ待ち時間表10の各行14、16、18は、レジ
スタ32、33、34のうち1つに関して静的待ち時間ベクトルを格納する。レ
ジスタ待ち時間表10およびレジスタ・ファイル36は両方とも、内部レジスタ
32、34、36のそれぞれに関して1つの行を有する。プロセッサ30は複数
の実行ユニット46、48を有する。プロセッサ30は、その中に命令があるレ
ジスタ32、33、34が使用可能になると予想される時間においてまたはその
時間の後に、すなわち、レジスタ待ち時間表10の待ち時間ベクトルによって決
定されたように、実行ユニット46、48にディスパッチされるべき命令のイシ
ュー・グループをスケジューリングする。
【0022】 図3をさらに参照すると、プロセッサ30はレジスタ待ち時間表10を使用し
てプログラム依存性を静的に実行する、すなわち、命令のタイプの関数である予
想された依存性を実行する。レジスタ待ち時間表10はレジスタ32、33、3
4の一部の待ち時間に対して、命令が読出しか書込みかの静的な予想を提供する
。プロセッサ30は、静的な予想される待ち時間、すなわちより先の命令の予想
された待ち時間がレジスタ32、33、34の一部へ書込みを終了するまで、命
令をディスパッチしない。静的な予想される待ち時間に基づいたスケジューリン
グは、命令依存性の違反の数を削減することができる。
【0023】 代替の実施形態では、命令が最終的には予想される正しい待ち時間で実行ステ
ージに到着するように、命令は実行ステージより早くパイプラインステージにス
ケジューリングされディスパッチされる。
【0024】 図4Aは、図1のレジスタ待ち時間表10を使用するパイプライン式プロセッ
サ50を示す。フェッチャ/復号器52は、メモリ(図示せず)から命令を検索
し、ハードウェア実行ユニット46、48上で実行可能な命令の復号化されたイ
シュー・グループを生成する。リネーマ54はプロセッサ50の内部にあるレジ
スタ32、33、34の一部を、復号化された命令のダミー・オペランドへ割り
当てる。スケジューラ56は各イシュー・グループに関して予想される待ち時間
を静的に決定し、イシュー・グループおよび予想される待ち時間を命令待ち行列
58内の行(図示せず)に書き込む。「静的に決定する」とは、プロセッサ・ハ
ードウェアが固定された「予想される待ち時間」を命令クラスに依存する命令に
割り当てることを意味する。たとえば、一実施形態では、すべてのロード命令、
すべての整数計算命令およびすべての浮動小数点命令によって書き込まれたレジ
スタに、2クロック・パルス、1クロック・パルスおよび5クロック・パルスな
どの各予想される待ち時間を割り当てる。命令待ち行列58はイシュー・グルー
プの命令の実行が並列に開始するように、複数の整列した実行ユニット46、4
8に各イシュー・グループをディスパッチするように構成される。プロセッサ5
0は、レジスタ待ち時間表10を使用して各イシュー・グループの予想される待
ち時間、すなわち、イシュー・グループのすべての命令がディスパッチの準備を
する時間を決定する。リタイアメント・ユニット60は、イシュー・グループが
正しく実行されていれば、イシュー・グループの命令をリタイアし命令待ち行列
58を更新する。
【0025】 図4Bは、図4Aのプロセッサ50の一実施形態に関するパイプライン62を
示す。フェッチ/復号ステージ(FD)では、フェッチャ/復号器52は命令の
イシュー・グループを生成してリネーマ54に送る。リネーマステージ(RE)
では、リネーマ54は内部レジスタ32、33、34の一部を命令のダミー・オ
ペランドへ割り当てる。待ち時間決定ステージ(LA)では、スケジューラ56
は図4Aのレジスタ待ち時間表10の中にある命令のレジスタ32、34、36
の待ち時間ベクトルを検索し、命令のソース・レジスタが使用可能になる前に予
想されるクロックの数を決定する。LAステージでは、スケジューラ56はまた
イシュー・グループ自体に関して予想される待ち時間を決定する。待ち行列ステ
ージ(QU)では、いくつかの実施形態ではスケジューラ56はイシュー・グル
ープに関して予想される待ち時間の決定を完了する。QUステージでは、スケジ
ューラ56はイシュー・グループを命令待ち行列58内のアドレスに書き込み、
予想される待ち時間に関してバイナリの符号セグメントを付与する。QUステー
ジでは、スケジューラ56はレジスタ待ち時間表10の待ち時間ベクトルを更新
する。実行ステージ(EX)では、命令待ち行列58はイシュー・グループに関
して予想される待ち時間をカウントダウンした後に、次のイシュー・グループを
ディスパッチして実行する。リタイアメントステージ(RT)では、リタイアメ
ント・ユニット60は正しく実行された命令をリタイアする。当業者であれば、
プロセッサ・パイプライン62内のFD、RE、LA、QU、EXおよびRTの
各ステージの区分は、図4Bに現れるように区別できない場合があることを理解
されるであろう。たとえば、1つまたは複数のステージが他のステージと重複す
る場合がある。
【0026】 図4Bをさらに参照すると、ステージFD、RE、LA、QU、EXおよびR
Tは代表的なものにすぎず、種々の代替の実施形態に存在するようなステージを
網羅的または限定的に表したものではない。したがって、パイプライン62のス
テージの正確な構造は本発明の実施には直接関係がない。
【0027】 図5は、図1、図3および図4Aのレジスタ待ち時間表10で命令をスケジュ
ーリングする方法63を示すフローチャートである。ブロック64では、スケジ
ューラ56は入力イシュー・グループから命令のオペランドとして現れるレジス
タ32、33、34の一部に関して予想される待ち時間を読み出す、すなわち図
4Bの中のLAステージである。ブロック65では、スケジューラ56はそこに
現れるレジスタ32、33、34の一部の予想される待ち時間から、イシュー・
グループに関して予想される待ち時間を生成する、すなわち、図4BのLAステ
ージまたはQUステージである。一実施形態では、イシュー・グループの予想さ
れる待ち時間は、イシュー・グループの命令によって書き込まれるべきレジスタ
に関する最大の待ち時間と等しい。ブロック66では、命令待ち行列58は、イ
シュー・グループの予想される待ち時間が終了したことに応答して実行ユニット
46、48にイシュー・グループをディスパッチする、すなわち、図4BのQU
ステージからEXステージである。ブロック67では、スケジューラ56はイシ
ュー・グループによってレジスタ32、33、34のうちどれが書き込まれるか
を決定する、すなわち、QUステージである。ブロック68では、スケジューラ
56はたとえばレジスタ32、33、34の残りの待ち時間からイシュー・グル
ープの待ち時間を引くことによって、イシュー・グループによって書き込まれる
レジスタ32、33、34の一部に関してレジスタ待ち時間表10を更新する。
ブロック69では、レジスタ待ち時間表10はクロック・パルスに応答して、イ
シュー・グループによって書き込まれない各レジスタの予想される待ち時間を減
少させる。ブロック67、68および69は1レジスタについてレジスタごとに
実行される。一実施形態では、更新は図4BのステージQUで発生する。他の実
施形態では、更新は図4BのステージEXで発生する、すなわちスケジューリン
グの間ではなくディスパッチの時に起きる。
【0028】 さらに図5を参照すると、種々の実施形態はブロック68で異なる公式を使用
して予想されるレジスタ待ち時間を更新する。たとえば、更新はレジスタ待ち時
間表10の予想されるレジスタ待ち時間を、現在の予想されるレジスタ待ち時間
と、レジスタに書き込まれる次のイシュー・グループの予想される待ち時間のう
ち大きな方で置き換える。レジスタを更新するための他の公式も可能である。種
々の公式は予想されるレジスタ待ち時間の更新を、各イシュー・グループのディ
スパッチ時またはディスパッチ前に可能にする。
【0029】 図4Aを参照すると、命令待ち行列58はイシュー・グループを連続的にディ
スパッチする循環バッファでよい。命令待ち行列58のポインタ(図示せず)は
、ディスパッチされた最後のイシュー・グループを示す。命令待ち行列58は次
のイシュー・グループに関して残りの待ち時間をカウントダウンし、次のイシュ
ー・グループの待ち時間が終了したことに応答して、ポインタを進めて次のイシ
ュー・グループをディスパッチする。命令待ち行列58は非命令イシュー・グル
ープ、すなわち実行動作のないイシュー・グループを、待ち時間がカウントダウ
ンされているディスパッチ・サイクルの間にディスパッチする。実行ユニット4
6、48は非命令イシュー・グループを実行せず、リタイアメント・ユニット6
0はそこからの結果をアーキテクチャの状態にゆだねずに、非命令イシュー・グ
ループをリタイアする。実施形態によっては、実行ユニット46、48およびリ
タイアメント・ユニット60は、保持された1つまたは複数の特別ビットによっ
て非命令イシュー・グループを認識し、「非命令」状態を示す。こうして、図4
Aのプロセッサ50は、実行の準備ができていると予想されるイシュー・グルー
プがない時には、図4Bの命令パイプライン62をストールしない。図4Bのパ
イプライン62におけるREステージの後の例外または実行エラーに応答して、
図4Aのプロセッサ50は非命令イシュー・グループをディスパッチし、実行ユ
ニット46、48は、そこから命令を実行しない。図4Aのプロセッサ50は他
の装置および/または待ち行列を有し、図4Bのパイプライン62のLAステー
ジより早いステージで発生するエラーを処理する。図4Bのパイプライン62は
ストール可能なパイプラインにおけるように動作速度を低減する可能性のあるス
トール・ネットワークを有しない。
【0030】 図4Aおよび図5を参照すると、ブロック68においてプロセッサ50は第2
の公式を使用してレジスタ待ち時間表10を更新することができる。たとえばI
G1とIG2など2つの連続的なイシュー・グループのディスパッチの間に、プ
ロセッサ50は第2のイシュー・グループの予想される待ち時間に等しいX個の
非命令イシュー・グループをディスパッチする、すなわち、XはIG2に関して
予想される待ち時間である。スケジューリングにおいてIG2による更新が起き
た場合、すなわち、ブロック68がブロック64または65と同時である場合、
上記の第1の更新公式は後者のイシュー・グループの待ち時間を多く見積もりす
ぎた可能性がある。たとえば、次のイシュー・グループIG3はIG2に関して
X個の非命令イシュー・グループがディスパッチされている間、命令待ち行列5
8の中で待つ。レジスタ待ち時間表10の予想は、IG2のディスパッチと完了
の間の時間を考慮するが、X個の非命令がディスパッチされている間の待ち時間
は考慮しない。
【0031】 さらに図4Aおよび図5を参照すると、IG2がスケジューリングされている
間に待ち時間表を更新するための第2の公式は2つのステップを有する。まず、
スケジューラ56はIG2の予想される待ち時間Xをレジスタ待ち時間表10の
予想されるレジスタ待ち時間のすべてから差し引く。負の予想されるレジスタ待
ち時間はゼロと見なされる。第2に、スケジューラ56は残りの予想されるレジ
スタ待ち時間とイシュー・グループIG2の待ち時間のうち大きい方によってレ
ジスタ待ち時間表10の各残りの予想されるレジスタ待ち時間を置き換える。こ
れはレジスタに書き込まれる。第2の公式を使用する実施形態はより短い待ち時
間を、続くイシュー・グループすなわちIG3にあてることができる。
【0032】 図6は、図4Aのプロセッサ50における命令の処理に関する方法70のフロ
ーチャートである。ブロック71で、スケジューラ56はリネーマ54から新し
い命令のイシュー・グループを受け取る。ブロック72で、スケジューラ56は
レジスタ待ち時間表10の中の予想されるレジスタ待ち時間から、イシュー・グ
ループに関して予想される待ち時間を決定する。一実施形態では、予想される待
ち時間はレジスタ32、33、34の一部の最大の待ち時間であり、これはイシ
ュー・グループの命令のソース・オペランドである。ブロック73では、スケジ
ューラ56はイシュー・グループおよび予想される待ち時間を、命令待ち行列5
8内の次の位置に書き込む。ブロック74では、命令待ち行列58はイシュー・
グループの予想される待ち時間が終了したことに応答して、イシュー・グループ
を実行ユニット46、48にディスパッチする。ブロック75では、スケジュー
ラ56はイシュー・グループがレジスタ32、33、34のそれぞれに書き込む
かどうかを決定する。ブロック76では、スケジューラ56はディスパッチされ
たイシュー・グループによって書き込まれると決定されたレジスタ32、33、
34の一部の待ち時間を更新する。ブロック77では、クロック20はクロック
・パルスに応答して、レジスタ待ち時間表10のレジスタ32、33、34のイ
シュー・グループによって書き込まれない一部の待ち時間を減少させる。ブロッ
ク76、77で実行される待ち時間の更新および減少は、ブロック72において
続くイシュー・グループのスケジューリングに関して、レジスタ待ち時間表10
内の待ち時間を「追跡」する。
【0033】 図7は、図1、図3および図4Aのレジスタ待ち時間表10に関する再生構造
100の一実施形態を示す。回線102は入力待ち時間ベクトルをレジスタ待ち
時間表10へ運ぶ。回線102はマルチプレクサ(MUX)104の入力の第1
の組に接続する。MUX104の出力はレジスタ待ち時間表10の書込みポート
108および、シャドウ・レジスタ112の第1の組の書込みポート110に接
続する。図1および図3に示されるように、シャドウ・レジスタ112の第1の
組は、レジスタ待ち時間表10の各行14、16、18に関して別のレジスタを
有する。シャドウ・レジスタ112の第1の組は、直列に接続された出力および
入力を有するシャドウ・レジスタ112、116と同じ組の列114の第1の成
分である。クロック122はシャドウ・レジスタ112、116のイネーブル入
力118、120を制御し、その結果、クロック・パルスにより、データは列1
14に送られるようにされる。図示された列114は、Qクロック・パルスだけ
遅延されているレジスタ待ち時間表10の状態を出力する。シャドウ・レジスタ
116の最後の組の出力124は、MUX104の入力126の第2の組に接続
する。再生制御128は、入力待ち時間ベクトルに関して回線102を選択する
か、または、シャドウ列114によって遅延された待ち時間ベクトル、すなわち
再生された待ち時間ベクトル関して第2の入力126を選択するかのいずれかで
ある。
【0034】 図7をさらに参照すると、再生制御128は回線102から新しい待ち時間を
格納するか、または回線126からレジスタ待ち時間表10へクロック122の
Qサイクルだけ遅延された古い待ち時間ベクトルを再コピーするかのいずれかを
選択することができる。列114のシャドウ・レジスタ112、116の組のそ
れぞれは、再生された待ち時間ベクトルを、クロック122の1サイクル分だけ
遅延する。再生制御128は、例外または実行エラーに応答して、遅延された待
ち時間ベクトルをレジスタ待ち時間表10に再コピーすることを選択する。再コ
ピーのステップは、図4Bのパイプライン62の残りをレジスタ待ち時間表10
の遅延されたコピーで再生することによって、REステージの後のパイプライン
ステージに発生するエラーおよび(1つまたは複数の)例外からの回復を可能に
する。ハードウェア(図示せず)が例外および/またはエラーを検出し、再生を
順序づけるための時間遅延は、必要な遅延および列114の長さを決定する。し
たがって、列114の長さは実装態様に依存する。
【0035】 図4A、図4Bおよび図7を参照すると、レジスタ待ち時間表10における待
ち時間ベクトルの再生は、例外エラーおよび/または実行エラーを処理および/
または修正するように順序づけられる場合がある。レジスタ待ち時間表10は、
イシュー・グループに関連づけられたより早い状態に戻り、再ディスパッチされ
再実行されて、図4A〜4Bのストール不能パイプライン50、62内の例外エ
ラーおよび/または実行エラーから回復する。再生構造100は、図1、図3、
図4Aのレジスタ待ち時間表の待ち時間ベクトルを遅延し再生する手段であり、
再生によって図4Bのストール不能パイプライン62内の実行例外およびエラー
を処理するための実施形態でもある。
【0036】 図8は、図7の再生構造100でレジスタ待ち時間表10の待ち時間ベクトル
を再生する方法134を示すフローチャートである。ブロック135では、図3
または図4Aのプロセッサ30、50はREステージの後に図4Bのパイプライ
ン62の一部の再生をするかどうかを決定し、たとえば、実行例外またはエラー
から回復する。ブロック136では、図3または図4Aのプロセッサ30、50
が再生することを決定した場合に、再生制御128はMUX104へ新しい待ち
時間ベクトル、すなわち、更新を運ぶ回線102を選択する。ブロック138で
は、スケジューラ56は新しい待ち時間ベクトルをレジスタ待ち時間表10に書
き込むことによって、レジスタ待ち時間表10を更新する。スケジューラ56は
同時に、その更新をシャドウ・レジスタ112の第1の組に書き込む。ブロック
140では、クロック122からのタイミング・パルスは、待ち時間ベクトルを
シャドウ・レジスタ112、116の組の列114へ送る。ブロック142では
、再生コントローラ128はMUX104の第2の入力126を選択し、REス
テージの後に、図4Aのプロセッサ50がパイプライン62の再生を決定したこ
とに応答して、シャドウ・レジスタ116の最後の組から遅延された待ち時間ベ
クトルを受け取る。ブロック144では、再生構造100は、MUX104から
再生された待ち時間ベクトルで、レジスタ待ち時間表10およびシャドウ・レジ
スタ112の第1の組を更新する。図4Aの命令待ち行列58は次いで、レジス
タ待ち時間表10に関して再コピーされ遅延された入力に関連づけられたイシュ
ー・グループを再ディスパッチすることによって再生を開始する。
【0037】 このようにして、本発明は異なる待ち時間の命令の実行を静的にスケジューリ
ングして、実行の時にオペランドを使用可能にするメカニズムを提供する。この
メカニズムはパイプラインをストールする必要なくイシュー・グループが使用可
能になり実行できるように、オペランドの予想される使用可能度を前もって決定
し、必要であれば非命令をディスパッチする。したがって、本発明はこれに限定
されるものではないが、本発明はストールではなく再生を使用しているようなス
トール不能なパイプラインで特に役に立つ。本発明はこのようなストール不能な
パイプラインで、これまでは非ユニット待ち時間の命令に直面した時にパイプラ
インをストールすることによって導入されてきた遅延の導入を可能にする。
【0038】 本発明はその教示から利益を受ける当業者であれば明らかな、異なるが等化な
方法で修正、実行できるため、上記に開示された特定の実施形態は例示のための
ものである。さらに、ここに示された構造または設計の詳細は、首記の請求項で
記述される以外の限定を目的としていない。したがって、上記に開示された特定
の実施形態は変更または修正される可能性があり、このような変形例のすべては
本発明の範囲と精神の中にあることは明らかである。したがって、ここで求めら
れている保護は首記の請求項で示されている通りのものである。
【図面の簡単な説明】
【図1】 レジスタ待ち時間表を示すレベルの高い図である。
【図2】 クロック・パルスで、図1のレジスタ待ち時間表の行の中にある待ち時間ベク
トルを更新するための一実施形態を示す図である。
【図3】 図1のレジスタ待ち時間表を使用して命令をスケジューリングし、並列実行ユ
ニット上で実行するプロセッサの一部を示す図である。
【図4A】 命令をスケジューリングし並列実行ユニット上で実行するプロセッサのレベル
の高い構成図である。
【図4B】 図4Aのプロセッサの一実施形態に関するパイプラインを示す図である。
【図5】 図1、図3、および図4Aのレジスタ待ち時間表で命令をスケジューリングす
る方法を示すフローチャートである。
【図6】 図4Aのプロセッサ内で命令を処理する第1の方法を示すフローチャートであ
る。
【図7】 Nクロック・サイクルだけ遅延されたベクトル待ち時間でフラッシュ・コピー
することによって、レジスタ待ち時間表内で待ち時間ベクトルを再生するための
構造を示す図である。
【図8】 図7の再生構造の動作を示すフローチャートである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,UG,ZW),E A(AM,AZ,BY,KG,KZ,MD,RU,TJ ,TM),AE,AL,AM,AT,AU,AZ,BA ,BB,BG,BR,BY,CA,CH,CN,CR, CU,CZ,DE,DK,DM,EE,ES,FI,G B,GD,GE,GH,GM,HR,HU,ID,IL ,IN,IS,JP,KE,KG,KP,KR,KZ, LC,LK,LR,LS,LT,LU,LV,MD,M G,MK,MN,MW,MX,NO,NZ,PL,PT ,RO,RU,SD,SE,SG,SI,SK,SL, TJ,TM,TR,TT,UA,UG,US,UZ,V N,YU,ZA,ZW (72)発明者 リン,ダーリック・シイ アメリカ合衆国・94404・カリフォルニア 州・フォスター シティ・バーケンタイン ストリート・113 Fターム(参考) 5B013 AA11 CC06 DD04

Claims (47)

    【特許請求の範囲】
  1. 【請求項1】 クロックと、 複数の行および1つまたは複数のポートを有する電子ハードウェア構造であっ
    て、各行が前記ポートのうち1つのポートを介して書き込まれた待ち時間ベクト
    ルを記録するように構成され、格納された待ち時間ベクトルは前記クロックに応
    答する電子ハードウェア構造とを備える装置。
  2. 【請求項2】 各行が、前記クロックに電気的に接続されたシフト制御をさ
    らに備えたシフト・レジスタを含む請求項1に記載の装置。
  3. 【請求項3】 複数のレジスタをさらに備え、 各行が有限な状態マシンである請求項1に記載の装置。
  4. 【請求項4】 待ち時間ベクトルが、スケジューリングされた命令およびス
    ケジューリングされた命令のイシュー・グループのうちの1つの予想される待ち
    時間である請求項3に記載の装置。
  5. 【請求項5】 前記複数のレジスタがレジスタ・ファイルに属し、前記レジ
    スタ・ファイルおよび前記電子ハードウェア構造が同じ数の読出しポートおよび
    同じ数の書込みポートを有する請求項3に記載の装置。
  6. 【請求項6】 前記複数のレジスタがレジスタ・ファイルに属し、前記レジ
    スタ・ファイルおよび前記電子ハードウェア構造が同じ数の行を有し、前記行の
    数が前記レジスタ・ファイル内のレジスタの数である請求項3に記載の装置。
  7. 【請求項7】 少なくとも1つの実行ユニットと、 命令のオペランドに関する前記待ち時間ベクトルが、前記オペランドが使用可
    能であるという予想を提供したことに応答して前記実行ユニットに命令をディス
    パッチするデバイスとをさらに備える請求項1に記載の装置。
  8. 【請求項8】 少なくとも1つの別の実行ユニットと、待ち時間ベクトルが
    イシュー・グループの命令のオペランドが使用可能であるという予想を提供した
    ことに応答して前記実行ユニットに前記イシュー・グループをディスパッチする
    ためのデバイスとをさらに備える請求項7に記載の装置。
  9. 【請求項9】 あらかじめ選択された数のクロック・サイクルだけ入力信号
    を遅延させるように構成されたシャドウ・レジスタの組の列であって、各組が電
    子ハードウェア構造の各行に対して1つのレジスタを有する一連のシャドウ・レ
    ジスタの組の列と、 マルチプレクサであって第1の入力、第2の入力および出力を有し、前記第1
    の入力は待ち時間ベクトルを受け取り、前記第2の入力は前記シャドウ・レジス
    タの組の列の出力から信号を受け取り、前記マルチプレクサの出力は、前記電子
    ハードウェア構造と前記シャドウ・レジスタの組の列の両方の入力に並列に接続
    されているマルチプレクサをさらに備える請求項1に記載の装置。
  10. 【請求項10】 前記電子ハードウェア構造内の前記待ち時間ベクトルを遅
    延し再生するための手段をさらに備える請求項1に記載の装置。
  11. 【請求項11】 複数のレジスタを含むレジスタ・ファイルと、 命令を実行する複数の実行ユニットであって、前記命令の一部が前記レジスタ
    から読出しと書込みのうち1つを実行する複数の実行ユニットと、 前記レジスタの予想されるレジスタ待ち時間を追跡するレジスタ待ち時間表と
    、 前記レジスタ待ち時間表の待ち時間を更新するクロックと を備えるプロセッサ。
  12. 【請求項12】 前記レジスタ待ち時間表および前記レジスタ・ファイルが
    両方とも、前記レジスタのそれぞれに関して1つの行を有する請求項11に記載
    のプロセッサ。
  13. 【請求項13】 前記レジスタ待ち時間表および前記レジスタ・ファイルが
    、同じ数の読出しポートおよび同じ数の書込みポートを有する請求項12に記載
    のプロセッサ。
  14. 【請求項14】 前記レジスタ待ち時間表の前記予想されるレジスタ待ち時
    間を使用してイシュー・グループをスケジューリングし、前記実行ユニットへデ
    ィスパッチするスケジューラをさらに備える請求項11に記載のプロセッサ。
  15. 【請求項15】 前記スケジューラがイシュー・グループをスケジューリン
    グしてディスパッチし、前記ディスパッチが前記イシュー・グループの命令の前
    記レジスタの一部の前記予想されるレジスタ待ち時間が終了したことに応答して
    実行される請求項14に記載のプロセッサ。
  16. 【請求項16】 さらに命令待ち行列を備え、前記スケジューラは第1のイ
    シュー・グループおよび前記第1のイシュー・グループの予想される待ち時間を
    前記命令待ち行列に書き込むように構成され、前記命令待ち行列は前記第1のイ
    シュー・グループの前記予想される待ち時間のカウントダウンに応答して前記第
    1のイシュー・グループをディスパッチする請求項14に記載のプロセッサ。
  17. 【請求項17】 前記実行ユニット、前記スケジューラ、および前記命令待
    ち行列がパイプラインの要素であり、前記パイプラインはストール不能である請
    求項16に記載のプロセッサ。
  18. 【請求項18】 あらかじめ選択された数のクロック・サイクルだけ入力信
    号を遅延するシャドウ・レジスタの組の列と、 待ち時間ベクトルを受け取る第1の入力およびシャドウ・レジスタの組の列か
    ら前記信号を受け取る第2の入力を有するマルチプレクサであって、前記マルチ
    プレクサの出力は前記レジスタ待ち時間表の入力とシャドウ・レジスタの組の列
    の出力の両方に並列に接続されているマルチプレクサとをさらに備える請求項1
    1に記載のプロセッサ。
  19. 【請求項19】 選択された実行エラーおよび例外に応答して前記マルチプ
    レクサの前記第2の入力を選択するように構成された再生コントローラをさらに
    備える請求項18に記載のプロセッサ。
  20. 【請求項20】 複数の予想される待ち時間をレジスタ待ち時間表の、特定
    のレジスタに対応する行の一部に更新するステップと、 クロック・パルスに応答して前記行のうち他の行に残っている予想される待ち
    時間を削減するステップと を含むプロセッサ内で命令をディスパッチする方法。
  21. 【請求項21】 前記行の第2の部分の予想される待ち時間を読み出し、前
    記行の第2の部分は第1のイシュー・グループの命令に割り当てられたレジスタ
    の一部に対応するステップと、 前記行の前記第2の部分の予想される待ち時間の読出しが終了したことに応答
    して、前記第1のイシュー・グループをディスパッチして実行するステップとを
    さらに含む請求項20に記載の方法。
  22. 【請求項22】 前記第1のイシュー・グループが命令を1つだけ含む請求
    項21に記載の方法。
  23. 【請求項23】 前記予想される待ち時間を更新する作用が1つまたは複数
    の命令のスケジューリングに応答し、前記1つまたは複数の命令のそれぞれは前
    記特定のレジスタのうち1つを読み出す命令および前記特定のレジスタのうち1
    つに書き込む命令である請求項20に記載の方法。
  24. 【請求項24】 前記更新の作用が命令の第2のイシュー・グループのスケ
    ジューリングに応答して実行され、前記第2のイシュー・グループは前記特定の
    レジスタに書き込む請求項20に記載の方法。
  25. 【請求項25】 前記第2のイシュー・グループが前記行のうち他の行に対
    応するレジスタに書き込まないことを決定したことに応答して、前記削減の作用
    が前記行のうち他の行に対して実行される請求項24に記載の方法。
  26. 【請求項26】 予想される待ち時間を更新する前記作用が、1つまたは複
    数の命令をディスパッチする前記作用に応答し、前記1つまたは複数の命令のそ
    れぞれは、前記特定のレジスタのうち1つを読み出すことおよび前記特定のレジ
    スタのうち1つに書き込むことのうち1つを実行する請求項21に記載の方法。
  27. 【請求項27】 前記ディスパッチの作用に、前記第1のイシュー・グルー
    プの各命令を異なる実行ポートに送ることを含む請求項21に記載の方法。
  28. 【請求項28】 前記第1のイシュー・グループの前記命令を命令待ち行列
    の行に書き込むステップをさらに含み、 前記ディスパッチの作用が、前記行の前記命令の前記予想されるレジスタ待ち
    時間が終了したことに応答して、前記命令待ち行列のうち1つの行からすべての
    命令を送って実行する請求項21に記載の方法。
  29. 【請求項29】 前記更新、読出し、ディスパッチ、書込みの作用が、結果
    を次のステージに転送する前に前記プロセッサの次のステージが準備されている
    かどうかを決定することを含まない請求項28に記載の方法。
  30. 【請求項30】 命令のイシュー・グループを受け取るステップと、 前記イシュー・グループの前記命令に割り当てられた前記レジスタの一部の予
    想される待ち時間から前記イシュー・グループに関して予想される待ち時間を決
    定するステップと、 前記イシュー・グループによって書き込まれるレジスタの予想されるレジスタ
    待ち時間を更新し、前記イシュー・グループに関する前記予想される待ち時間は
    前記予想されるレジスタ待ち時間の更新を決定するステップと、 前記イシュー・グループを命令待ち行列に書き込むステップと、 前記イシュー・グループに関して予想される待ち時間が終了したことに応答し
    て、前記イシュー・グループをディスパッチし実行するステップと を含むプロセッサ内で命令を実行する方法。
  31. 【請求項31】 命令に関して予想される前記待ち時間が、前記命令のソー
    ス・レジスタが使用可能になる時の静的な予想である請求項30に記載の方法。
  32. 【請求項32】 クロック・パルスに応答して前記予想されるレジスタ待ち
    時間を追跡するステップをさらに含む請求項30に記載の方法。
  33. 【請求項33】 前記書込みの作用が、前記イシュー・グループを前記命令
    待ち行列のシーケンス上で次の位置に置き、前記ディスパッチの作用が、より先
    のイシュー・グループがディスパッチされた後で前記書き込まれたイシュー・グ
    ループを送る請求項30に記載の方法。
  34. 【請求項34】 前記予想されるレジスタ待ち時間を更新する前記作用が、
    イシュー・グループをディスパッチして実行することに応答して実行される請求
    項30に記載の方法。
  35. 【請求項35】 前記受け取り、更新、決定、置くこと、ディスパッチの作
    用が、結果を次のステージに転送する前に前記プロセッサの次のステージが準備
    されているかどうかを決定することを含まない請求項30に記載の方法。
  36. 【請求項36】 命令を検索する命令フェッチ・ユニットと、 複数のレジスタと、 前記レジスタの予想されるレジスタ待ち時間を追跡するレジスタ待ち時間表と
    、 複数の命令のイシュー・グループを格納する命令待ち行列と、 前記命令待ち行列から受け取られた各イシュー・グループの前記命令を並列に
    実行するように整列された複数の実行ユニットと、 前記イシュー・グループを前記命令待ち行列に書き込むスケジューラであって
    、前記命令待ち行列は特定のイシュー・グループの予想される待ち時間が終了し
    たことに応答して前記特定のイシュー・グループをディスパッチするスケジュー
    ラと を備えるプロセッサ。
  37. 【請求項37】 前記スケジューラが前記イシュー・グループに関して予想
    される待ち時間を決定し、かつ前記予想される待ち時間を前記命令待ち行列に書
    き込む請求項36に記載のプロセッサ。
  38. 【請求項38】 前記イシュー・グループのうち第1のイシュー・グループ
    の予想される待ち時間が、前記イシュー・グループのうち第1のイシュー・グル
    ープの命令のソース・オペランドとして現れるレジスタの予想されるレジスタ待
    ち時間のうちで最大である請求項37に記載のプロセッサ。
  39. 【請求項39】 前記レジスタ待ち時間表が、所与の命令のディスパッチに
    応答して所与のレジスタの予想されるレジスタ待ち時間を更新するように構成さ
    れ、前記所与の命令は前記所与のレジスタへ書き込むかそこから読み出すかのい
    ずれかである請求項36に記載のプロセッサ。
  40. 【請求項40】 前記レジスタ待ち時間表が、クロック・パルスに応答して
    前記予想されるレジスタ待ち時間を追跡するように構成されている請求項36に
    記載のプロセッサ。
  41. 【請求項41】 前記命令待ち行列が、先入れ先出し法で前記実行ユニット
    にイシュー・グループをディスパッチするように構成されている請求項36に記
    載のプロセッサ。
  42. 【請求項42】 あらかじめ選択された数のクロック・サイクルだけ入力信
    号を遅延するように構成された1つまたは複数のシャドウ・レジスタの組を備え
    る列であって、前記組の1つのレジスタは前記レジスタ待ち時間表の各行に対応
    する列と、 待ち時間ベクトルを受け取るための第1の入力および前記列の最後の組から信
    号を受け取るための第2の入力を有するマルチプレクサであって、前記マルチプ
    レクサの出力は、前記レジスタ待ち時間表の入力とシャドウ・レジスタの組の列
    の両方の入力に並列に接続されているマルチプレクサとをさらに備える請求項3
    6に記載のプロセッサ。
  43. 【請求項43】 前記予想されるレジスタ待ち時間の前記更新を遅延するた
    めの手段と、実行例外およびエラーのうち1つに応答して前記予想されるレジス
    タ待ち時間を再生するための手段とをさらに備える請求項39に記載のプロセッ
    サ。
  44. 【請求項44】 前記プロセッサがストール不能なパイプラインの形を有す
    る請求項39に記載のプロセッサ。
  45. 【請求項45】 イシュー・グループのスケジューリングに応答して、レジ
    スタ待ち時間表およびシャドウ・レジスタの組の列の両方に、命令のイシュー・
    グループに割り当てられたレジスタの一部の待ち時間ベクトルを書き込むステッ
    プと、 前記実行ユニットが使用可能であるかどうかを決定せずに前記イシュー・グル
    ープを実行ユニットへディスパッチするステップと、 前記列へ書き込まれる待ち時間ベクトルをあらかじめ選択された時間だけ遅延
    するステップと、 前記イシュー・グループの実行に応答して、実行例外およびエラーのうち1つ
    を検出することに応答して前記列から前記レジスタ待ち時間表に前記遅延された
    待ち時間ベクトルを書き込むステップと を含む命令を実行し再生する方法。
  46. 【請求項46】 前記命令の前記一部にある実行例外およびエラーのうち1
    つを検出することに応答して、前記イシュー・グループの前記命令の一部を前記
    実行ユニットに再ディスパッチするステップをさらに含む請求項45に記載の方
    法。
  47. 【請求項47】 次にディスパッチされるべきイシュー・グループがゼロ以
    外の予想される待ち時間を有することを決定したことに応答して、非命令のイシ
    ュー・グループを前記実行ユニットにディスパッチするステップをさらに含む請
    求項46に記載の方法。
JP2000565456A 1998-08-11 1999-08-10 異なる待ち時間を伴う命令のスケジューリング Expired - Fee Related JP3984786B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/132,043 1998-08-11
US09/132,043 US6035389A (en) 1998-08-11 1998-08-11 Scheduling instructions with different latencies
PCT/US1999/017948 WO2000010076A1 (en) 1998-08-11 1999-08-10 Scheduling instructions with different latencies

Publications (3)

Publication Number Publication Date
JP2002522841A true JP2002522841A (ja) 2002-07-23
JP2002522841A5 JP2002522841A5 (ja) 2006-09-14
JP3984786B2 JP3984786B2 (ja) 2007-10-03

Family

ID=22452183

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000565456A Expired - Fee Related JP3984786B2 (ja) 1998-08-11 1999-08-10 異なる待ち時間を伴う命令のスケジューリング

Country Status (6)

Country Link
US (1) US6035389A (ja)
JP (1) JP3984786B2 (ja)
CN (1) CN1138205C (ja)
AU (1) AU5550699A (ja)
HK (1) HK1041947B (ja)
WO (1) WO2000010076A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012173755A (ja) * 2011-02-17 2012-09-10 Nec Computertechno Ltd 情報処理装置及び情報処理方法

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3881763B2 (ja) * 1998-02-09 2007-02-14 株式会社ルネサステクノロジ データ処理装置
US6304953B1 (en) * 1998-07-31 2001-10-16 Intel Corporation Computer processor with instruction-specific schedulers
US6219781B1 (en) * 1998-12-30 2001-04-17 Intel Corporation Method and apparatus for performing register hazard detection
US6304955B1 (en) * 1998-12-30 2001-10-16 Intel Corporation Method and apparatus for performing latency based hazard detection
US6631452B1 (en) * 2000-04-28 2003-10-07 Idea Corporation Register stack engine having speculative load/store modes
US7127422B1 (en) * 2000-05-19 2006-10-24 Etp Holdings, Inc. Latency monitor
US20040064678A1 (en) * 2002-09-30 2004-04-01 Black Bryan P. Hierarchical scheduling windows
US20040064679A1 (en) * 2002-09-30 2004-04-01 Black Bryan P. Hierarchical scheduling windows
US7454747B2 (en) * 2003-02-07 2008-11-18 Sun Microsystems, Inc. Determining maximum acceptable scheduling load latency using hierarchical search
US20040158694A1 (en) * 2003-02-10 2004-08-12 Tomazin Thomas J. Method and apparatus for hazard detection and management in a pipelined digital processor
US7590063B2 (en) * 2003-11-10 2009-09-15 Honeywell International Inc. Real-time estimation of event-driven traffic latency distributions when layered on static schedules
US7502912B2 (en) * 2003-12-30 2009-03-10 Intel Corporation Method and apparatus for rescheduling operations in a processor
US20050147036A1 (en) * 2003-12-30 2005-07-07 Intel Corporation Method and apparatus for enabling an adaptive replay loop in a processor
US20050216900A1 (en) * 2004-03-29 2005-09-29 Xiaohua Shi Instruction scheduling
US7257700B2 (en) * 2004-06-03 2007-08-14 Sun Microsystems, Inc. Avoiding register RAW hazards when returning from speculative execution
US7418625B2 (en) * 2004-09-09 2008-08-26 Broadcom Corporation Deadlock detection and recovery logic for flow control based data path design
US7953959B2 (en) * 2005-06-15 2011-05-31 Panasonic Corporation Processor
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
GB2447907B (en) * 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US7913067B2 (en) * 2008-02-20 2011-03-22 International Business Machines Corporation Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
US20090271237A1 (en) * 2008-04-28 2009-10-29 Rail Insight, Llc Optimizing Rail Shipments for Commodity Transactions
US9311593B2 (en) 2010-03-26 2016-04-12 Brain Corporation Apparatus and methods for polychronous encoding and multiplexing in neuronal prosthetic devices
US8315305B2 (en) * 2010-03-26 2012-11-20 Brain Corporation Systems and methods for invariant pulse latency coding
US9122994B2 (en) 2010-03-26 2015-09-01 Brain Corporation Apparatus and methods for temporally proximate object recognition
US9405975B2 (en) 2010-03-26 2016-08-02 Brain Corporation Apparatus and methods for pulse-code invariant object recognition
US9193075B1 (en) 2010-08-26 2015-11-24 Brain Corporation Apparatus and methods for object detection via optical flow cancellation
US9070039B2 (en) 2013-02-01 2015-06-30 Brian Corporation Temporal winner takes all spiking neuron network sensory processing apparatus and methods
US9047568B1 (en) 2012-09-20 2015-06-02 Brain Corporation Apparatus and methods for encoding of sensory data using artificial spiking neurons
US9098811B2 (en) 2012-06-04 2015-08-04 Brain Corporation Spiking neuron network apparatus and methods
TWI643063B (zh) * 2012-03-06 2018-12-01 智邦科技股份有限公司 Detection method
US9224090B2 (en) 2012-05-07 2015-12-29 Brain Corporation Sensory input processing apparatus in a spiking neural network
US9129221B2 (en) 2012-05-07 2015-09-08 Brain Corporation Spiking neural network feedback apparatus and methods
US9412041B1 (en) 2012-06-29 2016-08-09 Brain Corporation Retinal apparatus and methods
US9311594B1 (en) 2012-09-20 2016-04-12 Brain Corporation Spiking neuron network apparatus and methods for encoding of sensory data
US9218563B2 (en) 2012-10-25 2015-12-22 Brain Corporation Spiking neuron sensory processing apparatus and methods for saliency detection
US9111226B2 (en) 2012-10-25 2015-08-18 Brain Corporation Modulated plasticity apparatus and methods for spiking neuron network
US9183493B2 (en) 2012-10-25 2015-11-10 Brain Corporation Adaptive plasticity apparatus and methods for spiking neuron network
US9275326B2 (en) 2012-11-30 2016-03-01 Brain Corporation Rate stabilization through plasticity in spiking neuron network
US9123127B2 (en) 2012-12-10 2015-09-01 Brain Corporation Contrast enhancement spiking neuron network sensory processing apparatus and methods
US9177245B2 (en) 2013-02-08 2015-11-03 Qualcomm Technologies Inc. Spiking network apparatus and method with bimodal spike-timing dependent plasticity
US9009545B2 (en) * 2013-06-14 2015-04-14 International Business Machines Corporation Pulsed-latch based razor with 1-cycle error recovery scheme
US9436909B2 (en) 2013-06-19 2016-09-06 Brain Corporation Increased dynamic range artificial neuron network apparatus and methods
US9239985B2 (en) 2013-06-19 2016-01-19 Brain Corporation Apparatus and methods for processing inputs in an artificial neuron network
US11210098B2 (en) * 2013-07-15 2021-12-28 Texas Instruments Incorporated Variable latency instructions
US9552546B1 (en) 2013-07-30 2017-01-24 Brain Corporation Apparatus and methods for efficacy balancing in a spiking neuron network
US9489623B1 (en) 2013-10-15 2016-11-08 Brain Corporation Apparatus and methods for backward propagation of errors in a spiking neuron network
US10194163B2 (en) 2014-05-22 2019-01-29 Brain Corporation Apparatus and methods for real time estimation of differential motion in live video
US9939253B2 (en) 2014-05-22 2018-04-10 Brain Corporation Apparatus and methods for distance estimation using multiple image sensors
US9713982B2 (en) 2014-05-22 2017-07-25 Brain Corporation Apparatus and methods for robotic operation using video imagery
US9848112B2 (en) 2014-07-01 2017-12-19 Brain Corporation Optical detection apparatus and methods
US10057593B2 (en) 2014-07-08 2018-08-21 Brain Corporation Apparatus and methods for distance estimation using stereo imagery
US10055850B2 (en) 2014-09-19 2018-08-21 Brain Corporation Salient features tracking apparatus and methods using visual initialization
US9881349B1 (en) 2014-10-24 2018-01-30 Gopro, Inc. Apparatus and methods for computerized object identification
US9563428B2 (en) * 2015-03-26 2017-02-07 International Business Machines Corporation Schedulers with load-store queue awareness
US10197664B2 (en) 2015-07-20 2019-02-05 Brain Corporation Apparatus and methods for detection of objects using broadband signals
TWI587218B (zh) * 2016-09-10 2017-06-11 財團法人工業技術研究院 記憶體事務層級模型模擬方法及系統
US10558460B2 (en) * 2016-12-14 2020-02-11 Qualcomm Incorporated General purpose register allocation in streaming processor
CN108334326A (zh) * 2018-02-06 2018-07-27 江苏华存电子科技有限公司 一种低延迟指令调度器的自动管理方法
US11263013B2 (en) * 2020-04-07 2022-03-01 Andes Technology Corporation Processor having read shifter and controlling method using the same
US11829767B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US11954491B2 (en) 2022-01-30 2024-04-09 Simplex Micro, Inc. Multi-threading microprocessor with a time counter for statically dispatching instructions
US11829187B2 (en) * 2022-01-30 2023-11-28 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions
US11829762B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Time-resource matrix for a microprocessor with time counter for statically dispatching instructions

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5657315A (en) * 1995-06-01 1997-08-12 International Business Machines Corporation System and method for ring latency measurement and correction
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5828868A (en) * 1996-11-13 1998-10-27 Intel Corporation Processor having execution core sections operating at different clock rates

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012173755A (ja) * 2011-02-17 2012-09-10 Nec Computertechno Ltd 情報処理装置及び情報処理方法

Also Published As

Publication number Publication date
CN1138205C (zh) 2004-02-11
US6035389A (en) 2000-03-07
JP3984786B2 (ja) 2007-10-03
WO2000010076A1 (en) 2000-02-24
AU5550699A (en) 2000-03-06
HK1041947A1 (en) 2002-07-26
CN1323412A (zh) 2001-11-21
HK1041947B (zh) 2004-12-10

Similar Documents

Publication Publication Date Title
JP2002522841A (ja) 異なる待ち時間を伴う命令のスケジューリング
JP3014773B2 (ja) プロセサアーキテクチャ
JP5431308B2 (ja) システムおよびパイプラインプロセッサにおける条件命令実行の加速のためのローカル条件コードレジスタの使用方法
US8074060B2 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
JP3561915B2 (ja) スーパースカラ型プロセサにおいて命令処理を制御するためタグを割り当てるシステム及び方法
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
EP0437044B1 (en) Data processing system with instruction tag apparatus
US6336183B1 (en) System and method for executing store instructions
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
JP5209933B2 (ja) データ処理装置
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
JPH07160501A (ja) データ処理システム
JPH096611A (ja) データ処理システムにおけるデータをバッファリングする方法およびシステム
JP2653037B2 (ja) データ処理システム
KR20190033084A (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
EP0745241B1 (en) Exception recovery in a data processing system
US6324640B1 (en) System and method for dispatching groups of instructions using pipelined register renaming
US6345356B1 (en) Method and apparatus for software-based dispatch stall mechanism for scoreboarded IOPs
JPH06110688A (ja) 複数の順序外れ命令を並行処理するためのコンピュータ・システム
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
CN1124546C (zh) 一种超标量处理器及在该超标量处理器中完成指令的方法
US7302553B2 (en) Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
JP2001142700A (ja) パイプラインプロセッサにおける電力有効処理メカニズム
JP2001142702A (ja) パイプラインプロセッサにおける制御空間への高速アクセスメカニズム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060720

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070514

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: 20070612

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070709

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

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 3

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: 20110713

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees