Advances in memory technology, such as Phase-Change Memory (PCM), have led to the development of byte-addressable Non-Volatile Memories (NVM) with performance characteristics similar to DRAM. This new NVM is a potential drop-in replacement for DRAM. However, the caches remain volatile.
Given this advent of NVM, your friend believes that future systems will be designed as follows:
1. Server vendors will replace DRAM DIMMs with NVM DIMMs, resulting in a memory hierarchy with with caches, a persistent main-memory and a persistent disk.
2. OS designers will expand the persistent namespace (previously restricted to disks) to include the now non-volatile main memory. Said differently, if a file is loaded into memory and written to, it need not be flushed back to disk for the changes to outlive the writing process. Note, the main memory remains byte addressable and the hardware mechanisms in the memory hierarchy remain unchanged.
Your friend believes that these two changes are sufficient to get persistent memory -- no further changes are required to the hardware, and the OS, libraries, and applications can run on such systems without change. Is your friend correct? If yes, explain your reasoning. If not, pick one fundamental problem that might arise in such a system, describe it, and then present the necessary changes to the system proposed by your friend that would enable programmers to mitigate the fundamental problem you identified. Feel free to propose changes to both the hardware and software stack.