KR20220058224A - 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 - Google Patents

메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20220058224A
KR20220058224A KR1020200143764A KR20200143764A KR20220058224A KR 20220058224 A KR20220058224 A KR 20220058224A KR 1020200143764 A KR1020200143764 A KR 1020200143764A KR 20200143764 A KR20200143764 A KR 20200143764A KR 20220058224 A KR20220058224 A KR 20220058224A
Authority
KR
South Korea
Prior art keywords
memory
logical address
target zone
zone
start offset
Prior art date
Application number
KR1020200143764A
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 KR1020200143764A priority Critical patent/KR20220058224A/ko
Priority to US17/307,325 priority patent/US11698748B2/en
Priority to CN202110771226.1A priority patent/CN114442915B/zh
Publication of KR20220058224A publication Critical patent/KR20220058224A/ko
Priority to US18/327,067 priority patent/US20230325111A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • 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

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)
  • Read Only Memory (AREA)

Abstract

본 기술에 따른 메모리 시스템은, 메모리 셀들로 구성된 복수의 블록들을 포함하는 복수의 메모리 장치들, 및 메모리 장치들 각각에 포함된 복수의 블록들로 복수의 존들을 구성함으로써, 존들에 대응하는 메모리 장치들을 제어하는 메모리 컨트롤러를 포함하고, 메모리 컨트롤러는, 호스트로부터 쓰기 요청을 수신하고, 복수의 존들 중 쓰기 요청에 의해 지시되는 타겟 존을 결정하고, 타겟 존과 대응하는 쓰기 포인터(write pointer) 및 시작 오프셋(start offset)을 기초로 쓰기 동작을 시작할 타겟 존의 논리 주소를 결정할 수 있다.

Description

메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법{MEMORY SYSTEM AND OPERATING METHOD OF MEMORY CONTROLLER INCLUDED THEREIN}
본 발명은 메모리 시스템에 관한 것으로, 보다 구체적으로는 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법에 관한 것이다.
저장 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 저장 장치는 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (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) 등이 있다.
본 발명의 실시예는 다수의 존에 동시에 효율적이고 빠르게 쓰기 동작을 수행할 수 있는 메모리 시스템 및 그 동작 방법을 제공한다.
본 발명의 실시예에 따른 메모리 시스템은, 메모리 셀들로 구성된 복수의 블록들을 포함하는 복수의 메모리 장치들, 및 복수의 메모리 장치들 각각에 포함된 블록들로 복수의 존들을 구성함으로써, 복수의 존들에 대응하는 복수의 메모리 장치들을 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 컨트롤러는, 호스트로부터 쓰기 요청을 수신하고, 복수의 존들 중 쓰기 요청에 의해 지시되는 타겟 존을 결정하고, 타겟 존과 대응하는 쓰기 포인터(write pointer) 및 시작 오프셋(start offset)을 기초로 쓰기 동작을 시작할 타겟 존의 논리 주소를 결정할 수 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법은, 호스트로부터 쓰기 요청을 수신하는 단계, 복수의 메모리 장치들 각각에 포함된 블록들로 구성된 복수의 존들 중에서 쓰기 요청과 대응하는 쓰기 포인터(write pointer) 및 시작 오프셋(start offset)을 기초로 쓰기 동작을 시작할 타겟 존의 논리 주소를 결정하는 단계, 복수의 메모리 장치들 중 논리 주소와 대응하는 메모리 장치의 물리 주소를 결정하는 단계, 및 논리 주소와 대응하는 메모리 장치로 쓰기 요청에 대응하는 쓰기 커맨드와 물리 주소를 전송하는 단계를 포함할 수 있다.
본 기술은 다수의 존에 동시에 효율적이고 빠르게 쓰기 동작을 수행할 수 있는 메모리 시스템 및 그 동작 방법을 제공하는 데 있다.
도 1은 일 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1에 따른 메모리 컨트롤러와 메모리 장치 사이에 교환되는 신호들을 설명하기 위한 도면이다.
도 3은 도 1의 메모리 장치를 구체적으로 설명하기 위한 도면이다.
도 4는 도 3의 메모리 셀 어레이의 일 실시예를 나타낸 도면이다.
도 5는 도 4의 메모리 블록을 설명하기 위한 도면이다.
도 6은 도 4의 메모리 블록이 3차원으로 구성된 실시예를 설명하기 위한 도면이다.
도 7은 도 4의 메모리 블록이 3차원으로 구성된 다른 실시예를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 메모리 장치들에 포함된 블록들을 포함하는 존을 구성하는 방법을 설명하기 위한 개념도이다.
도 9는 도 8에 따른 존을 설명하기 위한 개념도이다.
도 10은 도 8에 따른 존을 기초로 호스트와 메모리 시스템 사이의 동작을 설명하기 위한 예시도이다.
도 11은 도 8에 따른 다수의 존들에 대한 쓰기 동작을 설명하기 위한 개념도이다.
도 12는 도 8에 따른 다수의 존들에 대응하는 시작 오프셋을 설명하기 위한 개념도이다.
도 13은 도 12에 따른 시작 오프셋을 다수의 존들에 적용하는 방법을 설명하기 위한 개념도이다.
도 14는 메모리 장치의 상태를 고려하여 시작 오프셋을 다수의 존들에 적용하는 방법을 설명하기 위한 개념도이다.
도 15는 메모리 장치의 소거 카운트를 고려하여 시작 오프셋을 다수의 존들에 적용하는 방법을 설명하기 위한 개념도이다.
도 16은 도 1에 따른 메모리 컨트롤러의 구성을 나타낸 예시도이다.
도 17은 도 16에 따른 메모리 컨트롤러의 동작을 나타낸 예시 흐름도이다.
도 18은 도 1에 따른 메모리 시스템이 적용된 메모리 카드를 설명하기 위한 도면이다.
도 19는 도 1에 따른 메모리 시스템이 적용된 SSD 시스템을 나타내는 블록도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 일 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(1000)은 데이터가 저장되는 메모리 장치(Memory Device; 1100), 및/또는 호스트(Host; 2000)의 요청(request)에 따라 메모리 장치(1100)를 제어하는 메모리 컨트롤러(Memory Controller; 1200)를 포함할 수 있다.
호스트(2000)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방법들 중 적어도 하나를 이용하여 메모리 시스템(1000)과 통신할 수 있다.
메모리 장치(1100)는 전원 공급이 차단되면 데이터가 소멸되는 휘발성 메모리 장치(Volatile Memory Device) 또는 전원 공급이 차단되더라도 데이터가 유지되는 비휘발성 메모리 장치(Non-volatile memory Device)로 구현될 수 있다. 메모리 장치(1100)는 메모리 컨트롤러(1200)의 제어에 따라 프로그램 동작, 리드 동작 또는 소거 동작을 수행할 수 있다. 예를 들면, 프로그램 동작 시, 메모리 장치(1100)는 메모리 컨트롤러(1200)로부터 커맨드, 어드레스 및 데이터를 입력받고 프로그램 동작을 수행할 수 있다. 리드 동작 시, 메모리 장치(1100)는 메모리 컨트롤러(1200)로부터 커맨드 및 어드레스를 입력받고, 입력 받은 어드레스에 상응하는 위치(예를 들면, 물리 어드레스)에 저장된 데이터를 메모리 컨트롤러(1200)로 출력할 수 있다. 메모리 장치(1100)는 소자 가공이 끝난 개개의 IC(Integrated Chip)로서 칩(chip) 또는 다이(die)로 지칭될 수도 있다.
메모리 시스템(1000)은 메모리 장치(1100)를 복수 개 포함할 수 있고, 복수의 메모리 장치들은 메모리 컨트롤러(1200)와 연결된 채널에 따라 복수의 메모리 장치 그룹들(1300)로 그룹핑될 수 있다. 예를 들어, 메모리 장치들 중에서, 메모리 컨트롤러(1200)와 제1 채널(CH1)을 통해 연결된 메모리 장치들은 제1 그룹(GR1)으로 지칭될 수 있고, 메모리 장치들 중에서, 메모리 컨트롤러(1200)와 제2 채널(CH2)을 통해 연결된 메모리 장치들은 제2 그룹(GR2)으로 지칭될 수 있다. 도 1에서는 하나의 그룹이 다수의 메모리 장치들을 포함하는 것으로 도시하였으나, 하나의 그룹이 단일한 메모리 장치(1100)를 포함할 수도 있다.
메모리 컨트롤러(1200)는 메모리 시스템(1000)의 동작을 전반적으로 제어하며, 호스트(2000)와 메모리 장치(1100) 사이의 데이터 교환을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(1200)는, 호스트(2000)로부터 커맨드가 수신되면, 수신된 커맨드에 따라 채널들(CH1~CHk) 각각에 연결된 메모리 장치 그룹들(1300)을 제어할 수 있다. 메모리 컨트롤러(1200)는 호스트(2000)의 요청에 따라 프로그램(program), 리드(read) 또는 소거(erase) 등을 지시하는 커맨드들을 생성하고, 생성된 커맨드들을 각 채널에 연결된 메모리 장치 그룹들(1300)에 전송할 수 있다.
도 2는 도 1에 따른 메모리 컨트롤러와 메모리 장치 사이에 교환되는 신호들을 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 컨트롤러(1200)와 메모리 장치(1100)는 입출력 패드(DQ)를 통해 커맨드, 데이터 및/또는 어드레스를 서로 주고받을 수 있다. 예를 들어, 입출력 패드(DQ)는 8 비트(8bit)의 데이터를 송수신할 수 있도록, 8개의 라인들로 구성될 수 있고, 각 라인은 1 비트의 데이터를 송수신할 수 있다.
메모리 장치(1100)는 CE# 패드를 통해 칩 인에이블 신호를 수신하고, WE# 패드를 통해 라이트 인에이블 신호를 수신하고, RE# 패드를 통해 리드 인에이블 신호를 수신하고, ALE 패드를 통해 어드레스 래치 인에이블 신호를 수신하고, CLE 패드를 통해 커맨드 래치 인에이블 신호를 수신하고, WP# 패드를 통해 라이트 프로텍션 신호를 수신할 수 있다.
어드레스 래치 인에이블 신호는, 입출력 패드(DQ)를 통해 메모리 장치(1100)로 제공되는 어드레스를 메모리 장치(1100)가 어드레스 레지스터(address register)에 로드하도록 메모리 컨트롤러(1200)가 메모리 장치(1100)에 지시하는 신호일 수 있다. 칩 인에이블 신호는, 하나 이상의 메모리 장치들을 인에이블(enable) 또는 디스에이블(disable)하기 위해 메모리 컨트롤러(1200)가 메모리 장치(1100)에 지시하는 신호일 수 있다. 커맨드 래치 인에이블 신호는, 입출력 패드(DQ)를 통해 메모리 장치(1100)로 제공되는 커맨드를 메모리 장치(1100)가 커맨드 레지스터(command register)에 로드하도록 메모리 컨트롤러(1200)가 메모리 장치(1100)에 지시하는 신호일 수 있다. 리드 인에이블 신호는, 메모리 장치(1100)가 메모리 컨트롤러(1200)로 데이터를 전송하도록, 메모리 컨트롤러(1200)가 메모리 장치(1100)에 지시하는 신호일 수 있다. 라이트 인에이블 신호는, 커맨드와 어드레스 및 데이터가 전달되는 것을 알리는 신호일 수 있다.
메모리 장치(1100)는 RB 패드(RB)를 통해 레디-비지 신호를 메모리 컨트롤러(1200)로 출력할 수 있다. 레디-비지 신호는, 메모리 장치(1100)의 메모리 어레이가 비지 상태(busy state)와 아이들 상태(idle state) 중 어느 상태에 있는지를 지시할 수 있다.
도 2에서는 하나의 메모리 장치(1100)와 메모리 컨트롤러(1200) 사이의 연결 관계를 도시하였으나, 입출력 패드(DQ), CE# 패드, WE# 패드, RE# 패드, ALE 패드, CLE 패드, 및 WP# 패드가 하나의 채널(CH1~CHk)을 형성하고, 형성된 채널(CH1~CHk)을 통해 메모리 컨트롤러(1200)와 메모리 장치 그룹들(1300) 중 하나가 연결될 수 있다.
따라서, 메모리 컨트롤러(1200)가 하나의 채널에 포함된 입출력 패드(DQ)를 통해 커맨드, 데이터 및/또는 어드레스를 전송하면, 해당 채널과 연결된 그룹에 속하는 메모리 장치들(1100)이 모두 또는 해당 채널과 연결된 그룹 내에서 메모리 컨트롤러(1200)에 의해 선택된 메모리 장치(1100)가 커맨드, 데이터 및/또는 어드레스를 수신할 수 있다. 예를 들어, 메모리 컨트롤러(1200)는 제1 채널(CH1)에 대응하는 입출력 패드(DQ)를 통해 상태 리드 커맨드를 메모리 장치(1100)들로 전송할 수 있고, 상태 리드 커맨드에 대한 응답으로, 제1 채널(CH1)에 연결된 제1 그룹(GR1) 내의 메모리 장치들 중 적어도 하나가 상태 정보를 입출력 패드(DQ)로 전송할 수 있다.
도 3은 도 1의 메모리 장치를 구체적으로 설명하기 위한 도면이다.
메모리 장치(1100)는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구현될 수 있다. 예를 들어, 메모리 장치(1100)는, DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치 중 하나일 수 있다. 도 3에서는 비휘발성 메모리 장치를 예로 들어 도시한다.
메모리 장치(1100)는 데이터가 저장되는 메모리 셀 어레이(100)를 포함할 수 있다. 메모리 장치(1100)는 메모리 셀 어레이(100)에 데이터를 저장하기 위한 프로그램 동작(program operation), 저장된 데이터를 출력하기 위한 리드 동작(read operation) 및 저장된 데이터를 소거하기 위한 소거 동작(erase operation)을 수행하도록 구성된 주변 회로들(peripheral circuits; 200)을 포함할 수 있다. 메모리 장치(1100)는 메모리 컨트롤러(1200)의 제어에 따라 주변 회로들(200)을 제어하는 제어 로직(300)을 포함할 수 있다.
메모리 셀 어레이(100)는 데이터가 저장되는 다수의 메모리 셀들을 포함한다. 예를 들면, 메모리 셀 어레이(100)는 적어도 하나의 플레인(plane)을 포함할 수 있고, 플레인은 하나 이상의 메모리 블록들(memory blocks)을 포함할 수 있다. 실시 예에서, 플레인은 프로그램, 리드 또는 이레이즈 동작을 수행 시 액세스되는 메모리 영역의 단위일 수 있다. 메모리 블록들 각각은 다수의 메모리 셀들을 포함할 수 있다. 다수의 플레인들이 포함된 구조를 멀티 플레인 구조로 지칭할 수 있다. 메모리 블록들에는 사용자 데이터(user data) 및 메모리 장치(1100)의 동작에 필요한 정보가 저장될 수 있다. 메모리 블록들은 2차원 또는 3차원 구조로 구현될 수 있다. 2차원 구조를 가지는 메모리 블록들은 기판에 평행하게 배열된 메모리 셀들을 포함할 수 있고, 3차원 구조를 가지는 메모리 블록들은 기판에 수직하게 적층된 메모리 셀들을 포함할 수 있다.
주변 회로들(200)은, 제어 로직(300)의 제어에 따라 프로그램, 리드 및 소거 동작을 수행하도록 구성될 수 있다. 예를 들면, 주변 회로들(200)은 전압 생성 회로(VOLTAGE GENERATION CIRCUIT; 210), 로우 디코더(ROW DECODER; 220), 페이지 버퍼 그룹(PAGE BUFFER GROUP; 230), 컬럼 디코더(COLUMN DECODER; 240), 입출력 회로(INPUT/OUTPUT CIRCUIT; 250) 및 전류 감지 회로(CURRENT SENSING CIRCUIT; 260)를 포함할 수 있다.
전압 생성 회로(210)는, 제어 로직(300)에서 출력되는 동작 신호(OP_CMD)에 응답하여 프로그램, 리드 및 소거 동작들에 사용되는 다양한 동작 전압들(Vop)을 생성할 수 있다. 예를 들면, 전압 생성 회로(210)는 제어 로직(300)의 제어에 따라, 프로그램 전압, 검증 전압, 패스 전압, 리드 전압, 소거 전압 등의 다양한 전압들을 생성할 수 있다.
로우 디코더(220)는, 제어 로직(300)으로부터 출력된 로우 어드레스(RADD)에 응답하여, 메모리 셀 어레이(100)의 메모리 블록들 중 선택된 메모리 블록에 연결된 로컬 라인들(local lines; LL)에 동작 전압들(Vop)을 공급할 수 있다. 로컬 라인들(LL)은 로컬 워드 라인들(local word lines), 로컬 드레인 셀렉트 라인들(local drain select lines), 및/또는 로컬 소스 셀렉트 라인들(local source select lines)을 포함할 수 있다. 이 외에도, 로컬 라인들(LL)은 소스 라인(source line)과 같이 메모리 블록에 연결된 다양한 라인들을 포함할 수 있다.
페이지 버퍼 그룹(230)은, 메모리 셀 어레이(100)의 메모리 블록들에 연결된 비트 라인들(BL1~BLI)에 연결될 수 있다. 페이지 버퍼 그룹(230)은 비트 라인들(BL1~BLI)에 연결된 다수의 페이지 버퍼들(PB1~PBI)을 포함할 수 있다. 페이지 버퍼들(PB1~PBI)은 제어 로직(300)으로부터 출력된 페이지 버퍼 제어 신호들(PBSIGNALS)에 응답하여 동작할 수 있다. 예를 들면, 페이지 버퍼들(PB1~PBI)은 비트 라인들(BL1~BLI)을 통해 수신된 데이터를 임시로 저장하거나, 리드 동작 또는 검증 동작 시, 비트 라인들(BL1~BLI)의 전압 또는 전류를 센싱(sensing)할 수 있다.
컬럼 디코더(240)는, 제어 로직(300)으로부터 출력된 컬럼 어드레스(CADD)에 응답하여 입출력 회로(250)와 페이지 버퍼 그룹(230) 사이에서 데이터를 전달할 수 있다. 예를 들면, 컬럼 디코더(240)는 데이터 라인들(DL)을 통해 페이지 버퍼들(PB1~PBI)과 데이터를 주고받거나, 컬럼 라인들(CL)을 통해 입출력 회로(250)와 데이터를 주고받을 수 있다.
입출력 회로(250)는, 입출력 패드(DQ)를 통해 메모리 컨트롤러(1200)로부터 커맨드(CMD), 어드레스(ADD) 및 데이터를 수신할 수 있고, 메모리 셀 어레이(100)에서 리드된 데이터를 입출력 패드(DQ)를 통해 메모리 컨트롤러(1200)로 출력할 수 있다. 예를 들어, 입출력 회로(250)는 메모리 컨트롤러(1200)로부터 수신된 커맨드(CMD) 및 어드레스(ADD)를 제어 로직(300)에 전달하거나, 데이터(DATA)를 컬럼 디코더(240)와 주고받을 수 있다.
전류 감지 회로(260)는 리드 동작(read operation) 또는 검증 동작(verify operation)시, 허용 비트(VRY_BIT<#>)에 응답하여 기준 전류를 생성하고, 페이지 버퍼 그룹(230)으로부터 수신된 센싱 전압(VPB)과 기준 전류에 의해 생성된 기준 전압을 비교하여 패스 신호(PASS) 또는 페일 신호(FAIL)를 출력할 수 있다.
제어 로직(300)은 CE#, WE#, RE#, ALE, CLE 및 WP# 패드들을 통해 수신되는 신호들에 응답하여 커맨드(CMD) 및 어드레스(ADD)를 수신할 수 있다. 제어 로직(300)은 커맨드(CMD) 및 어드레스(ADD)를 수신한 것에 대한 응답으로, 주변 회로들(200)을 제어하기 위한 제어 신호들을 생성하고, 생성된 제어 신호들을 주변 회로들(200)로 출력할 수 있다. 예를 들어, 제어 신호들은, 동작 신호(OP_CMD), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIGNALS) 및 허용 비트(VRY_BIT<#>) 중 적어도 하나를 포함할 수 있다. 제어 로직(300)은, 동작 신호(OP_CMD)를 전압 생성 회로(210)로 출력하고, 로드 어드레스(RADD)를 로우 디코더(220)로 출력하고, 페이지 버퍼 제어 신호들(PBSIGNALS)을 페이지 버퍼 그룹(230)으로 출력하고, 허용 비트(VRY_BIT<#>)를 전류 감지 회로(260)로 출력할 수 있다. 또한, 제어 로직(300)은 패스 신호(PASS) 또는 페일 신호(FAIL)에 응답하여 검증 동작이 패스 또는 페일 되었는지를 판단할 수 있다.
도 4는 도 3의 메모리 셀 어레이의 일 실시예를 나타낸 도면이다.
도 4를 참조하면, 메모리 셀 어레이(100)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 3차원 구조를 가질 수 있다. 각 메모리 블록은 기판 위에 적층된 복수의 메모리 셀들을 포함할 수 있다. 이러한 복수의 메모리 셀들은 +X 방향, +Y 방향 및 +Z 방향을 따라 배열될 수 있다.
도 5는 도 4의 메모리 블록을 설명하기 위한 도면이다.
도 5를 참조하면, 도 4에 도시된 다수의 메모리 블록들(BLK1~BLKz) 중에서 제1 메모리 블록(BLK1)이 예시적으로 도시된다. 나머지 메모리 블록들(BLK2~BLKz)은 제1 메모리 블록(BLK1)과 동일한 형태를 가질 수 있다.
제1 메모리 블록(BLK1)은 비트 라인들(BL1~BLI)과 소스 라인(source line; SL) 사이에 연결된 다수의 셀 스트링들(cell strings; ST)을 포함할 수 있다. 예를 들면, 셀 스트링(ST)들은 비트 라인들(BL1~BLI)에 각각 연결되고, 소스 라인(SL)에 공통으로 연결될 수 있다. 셀 스트링(ST)들은 서로 유사하게 구성되므로, 이 중 제1 비트 라인(BL1)에 연결된 셀 스트링(ST)을 예를 들어 설명하면 다음과 같다.
셀 스트링(ST)은 소스 라인(SL)과 제1 비트 라인(BL1) 사이에서 서로 직렬로 연결된 소스 셀렉트 트랜지스터(source select transistor; SST), 제1 내지 제n 메모리 셀들(memory cells; F1~Fn; n은 양의 정수) 및 드레인 셀렉트 트랜지스터(drain select transistor; DST)를 포함할 수 있다. 소스 및 드레인 셀렉트 트랜지스터들(SST 및 DST)의 개수는 도 5에 도시된 개수로 한정되지 않는다. 소스 셀렉트 트랜지스터(SST)는 소스 라인(SL)과 제1 메모리 셀(F1) 사이에 연결될 수 있다. 제1 내지 제n 메모리 셀들(F1~Fn)은 소스 셀렉트 트랜지스터(SST)와 드레인 셀렉트 트랜지스터(DST) 사이에서 서로 직렬로 연결될 수 있다. 드레인 셀렉트 트랜지스터(DST)는 제n 메모리 셀(Fn)과 제1 비트 라인(BL1) 사이에 연결될 수 있다. 도면에는 도시되지 않았으나, 메모리 셀들(F1~Fn) 사이 또는 소스 셀렉트 트랜지스터(SST)와 드레인 셀렉트 트랜지스터(DST) 사이에 더미 셀들(dummy cells)이 더 연결될 수도 있다.
서로 다른 셀 스트링(ST)들에 포함된 소스 셀렉트 트랜지스터(SST)들의 게이트들은 소스 셀렉트 라인(source select line; SSL)에 연결될 수 있고, 제1 내지 제n 메모리 셀들(F1~Fn)의 게이트들은 제1 내지 제n 워드라인들(word lines; WL1~WLn)에 연결될 수 있고, 드레인 셀렉트 트랜지스터(DST)들의 게이트들은 드레인 셀렉트 라인들(drain select lines; DSL)에 연결될 수 있다. 여기서, 워드 라인들(WL1~WLn) 각각에 연결된 메모리 셀들의 그룹을 페이지(page; PG)라 한다. 예를 들면, 서로 다른 셀 스트링(ST)들에 포함된 메모리 셀들(F1~Fn) 중 제1 워드 라인(WL1)에 연결된 제1 메모리 셀(F1)들의 그룹이 하나의 물리 페이지(physical page; PPG)가 될 수 있다. 프로그램 및 리드 동작들은 물리 페이지(PPG) 단위로 수행될 수 있다.
도 6은 도 4의 메모리 블록이 3차원으로 구성된 실시예를 설명하기 위한 도면이다.
도 6을 참조하면, 도 4에 도시된 다수의 메모리 블록들(BLK1~BLKz) 중에서 제1 메모리 블록(BLK1)이 예시적으로 도시된다. 나머지 메모리 블록들(BLK2~BLKz)은 제1 메모리 블록(BLK1)과 동일한 형태를 가질 수 있다.
3차원 구조로 구현된 제1 메모리 블록(BLK1)은 기판 상에 수직한(Z 방향) I자 형태로 형성될 수 있으며, 비트 라인들(BL)과 소스 라인(SL) 사이에 배열된 다수의 셀 스트링(ST)들을 포함할 수 있다. 또는, 소스 라인(SL) 대신 웰(well)이 형성될 수도 있다. 이러한 구조를 BiCS(Bit Cost Scalable)라고 부르기도 한다. 예를 들면, 소스 라인(SL)이 기판의 상부에 수평하게 형성된 경우, BiCS 구조를 갖는 셀 스트링(ST)들은 소스 라인(SL)의 상부에 수직한 방향(Z 방향)으로 형성될 수 있다.
더욱 구체적으로 설명하면, 셀 스트링(ST)들은 제1 방향(X 방향) 및 제2 방향(Y 방향)으로 각각 배열될 수 있다. 셀 스트링(ST)들은 서로 이격되어 적층된 소스 셀렉트 라인(SSL)들, 워드 라인들(WL) 및 드레인 셀렉트 라인(DSL)들을 포함할 수 있다. 소스 셀렉트 라인(SSL)들, 워드 라인들(WL) 및 드레인 셀렉트 라인(DSL)들의 개수는 도면에 도시된 개수에 한정되지 않으며, 메모리 장치(1100)에 따라 다를 수 있다. 셀 스트링(ST)들은 소스 셀렉트 라인(SSL)들, 워드 라인들(WL) 및 드레인 셀렉트 라인(DSL)들을 수직으로 관통하는 수직 채널막들(CH)과, 드레인 셀렉트 라인(DSL)들의 상부로 돌출된 수직 채널막들(CH)의 상부에 접하며 제2 방향(Y 방향)으로 연장된 비트 라인들(BL)을 포함할 수 있다. 메모리 셀들은 워드 라인들(WL)과 수직 채널막들(CH) 사이에 형성될 수 있다. 비트 라인들(BL)과 수직 채널막들(CH) 사이에는 콘택 플러그(CT)가 더 형성될 수도 있다.
도 7은 도 4의 메모리 블록이 3차원으로 구성된 다른 실시예를 설명하기 위한 도면이다.
도 7을 참조하면, 도 4에 도시된 다수의 메모리 블록들(BLK1~BLKz) 중에서 제1 메모리 블록(BLK1)이 예시적으로 도시된다. 나머지 메모리 블록들(BLK2~BLKz)은 제1 메모리 블록(BLK1)과 동일한 형태를 가질 수 있다.
3차원 구조로 구현된 제1 메모리 블록(BLK1)은 기판 상에 수직한 방향(Z 방향)의 U자 형태로 형성될 수 있으며, 비트 라인들(BL)과 소스 라인(SL) 사이에 연결되며 쌍을 이루는 소스 스트링들(ST_S)과 드레인 스트링들(ST_D)을 포함할 수 있다. 소스 스트링들(ST_S)과 드레인 스트링들(ST_D)은 파이프 게이트(pipe gate; PG)를 통해 서로 연결되어 U자 구조를 이룰 수 있다. 파이프 게이트(PG)는 파이프 라인(PL) 내에 형성될 수 있다. 보다 구체적으로 설명하면, 소스 스트링들(ST_S)은 소스 라인(SL)들과 파이프 라인(PL) 사이에서 수직하게 형성될 수 있고, 드레인 스트링들(ST_D)은 비트 라인들(BL)과 파이프 라인(PL) 사이에서 수직하게 형성될 수 있다. 이러한 구조를 P-BiCS(Pipe-shaped Bit Cost Scalable)라고 부르기도 한다.
더욱 구체적으로 설명하면, 드레인 스트링들(ST_D) 및 소스 스트링들(ST_S)은 제1 방향(X 방향) 및 제2 방향(Y 방향)으로 각각 배열될 수 있으며, 제2 방향(Y)을 따라 드레인 스트링들(ST_D)과 소스 스트링들(ST_S)이 서로 교대로 배열될 수 있다. 드레인 스트링들(ST_D)은 서로 이격되어 적층된 워드 라인들(WL) 및 드레인 셀렉트 라인(DSL)과, 워드 라인들(WL) 및 드레인 셀렉트 라인(DSL)을 수직으로 관통하는 드레인 수직 채널막들(D_CH)을 포함할 수 있다. 소스 스트링들(ST_S)은 서로 이격되어 적층된 워드 라인들(WL) 및 소스 셀렉트 라인(SSL)과, 워드 라인들(WL) 및 소스 셀렉트 라인(SSL)을 수직으로 관통하는 소스 수직 채널막들(S_CH)을 포함할 수 있다. 드레인 수직 채널막들(D_CH)과 소스 수직 채널막들(S_CH)은 파이프 라인(PL) 내에서 파이프 게이트(PG)에 의해 서로 연결될 수 있다. 비트 라인들(BL)은 드레인 셀렉트 라인(DSL)의 상부로 돌출된 드레인 수직 채널막들(D_CH)의 상부에 접하며 제2 방향(Y 방향)으로 연장될 수 있다.
도 8은 일 실시예에 따른 메모리 장치들에 포함된 블록들을 포함하는 존을 구성하는 방법을 설명하기 위한 개념도이다.
도 8을 참조하면, 메모리 컨트롤러(1200)는, 채널들(CH~CH4)을 통해 연결된 메모리 장치들(LUN1~LUN8) 중 적어도 일부의 메모리 장치들 각각에 포함된 블록들로 존(zone1~zonen)을 구성하고, 존 단위로 메모리 장치들에 데이터를 저장하거나 메모리 장치들에 저장된 데이터를 리드할 수 있다.
예를 들어, 도 8과 같이 제1 채널(CH1)을 통해 제1 메모리 장치(LUN1)와 제5 메모리 장치(LUN5)가 메모리 컨트롤러(1200)와 연결되고, 제2 채널(CH2)을 통해 제2 메모리 장치(LUN2)와 제6 메모리 장치(LUN6)가 메모리 컨트롤러(1200)와 연결되고, 제3 채널(CH3)을 통해 제3 메모리 장치(LUN3)와 제7 메모리 장치(LUN7)가 메모리 컨트롤러(1200)와 연결되고, 제4 채널(CH4)을 통해 제4 메모리 장치(LUN4)와 제8 메모리 장치(LUN8)가 메모리 컨트롤러(1200)와 연결될 수 있다.
이러한 예시에서, 서로 독립된 채널을 통해 메모리 컨트롤러(1200)와 연결되는 메모리 장치들이 존으로 구성될 수 있다. 예를 들어, 제1 채널(CH1)과 연결된 제1 메모리 장치(LUN1)의 제1 블록 그룹(이때, 블록 그룹은 2개 이상의 블록들의 그룹으로 지칭될 수 있음), 제2 채널(CH2)과 연결된 제2 메모리 장치(LUN2)의 제1 블록 그룹, 제3 채널(CH3)과 연결된 제3 메모리 장치(LUN3)의 제1 블록 그룹, 제4 채널(CH4)과 연결된 제4 메모리 장치(LUN4)의 제1 블록 그룹을 결합하여 제1 존(zone1)이 구성될 수 있다. 또한, 제1 채널(CH1)과 연결된 제1 메모리 장치(LUN1)의 제n 블록 그룹(n은 2 이상의 자연수), 제2 채널(CH2)과 연결된 제2 메모리 장치(LUN2)의 제n 블록 그룹, 제3 채널(CH3)과 연결된 제3 메모리 장치(LUN3)의 제n 블록 그룹, 제4 채널(CH4)과 연결된 제4 메모리 장치(LUN4)의 제n 블록 그룹을 결합하여 제n 존(zonen)이 구성될 수 있다.
이때, 하나의 존을 구성하는 메모리 장치들(LUN1~LUN8) 각각의 블록들은 서로 동일한 물리 주소를 가질 수 있다. 예를 들어, 제1 메모리 장치(LUN1)의 제1 블록 그룹, 제2 메모리 장치(LUN2)의 제1 블록 그룹, 제3 메모리 장치(LUN3)의 제1 블록 그룹, 제4 메모리 장치(LUN4)의 제1 블록 그룹은 메모리 장치 내에서 동일한 물리 주소를 가질 수 있다.
같은 방식으로, 제1 채널(CH1)과 연결된 제5 메모리 장치(LUN5)의 블록들(또는 블록 그룹), 제2 채널(CH2)과 연결된 제6 메모리 장치(LUN6)의 블록들, 제3 채널(CH3)과 연결된 제7 메모리 장치(LUN7)의 블록들, 제4 채널(CH4)과 연결된 제8 메모리 장치(LUN8)의 블록들을 결합하여 또 다른 제1 존(zone1) 내지 제n 존(zonen, n은 2 이상의 자연수)이 구성될 수 있다.
상술한 것처럼, 서로 독립한 채널을 통해 메모리 컨트롤러(1200)와 연결되는 메모리 장치들을 이용해 존들(zone1~zonen)이 구성될 경우, 채널 병목 현상을 최소화하여 존들(zone1~zonen)에 대한 쓰기 동작이나 리드 동작을 수행할 수 있다.
한편, 존들(zone1~zonen)이 반드시 서로 독립한 채널을 통해 메모리 컨트롤러(1200)와 연결되는 메모리 장치들로 구성되지 않을 수 있다. 예를 들어, n개의 존들(zone1~zonen)을 구성하는 메모리 장치들 중 일부는 서로 동일한 채널을 통해 메모리 컨트롤러(1200)와 연결될 수도 있다.
또한, 도 8에서는 존 하나를 구성하는 데 4개의 메모리 장치들에 포함된 블록들을 이용하였으나, 메모리 장치들의 개수는 다양하게 결정될 수 있다. 예를 들어, 메모리 컨트롤러(1200)와 연결된 모든 메모리 장치들 각각의 블록들이 결합되어 하나의 존이 구성될 수도 있다. 여기서, 하나의 존을 구성하는 메모리 장치들의 개수는 존의 크기(size), 각 메모리 장치에 포함된 블록들의 개수 등에 따라 결정될 수 있다.
도 9는 도 8에 따른 존을 설명하기 위한 개념도이다.
도 9를 참조하여, 도 8에 도시된 존들(zone1~zonen) 중 제1 존(zone1)을 대상으로 존의 개념을 설명하지만, 이에 한정되지 않으며 존들(zone1~zonen) 각각에 대해 동일하게 적용될 수 있는 것으로 해석되어야 한다.
도 9를 참조하면, 제1 존(zone1)은 제1 메모리 장치(LUN1)의 블록들, 제2 메모리 장치(LUN2)의 블록들, 제3 메모리 장치(LUN3)의 블록들, 및 제4 메모리 장치(LUN4)의 블록들로 구성될 수 있다. 이때, 제1 존(zone1)은 제1 내지 제4 메모리 장치들(LUN1~LUN4)의 물리 주소와 대응하는(또는 매칭하는) 논리 주소들(VPN0~VPNt)을 가질 수 있다.
예를 들어, 첫 번째 논리 주소(VPN0, 이하 시작 논리 주소로 지칭될 수 있음) 내지 p번째(p는 2 이상의 자연수) 논리 주소(미도시)는 제1 메모리 장치(LUN1)의 물리 주소들(예를 들면 페이지 주소)과 대응할 수 있다. 또한, p+1번째 논리 주소(VPNp) 내지 2p번째 논리 주소(미도시)는 제2 메모리 장치(LUN2)의 물리 주소들과 대응할 수 있다. 또한, 2p+1번째 논리 주소(VPNp) 내지 3p번째 논리 주소(미도시)는 제3 메모리 장치(LUN3)의 물리 주소들과 대응할 수 있다. 또한, 3p+1번째 논리 주소(VPN3p) 내지 t(3p+1보다 큰 자연수로, 4p-1과 동일할 수 있음)번째 논리 주소(VPNt)는 제4 메모리 장치(LUN4)의 물리 주소들과 대응할 수 있다. 여기서, t번째 논리 주소(VPNt)는 제1 존(zone1)을 구성하는 마지막 논리 주소일 수 있다.
존 하나를 구성하는 메모리 장치들 각각의 저장 공간은 서로 동일할 수 있다. 다른 표현으로, 제1 메모리 장치(LUN1)와 대응하는 논리 주소의 간격, 제2 메모리 장치(LUN2)와 대응하는 논리 주소의 간격, 제3 메모리 장치(LUN3)와 대응하는 논리 주소의 간격, 및 제4 메모리 장치(LUN4)와 대응하는 논리 주소의 간격은 모두 동일할 수 있다.
존들(zone1~zonen) 각각은 쓰기 동작을 시작할 논리 주소를 지시하는 쓰기 포인터가 할당될 수 있다. 쓰기 포인터는 메모리 컨트롤러(1200)가 결정하여 각 존들에 할당할 수 있다. 예를 들어, 메모리 컨트롤러(1200)는 각 존의 시작 논리 주소(VPN0)를 지시하도록 쓰기 포인터의 초기값을 결정할 수 있다. 예를 들어, 제1 존(zone1)에 대응하는 쓰기 포인터(WP1)의 초기값은 제1 존(zone1)의 시작 논리 주소(VPN0)를 지시할 수 있다.
존들(zone1~zonen) 각각은 쓰기 포인터에 의해 지시되는 논리 주소부터 순차적으로(sequentially) 쓰기 동작을 수행하도록 구성될 수 있다. 이때, 쓰기 동작이 종료되면, 메모리 컨트롤러(1200)는 다음 쓰기 동작을 시작할 논리 주소를 지시하도록 쓰기 포인터를 갱신할 수 있다. 예를 들어, 제1 존(zone1)에 대한 쓰기 동작은, 제1 존(zone1)의 시작 논리 주소(VPN0)부터 순차적으로 수행될 수 있다. 쓰기 동작이 종료되면, 제1 존(zone1)의 쓰기 포인터(WP1)는 쓰기 동작이 종료된 제3 메모리 장치(LUN3)의 특정 물리 주소와 대응하는 논리 주소를 지시하도록 갱신될 수 있다. 따라서, 다음 제1 존(zone1)에 대한 쓰기 동작은 갱신된 제1 존(zone1)의 쓰기 포인터(WP1)가 지시하는 논리 주소부터 시작될 수 있다.
존들(zone1~zonen) 각각은 데이터를 처음부터 다시 쓸 수 있도록 리셋될 수 있다. 예를 들어, 호스트(2000)로부터 존들(zone1~zonen) 중 제1 존(zone1)에 대한 리셋 요청을 수신하면, 메모리 컨트롤러(1200)는, 제1 존(zone1)의 쓰기 포인터(WP1)가 시작 논리 주소를 지시하도록 쓰기 포인터를 갱신(또는 리셋)함으로써 제1 존(zone1)을 리셋할 수 있다. 또한, 존이 리셋되는 경우 또는 리셋된 존이 오픈 존 상태로 전환되는 경우에, 리셋된 존의 논리 주소들과 대응하는 메모리 장치들의 물리 주소들(또는 해당 물리 주소들과 대응하는 메모리 블록들)은 소거(erase)될 수 있다.
도 10은 도 8에 따른 존을 기초로 호스트와 메모리 시스템 사이의 동작을 설명하기 위한 예시도이다.
도 10을 참조하면, 호스트(2000)는 메모리 컨트롤러(1200)에 존들(zone1~zonen) 중 하나를 지시하는 쓰기 요청(WRQ) 및 저장될 데이터(DATA)를 메모리 컨트롤러(1200)로 전송할 수 있다. 쓰기 요청(WRQ)은 호스트(2000)에 의해 데이터(DATA)와 매핑된 호스트 논리 주소(LBA, Logical Block Address)를 포함할 수 있다. 호스트 논리 주소(LBA)는 존들(zone1~zonen) 각각의 논리 주소들(예를 들어 도 11의 VPN0~VPNt)과 미리 매핑될 수 있다. 예를 들어, 호스트 논리 주소(LBA)의 첫 번째 논리 주소(LBA 0)부터 m-1(m은 2 이상의 자연수)번째 호스트 논리 주소(LBA m-1)는 제1 존(zone1) 내지 제n 존(zonen)의 논리 주소들(VPN0~VPNt)과 매핑될 수 있다. 호스트 논리 주소(LBA)가 각 존의 논리 주소와 1:1로 매핑될 수도 있고, 하나의 호스트 논리 주소(LBA)가 각 존의 2개 이상의 논리 주소들과 매핑될 수도 있다.
메모리 컨트롤러(1200)는, 호스트 논리 주소(LBA)와 존들(zone1~zonen) 각각의 논리 주소들 사이의 매핑 정보를 참조하여, 호스트 논리 주소(LBA)와 대응하는 타겟 존을 결정할 수 있다. 따라서, 메모리 컨트롤러(1200)는 쓰기 요청(WRQ)에 포함된 호스트 논리 주소(LBA)를 이용하여 타겟 존을 결정할 수 있다. 다른 표현으로, 호스트(2000)는, 쓰기 요청(WRQ)에 포함된 호스트 논리 주소(LBA)를 통해 타겟 존을 간접적으로 지시할 수 있다. 메모리 컨트롤러(1200)는, 타겟 존과 대응하는 쓰기 포인터를 참조하여, 쓰기 동작을 시작할 타겟 존의 논리 주소를 결정할 수 있다.
다음으로, 메모리 컨트롤러(1200)는, 결정된 타겟 존의 논리 주소와 대응하는 메모리 장치(1100)의 물리 주소(PADD)를 결정하고, 결정된 물리 주소(PADD) 및 쓰기 요청(WRQ)에 대응하는 쓰기 커맨드(PCMD, 또는 프로그램 커맨드)를 호스트(2000)로부터 수신한 데이터(DATA)와 함께 메모리 장치(1100)로 전송할 수 있다. 예를 들어, 메모리 컨트롤러(1200)는, 내부 메모리(1210)에 저장되어 존의 논리 주소와 메모리 장치의 물리 주소 사이의 매핑 관계를 지시하는 어드레스 맵 테이블들(address map tables)을 참조하여 물리 주소(PADD)를 결정할 수 있다.
존들(zone1~zonen) 각각은 다양한 상태들(states)을 가질 수 있다. 예를 들어, 존들(zone1~zonen) 각각은, 오픈 존 상태(opened zone state), 닫힌 존 상태(closed zone state), 빈 존 상태(empty zone state), 풀 존 상태(full zone state) 중 하나의 상태를 가질 수 있다. 빈 존 상태는 아직 어떠한 데이터도 저장되어 있지 않은 존을 의미할 수 있다. 풀 존 상태는 데이터가 가득 찬 존을 의미할 수 있다. 빈 존 상태, 풀 존 상태 또는 닫힌 존 상태에 있는 존에는 어떠한 데이터도 저장할 수 없을 수 있고, 오픈 존 상태에 있는 존들을 대상으로 쓰기 동작이 수행될 수 있다. 특히, 오픈 존 상태에 있는 존들이 다수이고, 오픈 존 상태에 있는 2개 이상의 존들에 대한 쓰기 요청을 호스트(2000)로부터 수신하는 경우, 메모리 컨트롤러(1200)는, 오픈 상태에 있는 2개 이상의 존들에 동시에 쓰기 동작을 수행할 수 있다.
한편, 메모리 컨트롤러(1200)가 호스트(2000)로부터 존들(zone1~zonen) 중 적어도 하나에 대한 오픈 요청을 수신하면, 메모리 컨트롤러(1200)는, 빈 존 상태에 있는 존들 중 적어도 하나를 오픈 존 상태로 변경할 수 있다. 이때, 메모리 컨트롤러(1200)는, 오픈 존 상태로 변경된 존에 대응하는 쓰기 포인터(또는 그 초기값)를 결정할 수 있다. 예를 들어, 메모리 컨트롤러(1200)는 각 존의 시작 논리 주소(VPN0)를 지시하도록 쓰기 포인터의 초기값을 결정할 수 있다. 오픈 존 상태에 있는 존들에 데이터가 가득 차면, 메모리 컨트롤러(1200)는 해당하는 존들의 상태를 풀 존 상태로 변경할 수 있다.
메모리 컨트롤러(1200)는, 호스트(2000)로부터 존들(zone1~zonen) 중 적어도 하나에 대한 클로즈 요청을 수신하면, 메모리 컨트롤러(1200)는, 오픈 존 상태에 있는 존들 중 클로즈 요청에 대응하는 존을 닫힌 존 상태로 변경할 수 있다. 이때, 메모리 컨트롤러(1200)는, 닫힌 존 상태로 변경된 존에 쓰기 동작을 수행하기 위한 리소스를 반환할 수 있다.
각 존들(zone1~zonen)은 호스트(2000)에 의해 지정되어 호스트(2000)에서 구동되는 응용 프로그램마다 독립적으로 사용될 수 있다. 또한, 하나의 존 안에 동일한 응용 프로그램에서 사용하는 데이터가 순차적으로 저장되어 있고, 존 단위로 데이터 전체가 삭제되기 때문에 가비지 컬렉션이 발생하지 않거나 최소화될 수 있는 장점이 있다.
또한, 각 존들(zone1~zonen)은 서로 동일한 물리적 저장 공간을 가지고, 존 내에서 순차쓰기로만 데이터가 저장되므로, 존 내 비어있는 영역을 일일이 테이블로 관리할 필요가 없이, 쓰기 포인터 하나만을 이용하여 쓰기가 가능할 수 있다. 따라서, 존들(zone1~zonen)을 관리하는 데 필요한 메모리 공간을 최소화할 수 있는 장점이 있다.
도 11은 도 8에 따른 다수의 존들에 대한 쓰기 동작을 설명하기 위한 개념도이다.
도 11을 참조하여, 제1 존(zone1)과 제n 존(zonen)을 대상으로 쓰기 동작을 수행하는 개념을 설명하지만, 이에 한정되는 것은 아니며 다수의 존들(zone1~zonen)에 대한 쓰기 동작으로 확장하여 해석되어야 한다.
제1 존(zone1)과 제n 존(zonen)이 모두 오픈 존 상태에 있고, 호스트(2000)로부터 제1 존(zone1)과 제n 존(zonen)에 대한 쓰기 요청(WRQ)을 최초로 수신하는 경우, 제1 존(zone1)의 쓰기 포인터(WP1)와 제n 존(zonen)의 쓰기 포인터(WPn)는 모두 존의 시작 논리 주소(VPN0)를 지시할 수 있다. 이때, 제1 존(zone1)과 제n 존(zonen)의 시작 논리 주소(VPN0)는 제1 메모리 장치(LUN1)의 물리 주소와 대응할 수 있다.
따라서, 메모리 컨트롤러(1200)가 제1 존(zone1)과 제n 존(zonen)에 대한 쓰기 동작이 모두 제1 메모리 장치(LUN1)에서 수행되어야 하므로, 2개의 존에 대한 동시 쓰기가 어려워질 수 있다.
즉, 존들(zone1~zonen) 각각의 쓰기 포인터의 초기값이 시작 논리 주소를 지시하도록 결정되고, 각 존에 대해 최초로 쓰기 동작이 수행될 경우, 특정 메모리 장치(예를 들어 시작 논리 주소와 대응하는 메모리 장치)로 쓰기 커맨드가 집중되기 때문에 동시 쓰기가 불가능하거나 지연되는 문제가 발생할 수 있다.
또한, 존들(zone1~zonen) 중 적어도 일부에 데이터가 쓰여지고, 데이터가 쓰여진 존들 중 일부가 리셋되는 경우, 리셋된 존들의 논리 주소들과 대응하는 메모리 장치의 물리 주소들(또는 물리 주소들과 대응하는 메모리 블록들)은 소거(erase)될 수 있다. 이때, 존들(zone1~zonen) 각각의 시작 논리 주소(VPN0)와 대응하는 메모리 장치가 특정 메모리 장치(예를 들어 제1 메모리 장치(LUN1))로 고정되는 경우, 시작 논리 주소(VPN0)와 대응하는 메모리 장치의 메모리 블록들은 자주 소거되어야 할 수 있다. 따라서, 시작 논리 주소(VPN0)와 대응하는 메모리 장치에서 수명 저하가 집중적으로 발생하는 문제가 있다.
도 12는 도 8에 따른 다수의 존들에 대응하는 시작 오프셋을 설명하기 위한 개념도이다.
일 실시예에 따르면, 쓰기 커맨드가 특정 메모리 장치로 집중되는 문제를 해결하기 위하여, 메모리 컨트롤러(1200)는, 쓰기 포인터 이외에 시작 오프셋을 추가로 사용할 수 있다.
일 실시 예에서, 시작 오프셋은 존을 구성하는 메모리 장치들 중 적어도 하나의 메모리 장치의 물리 주소를 단위로 하는 오프셋일 수 있다. 존을 구성하는 메모리 장치들 중 어느 하나의 메모리 장치의 물리 주소는 메모리 장치에 포함된 다이 전체의 물리 주소, 플레인 전체의 물리 주소 또는 블록 전체의 물리 주소일 수 있다.
일 실시 예에서, 메모리 장치의 물리 주소는, 논리 주소에 맵핑될 수 있으므로, 시작 오프셋은, 존을 구성하는 메모리 장치들 중 하나가 차지하는 논리 주소의 간격에 기초하여 결정될 수 있다.
예를 들어, 도 12를 참조하면, 메모리 컨트롤러(1200)는, 제1 존(zone1)에서 제1 메모리 장치(LUN1) 내지 제4 메모리 장치(LUN4) 중 하나가 차지하는 논리 주소의 간격(onedieitv)에 기초하여 제1 존(zone1)의 시작 오프셋(doffset1)을 결정할 수 있다. 구체적으로, 메모리 컨트롤러(1200)는, 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)의 배수 단위로 시작 오프셋(doffset1)을 결정할 수 있다. 즉, 시작 오프셋(doffset1)은, 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)으로 결정될 수도 있고, 논리 주소의 간격(onedieitv)의 2배 내지 k배(k는 1 이상의 자연수) 등으로 결정될 수 있다. 이때, 메모리 컨트롤러(1200)는, 빈 존 상태에 있는 존들 중 적어도 하나를 오픈 존 상태로 변경할 때, 오픈 존 상태로 변경된 존에 대응하는 시작 오프셋도 결정할 수 있다.
시작 오프셋이 존들(더욱 상세하게 오픈 존 상태에 있는 존들)에 대해 결정된 후 호스트(2000)로부터 메모리 컨트롤러(1200)에 존들(zone1~zonen) 중 하나를 지시하는 존 정보(ZI)를 포함하는 쓰기 요청(WRQ)을 수신하면, 메모리 컨트롤러(1200)는, 존 정보와 대응하는 존의 쓰기 포인터와 시작 오프셋을 이용하여 쓰기 동작을 시작할 논리 주소를 결정할 수 있다. 더욱 상세하게, 쓰기 포인터에 의해 지시되는 논리 주소를 시작 오프셋만큼 이동(shift)시켜 쓰기 동작을 시작할 논리 주소를 결정할 수 있다.
예를 들어, 도 12에 도시한 것과 같이, 제1 존(zone1)에 대응하는 시작 오프셋(doffset1)이 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)으로 결정되는 경우를 고려할 수 있다. 이때, 제1 존(zone1)에 대한 최초 쓰기 요청(즉, 제1 존(zone1)의 쓰기 포인터(WP1)가 초기값인 경우에 해당할 수 있음)이 수신되면, 메모리 컨트롤러(1200)는, 쓰기 포인터(WP1)가 지시하는 시작 논리 주소(VPN0)를 시작 오프셋(doffset1)만큼 이동시켜 p+1번째 논리 주소(VPNp)를 쓰기 동작을 시작할 논리 주소로 결정할 수 있다. 이때, 시작 논리 주소(VPN0)는 제1 메모리 장치(LUN1)의 물리 주소와 대응하고 p+1번째 논리 주소(VPNp)는 제2 메모리 장치(LUN2)의 물리 주소와 대응할 수 있다. 따라서, 존들(zone1~zonen) 각각에 대응하는 시작 오프셋(doffset1)을 이용함으로써 쓰기 동작을 시작할 메모리 장치를 각 존마다 달리 설정할 수 있어 특정 메모리 장치에 집중되는 쓰기 요청을 다른 메모리 장치로 분산시킬 수 있다. 또한, 쓰기 요청이 메모리 장치들에 균등하게 분산됨에 따라 데이터가 최대한 다수의 메모리 장치들에 분산하여 저장되면, 추후 존을 리셋함에 따라 소거 동작이 리셋된 존의 데이터 저장 영역과 대응하는 메모리 장치들에서 수행될 때, 소거 동작이 여러 메모리 장치들에 분산될 수 있다. 따라서, 특정 메모리 장치의 수명이 다른 메모리 장치들보다 빠르게 저하되는 것을 방지할 수 있다.
도 13은 도 12에 따른 시작 오프셋을 다수의 존들에 적용하는 방법을 설명하기 위한 개념도이다.
도 13을 참조하여, 제1 내지 제3 존들(zone1~zone3)에 대응하는 시작 오프셋들(doffset1~doffset3)을 결정하는 방법을 설명하며, 나머지 다른 존들에도 동일하게 적용될 수 있다.
예를 들어, 제1 존(zone1)부터 제3 존(zone3)까지 순차적으로 오픈 존 상태로 변경되고, 그에 따라 제1 존(zone1) 부터 제3 존(zone3)까지 순차적으로 시작 오프셋을 결정해야 하는 경우, 메모리 컨트롤러(1200)는, 시작 오프셋을 결정할 때마다 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)에 k(k는 1 이상의 자연수) 배 만큼 시작 오프셋을 증가시킬 수 있다.
먼저, 메모리 컨트롤러(1200)는, 제1 존(zone1)에 대한 시작 오프셋(doffset1)을 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)으로 결정할 수 있다. 다른 실시예로, 처음으로 결정되는 제1 존(zone1)에 대한 시작 오프셋(doffset1)은 '0'으로 결정될 수도 있다. 다음으로, 메모리 컨트롤러(1200)는, 제1 존(zone1)에 대하여 결정된 시작 오프셋(doffset1)을 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)만큼(또는 간격의 k 배만큼) 증가시킨 값을, 제2 존(zone2)에 대한 시작 오프셋(doffset2)으로 결정할 수 있다. 다음으로, 메모리 컨트롤러(1200)는, 제2 존(zone2)에 대하여 결정된 시작 오프셋(doffset2)을 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)만큼(또는 간격의 k 배만큼) 증가시킨 값을, 제3 존(zone3)에 대한 시작 오프셋(doffset3)으로 결정할 수 있다.
상술한 것과 같이 시작 오프셋들(doffset1~doffset3)이 결정될 경우, 제1 존(zone1)에 대한 최초 쓰기 동작(최초 쓰기 동작에서 쓰기 포인터는 시작 논리 주소를 지시할 수 있음)은 p+1번째(p는 1 이상의 자연수) 논리 주소(VPNp)와 대응하는 제2 메모리 장치(LUN2)부터 수행되고, 제2 존(zone2)에 대한 최초 쓰기 동작은 2p+1번째 논리 주소(VPN2p)에 대응하는 제3 메모리 장치(LUN3)부터 수행되고, 제3 존(zone3)에 대한 최초 쓰기 동작은 3p+1번째 논리 주소(VPN3p)와 대응하는 제4 메모리 장치(LUN4)부터 수행될 수 있다.
한편, 쓰기 포인터가 지시하는 논리 주소를 시작 오프셋만큼 이동시킨 논리 주소가 존의 마지막 논리 주소를 초과하는 경우가 발생할 수 있다.
예를 들어, 메모리 컨트롤러(1200)가, 제1 존(zone1)에 대한 시작 오프셋(doffset1)을 결정하고, 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)에 3 배만큼 시작 오프셋(doffset1)을 증가시킨 값을 제2 존(zone2)에 대한 시작 오프셋(doffset2)으로 결정하는 경우, 제2 존(zone2)에 대한 시작 오프셋(doffset2)만큼 제2 존(zone2)의 쓰기 포인터(예를 들면 쓰기 포인터의 초기값)가 지시하는 시작 논리 주소(VPN0)를 이동시킨 논리 주소는 마지막 논리 주소(VPNt)를 초과할 수 있다. 이 경우, 초과된 논리 주소의 간격만큼 쓰기 포인터가 지시하는 논리 주소를 추가로 이동시킴으로써, 쓰기 동작을 시작할 논리 주소를 결정할 수 있다. 따라서, 제2 존(zone2)에 대한 최초 쓰기 동작이 시작 논리 주소(VPN0)부터 시작될 수 있다.
도 14는 메모리 장치의 상태를 고려하여 시작 오프셋을 다수의 존들에 적용하는 방법을 설명하기 위한 개념도이다.
일 실시예에서, 메모리 컨트롤러(1200)는, 메모리 장치들의 아이들(idle)/비지(busy) 상태를 고려하여 시작 오프셋을 결정할 수도 있다. 더욱 상세하게, 메모리 컨트롤러(1200)는, 시작 논리 주소(VPN0)를 시작 오프셋만큼 이동시킨 논리 주소가 메모리 장치들 중 아이들(idle) 상태인 메모리 장치의 물리 주소와 대응하도록, 시작 오프셋을 결정할 수 있다. 여기서, 아이들(idle) 상태인지 여부는 시작 오프셋을 결정하는 시점을 기준으로 메모리 컨트롤러(1200)가 RB 패드(RB)로부터 수신된 레디-비지 신호를 참조하여 판단할 수 있다.
예를 들어, 도 14를 참조하면, 메모리 컨트롤러(1200)는, 호스트(2000)로부터 수신한 제1 존(zone1)에 대한 오픈 요청에 대한 응답으로, 제1 존(zone1)의 상태를 오픈 존 상태로 변경하고, 제1 존(zone1)의 시작 논리 주소(VPN0)를 시작 오프셋(doffset1)만큼 이동시킨 논리 주소가 아이들 상태인 제1 메모리 장치(LUN1)의 물리 주소와 대응하도록, 시작 오프셋(doffset1)을 '0'으로 결정할 수 있다.
메모리 컨트롤러(1200)는, 호스트(2000)로부터 수신한 제2 존(zone2)에 대한 오픈 요청에 대한 응답으로, 제2 존(zone2)의 상태를 오픈 존 상태로 변경하고, 제2 존(zone2)의 시작 논리 주소(VPN0)를 시작 오프셋(doffset2)만큼 이동시킨 논리 주소(VPN2p)가 아이들 상태인 제3 메모리 장치(LUN3)의 물리 주소와 대응하도록, 시작 오프셋(doffset2)을 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)에 2 배로 결정할 수 있다.
메모리 컨트롤러(1200)는, 호스트(2000)로부터 수신한 제3 존(zone3)에 대한 오픈 요청에 대한 응답으로, 제3 존(zone3)의 상태를 오픈 존 상태로 변경하고, 제3 존(zone3)의 시작 논리 주소(VPN0)를 시작 오프셋(doffset3)만큼 이동시킨 논리 주소(VPN3p)가 아이들 상태인 제4 메모리 장치(LUN4)의 물리 주소와 대응하도록, 시작 오프셋(doffset3)을 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)에 3 배로 결정할 수 있다.
도 15는 메모리 장치의 소거 카운트를 고려하여 시작 오프셋을 다수의 존들에 적용하는 방법을 설명하기 위한 개념도이다.
일 실시예에서, 메모리 컨트롤러(1200)는, 존을 구성하는 메모리 장치들에 포함된 메모리 블록의 소거 카운트(erase count)를 고려하여 시작 오프셋을 결정할 수도 있다. 더욱 상세하게, 메모리 컨트롤러(1200)는, 시작 논리 주소(VPN0)를 시작 오프셋만큼 이동시킨 논리 주소가 메모리 장치들 중 소거 카운트(erase count, EC11, EC12, …, EC33, EC34)가 가장 작은 메모리 장치의 물리 주소와 대응하도록, 시작 오프셋을 결정할 수 있다. 여기서, 소거 카운트(EC11, EC12, …, EC33, EC34)는 존을 구성하는 메모리 장치들 각각의 메모리 블록들이 소거될 때마다 카운트되는 값일 수 있다. 예를 들어, 제1 존(zone1)을 구성하는 제1 메모리 장치(LUN1)의 메모리 블록들이 소거될 때마다 제1 메모리 장치(LUN1)의 소거 카운트(EC11)가 하나씩 증가할 수 있다. 또한, 각 메모리 장치들의 소거 카운트들은 존마다 개별적으로 카운트될 수 있다. 예를 들어, 제1 존(zone1)을 구성하는 제1 메모리 장치(LUN1)의 메모리 블록들에 대한 소거 카운트(EC11)와 제2 존(zone2)을 구성하는 제1 메모리 장치(LUN1)의 메모리 블록들에 대한 소거 카운트(EC21)는 서로 상이할 수 있다.
도 15를 참조하면, 메모리 컨트롤러(1200)는, 호스트(2000)로부터 수신한 제1 존(zone1)에 대한 오픈 요청에 대한 응답으로, 제1 존(zone1)의 상태를 오픈 존 상태로 변경할 수 있다. 다음으로, 메모리 컨트롤러(1200)는, 제1 존(zone1)의 시작 논리 주소(VPN0)를 시작 오프셋(doffset1)만큼 이동시킨 논리 주소가 제1 존(zone1)을 구성하는 메모리 장치들의 소거 카운트들(EC11, EC12, EC13, EC14) 중에서 가장 작은 소거 카운트를 갖는 메모리 장치의 물리 주소와 대응하도록, 시작 오프셋을 결정할 수 있다. 예를 들어, 제1 존(zone1)을 구성하는 메모리 장치들의 소거 카운트들(EC11, EC12, EC13, EC14) 중에서 제3 메모리 장치(LUN3)의 소거 카운트(EC13)가 가장 작은 경우, 메모리 컨트롤러(1200)는, 제1 존(zone1)의 시작 논리 주소(VPN0)를 시작 오프셋(doffset1)만큼 이동시킨 논리 주소(VPN2p)가 제3 메모리 장치(LUN3)의 물리 주소와 대응하도록, 시작 오프셋(doffset1)을 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)에 2 배로 결정할 수 있다.
제1 존(zone1)과 같은 방식으로, 제2 존(zone2)을 구성하는 메모리 장치들의 소거 카운트들(EC21, EC22, EC23, EC24) 중에서 제3 메모리 장치(LUN3)의 소거 카운트(EC23)가 가장 작은 경우, 메모리 컨트롤러(1200)는, 제2 존(zone2)의 시작 논리 주소(VPN0)를 시작 오프셋(doffset2)만큼 이동시킨 논리 주소(VPN2p)가 제3 메모리 장치(LUN3)의 물리 주소와 대응하도록, 시작 오프셋(doffset2)을 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)에 2 배로 결정할 수 있다.
제1 존(zone1)과 같은 방식으로, 제3 존(zone3)을 구성하는 메모리 장치들의 소거 카운트들(EC31, EC32, EC33, EC34) 중에서 제4 메모리 장치(LUN4)의 소거 카운트(EC34)가 가장 작은 경우, 메모리 컨트롤러(1200)는, 제3 존(zone3)의 시작 논리 주소(VPN0)를 시작 오프셋(doffset3)만큼 이동시킨 논리 주소(VPNp)가 제4 메모리 장치(LUN4)의 물리 주소와 대응하도록, 시작 오프셋(doffset3)을 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)에 3배로 결정할 수 있다.
도 16은 도 1에 따른 메모리 컨트롤러의 구성을 나타낸 예시도이다.
도 16을 참조하면, 메모리 컨트롤러(1200)는 내부 메모리(Internal Memory; 1210), 중앙 처리 장치(Central Processing Unit; CPU; 1220), 에러 정정 블록(Error Correction Block; 1230), 호스트 인터페이스(Host Interface; 1240), 버퍼 메모리 인터페이스(Buffer Memory Interface; 1250) 및 메모리 인터페이스(Memory Interface; 1260)를 포함할 수 있다.
내부 메모리(1210)는 메모리 컨트롤러(1200)의 동작에 필요한 다양한 정보들을 저장할 수 있다. 예를 들면, 내부 메모리(1210)는 존의 논리 주소와 메모리 장치의 물리 주소 사이의 매핑 관계를 지시하는 어드레스 맵 테이블들(address map tables)을 포함할 수 있다. 또한, 내부 메모리(1210)는 존들(zone1~zonen) 각각에 대한 상태(state), 쓰기 포인터, 시작 오프셋 등을 저장할 수 있다. 예를 들어, 내부 메모리(1210)는 존들(zone1~zonen) 각각에 대한 시작 오프셋들을 큐(queue)를 이용하여 저장할 수 있다. 메모리 컨트롤러(1200)는 호스트(2000)로부터 오픈 요청을 수신하면, 내무 메모리(1210)의 큐에 저장된 시작 오프셋을 꺼내고(get), 꺼낸 시작 오프셋을 오픈 요청과 대응하는 존에 대한 시작 오프셋으로 결정하고, 꺼낸 시작 오프셋을 다시 큐에 넣을(put) 수 있다. 초기에 큐에 순차적으로 저장된 시작 오프셋들은 메모리 장치 하나가 차지하는 논리 주소의 간격(onedieitv)에 k(k는 1 이상의 자연수) 배만큼 순차적으로 증가된 값들일 수 있다. 내부 메모리(1210)는 RAM(random access memory), DRAM(dynamic RAM), SRAM(static RAM), 캐시(cache) 및 강하게 결합된 메모리(tightly coupled memory; TCM) 중 적어도 하나 이상으로 구성될 수 있다. 내부 메모리(1210)에 저장된 데이터들 중 적어도 일부는 파워 오프(power off)시에 메모리 장치(1100)에 저장되고, 파워 온(power on) 시에 메모리 장치(1100)로부터 리드되어 내부 메모리(1210)에 저장될 수 있다.
중앙 처리 장치(1220)는 메모리 장치(1100)를 제어하기 위한 각종 연산을 수행하거나, 다양한 커맨드들(commands)을 생성할 수 있다. 중앙 처리 장치(1220)는 호스트(2000)로부터 요청(request)을 수신하면, 수신된 요청에 따라 커맨드를 생성하고, 생성된 커맨드를 큐 컨트롤러(1230)로 전송할 수 있다. 중앙 처리 장치(1220)는 도 8 내지 도 13에서 설명한 메모리 컨트롤러(1200)의 동작을 수행할 수 있다. 더욱 상세하게, 중앙 처리 장치(1220)는 앞서 설명한 메모리 컨트롤러(1200)의 동작을 지시하는 명령어들(instructions)에 따라 다양한 연산을 수행할 수 있다.
에러 정정 블록(1230)은 에러 정정 코드(ECC, Error Correcting Code)를 이용하여 메모리 장치(1100)로부터 수신된 데이터의 에러를 검출하고, 정정하도록 구성된다. 중앙 처리 장치(1220)는 에러 정정 블록(1230)의 에러 검출 결과에 따라 읽기 전압을 조절하고, 재 읽기를 수행하도록 메모리 장치(1100)를 제어할 수 있다. 예시적인 실시 예로서, 에러 정정 블록은 메모리 컨트롤러(1200)의 구성 요소로서 제공될 수 있다.
호스트 인터페이스(1240)는 메모리 컨트롤러(1200)와 호스트(2000) 사이에서 커맨드, 어드레스 및 데이터 등을 주고받을 수 있다. 예를 들면, 호스트 인터페이스(1240)는 호스트(2000)로부터 요청(request), 어드레스 및 데이터 등을 수신할 수 있고, 메모리 장치(1100)로부터 리드된 데이터를 호스트(2000)로 출력할 수 있다. 호스트 인터페이스(1240)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI) 또는 NVMe(Non-Volatile Memory Express)와 같은 프로토콜을 사용하여 호스트(2000)와 통신할 수 있다. 호스트 인터페이스(1240)는 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들을 포함할 수 있다.
버퍼 메모리 인터페이스(1250)는 중앙 처리 장치(1220)와 메모리 시스템(1000)의 버퍼 메모리(미도시) 사이에서 데이터를 전송할 수 있다. 버퍼 메모리(미도시)는 메모리 컨트롤러(1200)의 동작 메모리 또는 캐시 메모리로 사용될 수 있으며, 상술한 정보 외에도 메모리 시스템(1000) 내에서 사용되는 시스템 데이터를 저장할 수 있다. 실시예에 따라, 버퍼 메모리(미도시)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), DDR4 SDRAM, LPDDR4(Low Power Double Data Rate4) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, LPDDR(Low Power DDR) 또는 RDRAM(Rambus Dynamic Random Access Memory)을 포함할 수 있다. 버퍼 메모리가 메모리 컨트롤러(1200) 내부에 포함되는 경우에는 버퍼 메모리 인터페이스(1250)는 생략될 수 있다.
메모리 인터페이스(1260)는 메모리 컨트롤러(1200)와 메모리 장치(1100) 사이에서 커맨드, 어드레스 및 데이터 등을 주고받을 수 있다. 예를 들면, 메모리 인터페이스(1260)는 채널(channel)을 통해 메모리 장치(1100)에 커맨드, 어드레스 및 데이터 등을 전송할 수 있고, 메모리 장치(1100)로부터 데이터 등을 수신할 수 있다.
도 17은 도 16에 따른 메모리 컨트롤러의 동작을 나타낸 예시 흐름도이다.
도 17을 참조하면, 메모리 컨트롤러의 동작 방법은, 호스트로부터 쓰기 요청을 수신하는 단계(S100); 복수의 메모리 장치들 각각에 포함된 블록들로 구성된 복수의 존들 중에서 쓰기 요청에 의해 지시되는 타겟 존과 대응하는 쓰기 포인터(write pointer) 및 시작 오프셋(start offset)을 참조하여, 쓰기 동작을 시작할 타겟 존의 논리 주소를 결정하는 단계(S110); 메모리 장치들 중 논리 주소와 대응하는 메모리 장치의 물리 주소를 결정하는 단계(S120); 및 논리 주소와 대응하는 메모리 장치로 쓰기 요청에 대응하는 쓰기 커맨드와 물리 주소를 전송하는 단계(S130)를 포함할 수 있다.
시작 오프셋은, 논리 주소의 전체 범위에서 메모리 장치들 중 하나가 차지하는 논리 주소의 간격에 기초하여 결정될 수 있다.
시작 오프셋은, 논리 주소의 간격에 배수 단위로 결정될 수 있다.
타겟 존의 논리 주소를 결정하는 단계(S110)는, 쓰기 포인터가 지시하는 논리 주소를 시작 오프셋만큼 이동시켜 타겟 존의 논리 주소를 결정하는 단계를 포함할 수 있다.
타겟 존의 논리 주소를 결정하는 단계(S110)는, 쓰기 포인터가 지시하는 논리 주소를 시작 오프셋만큼 이동시킨 논리 주소가 타겟 존의 마지막 논리 주소를 초과하는 경우, 초과된 논리 주소의 간격만큼 쓰기 포인터가 지시하는 논리 주소를 추가로 이동시킴으로써, 타겟 존의 논리 주소를 결정할 수 있다.
쓰기 요청을 수신하는 단계(S100) 이전에, 호스트로부터 존들 중 하나에 대한 오픈 요청을 수신하는 단계; 오픈 요청에 대한 응답으로, 존들 중 타겟 존의 상태를 오픈 존 상태로 변경하는 단계; 및 타겟 존에 대응하는 시작 오프셋을 결정하는 단계를 포함할 수 있다.
시작 오프셋을 결정하는 단계는, 시작 오프셋을 결정할 때마다 논리 주소의 간격에 k(k는 1 이상의 자연수) 배 만큼 시작 오프셋을 증가시키는 단계를 더 포함할 수 있다.
쓰기 포인터의 초기값은, 타겟 존의 시작 논리 주소를 지시할 수 있다.
시작 오프셋을 결정하는 단계는, 시작 논리 주소를 시작 오프셋만큼 이동시킨 논리 주소가 메모리 장치들 중 아이들(idle) 상태인 메모리 장치의 물리 주소와 대응하도록, 타겟 존에 대응하는 시작 오프셋을 결정할 수 있다.
시작 오프셋을 결정하는 단계는, 시작 논리 주소를 시작 오프셋만큼 이동시킨 논리 주소가 메모리 장치들 중 소거 카운트(erase count)가 가장 작은 메모리 장치의 물리 주소와 대응하도록, 타겟 존에 대응하는 시작 오프셋을 결정할 수 있다.
메모리 장치들 중 적어도 일부는, 서로 다른 채널을 통해 메모리 컨트롤러와 연결될 수 있다.
도 18은 도 1에 따른 메모리 시스템이 적용된 메모리 카드를 설명하기 위한 도면이다.
도 18을 참조하면, 메모리 시스템(Memory System)은 호스트(2000) 및 메모리 카드(Memory Card; 70000)를 포함할 수 있다.
메모리 카드(70000)는 스마트 카드(smart card)로 구현될 수 있다. 메모리 카드(70000)는 메모리 장치(1100), 메모리 컨트롤러(1200) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다.
메모리 컨트롤러(1200)는 메모리 장치(1100)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(7100)는 호스트(HOST; 2000)의 프로토콜에 따라 호스트(2000)와 메모리 컨트롤러(1200) 사이에서 데이터 교환을 인터페이스 할 수 있다. 실시 예에 따라 카드 인터페이스(7100)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는 호스트(2000)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방법을 의미할 수 있다.
도 19는 도 1에 따른 메모리 시스템이 적용된 SSD 시스템을 나타내는 블록도이다.
도 19를 참조하면, SSD(Solid State Drive) 시스템(3000)은, 호스트(3100) 및 SSD(3200)를 포함한다. SSD(3200)는 신호 커넥터(3001)를 통해 호스트(3100)와 신호(SIG)를 주고 받고, 전원 커넥터(3002)를 통해 전원(PWR)을 입력 받는다. SSD(3200)는 SSD 컨트롤러(3210), 복수의 플래시 메모리들(3221~322n), 보조 전원 장치(3230), 및 버퍼 메모리(3240)를 포함한다.
일 실시예에서 SSD 컨트롤러(3210)는 메모리 컨트롤러(1200)와 대응하고, 플래시 메모리들(3221~322n)은 메모리 장치(1100)들에 대응하는 구성요소일 수 있다.
SSD 컨트롤러(3210)는 호스트(3100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(3221~322n)을 제어할 수 있다. 예시적으로, 신호(SIG)는 호스트(3100) 및 SSD(3200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호(SIG)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embeded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.
보조 전원 장치(3230)는 전원 커넥터(3002)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3230)는 호스트(3100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(3230)는 호스트(3100)로부터의 전원 공급이 원활하지 않을 경우, SSD(3200)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(3230)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3230)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(3240)는 SSD(3200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(3240)는 호스트(3100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(3221~322n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(3221~322n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(3240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, GRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.
100: 메모리 셀 어레이 200: 주변 회로
210: 전압 생성 회로 220: 로우 디코더
230: 페이지 버퍼 그룹 240: 컬럼 디코더
250: 입출력 회로 260: 전류 감지 회로
300: 제어 로직 1000: 메모리 시스템
1100: 메모리 장치 1200: 메모리 컨트롤러
1300: 메모리 장치 그룹들 2000, 3100: 호스트
3000: SSD 시스템 3001: 신호 커넥터
3002: 전원 커넥터 3200: SSD
3210: SSD 컨트롤러 3221~322n: 플래시 메모리들
3230: 보조 전원 장치 3240: 버퍼 메모리
7100: 카드 인터페이스 70000: 메모리 카드

Claims (21)

  1. 메모리 셀들로 구성된 복수의 블록들을 포함하는 복수의 메모리 장치들; 및
    상기 복수의 메모리 장치들 각각에 포함된 상기 복수의 블록들로 복수의 존들을 구성함으로써, 상기 복수의 존들에 대응하는 상기 복수의 메모리 장치들을 제어하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는, 호스트로부터 쓰기 요청을 수신하고, 상기 복수의 존들 중 상기 쓰기 요청에 의해 지시되는 타겟 존을 결정하고, 상기 타겟 존과 대응하는 쓰기 포인터(write pointer) 및 시작 오프셋(start offset)을 기초로 쓰기 동작을 시작할 상기 타겟 존의 논리 주소를 결정하는 메모리 시스템.
  2. 청구항 1에서,
    상기 시작 오프셋은,
    상기 타겟 존의 논리 주소의 전체 범위에서 상기 복수의 메모리 장치들 중 하나가 차지하는 논리 주소의 간격에 기초하여 결정되는, 메모리 시스템.
  3. 청구항 2에서,
    상기 시작 오프셋은,
    상기 논리 주소의 간격에 배수 단위로 결정되는, 메모리 시스템.
  4. 청구항 1에서,
    상기 메모리 컨트롤러는,
    상기 쓰기 포인터가 지시하는 논리 주소를 상기 시작 오프셋만큼 이동시켜 상기 타겟 존의 논리 주소를 결정하는, 메모리 시스템.
  5. 청구항 4에서,
    상기 메모리 컨트롤러는,
    상기 쓰기 포인터가 지시하는 논리 주소를 상기 시작 오프셋만큼 이동시킨 논리 주소가 상기 타겟 존의 마지막 논리 주소를 초과하는 경우,
    초과된 논리 주소의 간격만큼 상기 쓰기 포인터가 지시하는 논리 주소를 추가로 이동시킴으로써, 상기 타겟 존의 논리 주소를 결정하는, 메모리 시스템.
  6. 청구항 3에서,
    상기 메모리 컨트롤러는,
    상기 호스트로부터 상기 쓰기 요청을 수신하기 전에,
    상기 호스트로부터 수신한 오픈 요청에 대한 응답으로, 상기 타겟 존의 상태를 오픈 존 상태로 변경하고, 상기 타겟 존에 대응하는 상기 시작 오프셋을 결정하는, 메모리 시스템.
  7. 청구항 6에서,
    상기 메모리 컨트롤러는,
    상기 시작 오프셋을 결정할 때마다 상기 논리 주소의 간격에 k(k는 1 이상의 자연수) 배 만큼 상기 시작 오프셋을 증가시키는, 메모리 시스템.
  8. 청구항 6에서,
    상기 쓰기 포인터의 초기값은,
    상기 타겟 존의 시작 논리 주소를 지시하는, 메모리 시스템.
  9. 청구항 8에서,
    상기 메모리 컨트롤러는,
    상기 시작 논리 주소를 상기 시작 오프셋만큼 이동시킨 논리 주소가 상기 복수의 메모리 장치들 중 아이들(idle) 상태인 메모리 장치의 물리 주소와 대응하도록, 상기 타겟 존에 대응하는 상기 시작 오프셋을 결정하는, 메모리 시스템.
  10. 청구항 8에서,
    상기 메모리 컨트롤러는,
    상기 시작 논리 주소를 상기 시작 오프셋만큼 이동시킨 논리 주소가 상기 복수의 메모리 장치들 중 소거 카운트(erase count)가 가장 작은 메모리 장치의 물리 주소와 대응하도록, 상기 타겟 존에 대응하는 상기 시작 오프셋을 결정하는, 메모리 시스템.
  11. 청구항 1에서,
    상기 복수의 메모리 장치들 중 적어도 일부는,
    서로 다른 채널을 통해 상기 메모리 컨트롤러와 연결되는, 메모리 시스템.
  12. 호스트로부터 쓰기 요청을 수신하는 단계;
    복수의 메모리 장치들 각각에 포함된 블록들로 구성된 복수의 존들 중에서 상기 쓰기 요청에 의해 지시되는 타겟 존과 대응하는 쓰기 포인터(write pointer) 및 시작 오프셋(start offset)을 기초로 쓰기 동작을 시작할 상기 타겟 존의 논리 주소를 결정하는 단계;
    상기 복수의 메모리 장치들 중 상기 논리 주소와 대응하는 메모리 장치의 물리 주소를 결정하는 단계; 및
    상기 논리 주소와 대응하는 메모리 장치로 상기 쓰기 요청에 대응하는 쓰기 커맨드와 상기 물리 주소를 전송하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  13. 청구항 12에서,
    상기 시작 오프셋은,
    상기 타겟 존의 논리 주소의 전체 범위에서 상기 복수의 메모리 장치들 중 하나가 차지하는 상기 논리 주소의 간격에 기초하여 결정되는, 메모리 컨트롤러의 동작 방법.
  14. 청구항 13에서,
    상기 시작 오프셋은,
    상기 논리 주소의 간격에 배수 단위로 결정되는, 메모리 컨트롤러의 동작 방법.
  15. 청구항 12에서,
    상기 타겟 존의 논리 주소를 결정하는 단계는,
    상기 쓰기 포인터가 지시하는 논리 주소를 상기 시작 오프셋만큼 이동시켜 상기 타겟 존의 논리 주소를 결정하는 단계를 포함하는, 메모리 컨트롤러의 동작 방법.
  16. 청구항 15에서,
    상기 타겟 존의 논리 주소를 결정하는 단계는,
    상기 쓰기 포인터가 지시하는 논리 주소를 상기 시작 오프셋만큼 이동시킨 논리 주소가 상기 타겟 존의 마지막 논리 주소를 초과하는 경우,
    초과된 논리 주소의 간격만큼 상기 쓰기 포인터가 지시하는 논리 주소를 추가로 이동시킴으로써, 상기 타겟 존의 논리 주소를 결정하는, 메모리 컨트롤러의 동작 방법.
  17. 청구항 14에서,
    상기 쓰기 요청을 수신하는 단계 이전에,
    상기 호스트로부터 상기 복수의 존들 중 하나에 대한 오픈 요청을 수신하는 단계;
    상기 오픈 요청에 대한 응답으로, 상기 복수의 존들 중 상기 타겟 존의 상태를 오픈 존 상태로 변경하는 단계; 및
    상기 타겟 존에 대응하는 상기 시작 오프셋을 결정하는 단계를 포함하는, 메모리 컨트롤러의 동작 방법.
  18. 청구항 17에서,
    상기 시작 오프셋을 결정하는 단계는,
    상기 시작 오프셋을 결정할 때마다 상기 논리 주소의 간격에 k(k는 1 이상의 자연수) 배 만큼 상기 시작 오프셋을 증가시키는 단계를 더 포함하는, 메모리 컨트롤러의 동작 방법.
  19. 청구항 17에서,
    상기 쓰기 포인터의 초기값은,
    상기 타겟 존의 시작 논리 주소를 지시하는, 메모리 컨트롤러의 동작 방법.
  20. 청구항 19에서,
    상기 시작 오프셋을 결정하는 단계는,
    상기 시작 논리 주소를 상기 시작 오프셋만큼 이동시킨 논리 주소가 상기 복수의 메모리 장치들 중 아이들(idle) 상태인 메모리 장치의 물리 주소와 대응하도록, 상기 타겟 존에 대응하는 상기 시작 오프셋을 결정하는, 메모리 컨트롤러의 동작 방법.
  21. 청구항 19에서,
    상기 시작 오프셋을 결정하는 단계는,
    상기 시작 논리 주소를 상기 시작 오프셋만큼 이동시킨 논리 주소가 상기 복수의 메모리 장치들 중 소거 카운트(erase count)가 가장 작은 메모리 장치의 물리 주소와 대응하도록, 상기 타겟 존에 대응하는 상기 시작 오프셋을 결정하는, 메모리 컨트롤러의 동작 방법.
KR1020200143764A 2020-10-30 2020-10-30 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 KR20220058224A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200143764A KR20220058224A (ko) 2020-10-30 2020-10-30 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법
US17/307,325 US11698748B2 (en) 2020-10-30 2021-05-04 Memory comprising memory controller configured to determine a logical address of a target zone system and method of operating the memory controller
CN202110771226.1A CN114442915B (zh) 2020-10-30 2021-07-08 存储器***以及操作其中所包括的存储器控制器的方法
US18/327,067 US20230325111A1 (en) 2020-10-30 2023-06-01 Memory comprising memory controller configured to determine a logical address of a target zone system and method of operating the memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200143764A KR20220058224A (ko) 2020-10-30 2020-10-30 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220058224A true KR20220058224A (ko) 2022-05-09

Family

ID=81362554

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200143764A KR20220058224A (ko) 2020-10-30 2020-10-30 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법

Country Status (3)

Country Link
US (2) US11698748B2 (ko)
KR (1) KR20220058224A (ko)
CN (1) CN114442915B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107256363B (zh) * 2017-06-13 2020-03-06 杭州华澜微电子股份有限公司 一种由加解密模块阵列组成的高速加解密装置
US11537305B1 (en) 2021-06-03 2022-12-27 Western Digital Technologies, Inc. Dissimilar write prioritization in ZNS devices
US11537303B1 (en) * 2021-06-03 2022-12-27 Western Digital Technologies, Inc. Dissimilar write prioritization in ZNS devices
US11593018B2 (en) * 2021-07-21 2023-02-28 Micron Technology, Inc. Block allocation and erase techniques for sequentially-written memory devices
KR20230060163A (ko) * 2021-10-27 2023-05-04 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11954367B2 (en) * 2022-06-15 2024-04-09 Western Digital Technologies, Inc. Active time-based command prioritization in data storage devices

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE515737C2 (sv) * 1995-03-22 2001-10-01 Ericsson Telefon Ab L M Anordning och förfarande avseende hantering av digitala signaler och en behandlingsanordning omfattande en dylik
KR100321987B1 (ko) 1999-02-19 2002-02-04 윤종용 레이드 시스템에서 패러티 캐쉬 및 이의 운영 방법
US7206904B2 (en) * 2002-03-20 2007-04-17 Hewlett-Packard Development Company, L.P. Method and system for buffering multiple requests from multiple devices to a memory
US6745264B1 (en) * 2002-07-15 2004-06-01 Cypress Semiconductor Corp. Method and apparatus for configuring an interface controller wherein ping pong FIFO segments stores isochronous data and a single circular FIFO stores non-isochronous data
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7650466B2 (en) * 2005-09-21 2010-01-19 Qualcomm Incorporated Method and apparatus for managing cache partitioning using a dynamic boundary
US8161353B2 (en) * 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8621137B2 (en) * 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US8599844B2 (en) * 2010-03-12 2013-12-03 Force10 Networks, Inc. System and method for flexible memory system configuration and access
US11037625B2 (en) * 2012-11-20 2021-06-15 Thstyme Bermuda Limited Solid state drive architectures
KR20160059050A (ko) * 2014-11-17 2016-05-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
TWI569275B (zh) * 2015-07-17 2017-02-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US20180173619A1 (en) * 2016-12-21 2018-06-21 Sandisk Technologies Llc System and Method for Distributed Logical to Physical Address Mapping
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
KR102422032B1 (ko) * 2017-08-16 2022-07-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102421149B1 (ko) * 2018-01-02 2022-07-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20190083148A (ko) 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
KR20200054534A (ko) * 2018-11-12 2020-05-20 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11188232B2 (en) * 2019-04-29 2021-11-30 EMC IP Holding Company LLC Enhanced storage compression based on activity level
US11294827B2 (en) * 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
KR20210070054A (ko) * 2019-12-04 2021-06-14 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP2021114038A (ja) * 2020-01-16 2021-08-05 キオクシア株式会社 メモリシステムおよび制御方法
US11200162B2 (en) * 2020-04-28 2021-12-14 Western Digital Technologies, Inc. Condensing logical to physical table pointers in SSDs utilizing zoned namespaces
KR20220005111A (ko) * 2020-07-06 2022-01-13 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법

Also Published As

Publication number Publication date
US11698748B2 (en) 2023-07-11
US20220137858A1 (en) 2022-05-05
CN114442915A (zh) 2022-05-06
CN114442915B (zh) 2024-03-08
US20230325111A1 (en) 2023-10-12

Similar Documents

Publication Publication Date Title
CN114442915B (zh) 存储器***以及操作其中所包括的存储器控制器的方法
CN110389720B (zh) 存储装置及其操作方法
CN112783433A (zh) 存储装置及其操作方法
KR20190043863A (ko) 메모리 시스템 및 그것의 동작 방법
KR20210151374A (ko) 스토리지 장치 및 그 동작 방법
KR20190043860A (ko) 메모리 시스템 및 이의 동작 방법
CN113900969A (zh) 存储器装置及其操作方法
CN111445939B (zh) 存储装置及其操作方法
KR20220018351A (ko) 메모리 컨트롤러 및 이의 동작 방법
CN113806240A (zh) 存储装置及其操作方法
US11922040B2 (en) Extended super memory blocks in memory systems
KR20220028332A (ko) 저장 장치 및 그 동작 방법
KR20210128780A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
US11625195B2 (en) Memory system and operating method of memory system storing doorbell information in the buffer memory
JP2023024369A (ja) メモリ装置
US11474726B2 (en) Memory system, memory controller, and operation method thereof
KR20220079235A (ko) 저장 장치 및 그 동작 방법
KR20220142195A (ko) 저장 장치 및 그 동작 방법
CN110413219B (zh) 存储器控制器、存储器***及其操作方法
KR20220055302A (ko) 메모리 장치 및 이를 포함하는 메모리 시스템
US11366725B2 (en) Storage device and method of operating the same
US20230195342A1 (en) Memory system for managing data corresponding to a plurality of zones and operating method thereof
US20230116063A1 (en) Storage device based on daisy chain topology
US20230006673A1 (en) Memory system and memory controller
US20240143192A1 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination