IP Library Granted Patent US 8,775,722
Granted Patent B2
US 8,775,722 · App. 13/341,543 · Granted Jul 8, 2014

Storing data in parallel in a flash storage device using on chip page shifting between planes

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,775,722
App. No.
13/341,543
Granted
Jul 8, 2014
Kind
B2
Abstract

Methods and systems are disclosed herein for storing data in a memory device. Data for multiple pages is written in parallel using plane interleaving. For example, in a four plane write, a first set of four pages are written in the following sequence: 0, 1, 2, 3. A second set of four pages, after plane interleaving, are written in the following sequent: 7, 4, 5, 6. After writing the data, the pages of written data are read, page swapped if necessary, and then written into another portion of memory (such as MLC).

Claims (82)

1. A method for storing data in a flash storage device, the method comprising:

in a flash storage device having a controller and a memory in communication with the controller, the memory including a plurality of planes, each of the planes having a sequence of pages:

receiving data;

iteratively writing portions of the data in parallel into a page in each of the plurality of planes;

reading the pages in each of the planes, at least some of the pages read in parallel being in a different respective page of the sequence of pages in the respective plane;

determining, for at least one of the pages read, whether to shift pages from an initial plane to a different one of the planes; and

storing the data in the memory based on the determined shift,

wherein the determined shift and the storage of the data result in a sequential ordering of data within the numbered sequence of pages in at least one of the planes.

2. The method of claim 1 , wherein the plurality of planes comprise “N” number of planes;

wherein the portions of the data comprise “N” pages of the data;

wherein iteratively writing the “N” pages of data in parallel comprises:

writing the first “N” pages of data in parallel in a first sequence across the “N” number of planes; and

writing subsequent pages of data in parallel in a sequence across the “N” number of planes that is different from the first sequence.

3. The method of claim 2 , wherein iteratively writing the “N” pages of data in parallel further comprises, for each iteration, shifting a predetermined number of planes to begin the “N” pages of data.

4. The method of claim 1 , wherein reading the pages in each of the planes comprises:

reading a page from each of the plurality of planes in parallel, the page read from each of the plurality of planes in a different one of the sequence of pages.

5. The method of claim 4 , wherein the memory includes single level cell memory with N planes;

wherein iteratively writing portions of the data in parallel into a page in each of the plurality of planes comprises writing the data in the N pages of each of the N planes;

wherein reading in parallel the N pages in each of the N planes comprises:

reading N pages in parallel from each of the N planes N times such that:

in a first parallel reading, reading the first page of the first of the N planes, reading the second page of the second of the N planes, reading the third page of the third of the N planes, and continuing the sequence of reading until the Nth page is read from the Nth of the N planes;

in a second parallel reading, reading from the Nth page of the first of the N planes, reading the first page of the second of the N planes, reading the second page of the third of the N planes, and continuing the sequence of reading until the Nth−1 page is read from the Nth of the N planes;

in a third parallel reading, reading from the Nth−1 page of the first of the N planes, reading the Nth page of the second of the N planes, reading the first page of the third of the N planes, and continuing the sequence of reading until the Nth−2 page is read from the Nth of the N planes; and

continuing the sequence of parallel readings until the Nth parallel reading, which includes reading the second page of the first of the N planes, reading the third page of the second of the N planes, reading the fourth page of the third of the N planes, and

continuing the sequence of reading until the first page is read from the Nth of the N planes.

6. The method of claim 5 , wherein determining whether to shift pages from an initial plane to a different one of the planes comprises:

performing no reordering of the first page in each of the N planes;

performing a reordering using at least one page shift register such that the second page in each of the N planes is shifted the equivalent of one position left so that data stored in the second page in the first of the N planes is moved to the second page in the Nth of the N planes, data stored in the second page in the second of the N planes is moved to the second page in the first of the N planes, data stored in the second page in the third of the N planes is moved to the second page in the second of the N planes;

performing a reordering using the at least one page shift register such that the third page in each of the N planes is shifted the equivalent of two positions left; and

iteratively performing, until the Nth page, a reordering using the at least one page shift register such that the Xth page in each of the N planes is shifted the equivalent of Xth−1 positions left.

7. The method of claim 1 , wherein the determined shift and the storage of the data result in a sequential ordering of data within the numbered sequence of pages in all of the planes.

8. The method of claim 7 , wherein the memory includes single level cell memory with N planes and M pages in each of the planes;

wherein the memory includes multi-level cell memory with N planes and M pages in each of the planes;

wherein iteratively writing portions of the data in parallel into a page in each of the plurality of planes comprises iteratively writing the portions of the data in parallel to a page in single level cell memory in each of the N planes; and

wherein storing the data in the memory based on the determined shift comprises storing the data in parallel in the multi-level cell memory so that the first plane includes pages 0 through M−1, the second plane includes pages M through 2M−1, the third plane includes pages 2M through 3M−1, and continuing the sequence of the planes with the Nth page including pages (N−1)×M page through N×M−1 page.

9. The method of claim 8 , wherein N=M.

10. The method of claim 8 , further comprising shifting at least some of the pages in response to determining whether to shift the pages; and

wherein storing the data in the memory based on the determined shift comprises storing the shifted pages into multi-level cell memory.

11. The method of claim 1 , wherein iteratively writing portions of the data in parallel into a page in each of the plurality of planes comprises iteratively writing the portions of the data into single level cell memory;

further comprising shifting at least some of the pages in response to determining whether to shift the pages; and

wherein storing the data in the memory based on the determined shift comprises storing the shifted pages into multi-level cell memory.

12. A flash memory device configured to store data, the flash memory device comprising:

a memory including a plurality of planes, each of the planes having a sequence of pages; and

a controller in communication with the memory, the controller is configured to:

receive data;

iteratively write portions of the data in parallel into a page in each of the plurality of planes;

read the pages in each of the planes, at least some of the pages read in parallel being in a different respective page of the sequence of pages in the respective plane;

determine, for at least one of the pages read in parallel, whether to shift pages from an initial plane to a different one of the planes; and

store the data in the memory based on the determined shift,

wherein the determined shift and the storage of the data result in a sequential ordering of data within the numbered sequence of pages in at least one of the planes.

13. The flash memory device of claim 12 , wherein the plurality of planes comprise “N” number of planes;

wherein the portions of the data comprise “N” pages of the data;

wherein the controller is configured to iteratively write the “N” pages of data in parallel by:

writing the first “N” pages of data in parallel in a first sequence across the “N” number of planes; and

writing subsequent pages of data in parallel in a sequence across the “N” number of planes that is different from the first sequence.

14. The flash memory device of claim 13 , wherein the controller is configured to iteratively write the “N” pages of data in parallel by, for each iteration, shifting a predetermined number of planes to begin the “N” pages of data.

15. The flash memory device of claim 12 , wherein the controller is configured to read in parallel the pages in each of the planes by:

reading a page from each of the plurality of planes in parallel, the page read from each of the plurality of planes in a different one of the sequence of pages.

16. The flash memory device of claim 15 , wherein the memory includes single level cell memory with N planes;

wherein the controller is configured to iteratively write portions of the data in parallel into a page in each of the plurality of planes by writing the data in the N pages of each of the N planes;

wherein the controller is configured to read in parallel the N pages in each of the N planes by:

reading N pages in parallel from each of the N planes N times such that:

in a first parallel reading, reading the first page of the first of the N planes, reading the second page of the second of the N planes, reading the third page of the third of the N planes, and continuing the sequence of reading until the Nth page is read from the Nth of the N planes;

in a second parallel reading, reading from the Nth page of the first of the N planes, reading the first page of the second of the N planes, reading the second page of the third of the N planes, and continuing the sequence of reading until the Nth−1 page is read from the Nth of the N planes;

in a third parallel reading, reading from the Nth−1 page of the first of the N planes, reading the Nth page of the second of the N planes, reading the first page of the third of the N planes, and continuing the sequence of reading until the Nth−2 page is read from the Nth of the N planes; and

continuing the sequence of parallel readings until the Nth parallel reading, which includes reading the second page of the first of the N planes, reading the third page of the second of the N planes, reading the fourth page of the third of the N planes, and continuing the sequence of reading until the first page is read from the Nth of the N planes.

17. The flash memory device of claim 16 , further comprising at least one page shift register; and

wherein the controller is configured to determine whether to shift pages from an initial plane to a different one of the planes by:

performing no reordering of the first page in each of the N planes;

performing a reordering using the at least one page shift register such that the second page in each of the N planes is shifted the equivalent of one position left so that data stored in the second page in the first of the N planes is moved to the second page in the Nth of the N planes, data stored in the second page in the second of the N planes is moved to the second page in the first of the N planes, data stored in the second page in the third of the N planes is moved to the second page in the second of the N planes;

performing a reordering using the at least one page shift register such that the third page in each of the N planes is shifted the equivalent of two positions left; and

iteratively performing, until the Nth page, a reordering using the at least one page shift register such that the Xth page in each of the N planes is shifted the equivalent of Xth−1 positions left.

18. The flash memory device of claim 12 , wherein the determined shift and the storage of the data result in a sequential ordering of data within the numbered sequence of pages in all of the planes.

19. The flash memory device of claim 18 , wherein the memory includes single level cell memory with N planes and M pages in each of the planes;

wherein the memory includes multi-level cell memory with N planes and M pages in each of the planes;

wherein the controller is configured to iteratively write portions of the data in parallel into a page in each of the plurality of planes by iteratively writing the portions of the data in parallel to a page in single level cell memory in each of the N planes; and

wherein the controller is configured to store the data in the memory based on the determined shift by storing the data in parallel in the multi-level cell memory so that the first plane includes pages 0 through M−1, the second plane includes pages M through 2M−1, the third plane includes pages 2M through 3M−1, and continuing the sequence of the planes with the Nth page including pages (N−1)×M page through N×M−1 page.

20. The flash memory device of claim 19 , wherein the controller is further configured to shift at least some of the pages in response to determining whether to shift the pages; and

wherein the controller is configured to store the data in the memory based on the determined shift by storing the shifted pages into multi-level cell memory.

21. The flash memory device of claim 12 , wherein the controller is configured to iteratively write portions of the data in parallel into a page in each of the plurality of planes by iteratively writing the portions of the data into single level cell memory;

wherein the controller is further configured to shift at least some of the pages in response to determining whether to shift the pages; and

wherein the controller is configured to store the data in the memory based on the determined shift by storing the shifted pages into multi-level cell 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 Apr 11, 2012
From: SPROUSE, STEVEN; GOROBETS, SERGEY ANATOLIEVICH
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 028027/0847 →