IP Library Granted Patent US 8,347,138
Granted Patent B2
US 8,347,138 · App. 12/492,107 · Granted Jan 1, 2013

Redundant data distribution in a flash storage device

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,347,138
App. No.
12/492,107
Granted
Jan 1, 2013
Kind
B2
Abstract

A flash storage device comprises a plurality of channels of flash storage, a system memory, and a controller. The controller is configured to cache, in the system memory, data to be written, to partition the data into a plurality of data portions, to generate error correction information based on the plurality of data portions, to write the error correction information to a first one or more of the plurality of channels of flash storage, and to write each of the plurality of data portions to a different one of the plurality of channels of flash storage other than the first one or more thereof.

Claims (67)

1. A flash storage device, comprising:

a plurality of channels of flash storage;

a system memory; and

a controller configured to:

cache, in the system memory, data to be written;

partition the data into a plurality of data portions;

generate error correction information based on the plurality of data portions;

write the error correction information to a first one or more of the plurality of channels of flash storage; and

write each of the plurality of data portions to a different one of the plurality of channels of flash storage other than the first one or more thereof,

wherein the controller is further configured to compress the plurality of data portions before generating the error correction information.

2. The flash storage device according to claim 1 , wherein the plurality of channels comprises n channels, and wherein the controller is configured to partition the data into n−1 data portions.

3. The flash storage device according to claim 1 , wherein the plurality of channels comprises n channels, wherein the first one or more channels comprises m channels, and wherein the controller is configured to partition the data into n−m data portions.

4. The flash storage device according to claim 1 , wherein the plurality of channels comprises n channels, wherein the first one or more channels comprises m channels, and wherein the controller is configured to partition the data into fewer than n−m data portions.

5. The flash storage device according to claim 1 , wherein the data portions and the error correction information are written to a same address in each of the corresponding channels.

6. The flash storage device according to claim 1 , wherein the controller is configured to generate the error correction information by performing an XOR operation on the plurality of data portions.

7. The flash storage device according to claim 1 , wherein the controller is configured to generate the error correction information using error-correcting code on the plurality of data portions.

8. The flash storage device according to claim 1 , wherein the controller is further configured to determine a number of data portions into which the data is partitioned based upon a number of available data segments in the plurality of channels of flash storage.

9. A method of writing data to a flash storage device, comprising the steps of:

caching, in a system memory, data to be written;

partitioning the data into a plurality of data portions;

compressing the plurality of data portions;

generating error correction information based on the compressed plurality of data portions;

writing the error correction information to a first one or more of a plurality of channels of flash storage of the flash storage device; and

writing each of the plurality of data portions to a different one of the plurality of channels of flash storage other than the first one or more thereof.

10. The method according to claim 9 , wherein the plurality of channels comprises n channels, and wherein the data is partitioned into n−1 data portions.

11. The method according to claim 9 , wherein the plurality of channels comprises n channels, wherein the first one or more channels comprises m channels, and wherein the data is partitioned into n−m data portions.

12. The method according to claim 9 , wherein the plurality of channels comprises n channels, wherein the first one or more channels comprises m channels, and wherein the data is partitioned into fewer than n—m data portions.

13. The method according to claim 9 , wherein the data portions and the error correction information are written to a same address in each of the corresponding channels.

14. The method according to claim 9 , wherein the error correction information is generated by performing an XOR operation on the plurality of data portions.

15. The method according to claim 9 , wherein the error correction information is generated using error-correcting code on the plurality of data portions.

16. The method according to claim 9 , further comprising:

determining a number of data portions into which the data is partitioned based upon a number of available data segments in the plurality of channels of flash storage.

17. A flash storage device, comprising:

a plurality of channels of flash storage;

a system memory; and

a controller configured to:

cache, in the system memory, data to be written;

partition the data into a plurality of data portions;

generate error correction information based on the plurality of data portions;

write the error correction information to a first one or more of the plurality of channels of flash storage; and

write each of the plurality of data portions to a different one of the plurality of channels of flash storage other than the first one or more thereof,

wherein the controller is further configured, upon a read count for one of the plurality of data portions in the corresponding channel of flash storage exceeding a predetermined amount, to:

invalidate data from one of the plurality of data portions; and

leave intact the invalidated data for use in error correction of the other ones of the plurality of data portions.

18. The flash storage device according to claim 17 , wherein the plurality of channels comprises n channels, and wherein the controller is configured to partition the data into n−1 data portions.

19. The flash storage device according to claim 17 , wherein the plurality of channels comprises n channels, wherein the first one or more channels comprises m channels, and wherein the controller is configured to partition the data into n−m data portions.

20. The flash storage device according to claim 17 , wherein the plurality of channels comprises n channels, wherein the first one or more channels comprises m channels, and wherein the controller is configured to partition the data into fewer than n−m data portions.

21. The flash storage device according to claim 17 , wherein the data portions and the error correction information are written to a same address in each of the corresponding channels.

22. The flash storage device according to claim 17 , wherein the controller is configured to generate the error correction information by performing an XOR operation on the plurality of data portions.

23. The flash storage device according to claim 17 , wherein the controller is configured to generate the error correction information using error-correcting code on the plurality of data portions.

24. The flash storage device according to claim 17 , wherein the controller is further configured to determine a number of data portions into which the data is partitioned based upon a number of available data segments in the plurality of channels of flash storage.

25. A method of writing data to a flash storage device, comprising the steps of:

caching, in a system memory, data to be written;

partitioning the data into a plurality of data portions;

generating error correction information based on the plurality of data portions;

writing the error correction information to a first one or more of a plurality of channels of flash storage of the flash storage device;

writing each of the plurality of data portions to a different one of the plurality of channels of flash storage other than the first one or more thereof;

invalidating data from one of the plurality of data portions; and

leaving intact the invalidated data for use in error correction of the other ones of the plurality of data portions.

26. The method according to claim 25 , wherein the plurality of channels comprises n channels, and wherein the data is partitioned into n−1 data portions.

27. The method according to claim 25 , wherein the plurality of channels comprises n channels, wherein the first one or more channels comprises m channels, and wherein the data is partitioned into n−m data portions.

28. The method according to claim 25 , wherein the plurality of channels comprises n channels, wherein the first one or more channels comprises m channels, and wherein the data is partitioned into fewer than n−m data portions.

29. The method according to claim 25 , wherein the data portions and the error correction information are written to a same address in each of the corresponding channels.

30. The method according to claim 25 , wherein the error correction information is generated by performing an XOR operation on the plurality of data portions.

31. The method according to claim 25 , wherein the error correction information is generated using error-correcting code on the plurality of data portions.

32. The method according to claim 25 , further comprising:

determining a number of data portions into which the data is partitioned based upon a number of available data segments in the plurality of channels of flash storage.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2018
From: HGST TECHNOLOGIES SANTA ANA, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046174/0446 →
CHANGE OF NAME Recorded Jul 1, 2015
From: STEC, INC.
To: HGST TECHNOLOGIES SANTA ANA, INC.
Reel/Frame 036042/0390 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2009
From: MOSHAYEDI, MARK
To: STEC, INC.
Reel/Frame 022877/0908 →