IP Library Granted Patent US 9,954,552
Granted Patent B2
US 9,954,552 · App. 15/473,748 · Granted Apr 24, 2018

Technologies for performing low-latency decompression with tree caching

Inventors: Vinodh Gopal (Westborough, MA); Daniel F. Cutter (Maynard, MA); James D. Guilford (Northborough, MA); Kirk S. Yap (Westborough, MA)
Assignee: Intel Corporation
H03M7/3084G06F12/0893H03M7/40G06F2212/1044G06F2212/401
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 9,954,552
App. No.
15/473,748
Granted
Apr 24, 2018
Kind
B2
Abstract

Technologies for performing low-latency decompression include a managed node to parse, in response to a determination that a read tree descriptor does not match a cached tree descriptor, the read tree descriptor to construct one or more tables indicative of codes in compressed data. Each code corresponds to a different symbol. The managed node is further to decompress the compressed data with the one or more tables and store the one or more tables in association with the read tree descriptor in a cache memory for subsequent use.

Claims (47)

1. A managed node for efficiently decompressing data, the managed node comprising:

a cache memory; and

a data manager to:

parse, in response to a determination that a read tree descriptor does not match a cached tree descriptor, the read tree descriptor to construct one or more tables indicative of codes in compressed data, wherein each code corresponds to a different symbol, and wherein the one or more tables include a literal-length table indicative of codes that correspond to literal symbols and length symbols and a distance table indicative of codes that correspond to distance symbols;

decompress the compressed data with the one or more tables; and

store the literal-length table in association with the read tree descriptor in the cache memory for subsequent use and exclude the distance table from the cache memory.

2. The managed node of claim 1 , wherein the data manager is further to:

obtain the compressed data, wherein the data is compressed with one or more trees indicative of frequencies of the symbols in an uncompressed form of the data;

read a tree descriptor from the compressed data, wherein the tree descriptor is a variable length sequence of values indicative of a structure of the one or more trees; and

determine whether the read tree descriptor matches a cached tree descriptor in the cache memory.

3. The managed node of claim 2 , wherein the data manager is further to:

select, in response to a determination that the read tree descriptor matches a cached tree descriptor, one or more tables stored in the cache memory in association with the cached tree descriptor; and

decompress the compressed data with the selected one or more tables.

4. The managed node of claim 2 , wherein to obtain the compressed data comprises to obtain data compressed with one or more Huffman trees.

5. The managed node of claim 2 , wherein to obtain the compressed data comprises to obtain data in multiple blocks compressed with a literal-length tree indicative of the codes that correspond with the literal symbols and length symbols, and a distance tree indicative of the codes that correspond with the distance symbols.

6. The managed node of claim 2 , wherein the data manager is further to store a tag indicative of the tree descriptor and the one or more constructed tables in the cache memory.

7. The managed node of claim 6 , wherein to the store the tag further comprises to determine whether to evict at least one other tag and one or more associated tables from the cache memory as a function of a capacity of the cache memory.

8. The managed node of claim 6 , wherein to obtain the compressed data comprises to obtain the compressed data in response to receipt of a request that includes one or more hints indicative of whether to retain one or more tags and associated tables in the cache memory; and

wherein to the store the tag further comprises to determine whether to evict at least one other tag and the associated one or more tables from the cache memory as a function of the one or more hints.

9. The managed node of claim 6 , wherein the data manager is further to store time data indicative of the last time the one or more cached tables associated with the tag were used to decompress data.

10. The managed node of claim 1 , wherein the data manager is further to provide the decompressed data to a Lempel-Ziv decompression algorithm.

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

parse, in response to a determination that a read tree descriptor does not match a cached tree descriptor, the read tree descriptor to construct one or more tables indicative of codes in compressed data, wherein each code corresponds to a different symbol, and wherein the one or more tables include a literal-length table indicative of codes that correspond to literal symbols and length symbols and a distance table indicative of codes that correspond to distance symbols;

decompress the compressed data with the one or more tables; and

store the literal-length table in association with the read tree descriptor in a cache memory for subsequent use and exclude the distance table from the cache memory.

12. The one or more non-transitory machine-readable storage media of claim 11 , wherein the plurality of instructions, when executed, further cause the managed node to:

obtain the compressed data, wherein the data is compressed with one or more trees indicative of frequencies of symbols in an uncompressed form of the data;

read a tree descriptor from the compressed data, wherein the tree descriptor is a variable length sequence of values indicative of a structure of the one or more trees; and

determine whether the read tree descriptor matches a cached tree descriptor in the cache memory.

13. The one or more non-transitory machine-readable storage media of claim 12 , wherein the plurality of instructions, when executed, further cause the managed node to:

select, in response to a determination that the read tree descriptor matches a cached tree descriptor, one or more tables stored in the cache memory in association with the cached tree descriptor; and

decompress the compressed data with the selected one or more tables.

14. The one or more non-transitory machine-readable storage media of claim 12 , wherein to obtain the compressed data comprises to obtain data compressed with one or more Huffman trees.

15. The one or more non-transitory machine-readable storage media of claim 12 , wherein to obtain the compressed data comprises to obtain data in multiple blocks compressed with a literal-length tree indicative of the codes that correspond with the literal symbols and length symbols, and a distance tree indicative of the codes that correspond with the distance symbols.

16. The one or more non-transitory machine-readable storage media of claim 12 , wherein the plurality of instructions, when executed, further cause the managed node to store a tag indicative of the tree descriptor and the one or more constructed tables in the cache memory.

17. The one or more non-transitory machine-readable storage media of claim 16 , wherein to the store the tag further comprises to determine whether to evict at least one other tag and one or more associated tables from the cache memory as a function of a capacity of the cache memory.

18. The one or more non-transitory machine-readable storage media of claim 16 , wherein to obtain the compressed data comprises to obtain the compressed data in response to receipt of a request that includes one or more hints indicative of whether to retain one or more tags and associated tables in the cache memory; and

wherein to the store the tag further comprises to determine whether to evict at least one other tag and the associated one or more tables from the cache memory as a function of the one or more hints.

19. The one or more non-transitory machine-readable storage media of claim 16 , wherein the plurality of instructions, when executed, further cause the managed node to store time data indicative of the last time the one or more cached tables associated with the tag were used to decompress data.

20. A method for efficiently decompressing data, the method comprising:

parsing, by a managed node and in response to a determination that a read tree descriptor does not match a cached tree descriptor, the read tree descriptor to construct one or more tables indicative of codes in compressed data, wherein each code corresponds to a different symbol, and wherein the one or more tables include a literal-length table indicative of codes that correspond to literal symbols and length symbols and a distance table indicative of codes that correspond to distance symbols;

decompressing, by the managed node, the compressed data with the one or more tables; and

storing, by the managed node, the literal-length table in association with the read tree descriptor in the cache memory for subsequent use and excluding the distance table from the cache memory.

21. The method of claim 20 , further comprising:

obtaining, by the managed node, the compressed data, wherein the data is compressed with one or more trees indicative of frequencies of symbols in an uncompressed form of the data;

reading, by the managed node, a tree descriptor from the compressed data, wherein the tree descriptor is a variable length sequence of values indicative of a structure of the one or more trees; and

determining, by the managed node, whether the read tree descriptor matches a cached tree descriptor in the cache memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2017
From: GOPAL, VINODH; CUTTER, DANIEL F.; GUILFORD, JAMES D.; YAP, KIRK S.
To: INTEL CORPORATION
Reel/Frame 042164/0957 →
Continuity (4)
Provisional Application 62365969 · Jul 22, 2016
Provisional Application 62376859 · Aug 18, 2016
Provisional Application 62427268 · Nov 29, 2016
Related Publication 20180026651A1 · Jan 25, 2018