JP5294632B2 - 読出しが以前の書込みに依存しているかどうかを予測する依存性メカニズムを備えたプロセッサ - Google Patents
読出しが以前の書込みに依存しているかどうかを予測する依存性メカニズムを備えたプロセッサ Download PDFInfo
- Publication number
- JP5294632B2 JP5294632B2 JP2007531161A JP2007531161A JP5294632B2 JP 5294632 B2 JP5294632 B2 JP 5294632B2 JP 2007531161 A JP2007531161 A JP 2007531161A JP 2007531161 A JP2007531161 A JP 2007531161A JP 5294632 B2 JP5294632 B2 JP 5294632B2
- Authority
- JP
- Japan
- Prior art keywords
- read
- read operation
- given
- operations
- global
- 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
Links
- 230000007246 mechanism Effects 0.000 title description 8
- 230000015654 memory Effects 0.000 claims abstract description 113
- 230000004044 response Effects 0.000 claims abstract description 21
- 238000001514 detection method Methods 0.000 claims abstract description 3
- 230000001419 dependent effect Effects 0.000 claims description 68
- 230000006399 behavior Effects 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 description 37
- 238000012795 verification Methods 0.000 description 33
- 239000000872 buffer Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 238000006073 displacement reaction Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 4
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Investigating Or Analysing Biological Materials (AREA)
Description
しかし、命令間におけるデータと制御のフロー依存性により、所定の時間に発行可能な命令の数が制限されてしまう。
この結果、一部のプロセッサでは、更なるパフォーマンスゲイン(性能向上)を図るために投機的実行をサポートしている。
コントロールフロー投機は、プログラム制御が進行する方向を予測する。例えば、分岐が発生するかどうかを予測するために分岐予測が用いられる。様々なタイプの分岐予測が利用可能であり、単純に毎回同じ予測を行う方法から、履歴に基づいた予測を行うために、プログラム中の過去の分岐の詳細な履歴を維持する方法まである。
分岐予測機構によって提供される予測に基づいて、命令は投機的にフェッチされ、実行され得る。
分岐命令が最終的に評価されるときに、分岐予測を検証することができる。予測が誤っていれば、誤った予測に基づいて投機的に実行された全ての命令は破棄され得る。
コントロール投機と同様に、投機的に値を生成するために使用された根本的な条件を最終的に評価し、投機を検証済みとするか、あるいは投機を実行しないようにする。
従って、誤った投機に起因するパフォーマンスペナルティを減らすことが望ましい。
一実施形態では、プロセッサはオペレーションを発行するように構成されたスケジューラと、スケジューラによって発行されたメモリオペレーションを受信するように結合され、メモリオペレーションを実行するように構成された読出し/書き込みユニットを含み得る。
読出し/書き込みユニットはさらに、所与の読出しオペレーションがそれ以前の書込みオペレーションに依存しているかどうかを予測し、その所与の読出しオペレーションがそれ以前の書込みオペレーションから独立しているという予測に応答してそれ以前の書込みオペレーションのアドレスが計算される前に所与の読出しオペレーションを実行し、所与の読出しオペレーションがそれ以前の書込みオペレーションから独立しているという予測の後に、所与の読出しオペレーションが予測ミスしたかどうかを検出し、かつ、所与の読出しオペレーションが予測ミスしたことの検出を受けて、スケジューラに読出しオペレーションを再発行しなければならないことを示すリプレイ指示を与えるよう構成できる。
複数のローカルプレディクタエントリの各々は、依存予測値を含んでもよく、読出し/書き込みユニットはさらに、所与の読出しオペレーションに対応する所与のローカルプレディクタにアクセスし、所与のローカルプレディクタエントリに含まれる所与の依存予測値を評価することによって、所与の読出しオペレーションがそれ以前の読出しオペレーションに依存しているかどうかを予測するように構成することができる。
このグローバルヒストリレジスタは、実行された複数の読出しオペレーションに対応する複数の各々の依存値を記録するように構成されてもよい。
複数のグローバルプレディクタエントリの各々は、依存予測値を含むことができる。
読出し/書き込みユニットはさらに、グローバルヒストリレジスタに対応する所与のグローバルプレディクタエントリにアクセスし、この所与のグローバルプレディクタエントリに含まれる所与の依存予測値を評価することで、所与のロードオペレーションがそれ以前の書込みオペレーションに依存しているかどうかを予測するように構成されてもよい。
読出し/書き込みユニットはさらに、所与の読出しオペレーションが動的な読出しオペレーションであるかどうかを判定することでそれ以前の書込みオペレーションに依存しているかどうかを予測するように構成されてもよい。
所与の読出しオペレーションが動的な読出しオペレーションではないという判定を受けて、読出し/書き込みユニットは、所与の読出しオペレーションに対応する所与のローカルプレディクタにアクセスし、この所与のローカルプレディクタエントリに含まれるローカル依存予測値を評価することができる。
所与の読出しオペレーションが動的な読出しオペレーションであるという判定にを受けて、読出し/書き込みユニットは、グローバルヒストリレジスタに対応する所与のグローバルプレディクタエントリにアクセスし、この所与のグローバルプレディクタエントリに含まれるグローバル依存予測値を評価することができる。
本明細書中に使用されている見出しは、分類のみを意図しており、本明細書または特許請求の範囲を限定するものではない。
さらに、本願にわたり「し得る、してもよい(may)」との用語は許容の意味(すなわち、可能性があること、できること)に用いられ、義務的な意味[すなわち必須(must)]の意味には用いられていない点に留意されたい。「含む、備える」との用語ならびにその派生語は、「含むがこれに限定されない」ことを意味する。
「接続されている」との用語は、「直接的または間接的に接続されている」ことを意味し、「結合されている」との用語は、「直接的または間接的に結合されている」ことを意味する。
システムメモリ200はコンピュータシステム全体に物理的に配置可能であり、1つ以上のプロセッサ100からアクセスできる点に留意されたい。
実行コア124によって生成された結果は、結果バス130に出力され得る。これらの結果は、続いて発行される命令のためのオペランド値として使用可能であり、および/または、レジスタファイル116に記録される。リタイアキュー102は、スケジューラ118およびディスパッチユニット104に結合することができる。このリタイアキュー102は、発行されたオペレーションのそれぞれがいつリタイア可能であるかを決定するように構成することができる。一実施形態では、プロセッサ100は、x86アーキテクチャと互換性を持つように設計されてもよい。プロセッサ100はその他多くの要素を含み得る点に留意されたい。例えば、プロセッサ100は、分岐予測ユニット(図示せず)を含むことができる。
リタイアキュー102は、オペレーションが実行を完了したことに応答してオペレーションを停止し、プログラムオーダーでそのオペレーションを含むオペレーションまでのいずれのオペレーションに対して実行されたいずれのデータおよび制御スペキュレーションが照合すなわちベリファイされる。リタイアキュー102は、物理レジスタで値を生成したオペレーションが停止した場合に、プロセッサ100のアーキテクチャ状態に対する物理レジスタの投機的状態のコミットメントを行う。ある実施形態においては、リタイアキュー102はリオーダバッファの一部として実装されてもよい。
そのようなリオーダバッファは、レジスタのリネーミングをサポートするために、投機レジスタ状態のデータ値記録部を提供してもよい。他の形態では、リタイアキュー102は、データ値記録部を提供しなくてもよい点に留意されたい。これに代えて、オペレーションが停止すると、リタイアキュー102は、投機レジスタ状態を記録する必要がなくなったレジスタファイル116内のレジスタの割当てを解除し、現在空いているレジスタを示す信号をレジスタマップ134に送る。
レジスタファイル116内(他の実施形態では、リオーダバッファ内)の投機レジスタ状態を、それらの状態を生成したオペレーションが有効になるまで維持することによって、分岐予測が間違っていた場合に、予測ミスされたパスに従って投機的に実行されたオペレーションの結果をレジスタファイル116内で無効とすることができる。
このため、ある特定のプログラムを実行している間の任意の時点で、レジスタファイル116(または別の実施形態ではリオーダバッファ)は、投機的に実行された所与の論理レジスタの内容を含むレジスタを1つ以上有し得る。
このオペランドがメモリ位置に対応している場合、このオペランド値は、読出し/書込みユニット126Cを介して結果バスに供給される(結果転送および/またはレジスタファイル11118への記録のため)。このオペレーションがスケジューラ118のうちの1つによって発行されると、オペランドデータ値が実行コア124に供給される。別の実施形態では、オペレーションが発送されると、オペランド値が対応するスケジューラ118に供給されてもよい点に留意されたい(オペレーションが発行されたときに、対応する実行コア124に供給する代わりに)。
各スケジューラ118は、実行コア124への発行を待ついくつかのペンディングオペレーションに関するオペレーション情報(例えば、オペランド値、オペランドタグおよび/または即値データの他に、ビット符号化された実行ビット)を保持することができる。ある実施形態においては、各スケジューラ118は、オペランド値を記録することはできない。その代わりに、オペランド値がファンクショナルユニットによって(例えば、レジスタファイルあるいは結果バスから)読出し可能となる時点を判定するために、各スケジューラは、レジスタファイル116において利用可能な発行済みオペレーションおよび結果を監視することができる。
ある実施形態では、各スケジューラ118は、専用のファンクショナルユニットに関連付けられてもよい。別の実施形態では、1つのスケジューラ118が、1つ以上のファンクショナルユニット126にオペレーションを発行してもよい。
このため、オペレーションの実行順序は、元のプログラム命令のシーケンスの順序と一致しないことがある。データ投機を伴うオペレーションを非投機的になるまでスケジューラ118にとどめ、データ投機が誤っていれば再発行することができる。
図1に例示しているように、読出し/書込みユニット126Cは、スケジューラ118に再発行される1つ以上のオペレーションを識別するリプレイ指示を供給することができる。例えば、一実施形態では、そのようなリプレイ指示は、リプレイされる各オペレーションのタグを含むことができる。別の実施形態では、そのようなリプレイ指示は、特定のビットが対応のリプレイされるオペレーションを識別できるよう、対応するビットをスケジューラ118内の各読出し/書込みオペレーションに含むことができる。スケジューラ118はリプレイ指示によって識別されたオペレーションを応答可能なように再発行し得る。
一実施形態では、126Cのようなファンクショナルユニットは、ペンディング中の読出しおよび/または書込みに関するデータ及びアドレス情報のためのいくつかのストレージロケーションを備えた読出し/書込みバッファで構成されてもよい。本文中では、ファンクショナルユニット126Cは読出し/書込みユニットとも称され得る。
依存予測
本文に記載しているように、データ値の誤りが見つけられ、結果として再計算される可能性があれば、データ値は投機的であるとする。投機的なデータ値とは正しいか誤っているかを確定的に識別できないものである。データ値が、いくつかのデータ投機が実行されたことに対するオペレーションの結果である場合、あるいはデータ値が他の投機的データ値に依存する場合(例えば、このデータ値が、1つ以上の投機的なオペランドを有するオペレーションの結果として生成される場合)、このデータ値を再計算してもよい。非投機的な値とは、いずれのデータ投機にも依存しない値である(しかし、そのような値はなおもコントロール投機に影響され得る)。
依存予測の別の例では、1つのオペレーションの結果を他のオペレーション用の投機的なオペランドとして使用可能であることをディスパッチユニット104が検出することができる。例えば、読出しオペレーションが先行の書込みオペレーションによってデータキャッシュ128に記録されたデータにアクセスすることをディスパッチユニット104が予測することができる。ディスパッチユニット104は、書き込みオペレーションのソースとして使用されたレジスタに記録されたデータ値を、読み出しオペレーションの投機結果として応答可能に識別できる。
読出しオペレーションの結果をオペランドとして特定するオペレーション用の投機的オペランドソースとして書込みオペレーションのソースをリンクすることによって、依存予測をディスパッチユニット104に拡張してもよい。
データ投機が実行されたオペレーションとそれに依存するオペレーションとを再実行する必要があることから、リタイアキュー102は、基礎となるデータ投機が解決されたオペレーションをリタイアするためだけに構成することができる。
上述したように、データの投機的実行をサポートするプロセッサでは、読出し/書込みユニット126Cは、読出しオペレーションが以前の書込みオペレーションに依存しているかどうかを予測するために構成することができる。また、この読出し/書込みユニット126Cは、独立していると予測された読出しオペレーションが書込みオペレーションに対して自由にスケジュールすることを可能にする。
さらに、読出し/書込みユニット126Cは、検証メカニズムを備えることができる。この検証メカニズムは 誤った依存予測を検出し、誤って予測したオペレーションをリプレイしなければならないことをスケジューラに知らせ、その後、スケジューラが読出し/書込みユニット126Cにこれらのオペレーションを再発行させる。
本文中で用いられているように、その他のオペレーションより古いもしくは新しい読出しオペレーションまたは書込みオペレーションについての言及は、比較されるオペレーションのプログラム順序に関連する点に留意されたい。つまり、プログラム順序で第2オペレーションよりも早くに現れる第1オペレーションは第2オペレーションよりも古いオペレーションと呼ばれ、第2オペレーションは第1オペレーションよりも新しいオペレーションと呼ばれ得る。
以下に詳述しているように、依存検証ロジック305は、依存予測ロジック303にてって実行されたデータ投機を検証するように構成してもよい。
ある実施形態では、各エントリのデータフィールド319は、投機的データおよび非投機的データ双方のためのストレージを含み得る。同様に、ある実施形態では、アドレスフィールド317はある1つのオペレーションのアドレスの複数の値(例えば、アドレス予測によって生成された投機的なアドレスとオペレーションの実行により生成された新しいアドレス値)のためのストレージを含むことができる。
ある実施形態では、エントリは、データ投機としてオペレーションおよび/あるいはオペランドを識別するよう追加のフィールドを含むことができる。例えば、フラグ321は、ある特定の読出しオペレーションが以前の書込みから独立していると予測されることを示し得る。さらに、以下に詳述しているように、フラグ321は、ある特定のオペレーションが動的に予測可能であるかどうかを示し得る。
エントリ310は、オペレーションを読出し/書込みユニット126Cに発行するスケジューラ118に応じて割り当てられ、このオペレーションの実行を完了する読出し/書込みユニット126Cに応じて割り当て解除される。
任意の以前の書込みのアドレスが、独立していると予測された読出しオペレーションのアドレスと一致すれば、依存検証ロジック305は、その読出しオペレーションが予測ミスされたことを示し得る。ある実施形態では、依存検証ロジック305は、独立していると予測された読出しオペレーションだけを監視し検証するように構成されてもよい(例えば、そのような予測を示すフラグ値321を有するオペレーションストレージ307に記録された読出しオペレーション)。他の実施形態では、依存していると予測された読出しオペレーションが実際にはそれ以前の書込みオペレーションから独立しているかどうかを検出するように依存検証ロジック305を構成してもよい。
あるオペレーションは、そのオペレーションを識別するリプレイ信号をスケジューラ118に送ることによってリプレイされ得る。スケジューラ118は、そのような信号に応答して、リプレイに関するオペレーションのマーキングを行うことができる(例えば、そのオペレーションがリプレイされなければならないことを示すようにそのオペレーションに関連付けられたステート情報を変更することによって)。一実施形態では、依存検証ロジック305は、オペレーションをリプレイしなければならないことを示すフラグとともにオペレーションのタグをスケジューラ118に提供することでオペレーションをリプレイさせることができる。
依存していると予測された読出しオペレーションの予測ミスを検出する実施形態では、依存検証ロジック305は、予測ミスした読出しオペレーションをリプレイせずに依存予測回路303の更新だけを行ってよい。その理由は、読出しオペレーションの依存性を誤って予測することで、計算を間違えるのではなく、単にパフォーマンスが低下するに過ぎないからである。
さらに、以下にさらに詳述するように、依存予測ロジック303が予測履歴を提供するように構成されたカウンタを備えている実施形態において、依存検証ロジック305は、予測が正確な場合だけでなく予測ミスした場合にも依存予測ロジック303を更新するように構成してもよい。
誤って投機された読出しオペレーションの正確な結果がすでに利用可能である場合、ある実施形態では、依存検証ロジック305は、読出し/書き込みユニット126Cに、誤って投機された読出しオペレーションの正確な結果をプロセッサの他の要素に送信させることができ、それにより、正確な値を使用してプロセッサの他の部分中の依存オペレーションを再実行できる。そのような実施形態では、データ投機検証ロジック305は、誤って投機されたそのような読出しオペレーションをリプレイさせない。
読出し/書込みユニット126Cは、たとえこのオペレーションをリプレイされたとしても、未処理のオペレーションの実行を完了可能であることに留意されたい。
カウンタ338は、カウンタの最大値と最小値において飽和するように構成されたマルチビットカウンタを含むことができる。
その他の実施形態では、インデックスタグ336は、プログラムカウンタ値以外の、対応する読出しオペレーションを識別する値、例えば、目的タグ値あるいはロードアドレス値、を含んでもよい。インデックスタグ336は、対応するローカルプレディクタエントリ335が有効である(つまり、所与の読出しオペレーションに割り当てられている)という表示を含むことができる。
有効なプレディクタエントリが存在する場合、それに対応する依存予測値337(カウンタ値338が存在する場合は、カウンタ値338も同様に)が読み出され、オペレーションストレージ307の読出しオペレーションに対応するエントリ310内に記録され得る。有効なプレディクタエントリが存在せずに、利用可能なフリーローカルプレディクタエントリ335がある場合、このフリーエントリは読出しオペレーションと、このフリーエントリのインデックスタグ336に記録された読出しの識別情報とに割り当てられる。さらに、デフォルト予測値がこのフリーエントリの依存予測値337に記録されてもよい。
例えば、読出しオペレーションは、デフォルト設定では以前の書込みから独立していると予測され得る。よって、この場合、独立していると予測されたことを示す予測値を記録できる。
上述したように、依存検証ロジック305は、所与の読出しオペレーションの依存予測が誤りであることを検出することができる。この場合、依存検証ロジック305は、予測ミスした読出しオペレーションに対応するローカルプレディクタエントリ335を更新させることができる。
例えば、上述の方法に類似した方法で、依存検証ロジック305はまず、読出しオペレーションの識別情報を提供することによって、対応するローカルプレディクタエントリ335をローカルプレディクタ330内にアクセスさせることができる。適切なローカルプレディクタエントリ335が選択されると、依存検証ロジック305は、予測ミスを反映するよう対応の依存予測値337を更新させることができる。
そのような実施形態では、カウンタ338は、依存予測に対して履歴を提供することができ、これにより、1つの正確な予測あるいは誤った予測に応じて依存予測を急峻に変化させないようにする。そのような実施形態では、カウンタ338は依存予測の強さを示してもよい(例えば、カウンタ値がより大きければ、より強い予測を、カウンタ値がより小さければ、より弱い予測を示し得る)。
しかし、別の実施形態では、ローカルプレディクタ330は依存していると予測された読出しオペレーションに対してだけにエントリの割り当てを行うように構成されてもよい。そのような実施形態では、所与の読出しオペレーションが読出し/書き込みユニット126Cに発行されたときに、この所与の読出しオペレーションの識別情報がローカルプレディクタ330の任意のエントリと一致しなければ、この読出しオペレーションはデフォルト設定によって独立していると予測されてよい。続いて、依存検証ロジック305が、そのようなデフォルト設定の予測が誤りであることを検出すれば、依存検証ロジック305は正確な予測を伴ってローカルプレディクタ330にエントリを割り当てさせる。
同様に、ある実施形態では、依存検証ロジック305が、依存していると予測された読出しオペレーションが実際にはそれ以前の書込みオペレーションから独立していることを検出すれば、依存検証ロジック305は予測ミスした読出しオペレーションに対応するローカルプレディクタエントリ335の割り当て解除を行うように構成されてもよい。ローカルプレディクタ330が、依存していると予測されたロードオペレーションに対してだけにエントリを割り当てるように構成された実施形態では、依存予測値337は各ローカルプレディクタエントリ335から省いてもよい。
しかし、場合によっては、ある所与の読出しオペレーションの依存動作は、その他の読出しオペレーションの動作によって変化する可能性がある(つまり、所与の読出しオペレーションの依存動作は動的である)。
例えば、所与の読出しオペレーションが発行されるが、この所与の読出しオペレーションは、発行された読出しオペレーションのうち一回おきのもののみを以前の書込みオペレーションに依存するようにしてもよく、これは、個々の読出しオペレーションの動作によって決定される。そのような場合、ある所与の読出しオペレーションの動作を予測するときにいくつかの読出しオペレーションの動作を考慮するグローバルプレディクタは、より正確な予測を行うことができる。
一実施形態では、依存動作は実行された各々の読出しオペレーションの実際の依存動作に対応し得る。つまり、実行された各々の読出しオペレーションが、実際にはそれ以前の書込みオペレーションから独立していたか、それ以前の書込みオペレーションに依存していたか、である。
別の実施形態では、依存動作は、実行された各々の読出しオペレーションの、予測した依存動作に対応し得る。この予測した依存動作は実際の依存動作よりも早く利用できる。グローバルヒストリレジスタ342に記録されたビット数と、そのグローバルヒストリレジスタ342に示される実行された読出しオペレーション数とは、各種実施形態で変化してよい。一実施形態では、グローバルヒストリレジスタ342は、プログラム可能幅シフトレジスタ(programmable-width shift register)として実装することができる。
別の実施形態では、グローバルヒストリレジスタ342は、右シフトレジスタとして実装することができる。この形態において、新たに実行された読出しオペレーションの依存動作を最上位ビット位置にシフトし、最小位ビットを破棄する。ある実施形態では、グローバルヒストリレジスタ342は、同時に実行している複数の読出しオペレーションに適応するよう、一度に1以上のビット位置をシフトしてもよい。
グローバルプレディクタカウンタ348は、所与の読出しオペレーションに対して、対応するグローバル依存予測値347の強度を示す値を記録するように構成することもできる。
ある実施形態では、グローバルプレディクタカウンタ348は、ローカルプレディクタ330に関して上述した方法と類似した方法で、誤った予測あるいは正確な予測が検出されたときに依存検証ロジック305によって更新され得る。
ある実施形態では、グローバルプレディクタエントリ345は、信頼性即ちバリディティ情報を含むことができる。その理由は、グローバルプレディクタ340内の割当て解除されたエントリにアクセスする読出しオペレーションがデフォルト予測を受信できるようにするためである。
一実施形態では、コンビネーションロジック346は、グローバルヒストリレジスタ342の値を、論理的排他的OR(XOR)機能を使用した所与の読出し命令のプログラムカウンタ値からなる選択されたビット(最下位ビットなど)と組合せて、特定のグローバルプレディクタエントリ345を選択するために使用され得るインデックス値を生成するように構成することができる。
別の実施形態では、インデックス値は、グローバルヒストリレジスタ342の全ての値あるいは一部の値を、所与の読出し命令のプログラムカウンタ値からなる選択されたビットと連結することで生成することができる。
しかし、実施形態によっては、環境が違えば、ローカルプレディクタ330はグローバルプレディクタ340よりも優れた予測正確性を示す可能性があり、また、グローバルプレディクタ340はローカルプレディクタ330よりも優れた予測正確性を示す可能性がある。
このため、ある実施形態では、ローカルタイプとグローバルタイプ両方のプレディクタを使用したハイブリッドプレディクタを使用してもよい。
他の実施形態では、ある読出しは、ローカルプレディクタ330がある特定の回数その読出しを予測ミスしたような場合、依存検証ロジック305によって動的な読出しオペレーションとされてよい。他の実施形態では、他のファンクショナルユニットは動的な読出し状態を示すことができる。例えば、実施形態によっては、ある読出しは、そのオペランドあるいはアドレス指定パターンに基づいたオペレーションデコードステージにおいて、動的であるとされてもよい。
プロセッサ100のある実施形態では、メモリファイルは、読出しと書込み命令間の、依存性の表示を容易にするように実装することができる。そのような実施形態では、メモリファイルオペレーションの結果は、読出しオペレーションの依存予測を実行するように使用してもよい。
各アドレス指定パターンは、オペレーション内のアドレスを指定するための情報を少なくとも一部有し得る。例えば、図4Bを手短に参照すると、例示的なアドレス指定パターン206が示される。この実施形態では、アドレス指定パターン206は、ベース論理レジスタ名210、インデックス論理レジスタ名212、および変位214を有する。一部のアドレス指定パターン206は、メモリ内の特定のセグメントを識別するレジスタのセグメント論理レジスタ名を含んでもよい。ある実施形態では、メモリファイルストレージ204は、数個のレジスタ、ラッチ、フリップフロップ、あるいはその他のクロック動作するストレージから実施されてよい。別の実施形態では、メモリファイルストレージ204は、1つ以上のランダムアクセスメモリ(RAM:Random Access Memory)セルを含むことができる。
読出しオペレーションが処理されようとしており、この読出しオペレーションがメモリファイルストレージ204でヒットすれば、メモリファイルコントローラ202によって出力されるタグは、このタグによって識別された記録された値を、その読出しオペレーションの投機的な結果にリンクするために使用することができる。
例えば、ある実施形態では、読出しオペレーションがスケジューラ118にディスパッチされると、メモリファイル132によって出力されるタグはスケジューラにも(例えば、投機的なソースオペランドのタグとして)提供されてよい。スケジューラ118は、このタグによって識別される値が(例えば、レジスタファイル116内、または結果バス130上で)利用可能になると、読出しオペレーションを発行することができる。実行コア124は、この読出しオペレーションを実行し、その結果、リンクされている値が、読出しオペレーションの投機的な結果として結果バス130に送信される(ある実施形態では、読出しの結果として生成されるデータ値にフラグを設定したり、あるいはこの値を投機的な値として識別しなくてもよい点に留意されたい)。別の実施形態では、データ値は、タグを投機マップに記録することで読出しオペレーションの投機的な結果にリンクされてもよい。
例えば、一実施形態では、依存予測ロジック303は、読出しの依存性を予測するよう、ローカルプレディクタ330にアクセスするように構成されてもよく、別の実施形態では、グローバルプレディクタ340あるいはハイブリッドプレディクタ350が使用されてもよい。あるいは、メモリファイル132などのその他のユニットから依存予測情報を受け取ることもできる。
予測ミスが検出されれば、読出し/書き込みユニット126Cは、その予測ミスを受けて、スケジューラ118に独立していると予測された読出しオペレーションを将来的に再発行しなければならないことを示すリプレイ指示を供給するように構成することができる(ブロック514)。
例えば、ローカルプレディクタあるいはグローバルプレディクタがあってもなくても、メモリファイル134から生じる依存予測を実装することができる。
例示的コンピュータシステム
コンピュータシステムのその他の実施形態も可能であり、考察される。図中のシステムにおいて、メインメモリ200は、メモリバス906を介してバスブリッジ902に結合され、グラフィックコントローラ908は、AGPバス910を介してバスブリッジ902に結合される。PCIバス914を介して複数のPCIデバイス912A〜912Bがバスブリッジ902に結合される。
EISA/ISAバス920を介して1台以上のEISAデバイスまたはISAデバイス918を電気的に接続できるように、セカンダリバスブリッジ916を設けてもよい。この例では、プロセッサ100は、CPUバス924を介してバスブリッジ902に結合されるともに、任意のL2キャッシュ928にも結合されている。ある実施形態では、プロセッサ100は、一体化されたL1キャッシュ(図示せず)を含むことができる。
他の実施形態では、プロセッサ100とバスブリッジ902間のCPUバス924に、外部のキャッシュユニット(図示せず)を結合してもよい。他の形態では、外部キャッシュをバスブリッジ902に結合してもよく、この外部キャッシュのためのキャッシュ制御ロジックをバスブリッジ902に搭載してもよい。L2キャッシュ928は、プロセッサ100のバックサイド構成(backside configuration)として図示されている。
L2キャッシュ928は、プロセッサ100から独立していても、プロセッサ100とともにカートリッジ(例えば、スロット1又はスロットA)と一体化されていても、あるいは、プロセッサ100とともに半導体基板上に搭載されていてもよいという点に留意されたい。
専用のグラフィックスバスによって、メインメモリ200から高速にデータを取得することが可能となる。グラフィックコントローラ908はさらに、特定のオペレーションのために、AGPバス910上でPCIプロトコルを生成するように構成されてもよい。このため、バスブリッジ902のAGPインターフェースは、AGPプロトコルのトランザクションと、PCIプロトコルターゲットトランザクションおよびイニシエータトランザクションとの両方をサポートする機能を備えることができる。
ディスプレイ926は、画像あるいは文字を表示可能な任意の電子ディスプレイである。適切なディスプレイ926には、陰極線管(“CRT;Cathode Ray Tube”)ディスプレイや液晶ディスプレイ(“LCD;Liquid Crystal Display”)等がある。
プロセッサ100aは、(図6に示すように)独立したバスを介してバスブリッジ902に結合されていても、プロセッサ100との間でCPUバス924を共用してもよい。さらに、プロセッサ100aは、L2キャッシュ928と類似した任意のL2キャッシュ928aと結合することができる。
さらに、処理ノード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デバイスと通信してもよい。
一般に、ライン1024の各セットは、1本以上のデータラインと、このデータラインに対応する1本以上のクロックラインと、伝達するパケットの種類を示す1本以上の制御ラインとを含み得る。このリンクは、処理ノード間の通信ではキャッシュコヒーレントな方法で動作するか、処理ノードとI/Oデバイス間の通信(あるいは、バスブリッジから、PCIバスまたはISAバスなどの従来の構成のI/Oバスへの通信)で非コヒーレントな方法で動作し得る。また、図に示すように、このリンクは、I/Oデバイス間のデイジーチェーン構成を使用して、非コヒーレントな方法で動作することもできる。
1つの処理ノードから別の処理ノードに送信されるパケットが、1つ以上の中間ノードを通過し得る点に留意されたい。例えば、図7に示すように、処理ノード1012Aによって処理ノード1012Dに送信されるパケットは、処理ノード1012Bか処理ノード1012Cのいずれかを通過し得る。適したルーティングアルゴリズムであれば、どのようなものでも使用することができる。
コンピュータシステム900の別の実施形態では、処理ノードの数が、図7に示した実施形態よりも上下してもよい。
一実施形態では、コンピュータシステム900内のアドレスのコヒーレンシポイント(coherency point)は、そのアドレスに対応しているバイトを記録しているメモリに結合されたメモリコントローラ1016A〜1016Dである。換言すれば、メモリコントローラ1016A〜1016Dは、対応するメモリ200A〜200Dへの各メモリアクセスが、キャッシュコヒーレントな方法で行われることを保証する責任を負っている。メモリコントローラ1016A〜1016Dは、メモリ200A〜200Dとインタフェース接続するための制御回路を備え得る。さらに、メモリコントローラ1016A〜1016Dは、メモリ要求を待ち行列に入れるための要求キューを備えていてもよい。
これまでに述べてきた考察は、信号を“アサートされた(asserted)”ものとして説明するものである。ある信号が、情報のある特定の一部を示す値を伝送する場合、その信号は“アサートされる”として定義することができる。特定の信号がバイナリ1の値を伝送する場合、あるいは他の形態では、バイナリ0の値を伝送する場合、その特定の信号は“アサートされる”として定義することができる。
Claims (6)
- オペレーションを発行するように構成されたスケジューラ(118)と、
前記スケジューラ(118)によって発行されたメモリオペレーションを受信するように結合され、前記メモリオペレーションを実行するように構成された読出し/書込みユニット(126C)と、を含み、
前記読出し/書込みユニット(126C)は、グローバルヒストリレジスタ(342)と複数のグローバルプレディクタエントリ(345)とを備えたグローバルプレディクタ(340)を含み、前記グローバルヒストリレジスタ(342)は、実行された複数の読出しオペレーションのそれぞれが、それ以前の書込みオペレーションに依存していたかどうかを示す、又は前記実行された複数の読出しオペレーションのそれぞれが前記それ以前の書込みオペレーションに依存すると予測されていたかどうかを示す複数の依存値を記録するように構成され、少なくとも前記実行された複数の読出しオペレーションのうちの2つは異なる読出しオペレーションであり、
前記読出し/書込みユニット(126C)はさらに、
前記グローバルヒストリレジスタ(342)に記録された異なる前記実行された複数の読出しオペレーションに対応する2つ以上の前記複数の依存値に応じて、所与の読出しオペレーションに対して所与の前記複数のグローバルプレディクタエントリ(345)のうちの一つを選択し、
前記所与のグローバルプレディクタエントリ(345)に応じて、前記所与の読出しオペレーションがそれ以前の書込みオペレーションに依存しているかどうかを予測し、
前記所与の読出しオペレーションが前記それ以前の書込みオペレーションから独立しているという予測を受けて、前記それ以前の書込みオペレーションのアドレスが計算される前に前記所与の読出しオペレーションを実行し、
前記所与の読出しオペレーションが前記それ以前の書込みオペレーションから独立しているという予測の後に、前記所与の読出しオペレーションが予測ミスしたかどうかを検出し、
前記所与の読出しオペレーションが予測ミスしたとの検出に応答して、前記読出しオペレーションを再発行しなければならないことを示すリプレイ指示を前記スケジューラに送るように構成されている、マイクロプロセッサ(100)。 - 前記読出し/書込みユニット(126C)は、複数のローカルプレディクタエントリ(335)を備えたローカルプレディクタ(330)を含み、前記複数のローカルプレディクタエントリ(335)の各々は、依存予測値(337)を含み、前記読出し/書込みユニット(126C)はさらに、前記所与の読出しオペレーションに対応する所与のローカルプレディクタエントリ(335)にアクセスし、前記所与のローカルプレディクタエントリ(335)に含まれる所与の依存予測値(337)を評価することで前記所与の読出しオペレーションが前記それ以前の書込みオペレーションに依存しているかどうかを予測するように構成されている、請求項1に記載のマイクロプロセッサ(100)。
- 前記読出し/書込みユニット(126C)は、
各々が依存予測値(337)を含む複数のローカルプレディクタエントリ(335)を備えたローカルプレディクタ(330)を含み、
前記読出し/書込みユニット(126C)はさらに、
前記所与の読出しオペレーションがその他の読出しオペレーションの動作によって依存動作が変化する動的な読出しオペレーションであるかどうかを判定し、
前記所与の読出しオペレーションが動的な読出しオペレーションでないという前記判定を受けて、前記所与の読出しオペレーションに対応する所与のローカルプレディクタエントリ(335)にアクセスし、前記所与のローカルプレディクタエントリ(335)に含まれるローカル依存予測値(337)を評価し、かつ、
前記所与の読出しオペレーションが動的読出しオペレーションであるという前記判定を受けて、前記グローバルヒストリレジスタ(342)に応じて、前記所与の読出しオペレーションに対して所与のグローバルプレディクタエントリ(345)を選択するとともに前記所与のグローバルプレディクタエントリ(345)に含まれるグローバル依存予測値を評価する、
ことで、前記所与の読出しオペレーションが前記それ以前の書込みオペレーションに依存しているかどうかを予測するように構成されている、請求項1に記載のマイクロプロセッサ(100)。 - 読出しオペレーションを受信するステップと、
前記読出しオペレーションがそれ以前の書込みオペレーションに依存しているかどうかを予測するステップと、
前記所与の読出しオペレーションが前記それ以前の書込みオペレーションから独立しているという予測を受けて、前記それ以前の書込みオペレーションのアドレスが計算される前に前記読出しオペレーションを実行するステップと、
前記読出しオペレーションが前記それ以前の書込みオペレーションから独立しているという予測の後に、前記読出しオペレーションが予測ミスしたかどうかを検出するステップと、
前記読出しオペレーションが予測ミスしたという検出を受けて、前記読出しオペレーションを再発行しなければならないことを示すリプレイ指示をスケジューラ(118)に送るステップ、とを含み、
前記読出しオペレーションが前記より以前の書込みオペレーションに依存しているかどうかを予測するステップは、
グローバルヒストリレジスタ(342)に記録された2つ以上の依存値に応じて前記読み出しオペレーションに対する複数のグローバルプレディクタエントリ(345)のうちの所与の一つを選択するステップと、
前記複数のグローバルプレディクタエントリ(345)のうちの所与の一つに含まれる依存予測値(347)を評価するステップとを含み、
前記グローバルヒストリレジスタ(342)は、実行された複数の読出しオペレーションのそれぞれが、それ以前の書込みオペレーションに依存していたかどうかを示す、又は前記実行された複数の読出しオペレーションのそれぞれが前記それ以前の書込みオペレーションに依存すると予測されていたかどうかを示す複数の依存値を記録するように構成されており、
前記2つ以上の依存値はそれぞれ異なる実行された読出しオペレーションの依存動作を示すものである、方法。 - 前記読出しオペレーションが前記それ以前の書込みオペレーションに依存しているかどうかを予測するステップは、
前記読出しオペレーションがその他の読出しオペレーションの動作によって依存動作が変化する動的な読出しオペレーションであるかどうかを判定するステップを含み、
前記読出しオペレーションが動的な読出しオペレーションではないという前記判定を受けて、前記読出しオペレーションに対応するローカルプレディクタエントリ(335)にアクセスし、前記ローカルプレディクタエントリ(335)に含まれるローカル依存予測値(337)の評価を行うとともに、
前記読出しオペレーションが動的な読出しオペレーションであるという前記判定を受けて、前記グローバルヒストリレジスタ(342)に依存したグローバルグローバルプレディクタエントリ(345)を選択し、前記グローバルプレディクタエントリ(345)に含まれるグローバル依存予測値(347)を評価し、前記実行された複数の読出しオペレーションの2つ以上に応じて前記依存予測値が決定される、請求項4に記載の方法。 - メモリ(200)と、
前記メモリ(200)に結合されたプロセッサ(100)と、を含み、前記プロセッサ(100)は、
オペレーションを発行するように構成されたスケジューラ(118)、および、
前記スケジューラ(118)によって発行されたメモリオペレーションを受信するように結合され、前記メモリオペレーションを実行するように構成された読出し/書込みユニット(126C)を含み、
前記読出し/書込みユニット(126C)はグローバルヒストリレジスタ(342)および複数のグローバルプレディクタエントリ(345)を備えたグローバルプレディクタ(340)を含み、
前記グローバルヒストリレジスタ(342)は実行された複数の読出しオペレーションのそれぞれが、それ以前の書込みオペレーションに依存していたかどうかを示す、又は前記実行された複数の読出しオペレーションのそれぞれが前記それ以前の書込みオペレーションに依存すると予測されていたかどうかを示す各々の複数の依存値を記録するように構成され、少なくとも前記実行された複数の読出しオペレーションのうちの2つは異なる読出しオペレーションであり、
前記読出し/書込みユニット(126C)はさらに、
前記グローバルヒストリレジスタ(342)に記録された異なる前記実行された複数の読出しオペレーションに対応する2つ以上の前記複数の依存値に応じて所与の読出しオペレーションに対して所与の前記複数のグローバルプレディクタエントリ(345)のうちの一つを選択し、
所与の読出しオペレーションがそれ以前の書込みオペレーションに依存しているかどうかを前記所与のグローバルプレディクタエントリに応じて予測し、
前記所与の読出しオペレーションが前記それ以前の書込みオペレーションから独立しているとの予測を受けて、前記それ以前の書込みオペレーションのアドレスが計算される前に前記所与の読出しオペレーションを実行し、
前記所与の読出しオペレーションが前記それ以前の書込みオペレーションから独立しているという予測の後に、前記所与の読出しオペレーションが予測ミスしたかどうかを検出し、
前記所与の読出しオペレーションが予測ミスしたことの検出を受けて、前記読出しオペレーションを再発行しなければならないことを示すリプレイ指示を前記スケジューラ(118)に送るように構成されている、コンピュータシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/936,296 | 2004-09-08 | ||
US10/936,296 US7415597B2 (en) | 2004-09-08 | 2004-09-08 | Processor with dependence mechanism to predict whether a load is dependent on older store |
PCT/US2005/022426 WO2006028555A2 (en) | 2004-09-08 | 2005-06-23 | Processor with dependence mechanism to predict whether a load is dependent on older store |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008512769A JP2008512769A (ja) | 2008-04-24 |
JP5294632B2 true JP5294632B2 (ja) | 2013-09-18 |
Family
ID=35159735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007531161A Active JP5294632B2 (ja) | 2004-09-08 | 2005-06-23 | 読出しが以前の書込みに依存しているかどうかを予測する依存性メカニズムを備えたプロセッサ |
Country Status (8)
Country | Link |
---|---|
US (1) | US7415597B2 (ja) |
JP (1) | JP5294632B2 (ja) |
KR (1) | KR101192814B1 (ja) |
CN (1) | CN100524206C (ja) |
DE (1) | DE112005002173B4 (ja) |
GB (1) | GB2432693B (ja) |
TW (1) | TWI383320B (ja) |
WO (1) | WO2006028555A2 (ja) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2881246B1 (fr) * | 2005-01-21 | 2007-03-23 | Meiosys Soc Par Actions Simpli | Procede perdictif de gestion, de journalisation ou de rejeu d'operations non deterministes au sein du deroulement d'un processus applicatif |
US7590825B2 (en) * | 2006-03-07 | 2009-09-15 | Intel Corporation | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts |
JP5145809B2 (ja) * | 2007-07-31 | 2013-02-20 | 日本電気株式会社 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
US8285947B2 (en) * | 2009-02-06 | 2012-10-09 | Apple Inc. | Store hit load predictor |
US20100306509A1 (en) * | 2009-05-29 | 2010-12-02 | Via Technologies, Inc. | Out-of-order execution microprocessor with reduced store collision load replay reduction |
US20100325395A1 (en) * | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
CN101907984B (zh) * | 2009-08-07 | 2014-10-29 | 威盛电子股份有限公司 | 指令处理方法以及其所适用的超纯量管线微处理器 |
CN101944012B (zh) * | 2009-08-07 | 2014-04-23 | 威盛电子股份有限公司 | 指令处理方法以及其所适用的超纯量管线微处理器 |
US8601240B2 (en) * | 2010-05-04 | 2013-12-03 | Oracle International Corporation | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution |
US8918625B1 (en) | 2010-11-24 | 2014-12-23 | Marvell International Ltd. | Speculative scheduling of memory instructions in out-of-order processor based on addressing mode comparison |
US9442735B1 (en) * | 2012-04-13 | 2016-09-13 | Marvell International Ltd. | Method and apparatus for processing speculative, out-of-order memory access instructions |
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 |
US9384002B2 (en) * | 2012-11-16 | 2016-07-05 | International Business Machines Corporation | Speculative finish of instruction execution in a processor core |
US9158691B2 (en) | 2012-12-14 | 2015-10-13 | Apple Inc. | Cross dependency checking logic |
US9141803B2 (en) | 2013-02-26 | 2015-09-22 | Microsoft Technology Licensing, Llc | Self-healing of operating system components |
US9619750B2 (en) * | 2013-06-29 | 2017-04-11 | Intel Corporation | Method and apparatus for store dependence prediction |
US9524164B2 (en) | 2013-08-30 | 2016-12-20 | Advanced Micro Devices, Inc. | Specialized memory disambiguation mechanisms for different memory read access types |
US9286073B2 (en) * | 2014-01-07 | 2016-03-15 | Samsung Electronics Co., Ltd. | Read-after-write hazard predictor employing confidence and sampling |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
US20170329607A1 (en) * | 2016-05-16 | 2017-11-16 | International Business Machines Corporation | Hazard avoidance in a multi-slice processor |
US10528353B2 (en) | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor |
US10467008B2 (en) | 2016-05-31 | 2019-11-05 | International Business Machines Corporation | Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor |
US10740107B2 (en) * | 2016-06-01 | 2020-08-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing load-hit-store handling |
US10684859B2 (en) * | 2016-09-19 | 2020-06-16 | Qualcomm Incorporated | Providing memory dependence prediction in block-atomic dataflow architectures |
CN108920191B (zh) * | 2018-06-05 | 2020-11-20 | 上海兆芯集成电路有限公司 | 处理器电路及其操作方法 |
US10929142B2 (en) * | 2019-03-20 | 2021-02-23 | International Business Machines Corporation | Making precise operand-store-compare predictions to avoid false dependencies |
US11243774B2 (en) | 2019-03-20 | 2022-02-08 | International Business Machines Corporation | Dynamic selection of OSC hazard avoidance mechanism |
US10606603B1 (en) * | 2019-04-08 | 2020-03-31 | Ye Tao | Methods and apparatus for facilitating a memory mis-speculation recovery |
CN112540794A (zh) * | 2019-09-20 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 处理器核、处理器、装置和指令处理方法 |
US20220121447A1 (en) * | 2021-12-23 | 2022-04-21 | Intel Corporation | Hardening cpu predictors with cryptographic computing context information |
US20240354109A1 (en) * | 2023-04-21 | 2024-10-24 | Apple Inc. | Re-use of Speculative Load Instruction Results from Wrong Path |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JPH11212788A (ja) * | 1998-01-28 | 1999-08-06 | Toshiba Corp | プロセッサのデータ供給装置 |
US6658554B1 (en) * | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US6502188B1 (en) * | 1999-11-16 | 2002-12-31 | Advanced Micro Devices, Inc. | Dynamic classification of conditional branches in global history branch prediction |
US6484254B1 (en) * | 1999-12-30 | 2002-11-19 | Intel Corporation | Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses |
US6542984B1 (en) * | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
JP3729087B2 (ja) * | 2001-05-23 | 2005-12-21 | 日本電気株式会社 | マルチプロセッサシステム、データ依存投機実行制御装置およびその方法 |
US7024545B1 (en) * | 2001-07-24 | 2006-04-04 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with two levels of branch prediction cache |
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 |
US7058795B2 (en) * | 2002-06-25 | 2006-06-06 | Intel Corporation | Method and apparatus of branch prediction |
US6944744B2 (en) | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
US6950925B1 (en) * | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
US7024537B2 (en) * | 2003-01-21 | 2006-04-04 | Advanced Micro Devices, Inc. | Data speculation based on addressing patterns identifying dual-purpose register |
US7165167B2 (en) * | 2003-06-10 | 2007-01-16 | Advanced Micro Devices, Inc. | Load store unit with replay mechanism |
-
2004
- 2004-09-08 US US10/936,296 patent/US7415597B2/en active Active
-
2005
- 2005-06-23 CN CNB2005800301525A patent/CN100524206C/zh active Active
- 2005-06-23 KR KR1020077007256A patent/KR101192814B1/ko active IP Right Grant
- 2005-06-23 WO PCT/US2005/022426 patent/WO2006028555A2/en active Application Filing
- 2005-06-23 DE DE112005002173T patent/DE112005002173B4/de active Active
- 2005-06-23 JP JP2007531161A patent/JP5294632B2/ja active Active
- 2005-06-23 GB GB0704887A patent/GB2432693B/en active Active
- 2005-08-08 TW TW094126693A patent/TWI383320B/zh active
Also Published As
Publication number | Publication date |
---|---|
US7415597B2 (en) | 2008-08-19 |
GB2432693B (en) | 2008-03-12 |
US20060095734A1 (en) | 2006-05-04 |
TW200620118A (en) | 2006-06-16 |
JP2008512769A (ja) | 2008-04-24 |
KR20070068351A (ko) | 2007-06-29 |
GB2432693A (en) | 2007-05-30 |
GB0704887D0 (en) | 2007-04-18 |
TWI383320B (zh) | 2013-01-21 |
DE112005002173T5 (de) | 2007-09-27 |
DE112005002173B4 (de) | 2009-04-16 |
CN101014934A (zh) | 2007-08-08 |
WO2006028555A2 (en) | 2006-03-16 |
KR101192814B1 (ko) | 2012-10-18 |
CN100524206C (zh) | 2009-08-05 |
WO2006028555A3 (en) | 2006-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5294632B2 (ja) | 読出しが以前の書込みに依存しているかどうかを予測する依存性メカニズムを備えたプロセッサ | |
JP4105684B2 (ja) | ロード操作の推測結果をレジスタ値にリンクするためのシステムおよび方法 | |
JP4538462B2 (ja) | 二重用途レジスタを識別しているアドレス指定パターンに基づいたデータ投機 | |
US7133969B2 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
KR100953207B1 (ko) | 로드/저장 오퍼레이션들을 바이패스하기 위하여 추론적 소스 오퍼랜드를 사용하는 시스템 및 방법 | |
US6622237B1 (en) | Store to load forward predictor training using delta tag | |
JP2007536626A (ja) | ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法 | |
US6694424B1 (en) | Store load forward predictor training | |
KR101093784B1 (ko) | 리플레이 메커니즘을 구비한 로드 저장 유닛 | |
JP4624988B2 (ja) | データ推測マイクロプロセッサにおいて実行中のオペレーションのインスタンスがオペレーションのリプレイの割込みを防ぐためのシステム及び方法 | |
US8799628B2 (en) | Early branch determination | |
US7043626B1 (en) | Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming | |
US7197630B1 (en) | Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation | |
JP4745960B2 (ja) | マイクロプロセッサにおいてデータ推測オペレーションを識別する推測ポインタ | |
US7555633B1 (en) | Instruction cache prefetch based on trace cache eviction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080604 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20100421 |
|
RD05 | Notification of revocation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7425 Effective date: 20100902 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110719 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110803 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111102 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111110 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111201 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111208 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120104 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120112 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120202 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120905 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121205 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121212 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130107 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130115 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130205 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130305 |
|
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: 20130522 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130611 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5294632 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |