IP Library › Granted Patent US 9,081,712
Granted Patent B2
US 9,081,712 · App. 13/723,850 · Granted Jul 14, 2015

System and method for using solid state storage systems as a cache for the storage of temporary data

Inventor: Gary B. Kotzur (Austin, TX)
Assignee: DELL PRODUCTS, L.P.
G06F11/1068G06F12/0246G06F2212/7203
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,712
App. No.
13/723,850
Filed
Dec 21, 2012
Granted
Jul 14, 2015
Kind
B2
Art Unit
2117
USPC
714/773
Abstract

A method of storing data includes a storage device controller that receives a storage access operation to store data on at least one non-volatile storage device having a plurality of individually accessible blocks. In response to receiving the storage access operation to store data, the controller initiates a first program cycle to store the data as temporary data within one or more of the blocks. The program cycle has an associated first set of parameters for storage of temporary data. In response to a pre-determined period of time for the storage of temporary data being exceeded or a pre-determined capacity for temporary data has been exceeded, the controller initiates a second program cycle to store the temporary data as persistent data within one or more of the blocks. The second program cycle has an associated second set of parameters for storage of persistent data.

Claims (70)

1. A method of operating a solid state storage system, the method comprising:

a storage device controller receiving a storage access operation to store data on the solid state storage system, wherein the solid state storage system comprises at least one non-volatile storage device having a plurality of individually accessible blocks;

in response to receiving the storage access operation to store data on the solid state storage system, initiating a first program cycle to temporarily store the data as temporary data within one or more of the blocks of the non-volatile storage device, wherein the program cycle has an associated first set of parameters for enabling initial storage of the data as temporary data; and

wherein the first program cycle further comprises:

determining a number of errors that occurs during execution of the first program cycle;

incrementing a first count of the number of errors that occurred during execution of the first program cycle;

comparing the first count to a pre-established first number of errors permitted for storage of temporary data; and

responsive to the first count being greater than the pre-established first number of errors permitted for storage of temporary data, repeating the first program cycle.

2. The method of claim 1 , further comprising:

determining if a pre-established period of time for initial storage of the data as temporary data has been exceeded; and

in response to the pre-established period of time being exceeded, initiating a second program cycle to store the temporary data as persistent data within one or more of the blocks of the non-volatile storage device, wherein the second program cycle has an associated second set of parameters for storage of persistent data.

3. The method of claim 1 , wherein the pre-established first number of errors permitted for storage of temporary data is greater than a pre-established second number of errors allowed for storage of persistent data.

4. The method of claim 1 , further comprising:

receiving at the storage controller a plurality of temporary data parameters associated with at least a portion of the data, wherein the temporary data parameters comprise at least one of a first time period for temporary storage, a pre-established first number of errors permitted for temporary storage, and a selected storage operation from among multiple operations that can be performed in response to the controller determining that the pre-established first number of errors permitted for temporary storage of the portion of data has been exceeded;

wherein the temporary data parameters allow the storage controller to reduce a number of write cycles to temporarily store the portion of data, relative to the number of write cycles required for a permanent storage of data, and wherein the storage controller utilizes at least one page of the non-volatile storage device as a cache storage.

5. The method of claim 1 , further comprising:

responsive to detecting a power failure in the solid state storage system, executing one or more first program cycles to store all pending data to the storage device as temporary data.

6. A method of operating a solid state storage system, the method comprising:

a storage device controller receiving a storage access operation to store data on the solid state storage system, wherein the solid state storage system comprises at least one non-volatile storage device having a plurality of individually accessible blocks;

in response to receiving the storage access operation to store data on the solid state storage system, initiating a first program cycle to temporarily store the data as temporary data within one or more of the blocks of the non-volatile storage device, wherein the program cycle has an associated first set of parameters for enabling initial storage of the data as temporary data;

setting a maximum number of pages for use in storing temporary data within the storage device; and

in response to receiving a write request to write a new page of temporary data:

counting a number of pages of temporary data within the storage device; and

in response to the number of pages of temporary data being greater than the maximum number of pages allowed for temporary data storage: determining a least recently used page of temporary data; writing the least recently used page of temporary data as permanent data; and writing the new page of temporary data in response to completion of the writing of the least recent used page of temporary data as permanent data.

7. A solid state storage system comprising:

at least one non-volatile storage device having a plurality of individually accessible blocks, each of the blocks having a plurality of individually accessible pages;

a storage controller coupled to the non-volatile storage device for controlling storage access operations, the storage controller receiving a storage access operation to store data on the solid state storage system wherein the storage controller comprises logic that:

identifies whether the storage access operation is a first-type write request for providing temporary storage of the data;

in response to the storage access operation being the first-type write request, initiating a first program cycle to store the data as temporary data within one or more of the blocks of the non-volatile storage device, wherein the first program cycle has an associated first set of parameters for temporary storage that are different from a second set of parameters for permanent storage within the non-volatile storage device, and wherein the non-volatile storage device provides both permanent data storage and temporary data storage based on a type of write request received to store the data;

in response to successful completion of the first program cycle, executes error correction code (ECC) to count a first number of errors that occurred during execution of the first program cycle; and

compares the first number of errors to a pre-established first number of errors permitted for temporary storage, wherein the pre-established first number of errors permitted for temporary data storage on the non-volatile storage device is greater than a pre-established second number of errors allowed for permanent storage.

8. The solid state storage system of claim 7 , wherein the storage controller further comprises logic that:

performs a data scrubbing operation on the storage device, the data scrubbing operation comprising:

determining if data stored within each page is temporary data or permanent data; and

responsive to the data being permanent data:

comparing a third number of errors for the permanent data to a pre-established third number of errors permitted for permanent storage;

responsive to the third number of errors being less than the pre-established third number of errors permitted for permanent storage, continuing the data scrubbing operation for additional data; and

responsive to the third number of errors being greater than the pre-established third number of errors permitted for permanent storage, rebuilding the permanent data.

9. The solid state storage system of claim 8 , wherein the storage controller further comprises logic that:

responsive to the data being temporary data:

compares a fourth number of errors to a pre-established fourth number of errors permitted for temporary storage;

responsive to the fourth number of errors being greater than the pre-established fourth number of errors permitted for temporary storage, rebuilds the temporary data; and

responsive to the fourth number of errors being less than the pre-established fourth number of errors permitted for temporary storage, continues the data scrubbing operation for additional data.

10. The solid state storage system of claim 7 , wherein the storage controller further comprises logic that:

determines a data retention time for one or more pages of temporary data; and

responsive to the data retention time being greater than a first time period, rewrites the temporary data as permanent data.

11. The solid state storage system of claim 7 , wherein the storage controller further comprises logic that:

receives at the storage controller a plurality of temporary data parameters associated with at least a portion of the data, wherein the temporary data parameters comprise at least one of a first time period for temporary storage, the pre-established first number of errors permitted for temporary storage, and a selected storage operation of multiple operations that can be performed in response to the controller determining that the pre-established first number of errors permitted for temporary storage of the portion of data has been exceeded, wherein the temporary data parameters allow the storage controller to reduce a number of write cycles to store the portion of data, relative to the number of write cycles required for a permanent storage of data, and wherein the storage controller utilizes at least one page of the non-volatile storage device as a cache storage.

12. The solid state storage system of claim 7 , wherein the storage controller further comprises logic that:

performs a plurality of timed periodic first program cycles to store data as temporary data in order to prevent loss of data during the occurrence of a power failure in the solid state storage system; and

responsive to detecting the power failure in the solid state storage system, executes the first program cycle to store all pending data to the storage device as temporary data.

13. The solid state storage system of claim 7 , wherein the storage controller further comprises logic that:

sets a maximum number of pages for temporary data within the storage device; and

in response to receiving a write request to write a new page of temporary data:

counts a number of pages of temporary data within the storage device; and

responsive to the number of pages of temporary data being greater than the maximum number of pages of temporary data: determines a least recently used page of temporary data and writes the least recently used page of temporary data as permanent data before writing the new page of temporary data.

14. An information handling system (IHS) comprising:

one or more processors;

a storage system coupled to the processor and in communication with the processor, the storage system comprising: at least one non-volatile storage device having a plurality of individually accessible blocks, each of the blocks having a plurality of individually accessible pages; and a storage controller coupled to the non-volatile storage device, the storage controller having firmware executing thereon to provide control of storage system operations wherein the firmware configures the storage controller to:

identify whether the storage access operation is a first-type write request for providing temporary storage of the data;

in response to the storage access operation being the first-type write request, initiate a first program cycle to store the data as temporary data within one or more of the blocks of the non-volatile storage device, wherein the first program cycle has an associated first set of parameters for temporary storage that are different from a second set of parameters for permanent storage within the non-volatile storage device, and wherein the non-volatile storage device provides both permanent data storage and temporary data storage based on a type of write request received to store the data; and

receive at the storage controller a plurality of temporary data parameters associated with at least a portion of the data, wherein the temporary data parameters comprise at least one of a first time period for temporary storage, a pre-established first number of errors permitted for temporary storage, and a selected storage operation of multiple operations that can be performed in response to the controller determining that the pre-established first number of errors permitted for temporary storage of the portion of data has been exceeded, wherein the temporary data parameters allow the storage controller to reduce a number of write cycles to store the portion of data, relative to the number of write cycles required for a permanent storage of data, and wherein the storage controller utilizes at least one page of the non-volatile storage device as a cache storage.

15. The information handling system of claim 14 , wherein the firmware further configures the storage controller to:

perform a plurality of timed periodic first program cycles to store data as temporary data in order to prevent loss of data during the occurrence of a power failure in the solid state storage system; and

in response to detecting the power failure in the solid state storage system, execute the first program cycle to store all pending data to the storage device as temporary data.

16. The information handling system of claim 14 , wherein the firmware further configures the storage controller to:

set a maximum number of pages for temporary data within the storage device; and

in response to receiving a write request to write a new page of temporary data:

count a number of pages of temporary data within the storage device; and

in response to the number of pages of temporary data being greater than the maximum number of pages of temporary data: determine a least recently used page of temporary data and write the least recently used page of temporary data as permanent data before writing the new page of temporary data.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2012
From: KOTZUR, GARY B.
To: DELL PRODUCTS L.P.
Reel/Frame 029517/0817 →
Continuity (1)
Related Publication 20140181620A1 · Jun 26, 2014