# US 12,223,174 B2 · Modulating credit allocations in memory subsystems

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

- Number: US 12,223,174 B2
- Document ID: US12223174B2
- Status: Granted
- Kind: B2
- Application number: 18/250,476
- Filed: 2020-10-26
- Published: 2024-01-04
- Granted: 2025-02-11
- Earliest claimed: 2020-10-26
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Nagaraj Ashok Putti; Abhra Bagchi; Vyagrheswarudu Durga Nainala; Venkateswaran Ananthanarayanan
- Web page: https://patentgrep.com/patent/US12223174B2

## CPC

- G06F 3/0613: {in relation to throughput}
- G06F 13/1673: {using buffers}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0673: {Single storage device}
- G06F 11/3037: {where the computing system component is a memory, e.g. virtual memory, cache (accessing, addressing or allocating within memory systems or architectures G06F12/00; checking stores for correct operation G11C29/00)}
- G06F 13/1663: {Access to shared memory}
- G06F 3/0683: {Plurality of storage devices}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

This document describes systems and techniques for modulating credit allocations in memory subsystems. The described systems and techniques can provide a feedback mechanism to a credit controller to improve the bandwidth at a memory interface. The memory controller monitors statistics associated with transaction requests served to one or more random access memories (RAMs) of the memory subsystem. The memory controller can then provide suggestions to the credit controller or to the one or more clients to modulate the number of credits allocated to one or more clients. In this way, the described systems and techniques can improve the efficiency of the memory controller in managing the transaction requests and the bandwidth at the memory interface.

## Claims

### Claim 1

A memory subsystem of a system on chip (SoC) comprising:
a memory controller operably connected to a credit controller, the memory controller comprising a buffer configured to store transaction requests, from one or more clients, to access data in one or more random-access memories (RAMs), the memory controller configured to:
monitor, for each client of the one or more clients, statistics of the transaction requests served by the memory controller, the statistics comprising at least two of a number of page hits in the one or more RAMs, a number of conflicts that require closing a page of the one or more RAMs before another page can be opened, or a respective number of credits allocated to the client;
determine, based on the statistics, whether memory throughput would be increased by increasing or decreasing the respective number of credits allocated to at least one client of the one or more clients; and
generate, based on a determination that the memory throughput would be increased, an output signal, the output signal configured to indicate to the credit controller that the respective number of credits allocated to the at least one client of the one or more clients should be increased or decreased.

### Claim 2 (depends on 1)

The memory subsystem of claim 1, wherein:
the credit controller is operably connected to the one or more clients via respective virtual channels, the virtual channels associated with a respective virtual channel identification (VCID); and
the memory controller is further configured to associate the statistics for each client to the respective VCID.

### Claim 3 (depends on 1)

The memory subsystem of claim 1, wherein:
the memory controller is further configured to transmit the output signal to the credit controller via a side channel.

### Claim 4 (depends on 1)

The memory subsystem of claim 1, wherein the memory controller is further configured to:
define, for each client of the one or more clients, a disparity metric that represents the number of page hits minus the number of conflicts; and
define, for each client of the one or more clients, an occupancy metric that represents the respective number of credits allocated to the client,
wherein the output signal to modulate the respective number of credits allocated to the at least one client of the one or more clients is based on a respective comparison of the occupancy metric to the disparity metric for the one or more clients.

### Claim 5 (depends on 4)

The memory subsystem of claim 4, wherein the disparity metric comprises:
a maximum threshold that represents a maximum value for the disparity metric; and
a default threshold that represents an initial offset value for the disparity metric.

### Claim 6 (depends on 5)

The memory subsystem of claim 5, wherein the disparity metric further comprises a decay factor that causes the disparity metric to regress to the default threshold after a time period without any transaction requests.

### Claim 7 (depends on 4)

The memory subsystem of claim 4, wherein the memory controller determines the occupancy metric based on a number of entries in the buffer used by each client of the one or more clients.

### Claim 8 (depends on 1)

The memory subsystem of claim 1, wherein the one or more RAMs comprise low-power double data rate synchronous dynamic random-access memories (LPDDR SDRAMs).

### Claim 9 (depends on 1)

The memory subsystem of claim 1, wherein the memory controller comprises an application-specific integrated circuit (ASIC) memory controller.

### Claim 10 (depends on 1)

The memory subsystem of claim 1, wherein the SoC is embedded in a user device, a mobile phone, a laptop, a tablet, a portable video game console, or a wearable device.

### Claim 11

A credit controller, the credit controller configured to:
allocate a respective number of credits to one or more clients of a memory subsystem of a system on chip (SoC), the one or more clients configured to send transaction requests to a memory controller of the memory subsystem for access data in one or more RAMs of the memory subsystem, the memory controller configured to monitor statistics of the transaction requests of the one or more clients, the statistics comprising at least two of a number of page hits in the one or more RAMs, a number of conflicts that require closing a page of the one or more RAMs before another page can be opened, or a respective number of credits allocated to the client;
receive, from the memory controller and based on the statistics monitored by the memory controller, a signal indicating that the respective number of credits allocated to the one or more clients should be increased or decreased; and
dynamically change, based on the signal, the respective number of credits allocated to the one or more clients.

### Claim 12 (depends on 11)

The credit controller of claim 11, wherein:
the credit controller is operably connected to the one or more clients via respective virtual channels, the virtual channels associated with a respective virtual channel identification (VCID); and
the statistics monitored by the memory controller for each client of the one or more clients are associated to the respective VCID.

### Claim 13 (depends on 11)

The credit controller of claim 11, wherein the credit controller receives the signal from the memory controller via a side channel.

### Claim 14

A method comprising:
receiving, by a memory controller operably connected to a credit controller, transaction requests from one or more clients to access data of one or more random-access memories (RAMs) associated with the memory controller;
storing the transaction requests received from the one or more clients in a buffer of the memory controller;
monitoring, for each client of the one or more clients, statistics of the transaction requests received by the memory controller, the statistics comprising at least two of a number of page hits in the one or more RAMs, a number of conflicts that require closing a page of the one or more RAMs before another page can be opened, or a respective number of credits allocated to the client;
determining, based on the statistics, whether memory throughput would be increased by increasing or decreasing a respective number of credits allocated to at least one client of the one or more clients; and
generating, based on a determination that the memory throughput would be increased, an output signal, the output signal configured to indicate to the credit controller that the respective number of credits allocated to the at least one client of the one or more clients should be increased or decreased.

### Claim 15 (depends on 14)

The method of claim 14, wherein:
the credit controller is operably connected to the one or more clients via respective virtual channels, the virtual channels associated with a respective virtual channel identification (VCID), and the method further comprises:
associating the statistics for each client to the respective VCID of the virtual channel by which the credit controller is operably coupled to the client.

### Claim 16 (depends on 14)

The method of claim 14, further comprising transmitting the output signal to the credit controller via a side channel.

### Claim 17 (depends on 14)

The method of claim 14, further comprising:
defining, for each client of the one or more clients, a disparity metric that represents the number of page hits minus the number of conflicts; and
defining, for each client of the one or more clients, an occupancy metric that represents the respective number of credits allocated to the client,
wherein the output signal useful to modulate the respective number of credits allocated by the credit controller to the at least one client is based on a comparison of the occupancy metric to the disparity metric for the at least one client.

### Claim 18 (depends on 17)

The method of claim 17, wherein the disparity metric comprises at least one of:
a maximum threshold that represents a maximum value for the disparity metric; or
a default threshold that represents an initial offset value for the disparity metric.

### Claim 19 (depends on 18)

The method of claim 18, wherein the disparity metric further comprises a decay factor that causes the disparity metric to regress to the default threshold after a time period without any transaction requests.

### Claim 20 (depends on 17)

The method of claim 17, further comprising determining the occupancy metric based on a number of entries in the buffer used by each client of the one or more clients.
