IP Library Granted Patent US 9,170,754
Granted Patent B2
US 9,170,754 · App. 13/456,119 · Granted Oct 27, 2015

Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment

Inventors: David Flynn (Sandy, UT); Michael Zappe (Arvada, CO); Jonathan Thatcher (Liberty Lake, WA)
Assignee: Intelligent Intellectual Property Holdings 2 LLC
G06F3/0659G06F3/061G06F3/064G06F3/067G06F3/0643G06F3/0679G06F12/121
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,170,754
App. No.
13/456,119
Granted
Oct 27, 2015
Kind
B2
Abstract

An apparatus, system, and method are disclosed for coordinating storage requests in a multi-processor/multi-thread environment. An append/invalidate module generates a first append data storage command from a first storage request and a second append data storage command from a second storage request. The storage requests overwrite existing data with first and second data including where the first and second data have at least a portion of overlapping data. The second storage request is received after the first storage request. The append/invalidate module updates an index by marking data being overwritten as invalid. A restructure module updates the index based on the first data and updates the index based on the second data. The updated index is organized to indicate that the second data is more current than the first data regardless of processing order. The modules prevent access to the index until the modules have completed updating the index.

Claims (43)

1. An apparatus, comprising:

a storage request receiver module configured to receive a storage request to store data at a logical address specified by the storage request;

a translation module configured to:

determine whether to generate a single append storage command or a plurality of append storage commands based on a length of the data and a storage capacity of a physical storage location on the non-volatile storage medium; and

based on the determination, generate one or more append storage commands in response to the received storage request, wherein each of the one or more append storage commands is executable to store a portion of the data at one or more respective physical addresses corresponding to one or more append point locations;

an append module configured to execute the one or more append storage commands by storing the portions of the data on a non-volatile storage medium, wherein one or more of the storage request receiver module, translation module, and append module include hardware;

a mapping module configured to translate, in accordance with a map data structure, the logical address to one or more corresponding physical addresses;

a check point module configured to periodically store the map data structure to the non-volatile storage medium, wherein the append module is configured to further store metadata of the map data structure with the portions of the data; and

a map rebuild module configured to rebuild a current version of the map data structure by sequentially reading the metadata stored since a last storage of the map data structure, wherein the mapping module, check point module, and map rebuild module are hardware.

2. The apparatus of claim 1 , wherein the append module is configured to:

execute a first of the one or more append storage commands by storing a portion of the data at one or more physical addresses corresponding to a first append point location on the non-volatile storage medium; and

execute a second of the one or more append storage commands by storing a portion of the data at one or more physical addresses corresponding to a second append point location on the non-volatile storage medium.

3. The apparatus of claim 2 , wherein the first and second append point locations correspond to physical addresses located within different erase blocks of the non-volatile storage medium.

4. The apparatus of claim 1 , wherein the logical address is a logical block address, and wherein the storage request further specifies a length of the data.

5. The apparatus of claim 1 , wherein the apparatus is configured to process storage requests received in parallel.

6. A method, comprising:

receiving a request to store data on a non-volatile storage medium;

analyzing a length of the data and an available amount of storage capacity for a physical storage location in the non-volatile storage medium;

based on the analyzing, issuing a plurality of storage commands to the non-volatile storage medium, wherein each of the plurality of storage commands is executable to store a portion of the data within a respective data packet on the non-volatile storage medium; and

compressing the portions of data prior to storing the data on the non-volatile storage medium.

7. The method of claim 6 , wherein the analyzing includes:

determining that the length of the data is greater than the available amount of storage capacity; and

splitting the data into a plurality of portions prior to storing the data.

8. The method of claim 6 , wherein the plurality of storage commands include a first storage command and a second storage command, wherein the first storage command is executable to store a portion of the data at a first append point location that is advanced sequentially through the non-volatile storage medium, and wherein the second storage command is executable to store a portion of the data at a second append point location that is advanced sequentially through the non-volatile storage medium.

9. The method of claim 6 , wherein the available amount of storage capacity is a remaining amount of storage capacity for a page within the non-volatile storage medium.

10. The method of claim 6 , wherein the length of the data is specified in the received request.

11. The method of claim 6 , further comprising:

receiving storage requests to store data having different respective lengths.

12. An apparatus, comprising:

solid-state storage media; and

a storage controller configured to:

receive a storage request to store data to the solid-state storage media, wherein the storage request specifies a size of the data;

determine, based on the size, a number of append instructions to issue to the solid-state media, wherein each append instruction is executable by the solid-state storage media to store a respective portion of the data;

cause the solid-state storage media to store metadata of a map data structure usable by the storage controller to translate logical addresses specified in storage requests to corresponding physical addresses of the solid-state storage media; and

recover the map data structure to a current state by replaying packets stored since a checkpoint of the map data structure, wherein the replayed packets include metadata of the map data structure.

13. The apparatus of claim 12 , wherein the storage controller is configured to determine the number of append instructions by comparing the size with an available mount of space within a page of the solid-state storage media.

14. The apparatus of claim 12 , wherein the storage controller is configured to issue append instructions that are executable by the solid-state storage media to store portions of the data at different append point locations advanced sequentially through the solid-state storage media.

15. The apparatus of claim 12 , wherein the storage controller is configured to direct the append instructions to different erase blocks of the solid-state storage media.

16. An apparatus, comprising:

solid-state storage media; and

a storage controller configured to:

receive a storage request to store data to the solid-state storage media, wherein the storage request specifies a size of the data; and

determine, based on the size, a number of append instructions to issue to the solid-state media, wherein each append instruction is executable by the solid-state storage media to store a respective portion of the data, wherein the solid-state storage media is configured to execute the append instructions in a different order than an order of issuance of the append instructions.

Assignments (15)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/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 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038109/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038025/0357 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033389/0511 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2012
From: FUSION MULTISYSTEMS, INC.
To: FUSION-IO, INC.
Reel/Frame 029057/0643 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2012
From: FLYNN, DAVID; ZAPPE, MICHAEL; THATCHER, JONATHAN
To: FUSION MULTISYSTEMS, INC.
Reel/Frame 029042/0355 →
Continuity (5)
Continuation 13235114 · Sep 16, 2011
Continuation 12900336 · Oct 7, 2010
Continuation 12098435 · Apr 6, 2008
Continuation In Part 11952121 · Dec 6, 2007
Related Publication 20120210021A1 · Aug 16, 2012