IP Library Granted Patent US 11,467,966
Granted Patent B2
US 11,467,966 · App. 17/010,775 · Granted Oct 11, 2022

Cache memory having a programmable number of ways

Inventor: Bassam S Kamand (San Diego, CA)
Assignee: Shenzhen Goodix Technology Co., Ltd.
G06F12/0864G06F12/0646G06F12/084G06F12/0846G06F12/0875G06F12/0877G06F13/1689
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 11,467,966
App. No.
17/010,775
Granted
Oct 11, 2022
Kind
B2
Abstract

A cache memory is disclosed. The cache memory includes an instruction memory portion, a tag memory portion, and one or more peripheral circuits configured to receive a CPU address corresponding with an address of the RAM memory storing a particular CPU instruction. The one or more peripheral circuits are configured to receive a way quantity indication indicating of a number of ways into which the instruction memory portion and the tag memory portion are to be subdivided, the one or more peripheral circuits are configured to identify which bits of the CPU address form the tag portion based on the way quantity indication, and the one or more peripheral circuits are configured to determine whether the particular CPU instruction is stored in the cache memory based on the identified tag portion of the CPU address and tag data stored in the cache memory.

Claims (36)

1. A cache memory, comprising:

a memory block programmable to operate in a direct access mode or an M-ways mode responsive to a way quantity indication, the memory block comprising:

an instruction memory portion, wherein the instruction memory portion comprises a plurality of instruction memory locations each configured to store instruction data encoding a CPU instruction, the instruction memory portion arranged in a single column, such that each row corresponds to a single CPU instruction; and

a tag memory portion, wherein the tag memory portion comprises a plurality of tag memory locations each configured to store tag data encoding an address range of a RAM memory where one of the CPU instructions are stored; and

one or more peripheral circuits coupled with the memory block and configured to:

receive a CPU address corresponding with an address of the RAM memory storing a particular CPU instruction, wherein the CPU address has a plurality of bits divided into a tag portion and an index portion, the tag portion comprising tag data for the for the particular CPU instruction, and the index portion comprising memory address data for the cache memory;

receive the way quantity indication indicating an integer number (M) of ways into which the instruction memory portion and the tag memory portion are to be subdivided, M being 1 for the direct access mode, and M being greater than 1 for the M-ways mode;

responsive to M being 1, such that the way quantity indication indicates that the instruction memory portion and the tag memory portion are to be subdivided into a single way, read the instruction memory location of the instruction memory portion during a second time period during which an instruction clock is active, wherein the instruction memory location is identified by the index portion of the CPU address without data from the tag portion of the CPU address when M equals 1; and

responsive to M being greater than one, such that the way quantity indication indicates that the instruction memory portion and the tag memory portion are to be subdivided into a plurality of ways:

identify which bits of the CPU address form the tag portion based on the way quantity indication;

generate a hit condition indication signal, during a first time period during which a tag clock is active prior to the second time period, based on determining whether the particular CPU instruction is stored in the cache memory based on the identified tag portion and tag data stored in the cache memory;

read tag memory locations of the tag memory portion during the first time period, the read tag memory locations each identified with the index portion of the CPU address; and

read an instruction memory location of the instruction memory portion during the second time period, wherein the instruction memory location is identified by a combination of the tag address data read during the first time period and the index portion of the CPU address when M is greater than one.

2. The cache memory of claim 1 , wherein the one or more peripheral circuits are configured to identify which bits of the CPU address form the index portion based on the way quantity indication.

3. The cache memory of claim 2 , wherein, responsive to M being greater than one and determining that the particular CPU instruction is stored in the cache memory based on the identified tag portion and tag data stored in the cache memory, the one or more peripheral circuits are configured to read the cache memory to retrieve the particular CPU instruction using the index portion as cache memory address data.

4. The cache memory of claim 2 , wherein, in response to the way quantity indication indicating that the instruction memory portion and the tag memory portion are to be subdivided into a plurality of ways, the one or more peripheral circuits are configured to read the cache memory to retrieve the particular CPU instruction using the index portion and a portion of the tag portion as cache memory address data.

5. The cache memory of claim 2 , wherein, in response to the way quantity indication indicating that the instruction memory portion and the tag memory portion are to be subdivided into a single way, the one or more peripheral circuits are configured to read the cache memory to retrieve the particular CPU instruction using the index portion as cache memory address data without using the tag portion as cache memory address data.

6. The cache memory of claim 1 , wherein the one or more peripheral circuits comprise a peripheral comparison circuit configured to determine whether the particular CPU instruction is stored in the cache memory.

7. The cache memory of claim 1 , wherein the one or more peripheral circuits comprise a peripheral comparison circuit configured to, in response to the way quantity indication indicating that the instruction memory portion and the tag memory portion are to be subdivided into a plurality of ways, identify which of the plurality of ways of the instruction memory portion the particular CPU instruction is stored in.

8. A method of using a cache memory implemented as a memory block programmable to operate in a direct access mode or an M-ways mode responsive to a way quantity indication, the method comprising:

with an instruction memory portion of the cache memory, the instruction memory portion comprising a plurality of instruction memory locations, storing instruction data encoding a plurality of CPU instructions, the instruction memory portion arranged in a single column, such that each row corresponds to a single CPU instruction;

with a tag memory portion of the cache memory, the tag memory portion comprising a plurality of tag memory locations, storing tag data encoding address ranges of a RAM memory where the CPU instructions are stored;

with one or more peripheral circuits of the cache memory, receiving a CPU address corresponding with an address of the RAM memory storing a particular CPU instruction, wherein the CPU address has a plurality of bits divided into a tag portion and an index portion, the tag portion comprising tag data for the for the particular CPU instruction, and the index portion comprising memory address data for the cache memory;

with the one or more peripheral circuits, receiving the way quantity indication indicating an integer number (M) of ways into which the instruction memory portion and the tag memory portion are to be subdivided, M being 1 for the direct access mode, and M being greater than 1 for the M-ways mode;

with the one or more peripheral circuits, responsive to M being 1, such that the way quantity indication indicates that the instruction memory portion and the tag memory portion are to be subdivided into a single way, reading the instruction memory location of the instruction memory portion during a second time period during which an instruction clock is active, wherein the instruction memory location is identified by the index portion of the CPU address without data from the tag portion of the CPU address when M equals 1; and

with the one or more peripheral circuits, responsive to M being greater than one, such that the way quantity indication indicates that the instruction memory portion and the tag memory portion are to be subdivided into a plurality of ways:

identifying which bits of the CPU address form the tag portion based on the way quantity indication;

generating a hit condition indication signal, during a first time period during which a tag clock is active prior to the second time period, based on determining whether the particular CPU instruction is stored in the cache memory based on the identified tag portion and tag data stored in the cache memory;

reading tag memory locations of the tag memory portion during the first time period, the read tag memory locations each identified with the index portion of the CPU address; and

reading an instruction memory location of the instruction memory portion during the second time period, wherein the instruction memory location is identified by a combination of the tag address data read during the first time period and the index portion of the CPU address when M is greater than one.

9. The method of claim 8 , further comprising, with the one or more peripheral circuits, identifying which bits of the CPU address form the index portion based on the way quantity indication.

10. The method of claim 9 , further comprising, with the one or more peripheral circuits, responsive to M being greater than one and determining that the particular CPU instruction is stored in the cache memory based on the identified tag portion and tag data stored in the cache memory, reading the cache memory to retrieve the particular CPU instruction using the index portion as cache memory address data.

11. The method of claim 9 , further comprising, in response to the way quantity indication indicating that the instruction memory portion and the tag memory portion are to be subdivided into a plurality of ways, with the one or more peripheral circuits, reading the cache memory to retrieve the particular CPU instruction using the index portion and a portion of the tag portion as cache memory address data.

12. The method of claim 9 , further comprising, in response to the way quantity indication indicating that the instruction memory portion and the tag memory portion are to be subdivided into a single way, with the one or more peripheral circuits, reading the cache memory to retrieve the particular CPU instruction using the index portion as cache memory address data without using the tag portion as cache memory address data.

13. The method of claim 8 , wherein the one or more peripheral circuits comprise a peripheral comparison circuit, and the method further comprises, with the peripheral comparison circuit, determining whether the particular CPU instruction is stored in the cache memory.

14. The method of claim 8 , wherein the one or more peripheral circuits comprise a peripheral comparison circuit, and the method further comprises, with the peripheral comparison circuit, in response to the way quantity indication indicating that the instruction memory portion and the tag memory portion are to be subdivided into a plurality of ways, identifying which of the plurality of ways of the instruction memory portion the particular CPU instruction is stored in.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2021
From: GOODIX TECHNOLOGY INC.
To: SHENZHEN GOODIX TECHNOLOGY CO., LTD.
Reel/Frame 055011/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2020
From: KAMAND, BASSAM S
To: GOODIX TECHNOLOGY INC.
Reel/Frame 053679/0358 →
Continuity (1)
Related Publication 20220066933A1 · Mar 3, 2022