JP2012230687A - 誤予測された分岐のためにフラッシュするセグメント化パイプライン - Google Patents

誤予測された分岐のためにフラッシュするセグメント化パイプライン Download PDF

Info

Publication number
JP2012230687A
JP2012230687A JP2012133878A JP2012133878A JP2012230687A JP 2012230687 A JP2012230687 A JP 2012230687A JP 2012133878 A JP2012133878 A JP 2012133878A JP 2012133878 A JP2012133878 A JP 2012133878A JP 2012230687 A JP2012230687 A JP 2012230687A
Authority
JP
Japan
Prior art keywords
instruction
pipeline
instructions
mispredicted
branch
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
JP2012133878A
Other languages
English (en)
Other versions
JP5866259B2 (ja
Inventor
Scott Mcilvain Michael
マイケル・スコット・マクイルバイン
Norris Diefenderfer James
ジェームズ・ノリス・ディーフェンダーファー
Andrew Sartorius Thomas
トマス・アンドリュー・サートリウス
Wayne Smith Rodney
ロドニー・ウェイン・スミス
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2012230687A publication Critical patent/JP2012230687A/ja
Application granted granted Critical
Publication of JP5866259B2 publication Critical patent/JP5866259B2/ja
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

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

【課題】パイプライン化されたプロセッサにおける分岐誤予測を効率的に訂正する方法を提供する。
【解決手段】プロセッサ・パイプラインは、プログラム順序を外れる命令より前の上位部分と、上位部分より後の1つ又は複数の下位部分とにセグメント化される。分岐命令が誤予測されたことが検出されると、上位パイプラインはフラッシュされ、正しい分岐ターゲット・アドレスから命令をフェッチする際における遅延を最小化する。下位パイプラインは、誤予測された分岐命令がコンファームし、その時点でコミットされていない命令全てが下位パイプラインからフラッシュされるまで実行を継続することができる。誤予測された分岐識別子を追加することによって、既存の例外パイプライン・フラッシュ・メカニズムが用いられ、下位パイプラインをフラッシュする複雑さ及びハードウェア・コストを低減することができる。
【選択図】図2

Description

本発明は、一般に、パイプライン化されたプロセッサにおける分岐予測に関し、特に、性能を最大化し、誤予測された分岐命令を効率的に訂正するために、同じパイプラインの2つのセグメントを異なる時間に個々にフラッシュするシステム及び方法に関する。
現代のプロセッサは、各々が複数の実行ステップを有する連続命令が、実行中オーバラップされる、パイプライン化されたアーキテクチャを用いる。最大性能のために、命令は、パイプラインを絶え間なくフローしなければならない。しかし、命令はしばしば、例えば命令間のデータ依存、メモリ・アクセスに関する遅延、十分なパイプライン・リソースを命令に割り当てることの不可能性等のような様々な理由によってパイプライン内でストール状態となる。パイプラインのストールを最小化し、それらを効率的に解決することが、改善されたプロセッサ性能を達成するための重要要件である。
現代の現実世界プログラムは、条件付分岐命令を含み、その実際の分岐挙動は、命令がパイプラインの深部で評価されるまで知られない。昨今のプロセッサは、条件付分岐命令の分岐挙動がパイプライン内で早期に予測され、分岐予測に基づいて、プロセッサが命令をフェッチしてそれを推測的に実行し、それらに推測的にパイプライン・リソースを割り当てる、様々な形式の分岐予測を用いる。実際の分岐挙動が決定されると、分岐が誤予測されていた場合、推測的にフェッチされた命令はパイプラインからフラッシュされなければならず、推測的に割り当てられたリソースは割当を解除され、分岐予測以前の状態に戻されなければならず、新たな命令が正しい分岐ターゲット・アドレスからフェッチされなければならない。
一方では、正しい命令がフェッチされ、パイプライン内にランチされ、分岐誤予測によって生じる遅延が最小化されるように、パイプラインは理想的には、誤予測を検出すると直ちにフラッシュされるべきである。他方では、誤った分岐経路からフェッチされた命令は、推測的実行の様々なステージにあり、様々なプロセッサ・リソースを推測的に割り当てられていることがある。リソースを分岐予測前の状態に復元するために、これらの割当を直ちに「解く」ことは困難であり、多くのプロセッサ・サイクルをもたらし、及び/又は、推測的に割り当てられたリソースの多くの複写コピーを必要としうる。パイプラインを直ちにフラッシュすることによって生じるペナルティは、例えばスーパースカラ・プロセッサのような、順不同命令実行をサポートするプロセッサにおいて、関連する命令エイジ(instruction age)のトラッキングという更なる試練によって更に悪化する。この命令エイジのトラッキングは、(プログラム順序において)誤予測された分岐命令より後にフェッチされた命令のみがフラッシュされることと、(プログラム順序において)分岐命令より前の命令は、それらがパイプライン内で分岐命令より後であっても全て実行されることとを確実にする必要がある。
分岐誤予測を判定すると、プロセッサは、(理想的には)数サイクルしか通常の実行を継続しないことによって、誤ってフェッチされ推測的に実行された命令を自身のパイプラインからフラッシュし、例外のイベントにおいてパイプラインのフラッシュを処理する既存のハードウェアを用いるタスクを容易にすることができる。この処理は、分岐誤予測に応じてパイプラインをフラッシュすることの複雑さ及びコストを劇的に低減することができる。しかし、それによって生じる更なる遅延は、パイプラインを直ちにフラッシュし、正しい分岐ターゲット・アドレスから迅速に命令をフェッチするという目標に反する。
1つ又は複数の実施形態によると、(プログラム順序を外れる命令より前の)上位パイプラインは、分岐命令が誤予測されたことを検出すると直ちにフラッシュされ、正しい分岐ターゲット・アドレスから命令を直ちにフェッチすることを可能とする。パイプラインの下位部分の各々は、誤予測された分岐命令がコンファームするまで実行を継続することができ、その時点で、コミットされていない命令全てが下位パイプラインからフラッシュされる。既存の例外パイプライン・フラッシュ・メカニズムは、誤予測された分岐識別子を追加することによって、下位パイプラインをフラッシュすることの複雑さ及びハードウェア・コストを低減することができる。
1つの実施形態は、順不同実行を可能とする、パイプライン化されたプロセッサにおいて命令を実行する方法に関する。分岐誤予測を検出すると、上位パイプライン、すなわち、命令がプログラム順序を外れることができるポイントより前の部分のパイプラインがフラッシュされる。誤予測された分岐命令を実行のためにコミットすると、コミットされていない命令全てが、下位パイプライン、すなわち、命令がプログラム順序を外れることができるポイントより後の部分のパイプラインからフラッシュされる。
別の実施形態は、プロセッサに関する。このプロセッサは、命令が順不同となりうるポイントより前の上位パイプライン、及び命令が順不同となりうるポイントを越えた1つ又は複数の下位パイプラインを備えたセグメント化命令実行パイプラインと、制御論理とを含む。制御論理は、誤予測された分岐を検出すると、上位パイプラインから全ての命令をフラッシュするように動作可能であり、更に、誤予測された分岐命令を実行のためにコミットすると、コミットされていない命令全てを下位パイプラインからフラッシュするように動作可能である。
図1は、分岐誤予測のためにフラッシュするセグメント化されたパイプラインを有する、パイプライン化されたスーパースカラ・プロセッサの1つの実施形態の機能ブロック図である。 図2は、図1のプロセッサにおける命令実行の方法のフロー図である。
発明を実施する形態
図1は、分岐誤予測のためにフラッシュするセグメント化されたパイプラインを有するプロセッサ10の機能ブロック図を示す。プロセッサ10は、命令順序付けメカニズム(IOM)13を含む制御論理11に従って、命令実行パイプライン12内の命令を実行する。パイプライン12は、本明細書において更に詳細に説明されるように、上位部分14と下位部分16とに論理的に分割される。パイプライン12は、複数の並行な下位パイプライン16a、16bを有するスーパースカラ設計であることができる。パイプライン14、16は、パイプ・ステージ内に構成された様々なレジスタすなわちラッチ18、及び、例えば算術論理演算ユニット(ALU)(図示せず)のような論理回路及び計算回路を含む。汎用レジスタ(GPR)ファイル20は、メモリ階層の最上位を備えるレジスタを提供する。本明細書で説明されるように、GPR20は、GPRリソースを推測的に命令に割り当てるための推測的再命名テーブル(Speculative Renaming Table)(SRT)22及びコミット再命名テーブル(Committed Renaming Table)(CTR)24を含むことができる。
上位パイプライン14は、命令側変換索引バッファ(ITLB)28によって管理されるメモリ・アドレス指定及び許可によって、命令キャッシュ(Iキャッシュ、すなわちI$)26から命令をフェッチする。データは、主要変換索引バッファ(TLB)32によって管理されるメモリ・アドレス指定及び許可によって、データ・キャッシュ(Dキャッシュ、すなわちD$)30からアクセスされる。様々な実施形態において、ITLB28は、TLB32の一部のコピーを備えることができる。あるいは、ITLB28及びTLB32は統合されうる。同様に、プロセッサ10の様々な実施形態において、Iキャッシュ26及びDキャッシュ30は一体化されうる。
Iキャッシュ28及び/又はDキャッシュ30は、メモリ・インタフェース36の制御下で、主(オフチップ)メモリ34へのアクセスをもたらす(図示されないが、プロセッサ10と主メモリ34との間に他のキャッシュが挿入されうる)。プロセッサ10は、入力/出力(I/O)インタフェース38を含み、様々な周辺デバイス40、42へのアクセスを制御することができる。当業者は、プロセッサ10の多くの変形例が可能であることを理解するであろう。例えばプロセッサ10は、Iキャッシュ26及びDキャッシュ30の何れか又は両方について、第2レベル(L2)キャッシュを含むことができる。更に、プロセッサ10内に示された機能ブロックのうちの1つ又は複数が、特定の実施形態から省略されうる。
上位パイプライン14と、1つ又は複数の下位パイプライン16とへのパイプライン12の論理分割は、命令の順序とは無関係に、何れの命令が上位パイプライン14から直ちにフラッシュされうるかによる確実性によって決定される。特に、上位パイプライン14は、命令がプログラム順序を外れる時点より前に、パイプライン12の一部として定められる。同様に、下位パイプライン16は、上位パイプライン14の後に、パイプライン12の一部として定められる。順不同実行をサポートするプロセッサにおいて、下位パイプライン16内の命令は、それらのプログラム順序以外でパイプ・ステージへディスパッチされうる。ほとんどの実施形態において、上位パイプライン14は、フェッチ・ステージ及び復号ステージ全てを備え、下位パイプライン16は、(スーパースカラ・パイプラインの場合)命令発行ステージ及び1つ又は複数の実行パイプラインを含むであろう。
パイプライン12の論理分割によって、分岐誤予測が検出されると上位パイプライン14が直ちにフラッシュされ、正しい分岐ターゲット・アドレスから命令をフェッチするために必要な時間を最小化することが可能となる。更に、下位パイプライン14は実行を継続するので、誤予測された分岐より後に推測的にフェッチされた命令全てを下位パイプライン14から効率的にフラッシュするという利点を、既存の例外フラッシュ・メカニズムに対して有することも可能となる。
上位パイプライン14のフラッシュは簡単である。上位パイプライン14は、命令がプログラム順序を外れる時点より前に定められ、誤予測された分岐の判定は、下位パイプライン16内の実行ステージにおいて起こるので、誤予測判定の時点では、上位パイプライン40内の命令は全て、誤予測された分岐命令よりも新しいことが知られる。すなわち、それらは全て分岐予測を信頼してフェッチされており、誤予測された分岐の検出後のサイクルにおけるように、全て安全にフラッシュされうる。これにより、プロセッサ10は、可能な限り早く正しい分岐ターゲット・アドレスからの命令のフェッチを開始することができ、パイプライン・ストール持続時間は最小化される。
下位パイプライン16のフラッシュは問題を含む。命令はプログラム順序外で実行しているので、パイプライン内の誤予測された分岐より後の命令は全て、誤予測された分岐命令より新しく、安全にフラッシュすることを想定することができない。例えば、以下の命令LD、ADD、BRを考慮されたい。ここでLDはADDのためのオペランドを提供するが、BRは何れからも独立している。LDの動作は、メモリ・アクセスを必要とし、これは特にDキャッシュ30のミスの場合、パイプライン16をストールさせる可能性がある。ADDは無論、LDが完了するのを待たなければならない。しかし、独立したBR命令は、LD及びADDより前に、実行のために下位パイプライン16内へディスパッチされうる。BR条件評価が、それが誤予測されたことを検出すると、プロセッサは、BR命令より後に下位パイプライン16を単純にフラッシュすることができない。プロセッサは、何れもプログラム順序がBRより前であり実行されなければならないLD及びADDをフラッシュするであろう。
多くのスーパースカラ・プロセッサ10は、命令順序付けマネージャ(IOM)をパイプライン制御論理11の一部として含む。IOMは、例えばサーキュラ・バッファ、FIFO等におけるように、真のプログラム順序での命令の表現を保持することによって、パイプラインを通した命令実行の順序、つまり、どの命令が、与えられた命令よりも古いか、又は新しいかをトラックする。命令表現に関連するフラグ又は属性によって、IOMは更に、命令依存性をトラックし、例外処理における手段となる。1つ又は複数の実施形態によると、プロセッサ10内のIOM13は、誤予測された分岐命令が発見されると、下位パイプラインを効率的にフラッシュすることを容易にする追加の回路及び論理を含む。例外処理におけるIOM13の役割の簡略な概観は、本明細書において開示され主張された実施形態に従う下位パイプライン16の誤予測された分岐のフラッシュを明らかにするであろう。
例外は、パイプ・ステージが、自身の命令ステップの実行を完了することが不可能である場合常に生じる。例えば、メモリにデータを書き込む格納命令は、TLB32のルックアップが、メモリ・ページが読取専用であることを示した場合、例外をもたらしうる。他のタイプの例外は、当該技術において周知である。例外が発生すると、プロセッサ10は、パイプライン12内の、例外より前、すなわち古い命令全てを実行し、例外の原因である命令及び新たな命令全てをパイプライン12からフラッシュし、その後、割込み処理コードを実行しなければならない。IOM13は、何れの命令が「コンファーム(confirm)」され、何れの命令が「コミット(commit)」されたかをトラックすることによって、この処理を支援する。
命令は、自身の実行を妨げるパイプライン・ハザードがない、すなわち、命令がストールしないであろうことが判定された場合、コンファームされる。例えば、算術又は論理演算を実行する命令は、どちらのオペランドも、前の命令から生成されているか、メモリからフェッチされたか、又はそうでない場合利用可能である、と知られている場合、コンファームされうる。命令は、その命令(及びそれより古い命令全て)がコンファームされた場合、コミットされる。コミットされた命令は、(その命令自身がコンファームされた場合)その命令、又は(それより古い命令全てがコンファームされた場合)それより前の任意の命令の何れかを妨げるパイプライン・ハザードがないので、実行を完了することができることを知られる。コミットされた命令は全て、実行しなければならない。
例外処理中の従来のルールは、例外の原因である命令が「コミットされていない最後の命令」である場合、コミットされていない命令全てがパイプライン12からフラッシュされることである。すなわち、例外の原因である命令より前の命令全てが実行のためにコミットされているが、例外の原因である命令及びそれより新しい命令全てはコミットされていない。(例外の原因である命令を含む)コミットされていない命令がフラッシュされ、コミットされた命令は実行を継続する。新たな命令が、割込みハンドラ・アドレスからフェッチされる。
例外の原因である命令とは異なり、誤予測された分岐命令は、実行されなければならず、フラッシュされてはならない。誤っているのは分岐予測のみであり、分岐命令自体は実行しなければならず、プログラム・フローを適切な分岐ターゲット・アドレスへ向けなければならない。従って、誤予測された分岐命令が「コミットされた最も新しい命令」である場合、コミットされていない命令は全て、下位パイプライン16a、16bからフラッシュされる。すなわち、誤予測された分岐命令及びそれより前の命令は全て実行のためにコミットされているが、(誤予測された分岐ターゲット・アドレスからフェッチされた)分岐より後の命令は全てコミットされていない。コミットされていない命令はフラッシュされ、(誤予測された分岐命令を含む)コミットされた命令は、実行を継続する。
1つ又は複数の実施形態において、IOM13内の各エントリは、IOM13のエントリが生成されるとアサートされていない状態に初期化される、誤予測された分岐(MPB)フラグ又はビット・フィールドを含む。分岐命令は通常、他のデータ依存を有さないので、自身の分岐評価の直後にコンファームするであろう。コンファーム・パイプ・ステージは、分岐命令が実行される、各パイプライン16a、16b内の分岐条件評価ステージに後続し、コンファームされたフラグをIOM13内にセットする。コンファーム・パイプ・ステージは更に、分岐評価と自身の予測された値とを比較し、分岐が誤予測された場合、MPBフラグをIOM13内にセットする。実行のために命令をコミットしている時、MPBフラグに遭遇すると、IOM13及び関連する制御論理11は、上述された「コミットされた最も新しい命令」のルールに従って、下位パイプライン16のフラッシュを実施することができる。
IOM13において、誤予測の検出から、誤予測された分岐命令のコンファーム及びコミットまでの遅延は通常、ほんの数サイクルしかかからないはずである。一方、上位パイプライン14の瞬時のフラッシュは、正しい分岐ターゲット・アドレスからの命令のフェッチが既に開始したことを意味する。例えば上述したLD、ADD、BRの例のようないくつかの場合、分岐誤予測の検出と、分岐命令のコンファームとの間には、下位パイプライン16のフラッシュを可能とする著しい遅延がありうる。下位パイプライン16のフラッシュが、例えば上位パイプライン14の深部といった、その後の更なるサイクルを要する可能性に対する予防措置として、上位パイプライン14と下位パイプライン16との境界に、あるいはそれより前に、パイプライン保留が構成されうる。下位パイプライン16のフラッシュが完了すると除去されるこの保留は、正しい分岐ターゲット・アドレスからフェッチされた任意の命令を誤ってフラッシュすることを防ぐ。条件付パイプラインの保留は当該技術において周知であり、本明細書における更なる説明なしでも当業者によって容易に実施されうる。
下位パイプライン16をフラッシュすることの別の困難性は、フラッシュ後に推測的に割り当てられたプロセッサ・リソースの正しい状態を再格納することである。例えばレジスタの再命名は、論理GPR識別子(r0、r1、r2・・・)が、再命名テーブル内のマッピングを介して物理レジスタの大きなセットに動的にマップされる、GPR20管理の周知の方法である。レジスタ再命名システムは、順不同命令実行に内在するデータ・ハザードの多くを回避する。動作中、GPR20レジスタに書き込む命令毎に、新たな物理レジスタが割り当てられ、新たな論理対物理「再命名」が再命名テーブル内に記録される。GPR20を読み取る命令は、再命名テーブルのルックアップを介して、自身の論理GPR識別子を物理レジスタ番号に変換する。物理レジスタ番号は、パイプライン16を介して、自身の保持期間(tenure)中ずっと、レジスタ読取命令に関連付けられたままである。
レジスタ再命名システムにおいて、GPR20は、同一の論理GPR識別子に書き込まれた前の値を「損なう(corrupt)」ことがない。この書込みは、新たな未使用の物理レジスタに向けられる。プログラム順序において書込み命令より後の命令は、新たな物理レジスタへ向けられ、書き込まれた値を取得する。プログラム順序において書込み命令より前の命令は、再命名テーブルによって(再命名動作前に)異なる物理レジスタへマップされており、その物理レジスタにアクセスし続けるであろう。従って、与えられたGPR識別子を書き込む命令は、そのGPR識別子から前の値を読み取る命令(読取ハザード後の書込み、すなわちWaR)、あるいはそのGPR識別子へ前の結果を書き込む命令(書込みハザード後の書込み、すなわちWaW)より前に実行されうる。このように、WaRデータ・ハザード及びWaWデータ・ハザードが回避される。
論理GPR識別子の物理レジスタへの再命名は、プロセッサ・リソースの推測的な割当である。命令は順不同で実行することができるので、プログラム順序において書き込み命令より前の別の命令の実行より前に、論理GPR識別子を書き込むことができる(そして、新たな物理レジスタを割り当てられうる)。他の命令が例外をもたらすか、又は誤予測された分岐命令であった場合、書き込み命令はパイプライン16からフラッシュされることができ、その物理レジスタは割当を解除される。一方、書込み命令より前のレジスタ再命名は、保存されなければならない。
任意の時間に(例えば誤予測された分岐を検出すると直ちに)下位パイプライン16をフラッシュし、復元することができるように、論理GPR識別子が物理レジスタに再命名される度に、すなわち、レジスタ書込み命令がパイプライン16内にランチする度に、再命名テーブルの別々のコピーが生成されなければならず、そのコピーは、レジスタ書込み命令が実行のためにコミットするまで保持されなければならない。これらのレジスタ・テーブルはその後、何れの命令がパイプライン16からフラッシュされるかに基づいて選択的に破棄されうる。このアプローチは、再命名テーブルの多数のコピーを保持することにおいても、パイプライン16をフラッシュすると再命名テーブルが破棄されなければならない論理トラッキングにおいても高価である。
1つ又は複数の実施形態において、推測的再命名テーブル(SRT)22及びコミット済再命名テーブル(CRT)24の再命名テーブルの2つのコピーのみが保持される。SRT22は、論理GPR識別子が新たな物理レジスタに再命名される度に更新される。CRT24におけるレジスタ再命名マッピングは、関連するレジスタ書込み命令が実行のためにコミットされた場合しか更新されない。下位パイプライン16が、誤予測された分岐によってフラッシュされた場合、誤予測された分岐命令はコミットされた最も新しい命令であるので、(プログラム順序において)分岐より前にコミットされたレジスタ書込み命令は全て、CRT24に記録された自身のレジスタ再命名マッピングを有することが知られる。更に、(プログラム順序において)誤予測された分岐命令より後のレジスタ書込み命令によって実行された任意のレジスタ再命名は、SRT22にしか記録されず、CRT24には記録されないことが知られる。これらのレジスタ再命名は破棄されなければならず、下位パイプライン16の一部として割当を解除された関連する物理レジスタはフラッシュする。
1つ又は複数の実施形態において、誤予測された分岐命令がコミットされた最も新しい命令である場合、誤予測された分岐によって下位パイプライン16がフラッシュされると、CRT24はSRT22へコピーされる。これにより、SRT22は、誤予測された分岐命令の時点での正しい状態となり、フラッシュされたレジスタ書込み命令に推測的に割り当てられた物理レジスタは割当を解除される。2つの再命名テーブルのみを保持し、誤予測された分岐命令がコミットするまで下位パイプライン16のフラッシュを遅延させることによって、推測的に割り当てられたプロセッサ・リソースの割当を解除するタスクは格段に簡略化される。
図2は、1つ又は複数の実施形態に従う、順不同実行を可能とするパイプライン化されたプロセッサ10において命令を実行する方法を示す。関連する方法は、プロセッサ10が誤予測された分岐(MPB)を検出すると開始する(ブロック100)。これは通常、下位パイプライン16a、16b内の実行(EXE)ステージにおいて起こるであろう。MPBを検出すると直ちに、プロセッサ10は、後続するサイクルにおけるように、上位パイプライン14をフラッシュし(102)、正しい分岐ターゲット・アドレスからの命令のフェッチを開始する(ブロック114)。プロセッサ10はその後、下位パイプライン16がフラッシュされるまで上位パイプライン14を保留する(ブロック116)。この保留が解除されると、通常のプロセッサ10の実行が継続する(ブロック118)。
同時に、プロセッサ10は、MPB命令がコンファームするまで下位パイプライン16において実行を継続する(ブロック120)。このコンファームは通常、分岐誤予測の検出の直後、パイプ・ステージ内で起こるであろう。MPB命令がコンファームすると(ブロック120)、コンファームされたフラグ及びMPBフラグがIOM13内に設定される(ブロック122)。通常の処理が、MPB命令がコミットするまで継続する。MPB命令が、コミットされた最も新しい命令である場合(ブロック124)、IOM13は、コミットされていない命令全ての下位パイプライン16からのフラッシュをトリガする(ブロック126)。プロセッサ10はその後、CRT24をSRT22へコピーし、通常の実行を継続する(ブロック118)。
このように、実施形態は、上位パイプライン14を直ちにフラッシュすることによって、正しい分岐ターゲット・アドレスから命令をフェッチする際における遅延を最小化することと、下位パイプライン16を効率的にフラッシュすることによって、誤った分岐ターゲット・アドレスからフェッチされた命令のみを正しくフラッシュし、それらに推測的に割り当てられたプロセッサ・リソースの割当を解除するための複雑な計算及び重複したハードウェアを回避することとの両方を達成する。実施形態は本明細書において例外のフラッシュを実施するIOM13に関して説明されたが、本発明はそれらの実施形態に限定されない。特に、本明細書で説明された、誤予測された分岐命令がコミットされた最も新しい命令となる場合、コミットされていない命令全てを下位パイプライン16からフラッシュする命令トラッキング・メカニズムは、例外のフラッシュを実行する必要はない。更に、プロセッサ・リソース10の推測的割当は本明細書においてレジスタ再命名スキームに関連して説明されたが、例えば再命名バッファ等のようなその他多くの形式の推測的リソース割当が当該技術において周知である。
本発明は、本発明の本質的特徴から逸脱することなく、本明細書に具体的に記載された方法以外の方法で実行されることができる。本実施形態は、全ての観点において、限定的ではなく例示的であるように見なされ、特許請求の範囲の意味および均等物の範囲内で実現する変形例全ては、特許請求の範囲に包含されることが意図される。
本発明は、本発明の本質的特徴から逸脱することなく、本明細書に具体的に記載された方法以外の方法で実行されることができる。本実施形態は、全ての観点において、限定的ではなく例示的であるように見なされ、特許請求の範囲の意味および均等物の範囲内で実現する変形例全ては、特許請求の範囲に包含されることが意図される。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
順不同実行を可能とするパイプライン化されたプロセッサにおいて命令を実行する方法であって、
分岐命令誤予測を検出すると、命令がプログラム順序を外れる時点より前に、上位パイプラインをフラッシュすることと、
前記誤予測された分岐命令を実行のためにコミットすると、前記命令がプログラム順序を外れる時点より後に、コミットされていない命令全てを下位パイプラインからフラッシュすることと
を備えた方法。
[C2]
前記誤予測された分岐命令をコンファームすると、前記誤予測された分岐命令を、命令順序付けメカニズムにおけるように示すことを更に備えたC1に記載の方法。
[C3]
前記コミットされていない命令全てを下位パイプラインからフラッシュすることは、前記誤予測された分岐命令が、コミットされた最も新しい命令である場合、前記命令順序付けメカニズムにおける誤予測された分岐命令インジケータに応答して命令をフラッシュすることを備えたC2に記載の方法。
[C4]
前記プロセッサは2つ以上のパイプラインを含み、分岐命令を実行する各パイプラインは、前記命令順序付けメカニズムにおける誤予測された分岐命令インジケータを設定するように動作可能なコンファーム・ステージを含むC2に記載の方法。
[C5]
前記上位パイプラインのフラッシュ後、正しい分岐ターゲット・アドレスから命令をフェッチすることを備えたC1に記載の方法。
[C6]
前記上位パイプラインのフラッシュ後、コミットされていない命令全てが前記下位パイプラインからフラッシュされるまで、命令がプログラム順序を外れる時点以前の上位パイプラインを停止することを更に備えたC5に記載の方法。
[C7]
推測的に割り当てられた前記リソースが、レジスタ再命名リソースを含むC6に記載の方法。
[C8]
コミットされていない命令を前記下位パイプラインからフラッシュすると、コミットされていない命令に推測的に割り当てられたリソースの割当を解除するC1に記載の方法。
[C9]
コミットされていない命令に推測的に割り当てられたリソースの割当を解除することは、コミット済レジスタ再命名テーブルの内容を、推測的レジスタ再命名テーブルにコピーすることを含むC8に記載の方法。
[C10]
制御論理と、
命令がプログラム順序を外れることができるポイントより前の上位パイプラインと、前記命令が順序を外れることができるポイントより後の1つ又は複数の下位パイプラインとを備えた、セグメント化された命令実行パイプラインとを備え、
前記制御論理は、誤予測された分岐を検出すると、前記上位パイプラインから全ての命令をフラッシュするように動作可能であり、更に、前記誤予測された分岐命令を実行のためにコミットすると、コミットされていない命令全てを前記下位パイプラインからフラッシュするように動作可能であるプロセッサ。
[C11]
前記制御論理は更に、前記上位パイプラインをフラッシュした後のサイクルにおいて、正しい分岐ターゲット・アドレスから命令をフェッチするように動作可能であるC10に記載のプロセッサ。
[C12]
前記制御論理は更に、前記上位パイプラインのフラッシュ後、前記上位パイプラインの終点に保留を設置し、コミットされていない命令全てを前記下位パイプラインからフラッシュすると、前記保留を除去するように動作可能であるC11に記載のプロセッサ。
[C13]
前記制御論理は、コンファーム及びコミットされた状態の命令をトラックするように動作可能な命令順序付けメカニズムであり、前記誤予測された分岐命令が、コンファームされた最も新しい命令である場合、コミットされていない命令全てを前記下位パイプラインからフラッシュするように更に動作可能な命令順序付けメカニズムを含むC10に記載のプロセッサ。
[C14]
前記命令順序付けメカニズム内の各エントリは、関連付けられた命令が、誤予測された分岐命令であるかを示すインジケーションを含む。
[C15]
分岐命令を実行する下位パイプラインの各々は、分岐命令が誤予測されたと判定されると、誤予測された分岐インジケーションを前記命令順序付けメカニズム内に設定するように動作可能なコンファーム状態を含むC14に記載のプロセッサ。
[C16]
汎用レジスタ(GPR)論理識別子を物理レジスタに動的に関連付けるように動作可能なGPRを更に備え、前記GPRは、
複数の物理レジスタと、
現在のGPR論理識別子全ての物理レジスタへのマッピングを含む推測的再命名テーブル(SRT)と、
コミットされた命令のみについて、GPR論理識別子の物理レジスタへのマッピングを含むコミット済再命名テーブル(CRT)とを備え、
前記制御論理は、コミットされていない命令全てを前記下位パイプラインからフラッシュすると、前記CRTの内容を前記SRTにコピーするように動作可能であるC10に記載のプロセッサ。

Claims (16)

  1. 順不同実行を可能とするパイプライン化されたプロセッサにおいて命令を実行する方法であって、
    分岐命令誤予測を検出すると、命令がプログラム順序を外れる時点より前に、上位パイプラインをフラッシュすることと、
    前記誤予測された分岐命令を実行のためにコミットすると、前記命令がプログラム順序を外れる時点より後に、コミットされていない命令全てを下位パイプラインからフラッシュすることと
    を備えた方法。
  2. 前記誤予測された分岐命令をコンファームすると、前記誤予測された分岐命令を、命令順序付けメカニズムにおけるように示すことを更に備えた請求項1に記載の方法。
  3. 前記コミットされていない命令全てを下位パイプラインからフラッシュすることは、前記誤予測された分岐命令が、コミットされた最も新しい命令である場合、前記命令順序付けメカニズムにおける誤予測された分岐命令インジケータに応答して命令をフラッシュすることを備えた請求項2に記載の方法。
  4. 前記プロセッサは2つ以上のパイプラインを含み、分岐命令を実行する各パイプラインは、前記命令順序付けメカニズムにおける誤予測された分岐命令インジケータを設定するように動作可能なコンファーム・ステージを含む請求項2に記載の方法。
  5. 前記上位パイプラインのフラッシュ後、正しい分岐ターゲット・アドレスから命令をフェッチすることを備えた請求項1に記載の方法。
  6. 前記上位パイプラインのフラッシュ後、コミットされていない命令全てが前記下位パイプラインからフラッシュされるまで、命令がプログラム順序を外れる時点以前の上位パイプラインを停止することを更に備えた請求項5に記載の方法。
  7. 推測的に割り当てられた前記リソースが、レジスタ再命名リソースを含む請求項6に記載の方法。
  8. コミットされていない命令を前記下位パイプラインからフラッシュすると、コミットされていない命令に推測的に割り当てられたリソースの割当を解除する請求項1に記載の方法。
  9. コミットされていない命令に推測的に割り当てられたリソースの割当を解除することは、コミット済レジスタ再命名テーブルの内容を、推測的レジスタ再命名テーブルにコピーすることを含む請求項8に記載の方法。
  10. 制御論理と、
    命令がプログラム順序を外れることができるポイントより前の上位パイプラインと、前記命令が順序を外れることができるポイントより後の1つ又は複数の下位パイプラインとを備えた、セグメント化された命令実行パイプラインとを備え、
    前記制御論理は、誤予測された分岐を検出すると、前記上位パイプラインから全ての命令をフラッシュするように動作可能であり、更に、前記誤予測された分岐命令を実行のためにコミットすると、コミットされていない命令全てを前記下位パイプラインからフラッシュするように動作可能であるプロセッサ。
  11. 前記制御論理は更に、前記上位パイプラインをフラッシュした後のサイクルにおいて、正しい分岐ターゲット・アドレスから命令をフェッチするように動作可能である請求項10に記載のプロセッサ。
  12. 前記制御論理は更に、前記上位パイプラインのフラッシュ後、前記上位パイプラインの終点に保留を設置し、コミットされていない命令全てを前記下位パイプラインからフラッシュすると、前記保留を除去するように動作可能である請求項11に記載のプロセッサ。
  13. 前記制御論理は、コンファーム及びコミットされた状態の命令をトラックするように動作可能な命令順序付けメカニズムであり、前記誤予測された分岐命令が、コンファームされた最も新しい命令である場合、コミットされていない命令全てを前記下位パイプラインからフラッシュするように更に動作可能な命令順序付けメカニズムを含む請求項10に記載のプロセッサ。
  14. 前記命令順序付けメカニズム内の各エントリは、関連付けられた命令が、誤予測された分岐命令であるかを示すインジケーションを含む。
  15. 分岐命令を実行する下位パイプラインの各々は、分岐命令が誤予測されたと判定されると、誤予測された分岐インジケーションを前記命令順序付けメカニズム内に設定するように動作可能なコンファーム状態を含む請求項14に記載のプロセッサ。
  16. 汎用レジスタ(GPR)論理識別子を物理レジスタに動的に関連付けるように動作可能なGPRを更に備え、前記GPRは、
    複数の物理レジスタと、
    現在のGPR論理識別子全ての物理レジスタへのマッピングを含む推測的再命名テーブル(SRT)と、
    コミットされた命令のみについて、GPR論理識別子の物理レジスタへのマッピングを含むコミット済再命名テーブル(CRT)とを備え、
    前記制御論理は、コミットされていない命令全てを前記下位パイプラインからフラッシュすると、前記CRTの内容を前記SRTにコピーするように動作可能である請求項10に記載のプロセッサ。
JP2012133878A 2007-01-24 2012-06-13 誤予測された分岐のためにフラッシュするセグメント化パイプライン Expired - Fee Related JP5866259B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/626,443 2007-01-24
US11/626,443 US7624254B2 (en) 2007-01-24 2007-01-24 Segmented pipeline flushing for mispredicted branches

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009547432A Division JP2010517183A (ja) 2007-01-24 2008-01-24 誤予測された分岐のためにフラッシュするセグメント化パイプライン

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014121814A Division JP6208084B2 (ja) 2007-01-24 2014-06-12 誤予測された分岐のためにフラッシュするセグメント化パイプライン

Publications (2)

Publication Number Publication Date
JP2012230687A true JP2012230687A (ja) 2012-11-22
JP5866259B2 JP5866259B2 (ja) 2016-02-17

Family

ID=39327442

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2009547432A Pending JP2010517183A (ja) 2007-01-24 2008-01-24 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2012133878A Expired - Fee Related JP5866259B2 (ja) 2007-01-24 2012-06-13 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2014121814A Expired - Fee Related JP6208084B2 (ja) 2007-01-24 2014-06-12 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2016082077A Expired - Fee Related JP6370829B2 (ja) 2007-01-24 2016-04-15 誤予測された分岐のためにフラッシュするセグメント化パイプライン

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009547432A Pending JP2010517183A (ja) 2007-01-24 2008-01-24 誤予測された分岐のためにフラッシュするセグメント化パイプライン

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2014121814A Expired - Fee Related JP6208084B2 (ja) 2007-01-24 2014-06-12 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2016082077A Expired - Fee Related JP6370829B2 (ja) 2007-01-24 2016-04-15 誤予測された分岐のためにフラッシュするセグメント化パイプライン

Country Status (10)

Country Link
US (1) US7624254B2 (ja)
EP (1) EP2115572B1 (ja)
JP (4) JP2010517183A (ja)
KR (1) KR101107812B1 (ja)
CN (1) CN101601009B (ja)
BR (1) BRPI0807405A2 (ja)
CA (1) CA2674720C (ja)
MX (1) MX2009007949A (ja)
RU (1) RU2427889C2 (ja)
WO (1) WO2008092045A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9738197B2 (en) 2011-11-29 2017-08-22 Ts Tech Co., Ltd. Mounting member and airbag module-equipped seat

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624254B2 (en) * 2007-01-24 2009-11-24 Qualcomm Incorporated Segmented pipeline flushing for mispredicted branches
US9384003B2 (en) * 2007-10-23 2016-07-05 Texas Instruments Incorporated Determining whether a branch instruction is predicted based on a capture range of a second instruction
US7877586B2 (en) * 2008-02-01 2011-01-25 International Business Machines Corporation Branch target address cache selectively applying a delayed hit
US8099586B2 (en) * 2008-12-30 2012-01-17 Oracle America, Inc. Branch misprediction recovery mechanism for microprocessors
US20110320787A1 (en) * 2010-06-28 2011-12-29 Qualcomm Incorporated Indirect Branch Hint
CA2801382C (en) 2010-06-29 2018-12-18 Exxonmobil Upstream Research Company Method and system for parallel simulation models
US8862861B2 (en) 2011-05-13 2014-10-14 Oracle International Corporation Suppressing branch prediction information update by branch instructions in incorrect speculative execution path
US8886920B2 (en) 2011-05-13 2014-11-11 Oracle International Corporation Associating tag to branch instruction to access array storing predicted target addresses for page crossing targets for comparison with resolved address at execution stage
CN102360282A (zh) * 2011-09-26 2012-02-22 杭州中天微系统有限公司 快速处置分支指令预测错误的流水线处理器装置
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
JP6117432B2 (ja) * 2013-05-30 2017-04-19 インテル コーポレイション パイプラインソフトウェアの動的な最適化
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10255074B2 (en) 2015-09-11 2019-04-09 Qualcomm Incorporated Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06230961A (ja) * 1993-01-04 1994-08-19 Motorola Inc データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法
JPH07160500A (ja) * 1993-10-18 1995-06-23 Cyrix Corp 推論的実行を行うマイクロプロセッサ
US5586278A (en) * 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
US5627985A (en) * 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US5812839A (en) * 1994-01-03 1998-09-22 Intel Corporation Dual prediction branch system having two step of branch recovery process which activated only when mispredicted branch is the oldest instruction in the out-of-order unit
JP2001356905A (ja) * 2000-04-28 2001-12-26 Stmicroelectronics Inc スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法
JP2003271381A (ja) * 2002-03-18 2003-09-26 Nec Computertechno Ltd エラー訂正制御回路

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7152155B2 (en) * 2005-02-18 2006-12-19 Qualcomm Incorporated System and method of correcting a branch misprediction
US7624254B2 (en) * 2007-01-24 2009-11-24 Qualcomm Incorporated Segmented pipeline flushing for mispredicted branches

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06230961A (ja) * 1993-01-04 1994-08-19 Motorola Inc データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法
JPH07160500A (ja) * 1993-10-18 1995-06-23 Cyrix Corp 推論的実行を行うマイクロプロセッサ
US5812839A (en) * 1994-01-03 1998-09-22 Intel Corporation Dual prediction branch system having two step of branch recovery process which activated only when mispredicted branch is the oldest instruction in the out-of-order unit
US5627985A (en) * 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US5586278A (en) * 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
JP2001356905A (ja) * 2000-04-28 2001-12-26 Stmicroelectronics Inc スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法
JP2003271381A (ja) * 2002-03-18 2003-09-26 Nec Computertechno Ltd エラー訂正制御回路

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSND200300525009; 中森章: 'コンピュータアーキテクチャ その直感的アプローチ4 並列処理の基本,スーパスカラ' Oh!X 2001春号 , 20010301, Pages:256-275, ソフトバンクパブリッシング株式会社 *
JPN6013042251; 中森章: 'コンピュータアーキテクチャ その直感的アプローチ4 並列処理の基本,スーパスカラ' Oh!X 2001春号 , 20010301, Pages:256-275, ソフトバンクパブリッシング株式会社 *
JPN6013044218; Haitham Akkary, Ravi Rajwar, Srikanth T. Srinivasan: 'Checkpoint Processing and Recovery: Toward Scalable Large Instruction Window Processors' Proceedings of the 36th International Symposium on Microarchitecture(MICRO-36'03) , 2003, Pages:423-434, IEEE *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9738197B2 (en) 2011-11-29 2017-08-22 Ts Tech Co., Ltd. Mounting member and airbag module-equipped seat

Also Published As

Publication number Publication date
CN101601009A (zh) 2009-12-09
EP2115572B1 (en) 2015-03-11
CA2674720C (en) 2015-02-03
JP2016167284A (ja) 2016-09-15
WO2008092045A1 (en) 2008-07-31
MX2009007949A (es) 2009-08-07
US7624254B2 (en) 2009-11-24
CA2674720A1 (en) 2008-07-31
JP5866259B2 (ja) 2016-02-17
KR20090102871A (ko) 2009-09-30
JP2014211881A (ja) 2014-11-13
JP2010517183A (ja) 2010-05-20
KR101107812B1 (ko) 2012-01-25
JP6370829B2 (ja) 2018-08-08
EP2115572A1 (en) 2009-11-11
CN101601009B (zh) 2015-09-16
JP6208084B2 (ja) 2017-10-04
RU2009131712A (ru) 2011-02-27
RU2427889C2 (ru) 2011-08-27
BRPI0807405A2 (pt) 2014-07-08
US20080177992A1 (en) 2008-07-24

Similar Documents

Publication Publication Date Title
JP6370829B2 (ja) 誤予測された分岐のためにフラッシュするセグメント化パイプライン
US6079014A (en) Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US6553480B1 (en) System and method for managing the execution of instruction groups having multiple executable instructions
JP6009608B2 (ja) 条件付き命令が無条件で出力を提供するシステム及び方法
US5687338A (en) Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor
JP4763727B2 (ja) 分岐予測ミスを訂正するシステムおよび方法
US5809271A (en) Method and apparatus for changing flow of control in a processor
US9311084B2 (en) RDA checkpoint optimization
US9575754B2 (en) Zero cycle move
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US9740553B2 (en) Managing potentially invalid results during runahead
JP3132755B2 (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution
JPH10283181A (ja) プロセッサ内で命令を発行するための方法および装置
JP2008530713A5 (ja)
US20090198981A1 (en) Data processing system, processor and method of data processing having branch target address cache storing direct predictions
US9535744B2 (en) Method and apparatus for continued retirement during commit of a speculative region of code
US20170109168A1 (en) Method and apparatus for managing a speculative transaction in a processing unit
US10387162B2 (en) Effective address table with multiple taken branch handling for out-of-order processors
EP1150203A2 (en) System and method for handling register dependency in a stack-based pipelined processor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130910

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131210

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140110

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140212

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140612

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140619

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20140711

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150728

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150828

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160104

R150 Certificate of patent or registration of utility model

Ref document number: 5866259

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees