KR20160096969A - 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템 - Google Patents

내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20160096969A
KR20160096969A KR1020150018715A KR20150018715A KR20160096969A KR 20160096969 A KR20160096969 A KR 20160096969A KR 1020150018715 A KR1020150018715 A KR 1020150018715A KR 20150018715 A KR20150018715 A KR 20150018715A KR 20160096969 A KR20160096969 A KR 20160096969A
Authority
KR
South Korea
Prior art keywords
data
buffer
memory cells
volatile memory
controller
Prior art date
Application number
KR1020150018715A
Other languages
English (en)
Other versions
KR102292217B1 (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 KR1020150018715A priority Critical patent/KR102292217B1/ko
Priority to US14/997,888 priority patent/US9990149B2/en
Priority to CN201610083063.7A priority patent/CN105869677B/zh
Publication of KR20160096969A publication Critical patent/KR20160096969A/ko
Application granted granted Critical
Publication of KR102292217B1 publication Critical patent/KR102292217B1/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
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
    • 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/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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/26Sensing or reading circuits; Data output 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
    • 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/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)

Abstract

내부 읽기 검증을 수행할 수 있는 메모리 장치의 작동 방법은 데이터를 불휘발성 메모리 셀 어레이의 불휘발성 메모리 셀들에 프로그램하는 단계와, 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제1데이터와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터의 차이에 기초하여 차이 값을 생성하는 단계와, 상기 차이 값과 기준 값을 비교하는 단계와, 상기 차이 값이 상기 기준 값보다 작을 때 상기 데이터가 성공적으로 프로그램되었음을 지시하는 상태 신호를 생성하고, 상기 상태 신호를 컨트롤러로 전송하는 단계를 포함한다. 상기 데이터는 상기 컨트롤러와 상기 메모리 장치 중에서 어느 하나에 의해 랜더마이즈된 데이터일 수 있다.

Description

내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템{MEMORY DEVICE FOR PERFORMING INTERNALLY DATA READ VERIFY, METHOD THEREOF, AND MEMORY SYSTEM HAVING THE SAME}
본 발명의 개념에 따른 실시 예는 메모리 장치에 관한 것으로, 특히 내부적으로 데이터 읽기 검증을 수행하기 위해 두 개의 데이터를 비교할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템에 관한 것이다.
플래시-기반(flash-based) 메모리 장치는 전기적으로 이레이즈(erase)와 재프로그램(reprogram)될 수 있는 불휘발성 메모리 장치이다. 플래시-기반 메모리 장치는 종래의 EEPROM(electrically erasable programmable read-only memory)으로부터 발전했고, 특정 블록(block)에 새로운 데이터를 프로그램하기 이전에 상기 특정 블록에 대한 이레이즈 작동을 수행한다.
플래시-기반 메모리 장치는 메모리 카드, USB(universal serial bus) 플래시 드라이브, 또는 솔리드 스테이트 드라이브(solid-state drive(SSD)) 등에서 널리 사용된다.
플래시-기반 메모리 장치와 메모리 컨트롤러를 포함하는 메모리 시스템에서, 상기 메모리 컨트롤러는 메타데이터(metadata)와 같이 중요한(critical) 데이터를 상기 플래시-기반 메모리 장치에 프로그램한 후, 상기 메타데이터가 상기 플래시-기반 메모리 장치에 성공적으로 프로그램되었는지를 검증하기 위해 상기 플래시-기반 메모리 장치로부터 상기 메타데이터를 리드하고 상기 메타데이터를 검증한다. 이를 메모리 컨트롤러에 의한 읽기 검증(read verify) 또는 데이터 읽기 검증이라 한다.
메타데이터에 대한 검증이 메모리 컨트롤러 내부에서 수행됨에 따라, 플래시-기반 메모리 장치는 메모리 셀 어레이에 프로그램된 상기 메타데이터를 상기 메모리 셀 어레이로부터 리드하고, 리드된 메타데이터 그 자체를 상기 메모리 컨트롤러로 전송해야 한다. 즉, 메모리 컨트롤러 내부에서 메타데이터에 대한 읽기 검증이 수행되므로, 상기 메모리 컨트롤러를 포함하는 메모리 시스템의 성능은 저하된다.
또한, 메모리 시스템을 사용하는 호스트 시스템의 성능이 증가함에 따라, 메타데이터에 대한 읽기 검증에 의해 발생하는 상기 메모리 시스템의 성능 저하를 피하기 위해, 메모리 컨트롤러는, 메타데이터가 메모리 셀 어레이에 프로그램되었다는 상태에 응답하여, 상기 읽기 검증을 스킵(skip)할 수 있다. 메모리 셀 어레이에 프로그램된 메타데이터가 훼손된 경우, 메모리 컨트롤러는 훼손된 시점에서 상기 메타데이터의 훼손 여부를 확인할 수 없다. 따라서, 메타데이터의 훼손된 경우, 메모리 시스템 또는 상기 메모리 시스템을 사용하는 호스트 시스템은 정상적으로 작동하지 않을 수 있다.
본 발명이 이루고자 하는 기술적인 과제는, 읽기 검증 대상 데이터 그 자체를 컨트롤러로 전송하지 않고 성능을 개선할 수 있고, 읽기 검증을 스킵하는 경우에 비해 성능에 대한 손실 없이 데이터가 훼손되는 것을 예방할 수 있고 내부적으로 상기 읽기 검증 대상 데이터에 대한 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 장치의 작동 방법은 데이터를 불휘발성 메모리 셀 어레이의 불휘발성 메모리 셀들에 프로그램하는 단계와, 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제1데이터와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터의 차이에 기초하여 차이 값을 생성하는 단계와, 상기 차이 값과 기준 값을 비교하는 단계와, 상기 차이 값이 상기 기준 값보다 작을 때 상기 데이터가 성공적으로 프로그램되었음을 지시하는 상태 신호를 생성하고, 상기 상태 신호를 컨트롤러로 전송하는 단계를 포함한다.
상기 데이터는 상기 컨트롤러와 상기 메모리 장치 중에서 어느 하나에 의해 랜더마이즈된 데이터일 수 있다.
상기 차이 값을 생성하는 단계는 상기 불휘발성 메모리 셀들로부터 상기 데이터를 리드하는 단계와, 리드된 데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 온-셀들의 개수에 상응하는 상기 제1데이터를 생성하고, 상기 리드된 데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 오프-셀들의 개수에 상응하는 상기 제2데이터를 생성하는 단계와, 상기 온-셀들의 개수에 상응하는 상기 제1데이터와 상기 오프-셀들의 개수에 상응하는 상기 제2데이터를 이용하여 상기 차이 값을 계산하는 단계를 포함한다.
실시 예에 따라, 상기 프로그램하는 단계는 제1버퍼를 이용하여 상기 데이터를 상기 불휘발성 메모리 셀들에 프로그램하고, 상기 제1데이터는 상기 제1버퍼에 저장된 상기 데이터가 제2버퍼로 복사된 데이터이고, 상기 제2데이터는 상기 불휘발성 메모리 셀들로부터 리드되고 상기 제1버퍼에 저장된 데이터이고, 상기 차이 값은 상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제1버퍼에 저장된 상기 제2데이터의 값들 사이의 비트-단위 차이들의 개수를 나타낸다.
다른 실시 예에 따라, 상기 프로그램하는 단계는 제1버퍼를 이용하여 상기 데이터를 상기 불휘발성 메모리 셀들에 프로그램하고, 상기 제1데이터는 상기 제1버퍼에 저장된 데이터이고, 상기 제2데이터는 상기 불휘발성 메모리 셀들로부터 리드되고 상기 제2버퍼에 저장된 데이터이고, 상기 차이 값은 상기 제1버퍼에 저장된 상기 제1데이터의 값들과 상기 제2버퍼에 저장된 상기 제2데이터의 값들 사이의 비트-단위 차이들의 개수를 나타낸다.
또 다른 실시 예에 따라, 상기 프로그램하는 단계는 제1버퍼를 이용하여 상기 데이터를 상기 불휘발성 메모리 셀들에 프로그램하고, 상기 제1데이터는 상기 제1버퍼에 저장된 상기 데이터가 제2버퍼로 복사된 데이터이고, 상기 제2데이터는 상기 불휘발성 메모리 셀들로부터 리드되고 제3버퍼에 저장된 데이터이고, 상기 차이 값은 상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제3버퍼에 저장된 상기 제2데이터의 값들 사이의 비트-단위 차이들의 개수를 나타낸다.
또 다른 실시 예에 따라, 상기 프로그램하는 단계는 제2버퍼를 이용하여 상기 데이터를 상기 불휘발성 메모리 셀들에 프로그램하고, 상기 제1데이터는 제1버퍼로부터 상기 제2버퍼로 복사된 데이터이고, 상기 제2데이터는 상기 불휘발성 메모리 셀들로부터 리드되고 제3버퍼에 저장된 데이터이고, 상기 차이 값은 상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제3버퍼에 저장된 상기 제2데이터의 값들 사이의 비트-단위 차이들의 개수를 나타낸다.
상기 기준 값은 상기 컨트롤러에 의해 상기 메모리 장치에 프로그램될 수 있다.
상기 기준 값은 상기 불휘발성 메모리 셀들에 대한 프로그램/이레이즈 싸이클들과 리드 카운트 중에서 적어도 하나에 따라 결정될 수 있다.
상기 데이터는 상기 메모리 장치의 작동과 관련된 메타데이터이고, 상기 불휘발성 메모리 셀들 각각이 2-비트 이상의 정보를 저장하는 멀티-레벨 셀일때, 상기 메타데이터는 싱글-레벨 셀 프로그램 방법으로 상기 불휘발성 메모리 셀들에 저장될 수 있다.
상기 불휘발성 메모리 셀들은 3차원 메모리 셀 어레이에 포함되고, 상기 상기 불휘발성 메모리 셀들 각각은 전하 트랩 레이어를 포함한다.
본 발명의 실시 예에 따른 메모리 장치는 컨트롤러로부터 출력된 데이터가 프로그램되는 불휘발성 메모리 셀들을 포함하는 불휘발성 메모리 셀 어레이와, 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제1데이터와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터의 차이에 기초하여 차이 값을 생성하는 차이 값 생성 회로와, 기준 값을 저장하는 레지스터와, 상기 차이 값과 상기 레지스터에 저장된 상기 기준 값을 비교하고, 상기 차이 값이 상기 기준 값보다 작을 때 상기 데이터가 성공적으로 프로그램되었음을 지시하는 상태 신호를 생성하는 비교기를 포함한다.
실시 예에 따라, 상기 차이 값 생성 회로는 상기 불휘발성 메모리 셀들로부터 리드된 상기 데이터를 저장하는 페이지 버퍼와, 상기 페이지 버퍼에 저장된 상기 데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 온-셀들의 개수에 상응하는 상기 제1데이터를 생성하는 온-셀 카운터와, 상기 페이지 버퍼에 저장된 상기 데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 오프-셀들의 개수에 상응하는 상기 제2데이터를 생성하는 오프-셀 카운터와, 상기 온-셀들의 개수에 상응하는 상기 제1데이터와 상기 오프-셀들의 개수에 상응하는 상기 제2데이터를 이용하여 상기 차이 값을 계산하는 감산기를 포함한다.
다른 실시 예에 따라, 상기 차이 값 생성 회로는 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 상기 제1데이터를 저장하는 제1버퍼와, 상기 제1버퍼로부터 복사된 상기 제1데이터를 저장하는 제2버퍼와, 상기 제2버퍼로부터 출력된 상기 제1데이터의 값들과, 상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 상기 제1버퍼로부터 출력된 상기 제2데이터의 값들 사이의 차이들의 개수를 계산하고, 상기 차이 값을 생성하는 데이터 비교기를 포함한다.
또 다른 실시 예에 따라, 상기 차이 값 생성 회로는 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 상기 제1데이터를 저장하는 제1버퍼와, 상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 제2버퍼와, 상기 제1버퍼에 저장된 상기 제1데이터의 값들과 상기 제2버퍼에 저장된 상기 제2데이터의 값들 사이의 차이들의 개수를 계산하고, 상기 차이 값을 생성하는 데이터 비교기를 포함한다.
또 다른 실시 예에 따라, 상기 차이 값 생성 회로는 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 상기 제1데이터를 저장하는 제1버퍼와, 상기 제1버퍼로부터 복사된 상기 제1데이터를 저장하는 제2버퍼와, 상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 제3버퍼와, 상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제3버퍼에 저장된 상기 제2데이터의 값들과의 차이들의 개수를 계산하고, 상기 차이 값을 생성하는 데이터 비교기를 포함한다.
또 다른 실시 예에 따라, 상기 차이 값 생성 회로는 상기 제1데이터를 수신하는 제1버퍼와, 상기 제1버퍼로부터 복사되고 상기 불휘발성 메모리 셀들에 프로그램될 상기 제1데이터를 저장하는 제2버퍼와, 상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 제3버퍼와, 상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제3버퍼에 저장된 상기 제2데이터의 값들과의 차이들의 개수를 계산하고, 상기 차이 값을 생성하는 데이터 비교기를 포함한다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 컨트롤러와, 상기 컨트롤러에 접속된 메모리 장치를 포함한다. 상기 메모리 장치는 상기 컨트롤러로부터 출력된 데이터가 프로그램되는 불휘발성 메모리 셀들을 포함하는 불휘발성 메모리 셀 어레이와, 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제1데이터와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터의 차이에 기초하여 차이 값을 생성하는 차이 값 생성 회로와, 기준 값을 저장하는 레지스터와, 상기 차이 값과 상기 레지스터에 저장된 상기 기준 값을 비교하고, 상기 차이 값이 상기 기준 값보다 작을 때 상기 데이터가 성공적으로 프로그램되었음을 지시하는 상태 신호를 생성하는 비교 회로를 포함한다.
상기 차이 값 생성 회로는 상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 페이지 버퍼와, 상기 페이지 버퍼에 저장된 상기 제2데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 온-셀들의 개수에 상응하는 상기 제1데이터를 생성하는 온-셀 카운터와, 상기 페이지 버퍼에 저장된 상기 제2데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 오프-셀들의 개수에 상응하는 상기 제2데이터를 생성하는 오프-셀 카운터와, 상기 온-셀들의 개수에 상응하는 상기 제1데이터와 상기 오프-셀들의 개수에 상응하는 상기 제2데이터로부터 상기 차이 값을 계산하는 감산기를 포함한다.
상기 컨트롤러는 입력 데이터를 랜더마이즈하고, 랜더마이즈된 데이터를 상기 데이터로서 생성하는 랜더마이저를 포함한다.
상기 컨트롤러는 상기 불휘발성 메모리 셀들에 대한 프로그램/이레이즈 싸이클들과 리드 카운트 중에서 적어도 하나에 기초하여 상기 기준 값을 결정하고 상기 기준 값을 상기 레지스터에 프로그램한다.
상기 컨트롤러는 상기 데이터가 상기 메모리 장치의 작동과 관련된 메타데이터임을 지시하는 지시 신호를 상기 메모리 장치로 전송하고, 상기 불휘발성 메모리 셀들 각각은 2-비트 이상의 정보를 저장하는 멀티-레벨 셀이고, 상기 메모리 장치는 상기 메타데이터를 싱글-레벨 셀 프로그램 방법으로 상기 불휘발성 메모리 셀들에 프로그램한다.
본 발명의 실시 예에 따른 메모리 장치는 내부 읽기 검증 대상 데이터에 대한 내부 읽기 검증을 상기 메모리 장치의 내부에서 자체적으로 수행할 수 있는 효과가 있다.
상기 메모리 장치는, 상기 내부 읽기 검증 대상 데이터가 성공적으로 프로그램되었을 때, 상기 읽기 검증 대상 데이터 그 자체를 컨트롤러로 전송하지 않아도 되므로, 상기 내부 읽기 검증을 수행할 수 있는 상기 메모리 장치를 포함하는 메모리 시스템의 성능은 개선되는 효과가 있다.
상기 내부 읽기 검증을 수행할 수 있는 상기 메모리 장치는 읽기 검증을 스킵(skip)하는 경우에 비해 상기 메모리 시스템의 성능 손실 없이 데이터가 훼손되는 것을 예방할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1a는 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도이다.
도 1b는 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도이다.
도 2는 도 1a 또는 도 1b에 도시된 메모리 장치의 일 실시 예를 나타내는 블록도이다.
도 3은 도 2에 도시된 메모리 셀 어레이의 온-셀들의 문턱 전압 분포와 오프-셀들의 문턱 전압 분포를 나타낸다.
도 4는 도 2에 도시된 메모리 장치의 작동을 설명하는 플로우차트이다.
도 5는 종래의 읽기 검증 방법의 타이밍 도와 도 2에 도시된 메모리 장치에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 6은 도 1a 또는 도 1b에 도시된 메모리 장치의 다른 실시 예를 나타내는 블록도이다.
도 7은 도 6에 도시된 메모리 장치의 작동의 일 실시 예를 설명하는 플로우차트이다.
도 8은 도 6에 도시된 메모리 장치의 작동의 일 실시 예를 설명하는 개념도이다.
도 9는 종래의 읽기 검증 방법의 타이밍 도와 도 6에 도시된 메모리 장치에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 10은 도 6에 도시된 메모리 장치의 작동의 다른 실시 예를 설명하는 플로우차트이다.
도 11은 도 6에 도시된 메모리 장치의 작동의 다른 실시 예를 설명하는 개념도이다.
도 12는 종래의 읽기 검증 방법의 타이밍 도와 도 6에 도시된 메모리 장치에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 13은 도 1a 또는 도 1b에 도시된 메모리 장치의 또 다른 실시 예를 나타내는 블록도이다.
도 14는 도 13에 도시된 메모리 장치의 작동의 일 실시 예를 설명하는 플로우차트이다.
도 15는 도 13에 도시된 메모리 장치의 작동의 일 실시 예를 설명하는 개념도이다.
도 16은 도 13에 도시된 메모리 장치에서 수행되는 내부 읽기 검증 방법의 타이밍 도들을 나타낸다.
도 17은 도 13에 도시된 메모리 장치의 작동의 다른 실시 예를 설명하는 개념도이다.
도 18은 도 13에 도시된 메모리 장치의 작동의 다른 실시 예를 설명하는 개념도이다.
도 19는 본 발명의 실시 예들에 따라 기준 값을 설정하는 방법들을 설명하는 플로우차트이다.
도 20은 본 발명의 실시 예들에 따라 프로그램/이레이즈 사이클들을 이용하여 기준 값들을 설정하는 방법을 설명하는 플로우차트이다.
도 21은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도이다.
도 22는 랜더마이즈된 데이터를 생성할 수 있는 도 1a, 도 1b 또는 도 21에 도시된 메모리 컨트롤러의 블록도이다.
도 23은 도 1a 또는 도 1b에 도시된 메모리 장치의 또 다른 실시 예를 나타내는 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1a는 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도이다. 도 1a를 참조하면, 데이터 처리 시스템(100A)은 인터페이스(110)를 통해 서로 접속된 호스트(130)와 데이터 저장 장치(200A)를 포함할 수 있다.
본 명세에서 설명될 데이터 처리 시스템(100A 또는 100B)은 서버 컴퓨터, PC (personal computer), 데스크 탑 컴퓨터, 랩탑(laptop) 컴퓨터, 워크스테이션 (workstation) 컴퓨터, NAS(network-attached storage(NAS)), 데이터 센터(data center), 인터넷 데이터 센터(internet data center(IDC)) 또는 모바일 컴퓨팅 장치로 구현될 수 있다.
모바일 컴퓨팅 장치는 이동 전화기, 스마트 폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있으나 이에 한정되는 것은 아니다.
인터페이스(110)는 SATA(Serial Advanced Technology Attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)), PCIe(peripheral component interconnect express) 인터페이스, NVMe(Non-Volatile Memory Express) 인터페이스, 또는 AHCI(Advanced Host Controller Interface)로 구현될 수 있으나 이에 한정되는 것은 아니다.
호스트(130)는 데이터 저장 장치(200A)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)을 제어할 수 있다.
호스트(130)는 버스 구조(131), CPU(central processing unit; 133), 및 제1인터페이스(135)를 포함할 수 있다. 도 1a 또는 도 1b에 도시된 호스트(130)의 블록도는 데이터 저장 장치(200A 또는 200B)의 작동들에 관련된 구성 요소들(131, 133, 및 135)을 예시적으로 도시한 것으로서, 본 발명의 기술적 사상이 도 1a 또는 도 1b에 도시된 블록도에 한정되는 것은 아니다. 따라서, 호스트(130)는 디스플레이(미도시)의 작동을 제어할 수 있는 디스플레이 컨트롤러(미도시)를 더 포함할 수 있다.
실시 예들에 따라, 호스트(130)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서 (application processor(AP)) 또는 모바일(mobile) AP로 구현될 수 있다. 또한, 호스트(130)는 데이터 저장 장치(200A 또는 200B)의 작동을 제어할 수 있는 모든 종류의 장치들을 포함할 수 있다.
버스 구조(131)를 통해, CPU(133)는 제1인터페이스(135)와 명령(command) 및/또는 데이터를 주거나 받을 수 있다. 실시 예들에 따라, 버스 구조(131)는 AMBA (Advanced Microcontroller Bus Architecture), AHB(Advanced High-performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), ASB (Advanced System Bus) 또는 이들의 조합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(133)는 데이터 저장 장치(200A 또는 200B)의 라이트 작동(write operation)을 제어할 수 있는 라이트 요청(write request) 또는 데이터 저장 장치 (200A 또는 200B)의 리드 작동(read operation)을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스를 포함할 수 있고, 상기 리드 요청은 리드 어드레스를 포함할 수 있다. 예컨대, CPU(133)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
제1인터페이스(135)는 데이터 저장 장치(200A 또는 200B)로 전송될 명령 및/또는 데이터의 포맷(format)을 변경하고, 변경된 포맷을 갖는 명령 및/또는 변경된 포맷을 갖는 데이터를 인터페이스(110)를 통해 데이터 저장 장치(200A 또는 200B)로 전송할 수 있다.
또한, 제1인터페이스(135)는 데이터 저장 장치(200A 또는 200B)로부터 전송된 응답(response) 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 변경된 포맷을 갖는 데이터를 버스 구조(131)로 전송할 수 있다. 실시 예들에 따라, 제1인터페이스(135)는 명령 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 제1인터페이스(135)는 인터페이스(110)의 프로토콜을 지원할 수 있는 구조로 구현될 수 있다.
데이터 저장 장치(200A)는 컨트롤러(210A), 버퍼(270), 및 메모리 장치들 (300)을 포함할 수 있다. 예컨대, 데이터 저장 장치(200A)는 메모리 시스템을 의미할 수 있다.
데이터 저장 장치(200A)는 플래시-기반 메모리 장치로 구현될 수 있다. 예컨대, 데이터 저장 장치(200A)는 SSD(solid-state drive or solid-state disk), 임베디드 SSD(embedded SSD(eSSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드(multimedia card(MMC)), 또는 임베디드 MMC (embedded MMC(eMMC))로 구현될 수 있으나 이에 한정되는 것은 아니다.
데이터 저장 장치(200A)는 인터페이스(110)를 통해 호스트(130)에 접속되거나 호스트(130)로부터 분리될 수 있다. 예컨대, 데이터 저장 장치(200A)는 SD (Secure Digital) 카드 또는 USB(Universal Serial Bus) 플래시 드라이브(flash drive)를 의미할 수 있다.
컨트롤러(210A)는 호스트(130), 버퍼(270), 및 메모리 장치들(300) 사이에서 주고받는 명령(또는 응답) 및/또는 데이터의 전송을 제어할 수 있다. 예컨대, 컨트롤러(210A)는 메모리 장치들(300) 중에서 적어도 하나에 저장된 펌웨어(firmware)를 읽고 실행하여 데이터 저장 장치(200A)의 작동들을 전반적으로 제어할 수 있다.
예컨대, 펌웨어는 호스트 인터페이스 레이어(host interface layer), 어드레스 변환 레이어(address translation layer(FTL)), 가상 플래시 레이어(virtual flash layer), 및 플래시 인터페이스 레이어(flash interface layer)를 포함할 수 있으나 이에 한정되는 것은 아니다.
컨트롤러(210A)는 집적 회로(IC) 또는 시스템 온 칩(SoC)으로 구현될 수 있다. 실시 예에 따라, 컨트롤러(210A)는 버스 구조(211), 제2인터페이스(220), CPU (230), 내부 메모리(240), 버퍼 매니저(250), 및 하나 또는 그 이상의 메모리 컨트롤러들(260 및/또는 262)을 포함할 수 있다.
다른 실시 예에 따라, 컨트롤러(210A)는 ECC(error correction[or correcting] code or error checking and correcting) 컨트롤러(235)를 더 포함할 수 있다. ECC 컨트롤러(235)는 메모리 장치들(300) 중에서 적어도 하나와 주고받는 데이터에 대해 에러가 생겼는지를 검사하고, 검사 결과에 따라 상기 에러를 정정할 수 있다.
버스 구조(211)는 AMBA, AHB, APB, AXI, ASB 또는 이들의 조합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
제2인터페이스(220)는 호스트(130)로 전송될 신호(또는 데이터)의 포맷을 변경하고, 변경된 포맷을 갖는 신호(또는 변경된 포맷을 갖는 데이터)를 인터페이스 (110)를 통해 호스트(130)로 전송할 수 있다.
또한, 제2인터페이스(220)는 호스트(130)로부터 전송된 신호(또는 데이터)의 포맷을 변경하고, 변경된 포맷을 갖는 신호(또는 변경된 포맷을 갖는 데이터)를 버스 구조(211) 또는 버퍼 매니저(250)로 전송할 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 제2인터페이스(220)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 제2인터페이스(220)는 인터페이스(110)의 프로토콜을 지원할 수 있는 구조로 구현될 수 있다.
CPU(230)는, 버스 구조(211)를 통해, 제2인터페이스(220), 내부 메모리 (240), 버퍼 매니저(250), 및/또는 하나 또는 그 이상의 메모리 컨트롤러들(260 및/또는 262)을 제어할 수 있다. 실시 예에 따라, CPU(230)는, 버스 구조(211)를 통해, ECC 컨트롤러(235)를 제어할 수 있다. 실시 예들에 따라, CPU(230)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
도 1b는 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도이다.
도 1a와 도 1b를 참조하면, 도 1b의 컨트롤러(210B)가 두 개의 CPU들(230-1과 230-2)을 포함하는 것을 제외하면, 도 1b의 컨트롤러(210B)의 구조와 작동은 도 1a의 컨트롤러(210A)의 구조와 작동과 실질적으로 동일 또는 유사할 수 있다. 따라서, 도 1b의 데이터 저장 장치(200B)를 포함하는 데이터 처리 시스템(100B)의 구조와 작동은 도 1a의 데이터 저장 장치(200A)를 포함하는 데이터 처리 시스템(100A)의 구조와 작동은 실질적으로 동일 또는 유사할 수 있다.
도 1b를 참조하면, 제1CPU(230-1)는 호스트(130)와 상호 작동을 제어할 수 있고, 제2CPU(230-2)는 메모리 장치들(300)과의 상호 작동을 제어할 수 있다. 이때, 제1CPU(230-1)는 제2인터페이스(220)의 작동을 제어할 수 있고, 제2CPU(230-2)는 하나 또는 그 이상의 메모리 컨트롤러들(260 및/또는 262)의 작동을 제어할 수 있다.
실시 예에 따라, 메모리 컨트롤러(260과 262) 중에서 적어도 하나는 메모리 장치들(300)의 작동을 제어할 수 있는 적어도 하나의 코어(core)를 포함할 수 있다. 여기서, 상호 작동은 명령 및/또는 데이터를 주고받는 작동을 의미할 수 있다. 본 명세서에서는 설명의 편의를 위해, CPU(230), 제1CPU(230-1), 및 제2CPU(230-2)를 집합적(collectively)으로 CPU(230)로 칭한다.
도 1a와 도 1b를 참조하면, CPU(230)는, 호스트(130)로부터 출력된 요청(예컨대, 라이트 요청 또는 리드 요청)에 응답하여, 하나 또는 그 이상의 메모리 컨트롤러들(260 및/또는 262)의 작동을 제어할 수 있다.
내부 메모리(240)는 CPU(230)의 작동 메모리의 기능을 수행할 수 있다. 내부 메모리(240)는 휘발성 메모리 및/또는 불휘발성 메모리를 포함할 수 있다.
내부 메모리(240)가 불휘발성 메모리로 구현될 때, 상기 불휘발성 메모리는 ROM(read only memory)일 수 있으나 이에 한정되는 것은 아니다.
내부 메모리(240)가 휘발성 메모리로 구현될 때, 상기 휘발성 메모리는 SRAM (static random access memory), 버퍼(buffer), 버퍼 메모리, 또는 캐시(cache)로 구현될 수 있으나 이에 한정되는 것은 아니다.
다른 실시 예들에 따라, 내부 메모리(240)는 CPU(230)에 의해 액세스될 수 있는 강하게 결합된 메모리(tightly coupled memory(TCM))으로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼 매니저(250)는 제2버스 구조(211), 제2인터페이스(220), 하나 또는 그 이상의 메모리 컨트롤러들(260 및/또는 262), 및 버퍼(270) 사이에서 주고받는 명령 및/또는 데이터의 전송을 제어할 수 있다.
하나 또는 그 이상의 메모리 컨트롤러들(260 및/또는 262)은, 하나 또는 그 이상의 채널들(CH1 및/또는 CH2)을 통해, 하나 또는 그 이상의 웨이들(WAY1 및/또는 WAY2)과 명령 및/또는 데이터를 주거나 받을 수 있다.
여기서, 채널(channel)은 메모리 장치(300; 예컨대, 플래시 메모리 장치)와 메모리 컨트롤러(260 또는 262) 사이에 배치된 독립적인 데이터 경로(independent data path)를 의미할 수 있다. 웨이(way)는 동일한 채널을 공유하는 메모리 장치 (300)의 그룹을 의미할 수 있다. 독립적인 데이터 경로는 명령, 응답, 및/또는 데이터를 전송할 수 있는 복수의 전송 라인들을 포함할 수 있으나 이에 한정되는 것은 아니다.
데이터 저장 장치(200A)는 멀티-채널들(CH1과 CH2)과 멀티-웨이들(WAY1과 WAY2)를 통해 순차적인 리드 또는 순차적인 라이트 성능을 향상시킬 수 있다.
제1메모리 컨트롤러(260)는 제1채널(CH1)을 통해 제1웨이(WAY1)에 포함된 복수의 메모리 장치들(300)과 명령 및/또는 데이터를 주고받을 수 있다. 또한, 제2메모리 컨트롤러(262)는 제2채널(CH2)을 통해 제2웨이(WAY2)에 포함된 복수의 메모리 장치들(300)과 명령 및/또는 데이터를 주고받을 수 있다.
하나 또는 그 이상의 메모리 컨트롤러들(260 및/또는 262)은 메모리 장치 (300)의 메모리 셀 어레이에 프로그램될 데이터가 메타데이터(metadata)임을 지시하는 지시 신호(또는 지시 신호를 포함하는 명령)를 메모리 장치(300)로 전송할 수 있다.
따라서, 메모리 장치(300)는, 상기 지시 신호에 응답하여, 상기 메타데이터를 메모리 셀 어레이에 싱글 레벨 셀(single level cell) 프로그램 방법에 따라 프로그램할 수 있다. 또한, 메모리 장치(300)는, 상기 지시 신호에 응답하여, 상기 메타데이터에 대한 내부 읽기 검증을 수행할 수 있다. 상기 메타데이터에 대한 내부 읽기 검증은 도 2부터 도 18을 참조하여 상세히 설명될 것이다.
본 발명의 개념에 따른 실시 예들에 따른 메타데이터에 대한 "내부 읽기 검증(internal read verity)"은 상기 메타데이터가 메모리 셀 어레이에 제대로 프로그램되었는지를 컨트롤러(210A 또는 210B), 예컨대 CPU(230) 대신에 메모리 장치 (300) 내부에서 검증하는 방법을 의미할 수 있다.
실시 예들에 따라, 버퍼 매니저(250)와 제1메모리 컨트롤러(260) 사이에는 제1직접 메모리 접근(direct memory access(DMA)) 컨트롤러(미도시)가 배치될 수 있고, 버퍼 매니저(250)와 제2메모리 컨트롤러(262) 사이에는 제2DMA 컨트롤러(미도시)가 배치될 수 있다. 상기 제1DMA 컨트롤러는 버퍼 매니저(250)와 제1메모리 컨트롤러(260) 사이에서 데이터의 전송을 제어할 수 있고, 상기 제2DMA 컨트롤러는 버퍼 매니저(250)와 제2메모리 컨트롤러(262) 사이에서 데이터의 전송을 제어할 수 있다.
버퍼 매니저(250)에 의해 제어될 수 있는 버퍼(270)는 DRAM(dynamic random access memory)으로 구현될 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 버퍼(270)는 캐시(cache) 역할을 수행할 수 있다. 따라서, 호스트(130)로 전송될 데이터 또는 메모리 장치들(300)로 전송될 데이터는 버퍼(270)에 임시로 저장될 수 있다.
메모리 장치들(300) 각각은 메타데이터(metadata)를 저장하는 제1메모리 영역과 사용자 데이터(user data)를 저장하는 제2메모리 영역을 포함할 수 있다. 메모리 장치(300)의 실시 예에 따른 구조와 작동은 도 2, 도 5, 도 12, 또는 도 22를 참조하여 상세히 설명될 것이다.
메모리 장치(300)는 내부 읽기 검증 대상 데이터(예컨대, 메타데이터 또는 랜더마이즈된 데이터) 그 자체를 컨트롤러(210A 또는 210B)로 전송하지 않고 메모리 장치(300) 내부에서 우선적으로 내부 읽기 검증을 수행하고, 수행 결과에 상응하는 상태만 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 메모리 장치 (300)를 포함하는 데이터 저장 장치(200A 또는 200B), 즉 메모리 시스템의 성능은 개선될 수 있다.
도 2는 도 1a 또는 도 1b에 도시된 메모리 장치의 일 실시 예를 나타내는 블록도이다.
도 1a부터 도 2를 참조하면, 예시적으로 도시된 메모리 장치(300A)는 어드레스 레지스터와 카운터(310, 이하, "어드레스 레지스터/카운터"라 한다), 프로그램과 이레이즈 컨트롤러(315, 이하, "프로그램/이레이즈 컨트롤러"라 한다), 명령 인터페이스 로직 회로(320), 명령 레지스터(325), 데이터 레지스터(330), 메모리 셀 어레이(335), 페이지 버퍼(340), X-디코더(또는 로우 디코더; 345), Y-디코더(또는 컬럼 디코더; 350), 온-셀 카운터와 레지스터(355, 이하, "온-셀 카운터/레지스터"라 한다), 오프-셀 카운터와 레지스터(360, 이하, "오프-셀 카운터/레지스터"라 한다), 연산 회로(370), 기준 값 레지스터(375), 차이 값 레지스터(380), 비교기(또는 비교 회로; 385), 입출력 버퍼(390), 및 입출력 패드들(IO0~IO7)을 포함할 수 있다.
어드레스 레지스터/카운터(310)는, 프로그램/이레이즈 컨트롤러(315)로부터 출력된 제1제어 신호들과 명령 인터페이스 로직 회로(320)로부터 출력된 제1작동 제어 신호들에 응답하여, 입출력 버퍼(390)로부터 전송된 어드레스들을 저장 및/또는 카운트하고, 저장 및/또는 카운트 결과에 따라 생성된 로우 어드레스들(row addresses; XADD)을 X-디코더(345)로 전송하고, 상기 저장 및/또는 상기 카운트 결과에 따라 생성된 컬럼(column) 어드레스들(YADD)을 Y-디코더(350)로 전송할 수 있다.
프로그램/이레이즈 컨트롤러(315)는, 명령 인터페이스 로직 회로(320)로부터 출력된 제2작동 제어 신호들에 응답하여, 어드레스 레지스터/카운터(310)의 작동을 제어할 수 있는 상기 제1제어 신호들, X-디코더(345)의 작동을 제어할 수 있는 제2제어 신호들, 및 페이지 버퍼(340)의 작동을 제어할 수 있는 제3제어 신호들을 생성할 수 있다.
실시 예들에 따라, 프로그램/이레이즈 컨트롤러(315)는 프로그램 작동에 관련된 상기 제1제어 신호들, 상기 제2제어 신호들, 및 상기 제3제어 신호들을 생성할 수 있다. 또한, 프로그램/이레이즈 컨트롤러(315)는 이레이즈 작동에 관련된 상기 제1제어 신호들, 상기 제2제어 신호들, 및 상기 제3제어 신호들을 생성할 수 있다. 실시 예들에 따라, 상기 제어 신호들은 프로그램 작동에 필요한 전압들 또는 이레이즈 작동에 필요한 전압들을 포함할 수 있다.
명령 인터페이스 로직 회로(320)는, 제어 신호들(ALE, CLE, /WE, /CE, /WP, 및 /RE)에 응답하여, 레지스터/카운터(310)의 작동을 제어할 수 있는 제1작동 제어 신호들, 프로그램/이레이즈 컨트롤러(315)의 작동을 제어할 수 있는 제2작동 제어 신호들, 명령 레지스터(325)의 작동을 제어할 수 있는 제3작동 제어 신호들, 및 데이터 레지스터(330)의 작동을 제어할 수 있는 제4작동 제어 신호들을 생성할 수 있다.
"ALE"는 어드레스 래치 인에이블(address latch enable) 신호를 의미하고, "CLE"는 명령 래치 인에이블(command latch enable) 신호를 의미하고, "/WE"는 라이트 인에이블(write enable) 신호를 의미하고, "/CE"는 칩 인에이블(chip enable) 신호를 의미하고, "/WP"는 라이트 금지(write protect) 신호를 의미하고, "/RE"는 리드 인에이블(read enable) 신호를 의미한다. 여기서, "/"는 로우 액티브(low active)를 의미할 수 있다.
명령 레지스터(325)는, 명령 인터페이스 로직 회로(320)로부터 출력된 제3작동 제어 신호들에 응답하여, 입출력 버퍼(390)로부터 출력된 명령을 수신하여 저장할 수 있다. 명령 레지스터(325)에 저장된 명령은, 상기 제3작동 신호들에 응답하여, Y-디코더(350)로 제공될 수 있다.
데이터 레지스터(330)는, 명령 인터페이스 로직 회로(320)로부터 출력된 제4작동 명령 신호들에 응답하여, 입출력 버퍼(390)로부터 출력된 데이터를 수신하여 저장할 수 있다. 데이터 레지스터(330)에 저장된 데이터는, 상기 제4작동 신호들에 응답하여, Y-디코더(350)로 제공될 수 있다. 실시 예들에 따라, 데이터 레지스터 (330)는 입출력 버퍼(390)로부터 출력된 데이터를 랜더마이즈(randomize)하고 랜더마이즈된 데이터를 생성할 수 있다.
메모리 셀 어레이(335)는 복수의 블록들(blocks)을 포함하고, 하나의 블록은 복수의 페이지들(pages)를 포함하고, 하나의 페이지는 데이터 영역과 스페어 (spare) 영역을 포함할 수 있다. 이레이즈(erase) 작동의 최소 단위는 블록이고, 프로그램 작동 또는 리드 작동의 최소 단위는 페이지이다.
메모리 셀 어레이(335)는 2차원으로 또는 3차원으로 배열된 복수의 불휘발성 메모리 셀들(예컨대, 복수의 플래시 메모리 셀들)을 포함할 수 있다. 상기 복수의 플래시 메모리 셀들 중에서 해당하는 일부는 블록 또는 페이지를 구성할 수 있다. 복수의 플래시 메모리 셀들 각각은 NAND-타입 플래시 메모리 셀 또는 NOR-타입 플래시 메모리 셀로 구현될 수 있고, 3차원적인 수직(three-dimensional vertical) NAND-타입 플래시 메모리 셀로 구현될 수 있다.
메모리 셀 어레이(335)는 3차원 메모리 셀 어레이를 포함할 수 있다. 3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다.
3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
복수의 플래시 메모리 셀들 각각은 1-비트 정보를 저장할 수 있는 싱글-레벨 셀(single level cell(SLC)) 또는 2-비트 이상의 정보를 저장할 수 있는 멀티-레벨 셀(multi-level cell(MLC))로 구현될 수 있다.
메모리 장치(300A)의 작동들에 관련된 메타데이터는 메모리 셀 어레이(335)에 포함된 복수의 MLC들에 SLC 프로그램 방법으로 저장될 수 있다. 즉, MLC에 1-비트 정보를 저장할 수 있다
페이지 버퍼(340)는, 프로그램/이레이즈 컨트롤러(315)로부터 출력된 제3제어 신호들에 응답하여, 메모리 셀 어레이(335)에 포함된 복수의 불휘발성 메모리 셀들 중에서 X-디코더(345)와 Y-디코더(350)에 의해 선택된 불휘발성 메모리 셀들에 데이터를 프로그램하거나 상기 선택된 불휘발성 메모리 셀들에 프로그램된 데이터를 리드할 수 있다. 페이지 버퍼(340)는 데이터의 값들을 저장할 수 있는 래치들 또는 레지스터들을 포함할 수 있다.
실시 예들에 따라, 페이지 버퍼(340)는 레지스터 및/또는 감지 증폭기의 기능을 수행할 수 있다. 예컨대, 페이지 버퍼(340)는, 프로그램 작동 동안에는, 데이터 레지스터(330)로부터 출력된 데이터(또는 랜더마이즈된 데이터)를 래치하고, 래치된 데이터를 선택된 불휘발성 메모리 셀들에 프로그램할 수 있다. 페이지 버퍼 (340)는, 리드 작동 동안에는, 선택된 불휘발성 메모리 셀들에 프로그램된 데이터를 감지하여 증폭하고, 증폭된 데이터를 래치하고, 래치된 데이터를 Y-디코더(350)를 통해 입출력 버퍼(390)로 전송할 수 있다.
실시 예들에 따라, Y-디코더(350)는 그 명칭에 무관하게 페이지 버퍼(340)와 입출력 버퍼(390) 사이에서 데이터 전송 경로의 기능을 수행할 수 있다. 예컨대, Y-디코더(350)는 Y-게이팅(Y-gating) 회로로 불릴 수 있다.
도 3은 도 2에 도시된 메모리 셀 어레이의 온-셀들의 문턱 전압 분포와 오프-셀들의 문턱 전압 분포를 나타내고, 도 4는 도 2에 도시된 메모리 장치의 작동을 설명하는 플로우차트이다.
도 1a부터 도 4를 참조하면, 페이지 버퍼(340)는 메모리 컨트롤러(260 또는 262)로부터 출력된 데이터를 메모리 셀 어레이(335)의 복수의 불휘발성 메모리 셀들 중에서 X-디코더(345)와 Y-디코더(350)에 의해 선택된 불휘발성 메모리 셀들에 프로그램할 수 있다(S110). 상기 데이터는 메타데이터 또는 랜더마이즈된 메타데이터일 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 메모리 컨트롤러 (260 또는 262) 또는 메모리 장치(300A)는 랜더마이즈된 메타데이터를 생성할 수 있다.
도 3에 도시된 바와 같이, 선택된 불휘발성 메모리 셀들에 프로그램된 데이터(또는 랜더마이즈된 데이터)에 포함된 데이터(또는 데이터 값) "1"의 개수와 데이터(또는 데이터 값) "0"의 개수가 확률적으로 거의 동일하다고 가정할 때, 상기 선택된 불휘발성 메모리 셀들 중에서 데이터 "1"을 저장하는 온-셀들(ON)의 개수와 상기 선택된 불휘발성 메모리 셀들 중에서 데이터 "0"을 저장하는 오프-셀들(OFF)의 개수는 확률적으로 거의 동일할 수 있다.
이러한 가정하에서, 도 3을 참조하면, "OND"는 온-셀들(ON)의 문턱 전압 분포(threshold voltage distribution)를 나타내고, "OFD"는 오프-셀들의 문턱 전압 분포를 나타내고, "Vread"는 온-셀(ON)과 오프-셀(OFF)을 구별할 수 있는 리드 전압을 의미한다. 이때, 리드 전압(Vread)은 내부 읽기 검증을 위한 전압일 수 있으나 이에 한정되는 것은 아니다.
메모리 장치(300A) 내부에서 수행되는 내부 읽기 검증 작동을 수행하기 위해, 페이지 버퍼(340)는 선택된 불휘발성 메모리 셀들에 프로그램된 데이터를 리드할 수 있다(S112).
상기 내부 읽기 검증 작동 동안, 온-셀 카운터/레지스터(355)는, 상기 선택된 불휘발성 메모리 셀들로부터 리드된 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)에 기초하여, 상기 선택된 불휘발성 메모리 셀들 중에서 온-셀들 (ON)의 개수를 카운트하고, 카운트 결과에 해당하는 제1카운트 값(CNT1)을 생성하여 래치하고, 래치된 제1카운트 값(CNT1)을 연산 회로(370)로 전송할 수 있다 (S114). 여기서, 제1카운트 값(CNT1)은 상기 선택된 불휘발성 메모리에 프로그램된 데이터와 관련된 제1데이터를 의미할 수 있다.
상기 내부 읽기 검증 작동 동안, 온-셀 카운터/레지스터(355)의 작동과 동시에 또는 병렬적으로, 오프-셀 카운터/레지스터(360)는, 상기 선택된 불휘발성 메모리 셀들로부터 리드된 상기 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)에 기초하여, 상기 선택된 불휘발성 메모리 셀들 중에서 오프-셀들(OFF)의 개수를 카운트하고, 카운트 결과에 해당하는 제2카운트 값(CNT2)을 생성하여 래치하고, 래치된 제2카운트 값(CNT2)을 연산 회로(370)로 전송할 수 있다(S114). 여기서, 제2카운트 값(CNT2)은 상기 선택된 불휘발성 메모리 셀들에 프로그램된 데이터와 관련된 제2데이터를 의미할 수 있다. 예컨대, 각 카운터(355와 360)는 클락 신호에 응답하여 카운트 작동을 수행할 수 있다.
데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 프로그램된 불휘발성 메모리 셀들의 개수의 총합은 제1카운트 값(CNT1)과 제2카운트 값(CNT2)의 합과 동일할 수 있다.
감산기로 구현될 수 있는 연산 회로(370)는 제1데이터에 상응하는 제1카운트 값(CNT1)과 제2데이터에 상응하는 제2카운트 값(CNT2)의 차이를 계산하고, 차이 값 (DV)을 차이 값 레지스터(380)로 전송할 수 있다(S116). 실시 예들에 따라, 차이 값(DV)은 절대값일 수 있으나 이에 한정되는 것은 아니다.
기준 값 레지스터(375)는 입출력 버퍼(390)로부터 출력된 기준 값을 수신하고 저장할 수 있다. 차이 값 레지스터(380)는 차이 값(DV)을 수신하고 저장할 수 있다.
실시 예들에 따라, 기준 값은 컨트롤러(210A 또는 210B)의 제어에 따라 기준 값 레지스터(375)에 프로그램 또는 설정될 수 있다. 실시 예에 따라, 각 레지스터 (375와 380)는 SFR(special function register)일 수 있으나 이에 한정되는 것은 아니다.
실시 예들에 따라, 컨트롤러(210A 또는 210B)는, 선택된 불휘발성 메모리 셀들에 대한 프로그램/이레이즈 싸이클들(program/erase(P/E) cycles)과 리드 카운트 (read count) 중에서 적어도 하나에 기초하여, 기준 값을 결정하고 결정된 기준 값을 기준 값 레지스터(375)에 프로그램 또는 설정될 수 있다.
다른 실시 예들에 따라, P/E 싸이클들 및/또는 리드 카운트는 명령 인터페이스 로직 회로(320)에 의해 관리되고, 명령 인터페이스 로직 회로(320)에 의해 기준 값으로서 기준 값 레지스터(375)에 프로그램 또는 설정될 수 있다. 또 다른 실시 예들에 따라, 상기 기준 값은 메모리 셀 어레이(335)에 저장되고 메모리 셀 어레이 (335)에 저장된 기준 값은 기준 값 레지스터(375)에 프로그램 또는 설정될 수 있다.
비교기(385)는 기준 값 레지스터(375)로부터 전송된 기준 값(REF)과 차이 값 레지스터(380)로부터 전송된 차이 값(DV)을 수신하고, 이들(REF와 DV)을 비교할 수 있다(S118).
차이 값(DV)이 기준 값(REF)보다 작을 때(S118의 YES), 비교기(385)는 선택된 불휘발성 메모리 셀들에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 지시하는 제1상태를 갖는 상태 신호(STATUS)를 생성하고 이를 입출력 버퍼(390)로 전송할 수 있다(S120).
입출력 버퍼(390)는 제1상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제1상태를 갖는 상태 신호(STATUS)에 기초하여, 선택된 불휘발성 메모리 셀들에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 알 수 있다.
그러나, 차이 값(DV)이 기준 값(REF)과 같거나 클 때(S118의 NO), 비교기 (385)는 선택된 불휘발성 메모리 셀들에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 지시하는 제2상태를 갖는 상태 신호(STATUS)를 생성하고 이를 입출력 버퍼(390)로 전송할 수 있다(S122).
입출력 버퍼(390)는 제2상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제2상태를 갖는 상태 신호(STATUS)에 기초하여, 상기 선택된 불휘발성 메모리 셀들에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 알 수 있다.
따라서, 메모리 장치(300A)는, 컨트롤러(210A 또는 210B)의 제어에 따라, 메모리 셀 어레이(335)의 선택된 불휘발성 메모리 셀들에 프로그램된 데이터를 리드하고, 리드된 데이터를 컨트롤러(210A 또는 210B)로 전송하고, 컨트롤러(210A 또는 210B)는 메모리 장치(300A)로부터 전송된 리드된 데이터에 대해 읽기 검증을 수행할 수 있다(S124).
도 2에 도시된 차이 값 생성 회로(DVG1)는 불휘발성 메모리 셀들에 프로그램된 데이터와 관련된 제1데이터(예컨대, 제1카운트 값(CNT1))와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터(예컨대, 제2카운트 값 (CNT2))에 기초하여 차이 값(DV)을 생성할 수 있다. 예컨대, 차이 값 생성 회로 (DVG1)는 구성 요소들(340, 355, 360, 370, 및 380)을 포함할 수 있다.
도 5는 종래의 읽기 검증 방법의 타이밍 도와 도 2에 도시된 메모리 장치에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 5의 (a)와 (b)를 참조하면, "DIN1" 첫 번째 데이터가 페이지 버퍼로 로드되는 시간을 나타낸다고 가정하고, "DIN2" 두 번째 데이터가 페이지 버퍼로 로드되는 시간을 나타낸다고 가정하고, "tPROG"는 상기 첫 번째 데이터 또는 상기 두 번째 데이터가 불휘발성 메모리 셀들에 프로그램되는 시간을 나타내고, "tR"은 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터를 리드하는 시간을 나타낸다고 가정하고, "DOUT"는 리드된 첫 번째 데이터 또는 리드된 두 번째 데이터가 입출력 패드들을 통해 컨트롤러로 전송되는 시간을 나타낸다고 가정하고, "COMPARE"는 상기 컨트롤러에 의해 읽기 검증에 소요되는 시간을 나타낸다고 가정하고, "COUNTING"는 본 발명의 실시 예에 따라 제1카운트 값(CNT1)과 제2카운트 값(CNT2)을 생성하는데 소요되는 시간을 의미한다고 가정한다.
예컨대, DIN1은 PDATA 또는 PDATA1를 의미할 수 있고, DIN2는 PDATA2를 의미할 수 있다.
도 5의 (a)에 도시된 바와 같이 종래의 읽기 검증 방법에서는, 메모리 장치가 읽기 검증의 대상이 되는 데이터 그 자체를 컨트롤러로 전송하면, 상기 컨트롤러는 상기 데이터에 대해 읽기 검증을 수행했다.
그러나, 도 5의 (b)에 도시된 바와 같이 본 발명의 실시 예들에 따른 메모리 장치(300A)는 내부 읽기 검증의 대상이 되는 데이터에 대한 읽기 검증을 메모리 장치(300A) 내부에서 수행하므로, 제2상태를 갖는 상태 신호(STATUS)가 생성되지 않는 한, 메모리 장치(300A)는 상기 데이터 그 자체를 컨트롤러(210A 또는 210B)로 전송하지 않는다. 따라서, 데이터 저장 장치(200A 또는 200B)는 "DOUT"에 해당하는 시간을 필요로 하지 않으므로, 데이터 저장 장치(200A 또는 200B)의 성능은 향상되는 효과가 있다.
도 2부터 도 5를 참조하여 설명된 메모리 장치(300A)는 도 5의 (a)에 도시된 "DOUT"에 해당하는 시간을 필요로 하지 않는다. 따라서, 본 발명의 실시 예에 따른 내부 읽기 검증 방법을 수행하는데 필요한 시간(T2)은 종래의 읽기 검증 방법을 수행하는데 필요한 시간(T1)보다 상당히 감소할 수 있는 효과가 있다.
도 6은 도 1a 또는 도 1b에 도시된 메모리 장치의 다른 실시 예를 나타내는 블록도이다.
도 6을 참조하면, 예시적으로 도시된 메모리 장치(300B)는 어드레스 레지스터/카운터(310), 프로그램/이레이즈 컨트롤러(315), 명령 인터페이스 로직 회로 (320), 명령 레지스터(325), 데이터 레지스터(330), 메모리 셀 어레이(335), 페이지 버퍼(340), X-디코더(345), Y-디코더(350), 기준 값 레지스터(375), 차이 값 레지스터(380), 비교기(385), 두 개의 입출력 버퍼들(391과 392), 데이터 비교기 (395), 입출력 패드들(IO0~IO7)을 포함할 수 있다.
도 7은 도 6에 도시된 메모리 장치의 작동의 일 실시 예를 설명하는 플로우차트이고, 도 8은 도 6에 도시된 메모리 장치의 작동의 일 실시 예를 설명하는 개념도이고, 도 9는 종래의 읽기 검증 방법의 타이밍 도와 도 6에 도시된 메모리 장치에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
두 개의 입출력 버퍼들(391과 392)을 이용하여 제1데이터와 제2데이터를 비교하는 메모리 장치(300B)의 작동은 도 1a, 도 1b, 및 도 6부터 도 9를 참조하여 설명된다.
컨트롤러(210A 또는 210B)로부터 출력되고 메모리 셀 어레이(335)에 프로그램될 데이터(PDATA)는 제1입출력 버퍼(391)에 저장될 수 있다(S210). 데이터 (PDATA)는 내부 읽기 검증의 대상이 되는 데이터이다.
제1입출력 버퍼(391)에 저장된 데이터(PDATA)는 제2입출력 버퍼(392)로 카피될 수 있다(S212). 제2입출력 버퍼(392)로 카피된 데이터(PDATA)는 제1데이터를 의미할 수 있다. 제1입출력 버퍼(391)에 저장된 데이터(PDATA)와 제2입출력 버퍼 (392)로 카피된 데이터(PDATA)는 서로 동일하다고 가정한다.
도 6의 페이지 버퍼(340)는 제1입출력 버퍼(391)로부터 출력된 데이터 (PDATA)를 메모리 셀 어레이(335)에 프로그램할 수 있다(S214). 예컨대, 데이터 (PDATA)는 Y-디코더(350)를 통해 페이지 버퍼(340)로 전송될 수 있다.
내부 읽기 검증 작동을 위해, 페이지 버퍼(340)는 메모리 셀 어레이(335)에 프로그램된 데이터(PDATA')를 리드하고, 리드된 데이터(PDATA')를 Y-디코더(350)를 통해 제1입출력 버퍼(391)로 전송할 수 있다(S216). 따라서, 제1입출력 버퍼(391)에는 리드된 데이터(PDATA')가 저장될 수 있다.
메모리 셀 어레이(335)로부터 리드된 데이터(PDATA')는 메모리 셀 어레이 (335)로 프로그램된 데이터(PDATA)와 관련된 데이터일 수 있다. 예컨대, 데이터 (PDATA)는 프로그램 작동 과정 또는 리드 작동 과정에서 변경될 수 있으므로, 변경된 데이터는 리드된 데이터(PDATA')이다.
데이터 비교기(395)는 제2입출력 버퍼(392)로부터 전송된 데이터(PDATA), 즉 제1데이터와 제1입출력 버퍼(391)로부터 전송된 데이터(PDATA'), 즉 제2데이터를 수신하고, 이들을 비트-단위(bit-wise)로 비교하고, 비트-단위의 차이들의 개수에 상응하는 차이 값(DV)을 차이 값 레지스터(380)로 전송할 수 있다(S218).
도 8에 예시적으로 도시된 바와 같이, 비트-단위로 비교한 결과, 제1데이터 (PDATA)의 값들과 제2데이터(PDATA')의 값들 중에서 세 개의 값들(D1, D2, 및 D3)이 서로 다르다고 가정한다.
비교기(385)는 기준 값 레지스터(375)로부터 전송된 기준 값(REF)과 차이 값 레지스터(380)로부터 전송된 차이 값(DV)을 수신하고, 이들(REF와 DV)을 비교할 수 있다(S220).
차이 값(DV)이 기준 값(REF)보다 작을 때(S220의 YES), 비교기(385)는 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 지시하는 제1상태를 갖는 상태 신호(STATUS)를 생성하고 이를 제1입출력 버퍼(391)로 전송할 수 있다(S222).
제1입출력 버퍼(391)는 제1상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제1상태를 갖는 상태 신호(STATUS)에 기초하여, 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 알 수 있다.
그러나, 차이 값(DV)이 기준 값(REF)과 같거나 클 때(S220의 NO), 비교기 (385)는 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 지시하는 제2상태를 갖는 상태 신호(STATUS)를 생성하고 이를 제1입출력 버퍼(391)로 전송할 수 있다(S224).
제1입출력 버퍼(391)는 제2상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제2상태를 갖는 상태 신호(STATUS)에 기초하여, 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 알 수 있다.
메모리 장치(300B)는, 컨트롤러(210A 또는 210B)의 제어에 따라, 메모리 셀 어레이(335)의 선택된 불휘발성 메모리 셀들에 프로그램된 데이터를 리드하고, 리드된 데이터를 컨트롤러(210A 또는 210B)로 전송하고, 컨트롤러(210A 또는 210B)는 메모리 장치(300B)로부터 전송된 리드된 데이터에 대해 읽기 검증을 수행할 수 있다(S226). 실시 예에 따라, 상기 읽기 검증은 CPU(230)에 의해 직접 실행될 수 있다. 이때, CPU(230)는 데이터 비교와 관리를 수행할 수 있다.
도 6에 도시된 차이 값 생성 회로(DVG2)는 메모리 셀 어레이(335)에 프로그램된 데이터(PDATA)와 관련된 제1데이터(예컨대, 제2입출력 버퍼(392)에 저장된 데이터(PDATA))와 메모리 셀 어레이(335)에 프로그램된 데이터(PDATA)와 관련된 제2데이터(예컨대, 메모리 셀 어레이(335)로부터 제1입출력 버퍼(391)로 전송된 데이터(PDATA')) 기초하여 차이 값(DV)을 생성할 수 있다. 예컨대, 차이 값 생성 회로 (DVG2)는 구성 요소들(380, 391, 392, 및 395)을 포함할 수 있다.
도 9의 (a)는 종래의 컨트롤러에 수행되는 종래의 읽기 검증 방법의 타이밍 도를 나타내고, 도 9의 (b)는 도 6의 메모리 장치(300B)에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 9의 (a)와 (b)를 참조하면, "DIN1" 첫 번째 데이터가 페이지 버퍼로 로드되는 시간을 나타낸다고 가정하고, "DIN2" 두 번째 데이터가 페이지 버퍼로 로드되는 시간을 나타낸다고 가정하고, "tPROG"는 상기 첫 번째 데이터 또는 상기 두 번째 데이터가 불휘발성 메모리 셀들에 프로그램되는 시간을 나타내고, "tR"은 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터를 리드하는 시간을 나타낸다고 가정하고, "DOUT"는 리드된 첫 번째 데이터 또는 리드된 두 번째 데이터가 입출력 패드들을 통해 컨트롤러로 전송되는 시간을 나타낸다고 가정한다.
도 9의 (a)의 "COMPARE"는 종래의 컨트롤러에서 수행되는 읽기 검증에 소요되는 시간을 나타낸다고 가정하고, 도 9의 (b)의 "COMPARE"는 도 6의 메모리 장치 (300B)에서 수행되는 내부 읽기 검증에 소요되는 시간을 나타낸다고 가정하고, "COPY"는 본 발명의 실시 예에 따라 하나의 입출력 버퍼로부터 다른 입출력 버퍼로 해당 데이터가 카피되는 시간을 나타낸다고 가정한다.
도 9의 (a)에 도시된 바와 같이 종래의 읽기 검증 방법에서는, 메모리 장치가 읽기 검증의 대상이 되는 데이터 그 자체를 컨트롤러로 전송하면, 상기 컨트롤러는 상기 데이터에 대해 읽기 검증을 수행했다.
그러나, 도 9의 (b)에 도시된 바와 같이 본 발명의 실시 예들에 따른 메모리 장치(300B)는 내부 읽기 검증의 대상이 되는 데이터에 대한 읽기 검증을 메모리 장치(300B) 내부에서 수행하므로, 제2상태를 갖는 상태 신호(STATUS)가 생성되지 않는 한, 메모리 장치(300B)는 상기 데이터 그 자체를 컨트롤러(210A 또는 210B)로 전송하지 않는다. 따라서, 데이터 저장 장치(200A 또는 200B)는 "DOUT"에 해당하는 시간을 필요로 하지 않으므로, 데이터 저장 장치(200A 또는 200B)의 성능은 향상되는 효과가 있다.
데이터 저장 장치(200A 또는 200B)는 "DOUT"에 해당하는 시간을 필요로 하지 않으므로, 내부 읽기 검증 방법을 수행하는데 필요한 시간(T3)은 종래의 읽기 검증 방법을 수행하는데 필요한 시간(T1)보다 상당히 감소할 수 있는 효과가 있다.
도 10은 도 6에 도시된 메모리 장치의 작동의 다른 실시 예를 설명하는 플로우차트이고, 도 11은 도 6에 도시된 메모리 장치의 작동의 다른 실시 예를 설명하는 개념도이고, 도 12는 종래의 읽기 검증 방법의 타이밍 도와 도 6에 도시된 메모리 장치에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 6, 도 10, 도 11, 및 도 12를 참조하면, 컨트롤러(210A 또는 210B)로부터 출력되고 메모리 셀 어레이(335)에 프로그램될 데이터(PDATA)는 제1입출력 버퍼 (391)에 저장될 수 있다(S210). 데이터(PDATA)는 내부 읽기 검증의 대상이 되는 데이터이다.
도 6의 페이지 버퍼(340)는 제1입출력 버퍼(391)로부터 출력된 데이터 (PDATA)를 메모리 셀 어레이(335)에 프로그램할 수 있다(S214). 예컨대, 데이터 (PDATA)는 Y-디코더(350)를 통해 페이지 버퍼(340)로 전송될 수 있다.
내부 읽기 검증 작동을 위해, 페이지 버퍼(340)는 메모리 셀 어레이(335)에 프로그램된 데이터(PDATA')를 리드하고, 리드된 데이터(PDATA')를 Y-디코더(350)를 통해 제2입출력 버퍼(392)로 전송할 수 있다(S216A). 따라서, 제2입출력 버퍼(392)에는 리드된 데이터(PDATA')가 저장될 수 있다.
메모리 셀 어레이(335)로부터 리드된 데이터(PDATA')는 메모리 셀 어레이 (335)로 프로그램된 데이터(PDATA)와 관련된 데이터일 수 있다. 예컨대, 데이터 (PDATA)는 프로그램 작동 과정 또는 리드 작동 과정에서 변경될 수 있으므로, 변경된 데이터는 리드된 데이터(PDATA')이다.
데이터 비교기(395)는 제2입출력 버퍼(392)로부터 전송된 데이터(PDATA'), 즉 제2데이터와 제1입출력 버퍼(391)로부터 전송된 데이터(PDATA), 즉 제1데이터를 수신하고, 이들을 비트-단위로 비교하고, 비트-단위의 차이들의 개수에 상응하는 차이 값(DV)을 차이 값 레지스터(380)로 전송할 수 있다(S218).
도 11에 예시적으로 도시된 바와 같이, 비트-단위로 비교한 결과, 제1데이터 (PDATA)의 값들과 제2데이터(PDATA')의 값들 중에서 세 개의 값들(D1, D2, 및 D3)이 서로 다르다고 가정한다.
비교기(385)는 기준 값 레지스터(375)로부터 전송된 기준 값(REF)과 차이 값 레지스터(380)로부터 전송된 차이 값(DV)을 수신하고, 이들(REF와 DV)을 비교할 수 있다(S220).
차이 값(DV)이 기준 값(REF)보다 작을 때(S220의 YES), 비교기(385)는 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 지시하는 제1상태를 갖는 상태 신호(STATUS)를 생성하고 이를 제1입출력 버퍼(391)로 전송할 수 있다(S222).
제1입출력 버퍼(391)는 제1상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제1상태를 갖는 상태 신호(STATUS)에 기초하여, 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 알 수 있다.
그러나, 차이 값(DV)이 기준 값(REF)과 같거나 클 때(S220의 NO), 비교기 (385)는 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 지시하는 제2상태를 갖는 상태 신호(STATUS)를 생성하고 이를 제1입출력 버퍼(391)로 전송할 수 있다(S224).
제1입출력 버퍼(391)는 제2상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제2상태를 갖는 상태 신호(STATUS)에 기초하여, 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 알 수 있다.
메모리 장치(300B)는, 컨트롤러(210A 또는 210B)의 제어에 따라, 메모리 셀 어레이(335)의 선택된 불휘발성 메모리 셀들에 프로그램된 데이터를 리드하고, 리드된 데이터를 컨트롤러(210A 또는 210B)로 전송하고, 컨트롤러(210A 또는 210B)는 메모리 장치(300B)로부터 전송된 리드된 데이터에 대해 읽기 검증을 수행할 수 있다(S226). 실시 예에 따라, 상기 읽기 검증은 CPU(230)에 의해 직접 실행될 수 있다. 이때, CPU(230)는 데이터 비교와 관리를 수행할 수 있다.
도 12의 (a)는 종래의 컨트롤러에 수행되는 종래의 읽기 검증 방법의 타이밍 도를 나타내고, 도 12의 (b)는 도 6의 메모리 장치(300B)에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 12의 (a)에 도시된 바와 같이 종래의 읽기 검증 방법에서는, 메모리 장치가 읽기 검증의 대상이 되는 데이터 그 자체를 컨트롤러로 전송하면, 상기 컨트롤러는 상기 데이터에 대해 읽기 검증을 수행했다.
그러나, 도 12의 (b)에 도시된 바와 같이 본 발명의 실시 예들에 따른 메모리 장치(300B)는 내부 읽기 검증의 대상이 되는 데이터에 대한 읽기 검증을 메모리 장치(300B) 내부에서 수행하므로, 제2상태를 갖는 상태 신호(STATUS)가 생성되지 않는 한, 메모리 장치(300B)는 상기 데이터 그 자체를 컨트롤러(210A 또는 210B)로 전송하지 않는다. 따라서, 데이터 저장 장치(200A 또는 200B)는 "DOUT"에 해당하는 시간과 "COPY"에 해당하는 시간을 필요로 하지 않으므로, 데이터 저장 장치(200A 또는 200B)의 성능은 향상되는 효과가 있다.
도 12의 (a)와 도 12의 (b)를 참조하면, 데이터 저장 장치(200A 또는 200B)는 "DOUT"에 해당하는 시간과 "COPY"에 해당하는 시간을 필요로 하지 않으므로, 내부 읽기 검증 방법을 수행하는데 필요한 시간(T4)은 종래의 읽기 검증 방법을 수행하는데 필요한 시간(T1)보다 상당히 감소할 수 있는 효과가 있다.
도 9의 (b)와 도 12의 (b)를 참조하면, 도 12의 (b)는 "COPY"에 해당하는 시간도 필요로 하지 않으므로, T4는 T3보다도 더 짧다.
도 13은 도 1a 또는 도 1b에 도시된 메모리 장치의 또 다른 실시 예를 나타내는 블록도이다.
도 13을 참조하면, 예시적으로 도시된 메모리 장치(300C)는 어드레스 레지스터/카운터(310), 프로그램/이레이즈 컨트롤러(315), 명령 인터페이스 로직 회로 (320), 명령 레지스터(325), 데이터 레지스터(330), 메모리 셀 어레이(335), 페이지 버퍼(340), X-디코더(345), Y-디코더(350), 기준 값 레지스터(375), 차이 값 레지스터(380), 비교기(385), 세 개의 입출력 버퍼들(391, 392, 및 393), 데이터 비교기(395), 입출력 패드들(IO0~IO7)을 포함할 수 있다.
도 14는 도 13에 도시된 메모리 장치의 작동의 일 실시 예를 설명하는 플로우차트이고, 도 15는 도 13에 도시된 메모리 장치의 작동의 일 실시 예를 설명하는 개념도이고, 도 16은 도 13에 도시된 메모리 장치에서 수행되는 내부 읽기 검증 방법의 타이밍 도들을 나타낸다.
세 개의 입출력 버퍼들(391, 392, 및 393)을 이용하여 제1데이터와 제2데이터를 비교하는 메모리 장치(300C)의 작동은 도 13부터 도 16을 참조하여 설명된다.
컨트롤러(210A 또는 210B)로부터 출력되고 메모리 셀 어레이(335)에 프로그램될 데이터(PDATA1)는 제1입출력 버퍼(391)에 저장될 수 있다(S310). 예컨대, 데이터(PDATA1)는 내부 읽기 검증의 대상이 되는 데이터일 수 있다.
제1입출력 버퍼(391)에 저장된 데이터(PDATA1)는 제2입출력 버퍼(392)로 카피될 수 있다(S312). 제2입출력 버퍼(392)로 카피된 데이터(PDATA1)는 제1데이터를 의미할 수 있다. 제1입출력 버퍼(391)에 저장된 데이터(PDATA1)와 제2입출력 버퍼 (392)로 카피된 데이터(PDATA1)는 서로 동일하다고 가정한다.
페이지 버퍼(340)는 제1입출력 버퍼(391)로부터 출력된 데이터(PDATA1)를 메모리 셀 어레이(335)에 프로그램할 수 있다(S314). 예컨대, 데이터(PDATA1)는 Y-디코더(350)를 통해 페이지 버퍼(340)로 전송될 수 있다.
내부 읽기 검증 작동을 위해, 페이지 버퍼(340)는 메모리 셀 어레이(335)에 프로그램된 데이터(PDATA1')를 리드하고, 리드된 데이터(PDATA1')를 제3입출력 버퍼(393)로 전송할 수 있다(S316). 리드된 데이터(PDATA1')가 제3입출력 버퍼(393)로의 전송과 동시에 또는 병렬적으로, 새로운 데이터(PDATA2)가 제1입출력 버퍼 (391)에 저장될 수 있다(S316). S316 단계에 따라 메모리 장치(300C)의 데이터 처리 속도는 증가할 수 있다.
메모리 셀 어레이(335)로부터 리드된 데이터(PDATA1')는 메모리 셀 어레이 (335)로 프로그램된 데이터(PDATA1)와 관련된 데이터일 수 있다. 예컨대, 데이터 (PDATA1)는 프로그램 작동 과정 또는 리드 작동 과정에서 변경될 수 있으므로, 변경된 데이터는 리드된 데이터(PDATA1')이다.
데이터 비교기(395)는 제2입출력 버퍼(392)로부터 전송된 데이터(PDATA1), 즉 제1데이터와 제2입출력 버퍼(393)로부터 전송된 데이터(PDATA1'), 즉 제2데이터를 수신하고, 이들을 비트-단위로 비교하고, 비트-단위 차이들의 개수에 상응하는 차이 값(DV)을 차이 값 레지스터(380)로 전송할 수 있다(S318).
도 15에 예시적으로 도시된 바와 같이, 비트-단위로 비교한 결과, 제1데이터 (PDATA1)의 값들과 제2데이터(PDATA1')의 값들 중에서 세 개의 값들(D1, D2, 및 D3)이 서로 다르다고 가정한다.
비교기(385)는 기준 값 레지스터(375)로부터 전송된 기준 값(REF)과 차이 값 레지스터(380)로부터 전송된 차이 값(DV)을 수신하고, 이들(REF와 DV)을 비교할 수 있다(S320).
차이 값(DV)이 기준 값(REF)보다 작을 때(S320의 YES), 비교기(385)는 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 지시하는 제1상태를 갖는 상태 신호(STATUS)를 생성하고 이를 제1입출력 버퍼(391)로 전송할 수 있다(S322).
제1입출력 버퍼(391)는 제1상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제1상태를 갖는 상태 신호(STATUS)에 기초하여, 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 알 수 있다.
그러나, 차이 값(DV)이 기준 값(REF)과 같거나 클 때(S320의 NO), 비교기 (385)는 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 지시하는 제2상태를 갖는 상태 신호(STATUS)를 생성하고 이를 제1입출력 버퍼(391)로 전송할 수 있다(S324).
제1입출력 버퍼(391)는 제2상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제2상태를 갖는 상태 신호(STATUS)에 기초하여, 메모리 셀 어레이(335)에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 알 수 있다.
메모리 장치(300C)는, 컨트롤러(210A 또는 210B)의 제어에 따라, 메모리 셀 어레이(335)의 선택된 불휘발성 메모리 셀들에 프로그램된 데이터를 리드하고, 리드된 데이터를 컨트롤러(210A 또는 210B)로 전송하고, 컨트롤러(210A 또는 210B)는 메모리 장치(300B)로부터 전송된 리드된 데이터에 대해 읽기 검증을 수행할 수 있다(S326).
도 13에 도시된 차이 값 생성 회로(DVG3)는 메모리 셀 어레이(335)에 프로그램된 데이터(PDATA1)와 관련된 제1데이터(예컨대, 제2입출력 버퍼(392)로 카피된 데이터(PDATA1))와 메모리 셀 어레이(335)에 프로그램된 데이터(PDATA)와 관련된 제2데이터(예컨대, 메모리 셀 어레이(335)로부터 제3입출력 버퍼(393)로 전송된 데이터(PDATA1')) 기초하여 차이 값(DV)을 생성할 수 있다. 예컨대, 차이 값 생성 회로(DVG3)는 구성 요소들(380, 391, 392, 393, 및 395)을 포함할 수 있다.
도 16의 (a)는 도 13의 메모리 장치(300C)에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다. 즉, 도 16의 (a)는 도 15에 도시된 개념도에 따라 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 9의 (a), 도 9의 (b), 및 도 16의 (a)를 참조하면, 도 9의 (a)에 도시된 바와 같이, 종래의 읽기 검증 방법에서는, 메모리 장치가 읽기 검증의 대상이 되는 데이터 그 자체를 컨트롤러로 전송하면, 상기 컨트롤러는 상기 데이터에 대해 읽기 검증을 수행했다.
그러나, 도 9의 (b)와 도 16의 (a)에 도시된 바와 같이, 본 발명의 실시 예들에 따른 메모리 장치(300C)는 내부 읽기 검증의 대상이 되는 데이터에 대한 읽기 검증을 메모리 장치(300C) 내부에서 수행하므로, 제2상태를 갖는 상태 신호 (STATUS)가 생성되지 않으면, 메모리 장치(300C)는 상기 데이터 그 자체를 컨트롤러(210A 또는 210B)로 전송하지 않는다. 따라서, 데이터 저장 장치(200A 또는 200B)는 "DOUT"에 해당하는 시간을 필요로 하지 않으므로, 데이터 저장 장치(200A 또는 200B)의 성능은 향상되는 효과가 있다.
데이터 저장 장치(200A 또는 200B)는 "DOUT"에 해당하는 시간을 필요로 하지 않으므로, 내부 읽기 검증 방법을 수행하는데 필요한 시간(T3)은 종래의 읽기 검증 방법을 수행하는데 필요한 시간(T1)보다 상당히 감소할 수 있는 효과가 있다.
도 17은 도 13에 도시된 메모리 장치의 작동의 다른 실시 예를 설명하는 개념도이고, 도 18은 도 13에 도시된 메모리 장치의 작동의 다른 실시 예를 설명하는 개념도이다.
세 개의 입출력 버퍼들(391, 392, 및 393)을 이용하여 제1데이터와 제2데이터를 비교하는 메모리 장치(300C)의 다른 작동은 도 13, 도 16, 도 17, 및 도 18을 참조하여 설명된다.
컨트롤러(210A 또는 210B)로부터 출력되고 메모리 셀 어레이(335)에 프로그램될 데이터(PDATA1)는 제1입출력 버퍼(391)에 저장될 수 있다(S310). 예컨대, 데이터(PDATA1)는 내부 읽기 검증의 대상이 되는 데이터일 수 있다.
제1입출력 버퍼(391)에 저장된 데이터(PDATA1)는 제2입출력 버퍼(392)로 카피될 수 있다(S312).
페이지 버퍼(340)는 제2입출력 버퍼(392)로부터 출력된 데이터(PDATA1)를 메모리 셀 어레이(335)에 프로그램할 수 있다(S314A). 제2입출력 버퍼(392)로부터 출력된 데이터(PDATA1)가 메모리 셀 어레이(335)에 프로그램되는 동안, 새로운 데이터(PDATA2)가 제1입출력 버퍼(391)에 저장될 수 있다(S314A).
내부 읽기 검증 작동을 위해, 페이지 버퍼(340)는 메모리 셀 어레이(335)에 프로그램된 데이터(PDATA1')를 리드하고, 리드된 데이터(PDATA1')를 제3입출력 버퍼(393)로 전송할 수 있다(S316A). S314A 단계에 따라 메모리 장치(300C)의 데이터 처리 속도는 증가할 수 있다.
데이터 비교기(395)는 제2입출력 버퍼(392)로부터 전송된 데이터(PDATA1), 즉 제1데이터와 제3입출력 버퍼(393)로부터 전송된 데이터(PDATA1'), 즉 제2데이터를 수신하고, 이들을 비트-단위로 비교하고, 비트-단위 차이들의 개수에 상응하는 차이 값(DV)을 차이 값 레지스터(380)로 전송할 수 있다(S318).
도 16의 (b)는 도 13의 메모리 장치(300C)에서 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다. 즉, 도 16의 (b)는 도 18에 도시된 개념도에 따라 수행되는 내부 읽기 검증 방법의 타이밍 도를 나타낸다.
도 19는 본 발명의 실시 예들에 따라 기준 값을 설정하는 방법들을 설명하는 플로우차트이다.
도 1a, 도 1b, 도 2, 도 6, 도 13, 및 도 19를 참조하면, 실시 예들에 따라 컨트롤러(210A 또는 210B)는 기준 값을 생성할 수 있다(S410).
다른 실시 예들에 따라, 컨트롤러(210A 또는 210B)는 데이터가 저장될 메모리 셀 어레이(335)에 포함된 블록에 포함된 불휘발성 메모리 셀들에 대한 P/E 사이클들에 기초하여 기준 값을 생성할 수 있다(S410).
또 다른 실시 예에 따라, 컨트롤러(210A 또는 210B)는 데이터가 저장될 메모리 셀 어레이(335)에 포함된 페이지에 포함된 불휘발성 메모리 셀들에 대한 리드 카운트(즉, 데이터가 리드된 회수)에 기초하여 기준 값을 생성할 수 있다(S410). 앞에서 설명한 바와 같이, 컨트롤러(210A 또는 210B)는 기준 값을 관리할 수 있다.
메모리 컨트롤러(260 또는 262)는 앞에서 설명한 각 방법에 따라 생성된 기준 값을 채널(CH1 또는 CH2)을 통해 웨이(WAY1 또는 WAY2)에 포함된 하나 또는 그 이상의 메모리 장치들(300)로 전송할 수 있다(S412).
메모리 장치(300)는 메모리 장치(300)에 포함된 기준 값 레지스터(375)에 메모리 컨트롤러(260 또는 262)로부터 전송된 기준 값을 저장할 수 있다(S414).
도 2부터 도 18을 참조하여 설명한 바와 같이, 메모리 장치(300A, 300B, 또는 300C)는, 기준 값 레지스터(375)에 저장된 기준 값(REF)과 차이 값(DV)을 이용하여, 메모리 셀 어레이(335)에 프로그램된 데이터에 대한 내부 읽기 검증을 메모리 장치(300A, 300B, 또는 300C) 내부에서 수행하고, 상태 신호(STATUS)만을 메모리 컨트롤러(260 또는 262)로 전송할 수 있다(S416).
메모리 장치(300A, 300B, 또는 300C)는, 내부 읽기 검증이 필요한 데이터에 대한 읽기 검증을 수행하기 위해, 상기 데이터를 디폴트로 메모리 컨트롤러(260 또는 262)로 전송하지 않는다.
즉, 메모리 장치(300A, 300B, 또는 300C)는, 메모리 장치(300A, 300B, 또는 300C) 내부에서 읽기 검증이 필요한 데이터에 대해 수행된 읽기 검증 작동이 실패한 경우에만, 메모리 컨트롤러(260 또는 262)의 제어에 따라 상기 데이터를 메모리 컨트롤러(260 또는 262)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 메모리 장치(300A, 300B, 또는 300C) 내부에서 읽기 검증이 필요한 데이터에 대해 수행된 읽기 검증 작동이 실패한 경우에만, 상기 데이터에 대한 읽기 검증을 수행할 수 있다.
도 20은 본 발명의 실시 예들에 따라 프로그램/이레이즈 사이클들을 이용하여 기준 값들을 설정하는 방법을 설명하는 플로우차트이다.
메모리 장치(300), 예컨대 명령 인터페이스 로직 회로(320)에 의해 기준 값이 관리되는 방법은 도 2, 도 6, 도 13, 및 도 20을 참조하여 설명된다.
메모리 장치(300)는 P/E 싸이클을 관리할 수 있다. 실시 예들에 따라, 명령 인터페이스 로직 회로(320)는, 제어 신호들(ALE, CLE, /WE, /CE, /WP, 및 /RE) 중에서 적어도 하나에 기초하여, 메모리 셀 어레이(335)에 포함된 블록별로 P/E 싸이클을 계산할 수 있다(S510).
명령 인터페이스 로직 회로(320)에 의해 계산된 P/E 싸이클에 대한 정보는 명령 레지스터(325)를 통해 Y-디코더(350)로 전송되고, Y-디코더(350)로부터 출력된 정보는 페이지 버퍼(340)에 의해 메모리 셀 어레이(335)에 프로그램될 수 있다 (S512).
메모리 셀 어레이(335)에 프로그램된 기준 값은 페이지 버퍼(340)에 의해 감지되고 증폭된 후, Y-디코더(350)와 입출력 버퍼(390 또는 391)를 통해 기준 값 레지스터(375)에 저장될 수 있다(S514).
도 2부터 도 18을 참조하여 설명한 바와 같이, 메모리 장치(300A, 300B, 또는 300C)는, 기준 값 레지스터(375)에 저장된 기준 값(REF)과 차이 값(DV)을 이용하여, 메모리 셀 어레이(335)에 프로그램된 데이터에 대한 읽기 검증을 메모리 장치(300A, 300B, 또는 300C) 내부에서 수행하고, 상태 신호(STATUS)만을 메모리 컨트롤러(260 또는 262)로 전송할 수 있다(S416).
메모리 장치(300A, 300B, 또는 300C)는, 읽기 검증이 필요한 데이터에 대한 읽기 검증을 수행하기 위해, 상기 데이터를 디폴트로 메모리 컨트롤러(260 또는 262)로 전송하지 않는다.
즉, 메모리 장치(300A, 300B, 또는 300C)는, 메모리 장치(300A, 300B, 또는 300C) 내부에서 읽기 검증이 필요한 데이터에 대해 수행된 읽기 검증 작동이 실패한 경우에만, 메모리 컨트롤러(260 또는 262)의 제어에 따라 상기 데이터를 메모리 컨트롤러(260 또는 262)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 메모리 장치(300A, 300B, 또는 300C) 내부에서 읽기 검증이 필요한 데이터에 대해 수행된 읽기 검증 작동이 실패한 경우에만, 상기 데이터에 대한 읽기 검증을 수행할 수 있다.
도 21은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도이다.
도 21에 도시된 데이터 처리 시스템(400)은 메모리 컨트롤러(260), 인터페이스(410), 및 메모리 장치(300)를 포함할 수 있다. 도 1a와 도 1b를 참조하면, 메모리 컨트롤러(260 또는 262)와 메모리 장치(300)는 서로 분리된 형태로 구현될 수 있으나, 도 21에서는 메모리 컨트롤러(260)와 메모리 장치(300)는 하나의 시스템 보드에 장착될 수 있거나 하나의 패키지로 패키징될 수 있다. 예컨대, 메모리 컨트롤러(260)와 메모리 장치(300)는 하나의 반도체 기판(semiconductor substrate)을 공유할 수 있다.
인터페이스(410)는 호스트(예컨대, 도 1a 또는 도 1b의 호스트(130))와 메모리 컨트롤러(260)로 사이에서 주고받는 명령 및/또는 데이터의 전송을 제어할 수 있다.
메모리 컨트롤러(260)는, 호스트로부터 전송된 명령에 따라, 메모리 장치 (300)에 대한 프로그램 작동, 리드 작동, 또는 이레이즈 작동을 제어할 수 있다. 메모리 컨트롤러(260)는 메모리 장치(300)의 메모리 셀 어레이(335)에 프로그램될 데이터가 메타데이터임을 지시하는 지시 신호를 메모리 장치(300)로 전송할 수 있다.
따라서, 메모리 장치(300)는, 상기 지시 신호에 응답하여, 상기 메타데이터를 메모리 셀 어레이(335)에 싱글 레벨 셀 프로그램 방법에 따라 프로그램할 수 있다. 또한, 메모리 장치(300)는, 상기 지시 신호에 응답하여, 도 2부터 도 18을 참조하여 설명한 바와 같이, 상기 메타데이터에 대한 읽기 검증을 수행할 수 있다.
도 22는 랜더마이즈된 데이터를 생성할 수 있는 도 1a, 도 1b 또는 도 21에 도시된 메모리 컨트롤러의 블록도이다.
도 1a, 도 1b, 도 21, 및 도 22를 참조하면, 각 메모리 컨트롤러(260 또는 262)는 랜더마이저(randomizer; 261)를 포함할 수 있다. 랜더마이저(261)는 랜덤 시퀀스 발생기(261-1)와 논리 게이트(261-2)를 포함할 수 있다.
랜덤 시퀀스 발생기(261-1)는 씨드(seed)를 이용하여 랜덤 시퀀스(random sequence; RS)를 생성할 수 있다. 논리 게이트(261-2)는 랜덤 시퀀스(RS)와 입력 데이터(DI)를 연산하여 랜더마이즈된 데이터(randomized data; RDO)를 생성할 수 있다. 실시 예들에 따라, 논리 게이트(261-2)는 배타 논리합(Exclusive OR) 게이트로 구현될 수 있으나 이에 한정되는 것은 아니다.
랜더마이저(261)는, 입력 데이터(DI)에 포함된 데이터 "1"의 개수와 데이터 "0"의 개수를 확률적으로 일정하게 하기 위해, 입력 데이터(DI)를 무작위로 변경하는 기능을 수행할 수 있다.
메모리 집적도의 향상은 메모리 셀 어레이(335)에 포함된 메모리 셀들 사이의 간섭(interference)를 증가시킬 수 있다. 즉, 인접하는 메모리 셀들 각각의 상태(예컨대, 데이터 값)에 따라 간섭은 증가하거나 감소할 수 있다. 상기 데이터 값은 데이터 1 또는 데이터 0을 포함할 수 있다.
랜덤 데이터(즉, 랜더마이즈된 데이터)가 인접하는 메모리 셀들에 저장되면, 상기 메모리 셀들에 저장된 데이터 값들(즉, 데이터 패턴들) 사이의 간섭은 최소화될 수 있다.
플래시 메모리 셀들 사이에는 프로그램 전압 디스터번스(program voltage disturbance), 패스 전압 디스터번스(pass voltage disturbance), 플로팅 폴리 게이트들(floating poly gates) 사이의 커플링(coupling), 및/또는 백 패턴 디펜던시 (back pattern dependency) 등의 간섭이 존재할 수 있다.
랜더마이저(261)는 랜덤 시퀀스(RS)를 이용하여 입력 데이터(DI)를 랜더마이즈할 수 있으므로, 앞에서 설명한 플래시 메모리 셀들 사이의 간섭을 최소화할 수 있다. 따라서, 메모리 장치(300)의 신뢰도는 향상될 수 있다. 랜더마이저(261)에 의해 랜더마이즈된 데이트(RDO)는 해당 채널(CH1 또는 CH2)을 통해 해당 웨이(WAY1 또는 WAY2)를 통해 해당 메모리 장치(300)로 전송될 수 있다.
다른 실시 예들에 따라, 랜덤 데이터(즉, 랜더마이즈된 데이터)는 메모리 장치(300)의 내부에서 생성될 수 있다.
도 23은 도 1a 또는 도 1b 도시된 메모리 장치의 또 다른 실시 예를 나타내는 블록도이다.
도 1a, 도 1b, 및 도 23을 참조하면, 예시적으로 도시된 메모리 장치(300D)는 어드레스 레지스터/카운터(310), 프로그램/이레이즈 컨트롤러(315), 명령 인터페이스 로직 회로(320), 명령 레지스터(325), 데이터 레지스터(330), 메모리 셀 어레이(335), 페이지 버퍼(340), X-디코더(345), Y-디코더(350), 카운터/레지스터 (361), 기준 값 레지스터(375), 레지스터(381), 비교기(85), 입출력 버퍼(390), 및 입출력 패드들(IO0~IO7)을 포함할 수 있다.
컨트롤러(210A 또는 210B)는 메모리 셀 어레이(335)에 프로그램될 데이터의 값들에 해당하는 온-셀들의 개수(다른 실시 예에 따라, 오프-셀들의 개수)를 기준 값으로 결정하고, 결정된 기준 값을 기준 값 레지스터(375)에 프로그램 또는 설정할 수 있다.
메모리 장치(300D)의 페이지 버퍼(340)는 상기 데이터를 메모리 셀 어레이 (355)의 선택된 불휘발성 메모리 셀들에 프로그램할 수 있다.
메모리 장치(300D) 내부에서 수행되는 내부 읽기 검증 작동을 수행하기 위해, 페이지 버퍼(340)는 상기 선택된 불휘발성 메모리 셀들에 프로그램된 데이터를 리드할 수 있다.
상기 내부 읽기 검증 작동 동안, 카운터/레지스터(361)는, 상기 선택된 불휘발성 메모리 셀들로부터 리드된 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)에 기초하여, 상기 선택된 불휘발성 메모리 셀들 중에서 온-셀들(ON)의 개수(다른 실시 예에 따라 오프-셀들(OFF)의 개수)를 카운트하고, 카운트 결과에 해당하는 카운트 값(CNT)을 생성하여 래치하고, 래치된 카운트 값(CNT)을 레지스터 (381)에 저장할 수 있다.
기준 값 레지스터(375)는 입출력 버퍼(390)로부터 출력되고 온-셀들의 개수에 상응하는 기준 값을 수신하고 저장할 수 있다.
비교기(385)는 기준 값 레지스터(375)로부터 전송된 기준 값(REF)과 레지스터(381)로부터 출력된 카운트 값(CNT)을 비교할 수 있다.
기준 값(REF)과 카운트 값(CNT)이 동일할 때(또는 기준 값(REF)과 카운트 값 (CNT)의 차이가 일정 범위의 내에 존재할 때), 비교기(385)는 선택된 불휘발성 메모리 셀들에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 지시하는 제1상태를 갖는 상태 신호(STATUS)를 생성하고 이를 입출력 버퍼(390)로 전송할 수 있다.
입출력 버퍼(390)는 제1상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제1상태를 갖는 상태 신호(STATUS)에 기초하여, 선택된 불휘발성 메모리 셀들에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되었음을 알 수 있다.
기준 값(REF)과 카운트 값(CNT)이 다를 때(또는 기준 값(REF)과 카운트 값 (CNT)의 차이가 상기 일정 범위의 밖에 존재할 때), 비교기(385)는 선택된 불휘발성 메모리 셀들에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 지시하는 제2상태를 갖는 상태 신호(STATUS)를 생성하고 이를 입출력 버퍼(390)로 전송할 수 있다.
입출력 버퍼(390)는 제2상태를 갖는 상태 신호(STATUS)를 입출력 패드들 (IO0~IO7) 중에서 적어도 하나를 통해 컨트롤러(210A0 또는 210B)로 전송할 수 있다. 따라서, 컨트롤러(210A 또는 210B)는, 제2상태를 갖는 상태 신호(STATUS)에 기초하여, 상기 선택된 불휘발성 메모리 셀들에 데이터(예컨대, 메타데이터 또는 랜더마이즈된 메타데이터)가 성공적으로 프로그램되지 않음을 알 수 있다.
따라서, 컨트롤러(210A 또는 210B)는 메모리 장치(300D)로부터 내부 읽기 검증 대상 데이터를 리드하고, 리드된 데이터에 대한 내부 읽기 검증을 수행할 수 있다.
본 명세서에는 두 개의 입출력 버퍼들을 이용하여 메모리 셀 어레이(335)의 불휘발성 메모리 셀들에 프로그램된 데이터와 관련된 제1데이터와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터의 차이에 기초하여 차이 값을 생성하는 방법이 설명되었으나, 본 발명의 기술적 사상은 메모리 장치 (300) 내에서 두 개의 페이지 버퍼들 또는 상기 제1데이터를 저장하는 저장 장치와 제2데이터를 저장하는 장치를 이용하여 상기 차이 값을 생성하는 방법에 적용될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A, 100B: 데이터 처리 시스템
130: 호스트
200A, 200B: 데이터 저장 장치
210A, 210B: 컨트롤러
260, 262: 메모리 컨트롤러
300, 300A, 300B, 300C, 300D: 메모리 장치
335: 메모리 셀 어레이
340: 페이지 버퍼
355: 온-셀 카운터
360: 오프-셀 카운터
370: 감산기
375: 기준 값 레지스터
380: 차이 값 레지스터
385: 비교기
391: 제1입출력 버퍼/제1버퍼
392: 제2입출력 버퍼/제2버퍼
393: 제3입출력 버퍼/제3버퍼
395: 데이터 비교기

Claims (20)

  1. 데이터를 불휘발성 메모리 셀 어레이의 불휘발성 메모리 셀들에 프로그램하는 단계;
    상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제1데이터와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터의 차이에 기초하여 차이 값을 생성하는 단계;
    상기 차이 값과 기준 값을 비교하는 단계; 및
    상기 차이 값이 상기 기준 값보다 작을 때 상기 데이터가 성공적으로 프로그램되었음을 지시하는 상태 신호를 생성하고, 상기 상태 신호를 컨트롤러로 전송하는 단계를 포함하는 메모리 장치의 작동 방법.
  2. 제1항에 있어서,
    상기 데이터는 상기 컨트롤러와 상기 메모리 장치 중에서 어느 하나에 의해 랜더마이즈된 데이터인 메모리 장치의 작동 방법.
  3. 제1항에 있어서, 상기 차이 값을 생성하는 단계는,
    상기 불휘발성 메모리 셀들로부터 상기 데이터를 리드하는 단계;
    리드된 데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 온-셀들의 개수에 상응하는 상기 제1데이터를 생성하고, 상기 리드된 데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 오프-셀들의 개수에 상응하는 상기 제2데이터를 생성하는 단계; 및
    상기 온-셀들의 개수에 상응하는 상기 제1데이터와 상기 오프-셀들의 개수에 상응하는 상기 제2데이터를 이용하여 상기 차이 값을 계산하는 단계를 포함하는 메모리 장치의 작동 방법.
  4. 제1항에 있어서,
    상기 프로그램하는 단계는 제1버퍼를 이용하여 상기 데이터를 상기 불휘발성 메모리 셀들에 프로그램하고,
    상기 제1데이터는 상기 제1버퍼에 저장된 상기 데이터가 제2버퍼로 복사된 데이터이고,
    상기 제2데이터는 상기 불휘발성 메모리 셀들로부터 리드되고 상기 제1버퍼에 저장된 데이터이고,
    상기 차이 값은 상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제1버퍼에 저장된 상기 제2데이터의 값들 사이의 비트-단위 차이들의 개수를 나타내는 메모리 장치의 작동 방법.
  5. 제1항에 있어서,
    상기 프로그램하는 단계는 제1버퍼를 이용하여 상기 데이터를 상기 불휘발성 메모리 셀들에 프로그램하고,
    상기 제1데이터는 상기 제1버퍼에 저장된 데이터이고,
    상기 제2데이터는 상기 불휘발성 메모리 셀들로부터 리드되고 상기 제2버퍼에 저장된 데이터이고,
    상기 차이 값은 상기 제1버퍼에 저장된 상기 제1데이터의 값들과 상기 제2버퍼에 저장된 상기 제2데이터의 값들 사이의 비트-단위 차이들의 개수를 나타내는 메모리 장치의 작동 방법.
  6. 제1항에 있어서,
    상기 프로그램하는 단계는 제1버퍼를 이용하여 상기 데이터를 상기 불휘발성 메모리 셀들에 프로그램하고,
    상기 제1데이터는 상기 제1버퍼에 저장된 상기 데이터가 제2버퍼로 복사된 데이터이고,
    상기 제2데이터는 상기 불휘발성 메모리 셀들로부터 리드되고 제3버퍼에 저장된 데이터이고,
    상기 차이 값은 상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제3버퍼에 저장된 상기 제2데이터의 값들 사이의 비트-단위 차이들의 개수를 나타내는 메모리 장치의 작동 방법.
  7. 제1항에 있어서,
    상기 프로그램하는 단계는 제2버퍼를 이용하여 상기 데이터를 상기 불휘발성 메모리 셀들에 프로그램하고,
    상기 제1데이터는 제1버퍼로부터 상기 제2버퍼로 복사된 데이터이고,
    상기 제2데이터는 상기 불휘발성 메모리 셀들로부터 리드되고 제3버퍼에 저장된 데이터이고,
    상기 차이 값은 상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제3버퍼에 저장된 상기 제2데이터의 값들 사이의 비트-단위 차이들의 개수를 나타내는 메모리 장치의 작동 방법.
  8. 제1항에 있어서,
    상기 기준 값은 상기 컨트롤러에 의해 상기 메모리 장치에 프로그램된 메모리 장치의 작동 방법.
  9. 제1항에 있어서,
    상기 기준 값은 상기 불휘발성 메모리 셀들에 대한 프로그램/이레이즈 싸이클들과 리드 카운트 중에서 적어도 하나에 따라 결정되는 메모리 장치의 작동 방법.
  10. 제1항에 있어서,
    상기 데이터는 상기 메모리 장치의 작동과 관련된 메타데이터이고,
    상기 불휘발성 메모리 셀들 각각이 2-비트 이상의 정보를 저장하는 멀티-레벨 셀일때, 상기 메타데이터는 싱글-레벨 셀 프로그램 방법으로 상기 불휘발성 메모리 셀들에 저장되는 메모리 장치의 작동 방법.
  11. 제1항에 있어서,
    상기 불휘발성 메모리 셀들은 3차원 메모리 셀 어레이에 포함되고, 상기 상기 불휘발성 메모리 셀들 각각은 전하 트랩 레이어를 포함하는 메모리 장치의 작동 방법.
  12. 컨트롤러로부터 출력된 데이터를 프로그램하는 불휘발성 메모리 셀들을 포함하는 불휘발성 메모리 셀 어레이;
    상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제1데이터와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터의 차이에 기초하여 차이 값을 생성하는 차이 값 생성 회로;
    기준 값을 저장하는 레지스터; 및
    상기 차이 값과 상기 레지스터에 저장된 상기 기준 값을 비교하고, 상기 차이 값이 상기 기준 값보다 작을 때 상기 데이터가 성공적으로 프로그램되었음을 지시하는 상태 신호를 생성하는 비교기를 포함하는 메모리 장치.
  13. 제12항에 있어서, 상기 차이 값 생성 회로는,
    상기 불휘발성 메모리 셀들로부터 리드된 상기 데이터를 저장하는 페이지 버퍼;
    상기 페이지 버퍼에 저장된 상기 데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 온-셀들의 개수에 상응하는 상기 제1데이터를 생성하는 온-셀 카운터;
    상기 페이지 버퍼에 저장된 상기 데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 오프-셀들의 개수에 상응하는 상기 제2데이터를 생성하는 오프-셀 카운터; 및
    상기 온-셀들의 개수에 상응하는 상기 제1데이터와 상기 오프-셀들의 개수에 상응하는 상기 제2데이터를 이용하여 상기 차이 값을 계산하는 감산기를 포함하는 메모리 장치.
  14. 제12항에 있어서, 상기 차이 값 생성 회로는,
    상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 상기 제1데이터를 저장하는 제1버퍼;
    상기 제1버퍼로부터 복사된 상기 제1데이터를 저장하는 제2버퍼; 및
    상기 제2버퍼로부터 출력된 상기 제1데이터의 값들과, 상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 상기 제1버퍼로부터 출력된 상기 제2데이터의 값들 사이의 차이들의 개수를 계산하고, 상기 차이 값을 생성하는 데이터 비교기를 포함하는 메모리 장치.
  15. 제12항에 있어서, 상기 차이 값 생성 회로는,
    상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 상기 제1데이터를 저장하는 제1버퍼;
    상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 제2버퍼; 및
    상기 제1버퍼에 저장된 상기 제1데이터의 값들과 상기 제2버퍼에 저장된 상기 제2데이터의 값들 사이의 차이들의 개수를 계산하고, 상기 차이 값을 생성하는 데이터 비교기를 포함하는 메모리 장치.
  16. 제12항에 있어서, 상기 차이 값 생성 회로는,
    상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 상기 제1데이터를 저장하는 제1버퍼;
    상기 제1버퍼로부터 복사된 상기 제1데이터를 저장하는 제2버퍼;
    상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 제3버퍼; 및
    상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제3버퍼에 저장된 상기 제2데이터의 값들과의 차이들의 개수를 계산하고, 상기 차이 값을 생성하는 데이터 비교기를 포함하는 메모리 장치.
  17. 제12항에 있어서, 상기 차이 값 생성 회로는,
    상기 제1데이터를 수신하는 제1버퍼;
    상기 제1버퍼로부터 복사되고 상기 불휘발성 메모리 셀들에 프로그램될 상기 제1데이터를 저장하는 제2버퍼;
    상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 제3버퍼; 및
    상기 제2버퍼에 저장된 상기 제1데이터의 값들과 상기 제3버퍼에 저장된 상기 제2데이터의 값들과의 차이들의 개수를 계산하고, 상기 차이 값을 생성하는 데이터 비교기를 포함하는 메모리 장치.
  18. 컨트롤러; 및
    상기 컨트롤러에 접속된 메모리 장치를 포함하고,
    상기 메모리 장치는,
    상기 컨트롤러로부터 출력된 데이터가 프로그램되는 불휘발성 메모리 셀들을 포함하는 불휘발성 메모리 셀 어레이;
    상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제1데이터와 상기 불휘발성 메모리 셀들에 프로그램된 상기 데이터와 관련된 제2데이터의 차이에 기초하여 차이 값을 생성하는 차이 값 생성 회로;
    기준 값을 저장하는 레지스터; 및
    상기 차이 값과 상기 레지스터에 저장된 상기 기준 값을 비교하고, 상기 차이 값이 상기 기준 값보다 작을 때 상기 데이터가 성공적으로 프로그램되었음을 지시하는 상태 신호를 생성하는 비교 회로를 포함하는 메모리 시스템.
  19. 제18항에 있어서, 상기 차이 값 생성 회로는,
    상기 불휘발성 메모리 셀들로부터 리드된 상기 제2데이터를 저장하는 페이지 버퍼;
    상기 페이지 버퍼에 저장된 상기 제2데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 온-셀들의 개수에 상응하는 상기 제1데이터를 생성하는 온-셀 카운터;
    상기 페이지 버퍼에 저장된 상기 제2데이터에 기초하여 상기 불휘발성 메모리 셀들 중에서 오프-셀들의 개수에 상응하는 상기 제2데이터를 생성하는 오프-셀 카운터; 및
    상기 온-셀들의 개수에 상응하는 상기 제1데이터와 상기 오프-셀들의 개수에 상응하는 상기 제2데이터로부터 상기 차이 값을 계산하는 감산기를 포함하는 메모리 시스템.
  20. 제18항에 있어서,
    상기 컨트롤러는 입력 데이터를 랜더마이즈하고, 랜더마이즈된 데이터를 상기 데이터로서 생성하는 랜더마이저를 포함하는 메모리 시스템.
KR1020150018715A 2015-02-06 2015-02-06 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템 KR102292217B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150018715A KR102292217B1 (ko) 2015-02-06 2015-02-06 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템
US14/997,888 US9990149B2 (en) 2015-02-06 2016-01-18 Memory device for internally performing read-verify operation, method of operating the same, and memory system including the same
CN201610083063.7A CN105869677B (zh) 2015-02-06 2016-02-06 用于内部执行读取-验证操作的存储器装置及其操作方法和存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150018715A KR102292217B1 (ko) 2015-02-06 2015-02-06 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20160096969A true KR20160096969A (ko) 2016-08-17
KR102292217B1 KR102292217B1 (ko) 2021-08-24

Family

ID=56566765

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150018715A KR102292217B1 (ko) 2015-02-06 2015-02-06 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (1) US9990149B2 (ko)
KR (1) KR102292217B1 (ko)
CN (1) CN105869677B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157646B2 (en) * 2016-10-06 2018-12-18 SK Hynix Inc. Latch control signal generation circuit to reduce row hammering
US11158381B2 (en) 2017-10-12 2021-10-26 Samsung Electronics Co., Ltd. Non-volatile memory device and operating method thereof
KR102336662B1 (ko) 2017-10-12 2021-12-07 삼성전자 주식회사 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치의 동작 방법
US11537514B2 (en) * 2018-02-27 2022-12-27 SK Hynix Inc. Data storage device and operating method thereof
JP2020198577A (ja) * 2019-06-04 2020-12-10 キオクシア株式会社 メモリシステム
CN110908599B (zh) * 2019-09-27 2021-02-02 珠海博雅科技有限公司 数据的写入方法与写入系统
WO2023133877A1 (en) * 2022-01-17 2023-07-20 Yangtze Memory Technologies Co., Ltd. Redundant data protection for nand memory using self-verification by internal firmware
CN114586102A (zh) 2022-01-20 2022-06-03 长江存储科技有限责任公司 使用内部固件执行自验证的nand存储器中的数据保护

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080209110A1 (en) * 2007-02-22 2008-08-28 Mosaid Technologies Incorporated Apparatus and method of page program operation for memory devices with mirror back-up of data
US20110051514A1 (en) * 2009-08-27 2011-03-03 Samsung Electronics Co., Ltd. Nonvolatile memory device, memory system incorporating same, and method of operating same
KR20140071135A (ko) * 2012-12-03 2014-06-11 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20140100899A (ko) * 2013-02-07 2014-08-18 시게이트 테크놀로지 엘엘씨 스케줄링된 검증을 보류하는 비휘발성 기록 버퍼 데이터 유지
KR20140103755A (ko) * 2013-02-19 2014-08-27 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법, 메모리 컨트롤러를 포함하는 메모리 시스템
US20150179275A1 (en) * 2013-12-19 2015-06-25 Sandisk Technologies Inc. Asymmetric state detection for non-volatile storage

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349056B1 (en) 2000-12-28 2002-02-19 Sandisk Corporation Method and structure for efficient data verification operation for non-volatile memories
JP4063615B2 (ja) 2002-08-30 2008-03-19 Necエレクトロニクス株式会社 不揮発性メモリおよびその書き込み処理方法
JP4421925B2 (ja) 2004-03-30 2010-02-24 三星電子株式会社 不揮発性半導体記憶装置
KR100874915B1 (ko) 2007-01-15 2008-12-19 삼성전자주식회사 용도 변환이 가능한 검증 데이터 버퍼를 구비하는 플래시 메모리 장치, 및 이를 이용하는 프로그램 및 검증 방법
CN101315812A (zh) * 2008-03-20 2008-12-03 上海交通大学 基于并口的flash存储器在线编程方法
KR101532754B1 (ko) * 2008-09-22 2015-07-02 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
US8332578B2 (en) * 2009-07-31 2012-12-11 Intel Corporation Method and system to improve the performance of a multi-level cell (MLC) NAND flash memory
US8400854B2 (en) * 2009-09-11 2013-03-19 Sandisk Technologies Inc. Identifying at-risk data in non-volatile storage
KR101802815B1 (ko) 2011-06-08 2017-12-29 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 프로그램 방법
US8593853B2 (en) * 2010-03-30 2013-11-26 Panasonic Corporation Nonvolatile storage device and method for writing into the same
US8659957B2 (en) 2011-03-07 2014-02-25 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and method of driving semiconductor device
JP2012190359A (ja) * 2011-03-11 2012-10-04 Toshiba Corp キャッシュシステムおよび処理装置
JP5306399B2 (ja) 2011-03-18 2013-10-02 株式会社東芝 不揮発性半導体メモリ
JP5238859B2 (ja) * 2011-07-29 2013-07-17 株式会社Genusion 不揮発性半導体記憶装置およびその読み書き制御方法
US9007843B2 (en) 2011-12-02 2015-04-14 Cypress Semiconductor Corporation Internal data compare for memory verification
US20130254463A1 (en) * 2012-03-23 2013-09-26 Kabushiki Kaisha Toshiba Memory system
KR20130129700A (ko) 2012-05-21 2013-11-29 에스케이하이닉스 주식회사 비휘발성 메모리 장치 및 그의 구동방법
US9268681B2 (en) * 2012-08-30 2016-02-23 Apple Inc. Heterogeneous data paths for systems having tiered memories
US9349476B2 (en) 2013-02-21 2016-05-24 Sandisk Technologies Inc. Methods, systems, and computer readable media for early detection of potential flash failures using an adaptive system level algorithm based on flash program verify
US9508736B2 (en) * 2013-10-17 2016-11-29 Cypress Semiconductor Corporation Three-dimensional charge trapping NAND cell with discrete charge trapping film

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080209110A1 (en) * 2007-02-22 2008-08-28 Mosaid Technologies Incorporated Apparatus and method of page program operation for memory devices with mirror back-up of data
US20110051514A1 (en) * 2009-08-27 2011-03-03 Samsung Electronics Co., Ltd. Nonvolatile memory device, memory system incorporating same, and method of operating same
KR20140071135A (ko) * 2012-12-03 2014-06-11 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20140100899A (ko) * 2013-02-07 2014-08-18 시게이트 테크놀로지 엘엘씨 스케줄링된 검증을 보류하는 비휘발성 기록 버퍼 데이터 유지
KR20140103755A (ko) * 2013-02-19 2014-08-27 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법, 메모리 컨트롤러를 포함하는 메모리 시스템
US20150179275A1 (en) * 2013-12-19 2015-06-25 Sandisk Technologies Inc. Asymmetric state detection for non-volatile storage

Also Published As

Publication number Publication date
US9990149B2 (en) 2018-06-05
US20160231953A1 (en) 2016-08-11
CN105869677A (zh) 2016-08-17
CN105869677B (zh) 2021-05-11
KR102292217B1 (ko) 2021-08-24

Similar Documents

Publication Publication Date Title
KR102292217B1 (ko) 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템
US9043517B1 (en) Multipass programming in buffers implemented in non-volatile data storage systems
US10789125B2 (en) Memory system and method
US10714186B2 (en) Method and apparatus for dynamically determining start program voltages for a memory device
KR102284658B1 (ko) 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 상기 비휘발성 메모리 장치의 동작 방법
KR101716716B1 (ko) 플래그 셀들을 갖는 플래시 메모리 장치 및 그것의 프로그램 동작 방법
KR20130033017A (ko) 불휘발성 메모리 장치의 동작 방법
KR101949987B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20130028589A (ko) 비휘발성 메모리 장치, 그 데이터 판독 방법 및 기록 매체
KR102253592B1 (ko) 초기 문턱 전압 분포 변화를 보상할 수 있는 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템
US11210016B2 (en) Method of operating memory controller and memory system, and the memory system
KR20190044968A (ko) 메모리 시스템 및 그것의 동작 방법
US11023138B2 (en) Management operations in predictable latency mode
KR20130052811A (ko) 불휘발성 메모리 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치
CN112395210A (zh) 存储器系统和操作存储器系统的方法
CN111177039A (zh) 数据存储设备、其操作方法及包括其的存储系统
US11079967B2 (en) Memory system, memory controller and operating method of memory controller
KR20210012123A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR20230160620A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
KR102303653B1 (ko) 메모리 장치 및 이를 포함하는 메모리 시스템
CN111538685A (zh) 使用固件的存储器装置策略执行
US20240143185A1 (en) Storage device writing data on the basis of temperatures of memory dies and method thereof
KR20140030569A (ko) 불휘발성 메모리 장치 및 그것의 동작 방법
US20240152276A1 (en) Storage device determining priorities on the basis of temperatures of memory dies and temperature variations, and method thereof
US20240143168A1 (en) Storage device controlling garbage collection or wear leveling on the basis of timestamp, and method thereof

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