System Programming - Address Mapping

나라마야·2023년 9월 18일

System Programming

목록 보기
3/4

FTL (Flash Translation Layer)

저번에 배운 FTL은 SSD 내부에 있는 일종의 소프트웨어 계층이다.
FTL은 Host와 Flash 사이에서 일종의 연결다리 역할을 해준다.

  • 문제의 발달:
    예전에 HDD만 있을 때는 IO를 사용하는 것은 쉬웠다. 왜냐하면 read&write가 요청하는 주소와 HDD에 저장된 데이터의 주소가 동일하여 같은 주소를 사용하면 됐다.
    하지만 Flash는 HDD와 다르게 데이터를 overwriting을 시키지 못한다. 이전 데이터를 지우는게 아닌 이전 데이터는 못 쓰게 만들고 새로운 page에 업데이트 된 데이터를 써야한다. 그래서 호출하는 주소와 실제 메모리상에 있는 주소가 달라질 수 밖에 없다.
    따라서 Host 입장에서는 메모리 마다 다른 주소를 사용해야 하는 번거로움이 생긴다.

  • FTL의 역할:
    FTL은 Flash를 가려 Host가 보이지 못하도록 한다. 즉, Host 입장에서는 Flash가 FTL에 가려져 Flash인지 HDD인지 모르는 것이다. 그래서 Host는 IO를 보낼 때 HDD나 Flash는 상관하지 않는다. 결국 FTL은 상위와 하위 레이어의 역할을 보존해 주는 역할이다.
    만약 FTL이 없었더라면 Host는 새로운 파일 시스템을 만들어야 하는 번거로움이 있었을 것이다.

FTL의 역할.

여러 역할이 있지만, 그중 4가지만 확인해 보자.

  • Address mapping
  • Garbage collection
  • Wear leveling
  • Block/page allocation

오늘은 Address Mapping에 대한 설명이다.

Address Mapping의 필요

  • Flash 메모리의 특징
    이전에 언급했듯이 Flash는 구조상 overwriting이 안된다.

  • Flash메모리에서 read와 write의 문제
    새로운 데이터는 새로운 page에 적힌다. 근데, read는 실제 데이터가 있는 page에서 읽어야 하는데, 여기서 문제가 생긴다.
    write의 경우 그냥 새로운 page에 데이터를 쓰면 되지만, read는 그 주소를 찾아야 한다. 그래서 Flash 내에서 데이터가 어느 page에 써지는 지 항상 모니터링을 해야한다. 각 데이터가 SSD의 어느 page에 있는지를 계속 추적해야 한다는 것이다.

  • Address Mapping Table
    FTL에 보면 address mapping table이 있고 데이터가 Flash의 어느 page에 저장돼 있는지의 정보를 포함하고 있다.


작성중

profile
언제나 나 자신에게 되물어 보기. So What?

0개의 댓글