Dynamically allocating number of bits per cell for memory locations of a non-volatile memory
First Claim
1. A method for programming a non-volatile memory, comprising:
- receiving data to store in memory cells of the non-volatile memory;
receiving an indicator specifying a number of states per memory cell to use when programming the data to the memory cells; and
programming the data to the memory cells in a program order associated with the number of states per memory cell,wherein the memory cells are arranged in a plurality of rows, each row comprising a group of memory cells, and the program order defines an order in which the rows are programmed within the memory,wherein the program order for rows of memory cells having more than one state per memory cell is not sequential,wherein first data is programmed to a first state of a first group of memory cells of a first row, followed by second data programmed to a first state of a second group of memory cells of a second row, followed later by third data programmed to a second state of the first group of memory cells of the first row.
0 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are provided for dynamically allocating a number of bits per cell to memory locations of a non-volatile memory (“NVM”) device. In some embodiments, a host may determine whether to store data in the NVM device using SLC programming or MLC programming operations. The host may allocate an erased block as an SLC block or MLC block based on this determination regardless of whether the erased block was previously used as an SLC block, MLC block, or both. In some embodiments, to dynamically allocate a memory location as SLC or MLC, the host may provide an address vector to the NVM package, where the address vector may specify the memory location and the number of bits per cell to use for that memory location.
-
Citations
14 Claims
-
1. A method for programming a non-volatile memory, comprising:
-
receiving data to store in memory cells of the non-volatile memory; receiving an indicator specifying a number of states per memory cell to use when programming the data to the memory cells; and programming the data to the memory cells in a program order associated with the number of states per memory cell, wherein the memory cells are arranged in a plurality of rows, each row comprising a group of memory cells, and the program order defines an order in which the rows are programmed within the memory, wherein the program order for rows of memory cells having more than one state per memory cell is not sequential, wherein first data is programmed to a first state of a first group of memory cells of a first row, followed by second data programmed to a first state of a second group of memory cells of a second row, followed later by third data programmed to a second state of the first group of memory cells of the first row. - View Dependent Claims (2, 3)
-
-
4. A non-volatile memory, comprising:
-
an array of memory cells arranged in rows, each row comprising at least one page of memory cells; an input for receiving data to store in the memory cells and an indicator specifying a number of states per memory cell to use when programming the data to the memory cells; circuitry that programs the data to one or more pages of memory cells in a program order, the program order associated with the number of states per memory cell; and a controller that determines the number of states per memory cell to use when programming the data based on a characteristic of the data, wherein the characteristic of the data comprises the source of the data. - View Dependent Claims (5, 6, 7, 8, 9)
-
-
10. An apparatus, comprising:
-
a non-volatile memory comprising groups of memory cells arranged in rows, the non-volatile memory receives data and programs the data to one or more groups of memory cells according to a program order associated with a number of states per memory cell; and a controller that determines the number of states per memory cell to use when programming the data and transmits an indicator specifying the number of states per memory cell and the data to the non-volatile memory as part of a program request, wherein the program order defines an order in which the rows are programmed within the memory, wherein the program order for rows of memory cells having one state per memory cell is sequential, and wherein the program order for rows of memory cells having more than one state per memory cell is not sequential. - View Dependent Claims (11, 12, 13, 14)
-
Specification