IP Library Granted Patent US 11,669,526
Granted Patent B2
US 11,669,526 · App. 17/467,231 · Granted Jun 6, 2023

Parallel processing of data having data dependencies for accelerating the launch and performance of operating systems and other computing applications

Inventors: Paul L. Master (Sunnyvale, CA); Frederick Curtis Furtek (Menlo Park, CA); Kim Knuttila (Port Moody, CA); L. Brian McGann (Santa Clara, CA)
Assignee: Cornami, Inc.
G06F16/24561G06F3/0608G06F3/0643G06F3/0679H03M7/3062H03M7/40H03M7/4093H03M7/42H03M7/46H03M7/60H03M7/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,669,526
App. No.
17/467,231
Granted
Jun 6, 2023
Kind
B2
Abstract

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.

Claims (41)

1. An apparatus for parallel decompression of a first compressed file, the first compressed file comprising a plurality of compressed blocks having independent data and dependent, run length encoded (“RLE”) data having data-dependent references spanning one or more compressed blocks of the plurality of compressed blocks, the apparatus comprising:

one or more processors or processor cores configured to identify a start or an end of a selected compressed block of the plurality of compressed blocks;

the one or more processors or processor cores further configured to partially decompress the selected compressed block, of the plurality of compressed blocks, into the independent data, the dependent RLE data, and any linked dependent RLE data; and

the one or more processors or processor cores further configured to sequence the independent data, the dependent RLE data, and any linked dependent RLE data from a plurality of partial decompressions of the plurality of compressed blocks to obtain data specified by the dependent RLE data and any linked dependent RLE data, and to insert the obtained data into an uncompressed data file.

2. The apparatus of claim 1 , wherein the one or more processors or processor cores are further configured to partially decompress multiple compressed blocks, of the plurality of compressed blocks, in parallel, into the independent data, the dependent RLE data, and any linked dependent RLE data.

3. The apparatus of claim 1 , wherein a first processor or processor core of the one or more processors or processor cores, following the identification of the start or the end of each compressed block of the plurality of compressed blocks, is further configured to transfer a single or individuated compressed block to a second processor or processor core of the one or more processors or processor cores.

4. The apparatus of claim 1 , wherein the one or more processors or processor cores comprise a plurality of processors or processor cores, the plurality of processors or processor cores operative in a plurality of pipelined stages.

5. The apparatus of claim 1 , wherein the one or more processors or processor cores comprise a plurality of processors or processor cores, the plurality of processors or processor cores further configured to identify the start or the end of one or more compressed blocks of the plurality of compressed blocks, in parallel.

6. The apparatus of claim 4 , further comprising:

a memory circuit coupled to the plurality of processors or processor cores;

wherein a group of processors or processor cores of the plurality of processors or processor cores are arranged as a first pipelined stage, of the plurality of pipelined stages, and are further configured to identify the start or the end of a selected compressed block of the plurality of compressed blocks by performing a partial decompression of the selected compressed block, each processor or processor core of the group of processors or processor cores of the first pipelined stage commencing the partial decompression at a starting point in the selected compressed block having a predetermined or variable offset from one or more partial decompression starting points of other processors or processor cores of the first pipelined stage; and

wherein at least one of the processors or processor cores of the first pipelined stage is further configured to create and store, in the memory circuit, metadata indicating the start or the end of each compressed block of the plurality of compressed blocks.

7. The apparatus of claim 1 , wherein the one or more processors or processor cores are further configured to perform a cyclic redundancy check of the uncompressed data file.

8. The apparatus of claim 1 , further comprising:

a memory circuit coupled to the one or more processors or processor cores;

wherein at least one processor or processor core, of the one or more processors or processor cores, is further configured to compress the uncompressed data file to form a second compressed file having a plurality of second compressed blocks which have data dependencies solely within individual second compressed blocks of the plurality of second compressed blocks and to store the second compressed file in the memory circuit.

9. The apparatus of claim 1 , wherein at least one processor or processor core, of the one or more processors or processor cores, is further configured, when linked dependent RLE data are in the plurality of compressed blocks, to tag or identify the linked dependent RLE data; and wherein at least one processor or processor core, of the one or more processors or processor cores, is further configured to use the tag or identification of the linked dependent RLE data to sequence the obtaining of the data specified by the linked dependent RLE data subsequent to the obtaining of the data specified by the dependent RLE data.

10. The apparatus of claim 1 , further comprising:

a memory circuit configured to store metadata indicating the start or the end of each compressed block of the plurality of compressed blocks.

11. The apparatus of claim 10 , wherein the one or more processors or processor cores are further configured to utilize the stored metadata to identify the start or the end of the selected compressed block of the plurality of compressed blocks.

12. A processor-implemented method for parallel decompression of a first compressed file, the first compressed file comprising a plurality of compressed blocks having independent data and dependent, run length encoded (“RLE”) data having data-dependent references spanning one or more compressed blocks of the plurality of compressed blocks, the method comprising:

using one or more processors or processor cores, identifying a start or an end of each compressed block of the plurality of compressed blocks;

using the one or more processors or processor cores, partially decompressing a selected compressed block, of the plurality of compressed blocks, into the independent data, the dependent RLE data, and any linked dependent RLE data; and

using the one or more processors or processor cores, sequencing the independent data, the dependent RLE data, and any linked dependent RLE data from a plurality of partial decompressions of the plurality of compressed blocks, obtaining data specified by the dependent RLE data and any linked dependent RLE data, and inserting the obtained data into an uncompressed data file.

13. The processor-implemented method of claim 12 , further comprising:

using the one or more processors or processor cores, partially decompressing a corresponding selected compressed block of the plurality of compressed blocks, in parallel, into the independent data, the dependent RLE data, and any linked dependent RLE data.

14. The processor-implemented method of claim 12 , further comprising:

using the one or more processors or processor cores, identifying the start or the end of a selected compressed block of the plurality of compressed blocks by performing a partial decompression of the selected compressed block; and

using the one or more processors or processor cores, creating and storing, in a memory circuit, metadata indicating the start or the end of each compressed block of the plurality of compressed blocks.

15. The processor-implemented method of claim 14 , further comprising:

using the one or more processors or processor cores, commencing the partial decompression at a starting point in the selected compressed block having a predetermined or variable offset from one or more partial decompression starting points of other processors or processor cores of the one or more processors or processor cores.

16. The processor-implemented method of claim 12 , further comprising:

using the one or more processors or processor cores, performing a cyclic redundancy check of the uncompressed data file.

17. The processor-implemented method of claim 12 , further comprising:

using the one or more processors or processor cores, compressing the uncompressed data file to form a second compressed file having a plurality of second compressed blocks which have data dependencies solely within individual second compressed blocks of the plurality of second compressed blocks and storing the second compressed file in a memory circuit.

18. The processor-implemented method of claim 12 , further comprising:

using the one or more processors or processor cores, when linked dependent RLE data are in the plurality of compressed blocks, tagging or identifying the linked dependent RLE data, and using the tag or identification of the linked dependent RLE data to sequence the obtaining of the data specified by the linked dependent RLE data subsequent to the obtaining of the data specified by the dependent RLE data.

19. The processor-implemented method of claim 12 , wherein the method is operative in a smartphone or tablet to accelerate booting of an operating system or to accelerate launching of a computing application.

20. An apparatus for parallel decompression of a compressed file, the compressed file comprising a plurality of compressed blocks having independent data and dependent, run length encoded (“RLE”) data having data-dependent references spanning one or more compressed blocks of the plurality of compressed blocks, the apparatus comprising:

a memory circuit; and

a plurality of processors or processor cores, at least one processor or processor core of the plurality of processors or processor cores configured to identify a start or an end of a selected compressed block of the plurality of compressed blocks; at least one processor or processor core of the plurality of processors or processor cores configured to partially decompress a selected compressed block, of the plurality of compressed blocks, into the independent data, the dependent RLE data, and linked dependent RLE data; at least one processor or processor core of the plurality of processors or processor cores configured to sequence the independent data, the dependent RLE data, and the linked dependent RLE data from a plurality of partial decompressions of the plurality of compressed blocks; at least one processor or processor core of the plurality of processors or processor cores configured to obtain data specified by the dependent RLE data and linked dependent RLE data; and at least one processor or processor core of the plurality of processors or processor cores configured to insert the obtained data into an uncompressed data file.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2023
From: MASTER, PAUL L.; FURTEK, FREDERICK CURTIS; KNUTTILA, KIM; MCGANN, L. BRIAN
To: SVIRAL, INC.
Reel/Frame 063467/0643 →
CHANGE OF NAME Recorded Apr 27, 2023
From: SVIRAL, INC.
To: CORNAMI, INC.
Reel/Frame 063485/0570 →
Continuity (7)
Continuation 16900381 · Jun 12, 2020
Continuation 16108356 · Aug 22, 2018
Continuation 15493510 · Apr 21, 2017
Continuation 15096908 · Apr 12, 2016
Continuation 14751371 · Jun 26, 2015
Provisional Application 62017388 · Jun 26, 2014
Related Publication 20220058199A1 · Feb 24, 2022
Cited By (8)
US 12,216,621 US 12,339,811 US 12,353,358 US 12,423,269 US 12,511,260 US 12,530,320 US 12,572,509 US 12,580,047