JP2005537567A - データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ - Google Patents

データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ Download PDF

Info

Publication number
JP2005537567A
JP2005537567A JP2004532613A JP2004532613A JP2005537567A JP 2005537567 A JP2005537567 A JP 2005537567A JP 2004532613 A JP2004532613 A JP 2004532613A JP 2004532613 A JP2004532613 A JP 2004532613A JP 2005537567 A JP2005537567 A JP 2005537567A
Authority
JP
Japan
Prior art keywords
speculative
result
value
scheduler
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.)
Granted
Application number
JP2004532613A
Other languages
English (en)
Other versions
JP4170292B2 (ja
JP2005537567A5 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2005537567A publication Critical patent/JP2005537567A/ja
Publication of JP2005537567A5 publication Critical patent/JP2005537567A5/ja
Application granted granted Critical
Publication of JP4170292B2 publication Critical patent/JP4170292B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/3842Speculative instruction execution

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

マイクロプロセッサ(100)は、いくつかの実行ユニット(124)と、それら実行ユニット(124)の少なくとも1つに処理を発行するように結合されたスケジューラ(118)とを含む。スケジューラ(118)は、いくつかのエントリ(320)を持つ。第1エントリは第1処理に割り当てられる。前記第1エントリは、前記第1処理のオペランドのそれぞれについてのソース状態表示(330A,330B)を含む。各ソース状態表示(330A,330B)は、前記第1処理のオペランドの対応するものの値が投機的であるかどうかを示す。スケジューラ(118)は、前記第1エントリのソース状態表示(330A,330B)の一つを更新して、第2処理の結果の値が非投機的であるとの表示の受信に応答して、前記第1処理のオペランド中の対応するものの値が非投機的であることを表示するように構成される。

Description

本発明はマイクロプロセッサの分野に関し、さらに詳細には、マイクロプロセッサで実行するための処理のスケジューリングに関する。
スーパースカラーマイクロプロセッサは、複数の命令を同時に実行し、その設計に一致したできる限り少ないクロックサイクルを用いることにより、高い性能を実現している。しかしながら、命令間のデータおよび制御フローの依存性により、与えられた任意の時間内に発行可能な命令数が限定されてしまう。結果として、ある種のマイクロプロセッサは、より高い性能を実現するために、投機的実行(speculative execution)をサポートする。
投機(speculation)の一例は、制御フロー投機である。制御フロー投機は、プログラム制御の進む方向を予測する。例えば、分岐予測(branch prediction)を用いて、どちらの分岐が選択されるかを予測することができる。様々なタイプの分岐予測が利用可能であり、単純に毎回同じ予測を行う方法から、履歴に基づいた予測を行うためにプログラム中の過去の分岐の複雑な履歴を維持する方法まである。分岐予測は、ハードウェアによる最適化、コンパイラによる最適化、またはその両方によって促進される。分岐予測機構によって提供される予測に基づいて、命令を投機的にフェッチして実行することができる。最終的に分岐命令が評価されるときに、分岐予測を検証することができる。もし予測が誤りならば、誤った予測に基づいて投機的に実行されたすべての命令は破棄される。
投機の別の例は、データの値を予測するデータ投機である。ある種のデータ投機には、ロード命令に応答して提供される値の予測が含まれる。これは、ストア命令に応答して記憶された値を追跡(トラッキング)して、もし後続のロードで、以前のストアの一つで使用したアドレスを特定するために、同じレジスタおよび/またはディスプレースメントを使用する場合には、以前にストアされた値を投機的に使用する。他のデータ投機の例は、データアイテムの値を予測する、値予測である。値予測は、データ中のパターンを観察して、それらのパターンに基づいて予測を行う。例えば、インデックスカウンタ変数の値は、その変数の以前の値がどのくらい増加したのか、または減少したのかを観察することによって、予測することができる。
データ投機の他の例は、データの位置を予測する、アドレス予測である。データ投機のさらに他の例は、メモリシステムオプティミズム(memory system optimism)と呼ばれる。マルチプロセッサシステムでは、コヒーレンシチェックが完了する前に、あるプロセッサが、そのプロセッサのローカルキャッシュからのデータを用いて投機的に命令を実行するときに、メモリシステムオプティミズムが生じる。同様に、データ投機の他の例では、ロードを実行する時点で未だ計算されていないアドレスを持つストアの前に、そのストアがそのロードがアクセスする同じアドレスにデータをストアするかもしれないにも関わらず、そのロードを投機的に実行することを許可する。これら様々なデータ投機のすべてにおいて、潜在的な条件が最終的に評価されて、投機を検証するか、またはやり直しとなる。投機が最終的に誤りとなったときは、投機的データを用いて実行された命令を再実行することができる(例えば、更新された、および/または非投機的データを用いて)。
投機によって、依存性チェックが完了するのを待たずに実行を進めることができるので、もし正しい投機による性能向上が、誤った投機による性能低下を上回れば、相当な性能向上が達成可能である。投機が誤りとわかったとき、投機的に実行された命令はやり直しとなり、非投機的に再実行される。投機的実行をやり直すためには、各投機を記録しておいて、投機が誤予測されたとわかった場合に、投機的に実行された命令を特定するようにもできる。
投機的実行の一つの帰結は、実行の後に、スケジューラが投機的処理の割り当てを取り消すことができないということである。その理由は、もしこの基礎となる投機が誤りであったときにはこれらの処理を再発行する必要があるからである。基礎となる投機が正しいかどうかの判定はいくつかのサイクルの間実行することができず、その判定をするためにどのくらいのサイクル数がかかるかを決定することもできない。この不確実性が、ある処理がスケジューラからの割り当てをいつ取り消されるか、を突き止めるのを難しくする可能性がある。結果として、スケジューラのエントリが投機的処理に必要以上に長く割り当てられたままになり、スケジューラの空間のむだにつながる。
発明の概要
マイクロプロセッサにおける処理をスケジューリングするための方法およびシステムの様々な実施形態を開示する。一実施形態では、マイクロプロセッサは、いくつかの実行ユニットと、それらの実行ユニットの少なくとも1つに処理(operation)を発行するように結合されたスケジューラとを含む。スケジューラは、いくつかのエントリを持つ処理記憶およびスケジューラ制御ユニットを含む。処理記憶中の第1エントリは第1処理に割り当てられる。前記第1エントリは、前記第1処理のオペランドのそれぞれについてのソース状態表示(source status indication)を含む。各ソース状態表示は、前記処理のオペランドそれぞれの値が投機的であるかどうかを表示する。スケジューラ制御ユニットは前記第1エントリのソース状態表示の一つを更新して、第2処理の結果の値が非投機的であるとの表示の受信に応答して、第1処理のオペランド中の対応するものの値が非投機的であることを表示するように構成される。
方法の一実施形態は、第1処理に対する第1オペランドの値が投機的であることを示す第1ソース状態表示と、前記第1オペランドは第2処理の結果であり、第2処理の結果の値が非投機的であることを示す第1結果状態表示の受信に応答して、前記第1ソース状態表示を更新して第1オペランドの値が非投機的であることを表示し、前記第1ソース状態表示の更新に応答して、第2結果状態表示は前記第1処理の結果の値が非投機的であることを示すことを含む。
方法の他の実施形態は、第1オペランドの値が投機的であることを示す第1分岐処理の第1オペランドに対応する第1ソース状態表示と、第2処理の結果の値が非投機的であるとの表示の受信と、前記第2処理の結果が前記第1オペランドであり、前記表示の受信に応答して、前記第1ソース状態表示を更新して前記第1オペランドの値が非投機的であることを示し、前記第1分岐処理の結果の値に応答して、前記第1ソース状態表示が更新されて前記第1オペランドが非投機的であることを示すまで、命令プリフェッチ機構のリダイレクションおよび処理パイプラインのフラッシングを遅らせることを含む。
コンピュータシステムの一実施形態は、システムメモリおよび当該システムメモリに結合されたマイクロプロセッサとを含む。このマイクロプロセッサは、いくつかの実行ユニットと、当該いくつかの実行ユニットのうちの少なくとも1つに処理を発行するように結合されたスケジューラとを含む。このスケジューラはいくつかのエントリを含みうる。第1エントリは第1処理に割り当てられる。この第1エントリ(entry)は、前記第1処理のオペランド(operand)のそれぞれについてのソース状態表示(source status indication)を含み、各ソース状態表示は前記第1処理のオペランドの対応する値が投機的であるかどうかを表示することができる。スケジューラは、第2処理の結果の値が非投機的であるとの表示の受信に応答して、前記第1エントリのソース状態表示を更新して前記第1処理のオペランドの対応する値が非投機的であることを表示するように構成することができる。
本発明は、添付の図面に関連した以下の詳細な説明を参照することによって、よりよく理解することができる。
本発明は様々な変更や代替形態が可能であるが、本発明の個別の実施形態は、各図面において例示として示されたものであり、ここでは詳細に説明されている。しかしながら、ここで行われている実施形態の説明は、本発明を開示された特定の形態に限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲により定義されるような本発明の精神や範囲の範疇であるすべての変更、均等物、及び代替物を含むものであることは理解すべきである。本明細書中の見出しは文章構成のためのものに過ぎず、本明細書の説明または特許請求の範囲を限定または解釈のために用いるべきものではないことに注意されたい。さらに、本明細書において用いられる「できる」という用語は、許可的な意味合い(つまり、そのような可能性を持つ、または可能である)に用いられ、強制的な意味合いではない(つまり、しなければいけない)ことに注意すべきである。「含む」という用語およびその派生語は「含むが、それに限定されない」ことを意味する。「接続される」という用語は「直接的または間接的に接続される」ことを意味し、「結合される」という用語は「直接的または間接的に結合される」ことを意味する。
図1−マイクロプロセッサ
図1は、マイクロプロセッサ100の一実施形態のブロック図である。マイクロプロセッサ100はシステムメモリ200に記憶された命令を実行するように構成される。これらの命令の多くはシステムメモリ200に記憶されたデータを操作するものである。システムメモリ200はコンピュータシステム全体に物理的に配置可能であり、1以上のマイクロプロセッサ100からアクセスできる。マイクロプロセッサ100は、投機的な処理および/またはオペランドが非投機的になるのに応じて、スケジューラ118からエントリの割り当てを取り消す機構を含む。本明細書において、スケジューラとは、実行のために処理をスケジューリングし、一以上の実行コアまたは処理を実行するその他の手段に処理を発行する装置のことをいう。例えば、予約(リザベーション)ステーションはスケジューラの一例である。
マイクロプロセッサ100は命令(インストラクション)キャッシュ106およびデータキャッシュ128を含む。マイクロプロセッサ100は命令キャッシュ106に結合されたプリフェッチユニット108を含む。ディスパッチユニット104は命令キャッシュ106から命令を受信して、スケジューラ118に処理(オペレーション)を発送するように構成される。1以上のスケジューラ118はディスパッチユニット104から発送された操作を受信し、1以上の実行コア124に操作を発行するように結合できる。実行コア124は、データキャッシュ128に対するアクセスを実行するように構成されたロード/ストアユニット126を含む。実行コア124によって生成された結果は、結果バス130に出力されうる。これらの結果は続いて発行される命令のためのオペランド値(value)として使用可能であり、および/またはレジスタファイル116に記憶することができる。リタイアキュー(retire queue)102はスケジューラ118およびディスパッチユニット104に接続される。このリタイアキューは、発行された操作のそれぞれがいつリタイア可能であるかを決定するように構成される。一実施形態では、マイクロプロセッサ100はx86アーキテクチャと互換性を持つように設計される。マイクロプロセッサ100はその他多くの要素を含んでいてもよいことに注意すべきである。
命令キャッシュ106は命令を、ディスパッチユニット104がそれらを受信する前に、一時的に記憶することができる。命令コードは、システムメモリ200からプリフェッチユニット108を介してコードをプリフェッチすることにより、命令キャッシュ106に供給される。命令キャッシュ106は様々な構成で実装可能である(例えば、セットアソシアティブ、フルアソシアティブ、またはダイレクトマッピング)。
プリフェッチユニット108は命令キャッシュ106に記憶するためにシステムメモリ200から命令コードをプリフェッチすることができる。一実施形態では、プリフェッチユニット108はシステムメモリ200から命令キャッシュ106にコードをバースト転送するように構成することができる。プリフェッチユニット108は様々な特定のコードプリフェッチ技術およびアルゴリズムを採用することができる。
ディスパッチユニット104は、オペランドアドレス情報、即値データ(immediate data)および/または変位データ(displacement data)とともに、実行コア124が実行可能なビットエンコードされた操作を含む信号を出力する。ある実施形態では、ディスパッチユニット104はある種の命令を実行コア124内で実行可能な操作にデコードするためのデコード回路(図示せず)を含んでいてもよい。単純な命令は単一の操作に対応する。ある実施形態では、より複雑な命令は複数の操作に対応する。レジスタの更新を含む操作をデコードすると、レジスタファイル116中のあるレジスタ位置が推測レジスタ状態を記憶するために予約される(別の実施形態では、再整理バッファが各レジスタに対する一以上の推測レジスタ状態を記憶するために用いられる。レジスタマップ134は、レジスタのリネームを容易にするために、ソースおよび目的オペランドの論理レジスタ名を物理レジスタ名に変換することができる。レジスタマップ134は、レジスタファイル116内のどのレジスタが現在割り当てられているか、割り当てられていないかを追跡可能である。
図1のマイクロプロセッサ100はアウトオブオーダー実行をサポートする。リタイアキュー102はレジスタ読み出しおよび書き込み操作のためにオリジナルのプログラムシーケンスの追跡を維持し、投機的命令実行および分岐予測ミスからの復帰を許可し、精確な例外処理を容易にする。ある実施形態では、リタイアキュー102は、推測レジスタ状態に対するデータ値の記憶を提供することにより、レジスタのリネームをもサポートする。多くの実施形態では、リタイアキュー102は再整理バッファと同じように機能する。しかしながら、典型的な再整理バッファとは異なり、リタイアキュー102はなんらのデータ値記憶をも提供しない。ある実施形態では、リタイアキュー102は、有効になった操作がバッファのボトムに移動し、それによって待ち行列の「一番上」に新しいエントリのための空きを作る、先入れ先出し構造として実装される。操作がリタイアすると、リタイアキュー102が推測レジスタ状態を記憶する必要がなくなったレジスタファイル116内のレジスタの割り当てを取り消し、レジスタマップ134に対してどのレジスタが現在空いているのかを示す信号を供給する。レジスタファイル116内(他の実施形態では、再整理バッファ内)の推測レジスタ状態をそれらの状態を生成した操作が有効になるまで維持することによって、分岐予測が間違っていたときに、予測ミスされたパスに従った投機的に実行された操作の結果がレジスタファイル116内で無効化される。
特定の操作をデコードして、もし要求されているオペランドがレジスタの位置であるときは、レジスタアドレス情報がレジスタマップ134(または再整理バッファ)に送られる。例えば、x86アーキテクチャにおいては、8つの32ビット論理レジスタがある(例えば、EAX,EBX,ECX,EDX,EBP,ESI,EDIおよびESP)。物理レジスタファイル116(または再整理バッファ)はこれらの論理レジスタの内容を変更する結果のための記憶装置を含み、アウトオブオーダー実行を許可する。レジスタファイル116内の物理レジスタは、デコード時に論理レジスタの一つの内容を修正するために決定される各操作の結果を記憶するために割り当てられる。従って、特定のプログラムを実行している間の様々な時点において、レジスタファイル116(または、他の実施形態では、再整理バッファ)は、与えられた論理レジスタの投機的に実行された内容を含む1以上のレジスタを持つ。
レジスタマップ134は物理レジスタをある操作の目的オペランドとして指定された特定の論理レジスタに割り当てる。ディスパッチユニット104は、レジスタファイル116が、所与の操作においてソースオペランドとして指定された論理レジスタに割り当てられた、既に割り当てられた1以上の物理レジスタを持つことを決定する。このレジスタマップ134はその論理レジスタに最も最近に割り当てられた物理レジスタのためのタグを供給することができる。このタグは、レジスタファイル116内のオペランドのデータ値にアクセスするために用いることができ、または結果バス130において転送される結果を介してデータ値を受信することができる。もしオペランドがメモリ位置に対応するならば、そのオペランド値はロード/ストアユニット222を介して結果バスに供給される(結果転送、および/またはレジスタファイル118への記憶のため)。スケジューラ118のひとつから操作が発行されると、オペランドデータ値が実行コア124に供給される。他の実施形態においては、操作が発送されると、オペランド値が対応するスケジューラ118に供給される(その操作が発行されたときに、対応する実行コア124に供給する代わりに)。
ディスパッチユニット104の出力において供給されるビットエンコードされた操作および即値データは1以上のスケジューラ118に送られる。ここでは、スケジューラとは操作がいつ実行可能かを検出し、1以上の実行ユニットに対して準備完了処理(ready operation)を発行する装置である。例えば、予約装置(reservation station)はスケジューラである。各スケジューラ118は、実行コア124への発行待ちのいくつかの係属中の操作のための操作情報(例えば、オペランド値、オペランドタグ、および/または即値データとともにビットエンコードされた実行ビット)を保持することができる。ある実施形態では、スケジューラのそれぞれはオペランド値の記憶を提供しない。代わりに、各スケジューラは、いつオペランド値が実行コア124によって読み出し可能になるか(レジスタファイル116または結果バス130から)を決定するために、発行された操作およびレジスタファイル116において利用可能な結果を監視する。ある実施形態においては、各スケジューラ118は専用実行コア124と関係付けられる。他の実施形態においては、単一のスケジューラ118が2以上の実行コア124に対して操作を発行する。
スケジューラ118(または実行のために処理をスケジューリングする他の手段)は実行コア124によって実行される操作情報を一時記憶するために提供されうる。上述のとおり、各スケジューラ118は係属中の操作のために操作情報を記憶することができる。さらに、各スケジューラはすでに実行済みであるが、再発行される可能性のある操作のための操作情報を記憶することができる。実行のためにその時に利用可能にされた任意の必要とされるオペランドの値に応答して、操作が実行のために実行コア124に対して発行される。従って、操作が実行される順番は、もともとのプログラム命令シーケンスの順番とは同じでない可能性がある。データ推測を含む操作を、それらが非投機的になるまでスケジューラ118内にとどめ、データ推測が間違っていたときに再発行可能にすることができる。
一実施形態では、実行コア124のそれぞれは、シフト、ローテート、論理演算、および分岐操作と同様に、加算および減算の整数数値演算も実行するように構成された部分を含む。浮動小数点ユニットも浮動小数点演算を提供にするために含めることができる。実行コア124の一以上がロード/ストアユニット126によって実行されるロードおよびストアメモリ操作のためのアドレス生成を実行するように構成可能である。
さらに実行コア124は分岐予測ユニット132に対して条件分岐命令の実行に関する情報を提供することができる。もし実行コア124からの情報が分岐予測が誤っていることを示しているならば、分岐予測ユニット132は、命令処理パイプラインにすでに入った、誤って予測された分岐に続く命令群をフラッシュして、プリフェッチユニット108をリダイレクトすることができる。このリダイレクトされたプリフェッチユニット108は、次に命令キャッシュ106またはシステムメモリ200から正しい命令セットのフェッチを開始する。そのような状況では、予測誤りのあった分岐命令の後に発生したもともとのプログラムシーケンス中の命令の結果は廃棄され、それらには投機的に実行され、ロード/ストアユニット126および/またはレジスタファイル116に一時的に記憶されているものも含まれる。
もし分岐命令のオペランドのいずれかが投機的であるならば(例えば、以下で説明するように、データ投機が分岐命令のオペランドの一つを生成する処理に対して実行されているので)、その分岐命令の結果は投機的である。ある実施形態では、分岐処理が誤って予測されたかどうかを判定するのに、分岐命令の投機的結果を用いることができる。もし、投機的結果が分岐命令が誤って予測されていたことを示すときは、分岐予測ユニット132はプリフェッチユニット108をリダイレクトし、命令処理パイプラインをフラッシュする。しかしながら、他の実施形態では、分岐予測ユニット132は、プリフェッチユニット108をリダイレクトし、命令処理パイプラインをフラッシュする前に、分岐処理の結果が非投機的になるまで待つ。これによって、もし分岐処理の投機的結果が誤っていることがわかったときに、リダイレクトおよびパイプラインフラッシュの回数を少なくすることができる。
実行コア124内の構成要素によって生成された結果は、結果バス130上に出力され、もしレジスタ値が更新されていればレジスタファイル116に送られる。もしメモリ位置の内容が変更中であれば、実行コア124内で生成された結果はロード/ストアユニット126に供給される。
ロード/ストアユニット126は実行コア124とデータキャッシュ128との間のインターフェイスを提供する。一実施形態では、ロード/ストアユニット126は、係属中のロードおよびストアに関するデータおよびアドレス情報のためのいくつかの記憶位置を持つロード/ストアバッファを持つように構成される。さらに、このロード/ストアユニット126は、データコヒーレンシが維持されていることを保証するために、係属中のストア命令に対するロード命令の依存性チェックを実行することができる。
データキャッシュ128はロード/ストアユニット126とシステムメモリ200との間で転送されるデータを一時的に記憶するために提供されるキャッシュメモリである。上述の命令キャッシュ106と同様に、データキャッシュ128はセットアソシアティブ構成を含む、様々な特定のメモリ構成において実装可能である。さらに、データキャッシュ106および命令キャッシュ128は、ある実施形態においては統一されたキャッシュとして実装可能である。
図1のマイクロプロセッサ100内で生成されたデータ値は投機状態表示を含む。各投機状態表示は、関連するデータ値が投機的であるか否かを表示する。例えば、レジスタファイル116に記憶されたデータ値はそれぞれ関連する投機状態表示を有し、それはさらにレジスタファイル116および/またはレジスタマップ134に記憶される。同様に、実行コア124によって生成されたデータ値はそれぞれ関連する投機状態表示を有し、それは、関連するデータ値とともに実行コア124から出力され、および/またはデータ値を特定するタグとともにタグバスに出力される。一実施形態では、投機状態表示は、レジスタマップ134に特定された各物理レジスタとともに記憶することができる。投機状態表示は、その投機状態表示が関連する物理レジスタを特定するタグとともにタグバス上に転送することができる。または、投機状態表示を、その投機状態表示が関連するデータ値とともに、結果バス上に転送することができる。
上述のように、もしデータ値が再計算される可能性があるのなら、そのデータ値は投機的である。データ値は、もしそれがある種のデータ投機が実行された処理の結果であるならば(例えば、その処理の結果がディスパッチユニット104において予測される)、またはそのデータ値が再計算されうる他のデータ値に依存しているなら(例えば、そのデータ値が一以上の投機的オペランドを用いて実行した処理の結果である)、再計算されうる。投機状態表示は、あるオペランドまたはある処理が投機的あることを示す手段の一例である。
一実施形態では、投機状態表示は単一の状態ビットであり、関連するデータ値が投機的であればセットされ、そうでなければクリアされる。実行コア124は、データ値を生成するのに用いられたオペランドのいずれもが投機的であれば、そのデータ値に対して投機状態表示をセットするように構成される。ロード/ストアユニット126は、あるデータ値が投機的であるか否かを示すために(例えば、もしロード処理が計算されていないアドレスとともにストア処理を転送することを許可されているとすると、結果としてのデータ値は投機的になりうる)、そのデータ値に関連する投機状態表示を設定するように構成されうる。同様に、記憶位置(例えば、レジスタファイル116)がある処理の結果を記憶するために割り当てられているとき、もしその処理のオペランドがいずれもが投機的であるか、またはその処理そのものが投機的であるならば、その記憶位置内の投機状態表示はセットされる。例えば、ある記憶位置がロード処理の結果に対して割り当てられているならば、そのロード処理の結果に対する投機状態表示が設定されうる。その理由は、そのロードはデータキャッシュ128をミスするかもしれず、または計算されていないアドレスを持つストア処理を転送するかもしれないからである。もしレジスタマップ134が投機的レジスタ状態を追跡するために用いられるのであれば、同じ論理レジスタにマップされたレジスタファイル116内の物理レジスタは異なった投機状態表示(speculation status indication)を有する。
スケジューラ118にディスパッチされる前に、データおよび/または値予測がある処理に対して実行されるならば、その処理は投機的である。例えば、ある種の処理は同じ結果を生成する傾向がある。それらの結果をルックアップテーブルに記憶することができる。それらの処理の一つがディスパッチユニット104で処理されるとき、その結果は当該ルックアップテーブルから投機的に生成され、その処理の結果を記憶するために割り当てられたレジスタファイル116内のレジスタ(またはリオーダーバッファ内の記憶位置)に記憶される。その結果は投機的であるため、さらにその結果に対する投機状態表示が設定されて、その結果が投機的であることを示す。その処理が実行されると、実際の結果を当該投機的な結果と比較して、投機が正しかったのかどうかを判定する。もし投機が誤りであったならば、投機的な結果を実際の結果で置換して(例えば、実際の結果を結果バス上でブロードキャストして)、すでに実行され、その結果が投機的結果から計算されているすべての処理は実際の結果を用いて再発行される。もし投機が正しければ、その結果がもはや投機的ではないことの表示をスケジューラ118およびレジスタファイル116に供給する。以下で説明するように、各スケジューラ118は、どの処理が再発行されうるかを追跡し、いつ処理をスケジューラから除去できるかを決定するために、各処理に対して一以上の投機状態表示を保持しうる。各スケジューラ118は、ある処理またはあるオペランドに対して実行された投機が正しく解決されたとの表示に応答して、ある処理および/またはあるオペランドがもはや投機的ではないことを示すために投機状態表示を更新することができる。
図2−スケジューラ
図2は、処理を再発行するように構成されたスケジューラ118の一実施形態を示す。スケジューラ118はスケジューラ制御ユニット304と処理記憶302とを含む。スケジューラ制御ユニット304は処理に対するエントリを割り当て、そして割り当てを取り消すために処理記憶302を制御する。スケジューラ制御ユニット304は、ディスパッチユニット104によってある処理がスケジューラにディスパッチされたときに、処理記憶302にその処理のためのエントリ320を割り当てる。エントリ320は、その処理に対して実行されるすべての投機またはその処理のオペランドのすべてが解決し、その投機の結果(例えば、投機の成功または失敗)がすべての依存する処理(例えば、オペランド値がその処理の結果として生成される処理)に対して転送されるまで、その処理に対して割り当てられ続ける。
実施形態によっては、スケジューラ118はプロセッサ100内のいくつかのスケジューラ118のうちの一つである。そのような実施形態では、各スケジューラ118は、異なった実行コア124に処理を発行するように結合されうる。スケジューラ118のそれぞれは、一以上のタグバスの1セットに結合することができ、タグバス上において発行された処理の結果を特定するタグがスケジューラ間で伝達される(例えば、以下でさらに詳細に説明する、結果転送(result forwarding)および/または成功転送(success forwarding))。
処理記憶302内の各エントリはいくつかのフィールドを含む。図2に示す例示的なエントリ320は、デコードされた処理を記憶する処理フィールド322と、処理自体が投機的かどうかを示す処理投機状態フィールド324と、処理のオペランドのそれぞれについてのいくつかのフィールドグループ326-330とを含む。この例では、2つのオペランド:オペランド1とオペランド2のそれぞれについてオペランドフィールドのセットがある。オペランド1のフィールドは326Aと330Aであり、オペランド2のフィールドは326Bと330Bである。各オペランドについてのフィールドはオペランドのタグを記憶するタグフィールド326と、オペランドの値が投機的なのか(または将来投機的になるか)どうかを示すソース投機状態フィールド330とを含む。ソース投機状態フィールド330のそれぞれは、対応するオペランドの値が投機的ならばセットされ、そうでないならばクリアされる投機状態ビットのようなソース投機状態表示を記憶する。多くの実施形態では、いくつかの追加的なオペランドのそれぞれについてオペランドフィールドのセットを含む。例えば、一実施形態では、各エントリ320は5つのオペランド(例えば、3つのレジスタソース、2つのフラッグソース)についてのオペランドフィールドのための記憶を含む。各スケジューラエントリ320は、各オペランドについてのソース投機状態表示を含む。
ある実施形態では、スケジューラエントリ320は、オペランド値がスケジューラ118から実行コア124に提供されるならば、各オペランドについてのオペランド値を記憶する値フィールドを含む。そのような実施形態では、もしオペランド値がすでに利用可能であるならば(例えば、レジスタファイル116またはリオーダーバッファに)、処理がディスパッチされるときに、またはオペランド値が利用可能になったときに(例えば、結果バス130において)、オペランド値が処理エントリ320に記憶されうる。他の実施形態では、各スケジューラエントリ320にそのような値フィールドを含まない。
処理のオペランドを特定するタグは、ディスパッチ時に、処理のエントリ320に記憶される。もしオペランドの値が未だ利用可能でない場合には、それが実行中の処理の結果として生成されたときに、そのオペランドのタグがそのオペランドの値を特定するために用いられる。例えば、オペランドの値を生成する処理が実行コア124に発行されたとき、それを発行したスケジューラ118はタグバス340上にそのオペランドのタグを出力する。スケジューラ制御ユニット304は、タグバス340上のタグを処理記憶302内に割り当てられたエントリ中のオペランドタグと比較する。もしタグバス340上のタグがオペランドタグに合致するならば、スケジューラ制御ユニット304はそのタグによって特定されたオペランド値は、あるサイクル数経過後に結果バス130上で利用可能になると判断する。
ソース投機状態表示330は、処理がスケジューラ118にディスパッチされるときに、処理記憶302内の処理エントリ320に記憶される。もし投機状態表示がレジスタ内、またはオペランド値を保持するために割り当てられた他の記憶位置にセットされるならば(またはレジスタマップに特定される特定のレジスタに関連する投機表示がセットされるならば)、そのオペランドについてのソース投機状態表示が処理エントリ320においてセットされる。同様に、もし任意のデータまたは値投機が処理自体において実行されているならば、処理投機状態表示324がセットされる(例えば、ディスパッチユニット104は、関連する処理がディスパッチされるときに、スケジューラ118に処理投機状態表示を提供する)。
処理がスケジューラ118にディスパッチされるとき、ディスパッチユニット104はその処理の結果をストアするためにレジスタまたは記憶位置を割り当てる。処理のソース状態表示330のいずれかをセットする必要があるとき、または処理状態表示324をセットする必要があるとき、レジスタまたはその処理の結果に対して割り当てられた記憶位置に関連した投機状態表示もまたセットされる。様々な結果記憶位置に関連する投機状態表示は、リオーダーバッファ、レジスタファイル、および/またはレジスタマップに記憶することができる。投機状態表示は、各オペランドの投機状態を依存チェーンを通じて伝搬させるために用いることができる。
スケジューラ制御ユニット304は、実行のために実行コア124に対して発行するために処理記憶302内のエントリに記憶された処理を選択する。スケジューラ制御ユニット304は、タグバス340上のタグによって示されるように、そのオペランド値が利用可能である(例えば、レジスタファイル116において)、またはそのオペランド値があるサイクル数のうちに結果バス130上で利用可能になる処理を選択することができる。処理は、それらのオペランドの利用可能性に基づき、またもしそれが可能ならば、さらにそれらの相対的な古さ(age)に基づいて選択することができる(例えば、発行されるのをより長時間待機している処理に対して優先権を与えることもできるし、および/またはプログラムの順番においてより早く発生する処理に優先権を与えることもできる)。各エントリは、そのエントリが発行される準備が整っているかどうかを示す関連準備表示(associated readiness indication)を持ちうる。多くの実施形態では、それら自身が投機的でなく、そしてなんら投機的なオペランド値を持たない処理が、投機的な処理および投機的なオペランド値を持つ処理よりも優先される。
スケジューラ制御ユニット304は、その処理投機状態表示およびソース投機状態表示がクリアされた、実行された処理に割り当てられたエントリの割り当てを取り消すことができる。しかしながら、投機的な処理および/またはそのオペランドが投機的な値を持つ処理に割り当てられたエントリは、それらの処理が実行されたときには、その割り当てを取り消されない。処理記憶302に割り当てられたエントリを維持することによって、もし投機が誤りであることがわかったときに、スケジューラ制御ユニット304がその処理を再発行することができる。投機的処理に依存する処理は、ソース投機状態表示330をセットすることでスケジューラ内で明確に特定されているので、従属する処理に割り当てられたエントリも処理記憶302内に維持される。これによって、誤った投機が検出されるのに応じて、依存チェーン内の処理群を再度実行することが可能になる。
スケジューラ制御ユニット304は、投機が解決するにつれて(例えば、投機が正しく解決するたびに、適切なソース状態表示330および/または処理状態表示324をクリアすることによって)、処理記憶302中の各エントリ320内の処理投機状態表示324およびソース投機状態表示330を更新する。このようにして、ソース状態表示330および処理状態表示324がそのエントリの処理が再発行されないことを示すときに(例えば、そのソース状態表示および処理状態表示がクリアされたとき)、エントリ320は割り当てを取り消される。ある処理に対する投機が解決するとき、スケジューラ制御ユニット304はその処理に対する処理状態表示をクリアする。スケジューラ制御ユニット304は投機状態表示を更新する手段の一例である。
スケジューラ制御ユニット304は、ある処理についての処理投機状態表示324およびソース投機状態表示330がクリアされたならば、その発行された処理を再選択することができる。その理由は、それがその処理およびそのオペランドについてのすべてのデータおよび値投機(value speculation)が正しく解決されたことを示しているからである。ひとたびその処理についての投機が正しく解決されたならば、その処理の結果はもはや投機的ではない。スケジューラ制御ユニット304は、同じスケジューラ118またはマイクロプロセッサ内の異なったスケジューラの処理記憶302内に記憶されている依存する処理に対してその処理の結果の成功を転送するために発行された処理を再選択する。ある処理の投機結果が成功であった(つまり、非投機的である)ことの表示の受信に応答して、スケジューラ制御ユニット304は、その処理によって生成された結果オペランドについての処理記憶302内のソース投機状態表示を、その結果オペランドはもはや投機的ではないことを示すために更新することができる。
処理の結果の成功は、ある実施形態において結果転送に用いられたタグバスを用いて、転送することができる。例えば、スケジューラ制御ユニット304が、その投機および/またはそのオペランド値投機が解決された発行済み処理を選択したとき、その処理の結果に対応するタグは、その処理によって生成されたオペランドについてのソース投機状態表示330をクリアするためにタグが出力されているとの表示とともに、タグバス340上に出力される。結果転送の間にどの処理のオペランド値が生成中なのかを決定する同じタグ比較器(例えば、スケジューラ制御ユニット304内の)を、ある実施形態における成功転送の際に使用することができる。その成功が転送されている処理は、その成功転送の結果再実行されることはなく、従って成功した結果の転送のレイテンシは結果転送の際に生じるレイテンシよりも少ない(それは処理の実行レイテンシに依存する)。成功転送は、処理結果を記憶するために割り当てられた記憶位置またはレジスタに関連する投機状態表示(例えば、レジスタファイル、リオーダーバッファ、またはレジスタマップに記憶された)をもクリアし、それによって続いてディスパッチされた処理が処理結果が非投機的であることを認識する。
他の実施形態では、タグバスとタグ比較器との分離した組み合わせが成功転送のために用いられる(結果転送のために用いられた同じタグバスを用いる代わりに)。成功転送のためにタグバスとタグ比較器との分離した組み合わせが用いられる実施形態では、スケジューラ118は、成功転送のために別の処理が選択されている同じ選択サイクルの間に、ある処理を実行のために選択することができる。
同じタグバス340が結果転送および成功転送のために用いられる実施形態では、スケジューラ制御ユニット304は処理記憶302から選択するときに未だ発行されていない処理に対して優先権を与えることができる。例えば、スケジューラ制御ユニット304は、選択される準備ができている発行されていない処理がないときに、成功転送のためにすでに発行された処理を選択することができる。ある処理が成功転送のために選択されたとき、そのエントリは割り当てを取り消されうる(つまり、その処理がスケジューラから除去される)。他の実施形態では、処理はその成功が転送されてからしばらく経ってからスケジューラから除去される。そのような実施形態では、各エントリは、エントリがその成功を転送するためにすでに選択されたかどうかを示す関連成功転送表示を持つので、同じ処理が一回より多く成功転送のために選択されることはない。
スケジューラ制御ユニット304はさらに、ロード処理を満足させるために、ロード/ストアユニット126から出力されるデータ値に関連する投機状態表示を検出するように構成することができる。スケジューラ制御ユニット304は、ロード処理に依存する処理についてのソース投機状態表示330を更新するために、これらの投機状態表示を用いることができる。もしロード処理についてのいずれかの投機が正しく解決されなかったならば、従属する処理は正しいデータ値とともに再発行される。データ値をストアするために割り当てられたレジスタおよび/または記憶位置に関連する投機状態表示(例えば、リオーダーバッファ、レジスタファイル、またはレジスタマップに記憶される)も、ロード/ストアユニット126から出力されるデータに関連する投機状態表示に応じて更新されうる。
投機的であるか、または投機的なオペランド値を持つ分岐命令の投機が解決したとき、成功転送において、スケジューラ118は分岐予測ユニット132に対して成功表示を供給する。ある実施形態では、分岐命令の投機結果は分岐予測ユニットに転送される。ある実施形態では、分岐予測ユニット132は、分岐命令の投機結果に基づいて、プリフェッチユニット108をリダイレクトし、処理パイプラインをフラッシュ(flush)する。他の実施形態では、分岐予測ユニット132は、分岐命令結果が非投機的になるまで、プリフェッチユニット108のリダイレクトと、処理パイプラインのフラッシング(flushing)を延期する。従って、分岐予測ユニット132は、もし必要であれば、プリフェッチユニット108をリダイレクトし、処理パイプラインをフラッシングする前に、分岐命令を含む投機が成功するまで待つことができる。ある実施形態では、分岐命令についての投機の成功は、スケジューラ制御ユニット304が成功転送のために分岐命令を選択するときに転送される。他の実施形態では、分岐予測ユニット132は、分岐命令についてのソース投機状態表示および/または処理投機状態表示がクリアされるとすぐに、成功転送のためにスケジューラ制御ユニット304によって分岐命令が選択されるのを待たずに、分岐命令の結果を使用するように構成される。従って、ある実施形態では、分岐処理が成功裡に解決するとすぐに分岐リダイレクションが起こる。
もしある処理についての投機および/またはその処理のオペランド値についての投機が、その処理が発行される前に正しく解決されると、その処理についての処理投機状態表示324およびソース投機状態表示330は、その処理がスケジューラ制御ユニット304によって選択され、機能ユニット212に対して発行されるときにクリアされる。従って、機能ユニット212によって生成されたデータは、その処理の結果が非投機的であるとの関連表示(例えば、タグバス上の出力またはデータ自体に含まれる)を有する。この表示はスケジューラ制御ユニット304によって受信され、従属する処理に割り当てられたエントリ内のソース投機状態表示を更新するために用いられる。機能ユニット212によって出力されたデータに関連した表示は、その処理の結果を記憶するために割り当てられたレジスタまたは記憶位置に関連する投機状態表示(例えば、レジスタファイル、リオーダーバッファ、またはレジスタマップに記憶される)を更新するのにも用いることができる。
実施形態によっては、投機的処理およびオペランドの追跡ならびに従属する処理に対するデータ値の投機状態の伝搬は、処理がスケジューラ内でリタイアしてない最も古い処理になる前に、スケジューラから処理を除去することを可能にする。これによって、スケジューラ118内のエントリを、そうしない場合に割り当てられるのよりも早く、新しい処理に割り当てることを可能にする。
図3は、データおよび値(value)投機をサポートするマイクロプロセッサの動作方法の一実施形態を示す。ステップ350において、ある処理にスケジューラ内のあるエントリが割り当てられる。もしその処理自体が投機的であれば、ステップ352に示すように、そのエントリ内の処理投機状態表示がセットされる。同様に、ステップ352に示すように、エントリ中のソース投機状態表示を、投機的値を持つ任意のオペランドについてセットすることができる。もし処理またはオペランド値についての投機が正しく解決したとの表示を受信したならば、ステップ354−356に示すように、適切な処理投機状態表示またはソース投機状態表示はクリアされる。この表示は、先行する処理の成功が転送された結果として受信される。もしすべてのソース投機状態表示および処理投機状態表示がクリアされて、すべての投機が正しく解決されたことが示されれば、ステップ358−360に示すように、処理の結果が非投機的であるとの表示を転送することができる。この表示によって、スケジューラは、従属処理についてのソース投機状態表示を更新して、投機の成功を依存チェーンを通じて伝搬させることができる。ステップ362に示すように、スケジューラ内の処理のエントリも割り当てを取り消されて、それによってそのエントリを新しい処理に再割り当てすることが可能になる。
図4−コンピュータシステム
図4は、コンピュータシステム400の一実施形態のブロック図である。コンピュータシステム400は、バスブリッジ402を介して、システムの様々な構成要素に結合されたプロセッサ100を含む。プロセッサ100は、これまでに説明したスケジューラ118の一実施形態を含む。コンピュータシステムの他の実施形態も可能であり、考慮される。図示されたシステムでは、メインメモリ200がメモリバス406を介してバスブリッジ402に結合され、グラフィクスコントローラ408がAGPバス410を介してバスブリッジ402に結合されている。いくつかのPCIデバイス412A−412BがPCIバス414を介してバスブリッジ402に結合される。セカンダリバスブリッジ416が、EISA/ISAバス420を介して1以上のEISAまたはISAデバイス418に対する電気的インターフェイスを提供するために設けられる。この例では、プロセッサ10はCPUバス424を介してバスブリッジ402に結合され、選択的なL2キャッシュ428に結合される。実施形態によっては、プロセッサ100は統合L1キャッシュ(図示せず)を含んでいてもよい。
バスブリッジ402は、プロセッサ100と、メインメモリ200と、グラフィクスコントローラ408と、PCIバス414に接続されたデバイス群との間のインターフェイスを提供する。バスブリッジ402に接続されたデバイス群の一つからある操作を受信したとき、バスブリッジ402はその操作の目標(target)を特定する(例えば、特定のデバイス、またはPCIバス414の場合にはPCIバス414上の目標)。バスブリッジ402はその操作を目標デバイスに発送する。バスブリッジ402は一般的にソースデバイスまたはバスによって使用されるプロトコルからの操作を目標のデバイスまたはバスによって使用されるプロトコルに変換する。
ISA/EISAバスにPCIバス414に対するインターフェイスを提供することに加え、セカンダリバスブリッジ416は追加の機能を含みうる。セカンダリバスブリッジ416の外部に設けられるか、またはそれに統合される入出力コントローラ(図示せず)はコンピュータシステム400に含めることができ、キーボードおよびマウス422ならびに様々なシリアルおよびパラレルポートのための動作サポートを提供する。別の実施形態では、プロセッサ100とバスブリッジ402との間のCPUバス424に外部キャッシュユニット(図示せず)を接続可能である。他の実施形態では、外部キャッシュはバスブリッジ402に結合され、その外部キャッシュのためのキャッシュコントロールロジックをバスブリッジ402に統合することができる。L2キャッシュ428はプロセッサ100のバックサイド構成として示している。L2キャッシュ428はプロセッサ100とは分離することも、プロセッサ100のカートリッジ(例えば、スロット1またはスロットA)に統合することも、またはプロセッサ100の半導体基板に統合することも可能である。
メインメモリ200はアプリケーションプログラムが記憶され、プロセッサ100がそこから第1に実行するメモリである。好適なメインメモリ200はDRAM(ダイナミックランダムアクセスメモリ)である。例えば、SDRAM(シンクロナスDRAM)またはラムバスDRAM(RDRAM)の複数バンクが適当である。
PCIデバイス412A−412Bは、様々な周辺装置、例えばネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、および電話カードの例示である。同様に、ISAデバイス418は、例えばモデム、サウンドカード、GPIBなどの様々なデータ取得カードまたはフィールドバスインターフェイスカードなどの様々な周辺装置の例示である。
グラフィクスコントローラ408はディスプレイ426上のテキストおよびイメージのレンダリングを制御するために提供される。グラフィクスコントローラ408は、メインメモリ404へ、またはそこから効果的にシフトできる3次元データ構造をレンダリングする、当該技術分野で一般的に知られている典型的なグラフィクスアクセラレータを実装する。従って、グラフィクスコントローラ408はAGPバス410のマスタとなり、バスブリッジ402内の目標インターフェイスに対するアクセスを要求し、受信することができるので、それによってメインメモリ404へのアクセスが可能になる。専用のグラフィクスバスによって、メインメモリ404からの迅速なデータ取得を可能にする。ある種の操作に対しては、グラフィクスコントローラ408はさらにAGPバス410上でPCIプロトコルトランザクションを生成するように構成可能である。従って、バスブリッジ402のAGPインターフェイスは、PCIプロトコル目標とともに、AGPプロトコルトランザクションおよび開始(initiator)トランザクションの両方をサポートする機能を含めることができる。ディスプレイ426はイメージまたはテキストを表示できる電気的表示装置である。適切なディスプレイ426はカソードレイチューブ(CRT)、液晶ディスプレイ(LCD)などである。
上の説明ではAGP、PCIおよびISAまたはEISAバスが例として取り上げられているが、どのようなバスアーキテクチャでも必要に応じて置き換え可能であることに注意すべきである。さらに、コンピュータシステム400は追加のマイクロプロセッサ(例えば、コンピュータシステム400の選択的な要素として示すプロセッサ100a)を含むマルチプロセッサコンピュータシステムであってもよいことに注意してもらいたい。プロセッサ10aはプロセッサ100と同様のものでよい。さらに詳細には、プロセッサ100aは、プロセッサ100の完全な複製であってもよい。プロセッサ100aは独立したバス(図5に示すように)を介してバスブリッジ402に接続してもよいし、プロセッサ100とCPUバス224を共有してもよい。さらに、プロセッサ100aは、L2キャッシュ428に類似した選択的なL2キャッシュ428aに結合することも可能である。
図5−マルチノードプロセッシングシステム
図5は、上述の再発行可能なスケジューラを持つプロセッサ100を備えるコンピュータシステム400の別実施形態を示す。他の実施形態も可能であり、考慮される。図5の実施形態では、コンピュータシステム400は、いくつかのプロセッシングノード512A,512B,512Cおよび512Dを含む。各プロセッシングノードは、各プロセッシングノード512A−512Dに内蔵されたメモリコントローラ516A−516Dを介して対応するメモリ514A−514Dに結合される。さらに、プロセッシングノード512A−512Dは、プロセッシングノード512A−512D間の通信に用いられるインターフェイスロジックを備える。例えば、プロセッシングノード512Aはプロセッシングノード512Bと通信するためのインターフェイスロジック518Aと、プロセッシングノード512Cと通信するためのインターフェイスロジック518Bと、さらに他のプロセッシングノード(図示せず)と通信するための第3インターフェイスロジック518Cとを備える。同様に、プロセッシングノード512Bはインターフェイスロジック518D,518E,518Fを備え、プロセッシングノード512Cはインターフェイスロジック518G,518Hおよび518Iを備え、プロセッシングノード512Dはインターフェイスロジック518J,518Kおよび518Lを備える。プロセッシングノード512Dは、インターフェイスロジック518Lを介して、複数の入出力デバイス(例えば、ディジーチェイン構成のデバイス520A−520B)と通信するように結合される。他のプロセッシングノードも同様の方法で他のI/Oデバイスと通信可能である。
プロセッシングノード512A−512Dは、プロセッシングノード間通信のためにパケットベースのリンクを実装する。本実施形態では、リンクは単一方向信号線の組として実装される(例えば、信号線524Aはプロセッシングノード512Aからプロセッシングノード512Bへパケットを送信するのに用いられ、信号線524Bはプロセッシングノード512Bからプロセッシングノード512Cへパケットを送信するのに用いられる)。その他の信号線組524C−524Hは、図5に示すように、他のプロセッシングノード間でパケットを送信するために用いられる。一般的に、信号線の組524のそれぞれは、1以上のデータ線、データ線に対応した1以上のクロック線、転送されるパケットのタイプを示す1以上の制御線を備える。このリンクはプロセッシングノード間の通信ではキャッシュコヒーレント形式で動作し、プロセッシングノードとI/Oデバイス間の(または、バスブリッジからPCIバスまたはISAバスのような従来型の構成のI/Oバス)通信では非コヒーレント形式で動作する。さらに、このリンクは図示するようなI/Oデバイス間のディジーチェイン構成を用いて非コヒーレント形式で動作する。あるプロセッシングノードから他のプロセッシングノードへ送信されるパケットは1以上の介在ノードを通過する可能性があることに注意する必要がある。例えば、プロセッシングノード512Aからプロセッシングノード512Dに送信されるパケットは、図5に示すように、プロセッシングノード512Bまたはプロセッシングノード512Cを通過する。任意の適切なルーティングアルゴリズムを用いることができる。コンピュータシステム400の他の実施形態では、図5に示した実施形態よりも多くのプロセッシングノードを備えていてもよいし、より少ないプロセッシングノードを備えていてもよい。
一般的に、パケットはノード間の信号線524において1以上のビット時間として送信される。1ビット時間は、対応するクロック線上のクロック信号の立ち上がりエッジ、または立ち下がりエッジである。パケットには、トランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシを維持するためのプローブパケット、およびプローブおよびコマンドに応答する応答パケットが含まれる。
メモリコントローラおよびインターフェイスロジックに加えて、プロセッシングノード512A−512Dは1以上のプロセッサを含みうる。おおざっぱに言えば、プロセッシングノードは少なくとも1つのプロセッサを含み、必要に応じてメモリおよび他のロジックと通信するためのメモリコントローラを選択的に含む。さらに詳細には、各プロセッシングノード512A−512Dはプロセッサ100の1以上の複製を含みうる。外部インターフェイスユニット18は、メモリコントローラ516とともに、ノード内にインターフェイスロジック518を含む。
メモリ514A−514Dは任意の適切なメモリ装置を含む。例えば、メモリ514A−514Dは、1以上のラムバスDRAM(RDRAM)、シンクロナスDRAM(SDRAM)スタティックRAMなどを含みうる。コンピュータシステム400のアドレス空間は、メモリ514A−514Dにわたって分割される。各プロセッシングノード512A−512Dはどのアドレスがメモリ514A−514Dのうちのどれにマッピングされているか、ゆえに特定のアドレスに対するメモリ要求がどのプロセッシングノード512A−512Dにルーティングされるべきかを決定するために用いられるメモリマップを備える。一実施形態では、コンピュータシステム400内のアドレスについてのコヒーレンシポイントは、そのアドレスに対応するバイトを記憶するメモリに結合されたメモリコントローラ516A−516Dである。言い換えれば、メモリコントローラ516A−516Dは、対応するメモリ514A−514Dに対する各メモリアクセスがキャッシュコヒーレントな方法で生じることを保証する責任がある。メモリコントローラ516A−516Dは、メモリ514A−514Dにインターフェイス接続するための制御回路を備える。さらに、メモリコントローラ516A−516Dは、メモリ要求をキューするための要求待ち行列(request queue)を含む。
インターフェイスロジック518A−518Lは、リンクからのパケットを受信し、リンクにおいて送信されるべきパケットをバッファリングするための様々なバッファを備える。コンピュータシステム400は、パケット送信のための任意の適切なフロー制御機構を採用する。例えば、一実施形態では、各インターフェイスロジック518は、そのインターフェイスロジックが接続されるリンクの他端にある受信機内のバッファのタイプ別の数を記憶する。このインターフェイスロジックは、受信するインターフェイスロジックにパケットを記憶する空きのバッファがない限り、パケットを送信しない。パケットを前方にルーティングすることで受信バッファに空きができると、受信側のインターフェイスロジックは送信側のインターフェイスロジックにバッファが空いたことを示すメッセージを送信する。そのような機構は、「クーポンベース」システムと呼ばれる。
I/Oデバイス520A−520Bは適切な任意のI/Oデバイスでよい。例えば、I/Oデバイス520A−520Bは、そのデバイスが結合された他のコンピュータシステムと通信するためのデバイス(例えば、ネットワークインターフェイスカード、またはモデム)を含む。さらに、I/Oデバイス520A−520Bは、ビデオアクセラレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、および電話カード、サウンドカード、およびGPIBなどの様々なデータ取得カードまたはフィールドバスインターフェイスカードを含む。ここでは、「I/Oデバイス」という用語、および「周辺装置」という用語は同義に用いられていることに注意すべきである。
ここで、「クロックサイクル」または「クロック」という用語は、命令処理パイプラインの様々なステージがそれらのタスクを完了する時間間隔を意味する。命令および計算された値は、クロックサイクルを定義するクロック信号にしたがって、メモリ素子(レジスタまたはアレイなど)によって取得される。例えば、メモリ素子はクロック信号の立ち上がりまたは立ち下がりエッジに従って値を取得する。
上記の説明において、信号が「アサートされる」と述べた。ある信号は、それがある特定の情報の断片を表す値を運ぶときにアサートされていると定義される。特定の信号は、それがバイナリ1の値を伝達しているとき、またはそれがバイナリ0の値を伝達しているときに、アサートされていると定義することができる。
これまでの開示を完全に理解したならば、当業者には様々な変形および変更が明白になるであろう。添付の特許請求の範囲はそのような変形および変更のすべてを包含するように解釈されることを意図したものである。
本発明は、一般的にマイクロプロセッサの分野で利用可能である。
マイクロプロセッサの一実施形態を示す図。 スケジューラの一実施形態のブロック図。 マイクロプロセッサの動作方法の一実施形態の流れ図。 コンピュータシステムの一実施形態を示す図。 コンピュータシステムの別実施形態を示す図。

Claims (10)

  1. 複数の実行ユニット(124)と、
    前記複数の実行ユニットの少なくとも1つに処理を発行するように結合されたスケジューラとを備え、前記スケジューラは、
    複数のエントリ(320)を持つ処理記憶(302)であって、第1エントリは第1処理に割り当てられ、前記第1処理は一以上のオペランドを処理し、前記第1エントリは一以上のソース状態表示(330A,330B)を含み、各ソース状態表示は前記一以上のオペランドの対応するものの値が投機的であるかどうかを表示する処理記憶(320)と、
    前記処理記憶(302)に結合され、前記第1エントリに含まれる前記一以上のソース状態表示(330A,330B)の一つを更新して、第2処理の結果の値が非投機的であるとの表示の受信に応答して、前記一以上のオペランドの対応するものの値が非投機的であることを表示するように構成されるスケジューラ制御ユニットとを含む、マイクロプロセッサ(100)。
  2. 前記複数の実行ユニットの第1実行ユニットが前記第1処理の結果を生成するために前記第1処理を実行するように構成され、前記第1処理の結果は結果表示を含み、前記結果表示は、もし前記第1エントリに含まれる前記一以上のソース状態表示のいずれもが前記一以上のオペランドの対応するものが投機的であることを示している場合には、前記第1処理の結果の値が投機的であることを示す、請求項1記載のマイクロプロセッサ。
  3. 前記第2処理の前記結果に対応するタグが前記一以上のオペランドの一つに対応するタグと同じであり、前記スケジューラ制御ユニットは、タグバス上において前記第2処理の前記結果に対応するタグを受信するのに応答して、前記第1エントリに含まれる前記一以上のソース状態表示の一つを更新するように構成されている、請求項1記載のマイクロプロセッサ。
  4. 前記スケジューラ制御ユニットは、投機的状態表示を更新するために、前記タグバス上に前記第1オペランドに対応するタグが供給されるとの表示を受信することに応答して、前記一以上のソース状態表示の一つを更新するように構成されている、請求項3記載のマイクロプロセッサ。
  5. 前記スケジューラ制御ユニットは、前記第1エントリに含まれる一以上のソース状態表示のそれぞれが前記一以上のオペランドの対応するものの値が非投機的であることを表示しているときは、前記第1処理の再発行に応答して、前記第1エントリの割り当てを取り消すように構成されている、請求項1記載のマイクロプロセッサ。
  6. 前記スケジューラに結合された分岐予測ユニットと、前記分岐予測ユニットに結合されたプリフェッチユニットとをさらに備え、もし前記第1処理が分岐処理である場合は、前記分岐予測ユニットは、前記第1処理の結果に応答して、前記第1エントリ中の前記一以上のソース状態表示のそれぞれが前記一以上のオペランドの対応するものの値が非投機的であることを示すまで、前記プリフェッチユニットのリダイレクトおよび処理パイプラインのフラッシングの両方を延期するように構成されている、請求項1記載のマイクロプロセッサ。
  7. 前記スケジューラ制御ユニットは、前記処理記憶中の前記複数のエントリの一つに記憶されている処理を選択し、機能ユニットに対して実行のために前記選択された処理を供給するように構成され、前記スケジューラ制御ユニットは、前記処理記憶中の各エントリに含まれるソース状態表示によって示される、非投機的オペランドを持つ処理の選択を優先するように構成される請求項1記載のマイクロプロセッサ。
  8. 第1処理に対する第1オペランドの値が投機的であることを示す第1ソース状態表示(330A)であって、前記第1オペランドは第2処理の結果であり、
    第2処理の結果の値が非投機的であることを示す第2結果状態表示の受信に応答して、前記第1ソース状態表示を更新して、前記第1オペランドの値が非投機的であることを表示し、
    前記更新に応答した、前記第1処理の結果の値が非投機的であることを示す第1結果状態表示を含む方法。
  9. 前記第1処理をスケジューラに対してディスパッチする段階をさらに含み、前記ディスパッチは、前記スケジューラ中の第1エントリを前記第1処理に割り当てる段階を含み、前記第1エントリは第1ソース状態表示を含む、請求項8記載の方法。
  10. 第1オペランドの値が投機的であることを示す第1分岐命令の第1オペランドに対応する第1ソース状態表示と、
    第2処理の結果の値が非投機的であるとの表示を受信する段階であって、前記第2処理の結果が前記第1オペランドであり、
    前記受信に応答して、前記第1ソース状態表示を更新して、前記第1オペランドの値が非投機的であることを示し、
    前記第1分岐命令の結果の値に応答して、前記更新が行われるまで、命令プリフェッチ機構のリダイレクションおよび処理パイプラインのフラッシングを遅らせる段階とを含む方法。
JP2004532613A 2002-08-28 2003-07-16 データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ Expired - Lifetime JP4170292B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/229,563 US6950925B1 (en) 2002-08-28 2002-08-28 Scheduler for use in a microprocessor that supports data-speculative execution
PCT/US2003/022696 WO2004021174A2 (en) 2002-08-28 2003-07-16 Scheduler for use in a microprocessor that supports data-speculative-execution

Publications (3)

Publication Number Publication Date
JP2005537567A true JP2005537567A (ja) 2005-12-08
JP2005537567A5 JP2005537567A5 (ja) 2007-12-13
JP4170292B2 JP4170292B2 (ja) 2008-10-22

Family

ID=31976256

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004532613A Expired - Lifetime JP4170292B2 (ja) 2002-08-28 2003-07-16 データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ

Country Status (8)

Country Link
US (1) US6950925B1 (ja)
EP (1) EP1532521B1 (ja)
JP (1) JP4170292B2 (ja)
KR (1) KR100981168B1 (ja)
CN (1) CN1320452C (ja)
AU (1) AU2003252081A1 (ja)
TW (1) TWI315488B (ja)
WO (1) WO2004021174A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953962B2 (en) 2007-03-20 2011-05-31 Fujitsu Limited Multiprocessor system and control method thereof
JP2012525620A (ja) * 2009-04-28 2012-10-22 イマジネイション テクノロジーズ リミテッド マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7415597B2 (en) * 2004-09-08 2008-08-19 Advanced Micro Devices, Inc. Processor with dependence mechanism to predict whether a load is dependent on older store
US7552318B2 (en) * 2004-12-17 2009-06-23 International Business Machines Corporation Branch lookahead prefetch for microprocessors
US7444498B2 (en) * 2004-12-17 2008-10-28 International Business Machines Corporation Load lookahead prefetch for microprocessors
US7421567B2 (en) 2004-12-17 2008-09-02 International Business Machines Corporation Using a modified value GPR to enhance lookahead prefetch
US8046558B2 (en) * 2005-09-16 2011-10-25 The Research Foundation Of State University Of New York File system having predictable real-time performance
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US8677105B2 (en) 2006-11-14 2014-03-18 Soft Machines, Inc. Parallel processing of a sequential program using hardware generated threads and their instruction groups executing on plural execution units and accessing register file segments using dependency inheritance vectors across multiple engines
US7730289B2 (en) * 2007-09-27 2010-06-01 Faraday Technology Corp. Method for preloading data in a CPU pipeline
TWI469055B (zh) * 2008-06-27 2015-01-11 Realtek Semiconductor Corp 網路工作卸載裝置與方法
US20100070730A1 (en) * 2008-09-17 2010-03-18 Sebastian Pop Minimizing memory access conflicts of process communication channels
CN101789952A (zh) * 2009-01-23 2010-07-28 瑞昱半导体股份有限公司 网络工作卸载装置与方法
US8977837B2 (en) * 2009-05-27 2015-03-10 Arm Limited Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI520070B (zh) 2011-03-25 2016-02-01 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
TWI610224B (zh) * 2011-11-23 2018-01-01 英特爾股份有限公司 微處理器加速編碼最佳化器
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
KR102063656B1 (ko) 2013-03-15 2020-01-09 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
US10061589B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387158B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10303525B2 (en) 2014-12-24 2019-05-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061583B2 (en) * 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9785442B2 (en) 2014-12-24 2017-10-10 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
CN108279928B (zh) * 2018-01-30 2021-03-19 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置
CN108415730B (zh) * 2018-01-30 2021-06-01 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
JPH09500989A (ja) * 1993-05-14 1997-01-28 インテル・コーポレーション 分岐ターゲット・バッファにおける推論履歴
US5452426A (en) * 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US6185668B1 (en) 1995-12-21 2001-02-06 Intergraph Corporation Method and apparatus for speculative execution of instructions
US5966544A (en) 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US6212626B1 (en) 1996-11-13 2001-04-03 Intel Corporation Computer processor having a checker
US6205542B1 (en) 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US6094717A (en) 1998-07-31 2000-07-25 Intel Corp. Computer processor with a replay system having a plurality of checkers
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6564315B1 (en) 2000-01-03 2003-05-13 Advanced Micro Devices, Inc. Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
JP2003259295A (ja) * 2002-03-04 2003-09-12 Canon Inc 撮像装置
US6845442B1 (en) 2002-04-30 2005-01-18 Advanced Micro Devices, Inc. System and method of using speculative operand sources in order to speculatively bypass load-store operations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953962B2 (en) 2007-03-20 2011-05-31 Fujitsu Limited Multiprocessor system and control method thereof
JP2012525620A (ja) * 2009-04-28 2012-10-22 イマジネイション テクノロジーズ リミテッド マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置

Also Published As

Publication number Publication date
JP4170292B2 (ja) 2008-10-22
KR20050037596A (ko) 2005-04-22
EP1532521A2 (en) 2005-05-25
CN1320452C (zh) 2007-06-06
WO2004021174A2 (en) 2004-03-11
EP1532521B1 (en) 2014-03-12
AU2003252081A1 (en) 2004-03-19
KR100981168B1 (ko) 2010-09-10
US6950925B1 (en) 2005-09-27
TWI315488B (en) 2009-10-01
TW200405201A (en) 2004-04-01
WO2004021174A3 (en) 2004-06-17
CN1678986A (zh) 2005-10-05

Similar Documents

Publication Publication Date Title
JP4170292B2 (ja) データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ
JP4105684B2 (ja) ロード操作の推測結果をレジスタ値にリンクするためのシステムおよび方法
JP3866261B2 (ja) ロード/ストア操作をバイパスするために投機的ソースオペランドを使用するシステムおよび方法
US7263600B2 (en) System and method for validating a memory file that links speculative results of load operations to register values
US7024537B2 (en) Data speculation based on addressing patterns identifying dual-purpose register
US7089400B1 (en) Data speculation based on stack-relative addressing patterns
US7415597B2 (en) Processor with dependence mechanism to predict whether a load is dependent on older store
US7165167B2 (en) Load store unit with replay mechanism
US7363470B2 (en) System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
US7266673B2 (en) Speculation pointers to identify data-speculative operations in microprocessor
US7937569B1 (en) System and method for scheduling operations using speculative data operands
US7222226B1 (en) System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060712

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070306

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070329

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070906

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20070906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080129

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080528

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080806

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

Free format text: PAYMENT UNTIL: 20110815

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4170292

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120815

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130815

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term