NAND flash memory is being widely adopted as a storage medium for embedded devices. FTL (Flash Translation Layer) is one of the most essential software components in NAND flash-based embedded devices as it allows to use legacy files systems by emulating the traditional block device interface on top of NAND flash memory.
In this paper, we propose a novel FTL, called μ-FTL. The main design goal of μ-FTL is to reduce the memory footprint as small as possible, while providing the best performance by supporting multiple mapping granularities based on variable-sized extents. The mapping information is managed by μ-Tree, which offers an efficient index structure for NAND flash memory. Our evaluation results show that μ-FTL significantly outperforms other block-mapped FTLs with the same memory size by up to 88.1%. μ-FTL also implements its own power-off recovery mechanism.
많은 임베디드 장치에서 낸드 플래시 메모리를 저장매체로 사용하는 비중이 늘어나고 있다. FTL(Flash Translation Layer)은 낸드 플래시 위에서 블록 디바이스 인터페이스를 에뮬레이팅 함으로써 기존의 파일 시스템을 수정 없이 사용할 수 있도록 해주는 필수적인 소프트웨어이다.
본 논문에서는 μ-FTL이라는 새로운 FTL을 제안하였다. μ-FTL의 설계 목적은 최대한 적은 양의 메모리를 사용하면서도, 다양한 사상 단위를 지원하는 `extent`를 사용하여 성능을 최대화 하는 것이다. μ-FTL의 매핑 정보는 μ-Tree라고 하는 낸드 플래시에 맞도록 최적화된 인덱스 구조에 의하여 관리된다. 우리의 실험 결과에 따르면, μ-FTL은 기존의 다른 FTL과 비교하여 같은 크기의 메모리를 사용하면서도, 최대 88.1%의 성능 향상을 보인 것으로 나타났다.
FTL에서는 갑작스런 power failure가 발생할 경우 메모리에 있는 정보를 잃어버리게 된다. 이 때 적절한 조치를 취하지 않는다면, FTL이 관리하는 정보와 실제 낸드 플래시 상의 정보 사이의 불일치가 발생하여 큰 문제가 생길 수 있다. 이에 대비하기 위해서, μ-FTL에서는 갑작스런 power failure에 대비하기 위한 자체적인 복구 메커니즘 또한 구현하였다.