KR20220104511A - Controller and memory system having the controller - Google Patents
Controller and memory system having the controller Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims description 106
- 239000000872 buffer Substances 0.000 claims abstract description 220
- 238000000034 method Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 22
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Abstract
Description
본 발명은 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 메모리 시스템에 포함된 저장 장치를 구역(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
저장 장치(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
컨트롤러(1200)는 호스트(host; 2000)와 저장 장치(1100) 사이에서 통신할 수 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)로부터 출력된 요청(request)에 따라 프로그램, 리드 또는 소거 커맨드를 생성하고, 생성된 커맨드를 저장 장치(1100)에게 전송할 수 있다. The
호스트(2000)는 프로그램 동작 시 컨트롤러(1200)에게 프로그램 요청(program request), 라이트 포인터(write pointer) 및 데이터를 출력할 수 있다. 라이트 포인터는 프로그램 요청이 출력되는 순서를 나타낼 수 있다. 예를 들면, 프로그램 요청이 출력될 때마다 라이트 포인터는 단계적으로 증가하는 값을 가질 수 있다. The
본 실시 예에 따른 컨트롤러(1200)는 저장 장치(1100)에 포함된 다이들(D01~Dnm)을 구역(zone) 단위로 관리할 수 있다. 예를 들면, 컨트롤러(1200)는 다이들(D01~Dnm) 각각에 포함된 메모리 블록들을 일정한 저장 용량에 따라 논리 블록 어드레스(logical block address) 단위로 구분하고, 복수의 논리 블록 어드레스들을 구역(zone) 단위의 그룹으로 구분할 수 있다. 즉, 하나의 구역에 복수의 논리 블록 어드레스들이 맵핑될 수 있다. 본 실시 예에 따른 컨트롤러(1200)는 구역 단위로 커맨드들을 출력하도록 구성될 수 있다. 따라서, 컨트롤러(1200)는 라이트 포인터를 사용하여 구역 별로 커맨드들을 큐잉하고 출력하도록 구성될 수 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)로부터 수신한 요청들의 순서에 관계 없이 저장 장치(1100)의 상태에 따라 커맨드들을 큐잉할 수 있고, 라이트 포인터를 사용하여 구역 별로 커맨드들을 다시 큐잉하여 커맨드들이 적체되는 현상을 방지할 수 있다. The
도 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
도 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
구역 관리부(500)는 프로그램 동작 시 커맨드들에 대응되는 라이트 포인터가 불연속적인 경우, 동일한 구역 아이디에서 라이트 포인터가 연속되도록 커맨드들의 큐잉 순서를 조절할 수 있다. 또한, 구역 관리부(500)는 라이트 포인터들이 모두 채워진 구역 아이디가 발생하면, 해당 구역 아이디에 대응되는 커맨드의 출력 우선 순위를 높일 수 있다. 예를 들면, 구역 관리부(500)는 라이트 포인터들이 모두 채워진 구역 아이디에 대응되는 커맨드를 라이트 포인터들이 채워지지 아니한 구역 아이디에 대응되는 커맨드보다 우선적으로 출력할 수 있다. When the write pointers corresponding to the commands are discontinuous during the program operation, the
시스템 버퍼(510)는 컨트롤러(1200)의 동작에 필요한 다양한 정보들을 저장하도록 구성될 수 있다. 예를 들면, 시스템 버퍼(510)는 논리 블록 어드레스 및 물리 블록 어드레스의 맵핑 정보 등을 저장할 수 있다. 예를 들면, 시스템 버퍼(510)는 라이트 포인터들에 대응되는 논리 블록 어드레스와, 논리 블록 어드레스들에 맵핑된 물리 블록 어드레스들을 포함하는 맵 테이블을 저장할 수 있다. 물리 블록 어드레스는 저장 장치에서 관리될 수 있는 다이 및 메모리 블록 각각에 할당된 어드레스이고, 논리 블록 어드레스는 호스트에서 관리될 수 있는 어드레스일 수 있다. 따라서, 순차적인 논리 블록 어드레스들에 비순차적인 물리 블록 어드레스들이 맵핑될 수 있다. The
커맨드 관리부(520)는 호스트(2000)로부터 출력된 요청(request)이 입력되면, 요청에 대응되는 커맨드를 생성하고, 저장 장치(1100)의 상태에 따라 커맨드들의 순서를 변경할 수 있다. 이때, 커맨드들은 라이트 포인터의 순서에 관계 없이 큐잉될 수 있다. 큐잉된 커맨드들은 구역 관리부(500)에게 전송될 수 있다. When a request output from the
호스트 인터페이스(530)는 호스트(2000)와 컨트롤러(1200) 사이에서 요청, 어드레스 또는 데이터를 주고받도록 구성될 수 있다. The
메모리 인터페이스(540)는 컨트롤러(1200)와 저장 장치(1100) 사이에서 커맨드, 어드레스 또는 데이터를 주고받도록 구성될 수 있다. 메모리 인터페이스(540)는 구역 관리부(500)에서 출력된 커맨드들을 저장 장치(1100)로 출력하기 이전에 임시로 커맨드들을 저장할 수 있는 버퍼들을 포함할 수 있다. 메모리 인터페이스(540)는 구역 관리부(500)에서 출력된 라이트 포인터들에 각각 대응되는 물리 블록 어드레스들을 시스템 버퍼(510)로부터 수신받고, 커맨드 및 물리 블록 어드레스들을 저장 장치(1100)에게 출력할 수 있다. The
도 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
구역 관리부(500)는 커맨드 관리부(520)에서 출력된 커맨드들(CMD#)을 임시로 저장하고, 구역 아이디(Zid) 및 라이트 포인터들(WP#)에 따라 커맨드들(CMD#)의 순서를 다시 조절할 수 있다. 구역 관리부(500)는 설정된 라이트 사이즈(write size)에 대응되는 커맨드들(CMD#)이 모두 채워진 구역 아이디(Zid)가 발생하면, 해당 구역 아이디(Zid)의 커맨드들(CMD#)을 메모리 인터페이스(540)로 전송할 수 있다. 여기서, 커맨드들(CMD#)은 프로그램 커맨드일 수 있다. The
메모리 인터페이스(540)는 구역 관리부(500)에서 출력되는 커맨드들(CMD)을 구역 아이디(Zid#) 별로 저장하기 위한 복수의 출력 버퍼들(B1~Bp)을 포함할 수 있다. 예를 들면, 출력 버퍼들(B1~Bp)은 구역 아이디들(Zid#)에 1:1로 대응될 수 있다. 메모리 인터페이스(540)는 라이트 포인터들(WP#)에 대응되는 물리 블록 어드레스들(PBA#) 및 커맨드들(CMD#)을 구역 아이디(Zid#)에 대응되는 다이에게 출력할 수 있다. The
도 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
라이트 큐(710)는 커맨드 관리부(도 6의 520)로부터 출력된 커맨드들(CMD#)과, 커맨드들(CMD#)에 각각 대응되는 구역 아이디 및 라이트 포인터를 임시로 저장하기 위한 큐 버퍼(queue buffer; 711)를 포함할 수 있다. 큐 버퍼(711)에 입력되는 커맨드들(CMD#)의 구역 아이디 및 라이트 포인터들의 순서는 불연속적일 수 있다. The
큐 컨트롤러(720)는 라이트 큐(710)로부터 출력된 커맨드들(CMD#)을 구역 아이디 및 라이트 포인터 별로 저장하기 위한 임시 버퍼들(temporary buffers; 721)을 포함할 수 있다. 큐 컨트롤러(720)는 구역 아이디 및 라이트 포인터에 따라 커맨드들(CMD#)을 임시 버퍼들(721)에 순차적으로 저장할 수 있다. 큐 컨트롤러(720)는 설정된 사이즈가 모두 채워진 임시 버퍼가 발생하면, 해당 임시 버퍼에 저장된 커맨드들(CMD#)을 출력할 수 있다. The
도 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
도 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
큐 컨트롤러(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
예를 들면, 제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
예를 들면, 큐 버퍼(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
상술한 방식으로 큐 버퍼(711)에 임시로 저장된 제1 내지 제23 커맨드들(CMD01~CMD23)은 구역 아이디 및 라이트 포인터에 따라 임시 버퍼들(721)에 저장될 수 있다. The first to twenty-third commands CMD01 to CMD23 temporarily stored in the
큐 컨트롤러(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
제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
큐 컨트롤러(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
도 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
메모리 인터페이스(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
제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
상술한 설명을 토대로, 구역 관리부가 커맨드들의 출력 순서를 재배치하는 방법을 구체적으로 설명하면 다음과 같다. 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
제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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
도 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
구역 관리부(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
도 20b를 참조하면, 호스트(2000)가 출력 요청(RQ_out)을 출력하면, 구역 관리부(500)는 출력 요청(RQ_out)에 응답하여 제1_1 및 제1_2 임시 버퍼들(TB1_1, TB1_2)에 저장된 커맨드들(CMD)을 출력할 수 있다. Referring to FIG. 20B , when the
도 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
컨트롤러(3100)는 메모리 장치(3200)와 연결된다. 컨트롤러(3100)는 메모리 장치(3200)를 접속(access)하도록 구성된다. 예를 들어, 컨트롤러(3100)는 메모리 장치(3200)의 프로그램, 리드 또는 소거 동작을 제어하거나, 배경(background) 동작을 제어하도록 구성될 수 있다. 컨트롤러(3100)는 도 5에 도시된 컨트롤러(1200)와 동일하게 구성될 수 있다. 컨트롤러(3100)는 메모리 장치(3200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(3100)는 메모리 장치(3200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. The
예시적으로, 컨트롤러(3100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.For example, the
컨트롤러(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
예시적으로, 메모리 장치(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
컨트롤러(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
도 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
본 발명의 실시 예에 따르면, 컨트롤러(4210)는 도 5를 참조하여 설명된 컨트롤러(1200)의 기능을 수행할 수 있다.According to an embodiment of the present invention, the
컨트롤러(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
보조 전원 장치(4230)는 전원 커넥터(4002)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4230)는 호스트(4100)로부터 전원 전압을 입력 받고, 충전할 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터의 전원 공급이 원활하지 않을 경우, SSD(4200)의 전원 전압을 제공할 수 있다. 예시적으로, 보조 전원 장치(4230)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4230)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.The
버퍼 메모리(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
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.
상기 구역 아이디들은 연속적인 논리 블록 어드레스들로 구분되는 메모리 영역들에 할당된 인덱스들이고,
상기 라이트 포인터들은 선택된 구역 아이디 내에서 선택된 논리 블록 어드레스 다음으로 선택되는 논리 블록 어드레스들인 컨트롤러.
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.
상기 커맨드들을 임시로 저장하도록 구성된 큐 버퍼를 포함하는 컨트롤러.
The method of claim 1, wherein the light queue comprises:
and a queue buffer configured to temporarily store the commands.
상기 라이트 큐에서 출력된 상기 커맨드들의 상기 구역 아이디에 따라 상기 임시 버퍼를 선택하고, 선택된 상기 임시 버퍼에 상기 라이트 포인터의 순서에 따라 상기 커맨드들을 저장하도록 구성되는 컨트롤러.
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.
상기 임시 버퍼들 각각은 상기 라이트 포인터에 따라 상기 커맨드들을 저장하기 위한 서브 버퍼들을 포함하는 컨트롤러.
5. The method of claim 4,
and each of the temporary buffers includes sub-buffers for storing the commands according to the write pointer.
상기 임시 버퍼들 각각에 포함된 상기 서브 버퍼들 중에서 첫 번째 서브 버퍼에는 시작 포인터로 지정된 라이트 포인터가 할당된 커맨드가 저장되는 컨트롤러.
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.
상기 라이트 포인터들에 따라 상기 커맨드들을 상기 서브 버퍼들에 저장하도록 구성되는 컨트롤러.
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.
상기 임시 버퍼들 중에서 빈(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.
호스트로부터 출력된 요청들을 상기 커맨드들로 변환하고, 상기 커맨드들의 실행 순서를 저장 장치의 상태에 따라 변경하고, 변경된 상기 커맨드들을 상기 라이트 큐에 전송하도록 구성된 커맨드 관리부;
상기 저장 장치에 포함된 다이들(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.
상기 구역 아이디들에 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.
상기 큐 컨트롤러에서 상기 라이트 포인터들이 출력되면, 상기 시스템 버퍼에 저장된 상기 맵 정보를 사용하여 상기 라이트 포인터들에 각각 맵핑된 상기 물리 블록 어드레스들을 써치(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.
상기 출력 버퍼 중에서 선택된 구역 아이디에 대응되는 출력 버퍼에 상기 물리 블록 어드레스들이 저장되고, 상기 선택된 구역 아이디에 대응되는 임시 버퍼에 포함된 서브 버퍼들에 상기 라이트 포인터들이 모두 저장된 경우,
상기 출력 버퍼가 비워질 때까지 상기 서브 버퍼들에 저장된 상기 라이트 포인터들의 출력을 지연시키도록 구성되는 컨트롤러.
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.
상기 다이들 각각은 상기 데이터를 저장하는 복수의 메모리 블록들을 포함하는 메모리 시스템.
14. The method of claim 13,
and each of the dies includes a plurality of memory blocks for storing the data.
상기 호스트로부터 출력된 상기 요청들을 상기 커맨드들로 변환하고, 상기 커맨드들의 실행 순서를 상기 저장 장치의 상태에 따라 변경하도록 구성되는 커맨드 관리부;
상기 다이들의 물리 블록 어드레스들, 논리 블록 어드레스들 및 상기 구역 아이디들의 맵핑 테이블을 저장하도록 구성된 시스템 버퍼;
상기 프로그램 동작 시 상기 커맨드에 대응되는 라이트 포인터들의 순서가 불연속적인 경우, 동일한 구역 아이디에 할당되는 상기 라이트 포인터들의 순서가 연속되도록 상기 커맨드들의 큐잉을 조절하고, 임시 버퍼에 상기 커맨드들이 모두 채워진 구역 아이디가 발생하면, 상기 구역 아이디에게 우선권을 주도록 구성된 구역 관리부; 및
상기 구역 관리부에서 출력된 상기 커맨드들과, 상기 커맨드들에 대응되는 상기 물리 블록 어드레스들을 저장하고, 상기 다이들에게 상기 맵핑된 물리 블록 어드레스들 및 상기 커맨드들을 전송하도록 구성된 메모리 인터페이스를 포함하는 메모리 시스템.
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; .
상기 구역 아이디들 및 상기 라이트 포인터들이 할당되며 상기 커맨드 관리부로부터 출력되는 상기 커맨드들을 입력되는 순서대로 큐잉하도록 구성된 라이트 큐; 및
상기 라이트 큐에 저장된 순서대로 상기 커맨드들을 상기 구역 아이디들에 대응되는 임시 버퍼들에 저장하고, 상기 임시 버퍼들 중에서 설정된 저장 사이즈가 채워진 임시 버퍼에 저장된 상기 커맨드들을 출력하도록 구성된 큐 컨트롤러를 포함하는 메모리 시스템.
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.
상기 임시 버퍼들은 라이트 포인터들이 할당된 서브 버퍼들을 포함하고,
상기 커맨드들은 상기 라이트 포인터들에 대응되는 상기 서브 버퍼들에 저장되는 메모리 시스템.
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.
상기 커맨드들이 모두 채워진 임시 버퍼들과 상기 라이트 포인터들이 채워지지 아니한 임시 버퍼들이 상기 큐 컨트롤러에 포함되는 경우,
상기 큐 컨트롤러는 상기 커맨드들이 모두 채워진 임시 버퍼들에 우선권을 주고, 상기 우선권을 가진 상기 임시 버퍼들에 저장된 상기 커맨드들을 상기 메모리 인터페이스로 출력시키는 메모리 시스템.
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.
상기 라이트 포인터들 중에서 컨트롤 키가 포함된 라이트 포인터들이 포함된 경우, 상기 컨트롤 키가 포함된 상기 라이트 포인터들에 할당된 커맨드들은 상기 호스트로부터 출력 요청에 응답하여 메모리 인터페이스로 출력되고,
상기 컨트롤 키가 포함되지 아니한 라이트 포인터들에 할당된 커맨드들은 상기 출력 요청에 관계없이 상기 메모리 인터페이스에 출력되는 메모리 시스템.
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.
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)
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)
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 |
-
2021
- 2021-01-18 KR KR1020210006922A patent/KR20220104511A/en unknown
- 2021-06-30 US US17/364,401 patent/US11875056B2/en active Active
- 2021-11-01 CN CN202111282332.XA patent/CN114817094B/en active Active
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 |