본문 바로가기

대학 수업

Storage Devices, Flash Memory, SSD - 임베디드 컴퓨터 구조

반응형

Flash Storage

  • 비휘발성 반도체 저장 장치
    • 하드 디스크보다 100x ~ 1000x 빠르다
    • 작고 저전력에 순간적인 성능이 더 좋음
    • $/GB가 더 높다 (하드 디스크와 DRAM의 중간 정도)

Flash Types

  • NOR Flash
    • fast read (~100ns) slow write (200usec) very slow erase (1sec)
    • 10K - 100k번 지울 수 있음
    • Fast Read 성능 때문에 모바일 시스템의 명령어 메모리로 사용
  • NAND Flash
    • 집적도가 높음 (bits/area, ~40% of NOR) 더 싸다
    • slow read (50 usec) slow write (200usec) slow erase (2msec)
    • 100k to 1M 지울 수 있음
    • 데이터 스토리지로 사용

Flash Memory

  • 칩을 블록 단위로 나누고,, 블록을 다시 페이지 단위로 나눈다
  • Single (SLC) / Multiple (MLC) 비트 / 셀
    • MLC / TLC는 작은 공간에 많은 용량 저장 가능하다
    • 대신 수명이 좋지 않음
  • page: read/write 기본 단위
    • 0.5kb - 8kb of data + error coding 위한 나머지 공간
  • block: minimum unit of erasing
    • 64~128 pages
  • chip: 1~16GB

Flash Operation

  • read: 20-50 usec
  • write:
    • only 1->0 transition만 가능
    • 블록 내 write는 블록에 의해 정렬
    • 100-300 usec
  • erase all bits to 1:
    • 블록 내 특정 부분만 지우는 건 불가능
    • 블록 전체를 1로 만든다
    • 다른 블록에 복사해야 한다
    • 0.5-3 ms

Flash Translation Layer (FTL)

  • 플래시 메모리가 기존 하드웨어, OS와도 호환되게 만들어주는 추상 레이어
  • User Program이 Logical Block Address를 사용한다
  • Flash
    • Flash는 page에 순서대로 쓴다
    • Erase/write 과립
    • 많이 지우면 소모된다
  • FTL
    • logical -> physical mapping
    • wear out을 조정하는 알고리즘

FTL Function 1: Flash Address Mapping

  • per-page vs per-block mapping
    • per-page: 유연함, 테이블이 커져 메모리 공간 많이 차지
    • per-block: 작은 테이블, write-amplification 문제가 발생한다
      • 1개 페이지를 업데이트 하기 위해 전체 블록을 카피해야 한다
  • Log-based System
    • write를 순차적으로 만들지만 read는 분산될 수 있다
    • garbage collection 기법이 필요함
  • 다양한 FTL variation
    • 이에 따라 퍼포먼스가 달라진다
    • implementation cost도 달라진다 (메모리 필요량이라던지)

Page Mapping Method 예시

  • 페이지 테이블과 비슷하게 동작
  • w 9 A
    • write page 9 "A"
  • LSN이 9인 곳이 PSN은 어디를 가리키는지 찾아낸다
  • w 9 B
    • 한 번 더 write page 9 "B"
    • update
    • 플래시 메모리는 덮어쓰기를 지원하지 않음
    • page buffer로 PSN 9 복사 해와서 값 수정
    • 이후 다른 페이지 (e.g. page 11)에 write 하고 LSN 9가 가리키는 PSN을 수정한다
    • PSN 9는 dead, invalid
    • 블록이 다 dead면 erase 한다

Block Mapping Method 예시

  • w 9 A
    • write page 9 "A"
    • 예시에서 page 9는 LBN 2이 가리키는 PBN의 offset 1
      • 한 블록에 4개 페이지 존재하기 때문
  • LBN이 2인 곳이 PBN은 어디를 가리키는지 찾아낸다
  • w 9 B
    • 한 번 더 write page 9 "B"
    • 플래시 메모리는 덮어쓰기를 지원하지 않음
    • offset을 맞춰서 이동해야 한다
    • 한 페이지가 overwrite 되려면 다른 valid 페이지도 모두 옮겨줘야 한다
      • PBN 2가 꽉찼다고 가정
      • 4번의 read, 4번의 write 필요하다

Page-Mapped FTL

  • basic mapping unit 크기가 페이지
  • logical address를 physical address로 변환하는 address mapping table의 크기가 매우 크다
  • 퍼포먼스와 효율성은 block-mapped보다 증가한다
  • mapping table 크기
    • 전체 NAND 용량: 64GB
    • 페이지 크기: 4kb
    • 페이지 수: 128 개 / block
    • 각 element of mapping table: 4bytes
    • 전체 element 수: 전체 용량 / 페이지 크기 = 64GB/4KB = 16M개
    • 매핑 테이블 크기: 16M * 4B = 64MB
    • 플래시 메모리 크기 커질수록 부담이 더 커짐

Block-Mapped FTL

  • LBA(Logical Block Address)의 LSB(Logical Significant Bit) 비트들을 page offset으로 사용하여 크기를 줄였다
  • 크기 계산
    • 전체 NAND 용량: 64GB
    • 페이지 크기: 4kb
    • 페이지 수: 128 개 / block
    • Block 크기: (4KB * 128) = 512KB
    • 블록 수: 64GB / 512KB = 128K개
    • 매핑 테이블 크기: 128K * 4B = 512KB
    • page-mapped와 비교 시 0.78%

FTL function 2: Erase Before Program(= write)

  • Dead Page를 냅두면 Fragmentation 발생할 확률 높다
  • 연속적인 크기를 갖는 데이터 할당이 불가하다
  • 일정 수준 이상 Dead Page가 발생한 블록을 찾는다
  • 해당 블록의 Live Page를 다른 블록의 Free Page로 옮긴다
  • 전체 블록이 Dead Page로 변경되면 Erase를 진행한다

FTL Fucntion 3: Wear-Leveling

  • Flash Memory 수명은 한정적
  • Erase 횟수에 달려있다
  • 특정 블록만 많이 지울 경우 전체적인 수명이 저하되므로 이를 골고루 맞춰주는 알고리즘이 필요하다
  • Wear-Leveling Counter를 두고 관리한다
반응형