IP Library Granted Patent US 11,449,386
Granted Patent B2
US 11,449,386 · App. 16/825,414 · Granted Sep 20, 2022

Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory

Inventor: Shu Li (Bothell, WA)
Assignee: Alibaba Group Holding Limited
G06F11/1068G06F11/076G06F11/1044G06F11/1658G06F11/3037G06F12/0246G06F12/0882
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,449,386
App. No.
16/825,414
Granted
Sep 20, 2022
Kind
B2
Abstract

A system is provided to receive a first request to write data to a storage system, which comprises an MRAM, a NOR, a DRAM, and a NAND. The system writes the data to the MRAM. The system copies the data from the MRAM: to the NOR in response to determining that the data is read at a frequency greater than a first predetermined threshold and is updated at a frequency less than a second predetermined threshold; to the DRAM in response to determining that the data is read at a frequency less than the first predetermined threshold and is updated at a frequency greater than the second predetermined threshold; and to the NAND in response to determining that the data is read at a frequency less than the first predetermined threshold and is updated at a frequency less than the second predetermined threshold.

Claims (105)

1. A computer-implemented method, comprising:

receiving a first request to write data to a storage system, which comprises a first non-volatile memory, a second non-volatile memory, a dynamic random access memory (DRAM), and a third non-volatile memory;

writing the data to the first non-volatile memory;

monitoring a frequency of access of the data, which comprises:

determining whether the data is read at a frequency greater than or less than a first predetermined threshold; and

determining whether the data is updated at a frequency greater than or less than a second predetermined threshold;

responsive to determining that the data is read at a frequency greater than the first predetermined threshold and responsive to determining that the data is updated at a frequency less than the second predetermined threshold, copying the data from the first non-volatile memory to the second non-volatile memory;

responsive to determining that the data is read at a frequency less than the first predetermined threshold and responsive to determining that the data is updated at a frequency greater than the second predetermined threshold, copying the data from the first non-volatile memory to the DRAM; and

responsive to determining that the data is read at a frequency less than the first predetermined threshold and responsive to determining that the data is updated at a frequency less than the second predetermined threshold, copying the data from the first non-volatile memory to the third non-volatile memory.

2. The method of claim 1 , further comprising:

leaving the data in the first non-volatile memory in response to determining that the data is read at a frequency greater than the first predetermined threshold and is updated at a frequency greater than the second predetermined threshold.

3. The method of claim 1 , further comprising:

tracking, in a first table, a first number of times that the data is read; and

tracking, in the first table, a second number of times that the data is updated.

4. The method of claim 1 ,

wherein a first reserved pool of pages in the first non-volatile memory is associated with usage by user data,

wherein a second reserved pool of pages in the first non-volatile memory is associated with usage by parity data,

wherein the second reserved pool is bigger than the first reserved pool, and

wherein a first ratio of a nominal capacity for user data to a nominal capacity for parity data is greater than a second ratio of a size of the first reserved pool to a size of the second reserved pool.

5. The method of claim 1 ,

wherein the first non-volatile memory comprises a magnetoresistive random-access memory (MRAM),

wherein the second non-volatile memory comprises a Not-OR (NOR) memory, and

wherein the third non-volatile memory comprises a Not-AND (NAND) memory.

6. The method of claim 1 , further comprising:

writing a plurality of user data chunks to the first non-volatile memory,

wherein a respective user data chunk is associated with a first user portion and a second parity portion generated based on a first error correction code (ECC) encoding of the first user portion, and

wherein writing the plurality of user data chunks to the first non-volatile memory involves:

concatenating the plurality of user data chunks;

generating a first parity for the concatenated plurality of user data chunks based on a second error correction code (ECC); and

writing the concatenated user data chunks and the generated first parity to the first non-volatile memory, wherein the generated first parity is written to a first physical location of the first non-volatile memory; and

monitoring a frequency of access of the written user data chunks, which comprises tracking, for each respective user data chunk, a third number of times that the respective user data chunk is updated.

7. The method of claim 6 , wherein the method further comprises writing an update of the respective user data chunk to the first non-volatile memory, which involves:

replacing an existing user data chunk with the updated user data chunk;

generating a new parity for the concatenated plurality of user data chunks, including the updated user data chunk, based on the second error correction code (ECC); and

in response to determining that the third number for the respective user data chunk is less than a third predetermined number, storing the new parity in the same first physical location.

8. The method of claim 7 , wherein the method further comprises:

in response to determining that the third number for the respective user data chunk is greater than the third predetermined number:

storing the new parity in a second physical location of the first non-volatile memory; and

marking the first physical location as available or part of a reserved pool of pages for subsequent use.

9. A computer system, comprising:

a processor; and

a memory coupled to the processor and storing instructions which, when executed by the processor, cause the processor to perform a method, the method comprising:

receiving a first request to write data to a storage system, which comprises a first non-volatile memory, a second non-volatile memory, a dynamic random access memory (DRAM), and a third non-volatile memory;

writing the data to the first non-volatile memory;

monitoring a frequency of access of the data, which comprises:

determining whether the data is read at a frequency greater than or less than a first predetermined threshold; and

determining whether the data is updated at a frequency greater than or less than a second predetermined threshold;

responsive to determining that the data is read at a frequency greater than a first predetermined threshold and responsive to determining that the data is updated at a frequency less than a second predetermined threshold, copying the data from the first non-volatile memory to the second non-volatile memory;

responsive to determining that the data is read at a frequency less than the first predetermined threshold and responsive to determining that the data is updated at a frequency greater than the second predetermined threshold, copying the data from the first non-volatile memory to the DRAM; and

responsive to determining that the data is read at a frequency less than the first predetermined threshold and responsive to determining that the data is updated at a frequency less than the second predetermined threshold, copying the data from the first non-volatile memory to the third non-volatile memory.

10. The computer system of claim 9 , wherein the method further comprises:

leaving the data in the first non-volatile memory in response to determining that the data is read at a frequency greater than the first predetermined threshold and is updated at a frequency greater than the second predetermined threshold.

11. The computer system of claim 9 , wherein the method further comprises:

tracking, in a first table, a first number of times that the data is read; and

tracking, in the first table, a second number of times that the data is updated.

12. The computer system of claim 9 ,

wherein a first reserved pool of pages in the first non-volatile memory is associated with usage by user data,

wherein a second reserved pool of pages in the first non-volatile memory is associated with usage by parity data,

wherein the second reserved pool is bigger than the first reserved pool, and

wherein a first ratio of a nominal capacity for user data to a nominal capacity for parity data is greater than a second ratio of a size of the first reserved pool to a size of the second reserved pool.

13. The computer system of claim 9 ,

wherein the first non-volatile memory comprises a magnetoresistive random-access memory (MRAM),

wherein the second non-volatile memory comprises a Not-OR (NOR) memory, and

wherein the third non-volatile memory comprises a Not-AND (NAND) memory.

14. The computer system of claim 9 , wherein the method further comprises:

writing a plurality of user data chunks to the first non-volatile memory,

wherein a respective user data chunk is associated with a first user portion and a second parity portion generated based on a first error correction code (ECC) encoding of the first user portion, and

wherein writing the plurality of user data chunks to the first non-volatile memory involves:

concatenating the plurality of user data chunks;

generating a first parity for the concatenated plurality of user data chunks based on a second error correction code (ECC); and

writing the concatenated user data chunks and the generated first parity to the first non-volatile memory,

wherein the generated first parity is written to a first physical location of the first non-volatile memory; and

monitoring a frequency of access of the written user data chunks, which comprises tracking, for each respective user data chunk, a third number of times that the respective user data chunk is updated.

15. The computer system of claim 14 , wherein the method further comprises writing an update of the respective user data chunk to the first non-volatile memory, which involves:

replacing an existing user data chunk with the updated user data chunk;

generating a new parity for the concatenated plurality of user data chunks, including the updated user data chunk, based on the second error correction code (ECC); and

in response to determining that the third number for the respective user data chunk is less than a third predetermined number, storing the new parity in the same first physical location.

16. The computer system of claim 15 , wherein the method further comprises:

in response to determining that the third number for the respective user data chunk is greater than the third predetermined number:

storing the new parity in a second physical location of the first non-volatile memory; and

marking the first physical location as available or part of a reserved pool of pages for subsequent use.

17. An apparatus, comprising:

a storage system, which comprises a first non-volatile memory, a second non-volatile memory, a dynamic random access memory (DRAM), and a third non-volatile memory;

a physical media-managing unit configured to write the data to the first non-volatile memory;

a frequency-monitoring unit configured to monitor a frequency of access of the data, which comprises:

determining whether the data is read at a frequency greater than or less than a first predetermined threshold; and

determining whether the data is updated at a frequency greater than or less than a second predetermined threshold;

wherein the physical media-managing unit is further configured to, responsive to the frequency-monitoring unit determining that the data is read at a frequency greater than a first predetermined threshold and determining that the data is updated at a frequency less than a second predetermined threshold copy the data from the first non-volatile memory to the second non-volatile memory;

wherein the physical media-managing unit is further configured to, responsive to the frequency-monitoring unit determining that the data is read at a frequency less than the first predetermined threshold and determining that the data is updated at a frequency greater than the second predetermined threshold, copy the data from the first non-volatile memory to the DRAM; and

wherein the physical media-managing unit is further configured to, responsive to the frequency-monitoring unit determining that the data is read at a frequency less than the first predetermined threshold and determining that the data is updated at a frequency less than the second predetermined threshold, copy the data from the first non-volatile memory to the third non-volatile memory.

18. The apparatus of claim 17 ,

wherein the physical media-managing unit is further configured to:

write a plurality of user data chunks to the first non-volatile memory, wherein a respective user data chunk is associated with a first user portion and a second parity portion generated based on a first error correction code (ECC) encoding of the first user portion; and

concatenate the plurality of user data chunks;

and wherein the apparatus further comprises:

an ECC-encoding/decoding unit configured to generate a first parity for the concatenated plurality of user data chunks based on a second error correction code (ECC);

wherein the physical media-managing unit is further configured to write the concatenated user data chunks and the generated first parity to the first non-volatile memory, wherein the generated first parity is written to a first physical location of the first non-volatile memory;

wherein the frequency-monitoring unit is further configured to monitor a frequency of access of the written user data chunks, which comprises tracking, for each respective user data chunk, a third number of times that the respective user data chunk is updated;

wherein the physical media-managing unit is further configured to write an update of the respective user data chunk to the first non-volatile memory, which involves:

the physical media-managing unit replacing an existing user data chunk with the updated user data chunk;

the ECC-encoding/decoding unit generating a new parity for the concatenated plurality of user data chunks, including the update user data chunk, based on the second error correction code (ECC); and

wherein in response to the frequency-monitoring unit determining that the third number for the respective user data chunk is less than a third predetermined number, the physical media-managing unit is further configured to store the new parity in the same first physical location; and

wherein in response to the frequency-monitoring unit determining that the third number for the respective user data chunk is greater than the third predetermined number, the physical media-managing unit is further configured to:

store the new parity in a second physical location of the first non-volatile memory; and

mark the first physical location as available or part of a reserved pool of pages for subsequent use.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2026
From: ALIBABA GROUP HOLDING LIMITED
To: CLOUD INTELLIGENCE ASSETS HOLDING (SINGAPORE) PRIVATE LIMITED
Reel/Frame 075499/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2020
From: LI, SHU
To: ALIBABA GROUP HOLDING LIMITED
Reel/Frame 052238/0600 →
Continuity (1)
Related Publication 20210294695A1 · Sep 23, 2021