Adaptively programming memory cells in different modes to optimize performance
Systems, methods and apparatus to determine, in response to a command to write data into a set of memory cells, a programming mode of a set of memory cell to optimize performance in retrieving the data back from the set of memory cells. For example, based on usages of a memory region containing the memory cell set, a predictive model can be used to identify a combination of an amount of redundant information to be stored into the memory cells in the set and a programming mode of the memory cells to store the redundant information. Increasing the amount of redundant information can increase error recovery capability but increase bit error rate and/or increase time to read. The predictive model is trained to predict the combination to optimize read performance.
1 . A device, comprising:
memory cells configured in the device as a group to store a predetermined size of user data;
voltage drivers; and
a logic circuit configured to select, based on a usage history of the memory cells, a mode from a plurality of modes to program the memory cells using the voltage drivers;
wherein when programmed via the different modes, the memory cells have different sizes of storage capacity; and
wherein the device is configured to program the memory cells to store data in which a user portion is exactly of the predetermined size regardless of which mode is selected based on the usage history from the plurality of modes.
2 . The device of claim 1 , wherein the voltage drivers are operable to apply voltages to the memory cells in programming the memory cells to store data.
3 . The device of claim 2 , wherein the logic circuit is configured to select the mode in response to a command to store a data item of a predetermined size into the memory cells.
4 . The device of claim 3 , wherein the plurality of modes include:
a first mode of storing the data item in a predetermined number of memory cells with one bit per memory cell; and
a second mode of storing the data item in an encoded form of an error correction technique in the predetermined number of memory cells with more than one bit per memory cell.
5 . The device of claim 4 , wherein the logic circuit is further configured to predict, based on the usage history, a bit error rate to determine whether to select the second mode.
6 . The device of claim 4 , wherein the logic circuit is further configured to predict a first bit error rate of storing the data item in the first mode and a second bit error rate of storing the data item in the second mode, and compare a performance of reading the data item programmed in the first mode with the first bit error rate and a performance of reading the data item programmed in the second mode with the second bit error rate.
7 . The device of claim 4 , wherein the usage history includes an identification of a read to write ratio, or a count of write operations, or any combination thereof.
8 . A method, comprising:
receiving a request to store a data item in a plurality of memory cells in a device, wherein the plurality of memory cells are configured in the device as a group to store a predetermined size of user data;
selecting, from a plurality of different modes, a mode to program the plurality of memory cells to store the data item, wherein when programmed via the different modes, the plurality of memory cells have different sizes of storage capacity; and
programming the plurality of memory cells according to the mode to store the data item, wherein data stored in the plurality of memory cells as a result of the programming has a user portion that is exactly of the predetermined size.
9 . The method of claim 8 , wherein when programmed via at least a first mode among the different modes, the plurality of memory cells have a storage capacity size larger than the data item; and in response to the first mode being selected to program the plurality of memory cells to store the data item, the method further comprises:
determining a data recovery technique based on the storage capacity size; and
generating, using the data recovery technique, an encoded representation of the data item having the storage capacity size;
wherein the plurality of memory cells are programmed according to the first mode to store the data item in the encoded representation.
10 . The method of claim 9 , wherein the selecting is based at least in part on usage data of a memory region containing the plurality of memory cells.
11 . The method of claim 10 , wherein the data recovery technique includes an error correction code technique.
12 . The method of claim 11 , wherein the usage data includes a read to write ratio in the memory region.
13 . The method of claim 11 , wherein the usage data includes a bit error rate in operations of reading data from the memory region.
14 . The method of claim 9 , wherein the selecting is based at least in part on a prediction of a bit error rate in reading the plurality of memory cells.
15 . The method of claim 14 , further comprising:
comparing performance levels of reading the plurality of memory cells to retrieve the data item programmed in the plurality of different modes;
wherein the selecting is based at least in part on the comparing.
16 . The method of claim 15 , wherein the performance levels are predicted based at least in part on the prediction of the bit error rate.
17 . A computing device, comprising:
a memory having a plurality of memory cells configured in the computing device as a group to store a predetermined size of user data; and
a processor configured to select, from a plurality of redundancy levels and in response to a request to store a data item of the predetermined size, a redundancy level for storage of the data item of the predetermined size in the memory cells;
wherein storage of the data item in an encoded form according to the plurality of redundancy levels requires different amounts of storage space respectively;
wherein the memory cells are programmable in a plurality of modes sufficient to provide the different amounts of storage spaces respectively; and
wherein the device is configured to program the memory cells to store data where a user portion is limited to the data item of the predetermined size regardless of which redundancy level is selected from the plurality of redundancy levels.
18 . The computing device of claim 17 , wherein the processor is configured to select the redundancy level based at least in part on performance of retrieving the data item in the encoded form from the memory cells.
19 . The computing device of claim 18 , wherein the processor is configured to select the redundancy level further based on reliability of retrieving the data item in the encoded form from the memory cells.
20 . The computing device of claim 19 , wherein the processor is configured to select the redundancy level based at least in part on usage data of the memory.