Member-only story

First Fail FTL — SSD Firmware Development — Part 13

Lan D. Phan
3 min readJun 9, 2019

--

Continuing from our last part, we need to evaluate the validity of our simple and naive flash translation layer. Let’s jump right in and look at some simple tests. There are some basic tests related to NandSim, NandHal, HostComm, and SimFramework that we can see from the code repository. But, we will be focusing a bit on the SimpleFtl tests.

Here’s the repository again: SsdSim-Part12

Basic SimpleFtl Tests

As you can see, we verify the translation, have some basic write-read-verify tests (even for an unaligned case), and even some benchmarking (which isn’t quite useful on the current simulation platform). What’s wrong with this is all the tests passed. This is definitely NOT a dream come true, as I have been foreshadowing how naive this simple flash translation layer is. So what’s wrong?

Let’s take a closer look at a couple of the tests, namely BasicRepeatedWriteReadVerify and BasicDescendingWriteReadVerifyAll. As the name may suggest, BasicRepeatedWriteReadVerify simply write to the same logical addresses (or LBAs) more than once. Since our simple flash translation layer does a direct translation, this implies the corresponding NAND space is also be written to repeatedly. You may have recalled, NAND flash requires that a block be erased before being written to again. Nowhere in the SimpleFTL do we handle this erasure before…

--

--

No responses yet