# US 2014/0157086 A1 · Storage and retrieval of shaped data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0157086 A1
- Document ID: US20140157086A1
- Status: Published application
- Kind: A1
- Application number: 13/690,275
- Filed: 2012-11-30
- Published: 2014-06-05
- Earliest claimed: 2012-11-30
- Assignees: SanDisk Technologies LLC
- Applicants: Sandisk Technologies Inc.
- Inventors: ERAN SHARON; IDAN ALROD; OMER FAINZILBER; ARIEL NAVON
- Web page: https://patentgrep.com/patent/US20140157086A1

## CPC

- G06F 12/00: Accessing, addressing or allocating within memory systems or architectures (digital input from, or digital output to record carriers, e.g. to disk storage units, G06F3/06)
- G06F 11/08: Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F 11/1012: {using codes or arrangements adapted for a specific type of error (G06F11/1048 takes precedence)}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 12/14: Protection against unauthorised use of memory {or access to memory}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods of encoding and decoding shaped data include determining a bit representation corresponding to a bit in a representation of a codeword that is read from a non-volatile memory of a data storage device. A soft metric corresponding to the bit representation is determined at least partially based on an amount of shaping of data.

## Claims

### Claim 1

A method comprising:
in a data storage device including a non-volatile memory, performing:
receiving a representation of a codeword that is read from the non-volatile memory;
determining a shaping level of a set of one or more bits of the representation of the codeword;
determining a soft metric of each bit of the one or more bits of the representation of the codeword based on a value of the bit in the received representation and based on the shaping level; and
initiating a decoding operation of the codeword based on the soft metrics.

### Claim 2 (depends on 1)

The method of claim 1, wherein the shaping level is determined based on stored side information.

### Claim 3 (depends on 1)

The method of claim 1, wherein the shaping level is determined as a function of read values of the representation of the codeword read from the non-volatile memory.

### Claim 4 (depends on 3)

The method of claim 3, wherein the shaping level is determined as a function of a number of occurrences of each of the read values within the set of one or more bits.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the soft metric of each bit comprises:
determining an initial soft metric of each bit based on a read value of the bit;
determining a correction value to the initial soft metric of each bit, wherein the correction value is at least partially based on the shaping level; and
generating the soft metric of each bit by applying the correction value to the initial soft metric.

### Claim 6 (depends on 5)

The method of claim 5, wherein the correction value is computed further based on received bit reliability information.

### Claim 7 (depends on 1)

The method of claim 1, further comprising estimating an error correction capability of decoding the representation of the codeword based on the shaping level.

### Claim 8 (depends on 7)

The method of claim 7, further comprising sensing the non-volatile memory to determine additional soft bits in response to the estimated error correction capability being below a threshold.

### Claim 9 (depends on 7)

The method of claim 7, further comprising determining the soft metric as a function of the estimated correction capability.

### Claim 10 (depends on 1)

The method of claim 1, wherein the set of one or more bits is determined according to a sliding window of a data stream.

### Claim 11 (depends on 1)

The method of claim 1, wherein the soft metric includes a hard value and at least one of a reliability value, a likelihood value, or a probability value.

### Claim 12 (depends on 1)

The method of claim 1, wherein the soft metric includes a log likelihood value.

### Claim 13

A data storage device comprising:
a non-volatile memory; and
a controller configured to:
read a representation of a codeword from the non-volatile memory;
determine a shaping level of a set of one or more bits of the representation of the codeword;
determine a soft metric of each bit of the one or more bits of the representation of the codeword based on a value of the bit in the received representation and based on the shaping level; and
initiate a decoding operation of the codeword based on the soft metrics.

### Claim 14 (depends on 13)

The data storage device of claim 13, wherein the controller is further configured to estimate an error correction capability of decoding the representation of the codeword based on the shaping level.

### Claim 15 (depends on 14)

The data storage device of claim 14, wherein the controller is further configured to initiate sensing of the non-volatile memory to determine additional soft bits in response to the estimated error correction capability being below a threshold.

### Claim 16 (depends on 14)

The data storage device of claim 14, wherein the controller is further configured to determine the soft metric as a function of the estimated correction capability.

### Claim 17

A method comprising:
in a data storage device including a non-volatile memory, performing:
determining an amount of shaping of data to be written to the non-volatile memory;
selecting at least one programming parameter at least partially based on the amount of shaping; and
programming the data to the non-volatile memory according to the at least one selected programming parameter.

### Claim 18 (depends on 17)

The method of claim 17, wherein the data includes a codeword, wherein the amount of shaping is determined based on a distribution of bit values in the codeword, and wherein selecting the at least one programming parameter includes:
estimating a correction capability at least partially based on a code rate of the codeword and the distribution of the bit values in the codeword; and
determining the at least one programming parameter based on the estimated correction capability.

### Claim 19 (depends on 17)

The method of claim 17, wherein the at least one programming parameter includes a programming step size that is selected based on the amount of shaping of the data, wherein the selected programming step size is larger than a programming step size corresponding to unshaped data, and wherein using the selected programming step size enables faster programming of the data to the non-volatile memory as compared to using the programming step size corresponding to unshaped data.

### Claim 20 (depends on 17)

The method of claim 17, wherein the non-volatile memory includes a multi-level cell (MLC) partition, wherein the shaping of the data causes a state of the MLC partition to be more highly populated than a less-populated state of the MLC partition when the data is programmed to the MLC partition, and wherein the at least one programming parameter is selected to reduce an error rate associated with the more highly populated state.

### Claim 21 (depends on 20)

The method of claim 20, wherein the at least one programming parameter includes a programming step size and wherein a programming step size for the more highly populated state is smaller than a programming step size for the less-populated state.

### Claim 22 (depends on 20)

The method of claim 20, wherein the at least one programming parameter includes a verify level.

### Claim 23

A data storage device comprising:
a non-volatile memory; and
a controller configured to:
determine an amount of shaping of bit values in data to be written to the non-volatile memory;
select at least one programming parameter at least partially based on the amount of shaping; and
program the data to the non-volatile memory according to the selected programming parameter.

### Claim 24 (depends on 23)

The data storage device of claim 23, wherein the data includes a codeword, wherein the amount of shaping is determined based on a distribution of bit values in the codeword, and wherein the controller is configured to:
estimate a correction capability at least partially based on a code rate of the codeword and the distribution of the bit values in the codeword; and
determine the at least one programming parameter based on the estimated correction capability.

### Claim 25 (depends on 23)

The data storage device of claim 23, wherein the data includes a codeword, wherein the amount of shaping is determined based on a distribution of bit values in the codeword, and wherein the controller is configured to:
estimate a correction capability at least partially based on a code rate of the codeword and the distribution of the bit values in the codeword; and
determine a plurality of verify levels based on the estimated correction capability.

### Claim 26 (depends on 25)

The data storage device of claim 25, wherein verify levels of the plurality of verify levels corresponding to a more highly populated state of storage elements in the non-volatile memory are spaced farther apart than verify levels corresponding to a less-populated state of the storage elements.

### Claim 27

A method comprising:
in a data storage device including a controller and a flash memory, performing:
shaping data to be stored to the flash memory to generate shaped data;
encoding the shaped data to generate encoded shaped data;
scrambling the encoded shaped data to generate scrambled data; and
programming the scrambled data into the flash memory.

### Claim 28 (depends on 27)

The method of claim 27, further comprising, prior to scrambling the encoded shaped data:
programming the encoded shaped data into a single level cell (SLC) partition of the flash memory; and
reading the encoded shaped data from the SLC partition and providing the encoded shaped data to a scrambler,
wherein the scrambled data is programmed into a multi-level cell (MLC) partition of the flash memory.

### Claim 29 (depends on 27)

The method of claim 27, wherein the shaped data has a same number of bits as the data.

### Claim 30 (depends on 29)

The method of claim 29, wherein shaping the data is performed via a block transformation.

### Claim 31 (depends on 27)

The method of claim 27, wherein scrambling the programmed shaped data includes providing the encoded shaped data to an input of a scrambler and wherein the scrambled data is provided at an output of the scrambler.

### Claim 32 (depends on 31)

The method of claim 31, wherein the scrambler is in a controller external to a die that includes the flash memory.

### Claim 33 (depends on 31)

The method of claim 31, wherein the scrambler is in a die that includes the flash memory.

### Claim 34 (depends on 27)

The method of claim 27, wherein the scrambled data is programmed into a multi-level cell (MLC) partition of the flash memory and wherein each logical page of the MLC partition is associated with a distinct scrambling word.

### Claim 35 (depends on 27)

The method of claim 27, wherein the scrambled data is programmed into a multi-level cell (MLC) partition of the flash memory and wherein multiple logical pages within a same word line of the MLC partition are associated with a common scrambling word.

### Claim 36

A data storage device comprising:
a flash memory; and
a controller configured to:
shape data to be stored to the flash memory to generate shaped data;
encode the shaped data to generate encoded shaped data; and
program scrambled data into the flash memory,
wherein the encoded shaped data is scrambled to generate the scrambled data.

### Claim 37 (depends on 36)

The data storage device of claim 36, wherein the flash memory includes a single level cell (SLC) partition and a multi-level cell (MLC) partition, wherein the controller is configured to program the encoded shaped data into the SLC partition, wherein the encoded shaped data is read from the SLC partition and scrambled to generate the scrambled data, and wherein the scrambled data is programmed into the MLC partition.

### Claim 38 (depends on 36)

The data storage device of claim 36, wherein the shaped data has a same number of bits as the data.

### Claim 39 (depends on 38)

The data storage device of claim 38, wherein shaping the data is performed via a block transformation.

### Claim 40 (depends on 36)

The data storage device of claim 36, wherein scrambling the encoded shaped data includes providing the encoded shaped data to an input of a scrambler and wherein the scrambled data is provided at an output of the scrambler.

### Claim 41 (depends on 40)

The data storage device of claim 40, wherein the scrambler is in the controller and external to a die that includes the flash memory.

### Claim 42 (depends on 38)

The data storage device of claim 38, wherein the scrambler is in a die that includes the flash memory.

### Claim 43 (depends on 36)

The data storage device of claim 36, wherein the scrambled data is stored to a multi-level cell (MLC) partition of the flash memory and wherein each logical page of the MLC partition is associated with a distinct scrambling word.

### Claim 44 (depends on 36)

The data storage device of claim 36, wherein the scrambled data is stored to a multi-level cell (MLC) partition of the flash memory and wherein multiple logical pages within a same word line of the MLC partition are associated with a common scrambling word.

### Claim 45

A method comprising:
in a data storage device including a controller and a non-volatile memory, performing:
descrambling scrambled data that is read from the non-volatile memory to generate a representation of a codeword;
determining a shaping level of the representation of the codeword; and
determining a soft metric for decoding based on the representation of the codeword and based on the shaping level.

### Claim 46 (depends on 45)

The method of claim 45, further comprising estimating an error correction capability of decoding the representation of the codeword based on the shaping level.

### Claim 47 (depends on 46)

The method of claim 46, further comprising sensing the non-volatile memory to determine additional soft bits in response to the estimated error correction capability being below a threshold.

### Claim 48 (depends on 45)

The method of claim 45, wherein the shaping level corresponds to a global distribution of hard values.

### Claim 49 (depends on 45)

The method of claim 45, wherein the shaping level corresponds to a local distribution of hard values.

### Claim 50 (depends on 49)

The method of claim 49, wherein the local distribution is determined according to a sliding window of a data stream.

### Claim 51

A data storage device comprising:
a non-volatile memory; and
a controller configured to:
descramble scrambled data that is read from the non-volatile memory to generate a representation of a codeword;
determine a shaping level of the representation of the codeword; and
determine a soft metric for decoding based on the representation of the codeword and based on the shaping level.

### Claim 52 (depends on 51)

The data storage device of claim 51, wherein the controller is further configured to estimate an error correction capability of decoding the representation of the codeword based on the shaping level.

### Claim 53 (depends on 51)

The data storage device of claim 51, wherein the non-volatile memory is sensed to determine additional soft bits in response to the estimated error correction capability being below a threshold.

### Claim 54

A method comprising:
in a data storage device including a controller and a non-volatile memory, performing:
determining an amount of shaping of data, the data to be stored in the non-volatile memory;
scrambling the data prior to storing the data in the non-volatile memory in response to the amount of shaping being less than a threshold; and
storing the data in the non-volatile memory as unscrambled data in response to the amount of shaping satisfying the threshold.

### Claim 55

A data storage device comprising:
a non-volatile memory; and
a controller configured to:
determine an amount of shaping of data, the data to be stored in the non-volatile memory;
set an indicator to have a first value to cause scrambling of the data prior to storing the data in the non-volatile memory in response to the amount of shaping being less than a threshold; and
set the indicator to have a second value to cause the data to be stored in the non-volatile memory as unscrambled data in response to the amount of shaping satisfying the threshold.

### Claim 56

A method comprising:
in a data storage device including a non-volatile memory, performing:
determining a bit representation corresponding to a bit in a representation of a codeword that is read from the non-volatile memory;
determining a soft metric corresponding to the bit representation, wherein the soft metric is at least partially based on an amount of shaping of data stored in the non-volatile memory; and
initiating a decoding operation of the soft metric.

### Claim 57 (depends on 56)

The method of claim 56, wherein determining the soft metric includes:
determining an estimated amount of shaping of at least a portion of the representation of the codeword; and
sending an indication of the estimated amount of shaping to a soft decoder.

### Claim 58 (depends on 56)

The method of claim 56, wherein determining the soft metric includes:
determining an initial soft metric corresponding to the bit representation at least partially based on a table lookup operation;
determining a soft metric correction value corresponding to the bit representation; and
updating the initial soft metric according to the soft metric correction value.

### Claim 59

A data storage device comprising:
a non-volatile memory; and
a controller configured to:
determine a bit representation corresponding to a bit in a representation of a codeword that is read from the non-volatile memory;
determine a soft metric corresponding to the bit representation, wherein the soft metric is at least partially based on an amount of shaping of data stored in the non-volatile memory; and
initiate a decoding operation of the soft metric.

### Claim 60

A data storage device comprising:
a non-volatile memory; and
a controller configured to:
determine an amount of shaping of bit values in data to be written to the non-volatile memory;
select a storage location of the data within the non-volatile memory at least partially based on the amount of shaping; and
program the data to the selected storage location within the non-volatile memory.

### Claim 61 (depends on 60)

The data storage device of claim 60, wherein the controller is further configured to determine programming parameters used for programming the data into the storage location within the non-volatile memory at least partially based on the amount of shaping of the data.

### Claim 62 (depends on 60)

The data storage device of claim 60, wherein the controller is further configured to determine a ratio of write/erase cycles directed into the storage location within the non-volatile memory at least partially based on the amount of shaping of the data stored.

### Claim 63

A method comprising:
in a data storage device including a non-volatile memory, performing:
determining an amount of shaping of bit values in data to be written to the non-volatile memory;
selecting a storage location of the data within the non-volatile memory at least partially based on the amount of shaping; and
programming the data to the selected storage location within the non-volatile memory.
