# US 12,216,590 B2 · Intermediate cache management for non-uniform memory architecture

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,216,590 B2
- Document ID: US12216590B2
- Status: Granted
- Kind: B2
- Application number: 18/208,059
- Filed: 2023-06-09
- Published: 2024-12-12
- Granted: 2025-02-04
- Earliest claimed: 2023-06-09
- Assignees: Advanced Micro Devices, Inc.; ATI Technologies ULC
- Applicants: Advanced Micro Devices, Inc.; Ati Technologies Ulc
- Inventors: Saurabh Sharma; Hashem Hashemi; Guennadi Riguer
- Web page: https://patentgrep.com/patent/US12216590B2

## CPC

- G06F 12/126: with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F 12/0811: with multilevel cache hierarchies
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A cache controller of a processing system implementing a non-uniform memory architecture (NUMA) adjusts a cache replacement priority of local and non-local data stored at a cache based on a cache replacement policy. Local data is data that is accessed by the cache via a local memory channel and non-local data is data that is accessed by the cache via a non-local memory channel. The cache controller assigns priorities to local and non-local data stored at the cache based on a cache replacement policy and selects data for replacement at the cache based, at least in part, on the assigned priorities.

## Claims

### Claim 1

A method comprising:
assigning, based on a cache replacement policy, a priority of local data stored at a cache of a processing system, wherein the local data comprises data accessed from a local memory via a local memory channel, and a priority of non-local data stored at the cache, wherein the non-local data comprises data accessed from a non-local memory via a non-local memory channel;
adjusting the priority of local data stored at the cache and the priority of non-local data stored at the cache based on a proportion of local data to non-local data stored at the cache; and
selecting data for replacement at the cache based on the assigned priorities.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
periodically measuring an amount of local data stored at the cache and an amount of non-local data stored at the cache.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
increasing the priority of non-local data in response to an amount of non-local data stored at the cache exceeding an amount of local data stored at the cache by more than a first threshold amount.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
increasing the priority of local data in response to an amount of local data stored at the cache exceeding an amount of non-local data stored at the cache by more than a second threshold amount.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
assigning equal priorities to local data and non-local data stored the cache in response to an amount of non-local data stored at the cache not exceeding an amount of local data stored at the cache by a first threshold amount and the amount of local data stored at the cache not exceeding the amount of non-local data stored at the cache by more than a second threshold amount.

### Claim 6 (depends on 5)

The method of claim 5, wherein the first threshold amount is equal to the second threshold amount.

### Claim 7 (depends on 1)

The method of claim 1, wherein assigning is based on an application executing at the processing system.

### Claim 8

A processing system comprising:
a cache configured to store local data accessed from a local memory via a local memory channel and non-local data accessed from a non-local memory via a non-local memory channel; and
a cache controller configured to:
assign a priority to the local data and a priority to the non-local data based on a cache replacement policy;
select data for replacement at the cache based on the assigned priorities; and
adjust the priority of the local data stored at the cache and the priority of the non-local data stored at the cache based on a proportion of the local data to the non-local data stored at the cache.

### Claim 9 (depends on 8)

The processing system of claim 8, wherein the cache controller is further to: periodically measure an amount of local data stored at the cache and an amount of non-local data stored at the cache.

### Claim 10 (depends on 8)

The processing system of claim 8, wherein the cache controller is further to: increase the priority of non-local data in response to an amount of non-local data stored at the cache exceeding an amount of local data stored at the cache by more than a first threshold amount.

### Claim 11 (depends on 8)

The processing system of claim 8, wherein the cache controller is further to:
increase the priority of local data in response to an amount of local data stored at the cache exceeding an amount of non-local data stored at the cache by more than a second threshold amount.

### Claim 12 (depends on 8)

The processing system of claim 8, wherein the cache controller is further to:
assign equal priorities to local data and non-local data stored the cache in response to an amount of non-local data stored at the cache not exceeding an amount of local data stored at the cache by a first threshold amount and the amount of local data stored at the cache not exceeding the amount of non-local data stored at the cache by more than a second threshold amount.

### Claim 13 (depends on 12)

The processing system of claim 12, wherein the first threshold amount is equal to the second threshold amount.

### Claim 14 (depends on 8)

The processing system of claim 8, wherein the cache controller is further to: assign priorities based on an application executing at the processing system.

### Claim 15

A processing system, comprising:
a cache at a first subset of dies of the processing system; and
a cache controller configured to:
adaptively prioritize one of local data and non-local data for replacement at the cache based on a cache replacement policy and a proportion of local data to non-local data stored at the cache, wherein:
local data comprises data accessed from a local memory at the first subset of dies via a local memory channel; and
non-local data comprises data accessed from a non-local memory at a second subset of dies of the processing system via a non-local memory channel.

### Claim 16 (depends on 15)

The processing system of claim 15, wherein the cache controller is further to:
periodically measure an amount of local data stored at the cache and an amount of non-local data stored at the cache.

### Claim 17 (depends on 15)

The processing system of claim 15, wherein the cache controller is further to:
increase the priority of non-local data in response to an amount of non-local data stored at the cache exceeding an amount of local data stored at the cache by more than a first threshold amount.

### Claim 18 (depends on 15)

The processing system of claim 15, wherein the cache controller is further to:
increase the priority of local data in response to an amount of local data stored at the cache exceeding an amount of non-local data stored at the cache by more than a second threshold amount.

### Claim 19 (depends on 15)

The processing system of claim 15, wherein the cache controller is further to:
assign equal priorities to local data and non-local data stored the cache in response to an amount of non-local data stored at the cache not exceeding an amount of local data stored at the cache by a first threshold amount and the amount of local data stored at the cache not exceeding the amount of non-local data stored at the cache by more than a second threshold amount.

### Claim 20 (depends on 15)

The processing system of claim 15, wherein the cache controller is further to:
assign priorities based on an application executing at the processing system.
