US20110202503A1 - Block-based differencing algorithm - Google Patents

Block-based differencing algorithm Download PDF

Info

Publication number
US20110202503A1
US20110202503A1 US12/186,469 US18646908A US2011202503A1 US 20110202503 A1 US20110202503 A1 US 20110202503A1 US 18646908 A US18646908 A US 18646908A US 2011202503 A1 US2011202503 A1 US 2011202503A1
Authority
US
United States
Prior art keywords
blocks
block
differencing
patch
source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US12/186,469
Other versions
US8015220B1 (en
Inventor
Serge Volkoff
Mark Armour
Darryl Lovato
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Smith Micro Software Inc
Original Assignee
Smith Micro Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Smith Micro Software Inc filed Critical Smith Micro Software Inc
Priority to US12/186,469 priority Critical patent/US8015220B1/en
Assigned to SMITH MICRO SOFTWARE, INC reassignment SMITH MICRO SOFTWARE, INC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VOLKOFF, SERGE, ARMOUR, MARK, LOVATO, DARRYL
Priority to PCT/US2009/052896 priority patent/WO2010017326A1/en
Priority to US13/207,324 priority patent/US8260829B2/en
Publication of US20110202503A1 publication Critical patent/US20110202503A1/en
Application granted granted Critical
Publication of US8015220B1 publication Critical patent/US8015220B1/en
Priority to US13/603,260 priority patent/US8843532B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Definitions

  • the present invention relates generally to data compression and archiving, file differencing, and patching. More particularly the present invention relates to a system and method for improved differencing on very large files. Still more particularly, the present invention relates to a method to perform the differencing algorithm over blocks of the target file, generating patch blocks in the process.
  • Delta/differencing technology solves the need of device and software manufacturers, as well as information providers, to update software, operating systems and related data in the most efficient manner possible.
  • the primary purpose of delta/differencing technology is to reduce the large bandwidth and space/storage costs associated with distributing updated data to existing users of devices, software and data. It does so by using a very efficient process in which only the differences between the old and new data or code are stored and or transmitted.
  • Differencing algorithms are designed to generate small patch files for similar, potentially very large source and target file pairs. Differencing algorithms benefit from having more source data available for referencing during their operation. In a typical application, patch data is a continuous stream applied in one operation. However, this can be problematic when memory available during patch application is limited.
  • Block size is adaptive and is determined by the following three factors: First, maximum block size is imposed, and that size is based on the memory requirements of the patching algorithm and the desired upper limit on memory consumption. Second, when the number of source file blocks is small, it is beneficial to determine block boundaries in a way that makes all patch blocks equally or similarly sized. When patch blocks are compressed, this avoids inefficient compression of small blocks (the initial learning curve of the adaptive compressor). And third, when the number of source file blocks is large, the last few blocks are made equally or similarly sized, providing an effect similar to the one above.
  • differencing algorithms perform best when their counterpart patching algorithms are allowed to reference the entire source file and the portions of the target file partially reconstructed during patching. On a device where the patching algorithm is executed, this requires enough memory space to accommodate both the source and the target file. Some situations (mobile and other low-end devices using flash memory) require patching to be performed in place because there is not enough memory for both the source and the target files.
  • the patching algorithm of the present invention divides the target file into blocks, which are processed independently.
  • Each block carries its size and position in the target file, and blocks are put in place one at a time by the patching algorithm.
  • each patch block is allowed to reference any part of the partially processed source/target file. Blocks can be processed in any order.
  • the order of block processing by the patch process is selected by the differencing algorithm with the goal of minimizing the sum of the sizes of patch blocks, by either heuristic rules or by exhaustive ordering search to ensure optimization.
  • the inventive differencing algorithm takes advantage of the incremental nature of patch generation by optimizing its search algorithm. Search data structures used to locate matching portions of the source and the target are updated incrementally, upon completion of each patch block.
  • prior art differencing algorithms typically contain a built-in logic that results in smaller output. However, size reduction achieved this way is less than optimal.
  • a separate compression step is applied. In that step a universal compressor is employed.
  • the present invention is a system and method of creation of block-based patch files for the purpose of transforming (updating) source files into target files.
  • the system and method when applied to a set of source and target file pairs, employs the following method steps:
  • Encoding (differencing of source and target file pairs, creation of a patch file):
  • the first steps in the inventive system comprise an encoding stage.
  • patch block size is first determined. The size is based on the amount of memory specified for differencing and/or patching operations.
  • maximum differencing-side block size is a function of the amount of memory, which is the maximum of the differencing algorithm memory requirement and the compression algorithm memory requirement.
  • Maximum patching-side block size is a function of the amount of memory, which is the maximum of the decompression algorithm memory requirement and the patching algorithm memory requirement.
  • maximum block size B is the minimum of the differencing-side block size (discussed in this paragraph, supra) and the patching-side block size (supra).
  • individual target files are divided into blocks of size B, with the exception of the last few blocks, the sizes of which are equalized to prevent an occurrence of a small partial block at the end of the patch data.
  • the ordering of patch blocks is determined either heuristically or optimally. Ordering algorithms depend on whether there is sufficient space for both source and target file during patching and will produce results that significantly differ depending on the data being differenced. Ordering is especially important when patching must be performed in place.
  • Patch blocks are generated in the order established in the ordering step. Each block contains its position in the target file, size, and patch data. Blocks are transmitted to a compressor as they are being created.
  • search data structures (such as hash, tree, or suffix array) are adjusted to reflect new combined source/target data upon completion of each block.
  • the compressor processes patch data in increments of one or more blocks, based on the amount of memory available for its operation.
  • Decoding decompression of the patch file, patching of source files:
  • the second set of steps in the inventive system comprise a decoding stage.
  • the decompressor reads the patch file, decodes the data, and generates patch blocks in increments of one or more blocks, based on the amount of memory available for its operation.
  • the patcher first obtains patch block size and location in the target file. Next the patcher interprets patch data in order to reconstruct the target file while using parts of the source and/or target file as references. Each target block is fully reconstructed before it replaces its corresponding source block.
  • the above method ensures that differencing and patching can be applied to infinitely large files or sets of files, with minimal loss of performance due to memory limitations.
  • FIG. 1 is a schematic flow diagram illustrating the general functional elements of the present invention's encoding and decoding operations.
  • FIG. 2 graphically shows the typical memory usage of prior art differencing technologies with respect to increasing file size
  • FIG. 3 is a schematic block diagram showing the memory usage of the present invention.
  • FIG. 4 is a schematic block diagram showing a prior art block size strategy
  • FIG. 5 schematically shows the block size strategy of the present invention
  • FIG. 6 is a schematic block diagram showing a prior art referencing method using continuous differencing
  • FIG. 7 schematically shows the block-based differencing of the present invention during in-place operation
  • FIG. 8 is a schematic diagram showing three possible block ordering strategies.
  • FIG. 9 schematically shows how the present invention matches patch block boundaries to compression block boundaries.
  • FIGS. 1 through 9 there is illustrated therein a new and improved method for perform a differencing algorithm over blocks of a target file.
  • file means a named set of data element stored in machine readable form, which may exist in several forms, including in a discrete form, or combined or stored with other files, or embedded in another file as a file or as an object, or as a file containing other files, or as a data stream of a determinate size, including information transmitted over a data channel.
  • the first step 100 is to determine patch block size, followed by block size equalization 110 .
  • Blocks are then ordered in step 120 with the goal of minimizing the sum of the sizes of all blocks.
  • the algorithm then enters the iterative stage wherein one patch block in generated at a time 130 , in the order determined in step 120 .
  • Each block generation is followed by an incremental update of search structures 140 .
  • Block generation 130 and structure update 140 are repeated 150 until a group of N (N ⁇ 1) blocks is accumulated.
  • Each group of N blocks is then compressed and transmitted 160 .
  • the process is repeated 170 until all blocks of the target file have been processed and transmitted.
  • the decoding process is the reverse of the encoding process.
  • Groups of N (N ⁇ 1) blocks are received and decompressed 200 .
  • Each patch block is processed and applied to the partially reconstructed target file 210 .
  • the process is repeated 220 for each block and each group of N blocks until all blocks 230 have been received and processed.
  • FIG. 2 there is shown a prior art method used in contemporary differencing algorithms.
  • Such algorithms process a source file 250 of M bytes, transforming the source file into a target file 260 of N bytes by application of a patch 270 of K bytes.
  • the presently inventive method of using blocks processes a source file 300 of M bytes, transforming it into a target file 310 of N bytes by application of a block-based patch 320 consisting of I compressed patch blocks 330 of size J each.
  • the method of the present invention reduces patch memory requirements from N+M+K to N+J, where J ⁇ K and J ⁇ N.
  • FIG. 4 there is shown the prior art method of using a fixed size block 400 , which typically results in a small “leftover” block 410 .
  • This small block is suboptimal as it results in inefficient compression due to the initial learning curve of the adaptive compressor.
  • the present invention avoids the loss of small leftover blocks in relatively small files by dynamically adjusting the block size to result in equally sized blocks 500 and no small leftover blocks. Further, for large source file sizes, the present invention uses the maximum block size for all but the last few blocks which are adjusted such that they are equally size with no small leftover block.
  • FIG. 6 there is shown the prior art referencing mode.
  • This figure shows continuous differencing in which the patching algorithm 600 references both the entire source file 610 and the portions 620 of the target file 630 partially reconstructed during patching.
  • FIG. 7 shows the “in-place” referencing mode of the present invention, possible only because the patch block method of the present invention 700 divides the target file 710 into blocks 720 that are processed independently. In this mode, each patch block is allowed to reference any part of the partially processed source/target file. Blocks can be processed in any order.
  • FIG. 8 there are shown three possible block ordering strategies, which are selected with the goal of minimizing the sum of the sizes of patch blocks, by either heuristic rules 800 or by exhaustive ordering search, right to left 810 , or left to right 820 , to ensure optimization.
  • the method of the present invention 900 which matches 910 the block sizes 920 of a second stage adaptive compression algorithm, such as the Burrows-Wheeler transform (also called BWT or block-sorting compression) to the patch blocks 930 of the differencing algorithm, ensuring that there is no misalignment of blocks and thus no performance loss.
  • a second stage adaptive compression algorithm such as the Burrows-Wheeler transform (also called BWT or block-sorting compression)

Abstract

A system and method for a block based differencing algorithm which includes the ability to limit memory requirements regardless of source file sizes by splitting the source file into optimally sized blocks. The invention allows the blocks to be processed in any order allowing in-place operation. Further, the present invention allows a second stage compressor to match the compressor blocks to those used by the differencing algorithm to optimize compressor and decompressor performance.

Description

    CROSS REFERENCES TO RELATED APPLICATIONS
  • Not applicable. The present application is an original and first-filed United States Utility Patent Application.
  • STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
  • Not applicable.
  • THE NAMES OR PARTIES TO A JOINT RESEARCH AGREEMENT
  • Not applicable.
  • INCORPORATION-BY-REFERENCE OF MATERIAL SUBMITTED ON A COMPACT DISC
  • Not applicable.
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The present invention relates generally to data compression and archiving, file differencing, and patching. More particularly the present invention relates to a system and method for improved differencing on very large files. Still more particularly, the present invention relates to a method to perform the differencing algorithm over blocks of the target file, generating patch blocks in the process.
  • 2. Discussion of Related Art Including Information Disclosed Under 37 CFR §§1.97, 1.98
  • Current differencing technology, which is typically implemented in “differs”, “delta coders”, “delta encoders”, “updaters”, “patchers” and the like, has been available in various forms for some time. The present invention advances the state of the art by processing data incrementally and in an optimal order, thereby producing smaller update packages while using less memory.
  • Delta/differencing technology solves the need of device and software manufacturers, as well as information providers, to update software, operating systems and related data in the most efficient manner possible. The primary purpose of delta/differencing technology is to reduce the large bandwidth and space/storage costs associated with distributing updated data to existing users of devices, software and data. It does so by using a very efficient process in which only the differences between the old and new data or code are stored and or transmitted.
  • Differencing algorithms are designed to generate small patch files for similar, potentially very large source and target file pairs. Differencing algorithms benefit from having more source data available for referencing during their operation. In a typical application, patch data is a continuous stream applied in one operation. However, this can be problematic when memory available during patch application is limited.
  • Accordingly, to ensure that a patch application can be performed on arbitrarily large files in limited memory situations, the present invention provides a block-based differencing system and method that operates on blocks of the target file, generating independent patch blocks in the process. Block size is adaptive and is determined by the following three factors: First, maximum block size is imposed, and that size is based on the memory requirements of the patching algorithm and the desired upper limit on memory consumption. Second, when the number of source file blocks is small, it is beneficial to determine block boundaries in a way that makes all patch blocks equally or similarly sized. When patch blocks are compressed, this avoids inefficient compression of small blocks (the initial learning curve of the adaptive compressor). And third, when the number of source file blocks is large, the last few blocks are made equally or similarly sized, providing an effect similar to the one above.
  • Additionally, differencing algorithms perform best when their counterpart patching algorithms are allowed to reference the entire source file and the portions of the target file partially reconstructed during patching. On a device where the patching algorithm is executed, this requires enough memory space to accommodate both the source and the target file. Some situations (mobile and other low-end devices using flash memory) require patching to be performed in place because there is not enough memory for both the source and the target files.
  • Accordingly, the patching algorithm of the present invention divides the target file into blocks, which are processed independently. Each block carries its size and position in the target file, and blocks are put in place one at a time by the patching algorithm. During patching, each patch block is allowed to reference any part of the partially processed source/target file. Blocks can be processed in any order.
  • The order of block processing by the patch process is selected by the differencing algorithm with the goal of minimizing the sum of the sizes of patch blocks, by either heuristic rules or by exhaustive ordering search to ensure optimization.
  • Accordingly, the inventive differencing algorithm takes advantage of the incremental nature of patch generation by optimizing its search algorithm. Search data structures used to locate matching portions of the source and the target are updated incrementally, upon completion of each patch block.
  • Additionally, prior art differencing algorithms typically contain a built-in logic that results in smaller output. However, size reduction achieved this way is less than optimal. In the implementation of the present invention, a separate compression step is applied. In that step a universal compressor is employed.
  • Accordingly, for differencing followed by a separate compression stage, it is important to match the properties of the compressor to the properties of the differencing output. The optimal combination is achieved when a block-based compression algorithm (such as BWT) operates on entire patch blocks, thus ensuring that there is no misalignment of blocks and no compression loss.
  • BRIEF SUMMARY OF THE INVENTION
  • The present invention is a system and method of creation of block-based patch files for the purpose of transforming (updating) source files into target files. The system and method, when applied to a set of source and target file pairs, employs the following method steps:
  • Encoding (differencing of source and target file pairs, creation of a patch file): The first steps in the inventive system comprise an encoding stage. In the encoding stage, patch block size is first determined. The size is based on the amount of memory specified for differencing and/or patching operations. In performing this step, maximum differencing-side block size is a function of the amount of memory, which is the maximum of the differencing algorithm memory requirement and the compression algorithm memory requirement. Maximum patching-side block size is a function of the amount of memory, which is the maximum of the decompression algorithm memory requirement and the patching algorithm memory requirement. And maximum block size B is the minimum of the differencing-side block size (discussed in this paragraph, supra) and the patching-side block size (supra).
  • Additionally, in the encoding stage, individual target files are divided into blocks of size B, with the exception of the last few blocks, the sizes of which are equalized to prevent an occurrence of a small partial block at the end of the patch data.
  • In an ordering step, the ordering of patch blocks is determined either heuristically or optimally. Ordering algorithms depend on whether there is sufficient space for both source and target file during patching and will produce results that significantly differ depending on the data being differenced. Ordering is especially important when patching must be performed in place.
  • Patch blocks are generated in the order established in the ordering step. Each block contains its position in the target file, size, and patch data. Blocks are transmitted to a compressor as they are being created.
  • During encoding, search data structures (such as hash, tree, or suffix array) are adjusted to reflect new combined source/target data upon completion of each block. The compressor processes patch data in increments of one or more blocks, based on the amount of memory available for its operation.
  • Decoding (decompression of the patch file, patching of source files): The second set of steps in the inventive system comprise a decoding stage. In this stage of the algorithm, the decompressor reads the patch file, decodes the data, and generates patch blocks in increments of one or more blocks, based on the amount of memory available for its operation.
  • During decoding, the patcher first obtains patch block size and location in the target file. Next the patcher interprets patch data in order to reconstruct the target file while using parts of the source and/or target file as references. Each target block is fully reconstructed before it replaces its corresponding source block.
  • In the case of limited memory available for differencing and/or patching, the above method ensures that differencing and patching can be applied to infinitely large files or sets of files, with minimal loss of performance due to memory limitations.
  • It is therefore a principal object of the present invention to provide a new and improved system and method to difference and patch data.
  • It is another object of the present invention to provide a method to avoid sub-optimal patch block sizes to avoid a performance penalty during compression of patch data.
  • It is another principal object of the present invention to provide a new and improved method of differencing and ordering patch blocks to optimize performance when only in-place patching can be performed.
  • Other novel features which are characteristic of the invention, as to organization and method of operation, together with further objects and advantages thereof will be better understood from the following description considered in connection with the accompanying drawings, in which preferred embodiments of the invention are illustrated by way of example. It is to be expressly understood, however, that the drawings are for illustration and description only and are not intended as a definition of the limits of the invention. The various features of novelty that characterize the invention are pointed out with particularity in the claims annexed to and forming part of this disclosure. The invention does not reside in any one of these features taken alone, but rather in the particular combination of all of its structures for the functions specified.
  • The foregoing summary broadly sets out the more important features of the present invention so that the detailed description that follows may be better understood, and so that the present contributions to the art may be better appreciated. There are additional features of the invention that will be described in the detailed description of the preferred embodiments of the invention which will form the subject matter of the claims appended hereto.
  • BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
  • The invention will be better understood and objects other than those set forth above will become apparent when consideration is given to the following detailed description thereof. Such description makes reference to the annexed drawings wherein:
  • FIG. 1 is a schematic flow diagram illustrating the general functional elements of the present invention's encoding and decoding operations.
  • FIG. 2 graphically shows the typical memory usage of prior art differencing technologies with respect to increasing file size;
  • FIG. 3 is a schematic block diagram showing the memory usage of the present invention;
  • FIG. 4 is a schematic block diagram showing a prior art block size strategy;
  • FIG. 5 schematically shows the block size strategy of the present invention;
  • FIG. 6 is a schematic block diagram showing a prior art referencing method using continuous differencing;
  • FIG. 7 schematically shows the block-based differencing of the present invention during in-place operation;
  • FIG. 8 is a schematic diagram showing three possible block ordering strategies; and
  • FIG. 9 schematically shows how the present invention matches patch block boundaries to compression block boundaries.
  • DETAILED DESCRIPTION OF THE INVENTION
  • Referring to FIGS. 1 through 9, there is illustrated therein a new and improved method for perform a differencing algorithm over blocks of a target file.
  • Definitions: As used herein, the term “file” means a named set of data element stored in machine readable form, which may exist in several forms, including in a discrete form, or combined or stored with other files, or embedded in another file as a file or as an object, or as a file containing other files, or as a data stream of a determinate size, including information transmitted over a data channel.
  • Referring first to FIG. 1, during the encoding process, the first step 100 is to determine patch block size, followed by block size equalization 110. Blocks are then ordered in step 120 with the goal of minimizing the sum of the sizes of all blocks. The algorithm then enters the iterative stage wherein one patch block in generated at a time 130, in the order determined in step 120. Each block generation is followed by an incremental update of search structures 140. Block generation 130 and structure update 140 are repeated 150 until a group of N (N≧1) blocks is accumulated. Each group of N blocks is then compressed and transmitted 160. The process is repeated 170 until all blocks of the target file have been processed and transmitted.
  • The decoding process is the reverse of the encoding process. Groups of N (N≧1) blocks are received and decompressed 200. Each patch block is processed and applied to the partially reconstructed target file 210. The process is repeated 220 for each block and each group of N blocks until all blocks 230 have been received and processed.
  • Referring next to FIG. 2 there is shown a prior art method used in contemporary differencing algorithms. Such algorithms process a source file 250 of M bytes, transforming the source file into a target file 260 of N bytes by application of a patch 270 of K bytes.
  • The presently inventive method of using blocks, however, as shown in FIG. 3, processes a source file 300 of M bytes, transforming it into a target file 310 of N bytes by application of a block-based patch 320 consisting of I compressed patch blocks 330 of size J each. In combination with an in-place update mechanism, the method of the present invention reduces patch memory requirements from N+M+K to N+J, where J<<K and J<<N.
  • Referring now to FIG. 4, there is shown the prior art method of using a fixed size block 400, which typically results in a small “leftover” block 410. This small block is suboptimal as it results in inefficient compression due to the initial learning curve of the adaptive compressor.
  • The present invention, shown schematically in FIG. 5, avoids the loss of small leftover blocks in relatively small files by dynamically adjusting the block size to result in equally sized blocks 500 and no small leftover blocks. Further, for large source file sizes, the present invention uses the maximum block size for all but the last few blocks which are adjusted such that they are equally size with no small leftover block.
  • Referring next to FIG. 6, there is shown the prior art referencing mode. This figure shows continuous differencing in which the patching algorithm 600 references both the entire source file 610 and the portions 620 of the target file 630 partially reconstructed during patching.
  • FIG. 7 shows the “in-place” referencing mode of the present invention, possible only because the patch block method of the present invention 700 divides the target file 710 into blocks 720 that are processed independently. In this mode, each patch block is allowed to reference any part of the partially processed source/target file. Blocks can be processed in any order.
  • Accordingly, and referring now to FIG. 8, there are shown three possible block ordering strategies, which are selected with the goal of minimizing the sum of the sizes of patch blocks, by either heuristic rules 800 or by exhaustive ordering search, right to left 810, or left to right 820, to ensure optimization.
  • Finally, referring next to FIG. 9, there is shown the method of the present invention 900, which matches 910 the block sizes 920 of a second stage adaptive compression algorithm, such as the Burrows-Wheeler transform (also called BWT or block-sorting compression) to the patch blocks 930 of the differencing algorithm, ensuring that there is no misalignment of blocks and thus no performance loss.
  • The above disclosure is sufficient to enable one of ordinary skill in the art to practice the invention, and provides the best mode of practicing the invention presently contemplated by the inventor. While there is provided herein a full and complete disclosure of the preferred embodiments of this invention, it is not desired to limit the invention to the exact construction, dimensional relationships, and operation shown and described. Various modifications, alternative constructions, changes and equivalents will readily occur to those skilled in the art and may be employed, as suitable, without departing from the true spirit and scope of the invention. Such changes might involve alternative materials, components, structural arrangements, sizes, shapes, forms, functions, operational features or the like.
  • Therefore, the above description and illustrations should not be construed as limiting the scope of the invention, which is defined by the appended claims.

Claims (10)

1. (canceled)
2. A method of limiting memory required during differencing and patching, comprising the steps of:
(a) applying a differencing algorithm that operates on finite-sized blocks created from at least one source/target file; and
(b) adaptively determining block sizes as follows:
(i) determining maximum block size based on the requirements of the differencing, compression, decompression and patching algorithms and the desired upper limit on memory requirements;
(ii) when the number of source file blocks is small, adjusting the size of the blocks such that they are equally or similarly sized; and
(iii) when the number of source file blocks is large, adjusting the size of the blocks for the last few blocks in a manner similar to (ii) above, thereby creating a similar effect as (ii),while maintaining the maximum block size for the majority of blocks.
3. The method of claim 2, wherein each of the finite-sized blocks is processed independently.
4. The method of claim 2, further including the step of incrementally updating search data structures used to locate matching portions of the source/target files upon completion of each patch block.
5. The method of claim 2, further including the step of attaching to each block data relating to the size and position of that block.
6. The method of claim 2, further including the step of putting each block in place one at a time using a patching algorithm.
7. The method of claim 6, wherein each block may be processed out of order.
8. The method of claim 2, wherein an in-place patching operation includes the step of allowing each patch block to reference any part of a partially processed source/target file.
9. The method of claim 6, further including the step of using the differencing algorithm to select the order of block processing with the goal of minimizing the sum of the sizes of patch blocks using either heuristic rules or an exhaustive ordering search to ensure optimization.
10. The method of claim 2, further including the matching the block sizes used in the differencing algorithm with those used in a second stage adaptive compressor.
US12/186,469 2008-08-05 2008-08-05 Block-based differencing algorithm Active 2029-08-13 US8015220B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US12/186,469 US8015220B1 (en) 2008-08-05 2008-08-05 Block-based differencing algorithm
PCT/US2009/052896 WO2010017326A1 (en) 2008-08-05 2009-08-05 Block-based differencing algorithm
US13/207,324 US8260829B2 (en) 2008-08-05 2011-08-10 Block-based differencing algorithm
US13/603,260 US8843532B2 (en) 2008-08-05 2012-09-04 Block-based differencing algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/186,469 US8015220B1 (en) 2008-08-05 2008-08-05 Block-based differencing algorithm

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/207,324 Continuation US8260829B2 (en) 2008-08-05 2011-08-10 Block-based differencing algorithm

Publications (2)

Publication Number Publication Date
US20110202503A1 true US20110202503A1 (en) 2011-08-18
US8015220B1 US8015220B1 (en) 2011-09-06

Family

ID=41663973

Family Applications (3)

Application Number Title Priority Date Filing Date
US12/186,469 Active 2029-08-13 US8015220B1 (en) 2008-08-05 2008-08-05 Block-based differencing algorithm
US13/207,324 Active US8260829B2 (en) 2008-08-05 2011-08-10 Block-based differencing algorithm
US13/603,260 Active US8843532B2 (en) 2008-08-05 2012-09-04 Block-based differencing algorithm

Family Applications After (2)

Application Number Title Priority Date Filing Date
US13/207,324 Active US8260829B2 (en) 2008-08-05 2011-08-10 Block-based differencing algorithm
US13/603,260 Active US8843532B2 (en) 2008-08-05 2012-09-04 Block-based differencing algorithm

Country Status (2)

Country Link
US (3) US8015220B1 (en)
WO (1) WO2010017326A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112398666A (en) * 2019-08-13 2021-02-23 中兴通讯股份有限公司 Software differential upgrading method, device, equipment and storage medium

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8411734B2 (en) 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8015220B1 (en) 2008-08-05 2011-09-06 Smith Micro Software, Inc. Block-based differencing algorithm
US9706214B2 (en) 2010-12-24 2017-07-11 Microsoft Technology Licensing, Llc Image and video decoding implementations
US8731067B2 (en) 2011-08-31 2014-05-20 Microsoft Corporation Memory management for video decoding
US9058338B2 (en) 2011-10-26 2015-06-16 International Business Machines Corporation Storing a small file with a reduced storage and memory footprint
US9819949B2 (en) 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
US9158533B2 (en) * 2012-01-16 2015-10-13 International Business Machines Corporation Manipulating source code patches
US8990541B2 (en) 2012-09-12 2015-03-24 International Business Machines Corporation Compacting Memory utilization of sparse pages
US10860310B2 (en) 2015-09-30 2020-12-08 Apple Inc. Software updating
CN105786563B (en) * 2016-02-19 2018-11-09 联州(上海)信息科技有限公司 Realize the devices, systems, and methods of software online updating
DE102016115792A1 (en) 2016-08-25 2018-03-01 Visteon Global Technologies, Inc. Method for transmitting a difference file
CN109716289B (en) * 2016-09-23 2021-01-12 华为技术有限公司 Binary image differential inpainting
KR20200089490A (en) * 2019-01-17 2020-07-27 삼성전자주식회사 Method of firmware update and operating device thereof
CN111831297B (en) * 2019-04-17 2021-10-26 中兴通讯股份有限公司 Zero-difference upgrading method and device
KR102574280B1 (en) * 2019-10-31 2023-09-04 구글 엘엘씨 Patching Memory Efficient Software for Application Updates on Computing Devices
US20230214210A1 (en) * 2022-01-05 2023-07-06 Honeywell International Inc. Interruptable bsdiff delta decompression

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7392260B2 (en) * 2003-07-21 2008-06-24 Innopath Software, Inc. Code alignment of binary files

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317880B1 (en) * 1999-03-03 2001-11-13 Microsoft Corporation Patch source list management
US6502097B1 (en) 1999-12-23 2002-12-31 Microsoft Corporation Data structure for efficient access to variable-size data objects
US20060112152A1 (en) * 2004-11-22 2006-05-25 Microsoft Corporation Smart patching by targeting particular prior versions of a file
US7490079B2 (en) * 2005-04-14 2009-02-10 Microsoft Corporation Client side indexing of offline address book files
US8245216B2 (en) * 2005-10-11 2012-08-14 Oracle International Corporation Patch management system
US8015220B1 (en) * 2008-08-05 2011-09-06 Smith Micro Software, Inc. Block-based differencing algorithm

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US20050234997A1 (en) * 2002-05-13 2005-10-20 Jinsheng Gu Byte-level file differencing and updating algorithms
US7392260B2 (en) * 2003-07-21 2008-06-24 Innopath Software, Inc. Code alignment of binary files

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112398666A (en) * 2019-08-13 2021-02-23 中兴通讯股份有限公司 Software differential upgrading method, device, equipment and storage medium

Also Published As

Publication number Publication date
US8015220B1 (en) 2011-09-06
US8260829B2 (en) 2012-09-04
US20110295820A1 (en) 2011-12-01
US8843532B2 (en) 2014-09-23
US20120330910A1 (en) 2012-12-27
WO2010017326A1 (en) 2010-02-11

Similar Documents

Publication Publication Date Title
US8015220B1 (en) Block-based differencing algorithm
CA2530395C (en) Method and system for updating versions of content stored in a storage device
CN108170460B (en) Method and device for upgrading increment of embedded system
US7669195B1 (en) Electronic device network supporting compression and decompression in electronic devices and update generator
US7814284B1 (en) Redundancy elimination by aggregation of multiple chunks
US8201054B2 (en) Fault-tolerant method and apparatus for updating compressed read-only file systems
US8370805B2 (en) Delta compression using multiple pointers
CN101916228B (en) Flash translation layer (FTL) with data compression function and implementation method
US20090070357A1 (en) Data compression apparatus and method
US8872677B2 (en) Method and apparatus for compressing data-carrying signals
US8004429B2 (en) Data compression/decompression apparatus and method
US20040054700A1 (en) Backup method and system by differential compression, and differential compression method
CN102724500B (en) A kind of compressing/decompressing method of video data and system
CN110870287B (en) Over-the-air (OTA) update of partially compressed firmware
Wong et al. Error detection in arithmetic coding with artificial markers
US8238549B2 (en) Efficient full or partial duplicate fork detection and archiving
CN104811209A (en) Compressed file data embedding method and device capable of resisting longest matching detection
US8989507B2 (en) Bitmap compression for fast searches and updates
US20090037799A1 (en) Operating method applied to low density parity check (ldpc) decoder and circuit thereof
CN113227958A (en) Apparatus, system, and method for optimization in deduplication
US8489832B1 (en) System and method for duplicating electronically stored data
CN105681425B (en) Multinode restorative procedure and its system based on distributed memory system
CN102129872B (en) Data compression and decompression method and device thereof
US7254689B1 (en) Decompression of block-sorted data
KR100941059B1 (en) The apparatus for decoding the total zeros information with low power based on new reconstruction table and the method of thereof

Legal Events

Date Code Title Description
AS Assignment

Owner name: SMITH MICRO SOFTWARE, INC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VOLKOFF, SERGE;ARMOUR, MARK;LOVATO, DARRYL;SIGNING DATES FROM 20080915 TO 20081002;REEL/FRAME:021874/0628

STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAT HOLDER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: LTOS); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2552); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2553); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Year of fee payment: 12