Redundant data storage in multi-die memory systems
First Claim
Patent Images
1. A method for data storage, comprising:
- in a memory that includes at least N memory units, each memory unit comprising memory blocks, defining superblocks, each superblock comprising a respective set of N of the memory blocks that are allocated respectively in N different ones of the memory units, such that compaction of all the memory blocks in a given superblock is performed without any intervening programming operation in the given superblock;
storing data in the memory by computing redundancy information for a selected portion of the data, and storing the selected portion and the redundancy information in the N memory blocks of a selected superblock; and
reading data from a given superblock by issuing read commands to the set of N memory blocks within a given superblock without waiting for data to arrive from a given memory block before issuing a subsequent read command to a next memory block, wherein reading the data from a given superblock further comprises;
receiving data from N−
1 memory blocks; and
using the redundancy information to reconstruct the data unless the redundancy information is in the Nth memory block to arrive.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for data storage includes, in a memory that includes at least N memory units, each memory unit including memory blocks, defining superblocks, each superblock including a respective set of N of the memory blocks that are allocated respectively in N different ones of the memory units, such that compaction of all the memory blocks in a given superblock is performed without any intervening programming operation in the given superblock. Data is stored in the memory by computing redundancy information for a selected portion of the data, and storing the selected portion and the redundancy information in the N memory blocks of a selected superblock.
-
Citations
42 Claims
-
1. A method for data storage, comprising:
-
in a memory that includes at least N memory units, each memory unit comprising memory blocks, defining superblocks, each superblock comprising a respective set of N of the memory blocks that are allocated respectively in N different ones of the memory units, such that compaction of all the memory blocks in a given superblock is performed without any intervening programming operation in the given superblock; storing data in the memory by computing redundancy information for a selected portion of the data, and storing the selected portion and the redundancy information in the N memory blocks of a selected superblock; and reading data from a given superblock by issuing read commands to the set of N memory blocks within a given superblock without waiting for data to arrive from a given memory block before issuing a subsequent read command to a next memory block, wherein reading the data from a given superblock further comprises; receiving data from N−
1 memory blocks; andusing the redundancy information to reconstruct the data unless the redundancy information is in the Nth memory block to arrive. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for data storage, comprising:
-
in a memory controller that accepts data items from a host for storage in multiple memory units, defining a mapping between logical addresses assigned by the host and respective physical storage locations in the memory units; reporting information indicative of the mapping from the memory controller to the host; in the host, computing redundancy information for the data items, and assigning respective first logical addresses to the data items and second logical addresses to the redundancy information responsively to the reported information indicative of the mapping; and storing the data items and the redundancy information by the memory controller in the physical storage locations that correspond to the respective first and second logical addresses assigned by the host; and reserving a subset of the memory units for use as one or more spare memory units to replace one more memory units in response to determining a memory unit has failed and using the one or more spare memory units to improve data storage performance in the memory units until the one or more spare memory units is used as a replacement memory unit. - View Dependent Claims (18, 19, 20)
-
-
21. A data storage apparatus, comprising:
-
an interface, which is configured to communicate with a memory that includes at least N memory units, each memory unit including memory blocks; and a processor, which is configured to; define superblocks, each superblock comprising a respective set of N of the memory blocks that are allocated respectively in N different ones of the memory units, such that compaction of all the memory blocks in a given superblock is performed without any intervening programming operation in the given superblock; store data in the memory by computing redundancy information for a selected portion of the data, and storing the selected portion and the redundancy information in the N memory blocks of a selected superblock; and read data from a given superblock by issuing read commands to the set of N memory blocks within a given superblock without waiting for data to arrive from a given memory block before issuing a subsequent read command to a next memory block, wherein reading the data from a given superblock further comprises; receiving data from N−
1 memory blocks; andusing the redundancy information to reconstruct the data unless the redundancy information is in the Nth memory block to arrive. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. A memory controller, comprising:
-
an interface for communicating with a host; and a processor, which is configured to; accept from the host via the interface data items for storage in multiple memory units; define a mapping between logical addresses assigned by the host and respective physical storage locations in the memory units; report information indicative of the mapping from the memory controller to the host, so as to cause the host to compute redundancy information for the data items and assign respective first logical addresses to the data items and second logical addresses to the redundancy information responsively to the reported information indicative of the mapping; store the data items and the redundancy information accepted from the host in the physical storage locations that correspond to the respective first and second logical addresses assigned by the host; and reserve a subset of the memory units for use as one or more spare memory units to replace one more memory units in response to determining a memory unit has failed and using the one or more spare memory units to improve data storage performance in the memory units until the one or more spare memory units are used as a replacement memory units. - View Dependent Claims (38, 39, 40)
-
-
41. A method for data storage, comprising:
-
in a memory that includes at least N memory units that are partitioned into memory blocks, grouping input data into sets of N logical pages, each set containing a respective portion of the data and redundancy information that is computed over the portion; storing each set in the memory such that the N logical pages in the set are stored in N different memory units; reading data from a given superblock by issuing read commands to the set of N memory blocks within a given superblock without waiting for data to arrive from a given memory block before issuing a subsequent read command to a next memory block, wherein reading the data from a given superblock further comprises; receiving data from N−
1 memory blocks; andusing the redundancy information to reconstruct the data unless the redundancy information is in the Nth memory block to arrive; and compacting a selected memory block by reading at least one invalid page from the selected memory block, reading the redundancy information of the respective set to which the invalid page belongs, updating the read redundancy information based on the read invalid page and on new data, and storing the updated redundancy information and the new data in the memory.
-
-
42. A data storage apparatus, comprising:
-
an interface, which is configured to communicate with a memory that includes at least N memory units that are partitioned into memory blocks; and a processor, which is configured to; group input data into sets of N logical pages, each set containing a respective portion of the data and redundancy information that is computed over the portion; store each set in the memory such that the N logical pages in the set are stored in N different memory units; read data from a given superblock by issuing read commands to the set of N memory blocks within a given superblock without waiting for data to arrive from a given memory block before issuing a subsequent read command to a next memory block, wherein reading the data from a given superblock further comprises; receiving data from N−
1 memory blocks; andusing the redundancy information to reconstruct the data unless the redundancy information is in the Nth memory block to arrive; and compact a selected memory block by reading at least one invalid page from the selected memory block, reading the redundancy information of the respective set to which the invalid page belongs, updating the read redundancy information based on the read invalid page and on new data, and storing the updated redundancy information and the new data in the memory.
-
Specification