Method of managing a multi-bit-cell flash memory
First Claim
1. A method of managing a flash memory, comprising the steps of:
- (a) reserving at least one cell of the flash memory to use as a flag cell to represent a value of a number N of bits of data to store in each of a plurality of other cells of a block of the flash memory;
(b) selecting a value of N from among at least three candidate values of N; and
(c) programming said at least one flag cell to represent said selected value of N.
4 Assignments
0 Petitions
Accused Products
Abstract
A flash memory is managed by reserving one or more cells as flag cells to represent the number N of bits to store in the cells of a memory block, selecting the value of N from at least three candidates, and programming the flag cell(s) to represent the selected value. A flash memory is managed by selecting a value of the number N>2 of bits to store in the cells of a portion (e.g. a block or page) of the memory, reserving one other cell of the memory as a flag cell to represent how many bits actually are stored in each cell of the portion, and, as the cells of the portion are successively programmed with 1≦n≦N bits, programming the flag cell to represent n.
-
Citations
68 Claims
-
1. A method of managing a flash memory, comprising the steps of:
-
(a) reserving at least one cell of the flash memory to use as a flag cell to represent a value of a number N of bits of data to store in each of a plurality of other cells of a block of the flash memory;
(b) selecting a value of N from among at least three candidate values of N; and
(c) programming said at least one flag cell to represent said selected value of N. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A memory device comprising:
-
(a) a flash memory including at least one block, each said at least one block including a plurality of cells; and
(b) a flash memory controller operative, for one of said at least one block;
(i) to reserve at least one cell of said one block to use as a flag cell to represent a value, of a number N of bits of data to store in a plurality of other cells of said one block, (ii) to select a value of N from among at least three candidate values of N, and (iii) to program said at least one flag cell to represent said selected value of N. - View Dependent Claims (8, 9, 10, 11)
-
-
12. A system comprising:
-
(a) a flash memory including at least one block, each said at least one block including a plurality of cells;
(b) a non-volatile memory for storing program code for, for one of said at least one block;
(i) reserving at least one cell of said one block to use as a flag cell to represent a value, of a number N of bits of data to store in a plurality of other cells of said one block, (ii) selecting a value of N from among at least three candidate values of N, and (iii) programming said at least one flag cell to represent said selected value of N; and
(c) a processor for executing said program code. - View Dependent Claims (13, 14, 15, 16)
-
-
17. A computer-readable storage medium having computer-readable code embedded on the computer-readable storage medium, the computer-readable code for managing a flash memory that includes at least one block, each at least one block including a plurality of cells, the computer-readable code comprising program code for, for one of the at least one block:
-
(a) reserving at least one cell of the one block to use as a flag cell to represent a value, of a number N of bits of data to store in a plurality of other cells of the one block;
(b) selecting a value of N from among at least three candidate values of N; and
(c) programming said at least one flag cell to represent said selected value of N. - View Dependent Claims (18, 19, 20, 21, 24, 25)
-
-
22. A method of managing a non-volatile array of storage elements individually having a storage window divisible into a plurality of defined ranges of storage levels representative of N≧
- 1 bits and which are separated from one another, the method comprising the steps of;
(a) reserving at least one storage element to use as a flag storage element to represent a value of N for each of a plurality of other storage elements of at least a portion of the non-volatile array;
(b) selecting a value of N from among at least three candidate values of N; and
(c) setting said at least one flag storage element to represent said selected value of N. - View Dependent Claims (23, 26, 27)
- 1 bits and which are separated from one another, the method comprising the steps of;
-
28. A memory device comprising:
-
(a) a non-volatile array of storage elements individually having a storage window divisible into a plurality of defined ranges of storage levels representative of N≧
1 bits and which are separated from one another; and
(b) a controller for;
(i) reserving at least one said storage element to use as a flag storage element to represent a value of N for each of a plurality of other said storage elements of at least a portion of the non-volatile array, (ii) selecting a value of N from among at least three candidate values of N, and (iii) setting said at least one flag storage element to represent said selected value of N. - View Dependent Claims (29, 30, 31, 32)
-
-
33. A system comprising:
-
(a) a non-volatile array of storage elements individually having a storage window divisible into a plurality of defined ranges of storage levels representative of N≧
1 bits and which are separated from one another;
(b) a non-volatile memory for storing program code for;
(i) reserving at least one said storage element to use as a flag storage element to represent a value of N for each of a plurality of other said storage elements of at least a portion of the non-volatile array;
(ii) selecting a value of N from among at least three candidate values of N, and (iii) setting said at least one flag storage element to represent said selected value of N; and
(c) a processor for executing said program code. - View Dependent Claims (34, 35, 36, 37)
-
-
38. A computer-readable storage medium having computer-readable code embedded on the computer-readable storage medium, the computer-readable code for managing a non-volatile array of storage elements individually having a storage window divisible into a plurality of defined ranges of storage levels representative of N≧
- 1 bits and which are separated from one another, the computer-readable code comprising;
(a) program code for reserving at least one storage element to use as a flag storage element to represent a value of N for each of a plurality of other storage elements of at least a portion of the non-volatile array;
(b) program code for selecting a value of N from among at least three candidate values of N, and (c) program code for setting said at least one flag storage element to represent said selected value of N. - View Dependent Claims (39, 40, 41, 42)
- 1 bits and which are separated from one another, the computer-readable code comprising;
-
43. A method of managing a flash memory, comprising the steps of:
-
(a) selecting a value of a number N≧
3 of respective bits of data to be stored in each of a plurality of cells of at least a portion of a flash memory;
(b) reserving a single other cell of the flash memory to use as a flag cell to represent a value of how many of said N bits are stored in each said cell of said plurality; and
(c) successively, for each value of n between 1 and N;
(i) programming each said cell of said plurality to represent a first respective n bits of said data, and (ii) programming said flag cell to represent n. - View Dependent Claims (44, 45, 46, 47)
-
-
48. A memory device comprising:
-
(a) a flash memory including at least one block, each said at least one block including at least one page, each said at least one page including a plurality of cells; and
(b) a flash memory controller operative, for a portion of said flash memory selected from the group consisting of one of said at least one block and one of said at least one page of one of said at least one block;
(i) to select a value of a number N≧
3 of respective bits of data to be stored in each of a plurality of cells of said portion,(ii) to reserve a single other cell of said portion to use as a flag cell to represent a value of how many of said N bits are stored in each said cell of said plurality, and (iii) successively, for each value of n between 1 and N;
(A) to program each said cell of said plurality to represent a first respective n bits of said data, and (B) to program said flag cell to represent n. - View Dependent Claims (49, 50)
-
-
51. A system comprising:
-
(a) a flash memory including at least one block, each said at least one block including at least one page, each said at least one page including a plurality of cells;
(b) a non-volatile memory for storing program code for, for a portion of said flash memory selected from the group consisting of one of said at least one block and one of said at least one page of one of said at least one block;
(i) selecting a value of a number N≧
3 of respective bits of data to be stored in each of a plurality of cells of said portion,(ii) reserving a single other cell of said portion to use as a flag cell to represent a value of how many of said N bits are stored in each said cell of said plurality, and (iii) successively, for each value of n between 1 and N;
(A) programming each said cell of said plurality to represent a first respective n bits of said data, and (B) programming said flag cell to represent n; and
(c) a processor for executing said program code. - View Dependent Claims (52, 53)
-
-
54. A computer-readable storage medium having computer-readable code embedded on the computer-readable storage medium, the computer-readable code for managing a flash memory that includes at least one block, each at least one block including at least one page, each at least one page including a plurality of cells, the computer-readable code comprising program code for, for a portion of the flash memory selected from the group consisting of one of the at least one block and one of the at least one page of one of the at least one block:
-
(a) selecting a value of a number N≧
3 of respective bits of data to be stored in each of a plurality of cells of the portion;
(b) reserving a single other cell of the portion to use as a flag cell to represent a value of how many of said N bits are stored in each cell of the plurality; and
(c) successively, for each value of n between 1 and N;
(i) programming each cell of the plurality to represent a first respective n bits of said data, and (ii) programming said flag cell to represent n. - View Dependent Claims (55, 56)
-
-
57. A method of managing a non-volatile array of storage elements individually having a storage window divisible into a plurality of defined ranges of storage levels representative of at least one bit of data and which are separated from one another, the method comprising the steps of:
-
(a) selecting a number N≧
3 of bits to be represented by the defined ranges of the storage levels of each of a plurality of the storage elements of at least a portion of the non-volatile array;
(b) reserving a single other storage element to use as a flag storage element to represent a value of how many of the N bits are stored in each storage element of said plurality; and
(c) successively, for each value of n between 1 and N;
(i) setting each storage element of said plurality to represent a first respective n bits of the data, and (ii) setting said flag storage element to represent n. - View Dependent Claims (58, 59)
-
-
60. A memory device comprising:
-
(a) a non-volatile array of storage elements individually having a storage window divisible into a plurality of defined ranges of storage levels representative of at least one bit of data and which are separated from one another; and
(b) a controller for;
(i) selecting a number N≧
3 of bits to be represented by the defined ranges of the storage levels of each of a plurality of said storage elements of at least a portion of the non-volatile array,(ii) reserving a single other said storage element to use as a flag storage element to represent a value of how many of said N bits are stored in each said storage element of said plurality, and (iii) successively, for each value of n between 1 and N;
(A) setting each said storage element of said plurality to represent a first respective n bits of said data, and (B) setting said flag storage element to represent n. - View Dependent Claims (61, 62)
-
-
63. A system comprising:
-
(a) a non-volatile array of storage elements individually having a storage window divisible into a plurality of defined ranges of storage levels representative of at least one bit of data and which are separated from one another;
(b) a non-volatile memory for storing program code for;
(i) selecting a number N≧
3 of bits to be represented by the defined ranges of the storage levels of each of a plurality of said storage elements of at least a portion of said non-volatile array,(ii) reserving a single other said storage element to use as a flag storage element to represent a value of how many of said N bits are stored in each said storage element of said plurality, and (iii) successively, for each value of n between 1 and N;
(A) setting each said storage element of said plurality to represent a first respective n bits of said data, and (B) setting said flag storage element to represent n; and
(c) a processor for executing said program code. - View Dependent Claims (64, 65)
-
-
66. A computer-readable storage medium having computer-readable code embedded on the computer-readable storage medium, the computer-readable code for managing a non-volatile array of storage elements individually having a storage window divisible into a plurality of defined ranges of storage levels representative of at least one bit of data and which are separated from one another, the computer-readable code comprising:
-
(a) program code for selecting a number N≧
3 of bits to be represented by the defined ranges of the storage levels of each of a plurality of the storage elements of at least a portion of the non-volatile array;
(b) program code for reserving a single other storage element to use as a flag storage element to represent a value of how many of the N bits are stored in each said storage element of said plurality; and
(c) program code for successively, for each value of n between 1 and N;
(i) setting each said storage element of said plurality to represent a first respective n bits of said data, and (ii) setting said flag storage element to represent n. - View Dependent Claims (67, 68)
-
Specification