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:
- 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 block; and
an update decoder resident on the client device, whereby said update decoder interprets the instruction set of the update package and applies the update package to update the k memory block;
wherein the SETBLOCK operations identify specific operations applicable to specific memory blocks and facilitate memory block updating in a non-sequential manner;
wherein said update package further includes a status array comprised of at least two switchable status identifiers associated with each memory block X of k to be updated as instructed by the instruction set contained in the update package.
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
9 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:
-
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 block; and an update decoder resident on the client device, whereby said update decoder interprets the instruction set of the update package and applies the update package to update the k memory block; wherein the SETBLOCK operations identify specific operations applicable to specific memory blocks and facilitate memory block updating in a non-sequential manner; wherein said update package further includes a status array comprised of at least two switchable status identifiers associated with each memory block X of k to be updated as instructed by the instruction set contained in the update package.
-
-
2. 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:
-
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 an update decoder resident on the client device, whereby said update decoder interprets the instruction set of the update package and applies the update package to update the k memory blocks; wherein the SETBLOCK operations identify specific operations applicable to specific memory blocks and facilitate memory block updating in a non-sequential manner; wherein for each memory block X of k blocks an undated version of such Xth memory block is first constructed in a scratch memory, and then memory block X is reprogrammed with the contents of the scratch memory; wherein said update decoder maintains at least two copy-offset values comprised of a current offset value and a non-current offset value, and wherein the instruction set of said update package further comprises a plurality of SETCOPYOFFSET operations, which SETCOPYOFFSET instructions instruct the update decoder to toggle the copy-offset value between the current value and the non-current value. - View Dependent Claims (3)
-
-
4. 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:
-
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; 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, wherein the SETBLOCK operations facilitate memory block updating in a non-sequential manner; Constructing an updated version of each Xth memory block in a scratch memory location accessible to the client device wherein said scratch memory location is at least as large as the largest of the k memory blocks; Reprogramming a temporary memory block in a non-volatile memory device with the contents of the scratch memory; Switching a first switchable status identifier when said memory block reprogramming is completed with respect to each memory block; Reprogramming the Xth memory block with the contents of the temporary memory block; and Switching a second switchable status identifier when said Xth memory block reprogramming is completed with respect to each memory block. - View Dependent Claims (5, 7)
-
-
6. 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 block of k blocks to be updated as instructed by the instruction set is contained in the update package; and 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; wherein said at least two switchable status identifiers are configured to facilitate restarting update processing if said update processing is interrupted. - View Dependent Claims (8, 9)
-
Specification