NAND FLASH_특징

Learning stuff 2013. 2. 23. 22:55

현재 NAND FLASH로 만든게.... SSD로 팔리고 있지...... 낸드는 다 좋다. 무게도 가볍고, 저전력에다가, 부피도 작고, 빠르고, 안정성 면에서도 기존 하드디스크 보다 좋다. 하지만 치명적인 약점이 두개가 있다. 바로 신뢰성 측명 즉 DATA ENDURANCE나 Wear out 이 쉽게된다는 점이다.


NAND FLASH의 이해


낸드는 셀당 1비트의 저장공간을 가지는 SLC(Single Level Cell)형과 셀당 2비트의 저장공간을 가지는 MLC(Multi Level Cell) 형으로 나뉜다.

MLC 는 아무래도 전자를 SLC 보다 더 fine 하게 집어넣었고 읽을때도 fine 하게 읽어야 하기 때문에 당연하게 데이터 유지(신뢰성) 및 메모리 사이클링 성능이 감소되는 단점이 있다.

이러한 이유로 MLC는 반드시 ECC(Error Collecting Code)회로를 필요로 한다.

SLC는 다시 두가지로 나뉘는데, 하나가 small block 이고 나머지 하나가 large block이다. 이는 각각 페이지의 크기가 (512+16)바이트 와 (2048+64)바이트로 차이를 보인다. 별로 안중요하다....

간단히 Flash memory 의 구조에 대해서 설명하자면 다음과 같다.

이 그림은 예시일 뿐이다. 한 PAGE는 (1K + 32) Word이고 이 PAGE들 64개가 모여서 1 BLOCK이 됩니다. 그리고 이 BLOCK 64개가 모여서 한 DEVICE 를 이룬다. 

여기서 읽기와 쓰기의 그리고 지우기의 단위가 다르다. 낸드는 페이지 단위로 RANDOM READ 와 WRITE 를 하고, Block 단위로 ERASE를 해 준다. 여기서 근본적인 플레쉬의 문제와 결부되어 심각한 Performance degradation해주는게..... 플래시는 Overwrite 가 안된다. 그렇다면 어떻게 데이터를 수정하지...? 할수 없지요 지우고 다시 쓰는수 밖에... 근데 이때 한 데이터를 Overwrite를 하기 위해서는 나머지 아무런 그냥 peaceful 하게 잘 지내고있던 64개 부분을 지웠다가 다시 써야하는 현상이 발생한다. ERASE 단위가 Block 단위기 때문에 생기는 엄청난 낭비이다.

그래서 이점을 쫌 보완해주기 위해서 쓰는 기법이 FTL 계층인데, 간단하게 말하자면 물리 섹터를 논리섹터 번호와 매핑 시켜주는 매핑 테이블을 만들어준다. 그리고 어떤 데이터를 수정하려고 할때 이것을 그냥 Overwrite 하는게 아니라, 나중에 overwrite를 해주고 새롭게 update 된 값은 다른곳에 따로 저장을 해 둔다. 그리고 그 논리섹터 번호에 매핑되는 물리섹터 번호를 바꾸어 주면된다.


그리고 다음 그림은 블락 다이어그램이다.

여기서 중요한것은 동그랗게 표시해놓은 Command 부분이다. 각 부분에 대한 설명은 다음과 같다.









'Learning stuff' 카테고리의 다른 글

NAND FLASH_FTL  (0) 2013.02.25
NAND FLASH_읽기,쓰기  (0) 2013.02.24
Flash Memory 쪽의 기본  (0) 2013.02.23
H.264/AVC Prediction_3  (0) 2013.02.15
H.264/AVC Prediction_2  (0) 2013.02.15