KR20220039282A - 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents
컨트롤러 및 이를 포함하는 메모리 시스템 Download PDFInfo
- Publication number
- KR20220039282A KR20220039282A KR1020200122225A KR20200122225A KR20220039282A KR 20220039282 A KR20220039282 A KR 20220039282A KR 1020200122225 A KR1020200122225 A KR 1020200122225A KR 20200122225 A KR20200122225 A KR 20200122225A KR 20220039282 A KR20220039282 A KR 20220039282A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- command
- program
- read
- voltage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/30—Power supply circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/14—Implementation of control logic, e.g. test mode decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/36—Data generation devices, e.g. data inverters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
본 기술은 메모리 블록의 프로그램 동작을 수행하기 위한 제1 방식의 프로그램 커맨드와, 상기 프로그램 동작을 중단시키기 위한 중단 커맨드를 출력하도록 구성된 테스트 관리부; 및 상기 제1 방식의 프로그램 커맨드를 상기 메모리 블록을 포함하는 메모리 장치에 전송하고, 설정된 시간이 지난 후에 상기 중단 커맨드를 상기 메모리 장치에 전송하도록 구성된 메모리 인터페이스를 포함하고, 상기 테스트 관리부는 상기 메모리 블록에 포함된 메모리 셀들을 리드(read)하기 위한 제2 방식의 리드 커맨드를 출력하고, 상기 메모리 인터페이스는 상기 리드 커맨드에 응답하여 상기 메모리 장치로부터 출력된 데이터를 카운트하여 카운트 값을 산출하고, 상기 테스트 관리부는 상기 카운트 값에 따라 상기 메모리 블록에 대한 상태 정보를 생성하는 컨트롤러 및 이를 포함하는 메모리 시스템을 포함한다.
Description
본 발명은 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 메모리 장치를 테스트할 수 있는 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
메모리 장치는 전원공급이 중단되면 저장된 데이터가 소멸되는 휘발성(Volatile) 메모리 장치와, 전원공급이 중단되더라도 저장된 데이터가 유지되는 비휘발성(Non-volatile) 메모리 장치를 포함할 수 있다.
이 중에서, 비휘발성 메모리 장치는 휴대폰, 노트북 등 휴대용 전자 장치의 사용량이 증가하면서 대용량 및 고집적도가 더욱 요구되고 있다.
이에, 기판 상에 단층으로 메모리 셀을 형성하는 2차원 비휘발성 메모리 장치의 집적도 향상이 한계에 도달함에 따라, 기판 상에 수직으로 메모리 셀들을 적층하는 3차원 구조의 비휘발성 메모리 장치가 개발되고 있다.
3차원 구조의 비휘발성 메모리 장치는 고집적도에는 유리하지만, 메모리 장치를 구성하는 소자들 간 간격이 좁기 때문에, 메모리 장치의 신뢰도가 취약할 수 있다.
본 발명의 실시예는 메모리 장치의 결함을 미리 검출할 수 있는 컨트롤러 및 이를 포함하는 메모리 시스템을 제공한다.
본 발명의 실시예에 따른 컨트롤러는, 메모리 블록의 프로그램 동작을 수행하기 위한 제1 방식의 프로그램 커맨드와, 상기 프로그램 동작을 중단시키기 위한 중단 커맨드를 출력하도록 구성된 테스트 관리부; 및 상기 제1 방식의 프로그램 커맨드를 상기 메모리 블록을 포함하는 메모리 장치에 전송하고, 설정된 시간이 지난 후에 상기 중단 커맨드를 상기 메모리 장치에 전송하도록 구성된 메모리 인터페이스를 포함하고, 상기 테스트 관리부는 상기 메모리 블록에 포함된 메모리 셀들을 리드(read)하기 위한 제2 방식의 리드 커맨드를 출력하고, 상기 메모리 인터페이스는 상기 리드 커맨드에 응답하여 상기 메모리 장치로부터 출력된 데이터를 카운트하여 카운트 값을 산출하고, 상기 테스트 관리부는 상기 카운트 값에 따라 상기 메모리 블록에 대한 상태 정보를 생성한다.
본 발명의 실시예에 따른 컨트롤러는, 메모리 블록의 프로그램 동작을 수행하기 위한 제1 방식의 프로그램 커맨드, 상기 프로그램 동작을 중단시키기 위한 중단 커맨드, 상기 메모리 블록의 슬로우 상태를 체크하기 위한 제1 리드 커맨드 및 상기 메모리 블록의 패스트 상태를 체크하기 위한 제2 리드 커맨드를 출력하도록 구성된 커맨드 생성부; 상기 프로그램 커맨드, 상기 중단 커맨드, 상기 제1 리드 커맨드 및 상기 제2 리드 커맨드를 상기 메모리 블록을 포함하는 메모리 장치에 순차적으로 전송하도록 구성된 커맨드 큐; 상기 제1 및 제2 리드 커맨드들 각각에 응답하여 상기 메모리 장치로부터 출력된 제1 및 제2 데이터를 수신받고, 상기 제1 및 제2 데이터 각각에 포함된 서로 다른 비트들의 개수를 카운트하여 카운트 값을 출력하도록 구성되는 카운터; 및 상기 카운트 값에 따라 상기 메모리 블록의 상태를 판단하여 상태 정보를 생성하도록 구성된 상태 판단부를 포함한다.
본 기술은 메모리 셀들의 상태에 따라 메모리 블록의 상태를 판단하고 배드(bad) 블록을 검출할 수 있으며, 배드 블록을 검출하기 위한 테스트 시간을 단축할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1에 도시된 메모리 장치를 구체적으로 설명하기 위한 도면이다.
도 3은 도 2에 도시된 메모리 셀 어레이를 구체적으로 설명하기 위한 도면이다.
도 4는 도 3에 도시된 메모리 블록을 구체적으로 설명하기 위한 도면이다.
도 5는 프로그램 방식에 따른 메모리 셀들의 문턱전압을 설명하기 위한 도면이다.
도 6은 ISPP 방식의 프로그램 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 컨트롤러를 구체적으로 설명하기 위한 도면이다.
도 8은 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 9는 제1 실시 예에 따른 커맨드 전송 방법을 설명하기 위한 도면이다.
도 10은 제1 실시 예에 따른 중단 커맨드의 출력 시간을 설명하기 위한 도면이다.
도 11은 제1 실시 예에 따른 전압 테이블을 설명하기 위한 도면이다.
도 12는 제1 실시 예에 따른 테스트 동작에서 메모리 셀들의 상태를 체크하는 방법을 설명하기 위한 도면이다.
도 13은 제1 실시 예에 따른 메모리 블록의 상태를 판단하는 방법을 설명하기 위한 도면이다.
도 14는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 15는 제2 실시 예에 따른 전압 테이블을 설명하기 위한 도면이다.
도 16은 제2 실시 예에 따른 테스트 동작에서 메모리 블록의 상태를 체크하는 방법을 설명하기 위한 도면이다.
도 17은 제2 실시 예에 따른 상태 테이블을 설명하기 위한 도면이다.
도 18은 본 발명의 실시예에 따른 메모리 시스템의 다른 실시예를 설명하기 위한 도면이다.
도 19는 본 발명의 실시예에 따른 메모리 시스템의 또 다른 실시예를 설명하기 위한 도면이다.
도 2는 도 1에 도시된 메모리 장치를 구체적으로 설명하기 위한 도면이다.
도 3은 도 2에 도시된 메모리 셀 어레이를 구체적으로 설명하기 위한 도면이다.
도 4는 도 3에 도시된 메모리 블록을 구체적으로 설명하기 위한 도면이다.
도 5는 프로그램 방식에 따른 메모리 셀들의 문턱전압을 설명하기 위한 도면이다.
도 6은 ISPP 방식의 프로그램 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 컨트롤러를 구체적으로 설명하기 위한 도면이다.
도 8은 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 9는 제1 실시 예에 따른 커맨드 전송 방법을 설명하기 위한 도면이다.
도 10은 제1 실시 예에 따른 중단 커맨드의 출력 시간을 설명하기 위한 도면이다.
도 11은 제1 실시 예에 따른 전압 테이블을 설명하기 위한 도면이다.
도 12는 제1 실시 예에 따른 테스트 동작에서 메모리 셀들의 상태를 체크하는 방법을 설명하기 위한 도면이다.
도 13은 제1 실시 예에 따른 메모리 블록의 상태를 판단하는 방법을 설명하기 위한 도면이다.
도 14는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 15는 제2 실시 예에 따른 전압 테이블을 설명하기 위한 도면이다.
도 16은 제2 실시 예에 따른 테스트 동작에서 메모리 블록의 상태를 체크하는 방법을 설명하기 위한 도면이다.
도 17은 제2 실시 예에 따른 상태 테이블을 설명하기 위한 도면이다.
도 18은 본 발명의 실시예에 따른 메모리 시스템의 다른 실시예를 설명하기 위한 도면이다.
도 19는 본 발명의 실시예에 따른 메모리 시스템의 또 다른 실시예를 설명하기 위한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(1000)은 데이터가 저장되는 메모리 장치들(1100) 및 컨트롤러(1200)를 포함할 수 있다.
메모리 장치들(1100)은 컨트롤러(1200)의 제어에 따라 데이터를 저장하거나 출력할 수 있도록 구성될 수 있다. 메모리 장치들(1100)은 채널들을 통해 컨트롤러(1200)에 연결될 수 있다.
컨트롤러(1200)는 외부 장치와 메모리 장치들(1100) 사이에서 통신할 수 있다. 외부 장치는 호스트(host)일 수 있다. 컨트롤러(1200)는 호스트의 요청(request)에 따라 메모리 장치들(1100)을 제어하거나, 호스트의 요청이 없더라도 메모리 시스템(1000)의 성능 개선을 위한 백그라운드 동작을 수행할 수 있다.
본 실시 예에 따른 컨트롤러(1200)는 메모리 장치들(1100)의 결함을 테스트하도록 구성될 수 있다. 예를 들면, 컨트롤러(1200)는 메모리 장치들(1100)이 제조된 후 메모리 장치들(1100)에 포함된 메모리 블록들의 결함 여부를 체크하기 위한 테스트 동작을 수행할 수 있다. 컨트롤러(1200)는 메모리 장치들(1100) 각각에 포함된 메모리 블록들에게 프로그램 커맨드를 전송한 후, 일정 시간 후에 중단 커맨드를 전송할 수 있으며, 프로그램된 메모리 셀들의 리드(read) 결과를 토대로 메모리 블록의 상태를 체크할 수 있다. 예를 들면, 메모리 셀들의 문턱전압이 기준보다 과도하게 낮거나 높으면, 컨트롤러(1200)는 메모리 블록을 배드 블록으로 처리할 수 있으며, 배드 블록은 아니지만 문턱전압이 기준보다 약간 차이 나는 메모리 블록에 대해서는 상태 정보를 저장하고, 상태 정보를 참조하여 메모리 블록의 후속 동작을 관리할 수 있다.
도 2는 도 1에 도시된 메모리 장치를 구체적으로 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 장치(1100)는 데이터를 저장할 수 있는 메모리 셀 어레이(memory cell array; 100)와, 메모리 셀 어레이(100)의 프로그램, 리드 또는 소거 동작을 수행할 수 있는 주변 회로들(110)을 포함할 수 있다.
메모리 셀 어레이(100)는 불휘발성 메모리 셀들을 포함하는 복수의 메모리 블록들을 포함할 수 있다. 메모리 블록들 각각에는 로컬 라인들(LL)이 연결될 수 있고, 비트라인들(BL)이 공통으로 연결될 수 있다.
주변 회로(110)는 전압 생성부(voltage generator; 112), 로우 디코더(row decoder; 113), 페이지 버퍼 그룹(page buffer group; 114), 컬럼 디코더(column decoder; 115) 및 입출력 회로(input/output circuit; 116)를 포함할 수 있다.
전압 생성부(112)는 동작 신호(OPS)에 응답하여 프로그램, 리드 또는 소거 동작에 필요한 동작 전압들(Vop)을 생성하고, 생성된 동작 전압(Vop)을 로우 디코더(113)에게 전송할 수 있다. 예를 들면, 동작 전압(Vop)은 프로그램 전압, 리드 전압, 소거 전압 및 패스 전압 등의 동작 전압들(Vop)을 생성 및 출력할 수 있다.
로우 디코더(113)는 로우 어드레스(RADD)에 응답하여 로컬 라인들(LL)을 통해 동작 전압들(Vop)을 선택된 메모리 블록으로 전달할 수 있다.
페이지 버퍼 그룹(114)은 비트라인들(BL)에 연결된 복수의 페이지 버퍼들을 포함할 수 있다. 예를 들면, 페이지 버퍼 그룹(114)은 선택된 메모리 셀들의 문턱전압에 따라 변경되는 비트라인들(BL)의 전압 또는 전류를 센싱하여 데이터를 저장할 수 있다. 페이지 버퍼 그룹(114)은 페이지 버퍼 제어 신호(PBSIG)에 응답하여 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수 있다.
컬럼 디코더(115)는 컬럼 어드레스(CADD)에 응답하여 페이지 버퍼 그룹(114)과 입출력 회로(116) 사이에서 데이터를 전송할 수 있다.
입출력 회로(116)는 외부 장치로부터 커맨드(CMD) 및 어드레스(ADD)를 수신받아 로직 회로(120)에 전송할 수 있다. 여기서 외부 장치는 컨트롤러(도 1의 1200)일 수 있다. 입출력 회로(116)는 프로그램 동작 시 외부 장치로부터 수신된 데이터(DATA)를 컬럼 디코더(115)를 통해 페이지 버퍼 그룹(114)으로 전송할 수 있고, 리드 동작 시 컬럼 디코더(115)로부터 수신된 데이터(DATA)를 외부 장치로 출력할 수 있다.
로직 회로(logic circuit; 120)는 커맨드(CMD) 및 어드레스(ADD)에 따라 전압 생성부(112), 로우 디코더(113), 페이지 버퍼 그룹(114), 컬럼 디코더(115) 및 입출력 회로(116)를 제어할 수 있다. 예를 들면, 로직 회로(120)는 커맨드(CMD)에 응답하여 동작 신호(OPS) 및 페이지 버퍼 제어 신호(PBSIG)를 출력할 수 있고, 어드레스(ADD)에 응답하여 로우 어드레스(RADD) 및 컬럼 어드레스(CADD)를 출력할 수 있다. 로직 회로(120)는 커맨드(CMD)에 응답하여 다양한 동작을 실행하기 위한 소프트웨어를 포함할 수 있고, 다양한 동작들에 필요한 신호들을 출력하기 위한 하드웨어를 포함할 수 있다. 본 실시 예에 따르면, 로직 회로(120)는 프로그램 커맨드(program command)에 응답하여 프로그램 동작을 수행할 수 있고, 중단 커맨드(suspend command)에 응답하여 프로그램 동작을 중단할 수 있다. 로직 회로(120)는 종료 커맨드(termination command)에 응답하여 중단된 프로그램 동작을 종료시킬 수 있다.
도 3은 도 2에 도시된 메모리 셀 어레이를 구체적으로 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 셀 어레이(100)는 싱글 플래인(single plane) 또는 멀티 플래인(multi plane) 구조로 구성될 수 있다. 싱글 플래인 구조는 메모리 셀 어레이(100)가 하나의 플래인으로 구성된 구조이고, 멀티 플래인 구조는 메모리 셀 어레이(100) 내에 복수의 플래인들이 포함된 구조이다. 도 3에는 멀티 플래인 구조를 가지는 메모리 셀 어레이(100)가 실시 예로써 도시된다.
메모리 셀 어레이(100)는 제1 내지 제4 플래인들(P1~P4)을 포함할 수 있다. 제1 내지 제4 플래인들(P1~P4)에는 서로 다른 로우 디코더들과 서로 다른 페이지 버퍼 그룹들이 연결될 수 있다. 제1 내지 제4 플래인들(P1~P4) 각각은 복수의 메모리 블록들(BLK1~BLKi; i는 양의 정수)을 포함할 수 있다. 제1 내지 제4 플래인들(P1~P4)에는 서로 다른 물리 어드레스들이 할당될 수 있으며, 복수의 메모리 블록들(BLK1~BLKi)에도 서로 다른 물리 어드레스들이 할당될 수 있다. 제1 내지 제i 메모리 블록들(BLK1~BLKi)은 서로 동일하게 구성될 수 있으며, 이 중에서 제i 메모리 블록(BLKi)을 구체적으로 설명하면 다음과 같다.
도 4는 도 3에 도시된 메모리 블록을 구체적으로 설명하기 위한 도면이다.
도 4를 참조하면, 메모리 블록(BLKi)은 제1 내지 제m 비트라인들(BL1~BLm; m은 양의 정수)과 소스 라인(SL) 사이에 연결된 복수의 스트링들(ST)을 포함할 수 있다. 스트링들(ST) 각각은 소스 라인(SL)과 제1 내지 제m 비트라인들(BL1~BLn) 사이에서 직렬로 연결된 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)를 포함할 수 있다.
도 4에 도시된 메모리 블록(BLKi)은 메모리 블록의 구성을 설명하기 위한 도면이므로, 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)의 개수는 도 4에 도시된 개수로 제한되지 않는다.
서로 다른 스트링들(ST)에 연결된 소스 셀렉트 트랜지스터들(SST)의 게이트들은 소스 셀렉트 라인(SSL)에 연결되고, 제1 내지 제n 메모리 셀들(C1~Cn) 각각의 게이트들은 제1 내지 제n 워드라인들(WL1~WLn)에 연결되고, 드레인 셀렉트 트랜지스터들(DST)의 게이트들은 드레인 셀렉트 라인(DSL)에 연결될 수 있다. 소스 셀렉트 라인(SSL), 제1 내지 제n 워드라인들(WL1~WLn) 및 드레인 셀렉트 라인(DSL)은 로컬 라인들(LL)에 포함될 수 있다.
동일한 워드라인에 연결되고 서로 다른 스트링들(ST)에 포함된 메모리 셀들의 그룹은 하나의 페이지(PG)를 구성할 수 있다. 메모리 셀들은 페이지(PG) 단위로 프로그램되거나 리드될 수 있다. 제1 내지 제m 비트라인들(BL1~BLm)은 페이지 버퍼 그룹(도 2의 114)에 포함된 페이지 버퍼들 각각에 연결될 수 있다.
도 5는 프로그램 방식에 따른 메모리 셀들의 문턱전압을 설명하기 위한 도면이다.
도 5를 참조하면, 프로그램 동작은 싱글 레벨 셀(single level cell; SLC) 또는 멀티 레벨 셀(multi level cell) 방식으로 수행될 수 있다. 싱글 레벨 셀(SLC) 방식은 하나의 메모리 셀에 1 비트의 데이터가 저장되는 방식이고, 멀티 레벨 셀 방식은 하나의 메모리 셀에 2 비트 이상의 데이터가 저장되는 방식이다. 멀티 레벨 셀 방식은 하나의 메모리 셀에 저장되는 비트의 개수에 따라 트리플 레벨 셀(triple level cell; TLC), 쿼드러플 레벨 셀(quadruple level cell) 방식 등으로 구분될 수 있다. 도 5에는 싱글 레벨 셀(SLC) 방식과 트리플 레벨 셀(TLC) 방식의 문턱전압 분포가 예로써 도시된다.
싱글 레벨 셀(SLC) 방식의 프로그램 동작에서, 메모리 셀들은 문턱전압에 따라 소거 상태(ER) 또는 프로그램 상태(P)로 구분될 수 있다. 트리플 레벨 셀(TLC) 방식의 프로그램 동작에서, 메모리 셀들은 문턱전압에 따라 소거 상태(ER)와 일곱 개의 프로그램 상태들(P1~P7)로 구분될 수 있다. 메모리 장치는 프로그램 커맨드의 종류에 따라 싱글 레벨 셀(SLC) 방식 또는 트리플 레벨 셀 방식(TLC) 방식으로 프로그램 동작을 수행할 수 있으며, 리드 커맨드의 종류에 따라 싱글 레벨 셀(SLC) 방식 또는 트리플 레벨 셀 방식(TLC) 방식으로 리드 동작을 수행할 수 있다.
도 6은 ISPP 방식의 프로그램 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 본 실시 예에 따른 프로그램 동작은 프로그램 전압이 단계적으로 높아지는 ISPP(incremental step pulse program) 방식으로 수행될 수 있다. 즉, 싱글 레벨 셀(도 5의 SLC) 방식 또는 트리플 레벨 셀(도 5의 TLC) 방식의 프로그램 동작은 ISPP 방식으로 수행될 수 있다. ISPP 방식의 프로그램 동작에서는 복수의 프로그램 루프들(L1~L6, …)이 수행될 수 있다.
선택된 페이지의 전체 프로그램 동작을 메인(main) 프로그램 동작으로 정의하면, 복수의 프로그램 루프들(L1~L6, …) 각각에서는 프로그램 전압이 선택된 워드라인에 인가되는 서브(sub) 프로그램 동작과, 선택된 메모리 셀들의 프로그램 여부를 판단하기 위한 검증 동작이 수행될 수 있다. 예를 들면, 제1 프로그램 루프(L1)의 서브 프로그램 동작에서는 선택된 워드라인에 제1 프로그램 전압(1Vpagm)이 인가될 수 있고, 검증 동작에서는 선택된 워드라인에 검증 전압(VF)이 인가될 수 있다. 제1 프로그램 전압(1Vpgm)은 메인 프로그램 동작에서 사용되는 프로그램 전압들 중에서 가장 낮은 전압일 수 있다. 검증 전압(VF)은 목표전압에 따라 다른 레벨로 설정될 수 있다. 검증 동작에서 메모리 셀의 문턱전압이 검증 전압(VF)보다 낮으면 페이지 버퍼에는 1 데이터가 저장될 수 있고, 문턱전압이 검증 전압(VF) 이상이면 페이지 버퍼에는 0 데이터가 저장될 수 있다. 리드 동작도 검증 동작과 동일한 방식으로 수행될 수 있다.
선택된 메모리 셀들의 문턱전압이 목표 검증전압 이상으로 모두 높아지면 검증 동작은 패스(pass)되고, 메인 프로그램 동작은 종료될 수 있다. 만약, 프로그램 루프들(L1~L6, …)의 횟수가 최대 횟수에 도달할 때까지 검증 동작이 페일(fail)되면, 선택된 메모리 블록은 배드 블록으로 처리될 수 있다.
도 7은 본 발명의 실시 예에 따른 컨트롤러를 구체적으로 설명하기 위한 도면이다.
도 7을 참조하면, 컨트롤러(1200)는 테스트 관리부(test manager; 210), 버퍼(buffer; 220) 및 메모리 인터페이스(memory interface; 230)를 포함할 수 있다.
테스트 관리부(210)는 테스트 모드에서 메모리 장치의 테스트 동작을 컨트롤하기 위한 커맨드를 생성하고, 테스트 동작 시 사용되는 전압들을 연산하고, 테스트 동작의 결과에 따라 메모리 블록들의 상태 정보를 생성하도록 구성될 수 있다. 테스트 관리부(210)는 커맨드 생성부(command generator; 211), 전압 연산부(voltage operator; 212) 및 상태 판단부(status detector; 213)를 포함할 수 있다.
커맨드 생성부(211)는 테스트 동작을 위한 프로그램 커맨드, 중단 커맨드 및 리드 커맨드를 생성하고, 생성된 커맨드를 출력하도록 구성될 수 있다. 예를 들면, 테스트 동작모드에서 커맨드 생성부(211)는 싱글 레벨 셀(SLC) 방식의 프로그램 커맨드를 생성할 수 있고, 프로그램 동작을 중지시키기 위한 중단 커맨드를 생성할 수 있으며, 트리플 레벨 셀(TLC) 방식의 리드 커맨드를 생성할 수 있다.
전압 연산부(212)는 테스트 동작에서 사용된 리드 전압들을 연산하여 전압차를 출력하도록 구성될 수 있다. 예를 들면, 테스트 동작에서 제1 및 제2 리드 전압들이 사용되면, 전압 연산부(212)는 제1 및 제2 리드 전압들에 대한 뺄셈을 연산하고, 연산된 값의 절대값을 전압차로써 출력할 수 있다. 제2 리드 전압이 제1 리드 전압보다 높으면, 전압 연산부(212)는 제2 리드 전압에서 제1 리드 전압을 뺀 값을 전압차로써 출력할 수 있다. 또는 전압 연산부(212)는 제1 리드 전압에서 제2 리드 전압을 뺀 값의 절대값을 전압차로써 출력할 수도 있다.
상태 판단부(213)는 테스트 동작의 결과에 따라 상태 정보를 생성하고 출력하도록 구성될 수 있다. 예를 들면, 상태 판단부(213)는 테스트 동작 시 메모리 블록으로부터 리드된 데이터의 카운트 값에 따라 메모리 블록의 상태를 판단하고, 상태 정보를 생성하도록 구성될 수 있다. 또는, 상태 판단부(213)는 테스트 동작 시 전압 연산부(212)에서 출력된 전압차와 기준값을 비교하고, 비교 결과에 따라 메모리 블록의 상태를 판단하고, 상태 정보를 생성하도록 구성될 수 있다.
버퍼(220)는 컨트롤러(1200)에서 사용되는 다양한 정보 또는 값들을 저장하도록 구성될 수 있다. 예를 들면, 버퍼(220)는 테스트 동작에 사용되는 리드 전압들에 대한 다양한 전압값이 저장되는 전압 테이블(voltage table; 221)을 포함할 수 있고, 메모리 블록들 각각에 대한 상태 정보가 저장되는 상태 테이블(status table; 222)을 포함할 수 있다.
메모리 인터페이스(230)는 컨트롤러(1200)와 메모리 장치 사이에서 커맨드, 어드레스 및 데이터를 전송할 수 있으며, 메모리 장치에서 출력된 데이터의 0 또는 1의 개수, 또는 0의 개수 및 1의 개수를 카운트하도록 구성될 수 있다. 예를 들면, 메모리 인터페이스(230)는 커맨드 큐(command queue; 231) 및 카운터(counter; 232)를 포함할 수 있다.
커맨드 큐(231)는 테스트 관리부(210)로부터 출력된 커맨드들을 설정된 순서 및 시간에 따라 메모리 장치에게 순차적으로 출력하도록 구성될 수 있다. 예를 들면, 테스트 동작 시, 커맨드 큐(231)는 프로그램 커맨드, 중단(suspend) 커맨드, 재개(resume) 커맨드 및 복수의 리드 커맨드들을 큐잉(queueing)하고, 정해진 출력 순서에 따라 커맨드들을 순차적으로 출력하도록 구성될 수 있다.
카운터(232)는 메모리 장치에서 출력된 데이터의 0 또는 1의 개수, 또는 0의 개수 및 1의 개수를 카운트하도록 구성될 수 있다. 예를 들면, 카운터(232)는 수신된 데이터 중에서 0의 개수만 카운트하여 카운트 값을 출력하거나, 1의 개수만 카운트하여 카운트 값을 출력하거나, 0의 개수를 카운트한 카운트 값과 1의 개수를 카운트한 카운트 값을 각각 출력하도록 구성될 수 있다.
도 8은 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 8을 참조하면, 테스트 모드가 시작되면, 컨트롤러는 프로그램 커맨드(CMD_P)를 생성하고, 프로그램 커맨드(CMD_P)를 메모리 장치에게 전송할 수 있다(S81). 이때, 프로그램 커맨드(CMD_P)는 싱글 레벨 셀(SLC) 방식의 프로그램 동작을 수행하기 위한 커맨드일 수 있다. 컨트롤러는 프로그램 커맨드(CMD_P)와 함께 테스트 동작을 수행할 메모리 블록의 어드레스와 테스트 데이터를 메모리 장치에게 전송할 수 있다. 메모리 장치는 프로그램 커맨드(CMD_P)에 응답하여 프로그램 동작을 수행할 수 있다.
테스트 데이터는 메모리 셀들의 문턱전압을 높일 수 있는 데이터로써, 0 으로만 이루어진 데이터일 수 있다. 0 데이터를 프로그램하도록 설정된 메모리 장치에서 테스트 데이터는 0으로만 이루어질 수 있으나, 1 데이터를 프로그램하도록 설정된 메모리 장치에서는 테스트 데이터는 1로만 이루어질 수 있다. 예를 들면, 0 데이터를 프로그램하도록 설정된 메모리 장치에서, 메모리 셀들은 1 데이터에 의해 소거 상태를 유지할 수 있고, 0 데이터에 의해 프로그램될 수 있다. 이와 반대로, 1 데이터를 프로그램하도록 설정된 메모리 장치에서, 메모리 셀들은 0 데이터에 의해 소거 상태를 유지할 수 있고, 1 데이터에 의해 프로그램될 수 있다. 이하 설명되는 실시 예에서는 0 데이터에 의해 메모리 셀들의 문턱전압이 높아지도록 설정된 메모리 장치를 예를 들어 설명한다. 메모리 장치는 0으로만 이루어진 테스트 데이터에 의해 프로그램 동작을 수행할 수 있다. 예를 들면, 메모리 장치는 페이지 버퍼들에 0 데이터를 저장한 후, 페이지 버퍼들에 연결된 비트라인들에 0 데이터에 대응되는 프로그램 허용 전압(예를 들면 0V)을 인가할 수 있다. 이어서, 메모리 장치는 선택된 워드라인에 프로그램 전압을 인가하고, 비선택된 워드라인들에는 패스 전압을 인가하여, 선택된 메모리 블록의 선택된 페이지에 포함된 모든 메모리 셀들에 테스트 데이터를 프로그램할 수 있다.
컨트롤러는 프로그램 커맨드(CMD_P)를 출력한 후 설정된 시간에 따라 중단 커맨드(CMD_S)를 메모리 장치에게 전송할 수 있다(S82). 중단 커맨드는 메모리 장치에서 실행되고 있는 동작을 중단시키기 위한 커맨드이다. 메모리 장치가 프로그램 커맨드(CMD_P)에 응답하여 프로그램 동작을 수행하고 있으므로, 메모리 장치는 중단 커맨드(CMD_S)에 응답하여 프로그램 동작을 중단할 수 있다. 예를 들면, 컨트롤러에는 테스트 모드에서 중단 커맨드(CMD_S)가 출력되는 시간이 설정될 수 있으며, 컨트롤러는 프로그램 커맨드(CMD_P)가 출력된 후(S81) 설정된 시간이 지나면 중단 커맨드(CMD_S)를 출력할 수 있다. 중단 커맨드(CMD_S)를 출력하기 위한 설정된 시간은 프로그램 전압이 두 번 이상 인가될 수 있는 시간으로 설정될 수도 있으나, 테스트 동작에 걸리는 시간을 단축하기 위하여 본 실시 예에서는 프로그램 전압이 한 번 인가되는 시간으로 설정될 수 있다. 즉, 설정된 시간에는 메모리 장치가 프로그램 커맨드(CMD_P)에 응답하여 프로그램 동작을 준비하는 시간과, 프로그램 동작이 시작되어 프로그램 전압이 선택된 워드라인에 한 번 인가되는 시간이 포함될 수 있다.
메모리 장치에서 프로그램 동작이 수행되는 도중에 중단되었으므로, 메모리 장치에서는 프로그램 동작이 미완료된 상태가 된다. 따라서, 컨트롤러는 프로그램 동작을 종료시키기 위한 종료 커맨드(CMD_T)를 메모리 장치에게 전송할 수 있다(S83).
이어서, 컨트롤러는 프로그램된 메모리 셀들의 상태를 판단하기 위하여 제1 리드 커맨드(CMD_R1)를 메모리 장치에게 전송할 수 있다(S84). 예를 들면, 제1 리드 커맨드(CMD_R1)는 제1 리드 전압(V1)을 사용하여 메모리 셀들을 리드하기 위한 커맨드일 수 있으며, 트리플 레벨 셀(TLC) 방식으로 설정될 수 있다. 예를 들면, 트리플 레벨 셀(TLC) 방식에서는 문턱전압 분포의 개수가 싱글 레벨 셀(SLC) 방식보다 많기 때문에, 리드 동작에서 사용될 수 있는 리드 전압의 개수도 문턱전압 분포의 개수만큼 많다. 따라서, 제1 리드 커맨드(CMD_R1)가 트리플 레벨 셀(TLC) 방식으로 설정되면, 테스트 동작에서 다양한 리드 전압들이 사용될 수 있다. 제1 리드 전압(V1)은 트리플 레벨 셀(TLC) 방식에서 가장 낮은 리드 전압일 수 있으며, 테스트 동작에서는 상대적으로 낮은 문턱전압을 가지는 메모리 셀들을 검출하기 위하여 사용될 수 있다. 즉, 제1 리드 전압(V1)은 프로그램 동작이 정상 속도보다 느린 슬로우 셀(slow cell)을 검출하기 위한 테스트 전압일 수 있다.
메모리 장치는 제1 리드 커맨드(CMD_R1)에 응답하여 선택된 메모리 블록의 선택된 페이지로부터 리드된 데이터를 컨트롤러에게 출력할 수 있다.
컨트롤러는 메모리 장치로부터 출력된 데이터에 따라, 선택된 메모리 블록에 슬로우 셀(slow cell)이 포함되어 있는지를 판단할 수 있다(S85). S81 단계에서 테스트 데이터가 0으로 설정되었으므로, 제1 리드 전압(V1)보다 낮은 문턱전압을 가지는 메모리 셀들의 데이터는 1이 되고, 제1 리드 전압(V1) 이상의 문턱전압을 가지는 메모리 셀들의 데이터는 0이 될 수 있다.
따라서, S85 단계에서, 컨트롤러는 수신받은 데이터에 1이 포함되지 않거나 데이터가 1인 메모리 셀들의 개수가 슬로우(slow) 기준 개수보다 적으면(NO), 선택된 메모리 블록의 슬로우 상태 정보를 정상 상태로 저장할 수 있다(S86). 슬로우 기준 개수는 메모리 블록에 슬로우 셀들이 포함되더라도 슬로우 셀들의 개수가 적은 메모리 블록이 배드 블록으로 처리되는 것을 방지하기 위한 기준 값으로써, 메모리 장치에 따라 다른 값으로 설정될 수 있다.
S85 단계에서 수신된 데이터가 모두 1 이거나 데이터가 1인 메모리 셀들의 개수가 슬로우 기준 개수 이상이거나(YES), S86 단계에서 상태 정보가 저장되면, 컨트롤러는 제2 리드 커맨드(CMD_R2)를 메모리 장치에게 전송할 수 있다(S87).
제2 리드 커맨드(CMD_R2)는 제1 리드 전압(V1)보다 높은 제2 리드 전압(V2)을 사용하여 메모리 셀들을 리드하기 위한 커맨드일 수 있으며, 트리플 레벨 셀(TLC) 방식으로 설정될 수 있다. 예를 들면, 제2 리드 전압(V2)은 트리플 레벨 셀(TLC) 방식에서 제2 프로그램 상태인 메모리 셀들을 리드하기 위한 전압일 수 있으며, 테스트 동작에서는 상대적으로 높은 문턱전압을 가지는 메모리 셀들을 검출하기 위하여 사용될 수 있다. 즉, 제2 리드 전압(V2)은 프로그램 동작이 정상 속도보다 빠른 패스트 셀(fast cell)을 검출하기 위한 테스트 전압일 수 있다.
메모리 장치는 제2 리드 커맨드(CMD_R2)에 응답하여 선택된 메모리 블록의 선택된 페이지로부터 리드된 데이터를 컨트롤러에게 출력할 수 있다.
컨트롤러는 메모리 장치로부터 출력된 데이터에 따라, 선택된 메모리 블록에 패스트 셀(fast cell)이 포함되어 있는지를 판단할 수 있다(S88). S81 단계에서 테스트 데이터가 0으로 설정되었으므로, 제2 리드 전압(V2)보다 낮은 문턱전압을 가지는 메모리 셀들의 데이터는 1이 되고, 제2 리드 전압(V2) 이상의 문턱전압을 가지는 메모리 셀들의 데이터는 0이 될 수 있다.
따라서, S88 단계에서, 컨트롤러는 수신받은 데이터에 0이 포함되지 않거나 데이터가 0인 메모리 셀들의 개수가 패스트(fast) 기준 개수보다 적으면(NO), 선택된 메모리 블록의 패스트 상태 정보를 정상 상태로 저장할 수 있다(S89). 패스트 기준 개수는 메모리 블록에 패스트 셀들이 포함되더라도 패스트 셀들의 개수가 적은 메모리 블록이 배드 블록으로 처리되는 것을 방지하기 위한 기준 값으로써, 메모리 장치에 따라 다른 값으로 설정될 수 있다. 선택된 메모리 블록의 패스트 상태가 정상으로 판단되면, 컨트롤러는 선택된 메모리 블록의 테스트 동작을 종료할 수 있다.
S88 단계에서 데이터가 모두 0 이거나 데이터가 0인 메모리 셀들의 개수가 패스트(fast) 기준 개수 이상이면(YES), 컨트롤러는 선택된 메모리 블록을 배드 블록으로 처리할 수 있다(S90).
도 9는 제1 실시 예에 따른 커맨드 전송 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 선택된 메모리 블록의 테스트 동작 시 컨트롤러에서 출력되는 커맨드들이 도시된다. 예를 들면, 컨트롤러에 포함된 커맨드 큐(231)는 테스트 관리부(도 7의 210)에서 출력된 커맨드들을 임시로 저장하고 커맨드들의 출력 순서와 출력 시간을 결정하여 커맨드들을 순차적으로 출력할 수 있다. 예를 들면, 커맨드 큐(231)에 프로그램 커맨드(CMD_P), 중단 커맨드(CMD_S), 종료 커맨드(CMD_T), 제1 리드 커맨드(CMD_R1) 및 제2 리드 커맨드(CMD_R2)가 입력되면, 커맨드 큐(231)는 프로그램 커맨드(CMD_P), 중단 커맨드(CMD_S), 종료 커맨드(CMD_T), 제1 리드 커맨드(CMD_R1) 및 제2 리드 커맨드(CMD_R2) 순서대로 커맨드들을 큐잉(queueing)할 수 있다. 본 실시 예의 테스트 동작에서 사용되는 프로그램 커맨드(CMD_P)는 메모리 장치에서 사용되는 노말 프로그램 커맨드이므로, 메모리 장치는 프로그램 커맨드에 응답하여 노말 프로그램 동작을 수행할 수 있다. 예를 들면, 메모리 장치는 ISPP 방식으로 프로그램 동작을 수행할 수 있다. ISPP 방식의 프로그램 동작에서는 복수의 프로그램 루프들이 수행되기 때문에, 테스트 동작에서는 제1 프로그램 루프 또는 제1 프로그램 루프에 포함된 일부 동작만 수행되도록 중단 커맨드(CMD_T)가 사용될 수 있다. 따라서, 본 실시 예에서는 프로그램 커맨드(CMD_P)가 출력된 후 중단 커맨드(CMD_T)가 출력되기까지의 지연 시간(T_del)에 따라 테스트 동작에 걸리는 시간이 결정될 수 있다. 예를 들면, 지연 시간(T_del)은 프로그램 커맨드(CMD_P)가 출력된 후, 메모리 장치가 프로그램 동작을 위해 전압들을 셋업하는 시간과, 선택된 워드라인에 프로그램 전압이 설정된 횟수만큼 인가되는 시간을 포함할 수 있다. 따라서, 커맨드 큐(231)는 프로그램 커맨드(CMD_P)를 출력한 후 지연 시간(T_del)이 지나는 시점에 중단 커맨드(CMD_T)를 출력할 수 있다. 설정된 횟수는 테스트 동작에 걸리는 시간을 단축하기 위하여 1회로 설정될 수 있다.
이어서, 커맨드 큐(231)는 메모리 장치에서 프로그램 동작을 종료시키기 위한 종료 커맨드(CMD_T)를 출력하고, 메모리 셀들의 문턱전압을 리드하기 위한 제1 리드 커맨드(CMD_R1)를 출력할 수 있다. 컨트롤러에 제1 리드 커맨드(CMD_R1)에 따라 리드된 데이터가 수신되면, 커맨드 큐(231)는 제2 리드 커맨드(CMD_R2)를 출력할 수 있다.
도 10은 제1 실시 예에 따른 중단 커맨드의 출력 시간을 설명하기 위한 도면이다.
도 10을 참조하면, 중단 커맨드(CMD_T)는 프로그램 커맨드(CMD_P)가 출력된 후 지연 시간(T_del)이 되는 시점에 출력될 수 있다. 지연 시간(T_del)은 선택된 워드라인에 제1 프로그램 전압(1Vpgm)이 한 번 인가될 수 있도록 설정될 수 있다. 예를 들면, 선택된 워드라인에 제1 프로그램 전압(1Vpgm)이 인가되는 동안 중단 커맨드(CMD_T)가 출력될 수 있도록 제1 시간(T1)으로 설정될 수 있다. 선택된 워드라인에 제1 프로그램 전압(1Vpgm)이 인가되는 동안 중단 커맨드(CMD_T)가 입력되면, 메모리 장치는 프로그램 동작에서 설정된 시간 동안 제1 프로그램 전압(1Vpgm)을 선택된 워드라인에 인가한 후 프로그램 동작을 중단할 수 있다. 즉, 메모리 장치는 중단 커맨드(CMD_T)가 수신되더라도, 현재 수행중인 프로그램 루프의 프로그램 전압 인가 동작을 완료한 후에 프로그램 동작을 중단할 수 있다. 따라서, 제1 프로그램 전압(1Vpgm)이 선택된 워드라인에 설정된 시간 동안 인가된 후 프로그램 동작을 중단하기 위해서, 중단 커맨드(CMD_T)는 제1 프로그램 전압(1Vpgm)이 선택된 워드라인에 인가되는 제1 시간(T1)에 출력되거나, 프로그램 전압이 인가되는 동작과 검증 동작 사이의 제2 시간(T2)에 출력될 수 있다. 즉, 검증 동작이 수행되기 이전인 제1 또는 제2 시간(T1 또는 T2)에 중단 커맨드(CMD_T)가 출력되면, 선택된 워드라인에 제1 프로그램 전압(1Vpgm)이 인가되는 동작이 수행된 후 프로그램 동작은 중단될 수 있다.
도 11은 제1 실시 예에 따른 전압 테이블을 설명하기 위한 도면이다.
도 11을 참조하면, 제1 실시 예에서는 제1 리드 커맨드에 응답하여 제1 리드 전압(V1)을 사용한 리드 동작이 수행될 수 있고, 제2 리드 커맨드에 응답하여 제2 리드 전압(V2)을 사용한 리드 동작이 수행될 수 있다. 전압 테이블(221)에는 제1 리드 전압(V1)에 대한 제1 전압 코드(Vcd1)가 제1 인덱스(IND_t1)에 대응되어 저장될 수 있고, 제2 리드 전압(V2)에 대한 제2 전압 코드(Vcd2)가 제2 인덱스(IND_t2)에 대응되어 저장될 수 있다.
예를 들면, 커맨드 생성부(도 7의 211)가 제1 리드 커맨드를 출력할 때 제1 리드 커맨드에 대응되는 제1 인덱스(IND_t1)를 버퍼(도 7의 220)에 전송할 수 있고, 버퍼(220)는 전압 테이블(221)에서 제1 인덱스(IND_t1)에 대응되는 제1 전압 코드(Vcd1)를 출력할 수 있다. 제1 리드 동작이 완료된 후, 커맨드 생성부(211)가 제2 리드 커맨드를 출력할 때 제2 리드 커맨드에 대응되는 제2 인덱스(IND_t2)를 버퍼(220)에 전송할 수 있고, 버퍼(220)는 전압 테이블(221)에서 제2 인덱스(IND_t2)에 대응되는 제2 전압 코드(Vcd2)를 출력할 수 있다.
제2 리드 전압(V2)은 제1 리드 전압(V1)보다 높은 전압일 수 있다. 재1 리드 전압(V1)은 트리플 레벨 셀 방식의 리드 동작에서 사용될 수 있는 가장 낮은 리드 전압일 수 있으며, 제2 리드 전압(V2)은 트리플 레벨 셀 방식의 리드 동작에서 사용될 수 있는 제1 리드 전압(V1) 다음으로 낮은 리드 전압일 수 있다.
도 12는 제1 실시 예에 따른 테스트 동작에서 메모리 셀들의 상태를 체크하는 방법을 설명하기 위한 도면이다.
도 12를 참조하면, 제1 프로그램 전압에 의해 메모리 셀들의 문턱전압이 높아질 수 있다. 이때, 제1 프로그램 전압에 의해 높아질 수 있는 정상(normal) 메모리 셀들의 문턱전압 분포가 제1 리드 전압(V1)과 제2 리드 전압(V2) 사이라고 가정한다.
상태 판단부(도 7의 213)는 선택된 메모리 블록에 포함된 메모리 셀들의 문턱전압이 제1 내지 제2 리드 전압들(V1-V2) 사이에 있으면 선택된 메모리 블록을 정상 상태(STn)로 판단할 수 있고, 문턱전압이 제1 리드 전압(V1)보다 낮으면 선택된 메모리 블록을 슬로우 상태(STs)로 판단할 수 있으며, 문턱전압이 제2 리드 전압(V2)보다 높으면 선택된 메모리 블록을 패스트 상태(STf)로 판단할 수 있다.
상태 판단부(213)는 제1 및 제2 리드 동작들 각각에서 출력된 데이터에 따라, 선택된 메모리 블록의 상태를 정상 상태(STn), 슬로우 상태(STs) 또는 패스트 상태(STf)로 구분할 수 있고, 패스트 상태(STf)로 판단된 메모리 블록을 배드 블록으로 처리할 수 있다.
제1 리드 동작에서, 제1 리드 전압(V1)보다 문턱전압이 높은 메모리 셀들의 데이터는 0이 되고, 낮은 메모리 셀들의 데이터는 1이 될 수 있다. 컨트롤러에 포함된 카운터(도 7의 232)는 메모리 장치로부터 수신된 데이터에 포함된 0과 1의 개수를 카운트하고, 카운트 결과로 출력되는 카운트 값을 상태 판단부(213)에게 전송할 수 있다. 상태 판단부(213)는 카운트 값에 따라 선택된 메모리 블록의 상태를 정상 상태(STn) 또는 슬로우 상태(STs)로 판단할 수 있다.
제2 리드 동작에서, 제2 리드 전압(V2)보다 문턱전압이 높은 메모리 셀들의 데이터는 0이 되고, 낮은 메모리 셀들의 데이터는 1이 될 수 있다. 컨트롤러에 포함된 카운터(도 7의 232)는 메모리 장치로부터 수신된 데이터에 포함된 0과 1의 개수를 카운트하고, 카운트 결과로 출력되는 카운트 값을 상태 판단부(213)에게 전송할 수 있다. 상태 판단부(213)는 카운트 값에 따라 선택된 메모리 블록의 상태를 정상 상태(STn) 또는 패스트 상태(STs)로 판단할 수 있으며, 패스트 상태(STs)로 판단된 메모리 블록을 배드 블록으로 처리할 수 있다.
메모리 장치로부터 수신된 데이터에 따라 메모리 블록의 상태를 판단하는 과정을 보다 구체적으로 설명하면 다음과 같다.
도 13은 제1 실시 예에 따른 메모리 블록의 상태를 판단하는 방법을 설명하기 위한 도면이다.
도 13을 참조하면, 메모리 장치가 리드된 데이터(DATA)를 출력하면, 카운터(232)는 데이터(DATA)에 포함된 0 데이터의 개수와 1 데이터의 개수를 각각 카운트 할 수 있다. 예를 들면, 카운터(232)는 0 데이터를 카운트하여 제1 카운트 값(VAL_0)을 출력할 수 있고, 1 데이터를 카운트하여 제2 카운트 값(VAL_1)을 출력할 수 있다.
상태 판단부(213)는 제1 및 제2 카운트 값들(VAL_0, VAL_1)에 따라 메모리 블록의 상태를 판단하여 상태 정보(INFO_ST)를 생성할 수 있다.
제1 및 제2 카운트 값들(VAL_0, VAL_1)이 제1 리드 동작에서 출력된 데이터에 대한 값들인 경우, 제2 카운트 값(VAL_1)의 개수가 슬로우 기준 개수보다 많으면 상태 판단부(213)는 선택된 메모리 블록의 상태가 슬로우 상태임을 나타내는 상태 정보(INFO_ST)를 생성할 수 있다. 제2 카운트 값(VAL_1)의 개수가 슬로우 기준 개수보다 적으면, 상태 판단부(213)는 선택된 메모리 블록의 슬로우 상태가 정상 상태임을 나타내는 상태 정보(INFO_ST)를 생성할 수 있다.
제1 및 제2 카운트 값들(VAL_0, VAL_1)이 제2 리드 동작에서 출력된 데이터에 대한 값들인 경우, 제1 카운트 값(VAL_0)의 개수가 패스트 기준 개수보다 많으면 상태 판단부(213)는 선택된 메모리 블록이 배드 블록임을 나타내는 상태 정보(INFO_ST)를 생성할 수 있다. 제1 카운트 값(VAL_0)의 개수가 패스트 기준 개수보다 적으면, 상태 판단부(213)는 선택된 메모리 블록의 패스트 상태가 정상 상태임을 나타내는 상태 정보(INFO_ST)를 생성할 수 있다. 상태 판단부(213)는 생성된 상태 정보(INFO_ST)를 상태 테이블(222)에 저장할 수 있다.
상태 테이블(222)은 제1 내지 제i 메모리 블록들(BLK1~BLKi) 각각에 대응되는 상태 정보(INFO_ST)를 저장할 수 있다. 도 13에 도시된 상태 테이블(222)의 예를 참조하면, 제1 메모리 블록(BLK1)의 상태 정보(INFO_ST)는 슬로우 상태(slow_st)를 나타내며, 이는 제1 메모리 블록(BLK1)이 배드 블록은 아니지만 슬로우 셀들을 포함한다는 것을 의미한다. 제2 메모리 블록(BLK2)의 상태 정보(INFO_ST)는 정상 상태(normal)를 나타내고, 제3 메모리 블록(BLK3)의 상태 정보(INFO_ST)는 배드 블록(BAD)을 나타낸다.
컨트롤러는 상태 테이블(222)에 저장된 메모리 블록들의 상태 정보를 참조하여 노말 동작들을 수행할 수 있다. 예를 들면, 컨트롤러는 정상 상태인 메모리 블록들에 대해서는 프로그램, 리드 또는 소거 동작 시, 컨트롤러에 설정된 기본 값들을 사용하여 프로그램, 리드 또는 소거 동작을 셋업할 수 있다. 슬로우 상태인 메모리 블록들에 대해서는, 컨트롤러는 프로그램 및 소거 동작들이 수행되는 횟수가 정상 상태인 메모리 블록들보다 작도록 어드레스를 관리할 수 있다.
도 14는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
테스트 모드가 시작되면, 컨트롤러는 프로그램 커맨드(CMD_P)를 생성하고, 프로그램 커맨드(CMD_P)를 메모리 장치에게 전송할 수 있다(S141). 이때, 프로그램 커맨드(CMD_P)는 싱글 레벨 셀(SLC) 방식의 프로그램 동작을 수행하기 위한 커맨드일 수 있다. 커맨드(CMD_P)는 프로그램 커맨드(CMD_P)와 함께 테스트 동작을 수행할 메모리 블록의 어드레스와 테스트 데이터를 메모리 장치에게 전송할 수 있다. 메모리 장치는 프로그램 커맨드(CMD_P)에 응답하여 프로그램 동작을 수행할 수 있다.
테스트 데이터는 메모리 셀들의 문턱전압을 높일 수 있는 데이터로써, 0 으로만 이루어진 데이터일 수 있다. 0 데이터를 프로그램하도록 설정된 메모리 장치에서 테스트 데이터는 0으로만 이루어질 수 있으나, 1 데이터를 프로그램하도록 설정된 메모리 장치에서는 테스트 데이터는 1로만 이루어질 수 있다. 예를 들면, 0 데이터를 프로그램하도록 설정된 메모리 장치에서, 메모리 셀들은 1 데이터에 의해 소거 상태를 유지할 수 있고, 0 데이터에 의해 프로그램될 수 있다. 이와 반대로, 1 데이터를 프로그램하도록 설정된 메모리 장치에서, 메모리 셀들은 0 데이터에 의해 소거 상태를 유지할 수 있고, 1 데이터에 의해 프로그램될 수 있다. 이하 설명되는 실시 예에서는 0 데이터에 의해 메모리 셀들의 문턱전압이 높아지도록 설정된 메모리 장치를 예를 들어 설명한다. 메모리 장치는 0으로만 이루어진 테스트 데이터에 의해 프로그램 동작을 수행할 수 있다. 예를 들면, 메모리 장치는 페이지 버퍼들에 0 데이터를 저장한 후, 페이지 버퍼들에 연결된 비트라인들에 0 데이터에 대응되는 프로그램 허용 전압(예를 들면 0V)을 인가할 수 있다. 이어서, 메모리 장치는 선택된 워드라인에 프로그램 전압을 인가하고, 비선택된 워드라인들에는 패스 전압을 인가하여, 선택된 메모리 블록의 선택된 페이지에 포함된 모든 메모리 셀들에 테스트 데이터를 프로그램할 수 있다.
컨트롤러는 프로그램 커맨드(CMD_P)를 출력한 후 설정된 시간에 따라 중단 커맨드(CMD_S)를 메모리 장치에게 전송할 수 있다(S142). 중단 커맨드는 메모리 장치에서 실행되고 있는 동작을 중단시키기 위한 커맨드이다. 메모리 장치가 프로그램 커맨드(CMD_P)에 응답하여 프로그램 동작을 수행하고 있으므로, 메모리 장치는 중단 커맨드(CMD_S)에 응답하여 프로그램 동작을 중단할 수 있다. 예를 들면, 컨트롤러에는 테스트 모드에서 중단 커맨드(CMD_S)가 출력되는 시간이 설정될 수 있으며, 컨트롤러는 프로그램 커맨드(CMD_P)가 출력된 후(S141) 설정된 시간이 지나면 중단 커맨드(CMD_S)를 출력할 수 있다. 중단 커맨드(CMD_S)를 출력하기 위한 설정된 시간은 프로그램 전압이 두 번 이상 인가될 수 있는 시간으로 설정될 수도 있으나, 테스트 동작에 걸리는 시간을 단축하기 위하여 본 실시 예에서는 프로그램 전압이 한 번 인가되는 시간으로 설정될 수 있다. 즉, 설정된 시간에는 메모리 장치가 프로그램 커맨드(CMD_P)에 응답하여 프로그램 동작을 준비하는 시간과, 프로그램 동작이 시작되어 프로그램 전압이 선택된 워드라인에 한 번 인가되는 시간이 포함될 수 있다.
중단 커맨드(CMD_S)에 의해 프로그램 동작이 중단되면, 메모리 장치에서는 프로그램 동작이 미완료된 상태가 된다. 따라서, 컨트롤러는 프로그램 동작을 종료시키기 위한 종료 커맨드(CMD_T)를 메모리 장치에게 전송할 수 있다(S143).
이어서, 컨트롤러는 프로그램된 메모리 셀들의 상태를 판단하기 위하여 제1 리드 커맨드(CMD_R1)를 메모리 장치에게 전송할 수 있다(S144). 예를 들면, 제1 리드 커맨드(CMD_R1)는 제1 리드 전압(V1)을 사용하여 메모리 셀들을 리드하기 위한 커맨드일 수 있으며, 트리플 레벨 셀(TLC) 방식으로 설정될 수 있다. 예를 들면, 트리플 레벨 셀(TLC) 방식에서는 문턱전압 분포의 개수가 싱글 레벨 셀(SLC) 방식보다 많기 때문에, 리드 동작에서 사용될 수 있는 리드 전압의 개수도 문턱전압 분포의 개수만큼 많다. 따라서, 제1 리드 커맨드(CMD_R1)가 트리플 레벨 셀(TLC) 방식으로 설정되면, 테스트 동작에서 다양한 리드 전압들이 사용될 수 있다. 제1 리드 전압(V1)은 트리플 레벨 셀(TLC) 방식에서 가장 낮은 리드 전압일 수 있으며, 테스트 동작에서는 상대적으로 낮은 문턱전압을 가지는 메모리 셀들을 검출하기 위하여 사용될 수 있다. 즉, 제1 리드 전압(V1)은 프로그램 동작이 정상 속도보다 느린 슬로우 셀(slow cell)을 검출하기 위한 테스트 전압일 수 있다.
메모리 장치는 제1 리드 커맨드(CMD_R1)에 응답하여 선택된 메모리 블록의 선택된 페이지로부터 리드된 데이터를 컨트롤러에게 출력할 수 있다.
컨트롤러는 메모리 장치로부터 출력된 데이터에 따라, 선택된 메모리 블록에 슬로우 셀(slow cell)이 포함되어 있는지를 판단할 수 있다(S145). S141 단계에서 메모리 장치에 전송되는 테스트 데이터가 0이므로, 제1 리드 전압(V1)보다 낮은 문턱전압을 가지는 메모리 셀들의 데이터는 1이 되고, 제1 리드 전압(V1) 이상의 문턱전압을 가지는 메모리 셀들의 데이터는 0이 될 수 있다.
따라서, S145 단계에서, 컨트롤러는 수신받은 데이터에 1이 포함되지 않거나 데이터가 1인 메모리 셀들의 개수가 슬로우(slow) 기준 개수보다 적으면(NO), 선택된 메모리 블록의 슬로우 상태 정보를 정상 상태로 저장할 수 있다(S146). 슬로우 기준 개수는 메모리 블록에 슬로우 셀들이 포함되더라도 슬로우 셀들의 개수가 적은 메모리 블록이 배드 블록으로 처리되는 것을 방지하기 위한 기준 값으로써, 메모리 장치에 따라 다른 값으로 설정될 수 있다.
S145 단계에서 수신된 데이터가 모두 1 이거나 데이터가 1인 메모리 셀들의 개수가 슬로우 기준 개수 이상이면(YES), 컨트롤러는 제1 서브 리드 전압(V1sub)을 찾기 위한 제1 서브 리드 동작을 수행할 수 있다. 예를 들면, 제1 서브 리드 동작은 복수의 서브 리드 전압들을 각각 사용하여 메모리 셀들을 리드하는 복수의 리드 동작을 포함할 수 있다. 제1 서브 리드 동작은 슬로우 셀들의 개수가 슬로우 기준 개수보다 적어지기 시작하는 리드 전압을 찾기 위하여 수행될 수 있다. 이를 위해, 제1 서브 리드 동작에서는 제1 리드 전압(V1)보다 단계적으로 낮아지는 서브 리드 전압들을 사용하는 복수의 리드 동작들이 순차적으로 수행될 수 있다. S146 단계에서 슬로우 셀들의 개수가 슬로우 기준 개수보다 적은 리드 전압이 검출되거나, S146 단계에서 상태 정보가 저장되면, 컨트롤러는 제2 리드 커맨드(CMD_R2)를 메모리 장치에게 전송할 수 있다(S148).
제2 리드 커맨드(CMD_R2)는 제1 리드 전압(V1)보다 높은 제2 리드 전압(V2)을 사용하여 메모리 셀들을 리드하기 위한 커맨드일 수 있으며, 트리플 레벨 셀(TLC) 방식으로 설정될 수 있다. 예를 들면, 제2 리드 전압(V2)은 트리플 레벨 셀(TLC) 방식에서 제2 프로그램 상태인 메모리 셀들을 리드하기 위한 전압일 수 있으며, 테스트 동작에서는 상대적으로 높은 문턱전압을 가지는 메모리 셀들을 검출하기 위하여 사용될 수 있다. 즉, 제2 리드 전압(V2)은 프로그램 동작이 정상 속도보다 빠른 패스트 셀(fast cell)을 검출하기 위한 테스트 전압일 수 있다.
메모리 장치는 제2 리드 커맨드(CMD_R2)에 응답하여 선택된 메모리 블록의 선택된 페이지로부터 리드된 데이터를 컨트롤러에게 출력할 수 있다.
컨트롤러는 메모리 장치로부터 출력된 데이터에 따라, 선택된 메모리 블록에 패스트 셀(fast cell)이 포함되어 있는지를 판단할 수 있다(S149). 제2 리드 전압(V2)보다 낮은 문턱전압을 가지는 메모리 셀들의 데이터는 1이 되고, 제2 리드 전압(V2) 이상의 문턱전압을 가지는 메모리 셀들의 데이터는 0이 될 수 있다.
따라서, S149 단계에서, 컨트롤러는 수신받은 데이터에 0이 포함되지 않거나 데이터가 0인 메모리 셀들의 개수가 패스트(fast) 기준 개수보다 적으면(NO), 선택된 메모리 블록의 패스트 상태 정보를 정상 상태로 저장할 수 있다(S150). 패스트 기준 개수는 메모리 블록에 패스트 셀들이 포함되더라도 패스트 셀들의 개수가 적은 메모리 블록이 배드 블록으로 처리되는 것을 방지하기 위한 기준 값으로써, 메모리 장치에 따라 다른 값으로 설정될 수 있다. 선택된 메모리 블록의 패스트 상태가 정상으로 판단되면, 컨트롤러는 선택된 메모리 블록의 테스트 동작을 종료할 수 있다.
S149 단계에서 데이터가 모두 0 이거나 데이터가 0인 메모리 셀들의 개수가 패스트(fast) 기준 개수 이상이면(YES), 컨트롤러는 제2 서브 리드 전압(V2sub)을 찾기 위한 제2 서브 리드 동작을 수행할 수 있다. 예를 들면, 제2 서브 리드 동작은 복수의 서브 리드 전압들을 각각 사용하여 메모리 셀들을 리드하는 복수의 리드 동작들을 포함할 수 있다. 제2 서브 리드 동작은 패스트 셀들의 개수가 패스트 기준 개수보다 적어지기 시작하는 리드 전압을 찾기 위하여 수행될 수 있다. 이를 위해, 제2 서브 리드 동작에서는 제2리드 전압(V2)보다 단계적으로 낮아지는 서브 리드 전압들을 사용하는 복수의 리드 동작들이 순차적으로 수행될 수 있다.
S151 단계에서 패스트 셀들의 개수가 패스트 기준 개수보다 적은 리드 전압이 검출되면, 컨트롤러는 S147 단계에서 검출된 제1 서브 리드 전압(V1sub)과 S151 단계에서 검출된 제2 서브 리드 전압(V2sub) 간의 전압차(Vdif)를 산출할 수 있다(S152).
이어서, 컨트롤러는 전압차(Vdif)와 기준 전압(Vref)을 비교하여 메모리 블록의 상태를 판단할 수 있다(S153).
전압차(Vdif)가 기준 전압(Vref) 이상이면(YES), 컨트롤러는 메모리 블록을 배드 블록으로 처리할 수 있다(S154). 즉, 전압차(Vdif)가 기준 전압(Vref)보다 크다는 것은 메모리 블록에 슬로우 셀들과 패스트 셀들로 인해 문턱전압 분포의 폭이 넓다는 것을 의미하므로, 컨트롤러는 이러한 메모리 블록을 배드 블록으로 처리할 수 있다.
S153 단계에서, 전압차(Vdif)가 기준 전압(Vref) 미만이면(NO), 컨트롤러는 메모리 블록의 상태 정보를 생성하고 저장할 수 있다(S150). 즉, 전압차(Vdif)가 기준 전압(Vref)보다 작다는 것은 슬로우 셀들 및 패스트 셀들이 메모리 블록에 포함되어 있으나, 에러가 발생할 만큼 신뢰도가 낮지 않다는 것을 의미하므로, 컨트롤러는 이러한 메모리 블록을 배드 블록으로 처리하지 아니하고 메모리 블록의 상태 정보를 저장할 수 있다.
컨트롤러는 S146 및 S150 단계들에서 저장된 메모리 블록들의 상태 정보에 따라, 후속 동작 시 메모리 블록들의 동작 횟수 등을 조절할 수 있다.
도 15는 제2 실시 예에 따른 전압 테이블을 설명하기 위한 도면이다.
도 15를 참조하면, 제2 실시 예에서는 슬로우 셀들이 분포하는 문턱전압과(도 14의 S147 단계 참조) 패스트 셀들이 분포하는 문턱전압을(도 14의 S151 단계 참조) 찾기 위하여 복수의 서브 리드 전압들이 사용될 수 있다.
전압 테이블(221)에는 이러한 리드 동작들에 사용될 수 있는 다양한 레벨들을 가지는 리드 전압들과 서브 리드 전압들 각각에 대한 전압 코드들이 저장될 수 있다.
예를 들면, 전압 테이블(221)에는 제1 리드 전압(V1)에 대한 제1 전압 코드(Vcd1)가 제1 인덱스(IND_t1)에 대응되어 저장될 수 있고, 제1 서브 리드 동작들에서 사용될 수 있는 제1 서브 리드 전압들(V1sub) 각각에 대한 서브 전압 코드들(Vcd11, Vcd12, Vcd13)이 서로 다른 인덱스들(IND_t1_A1~A3)에 대응되어 저장될 수 있다. 또한, 전압 테이블(221)에는 제2 리드 전압(V2)에 대한 제2 전압 코드(Vcd2)가 제2 인덱스(IND_t2)에 대응되어 저장될 수 있고, 제2 서브 리드 동작들에서 사용될 수 있는 제2 서브 리드 전압들(V2sub) 각각에 대한 서브 전압 코드들(Vcd21, Vcd22, Vcd23)이 서로 다른 인덱스들(IND_t2_B1~B3)에 대응되어 저장될 수 있다.
제1 및 제2 서브 리드 전압들(V1sub, V2sub)을 더욱 구체적으로 설명하면 다음과 같다.
제1 서브 리드 전압들(V1sub)은 슬로우 셀들의 분포를 체크하기 위한 전압들로써, 제11 내지 제13 서브 리드 전압들(V1-A1~A3)을 포함할 수 있다. 제11 서브 리드 전압(V1-A1)은 제1 리드 전압(V1)보다 A1 만큼 낮은 레벨로 설정될 수 있고, 제12 서브 리드 전압(V1-A2)은 제1 리드 전압(V1)보다 A2 만큼 낮은 레벨로 설정될 수 있으며, 제13 서브 리드 전압(V1-A3)은 제1 리드 전압(V1)보다 A3 만큼 낮은 레벨로 설정될 수 있다. A2는 A1 보다 높은 양전압일 수 있고, A3는 A2보다 높은 양전압일 수 있다.
제2 서브 리드 전압들(V2sub)은 패스트 셀들의 분포를 체크하기 위한 전압들로써, 제21 내지 제23 서브 리드 전압들(V2+B1~B3)을 포함할 수 있다. 제21 서브 리드 전압(V2+B1)은 제2 리드 전압(V2)보다 B1 만큼 높은 레벨로 설정될 수 있고, 제22 서브 리드 전압(V2+B2)은 제2 리드 전압(V2)보다 B2 만큼 높은 레벨로 설정될 수 있으며, 제23 서브 리드 전압(V2+B3)은 제2 리드 전압(V2)보다 B3 만큼 높은 레벨로 설정될 수 있다. B2는 B1 보다 높은 양전압일 수 있고, B3는 B2보다 높은 양전압일 수 있다.
도 16은 제2 실시 예에 따른 테스트 동작에서 메모리 블록의 상태를 체크하는 방법을 설명하기 위한 도면이다.
도 16을 참조하면, 제1 프로그램 전압에 의해 메모리 셀들의 문턱전압이 높아질 수 있다. 이때, 제1 프로그램 전압에 의해 높아질 수 있는 정상(normal) 메모리 셀들의 문턱전압 분포가 제1 리드 전압(V1)과 제2 리드 전압(V2) 사이라고 가정한다.
상태 판단부(도 7의 213)는 선택된 메모리 블록에 포함된 메모리 셀들의 문턱전압이 제1 내지 제2 리드 전압들(V1-V2) 사이에 있으면 선택된 메모리 블록을 정상 상태(STn)로 판단할 수 있다.
제1 리드 동작의 결과, 메모리 셀들의 문턱전압이 제1 리드 전압(V1)보다 낮은 것으로 판단되면, 컨트롤러는 제1 리드 전압(V1)으로부터 단계적으로 낮아지는 제11 내지 제13 서브 리드 전압들(V1-A1~A3)을 사용한 제1 서브 리드 동작들을 수행할 수 있다. 예를 들면, 제11 서브 리드 전압(V1-A1)을 사용한 서브 리드 동작이 수행되면, 상태 판단부(도 7의 213)는 선택된 서브 리드 동작에서 검출된 슬로우 셀들의 개수가 슬로우 기준 개수보다 적은지를 판단할 수 있다. 슬로우 셀들의 개수가 슬로우 기준 개수보다 큰 것으로 판단되면, 컨트롤러는 제12 서브 리드 전압(V1-A2)을 사용한 서브 리드 동작을 수행할 수 있다. 제12 서브 리드 전압(V1-A2)을 사용한 서브 리드 동작에서도 슬로우 셀들의 개수가 슬로우 기준 개수보다 큰 것으로 판단되면, 컨트롤러는 제13 서브 리드 전압(V1-A3)을 사용한 서브 리드 동작을 수행할 수 있다. 제13 서브 리드 전압(V1-A3)을 사용한 서브 리드 동작에서 슬로우 셀들의 개수가 슬로우 기준 개수보다 적은 것으로 판단되면, 컨트롤러는 연산 동작(도 14의 S152 단계)을 위하여 제13 서브 리드 전압(V1-A3)을 임시로 저장할 수 있다.
제2 리드 동작의 결과, 메모리 셀들의 문턱전압이 제2 리드 전압(V2)보다 높은 것으로 판단되면, 컨트롤러는 제2 리드 전압(V2)으로부터 단계적으로 높아지는 제21 내지 제23 서브 리드 전압들(V2+B1~B3)을 사용한 제2 서브 리드 동작들을 수행할 수 있다. 예를 들면, 제21 서브 리드 전압(V2+B1)을 사용한 서브 리드 동작이 수행되면, 상태 판단부(도 7의 213)는 선택된 서브 리드 동작에서 검출된 패스트 셀들의 개수가 패스트 기준 개수보다 적은지를 판단할 수 있다. 패스트 셀들의 개수가 패스트 기준 개수보다 큰 것으로 판단되면, 컨트롤러는 제22 서브 리드 전압(V2+B2)을 사용한 서브 리드 동작을 수행할 수 있다. 제22 서브 리드 전압(V2+B2)을 사용한 서브 리드 동작에서 패스트 셀들이 검출되더라도 패스트 셀들의 개수가 패스트 기준 개수보다 적은 것으로 판단되면, 컨트롤러는 연산 동작(도 14의 S152 단계)을 위하여 제22 서브 리드 전압(V2+B2)을 임시로 저장할 수 있다.
컨트롤러는 임시로 저장된 제22 서브 리드 전압(V2+B2)과 제13 서브 리드 전압(V1-A3) 간의 전압차를 산출하고, 전압차와 기준 전압을 비교하여 선택된 메모리 블록의 상태를 판단할 수 있다.
도 17은 제2 실시 예에 따른 상태 테이블을 설명하기 위한 도면이다.
도 17을 참조하면, 상태 테이블(222)은 제1 내지 제i 메모리 블록들(BLK1~BLKi) 각각에 대한 상태 정보(INFO_ST)를 저장할 수 있다. 도 17에 도시된 상태 테이블(222)을 참조하면, 제1 메모리 블록(BLK1)의 상태 정보(INFO_ST)는 제1 슬로우 상태(slow_st1)를 나타내며, 이는 가장 낮은 문턱전압과 가장 높은 문턱전압 간의 전압차가 기준 전압보다 작지만 메모리 블록에 패스트 셀들보다 슬로우 셀들이 많이 포함된 상태를 나타낼 수 있다. 제2 메모리 블록(BLK2)의 상태 정보(INFO_ST)는 제2 슬로우 상태(slow_st2)를 나타내며, 이는 가장 낮은 문턱전압과 가장 높은 문턱전압 간의 전압차가 기준 전압보다 작지만 메모리 블록에 포함된 슬로우 셀들의 개수가 제1 슬로우 상태(slow_st1)보다 많은 상태를 나타낼 수 있다. 제3 메모리 블록(BLK3)의 상태 정보(INFO_ST)는 배드 블록(BAD)을 나타내며, 이는 가장 낮은 문턱전압과 가장 높은 문턱전압 간의 전압차가 기준 전압보다 큰 메모리 블록을 나타낼 수 있다. 제5 메모리 블록(BLK5)의 상태 정보(INFO_ST)는 제1 패스트 상태(fast_st1)를 나타내며, 이는 가장 낮은 문턱전압과 가장 높은 문턱전압 간의 전압차가 기준 전압보다 작지만 메모리 블록에 슬로우 셀들보다 패스트 셀들이 많이 포함된 상태를 나타낼 수 있다. 제6 메모리 블록(BLK6)의 상태 정보(INFO_ST)는 제2 패스트 상태(fast_st2)를 나타내며, 이는 가장 낮은 문턱전압과 가장 높은 문턱전압 간의 전압차가 기준 전압보다 작지만 메모리 블록에 포함된 패스트 셀들의 개수가 제1 패스트 상태(fast_st1)보다 많은 상태를 나타낼 수 있다.
컨트롤러는 상태 테이블(222)에 저장된 메모리 블록들의 상태 정보(INFO_ST)를 참조하여 노말 동작들을 수행할 수 있다. 예를 들면, 컨트롤러는 정상 상태인 메모리 블록들에 대해서는 프로그램, 리드 또는 소거 동작 시, 컨트롤러에 설정된 기본 값들을 사용하여 프로그램, 리드 또는 소거 동작을 셋업할 수 있다. 컨트롤러는 슬로우 상태인 메모리 블록들에 대해서는 프로그램 및 소거 동작들이 수행되는 횟수가 정상 상태인 메모리 블록들보다 작도록 어드레스를 관리할 수 있다. 컨트롤러는 패스트 상태인 메모리 블록들을 싱글 레벨 셀 방식으로만 사용할 수 있다.
상술한 테스트 동작은 메모리 장치들의 제조 단계에서 컨트롤러를 이용하여 수행되거나, 패키징 이후에도 컨트롤러를 이용하여 수행될 수 있으므로, 본 실시 예의 테스트 동작은 메모리 장치 또는 메모리 시스템의 제조 단계에 의해 제한되지 않는다.
도 18은 본 발명의 실시예에 따른 메모리 시스템의 다른 실시예를 설명하기 위한 도면이다.
도 18을 참조하면, 메모리 카드 시스템(2000)은 메모리 컨트롤러(2100), 메모리 장치(2200), 및 커넥터(2300)를 포함한다.
메모리 컨트롤러(2100)는 메모리 장치(2200)와 연결된다. 메모리 컨트롤러(2100)는 메모리 장치(2200)를 접속(access)하도록 구성된다. 예를 들어, 메모리 컨트롤러(2100)는 메모리 장치(2200)의 프로그램, 리드 또는 소거 동작을 제어하거나, 배경(background) 동작을 제어하도록 구성될 수 있다. 메모리 컨트롤러(2100)는 메모리 장치(2200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 메모리 컨트롤러(2100)는 메모리 장치(2200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 메모리 장치(2200)는 도 2를 참조하여 설명된 메모리 장치(1100)와 동일하게 구성될 수 있다.
메모리 컨트롤러(2100)는 커넥터(2300)를 통해 외부 장치와 통신할 수 있다. 메모리 컨트롤러(2100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 메모리 컨트롤러(2100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC (embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어 (Firewire), UFS (Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 커넥터(2300)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.
예시적으로, 메모리 장치(2200)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등과 같은 다양한 비휘발성 메모리 소자들로 구성될 수 있다.
메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 범용 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 19는 본 발명의 실시예에 따른 메모리 시스템의 또 다른 실시예를 설명하기 위한 도면이다.
도 19를 참조하면, SSD 시스템(3000)은 호스트(3100) 및 SSD(3200)를 포함한다. SSD(3200)는 신호 커넥터(3001)를 통해 호스트(3100)와 신호를 주고 받고, 전원 커넥터(3002)를 통해 전원 전압을 입력받는다. SSD(3200)는 SSD 컨트롤러(3210), 복수의 플래시 메모리들(3221~322n), 보조 전원 장치(3230), 및 버퍼 메모리(3240)를 포함한다.
본 발명의 실시 예에 따르면, 플래시 메모리들(3221~322n)은 도 2를 참조하여 설명된 메모리 장치(1100)와 동일하게 구성될 수 있다.
SSD 컨트롤러(3210)는 호스트(3100)로부터 수신된 신호에 응답하여 복수의 플래시 메모리들(3221~322n)을 제어할 수 있다. 예시적으로, 신호는 호스트(3100) 및 SSD(3200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.
보조 전원 장치(3230)는 전원 커넥터(3002)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3230)는 호스트(3100)로부터 전원을 입력 받고, 충전할 수 있다. 보조 전원 장치(3230)는 호스트(3100)로부터의 전원 공급이 원활하지 않을 경우, SSD(3200)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(3230)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3230)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(3240)는 SSD(3200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(3240)는 호스트(3100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(3221~322n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(3221~322n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(3240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.
1000: 메모리 시스템
1100: 메모리 장치
1200: 컨트롤러 100: 메모리 셀 어레이
110: 주변 회로 120: 로직 회로
112: 전압 생성부 113: 로우 디코더
114: 페이지 버퍼 그룹 115: 컬럼 디코더
116: 입출력 회로 210: 테스트 관리부
211: 커맨드 생성부 212: 전압 연산부
213: 상태 판단부 220: 버퍼
221: 전압 테이블 222: 상태 테이블
230: 메모리 인터페이스 231: 커맨드 큐
232: 카운터
1200: 컨트롤러 100: 메모리 셀 어레이
110: 주변 회로 120: 로직 회로
112: 전압 생성부 113: 로우 디코더
114: 페이지 버퍼 그룹 115: 컬럼 디코더
116: 입출력 회로 210: 테스트 관리부
211: 커맨드 생성부 212: 전압 연산부
213: 상태 판단부 220: 버퍼
221: 전압 테이블 222: 상태 테이블
230: 메모리 인터페이스 231: 커맨드 큐
232: 카운터
Claims (20)
- 메모리 블록의 프로그램 동작을 수행하기 위한 제1 방식의 프로그램 커맨드와, 상기 프로그램 동작을 중단시키기 위한 중단 커맨드를 출력하도록 구성된 테스트 관리부; 및
상기 제1 방식의 프로그램 커맨드를 상기 메모리 블록을 포함하는 메모리 장치에 전송하고, 설정된 시간이 지난 후에 상기 중단 커맨드를 상기 메모리 장치에 전송하도록 구성된 메모리 인터페이스를 포함하고,
상기 테스트 관리부는 상기 메모리 블록에 포함된 메모리 셀들을 리드(read)하기 위한 제2 방식의 리드 커맨드를 출력하고,
상기 메모리 인터페이스는 상기 리드 커맨드에 응답하여 상기 메모리 장치로부터 출력된 데이터를 카운트하여 카운트 값을 산출하고,
상기 테스트 관리부는 상기 카운트 값에 따라 상기 메모리 블록에 대한 상태 정보를 생성하는 컨트롤러.
- 제1항에 있어서, 상기 테스트 관리부는,
상기 제1 방식으로 싱글 레벨 셀(single level cell) 방식을 사용하고,
상기 제2 방식으로 트리플 레벨 셀(triple level cell) 방식을 사용하는 컨트롤러.
- 제1항에 있어서, 상기 테스트 관리부는,
중단된 상기 프로그램 동작을 종료시키기 위한 종료 커맨드를 출력하도록 구성되는 컨트롤러.
- 제3항에 있어서, 상기 메모리 인터페이스는,
상기 프로그램 커맨드, 상기 중단 커맨드, 상기 종료 커맨드 및 상기 리드 커맨드를 상기 메모리 장치에게 순차적으로 전송하도록 구성되는 컨트롤러.
- 제1항에 있어서, 상기 메모리 인터페이스는,
상기 프로그램 커맨드를 출력한 후, 지연 시간 후에 상기 중단 커맨드를 상기 메모리 장치에 출력하도록 구성되는 컨트롤러.
- 제5항에 있어서, 상기 지연 시간은,
상기 프로그램 커맨드에 응답하여 상기 메모리 장치가 프로그램 동작을 시작한 후,
상기 메모리 셀들에 프로그램 전압이 설정된 횟수만큼 인가되는데 걸리는 시간인 컨트롤러.
- 제1항에 있어서, 상기 메모리 인터페이스는,
상기 리드 커맨드를 상기 메모리 장치에게 전송할 때,
상기 메모리 셀들 중 슬로우 셀들을 검출하기 위한 제1 리드 커맨드를 상기 메모리 장치에게 전송하고,
상기 메모리 셀들 중 패스트 셀들을 검출하기 위한 제2 리드 커맨드를 상기 메모리 장치에게 전송하도록 구성되는 컨트롤러.
- 제7항에 있어서, 상기 메모리 인터페이스는,
상기 제1 리드 커맨드에 응답하여 상기 메모리 장치로부터 출력된 제1 데이터를 수신받고,
상기 제1 데이터에 포함된 0 데이터의 개수를 카운트한 제1 카운트 값과, 1 데이터의 개수를 카운트한 제2 카운트 값을 산출하고,
상기 제1 및 제2 카운트 값들을 상기 테스트 관리부로 전송하도록 구성되는 컨트롤러.
- 제8항에 있어서, 상기 테스트 관리부는,
상기 제1 카운트 값이 슬로우 기준 값보다 크면 상기 메모리 블록의 상태를 슬로우 상태로 판단하고,
상기 제2 카운트 값이 패스트 기준 값보다 크면 상기 메모리 블록을 배드 블록으로 처리하도록 구성되는 컨트롤러.
- 제1항에 있어서,
상기 테스트 관리부에서 출력된 상기 상태 정보를 저장하는 버퍼를 더 포함하는 컨트롤러.
- 제1항에 있어서, 상기 테스트 관리부는,
상기 메모리 블록이 슬로우 상태로 판단되면, 상기 메모리 블록에 포함된 메모리 셀들 중 슬로우 셀들의 개수와 슬로우 기준 개수를 비교하여 상기 메모리 블록의 슬로우 상태를 판단하기 위한 제1 서브 리드 커맨드를 생성하고,
상기 메모리 블록이 패스트 상태로 판단되면, 상기 메모리 블록에 포함된 메모리 셀들 중 패스트 셀들의 개수와 패스트 기준 개수를 비교하여 상기 메모리 블록의 패스트 상태를 판단하기 위한 제2 서브 리드 커맨드를 생성하도록 구성되는 컨트롤러.
- 제11항에 있어서, 상기 테스트 관리부는,
상기 메모리 셀들의 가장 낮은 문턱전압과 가장 높은 문턱전압 간의 전압차가 기준 전압보다 큰 것으로 판단되면, 상기 메모리 블록을 배드 블록으로 판단하도록 구성되는 컨트롤러.
- 제12항에 있어서, 상기 테스트 관리부는,
상기 전압차가 상기 기준 전압보다 작고, 상기 메모리 블록에 상기 패스트 셀들보다 상기 슬로우 셀들이 많이 포함된 경우, 상기 상태 정보가 슬로우 상태를 나타내도록 상기 상태 정보를 생성하고,
상기 전압차가 상기 기준 전압보다 작고, 상기 메모리 블록에 상기 슬로우 셀들보다 상기 패스트 셀들이 많이 포함된 경우, 상기 상태 정보가 패스트 상태를 나타내도록 상기 상태 정보를 생성하도록 구성되는 컨트롤러.
- 메모리 블록의 프로그램 동작을 수행하기 위한 제1 방식의 프로그램 커맨드, 상기 프로그램 동작을 중단시키기 위한 중단 커맨드, 상기 메모리 블록의 슬로우 상태를 체크하기 위한 제1 리드 커맨드 및 상기 메모리 블록의 패스트 상태를 체크하기 위한 제2 리드 커맨드를 출력하도록 구성된 커맨드 생성부;
상기 프로그램 커맨드, 상기 중단 커맨드, 상기 제1 리드 커맨드 및 상기 제2 리드 커맨드를 상기 메모리 블록을 포함하는 메모리 장치에 순차적으로 전송하도록 구성된 커맨드 큐;
상기 제1 및 제2 리드 커맨드들 각각에 응답하여 상기 메모리 장치로부터 출력된 제1 및 제2 데이터를 수신받고, 상기 제1 및 제2 데이터 각각에 포함된 서로 다른 비트들의 개수를 카운트하여 카운트 값을 출력하도록 구성되는 카운터; 및
상기 카운트 값에 따라 상기 메모리 블록의 상태를 판단하여 상태 정보를 생성하도록 구성된 상태 판단부를 포함하는 컨트롤러.
- 제14항에 있어서, 상기 커맨드 큐는,
상기 프로그램 커맨드를 출력한 후, 지연 시간 후에 상기 중단 커맨드를 상기 메모리 장치에 출력하도록 구성되는 컨트롤러.
- 제15항에 있어서, 상기 지연 시간은,
상기 프로그램 커맨드에 응답하여 상기 메모리 장치가 프로그램 동작을 시작한 후,
상기 메모리 셀들에 프로그램 전압이 설정된 횟수만큼 인가되는데 걸리는 시간인 컨트롤러.
- 제15항에 있어서, 상기 커맨드 생성부는,
상기 중단 커맨드에 의해 중단된 상기 프로그램 동작을 종료시키기 위한 종료 커맨드를 더 출력하도록 구성된 컨트롤러.
- 제17항에 있어서, 상기 커맨드 큐는,
상기 중단 커맨드를 출력한 후, 상기 제1 리드 커맨드를 출력하기 이전에 상기 종료 커맨드를 출력하도록 구성된 컨트롤러.
- 제14항에 있어서, 상기 카운터는,
상기 제1 리드 커맨드에 따라 수신된 상기 제1 데이터에 포함된 0 및 1의 개수를 각각 카운트하고, 카운트 결과로 산출된 제1 카운트 값들을 상기 상태 판단부에게 전송하고,
상기 제2 리드 커맨드에 따라 수신된 상기 제2 데이터에 포함된 0 및 1의 개수를 각각 카운트하고, 카운트 결과로 산출된 제2 카운트 값들을 상기 상태 판단부에게 전송하도록 구성된 컨트롤러.
- 제19항에 있어서, 상기 상태 판단부는,
상기 제1 카운트 값들 중 슬로우 셀들에 대응되는 값이 슬로우 기준 값보다 크면 상기 메모리 블록의 상태를 슬로우 상태로 판단하고,
상기 제2 카운트 값들 중 패스트 셀들에 대응되는 값이 패스트 기준 값보다 크면 상기 메모리 블록을 배드 블록으로 처리하도록 구성되는 컨트롤러.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200122225A KR20220039282A (ko) | 2020-09-22 | 2020-09-22 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
US17/208,782 US11482290B2 (en) | 2020-09-22 | 2021-03-22 | Controller and memory system including the controller |
CN202110464956.7A CN114255818A (zh) | 2020-09-22 | 2021-04-28 | 控制器和包括该控制器的存储器*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200122225A KR20220039282A (ko) | 2020-09-22 | 2020-09-22 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220039282A true KR20220039282A (ko) | 2022-03-29 |
Family
ID=80739377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200122225A KR20220039282A (ko) | 2020-09-22 | 2020-09-22 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11482290B2 (ko) |
KR (1) | KR20220039282A (ko) |
CN (1) | CN114255818A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11810634B2 (en) * | 2021-04-28 | 2023-11-07 | Micron Technology, Inc. | Computer system with redundancy having fail test mode |
US11768629B2 (en) * | 2021-04-28 | 2023-09-26 | Micron Technology, Inc. | Techniques for memory system configuration using queue refill time |
KR20230068683A (ko) * | 2021-11-11 | 2023-05-18 | 삼성전자주식회사 | 서스펜드 동작 검사 방법 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4531182A (en) * | 1969-11-24 | 1985-07-23 | Hyatt Gilbert P | Machine control system operating from remote commands |
JPH04221496A (ja) * | 1990-03-29 | 1992-08-11 | Intel Corp | 単一基板上に設けられるコンピュータメモリ回路およびコンピュータメモリを消去するためのシーケンスを終らせる方法 |
US5774733A (en) * | 1995-10-03 | 1998-06-30 | Microchip Technology Incorporated | Microcontroller with analog front-end for providing intelligent battery management |
JP2004030438A (ja) * | 2002-06-27 | 2004-01-29 | Renesas Technology Corp | マイクロコンピュータ |
JP2004348791A (ja) * | 2003-05-20 | 2004-12-09 | Sharp Corp | 半導体記憶装置及び携帯電子機器 |
US7099226B2 (en) * | 2003-10-14 | 2006-08-29 | Atmel Corporation | Functional register decoding system for multiple plane operation |
JP4568055B2 (ja) * | 2004-08-23 | 2010-10-27 | 株式会社アドバンテスト | 試験装置及び試験方法 |
EP1870905B1 (en) * | 2006-06-21 | 2009-12-30 | STMicroelectronics S.r.l. | Method and circuit for electrically programming semiconductor memory cells |
US9607681B2 (en) * | 2015-08-26 | 2017-03-28 | Everam Technology Inc. | Memory device that supports multiple memory configurations |
KR20170052066A (ko) | 2015-11-03 | 2017-05-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
KR102480015B1 (ko) | 2015-12-11 | 2022-12-21 | 삼성전자 주식회사 | 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 동작 방법 |
US9886214B2 (en) * | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US9892794B2 (en) * | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US10541042B2 (en) * | 2018-04-23 | 2020-01-21 | Microsoft Technology Licensing, Llc | Level-crossing memory trace inspection queries |
US11211136B2 (en) * | 2019-06-26 | 2021-12-28 | Micron Technology, Inc. | Memory system tester using test pad real time monitoring |
KR20210012818A (ko) * | 2019-07-26 | 2021-02-03 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그 동작 방법 |
KR20210129490A (ko) * | 2020-04-20 | 2021-10-28 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 이의 동작 방법 |
KR20220031465A (ko) * | 2020-09-04 | 2022-03-11 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그 동작 방법 |
-
2020
- 2020-09-22 KR KR1020200122225A patent/KR20220039282A/ko active Search and Examination
-
2021
- 2021-03-22 US US17/208,782 patent/US11482290B2/en active Active
- 2021-04-28 CN CN202110464956.7A patent/CN114255818A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20220093194A1 (en) | 2022-03-24 |
US11482290B2 (en) | 2022-10-25 |
CN114255818A (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112447244B (zh) | 存储装置及其操作方法 | |
US9269452B2 (en) | Determining system lifetime characteristics | |
US11482290B2 (en) | Controller and memory system including the controller | |
KR20110125029A (ko) | 불휘발성 메모리 장치 및 그것의 프로그램 방법 | |
US11532369B2 (en) | Memory device and method of operating the same | |
CN112885394B (zh) | 存储器装置和操作该存储器装置的方法 | |
US20230117364A1 (en) | Sequential wordline erase verify schemes | |
CN114627943A (zh) | 存储器设备和操作该存储器设备的方法 | |
US20240212769A1 (en) | Memory device and method of operating the same | |
US20220269616A1 (en) | Electronic system including memory system and host | |
KR20230023483A (ko) | 메모리 장치 및 그 동작 방법 | |
CN112783431A (zh) | 存储装置及其操作方法 | |
US20230060943A1 (en) | Memory device defect management | |
US11842779B2 (en) | Memory device and operating method for performing verify operation | |
US11967391B2 (en) | System and method for testing multicore SSD firmware based on preconditions generation | |
KR20220099848A (ko) | 컨트롤러 및 이를 포함하는 메모리 시스템 | |
KR20210112190A (ko) | 메모리 장치 및 그 동작 방법 | |
KR20200142761A (ko) | 비휘발성 메모리 장치 및 그 프로그램 방법 | |
US11756612B2 (en) | All levels dynamic start voltage programming of a memory device in a memory sub-system | |
US20240020015A1 (en) | Controller and method of operating the same | |
KR20230018873A (ko) | 메모리 시스템 및 그 동작 방법 | |
KR20220030092A (ko) | 메모리 장치 및 이의 동작 방법 | |
KR20230153181A (ko) | 메모리 장치 및 그 프로그래밍 속도 조절 방법 | |
KR20240097589A (ko) | 메모리 시스템 및 그 온도 관리 방법 | |
KR20230041330A (ko) | 비휘발성 메모리 장치에 데이터를 프로그램 및 검증하기 위한 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |