내가 알고 싶은 것들

괜찮아- 모든 것이 잘 될 꺼야

NAND memory : ECC와 SLC/MLC 란

댓글 0

카테고리 없음

2022. 4. 25.

* ECC(Error Correction Code)

 진행성 Bad Block 선별  Read기능 보완을 위한 기능이라 보시면 됩니다. NAND Read Write 문제가 발생할  있습니다. 다행히도 Erase/Write 문제가 발생하면 메모리 자체에서 답변을 해주지만 Read 데이타가 깨져서 나올경우 유저가 이를 알아낼 방법이 없습니다. 이러한 것을 커버해주는 기능이 ECC입니다. ECC 다양한 단위로 사용되는데 통상적으로는 1bit Error 수정, 2bit Error 검출로 사용합니다.(SLC 메모리 기준)  Read할때 정보가 1bit 깨졌을경우 알아서 보정을   있으며, 2bit 이상 깨졌을 경우 틀린것을 유저에게 알려 줍니다.

   

ECC 사용 방법은 Write할때 미리 ECC 값을 계산하여 Spare 영역에 계산값을 써넣습니다. 그후 Read 다시 ECC 값을 계산하여 Spare 영역에 있는 계산값고 비교합니다. 비교한 결과가 같으면 정상이며 다를 경우 보정  Error 출력합니다.

   

여기서 한가지 착각하면 안될 사항이 있는데 이러한 사항은 NAND 메모리가 하는 동작이 아니라는 점입니다. 보통 이러한 동작이 메모리에서 일어난다고 착각을 많이 합니다만, 실제로는 마이컴의 컨트롤러를 통해 일어나는 동작이므로 메모리와는 관계가 없습니다. 메모리는 위와 같은 원리에 의해 값을 Read/Write  뿐이므로 이러한 과정 자체에 문제가 발생할 경우 NAND 컨트롤러 포함 문제를 검토해야합니다. 특히 1bit 이상 오류로 인해 Error 발생한 경우는 대부분 Write동작중 ECC 값이 잘못 계산된 경우가 많습니다. 그리고 이러한 Error 발생한 경우 대부분 다시  Download 해야합니다. 

   

ECC MLC NAND에서 더욱 복잡하게 사용되는데 , 기본 원리는 동일하게 사용되나 최신 공정이 적용된 MLC NAND 경우 많게는 24bit 적게는 8bit까지 ECC 보정이 필요하게 되어 있습니다.그래서 MLC NAND 사용하기가 매우 까다롭습니다. 또한 NAND 컨트롤러가 이러한 기술을 따라가지 못하고 있으므로, 메모리 업체들은 아예 메모리 내부에 이러한 ECC 내장하기도 합니다. 이러한 메모리들이  많이 출시 되고 있는데 대표적인 제품은 OneNAND,LBA-NAND,eMMC,eSD 등입니다. 메모리들은 종류 설명할때 다시 말씀드리겠습니다.

   

NAND메모리를 선정할때 ECC 해당 마이컴및 컨트롤러에서 사용이 가능한지 확인은 매우 중요한 사항이므로  염두해 두시길 바랍니다.

   

* SLC,MLC

  메모리 Cell 구조를 지칭합니다.  Cell  Data 한개 보존하면 SLC (Single Level Cell), 두개의 Data 보존하면 MLC(Multi Level Cell)입니다. 두개 저장 원리는  Cell안에서 전압차를 두어 다른 정보를 기록하는 것인데 , 예를 들어 0V에서는 00 , 1.5V 10, 2,2V는 01, 3V 11 이런 식으로  Cell 안에서 분리하여 정보를 기록합니다. 아무래도 Cell 안에서 이렇게 쪼개서 사용하기 때문에 SLC대비하여 성능  신뢰성이 떨어집니다. 다만 이렇게 되면 같은 재료값으로 2배의 용량을 저장하는 것이기때문에 가격이 더욱 싸지는 장점이 있습니다. 현재는 TLC(Triple Level Cell) 출시 되고 있는데 아무래도 성능  신뢰성이  떨어 지겠죠.. 메모리 업체들은 이러한 기술들을 고객의 요청에 따라 적절히 제공하고 있습니다.

 

 

참고 : https://pastime0.tistory.com/entry/NAND