IP Library › Granted Patent US 10,635,338
Granted Patent B2
US 10,635,338 · App. 15/720,162 · Granted Apr 28, 2020

Technologies for a high-ratio compression accelerator with heterogeneous history buffers

Inventors: Vinodh Gopal (Westborough, MA); James D. Guilford (Northborough, 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/5005G06F9/5038G06F9/544G06F11/079G06F11/0709G06F11/0751G06F11/3006G06F11/3034G06F11/3055G06F11/3079G06F11/3409G06F12/0284G06F12/0692G06F13/1652G06F16/1744G06F21/57G06F21/6218G06F21/73G06F21/76G06T1/20G06T1/60G06T9/005H01R13/4538H01R13/631H03K19/1731H03M7/3084H03M7/40H03M7/42H03M7/60H03M7/6011H03M7/6017H03M7/6029H04L9/0822H04L12/2881H04L12/4633H04L41/044H04L41/0816H04L41/0853H04L41/12H04L43/04H04L43/06H04L43/08H04L43/0894H04L47/20H04L47/2441H04L49/104H04L61/2007H04L67/10H04L67/1014H04L67/327H04L67/36H05K7/1452H05K7/1487G06F11/1453G06F12/023G06F15/80G06F2212/401G06F2212/402G06F2221/2107H04L41/046H04L41/0896H04L41/142H04L47/78H04L63/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,635,338
App. No.
15/720,162
Granted
Apr 28, 2020
Kind
B2
Abstract

Technologies for high-ratio compression with heterogeneous history buffers include a computing device having an accelerator complex with a large history buffer and a small history buffer. The large history buffer has a larger size than the small history buffer. For example, the small history buffer may be 32 kilobytes and the large history buffer may be 64 kilobytes, 1 megabyte, or larger. The large history buffer is coupled to a large-buffer compare core that searches for matches in the large history buffer, finds a best match, and forwards the best match to a small-buffer compare core. The small-buffer compare core searches the small history buffer for matches, receives the match forwarded from the large-buffer compare core, and determines a best match from the matches in the small history buffer and the forwarded match. Other embodiments are described and claimed.

Claims (56)

1. A computing device for data compression, the computing device comprising:

a first history buffer coupled to a first compare core, wherein the first history buffer has a first size; and

a second history buffer coupled to a second compare core, wherein the second history buffer has a second size that is less than the first size;

wherein the first compare core is to (i) search for a first match in the first history buffer, wherein the first match comprises a length and a backward distance, (ii) output the first match, and (iii) forward the first match to the second compare core, wherein to forward the first match comprises to reduce the length of the first match by an offset between a current input position of the first compare core and a current input position of the second compare core; and

wherein the second compare core is to (i) search for a second match in the second history buffer, wherein the second match comprises a length and a backward distance, (ii) select a best match from the first match and the second match, wherein the best match has a largest length of the first match and the second match, and (iii) output the best match.

2. The computing device of claim 1 , wherein:

the length and the backward distance of the first match identify a string in the first history buffer that matches a string of an uncompressed input data starting at the current input position of the first compare core; and

the length and the backward distance of the second match identify a string in the second history buffer that matches a string of the uncompressed input data starting at the current position of the second compare core.

3. The computing device of claim 1 , wherein the second size comprises a compression algorithm history window size.

4. The computing device of claim 3 , wherein the compression algorithm history window size comprises a DEFLATE algorithm history window size.

5. The computing device of claim 3 , wherein the second size comprises 32 kilobytes.

6. The computing device of claim 1 , wherein the first size comprises a compression algorithm history window size.

7. The computing device of claim 6 , wherein the compression algorithm history window size comprises a DEFLATE algorithm history window size.

8. The computing device of claim 6 , wherein the first size comprises 32 kilobytes.

9. The computing device of claim 1 , wherein the first size comprises 1 megabyte and the second size comprises 32 kilobytes.

10. The computing device of claim 1 , wherein:

the first compare core is further to (i) search for a plurality of matches in the first history buffer, wherein to search for the plurality of matches comprises to search for the first match, and (ii) select a best match from the plurality of matches, wherein the first match comprises the best match;

wherein to forward the first match to the second compare core comprises to forward the best match in response to selecting the best match.

11. The computing device of claim 1 , further comprising:

a plurality of compare cores, wherein each of the plurality of compare cores is coupled to a history buffer with a size that is less than the first size, and wherein the plurality of compare cores comprises the second compare core;

wherein the first compare core is further to forward the first match to the plurality of compare cores.

12. The computing device of claim 1 , further comprising a third compare core coupled to the first history buffer, wherein the third compare core is to (i) search for a third match in the first history buffer, and (ii) output the third match.

13. The computing device of claim 1 , further comprising a merge/coalesce logic to merge the first match output by the first compare core and the best match output by the second compare core to generate compressed output data.

14. A method for data compression, the method comprising:

searching, by a first compare core of a computing device, for a first match in a first history buffer, wherein the first history buffer has a first size, and wherein the first match comprises a length and a backward distance;

outputting, by the first compare core, the first match;

forwarding, by the first compare core, the first match to a second compare core of the computing device, wherein forwarding the first match comprises reducing the length of the first match by an offset between a current input position of the first compare core and a current input position of the second compare core;

searching, by the second compare core, for a second match in a second history buffer, wherein the second history buffer has a second size that is less than the first size, and wherein the second match comprises a length and a backward distance;

selecting, by the second compare core, a best match from the first match and the second match, wherein the best match has a largest length of the first match and the second match; and

outputting, by the second compare core, the best match.

15. The method of claim 14 , wherein:

the length and the backward distance of the first match identify a string in the first history buffer that matches a string of an uncompressed input data starting at the current input position of the first compare core; and

the length and the backward distance of the second match identify a string in the second history buffer that matches a string of the uncompressed input data starting at the current position of the second compare core.

16. The method of claim 14 , wherein the second size comprises a compression algorithm history window size.

17. The method of claim 14 , wherein the first size comprises a compression algorithm history window size.

18. The method of claim 14 , further comprising:

searching, by the first compare core, for a plurality of matches in the first history buffer, wherein searching for the plurality of matches comprises searching for the first match; and

selecting, by the first compare core, a best match from the plurality of matches, wherein the first match comprises the best match;

wherein forwarding the first match to the second compare core comprises forwarding the best match in response to selecting the best match.

19. The method of claim 14 , further comprising forwarding, by the first compare core, the first match to a plurality of compare cores of the computing device, wherein forwarding the first match to the plurality of compare cores comprises forwarding the first match to the second compare core, and wherein each of the plurality of compare cores searches a history buffer with a size that is less than the first size.

20. An accelerator complex for data compression, the accelerator complex comprising:

a first history buffer coupled to a first compare core, wherein the first history buffer has a first size; and

a second history buffer coupled to a second compare core, wherein the second history buffer has a second size that is less than the first size;

wherein the first compare core is to (i) search for a first match in the first history buffer, wherein the first match comprises a length and a backward distance, (ii) output the first match, and (iii) forward the first match to the second compare core, wherein to forward the first match comprises to reduce the length of the first match by an offset between a current input position of the first compare core and a current input position of the second compare core; and

wherein the second compare core is to (i) search for a second match in the second history buffer, wherein the second match comprises a length and a backward distance, (ii) select a best match from the first match and the second match, wherein the best match has a largest length of the first match and the second match, and (iii) output the best match.

21. The accelerator complex of claim 20 , further comprising an input buffer, wherein:

the length and the backward distance of the first match identify a string in the first history buffer that matches a string of in the input buffer starting at the current input position of the first compare core; and

the length and the backward distance of the second match identify a string in the second history buffer that matches a string in the input buffer starting at the current position of the second compare core.

22. The accelerator complex of claim 20 , wherein the second size comprises a compression algorithm history window size.

23. The accelerator complex of claim 20 , wherein the first size comprises a compression algorithm history window size.

24. The accelerator complex of claim 20 , wherein:

the first compare core is further to (i) search for a plurality of matches in the first history buffer, wherein to search for the plurality of matches comprises to search for the first match, and (ii) select a best match from the plurality of matches, wherein the first match comprises the best match;

wherein to forward the first match to the second compare core comprises to forward the best match in response to selecting the best match.

25. The accelerator complex of claim 20 , further comprising:

a plurality of compare cores, wherein each of the plurality of compare cores is coupled to a history buffer with a size that is less than the first size, and wherein the plurality of compare cores comprises the second compare core;

wherein the first compare core is further to forward the first match to the plurality of compare cores.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2017
From: GOPAL, VINODH; GUILFORD, JAMES D.
To: INTEL CORPORATION
Reel/Frame 044117/0596 →
Priority Claims (1)
IN 201741030632 · Aug 30, 2017 · national
Continuity (2)
Provisional Application 62427268 · Nov 29, 2016
Related Publication 20180152202A1 · May 31, 2018