IP Library Granted Patent US 11,789,645
Granted Patent B2
US 11,789,645 · App. 18/166,574 · Granted Oct 17, 2023

Methods and systems for memory bandwidth control

Inventors: Ramkumar Srinivasan (Saratoga, CA); Amit Kumar (Fremont, CA); Vedaraman Geetha (Fremont, CA); Keith Robert Pflederer (Mountain View, CA); Vikas Kumar Sinha (Austin, TX)
Assignee: QUALCOMM Incorporated
G06F3/0655G06F3/0604G06F3/0679
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,789,645
App. No.
18/166,574
Filed
Feb 9, 2023
Granted
Oct 17, 2023
Kind
B2
Examiner
GU, SHAWN X
Art Unit
2138
USPC
711/154
Abstract

Resources of an electronic device are partitioned into a plurality of resource portions to be utilized by a plurality of clients. Each resource portion is assigned to a respective client, has a respective partition identifier (ID), and corresponds to a plurality of memory bandwidth usage states tracked for a plurality of memory blocks. For each resource portion, each of the memory bandwidth usage states is associated with a respective memory block and indicates at least how much of a memory access bandwidth assigned to the respective partition ID to access the respective memory block is used. A usage level is determined for each resource partition based on the memory bandwidth usage states, and applied to adjust a credit count. When the credit count is adjusted beyond a request issue threshold, a next data access request is issued from a memory access request queue for the respective partition ID.

Claims (56)

1. A method for tracking memory usage at a memory system coupled to one or more processing clusters via a first memory in an electronic device, the memory system including a memory block, comprising:

receiving a set of data access requests associated with a plurality of clients to the memory block, wherein resources are partitioned to a plurality of resource portions to be utilized by the plurality of clients, each resource portion being assigned to a respective client and having a respective partition identifier (ID); and

for each resource portion having the respective partition ID:

identifying a subset of data access requests associated with the respective partition ID for accessing the memory block;

tracking a memory bandwidth usage state associated with the respective partition ID, wherein the memory bandwidth usage state indicates at least how much of a memory access bandwidth assigned to the respective partition ID to access the memory block is used; and

in response to each data access request of the set of data access requests, reporting the memory bandwidth usage state to the one or more processing clusters.

2. The method of claim 1 , wherein reporting the memory bandwidth usage state to the one or more processing clusters further comprises:

in response to receiving a read request, reporting the memory bandwidth usage state to the one or more processing clusters directly with a data item requested by the read request or indirectly via the first memory; and

in response to receiving a write request, reporting the memory bandwidth usage state to the one or more processing clusters indirectly via the first memory.

3. The method of claim 1 , wherein the memory bandwidth usage state associated with the respective partition ID is also tracked based on an alternative current congestion level of the memory block and/or whether a predefined memory access bandwidth is enforced.

4. The method of claim 1 , wherein tracking the memory bandwidth usage state associated with the respective partition ID further comprises, for the respective partition ID:

determining whether an average data access level to the memory block has exceeded a predefined threshold portion of a predefined memory access bandwidth assigned to the respective partition ID to access the memory block.

5. The method of claim 4 , wherein tracking the memory bandwidth usage state associated with the respective partition ID further comprises:

monitoring a second total number of data access requests that are waiting in a second request queue of the memory system; and

determining an alternative current congestion level indicating whether the second total number of data access requests exceeds an alternative predefined portion of an external memory capacity.

6. The method of claim 5 , further comprising:

determining a second current congestion level indicating whether the second total number of data access requests exceeds a second predefined portion of the external memory capacity, wherein the second current congestion level is used to control throttling or qualities of prefetch requests of the one or more processing clusters.

7. The method of claim 5 , wherein the memory bandwidth usage state includes a flag configured to indicate a heavy memory bandwidth usage state, further comprising:

enabling the flag in accordance with (a) a determination that the average data access level to the memory block has exceeded the predefined threshold portion of the predefined memory access bandwidth and (b) a determination that the predefined memory access bandwidth is enforced or that the alternative current congestion level of the memory block is high.

8. The method of claim 1 , wherein for each partition ID, the memory bandwidth usage state associated with the respective partition ID includes a multibit state number, and further comprising:

increasing a magnitude of the multibit state number with how much of the memory access bandwidth assigned to the respective partition ID to access the memory block is used.

9. A memory system for tracking memory usage coupled to one or more processing clusters via a first memory in an electronic device, the memory system comprising:

a memory block,

the memory system configured to:

receive a set of data access requests associated with a plurality of clients to the memory block, wherein resources are partitioned to a plurality of resource portions to be utilized by the plurality of clients, each resource portion being assigned to a respective client and having a respective partition identifier (ID); and

for each resource portion having the respective partition ID, the memory system further configured to:

identify a subset of data access requests associated with the respective partition ID for accessing the memory block;

track a memory bandwidth usage state associated with the respective partition ID, wherein the memory bandwidth usage state indicates at least how much of a memory access bandwidth assigned to the respective partition ID to access the memory block is used; and

in response to each data access request of the set of data access requests, report the memory bandwidth usage state to the one or more processing clusters.

10. The memory system of claim 9 , wherein the memory system is further configured to:

in response to receiving a read request, report the memory bandwidth usage state to the one or more processing clusters directly with a data item requested by the read request or indirectly via the first memory; and

in response to receiving a write request, report the memory bandwidth usage state to the one or more processing clusters indirectly via the first memory.

11. The memory system of claim 9 , wherein the memory system is further configured to:

track the memory bandwidth usage state associated with the respective partition ID based on an alternative current congestion level of the memory block and/or whether a predefined memory access bandwidth is enforced.

12. The memory system of claim 9 , wherein the memory system is further configured, for the respective partition ID, to:

determine whether an average data access level to the memory block has exceeded a predefined threshold portion of a predefined memory access bandwidth assigned to the respective partition ID to access the memory block.

13. The memory system of claim 12 , wherein the memory system is further configured to:

monitor a second total number of data access requests that are waiting in a second request queue of the memory system; and

determine an alternative current congestion level indicating whether the second total number of data access requests exceeds an alternative predefined portion of an external memory capacity.

14. The memory system of claim 13 , further configured to:

determine a second current congestion level indicating whether the second total number of data access requests exceeds a second predefined portion of the external memory capacity, wherein the second current congestion level is used to control throttling or qualities of prefetch requests of the one or more processing clusters.

15. The memory system of claim 13 , wherein the memory bandwidth usage state includes a flag configured to indicate a heavy memory bandwidth usage state, the memory system is further configured to:

enable the flag in accordance with (a) a determination that the average data access level to the memory block has exceeded the predefined threshold portion of the predefined memory access bandwidth and (b) a determination that the predefined memory access bandwidth is enforced or that the alternative current congestion level of the memory block is high.

16. The memory system of claim 9 , wherein for each partition ID, the memory bandwidth usage state associated with the respective partition ID includes a multibit state number, and the memory system is further configured to increase a magnitude of the multibit state number with how much of the memory access bandwidth assigned to the respective partition ID to access the memory block is used.

17. A memory system for tracking memory usage at the memory system coupled to one or more processing clusters via a first memory in an electronic device, the memory system including a memory block, the memory system comprising:

means for receiving a set of data access requests associated with a plurality of clients to the memory block, wherein resources are partitioned to a plurality of resource portions to be utilized by the plurality of clients, each resource portion being assigned to a respective client and having a respective partition identifier (ID); and

for each resource portion having the respective partition ID:

means for identifying a subset of data access requests associated with the respective partition ID for accessing the memory block;

means for tracking a memory bandwidth usage state associated with the respective partition ID, wherein the memory bandwidth usage state indicates at least how much of a memory access bandwidth assigned to the respective partition ID to access the memory block is used; and

in response to each data access request of the set of data access requests, means for reporting the memory bandwidth usage state to the one or more processing clusters.

18. The memory system of claim 17 , wherein the means for reporting the memory bandwidth usage state to the one or more processing clusters further comprises:

in response to receiving a read request, means for reporting the memory bandwidth usage state to the one or more processing clusters directly with a data item requested by the read request or indirectly via the first memory; and

in response to receiving a write request, means for reporting the memory bandwidth usage state to the one or more processing clusters indirectly via the first memory.

19. The memory system of claim 17 , wherein the means for tracking the memory bandwidth usage state associated with the respective partition ID further comprises: means for tracking based on an alternative current congestion level of the memory block and/or whether a predefined memory access bandwidth is enforced.

20. The method of claim 17 , wherein the means for tracking the memory bandwidth usage state associated with the respective partition ID further comprises, for the respective partition ID:

means for determining whether an average data access level to the memory block has exceeded a predefined threshold portion of a predefined memory access bandwidth assigned to the respective partition ID to access the memory block.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2023
From: SRINIVASAN, RAMKUMAR; KUMAR, AMIT; GEETHA, VEDARAMAN; PFLEDERER, KEITH ROBERT; SINHA, VIKAS KUMAR
To: NUVIA, INC.
Reel/Frame 062638/0359 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2023
From: NUVIA, INC.
To: QUALCOMM INCORPORATED
Reel/Frame 062638/0407 →
Continuity (5)
Continuation 17666438 · Feb 7, 2022
Provisional Application 63251518 · Oct 1, 2021
Provisional Application 63251517 · Oct 1, 2021
Provisional Application 63239702 · Sep 1, 2021
Related Publication 20230195365A1 · Jun 22, 2023