IP Library Granted Patent US 11,436,049
Granted Patent B2
US 11,436,049 · App. 16/852,107 · Granted Sep 6, 2022

Systems and methods to control bandwidth through shared transaction limits

Inventors: Nachiappan Chidambaram Nachiappan (Santa Clara, CA); Matthew R. Johnson (Newark, CA); Vinodh R. Cuppu (San Jose, CA)
Assignee: Apple Inc.
G06F9/4881G06F13/161G06F13/1668H04L41/0896
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,436,049
App. No.
16/852,107
Granted
Sep 6, 2022
Kind
B2
Abstract

Systems, apparatuses, and methods for controlling bandwidth through shared transaction limits are described. An apparatus includes at least a plurality of agents, a plurality of transaction-limit (T-Limit) nodes, a T-Limit manager, and one or more endpoints. The T-Limit manager creates a plurality of credits for the plurality of agents to send transactions to a given endpoint. Then, the T-Limit manager partitions the credits into N+1 portions for N agents, wherein the extra N+1 portion is a shared pool for use by agents when they run out of their private credits. The T-Limit manager assigns a separate private portion of the N portions to the N agents for use by only the corresponding agent. When an agent runs out of private credits, the agent's T-Limit node sends a request to the T-Limit manager for credits from the shared pool.

Claims (38)

1. A system comprising:

a plurality of N agents, wherein N is a positive integer greater than one;

an endpoint; and

a transaction-limit manager configured to:

partition a plurality of credits into N+1 portions for the N agents, wherein one portion of the N+1 portions is a shared credit pool for use by any of the N agents;

assign a separate portion of N of the N+1 portions to each of the N agents to be used as private credits, wherein each separate portion of private credits is to be used by only a corresponding agent; and

assign an upper limit to a first agent of the N agents based at least in part on a bandwidth share determined for the first agent, wherein the upper limit represents a maximum number of outstanding requests the first agent is permitted to have that target the endpoint, and

wherein an agent is not allowed to issue a request if the agent does not have an available credit.

2. The system as recited in claim 1 , further comprising N transaction limit nodes each corresponding to an agent of the N agents, wherein each transaction-limit node is configured to request a shared credit from the transaction-limit manager when an entirety of private credits assigned to a corresponding agent have been consumed by outstanding transactions.

3. The system as recited in claim 1 , wherein the plurality of credits includes a number of credits equal to a number of requests the endpoint is able to process concurrently.

4. The system as recited in claim 1 , wherein the transaction-limit manager is further configured to assign an upper limit to each of the N agents based at least in part on a bandwidth share determined for each respective agent, wherein agents of the N agents with a higher priority are assigned an upper limit that is greater than agents with a lower priority.

5. The system as recited in claim 1 , wherein the transaction-limit manager is further configured to:

determine a priority for each agent of the N agents; and

assign a number of private credits to a corresponding agent, wherein the number is calculated based on the priority determined for the corresponding agent.

6. The system as recited in claim 3 , wherein the endpoint is a memory subsystem.

7. The system as recited in claim 6 , wherein the number of credits is determined based in part on one or more of a frequency of the memory subsystem, and a number of channels and banks of the memory subsystem that can be concurrently accessed.

8. A method comprising:

partitioning a plurality of credits into N+1 portions for use by N agents, wherein one portion of the N+1 portions is a shared credit pool for use by any of the N agents and N is a positive integer greater than one;

assigning a separate portion of N of the N+1 portions to each of the N agents to be used as private credits, wherein each separate portion of private credits is to be used by only a corresponding agent; and

assigning an upper limit to a first agent of the N agents based at least in part on a bandwidth share determined for the first agent, wherein the upper limit represents a maximum number of outstanding requests the first agent is permitted to have that target a given endpoint, and wherein an agent is not allowed to issue a request if the agent does not have an available credit.

9. The method as recited in claim 8 , further comprising requesting, by a transaction-limit node, a shared credit from a transaction-limit manager when an entirety of private credits assigned to a corresponding agent have been consumed by outstanding transactions.

10. The method as recited in claim 8 , wherein the plurality of credits includes a number of credits equal to a number of requests the endpoint is able to process concurrently.

11. The method as recited in claim 8 , further comprising assigning an upper limit to each of the N agents based at least in part on a bandwidth share determined for each respective agent, wherein agents of the N agents with a higher priority are assigned an upper limit that is greater than agents with a lower priority.

12. The method as recited in claim 11 , wherein agents of the N agents that are less energy efficient than other agents of the N agents are ranked with a higher priority than the other agents.

13. The method as recited in claim 10 , wherein the endpoint is a memory subsystem.

14. The method as recited in claim 13 , wherein the number of credits is determined based in part on one or more of a frequency of the memory subsystem, and a number of channels and banks of the memory subsystem that can be concurrently accessed.

15. An apparatus comprising:

a plurality of N transaction-limit nodes, wherein N is a positive integer greater than one; and

a transaction-limit manager configured to:

partition a plurality of credits into N+1 portions for N agents, wherein

one portion of the N+1 portions is a shared credit pool for use by any of the N agents;

assign a separate portion of N of the N+1 portions to each of the N agents to be used as private credits, wherein each separate portion of private credits is to be used by only a corresponding agent; and

assign an upper limit to a first agent of the N agents based at least in part on a bandwidth share determined for the first agent, wherein the upper limit represents a maximum number of outstanding requests the first agent is permitted to have that target a given endpoint, and wherein an agent is not allowed to issue a request if the agent does not have an available credit.

16. The apparatus as recited in claim 15 , wherein each transaction-limit node is configured to request a shared credit from the transaction-limit manager when an entirety of private credits assigned to a corresponding agent have been consumed by outstanding transactions.

17. The apparatus as recited in claim 15 , wherein the plurality of credits include a number of credits equal to a number of requests a given endpoint is able to process concurrently.

18. The apparatus as recited in claim 15 , wherein the transaction-limit manager is further configured to share determined for each respective agent, wherein agents of the N agents with a higher priority are assigned an upper limit that is greater than agents with a lower priority.

19. The apparatus as recited in claim 15 , wherein the transaction-limit manager is further configured to wherein agents of the N agents that are less energy efficient than other agents of the N agents are ranked with a higher priority than the other agents.

20. The apparatus as recited in claim 15 , wherein the endpoint is a memory subsystem.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2020
From: CHIDAMBARAM NACHIAPPAN, NACHIAPPAN; CUPPU, VINODH R.
To: APPLE INC.
Reel/Frame 052542/0580 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2020
From: JOHNSON, MATTHEW R.
To: APPLE INC.
Reel/Frame 052542/0675 →
Continuity (1)
Related Publication 20210326169A1 · Oct 21, 2021