Non-volatile memory ( NVM ) is a type of computer memories that can retrieve stored information across even power failure. Unlike volatile memory, NVM does not need its memorized data to be refreshed periodically. It is commonly used for secondary storage or long-term consistent storage. Examples of mechanical NVMs storage include, hard disk drive (HDD) and magnetic tape. Another type of NVMs is electrical. Examples of electrical NVM storage include, EEPROM, Flash memory, and solid-state drive (NAND flash SSD)
Recent in developing NVM technologies include:
- 3D XPoint(Intel, Micron)
- Memristor (HP, SK Hynix)
- Nano-RAM (Nantero)
- Phase Change Memory (Intel, Micron, IBM)
- Race Track
To make memory persistent, we are facing a number of challenges:
1. How to ensure information stored is durable? The computer system still includes volatile cache memory system. We need to ensure data in caches is flushed. When and how to flush the data impact the system performance .
2. How to ensure consistency of updates? Modern computer have multiple layer private and shared caches. One data could have multiple copies in caches. How to ensure consistency is still a big challenge. This requires change of hardware and software programming models to achieve this goal.