Abstract
NAND Flash Storage Controllers are a crucial component of Solid State Drives (SSDs). They provide an abstraction
of Flash packages to the SSD firmware by translating high-level
operations, such as a Page Program or a Block Erase, into lowlevel signals. In theory, the Open NAND Flash Interface (ONFI)
specification standardizes this interface. In practice, however,
every package supports optimized versions of the standard operations as well as non-standard operations. Writing a controller
that exploits these optimizations is the only way to obtain
competitive performance, but it makes for a highly intricate,
error-prone, and non-portable controller development process.
Compounding the issue is the fact that new generations of Flash
packages are produced yearly, and non-standard optimization
techniques are often presented in the literature. Modifying rigid
hardware controllers to support these advancements is extremely
challenging, making it difficult to rapidly prototype new SSDs
and exploit the full potential of Flash memory.
To address this, we propose BABOL, a software-defined Flash
controller architecture that provides generic hardware building
blocks that can be flexibly combined via software to express
complex, package-optimized Flash operations. We implemented
two flavors of BABOL in an FPGA setting and experimented
with several commercial off-the-shelf Flash packages. Our results
show that the flexibility that BABOL brings far outweighs the
marginal amounts of performance and area it requires. We open
source our controller, including its unique software programming
environment, which we believe can make SSD controller development
more productive for seasoned SSD Architects and make
prototyping accessible for newcomers who want to join the field.
of Flash packages to the SSD firmware by translating high-level
operations, such as a Page Program or a Block Erase, into lowlevel signals. In theory, the Open NAND Flash Interface (ONFI)
specification standardizes this interface. In practice, however,
every package supports optimized versions of the standard operations as well as non-standard operations. Writing a controller
that exploits these optimizations is the only way to obtain
competitive performance, but it makes for a highly intricate,
error-prone, and non-portable controller development process.
Compounding the issue is the fact that new generations of Flash
packages are produced yearly, and non-standard optimization
techniques are often presented in the literature. Modifying rigid
hardware controllers to support these advancements is extremely
challenging, making it difficult to rapidly prototype new SSDs
and exploit the full potential of Flash memory.
To address this, we propose BABOL, a software-defined Flash
controller architecture that provides generic hardware building
blocks that can be flexibly combined via software to express
complex, package-optimized Flash operations. We implemented
two flavors of BABOL in an FPGA setting and experimented
with several commercial off-the-shelf Flash packages. Our results
show that the flexibility that BABOL brings far outweighs the
marginal amounts of performance and area it requires. We open
source our controller, including its unique software programming
environment, which we believe can make SSD controller development
more productive for seasoned SSD Architects and make
prototyping accessible for newcomers who want to join the field.
Original language | English |
---|---|
Title of host publication | IEEE/ACM International Symposium on Microarchitecture |
Publisher | IEEE/ACM |
Pages | 1-13 |
DOIs | |
Publication status | E-pub ahead of print - 2024 |