KR102125376B1 - 저장 장치 및 그것의 쓰기 방법 - Google Patents

저장 장치 및 그것의 쓰기 방법 Download PDF

Info

Publication number
KR102125376B1
KR102125376B1 KR1020130076613A KR20130076613A KR102125376B1 KR 102125376 B1 KR102125376 B1 KR 102125376B1 KR 1020130076613 A KR1020130076613 A KR 1020130076613A KR 20130076613 A KR20130076613 A KR 20130076613A KR 102125376 B1 KR102125376 B1 KR 102125376B1
Authority
KR
South Korea
Prior art keywords
program
program operation
cores
memory
states
Prior art date
Application number
KR1020130076613A
Other languages
English (en)
Other versions
KR20150003969A (ko
Inventor
곽동훈
심동교
박기태
박현욱
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130076613A priority Critical patent/KR102125376B1/ko
Priority to US14/188,889 priority patent/US9336866B2/en
Priority to CN201410309432.0A priority patent/CN104282337B/zh
Publication of KR20150003969A publication Critical patent/KR20150003969A/ko
Priority to US15/138,302 priority patent/US9824761B2/en
Application granted granted Critical
Publication of KR102125376B1 publication Critical patent/KR102125376B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명에 따른 저장 장치는, 코어스 프로그램 동작 정보를 근거로 하여 원-스텝 프로그램 동작 혹은 멀티-스텝 프로그램 동작을 수행함으로써 메모리 셀에 멀티-비트 데이터를 저장하는 적어도 하나의 비휘발성 메모리 장치; 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하고, 쓰기 요청시 어드레스에 대응하는 메모리 블록의 셀 상태 정보를 근거로 하여 코어스 프로그램 동작의 수행 여부 혹은 코어스 프로그램 동작의 종류를 결정하고, 상기 결정된 코어스 프로그램 동작 정보를 상기 적어도 하나의 비휘발성 메모리 장치에 전송하는 메모리 제어기를 포함한다.

Description

저장 장치 및 그것의 쓰기 방법{STORAGE DEVICE AND WRITING METHOD THEREOF}
본 발명은 저장 장치 및 그것의 쓰기 방법에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치와 비휘발성 반도체 메모리 장치로 나누어진다. 비휘발성 반도체 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 비휘발성 메모리에 저장되는 데이터는 메모리 제조 기술에 따라 영구적이거나 재프로그램 가능하다. 비휘발성 반도체 메모리 장치는 컴퓨터, 항공 전자 공학, 통신, 및 소비자 전자 기술 산업과 같은 넓은 범위의 응용에서 사용자 데이터 저장, 프로그램 및 마이크로 코드의 저장을 위해서 사용된다.
최근에 셀에 의한 커플링(coupling)을 줄이기 위하여 재프로그래밍(reprogramming) 방식으로 수행되는 프로그램 동작이 개시되었다. 여기서 재프로그래밍 방식은, 저장될 데이터 값에 대응하는 문턱전압의 산포의 폭을 좁히도록 복수의 프로그램 동작을 수행한다. 즉, 재프로그래밍 방식은, 대략적으로 문턱전압 산포를 형성하는 멀티-비트 프로그램 동작을 수행하는 코어스 프로그램 동작(Coarse program operation), 코어스 프로그램 동작으로 형성된 문턱전압 산포를 정밀하게 모으는 파인 프로그램 동작(Fine program operation)을 포함한다. 한편, 재프로그래밍 방식에 대한 좀 더 자세한 것은, 삼성전자에서 출원하였으며, 이 출원의 참고문헌으로 결합된 미국 등록 특허들 US 8,355,280, US 8,411,502, 미국 공개 특허들 US 2011/0205817, US 2013/0145234에서 설명될 것이다.
본 발명의 목적은 성능이 향상된 저장 장치 및 쓰기 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치; 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 쓰기 방법은: 쓰기 요청시 데이터 및 어드레스를 입력 받는 단계; 상기 어드레스에 대응하는 메모리 블록의 셀 상태 정보를 근거로 하여 코어스 프로그램 동작을 수행할 지를 판별하는 단계; 상기 판별 결과에 따라 상기 데이터를 상기 메모리 블록의 메모리 셀들에 저장하기 위하여 상기 코어스 프로그램 동작을 수행하는 단계; 및 상기 코어스 프로그램 동작 이후에 상기 코어스 프로그램 동작에 따른 문턱전압 산포의 폭보다 좁은 문턱전압 산포의 폭을 갖도록 상기 데이터를 상기 메모리 셀들에 저장하기 위하여 파인 프로그램 동작을 수행하는 단계를 포함한다.
실시 예에 있어서, 상기 셀 상태 정보는 상기 메모리 셀들의 웨어 레벨 정도를 지시한다.
실시 예에 있어서, 상기 셀 상태 정보는 P/E 싸이클을 포함한다.
실시 예에 있어서, 상기 코어스 프로그램 동작을 수행하기 전에 상기 데이터를 버퍼링하는 단계를 더 포함한다.
실시 예에 있어서, 상기 데이터를 버퍼링하는 단계는, 상기 데이터를 상기 적어도 하나의 비휘발성 메모리 장치의 버퍼 영역에 N(N은 1 이상의 정수)-비트 프로그램 동작을 수행하는 단계를 더 포함하고, 상기 N-비트는 상기 메모리 셀에 저장되는 M-비트보다 작은 수이다.
실시 예에 있어서, 상기 데이터를 버퍼링하는 단계는, 상기 데이터를 상기 적어도 하나의 비휘발성 메모리 장치의 외부에 위치한 버퍼 메모리에 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 메모리 셀들 각각은 멀티-비트 데이터를 저장하고, 상기 코어스 프로그램 동작을 수행하는 단계는, 상기 멀티-비트 데이터에 대응하는 모든 문턱전압 산포들을 이용하여 상기 데이터를 상기 메모리 셀들에 저장하는 단계를 포함한다.
실시 예에 있어서, 상기 메모리 셀들 각각은 멀티-비트 데이터를 저장하고, 상기 코어스 프로그램 동작을 수행하는 단계는, 상기 멀티-비트 데이터에 대응하는 문턱전압 산포들 중에서 일부를 이용하여 상기 데이터를 상기 메모리 셀들에 저장하는 단계를 더 포함한다.
실시 예에 있어서, P/E 싸이클에 따라 상기 이용되는 문턱전압 산포들의 개수가 가변된다.
실시 예에 있어서, 상기 코어스 프로그램 동작을 수행하는 단계, 프로그램 속도를 향상시키기 위하여 상기 데이터를 상기 데이터의 크기보다 적은 데이터로 리맵핑하는 단계; 및 상기 리맵핑된 데이터를 상기 메모리 셀들에 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 코어스 프로그램 동작은 최상위 문턱전압 산포에 가까울수록 문턱전압 산포의 폭이 좁아지도록 수행된다.
실시 예에 있어서, 상기 코어스 프로그램 동작은 ISPP 스킴으로 수행되고, 프로그램 펄스의 증가분 혹은 상기 프로그램 펄스의 폭은 프로그램 루프의 회수 혹은 특정 상태의 패스 여부에 따라 가변된다.
실시 예에 있어서, 상기 프로그램 루프는 상기 증가분 혹은 상기 폭이 가변되는 복수의 구간들을 포함한다.
실시 예에 있어서, 상기 파인 프로그램을 수행하는 단계는, 상기 코어스 프로그램 동작에서 최종적으로 사용된 상기 증가분보다 동일하거나 작은 증가분 혹은 상기 폭보다 동일하거나 작은 폭을 사용하여 상기 데이터를 상기 메모리 셀들에 저장하는 단계를 포함한다.
실시 예에 있어서, 상기 코어스 프로그램 동작을 수행하기 전에 상기 파인 프로그램 동작이 시작될 때까지의 예상 시간을 예측하는 단계; 및 상기 예상 시간을 근거로 하여 상기 코어스 프로그램 동작의 종류를 결정하는 단계를 더 포함한다.
실시 예에 있어서, 어드레스 스크램블을 이용하여 상기 예상 시간이 예측된다.
본 발명의 다른 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치; 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 쓰기 방법은: 쓰기 요청시 데이터 및 어드레스를 입력 받는 단계; 상기 어드레스에 대응하는 메모리 블록의 셀 상태 정보를 근거로 하여 코어스 프로그램 동작의 종류를 결정하는 단계; 상기 데이터를 상기 메모리 블록의 메모리 셀들에 저장하기 위하여 상기 결정된 종류의 코어스 프로그램 동작을 수행하는 단계; 및 상기 코어스 프로그램 동작 이후에, 상기 코어스 프로그램 동작에 따른 문턱전압의 산포의 폭보다 좁은 문턱전압 산포의 폭을 갖도록 상기 데이터를 상기 메모리 셀들에 저장하기 위하여 파인 프로그램 동작을 수행하는 단계를 포함한다.
실시 예에 있어서, 상기 코어스 프로그램 동작의 종류는 P/E 싸이클을 따라 프로그램 동작에 이용되는 문턱전압 산포들의 개수로 결정된다.
실시 예에 있어서, 상기 코어스 프로그램 동작의 종류는 상기 메모리 셀들의 열화 정도에 따라 산포의 폭을 일정하게 할 지 혹은 산포의 폭을 가변할 지로 결정된다.
실시 예에 있어서, 상기 코어스 프로그램 동작의 종류는 상기 파인 프로그램 동작이 시작될 때까지의 예상 시간에 따라 산포의 폭을 일정하게 할 지 혹은 산포의 폭을 가변할 지로 결정된다.
본 발명의 실시 예에 따른 저장 장치는, 코어스 프로그램 동작 정보를 근거로 하여 원-스텝 프로그램 동작 혹은 멀티-스텝 프로그램 동작을 수행함으로써 메모리 셀에 멀티-비트 데이터를 저장하고, 상기 멀티-스텝 프로그램 동작은 문턱전압 산포들의 전체 혹은 일부에 대응하는 데이터를 메모리 셀들에 저장하는 코어스 프로그램 동작과 상기 코어스 프로그램 동작 이후에 산포의 폭을 좁히도록 파인 프로그램 동작을 포함하는 적어도 하나의 비휘발성 메모리 장치; 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하고, 쓰기 요청시 어드레스에 대응하는 메모리 블록의 셀 상태 정보를 근거로 하여 코어스 프로그램 동작의 수행 여부 혹은 코어스 프로그램 동작의 종류를 결정하고, 상기 결정된 코어스 프로그램 동작 정보를 상기 적어도 하나의 비휘발성 메모리 장치에 전송하는 메모리 제어기를 포함한다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 장치는, 상기 쓰기 요청시 쓰기 데이터를 버퍼링하기 위하여 상기 쓰기 데이터에 대하여 N(N은 1 이상의 정수)-비트 프로그램 동작을 수행하는 버퍼 영역을 더 포함한다.
실시 예에 있어서, 상기 쓰기 요청시 쓰기 데이터를 버퍼링하기 위한 버퍼 메모리를 더 포함한다.
실시 예에 있어서, 상기 메모리 제어기는 상기 쓰기 요청시 쓰기 데이터를 버퍼링하기 위한 버퍼 메모리를 더 포함한다.
실시 예에 있어서, 상기 메모리 제어기는 상기 파인 프로그램 동작이 시작될 때까지 예상 시간을 예측하고, 상기 예상 시간에 따라 상기 코어스 프로그램 동작에 이용될 문턱전압 산포들의 개수를 결정하고, 상기 결정된 문턱전압 산포들의 개수에 따라 쓰기 데이터를 상기 쓰기 데이터의 크기 보다 작은 데이터로 리맵핑한다.
상술한 바와 같이 본 발명에 따른 저장 장치는 메모리 셀의 상태 정보를 근거로 하여 코어스 프로그램 동작의 수행 여부 혹은 종류를 결정함으로써, 쓰기 동작의 신뢰성 및 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 저장 장치에 대한 제 1 실시 예를 보여주는 도면이다.
도 2는 도 1에 도시된 비휘발성 메모리 장치를 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 메모리 블록을 예시적으로 보여주는 도면이다.
도 4는 도 3에 도시된 메모리 블록(BLK1)의 등가 회로도이다.
도 5는 도 1에 도시된 메모리 영역에 프로그램되는 메모리 셀의 문턱전압 산포에 대한 제 1 실시 예를 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 코어스 프로그램 동작의 문턱 전압 산포에 대한 제 1 실시 예를 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 코어스 프로그램 동작의 문턱 전압 산포에 대한 제 2 실시 예를 보여주는 도면이다.
도 8은 도 1에 도시된 메모리 영역에 프로그램되는 메모리 셀의 문턱전압 산포에 대한 제 2 실시 예를 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 코어스 프로그램 동작의 프로그램 루프에 대한 제 1 실시 예를 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 코어스 프로그램 동작의 프로그램 루프에 대한 제 2 실시 예를 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 코어스 프로그램 동작의 프로그램 루프에 대한 제 3 실시 예를 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 파인 프로그램 동작의 프로그램 루프에 대한 실시 예를 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 어드레스 스크램블을 이용한 파인 프로그램 동작이 시작할 때까지의 예상 시간을 개념적으로 설명하기 위한 도면이다.
도 14는 본 발명의 실시 예에 따른 저장 장치에 대한 제 2 실시 예를 보여주는 도면이다.
도 15는 도 14에 도시된 비휘발성 메모리 장치를 예시적으로 보여주는 블록도이다.
도 16은 본 발명의 실시 예에 따른 저장 장치에 대한 제 3 실시 예를 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 저장 장치에 대한 제 4 실시 예를 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 쓰기 방법에 대한 제 1 실시 예를 보여주는 흐름도이다.
도 19는 본 발명의 실시 예에 따른 쓰기 방법에 대한 제 2 실시 예를 보여주는 흐름도이다.
도 20 내지 도 23은 본 발명의 응용 예들을 보여주는 블록도들이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명의 실시 예에 따른 저장 장치는 셀 상태 정보를 근거로 하여 코어스 프로그램 동작(Coarse program operation) 여부를 결정하거나, 코어스 프로그램 동작의 종류를 결정할 수 있다.
도 1은 본 발명의 실시 예에 따른 저장 장치에 대한 제 1 실시 예를 보여주는 도면이다. 도 1을 참조하면, 저장 장치(10)는 적어도 하나의 비휘발성 메모리 장치(100, NVM(s)) 및 그것을 제어하는 메모리 제어기(200)를 포함한다.
비휘발성 메모리 장치(100)는 재프로그래밍(reprogramming) 방식으로 멀티-비트 프로그램 동작을 수행할 수 있다. 비휘발성 메모리 장치(100)는 버퍼 영역(112) 및 메모리 영역(114)을 포함한다.
버퍼 영역(112)은 재프로그래밍 방식으로 프로그램 동작을 수행할 때 버퍼 프로그램 동작(Buffer PGM)이 수행되는 영역이다. 여기서 버퍼 프로그램 동작은 버퍼링을 위하여 복수의 페이지 데이터(PD1 ~ PDk, k는 2 이상)를 버퍼 영역(112)의 복수의 페이지들에 저장시킬 수 있다. 실시 예에 있어서, 버퍼 영역(112)은 SLC(Single Level cell) 메모리를 포함할 수 있고, 버퍼 프로그램 동작은 1-비트 프로그램 동작이거나 N-비트 프로그램 동작(N은 1 이상의 정수)일 수 있다.
메모리 영역(114)은 원-스텝 프로그램 동작(One-Step PGM)이 수행되거나 멀티-스텝 프로그램 동작(Multi-Step PGM)이 수행되는 영역이다. 원-스텝 프로그램 동작(One-Step PGM)은, 재프로그래밍 방식을 이용하지 않고 복수의 페이지 데이터(PD1 ~ PDk)를 하나의 페이지에 저장시킬 수 있다. 멀티-스텝 프로그램 동작(Multi-Step PGM)은, 재프로그래밍 방식을 이용하여 복수의 페이지 데이터(PD1 ~ PDk)을 하나의 페이지에 저장시킬 수 있다.
실시 예에 있어서, 메모리 영역(114)은 MLC(multi level cell) 혹은 TLC(triple level cell) 메모리로 구성되며, M-비트 프로그램 동작(M은 정수)을 수행할 수 있다. 이때, M은 N보다 같거나 큰 정수이다. 예를 들어, 버퍼 영역(112)은 1-비트 프로그램 동작을 할 때, 메모리 영역(114)은 2 비트 이상의 프로그램 동작을 수행할 수 있다.
멀티-스텝 프로그램 동작(Multi-Step PGM)은 코어스 프로그램 동작(Coarse PGM), 파인 프로그램 동작(Fine PGM")을 포함할 수 있다. 파인 프로그램 동작(Fine PGM)의 문턱전압 산포의 폭은, 동일 데이터를 지시하는 코어스 프로그램 동작의 문턱전압 산포의 폭보다 좁을 수 있다.
한편, 멀티-스텝 프로그램 동작은 적어도 하나의 코어스 프로그램 동작과 적어도 하나의 파인 프로그램 동작으로 구성될 수 있다.
정리하면, 비휘발성 메모리 장치(100)는 원-스텝 프로그램 동작(One-Step PGM) 및 멀티-스텝 프로그램 동작(Multi-Step PGM) 중 어느 하나로 데이터를 저장시키는 메모리 영역(114)을 포함할 수 있다.
메모리 제어기(200)는 외부로부터 쓰기 요청시 프로그램될 메모리 셀의 상태 정보를 근거로 하여 코어스 프로그램 동작(Coarse PGM)을 수행할 지 여부를 판별할 수 있다. 여기서 셀 상태 정보(cell status INF)는 P/E 싸이클, 웨어 레벨 정도, 프로그램 진행 여부 등 이 될 수 있다.
실시 예에 있어서, 메모리 제어기(200)는 P/E 싸이클이 사전에 결정된 값보다 작을 때(즉, 메모리 셀의 열화 정도가 상대적으로 높지 않을 때), 코어스 프로그램 동작을 수행하지 않을 수 있다. 즉, 원-스텝 프로그램 동작(One-Step PGM)에 의해 데이터가 메모리 영역(114)에 저장될 수 있다.
반면에, 메모리 제어기(200)는 P/E 싸이클이 사전에 결정된 값보다 이상일 때(즉, 메모리 셀의 열화 정도가 상대적으로 높을 때) 코어스 프로그램 동작을 수행할 수 있다. 즉, 멀티-스텝 프로그램 동작(Multi-Step PGM)에 의해 데이터가 메모리 영역(114)에 저장될 수 있다. 다른 실시 예에 있어서, 메모리 제어기(200)는 디폴트로 재프로그래밍 방식으로 멀티-비트 프로그램 동작을 수행하고, P/E 싸이클이 소정의 값 미만일 때만 재프로그래밍 방식을 이용하지 않는 멀티-비트 프로그램 동작을 수행하도록 구현될 수도 있다.
본 발명의 실시 예에 따른 저장 장치(10)는 셀 상태 정보(예를 들어, P/E 싸이클, 웨어 레벨 정도, ....)을 근거로 하여 재프로그래밍 방식을 이용한 멀티-비트 프로그램 동작 여부를 결정할 수 있다.
도 2는 도 1에 도시된 비휘발성 메모리 장치(100)를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 비휘발성 메모리 장치(100)는 메모리 셀 어레이(110), 어드레스 디코더(120), 입출력 회로(130), 및 제어 로직(140)을 포함한다.
비휘발성 메모리 장치(100)는 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND;VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
또한, 비휘발성 메모리 장치(100)는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다. 아래에서는 설명의 편의를 위하여 비휘발성 메모리 장치(100)이 수직형 낸드 플래시 메모리 장치라고 하겠다.
메모리 셀 어레이(110)는 워드라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL) 및 적어도 하나의 접지 선택 라인(GSL)을 통해 어드레스 디코더(120)에 연결되고, 비트라인들(BLs)을 통해 입출력 회로(130)에 연결된다. 메모리 셀 어레이(110)는 복수의 메모리 블록들(BLK1 ~ BLKz, z는 2 이상의 정수)을 포함한다.
복수의 메모리 블록들(BLK1 ~ BLKz) 각각은 기판 상에서 제 1 방향 및 제 2 방향(제 1 방향과 다름)에 따라 배열되고, 제 3 방향(제 1 방향과 제 2 방향으로 형성된 평면에 수직한 방향)으로 배열되는 3차원 구조의 복수의 스트링들(strings)을 포함한다. 여기서 복수의 스트링들 각각은, 적어도 하나의 스트링 선택 트랜지스터, 복수의 메모리 셀들, 적어도 하나의 접지 선택 트랜지스터들로 기판에 수직한 방향으로 구성된다. 여기서 복수의 메모리 셀들 각각은 적어도 한 비트를 저장할 수 있다.
메모리 블록들(BLK1 ~ BLKz) 중 적어도 하나는 도 1에 도시된 버퍼 영역(112)으로 이용되고, 나머지는 메모리 영역(114)으로 이용될 수 있다. 실시 예에 있어서, 버퍼 영역(112)은 메모리 블록들(BLK1 ~ BLKz) 중에서 고정된 메모리 블록일 수 있다. 다른 실시 예에 있어서, 버퍼 영역(112)은 메모리 블록들(BLK1 ~ BLKz) 중에서 메모리 제어기(200)에 의해 가변 될 수 있는 메모리 블록일 수 있다. 또 다른 실시 예에 있어서, 메모리 블록들(BLK1 ~ BLKz) 각각은 일부를 버퍼 영역(112)으로 이용하고, 나머지를 메모리 영역(114)으로 이용될 수도 있다.
어드레스 디코더(120)는 워드라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL) 및 적어도 하나의 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(110)에 연결된다. 어드레스 디코더(120)는 디코딩된 로우(row) 어드레스를 이용하여 워드라인들(WLs), 스트링 선택 라인(SSL), 접지 선택 라인(GSL)을 선택한다. 또한, 어드레스 디코더(120)는 입력된 어드레스(ADDR) 중 컬럼(column) 어드레스를 디코딩 할 수 있다. 여기서 디코딩된 컬럼 어드레스(DCA)는 입출력 회로(130)에 전달될 것이다. 실시 예에 있어서, 어드레스 디코더(120)는 로우 디코더, 컬럼 디코더, 어드레스 버퍼 등을 포함할 것이다.
입출력 회로(130)는 비트라인들(BLs)을 통해 메모리 셀 어레이(110)에 연결된다. 입출력 회로(130)는 어드레스 디코더(120)로부터 디코딩된 컬럼 어드레스(DCA)를 입력 받도록 구현될 것이다. 입출력 회로(130)는 디코딩된 컬럼 어드레스(DCA)를 이용하여 비트라인들(BLs)을 선택할 것이다.
입출력 회로(130)는 외부로부터(예를 들어, 메모리 제어기) 데이터를 입력 받고, 입력된 데이터를 메모리 셀 어레이(110)에 저장한다. 또한, 입출력 회로(130)는 메모리 셀 어레이(110)로부터 데이터를 읽고, 읽혀진 데이터를 외부로 출력할 것이다. 한편, 입출력 회로(130)는 메모리 셀 어레이(110)의 제 1 영역으로부터 데이터를 읽고, 읽혀진 데이터를 메모리 셀 어레이(110)의 제 2 영역으로 저장할 수도 있다. 예를 들어, 입출력 회로(130)는 카피-백(copy-back)을 수행하도록 구현될 수 있다.
제어 로직(140)은 비휘발성 메모리 장치(100)의 전반적인 동작(프로그램/읽기/소거 등)을 제어한다. 제어 로직(140)은 외부로부터 입력된 제어 신호들(CTRL) 혹은 명령에 응답하여 동작할 수 있다.
또한, 제어 로직(140)은 원-스텝 제어 로직(141)과 멀티-스텝 제어 로직(142)을 포함할 수 있다. 원-스텝 제어 로직(141)은 재프로그래밍 방식을 이용하지 않고 멀티-비트 프로그램 동작을 수행하도록, 내부 구성 요소들(어드레스 버퍼(120), 입출력 회로(130) 등)을 제어할 수 있다. 멀티-스텝 제어 로직(142)은 재프로그래밍 방식을 이용하여 멀티-비트 프로그램 동작을 수행하도록 내부 구성 요소들을 제어할 수 있다.
실시 예에 있어서, 제어 로직(140)은 메모리 제어기(도 1 참조, 200)로부터 입력된 코어스 프로그램 동작 정보(CPINF, 혹은 "코어스 프로그램 동작 신호")를 근거로 하여 원-스텝 제어 로직(141)과 멀티-스텝 제어 로직(142) 중 어느 하나를 활성화 시킬 수 있다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치(100)는 코어스 프로그램 동작 정보(CPINF)를 근거로 하여 원-스텝 프로그램 동작(One-Step PGM) 혹은 멀티-스텝 프로그램 동작(Multi-Step PGM)을 수행할 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 블록을 예시적으로 보여주는 도면이다. 도 3을 참조하면, 메모리 블록(BLK1)은 기판(SUB)과 수직 방향으로 형성된다. 기판(SUB)에는 n+ 도핑 영역이 형성된다.
기판(SUB) 위에는 게이트 전극막(gate electrode layer)과 절연막(insulation layer)이 교대로 증착된다. 게이트 전극막(gate electrode layer)과 절연막(insulation layer) 사이에는 정보 저장막(information storage layer)이 형성될 수 있다.
게이트 전극막과 절연막을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar)가 형성된다. 필라는 게이트 전극막과 절연막을 관통하여 기판(SUB)과 연결된다. 필라(pillar)의 내부는 충전 유전 패턴(filing dielectric pattern)으로 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다. 필라의 외부는 수직 활성 패턴(vertical active pattern)으로 채널 반도체로 구성될 수 있다.
메모리 블록(BLK1)의 게이트 전극막(gate electrode layer)은 접지 선택 라인(GSL), 복수의 워드 라인들(WL1 ~ WL8), 그리고 스트링 선택 라인(SSL)에 연결될 수 있다. 그리고 메모리 블록(BLK1)의 필라(pillar)는 복수의 비트 라인들(BL1 ~ BL3)과 연결될 수 있다. 도 3에서는, 하나의 메모리 블록(BLK1)이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인(WL1 ~ WL8), 그리고 3개의 비트 라인(BL1 ~ BL3)을 갖는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
도 4는 도 3에 도시된 메모리 블록(BLK1)의 등가 회로도이다. 도 4를 참조하면, 비트 라인들(BL1 ~ BL3)과 공통 소스 라인(CSL) 사이에는 셀 스트링(CS11 ~ CS33)이 연결되어 있다. 각각의 셀 스트링(예를 들면, CS11)은 접지 선택 트랜지스터(GST), 복수의 메모리 셀(MC1 ~ MC8), 그리고 스트링 선택 트랜지스터(SST)를 포함할 수 있다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(SSL; String Selection Line)에 연결된다. 스트링 선택 라인(SSL)은 제 1 내지 제 3 스트링 선택 라인(SSL1 ~ SSL3)으로 분리되어 있다. 접지 선택 트랜지스터(GST)는 접지 선택 라인(GSL)에 연결된다. 각 셀 스트링의 접지 선택 라인(GSL)은 연결되어 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL; Common Source Line)에 연결된다.
복수의 메모리 셀(MC1~MC8)은 각각 대응하는 워드 라인(WL1~WL8)에 연결된다. 하나의 워드 라인에 연결되고, 동시에 프로그램되는 메모리 셀들의 집합을 페이지(page)라 부른다. 메모리 블록(BLK1)은 복수의 페이지로 구성된다. 또한, 하나의 워드 라인에는 복수의 페이지들이 연결될 수 있다. 도 4를 참조하면, 공통 소스 라인(CSL)으로부터 동일 높이의 워드 라인(예를 들면, WL4)은 3개의 페이지에 공통으로 연결되어 있다.
한편, 각각의 메모리 셀은 한 비트의 데이터 또는 두 비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장할 수 있는 메모리 셀은 싱글 레벨 셀(SLC; single level cell) 또는 싱글 비트 셀(single bit cell)이라 부른다. 하나의 메모리 셀에 두 비트 이상의 데이터를 저장할 수 있는 메모리 셀은 멀티 레벨 셀(MLC; multi level cell) 또는 멀티-비트 셀(multi bit cell)이라 부른다. 2비트 MLC의 경우에는 하나의 물리적 페이지에 2개의 페이지 데이터가 저장된다. 따라서 제 4 워드 라인(WL4)에 연결된 메모리 셀에는 6개의 페이지 데이터가 저장될 수 있다.
3차원 비휘발성 메모리 장치가 차지 트랩형 플래시(charge trap flash; CTF)로 구현될 수 있다. 이 때, 프로그램 된 CTF에 트랩 되어 있던 전하들이 시간이 지나면서 재분포되고 유실되는 IVS(initial verify shift)가 발생될 수 있다. 이러한 산포 열화 현상을 극복하기 위하여 재 프로그램밍을 수행할 수 있다.
도 5는 도 1에 도시된 메모리 영역(114)에 프로그램되는 메모리 셀의 문턱전압 산포에 대한 제 1 실시 예를 보여주는 도면이다. 도 5에서는 설명의 편의를 위하여 메모리 셀에 3-비트 프로그램 동작이 수행된다고 가정하겠다. 따라서, 메모리 셀은 8개의 문턱전압 산포들 중 적어도 하나로 프로그램될 것이다.
도 5를 참조하면, 원-스텝 프로그램 동작시 메모리 셀의 문턱전압 산포는 소거 상태(E) 및 프로그램 상태들(P21 ~ P27) 중 적어도 하나로 프로그램 될 것이다. 여기서 프로그램 상태들(P21 ~ P27)은 3-비트 데이터를 저장하는 최종 상태들이다.
도 5를 다시 참조하면, 재프로그래밍 방식에 따른 멀티-스텝 프로그램 동작은, 코어스 프로그램 동작(Coarse PGM)을 수행한 뒤, 이 후에 파인 프로그램 동작(Fine PGM)을 수행할 수 있다. 여기서 코어스 프로그램 동작 및 파인 프로그램 동작은 모두 3-비트 프로그램 동작들이다.
코어스 프로그램 동작시 메모리 셀의 문턱전압 산포는 상태(E) 및 프로그램 상태들(P11 ~ P17) 중 적어도 하나로 프로그램 될 것이다. 파인 프로그램 동작시 메모리 셀의 문턱전압 산포는 상태(E) 및 프로그램 상태들(P21 ~ P27) 중 적어도 하나로 프로그램 될 것이다.
파인 프로그램 동작의 프로그램 상태들(P21 ~ P27) 적어도 하나의 산포 폭은 대응하는 코어스 프로그램 동작의 프로그램 상태(P11 ~ P17)의 산포 폭보다 좁을 수 있다.
한편, 도 5에서는 설명의 편의를 위하여 멀티-스텝 프로그램 동작(Multi-Step PGM)이 2 단계(Coarse PGM -> Fine PGM)로 진행되었다. 하지만, 본 발명의 멀티-스텝 프로그램 동작(Multi-Step PGM)이 여기에 제한되지 않으며, 3 단계 이상으로 진행될 수도 있다.
정리하면, 본 발명의 메모리 영역(114)은 원-스텝 프로그램 동작(One-Step PGM)에 의해 최종 산포에 대응하는 데이터가 프로그램 되거나, 멀티-스텝 프로그램 동작(Multi-Step PGM)에 의해 최종 산포에 대응하는 데이터가 프로그램될 수 있다.
도 5에 도시된 코어스 프로그램 동작시 프로그램 상태들(P11 ~ P17) 모두에 대응하는 데이터가 프로그램 되었다. 하지만 본 발명이 여기에 제한되지 않을 것이다. 본 발명의 코어스 프로그램 동작은 프로그램 상태들(P11 ~ P17) 중 일부에 대응하는 데이터만 프로그램될 수 있다.
도 6은 본 발명의 실시 예에 따른 코어스 프로그램 동작의 문턱 전압 산포에 대한 제 1 실시 예를 보여주는 도면이다. 도 6을 참조하면, 코어스 프로그램 동작시 제 7 프로그램 상태(P17)에 대응하는 데이터만 프로그램될 것이다.
일반적으로 메모리 블록에 인가되는 P/E 싸이클이 증가하면, 셀 특성을 나타내는 산포의 폭이 점점 넓어지거나 쳐짐 현상을 나타낸다. 즉, P/E 싸이클이 증가함에 따라, 셀 산포가 초기값보다 나빠지고 에러가 발생할 확률이 높아진다. 그러나 에러 발생률을 줄이기 위하여 프로그램 동작마다 코어스 프로그램을 수행하면 프로그램의 전체 성능에 대한 열화가 발생될 수 있다. 본 발명의 일 실시예에 따르면, 코어스 프로그램 동작시 프로그램되는 프로그램 상태들의 개수가 P/E 싸이클에 따라 가변될 수 있다. 또한, P/E 싸이클이 초기 값이면 코어스 프로그램 동작을 수행하지 않고 곧바로 파인 프로그램 동작이 수행될 수 있다.
실시 예에 있어서, P/E 싸이클이 증가하면, 코어스 프로그램 동작시 프로그램되는 프로그램 상태의 개수가 증가할 수 있다. 예를 들어, 도 6에 도시된 바와 같이, P/E 싸이클이 0.5k 이하 일 때, 코어스 프로그램 동작시 제 7 프로그램 상태(P17)에 대응하는 데이터만 프로그램될 수 있다. 또, P/E 싸이클이 0.5k ~ 1k일 때, 코어스 프로그램 동작시 제 6 및 제 7 프로그램 상태들(P16, P17)에 대응하는 데이터만 프로그램 될 수 있다. 또한, P/E 싸이클이 1k 이상일 때, 코어스 프로그램 동작시 제 5 내지 제 7 프로그램 상태들(P15, P16, P17)에 대응하는 데이터만 프로그램 될 수 있다.
실시 예에 있어서, 일부 상태들만 프로그램 되기 때문에 입출력 회로(130, 도 2 참조)는, 버퍼 영역(112)으로부터 3개의 페이지 데이터를 다 가져 오는 것이 아니라, 2개의 페이지 데이터로 리맵핑(remapping)된 데이터를 가져오고, 그 다음에 코어스 프로그램 동작이 수행될 수 있다.
본 발명의 실시 예에 따른 코어스 프로그램 동작은 최상위 프로그램 상태(P17)로부터 P/E 싸이클을 근거로 하여 프로그램될 프로그램 상태들을 추가할 수 있다.
한편, 도 5에 도시된 코어스 프로그램 동작에서 프로그램 상태들(P11 ~P17) 각각의 문턱전압 산포의 폭은 동일하다. 하지만, 본 발명이 반드시 여기에 제한되지 않을 것이다. 본 발명의 코어스 프로그램 동작에서 프로그램 상태들 각각의 문턱전압 산포의 폭은 다를 수 있다.
도 7은 본 발명의 실시 예에 따른 코어스 프로그램 동작의 문턱 전압 산포에 대한 제 2 실시 예를 보여주는 도면이다. 도 7을 참조하면, 예를 들어, 최하위 프로그램 상태(P11')에서 최상위 프로그램 상태(P17')로 갈수록 문턱전압 산포의 폭이 좁아질 수 있다.
더불어, 프로그램 상태들은 제 1 및 제 2 프로그램 상태들(P11', P12')을 포함하는 제 1 그룹, 제 3 및 제 4 프로그램 상태들(P13', P14')을 포함하는 제 2 그룹, 제 5 내지 제 7 프로그램 상태들(P15', P16', P17')을 포함하는 제 3 그룹을 포함할 수 있다.
제 1 내지 제 3 그룹은 각각 다른 산포 폭에 의해 분류 될 수 있다. 각각 산포 폭은 프로그램 전압 인가 시에 프로그램 펄스의 증가분(ISPP)에 따라 달라질 수 있다. 이때, 제 3 그룹의 프로그램 상태에서의 산포 폭이 제 1 및 제 2 그룹보다 좁을 수 있다.
실시 예에 있어서, 코어스 프로그램 동작 시에 문턱전압 산포의 폭은 현재 프로그램 상태의 검증 레벨로부터 다음 프로그램 상태의 검증 레벨까지의 전압 차이로 결정 될 수 있다.
한편, 도 7에서는 모든 프로그램 상태들(P11' ~ P17')의 폭들이 최상위 프로그램 상태(P17')로 갈수록 좁아진다.
하지만 본 발명이 반드시 여기에 제한될 필요는 없다. 본 발명은 코어스 프로그램 동작시 적어도 하나의 프로그램 상태의 문턱전압 산포 폭이 다른 하나의 프로그램 상태의 문턱전압 산포 폭보다 좁아질 수 있다.
본 발명의 실시 예에 따른 코어스 프로그램 동작은 최상위 프로그램 상태(P17')에 인접할수록 좁은 문턱전압 산포 폭을 갖도록 프로그램될 수 있다.
한편, 도 5 내지 도 7에서는 3-비트 프로그램 동작에 대하여 기술하였다. 하지만 본 발명이 여기에 제한되지 않을 것이다. 본 발명은 4-비트 프로그램 동작에도 적용 가능하다.
도 8은 도 1에 도시된 메모리 영역(114)에 프로그램되는 메모리 셀의 문턱전압 산포에 대한 제 2 실시 예를 보여주는 도면이다. 도 8에서는 하나의 메모리 셀에 4-비트 프로그램 동작이 수행된다. 따라서, 메모리 셀은 16개의 문턱전압 산포들 중 적어도 하나로 프로그램될 것이다.
한편, 본 발명의 코어스 프로그램 동작(Coarse PGM)은 상위 프로그램 상태일수록 그것보다 낮은 프로그램 상태보다 좁은 문턱전압 산포 폭을 갖도록 아래와 같은 다양한 방법으로 프로그램 루프를 진행할 수 있다.
도 9는 본 발명의 실시 예에 따른 코어스 프로그램 동작의 프로그램 루프에 대한 제 1 실시 예를 보여주는 도면이다. 도 9를 참조하면, 코어스 프로그램 동작의 프로그램 루프는 소정의 루프부터는 프로그램 펄스의 증가분을 ISSP1에서 ISSP2 (< ISSP1)로 줄일 수 있다. 여기서 소정의 루프를 결정하는 판별 조건은 소정의 프로그램 루프의 개수, 검출 된 오프셀의 개수가 소정의 값 이상이거나 혹은 특정 상태의 패스 여부로 결정 될 수 있다.
한편, 도 9에서는 프로그램 펄스의 증가분은 한 번만 변경되었다. 하지만, 본 발명의 프로그램 루프가 여기에 제한되지 않을 것이다. 본 발명의 코어스 프로그램 동작의 프로그램 루프는 복수 번 프로그램 루프의 증가분을 변경할 수 있다.
도 10은 본 발명의 실시 예에 따른 코어스 프로그램 동작의 프로그램 루프에 대한 제 2 실시 예를 보여주는 도면이다. 도 10을 참조하면, 코어스 프로그램 동작의 프로그램 루프는 제 1 소정의 루프까지는 ISPP1으로, 제 1 소정의 루프 이후부터 제 2 소정의 루프까지는 ISSP2 (< ISPP1)으로, 제 2 소정의 루프 이후부터는 ISPP3 (<ISPP2)으로 프로그램 펄스의 증가분을 변경시킨다. 제 1 소정의 루프를 결정하는 제 1 판별 조건과 제 2 소정의 루프를 결정하는 제 2 판별 조건들 각각은 소정의 프로그램 루프의 개수, 검출 된 오프셀의 개수가 소정의 값 이상이거나 혹은 특정 상태의 패스 여부로 결정될 수 있다.
도 9 및 도 10을 정리하면, 본 발명의 실시 예에 따른 코어스 프로그램 동작의 프로그램 루프는 서로 다른 프로그램 루프의 증가분 갖는 복수의 구간들을 포함할 수 있다.
한편, 도 9 및 도 10에서는 코어스 프로그램 동작의 프로그램 루프는 프로그램 펄스의 증가분만을 변경하였다. 하지만, 본 발명이 반드시 여기에 제한되지 않을 것이다. 본 발명에 따른 코어스 프로그램 동작의 프로그램 루프는 프로그램 펄스의 인가 시간(duration)을 변경할 수 있다.
도 11은 본 발명의 실시 예에 따른 코어스 프로그램 동작의 프로그램 루프에 대한 제 3 실시 예를 보여주는 도면이다. 도 11을 참조하면, 코어스 프로그램 동작의 프로그램 루프는 소정의 루프부터는 프로그램 펄스의 증가분을 ISSP1에서 ISSP2 (< ISSP1)로 줄이고, 프로그램 펄스의 인가 시간을 d1에서 d2 (< d1)으로 줄일 수 있다.
한편, 본 발명의 코어스 프로그램 동작의 프로그램 루프에서 프로그램 펄스의 증가분/인가 시간의 변경은 도 8 내지 도 10에 제한되지 않고, 다양한 방법으로 구현될 수 있다. 정리하면, 본 발명의 실시 예에 따른 코어스 프로그램 동작의 프로그램 루프는 프로그램 루프의 개수/오프셀의 개수/특정 상태의 패스 여부에 따라 프로그램 펄스의 증가분/인가 시간의 변경할 수 있다. 그 결과로써, 코어스 프로그램 동작의 프로그램 루프는 도 7에 도시된 바와 같이 상위 상태일 수록 문턱전압 산포의 폭을 좁힐 수 있다.
한편, 본 발명의 파인 프로그램 동작(Fine PGM)은 최종 상태의 문턱 전압 산포를 갖도록 프로그램 루프의 증가분/인가 시간을 최적으로 선택하여 프로그램 루프를 진행할 수 있다.
도 12는 본 발명의 실시 예에 따른 파인 프로그램 동작의 프로그램 루프에 대한 실시 예를 보여주는 도면이다. 도 12를 참조하면, 파인 프로그램 동작의 프로그램 루프는 프로그램 펄스의 증가분(ISSP2) 및 프로그램 펄스의 인가 시간(d2)으로 진행될 수 있다. 도시되지 않았지만, 검증 단계는 Coarse 단계 및 Fine 단계로(다른 말로, 2-step verify) 진행될 수 있다.
한편, 본 발명의 코어스 프로그램 동작은 파인 프로그램 동작이 시작할 때까지의 예상 시간에 따라 다르게 수행될 수 있다. 즉, 코어스 프로그램 동작의 종류가 파인 프로그램 동작이 시작할 때까지의 예상 시간에 따라 결정될 수 있다. 여기서 파인 프로그램 동작이 시작할 때까지의 예상 시간은 어드레스 스크램블(address scramble)에 의해 결정될 수 있다.
도 13은 본 발명의 실시 예에 따른 어드레스 스크램블을 이용한 파인 프로그램 동작이 시작할 때까지의 예상 시간을 개념적으로 설명하기 위한 도면이다. 도 13을 참조하면, 어드레스 스크램블을 나타내는 테이블의 가로축은 스트링 선택 라인(SSL1~ SSL4)을 나타내고, 세로축은 워드라인(WL1 ~ WL4)을 나타낸다. 하나의 스트링 선택 라인과 하나의 워드라인이 관련된 지점들은 메모리 셀들의 어드레스를 나타낸다. 예를 들어, A 위치는 제 1 스트링 선택 라인(SSL1) 및 제 1 워드라인(WL1)이 관련된 지점에 있는 메모리 셀들의 위치를 의미하며, B 위치는 제 4 스트링 선택 라인(SSL4) 및 제 3 워드 라인(WL3)이 관련된 지점에 있는 메모리 셀들의 위치를 의미한다. 각각의 어드레스에 위치한 메모리 셀들에 코어스 프로그램 동작 및 파인 프로그램 동작을 순차적으로 수행될 수 있다.
도 13에서는, 설명의 편의를 위하여, 어드레스 스크램블은 워드라인 별 ① --> ② --> ③ --> ④ --> ⑤ --> ⑥ --> ⑦ --> ⑧ 단계로 진행된다고 가정 하겠다. 즉, 제 1 단계 (①) 에서 제 1 워드라인(WL1)에 대한 코어스 프로그램 동작이 완료된 후, 제 2 단계 (②) 에서 제 2 워드라인(WL2)에 대한 코어스 프로그램 동작이 완료된다. 이후에 제 3 단계(③)에서 제 1 워드라인(WL1)에 대한 파인 프로그램 동작이 수행되고, 제 4 단계(④)에서 제 3 워드라인(WL3)에 대한 코어스 프로그램 동작이 수행될 것이다. 또한 제 5 단계(⑤)에서는 제 2 워드라인(WL1)에 대한 파인 프로그램 동작이 수행된다.
이때, A 위치에서 코어스 프로그램 동작과 B 위치에서 코어스 프로그램 동작에서, 파인 프로그램 동작이 진행될 때까지의 예상 시간이 서로 다르다. A 위치에서는 코어스 프로그램 동작(0)이 수행되고, 7번의 코어스 프로그램 동작(1~7) 수행되는 시간이 경과한 후에 파인 프로그램 동작(8)이 수행된다.
하지만, B 위치에서는 코어스 프로그램 동작(15)이 수행되고, 4번의 코어스 프로그램 동작(20~23) 및 7번의 파인 프로그램 동작(16~19, 24~26)이 수행되는 시간이 경과한 후에 파인 프로그램 동작(27)이 수행된다.
이때, 파인 프로그램 동작이 수행되는 시간은 코어스 프로그램이 수행되는 시간보다 더 오래 걸리는 것을 고려하면, 산술적으로 A 위치보다 B 위치일 때의 코어스 프로그램 동작이 파인 프로그램 동작이 시작될 때까지 상대적으로 긴 예상 시간을 갖는다.
한편, 도 13에 도시된 어드레스 스크램블을 실시 예에 불과하다. 본 발명의 어드레스 스크램블을 다양한 방법으로 구현될 수 있다.
본 발명은 이러한 예상 시간을 근거로 하여 코어스 프로그램 동작의 종류를 결정할 수 있다. 예를 들어, 파인 프로그램 동작이 시작될 때까지의 예상 시간이 상대적으로 길다면, 그렇지 않은 것보다 상대적으로 문턱 전압 산포를 보다 정밀하게(혹은, 최종 산포에 가깝도록; 파인 프로그램 동작의 산포와 유사하게) 코어스 프로그램 동작이 수행될 수 있다.
한편, 도 1 내지 도 13에서 저장 장치(10)는 메모리 셀의 상태에 따라 재프로그래밍 여부를 결정하였다. 본 발명은 여기에 제한되지 않을 것이다. 본 발명의 저장 장치는 재프로그래밍을 진행하되, 셀 정보에 따라 코어스 프로그램 동작(Coarse PGM)의 종류를 결정할 수 있다.
도 14는 본 발명의 실시 예에 따른 저장 장치에 대한 제 2 실시 예를 보여주는 도면이다. 도 14를 참조하면, 저장 장치(20)는 적어도 하나의 비휘발성 메모리 장치(100a) 및 그것을 제어하는 메모리 제어기(200a)를 포함한다.
비휘발성 메모리 장치(100a)는 코어스 프로그램 동작 정보(CPINF)에 따라 서로 다른 방법으로 코어스 프로그램 동작을 수행할 수 있다. 여기서 코어스 프로그램 동작 정보(CPINF)는 코어스 프로그램 동작의 종류 정보를 포함할 수 있다.
메모리 제어기(200a)는 셀 상태 정보에 근거로 하여 코어스 프로그램 동작의 종류를 결정하고, 이에 따라 대응하는 코어스 프로그램 동작 정보(CPINF)를 비휘발성 메모리 장치(100a)로 전송할 수 있다. 실시 예에 있어서, 셀 정보는, 메모리 셀의 상태 정보일 수 있다. 실시 예에 있어서, 셀 정보는, 파인 프로그램 동작이 시작될 때까지의 예상 시간일 수 있다.
본 발명의 실시 예에 따른 저장 장치(20)는 셀 정보를 근거로 하여 코어스 프로그램 동작의 종류를 결정할 수 있다.
도 15는 도 14에 도시된 비휘발성 메모리 장치(100a)를 예시적으로 보여주는 블록도이다. 도 15를 참조하면, 비휘발성 메모리 장치(100a)는 도 2에 도시된 비휘발성 메모리 장치(100)와 비교하여 제어 로직(140a)을 제외하고 동일하게 구현될 수 있다. 제어 로직(140a)은 코어스 프로그램 동작 정보(CPINF)를 따라 제 1 종류의 제어 로직(141a) 및 제 2 종류의 제어 로직(142a) 중 어느 하나를 활성화시킬 수 있다. 설명의 편의를 위하여 도 14에서는 2 종류의 제어 로직에 대하여 한정하였지만, 본 발명의 코어스 프로그램 동작의 종류의 개수가 여기에 제한되지 않을 것이다.
한편, 도 1 내지 도 15에서는 재프로그래밍시 데이터를 비휘발성 메모리 장치(100, 100b)의 버퍼 영역(112)에 버퍼링을 수행하였다. 하지만 본 발명이 여기에 제한될 필요는 없다. 본 발명은 데이터를 버퍼링하기 위한 버퍼 메모리를 별도로 구비할 수 있다.
도 16은 본 발명의 실시 예에 따른 저장 장치에 대한 제 3 실시 예를 보여주는 도면이다. 도 16을 참조하면, 저장 장치(30)는 적어도 하나의 비휘발성 메모리 장치(100b), 메모리 제어기(200b) 및 버퍼 메모리(300)를 포함한다.
비휘발성 메모리 장치(100b)는 원-스텝 프로그램 동작 혹은 멀티-스텝 프로그램 동작에 따라 멀티-비트 데이터를 저장하는 메모리 영역(114)을 포함할 수 있다. 메모리 제어기(200b)는 셀 상태 정보를 근거로 하여 코어스 프로그램 동작의 수행 여부를 결정할 수 있다. 버퍼 메모리(300)는 코어스 프로그램 동작이 수행하고자 할 때 멀티-스텝 프로그램 동작에 수행될 데이터를 버퍼링 해둔다. 버퍼 메모리(300)는 디램, 에스램, 피램 등 랜덤 억세스 가능한 메모리로 구현될 수 있다.
본 발명의 실시 예에 따른 저장 장치(30)는 멀티-스텝 프로그램 동작에 사용될 데이터를 버퍼 메모리(300)에 버퍼링해 놓는다.
한편, 도 16에 도시된 버퍼 메모리(300)는 메모리 제어기(200b)의 외부에 배치되었다. 하지만, 본 발명이 여기에 제한될 필요는 없다. 버퍼 메모리는 메모리 제어기의 내부에 존재할 수 있다.
도 17은 본 발명의 실시 예에 따른 저장 장치에 대한 제 4 실시 예를 보여주는 도면이다. 도 17을 참조하면, 저장 장치(40)는 적어도 하나의 비휘발성 메모리 장치(100b) 및 메모리 제어기(200c)를 포함할 수 있다. 메모리 제어기(200c)는 멀티-스텝 프로그램 동작에 사용될 데이터를 버퍼링해 놓기 위한 버퍼 메모리(220)를 포함할 수 있다. 실시 예에 있어서, 버퍼 메모리(220)는 다양한 종류의 휘발성/비휘발성 메모리 장치들로 구현될 수 있다.
도 18은 본 발명의 실시 예에 따른 쓰기 방법에 대한 제 1 실시 예를 보여주는 흐름도이다. 도 18을 참조하면, 쓰기 방법은 다음과 같다.
외부의 호스트로부터 저장 장치(10, 도 1 참조)로 쓰기 요청, 데이터 및 어드레스가 입력될 것이다(S110). 메모리 제어기(200, 도 1 참조)는 어드레스에 대응하는 비휘발성 메모리 장치(100, 도 1 참조)의 메모리 블록에 대한 P/E 싸이클을 확인하고, 코어스 프로그램 동작을 수행할 지 여부를 판별할 것이다(S120). 예를 들어, P/E 싸이클이 사전에 결정된 값보다 낮으면 코어스 프로그램 동작이 수행될 것이다. 만일, 코어스 프로그램 동작이 결정된다면, 메모리 영역(114, 도 1 참조)에 멀티-스텝 프로그램 동작을 수행함으로써 데이터가 저장될 것이다(S130). 반면에, 코어스 프로그램 동작이 결정되지 않았다면, 메모리 영역(114)에 원-스텝 프로그램 동작을 수행함으로써 데이터가 저장될 것이다(S135).
본 발명의 실시 예에 따른 쓰기 방법은 P/E 싸이클을 근거로 하여 멀티-스텝 프로그램 동작으로 데이터를 저장할 지를 결정할 것이다.
도 19는 본 발명의 실시 예에 따른 쓰기 방법에 대한 제 2 실시 예를 보여주는 흐름도이다. 도 19를 참조하면, 쓰기 방법은 다음과 같다.
외부의 호스트로부터 저장 장치(20, 도 14 참조)로 쓰기 요청, 데이터 및 어드레스가 입력될 것이다(S210). 메모리 제어기(200a, 도 14 참조)는 어드레스에 대응하는 비휘발성 메모리 장치(100a, 도 14 참조)의 메모리 블록에 대한 P/E 싸이클을 확인하고, 코어스 프로그램 동작의 종류를 판별할 것이다(S220). 예를 들어, P/E 싸이클이 소정의 값 이상이면 파인 프로그램 동작의 최종 산포와 유사한/비슷한 문턱전압 산포를 갖는 코어스 프로그램 동작이 수행되도록 하는 코어스 프로그램 동작의 종류가 결정될 것이다(S220). 결정된 코어스 프로그램 동작의 종류에 따라 메모리 영역(114, 도 13 참조)에 멀티-스텝 프로그램 동작을 수행함으로써 데이터가 저장될 것이다(S230).
본 발명의 실시 예에 따른 쓰기 방법은 P/E 싸이클을 근거로 하여 코어스 프로그램 동작의 종류를 결정하고, 결정된 코어스 프로그램 동작의 종류에 따른 멀티-스텝 프로그램 동작을 수행할 것이다.
본 발명은 SSD(solid state drive)에 적용 가능하다.
도 20은 본 발명의 실시 예에 따른 SSD를 예시적으로 보여주는 블록도이다. 도 20을 참조하면, SSD(1000)는 복수의 비휘발성 메모리 장치들(1100) 및 SSD 제어기(1200)를 포함한다.
비휘발성 메모리 장치들(1100)은 옵션적으로 외부 고전압(Vpp)을 제공받도록 구현될 수 있다. 비휘발성 메모리 장치들(1100) 각각은 도 1 내지 도 19에서 설명된 바와 같이 셀 상태 정보 혹은 셀 정보를 근거로 하여 코어스 프로그램 동작을 수행하도록 구현될 수 있다.
SSD 제어기(1200)는 복수의 채널들(CH1~CH4)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. SSD 제어기(1200)는 적어도 하나의 프로세서(1210), 버퍼 메모리(1220), 에러 정정 회로(1230), 호스트 인터페이스(1250) 및 비휘발성 메모리 인터페이스(1260)를 포함한다.
버퍼 메모리(1220)는 메모리 제어기(1200)의 구동에 필요한 데이터를 임시로 저장할 것이다. 실시 예에 있어서, 버퍼 메모리(1220)는 동작 조건에 따른 에러율 테이블(ERT)을 저장할 수 있다. 버퍼 메모리(1220)는 데이터 혹은 명령을 저장하는 복수의 메모리 라인들을 포함할 수 있다. 여기서 복수의 메모리 라인들은 캐시 라인들(1212)에 다양한 방법으로 맵핑 될 수 있다.
또한, 버퍼 메모리(1220)는 쓰기 요청시 파인 프로그램 동작에 이용될 데이터를 버퍼링해 놓을 수 있다. 도 20에서 버퍼 메모리(1220)는 SSD 제어기(1200) 내부에 존재하지만, 반드시 여기에 제한되지 않을 것이다. 버퍼 메모리는 SSD 제어기(1200)의 외부에 별도로 존재할 수도 있다.
에러 정정 회로(1230)는 쓰기 동작에서 프로그램될 데이터의 에러 정정 코드 값을 계산하고, 읽기 동작에서 읽혀진 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정하고, 데이터 복구 동작에서 비휘발성 메모리 장치(1100)로부터 복구된 데이터의 에러를 정정할 수 있다. 도시되지 않았지만, 메모리 제어기(1200)를 구동하는 데 필요한 코드 데이터를 저장하는 코드 메모리가 더 포함될 수 있다. 코드 메모리는 비휘발성 메모리 장치로 구현될 수 있다.
호스트 인터페이스(1250)는 외부의 장치와 인터페이스 기능을 제공할 수 있다. 비휘발성 메모리 인터페이스(1260)는 비휘발성 메모리 장치(1100)와 인터페이스 기능을 제공할 수 있다.
본 발명의 실시 예에 따른 SSD(1000)는 쓰기 요청시 셀 상태 정보/셀 정보를 근거로 하여 코어스 프로그램 동작을 수행함으로써, 프로그램 속도 및 데이터 신뢰성을 향상시킬 수 있다.
본 발명은 eMMC(embedded multimedia card, moviNAND, iNAND)에도 적용 가능하다.
도 21은 본 발명의 실시 예에 따른 eMMC를 예시적으로 보여주는 블록도이다. 도 21을 참조하면, eMMC(2000)는 적어도 하나의 낸드 플래시 메모리 장치(2100) 및 제어기(2200)를 포함할 수 있다.
낸드 플래시 메모리 장치(2100)는 원-스텝/멀티-스텝 프로그램 동작들을 수행하도록 구현될 수 있다.
메모리 제어기(2200)는 복수의 채널들을 통하여 낸드 플래시 메모리 장치(2100)에 연결된다. 메모리 제어기(2200)는 적어도 하나의 제어기 코어(2210), 호스트 인터페이스(2250) 및 낸드 인터페이스(2260)를 포함한다. 적어도 하나의 제어기 코어(2210)는 eMMC(2000)의 전반적인 동작을 제어한다. 호스트 인터페이스(2250)는 제어기(2210)와 호스트의 인터페이싱을 수행한다. 낸드 인터페이스(2260)는 낸드 플래시 메모리 장치(2100)와 제어기(2200)의 인터페이싱을 수행한다. 실시 예에 있어서, 호스트 인터페이스(2250)는 병렬 인터페이스(예를 들어, MMC 인터페이스)일 수 있다. 다른 실시 예에 있어서, eMMC(2000)의 호스트 인터페이스(2250)는 직렬 인터페이스(예를 들어, UHS-II, UFS 인터페이스)일 수 있다.
또한, 메모리 제어기(2200)는 셀 상태 정보를 근거로 하여 코어스 프로그램 동작의 수행 여부를 결정하거나, 셀 정보를 근거로 하여 코어스 프로그램 동작의 종류를 결정할 수 있다.
eMMC(2000)는 호스트로부터 전원 전압들(Vcc, Vccq)을 제공받는다. 여기서, 제 1 전원 전압(Vcc, 예를 들어 3.3V)은 낸드 플래시 메모리 장치(2100) 및 낸드 인터페이스(2230)에 제공되고, 제 2 전원 전압(Vccq, 예를 들어 1.8V/3.3V)은 제어기(2200)에 제공된다. 실시 예에 있어서, eMMC(1000)는 외부 고전압(Vpp)을 옵션적으로 제공받을 수 있다.
본 발명의 실시 예에 따른 eMMC(2000)는 성능 향상을 위하여 셀 상태 정보 혹은 셀 정보를 근거로 하여 코어스 프로그램 동작의 수행 여부 및 종류를 결정할 수 있다.
본 발명은 UFS(uiversal flash storage)에도 적용 가능하다.
도 22는 본 발명의 실시 예에 따른 UFS 시스템을 예시적으로 보여주는 블록도이다. 도 22를 참조하면, UFS 시스템(3000)은 UFS 호스트(3100), UFS 장치들(3200, 3300), 임베디드 UFS 장치(3300), 착탈형 UFS 카드(3400)를 포함할 수 있다. UFS 호스트(3100)는 모바일 장치의 어플리케이션 프로세서일 수 있다. UFS 호스트(3100), UFS 장치들(3200, 3300), 임베디드 UFS 장치(3300), 및 착탈형 UFS 카드(3400) 각각은 UFS 프로토콜에 의하여 외부의 장치들과 통신할 수 있다. UFS 장치들(3200, 3300), 임베디드 UFS 장치(3300), 및 착탈형 UFS 카드(3400) 중 적어도 하나는 도 1에 도시된 저장 장치(10), 도 14에 도시된 저장 장치(20), 도 16에 도시된 저장 장치(30), 도 17에 도시된 저장 장치(40) 중 어느 하나로 구현될 수 있다.
한편, 임베디드 UFS 장치(3300)와 착탈형 UFS 카드(3400)는 UFS 프로토콜이 아닌 다른 프로토콜에 의해 통신할 수 있다. UFS 호스트(3100)와 착탈형 UFS 카드(3400)는 다양한 카드 프로토콜(예를 들어, UFDs, MMC,SD(secure digital), mini SD, Micro SD 등)에 의해 통신할 수 있다.
본 발명은 모바일 장치에도 적용 가능하다.
도 23은 본 발명의 실시 예에 따른 모바일 장치(4000)를 예시적으로 보여주는 블록도이다. 도 23을 참조하면, 모바일 장치(4000)는 어플리케이션 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 저장 장치(4400), 및 모바일 램(4500)를 포함한다.
어플리케이션 프로세서(4100)는 모바일 장치(4000)의 전반적인 동작을 제어한다. 통신 모듈(4200)은 외부와의 유선/무선 통신을 제어하도록 구현될 것이다. 디스플레이/터치 모듈(4300)은 어플리케이션 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 것이다. 저장 장치(4400)는 사용자의 데이터를 저장하도록 구현될 것이다. 저장 장치(4400)는 eMMC, SSD, UFS 장치일 수 있다. 저장 장치(4400)는 도 1 내지 도 19에서 설명된 바와 같이 셀 상태 정보/셀 정보를 근거로 하여 코어스 프로그램 동작의 수행 여부 혹은 코어스 프로그램 동작의 종류를 결정할 수 있다. 모바일 램(4500)은 모바일 장치(4000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다.
본 발명의 실시 예에 따른 모바일 장치(4000)는 최적의 프로그램 동작을 수행하는 저장 장치(4400)를 구비함으로써 시스템적인 성능 향상을 꾀할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 실시 예에 있어서, 본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10, 20, 30, 40: 저장 장치
100, 100a, 100b, 100c: 비휘발성 메모리 장치
112: 버퍼 영역
114: 메모리 영역
220, 300: 버퍼 메모리
141: 원-스텝 제어 로직
142: 멀티-스텝 제어 로직
CPINF: 코어스 프로그램 동작 정보
141a: 제 1 종류 제어 로직
142a: 제 2 종류 제어 로직

Claims (25)

  1. 메모리 장치의 메모리 셀들의 정보에 기초하여 코어스(coarse) 프로그램 동작의 수행 여부를 판별하는 단계;
    상기 코어스 프로그램 동작이 수행되는 것으로 판별함에 따라, 상기 코어스 프로그램 동작 및 파인(fine) 프로그램 동작을 수행하여 상기 메모리 장치에 데이터를 프로그램하는 단계; 및
    상기 코어스 프로그램 동작이 수행되지 않는 것으로 판별함에 따라, 상기 파인 프로그램 동작을 수행하여 상기 메모리 장치에 데이터를 프로그램하는 단계를 포함하되,
    상기 코어스 프로그램 동작에서 상위 프로그램 상태에 가까운 문턱전압 산포의 폭은 하위 프로그램 상태에 가까운 문턱전압 산포의 폭보다 좁은 저장 장치의 쓰기 방법.
  2. 제 1 항에 있어서,
    상기 정보는 P/E(program/erase) 싸이클, 웨어 레벨 정도, 또는 메모리 셀의 프로그램 진행 여부를 나타내는 정보를 포함하는 저장 장치의 쓰기 방법.
  3. 제 1 항에 있어서,
    상기 코어스 프로그램 동작의 프로그램 상태들의 개수는 P/E 싸이클에 기초하는 저장 장치의 쓰기 방법.
  4. 메모리 제어기에서, 쓰기 요청 및 어드레스를 수신하는 단계;
    상기 메모리 제어기에서, 상기 어드레스와 관련된 메모리 셀에서 수행되는 코어스(coarse) 프로그램 동작의 종류를 판별하는 단계; 및
    판별된 상기 코어스 프로그램 동작의 종류에 따라 프로그램 동작을 수행하도록 상기 메모리 제어기에서 메모리 장치로 명령을 출력하는 단계를 포함하되,
    상기 코어스 프로그램 동작의 상기 종류는 상기 코어스 프로그램 동작의 실행 이후의 파인(fine) 프로그램 동작이 시작될 때까지의 예상 시간에 기초하는 저장 장치의 쓰기 방법.
  5. 제 4 항에 있어서,
    상기 예상 시간이 상대적으로 짧으면 제 1 종류의 코어스 프로그램 동작의 문턱전압 산포들은 상대적으로 좁고 그리고 상기 예상 시간이 상대적으로 길면 제 2 종류의 코어스 프로그램 동작의 문턱 전압 산포들은 상대적으로 넓은 저장 장치의 쓰기 방법.
  6. 메모리 장치의 메모리 셀들의 정보에 기초하여 수행될 코어스(coarse) 프로그램 동작의 종류를 판별하는 단계; 및
    수행될 상기 코어스 프로그램 동작의 상기 종류를 판별함에 따라, 상기 판별된 종류의 코어스 프로그램 동작 및 파인(fine) 프로그램 동작을 수행하여 상기 메모리 장치에 데이터를 프로그램하는 단계를 포함하되,
    상기 코어스 프로그램 동작의 프로그램 펄스의 증가분을 줄이거나, 상기 코어스 프로그램 동작의 프로그램 펄스들간의 인가 시간은 다른 저장 장치의 쓰기 방법.
  7. 제 6 항에 있어서,
    상기 코어스 프로그램 동작의 프로그램 상태들은 복수의 그룹들로 나뉘고 그리고 상기 프로그램 상태들의 문턱전?? 산포들의 폭들에 따라 상기 프로그램 상태들이 분류되는 저장 장치의 쓰기 방법.
  8. 코어스(coarse) 프로그램 동작을 수행하여 워드 라인에 연결된 메모리 셀들에 데이터를 프로그램하는 단계; 및
    파인(fine) 프로그램 동작을 수행하여 상기 메모리 셀들에 상기 데이터를 프로그램하는 단계를 포함하되,
    상기 코어스 프로그램 동작의 프로그램 상태들의 개수는 P/E(program/erase) 싸이클에 따라 가변되고,
    상기 P/E 싸이클이 제 1 값 이하이면 상기 코어스 프로그램 동작에서 상기 프로그램 상태들의 제 1 부분에 대응하는 데이터가 프로그램되고,
    상기 P/E 싸이클이 상기 제 1 값과 제 2 값 이내이면 상기 코어스 프로그램 동작에서 상기 프로그램 상태들의 제 2 부분에 대응하는 데이터가 프로그램되고, 그리고
    상기 제 2 값은 상기 제 1 값보다 큰 비휘발성 메모리 장치의 프로그램 방법.
  9. 제 8 항에 있어서,
    상기 코어스 프로그램 동작의 상기 프로그램 상태들의 상기 개수는 상기 파인 프로그램 동작의 프로그램 상태들의 개수보다 작은 비휘발성 메모리 장치의 프로그램 방법.
  10. 제 8 항에 있어서,
    상기 P/E 싸이클이 소정의 값보다 작으면 상기 코어스 프로그램 동작은 수행되지 않는 비휘발성 메모리 장치의 프로그램 방법.
  11. 제 8 항에 있어서,
    상기 P/E 싸이클이 초기 값이면 상기 코어스 프로그램 동작이 수행되지 않고 곧바로 상기 파인 프로그램 동작이 수행되는 비휘발성 메모리 장치의 프로그램 방법.
  12. 제 8 항에 있어서,
    상기 프로그램 상태들의 상기 제 1 부분은 상기 프로그램 상태들의 최상위 프로그램 상태를 포함하는 비휘발성 메모리 장치의 프로그램 방법.
  13. 제 8 항에 있어서,
    상기 프로그램 상태들의 상기 제 2 부분은 상기 프로그램 상태들의 최상위 프로그램 상태 및 상기 최상위 프로그램 상태에 인접한 적어도 하나의 제 1 프로그램 상태를 포함하는 비휘발성 메모리 장치의 프로그램 방법.
  14. 제 8 항에 있어서,
    상기 P/E 싸이클이 상기 제 2 값 이상이면 상기 코어스 프로그램 동작에서 상기 프로그램 상태들의 제 3 부분에 대응하는 데이터가 프로그램되는 비휘발성 메모리 장치의 프로그램 방법.
  15. 제 14 항에 있어서,
    상기 프로그램 상태들의 상기 제 3 부분은 상기 프로그램 상태들의 최상위 프로그램 상태, 상기 최상위 프로그램 상태에 인접한 적어도 하나의 제 1 프로그램 상태, 및 상기 적어도 하나의 제 1 프로그램 상태에 인접한 적어도 하나의 제 2 프로그램 상태를 포함하는 비휘발성 메모리 장치의 프로그램 방법.
  16. 복수의 메모리 블록들을 포함하는 메모리 영역; 및
    선택된 워드 라인에 연결된 제 1 메모리 셀들에서 코어스(coarse) 프로그램 동작과 상기 제 1 메모리 셀들에서 파인(fine) 프로그램 동작을 수행하는 제어 로직을 포함하되,
    상기 복수의 메모리 블록들 각각은 복수의 스트링들을 포함하고,
    상기 복수의 스트링들 각각은 적어도 하나의 스트링 선택 트랜지스터, 기판에 대해 수직하게 적층된 워드 라인들에 연결된 메모리 셀들, 및 적어도 하나의 접지 선택 트랜지스터를 포함하고,
    P/E(program/erase) 싸이클이 제 1 값 이하이면 상기 코어스 프로그램 동작에서 프로그램 상태들의 제 1 부분에 대응하는 데이터가 프로그램되고,
    상기 P/E 싸이클이 상기 제 1 값과 제 2 값 이내이면 상기 코어스 프로그램 동작에서 상기 프로그램 상태들의 제 2 부분에 대응하는 데이터가 프로그램되고, 그리고
    상기 제 2 값은 상기 제 1 값보다 큰 비휘발성 메모리 장치.
  17. 제 16 항에 있어서,
    상기 프로그램 상태들의 상기 제 1 부분은 상기 프로그램 상태들의 최상위 프로그램 상태를 포함하는 비휘발성 메모리 장치.
  18. 제 16 항에 있어서,
    상기 프로그램 상태들의 상기 제 2 부분은 상기 프로그램 상태들의 최상위 프로그램 상태 및 상기 최상위 프로그램 상태에 인접한 적어도 하나의 제 1 프로그램 상태를 포함하는 비휘발성 메모리 장치.
  19. 제 16 항에 있어서,
    상기 P/E 싸이클이 상기 제 2 값 이상이면 상기 코어스 프로그램 동작에서 상기 프로그램 상태들의 제 3 부분에 대응하는 데이터가 프로그램되고, 그리고
    상기 프로그램 상태들의 상기 제 3 부분은 최상위 프로그램 상태, 제 1 프로그램 상태, 및 상기 제 1 프로그램 상태에 인접한 제 2 프로그램 상태를 포함하는 비휘발성 메모리 장치.
  20. 버퍼 영영 및 메모리 영역을 포함하는 적어도 하나의 비휘발성 메모리 장치; 및
    P/E(program/erase) 싸이클을 확인하고 그리고 상기 적어도 하나의 비휘발성 메모리 장치의 코어스(coarse) 프로그램 동작과 파인(fine) 프로그램 동작을 제어하는 제어기를 포함하되,
    상기 메모리 영역은 복수의 메모리 블록들을 포함하고,
    상기 복수의 메모리 블록들 각각은 복수의 스트링들을 포함하고,
    상기 복수의 스트링들 각각은 적어도 하나의 스트링 선택 트랜지스터, 기판에 대해 수직하게 적층된 워드 라인들에 연결된 메모리 셀들, 및 적어도 하나의 접지 선택 트랜지스터를 포함하고,
    상기 파인 프로그램 동작에 의해 형성된 문턱전압 산포의 폭은 상기 코어스 프로그램 동작에 의해 형성된 문턱전압 산포의 폭보다 좁고,
    상기 코어스 프로그램 동작의 프로그램 상태들의 개수는 상기 P/E 싸이클에 따라 가변되고,
    상기 P/E 싸이클이 제 1 값 이하이면 상기 코어스 프로그램 동작에서 상기 프로그램 상태들의 제 1 부분에 대응하는 데이터가 프로그램되고,
    상기 P/E 싸이클이 제 1 값과 제 2 값 이내이면 상기 코어스 프로그램 동작에서 상기 프로그램 상태들의 제 2 부분에 대응하는 데이터가 프로그램되고, 그리고
    상기 제 2 값은 상기 제 1 값보다 큰 비휘발성 메모리 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020130076613A 2013-07-01 2013-07-01 저장 장치 및 그것의 쓰기 방법 KR102125376B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020130076613A KR102125376B1 (ko) 2013-07-01 2013-07-01 저장 장치 및 그것의 쓰기 방법
US14/188,889 US9336866B2 (en) 2013-07-01 2014-02-25 Storage device and a write method thereof
CN201410309432.0A CN104282337B (zh) 2013-07-01 2014-07-01 存储设备及其写方法
US15/138,302 US9824761B2 (en) 2013-07-01 2016-04-26 Storage device and a write method including a coarse program operation and fine program operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130076613A KR102125376B1 (ko) 2013-07-01 2013-07-01 저장 장치 및 그것의 쓰기 방법

Publications (2)

Publication Number Publication Date
KR20150003969A KR20150003969A (ko) 2015-01-12
KR102125376B1 true KR102125376B1 (ko) 2020-06-23

Family

ID=52115459

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130076613A KR102125376B1 (ko) 2013-07-01 2013-07-01 저장 장치 및 그것의 쓰기 방법

Country Status (3)

Country Link
US (2) US9336866B2 (ko)
KR (1) KR102125376B1 (ko)
CN (1) CN104282337B (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102125376B1 (ko) 2013-07-01 2020-06-23 삼성전자주식회사 저장 장치 및 그것의 쓰기 방법
KR102133362B1 (ko) * 2013-08-14 2020-07-15 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 및 그것의 프로그램 방법
KR20170011644A (ko) 2015-07-23 2017-02-02 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
KR102313017B1 (ko) * 2015-08-21 2021-10-18 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 쓰기를 제어하는 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
KR20170026831A (ko) * 2015-08-28 2017-03-09 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 그것을 포함하는 데이터 저장 장치 그리고 데이터 저장 장치의 동작 방법.
US10109361B1 (en) * 2017-06-29 2018-10-23 Intel Corporation Coarse pass and fine pass multi-level NVM programming
US10748630B2 (en) * 2017-11-29 2020-08-18 Silicon Storage Technology, Inc. High precision and highly efficient tuning mechanisms and algorithms for analog neuromorphic memory in artificial neural networks
US10515700B2 (en) * 2018-02-27 2019-12-24 Toshiba Memory Corporation Semiconductor storage device and memory system
KR20190135746A (ko) * 2018-05-29 2019-12-09 삼성전자주식회사 쓰기 버퍼 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
JP7408312B2 (ja) * 2018-08-03 2024-01-05 キオクシア株式会社 半導体記憶装置、メモリシステム、及び書き込み方法
CN110838320A (zh) * 2018-08-17 2020-02-25 北京兆易创新科技股份有限公司 一种存储器的编程方法和系统
CN110838326B (zh) * 2018-08-17 2022-03-11 北京兆易创新科技股份有限公司 一种存储器的擦除方法和系统
CN110838329B (zh) * 2018-08-17 2022-04-01 北京兆易创新科技股份有限公司 一种存储器的擦除方法和系统
CN110838321A (zh) * 2018-08-17 2020-02-25 北京兆易创新科技股份有限公司 一种存储器的编程方法和系统
CN110838325A (zh) * 2018-08-17 2020-02-25 北京兆易创新科技股份有限公司 一种存储器的编程方法和系统
CN110838324A (zh) * 2018-08-17 2020-02-25 北京兆易创新科技股份有限公司 一种存储器的编程方法和系统
JP7102304B2 (ja) * 2018-09-14 2022-07-19 キオクシア株式会社 メモリシステム
EP3909049A4 (en) * 2019-05-17 2022-08-24 Yangtze Memory Technologies Co., Ltd. DATA BUFFERING OPERATION OF A THREE-DIMENSIONAL STORAGE DEVICE WITH STATIC RAM ACCESS MEMORY
EP3891745B1 (en) * 2019-10-12 2023-09-06 Yangtze Memory Technologies Co., Ltd. Method of programming memory device and related memory device
EP3948868B1 (en) * 2019-10-18 2024-06-05 Yangtze Memory Technologies Co., Ltd. Method of programming and verifying memory device and related memory device
KR20210066630A (ko) * 2019-11-28 2021-06-07 삼성전자주식회사 스토리지 장치, 및 상기 스토리지 장치의 동작 방법
US11244734B2 (en) 2019-12-27 2022-02-08 Sandisk Technologies Llc Modified verify scheme for programming a memory apparatus
US11205473B2 (en) * 2020-02-04 2021-12-21 Western Digital Technologies, Inc. Dual SLC/QLC programming and resource releasing
US11137944B1 (en) 2020-03-13 2021-10-05 Western Digital Technologies, Inc. Combined QLC programming method
US11809745B2 (en) 2021-05-13 2023-11-07 Western Digital Technologies, Inc. Multi-fetching data for multi-pass programming within storage devices
US12020747B2 (en) 2021-07-20 2024-06-25 Macronix International Co., Ltd. Non-volatile memory and programming method thereof
TWI791309B (zh) * 2021-07-20 2023-02-01 旺宏電子股份有限公司 非揮發記憶體及其編程方法
US20240062840A1 (en) * 2022-08-16 2024-02-22 Micron Technology, Inc. Read verification cadence and timing in memory devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643188B2 (en) 2001-12-27 2003-11-04 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device adapted to store a multi-valued data in a single memory cell
US20120314500A1 (en) 2011-06-08 2012-12-13 Youngsun Song Nonvolatile memory devices and methods of programming nonvolatile memory devices
US20130007343A1 (en) 2011-06-28 2013-01-03 Seagate Technology Llc Parameter Tracking for Memory Devices

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0169412B1 (ko) 1995-10-16 1999-02-01 김광호 불휘발성 반도체 메모리 장치
US5841819A (en) 1996-04-09 1998-11-24 Thomson Multimedia, S.A. Viterbi decoder for digital packet signals
US6145068A (en) 1997-09-16 2000-11-07 Phoenix Technologies Ltd. Data transfer to a non-volatile storage medium
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US7173859B2 (en) 2004-11-16 2007-02-06 Sandisk Corporation Faster programming of higher level states in multi-level cell flash memory
US7221592B2 (en) 2005-02-25 2007-05-22 Micron Technology, Inc. Multiple level programming in a non-volatile memory device
US7206235B1 (en) * 2005-10-14 2007-04-17 Sandisk Corporation Apparatus for controlled programming of non-volatile memory exhibiting bit line coupling
JP2007305210A (ja) 2006-05-10 2007-11-22 Toshiba Corp 半導体記憶装置
US7391651B2 (en) 2006-05-12 2008-06-24 Elite Semiconductor Memory Technology Inc. Method for programming NAND flash memory device and page buffer performing the same
US8127200B2 (en) 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
KR101263818B1 (ko) * 2007-06-19 2013-05-14 삼성전자주식회사 플래시 메모리 소자의 프로그램 방법
US7800956B2 (en) * 2008-06-27 2010-09-21 Sandisk Corporation Programming algorithm to reduce disturb with minimal extra time penalty
KR101676816B1 (ko) * 2010-02-11 2016-11-18 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
KR101620025B1 (ko) 2010-02-19 2016-05-24 삼성전자주식회사 데이터 저장 시스템 및 그것의 오픈 블록 관리 방법
US8355280B2 (en) * 2010-03-09 2013-01-15 Samsung Electronics Co., Ltd. Data storage system having multi-bit memory device and operating method thereof
KR101653262B1 (ko) * 2010-04-12 2016-09-02 삼성전자주식회사 멀티-비트 메모리의 프로그램 방법 및 그것을 이용한 데이터 저장 시스템
KR101798013B1 (ko) * 2010-12-30 2017-11-16 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
KR101903091B1 (ko) * 2011-10-05 2018-10-02 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
KR101855169B1 (ko) * 2011-10-13 2018-05-09 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치의 프로그램 방법, 불휘발성 메모리 장치를 포함하는 메모리 시스템
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
KR101893145B1 (ko) 2011-12-06 2018-10-05 삼성전자주식회사 메모리 시스템들 및 그것들의 블록 복사 방법들
US9053819B2 (en) * 2012-07-11 2015-06-09 Sandisk Technologies Inc. Programming method to tighten threshold voltage width with avoiding program disturb
KR102125376B1 (ko) 2013-07-01 2020-06-23 삼성전자주식회사 저장 장치 및 그것의 쓰기 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643188B2 (en) 2001-12-27 2003-11-04 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device adapted to store a multi-valued data in a single memory cell
US20120314500A1 (en) 2011-06-08 2012-12-13 Youngsun Song Nonvolatile memory devices and methods of programming nonvolatile memory devices
US20130007343A1 (en) 2011-06-28 2013-01-03 Seagate Technology Llc Parameter Tracking for Memory Devices

Also Published As

Publication number Publication date
CN104282337A (zh) 2015-01-14
US9336866B2 (en) 2016-05-10
US20150003152A1 (en) 2015-01-01
US20160240257A1 (en) 2016-08-18
US9824761B2 (en) 2017-11-21
CN104282337B (zh) 2019-11-05
KR20150003969A (ko) 2015-01-12

Similar Documents

Publication Publication Date Title
KR102125376B1 (ko) 저장 장치 및 그것의 쓰기 방법
US9779790B2 (en) Nonvolatile memory device and method of driving word line of the nonvolatile memory
KR102154620B1 (ko) 비휘발성 메모리 장치의 소거 방법 및 그것을 포함하는 저장 장치
US9837164B2 (en) Nonvolatile memory device, storage device having the same, and operation and read methods thereof
KR102222463B1 (ko) 저장 장치 및 그것의 타이머 설정 방법 및 구동 방법들
KR101975406B1 (ko) 비휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템 및 그것의 메모리 블록 관리, 소거, 및 프로그램 방법들
KR102210520B1 (ko) 비휘발성 메모리 장치 및 그것의 소거 방법
KR102053953B1 (ko) 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
KR102117919B1 (ko) 저장 장치 및 그것의 프로그램 방법
KR102179845B1 (ko) 비휘발성 메모리 장치 및 그것의 프로그램 방법
KR102175039B1 (ko) 불휘발성 메모리 장치의 데이터 기입 방법
KR102167609B1 (ko) 비휘발성 메모리 장치 및 그것의 프로그램 방법
KR102274280B1 (ko) 불휘발성 메모리 장치의 동작 방법
KR102248835B1 (ko) 불 휘발성 메모리 장치 및 그것의 동작 방법
KR20110131648A (ko) 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 메모리 카드 및 그것의 프로그램 방법
KR102096285B1 (ko) 메모리 시스템 및 그것의 프로그램 방법
KR20150091918A (ko) 저장 장치 및 그것의 동작 방법
KR102133362B1 (ko) 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 및 그것의 프로그램 방법
KR20130027153A (ko) 불휘발성 메모리 장치의 제어 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant