Non Volatile Random-Access Memory (NVRAM) is an umbrella term covering several upcoming memory technologies like with groundbreaking properties. These include ferroelectric memory (FRAM), magnetoresistive memory (MRAM), phase-change memory (PCM), and the memristor. Non-volatility means that data stays intact when power is lost. Random access means that each byte can be read or written directly by the CPU.
These two properties together make the classical RAM+Flash architecture obsolete, and enable the design of tiny embedded systems running on intermittent power. This is very attractive in the context of energy-constrained scenarios, for instance systems harvesting their power from the environment. But working with NVRAM also poses novel challenges in terms of software programming. For instance, application state consistency must be guaranteed accross reboots, even though the system includes both NVRAM and volatile elements (e.g. CPU, hardware periperals).
In this context, we are developing and studying novel operating system mechanisms for NVRAM-based embedded systems.