CPC G11C 16/102 (2013.01) [G11C 16/08 (2013.01); G11C 16/26 (2013.01); G11C 17/12 (2013.01); G11C 17/18 (2013.01); H03M 13/1174 (2013.01)] | 20 Claims |
1. Multiple-time programmable memory (MTP) comprising one-time programmable (OTP) memory and a plurality of virtual MTP memory blocks, the OTP memory comprising a plurality of OTP memory blocks, wherein:
a plurality of the OTP memory blocks are reserved for each virtual MTP memory block;
at any given time, each virtual MTP memory block is associated with one of the plurality of OTP memory blocks that are reserved for the virtual MTP memory block, wherein the current data of the virtual MTP memory block is stored in the associated OTP memory block;
for each virtual MTP memory block, a pointer that identifies the OTP memory block that is associated with the virtual MTP memory block is stored elsewhere in the OTP memory; and
the MTP memory is configured to program a first virtual MTP memory block of the plurality of virtual MTP memory blocks with new data by:
programming a previously unprogrammed OTP memory block of the OTP memory blocks that are reserved for the first virtual MTP memory block with the new data; and
updating the pointer of the OTP memory block that is associated with the first virtual MTP memory block to identify the newly programmed OTP memory block;
wherein the pointers of the OTP memory blocks that are associated with the virtual MTP memory blocks are stored with an error correcting code, and wherein the encoding scheme of the pointers is such that incrementing the pointer requires only bit changes in both the pointer data and the error correcting code from one of 0 to 1 or 1 to 0 depending on the type of OTP memory.
|