Legal claims defining the scope of protection, as filed with the USPTO.
1. An apparatus, comprising: a Flash memory block configured to store data; and a processor and logic integrated with and/or executable by the processor, the logic being configured to: determine, after writing data to the Flash memory block, one or more base threshold voltage shift (TVS BASE ) values configured to track permanent changes in underlying threshold voltage distributions due to cycling of the Flash memory block; determine, after the writing of data to the Flash memory block, one or more delta threshold voltage shift (TVS Δ ) values configured to track temporary changes with respect to changes in the underlying threshold voltage distributions due to retention and/or read disturb errors; calculate one or more overall threshold voltage shift values for the data written to the Flash memory block, the one or more overall threshold voltage shift values being a function of the one or more TVS BASE values and the one or more TVS Δ values to be used when writing data to the Flash memory block; and apply the one or more overall threshold voltage shift values to a read operation of the data stored to the Flash memory block upon receiving a read request.
2. The apparatus as recited in claim 1 , wherein the logic is further configured to reset the one or more TVS Δ values when the Flash memory block is erased.
3. The apparatus as recited in claim 1 , wherein the logic is further configured to: read one or more TVS values from a Flash controller memory; reset a program/erase cycle count since last calibration after calibrating the one or more overall threshold voltage shift values; and store the one or more TVS BASE values, the one or more TVS Δ values, and the program/erase cycle count since last calibration to the Flash controller memory.
4. The apparatus as recited in claim 1 , wherein each overall threshold voltage shift value equals a sum of a corresponding TVS BASE value and a corresponding TVS Δ value.
5. The apparatus as recited in claim 1 , wherein the logic is further configured to re-calibrate at least one of the one or more TVS BASE values and the one or more TVS Δ values during a background health check after a predetermined number of background health checks without calibration are performed.
6. The apparatus as recited in claim 5 , wherein the predetermined number of background health checks without calibration is from 1 to 5.
7. The apparatus as recited in claim 6 , wherein a block is marked for re-calibration when a program/erase cycle count since last calibration exceeds a predetermined threshold, wherein blocks marked for re-calibration are forced to be calibrated in a read sweep background health check, and wherein the blocks are unmarked after re-calibration is completed.
8. The apparatus as recited in claim 6 , wherein the re-calibration is not performed when a program/erase cycle count is lower than a predetermined threshold.
9. The apparatus as recited in claim 1 , wherein the one or more TVS BASE values and the one or more TVS Δ values are determined periodically in the background without interrupting normal operations directed at the Flash memory block.
10. The apparatus as recited in claim 1 , wherein the logic is further configured to group together physical Flash pages which have similar TVS BASE and TVS Δ values into a page group.
11. The apparatus as recited in claim 10 , further comprising creating a mapping that correlates the TVS BASE and TVS Δ values as tracked per page group to actual read voltage shift values.
12. A method for managing threshold voltage shifts in Flash memory, comprising: determining, by a processor after writing data to a Flash memory block, one or more base threshold voltage shift (TVS BASE ) values configured to track permanent changes in underlying threshold voltage distributions due to cycling of the Flash memory block; determining, by the processor after the writing of data to the Flash memory block, one or more delta threshold voltage shift (TVS Δ ) values configured to track temporary changes, with respect to changes in the underlying threshold voltage distributions due to retention and/or read disturb errors; calculating by the processor an overall threshold voltage shift value for the data written to the Flash memory block, the overall threshold voltage shift value being a function of the one or more TVS BASE values and the one or more TVS Δ values to be used when writing data to the Flash memory block; and applying by the processor the overall threshold voltage shift value to a read operation of the data stored to the Flash memory block upon receiving a read request.
13. The method as recited in claim 12 , further comprising resetting the one or more TVS Δ values when the Flash memory block is erased.
14. The method as recited in claim 12 , further comprising: reading one or more TVS values from a Flash controller memory; resetting a program/erase cycle count since last calibration after calibrating the overall threshold voltage shift value; and storing the one or more TVS BASE values, the one or more TVS Δ values, and the program/erase cycle count since last calibration to the Flash controller memory.
15. The method as recited in claim 12 , further comprising re-calibrating at least one of the one or more TVS BASE values and the one or more TVS Δ values during a background health check after a predetermined number of background health checks without calibration are performed, wherein the predetermined number of background health checks without calibration is from 1 to 5.
16. The method as recited in claim 15 , wherein a block is marked for re-calibration when a program/erase cycle count since last calibration exceeds a predetermined threshold, wherein blocks marked for re-calibration are forced to be calibrated in a read sweep background health check, wherein the blocks are unmarked after re-calibration is completed, and wherein the re-calibration in a read sweep background health check is not performed when a program/erase cycle count since last calibration is lower than a predetermined threshold.
17. The method as recited in claim 12 , wherein at least one of the one or more TVS BASE values and the one or more TVS Δ values are determined periodically in the background without interrupting normal operations directed at the Flash memory block.
18. The method as recited in claim 12 , further comprising: grouping together physical Flash pages which have similar TVS BASE and TVS Δ values into a page group; and creating a mapping that correlates the TVS BASE and TVS Δ values as tracked per page group to actual read voltage shift values.
19. A computer program product for managing threshold voltage shifts in Flash memory, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions being readable and/or executable by a processor to cause the processor to: determine, by the processor after writing data to a Flash memory block, one or more base threshold voltage shift (TVS BASE ) values configured to track permanent changes in underlying threshold voltage distributions due to cycling of the Flash memory block; determine, by the processor after the writing of data to the Flash memory block, one or more delta threshold voltage shift (TVS Δ ) values configured to track temporary changes with respect to changes in the underlying threshold voltage distributions due to retention and/or read disturb errors; calculate, by the processor, an overall threshold voltage shift value for the data written to the Flash memory block, the overall threshold voltage shift value being a function of the TVS BASE value and the TVS Δ value to be used when writing data to the Flash memory block; and apply, by the processor, the overall threshold voltage shift value to a read operation of the data stored to the Flash memory block upon receiving a read request.
20. The computer program product as recited in claim 19 , wherein the program instructions are further readable and/or executable by the processor to cause the processor to: reset, by the processor, the TVS Δ value when the Flash memory block is erased; re-calibrate, by the processor, at least one of the one or more TVS BASE values and the one or more TVS Δ values after a predetermined number of background health checks without calibration are run, wherein the predetermined number of background health checks without calibration is from 1 to 5, and wherein the block is marked for re-calibration when a program/erase cycle count since last calibration exceeds a predetermined threshold; and group together, by the processor, physical Flash pages which have similar TVS BASE and TVS Δ values into a page group.
Unknown
February 2, 2016
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.