IP Library Granted Patent US 10,191,684
Granted Patent B2
US 10,191,684 · App. 15/719,735 · Granted Jan 29, 2019

Technologies for flexibly compressing and decompressing data

Inventors: Vinodh Gopal (Westborough, MA); James D. Guilford (Northborough, MA); Kirk S. Yap (Westborough, MA); Daniel F. Cutter (Maynard, MA); Wajdi K. Feghali (Boston, MA)
Assignee: Intel Corporation
G06F3/0641G06F3/0604G06F3/065G06F3/067G06F3/0608G06F3/0611G06F3/0613G06F3/0617G06F3/0647G06F3/0653G06F7/06G06F8/65G06F8/654G06F8/656G06F8/658G06F9/3851G06F9/3891G06F9/4401G06F9/4881G06F9/505G06F9/5038G06F9/544G06F11/079G06F11/0709G06F11/0751G06F11/3006G06F11/3034G06F11/3055G06F11/3409G06F12/0284G06F12/0692G06F13/1652G06F17/30153G06F21/57G06F21/6218G06F21/73G06F21/76G06T1/20G06T1/60G06T9/005H01R13/4538H01R13/631H03K19/1731H03M7/3084H03M7/40H03M7/42H03M7/60H03M7/6011H03M7/6017H03M7/6029H04L9/0822H04L12/2881H04L12/4633H04L41/044H04L43/04H04L43/06H04L43/08H04L43/0894H04L47/20H04L47/2441H04L49/104H04L61/2007H04L67/1014H04L67/327H04L67/36H05K7/1452H05K7/1487G06F11/1453G06F12/023G06F15/80G06F2212/401G06F2212/402G06F2221/2107H04L41/046H04L41/0896H04L41/142H04L63/1425
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,191,684
App. No.
15/719,735
Granted
Jan 29, 2019
Kind
B2
Abstract

Technologies for flexibly compressing data include a computing device having an accelerator complex that is to receive a compression job request and schedule the compression job request for one or more hardware compression resources of the accelerator complex. The accelerator complex is further to perform the compression job request with the one or more hardware compression resources in response to scheduling the compression job request and to communicate uncompressed data and compressed data with an I/O subsystem of the computing device in response to performing the compression job request. Other embodiments are described and claimed.

Claims (72)

1. A computing device for flexibly compressing data, the computing device comprising:

one or more processors; and

an accelerator complex including digital logic resources to:

receive a compression job request from the one or more processors;

schedule the compression job request for one or more hardware compression resources of the accelerator complex;

perform the compression job request with the one or more hardware compression resources in response to scheduling of the compression job request; and

communicate uncompressed data and compressed data with an I/O subsystem of the computing device in response to performance of the compression job request.

2. The computing device of claim 1 , wherein:

the compression job request comprises a compress request to compress the uncompressed data,

the one or more hardware compression resources comprises a compress/decompress/verify engine,

to perform the compression job request comprises to compress the uncompressed data to generate the compressed data with the compress/decompress/verify engine, and

to communicate the uncompressed data and the compressed data comprises to input the uncompressed data and to output the compressed data.

3. The computing device of claim 2 , wherein to schedule the compression job request comprises to (i) determine whether a compression level of the compression job request is flexible, and (ii) adjust, in response to a determination that the compression level of the compression job request is flexible, the compression level based on I/O bandwidth availability.

4. The computing device of claim 3 , wherein to determine whether the compression level of the compression job request is flexible comprises to determine whether a requester specified that a compression level of the compression job request is flexible.

5. The computing device of claim 3 , wherein to schedule the compression job request further comprises to adjust, in response to a determination that the compression level of the compression job request is flexible, the compression level based on an estimated time to compute the compression job request.

6. The computing device of claim 2 , wherein to schedule the compression job request comprises to (i) determine whether one or more compression levels of compression job requests pending in a queue of the I/O subsystem are flexible, and (ii) adjust, in response to a determination that the one or more compression levels of the compression job requests are flexible, the one or more compression levels based on I/O bandwidth availability and on an estimated time to compute the compression job requests pending in the queue.

7. The computing device of claim 1 , wherein:

the compression job request comprises a compress-verify request to compress the uncompressed data to generate compressed data and verify the compressed data,

the one or more hardware compression resources comprises a compress/decompress/verify engine,

to perform the compression job request comprises to (i) compress the uncompressed data to generate the compressed data and (ii) verify the compressed data against the uncompressed data, and

to communicate the uncompressed data and the compressed data comprises to input the uncompressed data and to output the compressed data.

8. The computing device of claim 7 , wherein to compress the uncompressed data comprises to compress the uncompressed data to generate the compressed data with the compress/decompress/verify engine; and to verify the compressed data comprises to verify the compressed data with the compress/decompress/verify engine.

9. The computing device of claim 8 , wherein to verify the compressed data with the compress/decompress/verify engine comprises to (i) disable a compression function of the compress/decompress/verify engine and (ii) decompress the compressed data with the compress/decompress/verify engine.

10. The computing device of claim 1 , wherein:

the compression job request comprises a decompress request to decompress the compressed data,

to perform the compression job request comprises to decompress the compressed data to generate the uncompressed data, and

to communicate the uncompressed data and the compressed data comprises to input the compressed data and to output the uncompressed data.

11. The computing device of claim 10 , wherein the one or more hardware compression resources comprises a decompress engine, and to decompress the compressed data comprises to decompress the compressed data with the decompress engine.

12. The computing device of claim 10 , wherein the one or more hardware compression resources comprises a compress/decompress/verify engine, and to decompress the compressed data comprises to decompress the compressed data with the compress/decompress/verify engine and disable a compression function of the compress/decompress/verify engine.

13. One or more non-transitory, machine-readable storage media comprising a plurality of instructions stored thereon that, when executed by a compute device cause the compute device to:

receive a compression job request;

schedule the compression job request for one or more hardware compression resources of an accelerator complex;

perform the compression job request with the one or more hardware compression resources in response to scheduling of the compression job request; and

communicate uncompressed data and compressed data with an I/O subsystem of the computing device in response to performance of the compression job request.

14. The one or more non-transitory, machine-readable storage media of claim 13 , wherein:

the compression job request comprises a compress request to compress the uncompressed data,

the one or more hardware compression resources comprises a compress/decompress/verify engine,

to perform the compression job request comprises to compress the uncompressed data to generate the compressed data with the compress/decompress/verify engine, and

to communicate the uncompressed data and the compressed data comprises to input the uncompressed data and to output the compressed data.

15. The one or more non-transitory, machine-readable storage media of claim 14 , wherein to schedule the compression job request comprises to (i) determine whether a compression level of the compression job request is flexible, and (ii) adjust, in response to a determination that the compression level of the compression job request is flexible, the compression level based on I/O bandwidth availability.

16. The one or more non-transitory, machine-readable storage media of claim 13 , wherein:

the compression job request comprises a compress-verify request to compress the uncompressed data to generate compressed data and verify the compressed data,

the one or more hardware compression resources comprises a compress/decompress/verify engine,

to perform the compression job request comprises to (i) compress the uncompressed data to generate the compressed data and (ii) verify the compressed data against the uncompressed data, and

to communicate the uncompressed data and the compressed data comprises to input the uncompressed data and to output the compressed data.

17. The one or more non-transitory, machine-readable storage media of claim 13 , wherein:

the compression job request comprises a decompress request to decompress the compressed data,

to perform the compression job request comprises to decompress the compressed data to generate the uncompressed data, and

to communicate the uncompressed data and the compressed data comprises to input the compressed data and to output the uncompressed data.

18. An accelerator complex for flexibly compressing data, the accelerator complex comprising digital logic resources to:

receive a compression job request from a processor of a computing device;

schedule the compression job request for one or more hardware compression resources of the accelerator complex;

perform the compression job request with the one or more hardware compression resources in response to scheduling of the compression job request; and

communicate uncompressed data and compressed data with an I/O subsystem of the computing device in response to performance of the compression job request.

19. The accelerator complex of claim 18 , wherein:

the compression job request comprises a compress request to compress the uncompressed data,

the one or more hardware compression resources comprises a compress/decompress/verify engine,

to perform the compression job request comprises to compress the uncompressed data to generate the compressed data with the compress/decompress/verify engine, and

to communicate the uncompressed data and the compressed data comprises to input the uncompressed data and to output the compressed data.

20. The accelerator complex of claim 18 , wherein:

the compression job request comprises a compress-verify request to compress the uncompressed data to generate compressed data and verify the compressed data,

the one or more hardware compression resources comprises a compress/decompress/verify engine,

to perform the compression job request comprises to (i) compress the uncompressed data to generate the compressed data and (ii) verify the compressed data against the uncompressed data, and

to communicate the uncompressed data and the compressed data comprises to input the uncompressed data and to output the compressed data.

21. The accelerator complex of claim 20 , wherein to compress the uncompressed data comprises to compress the uncompressed data to generate the compressed data with the compress/decompress/verify engine; and to verify the compressed data comprises to verify the compressed data with the compress/decompress/verify engine.

22. The accelerator complex of claim 21 , wherein to verify the compressed data with the compress/decompress/verify engine comprises to (i) disable a compression function of the compress/decompress/verify engine and (ii) decompress the compressed data with the compress/decompress/verify engine.

23. The accelerator complex of claim 18 , wherein:

the compression job request comprises a decompress request to decompress the compressed data,

to perform the compression job request comprises to decompress the compressed data to generate the uncompressed data, and

to communicate the uncompressed data and the compressed data comprises to input the compressed data and to output the uncompressed data.

24. The accelerator complex of claim 23 , wherein the one or more hardware compression resources comprises a decompress engine, and to decompress the compressed data comprises to decompress the compressed data with the decompress engine.

25. The accelerator complex of claim 23 , wherein the one or more hardware compression resources comprises a compress/decompress/verify engine, and to decompress the compressed data comprises to decompress the compressed data with the compress/decompress/verify engine and disable a compression function of the compress/decompress/verify engine.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2017
From: GOPAL, VINODH; GUILFORD, JAMES D.; YAP, KIRK S.; CUTTER, DANIEL F.; FEGHALI, WAJDI K.
To: INTEL CORPORATION
Reel/Frame 044166/0354 →
Priority Claims (1)
IN 201741030632 · Aug 30, 2017 · national
Continuity (2)
Provisional Application 62427268 · Nov 29, 2016
Related Publication 20180152201A1 · May 31, 2018
Cited By (5)
US 12,261,940 US 12,282,760 US 12,288,101 US 12,506,817 US 12,619,465