IP Library Granted Patent US 7,360,023
Granted Patent B2
US 7,360,023 · App. 10/675,432 · Granted Apr 15, 2008

Method and system for reducing power consumption in a cache memory

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,360,023
App. No.
10/675,432
Granted
Apr 15, 2008
Kind
B2
Abstract

A method and system are for reducing power consumption in a multi-way set-associative cache memory. During a first clock cycle, in response to an address, an associated set is identified in the cache memory. The address is compared to respective tag portions of blocks in the associated set, and a signal is output in response thereto. During a second clock cycle, in response to the signal indicating a match between one of the blocks and the address, a non-tag portion of the matching block in the associated set is read, while a non-matching block in the associated set is disabled.

Claims (55)

1. Apparatus for a Y-way set-associative cache memory (e.g., 32 ) having Y>1 blocks and X>1 sets, wherein each block y, 0≦y≦(Y−1), of each set x, 0≦x≦(X−1), is adapted to store an address tag (e.g., Tag xy ), a state (e.g., State xy ), and Z words (e.g., W xyz ), 0≦z≦(Z−1), the apparatus comprising:

first circuitry (e.g., 130 and 150 ) adapted to (1) receive a fetch address, (2) determine a set associated with the fetch address, (3) read Y address tags and Y states corresponding to the associated set, (4) determine which of the Y address tags are valid based on the Y states, (5) compare the fetch address to one or more valid address tags, and (6) generate, if one of the valid address tags matches the fetch address, a first control signal (e.g., 110 ) indicating that the block associated with the matching valid address tag is a matching block;

second circuitry (e.g., 132 , 138 a - d , and 134 a - d ) adapted to (1) receive the fetch address, (2) receive the first control signal generated by the first circuitry, (3) generate a second control signal (e.g., 126 e ) based on the first control signal and indicating the matching block, (4) generate block-enable control signals (e.g., 126 a - d ) for the cache memory, (5) apply the block-enable control signals to the cache memory, such that the matching block in the cache memory is enabled and the (Y−1) other blocks in the cache memory are at least partly disabled, and (6) apply the fetch address to the cache memory to read one or more associated words from the enabled matching block; and

third circuitry (e.g., 112 ) connected to an output of each block of the cache memory and adapted to (1) receive the second control signal generated by the second circuitry, (2) receive the one or more associated words from the enabled matching block, and (3) select the one or more associated words for output from the cache memory based on the second control signal, wherein:

the first circuitry comprises a first latch (e.g. 130 ) adapted to latch the fetch address;

the second circuitry comprises:

a second latch (e.g. 132 ) adapted to latch the first control signal and output the second control signal; and

a plurality of other latches (e.g., 134 a - d ) adapted to latch the block-enable control signals; and

the third circuitry comprises a multiplexer (e.g. 112 ) adapted to receive the outputs from the blocks and select the one or more associated words from the enabled matching block based on the second control signal from the second latch.

2. The invention of claim 1 , wherein power consumed by each of the (Y−1) at least partly disabled blocks is less than power consumed by the enabled matching block.

3. The invention of claim 1 , wherein:

during a clock cycle k:

the first circuitry (1) receives the fetch address, (2) determines the associated set, (3) reads the Y address tags and the Y states corresponding to the associated set, (4) determines the one or more valid address tags, (5) compares the fetch address to the one or more valid address tags, and (6) generates the first control signal; and

the second circuitry (1) receives the fetch address, (2) receives the first control signal, and (3) generates the block-enable control signals; and

during a next clock cycle k+1:

the second circuitry (1) generates the second control signal, (2) applies the block-enable control signals to the cache memory to enable the matching block and at least partly disable the (Y−1) other blocks and (3) applies the fetch address to the cache memory to read the one or more associated words from the enabled matching block; and

the third circuitry (1) receives the second control signal, (2) receives the one or more associated words from the enabled matching block, and (3) selects the one or more associated words for output from the cache memory based on the second control signal.

4. A method for operating a Y-way set-associative cache memory (e.g., 32 ) having Y>1 blocks and X>1 sets, wherein each block y, 0≦y≦(Y−1), of each set x, 0≦x≦(X−1), stores an address tag (e.g., Tag xy ), a state (e.g., State xy ), and Z words (e.g., W xyz ), 0≦z≦(Z−1), the method comprising:

(1) receiving a fetch address;

(2) determining a set associated with the fetch address;

(3) reading Y address tags and Y states corresponding to the associated set;

(4) determining which of the Y address tags are valid based on the Y states;

(5) comparing the fetch address to one or more valid address tags; and

(6) generating, if one of the valid address tags matches the fetch address, a first control signal (e.g., 110 ) indicating that the block associated with the matching valid address tag is a matching block;

(7) generating block-enable control signals (e.g., 126 a - d ) for the cache memory;

(8) generating a second control signal (e.g., 126 e ) based on the first control signal and indicating the matching block;

(9) applying the block-enable control signals to the cache memory, such that the matching block in the cache memory is enabled and the (Y−1) other blocks in the cache memory are at least partly disabled;

(10) applying the fetch address to the cache memory to read one or more associated words from the enabled matching block; and

(11) selecting the one or more associated words for output from the cache memory based on the second control signal, wherein:

step (1) comprises latching the fetch address;

step (7) comprises latching the block-enable control signals;

step (8) comprises latching the first control signal to output the second control signal; and

step (11) comprises muxing outputs from the blocks to select the one or more associated words from the enabled matching block based on the second control signal.

5. The invention of claim 4 , wherein power consumed by each of the (Y−1) at least partly disabled blocks is less than power consumed by the enabled matching block.

6. The invention of claim 4 , wherein:

a clock cycle k comprises (1) receiving the fetch address, (2) determining the associated set, (3) reading the Y address tags and the Y states corresponding to the associated set, (4) determining the one or more valid address tags, (5) comparing the fetch address to the one or more valid address tags, (6) generating the first control signal, and (7) generating the block-enable control signals; and

a next clock cycle k+1 comprises (8) generating the second control signal, (9) applying the block-enable control signals to the cache memory to enable the matching block and at least partly disable the (Y−1) other blocks, (10) applying the fetch address to the cache memory to read the one or more associated words from the enabled matching block, and (11) selecting the one or more associated words for output from the cache memory based on the second control signal.

7. A Y-way set-associative cache memory (e.g., 32 ) comprising:

Y>1 blocks and X>1 sets, wherein each block y, 0≦y≦(Y−1), of each set x, 0≦x≦(X−1), is adapted to store an address tag (e.g., Tag xy ), a state (e.g., State xy ), and Z words (e.g., W xyz ), 0≦z≦(Z−1);

first circuitry (e.g., 130 and 150 ) adapted to (1) receive a fetch address, (2) determine a set associated with the fetch address, (3) read Y address tags and Y states corresponding to the associated set, (4) determine which of the Y address tags are valid based on the Y states, (5) compare the fetch address to one or more valid address tags, and (6) generate, if one of the valid address tags matches the fetch address, a first control signal (e.g., 110 ) indicating that the block associated with the matching valid address tag is a matching block;

second circuitry (e.g., 132 , 138 a - d , and 134 a - d ) adapted to (1) receive the fetch address, (2) receive the first control signal generated by the first circuitry, (3) generate a second control signal (e.g., 126 e ) based on the first control signal and indicating the matching block, (4) generate block-enable control signals (e.g., 126 a - d ) for the cache memory, (5) apply the block-enable control signals to the cache memory, such that the matching block in the cache memory is enabled and the (Y−1) other blocks in the cache memory are at least partly disabled, and (6) apply the fetch address to the cache memory to read one or more associated words from the enabled matching block; and

third circuitry (e.g., 112 ) connected to an output of each block of the cache memory and adapted to (1) receive the second control signal generated by the second circuitry, (2) receive the one or more associated words from the enabled matching block, and (3) select the one or more associated words for output from the cache memory based on the second control signal, wherein:

the first circuitry comprises a first latch (e.g., 130 ) adapted to latch the fetch address;

the second circuitry comprises:

a second latch (e.g., 132 ) adapted to latch the first control signal and output the second control signal; and

a plurality of other latches (e.g., 134 a - d ) adapted to latch the block-enable control signals; and

the third circuitry comprises a multiplexer (e.g., 112 ) adapted to receive the outputs from the blocks and select the one or more associated words from the enabled matching block based on the second control signal from the second latch.

8. The invention of claim 7 , wherein power consumed by each of the (Y−1) at least partly disabled blocks is less than power consumed by the enabled matching block.

9. The invention of claim 7 , wherein:

during a clock cycle k:

the first circuitry (1) receives the fetch address, (2) determines the associated set, (3) reads the Y address tags and the Y states corresponding to the associated set, (4) determines the one or more valid address tags, (5) compares the fetch address to the one or more valid address tags, and (6) generates the first control signal; and

the second circuitry (1) receives the fetch address, (2) receives the first control signal, and (3) generates the block-enable control signals; and

during a next clock cycle k+1:

the second circuitry (1) generates the second control signal, (2) applies the block-enable control signals to the cache memory to enable the matching block and at least partly disable the (Y−1) other blocks and (3) applies the fetch address to the cache memory to read the one or more associated words from the enabled matching block; and

the third circuitry (1) receives the second control signal, (2) receives the one or more associated words from the enabled matching block, and (3) selects the one or more associated words for output from the cache memory based on the second control signal.

Assignments (18)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 12, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 041354/0148 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040652/0180 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: AGERE SYSTEMS LLC
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035365/0634 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →