IP Library Granted Patent US 11,403,043
Granted Patent B2
US 11,403,043 · App. 16/653,491 · Granted Aug 2, 2022

Efficient data compression by grouping similar data within a data segment

Inventors: Joern W. Engel (Mountain View, CA); Yuhong Mao (Fremont, CA)
Assignee: Pure Storage, Inc.
G06F3/0661G06F3/064G06F3/0608G06F3/0673G06F12/0253H03M7/30
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 11,403,043
App. No.
16/653,491
Granted
Aug 2, 2022
Kind
B2
Abstract

A plurality of data blocks stored at a plurality of solid-state storage devices are identified. A portion of data is read from each data block of the plurality of data blocks. A corresponding property is determined for each data block of the plurality of data blocks based on reading the portion of the data. A set of data blocks from the plurality of data blocks is identified, wherein each data block of the set of data blocks is associated with a first corresponding property. The set of data blocks is stored at a data segment.

Claims (54)

1. A storage system comprising:

a plurality of solid-state storage devices having erase blocks that are directly mapped; and

a storage controller operatively coupled to the plurality of solid-state storage devices, the storage controller comprising a processing device, the processing device to:

identify a plurality of data blocks stored at one or more solid-state storage devices of the plurality of solid state storage devices;

read a portion of data from each data block of the plurality of data blocks, wherein the portion of data that is read from each data block is less than all of the data block;

determine a corresponding property for each data block of the plurality of data blocks based on reading the portion of the data;

generate a representation of groups of the corresponding property for each data block of the plurality of data blocks;

identify a set of data blocks from the plurality of data blocks based on the representation of groups of the corresponding property for each data block, wherein each data block of the set of data blocks is associated with a first corresponding property; and

store the set of data blocks at a data segment.

2. The storage system of claim 1 , wherein the processing device is further to:

perform a compression operation on the set of data blocks at the data segment.

3. The storage system of claim 1 , wherein the processing device is further to:

initiate a garbage collection process, wherein identifying the plurality of data blocks stored at the one or more solid-state storage devices is in response to initiating the garbage collection process.

4. The storage system of claim 1 , wherein to read the portion of the data from each data block, the processing device is further to:

read a plurality of top bits of data from each data block of the plurality of data blocks.

5. The storage system of claim 1 , wherein the processing device is further to:

generate a histogram for each data block of the plurality of data blocks based on the corresponding property of each data block.

6. The storage system of claim 1 , wherein the corresponding property for each data block of the plurality of data blocks corresponds to a language associated with the data stored at each data block of the plurality of data blocks.

7. The storage system of claim 1 , wherein the processing device is further to:

identify a second set of data blocks from the plurality of data blocks, wherein each data block of the second set of data blocks is associated with a second property, wherein the second set of data blocks are to be stored at a second data segment.

8. A method comprising:

identifying a plurality of data blocks stored at one or more solid-state storage devices having erase blocks that are directly mapped;

reading a portion of data from each data block of the plurality of data blocks, wherein the portion of data that is read from each data block is less than all of the data block;

determining, by a processing device, a corresponding property for each data block of the plurality of data blocks based on reading the portion of the data;

generating a representation of groups of the corresponding property for each data block of the plurality of data blocks;

identifying a set of data blocks from the plurality of data blocks based on the representation of groups of the corresponding property for each data block, wherein each data block of the set of data blocks is associated with a first corresponding property; and

storing the set of data blocks at a data segment.

9. The method of claim 8 , further comprising:

performing a compression operation on the set of data blocks at the data segment.

10. The method of claim 8 , further comprising:

initiating a garbage collection process, wherein identifying the plurality of data blocks stored at the one or more solid-state storage devices is in response to initiating the garbage collection process.

11. The method of claim 8 , wherein reading the portion of the data from each data block further comprises:

reading a plurality of top bits of data from each data block of the plurality of data blocks.

12. The method of claim 8 , further comprising:

generating a histogram for each data block of the plurality of data blocks based on the corresponding property of each data block.

13. The method of claim 8 , wherein the corresponding property for each data block of the plurality of data blocks corresponds to a language associated with the data stored at each data block of the plurality of data blocks.

14. The method of claim 8 , further comprising:

identifying a second set of data blocks from the plurality of data blocks, wherein each data block of the second set of data blocks is associated with a second property, wherein the second set of data blocks are to be stored at a second data segment.

15. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device of a storage controller to:

identify a plurality of data blocks stored at one or more solid-state storage devices having erase blocks that are directly mapped;

read a portion of data from each data block of the plurality of data blocks wherein the portion of data that is read from each data block is less than all of the data block;

determine, by the processing device, a corresponding property for each data block of the plurality of data blocks based on reading the portion of the data;

generate a representation of groups of the corresponding property for each data block of the plurality of data blocks;

identify a set of data blocks from the plurality of data blocks based on the representation of groups of the corresponding property for each data block, wherein each data block of the set of data blocks is associated with a first corresponding property; and

store the set of data blocks at a data segment.

16. The non-transitory computer readable storage medium of claim 15 , wherein the processing device is further to:

perform a compression operation on the set of data blocks at the data segment.

17. The non-transitory computer readable storage medium of claim 15 , wherein the processing device is further to:

initiate a garbage collection process, wherein identifying the plurality of data blocks stored at the one or more solid-state storage devices is in response to initiating the garbage collection process.

18. The non-transitory computer readable storage medium of claim 15 , wherein to read the portion of the data from each data block, the processing device is further to:

read a plurality of top bits of data from each data block of the plurality of data blocks.

19. The non-transitory computer readable storage medium of claim 15 , wherein the processing device is further to:

generate a histogram for each data block of the plurality of data blocks based on the corresponding property of each data block.

20. The non-transitory computer readable storage medium of claim 15 , wherein the corresponding property for each data block of the plurality of data blocks corresponds to a language associated with the data stored at each data block of the plurality of data blocks.

Assignments (3)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2019
From: ENGEL, JOERN W.; MAO, YUHONG
To: PURE STORAGE, INC.
Reel/Frame 050722/0131 →
Cited By (1)
US 12,475,041