IP Library Granted Patent US 10,037,158
Granted Patent B2
US 10,037,158 · App. 15/452,606 · Granted Jul 31, 2018

Vertically integrated storage

Inventor: Radoslav Danilak (Cupertino, CA)
Assignee: Skyera, LLC
G06F3/0619G06F3/065G06F3/0641G06F3/0655G06F3/0688G06F3/0689
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 10,037,158
App. No.
15/452,606
Granted
Jul 31, 2018
Kind
B2
Abstract

Various systems, methods, apparatuses, and computer-readable media for accessing a storage device are described. Techniques are described for vertically integrating the various software functions and hardware functions for accessing storage hardware. In some embodiments, the system is implemented using non-volatile memory.

Claims (46)

1. A storage device comprising:

a storage medium comprising non-volatile memory;

one or more processing entities configured to:

execute a compression module to compress data associated with an access request, wherein the compression module is configured to generate a signature for the data;

execute a deduplication module to detect duplicity of the data by comparing the signature generated by the compression module with signatures stored on the storage device;

execute a journaling module to perform a journaling function for the access request, wherein the journaling function comprises logging data for data recovery in an event of a system crash or power failure;

execute a mapping module to perform a mapping function for the access request, wherein the mapping function performs a translation from a linear address to a physical address for the access request using a multidimensional mapping structure, wherein a first dimension of the multidimensional mapping structure is a file identifier and a second dimension of the multidimensional mapping structure is a snapshot version;

execute a Redundant Array of Independent Disks (RAID) module to provide fault tolerance by spreading data and parity information across the non-volatile memory; and

execute a snapshot and thin provisioning module, wherein the snapshot and thin provisioning module does not have a separate journaling functionality or separate mapping functionality;

wherein the journaling function is performed once for the deduplication module and the RAID module for the access request; and

wherein the mapping function is performed once for the deduplication module and the RAID module for the access request.

2. The storage device of claim 1 , wherein a flash translation layer (FTL) module comprises the journaling module and the mapping module.

3. The storage device of claim 2 , wherein storage device is configured to execute a single instance of the FTL module for the storage device.

4. The storage device of claim 1 , wherein the compression module is configured for compressing data before storing the data on the storage medium and decompressing the data after retrieving the data from the storage medium, wherein the compression module does not have a separate journaling functionality or separate mapping functionality.

5. The storage device of claim 1 , wherein the one or more processing units are further configured to execute a File System (FS) module for providing abstraction to an application for storing, retrieving and updating files comprising data on the storage medium, wherein the FS module does not have a separate journaling functionality or separate mapping functionality.

6. The storage device of claim 1 , wherein the one or more processing units are further configured to execute an Operating System (OS) module configured to execute on one or more processors, wherein OS module does not have a separate journaling functionality or separate mapping functionality.

7. The storage device of claim 1 , wherein the one or more processing units are further configured to perform a caching function using a caching module only once for the deduplication module and the RAID module for the access request to the storage medium on the storage device.

8. The storage device of claim 1 , wherein the one or more processing units are further configured to perform a garbage collection function using a garbage collection module only once for the deduplication module and the RAID module for the access request to the storage medium on the storage device.

9. A non-transitory computer readable storage medium, wherein the non-transitory computer readable storage medium comprises instructions executable by a processor, the instructions comprising instructions to:

manage access to a non-volatile memory for the storage medium using a Flash Translation Layer (FTL) module;

compress data associated with an access request using a compression module, and generate a signature for the data using the compression module;

detect duplicity of the data using a deduplication module by comparing the signature generated by the compression module with stored signatures;

perform a journaling function using a journaling module for the access request, wherein the journaling function comprises logging data for data recovery in an event of a system crash or power failure;

perform a mapping function using a mapping module for the access request, wherein the mapping function performs a translation from a linear address to a physical address for the access request using a multidimensional mapping structure, wherein a first dimension of the multidimensional mapping structure is a file identifier and a second dimension of the multidimensional mapping structure is a snapshot version;

provide fault tolerance by spreading data and parity information across the non-volatile memory using a Redundant Array of Independent Disks (RAID) module; and

perform a snapshot and thin provisioning function, wherein the snapshot and thin provisioning function does not have a separate journaling functionality or separate mapping functionality;

wherein the journaling function is performed once for the FTL module, the deduplication module and the RAID module for the access request to the storage medium on the storage device; and

wherein the mapping function is performed once for the FTL module, the deduplication module and the RAID module for the access request.

10. The non-transitory computer readable storage medium of claim 1 , wherein the instructions are part of a single executable binary.

11. The non-transitory computer readable storage medium of claim 1 , further comprising instructions to decompress data only once for a read access request.

12. The non-transitory computer readable storage medium of claim 1 , further comprising instructions to perform caching function only once for the access request to the storage medium on the storage device.

13. The non-transitory computer readable storage medium of claim 1 , further comprising instructions to perform garbage collection functionality only once for the access request to the storage medium on the storage device.

14. A method for accessing a storage medium on a storage device, the method comprising:

managing access to a non-volatile memory for the storage medium using a Flash Translation Layer (FTL) module;

compressing data associated with an access request using a compression module, and generating a signature for the data using the compression module;

detecting duplicity of data using a deduplication module by comparing the signature generated by the compression module with stored signatures;

performing a journaling function using a journaling module for the access request, wherein the journaling function comprises logging data for data recovery in an event of a system crash or power failure;

performing a mapping function using a mapping module for the access request, wherein the mapping function performs a translation from a linear address to a physical address for the access request using a multidimensional mapping structure, wherein a first dimension of the multidimensional mapping structure is a file identifier and a second dimension of the multidimensional mapping structure is a snapshot version;

providing fault tolerance by spreading data and parity information across the non-volatile memory using a Redundant Array of Independent Disks (RAID) module; and

performing a snapshot and thin provisioning function, wherein the snapshot and thin provisioning function does not have a separate journaling functionality or separate mapping functionality;

wherein the journaling function is performed once for the access request; and

wherein the mapping function is performed once for the access request.

15. The method of claim 14 , further comprising decompressing data once for a read access request.

16. The method of claim 14 , further comprising performing caching only once for the access request to the storage medium on the storage device.

17. The method of claim 14 , further comprising performing garbage collection functionality only once for the access request to the storage medium on the storage device.

18. The method of claim 14 , further comprising performing garbage write combining only once for the access request to the storage medium on the storage device.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2018
From: SKYERA, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046726/0328 →
CHANGE OF NAME Recorded Mar 20, 2018
From: SKYERA, INC.
To: SKYERA, LLC
Reel/Frame 045662/0374 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2018
From: DANILAK, RADOSLAV
To: SKYERA, INC.
Reel/Frame 045660/0194 →
Continuity (8)
Continuation 14208401 · Mar 13, 2014
Provisional Application 61799023 · Mar 15, 2013
Provisional Application 61798754 · Mar 15, 2013
Provisional Application 61794647 · Mar 15, 2013
Provisional Application 61788613 · Mar 15, 2013
Provisional Application 61793141 · Mar 15, 2013
Provisional Application 61793591 · Mar 15, 2013
Related Publication 20170177252A1 · Jun 22, 2017