KR20150109705A - 메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법 - Google Patents

메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법 Download PDF

Info

Publication number
KR20150109705A
KR20150109705A KR1020140032837A KR20140032837A KR20150109705A KR 20150109705 A KR20150109705 A KR 20150109705A KR 1020140032837 A KR1020140032837 A KR 1020140032837A KR 20140032837 A KR20140032837 A KR 20140032837A KR 20150109705 A KR20150109705 A KR 20150109705A
Authority
KR
South Korea
Prior art keywords
program
memory device
data
memory
error
Prior art date
Application number
KR1020140032837A
Other languages
English (en)
Other versions
KR102221752B1 (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 KR1020140032837A priority Critical patent/KR102221752B1/ko
Priority to US14/556,107 priority patent/US9589661B2/en
Publication of KR20150109705A publication Critical patent/KR20150109705A/ko
Application granted granted Critical
Publication of KR102221752B1 publication Critical patent/KR102221752B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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
    • 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/5642Sensing 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/10Programming or data input circuits
    • G11C16/12Programming voltage switching 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/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 일 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 메모리 장치의 프로그램 방법은 메모리 장치에 포함되는 복수의 메모리 셀들을 데이터에 상응하는 상태들로 프로그램하는 단계, 복수의 메모리 셀들로부터 독출되는 코드 워드에 기초하여 에러 체크 결과를 제공하는 에러 체크 단계 및 에러 체크 결과에 기초하여 복수의 메모리 셀들을 프로그램하는 프로그램 시간을 조절하는 단계를 포함한다. 프로그램된 데이터에 대한 에러 결과에 기초하여 메모리 장치의 프로그램 시간을 조절하여 메모리 장치를 효율적으로 사용할 수 있다.

Description

메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법{METHOD OF PROGRAMMING MEMORY DEVICE AND METHOD OF READING DATA INCLUDING THE SAME}
본 발명은 메모리 장치에 관한 것으로서, 보다 상세하게는 메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법에 관한 것이다.
플래시 메모리(Flash Memory)는 전기적으로 데이터를 소거(erase)하고 다시 데이터를 프로그램(program)할 수 있는 비휘발성 메모리이다. 플래시 메모리에서 프로그램 동작 및 소거 동작을 반복하면 플래시 메모리의 성능이 저하된다.
따라서 플래시 메모리에서 P/E cycle(program/erase cycle)초기에는 빠른 속도로 프로그램 동작을 수행할 수 있지만 P/E cycle 후기에는 플래시 메모리의 성능이 저하되어 느린 속도로 프로그램 동작을 수행한다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 프로그램된 데이터에 대한 에러 결과에 기초하여 메모리 장치의 프로그램 시간을 조절하여 메모리 장치를 효율적으로 사용할 수 있는 메모리 장치의 프로그램 방법을 제공하는 것이다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 프로그램된 데이터에 대한 에러 결과에 기초하여 메모리 장치의 프로그램 시간을 조절하여 메모리 장치를 효율적으로 사용할 수 있는 메모리 장치의 데이터 독출 방법을 제공하는 것이다.
본 발명의 일 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 메모리 장치의 프로그램 방법은 메모리 장치에 포함되는 복수의 메모리 셀들을 데이터에 상응하는 상태들로 프로그램하는 단계, 상기 복수의 메모리 셀들로부터 독출되는 코드 워드에 기초하여 에러 체크 결과를 제공하는 에러 체크 단계 및 상기 에러 체크 결과에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간을 조절하는 단계를 포함한다.
예시적인 실시예에 있어서, 상기 코드 워드는 상기 프로그램 데이터 및 상기 프로그램 데이터에 상응하는 패리티 데이터를 포함하고, 상기 패리티 데이터에 기초하여 상기 프로그램 데이터의 에러를 체크할 수 있다.
예시적인 실시예에 있어서, 상기 에러 체크 단계 및 상기 프로그램 시간을 조절하는 단계는 상기 복수의 메모리 셀들을 데이터에 상응하는 상태들로 프로그램하는 단계 직후에 수행될 수 있다.
예시적인 실시예에 있어서, 상기 에러 체크 단계 및 상기 프로그램 시간을 조절하는 단계는 상기 메모리 장치의 독출 동작 중에 수행될 수 있다.
예시적인 실시예에 있어서, 상기 메모리 장치가 프로그램 검증 횟수만큼 프로그램 동작을 수행한 후, 상기 에러 체크 단계 및 상기 프로그램 시간을 조절하는 단계가 수행될 수 있다.
예시적인 실시예에 있어서, 상기 메모리 장치가 소거 검증 횟수만큼 소거 동작을 수행한 후, 상기 에러 체크 단계 및 상기 프로그램 시간을 조절하는 단계가 수행될 수 있다.
예시적인 실시예에 있어서, 상기 메모리 장치에 포함되는 블록 별로 상기 에러 체크 단계의 수행 횟수를 달리하여 상기 프로그램 시간을 조절할 수 있다.
예시적인 실시예에 있어서, 상기 복수의 메모리 셀들의 외곽에 위치하는 외곽 블록에 대한 에러 체크 단계의 수행 횟수가 일정한 시간 간격 동안 상기 복수의 메모리 셀들의 중앙에 위치하는 중앙 블록에 대한 에러 체크 단계의 수행 횟수보다 많을 수 있다.
예시적인 실시예에 있어서, 상기 메모리 장치에 저장되는 프로그램에 따라 상기 에러 체크 단계의 수행 횟수를 달리하여 상기 프로그램 시간을 조절할 수 있다.
예시적인 실시예에 있어서, 상기 에러 체크 결과는 상기 복수의 메모리 셀들 중 에러 셀들이 차지하는 비율에 해당하는 비트 에러 율일 수 있다.
예시적인 실시예에 있어서, 상기 비트 에러 율이 증가함에 따라 상기 프로그램 시간을 증가시킬 수 있다.
예시적인 실시예에 있어서, 상기 비트 에러 율이 상한 비트 에러 율 이상인 경우, 상기 프로그램 시간을 단위 시간만큼 증가시킬 수 있다.
예시적인 실시예에 있어서, 상기 프로그램 시간을 상기 단위 시간만큼 증가시킨 후, 상기 비트 에러 율이 상기 상한 비트 에러 율 이상인 경우, 상기 프로그램 시간을 상기 단위 시간만큼 더 증가시킬 수 있다.
예시적인 실시예에 있어서, 상기 비트 에러 율이 하한 비트 에러 율 이하인 경우, 상기 프로그램 시간을 단위 시간만큼 감소시킬 수 있다.
본 발명의 일 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 메모리 장치의 데이터 독출 방법은 메모리 장치에 포함되는 복수의 메모리 셀들을 데이터에 상응하는 상태들로 프로그램하는 단계, 상기 복수의 메모리 셀들로부터 독출되는 코드워드에 기초하여 에러 정정하고 에러 정정 데이터 및 에러 체크 결과를 제공하는 에러 체크 단계, 상기 에러 체크 결과에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간을 조절하는 단계 및 상기 에러 정정 데이터를 독출하는 단계를 포함한다.
도 1은 본 발명의 실시예들에 따른 메모리 장치의 프로그램 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 프로그램 방법을 수행하는 메모리 장치를 나타내는 블록도이다.
도 3은 도 2의 메모리 장치에 포함되는 메모리 셀 어레이의 일 예를 나타내는 도면이다.
도 4는 도 2의 메모리 장치에 포함되는 메모리 셀 어레이의 다른 예를 나타내는 도면이다.
도 5는 도 2의 메모리 장치에 포함되는 메모리 셀 어레이의 또 다른 예을 나타내는 도면이다.
도 6은 프로그램 소거 사이클에 따른 비트 에러 율을 나타내는 도면이다.
도 7은 도 1의 메모리 장치의 프로그램 방법을 설명하기 위한 코드 워드의 일 예를 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 메모리 장치의 프로그램 방법을 설명하기 위한 도면이다.
도 9는 메모리 장치의 프로그램 방법에서 사용되는 프로그램 검증 횟수를 설명하기 위한 도면이다.
도 10은 메모리 장치의 프로그램 방법에서 사용되는 소거 검증 횟수를 설명하기 위한 도면이다.
도 11은 도 2의 메모리 장치에 포함되는 블록들의 일 예를 나타내는 도면이다.
도 12는 도 2의 메모리 장치에 포함되는 블록들의 다른 예를 나타내는 도면이다.
도 13은 저성능 플래시 메모리의 프로그램 소거 사이클에 따른 비트 에러 율을 나타내는 도면이다.
도 14는 고성능 플래시 메모리의 프로그램 소거 사이클에 따른 비트 에러 율을 나타내는 도면이다.
도 15는 플래시 메모리의 환경 변화 및 프로그램 소거 사이클에 따른 비트 에러 율을 나타내는 도면이다.
도 16은 본 발명의 실시예들에 따른 메모리 장치의 데이터 독출 방법을 나타내는 순서도이다.
도 17은 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 18은 본 발명의 실시에들에 따른 메모리 시스템이 메모리 카드에 응용된 예를 나타내는 도면이다.
도 19는 본 발명의 실시에들에 따른 메모리 시스템이 솔리드 스테이트 드라이브에 응용된 예를 나타내는 도면이다.
도 20은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되지 않는다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 메모리 장치의 프로그램 방법을 나타내는 순서도이고, 도 2는 본 발명의 실시예들에 따른 프로그램 방법을 수행하는 메모리 장치를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 메모리 장치(100)는 플래시 메모리 장치일 수 있으며, 메모리 셀 어레이(110), 페이지 버퍼부(120), 로우 디코더(130), 전압 발생기(140) 및 제어 회로(150)를 포함한다.
메모리 셀 어레이(110)는 복수의 워드 라인들 및 복수의 비트 라인들에 각각 연결되는 복수의 메모리 셀들을 포함한다. 상기 복수의 메모리 셀들은 각각 NAND 또는 NOR 플래시 메모리 셀들일 수 있으며, 2차원 어레이(array) 구조 또는 3차원 수직 어레이 구조로 배열될 수 있다.
상기 복수의 메모리 셀들은 각각 하나의 데이터 비트를 저장하는 싱글 레벨 메모리 셀(Single Level memory Cell; SLC)들 또는 복수의 데이터 비트들을 저장하는 멀티 레벨 메모리 셀(Multi Level memory Cell; MLC)들일 수 있다. 멀티 레벨 메모리 셀의 경우에 기입 모드에서의 프로그램 방식은 쉐도우 프로그램 방식, 리프로그램 방식 또는 온칩 버퍼드 프로그램 방식과 같은 다양한 프로그램 방식이 적용될 수 있다.
페이지 버퍼부(120)는 상기 복수의 비트 라인들에 연결되고, 메모리 셀 어레이(110)에 프로그램 될 기입 데이터를 저장하거나 혹은 메모리 셀 어레이(110)로부터 감지된 독출 데이터를 저장한다. 즉, 페이지 버퍼부(120)는 플래시 메모리 장치(100)의 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 페이지 버퍼부(120)는 기입 모드에서 기입 드라이버로서 동작하고, 독출 모드에서 감지 증폭기로서 동작할 수 있다.
로우 디코더(130)는 상기 복수의 워드 라인들에 연결되고, 로우 어드레스에 응답하여 상기 복수의 워드 라인들 중 적어도 하나를 선택할 수 있다. 전압 발생기(140)는 제어 회로(150)의 제어에 따라 프로그램 전압, 패스 전압, 검증 전압, 소거 전압 및 독출 전압과 같은 워드 라인 전압들을 생성할 수 있다. 제어 회로(150)는 메모리 셀 어레이(110)에 대한 데이터 저장, 소거 및 독출 동작을 수행하도록 페이지 버퍼부(120), 로우 디코더(130) 및 전압 발생기(140)를 제어할 수 있다.
메모리 장치(100)의 프로그램 방법에서는 메모리 장치(100)에 포함되는 복수의 메모리 셀들을 데이터에 상응하는 상태들로 프로그램한다(S100). 상기 복수의 메모리 셀들로부터 독출되는 코드 워드(cod word, CW)에 기초하여 에러 체크 결과(error check result, ECR)를 제공한다(S300). 상기 복수의 메모리 셀들에 프로그램된 데이터(programmed data, PD)를 검증하기 위하여 프로그램 데이터(PD)가 포함되는 코드 워드(CW)를 독출할 수 있다. 프로그램 데이터(PD)는 복수의 메모리 셀들에 프로그램된 데이터(PD)일 수 있다. 코드 워드(CW)는 프로그램 데이터(PD) 및 패리티 데이터(parity data, PAD)를 포함할 수 있다. 패리티 데이터(PAD)를 이용하여 프로그램 데이터(PD)의 에러 여부를 판단할 수 있다.
상기 복수의 메모리 셀들은 에러 셀(error cell, EC)들을 포함할 수 있다. 에러 체크 결과(ECR)는 상기 복수의 메모리 셀들에 프로그램된 데이터들(PD) 중에 에러 셀(EC)에 프로그램된 데이터(PD)의 비율일 수 있다. 예를 들어 메모리 장치(100)에 포함되는 100개의 메모리 셀들 중 3개의 에러 셀(EC)이 포함되는 경우, 상기 100개의 메모리 셀에 데이터를 프로그램한 후 상기 100개의 메모리 셀로부터 데이터를 독출하면 3개의 데이터에 에러가 발생할 수 있다. 에러 체크 결과(ECR)는 0.03일 수 있다.
에러 체크 결과(ECR)에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간(program time, PT)을 조절한다(S500). 에러 체크 결과(ECR)가 상기 복수의 메모리 셀들에 프로그램된 데이터들(PD) 중에 에러 셀(EC)에 프로그램된 데이터(PD)의 비율에 해당하는 비트 에러 율(bit error rate, BER)로 나타날 수 있다. 에러를 체크한 결과, 비트 에러 율(BER)이 상한 비트 에러 율(upper limit BER, BER_UL) 이상인 경우 프로그램 시간(PT)을 증가시킬 수 있다. 예를 들어 플래시 메모리에서 프로그램/소거 사이클(P/E cycle, PEC) 초기에는 비트 에러 율(BER)이 낮을 수 있다. 플래시 메모리에 프로그램 및 소거 동작을 반복하면서 플래시 메모리의 성능은 저하될 수 있다.
이 경우, 메모리 장치(100)에 프로그램된 데이터(PD)의 에러를 체크하여 에러 체크 결과(ECR)가 상한 비트 에러 율(BER_UL) 이상이면 프로그램 시간(PT)을 증가시킬 수 있다. 기존의 프로그램 방법에서는 일정한 프로그램/소거 사이클(PEC)이 경과하면 에러 체크 결과(ECR)에 관계없이 프로그램 시간(PT)을 증가시켜 메모리 장치(100)는 느린 프로그램 속도(slow program, SP)로 동작될 수 있다. 예를 들어 메모리 장치(100)에 프로그램된 데이터(PD) 중 에러 데이터의 비율을 나타내는 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)보다 낮아서 메모리 장치(100)가 빠른 프로그램 속도(fast program, FP)로도 정상 동작할 수 있음에도 불구하고 일정한 프로그램/소거 사이클(PEC)을 초과한다는 이유만으로 메모리 장치(100)를 느린 프로그램 속도(SP)로 동작시킨다. 따라서 메모리 장치(100)가 빠른 프로그램 속도(FP)로 동작할 수 있음에도 불구하고 느린 프로그램 속도(SP)로 동작함으로 인해서 메모리 장치(100)를 효율적으로 사용하지 못할 수 있다.
본 발명의 실시예에 따른 메모리 장치(100)의 프로그램 방법은 상기 복수의 메모리 셀들로부터 독출되는 코드 워드(CW)에 기초하여 에러 체크 결과(ECR)를 제공하고, 에러 체크 결과(ECR)에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간(PT)을 조절할 수 있다. 따라서 메모리 장치(100)를 효율적으로 사용할 수 있고, 메모리 장치(100)의 프로그램 시간(PT)을 감소시킬 수 있다.
도 3 내지 도 5는 도 2의 메모리 장치에 포함되는 메모리 셀 어레이의 예들을을 나타내는 도면이다.
도 3은 NOR형 플래시 메모리 장치에 포함되는 메모리 셀 어레이의 일 예를 나타내는 회로도이고, 도 4는 NAND형 플래시 메모리 장치에 포함되는 메모리 셀 어레이의 일 예를 나타내는 회로도이며, 도 5는 수직형 플래시 메모리 장치에 포함되는 메모리 셀 어레이의 일 예를 나타내는 회로도이다.
도 3을 참조하면, 메모리 셀 어레이(110a)는 복수의 메모리 셀(MC1)들을 포함할 수 있다. 동일한 열에 배열된 메모리 셀(MC1)들은 비트 라인들(BL(1), ..., BL(m)) 중 하나와 공통 소스 라인(CSL) 사이에 병렬로 배치될 수 있으며, 동일한 행에 배열된 메모리 셀(MC1)들은 워드 라인들(WL(1), WL(2), ..., WL(n)) 중 하나에 공통으로 연결될 수 있다. 예를 들어, 제1 열에 배열된 메모리 셀들은 제1 비트 라인(WL(1))과 공통 소스 라인(CSL) 사이에 병렬로 배치될 수 있다. 제1 행에 배열된 메모리 셀들의 게이트 전극들은 제1 워드 라인(WL(1))에 공통으로 연결될 수 있다. 메모리 셀(MC1)들은 워드 라인들(WL(1), ..., WL(n))에 인가되는 전압의 레벨에 따라 제어될 수 있다. 메모리 셀 어레이(110a)를 포함하는 NOR형 플래시 메모리 장치는 바이트(byte) 단위 또는 워드(word) 단위로 기입 동작 및 독출 동작을 수행하며, 블록(block, 112a) 단위로 소거 동작을 수행할 수 있다.
도 4를 참조하면, 메모리 셀 어레이(110b)는 스트링 선택 트랜지스터(SST)들, 접지 선택 트랜지스터(GST)들 및 메모리 셀(MC2)들을 포함할 수 있다. 스트링 선택 트랜지스터(SST)들은 비트 라인들(BL(1), ..., BL(m))에 연결되고, 접지 선택 트랜지스터(GST)들은 공통 소스 라인(CSL)에 연결될 수 있다. 동일한 열에 배열된 메모리 셀(MC2)들은 비트 라인들(BL(1), ..., BL(m)) 중 하나와 공통 소스 라인(CSL) 사이에 직렬로 배치될 수 있으며, 동일한 행에 배열된 메모리 셀(MC2)들은 워드 라인들(WL(1), WL(2), WL(3), ..., WL(n-1), WL(n)) 중 하나에 공통으로 연결될 수 있다. 즉, 스트링 선택 트랜지스터(SST)들과 접지 선택 트랜지스터(GST)들 사이에 메모리 셀(MC2)들이 직렬로 연결될 수 있으며, 스트링 선택 라인(SSL)과 접지 선택 라인(GSL) 사이에는 16개, 32개 또는 64개의 복수의 워드 라인들이 배열될 수 있다.
스트링 선택 트랜지스터(SST)들은 스트링 선택 라인(SSL)에 연결되어, 스트링 선택 라인(SSL)으로부터 인가되는 전압의 레벨에 따라 제어될 수 있고, 접지 선택 트랜지스터(GST)들은 접지 선택 라인(GSL)에 연결되어, 접지 선택 라인(GSL)으로부터 인가되는 전압의 레벨에 따라 제어될 수 있다. 메모리 셀(MC2)들은 워드 라인들(WL(1), ..., WL(n))에 인가되는 전압의 레벨에 따라 제어될 수 있다.
메모리 셀 어레이(110b)를 포함하는 NAND형 플래시 메모리 장치는 페이지(page, 111b) 단위로 기입 동작 및 독출 동작을 수행하며, 블록(112b) 단위로 소거 동작을 수행할 수 있다. 한편, 실시예에 따라서, 페이지 버퍼들은 각각 짝수 비트 라인과 홀수 비트 라인이 하나씩 연결될 수 있다. 이 경우, 짝수 비트 라인들은 짝수 페이지를 형성하고, 홀수 비트 라인들은 홀수 페이지를 형성하며, 메모리 셀(MC2)들에 대한 기입 동작은 짝수 페이지와 홀수 페이지가 번갈아가며 순차적으로 수행될 수 있다.
도 5를 참조하면, 메모리 셀 어레이(110c)는 수직 구조를 가지는 복수의 스트링(113c)들을 포함할 수 있다. 스트링(113c)은 제2 방향을 따라 복수 개로 형성되어 스트링 열을 형성할 수 있으며, 상기 스트링 열은 제3 방향을 따라 복수 개로 형성되어 스트링 어레이를 형성할 수 있다. 복수의 스트링(113c)들은 비트 라인들(BL(1), ..., BL(m))과 공통 소스 라인(CSL) 사이에 제1 방향을 따라 직렬로 배치되는 접지 선택 트랜지스터(GSTV)들, 메모리 셀(MC3)들 및 스트링 선택 트랜지스터(SSTV)들을 각각 포함할 수 있다.
접지 선택 트랜지스터(GSTV)들은 접지 선택 라인들(GSL11, GSL12, ..., GSLi1, GSLi2)에 각각 연결되고, 스트링 선택 트랜지스터(SSTV)들은 스트링 선택 라인들(SSL11, SSL12, ..., SSLi1, SSLi2)에 각각 연결될 수 있다. 동일한 층에 배열되는 메모리 셀(MC3)들은 워드 라인들(WL(1), WL(2), ..., WL(n-1), WL(n)) 중 하나에 공통으로 연결될 수 있다. 접지 선택 라인들(GSL11, ..., GSLi2) 및 스트링 선택 라인들(SSL11, ..., SSLi2)은 상기 제2 방향으로 연장되며 상기 제3 방향을 따라 복수 개로 형성될 수 있다. 워드 라인들(WL(1), ..., WL(n))은 상기 제2 방향으로 연장되며 상기 제1 방향 및 상기 제3 방향을 따라 복수 개로 형성될 수 있다. 비트 라인들(BL(1), ..., BL(m))은 상기 제3 방향으로 연장되며 상기 제2 방향을 따라 복수 개로 형성될 수 있다. 메모리 셀(MC3)들은 워드 라인들(WL(1), ..., WL(n))에 인가되는 전압의 레벨에 따라 제어될 수 있다.
메모리 셀 어레이(110c)를 포함하는 수직형 플래시 메모리 장치는 NAND 플래시 메모리 셀들을 포함하므로, NAND형 플래시 메모리 장치와 마찬가지로 페이지 단위로 기입 동작 및 독출 동작을 수행하며, 블록 단위로 소거 동작을 수행한다.
실시예에 따라서, 하나의 스트링(113c)에 포함되는 두 개의 스트링 선택 트랜지스터들은 하나의 스트링 선택 라인에 연결되고 하나의 스트링에 포함되는 두 개의 접지 선택 트랜지스터들은 하나의 접지 선택 라인에 연결되도록 구현될 수도 있다. 또한, 실시예에 따라서, 하나의 스트링은 하나의 스트링 선택 트랜지스터 및 하나의 접지 선택 트랜지스터를 포함하여 구현될 수도 있다.
도 6은 프로그램 소거 사이클에 따른 비트 에러 율을 나타내는 도면이다.
도 6을 참조하면, 메모리 장치(100)의 프로그램/소거 사이클(PEC) 초기에는 비트 에러 율(BER)이 낮을 수 있다. 프로그램/소거 사이클(PEC)이 증가함에 따라 비트 에러 율(BER)은 증가할 수 있다. 메모리 장치(100)의 프로그램/소거 사이클(PEC) 초기에는 빠른 프로그램 속도(FP)로 메모리 장치(100)를 동작시킬 수 있다. 프로그램/소거 사이클(PEC)이 증가함에 따라 빠른 프로그램 속도(FP)로 메모리 장치(100)를 동작시키는 경우, 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)을 초과할 수 있다. 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)을 초과하면 메모리 장치(100)는 오동작할 수 있다. 메모리 장치(100)를 정상적으로 동작시키기 위해서 메모리 장치(100)의 프로그램 시간(PT)을 증가시킬 수 있다. 이 경우, 메모리 장치(100)는 프로그램 동작시 느린 프로그램 속도(SP)로 동작될 수 있다.
예를 들어, 프로그램 시간(PT)이 0.9ms인 경우, 프로그램/소거 사이클(PEC)이 증가함에 따라서 비트 에러 율(BER)은 증가할 수 있다. 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)에 도달하는 프로그램/소거 사이클(PEC)은 1K일 수 있다. 프로그램/소거 사이클(PEC)이 1K이상인 경우에도 프로그램 시간(PT)을 0.9ms으로 유지하면 메모리 장치(100)는 오동작할 수 있다. 메모리 장치(100)를 정상적으로 동작시키기 위해서 메모리 장치(100)의 프로그램 시간(PT)을 0.9ms에서 1.1ms로 증가시킬 수 있다. 이 경우, 0.9ms의 프로그램 시간(PT)은 빠른 프로그램 속도(FP)일 수 있고, 1.1ms의 프로그램 시간(PT)은 느린 프로그램 속도(SP)일 수 있다.
프로그램 시간(PT)이 증가하면 프로그램되는 복수의 메모리 셀(MC1, MC2, MC3)들 중에 에러 셀(EC)들이 발생할 가능성이 낮아질 수 있다. 에러 셀(EC)은 메모리 셀에 프로그램되는 데이터의 값과 메모리 셀로부터 독출되는 데이터의 값이 다른 셀일 수 있다. 예를 들어 데이터 1을 메모리 셀에 프로그램한 후 메모리 셀로부터 독출되는 데이터가 1인 경우 해당 메모리 셀은 정상 셀일 수 있다. 데이터 1을 메모리 셀에 프로그램한 후 메모리 셀로부터 독출되는 데이터가 0인 경우 해당 메모리 셀은 에러 셀(EC)일 수 있다. 데이터 0을 메모리 셀에 프로그램한 후 메모리 셀로부터 독출되는 데이터가 0인 경우 해당 메모리 셀은 정상 셀일 수 있다. 데이터 0을 메모리 셀에 프로그램한 후 메모리 셀로부터 독출되는 데이터가 1인 경우 해당 메모리 셀은 에러 셀(EC)일 수 있다.
예를 들어, 프로그램 시간(PT)이 0.9ms에서 1.1 ms으로 변하면 비트 에러 율(BER)은 급격하게 낮아질 수 있다. 이 경우, 프로그램/소거 사이클(PEC)이 증가함에 따라서 비트 에러 율(BER)은 증가할 수 있다. 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)에 도달하는 프로그램/소거 사이클(PEC)은 2K일 수 있다. 프로그램/소거 사이클(PEC)이 2K이상인 경우에도 프로그램 시간(PT)을 1.1ms으로 유지하면 메모리 장치(100)는 오동작할 수 있다. 메모리 장치(100)를 정상적으로 동작시키기 위해서 메모리 장치(100)의 프로그램 시간(PT)을 1.1ms에서 1.3ms로 증가시킬 수 있다. 이 경우, 1.1ms의 프로그램 시간(PT)은 빠른 프로그램 속도(FP)일 수 있고, 1.3ms의 프로그램 시간(PT)은 느린 프로그램 속도(SP)일 수 있다.
에러 체크 결과(ECR)에 기초하여 복수의 메모리 셀(MC1, MC2, MC3)들을 프로그램하는 프로그램 시간(PT)을 조절할 수 있다. 에러 체크 결과(ECR)는 비트 에러 율(BER)일 수 있다. 따라서 메모리 장치(100)를 효율적으로 사용할 수 있고, 메모리 장치(100)의 프로그램 시간(PT)을 감소시킬 수 있다.
도 7은 도 1의 메모리 장치의 프로그램 방법을 설명하기 위한 코드 워드의 일 예를 나타내는 도면이다.
도 7을 참조하면, 코드 워드(CW)는 프로그램 데이터(PD) 및 패리티 데이터(PAD)를 포함할 수 있다. 프로그램 데이터(PD)는 복수의 메모리 셀(MC1, MC2, MC3)들에 프로그램된 데이터(PD)일 수 있다. 패리티 데이터(PAD)는 프로그램 데이터(PD)의 에러를 체크하기 위하여 메모리 장치(100)에 저장되는 데이터일 수 있다. 패리티 데이터(PAD)를 이용하여 프로그램 데이터(PD)의 에러 여부를 판단할 수 있다.
예를 들어 패리티 데이터(PAD)에 기초하여 프로그램 데이터(PD)에 대한 에러 정정(ECC)을 수행하는 방법으로 해밍 코드(hamming code)를 이용할 수 있다. 해밍 코드(hamming code)를 이용하여 ECC(Error Check and Collection)을 수행하는 경우 데이터 비트가 16bit인 경우 패리티 비트는 5bit가 필요하고, 데이터 비트가 32bit 인 경우 패리티 비트는 6bit이 필요하며, 데이터 비트가 64bit인 경우 패리티 비트는 7bit가 필요하다.
도 8은 본 발명의 일 실시예에 따른 메모리 장치의 프로그램 방법을 설명하기 위한 도면이다.
도 8을 참조하면, 메모리 장치(100)가 독출 모드로 동작하는 경우, 메모리 장치(100)는 프로그램된 데이터(PD)에 대한 독출 과정에서 에러 체크 및 정정 동작을 수행할 수 있다. 본 발명에 따른 프로그램 방법에서도 프로그램 데이터(PD)에 대한 에러 체크하는 과정을 포함한다. 따라서 메모리 장치(100)의 독출 동작 중에 수행되는 에러 체크 결과(ECR)를 이용하여 메모리 장치(100)의 프로그램 시간(PT)을 조절할 수 있다. 예를 들어 메모리 장치(100)가 독출 모드로 동작하는 경우, 메모리 장치(100)는 프로그램 데이터(PD)에 대한 에러 체크 및 정정 동작을 수행한 후 에러 정정된 데이터를 출력할 수 있다. 이 경우, 메모리 장치(100)가 독출 모드에서 동작하는 동안 프로그램 데이터(PD)에 대한 에러 체크 결과(ECR)를 이용할 수 있다. 에러 체크 결과(ECR)는 비트 에러 율(BER)일 수 있다. 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)을 초과하는 경우, 메모리 장치(100)의 프로그램 시간(PT)을 증가시킬 수 있다. 프로그램 시간(PT)이 증가하면 비트 에러 율(BER)을 감소시킬 수 있다.
예시적인 실시예에 있어서, 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)는 메모리 장치(100)의 독출 동작 중에 수행될 수 있다.
예시적인 실시예에 있어서, 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)는 복수의 메모리 셀(MC1, MC2, MC3)들을 데이터에 상응하는 상태들로 프로그램하는 단계 직후에 수행될 수 있다.
도 9는 메모리 장치의 프로그램 방법에서 사용되는 프로그램 검증 횟수를 설명하기 위한 도면이다.
도 9를 참조하면, 메모리 장치(100)가 프로그램 검증 횟수(program verification number, PVN)만큼 프로그램 동작을 수행한 후, 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)가 수행될 수 있다. 프로그램 검증 횟수(PVN)는 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)가 1회 수행될 때 메모리 장치(100)의 프로그램 동작 수행 횟수일 수 있다. 메모리 장치(100)에 프로그램 동작을 수행할 때마다 프로그램 시간(PT)을 조절하는 것은 비효율적일 수 있다. 예를 들어, 메모리 장치(100)에 프로그램 동작을 수행하는 횟수가 9회일 때가지는 프로그램 시간(PT)을 조절하지 않을 수 있다. 메모리 장치(100)에 프로그램 동작을 수행하는 횟수가 10회인 경우, 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)를 수행할 수 있다. 이 경우, 프로그램 검증 횟수(PVN)는 10일 수 있다. 프로그램 동작이 10회 수행될 때마다 프로그램 데이터(PD)의 에러를 체크하여 프로그램 시간(PT)을 조절할 수 있다.
도 10은 메모리 장치의 프로그램 방법에서 사용되는 소거 검증 횟수를 설명하기 위한 도면이다.
도 10을 참조하면, 메모리 장치(100)가 소거 검증 횟수(erase verification number, EVN)만큼 소거 동작을 수행한 후, 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)가 수행될 수 있다. 소거 검증 횟수(EVN)는 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)가 1회 수행될 때 메모리 장치(100)의 소거 동작 수행 횟수일 수 있다. 메모리 장치(100)에 소거 동작을 수행할 때마다 프로그램 시간(PT)을 조절하는 것은 비효율적일 수 있다. 예를 들어, 메모리 장치(100)에 소거 동작을 수행하는 횟수가 9회일 때가지는 프로그램 시간(PT)을 조절하지 않을 수 있다. 메모리 장치(100)에 소거 동작을 수행하는 횟수가 10회인 경우, 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)를 수행할 수 있다. 이 경우, 소거 검증 횟수(EVN)는 10일 수 있다. 소거 동작이 10회 수행될 때마다 프로그램 데이터(PD)의 에러를 체크하여 프로그램 시간(PT)을 조절할 수 있다.
도 11은 도 2의 메모리 장치에 포함되는 블록들의 일 예를 나타내는 도면이다.
도 11을 참조하면, 메모리 장치(100)에 포함되는 블록 별로 에러 체크 단계(S300)의 수행 횟수를 달리하여 프로그램 시간(PT)을 조절할 수 있다. 예를 들어 제1 블록(113)의 비트 에러 율(BER)이 높고, 제2 블록(114) 및 제3 블록(115)의 비트 에러 율(BER)이 낮은 경우, 제1 블록(113)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수가 제2 블록(114) 및 제3 블록(115)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수보다 많을 수 있다. 비트 에러 율(BER)이 높은 블록에 대해서는 프로그램 데이터(PD)에 에러가 발생할 가능성이 높기 때문에 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수가 증가할 수 있다.
예를 들어, 제2 블록(114)의 비트 에러 율(BER)이 높고, 제1 블록(113) 및 제3 블록(115)의 비트 에러 율(BER)이 낮은 경우, 제2 블록(114)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수가 제1 블록(113) 및 제3 블록(115)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수보다 많을 수 있다. 제3 블록(115)의 비트 에러 율(BER)이 높고, 제2 블록(114) 및 제1 블록(113)의 비트 에러 율(BER)이 낮은 경우, 제3 블록(115)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수가 제2 블록(114) 및 제1 블록(113)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수보다 많을 수 있다.
도 12는 도 2의 메모리 장치에 포함되는 블록들의 다른 예를 나타내는 도면이다.
도 12를 참조하면, 복수의 메모리 셀(MC1, MC2, MC3)들의 외곽에 위치하는 외곽 블록에 대한 에러 체크 단계(S300)의 수행 횟수가 일정한 시간 간격 동안 복수의 메모리 셀(MC1, MC2, MC3)들의 중앙에 위치하는 중앙 블록에 대한 에러 체크 단계(S300)의 수행 횟수보다 많을 수 있다. 일반적으로 메모리 셀 어레이의 외곽 블록들(123 내지126)은 중앙 블록(127)에 비해서 비트 에러 율(BER)이 높을 수 있다. 따라서 외곽 블록들(123 내지126)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수가 중앙 블록(127)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수보다 많을 수 있다. 예를 들어 외곽 블록은 제1 블록(123), 제2 블록(124), 제3 블록(125) 및 제4 블록(126)을 포함할 수 있다. 중앙 블록은 제5 블록(127)을 포함할 수 있다. 제1 블록 내지 제4 블록(123 내지 126)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수가 제5 블록(127)에 대한 에러 체크 단계(S300) 및 프로그램 시간(PT)을 조절하는 단계(S500)의 수행 횟수보다 많을 수 있다.
예시적인 실시예에 있어서, 메모리 장치(100)에 저장되는 프로그램에 따라 에러 체크 단계(S300)의 수행 횟수를 달리하여 프로그램 시간(PT)을 조절할 수 있다.
예시적인 실시예에 있어서, 에러 체크 결과(ECR)는 복수의 메모리 셀(MC1, MC2, MC3)들에 프로그램된 데이터 중 에러 셀(EC)들에 프로그램된 데이터가 차지하는 비율에 해당하는 비트 에러 율(BER)일 수 있다. 예를 들어 데이터 1을 메모리 셀에 프로그램한 후 메모리 셀로부터 독출되는 데이터가 1인 경우 해당 메모리 셀은 정상 셀일 수 있다. 데이터 1을 메모리 셀에 프로그램한 후 메모리 셀로부터 독출되는 데이터가 0인 경우 해당 메모리 셀은 에러 셀(EC)일 수 있다. 데이터 0을 메모리 셀에 프로그램한 후 메모리 셀로부터 독출되는 데이터가 0인 경우 해당 메모리 셀은 정상 셀일 수 있다. 데이터 0을 메모리 셀에 프로그램한 후 메모리 셀로부터 독출되는 데이터가 1인 경우 해당 메모리 셀은 에러 셀(EC)일 수 있다. 비트 에러 율(BER)은 복수의 메모리 셀들에 프로그램된 데이터들(PD) 중에 에러 셀(EC)에 프로그램된 데이터(PD)의 비율일 수 있다.
도 13은 저성능 플래시 메모리의 프로그램 소거 사이클에 따른 비트 에러 율을 나타내는 도면이고, 도 14는 고성능 플래시 메모리의 프로그램 소거 사이클에 따른 비트 에러 율을 나타내는 도면이다.
도 13 및 도 14를 참조하면, 비트 에러 율(BER)이 증가함에 따라 프로그램 시간(PT)을 증가시킬 수 있다. 예시적인 실시예에 있어서, 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL) 이상인 경우, 프로그램 시간(PT)을 단위 시간만큼 증가시킬 수 있다.
예를 들어, 저성능 플래시 메모리의 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)에 도달하는 프로그램/소거 사이클(PEC)은 0.7K 일 수 있다. 저성능 플래시 메모리의 프로그램/소거 사이클(PEC)이 0.7K에 도달하면 프로그램 시간(PT)을 단위 시간만큼 증가시킬 수 있다. 단위 시간은 0.2ms일 수 있다. 고성능 플래시 메모리의 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)에 도달하는 프로그램/소거 사이클(PEC)은 2K 일 수 있다. 고성능 플래시 메모리의 프로그램/소거 사이클(PEC)이 2K에 도달하면 프로그램 시간(PT)을 단위 시간만큼 증가시킬 수 있다.
프로그램/소거 사이클(PEC)이 0.7K이상인 경우, 저성능 플래시 메모리의 프로그램 시간(PT)을 0.9ms으로 유지하면 저성능 플래시 메모리는 오동작할 수 있다. 프로그램/소거 사이클(PEC)이 0.7K이상인 경우, 고성능 플래시 메모리의 프로그램 시간(PT)을 0.9ms으로 유지하더라도 고성능 플래시 메모리는 정상적으로 동작할 수 있다. 동일한 반도체 공정을 통해서 생산되는 플래시 메모리라고 하더라도 메모리의 성능은 다를 수 있다. 기존의 프로그램 방법에서는 일정한 프로그램/소거 사이클(PEC)이 경과하면 에러 체크 결과(ECR)에 관계없이 프로그램 시간(PT)을 증가시켜 메모리 장치(100)는 느린 프로그램 속도(SP)로 동작될 수 있다. 예를 들어 메모리 장치(100)에 프로그램된 데이터(PD) 중 에러 데이터의 비율을 나타내는 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)보다 낮아서 메모리 장치(100)가 빠른 프로그램 속도(FP)로도 정상 동작할 수 있음에도 불구하고 일정한 프로그램/소거 사이클(PEC)을 초과한다는 이유만으로 메모리 장치(100)를 느린 프로그램 속도(SP)로 동작시킨다. 따라서 메모리 장치(100)가 빠른 프로그램 속도(FP)로 동작할 수 있음에도 불구하고 느린 프로그램 속도(SP)로 동작함으로 인해서 메모리 장치(100)를 효율적으로 사용하지 못할 수 있다.
예시적인 실시예에 있어서, 프로그램 시간(PT)을 단위 시간만큼 증가시킨 후, 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL) 이상인 경우, 프로그램 시간(PT)을 단위 시간만큼 더 증가시킬 수 있다.
예를 들어, 저성능 플래시 메모리의 비트 에러 율(BER)이 다시 상한 비트 에러 율(BER_UL)에 도달하는 프로그램/소거 사이클(PEC)은 1.4K 일 수 있다. 저성능 플래시 메모리의 프로그램/소거 사이클(PEC)이 1.4K에 도달하면 프로그램 시간(PT)을 단위 시간만큼 더 증가시킬 수 있다. 단위 시간은 0.2ms일 수 있다. 고성능 플래시 메모리의 비트 에러 율(BER)이 다시 상한 비트 에러 율(BER_UL)에 도달하는 프로그램/소거 사이클(PEC)은 4K 일 수 있다. 고성능 플래시 메모리의 프로그램/소거 사이클(PEC)이 4K에 도달하면 프로그램 시간(PT)을 단위 시간만큼 더 증가시킬 수 있다.
본 발명의 실시예에 따른 메모리 장치(100)의 프로그램 방법은 복수의 메모리 셀(MC1, MC2, MC3)들로부터 독출되는 코드 워드(CW)에 기초하여 에러 체크 결과(ECR)를 제공하고, 에러 체크 결과(ECR)에 기초하여 복수의 메모리 셀(MC1, MC2, MC3)들을 프로그램하는 프로그램 시간(PT)을 조절할 수 있다. 따라서 메모리 장치(100)를 효율적으로 사용할 수 있고, 메모리 장치(100)의 프로그램 시간(PT)을 감소시킬 수 있다.
도 15는 플래시 메모리의 환경 변화 및 프로그램 소거 사이클에 따른 비트 에러 율을 나타내는 도면이다.
도 15를 참조하면, 플래시 메모리는 환경 변화에 따라 프로그램/소거 사이클(PEC)이 증가함에도 불구하고 일정 구간 동안 비트 에러 율(BER)이 감소할 수 있다. 예시적인 실시예에 있어서, 비트 에러 율(BER)이 하한 비트 에러 율(lower limit BER, BER_LL) 이하인 경우, 프로그램 시간(PT)을 단위 시간만큼 감소시킬 수 있다. 플래시 메모리의 비트 에러 율(BER)이 하한 비트 에러 율(BER_LL)에 도달하면 프로그램 시간(PT)을 감소시켜도 플래시 메모리는 정상 동작할 수 있다. 예를 들어, 극지방에서 플래시 메모리를 구동하다가 온대 지역으로 이동하여 플래시 메모리를 구동하는 경우, 일정 구간 동안 비트 에러 율(BER)은 감소할 수 있다. 일정 구간은 프로그램/소거 사이클(PEC)이 0에서 2K사이의 구간일 수 있다. 일정 구간 동안 비트 에러 율(BER)의 감소는 환경 변화 때문일 수 있다. 환경 변화에 따라 비트 에러 율(BER)이 하한 비트 에러 율(BER_LL) 이하가 되는 경우, 플래시 메모리의 프로그램 시간(PT)을 감소시킬 수 있다. 예를 들어 플래시 메모리의 프로그램/소거 사이클(PEC)이 2K일 때, 비트 에러 율(BER)은 하한 비트 에러 율(BER_LL)에 도달할 수 있다. 이 경우 플래시 메모리의 프로그램 시간(PT)을 0.9ms에서 0.7ms으로 감소시킬 수 있다.
프로그램 시간(PT)을 감소시키면 플래시 메모리의 프로그램/소거 사이클(PEC)이 증가함에 따라 비트 에러 율(BER)은 증가할 수 있다. 예를 들어, 플래시 메모리의 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)에 도달하는 프로그램/소거 사이클(PEC)은 4K 일 수 있다. 플래시 메모리의 프로그램/소거 사이클(PEC)이 4K에 도달하면 프로그램 시간(PT)을 단위 시간만큼 증가시킬 수 있다.
프로그램/소거 사이클(PEC)이 4K이상인 경우, 플래시 메모리의 프로그램 시간(PT)을 0.7ms으로 유지하면 플래시 메모리는 오동작할 수 있다. 기존의 프로그램 방법에서는 일정한 프로그램/소거 사이클(PEC)이 경과하면 에러 체크 결과(ECR)에 관계없이 프로그램 시간(PT)을 증가시켜 메모리 장치(100)는 느린 프로그램 속도(SP)로 동작될 수 있다. 예를 들어 메모리 장치(100)에 프로그램된 데이터(PD) 중 에러 데이터의 비율을 나타내는 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)보다 낮아서 메모리 장치(100)가 빠른 프로그램 속도(FP)로도 정상 동작할 수 있음에도 불구하고 일정한 프로그램/소거 사이클(PEC)을 초과한다는 이유만으로 메모리 장치(100)를 느린 프로그램 속도(SP)로 동작시킨다. 따라서 메모리 장치(100)가 빠른 프로그램 속도(FP)로 동작할 수 있음에도 불구하고 느린 프로그램 속도(SP)로 동작함으로 인해서 메모리 장치(100)를 효율적으로 사용하지 못할 수 있다.
본 발명의 실시예에 따른 메모리 장치의 프로그램 방법은 복수의 메모리 셀들로부터 독출되는 코드 워드(CW)에 기초하여 에러 체크 결과(ECR)를 제공하고, 에러 체크 결과(ECR)에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간(PT)을 조절할 수 있다. 따라서 메모리 장치를 효율적으로 사용할 수 있고, 메모리 장치의 프로그램 시간(PT)을 감소시킬 수 있다.
도 16은 본 발명의 실시예들에 따른 메모리 장치의 데이터 독출 방법을 나타내는 순서도이다.
도 16을 참조하면, 메모리 장치(100)의 데이터 독출 방법에서는 메모리 장치(100)에 포함되는 복수의 메모리 셀(MC1, MC2, MC3)들을 데이터에 상응하는 상태들로 프로그램한다(S200). 복수의 메모리 셀(MC1, MC2, MC3)들로부터 독출되는 코드 워드(CW)에 기초하여 에러 정정하고 에러 정정 데이터 및 에러 체크 결과(ECR)를 제공한다(S400). 복수의 메모리 셀(MC1, MC2, MC3)들에 프로그램된 데이터(PD)를 검증하기 위하여 프로그램 데이터(PD)가 포함되는 코드 워드(CW)를 독출할 수 있다. 코드 워드(CW)는 프로그램 데이터(PD) 및 패리티 데이터(PAD)를 포함할 수 있다. 패리티 데이터(PAD)를 이용하여 프로그램 데이터(PD)의 에러 여부를 판단할 수 있다.
복수의 메모리 셀(MC1, MC2, MC3)들은 에러 셀(EC)들을 포함할 수 있다. 에러 체크 결과(ECR)는 복수의 메모리 셀(MC1, MC2, MC3)들에 프로그램된 데이터들(PD) 중에 에러 셀(EC)에 프로그램된 데이터(PD)의 비율일 수 있다. 예를 들어 메모리 장치(100)에 포함되는 100개의 메모리 셀들 중 3개의 에러 셀(EC)이 포함되는 경우, 상기 100개의 메모리 셀에 데이터를 프로그램한 후 상기 100개의 메모리 셀로부터 데이터를 독출하면 3개의 데이터에 에러가 발생할 수 있다. 에러 체크 결과(ECR)는 0.03일 수 있다.
에러 체크 결과(ECR)에 기초하여 복수의 메모리 셀(MC1, MC2, MC3)들을 프로그램하는 프로그램 시간(PT)을 조절한다(S600). 에러 정정 데이터를 독출한다(S800). 에러 체크 결과(ECR)가 복수의 메모리 셀(MC1, MC2, MC3)들에 프로그램된 데이터들(PD) 중에 에러 셀(EC)에 프로그램된 데이터(PD)의 비율에 해당하는 비트 에러 율(BER)로 나타날 수 있다. 에러를 체크한 결과, 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL) 이상인 경우 프로그램 시간(PT)을 증가시킬 수 있다. 예를 들어 플래시 메모리에서 프로그램/소거 사이클(P/E cycle, PEC) 초기에는 비트 에러 율(BER)이 낮을 수 있다. 플래시 메모리에 프로그램 및 소거 동작을 반복하면서 플래시 메모리의 성능은 저하될 수 있다.
이 경우, 메모리 장치(100)에 프로그램된 데이터(PD)의 에러를 체크하여 에러 체크 결과(ECR)가 상한 비트 에러 율(BER_UL) 이상이면 프로그램 시간(PT)을 증가시킬 수 있다. 기존의 프로그램 방법에서는 일정한 프로그램/소거 사이클(PEC)이 경과하면 에러 체크 결과(ECR)에 관계없이 프로그램 시간(PT)을 증가시켜 메모리 장치(100)는 느린 프로그램 속도(SP)로 동작될 수 있다. 예를 들어 메모리 장치(100)에 프로그램된 데이터(PD) 중 에러 데이터의 비율을 나타내는 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)보다 낮아서 메모리 장치(100)가 빠른 프로그램 속도(FP)로도 정상 동작할 수 있음에도 불구하고 일정한 프로그램/소거 사이클(PEC)을 초과한다는 이유만으로 메모리 장치(100)를 느린 프로그램 속도(SP)로 동작시킨다. 따라서 메모리 장치(100)가 빠른 프로그램 속도(FP)로 동작할 수 있음에도 불구하고 느린 프로그램 속도(SP)로 동작함으로 인해서 메모리 장치(100)를 효율적으로 사용하지 못할 수 있다.
본 발명의 실시예에 따른 메모리 장치의 프로그램 방법은 복수의 메모리 셀(MC1, MC2, MC3)들로부터 독출되는 코드 워드(CW)에 기초하여 에러 체크 결과(ECR)를 제공하고, 에러 체크 결과(ECR)에 기초하여 복수의 메모리 셀(MC1, MC2, MC3)들을 프로그램하는 프로그램 시간(PT)을 조절할 수 있다. 따라서 메모리 장치를 효율적으로 사용할 수 있고, 메모리 장치의 프로그램 시간(PT)을 감소시킬 수 있다.
도 17은 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 17을 참조하면, 메모리 시스템(800)은 메모리 컨트롤러(810) 및 비휘발성 메모리 장치(820)를 포함한다.
비휘발성 메모리 장치(820)는 메모리 셀 어레이(821), 페이지 버퍼부(822), 로우 디코더(823) 및 제어 회로(824)를 포함한다. 메모리 셀 어레이(821)는 복수의 메모리 셀(MC1, MC2, MC3)들을 포함하고, 페이지 버퍼부(822)는 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작하며, 로우 디코더(823)는 로우 어드레스에 응답하여 워드 라인을 선택할 수 있다. 제어 회로(824)는 페이지 버퍼부(822) 및 로우 디코더(823)를 제어한다.
메모리 컨트롤러(810)는 비휘발성 메모리 장치(820)를 제어한다.
기존의 비휘발성 메모리 장치의 프로그램 방법에서는 일정한 프로그램/소거 사이클(PEC)이 경과하면 에러 체크 결과(ECR)에 관계없이 프로그램 시간(PT)을 증가시켜 메모리 장치는 느린 프로그램 속도(SP)로 동작된다. 메모리 장치가 빠른 프로그램 속도(FP)로 동작할 수 있음에도 불구하고 에러 체크 결과(ECR)에 관계없이 느린 프로그램 속도(SP)로 동작함으로 인해서 메모리 장치를 효율적으로 사용하지 못할 수 있다. 본 발명의 실시예에 따른 메모리 장치의 프로그램 방법은 복수의 메모리 셀(MC1, MC2, MC3)들로부터 독출되는 코드 워드(CW)에 기초하여 에러 체크 결과(ECR)를 제공하고, 에러 체크 결과(ECR)에 기초하여 복수의 메모리 셀(MC1, MC2, MC3)들을 프로그램하는 프로그램 시간(PT)을 조절할 수 있다. 따라서 메모리 장치를 효율적으로 사용할 수 있고, 메모리 장치의 프로그램 시간(PT)을 감소시킬 수 있다.
메모리 컨트롤러(810)는 외부의 호스트(미도시)와 비휘발성 메모리 장치(820) 사이의 데이터 교환을 제어할 수 있다. 메모리 컨트롤러(810)는 중앙 처리 장치(811), 버퍼 메모리(812), 호스트 인터페이스(813) 및 메모리 인터페이스(814)를 포함할 수 있다. 중앙 처리 장치(811)는 상기 데이터 교환을 위한 동작을 수행할 수 있다. 버퍼 메모리(812)는 DRAM(Dynamic random access memory), SRAM(Static random access memory), PRAM, FRAM, RRAM, 또는 MRAM으로 구현될 수 있다. 실시예에 따라서, 버퍼 메모리(812)는 메모리 컨트롤러(810)의 내부 또는 외부에 위치할 수 있다.
호스트 인터페이스(813)는 상기 호스트와 연결되고, 메모리 인터페이스(814)는 비휘발성 메모리 장치(820)와 연결된다. 중앙 처리 장치(811)는 호스트 인터페이스(813)를 통하여 상기 호스트와 통신할 수 있다. 예를 들어, 호스트 인터페이스(813)는 USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트와 통신하도록 구성될 수 있다. 또한, 중앙 처리 장치(811)는 메모리 인터페이스(814)를 통하여 비휘발성 메모리 장치(820)와 통신할 수 있다. 실시예에 따라서, 메모리 컨트롤러(810)는 에러 정정을 위한 에러 정정 블록(815)을 더 포함할 수 있다. 실시예에 따라서, 메모리 컨트롤러(810)가 비휘발성 메모리 장치(820)에 빌트-인(built-in)되어 구현되거나, 메모리 컨트롤러(810) 및 비휘발성 메모리 장치(820)가 각각 별도의 칩으로 구현될 수 있다.
메모리 시스템(800)은 메모리 카드(memory card), 솔리드 스테이트 드라이브(solid state drive) 등과 같은 형태로 구현될 수 있다. 비휘발성 메모리 장치(820), 메모리 컨트롤러(810), 및/또는 메모리 시스템(800)은 다양한 형태들의 패키지를 이용하여 구현될 수 있는데, 예를 들어, 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) 등과 같은 패키지를 이용하여 구현될 수 있다.
도 18은 본 발명의 실시예들에 따른 메모리 시스템이 메모리 카드에 응용된 예를 나타내는 도면이다.
도 18을 참조하면, 메모리 카드(900)는 복수의 접속 핀들(910), 메모리 컨트롤러(920) 및 비휘발성 메모리 장치(930)를 포함한다.
호스트(미도시)와 메모리 카드(900) 사이의 신호들이 송수신되도록 복수의 접속 핀들(910)은 상기 호스트에 연결될 수 있다. 복수의 접속 핀들(910)은 클록 핀, 커맨드 핀, 데이터 핀 및/또는 리셋 핀을 포함할 수 있다.
메모리 컨트롤러(920)는, 상기 호스트로부터 데이터를 수신하고, 상기 수신된 데이터를 비휘발성 메모리 장치(930)에 저장할 수 있다.
예를 들어, 메모리 카드(900)는 멀티미디어 카드(MultiMedia Card; MMC), 임베디드 멀티미디어 카드(embedded MultiMedia Card; eMMC), 하이브리드 임베디드 멀티미디어 카드(hybrid embedded MultiMedia Card; hybrid eMMC), SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA(Personal Computer Memory Card International Association) 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card)등과 같은 메모리 카드일 수 있다.
실시예에 따라서, 메모리 카드(900)는 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등과 같은 호스트에 장착될 수 있다.
도 19는 본 발명의 실시예들에 따른 메모리 시스템이 솔리드 스테이트 드라이브에 응용된 예를 나타내는 도면이다.
도 19를 참조하면, 솔리드 스테이트 드라이브(Solid State Drive; SSD, 1000)는 메모리 컨트롤러(1010) 및 복수의 비휘발성 메모리 장치들(1020)을 포함한다.
메모리 컨트롤러(1010)는, 호스트(미도시)로부터 데이터를 수신하고, 상기 수신된 데이터를 복수의 비휘발성 메모리 장치들(1020)에 저장할 수 있다.
기존의 플래시 메모리의 프로그램 방법에서는 일정한 프로그램/소거 사이클(PEC)이 경과하면 에러 체크 결과(ECR)에 관계없이 프로그램 시간(PT)을 증가시켜 메모리 장치는 느린 프로그램 속도(SP)로 동작된다. 메모리 장치가 빠른 프로그램 속도(FP)로 동작할 수 있음에도 불구하고 에러 체크 결과(ECR)에 관계없이 느린 프로그램 속도(SP)로 동작함으로 인해서 메모리 장치를 효율적으로 사용하지 못할 수 있다. 본 발명의 실시예에 따른 메모리 장치의 프로그램 방법은 복수의 메모리 셀들로부터 독출되는 코드 워드(CW)에 기초하여 에러 체크 결과(ECR)를 제공하고, 에러 체크 결과(ECR)에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간(PT)을 조절할 수 있다. 따라서 메모리 장치를 효율적으로 사용할 수 있고, 메모리 장치의 프로그램 시간(PT)을 감소시킬 수 있다.
실시예에 따라서, 솔리드 스테이트 드라이브(1000)는 컴퓨터, 노트북, 핸드폰, 스마트 폰, MP3 플레이어, 피디에이, 피엠피, 디지털 TV, 디지털 카메라, 포터블 게임 콘솔 등과 같은 호스트에 장착될 수 있다.
도 20은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 20을 참조하면, 컴퓨팅 시스템(1100)은 프로세서(1110), 메모리 장치(1120), 사용자 인터페이스(1130) 및 메모리 시스템(800)을 포함한다. 실시예에 따라, 컴퓨팅 시스템(1100)은 베이스밴드 칩 셋(baseband chipset)과 같은 모뎀(1140)을 더 포함할 수 있다.
프로세서(1110)는 특정 계산들 또는 태스크들을 실행할 수 있다. 예를 들어, 프로세서(1110)는 마이크로프로세서 또는 중앙 처리 장치(CPU)일 수 있다. 프로세서(1110)는 어드레스 버스, 제어 버스 및/또는 데이터 버스와 같은 버스(1150)를 통하여 메모리 장치(1120)에 연결될 수 있다. 예를 들어, 메모리 장치(1120)는 DRAM, 모바일 DRAM, SRAM, PRAM, FRAM, RRAM 및/또는 MRAM으로 구현될 수 있다. 또한, 프로세서(1110)는 주변 구성요소 상호연결(peripheral component interconnect, PCI) 버스와 같은 확장 버스에 연결될 수 있다. 이에 따라, 프로세서(1110)는 키보드 또는 마우스와 같은 하나 이상의 입력 장치, 프린터 또는 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함하는 사용자 인터페이스(1130)를 제어할 수 있다. 모뎀(1140)은 외부 장치와 무선으로 데이터를 송수신할 수 있다. 메모리 장치(820)에는 프로세서(1110)에 의해 처리된 데이터 또는 모뎀(1140)을 통하여 수신된 데이터 등이 메모리 컨트롤러(810)를 통해 저장될 수 있다. 컴퓨팅 시스템(1100)은 동작 전압을 공급하기 위한 파워 서플라이를 더 포함할 수 있다. 또한, 컴퓨팅 시스템(1100)은, 실시예에 따라서, 응용 칩셋(application chipset), 카메라 이미지 프로세서(camera image processor, CIS) 등을 더 포함할 수 있다.
기존의 프로그램 방법에서는 일정한 프로그램/소거 사이클(PEC)이 경과하면 에러 체크 결과(ECR)에 관계없이 프로그램 시간(PT)을 증가시켜 메모리 장치(100)는 느린 프로그램 속도(slow program, SP)로 동작될 수 있다. 예를 들어 메모리 장치(100)에 프로그램된 데이터(PD) 중 에러 데이터의 비율을 나타내는 비트 에러 율(BER)이 상한 비트 에러 율(BER_UL)보다 낮아서 메모리 장치(100)가 빠른 프로그램 속도(fast program, FP)로도 정상 동작할 수 있음에도 불구하고 일정한 프로그램/소거 사이클(PEC)을 초과한다는 이유만으로 메모리 장치(100)를 느린 프로그램 속도(SP)로 동작시킨다. 따라서 메모리 장치(100)가 빠른 프로그램 속도(FP)로 동작할 수 있음에도 불구하고 느린 프로그램 속도(SP)로 동작함으로 인해서 메모리 장치(100)를 효율적으로 사용하지 못할 수 있다.
본 발명의 실시예에 따른 메모리 장치의 프로그램 방법은 복수의 메모리 셀들로부터 독출되는 코드 워드(CW)에 기초하여 에러 체크 결과(ECR)를 제공하고, 에러 체크 결과(ECR)에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간(PT)을 조절할 수 있다. 따라서 메모리 장치를 효율적으로 사용할 수 있고, 메모리 장치의 프로그램 시간(PT)을 감소시킬 수 있다.
본 발명의 실시예들에 따른 메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법은 에러 체크 결과에 기초하여 비휘발성 메모리 장치의 프로그램 시간을 조절하여 비휘발성 메모리 장치를 효율적으로 사용할 수 있어 메모리 장치를 사용하는 다양한 반도체 장치에 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 메모리 장치에 포함되는 복수의 메모리 셀들을 데이터에 상응하는 상태들로 프로그램하는 단계;
    상기 복수의 메모리 셀들로부터 독출되는 코드 워드에 기초하여 에러 체크 결과를 제공하는 에러 체크 단계; 및
    상기 에러 체크 결과에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간을 조절하는 단계를 포함하는 메모리 장치의 프로그램 방법.
  2. 제1 항에 있어서,
    상기 코드 워드는 상기 프로그램 데이터 및 상기 프로그램 데이터에 상응하는 패리티 데이터를 포함하고,
    상기 패리티 데이터에 기초하여 상기 프로그램 데이터의 에러를 체크하는 것을 특징으로 하는 메모리 장치의 프로그램 방법.
  3. 제1 항에 있어서,
    상기 에러 체크 단계 및 상기 프로그램 시간을 조절하는 단계는 상기 복수의 메모리 셀들을 데이터에 상응하는 상태들로 프로그램하는 단계 직후에 수행되는 것을 특징으로 하는 메모리 장치의 프로그램 방법.
  4. 제1 항에 있어서,
    상기 에러 체크 단계 및 상기 프로그램 시간을 조절하는 단계는 상기 메모리 장치의 독출 동작 중에 수행되는 것을 특징으로 메모리 장치의 프로그램 방법.
  5. 제1 항에 있어서,
    상기 메모리 장치가 프로그램 검증 횟수만큼 프로그램 동작을 수행하는 경우 또는 상기 메모리 장치가 소거 검증 횟수만큼 소거 동작을 수행하는 경우,
    상기 에러 체크 단계 및 상기 프로그램 시간을 조절하는 단계가 수행되는 것을 특징으로 하는 메모리 장치의 프로그램 방법.
  6. 제1 항에 있어서,
    상기 메모리 장치에 포함되는 블록 별로 상기 에러 체크 단계의 수행 횟수를 달리하여 상기 프로그램 시간을 조절하는 것을 특징으로 하는 메모리 장치의 프로그램 방법.
  7. 제6 항에 있어서,
    상기 복수의 메모리 셀들의 외곽에 위치하는 외곽 블록에 대한 에러 체크 단계의 수행 횟수가 일정한 시간 간격 동안 상기 복수의 메모리 셀들의 중앙에 위치하는 중앙 블록에 대한 에러 체크 단계의 수행 횟수보다 많은 것을 특징으로 하는 메모리 장치의 프로그램 방법.
  8. 제1 항에 있어서,
    상기 메모리 장치에 저장되는 프로그램에 따라 상기 에러 체크 단계의 수행 횟수를 달리하여 상기 프로그램 시간을 조절하는 것을 특징으로 하는 메모리 장치의 프로그램 방법.
  9. 제1 항에 있어서,
    상기 에러 체크 결과는 상기 복수의 메모리 셀들에 프로그램된 데이터 중 에러 셀들에 프로그램된 데이터가 차지하는 비율에 해당하는 비트 에러 율이고,
    상기 비트 에러 율이 상한 비트 에러 율 이상인 경우,
    상기 프로그램 시간을 단위 시간만큼 증가시키는 것을 특징으로 하는 메모리 장치의 프로그램 방법.
  10. 메모리 장치에 포함되는 복수의 메모리 셀들을 데이터에 상응하는 상태들로 프로그램하는 단계;
    상기 복수의 메모리 셀들로부터 독출되는 코드워드에 기초하여 에러 정정하고 에러 정정 데이터 및 에러 체크 결과를 제공하는 에러 체크 단계;
    상기 에러 체크 결과에 기초하여 상기 복수의 메모리 셀들을 프로그램하는 프로그램 시간을 조절하는 단계; 및
    상기 에러 정정 데이터를 독출하는 단계를 포함하는 메모리 장치의 데이터 독출 방법.
KR1020140032837A 2014-03-20 2014-03-20 메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법 KR102221752B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140032837A KR102221752B1 (ko) 2014-03-20 2014-03-20 메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법
US14/556,107 US9589661B2 (en) 2014-03-20 2014-11-29 Method of programming memory device and method of reading data of memory device including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140032837A KR102221752B1 (ko) 2014-03-20 2014-03-20 메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법

Publications (2)

Publication Number Publication Date
KR20150109705A true KR20150109705A (ko) 2015-10-02
KR102221752B1 KR102221752B1 (ko) 2021-03-02

Family

ID=54143049

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140032837A KR102221752B1 (ko) 2014-03-20 2014-03-20 메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법

Country Status (2)

Country Link
US (1) US9589661B2 (ko)
KR (1) KR102221752B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10949113B2 (en) * 2018-01-10 2021-03-16 SK Hynix Inc. Retention aware block mapping in flash-based solid state drives
US10970160B2 (en) 2018-12-10 2021-04-06 Micron Technology, Inc. Bit error rate based dynamic program step characteristic adjustment
US11257552B2 (en) * 2019-02-21 2022-02-22 Macronix International Co., Ltd. Programming a memory device
US11923025B2 (en) * 2020-12-22 2024-03-05 Kioxia Corporation Generation of programming parameters for non-volatile memory device based on physical device parameters

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6249562B1 (en) * 1999-08-23 2001-06-19 Intel Corporation Method and system for implementing a digit counter optimized for flash memory
KR20050106836A (ko) * 2004-05-06 2005-11-11 삼성전자주식회사 프로그램 사이클 시간을 가변시킬 수 있는 불 휘발성반도체 메모리 장치
US20090016104A1 (en) * 2007-07-09 2009-01-15 Kim Moo-Sung Nonvolatile semiconductor memory device and programming method thereof
US20090080263A1 (en) * 2007-09-26 2009-03-26 Dana Lee Reducing programming voltage differential nonlinearity in non-volatile storage
KR20090078285A (ko) * 2008-01-14 2009-07-17 삼성전자주식회사 메모리 장치 및 멀티 비트 프로그래밍 방법
KR20090119117A (ko) * 2008-05-15 2009-11-19 삼성전자주식회사 메모리 장치 및 메모리 데이터 오류 관리 방법
US20100332729A1 (en) * 2009-06-30 2010-12-30 Sandisk Il Ltd. Memory operations using location-based parameters
KR20130066277A (ko) * 2011-12-12 2013-06-20 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5436913A (en) 1992-06-02 1995-07-25 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device using successively longer write pulses
US5896391A (en) * 1996-12-19 1999-04-20 Northern Telecom Limited Forward error correction assisted receiver optimization
CN1251207C (zh) * 1997-11-26 2006-04-12 松下电器产业株式会社 聚焦位置调整装置及光盘驱动装置
KR20000004719A (ko) 1998-06-30 2000-01-25 김영환 플래쉬 메모리 셀의 재기록 제어장치
US7519788B2 (en) 2004-06-04 2009-04-14 Micron Technology, Inc. System and method for an asynchronous data buffer having buffer write and read pointers
KR100672984B1 (ko) 2004-12-14 2007-01-24 삼성전자주식회사 프로그램 시간을 줄일 수 있는 플래시 메모리 장치
US7339834B2 (en) 2005-06-03 2008-03-04 Sandisk Corporation Starting program voltage shift with cycling of non-volatile memory
US7239557B2 (en) 2005-06-17 2007-07-03 Micron Technology, Inc. Program method with optimized voltage level for flash memory
KR20070096681A (ko) 2006-03-27 2007-10-02 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 워드라인 전압 제어 방법
EP1850347A1 (en) 2006-04-28 2007-10-31 Deutsche Thomson-Brandt Gmbh Method and device for writing to a flash memory
KR101403429B1 (ko) * 2007-10-09 2014-06-03 삼성전자주식회사 멀티 비트 프로그래밍 장치 및 방법
US7808831B2 (en) 2008-06-30 2010-10-05 Sandisk Corporation Read disturb mitigation in non-volatile memory
US8819385B2 (en) * 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8447917B2 (en) * 2009-06-25 2013-05-21 Mediatek Inc. Flash memory devices and methods for controlling a flash memory device
US8228728B1 (en) * 2009-09-14 2012-07-24 Marvell International Ltd. Programming method for multi-level cell flash for minimizing inter-cell interference
US9098430B2 (en) * 2010-03-22 2015-08-04 Conversant Intellectual Property Management Inc. Composite semiconductor memory device with error correction
US8737141B2 (en) * 2010-07-07 2014-05-27 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
JP2012212312A (ja) 2011-03-31 2012-11-01 Pioneer Electronic Corp メモリ制御装置及びメモリ制御方法
US8484519B2 (en) * 2011-08-19 2013-07-09 Stec, Inc. Optimal programming levels for LDPC
US8693257B2 (en) 2011-10-18 2014-04-08 Seagate Technology Llc Determining optimal read reference and programming voltages for non-volatile memory using mutual information
US8947941B2 (en) * 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
CN108595345B (zh) * 2012-07-25 2021-11-23 慧荣科技股份有限公司 管理闪存中所储存的数据的方法及相关记忆装置与控制器
US9071269B2 (en) * 2012-10-01 2015-06-30 Sandisk Technologies Inc. Encoding data for storage in a data storage device

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6249562B1 (en) * 1999-08-23 2001-06-19 Intel Corporation Method and system for implementing a digit counter optimized for flash memory
KR20050106836A (ko) * 2004-05-06 2005-11-11 삼성전자주식회사 프로그램 사이클 시간을 가변시킬 수 있는 불 휘발성반도체 메모리 장치
US20090016104A1 (en) * 2007-07-09 2009-01-15 Kim Moo-Sung Nonvolatile semiconductor memory device and programming method thereof
US20090080263A1 (en) * 2007-09-26 2009-03-26 Dana Lee Reducing programming voltage differential nonlinearity in non-volatile storage
KR20090078285A (ko) * 2008-01-14 2009-07-17 삼성전자주식회사 메모리 장치 및 멀티 비트 프로그래밍 방법
KR20090119117A (ko) * 2008-05-15 2009-11-19 삼성전자주식회사 메모리 장치 및 메모리 데이터 오류 관리 방법
US20100332729A1 (en) * 2009-06-30 2010-12-30 Sandisk Il Ltd. Memory operations using location-based parameters
KR20130066277A (ko) * 2011-12-12 2013-06-20 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
US9589661B2 (en) 2017-03-07
US20150270852A1 (en) 2015-09-24
KR102221752B1 (ko) 2021-03-02

Similar Documents

Publication Publication Date Title
US10311920B2 (en) Apparatus and method for controlling memory device
US9412471B2 (en) Method of reading data from a nonvolatile memory device, nonvolatile memory device, and method of operating a memory system
KR102126716B1 (ko) 비휘발성 메모리 장치의 구동 방법 및 이를 이용하는 비휘발성 메모리 장치
US10048873B2 (en) Memory system for accessing memory dies during program operations and operation method thereof
US10452431B2 (en) Data processing system and operating method thereof
US20180068736A1 (en) Memory system and method for operating the memory system
US9093171B2 (en) Method of operating a nonvolatile memory device having read disturbed page
US10001937B2 (en) Memory system and operating method thereof
KR20140113190A (ko) 비휘발성 메모리 장치의 llr 최적화 방법 및 비휘발성 메모리 장치의 에러 정정 방법
US9741440B2 (en) Memory device and read method of memory device
US9946586B2 (en) Memory system and operating method thereof
CN107728932B (zh) 存储器***及其操作方法
KR102221752B1 (ko) 메모리 장치의 프로그램 방법 및 이를 포함하는 데이터 독출 방법
KR20170135500A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN112447238A (zh) 存储器控制器及其操作方法
US20180157415A1 (en) Apparatus and method for controlling memory device
US20170344262A1 (en) Data processing system and method for operating the same
KR20180021950A (ko) 메모리 시스템
KR102238579B1 (ko) 메모리 장치의 프로그램 방법
KR102684994B1 (ko) 메모리 시스템 및 그의 동작 방법
KR20230075645A (ko) 반도체 장치 내 신호 간섭을 줄이기 위한 장치 및 방법
KR20170133090A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법

Legal Events

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