Efficient system and method for updating a memory device
First Claim
1. A method for providing an update package configured to update a first data image of a memory device to a second image, comprising:
- creating an instruction set using a plurality of addition, copying, and SETBLOCK operations representing changes between the first data image and the second data image, said instruction set forming the update package, wherein creating the instruction set comprises;
splitting each addition operation and each copying operation into two operations whenever a destination region for an addition operation or a copying operation in the second data image would otherwise span a block boundary in the second data image, wherein said splitting divides each addition operation and each copying operation at an appropriate block boundary in the second data image;
using the second data image as a copying operation source for each copying operation seeking to copy data from a block processed before each currently processed memory block; and
employing a hashtable set comprising a first data image hashtable and a second data image hashtable, the hashtable set searchable to find a memory block update match in the first data image or second data image based on whether a location in the second image to be updated occurs before or after a start address of each currently processed memory block; and
communicating said update package to a client device containing said memory device.
0 Assignments
0 Petitions
Accused Products
Abstract
A system and method for updating a binary image stored across a block-structured memory device, such as a flash memory device. From comparison of original and new images, an update package is generated which includes an encoded instruction set comprising COPY and ADD operations instructing the copying of source data from locations in the memory device and adding other data provided in the update package. The instruction set comprises SETBLOCK operations that direct updating of the memory blocks in an order that optimizes the COPY and ADD operations required and resulting update package size. The instruction set further comprises SETCOPYOFFSET operations to toggle between copy-offset modes thereby allowing for improved efficient encoding of COPY operations. The update package further includes an array of status bits corresponding to the memory blocks to be updated, thereby allowing for reliable restarting of the update process following power loss or other interruption.
29 Citations
20 Claims
-
1. A method for providing an update package configured to update a first data image of a memory device to a second image, comprising:
-
creating an instruction set using a plurality of addition, copying, and SETBLOCK operations representing changes between the first data image and the second data image, said instruction set forming the update package, wherein creating the instruction set comprises; splitting each addition operation and each copying operation into two operations whenever a destination region for an addition operation or a copying operation in the second data image would otherwise span a block boundary in the second data image, wherein said splitting divides each addition operation and each copying operation at an appropriate block boundary in the second data image; using the second data image as a copying operation source for each copying operation seeking to copy data from a block processed before each currently processed memory block; and employing a hashtable set comprising a first data image hashtable and a second data image hashtable, the hashtable set searchable to find a memory block update match in the first data image or second data image based on whether a location in the second image to be updated occurs before or after a start address of each currently processed memory block; and communicating said update package to a client device containing said memory device. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for updating a first data image on a client device, comprising:
-
an update generator that creates an instruction set using a plurality of addition, copying, and SETBLOCK operations for multiple memory blocks based on comparing the first data image and a second data image to create an update package, wherein a SETBLOCK operation identifies a next block to be updated using specified addition and copying operations; wherein said update generator is configured to; split each addition and each copying operation into two operations whenever a destination region for an addition operation or a copying operation in the second data image would otherwise span a block boundary in the second data image, wherein splitting divides each addition operation and each copying operation at an appropriate block boundary in the second data image; use the second data image as a copying operation source for each copying operation seeking to copy data from a block processed before each currently processed memory block; and employ a hashtable set comprising a first data image hashtable and a second data image hashtable, the hashtable set searchable to find a memory block update match in the first data image or second data image based on whether a location in the second image to be updated occurs before or after a start address of each currently processed memory block; and provide the instruction set to an update decoder resident on the client device. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A method for providing an update package for modifying functionality in a client device, comprising:
-
creating an instruction set in an update package using a plurality of addition, copying, and SETBLOCK operations for multiple memory blocks based on comparing a first data image and a second data image, wherein a SETBLOCK operation identifies a next block to be updated using specified addition and copying operations, wherein creating the instruction set comprises; splitting each addition operation and each copying operation into two operations whenever a destination region for an addition operation or a copying operation in the second data image would otherwise span a block boundary in the second data image, wherein said splitting divides each addition operation and each copying operation at an appropriate block boundary in the second data image; using the second data image as a copying operation source for each copying operation seeking to copy data from a block processed before each currently processed memory block; and employing a hashtable set comprising a first data image hashtable and a second data image hashtable, the hashtable set searchable to find a memory block update match in the first data image or second data image based on whether a location in the second image to be updated occurs before or after a start address of each currently processed memory block; and communicating said update package over-the-air to the client device. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification