기계적인 동작이 없는 비휘발성 순수 반도체 저장장치
- 내장형 : NAND flash memory
- 외장형 : USB drive, Flash SSD(Solid State Disk)
장점
- Faster access time
- Lower power
- Resistance of temperature and impact
- Small size
- Light weight
- Noiseless
단점
- 각 셀들은 1에서 0으로만 수정 가능 : erase 후 write (in-place update 불가능)
- 마모 (wear) : 최대 소거 횟수 제한
→ Number of Program (NOP) : 소거후 페이지당 쓰기 횟수
종류
1. NOR 플래시메모리
- byte 단위의 읽기 연산 / 블록 단위의 소거 : 읽기 성능은 좋지만 쓰기 및 소거 성능은 낮음
- 코드 실행용으로 사용
2. NAND 플래시메모리
- byte 단위 접근 불가 / 페이지 단위(read/write), 블록 단위(erase)
- 쓰기 및 소거 연산 성능이 NOR보다 좋다
- 집적도, 가격, 전력 소비, 수명이 좋음
- RAM interface가 불가능
- NOP가 적음
- 데이터 저장용으로 사용
성능 향상 기법
1. FTL (Flash Transition Layer)
- 데이터를 0에서 1로 변환하려면 해당 블록을 초기화(해당 블록의 데이터들을 모두 1로 변환) 하고 표현
- 오버헤드가 크다. (제자리 갱신 제약사항)
→ Mapping table을 다른 페이지에 생성하여 테이블에서 수정
(스페어 영역에 유효/무효를 기록하여 사용할 수 있는지 없는지를 파악)
(a) Block level mapping
장점 : mapping table 크기 적음
단점 : block 내의 다른 모든 page가 복사되어야 함
(b) Page level mapping
장점 : 효율적으로 매핑 변경 처리
단점 : mapping table 크기가 커짐
☞ Garbage Collection
Mapping 연산이 계속 일어나면 무효화 페이지가 늘어나며 사용자가 쓸 수 있는 공간 감소
→ 주기적으로 무효화 페이지를 정리해 주는 연산 사용
☞ Wear-Leveling (평준화 쓰기 방식)
모든 셀을 고르게 사용하는 기법
→ SLC(Single Level Cell) : 한 셀당 10만 번 사용 가능
2. Reed-Solomon, BCH 기법
- 일부 bit가 제대로 동작 하지 않는 실행시간 bad block 발생
→ 공장 출하시 처음 사용될 때 스페어 영역의 초기 bad block 표시 위치를 조사하여 mapping에서 제외
1 bit 에러를 bad block으로 처리하면 bad block 개수가 너무 많아지므로 page 당 1bit error를 검출하고 수정
이를 위해 스페어 영역의 ECC비트를 이용해 기록
3. Flash-aware File System
(a) Log structured file system
- 제자리 갱신이 불가능한 제약을 피함 (플래시메모리 전체영역을 하나의 로그로 봄)
- 쓰기 요청 : 항상 로그의 꼬리부터 (순차적, 디스크 탐색 필요 없음)
- 장점
로그의 시작과 끝이 쓰기 가능한 자유 영역
쓰기가 진행되어 자유영역 크기가 일정 수준 이하로 작아질 때 소거 동작
로그의 시작과 끝에서 시작하여 단 방향으로 늘어남 → 마모 평준화
- 단점
슈퍼 블록이나 inode 같은 파일 시스템 → metadata의 위치 역시 고정되어 있지 않고 변함
데이터 검색시 필요한 데이터의 로그를 찾아야 됨
마운트 시 플래시 메모리 전체 scan → 마운트 시간이 길어지고 메모리 사용량이 커짐
4. Copy-back (내부 복사)
- 데이터의 복사를 칩 내부에서 해결해 데이터의 전송 오버헤드를 줄임
5. Chip-interleaving
- 여러 개의 플래시 칩을 병렬로 연결해 읽기와 쓰기의 대역폭을 늘림
'Study > OS' 카테고리의 다른 글
Ubuntu samba install, configuration (0) | 2010.02.11 |
---|---|
Single ethernet card with multi interfaces (다중 IP 할당) (0) | 2009.11.23 |
Ubuntu 9.10 에서 YAFFS2 Mount 하기 (1) | 2009.11.06 |
2. Kernel and Thread, Event-driven approach (0) | 2009.10.19 |
1. μ-Kernel, Interrupt handling (0) | 2009.10.19 |