Computational Storage

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 disk controllers would need a programming environment.

Computational storage makes it possible to define a new storage interface directly on the storage controller or on a processing unit (FPGA or SoC) placed on the data path. Storage interfaces can thus be tailored to the needs of a class of database storage managers, with an appropriate data model and operations.

Our research addresses the following questions: (1) Who defines storage interfaces and programs the storage controller? (2) What are relevant storage interfaces, and what is actually programmed? (3) How are these programs written?

OX Framework

OX is a framework for programming storage devices equipped with computational capabilities, i.e., programmable storage controllers. OX was implemented and evaluated on the DFC card, an ARMv8 storage controller on top of various storage media, including Open-Channel SSDs. OX consists of three layers. The bottom layer handles media management: it abstracts various forms of underlying storage media under a common representation of the physical address space. The middle layer translates logical addresses to physical addresses; it is the flash translation layer (FTL). The upper layer is the host interface, which supports the commands and notifications that host applications use to store and retrieve data with OX.