Twenty years ago, Jim Gray wrote: Put Everything in Future Disk Controllers (it’s not “if”, it’s “when”). His argument was that running application code on disk controllers would be (a) possible because disks would be equipped with powerful processors and connected to networks via high-level protocols, and (b) necessary to minimize data movement. He concluded that there would be a need for a programming environment for disk controllers.
Computational storage makes it possible to define a new storage interface directly on the storage controller or on a processing unit (FPGA or SoC) introduced on the data path. Storage interfaces can thus be tailored to the need of a class of database storage manager, with appropriate data model and operations.
Our research address the following questions: (1) Who defines storage interfaces and programs the storage controller? (2) What are relevant storage interfaces? What is actually programmed? and (3) How are programs written?
OX is a framework for programming storage devices equipped with computational capabilities., i.e., a programmable stor- age controller. OX was implemented and evaluated with the DFC card, i.e., an ARMv8 storage controller on top of various storage media, including Open-Channel SSDs. OX is composed of three layers. The bottom layer focuses on media management, it is responsible for abstracting various forms of underlying storage media under a common repre- sentation of the physical address space. The middle layer is responsible for the translation of logical addresses to phys- ical addresses. It is an FTL layer. The upper layer is the host interface that supports the commands and notifications that the host applications uses to store and retrieve data with OX.