Modern solid state drives (SSDs) unnecessarily confine applications to the conventional block I/O interface, which under-utilizes SSD’s internal resources, leading to suboptimal performance and unsatisfactory lifetime.
This thesis first presents the key-addressable, multi-log SSD (KAML), an SSD with a key-value interface that uses a novel multi-log architecture and stores data as variable-sized records rather than fixed-sized sectors. Exposing a key-value interface allows applications to remove a layer of indirection between application-level keys and data stored in the SSD. KAML also provides native support for fine-grained atomicity and isolation. We have implemented a prototype of KAML on an SSD development platform, and results show that KAML outperforms conventional systems by up to 4.0X.
Existing SSDs also provide flash-based out-of-band (OOB) data that can only be updated on a conventional write. Consequently, the metadata stored in their OOB region lack flexibility due to the idiosyncrasies of flash memory, incurring unnecessary flash write operations detrimental to device lifetime. This thesis also presents PebbleSSD, an SSD with byte-addressable metadata, or BAM, as a mechanism exploiting the nonvolatile, byte-addressable random access memory (NVRAM) inside the SSD. With BAM, PebbleSSD can support a range of useful features to improve its lifetime by reducing redundant flash writes. We have implemented a prototype of PebbleSSD on an SSD development platform, and experimental results demonstrate that PebbleSSD can reduce the amount of data written by log-structured file systems during log cleaning by up to 99%, and reduce file-system-level write amplification by up to 33% for a number of workloads.
Finally, previous proposals for SSDs with new interfaces suffer from the limitation caused by one-at-a-time design approach. To overcome this limitation, the thesis presents Willow, a user-programmable SSD with programmability as a central feature. Willow allows programmers to augment and extend the semantics of an SSD with application-specific features without compromising file system protections. We demonstrate the effectiveness and flexibility of Willow by implementing support for atomicity as an example. We find that defining SSD semantics in software is easy and beneficial, and that Willow makes it feasible for database transaction processing workload to benefit from a customized SSD interface.