ECC Pointer Encoding for OTP-Based Multiple-Programmable Memory
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing multiple-time programmable (MTP) memory technologies face challenges in efficiently reprogramming and error correction due to the limitations of one-time programmable (OTP) memory modules, where bit changes from 1 to 0 are not feasible, affecting data integrity and readability.
Innovation Solution
The implementation of virtual MTP memory blocks with OTP memory banks and error correction codes, such as repetition codes and Hamming codes, that allow only bit changes from 0 to 1 or 1 to 0, ensuring correct pointer updates and data storage without reprogramming existing OTP blocks when possible, and using a memory address table to manage associations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If OTP memory is used to form MTP memory by providing multiple OTP memory banks, then the memory can be reprogrammed multiple times, but the complexity of managing multiple banks and pointers increases
Solution Approach 1:
The OTP memory is divided into multiple banks (first OTP memory bank, second OTP memory bank, etc.), each capable of storing data independently. This segmentation allows the system to switch between different banks to achieve multiple programming cycles while maintaining the simplicity of individual OTP block management.
Solution Approach 2:
Pointer information is introduced as an intermediary element that manages the association between virtual MTP memory blocks and physical OTP memory blocks. The pointer stores the address of the currently active OTP bank, enabling seamless switching between banks without requiring complex management logic in the control circuitry.
2Adaptability or versatility
If pointers are updated to associate virtual MTP memory blocks with new OTP memory blocks, then reprogramming is enabled, but bit changes from 1 to 0 in pointers may not be feasible in OTP memory
Solution Approach 1:
The pointer encoding scheme is specifically designed to change only from 0 to 1 when updating, never requiring 1 to 0 transitions. This is achieved by selecting pointer values and encoding schemes that monotonically increase, ensuring compatibility with OTP memory's unidirectional programming capability while maintaining reliable pointer updates for bank switching.
3Reliability
If error correction codes are applied to pointer data, then data integrity is improved, but the storage space and programming complexity increase
Solution Approach 1:
Error correction codes are pre-calculated and stored alongside the pointer data in the same OTP memory block. The ECC for pointer data is generated in advance based on the pointer value, and both the pointer and its ECC are programmed together into the memory block during the same programming operation, eliminating the need for complex real-time encoding during operation.
4Adaptability or versatility
If multiple OTP memory blocks are reserved for each virtual MTP memory block, then reprogramming flexibility is improved, but the memory utilization efficiency decreases
Solution Approach 1:
The system dynamically selects which OTP memory block to use for each virtual MTP memory block based on the current pointer value. Instead of statically allocating multiple physical blocks to each virtual block, the pointer enables dynamic switching between different physical blocks, providing reprogramming flexibility while maintaining high memory utilization as each physical block can serve different virtual blocks at different times.
Data Source
AI summary
The present invention relates to the field of digital memory, and in particular to a multiple-time programmable (MTP) memory employing error correction codes (ECC), the MTP memory being made up of one-time programmable (OTP) memory modules. Pointers to the memory address of currently in-use OTP memory blocks in use for each virtual MTP memory block are stored in OTP memory with an error correcting code. The pointers encode the memory addresses according to a scheme that ensure that only bit changes in a single direction are required in both the pointer data and the error correction code when the memory address is incremented.

