본문 바로가기

개발자 기본 소양

NAND에 관하여


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 writebit-flip이 발생할 수 있다. 이러한 bit-flip을 처리하기 위해 ECC를 사용한다.

-      ECC는 대표적으로 RS algorithm hamming algorithm이 많이 사용된다.

-      MLC 경우 page4bit까지 bit-flip이 발생할 수 있기 때문에 ECC구성 시 4bit이상 보정 가능한 알고리즘을 사용해야 한다.

 

2      bad block handling

NAND에서 발생하는 initial bad block, runtime bad block을 처리해 주어야 하는데 initial bad block 정보는 spare 영역 특정 offset에 정보가 기록되어 있다. Initial bad block이 아닌 good blockwrite/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저장을 위해 사용될 수 있도록 한다.

[출처] NAND에 관하여|작성자 작은아이

'개발자 기본 소양' 카테고리의 다른 글

[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