Multi-layer memory system having multiple partitions in a layer
Abstract
A multi-layer memory and method for operation is disclosed. The memory includes multiple layers, where each layer includes flash memory cells having a greater bit per cell capacity than then prior layer and each layer may include a plurality of partitions having blocks exclusively associated with a particular data type. The method may include the steps of directing host data directly into a particular partition of a particular layer of the multi-layer memory upon receipt depending on a type of the data. The method may also include copying data within the same partition in a respective layer in a data relocation operation to generate more free blocks of memory so that data preferably stays within each layer and in the same partition, as well as transferring data from one layer to the next higher bit per cell layer within a same partition when layer transfer criteria are met.
Claims
exact text as granted — not AI-modifiedWe claim:
1 . A mass storage memory system, comprising:
an interface adapted to receive data from a host system; a flash memory having a plurality of layers, each of the plurality of layers having a different bit-per-cell data capacity and a plurality of memory blocks; wherein each of the plurality of layers comprises a plurality of partitions, and each programmed block of the plurality of memory blocks in a layer is exclusively classified as being in a respective one of the plurality of partitions in the flash memory layer; and a controller in communication with the interface and the flash memory, the controller configured to direct data received from the host system to one of the plurality of partitions in the plurality of layers of the flash memory.
2 . The mass storage memory system of claim 1 , wherein the controller is configured to determine an attribute of received data from the host system and direct the received host data to a block in one of the plurality of partitions in one of the plurality of layers based on the determined attribute.
3 . The mass storage memory system of claim 2 , wherein the attribute of received data comprises whether the received data is sequential or random.
4 . The mass storage memory system of claim 3 , wherein the controller is configured to determine that the received data is sequential in response to receiving host data having sequential host logical block addresses in an amount spanning at least one metapage of data.
5 . The mass storage memory system of claim 3 , wherein the controller is configured to:
in response to determining that the received data is random, direct the random data to a random data partition in a first layer of the flash memory; and in response to determining that the received data is sequential, direct the received data to a sequential data partition in a second layer of the flash memory.
6 . The mass storage memory system of claim 2 , wherein the attribute of the received data comprises a data type characteristic of the received data provided by the host system.
7 . The mass storage memory system of claim 1 , wherein the flash memory comprises a flash memory die having each of the plurality of layers.
8 . The mass storage memory system of claim 1 , wherein the flash memory comprises a plurality of flash memory die, a first of the plurality of flash memory die having one of the plurality of layers and a second of the plurality of flash memory die having a different one of the plurality of layers.
9 . The mass storage memory of claim 3 , wherein the controller is further configured to:
perform a maintenance operation in a layer when a number of blocks in a free block pool in the layer falls below a predetermined threshold, wherein the maintenance operation comprises a data relocation operation to relocate valid data from at least one block in a particular partition of the layer to a relocation block in the particular layer assigned to only receive valid data from blocks in the particular partition.
10 . The mass storage memory of claim 3 , wherein the controller is configured to perform a maintenance operation in a layer when an amount of valid data in all partitions of a layer exceeds a predetermined threshold, wherein the maintenance operation comprises moving data from a block in the layer to a block in a next layer, and wherein the controller is configured to only move data from a block in a first partition type in the layer to a block in a same partition type in the next layer.
11 . A mass storage memory system, comprising:
an interface adapted to receive data from a host system; a flash memory having a plurality of layers, each of a plurality of layers having a different bit-per-cell data capacity and a plurality of memory blocks; wherein each of the plurality of layers comprises a plurality of partitions, and each programmed block of the plurality of memory blocks in a layer is exclusively classified as being in a respective one of the plurality of partitions in the layer; wherein, in each of the plurality of layers, the plurality of memory blocks includes a pool of free blocks; and a controller in communication with the interface and the flash memory, the controller configured to:
direct data received from the host to one of the plurality of partitions in the plurality of layers of the flash memory based on an attribute of the received data; and
during maintenance operations in a layer, when a number of free blocks in the pool of free blocks for the particular layer is above a predetermined threshold, only relocate valid data from a block associated with a particular partition into a relocation block associated with the same partition of the layer; and
dynamically adjust a size of one of the plurality of partitions in a layer by allocating a free block from the pool of free blocks for the layer to the one of the plurality of partitions in response to receiving additional data associated with the one of the plurality of partitions.
12 . The mass storage memory system of claim 1 , wherein the controller is further configured to dynamically adjust the size of the one of the plurality of partitions by moving data from a block in the partition to a same partition in another of the plurality of layers, and reallocating the block to the pool of free blocks for later use in any of the plurality of partitions in the layer.
13 . A method of managing movement of data comprising:
in a mass storage memory system having an interface adapted to receive data from a host system, a flash memory having a plurality of layers, each of a plurality of layers having a different bit-per-cell data capacity and a plurality of memory blocks and each of the plurality of layers comprises a plurality of partitions, and a controller in communication with the interface and the flash memory, the controller: receiving data from the host system; determining an attribute of the received data from the host system; and directing the received host data to a block in one of the plurality of partitions in one of the plurality of layers based on the determined attribute, where each programmed block of the plurality of memory blocks in a layer is exclusively classified as being in a respective one of the plurality of partitions in the layer.
14 . The method of claim 13 , wherein determining the attribute comprises determining whether the received data is sequential or random.
15 . The method of claim 14 , wherein determining whether the received data is sequential comprises identifying whether the received data has sequential host logical block addresses in an amount spanning at least one metapage of data.
16 . The method of claim 15 , further comprising:
in response to determining that the received data is random, directing the random data to a random data partition in a first layer of the flash memory; and in response to determining that the received data is sequential, directing the received data to a sequential data partition in a second layer of the flash memory.
17 . The method of claim 13 , wherein the attribute of the received data comprises a data type characteristic of the received data provided by the host system.
18 . The method of claim 13 , further comprising performing a maintenance operation in a layer when a number of blocks in a free block pool in the layer falls below a predetermined threshold, comprising relocating valid data from at least one block in a particular partition of the layer to a relocation block in the particular layer.
19 . The method of claim 13 , further comprising performing a maintenance operation in a layer when an amount of valid data in all partitions of a layer exceeds a predetermined threshold, comprising moving data from a block in the layer to a block in a next layer, and wherein the controller is configured to only move data from the block in the layer to a second block in a same partition in the next layer.
20 . The method of claim 13 , further comprising dynamically adjusting a size of one of the plurality of partitions in a layer by allocating a free block from a pool of free blocks for the layer to the one of the plurality of partitions in response to receiving additional data associated with the one of the plurality of partitions; and
moving data from a block in the one of the plurality of partitions to a same partition in another of the plurality of layers, and reallocating the block to the pool of free blocks for later use in any of the plurality of partitions in the layer.Join the waitlist — get patent alerts
Track US2016378379A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.