IP Library Granted Patent US 8,533,424
Granted Patent B2
US 8,533,424 · App. 12/755,181 · Granted Sep 10, 2013

Computing system utilizing dispersed storage

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,533,424
App. No.
12/755,181
Granted
Sep 10, 2013
Kind
B2
Abstract

A computing system comprises at least a processing module, a main memory, a memory controller, and a plurality of memory components. A method begins by the memory controller receiving a memory access request regarding a data segment. The method continues with the memory controller interpreting the memory access request to determine whether an error encoding dispersal function of the data segment is applicable. The method continues with the memory controller identifying at least a threshold number of memories based on the memory access request, wherein the threshold number of memories includes at least one of the main memory and/or one or more of the plurality of memory components, when the error encoding dispersal function is applicable. The method continues with the memory controller addressing the at least a threshold number of memories to facilitate the memory access request.

Claims (94)

1. A computing system comprises:

a computing core that includes:

a processing module;

main memory; and

a memory controller coupled to the processing module and to the main memory; and

a plurality of memory components operably coupled to the computing core, wherein the memory controller is operable to:

receive a memory access request regarding a data segment;

interpret the memory access request to determine whether an error encoding dispersal function of the data segment is applicable;

when the error encoding dispersal function is applicable:

identify at least a threshold number of memories based on the memory access request, wherein memories of the threshold number of memories includes at least one of:

the main memory; and

one or more of the plurality of memory components; and

address the at least a threshold number of memories to facilitate the memory access request

when the error encoding dispersal function is not applicable:

identify one of the memories; and

address the one of the memories to facilitate the memory access request.

2. The computing system of claim 1 , wherein the memory access request comprises at least one of:

a read instruction;

a write instruction;

a delete instruction;

a modify instruction; and

a list instruction.

3. The computing system of claim 1 , wherein the memory controller is further operable to, when the memory access request includes a write instruction and the error encoding dispersal function is applicable:

encode the data segment to produce an encoded data segment;

slice the encoded data segment to produce a plurality of slices; and

address the at least a threshold number of memories to store the plurality of slices.

4. The computing system of claim 1 , wherein the plurality of memory components comprises at least one of:

one or more local hard disk drives;

one or more local solid state memory devices;

one or more local area network (LAN) memory devices; and

one or more wide area network (WAN) memory devices.

5. The computing system of claim 1 , wherein the memory controller further functions to:

convert a virtual memory address of the data segment to one or more physical addresses within the at least a threshold number of the memories to produce a virtual to physical mapping; and

facilitate storage of the virtual to physical memory mapping.

6. The computing system of claim 1 , wherein the memory controller further functions to:

identify at least a threshold number of the plurality of memory components based on the memory access request to produce the at least a threshold number of memories; and

address the at least a threshold number of the plurality of memory components to facilitate the memory access request.

7. The computing system of claim 1 , wherein the main memory comprises:

a plurality of main memory components, wherein the memory controller further functions to:

identify at least a threshold number of the plurality of main memory components based on the memory access request to produce the at least a threshold number of memories; and

address the at least a threshold number of the plurality of main memory components to facilitate the memory access request.

8. The computing system of claim 1 , wherein the memory controller further functions to:

identify the at least a threshold number of memories based on the memory access request, wherein the threshold number of memories includes:

the main memory corresponding to a first pillar of distributed storage; and

a local non-core memory corresponding to a second pillar of distributed storage.

9. The computing system of claim 1 , wherein the plurality of memory components comprises:

a plurality of local non-core memory components, wherein the memory controller further functions to:

identify at least a threshold number of the plurality of local non-core memory components based on the memory access request, wherein a first non-core memory component of the plurality of memory components corresponds to a first pillar of distributed storage and a second non-core memory component of the plurality of memory components corresponds to a second pillar of distributed storage.

10. The computing system of claim 9 , wherein the plurality of memory components comprises:

a plurality of non-local memory components, wherein the memory controller further functions to facilitate a transfer of a plurality of slices of the data segment between the at least threshold number of the plurality of local non-core memory components and the plurality of non-local memory components.

11. A computing core comprises:

a processing module;

a plurality of memory interfaces operable to couple to a plurality of memory components;

main memory; and

a memory controller coupled to the processing module, the plurality of memory interfaces, and to the main memory, wherein the memory controller is operable to:

receive a memory access request regarding a data segment;

interpret the memory access request to determine whether an error encoding dispersal function of the data segment is applicable;

when the error encoding dispersal function is applicable:

identify at least a threshold number of memories based on the memory access request, wherein memories of the threshold number of memories includes at least one of:

the main memory; and

one or more of the plurality of memory components; and

address the at least a threshold number of memories to facilitate the memory access request

when the error encoding dispersal function is not applicable:

identifying one of the memories; and

addressing the one of the memories to facilitate the memory access request.

12. The computing core of claim 11 , wherein the memory access request comprises at least one of:

a read instruction;

a write instruction;

a delete instruction;

a modify instruction; and

a list instruction.

13. The computing core of claim 11 , wherein the memory controller is further operable to, when the memory access request includes a write instruction and the error encoding dispersal function is applicable:

encode the data segment to produce an encoded data segment;

slice the encoded data segment to produce one or more slices; and

address, via at least one of the plurality of memory interfaces, the at least a threshold number of memories to store the plurality of slices.

14. The computing core of claim 11 , wherein the memory controller further functions to:

convert a virtual memory address of the data segment to one or more physical addresses within the at least a threshold number of the memories to produce a virtual to physical mapping; and

facilitate storage of the virtual to physical memory mapping.

15. The computing core of claim 11 , wherein the memory controller further functions to:

identify at least a threshold number of the plurality of memory components based on the memory access request to produce the at least a threshold number of memories; and

address, via at least one of the plurality of memory interfaces, the at least a threshold number of the plurality of memory components to facilitate the memory access request.

16. The computing core of claim 11 , wherein the main memory comprises:

a plurality of main memory components, wherein the memory controller further functions to:

identify at least a threshold number of the plurality of main memory components based on the memory access request to produce the at least a threshold number of memories; and

address the at least a threshold number of the plurality of main memory components to facilitate the memory access request.

17. The computing core of claim 11 , wherein the memory controller further functions to:

identify the at least a threshold number of memories based on the memory access request, wherein the threshold number of memories includes:

the main memory corresponding to a first pillar of distributed storage; and

a local non-core memory corresponding to a second pillar of distributed storage.

18. The computing core of claim 11 , wherein the plurality of memory components comprises:

a plurality of local non-core memory components, wherein the memory controller further functions to:

identify at least a threshold number of the plurality of local non-core memory components based on the memory access request, wherein a first non-core memory component of the plurality of memory components corresponds to a first pillar of distributed storage and a second non-core memory component of the plurality of memory components corresponds to a second pillar of distributed storage.

19. The computing core of claim 18 , wherein the plurality of memory components comprises:

a plurality of non-local memory components, wherein the memory controller further functions to facilitate a transfer of a plurality of slices of the data segment between the at least threshold number of the plurality of local non-core memory components and the plurality of non-local memory components.

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 6, 2010
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 024193/0815 →