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

Fast tag compare and bank select in set associative cache

Assignee: Hewlett Packard Development Co LP
•
Filing: 1991-11-19
•
Granted: 1994-10-04
•
Expires: 2011-11-19
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A tag comparator and bank selector for a set-associative cache in a computer system operates in a minimum time so that a cache hit or miss signal is generated early in a memory cycle. The data memory of the cache has two (or more) banks, with a tag store for each bank, and the two banks are accessed separately and in parallel using the index (low order address bits) while the tag translation is in progress. Two bit-by-bit tag compares are performed, one for each tag store, producing two multibit match indications, one bit for each tag bit in each tag store. These two match indications are applied to two separate dynamic NOR gates, and the two outputs applied to a logic circuit to detect a hit and generate a bank-select output. There are four possible outcomes from the compare operation: both banks miss, left bank hits, right bank hits, and both banks hit. The later condition indicates a possible ambiguity, and neither data item should be used, so a miss is signalled. The comparator is in large part self-timed using a flow-through design, as distinguished from being enabled on clock edges. Delay elements in the bank select logic allow the banks to be timed against each other, and current limiters are employed to equalize the timing of miss signals, regardless of the number of match lines switching high (which is data dependent). An address producing 19-of-20 match bits will result in a NOR gate output of about the same timing as an address producing no match bits, even though the former will turn on only one transistor to discharge the precharged output node of the NOR gate, whereas the later will turn on twenty paths for discharge. Although a two-way set associative cache is shown herein as an example embodiment, one of the features of the invention is that higher levels of associativity, e.g., four-way and eight-way, are equally well accommodated.

Inventors

  • 👤 Hamid Partovi
  • 👤 William R. Wheeler
  • 👤 Michael Leary
  • 👤 Michael A. Case
  • 👤 Steven Butler
  • 👤 Rajesh Khanna

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-31 19:09
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0893; G06F12/0895; G06F12/0864

Claims Analysis

Total Claims: 18
Claim 1
Independent Claim 377 words
A tag compare circuit for detecting comparison of tags in a set-associative cache having a plurality of banks, comprising: first and second comparators, each of the comparators receiving a tag value from a processor, said first comparator receiving a first stored tag for a first of said plurality of banks and producing a plurality of first match-bit signals, said second comparator receiving a second stored tag for a second of said plurality of banks and producing a plurality of second match-bit signals, the tag value, the first stored tag and the second stored tags, each including multiple address bits; first and second NOR gates, the first NOR gate receiving said first match-bit signals at a plurality of inputs and producing a first output responsive to whether all of said first match-bit signals indicate a match between all bits of said tag value and said first stored tag, the second NOR gate receiving said second match-bit signals at a plurality of inputs and producing a second output responsive to whether all of said second match-bit signals indicate a match between all bits of said tag value and said second stored tag; a bank selector receiving said first and second outputs, said bank selector generating a first bank select signal to said first bank if said first and second outputs indicate that said tag value matches said first stored tag and does not match said second stored tag, said bank selector generating a second bank select signal to said second bank if said first and second outputs indicate that said tag value matches said second stored tag and does not match said first stored, said bank selector including first and second NAND gates and first and second inverters, said first output being connected to an input of said first NAND gate and connected through said first inverter to an input of said second NAND gate, said second output being connected to an input of said second NAND gate and connected through said second inverter to an input of said first NAND gate, each of said first and second inverters introducing a delay to provide a margin in self-timed paths of signals on said first output of said first NOR gate and said second output on said second NOR gate.
Claim 2
Dependent Claim 377 words
A tag compare circuit for detecting comparison of tags in a set-associative cache having a plurality of banks, comprising: first and second comparators, each of the comparators receiving a tag value from a processor, said first comparator receiving a first stored tag for a first of said plurality of banks and producing a plurality of first match-bit signals, said second comparator receiving a second stored tag for a second of said plurality of banks and producing a plurality of second match-bit signals, the tag value, the first stored tag and the second stored tags, each including multiple address bits; first and second NOR gates, the first NOR gate receiving said first match-bit signals at a plurality of inputs and producing a first output responsive to whether all of said first match-bit signals indicate a match between all bits of said tag value and said first stored tag, the second NOR gate receiving said second match-bit signals at a plurality of inputs and producing a second output responsive to whether all of said second match-bit signals indicate a match between all bits of said tag value and said second stored tag; a bank selector receiving said first and second outputs, said bank selector generating a first bank select signal to said first bank if said first and second outputs indicate that said tag value matches said first stored tag and does not match said second stored tag, said bank selector generating a second bank select signal to said second bank if said first and second outputs indicate that said tag value matches said second stored tag and does not match said first stored, said bank selector including first and second NAND gates and first and second inverters, said first output being connected to an input of said first NAND gate and connected through said first inverter to an input of said second NAND gate, said second output being connected to an input of said second NAND gate and connected through said second inverter to an input of said first NAND gate, each of said first and second inverters introducing a delay to provide a margin in self-timed paths of signals on said first output of said first NOR gate and said second output on said second NOR gate.
Claim 3
Dependent Claim 47 words
A circuit according to claim 1 wherein said bank selector includes first and second gates for generating said first and second bank select signals, said first gate receives said second output through a delay element, and said second gate receives said first output through a delay element.
Claim 4
Dependent Claim 44 words
A circuit according to claim 1 wherein said first output of said first NOR gate is precharged prior to said first match-bit signals being valid and said second output of said second NOR gate is precharged prior to said second match-bit signals being valid.
Claim 5
Dependent Claim 68 words
A circuit according to claim 1 wherein said first NOR gate is comprised of N-channel transistors having gates connected to receive said first match-bit signals and having source-drains paths in series with a first current limiting transistor and said second NOR gate is comprised of N-channel transistors having gates connected to receive said second match-bit signals and having source-drains paths in series with a second current limiting transistor.
Claim 6
Dependent Claim 27 words
A circuit according to claim 4 wherein each of said first current limiting transistor and said second current limiting transistor is gated on by a compare-enable signal.
Claim 7
Dependent Claim 48 words
A circuit according to claim 1 wherein said first match-bit signals are predischarged prior to said first stored tag being valid at inputs of said first comparator and said second match-bit signals are predischarged prior to said second stored tag being valid at inputs of said second comparator.
Claim 8
Dependent Claim 35 words
A circuit according to claim 1 including means for disabling one of said first and second outputs and enabling an opposite bank in order to write to said set-associative cache for a cache fill operation.
Claim 9
Dependent Claim 126 words
A circuit according to claim 1 wherein said first comparator includes four first pairs of complementary transistors, each first pair having source-drains paths in series connected between an output node and a terminal of a voltage supply, and gates of each first pair being connected to said tag value or said tag value inverted, and to said first stored tag or said first stored tag inverted and said second comparator includes four second pairs of complementary transistors, each second pair having source-drains paths in series connected between an output node and a terminal of a voltage supply, and gates of each second pair being connected to said tag value or said tag value inverted, and to said second stored tag or said second stored tag inverted.
Claim 10
Dependent Claim 37 words
A circuit according to claim I wherein said first and second bank select signals are applied to first and second gates, respectively, to connect said first and second banks for data transfer to or from a processor.
Claim 11
Independent Claim 387 words
A method of operating a set-associative cache having a plurality of banks, comprising the steps of: comparing a tag value received from a processor with a first stored tag received from a first of said plurality of banks and producing a plurality of first match-bit signals; comparing said tag value with a second stored tag received from a second of said plurality of banks and producing a plurality of second match-bit signals; generating in a first NOR gate a first output responsive to whether all of said first match-bit signals indicate a match between all bits of said tag value and said first stored tag, the first NOR gate receiving said first match-bit signals at a plurality of inputs; generating in a second NOR gate a second output responsive to whether all of said second match-bit signals indicate a match between all bits of said tag value and said second stored tag, the second NOR gate receiving said second match-bit signals at a plurality of inputs; generating either a first or a second bank select signal in response to said first and second outputs, said first and second outputs being received by a bank selector, the bank selector including first and second NAND gates and first and second inverters, said first output being connected to an input of said first NAND gate and connected through said first inverter to an input of said second NAND gate, said second output being connected to an input of said second NAND gate and connected through said second inverter to an input of said first NAND gate, each of said first and second inverters introducing a delay to provide a margin in self-timed paths of signals on said first output of said first NOR gate and said second output of said second NOR gate, said first bank select signal being generated if said first and second outputs indicate that said tag value matches said first stored tag and does not match said second stored tag, said second bank select signal being generated if said first and second outputs indicate that said tag value matches said second stored tag and does not match said first stored tag; and coupling data to or from said processor from either said first or second banks in response to said first or second bank select signals.
Claim 12
Independent Claim 387 words
A method of operating a set-associative cache having a plurality of banks, comprising the steps of: comparing a tag value received from a processor with a first stored tag received from a first of said plurality of banks and producing a plurality of first match-bit signals; comparing said tag value with a second stored tag received from a second of said plurality of banks and producing a plurality of second match-bit signals; generating in a first NOR gate a first output responsive to whether all of said first match-bit signals indicate a match between all bits of said tag value and said first stored tag, the first NOR gate receiving said first match-bit signals at a plurality of inputs; generating in a second NOR gate a second output responsive to whether all of said second match-bit signals indicate a match between all bits of said tag value and said second stored tag, the second NOR gate receiving said second match-bit signals at a plurality of inputs; generating either a first or a second bank select signal in response to said first and second outputs, said first and second outputs being received by a bank selector, the bank selector including first and second NAND gates and first and second inverters, said first output being connected to an input of said first NAND gate and connected through said first inverter to an input of said second NAND gate, said second output being connected to an input of said second NAND gate and connected through said second inverter to an input of said first NAND gate, each of said first and second inverters introducing a delay to provide a margin in self-timed paths of signals on said first output of said first NOR gate and said second output of said second NOR gate, said first bank select signal being generated if said first and second outputs indicate that said tag value matches said first stored tag and does not match said second stored tag, said second bank select signal being generated if said first and second outputs indicate that said tag value matches said second stored tag and does not match said first stored tag; and coupling data to or from said processor from either said first or second banks in response to said first or second bank select signals.
Claim 13
Dependent Claim 45 words
A method according to claim 10 including the step of precharging said first output of said first NOR gate prior to said first match-bit signals being valid and precharging said second output of said second NOR gate prior to said second match-bit signals being valid.
Claim 14
Dependent Claim 50 words
A method according to claim 11 including the step of predischarging said first match-bit signals prior to said first stored tag being valid at said inputs of said first comparator and predischarging said second match-bit signals prior to said second stored tag being valid at inputs of said second comparator.
Claim 15
Independent Claim 411 words
A method of operating a computer system having a set-associative cache, comprising the steps of: comparing a tag value received from a processor in said computer system with a first stored tag received from a first bank of said set-associative cache and producing a plurality of first match-bit signals; comparing said tag value with a second stored tag received from a second bank of said set-associative cache and producing a plurality of second match-bit signals; comparing said tag value with a second stored tag received from a second bank of said cache and producing a plurality of second match-bit signals; generating in a first gate a first output responsive to whether all of said first match-bit signals indicate a match between all bits of said tag value and said first stored tag, the first gate receiving said first match-bit signals at a plurality of inputs; generating in a second state a second output responsive to whether all of said second match-bit signals indicate a match between all bits of said tag value and said second stored tag, the second gate receiving said second match-bit signals at a plurality of inputs; generating either a first or a second bank select signal in response to said first and second outputs, said first and second outputs being received by a bank selector, the bank selector including first and second NAND gates and first and second inverters, said first output being connected to an input of said first NAND gate and connected through said first inverter to an input of said second NAND gate, said second output being connected to an input of said second NAND gate and connected through said second inverter to an input of said first NAND gate, each of said first and second inverters introducing a delay to provide a margin in self-timed paths of signals on said first output of said first NOR gate and said second output of said second NOR gate, said first bank select signal being generated if said first and second outputs indicate that said tag value matches said first stored tag and does not match said second stored tag, said second bank select signal being generated if said first and second outputs indicate that said tag value matches said second stored tag and does not match said first stored tag; and coupling data to or from said processor from either said first or second banks in response to said first or second bank select signals.
Claim 16
Independent Claim 411 words
A method of operating a computer system having a set-associative cache, comprising the steps of: comparing a tag value received from a processor in said computer system with a first stored tag received from a first bank of said set-associative cache and producing a plurality of first match-bit signals; comparing said tag value with a second stored tag received from a second bank of said set-associative cache and producing a plurality of second match-bit signals; comparing said tag value with a second stored tag received from a second bank of said cache and producing a plurality of second match-bit signals; generating in a first gate a first output responsive to whether all of said first match-bit signals indicate a match between all bits of said tag value and said first stored tag, the first gate receiving said first match-bit signals at a plurality of inputs; generating in a second state a second output responsive to whether all of said second match-bit signals indicate a match between all bits of said tag value and said second stored tag, the second gate receiving said second match-bit signals at a plurality of inputs; generating either a first or a second bank select signal in response to said first and second outputs, said first and second outputs being received by a bank selector, the bank selector including first and second NAND gates and first and second inverters, said first output being connected to an input of said first NAND gate and connected through said first inverter to an input of said second NAND gate, said second output being connected to an input of said second NAND gate and connected through said second inverter to an input of said first NAND gate, each of said first and second inverters introducing a delay to provide a margin in self-timed paths of signals on said first output of said first NOR gate and said second output of said second NOR gate, said first bank select signal being generated if said first and second outputs indicate that said tag value matches said first stored tag and does not match said second stored tag, said second bank select signal being generated if said first and second outputs indicate that said tag value matches said second stored tag and does not match said first stored tag; and coupling data to or from said processor from either said first or second banks in response to said first or second bank select signals.
Claim 17
Dependent Claim 22 words
A method according to claim 13 wherein said first NOR gate and said second NOR gate are each made of N-channel transistors.
Claim 18
Dependent Claim 16 words
A method according to claim 14 including the step of limiting current through said N-channel transistors.

References Cited (Backward Citations)

US4783736A Cited
US4953073A Cited
US4914577A Cited
US5210843A Cited
US5148536A Cited
US5014195A Cited

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag