IP Library Granted Patent US 7,031,972
Granted Patent B2
US 7,031,972 · App. 10/624,704 · Granted Apr 18, 2006

Algorithms for block-level code alignment of software binary files

Assignee: InnoPath Software, Inc.
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 7,031,972
App. No.
10/624,704
Granted
Apr 18, 2006
Kind
B2
Abstract

A file differencing and updating system is provided that includes a file differencing component and a file updating component. The file differencing component, or file differencing engine, generates a difference file in a first processor-based or computer system from an original or old version and a new version of an electronic file. Generation of the difference files includes processing to reduce the number of file changes introduced by code block swaps. The processing uses an alignment algorithm, which includes a sorting algorithm, to align the code blocks of the original version in the same order as those of the new version, thereby eliminating the increase in the number of byte-level file differences due to code block swaps. During the alignment operations, the block movements are dynamically recorded at a minimum cost level and encoded for transmission to the file updating component for use in code recovery.

Claims (44)

1. A method for reducing a number of changes between an original file and a new file on a processor-based device, comprising:

determining an order of code blocks of the new file using index values;

sorting code blocks of the original file and generating a largest increasing subsequence (LIS) of code blocks according to the index values;

generating at least one list of original order numbers of the code blacks of the original file affected by code block movement; and

moving the code blocks of the original file to locations in the original file according to the largest increasing subsequence of code blocks, wherein the code blocks of the original file are aligned in the same order as code blocks of the new file.

2. An apparatus comprising at least one processor coupled to:

means for receiving an original file and a new file, wherein the new file includes an updated version of the original file;

means for determining an order of code blocks of the new file using index values;

means for sorting code blocks of the original file and generating a largest increasing subsequence (LIS) of code blocks according to the index values;

means for generating lists of original order numbers of the code blocks of the original file affected by code block movements; and

means for moving the code blocks of the original file to locations in the original file according to the largest increasing subsequence of code blocks, wherein the code blocks of the original file are aligned in the same order as code blocks of the new file.

3. A system for updating electronic files of remote devices, comprising:

a first device including a processor coupled to a file differencing engine that generates differences between an original version and a new version of an electronic file by:

determining an order of code blocks of the new version using index values;

sorting code blocks of the original version and generating a largest increasing subsequence (LIS) of code blocks according to the index values;

generating lists of original order numbers of the code blocks of the original version affected by code block movements;

moving the code blocks of the original version to locations in the original version according to the largest increasing subsequence of code blocks, wherein the code blocks of the original version are aligned in the saint order as code blocks of the new version;

generating an encoded list including information of the code block moves;

transmitting the encoded list to a second device; and

a file updating engine coupled to a processor of the second device, the file updating engine generating a copy of the new version using a difference file and information of the code block moves.

4. The system of claim 3 , wherein the second device includes at least one of cellular telephones, portable communication devices, personal digital assistants, personal computers, and portable processor-based devices.

5. A method for generating difference flies on a processor-based device, comprising:

receiving an original file and a new file, wherein the new file includes an updated version of the original file;

determining an order of code blocks of the new tile using index values;

sorting code blocks of the original file and generating a largest increasing subsequence (LIS) of code blocks according to the index values;

generating lists of original order numbers of the code blocks of the original file affected by code block movements;

moving the code blocks of the original file to locations in the original file according to the largest increasing subsequence of code blocks, wherein the code blocks of the original file are aligned in the same order as code blocks of the new file; and

generating an encoded list including information of the code block moves.

6. The method of claim 5 , farther comprising:

generating mappings between code blocks of the original file and corresponding code blocks of the new file; and

generating a mapping array using information of the mappings.

7. The method of claim 6 , further comprising:

generating a longest increasing subsequence (LIS) of the mapping array;

identify membership of the LIS for each code block of the original file; and

generating a membership array using information of the LIS membership.

8. The method of claim 5 , further comprising receiving at least one of a mapping array, a membership array, a start address array, a size array, and an original code block order number array, wherein the mapping array includes information of mappings between code blocks of the original file and corresponding code blocks of the new file, wherein the membership array includes information of a membership of a longest increasing subsequence (LIS) for each code block of the original file, wherein the start address array includes information of code block start addresses, wherein the size ray includes information of code block sizes, and wherein the original code block order number array includes information of the original order of code blocks in the original file prior to the code block movements.

9. The method of claim 5 , further comprising:

transferring the encoded list to at least one remote system via at least one coupling, wherein the remote system includes at least one processor-based system, wherein the coupling includes at least one of a wireless coupling, a wired coupling, and a hybrid wireless/wired coupling; and

updating a hosted copy of the original file in the remote processing systems using a difference file and the encoded list.

10. A computer readable medium including executable instructions which, when executed in a processing system, reduce a number of changes between an original file and a new file by:

determining an order of code blocks of the new file using index values;

sorting code blocks of the original file and generating a largest increasing subsequence (LIS) or code blocks according to the index values;

generating lists of original order numbers of the code blocks of the original file affected by code block movements; and

moving the code blocks of the original file to locations in the original file according to the largest increasing subsequence of code blocks, wherein the code blocks of the original file are aligned in the same order as code blocks of the new file.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2016
From: QUALCOMM TECHNOLOGIES, INC.
To: QUALCOMM INCORPORATED
Reel/Frame 039900/0760 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2016
From: INNOPATH SOFTWARE, INC.
To: QUALCOMM TECHNOLOGIES, INC.
Reel/Frame 038943/0852 →
CHANGE OF NAME Recorded Jan 26, 2006
From: DOONGO TECHNOLOGIES, INC.
To: INNOPATH SOFTWARE, INC.
Reel/Frame 017207/0673 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 22, 2003
From: REN, LIWEI; GU, JINSHENG; PENG, LUOSHENG
To: DOONGO TECHNOLOGIES, INC.
Reel/Frame 014211/0649 →
Continuity (1)
Related Publication 20050021572A1 · Jan 27, 2005