IP Library › Granted Patent US 10,628,308
Granted Patent B2
US 10,628,308 · App. 15/988,863 · Granted Apr 21, 2020

Dynamic adjustment of memory channel interleave granularity

Inventors: Kunal Desai (Bangalore, IN); Satyaki Mukherjee (Bangalore, IN); Abhinav Mittal (Pune, IN); Siddharth Kamdar (Bangalore, IN); Umesh Rao (Bangalore, IN); Vinayak Shrivastava (Bangalore, IN)
Assignee: Qualcomm Incorporated
G06F12/0607G06F12/10G06F2212/1008G06F2212/657
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 10,628,308
App. No.
15/988,863
Granted
Apr 21, 2020
Kind
B2
Abstract

Systems, methods, and computer programs are disclosed for dynamically adjusting memory channel interleave granularity. An embodiment of a system comprises a plurality of memory clients, a memory management unit (MMU), and an address translator. The plurality of memory clients are electrically coupled to each of a plurality of memory channels via an interconnect. The MMU is configured to receive a request for a memory allocation request for one or more memory pages from one of the plurality of memory client and, in response, select one of a plurality of interleave granularities for the one or more memory pages. The address translator is configured to translate a physical address to interleave memory data associated with the one or more memory pages at the selected interleave granularity.

Claims (46)

1. A method for dynamically adjusting memory channel interleave granularity, the method comprising:

initiating a memory allocation for one or more memory pages;

selecting one of a plurality of interleave granularities for the one or more memory pages;

encoding the selected interleave granularity in one or more page descriptors associated with the one or more memory pages; and

translating a physical address to interleave memory data associated with the one or more memory pages at the selected interleave granularity, wherein the one or more memory pages comprises a block of memory pages having a block size equal to a maximum interleave granularity multiplied by a number of available memory channels.

2. The method of claim 1 , wherein the selected interleave granularity is based on one or more of a current power profile, a current battery level, a bandwidth associated with the memory client, a memory footprint associated with the memory client, a current memory traffic level, a projected memory traffic level, a monitored user behavior, and a device form factor.

3. The method of claim 1 , wherein the selecting the one of the plurality of interleave granularities comprises: determining a memory data access size.

4. The method of claim 3 , wherein the selecting the one of the plurality of interleave granularities comprises: adjusting a current interleave granularity to a larger interleave granularity if the memory data access size is below a threshold.

5. The method of claim 3 , wherein the selecting the one of the plurality of interleave granularities comprises: adjusting a current interleave granularity to a smaller interleave granularity if the memory data access size is above a threshold.

6. The method of claim 1 , wherein the translating the physical address to interleave the memory data associated with the one or more memory pages at the selected interleave granularity comprises a network interface unit in a memory interconnect manipulating one or more physical address bits.

7. A system for dynamically adjusting memory channel interleave granularity, the system comprising:

means for initiating a memory allocation for one or more memory pages;

means for selecting one of a plurality of interleave granularities for the one or more memory pages;

means for encoding the selected interleave granularity in one or more page descriptors associated with the one or more memory pages; and

means for translating a physical address to interleave memory data associated with the one or more memory pages at the selected interleave granularity, wherein the one or more memory pages comprises a block of memory pages having a block size equal to a maximum interleave granularity multiplied by a number of available memory channels.

8. The system of claim 7 , wherein the selected interleave granularity is based on one or more of a current power profile, a current battery level, a bandwidth associated with the memory client, a memory footprint associated with the memory client, a current memory traffic level, a projected memory traffic level, a monitored user behavior, and a device form factor.

9. The system of claim 7 , wherein the means for selecting the one of the plurality of interleave granularities comprises:

means for determining a memory data access size.

10. The system of claim 9 , wherein the means for selecting the one of the plurality of interleave granularities comprises:

means for adjusting a current interleave granularity to a larger interleave granularity if the memory data access size is below a threshold.

11. The system of claim 9 , wherein the means for selecting the one of the plurality of interleave granularities comprises:

means for adjusting a current interleave granularity to a smaller interleave granularity if the memory data access size is above a threshold.

12. The system of claim 7 , wherein the means for translating the physical address to interleave the memory data associated with the one or more memory pages at the selected interleave granularity comprises:

a memory interconnect means for manipulating one or more physical address bits.

13. A system for dynamically adjusting memory channel interleave granularity, the system comprising:

a plurality of memory clients electrically coupled to each of a plurality of memory channels via an interconnect;

a memory management unit (MMU) for receiving a memory allocation request for one or more memory pages from one of the plurality of memory clients and, in response, selecting one of a plurality of interleave granularities for the one or more memory pages, wherein the one or more memory pages comprises a block of memory pages having a block size equal to a maximum interleave granularity multiplied by a number of available memory channels; and

an address translator for translating a physical address to interleave memory data associated with the one or more memory pages at the selected interleave granularity.

14. The system of claim 13 , wherein the selected interleave granularity is encoded in one or more page based hardware attributes.

15. The system of claim 14 , wherein the selected interleave granularity matches a double data rate (DDR) page size.

16. The system of claim 13 , wherein the selected interleave granularity is based on one or more of a current power profile, a current battery level, a bandwidth associated with the memory client, a memory footprint associated with the memory client, a current memory traffic level, a projected memory traffic level, a monitored user behavior, and a device form factor.

17. The system of claim 13 , wherein the MMU selects the one of the plurality of interleave granularities by adjusting a current interleave granularity to a larger interleave granularity if the memory data access size is below a threshold.

18. The system of claim 13 , wherein the MMU selects the one of the plurality of interleave granularities by adjusting a current interleave granularity to a smaller interleave granularity if the memory data access size is above a threshold.

19. The system of claim 13 , wherein the address translator resides in the memory interconnect and translates the physical address by manipulating one or more physical address bits.

20. The system of claim 13 , wherein the plurality of memory clients, the MMU, and the address translator reside on a system on chip (SoC) electrically coupled to a double data rate (DDR) memory via the plurality of memory channels.

21. The system of claim 13 , wherein the plurality of memory clients comprise one or more of a central processing unit (CPU), a graphics processing unit (GPU), and a digital signal processor.

22. The system of claim 13 , wherein the address translator manipulates one or more physical address bits based on one or more page descriptors.

23. A computer program embodied in a non-transitory computer readable medium and executed by a processor for dynamically adjusting memory channel interleave granularity, the computer program comprising logic configured to:

initiate a memory allocation for one or more memory pages;

select one of a plurality of interleave granularities for the one or more memory pages;

encode the selected interleave granularity in one or more page descriptors associated with the one or more memory pages; and

translate a physical address to interleave memory data associated with the one or more memory pages at the selected interleave granularity, wherein the one or more memory pages comprises a block of memory pages having a block size equal to a maximum interleave granularity multiplied by a number of available memory channels.

24. The computer program of claim 23 , wherein the selected interleave granularity is based on one or more of a current power profile, a current battery level, a bandwidth associated with the memory client, a memory footprint associated with the memory client, a current memory traffic level, a projected memory traffic level, a monitored user behavior, and a device form factor.

25. The computer program of claim 23 , wherein the logic configured to select the one of the plurality of interleave granularities comprises logic configured to determine a memory data access size.

26. The computer program of claim 25 , wherein the logic configured to select the one of the plurality of interleave granularities comprises logic configured to adjust a current interleave granularity to a larger interleave granularity if the memory data access size is below a threshold.

27. The computer program of claim 25 , wherein the logic configured to select the one of the plurality of interleave granularities comprises logic configured to adjust a current interleave granularity to a smaller interleave granularity if the memory data access size is above a threshold.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: DESAI, KUNAL; MUKHERJEE, SATYAKI; MITTAL, ABHINAV; KAMDAR, SIDDHARTH; RAO, UMESH; SHRIVASTAVA, VINAYAK
To: QUALCOMM INCORPORATED
Reel/Frame 049555/0976 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND ASSIGNOR'S LAST NAME PREVIOUSLY RECORDED AT REEL: 046701 FRAME: 0162. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Dec 3, 2018
From: DESAI, KUNAL; MUKHERJEE, SATYAKI; MITTAL, ABHINAV; KAMDAR, SIDDHARTH; RAO, UMESH; SHRIVASTAVA, VINAYAK
To: QUALCOMM INCORPORATED
Reel/Frame 047713/0913 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2018
From: DESAI, KUNAL; KHERJEE, SATYAKI MU; MITTAL, ABHINAV; KAMDAR, SIDDHARTH; RAO, UMESH; SHRIVASTAVA, VINAYAK
To: QUALCOMM INCORPORATED
Reel/Frame 046701/0162 →
Continuity (1)
Related Publication 20190361807A1 · Nov 28, 2019