Dynamic SLC/MLC blocks allocations for non-volatile memory
First Claim
Patent Images
1. An apparatus comprising:
- a flash memory having a number of memory blocks, wherein one or more of the memory blocks can operate in at least two modes of operation, the at least two modes of operation differing in a number of states to which a cell of a respective one of the blocks can be programmed and/or erased; and
a controller configured to operate the one or more of the memory blocks in one of the two modes of operation based at least partly on at least one of an amount of the memory in use or available for use, wherein the controller is configured to operate cells of at least one of the blocks in a mode of operation wherein the cells are programmed and/or erased to one of two states when the amount of the memory in use is less than a threshold.
2 Assignments
0 Petitions
Accused Products
Abstract
Apparatus and methods are disclosed, such as those that provide dynamic block allocations in NAND flash memory between single-level cells (SLC) and multi-level cells (MLC) based on characteristics. In one embodiment, a memory controller dynamically switches between programming and/or reprogramming blocks between SLC mode and MLC mode based on the amount of memory available for use. When memory usage is low, SLC mode is used. When memory usage is high, MLC mode is used. Dynamic block allocation allows a memory controller to obtain the performance and reliability benefits of SLC mode while retaining the space saving benefits of MLC mode.
78 Citations
30 Claims
-
1. An apparatus comprising:
-
a flash memory having a number of memory blocks, wherein one or more of the memory blocks can operate in at least two modes of operation, the at least two modes of operation differing in a number of states to which a cell of a respective one of the blocks can be programmed and/or erased; and a controller configured to operate the one or more of the memory blocks in one of the two modes of operation based at least partly on at least one of an amount of the memory in use or available for use, wherein the controller is configured to operate cells of at least one of the blocks in a mode of operation wherein the cells are programmed and/or erased to one of two states when the amount of the memory in use is less than a threshold. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus comprising:
-
a flash memory having a number of memory blocks, wherein one or more of the memory blocks can operate in at least two modes of operation, the at least two modes of operation differing in a number of states to which a cell of a respective one of the blocks can be programmed and/or erased; and a controller configured to operate the one or more of the memory blocks in one of the two modes of operation based at least partly on at least one of an amount of the memory in use or available for use, wherein the controller is configured to operate cells of at least one of the blocks in a mode of operation wherein the cells are programmed and/or erased to one of two states when the amount of the memory in use is greater than or equal to a threshold, wherein the threshold is about half of a capacity of the memory. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. An apparatus comprising:
-
a flash memory having a number of memory blocks, wherein one or more of the memory blocks can operate in at least two modes of operation, the at least two modes of operation differing in a number of states to which a cell of a respective one of the blocks can be programmed and/or erased; and a controller configured to operate the one or more of the memory blocks in one of the two modes of operation based at least partly on at least one of an amount of the memory in use or available for use, wherein the controller is configured to compact data existing in the memory when the amount of the memory in use nears a threshold. - View Dependent Claims (16, 17, 18, 19, 20)
-
-
21. A method of allocating memory blocks within a flash memory, the method comprising:
-
receiving data to be programmed in the flash memory; responsive to receiving the data, dynamically allocating a block of memory cells as a block of single-level cells or a block of multi-level cells based at least partly on at least one of an amount of the memory already in use or an amount of the memory available for use; and programming the data into the allocated block. - View Dependent Claims (22, 23, 24, 25, 26, 27)
-
-
28. A method of allocating memory blocks within a flash memory, the method comprising:
-
receiving data to be programmed in the flash memory; dynamically allocating a block of memory cells as a block of single-level cells or a block of multi-level cells based at least partly on at least one of an amount of the memory already in use or an amount of the memory available for use; programming the data into the allocated block; and setting a threshold amount of the memory in use above a user'"'"'s average memory use.
-
-
29. A method of allocating memory blocks within a flash memory, the method comprising:
-
receiving data to be programmed in the flash memory; dynamically allocating a block of memory cells as a block of single-level cells or a block of multi-level cells based at least partly on at least one of an amount of the memory already in use or an amount of the memory available for use; programming the data into the allocated block; and setting a different threshold amount for the memory to switch operating from a first mode to a second mode than for the memory to switch operating from the second mode to the first mode.
-
-
30. A method of allocating memory blocks within a flash memory, the method comprising:
-
receiving data to be programmed in the flash memory; dynamically allocating a block of memory cells as a block of single-level cells or a block of multi-level cells based at least partly on at least one of an amount of the memory already in use or an amount of the memory available for use; programming the data into the allocated block; and allocating the block of memory cells as a block of single-level cells when the memory already in use is less than a threshold.
-
Specification