IP Library Granted Patent US 9,071,269
Granted Patent B2
US 9,071,269 · App. 13/632,466 · Granted Jun 30, 2015

Encoding data for storage in a data storage device

Inventors: Alon Kipnis (Ma'Ale Gamla, IL); Itai Dror (Omer, IL)
Assignee: SANDISK TECHNOLOGIES INC.
H03M7/3077H03M7/55H03M7/3068H03M7/3088H03M7/6017H03M7/6041H03M7/6011H03M1/26G06F12/0253G06F12/0246G11C16/349H03M13/00G06F2212/403H03M13/152G06F2212/401
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,071,269
App. No.
13/632,466
Granted
Jun 30, 2015
Kind
B2
Abstract

A data storage device includes a memory and a controller. A method performed in the data storage device includes performing a first transformation of a unit of data to generate a first transformed unit of data. Performing the first transformation includes sorting permutations of the unit of data. The method includes performing a move-to-front transformation of the first transformed unit of data to generate a second transformed unit of data. The method includes performing a weight-based encoding of the second transformed unit of data to generate an encoded unit of data. The encoded unit of data has a same number of bits as the unit of data.

Claims (27)

1. A method comprising:

in a data storage device, performing:

performing a first transformation of a unit of data to generate a first transformed unit of data, wherein performing the first transformation includes sorting permutations of the unit of data;

performing a move-to-front transformation of the first transformed unit of data to generate a second transformed unit of data; and

performing a weight-based encoding of the second transformed unit of data to generate an encoded unit of data, wherein the encoded unit of data has a same number of bits as the unit of data and as the second transformed unit of data.

2. The method of claim 1 , wherein the first transformation includes a Burrows-Wheeler transformation, and wherein the encoded unit of data has the same number of bits as the first transformed unit of data.

3. The method of claim 1 , further comprising storing the encoded unit of data in a memory of the data storage device.

4. The method of claim 3 , further comprising applying an error correction coding (ECC) operation to the encoded unit of data to generate parity bits, and wherein storing the encoded unit of data includes storing the parity bits in the memory.

5. The method of claim 1 , wherein the move-to-front transformation includes generating the second transformed unit of data based on a location of an entry corresponding to the first transformed unit of data in a table and updating the table to position the entry at a first location in the table.

6. The method of claim 1 , wherein the weight-based encoding includes accessing a table of codewords that is sorted according to a weight of each of the codewords and mapping the second transformed unit of data to the encoded unit of data according to the table of codewords.

7. The method of claim 6 , wherein the weight-based encoding corresponds to an endurance coding of data to be stored to a memory of the data storage device.

8. The method of claim 7 , wherein the weight of each codeword is at least partially based on a count of one-values in the codeword.

9. The method of claim 6 , wherein the weight of each codeword is at least partially based on an amount of programming time to program the codeword to a memory of the data storage device.

10. The method of claim 6 , wherein the weight of each codeword is at least partially based on a likelihood of an error occurring in the codeword while the codeword is stored in a memory of the data storage device.

11. The method of claim 6 , wherein the weight of each codeword is at least partially based on an amount of power used to program the codeword to a memory of the data storage device.

12. A data storage device comprising:

a memory; and

a controller coupled to the memory, wherein the controller is configured to perform a first transformation of a unit of data to generate a first transformed unit of data, wherein the first transformation includes sorting permutations of the unit of data, to perform a move-to-front transformation of the first transformed unit of data to generate a second transformed unit of data, and to perform a weight-based encoding of the second transformed unit of data to generate an encoded unit of data to be stored in the memory, wherein the encoded unit of data has a same number of bits as the unit of data and as the second transformed unit of data.

13. The data storage device of claim 12 , wherein the first transformation includes a Burrows-Wheeler transformation.

14. The data storage device of claim 12 , wherein the controller is further configured to apply an error correction coding (ECC) operation to the encoded unit of data to generate parity bits to be stored in the memory.

15. The data storage device of claim 12 , wherein the move-to-front transformation includes generating the second transformed unit of data based on a location of an entry corresponding to the first transformed unit of data in a table and updating the table to position the entry at a first location in the table.

16. The data storage device of claim 12 , wherein the weight-based encoding includes accessing a table of codewords that is sorted according to a weight of each of the codewords and mapping the second transformed unit of data to the encoded unit of data according to the table of codewords.

17. The data storage device of claim 16 , wherein the weight-based encoding corresponds to an endurance coding of data to be stored to the memory.

18. The data storage device of claim 17 , wherein the weight of each codeword is at least partially based on a count of one-values in the codeword.

19. The data storage device of claim 16 , wherein the weight of each codeword is at least partially based on an amount of programming time to program the codeword to the memory.

20. The data storage device of claim 16 , wherein the weight of each codeword is at least partially based on a likelihood of an error occurring in the codeword while the codeword is stored in the memory.

21. The data storage device of claim 16 , wherein the weight of each codeword is at least partially based on an amount of power used to program the codeword to the memory.

Assignments (5)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0898 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 1, 2012
From: KIPNIS, ALON; DROR, ITAI
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 029062/0288 →
Continuity (1)
Related Publication 20140095768A1 · Apr 3, 2014