IP Library Granted Patent US 10,691,529
Granted Patent B2
US 10,691,529 · App. 16/013,710 · Granted Jun 23, 2020

Supporting random access of compressed data

Inventors: Vinodh Gopal (Westborough, MA); James Guilford (Northborough, MA); Daniel Cutter (Maynard, MA); Kirk Yap (Westborough, MA)
Assignee: INTEL CORPORATION
G06F11/1004H03M7/3086H03M7/40
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,691,529
App. No.
16/013,710
Granted
Jun 23, 2020
Kind
B2
Abstract

A processing device comprising compression circuitry to: determine a compression configuration to compress source data; generate a checksum of the source data in an uncompressed state; compress the source data into at least one block based on the compression configuration, wherein the at least one block comprises: a plurality of sub-blocks, wherein the plurality of sub-block includes a predetermined size; a block header corresponding to the plurality of sub-blocks; and decompression circuitry coupled to the compression circuitry, wherein the decompression circuitry to: while not outputting a decompressed data stream of the source data: generate index information corresponding to the plurality of sub-blocks; in response to generating the index information, generate a checksum of the compressed source data associated with the plurality of sub-blocks; and determine whether the checksum of the source data in the uncompressed format matches the checksum of the compressed source data.

Claims (70)

1. A processing device comprising:

compression circuitry to:

determine a compression configuration to compress source data;

generate a checksum of the source data in an uncompressed state; and

compress the source data into at least one block based on the compression configuration to generate compressed source data, wherein the at least one block comprises:

a plurality of sub-blocks, wherein each sub-block of the plurality of sub-blocks is to include a corresponding predetermined amount of data; and

a block header corresponding to the plurality of sub-blocks; and

decompression circuitry coupled to the compression circuitry, wherein the decompression circuitry is to:

while not outputting a decompressed data stream of the source data:

generate index information corresponding to the plurality of sub-blocks;

in response to generating the index information, generate a checksum of the compressed source data associated with the plurality of sub-blocks; and

determine whether the checksum of the source data in the uncompressed state matches the checksum of the compressed source data.

2. The processing device of claim 1 , wherein the decompression circuitry is further to:

in response to determining that the checksum of the source data in the uncompressed state matches the checksum of the compressed source data, verify that the source data was properly compressed.

3. The processing device of claim 1 , wherein the decompression circuitry is further to:

in response to determining that the checksum of the source data in the uncompressed state does not match the checksum of the compressed source data, verify that the source data was not properly compressed.

4. The processing device of claim 1 , wherein the decompression circuitry is further to:

determine whether the source data was compressed into the at least one block based on the compression configuration.

5. The processing device of claim 1 , wherein the at least one block is a Deflate block.

6. The processing device of claim 1 , wherein the index information comprises bit offset of each of the plurality of sub-blocks.

7. The processing device of claim 1 , wherein the decompression circuitry is further to:

generate a cumulative checksum of the compressed source data at a bit offset of each of the plurality of sub-blocks.

8. The processing device of claim 1 , wherein a sub-block of the plurality of sub-blocks comprises history information for decompressing all data in the sub-block, the history information not including information for other sub-blocks of the plurality of sub-blocks.

9. The processing device of claim 1 , wherein the decompression circuitry is further to:

provide for random access of a single sub-block of the plurality of sub-blocks by receiving a request for the single sub-block and decompressing the requested single sub-block while not decompressing other sub-blocks of the plurality of sub-blocks.

10. A processing system comprising:

a core;

memory coupled to the core;

compression circuitry coupled to the core and the memory, the compression circuitry to:

determine a compression configuration to compress source data;

generate a checksum of the source data in an uncompressed state; and

compress the source data into at least one block based on the compression configuration to generate compressed source data, wherein the at least one block comprises:

a plurality of sub-blocks, wherein each sub-block of the plurality of sub-blocks is to include a corresponding predetermined amount of data; and

a block header corresponding to the plurality of sub-blocks; and

decompression circuitry coupled to the compression circuitry, the core and the memory, wherein the decompression circuitry is to:

while not outputting a decompressed data stream of the source data:

generate index information corresponding to the plurality of sub-blocks;

in response to generating the index information, generate a checksum of the compressed source data associated with the plurality of sub-blocks; and

determine whether the checksum of the source data in the uncompressed state matches the checksum of the compressed source data.

11. The processing system of claim 10 , wherein the decompression circuitry is further to:

in response to determining that the checksum of the source data in the uncompressed state matches the checksum of the compressed source data, verify that the source data was properly compressed.

12. The processing system of claim 10 , wherein the decompression circuitry is further to:

in response to determining that the checksum of the source data in the uncompressed state does not match the checksum of the compressed source data, verify that the source data was not properly compressed.

13. The processing system of claim 10 , wherein the decompression circuitry is further to:

determine whether the source data was compressed into the at least one block based on the compression configuration.

14. The processing system of claim 10 , wherein the at least one block is a Deflate block.

15. The processing system of claim 10 , wherein the index information comprises bit offset of each of the plurality of sub-blocks.

16. The processing system of claim 10 , wherein the decompression circuitry is further to:

generate a cumulative checksum of the compressed source data at a bit offset of each of the plurality of sub-blocks.

17. The processing system of claim 10 , wherein a sub-block of the plurality of sub-blocks comprises history information for decompressing all data in the sub-block, the history information not including information for other sub-blocks of the plurality of sub-blocks.

18. The processing system of claim 10 , wherein the decompression circuitry is further to:

provide for random access of a single sub-block of the plurality of sub-blocks by receiving a request for the single sub-block and decompressing the requested single sub-block while not decompressing other sub-blocks of the plurality of sub-blocks.

19. A method comprising:

determining a compression configuration to compress source data;

generating a checksum of the source data in an uncompressed state;

compressing the source data into at least one block based on the compression configuration to generate compressed source data, wherein the at least one block comprises:

a plurality of sub-blocks, wherein each sub-block of the plurality of sub-blocks is to include a corresponding predetermined amount of data; and

a block header corresponding to the plurality of sub-blocks; and

while not outputting a decompressed data stream of the source data:

generating index information corresponding to the plurality of sub-blocks;

in response to generating the index information, generating a checksum of the compressed source data associated with the plurality of sub-blocks; and

determining whether the checksum of the source data in the uncompressed state matches the checksum of the compressed source data.

20. The method of claim 19 , further comprising:

in response to determining that the checksum of the source data in the uncompressed state matches the checksum of the compressed source data, verifying that the source data was properly compressed.

21. The method of claim 19 , further comprising:

determining whether the source data was compressed into the at least one block based on the compression configuration.

22. The method of claim 19 , further comprising:

generating a cumulative checksum of the compressed source data at a bit offset of each of the plurality of sub-blocks.

23. The method of claim 19 , further comprising:

providing for random access of a single sub-block of the plurality of sub-blocks by receiving a request for the single sub-block and decompressing the requested single sub-block while not decompressing other sub-blocks of the plurality of sub-blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2018
From: GOPAL, VINODH; GUILFORD, JAMES; CUTTER, DANIEL; YAP, KIRK
To: INTEL CORPORATION
Reel/Frame 046151/0072 →
Continuity (1)
Related Publication 20190391869A1 · Dec 26, 2019
Cited By (1)
US 12,591,364