반응형
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를 두고 관리한다
반응형
'대학 수업' 카테고리의 다른 글
Matrix Addition & Scalar Multiplication - 선형대수학 (0) | 2020.12.15 |
---|---|
디지털 카메라, DCT, Quantization, Huffman Encoding - 임베디드 컴퓨터 구조 (0) | 2020.12.15 |
I/O Commands, ARM Interrupt - 임베디드 컴퓨터 구조 (0) | 2020.12.14 |
I/O Device와 I/O 인터페이스 - 임베디드 컴퓨터 구조 (0) | 2020.12.14 |
Scratchpad Memory, Cache Locking - 임베디드 컴퓨터 구조 (0) | 2020.12.13 |