SSD 기본 동작

ys0820.kim·2022년 11월 24일
0

Nand Flash Memory 특성상 특정 메모리 단위로 읽기/쓰기/삭제 동작을 수행할 수 있다.

  • Page : 읽기/쓰기 단위
  • Block : 삭제 단위

기본 동작

  • Read : Page 단위로 읽을 수 있다.
    -> OS에서 1Byte 읽기 요청이 들어오면 SSD에서는 Page 단위로 읽고 요청 받은 데이터를 반환한 후, 나머지 정보는 버리기 때문에 읽기 동작 효율이 떨어진다.

  • Write : Page 단위로 쓸 수 있다.
    -> 1Byte 쓰기 요청이 들어오면 해당 Page 전체를 기록해야 한다.
    -> 필요 이상의 데이터 쓰기 발생 (Write Amplication)

    • SSD는 Overwrite가 불가능하다.
      -> OS에서 Overwrite 요청이 들어오면 SSD 기존 데이터를 변경하지 않고 새로운 Page에 신규 데이터를 작성하고 기존 데이터는 Invalid 마킹처리한다.
  • Erase : Block 단위로 삭제할 수 있다.
    -> Invalid된 Page로 이루어진 Block은 삭제할 수 있다.

Write 동작 예제

  1. Initial Configuration :
    1000번 Block : x,y,z 데이터가 저장되어있다.
    2000번 Block : 데이터가 없는 상태

  2. Writing a page :
    1000번에 x 데이터를 업데이트한다.
    PPN 0을 used로 마킹하고 PPN 3에 새로운 x데이터인 x'를 저장한다.

  3. Erasing a block :
    1000번 Block을 지운다고하면 유효한 PPN 1,2,3은 데이터가 없는 빈 Block인 2000번으로 이동시키고
    1000번 Block을 삭제한다. -> PPN 1번은 삭제됨.

Write amplification

필요 이상의 데이터 쓰기를 효율적으로 관리하기 위해서는 아래와 같은 지침이 필요하다.

  1. Page Size보다 작은 데이터 쓰기는 지양한다.
  2. 데이터의 쓰기는 단일 Page Size에 맞추거나 여러 Page 크기에 맞추도록 실행 전략을 세운다.
  3. 작은 데이터 쓰기는 Buffering을 통해 Buffer에 따로 모아서 가득찼을 때 실제로 Page에 Write한다.

Wear leveling

: Nand Flash Memory의 1개 Cell은 Read/Write를 반복할 때마다 수명이 깎인다. 따라서 모든 Cell의 최대한 골고루 사용하여 특정 Cell이 수명이 다하지 않도록하는 전략이다.

0개의 댓글