IP Library › Granted Patent US 10,169,073
Granted Patent B2
US 10,169,073 · App. 14/975,847 · Granted Jan 1, 2019

Hardware accelerators and methods for stateful compression and decompression operations

Inventors: Tracy G. Drysdale (Paradise Valley, AZ); James D. Guilford (Northborough, MA); Vinodh Gopal (Westborough, MA); Gilbert M. Wolrich (Framingham, MA); James T. Kukunas (Hillsboro, OR)
Assignee: Intel Corporation
G06F9/466G06F9/5061
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,169,073
App. No.
14/975,847
Granted
Jan 1, 2019
Kind
B2
Abstract

Methods and apparatuses relating to stateful compression and decompression operations are described. In one embodiment, hardware processor includes a core to execute a thread and offload at least one of a compression and decompression thread, and a hardware compression and decompression accelerator to execute the at least one of the compression and decompression thread to consume input and generate output data, wherein the hardware compression and decompression accelerator is coupled to a plurality of input buffers to store the input data, a plurality of output buffers to store the output data, an input buffer descriptor array with an entry for each respective input buffer, an input buffer response descriptor array with a corresponding response entry for each respective input buffer, an output buffer descriptor array with an entry for each respective output buffer, and an output buffer response descriptor array with a corresponding response entry for each respective output buffer.

Claims (31)

1. A hardware processor comprising:

a core to execute a thread and offload at least one of a compression thread and a decompression thread; and

a hardware compression and decompression accelerator to execute the at least one of the compression thread and the decompression thread to consume input data and generate output data, wherein the hardware compression and decompression accelerator is coupled to a plurality of input buffers to store the input data, a plurality of output buffers to store the output data, an input buffer descriptor array with an entry for each respective input buffer, an input buffer response descriptor array with a corresponding response entry for each respective input buffer, an output buffer descriptor array with an entry for each respective output buffer, and an output buffer response descriptor array with a corresponding response entry for each respective output buffer.

2. The hardware processor of claim 1 , wherein the hardware compression and decompression accelerator is to compare an index for a last valid input entry of the input buffer descriptor array to an index for a last consumed input response entry of the input buffer response descriptor array and compare an index for a last valid output entry of the output buffer descriptor array to an index for a last consumed output response entry of the output buffer response descriptor array to determine when the at least one of the compression thread and the decompression thread is to execute to consume input data to generate output data.

3. The hardware processor of claim 1 , wherein the core is to allocate the plurality of input buffers, load the plurality of input buffers with the input data, and load the entries in the input buffer descriptor array for each respective input buffer.

4. The hardware processor of claim 3 , wherein the core is to allocate the plurality of output buffers for the output data and load the entries in the output buffer descriptor array for each respective output buffer.

5. The hardware processor of claim 1 , wherein the hardware compression and decompression accelerator is to load the plurality of output buffers with the output data and load the corresponding response entries in the output buffer response descriptor array for each respective output buffer consumed.

6. The hardware processor of claim 5 , wherein the hardware compression and decompression accelerator is to load the corresponding response entries in the input buffer response descriptor array for each respective input buffer consumed.

7. The hardware processor of claim 1 , wherein the entries in the input buffer descriptor array each include a size of the input data stored in the respective input buffer, the corresponding response entries in the input buffer response descriptor array each include a size of the input data remaining in the respective input buffer, the entries in the output buffer descriptor array each include a size of the respective output buffer available to store output data, and the corresponding response entries in the output buffer response descriptor array each include a size of the output data stored in the respective output buffer.

8. The hardware processor of claim 1 , wherein the input data is a stateful stream of data.

9. A method comprising:

receiving at least one of a compression thread and a decompression thread at a hardware processor;

offloading the at least one of the compression thread and the decompression thread to a hardware compression and decompression accelerator; and

executing the at least one of the compression thread and the decompression thread on the hardware compression and decompression accelerator to consume input data and generate output data, wherein the hardware compression and decompression accelerator is coupled to a plurality of input buffers to store the input data, a plurality of output buffers to store the output data, an input buffer descriptor array with an entry for each respective input buffer, an input buffer response descriptor array with a corresponding response entry for each respective input buffer, an output buffer descriptor array with an entry for each respective output buffer, and an output buffer response descriptor array with a corresponding response entry for each respective output buffer.

10. The method of claim 9 , further comprising comparing an index for a last valid input entry of the input buffer descriptor array to an index for a last consumed input response entry of the input buffer response descriptor array and comparing an index for a last valid output entry of the output buffer descriptor array to an index for a last consumed output response entry of the output buffer response descriptor array to determine when the at least one of the compression thread and the decompression thread is to execute to consume input data to generate output data.

11. The method of claim 9 , further comprising allocating the plurality of input buffers, loading the plurality of input buffers with the input data, and loading the entries in the input buffer descriptor array for each respective input buffer.

12. The method of claim 11 , further comprising allocating the plurality of output buffers for the output data and loading the entries in the output buffer descriptor array for each respective output buffer.

13. The method of claim 9 , further comprising loading the plurality of output buffers with the output data and loading the corresponding response entries in the output buffer response descriptor array for each respective output buffer consumed.

14. The method of claim 13 , further comprising loading the corresponding response entries in the input buffer response descriptor array for each respective input buffer consumed.

15. The method of claim 9 , providing the entries in the input buffer descriptor array that each include a size of the input data stored in the respective input buffer, the corresponding response entries in the input buffer response descriptor array that each include a size of the input data remaining in the respective input buffer, the entries in the output buffer descriptor array that each include a size of the respective output buffer available to store output data, and the corresponding response entries in the output buffer response descriptor array that each include a size of the output data stored in the respective output buffer.

16. The method of claim 9 , wherein the input data is a stateful stream of data.

17. A system comprising:

a hardware processor to execute a thread and offload at least one of a compression thread and a decompression thread; and

a hardware compression and decompression accelerator to execute the at least one of the compression thread and the decompression thread to consume input data and generate output data, wherein the hardware compression and decompression accelerator is coupled to a plurality of input buffers to store the input data, a plurality of output buffers to store the output data, an input buffer descriptor array with an entry for each respective input buffer, an input buffer response descriptor array with a corresponding response entry for each respective input buffer, an output buffer descriptor array with an entry for each respective output buffer, and an output buffer response descriptor array with a corresponding response entry for each respective output buffer.

18. The system of claim 17 , wherein the hardware compression and decompression accelerator is to compare an index for a last valid input entry of the input buffer descriptor array to an index for a last consumed input response entry of the input buffer response descriptor array and compare an index for a last valid output entry of the output buffer descriptor array to an index for a last consumed output response entry of the output buffer response descriptor array to determine when the at least one of the compression thread and the decompression thread is to execute to consume input data to generate output data.

19. The system of claim 17 , wherein the hardware processor is to allocate the plurality of input buffers, load the plurality of input buffers with the input data, and load the entries in the input buffer descriptor array for each respective input buffer.

20. The system of claim 19 , wherein the hardware processor is to allocate the plurality of output buffers for the output data and load the entries in the output buffer descriptor array for each respective output buffer.

21. The system of claim 17 , wherein the hardware compression and decompression accelerator is to load the plurality of output buffers with the output data and load the corresponding response entries in the output buffer response descriptor array for each respective output buffer consumed.

22. The system of claim 21 , wherein the hardware compression and decompression accelerator is to load the corresponding response entries in the input buffer response descriptor array for each respective input buffer consumed.

23. The system of claim 17 , wherein the entries in the input buffer descriptor array each include a size of the input data stored in the respective input buffer, the corresponding response entries in the input buffer response descriptor array each include a size of the input data remaining in the respective input buffer, the entries in the output buffer descriptor array each include a size of the respective output buffer available to store output data, and the corresponding response entries in the output buffer response descriptor array each include a size of the output data stored in the respective output buffer.

24. The system of claim 17 , wherein the input data is a stateful stream of data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2018
From: DRYSDALE, TRACY GARRETT; GUILFORD, JAMES D.; GOPAL, VINODH; WOLRICH, GILBERT M.; KUKUNAS, JAMES T.
To: INTEL CORPORATION
Reel/Frame 047224/0234 →
Continuity (1)
Related Publication 20170177404A1 · Jun 22, 2017
Cited By (1)
US 12,254,178