There is a wide variety of conventional non-volatile memory systems which are optimized for various fields of application. Based on the intended field of application, an appropriate memory system can be chosen. The properties of these conventional memory systems vary in many aspects. Two of these aspects are retention and endurance. Both are influenced by various factors such as the characteristics of individual memory cells of the memory system and by the architecture of the memory system.
Retention relates to a memory cell's ability to maintain the state it has been programmed to, i.e. to keep data stored in the memory cell intact. A memory system with high retention is able to store data over a long period of time without the need to refresh the data. In a memory system with low retention, data stored in the memory system has to be refreshed frequently.
Endurance relates to the number of times a memory cell can be erased or programmed. In a memory system with high endurance each memory cell of the memory system can be erased or programmed many times without being damaged. In contrast, in a memory system with low endurance, each memory cell can be erased or programmed only a limited number of times. Frequently erasing or programming a memory cell of a memory system with low endurance will damage the memory cell.
Generally, a conventional memory system exhibits either high retention or high endurance. When the retention of a memory system is high, the endurance of the memory system is generally low. Similarly, when the endurance of a memory system is high, the retention of the memory system is generally low. Therefore, in a situation where a memory system is employed to store data which needs to be updated only rarely, usually a memory system with high retention is employed. Correspondingly, in a situation where a memory system is employed to store data which is updated frequently, usually a memory system with high endurance is employed. Consequently, for a program memory which is used to store program data, it is convenient to use a memory system exhibiting high retention (and, consequently, low endurance), whereas for a data memory which is used to store application data, it is convenient to use a memory system exhibiting high endurance (and, consequently, low retention). An example for such a memory system with high endurance and low retention is an electrically erasable programmable read-only memory (EEPROM).
For many devices comprising a memory system, however, at the time the device is designed it is not known what type of data will later be stored in the memory system. Therefore, in these cases it is not possible to provide the device with the appropriate type of memory system. For example, a device comprising a memory system with high retention and low endurance is generally optimized to store program data. For a specific application of the device, however, it might be necessary to store application data in the memory system. In this case, the endurance of the memory system needs to be increased. This can be achieved by emulating a specific type of memory system using another type of memory system.
Conventional emulation schemes suffer from a number of drawbacks. Some of these schemes, for example, require an amount of memory space which is much larger than the amount of data which is to be stored in the memory system. With such a scheme it is impossible to build small and inexpensive memory systems. In other schemes the memory system has to provide several paths to access the memory for reading and programming. This again increases the space requirements of the memory system. Other schemes allow data to be programmed and erased only in big blocks and require a large number of erase operations. In most implementations this takes a lot of time.
For these or other reasons there is a need for improved systems and methods to emulate an electrically erasable programmable read-only memory.