3 분 소요

Solid-State Storage(SSD)

기계적으로 움직이는 부분이 따로 없습니다. Memory 와 같은 형태로 작동하지만, Power 가 없어도 정보를 유지시킵니다.

Hardward of SSD

  • Flash chips
  • Volatile memory
  • Control logic 을 위한 Flash Controller
    • Flash Controller 는 SATA 라는 BUS 에 연결됩니다. Controller 는 FTL 이라는 것을 구현합니다. FTL 은 Flash 가 마치 Blocked Device 인 것처럼 abstraction 을 제공합니다.

Flash(NAND-base flash)

  • Flash chips 는 트랜지스터 안에 한개 혹은 그 이상의 bits 들로 디자인 됩니다.
  • 트랜지스터에 bits 를 저장하는 capacity 에 따라 SLC, MLC 그리고 TLC 로 구분합니다.

From Bits to Banks/Planes

Flash chips 들은 banks 혹은 planes 로 구성됩니다. 각각의 bank 안에는 많은 blocks 들이 존재합니다. block 들은 일반적으로 128KB 혹은 256KB 의 크기를 갖습니다. 각각 blocks 들은 pages 로 구성되고 각 pages 들은 특정 크기를 갖습니다. ( ex. 4KB )

Basic Flash Operations

  • Read (a page) : device 의 위치와 상관 없이 매우 빠른 속도를 가집니다.
  • Erase (a block) : page에 대해 write 하려고 할 때, 그 page 가 속한 block 을 지웁니다. 굉장히 비싸고 오래 걸리는 작업입니다.
  • Program (a page) : Write operation 과 동일합니다.

FTL Organization: A bad Approach

Direct mapped —

  • read : Logical page N 과 Physical page N 을 mapping 합니다.
  • write
    • block 내의 모든 page 를 memory에 읽습니다.
    • 해당 block 을 erase
    • 해당 block 을 N page 와 함께 Program 합니다.
  • Performance Problem
    • Write amplification : 실제로 쓸려고 하는 data 에 의해 발생하는 전체 data의 양이 매우 많습니다. 그러므로 성능 저하가 발생할 수 있습니다.
  • Reliability Problem
    • wear out : 같은 block 에 대해 반복적으로 erased 된다면 해당 block 이 unusable 하게 될 수 있습니다.

A Log-Structured FTL

Block N 에 대해 Write 하려는 것들을 새로운 Page의 연속적인 공간에 모아서 한번에 수행하게 됩니다. Logical block 혹은 Logical page 의 위치는 Physical Storage 에서는 계속 바뀌게 되므로 그것을 추적하기 위해 Mapping Table 이 존재합니다.

Advantages

  • Erase operation 이 적게 발생됩니다.
  • 특정 page 에 집중적으로 write 하는 현상을 피하고, 모든 page 가 균등하게 write operation 이 발생할 수 있게 해줍니다.

Disadvantages

  • 다른 page 를 할당받기 때문에 이전에 data 를 갖고있던 page 에 대해 garbage collection 이 발생합니다.
  • mapping table 의 유지성 문제나 그 크기에 대한 문제점이 있습니다.

Garbage Collection

  • Garbage 를 포함하고 있는 page 를 찾습니다 (by mapping table)
  • 살아있는 page 를 read 합니다.
  • 살아 있는 page 를 log 에 write 해줍니다.
  • Garbage collection 한 block 을 Erase 합니다.

Garbage Collection 은 비싼 operation 이므로 계속 실행할 수 없고 system 이 ideal 하고 garbage 가 많이 모인 block 들에 대해서만 수행합니다. 이러한 것을 지원하기 위해 다양한 알고리즘들이 존재합니다.

Mapping Table Size

A single 4-byte entry per 4-KB page of 1-TB SSD 를 가정하겠습니다. 총 필요한 Mapping table 의 크기는 1GB 가 됩니다. 즉, Page-level FTL scheme 은 현실적이지 않습니다.

Block-based mapping

Block 안에 여러개의 page 로 구성되어 있기 떄문에 Block 과 Mapping 된 logical address 가 주어졌을 때 어떤 page 를 선택해야 하는지 알아야 합니다. 결국 우리는 logical address 를 두개로 나눠서 관리합니다. Chunk number + offset 하지만, 이 방법은 small write 가 자주 발생할 경우 성능 저하의 문제점이 있습니다. mapping 이 block 단위이기 때문입니다.

Hybrid Mapping

per page mapping 과 per block mapping 을 혼용하는 mapping 기법입니다.

  • Log table : per-page mappings
  • Data table : per-block mappings Log table 을 우선적으로 찾고 찾아지지 않으면 Data table 을 찾습니다. 주기적으로 log table 이 Data table 로 옮길 수 있다면 옮겨주오 mapping table 의 전체적인 size 를 최소화 합니다.

Page mapping plus caching

자주 활용되는 mapping table 에 대해서만 memory 에 올려 사용하는 방법입니다. 대신, 산발적으로 일어날 경우 table 의 대부분이 memory 에 적재되어야 합니다.

Wear Leveling

모든 page 에 대해 write operation 의 수를 균등하게 맞춰주기 위한 것입니다. 특정 page 가 read operation 만 사용하여 update 가 오랫동안 이뤄지지 않는다면 해당 page 들을 주기적으로 다른 block 에 옮겨줌으로써 해당 block 도 write 할 수 있도록 해줍니다.

업데이트: