Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
First Claim
1. 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 each block of the memory array holds one logical block of data, each 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, each 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 predetermined block;
selecting physical locations in the predetermined 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 predetermined page boundary; and
writing a first partial cluster that includes the first addressable data packet of a logical block of the received data and a last partial cluster that includes the last addressable data packet of the logical block of the received data to a page of the predetermined block.
3 Assignments
0 Petitions
Accused Products
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.
-
Citations
23 Claims
-
1. 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 each block of the memory array holds one logical block of data, each 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, each 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 predetermined block; selecting physical locations in the predetermined 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 predetermined page boundary; and writing a first partial cluster that includes the first addressable data packet of a logical block of the received data and a last partial cluster that includes the last addressable data packet of the logical block of the received data to a page of the predetermined block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of storing clusters of data received from a host, each 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, each 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 predetermined block in pages within the predetermined block, in a manner dependent on the derived offset, so that boundaries between clusters occur at page boundaries, the clusters and portions of clusters that are mapped to the predetermined block having a logical address range, the logical address range being independent of the offset so that the predetermined block is filled with identical sectors regardless of the offset. - View Dependent Claims (10, 11, 12)
-
-
13. A method of storing data that contains predefined cluster boundaries in metablocks of a non-volatile memory array, each metablock consisting of two or more erase blocks that are programmed and erased in parallel, erase blocks being the minimum unit of erase of the non-volatile memory array, each logical block consisting of data equal to the data in one metablock, each 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 predetermined page of the first 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. - View Dependent Claims (14, 15, 16, 17, 18)
-
-
19. 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 the host, the received addressable data packets forming clusters that are allocated to files by the host, each cluster containing multiple addressable data packets, a sequential range of the received addressable data packets mapped to a logical unit by the controller without regard to cluster locations; a non-volatile memory array in communication with the controller, the non-volatile memory array having multiple erase blocks, erase blocks 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; and wherein clusters that individually include a portion within the logical unit and a portion outside the logical unit have the portions within the logical unit stored together in a page of the logical unit without cluster-to-page alignment. - View Dependent Claims (20, 21, 22, 23)
-
Specification