3 comments

[ 3.2 ms ] story [ 11.4 ms ] thread
How does this deal with the fact that NAND flash isn't randomly rewritable?
Can anyone explain what the value-add of this product is?

If it's increasing memory sizes, we already have virtual memory.

If it's about increasing IO speeds to NVM, we already have NVMe.

Those configurations are more widely-supported and cheaper, so why would anyone rely on this product?

I would not buy this product yet for storage.

There's a shiny spec for how storage devices in DIMM slots are supposed to work. It's spelled out in painful detail in ACPI 6, and it requires a Skylake CPU to work safely. The Skylake CPU is a big deal: it adds a PCOMMIT instruction that tells the CPU and memory controller to flush data out to memory-like storage to make it durable. It also adds a CLWB instruction that's important to get good performance.

Linux drivers for these devices are starting to appear. The devices can appear as block devices or (much faster) byte-addressable memory-mapped devices. Somewhat surprisingly, not all existing filesystems work on the latter -- filesystems expect atomic sector access, not atomic byte access.

This thing does not appear to be one of those devices. According to the FAQ, they appear as block devices (so no super-fast mmap access). There are no obvious performance numbers on their website.

Most worryingly to me, they don't explain how it's reliably durable on pre-Skylake systems. To the best of my knowledge, getting this kind of thing to work reliably pre-Skylake involves nasty (and slow!) tricks with the memory controller, a hackish thing called ADR (asynchronous DRAM refresh), or maybe even a really awful hack in which power failure sends the OS an NMI and the OS responds by flushing the whole system cache (with WBINVD) and hoping that the PSU can keep the CPU and memory controller alive long enough for the flush to work.