The Radical Future of NVM
Thanks to Linux Journal for publishing my article on
the rise of non-volatile solid-state memory.
This is fast novel transitor memory, not slow (and apparently lossy!) Flash-based chips.
Here's a bunch of links, more info, and other tidbits
that I didn't have the room to get in to the article.
Hard Drives / Hybrid Drives
The Linux Journal article covered a lot of ground very quickly and tried to show some ideas of the NVM future. There's a lot of stuff that either didn't make it in to the article, or was condensed down to mere hints.
Are multi-core and GPU computing just as / more important than NVM?
Multi-core CPUs have done their bit to change the way we think about computing and algorithm design but have not changed the basic system design. Likewise, using GPUs for off-chip processing is great, but its really just more CPU. But really, there's no good metric for "most important" architectural change.
Isn't the cloud a more important change than NVM?
I'm fortunate in that I was raised in a world of the The Andrew File System, so I'm quite at ease with cloud computing. Perhaps because of this I don't see cloud computing as comparable to NVM - the cloud/distributed computing is great, but we've been doing this for over 20 years. It's too bad that the Web effectively side-tracked - in my view - cloud computing for a decade or so, but yes, the cloud is great. Certainly, NVM is going to make the cloud work better. As I said above, there's no good metric for "most important". Right now, NVM needs more mind share.
Seems like cache consistency from CPU to NVM is more complicated than you think?
It sure isn't trivial. And, yes, that why either software or hardware transactional memory patterns will need to work well. And possibly be part of the language or OS itself. Case in point, many NVM manufacturers are using/buying transactional memory patents and algorithms. Getting people to think about this, especially the language/OS implications, is the point of the article.
Since NVM will be more expensive than DRAM, isn't all this quite overstated? Sure, if NVM will always be more expensive than DRAM. Yet, according to the the people shipping production NVM now, NVM will be price-competitive with DRAM at some point. If that point takes decades or doesn't ever happen, then its easy to imagine NVM being just part of the spectrum of CPU/CACHE/DRAM/NVM/DISK... But of course, if it comes sooner than later, I hope we can take advantage of some of the exciting changes in architecture that that will permit. And seriously, would you bet that a new memory technology wouldn't get cheaper over time?
OK, so an NVM board may be fast and persistent. But if there's a server motherboard failure, moving an NVM board into another machine is much more difficult than moving a disk. Yes. That's why we need to think about NVM now, rather than get stuck with that kind of scenario. An unplugged NVM board can be moved into a new server, but unlike a disk, much of the configuration information . what address blocks are assigned, etc . will nominally be lost. We'll need some sort of solution to this; of course, the NVM itself is a good place to store that configuration info!
Hey, if all my data is in NVM, what about privacy of any and all of my (currently volatile) data! Right. Disk encryption is a good thing, but on the slow side and problematic to administer, especially for civilians. I don't know how NVM encryption can be made simple and fun, but it is important. (And don't be too sure that your currently volatile RAM data is safe. This isn't just an NVM problem).
Can't we use super-capacitors on DRAM and get NVM now? Ummm, maybe. But super-capacitors have their own problems. A good solution to the problem with old-fashioned chemical batteries will wind up solving myriad problems from cell phones to alternative energy. Still, NVM is real and here now; just need to increase awareness and have the market and economies of scale max it out.
Is DRAM useful for anything? Why not have some DRAM in a system? No reason not to have some DRAM. DRAM or other transient memory cells may be better suited for video boards or cameras. I'm certainly trying to get people to use their imagination when contemplating a 100% NVM desktop or server of the near future. I think it's important to think about that scenario than just think about some incremental use of NVM.
It's unlikely that data written to NVM by an applications data structures would be readable by another, arbitrary, application. True, today. This is perhaps where better language support may be needed. Or, for example, applications could be more likely to use something like SQLite to store data in an organized RDBMS (and getting fast persistence for .free.). That way it's relatively easier for another application to attach to and use that data. This is all food for thought.
Why shouldn't NVM just be used as a high-performance storage system for niche applications? NVM will probably begin to be used this way, just as with Flash SSD. In fact, IBM calls NVM "storage class memory". But this is pretty limiting. The point of this article is to provoke more thinking about all sorts of more radical alternatives.
The bandwith gap between CPU and memory will still be a big deal. Yes, NVM solves other problems.
We need terabytes of storage for video and music. Yes, and video and music don't require nanosecond write latencies. Sounds like a great market for disk manufacturers.
What does this have to do with Linux? GNU/Linux/OSS leads in the innovation of languages, databases, filesystems, networking, operating system, device drivers. Getting some NVM mindshare in this community .. to really get some new ideas, novel use cases, more demand.