KR20220118740A - 메모리 시스템 및 호스트를 포함하는 전자 시스템 - Google Patents
메모리 시스템 및 호스트를 포함하는 전자 시스템 Download PDFInfo
- Publication number
- KR20220118740A KR20220118740A KR1020210022531A KR20210022531A KR20220118740A KR 20220118740 A KR20220118740 A KR 20220118740A KR 1020210022531 A KR1020210022531 A KR 1020210022531A KR 20210022531 A KR20210022531 A KR 20210022531A KR 20220118740 A KR20220118740 A KR 20220118740A
- Authority
- KR
- South Korea
- Prior art keywords
- physical address
- memory
- data
- host
- program
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 194
- 238000000034 method Methods 0.000 claims abstract description 58
- 238000013508 migration Methods 0.000 claims description 16
- 230000005012 migration Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 15
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000012545 processing Methods 0.000 description 20
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 238000012937 correction Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 description 2
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/061—Improving I/O performance
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering 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/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/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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
-
- 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/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—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/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/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
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)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
본 기술은 프로그램 동작 시 프로그램 요청, 논리 어드레스 및 데이터를 출력하도록 구성되는 호스트; 및 상기 논리 어드레스에 제1 물리 어드레스를 맵핑하고, 상기 제1 물리 어드레스에 대응되는 제1 메모리 블록들에 상기 데이터를 SLC(single level cell) 방식으로 프로그램하고, 상기 제1 물리 어드레스를 제2 물리 어드레스로 변경한 후 상기 제1 메모리 블록들에 저장된 상기 데이터를 제2 메모리 블록에 MLC(multi level cell), TLC(triple level cell) 또는 QLC(quadruple level cell) 방식으로 프로그램 하고, 상기 제2 물리 어드레스를 상기 호스트에게 전송하도록 구성되는 메모리 시스템을 포함하고, 상기 호스트는, 상기 논리 어드레스에 대응되는 상기 데이터의 리드 동작 시 리드 요청 및 상기 제2 물리 어드레스를 출력하는 것을 특징으로 한다.
Description
본 발명은 메모리 시스템 및 호스트를 포함하는 전자 시스템에 관한 것으로, 보다 구체적으로는 데이터를 저장 또는 출력하도록 구성된 메모리 시스템과, 메모리 시스템에 프로그램 또는 리드 요청을 전송하도록 구성된 호스트를 포함하는 전자 시스템에 관한 것이다.
전자 시스템은 호스트 및 메모리 시스템을 포함할 수 있다.
호스트는 휴대폰 또는 컴퓨터 등과 같은 장치일 수 있으며, 메모리 시스템에게 프로그램, 리드 또는 소거 등의 요청을 전송하도록 구성될 수 있다.
메모리 시스템은 호스트의 요청에 따라 데이터를 저장하거나, 저장된 데이터를 출력 또는 소거하도록 구성될 수 있다. 메모리 시스템은 데이터가 저장되는 메모리 장치와, 메모리 장치를 제어하는 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory) 또는 비휘발성 메모리 장치 (Non Volatile Memory)로 구분될 수 있다.
휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는 프로그램 동작 시 메모리 시스템은 맵핑된 어드레스를 호스트에게 전송하고, 리드 동작 시 호스트는 메모리 시스템으로부터 수신받은 어드레스를 메모리 시스템에게 제공함으로써, 메모리 시스템에서 수행되는 리드 동작의 속도를 개선할 수 있는 메모리 시스템 및 호스트를 포함하는 전자 시스템을 제공한다.
본 발명의 실시 예에 따른 전자 시스템은, 프로그램 동작 시 프로그램 요청, 논리 어드레스 및 데이터를 출력하도록 구성되는 호스트; 및 상기 논리 어드레스에 제1 물리 어드레스를 맵핑하고, 상기 제1 물리 어드레스에 대응되는 제1 메모리 블록들에 상기 데이터를 SLC(single level cell) 방식으로 프로그램하고, 상기 제1 물리 어드레스를 제2 물리 어드레스로 변경한 후 상기 제1 메모리 블록들에 저장된 상기 데이터를 제2 메모리 블록에 MLC(multi level cell), TLC(triple level cell) 또는 QLC(quadruple level cell) 방식으로 프로그램하고, 상기 제2 물리 어드레스를 상기 호스트에게 전송하도록 구성되는 메모리 시스템을 포함하고, 상기 호스트는, 상기 논리 어드레스에 대응되는 상기 데이터의 리드 동작 시 리드 요청 및 상기 제2 물리 어드레스를 출력하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 전자 시스템은, 제1 내지 제N 데이터에 대한 프로그램 요청을 출력하도록 구성된 호스트; 및 상기 프로그램 요청에 응답하여 상기 제1 내지 제N 데이터를 부스트 블록들에 프로그램하고, 상기 부스트 블록들에 대응되는 제1 물리 어드레스를 상기 호스트에 전송하고, 상기 부스트 블록들에 저장된 상기 제1 내지 제N 데이터를 사용자 블록으로 이동하면, 상기 사용자 블록에 대응되는 제2 물리 어드레스를 상기 호스트에 전송하는 메모리 시스템을 포함하고, 상기 호스트는 상기 제1 물리 어드레스를 저장한 후, 상기 제2 물리 어드레스가 수신되면, 상기 제1 내지 제N 데이터의 리드 동작 시 리드 요청과 상기 제2 물리 어드레스를 상기 메모리 시스템에게 전송하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 전자 시스템은, 데이터에 대한 프로그램 요청을 출력하는 호스트; 및 상기 데이터를 복수의 메모리 블록들에 저장하고, 상기 복수의 메모리 블록들에 저장된 상기 데이터를 선택된 메모리 블록에 압축하여 저장하도록 구성된 메모리 시스템을 포함하고, 상기 메모리 시스템은 상기 프로그램 요청에 따른 상기 복수의 메모리 블록들에 대응되는 제1 물리 어드레스를 상기 호스트에 전송하고, 상기 데이터를 압축하여 저장한 후 상기 선택된 메모리 블록에 대응되는 제2 물리 어드레스를 상기 호스트에게 제공하고, 상기 호스트는 상기 데이터의 리드 동작 시, 리드 요청과 상기 메모리 시스템으로부터 제공받은 상기 제2 물리 어드레스를 상기 메모리 시스템에게 출력하도록 구성된다.
본 기술은 메모리 시스템 및 호스트를 포함하는 전자 시스템의 리드 동작의 속도를 개선할 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 시스템을 설명하기 위한 도면이다.
도 2는 메모리 장치에 포함되는 메모리 블록들을 설명하기 위한 도면이다.
도 3은 도 2에 도시된 메모리 블록을 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 컨트롤 버퍼를 설명하기 위한 도면이다.
도 6은 메모리 셀들의 문턱전압 분포를 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 프로그램 동작을 설명하기 위한 순서도이다.
도 8a 내지 8g는 본 발명의 실시 예에 따른 프로그램 동작을 단계별로 구체적으로 설명하기 위한 도면들이다.
도 9는 본 발명의 실시 예에 따른 리드 동작을 설명하기 위한 순서도이다.
도 10a 및 10b는 본 발명의 실시 예에 따른 리드 동작을 단계별로 구체적으로 설명하기 위한 도면들이다.
도 11은 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 12는 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 2는 메모리 장치에 포함되는 메모리 블록들을 설명하기 위한 도면이다.
도 3은 도 2에 도시된 메모리 블록을 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 컨트롤 버퍼를 설명하기 위한 도면이다.
도 6은 메모리 셀들의 문턱전압 분포를 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 프로그램 동작을 설명하기 위한 순서도이다.
도 8a 내지 8g는 본 발명의 실시 예에 따른 프로그램 동작을 단계별로 구체적으로 설명하기 위한 도면들이다.
도 9는 본 발명의 실시 예에 따른 리드 동작을 설명하기 위한 순서도이다.
도 10a 및 10b는 본 발명의 실시 예에 따른 리드 동작을 단계별로 구체적으로 설명하기 위한 도면들이다.
도 11은 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 12는 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 1은 본 발명의 실시 예에 따른 전자 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 전자 시스템(electronic system; 10000)은 메모리 시스템(memory system; 1000) 및 호스트(host; 2000)를 포함할 수 있다.
메모리 시스템(1000)은 호스트(2000)의 요청(request)에 응답하여 데이터를 저장하거나, 저장된 데이터를 출력 또는 소거하도록 구성될 수 있다. 메모리 시스템(1000)은 메모리 장치(memory device; 1100), 컨트롤 버퍼(control buffer; 1200) 및 컨트롤러(controller; 1300)를 포함할 수 있다.
메모리 장치(1100)는 데이터를 저장하도록 구성된 메모리 블록들(BLK_B, BLK_U)을 포함할 수 있다. 메모리 블록들(BLK_B, BLK_U)은 프로그램 방식에 따라 부스트 블록(boost block; BLK_B)과 사용자 블록(user block; BLK_U)으로 설정될 수 있다. 부스트 블록(BLK_B)은 프로그램 동작 시 데이터를 빠르게 저장하기 위하여 사용될 수 있으며, 복수의 메모리 블록들을 포함할 수 있다. 사용자 블록(BLK_U)은 부스트 블록(BLK_B)에 저장된 데이터의 압축 데이터를 저장하기 위하여 사용될 수 있으며, 복수의 메모리 블록들을 포함할 수 있다. 부스트 블록(BLK_B) 및 사용자 블록(BLK_U)에 포함된 복수의 메모리 블록들은 서로 동일하게 구성될 수 있다.
부스트 블록(BLK_B)은 싱글 레벨 셀(single level cell) 방식으로 데이터가 프로그램되도록 설정될 수 있으며, 사용자 블록(BLK_U)은 멀티 레벨 셀(multi level cell) 방식 또는 이보다 높은 레벨 방식으로 데이터가 프로그램되도록 설정될 수 있다. 부스트 블록(BLK_B)과 사용자 블록(BLK_U) 구조적으로는 서로 동일하게 구성되며, 메모리 장치(1100)가 서로 다른 방식으로 프로그램 또는 리드하도록 설정될 수 있다.
싱글 레벨 셀 방식은 하나의 메모리 셀에 1 비트의 데이터가 저장되는 방식이고, 멀티 레벨 셀 방식은 하나의 메모리 셀에 2 비트의 데이터가 저장되는 방식을 의미한다. 따라서, 멀티 레벨 셀 이상의 방식에서는 하나의 메모리 셀에 2 비트 이상의 데이터가 저장될 수 있다. 예를 들면, 하나의 메모리 셀에 3 비트의 데이터가 저장되는 방식은 트리플 레벨 셀(triple level cell) 방식으로 정의되고, 하나의 메모리 셀에 4 비트의 데이터가 저장되는 방식은 쿼드러플 레벨 셀(quadruple level cell) 방식으로 정의될 수 있다. 이 외에도 멀티 레벨 셀 이상의 방식으로 하나의 메모리 셀에 5 비트 이상의 데이터가 저장되는 방식이 사용될 수도 있다.
컨트롤 버퍼(1200)는 메모리 시스템(1000)에서 사용되는 시스템 데이터를 저장하도록 구성될 수 있다. 예를 들면, 컨트롤 버퍼(1200)는 호스트(2000)와 메모리 장치(1100)에서 사용되는 어드레스들의 맵핑 정보인 맵 테이블(map table)을 저장할 수 있으며, 호스트(2000)와 메모리 장치(1100) 사이에서 전송되는 데이터를 임시로 저장할 수 있다. 컨트롤 버퍼(1200)는 빠른 동작 속도를 위하여 휘발성 메모리 셀들로 구성될 수 있으며, 메모리 시스템(1000)에 따라 비휘발성 메모리 셀들을 포함할 수도 있다. 예를 들면, 휘발성 메모리 셀들은 DRAM(dynamic random access memory) 또는 SRAM(static random access memory)으로 구성될 수 있다. 예를 들면, 비휘발성 메모리 셀들은 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM) 또는 STT-MRAM(Spin Transfer Torque - Magnetic RAM)으로 구성될 수 있다.
컨트롤러(1300)는 호스트(2000)의 요청에 따라 메모리 장치(1100) 및 컨트롤 버퍼(1200)를 제어하도록 구성될 수 있다. 컨트롤러(1300)는 호스트(2000), 메모리 장치(1100) 및 컨트롤 버퍼(1200) 사이에서 데이터의 전송을 컨트롤하도록 구성될 수 있다. 컨트롤러(1300)는 호스트(2000)에서 사용되는 논리 어드레스(logical address)와 메모리 장치(1100)에서 사용되는 물리 어드레스(physical address)를 서로 맵핑할 수 있고, 맵핑된 어드레스들을 변경할 수도 있다. 컨트롤러(1300)는 맵핑된 어드레스를 컨트롤 버퍼(1200)에 저장할 수 있고, 컨트롤 버퍼(1200)에 저장된 어드레스를 변경할 수도 있다. 또한, 컨트롤러(1300)는 컨트롤 버퍼(1200)에 저장된 어드레스들을 호스트(2000) 또는 메모리 장치(1100)에게 전송하도록 구성될 수 있다.
컨트롤러(1300)는 호스트(2000)의 요청이 없거나, 메모리 시스템(1000)이 유휴(idle) 상태이거나, 부스트 블록(BLK_B)에 데이터가 저장될 수 있는 프리 블록(free block)이 없는 경우, 부스트 블록(BLK_B)에 저장된 데이터를 사용자 블록(BLK_U)으로 옮기는 마이그레이션(migration) 동작을 수행할 수 있다. 마이그레이션 동작은 데이터가 저장된 메모리 셀들 또는 메모리 블록들의 개수를 감소시키기 위한 동작이다. 예를 들면, 부스트 블록(BLK_B)은 싱글 레벨 셀 방식으로 설정되고, 사용자 블록(BLK_U)은 트리플 레벨 셀 방식으로 설정된 경우에 마이그레이션 동작이 수행되면, 부스트 블록(BLK_B)의 세 개의 메모리 블록들에 저장된 데이터가 사용자 블록(BLK_U)의 하나의 메모리 블록으로 압축되어 저장될 수 있다. 컨트롤러(1300)는 사용자 블록(BLK_U)에 데이터가 저장된 후, 부스트 블록(BLK_B)에 포함된 메모리 블록들이 소거되도록 소거 커맨드를 메모리 장치(1100)에게 전송할 수 있다. 마이그레이션 동작 시, 컨트롤러(1300)는 트리플 레벨 셀 방식의 프로그램 커맨드를 생성할 수 있다. 즉, 호스트 요청에 따라 생성되는 프로그램 커맨드는 싱글 레벨 셀 방식의 프로그램 커맨드일 수 있고, 마이그레이션 동작 시 생성되는 프로그램 커맨드는 멀티 레벨 셀 이상의 방식의 프로그램 커맨드일 수 있다.
컨트롤러(1300)는 마이그레이션 동작으로 인해 변경된 물리 어드레스를 컨트롤 버퍼(1200)에 저장하고, 컨트롤 버퍼(1200)에 저장된 물리 어드레스를 호스트(2000)에게 전송할 수 있다.
호스트(2000)는 휴대폰 또는 컴퓨터 등과 같은 전자 장치에서 사용되는 프로세서(processor)일 수 있다. 예를 들면 프로세서는 어플리케이션 프로세서(application processor) 또는 그래픽 처리 장치(graphic processing unit) 등과 같은 프로세서(Processor)일 수 있으며, 메모리 시스템(1000)에게 프로그램, 리드 또는 소거 등의 요청을 전송하도록 구성될 수 있다. 호스트(2000)는 메모리 시스템(1000)으로부터 출력된 물리 어드레스를 저장하기 위한 호스트 버퍼(host buffer; 2100)를 포함할 수 있다. 호스트 버퍼(2100)는 어드레스를 저장하도록 구성된 휘발성 메모리 셀들을 포함할 수 있으며, 호스트(2000)에 따라 비휘발성 메모리 셀들을 포함할 수도 있다.
프로그램 동작 시, 호스트(2000)는 프로그램 요청, 논리 어드레스 및 데이터를 메모리 시스템(1000)에게 전송할 수 있다. 호스트(2000)는 메모리 시스템(1000)의 컨트롤러(1300)로부터 출력된 물리 어드레스를 수신할 수 있으며, 수신된 물리 어드레스를 논리 어드레스에 맵핑하여 호스트 버퍼(2100)에 저장할 수 있다. 리드 동작 시, 호스트(2000)는 호스트 버퍼(2100)에 저장된 물리 어드레스를 리드 요청과 함께 컨트롤러(1300)에게 전송할 수 있다.
컨트롤러(1300)는 호스트(2000)로부터 리드 요청 및 물리 어드레스를 수신 받으면, 리드 요청에 대응되는 리드 커맨드를 생성하고, 리드 커맨드 및 물리 어드레스를 메모리 장치(1100)에게 전송할 수 있다. 즉, 리드 동작 시, 호스트(2000)가 물리 어드레스를 컨트롤러(1300)에게 전송하므로, 컨트롤러(1300)는 논리 어드레스에 맵핑된 물리 어드레스를 찾는 동작을 생략할 수 있다. 즉, 메모리 시스템(1000)의 리드 동작 시, 논리 어드레스에 맵핑된 물리 어드레스를 찾는 동작이 생략되므로, 리드 동작에 걸리는 시간이 단축될 수 있다.
도 2는 메모리 장치에 포함되는 메모리 블록들을 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 장치(1100)는 데이터를 저장할 수 있는 제1 내지 제i 메모리 블록들(BLK1~BLKi)을 포함할 수 있다. 제1 내지 제i 메모리 블록들(BLK1~BLKi) 각각은 데이터가 저장될 수 있는 복수의 메모리 셀들을 포함한다. 도면에는 도시되지 아니하였으나, 메모리 장치(1100)에는 제1 내지 제i 메모리 블록들(BLK1~BLKi)에 데이터를 프로그램하거나, 프로그램된 데이터를 출력 또는 소거하도록 구성된 주변 회로들이 더 포함될 수 있다.
제1 내지 제i 메모리 블록들(BLK1~BLKi) 각각은 서로 동일하게 구성될 수 있으나, 프로그램 방식에 따라 부스트 블록(BLK_B) 또는 사용자 블록(BLK_U)으로 구분될 수 있다.
부스트 블록(BLK_B)은 호스트의 요청에 따라 데이터를 빠르게 프로그램하기 위하여 사용되는 블록이고, 사용자 블록(BLK_U)은 저장 용량을 증가시키기 위하여 마이그레이션 동작 시 사용되는 블록이다. 예를 들면, 부스트 블록(BLK_B)은 싱글 레벨 셀 방식으로 데이터를 프로그램 또는 리드하도록 설정될 수 있고, 사용자 블록(BLK_U)은 멀티 레벨 셀 이상의 방식으로 데이터를 프로그램 또는 리드하도록 설정될 수 있다. 따라서, 제1 내지 제i 메모리 블록들(BLK1~BLKi) 중에서 사용자 블록(BLK_U)으로 설정된 메모리 블록들의 개수가 증가할수록 메모리 장치(1100)의 저장 용량은 증가할 수 있다.
도 3은 도 2에 도시된 메모리 블록을 설명하기 위한 도면이다.
도 2에 도시된 복수의 메모리 블록들(BLK1~BLKi)은 서로 동일하게 구성되므로, 이 중에서 제i 메모리 블록(BLKi)을 예를 들어 설명하면 다음과 같다.
도 3을 참조하면, 제i 메모리 블록(BLKi)은 제1 내지 제m 비트 라인들(BL1~BLm; m은 양의 정수)과 소스 라인(SL) 사이에 연결된 복수의 스트링들(ST)을 포함할 수 있다. 스트링들(ST) 각각은 소스 라인(SL)과 제1 내지 제m 비트 라인들(BL1~BLm) 사이에서 직렬로 연결된 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)를 포함할 수 있다.
도 3에 도시된 메모리 블록(BLKi)은 메모리 블록의 구성을 설명하기 위한 도면이므로, 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)의 개수는 도 3에 도시된 개수로 제한되지 않는다.
서로 다른 스트링들(ST)에 연결된 소스 셀렉트 트랜지스터들(SST)의 게이트들은 소스 셀렉트 라인(SSL)에 연결되고, 제1 내지 제n 메모리 셀들(C1~Cn) 각각의 게이트들은 제1 내지 제n 워드 라인들(WL1~WLn)에 연결되고, 드레인 셀렉트 트랜지스터들(DST)의 게이트들은 드레인 셀렉트 라인(DSL)에 연결될 수 있다.
동일한 워드 라인에 연결되고 서로 다른 스트링들(ST)에 포함된 메모리 셀들의 그룹은 하나의 페이지(PG)를 구성할 수 있다. 프로그램 동작 및 리드 동작은 페이지(PG) 단위로 수행될 수 있다.
도 4는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 4를 참조하면, 컨트롤러(1300)는 호스트 인터페이스(host interface; 410), 중앙 처리 장치(central processing unit; 420), 에러 정정 회로(error correction circuit; 430), 메모리 인터페이스(memory interface; 440) 및 버퍼 인터페이스(buffer interface; 450)를 포함할 수 있다. 호스트 인터페이스(410), 중앙 처리 장치(420), 에러 정정 회로(430), 메모리 인터페이스(440) 및 버퍼 인터페이스(450)는 버스(bus)를 통해 정보를 서로 주고받을 수 있다.
호스트 인터페이스(410)는 호스트(2000)와 컨트롤러(1300) 사이에서 정보를 전송하도록 구성될 수 있다. 예를 들면, 프로그램 동작 시, 호스트 인터페이스(410)는 호스트(2000)로부터 출력된 프로그램 요청, 논리 어드레스 및 데이터를 수신받을 수 있고, 중앙 처리 장치(420)의 제어에 따라 프로그램 요청을 중앙 처리 장치(420)로 전송하고, 논리 어드레스 및 데이터를 버퍼 인터페이스(450)로 전송할 수 있다. 마이그레이션 동작 시, 호스트 인터페이스(410)는 중앙 처리 장치(420)의 제어에 따라, 버스를 통해 수신된 물리 어드레스를 호스트(2000)에게 출력할 수 있다. 리드 동작 시, 호스트 인터페이스(410)는 호스트(2000)로부터 리드 요청 및 물리 어드레스를 수신하고, 중앙 처리 장치(420)의 제어에 따라 리드 요청 및 물리 어드레스를 중앙 처리 장치(420)에게 전송할 수 있다. 또한, 리드 동작 시, 호스트 인터페이스(410)는 중앙 처리 장치(420)의 제어에 따라 버스를 통해 수신된 데이터를 호스트(2000)에게 출력할 수 있다.
중앙 처리 장치(420)는 호스트 인터페이스(410), 에러 정정 회로(430), 메모리 인터페이스(440) 및 버퍼 인터페이스(450)를 컨트롤하도록 구성될 수 있으며, 어드레스들을 서로 맵핑하거나, 맵핑된 어드레스들을 찾도록 구성될 수 있다. 예를 들면, 중앙 처리 장치(420)는 호스트(2000)로부터 출력된 프로그램 요청에 의한 프로그램 동작 시, 싱글 레벨 셀 방식으로 설정된 프로그램 커맨드를 생성하고, 프로그램 커맨드를 메모리 인터페이스(440)로 전송할 수 있다. 중앙 처리 장치(420)는 마이그레이션 동작 시, 싱글 레벨 셀 방식으로 설정된 리드 커맨드를 생성할 수 있고, 리드 커맨드를 메모리 인터페이스(440)로 전송할 수 있다. 이어서, 중앙 처리 장치(420)는 트리플 레벨 셀 방식으로 설정된 프로그램 커맨드를 생성할 수 있고, 프로그램 커맨드를 메모리 인터페이스(440)로 전송할 수 있다. 중앙 처리 장치(420)는 트리플 레벨 셀 방식에 따라 프로그램 동작을 수행한 후, 싱글 레벨 셀 방식으로 프로그램된 메모리 블록들을 소거하기 위한 소거 커맨드를 생성할 수 있다. 이어서, 중앙 처리 장치(420)는 소거 커맨드를 메모리 인터페이스(440)로 전송할 수 있다. 중앙 처리 장치(420)는 호스트(2000)로부터 출력된 리드 요청에 의한 리드 동작 시, 트리플 레벨 셀 방식으로 설정된 리드 커맨드를 생성하고, 리드 커맨드를 메모리 인터페이스로(440)로 전송할 수 있다.
에러 정정 회로(430)는 프로그램 동작 시 호스트 인터페이스(410)로부터 수신된 데이터와 에러 정정 코드를 사용한 에러 정정 인코딩 동작을 수행할 수 있고, 리드 동작 시 메모리 인터페이스(440)로부터 수신된 데이터를 디코딩하여 에러를 검출 또는 정정하도록 구성될 수 있다.
메모리 인터페이스(440)는 컨트롤러(1300)와 메모리 장치(1100) 사이에서 정보를 전송하도록 구성될 수 있다. 예를 들면, 메모리 인터페이스(440)는 프로그램 동작 시 버스를 통해 수신된 프로그램 커맨드, 물리 어드레스 및 데이터를 메모리 장치(1100)에게 전송하도록 구성될 수 있다. 메모리 인터페이스(440)는 리드 동작 시 메모리 장치(1100)로부터 수신된 데이터를 버스를 통해 버퍼 인터페이스(450)로 전송하도록 구성될 수 있다.
버퍼 인터페이스(450)는 컨트롤러(1300)와 컨트롤 버퍼(1200) 사이에서 정보를 전송하도록 구성될 수 있다. 예를 들면, 버퍼 인터페이스(450)는 버스를 통해 전송된 어드레스들 또는 데이터를 컨트롤 버퍼(1200)로 전송하도록 구성될 수 있고, 컨트롤 버퍼(1200)에 저장된 어드레스들 또는 데이터를 버스로 전송하도록 구성될 수 있다.
도 5는 본 발명의 실시 예에 따른 컨트롤 버퍼를 설명하기 위한 도면이다.
도 5를 참조하면, 컨트롤 버퍼(1200)는 어드레스들을 저장하기 위한 제1 버퍼(51)와, 프로그램 또는 리드 동작 시 데이터를 임시로 저장하기 위한 제2 버퍼(52)를 포함할 수 있다.
제1 버퍼(51)는 중앙 처리 장치(도 4의 420)에 의해 맵핑된 논리 어드레스들(LA1~Lak; k는 양의 정수) 및 물리 어드레스들(PA1~Pak)을 저장하도록 구성될 수 있다. 예를 들면, 제1 논리 어드레스(LA1)에는 제1 물리 어드레스(PA1)가 맵핑될 수 있고, 제2 논리 어드레스(LA2)에는 제2 물리 어드레스(PA2) 가 맵핑될 수 있으며, 제k 논리 어드레스(LAk)에는 제k 물리 어드레스(PAk)가 맵핑될 수 있다. 중앙 처리 장치(도 4의 420)에 의해 논리 어드레스 또는 물리 어드레스가 변경되거나, 논리 어드레스 및 물리 어드레스가 변경되는 경우, 제1 버퍼(51)에는 변경된 논리 어드레스 또는 물리 어드레스, 또는 변경된 논리 어드레스 및 변경된 물리 어드레스가 저장될 수 있다.
제2 버퍼(52)는 프로그램 동작 시 호스트(도 4의 2000)로부터 수신된 데이터(DATA1~DATAk)를 임시로 저장하거나, 리드 동작 시 메모리 장치(도 4의 1100)로부터 수신된 데이터(DATA1~DATAk)를 임시로 저장하도록 구성될 수 있다. 예를 들면, 프로그램 동작 시 호스트(도 4의 2000)로부터 제1 내지 제3 데이터(DATA1~DATA3)가 수신되면, 제2 버퍼(52)에는 버스를 통해 수신되는 제1 내지 제3 데이터(DATA1~DATA3)가 임시로 저장될 수 있다. 프로그램 동작 시 제2 버퍼(52)에 임시로 저장된 데이터는 메모리 장치(도 4의 1100)의 프로그램 동작이 완료될 때까지 저장될 수 있다.
도 6은 메모리 셀들의 문턱전압 분포를 설명하기 위한 도면이다.
도 6을 참조하면, 싱글 레벨 셀(single level cell; SLC), 멀티 레벨 셀(multi level cell; MLC), 트리플 레벨 셀(triple level cell; TLC) 및 쿼드러플 레벨 셀(quadruple level cell; QLC) 방식들 각각에 대한 메모리 셀들의 문턱전압 분포들이 도시된다. SLC 방식에서, 메모리 셀들은 1 비트의 데이터에 따라 소거 상태(ER)가 되거나 제1 프로그램 상태(P1)로 프로그램될 수 있다. MLC 방식에서, 메모리 셀들은 LSB(least significant bit) 데이터 및 MSB(most significant bit) 데이터로 이루어진 2 비트의 데이터에 따라 소거 상태(ER)가 되거나, 제1 프로그램 상태(P1), 제2 프로그램 상태(P2) 또는 제3 프로그램 상태(P3)로 프로그램될 수 있다. LSB 및 MSB 데이터는 서로 다른 논리 페이지 데이터로써, 하나의 물리 페이지에 저장될 수 있다. 예를 들면, LSB 데이터는 하위비트 데이터로써 선택된 페이지에 저장될 수 있고, MSB 데이터는 상위비트 데이터로써 선택된 페이지 페이지에 저장될 수 있다. 따라서, 선택된 페이지에 포함된 메모리 셀들 각각은 LSB 데이터와 MSB 데이터의 조합에 따라 소거 상태(ER), 제1 프로그램 상태(P1), 제2 프로그램 상태(P2) 또는 제3 프로그램 상태(P3)가 될 수 있다. TLC 방식에서, 메모리 셀들은 LSB(least significant bit) 데이터, CSB(central significant bit) 데이터 및 MSB(most significant bit) 데이터로 이루어진 3 비트의 데이터에 따라 소거 상태(ER)가 되거나, 제1 내지 제7 프로그램 상태들(P1~P7) 중 어느 하나로 프로그램될 수 있다. QLC 방식에서, 메모리 셀들은 LSB(least significant bit) 데이터, 제1 CSB(central significant bit) 데이터, 제2 CSB 데이터 및 MSB(most significant bit) 데이터로 이루어진 4 비트의 데이터에 따라 소거 상태(ER)가 되거나, 제1 내지 제15 프로그램 상태들(P1~P15) 중 어느 하나로 프로그램될 수 있다.
도 7은 본 발명의 실시 예에 따른 프로그램 동작을 설명하기 위한 순서도이다.
도 7을 참조하면, 호스트(도 4의 2000)는 프로그램 동작을 위한 프로그램 요청(program request)을 컨트롤러(도 4의 1300)에게 전송할 수 있다(S71). 예를 들면, 호스트(2000)는 프로그램 요청을 컨트롤러(1300)에게 전송할 때 데이터와, 데이터를 프로그램할 영역에 대한 논리 어드레스(LA)를 컨트롤러(1300)에게 함께 전송할 수 있다.
컨트롤러(1300)는 프로그램 요청, 논리 어드레스 및 데이터가 수신되면, 데이터의 사이즈에 따라 메모리 장치의 제1 물리 어드레스(PA1)를 선택하고, 제1 물리 어드레스(PA1)를 논리 어드레스(LA)에 맵핑할 수 있다(S72). 예를 들면, 제1 물리 어드레스(PA1)는 메모리 장치(1100)의 부스트 블록(BLK_B)에 포함된 메모리 블록들 중에서 선택된 하나 이상의 프리 블록(free block)의 어드레스일 수 있다.
컨트롤러(1300)는 서로 맵핑된 논리 어드레스(LA) 및 제1 물리 어드레스(PA1)를 컨트롤 버퍼(도 5의 1200)의 제1 버퍼(도 5의 51)에 저장할 수 있다(S73).
컨트롤러(1300)는 프로그램 요청에 대응되는 프로그램 커맨드를 생성하고, 프로그램 커맨드, 제1 물리 어드레스(PA1) 및 데이터를 메모리 장치(1100)에게 전송하고, 메모리 장치(1100)는 프로그램 커맨드에 응답하여 제1 물리 어드레스(PA1)에 해당하는 부스트 블록(BLK_B)에 데이터를 프로그램할 수 있다(S74). 프로그램 커맨드는 SLC 방식의 커맨드일 수 있다. 부스트 블록(BLK_B)은 SLC 방식으로 데이터가 프로그램 또는 리드되도록 설정된 블록일 수 있다. 부스트 블록(BLK_B)에 데이터가 프로그램되면, 컨트롤러(1300)는 호스트(2000)에세 프로그램 완료 신호를 출력할 수 있다. 호스트(2000)는 프로그램 완료 신호가 입력되면 프로그램 요청에 대한 프로그램 동작이 완료된 것으로 판단할 수 있다.
부스트 블록(BLK_B)의 프로그램 동작이 완료되면, 컨트롤러(1300)는 호스트(2000)의 요청이 없거나, 메모리 시스템(1000)이 유휴(idle) 상태이거나, 부스트 블록(BLK_B)에 데이터가 저장될 수 있는 프리 블록이 없다고 판단되면, 사용자 블록(BLK_U)에 포함된 메모리 블록들 중에서 선택된 프리 블록의 제2 물리 어드레스(PA2)를 선택할 수 있다(S75). 사용자 블록(BLK_U)은 MLC, TLC 또는 QLC 방식으로 설정된 블록일 수 있으며, 본 실시 예에서는 TLC 방식으로 설정된 사용자 블록(BLK_U)이 실시 예로써 설명된다.
컨트롤러(1300)는 제2 물리 어드레스(PA2)를 논리 어드레스(LA)에 맵핑할 수 있다(S76).
컨트롤러(1300)는 서로 맵핑된 논리 어드레스(LA) 및 제2 물리 어드레스(PA2)를 컨트롤 버퍼(1200)의 제1 버퍼(51)에 저장할 수 있다(S77).
컨트롤러(1300)는 부스트 블록(BLK_B)에 저장된 데이터를 사용자 블록(BLK_U)으로 옮기는 마이그레이션 동작을 수행할 수 있다(S78). 예를 들면, 컨트롤러(1300)는 부스트 블록(BLK_B)의 데이터를 리드하고, 리드된 데이터를 사용자 블록(BLK_U)에 TLC 방식으로 프로그램할 수 있다.
더욱 구체적으로 설명하면, 컨트롤러(1300)는 제1 버퍼에 저장된 제1 물리 어드레스(PA1)와 리드 커맨드를 메모리 장치(1100)에게 전송하고, 메모리 장치(1100)는 제1 물리 어드레스(PA1)가 할당된 부스트 블록(BLK_B)의 리드 동작을 수행할 수 있다. 부스트 블록(BLK_B)이 SLC 방식으로 설정된 블록이므로, 컨트롤러(1300)는 SLC 방식의 리드 커맨드를 메모리 장치(1100)에게 출력할 수 있다. 메모리 장치(1100)는 부스트 블록(BLK_B)으로부터 리드된 데이터를 컨트롤러(1300)에게 출력할 수 있다. 컨트롤러(1300)는 메모리 장치(1100)로부터 수신된 데이터를 임시로 저장하고, 프로그램 커맨드, 제2 물리 어드레스(PA2) 및 데이터를 메모리 장치(1100)에게 전송하고, 메모리 장치(1100)는 제2 물리 어드레스(PA2)가 할당된 사용자 블록(BLK_U)에 프로그램 동작을 수행할 수 있다. 사용자 블록(BLK_U)이 TLC 방식으로 설정된 블록이므로, 컨트롤러(1300)는 메모리 장치(1100)에게 프로그램을 위한 데이터를 전송할 때 TLC 방식의 프로그램 커맨드를 메모리 장치(1100)에게 전송할 수 있다.
사용자 블록(BLK_U)의 프로그램 동작이 완료되면, 컨트롤러(1300)는 제1 버퍼(51)에 저장된 논리 어드레스(LA) 및 제2 물리 어드레스(PA2)를 호스트(2000)에게 전송할 수 있다(S79). 호스트(2000)는 컨트롤러(1300)로부터 출력된 논리 어드레스(LA) 및 제2 물리 어드레스(PA2)를 수신하고, 수신된 논리 어드레스(LA) 및 제2 물리 어드레스(PA2)를 호스트 버퍼(도 1의 2100)에 저장할 수 있다.
상술한 프로그램 동작에서 수행되는 단계들을 호스트(2000), 컨트롤러(1300), 컨트롤 버퍼(1200) 및 메모리 장치(1100)를 사용하여 구체적으로 설명하면 다음과 같다.
도 8a 내지 8g는 본 발명의 실시 예에 따른 프로그램 동작을 단계별로 구체적으로 설명하기 위한 도면들이다.
도 8a를 참조하면, 호스트(2000)는 제1 내지 제3 데이터(DATA1~3)를 프로그램하기 위하여, 프로그램 요청(RQp), 논리 어드레스(LA) 및 제1 내지 제3 데이터(DATA1~3)를 컨트롤러(1300)에게 전송할 수 있다. 이때, 호스트(2000)는 호스트 버퍼(2100)에 논리 어드레스(LA)를 저장할 수 있다.
컨트롤러(1300)는 프로그램 요청(RQp)에 따라 프로그램 커맨드(CMDp)를 생성하고, 제1 내지 제3 데이터(DATA1~3)를 컨트롤 버퍼(1200)의 제2 버퍼에 임시로 저장한다. 호스트(2000)의 요청에 따라 생성되는 프로그램 커맨드(CMDp)는 SLC 방식의 프로그램 커맨드일 수 있다.
컨트롤러(1300)는 제1 내지 제3 데이터(DATA1~3)가 저장될 수 있는 영역의 제1 물리 어드레스(PA1)를 논리 어드레스(LA)에 맵핑하고, 서로 맵핑된 논리 어드레스(LA) 및 제1 물리 어드레스(PA1)를 컨트롤 버퍼(1200)의 제1 버퍼에 저장할 수 있다. 예를 들면, 논리 어드레스(LA) 및 제1 물리 어드레스(PA1)는 제1 버퍼의 제1 인덱스(IN1)에 대응되는 영역에 저장될 수 있다.
컨트롤러(1300)는 프로그램 커맨드(CMDp), 제1 물리 어드레스(PA1) 및 제1 내지 제3 데이터를 메모리 장치(1100)에게 전송할 수 있다.
메모리 장치(1100)는 프로그램 커맨드(CMDp)에 응답하여, 제1 물리 어드레스(PA1)에 대응되는 부스트 블록(BLK_B)에 제1 내지 제3 데이터(DATA1~3)를 프로그램할 수 있다. 예를 들면, 제1 데이터(DATA1)는 부스트 블록(BLK_B)에 포함된 제1 메모리 블록(BLK1)에 프로그램되고, 제2 데이터(DATA2)는 부스트 블록(BLK_B)에 포함된 제2 메모리 블록(BLK2)에 프로그램되며, 제3 데이터(DATA3)는 부스트 블록(BLK_B)에 포함된 제3 메모리 블록(BLK3)에 프로그램될 수 있다.
프로그램 커맨드(CMDp)가 SLC 방식의 커맨드이므로, 메모리 장치(1100)는 SLC 방식으로 제1 내지 제3 데이터(DATA1~3)를 제1 내지 제3 메모리 블록들(BLK1~3)에 프로그램할 수 있다. SLC 방식의 프로그램 동작에서는 하나의 메모리 셀에 1 비트의 데이터가 저장될 수 있다. 즉, 제1 메모리 블록(BLK1)에 AA개(AA는 양의 정수)의 메모리 셀들이 포함되었다고 가정하면, 제1 메모리 블록(BLK1)에 저장되는 제1 데이터(DATA1)는 AA 비트의 사이즈를 가질 수 있다. 나머지 제2 및 제3 메모리 블록들(BLK2, BLK3)도 각각 AA개의 메모리 셀들을 포함할 수 있다. 따라서, 제1 내지 제3 데이터(DATA1~3)의 총 용량은 3 x AA일 수 있다.
도 8b를 참조하면, 제1 내지 제3 데이터(DATA1~3)가 제1 내지 제3 메모리 블록들(BLK1~3)에 프로그램되면, 컨트롤러(1300)는 컨트롤 버퍼(1200)에 포함된 제2 버퍼를 초기화하고, 제1 버퍼에 저장된 논리 어드레스(LA) 및 제1 물리 어드레스(PA1)를 호스트(2000)에게 전송할 수 있다. 즉, 마이그레이션 동작이 수행되기 이전에 호스트가 제1 내지 제3 데이터(DATA1~3)에 대한 리드 요청을 출력할 수 있으므로, 컨트롤러(1300)는 제1 내지 제3 데이터(DATA1~3)가 저장된 메모리 블록들의 제1 물리 어드레스(PA1)와 제1 물리 어드레스(PA1)에 맵핑된 논리 어드레스(LA)를 호스트(2000)에게 전송할 수 있다.
호스트(2000)는 논리 어드레스(LA) 및 제1 물리 어드레스(PA1)가 입력되면, 호스트 버퍼(2100)에서 논리 어드레스(LA)에 대응되는 영역에 제1 물리 어드레스(PA1)를 저장할 수 있다.
도 8c를 참조하면, 컨트롤러(1300)는 호스트(2000)로부터 출력된 요청이 없거나, 메모리 장치(1100)가 유휴(idle) 상태이거나, 부스트 블록(BLK_B)에 데이터가 저장될 수 있는 프리 블록(free block)이 없다고 판단되면, 마이그레이션 동작을 수행할 수 있다.
마이그레이션 동작이 시작되면, 컨트롤러(1300)는 리드 커맨드(CMDr) 및 제1 물리 어드레스(PA1)를 메모리 장치(1100)에게 전송할 수 있다. 리드 커맨드(CMDr)는 제1 물리 어드레스(PA1)에 대한 프로그램 동작과 동일한 방식으로 설정될 수 있다. 예를 들면, 제1 물리 어드레스(PA1)에 대한 프로그램 동작이 SLC 방식으로 수행되었으면, 리드 커맨드(CMDr)도 SLC 방식의 리드 커맨드일 수 있다.
도 8d를 참조하면, 메모리 장치(1100)는 리드 커맨드(CMDr) 및 제1 물리 어드레스(PA1)에 응답하여 부스트 블록(BLK_B)에 포함된 제1 내지 제3 메모리 블록들(BLK1~3)의 리드 동작을 수행할 수 있다. 예를 들면, 제1 물리 어드레스(PA1)에 제1 내지 제3 메모리 블록들(BLK1~3)이 할당되므로, 메모리 장치(1100)는 제1 내지 제3 메모리 블록들(BLK1~3) 각각에 대한 리드 동작을 수행하고, 리드된 제1 내지 제3 데이터(DATA1~3)를 출력할 수 있다.
컨트롤러(1300)는 메모리 장치(1100)로부터 출력된 제1 내지 제3 데이터(DATA1~3)를 제2 버퍼에 임시로 저장할 수 있다.
도 8e를 참조하면, 컨트롤러(1300)는 사용자 블록(BLK_U)에 대응되는 제2 물리 어드레스(PA2)를 선택하고, 제1 버퍼의 제2 인덱스에 대응되는 영역에 논리 어드레스(LA) 및 제2 물리 어드레스(PA2)를 저장할 수 있다.
컨트롤러(1300)는 TLC 방식의 프로그램 커맨드(CMDp)를 생성하고, 프로그램 커맨드(CMDp), 제2 물리 어드레스(PA2) 및 제1 내지 제3 데이터(DATA1~3)를 메모리 장치(1100)에게 전송할 수 있다. 예를 들면, 컨트롤러(1300)는 제1 버퍼에 저장된 제2 물리 어드레스(PA2)와, 제2 버퍼에 저장된 제1 내지 제3 데이터(DATA1~3)를 메모리 장치에게 전송할 수 있다.
메모리 장치(1100)는 프로그램 커맨드(CMDp)에 응답하여, 제2 물리 어드레스(PA2)에 대응되는 사용자 블록(BLK_U)에 제1 내지 제3 데이터(DATA1~3)를 프로그램할 수 있다. 예를 들면, 제1 내 제3 데이터(DATA1~3)는 사용자 블록(BLK_U)에 포함된 제4 메모리 블록(BLK4)에 프로그램될 수 있다. 제4 메모리 블록(BLK4)은 제1 내지 제3 메모리 블록들(BLK1~3)과 동일하게 구성되므로, AA개의 메모리 셀들을 포함할 수 있다.
하지만, 프로그램 동작이 TLC 방식으로 수행되므로 제4 메모리 블록(BLK4)에 제1 내지 제3 데이터(DATA1~3)가 모두 저장될 수 있다. 즉, 제4 메모리 블록(BLK4)은 AA개의 메모리 셀들을 포함하지만, 3 x AA 비트의 데이터를 저장할 수 있다.
도 8f를 참조하면, 제4 메모리 블록(BLK4)의 프로그램 동작이 완료되면, 컨트롤러(1300)는 컨트롤 버퍼(1200)의 제2 버퍼를 초기화하고, 소거 커맨드(CMDe) 및 제1 물리 어드레스(PA1)를 메모리 장치(1100)에게 전송할 수 있다.
메모리 장치(1100)는 소거 커맨드(CMDe) 및 제1 물리 어드레스(PA1)에 응답하여 부스트 블록(BLK_B)에 포함된 제1 내지 제3 메모리 블록들(BLK1~3)의 소거 동작을 수행할 수 있다. 소거된 제1 내지 제3 메모리 블록들(BLK1~3)은 프리 블록(free block)이 될 수 있고, 마이그레이션 동작은 종료될 수 있다.
도 8g를 참조하면, 컨트롤러(1300)는 제1 버퍼의 제1 인덱스에 대응되는 영역을 초기화시키고, 제2 인덱스에 대응되는 영역에 저장된 논리 어드레스(LA)와 제2 물리 어드레스(PA2)를 호스트(2000)에게 전송할 수 있다.
호스트(2000)는 논리 어드레스(LA) 및 제2 물리 어드레스(PA2)가 입력되면, 호스트 버퍼(2100)에서 논리 어드레스(LA)에 대응되는 영역에 저장된 제1 물리 어드레스(PA1)를 제2 물리 어드레스(PA2)로 변경할 수 있다. 호스트 버퍼(2100)에 저장된 제2 물리 어드레스(PA2)는 논리 어드레스(LA)의 리드 동작 시 사용될 수 있다.
도 9는 본 발명의 실시 예에 따른 리드 동작을 설명하기 위한 순서도이다.
도 9를 참조하면, 호스트(도 4의 2000)는 리드 동작을 위한 리드 요청(read request) 및 제2 물리 어드레스(PA2)를 컨트롤러(도 4의 1300)에게 전송할 수 있다(S91). 예를 들면, 호스트(2000)는 리드 요청을 출력하기 전에, 호스트 버퍼(도 1의 2100)에서 리드 동작의 대상이 되는 논리 어드레스(LA)를 선택하고, 선택된 논리 어드레스(LA)에 맵핑된 제2 물리 어드레스(PA2)를 출력할 수 있다.
컨트롤러(1300)는 리드 요청에 응답하여 메모리 장치에서 사용되는 리드 커맨드를 생성하고, 리드 커맨드와 제2 물리 어드레스(PA2)를 메모리 장치에게 전송하고, 제2 물리 어드레스(PA2)에 저장된 데이터를 리드할 수 있다(S92). 이때, 컨트롤러(1300)는 호스트(2000)로부터 논리 어드레스(LA)가 아닌 제2 물리 어드레스(PA2)를 수신받으므로, 논리 어드레스(LA)에 맵핑된 물리 어드레스를 찾는 동작을 생략할 수 있다. 따라서, 컨트롤러(1300)와 메모리 장치를 포함하는 메모리 시스템의 리드 동작에 걸리는 시간이 단축될 수 있다.
상술한 리드 동작에서 수행되는 단계들을 호스트(2000), 컨트롤러(1300), 컨트롤 버퍼(1200) 및 메모리 장치(1100)를 사용하여 구체적으로 설명하면 다음과 같다.
도 10a 및 10b는 본 발명의 실시 예에 따른 리드 동작을 단계별로 구체적으로 설명하기 위한 도면들이다.
도 10a를 참조하면, 호스트(2000)는 리드 요청(RQr) 및 제2 물리 어드레스(PA2)를 컨트롤러(1300)에게 전송할 수 있다.
컨트롤러(1300)는 리드 요청(RQr)에 따라 리드 커맨드(CMDr)를 생성할 수 있다. 호스트(2000)의 요청에 따라 생성되는 리드 커맨드(CMDr)는 TLC 방식의 커맨드일 수 있다. 컨트롤러(1300)는 리드 커맨드(CMDr) 및 제2 물리 어드레스(PA2)를 메모리 장치(1100)에게 전송할 수 있다.
도 10b를 참조하면, 메모리 장치(1100)는 리드 커맨드(CMDr)에 응답하여, 제2 물리 어드레스(PA2)에 대응되는 사용자 블록(BLK_U)의 리드 동작을 수행할 수 있다. 예를 들면, 메모리 장치(1100)는 제2 물리 어드레스(PA2)에 따라 사용자 블록(BLK_U)에 포함된 제4 메모리 블록(BLK4)을 선택하고, 선택된 제4 메모리 블록(BLK4)의 리드 동작을 수행할 수 있다.
메모리 장치(1100)는 제4 메모리 블록(BLK4)으로부터 리드된 제1 내지 제3 데이터(DATA1~3)를 컨트롤러(1300)에게 출력할 수 있다.
컨트롤러(1300)는 메모리 장치(1100)로부터 출력된 제1 내지 제3 데이터(DATA1~3)를 컨트롤 버퍼(1200)의 제2 버퍼에 임시로 저장한 후, 제1 내지 제3 데이터(DATA1~3)를 호스트(2000)에게 출력할 수 있다.
도 11은 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 11을 참조하면, 메모리 카드 시스템(3000)은 컨트롤러(3100), 메모리 장치(3200), 및 커넥터(3300)를 포함한다.
컨트롤러(3100)는 메모리 장치(3200)와 연결된다. 컨트롤러(3100)는 메모리 장치(3200)를 접속(access)하도록 구성된다. 예를 들어, 컨트롤러(3100)는 메모리 장치(3200)의 프로그램, 리드 또는 소거 동작을 제어하거나, 배경(background) 동작을 제어하도록 구성될 수 있다. 컨트롤러(3100)는 도 4에 도시된 컨트롤러(1300)와 동일하게 구성될 수 있다. 컨트롤러(3100)는 메모리 장치(3200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(3100)는 메모리 장치(3200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(3100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
컨트롤러(3100)는 커넥터(3300)를 통해 외부 장치와 통신할 수 있다. 컨트롤러(3100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 컨트롤러(3100)는 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 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 커넥터(3300)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.
예시적으로, 메모리 장치(3200)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등과 같은 다양한 비휘발성 메모리 소자들로 구성될 수 있다.
컨트롤러(3100) 및 메모리 장치(3200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(3100) 및 메모리 장치(3200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 범용 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 12는 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 12를 참조하면, SSD 시스템(4000)은 호스트(4100) 및 SSD(4200)를 포함한다. SSD(4200)는 신호 커넥터(4001)를 통해 호스트(4100)와 신호(SIG)를 주고 받고, 전원 커넥터(4002)를 통해 전원(PWR)을 입력받는다. SSD(4200)는 컨트롤러(4210), 복수의 플래시 메모리들(4221~422n), 보조 전원 장치(4230), 및 버퍼 메모리(4240)를 포함한다.
본 발명의 실시 예에 따르면, 컨트롤러(4210)는 도 4를 참조하여 설명된 컨트롤러(1300)의 기능을 수행할 수 있다.
컨트롤러(4210)는 호스트(4100)로부터 수신된 신호에 응답하여 복수의 플래시 메모리들(4221~422n)을 제어할 수 있다. 예시적으로, 신호는 호스트(4100) 및 SSD(4200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호는 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 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.
보조 전원 장치(4230)는 전원 커넥터(4002)를 통해 호스트(4100)와 연결된다. 호스트(4100)는 도 1에 도시된 호스트 버퍼(2100)를 포함할 수 있으며, 호스트 버퍼(2100)에 논리 어드레스 및 물리 어드레스를 저장할 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터 전원 전압을 입력받고, 충전할 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터의 전원 공급이 원활하지 않을 경우, SSD(4200)의 전원 전압을 제공할 수 있다. 예시적으로, 보조 전원 장치(4230)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4230)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(4240)는 SSD(4200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(4240)는 호스트(4100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(4221~422n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(4221~422n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(4240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.
10000: 전자 시스템
1000: 메모리 시스템
1100: 메모리 장치 1200: 컨트롤 버퍼
1300: 컨트롤러 2000: 호스트
2100: 호스트 버퍼 410: 호스트 인터페이스
420: 중앙 처리 장치 430: 에러 정정 회로
440: 메모리 인터페이스 450: 버퍼 인터페이스
1100: 메모리 장치 1200: 컨트롤 버퍼
1300: 컨트롤러 2000: 호스트
2100: 호스트 버퍼 410: 호스트 인터페이스
420: 중앙 처리 장치 430: 에러 정정 회로
440: 메모리 인터페이스 450: 버퍼 인터페이스
Claims (20)
- 프로그램 동작 시 프로그램 요청, 논리 어드레스 및 데이터를 출력하도록 구성되는 호스트; 및
상기 논리 어드레스에 제1 물리 어드레스를 맵핑하고, 상기 제1 물리 어드레스에 대응되는 제1 메모리 블록들에 상기 데이터를 SLC(single level cell) 방식으로 프로그램하고, 상기 제1 물리 어드레스를 제2 물리 어드레스로 변경한 후 상기 제1 메모리 블록들에 저장된 상기 데이터를 제2 메모리 블록에 MLC(multi level cell), TLC(triple level cell) 또는 QLC(quadruple level cell) 방식으로 프로그램하고, 상기 제2 물리 어드레스를 상기 호스트에게 전송하도록 구성되는 메모리 시스템을 포함하고,
상기 호스트는,
상기 논리 어드레스에 대응되는 상기 데이터의 리드 동작 시 리드 요청 및 상기 제2 물리 어드레스를 출력하는 것을 특징으로 하는 전자 시스템.
- 제1항에 있어서, 상기 호스트는,
상기 논리 어드레스 및 상기 논리 어드레스에 대응하는 물리 어드레스를 저장하도록 구성된 호스트 버퍼를 포함하는 전자 시스템.
- 제1항에 있어서, 상기 메모리 시스템은,
상기 SLC 방식의 프로그램 커맨드를 생성하거나, 상기 MLC, TLC 또는 QLC 방식의 프로그램 커맨드를 생성하고, 상기 논리 어드레스와 상기 제1 또는 제2 물리 어드레스를 서로 맵핑하도록 구성되는 컨트롤러;
상기 논리 어드레스와 상기 제1 또는 제2 물리 어드레스를 저장하고, 상기 데이터를 임시로 저장하도록 구성되는 컨트롤 버퍼; 및
상기 제1 물리 어드레스가 할당된 메모리 블록들 및 상기 제2 물리 어드레스가 할당된 메모리 블록을 포함하는 메모리 장치를 포함하는 전자 시스템.
- 제3항에 있어서, 상기 컨트롤러는,
상기 호스트의 요청이 없거나, 상기 메모리 시스템이 유휴(idle) 상태이거나, 상기 제1 물리어드레스가 할당된 메모리 블록들 중 프리 블록(free block)이 없으면,
상기 제1 물리 어드레스가 할당된 메모리 블록들에 저장된 상기 데이터를 상기 제2 물리 어드레스가 할당된 메모리 블록으로 이동하기 위한 마이그레이션 동작을 수행하도록 구성되는 전자 시스템.
- 제4항에 있어서, 상기 컨트롤러는,
상기 마이그레이션 동작이 시작되면, 상기 제2 물리 어드레스를 상기 논리 어드레스에 맵핑하고, 상기 논리 어드레스 및 상기 제2 물리 어드레스를 상기 컨트롤 버퍼에 저장하도록 구성되는 전자 시스템.
- 제5항에 있어서, 상기 컨트롤러는,
상기 메모리 장치에 리드 커맨드 및 상기 제1 물리 어드레스를 전송하고,
상기 메모리 장치로부터 리드된 데이터가 출력되면, 상기 리드된 데이터를 상기 컨트롤 버퍼에 임시로 저장하도록 구성되는 전자 시스템.
- 제6항에 있어서,
상기 컨트롤러는 상기 SLC 방식의 상기 리드 커맨드를 출력하는 전자 시스템.
- 제6항에 있어서, 상기 컨트롤러는,
상기 MLC, TLC 또는 QLC 방식의 프로그램 커맨드, 상기 제2 물리 어드레스 및 상기 리드된 데이터를 상기 메모리 장치에게 전송하도록 구성되는 전자 시스템.
- 제3항에 있어서, 상기 메모리 장치는,
상기 MLC, TLC 또는 QLC 방식의 프로그램 커맨드 및 상기 제2 물리 어드레스에 응답하여, 상기 제2 물리 어드레스가 할당된 메모리 블록에 상기 데이터를 프로그램하도록 구성되는 전자 시스템.
- 제9항에 있어서, 상기 컨트롤러는,
상기 제2 물리 어드레스가 할당된 메모리 블록의 프로그램 동작이 종료되면,
상기 제1 물리 어드레스가 할당된 메모리 블록들을 소거하기 위한 소거 커맨드 및 상기 제1 물리 어드레스를 상기 메모리 장치에게 전송하도록 구성되는 전자 시스템.
- 제10항에 있어서, 상기 컨트롤러는,
상기 제1 물리 어드레스가 할당된 메모리 블록들의 소거 동작이 종료되면,
상기 컨트롤 버퍼에 저장된 상기 제1 물리 어드레스를 소거하는 전자 시스템.
- 제1항에 있어서, 상기 호스트는,
상기 메모리 시스템으로부터 상기 제2 물리 어드레스가 출력되면, 상기 논리 어드레스에 맵핑된 상기 제1 물리 어드레스를 상기 제2 물리 어드레스로 변경하도록 구성되는 전자 시스템.
- 제1 내지 제N 데이터에 대한 프로그램 요청을 출력하도록 구성된 호스트; 및
상기 프로그램 요청에 응답하여 상기 제1 내지 제N 데이터를 부스트 블록들에 프로그램하고, 상기 부스트 블록들에 대응되는 제1 물리 어드레스를 상기 호스트에 전송하고, 상기 부스트 블록들에 저장된 상기 제1 내지 제N 데이터를 사용자 블록으로 이동하면, 상기 사용자 블록에 대응되는 제2 물리 어드레스를 상기 호스트에 전송하는 메모리 시스템을 포함하고,
상기 호스트는 상기 제1 물리 어드레스를 저장한 후, 상기 제2 물리 어드레스가 수신되면, 상기 제1 내지 제N 데이터의 리드 동작 시 리드 요청과 상기 제2 물리 어드레스를 상기 메모리 시스템에게 전송하는 것을 특징으로 하는 전자 시스템.
- 제13항에 있어서, 상기 메모리 시스템은,
상기 제1 또는 제2 물리 어드레스를 저장하도록 구성된 컨트롤 버퍼;
상기 프로그램 요청에 응답하여 프로그램 커맨드를 생성하고, 상기 제1 물리 어드레스를 논리 어드레스에 맵핑하고, 맵핑된 상기 논리 어드레스 및 상기 제1 물리 어드레스를 상기 컨트롤 버퍼에 저장하도록 구성된 컨트롤러; 및
상기 제1 내지 제N 데이터를 저장하도록 구성된 메모리 장치를 포함하는 전자 시스템.
- 제14항에 있어서, 상기 컨트롤러는,
상기 제1 내지 제N 데이터를 상기 부스트 블록들에 프로그램하기 위하여 SLC(single level cell) 방식의 프로그램 커맨드를 출력하고,
상기 제1 내지 제N 데이터를 상기 사용자 블록에 프로그램하기 위하여 MLC(multi level cell), TLC(triple level cell) 또는 QLC(quadruple level cell) 방식의 프로그램 커맨드를 출력하도록 구성되는 전자 시스템.
- 제14항에 있어서, 상기 컨트롤러는,
상기 호스트로부터의 요청이 없는 상태, 상기 메모리 시스템의 유휴(idle) 상태 또는 부스트 블록들에 프리 블록이 없는 상태일 때, 상기 부스트 블록들에 저장된 상기 제1 내지 제N 데이터를 사용자 블록으로 이동시키고,
상기 제1 내지 제N 데이터의 이동에 따라 상기 제1 물리 어드레스가 상기 제2 물리 어드레스로 바뀌면, 상기 제2 물리 어드레스를 상기 컨트롤 버퍼에 저장하고,
상기 컨트롤 버퍼에 새로 저장된 상기 제2 물리 어드레스를 상기 호스트에게 전송하도록 구성되는 전자 시스템.
- 제14항에 있어서,
상기 부스트 블록들과 상기 사용자 블록은 서로 동일하게 구성되는 전자 시스템.
- 데이터에 대한 프로그램 요청을 출력하는 호스트; 및
상기 데이터를 복수의 메모리 블록들에 저장하고, 상기 복수의 메모리 블록들에 저장된 상기 데이터를 선택된 메모리 블록에 압축하여 저장하도록 구성된 메모리 시스템을 포함하고,
상기 메모리 시스템은 상기 프로그램 요청에 따른 상기 복수의 메모리 블록들에 대응되는 제1 물리 어드레스를 상기 호스트에 전송하고, 상기 데이터를 압축하여 저장한 후 상기 선택된 메모리 블록에 대응되는 제2 물리 어드레스를 상기 호스트에게 제공하고,
상기 호스트는 상기 데이터의 리드 동작 시, 리드 요청과 상기 메모리 시스템으로부터 제공받은 상기 제2 물리 어드레스를 상기 메모리 시스템에게 출력하도록 구성되는 전자 시스템.
- 제18항에 있어서, 상기 메모리 시스템은,
상기 프로그램 요청에 응답하여 수행되는 제1 프로그램 동작 시, 상기 데이터가 저장되는 상기 복수의 메모리 블록들에 대응되는 상기 제1 물리 어드레스를 저장한 후 상기 제1 물리 어드레스를 상기 호스트에 제공하고,
상기 데이터를 상기 선택된 메모리 블록에 압축하기 위한 제2 프로그램 동작 시, 상기 제2 물리 어드레스를 저장하고, 상기 제2 물리 어드레스를 상기 호스트에게 제공하도록 구성되는 전자 시스템.
- 제19항에 있어서, 상기 메모리 시스템은,
상기 제1 프로그램 동작은 SLC(single level cell) 방식으로 수행하고,
상기 제2 프로그램 동작은 MLC(multi level cell), TLC(triple level cell) 또는 QLC(quadruple level cell) 방식으로 수행하도록 구성되는 전자 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210022531A KR20220118740A (ko) | 2021-02-19 | 2021-02-19 | 메모리 시스템 및 호스트를 포함하는 전자 시스템 |
US17/396,539 US11809326B2 (en) | 2021-02-19 | 2021-08-06 | Electronic system including host and memory system for performing read operation based on physical address received from the host |
CN202111071279.9A CN114968079A (zh) | 2021-02-19 | 2021-09-14 | 包括存储器***和主机的电子*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210022531A KR20220118740A (ko) | 2021-02-19 | 2021-02-19 | 메모리 시스템 및 호스트를 포함하는 전자 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220118740A true KR20220118740A (ko) | 2022-08-26 |
Family
ID=82900846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210022531A KR20220118740A (ko) | 2021-02-19 | 2021-02-19 | 메모리 시스템 및 호스트를 포함하는 전자 시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11809326B2 (ko) |
KR (1) | KR20220118740A (ko) |
CN (1) | CN114968079A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024112015A1 (ko) * | 2022-11-21 | 2024-05-30 | 삼성전자 주식회사 | 저장 장치의 제조 방법 및 전자 장치 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11379367B2 (en) * | 2020-11-19 | 2022-07-05 | Micron Technology, Inc. | Enhancement for activation and deactivation of memory address regions |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078794B2 (en) * | 2000-01-06 | 2011-12-13 | Super Talent Electronics, Inc. | Hybrid SSD using a combination of SLC and MLC flash memory arrays |
KR102190670B1 (ko) | 2014-03-03 | 2020-12-14 | 삼성전자주식회사 | 마이그레이션 관리자를 포함하는 메모리 시스템 |
FR3026510B1 (fr) * | 2014-09-30 | 2016-12-09 | Compagnie Ind Dapplications Thermiques | Dispositif et procede de surveillance du fonctionnement d'un systeme cvca, ensemble comprenant un systeme cvca et un tel dispositif de surveillance, et produit programme d'ordinateur associe |
KR20170081118A (ko) | 2015-12-30 | 2017-07-11 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법 |
KR102457564B1 (ko) * | 2017-09-20 | 2022-10-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20190074677A (ko) | 2017-12-20 | 2019-06-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20210006102A (ko) * | 2019-07-08 | 2021-01-18 | 에스케이하이닉스 주식회사 | 데이터 입출력 속도에 따라 버퍼의 사용을 결정할 수 있는 메모리 시스템 및 그의 동작 방법 |
KR20220105303A (ko) * | 2021-01-20 | 2022-07-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
-
2021
- 2021-02-19 KR KR1020210022531A patent/KR20220118740A/ko active Search and Examination
- 2021-08-06 US US17/396,539 patent/US11809326B2/en active Active
- 2021-09-14 CN CN202111071279.9A patent/CN114968079A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024112015A1 (ko) * | 2022-11-21 | 2024-05-30 | 삼성전자 주식회사 | 저장 장치의 제조 방법 및 전자 장치 |
Also Published As
Publication number | Publication date |
---|---|
CN114968079A (zh) | 2022-08-30 |
US11809326B2 (en) | 2023-11-07 |
US20220269616A1 (en) | 2022-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110275673B (zh) | 存储装置及其操作方法 | |
US11543984B2 (en) | Memory controller, storage device and operating method thereof | |
CN110389720B (zh) | 存储装置及其操作方法 | |
KR20210142981A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
US11809326B2 (en) | Electronic system including host and memory system for performing read operation based on physical address received from the host | |
US11360886B2 (en) | Storage device and operating method thereof | |
US11481146B2 (en) | Storage device including a buffer memory having a common buffer for storing over-sized write data, and operating method thereof | |
CN111949204A (zh) | 存储器***、存储器控制器和存储器装置 | |
KR20200139913A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치 | |
US20210365382A1 (en) | Memory system, memory controller, and operation method thereof | |
KR20210079104A (ko) | 저장 장치 및 그 동작 방법 | |
KR20210108208A (ko) | 저장 장치 및 그 동작 방법 | |
US11586379B2 (en) | Memory system and method of operating the same | |
US11474723B2 (en) | Storage device and operating method thereof | |
US11481135B2 (en) | Storage device and method of operating the storage device | |
KR20220048377A (ko) | 저장 장치 및 그 동작 방법 | |
KR20200117555A (ko) | 메모리 시스템, 메모리 장치 및 메모리 컨트롤러 | |
US20230178159A1 (en) | Memory device and operating method thereof | |
US11782646B2 (en) | Memory device and memory system having the memory device | |
US20210318952A1 (en) | Storage device and method of operating the same | |
KR20220167077A (ko) | 저장 장치 및 그 동작 방법 | |
KR20220099845A (ko) | 메모리 시스템 및 이의 동작 방법 | |
KR20220059272A (ko) | 저장 장치 및 그 동작 방법 | |
KR20220022139A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
KR20230005634A (ko) | 리드 동작을 수행하는 저장 장치 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |