IP Library Granted Patent US 11,579,770
Granted Patent B2
US 11,579,770 · App. 15/922,007 · Granted Feb 14, 2023

Volatility management for memory device

Inventors: Viacheslav Dubeyko (San Jose, CA); Luis Cargnini (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
G06F3/0604G06F3/0646G06F3/0679G11C14/0009
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,579,770
App. No.
15/922,007
Granted
Feb 14, 2023
Kind
B2
Abstract

A Memory Device (MD) for storing temporary data designated for volatile storage by a processor and persistent data designated for non-volatile storage by the processor. An address is associated with a first location in a volatile memory array and with a second location in a Non-Volatile Memory (NVM) array of the MD. Data is written in the first location, and flushed from the first location to the second location. A refresh rate for the first location is reduced after flushing the data from the first location until after data is written again to the first location. In another aspect, a processor designates a memory page in a virtual memory space as volatile or non-volatile based on data allocated to the memory page, and defines the volatility mode for the MD based on whether the memory page is designated as volatile or non-volatile.

Claims (102)

1. A method of operating a Memory Device (MD) for storing temporary data designated for volatile storage by a processor and persistent data designated for non-volatile storage by the processor, the method comprising:

associating an address with a first location in a volatile memory array of the MD and with a second location in a Non-Volatile Memory (NVM) array of the MD, wherein the address is a byte address or a page address;

receiving a write command to write data in the MD for the address;

writing the data in the first location;

flushing the data from the first location to the second location; and

reducing a refresh rate for the first location associated with the address as compared to other portions of the volatile memory array after flushing the data from the first location until after data is written again to the first location.

2. The method of claim 1 , wherein the volatile memory array includes an embedded Dynamic Random Access Memory (eDRAM).

3. The method of claim 1 , further comprising:

setting a volatility mode of operation for the MD based on an indication from the processor;

when the write command is performed while the volatility mode of operation is set to a volatile mode, ensuring that an indication in a persistency data structure stored in an NVM location of the MD indicates that the MD does not store persistent data for the address after performing the write command; and

when the write command is performed while the volatility mode of operation is set to a persistent mode, ensuring that the indication in the persistency data structure indicates that the MD stores persistent data for the address after performing the write command.

4. The method of claim 3 , further comprising:

receiving a read command for the address;

determining whether the MD stores persistent data for the address using the persistency data structure;

in response to determining that the data stored in the MD for the address is not persistent, performing the read command by returning the data stored in the first location or in the second location based on whether the data has been flushed from the first location to the second location since a last power-up of the MD; and

in response to determining that the data stored in the MD for the address is persistent, performing the read command by returning the data stored in the second location.

5. The method of claim 1 , further comprising:

receiving a get checkpoint command to retrieve checkpointed data for the address;

determining whether data stored in the second location is checkpointed data;

in response to determining that the data stored in the second location is checkpointed data, performing the get checkpoint command by returning the checkpointed data from the second location; and

in response to determining that the data stored in the second location is not checkpointed data, performing the get checkpoint command by returning data stored in the first location.

6. The method of claim 1 , further comprising:

receiving a command to start a transaction for a plurality of addresses;

checkpointing data for the plurality of addresses in the NVM array;

directing write commands for the plurality of addresses to respective first locations in the volatile memory array during the transaction;

directing read commands for the plurality of addresses to respective second locations in the NVM array during the transaction; and

in response to receiving a command to finish the transaction, copying the data for the plurality of addresses from the first locations in the volatile memory array to the corresponding second locations in the NVM array.

7. A method for operating a processor, the method comprising:

designating a memory page in a virtual memory space as volatile or non-volatile based on data allocated to the memory page;

defining a volatility mode of operation for a Memory Device (MD) based on whether the memory page is designated as volatile or non-volatile; and

sending a write command to the MD to write the data allocated to the memory page in the MD, wherein the defined volatility mode of operation is used by the MD to ensure that an indication in a persistency data structure stored in an NVM location of the MD indicates whether the MD stores persistent data for an address associated with the data after performing the write command, and

wherein the MD is configured to associate the address with a first physical location in the volatile memory array and with a second physical location in the NVM array before receiving the write command.

8. The method of claim 7 , further comprising setting the defined volatility mode of operation for the MD by sending a separate volatility mode command to the MD or by including an indication of the defined volatility mode with the command.

9. The method of claim 7 , further comprising sending to the MD at least one of a checkpoint copy command to rollback data to an earlier state and a get checkpoint command to retrieve checkpointed data from the MD.

10. The method of claim 7 , wherein the processor forms part of a System on a Chip (SoC).

11. The method of claim 7 , wherein the processor and the MD form at least part of a system.

12. A Memory Device (MD) for storing temporary data designated for volatile storage by a processor and persistent data designated for non-volatile storage by the processor, the MD comprising:

a volatile memory array;

a Non-Volatile Memory (NVM) array; and

a controller configured to:

associate an address with a first location in the volatile memory array and with a second location in the NVM array, wherein the address is a byte address or a page address;

receive a write command to write data in the MD for the address;

write the data in the first location;

flush the data from the first location to the second location; and

reduce a refresh rate for the first location associated with the address as compared to other portions of the volatile memory array after flushing the data from the first location until after data is written again to the first location.

13. The MD of claim 12 , wherein the volatile memory array includes an embedded Dynamic Random Access Memory (eDRAM).

14. The MD of claim 12 , wherein the controller is further configured to:

set a volatility mode of operation for the MD based on an indication from the processor;

when the write command is performed while the volatility mode of operation is set to a volatile mode, ensure that an indication in a persistency data structure stored in an NVM location of the MD indicates that the MD does not store persistent data for the address after performing the write command; and

when the write command is performed while the volatility mode of operation is set to a persistent mode, ensure that the indication in the persistency data structure indicates that the MD stores persistent data for the address after performing the write command.

15. The MD of claim 14 , wherein the controller is further configured to:

receive a read command for the address;

determine whether the MD stores persistent data for the address using the persistency data structure;

in response to determining that the data stored in the MD for the address is not persistent, perform the read command by returning the data stored in the first location or in the second location based on whether the data has been flushed from the first location to the second location since a last power-up of the MD; and

in response to determining that the data stored in the MD for the address is persistent, perform the read command by returning the data stored in the second location.

16. The MD of claim 12 , wherein the controller is further configured to:

receive a get checkpoint command to retrieve checkpointed data for the address;

determine whether data stored in the second location is checkpointed data;

in response to determining that the data stored in the second location is checkpointed data, perform the get checkpoint command by returning the checkpointed data from the second location; and

in response to determining that the data stored in the second location is not checkpointed data, perform the get checkpoint command by returning data stored in the first location.

17. The MD of claim 12 , wherein the controller is further configured to:

receive a command to start a transaction for a plurality of addresses;

checkpoint data for the plurality of addresses in the NVM array;

direct write commands for the plurality of addresses to respective first locations in the volatile memory array during the transaction;

direct read commands for the plurality of addresses to respective second locations in the NVM array during the transaction; and

in response to receiving a command to finish the transaction, copy the data for the plurality of addresses from the first locations in the volatile memory array to the corresponding second locations in the NVM array.

18. A processor, comprising:

an interface for communicating with a Memory Device (MD) that includes a volatile memory array and a Non-Volatile Memory (NVM) array, the MD configured to store temporary data designated for volatile storage and persistent data designated for non-volatile storage; and

control circuitry configured to:

designate a memory page in a virtual memory space as volatile or non-volatile based on data allocated to the memory page;

define a volatility mode of operation for the MD based on whether the memory page is designated as volatile or non-volatile; and

send a write command to the MD to write the data allocated to the memory page in the MD, wherein the defined volatility mode of operation is used by the MD to ensure that an indication in a persistency data structure stored in an NVM location of the MD indicates whether the MD stores persistent data for an address associated with the data after performing the write command, and

wherein the MD is further configured to associate the address with a first physical location in the volatile memory array and with a second physical location in the NVM array before receiving the write command.

19. The processor of claim 18 , wherein the control circuitry is further configured to set the defined volatility mode of operation for the MD by sending a separate volatility mode command to the MD or by including an indication of the defined volatility mode with the command.

20. The processor of claim 18 , wherein the control circuitry is further configured to send to the MD at least one of a checkpoint copy command to rollback data to an earlier state and a get checkpoint command to retrieve checkpointed data from the MD.

21. The processor of claim 18 , wherein the processor forms part of a System on a Chip (SoC).

22. The processor of claim 18 , wherein the processor and the MD form at least part of a system.

23. The processor of claim 18 , wherein the MD is further configured to:

set the defined volatility mode of operation for the MD;

when the write command is performed while the defined volatility mode of operation is set to a volatile mode, ensure that the indication in the persistency data structure indicates that the MD does not store persistent data for the address after performing the write command; and

when the write command is performed while the defined volatility mode of operation is set to a persistent mode, ensure that the indication in the persistency data structure indicates that the MD stores persistent data for the address after performing the write command.

24. The processor of claim 18 , wherein the MD is further configured to:

receive the write command to write the data in the MD for the address, wherein the address is a byte address or a page address;

write the data in the first physical location;

flush the data from the first physical location to the second physical location; and

reduce a refresh rate for the first physical location after flushing the data from the first physical location until after data is written again to the first physical location.

25. The processor of claim 18 , wherein the MD is further configured to:

receive a read command for the address;

determine whether the MD stores persistent data for the address using the persistency data structure;

in response to determining that the data stored in the MD for the address is not persistent, perform the read command by returning the data stored in the first physical location or in the second physical location based on whether the data has been flushed from the first physical location to the second physical location since a last power-up of the MD; and

in response to determining that the data stored in the MD for the address is persistent, perform the read command by returning the data stored in the second physical location.

26. A non-transitory computer readable medium storing computer-executable instructions, wherein when the computer-executable instructions are executed by a controller of a Memory Device (MD), the computer-executable instructions cause the controller to:

associate an address with a first location in a volatile memory array of the MD and with a second location in a Non-Volatile Memory (NVM) array of the MD, wherein the address is a byte address or a page address;

receive a write command to write data in the MD for the address;

write the data in the first location;

flush the data from the first location to the second location; and

reduce a refresh rate for the first location associated with the address as compared to other portions of the volatile memory array after flushing the data from the first location until after data is written again to the first location.

27. A non-transitory computer readable medium storing computer-executable instructions, wherein when the computer-executable instructions are executed by a processor, the computer-executable instructions cause the processor to:

designate a memory page in a virtual memory space as volatile or non-volatile based on data allocated to the memory page;

define a volatility mode of operation for a Memory Device (MD) based on whether the memory page is designated as volatile or non-volatile; and

send a write command to the MD to write the data allocated to the memory page in the MD, wherein the defined volatility mode of operation is used by the MD to ensure that an indication in a persistency data structure stored in an NVM location of the MD indicates whether the MD stores persistent data for an address associated with the data after performing the write command, and

wherein the MD is configured to associate the address with a first physical location in the volatile memory array and with a second physical location in the NVM array before receiving the write command.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 Mar 15, 2018
From: DUBEYKO, VIACHESLAV; CARGNINI, LUIS
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045234/0786 →