US8024509B2

Method of managing a multi-bit-cell flash memory

Summary by NHIP

Multi-bit Flash Management

The method manages flash memory by reserving a single cell as a flag element to track the number of bits stored in other cells. Successively, the system programs the data cells with bits one through N while simultaneously updating the flag cell to represent the current bit count n, maintaining the flag in a programmed state until all bits are written.

Claim Score by NHIP

Read claim 1, the broadest

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.

US8024509B2, drawing sheet 1
Sheet 1 of 8

Term

Term ended

Expired 23 April 2024, 2.4 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

60 claims: 12 independent, 48 dependent

  1. 1
    Broadest claimClaim Score 39, average(NHIP)A method of managing a plurality of non-volatile memory cells, each memory cell having a corresponding storage window divisible into a plurality of ranges of storage levels representative of N 3 bits, the method comprising:reserving a single cell of the memory cells to use as a flag storage element to represent a value of N for each of a plurality of other memory cells;selecting the value of N;and successively, for each value of n between 1 and N: setting each memory cell of said plurality of other memory cells to represent bits 1 through n of said N bits, and setting each reserved single cell to represent n;wherein said memory cells of said plurality of other memory cells are not erased between said successive settings of said memory cells of said plurality of other memory cells and wherein the single cell is maintained in a programmed state between said successive settings of the single cell until after said memory cells of said plurality of other memory cells have been set to represent bits 1 through N and the single cell has been set to represent N.
  2. 6
    A memory device comprising:a plurality of non-volatile memory cells, each memory cell having a corresponding storage window divisible into a plurality of ranges of storage levels representative of N 3 bits of data;and a controller to: reserve a single cell of at least one of said memory cells to use as a flag storage element to represent a value of N for each of a plurality of other said memory cells;select a value of N;and successively, for each value of n between 1 and N: set each memory cell of said plurality of other memory cells to represent bits 1 through n of said N bits, and set each reserved single cell to represent n;wherein said memory cells of said plurality of other memory cells are not erased between said successive settings of said memory cells of said plurality of other memory cells and wherein the single cell is maintained in a programmed state between said successive settings of the single cell until after said memory cells of said plurality of other memory cells have been set to represent bits 1 through N and the single cell has been set to represent N.
  3. 11
    A system comprising:a plurality of non-volatile memory cells, each memory cell having a corresponding storage window divisible into a plurality of ranges of storage levels representative of N 3 bits of data;and a non-volatile memory storing program code to: reserve a single cell of at least one of said memory cells to use as a flag storage element to represent a value of N for each of a plurality of other said memory cells;select a value of N;and successively, for each value of n between 1 and N: set each memory cell of said plurality of other memory cells to represent bits 1 through n of said N bits, and set each reserved single cell to represent n;wherein said memory cells of said plurality of other memory cells are not erased between said successive settings of said memory cells of said plurality of other memory cells and wherein the single cell is maintained in a programmed state between said successive settings of the single cell until after said memory cells of said plurality of other memory cells have been set to represent bits 1 through N and the single cell has been set to represent N;and a processor to execute said program code.
  4. 16
    A computer-readable storage medium storing computer-readable code to manage a plurality of non-volatile memory cells, wherein each memory cell has a corresponding storage window divisible into a plurality of ranges of storage levels representative of N 3 bits of data, the computer-readable code comprising processor executable instructions that, when executed by a processor, cause the processor to:reserve a single cell of at least one of the memory cells to use as a flag storage element to represent a value of N for each of a plurality of other memory cells;select the value of N;and successively, for each value of n between 1 and N: set each memory cell of said plurality of other memory cells to represent bits 1 through n of said N bits, and set each reserved single cell to represent n;wherein said memory cells of said plurality of other memory cells are not erased between said successive settings of said memory cells of said plurality of other memory cells and wherein the single cell is maintained in a programmed state between said successive settings of the single cell until after said memory cells of said plurality of other memory cells have been set to represent bits 1 through N and the single cell has been set to represent N.
  5. 21
    A method of managing a flash memory, the method comprising:selecting a value of a number N 3 of respective bits of data to be stored in each of a plurality of memory cells of at least a portion of the flash memory;reserving a single cell of at least one of the memory cells of the flash memory to use as a flag element to represent a value of how many of said N bits are stored in each memory cell of said plurality of memory cells;and successively, for each value of n between 1 and N: programming each memory cell of said plurality of memory cells to represent bits 1 through n of said N respective bits thereof, and programming each reserved single cell to represent n;wherein said memory cells of said plurality of memory cells are not erased between said successive programmings of said memory cells of said plurality of memory cells and wherein the single cell is maintained in a programmed state between said successive programmings of the single cell until after said memory cells of said plurality of memory cells have been programmed to represent bits 1 through N and the single cell has been programmed to represent N.
  6. 27
    A memory device comprising:a flash memory including at least one block, each block including at least one page, each page including a plurality of memory cells;and a flash memory controller operative, for a portion of said flash memory selected from one of a block and a page: to select a value of a number N 3 of respective bits of data to be stored in each of a plurality of memory cells of said portion;to reserve a single cell of at least one of the memory cells of said portion to use as a flag element to represent a value of how many of said N bits are stored in each memory cell of said plurality of memory cells;and successively, for each value of n between 1 and N: to program each memory cell of said plurality of memory cells of said portion to represent bits 1 through n of said N respective bits thereof, and to program each reserved single cell to represent n;wherein said memory cells of said plurality of memory cells of said portion are not erased between said successive programmings of said memory cells of said plurality of memory cells of said portion and wherein the single cell is maintained in a programmed state between said successive programmings of the single cell until after said memory cells of said plurality of memory cells of said portion have been programmed to represent bits 1 through N and the single cell has been programmed to represent N.
  7. 30
    A system comprising:a flash memory including at least one block, each block including at least one page, each page including a plurality of memory cells;a non-volatile memory storing program code operative, for a portion of said flash memory selected from one of a block and a page: to select a value of a number N 3 of respective bits of data to be stored in each of a plurality of memory cells of said portion;to reserve a single cell of at least one of the memory cells of said portion to use as a flag element to represent a value of how many of said N bits are stored in each memory cell of said plurality of memory cells;and successively, for each value of n between 1 and N: to program each memory cell of said plurality of memory cells of said portion to represent bits 1 through n of said N respective bits thereof, and to program each reserved single cell to represent n;wherein said memory cells of said plurality of memory cells of said portion are not erased between said successive programmings of said memory cells of said plurality of memory cells of said portion and wherein the single cell is maintained in a programmed state between said successive programmings of the single cell until after said memory cells of said plurality of memory cells of said portion have been programmed to represent bits 1 through N and the single cell has been programmed to represent N;and a processor to execute said program code.
  8. 33
    A computer-readable storage medium storing computer-readable code to manage a flash memory that includes a first block, the first block including at least one page, the at least one page including a plurality of memory cells, the computer-readable code comprising program code that, when executed by a processor, causes the processor to:select a value of a number N 3 of respective bits of data to be stored in each of the plurality of memory cells;reserve a single cell of at least one of the memory cells to use as a flag element to represent a value of how many of said N bits are stored in each memory cell of said plurality of memory cells;and successively, for each value of n between 1 and N: program each memory cell of said plurality of memory cells to represent bits 1 through n of said N respective bits thereof, and program each reserved single cell to represent n;wherein said memory cells of said plurality of memory cells are not erased between said successive programmings of said memory cells of said plurality of memory cells and wherein the single cell is maintained in a programmed state between said successive programmings of the single cell until after said memory cells of said plurality of memory cells have been programmed to represent bits 1 through N and the single cell has been programmed to represent N.
  9. 36
    A method of managing non-volatile memory cells individually having a storage window divisible into a plurality of ranges of storage levels representative of at least one bit of data and which are separated from one another, the method comprising:selecting a number N≧3 of respective bits to be represented by the ranges of the storage levels of each of a plurality of the memory cells;reserving a single cell of at least one of the memory cells to use as a flag storage element to represent a value of how many of said N respective bits are stored in each memory cell of said plurality of memory cells;and successively, for each value of n between 1 and N: setting each memory cell of said plurality of memory cells to represent bits 1 through n of said N respective bits thereof, and setting each reserved single cell to represent n;wherein said memory cells of said plurality of memory cells are not erased between said successive settings of said memory cells and wherein said single cell is maintained in a programmed state between said successive settings of said single cell until after said memory cells of said plurality of memory cells have been set to represent bits 1 through N and said single cell has been set to represent N.
  10. 40
    A memory device comprising:non-volatile memory cells, each memory cell having a corresponding storage window divisible into a plurality of ranges of storage levels representative of at least one bit of data;and a controller to: select a number N≧3 of respective bits to be represented by the ranges of the storage levels of each of a plurality of said memory cells;reserve a single cell of at least one of the memory cells to use as a flag storage element to represent a value of how many of said N respective bits are stored in each memory cell of said plurality of memory cells;and successively, for each value of n between 1 and N: set each memory cell of said plurality of memory cells to represent bits 1 through n of said N respective bits thereof, and set each reserved single cell to represent n;wherein said memory cells of said plurality of memory cells are not erased between said successive settings of said memory cells and wherein said single cell is maintained in a programmed state between said successive settings of said single cell until after said memory cells of said plurality of memory cells have been set to represent bits 1 through N and said single cell has been set to represent N.
  11. 43
    A system comprising:non-volatile memory cells, each memory cell having a corresponding storage window divisible into a plurality of ranges of storage levels representative of at least one bit of data;a non-volatile memory storing program code to: select a number N≧3 of respective bits to be represented by the ranges of the storage levels of each of a plurality of said memory cells;reserve a single cell of at least one of the memory cells to use as a flag storage element to represent a value of how many of said N respective bits are stored in each memory cell of said plurality of memory cells;and successively, for each value of n between 1 and N: set each memory cell of said plurality of memory cells to represent bits 1 through n of said N respective bits thereof, and set each reserved single cell to represent n;wherein said memory cells of said plurality of memory cells are not erased between said successive settings of said memory cells of said plurality of memory cells and wherein said single cell is maintained in a programmed state between said successive settings of said single cell until after said memory cells of said plurality of memory cells have been set to represent bits 1 through N and said single cell has been set to represent N;and a processor to execute said program code.
  12. 46
    A computer-readable storage medium storing computer-readable code to manage non-volatile memory cells, wherein each memory cell has a corresponding storage window divisible into a plurality of ranges of storage levels representative of at least one bit of data, the computer-readable code comprising processor executable instructions that, when executed by a processor, cause the processor to:select a number N≧3 of respective bits to be represented by the ranges of the storage levels of each of a plurality of said memory cells;reserve a single cell of at least one of the memory cells to use as a flag storage element to represent a value of how many of said N respective bits are stored in each memory cell of said plurality of memory cells;and successively, for each value of n between 1 and N: set each memory cell of said plurality of memory cells to represent bits 1 through n of said N respective bits thereof, and set each reserved single cell to represent n;wherein said memory cells of said plurality of memory cells are not erased between said successive settings of said memory cells of said plurality of memory cells and wherein said single cell is maintained in a programmed state between said successive settings of said single cell until after said memory cells of said plurality of memory cells have been set to represent bits 1 through N and said single cell has been set to represent N.