Methods, data storage devices and systems having variable size ECC page size
First Claim
1. A data storage device, comprising:
- an array of flash memory devices; and
a controller coupled to the array of memory devices and configured to program and read data from the array of flash memory devices responsive to data access commands from a host, wherein the array of flash memory devices comprises;
a plurality of blocks, each comprising a plurality of flash pages (F-Pages), each of the plurality of F-Pages comprising an integer number of one or more error correcting code pages (E-Pages), at least some of the E-Pages comprising a data portion and an error correction code (ECC) portion;
wherein the controller is configured to;
store a plurality of logical pages (L-Pages) in one or more of the plurality of E-Pages, at least some of the plurality of L-Pages being unaligned with boundaries of the E-Pages; and
adjust, in at least one of the F-Pages, a size of the ECC portion and correspondingly adjust a size of the data portion of one or more E-Pages of the at least one F-Page, wherein the controller is further configured to decrease the size of the data portion by an amount that the size of the ECC portion has been increased.
10 Assignments
0 Petitions
Accused Products
Abstract
A data storage device may comprise an array of flash memory devices and a controller coupled thereto, configured to program and read data from the array responsive to received data access commands. The array may comprise a plurality of blocks, each comprising a plurality of flash pages (F-Pages), each of which comprising an integer number of one or more error correcting code pages (E-Pages), at least some of which comprising a data portion and an error correction code (ECC) portion. The controller may be configured to store a plurality of logical pages (L-Pages) in one or more of the plurality of E-Pages, at least some being unaligned with boundaries of the E-Pages; and to adjust, in at least one of the blocks, the size of the ECC portion and correspondingly adjust the size of the data portion of the E-Pages.
137 Citations
54 Claims
-
1. A data storage device, comprising:
-
an array of flash memory devices; and a controller coupled to the array of memory devices and configured to program and read data from the array of flash memory devices responsive to data access commands from a host, wherein the array of flash memory devices comprises; a plurality of blocks, each comprising a plurality of flash pages (F-Pages), each of the plurality of F-Pages comprising an integer number of one or more error correcting code pages (E-Pages), at least some of the E-Pages comprising a data portion and an error correction code (ECC) portion; wherein the controller is configured to; store a plurality of logical pages (L-Pages) in one or more of the plurality of E-Pages, at least some of the plurality of L-Pages being unaligned with boundaries of the E-Pages; and adjust, in at least one of the F-Pages, a size of the ECC portion and correspondingly adjust a size of the data portion of one or more E-Pages of the at least one F-Page, wherein the controller is further configured to decrease the size of the data portion by an amount that the size of the ECC portion has been increased. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method of controlling an array of flash memory devices responsive to data access commands from a host, comprising:
-
receiving a host command to store host data in one or more of a plurality of blocks of the array of flash memory devices, each of the plurality of blocks comprising a plurality of flash pages (F-Pages), each of the plurality of F-Pages comprising an integer number of one or more error correcting code (ECC) pages (E-Pages), at least some of the E-Pages comprising a data portion and an ECC portion; selecting an ECC profile of a plurality of ECC profiles to apply to the one or more of the plurality of blocks, F-Pages or E-Pages to which the host data is to be stored; storing the host data in one or more logical pages (L-Pages); programming the one or more of L-Pages into the data portion of one or more of the plurality of E-Pages and generating an ECC code to be stored in the ECC portion of one or more of the plurality of E-Pages according to the selected ECC profile; and adjusting, in at least one of the F-Pages, a size of the ECC portion and correspondingly adjusting a size of the data portion of one or more E-Pages of the at least one F-Page according to a new ECC profile, wherein adjusting comprises decreasing the size of the data portion by an amount that the size of the ECC portion has been increased. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
-
-
36. A solid state drive controller, comprising:
-
a buffer configured to couple to an array of flash memory devices; and a processor coupled to the buffer, the processor being configured to program and read data from the array of flash memory devices responsive to data access commands from a host, the array of flash memory devices comprising a plurality of blocks, each comprising a plurality of flash pages (F-Pages), each of the plurality of F-Pages comprising an integer number of one or more error correcting code pages (E-Pages), at least some of the E-Pages comprising a data portion and an error correction code (ECC) portion, wherein the processor is further configured to; store a plurality of logical pages (L-Pages) in one or more of the plurality of E-Pages; and adjust, in at least one of the F-Pages, a size of the ECC portion and correspondingly adjust a size of the data portion of the E-Pages of the one or more E-Pages of the at least one F-Page, wherein the processor is further configured to decrease the size of the data portion by an amount that the size of the ECC portion has been increased. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53)
-
-
54. A data storage device, comprising:
-
an array of flash memory devices; and a controller coupled to the array of memory devices and configured to program and read data from the array of flash memory devices responsive to data access commands from a host, wherein the array of flash memory devices comprises; a plurality of blocks, each comprising a plurality of flash pages (F-Pages), each of the plurality of F-Pages comprising an integer number of one or more error correcting code pages (E-Pages), at least some of the E-Pages comprising a data portion and an error correction code (ECC) portion; wherein the controller is configured to; store a plurality of logical pages (L-Pages) in one or more of the plurality of E-Pages, at least some of the plurality of L-Pages being unaligned with boundaries of the E-Pages; and decrease a size of the data portion of one or more E-Pages of the at least one F-Page by an amount that a size of the ECC portion has been increased; and wherein, one of the plurality of blocks comprises; a first E-Page having an ECC portion of a first size; and a second E-Page having an ECC portion of a second size, wherein the second size is different from the first size, wherein the second size is selected based on a location of the second E-Page in the block.
-
Specification