# US 2019/0171391 A1 · Volatility management for non-volatile memory device

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0171391 A1
- Document ID: US20190171391A1
- Status: Published application
- Kind: A1
- Application number: 15/833,837
- Filed: 2017-12-06
- Published: 2019-06-06
- Earliest claimed: 2017-12-06
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Viacheslav Dubeyko; Luis Cargnini
- Web page: https://patentgrep.com/patent/US20190171391A1

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/068: {Hybrid storage device}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A Memory Device (MD) includes a configurable Non-Volatile Memory (NVM) including a first memory array and a second memory array. The configurable NVM stores temporary data designated for volatile storage by a Central Processing Unit (CPU) and persistent data designated for non-volatile storage by the CPU. An address is associated with a first location in the first memory array and with a second location in the second memory array. In performing a command to write data for the address, it is determined whether to write the data in the second location based on a volatility mode set for the MD. According to another aspect, a CPU 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

### Claim 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 by a Central Processing Unit (CPU) and persistent data designated for non-volatile storage by the CPU; 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 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.

### Claim 2 (depends on 1)

The MD of claim 1, 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.

### Claim 3 (depends on 2)

The MD of claim 2, 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 the address after performing the write command.

### Claim 4 (depends on 1)

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.

### Claim 5 (depends on 4)

The MD of claim 4, 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 the address after performing the write command.

### Claim 6 (depends on 1)

The MD of claim 1, wherein the controller is further configured to:
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 indicates that the data is persistent;
in response to determining that the data stored in the configurable NVM for the address is not persistent, perform the read command by returning zeroed data or by returning data stored in the first location, wherein zeroed data is returned when data for the address has not been written since power-up of the MD and data stored in the first location is returned when data for the address has been written since power-up of the MD; and
in response to determining that the data stored in the configurable NVM for the address is persistent, perform the read command by returning the data stored in the configurable NVM for the address from either the first location or the second location.

### Claim 7 (depends on 6)

The MD of claim 6, 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 or by comparing data stored in the first location with data stored in the second location.

### Claim 8 (depends on 1)

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;
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; 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 since power-up of the MD.

### Claim 9 (depends on 8)

The MD of claim 8, 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.

### Claim 10

A Central Processing Unit (CPU), 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
a processor 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 configurable NVM, wherein the defined volatility mode of operation is used by the MD to determine whether to write the data in both a first memory array of the configurable NVM and a second memory array of the configurable NVM or to write the data in the first memory array without writing the data in the second memory array.

### Claim 11 (depends on 10)

The CPU of claim 10, wherein the processor 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.

### Claim 12 (depends on 10)

The CPU of claim 10, wherein the processor is further configured to send to the MD at least one of a checkpoint command to copy data within the configurable NVM and a checkpoint read command to retrieve checkpointed data from the configurable NVM.

### Claim 13

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 Central Processing Unit (CPU) and persistent data designated for non-volatile storage by the CPU;
receiving a write command to write data in the configurable NVM for the address; and
in performing the write command, determining whether to write the data in the second location based on a volatility mode of operation set for the MD.

### Claim 14 (depends on 13)

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

### Claim 15 (depends on 14)

The method of claim 14, wherein the method further comprises ensuring 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 the address after performing the write command.

### Claim 16 (depends on 13)

The method of claim 13, wherein when the volatility mode of operation for the MD is set to a persistent mode, the method further comprises writing the data for the write command in both the first location and the second location.

### Claim 17 (depends on 16)

The method of claim 16, wherein the method further comprises ensuring 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 the address after performing the write command.

### Claim 18 (depends on 13)

The method of claim 13, further comprises:
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 indicates that the data is persistent;
in response to determining that the data stored in the configurable NVM for the address is not persistent, performing the read command by returning zeroed data or by returning data stored in the first location, wherein zeroed data is returned when data for the address has not been written since power-up of the MD and data stored in the first location is returned when data for the address has been written since power-up of the MD; and
in response to determining that the data stored in the configurable NVM for the address is persistent, performing the read command by returning the data stored in the configurable NVM for the address from either the first location or the second location.

### Claim 19 (depends on 18)

The method of claim 18, further comprising determining 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 or by comparing data stored in the first location with data stored in the second location.

### Claim 20 (depends on 13)

The method of claim 13, further comprising:
receiving a checkpoint read 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 checkpoint read 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 checkpoint read command by returning zeroed data or data stored in the first location based on whether data for the address has been written since power-up of the MD.

### Claim 21 (depends on 20)

The method of claim 20, 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.

### Claim 22

A method of operating a Central Processing Unit (CPU), 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, wherein the MD 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
sending a write command to the MD to write the data allocated to the memory page in the configurable NVM, wherein the defined volatility mode of operation is used by the MD to determine whether to write the data in both a first memory array of the configurable NVM and a second memory array of the configurable NVM or to write the data in the first memory array without writing the data in the second memory array.

### Claim 23 (depends on 22)

The method of claim 22, 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.

### Claim 24 (depends on 22)

The method of claim 22, further comprising sending to the MD at least one of a checkpoint command to copy data within the configurable NVM and a checkpoint read command to retrieve checkpointed data from the configurable NVM.

### Claim 25

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 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 Central Processing Unit (CPU) and persistent data designated for non-volatile storage by the CPU;
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 of operation set for the MD.

### Claim 26

A non-transitory computer readable medium storing computer-executable instructions, wherein when the computer-executable instructions are executed by a processor of a Central Processing Unit (CPU), 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, wherein the MD 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
send a write command to the MD to write the data allocated to the memory page in the configurable NVM, wherein the defined volatility mode of operation is used by the MD to determine whether to write the data in both a first memory array of the configurable NVM and a second memory array of the configurable NVM or to write the data in the first memory array without writing the data in the second memory array.
