Patent US1454573A successfully refreshed from Google Patents.
Patent US5805877A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5805877A Expired / Lapsed US ⏱️ 0.0 years remaining

Data processor with branch target address cache and method of operation

Assignee: NXP USA Inc
•
Filing: 1996-09-23
•
Granted: 1998-09-08
•
Expires: 2016-09-23
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A data processor (10) has a BTAC (48) storing a number of recently encountered fetch address-target address pairs. A branch unit (20) generates a fetch address that depends upon a condition precedent and a received branch instruction. After executing each branch instruction, the branch unit predicts whether the condition precedent will be met the next time it encounters the same branch instruction. If the predicted value of the condition precedent would cause the branch to be taken, then the branch unit adds the fetch address-target address pair corresponding to the branch instruction to the BTAC. If the predicted value of the condition precedent would cause the branch to be not taken, then the branch unit deletes the fetch address-target address pair corresponding to the branch instruction from the BTAC.

Inventors

  • 👤 Bryan P. Black
  • 👤 Marvin A. Denman, Jr.
  • 👤 Seungyoon Peter Song

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 05:20
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3802; G06F9/3804; G06F9/3806; G06F9/3836; G06F9/3842; G06F9/3844

Claims Analysis

Total Claims: 17
Claim 1
Independent Claim 172 words
A data processor with a branch target address cache, the data processor comprising: a branch target address cache storing a plurality of sets, each one of the plurality of sets comprising a fetch address and a target address, the branch target address cache outputting a target address of a selected one of the plurality of sets if the fetch address of the selected one of the plurality of sets is logically equivalent to a first subset of an input address; a branch unit coupled to the branch target address cache, the branch unit generating an execution fetch address responsive to a received instruction and to a value of a condition precedent at a first time, the received instruction stored in a memory location identified by the input address, the branch unit storing the execution fetch address and a subset of the input address in the branch target address cache if a predicted value of the condition precedent at a subsequent time to the first time is logically equivalent to a predetermined value.
Claim 2
Dependent Claim 172 words
A data processor with a branch target address cache, the data processor comprising: a branch target address cache storing a plurality of sets, each one of the plurality of sets comprising a fetch address and a target address, the branch target address cache outputting a target address of a selected one of the plurality of sets if the fetch address of the selected one of the plurality of sets is logically equivalent to a first subset of an input address; a branch unit coupled to the branch target address cache, the branch unit generating an execution fetch address responsive to a received instruction and to a value of a condition precedent at a first time, the received instruction stored in a memory location identified by the input address, the branch unit storing the execution fetch address and a subset of the input address in the branch target address cache if a predicted value of the condition precedent at a subsequent time to the first time is logically equivalent to a predetermined value.
Claim 3
Dependent Claim 35 words
The data processor of claim 1 wherein the branch unit further comprises a counter register storing a number, the number being the condition precedent if the received instruction is a first type of branch instruction.
Claim 4
Dependent Claim 21 words
The data processor of claim 2 wherein the branch unit decrements the number responsive to the execution of the received instruction.
Claim 5
Dependent Claim 149 words
The data processor of claim 3 further comprising: a condition register coupled to the branch unit, the condition register storing a bit, the bit being the condition precedent if the received instruction is a second type of branch instruction; a branch history table storing a plurality of history states, each one of history states indexed by a differing one of a plurality of indices, the branch history table outputting one of the plurality of history states if the one of the plurality of indices of the one of the history states is logically equivalent to a second subset of the input address; a sequencer unit coupled to the branch history table, the sequencer unit generating a decode fetch address responsive to the one of the plurality of history states; and wherein the branch unit modifies the one of the plurality of history states responsive to the execution fetch address.
Claim 6
Dependent Claim 149 words
The data process of claim 1 further comprising: a condition register coupled to the branch unit, the condition register storing a bit, the bit being the condition precedent if the received instruction is a second type of branch instruction; a branch history table storing a plurality of history states, each one of history states indexed by a differing one of a plurality of indices, the branch history table outputting one of the plurality of history states if the one of the plurality of indices of the one of the history states is logically equivalent to a second subset of the input address; a sequencer unit coupled to the branch history table, the sequencer unit generating a decode fetch address responsive to the one of the plurality of history states; and wherein the branch unit modifies the one of the plurality of history states responsive to the execution fetch address.
Claim 7
Dependent Claim 335 words
A data processor with a branch target address cache, the data processor comprising: a branch target address cache storing a plurality of sets, each one of the plurality of sets comprising a fetch address and a target address, the branch target address cache outputting a target address of a selected one of the plurality of sets if the fetch address of the selected one of the plurality of sets is logically equivalent to a first subset of an input address; a branch history table storing a plurality of history states, each one of history states indexed by a differing one of a plurality of indices, the branch history table outputting one of the plurality of history states if the one of the plurality of indices of the one of the history states is logically equivalent to a second subset of the input address; a sequencer unit coupled to the branch history table, the sequencer unit generating a decode fetch address responsive to the one of the plurality of history states; a branch unit coupled to the branch target address cache, the branch unit generating an execution fetch address responsive to a received instruction and to a value of a condition precedent at a first time, the received instruction stored in a memory location identified by the input address, the branch unit storing the execution fetch address and a subset of the input address in the branch target address cache if a predicted value of the condition precedent at a subsequent time to the first time is logically equivalent to a predetermined value, the branch unit modifying the one of the plurality of history states responsive to the execution fetch address; a condition register coupled to the branch unit, the condition register storing a bit, the bit being the condition precedent if the received instruction is a first type of branch instruction; and a counter register storing a number, the number being the condition precedent if the received instruction is a second type of branch instruction.
Claim 8
Dependent Claim 335 words
A data processor with a branch target address cache, the data processor comprising: a branch target address cache storing a plurality of sets, each one of the plurality of sets comprising a fetch address and a target address, the branch target address cache outputting a target address of a selected one of the plurality of sets if the fetch address of the selected one of the plurality of sets is logically equivalent to a first subset of an input address; a branch history table storing a plurality of history states, each one of history states indexed by a differing one of a plurality of indices, the branch history table outputting one of the plurality of history states if the one of the plurality of indices of the one of the history states is logically equivalent to a second subset of the input address; a sequencer unit coupled to the branch history table, the sequencer unit generating a decode fetch address responsive to the one of the plurality of history states; a branch unit coupled to the branch target address cache, the branch unit generating an execution fetch address responsive to a received instruction and to a value of a condition precedent at a first time, the received instruction stored in a memory location identified by the input address, the branch unit storing the execution fetch address and a subset of the input address in the branch target address cache if a predicted value of the condition precedent at a subsequent time to the first time is logically equivalent to a predetermined value, the branch unit modifying the one of the plurality of history states responsive to the execution fetch address; a condition register coupled to the branch unit, the condition register storing a bit, the bit being the condition precedent if the received instruction is a first type of branch instruction; and a counter register storing a number, the number being the condition precedent if the received instruction is a second type of branch instruction.
Claim 9
Dependent Claim 21 words
The data processor of claim 6 wherein the branch unit decrements the number responsive to the execution of the received instruction.
Claim 10
Independent Claim 174 words
A method of operating a data processor comprising the steps of: during a first time period, receiving an input address of an instruction in a branch target address cache; first outputting a target address of a selected one of a plurality of sets if a fetch address of the selected one of the plurality of sets is logically equivalent to a first subset of the input address, each one of the plurality of sets comprising a fetch address and a target address; during a second time period, receiving the instruction in a branch unit coupled to the branch target address cache; generating an execution fetch address responsive to the instruction and to a value of a condition precedent, the instruction stored in a memory location identified by the input address; and first storing the execution fetch address and a subset of the input address in the branch target address cache if a predicted value of the condition precedent at a subsequent time to the first time period is logically equivalent to a predetermined value.
Claim 11
Independent Claim 174 words
A method of operating a data processor comprising the steps of: during a first time period, receiving an input address of an instruction in a branch target address cache; first outputting a target address of a selected one of a plurality of sets if a fetch address of the selected one of the plurality of sets is logically equivalent to a first subset of the input address, each one of the plurality of sets comprising a fetch address and a target address; during a second time period, receiving the instruction in a branch unit coupled to the branch target address cache; generating an execution fetch address responsive to the instruction and to a value of a condition precedent, the instruction stored in a memory location identified by the input address; and first storing the execution fetch address and a subset of the input address in the branch target address cache if a predicted value of the condition precedent at a subsequent time to the first time period is logically equivalent to a predetermined value.
Claim 12
Dependent Claim 40 words
The method of claim 8 further comprising the step of second storing a number in a counter register coupled to the branch unit, the number being the condition precedent if the received instruction is a first type of branch instruction.
Claim 13
Dependent Claim 21 words
The method of claim 9 further comprising the step of decrementing the number responsive to the execution of the received instruction.
Claim 14
Dependent Claim 144 words
The method of claim 10 further comprising the steps of: during a third time period prior to the second time period, a second outputting of a history state from a branch history table, the branch history table storing a plurality of history states, each one of history states indexed by a differing one of a plurality of indices, the branch history table outputting one of the plurality of history states if the one of the plurality of indices of the one of the history states is logically equivalent to a second subset of the input address; a sequencer unit coupled to the branch history table, the sequencer unit generating a decode fetch address responsive to the one of the plurality of history states; and during the second time period, modifying the one of the plurality of history states responsive to the execution fetch address.
Claim 15
Dependent Claim 48 words
The method of claim 11 further comprising the step of reading a logic state in a condition register by the branch unit, the condition register coupled to the branch unit, the logic state being the condition precedent if the received instruction is a second type of branch instruction.
Claim 16
Dependent Claim 144 words
The method of claim 8 further comprising the steps of: during a third time period prior to the second time period, a second outputting of a history state from a branch history table, the branch history table storing a plurality of history states, each one of history states indexed by a differing one of a plurality of indices, the branch history table outputting one of the plurality of history states if the one of the plurality of indices of the one of the history states is logically equivalent to a second subset of the input address; a sequencer unit coupled to the branch history table, the sequencer unit generating a decode fetch address responsive to the one of the plurality of history states; and during the second time period, modifying the one of the plurality of history states responsive to the execution fetch address.
Claim 17
Dependent Claim 48 words
The method of claim 13 further comprising the step of reading a logic state in a condition register by the branch unit, the condition register coupled to the branch unit, the logic state being the condition precedent if the received instruction is a second type of branch instruction.

References Cited (Backward Citations)

US4200927A Cited
EP0227892A2 Cited
US5101341A Cited
US5230068A Cited
US5442756A Cited

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag