JP6143306B2 - アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 - Google Patents

アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 Download PDF

Info

Publication number
JP6143306B2
JP6143306B2 JP2015146076A JP2015146076A JP6143306B2 JP 6143306 B2 JP6143306 B2 JP 6143306B2 JP 2015146076 A JP2015146076 A JP 2015146076A JP 2015146076 A JP2015146076 A JP 2015146076A JP 6143306 B2 JP6143306 B2 JP 6143306B2
Authority
JP
Japan
Prior art keywords
instruction
store
load
hazard
entry
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.)
Active
Application number
JP2015146076A
Other languages
English (en)
Other versions
JP2015228237A (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.)
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
Priority claimed from US12/644,923 external-priority patent/US8468325B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2015228237A publication Critical patent/JP2015228237A/ja
Application granted granted Critical
Publication of JP6143306B2 publication Critical patent/JP6143306B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

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)
  • Executing Machine-Instructions (AREA)

Description

本発明は、一般に、マイクロプロセッサに関し、より具体的には、アウトオブオーダー方式(out-of-order)で実行されるロード(load)及びストア(store)動作の管理に関する。
機械命令をアウトオブオーダー方式で発行し、実行することができるマイクロプロセッサは、一般に、ロードがストアの前に実行されることを可能にする。この特徴は、ロードアドレス及びストア・アドレスの両方が同じ物理アドレスをもたないことを条件として、大きな性能の利点を可能にする。典型的なプログラムにおいては、ロードはストアより先に進み、それらの物理アドレスが合致する頻度は低い。しかしながら、この書き込み違反(store violation)状態の発見は、典型的には、命令実行パイプラインの終わりの方の段階であるので、回復の不利益は相当に厳しいものとなり得る。例えば、回復プロセスは、典型的には、違反を引き起こしたロード命令、及びロード命令以降のプログラム順における全てのより新しい命令を無効にすること、次いでロード命令を再発行することを要する。ストア比較ハザード(store-compare hazard)を管理するための従来のメカニズムは、一般に、これらのハザードをあまり有効に管理するものではない。
「z/Architecture Principles of Operation」、SA22−7832−07、英語版、International Business Machines社、2009年2月発行
アウトオブオーダー方式で実行されるロード及びストア動作を管理するための方法及び情報処理システムを提供する。
一実施形態において、アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法が開示される。この方法は、ロード命令及びストア命令のうちの少なくとも1つを実行することを含む。この実行に基づいて、オペランド・ストア比較ハザードが発生したという判断がなされる。この判断に基づいて、オペランド・ストア比較ハザード予測テーブル内にエントリが作成される。このエントリは、少なくとも、実行された命令の命令アドレスと、命令に関連付けられたハザード表示フラグ(ビットのような)とを含む。ハザード表示フラグは、命令がオペランド・ストア比較ハザードに遭遇したことを示す。
別の実施形態において、アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法が開示される。この方法は、命令をフェッチすることを含む。命令は、ロード命令及びストア命令のうちの1つである。命令はデコードされる。
デコードに応答して、命令の命令アドレスについてオペランド・ストア比較ハザード予測テーブルに問い合わせする。オペランド・ストア比較ハザード予測テーブルは、ロード命令に関する第1のエントリと、ストア命令に関する第2のエントリとを含む。第1及び第2のエントリは互いに独立している。第1及び第2のエントリは、それぞれロード命令及びストア命令が以前にオペランド・ストア比較ハザードに遭遇したことを示す。第1及び第2のエントリは、少なくとも、それぞれロード命令及びストア命令の1つの命令アドレスと、オペランド・ストア比較ハザードに関連付けられたハザード表示フラグとを含む。予測テーブルに問い合わせすることに応答して、命令が、オペランド・ストア比較ハザード予測テーブル内の第1及び第2のエントリの1つに関連付けられているという判断がなされる。この判断に基づいて、命令に関連付けられた第1及び第2のエントリのうちの1つの中に含まれるハザード表示フラグが識別される。命令が第1のエントリに関連付けられるとき、命令はロード命令である。識別されたハザード表示フラグに基づいて、命令をマーク付けする。このマーク付けは、命令の実行を、所与の実行段階に達した命令に関連付けられたハザード表示フラグと実質的に類似したハザード表示フラグを含む予測テーブルのエントリと関連した少なくとも1つのストア命令に依存させる。命令が第2のエントリに関連付けられるとき、この命令はストア命令である。
さらに別の実施形態において、アウトオブオーダー方式で実行されるロード及びストア動作を管理するための情報処理システムが開示される。この情報処理システムは、メモリと、メモリに通信可能に結合されたプロセッサとを含む。プロセッサは、ロード命令及びストア命令のうちの少なくとも1つを実行することを含む方法を実行するように構成される。この実行に基づいて、オペランド・ストア比較ハザードに遭遇したという判断がなされる。この判断に基づいて、オペランド・ストア比較ハザード予測テーブル内にエントリが作成される。エントリは、少なくとも、実行された命令の命令アドレスと、命令に関連付けられたハザード表示フラグ(ビットのような)とを含む。ハザード表示フラグは、命令がオペランド・ストア比較ハザードに遭遇したことを示す。
同様の参照番号が、個々の図面を通じて同一の又は機能的に類似した要素を指しており、以下の詳細な説明と共に本明細書内に組み込まれて、本明細書の一部を形成する添付図面は、種々の実施形態をさらに示し、本発明に従った種々の原理及び全ての利点を説明するのに役立つ。
本発明の一実施形態による動作環境の一例を示す。 本発明の一実施形態によるロードキュー・エントリの一例を示す。 本発明の一実施形態によるストアキュー・エントリの一例を示す。 本発明の一実施形態によるオペランド・ストア比較ハザード予測テーブルの一例を示す。 本発明の種々の実施形態による、オペランド・ストア比較ハザード予測テーブル内のエントリを作成する種々の例を示す動作フロー図である。 本発明の種々の実施形態による、オペランド・ストア比較ハザード予測テーブル内のエントリを作成する種々の例を示す動作フロー図である。 本発明の種々の実施形態による、オペランド・ストア比較ハザード予測テーブル内のエントリを作成する種々の例を示す動作フロー図である。 本発明の種々の実施形態による、オペランド・ストア比較ハザードを予測し、回避する一例を示す動作フロー図である。 本発明の一実施形態による情報処理システムの一例を示すブロック図である。
必要に応じて、本発明の詳細な実施形態を本明細書で開示するが、開示される実施形態は、種々の形態で具体化することができる本発明の例にすぎないことを理解すべきである。従って、本明細書で開示される特定の構造上及び機能上の詳細は、限定として解釈されるべきではなく、単に特許請求の範囲の基礎として、及び、事実上あらゆる適切に詳述される構造及び機能において本発明を様々に用いることを当業者に教示するための代表的な基礎として解釈されるべきである。さらに、本明細書で用いられる用語及び語句は、限定を意図するものではなく、寧ろ、本発明の分かりやすい説明を提供することを意図するものである。
本明細書で用いられる「1つの(a)」又は「1つの(an)」という用語は、1つ以上として定義される。本明細書で用いられる「複数の(plurality)」という用語は、2つ以上として定義される。本明細書で用いられる「別の(another)」という用語は、少なくとも第2の又はそれ以上として定義される。本明細書で用いられる「含む(including)」及び「有する(having)」という用語は、備える(comprising)(すなわち、開放的語法(open language))として定義される。本明細書で用いられる「結合される(coupled)」という用語は、必ずしも直接及び機械的にではなく、接続されたものとして定義される。特に断らない限り、複数形及び単数形は同じである。
概要
ロード命令及びストア命令をアウトオブオーダー方式で実行するマイクロプロセッサにおいて、依存しているロードとストアの間の並べ替え(reordering)が原因で、3つのオペランド・ストア比較ハザード(ストア・ヒット・ロード(store-hit-load)、転送不能ロード・ヒットストア(non-forwardableload-hit store)、及び持続的転送不能ロード・ヒットストア(persistentnon-forwardable load-hit store))が発生することがある。例えば、アドレスAに対するストアに続いてアドレスAに対するロードが行われると仮定する。1つの状況においては、ロードは、ストアの前に実行することができる、即ち、ストアキュー(Store Queue、STQ)は、ストア・アドレス情報を含まない。従って、ロードが実行されるとき、ストアキューは競合を示さない。ひとたびロードが実行を終了すると、ストアが実行され、ロードキュー内の既に終了したロードに対する競合を検出し、パイプラインをフラッシュして、ロード及びあらゆる後続の命令を停止させる。これは、(既に以前推論的に実行されたロード及び全ての後続の命令を)再実行するのに大量の作業が必要であるため、非常に費用のかかる動作である。上記の状況は、ストア・ヒット・ロード(SHL)と呼ばれる。
別の状況においては、ストアはそのアドレス計算を実行するが、例えばデータ生成命令が長い待ち時間を有する(例えば、分割する)ために、ストアに関するデータが遅延される。次いで、ストア・データがストアキュー(STQ)に書き込まれる前にロードが実行される。ロードは、それがストアに依存していることを検出するが、データが入手可能でないので、ストア・データ転送(store-data-forwarding)を実行することができない。従って、ロードは、拒絶され、後でストア・データが入手可能になった後に再試行する必要がある。この状況は、転送不能ロード・ヒット・ストア(nf−LHS)と呼ばれる。
さらに別の状況においては、上述したnf−LHSの状況に類似して、特定のストア命令(例えば、これらがライン交差している場合、又は長さが8バイトを上回る場合)、一般に、(特定のストアキュー(STQ)設計毎に)転送できないことがある。この状況において、ロードは、ストア・データが既にストアキュー(STQ)内に書き込まれているとしても、ストアがL1キャッシュにライトバックされる(write back、書き戻される)まで、何度も繰り返して再循環させる必要がある。この状況は、「持続的nf−LHS」と呼ばれる。
アウトオブオーダー処理を管理するための従来のメカニズムは、一般に、上述した3つのハザードを有効に処理するものではない。例えば、幾つかの従来のメカニズムは、ロードを全ての先行するストア命令に依存させることによって、命令レベル並列処理(Instruction-Level-Parallelism、ILP)を制限する。他の従来のメカニズムは、一般に、ロード命令が複数のストア命令に依存しており、これらの複数のストア命令がロード命令に通じる異なる分岐パス上にあり得る、一般的な場合を処理することができない。
しかしながら、本発明の種々の実施形態の1つの利点は、上述した3つのハザードが有効に回避されることである。少なくとも1つの実施形態において、どのロード及びストアが依存性を有するか、並びに、これらの依存性のタイプ(例えば、e−ビット又はw−ビット依存性)を予測する予測テーブルが作成される。次いで、命令のデコード後、e−ビットロードは、全ての先行するe−ビット・ストアに依存させられ、命令発行論理により、あたかも正規のレジスタ依存性であるかのように処理される。これにより、全てのe−ビット・ストアがそのアドレス計算を実行し、そのデータをストアキュー(STQ)に書き込むまで、e−ビットロード命令の実行が有効に遅延される。このことにより、事実上、SHL及びnf−LHSハザードが取り除かれることになる。w−ビット依存性に関して、ロードは、w−ビット・ストアとして予測された最後のストアのL1キャッシュ・ライトバックに依存させられる。このことは、持続的nf−LHSハザードを有効に防止する。
動作環境
図1は、本発明の1つ又は複数の実施形態による、1つ又は複数の処理命令及びデータに適用可能な動作環境100の一例を示すブロック図である。プロセッサ101は、種々の実行ユニット、レジスタ、バッファ、メモリ、及び全て集積回路によって形成された他の機能ユニットを含む、スーパースカラー・プロセッサのような単一の集積回路プロセッサを含む。一実施形態において、プロセッサ101は、命令をアウトオブオーダー方式で発行し、実行することができる。
一実施形態において、プロセッサ101は、命令フェッチ・ユニット(IFU)102と、命令デコード・ユニット(IDU)104と、命令発行ユニット(ISU)106と、ロード/ストア・ユニット(LSU)108と、オペランドアドレス生成ユニット110と、固定小数点ユニット112(又は、いずれかの他の実行ユニット)と、種々の他の実行ユニット、レジスタ、バッファ、メモリ、及び他の機能ユニットのような他のコンポーネント114とを含む。一実施形態において、命令フェッチ・ユニット(IFU)102は、オペランド・ストア比較(operand-store-compare、OSC)予測テーブル116を含む。OSC予測テーブル116は、以下に詳述される。
この実施形態において、命令発行ユニット106は、発行キュー118を含む。この実施形態において、ロード/ストア・ユニット(LSU)108は、ロードキュー(LDQ)120と、ストアキュー(STQ)122と、L1キャッシュ124とを含む。ロードキュー(LDQ)120及びストアキュー(STQ)122の各々は、それぞれ、未処理のロード命令及びストア命令に関連付けられた付加的な情報を追跡するエントリ126、エントリ128をそれぞれ含む。本発明の種々の実施形態は、図1に示されるようなプロセッサ101の構成に限定されるものではないことに留意すべきである。本発明の実施形態は、図1に示される例とは異なり得る種々のアーキテクチャに適用可能である。
一般に、命令フェッチ・ユニット(IFU)102は、L1キャッシュ124の一部とすることができる、Iキャッシュ内にストアされた命令コードをフェッチする。これらのフェッチされた命令コードは、命令デコード・ユニット(IDU)104によって命令処理データにデコードされる。ひとたびデコードされると、命令はディスパッチされ、適切な発行キュー118内に一時的に入れられる。命令は、それらの全ての必要なオペランドが入手可能になるまで、発行キュー118内に保持される。発行キュー118から、命令を、実行のために、プロセッサ100の実行ユニット、例えばロード/ストア・ユニット(LSU)108、固定小数点ユニット(FXU)112等などに日和見的に(opportunistically)発行することができる。換言すれば、命令は、アウトオブオーダー方式で発行することができる。しかしながら、命令のいずれかを再発行する必要がある場合に備えて、これらの命令は、命令の実行が完了し、もしあれば、結果データがライトバックされるまで、発行キュー118内に保持される。
実行ユニット108、112の1つの中での実行中、命令は、実行ユニットに結合されたレジスタファイル内の1つ又は複数の設計済み(architected)及び/又はリネーム・レジスタから、もしあれば、オペランドを受け取る。実行ユニットが1つの命令の実行を終えた後、実行ユニットはその結果を、命令で定められるように指定された宛先に書き込み、発行キューからその命令を取り除き、次いで、命令の完了をプログラム順にスケジュールすることができる。オペランドアドレス生成ユニット110は、ロード命令及びストア命令に関するオペランドアドレス情報を生成し、これらのアドレスをそれぞれのロードキュー(LDQ)及びストアキュー(STQ)122に書き込む。固定小数点ユニット(FXU)112は、データ値をストアキュー(STQ)122に書き込む。
上述のように、ロード/ストア・ユニット(LSU)108は、命令発行ユニット(ISU)106からロード命令及びストア命令を受け取り、そのロード命令及びストア命令を実行する。一般に、各々のロード命令は、必要とされるデータのアドレスを指定するアドレス情報を含む。一実施形態において、ロード/ストア・ユニット(LSU)108は、ロード命令及びストア命令のアウトオブオーダー実行をサポートし、これにより高レベルの性能を達成することができる。一実施形態において、ロード/ストア・ユニット(LSU)108は、パイプライン型である。つまり、ロード/ストア・ユニット(LSU)108は、順に実行される一組の順序付けられたパイプライン・ステージを介して、ロード命令及びストア命令を実行する。
OSCハザード管理
上述のように、3つのタイプのハザード(ストア・ヒット・ロード、転送不能ロード・ヒットストア、及び持続的転送不能ロード・ヒットストア)は、ロード命令及びストア命令をアウトオブオーダー方式で実行するプロセッサ内で発生し得る。従って、図1に関して上述した一般的な処理メカニズムに加えて、以下の実施形態の1つ又は複数をプロセッサ100内で実施し、これらのOSCハザードを予測し、回避することもできる。
一般に、あらゆるロードにはロードキュー(LDQ)内のエントリが割り当てられ、このエントリは、ロードが実行され、完了するまで各々のロードのアドレスを保存する。あらゆるストアにはストアキュー(STQ)122内のエントリが割り当てられ、同様にこのエントリは、ストアが完了し、データをL1キャッシュ124に書き込むまで、ストア・アドレス計算の実行から、ストア・アドレスを保存する。しかしながら、検出されたハザードのタイプに基づいて、ロードキュー(LDQ)エントリ及びストアキュー(STQ)エントリは、OSCハザードを予測し、回避するための付加的な情報を含むこともできる。
例えば、一実施形態において、ロード/ストア・ユニット(LSU)108がロード命令を実行し、このロードをストアキュー(STQ)122内の対応するエントリと比較する。ロード命令は、ストア・データ転送を実行することができないと判断する。例えば、ストア・データがSTQに書き込まれる前にロードが実行される(nf−LHS)、又はデータが入手可能なときでさえ、ストア・データ転送が許可されない(持続的nf−LHS)。次に、ロード命令がnf−LHSハザードを検出した場合、ロード命令は、これが比較したストアキュー(STQ)エントリ内に、「e−フラグ」(例えば、実行フラグ)のようなOSCハザード表示ビットを設定する。或いは、ロード命令が持続的nf−LHSハザードを検出した場合、ロード命令は同様に、これが比較したストアキュー(STQ)エントリ内に、「w−フラグ」(例えば、書き込みフラグ)のようなOSCハザード表示ビットを設定する。ロード命令はまた、ロードキュー(LDQ)のそれ自体のエントリ内に、e−フラグ又はw−フラグなどの同じOSCハザード表示ビットを設定する。
実行されたストア命令がSHLハザードを検出し、ロードキュー(LDQ)エントリに対してSHLフラッシュを実行すると、ストア命令は、それ自体のストアキュー(STQ)エントリ内に「e−フラグ」のようなOSCハザード表示ビットを設定し、命令が比較する(最も古い)ロードキュー(LDQ)エントリ内に、「e−フラグ」のようなOSCハザード表示ビットを設定する。結果として生じるフラッシュのためにこのロードキュー(LDQ)エントリは無効にされるが、「e−フラグ」はロードキュー(LDQ)内に保持されることに留意すべきである。プロセッサのパイプラインがフラッシュされた命令の再フェッチ及び再実行を開始するとき、同じロードが、今やフラッシュ前から設定された「e−フラグ」を有する同じロードキュー(LDQ)エントリに割り当てられる。
図2及び図3はそれぞれ、本発明の一実施形態による、ロードキュー(LDQ)エントリ226及びストアキュー(STQ)エントリ328の一例を示す。図2に見られるように、オペランドアドレス情報204、有効ビット情報206、及び他の一般情報210などの一般情報に加えて、ロードキュー(LDQ)120内のエントリ226はまた、1つ又は複数のOSCハザード表示ビット208も含む。上述のように、このOSCハザード表示ビット208は、ロード命令がnf−LHSハザードに遭遇したのか、又は持続的nf−LHSハザードに遭遇したのかに応じて、e−フラグ又はw−フラグとすることができる。上述のように、このOSCハザード表示ビット208は、ストア命令によって設定することもできる。他のタイプのフラグ等を用いて、ロード命令がnf−LHSハザード又は持続的nf−LHSハザードに遭遇したことを示すこともできることに留意すべきである。
図3に見られるように、オペランドアドレス情報304、有効ビット情報306、データ値情報308、及び他の一般情報312のような一般情報に加えて、ストアキュー(STQ)122内のエントリ328は、1つ又は複数のOSCハザード表示ビット310も含む。上述のように、このOSCハザード表示ビット310は、ロード命令がnf−LHSハザードに遭遇したのか、又は持続的nf−LHSハザードに遭遇したのかに応じて、e−フラグ又はw−フラグとすることができる。また、上述のように、このOSCハザード表示ビット310は、ストア命令がSHLハザードに遭遇した場合にe−フラグとすることができる。
他のタイプのフラグ等を用いて、ロード命令がnf−LHSハザード又は持続的nf−LHSハザードに遭遇したこと、及び/又はストア命令がSHLハザードに遭遇したことを示すことができることに留意すべきである。また、ロード命令又はストア命令は、それぞれのキューのエントリ内に設定したのと同じビットを他のキューのエントリ内に設定するので、キュー120、122の1つの中のOSCハザード表示ビット208、310は、他のキュー120、122内の少なくとも1つのOSCハザード表示ビット208、310と合致する。また、OSCハザードを予測し、回避するために、OSCハザード表示ビット情報208、310をどのように使用するかについての考察が以下に与えられる。
ひとたびロード命令が完了すると、ロード命令は、ロードキュー(LDQ)内にe−フラグ又はw−フラグのようなOSCハザード表示ビット情報を有するかどうかを判断する。OSCハザード表示ビット情報を有する場合には、ロード命令はこれを命令フェッチ・ユニット(IFU)102に示す。次に、一実施形態において、命令フェッチ・ユニット(IFU)102は、この特定のロード命令に関するエントリをOSC予測テーブル116内に生成する。OSC予測テーブルは、ロードの命令アドレスに基づいてエントリを作成し、このロードに関する1つ又は複数のフラグを記憶する。例えば、OSC予測テーブル内のエントリは、ロードがe−フラグ及び/又はw−フラグに関連付けられているかどうかを示し、ここで、ロードが複数のストアキューに対して比較する場合、ロードは両方のフラグを有することができる。
ストア命令が完了し、L1キャッシュ124にライトバックされると、ストア命令は、該ストア命令がストアキュー(STQ)122内に、e−フラグ又はw−フラグのようなOSCハザード表示ビット情報を有するかどうかを判断する。OSCハザード表示ビット情報を有する場合、ストア命令は、これを命令フェッチ・ユニット(IFU)102に示す。次に、命令フェッチ・ユニット(IFU)102は、OSC予測テーブル116内に、ストア命令の命令アドレスと、ストアの命令アドレスの下の1つ又は複数のフラグとを含む、この特定のストア命令に関するエントリを生成する。また、ストア命令がL1キャッシュ124にライトバックされるとき、ストアキュー(STQ)122は、命令発行ユニット(ISU)106に、ストアキュー(STQ)122内の所与のストア命令のストアキュー(STQ)エントリ番号(スタグ)を通知する。
図4は、OSC予測テーブル116内のロード命令エントリ及びストア命令エントリの一例を示す。特定的には、図4は、ロード命令エントリ402が、命令の命令アドレス404と、エントリ有効ビット406と、ロード「e」ビット408及びロード「w」ビット410のような1つ又は複数のハザード表示ビットとを含むことを示す。図4は、ストア命令エントリ403は、命令の命令アドレス412と、エントリ有効ビット414と、ストア「e」ビット416及びストア「w」ビット418のような1つ又は複数のハザード表示ビットとを含むことを示す。上述のように、ロード命令及びストアキュー(STQ)122から得られた情報に基づいて、OSCハザード表示ビット408、410、416、418が設定される。OSC予測テーブル116内の各々のロード及びストア・エントリは、互いに独立して作成される。換言すれば、OSC予測テーブル116内のロード・エントリは、OSC予測テーブル116内のストア・エントリ又はそれと関連した他のいずれのテーブルも参照せず、かつ、それらによっても参照されず、さらに言えば逆も又同様である。
例えば、図4に示されるように、ロードキュー(LDQ)エントリ内に「e」依存性ビット(dependencybit)を設定し、対応するストア命令のストアキュー(STQ)エントリ内に「e」ビットを設定したロード命令は、これを命令フェッチ・ユニット(IFU)102に通知し、次に、予測テーブル116内にロード命令及びストア命令の各々についてのエントリ402、403を作成する。この例においては、ロード「e」ビット408がロード命令エントリ402内に設定され、ストア「e」ビット416がストア命令エントリ403内に設定される。種々の技術を用いて、命令アドレスに基づいた予測テーブルを生成できることにも留意すべきである。例えば、オーバーフローに向けられた技術(最長時間未使用技術)、読み出し/書き込み競合(キューイング)、及び予測テーブルに対する類似の技術を用いることができる。
ひとたび予測テーブル116がポピュレートされる(populate)と、命令が命令フェッチ・ユニット(IFU)102によりフェッチされ、命令フェッチ・ユニット(IFU)102は、命令デコード・ユニット(IDU)104によりデコードするためにパイプライン内に送られる度に、並行して、OSC予測テーブル116に問い合わせし、この情報を命令デコード・ユニット(IDU)104に送る。この問い合わせは、所与のフェッチされた命令が「e」又は「w」ビットを含むロード及び/又はストアとして認識されるかどうかを判断するために、命令デコード・ユニット(IDU)104により用いられる。例えば、命令フェッチ・ユニット(IFU)102は、命令の命令アドレスを用いて予測テーブル116に問い合わせし、対応する命令アドレスを有するエントリを識別する。OSC予測テーブル116から得られた情報は、命令デコード・ユニット(IDU)104から命令発行ユニット(ISU)106に渡される。
命令発行ユニット(ISU)106は、この依存性情報を用いて、以下のことを実行する。命令がストア・e−ビットを含む場合、命令発行ユニット(ISU)106は、その命令をストア・e−ビット命令として記憶する。命令がストア・w−ビットを有する場合、命令発行ユニット(ISU)106は、その命令に対して割り当てられたストアキュー(STQ)エントリ番号(「スタグ(stag)」)を記憶する。一実施形態において、命令発行ユニット(ISU)106は、w−スタグと呼ばれる、最も新しいそうしたスタグを記憶する。命令がロード・e−ビットを有する場合、命令発行ユニット(ISU)106は、この命令を、ストア・e−ビットでマーク付けされたあらゆる先行命令に依存するものとしてマーク付けする。この依存性は、所与の汎用レジスタのライターとリーダーの間で生成される依存性とよく似ている。命令発行ユニット(ISU)106は、ロード命令が、ストア命令が正常に実行され、ストア・アドレス及びデータがストアキュー(STQ)エントリ内に書き込まれるまで実行されないことを保証する。その時点までロードを遅延させることにより、命令発行ユニット(ISU)106は、ロードがストア転送済みデータをストアキュー(STQ)エントリから取得することができ、従って、SHLハザード又はnf−LHSハザードが回避されることを保証する。
命令がロード・w−ビットを有する場合、ロード(即ち、w−スタグ)前の最後のストア・w−ビット・ストアのスタグがL1キャッシュ124にライトバックされるまで、命令発行ユニット(ISU)106がロードの実行を許容しないように、ロードがマーク付けされる(上述のように、ストアキュー(STQ)122は、いつライトバックが行われるかを、命令発行ユニット(ISU)106に通知する)。ストアがL1キャッシュ124にライトバックするまでロードを遅延させることにより、持続的nf−LHSハザードが防止される。事実上、命令発行ユニット(ISU)106によって実行される上記のプロセスは、全てのe−ビットロードを、全ての先行するe−ビット・ストアの実行に依存させ、全てのw−ビットロードを全ての先行するw−ビット・ストアのライトバックに依存させる。
例えば分岐の誤りのために、命令発行ユニット(ISU)106内の最後にw−スタグを設定したストア命令がフラッシュされることもあることに留意すべきである。しかしながら、依然としてw−スタグを追跡することができる。例えば、一実施形態において、最新のフラッシュされていないw−ビット・ストアが、保存された最新のw−ビット・ストアとして指定される。この選択肢は、相当な追跡費用を必要とし得る。別の実施形態においては、最新のフラッシュされていないスタグが、保存された最新のw−ビット・ストアとなる。このストアを、実際に、w−ビット・ストアとしてマーク付けする必要はない。この選択肢は、あまり追跡費用を必要とせず、そのストアがw−ビット予測を有していなかった場合でも、ストアをw−ストアとして処理する。このことは、僅かな性能の低下をもたらす。さらに別の実施形態においては、保存された最新のw−ビット・ストアが無効にされる。保存された最新のw−ビット・ストアが依然として無効状態にある間にディスパッチされたw−ビットロードは、スタグ依存性をマーク付けしない。
ロードでもストアでもある命令に対して、これらの命令が、それ自体へのw−ビット依存性をマーク付けしないことを確実にするように、ステップが取られる。これは特に、命令が複数の部分で構成される場合に問題となる。一実施形態においては、w−ビットをマーク付けしたストア部分が常にw−ビットをマーク付けしたロード部分の後にくるのを確実にすることによって、或いは、命令の全ての部分がディスパッチされるまで、保存された最新のw−ビット・ストアが更新されないことを確実にすることによって、この依存性の防止を達成することができる。一般に、それらの部分が互いに対して単にインオーダー方式に発行されるので、複数の部分からなる命令内でe−ビット依存性をマーク付けするのが安全である。しかしながら、必要に応じて、類似の方法を用いてこの依存性を防止することが可能である。
一実施形態において、e−ビットでマーク付けされたストアのベクトルが保持され(他のレジスタ依存性のような追跡メカニズムが可能である、発行キュー・エントリ毎に1ビット)、e−ビットでマーク付けされたロードは、ベクトル内の対応するビットが設定される全てのより古い有効な発行キュー・エントリに依存させられる。ベクトル内のビットは、命令がそれらにディスパッチされるときに書き込まれ、命令がe−ビット・ストアである場合に設定状態におかれ、他の場合には未設定状態におかれる。
代替的に、ロード及びストアは、e及びwビットのグループで追跡することができる(例えば、5個のe−ビットe1,...,e5が存在し、e1−ストアとe1−ロードだけが対にされる、e2−ストアとe2−ロードが対にされるなど)。ハザード時には、ロードキュー(LDQ)及びストアキュー(STQ)内に設定するように、無作為のe−ビット(例えば、e2)を選択することができる。この設計は、2つの態様を別個に処理するが、ストアとしての依存性及びロードとしての依存性の両方を強制することによって、特定の命令がロードでもあり、ストアでもある(例えば、システムz内のCS命令)上述した方法に拡張することができる。
示されるように、本発明の上記の実施形態は、どのロード及びストアが依存性を有するか、及びこれらの依存性のタイプ(例えば、e−ビット又はw−ビット依存性)を予測する予測テーブルが作成されるという点で有利である。次に、命令のデコード後、e−ビットロードは、全ての先行するe−ビット・ストアに依存させられ、命令発行論理により、あたかも正規のレジスタ依存性であるかのように処理される。これは、全てのe−ビット・ストアがそのアドレス計算を実行し、そのデータをSTQに書き込むまで、e−ビットロード命令の実行を有効に遅延させる。このことにより、事実上、SHL及びnf−LHSハザードが取り除かれる。w−ビット依存性に関して、ロードは、w−ビット・ストアとして予測された最後のストアのL1キャッシュ・ライトバックに依存させられる。このことは、持続的nf−LHSハザードを有効に防止する。各ロード・エントリ及び各ストア・エントリは、OSC予測テーブル内で互いに独立している。換言すれば、ロード命令エントリはストア命令エントリを参照せず、逆もまた同様である。このことは、依存性が複数のストア命令及び複数のロード命令の間に生成されることを許す。
さらに、一実施形態によると、ロードが設定されたe−ビット及びw−ビットの両方を有する場合、ロードは、全てのe−ビット・ストア及び全てのw−ビット・ストアがOSC予測テーブル内に示されるまで遅延される。つまり、ロードは、全てのe−ビット・ストアがそのアドレス計算を実行し、そのデータをストアキュー(STQ)内に書き込むまで遅延され、また、最後のw−ビット・ストアのL1キャッシュ・ライトバックに依存させられる。
同様に、一例によると、ロードがOSCテーブル内に設定されたe−ビットを有し、ストアがOSCテーブル内に設定されたe−ビット及びw−ビットの両方を有する場合、ロードは、設定されたe−ビットを有するストアがそのアドレス計算を実行し、そのデータをストアキュー(STQ)内に書き込む(例えば、データが転送される)まで遅延される。ロードがOSCテーブル内に設定されたw−ビットを有し、ストアが設定されたe−ビット及びw−ビットの両方を有する場合、ロードは、設定されたw−ビットを有するストアがL1キャッシュのライトバックを実行するまで遅延される。最後に、ロードが設定されたe−ビット及び設定されたw−ビットの両方を有し、ストアが設定されたe−ビット及び設定されたw−ビットの両方を有する場合、w−ビットが優先する。設定されたw−ビットを有するロードは、設定されたw−ビットを有するストアの実行まで遅延され、これは、設定されたw−ビットを有するストアの最長遅延(L1キャッシュのライトバックに依存する)に対応する。
一実施形態によると、1つ又は複数のロード及び1つ又は複数のストアが、1つの複合命令内に含まれることがある。このタイプの複合命令の種々の例は、次の非特許文献1に見出すことができる。つまり、1つの命令をロード及びストアと見なすことができる。同じ命令が、OSCテーブル内に1つ又は複数のロード・エントリ及び1つ又は複数のストア・エントリを作成することができる。これらのロード及びストアは、OSCテーブル内のそれぞれのe−ビット及びw−ビットによって追跡することができる。
動作フロー図
図5は、OSCハザードを予測し、防止するためのOSC予測テーブル116内にエントリを生成する一例を示す動作フロー図である。図5の動作フロー図は、ステップ502で開始し、直ちにステップ504に進む。ステップ504において、関連したストア命令に先立って、ロード命令の実行を開始する。ステップ506において、ロード命令は、ストア命令が将来書き込む記憶場所からデータを取得する。ステップ508において、ロード命令の実行を終了する。ステップ510において、ストア命令の実行を開始する。ステップ512において、ストア命令は、ストア命令が現在書き込んでいる記憶場所からロード命令が以前にデータを取得していると判断する。
ステップ514において、ストア命令は、SHLハザードに遭遇したことを判断する。次にステップ516において、ストア命令は、この命令(ストア命令)がOSCハザード状況の候補であることを示すように、e−フラグビットのようなフラグビットを設定する。このe−フラグビットは、ストア命令が比較する最も古いロードキュー(LDQ)エントリ内に設定される。ステップ518において、ストア命令は、ストアキュー(STQ)122内のストア命令に関連付けられたストアキュー(STQ)エントリ内にe−フラグビットを設定する。次にステップ520において、ストア命令は、ロード命令及びパイプラインからの全てのより新しいロード命令をフラッシュする。
ステップ522において、ストア命令は、L1キャッシュ124にライトバックする。ステップ524において、ストア命令は、ストア命令がe−フラグ(又はロード命令によって設定されたようなw−フラグ)ビット・ペンディングを有することを、命令フェッチ・ユニット(IFU)102に通知する。ステップ526において、命令フェッチ・ユニット(IFU)102は、OSC予測テーブル116内に、ストア命令に関するエントリを生成する。このエントリは、ストア命令の命令アドレス、有効ビット、及びストア命令がe−フラグに関連付けられているという表示を含む。例えば、ビット又はフラグをエントリ内に設定し、命令がストア・e−ビットに関連付けられていることを示すことができる。ステップ527において、命令フェッチ・ユニット(IFU)102はまた、OSC予測テーブル116内に、ロード命令に関するエントリも生成する。例えば、ステップ520においてロードがSHLからフラッシュされた後、パイプラインが、以前と同じロードキュー(LDQ)エントリを用いるロードを再実行する。ロードが完了した後、ロードは、そのフラグ(例えば、e−ビット)をOSC予測テーブル116内に書き込む。このエントリは、ロード命令の命令アドレス、有効ビット、及びロード命令がe−フラグに関連付けられているという表示を含む。ストア・エントリ及びロード・エントリは互いに独立しており、決して互いに参照しない。ステップ528において、ストアキュー(STQ)122は、命令発行ユニット(ISU)106に、L1キャッシュ124にライトバックされたストア命令のストアキュー(STQ)エントリ番号(スタグ)を通知する。次に、ステップ530において、制御フローが終了する。
図6は、OSCハザードを予測し、防止するためのOSC予測テーブル116内にエントリを生成する別の例を示す動作フロー図である。図6の動作フロー図は、ステップ602で開始し、直ちにステップ604に進む。ステップ604において、ストア命令がそのストア命令に関するアドレス計算を実行する。ステップ606において、ストア命令に関するデータが遅延される。ステップ608において、ストア・データがストアキュー(STQ)122に書き込まれる前に、ロード命令の実行を開始する。ステップ610において、ロード命令は、ロード命令がストア命令に依存しており、ストア・データ転送を実行できないと判断する。
ステップ612において、ロード命令は、nf−LHS状況に遭遇したと判断する。ステップ614において、ロード命令は、ストア命令のストアキュー(STQ)エントリ内にe−フラグビットを設定する。ステップ616において、ロード命令は、対応するロードキュー(LDQ)エントリ内にe−フラグビットを設定する。ステップ618において、ロード命令が実行を終了する。ステップ620において、ロード命令は、ロード命令がロードキュー(LDQ)内にe−フラグビットを設定したという情報を命令フェッチ・ユニット(IFU)102に送る。ステップ622において、IFUが、OSCテーブル116内にロード命令に関するエントリを生成する。このエントリは、ロード命令の命令アドレス、有効ビット、及びロード命令がe−フラグビットに関連付けられているという表示を含む。例えば、命令がロード・e−ビットに関連付けられていることを示すビット又はフラグをエントリ内に設定することができる。ステップ623において、命令フェッチ・ユニット(IFU)102も同様に、OSC予測テーブル116内にストア命令に関するエントリを生成する。例えば、ストア命令がL1キャッシュ124にライトバックするとき(ステップ620の前又は後に起こり得る)、ストアキュー(STQ)内のフラグ(e−ビット)が命令フェッチ・ユニット(IFU)102に通信され、ストアに関するエントリがテーブル116内に作成される。このエントリは、ストア命令の命令アドレス、有効ビット、及びストア命令がe−フラグビットに関連付けられているという表示を含む。ロード及びストア・エントリは互いに独立しており、決して互いに参照しない。次に、ステップ624において、制御フローが終了する。
図7は、OSCハザードを予測し、防止するためのOSC予測テーブル116内にエントリを生成するさらに別の例を示す動作フロー図である。図7の動作フロー図はステップ702で開始し、直ちにステップ704に進む。ステップ704において、ストア命令がそのアドレス計算を実行する。ステップ706において、ロード命令の実行を開始する。ステップ708において、ロード命令は、ロード命令がストア命令に依存しており、ストア・データ転送を実行できないと判断する。
ステップ710において、ロード命令が持続的nf−LHS状況に遭遇したと判断する。ステップ712において、ロード命令は、ストア命令のストアキュー(STQ)エントリ内にw−フラグビットを設定する。ステップ714において、ロード命令は、対応するロードキュー(LDQ)エントリ内にw−フラグビットを設定する。ステップ716において、ロード命令が実行を終了する。ステップ718において、ロード命令は、ロード命令がロードキュー(LDQ)内にw−フラグビットを設定したことを命令フェッチ・ユニット(IFU)102に通知する。ステップ720において、IFUは、OSC予測テーブル116内にロード命令に関するエントリを生成する。このエントリは、ロード命令の命令アドレス、有効ビット、及びロード命令がw−フラグビットに関連付けられているという表示を含む。例えば、命令がロード・w−ビットに関連付けられていること示すビット又はフラグをエントリ内に設定することができる。ステップ721において、IFUは、OSC予測テーブル116内にストア命令に関するエントリを生成する。例えば、ストア命令がL1キャッシュ124にライトバックするとき(ステップ718の前又は後に起こり得る)、STQ内のフラグ(e−ビット)が命令フェッチ・ユニット(IFU)102に通信され、ストアに関するエントリがテーブル116内に作成される。このエントリは、ストア命令の命令アドレス、有効ビット、及びストア命令がw−フラグビットに関連付けられているという表示を含む。ロード及びストア・エントリは互いに独立しており、決して互いに参照しない。次に、ステップ722において、制御フローが終了する。
図8は、OSCハザードを予測し、防止する一例を示す動作フロー図である。図8の動作フロー図はステップ802で開始し、直ちにステップ804に進む。ステップ804において、命令フェッチ・ユニット(IFU)102が命令をフェッチする。ステップ806において、命令フェッチ・ユニット(IFU)102は、並行して、命令の命令アドレスを用いてOSC予測テーブル116に問い合わせする。ステップ808において、命令フェッチ・ユニット(IFU)102は、命令が予測テーブル116内のエントリを含むかどうかを判断する。この判断の結果が否定である場合には、ステップ810において、通常の処理が行われる。次いでステップ812において、制御フローが終了する。判断の結果が肯定である場合、ステップ813において、命令フェッチ・ユニット(IFU)102は、命令、及びOSC予測テーブル116から取得された命令に関連付けられたOSCハザード情報を命令デコード・ユニット(IDU)104に送る。ステップ814において、命令デコード・ユニット(IDU)104が命令をデコードする。
ステップ808における判断の結果が肯定である場合、ステップ816において、命令デコード・ユニット(IDU)104は、命令がストア・e−ビットを含む(例えば、命令がe−フラグビットを有するストアである)かどうかを判断する。判断の結果が肯定である場合、ステップ808において、命令発行ユニット(ISU)106は、ストア命令をストア・e−ビットとして記憶する。この命令が単一ビットしか含まない場合、次に制御フローはステップ804に戻る。しかしながら、命令が1つ又は複数のロード及び1つ又は複数のストアの両方を実行するために命令が複数のビットを含む場合、デコード・ユニット(IDU)104は、他のビットがロード「e」ビットである場合にはステップ826及び828を実行し、又は他のビットがロード「w」ビットである場合にはステップ832を実行する。
ステップ816における判断の結果が否定である場合、ステップ820において、命令デコード・ユニット(IDU)104は、命令がストア・w−ビットを含む(例えば、命令がw−フラグビットを有するストアである)かどうかを判断する。判断の結果が肯定である場合、ステップ822において、命令発行ユニット(ISU)106は、ストア命令に割り当てられたストアキュー(STQ)エントリ番号(スタグ)を記憶する。次いで制御フローはステップ804に戻る。
ステップ820の判断の結果が否定である場合、ステップ824において、命令デコード・ユニット(IDU)104は、命令がロード・e−ビットを含む(例えば、命令がe−フラグビットを有するロードである)かどうかを判断する。判断の結果が肯定である場合、ステップ826において、命令発行ユニット(ISU)106は、ストア・e−ビットでマーク付けされたあらゆる先行命令に依存するものとして、ロード命令をマーク付けする。ステップ828において、マーク付けされた結果として、ストアが成功裏に実行され、ストア・アドレス及びデータがそのストアキュー(STQ)エントリ内に書き込まれるまで、ロード命令を実行することができない。次いで制御フローはステップ804に戻る。
ステップ824の判断が否定である場合、ステップ830において、命令は、w−フラグビットを有するロードであると判断される。ステップ832において、命令発行ユニット(ISU)106は、ロードの前の最後のストア・w−ビット・ストアのスタグ(即ち、w−スタグ)がL1キャッシュにライトバックするまで実行されないように、この命令をマーク付けする。次に制御フローはステップ804に戻る。
情報処理システム
図9は、本発明の一実施形態による情報処理システム900の詳細な図を示すブロック図である。この情報処理システム900は、本発明の1つ又は複数の実施形態を実施するように適合された、適切に構成された処理システムに基づくものである。いずれかの適切に構成された処理システムを、本発明の実施形態による情報処理システム900として同様に用いることができる。
情報処理システム900は、コンピュータ902を含む。コンピュータ902は、図1のプロセッサのようなプロセッサ101を有する。プロセッサ101は、図1に示されるように、OSC予測テーブル116を含む命令フェッチ・ユニット(IFU)102と、命令デコード・ユニット(IDU)104と、発行キュー118を含む命令発行ユニット(ISU)106と、ロードキュー(LDQ)、ストアキュー(STQ)122、及びL1キャッシュ124を含むロード/ストア・ユニット(LSU)108と、オペランドアドレス生成ユニット110と、固定小数点ユニット(FXU)112と、種々の他のコンポーネント114とを含む。
プロセッサ101は、主メモリ906、マスストレージインタフェース908、及びネットワークアダプタハードウェア910に接続される。システムバス912がこれらのシステムコンポーネントを相互接続する。マスストレージインタフェース908は、データストレージ装置914のようなマスストレージ装置を接続するために用いられる。データストレージ装置の1つの特定のタイプは、CD/DVD916(これに限定されるものではないが)などのコンピュータ可読媒体又はストレージ製品にデータをストアし、これからデータを読み出すために用いることができる、CD/DVDドライブのような光ドライブである。別のタイプのストレージ装置は、例えばファイルシステムの動作をサポートするように構成されたデータストレージ装置である。
一実施形態において、情報処理システム900は、従来の仮想アドレス指定メカニズムを用いて、プログラムが、あたかも、主メモリ906及びデータストレージ装置916のような複数のより小さいストレージ・エンティティにアクセスするのではなく、本明細書でコンピュータ・システム・メモリと呼ばれる、より大きい単一のストレージ・エンティティにアクセスするかのように動作することを可能にする。「コンピュータ・システム・メモリ」という用語は、本明細書において、情報処理システム900の仮想メモリ全体を総称的に指すように用いられる。
コンピュータ902に関して1つだけのプロセッサ101が示されるが、複数のプロセッサを有するコンピュータ・システムを等しく有効に用いることもできる。本発明の種々の実施形態は、各々が、プロセッサ101からのオフロード処理のために用いられる完全にプログラムされた別個のマイクロプロセッサを含む、インタフェースをさらに組み込む。主メモリ内に含まれるオペレーティングシステム(図示せず)は、限定するものではないが、GNU/Linux、AIX、Solaris、及びHP−UXのような適切なマルチタスクオペレーティングシステムである。本発明の種々の実施形態は、いずれかの他の適切なオペレーティングシステムを用いることもできる。本発明の幾つかの実施形態は、オペレーティングシステム(図示せず)のコンポーネントの命令が、情報処理システム900内に配置されたいずれかのプロセッサ上で実行されるのを可能にする、オブジェクト指向フレームワークメカニズムのようなアーキテクチャを用いる。ネットワークアダプタハードウェア910は、1つ又は複数のネットワーク918へのインタフェースを与えるように用いられる。本発明の種々の実施形態は、今日のアナログ及び/又はデジタル技術を含む、又は将来のネットワーキングメカニズムを介する、いずれかのデータ通信接続と共に機能するように適合させることができる。
本発明の例示的な実施形態を完全に機能的なコンピュータ・システムとの関連で説明したが、当業者であれば、実施形態は、例えば、CD916、CD−ROM、又は他の形態の記録可能媒体などのCD若しくはDVDを介して、或いは任意のタイプの電子伝送メカニズムを介して、プログラム製品として配布できることを認識するであろう。
限定されない例
本発明の特定の実施形態を開示したが、当業者であれば、本発明の趣旨及び範囲から逸脱することなく、特定の実施形態に対する変更を行うことができることを理解するであろう。従って、本発明の範囲は、特定の実施形態に限定されず、添付の特許請求の範囲は、本発明の範囲内のいずれか又は全てのこのような用途、修正及び実施形態を包含することが意図される。
本発明の種々の例示的な実施形態を、完全に機能的なコンピュータ・システムとの関連で説明したが、当業者であれば、種々の実施形態は、CD若しくはDVD、例えばCD916、CD ROM、又は他の形態の記録可能媒体を介して、又は任意の型の電子伝送メカニズムを介して、プログラム製品として配布することができることを認識するであろう。
100:動作環境
101:プロセッサ
102:命令フェッチ・ユニット(IFU)
104:命令デコード・ユニット(IDU)
106:命令発行ユニット(ISU)
108:ロード/ストア・ユニット(LSU)
110:オペランドアドレス生成ユニット
112:固定小数点ユニット(FXU)
114:他のコンポーネント
116:オペランド・ストア比較(OSC)予測テーブル
118:発行キュー
120:ロードキュー(LDQ)
122:ストアキュー(STQ)
124:L1キャッシュ
126、128、226、328、402、403:エントリ
204、304:オペランドアドレス情報
206、306:有効ビット情報
208、310:OSCハザード表示ビット
210、312:他の一般情報
308:データ値情報
404、412:命令アドレス
406、414:入力有効ビット
408:ロード「e」ビット
410:ロード「w」ビット
416:ストア「e」ビット
418:ストア「w」ビット
900:情報処理システム
902:コンピュータ
906:主メモリ
908:マスストレージインタフェース
910:ネットワークアダプタハードウェア
912:システムバス
914:データストレージ
916:CD/DVD
918:ネットワーク

Claims (26)

  1. アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法であって、
    ロード命令及びストア命令のうちの少なくとも1つの命令の実行を開始するステップと、
    前記実行の開始に基づいて、オペランド・ストア比較ハザードに遭遇したことを判断するステップと、
    前記判断に基づいて、オペランド・ストア比較ハザード予測テーブル内に、少なくとも、前記実行が開始された前記命令の命令アドレスと、前記実行が開始された前記命令に関連付けられたハザード表示フラグとを含むエントリを作成するステップであって、前記ハザード表示フラグは、前記オペランド・ストア比較ハザードのタイプを示し、前記実行が開始された前記命令が前記オペランド・ストア比較ハザードに遭遇したことを示し、前記エントリ内の前記ハザード表示フラグは、前記オペランド・ストア比較ハザード予測テーブル内の他のエントリを参照しない、前記作成するステップと
    を含む、前記方法。
  2. アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法であって、
    ロード命令及びストア命令のうちの少なくとも1つの命令の実行を開始するステップであって、
    前記ロード命令の前に前記ストア命令の実行を開始するステップであって、前記ストア命令に関連付けられたデータセットが入手可能でない状態が持続する、前記実行を開始するステップと、
    前記ストア命令の実行の後に前記ロード命令の実行を開始するステップと
    をさらに含む、前記開始するステップと、
    前記実行の開始に基づいて、オペランド・ストア比較ハザードに遭遇したことを判断するステップと、
    前記判断に基づいて、オペランド・ストア比較ハザード予測テーブル内に、少なくとも、前記実行が開始された前記命令の命令アドレスと、前記実行が開始された前記命令に関連付けられたハザード表示フラグとを含むエントリを作成するステップであって、前記ハザード表示フラグは、前記オペランド・ストア比較ハザードのタイプを示し、前記実行が開始された前記命令が前記オペランド・ストア比較ハザードに遭遇したことを示す、前記作成するステップと
    を含む、前記方法。
  3. 前記実行を開始するステップは、
    前記ロード命令の実行を開始するステップ、又は、
    前記ストア命令の実行を開始するステップ
    を含み、前記方法はさらに、
    前記判断に基づいて、前記オペランド・ストア比較ハザード予測テーブル内に、前記ロード命令及び前記ストア命令のうち実行が開始されなかったもう1つの命令の命令アドレスと、前記もう1つの命令に関連付けられたハザード表示フラグとを含むエントリを作成するステップであって、前記もう1つの命令に関連付けられた前記ハザード表示フラグは、前記実行が開始された前記命令に関連付けられた前記ハザード表示フラグと合致しており、前記もう1つの命令に関連付けられた前記ハザード表示フラグは、前記もう1つの命令が前記オペランド・ストア比較ハザードに遭遇したことを示す、前記作成するステップと
    を含む、請求項1又は2に記載の方法。
  4. 前記実行を開始するステップは、
    前記ストア命令の前に前記ロード命令の実行を開始するステップと、
    前記ロード命令が実行を終了した後に、前記ストア命令の実行を開始するステップと
    を含み、
    前記ロード命令は、前記ストア命令が後の書き込み動作を実行する記憶場所からデータセットを取得する、請求項1又は2に記載の方法。
  5. 前記ストア命令により、前記ロード命令が前記記憶場所から前記データセットを取得したと判断するステップと、
    前記判断に応答して、前記ストア命令により、ストア・ヒット・ロードハザードに遭遇したと判断するステップと、
    前記ストア・ヒット・ロードハザードに遭遇したと判断するステップに応答して、前記ストア命令により、前記ロード命令が前記記憶場所から前記データセットを取得したと判断したときに前記ストア命令が比較した最も古いロードキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が前記ストア・ヒット・ロードハザードに関連付けられることを示す、前記設定するステップと
    をさらに含む、請求項に記載の方法。
  6. 前記ストア命令により、前記オペランド・ストア比較ハザード予測テーブルを含む命令フェッチ・ユニットに、前記ストア命令が前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップと、
    前記ストア命令が前記ハザード表示フラグを設定するステップに応答して、ストアキューにより、命令発行ユニットに、前記ストア命令の前記ストアキュー内のストアキュー・エントリ番号を通知するステップと、
    前記ロード命令により、前記オペランド・ストア比較ハザード予測テーブルを含む前記命令フェッチ・ユニットに、前記ストア命令が前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップと
    のうちの少なくとも1つをさらに含む、請求項に記載の方法。
  7. 前記実行するステップは、
    前記ロード命令の前に前記ストア命令の実行を開始するステップであって、前記ストア命令に関連付けられたデータセットが遅延される、前記実行を開始するステップと、
    前記データセットが前記ストア命令によりストアキュー内に書き込まれる前に前記ロード命令の実行を開始するステップと
    をさらに含む、請求項1又は2に記載の方法。
  8. 前記データセットが前記ストア命令によりストアキュー内に書き込まれる前に実行されることに基づいて、前記ストア命令により、前記ロード命令が前記ストア命令に依存していると判断するステップと、
    前記ロード命令が前記ストア命令に依存しているとの判断に基づいて、前記ロード命令により、ストア・データ転送を実行することができないと判断するステップと、
    前記ストア・データ転送を実行することができないとの判断に基づいて、前記ロード命令により、前記ロード命令が転送不能ロード・ヒット・ストアハザードに遭遇したと判断するステップと
    をさらに含む、請求項に記載の方法。
  9. 前記ロード命令が前記転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ストア命令に関連付けられた前記ストアキュー内のストアキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ストア命令が前記転送不能ロード・ヒット・ストアハザードに関連付けられることを示す、前記設定するステップと、
    前記ロード命令が前記転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ロード命令に関連付けられたロードキュー内のロードキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が前記転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、前記設定するステップと
    をさらに含む、請求項に記載の方法。
  10. 前記ロード命令により、前記オペランド・ストア比較ハザード予測テーブルを含む命令フェッチ・ユニットに、前記ロード命令が前記ロードキュー・エントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップ;
    前記ストア命令により、前記オペランド・ストア比較ハザード予測テーブルを含む前記命令フェッチ・ユニットに、前記ロード命令が前記ストアキュー・エントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップ;
    のうちの少なくとも1つをさらに含む、請求項に記載の方法。
  11. 前記実行を開始するステップは、
    前記ロード命令の前に前記ストア命令の実行を開始するステップであって、前記ストア命令に関連付けられたデータセットが入手可能でない状態が持続する、前記実行を開始するステップと、
    前記ストア命令の実行の後に前記ロード命令の実行を開始するステップと
    をさらに含む、請求項1記載の方法。
  12. 前記データセットが入手可能でない状態が持続することに基づいて、前記ロード命令により、前記ロード命令が前記ストア命令に依存していると判断するステップと、
    前記ロード命令が前記ストア命令に依存しているとの判断に基づいて、前記ロード命令により、ストア・データ転送を実行できないと判断するステップと、
    前記ストア・データ転送を実行することができず、かつ、前記データセットが入手可能でない状態が持続するとの判断に基づいて、前記ロード命令により、前記ロード命令が持続的転送不能ロード・ヒット・ストアハザードに遭遇したと判断するステップと
    をさらに含む、請求項11に記載の方法。
  13. 前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ストア命令に関連付けられた前記ストアキュー内のストアキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ストア命令が前記持続的転送不能ロード・ヒット・ストアハザードに関連付けられること示す、前記設定するステップと、
    前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したとの判断に基づいて、前記ロード命令により、前記ロード命令に関連付けられたロードキュー内のロードキュー・エントリ内に、ハザード表示フラグを設定するステップであって、前記ハザード表示フラグは、前記ロード命令が前記持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、前記設定するステップと
    をさらに含む、請求項12に記載の方法。
  14. 前記ロード命令により、前記オペランド・ストア比較ハザード予測テーブルを含む命令フェッチ・ユニットに、前記ロード命令が前記ロードキュー・エントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップ;
    前記ストア命令により、前記オペランド・ストア比較ハザード予測テーブルを含む前記命令フェッチ・ユニットに、前記ロード命令が前記ストアキュー・エントリ内に前記ハザード表示フラグを設定したことを通知するステップであって、前記命令フェッチ・ユニットは、前記通知することに応答して前記エントリを生成する、前記通知するステップ;
    のうちの少なくとも1つを含む、請求項13に記載の方法。
  15. アウトオブオーダー方式で実行されるロード及びストア動作を管理する方法であって、
    ロード命令及びストア命令のうちの少なくとも1つの命令をフェッチするステップと、
    前記フェッチした命令をデコードするステップと、
    前記デコードに応答して、前記フェッチした命令の前記命令アドレスについて、オペランド・ストア比較ハザード予測テーブルに問い合わせするステップであって、前記オペランド・ストア比較ハザード予測テーブルは、ロード命令に関する第1のエントリと、ストア命令に関する第2のエントリとを含み、前記第1及び第2のエントリは、互いに独立しており、前記ロード命令及び前記ストア命令がそれぞれ以前にオペランド・ストア比較ハザードに遭遇したことを示し、かつ、それぞれ前記ロード命令及び前記ストア命令のうちの1つの少なくとも命令アドレスと、前記オペランド・ストア比較ハザードに関連付けられたハザード表示フラグとを含む、前記問い合わせするステップと、
    前記予測テーブルに問い合わせするステップに応答して、前記フェッチした命令が、前記オペランド・ストア比較ハザード予測テーブル内の前記第1及び第2のエントリのうちの1つに関連付けられると判断するステップと、
    前記判断することに基づいて、前記フェッチした命令に関連付けられた前記第1及び第2のエントリのうちの1つの中に含まれる前記ハザード表示フラグを識別するステップと
    をさらに含み、
    前記フェッチした命令が前記第1のエントリに関連付けられている場合、前記フェッチした命令はロード命令であり、
    前記方法は、
    前記識別されたハザード表示フラグに基づいて前記フェッチした命令をマーク付けするステップであって、前記マーク付けするステップは、前記フェッチした命令の実行を、所与の実行段階に達した前記フェッチした命令に関連付けられた前記ハザード表示フラグと合致したハザード表示フラグを含む前記予測テーブルの前記第2のエントリに関連付けられた少なくとも1つのストア命令に依存させる、前記マーク付けするステップ
    をさらに含み、
    前記フェッチした命令が前記第2のエントリに関連付けられる場合、前記命令はストア命令である、
    前記方法。
  16. 前記フェッチした命令に関連付けられた前記ハザード表示フラグは、前記フェッチした命令が以前に転送不能ロード・ヒット・ストアハザードに遭遇したことを示し、
    前記マーク付けするステップは、前記フェッチした命令の実行を、ストアが転送可能である段階に達した前記フェッチした命令に関連付けられたハザード表示フラグと合致した前記ハザード表示フラグを含む前記予測テーブルのエントリに関連付けられた全てのストア命令に依存させる、
    請求項1に記載の方法。
  17. 前記フェッチした命令に関連付けられた前記ハザード表示フラグは、前記フェッチした命令が以前に持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示し、
    前記少なくとも1つのストア命令に関連付けられた前記ハザード表示フラグは、前記少なくとも1つのストア命令が以前に持続的転送不能ロード・ヒット・ストアハザードに遭遇したことを示す、
    請求項1に記載の方法。
  18. 前記フェッチした命令に関連付けられた前記ハザード表示フラグは、前記フェッチした命令が以前にストア・ヒット・ロード・ハザードに遭遇したことを示し、
    前記少なくとも1つのストア命令に関連付けられた前記ハザード表示フラグは、前記少なくとも1つのストア命令が以前にストア・ヒット・ロード・ハザードに遭遇したことを示す、
    請求項1に記載の方法。
  19. 前記マーク付けするステップに基づいて、前記フェッチした命令に関連付けられた前記ハザード表示フラグと合致した前記ハザード表示フラグを含む前記予測テーブルのエントリに関連付けられた全てのストア命令が、そのアドレス計算を実行し、そのデータをストアキュー内の対応するエントリ内に書き込むまで、前記ロード命令の前記実行を遅延させるステップ
    をさらに含む、請求項1に記載の方法。
  20. 前記少なくとも1つのストア命令は、前記フェッチした命令に関連付けられた前記ハザード表示フラグと合致した前記ハザード表示フラグを含む最新のストア命令であり、
    前記マーク付けするステップに基づいて、前記ストア命令のストア対象データをL1キャッシュ・ライトバックするまで、wビットを有するロード命令の前記実行を遅延させることをさらに含む、
    請求項17に記載の方法。
  21. ペランド予測テーブルが、ロード命令エントリ及びストア命令エントリを有し、
    前記ロード命令エントリが1又は複数の第1のハザード表示フラグを含み、前記第1のハザード表示フラグが、ロード実行フラグ、ロード書き込みフラグ又はそれらの組み合わせを含み、
    前記ストア命令エントリが1又は複数の第2のハザード表示フラグを含み、前記第2のハザード表示フラグが、ストア実行フラグ、ストア書き込みフラグ又はそれらの組み合わせを含み、
    前記ロード命令エントリ及び前記ストア命令エントリは互いに独立して生成される、
    請求項1又は2に記載の方法。
  22. 前記ロード命令エントリは、前記ストア命令エントリ若しくは前記オペランド予測テーブルに関連付けられた他のオペランド予測テーブルも参照せず、又は、前記ストア命令エントリ若しくは前記他のオペランド予測テーブルからも参照されない、請求項21に記載の方法。
  23. 前記ロード命令エントリがさらに、ロード命令の命令アドレスと当該ロード命令エントリの有効ビットとを含み、
    前記ストア命令エントリがさらに、ストア命令の命令アドレスと当該ストア命令エントリの有効ビットとを含む、
    請求項21又は22に記載の方法。
  24. 前記ロード命令エントリが、設定されたロード実行フラグ及びロード書き込みフラグの両方を有する場合、ロード命令は、データをストアキューに書き込まれるまで遅延され;
    前記ロード命令エントリが、設定されたロード実行フラグを有し、且つ、前記ストア命令エントリが、設定されたストア実行フラグ及びストア書き込みフラグの両方を有する場合、ストア命令がデータをストアキューに書き込まれるまで遅延され;
    前記ロード命令エントリが、設定されたロード書き込みフラグを有し、且つ、前記ストア命令エントリが、設定されたストア実行フラグ及びストア書き込みフラグの両方を有する場合、ロード命令は、前記設定されたロード書き込みフラグを有するストアがライトバックを実行するまで遅延され;又は、
    前記ロード命令エントリが、設定されたロード実行フラグ及びロード書き込みフラグの両方を有し、且つ、前記ストア命令エントリが、設定されたストア実行フラグ及びストア書き込みフラグの両方を有する場合、前記設定されたロード書き込みフラグを有するロード命令は前記設定されたストア書き込みフラグを有するストア命令の実行が開始されるまで遅延される、
    請求項21〜23のいずれか一項に記載の方法。
  25. 請求項1〜24のいずれか一項に記載の方法の各ステップを実行するように適合された手段を含むシステム。
  26. コンピュータ・プログラムであって、コンピュータ・システムに、請求項1〜24のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
JP2015146076A 2009-12-22 2015-07-23 アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避 Active JP6143306B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/644,923 US8468325B2 (en) 2009-12-22 2009-12-22 Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US12/644,923 2009-12-22
US12/822,960 2010-06-24
US12/822,960 US8521992B2 (en) 2009-12-22 2010-06-24 Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012545216A Division JP5850532B2 (ja) 2009-12-22 2010-12-13 アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避

Publications (2)

Publication Number Publication Date
JP2015228237A JP2015228237A (ja) 2015-12-17
JP6143306B2 true JP6143306B2 (ja) 2017-06-07

Family

ID=43416544

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012545216A Active JP5850532B2 (ja) 2009-12-22 2010-12-13 アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避
JP2015146076A Active JP6143306B2 (ja) 2009-12-22 2015-07-23 アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2012545216A Active JP5850532B2 (ja) 2009-12-22 2010-12-13 アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避

Country Status (6)

Country Link
US (2) US8521992B2 (ja)
JP (2) JP5850532B2 (ja)
CN (1) CN102652304B (ja)
DE (1) DE112010004322T5 (ja)
GB (1) GB2486155B (ja)
WO (1) WO2011076602A1 (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069563B2 (en) * 2011-09-16 2015-06-30 International Business Machines Corporation Reducing store-hit-loads in an out-of-order processor
US9128725B2 (en) * 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US9158691B2 (en) 2012-12-14 2015-10-13 Apple Inc. Cross dependency checking logic
US9880849B2 (en) * 2013-12-09 2018-01-30 Macom Connectivity Solutions, Llc Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
US9274970B2 (en) 2013-12-31 2016-03-01 Samsung Electronics Co., Ltd. Method and apparatus for handling processor read-after-write hazards with cache misses
US11093401B2 (en) 2014-03-11 2021-08-17 Ampere Computing Llc Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
CN104063329B (zh) * 2014-06-30 2017-04-12 龙芯中科技术有限公司 64位立即数处理方法及装置
US10209995B2 (en) 2014-10-24 2019-02-19 International Business Machines Corporation Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions
US9483409B2 (en) 2015-02-05 2016-11-01 International Business Machines Corporation Store forwarding cache
US9928075B2 (en) 2015-02-13 2018-03-27 International Business Machines Corporation Load queue entry reuse for operand store compare history table update
WO2017019008A1 (en) * 2015-07-27 2017-02-02 Applied Micro Circuits Corporation Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US9710281B2 (en) * 2015-07-30 2017-07-18 International Business Machines Corporation Register comparison for operand store compare (OSC) prediction
US20170046167A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Predicting memory instruction punts in a computer processor using a punt avoidance table (pat)
US9606805B1 (en) 2015-10-19 2017-03-28 International Business Machines Corporation Accuracy of operand store compare prediction using confidence counter
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10740107B2 (en) * 2016-06-01 2020-08-11 International Business Machines Corporation Operation of a multi-slice processor implementing load-hit-store handling
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10684859B2 (en) * 2016-09-19 2020-06-16 Qualcomm Incorporated Providing memory dependence prediction in block-atomic dataflow architectures
GB2563582B (en) * 2017-06-16 2020-01-01 Imagination Tech Ltd Methods and systems for inter-pipeline data hazard avoidance
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10417002B2 (en) 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10572256B2 (en) 2017-10-06 2020-02-25 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10606590B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Effective address based load store unit in out of order processors
US10802829B2 (en) 2017-11-30 2020-10-13 International Business Machines Corporation Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor
US10564979B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Coalescing global completion table entries in an out-of-order processor
US10572264B2 (en) 2017-11-30 2020-02-25 International Business Machines Corporation Completing coalesced global completion table entries in an out-of-order processor
US10884753B2 (en) 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
US10929140B2 (en) 2017-11-30 2021-02-23 International Business Machines Corporation Scalable dependency matrix with a single summary bit in an out-of-order processor
US10922087B2 (en) 2017-11-30 2021-02-16 International Business Machines Corporation Block based allocation and deallocation of issue queue entries
US10901744B2 (en) 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue
US10942747B2 (en) 2017-11-30 2021-03-09 International Business Machines Corporation Head and tail pointer manipulation in a first-in-first-out issue queue
US10564976B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Scalable dependency matrix with multiple summary bits in an out-of-order processor
CN108519906B (zh) * 2018-03-20 2022-03-22 东南大学 超标量乱序处理器稳定状态指令吞吐率建模方法
US10725783B2 (en) 2018-11-02 2020-07-28 International Business Machines Corporation Splitting load hit store table for out-of-order processor
CN111221579B (zh) * 2018-11-27 2022-04-26 展讯通信(上海)有限公司 预测Load指令执行延迟的方法及系统
JP7151439B2 (ja) * 2018-12-06 2022-10-12 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10977040B2 (en) 2019-02-19 2021-04-13 International Business Machines Corporation Heuristic invalidation of non-useful entries in an array
US10802830B2 (en) * 2019-03-05 2020-10-13 International Business Machines Corporation Imprecise register dependency tracking
US11099989B2 (en) 2019-03-12 2021-08-24 International Business Machines Corporation Coherency maintenance via physical cache coordinate comparison
US11243774B2 (en) 2019-03-20 2022-02-08 International Business Machines Corporation Dynamic selection of OSC hazard avoidance mechanism
US10929142B2 (en) 2019-03-20 2021-02-23 International Business Machines Corporation Making precise operand-store-compare predictions to avoid false dependencies
US10831661B2 (en) 2019-04-10 2020-11-10 International Business Machines Corporation Coherent cache with simultaneous data requests in same addressable index
US10824430B1 (en) * 2019-04-25 2020-11-03 International Business Machines Corporation Resolving operand store compare conflicts
EP3812891A1 (en) * 2019-10-21 2021-04-28 ARM Limited Decoupled access-execute processing
US11803638B2 (en) 2020-07-23 2023-10-31 Ventana Micro Systems Inc. Microprocessor core with a store dependence predictor accessed using a translation context
US11803637B2 (en) 2020-07-23 2023-10-31 Ventana Micro Systems Inc. Microprocessor that prevents store-to-load forwarding between different translation contexts
US11755732B2 (en) * 2020-07-23 2023-09-12 Ventana Micro Systems Inc. Microprocessor that conditions store-to-load forwarding on circumstances associated with a translation context update
US11755731B2 (en) 2020-07-23 2023-09-12 Ventana Micro Systems Inc. Processor that prevents speculative execution across translation context change boundaries to mitigate side channel attacks
CN115576610B (zh) * 2022-11-18 2023-03-10 北京数渡信息科技有限公司 一种适用于通用顺序发射处理器的指令分发处理方法及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5619662A (en) * 1992-11-12 1997-04-08 Digital Equipment Corporation Memory reference tagging
US5666506A (en) * 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5781752A (en) * 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US5999727A (en) * 1997-06-25 1999-12-07 Sun Microsystems, Inc. Method for restraining over-eager load boosting using a dependency color indicator stored in cache with both the load and store instructions
US6219742B1 (en) * 1998-04-29 2001-04-17 Compaq Computer Corporation Method and apparatus for artificially generating general purpose events in an ACPI environment
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6999952B1 (en) * 2001-04-18 2006-02-14 Cisco Technology, Inc. Linear associative memory-based hardware architecture for fault tolerant ASIC/FPGA work-around
US20030126409A1 (en) * 2001-12-28 2003-07-03 Toni Juan Store sets poison propagation
US7028166B2 (en) * 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US20050223292A1 (en) * 2004-02-17 2005-10-06 Lee Chee S Single instruction type based hardware patch controller
US7263600B2 (en) * 2004-05-05 2007-08-28 Advanced Micro Devices, Inc. System and method for validating a memory file that links speculative results of load operations to register values
US7716528B2 (en) * 2004-09-07 2010-05-11 Broadcom Corporation Method and system for configurable trigger logic for hardware bug workaround in integrated circuits
US8627047B2 (en) * 2008-02-15 2014-01-07 International Business Machines Corporation Store data forwarding with no memory model restrictions
US8443227B2 (en) * 2008-02-15 2013-05-14 International Business Machines Corporation Processor and method for workaround trigger activated exceptions

Also Published As

Publication number Publication date
GB2486155B (en) 2017-04-19
CN102652304A (zh) 2012-08-29
US20110153986A1 (en) 2011-06-23
JP2013515306A (ja) 2013-05-02
GB2486155A (en) 2012-06-06
US20130318330A1 (en) 2013-11-28
WO2011076602A1 (en) 2011-06-30
CN102652304B (zh) 2015-04-15
US9430235B2 (en) 2016-08-30
GB201206367D0 (en) 2012-05-23
JP5850532B2 (ja) 2016-02-03
JP2015228237A (ja) 2015-12-17
DE112010004322T5 (de) 2012-08-23
US8521992B2 (en) 2013-08-27

Similar Documents

Publication Publication Date Title
JP6143306B2 (ja) アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避
JP2013515306A5 (ja)
US10534616B2 (en) Load-hit-load detection in an out-of-order processor
US10963248B2 (en) Handling effective address synonyms in a load-store unit that operates without address translation
US10977047B2 (en) Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US8627044B2 (en) Issuing instructions with unresolved data dependencies
US8131976B2 (en) Tracking effective addresses in an out-of-order processor
US9996348B2 (en) Zero cycle load
US9594566B1 (en) Accuracy of operand store compare prediction using confidence counter
US11175925B2 (en) Load-store unit with partitioned reorder queues with single cam port
JPH07325716A (ja) パイプラインプロセッサおよびその動作方法
US10606593B2 (en) Effective address based load store unit in out of order processors
EP3171264B1 (en) System and method of speculative parallel execution of cache line unaligned load instructions
US8468325B2 (en) Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US20190108133A1 (en) Address translation for sending real address to memory subsystem in effective address based load-store unit
US20190108031A1 (en) Efficient store-forwarding with partitioned fifo store-reorder queue in out-of-order processor
WO2005098613A2 (en) Facilitating rapid progress while speculatively executing code in scout mode
JP7025100B2 (ja) アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20161024

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161024

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170227

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170227

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170414

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20170414

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170502

R150 Certificate of patent or registration of utility model

Ref document number: 6143306

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150