Prototyping a high-performance low-cost solid-state disk

We present a design for a high-performance low-cost solid-state disk (SSD). Ignoring garbage-collection costs, our SSD performs only 1 + ε physical accesses to NAND flash pages for every request of a page-size block by the host, for some small ε. This is true for all access patterns, including random writes, which are usually slow on low-cost SSDs. Garbage collection in all SSDs is determined primarily by how full the SSD is, and its cost is similar in most SSDs. The unique feature in our design is that it achieves high performance even with when the SSD contains only a small amount of RAM. In most SSD designs, this would imply low performance; in ours, it does not. A small RAM lowers the cost of an SSD with a given flash array. Our design achieves high performance with a small RAM using two innovative ideas. One is the use of a clever mapping data structure. The second is a host-assisted hinting mechanism that uses RAM on the host to compensate for the small amount of RAM within the SSD. This mechanism is implemented as an enhanced SCSI driver (kernel module). Our prototyping methodology is also a significant contribution. We simulate the SSD in software, using files to represent the flash array, but the resulting prototype is a working SCSI device that file systems can be mounted on.

[1]  Pete Wyckoff,et al.  Integrating parallel file systems with object-based storage devices , 2007, Proceedings of the 2007 ACM/IEEE Conference on Supercomputing (SC '07).

[2]  T. Fujita tgt: Framework for Storage Target Drivers , 2010 .

[3]  Pete Wyckoff,et al.  Non-Contiguous I/O Support for Object-Based Storage , 2008, 2008 International Conference on Parallel Processing - Workshops.

[4]  Sivan Toledo,et al.  Characterizing the Performance of Flash Memory Storage Devices and Its Impact on Algorithm Design , 2008, WEA.

[5]  W LampsonButler,et al.  Hints for computer system design , 1983 .

[6]  Joonwon Lee,et al.  Exploiting Internal Parallelism of Flash-based SSDs , 2010, IEEE Computer Architecture Letters.

[7]  Butler W. Lampson,et al.  Hints for Computer System Design , 1983, IEEE Software.

[8]  Michael Isard,et al.  A design for high-performance flash disks , 2007, OPSR.

[9]  Rina Panigrahy,et al.  Design Tradeoffs for SSD Performance , 2008, USENIX ATC.

[10]  Heeseung Jo,et al.  A superblock-based flash translation layer for NAND flash memory , 2006, EMSOFT '06.

[11]  Young-Jin Kim,et al.  LAST: locality-aware sector translation for NAND flash memory-based storage systems , 2008, OPSR.

[12]  Sivan Toledo,et al.  NANDFS: a flexible flash file system for RAM-constrained systems , 2009, EMSOFT '09.

[13]  Sang-Won Lee,et al.  A log buffer-based flash translation layer using fully-associative sector translation , 2007, TECS.

[14]  Sivan Toledo,et al.  Competitive analysis of flash memory algorithms , 2011, TALG.

[15]  Sang Lyul Min,et al.  A space-efficient flash translation layer for CompactFlash systems , 2002, IEEE Trans. Consumer Electron..

[16]  Youngjae Kim,et al.  DFTL: a flash translation layer employing demand-based selective caching of page-level address mappings , 2009, ASPLOS.

[17]  Andrea C. Arpaci-Dusseau,et al.  Removing the Costs of Indirection in Flash-based SSDs with Nameless Writes , 2010, HotStorage.