Linked by Thom Holwerda on Sun 14th Apr 2013 20:30 UTC
Hardware, Embedded Systems "In the past five years, flash memory has progressed from a promising accelerator, whose place in the data center was still uncertain, to an established enterprise component for storing performance-critical data. It's rise to prominence followed its proliferation in the consumer world and the volume economics that followed. With SSDs, flash arrived in a form optimized for compatibility - just replace a hard drive with an SSD for radically better performance. But the properties of the NAND flash memory used by SSDs differ significantly from those of the magnetic media in the hard drives they often displace. While SSDs have become more pervasive in a variety of uses, the industry has only just started to design storage systems that embrace the nuances of flash memory. As it escapes the confines of compatibility, significant improvements in performance, reliability, and cost are possible."
Thread beginning with comment 558557
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: Comment by TempleOS
by Neolander on Mon 15th Apr 2013 16:08 UTC in reply to "RE: Comment by TempleOS"
Neolander
Member since:
2010-03-08

Oh, there's something I missed this morning too...

Why would we go from volatile to non-volatile?


I'd say the main reason for doing that would be increased reliability and simplified abstractions.

Reliability would be increased because machines could be smoothly powered off and back without losing any state, and without a need for hackish "save RAM data to disk periodically" mechanisms. Suspend and hibernate could well cease to exist in less than a decade, replaced by the superior alternative of simply turning hardware on and off by flipping an hardware switch.

Abstractions would be simplified because there wouldn't be a need to maintain two separate mechanisms to handle application states and data storage and interchange through file. A well-designed filesystem could instead address the use cases of both malloc() and today's filesystem calls, much to the delight of "everything is a file" freaks from the UNIX world ;)

(As an aside, the latter could actually already be done today, by allocating all free RAM into a giant ramdisk, mounting it alongside mass storage, and treating process address spaces as a bunch of memory mapped files. It simply doesn't make sense at this point, since both memories have such different characteristics...)

Edited 2013-04-15 16:21 UTC

Reply Parent Score: 3

RE[3]: Comment by TempleOS
by Alfman on Mon 15th Apr 2013 18:02 in reply to "RE[2]: Comment by TempleOS"
Alfman Member since:
2011-01-28

I also think non-volatile ram would make a lot of sense, assuming the technology were feasible and not overly compromising like flash is today.

High throughput database and file system processes are obvious candidates, they would benefit tremendously by eliminating the need to O_DIRECT/fsync constantly for committing transactions.

By unifying ram/disk into one concept, we could open up new programming methodologies where programs and/or data can simply exist without having to sync state begin disks and ram. I'd even go further and make stateful objects network-transparent too so that they "just exist" and never need to be serialized from a programmer's point of view (such things could be handled automatically by the languages/operating systems). Like you say, this could be emulated today, but it'd necessarily have to be in a lower performance and/or less reliable fashion that NV-RAM could achieve.

Modern NAND flash is not ideal, the way it works adds latency and has undesirable addressing properties. NOR flash is technically far closer to a RAM substitute since it's truly random access and more reliable than NAND without needing the whole Flash Translation Layer in front of it. If NOR flash could be made cheaper and more densely, it would completely replace NAND.

Reply Parent Score: 3

RE[3]: Comment by TempleOS
by saso on Mon 15th Apr 2013 19:21 in reply to "RE[2]: Comment by TempleOS"
saso Member since:
2007-04-18

What you describe is already in place, it's called "suspend to RAM" (aka "sleep") and it's far from simple. There's tons of runtime state that needs to be stored and restored when a machine changes power states that isn't in main memory. Just a little food for thought:

* peripherals (graphics cards, displays, mice, scanners, etc.)
* timing circuits (programmable interrupt clocks, watchdogs, etc.)
* environmental dependencies (open network connections, security contexts, etc.)

All of these need to be gracefully taken care of and reinitialized, and if possible made to continue previously interrupted tasks. All of this is already handled by current OSes. And all of this is very, very messy and complicated.

Reply Parent Score: 5

RE[4]: Comment by TempleOS
by Neolander on Mon 15th Apr 2013 19:59 in reply to "RE[3]: Comment by TempleOS"
Neolander Member since:
2010-03-08

If NVRAM becomes as dirt cheap as DRAM is today, nothing would prevent its use in peripherals and timing circuitry too. The scenario which I describe, getting rid of that suspend kludge at last, can only work if everything that holds state inside of a computer is based on NVRAM.

It's true that environmental dependencies would still have to be taken into account. But these are handled at a higher level than hardware considerations, and can consequently be taken care of in a much cleaner way. Network connections can time out and be brought back, as an example.

If you think of it, a constantly failing wireless network connection should be much more of a hassle to handle than infrequent suspends, and yet if you aren't in a hurry modern OSs can handle that.

Edited 2013-04-15 20:15 UTC

Reply Parent Score: 2

RE[4]: Comment by TempleOS
by Alfman on Mon 15th Apr 2013 22:37 in reply to "RE[3]: Comment by TempleOS"
Alfman Member since:
2011-01-28

saso,


"All of these need to be gracefully taken care of and reinitialized, and if possible made to continue previously interrupted tasks. All of this is already handled by current OSes. And all of this is very, very messy and complicated."

Indeed, however it's complicated BECAUSE they use volatile ram. All of that mess could be avoided in the future with NV-RAM. That's the point, hypothetically if future NV-RAM could be built to be as practical as normal RAM, then there wouldn't be a reason to use normal ram anywhere. Making devices power up into their previous state would be free, or next to it, without any of today's complications caused by volatile ram.

Edited 2013-04-15 22:39 UTC

Reply Parent Score: 3

RE[3]: Comment by TempleOS
by Flatland_Spider on Mon 15th Apr 2013 19:25 in reply to "RE[2]: Comment by TempleOS"
Flatland_Spider Member since:
2006-09-01

It's looking more and more like the future belongs to SoCs, and RAM will become just another cache on the CPU. To really make that work NVRAM is needed.

Reply Parent Score: 2