IP Library Granted Patent US 8,527,838
Granted Patent B2
US 8,527,838 · App. 12/755,232 · Granted Sep 3, 2013

Memory controller utilizing an error coding dispersal function

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,527,838
App. No.
12/755,232
Granted
Sep 3, 2013
Kind
B2
Abstract

A memory controller comprises at least a memory control processing module and/or a distributed storage processing module. A method begins by the memory control processing module receiving a memory access request regarding a data segment. The method continues with the memory control processing module interpreting the memory access request to determine whether an error coding dispersal function of the data segment is applicable. The method continues with the memory control processing module sending the memory access request to the distributed storage processing module when the error coding dispersal function is applicable. The method continues with the distributed storage processing module performing the error coding dispersal function on the data segment to produce an error coded processed data segment. The method continues with the distributed storage processing module sending the error coded processed data segment to the memory control processing module.

Claims (86)

1. A memory controller comprises:

a memory control processing module including:

an input/request unit;

a memory processor unit;

a memory interface;

temporary memory; and

an output unit, wherein:

the input/request unit receives a memory access request regarding a data segment and forwards the memory access request to the memory processor unit;

the memory processor unit is operable to:

interpret the memory access request to determine whether:

an error coding dispersal function is to be applied to the data segment to produce the error coded processed data segment; or

the error coding dispersal function is to be applied to the error coded processed data segment to reconstruct the data segment; or

the error coding dispersal function is not to be applied to the data segment; or

the error coding dispersal function is not to be applied to the error coded processed data segment; and

interpret the memory access request to determine a destination of the data segment or of the error coded processed data segment, wherein the destination is one of a distributed storage processing module, the memory interface, the temporary memory, and the output unit;

generate a data routing signal based on the interpreting of the memory access request; and

the input/request unit forwards the data segment or the error coded processed data segment to the destination in accordance with the data routing signal; and

the distributed storage processing module operable to:

perform the error coding dispersal function on the data segment to produce an error coded processed data segment; and

send the error coded processed data segment to the memory control processing module.

2. The memory controller of claim 1 further comprises:

the memory control processing module is further operable to:

receive a read command of the data segment as the memory access request;

interpret the read command to determine that the data segment is stored as a plurality of data slices in accordance with the error coding dispersal function; and

address a plurality of memories to retrieve the plurality of data slices; and

the distributed storage processing module is further operable to:

perform the error coding dispersal function on the plurality of data slices to produce a reconstructed data segment as the error coded processed data segment.

3. The memory controller of claim 1 further comprises:

the memory control processing module is further operable to:

receive a write command of the data segment as the memory access request;

interpret the write command to determine that the data segment is to be stored as a plurality of data slices in accordance with the error coding dispersal function; and

address a plurality of memories to store the plurality of data slices; and

the distributed storage processing module is further operable to:

perform the error coding dispersal function on the data segment to produce the plurality of data slices as the error coded processed data segment.

4. The memory controller of claim 1 further comprises:

the memory control processing module is further operable to:

when the error coding dispersal function is not to be applied, convert a virtual memory address of the data segment to a non-distributed physical address;

when the error coding dispersal function is to be applied, send the memory access request to the distributed storage processing module; and

the distributed storage processing module is further operable to:

when the error coding dispersal function is applicable, convert the virtual memory address of the data segment to a plurality of distributed physical addresses.

5. The memory controller of claim 1 , the distributed storage processing module further functions to:

interpret the memory access request to determine vault information; and

facilitate storage of the vault information.

6. The memory controller of claim 1 further comprises:

the memory interface operable to couple the distributed storage processing module to a main memory such that the distributed storage processing module communicates the error coded processed data segment with the main memory.

7. A memory controller comprises:

an interface for coupling to a memory device; and

a processing module operably coupled to the interface, wherein the processing module is configured to function as a memory controller processing module and a distributed storage processing module, wherein:

the memory control processing module is operable to receive a data segment memory transfer request from a first memory layer to a second memory layer;

the memory control processing module is operable to determine whether the data segment is stored within the first memory layer in accordance with an error coding dispersal function;

when the data segment is stored in accordance with the error coding dispersal function, the memory control processing module is operable to determine whether the data segment is to be stored in the second memory layer in accordance with the error coding dispersal function;

when the data segment is not to be stored in the second memory layer in accordance with the error coding dispersal function, the dispersed storage processing module is operable to:

retrieve a plurality of data slices from the first memory layer;

convert the plurality of data slices into a reconstructed data segment;

determine whether to store the reconstructed data segment in accordance with a second error coding dispersal function in the second memory layer;

when the reconstructed data segment is to be stored in accordance with the second error coding dispersal function, perform the second error coding dispersal function on the reconstructed data segment to produce a second plurality of data slices; and

send the second plurality of data slices to the second memory layer.

8. The memory controller of claim 7 , the processing module is further operable to receive a data segment memory transfer request by one of:

interpret a read request; and

interpret a write request.

9. The memory controller of claim 7 , the processing module is further operable to:

when the data segment is to be stored in the second memory layer in accordance with the error coding dispersal function, facilitate forwarding of the plurality of data slices from the first memory layer to the second memory layer.

10. The memory controller of claim 7 further comprises:

the first memory layer including at least one of:

a main memory:

a local non-core memory;

a local area network memory;

a wide area network memory; and

the second memory layer including at least one of:

the main memory:

the local non-core memory;

the local area network memory; and

the wide area network memory.

11. The memory controller of claim 7 , the processing module is further operable to:

when the data segment is not stored in accordance with the error coding dispersal function:

retrieve the data segment from the first memory layer;

determine whether to store the data segment in accordance with the second error coding dispersal function in the second memory layer;

when the data segment is to be stored in accordance with the second error coding dispersal function, perform the second error coding dispersal function on the data segment to produce the second plurality of data slices; and

send the second plurality of data slices to the second memory layer.

12. The memory controller of claim 7 , the processing module is further operable to:

when the data segment is not stored in accordance with the error coding dispersal function:

retrieve the data segment from the first memory layer;

determine whether to store the data segment in accordance with the second error coding dispersal function in the second memory layer; and

when the data segment is not to be stored in accordance with the second error coding dispersal function, send the data segment to the second memory layer.

13. The memory controller of claim 7 further comprises:

a buffer to temporarily store the plurality of slices.

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 Apr 16, 2010
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 024243/0217 →