IP Library Granted Patent US 9,225,355
Granted Patent B2
US 9,225,355 · App. 14/694,831 · Granted Dec 29, 2015

Boosting decompression in the presence of reoccurring Huffman trees

Inventors: Danny Harnik (Tel Mond, IL); Ety Khaitzin (Holon, IL); Sergey Marenkov (Yehud, IL); Dmitry Sotnikov (Givataim, IL)
Assignee: GlobalFoundries Inc.
H03M7/40G06F11/00H03M7/6005H03M7/6058G11B20/1419H03M7/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 9,225,355
App. No.
14/694,831
Granted
Dec 29, 2015
Kind
B2
Abstract

For boosting decompression in the presence of reoccurring Huffman trees, a previous Huffman tree is used to decompress a new data block if a match is identified between a compacted description of the Huffman tree and a recently used Huffman tree compaction.

Claims (45)

1. A method for boosting decompression in the presence of reoccurring Huffman trees by a processor device in a computing storage environment, the method comprising:

using a previous Huffman tree to decompress a new data block if a match is identified between a compacted description of the Huffman tree and a recently used Huffman tree compaction.

2. The method of claim 1 , further including comparing the compacted description of the Huffman tree to recently used Huffman tree compactions for identifying matches rather than reconstructing a Huffman tree from a header of a compressed block for each data block to avoid overhead of a Huffman tree reconstruction.

3. The method of claim 1 , further including checking the header of the compressed block to determine if the header indicates that the encoding is done with a dynamic Huffman tree.

4. The method of claim 3 , further including performing at least one of:

determining if a previous Huffman tree exists in memory for an Inflate operation prior to reading a compacted description of the previous Huffman tree if the header indicates that the encoding is done with the dynamic Huffman tree, and

comparing the compacted description of the previous Huffman tree to a compacted description in the header of a new data block if the previous Huffman tree exists in the memory for the Inflate operation.

5. The method of claim 1 , further including performing at least one of:

preparing a new Huffman tree according to the header and maintaining a reference of a compacted description of the header of a new data block, and

storing a length of the tree compaction while preparing the new Huffman tree.

6. The method of claim 1 , further including performing at least one of:

decompacting a Huffman tree of a tree compaction, and

comparing the length of the tree compaction with a same number of bits from a designated location in the header of a new data block for ensuring the matching is exact and returning any mismatches for any two non-identical Huffman trees.

7. The method of claim 1 , further including maintaining previous Huffman trees in cache and comparing a compaction of a new Huffman tree in the header to each one of compactions of the previous Huffman trees stored in the cache.

8. The method of claim 7 , further including preparing a data structure for a set of the compactions of the previous Huffman trees stored in the cache, wherein the data structure is used for identifying the matches.

9. A system for boosting decompression in the presence of reoccurring Huffman trees in a computing environment, comprising:

a processor device operable in the computing environment, wherein processor device:

uses a previous Huffman tree to decompress a new data block if a match is identified between a compacted description of the Huffman tree and a recently used Huffman tree compaction.

10. The system of claim 9 , wherein the processor device compares the compacted description of the Huffman tree to recently used Huffman tree compactions for identifying matches rather than reconstructing a Huffman tree from a header of a compressed block for each data block to avoid overhead of a Huffman tree reconstruction.

11. The system of claim 9 , wherein the processor device checks the header of the compressed block to determine if the header indicates that the encoding is done with a dynamic Huffman tree.

12. The system of claim 11 , wherein the processor device performs at least one of:

determining if a previous Huffman tree exists in memory for an Inflate operation prior to reading a compacted description of the previous Huffman tree if the header indicates that the encoding is done with the dynamic Huffman tree, and

comparing the compacted description of the previous Huffman tree to a compacted description in the header of a new data block if the previous Huffman tree exists in the memory for the Inflate operation.

13. The system of claim 9 , wherein the processor device performs at least one of:

preparing a new Huffman tree according to the header and maintaining a reference of a compacted description of the header of a new data block, and

storing a length of the tree compaction while preparing the new Huffman tree.

14. The system of claim 9 , wherein the processor device performs at least one of:

decompacting a Huffman tree of a tree compaction, and

comparing the tree compaction with a given length with a same number of bits from a designated location in the header of a new data block for ensuring the matching is exact,

maintaining previous Huffman trees in cache and comparing a compaction of a new Huffman tree in the header to each one of compactions of the previous Huffman trees stored in the cache, and

prepares a data structure for a set of the compactions of the previous Huffman trees stored in the cache, wherein the data structure is used for identifying the matches.

15. A computer program product for boosting decompression in the presence of reoccurring Huffman trees in a computing environment by a processor device, the computer program product comprising a non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising:

a first executable portion that uses a previous Huffman tree to decompress a new data block if a match is identified between a compacted description of the Huffman tree and a recently used Huffman tree compaction.

16. The computer program product of claim 15 , further including a second executable portion that compares the compacted description of the Huffman tree to recently used Huffman tree compactions for identifying matches rather than reconstructing a Huffman tree from a header of a compressed block for each data block to avoid overhead of a Huffman tree reconstruction.

17. The computer program product of claim 15 , further including a second executable portion that checks the header of the compressed block to determine if the header indicates that the encoding is done with a dynamic Huffman tree.

18. The computer program product of claim 17 , further including a third executable portion that performs at least one of:

decompacting a Huffman tree of a tree compaction, and

comparing the tree compaction with a given length with a same number of bits from a designated location in the header of a new data block for ensuring the matching is exact,

preparing a new Huffman tree according to the header and maintaining a reference of a compacted description of the header of a new data block, and

storing a length of the tree compaction while preparing the new Huffman tree.

19. The computer program product of claim 15 , further including a second executable portion that performs at least one of:

decompacting a Huffman tree for determining a length of a tree compaction, wherein the length of the tree compaction of a previous Huffman tree is stored,

comparing the tree compaction with a given length with a same number of bits from a designated location in the header of a new data block for ensuring the matching is exact, and

maintaining previous Huffman trees in cache and comparing a compaction of a new Huffman tree in the header to each one of compactions of the previous Huffman trees stored in the cache.

20. The computer program product of claim 15 , further including a second executable portion that prepares a data structure for a set of the compactions of the previous Huffman trees stored in the cache, wherein the data structure is used for identifying the matches.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES INC.
Reel/Frame 054636/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2020
From: GLOBALFOUNDRIES INC.
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 054633/0001 →
SECURITY AGREEMENT Recorded Nov 29, 2018
From: GLOBALFOUNDRIES INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049490/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2015
From: GLOBALFOUNDRIES U.S. 2 LLC; GLOBALFOUNDRIES U.S. INC.
To: GLOBALFOUNDRIES INC.
Reel/Frame 036779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: GLOBALFOUNDRIES U.S. 2 LLC
Reel/Frame 036550/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2015
From: HARNIK, DANNY; KHAITZIN, ETY; MARENKOV, SERGEY; SOTNIKOV, DMITRY
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 035496/0254 →
Continuity (2)
Continuation 14059404 · Oct 21, 2013
Related Publication 20150229326A1 · Aug 13, 2015