IP Library › Granted Patent US 10,475,524
Granted Patent B2
US 10,475,524 · App. 15/265,869 · Granted Nov 12, 2019

Recovery of data read from memory with unknown polarity

Inventors: Assaf Shappir (Ganey Tikva, IL); Eyal Gurgi (Petach Tikva, IL)
Assignee: Apple Inc.
G11C29/52G11C11/22
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 10,475,524
App. No.
15/265,869
Granted
Nov 12, 2019
Kind
B2
Abstract

A memory controller includes an interface and circuitry. The interface is configured to communicate with a memory device, which includes multiple memory cells, and which applies refreshing to the memory cells by repeatedly inverting data stored in the memory cells. The circuitry is configured to store input data in a group of the memory cells, to read the stored input data from the group of the memory cells to produce read data, the read data has an actual polarity that is either un-inverted or inverted due to the refreshing of the memory cells in the group, to analyze the read data for identifying the actual polarity of the read data, and to recover the input data from the read data based on the identified actual polarity.

Claims (50)

1. A memory controller, comprising:

an interface configured to communicate with a memory device comprising multiple memory cells, the memory device configured to refresh the memory cells by repeatedly inverting data stored in the memory cells; and

circuitry configured to:

encode input data into a Code Word (CW) using an Error Correction Code (ECC) that generates multiple parity bits, wherein both the CW and an inverted version of the CW in which a predefined group of one or more of the parity bits are inverted comprise valid code words of the ECC;

store the CW in a group of the memory cells;

read the stored CW from the group of the memory cells to produce read data, wherein due to the refresh of the memory cells in the group, the read data has an actual polarity that is either un-inverted or inverted;

identify the actual polarity of the read data by decoding the ECC of the read data to produce decoded data; and

recover the input data from the decoded data based on the identified actual polarity.

2. The memory controller according to claim 1 , wherein the circuitry is configured to identify the actual polarity without receiving an explicit indication of the actual polarity from the memory device.

3. The memory controller according to claim 1 , wherein the multiple parity bits comprise first parity bits and second parity bits, such that encoding the input data and encoding an inverted version of the input data results in respective CWs having same first parity bits and mutually-inverted second parity bits.

4. The memory controller according to claim 3 , wherein the circuitry is further configured to:

perform to the read data at least one of a first ECC decoding operation that decodes the read data directly to generate first decoded data, and a second ECC decoding operation that decodes the read data after inverting the first parity bits to generate second decoded data; and

identify the actual polarity of the read data based on pass/fail outcomes of the at least one of the first ECC decoding operation and the second ECC decoding operation.

5. The memory controller according to claim 4 , wherein the circuitry is configured to identify that the actual polarity is un-inverted when the first ECC decoding operation succeeds and the second ECC decoding operation fails, and to recover the input data by outputting the first decoded data.

6. The memory controller according to claim 4 , wherein the circuitry is configured to identify that the actual polarity is inverted when the second ECC decoding operation succeeds and the first ECC decoding operation fails, and to recover the input data by inverting the second decoded data.

7. The memory controller according to claim 4 , wherein the circuitry is configured to report a readout failure when the first ECC decoding operation and the second ECC decoding operation have both failed, or both succeeded.

8. The memory controller according to claim 4 , wherein the circuitry is configured to perform the first ECC decoding operation, and to subsequently perform the second ECC decoding operation only in response to identifying that the first ECC decoding operation has failed.

9. The memory controller according to claim 1 , wherein the memory cells in the group store multiple encoded data pages having respective bit significance values, wherein each encoded data page corresponds to respective input data that was encoded using the ECC, and wherein the circuitry is configured to read one of the encoded data pages stored in the group, and to identify the actual polarity and recover the input data of the one of the encoded data pages.

10. The memory controller according to claim 1 , wherein the memory cells of the memory device comprise ferroelectric memory cells.

11. A method, comprising:

encoding input data into a Code Word (CW) using an Error Correction Code (ECC) that generates multiple parity bits, wherein both the CW and an inverted version of the CW in which a predefined group of one or more of the parity bits are inverted comprise valid code words of the ECC;

storing the CW in a group of memory cells of a memory device, which applies refreshing to the memory cells by repeatedly inverting the data stored in the memory cells;

reading the stored CW from the group of the memory cells to produce read data, wherein due to the refreshing of the memory cells in the group, the read data has an actual polarity that is either un-inverted or inverted;

identifying the actual polarity of the read data by decoding the ECC of the read data to produce decoded data; and

recovering the input data from the decoded data based on the identified actual polarity.

12. The method according to claim 11 , wherein identifying the actual polarity comprises identifying the actual polarity without receiving an explicit indication of the actual polarity from the memory device.

13. The method according to claim 11 , wherein the multiple parity bits comprise first parity bits and second parity bits, such that encoding the input data and encoding an inverted version of the input data results in respective CWs having same first parity bits and mutually-inverted second parity bits.

14. The method according to claim 13 , wherein decoding the ECC of the read data comprises performing at least one of a first ECC decoding operation that decodes the read data directly to generate first decoded data, and a second ECC decoding operation that decodes the read data after inverting the first parity bits to generate second decoded data, and wherein identifying the actual polarity of the read data comprises identifying the actual polarity of the read data based on pass/fail outcomes of the at least one of the first ECC decoding operation and the second ECC decoding operation.

15. The method according to claim 14 , wherein identifying the actual polarity comprises identifying that the actual polarity is un-inverted when the first ECC decoding operation succeeds and the second ECC decoding operation fails, and wherein recovering the input data comprises outputting the first decoded data.

16. The method according to claim 14 , wherein identifying the actual polarity comprises identifying that the actual polarity is inverted when the second ECC decoding operation succeeds and the first ECC decoding operation fails, and wherein recovering the input data comprises inverting the second decoded data.

17. The method according to claim 14 , and comprising reporting a readout failure when the first ECC decoding operation and the second ECC decoding operation have both failed, or both succeeded.

18. The method according to claim 14 , wherein decoding the ECC of the read data comprises performing the first ECC decoding operation, and subsequently performing the second ECC decoding operation only in response to identifying that the first ECC decoding operation has failed.

19. A storage system, comprising:

a memory comprising multiple memory cells, the memory is configured to refresh the memory cells by repeatedly inverting data stored in the memory cells; and

a controller, which is configured to:

encode input data into a Code Word (CW) using an Error Correction Code (ECC) that generates multiple parity bits, wherein both the CW and an inverted version of the CW in which a predefined group of one or more of the parity bits are inverted comprise valid code words of the ECC;

store the CW in a group of the memory cells;

read the stored CW from the group of the memory cells to produce read data, wherein due to the refresh of the memory cells in the group, the read data has an actual polarity that is either un-inverted or inverted;

identify the actual polarity of the read data by decoding the ECC of the read data to produce decoded data; and

recover the input data from the decoded data based on the identified actual polarity.

20. A memory controller, comprising:

an interface configured to communicate with a memory device comprising multiple memory cells, the memory device configured to refresh the memory cells by repeatedly inverting data stored in the memory cells; and

circuitry configured to:

set a given bit of input data to a predefined value;

encode the input data with the given bit set into a Code Word (CW) using an Error Correction Code (ECC) that generates multiple parity bits, such that encoding the input data and an inverted version of the input data results in same values of the multiple parity bits;

store the CW in a group of the memory cells;

read the stored CW from the group of the memory cells to produce read data, wherein due to the refresh of the memory cells in the group, the read data has an actual polarity that is either un-inverted or inverted;

decode the ECC of the read data to produce decoded data;

identify the actual polarity of the decoded data by checking the polarity of the given bit in the decoded data; and

recover the input data from the decoded data based on the identified actual polarity.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2016
From: SHAPPIR, ASSAF; GURGI, EYAL
To: APPLE INC.
Reel/Frame 039745/0811 →
Continuity (1)
Related Publication 20180074892A1 · Mar 15, 2018