MLC self-RAID flash data protection scheme
First Claim
1. A method of managing a multiple level cell flash memory that is organized logically into one or more blocks each having a plurality of pages, each page including a plurality of sectors, the method comprising:
- identifying a parity block;
choosing a parity sector in each page of a respective block;
assigning the pages of the respective block into a plurality of groups;
for each page of the respective block, calculating a sector parity value for data stored in the sectors in the page and storing the sector parity value in the parity sector of the page;
prior to completing data writing into all pages of a group in the respective block, calculating a subset group parity for a subset of pages in the group, the subset of pages comprising a plurality of pages in the group in the respective block; and
storing the subset group parity in the parity block.
2 Assignments
0 Petitions
Accused Products
Abstract
A two-dimensional self-RAID method of protecting page-based storage data in a MLC multiple-level-cell flash memory device. The protection scheme includes reserving one parity sector across each data page, reserving one parity page as the column parity, selecting a specific number of pages to form a parity group, writing into the parity page a group parity value for data stored in the pages of the parity group. The parity sector represents applying a RAID technique in a first dimension. The group parity represents applying a RAID technique in a second dimension. Data protection is achieved because a corrupted data sector can likely be recovered by the two dimensional RAID data.
-
Citations
26 Claims
-
1. A method of managing a multiple level cell flash memory that is organized logically into one or more blocks each having a plurality of pages, each page including a plurality of sectors, the method comprising:
-
identifying a parity block; choosing a parity sector in each page of a respective block; assigning the pages of the respective block into a plurality of groups; for each page of the respective block, calculating a sector parity value for data stored in the sectors in the page and storing the sector parity value in the parity sector of the page; prior to completing data writing into all pages of a group in the respective block, calculating a subset group parity for a subset of pages in the group, the subset of pages comprising a plurality of pages in the group in the respective block; and storing the subset group parity in the parity block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A multiple level cell flash memory data storage device, comprising:
-
a flash memory array having a plurality of blocks, each block in the plurality of blocks having a plurality of pages, a respective block including a plurality of groups of pages; each page of the respective block having a plurality of sectors, including an assigned parity sector; wherein the device is operable, for a respective page, to store data in data sectors of the respective page; to store, in the assigned parity sector of the respective page, a sector parity value of the data stored in the data sectors of the respective page; and wherein the device is operable, for a respective group of pages in the respective block, to store data in data pages of the respective group of pages; and to store, in a parity block, a subset group parity value calculated for a subset of pages in the respective group prior to completing data writing into all pages of the respective group. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A method of managing a multiple level cell flash memory that is organized logically into one or more blocks each having a plurality of pages, each page including a plurality of sectors, the method comprising:
-
choosing a parity sector in each page of a respective block; assigning the pages of the respective block into a plurality of groups, each group in the respective block including an assigned parity page; for each page of the respective block, calculating a sector parity value for data stored in the sectors in the page and storing the sector parity value in the parity sector of the page; calculating a group parity value for data stored in the pages of the group; and storing the group parity value in the assigned parity page.
-
-
26. A multiple level cell flash memory data storage device, comprising:
-
a flash memory array having a plurality of blocks, each block in the plurality of blocks having a plurality of pages, a respective block including a plurality of groups of pages, each group of pages in the respective block including an assigned parity page; each page of the respective block having a plurality of sectors, including an assigned parity sector; wherein the device is operable, for a respective page, to store data in data sectors of the respective page; to store, in the assigned parity sector of the respective page, a sector parity value of the data stored in the data sectors of the respective page; and wherein the device is operable, for a respective group of pages in the respective block, to store data in data pages of the respective group of pages; and to store, in the parity page of the respective group, a group parity value of the data stored in the data pages of the respective group.
-
Specification