Solid-state storage technologies, such as flash, phase-change memory and memristors promise large-capacity storage at speeds much faster than disk. To date, mainstream use of these technologies has been as a replacement for disks, storing a disk-oriented file system. However, solid-state storage is and will remain far more expensive than disks. Thus, it will often be used as a cache or special-purpose store, and not as the main repository of data.
This proposal develops new interfaces to solid-state storage that leverage its new features, such as access via ordinary memory instructions, and its role in large software systems as a middle layer between memory and disk. It focuses on two forms of solid-state storage: flash memory, common in solid-state drives and mobile devices, and forthcoming storage-class memory, which compared to flash promises lower latency, better endurance, and access as memory rather than as a device.
This research addresses important concerns about using solid-state storage: how best to use the capabilities of these devices to improve specific applications or use cases, such as caching; how to provide access to internal management capabilities of solid-state storage devices, such as address translation and garbage collection, to applications; how to remove software layers between an application and storage to reduce latency; and how to provide reliable storage while removing many of the layers that currently provide reliability.