IP Library Granted Patent US 8,650,362
Granted Patent B2
US 8,650,362 · App. 12/759,644 · Granted Feb 11, 2014

System for increasing utilization of storage media

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,650,362
App. No.
12/759,644
Granted
Feb 11, 2014
Kind
B2
Abstract

A storage system creates an abstraction of flash Solid State Device (SSD) media allowing random write operations of arbitrary size by a user while performing large sequential write operations of a uniform size to an SSD array. This reduces the number of random write operations performed in the SSD array and as a result increases performance of the SSD array. A control element determines when blocks from different buffers should be combined together or discarded based on fragmentation and read activity. This optimization scheme increases memory capacity and improves memory utilization and performance.

Claims (37)

1. A storage system, comprising:

a control element configured to:

identify buffer regions within a storage media that store groups of data in contiguous address locations;

identify blocks within the buffer regions that store subgroups of the data;

remap the data from the blocks of different buffer regions into a same one of the buffer regions or discard the data from the buffer regions according to utilization of the buffer regions;

identifying a number of used blocks in the buffer regions;

rank the different buffer regions according to the number of used blocks; and

combine blocks from different buffer regions together according to how the different buffer regions are ranked.

2. A storage system, comprising:

a control element configured to:

identify buffer regions within a storage media that store groups of data in contiguous address locations;

identify blocks within the buffer regions that store subgroups of the data;

remap the data from the blocks of different buffer regions into a same one of the buffer regions or discard the data from the buffer regions according to utilization of the buffer regions;

rank the different buffer regions according to read counts; and

discard data from different buffer regions according to how the buffer regions are ranked

wherein the control element is further configured to:

discard data from the buffer regions that have zero read counts when the number of buffer regions currently being used in the storage media is below a first threshold; and

discard data in the buffer regions data according to how the buffer regions are ranked when the number of buffers regions currently being used in the storage media is above the first threshold.

3. A method for operating an apparatus, comprising:

receiving different write operations directed to a storage array;

accumulating data from the different write operations into a staging buffer;

writing the data in the staging buffer into contiguous block regions within a same buffer region of a storage media; and

creating buffer entries identifying physical addresses of the block regions within the buffer region; and

storing the data from the write operations into the storage array;

the method further comprising:

identifying a number of buffer regions being utilized in the storage media;

identifying a number of the buffer regions available for utilization in the storage media;

invalidating data in the buffer regions according to the number of buffer regions being utilized and the number of the buffer regions available for utilization; and

replacing the data invalidated in the buffer regions of the storage media with other data from the storage array.

4. A method for operating an apparatus, comprising:

receiving different write operations;

accumulating data from the different write operations into a staging buffer;

writing the data in the staging buffer into contiguous block regions within same buffer regions of a storage media;

creating buffer entries identifying physical addresses of the block regions within the buffer regions;

calculating a number of buffer regions used in the storage media;

calculating a number of block regions used within the buffer regions;

combining the data from the block regions of different buffer regions together into a same one of the buffer regions according to the number of buffer regions used in the storage media and the number of block regions used within the buffer regions.

Assignments (1)
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 →