IP Library Granted Patent US 11,258,459
Granted Patent B2
US 11,258,459 · App. 16/996,012 · Granted Feb 22, 2022

Methods and apparatus to parallelize data decompression

Inventors: Vinodh Gopal (Westborough, MA); James D. Guilford (Northborough, MA); Sudhir K. Satpathy (Hillsboro, OR); Sanu K. Mathew (Hillsboro, OR)
Assignee: INTEL CORPORATION
H03M7/3086H03M7/40H03M7/4037H03M7/6005H03M7/6023
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 11,258,459
App. No.
16/996,012
Granted
Feb 22, 2022
Kind
B2
Abstract

Methods and apparatus to parallelize data decompression are disclosed. An example method selecting initial starting positions in a compressed data bitstream; adjusting a first one of the initial starting positions to determine a first adjusted starting position by decoding the bitstream starting at a training position in the bitstream, the decoding including traversing the bitstream from the training position as though first data located at the training position is a valid token; outputting first decoded data generated by decoding a first segment of the bitstream starting from the first adjusted starting position; and merging the first decoded data with second decoded data generated by decoding a second segment of the bitstream, the decoding of the second segment starting from a second position in the bitstream and being performed in parallel with the decoding of the first segment, and the second segment preceding the first segment in the bitstream.

Claims (50)

1. An apparatus to parallelize data decompression, the apparatus comprising:

memory; and

processor circuitry to execute machine readable instructions to at least:

divide a compressed file into a quantity of segments;

identify a starting location for respective ones of the quantity of segments;

assign separate processing unit circuits to the respective ones of the quantity of segments;

for respective ones of the separate processing unit circuits:

select a speculative token location for a respective one of the quantity of segments;

speculatively decode a first candidate token at the speculative token location;

when the first candidate token is invalid, update the speculative token location based on a first token length value from the invalid first candidate token;

speculatively decode a second candidate token at the updated speculative token location; and

when the second candidate token is valid, extract a plurality of valid token locations corresponding to the respective segment.

2. The apparatus as defined in claim 1 , wherein the separate processing unit circuits include at least one of a processor or a processor core.

3. The apparatus as defined in claim 1 , wherein the respective one of the separate processing unit circuits is to identify a subsequent valid token location based on length information corresponding to the second candidate token.

4. The apparatus as defined in claim 1 , wherein the quantity of segments is based on a quantity of available separate processing unit circuits.

5. The apparatus as defined in claim 1 , wherein respective ones of the quantity of segments include a same length.

6. The apparatus as defined in claim 1 , wherein respective ones of the quantity of segments is non-overlapping.

7. The apparatus as defined in claim 1 , wherein respective ones of the separate processing unit circuitry are to merge decoded data corresponding to the second candidate token, the decoded data corresponding to the compressed file.

8. An apparatus to parallelize data decompression, the apparatus comprising:

segment training circuitry to:

divide a compressed file into a quantity of segments; and

identify a starting location for respective ones of the quantity of segments;

parallelization circuitry to assign separate processing unit circuits to the respective ones of the quantity of segments;

for respective ones of the separate processing unit circuits;

the segment training circuitry to select a speculative token location for a respective one of the quantity of segments;

decoding circuitry to:

speculatively decode a first candidate token at the speculative token location;

when the first candidate token is invalid, the segment training circuitry to update the speculative token location based on a first token length value from the invalid first candidate token, and the decoding circuitry to speculatively decode a second candidate token at the updated speculative token location; and

when the second candidate token is valid, extract a plurality of valid token locations corresponding to the respective segment.

9. The apparatus as defined in claim 8 , wherein the separate processing unit circuits include at least one of a processor or a processor core.

10. The apparatus as defined in claim 8 , wherein the respective one of the separate processing unit circuits is to identify a subsequent valid token location based on length information corresponding to the second candidate token.

11. The apparatus as defined in claim 8 , wherein the quantity of segments is based on a quantity of available separate processing unit circuits.

12. The apparatus as defined in claim 8 , wherein respective ones of the quantity of segments include a same length.

13. The apparatus as defined in claim 8 , wherein respective ones of the quantity of segments is non-overlapping.

14. The apparatus as defined in claim 8 , further including segment merging circuitry to merge decoded data corresponding to the second candidate token for respective ones of the separate processing unit circuitry, the decoded data corresponding to the compressed file.

15. A non-transitory computer readable storage medium comprising instructions that, when executed by at least one processing circuit, cause the at least one processing circuit to at least:

divide a compressed file into a quantity of segments;

identify a starting location for respective ones of the quantity of segments;

assign separate ones of the at least one processing circuit to the respective ones of the quantity of segments;

for the separate ones of the at least one processing circuit:

select a speculative token location for a respective one of the quantity of segments;

speculatively decode a first candidate token at the speculative token location;

when the first candidate token is invalid, update the speculative token location based on a first token length value from the invalid first candidate token;

speculatively decode a second candidate token at the updated speculative token location; and

when the second candidate token is valid, extract a plurality of valid token locations corresponding to the respective segment.

16. The non-transitory computer readable storage medium as defined in claim 15 , wherein the separate ones of the at least one processing circuit includes at least one of a processor core or a processor.

17. The non-transitory computer readable storage medium as defined in claim 15 , wherein the separate ones of the at least one processing circuit are to identify a subsequent valid token location based on length information corresponding to the second candidate token.

18. The non-transitory computer readable storage medium as defined in claim 15 , wherein the quantity of segments is based on a quantity of available separate processing unit circuits.

19. The non-transitory computer readable storage medium as defined in claim 15 , wherein respective ones of the quantity of segments include a same length.

20. The non-transitory computer readable storage medium as defined in claim 15 , wherein respective ones of the quantity of segments is non-overlapping.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2021
From: GOPAL, VINODH; GUILFORD, JAMES D.; SATPATHY, SUDHIR K.; MATHEW, SANU K.
To: INTEL CORPORATION
Reel/Frame 055805/0822 →
Continuity (5)
Continuation 16402845 · May 3, 2019
Continuation 15875836 · Jan 19, 2018
Continuation 15335705 · Oct 27, 2016
Continuation 14850721 · Sep 10, 2015
Related Publication 20210211139A1 · Jul 8, 2021