IP Library Granted Patent US 11,561,797
Granted Patent B2
US 11,561,797 · App. 16/544,594 · Granted Jan 24, 2023

Decompression engine for decompressing compressed input data that includes multiple streams of data

Inventor: Vinay Patel (Stouffville, CA)
Assignee: ATI Technologies ULC
G06F9/3822G06F9/3851H03M7/3059H03M7/4037H03M7/6005
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,561,797
App. No.
16/544,594
Granted
Jan 24, 2023
Kind
B2
Abstract

An electronic device that includes a decompression engine that includes N decoders and a decompressor decompresses compressed input data that includes N streams of data. Upon receiving a command to decompress compressed input data, the decompression engine causes each of the N decoders to decode a respective one of the N streams from the compressed input data separately and substantially in parallel with others of the N decoders. Each decoder outputs a stream of decoded data of a respective type for generating commands associated with a compression standard for decompressing the compressed input data. The decompressor next generates, from the streams of decoded data output by the N decoders, commands for decompressing the data using the compression standard to recreate the original data. The decompressor next executes the commands to recreate the original data and stores the original data in a memory or provides the original data to another entity.

Claims (74)

1. An electronic device for decompressing compressed input data that includes N streams of data, the N streams of data having been generated from original data by compressing the original data using a compression standard to create compressed data, separating the compressed data into N streams, each of the N streams including a respective type of data for generating commands associated with the compression standard for decompressing the compressed input data, and encoding each of the N streams using an encoding standard, the electronic device comprising:

a memory; and

a decompression engine that includes N decoders and a decompressor, the decompression engine being configured to:

receive a command to decompress the compressed input data;

decode, in each of the N decoders, a respective one of the N streams from the compressed input data separately and substantially in parallel with others of the N decoders, each decoder outputting a stream of decoded data of a respective type for generating commands associated with the compression standard for decompressing the compressed input data;

generate, in the decompressor, from the streams of decoded data output by the N decoders, commands for decompressing the compressed input data using the compression standard to recreate the original data;

execute, in the decompressor, the commands to recreate the original data; and

store, in the memory, the original data.

2. The electronic device of claim 1 , wherein decoding the respective one of the N streams in each of one or more of the N decoders includes:

acquiring, from a specified location in the respective one of the N streams, information for generating a decoding reference, the decoding reference including information that is used by that decoder for decoding a respective stream from the compressed input data.

3. The electronic device of claim 1 , wherein at least one of the N decoders includes two or more sub stream decoders and a stream combiner, wherein:

each of the two or more sub stream decoders is configured to:

acquire a separate portion of data from a one of the N streams being decoded by the decoder in which that substream decoder is located;

decode the separate portion of the data separately and substantially in parallel with others of the two or more substream decoders; and

output a decoded data portion associated with the separate portion of the data; and

the stream combiner is configured to:

receive, from each substream decoder, the decoded data portion;

combine the decoded data portions to generate the stream of decoded data; and

output the stream of decoded data.

4. The electronic device of claim 1 , wherein at least one of the N decoders is a secondary decoder in which simplified decoding operations are performed for decoding the respective one of the N streams.

5. The electronic device of claim 1 , wherein the decompressor includes one or more buffers and at least one command assembler, wherein:

each of the one or more buffers stores data from a separate one of the streams of decoded data output by the N decoders; and

the command assembler:

acquires data from the one or more buffers; and

generates, from the data, the commands for decompressing the data.

6. The electronic device of claim 5 , wherein the decompressor includes at least two command assemblers, wherein each command assembler is configured to:

acquire a separate portion of data from the one or more buffers and directly from streams of decoded data output by the N decoders that are not stored in a buffer; and

generate, from the separate portion of the data, commands, so that the at least two command assemblers each generate some of the commands for decompressing the data separately and substantially in parallel.

7. The electronic device of claim 5 , wherein the decompressor includes an operation combiner configured to combine two or more commands into an aggregate command for decompressing the data.

8. The electronic device of claim 1 , wherein the stream of decoded data output by the N decoders includes some or all of: literals, command tags, distances, and lengths.

9. The electronic device of claim 1 , wherein the decompression engine includes a command header decoder, the command header decoder configured to:

determine, by at least one of processing the command and communicating with stream header decoders in some or all of the N decoders, a starting location for each of the N streams in the compressed input data; and

communicate, to each of the N decoders, the starting location of the respective one of the N streams in the compressed input data.

10. The electronic device of claim 1 , wherein, when executing the commands to recreate the original data in the decompressor, the decompressor is configured to:

when data in memory is used for executing a command, prefetch the data from memory;

buffer the command while the data is prefetched from memory; and

execute the command upon the data being returned from memory.

11. The electronic device of claim 1 , wherein:

the decompressor recreates the original data in chunks of a specified size and commands may have dependencies on data in chunks recreated by previous commands; and

the decompressor stores a last M recreated chunks in a history buffer, the recreated chunks in the history buffer being available to be fed back to subsequent commands and the recreated chunks being written from the history buffer to the memory in a first-in-first-out order.

12. The electronic device of claim 1 , wherein the encoding standard is a prefix coding standard and the compression standard is a dictionary coding compression standard.

13. A method for decompressing compressed input data that includes N streams of data in an electronic device that includes a memory and a decompression engine with N decoders and a decompressor, the N streams of data having been generated from original data by compressing the original data using a compression standard to create compressed data, separating the compressed data into N streams, each of the N streams including a respective type of data for generating commands associated with the compression standard for decompressing the compressed input data, and encoding each of the N streams using an encoding standard, the method comprising:

receiving, by the decompression engine, a command to decompress the compressed input data;

decoding, in each of the N decoders, a respective one of the N streams from the compressed input data separately and substantially in parallel with others of the N decoders, each decoder outputting a stream of decoded data of a respective type for generating commands associated with the compression standard for decompressing the compressed input data;

generating, in the decompressor, from the streams of decoded data output by the N decoders, commands for decompressing the compressed input data using the compression standard to recreate the original data;

executing, in the decompressor, the commands to recreate the original data; and

storing, in the memory, the original data.

14. The method of claim 13 , wherein decoding the respective one of the N streams in each of one or more of the N decoders includes:

acquiring, from a specified location in the respective one of the N streams, information for generating a decoding reference, the decoding reference including information that is used by that decoder for decoding a respective stream from the compressed input data.

15. The method of claim 13 , wherein at least one of the N decoders includes two or more sub stream decoders and a stream combiner, and wherein the method further comprises:

acquiring, by each of the two or more sub stream decoders, a separate portion of data from a one of the N streams being decoded by the decoder in which that substream decoder is located;

decoding, by each of the two or more substream decoders, the separate portion of the data separately and substantially in parallel with others of the two or more substream decoders;

outputting, by each of the two or more substream decoders, a decoded data portion associated with the separate portion of the data;

receiving, by the stream combiner, from each of the two or more sub stream decoders, the decoded data portion;

combining, by the stream combiner, the decoded data portions to generate the stream of decoded data; and

outputting, by the stream combiner, the stream of decoded data.

16. The method of claim 13 , wherein at least one of the N decoders is a secondary decoder in which simplified decoding operations are performed for decoding the respective one of the N streams.

17. The method of claim 13 , wherein the decompressor includes one or more buffers and at least one command assembler, wherein the method further comprises:

storing, by each of the one or more buffers, data from a separate one of the streams of decoded data output by the N decoders;

acquiring, by the command assembler, data from the one or more buffers; and

generating, by the command assembler, from the data, the commands for decompressing the data.

18. The method of claim 17 , wherein the decompressor includes an operation combiner and the method further comprises:

combining, by the operation combiner, two or more commands into an aggregate command for decompressing the data.

19. The method of claim 13 , wherein the stream of decoded data output by the N decoders includes some or all of: literals, command tags, distances, and lengths.

20. The method of claim 13 , wherein the decompression engine includes a command header decoder, and the method further comprises:

determining, by the command header decoder, by at least one of processing the command and communicating with stream header decoders in some or all of the N decoders, a starting location for each of the N streams in the compressed input data; and

communicating, by the command header decoder, to each of the N decoders, the starting location of the respective one of the N streams in the compressed input data.

21. The method of claim 13 , wherein executing the commands to recreate the original data in the decompressor comprises:

when data in memory is used for executing a command, prefetching, by the decompressor, the data from memory;

buffering, by the decompressor, the command while the data is prefetched from memory; and

executing, by the decompressor, the command upon the data being returned from memory.

22. The method of claim 13 , wherein the decompressor recreates the original data in chunks of a specified size and commands may have dependencies on data in chunks recreated by previous commands, and the method further comprises:

storing, by the decompressor, a last M recreated chunks in a history buffer, the recreated chunks in the history buffer being available to be fed back to subsequent commands and the recreated chunks being written from the history buffer to the memory in a first-in-first-out order.

23. The method of claim 13 , wherein the encoding standard is a prefix coding standard and the compression standard is a dictionary coding compression standard.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 050092 FRAME 0806. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE NAME IS ATI TECHNOLOGIES ULC. Recorded Sep 9, 2019
From: PATEL, VINAY
To: ATI TECHNOLOGIES ULC
Reel/Frame 050313/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2019
From: PATEL, VINAY
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 050092/0806 →
Continuity (1)
Related Publication 20210055932A1 · Feb 25, 2021
Cited By (3)
US 12,218,697 US 12,417,136 US 12,719,496