KR20160050392A - 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법 - Google Patents

메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법 Download PDF

Info

Publication number
KR20160050392A
KR20160050392A KR1020140148439A KR20140148439A KR20160050392A KR 20160050392 A KR20160050392 A KR 20160050392A KR 1020140148439 A KR1020140148439 A KR 1020140148439A KR 20140148439 A KR20140148439 A KR 20140148439A KR 20160050392 A KR20160050392 A KR 20160050392A
Authority
KR
South Korea
Prior art keywords
memory
program sequence
level
offset
program
Prior art date
Application number
KR1020140148439A
Other languages
English (en)
Other versions
KR102252378B1 (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 KR1020140148439A priority Critical patent/KR102252378B1/ko
Priority to US14/743,458 priority patent/US9921749B2/en
Publication of KR20160050392A publication Critical patent/KR20160050392A/ko
Application granted granted Critical
Publication of KR102252378B1 publication Critical patent/KR102252378B1/ko

Links

Images

Classifications

    • 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/061Improving I/O performance
    • 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
    • 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
    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/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
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1069I/O lines read out arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention

Abstract

본 개시는 메모리 장치를 포함하는 메모리 시스템의 동작 방법으로서, 상기 메모리 장치에 포함된 복수의 메모리 그룹들에 대한 프로그램 동작의 상대적인 선후 관계를 나타내는 프로그램 순서 스탬프를 기초로 하여, 상기 메모리 장치에 대한 프로그램 순서 정보를 관리하는 단계; 순차적으로 감소하는 복수의 전압 레벨들을 이용하여, 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상위 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블을 생성하는 단계; 순차적으로 증가하는 복수의 전압 레벨들을 이용하여, 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 하위 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 생성하는 단계; 및 상기 제1 및 제2 맵핑 테이블들 및 상기 프로그램 순서 정보를 기초로 하여, 상기 메모리 장치에 대한 독출 동작을 수행하기 위한 독출 전압을 가변적으로 결정하는 단계를 포함한다.

Description

메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법{Memory Device, Memory System, Method of Operating the Memory Device and Method of Operating the Memory System}
본 발명의 기술적 사상은 메모리 장치에 관한 것으로서, 더욱 상세하게는, 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법에 관한 것이다.
메모리 장치는 데이터를 저장하는데 사용되며, 휘발성 메모리 장치와 불휘발성 메모리 장치로 구분된다. 불휘발성 메모리 장치의 일 예로서, 플래쉬 메모리 장치는 휴대폰, 디지털 카메라, 휴대용 정보 단말기(PDA), 이동식 컴퓨터 장치, 고정식 컴퓨터 장치 및 기타 장치에서 사용될 수 있다. 이러한 불휘발성 메모리 장치의 신뢰성을 향상시키기 위해서는 데이터 리텐션(retention) 특성에 적응적으로 동작을 제어하는 것이 요구된다.
본 발명의 기술적 사상이 해결하려는 과제는 메모리 장치의 성능 및 신뢰성을 향상시킬 수 있는 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법을 제공하는 데에 있다.
본 발명의 기술적 사상에 따른, 메모리 장치를 포함하는 메모리 시스템의 동작 방법은 상기 메모리 장치에 포함된 복수의 메모리 그룹들에 대한 프로그램 동작의 상대적인 선후 관계를 나타내는 프로그램 순서 스탬프를 기초로 하여, 상기 메모리 장치에 대한 프로그램 순서 정보를 관리하는 단계; 순차적으로 감소하는 복수의 전압 레벨들을 이용하여, 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상위(upper) 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블을 생성하는 단계; 순차적으로 증가하는 복수의 전압 레벨들을 이용하여, 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 하위(lower) 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 생성하는 단계; 및 상기 제1 및 제2 맵핑 테이블들 및 상기 프로그램 순서 정보를 기초로 하여, 상기 메모리 장치에 대한 독출 동작을 수행하기 위한 독출 전압을 가변적으로 결정하는 단계를 포함한다.
일부 실시예들에 있어서, 상기 상위 프로그램 순서 스탬프는 상기 독출 전압의 범위의 상한 레벨에 근접하게 결정되고, 상기 하위 프로그램 순서 스탬프는 상기 독출 전압의 범위의 하한 레벨에 근접하게 결정될 수 있다.
일부 실시예들에 있어서, 상기 제1 맵핑 테이블을 생성하는 단계는, 상기 복수의 메모리 그룹들 중 제1 메모리 그룹에 대해, 디폴트 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨보다 제1 오프셋만큼 낮은 제1 레벨로 독출 동작을 수행하는 단계; 및 상기 제1 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 상기 제1 오프셋에 대응하는 제1 상위 프로그램 순서 스탬프로 맵핑하는 단계를 포함할 수 있다.
일부 실시예들에 있어서, 상기 제1 맵핑 테이블을 생성하는 단계는, 상기 제1 메모리 그룹에 대해 상기 제1 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨보다 제2 오프셋만큼 낮은 제2 레벨로 독출 동작을 수행하는 단계; 및 상기 제2 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 메모리 그룹에 대응하는 상기 프로그램 순서 스탬프를 상기 제2 오프셋에 대응하는 제2 상위 프로그램 순서 스탬프로 맵핑하는 단계를 더 포함할 수 있고, 상기 제2 오프셋의 크기는 상기 제1 오프셋의 크기보다 크다.
일부 실시예들에 있어서, 상기 제2 맵핑 테이블을 생성하는 단계는, 상기 복수의 메모리 그룹들 중 제1 메모리 그룹에 대해, 디폴트 레벨보다 제2 오프셋만큼 낮은 제2 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨보다 제1 오프셋만큼 낮은 제1 레벨로 독출 동작을 수행하는 단계; 및 상기 제1 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 상기 제2 오프셋에 대응하는 제2 하위 프로그램 순서 스탬프로 맵핑하는 단계를 포함할 수 있고, 상기 제2 오프셋의 크기는 상기 제1 오프셋의 크기보다 크다.
일부 실시예들에 있어서, 상기 제2 맵핑 테이블을 생성하는 단계는, 상기 제1 메모리 그룹에 대해 상기 제1 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨로 독출 동작을 수행하는 단계; 및 상기 디폴트 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 메모리 그룹에 대응하는 상기 프로그램 순서 스탬프를 상기 제1 오프셋에 대응하는 제1 하위 프로그램 순서 스탬프로 맵핑하는 단계를 더 포함할 수 있다.
일부 실시예들에 있어서, 상기 방법은 상기 제1 및 제2 맵핑 테이블들을 기초로 하여, 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상기 상위 프로그램 순서 스탬프와 상기 하위 프로그램 순서 스탬프 사이의 평균 값에 해당하는 중간 프로그램 순서 스탬프를 저장하는 제3 맵핑 테이블을 생성하는 단계를 더 포함하고, 상기 독출 전압을 가변적으로 결정하는 단계는, 상기 제1 내지 제3 맵핑 테이블들 및 상기 프로그램 순서 정보를 기초로 하여 상기 독출 전압을 가변적으로 결정할 수 있다.
일부 실시예들에 있어서, 상기 독출 전압을 가변적으로 결정하는 단계는, 상기 복수의 메모리 그룹들 중 현재 독출하고자 하는 제2 메모리 그룹에 대응하는 현재 프로그램 순서 스탬프와 제1 오프셋에 대응하는 제1 중간 프로그램 순서 스탬프를 비교하는 단계; 상기 현재 프로그램 순서 스탬프가 상기 제1 중간 프로그램 순서 스탬프보다 작지 않은 경우, 상기 제2 메모리 그룹에 대한 독출 전압을 디폴트 레벨로 결정하는 단계; 및 상기 현재 프로그램 순서 스탬프가 상기 제1 중간 프로그램 순서 스탬프보다 작은 경우, 상기 제2 메모리 그룹에 대한 상기 독출 전압을 상기 디폴트 레벨보다 상기 제1 오프셋만큼 낮은 제1 레벨로 결정하는 단계를 포함할 수 있다.
일부 실시예들에 있어서, 상기 제2 메모리 그룹에 대해 상기 디폴트 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 제1 레벨로 독출 동작을 수행하는 단계; 상기 제2 메모리 그룹에 대해 상기 제1 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨보다 제2 오프셋만큼 낮은 제2 레벨로 독출 동작을 수행하는 단계; 및 상기 제1 레벨 또는 상기 제2 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 및 제2 맵핑 테이블들을 업데이트하는 단계를 더 포함할 수 있다.
일부 실시예들에 있어서, 상기 제1 맵핑 테이블을 업데이트하는 단계는, 상기 현재 프로그램 순서 스탬프를 상기 제1 오프셋에 대응하는 제1 상위 프로그램 순서 스탬프 및 상기 제2 오프셋에 대응하는 제2 상위 프로그램 순서 스탬프와 비교하는 단계; 상기 현재 프로그램 순서 스탬프가 상기 제1 상위 프로그램 순서 스탬프보다 작지 않은 경우, 상기 제2 메모리 그룹에 대해 상기 디폴트 레벨, 상기 제1 레벨 및 상기 제2 레벨의 순서로 독출 동작을 수행하고, 상기 제1 레벨로 독출 성공하면 상기 제1 상위 프로그램 순서 스탬프를 상기 현재 프로그램 순서 스탬프로 업데이트하며, 상기 제2 레벨로 독출 성공하면 상기 제2 상위 프로그램 순서 스탬프를 상기 현재 프로그램 순서 스탬프로 업데이트하는 단계; 상기 현재 프로그램 순서 스탬프가 상기 제2 상위 프로그램 순서 스탬프보다 작지 않고 상기 제1 상위 프로그램 순서 스탬프보다 작은 경우, 상기 제2 메모리 그룹에 대해 상기 제1 레벨, 상기 제2 레벨 및 상기 디폴트 레벨의 순서로 독출 동작을 수행하고, 상기 제2 레벨로 독출 성공하면 상기 제2 상위 프로그램 순서 스탬프를 상기 현재 프로그램 순서 스탬프로 업데이트하고, 상기 디폴트 레벨로 독출 성공하면 상기 제1 상위 프로그램 순서 스탬프를 상기 제2 상위 프로그램 순서 스탬프로 업데이트하는 단계; 및 상기 현재 프로그램 순서 스탬프가 상기 제2 상위 프로그램 순서 스탬프보다 작은 경우, 상기 제2 메모리 그룹에 대해 상기 제2 레벨, 상기 디폴트 레벨 및 상기 제1 레벨의 순서로 독출 동작을 수행하고, 상기 디폴트 레벨로 독출 성공하면 상기 제1 및 제2 상위 프로그램 순서 스탬프들을 초기화하고, 상기 제1 레벨로 독출 성공하면 상기 제2 상위 프로그램 순서 스탬프를 초기화하는 단계를 포함할 수 있다.
일부 실시예들에 있어서, 상기 제2 맵핑 테이블을 업데이트하는 단계는, 상기 현재 프로그램 순서 스탬프를 상기 제1 오프셋에 대응하는 제1 하위 프로그램 순서 스탬프 및 상기 제2 오프셋에 대응하는 제2 하위 프로그램 순서 스탬프와 비교하는 단계; 상기 현재 프로그램 순서 스탬프가 상기 제2 하위 프로그램 순서 스탬프보다 크지 않은 경우, 상기 제2 메모리 그룹에 대해 상기 제2 레벨, 상기 제1 레벨 및 상기 디폴트 레벨의 순서로 독출 동작을 수행하고, 상기 제1 레벨로 독출 성공하면 상기 제2 하위 프로그램 순서 스탬프를 상기 현재 프로그램 순서 스탬프로 업데이트하며, 상기 디폴트 레벨로 독출 성공하면 상기 제1 하위 프로그램 순서 스탬프를 상기 현재 프로그램 순서 스탬프로 업데이트하는 단계; 상기 현재 프로그램 순서 스탬프가 상기 제1 하위 프로그램 순서 스탬프보다 크지 않고 상기 제2 하위 프로그램 순서 스탬프보다 큰 경우, 상기 제2 메모리 그룹에 대해 상기 제1 레벨, 상기 디폴트 레벨 및 상기 제2 레벨의 순서로 독출 동작을 수행하고, 상기 디폴트 레벨로 독출 성공하면 상기 제1 하위 프로그램 순서 스탬프를 상기 현재 프로그램 순서 스탬프로 업데이트하고, 상기 제2 레벨로 독출 성공하면 상기 제2 하위 프로그램 순서 스탬프를 상기 제1 하위 프로그램 순서 스탬프로 업데이트하는 단계; 및 상기 현재 프로그램 순서 스탬프가 상기 제1 하위 프로그램 순서 스탬프보다 큰 경우, 상기 제2 메모리 그룹에 대해 상기 디폴트 레벨, 상기 제2 레벨 및 상기 제1 레벨의 순서로 독출 동작을 수행하고, 상기 제2 레벨로 독출 성공하면 상기 제1 및 제2 하위 프로그램 순서 스탬프들을 초기화하고, 상기 제1 레벨로 독출 성공하면 상기 제1 하위 프로그램 순서 스탬프를 초기화하는 단계를 포함할 수 있다.
일부 실시예들에 있어서, 상기 방법은 상기 제1 레벨 또는 상기 제2 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 제2 메모리 그룹에 대한 독출 결과는 상기 제1 및 제2 맵핑 테이블을 업데이트하는데 이용하지 않도록 플래그를 설정하고, 상기 제2 메모리 그룹에 대해 인접한 두 산포 사이의 골을 검색하는 독출 재시도 동작을 수행하는 단계를 더 포함할 수 있다.
일부 실시예들에 있어서, 상기 복수의 메모리 그룹들이 메모리 블록 단위로 구분되는 경우, 상기 상위 및 하위 프로그램 순서 스탬프들은 상기 메모리 블록 별로 할당되며, 상기 제1 및 제2 맵핑 테이블들은 상기 메모리 블록 별로 상기 독출 전압 오프셋과 상기 상위 및 하위 프로그램 순서 스탬프들을 각각 저장할 수 있다.
일부 실시예들에 있어서, 상기 복수의 메모리 그룹들이 워드 라인 단위로 구분되는 경우, 상기 상위 및 하위 프로그램 순서 스탬프들은 상기 워드 라인 별로 할당되며, 상기 제1 및 제2 맵핑 테이블들은 상기 워드 라인 별로 상기 독출 전압 오프셋과 상기 상위 및 하위 프로그램 순서 스탬프들을 각각 저장할 수 있다.
또한, 본 발명의 기술적 사상에 따른 메모리 시스템은 복수의 메모리 그룹들을 포함하는 메모리 장치 및 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 상기 복수의 메모리 그룹들에 대한 프로그램 동작의 상대적인 선후 관계를 나타내는 프로그램 순서 스탬프를 기초로 하여 상기 메모리 장치에 대한 프로그램 순서 정보를 관리하는 프로그램 순서 관리부; 및 순차적으로 감소하는 복수의 전압 레벨들을 이용하여, 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상위 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블을 생성하고, 순차적으로 증가하는 복수의 전압 레벨들을 이용하여, 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 하위 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 생성하는 맵핑 테이블 생성부를 포함한다.
일부 실시예들에 있어서, 상기 메모리 컨트롤러는, 상기 제1 및 제2 맵핑 테이블들 및 상기 프로그램 순서 정보를 기초로 하여, 상기 메모리 장치에 대한 독출 동작을 수행하기 위한 독출 전압을 가변적으로 결정하는 독출 전압 결정부를 더 포함할 수 있다.
일부 실시예들에 있어서, 상기 맵핑 테이블 생성부는, 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상기 상위 프로그램 순서 스탬프와 상기 하위 프로그램 순서 스탬프 사이의 평균 값에 해당하는 중간 프로그램 순서 스탬프를 저장하는 제3 맵핑 테이블을 더 생성할 수 있다.
일부 실시예들에 있어서, 상기 메모리 컨트롤러는, 상기 제1 내지 제3 맵핑 테이블들 및 상기 프로그램 순서 정보를 기초로 하여, 상기 메모리 장치에 대한 독출 동작을 수행하기 위한 독출 전압을 가변적으로 결정하는 독출 전압 결정부를 더 포함할 수 있다.
또한, 본 발명의 다른 기술적 사상에 따른, 복수의 메모리 그룹들을 포함하는 메모리 장치의 동작 방법은 상기 복수의 메모리 그룹들에 대한 프로그램 동작의 상대적인 선후 관계를 나타내는 프로그램 순서 스탬프를 포함하는 프로그램 순서 정보를 저장하는 단계; 독출 전압 오프셋과 상기 독출 전압 오프셋에 대응하는 상위 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블, 및 상기 독출 전압 오프셋과 상기 독출 전압 오프셋에 대응하는 하위 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 저장하는 단계; 및 상기 제1 및 제2 맵핑 테이블들 및 상기 프로그램 순서 정보를 기초로 하여, 상기 메모리 그룹들에 대한 독출 동작을 수행하기 위한 독출 전압을 가변적으로 결정하는 단계를 포함한다.
일부 실시예들에 있어서, 상기 방법은 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상기 상위 프로그램 순서 스탬프와 상기 하위 프로그램 순서 스탬프 사이의 평균 값에 해당하는 중간 프로그램 순서 스탬프를 저장하는 제3 맵핑 테이블들 저장하는 단계를 더 포함할 수 있다.
본 발명의 기술적 사상에 따르면, 프로그램 순서 스탬프를 이용하여 메모리 장치에 포함된 복수의 메모리 그룹들에 대한 프로그램 순서를 관리하고, 독출 전압 오프셋과 대응하는 상위 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블 및 독출 전압 오프셋과 대응하는 하위 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 빠르게 구성할 수 있다. 이에 따라, 제1 및 제2 맵핑 테이블들을 기초로 하여 바이너리 검색이 가능해지고, 이로써, 독출 전압을 빠르고 정확하게 결정할 수 있다. 따라서, 메모리 시스템의 성능 및 신뢰성이 더욱 향상될 수 있다.
본 발명은, 다음의 자세한 설명과 그에 수반되는 도면들의 결합으로 쉽게 이해될 수 있으며, 참조 번호(reference numerals)들은 구조적 구성요소(structural elements)를 의미한다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 2는 도 1의 메모리 시스템에 포함된 메모리 장치의 일 예를 상세하게 나타내는 블록도이다.
도 3은 도 2의 메모리 장치에 포함된 메모리 셀 어레이의 일 예를 나타낸다.
도 4는 도 3의 메모리 셀 어레이에 포함된 메모리 블록의 일 예를 나타내는 회로도이다.
도 5는 도 4의 메모리 블록에 포함된 메모리 셀의 일 예를 나타내는 단면도이다.
도 6은 도 3의 메모리 셀 어레이에 포함된 메모리 블록의 다른 예를 나타내는 회로도이다.
도 7은 도 6의 회로도에 따른 메모리 블록을 나타내는 사시도이다.
도 8a는 메모리 셀이 멀티 레벨 셀인 경우, 메모리 장치의 프로그램 완료 후의 문턱 전압에 따른 산포를 나타내는 그래프이다.
도 8b는 도 8a의 산포를 가지는 메모리 장치의 프로그램 완료 후 일정 시간이 경과한 후의 문턱 전압에 따른 산포를 나타내는 그래프이다.
도 9는 도 1의 메모리 시스템에 포함된 메모리 컨트롤러의 일 예를 상세하게 나타내는 블록도이다.
도 10a 내지 도 10e은 본 발명의 실시예들에 따른 프로그램 순서 정보의 관리 동작들을 나타낸다.
도 11은 본 발명의 일 실시예에 따른 프로그램 순서 스탬프를 저장하는 메모리 영역을 나타낸다.
도 12는 본 발명의 일 실시예에 따른 프로그램 순서 정보를 저장하는 테이블을 나타낸다.
도 13은 본 발명의 다른 실시예에 따른 프로그램 순서 정보를 저장하는 테이블을 나타낸다.
도 14a 및 도 14b는 본 발명의 다른 실시예에 따른 프로그램 순서 정보를 저장하는 원형 버퍼를 나타낸다.
도 15는 본 발명의 다른 실시예에 따른 프로그램 순서 정보를 저장하는 양방향 연결 리스트를 나타낸다.
도 16은 시간에 따른 독출 윈도우의 변화를 나타내는 그래프이다.
도 17은 본 발명의 일 실시예에 따른 초기 맵핑 테이블 및 업데이트된 맵핑 테이블을 나타낸다.
도 18은 본 발명의 일 실시예에 따른 시간에 따른 독출 레벨을 나타내는 그래프이다.
도 19는 본 발명의 일 실시예에 따른 메모리 장치의 문턱 전압에 따른 산포의 일부를 나타내는 그래프들이다.
도 20a 내지 도 22b는 본 발명의 일 실시예에 따른 제1 맵핑 테이블 생성 동작을 순차적으로 나타낸다.
도 23a 내지 도 25b는 본 발명의 일 실시예에 따른 제2 맵핑 테이블 생성 동작을 순차적으로 나타낸다.
도 26은 본 발명의 다른 실시예에 따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 27은 본 발명의 일 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 28은 도 27의 단계 S120의 일 예에 따른 제1 맵핑 테이블의 생성 동작을 나타내는 흐름도이다.
도 29는 도 27의 단계 S140의 일 예에 따른 제2 맵핑 테이블의 생성 동작을 나타내는 흐름도이다.
도 30은 본 발명의 다른 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 31은 도 30의 단계 S280의 일 예에 따른 독출 전압의 결정 동작을 나타내는 흐름도이다.
도 32는 도 30의 단계 S280의 다른 예에 따른 독출 전압의 결정 동작을 나타내는 흐름도이다.
도 33은 도 32의 단계 S3220의 일 예에 따른 제3 맵핑 테이블을 이용한 독출 동작을 나타내는 흐름도이다.
도 34는 도 32의 단계 S3250의 일 예에 따른 제1 맵핑 테이블의 업데이트 동작을 나타내는 흐름도이다.
도 35는 도 32의 단계 S3260의 일 예에 따른 제2 맵핑 테이블의 업데이트 동작을 나타내는 흐름도이다.
도 36은 본 발명의 일 실시예에 따른 메모리 장치의 동작 방법을 나타내는 흐름도이다.
도 37은 본 발명의 일 실시예에 따른 바이너리 검색 동작을 개략적으로 나타낸다.
도 38은 본 발명의 실시예들에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 나타내는 블록도이다.
도 39는 본 발명의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 40은 본 발명의 실시예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 벗어나지 않으면서, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템(10)을 개략적으로 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(10)은 메모리 장치(100) 및 메모리 컨트롤러(200)를 포함할 수 있다. 메모리 장치(100)는 메모리 셀 어레이(110)를 포함할 수 있고, 메모리 컨트롤러(200)는 프로그램 순서 관리부(210), 맵핑 테이블 생성부(220) 및 독출 전압 결정부(230)를 포함할 수 있다.
메모리 셀 어레이(110)는 복수의 워드 라인들(도 2의 WL)과 복수의 비트 라인들(도 2의 BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(미도시)을 포함할 수 있다. 일 실시예에서, 복수의 메모리 셀들은 플래쉬 메모리 셀들일 수 있고, 메모리 셀 어레이(110)는 낸드(NAND) 플래쉬 메모리 셀 어레이 또는 노아(NOR) 플래쉬 메모리 셀 어레이일 수 있다.
이하에서는, 복수의 메모리 셀들이 낸드 플래쉬 메모리 셀들인 경우를 예로 하여 본 발명의 실시예들을 상술하기로 한다. 일 예에서, 복수의 메모리 셀들은 2차원 수평 구조의 낸드 플래쉬 메모리 셀들일 수 있다(도 4 참조). 다른 예에서, 복수의 메모리 셀들은 3차원 수직 구조의 낸드(vertical NAND, VNAND) 플래쉬 메모리 셀들일 수 있다(도 6 및 7 참조). 그러나, 본 발명은 이에 한정되지 않고, 다른 실시예에서, 복수의 메모리 셀들은 RRAM(resistive RAM), PRAM(phase change RAM) 또는 MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
본 실시예에서, 메모리 셀 어레이(110)은 복수의 메모리 그룹들로 구분될 수 있고, 복수의 메모리 그룹들의 각각은 복수의 메모리 셀들을 포함할 수 있다. 일 예에서, 복수의 메모리 그룹들은 메모리 블록 별로 구분될 수 있다. 다른 예에서, 복수의 메모리 그룹들은 워드 라인 별로 구분될 수 있다. 또 다른 예에서, 복수의 메모리 그룹들은 페이지 별로 구분될 수 있다. 또 다른 예에서, 복수의 메모리 그룹들은 다이(die) 별로 구분될 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 메모리 그룹은 임의의 프로그램 단위로 구분될 수 있다.
일 실시예에서, 메모리 셀 어레이(110)에 포함된 각 메모리 셀은 1 비트 데이터를 저장하는 싱글 레벨 셀(single level cell, SLC)일 수 있다. 다른 실시예에서, 메모리 셀 어레이(110)에 포함된 각 메모리 셀은 2 비트 데이터를 저장하는 멀티 레벨 셀(multi level cell, MLC)일 수 있다. 또 다른 실시예에서, 메모리 셀 어레이(110)에 포함된 각 메모리 셀은 3 비트 데이터를 저장하는 트리플 레벨 셀(triple level cell, TLC)일 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시예에서, 메모리 셀 어레이(110)에 포함된 각 메모리 셀은 4 비트 이상의 데이터를 저장할 수 있다.
메모리 컨트롤러(200)는 호스트(HOST)로부터의 읽기/쓰기 요청에 응답하여 메모리 장치(100)에 저장된 데이터를 독출하도록 또는 메모리 장치(100)에 데이터를 기입하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 컨트롤러(200)는 호스트(HOST)로부터의 요청 없이 내부적인 요청에 따라(예를 들어, 서든 파워 오프(sudden power off)와 관련된 동작, 독출 리클레임 동작, 웨어 레벨링 동작 등) 메모리 장치(100)를 제어할 수 있는데, 이러한 제어 동작을 배경(background) 동작이라고 지칭할 수도 있다.
구체적으로, 메모리 컨트롤러(200)는 메모리 장치(100)에 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(100)에 대한 프로그램(또는 기록), 독출 및 소거 동작을 제어할 수 있다. 또한, 프로그램 동작을 위한 데이터(DATA)와 독출된 데이터(DATA)가 메모리 컨트롤러(200)와 메모리 장치(100) 사이에서 송수신될 수 있다.
프로그램 순서 관리부(210)는 복수의 메모리 그룹들에 대한 프로그램 동작의 상대적인 선후 관계를 나타내는 프로그램 순서 스탬프(program order stamp, POS)를 기초로 하여 메모리 장치(100)에 대한 프로그램 순서 정보를 관리할 수 있다. 여기서, 프로그램 순서 정보는 복수의 메모리 그룹들과 프로그램 순서 스탬프들 사이의 대응 관계에 대한 정보일 수 있다.
구체적으로, 프로그램 순서 관리부(210)는 복수의 메모리 그룹들에 대한 프로그램 동작 또는 소거 동작이 순차적으로 또는 동시에 수행되는 경우, 각 메모리 그룹에 대해서 프로그램 동작 또는 소거 동작의 순서를 나타내는 프로그램 순서 스탬프를 할당할 수 있다. 이어서, 프로그램 순서 관리부(210)는 프로그램 동작 또는 소거 동작이 수행된 메모리 그룹과 새로 할당된 프로그램 순서 스탬프를 저장할 수 있다. 이어서, 프로그램 순서 관리부(210)는 신규 프로그램 순서 스탬프가 할당되면, 프로그램 순서 정보를 업데이트할 수 있다.
일 실시예에서, 프로그램 순서 관리부(210)는 복수의 메모리 그룹들의 어드레스 별로 프로그램 순서 스탬프를 검색하도록, 복수의 메모리 그룹들의 어드레스에 따른 프로그램 순서 스탬프를 순차적으로 저장할 수 있다. 다른 실시예에서, 프로그램 순서 관리부(210)는 프로그램 순서 스탬프 별로 복수의 메모리 그룹들의 어드레스를 검색하도록, 순차적으로 증가하는 프로그램 순서 스탬프에 따라 프로그램 순서 스탬프에 대응하는 메모리 그룹의 어드레스를 저장할 수 있다.
일 실시예에서, 프로그램 순서 관리부(210)는 각 메모리 그룹에 대한 프로그램 순서 스탬프를 메모리 셀 어레이(110) 내의 각 메모리 그룹의 일부 영역에 저장할 수 있다. 다른 실시예에서, 프로그램 순서 관리부(210)는 각 메모리 그룹에 대한 프로그램 순서 스탬프를 메모리 셀 어레이(110) 내의 메타(meta) 영역에 저장될 수 있다. 또 다른 실시예에서, 프로그램 순서 관리부(210)는 복수의 메모리 그룹에 대한 프로그램 순서 스탬프들을 저장하는 프로그램 순서 정보를 메모리 셀 어레이(110) 내의 메타 영역에 저장할 수 있다. 또 다른 실시예에서, 프로그램 순서 관리부(210)는 복수의 메모리 그룹에 대한 프로그램 순서 스탬프들을 저장하는 프로그램 순서 정보를 메모리 컨트롤러(200) 내의 버퍼 메모리(미도시)에 임시 저장할 수 있다.
본 실시예에 따르면, 상술한 바와 같이, 프로그램 순서 정보를 메모리 장치(100)에 저장함으로써, 프로그램 순서 정보를 비휘발성 데이터로 보존할 수 있다. 이에 따라, 메모리 시스템(10)에 대한 전원 공급이 중단되더라도 프로그램 순서 정보는 보존될 수 있고, 이로써, 메모리 장치(100)의 성능 및 신뢰성이 더욱 향상될 수 있다. 또한, 본 실시예에 따르면, 상술한 바와 같이, 프로그램 순서 정보를 메모리 컨트롤러(200)에 임시 저장함으로써, 메모리 시스템(10)의 동작 속도가 더욱 향상될 수 있다.
맵핑 테이블 생성부(220)는 순차적으로 감소하는 복수의 전압 레벨들을 이용하여, 독출 전압 오프셋(offset)과 상기 독출 전압 오프셋에 대응하는 상위(upper) 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블을 생성할 수 있다. 또한, 맵핑 테이블 생성부(220)는 순차적으로 증가하는 복수의 전압 레벨들을 이용하여, 독출 전압 오프셋과 상기 독출 전압 오프셋에 대응하는 하위(lower) 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 생성할 수 있다. 또한, 맵핑 테이블 생성부(220)는 제1 및 제2 맵핑 테이블을 기초로 하여, 독출 전압 오프셋과 상기 독출 전압 오프셋에 대응하는 중간(middle) 프로그램 순서 스탬프를 저장하는 제3 맵핑 테이블을 생성할 수 있다.
여기서, 독출 전압 오프셋은, 메모리 장치(100)에 대한 독출 동작을 수행하기 위해 초기에 설정된 독출 전압, 즉, 디폴트(default) 레벨에 대한 오프셋일 수 있다. 여기서, 독출 전압 오프셋에 대응하는 프로그램 순서 스탬프는, 상기 독출 전압 오프셋이 적용된 독출 전압을 이용하여 독출 동작을 수행할 경우에 독출 성공되는 메모리 그룹에 할당된 프로그램 순서 스탬프일 수 있다.
본 실시예에서, 상위 프로그램 순서 스탬프는 독출 전압의 범위의 상한(upper bound) 레벨에 근접하게 결정될 수 있다. 본 실시예에서, 하위 프로그램 순서 스탬프는 독출 전압의 범위의 하한(lower bound) 레벨에 근접하게 결정될 수 있다. 본 실시예에서, 중간 프로그램 순서 스탬프는 상위 프로그램 순서 스탬프와 하위 프로그램 순서 스탬프의 평균 값에 해당할 수 있다.
맵핑 테이블 생성부(220)는 메모리 장치(100)에 대한 특정 이벤트가 발생하는 경우, 그 결과를 이용하여 제1 내지 제3 맵핑 테이블을 생성 또는 업데이트할 수 있다. 예를 들어, 메모리 장치(100)에 대한 독출 동작의 수행 결과 독출이 실패한 경우, 맵핑 테이블 생성부(220)는 그 결과를 이용하여 제1 내지 제3 맵핑 테이블을 생성 또는 업데이트할 수 있다. 또 다른 예를 들어, 메모리 장치(100)에 대해 인접한 두 산포들 사이의 골(valley)을 찾는 독출 재시도 동작이 수행되는 경우, 맵핑 테이블 생성부(220)는 그 결과를 이용하여 제1 내지 제3 맵핑 테이블을 생성 또는 업데이트할 수 있다.
일 실시예에서, 제1 내지 제3 맵핑 테이블들은 상기 프로그램 순서 스탬프에 대응하는 메모리 그룹의 어드레스를 더 저장할 수 있다. 일 예에서, 메모리 그룹이 메모리 블록 단위로 구분되는 경우, 제1 내지 제3 맵핑 테이블들은 독출 전압 오프셋, 대응하는 프로그램 순서 스탬프 및 대응하는 메모리 블록의 어드레스를 저장할 수 있다. 다른 예에서, 메모리 그룹이 워드 라인 단위로 구분되는 경우, 제1 내지 제3 맵핑 테이블들은 독출 전압 오프셋, 대응하는 프로그램 순서 스탬프, 대응하는 메모리 블록의 어드레스 및 대응하는 워드 라인의 어드레스, 즉, 인덱스를 저장할 수 있다.
제1 내지 제3 맵핑 테이블들의 각각은 다이(die), 메모리 블록, 워드 라인, 페이지 또는 데이터 타입 별로 관리될 수 있다. 일 실시예에서, 제1 내지 제3 맵핑 테이블들의 각각은 메모리 셀 어레이(110)에 포함된 복수의 다이들 각각에 대해 관리될 수 있고, 다른 실시예에서, 제1 내지 제3 맵핑 테이블들의 각각은 메모리 셀 어레이(110)에 포함된 복수의 다이들에 대해 통합적으로 관리될 수 있다. 일 실시예에서, 제1 내지 제3 맵핑 테이블들의 각각은 페이지 별로 각각 관리될 수 있고, 다른 실시예에서, 제1 내지 제3 맵핑 테이블들의 각각은 복수의 페이지들에 대해 통합적으로 관리될 수 있다. 일 실시예에서, 제1 내지 제3 맵핑 테이블들의 각각은 데이터 타입에 따라, 즉, 호스트로부터의 요청에 따른 데이터와 배경 동작에 따른 데이터에 대해 각각 관리될 수 있고, 다른 실시예에서, 제1 내지 제3 맵핑 테이블들의 각각은 호스트로부터의 요청에 따른 데이터와 배경 동작에 따른 데이터에 대해 통합적으로 관리될 수 있다. 일 실시예에서, 제1 내지 제3 맵핑 테이블들의 각각은 액티브(active) 메모리 블록의 개수만큼 각각 관리될 수도 있다.
일 실시예에서, 제1 내지 제3 맵핑 테이블들은 메모리 셀 어레이(110) 내의 각 메모리 그룹의 일부 영역에 저장할 수 있다. 다른 실시예에서, 제1 내지 제3 맵핑 테이블들은 메모리 셀 어레이(110) 내의 메타 영역에 저장될 수 있다. 또 다른 실시예에서, 제1 내지 제3 맵핑 테이블들은 메모리 컨트롤러(200) 내의 버퍼 메모리(미도시)에 임시 저장할 수 있다.
일 실시예에서, 맵핑 테이블 생성부(220)은 독출 전압 오프셋과 대응하는 상위 프로그램 순서 스탬프를 일대일 관계로 제1 맵핑 테이블에 저장할 수 있다. 다른 실시예에서, 맵핑 테이블 생성부(220)는 독출 전압 오프셋과 대응하는 상위 프로그램 순서 스탬프를 부등호 관계로 제1 맵핑 테이블에 저장할 수 있다. 이와 유사하게, 맵핑 테이블 생성부(220)은 독출 전압 오프셋과 대응하는 하위 프로그램 순서 스탬프를 일대일 관계로 제2 맵핑 테이블에 저장할 수 있도 있고, 독출 전압 오프셋과 대응하는 하위 프로그램 순서 스탬프를 부등호 관계로 제2 맵핑 테이블에 저장할 수 있다. 이와 유사하게, 맵핑 테이블 생성부(220)은 독출 전압 오프셋과 대응하는 중간 프로그램 순서 스탬프를 일대일 관계로 제3 맵핑 테이블에 저장할 수 있도 있고, 독출 전압 오프셋과 대응하는 중간 프로그램 순서 스탬프를 부등호 관계로 제3 맵핑 테이블에 저장할 수 있다. 맵핑 테이블 생성부(220)의 구체적인 동작에 대해서는 도 16 내지 도 22를 참조하여 후술하기로 한다.
독출 전압 결정부(230)는 제1 내지 제3 맵핑 테이블들 및 프로그램 순서 정보를 기초로 하여 메모리 장치(100)에 대한 독출 동작을 수행하기 위한 독출 전압을 가변적으로 결정할 수 있다. 예를 들어, 호스트로부터 독출 요청이 수신되는 경우 또는 메모리 장치(100)에 대한 독출 커맨드가 생성되는 경우, 독출 전압 결정부(230)의 동작이 개시될 수 있다. 구체적으로, 독출 전압 결정부(230)는 프로그램 순서 정보를 기초로 복수의 메모리 그룹들 중 독출하고자 하는 메모리 그룹에 대응하는 프로그램 순서 스탬프를 검색하고, 검색된 프로그램 순서 스탬프에 대응하는 독출 전압 오프셋을 검색하며, 검색된 독출 전압 오프셋을 이용하여 메모리 그룹에 대한 독출 동작을 수행할 수 있다.
일 실시예에서, 메모리 그룹들이 메모리 블록 단위로 구분될 수 있고, 동일 메모리 블록에 포함된 제1 어드레스 및 제2 어드레스에 대한 독출 동작을 순차적으로 수행하는 경우, 독출 전압 결정부(230)는 프로그램 순서 정보를 참조하여, 제1 어드레스에 대한 독출 전압을 결정할 수 있다. 반면, 독출 전압 결정부(230)는 프로그램 순서 정보를 참조하지 않고, 제2 어드레스에 대한 독출 전압을 상기 제1 어드레스에 대한 독출 전압과 동일하게 결정할 수 있다.
다른 실시예에서, 메모리 그룹들이 워드 라인 단위로 구분될 수 있고, 동일 워드 라인에 연결된 제1 페이지 및 제2 페이지에 대한 독출 동작을 순차적으로 수행하는 경우, 독출 전압 결정부(230)는 프로그램 순서 정보를 참조하여, 제1 페이지에 대한 독출 전압을 결정할 수 있다. 반면, 독출 전압 결정부(230)는 프로그램 순서 정보를 참조하지 않고, 제2 페이지에 대한 독출 전압을 상기 제1 페이지에 대한 독출 전압과 동일하게 결정할 수 있다.
도 2는 도 1의 메모리 시스템에 포함된 메모리 장치의 일 예(100)를 상세하게 나타내는 블록도이다.
도 2를 참조하면, 메모리 장치(100)는 메모리 셀 어레이(110), 제어 로직(control logic)(120), 전압 생성부(130), 로우 디코더(140) 및 페이지 버퍼(150)를 포함할 수 있다. 도시되지는 않았으나, 메모리 장치(100)는 입출력 회로 또는 입출력 인터페이스를 더 포함할 수 있다. 이하에서는, 메모리 장치(100)에 포함된 구성 요소들에 대하여 상술하기로 한다.
메모리 셀 어레이(110)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결될 수 있다. 도시되지는 않았지만, 메모리 셀 어레이(110)는 하나 이상의 스트링 선택 라인(string selection line, SSL) 및 하나 이상의 접지 선택 라인(ground selection line, GSL)에 연결될 수 있다. 메모리 셀 어레이(110)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(도 4의 MC, 도 6의 MC1 내지 MC8)을 포함할 수 있다. 복수의 메모리 셀들의 각각은 1 비트 데이터 또는 멀티 비트 데이터를 저장할 수 있다.
메모리 셀 어레이(110)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(110)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압(threshold voltage, Vth)에 따라 구분되는 소거 상태(E) 및 적어도 하나의 프로그램 상태를 가질 수 있다.
일 실시예에서, 메모리 셀(MC)이 싱글 레벨 셀인 경우, 메모리 셀(MC)은 소거 상태(E) 및 프로그램 상태(P)를 가질 수 있다. 다른 실시예에서, 메모리 셀(MC)은 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있고, n은 3 이상의 자연수일 수 있다. 일 예에서, 메모리 셀(MC)이 멀티 레벨 셀인 경우, n은 3이다. 다른 예에서, 메모리 셀(MC)이 트리플 레벨 셀인 경우, n은 7이다.
메모리 셀 어레이(110)는 싱글 레벨 셀들을 포함하는 싱글 레벨 셀 블록, 멀티 레벨 셀들을 포함하는 멀티 레벨 셀 블록 및 트리플 레벨 셀들을 포함하는 트리플 레벨 셀 블록 중 적어도 하나를 포함할 수 있다. 다시 말해, 메모리 셀 어레이(110)에 포함된 복수의 메모리 블록들 중 일부 메모리 블록은 싱글 레벨 셀 블록일 수 있고, 다른 메모리 블록들은 멀티 레벨 셀 블록 또는 트리플 레벨 셀 블록일 수 있다.
제어 로직(120)은 메모리 컨트롤러(200)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(110)에 데이터를 기입하거나 메모리 셀 어레이(110)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이로써, 제어 로직(120)은 메모리 장치(100) 내의 각종 동작을 전반적으로 제어할 수 있다.
제어 로직(120)에서 출력된 각종 제어 신호는 전압 생성부(130), 로우 디코더(140) 및 페이지 버퍼(150)에 제공될 수 있다. 구체적으로, 제어 로직(120)은 전압 생성부(130)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(140)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼(150)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 제어 로직(120)은 전압 생성부(130), 로우 디코더(140) 및 페이지 버퍼(150)에 다른 제어 신호들을 더 제공할 수 있다.
전압 생성부(130)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(110)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(130)는 복수의 워드 라인들(WL)을 구동하기 위한 워드 라인 구동 전압(VWL)을 생성할 수 있다. 이때, 제1 구동 전압(VWL)은 프로그램 전압(또는 기입 전압), 독출 전압, 소거 전압, 인히빗 전압 또는 프로그램 검증(verify) 전압일 수 있다. 도시되지는 않았지만, 전압 생성부(130)는 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 스트링 선택 라인 구동 전압(VSSL) 및 복수의 그라운드 선택 라인들(GSL)을 구동하기 위한 그라운드 선택 라인 구동 전압(VGSL)을 더 생성할 수 있다.
로우 디코더(140)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(110)에 연결되고, 제어 로직(120)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(140)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 인히빗 전압을 인가할 수 있다. 또한, 프로그램 동작 시에 로우 디코더(140)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 인히빗 전압을 인가할 수 있다.
페이지 버퍼(150)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(110)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(150)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(110)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(150)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(110)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다.
도 3은 도 2의 메모리 장치에 포함된 메모리 셀 어레이의 일 예(110)를 나타낸다.
도 3을 참조하면, 메모리 셀 어레이(110)는 플래쉬 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(110)는 a(a는 2 이상의 정수)개의 메모리 블록들(BLK1 내지 BLKa)을 포함하고, 각 메모리 블록(BLK1 내지 BLKa)은 b(b는 2 이상의 정수)개의 페이지들(PAGE1 내지 PAGEb)을 포함하며, 각 페이지들(PAGE1 내지 PAGEb)은 c(c는 2 이상의 정수)개의 섹터들(SEC1 내지 SECc)을 포함할 수 있다. 도 3에서는 도시의 편의를 위해, 메모리 블록 BLK1에 대하여만 페이지들(PAGE0 내지 PAGEb) 및 섹터들(SEC1 내지 SECc)을 도시하였으나, 다른 메모리 블록들(BLK2 내지 BLKa)도 블록 BLK1와 동일한 구조를 가질 수 있다.
도 4는 도 3의 메모리 셀 어레이에 포함된 메모리 블록의 일 예(BLK1)를 나타내는 회로도이다.
도 4를 참조하면, 제1 메모리 블록(BLK1)은 수평 구조의 낸드 플래쉬 메모리일 수 있고, 도 3에 도시된 각 메모리 블록들(BLK1 내지 BLKa)은 도 4와 같이 구현될 수 있다. 제1 메모리 블록(BLK1)은 예를 들어, 8개의 메모리 셀들이 직렬로 연결되는 d(d는 2 이상의 정수)개의 스트링(STR)들을 포함할 수 있다. 각 스트링(STR)은 직렬로 연결된 메모리 셀들(MC)의 양 끝에 각각 연결되는 드레인 선택 트랜지스터(Str1) 및 소스 선택 트랜지스터(Str2)를 포함할 수 있다. 여기서, 스트링들(STR)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수는 실시예에 따라 다양하게 변경될 수 있다.
도 4와 같은 구조를 갖는 낸드 플래쉬 메모리 장치는 메모리 블록 단위로 소거가 수행되고, 각 워드 라인(WL1 내지 WL8)에 대응하는 페이지(PAGE) 단위로 프로그램을 수행할 수 있다. 일 예에서, 메모리 셀(MC)이 싱글 레벨 셀인 경우, 각 워드 라인에 하나의 페이지(PAGE)가 대응될 수 있다. 다른 예에서, 메모리 셀(MC)이 멀티 레벨 셀 또는 트리플 레벨 셀인 경우, 각 워드 라인에 복수의 페이지들(PAGE)이 대응될 수 있다.
도 5는 도 4의 메모리 블록에 포함된 메모리 셀의 일 예(MC)를 나타내는 단면도이다.
도 5를 참조하면, 메모리 셀(MC)은 채널 영역(1), 전하 저장층(2) 및 제어 게이트(3)를 포함할 수 있다. 일 예에서, 전하 저장층(2)은 도체인 플로팅 게이트로 구현될 수 있고, 이러한 구성을 가지는 메모리 셀(MC)을 플로팅 게이트 구조 셀이라고 지칭할 수 있다. 다른 예에서, 전하 저장층(2)은 부도체, 예를 들어, SiN로 구현될 수 있고, 이러한 구성을 가지는 메모리 셀(MC)을 전하 트랩형 플래쉬(charge trap flash, CTF) 셀이라고 지칭할 수 있다.
메모리 셀(MC)에 대한 프로그램 동작을 수행하기 위해서, 상대적으로 높은 프로그램 전압이 제어 게이트(3)에 인가되고, 채널 영역(1)에 상대적으로 낮은 전압(예를 들면, 0V)이 인가될 수 있다. 이러한 바이어스 조건에 따라, 제어 게이트(3)에서 채널 영역(1)의 방향으로 전계가 형성됨으로써, 전하들, 예를 들어, 전자들(electrons)이 채널 영역(1)에서 전하 저장층(2)으로 이동될 수 있으며, 이에 따라, 메모리 셀(MC)이 프로그램될 수 있다.
플래쉬 메모리 장치에서는 메모리 셀(MC)의 문턱 전압(threshold voltage, Vth)의 구별에 의해 메모리 셀(MC)에 저장된 데이터가 독출될 수 있다. 이때, 메모리 셀(MC)의 문턱 전압(Vth)은 전하 저장층(2)에 저장된 전자의 양에 따라 결정될 수 있다. 구체적으로, 전하 저장층(2)에 저장된 전자가 많을수록 메모리 셀(MC)의 문턱 전압은 높아질 수 있다.
프로그램 동작이 완료된 메모리 셀(MC)은 프로그램 완료 후의 경과 시간이 증가할수록, 다시 말해, 리텐션 시간이 증가할수록 전하 손실(charge loss)이 증가하게 된다. 구체적으로, 프로그램 동작을 통해 전하 저장층(2)에 트랩된 전자들은 시간의 경과에 따른 재배열 현상, 예를 들어, 채널 영역(1)으로의 유실(도 5에서 수직 방향으로 표시된 화살표 참조), 전하 저장층(2)을 통한 이동(도 5에서 수평 방향으로 표시된 화살표 참조) 등과 같은 다양한 현상들로 인해 감소될 수 있다. 이에 따라, 메모리 셀(MC)의 문턱 전압(Vth)이 감소하게 되고, 그 결과, 메모리 셀들(MC)의 문턱 전압(Vth)에 따른 산포에 대해 처짐(drooping)과 퍼짐(spreading)이 발생할 수 있다.
도 6은 도 3의 메모리 셀 어레이에 포함된 메모리 블록의 다른 예(BLK1')를 나타내는 회로도이다.
도 6을 참조하면, 제1 메모리 블록(BLK1')은 수직 구조의 낸드 플래쉬 메모리일 수 있고, 도 3에 도시된 각 메모리 블록들(BLK1 내지 BLKa)은 도 6과 같이 구현될 수 있다. 제1 메모리 블록(BLK1')은 복수의 낸드 스트링들(NS11 내지 NS33), 복수의 워드 라인들(WL1 내지 WL8), 복수의 비트 라인들(BL1 내지 BL3), 그라운드 선택 라인(GSL), 복수의 스트링 선택 라인들(SSL1 내지 SSL3) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 낸드 스트링들의 개수, 워드 라인들의 개수, 비트 라인들의 개수, 그라운드 선택 라인의 개수 및 스트링 선택 라인들의 개수는 실시예에 따라 다양하게 변경될 수 있다.
비트 라인(BL1 내지 BL3)과 공통 소스 라인(CSL) 사이에는 낸드 스트링(NS11 내지 NS33)이 연결된다. 각 낸드 스트링(예를 들면, NS11)은 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1 내지 MC8) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(SSL1 내지 SSL3)에 연결된다. 복수의 메모리 셀(MC1 내지 MC8)은 각각 대응하는 워드 라인(WL1 내지 WL8)에 연결된다. 그라운드 선택 트랜지스터(GST)는 그라운드 선택 라인(GSL)에 연결되어 있다. 스트링 선택 트랜지스터(SST)는 대응하는 비트 라인(BL)에 연결되고, 그라운드 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결된다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되어 있고, 스트링 선택 라인(SSL1 내지 SSL3)은 분리되어 있다. 제 1 워드 라인(WL1)에 연결되어 있고 낸드 스트링(NS11, NS12, NS13)에 속해 있는 메모리 셀들을 프로그램하는 경우에는, 제1 워드 라인(WL1)과 제1 스트링 선택 라인(SSL1)이 선택된다.
도 7은 도 6의 회로도에 따른 메모리 블록(BLK1')을 나타내는 사시도이다.
도 7을 참조하면, 제1 메모리 블록(BLK1')은 기판(SUB)에 대해 수직 방향으로 형성되어 있다. 기판(SUB)에는 공통 소스 라인(CSL)이 배치되고, 기판(SUB) 위에는 게이트 전극들(gate electrodes, GE)과 절연막(insulation layer, IL)이 교대로 적층된다. 또한, 게이트 전극(GE)과 절연막(IL) 사이에는 전하 저장층(charge storage layer, CS)이 형성될 수 있다.
교대로 적층된 복수의 게이트 전극들(GE)과 절연막들(IL)을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar, P)가 형성된다. 필라(P)는 게이트 전극들(GE)과 절연막들(IL)을 관통하여 기판(SUB)과 연결된다. 필라(P)의 외곽 부분(O)은 반도체 물질로 구성되어, 채널 영역으로 기능할 수 있으며, 내부(I)는 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다.
메모리 블록(BLK1')의 게이트 전극들(GE)은 접지 선택 라인(GSL), 복수의 워드 라인(WL1 내지 WL8), 그리고 스트링 선택 라인(SSL)에 각각 연결될 수 있다. 그리고 메모리 블록(BLK1')의 필라(P)는 복수의 비트 라인들(BL1 내지 BL3)과 연결될 수 있다. 도 7에서는, 제1 메모리 블록(BLK1')이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인들(WL1 내지 WL8), 그리고 3개의 비트 라인(BL1 내지 BL3)을 포함하는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
도 8a는 메모리 셀이 멀티 레벨 셀인 경우, 메모리 장치의 프로그램 완료 후의 문턱 전압에 따른 산포를 나타내는 그래프이다.
도 8a를 참조하면, 가로축은 문턱 전압(Vth)을 나타내고, 세로축은 메모리 셀들(MC)의 개수를 나타낸다. 메모리 셀(MC)은 도 4 또는 도 6에 도시된 메모리 셀들일 수 있다. 메모리 셀(MC)이 2 비트로 프로그램되는 멀티 레벨 셀인 경우에, 메모리 셀(MC)은 소거 상태(E), 제1 프로그램 상태(P1), 제2 프로그램 상태(P2) 및 제3 프로그램 상태(P3) 중 하나를 가질 수 있다. 싱글 레벨 셀에 비하여 멀티 레벨 셀의 경우, 문턱 전압(Vth) 분포들 사이의 간격이 좁으므로, 멀티 레벨 셀에서는 문턱 전압(Vth)의 작은 변화에 의해 중대한 문제가 야기될 수 있다.
제1 내지 제3 독출 전압들(Vr1, Vr2, Vr3)의 각각은 초기에 설정된 디폴트 레벨에 대응된다. 구체적으로, 제1 독출 전압(Vr1)은 소거 상태(E)를 가지는 메모리 셀(MC)의 산포와 제1 프로그램 상태(P1)를 가지는 메모리 셀(MC)의 산포 사이의 전압 레벨을 가진다. 제2 독출 전압(Vr2)은 제1 프로그램 상태(P1)를 가지는 메모리 셀(MC)의 산포와 제2 프로그램 상태(P2)를 가지는 메모리 셀(MC)의 산포 사이의 전압 레벨을 가진다. 제3 독출 전압(Vr3)은 제2 프로그램 상태(P2)를 가지는 메모리 셀(MC)의 산포와 제3 프로그램 상태(P3)를 가지는 메모리 셀(MC)의 산포 사이의 전압 레벨을 가진다.
예를 들어, 제1 독출 전압(Vr1)이 메모리 셀(MC)의 제어 게이트에 인가되면, 소거 상태(E)의 메모리 셀(MC)은 턴온되는 반면, 제1 프로그램 상태(P1)의 메모리 셀(MC)은 턴오프된다. 메모리 셀(MC)이 턴온되면 메모리 셀(MC)을 통해 전류가 흐르고, 메모리 셀(MC)이 턴오프되면 메모리 셀(MC)을 통해 전류가 흐르지 않는다. 따라서, 메모리 셀(MC)의 턴온 여부에 따라 메모리 셀(MC)에 저장된 데이터가 구별될 수 있다.
일 실시예에서, 제1 독출 전압(Vr1)을 인가하여 메모리 셀(MC)이 턴온되면 데이터가 '1'이 저장되고, 메모리 셀(MC)이 턴오프되면 데이터가 '0'이 저장된 것으로 구별될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 다른 실시예에서, 제1 독출 전압(Vr1)을 인가하여 메모리 셀(MC)이 턴온되면 데이터가 '0'이 저장되고, 메모리 셀(MC)이 턴오프되면 데이터가 '1'이 저장된 것으로 구별할 수도 있다. 이와 같이, 데이터의 논리 레벨의 할당은 실시예에 따라 변경될 수 있다.
도 8b는 도 8a의 산포를 가지는 메모리 장치의 프로그램 완료 후 일정 시간이 경과한 후의 문턱 전압에 따른 산포를 나타내는 그래프이다.
도 8b를 참조하면, 소거 상태(E), 제1 내지 제3 프로그램 상태들(P1 내지 P3)로 각각 프로그램된 메모리 셀들(MC)은 리텐션 시간이 증가할수록 문턱 전압(Vth)이 감소할 수 있고, 이에 따라, 도 8b에 도시된 바와 같이 변경된 산포를 가질 수 있다. 도 8b에서, 빗금 친 부분에 속하는 메모리 셀들(MC)은 독출 오류가 발생할 수 있고, 이에 따라, 메모리 장치(100)의 신뢰성이 저하될 수 있다.
예를 들어, 제1 독출 전압(Vr1)을 이용하여 메모리 장치(100)에 대한 독출 동작을 수행할 경우, 빗금 친 부분에 속하는 메모리 셀들(MC)은 제1 프로그램 상태(P1)로 프로그램 되었음에도 불구하고, 문턱 전압(Vth)의 감소에 의해 소거 상태(E)로 판단될 수 있다. 이에 따라, 독출 동작에 오류가 발생되어 메모리 장치(100)의 신뢰성이 저하될 수 있다.
메모리 장치(100)로부터 데이터를 독출하는 경우 RBER(raw bit error rate)은 독출 전압의 전압 레벨에 따라 달라지는데, 독출 전압의 최적 전압 레벨은 메모리 셀들(MC)의 산포 모양에 따라 결정될 수 있다. 따라서, 메모리 셀들(MC)의 산포가 변화함에 따라 메모리 장치(100)로부터 데이터를 독출하는데 필요한 독출 전압의 최적 전압 레벨도 변경될 수 있다. 그러므로, 산포의 변화를 기초로 하여 독출 전압의 전압 레벨을 변경함으로써 독출 전압의 최적 전압 레벨을 결정하는 것이 요구된다. 이 경우, 효율적으로 독출 전압의 최적 전압 레벨을 결정하기 위해서는, 연산을 단순화시켜 연산 시간 및 소비 전력을 감소시키는 것이 요구된다.
이상에서는 도 8a 및 도 8b를 참조하여, 메모리 셀(MC)이 멀티 레벨 셀인 경우를 설명하였다. 그러나, 본 발명은 이에 한정되는 것은 아니고, 메모리 셀(MC)은 싱글 레벨 셀, 트리플 레벨 셀 또는 4 비트 이상으로 프로그램되는 셀일 수 있다. 또한, 도 1 및 도 2의 메모리 장치(100)는 서로 다른 개수의 비트로 프로그램 되는 메모리 셀(MC)들을 포함할 수도 있다.
도 9는 도 1의 메모리 시스템에 포함된 메모리 컨트롤러의 일 예(200)를 상세하게 나타내는 블록도이다.
도 9를 참조하면, 메모리 컨트롤러(200)는 프로그램 순서 관리부(210), 맵핑 테이블 생성부(220), 독출 전압 결정부(230), 호스트 인터페이스(240), 중앙 처리 장치(CPU, 250), 버퍼 메모리(260), ECC 부(270) 및 메모리 인터페이스(280)를 포함할 수 있다.
호스트 인터페이스(240)는 호스트와 인터페이스하여 호스트로부터 메모리 동작의 요청을 수신한다. 구체적으로, 호스트 인터페이스(240)는 호스트로부터 데이터의 독출 및 기록 등의 각종 요청을 수신하고, 이에 응답하여 메모리 장치(100)에 대한 메모리 동작을 위한 각종 내부 신호들을 발생한다. 예를 들어, 메모리 콘트롤러(200)는 USB, MMC, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI 및 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트와 통신하도록 구성될 수 있다.
중앙 처리 장치(250)는 메모리 컨트롤러(200)의 전반적인 동작을 제어할 수 있으며, 일 예로서 메모리 장치(100)에 대한 메모리 동작에 관련된 각종 기능 블록들을 제어할 수 있다. 본 실시예에서, 프로그램 순서 관리부(210), 맵핑 테이블 생성부(220) 및 독출 전압 결정부(230)를 별개의 동작 블록으로 도시하였으나, 프로그램 순서 관리부(210), 맵핑 테이블 생성부(220), 독출 전압 결정부(230)는 중앙 처리 장치(250)의 일부로 동작할 수 있다. 프로그램 순서 관리부(210)의 구체적인 동작에 대해서는 도 10a 내지 도 15를 참조하여 후술하기로 한다. 또한, 맵핑 테이블 생성부(220) 및 독출 전압 결정부(230)의 구체적인 동작에 대해서는 도 16 내지 도 25b를 참조하여 후술하기로 한다.
버퍼 메모리(260)는 호스트 인터페이스(240)를 통해 외부로 전달되는 데이터 및 메모리 인터페이스(280)를 통해 메모리 장치(100)로부터 전달되는 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리(260)는 메모리 장치(100)를 제어하는데 필요한 정보를 임시 저장할 수 있다. 본 실시예에서, 버퍼 메모리(260)는 프로그램 순서 관리부(210)에서 생성된 프로그램 순서 정보를 임시 저장할 수 있다. 또한, 본 실시예에서, 버퍼 메모리(260)는 맵핑 테이블 생성부(220)에서 생성된 제1 내지 제3 맵핑 테이블들을 임시 저장할 수 있다. 예를 들어, 버퍼 메모리(260)는 DRAM, SRAM, 또는 DRAM과 SRAM의 조합으로 구성될 수 있으나, 본 발명은 이에 한정되지 않는다.
ECC 부(270)는 RS 코드(Reed-Solomon code), 헤밍 코드(Hamming code), CRC(Cyclic Redundancy Code) 등과 같은 알고리즘을 이용하여 기록 데이터에 대한 ECC 인코딩 처리 및 독출 데이터에 대한 ECC 디코딩 처리를 수행할 수 있으며, 예컨대 메모리 장치(100)로부터 독출된 데이터에 대해 에러 검출 결과를 발생하고, 또한 독출된 데이터에 대해 에러 정정 동작을 수행할 수 있다. 일 예로서, ECC 부(270)는 데이터를 프로그램할 때에 생성되어 저장된 패리티(parity)와 데이터를 독출할 때 생성된 패리티 비트를 서로 비교하여 에러 비트를 검출하고, 검출된 에러 비트에 대한 소정의 논리 연산(예컨대, 배타적 논리합(XOR))을 수행함으로써 에러 비트를 정정할 수 있다.
메모리 인터페이스(280)는 메모리 컨트롤러(200) 내부에서 생성된 각종 신호들(예컨대, 커맨드, 어드레스, 독출 전압 제어 신호 등)을 메모리 장치(100)와 송수신하기 위한 인터페이싱을 수행할 수 있다.
도 10a 내지 도 10e은 본 발명의 실시예들에 따른 프로그램 순서 정보의 관리 동작들을 나타낸다.
도 10a 내지 도 10e에 도시된 프로그램 순서 정보의 관리 동작들은 도 9의 프로그램 순서 관리부(210)에 의해 수행될 수 있다. 도 10a 내지 도 10d는 복수의 메모리 그룹들이 메모리 블록 단위로 구분되는 경우, 프로그램 순서 관리부(210)의 동작을 나타내며, 도 10e는 복수의 메모리 그룹들이 워드 라인 단위로 구분되는 경우, 프로그램 순서 관리부(210)의 동작을 나타낸다.
도 10a를 참조하면, 프로그램 순서 관리부(210)는 메모리 블록에 대한 프로그램 동작 또는 소거 동작이 수행될 때에 해당 메모리 블록에 대한 프로그램 순서 스탬프(POS)를 할당할 수 있다. 메모리 장치(100)에 포함된 복수의 메모리 블록들 중 제1 메모리 블록(111)에 대해 첫 번째로 프로그램 동작이 수행되는 경우, 제1 메모리 블록(111)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '1'로 할당된다. 이어서, 제2 메모리 블록(112)에 대해 두 번째로 프로그램 동작이 수행되는 경우, 제2 메모리 블록(112)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '2'로 할당된다. 이어서, 제3 메모리 블록(113)에 대해 100 번째로 프로그램 동작이 수행되는 경우, 제3 메모리 블록(113)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '100'으로 할당된다. 이어서, 제4 메모리 블록(114)에 대해 101번째로 프로그램 동작이 수행되는 경우, 제4 메모리 블록(114)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '101'로 할당된다.
도 10b를 참조하면, 프로그램 순서 관리부(210)는 복수의 메모리 블록들에 대해 동시에 또는 순차적으로 프로그램 동작이 수행될 때에 해당 복수의 메모리 블록들에 대해 동일한 프로그램 순서 스탬프(POS)를 할당할 수 있다. 또한, 프로그램 순서 관리부(210)는 복수의 메모리 블록들에 대해 동시에 또는 순차적으로 소거 동작이 수행될 때에(즉, 액티브 메모리 블록으로 할당될 때에) 해당 복수의 메모리 블록들에 대해 동일한 프로그램 순서 스탬프(POS)를 할당할 수 있다.
일 실시예에서, 제3 메모리 블록(113) 및 제5 메모리 블록(115)에 대해 동시에 프로그램 동작이 수행되는 경우, 제3 메모리 블록(113) 및 제5 메모리 블록(115)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '100'으로 할당된다. 다른 실시예에서, 제3 메모리 블록(113)에 대한 프로그램 동작과 제5 메모리 블록(115)에 대한 프로그램 동작 사이의 시간이 임계 시간(예를 들어, 10 초) 이내인 경우, 제3 메모리 블록(113) 및 제5 메모리 블록(115)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '100'으로 할당된다. 이와 같이, 본 실시예에 따르면, 복수의 메모리 그룹들이 하나의 프로그램 순서 스탬프(POS)를 공유할 수 있다.
도 10c를 참조하면, 프로그램 순서 관리부(210)는 메모리 블록에 대한 프로그램 동작이 시작될 때에 또는 메모리 블록에 대한 소거 동작이 수행될 때에 해당 메모리 블록에 대한 프로그램 순서 스탬프(POS)를 할당할 수 있다. 일 실시예에서, 제4 메모리 블록(114)에 대한 프로그램 동작이 시작되는 경우, 제4 메모리 블록(114)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '101'로 할당된다. 다른 실시예에서, 제4 메모리 블록(114)에 대한 소거 동작이 시작되는 경우, 제4 메모리 블록(114)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '101'으로 할당된다.
도 10d를 참조하면, 프로그램 순서 관리부(210)는 메모리 블록에 대한 프로그램 동작이 완료될 때에 해당 메모리 블록에 대한 프로그램 순서 스탬프(POS)를 할당할 수 있다. 본 실시예에서, 제4 메모리 블록(114)에 대한 프로그램 동작이 완료되는 경우, 제4 메모리 블록(114)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '101'로 할당된다.
도 10e를 참조하면, 프로그램 순서 관리부(210)는 복수의 메모리 그룹들을 워드 라인 별로 구분하여, 워드 라인 별로 프로그램 순서 정보를 생성할 수 있다. 예를 들어, 수직 구조의 낸드 플래쉬 메모리 장치의 경우, 하나의 메모리 블록에 포함된 복수의 워드 라인들에 대해, 그라운드 선택 라인(GSL)에 인접하게 배치된 워드 라인부터 스트링 선택 라인(SSL)에 인접하게 배치된 워드 라인의 순서로 프로그램 동작이 수행된다. 따라서, 하나의 메모리 블록에 포함된 워드 라인에 대한 프로그램 순서 스탬프가 할당된 경우, 해당 워드 라인에 인접한 다른 워드 라인에 대한 프로그램 순서를 예측할 수 있다.
본 실시예에서, 프로그램 순서 관리부(210)는 워드 라인에 대한 프로그램 동작 또는 소거 동작이 수행될 때에 해당 워드 라인에 대한 프로그램 순서 스탬프(POS)를 할당할 수 있다. 일 실시예에서, 프로그램 순서 관리부(210)는 워드 라인에 대해 여러 번에 걸쳐 프로그램 동작이 수행되는 경우 최초로 프로그램 동작이 수행될 때에 해당 워드 라인에 대한 프로그램 순서 스탬프를 할당할 수 있다. 다른 실시예에서, 프로그램 순서 관리부(210)는 워드 라인에 대해 여러 번에 걸쳐 프로그램 동작이 수행되는 경우 마지막으로 프로그램 동작이 수행될 때에 해당 워드 라인에 대한 프로그램 순서 스탬프를 할당할 수 있다. 또 다른 실시예에서, 프로그램 순서 관리부(210)는 워드 라인에 대해 리 프로그램(reprogram) 동작이 수행될 때에 파인(fine) 프로그램 동작이 완료될 때에 해당 워드 라인에 대한 프로그램 순서 스탬프를 할당할 수 있다.
제1 메모리 블록(111)에 포함된 워드 라인(WL10)에 대해 첫 번째로 프로그램 동작이 수행되는 경우, 해당 워드 라인(WL10)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '1'로 할당된다. 이어서, 제2 메모리 블록(112)에 포함된 워드 라인(WL50)에 대해 두 번째로 프로그램 동작이 수행되는 경우, 해당 워드 라인(WL50)에 대응하는 프로그램 순서 스탬프(POS)이 '2'로 할당된다. 이어서, 제3 메모리 블록(113)에 포함된 워드 라인(WL30)에 대해 100 번째로 프로그램 동작이 수행되는 경우, 해당 워드 라인(WL30)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '100'으로 할당된다. 이어서, 제4 메모리 블록(114)에 포함된 워드 라인(WL80)에 대해 101번째로 프로그램 동작이 수행되는 경우, 해당 워드 라인(WL80)에 대응하는 프로그램 순서 스탬프(POS)의 값이 '101'로 할당된다.
본 실시예에 따라, 복수의 메모리 그룹들을 워드 라인 별로 구분하여, 워드 라인 별로 프로그램 순서 정보를 생성함으로써, 동일 블록 내의 서로 다른 워드 라인들에 대한 프로그램 시간 차이가 큰 경우에도 메모리 장치의 신뢰성을 보장할 수 있다. 예를 들어, 메모리 장치에 대해 오랫동안 프로그램 동작을 수행하지 않다가 프로그램 동작을 다시 수행하는 경우에는 동일 블록 내의 서로 다른 워드 라인들에 대한 프로그램 시간 차이가 클 수 있다. 또 다른 예를 들어, 메모리 장치에 대해 오랫동안 전원이 공급되지 않다가 전원 공급이 재개된 경우에도 동일 블록 내의 서로 다른 워드 라인들에 대한 프로그램 시간 차이가 클 수 있다.
도 11은 본 발명의 일 실시예에 따른 프로그램 순서 스탬프를 저장하는 메모리 영역을 나타낸다.
도 11을 참조하면, 프로그램 순서 관리부(210)는 메모리 그룹 별로 프로그램 순서 스탬프(POS)를 할당하고, 해당 메모리 그룹의 일부 영역에 프로그램 순서 스탬프(POS)를 저장할 수 있다. 일 실시예에서, 복수의 메모리 그룹들이 메모리 블록 단위로 구분되는 경우, 프로그램 순서 스탬프를 저장하기 위해, 메모리 블록 별로 예를 들어, 4 B의 메모리 영역이 할당될 수 있다. 본 실시예에서, 메모리 영역은 플래그 영역(F_AR) 및 프로그램 순서 스탬프 영역(POS_AR)으로 구성될 수 있다. 예를 들어, 플래그 영역(F_AR)은 1 비트로 할당될 수 있고, 프로그램 순서 스탬프 영역(POS_AR)는 31 비트로 할당될 수 있다.
플래그 영역(F_AR)은 독출 전압 오프셋과 상기 독출 전압 오프셋에 대응하는 프로그램 순서 스탬프를 저장하는 맵핑 테이블을 업데이트하기 위해 해당 메모리 블록을 사용할지 여부를 나타내는 플래그를 저장하기 위한 영역이다. 여기서, 독출 전압 오프셋은 메모리 장치(100)에 대한 독출 동작을 수행하기 위해 초기에 설정된 독출 전압, 즉, 디폴트 레벨에 대한 오프셋일 수 있다.
일 실시예에서, 프로그램 순서 관리부(210)는 새로운 프로그램 순서 스탬프를 할당할 때에, 플래그를 '0'으로 리셋할 수 있다. 이에 따라, 플래그가 '0'이면, 맵핑 테이블을 업데이트하기 위해 해당 메모리 블록을 사용하고, 플래그가 '1'이면, 맵핑 테이블을 업데이트하기 위해 해당 메모리 블록을 사용하지 않을 수 있다.
다른 실시예에서, 특정 메모리 그룹이 예를 들어, 독출 디스터브(read disturb)에 의해 인접한 프로그램 순서 스탬프들에 대응하는 다른 메모리 그룹들에 비해 전하 손실이 상당히 큰 경우, 플래그를 '1'로 설정할 수 있다. 이러한 특정 메모리 그룹은 아웃라이어(outlier) 그룹이라고 지칭할 수 있다. 이와 같이, 독출 디스터브 등에 의한 아웃라이어 그룹에 대해서는 플래그를 '1'로 설정함으로써, 해당 아웃라이어 그룹의 독출 결과는 맵핑 테이블을 업데이트하지 위해 사용하지 않을 수 있다. 아웃라이어 그룹에 대해서는 통상적인 독출 재시도 동작을 수행할 수 있다.
프로그램 순서 스탬프 영역(POS_AR)은 해당 메모리 블록에 할당된 프로그램 순서 스탬프(POS)를 저장하기 위한 영역이다. 예를 들어, 프로그램 순서 스탬프 영역(POS_AR)는 31 비트로 할당되는 경우, 메모리 블록의 사이즈가 1 TB인 경우, 프로그램/소거 사이클이 12,000회 반복될 때까지 해당 메모리 블록에 대한 프로그램 순서 스탬프(POS)를 안정적으로 저장할 수 있다.
도 12는 본 발명의 일 실시예에 따른 프로그램 순서 정보를 저장하는 테이블을 나타낸다.
도 12를 참조하면, 프로그램 순서 관리부(210)는 복수의 메모리 그룹들의 어드레스 별로 프로그램 순서 스탬프를 검색하도록, 복수의 메모리 그룹들의 어드레스에 따른 프로그램 순서 스탬프를 프로그램 순서 테이블(TABLE1)에 순차적으로 저장할 수 있다. 일 예에서, 메모리 그룹들이 메모리 블록 단위로 구분되는 경우, 프로그램 순서 테이블(TABLE1)은 메모리 블록의 어드레스에 따른 프로그램 순서 스탬프를 저장할 수 있다. 다른 예에서, 메모리 그룹들이 워드 라인 단위로 구분되는 경우, 프로그램 순서 테이블(TABLE1)은 워드 라인의 어드레스에 따른 프로그램 순서 스탬프를 저장할 수 있다.
참조부호 '121'은 메모리 장치(100)에서 첫 번째 프로그램 동작이 수행되는 경우의 프로그램 순서 정보 테이블(TABLE1)을 나타낸다. 첫 번째로 프로그램 동작이 수행되는 메모리 그룹의 어드레스가 '2'인 경우, 해당 메모리 그룹에 대응하는 프로그램 순서 스탬프(POS)의 값이 '1'로 할당된다. 이 때, 나머지 메모리 그룹들, 즉, (N-1)개의 메모리 그룹들에 대해서는 프로그램 동작이 수행되지 않았으므로 나머지 메모리 그룹들에 대응하는 프로그램 순서 스탬프(POS)는 모두 '0'이다.
참조부호 '122'는 메모리 장치(100)에서 30,000 번째로 프로그램 동작이 수행되는 경우의 프로그램 순서 정보 테이블(TABLE1)을 나타낸다. 30,000 번째로 프로그램 동작이 수행되는 메모리 그룹의 어드레스가 'K'인 경우, 해당 메모리 그룹에 대응하는 프로그램 순서 스탬프(POS)의 값이 '30000'으로 할당된다.
도 10a 내지 도 10e를 참조하여 상술한 바와 같이, 프로그램 순서 관리부(210)는 메모리 장치(100)에 포함된 복수의 메모리 블록들 중 제1 메모리 블록에 대한 프로그램 동작이 시작될 때에, 제1 메모리 블록에 대한 프로그램 동작이 완료될 때에, 또는 제1 메모리 블록에 대한 소거 동작이 수행될 때에, 제1 메모리 블록에 대한 프로그램 순서 스탬프를 할당할 수 있다. 또한, 프로그램 순서 관리부(210)는 메모리 장치(100)에 포함된 복수의 워드 라인들 중 제1 워드 라인에 대해 최초로 프로그램 동작이 수행될 때에 또는 마지막으로 프로그램 동작이 수행될 때에, 제1 워드 라인에 대한 프로그램 순서 스탬프를 할당할 수 있다.
도 13은 본 발명의 다른 실시예에 따른 프로그램 순서 정보를 저장하는 테이블을 나타낸다.
도 13을 참조하면, 프로그램 순서 관리부(210)는 프로그램 순서 스탬프 별로 복수의 메모리 그룹들의 어드레스를 검색하도록, 순차적으로 증가하는 프로그램 순서 스탬프에 따라 프로그램 순서 스탬프에 대응하는 메모리 그룹의 어드레스를 프로그램 순서 테이블(TABLE2)에 저장할 수 있다. 일 예에서, 메모리 그룹들이 메모리 블록 단위로 구분되는 경우, 프로그램 순서 테이블(TABLE2)은 프로그램 순서 스탬프 별로 대응하는 메모리 블록의 어드레스를 저장할 수 있다. 다른 예에서, 메모리 그룹들이 워드 라인 단위로 구분되는 경우, 프로그램 순서 테이블(TABLE2)은 프로그램 순서 스탬프 별로 대응하는 워드 라인의 어드레스를 저장할 수 있다.
메모리 장치(100)에서 첫 번째로 프로그램 동작이 수행되는 경우의 메모리 그룹의 어드레스는 '2843'일 수 있고, 두 번째로 프로그램 동작이 수행되는 경우의 메모리 그룹의 어드레스는 '173'일 수 있으며, M 번째로 프로그램 동작이 수행되는 경우의 메모리 그룹의 어드레스는 '27'일 수 있다. 이와 같이, 프로그램 순서 테이블(TABLE2)은 순차적으로 증가하는 프로그램 순서 스탬프에 따라 대응하는 메모리 그룹의 어드레스를 저장함으로써, 프로그램 순서에 따라 메모리 그룹들에 대한 동작을 제어하고자 할 때에 프로그램 순서 정보를 검색하는데 걸리는 시간이 감소할 수 있다.
도 14a 및 도 14b는 본 발명의 다른 실시예에 따른 프로그램 순서 정보를 저장하는 원형 버퍼를 나타낸다.
도 14a를 참조하면, 프로그램 순서 관리부(210)는 원형 버퍼(circular buffer 또는 ring buffer)(141)를 이용하여, 프로그램 순서 정보를 저장할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시예에서, 프로그램 순서 관리부(210)는 FIFO(First In Firtout Buffer) 방식의 임의의 버퍼를 이용하여 프로그램 순서 정보를 저장할 수도 있다.
원형 버퍼(141)는 고정된 크기의 버퍼를 양 끝이 연결된 것처럼 사용할 수 있게 해주는 자료 구조이다. 원형 버퍼(141)에 포함된 연속적인 공간에 데이터를 입력시키고, 데이터가 입력된 순서대로 데이터를 출력할 수 있다. 원형 버퍼(141)에서 제일 처음 입력된 데이터의 위치는 시작 인덱스(start index)(SI)로 표시될 수 있다.
도 14b를 참조하면, 원형 버퍼(141)에 포함된 연속적인 공간에 어드레스들이 각각 저장될 수 있다. 이때, 동일한 어드레스가 서로 다른 인덱스에 대응하여 저장될 수 있는데, 예를 들어, 어드레스 '10'은 인덱스 '0' 및 인덱스 '5'에 대응하여 저장될 수 있다. 본 실시예에서, 시작 인덱스(SI)를 예를 들어, '3'으로 표시함으로써 최신 인덱스를 판단할 수 있다.
도 15는 본 발명의 다른 실시예에 따른 프로그램 순서 정보를 저장하는 양방향 연결 리스트를 나타낸다.
도 15를 참조하면, 프로그램 순서 관리부(210)는 이중 연결 리스트(doubly linked list)(151)를 이용하여, 프로그램 순서 정보를 저장할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시예에서, 프로그램 순서 관리부(210)는 단일 연결 리스트를 이용하여 프로그램 순서 정보를 저장할 수도 있다.
이중 연결 리스트(151)는 각 노드에 선행(previous) 노드 및 후속(next) 노드를 가리키는 두 개의 포인터들(pointers) 및 해당 노드의 데이터를 포함하도록 구성함으로써, 양방향 접근이 가능하다. 이중 연결 리스트(151)를 이용함으로써, 프로그램 순서 스탬프 '1'에 해당하는 어드레스 및 가장 최신의 프로그램 순서 스탬프 'M'에 해당하는 어드레스를 용이하게 검색할 수 있다.
본 실시예에서, 프로그램 순서 관리부(210)는 이중 연결 리스트(151)의 각 노드의 데이터 영역에 메모리 그룹의 어드레스를 저장할 수 있다. 예를 들어, 제1 노드(N1)는 프로그램 순서 스탬프 '1'에 해당하는 어드레스 '2843'을 저장하고, 제2 노드(N2)는 프로그램 순서 스탬프 '2'에 해당하는 어드레스 '173'을 저장하며, 제M 노드(NM)는 프로그램 순서 스탬프 'M'에 해당하는 어드레스 '27'을 저장할 수 있다.
도 12 내지 도 15를 참조하여 상술한 바와 같이, 프로그램 순서 관리부(210)는 테이블, 연결 리스트, 이중 연결 리스트, 원형 버퍼 및 FIFO 버퍼 중 적어도 하나를 이용하여, 프로그램 순서 정보를 저장할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 프로그램 순서 관리부(210)는 본 발명의 기술적 사상을 이용하는 다른 방식을 이용하여 프로그램 순서 정보를 저장할 수 있다.
일 예에서, 메모리 장치(100)가 싱글 레벨 셀 블록, 멀티 레벨 셀 블록 및 트리플 레벨 셀 블록 중 적어도 두 개를 포함하는 경우, 프로그램 순서 관리부(210)는 멀티 레벨 셀 블록 및 트리플 레벨 셀 블록 중 적어도 하나에 대해서만 프로그램 순서 정보를 관리할 수 있다. 구체적으로, 프로그램 순서 관리부(210)는 싱글 레벨 셀 블록에 대해서는 별도로 프로그램 순서를 관리하지 않고, 멀티 레벨 셀 블록 또는 트리플 레벨 셀 블록에 대해서만 프로그램 순서를 관리하여 프로그램 순서 정보를 테이블, 연결 리스트, 이중 연결 리스트, 원형 버퍼 또는 FIFO 버퍼를 이용하여 저장할 수 있다.
다른 예에서, 메모리 장치(100)가 멀티 레벨 셀 블록 및 트리플 레벨 셀 블록을 포함하는 경우, 프로그램 순서 관리부(210)는 멀티 레벨 셀 블록에 대한 제1 프로그램 순서 정보를 저장하고, 트리플 레벨 셀 블록에 대한 제2 프로그램 순서 정보를 저장할 수 있다. 이 경우, 제1 및 제2 프로그램 순서 정보는 테이블, 연결 리스트, 이중 연결 리스트, 원형 버퍼 또는 FIFO 버퍼를 이용하여 저장될 수 있다.
도 16은 시간에 따른 독출 윈도우의 변화를 나타내는 그래프이다.
도 16을 참조하면, 가로축은 시간을 로그 스케일로 나타내는데, 구체적으로, 프로그램 완료 후의 경과 시간을 나타낸다. 세로축은 독출 전압 오프셋을 mV 단위로 나타낸다. 독출 윈도우는 메모리 장치에 대한 독출 동작이 성공할 수 있는 독출 전압의 범위를 의미한다. 그러므로, 독출 윈도우 내에 존재하는 전압 레벨을 이용하여 독출 동작을 수행하는 경우 독출 동작이 성공할 수 있는 반면, 독출 윈도우 밖에 존재하는 전압 레벨을 이용하여 독출 동작을 수행하는 경우 독출 동작은 실패할 수 있다.
참조부호 '161'는 독출 윈도우의 상한(upper bound) 레벨의 시간에 따른 변동을 나타내고, 다시 말해, 독출 전압의 범위의 최고 레벨의 시간에 따른 변동을 나타낸다. 참조부호 '162'는 독출 윈도우의 하한(lower bound) 레벨의 시간에 따른 변동을 나타내며, 다시 말해, 독출 전압의 범위의 최저 레벨의 시간에 따른 변동을 나타낸다. 따라서, 참조부호 '161'과 '162' 사이의 독출 전압 오프셋을 이용하여 독출 동작을 수행할 경우 독출 성공하게 되는 반면, 참조부호 '161'보다 크거나 참조부호 '162'보다 작은 독출 전압 오프셋을 이용하여 독출 동작을 수행할 경우 독출 실패하게 된다.
프로그램 완료 후의 경과 시간이 상대적으로 크지 않은 경우에는 독출 전압 오프셋이 0인 디폴트 레벨을 이용하여 독출 동작을 수행하면 독출 동작이 성공할 수 있다. 도 16의 예에서, 시간이 0에서 제1 시간(t1)까지인 제1 구간(D1)에서 독출 동작을 수행하기 위해서는 디폴트 레벨을 이용할 수 있다.
프로그램 완료 후의 경과 시간이 상대적으로 큰 경우에는 디폴트 레벨을 이용하여 독출 동작을 수행할 경우 독출 실패하게 되고, 소정의 독출 전압 오프셋을 이용하여 독출 동작을 수행해야 독출 동작이 성공할 수 있다. 도 16의 예에서, 시간이 제1 시간(t1)에서 제2 시간(t2)까지인 제2 구간(D2)에서 독출 동작을 수행하기 위해서는 제1 오프셋을 이용할 수 있고, 예를 들어, 제1 오프셋은 -100 mV일 수 있다. 나아가, 도 16의 예에서, 시간이 제2 시간(t2) 이상인 제3 구간(D3)에서 독출 동작을 수행하기 위해서는 제2 오프셋을 이용할 수 있고, 예를 들어, 제2 오프셋은 -180 mV일 수 있다.
상술한 바와 같이, 프로그램 완료 후의 경과 시간, 즉, 리텐션 시간에 따라 독출 전압을 변경할 것이 요구되는데, 종래에는 리텐션 시간에 관계 없이 먼저 디폴트 레벨을 이용하여 독출 동작을 수행하였다. 그리고, 디폴트 레벨을 이용하여 독출 실패가 발생하는 경우, 독출 전압 오프셋의 크기를 순차적으로 증가시키면서 독출 재시도 동작을 수행하였다.
도 17은 본 발명의 일 실시예에 따른 초기 맵핑 테이블(171) 및 업데이트된 맵핑 테이블(172)을 나타낸다.
도 17을 참조하면, 초기 맵핑 테이블(171)은 맵핑 테이블 생성부(210)의 동작이 수행되기 전의 제1 내지 제3 맵핑 테이블들(MP1, MP2, MP3)을 포함한다. 제1 내지 제3 맵핑 테이블들(MP1, MP2, MP3)은 제1 및 제2 오프셋들(OFFSET1, OFFSET2)에 대응하는 상위, 하위 및 중간 프로그램 순서 스탬프들을 각각 저장할 수 있다. 예를 들어, 제1 오프셋은 -40 mV이고, 제2 오프셋은 -80 mV일 수 있다. 그러나, 이는 본 발명의 일 예에 불과하고, 본 발명은 이에 한정되지 않으며, 오프셋의 크기는 다양하게 변경될 수 있다.
일 실시예에서, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)은 메모리 장치에 관계 없이 고정된 값을 가질 수 있다. 구체적으로, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)은 펌웨어에 의해 하드 코딩(hard coding)되어, 메모리 장치의 종류, 용량, 리텐션 상황 등에 관계 없이 고정된 값을 가질 수 있다. 다른 실시예에서, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)은 메모리 장치에 따라 가변되는 값을 가질 수 있다. 구체적으로, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)은 낸드 파라미터 블록에 저장될 수 있고, 메모리 장치의 종류, 용량, 리텐션 상황 등에 따라 가변되는 값을 가질 수 있다.
제1 맵핑 테이블(MP1)의 경우, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)에 대응하는 상위 프로그램 순서 스탬프들은 모두 '0'으로 저장된다. 제2 맵핑 테이블(MP2)의 경우, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)에 대응하는 하위 프로그램 순서 스탬프들은 모두 현재 프로그램 순서 스탬프(POS_c)로 저장되고, 워드 라인 인덱스(WL IDX)는 워드 라인 최대값(WL_max), 예를 들어, 메모리 블록에서 비트 라인에 가장 근접하게 배치된 워드 라인의 인덱스(예를 들어, 128)로 저장된다. 제3 맵핑 테이블(MP3)의 경우, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)에 대응하는 중간 프로그램 순서 스탬프들은 모두 평균 프로그램 순서 스탬프(POS_avg)로 저장되고, 워드 라인 인덱스(WL IDX)는 워드 라인 평균 값(WL_avg)으로 저장된다.
업데이트된 맵핑 테이블(172)은 맵핑 테이블 생성부(210)의 생성 동작 또는 업데이트 동작이 수행된 후의 제1 내지 제3 맵핑 테이블들(MP1, MP2, MP3)을 포함한다. 맵핑 테이블 생성부(210)는 제1 및 제2 맵핑 테이블들(MP1, MP2)을 생성 또는 업데이트 하는 경우, 이에 따라 제3 맵핑 테이블(MP3)도 생성 또는 업데이트할 수 있다.
제1 맵핑 테이블(MP1)의 경우, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)에 대응하는 상위 프로그램 순서 스탬프들은 각각 N1, N2로 저장될 수 있다. 일 실시예에서, N1, N2에 각각 대응하는 블록 어드레스들(BLK1, BLK2)이 제1 맵핑 테이블(MP1)에 저장될 수 있고, 다른 실시예에서, N1, N2에 각각 대응하는 워드 라인 인덱스들(WL1, WL2)이 제1 맵핑 테이블(MP1)에 더 저장될 수 있다. 이때, 맵핑 테이블 생성부(210)는 N1이 항상 N2 이상이 되도록 제1 맵핑 테이블을 생성 또는 업데이트할 수 있다.
제2 맵핑 테이블(MP2)의 경우, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)에 대응하는 하위 프로그램 순서 스탬프들은 각각 N3, N4로 저장될 수 있다. 일 실시예에서, N3, N4에 각각 대응하는 블록 어드레스들(BLK3, BLK4)이 제2 맵핑 테이블(MP2)에 저장될 수 있고, 다른 실시예에서, N3, N4에 각각 대응하는 워드 라인 인덱스들(WL3, WL4)이 제2 맵핑 테이블(MP2)에 더 저장될 수 있다. 이때, 맵핑 테이블 생성부(210)는 N3이 항상 N4 이상이 되도록 제2 맵핑 테이블을 생성 또는 업데이트할 수 있다.
제3 맵핑 테이블(MP3)의 경우, 제1 및 제2 오프셋들(OFFSET1, OFFSET2)에 대응하는 중간 프로그램 순서 스탬프들은 각각 N5, N6으로 저장될 수 있다. 일 실시예에서, N5, N6에 각각 대응하는 블록 어드레스들(BLK5, BLK6)이 제3 맵핑 테이블(MP3)에 저장될 수 있고, 다른 실시예에서, N5, N6에 각각 대응하는 워드 라인 인덱스들(WL5, WL6)이 제3 맵핑 테이블(MP2)에 더 저장될 수 있다. 이때, 맵핑 테이블 생성부(210)는 N5가 항상 N6 이상이 되도록 제2 맵핑 테이블을 생성 또는 업데이트할 수 있다.
도 17에서는 두 개의 오프셋들 및 대응하는 프로그램 순서 스탬프들만을 예시하였으나, 본 발명은 이에 한정되지 않는다. 다른 실시예에서, 맵핑 테이블은 하나의 오프셋 및 대응하는 프로그램 순서 스탬프를 저장할 수 있다. 또 다른 실시예에서, 맵핑 테이블은 세 개 이상의 오프셋들 및 대응하는 프로그램 순서 스탬프들을 저장할 수 있다.
도 18은 본 발명의 일 실시예에 따른 시간에 따른 독출 레벨을 나타내는 그래프이다.
도 18을 참조하면, 가로축은 시간을 나타내고, 세로축은 문턱 전압을 나타낸다. 구체적으로, 가로축은 프로그램 완료 후의 시간, 즉, 리텐션 시간을 나타내는데, 리텐션 시간이 증가할수록 프로그램 순서 스탬프의 값은 감소할 수 있다. 도 18에 도시된 그래프는 도 17에 예시된 맵핑 테이블 생성 동작에 의해 생성되어 제1 내지 제3 맵핑 테이블들에 저장된 N1 내지 N6을 나타낸다.
도 9, 도 17 및 도 18을 참조하면, 독출 전압 결정부(230)는 먼저 제3 맵핑 테이블(MP3)을 참조하여 중간 프로그램 순서 스탬프들(N5, N6)을 기초로 독출 전압을 결정할 수 있다. 제3 맵핑 테이블(MP3)을 참조하여 결정된 독출 전압을 이용하여 독출 동작을 수행한 결과 독출이 실패한 경우, 맵핑 테이블 생성부(220)는 제1 맵핑 테이블(MP1) 및 제2 맵핑 테이블(MP2)을 업데이트할 수 있다. 한편, 제3 맵핑 테이블(MP3)을 참조하여 결정된 독출 전압을 이용하여 독출 동작을 수행한 결과 독출이 성공한 경우, 독출 동작은 종료된다.
구체적으로, 독출 전압 결정부(230)는 제1 구간(D1)에서 디폴트 레벨(Vdef)을 독출 레벨로 결정할 수 있다. 여기서, 제1 구간(D1)은 시간이 0에서 제1 시간(t1)까지의 구간으로서, 제1 시간(t1)은 N5를 기초로 결정될 수 있다. 따라서, 프로그램 순서 스탬프의 값이 N5보다 큰 메모리 그룹에 대해서는 디폴트 레벨(Vdef)을 이용하여 독출 동작을 수행할 수 있다.
또한, 독출 전압 결정부(230)는 제2 구간(D2)에서 디폴트 레벨(Vdef)에 대해 제1 오프셋, 예를 들어, -40 mV가 적용된 제1 레벨(V1)을 독출 레벨로 결정할 수 있다. 여기서, 제2 구간(D2)은 시간이 제1 시간(t1)에서 제2 시간(t2)까지의 구간으로서, 제2 시간(t2)은 N6을 기초로 결정될 수 있다. 따라서, 프로그램 순서 스탬프의 값이 N6보다 크고 N5보다 작거나 같은 메모리 그룹에 대해서는 제1 레벨(V1)을 이용하여 독출 동작을 수행할 수 있다.
또한, 독출 전압 결정부(230)는 제3 구간(D3)에서 디폴트 레벨(Vdef)에 대해 제2 오프셋, 예를 들어, -80 mV가 적용된 제2 레벨(V2)을 독출 레벨로 결정할 수 있다. 여기서, 제3 구간(D3)은 시간이 제2 시간(t2) 이상인 구간이다. 따라서, 프로그램 순서 스탬프의 값이 N6보다 작거나 같은 메모리 그룹에 대해서는 제2 레벨(V2)을 이용하여 독출 동작을 수행할 수 있다.
도 19는 본 발명의 일 실시예에 따른 메모리 장치의 문턱 전압에 따른 산포의 일부를 나타내는 그래프들이다.
도 19를 참조하면, 초기 산포(191), 제1 변동 산포(192) 및 제2 변동 산포(193)는 제1 및 제2 상태들(ST1, ST2)로 프로그램된 메모리 셀들의 산포를 나타낸다. 초기 산포(191)는 메모리 셀들에 대해 프로그램이 완료된 직후의 산포이고, 제1 변동 산포(192)는 메모리 셀들에 대해 프로그램이 완료된 이후 제1 시간(t1)이 경과한 이후의 산포이며, 제2 변동 산포(193)는 메모리 셀들에 대해 프로그램이 완료된 이후 제2 시간(t2)이 경과한 이후의 산포이다. 여기서, 제1 및 제2 시간(t1, t2)는 도 18의 t1, t2에 대응된다.
제1 및 제2 상태들(ST1, ST2)로 프로그램된 메모리 셀들은 리텐션 시간의 경과에 따른 전하 손실에 의해 문턱 전압이 감소하게 된다. 이에 따라, 초기 산포(191)는 시간이 경과하면 제1 변동 산포(192)로 변화하고, 제1 변동 산포(192)는 시간이 경과하면 제2 변동 산포(193)로 변화하게 된다. 따라서, 메모리 장치의 신뢰성을 향상시키기 위해서는, 리텐션 시간에 따라 독출 전압을 변경할 것이 요구된다.
도 9, 도 18 및 도 19를 참조하면, 독출 전압 결정부(230)는 제1 및 제2 상태들(ST1, ST2)로 프로그램된 메모리 셀들에 대한 독출 동작을 수행하기 위해 독출 전압을 디폴트 레벨(Vdef)로 초기에 설정할 수 있다. 디폴트 레벨(Vdef)은 제1 및 제2 상태들(ST1, ST2) 사이의 골(valley)에 대응하는 전압 레벨일 수 있다.
또한, 독출 전압 결정부(230)는 제3 맵핑 테이블 및 프로그램 순서 스탬프를 기초로, 프로그램 완료 이후 제1 시간(t1)이 경과한 메모리 셀들에 대한 독출 전압을 제1 레벨(V1)로 결정할 수 있다. 제1 레벨(V1)은 제1 변동 산포(192)에서 제1 및 제2 상태들(ST1, ST2) 사이의 골에 대응하는 전압 레벨일 수 있다.
또한, 독출 전압 결정부(230)는 제3 맵핑 테이블 및 프로그램 순서 스탬프를 기초로, 프로그램 완료 이후 제2 시간(t2)이 경과한 메모리 셀들에 대한 독출 전압을 제2 레벨(V2)로 결정할 수 있다. 제2 레벨(V2)은 제2 변동 산포(193)에서 제1 및 제2 상태들(ST1, ST2) 사이의 골에 대응하는 전압 레벨일 수 있다.
도 20a 내지 도 22b는 본 발명의 일 실시예에 따른 제1 맵핑 테이블 생성 동작을 순차적으로 나타낸다.
도 20a, 도 21a 및 도 22a는 시간에 따른 독출 레벨을 나타내는 그래프로서, 가로축은 시간을 나타내고, 세로축은 문턱 전압을 나타낸다. 도 20b, 도 21b 및 도 22b는 도 20a, 도 21a 및 도 22a에 각각 대응하는 제1 맵핑 테이블을 나타낸다. 이하에서는 도 9 및 도 20a 내지 도 22b를 참조하여 맵핑 테이블 생성부(220)의 구체적인 동작에 대해 상술하기로 한다.
도 20a 및 도 20b를 참조하면, 독출 전압 결정부(230)는 맵핑 테이블이 생성되기 전에는 초기에 설정된 디폴트 레벨(Vdef)을 독출 전압으로 결정할 수 있다. 따라서, 초기 맵핑 테이블(201)의 경우, 제1 및 제2 오프셋들에 대응하는 상위 프로그램 순서 스탬프의 값은 0일 수 있다. 예를 들어, 제1 및 제2 오프셋들은 각각 -40 mV, -80 mV일 수 있다.
도 21a 및 도 21b를 참조하면, 제1 메모리 그룹에 대해 디폴트 레벨(Vdef)로 독출 동작을 수행하여 독출이 실패한 경우, 독출 전압 결정부(230)는 디폴트 레벨(Vdef)에서 제1 오프셋(예를 들어, -40 mV)만큼 감소한 제1 레벨(V1)을 제1 메모리 그룹에 대한 독출 전압으로 결정할 수 있다. 제1 메모리 그룹에 대해 제1 레벨(V1)로 독출 동작을 수행하여 독출이 성공한 경우, 맵핑 테이블 생성부(220)는 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 검색할 수 있다. 이어서, 맵핑 테이블 생성부(220)는 검색된 프로그램 순서 스탬프를, 제1 오프셋에 대응하는 제1 상위 프로그램 순서 스탬프(N1)로 결정하고, N1이 제1 오프셋에 대응하도록 맵핑 테이블(211)에 저장할 수 있다. 예를 들어, N1은 153일 수 있다.
독출 전압 결정부(230)는 제2 메모리 그룹에 대응하는 프로그램 순서 스탬프를 검색하고, 검색된 프로그램 순서 스탬프를 제1 상위 프로그램 순서 스탬프(N1)와 비교할 수 있다. 검색된 프로그램 순서 스탬프가 제1 상위 프로그램 순서 스탬프(N1)보다 큰 경우, 독출 전압 결정부(230)는 제2 메모리 그룹에 대한 독출 전압을 디폴트 레벨(Vdef)로 결정할 수 있다. 한편, 검색된 프로그램 순서 스탬프가 제1 상위 프로그램 순서 스탬프(N1)보다 작거나 같은 경우, 독출 전압 결정부(230)는 제2 메모리 그룹에 대한 독출 전압을 제1 레벨(V1)로 결정할 수 있다.
도 22a 및 도 22b를 참조하면, 제2 메모리 그룹에 대해 제1 레벨(V1)로 독출 동작을 수행하여 독출이 실패한 경우, 독출 전압 결정부(230)는 디폴트 레벨(Vdef)에서 제2 오프셋만큼 감소한 제2 레벨(V2)을 제2 메모리 그룹에 대한 독출 전압으로 결정할 수 있다. 제2 메모리 그룹에 대해 제2 레벨(V2)로 독출 동작을 수행하여 독출이 성공한 경우, 맵핑 테이블 생성부(220)는 제2 메모리 그룹에 대응하는 프로그램 순서 스탬프를 제2 오프셋에 대응하는 제2 상위 프로그램 순서 스탬프(N2)로 결정하고, N2가 제2 오프셋에 대응하도록 맵핑 테이블(221)에 저장할 수 있다. 예를 들어, N2는 70일 수 있다.
상술한 바와 같이, 본 실시예에 따르면, 제1 메모리 그룹에 대해 디폴트 레벨(Vdef), 제1 레벨(V1) 및 제2 레벨(V2)의 순서대로 독출 동작을 수행함으로써 제1 및 제2 상위 프로그램 순서 스탬프들(N1, N2)을 결정하고, 제1 맵핑 테이블을 생성할 수 있다. 다시 말해, 맵핑 테이블 생성부(210)는 높은 전압에서 낮은 전압의 순서대로 독출 동작을 수행함으로써 제1 맵핑 테이블을 생성할 수 있다. 따라서, 제1 및 제2 상위 프로그램 순서 스탬프들(N1, N2)은 독출 전압의 범위의 상한 레벨에 근접하게 결정될 수 있다.
도 23a 내지 도 25b는 본 발명의 일 실시예에 따른 제2 맵핑 테이블 생성 동작을 순차적으로 나타낸다.
도 23a, 도 24a 및 도 25a는 시간에 따른 독출 레벨을 나타내는 그래프로서, 가로축은 시간을 나타내고, 세로축은 문턱 전압을 나타낸다. 도 23b, 도 24b 및 도 25b는 도 23a, 도 24a 및 도 25a에 각각 대응하는 제2 맵핑 테이블을 나타낸다. 이하에서는 도 9 및 도 23a 내지 도 25b를 참조하여 맵핑 테이블 생성부(220)의 구체적인 동작에 대해 상술하기로 한다.
도 23a 및 도 23b를 참조하면, 독출 전압 결정부(230)는 제2 맵핑 테이블이 생성되기 전에는 초기에 설정된 디폴트 레벨(Vdef)에서 제2 오프셋만큼 감소한 제2 레벨(V2)을 독출 전압으로 결정할 수 있다. 따라서, 초기 맵핑 테이블(231)의 경우, 제1 및 제2 오프셋들에 대응하는 프로그램 순서 스탬프의 값은 0일 수 있다. 예를 들어, 제1 및 제2 오프셋들은 각각 -40 mV, -80 mV일 수 있다.
도 24a 및 도 24b를 참조하면, 제1 메모리 그룹에 대해 제2 레벨(V2)로 독출 동작을 수행하여 독출이 실패한 경우, 독출 전압 결정부(230)는 디폴트 레벨(Vdef)에서 제1 오프셋만큼 감소한 제1 레벨(V1)을 제1 메모리 그룹에 대한 독출 전압으로 결정할 수 있다. 제1 메모리 그룹에 대해 제1 레벨(V1)로 독출 동작을 수행하여 독출이 성공한 경우, 맵핑 테이블 생성부(220)는 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 검색할 수 있다. 이어서, 맵핑 테이블 생성부(220)는 검색된 프로그램 순서 스탬프를, 제2 오프셋에 대응하는 제2 하위 프로그램 순서 스탬프(N4)로 결정하고, N4가 제2 오프셋에 대응하도록 맵핑 테이블(231)에 저장할 수 있다. 예를 들어, N4은 130일 수 있다.
독출 전압 결정부(230)는 제2 메모리 그룹에 대응하는 프로그램 순서 스탬프를 검색하고, 검색된 프로그램 순서 스탬프를 N4와 비교할 수 있다. 검색된 프로그램 순서 스탬프가 N4보다 큰 경우, 독출 전압 결정부(230)는 제2 메모리 그룹에 대한 독출 전압을 제1 레벨(V1)로 결정할 수 있다. 한편, 검색된 프로그램 순서 스탬프가 N4보다 작거나 같은 경우, 독출 전압 결정부(230)는 제2 메모리 그룹에 대한 독출 전압을 제2 레벨(V2)로 결정할 수 있다.
도 25a 및 도 25b를 참조하면, 제2 메모리 그룹에 대해 제1 레벨(V1)로 독출 동작을 수행하여 독출이 실패한 경우, 독출 전압 결정부(230)는 디폴트 레벨(Vdef)을 제2 메모리 그룹에 대한 독출 전압으로 결정할 수 있다. 제2 메모리 그룹에 대해 디폴트 레벨(Vdef)로 독출 동작을 수행하여 독출이 성공한 경우, 맵핑 테이블 생성부(220)는 제2 메모리 그룹에 대응하는 프로그램 순서 스탬프를 제1 오프셋에 대응하는 제1 하위 프로그램 순서 스탬프(N3)로 결정하고, N3이 제1 오프셋에 대응하도록 제2 맵핑 테이블(251)에 저장할 수 있다. 예를 들어, N3은 391일 수 있다.
상술한 바와 같이, 본 실시예에 따르면, 제1 메모리 그룹에 대해 제2 레벨(V2), 제1 레벨(V1) 및 디폴트 레벨(Vdef)의 순서대로 독출 동작을 수행함으로써 제1 및 제2 하위 프로그램 순서 스탬프들(N3, N4)을 결정하고, 제2 맵핑 테이블을 생성할 수 있다. 다시 말해, 맵핑 테이블 생성부(210)는 낮은 전압에서 높은 전압의 순서대로 독출 동작을 수행함으로써 제2 맵핑 테이블을 생성할 수 있다. 따라서, 제1 및 제2 하위 프로그램 순서 스탬프들(N3, N4)은 독출 전압의 범위의 상한 레벨에 근접하게 결정될 수 있다.
도 26은 본 발명의 다른 실시예에 따른 메모리 시스템(10')을 개략적으로 나타내는 블록도이다.
도 26을 참조하면, 메모리 시스템(10')은 메모리 장치(100') 및 메모리 컨트롤러(200')를 포함할 수 있다. 메모리 장치(100')는 메모리 셀 어레이(110) 및 독출 전압 결정부(160)를 포함할 수 있고, 메모리 컨트롤러(200')는 프로그램 순서 관리부(210) 및 맵핑 테이블 생성부(220)를 포함할 수 있다. 본 실시예에 따른 메모리 시스템(10')은 도 1의 메모리 시스템(10)의 변형 실시예로서, 동일한 참조 부호는 동일한 구성 요소에 대응된다. 이하에서는, 본 실시예에 따른 메모리 시스템(10')과 도 1의 메모리 시스템(10)의 차이점을 중심으로 설명하기로 한다.
본 실시예에 따르면, 독출 전압 결정부(160)는 메모리 장치(100')에 포함될 수 있다. 메모리 셀 어레이(110)는 프로그램 순서 관리부(210)에서 생성된 프로그램 순서 정보 및 맵핑 테이블 생성부(220)에서 생성된 제1 내지 제3 맵핑 테이블들을 저장할 수 있다. 독출 전압 결정부(160)는 메모리 셀 어레이(110)에 저장된 프로그램 순서 정보 및 제1 내지 제3 맵핑 테이블들을 기초로 하여 메모리 셀 어레이(110)에 대한 독출 동작을 수행하기 위한 독출 전압을 가변적으로 결정할 수 있다.
더욱 상세하게는, 메모리 컨트롤러(200')로부터 독출 커맨드가 수신되는 경우, 독출 전압 결정부(160)의 동작이 개시될 수 있다. 구체적으로, 독출 전압 결정부(160)는 프로그램 순서 정보를 기초로 복수의 메모리 그룹들 중 독출하고자 하는 메모리 그룹에 대응하는 프로그램 순서 스탬프를 검색하고, 검색된 프로그램 순서 스탬프에 대응하는 독출 전압 오프셋을 검색하며, 검색된 독출 전압 오프셋을 이용하여 메모리 그룹에 대한 독출 동작을 수행할 수 있다.
도 27은 본 발명의 일 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 27을 참조하면, 본 실시예에 따른 메모리 시스템의 동작 방법은 메모리 장치에 포함된 복수의 메모리 그룹들에 대한 프로그램 순서에 따라 복수의 메모리 그룹들에 대한 독출 전압을 제어하는 방법으로서, 도 1 내지 도 26을 참조하여 상술된 내용은 본 실시예에 따른 메모리 시스템의 동작 방법에도 적용된다. 이하에서는, 도 1 내지 도 27을 참조하여, 본 실시예에 따른 메모리 시스템의 동작 방법을 상술하기로 한다.
단계 S100에서, 프로그램 순서 스탬프를 기초로 하여 메모리 장치에 대한 프로그램 순서 정보를 관리한다. 여기서, 프로그램 순서 스탬프는 메모리 장치에 포함된 복수의 메모리 그룹들에 대한 프로그램 동작의 상대적인 선후 관계를 나타낸다. 여기서, 프로그램 순서 정보는 복수의 메모리 그룹들과 프로그램 순서 스탬프들의 대응 관계에 대한 정보이다.
일 실시예에서, 프로그램 순서 관리부는 복수의 메모리 그룹들의 어드레스 별로 프로그램 순서 스탬프를 검색하도록, 복수의 메모리 그룹들의 어드레스에 따른 프로그램 순서 스탬프를 순차적으로 저장할 수 있다. 다른 실시예에서, 프로그램 순서 관리부는 프로그램 순서 스탬프 별로 복수의 메모리 그룹들의 어드레스를 검색하도록, 순차적으로 증가하는 프로그램 순서 스탬프에 따라 프로그램 순서 스탬프에 대응하는 메모리 그룹의 어드레스를 저장할 수 있다.
단계 S120에서, 순차적으로 감소하는 복수의 전압 레벨들을 이용하여 독출 전압 오프셋과 대응하는 상위 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블을 생성한다. 여기서, 독출 전압 오프셋은, 메모리 장치에 대한 독출 동작을 수행하기 위해 초기에 설정된 독출 전압, 즉, 디폴트 레벨에 대한 오프셋일 수 있다. 여기서, 독출 전압 오프셋에 대응하는 상위 프로그램 순서 스탬프는, 순차적으로 감소하는 전압 레벨들을 이용하여 독출 동작을 수행할 경우에 독출 성공되는 메모리 그룹에 할당된 프로그램 순서 스탬프일 수 있다. 여기서, 상위 프로그램 순서 스탬프는 독출 전압의 범위의 상한 레벨에 근접하게 결정될 수 있다.
단계 S140에서, 순차적으로 증가하는 복수의 전압 레벨들을 이용하여 독출 전압 오프셋과 대응하는 하위 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 생성한다. 여기서, 독출 전압 오프셋에 대응하는 하위 프로그램 순서 스탬프는, 순차적으로 증가하는 전압 레벨들을 이용하여 독출 동작을 수행할 경우에 독출 성공되는 메모리 그룹에 할당된 프로그램 순서 스탬프일 수 있다. 여기서, 하위 프로그램 순서 스탬프는 독출 전압의 범위의 하한 레벨에 근접하게 결정될 수 있다.
단계 S160에서, 제1 및 제2 맵핑 테이블들 및 프로그램 순서 정보를 기초로 하여 독출 전압을 가변적으로 결정한다. 구체적으로, 독출 전압 결정부는 프로그램 순서 정보를 기초로 복수의 메모리 그룹들 중 독출하고자 하는 메모리 그룹에 대응하는 프로그램 순서 스탬프를 검색하고, 검색된 프로그램 순서 스탬프에 대응하는 독출 전압 오프셋을 검색하며, 검색된 독출 전압 오프셋을 이용하여 메모리 그룹에 대한 독출 동작을 수행할 수 있다.
도 28은 도 27의 단계 S120의 일 예에 따른 제1 맵핑 테이블의 생성 동작을 나타내는 흐름도이다.
도 28을 참조하면, 본 실시예에 따른 제1 맵핑 테이블의 생성 동작은 도 1 및 도 9의 맵핑 테이블 생성부(220)에 의해 수행될 수 있다. 이하에서는 도 1, 도 9, 도 20a 내지 도 22b 및 도 28을 참조하여 제1 맵핑 테이블의 생성 동작에 대해 상술하기로 한다.
단계 S2800에서, 제1 메모리 그룹에 대해 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S2810에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 본 동작은 종료되고, 반면, 독출이 실패한 경우 단계 S2820이 수행된다.
단계 S2820에서, 제1 메모리 그룹에 대해, 디폴트 레벨(Vdef)보다 제1 오프셋만큼 낮은 제1 레벨(V1)로 독출 동작을 수행한다. 단계 S2830에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S2840이 수행되고, 반면, 독출이 실패한 경우 단계 S2850이 수행된다. 단계 S2840에서, 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 제1 오프셋에 대응하는 제1 상위 프로그램 순서 스탬프(N1)로 맵핑한다.
단계 S2850에서, 제1 메모리 그룹에 대해, 디폴트 레벨(Vdef)보다 제2 오프셋만큼 낮은 제2 레벨(V2)로 독출 동작을 수행한다. 여기서, 제2 오프셋의 크기는 제1 오프셋의 크기보다 크다. 단계 S2860에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S2870이 수행되고, 반면, 독출이 실패한 경우 단계 S2880이 수행된다. 단계 S2870에서, 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 제2 오프셋에 대응하는 제2 상위 프로그램 순서 스탬프(N2)로 맵핑한다.
단계 S2880에서, 독출 재시도 동작을 수행한다. 구체적으로, 제1 메모리 그룹에 대한 독출 결과를 제1 내지 제3 맵핑 테이블들을 업데이트하는데 이용하지 않도록 플래그를 설정하고, 제1 메모리 그룹에 대해 인접한 두 산포 사이의 골을 검색하는 독출 재시도 동작을 수행할 수 있다.
도 29는 도 27의 단계 S140의 일 예에 따른 제2 맵핑 테이블의 생성 동작을 나타내는 흐름도이다.
도 29를 참조하면, 본 실시예에 따른 제2 맵핑 테이블의 생성 동작은 도 1 및 도 9의 맵핑 테이블 생성부(220)에 의해 수행될 수 있다. 이하에서는 도 1, 도 9 및 도 23a 내지 도 25b를 참조하여 제2 맵핑 테이블의 생성 동작에 대해 상술하기로 한다.
단계 S2900에서, 제1 메모리 그룹에 대해 디폴트 레벨(Vdef)보다 제2 오프셋만큼 낮은 제2 레벨(V2)로 독출 동작을 수행한다. 단계 S2910에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 본 동작은 종료되고, 반면, 독출이 실패한 경우 단계 S2920이 수행된다.
단계 S2920에서, 제1 메모리 그룹에 대해, 디폴트 레벨(Vdef)보다 제1 오프셋만큼 낮은 제1 레벨(V1)로 독출 동작을 수행한다. 여기서, 제1 오프셋의 크기는 제2 오프셋의 크기보다 작다. 단계 S2930에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S2940이 수행되고, 반면, 독출이 실패한 경우 단계 S2950이 수행된다. 단계 S2940에서, 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 제2 오프셋에 대응하는 제2 하위 프로그램 순서 스탬프(N4)로 맵핑한다.
단계 S2950에서, 제1 메모리 그룹에 대해, 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S2960에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S2970이 수행되고, 반면, 독출이 실패한 경우 단계 S2980이 수행된다. 단계 S2970에서, 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 제1 오프셋에 대응하는 제1 하위 프로그램 순서 스탬프(N3)로 맵핑한다.
단계 S2980에서, 독출 재시도 동작을 수행한다. 구체적으로, 제1 메모리 그룹에 대한 독출 결과를 제1 내지 제3 맵핑 테이블들을 업데이트하는데 이용하지 않도록 플래그를 설정하고, 제1 메모리 그룹에 대해 인접한 두 산포 사이의 골을 검색하는 독출 재시도 동작을 수행할 수 있다.
도 30은 본 발명의 다른 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 30을 참조하면, 본 실시예에 따른 메모리 시스템의 동작 방법은 도 27에 예시된 메모리 시스템의 동작 방법의 변형 실시예로서, 구체적으로, 본 실시예는 도 27의 방법에 비해 제3 맵핑 테이블을 생성하는 단계를 더 포함할 수 있다. 따라서, 도 1 내지 도 29를 참조하여 상술된 내용은 본 실시예에 따른 메모리 시스템의 동작 방법에도 적용된다. 이하에서는, 도 1 내지 도 30을 참조하여, 본 실시예에 따른 메모리 시스템의 동작 방법을 상술하기로 한다.
단계 S200에서, 프로그램 순서 스탬프를 기초로 하여 메모리 장치에 대한 프로그램 순서 정보를 관리한다. 단계 S220에서, 순차적으로 감소하는 복수의 전압 레벨들을 이용하여 독출 전압 오프셋과 대응하는 상위 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블을 생성한다. 단계 S240에서, 순차적으로 증가하는 복수의 전압 레벨들을 이용하여 독출 전압 오프셋과 대응하는 하위 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 생성한다.
단계 S260에서, 제1 및 제2 맵핑 테이블들을 기초로 하여 중간 프로그램 순서 스탬프를 저장하는 제3 맵핑 테이블을 생성한다. 여기서, 중간 프로그램 순서 스탬프는 상위 프로그램 순서 스탬프와 하위 프로그램 순서 스탬프의 평균 값에 해당할 수 있다.
단계 S280에서, 제1 내지 제3 맵핑 테이블들 및 프로그램 순서 정보를 기초로 하여 독출 전압을 가변적으로 결정한다. 구체적으로, 독출 전압 결정부는 프로그램 순서 정보를 기초로 복수의 메모리 그룹들 중 독출하고자 하는 메모리 그룹에 대응하는 프로그램 순서 스탬프를 검색하고, 검색된 프로그램 순서 스탬프에 대응하는 독출 전압 오프셋을 검색하며, 검색된 독출 전압 오프셋을 이용하여 메모리 그룹에 대한 독출 동작을 수행할 수 있다.
도 31은 도 30의 단계 S280의 일 예에 따른 독출 전압의 결정 동작을 나타내는 흐름도이다.
도 31을 참조하면, 단계 S3100에서, 제3 맵핑 테이블을 이용하여 독출 동작을 수행한다. 단계 S3110에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 본 동작은 종료되고, 반면 독출이 실패한 경우 단계 S3120이 수행된다. 단계 S3120에서, 제1 맵핑 테이블을 업데이트한다. 단계 S3130에서, 제2 맵핑 테이블을 업데이트한다. 단계 S3120과 단계 S3130의 순서는 변경 가능하다. 따라서, 제2 맵핑 테이블을 업데이트하고, 이어서 제1 맵핑 테이블을 업데이트할 수도 있다.
도 32는 도 30의 단계 S280의 다른 예에 따른 독출 전압의 결정 동작을 나타내는 흐름도이다.
도 32를 참조하면, 본 실시예에 따른 독출 전압의 결정 동작은 도 31에 도시된 독출 전압의 결정 동작의 변형 실시예로서, 구체적으로, 본 실시예는 도 31의 방법에 비해 프로그램 순서 정보를 검색하고, 플래그를 확인하는 단계를 더 포함하고, 플래그의 확인 결과에 따라 동작이 수행될 수 있다.
단계 S3200에서, 프로그램 순서 정보를 검색한다. 독출 전압 결정부(230)는 현재 독출하고자 하는 메모리 그룹의 프로그램 순서 정보를 검색하여, 현재 독출하고자 하는 메모리 그룹의 어드레스에 대응하는 프로그램 순서 스탬프를 획득할 수 있다.
단계 S3210에서, 프로그램 순서 정보에 저장된 플래그를 확인하여, 플래그가 1인지 판단한다. 여기서, 플래그는 맵핑 테이블을 업데이트하기 위해 해당 메모리 블록을 사용할지 여부를 나타낸다. 판단 결과, 플래그가 1이면 단계 S3220을 수행하고, 반면, 플래그가 0이면 단계 S3230을 수행한다.
단계 S3320에서, 독출 재시도 동작을 수행한다. 구체적으로, 메모리 장치에 대해 인접한 두 산포들 사이의 골을 검색하는 독출 재시도 동작을 수행할 수 있다.
단계 S3230에서, 제3 맵핑 테이블을 이용하여 독출 동작을 수행한다. 단계 S3240에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 본 동작은 종료되고, 반면 독출이 실패한 경우 단계 S3350이 수행된다. 단계 S3250에서, 제1 맵핑 테이블을 업데이트한다. 단계 S3260에서, 제2 맵핑 테이블을 업데이트한다. 단계 S3250과 단계 S3260의 순서는 변경 가능하다. 따라서, 제2 맵핑 테이블을 업데이트하고, 이어서 제1 맵핑 테이블을 업데이트할 수도 있다.
도 33은 도 32의 단계 S3220의 일 예에 따른 제3 맵핑 테이블을 이용한 독출 동작을 나타내는 흐름도이다.
도 33을 참조하면, 본 실시예에 따른 제3 맵핑 테이블을 이용한 독출 동작은 에버리지 플로우(average flow)라고 지칭할 수 있다. 제3 맵핑 테이블을 이용한 독출 동작은 도 1 및 도 9의 독출 동작 결정부(230)에 의해 수행될 수 있다. 이하에서는 도 1, 도 9, 도 17 및 도 18을 참조하여 제3 맵핑 테이블을 이용한 독출 동작에 대해 상술하기로 한다.
단계 S3300에서, 제3 맵핑 테이블을 검색한다. 독출 전압 결정부(230)는 제3 맵핑 테이블을 검색하여, 제1 및 제2 중간 프로그램 순서 스탬프들(N5, N6)을 획득할 수 있다.
단계 S3310에서, 현재 프로그램 순서 스탬프(POS_c)와 제2 중간 프로그램 순서 스탬프(N6)를 비교한다. 비교 결과, 현재 프로그램 순서 스탬프(POS_c)가 제2 중간 프로그램 순서 스탬프(N6) 이하이면 단계 S3370을 수행하고, 그렇지 않으면 단계 S3320을 수행한다.
단계 S3320에서, 현재 프로그램 순서 스탬프(POS_c)와 제1 중간 프로그램 순서 스탬프(N5)를 비교한다. 비교 결과, 현재 프로그램 순서 스탬프(POS_c)가 제1 중간 프로그램 순서 스탬프(N5) 이하이면 단계 S3350을 수행하고, 그렇지 않으면 단계 S3330을 수행한다.
단계 S3330에서, 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S3340에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 본 동작은 종료되고, 반면 독출이 실패한 경우 단계 S3350이 수행된다.
단계 S3350에서, 제1 레벨(V1)로 독출 동작을 수행한다. 단계 S3360에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3250에 따른 제1 맵핑 테이블의 업데이트 동작이 수행되고, 반면 독출이 실패한 경우 단계 S3270이 수행된다.
단계 S3370에서, 제2 레벨(V2)로 독출 동작을 수행한다. 단계 S3380에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3250에 따른 제1 맵핑 테이블의 업데이트 동작이 수행되고, 반면 독출이 실패한 경우 단계 S3390이 수행된다.
단계 S3390에서, 독출 재시도 동작을 수행한다. 구체적으로, 메모리 장치에 대해 인접한 두 산포들 사이의 골을 검색하는 독출 재시도 동작을 수행할 수 있다.
도 34는 도 32의 단계 S3250의 일 예에 따른 제1 맵핑 테이블의 업데이트 동작을 나타내는 흐름도이다.
도 34를 참조하면, 본 실시예에 따른 제1 맵핑 테이블의 업데이트 동작에 따르면, 제1 맵핑 테이블에 저장된 상위 프로그램 순서 스탬프의 값이 증가할 수 있는바, 제1 맵핑 테이블의 업데이트 동작은 포워드 플로우(forward flow)라고 지칭할 수 있다. 제1 맵핑 테이블의 업데이트 동작은 도 1 및 도 9의 맵핑 테이블 생성부(220)에 의해 수행될 수 있다. 이하에서는 도 1, 도 9, 도 17 및 도 18을 참조하여 제1 맵핑 테이블의 업데이트 동작에 대해 상술하기로 한다.
단계 S3400에서, 미리 생성된 제1 맵핑 테이블(MP1)을 검색한다. 제1 맵핑 테이블(MP1)은 독출 전압 오프셋 및 대응하는 상위 프로그램 순서 스탬프를 저장할 수 있다. 도 17의 예에서, 제1 맵핑 테이블(MP1)은 제1 오프셋(OFFSET1)에 대응하는 제1 상위 프로그램 순서 스탬프(N1), 제1 상위 프로그램 순서 스탬프(N1)에 대응하는 제1 메모리 블록의 어드레스(BLK1) 및 제1 상위 프로그램 순서 스탬프(N1)에 대응하는 워드 라인의 인덱스(WL1)를 저장할 수 있다. 또한, 제1 맵핑 테이블(MP1)은 제2 오프셋(OFFSET2)에 대응하는 제2 상위 프로그램 순서 스탬프(N2), 제2 상위 프로그램 순서 스탬프(N2)에 대응하는 제2 메모리 블록의 어드레스(BLK2) 및 제2 상위 프로그램 순서 스탬프(N2)에 대응하는 워드 라인의 인덱스(WL2)를 저장할 수 있다.
단계 S3410에서, 현재 프로그램 순서 스탬프(POS_c)와 제2 상위 프로그램 순서 스탬프(N2)를 비교한다. 비교 결과, 현재 프로그램 순서 스탬프(POS_c)가 제2 상위 프로그램 순서 스탬프(N2) 이하이면 단계 S3411을 수행하고, 그렇지 않으면 단계 S3420을 수행한다.
단계 S3420에서, 현재 프로그램 순서 스탬프(POS_c)와 제1 상위 프로그램 순서 스탬프(N1)를 비교한다. 비교 결과, 현재 프로그램 순서 스탬프(POS_c)가 제1 상위 프로그램 순서 스탬프(N1) 이하이면 단계 S3421을 수행하고, 그렇지 않으면 단계 S3431을 수행한다.
단계 S3411에서, 제2 레벨(V2)로 독출 동작을 수행한다. 여기서, 제2 레벨(V2)은 디폴트 레벨(Vdef)보다 제2 오프셋(OFFSET2)만큼 낮다. 단계 S3412에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행되고, 반면 독출이 실패한 경우 단계 S3413이 수행된다.
단계 S3413에서, 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S3414에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3415가 수행되고, 반면 독출이 실패한 경우 단계 S3416이 수행된다.
단계 S3415에서, 제1 메모리 블록(BLK1)에 대한 플래그(F_BLK1) 및 제2 메모리 블록(BLK2)에 대한 플래그(F_BLK2)는 모두 1로 설정되고, 제1 및 제2 상위 프로그램 순서 스탬프들(N1, N2)은 초기화되며, 이어서, 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행된다. 현재 프로그램 순서 스탬프(POS_c)가 제2 상위 프로그램 순서 스탬프(N2) 이하임에도 불구하고, 디폴트 레벨(Vdef)로 독출이 성공한다면 제1 및 제2 상위 프로그램 순서 스탬프들(N1, N2)이 잘못 결정된 것으로 볼 수 있다. 따라서, 제1 및 제2 상위 프로그램 순서 스탬프들(N1, N2)을 초기화하고, 제1 및 제2 상위 프로그램 순서 스탬프들(N1, N2)에 각각 대응하는 제1 및 제2 메모리 블록들(BLK1, BLK2)에 대한 독출 결과는 제1 맵핑 테이블을 업데이트하는지 이용하지 않도록 제1 및 제2 메모리 블록들(BLK1, BLK2)의 플래그를 1로 설정할 수 있다.
단계 S3416에서, 제1 레벨(V1)로 독출 동작을 수행한다. 여기서, 제1 레벨(V1)은 디폴트 레벨(Vdef)보다 제1 오프셋(OFFSET1)만큼 낮다. 단계 S3417에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3418이 수행된다.
단계 S3418에서, 제2 메모리 블록(BLK2)에 대한 플래그(F_BLK2)는 1로 설정되고, 제2 상위 프로그램 순서 스탬프(N2)는 초기화되며, 이어서, 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행된다. 현재 프로그램 순서 스탬프(POS_c)가 제2 상위 프로그램 순서 스탬프(N2) 이하임에도 불구하고, 제1 레벨(V1)로 독출이 성공한다면 제2 상위 프로그램 순서 스탬프(N2)가 잘못 결정된 것으로 볼 수 있다. 따라서, 제2 상위 프로그램 순서 스탬프(N2)를 초기화하고, 제2 상위 프로그램 순서 스탬프(N2)에 대응하는 제2 메모리 블록(BLK2)에 대한 독출 결과는 제1 맵핑 테이블을 업데이트하는지 이용하지 않도록 제2 메모리 블록(BLK2)의 플래그를 1로 설정할 수 있다.
단계 S3421에서, 제1 레벨(V1)로 독출 동작을 수행한다. 단계 S3412에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행되고, 반면 독출이 실패한 경우 단계 S3423이 수행된다.
단계 S3423에서, 제2 레벨(V2)로 독출 동작을 수행한다. 단계 S3424에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3425가 수행되고, 반면 독출이 실패한 경우 단계 S3426이 수행된다.
단계 S3425에서, 제2 상위 프로그램 순서 스탬프(N2)를 현재 프로그램 순서 스탬프(POS_c)로 업데이트하며, 이어서, 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행된다.
단계 S3426에서, 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S3427에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3428이 수행된다.
단계 S3428에서, 제1 메모리 블록(BLK2)에 대한 플래그(F_BLK1)는 1로 설정되고, 제1 상위 프로그램 순서 스탬프(N1)를 제2 상위 프로그램 순서 스탬프(N2)로 업데이트하며, 이어서, 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행된다. 현재 프로그램 순서 스탬프(POS_c)가 제1 상위 프로그램 순서 스탬프(N1) 이하임에도 불구하고, 디폴트 레벨(Vdef)로 독출이 성공한다면 제1 상위 프로그램 순서 스탬프(N1)가 잘못 결정된 것으로 볼 수 있다. 따라서, 제1 상위 프로그램 순서 스탬프(N1)에 대응하는 제1 메모리 블록(BLK1)에 대한 독출 결과는 제1 맵핑 테이블을 업데이트하는지 이용하지 않도록 제1 메모리 블록(BLK1)의 플래그를 1로 설정하고, 제1 상위 프로그램 순서 스탬프(N1)를 제2 상위 프로그램 순서 스탬프(N2)의 값으로 업데이트할 수 있다.
단계 S3431에서, 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S3432에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행되고, 반면 독출이 실패한 경우 단계 S3433이 수행된다.
단계 S3433에서, 제1 레벨(V1)로 독출 동작을 수행한다. 단계 S3434에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3435가 수행되고, 반면 독출이 실패한 경우 단계 S3436이 수행된다.
단계 S3435에서, 제1 상위 프로그램 순서 스탬프(N1)를 현재 프로그램 순서 스탬프(POS_c)로 업데이트한다. 이어서, 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행된다.
단계 S3436에서, 제2 레벨(V2)로 독출 동작을 수행한다. 단계 S3437에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3438이 수행된다.
단계 S3438에서, 제2 상위 프로그램 순서 스탬프(N2)를 현재 프로그램 순서 스탬프(POS_c)로 업데이트한다. 이어서, 단계 S3260에 따른 제2 맵핑 테이블의 업데이트 동작이 수행된다.
상술한 포워드 플로우는 프로그램 완료 이후 짧은 시간이 경과한 메모리 그룹들부터, 즉, 최신 데이터부터 순차적으로 독출 동작을 수행하는 경우 제1 맵핑 테이블을 빠르게 업데이트할 수 있다. 다시 말해, 리텐션 시간이 짧은 메모리 그룹들부터, 즉, 프로그램 순서 스탬프가 큰 메모리 그룹들부터 순차적으로 독출 동작을 수행하는 경우 포워드 플로우가 유용할 수 있다.
도 35는 도 32의 단계 S3260의 일 예에 따른 제2 맵핑 테이블의 업데이트 동작을 나타내는 흐름도이다.
도 35를 참조하면, 본 실시예에 따른 제2 맵핑 테이블의 업데이트 동작에 따르면, 제2 맵핑 테이블에 저장된 하위 프로그램 순서 스탬프의 값이 감소할 수 있는바, 제2 맵핑 테이블의 업데이트 동작은 백워드 플로우(backward flow)라고 지칭할 수 있다. 제2 맵핑 테이블의 업데이트 동작은 도 1 및 도 9의 맵핑 테이블 생성부(220)에 의해 수행될 수 있다. 이하에서는 도 1, 도 9, 도 17 및 도 18을 참조하여 제2 맵핑 테이블의 업데이트 동작에 대해 상술하기로 한다.
단계 S3500에서, 미리 생성된 제2 맵핑 테이블(MP2)을 검색한다. 제2 맵핑 테이블(MP2)은 독출 전압 오프셋 및 대응하는 하위 프로그램 순서 스탬프를 저장할 수 있다. 도 17의 예에서, 제2 맵핑 테이블(MP2)은 제1 오프셋(OFFSET1)에 대응하는 제1 하위 프로그램 순서 스탬프(N3), 제1 하위 프로그램 순서 스탬프(N3)에 대응하는 제3 메모리 블록의 어드레스(BLK3) 및 제1 하위 프로그램 순서 스탬프(N3)에 대응하는 워드 라인의 인덱스(WL3)를 저장할 수 있다. 또한, 제2 맵핑 테이블(MP2)은 제2 오프셋(OFFSET2)에 대응하는 제2 하위 프로그램 순서 스탬프(N4), 제2 하위 프로그램 순서 스탬프(N4)에 대응하는 제4 메모리 블록의 어드레스(BLK4) 및 제2 하위 프로그램 순서 스탬프(N4)에 대응하는 워드 라인의 인덱스(WL4)를 저장할 수 있다.
단계 S3510에서, 현재 프로그램 순서 스탬프(POS_c)와 제1 하위 프로그램 순서 스탬프(N3)를 비교한다. 비교 결과, 현재 프로그램 순서 스탬프(POS_c)가 제1 하위 프로그램 순서 스탬프(N3)보다 크면 단계 S3511을 수행하고, 그렇지 않으면 단계 S3520을 수행한다.
단계 S3520에서, 현재 프로그램 순서 스탬프(POS_c)와 제2 하위 프로그램 순서 스탬프(N4)를 비교한다. 비교 결과, 현재 프로그램 순서 스탬프(POS_c)가 제2 하위 프로그램 순서 스탬프(N4)보다 크면 단계 S3521을 수행하고, 그렇지 않으면 단계 S3531을 수행한다.
단계 S3511에서, 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S3512에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 본 동작은 종료되고, 반면 독출이 실패한 경우 단계 S3513이 수행된다.
단계 S3513에서, 제2 레벨(V2)로 독출 동작을 수행한다. 여기서, 제2 레벨(V2)은 디폴트 레벨(Vdef)보다 제2 오프셋(OFFSET2)만큼 낮다. 단계 S3514에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3515가 수행되고, 반면 독출이 실패한 경우 단계 S3516이 수행된다.
단계 S3515에서, 제3 메모리 블록(BLK3)에 대한 플래그(F_BLK3) 및 제4 메모리 블록(BLK4)에 대한 플래그(F_BLK4)는 모두 1로 설정되고, 제1 및 제2 하위 프로그램 순서 스탬프들(N3, N4)은 초기화되며, 본 동작은 종료된다. 현재 프로그램 순서 스탬프(POS_c)가 제1 하위 프로그램 순서 스탬프(N3)보다 큼에도 불구하고, 제2 레벨(V2)로 독출이 성공한다면 제1 및 제2 하위 프로그램 순서 스탬프들(N3, N4)이 잘못 결정된 것으로 볼 수 있다. 따라서, 이 경우, 제1 및 제2 하위 프로그램 순서 스탬프들(N3, N4)을 초기화하고, 제1 및 제2 하위 프로그램 순서 스탬프들(N3, N4)에 각각 대응하는 제3 및 제4 메모리 블록들(BLK3, BLK4)에 대한 독출 결과는 제2 맵핑 테이블을 업데이트하는지 이용하지 않도록 제3 및 제4 메모리 블록들(BLK3, BLK4)의 플래그를 1로 설정할 수 있다.
단계 S3516에서, 제1 레벨(V1)로 독출 동작을 수행한다. 여기서, 제1 레벨(V1)은 디폴트 레벨(Vdef)보다 제1 오프셋(OFFSET1)만큼 낮다. 단계 S3517에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3518이 수행된다.
단계 S3518에서, 제3 메모리 블록(BLK3)에 대한 플래그(F_BLK3)는 1로 설정되고, 제1 하위 프로그램 순서 스탬프(N3)는 초기화되며, 본 동작은 종료된다. 현재 프로그램 순서 스탬프(POS_c)가 제1 하위 프로그램 순서 스탬프(N3)보다 큼에도 불구하고, 제1 레벨(V1)로 독출이 성공한다면 제1 하위 프로그램 순서 스탬프(N3)가 잘못 결정된 것으로 볼 수 있다. 따라서, 제1 하위 프로그램 순서 스탬프(N3)를 초기화하고, 제1 하위 프로그램 순서 스탬프(N3)에 대응하는 제3 메모리 블록(BLK3)에 대한 독출 결과는 제2 맵핑 테이블을 업데이트하는지 이용하지 않도록 제3 메모리 블록(BLK3)의 플래그를 1로 설정할 수 있다.
단계 S3521에서, 제1 레벨(V1)로 독출 동작을 수행한다. 단계 S3512에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 본 동작은 종료되고, 반면 독출이 실패한 경우 단계 S3523이 수행된다.
단계 S3523에서, 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S3524에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3525가 수행되고, 반면 독출이 실패한 경우 단계 S3526이 수행된다.
단계 S3525에서, 제1 하위 프로그램 순서 스탬프(N3)를 현재 프로그램 순서 스탬프(POS_c)로 업데이트하며, 본 동작은 종료된다.
단계 S3526에서, 제2 레벨(V2)로 독출 동작을 수행한다. 단계 S3527에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3528이 수행된다.
단계 S3528에서, 제4 메모리 블록(BLK4)에 대한 플래그(F_BLK4)는 1로 설정되고, 제2 하위 프로그램 순서 스탬프(N4)를 제1 하위 프로그램 순서 스탬프(N3)의 값으로 업데이트하며, 본 동작은 종료된다. 현재 프로그램 순서 스탬프(POS_c)가 제2 하위 프로그램 순서 스탬프(N4)보다 큼에도 불구하고, 제2 레벨(V2)로 독출이 성공한다면 제2 하위 프로그램 순서 스탬프(N4)가 잘못 결정된 것으로 볼 수 있다. 따라서, 제2 하위 프로그램 순서 스탬프(N4)에 대응하는 제4 메모리 블록(BLK4)에 대한 독출 결과는 제2 맵핑 테이블을 업데이트하는지 이용하지 않도록 제4 메모리 블록(BLK4)의 플래그를 1로 설정하고, 제2 하위 프로그램 순서 스탬프(N4)를 제1 하위 프로그램 순서 스탬프(N3)의 값으로 업데이트할 수 있다.
단계 S3531에서, 제2 레벨(V2)로 독출 동작을 수행한다. 단계 S3532에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 본 동작은 종료되고, 반면 독출이 실패한 경우 단계 S3533이 수행된다.
단계 S3533에서, 제1 레벨(V1)로 독출 동작을 수행한다. 단계 S3534에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3535가 수행되고, 반면 독출이 실패한 경우 단계 S3536이 수행된다.
단계 S3535에서, 제2 하위 프로그램 순서 스탬프(N4)를 현재 프로그램 순서 스탬프(POS_c)로 업데이트하며, 본 동작은 종료된다.
단계 S3536에서, 디폴트 레벨(Vdef)로 독출 동작을 수행한다. 단계 S3537에서, 독출이 성공했는지 판단한다. 판단 결과, 독출이 성공한 경우 단계 S3538이 수행된다.
단계 S3538에서, 제1 하위 프로그램 순서 스탬프(N3)를 현재 프로그램 순서 스탬프(POS_c)로 업데이트하며, 본 동작은 종료된다.
도 34 및 도 35를 참조하여 이상에서 상술한 제1 및 제2 맵핑 테이블들(MP1, MP2)의 업데이트 동작이 완료되면, 이에 상응하게 제3 맵핑 테이블(MP3)도 업데이트될 수 있다. 이상에서는, 제1 맵핑 테이블(MP1)이 먼저 업데이트되고, 이어서 제2 맵핑 테이블(MP2)이 업데이트되는 실시예에 대하여 설명하였으나, 본 발명은 이에 한정되지 않는다. 다른 실시예에서, 제2 맵핑 테이블(MP2)이 먼저 업데이트되고, 이어서, 제1 맵핑 테이블(MP1)이 업데이트될 수 있다.
상술한 백워드 플로우는 프로그램 완료 이후 오랜 시간이 경과한 메모리 그룹들부터, 즉, 오래된 데이터부터 순차적으로 독출 동작을 수행하는 경우 제2 맵핑 테이블을 빠르게 업데이트할 수 있다. 다시 말해, 리텐션 시간이 긴 메모리 그룹들부터, 즉, 프로그램 순서 스탬프가 작은 메모리 그룹들부터 순차적으로 독출 동작을 수행하는 경우 백워드 플로우가 유용할 수 있다.
도 36은 본 발명의 일 실시예에 따른 메모리 장치의 동작 방법을 나타내는 흐름도이다.
도 36을 참조하면, 본 실시예에 따른 메모리 장치의 동작 방법은 메모리 장치에 포함된 복수의 메모리 그룹들에 대한 프로그램 순서에 따라 복수의 메모리 그룹들에 대한 독출 전압을 제어하는 방법으로서, 도 1 내지 도 35를 참조하여 상술된 내용은 본 실시예에 따른 메모리 장치의 동작 방법에도 적용된다. 이하에서는, 도 1 내지 도 26 및 도 36을 참조하여, 본 실시예에 따른 메모리 시스템의 동작 방법을 상술하기로 한다.
단계 S300에서, 프로그램 순서 정보를 저장한다. 구체적으로, 메모리 셀 어레이(110)는 프로그램 순서 정보를 저장할 수 있다. 여기서, 프로그램 순서 정보는 프로그램 순서 관리부(210)에 의해 생성될 수 있다.
단계 S320에서, 제1 및 제2 맵핑 테이블들을 저장한다. 구체적으로, 메모리 셀 어레이(110)는 제1 및 제2 맵핑 테이블들(MP1, MP2)을 저장할 수 있다. 여기서, 제1 및 제2 맵핑 테이블들(MP1, MP2)은 메모리 컨트롤러(200)에 포함된 맵핑 테이블 생성부(220)에 의해 생성될 수 있다. 제1 맵핑 테이블(MP1)은 독출 전압 오프셋과 대응하는 상위 프로그램 순서 스탬프를 저장하고, 제2 맵핑 테이블(MP2)은 상기 독출 전압 오프셋과 대응하는 하위 프로그램 순서 스탬프를 저장할 수 있다.
단계 S340에서, 제1 및 제2 맵핑 테이블들 및 프로그램 순서 정보를 기초로 하여 독출 전압을 제어한다. 구체적으로, 독출 전압 결정부(160)는 제1 및 제2 맵핑 테이블들(MP1, MP2) 및 프로그램 순서 정보를 기초로 하여 리텐션 시간에 따라 독출 전압을 제어할 수 있다.
다른 실시예에서, 상기 방법은 제3 맵핑 테이블(MP3)을 저장하는 단계를 더 포함할 수 있고, 독출 전압을 제어하는 단계는 제1 내지 제3 맵핑 테이블들(MP1, MP2, MP3) 및 프로그램 순서 정보를 기초로 하여 독출 전압을 제어할 수 있다. 제3 맵핑 테이블(MP3)은 독출 전압 오프셋 및 대응하는 상위 프로그램 순서 스탬프와 하위 프로그램 순서 스탬프 사이의 평균 값에 해당하는 중간 프로그램 순서 스탬프를 저장할 수 있다.
도 37은 본 발명의 일 실시예에 따른 바이너리 검색 동작을 개략적으로 나타낸다.
도 37을 참조하면, 상술한 본 발명의 실시예들에 따르면, 포워드 플로우에 따른 제1 맵핑 테이블이 생성되고, 백워드 플로우에 따른 제2 맵핑 테이블이 생성되며, 제1 및 제2 맵핑 테이블들에 저장된 프로그램 순서 스탬프들의 평균 값에 따라 제3 맵핑 테이블이 생성될 수 있다. 생성된 제1 내지 제3 맵핑 테이블들을 기초로 하여 바이너리 검색이 가능해지고, 이로써, 특정 메모리 그룹에 대한 독출 전압을 빠르고 정확하게 결정할 수 있다. 따라서, 메모리 시스템의 성능 및 신뢰성이 더욱 향상될 수 있다.
도 38은 본 발명의 실시예들에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 나타내는 블록도이다.
도 38을 참조하면, 메모리 카드 시스템(1000)은 호스트(1100) 및 메모리 카드(1200)를 포함할 수 있다. 호스트(1100)는 호스트 컨트롤러(1110) 및 호스트 접속부(1120)를 포함할 수 있다. 메모리 카드(1200)는 카드 접속부(1210), 카드 컨트롤러(1220) 및 메모리 장치(1220)를 포함할 수 있다. 이때, 메모리 카드(1200)는 도 1 내지 도 37에 도시된 실시예들을 이용하여 구현될 수 있다.
호스트(1100)는 메모리 카드(1200)에 데이터를 기입하거나, 메모리 카드(1200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(1110)는 커맨드(CMD), 호스트(1100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK) 및 데이터(DATA)를 호스트 접속부(1120)를 통해 메모리 카드(1200)로 전송할 수 있다.
카드 컨트롤러(1220)는 카드 접속부(1210)를 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(1220) 내에 있는 클럭 발생기(미도시)에서 발생한 클럭 신호에 동기하여 데이터를 메모리 장치(1220)에 저장할 수 있다. 메모리 장치(1220)는 호스트(1100)로부터 전송된 데이터를 저장할 수 있다.
메모리 카드(1220)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 39는 본 발명의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 39를 참조하면, 컴퓨팅 시스템(2000)은 메모리 시스템(2100), 프로세서(2200), RAM(2300), 입출력 장치(2400), 및 전원 장치(2500) 포함할 수 있다. 한편, 도 39에는 도시되지 않았지만, 컴퓨팅 시스템(2000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 컴퓨팅 시스템(2000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
프로세서(2200)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(2200)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(2200)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2600)를 통하여 RAM(2300), 입출력 장치(2400) 및 메모리 시스템(2100)과 통신을 수행할 수 있다. 이때, 메모리 시스템(2100)은 도 1 내지 도 38에 도시된 실시예들을 이용하여 구현될 수 있다.
실시예에 따라, 프로세서(2200)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2300)는 컴퓨팅 시스템(2000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(2300)은 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(2400)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(2500)는 컴퓨팅 시스템(2000)의 동작에 필요한 동작 전압을 공급할 수 있다.
도 40은 본 발명의 실시예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
도 40을 참조하면, SSD 시스템(3000)은 호스트(3100) 및 SSD(3200)를 포함할 수 있다. SSD(3200)는 신호 커넥터(signal connector)를 통해 호스트(3100)와 신호를 주고 받으며, 전원 커넥터(power connector)를 통해 전원을 입력 받는다. SSD(3200)는 SSD 컨트롤러(3210), 보조 전원 장치(3220) 및 복수의 메모리 장치들(3230, 3240, 3250)을 포함할 수 있다. 이때, SSD(3200)는 도 1 내지 도 39에 도시된 실시예들을 이용하여 구현될 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
10, 20, 30: 메모리 시스템
100, 300, 500: 메모리 장치
200, 400, 600: 메모리 컨트롤러

Claims (10)

  1. 메모리 장치를 포함하는 메모리 시스템의 동작 방법으로서,
    상기 메모리 장치에 포함된 복수의 메모리 그룹들에 대한 프로그램 동작의 상대적인 선후 관계를 나타내는 프로그램 순서 스탬프를 기초로 하여, 상기 메모리 장치에 대한 프로그램 순서 정보를 관리하는 단계;
    순차적으로 감소하는 복수의 전압 레벨들을 이용하여, 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상위(upper) 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블을 생성하는 단계;
    순차적으로 증가하는 복수의 전압 레벨들을 이용하여, 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 하위(lower) 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 생성하는 단계; 및
    상기 제1 및 제2 맵핑 테이블들 및 상기 프로그램 순서 정보를 기초로 하여, 상기 메모리 장치에 대한 독출 동작을 수행하기 위한 독출 전압을 가변적으로 결정하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 상위 프로그램 순서 스탬프는 상기 독출 전압의 범위의 상한 레벨에 근접하게 결정되고,
    상기 하위 프로그램 순서 스탬프는 상기 독출 전압의 범위의 하한 레벨에 근접하게 결정되는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 제1 맵핑 테이블을 생성하는 단계는,
    상기 복수의 메모리 그룹들 중 제1 메모리 그룹에 대해, 디폴트 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨보다 제1 오프셋만큼 낮은 제1 레벨로 독출 동작을 수행하는 단계; 및
    상기 제1 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 상기 제1 오프셋에 대응하는 제1 상위 프로그램 순서 스탬프로 맵핑하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 제1 맵핑 테이블을 생성하는 단계는,
    상기 제1 메모리 그룹에 대해 상기 제1 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨보다 제2 오프셋만큼 낮은 제2 레벨로 독출 동작을 수행하는 단계; 및
    상기 제2 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 메모리 그룹에 대응하는 상기 프로그램 순서 스탬프를 상기 제2 오프셋에 대응하는 제2 상위 프로그램 순서 스탬프로 맵핑하는 단계를 더 포함하고,
    상기 제2 오프셋의 크기는 상기 제1 오프셋의 크기보다 큰 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 제2 맵핑 테이블을 생성하는 단계는,
    상기 복수의 메모리 그룹들 중 제1 메모리 그룹에 대해, 디폴트 레벨보다 제2 오프셋만큼 낮은 제2 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨보다 제1 오프셋만큼 낮은 제1 레벨로 독출 동작을 수행하는 단계; 및
    상기 제1 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 메모리 그룹에 대응하는 프로그램 순서 스탬프를 상기 제2 오프셋에 대응하는 제2 하위 프로그램 순서 스탬프로 맵핑하는 단계를 포함하고,
    상기 제2 오프셋의 크기는 상기 제1 오프셋의 크기보다 큰 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 제2 맵핑 테이블을 생성하는 단계는,
    상기 제1 메모리 그룹에 대해 상기 제1 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨로 독출 동작을 수행하는 단계; 및
    상기 디폴트 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 메모리 그룹에 대응하는 상기 프로그램 순서 스탬프를 상기 제1 오프셋에 대응하는 제1 하위 프로그램 순서 스탬프로 맵핑하는 단계를 더 포함하 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 제1 및 제2 맵핑 테이블들을 기초로 하여, 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상기 상위 프로그램 순서 스탬프와 상기 하위 프로그램 순서 스탬프 사이의 평균 값에 해당하는 중간 프로그램 순서 스탬프를 저장하는 제3 맵핑 테이블을 생성하는 단계를 더 포함하고,
    상기 독출 전압을 가변적으로 결정하는 단계는, 상기 제1 내지 제3 맵핑 테이블들 및 상기 프로그램 순서 정보를 기초로 하여 상기 독출 전압을 가변적으로 결정하는 것을 특징으로 하는 방법.
  8. 제7항에 있어서,
    상기 독출 전압을 가변적으로 결정하는 단계는,
    상기 복수의 메모리 그룹들 중 현재 독출하고자 하는 제2 메모리 그룹에 대응하는 현재 프로그램 순서 스탬프와 제1 오프셋에 대응하는 제1 중간 프로그램 순서 스탬프를 비교하는 단계;
    상기 현재 프로그램 순서 스탬프가 상기 제1 중간 프로그램 순서 스탬프보다 작지 않은 경우, 상기 제2 메모리 그룹에 대한 독출 전압을 디폴트 레벨로 결정하는 단계; 및
    상기 현재 프로그램 순서 스탬프가 상기 제1 중간 프로그램 순서 스탬프보다 작은 경우, 상기 제2 메모리 그룹에 대한 상기 독출 전압을 상기 디폴트 레벨보다 상기 제1 오프셋만큼 낮은 제1 레벨로 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 제2 메모리 그룹에 대해 상기 디폴트 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 제1 레벨로 독출 동작을 수행하는 단계;
    상기 제2 메모리 그룹에 대해 상기 제1 레벨로 독출 동작을 수행한 결과 독출 실패한 경우, 상기 디폴트 레벨보다 제2 오프셋만큼 낮은 제2 레벨로 독출 동작을 수행하는 단계; 및
    상기 제1 레벨 또는 상기 제2 레벨로 독출 동작을 수행한 결과 독출 성공한 경우, 상기 제1 및 제2 맵핑 테이블들을 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 복수의 메모리 그룹들을 포함하는 메모리 장치 및 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 메모리 시스템으로서,
    상기 메모리 컨트롤러는,
    상기 복수의 메모리 그룹들에 대한 프로그램 동작의 상대적인 선후 관계를 나타내는 프로그램 순서 스탬프를 기초로 하여 상기 메모리 장치에 대한 프로그램 순서 정보를 관리하는 프로그램 순서 관리부; 및
    순차적으로 감소하는 복수의 전압 레벨들을 이용하여, 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 상위 프로그램 순서 스탬프를 저장하는 제1 맵핑 테이블을 생성하고, 순차적으로 증가하는 복수의 전압 레벨들을 이용하여, 상기 독출 전압 오프셋 및 상기 독출 전압 오프셋에 대응하는 하위 프로그램 순서 스탬프를 저장하는 제2 맵핑 테이블을 생성하는 맵핑 테이블 생성부를 포함하는 메모리 시스템.
KR1020140148439A 2014-10-29 2014-10-29 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법 KR102252378B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140148439A KR102252378B1 (ko) 2014-10-29 2014-10-29 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
US14/743,458 US9921749B2 (en) 2014-10-29 2015-06-18 Memory system and method including determining a read voltage based on program order information and a plurality of mapping tables

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140148439A KR102252378B1 (ko) 2014-10-29 2014-10-29 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160050392A true KR20160050392A (ko) 2016-05-11
KR102252378B1 KR102252378B1 (ko) 2021-05-14

Family

ID=55852682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140148439A KR102252378B1 (ko) 2014-10-29 2014-10-29 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법

Country Status (2)

Country Link
US (1) US9921749B2 (ko)
KR (1) KR102252378B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10607706B2 (en) 2018-01-08 2020-03-31 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170110194A1 (en) * 2015-10-19 2017-04-20 Silicon Storage Technology, Inc. Power Driven Optimization For Flash Memory
KR102420588B1 (ko) * 2015-12-04 2022-07-13 삼성전자주식회사 비휘발성 메모리 장치, 메모리 시스템, 비휘발성 메모리 장치의 동작 방법 및 메모리 시스템의 동작 방법
US10445195B2 (en) 2017-08-07 2019-10-15 Micron Technology, Inc. Performing data restore operations in memory
CN110246533B (zh) * 2018-03-09 2020-11-13 建兴储存科技(广州)有限公司 固态储存装置的失败模式检测方法及错误更正方法
US11048597B2 (en) 2018-05-14 2021-06-29 Micron Technology, Inc. Memory die remapping
US11086529B2 (en) 2018-09-26 2021-08-10 Western Digital Technologies, Inc. Data storage systems and methods for improved data relocation based on read-level voltages associated with error recovery
US11288160B2 (en) 2020-08-17 2022-03-29 Micron Technology, Inc. Threshold voltage distribution adjustment for buffer
KR20220056919A (ko) 2020-10-28 2022-05-09 삼성전자주식회사 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법
US11705193B2 (en) 2021-02-01 2023-07-18 Micron Technology, Inc. Error avoidance based on voltage distribution parameters
US11443830B1 (en) 2021-03-30 2022-09-13 Micron Technology, Inc. Error avoidance based on voltage distribution parameters of block families
US11735254B2 (en) 2021-03-30 2023-08-22 Micron Technology, Inc. Error avoidance based on voltage distribution parameters of blocks

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120294104A1 (en) * 2011-05-17 2012-11-22 Samsung Electronics Co., Ltd. Nonvolatile memory systems using time-dependent read voltages and methods of operating the same
US20140201580A1 (en) * 2013-01-11 2014-07-17 Sandisk Technologies Inc. Systems and methods to update reference voltages in response to data retention in non-volatile memory
US20140226398A1 (en) * 2013-02-14 2014-08-14 Sandisk Technologies Inc. Systems and methods to update reference voltages of non-volatile memory
KR20140101690A (ko) * 2013-02-10 2014-08-20 엘에스아이 코포레이션 리텐션 드리프트 이력 기반 비휘발성 메모리 판독 임계치 최적화
US20150179284A1 (en) * 2013-12-19 2015-06-25 Sandisk Technologies Inc. System and method of managing tags associated with read voltages

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6678785B2 (en) 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7957189B2 (en) 2004-07-26 2011-06-07 Sandisk Il Ltd. Drift compensation in a flash memory
JP2006133923A (ja) 2004-11-04 2006-05-25 Sony Corp データ記録再生装置、記録再生方法、プログラム並びにデータ記録媒体
US20090265403A1 (en) 2006-08-31 2009-10-22 Keiji Fukumoto File system
JP2008097705A (ja) 2006-10-11 2008-04-24 Matsushita Electric Ind Co Ltd 半導体記憶装置
JP2008251138A (ja) 2007-03-30 2008-10-16 Toshiba Corp 不揮発性半導体メモリ、不揮発性半導体メモリの制御方法、不揮発性半導体メモリシステム、及びメモリカード
JP2008276832A (ja) 2007-04-26 2008-11-13 Toshiba Corp 半導体記憶装置およびその駆動方法
US7908423B2 (en) 2007-07-25 2011-03-15 Silicon Motion, Inc. Memory apparatus, and method of averagely using blocks of a flash memory
JP4535117B2 (ja) 2007-11-06 2010-09-01 ソニー株式会社 メモリ装置、メモリ管理方法、およびプログラム
US8085591B2 (en) 2008-05-20 2011-12-27 Micron Technology, Inc. Charge loss compensation during programming of a memory device
KR20100022229A (ko) 2008-08-19 2010-03-02 주식회사 하이닉스반도체 불휘발성 메모리 소자 및 그 동작 방법
JP2010165251A (ja) 2009-01-16 2010-07-29 Toshiba Corp 情報処理装置及びプロセッサ並びに情報処理方法
KR20100117906A (ko) 2009-04-27 2010-11-04 주식회사 하이닉스반도체 비휘발성 메모리 소자 및 그 구동 방법
US8072805B2 (en) 2009-08-18 2011-12-06 Skymedi Corporation Method and system of finding a read voltage for a flash memory
JP5271225B2 (ja) 2009-09-28 2013-08-21 株式会社日立製作所 半導体装置、及び、記憶セルの記憶状態の補正方法
JP2011095853A (ja) 2009-10-27 2011-05-12 Panasonic Corp 不揮発性記憶装置、ホスト装置および不揮発性記憶システム
JP5349256B2 (ja) 2009-11-06 2013-11-20 株式会社東芝 メモリシステム
KR20110092090A (ko) 2010-02-08 2011-08-17 삼성전자주식회사 불 휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
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
US8737136B2 (en) 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
US8248856B2 (en) 2010-10-20 2012-08-21 Seagate Technology Llc Predictive read channel configuration
JP2012123498A (ja) 2010-12-07 2012-06-28 Fuji Electric Co Ltd 時系列データを保存する情報処理装置および方法
US8456911B2 (en) 2011-06-07 2013-06-04 Sandisk Technologies Inc. Intelligent shifting of read pass voltages for non-volatile storage
US9477590B2 (en) 2011-09-16 2016-10-25 Apple Inc. Weave sequence counter for non-volatile memory systems
US20130159610A1 (en) 2011-12-16 2013-06-20 Samsung Electronics Co., Ltd. Non-volatile semiconductor memory device related method of operation
KR20140021909A (ko) 2012-08-13 2014-02-21 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법
CN103700401A (zh) 2012-09-28 2014-04-02 广明光电股份有限公司 快闪存储器编程及读取的方法
US9081708B2 (en) * 2012-11-16 2015-07-14 Freescale Semiconductor, Inc. Dynamic read scheme for high reliability high performance flash memory
US9025374B2 (en) * 2012-12-13 2015-05-05 Sandisk Technologies Inc. System and method to update read voltages in a non-volatile memory in response to tracking data
US9251053B2 (en) 2013-03-14 2016-02-02 SanDisk Technologies, Inc. Managing configuration parameters for a non-volatile medium
US20140359202A1 (en) * 2013-05-31 2014-12-04 Western Digital Technologies, Inc. Reading voltage calculation in solid-state storage devices

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120294104A1 (en) * 2011-05-17 2012-11-22 Samsung Electronics Co., Ltd. Nonvolatile memory systems using time-dependent read voltages and methods of operating the same
KR20120128433A (ko) * 2011-05-17 2012-11-27 삼성전자주식회사 불휘발성 메모리를 포함하는 메모리 시스템 및 불휘발성 메모리의 제어 방법
US20140201580A1 (en) * 2013-01-11 2014-07-17 Sandisk Technologies Inc. Systems and methods to update reference voltages in response to data retention in non-volatile memory
KR20140101690A (ko) * 2013-02-10 2014-08-20 엘에스아이 코포레이션 리텐션 드리프트 이력 기반 비휘발성 메모리 판독 임계치 최적화
US20140226398A1 (en) * 2013-02-14 2014-08-14 Sandisk Technologies Inc. Systems and methods to update reference voltages of non-volatile memory
US20150179284A1 (en) * 2013-12-19 2015-06-25 Sandisk Technologies Inc. System and method of managing tags associated with read voltages

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10607706B2 (en) 2018-01-08 2020-03-31 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
US20160124642A1 (en) 2016-05-05
US9921749B2 (en) 2018-03-20
KR102252378B1 (ko) 2021-05-14

Similar Documents

Publication Publication Date Title
KR102252378B1 (ko) 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
KR102263046B1 (ko) 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
KR102292642B1 (ko) 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 프로그램 방법
KR20170097267A (ko) 읽기 전압 서치 유닛을 포함하는 데이터 저장 장치
US11604695B2 (en) Copy-back operations in a memory device
KR20120001405A (ko) 메모리 시스템 및 그것의 웨어 레벨링 방법
KR102287760B1 (ko) 메모리 시스템 및 상기 메모리 시스템의 동작 방법
TWI699770B (zh) 記憶體系統及其操作方法
KR20170102659A (ko) 페이지 버퍼를 포함하는 불휘발성 메모리 장치 및 그 동작방법
KR20170076878A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20210129928A (ko) 메모리 장치 및 메모리 장치의 동작방법
KR20210026431A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR102546304B1 (ko) 데이터 중복 제거를 수행할 수 있는 플래시 메모리 장치의 동작 방법과 상기 플래시 메모리 장치를 포함하는 데이터 저장 시스템
KR20200095903A (ko) 메모리 시스템 및 그것의 동작방법
KR20220049109A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20190179563A1 (en) Memory system and operation method thereof
KR20220118004A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20230000724A (ko) 비휘발성 메모리 장치에 데이터를 프로그램하기 위한 장치 및 방법
KR20170114837A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
KR20210025412A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR20200113387A (ko) 메모리 시스템 및 그것의 동작방법
US11508448B2 (en) Memory system including memory device and operating method thereof
US11561853B2 (en) Memory system and memory controller determining a magnitude of a power supplied to the memory controller when error has occurred in target data
KR20220139081A (ko) 비휘발성 메모리 장치에 데이터를 프로그램 및 검증하기 위한 장치 및 방법
KR20220138961A (ko) 메모리 장치 및 메모리 장치의 동작 방법

Legal Events

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