본문 바로가기

Hello CE,Mobile

NAND

[ NAND 강좌 1 ] NAND 대한 이야기.

   

   

이번 강좌에서는 NAND 대해 설명해 보고자 합니다. 우리 주변에서 어쩌면 흔히 듣기도 보기도 하는 메모리인 NAND 저렴하면서도 대용량을 저장할 있기에 많은 사랑을 받고 있습니다. 특히 전원을 차단해도 데이타가 사라지지 않을 뿐더러 괜찮은 성능을 보여주기에 더더욱 사랑을 받고 있습니다. 대표적인 응용 제품으로 MP3,USB Stick,SD 카드 등을 있고 제조 업체로는 삼성,도시바,하이닉스,마이크론 등을 있습니다.

   

이번 강좌는 NAND 메모리에 대해 다음과 같은 순서로 진행해 보고자 합니다.

   

   1. NAND 대한 설명.

   2. NAND 종류.

   3. NAND 동작 원리 이해.

   4. NAND 사용 방법(파일 시스템등에서의 응용 방식).

   5. NAND 선택 방법.

   

챕터는 적당히 잘라서 진행해 보도록 하겠습니다.

   

1. NAND 대한 설명.

   

 NAND 무엇일까요?  플래쉬 메모리의 일종으로 플래쉬 메모리의 일반적인 특성 + NAND만의 특성을 가지고 있는 메모리 입니다. 플래쉬의 일반적인 특성인 Write하기전 Erase 해야한다는 . Erase Block단위로 수행된다는 점을 특성으로 가지며, 고유의 특성으로는 Serial 전송을 한다는 ,Page 단위로 Read/Write 한다는 , Bad Block 가지고 있다는 등을 가지고 있습니다.

NAND 구조를 통해 각각의 세부 사항을 보도록 하겠습니다.

   

                       <삼성 전자 Small Block, SLC ,x8 NAND 메모리 >

   

 NAND Cell Page라고 불리는 단위로 엮여져 있습니다. 메모리가 해당 Cell 접근하기위해서는 선택을 하는 Word Line, 전송을 위한 Bit Line 필요합니다. 일반 메모리들은 Cell 대해 접근이 가능하도록 일일이 Word Line Bit Line 연결합니다. 그러나 NAND 경우 Bit Line 한꺼번에 묶어 두어 덩어리 단위로 전송하도록 두었습니다. 이러한 단위를 Page라고 합니다. Page 단위는 NAND 메모리의 진화와 더불어서 변화 했는데, Small Block 경우 512Byte, Large Block 경우 2Kbyte 많이 사용하며, 최신 공정의 NAND 메모리에서는 4Kbyte 사용되기도 합니다.

   

사진을 보시면 해당 메모리의 Page Size 512Byte 것을 있습니다.그리고 512Byte 옆에 16Byte 적혀있는데 이영역을 보통 Spare 영역이라 부릅니다. Page 부를때 Main 영역(512B) + Spare 영역(16B) 합해서 528B 부르기도 합니다.(Datasheet에는 보통 이렇게 기재됩니다.)

말씀드렸듯이 Page Size 메모리 버전에 따라 달라지기 때문에 사용전 확인을 해야하는 중요한 사항입니다. Spare영역은 보통 메타 데이타를 기록하기 위해 사용되며, 특히 Bad Block정보 ECC정보를 기록하고 있습니다. 나머지는 영역은 응용 방법에 따라 자유롭게 사용할 있습니다.

   

또한 Page Block이라는 단위로 묶여있습니다. Block Erase 위해 묶이는 단위일 다른 목적은 없습니다. 보통 Block 말할때 Small Block(SB) , Large Block(LB)으로 말하며 각각의 Block 보통 SB = 32Pages , LB = 64Pages 구성됩니다. (이것 역시 버전에 따라 달라지므로 Datasheet 확인이 필요합니다.) 위 사진에서 1Block 32Pages인것으로 보아 해당 제품은 SB제품인 것을 있죠.

Page Block 많이들 혼동하시는데 Page R/W 위한 단위이며, Block Erase 위한 단위라는 것을 기억해 두시기 바랍니다.

   

그리고 Cell 그림 아래 보면 Page Register라는 것이 있는데 NAND Cell 외부 I/F 사이에 놓여져 있는 Register라고 보시면 됩니다. 즉 CPU Read/Write 명령을 지시하면 register 통해 NAND Cell 통신한다고 보시면 됩니다. 동작에 관련된 설명은 따로 다른 chapter에서 설명 드리겠습니다.

   

 NAND BUS 전송단위는 2가지가 사용되고 있습니다. x8 x16 인데 시스템 환경에 맞추어서 사용하시면 됩니다. 다만 이러한 세팅은 출하시 고정적으로 결정되어 있는 사항이라 유저가 임의로 바꾸는 것은 불가능합니다. x16 경우에는 Datasheet Word 단위로 기재가 되어 1page=256Words 등으로 표시가 되기때문에 이점을 파악해야 합니다.

그럼 x8, x16 어느 쪽이 성능이 우수 할까요??

네 너무나도 당연히 x16이겠죠.. 하지만 Small Block,1 page = 512Byte 제품에서는 x8 x16 성능이 크게 차이가 없습니다. 이유는 Cell에서 Register 대해 전송하는 시간이 너무 걸리기 때문입니다.

Register에서 Cell Read/Write하는 대기 시간이 길기 때문에 CPU에서의 전송이 아무리 2배가 되더라도 의미가 없습니다. 다만 Large Block,1page =2KB 제품에서는 거의 두배의 효과를 거둘 있습니다. 성능 개선을 원하시는 경우 LB,1page=2KB 에서는 x16 선택하시기 바랍니다. 

사진에 Address 접근 방법이 나와있습니다. NAND 별도의 Address Pin 없기 때문에 위와 같이 8bit 잘라서 Address 전송합니다. 한번 전송시 1 Cycle 됩니다. 전송량은 용량에 접근할 있는 Address 값으로 위 사진은 A0~A26까지니까 2^27 = 134217728bits => 128MB . 메모리는 128MB ,1Gbit 메모리 이네요.

   

또한 모든 Address 입력할 필요가 없는데요. 여기서 Page 단위이하는 필요가 없으므로 사실상 앞부분의 Address 필요없습니다.이부분을 Column Add 라고도 부르는데요.0으로 채워서 쓰시면 됩니다.( A0~A8) 따라서 실제로 Access하는 Address Page Address 구간인 A9이상의 단위입니다.또한 이내부에서도 Block Size = 32pages 제외하면 Block Address 되는 것이죠. 대부분은 그냥 Page Address 사용합니다만, 이러한 분류로 사용한다는 것을 알아 두시길 바랍니다.  

   

2. 그외에 알아야 사항.

* Bad Block  - NAND에만 있는 불량입니다. 이러한 Bad Block 메모리 생산중에도 발생하기도 하며 실제로 사용하고 있는 도중에 발생하기도 합니다. NAND 가격이 가장 이유이기도 한데 개념은 이겁니다. " 불량좀 있으면 어때. 가격이 싸니까 그냥 씁시다.." NAND 처음 나와서 이런 주장을 당시 모든 메모리 업체가 비웃었다고 합니다. 쓰레기를 팔려고 한다고..하지만 아이러니하게도 지금은 NAND 세상 메모리의 중심이 되는 상황이 되었죠. 머.. 재밌는 것은 최초 개발한 도시바가 아무도 상대안해주니까 삼성과 손잡고 시작했는데 삼성이 NAND 지배하는 상황으로 바뀌었다는 것이죠. 삼성의 선견지명이 대단하긴 합니다. 물론 삼성이 NAND 확산을 위해 많은 노력을 했습니다. 그리고 NAND 확산의 일등공신은 NAND 부팅이라고 생각합니다. 이로 인해 개발자들은 기존의 코드는 ROM, Data 별도공간이라는 설계를 버리고 NAND 코드 + 저장을 있는 설계로 바꿀 있게 되어 비용적인 측면에서 부담을 많이 덜었습니다.

   

암튼 NAND BadBlock 포함하고 있으므로 BadBlock 정보를 관리해야합니다. 이정보는 보통 Block Page Spare영역에 기록되어 있습니다.(기록 위치는 Datasheet 참조하세요)

또한 이로인해 다양한 처리가 필요한데 그점은 나중에 설명 드리겠습니다.

   

* 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) 출시 되고 있는데 아무래도 성능 신뢰성이 떨어 지겠죠.. 메모리 업체들은 이러한 기술들을 고객의 요청에 따라 적절히 제공하고 있습니다.

   

   

[NAND 강좌2] NAND 메모리의 종류.

[출처] [NAND 강좌2] NAND 메모리의 종류.|작성자 유유자적

   

원본 위치 <http://blog.naver.com/PostView.nhn?blogId=csn96&logNo=120067143833&categoryNo=13&viewDate=&currentPage=1&listtype=0&userTopListOpen=false&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=undefined>

   

   

이번 장에서는 NAND에대해 전반적으로 알아 보았습니다.

다음 장에서는 NAND 종류에 대해 알아 보도록 하겠습니다.

   

안녕하세요. 이번 시간에는 NAND메모리의 종류에 대해 알아 보도록 하겠습니다. 물론 NAND 메모리는 하나입니다만, 이를 응용해서 다양한 종류의 메모리가 나오고 있는 상황입니다. 이런 메모리를 보통 Fusion 메모리라고 부르는데 다양한 메모리 업체에서 여러가지 이름으로 나오고 있는 상황입니다. 이번 강좌에서는 종류에 대해서만 간단히 알아보겠습니다.

   

1. Raw NAND(PureNAND) : Original NAND 메모리를 부를때 이렇게 부릅니다. 어떠한 부가적인 처리를 추가한 NAND 아닌 순수한 NAND 메모리 자체입니다. 보통 TSOP Package 담겨져 출하가 되고 있으며, 경우에 따라 BGA Package 담겨 팔리기도 합니다. NAND 진화에 따라 Small Block NAND(SB) Large Block NAND(LB)라고도 부르며, Cell 대한 저장 방식에따라 Single level Cell (SLC) Multi Level Cell(MLC) NAND 라고도 부릅니다. 보통 우리가 지칭하는 NAND라고 보시면 됩니다.

   

2. OneNAND : 삼성 반도체에서 출하한 응용 메모리 입니다. SLC RawNAND 기반으로 응용 회로를 가미하여 만든 메모리로 몸통은 NAND이지만 외부와의 통신은 NOR 하는 제품입니다. 이전에 설명한 PSRAM 마찬가지로 몸통은 NOR 다르나 마치 NOR처럼 작동하는 제품으로 보시면 됩니다.외부 I/F NOR이기 때문에 Data Address 따로 분리되어 있습니다.(일반 NAND MUX 되어 있음). 특히 Read시에는 동기 Clock 맞추어 Burst Read 하기 때문에 상당히 좋은 성능이 나옵니다. Write시에는 NAND 물리적 한계 때문에 빠른 속도를 구가하기 어렵습니다만, NAND 전용 Controller 내장 Raw NAND 대비 빠른 성능을 보여 줍니다.사실 Fusion Memory 핵심은 이러한 NAND 전용 Controller 달려 있습니다. Controller 하는 주된일은 FTL(Flash Translation Layer) 작업 + ECC 으로, NAND 원할히 사용할 있도록 도와주는 일을 합니다. FTL에는 Wear leveling,Bad Block Management,Garbage Collection,physical/logical Address mapping등의 기능이 포함되어 있습니다. 이부분에 대한 설명은 NAND 동작 강좌에서 진행하도록 하겠습니다.

   

   

3. LBA NAND - TOSHIBA에서 출시한 Fusion Memory입니다. 메모리는 점점 복잡해 지는 MLC NAND 사용을 쉽게해줄 목적으로 개발 되었습니다. 최신 공정의 MLC NAND 경우 아주 복잡한 FTL ECC 요하게 됩니다. 그러나 일반 USER Application Chip CPU는 MLC NAND 최신 공정을 따라가지 못합니다. 이러한 문제를 해결하기 위해 나온 메모리가 LBA NAND입니다. 기존의 NAND I/F 유지하면서 FTL ECC 메모리 내부에서 전부 해결하기 때문에 USER 복잡한 FTL + ECC 고려하지 않고도 편안히 최신 공정의 MLC NAND 사용할 있습니다. 구조는 위의 OneNAND 유사하나 I/F NAND라고 생각하시면 됩니다.

   

4. BA NAND - Micron에서 출시한 Fusion Memory 입니다. LBA NAND 유사한 개념이며 USER 편안히 최신 공정의 MLC NAND 사용하도록 하는게 목적인 메모리입니다. 또한 이러한 류의 제품을 ECC Free NAND라고도 부릅니다.

   

5. eMMC - eMMC JEDEC에서 표준으로 정한 휴대용 카드 I/F 규약입니다. 휴대용 카드가 아닌 내장형으로 만들어서 e(embeded) MMC 앞에 붙여두었습니다. 대부분의 메모리 업체에서 생산 중이며 삼성의 경우 MoviNAND라고도 부릅니다. eMMC 8bit 시리얼 통신을 하므로 성능이 뛰어나며 차후 Boot기능까지 추가할 예정으로 기존 NAND 메모리 사용영역을 대체할 강력한 Fusion Memory입니다. 현재 32GB까지 용량이 라인업되어 있으며 eMMC Version 4.4 준비되고 있습니다. 이역시 Raw NAND 응용한 메모리입니다. Datasheet JEDEC에서 검색하시면 얻을실 있습니다.

   

6. eSD  - eSD SD Card I/F 가진 메모리이며, 휴대용 카드가 아닌 내장형으로 만들어서 e(embeded)를 SD 앞에 붙여두었습니다. eMMC 매우 유사하나 SD Forum에서 운영하는 규약이기때문에 SD Forum 가입되어 있지 않으면 로얄티를 지불해야 합니다. 대표적인 제품으로는 TOSHIBA GB-NAND SANDISK INAND 있습니다. 기존의 SD Card 많이 사용하던 제품에 수정 없이 바로 적용이 가능하다는 장점이 있습니다. 현재 32GB까지 용량이 라인업 되어 있습니다.

   

7. Flex- OneNAND - 삼성 반도체의 Fusion Memory입니다. 기존 OneNAND 동일한 구성을 가지고 있으나 가장큰 차이점은 내부의 RawNAND MLC라는 점입니다. 또한 신뢰성이 필요한 동작을 보장하기위해 RawNAND 일부를 SLC 설정, 신뢰성 보장을 하는 기능이 내장되어 있습니다.기존 OneNAND SLC 전용으로 사용되어 용량이 작은 반면, MLC 응용하는 Flex-OneNAND 경우 대용량을 지원하는 장점이 있습니다.

   

   

8. ONFI(Open NAND Flash Interface) 규약 - Samsung,Toshiba 제외한 NAND 업체들이 만든 규약으로 Fusion NAND라고 보기는 어렵습니다만, 기존의 NAND I/F 아닌 SDR/DDR I/F 사용하는 고속의 NAND 메모리입니다. 성능도 좋고 Open 규약이라 아주 좋은 메모리 입니다만, 위에서 언급했듯이 시장 1,2위가 참가를 안하고 있는것이 가장 문제점 입니다. 확산이 거의 안되고 있는 상황이죠. 규약 성능 제품에 관한 안내는 아래 사이트에서 확인 있습니다.

http://onfi.org

   

   

[NAND 강좌 3] NAND 동작 원리 이해

   

이번 강좌에서는 NAND 동작 원리에 대해 설명해 보도록 하겠습니다. NAND 사용하는 방법에는 여러가지가 있지만 대부분은 2가지 방식으로 사용한다고 보시면 같습니다. 1) 전체를 Data 저장용으로 사용하는 방법과 2) 일부에 Firmware 저장하고 남은 일부에는 Data 저장하는 방법으로 보시면 같습니다. 2가지 방법 보편적으로 쓰이는 방법이나 NAND Booting 가능한 요즘엔 Firmware 전용으로 ROM 따로 사용하기보다는 NAND 이러한 Firmware 저장하는 것이 비용적이나 회로적으로 좋은 방법이기때문에 2) 방식이 보다 많이 확산되고 있다고 생각됩니다.

아래 그림에서 2가지 혼재 방식에 대한 예를 보시 겠습니다. Data 전용의 경우는 뒷부분만 참고하시면 되겠네요.

    

                                    <NAND Partition for NAND Boot>

   

그림을 보시면 대강 3부분으로 나누어져 있는걸 수가 있습니다. 부분은 Booting 위한 Boot Code 저장되는 Block 0 영역입니다. 이부분은 절대로 BadBlock 내포해서는 안되며 NAND 부팅용으로 사용되는 NAND 메모리의 경우 메모리 공급업체에서 보장하여 출하 합니다.

   

분홍색으로 되어 있는 부분은 Code 영역입니다. 물론 실제 사용시에는 보다 세밀하게 나누어서 사용합니다만, 줄기로만 이해해 주시길 바랍니다.Code 저장 영역의 경우 Random하게 Data 처리할 이유가 없기때문에 순차적 Write /Read 수행합니다. 특히 Code 경우 특정 경우를 제외하고는 Write하는 경우가 거의 없고 Read 하기때문에 Bad Block 처리에 있어서 상당히 다른 방법을 취할 경우가 많습니다. 여러가지 복잡한 FTL 처리를 수행하지 않고 BadBlock 위치만 파악하여 해당 BadBlock 건너뛰는 방식으로 해당 영역을 관리합니다. 이렇게 하면 상당히 단순하게 관리를 있을 뿐더러 복잡한 처리를 하지 않아도 되기때문에 여러가지 자원(Resources) 절약할 있습니다. (복잡한 처리에 필요한 CPU 점유 Data 이동등..) 보통 Code 영역안에서 자체적으로 BadBlock 수를 관리하여 관리 숫자보다 BadBlock 많을경우 동작을 안하게 하는 방법등으로 관리하는 경우가 많습니다.

   

노란색으로 되어 있는 부분은 Storage 영역입니다. 대부분의 엔드 유저가 실제 사용하는 공간으로 Data 자유롭게 저장하는 공간입니다. MP3라든지,동영상이라든지가 여기에 저장된다고 보시면 됩니다. 따라서 대부분 File System 구간에 같이 위치하게 되어 있습니다. 영역은 빈번하게 Read/Write 일어나야 하는 구간이므로 Random Access 대해 어느 정도 보장이 되야하는 영역이기도 합니다.

   

                

   

                                            <NAND 메모리의 저장 공간에 대한 Layer>

   

구간의 핵심은 FTL 입니다. NAND Flash 기반으로 파일 시스템을 원활히 사용할 있도록 도와주는 Layer입니다. 이부분의 설명은 다음 강좌에서 설명하도록 하겠습니다.

   

*NAND 기본 동작

   

동작을 설명하기에 앞서서 Pin 대한 설명을 드리겠습니다. 사실 NAND 동작은 상당히 단순하여 Pin 대한 이해만 정확히 가져가더라도 타이밍이라든지 동작을 이해하는데는 전혀 문제가 없습니다. 위 표에 있는 명칭은 어느 메모리 메이커에서도 일반적으로 사용되는 내용이니 NAND 많이 사용하신다면 숙지해 두셔야 내용입니다.

   

I/O0~7(1~8) : Input/Output Pin  NAND 비동기(Async) 통신을 아니라 기존의 메모리와 다르게 Address Data Line 하나의 Port에서 공용으로 사용하고 있습니다.그래서 하나의 Port 안에서 흐르는 값들이 Data인지 Command인지 Address인지 구분하는 방법이 필요합니다. 이러한 구분을 위해 사용되는 Pin ALE(Address Latch Enable) CLE(Command Latch Enable)입니다.

   

   

 위 Timing Chart 1 page 읽을 때의 타이밍 동작입니다. 처음의 파형을 보시면 CLE High 된걸 알수 있는데 이때 I/O 있는 값은 Command 인식되게 됩니다. 다음에는 ALE High 된걸 있는데 이때 I/O 있는 값은 Address 인식되게 됩니다.ALE 긴것은 용량에 따라 필요한 만큼 Address 할당해야 하기 때문입니다.(한번에 8bit 전송이 가능하므로 용량별로 Cycle 증가하게 되어 있습니다.하지만 보통 4Cycle이면 충분하죠. 2^(4*8) )

   

 그다음에 ALE,CLE 둘다 내려가면 실제 Data 처리되고 있다고 보면 됩니다. Data Read/Write RE(Read Enable) WE(Write Enable) 구분됩니다. 나머지 pin으로는 WP Rd/By 있네요. WP(Write Protect) 쓰기 방지 기능의 Pin입니다. Pin 내려와 있으면 Erase Write동작이 금지 됩니다. Pin 쓰는경우도 있고 쓰는 경우도 있는데 보통은 어떠냐고 질문하신다면 안쓰신다고 말씀드릴 있습니다.RD/BY Pin 경우에 따라 매우 중요한 Pin 수도 있고 별로 필요없는 Pin 도있습니다. Pin NAND 메모리가 자신의 동작상태를 유저에게 알려주는 Pin으로서 사용하시는 NAND Controller 따라 사용되기도 안되기도 합니다. 사용하는것이 상당히 현명하고 바람직한 사용방법이나 RD/BY라고 하는 것은 USER입장에서는 지연시간이기 때문에 Datasheet 기재되어 있는 동작의 지연시간 만큼 기다리기만 한다면 굳이 RD/BY 보지 않더라도 사용하는데는 전혀 문제가 없기 때문입니다. 관련된 지연시간은 Tr,Tberase,Tprog 등의 요소가 있습니다. 하지만 NAND 최신 공정(Process) 관계없이 사용되는 방법을 선택할려면 RD/BY 감시하고 있다가 메모리가 Busy->Ready 바뀌는 것을 보고 사용하는 것이 현명한 방법입니다. 사용하시는 NAND Drv 코드를 보시면 이러한 부분을 확인 하실 있습니다.

   

 NAND 실제 동작은 아래와 같이 5개정도로 나누어 있습니다. 각각의 Timing 위에 설명한 대로의 방법을 참고로 읽으시면 되므로 따로 설명을 드리지 않겠습니다.

   

1) ID Read

    - NAND 메모리의 가장 기본 동작으로 NAND 연결되어 있는지 확인하는 Command이기도 니다. ID Read 하고 나면 Factory(업체),Device(메모리 고유 번호) 정보등을 받을 있고, 경우에 따라 추가 정보(용량,Bus) 얻을 있습니다.

   

 2) Read

    - 다양한 Read 방법이 있습니다. SB,LB 따라 바뀌기도 하고 업체에 따라 이름이 바뀌기도 합니다만, 기본적으로 Start Address 지정하면 순차적으로 page단위로 계속 읽어드리는게 NAND Read 방식입니다. Read 방식에 대해서는 각 메모리사의 Datasheet 참고 하시기 바랍니다.

   

 3) Erase

    - Flash 기본 특성상 Write 동작을 하기 위해서는 해당 영역을 Erase하고 난후에 Write 해주어야합니다.Write 상태를 "0" 상태라고 하며 삭제가 상태를 "1" 상태라고 합니다. 따라서 Erase 끝난후 Page Read해보면 전부 "FFFF~~" 되어 있는 것을 확인 있습니다.또한 이전 설명한 대로 Erase Block이라고 하는 단위로 수행됨을 기억하시길 바랍니다.

   

 4) Write(Program)

    - Erase 끝난 Cell 대해 Write 하는 동작입니다. 역시 Page단위로 수행을 하며, "1" "0"으로 바꾸는 과정입니다. 만약에 기존 값이 "0" Cell "1" 바꿀려고 했다면 그것은 Write 아닌 Erase임을 기억하시길 바랍니다. 또한 한번에 한해 이러한 Write 가능함을 기억하시길 바랍니다.

 5) Status Check

   - Erase,Write 동작이 끝난후 수행하는 동작으로 메모리가 이와같은 동작을 정상적으로 수행했는지 확인 하는 기능입니다. 해당 동작후 Pass,Fail 둘중의 하나의 결과를 Return하는데 Fail 발생한 경우에는 BadBlock 가능성이 상당히 높습니다. 이런 경우에는 ReTry 해보거나 해당 영역을 Bad Block으로 폐쇄한후 다른 Block Erase,Write 다시 수행하도록 합니다.<<FTL 알고리즘으로 S/W적인 부분입니다. 메모리에서 자동으로 하는 동작이 아님>>

   

이번 강좌에서는 NAND 기본 동작에 대해 알아 봤습니다.^^

동작을 너무 간단히 설명한게 아닌가 하는 걱정이 들기는 한데, Datasheet 보다가 어려운 부분이

있으시면 질문을 부탁드리겠습니다.

   

   

   

[NAND 강좌 4] NAND 사용 방법(FTL 소개)

강좌에서는 표현이 웃기긴 한데 NAND 주된 사용방법에 대해 알아보도록 하겠습니다.

이전 강좌에서 FTL(Flash Translation Layer) ECC 대해 설명드렸는데 기억이 나시는지요. 해당 영역들의 핵심 동작에 대해 설명을 드리도록 하겠습니다.

   

1. FTL(Flash Translation Layer)

   1) 논리/물리 주소 변환 

                       

 File System USER 저장되어 있는 자료에 접근 때는 해당 주소는 순차적으로 정돈이 되어 있어야 합니다. 1 Sector/ Cluster 단위로 딱딱 끊어져 있다면 순차적으로 접근을 하지 않더라도 상관이 없겠지만, 2 이상의 Sector/ Cluster 단위의 File 접근해야 한다면 순차적으로 접근을 하지 않는다면 내용이 엉망이 되겠죠. 물론 일반적인 상황에서는 이러한 내용을 물리적인 단에서 맘대로 헝크러 놓는다든지 이유가 없기에 절대 발생할 없는 상황입니다만, NAND 메모리는 Bad Block이라는 치명적인 약점을 가지고 있습니다. 물리단에서 Bad Block 만나게 되면 다른 영역을 사용할 밖에 없기때문에 Address 엉키게 되는 문제점이 발생합니다. 이러한 문제를 해결하기 위해 중간단에 일종의 Address Mapping Table 두어 USER 접근해서 봤을때는 마치 순차적으로 정돈이 되있는 것처럼 보이게 해줍니다.

   

  2)Wear Leveling(웨어 레벨링)

                              

   Flash 메모리는 Erase / Write 수명을 가지고 있습니다. SLC 경우 보통 7~10만번 내외,MLC 경우 보통 3~5천번의 제한을 가집니다. 수명이 있기때문에 메모리 업체에서는 수명을 늘리는 방법을 고안하게 됩니다. 특히 Cell 대해 집중적으로 E/W 발생하게 되면 1Cell(1bit) 망가질 뿐인데 1Block 통채로 날라가는 경우도 발생하겠죠. 이러한 것을 방지하기 위해 FTL에서는 같은 Cell 대해 똑같은 내용이 동일 위치에 반복되서 Erase/Write되는 것을 방지하는 Wear Leveling 알고리즘을 가지고 있습니다. 알고리즘은 FTL 핵심 기능으로 잘만 이용하면 수명이 짧은 메모리의 수명이 팍팍(?) 늘어나는 기특한 역할이 가능합니다.하지만 이러한 복잡한 알고리즘을 빈번히 사용하면 성능이 저하되기 때문에 어느 빈도에서 어떻게 사용하느냐는 정말로 어려운 문제입니다. 특히 SSD(Solid State Device)등의 장치에서 성능과 수명을 크게 좌우하는 알고리즘입니다.

   

 3)Garbage Collection(가비지 컬렉션)

                     

   

 NAND 메모리의 사용을 최적화 해주는 알고리즘입니다. 쓸모없는 Page 사용중인 Page 정리하여 여기저기 자원이 낭비되는 것을 방지해 줍니다. 윈도우에 보시면 디스크 조각모음이라는 기능이 있는데 그것과 유사하다고 보시면 됩니다.

   

   4)베드 블럭 관리 (Bad Blcok Management)

   

                    

   

  1)번에서 말한 점과 유사한 부분이 있습니다만, NAND 메모리는 기본적으로 Bad Block 가지고 있기 때문에 이와 관련 처리를 해야한다는 내용입니다. 물리 / 논리 주소를 적절히 변환하기 위한 Mapping Table 가지며, Bad Block 정확한 위치를 파악하기위해 관리 Table 작성합니다.이러한 관리는 사용하는 파일 시스템에 따라 약간씩 다르니 해당 파일 시스템의 API 확인해야 합니다.

   

*ECC 처리 방법

 ECC SLC,MLC에따라 상당한 차이를 보입니다. 물론 깨진 Data 보정해야한다는 목적은 동일합니다만, MLC 최신공정 수록 상당히 복잡한 과정을 거쳐야 온전히 Data 보정할 수가 있습니다.이부분의 내용은 강좌 1에서 참고하세요.

아래 그림은 SLC에서 1bit 수정,2bit 검출 알고리즘을 어떻게 사용하는지에 대한 설명입니다.

Data NAND Write할때 ECC 경유하여 ECC값을 만들어 냅니다. 보통 256Byte 1Byte 생성되며, 생성된 값은 Spare영역에 기록되게 됩니다. 이렇게 기록된 값을 Read할때 다시 ECC 경유하여 값을 계산하게 됩니다. 계산이 끝나고 나온 ECC값을 기존에 Spare영역에 기록한 ECC값과 비교하여 같을 경우는 Data 손상이 없는 것이고, 다를 경우는 Data 손상이 발생했다는 것입니다.이때 1Bit 손상인경우 해당 Data 보정이 가능한 것이고 2Bit 이상 손상인 경우에는 Data 파손여부만 파악할 있습니다.

   

   

   

이번 강좌에서는 FTL ECC 동작에 대해 알아 보았습니다.

   

   

[NAND 강좌 5] NAND 선택 방법 

   

오랫만의 업데이트네요. 이번에는 어떤 NAND 선택해야하는가에 대해 설명해 보도록 하겠습니다.

반도체의 특성이 엄청난 차이를 보이지 않음을 감안할때 어떤 NAND 선택해야 하는지에 대한 자체가 이상할 수도 있습니다만, 좋은 NAND 고른다기 보다는 자신이 사용할 환경에 어떤 NAND 사용하는 것이 가장 좋은 것인지 선택하는 거라고 보시면 같습니다.

   

NAND 선택할 때는 다음의 요소를 확인하여 자신의 contorller 또는 Micom에서 사용이 가능한지 확인해야합니다.

   

<NAND 선택의 필수요소>

공정(Process)

Cell 방식

Page Size

ECC 방식

   

* 요소들은 사실 전부 묶여서 움직입니다.따로따로 움직이는 요소는 아닙니다만, 편의상 변화가 심한 요소들을 분리해서 기재해 봤습니다.

   

1. 공정 : NAND 메모리의 가격을 결정하는 가장 중요한 요소입니다. 반도체는 Wafer 하나당 얼마나 많은 Die 양산 하느냐에 가격이 달라지게 됩니다. 같은 재료비를 투여했을때 얼마나 많은 제품(Die) 나오는지를 수율(Yield)라고 합니다.공정이 축소되면 Wafer Die 증가하게 되며,여기에 수율이 80%이상이 나올때 반도체 업체는 이익을 취할 있게 되고 거기에 맞추어 가격을 내리게 됩니다. 물론 경쟁에 의해 이러한 법칙이 무시되기도 하지만 기본적으로 공정이 점점 축소되어야 가격이 떨어지는 구조로 되어 있습니다. 시점의 최신 공정은 4xnm 이며, 연말 쯤에는 선두 업체로 부터 3xnm 나올 예정입니다. 메모리 회사의 공정을 확인하여 얼마나 좋은 가격 경쟁력을 취할 있는지는 확인해야할 중요한 사항입니다.

   

2. Cell 방식 : Cell 대해 저장되는 bit 1bit(SLC)이냐 2bit(MLC)이냐를 뜻합니다.SLC 경우 대부분의 NAND Controller에서 사용가능하다는 장점이 있지만, 상대적으로 MLC보다 비싸기 때문에 특수한 경우를 제외하고는 대부분 MLC 사용하고 있습니다.MLC 경우 Cell 저장되는 정보가 많아지다 보니 처리가 복잡해져 기존의 NAND Controller에서는 사용하지 못하는 단점이 있습니다.MLC 사용하실때는 Micom Contoroller Datasheet 참고하여 MLC 지원되는지 확인해야합니다. 특히 MLC 공정에 따라서도 무수한 변화가 있으니 공정과 같이 꼭확인 해야합니다.

   

3. Page Size: Page Size 512B부터 4KB까지 다양한데 공정이 축소될 수록 Page Size 커지는 경향이 있습니다. 이는 Page size 작으면 선폭의 간격이 좁아져 축소하기가 어렵기에 이를 극복하기 위해 Page Size 늘린 입니다. 또한 NAND 기본적으로 Data 저장에 어울리는 메모리이기때문에 저장의 최소단위인 Cluster 일치시켜 성능 증대를 꽤하고자 부분도 있습니다. Controller 따라서 4KB Page 지원이 안되는 경우가 많으니 확인 해야 사항 입니다.

   

4.ECC 방식: SLC 경우는 대부분 1bit ECC 충분하므로 고려 대상이 아니나, 최신의 MLC NAND 경우 8~20bit까지의 ECC 요하므로 얼마 만큼의 ECC 대응이 가능하느냐가 상당히 중요한 요소입니다.위의 3가지 요소를 충족하더라도 ECC 제대로 대응이 안되면 신뢰성 보장이 안되므로 사용이 불가능합니다. MLC 경우 Bit ECC 지원하느냐는 상당히 중요한 이슈로 확인을 해야하는 사항입니다.

   

**위의 요소를 기반으로 자신의 제품에서 사용이 가능하다는 것을 확인 한후에는 공급시기, 가격 , 전체적인 공급 가능 능력을 비교하여 최적의 메모리를 고르시면 되겠습니다.

   

   

eMMC 대한 설명 Ver 4.4 특수 기능 설명. 

 강좌 / NAND

2009/07/29 15:56

http://blog.naver.com/csn96/120085121442

참으로 오랫만에 업데이트를 하네요.오늘은 eMMC 대한 간략한 소개 최근 많이 이슈가 되고 있는 Ver 4.4 기능들에 대해 설명하도록 하겠습니다.

   

eMMC - eMMC JEDEC에서 표준으로 정한 휴대용 카드 I/F 규약입니다. 휴대용 카드가 아닌 내장형으로 만들어서 e(embeded) MMC 앞에 붙여두었습니다. 대부분의 메모리 업체에서 생산 중이며 삼성의 경우 MoviNAND라고도 부릅니다. eMMC 8bit 시리얼 통신을 하므로 성능이 뛰어나며 차후 Boot기능까지 추가할 예정으로 기존 NAND 메모리 사용영역을 대체할 강력한 Fusion Memory입니다. 현재 32GB까지 용량이 라인업되어 있으며 eMMC Version 4.4 준비되고 있습니다. 이역시 Raw NAND 응용한 메모리입니다. Datasheet JEDEC에서 검색하시면 얻을실 있습니다.

   

요건 이전에 설명 드렸던 자료의 재탕 ^^;; 이전에 Ver 4.4 준비중이라고 했는데 슬슬 시장에 나오기 시작하였습니다. 사실 Ver 4.4이전에는 주로 Data 저장용으로 사용되어 왔습니다만, Ver 4.4 오면서 부터는 다양한 분야에서 주목하기 시작했습니다. 대표적인 분야는 Mobile Ver 4.4 사용할 경우 아주 혜택을 있기때문에 많은 Mobile 업체들이 Ver 4.4 주시하고 있습니다.그럼 Ver 4.4 사용할 경우 얻을 장점을 살펴 보겠습니다.

   

<장점 1>

  - 기존에 Code용으로 사용하던 Nor NAND없이 eMMC 하나 만으로도 Code + Data저장이 가능해 집니다. 부품 절약으로 비용 절감이 가능해 지고 Interface 단순화 있습니다.

   

 <장점 2>

  - JEDEC 표준 모든 메모리 업체에서 공급 받을 있다는 입니다. eMMC 로얄티도 없을 뿐더러 모든 업체가 표준화 되있기때문에 아무 메모리 업체 것을 사용하더라도 문제가 없습니다.또한 복잡한 ECC,wear leveling등의 기술을 신경쓸 필요없이 가장 저렴한 최신 공정의 NAND 사용할 있습니다.

   

 <장점 3>

   - 기존의 공간을 대폭 줄일 있다는 점도 있습니다. 기존 스마트 폰을 보면 모뎀+모뎀 메모리 , 저장용 eMMC, 어플리케이션 프로세서(AP)+ 시스템 메모리가 필요한 경우가 많았습니다. 근데 eMMC 4.4 사용하게 되면 모뎀 +모뎀 메모리,AP + eMMC 4.4(+ DRAM stack)으로 공간을 절약 있으며, 모뎀이 내장된 듀얼 칩셋을 사용할 경우 듀얼 칩셋 + eMMC 4.4(+DRAM)으로 공간 절약을 ~ 있습니다. 대표적으로 퀄컴의 7xxxx 8xxx 사용하는 경우 eMMC 4.4 POP 올릴 경우 PCB 기존 PCB 대비 20~25% 절약할 있습니다.

   

eMMC Ver4.4 경우 특히 Mobile에서 원하던 사양들을 대폭 받아 들여서 지정된 사양이기 때문에 기능들을 살펴보시면 앞으로의 NAND 시장이 eMMC Ver 4.4 재편될 가능성이 크다는 것을 있습니다.

   

<eMMC Ver 4.4 기능 소개>

 1.Simple Boot

    - eMMC Ver 4.3 부터 도입된 기능으로 eMMC에서도 부팅이 가능하도록 도와 줍니다. 부팅 기능 사용하기 위해선 호스트에서 eMMC 부팅을 지원해야 합니다. 요즘 나오는 최신 칩셋들은 eMMC 부팅을 지원하는 추세 입니다. Boot Partition 사이즈는 128Kb정도로 정확한 크기는 업체의 사양서를 확인해야 합니다.

   

 2.Sleep mode

    - Leakage Current 줄이기 위해 도입된 기능으로 보통 얘기하는 슬립 모드와 동일 합니다. 대기 상태에서 전류 소모를 최소화하도록 도와 주는 기능입니다.

   

 3.Reliable Write

    -  Write 도중에 전원 차단등 원치 않는 문제가 발생하였을 경우 확실히 Write 하게 하거나 Write 이전 상태를 유지하게끔 도와 주는 기능입니다. Mobile Handset 경우 도중에 밧데리가 소모되는 경우라든지 갑자기 전원이 제거되는 경우가 많기 때문에 이에 대비한 기능입니다.

   

 4.Secure Write Protection

   - Write 하지 못하게끔 도와 주는 기능으로, 영구적으로 Protection 걸게도 있으며, 전원이 켜질때에 Protection 동작하게 수도 있습니다. 해커들로 부터 귀중한 정보를 해킹 당하지 않도록 도와 주는 기능입니다.

   

 5.H/W reset

   - 말그대로 reset 하는 기능입니다. 아무래도 H/W reset 없을 경우 Deadlock이나 Hangup 되었을때 Watchdog등에 의해서도 다시 reset 안되는 경우를 만나는 경우가 종종 있습니다.H/W Reset 추가하여 강제로 reset 수행할 있도록 도와 줍니다.

   

 6.Secure Memory Block

   - eMMC 내부에 Replay Protected Memory Block(RPMB)라는 영역을 두어 특정한 명령어 셋으로만 이영역에 접근할 있도록 하였습니다. 일종의 OTP영역과도 비슷한데, 고객의 특수 데이타등을 기록해 두기에 적합한 영역 입니다.

   

 7.Partition Feature

   - eMMC Ver 4.4 가장 장점인 기능으로, 내부적으로 Partition 가능합니다. 4개의 Partition 가능하며 사용 환경에 따라 Enhanced attribute (High performance, SLC 영역), Standard attribute  (Standard performance, MLC 영역)으로 나누어 사용 있습니다. Erase/Write 빈번하면서 고성능을 요구하는 Data 대해서는 Enhanced 일반적으로 사용하는 Data 대해서는 Standard 분리해서 사용이 가능합니다. 놀라운 기능 중의 하나는 Standard 지정된 영역안에서 일부가 Enhanced 필요한 경우 Enhanced 지정하여 사용할 있다는 점입니다. MLC 영역안에 SLC 들어가 있는 격이죠. 이렇게 SLC MLC 자유자제로 사용하게끔 설계되어 설계자의 입맛에 맞게 최적의 설계가 가능하게 되어 있습니다.

   

 8.Secure Erase

  - 기존에 기록되어 있던 Data 완전하게 파괴시켜 주는 기능입니다. 일종의 Low level format으로 보시면 되겠습니다. 이전의 삭제가 FAT등의 파일시스템의 링크만 지우는데 반해 완벽하게 삭제함으로서 복구가 불가능하게끔 합니다. 이러한 기능은 군사,정부 기관등 비밀을 유지하고 싶은 고객을 위해 설계된 기능입니다.  

   

 9.1.2V & DDR

  - 1.2V Volt에서도 동작하게 설계가 가능하며, DDR기능 지원으로 Falling,rising Edge data Patch해와 성능을 2 향상하게 해줍니다. 다만 현재 이기능은 여러가지 이유로 당분간 지원을 안할 가능성이 큽니다.(지원 칩셋 부재, 설계상의 이슈 등등..)

   

<출시 현황>

 현재 eMMC Ver 4.4로는 마이크론(Micron) 가장 선두로 샘플 양산 준비를 하고 있고, 삼성,하이닉스,도시바등이 연말을 목표로 준비를 하고 있습니다. 또한 대만의 NAND 컨트롤러 전문 업체들도 자사의 NAND 컨트롤러에 NAND메모리만 붙이면 바로 eMMC Ver 4.4 동작하게 도와주는 컨트롤러를 개발중에 있습니다. 내년에는 MLC 사용하는 많은 제품들이 eMMC 이전하지 않을까하는 생각이 듭니다.

   

이상으로 eMMC Ver 4.4 대한 설명을 마칩니다.감사합니다~^^

   

[출처] [ NAND 강좌 1 ] NAND 대한 이야기.|작성자 유유자적

   

원본 위치 <http://blog.naver.com/PostView.nhn?blogId=csn96&logNo=120067004138&categoryNo=13&viewDate=&currentPage=1&listtype=0&userTopListOpen=false&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=undefined>

   

   

   

   

   

'Hello CE,Mobile' 카테고리의 다른 글

[Windows Mobile] Programming Camera Driver #1  (0) 2010.10.28
버스드라이버  (0) 2010.10.27
Windows Mobile 6.5 기대반 실망반 by 키온  (0) 2010.10.13
CeGetUserNotification()  (0) 2010.05.28
Dotproject  (0) 2010.05.13