Flash에서는 read/write/erase operation을 사용하는데 반해 Application에서는 standard file operation (read/write)을 사용하기 때문에 이를 받아 Flash내에 수행하기 위해 FTL (File Transfer Layer) 계층에서 application과 Flash의 중계역할을 한다
1 bit-flip error handling
- bad block이 아닌 정상 block에 data write시 bit-flip이 발생할 수 있다. 이러한 bit-flip을 처리하기 위해 ECC를 사용한다.
- ECC는 대표적으로 RS algorithm과 hamming algorithm이 많이 사용된다.
- MLC 경우 page당 4bit까지 bit-flip이 발생할 수 있기 때문에 ECC구성 시 4bit이상 보정 가능한 알고리즘을 사용해야 한다.
2 bad block handling
NAND에서 발생하는 initial bad block과, runtime bad block을 처리해 주어야 하는데 initial bad block 정보는 spare 영역 특정 offset에 정보가 기록되어 있다. Initial bad block이 아닌 good block이 write/erase 동작 중 에러를 리턴 하면 해당 block을 runtime bad block으로 간주하고 spare 영역의 BI offset에 정보를 업데이트 하고 bad block mapping table에 정보를 업데이트 한다.
3 wear-leveling
NAND Flash의 각 cell은 무한정 사용할 수 있는 것이 아니라 사용 가능한 한도가 정해져 있다.
SLC: 각 블록당 100000번 가량 erase 가능
MLC: 각 블록당 10000번 가량 erase 가능
각 cell의 경우 3번 이상 연속해서 erase 없이 사용 할 수 없다.
따라서 일부 블록이 집중적으로 wear-out 될 경우 erase time이 증가하게 되고 나아가서는 플래시 메모리 수명이 단축된다. 한번 erase된 block의 정보를 별도로 저장하고 write명령이 들어올 경우 할당되는 block을 조절하여 각 블록이 골고루 사용 될 수 있도록 해야 한다.
4 Garbage Collection
한번 사용된 후 더 이상 사용되지 않도록 설정된 block은 system에 해당 정보를 return하고 system에서는 각 block의 status를 monitor하다가 더 이상 사용하지 않는 block을 erase하여 다른 data저장을 위해 사용될 수 있도록 한다.
'개발자 기본 소양' 카테고리의 다른 글
[TRAC] ticket properties 추가 및 삭제 (0) | 2009.02.07 |
---|---|
DRM (0) | 2009.02.04 |
Artistic Style 1.22 (0) | 2009.01.15 |
AAC(Advanced Audio Coding) (0) | 2009.01.15 |
MIME(마임) 개념잡기 (0) | 2009.01.15 |