WO2007143508A3 - Sliding-window, block-based branch target address cache - Google Patents
Sliding-window, block-based branch target address cache Download PDFInfo
- Publication number
- WO2007143508A3 WO2007143508A3 PCT/US2007/070111 US2007070111W WO2007143508A3 WO 2007143508 A3 WO2007143508 A3 WO 2007143508A3 US 2007070111 W US2007070111 W US 2007070111W WO 2007143508 A3 WO2007143508 A3 WO 2007143508A3
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- block
- instruction
- btac
- window
- sliding
- 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, 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/38—Concurrent instruction execution, e.g. pipeline, 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
-
- 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
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Abstract
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AT07797948T ATE535862T1 (en) | 2006-06-05 | 2007-05-31 | SLIDING WINDOW, BLOCK BASED JUMP DESTINATION ADDRESS CACHE |
CN2007800204454A CN101460922B (en) | 2006-06-05 | 2007-05-31 | Sliding-window, block-based branch target address cache |
JP2009514477A JP5231403B2 (en) | 2006-06-05 | 2007-05-31 | Sliding window block based branch target address cache |
EP07797948A EP2024820B1 (en) | 2006-06-05 | 2007-05-31 | Sliding-window, block-based branch target address cache |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/422,186 | 2006-06-05 | ||
US11/422,186 US7827392B2 (en) | 2006-06-05 | 2006-06-05 | Sliding-window, block-based branch target address cache |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2007143508A2 WO2007143508A2 (en) | 2007-12-13 |
WO2007143508A3 true WO2007143508A3 (en) | 2008-01-31 |
Family
ID=38654617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2007/070111 WO2007143508A2 (en) | 2006-06-05 | 2007-05-31 | Sliding-window, block-based branch target address cache |
Country Status (7)
Country | Link |
---|---|
US (1) | US7827392B2 (en) |
EP (1) | EP2024820B1 (en) |
JP (2) | JP5231403B2 (en) |
KR (1) | KR101016541B1 (en) |
CN (2) | CN101460922B (en) |
AT (1) | ATE535862T1 (en) |
WO (1) | WO2007143508A2 (en) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827392B2 (en) * | 2006-06-05 | 2010-11-02 | Qualcomm Incorporated | Sliding-window, block-based branch target address cache |
US8407187B2 (en) | 2010-06-16 | 2013-03-26 | Microsoft Corporation | Validating files using a sliding window to access and correlate records in an arbitrarily large dataset |
US9201658B2 (en) * | 2012-09-24 | 2015-12-01 | Apple Inc. | Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries |
US9563562B2 (en) | 2012-11-27 | 2017-02-07 | Nvidia Corporation | Page crossing prefetches |
US9639471B2 (en) | 2012-11-27 | 2017-05-02 | Nvidia Corporation | Prefetching according to attributes of access requests |
US9262328B2 (en) * | 2012-11-27 | 2016-02-16 | Nvidia Corporation | Using cache hit information to manage prefetches |
GB2501582B (en) | 2013-02-11 | 2014-12-24 | Imagination Tech Ltd | Speculative load issue |
US9489204B2 (en) * | 2013-03-15 | 2016-11-08 | Qualcomm Incorporated | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process |
US10747540B2 (en) * | 2016-11-01 | 2020-08-18 | Oracle International Corporation | Hybrid lookahead branch target cache |
US20190004805A1 (en) * | 2017-06-28 | 2019-01-03 | Qualcomm Incorporated | Multi-tagged branch prediction table |
US11915004B2 (en) * | 2021-12-20 | 2024-02-27 | Arm Limited | Control flow prediction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
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 |
EP1624369A2 (en) * | 2004-08-04 | 2006-02-08 | VIA Technologies, Inc. | Apparatus for predicting multiple branch target addresses |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5414822A (en) * | 1991-04-05 | 1995-05-09 | Kabushiki Kaisha Toshiba | Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness |
US5442756A (en) * | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
US5577217A (en) * | 1993-05-14 | 1996-11-19 | Intel Corporation | Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions |
KR100310581B1 (en) * | 1993-05-14 | 2001-12-17 | 피터 엔. 데트킨 | Inference recording mechanism of branch target buffer |
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
JP3494484B2 (en) * | 1994-10-12 | 2004-02-09 | 株式会社ルネサステクノロジ | Instruction processing unit |
JP3494736B2 (en) * | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | Branch prediction system using branch destination buffer |
GB9521980D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Branch target buffer |
US5864697A (en) * | 1996-06-28 | 1999-01-26 | Texas Instruments Incorporated | Microprocessor using combined actual and speculative branch history prediction |
US5774710A (en) * | 1996-09-19 | 1998-06-30 | Advanced Micro Devices, Inc. | Cache line branch prediction scheme that shares among sets of a set associative cache |
US5918044A (en) * | 1996-10-31 | 1999-06-29 | International Business Machines Corporation | Apparatus and method for instruction fetching using a multi-port instruction cache directory |
JPH10133874A (en) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | Branch predicting mechanism for superscalar processor |
EP0848323B1 (en) * | 1996-12-10 | 2004-02-25 | Texas Instruments Incorporated | Improvements in the branch prediction within a pipelined microprocessor |
US6119222A (en) * | 1996-12-23 | 2000-09-12 | Texas Instruments Incorporated | Combined branch prediction and cache prefetch in a microprocessor |
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
TW357318B (en) * | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
US6263427B1 (en) * | 1998-09-04 | 2001-07-17 | Rise Technology Company | Branch prediction mechanism |
US6601161B2 (en) * | 1998-12-30 | 2003-07-29 | Intel Corporation | Method and system for branch target prediction using path information |
EP1150213B1 (en) * | 2000-04-28 | 2012-01-25 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Data processing system and method |
WO2002008895A1 (en) * | 2000-07-21 | 2002-01-31 | Koninklijke Philips Electronics N.V. | Data processor with branch target buffer |
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 |
US6792521B2 (en) * | 2001-10-16 | 2004-09-14 | International Business Machines Corporation | Behavioral memory mechanism for a data processing system |
US6877083B2 (en) * | 2001-10-16 | 2005-04-05 | International Business Machines Corporation | Address mapping mechanism for behavioral memory enablement within a data processing system |
US6675279B2 (en) * | 2001-10-16 | 2004-01-06 | International Business Machines Corporation | Behavioral memory enabled fetch prediction mechanism within a data processing system |
JP3738842B2 (en) * | 2002-06-04 | 2006-01-25 | 富士通株式会社 | Information processing apparatus with delayed branch function |
US7266676B2 (en) * | 2003-03-21 | 2007-09-04 | Analog Devices, Inc. | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays |
US7174444B2 (en) * | 2003-03-31 | 2007-02-06 | Intel Corporation | Preventing a read of a next sequential chunk in branch prediction of a subject chunk |
US7124287B2 (en) * | 2003-05-12 | 2006-10-17 | International Business Machines Corporation | Dynamically adaptive associativity of a branch target buffer (BTB) |
US20040250054A1 (en) * | 2003-06-09 | 2004-12-09 | Stark Jared W. | Line prediction using return prediction information |
US7096348B2 (en) * | 2003-12-15 | 2006-08-22 | Freescale Semiconductor, Inc. | Method and apparatus for allocating entries in a branch target buffer |
JP2006048132A (en) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | Branching prediction device, control method of the branching prediction device, and information processing device |
US7328332B2 (en) * | 2004-08-30 | 2008-02-05 | Texas Instruments Incorporated | Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages |
KR100630702B1 (en) * | 2004-10-05 | 2006-10-02 | 삼성전자주식회사 | Controller for instruction cache and instruction translation look-aside buffer, and method of controlling the same |
US7447882B2 (en) * | 2005-04-20 | 2008-11-04 | Arm Limited | Context switching within a data processing system having a branch prediction mechanism |
US7827392B2 (en) * | 2006-06-05 | 2010-11-02 | Qualcomm Incorporated | Sliding-window, block-based branch target address cache |
US20080040576A1 (en) * | 2006-08-09 | 2008-02-14 | Brian Michael Stempel | Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set |
US7707396B2 (en) * | 2006-11-17 | 2010-04-27 | International Business Machines Corporation | Data processing system, processor and method of data processing having improved branch target address cache |
US7937573B2 (en) * | 2008-02-29 | 2011-05-03 | Freescale Semiconductor, Inc. | Metric for selective branch target buffer (BTB) allocation |
-
2006
- 2006-06-05 US US11/422,186 patent/US7827392B2/en active Active
-
2007
- 2007-05-31 JP JP2009514477A patent/JP5231403B2/en not_active Expired - Fee Related
- 2007-05-31 EP EP07797948A patent/EP2024820B1/en not_active Not-in-force
- 2007-05-31 WO PCT/US2007/070111 patent/WO2007143508A2/en active Application Filing
- 2007-05-31 AT AT07797948T patent/ATE535862T1/en active
- 2007-05-31 CN CN2007800204454A patent/CN101460922B/en not_active Expired - Fee Related
- 2007-05-31 CN CN201210473534.7A patent/CN103019652B/en not_active Expired - Fee Related
- 2007-05-31 KR KR1020097000082A patent/KR101016541B1/en not_active IP Right Cessation
-
2012
- 2012-12-07 JP JP2012268455A patent/JP5734945B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
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 |
EP1624369A2 (en) * | 2004-08-04 | 2006-02-08 | VIA Technologies, Inc. | Apparatus for predicting multiple branch target addresses |
Also Published As
Publication number | Publication date |
---|---|
CN101460922B (en) | 2013-01-02 |
KR101016541B1 (en) | 2011-02-24 |
US7827392B2 (en) | 2010-11-02 |
CN103019652A (en) | 2013-04-03 |
JP5734945B2 (en) | 2015-06-17 |
EP2024820B1 (en) | 2011-11-30 |
ATE535862T1 (en) | 2011-12-15 |
US20070283134A1 (en) | 2007-12-06 |
JP2013080497A (en) | 2013-05-02 |
JP2009540439A (en) | 2009-11-19 |
CN101460922A (en) | 2009-06-17 |
WO2007143508A2 (en) | 2007-12-13 |
EP2024820A2 (en) | 2009-02-18 |
JP5231403B2 (en) | 2013-07-10 |
CN103019652B (en) | 2015-04-29 |
KR20090017687A (en) | 2009-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2007143508A3 (en) | Sliding-window, block-based branch target address cache | |
WO2006102635A3 (en) | Branch target address cache storing two or more branch target addresses per index | |
WO2006096569A3 (en) | Forward looking branch target address caching | |
US8103831B2 (en) | Efficient method and apparatus for employing a micro-op cache in a processor | |
WO2007042482A3 (en) | Computer-implemented method and processing unit for predicting branch target addresses | |
WO2006125219A3 (en) | Caching instructions for a multiple-state processor | |
WO2010147857A3 (en) | Dependence prediction in a memory system | |
TW200604943A (en) | A completion table configured to track a larger number of outstanding instructions | |
WO2008042298A3 (en) | Data cache virtual hint way prediction, and applications thereof | |
WO2007124307A3 (en) | Virtually-tagged instruction cache with physically-tagged behavior | |
EP1624369A3 (en) | Apparatus for predicting multiple branch target addresses | |
GB2463828A (en) | Technique for preserving cached information during low power mode | |
DE60333483D1 (en) | PAGE SCRIPTORS FOR ADVANCE AND STORE MANAGEMENT | |
WO2009129161A3 (en) | Methods and systems for space management in data de-duplication | |
WO2005062167A3 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
WO2008042494A3 (en) | Data processing system having cache memory debugging support and method therefor | |
WO2008005825A3 (en) | Methods, systems, and computer program products for providing access to addressable entities using a non-sequential virtual address space | |
JP2009543223A5 (en) | ||
WO2008042784A3 (en) | Comparing taxonomies | |
WO2007050349A3 (en) | Lookup table addressing system and method | |
TW200719216A (en) | Call return stack way prediction repair | |
WO2009006113A3 (en) | Hierarchical cache tag architecture | |
EP1439460A3 (en) | Apparatus and method for invalidation of redundant entries in a branch target address cache | |
TW200713033A (en) | Handling cache miss in an instruction crossing a cache line boundary | |
WO2006051513A3 (en) | Cache with prefetch |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200780020445.4 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 07797948 Country of ref document: EP Kind code of ref document: A2 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2476/MUMNP/2008 Country of ref document: IN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2009514477 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2007797948 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: RU |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020097000082 Country of ref document: KR |