JP5137948B2 - ローカル及びグローバル分岐予測情報の格納 - Google Patents
ローカル及びグローバル分岐予測情報の格納 Download PDFInfo
- Publication number
- JP5137948B2 JP5137948B2 JP2009513671A JP2009513671A JP5137948B2 JP 5137948 B2 JP5137948 B2 JP 5137948B2 JP 2009513671 A JP2009513671 A JP 2009513671A JP 2009513671 A JP2009513671 A JP 2009513671A JP 5137948 B2 JP5137948 B2 JP 5137948B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- branch instruction
- instructions
- conditional branch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 56
- 230000009977 dual effect Effects 0.000 description 86
- 238000010586 diagram Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 30
- 238000012360 testing method Methods 0.000 description 29
- 239000000872 buffer Substances 0.000 description 28
- 230000003111 delayed effect Effects 0.000 description 26
- 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
- 238000012546 transfer Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 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)
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 (13)
- 分岐予測情報を格納する方法であって、
分岐命令を受信することと、
ローカル分岐予測情報についてのローカル予測可能性値を含む、前記分岐命令についてのローカル分岐予測情報を格納することと、
前記ローカル予測可能性値が予測可能性の閾値を下回る場合にのみ、前記分岐命令についてのグローバル分岐予測情報を格納することと
を含む方法。 - 前記ローカル分岐予測情報は、前記分岐命令の予測結果に対応する予測ビットを含む、請求項1に記載の方法。
- 前記分岐命令の前記予測結果は、前記分岐命令の分岐条件が成立すること、及び、前記分岐命令の分岐条件が成立しないことの一方である、請求項2に記載の方法。
- 前記グローバル分岐予測情報はグローバル予測可能性値を含む、請求項1に記載の方法。
- 前記ローカル予測可能性値が前記グローバル予測可能性値より大きい場合、前記ローカル分岐予測情報を用いて、前記分岐命令の結果を予測することと、
前記グローバル予測可能性値が前記ローカル予測可能性値より大きい場合、前記グローバル分岐予測情報を用いて、前記分岐命令の結果を予測することと
をさらに含む、請求項4に記載の方法。 - 前記ローカル分岐予測情報は第1のテーブル内に格納され、前記グローバル分岐予測情報は第2のテーブル内に格納される、請求項1に記載の方法。
- 前記ローカル予測可能性値は、前記分岐命令についての以前の正確な予測の頻度を示す、請求項1に記載の方法。
- ローカル分岐予測情報を格納するための第1のテーブルと、
グローバル分岐予測情報を格納するための第2のテーブルと、
分岐命令を受信し、
前記第1のテーブル内に、前記ローカル分岐予測情報についてのローカル予測可能性値を含む前記分岐命令についてのローカル分岐予測情報を格納し、
前記ローカル予測可能性値が予測可能性の閾値を下回る場合にのみ、前記第2のテーブル内に前記分岐命令についてのグローバル分岐予測情報を格納する、
ように構成された回路と
を備える集積回路デバイス。 - 前記ローカル分岐予測情報は、前記分岐命令の予測結果に対応する予測ビットを含む、請求項8に記載の集積回路デバイス。
- 前記分岐命令の前記予測結果は、前記分岐命令の分岐条件が成立すること、及び、前記分岐命令の分岐条件が成立しないことの一方である、請求項9に記載の集積回路デバイス。
- 前記グローバル分岐予測情報はグローバル予測可能性値を含む、請求項8に記載の集積回路デバイス。
- 前記回路は、
前記ローカル予測可能性値が前記グローバル予測可能性値より大きい場合、前記ローカル分岐予測情報を用いて前記分岐命令の結果を予測し、
前記グローバル予測可能性値が前記ローカル予測可能性値より大きい場合、前記グローバル分岐予測情報を用いて前記分岐命令の結果を予測する、
ようにさらに構成される、請求項11に記載の集積回路デバイス。 - 前記ローカル予測可能性値は、前記分岐命令についての以前の正確な予測の頻度を示す、請求項8に記載の集積回路デバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/422,927 | 2006-06-08 | ||
US11/422,927 US7487340B2 (en) | 2006-06-08 | 2006-06-08 | Local and global branch prediction information storage |
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 JP2009540412A (ja) | 2009-11-19 |
JP5137948B2 true 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) |
Families Citing this family (47)
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 |
US8301871B2 (en) * | 2006-06-08 | 2012-10-30 | International Business Machines Corporation | Predicated issue for conditional branch instructions |
US7487340B2 (en) * | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
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 |
US8135941B2 (en) * | 2008-09-19 | 2012-03-13 | International Business Machines Corporation | Vector morphing mechanism for multiple processor cores |
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 |
US8433885B2 (en) * | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
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 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
KR101731752B1 (ko) | 2010-06-18 | 2017-04-28 | 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 | 결합된 분기 타깃 및 프레디킷 예측 |
GB2481385B (en) * | 2010-06-21 | 2018-08-15 | Advanced Risc Mach Ltd | Tracing speculatively executed instructions |
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 | 分岐予測器及びプロセッサ |
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 |
US9348599B2 (en) * | 2013-01-15 | 2016-05-24 | International Business Machines Corporation | Confidence threshold-based opposing branch path execution for branch prediction |
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 |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction 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 |
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 |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
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 |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
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 |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
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 |
Family Cites Families (23)
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 |
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 |
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 |
US7024545B1 (en) * | 2001-07-24 | 2006-04-04 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with two levels of branch prediction cache |
JP4035600B2 (ja) | 2002-05-22 | 2008-01-23 | 国立大学法人 東京大学 | イマチニブに対する感受性の判定方法 |
US6978361B2 (en) * | 2002-09-20 | 2005-12-20 | International Business Machines Corporation | Effectively infinite branch prediction table mechanism |
KR100528479B1 (ko) | 2003-09-24 | 2005-11-15 | 삼성전자주식회사 | 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법 |
US20050216714A1 (en) | 2004-03-25 | 2005-09-29 | Intel Corporation | Method and apparatus for predicting confidence and value |
US20070288732A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Hybrid Branch Prediction Scheme |
US20070288734A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Double-Width Instruction Queue for Instruction Execution |
US20070288731A1 (en) | 2006-06-08 | 2007-12-13 | Bradford Jeffrey P | Dual Path Issue for Conditional Branch Instructions |
US7487340B2 (en) | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US20070288733A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Early Conditional Branch Resolution |
US8301871B2 (en) | 2006-06-08 | 2012-10-30 | International Business Machines Corporation | Predicated issue for conditional branch instructions |
-
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 JP JP2009513671A patent/JP5137948B2/ja not_active Expired - Fee Related
- 2007-06-05 CN CN200780018535.XA patent/CN101449238B/zh not_active Expired - Fee Related
- 2007-06-05 WO PCT/EP2007/055495 patent/WO2007141252A1/en active Application Filing
-
2009
- 2009-02-02 US US12/364,350 patent/US7941654B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20090138690A1 (en) | 2009-05-28 |
JP2009540412A (ja) | 2009-11-19 |
CN101449238A (zh) | 2009-06-03 |
EP2035920B1 (en) | 2012-12-12 |
US7941654B2 (en) | 2011-05-10 |
US7487340B2 (en) | 2009-02-03 |
US20070288736A1 (en) | 2007-12-13 |
WO2007141252A1 (en) | 2007-12-13 |
EP2035920A1 (en) | 2009-03-18 |
CN101449238B (zh) | 2015-06-17 |
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 | |
JP5722396B2 (ja) | 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置 | |
US8301871B2 (en) | Predicated issue for conditional branch instructions | |
US9021240B2 (en) | System and method for Controlling restarting of instruction fetching using speculative address computations | |
US20020091915A1 (en) | Load prediction and thread identification in a multithreaded microprocessor | |
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 |
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 |