Flash Translation Layer

created : 2020-07-14T10:32:21+00:00
modified : 2020-07-14T11:11:56+00:00

ssd ftl

FTL ?

  • Flash Translation Layer의 약자.
  • SSD를 Disk 처럼 사용할 수 있게 변환하는 Layer

구성요소

  • STL (Sector Translation Layer)
    • Address Mapping : Logical Address 를 Physical Address 로 변환
    • Garbage Collection : 안 쓰는 NAND Memory를 초기화하여 쓰기 가능한 상태로 바꾸는 것.
  • Wear Leveling : 특정한 NAND Memory에 쓰기가 몰리지 않게 하여, 전체적인 수명을 관리하는 것.
  • BML (Bad-Block Management Layer)
    • BBM(Bad Block Management) : NAND 특성상, 새 NAND 조차 불량 블록이 있을수 있으며, 이런 블록을 관리.
  • LLD (Low Level Driver)
    • NAND Flash를 위한 Driver

Address Mapping in FTL

Page-level Maping

  • Page 단위 모든 Maping을 Mapping Table에 두는것
  • Mapping Table 안에는 [[LPN]]과 [[PPN]]이 들어있다.
  • 장점
    • 새로운 쓰기 요청을 사용중이 아닌 페이지라면 어디에든 쓸수 있다. 이는 랜덤 쓰기에서 높은 성능을 보여준다.
  • 단점
    • NAND Flash Memory 특성상, 쓰기는 페이지 단위로 할 수 있어도, 지우기는 Block 단위로 밖에 안되기 때문에, Free Space가 부족하게 될 경우, 공간을 확보하기 위해서 Copy를 통해 데이터를 모으게 되고, 이 과정에서 쓰기 성능이 매우 떨어지게 된다.
    • Mapping Table의 크기가 상대적으로 커서 RAM영역을 많이 차지하게 된다.

      Block-level Mapping

  • Erase 의 단위인 Block단위로 관리하는 방법
  • Maping Table에는 LBN(Logical Block Number)와 PBN(Physical Block Number)가 존재하며, 접근할때 PBN으로 Block을 찾은뒤, Page Offset을 통해서 접근한다.
  • 장점
    • Mapping Table의 크기가 작으며 순차쓰기에서 성능이 좋다.
  • 단점
    • 랜덤 쓰기에서 Block Copy로 인해 성능이 떨어진다.
    • (이건 개인적 생각) 수명 관리 측면에서도 좋지는 않을 듯

Hybrid Mapping

  • 위 방법 둘을 혼합한 것으로. 쓰기에 대해서 Log Block을 사용한다.