IP Library Granted Patent US 11,797,451
Granted Patent B1
US 11,797,451 · App. 17/502,967 · Granted Oct 24, 2023

Dynamic memory management in mixed mode cache and shared memory systems

Inventors: Sridhar Gurumurthy Isukapalli Sharma (Palo Alto, CA); Valerio Catalano (San Francisco, CA)
Assignee: Meta Platforms Technologies, LLC
G06F12/084G06F12/0238G06F12/1054G06F12/1063G06F15/7807
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,797,451
App. No.
17/502,967
Granted
Oct 24, 2023
Kind
B1
Abstract

The disclosure is directed to techniques for dynamically managing memory in mixed mode cache and shared memory systems. For example, a system on a chip (SoC) comprises: a plurality of memories, including a first memory and a second memory, where each of the memories includes one or more cache lines; a first subsystem comprising a first compute element and the first memory; a second subsystem comprising a second compute element and the second memory; and a memory control unit of the SoC comprising processing circuitry and configured to: configure a shared memory with one or more cache lines of at least one of the plurality of memories; and flush, based on one or more tag control bits for the one or more cache lines of the shared memory, data from the shared memory to a backend storage separate from the SoC.

Claims (60)

1. A system on a chip (SoC) comprising:

a plurality of memories, including a first memory and a second memory, where each of the memories includes one or more cache lines;

a first subsystem comprising a first compute element and the first memory;

a second subsystem comprising a second compute element and the second memory; and

a memory control unit of the SoC comprising processing circuitry and configured to:

configure a shared memory with one or more cache lines of at least one of the plurality of memories; and

flush, based on one or more tag control bits for the one or more cache lines of the shared memory, data from the shared memory to a backend storage separate from the SoC.

2. The SoC of claim 1 , wherein the tag control bits are stored in a tag memory.

3. The SoC of claim 2 , wherein to flush data from the shared memory to the backend storage, the memory control unit is further configured to determine, from a lookup of the tag memory, the one or more cache lines of the shared memory set with a dirty bit.

4. The SoC of claim 1 , wherein the backend storage comprises a Double Data Rate (DDR) random access memory (RAM).

5. The SoC of claim 1 ,

wherein the memory control unit is further configured to generate an address lookup table comprising a mapping of virtual memory addresses of the shared memory with physical memory addresses of the backend storage,

wherein to flush data from the shared memory to the backend storage, the memory control unit is further configured to determine, based on a lookup of the address lookup table, a particular physical memory address of the physical memory addresses of the backend storage corresponding to a particular virtual memory address of the virtual memory addresses of the shared memory to store the data from the shared memory.

6. The SoC of claim 5 , wherein to determine the particular physical memory address of the backend storage corresponding to the particular virtual memory address of the shared memory, the memory control unit is further configured to:

determine, based on a lookup of the address lookup table, an offset of the particular physical memory address of the backend storage matches an offset of the particular virtual memory address of the shared memory.

7. The SoC of claim 5 ,

wherein the physical memory addresses of the backend storage are each used to index a particular way and cache line number of the one or more cache lines of the shared memory.

8. The SoC of claim 1 ,

wherein the memory control unit is further configured to store virtual memory addresses of the shared memory in a tag memory,

wherein to flush data from the shared memory to the backend storage, the memory control unit is further configured to:

determine, based on a lookup of the tag memory, a particular virtual memory address of the virtual memory addresses of the shared memory;

determine, with the particular virtual memory address determined from the tag memory, an offset in the backend storage; and

add the offset to a base address of the backend storage to determine a particular physical memory address of the physical memory addresses of the backend storage to store the data from the shared memory.

9. An artificial reality system comprising:

a head mounted display (HMD) configured to output artificial reality content, the HMD including a system on a chip (SoC), wherein the SoC comprises:

a plurality of memories, including a first memory and a second memory, where each of the memories includes one or more cache lines;

a first subsystem comprising a first compute element and the first memory;

a second subsystem comprising a second compute element and the second memory; and

a memory control unit of the SoC comprising processing circuitry and configured to:

configure a shared memory with one or more cache lines of at least one of the plurality of memories; and

flush, based on one or more tag control bits for the one or more cache lines of the shared memory, data from the shared memory to a backend storage separate from the SoC.

10. The artificial reality system of claim 9 , wherein the tag control bits are stored in a tag memory.

11. The artificial reality system of claim 9 , wherein to flush data from the shared memory to the backend storage, the memory control unit is further configured to determine, from a lookup of the tag memory, the one or more cache lines of the shared memory set with a dirty bit.

12. The artificial reality system of claim 9 , wherein the backend storage comprises a Double Data Rate (DDR) random access memory (RAM).

13. The artificial reality system of claim 9 ,

wherein the memory control unit is further configured to generate an address lookup table comprising a mapping of virtual memory addresses of the shared memory with physical memory addresses of the backend storage, and

wherein to flush data from the shared memory to the backend storage, the memory control unit is further configured to determine, based on a lookup of the address lookup table, a particular physical memory address of the physical memory addresses of the backend storage corresponding to a particular virtual memory address of the virtual memory addresses of the shared memory to store the data from the shared memory.

14. The artificial reality system of claim 13 , wherein to determine the particular physical memory address of the backend storage corresponding to the particular virtual memory address of the shared memory, the memory control unit is further configured to:

determine, based on a lookup of the address lookup table, an offset of the particular physical memory address of the backend storage matches an offset of the particular virtual memory address of the shared memory.

15. The artificial reality system of claim 13 ,

wherein the physical memory addresses of the backend storage are each used to index a particular way and cache line number of the one or more cache lines of the shared memory.

16. The artificial reality system of claim 9 ,

wherein the memory control unit is further configured to store virtual memory addresses of the shared memory in a tag memory,

wherein to flush data from the shared memory to the backend storage, the memory control unit is further configured to:

determine, based on a lookup of the tag memory, a particular virtual memory address of the virtual memory addresses of the shared memory;

determine, with the particular virtual memory address determined from the tag memory, an offset in the backend storage; and

add the offset to a base address of the backend storage to determine a particular physical memory address of the physical memory addresses of the backend store to store the data from the shared memory.

17. A method comprising:

configuring a shared memory with one or more cache lines of at least one of a plurality of memories of a system on a chip (SoC), the plurality of memories including a first memory of a first subsystem and a second memory of a second subsystem; and

flushing, based on one or more tag control bits for the one or more cache lines of the shared memory, data from the shared memory to a backend storage separate from the SoC.

18. The method of claim 17 , further comprising:

generating an address lookup table comprising a mapping of virtual memory addresses of the shared memory with physical memory addresses of the backend storage,

wherein flushing data from the shared memory to the backend storage, the memory control unit comprises determining, based on a lookup of the address lookup table, a particular physical memory address of the physical memory addresses of the backend storage corresponding to a particular virtual memory address of the virtual memory addresses of the shared memory to store the data from the shared memory.

19. The method of claim 18 , wherein determining the physical memory address space of the backend storage corresponding to the virtual memory address space of the shared memory comprises determining, based on a lookup of the address lookup table, an offset of the particular physical memory address of the backend storage matches an offset of the particular virtual memory address of the shared memory.

20. The method of claim 17 , further comprising:

storing virtual memory addresses of the shared memory in a tag memory,

wherein flushing data from the shared memory to the backend storage comprises:

determining, based on a lookup of the tag memory, a particular virtual memory address of the virtual memory addresses of the shared memory;

determining, with the particular virtual memory address determined from the tag memory, an offset in the backend storage; and

adding the offset to a base address of the backend storage to determine a particular physical memory address of the physical memory addresses of the backend store to store the data from the shared memory.

Assignments (2)
CHANGE OF NAME Recorded Jul 21, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060802/0799 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2021
From: SHARMA, SRIDHAR GURUMURTHY ISUKAPALLI; CATALANO, VALERIO
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 058394/0091 →