Efficient system and method for updating a memory device
First Claim
1. An updating system for transforming a first data image into a second data image, wherein said first image resides across k memory blocks of a block-structured non-volatile memory device contained in a client device, said updating system comprising:
- a. An update generator that produces an update package resulting from a comparison between the first data image and the second data image whereby said comparison selects and encodes an instruction set comprising a plurality of SETBLOCK, COPY and ADD operations for each of the k memory blocks; and
b. An update decoder resident on the client device, whereby said update decoder interprets the instruction set of the update package and applies the update a package to update the k memory blocks.
2 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.
-
Citations
18 Claims
-
1. An updating system for transforming a first data image into a second data image, wherein said first image resides across k memory blocks of a block-structured non-volatile memory device contained in a client device, said updating system comprising:
-
a. An update generator that produces an update package resulting from a comparison between the first data image and the second data image whereby said comparison selects and encodes an instruction set comprising a plurality of SETBLOCK, COPY and ADD operations for each of the k memory blocks; and
b. An update decoder resident on the client device, whereby said update decoder interprets the instruction set of the update package and applies the update a package to update the k memory blocks. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 11, 13)
-
-
9. A method of updating to a second image a first image stored across k memory blocks of a non-volatile memory device contained in a client device, said updating method comprising:
-
a. Generating an update package by comparing the first image and the second image and using result of said comparison to encode an instruction set comprised of a plurality of SETBLOCK, COPY and ADD operations for each of the k memory blocks;
b. Applying the instruction set by interpreting the instruction set to direct the updating of the memory blocks in an order specified by the SETBLOCK operations. - View Dependent Claims (12, 14)
-
-
10. The method of claim wherein said applying step further comprises, for each memory block X of k blocks,
a. constructing an updated version of such Xth memory block in a scratch memory location accessible to the client device wherein said scratch memory location being at least as large as the largest of the k memory blocks, and b. reprogramming Xth memory block with the contents of the scratch memory.
-
15. A system for reliably updating on a client device a first image stored across a plurality of memory blocks of a non-volatile memory device to create a second image, said system comprising:
-
a. an update package including an instruction set, which instruction set comprises a plurality of ADD and COPY operations associated with each of the plurality of memory blocks to be updated;
b. a status array comprised of a least two switchable status identifiers associated with each of the plurality of memory blocks, wherein one X of k to updated as instructed by the instruction set contained in the update package;
c. an update decoder resident on said client device that interprets the update package and applies the instruction set to update the plurality of blocks on a block-by-block basis, and which update decoder accesses and manipulates the status identifiers when applying said instruction set. - View Dependent Claims (16, 17, 18)
-
Specification