KR20190093364A - 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 - Google Patents
메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR20190093364A KR20190093364A KR1020180012916A KR20180012916A KR20190093364A KR 20190093364 A KR20190093364 A KR 20190093364A KR 1020180012916 A KR1020180012916 A KR 1020180012916A KR 20180012916 A KR20180012916 A KR 20180012916A KR 20190093364 A KR20190093364 A KR 20190093364A
- Authority
- KR
- South Korea
- Prior art keywords
- check
- memory device
- state
- status
- memory
- Prior art date
Links
Images
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1063—Control signal output circuits, e.g. status or busy flags, feedback command signals
-
- 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/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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
-
- 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
Abstract
본 발명은, 복수의 상태 체크 커맨드들 중 메모리 장치가 지원하는 상태 체크 커맨드를 확인하는 상태 체크 커맨드 결정부; 및 상기 확인된 상태 체크 커맨드를 이용하여 상기 메모리 장치에 대한 상태 체크 동작을 수행하는 상태 체크 수행부를 포함하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법을 포함한다.
Description
본 발명은, 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법에 관한 것으로, 보다 구체적으로는 메모리 장치의 타입에 따라 상태 체크를 수행할 수 있는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법에 관한 것이다.
메모리 시스템(memory system)은, 메모리 장치(memory device) 및 메모리 컨트롤러(memory controller)를 포함할 수 있다.
메모리 장치는, 메모리 컨트롤러의 제어에 따라 데이터를 저장하거나 저장된 데이터를 출력할 수 있다. 예를 들면, 메모리 장치는, 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치, 또는 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치로 이루어질 수 있다.
메모리 컨트롤러는, 호스트(host)와 메모리 장치 사이의 데이터 통신을 제어할 수 있다.
호스트는, PCI-E(Peripheral Component Interconnect-Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA) 또는 SAS(serial attached SCSI) 등의 인터페이스 프로토콜을 사용하여 메모리 시스템과 통신을 수행할 수 있다. 호스트와 메모리 시스템 간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않는다. 예를 들어, 호스트는, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface) 또는 IDE(Integrated Drive Electronics) 등의 다양한 인터페이스를 이용하여 메모리 시스템과 통신할 수 있다.
본 발명의 실시 예들은, 메모리 장치의 타입에 따라 상태 체크를 수행할 수 있는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법을 제공한다.
본 발명의 일 실시 예에 따른 메모리 컨트롤러는, 복수의 상태 체크 커맨드들 중 메모리 장치가 지원하는 상태 체크 커맨드를 확인하는 상태 체크 커맨드 결정부; 및 상기 확인된 상태 체크 커맨드를 이용하여 상기 메모리 장치에 대한 상태 체크 동작을 수행하는 상태 체크 수행부를 포함한다.
본 발명의 일 실시 예에 따른 메모리 시스템은, 상태 체크 커맨드에 응답하여 상태 정보를 출력하는 메모리 장치; 및 복수의 상태 체크 커맨드 중 상기 메모리 장치가 지원하는 상태 체크 커맨드를 확인하고, 상기 확인된 상태 체크 커맨드를 이용하여 상기 메모리 장치에 대한 상태 체크를 수행하는 메모리 컨트롤러를 포함한다.
본 발명의 일 실시 예에 따른 메모리 컨트롤러의 동작 방법은, 호스트로부터 메모리 장치의 타입 정보를 수신하는 단계; 상기 수신된 메모리 장치의 타입 정보와 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드를 지원하는 메모리 장치의 타입 정보가 맵핑된 제 1 테이블을 기반으로 상기 메모리 장치가 지원하는 상태 체크 커맨드를 확인하는 단계; 및 상기 확인된 상태 체크 커맨드를 이용하여 상기 메모리 장치에 대한 상태 체크를 수행하는 단계를 포함한다.
본 기술에 따르면, 메모리 장치의 타입에 따른 상태 체크를 수행할 수 있으므로, 메모리 시스템의 신뢰도를 개선할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템을 설명하기 위한 예시도이다.
도 2는 도 1에 도시된 메모리 컨트롤러를 설명하기 위한 예시도이다.
도 3은 도 1 및 도 2에 도시된 메모리 장치를 설명하기 위한 예시도이다.
도 4는 2차원 구조의 메모리 블록을 설명하기 위한 예시도이다.
도 5는 3차원 구조의 메모리 블록의 일 예를 설명하기 위한 예시도이다.
도 6은 3차원 구조의 메모리 블록의 다른 예를 설명하기 위한 예시도이다.
도 7은 본 발명의 일 실시 예에 따른 상태 체크 수행 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 일 실시 예에 따른 제 1 테이블을 설명하기 위한 예시도이다.
도 9는 본 발명의 일 실시 예에 따른 제 2 테이블을 설명하기 위한 예시도이다.
도 10은 본 발명의 일 실시 예에 따른 제 3 테이블을 설명하기 위한 예시도이다.
도 11은 도 9에 도시된 상태 정보를 상세히 설명하기 위한 예시도이다.
도 12는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 13은 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 14는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 15는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 2는 도 1에 도시된 메모리 컨트롤러를 설명하기 위한 예시도이다.
도 3은 도 1 및 도 2에 도시된 메모리 장치를 설명하기 위한 예시도이다.
도 4는 2차원 구조의 메모리 블록을 설명하기 위한 예시도이다.
도 5는 3차원 구조의 메모리 블록의 일 예를 설명하기 위한 예시도이다.
도 6은 3차원 구조의 메모리 블록의 다른 예를 설명하기 위한 예시도이다.
도 7은 본 발명의 일 실시 예에 따른 상태 체크 수행 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 일 실시 예에 따른 제 1 테이블을 설명하기 위한 예시도이다.
도 9는 본 발명의 일 실시 예에 따른 제 2 테이블을 설명하기 위한 예시도이다.
도 10은 본 발명의 일 실시 예에 따른 제 3 테이블을 설명하기 위한 예시도이다.
도 11은 도 9에 도시된 상태 정보를 상세히 설명하기 위한 예시도이다.
도 12는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 13은 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 14는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 15는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 첨부되는 도면을 참조하여 본 발명의 실시 예들을 설명한다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템을 설명하기 위한 예시도이다.
도 1을 참조하면, 메모리 시스템(memory system; 2000)은, 데이터가 저장되는 메모리 장치(memory device; 2200) 및 호스트(host; 1000)의 제어에 따라 메모리 장치(2200)를 제어하는 메모리 컨트롤러(memory controller; 2100)를 포함할 수 있다.
호스트(1000)는, PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA) 또는 SAS(serial attached SCSI) 등의 인터페이스 프로토콜을 사용하여 메모리 시스템(2000)과 통신할 수 있다. 호스트(1000)와 메모리 시스템(2000) 간에 이용되는 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface) 또는 IDE(Integrated Drive Electronics) 등의 인터페이스 프로토콜이 이용될 수도 있다.
메모리 시스템(2000)에는, 다양한 타입의 메모리 장치(2200)가 탑재될 수 있다. 예를 들어, 메모리 시스템(2000)에는, A 타입의 메모리 장치(2200)가 탑재되거나, B 타입의 메모리 장치(2200)가 탑재될 수 있다. 여기서, A 타입의 메모리 장치(2200)가 지원하는 상태 체크 ("READ STATUS") 커맨드는, B 타입의 메모리 장치(2200)가 지원하는 상태 체크 커맨드와 다를 수 있다. 즉, 서로 다른 타입의 메모리 장치(2200)는, 서로 지원하는 상태 체크 커맨드가 다를 수 있다.
메모리 시스템(2000)에 특정 타입의 메모리 장치(2200)가 탑재되는 경우, 호스트(1000)는, 해당 메모리 장치(2200)의 타입 정보를 메모리 컨트롤러(2100)에게 전송할 수 있다. 메모리 장치(2200)의 타입 정보는, 예를 들어, 메모리 장치(2200)의 제품명, 시리얼 넘버 또는 패키지 정보일 수 있다. 그러나, 메모리 장치(2200)의 타입 정보는 이에 한정되지 않으며, 메모리 장치(2200)를 식별할 수 있는 다양한 정보들이 타입 정보로서 이용될 수 있다.
메모리 컨트롤러(2100)는, 메모리 시스템(2000)의 동작을 전반적으로 제어하며, 호스트(1000)와 메모리 장치(2200) 사이의 데이터 교환을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(2100)는 호스트(1000)와 메모리 장치(2200) 사이에서 커맨드(command), 어드레스(address) 및 데이터(data)가 통신될 수 있도록 수신된 정보를 변환하고 변환된 정보를 저장 및 출력할 수 있다. 예를 들어, 프로그램 동작 시, 메모리 컨트롤러(2100)는, 커맨드(command), 어드레스(address) 및 데이터(data) 등을 메모리 장치(2200)에 전송할 수 있다.
메모리 컨트롤러(2100)는, 메모리 장치(2200)에 대한 상태 체크를 수행할 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 상태 체크 커맨드를 생성하여 메모리 장치(2200)에게 전송하고, 상태 체크 커맨드에 대한 응답으로 메모리 장치(2200)로부터 상태 정보를 수신할 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 메모리 장치(2200)로부터 수신된 상태 정보에 따라 메모리 장치(2200)의 상태를 확인할 수 있다. 즉, 메모리 컨트롤러(2100)는 현재 메모리 장치(2200)가 동작 중인지 또는 유휴 상태인지 등의 정보를 확인할 수 있다. 메모리 장치(2200)로부터 출력되는 상태 정보는 다양한 정보를 포함할 수 있다. 예를 들면, 상태 정보는, 메모리 컨트롤러(2100)로부터 출력된 상태 체크 커맨드를 정상적으로 수신했는지에 대한 정보, 메모리 장치(2200)가 현재 유휴(idle) 상태인지에 대한 정보, 메모리 장치(2200)가 현재 비지(busy) 상태인지에 대한 정보 등을 포함할 수 있다. 또한, 메모리 장치(2200)의 프로그램 동작 이후에 상태 체크 동작이 수행되는 경우, 메모리 컨트롤러(2100)는, 메모리 장치(2200)로부터 수신되는 상태 정보를 확인하여 메모리 장치(2200)의 프로그램 동작이 정상적으로 수행되었는지 여부를 확인할 수 있다. 예를 들어, 메모리 장치(2200)의 리드 동작 이후에 상태 체크 동작이 수행되는 경우, 메모리 컨트롤러(2100)는, 메모리 장치(2200)로부터 수신되는 상태 정보를 확인하여 메모리 장치(2200)의 리드 동작이 정상적으로 수행되었는지 여부를 확인할 수 있다.
메모리 컨트롤러(2100)는, 메모리 장치(2200)가 지원하는 상태 체크 커맨드를 확인하고, 확인된 상태 체크 커맨드를 이용하여 메모리 장치(2200)에 대한 상태 체크를 수행할 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 호스트(1000)로부터 메모리 장치(2200)의 타입 정보를 수신하고, 수신된 메모리 장치(2200)의 타입 정보를 기반으로 메모리 장치(2200)가 지원하는 상태 체크 커맨드를 확인할 수 있다. 메모리 장치(2200)가 지원하는 상태 체크 커맨드의 확인은, 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드를 지원하는 메모리 장치(2200)의 타입 정보가 저장된 테이블(이하, 제 1 테이블)을 기반으로 이루어질 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 제 1 테이블을 참조하여, 호스트(1000)로부터 수신된 메모리 장치(2200)의 타입 정보에 대응하는 상태 체크 커맨드를 확인할 수 있다.
메모리 컨트롤러(2100)는, 확인된 상태 체크 커맨드를 이용하여 메모리 장치(2200)에 대한 상태 체크를 수행할 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 확인된 상태 체크 커맨드를 생성하고, 생성된 상태 체크 커맨드를 메모리 장치(2200)에게 전송할 수 있다. 메모리 컨트롤러(2100)는, 상태 체크 커맨드에 대한 응답으로 메모리 장치(2200)로부터 상태 정보를 수신할 수 있다. 메모리 컨트롤러(2100)는, 메모리 장치(2200)로부터 수신된 상태 정보를 확인하여 상태 체크 결과를 확인할 수 있다. 상태 체크 결과의 확인은, 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드에 대응하는 상태 정보의 정의(definition)가 기록된 테이블(이하, 제 2 테이블)을 기반으로 이루어질 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 제 2 테이블을 참조하여, 메모리 장치(2200)로부터 수신된 상태 정보의 비트들이 의미하는 바를 확인함으로써 상태 체크 결과를 확인할 수 있다.
메모리 컨트롤러(2100)는, 상태 체크를 수행함에 있어, 메모리 장치(2200)로부터 수신되는 상태 정보 중에서 확인하여야 할 비트를 결정하고, 결정된 비트에 따라 메모리 장치(2200)에 대한 상태 체크 결과를 확인할 수 있다. 확인하여야 할 비트의 결정은, 복수의 상태 체크 커맨드 각각에 대응하는 상태 정보 중 확인하여야 할 참조 비트의 정보가 저장된 테이블(이하, 제 3 테이블)을 기반으로 이루어질 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 제 3 테이블을 참조하여, 메모리 장치(2200)로부터 수신된 상태 정보 중 참조 비트에 해당하는 비트에 따라 메모리 장치(2200)의 상태 체크 결과를 확인할 수 있다. 상태 체크 결과의 확인은, 제 2 테이블을 기반으로 이루어질 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 메모리 장치(2200)로부터 수신된 상태 정보 중 참조 비트에 해당하는 비트를 제 2 테이블을 참조하여 확인함으로써 메모리 장치(2200)의 상태 체크 결과를 확인할 수 있다.
메모리 컨트롤러(2100)는, 상태 체크의 대상이 되는 동작의 종류를 더 고려하여 확인하여야 할 상태 정보를 결정할 수 있다. 예를 들어, 제 3 테이블에는, 각각의 동작에 대응되는 참조 비트가 저장될 수 있다. 즉, 제 3 테이블에는, 복수의 상태 체크 커맨드들이 저장될 수 있고, 상태 체크 커맨드 각각에 대한 상태 정보 중 확인하여야 할 참조 비트가 저장될 수 있다. 이러한 경우, 메모리 컨트롤러(2100)는, 제 3 테이블을 참조하여, 메모리 장치(2200)로부터 수신된 상태 정보 중, 상태 체크의 대상이 된 동작에 매핑된 참조 비트에 해당하는 비트를, 확인하여야 할 상태 정보로 결정할 수 있다.
한편, 메모리 장치(2200)에서 지원하는 상태 체크 커맨드는 복수 개일 수 있다. 이러한 경우, 메모리 컨트롤러(2100)는, 복수의 상태 체크 커맨드 중 어느 하나의 상태 체크 커맨드를 선택하여 메모리 장치(2200)에 대한 상태 체크를 수행할 수 있다. 실시 예에 따라, 메모리 컨트롤러(2100)는, 메모리 장치(2200)에서 지원하는 복수의 상태 체크 커맨드들 중 어느 하나의 상태 체크 커맨드를 이용한 상태 체크를 수행하고, 그 결과에 따라 다른 하나의 상태 체크 커맨드를 이용한 상태 체크를 더 수행할 수 있다.
메모리 장치(2200)는, 메모리 컨트롤러(2100)의 제어에 따라 동작을 수행할 수 있다. 예를 들어, 메모리 장치(2200)는, 프로그램 동작, 리드 동작, 소거 동작, 서스펜드 동작, 및 카피백 동작 등을 수행할 수 있다.
메모리 장치(2200)는, 메모리 컨트롤러(2100)의 제어에 따른 동작을 수행하면서 상태 정보를 상태 레지스터(status register)에 저장할 수 있다. 메모리 장치(2200)는, 메모리 컨트롤러(2100)로부터 상태 체크 커맨드가 수신되는 경우, 상태 레지스터에 저장된 상태 정보를 메모리 컨트롤러(2100)에게 전송할 수 있다.
메모리 장치(2200)는 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치, 또는 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치로 이루어질 수 있다. 이하에서 설명되는 실시 예에서는 비휘발성 메모리 장치에 포함되는 플래시 메모리(flash memory)를 예를 들어 설명하도록 한다.
도 2는 도 1에 도시된 메모리 컨트롤러를 설명하기 위한 예시도이다.
도 2를 참조하면, 메모리 컨트롤러(2100)는, 호스트 인터페이스(host interface; 2110), ECC 유닛(Error Correcting Code unit; 2120), 메모리 인터페이스(memory interface; 2130), 버퍼 메모리(buffer memory; 2140), CPU(Central Processing Unit; 2150) 및 SRAM(Static Random-Access Memory; 2160)을 포함할 수 있다. 호스트 인터페이스(2110), ECC 유닛(2120) 메모리 인터페이스(2130), 버퍼 메모리(2140) 및 SRAM(2160)은, CPU(2150)에 의해 제어될 수 있다.
호스트 인터페이스(2110)는, 통신 프로토콜을 이용하여 호스트(1000)와 데이터 교환을 수행할 수 있다.
ECC 유닛(2120)은, 프로그램 동작 또는 리드 동작 시 에러를 검출하고 검출된 에러를 정정할 수 있다.
메모리 인터페이스(2130)는, 통신 프로토콜을 이용하여 메모리 장치(2200)와 통신을 수행할 수 있다.
버퍼 메모리(2140)는, 메모리 컨트롤러(2100)가 메모리 장치(2200)를 제어하는 동안 데이터를 임시로 저장할 수 있다. 예를 들면, 프로그램 동작이 완료될 때까지 호스트로부터 수신된 데이터는 버퍼 메모리(2140)에 임시로 저장될 수 있다. 또한, 리드 동작 시 메모리 장치(2200)로부터 리드된 데이터가 버퍼 메모리(2140)에 임시로 저장될 수도 있다.
CPU(2150)는, 메모리 장치(2200)를 제어하기 위하여, 각종 연산을 수행하거나 커맨드 및 어드레스를 생성할 수 있다. 예를 들어, CPU(2150)는, 프로그램 동작, 리드 동작, 소거 동작, 서스펜드 동작 및 카피백 동작들에 필요한 다양한 커맨드들(commands)을 생성할 수 있다.
CPU(2150)는, 메모리 장치의 타입에 대응하는 상태 체크 커맨드를 이용하여 메모리 장치(2200)에 대한 상태 체크를 수행할 수 있다. 메모리 장치(2200)의 타입 정보는, 호스트(1000)로부터 수신될 수 있다.
CPU(2150)는, 상태 체크 커맨드 결정부(2151) 및 상태 체크 수행부(2155)를 포함할 수 있다.
상태 체크 커맨드 결정부(2151)는, 복수의 상태 체크 커맨드 중 메모리 장치(2200)가 지원하는 상태 체크 커맨드를 확인할 수 있다. 예를 들어, 상태 체크 커맨드 결정부(2151)는, 제 1 테이블(2152)을 참조하여, 호스트(1000)로부터 수신된 메모리 장치(2200)의 타입 정보에 대응하는 상태 체크 커맨드를 확인할 수 있다. 상태 체크 커맨드 결정부(2151)는, 확인된 상태 체크 커맨드에 대한 정보를 상태 체크 수행부(2155)에게 제공할 수 있다. 상태 체크 커맨드에 대한 정보는, 해당 상태 체크 커맨드를 식별할 수 있는 정보를 의미할 수 있다.
상태 체크 수행부(2155)는, 상태 체크 커맨드 결정부(2151)로부터 메모리 장치(2200)가 지원하는 상태 체크 커맨드에 대한 정보를 수신하고, 해당 상태 체크 커맨드를 이용하여 메모리 장치(2200)에 대한 상태 체크를 수행할 수 있다. 예를 들어, 상태 체크 수행부(2155)는, 상태 체크 커맨드 결정부(2151)에서 확인된 상태 체크 커맨드를 생성하고, 생성된 상태 체크 커맨드를 메모리 장치(2200)에게 전송할 수 있다.
상태 체크 수행부(2155)는, 상태 체크 커맨드에 대응하여 메모리 장치(2200)로부터 수신된 상태 정보를 확인하여 상태 체크 결과를 확인할 수 있다. 상태 체크 결과의 확인은, 제 2 테이블(2156) 및 제 3 테이블(2158) 중 적어도 하나를 기반으로 이루어질 수 있다. 예를 들어, 상태 체크 수행부(2155)는, 제 2 테이블(2156)을 참조하여, 메모리 장치(2200)로부터 수신된 상태 정보의 각 비트가 나타내는 바를 확인할 수 있다. 예를 들어, 상태 체크 수행부(2155)는, 제 3 테이블(2158)을 참조하여, 메모리 장치(2200)로부터 수신된 상태 정보 중 참조 비트에 해당하는 비트를 확인하여 상태 체크 결과를 확인할 수 있다.
상태 체크 수행부(2155)는, 메모리 장치(2200)에서 지원하는 상태 체크 커맨드가 복수 개인 경우, 해당 복수의 상태 체크 커맨드 중 어느 하나의 상태 체크 커맨드를 선택하여 메모리 장치(2200)에 대한 상태 체크를 수행할 수 있다. 실시 예에 따라, 상태 체크 수행부(2155)는, 메모리 장치(2200)에서 지원하는 복수의 상태 체크 커맨드들 중 어느 하나의 상태 체크 커맨드를 이용한 상태 체크를 수행하고, 그 결과에 따라 다른 하나의 상태 체크 커맨드를 이용한 상태 체크를 더 수행할 수 있다.
SRAM(2160)은, 메모리 컨트롤러(2100)의 동작에 필요한 다양한 정보들을 저장하는 저장부(storage unit)로서 사용될 수 있다.
도 3은 도 1 및 도 2에 도시된 메모리 장치를 설명하기 위한 예시도이다.
메모리 장치(2200)는, 제어 로직(2210), 주변 회로들(2220) 및 메모리 셀 어레이(2240)를 포함할 수 있다. 주변 회로들(2220)은, 전압 생성 회로(voltage generation circuit; 2222), 로우 디코더(row decoder; 2224), 입출력 회로(input/output circuit; 2226), 칼럼 디코더(column decoder; 2228), 페이지 버퍼 그룹(page buffer group; 2232) 및 전류 센싱 회로(current sensing circuit; 2234)를 포함할 수 있다.
제어 로직(2210)은, 도 2에 도시된 메모리 컨트롤러(2100) 메모리 컨트롤러(2100)의 제어 하에 주변 회로들(2220)을 제어할 수 있다. 제어 로직(2210)은, 입출력 회로(2226)를 통하여 메모리 컨트롤러(2100)로부터 수신되는 커맨드(CMD) 및 어드레스(ADD)에 응답하여 주변 회로들(2220)을 제어할 수 있다. 예를 들어, 제어 로직(2210)은, 커맨드(CMD) 및 어드레스(ADD)에 응답하여 동작 신호(OP_CMD), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIGNALS) 및 허용 비트(VRY_BIT<#>)를 출력할 수 있다. 제어 로직(2210)은, 전류 센싱 회로(2234)로부터 수신되는 패스 신호(PASS) 또는 페일 신호(FAIL)에 응답하여 검증 동작이 패스되었는지 또는 페일되었는지 여부를 판단할 수 있다.
메모리 컨트롤러(2100)로부터 수신되는 커맨드(CMD)는 동작 커맨드 및 상태 체크 커맨드를 포함할 수 있다. 동작 커맨드는, 프로그램 동작 커맨드, 소거 동작 커맨드, 리드 동작 커맨드, 서스펜드 동작 커맨드 및 카피백 동작 커맨드를 포함할 수 있다.
제어 로직(2210)은, 메모리 컨트롤러(2100)로부터 수신되는 커맨드에 따라 동작을 수행하면서 상태 레지스터(2212)에 메모리 장치(2200)의 상태를 기록할 수 있다. 예를 들어, 메모리 컨트롤러(2100)로부터 수신된 커맨드가 프로그램 동작 커맨드인 경우, 해당 프로그램 동작 커맨드가 성공적으로 수행되었는지 또는 실패하였는지에 대한 정보를 상태 레지스터(2212)에 기록할 수 있다.
제어 로직(2210)은, 메모리 컨트롤러(2100)로부터 상태 체크 커맨드가 수신되는 경우 상태 레지스터(2212)에 저장된 상태 체크 비트들을 메모리 컨트롤러(2100)에게 전송할 수 있다.
주변 회로들(2220)은, 제어 로직(2210)의 제어 하에, 메모리 셀 어레이(2240)에 데이터를 저장하기 위한 프로그램 동작(program operation), 메모리 셀 어레이(2240)에 저장된 데이터를 출력하기 위한 리드 동작(read operation), 메모리 셀 어레이(2240)에 저장된 데이터를 소거하기 위한 소거 동작(erase operation)을 수행할 수 있다. 또한, 주변 회로들(2220)은 현재 수행 중인 동작을 멈추는 서스펜드 동작 또는 데이터를 다른 메모리 블록으로 카피(copy)하는 카피백(copy-back) 동작을 수행할 수 있다.
전압 생성 회로(2222)는, 제어 로직(2210)으로부터 수신되는 동작 신호(OP_CMD)에 응답하여 프로그램 동작, 리드 동작 및 소거 동작에 이용되는 다양한 동작 전압들(Vop)을 생성할 수 있다. 예를 들어, 전압 생성 회로(2222)는, 프로그램 전압, 검증 전압, 패스 전압, 보상 프로그램 전압, 리드 전압, 소거 전압 및 턴-온 전압 등을 생성할 수 있다.
로우 디코더(2224)는, 제어 로직(2210)으로부터 수신되는 로우 어드레스(RADD)에 응답하여 메모리 셀 어레이(2240)에 포함된 메모리 블록들 중 선택된 메모리 블록에 연결된 로컬 라인들(Local Lines; LL)에 동작 전압들(Vop)을 전달할 수 있다. 로컬 라인들(LL)은, 로컬 워드 라인들(local word lines), 로컬 드레인 셀렉트 라인들(local drain select lines) 및 로컬 소스 셀렉트 라인들(local source select lines)을 포함할 수 있다. 이 외에도, 로컬 라인들(LL)은 소스 라인(source line) 등 메모리 블록에 연결된 다양한 라인들을 포함할 수 있다.
입출력 회로(2226)는, 입출력 라인들(DQ)을 통해 메모리 컨트롤러로부터 수신되는 커맨드(CMD) 및 어드레스(ADD)를 제어 로직(2210)에 전달하거나, 칼럼 디코더(2228)와 데이터를 주고 받을 수 있다.
칼럼 디코더(2228)는, 제어 로직(2210)으로부터 수신되는 칼럼 어드레스(CADD)에 응답하여 입출력 회로(2226)와 페이지 버퍼 그룹(2232) 사이에서 데이터를 전달할 수 있다. 예를 들어, 칼럼 디코더(2228)는, 데이터 라인들(DL)을 통해 페이지 버퍼들(PB1~PBI)과 데이터를 주고 받거나, 칼럼 라인들(CL)을 통해 입출력 회로(2226)와 데이터를 주고 받을 수 있다.
페이지 버퍼 그룹(2232)은, 메모리 셀 어레이(2240)에 포함된 메모리 블록들에 공통으로 연결된 비트 라인들(BL1~BLI)에 연결될 수 있다. 페이지 버퍼 그룹(2232)은, 비트 라인들(BL1~BLI)에 연결된 복수의 페이지 버퍼들(PB1~PBI)을 포함할 수 있다. 예를 들어, 각각의 비트 라인마다 하나의 페이지 버퍼가 연결될 수 있다. 페이지 버퍼들(PB1~PBI)은, 제어 로직(2210)으로부터 수신되는 페이지 버퍼 제어 신호들(PBSIGNALS)에 응답하여 동작할 수 있다. 예를 들어, 페이지 버퍼들(PB1~PBI)은, 프로그램 동작 시 메모리 컨트롤러로부터 수신된 프로그램 데이터를 임시로 저장하고, 프로그램 데이터에 따라 비트 라인들(BL1~BLI)에 인가되는 전압을 조절할 수 있다. 또한, 페이지 버퍼들(PB1~PBI)은, 리드 동작 시 비트 라인들(BL1~BLI)을 통하여 수신되는 데이터를 임시로 저장하거나, 비트 라인들(BL1~BLI)의 전압 또는 전류를 센싱할 수 있다. 전류 센싱 회로(2234)는, 리드 동작 또는 검증 동작 시 제어 로직(2210)으로부터 수신되는 허용 비트(VRY_BTI<#>)에 응답하여 기준 전류를 생성하고, 기준 전류에 의하여 생성된 기준 전압과 페이지 버퍼 그룹(2232)으로부터 수신되는 센싱 전압(VPB)을 비교하여 패스 신호(PASS) 또는 페일 신호(FAIL)를 출력할 수 있다.
메모리 셀 어레이(2240)는, 데이터가 저장되는 복수의 메모리 블록들(MB1~MBk)을 포함할 수 있다. 메모리 블록들(MB1~MBk)에는 사용자 데이터(user data) 및 메모리 장치(2200)의 동작에 필요한 다양한 정보가 저장될 수 있다. 메모리 블록들(MB1~MBk)은, 2차원 구조로 구현되거나 3차원 구조로 구현될 수 있으며, 서로 동일하게 구성될 수 있다.
도 4는 2차원 구조의 메모리 블록을 설명하기 위한 예시도이다.
메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있으며, 도 4에는 설명의 편의를 위하여 복수의 메모리 블록들 중 어느 하나의 메모리 블록(MBk)이 도시되었다.
메모리 블록(MBk)은 비트 라인들(BL1~BLI)과 소스 라인(source line; SL) 사이에 연결된 복수의 셀 스트링(cell string; ST)들을 포함할 수 있다. 셀 스트링(cell string; ST)들은 비트 라인들(BL1~BLI)에 각각 연결될 수 있고, 소스 라인(SL)에는 공통으로 연결될 수 있다. 셀 스트링(ST)들은 서로 유사한 구조를 가지므로, 이하에서는 제 1 비트 라인(BL1)에 연결된 셀 스트링(ST)을 예로 들어 설명한다.
셀 스트링(ST)은, 소스 라인(SL)과 제 1 비트 라인(BL1) 사이에서 서로 직렬로 연결된 소스 셀렉트 트랜지스터(source select transistor; SST), 제 1 내지 제 n 메모리 셀들(memory cells; F1~Fn; n은 양의 정수) 및 드레인 셀렉트 트랜지스터(drain select transistor; DST)를 포함할 수 있다. 소스 셀렉트 트랜지스터(SST) 및 드레인 셀렉트 트랜지스터들(DST)의 개수는, 도 5에 도시된 개수로 한정되지 않는다.
소스 셀렉트 트랜지스터(SST)는, 소스 라인(SL)과 제 1 메모리 셀(F1) 사이에 연결될 수 있다. 제 1 내지 제 n 메모리 셀들(F1~Fn)은, 소스 셀렉트 트랜지스터(SST)와 드레인 셀렉트 트랜지스터(DST) 사이에서 서로 직렬로 연결될 수 있다. 드레인 셀렉트 트랜지스터(DST)는, 제 n 메모리 셀(Fn)과 제 1 비트 라인(BL1) 사이에 연결될 수 있다. 도면에는 도시되지 않았으나, 메모리 셀들(F1~Fn) 사이, 또는 소스 셀렉트 트랜지스터(SST)와 드레인 셀렉트 트랜지스터(DST) 사이에 더미 셀들(dummy cells)이 더 연결될 수도 있다.
셀 스트링(ST)들에 포함된 소스 셀렉트 트랜지스터(SST)들의 게이트들은, 소스 셀렉트 라인(source select line; SSL)에 연결될 수 있다. 제 1 내지 제 n 메모리 셀들(F1~Fn)의 게이트들은, 제 1 내지 제 n 워드라인들(word lines; WL1~WLn)에 연결될 수 있다. 드레인 셀렉트 트랜지스터들(DST)의 게이트들은, 드레인 셀렉트 라인(drain select lines; DSL)에 연결될 수 있다. 여기서, 워드 라인들(WL1~WLn) 각각에 연결된 메모리 셀들의 그룹을 물리 페이지(physical page; PPG)라 할 수 있다. 예를 들어, 서로 다른 셀 스트링(ST)들에 포함된 메모리 셀들(F1~Fn) 중 제 1 워드 라인(WL1)에 연결된 제 1 메모리 셀(F1)들의 그룹이 하나의 물리 페이지(PPG)가 될 수 있다. 멀티 레벨 셀(multi-level cell; MLC) 방식이 이용되는 경우, 하나의 물리 페이지(PPG)에 복수의 논리 페이지들이 포함될 수 있다.
도 5는 3차원 구조의 메모리 블록의 일 예를 설명하기 위한 예시도이다.
메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있으며, 도 5에는 설명의 편의를 위하여 복수의 메모리 블록들 중 어느 하나의 메모리 블록(MBk)을 도시하였다.
도 5를 참조하면, 3차원 구조의 메모리 블록(MBk)은, 기판 상에 기판에 수직한 방향(Z 방향)으로 I자 형태로 형성될 수 있다. 메모리 블록(MBk)은, 비트 라인(BL)들과 소스 라인(SL) 사이에 배열된 복수의 셀 스트링(ST)들을 포함할 수 있다. 실시 예에 따라, 소스 라인(SL) 대신 웰(well)이 형성될 수도 있다. 이러한 구조는 BiCS(Bit Cost Scalable)라고 언급될 수 있다. 예를 들어, 소스 라인(SL)이 기판의 상부에서 기판에 평행하게 형성된 경우, BiCS 구조를 갖는 셀 스트링(ST)들은 소스 라인(SL)의 상부에서 기판에 수직한 방향(Z 방향)으로 형성될 수 있다.
구체적으로, 셀 스트링(ST)들은 제 1 방향(X 방향) 및 제 2 방향(Y 방향)으로 각각 배열될 수 있다. 셀 스트링(ST)들은 서로 이격되어 적층된 소스 셀렉트 라인들(SSL), 워드 라인들(WL) 및 드레인 셀렉트 라인들(DSL)을 포함할 수 있다. 소스 셀렉트 라인(SSL)들, 워드 라인들(WL) 및 드레인 셀렉트 라인(DSL)들의 개수는 도면에 도시된 개수에 한정되지 않으며, 실시 예에 따라 달라질 수 있다. 셀 스트링(ST)들은 수직 채널막(CH)들과 비트 라인(BL)들을 포함할 수 있다. 수직 채널막(CH)들은 소스 셀렉트 라인(SSL)들, 워드라인들(WL) 및 드레인 셀렉트 라인(DSL)들을 수직으로 관통할 수 있다. 비트 라인들(BL)은 드레인 셀렉트 라인(DSL)들의 상부로 돌출된 수직 채널막(CH)들의 상부에 접하며, 제 2 방향(Y 방향)으로 연장될 수 있다. 메모리 셀들은 워드 라인(WL)들과 수직 채널막(CH)들 사이에 형성될 수 있다. 비트 라인(BL)들과 수직 채널막(CH)들 사이에는 콘택 플러그(contact plug; CT)가 더 형성될 수도 있다.
도 6은 3차원 구조의 메모리 블록의 다른 예를 설명하기 위한 예시도이다.
메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있으며, 도 6에는 설명의 편의를 위하여 복수의 메모리 블록들 중 어느 하나의 메모리 블록(MBk)을 도시하였다.
도 6을 참조하면, 3차원 구조의 메모리 블록(MBk)은, 기판 상에 기판에 수직한 방향(Z 방향)으로 U자 형태로 형성될 수 있다. 메모리 블록(MBk)은, 비트 라인(BL)들과 소스 라인(SL) 사이에 연결되며 쌍을 이루는 소스 스트링들(ST_S)과 드레인 스트링들(ST_D)을 포함할 수 있다. 소스 스트링들(ST_S)과 드레인 스트링들(ST_D)은, 파이프 게이트(Pipe Gate; PG)를 통해 서로 연결되어 U자 구조를 이룰 수 있다. 파이프 게이트(PG)는, 파이프 라인(Pipe Line; PL) 내에 형성될 수 있다. 구체적으로, 소스 스트링들(ST_S)은 소스 라인(SL)들과 파이프 라인(PL) 사이에서 기판에 대하여 수직하게 형성될 수 있고, 드레인 스트링들(ST_D)은 비트 라인들(BL)과 파이프 라인(PL) 사이에서 기판에 대하여 수직하게 형성될 수 있다. 이러한 구조는 P-BiCS(Pipe-shaped Bit Cost Scalable)라고 언급될 수 있다.
구체적으로, 드레인 스트링들(ST_D) 및 소스 스트링들(ST_S)은 제 1 방향(X 방향) 및 제 2 방향(Y 방향)으로 각각 배열될 수 있다. 드레인 스트링들(ST_D)과 소스 스트링들(ST_S)은, 제 2 방향(Y 방향)을 따라 서로 교대로 배열될 수 있다. 드레인 스트링들(ST_D)은, 서로 이격되어 적층된 워드 라인들(WL) 및 드레인 셀렉트 라인(DSL)을 포함할 수 있다. 드레인 스트링들(ST_D)은, 워드 라인들(WL) 및 드레인 셀렉트 라인(DSL)을 수직으로 관통하는 드레인 수직 채널막(D_CH)들을 포함할 수 있다. 소스 스트링들(ST_S)은, 서로 이격되어 적층된 워드 라인들(WL) 및 소스 셀렉트 라인(SSL)을 포함할 수 있다. 소스 스트링들(ST_S)은, 워드 라인들(WL) 및 소스 셀렉트 라인(SSL)을 수직으로 관통하는 소스 수직 채널막(S_CH)들을 포함할 수 있다. 드레인 수직 채널막(D_CH)들과 소스 수직 채널막(S_CH)들은 파이프 라인(PL) 내에서 파이프 게이트(PG)에 의해 서로 연결될 수 있다. 비트 라인(BL)들은, 드레인 셀렉트 라인(DSL)의 상부로 돌출된 드레인 수직 채널막(D_CH)들의 상부에 접하며 제 2 방향(Y 방향)으로 연장될 수 있다.
도 7은 본 발명의 일 실시 예에 따른 상태 체크 수행 방법을 설명하기 위한 흐름도이다.
도 7을 참조하여 설명하는 실시 예는, 도 1 내지 도 6을 참조하여 설명한 메모리 시스템에 적용될 수 있다. 실시 예에 따라, 도 7에 도시된 단계들 중 적어도 하나는 생략될 수 있다. 실시 예에 따라, 도 7에 도시된 단계들의 순서는 바뀔 수 있다.
단계 '701'에서, 상태 체크 커맨드 결정부는, 메모리 장치가 지원하는 상태 체크 커맨드를 확인할 수 있다. 예를 들어, 상태 체크 커맨드 결정부는, 호스트로부터 수신된 메모리 장치의 타입 정보와 제 1 테이블을 기반으로 해당 메모리 장치가 지원하는 상태 체크 커맨드를 확인할 수 있다.
단계 '703' 내지 단계 '711'에서, 상태 체크 수행부는, 상태 체크 커맨드 결정부에서 확인된 상태 체크 커맨드를 이용하여 메모리 장치에 대한 상태 체크를 수행할 수 있다.
단계 '703'에서, 상태 체크 수행부는, 메모리 장치가 지원하는 상태 체크 커맨드를 생성하고, 생성된 상태 체크 커맨드를 메모리 장치에게 전송할 수 있다. 메모리 장치가 지원하는 상태 체크 커맨드가 복수 개인 경우, 해당 복수 개의 상태 체크 커맨드들 중 어느 하나의 상태 체크 커맨드를 선택하여 선택된 상태 체크 커맨드를 메모리 장치에게 전송할 수 있다.
단계 '705'에서, 상태 체크 수행부는, 상태 체크 커맨드에 대응하여 메모리 장치로부터 상태 정보를 수신할 수 있다.
단계 '707'에서, 상태 체크 수행부는, 수신된 상태 정보 중 확인해야 할 상태 정보를 결정할 수 있다. 예를 들어, 상태 체크 수행부는, 제 3 테이블을 참조하여, 메모리 장치에게 전송한 상태 체크 커맨드에 대응하는 상태 정보 중 확인해야 할 상태 정보를 결정할 수 있다. 실시 예에 따라, 상태 체크 수행부는, 상태 체크의 대상이 되는 동작의 종류를 더 고려하여 확인해야 할 상태 정보를 결정할 수 있다. 예를 들어, 상태 체크 수행부는, 상태 체크 커맨드를 전송하기 이전에, 동작 커맨드 큐(queue)를 참조하여 메모리 장치에게 전송된 동작 커맨드의 종류를 확인할 수 있다. 이어서, 상태 체크 수행부는 제 3 테이블을 참조하여, 해당 동작에 대응하여 확인하여야 할 상태 정보를 결정할 수 있다.
단계 '709'에서, 상태 체크 수행부는, 결정된 상태 정보를 확인하여 상태 체크 결과를 확인할 수 있다. 예를 들어, 상태 체크 수행부는, 제 2 테이블을 참조하여, 메모리 장치로부터 수신된 상태 정보 중 참조 비트에 해당하는 비트에 대한 정의를 확인함으로써 메모리 장치에 대한 상태 체크 결과를 확인할 수 있다.
한편, 전술한 바와 같이, 상태 체크 수행부는, 메모리 장치가 지원하는 상태 체크 커맨드가 복수 개인 경우, 해당 복수 개의 상태 체크 커맨드들 중 어느 하나의 상태 체크 커맨드를 이용하여 메모리 장치에 대한 상태 체크를 수행할 수 있다. 이러한 경우, 상태 체크 수행부는, 해당 어느 하나의 상태 체크 커맨드를 이용한 상태 체크 수행 결과에 따라 다른 하나의 상태 체크 커맨드를 이용하여 메모리 장치에 대한 상태 체크를 수행할 수 있다. 이와 관련하여서는, 도 11을 참조하여 후술한다.
도 8은 본 발명의 일 실시 예에 따른 제 1 테이블을 설명하기 위한 예시도이다.
제 1 테이블에는, 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드를 지원하는 메모리 장치의 타입 정보가 맵핑될 수 있다.
도 8을 참조하면, A 타입에 해당하는 메모리 장치는 제 1 상태 체크 커맨드(70h), 제 2 상태 체크 커맨드(78h) 및 제 N 상태 체크 커맨드(7Ah)를 지원하고, B 타입에 해당하는 메모리 장치는 제 2 상태 체크 커맨드(78h)를 지원함을 알 수 있다.
만약, 호스트로부터 수신된 메모리 장치의 타입 정보가 A 타입을 나타내는 경우, 상태 체크 커맨드 결정부는, 제 1 상태 체크 커맨드(70h), 제 2 상태 체크 커맨드(78h) 및 제 N 상태 체크 커맨드(7Ah)를 해당 메모리 장치에 적용할 상태 체크 커맨드로 결정하고, 해당 상태 체크 커맨드들 중 적어도 하나의 상태 체크 커맨드를 이용하여 메모리 장치에 대한 상태 체크를 수행할 수 있다.
도 9는 본 발명의 일 실시 예에 따른 제 2 테이블을 설명하기 위한 예시도이다.
제 2 테이블에는, 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드에 대응하는 상태 정보의 정의가 기록될 수 있다.
도 9를 참조하여 설명하는 실시 예에서, 메모리 장치는 4개의 플레인(plane)을 포함한다고 가정한다.
제 1 상태 체크 커맨드(70h)에 대응하는 상태 정보 중 제 1 입출력 라인(DQ0)을 통해 수신되는 비트는, 4개의 플레인들 중 적어도 하나의 플레인 상에서 가장 최근에 수행된 동작의 패스(pass) 또는 페일(fail)을 나타낼 수 있다.
제 1 상태 체크 커맨드(70h)에 대응하는 상태 정보 중 제 2 입출력 라인(DQ1)을 통해 수신되는 비트는, 4개의 플레인들 중 적어도 하나의 플레인에 수행된 이전 동작의 패스 또는 페일을 나타낼 수 있다.
제 1 상태 체크 커맨드(70h)에 대응하는 상태 정보 중 제 3 입출력 라인(DQ2) 및 제 4 입출력 라인(DQ3)을 통해 수신되는 비트는, 추후 사용을 위하여 예약된 비트일 수 있다.
제 1 상태 체크 커맨드(70h)에 대응하는 상태 정보 중 제 5 입출력 라인(DQ4)를 통해 수신되는 비트는, 프로그램 동작 또는 소거 동작이 서스펜드된 상태인지 여부를 나타낼 수 있다.
제 1 상태 체크 커맨드(70h)에 대응하는 상태 정보 중 제 6 입출력 라인(DQ5)을 통해 수신되는 비트는, 4개의 플레인들 중 적어도 하나의 플레인 상에서 어레이 동작(array operation)이 수행 중인지 여부를 나타낼 수 있다.
제 1 상태 체크 커맨드(70h)에 대응하는 상태 정보 중 제 7 입출력 라인(DQ6)을 통해 수신되는 비트는, 메모리 장치가 새로운 동작 커맨드를 수신할 준비가 되었는지 여부를 나타낼 수 있다.
제 1 상태 체크 커맨드(70h)에 대응하는 상태 정보 중 제 8 입출력 라인(DQ7)을 통해 수신되는 비트는, OTP(One Time Programmable) 영역이 보호되었는지 여부를 나타낼 수 있다.
제 2 상태 체크 커맨드(78h) 및 제 N 상태 체크 커맨드(7Ah)에 대한 상세한 설명은 생략한다.
한편, 각각의 상태 체크 커맨드에 대응하는 상태 정보는 서로 다른 상태 체크 결과를 나타낼 수 있다. 예를 들어, 제 1 상태 체크 커맨드(70h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트와 제 2 상태 체크 커맨드(78h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트는 서로 다른 상태 체크 결과를 나타낼 수 있다. 예를 들어, 전술한 바와 같이, 제 1 상태 체크 커맨드(70h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트는 메모리 장치의 플레인들 중 적어도 하나의 플레인에서 수행된 가장 최근의 동작이 성공 또는 실패하였는지 여부를 나타낼 수 있다. 반면, 제 2 상태 체크 커맨드(78h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트는, 메모리 장치의 플레인들 중 선택된 플레인에서 수행된 가장 최근의 동작이 성공 또는 실패하였는지 여부를 나타낼 수 있다. 즉, 동일한 상태 체크 비트라 하더라도, 상태 체크 커맨드의 종류에 따라 의미하는 상태 체크 결과가 상이할 수 있다.
이에, 상태 체크 수행부는, 제 2 테이블을 참조하여, 메모리 장치로부터 수신된 상태 정보가 의미하는 바를 확인함으로써 상태 체크 결과를 확인할 수 있다.
도 10은 본 발명의 일 실시 예에 따른 제 3 테이블을 설명하기 위한 예시도이다.
제 3 테이블에는, 복수의 상태 체크 커맨드 각각에 대하여 동작이 맵핑되고, 각각의 동작에 대응하여 확인하여야 할 참조 비트가 맵핑될 수 있다.
예를 들어, 제 1 상태 체크 커맨드(70h)가 프로그램 동작 이후에 발행된 경우를 가정한다. 이러한 경우, 제 3 테이블은, 제 1 입출력 라인(DQ0)을 통해 수신되는 비트, 제 2 입출력 라인(DQ1)을 통해 수신되는 비트, 제 4 입출력 라인(DQ5)을 통해 수신되는 비트 및 제 5 입출력 라인(DQ6)을 통해 수신되는 비트를 참조 비트로 정의한다. 따라서, 메모리 컨트롤러는, 제 1 상태 체크 커맨드(70h)에 대응하여 메모리 장치로부터 수신된 상태 정보 중 제 1 입출력 라인(DQ0)을 통해 수신된 비트, 제 2 입출력 라인(DQ1)을 통해 수신된 비트, 제 4 입출력 라인(DQ5)을 통해 수신된 비트 및 제 5 입출력 라인(DQ6)을 통해 수신된 비트를 확인하여 프로그램 동작에 대응하는 상태 체크 결과를 확인할 수 있다.
예를 들어, 제 1 상태 체크 커맨드(70h)가 리드 동작 이후에 발행된 경우를 가정한다. 이러한 경우, 제 3 테이블은, 제 5 입출력 라인(DQ6)을 통해 수신되는 비트를 참조 비트로 정의한다. 따라서, 메모리 컨트롤러는, 제 1 상태 체크 커맨드(70h)에 대응하여 메모리 장치로부터 수신된 상태 정보 중 제 5 입출력 라인(DQ6)을 통해 수신된 비트를 확인하여 리드 동작에 대응하는 상태 체크 결과를 확인할 수 있다.
예를 들어, 제 1 상태 체크 커맨드(70h)가 서스펜드 동작 이후에 발행된 경우를 가정한다. 이러한 경우, 제 3 테이블은, 제 3 입출력 라인(DQ4)을 통해 수신되는 비트를 참조 비트로 정의한다. 따라서, 메모리 컨트롤러는, 제 1 상태 체크 커맨드(70h)에 대응하여 메모리 장치로부터 수신된 상태 정보 중 제 3 입출력 라인(DQ4)을 통해 수신된 비트를 확인하여 서스펜드 동작에 대응하는 상태 체크 결과를 확인할 수 있다.
제 2 상태 체크 커맨드(78h) 및 제 N 상태 체크 커맨드(7Ah)에 대한 상세한 설명은 생략한다.
한편, 전술한 바와 같이, 하나의 메모리 장치가 지원하는 상태 체크 커맨드는 복수 개일 수 있으며, 이러한 경우, 메모리 컨트롤러는 메모리 장치가 지원하는 복수의 상태 체크 커맨드 중 어느 하나를 선택하여 메모리 장치에 대한 상태 체크를 수행할 수 있다. 이러한 선택은, 랜덤하게 이루어지거나 미리 지정된 우선 순위에 따라 이루어질 수 있다. 예를 들어, 메모리 장치가 제 1 상태 체크 커맨드(70h) 및 제 2 상태 체크 커맨드(78h)를 지원하며, 제 1 상태 체크 커맨드(70h)의 우선 순위가 제 2 상태 체크 커맨드(78h)의 우선 순위에 비하여 높게 설정된 경우를 가정하자. 이러한 경우, 메모리 컨트롤러는, 제 1 상태 체크 커맨드(70h)를 이용하여 메모리 장치에 대한 상태 체크를 수행할 수 있다. 이러한 경우, 메모리 컨트롤러는, 제 1 상태 체크 커맨드(70h)를 이용한 상태 체크 수행 결과에 따라 제 2 상태 체크 커맨드(78h)를 이용한 상태 체크를 더 수행할지 여부를 결정할 수 있다. 이를 도 11을 참조하여 살펴본다.
도 11은 도 9에 도시된 상태 정보를 상세히 설명하기 위한 예시도이다.
설명의 편의를 위하여, 도 11에는 도 9에 도시된 상태 정보 중 일부만을 도시하였다.
제 1 상태 체크 커맨드(70h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트는, 메모리 장치의 플레인들(플레인 0, 플레인 1, 플레인 2 및 플레인 3) 중 적어도 하나의 플레인에서 수행된 가장 최근의 동작이 성공 또는 실패하였는지 여부를 나타낼 수 있다. 예를 들어, 제 1 상태 체크 커맨드(70h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트가 '0'인 경우, 메모리 장치의 플레인들에서 수행된 가장 최근의 동작이 성공하였음을 나타낸다. 예를 들어, 제 1 상태 체크 커맨드(70h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트가 '1'인 경우, 메모리 장치의 플레인들 중 적어도 하나의 플레인에서 수행된 가장 최근의 동작이 실패하였음을 나타낼 수 있다.
제 1 상태 체크 커맨드(70h)에 대응하여 제 2 입출력 라인(DQ1)을 통해 수신된 비트는, 메모리 장치의 플레인들(플레인 0, 플레인 1, 플레인 2 및 플레인 3) 중 적어도 하나의 플레인에서 수행된 이전의 동작이 성공 또는 실패하였는지 여부를 나타낼 수 있다. 예를 들어, 제 1 상태 체크 커맨드(70h)에 대응하여 제 2 입출력 라인(DQ1)을 통해 수신된 비트가 '0'인 경우, 메모리 장치의 플레인들에서 수행된 이전의 동작이 성공하였음을 나타낸다. 예를 들어, 제 1 상태 체크 커맨드(70h)에 대응하여 제 2 입출력 라인(DQ1)을 통해 수신된 비트가 '1'인 경우, 메모리 장치의 플레인들 중 적어도 하나의 플레인에서 수행된 이전의 동작이 실패하였음을 나타낼 수 있다.
제 2 상태 체크 커맨드(78h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트는, 메모리 장치의 플레인들(플레인 0, 플레인 1, 플레인 2 및 플레인 3) 중 선택된 플레인에서 수행된 가장 최근의 동작이 성공 또는 실패하였는지 여부를 나타낼 수 있다. 즉, 제 2 상태 체크 커맨드(78h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트는, 제 1 상태 체크 커맨드(70h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트와는 다르게 하나의 플레인에 해당하는 상태 체크 결과를 나타낼 수 있다. 예를 들어, 제 2 상태 체크 커맨드(78h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트가 '0'인 경우, 메모리 장치의 선택된 플레인에서 수행된 가장 최근의 동작이 성공하였음을 나타낸다. 예를 들어, 제 2 상태 체크 커맨드(78h)에 대응하여 제 1 입출력 라인(DQ0)을 통해 수신된 비트가 '1'인 경우, 메모리 장치의 선택된 플레인에서 수행된 가장 최근의 동작이 실패하였음을 나타낼 수 있다.
제 2 상태 체크 커맨드(78h)에 대응하여 제 2 입출력 라인(DQ1)을 통해 수신된 비트는, 메모리 장치의 플레인들(플레인 0, 플레인 1, 플레인 2 및 플레인 3) 중 선택된 플레인에서 수행된 이전의 동작이 성공 또는 실패하였는지 여부를 나타낼 수 있다. 즉, 제 2 상태 체크 커맨드(78h)에 대응하여 제 2 입출력 라인(DQ1)을 통해 수신된 비트는, 제 1 상태 체크 커맨드(70h)에 대응하여 제 2 입출력 라인(DQ1)을 통해 수신된 비트와는 다르게 하나의 플레인에 해당하는 상태 체크 결과를 나타낼 수 있다. 예를 들어, 제 2 상태 체크 커맨드(78h)에 대응하여 제 2 입출력 라인(DQ1)을 통해 수신된 비트가 '0'인 경우, 메모리 장치의 선택된 플레인에서 수행된 이전의 동작이 성공하였음을 나타낸다. 예를 들어, 제 2 상태 체크 커맨드(78h)에 대응하여 제 2 입출력 라인(DQ1)을 통해 수신된 비트가 '1'인 경우, 메모리 장치의 선택된 플레인에서 수행된 이전의 동작이 실패하였음을 나타낼 수 있다.
도 11에 도시된 바와 같이, 제 1 상태 체크 커맨드(70h) 및 제 2 상태 체크 커맨드(78h)에 대응하는 상태 정보에 대한 정의가 이루어진 상태에서, 메모리 장치가 제 1 상태 체크 커맨드(70h) 및 제 2 상태 체크 커맨드(78h)를 지원하는 경우를 가정하자. 이러한 경우, 메모리 컨트롤러는, 제 1 상태 체크 커맨드(70h)를 이용하여 메모리 장치에 대한 상태 체크를 수행할 수 있다. 제 1 상태 체크 커맨드(70h)를 이용하여 상태 체크를 수행한 결과 제 1 입출력 라인(DQ0)을 통해 수신된 비트가 '1'인 경우, 즉 메모리 장치의 플레인들 중 적어도 하나의 플레인에서 수행된 동작이 실패한 경우를 가정하자. 이러한 경우, 메모리 컨트롤러는 어느 플레인에서 수행된 동작이 실패하였는지 여부를 확인하여 에러 처리 등을 수행할 필요가 있다. 따라서, 이러한 경우, 메모리 컨트롤러는, 제 2 상태 체크 커맨드(78h)를 이용한 상태 체크를 더 수행함으로써 메모리 장치의 플레인들 중 어느 플레인에서 수행된 동작이 실패하였는지 여부를 확인할 수 있다.
도 12는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 12를 참조하면, 메모리 시스템(Memory System; 30000)은, 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet) PC(personal computer), PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다. 메모리 시스템(30000)은, 메모리 장치(2200)와 상기 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)를 포함할 수 있다. 도 12에 도시된 메모리 장치(2200)는, 도 1 및 도 2에 도시된 메모리 장치(2200)에 대응될 수 있다. 도 12에 도시된 메모리 컨트롤러(2100)는, 도 1 및 도 2에 도시된 메모리 컨트롤러(2100) 에 대응될 수 있다.
메모리 컨트롤러(2100)는, 프로세서(Processor; 3100)의 제어에 따라 메모리 장치(2200)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작 등을 제어할 수 있다.
메모리 장치(2200)에 프로그램된 데이터는 메모리 컨트롤러(2100)의 제어에 따라 디스플레이(Display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(RADIO TRANSCEIVER; 3300)는, 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는, 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(3100)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(3100)는, 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 메모리 컨트롤러(2100) 또는 디스플레이(3200)로 전송할 수 있다. 메모리 컨트롤러(2100)는, 프로세서(3100)에 의하여 처리(process)된 신호를 메모리 장치(2200)에 전송할 수 있다. 또한, 무선 송수신기(3300)는, 프로세서(3100)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(Input Device; 3400)는, 프로세서(3100)의 동작을 제어하기 위한 제어 신호 또는 프로세서(3100)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다. 프로세서(3100)는, 메모리 컨트롤러(2100)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
실시 예에 따라, 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)는, 프로세서(3100)의 일부로서 구현될 수도 있고, 프로세서(3100)와는 별도의 칩으로 구현될 수 있다.
도 13은 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 13을 참조하면, 메모리 시스템(Memory System; 40000)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
메모리 시스템(40000)은, 메모리 장치(2200)와 상기 메모리 장치(2200)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(2100)를 포함할 수 있다. 도 13에 도시된 메모리 장치(2200)는, 도 1 및 도 2에 도시된 메모리 장치(2200)에 대응될 수 있다. 도 13에 도시된 메모리 컨트롤러(2100)는, 도 1 및 도 2에 도시된 메모리 컨트롤러(2100) 에 대응될 수 있다.
프로세서(Processor; 4100)는, 입력 장치(Input Device; 4200)를 통하여 입력된 데이터에 따라 메모리 장치(2200)에 저장된 데이터를 디스플레이(Display; 4300)를 통하여 출력할 수 있다. 예컨대, 입력 장치(4200)는, 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
프로세서(4100)는, 메모리 시스템(40000)의 전반적인 동작을 제어할 수 있고 메모리 컨트롤러(2100)의 동작을 제어할 수 있다. 실시 예에 따라, 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)는, 프로세서(4100)의 일부로서 구현되거나, 프로세서(4100)와는 별도의 칩으로 구현될 수 있다.
도 14는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 14를 참조하면, 메모리 시스템(50000)은, 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 이동 전화기, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
메모리 시스템(50000)은, 메모리 장치(2200)와 상기 메모리 장치(2200)의 데이터 처리 동작, 예컨대 프로그램 동작, 소거 동작 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(2100)를 포함한다. 도 14에 도시된 메모리 장치(2200)는, 도 1 및 도 2에 도시된 메모리 장치(2200)에 대응될 수 있다. 도 14에 도시된 메모리 컨트롤러(2100)는, 도 1 및 도 2에 도시된 메모리 컨트롤러(2100) 에 대응될 수 있다.
메모리 시스템(50000)의 이미지 센서(Image Sensor; 5200)는, 광학 이미지를 디지털 신호들로 변환할 수 있고, 변환된 디지털 신호들은 프로세서(Processor; 5100) 또는 메모리 컨트롤러(2100)로 전송될 수 있다. 프로세서(5100)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(Display; 5300)를 통하여 출력되거나 메모리 컨트롤러(2100)를 통하여 메모리 장치(2200)에 저장될 수 있다. 또한, 메모리 장치(2200)에 저장된 데이터는, 프로세서(5100) 또는 메모리 컨트롤러(2100)의 제어에 따라 디스플레이(5300)를 통하여 출력될 수 있다.
실시 예에 따라, 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)는, 프로세서(5100)의 일부로서 구현되거나 프로세서(5100)와는 별개의 칩으로 구현될 수 있다.
도 15는 도 1 및 도 2에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 15를 참조하면, 메모리 시스템(Memory System; 70000)은, 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(70000)은 메모리 장치(2200), 메모리 컨트롤러(2100) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다. 도 15에 도시된 메모리 장치(2200)는, 도 1 및 도 2에 도시된 메모리 장치(2200)에 대응될 수 있다. 도 15에 도시된 메모리 컨트롤러(2100)는, 도 1 및 도 2에 도시된 메모리 컨트롤러(2100) 에 대응될 수 있다.
메모리 컨트롤러(2100)는, 메모리 장치(2200)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는, SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(7100)는, 호스트(HOST; 60000)의 프로토콜에 따라 호스트(60000)와 메모리 컨트롤러(2100) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는, USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는, 호스트(60000)가 이용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
메모리 시스템(70000)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(60000)의 호스트 인터페이스(6200)와 접속될 때, 호스트 인터페이스(6200)는 마이크로프로세서(Microprocessor; μP; 6100)의 제어에 따라 카드 인터페이스(7100)와 메모리 컨트롤러(2100)를 통하여 메모리 장치(2200)와 데이터 통신을 수행할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
호스트 : 1000
메모리 시스템 : 2000
메모리 컨트롤러 : 2100 메모리 장치 : 2200
CPU : 2150 상태 체크 커맨드 결정부 : 2151
상태 체크 수행부 : 2155
메모리 컨트롤러 : 2100 메모리 장치 : 2200
CPU : 2150 상태 체크 커맨드 결정부 : 2151
상태 체크 수행부 : 2155
Claims (19)
- 복수의 상태 체크 커맨드들 중 메모리 장치가 지원하는 상태 체크 커맨드를 확인하는 상태 체크 커맨드 결정부; 및
상기 확인된 상태 체크 커맨드를 이용하여 상기 메모리 장치에 대한 상태 체크 동작을 수행하는 상태 체크 수행부
를 포함하는 메모리 컨트롤러.
- 제 1 항에 있어서, 상기 상태 체크 커맨드 결정부는,
호스트로부터 수신된 상기 메모리 장치의 타입 정보를 기반으로 상기 메모리 장치가 지원하는 상기 상태 체크 커맨드를 확인하는
메모리 컨트롤러.
- 제 1 항에 있어서, 상기 상태 체크 커맨드 결정부는,
상기 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드를 지원하는 메모리 장치의 타입 정보가 맵핑된 제 1 테이블을 저장하며,
상기 제 1 테이블과 호스트로부터 수신된 상기 메모리 장치의 타입 정보를 기반으로 상기 메모리 장치가 지원하는 상기 상태 체크 커맨드를 확인하는
메모리 컨트롤러.
- 제 1 항에 있어서, 상기 상태 체크 수행부는,
상기 복수의 상태 체크 커맨드들 각각에 대응하는 상태 정보의 정의(definition)가 기록된 제 2 테이블을 저장하며,
상기 제 2 테이블과 상기 메모리 장치로부터 수신되는 상기 상태 정보를 기반으로 상태 체크 결과를 확인하는
메모리 컨트롤러.
- 제 1 항에 있어서, 상기 상태 체크 수행부는,
상기 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드에 대응하는 상태 정보 중 확인하여야 할 참조 비트가 맵핑된 제 3 테이블을 저장하며, 상기 메모리 장치로부터 수신되는 상태 정보 중 상기 참조 비트에 해당하는 비트를 확인하여 상태 체크 결과를 확인하는
메모리 컨트롤러.
- 제 5 항에 있어서,
상기 제 3 테이블에는, 각각의 동작에 더 대응하여 상기 참조 비트가 맵핑되고,
상기 상태 체크 수행부는, 상기 메모리 장치로부터 수신되는 상태 정보 중 상태 체크의 대상이 된 동작에 매핑된 참조 비트에 해당하는 비트를 확인하여 상태 체크 결과를 확인하는
메모리 컨트롤러.
- 제 1 항에 있어서, 상기 상태 체크 수행부는,
상기 확인된 상태 체크 커맨드가 복수 개인 경우, 상기 확인된 복수의 상태 체크 커맨드 중 어느 하나의 상태 체크 커맨드를 이용하여 상태 체크를 수행하고, 상기 어느 하나의 상태 체크 커맨드를 이용한 상태 체크 수행 결과에 따라 상기 확인된 복수의 상태 체크 커맨드 중 다른 하나의 상태 체크 커맨드를 이용한 상태 체크를 더 수행할지 여부를 결정하는
메모리 컨트롤러.
- 상태 체크 커맨드에 응답하여 상태 정보를 출력하는 메모리 장치; 및
복수의 상태 체크 커맨드 중 상기 메모리 장치가 지원하는 상태 체크 커맨드를 확인하고, 상기 확인된 상태 체크 커맨드를 이용하여 상기 메모리 장치에 대한 상태 체크를 수행하는 메모리 컨트롤러
를 포함하는 메모리 시스템.
- 제 8 항에 있어서, 상기 메모리 컨트롤러는,
호스트로부터 수신된 상기 메모리 장치의 타입 정보를 기반으로 상기 메모리 장치가 지원하는 상태 체크 커맨드를 확인하는
메모리 시스템.
- 제 8 항에 있어서, 상기 메모리 컨트롤러는,
상기 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드를 지원하는 메모리 장치의 타입 정보가 맵핑된 제 1 테이블을 저장하며, 상기 제 1 테이블과 호스트로부터 수신된 상기 메모리 장치의 타입 정보를 기반으로 상기 메모리 장치가 지원하는 상태 체크 커맨드를 확인하는
메모리 시스템.
- 제 8 항에 있어서, 상기 메모리 컨트롤러는,
상기 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드에 대응하는 상태 정보의 정의(definition)가 기록된 제 2 테이블을 저장하며, 상기 제 2 테이블과 상기 메모리 장치로부터 수신되는 상태 정보를 기반으로 상태 체크 결과를 확인하는
메모리 시스템.
- 제 8 항에 있어서, 상기 메모리 컨트롤러는,
상기 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드에 대응하는 상태 정보 중 확인하여야 할 참조 비트가 맵핑된 제 3 테이블을 저장하며, 상기 메모리 장치로부터 수신되는 상태 정보 중 상기 참조 비트에 해당하는 비트를 확인하여 상태 체크 결과를 확인하는
메모리 시스템.
- 제 12 항에 있어서,
상기 제 3 테이블에는, 각각의 동작에 더 대응하여 상기 참조 비트가 맵핑되고,
상기 메모리 컨트롤러는, 상기 메모리 장치로부터 수신되는 상태 정보 중 상태 체크의 대상이 된 동작에 매핑된 참조 비트에 해당하는 비트를 확인하여 상태 체크 결과를 확인하는
메모리 시스템.
- 제 8 항에 있어서, 상기 메모리 컨트롤러는,
상기 확인된 상태 체크 커맨드가 복수 개인 경우, 상기 확인된 복수의 상태 체크 커맨드 중 어느 하나의 상태 체크 커맨드를 이용하여 상태 체크를 수행하고, 상기 어느 하나의 상태 체크 커맨드를 이용한 상태 체크 수행 결과에 따라 상기 확인된 복수의 상태 체크 커맨드 중 다른 하나의 상태 체크 커맨드를 이용한 상태 체크를 더 수행할지 여부를 결정하는
메모리 시스템.
- 호스트로부터 메모리 장치의 타입 정보를 수신하는 단계;
상기 수신된 메모리 장치의 타입 정보와 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드를 지원하는 메모리 장치의 타입 정보가 맵핑된 제 1 테이블을 기반으로 상기 메모리 장치가 지원하는 상태 체크 커맨드를 확인하는 단계; 및
상기 확인된 상태 체크 커맨드를 이용하여 상기 메모리 장치에 대한 상태 체크를 수행하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
- 제 15 항에 있어서,
상기 메모리 장치로부터 상기 상태 체크 커맨드에 대한 응답으로 상태 정보를 수신하는 단계; 및
상기 수신된 상태 정보와 상기 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드에 대응하는 상태 정보의 정의(definition)가 기록된 제 2 테이블을 기반으로 상태 체크 결과를 확인하는 단계
를 더 포함하는 메모리 컨트롤러의 동작 방법.
- 제 16 항에 있어서, 상기 상태 체크 결과를 확인하는 단계는,
상기 복수의 상태 체크 커맨드 각각에 대하여 해당 상태 체크 커맨드에 대응하는 상태 정보 중 확인하여야 할 참조 비트가 맵핑된 제 3 테이블을 참조하여, 상기 메모리 장치로부터 수신되는 상태 정보 중 상기 참조 비트에 해당하는 비트를 확인하여 상태 체크 결과를 확인하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
- 제 17 항에 있어서,
상기 제 3 테이블에는, 각각의 동작에 더 대응하여 상기 참조 비트가 맵핑되고,
상기 상태 체크 결과를 확인하는 단계는, 상기 메모리 장치로부터 수신되는 상태 정보 중 상태 체크의 대상이 된 동작에 매핑된 참조 비트에 해당하는 비트를 확인하여 상태 체크 결과를 확인하는 단계를 포함하는
메모리 컨트롤러의 동작 방법.
- 제 15 항에 있어서, 상기 상태 체크를 수행하는 단계는,
상기 확인된 상태 체크 커맨드가 복수 개인 경우, 상기 확인된 복수의 상태 체크 커맨드 중 어느 하나의 상태 체크 커맨드를 이용하여 상태 체크를 수행하는 단계; 및
상기 어느 하나의 상태 체크 커맨드를 이용한 상태 체크 수행 결과에 따라 상기 확인된 복수의 상태 체크 커맨드 중 다른 하나의 상태 체크 커맨드를 이용한 상태 체크를 더 수행할지 여부를 결정하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180012916A KR102505920B1 (ko) | 2018-02-01 | 2018-02-01 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
US16/117,426 US10678471B2 (en) | 2018-02-01 | 2018-08-30 | Memory controller, memory system having the memory controller, and operating method of the memory controller |
CN201811109320.5A CN110109797B (zh) | 2018-02-01 | 2018-09-21 | 存储器控制器、存储器系统及存储器控制器的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180012916A KR102505920B1 (ko) | 2018-02-01 | 2018-02-01 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190093364A true KR20190093364A (ko) | 2019-08-09 |
KR102505920B1 KR102505920B1 (ko) | 2023-03-06 |
Family
ID=67392145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180012916A KR102505920B1 (ko) | 2018-02-01 | 2018-02-01 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10678471B2 (ko) |
KR (1) | KR102505920B1 (ko) |
CN (1) | CN110109797B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102481649B1 (ko) * | 2021-12-01 | 2022-12-28 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586393B2 (en) * | 2020-12-30 | 2023-02-21 | Macronix International Co., Ltd. | Control method for requesting status of flash memory, flash memory die and flash memory with the same |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070052471A (ko) * | 2005-11-17 | 2007-05-22 | 삼성전자주식회사 | 낸드 플래쉬 메모리 제어 장치 및 방법 |
US7406572B1 (en) * | 2004-03-26 | 2008-07-29 | Cypress Semiconductor Corp. | Universal memory circuit architecture supporting multiple memory interface options |
US20130067455A1 (en) * | 2011-09-08 | 2013-03-14 | Via Technologies, Inc. | Memory online update system and method |
US20140201473A1 (en) * | 2013-01-11 | 2014-07-17 | Micron Technology, Inc. | Host controlled enablement of automatic background operations in a memory device |
KR20140128852A (ko) * | 2013-04-29 | 2014-11-06 | 삼성전자주식회사 | 데이터 처리 지연에 대한 빠른 응답을 수행할 수 있는 데이터 저장 장치와 이를 이용한 데이터 처리 방법들 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7210030B2 (en) * | 2004-07-22 | 2007-04-24 | International Business Machines Corporation | Programmable memory initialization system and method |
US7376761B2 (en) * | 2004-12-30 | 2008-05-20 | Intel Corporation | Configuration data management |
JP4842563B2 (ja) * | 2005-05-16 | 2011-12-21 | パナソニック株式会社 | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 |
JP4896450B2 (ja) * | 2005-06-30 | 2012-03-14 | 株式会社東芝 | 記憶装置 |
JP2007233903A (ja) * | 2006-03-03 | 2007-09-13 | Hitachi Ltd | 記憶制御装置及び記憶制御装置のデータ回復方法 |
US20080082750A1 (en) * | 2006-09-28 | 2008-04-03 | Okin Kenneth A | Methods of communicating to, memory modules in a memory channel |
KR20100108697A (ko) | 2009-03-30 | 2010-10-08 | 삼성전자주식회사 | 데이터 출력 패드들의 스왑 기능을 갖는 반도체 메모리 장치 |
CN103426453B (zh) * | 2012-05-25 | 2015-12-16 | 华为技术有限公司 | 动态电压频率调节方法以及系统 |
KR20170059049A (ko) * | 2015-11-19 | 2017-05-30 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20170086345A (ko) | 2016-01-18 | 2017-07-26 | 에스케이하이닉스 주식회사 | 메모리 칩 및 메모리 컨트롤러를 포함하는 메모리 시스템 |
US9977603B2 (en) * | 2016-05-02 | 2018-05-22 | Micron Technology, Inc. | Memory devices for detecting known initial states and related methods and electronic systems |
-
2018
- 2018-02-01 KR KR1020180012916A patent/KR102505920B1/ko active IP Right Grant
- 2018-08-30 US US16/117,426 patent/US10678471B2/en active Active
- 2018-09-21 CN CN201811109320.5A patent/CN110109797B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7406572B1 (en) * | 2004-03-26 | 2008-07-29 | Cypress Semiconductor Corp. | Universal memory circuit architecture supporting multiple memory interface options |
KR20070052471A (ko) * | 2005-11-17 | 2007-05-22 | 삼성전자주식회사 | 낸드 플래쉬 메모리 제어 장치 및 방법 |
US20130067455A1 (en) * | 2011-09-08 | 2013-03-14 | Via Technologies, Inc. | Memory online update system and method |
US20140201473A1 (en) * | 2013-01-11 | 2014-07-17 | Micron Technology, Inc. | Host controlled enablement of automatic background operations in a memory device |
KR20140128852A (ko) * | 2013-04-29 | 2014-11-06 | 삼성전자주식회사 | 데이터 처리 지연에 대한 빠른 응답을 수행할 수 있는 데이터 저장 장치와 이를 이용한 데이터 처리 방법들 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102481649B1 (ko) * | 2021-12-01 | 2022-12-28 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
CN110109797B (zh) | 2023-06-13 |
CN110109797A (zh) | 2019-08-09 |
US10678471B2 (en) | 2020-06-09 |
KR102505920B1 (ko) | 2023-03-06 |
US20190235786A1 (en) | 2019-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10878920B2 (en) | Memory controller and memory system having the same | |
KR102567373B1 (ko) | 메모리 장치 및 이를 포함하는 메모리 시스템 | |
CN110413535B (zh) | 存储器控制器及存储器控制器的操作方法 | |
US11269551B2 (en) | Semiconductor memory device and method of operating the same | |
KR20190087845A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
KR102626048B1 (ko) | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 | |
KR20190043860A (ko) | 메모리 시스템 및 이의 동작 방법 | |
US10936421B2 (en) | Memory system having storage device and memory controller and operating method thereof | |
US11340802B2 (en) | Semiconductor memory device, controller, memory system and method thereof | |
KR102505920B1 (ko) | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 | |
KR102350644B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
US20180373586A1 (en) | Memory system and operating method therefor | |
KR102409798B1 (ko) | 메모리 시스템 및 그것의 동작 방법 | |
US11132252B2 (en) | Memory device, memory system including memory device, and method of operating memory system | |
KR20190029323A (ko) | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 | |
KR102398671B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
CN110362181B (zh) | 电子装置、具有电子装置的存储器系统及其操作方法 | |
US20210304819A1 (en) | Memory system, memory device, and control method of memory system | |
KR20240002571A (ko) | 메모리 장치, 메모리 장치를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |