Flash Software Rules In Hierarchical Storage

Nov. 17, 2014
SanDisk's non-volatile memory file system (NVMFS) supports auto commit memory (ACM) that provides fine grain flash memory updates.

SanDisk has been at the forefront of flash storage technology from its inception. It has had a range of consumer and embedded flash products and has moved into the enterprise space as well. This is where the non-volatile memory file system (NVMFS) comes into play.

Flash has always had a challenging time compared to RAM although it has done very well compared to hard disks as flash prices have fallen and capacities have grown. In the long past, from a technology standpoint, we had memories like magnetic core memory that delivered non-volatile main memory (see “Magnetic Cores To MRAM: Nonvolatile Tipping Point?”).

SRAM and DRAM are now the mainstays for a processor's primary memory but they are volatile. This means that software has to perform various programmatic gymnastics to get important data from the volatile memory to non-volatile storage. This has typically been done using block storage devices like hard disks and solid state disks (SSD).

There are now some DRAM products that combine DRAM and flash onto the same DIMM (see “Non-Volatile DIMMs and NVMe Spice Up The Flash Memory Summit”). They usually have a supercap that allows DRAM contents to be copied to on-board flash storage in the event of a power failure. The flash memory is read when the system is restarted. The challenge is packing enough of each type of memory onto the DIMM. Obviously it is less than having a DIMM of only one type or the other.

This approach incurs overhead in a number of areas from the disk controller to the software that has to partition transfers into blocks that the storage devices can handle. This often leads to software exercises such as double buffering and journaling to make sure that data can be consistently retrieved in the event of power loss either intentionally during a shutdown or accidentally.

1. SanDisk UltraDIMM (top/rear, bottom/front) plugs into a standard DDR DIMM socket but it contains flash memory. It can be updated at the row level instead of the block level required for disk storage.

Last year I gave one of our Best of Electronic Design awards to Diablo Technologies for their Memory Channel Storage (MCS) architecture (see “Large-Scale Flash Moves Next To The Microprocessor”). The DIMMs have only flash storage but a DDR DRAM interface. It eliminates the disk controller normally associated with flash storage and provides the highest speed interface to the flahs memory. SanDisk's UltraDIMM (Fig. 1) implements this MCS and others have incorporated it into their hardware such as IBM with its eXFlash DIMMs.

Download this article in .PDF format
This file type includes high resolution graphics and schematics when applicable.

Diablo Technologies is adding a feature called NanoCommit (see “Memory Channel Flash Storage Provides Fast RAM Mirroring”). This is a software interface that tracks data written to DRAM and moves changes incrementally and in small blocks to flash.

2. The non-volatile memory file system (NVMFS) can look like a regular file system but it utilizes non-volatile memory level primitives to update smaller amounts of memory quickly.

Taking advantage of devices like UltraDIMM takes software and that is why this year SanDisk gets the honors for its non-volatile memory file system (NVMFS). NVMFS is another file system but it adds features like atomic writes (Fig. 2). ACID (Atomicity, Consistency, Isolation, Durability) is key to proper database operation and atomic writes are the basis of this support.

At the bottom of the stack is SanDisk's ioMemory and UltraDIMM's that provide the flash storage. The difference between a conventional file systems and NVMFS is that once data is written it is saved in non-volatile storage compared to a typical disk-based, double buffering approach (Fig. 3). The underlying system employs SanDisk's auto commit memory (ACM) that has byte-level granularity. This allows applications like Oracle's MySQL to use NVMFS without logging transactions that can cut performance in half.

3. NVMFS allows databases like Oracle's MySQL to deliver atomic writes without double buffer by writing directly to flash. (Click for larger image)

Another advantage of this approach is the ability to implement NVM-Compression in NVMFS. It allows thin-provisioning of the underlying flash memory using pluggable compression algorithms. This eliminates MySQL bit packing and requires no rebalancing. Empty data within a file is unmapped using flash TRIM functions.

NVM-Compression can be implemented with minimal overhead especially compared to row compression (Fig. 4). Most SQL databases implement row compression where each row is compressed before it is written. NVM-Compression allows the row to be written without being compressed and the backend handles the compression for the database server.

4. NVM-Compression provides a higher transaction rate than row compression that has a high overhead.

NVMFS is part of the trend towards software-defined, multi-tier storage. It allows incorporation of a range of storage technologies into a hierarchy that delivers higher performance and capacity while limiting changes to applications.

Also check out OpenNVM. This is an open-source project that is defining new interfaces and system support such as flash-aware Linux swap support. There is also a native key-value interface to flash.

Flash storage technology is changing rapidly. Technologies like NVMFS provides significant benefits while changing how applications take advantage of non-volatile storage. 

About the Author

William G. Wong | Senior Content Director - Electronic Design and Microwaves & RF

I am Editor of Electronic Design focusing on embedded, software, and systems. As Senior Content Director, I also manage Microwaves & RF and I work with a great team of editors to provide engineers, programmers, developers and technical managers with interesting and useful articles and videos on a regular basis. Check out our free newsletters to see the latest content.

You can send press releases for new products for possible coverage on the website. I am also interested in receiving contributed articles for publishing on our website. Use our template and send to me along with a signed release form. 

Check out my blog, AltEmbedded on Electronic Design, as well as his latest articles on this site that are listed below. 

You can visit my social media via these links:

I earned a Bachelor of Electrical Engineering at the Georgia Institute of Technology and a Masters in Computer Science from Rutgers University. I still do a bit of programming using everything from C and C++ to Rust and Ada/SPARK. I do a bit of PHP programming for Drupal websites. I have posted a few Drupal modules.  

I still get a hand on software and electronic hardware. Some of this can be found on our Kit Close-Up video series. You can also see me on many of our TechXchange Talk videos. I am interested in a range of projects from robotics to artificial intelligence. 

Sponsored Recommendations


To join the conversation, and become an exclusive member of Electronic Design, create an account today!