IP Library Granted Patent US 10,908,847
Granted Patent B2
US 10,908,847 · App. 16/690,528 · Granted Feb 2, 2021

Volatility management for non-volatile memory device

Inventors: Viacheslav Dubeyko (San Jose, CA); Luis Cargnini (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
G06F3/0659G06F3/065G06F3/0619G06F3/0644G06F3/0688
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,908,847
App. No.
16/690,528
Granted
Feb 2, 2021
Kind
B2
Abstract

A Memory Device (MD) includes a Non-Volatile Memory (NVM) including a first memory array and a second memory array. An address is associated with a first location in the first memory array and with a second location in the second memory array. A read command is received to read data for the address, and it is determined whether data stored in the NVM for the address is persistent. If not, it is determined whether data for the address has been written for the address after a last power-up of the MD. The read command is performed by returning zeroed data if data has not been written for the address after the last power-up. If data has been written after the last power-up, data stored in the first location is returned. In one aspect, a processor sends a command to the MD setting a volatility mode for the MD.

Claims (61)

1. A Memory Device (MD), comprising:

a configurable Non-Volatile Memory (NVM) including a first memory array and a second memory array for storing data, wherein the configurable NVM is configured to store temporary data designated for volatile storage and persistent data designated for non-volatile storage; and

a controller configured to:

associate an address with a first location in the first memory array and with a second location in the second memory array;

receive a read command to read data from the configurable NVM for the address;

determine whether data stored in the configurable NVM for the address is persistent; and

in response to determining that the data stored in the configurable NVM for the address is not persistent:

determine whether data has been written for the address after a last power-up of the MD;

perform the read command by returning zeroed data if data for the address has not been written after the last power-up of the MD; and

perform the read command by returning data stored in the first location if data for the address has been written after the last power-up of the MD.

2. The MD of claim 1 , wherein the controller is further configured to:

receive a write command to write data in the configurable NVM for the address; and

in performing the write command, determine whether to write the data in the second location based on a volatility mode of operation set for the MD.

3. The MD of claim 2 , wherein when the volatility mode of operation for the MD is set to a volatile mode, the controller is further configured to write the data for the write command in the first location without writing the data in the second location.

4. The MD of claim 3 , wherein the controller is further configured to ensure that an indication in a persistency data structure stored in an NVM location of the MD indicates that the configurable NVM does not store persistent data for a corresponding address after performing the write command.

5. The MD of claim 1 , wherein when the volatility mode of operation for the MD is set to a persistent mode, the controller is further configured to write the data for the write command in both the first location and the second location.

6. The MD of claim 5 , wherein the controller is further configured to ensure that an indication in a persistency data structure stored in an NVM location of the MD indicates that the configurable NVM stores persistent data for a corresponding address after performing the write command.

7. The MD of claim 1 , wherein the controller is further configured to determine whether the data stored in the configurable NVM for the address is persistent by checking a persistency data structure stored in an NVM location of the MD.

8. The MD of claim 1 , wherein the controller is further configured to determine whether the data stored in the configurable NVM for the address is persistent by comparing data stored in the first location with data stored in the second location.

9. The MD of claim 1 , wherein the controller is further configured to:

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

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

in response to determining that the data stored in the second location is not checkpointed data, perform the checkpoint read command by returning zeroed data or data stored in the first location based on whether data for the address has been written after the last power-up of the MD.

10. The MD of claim 9 , wherein in response to determining that the data stored in the second location is checkpointed data, perform the checkpoint read command by returning the checkpointed data from the second location.

11. The MD of claim 9 , wherein the controller is further configured to determine whether the data stored in the second location is checkpointed data by checking a checkpoint data structure stored in an NVM location of the MD.

12. A processor, comprising:

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

means for:

defining a volatility mode of operation for the MD based on whether a memory page in a virtual memory space is designated as volatile or non-volatile;

sending a command to the MD setting the defined volatility mode of operation for the MD, wherein the defined volatility mode of operation is used by the MD to determine whether:

to write data as persistent data in both a first memory array of the configurable NVM and in a second memory array of the configurable NVM when the volatility mode is set to a persistent mode, or

to write data as volatile data in the first memory array without writing the data in the second memory array when the volatility mode is set to a volatile mode; and

sending a read command to the MD to read data from the configurable NVM, wherein zeroed data is returned for the read command if the data was written when the volatility mode of the MD was set to the volatile mode and before a last power-up of the MD.

13. The processor of claim 12 , wherein data stored in the first memory array is returned for the read command if the data was written when the volatility mode of the MD was set to the persistent mode and the data was written after the last power-up of the MD.

14. The processor of claim 12 , wherein data stored in either the first memory array or in the second memory array is returned for the read command when the volatility mode of the MD was set to the persistent mode when the data was written.

15. The processor of claim 12 , wherein the command to set the defined volatility mode of operation for the MD is a separate command from a write command to write the data in the configurable NVM.

16. The processor of claim 12 , further comprising means for sending to the MD at least one of:

a checkpoint command to copy data from the first memory array to the second memory array, and

a checkpoint read command to retrieve checkpointed data from the second memory array.

17. A method of operating a Memory Device (MD), the method comprising:

associating an address with a first location in a first memory array of a configurable Non-Volatile Memory (NVM) of the MD and with a second location in a second memory array of the configurable NVM;

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

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

in response to determining that the data stored in the second location is not checkpointed data:

determining whether data for the address has been written after a last power-up of the MD;

performing the checkpoint read command by returning zeroed data if data for the address has not been written after the last power-up of the MD; and

performing the checkpoint read command by returning data stored in the first location if data for the address has been written after the last power-up of the MD.

18. The method of claim 17 , further comprising determining whether the data stored in the second location is checkpointed data by checking a checkpoint data structure stored in an NVM location of the MD.

19. A method of operating a Memory Device (MD), the method comprising:

associating an address with a first location in a first memory array of a configurable Non-Volatile Memory (NVM) of the MD and with a second location in a second memory array of the configurable NVM, wherein the configurable NVM is configured to store temporary data designated for volatile storage by a processor and persistent data designated for non-volatile storage by the processor;

receiving a read command to read data from the configurable NVM for the address;

determining whether data stored in the configurable NVM for the address is persistent; and

in response to determining that the data stored in the configurable NVM for the address is not persistent:

determining whether the data has been written after a last power-up of the MD; and

performing the read command by returning data stored in the first location when data for the address has been written after the last power-up of the MD.

20. A method for interfacing with a Memory Device (MD), the method comprising:

defining a volatility mode of operation for the MD based on whether a memory page in a virtual memory space is designated as volatile or non-volatile;

sending a command to the MD setting the defined volatility mode of operation for the MD, wherein the defined volatility mode of operation is used by the MD to determine whether:

to write data as persistent data in both a first memory array of a configurable NVM and in a second memory array of the configurable NVM when the volatility mode is set to a persistent mode, or

to write data as volatile data in the first memory array without writing the data in the second memory array when the volatility mode is set to a volatile mode; and

sending a read command to the MD to read data from the configurable NVM, wherein zeroed data is returned for the read command when the data was written when the volatility mode of the MD was set to the volatile mode and was not written after a last power-up of the MD.

Assignments (10)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 →
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 052025 FRAME 0088 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0699 →
SECURITY INTEREST Recorded Feb 26, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052025/0088 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: DUBEYKO, VIACHESLAV; CARGNINI, LUIS
To: WESTERN DIGITAL TECHNOLOGIES, INC
Reel/Frame 051076/0095 →