SSDs were built because there are billions of SATA and SAS disk ports available. Filling some of those ports with SSDs promised to be quite profitable - a promise fulfilled in the last 5 years.
But now that non-volatile memory technology - flash today, plus RRAM tomorrow - has been widely accepted, it is time to build systems that use flash directly instead of through our antique storage stacks. The various efforts to decrease latency - SATA 3, NVMe, and others - still add layers of software between our applications and our data, creating complexity and wasting CPU cycles. A recent PhD thesis got me to thinking about this.
A famous computer science aphorism states "All problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection." When that happens some of those layers have to go.
We're at that point with SSDs. SSDs rely on a Flash Translation Layer (FTL) that makes flash - with its slow writes and limited endurance - look like a disk drive. The FTL is a layer of indirection.
File systems already provide a layer of indirection by treating storage devices as contiguous logical address spaces. They manage the logical addresses by maintaining detailed metadata including bitmaps that track the device's block allocation.
However, the FTL also maintains a contiguous logical address space behind which activities such as wear-leveling and garbage collection are hidden. The obvious question is: why maintain two logical address spaces? Why not have the file system directly manage the flash?
If we got rid of the FTL, SSDs would be faster, lower cost, and more reliable. What's not to like?
The Storage Bits take
SSDs are obsolete in an architectural, not functional, sense. They offer many advantages over disk drives, which will also continue to sell in the hundreds of millions for years to come, but the motivating idea behind SSDs - fill those SATA ports! - is less and less relevant to today's systems.
We need to incorporate flash and, soon, byte-addressable NVM memory, as they are, rather than making them seem like disks. This is no small effort, but with the slowing of processor performance increases, systems need to find performance elsewhere. The storage stack is ripe for disruptive improvement.
Comments welcome, of course. While this post was inspired by Yiying Zhang's excellent PhD thesis, I'm responsible for any over-simplifications and errors.