# US 2020/0401334 A1 · Multi-stream non-volatile storage system

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

- Number: US 2020/0401334 A1
- Document ID: US20200401334A1
- Status: Published application
- Kind: A1
- Application number: 16/445,498
- Filed: 2019-06-19
- Published: 2020-12-24
- Earliest claimed: 2019-06-19
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Vishwas Saxena; Abhijit Rao; Ravi Kumar; Saifullah Nalatwad
- Web page: https://patentgrep.com/patent/US20200401334A1

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/064: {Management of blocks}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 11/1048: {using arrangements adapted for a specific error detection or correction feature}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/10: Address translation
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 2212/1024: Latency reduction
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/214: Solid state disk
- G06F 2212/608: Details relating to cache mapping
- G06F 2212/657: Virtual address space management
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F 2212/7204: Capacity control, e.g. partitioning, end-of-life degradation
- G06F 2212/7205: Cleaning, compaction, garbage collection, erase control
- G06F 2212/7208: Multiple device management, e.g. distributing data over multiple flash devices
- G11C 2029/0411: {Online error correction}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

A non-volatile storage apparatus (e.g., an SSD, embedded memory, memory card, etc.) comprises non-volatile memory (e.g., one or more memory dies) connected to a control circuit (e.g., controller, state machine, microcontroller, etc.). The non-volatile memory is configured to have multiple regions for storing different types of data using separate streams. The control circuit is configured to receive a request to write data to a logical address, automatically choose a stream (and corresponding destination region) by determining which of the multiple regions/streams has a sequence of logical addresses associated with previous writes that best fits the logical address for the received data, and store the received data in the chosen destination region of the non-volatile memory using the chosen stream.

## Claims

### Claim 1

A non-volatile storage apparatus, comprising:
non-volatile memory, the non-volatile memory is configured to have multiple regions for storing different types of data; and
a control circuit connected to the non-volatile memory, the control circuit configured to:
receive a request to write first data to a first logical address,
automatically choose a destination region of the multiple regions by determining which of the multiple regions has a sequence of logical address associated with previous writes that best fits the first logical address, and
store the first data in the chosen destination region of the non-volatile memory.

### Claim 2 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
the non-volatile memory is configured to have a first region for storing user data and a second region for storing error correction data; and
the control circuit is configured to automatically choose the destination region by choosing whether to store the first data in the first region or the second region based on whether the first logical address better matches a sequence of logical addresses of data written to the first region or a sequence of logical addresses of data written to the second region.

### Claim 3 (depends on 2)

The non-volatile storage apparatus of claim 2, wherein:
the control circuit is configured to communicate multiple streams of data to the non-volatile memory;
each stream of data is written to a different region of the multiple regions;
a first stream of data includes MLC sequential user data and is written to the first region; and
a second stream of data includes MLC sequential error correction data and is written to the second region.

### Claim 4 (depends on 3)

The non-volatile storage apparatus of claim 3, wherein:
the request to write first data to the first logical address does not include an indication of which stream of data to assign the first data.

### Claim 5 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
the control circuit is configured to store the first data in the chosen destination region of the non-volatile memory by writing the first data to a first physical address in non-volatile memory that is in a first region of the non-volatile memory reserved for user data;
the control circuit is further configured to receive a request to write second data to the first logical address and write the second data to a second physical address in non-volatile memory that is in a second region of the non-volatile memory reserved for metadata; and
the control circuit is configured to invalidate the first data at the first physical address in the non-volatile memory in response to writing the second data to the second physical address in non-volatile memory.

### Claim 6 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
to automatically choose the destination region, the control circuit is configured to:
look for an entry in a routing table for a logical address adjacent to the first logical address,
if the logical address adjacent to the first logical address is found in the routing table, identify an indication of a first stream of sequential data associated with the logical address adjacent to the first logical address and route the first data to the first stream of sequential data for writing to one or more of the memory dies, and
if the logical address adjacent to the first logical address is not found in the routing table, compute average distance of the first logical address from logical addresses from multiple entries in the routing table for multiple streams of sequential data, choose a stream of sequential data having a smallest average distance of logical addresses and route the first data to the stream of sequential data having the smallest average distance of logical addresses for writing to one or more of the memory dies.

### Claim 7 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
to automatically choose the destination region, the control circuit is configured to:
look for an entry in a routing table for a logical address adjacent to the first logical address,
if the logical address adjacent to the first logical address is found in the routing table, identify an indication of a first stream of sequential data associated with the logical address adjacent to the first logical address and route the first data to the first stream of sequential data for writing to one or more of the memory dies,
if the logical address adjacent to the first logical address is not found in the routing table, compute average distance of the first logical address from logical addresses from multiple entries in the routing table for multiple streams of sequential data, choose a stream of sequential data having a smallest average distance of logical addresses and route the first data to the stream of sequential data having the smallest average distance of logical addresses for writing to one or more of the memory dies if the smallest average distance is less than a threshold, and
if the logical address adjacent to the first logical address is not found in the routing table and the smallest average distance is not less than the threshold, route the data to a stream not written to for a longest time in relation to other streams.

### Claim 8 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
the control circuit includes a local memory;
the local memory is configured to store a routing table;
the routing table configured to store routing data for multiple previous sequential writes;
the routing data comprises an identification of a stream, a start logical address, a finish logical address and a time stamp; and
the control circuits is configured to determine which of the multiple regions has a sequence of logical address associated with previous writes that best fits the first logical address by comparing the first logical address to finish logical addresses in the routing table.

### Claim 9 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
the control circuit is configured to write data in a cache prior to writing to the non-volatile memory;
the control circuit is configured to communicate multiple streams of data to the non-volatile memory;
each stream of data is written to a different region of the multiple regions;
a first stream of data is written to a first region;
a second stream of data is written to a second region; and
the control circuit is configured to flush the cache prior to storing the first data in the chosen destination region if the automatically choosing the destination region causes the control circuitry to switch streams of data.

### Claim 10 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
the control circuit is configured to communicate multiple streams of data to the non-volatile memory;
the multiple streams include a first stream for sequential data, a second stream for sequential data, a stream for random data and a stream for relocation data;
the control circuit includes a local memory;
the control circuit is configured to use a first portion of the local memory for storing information to reconstruct data written to an open block of the first stream for sequential data, a second portion of the local memory for storing information to reconstruct data written to an open block of the stream for random data, and a third portion of the local memory for storing information to reconstruct data written to an open block of the stream for relocation data; and
the control circuit is configured to use at least one of the second portion of the local memory and the third portion of the local memory for storing information to reconstruct data written to an open block of the second stream for sequential data.

### Claim 11 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
the control circuit is configured to communicate multiple streams of data to the non-volatile memory;
each stream of data is written to a different region of the multiple regions;
the multiple streams include a first stream for sequential data, a second stream for sequential data, and a stream for random data;
the control circuit is configured to store information in the non-volatile memory of which word lines of an open block for the first stream for sequential data have been programmed and which word lines of an open block for the second stream for sequential data have been programmed in response to a threshold amount of data being programmed into the open block for the first stream for sequential data and the open block for the second stream for sequential data; and
the control circuit is configured to use the information in the non-volatile memory of which word lines of the open block for the first stream for sequential data have been programmed and which word lines of the open block for the second stream for sequential data have been programmed at start-up to determine where new data can be written after start-up.

### Claim 12 (depends on 1)

The non-volatile storage apparatus of claim 1, wherein:
the control circuit is a controller;
the non-volatile memory comprises multiple memory dies;
the controller and the multiple memory dies comprise a solid state drive;
the solid state drive further comprises a host interface that is configured to connected to an entity external to the solid state drive;
the request to write the first data to the first logical address is received at the controller from the entity external to the solid state drive via the host interface;
the multiple regions include a first region for storing user data and a second region for storing metadata; and
the first region includes multiple erase blocks of memory that are physically in different memory dies.

### Claim 13

A method for operating non-volatile storage, the method comprising:
receiving a request to write first data to a first logical address;
writing the first data to a first physical address in non-volatile memory that is in a first region of the non-volatile memory reserved for metadata;
receiving a request to write second data to the first logical address; and
writing the second data to a second physical address in non-volatile memory that is in a second region of the non-volatile memory reserved for user data.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
automatically choosing the first region of multiple regions of the non-volatile memory by determining that the first region has a sequence of logical address associated with previous writes that best fits the first logical address as compared to other regions.

### Claim 15 (depends on 13)

The method of claim 13, wherein:
the writing the first data to the first physical address in non-volatile memory that is in the first region comprises writing to a first stream of data;
the writing the second data to the second physical address in non-volatile memory that is in the second region comprises switching streams to write data to a second stream of data; and
the method further comprises flushing a write cache in response to the switching streams.

### Claim 16 (depends on 13)

The method of claim 13, wherein:
the writing the first data to the first physical address in non-volatile memory that is in the first region comprises writing to a first stream of sequential data;
the writing the second data to the second physical address in non-volatile memory that is in the second region comprises switching streams to write data to a second stream of sequential data; and
the method further comprises storing information to reconstruct data written to an open block of the first stream of sequential data in a portion of volatile memory reserved for storing information to reconstruct data written for an open block of of random data.

### Claim 17 (depends on 13)

The method of claim 13, wherein:
the writing the first data to the first physical address in non-volatile memory that is in the first region comprises writing to a first stream of sequential data;
the writing the second data to the second physical address in non-volatile memory that is in the second region comprises switching streams to write data to a second stream of sequential data; and
the method further comprises:
storing information in the non-volatile memory of which word lines of an open block for the first stream for sequential data have been programmed and which word lines of an open block for the second stream for sequential data have been programmed in response to a threshold amount of data being programmed into the open block for the first stream for sequential data and the open block for the second stream for sequential data, and
using the information in the non-volatile memory of which word lines of the open block for the first stream for sequential data have been programmed and which word lines of the open block for the second stream for sequential data have been programmed at start-up to determine where new data can be written after start-up.

### Claim 18

A non-volatile storage apparatus, comprising:
a plurality of memory dies each including a non-volatile memory structure; and
a controller connected to the memory dies, the controller and memory dies form a solid state drive, the controller is configured to:
receive a request to write first data to a first logical address,
look for an entry in a routing table for a logical address adjacent to the first logical address,
if the logical address adjacent to the first logical address is found in the routing table, identify an indication of a first stream of sequential data associated with the logical address adjacent to the first logical address and route the first data to the first stream of sequential data for writing to one or more of the memory dies, and
if the logical address adjacent to the first logical address is not found in the routing table, compute average distance of logical addresses from multiple entries in the routing table for multiple streams of sequential data, choose a stream of sequential data having a smallest average distance of logical addresses and route the first data to the stream of sequential data having the smallest average distance of logical addresses for writing to one or more of the memory dies.

### Claim 19 (depends on 18)

The non-volatile storage apparatus of claim 18, wherein:
the first stream of sequential data is for user data being written to the one or more of the memory dies; and
the stream of sequential data having the smallest average distance of logical addresses is for error correction data being written to the one or more of the memory dies.

### Claim 20 (depends on 18)

The non-volatile storage apparatus of claim 18, wherein:
the controller is configured to receive a request to write second data to the first logical address, invalidate the first data and route the second data to a different stream than the first data for writing to one or more of the memory dies.
