← Back to Patent Explorer
US5752259A Expired / Lapsed US ⏱️ 0.0 years remaining

Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache

Assignee: Advanced Micro Devices Inc
•
Filing: 1996-03-26
•
Granted: 1998-05-12
•
Expires: 2016-03-26
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An apparatus including a banked instruction cache and a branch prediction unit is provided. The banked instruction cache allows multiple instruction fetch addresses (comprising consecutive instruction blocks from the predicted instruction stream being executed by the microprocessor) to be fetched concurrently. The instruction cache provides an instruction block corresponding to one of the multiple fetch addresses to the instruction processing pipeline of the microprocessor during each consecutive clock cycle, while additional instruction fetch addresses from the predicted instruction stream are fetched. Preferably, the instruction cache includes at least a number of banks equal to the number of clock cycles consumed by an instruction cache access. In this manner, instructions may be provided during each consecutive clock cycle even though instruction cache access time is greater than the clock cycle time of the microprocessor. Because consecutive instruction blocks from the instruction stream are fetched concurrently, the branch prediction unit stores a prediction for a non-consecutive instruction block with each instruction block. For example, for an instruction cache having a cache access time which is twice the clock cycle time, a prediction for the second consecutive instruction block following a particular instruction block within the predicted instruction stream is stored. When a pair of consecutive instruction blocks are fetched, predictions for a second pair of consecutive instruction blocks within the instruction stream subsequent to the pair of consecutive instruction blocks are formed from the branch prediction information stored with respect to the pair of consecutive instruction blocks.

Inventors

  • 👤 Thang M. Tran

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-04 15:13
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3802; G06F9/3814; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0864; G06F12/0875; G06F9/3804; G06F9/3806

Claims Analysis

Total Claims: 23
Claim 1
Independent Claim 166 words
An apparatus for providing instruction blocks in a microprocessor, comprising: an instruction cache having a cache access time greater than a clock cycle time employed by said microprocessor, said instruction cache including a plurality of banks wherein a particular instruction block is stored within one of said plurality of banks; and a branch prediction unit coupled to said instruction cache, wherein said branch prediction unit is configured to provide said instruction cache with a plurality of fetch addresses during a first clock cycle, said plurality of fetch addresses representing a portion of a predicted instruction stream, and wherein each of said plurality of fetch addresses accesses a different one of said plurality of banks; wherein said instruction cache is configured to provide a plurality of instruction blocks, and wherein each of said plurality of instruction blocks corresponds to one of said plurality of fetch addresses, and wherein said instruction cache is configured to provide said plurality of instruction blocks during a plurality of consecutive clock cycles.
Claim 2
Independent Claim 166 words
An apparatus for providing instruction blocks in a microprocessor, comprising: an instruction cache having a cache access time greater than a clock cycle time employed by said microprocessor, said instruction cache including a plurality of banks wherein a particular instruction block is stored within one of said plurality of banks; and a branch prediction unit coupled to said instruction cache, wherein said branch prediction unit is configured to provide said instruction cache with a plurality of fetch addresses during a first clock cycle, said plurality of fetch addresses representing a portion of a predicted instruction stream, and wherein each of said plurality of fetch addresses accesses a different one of said plurality of banks; wherein said instruction cache is configured to provide a plurality of instruction blocks, and wherein each of said plurality of instruction blocks corresponds to one of said plurality of fetch addresses, and wherein said instruction cache is configured to provide said plurality of instruction blocks during a plurality of consecutive clock cycles.
Claim 3
Dependent Claim 25 words
The apparatus as recited in claim 1 wherein said plurality of banks store alternate ones of a plurality of rows configured into said instruction cache.
Claim 4
Dependent Claim 60 words
The apparatus as recited in claim 1 wherein said branch prediction unit is configured to predict a second plurality of fetch addresses based upon said plurality of fetch addresses during said first clock cycle, and further configured to provide said second plurality of fetch addresses to said instruction cache during a second clock cycle subsequent to said first clock cycle.
Claim 5
Dependent Claim 25 words
The apparatus as recited in claim 3 wherein said second clock cycle occurs a number of consecutive clock cycles subsequent to said first clock cycle.
Claim 6
Dependent Claim 21 words
The apparatus as recited in claim 4 wherein said number is equal to a number of said plurality of fetch addresses.
Claim 7
Dependent Claim 34 words
The apparatus as recited in claim 3 wherein said branch prediction unit comprises a branch prediction storage configured to store a plurality of branch predictions corresponding to instruction blocks stored in said instruction cache.
Claim 8
Dependent Claim 52 words
The apparatus as recited in claim 6 wherein said branch prediction unit is configured to access said branch prediction storage with said plurality of fetch addresses, and wherein a plurality of said plurality of branch predictions received in response to said access are used to form said second plurality of fetch addresses.
Claim 9
Dependent Claim 69 words
The apparatus as recited in claim 7 wherein each one of said plurality of branch predictions is indexed within said branch prediction storage by one of said plurality of fetch addresses, and wherein said one of said plurality of branch predictions corresponds to a first instruction block, and wherein said first instruction block is non-consecutive with said one of said plurality of fetch addresses within said predicted instruction stream.
Claim 10
Dependent Claim 80 words
The apparatus as recited in claim 7 wherein said branch prediction unit further comprises a control unit coupled to receive said plurality of branch predictions from said branch prediction storage, and wherein said control unit is configured to form said second plurality of fetch addresses, and wherein each one of said second plurality of fetch addresses is formed from one of said plurality of branch predictions if said plurality of branch predictions access different ones of said plurality of banks.
Claim 11
Dependent Claim 39 words
The apparatus as recited in claim 9 wherein said control unit is further configured to detect a bank conflict between a first one of said plurality of branch predictions and a second one of said plurality of branch predictions.
Claim 12
Dependent Claim 21 words
The apparatus as recited in claim 1 wherein said cache access time comprises an integer multiple of said clock cycle time.
Claim 13
Dependent Claim 16 words
The apparatus as recited in claim 11 wherein said integer multiple is a power of two.
Claim 14
Independent Claim 136 words
A method for providing instruction blocks in a microprocessor, comprising: fetching a first plurality of addresses from an instruction cache during a first clock cycle, said instruction cache having a cache access time greater than a clock cycle time of said microprocessor, wherein each of said first plurality of addresses accesses a different one of a plurality of banks configured into said instruction cache; predicting a second plurality of addresses based upon said first plurality of addresses; checking said second plurality of addresses for bank conflicts, and modifying certain ones of said second plurality of addresses to eliminate bank conflicts; and providing a plurality of instruction blocks corresponding to said first plurality of addresses to said microprocessor, wherein each of said plurality of instruction blocks is provided during one of a plurality of consecutive clock cycles.
Claim 15
Independent Claim 136 words
A method for providing instruction blocks in a microprocessor, comprising: fetching a first plurality of addresses from an instruction cache during a first clock cycle, said instruction cache having a cache access time greater than a clock cycle time of said microprocessor, wherein each of said first plurality of addresses accesses a different one of a plurality of banks configured into said instruction cache; predicting a second plurality of addresses based upon said first plurality of addresses; checking said second plurality of addresses for bank conflicts, and modifying certain ones of said second plurality of addresses to eliminate bank conflicts; and providing a plurality of instruction blocks corresponding to said first plurality of addresses to said microprocessor, wherein each of said plurality of instruction blocks is provided during one of a plurality of consecutive clock cycles.
Claim 16
Dependent Claim 31 words
The method as recited in claim 13 wherein a particular one of said second plurality of addresses is predicted in response to a particular one of said first plurality of addresses.
Claim 17
Dependent Claim 38 words
The method as recited in claim 14 wherein said particular one of said first plurality of addresses and said particular one of said second plurality of addresses are non-consecutive in an instruction stream being executed by said microprocessor.
Claim 18
Dependent Claim 21 words
The method as recited in claim 13 wherein said cache access time comprises an integer multiple of said clock cycle time.
Claim 19
Dependent Claim 156 words
A microprocessor, comprising: an instruction cache having a cache access time greater than a clock cycle time employed by said microprocessor, said instruction cache including a plurality of banks wherein a particular instruction block is stored within one of said plurality of banks; a branch prediction unit coupled to said instruction cache, wherein said branch prediction unit is configured to provide said instruction cache with a plurality of fetch addresses during a first clock cycle, said plurality of fetch addresses representing a portion of a predicted instruction stream, and wherein each of said plurality of fetch addresses accesses a different one of said plurality of banks; and an instruction scan and decode unit coupled to receive a plurality of instructions from a plurality of instruction blocks corresponding to said plurality of fetch addresses, wherein said instruction scan and decode unit is configured to provide a plurality of decoded instructions in response to said plurality of instructions.
Claim 20
Dependent Claim 156 words
A microprocessor, comprising: an instruction cache having a cache access time greater than a clock cycle time employed by said microprocessor, said instruction cache including a plurality of banks wherein a particular instruction block is stored within one of said plurality of banks; a branch prediction unit coupled to said instruction cache, wherein said branch prediction unit is configured to provide said instruction cache with a plurality of fetch addresses during a first clock cycle, said plurality of fetch addresses representing a portion of a predicted instruction stream, and wherein each of said plurality of fetch addresses accesses a different one of said plurality of banks; and an instruction scan and decode unit coupled to receive a plurality of instructions from a plurality of instruction blocks corresponding to said plurality of fetch addresses, wherein said instruction scan and decode unit is configured to provide a plurality of decoded instructions in response to said plurality of instructions.
Claim 21
Dependent Claim 43 words
The microprocessor as recited in claim 17 wherein said instruction scan and decode unit is configured to detect an unpredicted branch instruction, and wherein said instruction scan and decode unit is configured to notify said branch prediction unit of said unpredicted branch instruction.
Claim 22
Dependent Claim 44 words
The microprocessor as recited in claim 17 further comprising a plurality of functional units coupled to receive said plurality of decoded instructions from said instruction scan and decode unit, wherein said plurality of functional units are configured to execute said plurality of decoded instructions.
Claim 23
Dependent Claim 48 words
The microprocessor as recited in claim 19 wherein said plurality of functional units are further configured to detect a mispredicted branch instruction within said plurality of decoded instructions, and wherein said plurality of functional units are configured to notify said branch prediction unit of said mispredicted branch instruction.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-05-11 2001-11-10 2002-05-12 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-05-11 2005-11-10 2006-05-12 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-05-11 2009-11-10 2010-05-12 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag