IP Library Granted Patent US 9,170,757
Granted Patent B1
US 9,170,757 · App. 13/911,632 · Granted Oct 27, 2015

Optimization of raid group 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 9,170,757
App. No.
13/911,632
Granted
Oct 27, 2015
Kind
B1
Abstract

A method of operating a memory system to compress data efficiently is described. The user data and the associated metadata are separated so that user data having repeating data patterns of greater length than a single user data structure may be assembled for storage. The user metadata and the repeating pattern metadata are stored in non-volatile memory such that the repeating pattern metadata can be used to reconstruct the repeating pattern of individual user data blocks. The reconstructed user data blocks are combined with user metadata, if any, and returned to the user in response to a read request.

Claims (50)

1. A method of operating a memory system having a controller and a memory module, comprising:

receiving, by the controller, a data structure having a user data block and user metadata for the user data block;

separating the user data block from the user block metadata, if any;

storing a plurality of user data blocks without the user block metadata such that the plurality of user data blocks occupy contiguous memory locations of a page of memory;

storing the plurality of user block metadata such that the plurality of user block metadata occupy contiguous memory locations of the page of memory.

2. The method of claim 1 , further comprising:

reading the page of memory in response to a read command from a user and combining the user data block and the corresponding stored user block metadata to reform the data structure; and

returning the data structure to the user.

3. The method of claim 1 , further comprising:

processing the plurality of user data blocks forming a page of memory to determine if a repeating data pattern is present;

determining a type of repeating data pattern and a run length for each repeating data pattern;

storing the data pattern designation and run length for each repeating data pattern as data metadata;

deleting the user data corresponding to the repeating data pattern; and

writing the data metadata to non-volatile memory.

4. The method of claim 3 , further comprising:

reading the data metadata for a page of memory in response to a read command from a user and generating the repeating data pattern of a user data block identified by the data metadata and combining the user data block and the corresponding user block metadata to reform the data structure; and

returning the data structure to the user.

5. The method of claim 1 , further comprising:

creating a strips of a RAID stripe from a page of user data blocks and the any metadata associated with the page of user data blocks;

computing an error correcting code over the user data blocks and the metadata;

storing the strips of data on a plurality of memory modules and the error correcting code on another memory module such that the data and metadata is reconstructable using less that all of the memory modules.

6. The method of claim 5 , further comprising:

processing the plurality of user data blocks forming a page of memory of a memory module to determine if a repeating data pattern is present;

determining a type of data pattern and a run length for each repeating data pattern;

storing the data pattern designation and run length for each repeating data as metadata;

deleting the user data of the user data blocks corresponding to the repeating data pattern; and

writing the metadata to non-volatile memory.

7. The method of claim 6 , further comprising:

reading the metadata for a RAID stripe in response to a read command from a user and generating the repeating data pattern of a user data block identified by the metadata and combining the user data block and the corresponding user block metadata to reform the data structure; and

returning the data structure to the user.

8. The method of claim 7 , wherein the value of user block metadata used to reform the data structure has the same the same value as originally received from the user.

9. The method of claim 7 , wherein the user block metadata received from the user conforms to the T10-DIF standard.

10. A method of operating a memory system having a controller and a memory module, comprising:

receiving, by the controller, a data structure having a user data block and user block metadata for the user data block;

processing a user data block to determine if a repeating data pattern is present;

determining a type of repeating data pattern and a run length for each repeating data pattern;

forming data metadata representing the data pattern designation and data metadata for the repeating data pattern;

deleting the data corresponding to the repeating data pattern;

forming a block of data from the user block metadata and the data metadata; and

writing the user data block and data metadata, if any, to a non-volatile memory module.

11. The method of claim 10 , further comprising:

computing an error correcting code for the data stored to non-volatile memory; and

writing the error correcting code to a memory module not containing the user block data, data metadata, or user block data.

12. The method of claim 11 , further comprising:

reading one of the user block metadata and data metadata or the error correcting code in response to a read command from a user and identifying the data metadata corresponding to the data structure of the read command;

reconstructing the repeating data pattern using the data metadata to form the user data block;

combining the user data block and the corresponding user block metadata to reform the data structure;

returning the data structure to the user.

13. The method of claim 10 , wherein the user block metadata and the data metadata are stored in a first portion of a logical page and the user block data, if any, is stored in a second portion of the logical page.

14. The method of claim 10 , wherein a page of logical data is written to a plurality of memory modules in a RAID stripe.

Assignments (8)
CORRECTIVE ASSIGNMENT TO REMOVE US PATENT NO. 9013874 PREVIOUSLY RECORDED UNDER REEL AND FRAME 064272/0249. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 17, 2024
From: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC)
To: INNOVATIONS IN MEMORY LLC
Reel/Frame 068998/0780 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2023
From: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC)
To: INNOVATIONS IN MEMORY LLC
Reel/Frame 064272/0249 →
RELEASE OF SECURITY INTEREST Recorded Jun 16, 2021
From: SILICON VALLEY BANK
To: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC (F/K/A VIOLIN MEMORY, INC.))
Reel/Frame 056600/0186 →
CHANGE OF NAME Recorded May 25, 2021
From: VIOLIN SYSTEMS LLC
To: VSIP HOLDINGS LLC
Reel/Frame 056366/0849 →
RELEASE OF SECURITY INTEREST Recorded Feb 27, 2018
From: SILICON VALLEY BANK
To: VIOLIN SYSTEMS LLC
Reel/Frame 045044/0406 →
CHANGE OF NAME Recorded Dec 19, 2017
From: VIOLIN MEMORY, INC.
To: VIOLIN SYSTEMS LLC
Reel/Frame 044908/0680 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2015
From: SHIHADEH, ELIAS; MANDAPURAM, ANIL
To: VIOLIN MEMORY INC.
Reel/Frame 036589/0360 →
SECURITY INTEREST Recorded Aug 27, 2014
From: VIOLIN MEMORY, INC.
To: SILICON VALLEY BANK
Reel/Frame 033645/0834 →