Cluster auto-alignment
AssigneeSanDisk Corporation
InventorsSergey Gorobets, Alan Bennett
Life of this patent
Estimating the term…
Abstract
Alignment of clusters to pages is provided in a non-volatile memory system that receives data from a host in clusters and writes data to a memory array in units of a page. Alignment is implemented within each block using offsets in logical-to-physical mapping of data. Different blocks may have different offsets. When a host sends data with different cluster boundary locations, the data may be written with different offsets so that data maintains alignment.
Claims21
A method of storing addressable data packets in a non-volatile memory array that is connected to a host, the memory array having units of erase of a block, where one block of the memory array holds one logical block of data, a logical block formed of addressable data packets extending sequentially from a first addressable data packet to a last addressable data packet, data allocated by the host in units of a cluster, a cluster including multiple addressable data packets, comprising:
- determining an offset between a logical block boundary and a cluster boundary for data received from a host for storage in a block;
- selecting physical locations in the block for writing a plurality of clusters of the received data according to the offset, such that an individual cluster boundary is located at a page boundary;
- and
- writing a first partial cluster that includes the first addressable data packet and a last partial cluster that includes the last addressable data packet to a page of the block.
A method of storing clusters of data received from a host, a cluster containing multiple addressable units of data allocated together by a host, in a non-volatile memory array having a unit of programming of a page and a unit of erase of a block, a block containing multiple pages, comprising:
- receiving a plurality of clusters of data from a host;
- mapping the plurality of clusters to blocks of the memory array without regard to the locations of cluster boundaries;
- deriving an offset between cluster boundaries and mapped block boundaries;
- and
- storing clusters and portions of clusters that are mapped to a block in pages within the block, in a manner dependent on the derived offset, so that boundaries between clusters occur at page boundaries, without modifying the mapping of clusters to blocks.
A method of storing data that contains predefined cluster boundaries in metablocks of a non-volatile memory array, a metablock comprising two or more erase blocks that are programmed and erased in parallel, an erase block being the minimum unit of erase of the non-volatile memory array, a logical block consisting of data equal to the data in one metablock, a logical group consisting of data equal to the data in one erase block, comprising:
- receiving data for storage in a non-volatile memory, the data consisting of multiple sequential addressable data packets;
- storing a first one or more addressable data packets from a first cluster in a first location, the first cluster containing the first one or more addressable data packets from a first logical group and also containing a second one or more addressable data packets from a second logical group;
- storing subsequent sequential addressable data packets in pages of a first metablock, such that page boundaries occur at cluster boundaries;
- storing a third one or more addressable data packets from a last cluster with the first one or more addressable data packets in a page of the metablock, the last cluster containing the third one or more addressable data packets from the first logical group and also containing a fourth one or more addressable data packets from a third logical group.
A memory system for storing addressable data packets sent by a host in a non-volatile storage medium, comprising:
- a controller that receives addressable data packets from a host, addressable data packets forming clusters that are allocated to files by the host, a cluster containing multiple addressable data packets, a range of sequential addressable data packets mapped to a logical unit by the controller without regard to cluster locations;
- and
- a non-volatile memory array in communication with the controller, the non-volatile memory array having multiple erase blocks, an erase block being the minimum unit of erase of the memory array, one or more erase blocks assigned to store the logical unit, the one or more erase blocks being programmable and erasable together, the one or more erase blocks containing physical locations for storage of addressable data packets, the physical locations for storage of individual ones of the range of addressable data packets selected to provide cluster-to-page alignment for clusters within the logical unit, without modifying the range of addressable data packets that are mapped to the logical unit.
Dependencies are inferred from the claim text.