IP Library › Granted Patent US 8,429,330
Granted Patent B2
US 8,429,330 · App. 12/209,697 · Granted Apr 23, 2013

Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations

Inventors: Jun Wan (San Jose, CA); Yupin K. Fong (Fremont, CA); Man L. Mui (Santa Clara, CA)
Assignee: SanDisk Technologies Inc.
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 8,429,330
App. No.
12/209,697
Granted
Apr 23, 2013
Kind
B2
Abstract

A method in which data is randomized before being stored in a non-volatile memory to minimize data pattern-related read failures. Predetermined randomized non-user data is stored in a block or other location of a memory array, and accessed as needed by a memory device controller to randomize user data before it is stored in other blocks of the array. Each portion of the user data which is stored in a block is randomized using a portion of the non-user data which is stored in the same relative location in another block.

Claims (85)

1. A method for operating a non-volatile memory device, comprising:

receiving at least one write command and associated user data to be written to the non-volatile memory device, the non-volatile memory device comprises an array of non-volatile storage elements divided into blocks comprising first and second blocks, the first block comprises rows of non-volatile storage elements, and the second block comprises rows of non-volatile storage elements, the at least one write command identifies at least one of the rows in the first block to store the associated user data;

identifying at least one of the rows in the second block corresponding to the at least one of the rows in the first block;

reading predetermined non-user data from the at least one of the rows in the second block;

encoding the associated user data based on the predetermined non-user data to provide modified user data; and

writing the modified user data in the at least one of the rows in the first block.

2. The method of claim 1 , wherein:

the writing the modified user data randomizes a distribution of data states of non-volatile storage elements in the at least one of the rows in the first block.

3. The method of claim 1 , wherein:

the predetermined non-user data comprises random or pseudo random data which is generated at a time of manufacture of the non-volatile memory device.

4. The method of claim 1 , wherein:

the at least one write command identifies adjacent rows in the first block to store the associated user data;

the modified user data is written to in the adjacent rows in the first block; and

the writing randomizes a distribution of data states of non-volatile storage elements in the adjacent rows.

5. The method of claim 1 , wherein:

the at least one of the rows in the second block is in a relative position in the second block which is based on a relative position in the first block of the at least one of the rows in the first block.

6. The method of claim 1 , wherein:

the at least one of the rows in the first block is associated with an nth word line in the first block; and

the at least one of the rows in the second block is associated with an nth word line in the second block or with a word line in the second block which is offset by a specified number of word lines from the nth word line in the second block.

7. The method of claim 1 , further comprising:

receiving at least one read command regarding the associated user data;

in response to the at least one read command, reading the predetermined non-user data from the at least one of the rows in the second block and reading the modified user data from the at least one of the rows in the first block; and

decoding the modified user data based on the predetermined non-user data.

8. The method of claim 1 , wherein:

the associated user data and the predetermined non-user data have a same bit length.

9. The method of claim 1 , wherein:

the predetermined non-user data from the at least one of the rows in the second block is used to encode user data which is stored in multiple blocks of non-volatile storage elements in the array.

10. A method for operating a non-volatile memory device, comprising:

receiving at least one write command and associated user data to be written to the non-volatile memory device, the non-volatile memory device comprises an array of non-volatile storage elements on a memory die, the array of non-volatile storage elements is divided into blocks comprising first and second blocks, the first block comprises rows of non-volatile storage elements, and the second block comprises rows of non-volatile storage elements, the at least one write command identifies at least one of the rows in the first block to store the associated user data;

in response to the at least one write command, reading scrambling data from the at least one of the rows in the second block and storing the scrambling data in sets of latches associated with the array, the sets of latches are on the memory die;

using processors on the memory die which are associated with the sets of latches, scrambling the associated user data based on the scrambling data to provide scrambled user data;

storing the scrambled user data in the sets of latches; and

using the sets of latches, writing the scrambled user data in the at least one of the rows in the first block.

11. The method of claim 10 , wherein:

the scrambling data comprises random or pseudo random data which is generated at a time of manufacture of the non-volatile memory device.

12. The method of claim 10 , wherein:

the at least one write command identifies adjacent rows in the first block to store the associated user data;

the scrambled user data is written the adjacent rows in the first block; and

the writing randomizes a distribution of data states of non-volatile storage elements in the adjacent rows.

13. The method of claim 10 , wherein:

the at least one of the rows in the second block is in a relative position in the second block which is based on a relative position in the first block of the at least one of the rows in the first block.

14. A method for operating a non-volatile memory device, comprising:

receiving at least one read command regarding associated user data to be read from the non-volatile memory device, the non-volatile memory device comprises an array of non-volatile storage elements divided into blocks comprising first and second blocks, the first block comprises rows of non-volatile storage elements, and the second block comprises rows of non-volatile storage elements, the at least one read command identifies at least one of the rows in the first block in which the associated user data is stored as modified user data;

identifying at least one of the rows in the second block corresponding to the at least one of the rows in the first block;

reading predetermined non-user data from the at least one of the rows in the second block, the predetermined non-user data comprises descrambling data;

reading the modified user data from the at least one of the rows in the first block; and

decoding the modified user data based on the predetermined non-user data.

15. The method of claim 14 , wherein:

the predetermined non-user data comprises random or pseudo random data which is generated at a time of manufacture of the non-volatile memory device.

16. The method of claim 14 , wherein:

the at least one of the rows in the second block is in a relative position in the second block which is based on a relative position in the first block of the at least one of the rows in the first block.

17. A non-volatile memory device, comprising:

a memory die;

a memory array of non-volatile storage elements fabricated on the memory die, the memory array is divided into blocks comprising first and second blocks, the first block comprises rows of non-volatile storage elements, and the second block comprises rows of non-volatile storage elements; and

circuitry fabricated on the memory die, the circuitry: receives, from a controller which is not fabricated on the memory die, at least one write command and associated user data to be written to the non-volatile storage elements, the at least one write command identifies at least one of the rows in the first block to store the user data, the circuitry identifies at least one of the rows in the second block corresponding to the at least one of the rows in the first block, performs a read of predetermined non-user data from the at least one of the rows in the second block, performs an encode of the associated user data based on the predetermined non-user data to provide modified user data, and performs a write of the modified user data in the at least one of the rows in the first block.

18. The non-volatile memory device of claim 17 , further comprising:

a set of bit lines; and

a plurality of sets of latches, each set of latches is in communication with one of the bit lines;

the rows of non-volatile storage elements of the first block are arranged in a first set of NAND strings;

the rows of non-volatile storage elements of the second block are arranged in a second set of NAND strings;

the first and second sets of NAND strings are in communication with the set of bit lines; and

the sets of latches are used to store the predetermined non-user data responsive to the read of the predetermined non-user data, and to store the modified user data for use in the write of the modified user data in the at least one of the rows in the first block.

19. The non-volatile memory device of claim 18 , wherein:

the circuitry comprises sense modules in communication with the set of bit lines, each sense module comprises a processor which performs the read, the encode and the write.

20. The non-volatile memory device of claim 17 , wherein:

the predetermined non-user data comprises random or pseudo random data which is generated at a time of manufacture of the non-volatile memory device.

21. The non-volatile memory device of claim 17 , wherein:

the at least one write command identifies adjacent rows in the first block to store the associated user data;

the modified user data is stored in the adjacent rows in the first block; and

the write results in a randomized distribution of data states of non-volatile storage elements in the adjacent rows.

22. The non-volatile memory device of claim 17 , wherein:

the at least one of the rows in the second block is in a relative position in the second block which is based on a relative position in the first block of the at least one of the rows in the first block.

23. The non-volatile memory device of claim 17 , wherein:

the at least one of the rows of non-volatile storage elements in the first block is associated with an nth word line in the first block; and

the at least one of the rows of non-volatile storage elements in the second block is associated with an nth word line in the second block or with a word line in the second block which is offset by a specified number of word lines from the nth word line in the second block.

24. A method performed at a memory die of a non-volatile memory device, comprising:

receiving, from a controller which is not fabricated on the memory die, at least one write command and associated data, including user data, to be written to non-volatile storage elements in a memory array on the memory die; and

in response to the at least one write command, providing respective different portions of the associated data to processors on the memory die; and

at the processors:

generating respective different keys for the respective different portions of the associated data, based on respective different addresses of respective different locations of the memory array;

encoding the respective different portions of the associated data based on the respective different keys to provide respective different portions of modified data; and

providing the respective different portions of modified data to sense modules on the memory die to be written to the respective different locations of the memory array.

25. The method of claim 24 , further comprising:

receiving, from the controller, at least one read command regarding the associated data, to be read from the non-volatile storage elements; and

in response to the at least one read command, providing respective read commands to the processors, the processors, in response to the respective read commands, generate the respective different keys for the respective different portions of the associated data, communicate with the sense modules to read the respective different portions of modified data, and decode the respective different portions of modified data based on the respective different keys to provide respective different portions of decoded data.

Assignments (6)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/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 038809/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026280/0055 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2008
From: WAN, JUN; FONG, YUPIN K.; MUI, MAN L.
To: SANDISK CORPORATION
Reel/Frame 021528/0482 →
Continuity (1)
Related Publication 20100070681A1 · Mar 18, 2010