[SSD.4] FTL

ys0820.kim·2022년 12월 15일
1

FTL (Flash Translation Layer)

SSD가 HDD를 쉽게 대신할 수 있는 이유는 동일한 host interface를 이용하기 때문이다.
HDD는 수정이 가능하지만 SSD는 Nand Flash Memory의 특성상 수정이 불가능하다.
하지만 FTL 덕분에 동일한 host interface를 가질 수 있다. FTL은 SSD 컨트롤러 내부에 위치하는 컴포넌트로 Logical Block Mapping과 Garbage-collection 2가지를 담당한다.

Logical Block Mapping

  • 정의 : LBA를 PBA로 변환시켜주는 역할

  • LBA (Logical Block Address) : OS가 인식하는 호스트 영역의 논리적 주소

  • PBA (Physical Block Address) : NAND 플래시 메모리의 물리적 주소

LBA + PBA로 구성된 테이블을 가진다.
-> RAM에 저장되어 빠른 엑세스 가능
-> 비휘발성인 플래시 메모리에도 저장됨.
-> 전원을 on/off하면 플래시 메모리에서 RAM으로 Load한다.

  • 테이블 Mapping 방법 :
    - Page-Level-Mapping :
    -- 장점 : 한 번 쓰기 작업을 수행할 때, 어떤 위치던 쓸 수 있다.
    -- 단점 : Mapping Table의 크기가 크기 때문에 Ram 용량이 커야한다. -> SSD 생산 단가가 높아짐
    -- Mapping Table : Page Number를 기록
  • Block-Level-Mapping : Logical Block Number와 Page Offset을 계산하여 Mapping.
    -Logical Block Number = Logical Page Number / 1Block내 전체 Page수
    -Page Offset = Logical Page Number % 1Block내 전체 Page수
    -- 장점 : Mapping Table 크기가 작다.
    -- 단점 : 1page만 수정하여도 1block 전체에 대한 쓰기 작업을 수행해야 한다.
    -- Mapping Table : Block Number를 기록
  • Hybrid-Mapping :
    Write Buffer 개념인 Log Block을 사용한다.
    Mapping Table은 LBN + PBN으로 관리한다.
    Overwrite 요청이 들어오면 log Block에 Page를 연속적으로 쓴다. -> 나중에 다른 빈 Block에 원래 Data Block과 Merge한다.

Garbage Collection

새로운 데이터는 free page에 기록
삭제할 데이터는 stable로 마킹 처리

호스트로부터 새로운 쓰기 요청에 대비하여 free page 공간을 확보하기 위해 주기적으로 Garbage Collection을 수행한다.

  • 전략1 : Hot Data와 Cold Data를 분리한다.
    -- Hot Data : 빈번하게 변경되는 정보
    -- Cold Data : 자주 변경되지 않는 정보
    --> Hot Data와 Cold Data가 동일한 Page에 저장된다면 Cold Data는 Block 단위의 지우기 작업을 통해 불필요하게 계속 쓰기 작업을 수행하게 된다.

  • 전략2 : Hot Data Buffering
    -- Hot Data는 버퍼링을 통해 SSD에 최대한 덜 업데이트 되도록 만든다.
    -- 버퍼링 : 쓰기/덮어쓰기 작업이 일어났다고 해서 바로 실제 메모리에 결과를 반영하지 않고 임시 저장소 (버퍼)에 잠시동안 옮겨 놓았다가 나중에 다른 데이터 변경점들과 한꺼번에 실제 메모리에 반영하는 기술

출처1 : https://tech.kakao.com/2016/07/15/coding-for-ssd-part-3/

출처2 : https://ji007.tistory.com/entry/FTL-address-mapping

0개의 댓글