IP Library Granted Patent US 11,061,728
Granted Patent B2
US 11,061,728 · App. 16/274,060 · Granted Jul 13, 2021

Systems and methods for heterogeneous address space allocation

Inventors: Viacheslav Dubeyko (San Jose, CA); Luis Vitorio Cargnini (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
G06F9/5016G06F9/445G06F9/45512G06F12/023G06F12/0646
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,061,728
App. No.
16/274,060
Granted
Jul 13, 2021
Kind
B2
Abstract

A system and method for allocating memory to a heterogeneous address space includes identifying, by an operating system, at least one superset feature from an application configured to be executed on a host device. The address space associated with the application includes a plurality of supersets, and wherein the operating system allocates the memory to each of the plurality of supersets from a non-volatile memory or a volatile memory based upon the at least one superset feature.

Claims (57)

1. A method comprising:

identifying, by an operating system of a host device, a plurality of superset features corresponding to a plurality of supersets of an application configured to be executed on the host device, each superset forming a portion of a virtual address space associated with the application, the plurality of superset features indicated by the application in a request for memory allocation, the plurality of superset features comprising two or more of data type, workload type, power requirement, and latency; and

allocating, by the operating system of the host device, heterogeneous memory to the virtual address space associated with the application, wherein the operating system allocates the heterogeneous memory to each of the plurality of supersets from a non-volatile memory or a volatile memory based upon the corresponding superset features, including allocating at least a first superset of the application to non-volatile memory based on the first superset having a user application data type and allocating at least a second superset of the application to volatile memory based on the second superset having an executable code data type.

2. The method of claim 1 , further comprising determining, by the operating system, the plurality of superset features from a plurality of flags of the application.

3. The method of claim 1 , wherein:

the volatile memory comprises a plurality of volatile memory types; and

the operating system is configured to select one of the plurality of volatile memory types for allocating the heterogeneous memory to the second superset.

4. The method of claim 1 , wherein:

the non-volatile memory comprises a plurality of non-volatile memory types; and

the operating system is configured to select one of the plurality of non-volatile memory types for allocating the heterogeneous memory to the first superset.

5. The method of claim 1 , further comprising:

determining, by the operating system, an individual superset feature of the plurality of superset features to be a low power requirement; and

allocating, by the operating system, the heterogeneous memory to an individual superset associated with the individual superset feature from the non-volatile memory for each of read, write, and update operations.

6. The method of claim 1 , further comprising:

determining, by the operating system, an individual superset feature of the plurality of superset features to be a guaranteed power requirement; and

allocating, by the operating system, the heterogeneous memory to an individual superset associated with the individual superset feature from a combination of the volatile memory and the non-volatile memory for read, write, and update operations.

7. The method of claim 6 , further comprising:

initially performing, by the operating system, the read, write, and update operations for the guaranteed power requirement from the non-volatile memory;

transferring, by the operating system, data from the non-volatile memory to the volatile memory upon a first condition being satisfied, including performing the read, write, and update operations from the volatile memory after the transfer; and

re-transferring, by the operating system, the data from the volatile memory back to the non-volatile memory upon a second condition being satisfied, including performing the read, write, and update operations from the non-volatile memory after the re-transfer.

8. The method of claim 1 , further comprising:

identifying, by the operating system, a latency requirement from the application; and

allocating, by the operating system, the heterogeneous memory to an individual superset associated with the individual superset feature based on the latency requirement.

9. The method of claim 8 , further comprising:

allocating, by the operating system, the heterogeneous memory from the volatile memory for read, write, and update operations based upon the latency requirement being no latency, or low latency; and

allocating, by the operating system, the heterogeneous memory from the non-volatile memory for read, write, and update operations based upon the latency requirement being high latency or huge latency.

10. A system comprising:

a host device comprising:

a processing unit configured to execute an application; and

an operating system configured to allocate heterogeneous memory to an address space associated with the application, the address space comprises a plurality of supersets including at least a first superset and a second superset, and wherein the operating system is configured to:

identify at least a first data type corresponding to the first superset and a second data type corresponding to the second superset from an indication by the application in a request for memory allocation, the first data type is executable code of the application and the second data type is user data of the application; and

allocate the heterogeneous memory to the address space from a non-volatile memory and volatile memory based upon the first and second data types in combination with at least one of workload type, power requirement, and latency, including:

allocate volatile memory to the first superset based upon the first data type being executable code; and

allocate non-volatile memory to the second superset based upon the second data type being user data and further based on a workload type associated with the user data.

11. The system of claim 10 , wherein:

the volatile memory comprises a plurality of volatile memory types; and

the operating system is further configured to allocate one of the plurality of volatile memory types to the first superset based on the first data type being executable code.

12. The system of claim 10 , wherein:

the non-volatile memory comprises a plurality of non-volatile memory types; and

the operating system is further configured to allocate one of the plurality of non-volatile memory types to the second superset based on the second data type being user data and further based on the workload type being a write only operation.

13. The system of claim 10 , wherein the operating system is further configured to:

identify a locking primitive corresponding to a third superset from the application; and

protect data stored in the third superset based on the locking primitive.

14. The system of claim 10 , wherein the operating system is further configured to:

identify a hardware acceleration engine corresponding to a third superset from the application; and

allocate the volatile memory or the non-volatile memory to the address space that is associated with the hardware acceleration engine.

15. The system of claim 10 , wherein the operating system is further configured to:

vary the size of the first superset according to updating of data of the first superset; and

vary the size of the second superset according to updating of data of the second superset.

16. A computing system comprising:

means for storing computer-executable instructions; and

means for processing the computer-executable instructions to cause an operating system of the computing system to perform a process comprising:

receiving a request for memory allocation from an application of the computing system, the request indicating a plurality of features associated with a plurality of locations of a virtual address space associated with the application;

identifying a corresponding plurality of features for each location of the plurality of locations of the virtual address space associated with the application, the plurality of features including two or more of data type, workload type, power requirement, latency;

selecting between volatile memory and non-volatile memory of a heterogeneous memory for each location of the plurality of locations of the virtual address space based upon the corresponding plurality of features, including selecting non-volatile memory for a first location of the virtual address space based on a corresponding first data type being user data and selecting volatile memory for a second location of the virtual address space based on a corresponding second data type being executable code;

determining that a selected one of the volatile memory or the non-volatile memory comprises a plurality of memory types; and

selecting one of the plurality of memory types from the selected one of the volatile memory or the non-volatile memory for allocating memory to each location of the virtual address space associated with the selected one of the volatile memory or the non-volatile memory.

Assignments (8)
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2019
From: DUBEYKO, VIACHESLAV; CARGNINI, LUIS VITORIO
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 048313/0843 →
Continuity (1)
Related Publication 20200257562A1 · Aug 13, 2020