Efficient context save/restore during hardware decompression of DEFLATE encoded data

US9374106B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9374106-B2
Application numberUS-201314012382-A
CountryUS
Kind codeB2
Filing dateAug 28, 2013
Priority dateAug 28, 2013
Publication dateJun 21, 2016
Grant dateJun 21, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A hardware accelerator receives a request to decompress a data stream that includes multiple deflate blocks and multiple deflate elements compressed according to block-specific compression configuration information. The hardware accelerator identifies a commit point that is based upon an interruption of a first decompression session of the data stream and corresponds to one of the deflate blocks. As such, the hardware accelerator configures a decompression engine based upon the corresponding deflate block's configuration information and, in turn, recommences decompression of the data stream at an input bit location corresponding to the commit point.

First claim

Opening claim text (preview).

The invention claimed is: 1. A method utilizing an information handling system for resuming decompression of a data stream, the method comprising: receiving a request to decompress a data stream that includes a plurality of deflate blocks, wherein each of the plurality of deflate blocks includes block-specific compression configuration information and a plurality of deflate elements compressed according to the block-specific compression configuration information; identifying a commit point that is based upon an interruption of a first decompression session of the data stream and corresponds to one of the plurality of deflate blocks, wherein the commit point corresponds to a committed deflate element of the plurality of deflate elements included in a corresponding deflate block that was processed during the first decompression session to generate one or more first output bytes, the processing further comprising: inserting one or more of the one or more first output bytes into an output word; determining that one of the inserted one or more output bytes is a final one of the one or more first output bytes; and generating context state data that indicates the commit point corresponds to the committed deflate element; configuring a decompression engine based upon the corresponding deflate block's block-specific compression information; and commencing a second decompression session of the data stream, using the configured decompression engine, at an input bit location corresponding to the commit point. 2. The method of claim 1 , wherein the plurality of deflate blocks is compressed according to a deflate compression algorithm that includes Huffman encoding, and wherein each of the plurality of deflate blocks is selected from a group consisting of a static deflate block, a dynamic deflate block, and a non-compressed block. 3. The method of claim 1 , wherein the configuring of the decompression engine further comprises: loading the one or more first output bytes into the decompression engine as output history bytes; and using the loaded one or more first output bytes during the second decompression session to generate one or more second output bytes corresponding to one or more subsequent deflate elements that are subsequent to the committed deflate element in the data stream. 4. The method of claim 1 , further comprising: determining that the committed deflate element is a last deflate element included in the corresponding deflate block; and including an end of block indicator in the context state data. 5. The method of claim 1 , wherein the data stream corresponds to a first logical partition executing on a host system that interfaces to a hardware accelerator, the method further comprising: decompressing the data stream during the first decompression session on the hardware accelerator; receiving a different request at the hardware accelerator from the host system to decompress a different data stream corresponding to a second logical partition executing on the host system; interrupting the first decompression session at the hardware accelerator in response to the received different request; and decompressing the different data stream prior to commencing the second decompression session of the data stream. 6. An information handling system comprising: one or more processors; a memory coupled to at least one of the processors; and a hardware accelerator coupled to at least one of the processors, wherein the hardware accelerator performs a set of actions comprising: receiving a request to decompress a data stream that includes a plurality of deflate blocks, wherein each of the plurality of deflate blocks includes block-specific compression configuration information and a plurality of deflate elements compressed according to the block-specific compression configuration information; identifying a commit point that is based upon an interruption of a first decompression session of the data stream and corresponds to one of the plurality of deflate blocks, wherein the commit point corresponds to a committed deflate element of the plurality of deflate elements included in a corresponding deflate block that was processed during the first decompression session to generate one or more first output bytes, the processing further comprising: inserting one or more of the one or more first output bytes into an output word; determining that one of the inserted one or more output bytes is a final one of the one or more first output bytes; and generating context state data that indicates the commit point corresponds to the committed deflate element; configuring a decompression engine based upon the corresponding deflate block's block-specific compression information; and commencing a second decompression session of the data stream, using the configured decompression engine, at an input bit location corresponding to the commit point. 7. The information handling system of claim 6 , wherein the plurality of deflate blocks is compressed according to a deflate compression algorithm that includes Huffman encoding, and wherein each of the plurality of deflate blocks is selected from a group consisting of a static deflate block, a dynamic deflate block, and a non-compressed block. 8. The information handling system of claim 6 , wherein the set of actions performed by the hardware accelerator further comprise: loading the one or more first output bytes into the decompression engine as output history bytes; and using the loaded one or more first output bytes during the second decompression session to generate one or more second output bytes corresponding to one or more subsequent deflate elements that are subsequent to the committed deflate element in the data stream. 9. The information handling system of claim 6 , wherein the set of actions performed by the hardware accelerator further comprise: determining that the committed deflate element is a last deflate element included in the corresponding deflate block; and including an end of block indicator in the context state data. 10. The information handling system of claim 6 , wherein the data stream corresponds to a first logical partition executing on the information handling system, the set of actions performed by the hardware accelerator further comprising: decompressing the data stream during the first decompression session; receiving a different request from the information handling system to decompress a different data stream corresponding to a second logical partition executing on the host system; interrupting the first decompression session in response to the received different request; and decompressing the different data stream prior to commencing the second decompression session of the data stream. 11. A computer program product stored in a non-transitory computer readable storage medium, comprising computer program code that, when executed by an information handling system, causes the information handling system to perform actions comprising: receiving a request to decompress a data stream that includes a plurality of deflate blocks, wherein each of the plurality of deflate blocks includes block-specific compression configuration information and a plurality of deflate elements compressed according to the block-specific compression configuration information; identifying a commit point that is based upon an interruption of a first decompression session of the data stream and corresponds to one of the plurality of deflate blocks, wherein the commit point corresponds to a committed deflate element of the plurality of deflate elements included in a corresponding deflate block that was processed during the first decompression sessi

Assignees

Inventors

Classifications

  • H03M7/3086Primary

    employing a sliding window, e.g. LZ77 · CPC title

  • Physics · mapped topic

  • Physics · mapped topic

  • H03M7/40Primary

    Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code · CPC title

  • Data stream processing; Continuous queries · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9374106B2 cover?
A hardware accelerator receives a request to decompress a data stream that includes multiple deflate blocks and multiple deflate elements compressed according to block-specific compression configuration information. The hardware accelerator identifies a commit point that is based upon an interruption of a first decompression session of the data stream and corresponds to one of the deflate block…
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification H03M7/3086. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Jun 21 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).