DK0661625T3 - Fremgangsmåde og apparatur til implementering af et firetrins system til bestemmelse af programforgreninger (Four Stage Bra - Google Patents
Fremgangsmåde og apparatur til implementering af et firetrins system til bestemmelse af programforgreninger (Four Stage BraInfo
- Publication number
- DK0661625T3 DK0661625T3 DK94307771T DK94307771T DK0661625T3 DK 0661625 T3 DK0661625 T3 DK 0661625T3 DK 94307771 T DK94307771 T DK 94307771T DK 94307771 T DK94307771 T DK 94307771T DK 0661625 T3 DK0661625 T3 DK 0661625T3
- Authority
- DK
- Denmark
- Prior art keywords
- branch
- stage
- instructions
- instruction
- final
- Prior art date
Links
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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch 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/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/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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
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)
- Image Processing (AREA)
- Debugging And Monitoring (AREA)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17678594A | 1994-01-03 | 1994-01-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
DK0661625T3 true DK0661625T3 (da) | 2000-04-03 |
Family
ID=22645810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DK94307771T DK0661625T3 (da) | 1994-01-03 | 1994-10-21 | Fremgangsmåde og apparatur til implementering af et firetrins system til bestemmelse af programforgreninger (Four Stage Bra |
Country Status (8)
Country | Link |
---|---|
US (1) | US5812839A (da) |
EP (1) | EP0661625B1 (da) |
AT (1) | ATE184407T1 (da) |
DE (1) | DE69420540T2 (da) |
DK (1) | DK0661625T3 (da) |
ES (1) | ES2138051T3 (da) |
GR (1) | GR3036841T3 (da) |
SG (1) | SG52391A1 (da) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822574A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same |
US5933651A (en) * | 1995-09-29 | 1999-08-03 | Matsushita Electric Works, Ltd. | Programmable controller |
DE69636484T2 (de) * | 1996-07-16 | 2007-03-29 | Advanced Micro Devices Inc., Austin | Funktionseinheit mit zeiger für falsch vorhergesagte verzweigungsauflösung und superskalarer mikroprozessor zu deren anwendung |
US6088793A (en) * | 1996-12-30 | 2000-07-11 | Intel Corporation | Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor |
US6026477A (en) * | 1997-12-31 | 2000-02-15 | Intel Corporation | Branch recovery mechanism to reduce processor front end stall time by providing path information for both correct and incorrect instructions mixed in the instruction pool |
SE9901145D0 (sv) * | 1998-11-16 | 1999-03-29 | Ericsson Telefon Ab L M | A processing system and method |
SE9902373D0 (sv) * | 1998-11-16 | 1999-06-22 | Ericsson Telefon Ab L M | A processing system and method |
SE9901146D0 (sv) * | 1998-11-16 | 1999-03-29 | Ericsson Telefon Ab L M | A processing system and method |
SE9803901D0 (sv) * | 1998-11-16 | 1998-11-16 | Ericsson Telefon Ab L M | a device for a service network |
KR100401443B1 (ko) * | 1998-11-16 | 2003-10-17 | 텔레폰아크티에볼라게트 엘엠 에릭슨 | 이벤트를 기반으로한 시스템의 병행 처리 |
WO2001016716A1 (en) * | 1999-09-01 | 2001-03-08 | Intel Corporation | Branch instruction for processor architecture |
US7191309B1 (en) | 1999-09-01 | 2007-03-13 | Intel Corporation | Double shift instruction for micro engine used in multithreaded parallel processor architecture |
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6622241B1 (en) * | 2000-02-18 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | Method and apparatus for reducing branch prediction table pollution |
DE10009677A1 (de) * | 2000-02-29 | 2001-09-06 | Infineon Technologies Ag | Programmgesteuerte Einheit |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
SE0003446L (sv) * | 2000-09-27 | 2002-03-28 | Ericsson Telefon Ab L M | En pipelinemikroprocessor och ett förfarnade relaterande därtill |
US7020871B2 (en) | 2000-12-21 | 2006-03-28 | Intel Corporation | Breakpoint method for parallel hardware threads in multithreaded processor |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US20020194462A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7234045B2 (en) * | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
DE10232488B4 (de) * | 2001-08-08 | 2006-09-21 | International Business Machines Corporation | Verfahren und Prozessor zur Verzweigungsvorhersage mit zwei parallel durchsuchten Verzweigungsziel-Speichern |
US7225281B2 (en) * | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US20040111593A1 (en) * | 2002-12-05 | 2004-06-10 | International Business Machines Corporation | Interrupt handler prediction method and system |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7185186B2 (en) | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
GB0415851D0 (en) * | 2004-07-15 | 2004-08-18 | Imagination Tech Ltd | Microprocessor output ports and control of instructions provided therefrom |
DE102005001679B4 (de) * | 2005-01-13 | 2008-11-13 | Infineon Technologies Ag | Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung |
US7152155B2 (en) * | 2005-02-18 | 2006-12-19 | Qualcomm Incorporated | System and method of correcting a branch misprediction |
US20080072019A1 (en) * | 2006-09-19 | 2008-03-20 | Avinash Sodani | Technique to clear bogus instructions from a processor pipeline |
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
US7624254B2 (en) * | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
US7870371B2 (en) * | 2007-12-17 | 2011-01-11 | Microsoft Corporation | Target-frequency based indirect jump prediction for high-performance processors |
US7890739B2 (en) * | 2008-02-19 | 2011-02-15 | Oracle America, Inc. | Method and apparatus for recovering from branch misprediction |
US8099586B2 (en) * | 2008-12-30 | 2012-01-17 | Oracle America, Inc. | Branch misprediction recovery mechanism for microprocessors |
US8909908B2 (en) * | 2009-05-29 | 2014-12-09 | Via Technologies, Inc. | Microprocessor that refrains from executing a mispredicted branch in the presence of an older unretired cache-missing load instruction |
US9268569B2 (en) * | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
US20130318332A1 (en) * | 2012-05-22 | 2013-11-28 | Jeffry E. Gonion | Branch misprediction behavior suppression using a branch optional instruction |
US9563427B2 (en) * | 2014-05-30 | 2017-02-07 | International Business Machines Corporation | Relative offset branching in a fixed-width reduced instruction set computing architecture |
US9547494B2 (en) * | 2014-05-30 | 2017-01-17 | International Business Machines Corporation | Absolute address branching in a fixed-width reduced instruction set computing architecture |
US20160350116A1 (en) * | 2015-05-29 | 2016-12-01 | Qualcomm Incorporated | Mitigating wrong-path effects in branch prediction |
US11106466B2 (en) | 2018-06-18 | 2021-08-31 | International Business Machines Corporation | Decoupling of conditional branches |
DE102022125248B4 (de) | 2022-09-30 | 2024-05-02 | Oliver Bartels | Prozessor und Computer mit mindestens einem Prozessor mit vorzeitiger Programmvariantenauswahl bei noch unbekannten Vergleichsergebnissen |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0150177A1 (en) * | 1983-07-11 | 1985-08-07 | Prime Computer, Inc. | Data processing system |
DE3752100T2 (de) * | 1986-01-07 | 1997-12-11 | Nippon Electric Co | Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung |
US4991080A (en) * | 1986-03-13 | 1991-02-05 | International Business Machines Corporation | Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5072364A (en) * | 1989-05-24 | 1991-12-10 | Tandem Computers Incorporated | Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel |
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
DE69130138T2 (de) * | 1990-06-29 | 1999-05-06 | Digital Equipment Corp., Maynard, Mass. | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor |
JPH0820950B2 (ja) * | 1990-10-09 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチ予測型分岐予測機構 |
US5265213A (en) * | 1990-12-10 | 1993-11-23 | Intel Corporation | Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction |
DE4211222B4 (de) * | 1991-04-05 | 2009-05-28 | Kabushiki Kaisha Toshiba, Kawasaki | Abzweigungs-Vorhersage-Vorrichtung und Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor |
KR100294276B1 (ko) * | 1991-07-08 | 2001-09-17 | 야스카와 히데아키 | 고속트랩및예외상태를구현한알아이에스씨마이크로프로세서구조 |
US5442756A (en) * | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
US5367703A (en) * | 1993-01-08 | 1994-11-22 | International Business Machines Corporation | Method and system for enhanced branch history prediction accuracy in a superscalar processor system |
US5463745A (en) * | 1993-12-22 | 1995-10-31 | Intel Corporation | Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system |
US5465336A (en) * | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US5542109A (en) * | 1994-08-31 | 1996-07-30 | Exponential Technology, Inc. | Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities |
US5606672A (en) * | 1995-01-27 | 1997-02-25 | Intel Corporation | Method and apparatus for multiplexing signals from a bus bridge to an ISA bus interface and an ATA bus interface |
-
1994
- 1994-10-21 EP EP94307771A patent/EP0661625B1/en not_active Expired - Lifetime
- 1994-10-21 SG SG1996003892A patent/SG52391A1/en unknown
- 1994-10-21 DE DE69420540T patent/DE69420540T2/de not_active Expired - Lifetime
- 1994-10-21 DK DK94307771T patent/DK0661625T3/da active
- 1994-10-21 AT AT94307771T patent/ATE184407T1/de not_active IP Right Cessation
- 1994-10-21 ES ES94307771T patent/ES2138051T3/es not_active Expired - Lifetime
-
1997
- 1997-05-05 US US08/851,141 patent/US5812839A/en not_active Expired - Lifetime
-
1999
- 1999-12-07 GR GR990403158T patent/GR3036841T3/el unknown
Also Published As
Publication number | Publication date |
---|---|
DE69420540D1 (de) | 1999-10-14 |
DE69420540T2 (de) | 2000-02-10 |
GR3036841T3 (en) | 2002-01-31 |
US5812839A (en) | 1998-09-22 |
ES2138051T3 (es) | 2000-01-01 |
EP0661625A2 (en) | 1995-07-05 |
EP0661625B1 (en) | 1999-09-08 |
SG52391A1 (en) | 1998-09-28 |
EP0661625A3 (da) | 1995-08-16 |
ATE184407T1 (de) | 1999-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DK0661625T3 (da) | Fremgangsmåde og apparatur til implementering af et firetrins system til bestemmelse af programforgreninger (Four Stage Bra | |
US5768576A (en) | Method and apparatus for predicting and handling resolving return from subroutine instructions in a computer processor | |
US5542109A (en) | Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities | |
GB2329735A (en) | A processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction | |
US8521996B2 (en) | Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution | |
US7152155B2 (en) | System and method of correcting a branch misprediction | |
US6055630A (en) | System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units | |
US4777587A (en) | System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses | |
US5964868A (en) | Method and apparatus for implementing a speculative return stack buffer | |
US4858104A (en) | Preceding instruction address based branch prediction in a pipelined processor | |
TWI470546B (zh) | 微處理器、管線式微處理器、快速執行條件分支指令之方法、以及解析第一或第二類別條件分支指令之方法 | |
KR970029034A (ko) | 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템 | |
US7010675B2 (en) | Fetch branch architecture for reducing branch penalty without branch prediction | |
US5918046A (en) | Method and apparatus for a branch instruction pointer table | |
JP2012511212A (ja) | デジタルプロセッサにおいてジャンプ動作を実施するための方法および装置 | |
US6662360B1 (en) | Method and system for software control of hardware branch prediction mechanism in a data processor | |
EP1315083A2 (en) | Processor and method of pipelining | |
JP2004038255A (ja) | 命令制御方法及びプロセッサ | |
US20050144427A1 (en) | Processor including branch prediction mechanism for far jump and far call instructions | |
KR100331199B1 (ko) | 병행 생성된 복수의 페치 어드레스 중 하나를 선택하여 메모리요구를 형성하는 명령 페치 방법 및 프로세서 | |
US20020166042A1 (en) | Speculative branch target allocation | |
US6976156B1 (en) | Pipeline stall reduction in wide issue processor by providing mispredict PC queue and staging registers to track branch instructions in pipeline | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
GB2230119A (en) | Conditional execution speed-up on synchronizing instructions | |
JP2843844B2 (ja) | 並列演算処理装置 |