KR20220118740A - 메모리 시스템 및 호스트를 포함하는 전자 시스템 - Google Patents

메모리 시스템 및 호스트를 포함하는 전자 시스템 Download PDF

Info

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
Application number
KR1020210022531A
Other languages
English (en)
Inventor
김현태
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020210022531A priority Critical patent/KR20220118740A/ko
Priority to US17/396,539 priority patent/US11809326B2/en
Priority to CN202111071279.9A priority patent/CN114968079A/zh
Publication of KR20220118740A publication Critical patent/KR20220118740A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel 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

메모리 시스템 및 호스트를 포함하는 전자 시스템{Electronic system having memory system and host}
본 발명은 메모리 시스템 및 호스트를 포함하는 전자 시스템에 관한 것으로, 보다 구체적으로는 데이터를 저장 또는 출력하도록 구성된 메모리 시스템과, 메모리 시스템에 프로그램 또는 리드 요청을 전송하도록 구성된 호스트를 포함하는 전자 시스템에 관한 것이다.
전자 시스템은 호스트 및 메모리 시스템을 포함할 수 있다.
호스트는 휴대폰 또는 컴퓨터 등과 같은 장치일 수 있으며, 메모리 시스템에게 프로그램, 리드 또는 소거 등의 요청을 전송하도록 구성될 수 있다.
메모리 시스템은 호스트의 요청에 따라 데이터를 저장하거나, 저장된 데이터를 출력 또는 소거하도록 구성될 수 있다. 메모리 시스템은 데이터가 저장되는 메모리 장치와, 메모리 장치를 제어하는 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (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) 시스템을 보여주는 도면이다.
도 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: 버퍼 인터페이스

Claims (20)

  1. 프로그램 동작 시 프로그램 요청, 논리 어드레스 및 데이터를 출력하도록 구성되는 호스트; 및
    상기 논리 어드레스에 제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 물리 어드레스를 출력하는 것을 특징으로 하는 전자 시스템.
  2. 제1항에 있어서, 상기 호스트는,
    상기 논리 어드레스 및 상기 논리 어드레스에 대응하는 물리 어드레스를 저장하도록 구성된 호스트 버퍼를 포함하는 전자 시스템.
  3. 제1항에 있어서, 상기 메모리 시스템은,
    상기 SLC 방식의 프로그램 커맨드를 생성하거나, 상기 MLC, TLC 또는 QLC 방식의 프로그램 커맨드를 생성하고, 상기 논리 어드레스와 상기 제1 또는 제2 물리 어드레스를 서로 맵핑하도록 구성되는 컨트롤러;
    상기 논리 어드레스와 상기 제1 또는 제2 물리 어드레스를 저장하고, 상기 데이터를 임시로 저장하도록 구성되는 컨트롤 버퍼; 및
    상기 제1 물리 어드레스가 할당된 메모리 블록들 및 상기 제2 물리 어드레스가 할당된 메모리 블록을 포함하는 메모리 장치를 포함하는 전자 시스템.
  4. 제3항에 있어서, 상기 컨트롤러는,
    상기 호스트의 요청이 없거나, 상기 메모리 시스템이 유휴(idle) 상태이거나, 상기 제1 물리어드레스가 할당된 메모리 블록들 중 프리 블록(free block)이 없으면,
    상기 제1 물리 어드레스가 할당된 메모리 블록들에 저장된 상기 데이터를 상기 제2 물리 어드레스가 할당된 메모리 블록으로 이동하기 위한 마이그레이션 동작을 수행하도록 구성되는 전자 시스템.
  5. 제4항에 있어서, 상기 컨트롤러는,
    상기 마이그레이션 동작이 시작되면, 상기 제2 물리 어드레스를 상기 논리 어드레스에 맵핑하고, 상기 논리 어드레스 및 상기 제2 물리 어드레스를 상기 컨트롤 버퍼에 저장하도록 구성되는 전자 시스템.
  6. 제5항에 있어서, 상기 컨트롤러는,
    상기 메모리 장치에 리드 커맨드 및 상기 제1 물리 어드레스를 전송하고,
    상기 메모리 장치로부터 리드된 데이터가 출력되면, 상기 리드된 데이터를 상기 컨트롤 버퍼에 임시로 저장하도록 구성되는 전자 시스템.
  7. 제6항에 있어서,
    상기 컨트롤러는 상기 SLC 방식의 상기 리드 커맨드를 출력하는 전자 시스템.
  8. 제6항에 있어서, 상기 컨트롤러는,
    상기 MLC, TLC 또는 QLC 방식의 프로그램 커맨드, 상기 제2 물리 어드레스 및 상기 리드된 데이터를 상기 메모리 장치에게 전송하도록 구성되는 전자 시스템.
  9. 제3항에 있어서, 상기 메모리 장치는,
    상기 MLC, TLC 또는 QLC 방식의 프로그램 커맨드 및 상기 제2 물리 어드레스에 응답하여, 상기 제2 물리 어드레스가 할당된 메모리 블록에 상기 데이터를 프로그램하도록 구성되는 전자 시스템.
  10. 제9항에 있어서, 상기 컨트롤러는,
    상기 제2 물리 어드레스가 할당된 메모리 블록의 프로그램 동작이 종료되면,
    상기 제1 물리 어드레스가 할당된 메모리 블록들을 소거하기 위한 소거 커맨드 및 상기 제1 물리 어드레스를 상기 메모리 장치에게 전송하도록 구성되는 전자 시스템.
  11. 제10항에 있어서, 상기 컨트롤러는,
    상기 제1 물리 어드레스가 할당된 메모리 블록들의 소거 동작이 종료되면,
    상기 컨트롤 버퍼에 저장된 상기 제1 물리 어드레스를 소거하는 전자 시스템.
  12. 제1항에 있어서, 상기 호스트는,
    상기 메모리 시스템으로부터 상기 제2 물리 어드레스가 출력되면, 상기 논리 어드레스에 맵핑된 상기 제1 물리 어드레스를 상기 제2 물리 어드레스로 변경하도록 구성되는 전자 시스템.
  13. 제1 내지 제N 데이터에 대한 프로그램 요청을 출력하도록 구성된 호스트; 및
    상기 프로그램 요청에 응답하여 상기 제1 내지 제N 데이터를 부스트 블록들에 프로그램하고, 상기 부스트 블록들에 대응되는 제1 물리 어드레스를 상기 호스트에 전송하고, 상기 부스트 블록들에 저장된 상기 제1 내지 제N 데이터를 사용자 블록으로 이동하면, 상기 사용자 블록에 대응되는 제2 물리 어드레스를 상기 호스트에 전송하는 메모리 시스템을 포함하고,
    상기 호스트는 상기 제1 물리 어드레스를 저장한 후, 상기 제2 물리 어드레스가 수신되면, 상기 제1 내지 제N 데이터의 리드 동작 시 리드 요청과 상기 제2 물리 어드레스를 상기 메모리 시스템에게 전송하는 것을 특징으로 하는 전자 시스템.
  14. 제13항에 있어서, 상기 메모리 시스템은,
    상기 제1 또는 제2 물리 어드레스를 저장하도록 구성된 컨트롤 버퍼;
    상기 프로그램 요청에 응답하여 프로그램 커맨드를 생성하고, 상기 제1 물리 어드레스를 논리 어드레스에 맵핑하고, 맵핑된 상기 논리 어드레스 및 상기 제1 물리 어드레스를 상기 컨트롤 버퍼에 저장하도록 구성된 컨트롤러; 및
    상기 제1 내지 제N 데이터를 저장하도록 구성된 메모리 장치를 포함하는 전자 시스템.
  15. 제14항에 있어서, 상기 컨트롤러는,
    상기 제1 내지 제N 데이터를 상기 부스트 블록들에 프로그램하기 위하여 SLC(single level cell) 방식의 프로그램 커맨드를 출력하고,
    상기 제1 내지 제N 데이터를 상기 사용자 블록에 프로그램하기 위하여 MLC(multi level cell), TLC(triple level cell) 또는 QLC(quadruple level cell) 방식의 프로그램 커맨드를 출력하도록 구성되는 전자 시스템.
  16. 제14항에 있어서, 상기 컨트롤러는,
    상기 호스트로부터의 요청이 없는 상태, 상기 메모리 시스템의 유휴(idle) 상태 또는 부스트 블록들에 프리 블록이 없는 상태일 때, 상기 부스트 블록들에 저장된 상기 제1 내지 제N 데이터를 사용자 블록으로 이동시키고,
    상기 제1 내지 제N 데이터의 이동에 따라 상기 제1 물리 어드레스가 상기 제2 물리 어드레스로 바뀌면, 상기 제2 물리 어드레스를 상기 컨트롤 버퍼에 저장하고,
    상기 컨트롤 버퍼에 새로 저장된 상기 제2 물리 어드레스를 상기 호스트에게 전송하도록 구성되는 전자 시스템.
  17. 제14항에 있어서,
    상기 부스트 블록들과 상기 사용자 블록은 서로 동일하게 구성되는 전자 시스템.
  18. 데이터에 대한 프로그램 요청을 출력하는 호스트; 및
    상기 데이터를 복수의 메모리 블록들에 저장하고, 상기 복수의 메모리 블록들에 저장된 상기 데이터를 선택된 메모리 블록에 압축하여 저장하도록 구성된 메모리 시스템을 포함하고,
    상기 메모리 시스템은 상기 프로그램 요청에 따른 상기 복수의 메모리 블록들에 대응되는 제1 물리 어드레스를 상기 호스트에 전송하고, 상기 데이터를 압축하여 저장한 후 상기 선택된 메모리 블록에 대응되는 제2 물리 어드레스를 상기 호스트에게 제공하고,
    상기 호스트는 상기 데이터의 리드 동작 시, 리드 요청과 상기 메모리 시스템으로부터 제공받은 상기 제2 물리 어드레스를 상기 메모리 시스템에게 출력하도록 구성되는 전자 시스템.
  19. 제18항에 있어서, 상기 메모리 시스템은,
    상기 프로그램 요청에 응답하여 수행되는 제1 프로그램 동작 시, 상기 데이터가 저장되는 상기 복수의 메모리 블록들에 대응되는 상기 제1 물리 어드레스를 저장한 후 상기 제1 물리 어드레스를 상기 호스트에 제공하고,
    상기 데이터를 상기 선택된 메모리 블록에 압축하기 위한 제2 프로그램 동작 시, 상기 제2 물리 어드레스를 저장하고, 상기 제2 물리 어드레스를 상기 호스트에게 제공하도록 구성되는 전자 시스템.
  20. 제19항에 있어서, 상기 메모리 시스템은,
    상기 제1 프로그램 동작은 SLC(single level cell) 방식으로 수행하고,
    상기 제2 프로그램 동작은 MLC(multi level cell), TLC(triple level cell) 또는 QLC(quadruple level cell) 방식으로 수행하도록 구성되는 전자 시스템.
KR1020210022531A 2021-02-19 2021-02-19 메모리 시스템 및 호스트를 포함하는 전자 시스템 KR20220118740A (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024112015A1 (ko) * 2022-11-21 2024-05-30 삼성전자 주식회사 저장 장치의 제조 방법 및 전자 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
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