Skip to content

4. OX Controller

Ivan Picoli edited this page Aug 20, 2019 · 7 revisions

OX is a computational storage SSD controller. OX implements the NVMe interface and comprises several layers running their own responsibilities. Each layer registers an entry point for global functions, avoiding redundant calls. Figure 3 depicts the OX layers.

OX Controller Layers Figure 3. OX Controller Layers

  • Upper Layer (NVMe over Fabrics and PCIe): Communication between controller and host. This layer implements responsibilities such as NVMe register mapping and RDMA connections. It gathers data from the host and sends it to the command parser layer.

  • Upper Layer (Command parsers): Parses commands from the NVMe layer and calls the FTL instance at the middle layer. The parser is developed according to the application interface.

  • Middle Layer (Flash Translation Layers): Manages bottom layer channels, accepts I/O commands (a command may have several pages) and sends page-level commands to the bottom layer. It implements responsibilities related to media management such as wear-leveling, mapping, garbage collection, bad block management, and recovery. It might implement application-specific functions depending on the purpose the FTL was developed for.

  • Bottom Layer (Media Abstraction): Identifies the non-volatile memory, and registers a channel abstraction with its geometry to be available to the stack. The bottom layer implements read/write/erase commands to specific pages and blocks. OX may have several media abstractions exposing channels from different sources. For instance, OX is currently abstracting open-channel SSDs v1.2 and volatile DRAM.

Clone this wiki locally