FTL의 맵핑과 가비지컬렉션

도건우·2024년 1월 8일
0

SSD와 FTL

목록 보기
2/4

##FTL

Flash Translation Layer

플래시 메모리 디바이스에서 데이터를 관리하고 조작하기 위한 소프트웨어를 나타낸다. 다양한 플래시 메모리 소프트웨어는 특정 소프트웨어에 맞게 설계되어 있으며, 주로 다음과 같은 목적으로 사용된다.

SSD의 특성을 숨기고 HDD의 기능을 모방한 소프트웨어 레이어이다. FTL의 궁극적인 역할은 각 블록들이 빈번하게 쓰기/삭제 과정을 거치면 사용 불가능 상태가 되기 때문에, 셀 간의 작업을 분산하여 각 블록들이 P/E Cycle 한계에 동시에 도달하도록 하는 것이 FTL의 중요한 목표 중 하나이다.

FTL(Flash Translation Layer)은 호스트의 LBA(Logical Block Address)와 드라이브의 PBA(Physical Block Address)를 맵핑해주는 SSD 컨트롤러의 컴포넌트이다.가장 최근의 드라이브는 Log Structure 파일 시스템과 같이 작동하는 “hybrid log-block mapping” 또는 그 파생 알고리즘을 구현하고 있다.이 알고리즘은 랜덤 쓰기를 시퀀셜 쓰기처럼 핸들링할 수 있도록 해준다.

필요성

SSD는 HDD와 동일한 호스트 인터페이스를 이용한다. LBA 어레이는 덮어쓰기가 가능한 HDD에서만 적합한 요소이기 때문에 SSD에는 적합하지 않다. 이 때문에 NAND 플래시 메모리는 내부적인 특성을 숨기고 호스트로 노출하기 위해서 부가적인 컴포넌트를 필요로 한다. 이 컴포넌트를 FTL이라고 하며, SSD 컨트롤러 내부에 위치하고 있다. FTL은 아주 중요한 역할을 담당하며, 논리적 블록 맵핑과 가비지 컬렉션 2개의 중요한 부분을 담당한다.

논리적 블록 맵핑

Page-level Mapping

NAND 플래시 메모리에서 발생하는 주소 변환을 페이지 단위로 수행하는 기술을 의미한다. 가상 주소 공간의 작은 페이지를 실제 NAND 디바이스의 물리적인 페이지로 효율적으로 매핑한다. 페이지 맵핑 정보를 맵핑 테이블에 저장한다.
1. 주소 변환
2. Wear-Leveling
3. 가비지 컬렉션
4. 비트 역연산

Block-level Mapping

플래시 메모리의 물리적인 특성을 고려하여 가상 주소 공간의 블록을 물리 메모리 블록으로 매핑한다. 맵핑 테이블 크기를 줄이지만 작은 크기의 쓰기에는 비효율적이다.
1. 고정된 블록 크기
2. 가상 주소와 물리 주소간의 블록 매핑
3. 주소 변환 테이블
4. 블록 수준 Wear-Leveling

가비지 컬렉션

덮어쓰기의 불가능으로 stale 상태의 페이지는 재사용되기 위해서 삭제되어야 한다.

Garbage-collection 프로세스는 stale 상태의 페이지들이 삭제되어 새로운 쓰기 데이터를 저장할 수 있도록 해주는 과정이다.

주기적으로 stale 페이지를 free로 만들어서 충분한 free 상태의 페이지가 준비되어 있으면 유저의 쓰기는 속도가 느려지지 않고 충분히 빠른 쓰기 속도를 보장받을 수 있다.

콜드 데이터와 핫 데이터 분리

SSD 컨트롤러는 콜드 데이터와 핫 데이터를 가진 페이지들을 Wear Leveling 하기 위해서 주기적으로 스왑을 해야 한다. 하지않는 다면 Write Amplication 이 심해지는데, 이를 위하여 두 데이터를 서로 다른 페이지로 분리해야 한다.

가비지 컬렉션의 성능을 위하여 콜드 데이터와 핫 데이터를 분리 해야한다.

0개의 댓글