JP4624988B2 - データ推測マイクロプロセッサにおいて実行中のオペレーションのインスタンスがオペレーションのリプレイの割込みを防ぐためのシステム及び方法 - Google Patents

データ推測マイクロプロセッサにおいて実行中のオペレーションのインスタンスがオペレーションのリプレイの割込みを防ぐためのシステム及び方法 Download PDF

Info

Publication number
JP4624988B2
JP4624988B2 JP2006508586A JP2006508586A JP4624988B2 JP 4624988 B2 JP4624988 B2 JP 4624988B2 JP 2006508586 A JP2006508586 A JP 2006508586A JP 2006508586 A JP2006508586 A JP 2006508586A JP 4624988 B2 JP4624988 B2 JP 4624988B2
Authority
JP
Japan
Prior art keywords
operations
scheduler
instance
detection unit
microprocessor
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.)
Expired - Lifetime
Application number
JP2006508586A
Other languages
English (en)
Other versions
JP2006525594A (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 JP2006525594A publication Critical patent/JP2006525594A/ja
Application granted granted Critical
Publication of JP4624988B2 publication Critical patent/JP4624988B2/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
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or 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
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Debugging And Monitoring (AREA)
  • Control By Computers (AREA)
  • Safety Devices In Control Systems (AREA)

Description

本発明は、マイクロプロセッサ技術分野に関し、より具体的には、マイクロプロセッサにおいてデータの推測を行う方法に関する。
スーパースカラーマイクロプロセッサは、複数の命令を並列に実行し、その設計に適合する最短のクロックサイクルを用いることによって高パフォーマンスを発揮する。しかし、命令と命令の間におけるデータ及びコントロールフローの依存性によって、所定の時間内に発行可能な命令数が制限されてしまう。結果として、ある種のマイクロプロセッサではさらなるパフォーマンスゲイン(性能向上)を図るために投機的実行をサポートしている。
このような投機あるいはスペキュレーションの一つのタイプとして、コントロールフロー推測(control flow speculation)が挙げられる。コントロールフロー推測はプログラム制御が進行する方向を予測する。例えば、分岐が発生するかどうかを予測するために分岐予測が用いられる。様々なタイプの分岐予測が利用可能であり、単純に毎回同じ予測を行う方法から、履歴を基にした予測を行うために、プログラム中の過去の分岐の詳細な履歴を維持する方法まである。分岐予測は、ハードウェアの最適化、コンパイラの最適化、またはその両方によって容易になる。分岐予測機構によって提供される予測に基づいて、命令は投機的にフェッチされ、実行される。分岐命令が最終的に評価されるとき、分岐予測を識別することができる。もし予測が誤っていれば、誤った予測に基づいて投機的に実行されたすべての命令は廃棄される。
他の投機のタイプとしては、データ値を予測するデータ推測がある。すでに提案されたデータ推測の形式は、メモリオペレーション用にアドレスを投機的に生成し、コンピュータオペレーションで使用するためにデータ値を投機的に生成する。コントロール推測にともない、投機的にデータ値を生成するために使用された根本的な条件を最終的に評価し、推測を認証済みとするか、あるいは推測を実行しないようにする。
投機的実行においては、依存性チェックの完了を待たずに命令の実行を進めることができるので、正しい推測によって得られる効率が不正確な推測によって失われる効率を超えていれば、大幅な性能の向上が達成できる。誤推測によるパフォーマンスペナルティ(performance penalty)を減らすことが望ましい。
データ推測のマイクロプロセッサにおいて、実行中のオペレーションのインスタンスがオペレーションリプレイの割込みを防ぐための方法とシステムの様々な実施形態が開示される。幾つかの実施形態では、マイクロプロセッサはオペレーションを実行するように構成された1つ又はそれ以上のファンクショナルユニットと、実行のために、オペレーションをファンクショナルユニットへ発行するように構成されたスケジューラと、少なくとも1つのリプレイ検出ユニットを含む。スケジューラは各オペレーションに対して状態情報を維持するように構成される。そのような状態情報は特に、関連のオペレーションが実行を完了しているかどうかを示す。リプレイ検出ユニットは、スケジューラのオペレーションのうちの1つのオペレーションをリプレイする必要があることを検出するように構成される。リプレイが求められるものとしてオペレーションが検出されたときに、そのオペレーションのインスタンスがファンクショナルユニットのうちの1つによって目下実行中であると、リプレイ検出ユニットは、実行中のオペレーションのインスタンスの実行に応答して、そのオペレーションに対して、その状態情報への更新を禁止するように構成される。コンピュータシステムの様々な実施形態はそのようなマイクロプロセッサを含み得る。
一実施形態では、リプレイ検出ユニットは、実行中のオペレーションのインスタンスを実行しているファンクショナルユニットがスケジューラへオペレーションの完了を信号通知させないようにすることによって、そのオペレーションに対する状態情報へのアップデートを禁止するように構成可能である。別の実施形態では、リプレイ検出ユニットは、スケジューラがそのオペレーションと関連付けられたイシューカウントを変更することによって、そのオペレーションに対する状態情報へのアップデートを禁止するように構成可能である。スケジューラは、オペレーションのイシューカウントがオペレーションのインスタンスのイシューカウントと一致しない場合は、オペレーションのインスタンスの完了に応答して状態情報を更新するように構成可能である。
ある実施形態では、スケジューラは、データ推測検証ユニットがそのオペレーションに対する誤ったデータ推測を検出する場合に、そのオペレーションを再発行する必要があると示すオペレーションと関連付けられた状態情報を更新するように構成可能である。データ推測が誤っていたと検出されたときにそのオペレーションのインスタンスが実行されていると、リプレイ検出ユニットは、そのオペレーションと関連づけられた状態情報が、オペレーションのインスタンスを実行した後にオペレーションを再発行する必要があることを確実に示唆し続けるように構成可能である。
ある実施形態では、マイクロプロセッサはいくつかのリプレイ検出ユニットを含み得る。リプレイ検出ユニットはデータ推測検証ユニットに(例えば、読み出し書込みユニット、あるいは、その他のユニット、又はメモリコントローラに)、あるいはスケジューラ自体に含まれる。
実施形態の方法は以下のものを含み得る。それらは、オペレーションのインスタンスを発行して実行するステップ、オペレーションのインスタンスを発行するステップに続き、オペレーションをリプレイする必要があるという指示を受信するステップ、及びその指示に応答して、オペレーションのインスタンスの完了に応答して、スケジューラのオペレーションの状態への更新を禁止するステップ、である。更新を禁止するステップは、オペレーションのインスタンスを実行中のファンクショナルユニットが、オペレーションのインスタンスの完了をスケジューラへ信号通知させないステップを含む。他の形態では、更新の禁止には、オペレーションをリプレイする必要があるという指示の受信に応じて、オペレーションと関連づけられたイシューカウントを変更するスケジューラ、及び、オペレーションのイシューカウントがオペレーションのインスタンスのイシューカウントと一致しない場合に、オペレーションのインスタンスの完了に応答してオペレーションと関連づけられた状態情報を更新するスケジューラ、である。
本発明は、添付の図面に関連した以下の詳細な説明を参照することによって、よりよく理解することができる。
本発明は様々な変更や代替形態が可能であるが、本発明の個別の実施形態は、各図面において例示として示されたものであり、ここでは詳細に説明されている。しかしながら、ここで行われている実施形態の説明は、本発明を開示された特定の形態に限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲により定義されるような本発明の精神や範囲の範疇であるすべての変更、等価物、及び代替物を含むものであることは理解すべきである。本明細書中の見出しは文章構成のためのものに過ぎず、本明細書の説明または特許請求の範囲を限定または解釈のために用いるべきものではないことに注意されたい。さらに、本明細書において用いられる「できる“may”」という用語は、許可的な意味合い(つまり、そのような可能性を持つ、または可能である)に用いられ、強制的な意味合いではない(つまり、must;しなければいけない)ことに注意すべきである。「include;含む」という用語およびその派生語は「含むが、それに限定されない」ことを意味する。「接続される」という用語は「直接的または間接的に接続される」ことを意味し、「結合される」という用語は「直接的または間接的に結合される」ことを意味する。
発明の詳細な説明
図1は、マイクロプロセッサ100の一実施形態のブロック図である。マイクロプロセッサ100はシステムメモリ200に記録された命令を実行するように構成される。これらの命令の多くはシステムメモリ200に記録されたデータを操作するものである。システムメモリ200はコンピュータシステム全体に物理的に配置可能であり、一つあるいはそれ以上のマイクロプロセッサ100からアクセスできる。
マイクロプロセッサ100は命令(インストラクション)キャッシュ106およびデータキャッシュ128を含む。マイクロプロセッサ100は命令キャッシュ106に結合されたプリフェッチユニット108を含む。ディスパッチユニット104は命令キャッシュ106から命令を受信して、スケジューラ118にオペレーションを発送するように構成される。1以上のスケジューラ118はディスパッチユニット104から発送されたオペレーションを受信し、1以上の実行コア124にオペレーションを発行するように結合できる。実行コア124は、データキャッシュ128に対するアクセスを実行するように構成された読み出し/書き込みユニットを含む。実行コア124によって生成された結果は、結果バス130に出力されうる。これらの結果は続いて発行される命令のためのオペランド値として使用可能であり、および/またはレジスタファイル116に記録することができる。リタイアキュー(retire queue)102はスケジューラ118およびディスパッチユニット104に結合される。このリタイアキュー102は、発行されたオペレーションのそれぞれがいつリタイア可能であるかを決定するように構成される。一実施形態では、マイクロプロセッサ100はx86型アーキテクチャと互換性を持つように設計される。マイクロプロセッサ100はその他多くの要素を含んでいてもよいことに注意すべきである。例えば、マイクロプロセッサ100は分岐予測ユニット(図示せず)を含んでいてもよい。
命令キャッシュ106は命令を、ディスパッチユニット104がそれらを受信する前に、一時的に記録することができる。命令コードは、システムメモリ200からプリフェッチユニット108を介してコードをプリフェッチすることにより、命令キャッシュ106に供給される。命令キャッシュ106は様々な構成で実装可能である(例えば、セットアソシアティブ、フルアソシアティブ、またはダイレクトマッピング)。幾つかの実施形態では、命令キャッシュ106及び/又はデータキャッシュ128の多数レベルがあり得る。幾つかのレベルのキャッシュは、図示されるようにマイクロプロセッサ100と統合され得、一方、他のレベルのキャッシュはマイクロプロセッサの外部に拡張され得る。
プリフェッチユニット108は命令キャッシュ106に記録するためにシステムメモリ200から命令コードをプリフェッチすることができる。一実施形態では、プリフェッチユニット108はシステムメモリ200から命令キャッシュ106にコードをバースト転送するように構成することができる。プリフェッチユニット108は様々な特定のコードプリフェッチ技術およびアルゴリズムを採用することができる。
ディスパッチユニット104は、オペランドアドレス情報、即値データ(immediate data)および/または変位データ(displacement data)とともに、実行コア124が実行可能なビットエンコードされたオペレーションを含む信号を出力する。ある実施形態では、ディスパッチユニット104はある種の命令を実行コア124内で実行可能なオペレーションにデコードするためのデコード回路(図示せず)を含んでいてもよい。単純な命令は単一のオペレーションに対応する。ある実施形態では、より複雑な命令は複数のオペレーションに対応する。オペレーションがレジスタの更新を含む場合、レジスタファイル116中のあるレジスタ位置が推測レジスタ状態を記録するために予約される(別の実施形態では、リオーダバッファが各レジスタに対する一以上の推測レジスタ状態を記録するために用いられる)。レジスタマップは、レジスタのリネームを容易にするために、ソースおよび目的オペランドの論理レジスタ名を物理レジスタ名に変換することができる。レジスタマップは、レジスタファイル116内のどのレジスタが現在割り当てられているかを追跡できる。
図1のマイクロプロセッサ100はアウトオブオーダー実行をサポートする。リタイアキュー102はレジスタ読み出しおよび書き込みオペレーションのためにオリジナルのプログラムシーケンスの記録、つまりトラッキングを行い、投機的命令実行および分岐予測ミスからの復帰を許可し、精密な例外処理を容易にする。リタイアキュー102は、有効になったオペレーションがバッファのボトムに移動し、それによって待ち行列のトップに新しいエントリのための空きを作る、先入れ先出し構造として実装される。リタイアキュー102は、オペレーションが実行を完了したことに応答してオペレーションをリタイアし、全てのオペレーションに対して実行された全ての制御スペキュレーション及びデータが、そのオペレーションを含みそのオペレーションまでに実行されたプログラムに関して、照合すなわちベリファイがなされる。リタイアキュー102は、物理レジスタの、マイクロプロセッサ100のアーキテクチャ状態に対する投機的状態について、その物理レジスタでその値を生成したオペレーションがリタイアした場合に、コミットメントを行う。ある実施形態においては、リタイアキュー102はリオーダバッファの一部として実装される。このようなリオーダバッファは、レジスタリネーミングをサポートするために、推測レジスタ状態のデータ値の記録部を提供するように構成することもできる。他の形態では、リタイアキュー102は、何らデータ値の記録部を提供しないようにすることもできる。また、これに代えて、オペレーションがリタイアする際に、リタイアキュー102は、推測レジスタ状態を記録する必要がなくなったレジスタファイル116内のレジスタの割り当てを取り消し、レジスタマップに対してどのレジスタが現在空いているのかを示す信号を供給する。レジスタファイル116内(他の実施形態では、リオーダバッファ内)の推測レジスタ状態をそれらの状態を生成したオペレーションが有効になるまで維持することによって、分岐予測が間違っていた場合、予測ミスされたパスに従った投機的に実行されたオペレーションの結果がレジスタファイル116内で無効化される。
特定のオペレーションにおける要求されているオペランドがレジスタの位置であるときは、レジスタアドレス情報がレジスタマップ(またはリオーダバッファ)に送られる。例えば、x86アーキテクチャにおいては、8つの32ビット論理レジスタがある(例えば、EAX,EBX,ECX,EDX,EBP,ESI,EDIおよびESP)。物理レジスタファイル116(またはリオーダバッファ)はこれらの論理レジスタの内容を変更する結果のための記録装置を含み、アウトオブオーダー実行を許可する。レジスタファイル116内の物理レジスタは、デコード時に論理レジスタの一つの内容を修正するために決定される各オペレーションの結果を記録するために割り当てられる。従って、特定のプログラムを実行している間の任意の時点において、レジスタファイル116(または、他の実施形態では、リオーダバッファ)は、与えられた論理レジスタの投機的に実行された内容を含む1以上のレジスタを持つ。
レジスタマップは物理レジスタをあるオペレーションの目的オペランドとして指定された特定の論理レジスタに割り当てる。ディスパッチユニット104は、レジスタファイル116が、所与のオペレーションにおいてソースオペランドとして指定された論理レジスタに割り当てられた、既に割り当てられた1以上の物理レジスタを持つことを決定する。このレジスタマップはその論理レジスタに最も最近に割り当てられた物理レジスタのためのタグを供給することができる。このタグは、レジスタファイル116内のオペランドのデータ値にアクセスするために用いることができ、または結果バス130において転送される結果を介してデータ値を受信することができる。もしオペランドがメモリ位置に対応するならば、そのオペランド値は読み出し/書き込みユニット222を介して結果バスに供給される(結果転送および/またはレジスタファイル118への記録のため)。スケジューラ118のひとつからオペレーションが発行されると、オペランドデータ値が実行コア124に供給される。他の実施形態においては、オペレーションが発送されると、オペランド値が対応するスケジューラ118に供給される(そのオペレーションが発行されたときに対応する実行コア124に供給する代わりに)。
ディスパッチユニット104の出力で与えられたビット符号化されたオペレーションと即値データ(immediate data)は、一つ又はそれ以上のスケジューラ118にルーティングされ得る。本文に記載されたように、スケジューラはオペレーションの実行の準備ができたことを検出し、一つ又はそれ以上のファンクショナルユニットに準備オペレーションを発行するデバイスである。例えば、予約ステーションはスケジューラである。スケジュール又はスケジューラのグループにおけるオペレーションは命令又はオペレーションウィンドー又はスケジューリングウィンドーにおけるオペレーションとして称され得る。各スケジューラ118は、実行コア124への発行を待つ幾つかのペンディング中のオペレーションに関するオペレーション情報(例、オペランド値、オペランドタグ、及び/即値データと同様のビット符号化された実行ビット)を保持することができる。ある種の実施形態では、各スケジューラ118は、オペランド値を記録することはできない。その代わりに、オペランド値がファンクショナルユニット126によって(例えば、レジスタファイル116又は結果バス130から)読み出し可能となる時点を判定するために、レジスタファイル116において利用可能な発行されたオペレーション及び結果を各スケジューラが監視し得る。幾つかの実施形態では、各スケジューラ118は専用のファンクショナルユニット126に関連付けられ得る。他の実施形態では、シングルスケジューラ118が1つより多いファンクショナルユニット126にオペレーションを発行し得る。
スケジューラ118は、実行コア124によって実行されるオペレーション情報を一時記録するために提供されうる。上述のとおり、各スケジューラ118はペンディング中のオペレーションのためにオペレーション情報を記録することができる。さらに、各スケジューラは、すでに実行済みであるが再発行される可能性のあるオペレーションのためのオペレーション情報を記録することができる。実行のために利用可能となった任意の必要とされるオペランドの値に応答して、オペレーションが、実行コア124で実行されるよう発行される。従って、オペレーションが実行される順番は、元のプログラム命令シーケンスの順番とは同じでない可能性がある。データ推測を含むオペレーションを、非投機的になるまで、スケジューラ118にとどめ、データ推測が誤っていれば再発行することができる。
一実施形態では、実行コア124のそれぞれは幾つかのファンクショナルユニット126(例えば、図1に示されるファンクショナルユニット126A〜126C)を含み得る。例えば、126Aのような幾つかのファンクショナルユニットは、シフト、ローテート、論理演算、及び分岐オペレーションと同様に加算及び減算の整数演算オペレーションも実行するように構成され得る。例えば、128Bのような他のファンクショナルユニットは、浮動小数点も含めることができるように構成され得る。例えば、126Cのようなファンクショナルユニットによって実行される読み出し/書き込みメモリオペレーション用のアドレス生成を行うように、例えば126Aなどの、一つあるいはそれ以上のファンクショナルユニットが構成され得る。ファンクショナルユニットはデータキャッシュ128及び/又はシステムメモリに記録されたデータにアクセスする読み出し/書き込みオペレーションを実行する。一実施形態では、そのようなファンクショナルユニット126Cはペンディング中の読み出し及び/又は書き込みに関するデータ及びアドレス情報の幾つかのストレージロケーションを備えた読み出し/書き込みバッファで構成され得る。
一つあるいはそれ以上のファンクショナルユニット126が分岐予測ユニットに条件付き分岐命令の実行に関する情報も与えることができ、それによってもし分岐予測ミスが発生したときに、分岐予測ユニットが命令プロセッシングパイプラインに入力された予測を誤った分岐に後続する命令をフラッシュすることができ、プリフェッチユニット106にリダイレクトすることができるようにする。このリダイレクトされたプリフェッチユニット106は、次に命令キャッシュ106又はシステムメモリ200から正しい命令セットのフェッチを開始する。そのような状況では、予測誤りのあった分岐命令の後に発生した元のプログラムシーケンスにおける命令の結果は廃棄され、投機的に実行され、レジスタファイル116に一時的に記録されたものを含む。
実行コア124内のファンクショナルユニット126によって生成された結果は、レジスタの値が更新されていれば、結果バス130においてレジスタファイル116に対して出力される。メモリ位置の内容が変更されていれば、実行コア124内で生成された結果は、読み出し/書き込みユニット126Cに対して供給される。
データキャッシュ128は、実行コア124とシステムメモリ200との間で転送されたデータを一時的に記録するために提供されるキャッシュメモリである。上述の命令キャッシュ106と同様に、データキャッシュ128はセットアソシアティブ構成を含む、様々な特定のメモリ構成において実装可能である。さらに、データキャッシュ106および命令キャッシュ128は、ある実施形態においては統一されたキャッシュとして実装可能である。
幾つかの実施形態では、マイクロプロセッサ100は、マイクロプロセッサがシステムメモリ200に直接インターフェースすることを可能にする統合されたメモリコントローラ160を含む。他の実施形態では、メモリコントローラ160はマイクロプロセッサ100をシステムメモリ200に間接的に結合するバスブリッジに含まれ得る。
[データ推測]
本明細書では、データ値の誤りが見つけられ、結果として再計算される可能性があれば、データ値は投機的であるとする。投機的なデータ値とは正しいか又は誤っているかを確定的に識別できないものである。このデータ値は、幾つかのデータ推測が実行されたことに関するオペレーションの結果であるか、あるいはこのデータ値が他の投機的データ値に依存すれば(例えば、データ値が一つ又はそれ以上の投機的なオペランドを有するオペレーションの結果を生成する場合)、データ値は再計算することができる。
マイクロプロセッサ100における様々な機構はデータ推測を実行することができる。例えば、ディスパッチユニット104、メモリコントローラ160、及び/又は、1つ又はそれ以上のファンクショナルユニット126の各々が特定的なオペレーションに関するデータ推測を実行できる。1つのオペレーションの結果が他のオペレーション用の投機的なオペランドとして使用可能であることをディスパッチユニット104が検出することができる。例えば、読み出しオペレーションが先行の書き込みオペレーションによってデータキャッシュ128に記録されたデータにアクセスすることをディスパッチユニットが予測することができる。書き込みオペレーションのソースとして使用されたレジスタに記録されたデータ値を、ディスパッチユニット104が応答可能なように読み出しオペレーションの推測結果として識別することができる。データ推測のこの形式は依存予測として本文において称される。読み出しオペレーションの結果をオペランドとして特定するオペレーション用の推測オペランドソースとして書き込みオペレーションのソースをリンクすることによって、依存予測がディスパッチユニット104に拡張され得る。まだアドレスが未計算である書き込みに関してロード即ち読み出しをバイパスすることを可能にすることによって、即ち、より若い、つまりより最近の読み出しは比較的早期の書き込みには依存しない、と予測することによって、他のタイプの依存予測が読み出し/書き込みユニット126Cにおいて実行することができる。
マルチプロセッサシステムにおいて、メモリコントローラ160がキャッシュコヒーレンシーを維持するようにコヒーレンシー検査を実行可能である。他のマイクロプロセッサのキャッシュとのコヒーレンシー検査を終了する前に、メモリコントローラ160がシステムメモリ200からのキャッシュラインのコピーを投機的に戻し得る。検索するキャッシュラインの正しいコピーが他のプロセッサキャッシュに目下のところ記録されていることを後続的にコヒーレンシー検査が決定すれば、システムメモリ200から投機的に検索されたキャッシュラインのコピーは非有効化できる。従って、そのキャッシュラインにアクセスすることによって生成されたどの読み出しオペレーションもコヒーレンシー検査が終了するまで投機的である。この推測の形式は、本文でメモリ予測として称される。
ディスパッチユニット104は、オペレーションの結果を予測することによってデータ推測を実行することができる。例えば、ある種のオペレーションは同じ結果を生成し得る傾向があり、それ故、それらのオペレーションの各々が処理される毎に、ファンクショナルユニット126によるオペレーションの実際の実行が行われる前にディスパッチユニット104によって結果が投機的に生成され得る。このデータ推測の形式は、データ予測として本文に称される。データ予測はマイクロプロセッサの他の部分においても(例えば、読み出し/書き込みユニット126Cにおいて)実行可能であることに注目されたい。
読み出し/書き込みユニット126Cはアドレスを投機的に生成し得、この投機的アドレスに基づき、比較的早期に処理された読み出しのパターンに基づきアドレスがまだ未計算の読み出し命令の結果を投機的に生成し得る。例えば、前のNロードオペレーションが、連続したオフセットCによって相互に間隙をあけるアドレスA1〜AN(例、A1、A2=A1+C、...、AN=A(N+1)+C)をターゲットにしたとすれば、読み出し/書き込みユニット126Cは、読み出しオペレーションの結果として最新にアクセスされたアドレスAN+連続するオフセットCでデータを投機的に戻し得る。このデータ投機の形式は、本文においてアドレス予測として称される。アドレス予測の他の形式が多くの実施形態に使用可能であることに注目されたい。
データ推測が実行されたオペレーションの結果に依存するオペレーションも投機的な結果を生成し得る。例えば、アドレス予測が読み出しオペレーションの投機的な結果を生成するように使用されれば、オペランドとして読み出しの推測結果を用いて実行する全ての依存オペレーションは推測結果を生成することができ、これは次に他の依存オペレーションによってオペランドとして使用することが可能である。従って、読み出しオペレーションにおいて根本となる推測が誤っていると決定されれば、依存オペレーションの結果も誤っている可能性があり、それ故、この読み出しに依存するオペレーションの全体的な依存チェーンが正しい結果を生成するために再度実行されることが求められる。それに対し、根本となる推測が正しいと決定されれば、(これらの結果が他の投機的な値の何れにも基づかないと仮定して)依存オペレーションの結果は正しいことが分かる。
データ推測が実行される多くのオペレーションは、ファンクショナルユニットによってこれらのオペレーションが実行されるときにベリファイ、即ち検証することができる。例えば、あるオペレーション結果を投機的に生成するよう使用されたデータ予測はファンクショナルユニット126によって検証することができ、このファンクショナルユニット126は実際のオペレーションの結果と投機的な結果を比較することによってこのオペレーションを実行する。正しい結果が既に利用可能であるのでデータ推測が誤っていれば、そのようなオペレーションは再実行されることが求められる。他のオペレーションは、完全に実行されなくとも検証可能である。例えば、未計算のアドレスで読み出しが比較的早期の書き込みの結果を(例えば、依存予測又はアドレス予測に起因して)転送した場合、読み出しの推測結果は、読み出しアドレスが計算されるとき検証可能である。データ推測が誤っていれば、そのようなオペレーションは、正しい結果を生成するために(少なくとも一部)再実行されることが求められる。
データ推測が実行されたオペレーションと、それに従属するオペレーションを再実行することが求められるので、リタイアキュー102は根本となるデータ推測が解決された(resolved)オペレーションをリタイアするためのみに構成することができる。一つあるいはそれ以上のタイプのデータ推測を検証するように構成されたマイクロプロセッサ100内のさまざまなコンポーネントは、データ推測検証ユニット、又はデータ推測を検証する手段として本文において称される。
[実行中のオペレーションをリプレイする]
データ推測が誤っていることに起因して、スケジューラ118からの再発行を介してオペレーションをリプレイすることができる。スケジューラ118が既に発行しているオペレーションをリプレイするために、スケジューラ118のオペレーションの状態は、オペレーションを再発行する必要があることを示すように修正される。更新されたオペレーションの状態に応答して、スケジューラ118はオペレーションをファンクショナルユニット126へ再発行するよう構成可能である。オペレーションに対するソースデータが結果バス130にブロードキャストされて、そのオペレーションが既に発行されている場合、スケジューラはリプレイのためにオペレーションをマーキングするように構成可能である。誤ったデータ推測が検出されたオペレーションを実行あるいは再実行することに起因して、オペレーションのソースデータを再度ブロードキャストすることができる。一般的に、オペレーションにおいて誤ったデータがあり従ってオペレーションを再実行する必要があると検出するデータ推測検証ユニットによって、又は、オペレーションが別のオペレーションにおけるデータ推測が誤っていることに起因してリプレイが求められる依存チェーンの一部であることを検出するスケジューラによって、オペレーションをリプレイする必要性が検出されうる。オペレーションをリプレイする必要性を検出する、マイクロプロセッサ100内のコンポーネントは、リプレイ検出ユニット、もしくはリプレイする必要があるオペレーションを検出する手段として本文において称される。
いくつかのデータ推測オペレーションは、そのオペレーションのインスタンスがファンクショナルユニット126内で実行中(実行状態)である間にリプレイのために識別できる。オペレーションのインスタンスが実行中であるとは、スケジューラ118がファンクショナルユニット126へ発行したものであるが、ファンクショナルユニット126内での実行はまだ完了していないことをさす。オペレーションの実行中のインスタンスが実行を完了すると、それはスケジューラ118のオペレーションのリセット状態に影響を及ぼしてはならない。そのようにしない場合、実行中のオペレーションのインスタンスが完了することで、スケジューラのオペレーション状態を完了状態へと更新し、スケジューラがそのオペレーションを間違って再発行させてしまうからである。従って、リプレイが求められるものとして実行中のオペレーションが検出された場合、リプレイの必要性を検出するリプレイ検出ユニットは、オペレーションの動作中のインスタンスの、スケジューラ118内のオペレーションの状態を更新するという機能を禁止するように構成される。
一実施形態では、各リプレイ検出ユニットは、そのオペレーションが誤りであるというデータ推測の検出に応答して、オペレーションに関連付けられたスケジューラエントリに記録されるイシューカウント(issue count)を更新するように構成される。図2はスケジューラエントリ600を含むスケジューラ118の一実施形態である。スケジューラエントリ600はオペレーションのタグ、オペランド識別子、(及び/又は、ある実施形態ではオペランド)、及びオペコードのためのストレージ604を備えている。スケジューラエントリ600はオペレーションとイシューカウント602に関連する状態情報606のためのストレージも備えている。(例えば、そのオペレーションのオペランドのうちの1つが結果バス130に再ブロードキャストされている、又はそのオペレーションに対して実施されたデータ推測が誤りであることを示すデータ推測検証ユニットに起因して)オペレーションをリプレイする必要があるという識別子を受信すると、スケジューラ118はそのオペレーションに関連付けられたイシューカウントをインクリメントする。まずスケジューラ118がオペレーションへエントリを割り当てると、そのオペレーションに対するこのイシューカウントは最小値(例えば、0(ゼロ))に設定される。
スケジューラ118が実行のためにファンクショナルユニット126へオペレーションを発行すると、スケジューラはそのオペレーションに関連付けられたイシューカウントをファンクショナルユニット126へ与える。各ファンクショナルユニット126はオペレーションの結果をブロードキャストする際にこのイシューカウントをブロードキャストするように構成可能である。ファンクショナルユニット126はそのオペレーションのタグの一部としてイシューカウントを処理する。また、イシューカウントは特定のファンクショナルユニット内でのオペレーションの処理には何の影響も及ぼさない。しかし、スケジューラ118がオペレーションのブロードキャスト結果を見る場合(例えば、結果値、イシューカウント、及びオペレーションのタグ及び/又はその結果のオペランドが結果バス130にブロードキャストされる場合)、スケジューラ118はそのオペレーションのインスタンスに関連付けられたイシューカウントと、そのオペレーションのスケジューラエントリ600に現在記録されているイシューカウントとを比較するよう構成可能である。この2つのイシューカウント値が等しくない場合、スケジューラ118はスケジューラにおけるオペレーションの状態の更新を禁止する。従って、オペレーションの状態とイシューカウントが、オペレーションの発行後でかつオペレーションの実行が完了する前にスケジューラ118でアップデートされた場合は、ファンクショナルユニット126によるそのオペレーションが完了しても、スケジューラ内のオペレーションの状態が変更されることはない。ただし、ある実施形態においては、このスケジューラ118は、誤って推測されたオペレーションに対するイシューカウントに関しては、そのオペレーションが実行中であるかどうかに関わらず、更新を行う。他の実施形態では、すでに実行中のオペレーションへのそのような更新を制限するようにしてもよい。
ある実施形態では、スケジューラ118のあるオペレーションのイシューカウントが、そのオペレーションのインスタンス(instance)の結果とともにブロードキャストされたイシューカウントと一致しない場合、このスケジューラ118はそのオペレーションの結果に依存する全てのオペレーションの発行を禁止する。その理由は、イシューカウントが等しくない場合は、誤ったデータ推測に起因して、オペレーションの結果が間違っている可能性が高いことを示すからである。しかし、次に誤った推測オペレーションの結果をブロードキャストするときには、間違いの可能性があるデータ値を使って実行する全ての依存オペレーションもまた再発行される。その結果、他の実施形態では、スケジューラ118は、誤った推測オペレーションの結果を使って、依存オペレーションが実行できるようにする。これは、正確さが維持されているからである。
ある実施形態では、スケジューラでイシューカウントを使用する代わりに、(オペレーションキルフィーチャ(operation-kill feature)、即ちオペレーション停止フィーチャを使い、実行中のそのオペレーションのインスタンスが完了したことに応答して、リプレイとマーキングされたオペレーションの状態の更新を禁止する。図3に、リプレイが求められるものとして識別される実行中のオペレーションのインスタンスを実効的に“停止(kill)”するように構成されたファンクショナルユニット126のブロック図を例示する。このファンクショナルユニット126は、これらの実行中のインスタンスと関連する全ての変更された状態情報がスケジューラ118へブロードキャストするのを防ぐことによって、これらの実行中のオペレーションのインスタンスを停止する。ファンクショナルユニット126は、リプレイの必要がある発行されたオペレーションを識別するリプレイ検出ユニットから1つ又はそれ以上の信号を受信する。ファンクショナルユニット126に含まれるオペレーション停止ロジック700は、スケジューラ内のオペレーションの状態を更新する必要があると示唆している情報のブロードキャストをファンクショナルユニット126が防ぐように動作可能である。その結果、スケジューラはオペレーションが実行を完了したという指示を受取らないので、スケジューラ118はスケジューラ内のオペレーションの状態を更新しない。
オペレーションをリプレイする必要性の検出前に発行されたオペレーションのインスタンスの完了に起因してスケジューラ状態の変更を禁止するためにイシューカウントを使用している実施形態と同様に、オペレーション停止ロジック700を実装した実施形態は、実行中のインスタンスが完了したことに応答して依存オペレーションの発行を禁止するように構成可能である。しかし、この機能性はプロセッサの正確さに必要というわけでないので、他の実施形態では、実行中のインスタンスによって生成される結果を使用して、依存オペレーションの発行及び実行をできるようにする。誤って推測されたオペレーションが次に発行と実行を行うときは、全ての依存オペレーションはリプレイされる。
図4に誤った推測の検出前に既にファンクショナルユニット内で実行中であったオペレーションのインスタンスの完了に起因して、誤って推測されたオペレーションのスケジューラ状態への更新を禁止する方法の一実施形態を例示する。801において、実行中のオペレーションをリプレイする必要があるという指示を受信する。オペレーションをリプレイする必要性の検出に応答して、スケジューラ内のオペレーション状態は、オペレーションを再発行する必要があることを示すようにリセットされる(803)。さらに、推測が誤りであることが検出されたときに、実行中のオペレーションの実行中のインスタンスが完了することでのスケジューラ内のオペレーションの状態の更新が禁止される(805)。ファンクション805は、オペレーションの実行中のインスタンスを、現在実行中のそのオペレーションのファンクショナルユニット内で、実効的に停止させることにより、あるいは、図4Bに関して説明しているものなどのように、オペレーションのインスタンスを区別するために、スケジューラの機構(例えば、イシューカウント)を使用することによって、実装される。
図4Bに、誤った推測の検出前に既にファンクショナルユニットで実行中であったオペレーションのインスタンスの完了に起因して、オペレーションのスケジューラ状態への更新を禁止する方法の別の実施形態を例示する。図4Aのように、オペレーションをリプレイする必要性は801で検出され、オペレーションの状態は803Aにおいてスケジューラ内で応答可能なように更新される。さらに、イシューカウント、又はスケジューラ内のこれらのオペレーションのインスタンスを区別するための他の手段は、そのオペレーションにおけるデータ推測が誤っていたことが検出されたことに応答して変更される(803A)。オペレーションのインスタンスの実行を完了すると、その例に関連付けられたイシューカウントは、スケジューラのオペレーションに関連付けられたイシューカウントと比較される(805A)。この2つのイシューが一致すると、スケジューラ内のオペレーションの状態は、オペレーションの完了に応答して更新される(807)。例えば、オペレーションの状態は、オペレーションが実行を完了したことを示すように更新される。この2つのイシューが一致しない場合は、オペレーションの状態は更新されない(805B)。従って、誤ったデータ推測に基づいて実行を完了したオペレーションのインスタンスは、誤ったデータ推測なしに実行されるように、再発行の必要があるオペレーションの例と区別される。この区別によって、誤ったデータ値を使って実行したオペレーションのインスタンスの完了に応答して、禁止すべきオペレーション状態へと更新することができる。
[一般的なコンピュータシステム]
図5は、バスブリッジ902を介して様々なシステムコンポーネントに結合されたプロセッサ100を含むコンピュータシステム900の一実施形態のブロック図を示す。プロセッサ100は、上述したようにオペレーションをリプレイするように構成されたリプレイ検出ユニットとスケジューラを含み得る。コンピュータシステムの他の実施形態が、可能であり、また考えられる。図示されたシステムにおいて、メインメモリ200は、メモリバス906を介してバスブリッジ902に結合され、画像コントローラ908は、AGPバス910を介してバスブリッジ902に結合される。幾つかのPCIデバイス912A〜912Bは、PCIバス914を介してバスブリッジ902に結合される。第2バスブリッジ916も、EISA/ISAバス920を介してEISA又はISAデバイス918のうちの1つ又はそれ以上に電気的インターフェースを適用するように供給されることが可能である。この実施例では、プロセッサ100は、CPUバス924と任意のL2キャッシュ928を介してバスブリッジ902に結合される。ある種の実施形態では、プロセッサ100は統合されたL1キャッシュ(図示せず)を含むことが可能である。
バスブリッジ902は、プロセッサ100、メインメモリ200、画像コントローラ908、及びPCIバス914に接合されたデバイス間のインターフェースを与える。オペレーションがバスブリッジ902に接続されたデバイスの1つから受信されると、バスブリッジ902がこのオペレーションの目標(例えば、特定的なデバイス又はPCIバス914の場合、目標はPCIバス914上にあるデバイス)を識別する。バスブリッジ902がオペレーションを目標となるデバイスに伝送する。バスブリッジ902は通常、ソースデバイス又はバスによって使用されるプロトコル、あるいはターゲットデバイス又はバスによって使用されるプロトコルからのオペレーションを変換する。
PCIバス914のためにISA/EISAバスにインターフェースを供給することに加えて、第2バスブリッジ916は、更なる機能性を内蔵し得る。第2バスブリッジ916の外部の、あるいは第2バスブリッジに統合されている入力/出力コントローラ(図示せず)は、コンピュータシステム900内に含むことができ、キーボード及びマウス922と様々なシリアル及びパラレルポートに関するオペレーショナルサポートを提供する。他の実施形態では、外部のキャッシュユニット(図示せず)は、プロセッサ100とバスブリッジ902間のCPUバス924にも結合され得る。他の形態では、外部のキャッシュはバスブリッジ902に結合することができ、外部のキャッシュのキャッシュコントロールロジックは、バスブリッジ902に統合可能である。L2キャッシュ928はプロセッサ100の裏面の構成に示される。L2キャッシュ928は、プロセッサ100から分離し得、プロセッサ100でカートリッジ(例、スロット1又はスロットA)内に統合可能であり、あるいはプロセッサ100で半導体基板上にも統合可能である。
メインメモリ200はアプリケーションプログラムが記録され、プロセッサ100が主に実行するメモリである。適合可能なメインメモリ200は、DRAM(Dynamic Random Access Memory)を含み得る。例えば、複数のSDRAM(同期DRAM)あるいはRambus DRAM (RDRAM;Rambus 社開発のDRAM)が適合可能であり得る。
PCIデバイス912A〜912Bは、ネットワークインターフェースカード、ビデオアクセラレータ、オーディオカード、ハードあるいはフロッピイディスクドライブあるいはドライブコントローラ、SCSI(Small Computer System Interface)アダプタ及びテレフォニーカードのような多様な周辺デバイスを示す。同様に、ISAデバイス918はモデム、サウンドカード、及びGPIBあるいはフィールドバスインターフェースカードのような周辺デバイスの様々な形式を表す。
グラフィックスコントローラ908は、モニタ926上のテキスト及び画像のレンダリングをコントロールするよう提供される。グラフィックスコントローラ908は、メインメモリ200に、又はメインメモリ200から有効的にシフト可能である3次元データ構造を表現する技術分野で通常、知られる一般的なグラフィックスアクセラレータを実施可能である。それ故、グラフィックスコントローラ908は、バスブリッジ902内のターゲットインターフェースへのアクセスを要求可能であり、又受信可能であり、それによってメインメモリ200へのアクセスを入手するAGPバス910のマスターであり得る。専用のグラフィックスバスは、メインメモリ200からのデータの高速検索に対応する。ある種のオペレーションに関して、グラフィックスコントローラ908は、AGPバス910上にPCIプロトコルトランザクションを生成するよう更に構成可能である。それ故、バスブリッジ902のAGPインターフェースは、PCIプロトコルターゲットとイニシエータトランザクションと同様にAGPプロトコルトランザクションの双方を支援するよう機能性を含み得る。モニタ926は、画像あるいはテキストが表示可能である電気的モニタの全てである。適切なモニタ926は、ブラウン管(“CRT;Cathode Ray Tube”)、液晶モニタ(“LCD;Liquid Crystal Display”)を含む。
AGP、PCI及びISA又はEISAバスは、上述した記載の例として使用されており、所望に応じて全てのバスアーキテクチャが代替されることに注目される。コンピュータシステム900が追加のプロセッサ(例えば、コンピュータシステム900の任意のコンポーネントとして示されるプロセッサ100a)を含むマルチプロセッシングコンピュータシステムであることが更に注目される。プロセッサ100aは、プロセッサ100と同様であり得る。より具体的には、プロセッサ100aは、プロセッサ100の同一のコピーであり得る。プロセッサ100aは、独立したバスを介して(図5に示されるように)バスブリッジ902に接続されるか、あるいはプロセッサ100とCPUバス924を共有することができる。更に、プロセッサ100aは、L2キャッシュ928と同様の任意のL2キャッシュ928aに結合することができる。
図6を参照すると、上述したようにオペレーションをリプレイするように構成された、1つ又はそれ以上のリプレイ検出ユニットとスケジューラを備えたプロセッサ100を含むコンピュータシステム900の他の実施形態が示される。他の実施形態が可能であるし、考えられる。図6の実施形態においては、コンピュータシステム900は幾つかのプロセッシングノード1012A、1012B、1012C及び1012Dを含む。各プロセッシングノードは、各プロセッシングノード1012〜1012D内に含まれるメモリコントローラ1016A〜1016Dを介して各メモリ200A〜200Dに結合される。加えて、プロセッシングノード1012A〜1012Dは、プロセッシングノード1012A〜1012D間を通信するように使用されるインターフェースロジックを含む。例えば、プロセッシングノード1012Aは、プロセッシングノード1012Bと通信するためのインターフェースロジック1018A、プロセッシングノード1012Cと通信するためのインターフェースロジック1018B、及び更なる他のプロセッシングノード(図示せず)と通信するための第3インターフェースロジック1018Cを含む。同様に、プロセッシングノード1012Bは、インターフェースロジック1018D、1018E及び1018Fを含み、プロセッシングノード1012Cは、インターフェースロジック1018G、1018H、及び1018Iを含み、プロセッシングノード1012Dは、インターフェースロジック1018J、1018K、及び1018Lを含む。プロセッシングノード1012Dは、インターフェースロジック1018Lを介して複数の入力/出力デバイス(例、デイジーチェーン構成におけるデバイス1020A〜1020B)と通信するよう結合される。他のプロセッシングノードは、他のI/Oデバイスと通信し得る。他のプロセッシングノードは、同様の方法で他のI/Oデバイスと通信し得る。
プロセッシングノード1012A〜1012Dは、インタープロセッシングノード通信用にパケットベースのリンクを実装する。本実施形態において、リンクが単方向ライン(ユニディレクタルライン)のセット(例えば、ライン1024Aがプロセッシングノード1012Aからプロセッシングノード1012Bへパケットを伝送するように使用され、ライン1024Bは、プロセッシングノード1012Bからプロセッシングノード1012Aにパケットを伝送するように使用される)として実装される。その他のライン1024C−1024Hのセットは、図6に例示しているように、その他のプロセッシングノード間にパケットを伝送するように使用される。一般的に、ライン1024の各セットは、1つ又はそれ以上のデータラインを含み、このデータラインに応じた1あるいはそれ以上のクロックラインを含み、伝送されるパケット形式を示す1あるいはそれ以上のコントロールラインを含む。リンクは、プロセッシングノード間の通信用にキャッシュコヒーレントに、あるいはプロセッシングノードとI/Oデバイス(あるいはPCIバス又はISAバスのような従来の構造のI/Oバスへのバスブリッジ)間の通信用には非コヒーレントに動作させてもよい。更に、リンクは、図示されるようにI/Oデバイス間のデイジーチェーン構造を使用して非コヒーレントに動作され得る。1つのプロセッシングノードから別のプロセッシングノードに伝送されるパケットは、1つ又はそれ以上の中間ノードを通じて伝送し得る。例えば、プロセッシングノード1012Aによってプロセッシングノード1012Dまで伝送されたパケットは、図6に示すプロセッシングノード1012Bあるいはプロセッシングノード1012Cの何れかを介して伝送し得る。全ての適合可能なルーティングアルゴリズムが使用され得る。コンピュータシステム900の他の実施形態は、図6に示す実施形態より多いか、あるいは少ないプロセッシングノードを含み得る。
通常、パケットはノード間のライン1024に1つ又はそれ以上のビット時間として伝送され得る。ビット時間は、対応するクロックラインのクロック信号の立ち上がり又は立ち下がりであり得る。パケットはトランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシーを維持するためのプローブパケット、及びプローブとコマンドに応答するための応答パケットを含み得る。
メモリコントローラとインターフェースロジックに加えて、プロセッシングノード1012A〜1012Dは、1つ又はそれ以上のプロセッサを含み得る。大まかに言って、プロセッシングノードは少なくとも1プロセッサを含み、任意的に要求されるようにメモリと他の論理と通信するためのメモリコントローラを含み得る。より具体的には、各プロセッシングノード1012A〜1012Dは、1つ又はそれ以上のプロセッサ100のコピーを含み得る。外部のインターフェースユニットは、メモリコントローラ1016と同様にノード内にインターフェースロジック1018を含み得る。
メモリ200A〜200Dは、適合可能な全てのメモリデバイスを含み得る。例えば、メモリ200A〜200Dは、1つ又はそれ以上のRAMBUS DRAM(RDRAM)、同期DRAM(SDRAM),静的RAM等を含み得る。コンピュータシステム900のアドレススペースは、メモリ200A〜200D間に分割される。各プロセッシングノード1012A〜1012Dは、メモリマップを含み得、何れのアドレスが何れの200A〜200Dにマップされるかを決定し、従って、プロセッシングノード1012A〜1012Dの何れに特定的なアドレスのメモリ要求が送信されなければならないかのを決定するよう使用されるメモリマップを含み得る。一実施形態において、コンピュータシステム900におけるアドレスのコヒーレンシーポイントはこのアドレスに対応するバイトを記録するメモリに結合されたメモリコントローラ1016A〜1016Dである。言い換えれば、メモリコントローラ1016A〜1016Dは、対応するメモリ200A〜200Dへのアクセスがキャッシュコヒーレントにおいて生じることを確実にする役目を担う。メモリコントローラ1016A〜1016Dは、メモリ200A〜200Dへインターフェースするためのコントロール回路を含み得る。加えて、メモリコントローラ1016A〜1016Dは、メモリ要求をキューするための要求キューを含み得る。
インターフェースロジック1018A〜1018Lは、リンクからのパケットを受信し、リンク上に伝送されるパケットをバッファリングする様々なバッファを含み得る。コンピュータシステム900は、パケットを伝送する適合可能なフローコントロール機構の全てを使用し得る。例えば、一実施形態において、各インターフェースロジック1018は、インターフェースロジックが接続されるリンクの他の末端におけるレシーバ内のバッファの各形式の数のカウントを記録する。インターフェースロジックは、受信するインターフェースロジックがパケットを記録するための空いているバッファを有さない場合は、パケットを伝送しない。受信するバッファが伝送されるパケットを送信することによって解除されるので、受信するインターフェースロジックが、メッセージを送信インターフェースロジックに伝送し、バッファが解除されたことを示す。そのような機構は、“クーポンベースの”システムと称される。
I/Oデバイス1020A〜1020Bは、適合可能なI/Oデバイスであり得る。例えば、I/Oデバイス1020A〜1020Bが、これらのデバイスが結合され得る他のコンピュータシステム(例、ネットワークインターフェースカードあるいはモデム)と通信するデバイスを含み得る。更に、I/Oデバイス1020A〜1020Bは、ビデオアクセラレータ、オーディオカード、ハード又はフロッピーディスクドライブ又はドライブコントローラ、SCSI(Small Computer System Interface)アダプタ、及びテレフォニーカード、サウンドカード、及びGPIB又はフィールドバスインターフェースカードのような様々なデータ入手カードを含む。用語“I/Oデバイス”と“周辺デバイス”は、同義語として本文に意図される。
ここで使用されるように、“クロックサイクル”の用語は、命令プロセッシングパイプラインの様々なステージがタスクを完了する時間間隔を意味する。命令及び計算された値は、クロックサイクルを定義するクロック信号に従ってメモリ素子(レジスタあるいはアレイなど)によって取得される。例えば、メモリ素子は、クロック信号の立ち上がり又は立ち下がりエッジに従って値を取得することができる。
上述した明細書は信号を“表された(asserted)”ものとして説明するものである。情報の特定的な一部を示す値を伝送するとき、信号は“表された”ものとして定義され得る。特定的な信号では、バイナリ値が「1」の信号を伝送するとき、あるいはバイナリ値が「0」の値を伝送する場合に、「表された」として定義され得る。
これまでの開示を完全に理解したならば、当業者には様々な変形及び変更が可能であることが明白であろう。添付の特許請求の範囲はそのような変形及び変更の全てを包含するように解釈されることを意図したものである。
本発明は、概してマイクロプロセッサの技術分野に利用可能である。
一実施形態に従ったマイクロプロセッサを示す図。 一実施形態に従ったスケジューラを例示した図。 一実施形態に従ったファンクショナルユニットを例示した図。 一実施形態に従った、スケジューラにおいて誤って推測されたオペレーションの状態への更新を禁止する方法のフロー図。 他の実施形態に従った、スケジューラにおいて誤って推測されたオペレーションの状態への更新を禁止する方法のフロー図。 一実施形態に従った一般的なコンピュータシステムを示す図。 他の実施形態に従った別の一般的なコンピュータシステムを示す図。

Claims (10)

  1. マイクロプロセッサ(100)であって、
    各々がオペレーションを実行するように構成された1つ又はそれ以上のファンクショナルユニット(126)、
    前記1つ又はそれ以上のファンクショナルユニット(126)のうちの1つで実行されるように複数のオペレーションの各々を発行するよう構成されたスケジューラ(118)を含み、前記スケジューラ(118)は、前記複数のオペレーションの各々に対して状態情報(606)を維持するように構成されており、前記状態情報(606)は関連するオペレーションが実行を完了しているかどうかを示すものであり、かつ、
    前記複数のオペレーションのうちの1つのオペレーションをリプレイする必要があることを検出するように構成されたリプレイ検出ユニットを含み、
    前記複数のオペレーションのうち前記1つのオペレーションがリプレイされる必要があることを検出するために、前記リプレイ検出ユニットは、前記複数のオペレーションのうちの1つがリプレイすべき他のもう一つのオペレーションに依存しているかを判定することが可能であるように構成されており、前記リプレイ検出ユニットは、前記複数のオペレーションのうちの前記1つのオペレーションがリプレイを必要とするものとして検出されたときに、前記複数のオペレーションのうちの前記1つのオペレーションのインスタンスが、前記1つ又はそれ以上のファンクショナルユニット(126)のうちの1つによって現在実行中である場合、前記複数のオペレーションのうちの前記1つのオペレーションの前記インスタンスの実行に応答して、前記複数のオペレーションのうちの前記1つのオペレーションに対して、前記状態情報(606)への更新を禁止するよう構成されている、マイクロプロセッサ(100)。
  2. 前記リプレイ検出ユニットは、前記オペレーションの前記インスタンスを実行中の前記ファンクショナルユニット(126)のうちの前記1つが前記オペレーションの前記インスタンスの完了を前記スケジューラ(118)に信号通知しないことによって、前記オペレーションのうちの前記1つのオペレーションに対して、前記状態情報(606)への更新を禁止するように構成される、請求項1記載のマイクロプロセッサ(100)。
  3. 前記リプレイ検出ユニットは、前記スケジューラが前記オペレーションのうちの前記1つのオペレーションに関連付けられたイシューカウントを修正することによって、前記オペレーションのうちの前記1つのオペレーションに対して、前記状態情報(606)への変更を禁止するように構成され、
    前記イシューカウントは前記イシューされたオペレーションの数を示すものであり、
    前記スケジューラ(118)は、前記オペレーションの前記イシューカウント(602)が前記オペレーションの前記インスタンスのイシューカウント(602)と一致しない場合は、前記オペレーションの前記インスタンスが完了したことに応答して、前記状態情報(606)を更新しないように構成される、請求項1記載のマイクロプロセッサ(100)。
  4. 前記複数のオペレーションのうちの前記1つのオペレーションに対するデータ推測が誤っていることを検出するデータ推測検証ユニットに応答して、前記スケジューラ(118)は、前記複数のオペレーションのうちの前記1つのオペレーションと関連付けられた前記状態情報(606)を、前記関連するオペレーションを再発行する必要があることを示すように更新するものとして構成される、請求項1記載のマイクロプロセッサ(100)。
  5. コンピュータシステム(900)であって、
    メモリ(200)と、
    前記メモリ(200)に結合されたプロセッサ(100)と、を含み、前記プロセッサ(100)は、各々がオペレーションを実行するように構成された1つ又はそれ以上のファンクショナルユニット(126)と、前記1つ又はそれ以上のファンクショナルユニット(126)により実行されるよう複数のオペレーションの各々を発行するように構成されたスケジューラ(118)と、前記複数のオペレーションのうちの前記1つのオペレーションをリプレイする必要があることを検出するように構成されたリプレイ検出ユニットと、を備え、
    前記スケジューラ(118)は、前記複数のオペレーションの各々に対して状態情報(606)を維持するように構成され、前記状態情報(606)は、関連のオペレーションが実行を完了しているかどうかを示すものであり、
    前記複数のオペレーションのうち前記1つのオペレーションがリプレイされる必要があることを検出するために、前記リプレイ検出ユニットは、前記複数のオペレーションのうちの1つがリプレイすべき他のもう一つのオペレーションに依存しているかを判定することが可能であるように構成されており、前記リプレイ検出ユニットは、前記複数のオペレーションのうちの前記1つのオペレーションがリプレイを必要とするものとして検出されたときに、前記複数のオペレーションのうちの前記1つのオペレーションのインスタンスが、前記1つ又はそれ以上のファンクショナルユニット(126)のうちの1つによって現在実行中である場合、前記複数のオペレーションのうちの前記1つのオペレーションの前記インスタンスの実行に応答して、前記複数のオペレーションのうちの前記1つのオペレーションに対して、前記状態情報(606)への更新を禁止するよう構成される、コンピュータシステム(900)。
  6. 前記リプレイ検出ユニットは、前記オペレーションの前記インスタンスを実行中の前記ファンクショナルユニット(126)のうちの前記1つのファンクショナルユニット(126)が前記オペレーションの前記インスタンスが完了したことを前記スケジューラ(118)に信号通知しないことによって、前記オペレーションのうちの前記1つのオペレーションに対して前記状態情報(606)への更新を禁止するように構成される、請求項5記載のコンピュータシステム(900)。
  7. 前記リプレイ検出ユニットは、前記オペレーションのうちの前記1つのオペレーションに関連付けられたイシューカウント(602)を前記スケジューラ(118)が修正することによって、前記オペレーションのうちの前記1つのオペレーションに対する前記状態情報(606)への更新を禁止するように構成されており、
    前記イシューカウントは前記イシューされたオペレーションの数を示すものであり、
    前記スケジューラ(118)は、前記オペレーションの前記イシューカウント(602)が前記オペレーションの前記インスタンスのイシューカウント(602)と一致しない場合は、前記オペレーションの前記インスタンスが完了したことに応答して、前記状態情報(606)の更新を禁止するように構成されている、請求項5記載のコンピュータシステム(900)。
  8. スケジューラ(118)が、オペレーション実行するよう構成されたファンクショナルユニット(126)によって、実行のためにオペレーションのインスタンスを発行するステップを有し、前記スケジューラ(118)は、オペレーションの間状態情報(606)を維持し、前記状態情報(606)は、前記オペレーションが実行が完了しているかどうかを示すものであり、
    前記発行ステップに続いて、前記スケジューラ(118)が、リプレイ検出ユニットから、前記オペレーションをリプレイする必要があるという指示を受信するステップを有し、前記オペレーションがリプレイされる必要があることを検出するために、前記リプレイ検出ユニットは、前記オペレーションが、リプレイすべき他のもう一つのオペレーションに依存しているかを判定するものであり、
    前記受信ステップに続いて、前記スケジューラ(118)が、前記オペレーションがリプレイする必要があるとして検出されたときに前記オペレーションがの前記インスタンスが前記ファンクショナルユニット(126)によって現在実行中である場合に、前記オペレーションの前記インスタンスの実行に応答して、前記スケジューラ(118)のオペレーションの状態情報(606)への更新を禁止するステップを有する、方法。
  9. 前記禁止ステップは、前記オペレーションの前記インスタンスを実行中のファンクショナルユニット(126)が、前記スケジューラ(118)へ前記オペレーションの前記インスタンスが完了したことを信号通知しないことを含む、請求項8記載の方法。
  10. 前記禁止ステップは、
    前記スケジューラ(118)が、前記オペレーションはリプレイされる必要があるという指示の受信に応答して、前記オペレーションに関連付けられたイシューカウント(602)を修正するステップを有し、前記イシューカウントは前記イシューされたオペレーションの数を示すものであり、
    前記スケジューラ(118)が、前記オペレーションの前記イシューカウント(602)が前記オペレーションの前記インスタンスのイシューカウントと一致しない場合は、前記オペレーションの前記インスタンスが完了したことに応答して、前記オペレーションに関連付けられた前記状態情報(606)を更新しないステップを有する、請求項8記載の方法。
JP2006508586A 2003-05-02 2004-01-09 データ推測マイクロプロセッサにおいて実行中のオペレーションのインスタンスがオペレーションのリプレイの割込みを防ぐためのシステム及び方法 Expired - Lifetime JP4624988B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/429,082 US7363470B2 (en) 2003-05-02 2003-05-02 System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
PCT/US2004/000482 WO2004099977A2 (en) 2003-05-02 2004-01-09 System and method for operation replay within a data-speculative microprocessor

Publications (2)

Publication Number Publication Date
JP2006525594A JP2006525594A (ja) 2006-11-09
JP4624988B2 true JP4624988B2 (ja) 2011-02-02

Family

ID=33310540

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006508586A Expired - Lifetime JP4624988B2 (ja) 2003-05-02 2004-01-09 データ推測マイクロプロセッサにおいて実行中のオペレーションのインスタンスがオペレーションのリプレイの割込みを防ぐためのシステム及び方法

Country Status (8)

Country Link
US (1) US7363470B2 (ja)
JP (1) JP4624988B2 (ja)
KR (1) KR101056820B1 (ja)
CN (1) CN100432924C (ja)
DE (1) DE112004000736T5 (ja)
GB (1) GB2417113B (ja)
TW (1) TWI338249B (ja)
WO (1) WO2004099977A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266673B2 (en) * 2003-05-02 2007-09-04 Advanced Micro Devices, Inc. Speculation pointers to identify data-speculative operations in microprocessor
US7363470B2 (en) * 2003-05-02 2008-04-22 Advanced Micro Devices, Inc. System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
DE102008042356A1 (de) 2008-09-25 2010-04-08 Carl Zeiss Smt Ag Projektionsbelichtungsanlage mit optimierter Justagemöglichkeit
US10152329B2 (en) * 2012-02-09 2018-12-11 Nvidia Corporation Pre-scheduled replays of divergent operations
US9384002B2 (en) * 2012-11-16 2016-07-05 International Business Machines Corporation Speculative finish of instruction execution in a processor core
US10061589B2 (en) 2014-12-24 2018-08-28 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
US9785442B2 (en) 2014-12-24 2017-10-10 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
US20160357556A1 (en) * 2014-12-24 2016-12-08 Elmoustapha Ould-Ahmed-Vall 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
US10387158B2 (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
CN108279928B (zh) * 2018-01-30 2021-03-19 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置
CN108415730B (zh) * 2018-01-30 2021-06-01 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置
JP2023539955A (ja) * 2020-08-28 2023-09-20 ディープ ヴィジョン インコーポレイテッド スケジューリングされた並列プロセスの実行中にデータ転送帯域幅を増加させるためのプロセッサシステムおよび方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735688B1 (en) * 1996-11-13 2004-05-11 Intel Corporation Processor having replay architecture with fast and slow replay paths
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
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
JPH11259295A (ja) * 1998-03-10 1999-09-24 Toshiba Corp プロセッサの命令スケジューリング装置
US6094717A (en) * 1998-07-31 2000-07-25 Intel Corp. Computer processor with a replay system having a plurality of checkers
US6877086B1 (en) 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
US6981129B1 (en) * 2000-11-02 2005-12-27 Intel Corporation Breaking replay dependency loops in a processor using a rescheduled replay queue
US6725338B2 (en) * 2000-11-21 2004-04-20 Sun Microsystems, Inc. Method and apparatus for preventing cache pollution in microprocessors with speculative address loads
US6880073B2 (en) * 2000-12-28 2005-04-12 International Business Machines Corporation Speculative execution of instructions and processes before completion of preceding barrier operations
WO2004001527A2 (en) * 2001-06-26 2003-12-31 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
JP4050225B2 (ja) * 2001-06-26 2008-02-20 サン・マイクロシステムズ・インコーポレイテッド マルチプロセッサシステムにおける推測的な格納を容易にする方法および装置
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US6952764B2 (en) * 2001-12-31 2005-10-04 Intel Corporation Stopping replay tornadoes
US20040078558A1 (en) * 2002-03-25 2004-04-22 Sprangle Eric A. Method and apparatus to process instructions in a processor
US7363470B2 (en) 2003-05-02 2008-04-22 Advanced Micro Devices, Inc. System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor

Also Published As

Publication number Publication date
GB0521712D0 (en) 2005-11-30
US20040221139A1 (en) 2004-11-04
WO2004099977A3 (en) 2005-09-22
TWI338249B (en) 2011-03-01
KR20060009888A (ko) 2006-02-01
KR101056820B1 (ko) 2011-08-16
CN1784655A (zh) 2006-06-07
WO2004099977A2 (en) 2004-11-18
DE112004000736T5 (de) 2006-05-18
GB2417113B (en) 2006-10-04
TW200506715A (en) 2005-02-16
CN100432924C (zh) 2008-11-12
JP2006525594A (ja) 2006-11-09
GB2417113A (en) 2006-02-15
US7363470B2 (en) 2008-04-22

Similar Documents

Publication Publication Date Title
JP5294632B2 (ja) 読出しが以前の書込みに依存しているかどうかを予測する依存性メカニズムを備えたプロセッサ
JP4105684B2 (ja) ロード操作の推測結果をレジスタ値にリンクするためのシステムおよび方法
JP4170292B2 (ja) データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ
JP4538462B2 (ja) 二重用途レジスタを識別しているアドレス指定パターンに基づいたデータ投機
US7263600B2 (en) System and method for validating a memory file that links speculative results of load operations to register values
US7133969B2 (en) System and method for handling exceptional instructions in a trace cache based processor
JP3866261B2 (ja) ロード/ストア操作をバイパスするために投機的ソースオペランドを使用するシステムおよび方法
JP5091481B2 (ja) リプレイ機構を備えた読み出し/書き込みユニット
JP4624988B2 (ja) データ推測マイクロプロセッサにおいて実行中のオペレーションのインスタンスがオペレーションのリプレイの割込みを防ぐためのシステム及び方法
JP4745960B2 (ja) マイクロプロセッサにおいてデータ推測オペレーションを識別する推測ポインタ
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
KR20070019750A (ko) 로드 동작의 투기적인 결과들을 레지스터 값들에 연결하는메모리 파일을 유효화하기 위한 시스템 및 그 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070104

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100405

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100412

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100506

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100531

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100714

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4624988

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131112

Year of fee payment: 3

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