1/23/2015

NAND 기본사항

1. FLASH Memory 

역사

플래시 메모리는 1984년 당시 도시바에서 근무하고 있던 마스오카 후지오 박사가 발명했다. 도시바에 따르면, '플래시'라는 이름은 마스오카 박사의 동료인 아리스미 쇼자가 제안했다고 한다. 왜나하면, 메모리 내용이 지워지는 과정이 마치 카메라의 플래시를 떠올렸기 때문이다. 마스오카 박사는 이 발명을 캘리포니아 새너제이에서 열렸던 IEEE 1984 International Electron Devices Meeting (IEDM)에서 발표하였다. 당시 인텔은 이 발명의 엄청난 잠재력을 보고 1988년 최초의 상업용 NOR 타입 플래시 메모리를 소개하였다.

NOR 기반 플래시는 지우기와 쓰기 시간이 긴 대신 어떤 위치에도 임의로 접근할 수 있게 주소/자료 인터페이스를 제공한다. 이 메모리는 컴퓨터 바이오스나 셋톱 박스의 펌웨어와 같이 자주 업데이트되지 않는 프로그램 코드를 저장하는 데에 알맞다. 플래시 메모리 특성상 10,000에서 1,000,000까지 지울 수 있다. NOR 기반 플래시는 초기 이동형 매체의 뿌리가 되어, 콤팩트 플래시에서 처음 사용되었으나 나중에 좀 더 싼 NAND 플래시가 쓰이기 시작했다.

NAND 플래시는 1989년에 도시바가 ISSCC에서 발표했다. NAND 플래시는 NOR 플래시에 비해 지우기와 쓰기 시간이 좀 더 빠르고 집적도가 높으며 비트당 제작비도 낮고 10배의 내구성을 자랑한다. 그러나 입출력 인터페이스는 자료에 대한 순차 접근만을 지원한다. 이것은 컴퓨터 메모리로는 조금 덜 유용하지만 개인용 컴퓨터 카드와 다양한 메모리 카드와 같은 대용량 저장 장치에 알맞다. 첫 NAND 기반 이동형 미디어 포맷은 스마트 미디어였지만, MMC, 시큐어 디지털(Secure Digital), 메모리 스틱과 XD-Picture 카드에서도 사용되고 있다. 그 밖에 RS-MMC (Reduced Size MultiMedia Card), TransFlash, miniSD 등이 다음 세대 저장 매체로 등장하고 있다. 이러한 새로운 포맷은 보통 크기가 4 제곱 센티미터 이하로 상당히 작다.


한계

플래시 메모리의 한계는 블록 내에서 특정 단위로 읽고 쓸 수 있지만, 블록 단위로 지워야 한다는 것이다. 또한 덮어 쓸 수 없으므로, 모든 블록을 지우기 전까지는 해당 자료를 변경할 수 없다.

NOR 플래시의 경우, 임의 접근 방식으로 바이트 또는 워드 단위로 읽기/쓰기 동작이 가능하지만 덮어 쓰기와 지우기 동작은 임의로 접근할 수 없다. NAND 플래시는 페이지 단위로 읽기/쓰기 동작이 가능하지만 해당 페이지를 덮어 쓰거나 지우려면 모든 블록을 지워야 한다.(NAND 플래시는 블록을 여러 페이지로 나누어 사용한다)..


  상위의 글 아래 위키자료
   http://ko.wikipedia.org/wiki/%ED%94%8C%EB%9E%98%EC%8B%9C_%EB%A9%94%EB%AA%A8%EB%A6%AC
  http://www.eetimes.com/document.asp?doc_id=1272118

  tn2919_nand_101.pdf

1.2 Flash Memory의 NAND 기본이해

Flash Memory는 두 종류이지만 거의 NAND만 사용하므로, NAND에 대해서만 언급하겠다.
나의 경우에도 NOR FLASH를 못본지 벌써 얼추 10년이 되어 가는 것 같다. 물론 이의 중간형태인 ONE-NAND도 있지만 초창기에 잠시 좀 쓰이다가 잘 사용하지 않아서 생략한다.

역시 사용하기도 편하고 빠르고 가격이 문제로 인하여 어쩔수 없이 트렌드가 NAND로 가는 것 같다.

아래의 사이트에서 너무 쉽게 설명을 해주고 있어 감사할 다름이다.



  • NAND 기술관련자료    
   개인블로그에서 NAND의 기본구조 ,타입 및 기본적인 내용 설명 및 필요기술소개
   내용이 이해하기 쉽고 좋아서 Link로 연결

   http://cappleblog.co.kr/582
   http://cappleblog.co.kr/583


   NAND의 기본구성에 대해 자세히 기술되어져 있다.
   https://www.ece.umd.edu/~blj/CS-590.26/nand-presentation-2010.pdf


2. NAND의 기본구성

NAND의 구성은  Block과 Page로 구성이 되며, Page가 모여 Block이 되는 구성이다.

1 Block  (Chip Vendor Bad Block이 아님을 보증) 
2 Block 
3 Block 
4 Block -- 1 Page ( Data + OOB)
           2 Page
           3 Page
           4 Page
           5 Page 
           ......           


  • 전형적인 Block과 Page Size 관계
  1. 32 pages of 512+16 bytes each for a block size of 16 kB
  2. 64 pages of 2,048+64 bytes each for a block size of 128 kB
  3. 64 pages of 4,096+128 bytes each for a block size of 256 kB
  4. 128 pages of 4,096+128 bytes each for a block size of 512 kB

      • NAND의 기본특성 
      1. Erase의 기본단위로  Block 단위 
      2. Read/Write 의 기본단위는 Page 단위 
      3. Erase 를 할 경우 값은 0xFF     로 변경   (NAND의 기본특성)
      4. Write 를 할 경우 값은 1 -> 0  변경    (NAND의 기본특성) 

      • Flash Memory의 Wiki 확인내용 
      1. NAND의 내구성  (Erasing 횟수 관련내용, 참조만 하고 Datasheet 참고)
      2. NAND or NOR 비교  ( NOR는 XIP 실행)
      3. NAND 년도 별의 공정의 변화 및 Trend 

         http://en.wikipedia.org/wiki/Flash_memory


      2.1 NAND Page의 기본구성 

      Page는 Write의 기본단위이며, Main Area + OOB 로 구성이 되어, 보통 Main Area 512 byte , OOB는 16byte 구성된다.
      물론 Main Area 256 였던 시절도 존재하며, 현재 2048이고 이 Size는 가변적이다.
      (상위 구성은 기본예이며, Chip Vendor에 및 Chip 따라 Size가 변경)

      설사 Main Area가 2048byte 일 경우에도 기본 Base로 512byte에 기반으로 ECC를 계산하여 OOB에 넣기 때문에 512byte는 중요

      • 1 Page 의 구성의 예
      1. Data(Main area)    : 2048 bytes
      2. OOB(Out Of Band) : 64 bytes


      • Page 2K일 경우, 2048/512 = 4 
      1. 512+16, 
      2. 512+16, 
      3. 512+16, 
      4. 512+16 


      • 삼성 SLC Type NAND 구성 (Samsung SLC)  
           K9F1G08U0M  = 8 bit Bus

                1 Page   =  (2K + 64) Bytes
                1 Block   = (2K + 64)B x 64 Page
                             = 128K +4K Bytes
                1 Device = (2K+64)B x 64Pages x 1024 Blocks = 1056Mbits = 128M bytes.

        http://wiki.openwrt.org/doc/techref/flash



      Ref.
          http://www.macronix.com/Lists/ApplicationNote/Attachments/736/AN0269V2_Introduction%20to%20NAND%20in%20Embedded%20Systems-0220.pdf


      2.2 Timing

      Nand는 기본적으로 CMD 방식으로 제어를 하며, 약간의 Timing 오류에 따라 오류가 발생을 할 수 있다고 하나 유연하므로 ,
      이 부분은 적당히 설정 하거나 주의하면 되겠다.