Skip to content

2. Open Channel SSDs

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

SSDs are composed of tens of flash chips wired in parallel to a controller through channels. Flash memory is organized as shown in Figure 1. An embedded FTL abstracts the non-volatile memory and exposes a flat address space to the host. This arbitration shields the host from dealing with physical media.

Solid-State Drive Geometry Figure 1. Solid-State Drive Geometry

Open-channel SSDs expose their media geometry to the host and allow applications to decide how to place and manage data across flash chips, dies, blocks, and pages. FTL responsibilities such as wear-leveling (WL), logical to physical mapping (L2P), garbage collection (GC), bad block management (BB), recovery (REC), among others, may be implemented on the host side or kept within the device controller. These decisions depend on the application needs and will result on different generations of Open-Channel SSDs. Open-Channel SSDs implement the PPA I/O interface​. Please refer to Open-Channel SSDs​ for further details.

Open-channel SSD v1.2

This was the first generation of open-channel SSDs. This is the specification that OX currently implements. Future versions of OX are expected to implemented later versions of open-channel SSDs.

PPA format: [channel,LUN,block,plane,page,sector]

Open-channel SSD v2.0

In this generation, a few functionalities previously implemented by the host are back to the device controller. An example is the metadata related to physical blocks and the bad block table.

PPA format: [group,punit,chunk,sector]

ZNS SSDs

This is the latest generation, which encapsulates even more functionalities in its controller. An example is the write pointer of each physical blocks that is now handled by the ZNS SSD. These devices also implement the "append" function in each of its zones.

PPA format: To be defined

Clone this wiki locally