IP Library Granted Patent US 9,081,675
Granted Patent B2
US 9,081,675 · App. 14/302,377 · Granted Jul 14, 2015

Encoding data in a dispersed storage network

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,081,675
App. No.
14/302,377
Granted
Jul 14, 2015
Kind
B2
Abstract

A method begins where a processing module segments data into data segments. On a data segment by data segment basis, the method continues with the processing module performing a decode threshold level of dispersed storage error encoding on a data segment to produce a set of decode threshold level encoded data slices and caching the set of decode threshold level encoded data slices. On a set by set basis, the method continues with the processing module performing a redundancy level of dispersed storage error encoding on the set of decode threshold level encoded data slices to produce a set of redundancy error coded data slices. The method continues with the processing module outputting at least one of at least some of a plurality of sets of decode threshold level encoded data slices and at least a corresponding some of a plurality of sets of redundancy error coded data slices.

Claims (99)

1. A computing device comprises:

an interface;

memory; and

a processing module operably coupled to the interface and the memory, wherein the processing module is operable to:

segment data into a plurality of data segments;

on a data segment by data segment basis:

perform a decode threshold level of dispersed storage error encoding on a data segment of the plurality of data segments to produce a set of decode threshold level encoded data slices;

cache the set of decode threshold level encoded data slices, wherein, for the plurality of data segments, a plurality of sets of decode threshold level encoded data slices are created;

on set by set basis, perform a redundancy level of dispersed storage error encoding based on one of the plurality of sets of decode threshold level encoded data slices to produce a set of redundancy error coded data slices, wherein a plurality of sets of redundancy error coded data slices are created based on the plurality of sets of decode threshold level encoded data slices; and

output at least one of:

at least some of the plurality of sets of decode threshold level encoded data slices; and

at least a corresponding some of the plurality of sets of redundancy error coded data slices.

2. The computing device of claim 1 , wherein the processing module further functions to perform the decode threshold level of dispersed storage error encoding by:

arranging data blocks of the data segment into a data matrix; and

performing an encoding function on the data matrix to produce the set of decode threshold level encoded data slices.

3. The computing device of claim 2 , wherein the encoding function comprises one or more of:

matrix multiplication with a unity matrix portion of an encoding matrix; and

a mathematical function performed on the data matrix to generate a decode threshold number of encoded data slices, wherein the decode threshold number is a minimum number of encoded data slices required to reconstruct the data segment.

4. The computing device of claim 1 , wherein the processing module further functions to perform the redundancy level of dispersed storage error encoding by:

obtaining a data matrix that includes data blocks of the data segment; and

performing a redundancy encoding function on the data matrix to produce the set of redundancy error coded data slices.

5. The computing device of claim 4 , wherein the redundancy encoding function comprises one or more of:

matrix multiplication with a redundancy matrix portion of an encoding matrix; and

a mathematical function performed on the data matrix to generate a redundancy number of error coded data slices, wherein the redundancy number of error coded data slices and the set of decode threshold level encoded data slices provide a complete set of encoded data slices for the data segment, wherein a decode threshold number of encoded data slices of the complete set of encoded data slices are required to reconstruct the data segment.

6. The computing device of claim 1 , wherein the processing module further functions to output by:

decoding the at least some of the plurality of sets of decode threshold level encoded data slices to produce at least some of the plurality of data segments; and

outputting the at least some of the plurality of data segments to a video graphics processing module.

7. The computing device of claim 1 , wherein the processing module further functions to output by:

correlating the at least some of the plurality of sets of decode threshold level encoded data slices with the at least a corresponding some of the plurality of sets of redundancy error coded data slices to produce at least some of a plurality of complete sets of encoded data slices; and

outputting the at least some of a plurality of complete sets of encoded data slices to a set of memory devices for storage therein.

8. The computing device of claim 1 , wherein the processing module further functions to:

perform the decode threshold level of dispersed storage error encoding on the data segment and perform the redundancy level of dispersed storage error encoding asynchronously.

9. The computing device of claim 1 , wherein the processing module further functions to:

cache the set of decode threshold level encoded data slices in a decode threshold level section of the memory; and

cache the set of redundancy error coded data slices in a redundancy section of the memory.

10. A method for execution by a computing core of a computing device, the method comprises:

segmenting data into a plurality of data segments;

on a data segment by data segment basis:

performing a decode threshold level of dispersed storage error encoding on a data segment of the plurality of data segments to produce a set of decode threshold level encoded data slices;

caching the set of decode threshold level encoded data slices, wherein, for the plurality of data segments, a plurality of sets of decode threshold level encoded data slices are created;

on set by set basis, performing a redundancy level of dispersed storage error encoding based on one of the plurality of sets of decode threshold level encoded data slices to produce a set of redundancy error coded data slices, wherein a plurality of sets of redundancy error coded data slices are created based on the plurality of sets of decode threshold level encoded data slices; and

outputting at least one of:

at least some of the plurality of sets of decode threshold level encoded data slices; and

at least a corresponding some of the plurality of sets of redundancy error coded data slices.

11. The method of claim 10 , wherein the performing the decode threshold level of dispersed storage error encoding comprises:

arranging data blocks of the data segment into a data matrix; and

performing an encoding function on the data matrix to produce the set of decode threshold level encoded data slices.

12. The method of claim 11 , wherein the encoding function comprises one or more of:

matrix multiplication with a unity matrix portion of an encoding matrix; and

a mathematical function performed on the data matrix to generate a decode threshold number of encoded data slices, wherein the decode threshold number is a minimum number of encoded data slices required to reconstruct the data segment.

13. The method of claim 10 , wherein the performing the redundancy level of dispersed storage error encoding comprises:

obtaining a data matrix that includes data blocks of the data segment; and

performing a redundancy encoding function on the data matrix to produce the set of redundancy error coded data slices.

14. The method of claim 13 , wherein the redundancy encoding function comprises one or more of:

matrix multiplication with a redundancy matrix portion of an encoding matrix; and

a mathematical function performed on the data matrix to generate a redundancy number of error coded data slices, wherein the redundancy number of error coded data slices and the set of decode threshold level encoded data slices provide a complete set of encoded data slices for the data segment, wherein a decode threshold number of encoded data slices of the complete set of encoded data slices are required to reconstruct the data segment.

15. The method of claim 10 , wherein the outputting comprises:

decoding the at least some of the plurality of sets of decode threshold level encoded data slices to produce at least some of the plurality of data segments; and

outputting the at least some of the plurality of data segments to a video graphics processing module.

16. The method of claim 10 , wherein the outputting comprises:

correlating the at least some of the plurality of sets of decode threshold level encoded data slices with the at least a corresponding some of the plurality of sets of redundancy error coded data slices to produce at least some of a plurality of complete sets of encoded data slices; and

outputting the at least some of a plurality of complete sets of encoded data slices to a set of memory devices for storage therein.

17. The method of claim 10 further comprises:

the performing of the decode threshold level of dispersed storage error encoding on the data segment being asynchronous with the performing of the redundancy level of dispersed storage error encoding.

18. The method of claim 10 further comprises:

caching the set of decode threshold level encoded data slices in a decode threshold level section of main memory of the computing device; and

caching the set of redundancy error coded data slices in a redundancy section of main memory of the computing device.

19. A non-transitory computer readable storage medium having accessible therefrom a set of instructions interpretable by a processing module, the set of instructions being configured to cause the processing module to carry out operations for:

segmenting data into a plurality of data segments;

on a data segment by data segment basis:

performing a decode threshold level of dispersed storage error encoding on a data segment of the plurality of data segments to produce a set of decode threshold level encoded data slices;

caching the set of decode threshold level encoded data slices, wherein, for the plurality of data segments, a plurality of sets of decode threshold level encoded data slices are created;

on set by set basis, performing a redundancy level of dispersed storage error encoding based on one of the plurality of sets of decode threshold level encoded data slices to produce a set of redundancy error coded data slices, wherein a plurality of sets of redundancy error coded data slices are created based on the plurality of sets of decode threshold level encoded data slices; and

outputting at least one of:

at least some of the plurality of sets of decode threshold level encoded data slices; and

at least a corresponding some of the plurality of sets of redundancy error coded data slices.

20. The non-transitory computer readable storage medium of claim 19 , wherein the set of instructions further causes the processing module to carry out operations for the performing the decode threshold level of dispersed storage error encoding by:

arranging data blocks of the data segment into a data matrix; and

performing an encoding function on the data matrix to produce the set of decode threshold level encoded data slices.

21. The non-transitory computer readable storage medium of claim 20 , wherein the encoding function comprises one or more of:

matrix multiplication with a unity matrix portion of an encoding matrix; and

a mathematical function performed on the data matrix to generate a decode threshold number of encoded data slices, wherein the decode threshold number is a minimum number of encoded data slices required to reconstruct the data segment.

22. The non-transitory computer readable storage medium of claim 19 , wherein the set of instructions further causes the processing module to carry out operations for the performing the redundancy level of dispersed storage error encoding by:

obtaining a data matrix that includes data blocks of the data segment; and

performing a redundancy encoding function on the data matrix to produce the set of redundancy error coded data slices.

23. The non-transitory computer readable storage medium of claim 22 , wherein the redundancy encoding function comprises one or more of:

matrix multiplication with a redundancy matrix portion of an encoding matrix; and

a mathematical function performed on the data matrix to generate a redundancy number of error coded data slices, wherein the redundancy number of error coded data slices and the set of decode threshold level encoded data slices provide a complete set of encoded data slices for the data segment, wherein a decode threshold number of encoded data slices of the complete set of encoded data slices are required to reconstruct the data segment.

24. The non-transitory computer readable storage medium of claim 19 , wherein the set of instructions further causes the processing module to carry out operations for the outputting by:

decoding the at least some of the plurality of sets of decode threshold level encoded data slices to produce at least some of the plurality of data segments; and

outputting the at least some of the plurality of data segments to a video graphics processing module.

25. The non-transitory computer readable storage medium of claim 19 , wherein the set of instructions further causes the processing module to carry out operations for the outputting by:

correlating the at least some of the plurality of sets of decode threshold level encoded data slices with the at least a corresponding some of the plurality of sets of redundancy error coded data slices to produce at least some of a plurality of complete sets of encoded data slices; and

outputting the at least some of a plurality of complete sets of encoded data slices to a set of memory devices for storage therein.

26. The non-transitory computer readable storage medium of claim 19 , wherein the set of instructions further being configured to cause the processing module to carry out operations for:

the performing of the decode threshold level of dispersed storage error encoding on the data segment being asynchronous with the performing of the redundancy level of dispersed storage error encoding.

27. The non-transitory computer readable storage medium of claim 19 , wherein the set of instructions further being configured to cause the processing module to carry out operations for:

caching the set of decode threshold level encoded data slices in a decode threshold level section of main memory of a computing device; and

caching the set of redundancy error coded data slices in a redundancy section of main memory of the computing device.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2014
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 033347/0885 →