Data retention flags in solid-state drives
First Claim
1. A data storage device comprising:
- a non-volatile memory array comprising a plurality of non-volatile memory devices; and
a controller configured to;
write data to a memory unit of the non-volatile memory array;
write a value to a memory indicating a number of bits of the written data programmed in a first of a plurality of logical states;
read the written data from the non-volatile memory array;
determine a number of bits having the first of the plurality of logical states in the read data;
determine a difference between the number of bits of the written data programmed in the first logical state and the number of bits having the first logical state in the read data; and
schedule a data refreshing operation for the non-volatile memory array based at least in part on the difference.
8 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods for managing data retention in a solid-state storage system utilizing data retention flag bytes are disclosed. A data storage device includes a non-volatile memory comprising a plurality of non-volatile memory devices and a controller configured to write data to a memory unit of the non-volatile memory array and write a data retention flag value indicating a number of bits of the written data programmed in a first of a plurality of logical states. The controller is further configured to read the data and determine a number of bits having the first of the plurality of logical states in the read data, and determine a difference between the number of bits of the written data programmed in the first logical state and the number of bits having the first logical state in the read data. The difference is used to determine data retention characteristics of the non-volatile memory.
-
Citations
29 Claims
-
1. A data storage device comprising:
-
a non-volatile memory array comprising a plurality of non-volatile memory devices; and a controller configured to; write data to a memory unit of the non-volatile memory array; write a value to a memory indicating a number of bits of the written data programmed in a first of a plurality of logical states; read the written data from the non-volatile memory array; determine a number of bits having the first of the plurality of logical states in the read data; determine a difference between the number of bits of the written data programmed in the first logical state and the number of bits having the first logical state in the read data; and schedule a data refreshing operation for the non-volatile memory array based at least in part on the difference. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A data storage device comprising:
-
a non-volatile memory array comprising a plurality of non-volatile memory devices; and a controller configured to; write data to a memory unit of the non-volatile memory array; write a value to a memory indicating a number of bits of the written data programmed in a first of a plurality of logical states; read the data from the non-volatile memory array; determine a number of bits having the first of the logical states in the read data; determine a difference between the number of bits of the written data programmed in the first logical state and the number of bits having the first logical state in the read data; determine a raw bit error rate (RBER) associated with at least a portion of the non-volatile memory array based at least in part on the difference; and schedule a data refreshing operation for the at least a portion of the non-volatile memory array based at least in part on the RBER.
-
-
11. A data storage device comprising:
-
a non-volatile memory array comprising a plurality of non-volatile memory devices; and a controller configured to; write data to a memory unit of the non-volatile memory array using a multi-level cell (MLC) programming scheme including four programming states; write a value to a memory indicating a number of cells programmed to a highest voltage state of the four programming states; read the data from the non-volatile memory array; determine a number of read cells of the highest voltage state; read the value from the non-volatile memory array; determine a difference between the number of programmed cells of the highest voltage state and the number of read cells of the highest voltage state; determine one or more adjusted read levels associated with the non-volatile memory array based at least in part on the difference; and schedule a data refreshing operation for at least a portion of the non-volatile memory array based at least in part on the difference. - View Dependent Claims (12, 13)
-
-
14. A method of managing data retention in a data storage system comprising a non-volatile memory array, the method comprising:
-
writing data to a memory unit of a non-volatile memory array; writing a value to a memory indicating a number of bits of the written data programmed in a first of a plurality of logical states; and writing multiple copies of the value to the non-volatile memory array; reading the data from the non-volatile memory array; determining a number of bits having the first of the logical states in the read data; determining a difference between the number of bits of the written data programmed in the first logical state and the number of bits having the first logical state in the read data; and scheduling a data refreshing operation for at least a portion of the non-volatile memory array based at least in part on the difference, wherein the method is performed under the control of a controller of the data storage system. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A method of managing data retention in a data storage system comprising a non-volatile memory array, the method comprising:
-
writing data to a memory unit of a non-volatile memory array; writing a value to a memory indicating a number of bits of the written data programmed in a first of a plurality of logical states; reading the data from the non-volatile memory array; determining, from the data read from the non-volatile memory array, a number of read bits in the first of the plurality of logical states; reading the value indicating the number of programmed bits from the memory; determining a difference between the number of programmed bits and the number of read bits; determining a raw bit error rate (RBER) associated with at least a portion of the non-volatile memory array based at least in part on the difference between the number of programmed bits and the number of read bits; and scheduling a data refreshing operation for the at least a portion of the non-volatile memory array based at least in part on the RBER, wherein the method is performed under the control of a controller of the data storage system.
-
-
24. A method of managing data retention in a data storage system comprising a non-volatile memory array, the method comprising:
-
writing data to a memory unit of a non-volatile memory array according to a multi-level cell (MLC) programming scheme including four programming states; writing a value to a memory indicating a number of cells programmed to a highest voltage state of the four programming states; reading the data from the non-volatile memory array; determining a number of read cells of the highest voltage state; reading the value from the non-volatile memory array; determining a difference between the number of programmed cells of the highest voltage state and the number of read cells of the highest voltage state; and determining one or more adjusted read levels associated with the non-volatile memory array based at least in part on the difference, and scheduling a data refreshing operation for the at least a portion of the non-volatile memory array based at least in part on the difference. - View Dependent Claims (25, 26)
-
-
27. A data storage device comprising:
-
a non-volatile memory array comprising a plurality of non-volatile memory devices; and a controller configured to; write data to a memory unit of the non-volatile memory array; write multiple copies of a value to the non-volatile memory array, the value indicating a number of upper page bits of the written data programmed in a first of a plurality of logical states; read the data from the memory array; determine, based on the read data, a number of the upper page bits that have flipped; determine a net difference between the number of upper page bits of the written data programmed in the first logical state and a number of upper page bits in the first logical state in the read data; and schedule a data refreshing operation for the at least a portion of the non-volatile memory array based at least in part on the net difference. - View Dependent Claims (28, 29)
-
Specification