JP2009540412A - ローカル及びグローバル分岐予測情報の格納 - Google Patents
ローカル及びグローバル分岐予測情報の格納 Download PDFInfo
- Publication number
- JP2009540412A JP2009540412A JP2009513671A JP2009513671A JP2009540412A JP 2009540412 A JP2009540412 A JP 2009540412A JP 2009513671 A JP2009513671 A JP 2009513671A JP 2009513671 A JP2009513671 A JP 2009513671A JP 2009540412 A JP2009540412 A JP 2009540412A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- branch instruction
- instructions
- local
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000009977 dual effect Effects 0.000 description 87
- 238000010586 diagram Methods 0.000 description 38
- 238000012360 testing method Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 30
- 239000000872 buffer Substances 0.000 description 28
- 230000003111 delayed effect Effects 0.000 description 25
- 238000012549 training Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 230000000644 propagated effect Effects 0.000 description 10
- 230000003139 buffering effect Effects 0.000 description 7
- 230000002829 reductive effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000008685 targeting Effects 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
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
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
【解決手段】 本発明の実施形態は、分岐予測情報を格納する方法及び装置を提供する。一実施形態において、この方法は、分岐命令を受信することと、ローカル分岐予測情報についてのローカル予測可能性値を含む、分岐命令についてのローカル分岐予測情報を格納することとを含む。この方法は、ローカル予測可能性値が予測可能性の閾値を下回る場合にのみ、分岐命令についてのグローバル分岐予測情報を格納することをさらに含む。
【選択図】 図4
Description
図1は、本発明の一実施形態によるシステム100を示すブロック図である。システム100は、命令及びデータを格納するためのシステム・メモリ102と、グラフィックス処理のためのグラフィックス処理ユニット104と、外部装置と通信するためのI/Oインターフェース(106)と、命令及びデータを長期間格納するための記憶装置108と、命令及びデータを処理するためのプロセッサ110とを含むことができる。
本発明の一実施形態において、プロセッサ110は、プロセッサ110によって実行されている条件分岐命令についての分岐予測情報を格納することができる。分岐予測情報は、所定の分岐命令の実行履歴を反映させることができ、及び/又は、実行中の分岐命令の結果を予測するのに有用なものにすることができる。
本発明の一実施形態においては、実行中、ローカル分岐履歴情報を対応する分岐命令又はI−ラインに再エンコードすることができる。ローカル分岐履歴情報を対応する分岐命令に再エンコードすることによって、分岐予測情報を格納するのに用いられる分岐履歴テーブルのサイズを低減させることができ、ローカル分岐履歴情報を本質的に無制限に格納することができる(例えば、分岐命令自体の中に又はこれと共に)。また、本発明の一実施形態においては、ローカル分岐履歴情報が信頼できないものである場合(例えば、確認カウントCNTがローカル予測可能性の所定の閾値を下回る場合)、分岐履歴テーブル内にのみグローバル分岐履歴情報を格納することができる。したがって、場合によっては、分岐命令の結果を予測するためにその命令についてのローカル分岐履歴が許容可能なほど正しくない場合にのみ、所定の分岐命令についてのグローバル分岐履歴情報を格納することができる。
場合によっては、条件分岐命令の結果は、事前に解決可能であり得る(例えば、条件分岐命令をアウト・オブ・オーダー方式(out-of-order)で試験発行(trial issue)し、実行することによって、プログラムの順序に従って分岐命令が実行される前に、条件分岐命令の結果を判定することができる)。条件分岐命令が事前に解決可能である場合には、プロセッサ・コア114において条件分岐命令が実行される前に、条件分岐命令の結果(例えば、分岐される又は分岐されない)を判定することができる。次に、判定された結果を用いて、命令の実行をスケジューリングすることができる(例えば、命令をフェッチし、スケジューリングし、条件分岐命令についての事前解決されたパスに沿ってプロセッサ・コア114に対して発行することによって)。したがって、場合によっては、条件分岐の分岐条件が成立するか又は分岐条件が不成立であるかを判定するために、分岐予測情報(例えば、分岐命令の以前の実行からの情報)を用いることはできない。
ここから
本発明の一実施形態においては、プロセッサ110を用いて、条件分岐命令の(例えば、分岐条件が成立する又は分岐条件が不成立である)複数のパスを同時に実行することができる。例えば、プロセッサ110が条件分岐命令を検出すると、プロセッサ110は、条件分岐命令の分岐条件成立パスからの命令と分岐条件不成立パスからの命令の両方を発行することができる。条件分岐命令を実行し、条件分岐命令の分岐条件が成立するか又は分岐条件が不成立であるかの判定を行なうことができる(例えば、両方の分岐パスが発行された後)。条件分岐命令の分岐条件が成立する場合、分岐条件不成立パスからの命令の結果を廃棄することができる。分岐条件が不成立である場合、分岐条件成立パスからの命令の結果を廃棄することができる。
場合によっては、条件分岐命令は、分岐条件が成立する場合、条件分岐命令と条件分岐命令のターゲットとの間に配置された1つ又は複数の中間の命令の上をジャンプすることができる。条件分岐命令の分岐条件が不成立である場合には、中間の命令を実行することができる。こうした分岐命令は、短い条件分岐と呼ぶことができる。
一実施形態において、分岐命令の複数のパスの実行(例えば、予測パス及び非予測パス)を遅延させることができ、これにより、分岐命令に後続するパスを実行する前に分岐命令の結果を判定することが可能になる。場合によっては、いずれのパスからの命令も実際に実行することなく、分岐命令の両方のパスの実行を遅延させることによって、分岐命令の後続しないパスからの命令を不必要に実行することなく、分岐命令の後続するパスを後で実行することができる。
場合によっては、条件分岐命令を実行するために、上述した方法及び回路の各々を用いることができる。随意的に、本発明の一実施形態においては、条件分岐命令についての予測可能性レベルを計算することができる。条件分岐命令の計算された予測可能性レベルに基づいて、複数の方法の1つを用いて、条件分岐命令を実行することができる。例えば、条件分岐命令が完全に予測可能である、部分的に予測可能である、又は予測不可能であるという判定を行なうことができる。予測可能性レベルに基づいて、条件分岐命令の実行方法を選択することができる。その予測可能性に従って条件分岐命令の実行方法を選択することによって、プロセッサ110の非効率性を最小にしながら、プロセッサ110の全体のリソース使用率を最大にすることができる。
本発明の一実施形態において、命令が実行されている間、分岐予測情報及び/又は他の情報を連続的に追跡し、更新することができ、その結果、所定の命令の組が実行されるとき、分岐予測情報及び他の格納された値が時間と共に変化し得る。したがって、例えば、プログラムが実行されるとき、分岐予測情報を動的に修正することができる。
Claims (23)
- 分岐予測情報を格納する方法であって、
分岐命令を受信することと、
ローカル分岐予測情報についてのローカル予測可能性値を含む、前記分岐命令についてのローカル分岐予測情報を格納することと、
前記ローカル予測可能性値が予測可能性の閾値を下回る場合にのみ、前記分岐命令についてのグローバル分岐予測情報を格納することと
を含む方法。 - 前記ローカル分岐予測情報は、前記分岐命令の予測結果に対応する予測ビットを含む、請求項1に記載の方法。
- 前記分岐命令の前記予測結果は、前記分岐命令の分岐条件が成立すること、及び、前記分岐命令の分岐条件が成立しないことの一方である、請求項2に記載の方法。
- 前記グローバル分岐予測情報は、1つ又は複数の他の分岐命令についての1つ又は複数の結果ビットと、前記分岐命令の前記予測結果に対応する、対応する予測ビットとを含む、請求項1に記載の方法。
- 前記グローバル分岐予測情報はグローバル予測可能性値を含む、請求項1に記載の方法。
- 前記ローカル予測可能性値が前記グローバル予測可能性値より大きい場合、前記ローカル分岐予測情報を用いて、前記分岐命令の結果を予測することと、
前記グローバル予測可能性値が前記ローカル予測可能性値より大きい場合、前記グローバル分岐予測情報を用いて、前記分岐命令の結果を予測することと
をさらに含む、請求項5に記載の方法。 - 前記ローカル分岐予測情報は第1のテーブル内に格納され、前記グローバル分岐予測情報は第2のテーブル内に格納される、請求項1に記載の方法。
- 前記ローカル予測可能性値は、前記分岐命令についての以前の正確な予測の頻度を示す、請求項1に記載の方法。
- 分岐命令を実行する方法であって、
前記分岐命令を受信することと、
前記分岐命令についてのローカル分岐予測情報が格納されるかどうかを判定することと、
前記分岐命令についてのローカル分岐予測情報が格納される場合、ローカル分岐予測情報を用いて、前記分岐命令の結果を予測することと、
前記分岐命令についてのローカル分岐予測情報が格納されない場合、前記分岐命令についてのグローバル分岐予測情報を用いて、前記分岐命令の前記結果を予測することであって、前記命令についての前記グローバル分岐予測情報は、前記分岐命令についての前記ローカル分岐予測情報のローカル予測可能性値が予測可能性の閾値を下回る場合にのみ格納される、ことと
を含む方法。 - 前記分岐命令の前記予測結果は、前記分岐命令の分岐条件が成立すること、及び、前記分岐命令の分岐条件が成立しないことの一方である、請求項9に記載の方法。
- 少なくとも1つの命令が、前記分岐命令の前記予測結果を用いてプリフェッチされる、請求項9に記載の方法。
- 前記ローカル分岐予測情報は、前記分岐命令の前記予測結果に対応する予測ビットを含む、請求項9に記載の方法。
- 前記グローバル分岐予測情報は、1つ又は複数の他の分岐命令についての1つ又は複数の結果ビットと、前記分岐命令の前記予測結果に対応する、対応する予測ビットとを含む、請求項9に記載の方法。
- 前記ローカル分岐予測情報は第1のテーブル内に格納され、前記グローバル分岐予測情報は第2のテーブル内に格納される、請求項9に記載の方法。
- 前記グローバル分岐予測情報を含む前記第2のテーブルにアクセスするとき、1つ又は複数の他の分岐命令についての1つ又は複数の結果ビットが索引として用いられる、請求項14に記載の方法。
- 前記ローカル予測可能性値は、前記分岐命令についての以前の正確な予測の頻度を示す、請求項9に記載の方法。
- ローカル分岐予測情報を格納するための第1のテーブルと、
グローバル分岐予測情報を格納するための第2のテーブルと、
分岐命令を受信し、
前記第1のテーブル内に、前記ローカル分岐予測情報についてのローカル予測可能性値を含む前記分岐命令についてのローカル分岐予測情報を格納し、
前記ローカル予測可能性値が予測可能性の閾値を下回る場合にのみ、前記第2のテーブル内に前記分岐命令についてのグローバル分岐予測情報を格納する、
ように構成された回路と
を備える集積回路デバイス。 - 前記ローカル分岐予測情報は、前記分岐命令の予測結果に対応する予測ビットを含む、請求項17に記載の集積回路デバイス。
- 前記分岐命令の前記予測結果は、前記分岐命令の分岐条件が成立すること、及び、前記分岐命令の分岐条件が成立しないことの一方である、請求項18に記載の集積回路デバイス。
- 前記グローバル分岐予測情報は、1つ又は複数の他の分岐命令についての1つ又は複数の結果ビットと、前記分岐命令の前記予測結果に対応する、対応する予測ビットとを含む、請求項17に記載の集積回路デバイス。
- 前記グローバル分岐予測情報はグローバル予測可能性値を含む、請求項17に記載の集積回路デバイス。
- 前記回路は、
前記ローカル予測可能性値が前記グローバル予測可能性値より大きい場合、前記ローカル分岐予測情報を用いて前記分岐命令の結果を予測し、
前記グローバル予測可能性値が前記ローカル予測可能性値より大きい場合、前記グローバル分岐予測情報を用いて前記分岐命令の結果を予測する、
ようにさらに構成される、請求項21に記載の集積回路デバイス。 - 前記ローカル予測可能性値は、前記分岐命令についての以前の正確な予測の頻度を示す、請求項17に記載の集積回路デバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/422,927 US7487340B2 (en) | 2006-06-08 | 2006-06-08 | Local and global branch prediction information storage |
US11/422,927 | 2006-06-08 | ||
PCT/EP2007/055495 WO2007141252A1 (en) | 2006-06-08 | 2007-06-05 | Local and global branch prediction information storage |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009540412A true JP2009540412A (ja) | 2009-11-19 |
JP5137948B2 JP5137948B2 (ja) | 2013-02-06 |
Family
ID=38283290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009513671A Expired - Fee Related JP5137948B2 (ja) | 2006-06-08 | 2007-06-05 | ローカル及びグローバル分岐予測情報の格納 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7487340B2 (ja) |
EP (1) | EP2035920B1 (ja) |
JP (1) | JP5137948B2 (ja) |
CN (1) | CN101449238B (ja) |
WO (1) | WO2007141252A1 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010073197A (ja) * | 2008-09-19 | 2010-04-02 | Internatl Business Mach Corp <Ibm> | 多重プロセッサ・コア・ベクトル・モーフ結合機構 |
JP2012003771A (ja) * | 2010-06-21 | 2012-01-05 | Arm Ltd | 推測的に実行される命令のトレーシング |
JP2013500539A (ja) * | 2009-09-09 | 2013-01-07 | ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム | 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 |
JP2013058135A (ja) * | 2011-09-09 | 2013-03-28 | Ritsumeikan | 分岐予測器及びプロセッサ |
JP2013545194A (ja) * | 2010-11-08 | 2013-12-19 | クアルコム,インコーポレイテッド | 分岐命令の中に符号化されたバイモーダル分岐予測子 |
JP2016507092A (ja) * | 2013-01-15 | 2016-03-07 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 分岐予測のための信頼性閾値ベースの対抗分岐パス実行 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493607B2 (en) * | 2002-07-09 | 2009-02-17 | Bluerisc Inc. | Statically speculative compilation and execution |
US20050114850A1 (en) | 2003-10-29 | 2005-05-26 | Saurabh Chheda | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control |
US7996671B2 (en) * | 2003-11-17 | 2011-08-09 | Bluerisc Inc. | Security of program executables and microprocessors based on compiler-architecture interaction |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
US20070294181A1 (en) * | 2006-05-22 | 2007-12-20 | Saurabh Chheda | Flexible digital rights management with secure snippets |
US7487340B2 (en) * | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US8301871B2 (en) * | 2006-06-08 | 2012-10-30 | International Business Machines Corporation | Predicated issue for conditional branch instructions |
US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
US7890739B2 (en) * | 2008-02-19 | 2011-02-15 | Oracle America, Inc. | Method and apparatus for recovering from branch misprediction |
US8127115B2 (en) * | 2009-04-03 | 2012-02-28 | International Business Machines Corporation | Group formation with multiple taken branches per group |
WO2011010184A1 (en) | 2009-07-20 | 2011-01-27 | Freescale Semiconductor, Inc. | Signal processing system, integrated circuit comprising buffer control logic and method therefor |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
CN102117198B (zh) | 2009-12-31 | 2015-07-15 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
WO2011159309A1 (en) | 2010-06-18 | 2011-12-22 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction |
US9395984B2 (en) | 2012-09-12 | 2016-07-19 | Qualcomm Incorporated | Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods |
US9582279B2 (en) | 2013-03-15 | 2017-02-28 | International Business Machines Corporation | Execution of condition-based instructions |
CN104123195B (zh) * | 2013-04-23 | 2018-03-13 | 华为技术有限公司 | 一种指令清除方法及装置 |
US9804846B2 (en) * | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US10180841B2 (en) | 2014-12-22 | 2019-01-15 | Centipede Semi Ltd. | Early termination of segment monitoring in run-time code parallelization |
US9135015B1 (en) * | 2014-12-25 | 2015-09-15 | Centipede Semi Ltd. | Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction |
US10296350B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences |
US10296346B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences based on pre-monitoring |
US9715390B2 (en) | 2015-04-19 | 2017-07-25 | Centipede Semi Ltd. | Run-time parallelization of code execution based on an approximate register-access specification |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10474462B2 (en) * | 2016-02-29 | 2019-11-12 | Qualcomm Incorporated | Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions |
CN109101276B (zh) | 2018-08-14 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
US11269642B2 (en) | 2019-09-20 | 2022-03-08 | Microsoft Technology Licensing, Llc | Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor |
US11995443B2 (en) | 2022-10-04 | 2024-05-28 | Microsoft Technology Licensing, Llc | Reuse of branch information queue entries for multiple instances of predicted control instructions in captured loops in a processor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6502188B1 (en) * | 1999-11-16 | 2002-12-31 | Advanced Micro Devices, Inc. | Dynamic classification of conditional branches in global history branch prediction |
US20040059899A1 (en) * | 2002-09-20 | 2004-03-25 | International Business Machines Corporation | Effectively infinite branch prediction table mechanism |
US6823446B1 (en) * | 2000-04-13 | 2004-11-23 | International Business Machines Corporation | Apparatus and method for performing branch predictions using dual branch history tables and for updating such branch history tables |
JP2005500616A (ja) * | 2001-07-24 | 2005-01-06 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 2レベルの分岐予測キャッシュによる分岐予測 |
JP2005100403A (ja) * | 2003-09-24 | 2005-04-14 | Samsung Electronics Co Ltd | 電力消耗を減少させるための分岐予測器および実現方法 |
US20050216714A1 (en) * | 2004-03-25 | 2005-09-29 | Intel Corporation | Method and apparatus for predicting confidence and value |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435756A (en) * | 1981-12-03 | 1984-03-06 | Burroughs Corporation | Branch predicting computer |
US5608886A (en) * | 1994-08-31 | 1997-03-04 | Exponential Technology, Inc. | Block-based branch prediction using a target finder array storing target sub-addresses |
US5949995A (en) * | 1996-08-02 | 1999-09-07 | Freeman; Jackie Andrew | Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code |
US5838962A (en) * | 1997-04-09 | 1998-11-17 | Hewlett-Packard Company | Interrupt driven dynamic adjustment of branch predictions |
US6151672A (en) * | 1998-02-23 | 2000-11-21 | Hewlett-Packard Company | Methods and apparatus for reducing interference in a branch history table of a microprocessor |
US6115809A (en) * | 1998-04-30 | 2000-09-05 | Hewlett-Packard Company | Compiling strong and weak branching behavior instruction blocks to separate caches for dynamic and static prediction |
US6553488B2 (en) * | 1998-09-08 | 2003-04-22 | Intel Corporation | Method and apparatus for branch prediction using first and second level branch prediction tables |
US6272623B1 (en) * | 1999-01-25 | 2001-08-07 | Sun Microsystems, Inc. | Methods and apparatus for branch prediction using hybrid history with index sharing |
US7404070B1 (en) * | 2000-11-28 | 2008-07-22 | Hewlett-Packard Development Company, L.P. | Branch prediction combining static and dynamic prediction techniques |
US20020073301A1 (en) * | 2000-12-07 | 2002-06-13 | International Business Machines Corporation | Hardware for use with compiler generated branch information |
JP4035600B2 (ja) | 2002-05-22 | 2008-01-23 | 国立大学法人 東京大学 | イマチニブに対する感受性の判定方法 |
US7487340B2 (en) | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US8301871B2 (en) | 2006-06-08 | 2012-10-30 | International Business Machines Corporation | Predicated issue for conditional branch instructions |
US20070288733A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Early Conditional Branch Resolution |
US20070288731A1 (en) | 2006-06-08 | 2007-12-13 | Bradford Jeffrey P | Dual Path Issue for Conditional Branch Instructions |
US20070288734A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Double-Width Instruction Queue for Instruction Execution |
US20070288732A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Hybrid Branch Prediction Scheme |
-
2006
- 2006-06-08 US US11/422,927 patent/US7487340B2/en not_active Expired - Fee Related
-
2007
- 2007-06-05 EP EP07729880A patent/EP2035920B1/en not_active Not-in-force
- 2007-06-05 WO PCT/EP2007/055495 patent/WO2007141252A1/en active Application Filing
- 2007-06-05 JP JP2009513671A patent/JP5137948B2/ja not_active Expired - Fee Related
- 2007-06-05 CN CN200780018535.XA patent/CN101449238B/zh not_active Expired - Fee Related
-
2009
- 2009-02-02 US US12/364,350 patent/US7941654B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6502188B1 (en) * | 1999-11-16 | 2002-12-31 | Advanced Micro Devices, Inc. | Dynamic classification of conditional branches in global history branch prediction |
US6823446B1 (en) * | 2000-04-13 | 2004-11-23 | International Business Machines Corporation | Apparatus and method for performing branch predictions using dual branch history tables and for updating such branch history tables |
JP2005500616A (ja) * | 2001-07-24 | 2005-01-06 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 2レベルの分岐予測キャッシュによる分岐予測 |
US20040059899A1 (en) * | 2002-09-20 | 2004-03-25 | International Business Machines Corporation | Effectively infinite branch prediction table mechanism |
JP2005100403A (ja) * | 2003-09-24 | 2005-04-14 | Samsung Electronics Co Ltd | 電力消耗を減少させるための分岐予測器および実現方法 |
US20050216714A1 (en) * | 2004-03-25 | 2005-09-29 | Intel Corporation | Method and apparatus for predicting confidence and value |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010073197A (ja) * | 2008-09-19 | 2010-04-02 | Internatl Business Mach Corp <Ibm> | 多重プロセッサ・コア・ベクトル・モーフ結合機構 |
JP2013500539A (ja) * | 2009-09-09 | 2013-01-07 | ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム | 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 |
JP2012003771A (ja) * | 2010-06-21 | 2012-01-05 | Arm Ltd | 推測的に実行される命令のトレーシング |
US8769344B2 (en) | 2010-06-21 | 2014-07-01 | Arm Limited | Tracing speculatively executed instructions |
US9639361B2 (en) | 2010-06-21 | 2017-05-02 | Arm Limited | Tracing speculatively executed instructions |
JP2013545194A (ja) * | 2010-11-08 | 2013-12-19 | クアルコム,インコーポレイテッド | 分岐命令の中に符号化されたバイモーダル分岐予測子 |
US9122486B2 (en) | 2010-11-08 | 2015-09-01 | Qualcomm Incorporated | Bimodal branch predictor encoded in a branch instruction |
JP2013058135A (ja) * | 2011-09-09 | 2013-03-28 | Ritsumeikan | 分岐予測器及びプロセッサ |
JP2016507092A (ja) * | 2013-01-15 | 2016-03-07 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 分岐予測のための信頼性閾値ベースの対抗分岐パス実行 |
Also Published As
Publication number | Publication date |
---|---|
US7941654B2 (en) | 2011-05-10 |
CN101449238B (zh) | 2015-06-17 |
US7487340B2 (en) | 2009-02-03 |
JP5137948B2 (ja) | 2013-02-06 |
CN101449238A (zh) | 2009-06-03 |
EP2035920B1 (en) | 2012-12-12 |
US20090138690A1 (en) | 2009-05-28 |
WO2007141252A1 (en) | 2007-12-13 |
EP2035920A1 (en) | 2009-03-18 |
US20070288736A1 (en) | 2007-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5137948B2 (ja) | ローカル及びグローバル分岐予測情報の格納 | |
JP5089186B2 (ja) | データ・キャッシュ・ミス予測およびスケジューリング | |
US20070288733A1 (en) | Early Conditional Branch Resolution | |
US7447879B2 (en) | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss | |
US7461238B2 (en) | Simple load and store disambiguation and scheduling at predecode | |
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
US8812822B2 (en) | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss | |
US8301871B2 (en) | Predicated issue for conditional branch instructions | |
US20020091915A1 (en) | Load prediction and thread identification in a multithreaded microprocessor | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
EP2064622A2 (en) | Methods and apparatus for emulating the branch prediction behavior of an explicit subroutine call | |
US20070288732A1 (en) | Hybrid Branch Prediction Scheme | |
US20070288731A1 (en) | Dual Path Issue for Conditional Branch Instructions | |
US20080162908A1 (en) | structure for early conditional branch resolution | |
US20070288734A1 (en) | Double-Width Instruction Queue for Instruction Execution | |
US7730288B2 (en) | Method and apparatus for multiple load instruction execution | |
US20080162905A1 (en) | Design structure for double-width instruction queue for instruction execution | |
WO2007084202A2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
US6948055B1 (en) | Accuracy of multiple branch prediction schemes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100319 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120911 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121009 |
|
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: 20121023 |
|
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: 20121113 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151122 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |