토픽 57 / 111·메모리 계층 (Memory Hierarchy)
FTL (Flash Translation Layer)
FTL (Flash Translation Layer)
NAND 플래시의 논리 블록 주소(LBA)를 물리 페이지/블록 주소(PPA/PBA)로 변환하고, 플래시 특성(소거 후 쓰기, 제한된 P/E 사이클)을 관리하는 SSD 내부 펌웨어 계층
목적: 호스트에 블록 디바이스 인터페이스 제공, 플래시 특성 은닉, 수명 관리, 성능 최적화
특징: 주소 매핑(논리→물리), Wear Leveling, Garbage Collection, TRIM 지원
주소 매핑 방식
- •페이지 레벨 매핑: LBA → 물리 페이지 단위 매핑, 유연성 최고, 매핑 테이블 크기 큼(DRAM 필요)
- •블록 레벨 매핑: LBA → 물리 블록 단위 매핑, 테이블 작음, 부분 갱신 비효율(블록 전체 소거)
- •하이브리드 매핑: 핫 데이터는 페이지 레벨, 콜드 데이터는 블록 레벨, 성능과 메모리 균형
Wear Leveling (마모 균등화)
- •정적(Static): 전체 블록 대상, 콜드 데이터 블록도 주기적으로 이동하여 고르게 소모
- •동적(Dynamic): 쓰기 시 가장 적게 소거된 블록 선택, 구현 단순, 콜드 데이터 편중 가능
Garbage Collection (GC)
- •무효 페이지가 포함된 블록에서 유효 페이지를 다른 블록으로 복사 → 원래 블록 소거 → 재사용
- •Write Amplification(쓰기 증폭): 호스트 쓰기량 대비 실제 NAND 쓰기량 증가, WAF = NAND쓰기/호스트쓰기
- •GC 트리거: 여유 블록 부족 시 백그라운드 또는 포그라운드 실행
TRIM: OS가 삭제된 LBA를 SSD에 통지 → FTL이 해당 페이지를 무효화 → GC 효율 향상, 성능 유지
비교
적용사례: 모든 SSD/eMMC/UFS 내부 컨트롤러, Samsung(독자 FTL), 오픈소스(OpenSSD)
연관: SSD, NAND 플래시, Wear Leveling, Garbage Collection, TRIM, NVMe