IP Library Granted Patent US 9,772,935
Granted Patent B2
US 9,772,935 · App. 14/488,125 · Granted Sep 26, 2017

Data storage based on rank modulation in single-level flash memory

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 9,772,935
App. No.
14/488,125
Granted
Sep 26, 2017
Kind
B2
Abstract

Technologies are generally described to store data in single-level memory using rank modulation. In some examples, data to be encoded to single-level memory may be represented with a bit ranking for a group of bits. A program vector may then be determined from the bit ranking and partial program characteristics associated with the memory group(s). The memory group(s) may then be programmed according to the program vector. The encoded data may be subsequently retrieved by performing a series of partial programming operations on the memory group(s) to recover the bit ranking and derive the data represented.

Claims (79)

1. A method to encode data on a single-level flash memory by use of rank modulation, the method comprising:

determining a bit ranking within a group of bits based on the data to he encoded;

determining a number of program pulses to modify each respective bit in the group of bits from a first value to a second value;

determining a program vector based on the determined bit ranking and the determined number of program pulses, wherein each element in the program vector includes the number of program pulses to modify a given bit of the group of bits from the first value to the second value; and encoding the data to the group of bits, using partial programming, based on the determined program vector.

2. The method of claim 1 , wherein encoding the data to the group of bits comprises:

using the partial programming based on a program time to modify the respective bit in the group of bits from the first value to the second value.

3. The method of claim 2 , wherein the program vector indicates at least one of the number of program pulses and the program time.

4. The method of claim 3 , wherein determining the program vector comprises reducing the number of program pulses, thereby oversampling the single-level flash memory such that a partial program resolution is increased.

5. The method of claim 1 , further comprising:

performing a program-and-verify sequence on the encoded data;

adjusting the determined program vector based on the program-and-verify sequence; and

re-encoding the data encoded to the group of bits using the partial programming based on the adjusted program vector.

6. The method of claim 5 , wherein:

performing the program-and-verify sequence comprises:

performing at least one read operation on the data encoded to the group of bits; and

determining, based on the at least one read operation, that at least one of delayed matriculation and premature matriculation has occurred in association with at least one bit in the group of bits, and

adjusting the determined program vector comprises adjusting the number of program pulses in the determined program vector associated with the at least one bit in the group of bits in response to the determination that the at least one of the delayed matriculation and the premature matriculation has occurred.

7. The method of claim 6 , wherein adjusting the determined program vector further comprises adjusting another number of program pulses in the program vector associated with at least one other bit in the group of bits.

8. The method of claim 6 , wherein adjusting the number of program pulses comprises one or more of:

increasing the number of program pulses to the at least one bit;

increasing a program time to the at least one bit;

decreasing the number of program pulses to the at least one bit;

decreasing the program time to the at least one bit; and

applying a number of erase pulses to the at least one bit.

9. The method of claim 1 , wherein:

determining the program vector comprises:

determining a complete program vector based on the determined bit ranking and the determined number of program pulses; and

dividing the complete program vector into a first program vector portion and a second program vector portion, and

encoding the data to the group of bits comprises encoding the data based on the first program vector portion.

10. An apparatus configured to write data in a single-level flash memory by use of rank modulation, the apparatus comprising:

a processor implemented in an integrated circuit and configured to:

determine a bit ranking based on the data to be written;

determine a plurality of complete program durations for a plurality of bits of the single-level flash memory, wherein each complete program duration indicates a respective program time duration to modify a respective bit in the plurality of bits from a first value to a second value; and

determine a program vector based on the determined bit ranking and the determined plurality of complete program durations, wherein the program vector is indicative of at least one partial program duration; and

a memory interface circuit coupled to the processor and configured to:

receive the determined program vector from the processor; and

write the data to the plurality of bits by partial program of the plurality of bits according to the at least one partial program duration indicated by the received program vector, wherein the at least one partial program duration includes a time duration of charge delivery in which a particular voltage is applied to a given bit of the plurality of bits to achieve the partial program.

11. The apparatus of claim 10 , wherein:

each complete program duration is based on a number of program pulses that correspond to the respective program time duration for each respective bit of the plurality of bits, and

the at least one partial program duration includes a program time to at least partially modify at least one bit in the plurality of bits from the first value to the second value.

12. The apparatus of claim 11 , wherein the processor is configured to determine the program vector by reduction of the number of program pulses, so as to oversample the single-level flash memory such that a partial program resolution is increased.

13. The apparatus of claim 10 , wherein:

the processor is further configured to:

control performance of a program-and-verify sequence on the written data; and

adjust the determined program vector based on the program-and-verify sequence, and

the memory interface circuit is further configured to:

receive the adjusted program vector; and

re-write the data written to the plurality of bits by use of a partial program operation based on the adjusted program vector.

14. The apparatus of claim 13 , wherein the processor is configured to:

control performance of the program-and-verify sequence by:

control of performance of at least one read operation on the data written to the plurality of bits; and

determination, based on the at least one read operation, that at least one of delayed matriculation and premature matriculation has occurred in association with at least one bit in the plurality of bits; and

adjust the determined program vector by at least one of:

adjustment of the at least one partial program duration in the determined program vector associated with the at least one bit in response to determination that at least one of the delayed matriculation and the premature matriculation has occurred; and

adjustment of another partial program duration in the program vector associated with at least one other bit in the plurality of bits.

15. A method to retrieve data encoded in a single-level flash memory by use of rank modulation, the method comprising:

performing a plurality of read operations on a plurality of bits of the single-level flash memory, at least one of the plurality of read operations comprising:

partially programming the plurality of bits using a number of program pulses; and

reading a state of the partially-programmed plurality of bits;

determining a ranking associated with the plurality of bits based on at least respective read states associated with the plurality of read operations;

determining a plurality of complete program durations for the plurality of bits, wherein each complete program duration indicates a respective program time duration to modify a respective bit in the plurality of bits from a first value to a second value;

determining a program vector based on the determined ranking and the determined plurality of complete program durations, wherein the program vector is indicative of at least one partial program duration, and wherein the at least one partial program duration includes a time duration of charge delivery in which a particular voltage is applied to a given bit of the plurality of bits to achieve the partial programming; and

and deriving a final data based on the determined program vector.

16. The method of claim 15 , further comprising reading an initial state of the plurality of bits before performing the plurality of read operations, wherein determining the ranking comprises determining the ranking based on the initial state and the respective read states associated with the plurality of read operations.

17. The method of claim 15 , wherein determining the ranking comprises determining the ranking based on at least the respective read states associated with the plurality of read operations and a multi-bit representation for at least one bit in the bit ranking.

18. An apparatus configured to retrieve data encoded in a single-level flash memory by use of rank modulation, the apparatus comprising:

a memory interface circuit coupled to a plurality of flash memory bits and configured to:

read an initial state of the plurality of flash memory bits; and

perform a plurality of read operations on the plurality of flash memory bits by:

performance of a partial program of the plurality of flash memory bits based on at least one partial program duration, wherein the at least one partial program duration includes a time duration of charge delivery in which a particular voltage is applied to partially modify at least one bit in the plurality of flash memory bits from a first value to a second value; and

performance of a read of a state of the partially-programmed plurality of flash memory bits; and

and a processor implemented in an integrated circuit, wherein the processor is coupled to the memory interface circuit and configured to:

receive, from the memory interface module, the respective read states associated with the plurality of read operations;

determine a ranking associated with the plurality of flash memory bits based on the respective read states; and

derive a final data based on the ranking.

19. The apparatus of claim 18 , wherein the at least one partial program duration is based on a number of program pulses that correspond to the program time.

20. The apparatus of claim 19 , wherein the memory interface circuit is configured to perform the plurality of read operations by reduction of the number of program pulses, so as to oversample the single-level flash memory such that a partial program resolution is increased.

21. The method of claim 7 , wherein the other number of program pulses differ from the number of program pulses.

22. The apparatus of claim 10 , wherein the processor is further configured to, prior to the determination of the bit ranking, recover rank modulated data in a retrieval read process, and wherein the data includes the rank-modulated data.

Assignments (2)
SECURITY INTEREST Recorded Jan 29, 2019
From: EMPIRE TECHNOLOGY DEVELOPMENT LLC
To: CRESTLINE DIRECT FINANCE, L.P.
Reel/Frame 048373/0217 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2014
From: KAN, EDWIN
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 033761/0483 →