IP Library Granted Patent US 11,327,890
Granted Patent B1
US 11,327,890 · App. 16/425,435 · Granted May 10, 2022

Partitioning in a processor cache

Inventor: Shubhendu S. Mukherjee (Southborough, MA)
Assignee: MARVELL ASIA PTE, LTD.
G06F12/0848G06F12/0811G06F12/0897
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,327,890
App. No.
16/425,435
Granted
May 10, 2022
Kind
B1
Abstract

A network processor includes a memory subsystem serving a plurality of processor cores. The memory subsystem includes a hierarchy of caches. A mid-level instruction cache provides for caching instructions for multiple processor cores. Likewise, a mid-level data cache provides for caching data for multiple cores, and can optionally serve as a point of serialization of the memory subsystem. A low-level cache is partitionable into partitions that are subsets of both ways and sets, and each partition can serve an independent process and/or processor core.

Claims (29)

1. A method, comprising:

parsing a physical address of an uncached data block to determine a partition identifier (ID) and a tag, the tag being a component of the physical address and identifying a set partition, the physical address including a bit vector identifying a set number identifying a subset of the set partition;

comparing the partition ID against a partition table indicating at least one way partition and at least one set partition corresponding to the partition ID, the partition table indicating at least two of a plurality of sources that correspond to a common set partition and distinct way partitions;

determining, based on the partition table, a way partition at which to store the uncached data block, the way partition corresponding to a subset of columns of a cache;

determining, based on the partition table and the tag of the uncached data block, the set partition at which to store the uncached data block, the set partition corresponding to a subset of rows of the cache;

generating a cache address for the uncached data block, the cache address corresponding to an intersection of the way partition and the set partition; and

storing the uncached data block to the cache according to the cache address.

2. The method of claim 1 , wherein the cache is a shared cache that is accessed by the plurality of sources.

3. The method of claim 2 , wherein the plurality of sources each include a respective processor.

4. The method of claim 2 , wherein the plurality of sources each include a respective virtual function.

5. The method of claim 2 , wherein the partition table indicates at least two of the plurality of sources that correspond to a common way partition and distinct set partitions.

6. The method of claim 1 , wherein the address includes a bit vector identifying the set partition.

7. The method of claim 1 , wherein at least one set partition corresponding to the partition ID includes a plurality of set partitions, and wherein the tag identifies the set partition as a selected one of the plurality of set partitions.

8. The method of claim 7 , further comprising updating an entry of the partition table corresponding to the partition ID to indicate the set partition based on the tag.

9. A circuit, comprising:

a cache having a plurality of sets and a plurality of ways;

a storage unit storing a partition table; and

a controller configured to:

parse a physical address of an uncached data block to determine a partition identifier (ID) and a tag, the tag being a component of the physical address and identifying a set partition, the physical address including a bit vector identifying a set number identifying a subset of the set partition;

compare the partition ID against the partition table indicating at least one way partition and at least one set partition corresponding to the partition ID, the partition table indicating at least two of a plurality of sources that correspond to a common set partition and distinct way partitions;

determine, based on the partition table, a way partition at which to store the uncached data block, the way partition corresponding to a subset of columns of the cache;

determine, based on the partition table and the tag of the uncached data block, the set partition at which to store the uncached data block, the set partition corresponding to a subset of rows of the cache;

generate a cache address for the uncached data block, the address corresponding to an intersection of the way partition and the set partition; and

store the uncached data block to the cache according to the cache address.

10. The circuit of claim 9 , wherein the cache is a shared cache that is accessed by the plurality of sources.

11. The circuit of claim 10 , wherein the plurality of sources each include a respective processor.

12. The circuit of claim 10 , wherein the plurality of sources each include a respective virtual function.

13. The circuit of claim 10 , wherein the partition table indicates at least two of the plurality of sources that correspond to a common set partition and distinct way partitions.

14. The circuit of claim 9 , wherein the address includes a bit vector identifying the set partition.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2019
From: MUKHERJEE, SHUBHENDU S.
To: MARVELL SEMICONDUCTOR, INC.
Reel/Frame 049628/0819 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2019
From: MARVELL SEMICONDUCTOR, INC.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 049636/0597 →
Cited By (7)
US 12,189,535 US 12,210,457 US 12,224,950 US 12,231,401 US 12,468,644 US 12,487,927 US 12,580,834