KR20220104511A - Controller and memory system having the controller - Google Patents

Controller and memory system having the controller Download PDF

Info

Publication number
KR20220104511A
KR20220104511A KR1020210006922A KR20210006922A KR20220104511A KR 20220104511 A KR20220104511 A KR 20220104511A KR 1020210006922 A KR1020210006922 A KR 1020210006922A KR 20210006922 A KR20210006922 A KR 20210006922A KR 20220104511 A KR20220104511 A KR 20220104511A
Authority
KR
South Korea
Prior art keywords
commands
zone
output
queue
buffers
Prior art date
Application number
KR1020210006922A
Other languages
Korean (ko)
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 KR1020210006922A priority Critical patent/KR20220104511A/en
Priority to US17/364,401 priority patent/US11875056B2/en
Priority to CN202111282332.XA priority patent/CN114817094B/en
Publication of KR20220104511A publication Critical patent/KR20220104511A/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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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

Abstract

The present technology includes: a light queue configured to queue commands including a zone ID and a light pointer in the order in which the commands are input; and a queue controller configured to allocate temporary buffers to zone IDs of the commands and store the commands output from the light queue in the temporary buffers classified according to the zone IDs. The queue controller includes a controller configured to output the commands stored in a temporary buffer filled with a set storage size among the temporary buffers.

Description

컨트롤러 및 이를 포함하는 메모리 시스템{Controller and memory system having the controller}Controller and memory system having the controller}

본 발명은 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 메모리 시스템에 포함된 저장 장치를 구역(zone) 단위로 관리하는 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다. The present invention relates to a controller and a memory system including the same, and more particularly, to a controller for managing storage devices included in the memory system in units of zones, and to a memory system including the same.

전자 시스템은 호스트들과 메모리 시스템을 포함할 수 있다. The electronic system may include hosts and a memory system.

호스트들은 휴대폰 또는 컴퓨터 등과 같은 장치일 수 있고, 메모리 시스템은 호스트들의 제어에 따라 데이터를 저장하거나 리드된 데이터를 출력하는 시스템일 수 있다. 메모리 시스템은 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분된다.The hosts may be devices such as mobile phones or computers, and the memory system may be a system that stores data or outputs read data according to the control of the hosts. The memory system may include a memory device in which data is stored and a controller controlling the memory device. Memory devices are classified into volatile memory devices and non-volatile memory devices.

휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 있다.A volatile memory device stores data only when power is supplied, and is a memory device in which stored data is lost when power supply is cut off. Volatile memory devices include static random access memory (SRAM) and dynamic random access memory (DRAM).

비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.A non-volatile memory device is a memory device in which data is not destroyed even when power is cut off. Memory (Flash Memory), etc.

본 발명의 실시 예는 저장 장치를 구역 단위로 관리하는 메모리 시스템에서 구역 별로 처리 가능한 커맨드들의 우선 순위를 높임으로써, 커맨드들이 적체되는 현상을 방지할 수 있는 컨트롤러 및 이를 포함하는 메모리 시스템을 제공한다. An embodiment of the present invention provides a controller and a memory system including the same, which can prevent commands from being accumulated by increasing the priority of commands that can be processed for each zone in a memory system that manages a storage device in units of zones.

본 발명의 실시 예에 따른 컨트롤러는, 구역 아이디 및 라이트 포인터를 포함하는 커맨드들을 입력되는 순서대로 큐잉하도록 구성된 라이트 큐; 및 상기 커맨드들의 구역 아이디들에 임시 버퍼들을 할당하고, 상기 라이트 큐에서 출력된 상기 커맨드들을 상기 구역 아이디에 따라 구분된 상기 임시 버퍼들에 저장하도록 구성된 큐 컨트롤러를 포함하고, 상기 큐 컨트롤러는, 상기 임시 버퍼들 중에서 설정된 저장 사이즈가 채워진 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성된다. A controller according to an embodiment of the present invention includes: a write queue configured to queue commands including a zone ID and a write pointer in an input order; and a queue controller configured to allocate temporary buffers to zone IDs of the commands and to store the commands output from the write queue in the temporary buffers classified according to the zone ID, wherein the queue controller comprises: and output the commands stored in a temporary buffer filled with a set storage size among the temporary buffers.

본 발명의 실시 예에 따른 메모리 시스템은, 데이터를 저장하는 다이들을 포함하는 저장 장치; 및 호스트에서 출력된 요청들에 응답하여 커맨드들을 생성하고 상기 다이들의 상태에 따라 상기 커맨드들을 큐잉하도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 다이들을 구역 아이디들로 구분하여 상기 저장 장치를 관리하고, 프로그램 동작 시 큐잉된 상기 커맨드들의 순서에 관계없이 상기 구역 아이디들 중 라이트 포인터들이 모두 채워진 구역 아이디에 우선권을 주고, 상기 우선권을 가진 상기 구역 아이디에 할당된 상기 커맨드들을 출력하도록 구성된다. A memory system according to an embodiment of the present invention includes a storage device including dies for storing data; and a controller configured to generate commands in response to requests output from a host and queue the commands according to states of the dies, wherein the controller manages the storage device by classifying the dies into zone IDs and , give priority to a zone ID in which all write pointers are filled among the zone IDs regardless of the order of the queued commands during a program operation, and output the commands assigned to the zone ID having the priority.

본 발명의 실시 예에 따른 컨트롤러는, 호스트로부터 수신된 요청들에 대응되는 커맨드들을 생성하고, 상기 커맨드들이 생성된 순서에 따라 상기 커맨드들에 라이트 포인터들을 할당하고, 데이터가 저장되는 저장 장치의 상태에 따라 상기 커맨드들을 큐잉하도록 구성된 커맨드 관리부; 큐잉된 상기 커맨드들을 임시로 저장하도록 구성된 라이트 큐; 구역 아이디 별로 구분되는 임시 버퍼들; 및 상기 라이트 큐로부터 출력된 상기 커맨드들을 상기 구역 아이디 및 상기 라이트 포인터들의 순서에 따라 상기 임시 버퍼들에 저장하고, 설정된 사이즈가 채워진 임시 버퍼의 상기 커맨드들을 출력하도록 구성된 구역 관리부를 포함하는 컨트롤러를 포함한다. The controller according to an embodiment of the present invention generates commands corresponding to requests received from the host, allocates write pointers to the commands according to the order in which the commands are generated, and stores the state of the storage device in which data is stored. a command management unit configured to queue the commands according to a write queue configured to temporarily store the queued commands; temporary buffers separated by zone ID; and a controller including a zone manager configured to store the commands output from the write queue in the temporary buffers according to the zone ID and the order of the write pointers, and output the commands in the temporary buffer filled with a set size. do.

본 기술은 구역 별로 처리 가능한 커맨드들의 우선 순위를 높임으로써 커맨드들이 적체되는 현상을 방지할 수 있다. The present technology can prevent a phenomenon in which commands are accumulated by increasing the priority of commands that can be processed for each zone.

도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1에 도시된 다이(die)를 설명하기 위한 도면이다.
도 3은 도 2에 도시된 메모리 블록을 설명하기 위한 도면이다.
도 4a 내지 도 4c는 본 발명의 실시 예에 따른 구역(zone)을 설명하기 위한 도면들이다.
도 5는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 컨트롤러의 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 구역 관리부를 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 구역 관리부의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 실시 예에 따른 메모리 인터페이스를 설명하기 위한 도면이다.
도 10은 컨트롤러가 다이들에 액세스(access)하는 동작을 설명하기 위한 도면이다.
도 11 내지 도 18b는 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작을 순차적으로 설명하기 위한 도면들이다.
도 19a 및 도 19b는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 20a 및 도 20b는 본 발명의 제3 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 21은 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 22는 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
1 is a diagram for explaining a memory system according to an embodiment of the present invention.
FIG. 2 is a view for explaining the die shown in FIG. 1 .
FIG. 3 is a diagram for explaining the memory block shown in FIG. 2 .
4A to 4C are diagrams for explaining a zone according to an embodiment of the present invention.
5 is a view for explaining a controller according to an embodiment of the present invention.
6 is a diagram for explaining an operation of a controller according to an embodiment of the present invention.
7 is a view for explaining a zone management unit according to an embodiment of the present invention.
8 is a diagram for explaining an operation of a zone management unit according to an embodiment of the present invention.
9 is a diagram for explaining a memory interface according to an embodiment of the present invention.
10 is a diagram for explaining an operation of a controller accessing dies.
11 to 18B are diagrams for sequentially explaining the operation of the memory system according to the first embodiment of the present invention.
19A and 19B are diagrams for explaining an operation of a memory system according to a second embodiment of the present invention.
20A and 20B are diagrams for explaining an operation of a memory system according to a third embodiment of the present invention.
21 is a view showing a memory card system to which the controller of the present invention is applied.
22 is a view showing a solid state drive (SSD) system to which the controller of the present invention is applied.

도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다. 1 is a diagram for explaining a memory system according to an embodiment of the present invention.

도 1을 참조하면, 메모리 시스템(1000)은 데이터를 저장할 수 있는 저장 장치(storage device; 1100)와, 저장 장치(1100)를 제어할 수 있는 컨트롤러(controller; 1200)를 포함할 수 있다. Referring to FIG. 1 , a memory system 1000 may include a storage device 1100 capable of storing data and a controller 1200 capable of controlling the storage device 1100 .

저장 장치(1100)는 복수의 다이들(D01~Dnm)을 포함할 수 있다. 다이들(D01~Dnm)은 서로 동일하게 구성될 수 있다. 다이들(D01~Dnm)은 컨트롤러(1200)에서 출력된 커맨드에 응답하여 프로그램, 리드 또는 소거 동작을 수행할 수 있다. 다이들(D01~Dnm)은 비휘발성 메모리 장치로 구성될 수 있다. 예를 들면, 비휘발성 메모리 장치는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등을 포함할 수 있다. The storage device 1100 may include a plurality of dies D01 to Dnm. The dies D01 to Dnm may be configured to be identical to each other. The dies D01 to Dnm may perform a program, read, or erase operation in response to a command output from the controller 1200 . The dies D01 to Dnm may be configured as nonvolatile memory devices. For example, non-volatile memory devices include EEPROM (Electrically Erasable and Programmable ROM), NAND flash memory, NOR flash memory, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM (STT-MRAM) Spin Transfer Torque - Magnetic RAM) and the like.

컨트롤러(1200)는 호스트(host; 2000)와 저장 장치(1100) 사이에서 통신할 수 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)로부터 출력된 요청(request)에 따라 프로그램, 리드 또는 소거 커맨드를 생성하고, 생성된 커맨드를 저장 장치(1100)에게 전송할 수 있다. The controller 1200 may communicate between a host 2000 and the storage device 1100 . For example, the controller 1200 may generate a program, read, or erase command according to a request output from the host 2000 , and transmit the generated command to the storage device 1100 .

호스트(2000)는 프로그램 동작 시 컨트롤러(1200)에게 프로그램 요청(program request), 라이트 포인터(write pointer) 및 데이터를 출력할 수 있다. 라이트 포인터는 프로그램 요청이 출력되는 순서를 나타낼 수 있다. 예를 들면, 프로그램 요청이 출력될 때마다 라이트 포인터는 단계적으로 증가하는 값을 가질 수 있다. The host 2000 may output a program request, a write pointer, and data to the controller 1200 during a program operation. The write pointer may indicate the order in which program requests are output. For example, whenever a program request is output, the write pointer may have a value that increases in steps.

본 실시 예에 따른 컨트롤러(1200)는 저장 장치(1100)에 포함된 다이들(D01~Dnm)을 구역(zone) 단위로 관리할 수 있다. 예를 들면, 컨트롤러(1200)는 다이들(D01~Dnm) 각각에 포함된 메모리 블록들을 일정한 저장 용량에 따라 논리 블록 어드레스(logical block address) 단위로 구분하고, 복수의 논리 블록 어드레스들을 구역(zone) 단위의 그룹으로 구분할 수 있다. 즉, 하나의 구역에 복수의 논리 블록 어드레스들이 맵핑될 수 있다. 본 실시 예에 따른 컨트롤러(1200)는 구역 단위로 커맨드들을 출력하도록 구성될 수 있다. 따라서, 컨트롤러(1200)는 라이트 포인터를 사용하여 구역 별로 커맨드들을 큐잉하고 출력하도록 구성될 수 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)로부터 수신한 요청들의 순서에 관계 없이 저장 장치(1100)의 상태에 따라 커맨드들을 큐잉할 수 있고, 라이트 포인터를 사용하여 구역 별로 커맨드들을 다시 큐잉하여 커맨드들이 적체되는 현상을 방지할 수 있다. The controller 1200 according to the present embodiment may manage the dies D01 to Dnm included in the storage device 1100 in units of zones. For example, the controller 1200 divides the memory blocks included in each of the dies D01 to Dnm in units of logical block addresses according to a predetermined storage capacity, and divides the plurality of logical block addresses into zones. ) can be divided into groups of units. That is, a plurality of logical block addresses may be mapped to one region. The controller 1200 according to the present embodiment may be configured to output commands in units of zones. Accordingly, the controller 1200 may be configured to queue and output commands for each zone using the write pointer. For example, the controller 1200 may queue commands according to the state of the storage device 1100 irrespective of the order of requests received from the host 2000 , and use a write pointer to queue commands for each zone again. It is possible to prevent a phenomenon in which commands are accumulated.

도 2는 도 1에 도시된 다이(die)를 설명하기 위한 도면으로써, 도 1에 도시된 제01 내지 제nm 다이들(D01~Dnm)은 서로 동일하게 구성될 수 있으므로, 이 중에서 제nm 다이(Dnm)를 예를 들어 설명하도록 한다. FIG. 2 is a diagram for explaining the die shown in FIG. 1 , and since the 01 th to nm th dies D01 to Dnm shown in FIG. 1 may be configured identically to each other, among them, the nm th die (Dnm) will be described as an example.

도 2를 참조하면, 다이(Dnm)는 적어도 하나의 플래인(plane)을 포함할 수 있으며, 도 2에는 복수의 플래인들(PL1~PLj)이 포함된 다이(nm)가 도시되어 있다. 제1 내지 제j 플래인들(PL1~PLj)은 서로 동일하게 구성될 수 있으며, 제1 내지 제i 메모리 블록들(BLK1~BLKi)을 각각 포함할 수 있다. 제1 내지 제i 메모리 블록들(BLK1~BLKi) 각각은 데이터가 저장될 수 있는 복수의 메모리 셀들을 포함한다. 프로그램, 리드 또는 소거 동작 시, 제1 내지 제j 플래인들(PL1~PLj) 각각에 포함된 제1 내지 제i 메모리 블록들(BLK1~BLKi) 중에서 적어도 하나의 메모리 블록이 선택될 수 있다. 즉, 다이(nm)에서 프로그램, 리드 또는 소거 동작이 수행될 때, 복수의 메모리 블록들이 동시에 선택될 수 있다. 다이(Dnm)에는 제1 내지 제j 플래인들(PL1~PLj)에 포함된 선택된 메모리 블록들을 프로그램, 리드 또는 소거하도록 구성되는 주변 회로들이 더 포함되며, 주변 회로들은 다이(nm)에 따라 다양하게 구성될 수 있으므로, 본 실시 예에서는 구체적인 설명은 생략한다. Referring to FIG. 2 , a die Dnm may include at least one plane, and FIG. 2 shows a die nm including a plurality of planes PL1 to PLj. The first to j-th planes PL1 to PLj may have the same configuration as each other, and may include first to i-th memory blocks BLK1 to BLKi, respectively. Each of the first to i-th memory blocks BLK1 to BLKi includes a plurality of memory cells in which data may be stored. During a program, read, or erase operation, at least one memory block may be selected from among the first to i-th memory blocks BLK1 to BLKi included in each of the first to j-th planes PL1 to PLj. That is, when a program, read, or erase operation is performed on the die (nm), a plurality of memory blocks may be simultaneously selected. The die Dnm further includes peripheral circuits configured to program, read, or erase selected memory blocks included in the first to j-th planes PL1 to PLj, and the peripheral circuits vary according to the die (nm). Since it can be configured in a simple manner, a detailed description thereof will be omitted in the present embodiment.

도 3은 도 2에 도시된 메모리 블록을 설명하기 위한 도면이다. FIG. 3 is a diagram for explaining the memory block shown in FIG. 2 .

도 3을 참조하면, 도 2에 도시된 복수의 메모리 블록들(BLK1~BLKi) 중 어느 하나의 메모리 블록(BLKi)이 실시 예로써 도시된다. Referring to FIG. 3 , any one of the plurality of memory blocks BLK1 to BLKi illustrated in FIG. 2 is illustrated as an embodiment.

메모리 블록(BLKi)은 제1 내지 제m 비트 라인들(BL1~BLm; m은 양의 정수)과 소스 라인(SL) 사이에 연결된 복수의 스트링들(ST)을 포함할 수 있다. 스트링들(ST) 각각은 소스 라인(SL)과 제1 내지 제m 비트 라인들(BL1~BLm) 사이에서 직렬로 연결된 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)를 포함할 수 있다. The memory block BLKi may include a plurality of strings ST connected between the first to mth bit lines BL1 to BLm (m is a positive integer) and the source line SL. Each of the strings ST includes a source select transistor SST and first to nth memory cells C1 to Cn connected in series between the source line SL and the first to mth bit lines BL1 to BLm. and a drain select transistor DST.

도 3에 도시된 메모리 블록(BLKi)은 메모리 블록의 구성을 설명하기 위한 도면이므로, 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)의 개수는 도 3에 도시된 개수로 제한되지 않는다. The memory block BLKi illustrated in FIG. 3 is a diagram for explaining the configuration of the memory block, and thus the number of the source select transistor SST, the first to nth memory cells C1 to Cn, and the drain select transistor DST. is not limited to the number shown in FIG. 3 .

서로 다른 스트링들(ST)에 연결된 소스 셀렉트 트랜지스터들(SST)의 게이트들은 소스 셀렉트 라인(SSL)에 연결되고, 제1 내지 제n 메모리 셀들(C1~Cn) 각각의 게이트들은 제1 내지 제n 워드 라인들(WL1~WLn)에 연결되고, 드레인 셀렉트 트랜지스터들(DST)의 게이트들은 드레인 셀렉트 라인(DSL)에 연결될 수 있다. Gates of the source select transistors SST connected to different strings ST are connected to the source select line SSL, and gates of each of the first to nth memory cells C1 to Cn are first to nth It may be connected to the word lines WL1 to WLn, and gates of the drain select transistors DST may be connected to the drain select line DSL.

동일한 워드 라인에 연결되고 서로 다른 스트링들(ST)에 포함된 메모리 셀들의 그룹은 하나의 페이지(PG)를 구성할 수 있다. 프로그램 동작 및 리드 동작은 페이지(PG) 단위로 수행될 수 있다. A group of memory cells connected to the same word line and included in different strings ST may constitute one page PG. A program operation and a read operation may be performed in units of pages PG.

도 4a 내지 도 4c는 본 발명의 실시 예에 따른 구역(zone)을 설명하기 위한 도면들이다. 4A to 4C are diagrams for explaining a zone according to an embodiment of the present invention.

도 4a를 참조하면, 저장 장치(1100)는 도 1 및 도 2에 도시된 바와 같이 물리적으로 구분되는 다이들(D01~Dnm)과, 다이들(D01~Dnm) 각각에서 물리적으로 구분되는 메모리 블록들(BLK1~BLKi)을 포함하지만, 본 실시 예에서는 저장 장치(1100)에 포함된 모든 메모리 블록들이 논리적으로 구분될 수 있다. 다이들(D01~Dnm)에 포함된 모든 메모리 블록들은 논리 블록 어드레스(logical block address: LBA) 단위로 구분될 수 있다. 예를 들면, 저장 장치(1100)에 포함된 모든 메모리 블록들에는 논리 블록 어드레스(LBA)가 할당될 수 있다. 즉, 메모리 블록들에 제1 내지 제i 논리 블록 어드레스들(LBA01~LBAi)이 맵핑될 수 있으며, 연속적인 논리 블록 어드레스에 맵핑된 메모리 블록들은 저장 장치(1100) 내에서는 물리적으로 불연속적으로 배치될 수 있다. Referring to FIG. 4A , the storage device 1100 includes dies D01 to Dnm physically separated as shown in FIGS. 1 and 2 and a memory block physically separated from each of the dies D01 to Dnm. Although the memory blocks BLK1 to BLKi are included, in the present embodiment, all memory blocks included in the storage device 1100 may be logically divided. All memory blocks included in the dies D01 to Dnm may be divided in units of logical block addresses (LBAs). For example, a logical block address LBA may be allocated to all memory blocks included in the storage device 1100 . That is, first to i-th logical block addresses LBA01 to LBAi may be mapped to the memory blocks, and the memory blocks mapped to consecutive logical block addresses are physically discontinuously disposed in the storage device 1100 . can be

도 4b를 참조하면, 논리 블록 어드레스들(LBA01~LBAi)은 복수의 구역들로 그룹핑될 수 있으며, 각각의 구역 그룹들에는 구역 아이디(zone ID; Zid)가 할당될 수 있다. 즉, 구역 아이디(Zid)는 메모리 블록들을 일정한 저장 용량에 따라 그룹핑한 그룹들의 인덱스일 수 있다. 예를 들면, 논리 블록 어드레스들(LBA01~LBAi)은 제1 내지 제x 구역 아이디들(Zid01~Zidx)로 구분되는 복수의 구역들로 구분될 수 있다. 제1 내지 제x 구역 아이디들(Zid01~Zidx) 각각의 저장 용량은 서로 동일하게 설정될 수도 있고, 서로 다르게 설정될 수도 있다. 저장 용량이 서로 동일하게 설정되는 경우, 제1 내지 제x 구역 아이디들(Zid01~Zidx) 각각에 할당되는 논리 블록 어드레스들의 개수는 서로 동일할 수 있다. 저장 용량이 서로 다르게 설정되는 경우, 제1 내지 제x 구역 아이디들(Zid01~Zidx)에 할당되는 논리 블록 어드레스들의 개수는 서로 다를 수 있다. 또는, 제1 내지 제x 구역 아이디들(Zid01~Zidx) 중에서 일부 구역 아이디들의 저장 용량이 서로 동일하게 설정되고, 나머지 구역 아이디들의 저장 용량은 서로 다르게 설정될 수도 있다. Referring to FIG. 4B , the logical block addresses LBA01 to LBAi may be grouped into a plurality of zones, and a zone ID (Zid) may be assigned to each zone group. That is, the zone ID Zid may be an index of groups in which memory blocks are grouped according to a predetermined storage capacity. For example, the logical block addresses LBA01 to LBAi may be divided into a plurality of zones divided by first to x-th zone IDs Zid01 to Zidx. The storage capacity of each of the first to xth zone IDs Zid01 to Zidx may be set to be the same as each other or may be set differently. When the storage capacities are set to be the same, the number of logical block addresses allocated to each of the first to xth zone IDs Zid01 to Zidx may be the same. When the storage capacity is set differently, the number of logical block addresses allocated to the first to xth zone IDs Zid01 to Zidx may be different from each other. Alternatively, the storage capacities of some zone IDs among the first to x-th zone IDs Zid01 to Zidx may be set to be the same, and the storage capacities of the remaining zone IDs may be set differently.

도 4c를 참조하면, 도 4b에 도시된 제1 내지 제x 구역 아이디들(Zid01~Zidx) 중에서 제x 구역 아이디(Zidx)가 예로써 도시된다. 제x 구역 아이디(Zidx)에 제n 내지 제i 논리 블록 어드레스들(LBAn~LBAi)이 할당된다고 가정한다. 호스트로부터 수신되는 라이트 포인터(write pointer; WP)는 연속적인 데이터를 저장할 때 선택되는 논리 블록 어드레스를 나타낼 수 있고, 시작 포인터(start pointer; SP)는 제x 구역 아이디(Zidx)의 첫 번째 논리 블록 어드레스일 수 있다. 예를 들면, 라이트 포인터는 호스트가 컨트롤러에게 전송한 요청들의 순서를 나타낼 수 있다. 도 4c를 참조하면, LBAn, LBAn+1, LBAn+2, … , LBAi 각각은 라이트 포인터(WP)가 되며, 이 중에서 첫 번째 라이트 포인터인 LBAn이 시작 포인터(SP)가 된다. 따라서, 서로 다른 구역 아이디들의 시작 포인터들은 서로 다른 논리 블록 어드레스들로 지정될 수 있다. Referring to FIG. 4C , an x-th zone ID Zidx is shown as an example among the first to x-th zone IDs Zid01 to Zidx shown in FIG. 4B . It is assumed that nth to ith logical block addresses LBAn to LBAi are allocated to the xth zone ID Zidx. A write pointer (WP) received from the host may indicate a logical block address selected when storing consecutive data, and a start pointer (SP) is the first logical block of the x-th zone ID (Zidx). It can be an address. For example, the write pointer may indicate the sequence of requests sent by the host to the controller. Referring to Figure 4c, LBAn, LBAn+1, LBAn+2, ... Each of , LBAi becomes a write pointer (WP), and among them, the first write pointer LBAn becomes a start pointer (SP). Accordingly, start pointers of different zone IDs may be assigned to different logical block addresses.

도 5는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다. 5 is a view for explaining a controller according to an embodiment of the present invention.

도 5를 참조하면, 컨트롤러(1200)는 구역 관리부(zone manager; 500), 시스템 버퍼(system buffer; 510), 커맨드 관리부(command manager; 520), 호스트 인터페이스(host interface; 530) 및 메모리 인터페이스(memory interface; 540)를 포함할 수 있다. 구역 관리부(500), 시스템 버퍼(510), 커맨드 관리부(520), 호스트 인터페이스(530) 및 메모리 인터페이스(540)는 버스(BUS)를 통해 서로 통신할 수 있다. 5, the controller 1200 includes a zone manager 500, a system buffer 510, a command manager 520, a host interface 530, and a memory interface ( memory interface; 540). The zone manager 500 , the system buffer 510 , the command manager 520 , the host interface 530 , and the memory interface 540 may communicate with each other through a bus BUS.

구역 관리부(500)는 프로그램 동작 시 커맨드들에 대응되는 라이트 포인터가 불연속적인 경우, 동일한 구역 아이디에서 라이트 포인터가 연속되도록 커맨드들의 큐잉 순서를 조절할 수 있다. 또한, 구역 관리부(500)는 라이트 포인터들이 모두 채워진 구역 아이디가 발생하면, 해당 구역 아이디에 대응되는 커맨드의 출력 우선 순위를 높일 수 있다. 예를 들면, 구역 관리부(500)는 라이트 포인터들이 모두 채워진 구역 아이디에 대응되는 커맨드를 라이트 포인터들이 채워지지 아니한 구역 아이디에 대응되는 커맨드보다 우선적으로 출력할 수 있다. When the write pointers corresponding to the commands are discontinuous during the program operation, the zone manager 500 may adjust the queuing order of commands so that the write pointers are continuous in the same zone ID. Also, when a zone ID in which all the write pointers are filled occurs, the zone management unit 500 may increase the priority of outputting a command corresponding to the zone ID. For example, the zone manager 500 may preferentially output a command corresponding to a zone ID in which all write pointers are filled over a command corresponding to a zone ID in which the write pointers are not filled.

시스템 버퍼(510)는 컨트롤러(1200)의 동작에 필요한 다양한 정보들을 저장하도록 구성될 수 있다. 예를 들면, 시스템 버퍼(510)는 논리 블록 어드레스 및 물리 블록 어드레스의 맵핑 정보 등을 저장할 수 있다. 예를 들면, 시스템 버퍼(510)는 라이트 포인터들에 대응되는 논리 블록 어드레스와, 논리 블록 어드레스들에 맵핑된 물리 블록 어드레스들을 포함하는 맵 테이블을 저장할 수 있다. 물리 블록 어드레스는 저장 장치에서 관리될 수 있는 다이 및 메모리 블록 각각에 할당된 어드레스이고, 논리 블록 어드레스는 호스트에서 관리될 수 있는 어드레스일 수 있다. 따라서, 순차적인 논리 블록 어드레스들에 비순차적인 물리 블록 어드레스들이 맵핑될 수 있다. The system buffer 510 may be configured to store various pieces of information necessary for the operation of the controller 1200 . For example, the system buffer 510 may store mapping information between logical block addresses and physical block addresses. For example, the system buffer 510 may store a map table including logical block addresses corresponding to write pointers and physical block addresses mapped to logical block addresses. The physical block address may be an address assigned to each of the die and memory blocks that may be managed in the storage device, and the logical block address may be an address that may be managed by the host. Accordingly, non-sequential physical block addresses may be mapped to sequential logical block addresses.

커맨드 관리부(520)는 호스트(2000)로부터 출력된 요청(request)이 입력되면, 요청에 대응되는 커맨드를 생성하고, 저장 장치(1100)의 상태에 따라 커맨드들의 순서를 변경할 수 있다. 이때, 커맨드들은 라이트 포인터의 순서에 관계 없이 큐잉될 수 있다. 큐잉된 커맨드들은 구역 관리부(500)에게 전송될 수 있다. When a request output from the host 2000 is input, the command manager 520 may generate a command corresponding to the request and change the order of the commands according to the state of the storage device 1100 . In this case, commands may be queued regardless of the order of the write pointers. The queued commands may be transmitted to the area management unit 500 .

호스트 인터페이스(530)는 호스트(2000)와 컨트롤러(1200) 사이에서 요청, 어드레스 또는 데이터를 주고받도록 구성될 수 있다. The host interface 530 may be configured to exchange a request, an address, or data between the host 2000 and the controller 1200 .

메모리 인터페이스(540)는 컨트롤러(1200)와 저장 장치(1100) 사이에서 커맨드, 어드레스 또는 데이터를 주고받도록 구성될 수 있다. 메모리 인터페이스(540)는 구역 관리부(500)에서 출력된 커맨드들을 저장 장치(1100)로 출력하기 이전에 임시로 커맨드들을 저장할 수 있는 버퍼들을 포함할 수 있다. 메모리 인터페이스(540)는 구역 관리부(500)에서 출력된 라이트 포인터들에 각각 대응되는 물리 블록 어드레스들을 시스템 버퍼(510)로부터 수신받고, 커맨드 및 물리 블록 어드레스들을 저장 장치(1100)에게 출력할 수 있다. The memory interface 540 may be configured to exchange commands, addresses, or data between the controller 1200 and the storage device 1100 . The memory interface 540 may include buffers for temporarily storing commands output from the zone manager 500 before outputting the commands to the storage device 1100 . The memory interface 540 may receive physical block addresses respectively corresponding to the write pointers output from the zone manager 500 from the system buffer 510 , and output commands and physical block addresses to the storage device 1100 . .

도 6은 본 발명의 실시 예에 따른 컨트롤러의 동작을 설명하기 위한 도면이다. 6 is a diagram for explaining an operation of a controller according to an embodiment of the present invention.

도 6을 참조하면, 커맨드 관리부(520)는 호스트로부터 출력된 요청들(RQ#) 및 라이트 포인터들(WP#)이 수신되면, 요청들(RQ#)을 수행하기 위한 커맨드들(CMD#)을 생성하고, 커맨드들(CMD#)이 실행될 다이들의 동작 상태에 따라 커맨드들(CMD#)의 실행 순서를 조절할 수 있다. 즉, 커맨드 관리부(520)는 라이트 포인터들(WP#)의 순서에 관계 없이 저장 장치에 포함된 다이들의 동작 상태에 따라 커맨드들(CMD#)을 큐잉(queueing)할 수 있다. 예를 들면, 커맨드 관리부(520)는 유휴(idle) 다이들과 동작 중인 다이들을 확인할 수 있고, 유휴 다이들에서 실행될 수 있는 커맨드들의 우선 순위가 높아지도록 커맨드들의 실행 순서를 변경할 수 있다. 이 외에도 커맨드 관리부(520)는 다양한 방식으로 커맨드들의 실행 순서를 변경할 수 있다. Referring to FIG. 6 , the command manager 520 receives requests RQ# and write pointers WP# output from the host, commands CMD# for performing the requests RQ#. , and the execution order of the commands CMD# may be adjusted according to the operating states of dies in which the commands CMD# are to be executed. That is, the command manager 520 may queue the commands CMD# according to the operating states of dies included in the storage device regardless of the order of the write pointers WP#. For example, the command manager 520 may check idle dies and dies in operation, and change the execution order of commands so that commands that can be executed on the idle dies have a higher priority. In addition, the command manager 520 may change the execution order of the commands in various ways.

구역 관리부(500)는 커맨드 관리부(520)에서 출력된 커맨드들(CMD#)을 임시로 저장하고, 구역 아이디(Zid) 및 라이트 포인터들(WP#)에 따라 커맨드들(CMD#)의 순서를 다시 조절할 수 있다. 구역 관리부(500)는 설정된 라이트 사이즈(write size)에 대응되는 커맨드들(CMD#)이 모두 채워진 구역 아이디(Zid)가 발생하면, 해당 구역 아이디(Zid)의 커맨드들(CMD#)을 메모리 인터페이스(540)로 전송할 수 있다. 여기서, 커맨드들(CMD#)은 프로그램 커맨드일 수 있다. The zone management unit 500 temporarily stores the commands CMD# output from the command management unit 520 and controls the order of the commands CMD# according to the zone ID Zid and the write pointers WP#. can be adjusted again. When a zone ID Zid in which all commands CMD# corresponding to a set write size are generated, the zone management unit 500 sends commands CMD# of the zone ID Zid to the memory interface may be transmitted to 540 . Here, the commands CMD# may be program commands.

메모리 인터페이스(540)는 구역 관리부(500)에서 출력되는 커맨드들(CMD)을 구역 아이디(Zid#) 별로 저장하기 위한 복수의 출력 버퍼들(B1~Bp)을 포함할 수 있다. 예를 들면, 출력 버퍼들(B1~Bp)은 구역 아이디들(Zid#)에 1:1로 대응될 수 있다. 메모리 인터페이스(540)는 라이트 포인터들(WP#)에 대응되는 물리 블록 어드레스들(PBA#) 및 커맨드들(CMD#)을 구역 아이디(Zid#)에 대응되는 다이에게 출력할 수 있다. The memory interface 540 may include a plurality of output buffers B1 to Bp for storing the commands CMD output from the zone management unit 500 for each zone ID Zid#. For example, the output buffers B1 to Bp may correspond to the zone IDs Zid# 1:1. The memory interface 540 may output the physical block addresses PBA# and commands CMD# corresponding to the write pointers WP# to the die corresponding to the zone ID Zid#.

도 7은 본 발명의 실시 예에 따른 구역 관리부를 설명하기 위한 도면이다. 7 is a view for explaining a zone management unit according to an embodiment of the present invention.

도 7을 참조하면, 구역 관리부(500)는 라이트 큐(write queue; 710) 및 큐 컨트롤러(queue controller; 720)를 포함할 수 있다. Referring to FIG. 7 , the zone manager 500 may include a write queue 710 and a queue controller 720 .

라이트 큐(710)는 커맨드 관리부(도 6의 520)로부터 출력된 커맨드들(CMD#)과, 커맨드들(CMD#)에 각각 대응되는 구역 아이디 및 라이트 포인터를 임시로 저장하기 위한 큐 버퍼(queue buffer; 711)를 포함할 수 있다. 큐 버퍼(711)에 입력되는 커맨드들(CMD#)의 구역 아이디 및 라이트 포인터들의 순서는 불연속적일 수 있다. The write queue 710 is a queue buffer for temporarily storing the commands CMD# output from the command manager (520 in FIG. 6 ), a zone ID and a write pointer respectively corresponding to the commands CMD#. buffer; 711). The order of the zone IDs and write pointers of the commands CMD# input to the queue buffer 711 may be discontinuous.

큐 컨트롤러(720)는 라이트 큐(710)로부터 출력된 커맨드들(CMD#)을 구역 아이디 및 라이트 포인터 별로 저장하기 위한 임시 버퍼들(temporary buffers; 721)을 포함할 수 있다. 큐 컨트롤러(720)는 구역 아이디 및 라이트 포인터에 따라 커맨드들(CMD#)을 임시 버퍼들(721)에 순차적으로 저장할 수 있다. 큐 컨트롤러(720)는 설정된 사이즈가 모두 채워진 임시 버퍼가 발생하면, 해당 임시 버퍼에 저장된 커맨드들(CMD#)을 출력할 수 있다. The queue controller 720 may include temporary buffers 721 for storing the commands CMD# output from the write queue 710 for each zone ID and each write pointer. The queue controller 720 may sequentially store the commands CMD# in the temporary buffers 721 according to the zone ID and the write pointer. The queue controller 720 may output the commands CMD# stored in the temporary buffer when the temporary buffer with all the set sizes is filled.

도 8은 본 발명의 실시 예에 따른 구역 관리부의 동작을 설명하기 위한 도면이다. 8 is a diagram for explaining an operation of a zone management unit according to an embodiment of the present invention.

도 8을 참조하면, 구역 관리부(500)는 커맨드들(CMD#)이 입력되면, 입력된 순서대로 커맨드들(CMD#)과 커맨드들(CMD#)에 대응되는 구역 아이디들(Zid#) 및 라이트 포인터들(WP#)을 큐 버퍼(711)에 저장할 수 있다. 예를 들면, 저장 장치에 포함된 메모리 블록들이 논리적으로 다섯 개의 구역들로 구분되어 다섯 개의 구역 아이디들이 설정되고, 각각의 구역 아이디에 다섯 개의 라이트 포인터들이 할당되었다고 가정한다. 즉, 구역 아이디(Zid#)는 제1 내지 제5 구역 아이디들(Zid1~Zid5)을 포함할 수 있고, 제1 내지 제5 구역 아이디들(Zid1~Zid5) 각각에는 서로 다른 라이트 포인터들(WP#)이 할당될 수 있다. Referring to FIG. 8 , when commands CMD# are input, the zone management unit 500 generates commands CMD# and zone IDs Zid# corresponding to the commands CMD# in the order in which they are input. The write pointers WP# may be stored in the queue buffer 711 . For example, it is assumed that memory blocks included in the storage device are logically divided into five zones, five zone IDs are set, and five write pointers are assigned to each zone ID. That is, the zone ID Zid# may include the first to fifth zone IDs Zid1 to Zid5, and different light pointers WP to each of the first to fifth zone IDs Zid1 to Zid5. #) can be assigned.

도 8에서, 큐 버퍼(711)의 커맨드들의 숫자는 큐 버퍼(711)에 입력된 순서를 나타낸다. 예를 들면, 제1 커맨드(CMD01)는 큐 버퍼(711)에 첫 번째로 입력된 커맨드를 나타낸다. 제1 커맨드(CMD01)에는 제1 구역 아이디(Zid1) 및 제1 라이트 포인터(WP01)가 할당될 수 있다. 이러한 방식으로 큐 버퍼(711)에는 제1 내지 제23 커맨드들(CMD01~CMD23)이 순차적으로 입력될 수 있다. 하지만, 제1 내지 제23 커맨드들(CMD01~CMD23)에 각각 할당된 라이트 포인터들은 커맨드들이 입력된 순서와 다르게 불연속적이다. 이는 호스트가 요청한 커맨드들의 순서가 변경되었다는 것을 의미한다. 예를 들면, 제1 내지 제4 커맨드들(CMD01~CMD04)에는 제1 내지 제4 라이트 포인터들(WP01~WP04)이 할당되므로, 제1 내지 제4 커맨드들(CMD01~CMD04)의 순서는 호스트가 요청한 순서와 동일하다. 제4 커맨드(CMD04) 다음으로 입력된 제5 커맨드(CMD05)에는 제8 라이트 포인터(WP08)가 할당되므로, 제5 커맨드(CMD05)는 제4 커맨드(CMD04)와 불연속적이고, 이는 제5 커맨드(CMD05)는 호스트가 요청한 순서와 다르다는 것을 나타낸다. In FIG. 8 , the number of commands in the queue buffer 711 indicates the order in which they are input to the queue buffer 711 . For example, the first command CMD01 represents a command first input to the queue buffer 711 . A first zone ID Zid1 and a first write pointer WP01 may be allocated to the first command CMD01. In this way, first to twenty-third commands CMD01 to CMD23 may be sequentially input to the queue buffer 711 . However, the write pointers allocated to the first to twenty-third commands CMD01 to CMD23 are discontinuous differently from the order in which the commands are input. This means that the order of the commands requested by the host has changed. For example, since the first to fourth write pointers WP01 to WP04 are assigned to the first to fourth commands CMD01 to CMD04, the order of the first to fourth commands CMD01 to CMD04 is same order as requested. Since the eighth write pointer WP08 is assigned to the fifth command CMD05 input after the fourth command CMD04, the fifth command CMD05 is discontinuous from the fourth command CMD04, which is CMD05) indicates that the order requested by the host is different.

큐 컨트롤러(720)는 라이트 큐(710)로부터 출력되는 커맨드들(CMD#)을 구역 아이디(Zid#)에 따라 구분되는 임시 버퍼들(TB1~TB5)에 저장할 수 있다. 예를 들면, 제1 내지 제5 임시 버퍼들(TB1~TB5) 각각은 설정된 개수의 커맨드들(CMD#)을 각각 저장하기 위한 서브 버퍼들을 포함할 수 있다. 예를 들면, 제1 임시 버퍼(TB1)가 제2 내지 제5 임시 버퍼들(TB2~TB5) 대비 더 큰 저장 용량으로 할당된 경우, 제1 임시 버퍼(TB1)는 제1_1 임시 버퍼(TB1_1) 및 제1_2 임시 버퍼(TB1_2)를 포함할 수 있다. 제1_1 임시 버퍼(TB1_1) 및 제1_2 임시 버퍼(TB1_2)는 제1 구역 아이디(Zid1)에 할당될 수 있고, 제2 내지 제5 임시 버퍼들(TB2~TB5)은 제2 내지 제5 구역 아이디들(Zid2~Zid5)에 각각 할당될 수 있다. 큐 컨트롤러(720)는 큐 버퍼(711)에 저장된 커맨드(CMD#)의 구역 아이디(Zid#)에 따라 임시 버퍼를 선택하고, 선택된 임시 버퍼에 포함된 서브 버퍼들 중에서 커맨드(CMD#)의 라이트 포인터(WP#)에 따라 하나의 서브 버퍼를 선택한 후, 선택된 서브 버퍼에 커맨드(CMD#)를 저장할 수 있다. The queue controller 720 may store the commands CMD# output from the write queue 710 in temporary buffers TB1 to TB5 classified according to the zone ID Zid#. For example, each of the first to fifth temporary buffers TB1 to TB5 may include sub-buffers for respectively storing a set number of commands CMD#. For example, when the first temporary buffer TB1 is allocated with a larger storage capacity than that of the second to fifth temporary buffers TB2 to TB5, the first temporary buffer TB1 is the first temporary buffer TB1_1 and a first_2 temporary buffer TB1_2. The first_1 temporary buffer TB1_1 and the first_2 temporary buffer TB1_2 may be allocated to the first zone ID Zid1, and the second to fifth temporary buffers TB2 to TB5 are the second to fifth zone IDs. They may be assigned to each of the fields Zid2 to Zid5. The queue controller 720 selects a temporary buffer according to the zone ID Zid# of the command CMD# stored in the queue buffer 711, and writes the command CMD# from among the sub-buffers included in the selected temporary buffer. After selecting one sub-buffer according to the pointer WP#, the command CMD# may be stored in the selected sub-buffer.

예를 들면, 제1_1 임시 버퍼(TB1_1)의 시작 포인터(SP)가 01로 설정되고, 제1_2 임시 버퍼(TB_1_2)의 시작 포인터(SP)가 06으로 설정된 경우, 제1_1 임시 버퍼(TB1_1)에는 제1 내지 제5 라이트 포인터들(WP01~WP05)이 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 저장될 수 있고, 제1_2 임시 버퍼(TB1_2)에는 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)이 저장될 수 있다. 여기서, 제1_1 임시 버퍼(TB1_1)의 첫 번째 서브 버퍼에는 시작 포인터(SP) 01로 지정된 제1 라이트 포인터(WP01)가 할당되므로, 첫 번째 서브 버퍼에는 제1 라이트 포인터(WP01)가 할당된 제1 커맨드(CMD01)가 저장되고, 제1_2 임시 버퍼(TB1_2)의 첫 번째 서브 버퍼에는 시작 포인터(SP) 06이 지정된 제6 라이트 포인터(WP06)의 제8 커맨드(CMD08)가 저장된다. For example, when the start pointer SP of the first_1 temporary buffer TB1_1 is set to 01 and the start pointer SP of the first_2 temporary buffer TB_1_2 is set to 06, the first_1 temporary buffer TB1_1 has The first, second, third, fourth, and seventh commands CMD01, CMD02, CMD03, CMD04, CMD07 to which the first to fifth write pointers WP01 to WP05 are allocated may be stored, and the first to fifth write pointers WP01 to WP05 may be stored. The eighth, ninth, fifth, sixth and twelfth commands CMD08, CMD09, CMD05, CMD06, CMD12 to which the sixth to tenth write pointers WP06 to WP10 are allocated to the 1_2 temporary buffer TB1_2. This can be saved. Here, since the first write pointer WP01 designated as the start pointer SP 01 is allocated to the first sub-buffer of the first_1 temporary buffer TB1_1, the first sub-buffer to which the first write pointer WP01 is allocated The first command CMD01 is stored, and the eighth command CMD08 of the sixth write pointer WP06 to which the start pointer SP 06 is designated is stored in the first sub-buffer of the first_2 temporary buffer TB1_2.

예를 들면, 큐 버퍼(711)에 저장된 제10 커맨드(CMD10)가 라이트 큐(710)로부터 출력되는 경우, 제10 커맨드(CMD10)에는 제3 구역 아이디(Zid3) 및 제16 라이트 포인터(WP16)가 할당되므로, 제1 내지 제5 임시 버퍼들(TB1~TB5) 중에서 제3 구역 아이디(Zid3)가 할당된 제3 임시 버퍼(TB3)가 선택될 수 있다. 제3 임시 버퍼(TB3)의 시작 포인터(SP)가 16이므로, 시작 포인터(SP) 16에 대응되는 서브 버퍼에 제16 라이트 포인터(WP16)가 할당된 제10 커맨드(CMD10)가 저장될 수 있다. For example, when the tenth command CMD10 stored in the queue buffer 711 is output from the write queue 710 , the tenth command CMD10 includes the third zone ID Zid3 and the sixteenth write pointer WP16 . Since is allocated, the third temporary buffer TB3 to which the third zone ID Zid3 is allocated may be selected from among the first to fifth temporary buffers TB1 to TB5. Since the start pointer SP of the third temporary buffer TB3 is 16, the tenth command CMD10 to which the 16th write pointer WP16 is allocated may be stored in the sub-buffer corresponding to the start pointer SP 16 . .

상술한 방식으로 큐 버퍼(711)에 임시로 저장된 제1 내지 제23 커맨드들(CMD01~CMD23)은 구역 아이디 및 라이트 포인터에 따라 임시 버퍼들(721)에 저장될 수 있다. The first to twenty-third commands CMD01 to CMD23 temporarily stored in the queue buffer 711 in the above-described manner may be stored in the temporary buffers 721 according to the zone ID and the write pointer.

큐 컨트롤러(720)는 제1 내지 제5 임시 버퍼들(TB1~TB5) 중에서 서브 버퍼들에 커맨드들이 모두 채워진 임시 버퍼가 발생하면, 해당 임시 버퍼에 저장된 커맨드들을 출력할 수 있다. 예를 들면, 제1_1 임시 버퍼(TB1_1)에 포함된 서브 버퍼들에 제1 내지 제5 라이트 포인터들(WP01~WP05)이 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 모두 저장되면, 큐 컨트롤러(720)는 제1_1 임시 버퍼(TB1_1)에 저장된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)을 출력할 수 있다. 즉, 제1 내지 제5 라이트 포인터들(WP01~WP05)에 따라 호스트가 요청한 순서대로 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 재배열될 수 있다. 제1_2 임시 버퍼(TB1_2)에 포함된 서브 버퍼들에 제6 내지 제10 라이트 포인터들(WP06~WP10)이 모두 저장되면, 큐 컨트롤러(720)는 제1_2 임시 버퍼(TB1_2)에 저장된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)을 출력할 수 있다. 이러한 방식으로 제2 및 제3 임시 버퍼들(TB2, TB3)에 커맨드들(CMD#)이 모두 저장되면, 큐 컨트롤러(720)는 커맨드들(CMD#)이 먼저 채워진 임시 버퍼의 커맨드들을 출력할 수 있다. When a temporary buffer in which all commands are filled in sub-buffers of the first to fifth temporary buffers TB1 to TB5 occurs, the queue controller 720 may output commands stored in the corresponding temporary buffer. For example, first, second, third, fourth, and seventh commands in which first to fifth write pointers WP01 to WP05 are allocated to sub-buffers included in the first_1 temporary buffer TB1_1 When (CMD01, CMD02, CMD03, CMD04, CMD07) are all stored, the queue controller 720 stores the first, second, third, fourth and seventh commands CMD01, CMD02, CMD03, CMD04, CMD07) can be output. That is, according to the first to fifth write pointers WP01 to WP05, the first, second, third, fourth, and seventh commands CMD01, CMD02, CMD03, CMD04, CMD07 are executed in the order requested by the host. can be rearranged. When all of the sixth to tenth write pointers WP06 to WP10 are stored in the sub-buffers included in the first_2 temporary buffer TB1_2, the queue controller 720 controls the eighth and tenth write pointers stored in the first_2 temporary buffer TB1_2. The ninth, fifth, sixth, and twelfth commands CMD08, CMD09, CMD05, CMD06, and CMD12 may be output. When all of the commands CMD# are stored in the second and third temporary buffers TB2 and TB3 in this way, the queue controller 720 outputs the commands of the temporary buffer filled with the commands CMD# first. can

제4 및 제5 임시 버퍼들(TB4, TB5)에 커맨드들(CMD#)이 모두 채워지지 않으면, 큐 컨트롤러(720)는 커맨드들(CMD#)이 모두 채워질 때까지 제4 및 제5 임시 버퍼들(TB4, TB5)에 저장된 커맨드들(CMD#)의 출력을 홀드(hold)할 수 있다. 예를 들면, 제4 임시 버퍼(TB4)에 제21 내지 제25 라이트 포인터들(WL21~WP25)이 할당되고, 이 중에서 제21 및 제22 라이트 포인터들(WP21, WP22)에 대응되는 제23 및 제18 커맨드들(CMD23, CMD18)만 저장된 경우, 나머지 제23 내지 제25 라이트 포인터들(WP23~WP25)이 할당된 커맨드들(CMD#)이 저장되지 않았으므로, 제4 구역 아이디(Zid4)에 맵핑된 메모리 영역들에 연속적인 데이터를 프로그램할 수 없다. 따라서, 큐 컨트롤러(720)는 제4 임시 버퍼(TB4)에 커맨드들이 모두 채워질 때까지 커맨드들의 출력을 지연시킬 수 있다. If the commands CMD# are not all filled in the fourth and fifth temporary buffers TB4 and TB5, the queue controller 720 controls the fourth and fifth temporary buffers until all of the commands CMD# are filled. The output of the commands CMD# stored in the TB4 and TB5 may be held. For example, the twenty-first to twenty-fifth write pointers WL21 to WP25 are allocated to the fourth temporary buffer TB4, and among them, the twenty-third and twenty-fifth write pointers corresponding to the twenty-first and twenty-second write pointers WP21 and WP22. When only the eighteenth commands CMD23 and CMD18 are stored, the commands CMD# to which the remaining twenty-third to twenty-fifth write pointers WP23 to WP25 are allocated are not stored. Continuous data cannot be programmed into the mapped memory areas. Accordingly, the queue controller 720 may delay output of commands until all commands are filled in the fourth temporary buffer TB4 .

큐 컨트롤러(720)는 제4 임시 버퍼(TB4)보다 제5 임시 버퍼(TB5)가 커맨드들로 먼저 채워지면, 제5 임시 버퍼(TB5)에 저장된 커맨드들을 출력할 수 있다. When the fifth temporary buffer TB5 is filled with commands earlier than the fourth temporary buffer TB4 , the queue controller 720 may output the commands stored in the fifth temporary buffer TB5 .

도 9는 본 발명의 실시 예에 따른 메모리 인터페이스를 설명하기 위한 도면이다. 9 is a diagram for explaining a memory interface according to an embodiment of the present invention.

도 9 및 도 8을 참조하면, 메모리 인터페이스(540)는 제1 내지 제5 구역 아이디들(Zid1~Zid5)로 구분되는 제1 내지 제5 출력 버퍼들(B1~B5)을 포함할 수 있다. 제1 출력 버퍼(B1)는 제1 내지 제5 라이트 포인터들(WP01~WP05)에 각각 맵핑된 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)을 저장할 수 있다. 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)은 커맨드 관리부(도 5의 520)에 의해 시스템 버퍼(도 5의 510)에서 써치(search)된 정보일 수 있다. 9 and 8 , the memory interface 540 may include first to fifth output buffers B1 to B5 divided by first to fifth zone IDs Zid1 to Zid5. The first output buffer B1 may store first to fifth physical block addresses PBA01 to PBA05 mapped to the first to fifth write pointers WP01 to WP05, respectively. The first to fifth physical block addresses PBA01 to PBA05 may be information searched in the system buffer ( 510 of FIG. 5 ) by the command manager ( 520 of FIG. 5 ).

메모리 인터페이스(540)에서 제1 출력 버퍼(B1)에 제1 구역 아이디(Zid1)가 할당된 경우, 제1_1 임시 버퍼(TB1_1) 또는 제1_2 임시 버퍼(TB1_2)에서 출력된 커맨드들(CMD)에 할당된 라이트 포인터들(WP01~WP05 또는 WP06~WP10)의 물리 블록 어드레스들(PBA#)이 제1 출력 버퍼(B1)에 임시로 저장된 후 출력될 수 있다. 메모리 인터페이스(540)는 제1 내지 제5 라이트 포인터들(WP01~WP05)에 각각 맵핑된 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)을 저장한 후, 제1 구역 아이디(Zid1)와 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)에 따라 커맨드(CMD)를 저장 장치에 포함된 다이들에게 전송할 수 있다. When the first zone ID Zid1 is assigned to the first output buffer B1 in the memory interface 540 , the commands CMD output from the first_1 temporary buffer TB1_1 or the first_2 temporary buffer TB1_2 are Physical block addresses PBA# of the allocated write pointers WP01 to WP05 or WP06 to WP10 may be temporarily stored in the first output buffer B1 and then output. The memory interface 540 stores first to fifth physical block addresses PBA01 to PBA05 mapped to the first to fifth write pointers WP01 to WP05, respectively, and then includes a first zone ID Zid1 and The command CMD may be transmitted to the dies included in the storage device according to the first to fifth physical block addresses PBA01 to PBA05.

제4 및 제5 임시 버퍼들(TB4, TB5)과 같이 일부 커맨드들이 저장되지 않은 임시 버퍼들에서는 저장되어 있는 커맨드들이 출력되지 않으므로, 제4 및 제5 임시 버퍼들(TB4, TB5)에 제21, 제22 또는 제26 라이트 포인터들(WP21, WP22 또는 WP26)이 할당된 커맨드들이 저장되더라도, 제4 임시 버퍼(TB4)에 대응되는 제4 출력 버퍼(B4)와, 제5 임시 버퍼(TB5)에 대응되는 제5 출력 버퍼(B5)에는 물리 블록 어드레스들(PB#)이 저장되지 않는다. Since stored commands are not output from temporary buffers in which some commands are not stored, such as the fourth and fifth temporary buffers TB4 and TB5, the 21st , even if commands to which the 22nd or 26th write pointers WP21, WP22, or WP26 are allocated are stored, the fourth output buffer B4 corresponding to the fourth temporary buffer TB4 and the fifth temporary buffer TB5 Physical block addresses PB# are not stored in the fifth output buffer B5 corresponding to .

도 10은 컨트롤러가 다이들에 액세스(access)하는 동작을 설명하기 위한 도면이다. 10 is a diagram for explaining an operation of a controller accessing dies.

도 10을 참조하면, 컨트롤러(1200)는 메모리 인터페이스(540)에 저장된 물리 블록 어드레스들(PBA#)과, 물리 블록 어드레스들(PBA#)에 대응되는 구역 아이디(Zid#)에 따라 선택된 다이들에게 물리 블록 어드레스들(PBA#) 및 커맨드(CMD)를 전송할 수 있다. Referring to FIG. 10 , the controller 1200 controls the dies selected according to the physical block addresses PBA# stored in the memory interface 540 and the zone ID Zid# corresponding to the physical block addresses PBA#. physical block addresses (PBA#) and a command (CMD) to

상술한 설명을 토대로, 구역 관리부가 커맨드들의 출력 순서를 재배치하는 방법을 구체적으로 설명하면 다음과 같다. Based on the above description, a method in which the area management unit rearranges the output order of commands will be described in detail as follows.

도 11 내지 도 18b는 본 발명의 제1 실시 예에 따른 메모리 시스템의 동작을 순차적으로 설명하기 위한 도면들이다. 11 to 18B are diagrams for sequentially explaining the operation of the memory system according to the first embodiment of the present invention.

도 11을 참조하면, 라이트 큐(710)에 커맨드들(CMD#)이 입력되면, 라이트 큐(710)는 커맨드들(CMD#)과, 커맨드들(CMD#)에 할당된 구역 아이디들(Zid1~Zid5) 및 라이트 포인터들(WP01~WP25)을 입력된 순서대로 큐 버퍼(711)에 저장할 수 있다. 제1 실시 예에서는 제1 내지 제22 커맨드들(CMD01~CMD22)이 입력된 경우를 예를 들어 설명하지만, 큐 버퍼(711)에 빈(empty) 영역이 있으면 커맨드들(CMD#)은 계속 입력될 수도 있다. 제1 내지 제22 커맨드들(CMD01~CMD22)은 모두 프로그램 커맨드일 수 있으며, 커맨드들(CMD#)의 숫자 ‘01~22’는 커맨드들(CMD#)이 입력된 순서를 의미한다. Referring to FIG. 11 , when commands CMD# are input to the write queue 710 , the write queue 710 displays the commands CMD# and zone IDs Zid1 assigned to the commands CMD#. ~Zid5) and the write pointers WP01 to WP25 may be stored in the queue buffer 711 in the order in which they are input. In the first embodiment, a case in which the first to 22nd commands CMD01 to CMD22 are input is described as an example, but if there is an empty area in the queue buffer 711, the commands CMD# are continuously input it might be All of the first to twenty-second commands CMD01 to CMD22 may be program commands, and the numbers '01 to 22' of the commands CMD# indicate the order in which the commands CMD# are input.

제1 내지 제4 커맨드들(CMD01~CMD04)에 제1 구역 아이디(Zid1) 및 제1 내지 제4 라이트 포인터들(WP01~WP04)이 할당되므로, 임시 버퍼들(721) 중에서 제1 구역 아이디(Zid1)에 대응되는 제1 임시 버퍼(TB1)가 선택될 수 있다. 제1 임시 버퍼(TB1)는 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)을 포함할 수 있다. 제1_1 임시 버퍼(TB1_1)의 시작 포인터(SP)가 01 이므로, 제1 라이트 포인터(WP01)가 할당된 제1 커맨드(CMD01)이 제1_1 임시 버퍼(TB1_1)의 첫 번째 서브 버퍼에 입력되고, 나머지 서브 버퍼들에는 제2 내지 제4 라이트 포인터들(WP02~WP04)이 각각 할당된 제2, 제3 및 제4 커맨드들(CMD02, CMD03, CMD04)이 순차적으로 입력될 수 있다. Since the first zone ID Zid1 and the first to fourth write pointers WP01 to WP04 are allocated to the first to fourth commands CMD01 to CMD04, the first zone ID Zid1 among the temporary buffers 721 is The first temporary buffer TB1 corresponding to Zid1) may be selected. The first temporary buffer TB1 may include first_1 and first_2 temporary buffers TB1_1 and TB1_2 . Since the start pointer SP of the first_1 temporary buffer TB1_1 is 01, the first command CMD01 to which the first write pointer WP01 is assigned is input to the first sub-buffer of the first_1 temporary buffer TB1_1, The second, third, and fourth commands CMD02, CMD03, and CMD04 to which the second to fourth write pointers WP02 to WP04 are respectively allocated may be sequentially input to the remaining sub-buffers.

도 12를 참조하면, 제4 커맨드(CMD04) 다음으로 입력된 제5 커맨드(CMD05)에는 제1 구역 아이디(Zid1)가 할당되지만, 제5 라이트 포인터(WP05)가 아닌 제8 라이트 포인터(WP08)이므로 라이트 포인터의 순서가 불연속적이다. 따라서, 큐 컨트롤러(720)는 시작 포인터(SP)가 06인 제1_2 임시 버퍼(TB1_2)에서 세 번째 서브 버퍼에 제8 라이트 포인터(WP08)가 할당된 제5 커맨드(CMD05)를 입력할 수 있다. 제8 라이트 포인터(WP08) 다음으로 제1 구역 아이디(Zid1)의 제9 라이트 포인터(WP09)가 할당된 제6 커맨드(CMD06)가 입력되므로, 제9 라이트 포인터(WP09)가 할당된 제6 커맨드(CMD06)는 제1_2 임시 버퍼(TB1_2)의 네 번째 서브 버퍼에 입력될 수 있다. Referring to FIG. 12 , although the first zone ID Zid1 is assigned to the fifth command CMD05 input after the fourth command CMD04, the eighth write pointer WP08 is not the fifth write pointer WP05. Therefore, the order of the light pointers is discontinuous. Accordingly, the queue controller 720 may input the fifth command CMD05 to which the eighth write pointer WP08 is assigned to the third sub-buffer from the first_2 temporary buffer TB1_2 having the start pointer SP of 06. . Since the sixth command CMD06 to which the ninth write pointer WP09 of the first zone ID Zid1 is assigned is input next to the eighth write pointer WP08, the sixth command to which the ninth write pointer WP09 is assigned is input. (CMD06) may be input to the fourth sub-buffer of the first_2 temporary buffer TB1_2.

도 13a를 참조하면, 제6 커맨드(CMD06) 다음으로 입력된 제7 커맨드(CMD07)에는 제1 구역 아이디(Zid1)의 제5 라이트 포인터(WP05)가 할당되므로 라이트 포인터의 순서가 불연속적이다. 따라서, 큐 컨트롤러(720)는 제1_1 임시 버퍼(TB1_1)에서 다섯 번째 서브 버퍼에 제5 라이트 포인터(WP05)가 할당된 제7 커맨드(CMD07)를 입력할 수 있다. 이에 따라, 제1_1 임시 버퍼(TB1_1)의 모든 서브 버퍼들에는 제1 내지 제5 라이트 포인터들(WP01~WP05)이 각각 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 채워질 수 있다. 연속적인 데이터를 프로그램할 수 있는 저장 사이즈인 다섯 개의 서브 버퍼들이 모두 채워졌으므로, 큐 컨트롤러(720)는 제1 구역 아이디(Zid1)와 제1 내지 제5 라이트 포인터들(WP01~WP05)이 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)을 출력할 수 있다. 본 실시 예에서 연속적인 데이터를 프로그램할 수 있는 저장 사이즈가 다섯 개로 설명되지만, 이는 본 실시 예를 설명하기 위한 예시 이므로 저장 사이즈는 메모리 시스템에 따라 변경될 수 있다. 제1_2 임시 버퍼(TB1_2)의 서브 버퍼들은 커맨드들로 완전히 채워지지 않았으므로, 제1_1 임시 버퍼(TB1_1)에서 제1 내지 제5 라이트 포인터들(WP01~WP05)이 할당된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 출력될 때 제1_2 임시 버퍼(TB1_2)에서 제8 및 제9 라이트 포인터들(WP08, WP09)이 할당된 제5 및 제6 커맨드들(CMD05, CMD06)은 출력되지 않는다. Referring to FIG. 13A , since the fifth write pointer WP05 of the first zone ID Zid1 is allocated to the seventh command CMD07 input after the sixth command CMD06, the order of the write pointers is discontinuous. Accordingly, the queue controller 720 may input the seventh command CMD07 to which the fifth write pointer WP05 is assigned to the fifth sub-buffer in the first_1 temporary buffer TB1_1 . Accordingly, first, second, third, fourth and seventh commands ( ) to which first to fifth write pointers WP01 to WP05 are respectively allocated to all sub-buffers of the first_1 temporary buffer TB1_1 . CMD01, CMD02, CMD03, CMD04, CMD07) can be filled. Since all of the five sub-buffers, which are the storage size for programming continuous data, are filled, the queue controller 720 determines where the first zone ID Zid1 and the first to fifth write pointers WP01 to WP05 are allocated. The first, second, third, fourth, and seventh commands CMD01, CMD02, CMD03, CMD04, and CMD07 may be output. In the present embodiment, five storage sizes for programming continuous data are described, but since this is an example for describing the present embodiment, the storage size may be changed according to the memory system. Since the sub-buffers of the 1st_2 temporary buffer TB1_2 are not completely filled with commands, the first, second, and When the third, fourth, and seventh commands CMD01, CMD02, CMD03, CMD04, and CMD07 are output, the eighth and ninth write pointers WP08 and WP09 are allocated from the first_2 temporary buffer TB1_2. The fifth and sixth commands CMD05 and CMD06 are not output.

도 13b를 참조하면, 구역 관리부(500)에서 출력된 제1 구역 아이디(Zid1)에 대한 커맨드들(CMD)은 메모리 인터페이스(540)로 전송될 수 있다. 메모리 인터페이스(540)는 제1 구역 아이디(Zid1)에 대응되는 제1 출력 버퍼(B1)에 제1 내지 제5 라이트 포인터들(WP01~WP05)에 맵핑된 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)을 저장하고, 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05) 및 커맨드(CMD)를 저장 장치(1100)로 전송할 수 있다. 저장 장치(1100)는 구역 아이디에 대응되는 다이들에서 물리 블록 어드레스들(PBA#) 및 커맨드(CMD)에 따라 프로그램 동작을 수행할 수 있다. Referring to FIG. 13B , the commands CMD for the first zone ID Zid1 output from the zone manager 500 may be transmitted to the memory interface 540 . The memory interface 540 provides first to fifth physical block addresses mapped to the first to fifth write pointers WP01 to WP05 in the first output buffer B1 corresponding to the first zone ID Zid1. PBA01 to PBA05 may be stored, and first to fifth physical block addresses PBA01 to PBA05 and a command CMD may be transmitted to the storage device 1100 . The storage device 1100 may perform a program operation on the dies corresponding to the zone ID according to the physical block addresses PBA# and the command CMD.

도 14를 참조하면, 제1_1 임시 버퍼(TB1_1)에 저장된 제1, 제2, 제3, 제4 및 제7 커맨드들(CMD01, CMD02, CMD03, CMD04, CMD07)이 출력되었으므로(도 13a 참조) 제1_1 임시 버퍼(TB1_1)는 비워질 수 있다. 제7 커맨드(CMD07) 다음으로 입력된 제8 커맨드(CMD08)에는 제1 구역 아이디(Zid1) 및 제6 라이트 포인터(WP06)가 할당되므로, 큐 컨트롤러(720)는 시작 포인터(SP)가 06인 제1_2 임시 버퍼(TB1_2)에서 첫 번째 서브 버퍼에 제6 라이트 포인터(WP06)가 할당된 제8 커맨드(CMD08)를 입력할 수 있다. 제8 커맨드(CMD08) 다음으로 입력된 제9 커맨드(CMD09)에는 제1 구역 아이디(Zid1) 및 제7 라이트 포인터(WP07)가 입력되므로, 제7 라이트 포인터(WP07)가 할당된 제9 커맨드(CMD09)는 제1_2 임시 버퍼(TB1_2)의 두 번째 서브 버퍼에 입력될 수 있다. Referring to FIG. 14 , since the first, second, third, fourth and seventh commands CMD01 , CMD02 , CMD03 , CMD04 and CMD07 stored in the first_1 temporary buffer TB1_1 are output (see FIG. 13A ) The first_1 temporary buffer TB1_1 may be emptied. Since the first zone ID Zid1 and the sixth write pointer WP06 are assigned to the eighth command CMD08 input after the seventh command CMD07, the queue controller 720 sets the start pointer SP to 06. An eighth command CMD08 to which the sixth write pointer WP06 is allocated may be input to the first sub-buffer in the first_2 temporary buffer TB1_2. Since the first zone ID Zid1 and the seventh write pointer WP07 are input to the ninth command CMD09 input after the eighth command CMD08, the ninth command ( ) to which the seventh write pointer WP07 is assigned. CMD09) may be input to the second sub-buffer of the first_2 temporary buffer TB1_2.

도 15를 참조하면, 제9 커맨드(CMD09) 다음으로 입력된 제10 커맨드(CMD10)에는 제3 구역 아이디(Zid3) 및 제16 라이트 포인터(WP16)가 할당되므로, 큐 컨트롤러(720)는 시작 포인터(SP)가 16인 제3 임시 버퍼(TB3)의 첫 번째 서브 버퍼에 제16 라이트 포인터(WP16)가 할당된 제10 커맨드(CMD10)를 입력할 수 있다. 제16 라이트 포인터(WP16) 다음으로 제3 구역 아이디(Zid3)의 제17 라이트 포인터(WP17)가 큐잉되므로, 제17 라이트 포인터(WP17)가 할당된 제11 커맨드(CMD11)는 제3 임시 버퍼(TB3)의 두 번째 서브 버퍼에 입력될 수 있다. Referring to FIG. 15 , since the third zone ID Zid3 and the 16th write pointer WP16 are assigned to the tenth command CMD10 input after the ninth command CMD09, the queue controller 720 sets the start pointer The tenth command CMD10 to which the sixteenth write pointer WP16 is allocated may be input to the first sub-buffer of the third temporary buffer TB3 having an SP of 16 . Since the 17th write pointer WP17 of the third zone ID Zid3 is queued after the 16th write pointer WP16, the eleventh command CMD11 to which the 17th write pointer WP17 is assigned is transferred to the third temporary buffer ( It can be input to the second sub-buffer of TB3).

도 16a를 참조하면, 제11 커맨드(CMD11) 다음으로 입력된 제12 커맨드(CMD12)에는 제1 구역 아이디(Zid1)의 제10 라이트 포인터(WP10)가 할당되므로, 큐 컨트롤러(720)는 제1_2 임시 버퍼(TB1_2)의 다섯 번째 서브 버퍼에 제10 라이트 포인터(WP10)가 할당된 제12 커맨드(CMD12)를 입력할 수 있다. 이에 따라, 제1_2 임시 버퍼(TB1_2)의 모든 서브 버퍼들에 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)이 채워질 수 있다. 연속적인 데이터를 프로그램할 수 있는 저장 사이즈인 다섯 개의 서브 버퍼들이 모두 채워졌으므로, 큐 컨트롤러(720)는 제1 구역 아이디(Zid1)에서 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)을 출력할 수 있다. Referring to FIG. 16A , since the tenth write pointer WP10 of the first zone ID Zid1 is allocated to the twelfth command CMD12 input after the eleventh command CMD11, the queue controller 720 performs the first_2 The twelfth command CMD12 to which the tenth write pointer WP10 is allocated may be input to the fifth sub-buffer of the temporary buffer TB1_2 . Accordingly, the eighth, ninth, fifth, sixth and twelfth commands CMD08 to which the sixth to tenth write pointers WP06 to WP10 are allocated to all sub-buffers of the first_2 temporary buffer TB1_2. , CMD09, CMD05, CMD06, CMD12) can be filled. Since all of the five sub-buffers, which are the storage size for programming continuous data, are filled, the queue controller 720 receives the sixth to tenth write pointers WP06 to WP10 in the first zone ID Zid1. The eighth, ninth, fifth, sixth, and twelfth commands CMD08, CMD09, CMD05, CMD06, and CMD12 may be output.

도 16b를 참조하면, 구역 관리부(500)에서 출력된 제1 구역 아이디(Zid1)에 대한 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)은 메모리 인터페이스(540)로 전송될 수 있다. 메모리 인터페이스(540)는 제1 구역 아이디(Zid1)에 대응되는 제1 출력 버퍼(B1)에 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)에 할당된 제6 내지 제10 라이트 포인터들(WP06~WP10)에 맵핑된 제6 내지 제10 물리 블록 어드레스들(PBA06~PBA10)을 저장하고, 제6 내지 제10 물리 블록 어드레스들(PBA06~PBA10)에 따라 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)을 저장 장치(1100)로 전송할 수 있다. 저장 장치(1100)는 구역 아이디에 대응되는 다이들에서 물리 블록 어드레스들(PBA#) 및 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)에 따라 프로그램 동작을 수행할 수 있다. Referring to FIG. 16B , the eighth, ninth, fifth, sixth and twelfth commands CMD08, CMD09, CMD05, CMD06, CMD12 for the first zone ID Zid1 output from the zone management unit 500 may be transmitted to the memory interface 540 . The memory interface 540 stores the eighth, ninth, fifth, sixth and twelfth commands CMD08, CMD09, CMD05, CMD06, CMD12 in the first output buffer B1 corresponding to the first zone ID Zid1. ) and store the sixth to tenth physical block addresses PBA06 to PBA10 mapped to the sixth to tenth write pointers WP06 to WP10 allocated to ), and the sixth to tenth physical block addresses PBA06 to PBA06 to According to PBA10), the eighth, ninth, fifth, sixth, and twelfth commands CMD08, CMD09, CMD05, CMD06, and CMD12 may be transmitted to the storage device 1100 . The storage device 1100 provides physical block addresses (PBA#) and eighth, ninth, fifth, sixth and twelfth commands (CMD08, CMD09, CMD05, CMD06, CMD12) in the dies corresponding to the zone ID. program operation can be performed according to the

도 16c를 참조하면, 제1_2 임시 버퍼(TB1_2)의 모든 서브 버퍼들에 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)이 채워졌으나 메모리 인터페이스(540)의 제1 출력 버퍼(B1)가 비워지지 않은 경우, 구역 관리부(500)는 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)의 출력을 지연시킬 수 있다. 예를 들면, 메모리 인터페이스(540)의 제1 출력 버퍼(B1)에 이전 커맨드들에 대응되는 제1 내지 제5 물리 블록 어드레스들(PBA01~PBA05)이 저장되어 있으면, 구역 관리부(500)는 제1 출력 버퍼(B1)가 리셋될 때까지 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)의 출력을 지연시킬 수 있다. 제1 출력 버퍼(B1)가 리셋되면, 도 16b를 참조한 설명과 같이 구역 관리부(500)는 제6 내지 제10 라이트 포인터들(WP06~WP10)이 할당된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)을 출력할 수 있다. Referring to FIG. 16C , the eighth, ninth, fifth, sixth and twelfth commands in which sixth to tenth write pointers WP06 to WP10 are allocated to all sub-buffers of the first_2 temporary buffer TB1_2. When the fields CMD08, CMD09, CMD05, CMD06, and CMD12 are filled but the first output buffer B1 of the memory interface 540 is not emptied, the area management unit 500 performs the eighth, ninth, fifth, and fourth Outputs of the sixth and twelfth commands CMD08, CMD09, CMD05, CMD06, and CMD12 may be delayed. For example, if the first to fifth physical block addresses PBA01 to PBA05 corresponding to previous commands are stored in the first output buffer B1 of the memory interface 540 , the area management unit 500 may The eighth, ninth, fifth, sixth and twelfth commands CMD08, CMD09, CMD05, to which the sixth to tenth write pointers WP06 to WP10 are allocated until the first output buffer B1 is reset. CMD06, CMD12) output can be delayed. When the first output buffer B1 is reset, as described with reference to FIG. 16B , the zone management unit 500 controls the eighth, ninth, fifth, and eighth write pointers WP06 to WP10 to which the sixth to tenth write pointers WP06 to WP10 are allocated. The sixth and twelfth commands CMD08, CMD09, CMD05, CMD06, and CMD12 may be output.

도 17a를 참조하면, 제1_2 임시 버퍼(TB1_2)에 저장된 제8, 제9, 제5, 제6 및 제12 커맨드들(CMD08, CMD09, CMD05, CMD06, CMD12)이 출력되었으므로(도 16a 참조) 제1_1 임시 버퍼(TB1_1)는 비워질 수 있다. 제12 커맨드(CMD12) 다음으로 입력된 제13 내지 제17 커맨드들(CMD13~CMD17)에는 제2 구역 아이디(Zid2) 및 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당되므로, 큐 컨트롤러(720)는 시작 포인터(SP)가 11인 제2 임시 버퍼(TB2)의 서브 버퍼들에 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당된 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)을 순차적으로 입력할 수 있다. 이에 따라, 제2 임시 버퍼(TB2)의 모든 서브 버퍼들에 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당된 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)이 채워질 수 있다. 연속적인 데이터를 프로그램할 수 있는 저장 사이즈인 다섯 개의 서브 버퍼들이 모두 채워졌으므로, 큐 컨트롤러(720)는 제2 구역 아이디(Zid2)에서 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당된 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)을 출력할 수 있다. Referring to FIG. 17A , since the eighth, ninth, fifth, sixth and twelfth commands CMD08, CMD09, CMD05, CMD06, and CMD12 stored in the first_2 temporary buffer TB1_2 are output (refer to FIG. 16A ) The first_1 temporary buffer TB1_1 may be emptied. Since the second zone ID Zid2 and the eleventh to fifteenth write pointers WP11 to WP15 are assigned to the thirteenth to seventeenth commands CMD13 to CMD17 input after the twelfth command CMD12, the queue controller In 720, the thirteenth, fourteenth, fifteenth, and thirteenth write pointers WP11 to WP15 are allocated to sub-buffers of the second temporary buffer TB2 whose start pointer SP is 11. The sixteenth and seventeenth commands CMD13, CMD14, CMD15, CMD16, and CMD17 may be sequentially input. Accordingly, the thirteenth, fourteenth, fifteenth, sixteenth and seventeenth commands CMD13 to which the eleventh to fifteenth write pointers WP11 to WP15 are allocated to all sub-buffers of the second temporary buffer TB2 . , CMD14, CMD15, CMD16, CMD17) can be filled. Since all of the five sub-buffers, which are the storage size for programming continuous data, are filled, the queue controller 720 determines where the eleventh to fifteenth write pointers WP11 to WP15 are allocated in the second zone ID Zid2. The thirteenth, fourteenth, fifteenth, sixteenth, and seventeenth commands CMD13, CMD14, CMD15, CMD16, and CMD17 may be output.

도 17b를 참조하면, 구역 관리부(500)에서 출력된 제2 구역 아이디(Zid2) 및 제11 내지 제15 라이트 포인터들(WP11~WP15)이 할당된 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)은 메모리 인터페이스(540)로 전송될 수 있다. 메모리 인터페이스(540)는 제2 구역 아이디(Zid2)에 대응되는 제2 출력 버퍼(B2)에 제11 내지 제15 라이트 포인터들(WP11~WP15)에 맵핑된 제11 내지 제15 물리 블록 어드레스들(PBA11~PBA15)을 저장하고, 제11 내지 제15 물리 블록 어드레스들(PBA11~PBA15)에 따라 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)을 저장 장치(1100)로 전송할 수 있다. 저장 장치(1100)는 구역 아이디에 대응되는 다이들에서 물리 블록 어드레스들(PBA#) 및 제13, 제14, 제15, 제16 및 제17 커맨드들(CMD13, CMD14, CMD15, CMD16, CMD17)에 따라 프로그램 동작을 수행할 수 있다.Referring to FIG. 17B , the thirteenth, fourteenth, fifteenth, sixteenth, and eleventh to fifteenth write pointers WP11 to WP15 and the second zone ID Zid2 output from the zone management unit 500 are allocated. The seventeenth commands CMD13 , CMD14 , CMD15 , CMD16 , and CMD17 may be transmitted to the memory interface 540 . The memory interface 540 provides eleventh to fifteenth physical block addresses mapped to the eleventh to fifteenth write pointers WP11 to WP15 in the second output buffer B2 corresponding to the second zone ID Zid2. PBA11 to PBA15), and the thirteenth, fourteenth, fifteenth, sixteenth and seventeenth commands CMD13, CMD14, CMD15, CMD16, CMD17 according to the eleventh to fifteenth physical block addresses PBA11 to PBA15. ) to the storage device 1100 . The storage device 1100 provides physical block addresses (PBA#) and thirteenth, fourteenth, fifteenth, sixteenth and seventeenth commands (CMD13, CMD14, CMD15, CMD16, CMD17) in the dies corresponding to the zone ID. program operation can be performed according to the

도 18a를 참조하면, 제17 커맨드(CMD17) 다음으로 입력된 제18 내지 제22 커맨드들(CMD18~CMD22)에는 제4 구역 아이디(Zid4) 및 제21 내지 제25 라이트 포인터들(WP21~WP25)이 할당되므로, 큐 컨트롤러(720)는 시작 포인터(SP)가 21인 제4 임시 버퍼(TB4)의 서브 버퍼들에 제21 내지 제25 라이트 포인터들(WP21~WP25)이 할당된 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)을 순차적으로 입력할 수 있다. 이에 따라, 제4 임시 버퍼(TB4)의 모든 서브 버퍼들에 제21 내지 제25 라이트 포인터들(WP21~WP25)이 할당된 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)이 채워질 수 있다. 연속적인 데이터를 프로그램할 수 있는 저장 사이즈인 다섯 개의 서브 버퍼들이 모두 채워졌으므로, 큐 컨트롤러(720)는 제3 구역 아이디(Zid3)보다 제4 구역 아이디(Zid4)에 우선권을 주고, 우선권을 가진 제4 구역 아이디(Zid4)가 할당된 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)을 출력할 수 있다. Referring to FIG. 18A , the eighteenth to twenty-second commands CMD18 to CMD22 input after the seventeenth command CMD17 include a fourth zone ID Zid4 and the twenty-first to twenty-fifth write pointers WP21 to WP25. is allocated, the queue controller 720 controls the 18th and 25th write pointers WP21 to WP25 in which the 21st to 25th write pointers WP21 to WP25 are allocated to the sub-buffers of the fourth temporary buffer TB4 having the start pointer SP of 21. The 19th, 20th, 21st, and 22nd commands CMD18, CMD19, CMD20, CMD21, and CMD22 may be sequentially input. Accordingly, the 18th, 19th, 20th, 21st and 22nd commands CMD18 to which the 21st to 25th write pointers WP21 to WP25 are allocated to all sub-buffers of the fourth temporary buffer TB4. , CMD19, CMD20, CMD21, CMD22) can be filled. Since all five sub-buffers, the storage size of which can be programmed with continuous data, are filled, the queue controller 720 gives priority to the fourth zone ID (Zid4) over the third zone ID (Zid3), The 18th, 19th, 20th, 21st, and 22nd commands CMD18, CMD19, CMD20, CMD21, CMD22 to which the 4 zone ID Zid4 is allocated may be output.

도 18b를 참조하면, 구역 관리부(500)에서 출력된 제4 구역 아이디(Zid4) 및 제21 내지 제25 라이트 포인터들(WP21~WP25)이 할당된 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)은 메모리 인터페이스(540)로 전송될 수 있다. 메모리 인터페이스(540)는 제4 구역 아이디(Zid4)에 대응되는 제4 출력 버퍼(B4)에 제21 내지 제25 라이트 포인터들(WP21~WP25)에 맵핑된 제21 내지 제25 물리 블록 어드레스들(PBA21~PBA25)을 저장하고, 제21 내지 제25 물리 블록 어드레스들(PBA21~PBA25)에 따라 제18, 제19, 제20, 제21 및 제22 커맨드들(CMD18, CMD19, CMD20, CMD21, CMD22)을 저장 장치(1100)로 전송할 수 있다. 저장 장치(1100)는 구역 아이디에 대응되는 다이들에서 물리 블록 어드레스들(PBA#) 및 커맨드(CMD)에 따라 프로그램 동작을 수행할 수 있다.Referring to FIG. 18B , 18th, 19th, 20th, 21st, and 18th to which the fourth zone ID Zid4 output from the zone management unit 500 and the 21st to 25th write pointers WP21 to WP25 are allocated. The twenty-second commands CMD18 , CMD19 , CMD20 , CMD21 , and CMD22 may be transmitted to the memory interface 540 . The memory interface 540 provides the twenty-first to twenty-fifth physical block addresses mapped to the twenty-first to twenty-fifth write pointers WP21 to WP25 in the fourth output buffer B4 corresponding to the fourth zone ID Zid4. PBA21 to PBA25 are stored, and the 18th, 19th, 20th, 21st and 22nd commands CMD18, CMD19, CMD20, CMD21, CMD22 according to the 21st to 25th physical block addresses PBA21 to PBA25. ) to the storage device 1100 . The storage device 1100 may perform a program operation on the dies corresponding to the zone ID according to the physical block addresses PBA# and the command CMD.

도 19a 및 도 19b는 본 발명의 제2 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다. 19A and 19B are diagrams for explaining an operation of a memory system according to a second embodiment of the present invention.

도 19a를 참조하면, 구역 관리부(500)는 커맨드들이 모두 채워진 임시 버퍼가 발생하더라도, 호스트(2000)로부터 출력 요청이 수신되기 이전에는 라이트 포인터들(WP#)을 출력하지 아니하고 대기시킬 수 있다. 예를 들면, 제1_1, 제1_2, 제2 및 제4 임시 버퍼들(TB1_1, TB1_2, TB2, TB4)에 커맨드들이 모두 채워지면, 구역 관리부(500)는 호스트(2000)로부터 출력 요청이 수신되었는지를 체크할 수 있다. 수신된 출력 요청이 없으면, 구역 관리부(500)는 커맨드들의 출력을 홀드시킬 수 있다. Referring to FIG. 19A , even when a temporary buffer in which all commands are filled occurs, the zone manager 500 may wait without outputting the write pointers WP# before an output request is received from the host 2000 . For example, when all commands are filled in the first, first, first, second, second, and fourth temporary buffers TB1_1 , TB1_2 , TB2 and TB4 , the zone manager 500 determines whether an output request is received from the host 2000 . can be checked. If there is no output request received, the area management unit 500 may hold the output of the commands.

도 19b를 참조하면, 호스트(2000)가 출력 요청(RQ_out)을 출력하면, 구역 관리부(500)는 출력 요청(RQ_out)에 응답하여 제1_1, 제1_2, 제2 및 제4 임시 버퍼들(TB1_1, TB1_2, TB2, TB4)에 저장된 커맨드들(CMD)을 출력할 수 있다. Referring to FIG. 19B , when the host 2000 outputs an output request RQ_out, the area management unit 500 responds to the output request RQ_out with first_1, first_2, second, and fourth temporary buffers TB1_1 , TB1_2, TB2, TB4 may output the commands CMD.

도 20a 및 도 20b는 본 발명의 제3 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다. 20A and 20B are diagrams for explaining an operation of a memory system according to a third embodiment of the present invention.

도 20a를 참조하면, 일부 라이트 포인터들에는 컨트롤 키(CON_KEY)가 포함될 수 있다. 컨트롤 키(CON_KEY)는 호스트(2000)의 출력 요청에 의해서만 출력될 수 있는 라이트 포인터를 지정하는 인덱스(index)일 수 있다. 컨트롤 키(CON_KEY)는 호스트(2000)가 지정하거나, 컨트롤러에 포함된 커맨드 관리부(도 5의 520)가 지정할 수도 있다. 따라서, 노말(normal) 라이트 포인터들은 논리 블록 어드레스(LBA)로만 구성될 수 있고, 호스트(2000) 또는 커맨드 관리부(520)에 의해 선택된 라이트 포인터들은 컨트롤 키(CON_KEY) 및 논리 블록 어드레스(LBA)로 구성될 수 있다. Referring to FIG. 20A , some light pointers may include a control key CON_KEY. The control key CON_KEY may be an index designating a write pointer that can be output only in response to an output request from the host 2000 . The control key CON_KEY may be designated by the host 2000 or by a command manager ( 520 of FIG. 5 ) included in the controller. Accordingly, the normal write pointers may be configured only with the logical block address LBA, and the write pointers selected by the host 2000 or the command manager 520 may be configured with the control key CON_KEY and the logical block address LBA. can be configured.

구역 관리부(500)는 커맨드들이 모두 채워진 임시 버퍼가 발생하면, 해당 임시 버퍼에 포함된 커맨드들을 즉시 출력할 수 있으나, 컨트롤 키(CON_KEY)가 설정된 라이트 포인터들이 포함된 임시 버퍼에서는 호스트(2000)로부터 출력 요청이 수신될 때까지 커맨드들의 출력을 홀드시킬 수 있다. 예를 들면, 제1_1, 제1_2, 제2 및 제4 임시 버퍼들(TB1_1, TB1_2, TB2, TB4)에 커맨드들이 모두 채워진 경우, 구역 관리부(500)는 제1_1, 제1_2, 제2 및 제4 임시 버퍼들(TB1_1, TB1_2, TB2, TB4)에 저장된 커맨드들 중에서 컨트롤 키(CON_KEY)가 설정된 라이트 포인터가 할당된 커맨드가 포함되어 있는지를 체크할 수 있다. 구역 관리부(500)는 제2 및 제4 임시 버퍼들(TB2, TB4)에는 노말 라이트 포인터들이 할당된 커맨드들만 저장된 것으로 판단되면, 제2 및 제4 임시 버퍼들(TB2, TB4)에 저장된 커맨드들(CMD)을 즉시 출력할 수 있다. 구역 관리부(500)는 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)에 저장된 라이트 포인터들(WP01~WP10)이 할당된 커맨드들 중에서 컨트롤 키(CON_KEY)가 설정된 라이트 포인터들(WP03~WP06)이 할당된 커맨드들이 저장된 것으로 판단되면, 호스트(2000)로부터 출력 요청이 수신되었는지를 체크할 수 있다. 수신된 출력 요청이 없으면, 구역 관리부(500)는 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)에 저장되고 라이트 포인터들(WP01~WP10)이 할당된 커맨드들(CMD)의 출력을 홀드시킬 수 있다. When a temporary buffer in which all commands are filled occurs, the zone management unit 500 may immediately output the commands included in the temporary buffer. It is possible to hold the output of commands until an output request is received. For example, when all commands are filled in the first_1, first_2, second, and fourth temporary buffers TB1_1, TB1_2, TB2, and TB4, the area manager 500 may It may be checked whether a command to which a write pointer to which the control key CON_KEY is set is assigned from among the commands stored in the 4 temporary buffers TB1_1, TB1_2, TB2, and TB4 is included. When it is determined that only commands to which normal write pointers are assigned are stored in the second and fourth temporary buffers TB2 and TB4, the zone manager 500 stores commands stored in the second and fourth temporary buffers TB2 and TB4. (CMD) can be printed immediately. The zone management unit 500 sets the control key CON_KEY among the commands to which the write pointers WP01 to WP10 stored in the first_1 and first_2 temporary buffers TB1_1 and TB1_2 are assigned, the write pointers WP03 to WP06. If it is determined that the assigned commands are stored, it may be checked whether an output request has been received from the host 2000 . If there is no output request received, the zone management unit 500 holds the output of the commands CMD stored in the first and second temporary buffers TB1_1 and TB1_2 and to which the write pointers WP01 to WP10 are assigned. can

도 20b를 참조하면, 호스트(2000)가 출력 요청(RQ_out)을 출력하면, 구역 관리부(500)는 출력 요청(RQ_out)에 응답하여 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)에 저장된 커맨드들(CMD)을 출력할 수 있다. Referring to FIG. 20B , when the host 2000 outputs an output request RQ_out, the area management unit 500 responds to the output request RQ_out and stores commands stored in the first and second temporary buffers TB1_1 and TB1_2. CMDs can be output.

도 21은 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.21 is a view showing a memory card system to which the controller of the present invention is applied.

도 21을 참조하면, 메모리 카드 시스템(3000)은 컨트롤러(3100), 메모리 장치(3200), 및 커넥터(3300)를 포함한다.Referring to FIG. 21 , the memory card system 3000 includes a controller 3100 , a memory device 3200 , and a connector 3300 .

컨트롤러(3100)는 메모리 장치(3200)와 연결된다. 컨트롤러(3100)는 메모리 장치(3200)를 접속(access)하도록 구성된다. 예를 들어, 컨트롤러(3100)는 메모리 장치(3200)의 프로그램, 리드 또는 소거 동작을 제어하거나, 배경(background) 동작을 제어하도록 구성될 수 있다. 컨트롤러(3100)는 도 5에 도시된 컨트롤러(1200)와 동일하게 구성될 수 있다. 컨트롤러(3100)는 메모리 장치(3200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(3100)는 메모리 장치(3200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. The controller 3100 is connected to the memory device 3200 . The controller 3100 is configured to access the memory device 3200 . For example, the controller 3100 may be configured to control a program, read, or erase operation of the memory device 3200 or to control a background operation. The controller 3100 may have the same configuration as the controller 1200 illustrated in FIG. 5 . The controller 3100 is configured to provide an interface between the memory device 3200 and a host. The controller 3100 is configured to drive firmware for controlling the memory device 3200 .

예시적으로, 컨트롤러(3100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.For example, the controller 3100 may include components such as a random access memory (RAM), a processing unit, a host interface, a memory interface, and an error correction unit. have.

컨트롤러(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)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.The controller 3100 may communicate with an external device through the connector 3300 . The controller 3100 may communicate with an external device (eg, a host) according to a specific communication standard. Illustratively, the controller 3100 is a 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 It is configured to communicate with an external device through at least one of various communication standards, such as. For example, the connector 3300 may be defined by at least one of the various communication standards described above.

예시적으로, 메모리 장치(3200)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등과 같은 다양한 비휘발성 메모리 소자들로 구성될 수 있다.Exemplarily, the memory device 3200 may include electrically erasable and programmable ROM (EEPROM), NAND flash memory, NOR flash memory, phase-change RAM (PRAM), resistive RAM (ReRAM), ferroelectric RAM (FRAM), and STT-MRAM. It may be composed of various non-volatile memory devices such as (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) 등과 같은 메모리 카드를 구성할 수 있다.The controller 3100 and the memory device 3200 may be integrated into one semiconductor device to constitute a memory card. For example, the controller 3100 and the memory device 3200 are integrated into one semiconductor device, such as a personal computer memory card international association (PCMCIA), a compact flash card (CF), and a smart media card (SM, SMC). , memory sticks, multimedia cards (MMC, RS-MMC, MMCmicro, eMMC), SD cards (SD, miniSD, microSD, SDHC), universal flash storage (UFS), etc.

도 22는 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.22 is a view showing a solid state drive (SSD) system to which the controller of the present invention is applied.

도 22를 참조하면, SSD 시스템(4000)은 호스트(4100) 및 SSD(4200)를 포함한다. SSD(4200)는 신호 커넥터(4001)를 통해 호스트(4100)와 신호(SIG)를 주고 받고, 전원 커넥터(4002)를 통해 전원(PWR)을 입력 받는다. SSD(4200)는 컨트롤러(4210), 복수의 플래시 메모리들(4221~422n), 보조 전원 장치(4230), 및 버퍼 메모리(4240)를 포함한다.Referring to FIG. 22 , the SSD system 4000 includes a host 4100 and an SSD 4200 . The SSD 4200 transmits and receives a signal SIG to and from the host 4100 through the signal connector 4001 , and receives power PWR through the power connector 4002 . The SSD 4200 includes a controller 4210 , a plurality of flash memories 4221 to 422n , an auxiliary power supply 4230 , and a buffer memory 4240 .

본 발명의 실시 예에 따르면, 컨트롤러(4210)는 도 5를 참조하여 설명된 컨트롤러(1200)의 기능을 수행할 수 있다.According to an embodiment of the present invention, the controller 4210 may perform the function of the controller 1200 described with reference to FIG. 5 .

컨트롤러(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 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.The controller 4210 may control the plurality of flash memories 4221 to 422n in response to a signal received from the host 4100 . For example, the signals may be signals based on an interface between the host 4100 and the SSD 4200 . For example, signals can be USB (Universal Serial Bus), MMC (multimedia card), eMMC (embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial- Interfaces such as 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, etc. It may be a signal defined by at least one of them.

보조 전원 장치(4230)는 전원 커넥터(4002)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4230)는 호스트(4100)로부터 전원 전압을 입력 받고, 충전할 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터의 전원 공급이 원활하지 않을 경우, SSD(4200)의 전원 전압을 제공할 수 있다. 예시적으로, 보조 전원 장치(4230)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4230)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.The auxiliary power supply 4230 is connected to the host 4100 through the power connector 4002 . The auxiliary power supply 4230 may receive a power voltage input from the host 4100 and may be charged. The auxiliary power supply 4230 may provide a power voltage of the SSD 4200 when the power supply from the host 4100 is not smooth. For example, the auxiliary power supply 4230 may be located within the SSD 4200 or may be located outside the SSD 4200 . For example, the auxiliary power supply 4230 is located on the main board and may provide auxiliary power to the SSD 4200 .

버퍼 메모리(4240)는 SSD(4200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(4240)는 호스트(4100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(4221~422n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(4221~422n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(4240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.The buffer memory 4240 operates as a buffer memory of the SSD 4200 . For example, the buffer memory 4240 may temporarily store data received from the host 4100 or data received from the plurality of flash memories 4221 to 422n, or metadata of the flash memories 4221 to 422n. For example, a mapping table) may be temporarily stored. The buffer memory 4240 may include a volatile memory such as DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, or non-volatile memories such as FRAM, ReRAM, STT-MRAM, and PRAM.

1000: 메모리 시스템 1100: 저장 장치
1200: 컨트롤러 2000: 호스트
500: 구역 관리부 510: 시스템 버퍼
520: 커맨드 관리부 530: 호스트 인터페이스
540: 메모리 인터페이스 710: 라이트 큐
711: 큐 버퍼 720: 큐 컨트롤러
721: 임시 버퍼들
1000: memory system 1100: storage device
1200: controller 2000: host
500: zone management unit 510: system buffer
520: command management unit 530: host interface
540: memory interface 710: light cue
711: queue buffer 720: queue controller
721: temporary buffers

Claims (20)

구역 아이디 및 라이트 포인터를 포함하는 커맨드들을 입력되는 순서대로 큐잉하도록 구성된 라이트 큐; 및
상기 커맨드들의 구역 아이디들에 임시 버퍼들을 할당하고, 상기 라이트 큐에서 출력된 상기 커맨드들을 상기 구역 아이디에 따라 구분된 상기 임시 버퍼들에 저장하도록 구성된 큐 컨트롤러를 포함하고,
상기 큐 컨트롤러는,
상기 임시 버퍼들 중에서 설정된 저장 사이즈가 채워진 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성되는 컨트롤러.
a light queue configured to queue commands including a zone ID and a light pointer in the order in which they are entered; and
a queue controller configured to allocate temporary buffers to zone IDs of the commands, and to store the commands output from the write queue in the temporary buffers divided according to zone IDs,
The queue controller is
a controller configured to output the commands stored in a temporary buffer filled with a set storage size among the temporary buffers.
제1항에 있어서,
상기 구역 아이디들은 연속적인 논리 블록 어드레스들로 구분되는 메모리 영역들에 할당된 인덱스들이고,
상기 라이트 포인터들은 선택된 구역 아이디 내에서 선택된 논리 블록 어드레스 다음으로 선택되는 논리 블록 어드레스들인 컨트롤러.
According to claim 1,
The zone IDs are indices allocated to memory areas separated by consecutive logical block addresses,
wherein the write pointers are logical block addresses selected after the selected logical block address within the selected zone ID.
제1항에 있어서, 상기 라이트 큐는,
상기 커맨드들을 임시로 저장하도록 구성된 큐 버퍼를 포함하는 컨트롤러.
The method of claim 1, wherein the light queue comprises:
and a queue buffer configured to temporarily store the commands.
제1항에 있어서, 상기 큐 컨트롤러는,
상기 라이트 큐에서 출력된 상기 커맨드들의 상기 구역 아이디에 따라 상기 임시 버퍼를 선택하고, 선택된 상기 임시 버퍼에 상기 라이트 포인터의 순서에 따라 상기 커맨드들을 저장하도록 구성되는 컨트롤러.
According to claim 1, wherein the queue controller,
and select the temporary buffer according to the zone ID of the commands output from the write queue, and store the commands in the selected temporary buffer according to the order of the write pointers.
제4항에 있어서,
상기 임시 버퍼들 각각은 상기 라이트 포인터에 따라 상기 커맨드들을 저장하기 위한 서브 버퍼들을 포함하는 컨트롤러.
5. The method of claim 4,
and each of the temporary buffers includes sub-buffers for storing the commands according to the write pointer.
제5항에 있어서,
상기 임시 버퍼들 각각에 포함된 상기 서브 버퍼들 중에서 첫 번째 서브 버퍼에는 시작 포인터로 지정된 라이트 포인터가 할당된 커맨드가 저장되는 컨트롤러.
6. The method of claim 5,
and a command to which a write pointer designated as a start pointer is assigned is stored in a first sub-buffer among the sub-buffers included in each of the temporary buffers.
제6항에 있어서, 상기 큐 컨트롤러는,
상기 라이트 포인터들에 따라 상기 커맨드들을 상기 서브 버퍼들에 저장하도록 구성되는 컨트롤러.
The method of claim 6, wherein the queue controller comprises:
a controller configured to store the commands in the sub-buffers according to the write pointers.
제5항에 있어서, 상기 큐 컨트롤러는,
상기 임시 버퍼들 중에서 빈(empty) 서브 버퍼가 적어도 하나 이상 포함된 임시 버퍼에 저장된 상기 커맨드들의 출력을 홀드(hold)하고,
상기 임시 버퍼들 중에서 선택된 임시 버퍼에 포함된 모든 상기 서브 버퍼들에 상기 커맨드들이 저장되면, 상기 선택된 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성되는 컨트롤러.
The method of claim 5, wherein the queue controller comprises:
hold the output of the commands stored in a temporary buffer including at least one empty sub-buffer among the temporary buffers;
and output the commands stored in the selected temporary buffer when the commands are stored in all the sub-buffers included in the temporary buffer selected from among the temporary buffers.
제1항에 있어서,
호스트로부터 출력된 요청들을 상기 커맨드들로 변환하고, 상기 커맨드들의 실행 순서를 저장 장치의 상태에 따라 변경하고, 변경된 상기 커맨드들을 상기 라이트 큐에 전송하도록 구성된 커맨드 관리부;
상기 저장 장치에 포함된 다이들(dies)의 물리 블록 어드레스들과 논리 블록 어드레스들, 상기 논리 블록 어드레스들과 상기 구역 아이디의 맵핑 정보를 저장하도록 구성된 시스템 버퍼; 및
상기 큐 컨트롤러에서 출력된 상기 라이트 포인터들에 맵핑된 상기 물리 블록 어드레스들을 저장하고, 상기 구역 아이디에 대응되는 상기 다이들에게 상기 맵핑된 물리 블록 어드레스들 및 상기 커맨드를 전송하도록 구성된 메모리 인터페이스를 더 포함하는 컨트롤러.
According to claim 1,
a command management unit configured to convert requests output from a host into the commands, change an execution order of the commands according to a state of a storage device, and transmit the changed commands to the write queue;
a system buffer configured to store mapping information of physical block addresses and logical block addresses of dies included in the storage device, and mapping information between the logical block addresses and the zone ID; and
and a memory interface configured to store the physical block addresses mapped to the write pointers output from the queue controller, and to transmit the mapped physical block addresses and the command to the dies corresponding to the zone ID controller that does.
제9항에 있어서, 상기 메모리 인터페이스는,
상기 구역 아이디들에 1:1로 각각 대응되는 출력 버퍼들을 포함하는 컨트롤러.
10. The method of claim 9, wherein the memory interface,
A controller including output buffers corresponding to each of the zone IDs on a one-to-one basis.
제9항에 있어서, 상기 커맨드 관리부는,
상기 큐 컨트롤러에서 상기 라이트 포인터들이 출력되면, 상기 시스템 버퍼에 저장된 상기 맵 정보를 사용하여 상기 라이트 포인터들에 각각 맵핑된 상기 물리 블록 어드레스들을 써치(search)하고, 써치된 상기 물리 블록 어드레스들을 상기 메모리 인터페이스의 상기 출력 버퍼들에 저장하도록 구성되는 컨트롤러.
The method of claim 9, wherein the command management unit,
When the write pointers are output from the queue controller, the physical block addresses mapped to the write pointers are searched using the map information stored in the system buffer, and the searched physical block addresses are stored in the memory A controller configured to store to the output buffers of an interface.
제11항에 있어서, 상기 큐 컨트롤러는,
상기 출력 버퍼 중에서 선택된 구역 아이디에 대응되는 출력 버퍼에 상기 물리 블록 어드레스들이 저장되고, 상기 선택된 구역 아이디에 대응되는 임시 버퍼에 포함된 서브 버퍼들에 상기 라이트 포인터들이 모두 저장된 경우,
상기 출력 버퍼가 비워질 때까지 상기 서브 버퍼들에 저장된 상기 라이트 포인터들의 출력을 지연시키도록 구성되는 컨트롤러.
The method of claim 11 , wherein the queue controller comprises:
When the physical block addresses are stored in an output buffer corresponding to a selected zone ID from among the output buffers, and all of the write pointers are stored in sub-buffers included in a temporary buffer corresponding to the selected zone ID,
a controller configured to delay output of the write pointers stored in the sub-buffers until the output buffer is emptied.
데이터를 저장하는 다이들을 포함하는 저장 장치; 및
호스트에서 출력된 요청들에 응답하여 커맨드들을 생성하고 상기 다이들의 상태에 따라 상기 커맨드들을 큐잉하도록 구성된 컨트롤러를 포함하고,
상기 컨트롤러는,
상기 다이들을 구역 아이디들로 구분하여 상기 저장 장치를 관리하고, 프로그램 동작 시 큐잉된 상기 커맨드들의 순서에 관계없이 상기 구역 아이디들 중 라이트 포인터들이 모두 채워진 구역 아이디에 우선권을 주고, 상기 우선권을 가진 상기 구역 아이디에 할당된 상기 커맨드들을 출력하도록 구성되는 메모리 시스템.
a storage device comprising dies for storing data; and
a controller configured to generate commands in response to requests output from a host and to queue the commands according to states of the dies;
The controller is
The dies are divided into zone IDs to manage the storage device, and, regardless of the order of the commands queued during program operation, priority is given to a zone ID in which all write pointers are filled among the zone IDs, and the priority is given to the zone ID having the priority. A memory system configured to output the commands assigned to a zone ID.
제13항에 있어서,
상기 다이들 각각은 상기 데이터를 저장하는 복수의 메모리 블록들을 포함하는 메모리 시스템.
14. The method of claim 13,
and each of the dies includes a plurality of memory blocks for storing the data.
제13항에 있어서, 상기 컨트롤러는,
상기 호스트로부터 출력된 상기 요청들을 상기 커맨드들로 변환하고, 상기 커맨드들의 실행 순서를 상기 저장 장치의 상태에 따라 변경하도록 구성되는 커맨드 관리부;
상기 다이들의 물리 블록 어드레스들, 논리 블록 어드레스들 및 상기 구역 아이디들의 맵핑 테이블을 저장하도록 구성된 시스템 버퍼;
상기 프로그램 동작 시 상기 커맨드에 대응되는 라이트 포인터들의 순서가 불연속적인 경우, 동일한 구역 아이디에 할당되는 상기 라이트 포인터들의 순서가 연속되도록 상기 커맨드들의 큐잉을 조절하고, 임시 버퍼에 상기 커맨드들이 모두 채워진 구역 아이디가 발생하면, 상기 구역 아이디에게 우선권을 주도록 구성된 구역 관리부; 및
상기 구역 관리부에서 출력된 상기 커맨드들과, 상기 커맨드들에 대응되는 상기 물리 블록 어드레스들을 저장하고, 상기 다이들에게 상기 맵핑된 물리 블록 어드레스들 및 상기 커맨드들을 전송하도록 구성된 메모리 인터페이스를 포함하는 메모리 시스템.
The method of claim 13, wherein the controller,
a command manager configured to convert the requests output from the host into the commands and change an execution order of the commands according to a state of the storage device;
a system buffer configured to store a mapping table of physical block addresses, logical block addresses, and zone IDs of the dies;
When the order of the write pointers corresponding to the command is discontinuous during the program operation, the queuing of the commands is adjusted so that the order of the write pointers assigned to the same zone ID is continuous, and the temporary buffer is filled with all the commands. a zone management unit configured to give priority to the zone ID when . and
and a memory interface configured to store the commands output from the area manager and the physical block addresses corresponding to the commands, and transmit the mapped physical block addresses and the commands to the dies; .
제15항에 있어서, 상기 구역 관리부는,
상기 구역 아이디들 및 상기 라이트 포인터들이 할당되며 상기 커맨드 관리부로부터 출력되는 상기 커맨드들을 입력되는 순서대로 큐잉하도록 구성된 라이트 큐; 및
상기 라이트 큐에 저장된 순서대로 상기 커맨드들을 상기 구역 아이디들에 대응되는 임시 버퍼들에 저장하고, 상기 임시 버퍼들 중에서 설정된 저장 사이즈가 채워진 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성된 큐 컨트롤러를 포함하는 메모리 시스템.
The method of claim 15, wherein the area management unit,
a write queue to which the zone IDs and the write pointers are allocated and configured to queue the commands output from the command management unit in the order in which they are input; and
a memory including a queue controller configured to store the commands in temporary buffers corresponding to the zone IDs in the order stored in the write queue, and output the commands stored in a temporary buffer filled with a set storage size among the temporary buffers; system.
제16항에 있어서,
상기 임시 버퍼들은 라이트 포인터들이 할당된 서브 버퍼들을 포함하고,
상기 커맨드들은 상기 라이트 포인터들에 대응되는 상기 서브 버퍼들에 저장되는 메모리 시스템.
17. The method of claim 16,
The temporary buffers include sub-buffers to which write pointers are allocated,
The commands are stored in the sub-buffers corresponding to the write pointers.
제17항에 있어서,
상기 커맨드들이 모두 채워진 임시 버퍼들과 상기 라이트 포인터들이 채워지지 아니한 임시 버퍼들이 상기 큐 컨트롤러에 포함되는 경우,
상기 큐 컨트롤러는 상기 커맨드들이 모두 채워진 임시 버퍼들에 우선권을 주고, 상기 우선권을 가진 상기 임시 버퍼들에 저장된 상기 커맨드들을 상기 메모리 인터페이스로 출력시키는 메모리 시스템.
18. The method of claim 17,
When the queue controller includes temporary buffers in which all the commands are filled and temporary buffers in which the write pointers are not filled,
and the queue controller gives priority to temporary buffers filled with the commands, and outputs the commands stored in the temporary buffers having the priority to the memory interface.
제13항에 있어서, 상기 컨트롤러는,
상기 라이트 포인터들 중에서 컨트롤 키가 포함된 라이트 포인터들이 포함된 경우, 상기 컨트롤 키가 포함된 상기 라이트 포인터들에 할당된 커맨드들은 상기 호스트로부터 출력 요청에 응답하여 메모리 인터페이스로 출력되고,
상기 컨트롤 키가 포함되지 아니한 라이트 포인터들에 할당된 커맨드들은 상기 출력 요청에 관계없이 상기 메모리 인터페이스에 출력되는 메모리 시스템.
The method of claim 13, wherein the controller,
When write pointers including a control key are included among the write pointers, commands assigned to the write pointers including the control key are output to a memory interface in response to an output request from the host;
Commands assigned to write pointers that do not include the control key are output to the memory interface regardless of the output request.
호스트로부터 수신된 요청들에 대응되는 커맨드들을 생성하고, 상기 커맨드들이 생성된 순서에 따라 상기 커맨드들에 라이트 포인터들을 할당하고, 데이터가 저장되는 저장 장치의 상태에 따라 상기 커맨드들을 큐잉하도록 구성된 커맨드 관리부;
큐잉된 상기 커맨드들을 임시로 저장하도록 구성된 라이트 큐;
구역 아이디 별로 구분되는 임시 버퍼들; 및
상기 라이트 큐로부터 출력된 상기 커맨드들을 상기 구역 아이디 및 상기 라이트 포인터들의 순서에 따라 상기 임시 버퍼들에 저장하고, 설정된 사이즈가 채워진 임시 버퍼의 상기 커맨드들을 출력하도록 구성된 구역 관리부를 포함하는 컨트롤러.
A command management unit configured to generate commands corresponding to requests received from the host, allocate write pointers to the commands according to the order in which the commands are generated, and queue the commands according to a state of a storage device in which data is stored ;
a write queue configured to temporarily store the queued commands;
Temporary buffers separated by zone ID; and
and a zone manager configured to store the commands output from the write queue in the temporary buffers according to the zone ID and the order of the write pointers, and output the commands in the temporary buffer filled with a set size.
KR1020210006922A 2021-01-18 2021-01-18 Controller and memory system having the controller KR20220104511A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210006922A KR20220104511A (en) 2021-01-18 2021-01-18 Controller and memory system having the controller
US17/364,401 US11875056B2 (en) 2021-01-18 2021-06-30 Controller for managing commands with zone identifications and memory system having the same
CN202111282332.XA CN114817094B (en) 2021-01-18 2021-11-01 Controller and memory system having the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210006922A KR20220104511A (en) 2021-01-18 2021-01-18 Controller and memory system having the controller

Publications (1)

Publication Number Publication Date
KR20220104511A true KR20220104511A (en) 2022-07-26

Family

ID=82406388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210006922A KR20220104511A (en) 2021-01-18 2021-01-18 Controller and memory system having the controller

Country Status (3)

Country Link
US (1) US11875056B2 (en)
KR (1) KR20220104511A (en)
CN (1) CN114817094B (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
US11340987B1 (en) 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
US11797377B2 (en) 2021-10-05 2023-10-24 Netapp, Inc. Efficient parity determination in zoned solid-state drives of a storage system
US11803329B2 (en) * 2021-11-22 2023-10-31 Netapp, Inc. Methods and systems for processing write requests in a storage system
US11816359B2 (en) 2021-12-16 2023-11-14 Netapp, Inc. Scalable solid-state storage system and methods thereof
US20230266897A1 (en) * 2022-02-24 2023-08-24 Micron Technology, Inc. Dynamic zone group configuration at a memory sub-system

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3745552B2 (en) * 1999-02-26 2006-02-15 富士通株式会社 Information storage device
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
KR102074329B1 (en) 2013-09-06 2020-02-06 삼성전자주식회사 Storage device and data porcessing method thereof
US9626309B1 (en) * 2014-07-02 2017-04-18 Microsemi Storage Solutions (U.S.), Inc. Method and controller for requesting queue arbitration and coalescing memory access commands
US10417190B1 (en) 2014-09-25 2019-09-17 Amazon Technologies, Inc. Log-structured file system for zone block devices with small zones
US9760281B2 (en) * 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
KR20180069960A (en) * 2016-12-15 2018-06-26 에스케이하이닉스 주식회사 Memory system and method thereof
US10289552B2 (en) * 2017-05-03 2019-05-14 Western Digital Technologies, Inc. Storage system and method for flush optimization
US11734175B2 (en) * 2019-08-22 2023-08-22 SK Hynix Inc. Storage device and method of operating the same
US11294827B2 (en) * 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
JP7366795B2 (en) * 2020-02-14 2023-10-23 キオクシア株式会社 Memory system and control method
KR20210108107A (en) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 Memory system and operating method thereof
US11372543B2 (en) * 2020-04-10 2022-06-28 Western Digital Technologies, Inc. Zone-append command scheduling based on zone state
US11789611B2 (en) * 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
KR20220014212A (en) * 2020-07-28 2022-02-04 에스케이하이닉스 주식회사 Storage device and operating method thereof
KR20220028332A (en) * 2020-08-28 2022-03-08 에스케이하이닉스 주식회사 Storage device and operating method thereof
KR20220060372A (en) * 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 Memory system and operating method thereof
US11599304B2 (en) * 2020-11-16 2023-03-07 Western Digital Technologies, Inc. Data aggregation in ZNS drive
JP2022094705A (en) * 2020-12-15 2022-06-27 キオクシア株式会社 Memory system and control method
US11868652B2 (en) * 2021-02-25 2024-01-09 SK Hynix Inc. Utilization based dynamic shared buffer in data storage system
US11816345B2 (en) * 2021-03-29 2023-11-14 Micron Technology, Inc. Zone block staging component for a memory subsystem with zoned namespace

Also Published As

Publication number Publication date
US20220229596A1 (en) 2022-07-21
US11875056B2 (en) 2024-01-16
CN114817094B (en) 2024-04-09
CN114817094A (en) 2022-07-29

Similar Documents

Publication Publication Date Title
KR20220104511A (en) Controller and memory system having the controller
US10430083B2 (en) Memory scheduling method for changing command order and method of operating memory system
US11188259B2 (en) Storage device and method of operating the storage device
US20170228191A1 (en) Systems and methods for suppressing latency in non-volatile solid state devices
EP3511814A1 (en) Storage device storing data in order based on barrier command
CN113906383A (en) Timed data transfer between host system and memory subsystem
US11307803B2 (en) Storage device for suspending program operation and performing read operation and operating method thereof
US11842073B2 (en) Memory controller and operating method thereof
US20230139864A1 (en) Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
US10162568B2 (en) Method for searching matching key of storage device and server system including the same
KR20210014412A (en) Memory controller and operating method thereof
CN111722792B (en) memory system
KR102596964B1 (en) Data storage device capable of changing map cache buffer size
US11675537B2 (en) Controller for performing data input/output operation and memory management operation at the same time and operation method thereof
US20160132251A1 (en) Operating method of storage device and data writing method for writing data into storage device
KR20220028332A (en) Storage device and operating method thereof
US10282328B2 (en) Apparatus having direct memory access controller and method for accessing data in memory
US20220229595A1 (en) Controller and operation method thereof
CN110908596A (en) Data storage device, method of operating the same, and storage system including the same
CN114201108B (en) Controller including a map cache and memory system including a controller
KR20200014175A (en) Apparatus and method for performing garbage collection to predicting required time
US11625178B2 (en) Storage device and method of operating the same
KR20220138760A (en) Controller and memory system having the controller
KR20210085499A (en) Storage device and operating method thereof
KR102653373B1 (en) Controller and operation method thereof