Parallel Decompression of Executable Files With Cross-Block Dependencies
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing decompression methods for compressed executable files, such as those using Gzip, are serial and inefficient, leading to noticeable delays in launching applications on mobile devices, as they cannot effectively handle data dependencies across multiple blocks.
Innovation Solution
A parallel processing system utilizing multiple processor cores to partially decompress and sequence run length encoded data across multiple blocks, allowing for simultaneous decomposition and reassembly of compressed files, thereby accelerating the decompression process.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If serial decompression is used for compressed executable files, then data integrity is maintained, but decompression time is excessively long causing noticeable delays in application launch
Solution Approach 1:
The compressed file is divided into multiple independent blocks that can be decompressed in parallel. Each block contains self-contained data with local references, allowing simultaneous processing of multiple blocks without data conflicts, thereby reducing overall decompression time while maintaining data integrity
Solution Approach 2:
Reference data from earlier blocks is pre-fetched and stored in a reference buffer before decompression of later blocks begins. This preliminary preparation eliminates waiting time during parallel decompression operations, as all required reference data is already available when needed
2Quantity of substance
If compression algorithms with run length encoding and cross-block references are used, then compression ratio is improved, but parallel decompression becomes impossible due to data dependencies
Solution Approach 1:
The compressed file structure is segmented into blocks with explicit boundary markers. Each block is designed to be as independent as possible, with reference data embedded within or pre-loaded for each block, enabling parallel decompression while preserving the beneficial cross-block reference compression technique
Solution Approach 2:
A reference buffer acts as an intermediary between blocks during parallel decompression. It stores reference data from earlier blocks and makes it available to later blocks that need it, decoupling the data dependencies and enabling simultaneous processing of multiple blocks
3Productivity
If multiple processor cores are used for parallel decompression, then decompression speed is increased, but system complexity increases due to coordination requirements
Solution Approach 1:
The decompression task is segmented into independent block-processing units that can be assigned to different processor cores. Each core processes assigned blocks independently using the same decompression logic, simplifying coordination compared to complex inter-core data sharing while achieving parallel speedup
Solution Approach 2:
The decompression algorithm and reference buffer are copied to each processor core's local memory space. This eliminates the need for complex inter-core communication and synchronization, as each core operates with its own complete decompression environment, reducing system complexity while maintaining parallel processing capability
Data Source
AI summary
Representative embodiments are disclosed for a rapid and highly parallel decompression of compressed executable and other files, such as executable files for operating systems and applications, having compressed blocks including run length encoded (“RLE”) data having data-dependent references. An exemplary embodiment includes a plurality of processors or processor cores to identify a start or end of each compressed block; to partially decompress, in parallel, a selected compressed block into independent data, dependent (RLE) data, and linked dependent (RLE) data; to sequence the independent data, dependent (RLE) data, and linked dependent (RLE) data from a plurality of partial decompressions of a plurality of compressed blocks, to obtain data specified by the dependent (RLE) data and linked dependent (RLE) data, and to insert the obtained data into a corresponding location in an uncompressed file. The representative embodiments are also applicable to other types of data processing for applications having data dependencies.


