IP Library › Granted Patent US 11,735,286
Granted Patent B2
US 11,735,286 · App. 17/490,304 · Granted Aug 22, 2023

Selecting read reference voltage using historical decoding information

Inventors: Bo Fu (Cupertino, CA); Jie Chen (Milpitas, CA); Zining Wu (Los Altos, CA)
Assignee: Innogrit Technologies Co., Ltd.
G11C29/42G11C11/4096G11C11/4099G11C29/18G11C29/4401G11C2029/1802
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,735,286
App. No.
17/490,304
Granted
Aug 22, 2023
Kind
B2
Abstract

Systems and methods are provided for reading data from non-volatile storage devices and decoding the read data. A method may include obtaining a unique identifier for a storage location to be read, retrieving from a memory an adjustment to read reference voltage (Vref) associated with the unique identifier, performing a read operation on the storage location using a read reference voltage adjusted by the adjustment to Vref, decoding data read from the storage location in a decoding process and updating the adjustment to V ref with decoding information generated during the decoding process.

Claims (62)

1. A method, comprising:

obtaining a unique identifier for a storage location to be read;

retrieving from a memory an adjustment to read reference voltage (V ref ) associated with the unique identifier;

performing a read operation on the storage location using a read reference voltage adjusted by the adjustment to V ref ;

decoding data read from the storage location in a decoding process; and

updating the adjustment to V ref in the memory, with decoding information generated during the decoding process;

wherein the decoding information includes another adjustment to V ref an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and updating the adjustment to V ref includes: determining that the another adjustment to V ref included in the decoding information is the same as the adjustment to V ref stored in the memory; calculating a new value of an average of difference between EFC 0→1 and EFC 1→0 , the average being calculated over a number of most recent decoding processes; determining that threshold values for the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average are reached; generating a new adjustment to V ref and resetting the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average to zero; and storing the new adjustment to V ref , zero for the average of difference between EFC 0→1 and EFC 1→0 and zero for the number of most recent decoding processes used for calculating the average to the memory; or

wherein the decoding information includes another adjustment to V ref , an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and updating the adjustment to V ref includes: determining that the another adjustment to V ref included in the decoding information is the same as the adjustment to V ref stored in the memory; calculating a new value of an average of difference between EFC 0→1 and EFC 1→0 , the average being calculated over a number of most recent decoding processes; determining that at least one of the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average has not reached its respective threshold value; and updating a memory record with the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average; or

wherein the decoding information includes an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and updating the adjustment to V ref includes: calculating a new value of an average of difference between EFC 0→1 and EFC 0→1 the average being calculated over a number of most recent decoding processes; determining whether threshold values for the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average are reached; if both of the threshold values are reached, generating a new adjustment to V ref and resetting the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average to zero; and if either of the threshold values is not reached, updating a memory record with the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average.

2. The method of claim 1 , wherein the decoding information includes another adjustment to V ref that is different from the adjustment to V ref stored in the memory and updating the adjustment to V ref includes replace the adjustment to V ref stored in the memory with the another adjustment to V ref .

3. The method of claim 1 , wherein the decoding information further includes another adjustment to V ref , and wherein updating the adjustment to V ref further includes: determining that the another adjustment to V ref included in the decoding information is the same as the adjustment to V ref stored in the memory.

4. The method of claim 1 , wherein the memory stores the adjustment to V ref using the unique identifier for the storage location as an index.

5. The method of claim 1 , wherein the unique identifier for the storage location is a physical data address (PDA).

6. The method of claim 1 , further comprising caching the adjustment to V ref with a caching algorithm.

7. A storage system controller, comprising:

a logical data address (LDA) to physical data address (PDA) mapper configured to obtain a PDA for a LDA;

a read reference voltage (V ref ) search controller configured to retrieve from a memory an adjustment to V ref associated with the PDA;

a NAND interface controller configured to issue a read command to read a storage location identified by the PDA;

one or more ECC decoders configured to decode data read by the read command in a decoding process; and

a V ref update controller configured to update the adjustment to V ref in the memory, with decoding information generated during the decoding process;

wherein the decoding information includes another adjustment to V ref , an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and wherein to update the adjustment to V ref includes to:

determine that the another adjustment to V ref included in the decoding information is the same as the adjustment to V ref stored in the memory;

calculate a new value of an average of difference between EFC 0→1 and EFC 1→0 , the average being calculated over a number of most recent decoding processes;

determine that threshold values for the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average are reached:

generate a new adjustment to V ref and reset the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average to zero; and

store the new adjustment to V ref , zero for the average of difference between EFC 0→1 and EFC 1→0 and zero for the number of most recent decoding processes used for calculating the average to the memory.

8. The storage system controller of claim 7 , wherein the decoding information includes another adjustment to V ref that is different from the adjustment to V ref stored in the memory and to update the adjustment to V ref includes replace the adjustment to V ref stored in the memory with the another adjustment to V ref .

9. A storage system controller, comprising:

a logical data address (LDA) to physical data address (PDA) mapper configured to obtain a PDA for a LDA;

a read reference voltage (V ref ) search controller configured to retrieve from a memory an adjustment to V ref associated with the PDA;

a NAND interface controller configured to issue a read command to read a storage location identified by the PDA;

one or more ECC decoders configured to decode data read by the read command in a decoding process; and

a V ref update controller configured to update the adjustment to V ref in the memory, with decoding information generated during the decoding process;

wherein the decoding information includes another adjustment to V ref , an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and wherein to update the adjustment to V ref includes to:

determine that the another adjustment to V ref included in the decoding information is the same as the adjustment to V ref stored in the memory;

calculate a new value of an average of difference between EFC 0→1 and EFC 1→0 , the average being calculated over a number of most recent decoding processes;

determine that at least one of the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average has not reached its respective threshold value; and

update a memory record with the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average.

10. A storage system controller, comprising:

a logical data address (LDA) to physical data address (PDA) mapper configured to obtain a PDA for a LDA;

a read reference voltage (V ref ) search controller configured to retrieve from a memory an adjustment to V ref associated with the PDA;

a NAND interface controller configured to issue a read command to read a storage location identified by the PDA;

one or more ECC decoders configured to decode data read by the read command in a decoding process; and

a V ref update controller configured to update the adjustment to V ref in the memory, with decoding information generated during the decoding process;

wherein the decoding information includes an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and wherein to update the adjustment to V ref includes to:

calculate a new value of an average of difference between EFC 0→1 and EFC 1→0 , the average being calculated over a number of most recent decoding processes;

determine whether threshold values for the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average are reached;

if both of the threshold values are reached, generate a new adjustment to V ref and reset the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average to zero; and

if either of the threshold values is not reached, update a memory record with the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average.

11. The storage system controller of claim 10 , wherein the decoding information further includes another adjustment to V ref , and wherein to update the adjustment to V ref further includes to determine that the another adjustment to V ref included in the decoding information is the same as the adjustment to V ref stored in the memory.

12. A non-transitory machine-readable medium having executable instructions, wherein the executable instructions, when executed by a storage controller, causes the storage controller to:

obtain a unique identifier for a storage location to be read;

retrieve from a memory an adjustment to read reference voltage (V ref ) associated with the unique identifier;

perform a read operation on the storage location using a read reference voltage adjusted by the adjustment to V ref ;

decode data read from the storage location in a decoding process; and

update the adjustment to V ref in the memory, with decoding information generated during the decoding process;

wherein the decoding information includes another adjustment to V ref , an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and to update the adjustment to V ref includes to: determine that the another adjustment to V ref included in the decoding information is the same as the adjustment to V ref stored in the memory; calculate a new value of an average of difference between EFC 0→1 and EFC 1→0 , the average being calculated over a number of most recent decoding processes; determine that threshold values for the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average are reached; generating a new adjustment to V ref and resetting the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average to zero; and store the new adjustment to Viet, zero for the average of difference between EFC 0→1 and EFC 1→0 and zero for the number of most recent decoding processes used for calculating the average to the memory; or

wherein the decoding information includes another adjustment to V ref , an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and to update the adjustment to V ref includes to: determine that the another adjustment to V ref included in the decoding information is the same as the adjustment to V ref stored in the memory; calculate a new value of an average of difference between EFC 0→1 and EFC 1→0 the average being calculated over a number of most recent decoding processes; determine that at least one of the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average has not reached its respective threshold value; and update a memory record with the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average; or

wherein the decoding information includes an error flipping count of zero to one (EFC 0→1 ) and an error flipping count of one to zero (EFC 1→0 ), and wherein to update the adjustment to V ref includes to: calculate a new value of an average of difference between EFC 0→1 and EFC 1→0 , the average being calculated over a number of most recent decoding processes; determine whether threshold values for the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average are reached; if both of the threshold values are reached, generate a new adjustment to V ref and reset the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average to zero; and if either of the threshold values is not reached, update a memory record with the new value of the average of difference between EFC 0→1 and EFC 1→0 and the number of most recent decoding processes used for calculating the average.

13. The non-transitory machine-readable medium of claim 12 , wherein the decoding information includes another adjustment to V ref that is different from the adjustment to V ref stored in the memory and to update the adjustment to V ref includes replace the adjustment to V ref stored in the memory with the another adjustment to V ref .

14. The storage system controller of claim 9 , wherein the decoding information includes another adjustment to V ref that is different from the adjustment to V ref stored in the memory and to update the adjustment to V ref includes replace the adjustment to V ref stored in the memory with the another adjustment to V ref .

15. The storage system controller of claim 10 , wherein the decoding information includes another adjustment to V ref that is different from the adjustment to V ref stored in the memory and to update the adjustment to V ref includes replace the adjustment to V ref stored in the memory with the another adjustment to V ref .

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2021
From: FU, BO; CHEN, JIE; WU, ZINING
To: INNOGRIT TECHNOLOGIES CO., LTD.
Reel/Frame 057655/0771 →
Continuity (1)
Related Publication 20230098775A1 · Mar 30, 2023
Cited By (1)
US 12,431,210