KR20230115197A - Storage controller managing different types of blocks, an operating method thereof, and an operating method of a storage device including the same - Google Patents

Storage controller managing different types of blocks, an operating method thereof, and an operating method of a storage device including the same Download PDF

Info

Publication number
KR20230115197A
KR20230115197A KR1020220064866A KR20220064866A KR20230115197A KR 20230115197 A KR20230115197 A KR 20230115197A KR 1020220064866 A KR1020220064866 A KR 1020220064866A KR 20220064866 A KR20220064866 A KR 20220064866A KR 20230115197 A KR20230115197 A KR 20230115197A
Authority
KR
South Korea
Prior art keywords
zone
memory block
state
block
memory
Prior art date
Application number
KR1020220064866A
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 US18/058,546 priority Critical patent/US20230236737A1/en
Priority to EP23151752.5A priority patent/EP4220414A1/en
Priority to CN202310055420.9A priority patent/CN116501243A/en
Publication of KR20230115197A publication Critical patent/KR20230115197A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

A storage controller according to an embodiment of the present disclosure communicates with a host and a non-volatile memory device. A method for operating a storage controller comprises: a step of receiving a first request indicating a first zone among a plurality of zones; a step of setting a state of the first zone to an active state in response to the first request; a step of allocating a first memory block among the plurality of memory blocks of the non-volatile memory device to the first zone updated as the active state; and a step of storing user data corresponding to the first request in the first memory block. Reliability of the first memory block is higher than that of a second memory block allocated in a second zone having a non-active state among the plurality of zones. The storage controller also supports the zoned namespace (ZNS) standard of NVM express.

Description

다른 타입의 블록들을 관리하는 스토리지 컨트롤러, 이의 동작 방법, 및 이를 포함하는 스토리지 장치의 동작하는 방법{STORAGE CONTROLLER MANAGING DIFFERENT TYPES OF BLOCKS, AN OPERATING METHOD THEREOF, AND AN OPERATING METHOD OF A STORAGE DEVICE INCLUDING THE SAME}A storage controller managing different types of blocks, a method of operating the same, and a method of operating a storage device including the same

본 개시는 스토리지 컨트롤러에 관한 것으로, 좀 더 상세하게는 다른 타입의 블록들을 관리하는 스토리지 컨트롤러에 관한 것이다.The present disclosure relates to a storage controller, and more particularly, to a storage controller that manages different types of blocks.

메모리 장치는 쓰기 요청에 따라 데이터를 저장하고, 읽기 요청에 따라 저장된 데이터를 출력한다. 예를 들어, 메모리 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM), 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치, 및 플래시 메모리 장치, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 비-휘발성 메모리 장치로 구분된다.The memory device stores data according to a write request and outputs the stored data according to a read request. For example, memory devices include volatile memory devices, such as dynamic random access memory (DRAM) and static RAM (SRAM), in which stored data is lost when power is cut off, flash memory devices, and phase-change RAM (PRAM). ), MRAM (Magnetic RAM), RRAM (Resistive RAM), etc.

일반적으로, 비-휘발성 메모리 장치는 임의적인 액세스에 따라 데이터를 저장할 수 있다. 임의적인 액세스에 따라 전체 영역에 대해 빈번하게 가비지 컬렉션(GC; garbage collection)이 수행됨에 따라, 스토리지 장치의 수명이 감소될 수 있다. 빈번한 가비지 컬렉션, 웨어 레벨링, 배드 블록 관리 등을 위해 넓은 오버 프로비저닝(OP; over provisioning) 영역이 할당됨에 따라, 스토리지 장치의 이용 가능한 스토리지 용량이 감소될 수 있다. 이를 방지하기 위해, 비-휘발성 메모리 장치의 메모리 블록들을 존(zone)으로 구별하고, 존 내에서 관련된 데이터를 순차적으로 저장하는 기법이 활용될 수 있다.In general, non-volatile memory devices can store data according to random access. As garbage collection (GC) is frequently performed on the entire area according to random access, the lifetime of the storage device may be reduced. As a wide over-provisioning (OP) area is allocated for frequent garbage collection, wear leveling, bad block management, etc., the usable storage capacity of the storage device may decrease. To prevent this, a technique of classifying memory blocks of a non-volatile memory device into zones and sequentially storing related data within the zones may be used.

본 개시에 따르면 다른 타입의 블록들을 관리하는 스토리지 컨트롤러, 이의 동작 방법, 및 이를 포함하는 스토리지 장치의 동작 방법을 제공하는 데 있다.According to the present disclosure, an object of the present disclosure is to provide a storage controller that manages different types of blocks, a method of operating the same, and a method of operating a storage device including the same.

본 개시의 실시 예에 따른 스토리지 컨트롤러는 호스트 및 비-휘발성 메모리 장치와 통신하고, 상기 스토리지 컨트롤러의 동작하는 방법은 상기 호스트로부터, 복수의 존들 중 제1 존을 가리키는 제1 요청을 수신하는 단계, 상기 제1 요청에 응답하여, 상기 제1 존의 상태를 액티브 상태로 설정하는 단계, 상기 비-휘발성 메모리 장치의 복수의 메모리 블록들 중 제1 메모리 블록을 상기 액티브 상태로 업데이트된 상기 제1 존에 할당하는 단계, 및 상기 제1 요청에 대응하는 사용자 데이터를 상기 제1 메모리 블록에 저장하는 단계를 포함하되, 상기 제1 메모리 블록의 신뢰성은 상기 복수의 존들 중 논-액티브 상태를 갖는 제2 존에 할당된 제2 메모리 블록의 신뢰성보다 높고, 그리고 스토리지 컨트롤러는 NVM Express의 ZNS(Zoned Namespace) 표준을 지원한다.According to an embodiment of the present disclosure, a storage controller communicates with a host and a non-volatile memory device, and a method of operating the storage controller includes receiving a first request indicating a first zone among a plurality of zones from the host; In response to the first request, setting a state of the first zone to an active state, wherein a first memory block among a plurality of memory blocks of the non-volatile memory device is updated to the active state; allocating to, and storing user data corresponding to the first request in the first memory block, wherein the reliability of the first memory block determines whether a second one of the plurality of zones having a non-active state It is higher than the reliability of the second memory block allocated to the zone, and the storage controller supports the NVM Express ZNS (Zoned Namespace) standard.

본 개시의 실시 예에 따른 스토리지 컨트롤러는 호스트의 요청에 따라 복수의 존들 중 타겟 존의 상태를 천이하도록 구성된 존 상태 관리자, 상기 타겟 존의 상기 천이된 상태가 액티브 상태이면. 상기 타겟 존에 상기 복수의 메모리 블록들 중 제1 메모리 블록을 할당하도록 구성된 블록 할당 유닛, 및 상기 블록 할당 유닛의 제어에 따라, 상기 호스트의 상기 요청에 대응하는 타겟 데이터를 상기 제1 메모리 블록에 저장하도록 구성된 버퍼 메모리를 포함하되, NVM Express의 ZNS(Zoned Namespace) 표준을 지원하고, 그리고 상기 제1 메모리 블록의 신뢰성은 상기 복수의 존들 중 논-액티브 상태를 갖는 존에 할당된 제2 메모리 블록의 신뢰성보다 높다.The storage controller according to an embodiment of the present disclosure may include a zone state manager configured to transition a state of a target zone among a plurality of zones according to a request of a host, and if the transitioned state of the target zone is an active state. A block allocation unit configured to allocate a first memory block among the plurality of memory blocks to the target zone, and target data corresponding to the request of the host to the first memory block under the control of the block allocation unit. including a buffer memory configured to store, support the ZNS (Zoned Namespace) standard of NVM Express, and the reliability of the first memory block is assigned to a zone having a non-active state among the plurality of zones; higher than the reliability of

본 개시의 실시 예에 따른 스토리지 장치는 호스트와 통신하고, 상기 스토리지 장치의 동작하는 방법은 상기 호스트로부터, 복수의 존들 중 제1 존을 가리키는 제1 요청을 수신하는 단계, 상기 제1 요청에 응답하여, 상기 제1 존의 상태를 액티브 상태로 설정하는 단계, 비-휘발성 메모리 장치의 복수의 메모리 블록들 중 제1 메모리 블록을 상기 액티브 상태로 업데이트된 상기 제1 존에 할당하는 단계, 및 상기 제1 요청에 대응하는 사용자 데이터를 상기 제1 메모리 블록에 저장하는 단계를 포함하되, 상기 제1 메모리 블록의 신뢰성은 상기 복수의 존들 중 논-액티브 상태를 갖는 제2 존에 할당된 제2 메모리 블록의 신뢰성보다 높고, 그리고 상기 스토리지 장치는 NVM Express의 ZNS(Zoned Namespace) 표준을 지원한다.A storage device according to an embodiment of the present disclosure may communicate with a host, and a method of operating the storage device may include receiving a first request indicating a first zone among a plurality of zones from the host, and responding to the first request. setting the state of the first zone to an active state, allocating a first memory block among a plurality of memory blocks of a non-volatile memory device to the first zone updated to the active state, and and storing user data corresponding to a first request in the first memory block, wherein reliability of the first memory block is determined by a second memory allocated to a second zone having a non-active state among the plurality of zones. higher than block reliability, and the storage device supports the ZNS (Zoned Namespace) standard of NVM Express.

본 개시의 일부 실시 예들에 따르면, 다른 타입의 블록들을 관리하는 스토리지 컨트롤러, 이의 동작 방법, 및 이를 포함하는 스토리지 장치의 동작 방법 제공된다.According to some embodiments of the present disclosure, a storage controller managing different types of blocks, an operating method thereof, and an operating method of a storage device including the same are provided.

또한, 쓰기 완료된 데이터는 대용량 메모리 블록에서 관리하고, 쓰기 처리 중인 데이터는 고-신뢰성 메모리 블록에서 관리함으로써, 쓰기 동작의 신뢰성을 보장하고 대용량 데이터를 효율적으로 관리하는 스토리지 컨트롤러가 제공된다.In addition, a storage controller is provided that guarantees reliability of a write operation and efficiently manages large-capacity data by managing written data in a large-capacity memory block and managing write-in-process data in a high-reliability memory block.

도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따른 순차적인 쓰기 동작을 설명하는 도면이다.
도 4는 본 개시의 일부 실시 예들에 따라 존의 상태들을 도시하는 도면이다.
도 5는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 장치의 동작 방법을 설명하는 도면이다.
도 6은 본 개시의 일부 실시 예들에 따라 존에 제1 타입의 메모리 블록을 할당하는 동작을 설명하는 도면이다.
도 7은 본 개시의 일부 실시 예들에 따라 존에 제1 타입의 메모리 블록을 할당하는 동작을 도시하는 순서도이다.
도 8은 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 장치의 동작 방법을 설명하는 도면이다.
도 9는 본 개시의 일부 실시 예들에 따라 존에 제2 타입의 메모리 블록을 할당하는 동작을 설명하는 도면이다.
도 10은 본 개시의 일부 실시 예들에 따라 존에 제2 타입의 메모리 블록을 할당하는 동작을 도시하는 순서도이다.
도 11은 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러의 동작 방법을 설명하는 도면이다.
도 12는 본 개시의 일부 실시 예들에 따라 존에 할당된 메모리 블록을 할당 해제하는 동작을 설명하는 도면이다.
도 13은 본 개시의 일부 실시 예들에 따라 존에 할당된 메모리 블록을 할당 해제하는 동작을 도시하는 순서도이다.
도 14는 본 발명의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.
1 is a block diagram of a storage system according to an embodiment of the present disclosure.
FIG. 2 is a block diagram embodying the storage controller of FIG. 1 according to some embodiments of the present disclosure.
3 is a diagram illustrating a sequential write operation according to some embodiments of the present disclosure.
4 is a diagram illustrating states of a zone according to some embodiments of the present disclosure.
FIG. 5 is a diagram illustrating an operating method of the storage device of FIG. 1 according to some embodiments of the present disclosure.
6 is a diagram illustrating an operation of allocating a first type of memory block to a zone according to some embodiments of the present disclosure.
7 is a flowchart illustrating an operation of allocating a first type of memory block to a zone according to some embodiments of the present disclosure.
FIG. 8 is a diagram illustrating an operating method of the storage device of FIG. 1 according to some embodiments of the present disclosure.
9 is a diagram illustrating an operation of allocating a second type memory block to a zone according to some embodiments of the present disclosure.
10 is a flowchart illustrating an operation of allocating a second type of memory block to a zone according to some embodiments of the present disclosure.
FIG. 11 is a diagram illustrating an operating method of the storage controller of FIG. 1 according to some embodiments of the present disclosure.
12 is a diagram illustrating an operation of deallocating a memory block allocated to a zone according to some embodiments of the present disclosure.
13 is a flowchart illustrating an operation of deallocating a memory block allocated to a zone according to some embodiments of the present disclosure.
14 is a block diagram exemplarily illustrating a data center to which a storage device according to an embodiment of the present invention is applied.

이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시의 실시 예들을 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 유사한 구성요소에 대해서는 유사한 참조부호가 사용되고, 그리고 유사한 구성요소에 대해서 중복된 설명은 생략된다.Hereinafter, embodiments of the present disclosure will be described clearly and in detail to the extent that those skilled in the art can easily practice the embodiments of the present disclosure. In order to facilitate overall understanding in describing the present invention, similar reference numerals are used for similar elements in the drawings, and redundant descriptions of similar elements are omitted.

도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(11) 및 스토리지 장치(100)를 포함할 수 있다. 일부 실시 예들에서, 스토리지 시스템(10)은)은 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC(Personal Computer), 스마트폰, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.1 is a block diagram of a storage system according to an embodiment of the present disclosure. Referring to FIG. 1 , a storage system 10 may include a host 11 and a storage device 100 . In some embodiments, the storage system 10 is a computing system configured to process various information, such as a personal computer, notebook, laptop, server, workstation, tablet PC (Personal Computer), smart phone, digital camera, black box, etc. can be

호스트(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)에 데이터를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터를 읽을 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)에 쓰기 데이터를 제공하거나, 또는 호스트(11)는 스토리지 장치(100)에 저장된 읽기 데이터를 요청할 수 있다.The host 11 may control overall operations of the storage system 10 . For example, the host 11 may store data in the storage device 100 or read data stored in the storage device 100 . For example, the host 11 may provide write data to the storage device 100 or request read data stored in the storage device 100 .

스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 비-휘발성 메모리 장치(120)는 데이터를 저장할 수 있다. 스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어에 따라 동작할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 동작을 가리키는 커맨드(CMD), 및 데이터의 위치를 가리키는 어드레스(ADD)에 기초하여 비-휘발성 메모리 장치(120)에 데이터를 저장하거나, 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다.The storage device 100 may include a storage controller 110 and a non-volatile memory device 120 . The non-volatile memory device 120 may store data. The storage controller 110 may store data in the non-volatile memory device 120 or read data stored in the non-volatile memory device 120 . The non-volatile memory device 120 may operate under the control of the storage controller 110 . For example, the storage controller 110 stores data in the non-volatile memory device 120 or stores data in the non-volatile memory device 120 based on a command CMD indicating an operation and an address ADD indicating a location of data. Data stored in device 120 may be read.

일부 실시 예들에서, 스토리지 장치(100)는 호스트(11)의 요청에 따라 존(Zone)에 대응하는 메모리 블록들을 할당하고, 할당된 메모리 블록들에 데이터를 순차적으로 저장할 수 있다. 존은 비-휘발성 메모리 장치(120)의 복수의 메모리 블록들 중 물리적으로 순차적인 일부 메모리 블록들을 개념적으로 지칭할 수 있다. 예를 들어, 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)는 NVMe(Nonvolatile Memory express)의 ZNS(Zoned Namespace) 표준을 지원할 수 있다. ZNS 표준에 대한 보다 상세한 설명은 도 4와 함께 후술될 것이다.In some embodiments, the storage device 100 may allocate memory blocks corresponding to zones according to a request of the host 11 and sequentially store data in the allocated memory blocks. A zone may conceptually refer to some physically sequential memory blocks among a plurality of memory blocks of the non-volatile memory device 120 . For example, the storage controller 110 and the non-volatile memory device 120 may support a nonvolatile memory express (NVMe) zoned namespace (ZNS) standard. A more detailed description of the ZNS standard will be described later with reference to FIG. 4 .

일부 실시 예들에서, 비-휘발성 메모리 장치(120)는 낸드 플래시 메모리일 수 있으나, 본 개시의 범위가 이에 제한되는 것은 아니며, 비-휘발성 메모리 장치(120)는 PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory), RRAM(Resistive Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지할 수 있는 다양한 저장 장치들 중 하나일 수 있다. In some embodiments, the non-volatile memory device 120 may be a NAND flash memory, but the scope of the present disclosure is not limited thereto, and the non-volatile memory device 120 may be a phase-change random access memory (PRAM). , MRAM (Magnetic Random Access Memory), RRAM (Resistive Random Access Memory), FRAM (Ferroelectric Random Access Memory), etc., may be one of various storage devices capable of maintaining stored data even when power supply is cut off.

비-휘발성 메모리 장치(120)는 제1 타입의 메모리 블록 및 제2 타입의 메모리 블록을 포함할 수 있다. 일부 실시 예들에서, 제1 타입의 메모리 블록의 셀 당 저장되는 비트 수가 1개일 수 있다. 제1 타입의 메모리 블록의 셀 당 저장되는 비트 수는 제2 타입의 메모리 블록의 셀 당 저장되는 비트 수보다 적을 수 있다. 제1 타입의 메모리 블록에 대한 쓰기 동작의 속도는 빠를 수 있다. 제1 타입의 메모리 블록은 신뢰도가 높은 메모리 블록일 수 있다. The non-volatile memory device 120 may include a first type memory block and a second type memory block. In some embodiments, the number of bits stored per cell of the first type memory block may be one. The number of bits stored per cell of the first-type memory block may be less than the number of bits stored per cell of the second-type memory block. A speed of a write operation for the first type memory block may be high. The first type of memory block may be a highly reliable memory block.

일부 실시 예들에서, 제2 타입의 메모리 블록의 셀 당 저장되는 비트 수가 2개 이상일 수 있다. 제2 타입의 메모리 블록에 대한 쓰기 동작의 속도는 느릴 수 있다. 제2 타입의 메모리 블록은 대용량 데이터의 효율적인 저장이 가능한 블록일 수 있다. In some embodiments, the number of bits stored per cell of the second type memory block may be two or more. A write operation speed for the second type memory block may be slow. The second type of memory block may be a block capable of efficiently storing large amounts of data.

예를 들어, 제1 타입의 메모리 블록은 하나의 셀이 1개의 비트를 저장하는 싱글 레벨 셀(SLC; single level cell)로 구현될 수 있다. 제2 타입의 메모리 블록은 하나의 셀이 2개의 비트들을 저장하는 멀티 레벨 셀(MLC; multi-level cell), 하나의 셀이 3개의 비트들을 저장하는 트리플 레벨 셀(triple level cell), 하나의 셀이 4개의 비트들을 저장하는 쿼드러플 레벨 셀(quadruple level cell) 등과 같은 여러 비트들을 저장하는 셀들 중 하나로 구현될 수 있다.For example, the first type memory block may be implemented as a single level cell (SLC) in which one cell stores one bit. The second type of memory block includes a multi-level cell (MLC) in which one cell stores two bits, a triple level cell in which one cell stores three bits, and one A cell may be implemented as one of cells that store several bits, such as a quadruple level cell that stores four bits.

스토리지 컨트롤러(110)는 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)을 포함할 수 있다.The storage controller 110 may include a ZNS table 111 , a zone state manager 112 , and a block allocation unit 113 .

ZNS 테이블(111)은 복수의 존들 각각의 상태를 가리키는 상태 정보 및 복수의 존들 각각에 할당된 메모리 블록들을 가리키는 블록 할당 정보를 관리할 수 있다. 예를 들어, 존 상태 관리자(112), 및 블록 할당 유닛(113)은 ZNS 테이블(111)을 관리할 수 있다. The ZNS table 111 may manage state information indicating the state of each of a plurality of zones and block allocation information indicating memory blocks allocated to each of the plurality of zones. For example, the zone state manager 112 and block allocation unit 113 may manage the ZNS table 111 .

ZNS 테이블(111)은 존 상태 관리자(112)의 제어에 따라, 복수의 존들 각각의 상태를 가리키는 복수의 상태 정보를 관리할 수 있다. 존 상태 관리자(112)는 호스트의 요청에 따라 존의 상태를 천이하면, 이를 반영하여 ZNS 테이블(111)을 업데이트할 수 있다.The ZNS table 111 may manage a plurality of state information indicating states of each of a plurality of zones under the control of the zone state manager 112 . The zone state manager 112 may update the ZNS table 111 by reflecting the state transition of the zone according to the request of the host.

ZNS 테이블(111)은 블록 할당 유닛(113)의 제어에 따라, 복수의 존들 각각에 할당된 메모리 블록들을 가리키는 복수의 블록 할당 정보를 관리할 수 있다. 블록 할당 유닛(113)은 존 내에 새로운 메모리 블록을 할당하거나 기존에 할당된 메모리 블록을 할당 해제하면, 이를 반영하여 ZNS 테이블(111)을 업데이트할 수 있다. The ZNS table 111 may manage a plurality of block allocation information indicating memory blocks allocated to each of a plurality of zones under the control of the block allocation unit 113 . The block allocation unit 113 may update the ZNS table 111 by reflecting the allocation of a new memory block within a zone or deallocation of a previously allocated memory block.

스토리지 장치(100)가 파워-오프되는 경우, ZNS 테이블(111)은 복수의 상태 정보 및 복수의 블록 할당 정보를 비-휘발성 메모리 장치(120)에 저장할 수 있다.When the storage device 100 is powered off, the ZNS table 111 may store a plurality of state information and a plurality of block allocation information in the non-volatile memory device 120 .

존 상태 관리자(112)는 호스트(11)로부터 ZNS 표준을 따르는 요청들을 수신하고, ZNS 표준을 따르는 요청들을 처리할 수 있다. 존 상태 관리자(112)는 호스트(11)로부터 수신된 요청에 따라, 복수의 존들 각각의 상태를 변경하고, ZNS 테이블(111)에 저장된 복수의 존들 각각의 상태 정보를 업데이트할 수 있다. The zone state manager 112 may receive requests conforming to the ZNS standard from the host 11 and process requests conforming to the ZNS standard. The zone state manager 112 may change the state of each of the plurality of zones and update state information of each of the plurality of zones stored in the ZNS table 111 according to a request received from the host 11 .

블록 할당 유닛(113)은 존에 할당된 메모리 블록들을 가리키는 블록 할당 정보를 관리할 수 있다. 블록 할당 유닛(113)은 존 상태 관리자(112)의 제어에 따라, 복수의 존들 각각에 할당된 메모리 블록들을 가리키는 복수의 블록 할당 정보를 관리할 수 있다. The block allocation unit 113 may manage block allocation information indicating memory blocks allocated to a zone. The block allocation unit 113 may manage a plurality of block allocation information indicating memory blocks allocated to each of a plurality of zones under the control of the zone state manager 112 .

예를 들어, 블록 할당 유닛(113)은 존 상태 관리자(112)의 요청에 따라, 존 내에 메모리 블록을 할당하거나 할당된 메모리 블록을 할당 해제하고, ZNS 테이블(111)에 저장된 복수의 존들 각각의 블록 할당 정보를 업데이트할 수 있다.For example, the block allocation unit 113 allocates a memory block in a zone or deallocates the allocated memory block according to a request of the zone state manager 112, and allocates each of a plurality of zones stored in the ZNS table 111. Block allocation information can be updated.

도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 호스트(11) 및 비-휘발성 메모리 장치(120)와 통신할 수 있다. FIG. 2 is a block diagram embodying the storage controller of FIG. 1 according to some embodiments of the present disclosure. Referring to FIGS. 1 and 2 , the storage controller 110 may communicate with the host 11 and the non-volatile memory device 120 .

스토리지 컨트롤러(110)는 ZNS 테이블(111), 존 상태 관리자(112), 블록 할당 유닛(113), 휘발성 메모리 장치(114), ROM(Read Only Memory)(115), 프로세서(116), 호스트 인터페이스 회로(117), 및 비-휘발성 메모리 인터페이스 회로(118)를 포함할 수 있다. ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)는 도 1의 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)에 대응할 수 있다. The storage controller 110 includes a ZNS table 111, a zone state manager 112, a block allocation unit 113, a volatile memory device 114, a read only memory (ROM) 115, a processor 116, and a host interface. circuitry 117 , and non-volatile memory interface circuitry 118 . The ZNS table 111, zone state manager 112, and block assignment unit 113 may correspond to the ZNS table 111, zone state manager 112, and block assignment unit 113 in FIG.

일부 실시 예들에서, ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)은 펌웨어로 구현될 수 있다. 예를 들어, 비-휘발성 메모리 장치(120)는 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)에 대응하는 명령어들을 저장할 수 있다. 프로세서(116)는 비-휘발성 메모리 장치(120)의 명령어들을 휘발성 메모리 장치(114)에 로드할 수 있다. 프로세서(116)는 로드된 명령어들을 실행함으로써, ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)을 동작시킬 수 있다.In some embodiments, the ZNS table 111, zone state manager 112, and block allocation unit 113 may be implemented in firmware. For example, the non-volatile memory device 120 may store instructions corresponding to the ZNS table 111 , the zone state manager 112 , and the block allocation unit 113 . The processor 116 may load instructions of the non-volatile memory device 120 into the volatile memory device 114 . The processor 116 may operate the ZNS table 111, the zone state manager 112, and the block allocation unit 113 by executing the loaded instructions.

휘발성 메모리 장치(114)는 버퍼 메모리(114a)를 포함할 수 있다. 휘발성 메모리 장치(114)는 버퍼 메모리(114a) 외에도, 스토리지 컨트롤러(110)의 메인 메모리, 캐시 메모리, 또는 동작 메모리로 사용될 수 있다. 예를 들어, 휘발성 메모리 장치(114)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등으로 구현될 수 있다.The volatile memory device 114 may include a buffer memory 114a. The volatile memory device 114 may be used as a main memory, cache memory, or operating memory of the storage controller 110 in addition to the buffer memory 114a. For example, the volatile memory device 114 may be implemented as static random access memory (SRAM) or dynamic random access memory (DRAM).

ROM(115)은 스토리지 컨트롤러(110)의 동작에 필요한 정보를 저장하는 읽기 전용 메모리로 사용될 수 있다. 프로세서(116)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. The ROM 115 may be used as a read-only memory for storing information necessary for the operation of the storage controller 110 . The processor 116 may control overall operations of the storage controller 110 .

스토리지 컨트롤러(110)는 호스트 인터페이스 회로(117)를 통해 호스트(11)와 통신할 수 있다. 일부 실시 예들에서, 호스트 인터페이스 회로(117)는 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI) 인터페이스, NVMe(Nonvolatile Memory express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다. 또한, 호스트 인터페이스 회로(118)는 NVMe의 ZNS 표준을 지원할 수 있다.The storage controller 110 may communicate with the host 11 through the host interface circuit 117 . In some embodiments, the host interface circuitry 117 may include various interfaces such as Serial ATA (SATA), Peripheral Component Interconnect Express (PCIe), Serial Attached SCSI (SAS) interface, Nonvolatile Memory express (NVMe), Universal Flash Storage (UFS), and the like. It can be implemented based on at least one of the interfaces. In addition, the host interface circuitry 118 may support the ZNS standard of NVMe.

스토리지 컨트롤러(110)는 비-휘발성 메모리 인터페이스 회로(118)를 통해 비-휘발성 메모리 장치(120)와 통신할 수 있다. 일부 실시 예들에서, 비-휘발성 메모리 인터페이스 회로(118)는 낸드 인터페이스를 기반으로 구현될 수 있다. 또한, 비-휘발성 메모리 인터페이스 회로(119)는 NVMe의 ZNS 표준에 따른 순차적인 쓰기 동작을 지원할 수 있다.The storage controller 110 may communicate with the non-volatile memory device 120 through the non-volatile memory interface circuit 118 . In some embodiments, the non-volatile memory interface circuit 118 may be implemented based on a NAND interface. In addition, the non-volatile memory interface circuit 119 may support a sequential write operation according to the NVMe ZNS standard.

도 3은 본 개시의 일부 실시 예들에 따른 순차적인 쓰기 동작을 설명하는 도면이다. 도 1 및 도 3을 참조하면, 스토리지 컨트롤러가 비-휘발성 메모리 장치(120)에 데이터를 순차적으로 쓰는 동작이 설명된다. 3 is a diagram illustrating a sequential write operation according to some embodiments of the present disclosure. Referring to FIGS. 1 and 3 , an operation of sequentially writing data to the non-volatile memory device 120 by the storage controller will be described.

일반적인 스토리지 컨트롤러는 임의적인 액세스에 따라 데이터를 저장할 수 있다. 예를 들어, 임의적인 액세스에 따라 데이터가 저장된 경우, 논리적으로 순차적인 어드레스 블록들에 대응하는 메모리 블록들은 비-휘발성 메모리 장치에 임의적으로 분산될 수 있다. 비-휘발성 메모리 장치는 구조적으로 오버라이트(overwrite)가 불가능할 수 있다. 소거 동작을 수행하는 경우, 메모리 블록 내에서 유효한 데이터 및 유효하지 않은 데이터를 개별적으로 관리하기 위해, 데이터를 읽고 다른 메모리 블록으로 데이터를 복사하는 가비지 컬렉션(GC; garbage collection)을 수행할 수 있다.A typical storage controller can store data based on random access. For example, when data is stored according to random access, memory blocks corresponding to logically sequential address blocks may be randomly distributed in the non-volatile memory device. A non-volatile memory device may not be structurally overwritten. When an erase operation is performed, garbage collection (GC) may be performed to read data and copy data to another memory block in order to individually manage valid data and invalid data in a memory block.

일반적인 스토리지 컨트롤러는 비-휘발성 메모리 장치의 전체 영역에 대해 빈번하게 가비지 컬렉션을 수행함에 따라, 비-휘발성 메모리 장치의 수명(예를 들어, 프로그램/소거(P/E; program/erase) 사이클)을 감소시킬 수 있다. 또한, 빈번한 가비지 컬렉션, 웨어 레벨링, 배드 블록 관리 등을 위해 넓은 오버 프로비저닝(OP; overprovisioning) 영역을 할당함에 따라, 비-휘발성 메모리 장치의 이용 가능한 스토리지 용량이 감소될 수 있다.As a general storage controller frequently performs garbage collection on the entire area of a non-volatile memory device, the lifetime (eg, program/erase (P/E) cycle) of the non-volatile memory device is shortened. can reduce Also, as a large overprovisioning (OP) area is allocated for frequent garbage collection, wear leveling, bad block management, etc., the usable storage capacity of the non-volatile memory device may be reduced.

본 개시의 실시 예들에 따르면, 스토리지 컨트롤러(110)는 순차적인 쓰기 동작을 수행할 수 있다. 본 개시의 이해를 돕기 위해, 제1 내지 제N 존들의 논리적 영역 및 물리적 영역이 함께 도시된다. N은 임의의 자연수이다. 논리적 영역은 호스트(11)에 의해 식별 가능한 어드레스들을 포함할 수 있다. 물리적 영역은 비-휘발성 메모리 장치(120) 내의 메모리 블록의 위치들 또는 어드레스들을 포함할 수 있다. 논리적 영역 및 물리적 영역은 서로 매핑 관계를 가질 수 있다.According to example embodiments of the present disclosure, the storage controller 110 may perform a sequential write operation. For better understanding of the present disclosure, logical areas and physical areas of the first through Nth zones are shown together. N is any natural number. A logical area may include addresses identifiable by the host 11 . The physical area may include locations or addresses of memory blocks within the non-volatile memory device 120 . A logical area and a physical area may have a mapping relationship with each other.

논리적 영역을 참조하면, 스토리지 컨트롤러(110)는 제1 내지 제N 존들을 관리할 수 있다. 제1 내지 제N 존들은 서로 독립적으로 관리될 수 있다. 예를 들어, 호스트(11)는 제1 애플리케이션 및 제2 애플리케이션을 동작시킬 수 있다. 제1 애플리케이션은 제1 존에 포함된 데이터를 관리할 수 있다. 제2 애플리케이션은 제2 존에 포함된 데이터를 관리할 수 있다. 즉, 동일한 애플리케이션에 의해 관리되는 용도 및 사용주기가 유사한 데이터는 동일한 존 내에서 관리될 수 있다.Referring to the logical area, the storage controller 110 may manage first to Nth zones. The first through Nth zones may be managed independently of each other. For example, the host 11 may operate a first application and a second application. The first application may manage data included in the first zone. The second application may manage data included in the second zone. That is, data with similar uses and usage cycles managed by the same application can be managed within the same zone.

제1 내지 제N 존들 각각은 복수의 논리적 블록 어드레스들을 포함할 수 있다. 예를 들어, 제1 존은 제1 내지 제m 논리적 블록 어드레스들(LBA1~LBAm)을 포함할 수 있다. m은 임의의 자연수이다. 제1 내지 제m 논리적 블록 어드레스들(LBA1~LBAm)은 논리적으로 순차적일 수 있다.Each of the first through Nth zones may include a plurality of logical block addresses. For example, the first zone may include the first to m th logical block addresses LBA1 to LBAm. m is any natural number. The first to m th logical block addresses LBA1 to LBAm may be logically sequential.

스토리지 컨트롤러(110)는 쓰기 포인터를 사용하여 데이터를 순차적으로 비-휘발성 메모리 장치(120)에 저장할 수 있다. 예를 들어, 제1 논리적 블록 어드레스(LBA1) 및 제2 논리적 블록 어드레스(LBA2)에 대응하는 데이터가 비-휘발성 메모리 장치(120)에 순차적으로 프로그래밍되고, 스토리지 컨트롤러(110)의 버퍼 메모리(114a)가 제3 논리적 블록 어드레스(LBA3)에 대응하는 데이터를 저장하는 경우, 쓰기 포인터는 제3 논리적 블록 어드레스(LBA3)를 가리킬 수 있다.The storage controller 110 may sequentially store data in the non-volatile memory device 120 using the write pointer. For example, data corresponding to the first logical block address LBA1 and the second logical block address LBA2 are sequentially programmed into the non-volatile memory device 120, and the buffer memory 114a of the storage controller 110 ) stores data corresponding to the third logical block address LBA3, the write pointer may point to the third logical block address LBA3.

물리적 영역을 참조하면, 사용자 메모리(121a)는 복수의 블록(T1_BLK)들을 포함할 수 있다. 복수의 블록(T1_BLK)들은 제1 내지 제N 존들로 분류될 수 있다. 제1 존의 복수의 블록(T1_BLK)들은 물리적으로 순차적인 제1 내지 제m 블록(T1_BLK1~T1_BLKm)일 수 있다. 제1 존의 제1 내지 제m 블록(T1_BLK1~T1_BLKm)은 각각 제1 존의 제1 내지 제m 논리적 블록 어드레스들(LBA1~LBAm)에 대응할 수 있다. 스토리지 컨트롤러(110)는 호스트(11)로부터 수신된 쓰기 요청에 대응하는 데이터가 비-휘발성 메모리 장치(120) 내에 논리적으로 그리고 물리적으로 순차적으로 저장되도록 관리할 수 있다. 즉, 스토리지 컨트롤러(110)는 순차적인 쓰기를 지원할 수 있다.Referring to the physical area, the user memory 121a may include a plurality of blocks T1_BLK. The plurality of blocks T1_BLK may be classified into first through Nth zones. The plurality of blocks T1_BLK of the first zone may be physically sequential first to mth blocks T1_BLK1 to T1_BLKm. The first to m th blocks T1_BLK1 to T1_BLKm of the first zone may correspond to the first to m th logical block addresses LBA1 to LBAm of the first zone, respectively. The storage controller 110 may manage data corresponding to a write request received from the host 11 to be logically and physically sequentially stored in the non-volatile memory device 120 . That is, the storage controller 110 may support sequential writing.

본 개시의 이해를 돕기 위해, 논리적 블록 어드레스가 하나의 블록에 대응하는 것으로 설명하였으나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니다. 논리적 블록 어드레스들은 논리적인 순차성을 유지하면서, 하나의 블록 내의 순차적인 서브 블록들 또는 순차적인 프로그래밍 유닛들(예를 들어, 메모리 셀들에 프로그래밍이 수행되는 단위)에 각각 대응할 수 있다. 논리적 블록 어드레스 및 메모리 블록의 대응 관계는 본 개시가 속한 기술 분야의 통상의 기술자에 의해 다양하게 변형되어 실시될 수 있다.For better understanding of the present disclosure, it has been described that a logical block address corresponds to one block, but the scope of the present disclosure is not necessarily limited thereto. The logical block addresses may each correspond to sequential sub-blocks or sequential programming units (eg, units in which memory cells are programmed) within one block while maintaining logical sequence. The correspondence relationship between logical block addresses and memory blocks may be variously modified and implemented by a person skilled in the art to which the present disclosure belongs.

상술된 바와 같이, 본 개시의 실시 예들에 따르면, 스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)의 전체 영역에 대해 데이터를 관리하는 대신에, 존 단위로 데이터를 관리할 수 있다. 존 단위의 데이터 관리에 기초하여, 가비지 컬렉션(GC)에 의한 I/O 로드 감소 및 추가적인 읽기 동작 및 쓰기 동작의 감소에 따라, 스토리지 장치(100)의 데이터 처리 속도가 향상되고 전력 소모가 감소할 수 있다. 또한, 가비지 컬렉션(GC) 로드의 감소로 인해, 오버 프로비저닝(OP) 영역을 축소시킬 수 있으므로, 비-휘발성 메모리 장치(120)의 이용 가능한 스토리지 용량을 증가시킬 수 있다.As described above, according to example embodiments of the present disclosure, the storage controller 110 may manage data in units of zones instead of managing data in the entire area of the non-volatile memory device 120 . Based on zone-based data management, the data processing speed of the storage device 100 is improved and power consumption is reduced according to the reduction of I/O load by garbage collection (GC) and the reduction of additional read and write operations. can Also, since an over-provisioning (OP) area may be reduced due to a reduction in garbage collection (GC) load, the usable storage capacity of the non-volatile memory device 120 may be increased.

도 4는 본 개시의 일부 실시 예들에 따른 존의 상태들을 설명하는 도면이다. 도 1 및 도 4를 참조하면, ZNS 표준에 따른 스토리지 장치(100)의 존에 연관된 상태 머신이 설명된다.4 is a diagram illustrating states of zones according to some embodiments of the present disclosure. Referring to FIGS. 1 and 4 , a state machine associated with a zone of the storage device 100 according to the ZNS standard is described.

본 개시의 실시 예들에 따르면, 스토리지 장치(100)에 의해 관리되는 존들은 ZSE 상태, ZSIO 상태, ZSEO 상태, ZSC 상태, ZSF 상태 중 하나의 상태를 가질 수 있다. 스토리지 장치(100)가 호스트(11)로부터 수신된 요청을 처리함에 따라, 존의 상태가 변경될 수 있다.According to embodiments of the present disclosure, zones managed by the storage device 100 may have one of a ZSE state, a ZSIO state, a ZSEO state, a ZSC state, and a ZSF state. As the storage device 100 processes the request received from the host 11, the state of the zone may change.

ZSE 상태, 및 ZSF 상태는 논-액티브 상태로 분류될 수 있다. ZSIO 상태, ZSEO 상태, 및 ZSC 상태는 액티브 상태로 분류될 수 있다. 액티브 상태의 존들은 최대 액티브 리소스들 필드에 의해 제한될 수 있다. ZSIO 상태 및 ZSEO 상태는 오픈 상태로 분류될 수 있다. 오픈 상태의 존들은 최대 오픈 리소스들 필드에 의해 제한될 수 있다.ZSE state, and ZSF state can be classified as non-active state. ZSIO state, ZSEO state, and ZSC state can be classified as active states. Active zones may be limited by the Max Active Resources field. ZSIO state and ZSEO state can be classified as open state. Open state zones can be limited by the Max Open Resources field.

ZSE 상태는 엠티(Empty) 상태를 나타낼 수 있다. ZSE 상태에서, 메모리 블록들은 아직 데이터를 저장하지 않을 수 있고, 쓰기 포인터는 최하위 논리적 블록 어드레스(예를 들어, 존에 의해 관리되는 논리적 블록 어드레스들 중 가장 낮은 번호의 논리적 블록 어드레스)를 가리킬 수 있다. ZSE 상태의 쓰기 포인터는 유효할 수 있다. ZSE 상태는 ZSIO 상태, ZSEO 상태, ZSC 상태, 및 ZSF 상태 중 하나로 천이될 수 있다.The ZSE state may indicate an empty state. In the ZSE state, the memory blocks may not yet store data, and the write pointer may point to the lowest logical block address (eg, the lowest numbered logical block address of those managed by the zone). . A write pointer in ZSE state may be valid. ZSE state can transition to one of ZSIO state, ZSEO state, ZSC state, and ZSF state.

ZSIO 상태는 암시적으로 오픈된(implicitly opened) 상태를 나타낼 수 있다. ZSIO 상태는 호스트(11)로부터 수신된 쓰기 커맨드를 실행함으로써 암시적으로 오픈된 상태일 수 있다. ZSIO 상태에서, 메모리 블록은 쓰기 커맨드에 대응하는 데이터를 저장할 수 있다. ZSIO 상태는 ZSE 상태, ZSEO 상태, ZSC 상태, 및 ZSF 상태 중 하나로 천이될 수 있다. 오픈 리소스가 포화되면, ZSIO 상태는 클로즈(close) 커맨드가 없더라도 ZSC 상태로 천이될 수 있다.The ZSIO state may indicate an implicitly opened state. The ZSIO state may be implicitly opened by executing a write command received from the host 11 . In the ZSIO state, the memory block may store data corresponding to a write command. ZSIO state can transition to one of ZSE state, ZSEO state, ZSC state, and ZSF state. When the open resource is saturated, the ZSIO state may transition to the ZSC state even if there is no close command.

ZSEO 상태는 명시적으로 오픈된(explicitly opened) 상태를 나타낼 수 있다. ZSEO 상태는 호스트(11)로부터 수신된 오픈 커맨드를 실행함으로써 명시적으로 오픈된 상태일 수 있다. ZSEO 상태에서, 메모리 블록은 후속적으로 쓰기 커맨드를 수신한 후에, 쓰기 커맨드에 대응하는 데이터를 저장할 수 있다. ZSEO 상태는 ZSE 상태, ZSC 상태, 및 ZSF 상태 중 하나로 천이될 수 있다. ZSEO 상태는 ZSIO 상태보다 오픈 리소스에 대한 우선순위가 높을 수 있다. ZSEO 상태는 클로즈 커맨드에 의해서만, ZSC 상태로 천이될 수 있다.The ZSEO state may indicate an explicitly opened state. The ZSEO state may be explicitly opened by executing an open command received from the host 11 . In the ZSEO state, the memory block may subsequently receive a write command and then store data corresponding to the write command. ZSEO state can transition to one of ZSE state, ZSC state, and ZSF state. ZSEO status may have higher priority for open resources than ZSIO status. The ZSEO state may be transitioned to the ZSC state only by a close command.

ZSC 상태는 클로즈된(closed) 상태를 나타낼 수 있다. ZSE 상태에서 이용 가능한 액티브 리소스들이 존재하고 설정 존 디스크립터 확장(set zone descriptor extension) 커맨드를 수신하거나, ZSIO 상태에서 클로즈 커맨드를 수신 또는 오픈 리소스가 포화되거나, 또는 ZSEO 상태에서 클로즈 커맨드를 수신함으로써, ZSC 상태에 진입할 수 있다. ZSC 상태에서, 메모리 블록은 쓰기 커맨드에 대응하는 데이터를 저장할 수 없다. ZSC 상태는 ZSE 상태, ZSIO 상태, ZSEO 상태, 및 ZSF 상태 중 하나로 천이될 수 있다.The ZSC state may indicate a closed state. By receiving a set zone descriptor extension command when there are active resources available in ZSE state, or by receiving a close command or open resources are saturated in ZSIO state, or by receiving a close command in ZSEO state, ZSC state can be entered. In the ZSC state, a memory block cannot store data corresponding to a write command. The ZSC state may transition to one of the ZSE state, ZSIO state, ZSEO state, and ZSF state.

ZSF 상태는 풀(Full) 상태를 나타낼 수 있다. ZSE 상태에서, 메모리 블록들은 저장된 데이터에 의해 가득 채워질 수 있고, 쓰기 포인터는 최상위 논리적 블록 어드레스(예를 들어, 존에 의해 관리되는 논리적 블록 어드레스들 중 가장 높은 번호의 논리적 블록 어드레스)를 가리킬 수 있다. ZSF 상태의 쓰기 포인터는 유효하지 않을 수 있다. ZSF 상태는 리셋 존(reset zone) 커맨드에 의해 ZSE 상태로 천이될 수 있다.The ZSF state may indicate a full state. In the ZSE state, memory blocks may be full by stored data, and the write pointer may point to a top-level logical block address (eg, the highest-numbered logical block address of those managed by the zone). . Write pointers in ZSF state may be invalid. The ZSF state may be transitioned to the ZSE state by a reset zone command.

도 5는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 장치의 동작 방법을 설명하는 도면이다. 도 1 및 도 5를 참조하면, 스토리지 장치(100)의 타겟 존에 제1 타입의 메모리 블록(T1_BLK)을 할당하는 메모리 블록 할당 동작이 도시된다. 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120) 각각은 도 1의 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)에 대응할 수 있다.FIG. 5 is a diagram illustrating an operating method of the storage device of FIG. 1 according to some embodiments of the present disclosure. Referring to FIGS. 1 and 5 , a memory block allocation operation of allocating a first type memory block T1_BLK to a target zone of the storage device 100 is illustrated. The storage controller 110 and the non-volatile memory device 120 may respectively correspond to the storage controller 110 and the non-volatile memory device 120 of FIG. 1 .

스토리지 컨트롤러(110)은 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)을 포함할 수 있다. ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113) 각각은 도 1의 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)에 대응할 수 있다.The storage controller 110 may include a ZNS table 111 , a zone state manager 112 , and a block allocation unit 113 . Each of the ZNS table 111, zone state manager 112, and block allocation unit 113 may correspond to the ZNS table 111, zone state manager 112, and block allocation unit 113 of FIG.

도 5에 도시된 ZNS 테이블(111)의 상태 정보를 참조하면, 제1 내지 제4 존들(Z1~Z4) 각각은 풀 상태일 수 있다. 또한, ZNS 테이블(111)의 블록 할당 정보를 참조하면, 제1 존(Z1)에 제6 블록(BLK6)이 할당되고, 제2 존(Z2)에 제7 블록(BLK7)이 할당되고, 제3 존(Z3)에 제8 블록(BLK8)이 할당되고, 그리고 제4 존(Z4)에 제9 블록(BLK9)이 할당될 수 있다. Referring to state information of the ZNS table 111 shown in FIG. 5 , each of the first to fourth zones Z1 to Z4 may be in a full state. Also, referring to the block allocation information of the ZNS table 111, the sixth block BLK6 is allocated to the first zone Z1, the seventh block BLK7 is allocated to the second zone Z2, and An eighth block BLK8 may be allocated to the third zone Z3, and a ninth block BLK9 may be allocated to the fourth zone Z4.

도 5에 도시된 비-휘발성 메모리 장치(120)를 참조하면, 제1 내지 제10 블록들(BLK1~BLK10)이 도시된다. 제1 내지 제5 블록들(BLK1~BLK5)은 제1 타입의 메모리 블록(T1_BLK)일 수 있다. 제6 내지 제10 블록들(BLK6~BLK10)은 제2 타입의 메모리 블록(T2_BLK)일 수 있다.Referring to the non-volatile memory device 120 shown in FIG. 5 , first to tenth blocks BLK1 to BLK10 are shown. The first to fifth blocks BLK1 to BLK5 may be a first type memory block T1_BLK. The sixth to tenth blocks BLK6 to BLK10 may be a second type memory block T2_BLK.

이하에서, 본 개시의 일부 실시 예들에 따라, 타겟 존에 제1 타입의 메모리 블록(T1_BLK)을 할당하는 스토리지 장치(100)의 동작 방법이 설명된다. Hereinafter, an operating method of the storage device 100 for allocating a first type memory block T1_BLK to a target zone according to some embodiments of the present disclosure will be described.

제1 동작(①)에서, 존 상태 관리자(112)는 호스트(11)로부터 제1 요청(RQ1)을 수신할 수 있다. 제1 요청(RQ1)은 커맨드(CMD), 및 어드레스(ADD)를 포함할 수 있다. 커맨드(CMD)는 타겟 존의 상태를 제1 상태로 설정하는 명령어일 수 있다. 제1 상태는 도 4에 도시된 액티브 상태일 수 있다. 예를 들어, 커맨드(CMD)는 타겟 존의 상태를 ZSE 상태에서 ZSIO 상태, ZSEO 상태, 및 ZSC 상태 중 하나로 천이하는 명령어일 수 있다.In a first operation (①), the zone state manager 112 may receive a first request RQ1 from the host 11 . The first request RQ1 may include a command CMD and an address ADD. The command CMD may be a command for setting the state of the target zone to the first state. The first state may be an active state shown in FIG. 4 . For example, the command CMD may be a command for transitioning the state of the target zone from a ZSE state to one of a ZSIO state, a ZSEO state, and a ZSC state.

존 상태 관리자(112)는 어드레스(ADD)에 기초하여, 복수의 존들 중 타겟 존을 결정할 수 있다. 예를 들어, 존 상태 관리자(112)는 어드레스(ADD)에 기초하여, 제5 존(Z5)을 타겟 존으로 결정할 수 있다. The zone state manager 112 may determine a target zone among a plurality of zones based on the address ADD. For example, the zone state manager 112 may determine the fifth zone Z5 as the target zone based on the address ADD.

제2 동작(②)에서, 존 상태 관리자(112)는 제1 요청(RQ1)에 기초하여 타겟 존의 상태를 업데이트할 수 있다. 존 상태 관리자(112)는 업데이트된 상태에 기초하여 ZNS 테이블(111)의 상태 정보를 업데이트할 수 있다. 예를 들어, 존 상태 관리자(112)는 제1 요청(RQ1)에 기초하여, 제5 존(Z5)의 상태를 엠티 상태에서 액티브 상태로 업데이트할 수 있다. In the second operation (②), the zone state manager 112 may update the state of the target zone based on the first request RQ1. The zone state manager 112 may update state information of the ZNS table 111 based on the updated state. For example, the zone state manager 112 may update the state of the fifth zone Z5 from an empty state to an active state based on the first request RQ1.

제3 동작(③)에서, 존 상태 관리자(112)는 블록 할당 유닛(113)에게 블록 할당 동작을 요청할 수 있다. 존 상태 관리자(112)는 타겟 존의 업데이트된 상태가 액티브 상태이면, 타겟 존에 제1 타입의 메모리 블록(T1_BLK)의 할당을 가리키는 요청을 블록 할당 유닛(113)으로 전송할 수 있다.In the third operation ③, the zone state manager 112 may request a block allocation operation from the block allocation unit 113. If the updated state of the target zone is an active state, the zone state manager 112 may transmit a request indicating allocation of the first type memory block T1_BLK to the target zone to the block assignment unit 113 .

제4 동작(④)에서, 블록 할당 유닛(113)은 액티브 상태로 업데이트된 타겟 존에 제1 타입의 메모리 블록(T1_BLK)을 할당할 수 있다. 블록 할당 유닛(113)은 타겟 존의 블록 할당 정보를 업데이트할 수 있다. In the fourth operation (④), the block allocation unit 113 may allocate the first type memory block T1_BLK to the target zone updated to an active state. The block allocation unit 113 may update block allocation information of the target zone.

예를 들어, 블록 할당 유닛(113)은 제5 존(Z5)에 제1 타입의 메모리 블록(T1_BLK)인 제1 블록(BLK1)을 할당할 수 있다. 블록 할당 유닛(113)은 ZNS 테이블(111)의 제5 존(Z5)의 블록 할당 정보를 '없음(None)'에서 제1 블록(BLK)으로 업데이트할 수 있다. For example, the block allocation unit 113 may allocate the first block BLK1, which is the first type memory block T1_BLK, to the fifth zone Z5. The block allocation unit 113 may update block allocation information of the fifth zone Z5 of the ZNS table 111 from 'None' to the first block BLK.

제5 동작(⑤)에서, 블록 할당 유닛(113)은 버퍼 메모리(114a)에 제1 요청(RQ1)을 수행하도록 요청할 수 있다. 제6 동작(⑥)에서, 버퍼 메모리(114a)는 제5 존(Z5)에 할당된 제1 블록(BLK1)에 제1 요청(RQ1)에 대응하는 타겟 데이터를 저장할 수 있다. In the fifth operation (⑤), the block allocation unit 113 may request the buffer memory 114a to perform the first request RQ1. In the sixth operation (⑥), the buffer memory 114a may store target data corresponding to the first request RQ1 in the first block BLK1 allocated to the fifth zone Z5.

도 6은 본 개시의 일부 실시 예들에 따라 존에 제1 타입의 메모리 블록을 할당하는 동작을 설명하는 도면이다. 도 6을 참조하면, 존이 액티브 상태로 업데이트된 경우의 논리 영역 및 물리 영역이 도시된다.6 is a diagram illustrating an operation of allocating a first type of memory block to a zone according to some embodiments of the present disclosure. Referring to FIG. 6 , a logical area and a physical area when a zone is updated to an active state are shown.

논리 영역을 참조하면, 제1 내지 제5 존들(Z1~Z5)이 도시되고, 물리 영역을 참조하면, 제1 내지 제10 블록들(BLK1~BLK10)이 도시된다. 제1 내지 제5 블록들(BLK1~BLK5)은 제1 타입의 메모리 블록(T1_BLK)일 수 있다. 제6 내지 제10 블록들(BLK6~BLK10)은 제2 타입의 메모리 블록(T2_BLK)일 수 있다.Referring to the logical area, first to fifth zones Z1 to Z5 are shown, and referring to the physical area, first to tenth blocks BLK1 to BLK10 are shown. The first to fifth blocks BLK1 to BLK5 may be a first type memory block T1_BLK. The sixth to tenth blocks BLK6 to BLK10 may be a second type memory block T2_BLK.

일부 실시 예들에서, 메모리 블록의 타입에 따라, 1개의 존에 할당되는 메모리 블록들의 개수가 달라질 수 있다. 예를 들어, 메모리 블록이 SLC 메모리 블록이면 1개의 존에 4개의 SLC 메모리 블록들이 할당될 수 있다. 메모리 블록이 MLC 메모리 블록이면 1개의 존에 2개의 MLC 메모리 블록들이 할당될 수 있다. 메모리 블록이 QLC 메모리 블록이면 1개의 존에 1개의 QLC 메모리 블록이 할당될 수 있다.In some embodiments, the number of memory blocks allocated to one zone may vary according to the type of memory block. For example, if the memory block is an SLC memory block, four SLC memory blocks may be allocated to one zone. If the memory block is an MLC memory block, two MLC memory blocks may be allocated to one zone. If the memory block is a QLC memory block, one QLC memory block may be allocated to one zone.

일부 실시 예들에서, 제1 타입의 메모리 블록(T1_BLK)이 SLC 메모리 블록이면, 1개의 존에 4개의 제1 타입의 메모리 블록(T1_BLK)들이 할당될 수 있다. 즉, 제5 존(Z5)에 제1 내지 제4 블록들(BLK1~BLK4)이 할당될 수 있다. 이때 스토리지 컨트롤러의 쓰기 동작은 제1 내지 제4 블록들(BLK1~BLK4)에 순차적으로 수행될 수 있다.In some embodiments, when the first type memory block T1_BLK is an SLC memory block, four first type memory blocks T1_BLK may be allocated to one zone. That is, the first to fourth blocks BLK1 to BLK4 may be allocated to the fifth zone Z5. In this case, the write operation of the storage controller may be sequentially performed on the first to fourth blocks BLK1 to BLK4.

제2 타입의 메모리 블록(T2_BLK)이 QLC 메모리 블록이면, 1개의 존에 1개의 제2 타입의 메모리 블록(T2_BLK)이 할당될 수 있다. 즉, 제1 존(Z1)에 제6 블록(BLK6)이 할당되고, 제2 존(Z2)에 제7 블록(BLK7)이 할당되고, 제3 존(Z3)에 제8 블록(BLK8)이 할당되고, 그리고 제4 존(Z4)에 제9 블록(BLK9)이 할당될 수 있다.If the second type memory block T2_BLK is a QLC memory block, one second type memory block T2_BLK may be allocated to one zone. That is, the sixth block BLK6 is allocated to the first zone Z1, the seventh block BLK7 is allocated to the second zone Z2, and the eighth block BLK8 is allocated to the third zone Z3. and the ninth block BLK9 may be allocated to the fourth zone Z4.

도 7은 본 개시의 일부 실시 예들에 따라 존에 제1 타입의 메모리 블록을 할당하는 동작을 도시하는 순서4개의 제1 타입의 메모리 블록(T1_BLK)들에 도이다. 도 5 및 도 7을 참조하면, 스토리지 컨트롤러(110)의 액티브 상태로 업데이트된 존에 대해 메모리 블록을 할당하는 동작이 도시된다. 스토리지 컨트롤러(110)는 도 5의 스토리지 컨트롤러(110)와 대응할 수 있다.FIG. 7 is a diagram of four first-type memory blocks T1_BLK in order illustrating an operation of allocating a first-type memory block to a zone according to some embodiments of the present disclosure. Referring to FIGS. 5 and 7 , an operation of allocating a memory block for a zone updated in an active state of the storage controller 110 is illustrated. The storage controller 110 may correspond to the storage controller 110 of FIG. 5 .

S110 단계에서, 스토리지 컨트롤러(110)는 호스트로부터 제1 요청(RQ1)을 수신할 수 있다. 제1 요청(RQ1)은 커맨드(CMD), 및 어드레스(ADD)를 포함할 수 있다. 스토리지 컨트롤러(110)는 어드레스(ADD)에 기초하여, 할당 동작의 대상이 되는 타겟 존을 결정할 수 있다. In operation S110 , the storage controller 110 may receive a first request RQ1 from the host. The first request RQ1 may include a command CMD and an address ADD. The storage controller 110 may determine a target zone to which an allocation operation is performed based on the address ADD.

S120 단계에서, 제1 요청(RQ1)에 기초하여, 스토리지 컨트롤러(110)는 타겟 존의 상태를 엠티 상태에서 액티브 상태로 업데이트할 수 있다. In step S120 , based on the first request RQ1 , the storage controller 110 may update the state of the target zone from an empty state to an active state.

S130 단계에서, 스토리지 컨트롤러(110)는 액티브 상태로 업데이트된 타겟 존에 제1 타입의 메모리 블록(T1_BLK)을 할당할 수 있다. 스토리지 컨트롤러(110)는 타겟 존에 제1 타입의 메모리 블록(T1_BLK)인 제1 블록(BLK1)을 할당할 수 있다. 예를 들어, 제1 타입의 메모리 블록(T1_BLK)은 SLC 메모리 블록일 수 있다. In operation S130 , the storage controller 110 may allocate the first type memory block T1_BLK to the target zone updated to an active state. The storage controller 110 may allocate a first block BLK1 that is a first type memory block T1_BLK to the target zone. For example, the first type memory block T1_BLK may be an SLC memory block.

일부 실시 예들에서, S130 단계는 스토리지 컨트롤러(110)가 타겟 존에 제1 타입의 메모리 블록(T1_BLK)인 제2 내지 제4 블록들(BLK2~BLK4)을 할당하는 단계를 더 포함할 수 있다. 스토리지 컨트롤러(110)는 타겟 존에 제1 내지 제4 블록들(BLK1~BLK4)을 순차적으로 할당할 수 있다. In some embodiments, operation S130 may further include allocating, by the storage controller 110, second to fourth blocks BLK2 to BLK4 that are the first type memory block T1_BLK to the target zone. The storage controller 110 may sequentially allocate the first to fourth blocks BLK1 to BLK4 to the target zone.

S140 단계에서, 스토리지 컨트롤러(110)는 할당된 제1 타입의 메모리 블록(T1_BLK)에 데이터를 저장할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제1 타입의 메모리 블록(T1_BLK)인 제1 블록(BLK)에 데이터를 저장할 수 있다.In step S140, the storage controller 110 may store data in the allocated first type memory block T1_BLK. For example, the storage controller 110 may store data in a first block BLK that is a first type memory block T1_BLK.

일부 실시 예들에서, 스토리지 컨트롤러(110)가 타겟 존에 제1 타입의 메모리 블록(T1_BLK)인 제1 내지 제4 블록들(BLK1~BLK4)을 순차적으로 할당하면, S140 단계는 타겟 데이터를 순차적으로 제1 내지 제4 블록들(BLK1~BLK4)에 저장하는 단계를 포함할 수 있다.In some embodiments, when the storage controller 110 sequentially allocates the first to fourth blocks BLK1 to BLK4, which are the first type memory block T1_BLK, to the target zone, step S140 sequentially allocates the target data. A step of storing the first to fourth blocks BLK1 to BLK4 may be included.

도 8은 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 장치의 동작 방법을 설명하는 도면이다. 도 1 및 도 8를 참조하면, 스토리지 장치(100)의 타겟 존에 제2 타입의 메모리 블록(T2_BLK)을 할당하는 메모리 블록 할당 동작이 도시된다.FIG. 8 is a diagram illustrating an operating method of the storage device of FIG. 1 according to some embodiments of the present disclosure. Referring to FIGS. 1 and 8 , a memory block allocation operation of allocating a second type memory block T2_BLK to a target zone of the storage device 100 is illustrated.

스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120) 각각은 도 1의 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)에 대응할 수 있다.The storage controller 110 and the non-volatile memory device 120 may respectively correspond to the storage controller 110 and the non-volatile memory device 120 of FIG. 1 .

스토리지 컨트롤러(110)는 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)을 포함할 수 있다. ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113) 각각은 도 1의 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)에 대응할 수 있다.The storage controller 110 may include a ZNS table 111 , a zone state manager 112 , and a block allocation unit 113 . Each of the ZNS table 111, zone state manager 112, and block allocation unit 113 may correspond to the ZNS table 111, zone state manager 112, and block allocation unit 113 of FIG.

일부 실시 예들에서, 도 8에 도시된 스토리지 장치(100)의 동작 방법은 도 5에 도시된 스토리지 장치(100)의 동작 방법 이후에 수행될 수 있다. 즉, 제1 요청(RQ1)에 기초하여 타겟 존에 제1 타입의 메모리 블록(T1_BLK1)을 할당하고, 할당된 제1 타입의 메모리 블록(T1_BLK1)에 타겟 데이터를 저장한 이후에, 스토리지 컨트롤러(110)는 호스트(11)로부터 제2 요청(RQ2)을 수신할 수 있다. In some embodiments, the method of operating the storage device 100 illustrated in FIG. 8 may be performed after the method of operating the storage device 100 illustrated in FIG. 5 . That is, after allocating the first type memory block T1_BLK1 to the target zone based on the first request RQ1 and storing target data in the allocated first type memory block T1_BLK1, the storage controller ( 110 may receive a second request RQ2 from the host 11 .

이하에서, 본 개시의 일부 실시 예들에 따라, 타겟 존에 제1 타입의 메모리 블록(T1_BLK1)이 할당된 이후에, 타겟 존에 제2 타입의 메모리 블록(T2_BLK)을 할당하는 스토리지 장치(100)의 동작 방법이 설명된다. Hereinafter, according to some embodiments of the present disclosure, after the first type memory block T1_BLK1 is allocated to the target zone, the storage device 100 allocates a second type memory block T2_BLK to the target zone. The operation method of is described.

제1 동작(①)에서, 존 상태 관리자(112)는 호스트(11)로부터 제2 요청(RQ2)을 수신할 수 있다. 제2 요청(RQ2)은 커맨드(CMD), 및 어드레스(ADD)를 포함할 수 있다. 커맨드(CMD)는 타겟 존의 상태를 액티브 상태에서 풀 상태로 업데이트하는 명령어일 수 있다. 풀 상태는 도 4에 도시된 풀 상태일 수 있다. 예를 들어, 커맨드(CMD)는 타겟 존의 상태를 ZSIO 상태, ZSEO 상태, 및 ZSC 상태 중 적어도 하나에서 ZSF로 천이하는 명령어일 수 있다. In the first operation (①), the zone state manager 112 may receive a second request RQ2 from the host 11 . The second request RQ2 may include a command CMD and an address ADD. The command CMD may be a command for updating the state of the target zone from an active state to a full state. The pull state may be the pull state shown in FIG. 4 . For example, the command CMD may be a command for transitioning the state of the target zone from at least one of a ZSIO state, a ZSEO state, and a ZSC state to ZSF.

존 상태 관리자(112)는 어드레스(ADD)에 기초하여, 복수의 존들 중 타겟 존을 결정할 수 있다. 예를 들어, 존 상태 관리자(112)는 어드레스(ADD)에 기초하여, 제5 존(Z5)을 타겟 존으로 결정할 수 있다. The zone state manager 112 may determine a target zone among a plurality of zones based on the address ADD. For example, the zone state manager 112 may determine the fifth zone Z5 as the target zone based on the address ADD.

제2 동작(②)에서, 존 상태 관리자(112)는 제2 요청(RQ2)에 기초하여 타겟 존의 상태를 업데이트할 수 있다. 존 상태 관리자(112)는 업데이트된 상태에 기초하여 ZNS 테이블(111)의 상태 정보를 업데이트할 수 있다. 예를 들어, 존 상태 관리자(112)는 제2 요청(RQ2)에 기초하여, 제5 존(Z5)의 상태를 액티브 상태에서 풀 상태로 업데이트할 수 있다. In the second operation (②), the zone state manager 112 may update the state of the target zone based on the second request RQ2. The zone state manager 112 may update state information of the ZNS table 111 based on the updated state. For example, the zone state manager 112 may update the state of the fifth zone Z5 from an active state to a full state based on the second request RQ2.

제3 동작(③)에서, 존 상태 관리자(112)는 블록 할당 유닛(113)에게 블록 할당 동작을 요청할 수 있다. 존 상태 관리자(112)는 타겟 존의 업데이트된 상태가 풀 상태이면, 타겟 존에 제2 타입의 메모리 블록(T2_BLK)의 할당을 가리키는 요청을 블록 할당 유닛(113)으로 전송할 수 있다.In the third operation ③, the zone state manager 112 may request a block allocation operation from the block allocation unit 113. If the updated state of the target zone is the full state, the zone state manager 112 may transmit a request indicating allocation of the second type memory block T2_BLK to the target zone to the block assignment unit 113 .

제4 동작(④)에서, 블록 할당 유닛(113)은 풀 상태로 업데이트된 타겟 존에 제2 타입의 메모리 블록(T2_BLK)을 할당할 수 있다. 일부 실시 예들에서, 블록 할당 유닛(113)은 ZNS 테이블(111)을 참조하여, 제2 타입의 메모리 블록(T2_BLK)인 복수의 메모리 블록들 중에서, 타겟 존에 할당할 메모리 블록을 결정할 수 있다.In the fourth operation (④), the block allocation unit 113 may allocate the second type memory block T2_BLK to the target zone updated to a full state. In some embodiments, the block allocation unit 113 may refer to the ZNS table 111 to determine a memory block to be allocated to the target zone from among a plurality of memory blocks that are the second type memory blocks T2_BLK.

예를 들어, 블록 할당 유닛(113)은 ZNS 테이블(111)을 참조하여, 제1 내지 제4 존들(Z1~Z4)의 블록 할당 정보를 확인할 수 있다. 블록 할당 유닛(113)은 제1 내지 제4 존들(Z1~Z4) 각각에 제6 내지 제9 블록들(BLK6~BL9)이 할당된 것에 기초하여, 제5 존(Z5)에 제9 블록(BLK9)과 물리적으로 순차적인 제10 블록(BLK10)을 할당할 수 있다. For example, the block allocation unit 113 may check block allocation information of the first to fourth zones Z1 to Z4 by referring to the ZNS table 111 . The block allocation unit 113 assigns the ninth block (BLK6 to BL9) to the fifth zone Z5 based on the allocation of the sixth to ninth blocks BLK6 to BL9 to the first to fourth zones Z1 to Z4, respectively. BLK9) and a physically sequential tenth block BLK10 may be allocated.

블록 할당 유닛(113)은 ZNS 테이블(111)의 타겟 존의 블록 할당 정보를 업데이트할 수 있다. The block allocation unit 113 may update block allocation information of the target zone in the ZNS table 111 .

예를 들어, 블록 할당 유닛(113)은 제5 존(Z5)에 제2 타입의 메모리 블록(T2_BLK)인 제10 블록(BLK10)을 할당할 수 있다. 블록 할당 유닛(113)은 ZNS 테이블(111)의 제5 존(Z5)의 블록 할당 정보를 제1 블록(BLK1)에서 제10 블록(BLK10)으로 업데이트할 수 있다. For example, the block allocation unit 113 may allocate the tenth block BLK10, which is the second type memory block T2_BLK, to the fifth zone Z5. The block allocation unit 113 may update block allocation information of the fifth zone Z5 of the ZNS table 111 from the first block BLK1 to the tenth block BLK10.

제5 동작(⑤)에서, 블록 할당 유닛(113)은 버퍼 메모리(114a)에 제2 요청(RQ2)을 수행하도록 요청할 수 있다. 제6 동작(⑥)에서, 버퍼 메모리(114a)는 제1 블록(BLK1)에 저장된 타겟 데이터를 제10 블록(BLK10)으로 이동할 수 있다. 일부 실시 예들에서, 버퍼 메모리(114a)는 제1 블록(BLK1)에 저장된 타겟 데이터를 제10 블록(BLK10)으로 복사할 수 있다. 블록 할당 유닛(113)은 제1 블록(BLK1)에 저장된 타겟 데이터를 제10 블록(BLK10)으로 복사한 후, 제1 블록(BLK1)을 폐기할 수 있다. In the fifth operation (⑤), the block allocation unit 113 may request the buffer memory 114a to perform the second request RQ2. In the sixth operation (⑥), the buffer memory 114a may move the target data stored in the first block BLK1 to the tenth block BLK10. In some embodiments, the buffer memory 114a may copy the target data stored in the first block BLK1 to the tenth block BLK10. The block allocation unit 113 may discard the first block BLK1 after copying the target data stored in the first block BLK1 to the tenth block BLK10.

상술된 바와 같이, 쓰기 완료된 데이터는 대용량 메모리 블록인 제2 타입의 메모리 블록(T2_BLK)에서 관리하고, 쓰기 처리 중인 데이터는 고-신뢰성 메모리 블록인 제1 타입의 메모리 블록(T1_BLK)에서 관리함으로써, 스토리지 장치(100)의 쓰기 동작의 신뢰성이 보장될 수 있다. 또한 스토리 장치(100)는 대용량 데이터를 효율적으로 관리할 수 있다.As described above, data that has been written is managed in the second type memory block T2_BLK, which is a large-capacity memory block, and data in the process of being written is managed in the first type memory block T1_BLK, which is a high-reliability memory block. Reliability of a write operation of the storage device 100 may be guaranteed. Also, the story device 100 can efficiently manage large amounts of data.

도 8은 스토리지 컨트롤러(110)가 제1 요청에 따라 타겟 데이터를 타겟 존에 할당된 제1 타입의 메모리 블록(T1_BLK1)에 저장한 이후, 스토리지 컨트롤러(110)가 호스트(11)로부터 제2 요청(RQ2)을 수신한 것에 기초하여, 타겟 존의 상태를 풀 상태로 업데이트하는 실시 예를 설명했으나, 본 개시는 이에 제한되지 아니한다.8 shows that the storage controller 110 receives a second request from the host 11 after the storage controller 110 stores target data in the first type memory block T1_BLK1 allocated to the target zone according to the first request. An embodiment of updating the state of the target zone to a full state based on receiving (RQ2) has been described, but the present disclosure is not limited thereto.

일부 실시 예들에서, 제1 요청에 따라 버퍼 메모리(114a)가 타겟 데이터를 타겟 존에 할당된 제1 타입의 메모리 블록(T1_BLK)에 저장하면, 블록 할당 유닛(113)은 타겟 존에 할당된 제1 타입의 메모리 블록(T1_BLK)에 잔여 용량이 있는지 결정할 수 있다. In some embodiments, when the buffer memory 114a stores the target data in the first type memory block T1_BLK allocated to the target zone according to the first request, the block allocation unit 113 stores the target data allocated to the target zone. It may be determined whether there is remaining capacity in the type 1 memory block T1_BLK.

타겟 존에 할당된 제1 타입의 메모리 블록(T1_BLK)에 잔여 용량이 없는 것으로 결정되면, 블록 할당 유닛(113)은 제2 타입의 메모리 블록(T2_BLK)을 타겟 존에 할당할 수 있다. 블록 할당 유닛(113)은 버퍼 메모리(114a)가 제1 타입의 메모리 블록(T1_BLK)에 저장된 타겟 데이터를 제2 타입의 메모리 블록(T2_BLK)으로 이동하도록 요청할 수 있다. When it is determined that there is no remaining capacity in the first type memory block T1_BLK allocated to the target zone, the block allocation unit 113 may allocate the second type memory block T2_BLK to the target zone. The block allocation unit 113 may request the buffer memory 114a to move the target data stored in the first type memory block T1_BLK to the second type memory block T2_BLK.

예를 들어, 제1 요청에 따라 버퍼 메모리(114a)가 타겟 데이터를 타겟 존에 할당된 제1 내지 제4 블록들(BLK1~BLK4)에 저장하면, 블록 할당 유닛(113)은 제1 내지 제4 블록들(BLK1~BLK4)에 잔여 용량이 있는지 결정할 수 있다. 제1 내지 제4 블록들(BLK1~BLK4)에 잔여 용량이 없는 것으로 결정되면, 블록 할당 유닛(113)은 제2 타입의 메모리 블록(T2_BLK)인 제10 블록(BLK10)을 타겟 존에 할당할 수 있다. 블록 할당 유닛(113)은 버퍼 메모리(114a)가 제1 내지 제4 블록들(BLK1~BLK4)에 저장된 타겟 데이터를 제10 블록(BLK10)으로 이동하도록 요청할 수 있다.For example, when the buffer memory 114a stores target data in the first to fourth blocks BLK1 to BLK4 allocated to the target zone according to the first request, the block allocation unit 113 performs the first to fourth blocks. It may be determined whether there is remaining capacity in the 4 blocks BLK1 to BLK4. When it is determined that there is no remaining capacity in the first to fourth blocks BLK1 to BLK4, the block allocation unit 113 allocates the tenth block BLK10, which is the second type memory block T2_BLK, to the target zone. can The block allocation unit 113 may request the buffer memory 114a to move the target data stored in the first to fourth blocks BLK1 to BLK4 to the tenth block BLK10.

상술된 바와 같이, 스토리지 장치(100)는 쓰기 동작이 완료된 후에, 신뢰성이 높은 제1 타입의 메모리 블록(T1_BLK)에 저장된 데이터를 신뢰성이 낮은 제2 타입의 메모리 블록(T2_BLK)에 이동할 수 있다. 즉, 스토리지 장치(100)는 신뢰성이 높은 메모리 블록에서 쓰기 동작을 수행하는 것을 보장함으로써, 파워-오프가 발생하더라도 적은 리소스의 양으로 복구 가능하다. 스토리지 장치(100)는 효율적인 리소스 사용이 가능하고, 스토리지 장치(100)의 성능이 향상될 수 있다. As described above, after the write operation is completed, the storage device 100 may move the data stored in the first type memory block T1_BLK with high reliability to the second type memory block T2_BLK with low reliability. That is, the storage device 100 guarantees that a write operation is performed on a highly reliable memory block, so that even if power-off occurs, recovery is possible with a small amount of resources. The storage device 100 can use resources efficiently, and performance of the storage device 100 can be improved.

도 9는 본 개시의 일부 실시 예들에 따라 존에 제2 타입의 메모리 블록을 할당하는 동작을 설명하는 도면이다. 도 9을 참조하면, 존이 풀 상태일 경우의 물리 영역이 도시된다.9 is a diagram illustrating an operation of allocating a second type memory block to a zone according to some embodiments of the present disclosure. Referring to FIG. 9 , a physical area when a zone is in a full state is shown.

스토리지 컨트롤러(110)가 제2 요청(RQ2)에 따른 블록 할당 동작을 수행하기 전의 물리 영역을 참조하면, 제5 존(Z5)에 제1 내지 제4 블록들(BLK1~BLK4)이 할당되고, 제1 존(Z1)에 제6 블록(BLK6)이 할당되고, 제2 존(Z2)에 제7 블록(BLK7)이 할당되고, 제3 존(Z3)에 제8 블록(BLK8)이 할당되고, 그리고 제4 존(Z4)에 제9 블록(BLK9)이 할당될 수 있다.Referring to the physical area before the storage controller 110 performs the block allocation operation according to the second request RQ2, the first to fourth blocks BLK1 to BLK4 are allocated to the fifth zone Z5, The sixth block BLK6 is allocated to the first zone Z1, the seventh block BLK7 is allocated to the second zone Z2, and the eighth block BLK8 is allocated to the third zone Z3. , and the ninth block BLK9 may be allocated to the fourth zone Z4.

스토리지 컨트롤러(110)가 제2 요청(RQ2)에 따른 블록 할당 동작을 수행한 후의 물리 영역을 참조하면, 제5 존(Z5)에 제10 블록(BLK10)이 할당될 수 있다. 일부 실시 예들에서, 제1 타입의 메모리 블록(T1_BLK)은 QLC 메모리 블록이고, 제2 타입의 메모리 블록(T2_BLK)은 SLC 메모리 블록이면, 제1 내지 제4 블록들(BLK1~BLK4)에 저장된 타겟 데이터는 순차적으로 제10 블록(BLK10)으로 이동될 수 있다. Referring to the physical area after the storage controller 110 performs the block allocation operation according to the second request RQ2, the tenth block BLK10 may be allocated to the fifth zone Z5. In some embodiments, if the first type memory block T1_BLK is a QLC memory block and the second type memory block T2_BLK is an SLC memory block, the target stored in the first to fourth blocks BLK1 to BLK4 Data may be sequentially moved to the tenth block BLK10.

도 10은 본 개시의 일부 실시 예들에 따라 존에 제2 타입의 메모리 블록을 할당하는 동작을 도시하는 순서도이다. 도 8 및 도 10을 참조하면, 스토리지 컨트롤러(110)의 풀 상태로 업데이트된 존에 대해 메모리 블록을 할당하는 동작이 도시된다. 스토리지 컨트롤러(110)는 도 8의 스토리지 컨트롤러(110)와 대응할 수 있다. 10 is a flowchart illustrating an operation of allocating a second type of memory block to a zone according to some embodiments of the present disclosure. Referring to FIGS. 8 and 10 , an operation of allocating a memory block for a zone updated to a full state of the storage controller 110 is illustrated. The storage controller 110 may correspond to the storage controller 110 of FIG. 8 .

S210 단계에서, 스토리지 컨트롤러(110)는 호스트로부터 제2 요청(RQ2)을 수신할 수 있다. 제2 요청(RQ2)은 커맨드(CMD), 및 어드레스(ADD)를 포함할 수 있다. 스토리지 컨트롤러(110)는 어드레스(ADD)에 기초하여, 할당 동작의 대상이 되는 타겟 존을 결정할 수 있다. In step S210 , the storage controller 110 may receive a second request RQ2 from the host. The second request RQ2 may include a command CMD and an address ADD. The storage controller 110 may determine a target zone to which an allocation operation is performed based on the address ADD.

S220 단계에서, 제2 요청(RQ2)에 기초하여, 스토리지 컨트롤러(110)는 타겟 존의 상태를 액티브 상태에서 풀 상태로 업데이트할 수 있다. In operation S220 , based on the second request RQ2 , the storage controller 110 may update the state of the target zone from an active state to a full state.

S230 단계에서, 스토리지 컨트롤러(110)는 풀 상태로 업데이트된 타겟 존에 제2 타입의 메모리 블록(T2_BLK)을 할당할 수 있다. 스토리지 컨트롤러(110)는 타겟 존에 제2 타입의 메모리 블록(T2_BLK)인 제10 블록(BLK10)을 할당할 수 있다. 예를 들어, 제2 타입의 메모리 블록(T2_BLK)은 QLC 메모리 블록일 수 있다. In step S230 , the storage controller 110 may allocate the second type memory block T2_BLK to the target zone updated to a full state. The storage controller 110 may allocate the tenth block BLK10 as the second type memory block T2_BLK to the target zone. For example, the second type memory block T2_BLK may be a QLC memory block.

S240 단계에서, 스토리지 컨트롤러(110)는 제1 타입의 메모리 블록(T1_BLK1)에 저장된 데이터를 할당된 제2 타입의 메모리 블록(T2_BLK)으로 이동할 수 있다. 스토리지 컨트롤러(110)는 제1 블록(BLK1)에 저장된 데이터를 제10 블록(BLK10)으로 이동할 수 있다.In step S240, the storage controller 110 may move the data stored in the first type memory block T1_BLK1 to the allocated second type memory block T2_BLK. The storage controller 110 may move the data stored in the first block BLK1 to the tenth block BLK10.

일부 실시 예들에서, S240 단계는, 제1 타입의 메모리 블록(T1_BLK1)에 저장된 데이터를 할당된 제2 타입의 메모리 블록(T2_BLK)으로 이동한 후에, 스토리지 컨트롤러(110)가 제1 타입의 메모리 블록(T1_BLK1)을 폐기하는 단계를 포함할 수 있다. 예를 들어, 제1 블록(BLK1)에 저장된 데이터를 제10 블록(BLK10)으로 이동한 후에, 스토리지 컨트롤러(110)가 제1 블록(BLK1)을 폐기할 수 있다.In some embodiments, in step S240 , after moving the data stored in the first type memory block T1_BLK1 to the allocated second type memory block T2_BLK, the storage controller 110 moves the first type memory block discarding (T1_BLK1). For example, after moving the data stored in the first block BLK1 to the tenth block BLK10, the storage controller 110 may discard the first block BLK1.

도 11은 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 장치의 동작 방법을 설명하는 도면이다. 도 1 및 도 11를 참조하면, 도 1의 스토리지 장치의 메모리 블록 할당 해제 동작이 도시된다. 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120) 각각은 도 1의 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)에 대응할 수 있다.FIG. 11 is a diagram illustrating an operating method of the storage device of FIG. 1 according to some embodiments of the present disclosure. Referring to FIGS. 1 and 11 , a memory block allocation deallocation operation of the storage device of FIG. 1 is illustrated. The storage controller 110 and the non-volatile memory device 120 may respectively correspond to the storage controller 110 and the non-volatile memory device 120 of FIG. 1 .

스토리지 컨트롤러(110)은 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)을 포함할 수 있다. ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113) 각각은 도 1의 ZNS 테이블(111), 존 상태 관리자(112), 및 블록 할당 유닛(113)에 대응할 수 있다.The storage controller 110 may include a ZNS table 111 , a zone state manager 112 , and a block allocation unit 113 . Each of the ZNS table 111, zone state manager 112, and block allocation unit 113 may correspond to the ZNS table 111, zone state manager 112, and block allocation unit 113 of FIG.

일부 실시 예들에서, 도 11에 도시된 스토리지 장치(100)의 동작 방법은 도 5에 도시된 스토리지 장치(100)의 동작 방법 이후에 수행될 수 있다. 즉, 제1 요청(RQ1)에 기초하여 타겟 존에 제1 타입의 메모리 블록(T1_BLK1)을 할당하고, 할당된 제1 타입의 메모리 블록(T1_BLK1)에 타겟 데이터를 저장한 이후에, 스토리지 컨트롤러(110)는 호스트(11)로부터 제3 요청(RQ3)을 수신할 수 있다. In some embodiments, the method of operating the storage device 100 illustrated in FIG. 11 may be performed after the method of operating the storage device 100 illustrated in FIG. 5 . That is, after allocating the first type memory block T1_BLK1 to the target zone based on the first request RQ1 and storing target data in the allocated first type memory block T1_BLK1, the storage controller ( 110 may receive a third request RQ3 from the host 11 .

이하에서, 본 개시의 일부 실시 예들에 따라, 타겟 존에 제1 타입의 메모리 블록(T1_BLK1)이 할당된 이후에, 타겟 존에 할당된 제1 타입의 메모리 블록(T1_BLK1)을 할당 해제하는 스토리지 장치(100)의 동작 방법이 설명된다. Hereinafter, according to some embodiments of the present disclosure, after the first type memory block T1_BLK1 is allocated to the target zone, a storage device that deallocates the first type memory block T1_BLK1 allocated to the target zone. The operating method of 100 is described.

제1 동작(①)에서, 존 상태 관리자(112)는 호스트(11)로부터 제3 요청(RQ3)을 수신할 수 있다. 제3 요청(RQ3)은 커맨드(CMD), 및 어드레스(ADD)를 포함할 수 있다. 커맨드(CMD)는 타겟 존의 상태를 엠티 상태로 천이하는 명령어일 수 있다. 엠티는 도 4에 도시된 엠티 상태일 수 있다. 예를 들어, 커맨드(CMD)는 타겟 존의 상태를 ZSIO 상태, ZSEO 상태, 및 ZSC 상태 중 적어도 하나에서 ZSE 상태에서 천이하는 명령어일 수 있다.In the first operation (①), the zone state manager 112 may receive a third request RQ3 from the host 11 . The third request RQ3 may include a command CMD and an address ADD. The command CMD may be a command for transitioning the state of the target zone to an empty state. Empty may be the empty state shown in FIG. 4 . For example, the command CMD may be a command for transitioning the state of the target zone from ZSE state to at least one of ZSIO state, ZSEO state, and ZSC state.

존 상태 관리자(112)는 어드레스(ADD)에 기초하여, 복수의 존들 중 타겟 존을 결정할 수 있다. 예를 들어, 존 상태 관리자(112)는 어드레스(ADD)에 기초하여, 제5 존(Z5)을 타겟 존으로 결정할 수 있다. The zone state manager 112 may determine a target zone among a plurality of zones based on the address ADD. For example, the zone state manager 112 may determine the fifth zone Z5 as the target zone based on the address ADD.

제2 동작(②)에서, 존 상태 관리자(112)는 제3 요청(RQ3)에 기초하여 타겟 존의 상태를 업데이트할 수 있다. 존 상태 관리자(112)는 업데이트된 상태에 기초하여 ZNS 테이블(111)의 상태 정보를 업데이트할 수 있다. 예를 들어, 존 상태 관리자(112)는 제3 요청(RQ3)에 기초하여, 제5 존(Z5)의 상태를 액티브 상태에서 엠티 상태로 업데이트할 수 있다. In the second operation (②), the zone state manager 112 may update the state of the target zone based on the third request RQ3. The zone state manager 112 may update state information of the ZNS table 111 based on the updated state. For example, the zone state manager 112 may update the state of the fifth zone Z5 from an active state to an empty state based on the third request RQ3.

제3 동작(③)에서, 존 상태 관리자(112)는 블록 할당 유닛(113)에게 블록 할당 동작을 요청할 수 있다. 존 상태 관리자(112)는 타겟 존의 업데이트된 상태가 엠티 상태이면, 타겟 존에 할당된 제1 타입의 메모리 블록(T1_BLK)의 할당 해제를 가리키는 요청을 블록 할당 유닛(113)으로 전송할 수 있다.In the third operation ③, the zone state manager 112 may request a block allocation operation from the block allocation unit 113. If the updated state of the target zone is an empty state, the zone state manager 112 may transmit a request indicating deallocation of the first type memory block T1_BLK allocated to the target zone to the block assignment unit 113 .

제4 동작(④)에서, 블록 할당 유닛(113)은 엠티 상태로 업데이트된 타겟 존에 할당된 제1 타입의 메모리 블록(T1_BLK)을 할당 해제할 수 있다. 블록 할당 유닛(113)은 타겟 존의 블록 할당 정보를 업데이트할 수 있다. In the fourth operation (④), the block allocation unit 113 may deallocate the first type memory block T1_BLK allocated to the target zone updated to an empty state. The block allocation unit 113 may update block allocation information of the target zone.

예를 들어, 블록 할당 유닛(113)은 제5 존(Z5)에 할당된 제1 블록(BLK1)을 할당 해제할 수 있다. 블록 할당 유닛(113)은 ZNS 테이블(111)의 제5 존(Z5)의 블록 할당 정보를 제1 블록(BLK)에 대해 '없음(None)'으로 업데이트할 수 있다. For example, the block allocation unit 113 may deallocate the first block BLK1 allocated to the fifth zone Z5. The block allocation unit 113 may update block allocation information of the fifth zone Z5 of the ZNS table 111 to 'None' for the first block BLK.

제5 동작(⑤)에서, 블록 할당 유닛(113)은 버퍼 메모리(114a)에 제3 요청(RQ3)을 수행하도록 요청할 수 있다. 제6 동작(⑥)에서, 버퍼 메모리(114a)는 제1 블록(BLK1)에 저장된 데이터를 삭제할 수 있다. In the fifth operation (⑤), the block allocation unit 113 may request the buffer memory 114a to perform the third request RQ3. In the sixth operation (⑥), the buffer memory 114a may delete data stored in the first block BLK1.

도 12는 본 개시의 일부 실시 예들에 따라 존에 할당된 메모리 블록을 할당 해제하는 동작을 설명하는 도면이다. 도 12를 참조하면, 존이 액티브 상태일 경우, 논리 영역 및 물리 영역이 도시된다.12 is a diagram illustrating an operation of deallocating a memory block allocated to a zone according to some embodiments of the present disclosure. Referring to FIG. 12 , when a zone is in an active state, a logical area and a physical area are shown.

스토리지 컨트롤러(110)가 제3 요청(RQ3)에 따른 블록 할당 해제 동작을 수행하기 전의 물리 영역을 참조하면, 제5 존(Z5)에 제1 내지 제4 블록들(BLK1~BLK4)이 할당되고, 제1 존(Z1)에 제6 블록(BLK6)이 할당되고, 제2 존(Z2)에 제7 블록(BLK7)이 할당되고, 제3 존(Z3)에 제8 블록(BLK8)이 할당되고, 그리고 제4 존(Z4)에 제9 블록(BLK9)이 할당될 수 있다.Referring to the physical area before the storage controller 110 performs the block allocation deallocation operation according to the third request RQ3, the first to fourth blocks BLK1 to BLK4 are allocated to the fifth zone Z5 and , The sixth block BLK6 is allocated to the first zone Z1, the seventh block BLK7 is allocated to the second zone Z2, and the eighth block BLK8 is allocated to the third zone Z3. and the ninth block BLK9 may be allocated to the fourth zone Z4.

스토리지 컨트롤러(110)가 제3 요청(RQ3)에 따른 블록 할당 해제 동작을 수행한 후의 물리 영역을 참조하면, 제1 내지 제4 블록들(BLK1~BLK4)을 제5 존(Z5)으로부터 할당 해제할 수 있다. 제1 내지 제4 블록들(BLK1~BLK4)을 제5 존(Z5)으로부터 할당 해제한 후에, 제1 내지 제4 블록들(BLK1~BLK4)에 저장된 데이터를 삭제할 수 있다. Referring to the physical area after the storage controller 110 performs a block allocation deallocation operation according to the third request RQ3, the first to fourth blocks BLK1 to BLK4 are deallocated from the fifth zone Z5. can do. After the first to fourth blocks BLK1 to BLK4 are deallocated from the fifth zone Z5 , data stored in the first to fourth blocks BLK1 to BLK4 may be deleted.

도 13은 본 개시의 일부 실시 예들에 따라 존에 할당된 메모리 블록을 할당 해제하는 동작을 도시하는 순서도이다. 도 11 및 도 13을 참조하면, 스토리지 컨트롤러(110)의 엠티 상태로 업데이트된 존에 대해 할당된 메모리 블록을 할당 해제하는 동작이 도시된다. 스토리지 컨트롤러(110)는 도 11의 스토리지 컨트롤러(110)와 대응할 수 있다.13 is a flowchart illustrating an operation of deallocating a memory block allocated to a zone according to some embodiments of the present disclosure. Referring to FIGS. 11 and 13 , an operation of deallocating a memory block allocated for a zone updated to an empty state of the storage controller 110 is illustrated. The storage controller 110 may correspond to the storage controller 110 of FIG. 11 .

S310 단계에서, 스토리지 컨트롤러(110)는 호스트로부터 제3 요청(RQ3)을 수신할 수 있다. 제3 요청(RQ3)은 커맨드(CMD), 및 어드레스(ADD)를 포함할 수 있다. 스토리지 컨트롤러(110)는 어드레스(ADD)에 기초하여, 할당 동작의 대상이 되는 타겟 존을 결정할 수 있다. In step S310, the storage controller 110 may receive a third request RQ3 from the host. The third request RQ3 may include a command CMD and an address ADD. The storage controller 110 may determine a target zone to which an allocation operation is performed based on the address ADD.

S320 단계에서, 제2 요청(RQ2)에 기초하여, 스토리지 컨트롤러(110)는 타겟 존의 상태를 액티브 상태에서 엠티 상태로 업데이트할 수 있다. In step S320 , based on the second request RQ2 , the storage controller 110 may update the state of the target zone from an active state to an empty state.

S330 단계에서, 스토리지 컨트롤러(110)는 타겟 존에 할당되어 있던 제1 타입의 메모리 블록(T1_BLK)을 할당 해제할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제5 존(Z5)에 할당되어 있던 제1 내지 제4 블록들(BLK1~BLK4)을 할당 해제할 수 있다.In step S330, the storage controller 110 may deallocate the first type memory block T1_BLK allocated to the target zone. For example, the storage controller 110 may deallocate the first to fourth blocks BLK1 to BLK4 allocated to the fifth zone Z5 .

S340 단계에서, 스토리지 컨트롤러(110)는 할당 해제된 제1 타입의 메모리 블록(T1_BLK)에 저장된 데이터를 삭제할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제1 내지 제4 블록들(BLK1~BLK4)에 저장된 데이터를 삭제할 수 있다.In step S340, the storage controller 110 may delete data stored in the deallocated first type memory block T1_BLK. For example, the storage controller 110 may delete data stored in the first to fourth blocks BLK1 to BLK4.

도 14는 본 발명의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다. 데이터 센터(1000)는 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 시설로서, 데이터 스토리지 센터로 불릴 수 있다. 데이터 센터(1000)는 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용된 컴퓨팅 시스템일 수 있다. 데이터 센터(1000)는 복수의 애플리케이션 서버들(1100_1~1100_n) 및 복수의 스토리지 서버들(1200_1~1200_m)을 포함할 수 있다. 복수의 애플리케이션 서버들(1100_1~1100_n)의 개수 및 복수의 스토리지 서버들(1200_1~1200_m)의 개수는 다양하게 변형될 수 있다.14 is a block diagram illustratively illustrating a data center to which a storage device according to an embodiment of the present invention is applied. The data center 1000 is a facility that maintains and manages various data and provides various services for the various data, and may be referred to as a data storage center. The data center 1000 may be a system for operating a search engine or database, and may be a computing system used in various institutions. The data center 1000 may include a plurality of application servers 1100_1 to 1100_n and a plurality of storage servers 1200_1 to 1200_m. The number of the plurality of application servers 1100_1 to 1100_n and the number of the plurality of storage servers 1200_1 to 1200_m may be variously modified.

이하에서, 설명의 편의를 위해, 제1 스토리지 서버(1200_1)의 예시가 설명된다. 나머지 스토리지 서버들(1200_2~1200_m) 및 복수의 애플리케이션 서버들(1100_1~1100_n) 각각은 제1 스토리지 서버(1200_1)와 유사한 구조를 가질 수 있다. Hereinafter, for convenience of description, an example of the first storage server 1200_1 will be described. Each of the remaining storage servers 1200_2 to 1200_m and the plurality of application servers 1100_1 to 1100_n may have a structure similar to that of the first storage server 1200_1.

제1 스토리지 서버(1200_1)는 프로세서(1210_1), 메모리(1220_1), 스위치(1230_1), 네트워크 인터페이스 커넥터(NIC; network interface connector)(1240_1), 및 스토리지 장치(1250_1)를 포함할 수 있다. 프로세서(1210_1)는 제1 스토리지 서버(1200_1)의 전반적인 동작을 제어할 수 있다. 메모리(1220_1)는 프로세서(1210_1)의 제어에 따라 다양한 명령어 또는 데이터를 저장할 수 있다. 프로세서(1210_1)는 메모리(1220_1)를 액세스하여 다양한 명령어를 실행하거나 또는 데이터를 처리하도록 구성될 수 있다. 일 실시 예에서, 메모리(1220_1)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVDIMM(Non-Volatile DIMM)과 같은 다양한 종류의 메모리 장치들 중 적어도 하나를 포함할 수 있다. The first storage server 1200_1 may include a processor 1210_1, a memory 1220_1, a switch 1230_1, a network interface connector (NIC) 1240_1, and a storage device 1250_1. The processor 1210_1 may control overall operations of the first storage server 1200_1. The memory 1220_1 may store various commands or data under the control of the processor 1210_1. The processor 1210_1 may be configured to access the memory 1220_1 to execute various instructions or to process data. In one embodiment, the memory 1220_1 may be DDR Double Data Rate Synchronous DRAM (SDRAM), High Bandwidth Memory (HBM), Hybrid Memory Cube (HMC), Dual In-line Memory Module (DIMM), Optane DIMM, or NVDIMM (Non-VDIMM). -Volatile DIMM) may include at least one of various types of memory devices.

일 실시 예에서, 제1 스토리지 서버(1200_1)에 포함된 프로세서(1210_1)의 개수 및 메모리(1220_1)의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(1200_1)에 포함된 프로세서(1210_1) 및 메모리(1220_1)는 프로세서-메모리 페어를 구성할 수 있으며, 제1 스토리지 서버(1200_1)에 포함된 프로세서-메모리 페어의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(1200_1)에 포함된 프로세서(1210_1)의 개수 및 메모리(1220_1)의 개수는 서로 다를 수 있다. 프로세서(1210_1)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다. In one embodiment, the number of processors 1210_1 and the number of memories 1220_1 included in the first storage server 1200_1 may be variously modified. In one embodiment, the processor 1210_1 and the memory 1220_1 included in the first storage server 1200_1 may configure a processor-memory pair, and the processor-memory pair included in the first storage server 1200_1 The number can be variously modified. In one embodiment, the number of processors 1210_1 and the number of memories 1220_1 included in the first storage server 1200_1 may be different from each other. The processor 1210_1 may include a single-core processor or a multi-core processor.

스위치(1230_1)는 프로세서(1210_1)의 제어에 따라 프로세서(1210_1) 및 스토리지 장치(1250_1) 사이를 선택적으로 연결시키거나 또는 NIC(1240_1) 및 스토리지 장치(1250_1) 사이를 선택적으로 연결시킬 수 있다.The switch 1230_1 may selectively connect the processor 1210_1 and the storage device 1250_1 or selectively connect the NIC 1240_1 and the storage device 1250_1 under the control of the processor 1210_1.

NIC(1240_1)는 제1 스토리지 서버(1200_1)를 네트워크(NT)와 연결시키도록 구성될 수 있다. NIC(1240_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(1240_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(1240_1)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(1210_1) 또는 스위치(1230_1) 등과 연결될 수 있다. 호스트 버스 인터페이스는, ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, NIC(1240_1)는 프로세서(1210_1), 스위치(1230_1), 및 스토리지 장치(1250_1) 중 적어도 하나와 통합될 수도 있다.The NIC 1240_1 may be configured to connect the first storage server 1200_1 to the network NT. The NIC 1240_1 may include a network interface card, a network adapter, and the like. The NIC 1240_1 may be connected to the network NT through a wired interface, a wireless interface, a Bluetooth interface, an optical interface, or the like. The NIC 1240_1 may include an internal memory, a DSP, a host bus interface, and the like, and may be connected to the processor 1210_1 or the switch 1230_1 through the host bus interface. Host bus interfaces include Advanced Technology Attachment (ATA), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnection (PCI), PCIe ( PCI express), NVM express (NVMe), IEEE 1394, universal serial bus (USB), secure digital (SD) card, multi-media card (MMC), embedded multi-media card (eMMC), universal flash storage (UFS) , embedded universal flash storage (eUFS), compact flash (CF) card interface, and the like. In one embodiment, the NIC 1240_1 may be integrated with at least one of the processor 1210_1 , the switch 1230_1 , and the storage device 1250_1 .

스토리지 장치(1250_1)는 프로세서(1210_1)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 스토리지 장치(1250_1)는 컨트롤러(1251_1), 불휘발성 메모리(1252_1), DRAM(1253_1), 및 인터페이스(1254_1)를 포함할 수 있다. 일 실시 예에서, 스토리지 장치(1250_1)는 ZNS SSD로 구현될 수 있다.The storage device 1250_1 may store data or output stored data under the control of the processor 1210_1. The storage device 1250_1 may include a controller 1251_1, a nonvolatile memory 1252_1, a DRAM 1253_1, and an interface 1254_1. In one embodiment, the storage device 1250_1 may be implemented as a ZNS SSD.

컨트롤러(1251_1)는 스토리지 장치(1250_1)의 제반 동작을 제어할 수 있다. 일 실시 예에서, 컨트롤러(1250_1)는 타겟 존의 업데이트된 상태에 따라, 불휘발성 메모리(1252_1)의 제1 타입의 메모리 블록 또는 제2 타입의 메모리 블록을 타겟 존에 할당하거나, 타겟 존에 할당된 메모리 블록을 할당 해제할 수 있다.The controller 1251_1 may control overall operations of the storage device 1250_1. In an embodiment, the controller 1250_1 allocates the first type memory block or the second type memory block of the nonvolatile memory 1252_1 to the target zone or allocates the memory block to the target zone according to the updated state of the target zone. A block of memory can be deallocated.

DRAM(1253_1)은 불휘발성 메모리(1252_1)에 저장될 데이터 또는 불휘발성 메모리(1252_1)로부터 읽어진 데이터를 임시 저장하도록 구성될 수 있다. DRAM(1253_1)은 컨트롤러(1251_1)가 동작하는데 필요한 다양한 데이터(예를 들어, 메타 데이터, 매핑 데이터 등)를 저장하도록 구성될 수 있다. 인터페이스(1254_1)는 프로세서(1210_1), 스위치(1230_1), 또는 NIC(1240_1)와 컨트롤러(1251_1) 사이의 물리적 연결을 제공할 수 있다. 일 실시 예에서, 인터페이스(1254_1)는 스토리지 장치(1250_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 일 실시 예에서, 인터페이스(1254_1)는 앞서 호스트 인터페이스 버스를 통해 설명된 다양한 인터페이스들 중 적어도 하나를 기반으로 구성될 수 있다. The DRAM 1253_1 may be configured to temporarily store data to be stored in the nonvolatile memory 1252_1 or data read from the nonvolatile memory 1252_1. The DRAM 1253_1 may be configured to store various data (eg, meta data, mapping data, etc.) necessary for the controller 1251_1 to operate. The interface 1254_1 may provide a physical connection between the processor 1210_1, the switch 1230_1, or the NIC 1240_1 and the controller 1251_1. In one embodiment, the interface 1254_1 may be implemented in a Direct Attached Storage (DAS) method that directly connects the storage device 1250_1 with a dedicated cable. In one embodiment, the interface 1254_1 may be configured based on at least one of the various interfaces described above through the host interface bus.

상술된 제1 스토리지 서버(1200_1)의 구성들은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 상술된 제1 스토리지 서버(1200_1)의 구성들은 다른 스토리지 서버들 또는 복수의 애플리케이션 서버들 각각에 적용될 수 있다. 일 실시 예에서, 복수의 애플리케이션 서버들(1100_1~1100_n) 각각에서, 스토리지 장치(1150_1)는 선택적으로 생략될 수 있다.The configurations of the above-described first storage server 1200_1 are exemplary, and the scope of the present invention is not limited thereto. The configurations of the above-described first storage server 1200_1 may be applied to other storage servers or each of a plurality of application servers. In one embodiment, in each of the plurality of application servers 1100_1 to 1100_n, the storage device 1150_1 may be selectively omitted.

복수의 애플리케이션 서버들(1100_1~1100_n) 및 복수의 스토리지 서버들(1200_1~1200_m)은 네트워크(NT)를 통해 서로 통신할 수 있다. 네트워크(NT)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들(1200_1~1200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.The plurality of application servers 1100_1 to 1100_n and the plurality of storage servers 1200_1 to 1200_m may communicate with each other through the network NT. The network NT may be implemented using Fiber Channel (FC) or Ethernet. At this time, FC is a medium used for relatively high-speed data transmission, and an optical switch providing high performance/high availability may be used. According to the access method of the network NT, the storage servers 1200_1 to 1200_m may be provided as file storage, block storage, or object storage.

일 실시 예에서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 또는, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 일 실시 예에서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.In one embodiment, the network NT may be a storage-only network, such as a storage area network (SAN). For example, the SAN may be an FC-SAN that uses an FC network and is implemented according to FC Protocol (FCP). Alternatively, the SAN may be an IP-SAN using a TCP/IP network and implemented according to the iSCSI (SCSI over TCP/IP or Internet SCSI) protocol. In one embodiment, network NT may be a general network such as a TCP/IP network. For example, the network NT may be implemented according to protocols such as FC over Ethernet (FCoE), Network Attached Storage (NAS), and NVMe over Fabrics (NVMe-oF).

일 실시 예에서, 복수의 애플리케이션 서버들(1100_1~1100_n) 중 적어도 하나는 네트워크(NT)를 통해 복수의 애플리케이션 서버들(1100_1~1100_n) 중 적어도 다른 하나 또는 복수의 스토리지 서버들(1200_1~1200_m) 중 적어도 하나를 액세스하도록 구성될 수 있다. In one embodiment, at least one of the plurality of application servers 1100_1 to 1100_n connects to at least one other of the plurality of application servers 1100_1 to 1100_n or the plurality of storage servers 1200_1 to 1200_m through the network NT. It may be configured to access at least one of them.

예를 들어, 제1 애플리케이션 서버(1100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(1200_1~1200_m) 중 적어도 하나에 저장할 수 있다. 또는 제1 애플리케이션 서버(1100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(1200_1~1200_m) 중 적어도 하나로부터 획득할 수 있다. 이 경우, 제1 애플리케이션 서버(1100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.For example, the first application server 1100_1 may store data requested by a user or client in at least one of the plurality of storage servers 1200_1 to 1200_m through the network NT. Alternatively, the first application server 1100_1 may acquire data requested by a user or client from at least one of the plurality of storage servers 1200_1 to 1200_m through the network NT. In this case, the first application server 1100_1 may be implemented as a web server or a database management system (DBMS).

즉, 제1 애플리케이션 서버(1100_1)의 프로세서(1110_1)는 네트워크(NT)를 통해, 다른 애플리케이션 서버(예를 들어, 1100_n)의 메모리(1120_n) 또는 스토리지 장치(1150_n)을 액세스할 수 있다. 또는 제1 애플리케이션 서버(1100_1)의 프로세서(1110_1)는 네트워크(NT)를 통해, 제1 스토리지 서버(1200_1)의 메모리(1220_1) 또는 스토리지 장치(1250_1)를 액세스할 수 있다. 이를 통해, 제1 애플리케이션 서버(1100_1)는 다른 애플리케이션 서버들(1100_2~1100_n) 또는 복수의 스토리지 서버들(1200_1~1200_m)에 저장된 데이터에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 제1 애플리케이션 서버(1100_1)는 다른 애플리케이션 서버들(1100_2~1100_n) 또는 복수의 스토리지 서버들(1200_1~1200_m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행하거나 또는 발행할 수 있다. 이 경우, 이동 또는 카피되는 데이터는 스토리지 서버들(1200_1~1200_m)의 스토리지 장치들(1250_1~1250_m)로부터 스토리지 서버들(1200_1~1200_m)의 메모리들(1220_1~1220_m)를 거치거나 또는 직접 애플리케이션 서버들(1100_1~1100_n)의 메모리들(1120_1~1120_n)로 이동될 수 있다. 네트워크(NT)를 통해 전달되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.That is, the processor 1110_1 of the first application server 1100_1 may access the memory 1120_n or the storage device 1150_n of another application server (eg, 1100_n) through the network NT. Alternatively, the processor 1110_1 of the first application server 1100_1 may access the memory 1220_1 or the storage device 1250_1 of the first storage server 1200_1 through the network NT. Through this, the first application server 1100_1 may perform various operations on data stored in the other application servers 1100_2 to 1100_n or the plurality of storage servers 1200_1 to 1200_m. For example, the first application server 1100_1 executes or issues a command for moving or copying data between other application servers 1100_2 to 1100_n or a plurality of storage servers 1200_1 to 1200_m. can do. In this case, data to be moved or copied is transferred from the storage devices 1250_1 to 1250_m of the storage servers 1200_1 to 1200_m through the memories 1220_1 to 1220_m of the storage servers 1200_1 to 1200_m or directly to the application server. It may be moved to the memories 1120_1 to 1120_n of the fields 1100_1 to 1100_n. Data transmitted over the network NT may be encrypted data for security or privacy.

일 실시 예에서, 스토리지 장치들(1150_1~1110_n, 1250_1~1250_n)은 도 1 내지 도 13을 참조하여 설명된 스토리지 장치일 수 있으며, 다양한 블록 할당 동작 및 블록 할당 해제 동작을 수행하도록 구성될 수 있다. 스토리지 장치들(1150_1~1110_n, 1250_1~1250_n)은 도 1 내지 도 13을 참조하여 설명된 바와 같이 타겟 존의 업데이트된 상태에 따라, 타겟 존에 제1 타입의 메모리 블록 또는 제2 타입의 메모리 블록을 할당하거나, 타겟 존에 할당된 메모리 블록을 할당 해제할 수 있다. In one embodiment, the storage devices 1150_1 to 1110_n and 1250_1 to 1250_n may be the storage devices described with reference to FIGS. 1 to 13 and may be configured to perform various block allocation and block allocation operations. . As described with reference to FIGS. 1 to 13 , the storage devices 1150_1 to 1110_n and 1250_1 to 1250_n store a first-type memory block or a second-type memory block in the target zone according to the updated state of the target zone. can be allocated or the memory block allocated to the target zone can be deallocated.

상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구 범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The foregoing are specific embodiments for carrying out the present invention. The present invention will include not only the above-described embodiments, but also embodiments that can be simply or easily changed in design. In addition, the present invention will also include techniques that can be easily modified and practiced using the embodiments. Therefore, the scope of the present invention should not be limited to the above-described embodiments and should not be defined, but should be defined by those equivalent to the claims of this invention as well as the claims to be described later.

Claims (20)

호스트 및 비-휘발성 메모리 장치와 통신하는 스토리지 컨트롤러의 동작하는 방법에 있어서:
상기 호스트로부터, 복수의 존들 중 제1 존을 가리키는 제1 요청을 수신하는 단계;
상기 제1 요청에 응답하여, 상기 제1 존의 상태를 액티브 상태로 설정하는 단계;
상기 비-휘발성 메모리 장치의 복수의 메모리 블록들 중 제1 메모리 블록을 상기 액티브 상태로 업데이트된 상기 제1 존에 할당하는 단계; 및
상기 제1 요청에 대응하는 사용자 데이터를 상기 제1 메모리 블록에 저장하는 단계를 포함하되,
상기 제1 메모리 블록의 신뢰성은 상기 복수의 존들 중 논-액티브 상태를 갖는 제2 존에 할당된 제2 메모리 블록의 신뢰성보다 높고, 그리고
상기 스토리지 컨트롤러는 NVM Express의 ZNS(Zoned Namespace) 표준을 지원하는 방법.
A method of operating a storage controller in communication with a host and a non-volatile memory device comprising:
receiving, from the host, a first request indicating a first zone among a plurality of zones;
In response to the first request, setting a state of the first zone to an active state;
allocating a first memory block among a plurality of memory blocks of the non-volatile memory device to the first zone updated to the active state; and
Storing user data corresponding to the first request in the first memory block;
The reliability of the first memory block is higher than that of a second memory block allocated to a second zone having a non-active state among the plurality of zones, and
The storage controller supports the ZNS (Zoned Namespace) standard of NVM Express.
제 1 항에 있어서,
상기 사용자 데이터를 상기 제1 메모리 블록에 저장한 이후에, 상기 호스트로부터, 상기 제1 존을 가리키는 제2 요청을 수신하는 단계;
상기 제2 요청에 응답하여, 상기 제1 존의 상태를 풀(full) 상태로 설정하는 단계;
상기 제2 메모리 블록을 상기 풀 상태로 업데이트된 상기 제1 존에 할당하는 단계; 및
상기 제1 메모리 블록에 저장된 상기 사용자 데이터를 상기 제2 메모리 블록으로 복사하는 단계를 포함하는 방법.
According to claim 1,
receiving a second request indicating the first zone from the host after storing the user data in the first memory block;
setting a state of the first zone to a full state in response to the second request;
allocating the second memory block to the first zone updated to the full state; and
and copying the user data stored in the first memory block to the second memory block.
제 2 항에 있어서,
상기 제1 존의 상기 제1 메모리 블록의 상기 사용자 데이터를 상기 제2 메모리 블록에 복사한 후, 상기 제1 메모리 블록을 폐기하는 단계를 더 포함하는 방법.
According to claim 2,
and discarding the first memory block after copying the user data of the first memory block of the first zone to the second memory block.
제 1 항에 있어서,
상기 사용자 데이터를 상기 제1 메모리 블록에 저장한 이후에, 상기 호스트로부터, 상기 제1 존을 가리키는 제3 요청을 수신하는 단계;
상기 제3 요청에 응답하여, 상기 제1 존의 상태를 엠티(empty) 상태로 설정하는 단계;
상기 제1 존에 할당된 상기 제1 메모리 블록을 할당 해제하는 단계; 및
상기 제1 메모리 블록에 저장된 상기 사용자 데이터를 삭제하는 단계를 포함하는 방법.
According to claim 1,
receiving a third request indicating the first zone from the host after storing the user data in the first memory block;
setting a state of the first zone to an empty state in response to the third request;
deallocating the first memory block allocated to the first zone; and
and deleting the user data stored in the first memory block.
제 1 항에 있어서,
상기 비-휘발성 메모리 장치의 상기 복수의 메모리 블록들 중 상기 제1 메모리 블록을 상기 액티브 상태로 업데이트된 상기 제1 존에 할당하는 단계는:
상기 복수의 메모리 블록들 중 제3 메모리 블록, 제4 메모리 블록, 및 제5 메모리 블록을 상기 제1 존에 할당하는 단계를 더 포함하는 방법.
According to claim 1,
Allocating the first memory block among the plurality of memory blocks of the non-volatile memory device to the first zone updated to the active state includes:
and allocating a third memory block, a fourth memory block, and a fifth memory block among the plurality of memory blocks to the first zone.
제 5 항에 있어서,
상기 제1, 제3, 제4, 및 제5 메모리 블록들 각각의 셀 당 저장되는 데이터 비트 수는 상기 제2 메모리 블록의 셀 당 저장되는 데이터 비트 수보다 적은 메모리 방법.
According to claim 5,
The number of data bits stored per cell of each of the first, third, fourth, and fifth memory blocks is less than the number of data bits stored per cell of the second memory block.
제 6 항에 있어서,
상기 제1, 제3, 제4, 및 제5 메모리 블록들 각각은 SLC(Single Level Cell) 메모리 블록이고, 상기 제2 메모리 블록은 QLC(Quadruple Level Cell) 메모리 블록인 방법.
According to claim 6,
Each of the first, third, fourth, and fifth memory blocks is a single level cell (SLC) memory block, and the second memory block is a quadruple level cell (QLC) memory block.
제 5 항에 있어서,
상기 제1 요청에 대응하는 상기 사용자 데이터를 상기 제1 메모리 블록에 저장하는 단계는:
상기 사용자 데이터를 순차적으로 상기 제1, 제3, 제4, 및 제5 메모리 블록들에 저장하는 단계를 포함하는 방법.
According to claim 5,
Storing the user data corresponding to the first request in the first memory block comprises:
and sequentially storing the user data in the first, third, fourth, and fifth memory blocks.
제 7 항에 있어서,
상기 사용자 데이터를 순차적으로 상기 제1, 제3, 제4, 및 제5 메모리 블록들에 저장한 후, 상기 제1, 제3, 제4, 및 제5 메모리 블록들에 잔여 용량이 있는지 결정하는 단계;
상기 제1, 제3, 제4, 및 제5 메모리 블록들에 잔여 용량이 없는 것으로 결정되면, 상기 제2 메모리 블록을 상기 제1 존에 할당하는 단계; 및
상기 제1, 제3, 제4, 및 제5 메모리 블록들에 저장된 상기 사용자 데이터를 순차적으로 상기 제2 메모리 블록으로 복사하는 단계를 포함하는 방법.
According to claim 7,
After sequentially storing the user data in the first, third, fourth, and fifth memory blocks, determining whether there is remaining capacity in the first, third, fourth, and fifth memory blocks step;
allocating the second memory block to the first zone when it is determined that there is no remaining capacity in the first, third, fourth, and fifth memory blocks; and
and sequentially copying the user data stored in the first, third, fourth, and fifth memory blocks to the second memory block.
제 1 항에 있어서,
상기 제1 요청은 상기 ZNS 표준의 ZSIO 상태 또는 ZSEO 상태로의 천이를 가리키고, 그리고
상기 액티브 상태는 상기 ZNS 표준의 상기 ZSIO 상태, 상기 ZSEO 상태, 및 ZSC 상태를 포함하고,
상기 논-액티브 상태는 상기 ZNS 표준의 ZSE 상태를 가리키는 방법.
According to claim 1,
The first request indicates a transition to ZSIO state or ZSEO state of the ZNS standard, and
The active state includes the ZSIO state, the ZSEO state, and the ZSC state of the ZNS standard;
The non-active state indicates the ZSE state of the ZNS standard.
호스트의 요청에 따라 복수의 존들 중 타겟 존의 상태를 천이하고, 상기 타겟 존의 상기 천이된 상태가 액티브 상태이면 제1 할당 요청을 생성하도록 구성된 존 상태 관리자;
상기 존 상태 관리자의 제1 할당 요청에 따라, 상기 타겟 존에 비-휘발성 메모리 장치 내의 복수의 메모리 블록들 중 제1 메모리 블록을 할당하도록 구성된 블록 할당 유닛; 및
상기 블록 할당 유닛의 제어에 따라, 상기 호스트의 상기 요청에 대응하는 타겟 데이터를 상기 제1 메모리 블록에 저장하도록 구성된 버퍼 메모리를 포함하되,
NVM Express의 ZNS(Zoned Namespace) 표준을 지원하고, 그리고
상기 제1 메모리 블록의 신뢰성은 상기 복수의 존들 중 논-액티브 상태를 갖는 존에 할당된 제2 메모리 블록의 신뢰성보다 높은 스토리지 컨트롤러.
a zone state manager configured to transition a state of a target zone among a plurality of zones according to a request of a host, and to generate a first allocation request when the state of the target zone is in an active state;
a block allocation unit configured to allocate a first memory block among a plurality of memory blocks in a non-volatile memory device to the target zone according to a first allocation request from the zone state manager; and
A buffer memory configured to store target data corresponding to the request of the host in the first memory block under the control of the block allocation unit;
Supports the Zoned Namespace (ZNS) standard of NVM Express, and
The reliability of the first memory block is higher than that of a second memory block allocated to a zone having a non-active state among the plurality of zones.
제 11 항에 있어서,
상기 존 상태 관리자는 상기 타겟 존의 상기 천이된 상태가 풀(full) 상태이면 제2 할당 요청을 생성하도록 더 구성되고,
상기 블록 할당 유닛은 상기 존 상태 관리자의 제2 할당 요청에 따라, 상기 타겟 존에 상기 제2 메모리 블록을 할당하도록 더 구성되고,
상기 버퍼 메모리는 상기 제1 메모리 블록에 저장된 상기 타겟 데이터를 상기 제2 메모리 블록으로 복사하도록 더 구성되는 스토리지 컨트롤러.
According to claim 11,
the zone state manager is further configured to generate a second allocation request if the transitioned state of the target zone is full;
the block allocation unit is further configured to allocate the second memory block to the target zone according to a second allocation request of the zone state manager;
wherein the buffer memory is further configured to copy the target data stored in the first memory block to the second memory block.
제 11 항에 있어서,
상기 존 상태 관리자는 상기 타겟 존의 상기 천이된 상태가 엠티(empty) 상태이면 제3 할당 요청을 생성하도록 더 구성되고,
상기 블록 할당 유닛은 상기 존 상태 관리자의 제3 할당 요청에 따라, 상기 타겟 존에 할당된 상기 제1 메모리 블록을 할당 해제하도록 더 구성되고,
상기 버퍼 메모리는 상기 제1 메모리 블록에 저장된 상기 타겟 데이터를 삭제하도록 더 구성되는 스토리지 컨트롤러.
According to claim 11,
the zone state manager is further configured to generate a third allocation request if the transitioned state of the target zone is an empty state;
the block allocation unit is further configured to deallocate the first memory block allocated to the target zone according to a third allocation request of the zone state manager;
The storage controller of claim 1 , wherein the buffer memory is further configured to delete the target data stored in the first memory block.
제 11 항에 있어서,
상기 블록 할당 유닛은 상기 타겟 존의 상기 천이된 상태가 액티브 상태이면. 상기 복수의 메모리 블록들 중 제3 메모리 블록, 제4 메모리 블록, 및 제5 메모리 블록을 상기 타겟 존에 할당하도록 더 구성되는 스토리지 컨트롤러.
According to claim 11,
the block allocation unit if the transitioned state of the target zone is an active state. The storage controller is further configured to allocate a third memory block, a fourth memory block, and a fifth memory block among the plurality of memory blocks to the target zone.
제 14 항에 있어서,
상기 제1, 제3, 제4, 및 제5 메모리 블록들 각각의 셀 당 저장되는 데이터 비트 수는 상기 제2 메모리 블록의 셀 당 저장되는 데이터 비트 수보다 적은 메모리 방법.
15. The method of claim 14,
The number of data bits stored per cell of each of the first, third, fourth, and fifth memory blocks is less than the number of data bits stored per cell of the second memory block.
제 15 항에 있어서,
상기 제1, 제3, 제4, 및 제5 메모리 블록들 각각은 SLC(Single Level Cell) 메모리 블록이고, 상기 제2 메모리 블록은 QLC(Quadruple Level Cell) 메모리 블록인 스토리지 컨트롤러.
According to claim 15,
Each of the first, third, fourth, and fifth memory blocks is a single level cell (SLC) memory block, and the second memory block is a quadruple level cell (QLC) memory block.
제 11 항에 있어서,
상기 존 상태 관리자와 통신하고, 상기 복수의 존들 각각의 상태 정보 및 상기 복수의 존들 각각의 할당된 블록들을 가리키는 복수의 블록 할당 정보를 관리하는 존 테이블을 더 포함하는 스토리지 컨트롤러.
According to claim 11,
and a zone table that communicates with the zone state manager and manages state information of each of the plurality of zones and block allocation information indicating allocated blocks of each of the plurality of zones.
호스트와 통신하는 스토리지 장치의 동작하는 방법에 있어서,
상기 호스트로부터, 복수의 존들 중 제1 존을 가리키는 제1 요청을 수신하는 단계;
상기 제1 요청에 응답하여, 상기 제1 존의 상태를 액티브 상태로 설정하는 단계;
비-휘발성 메모리 장치의 복수의 메모리 블록들 중 제1 메모리 블록을 상기 액티브 상태로 업데이트된 상기 제1 존에 할당하는 단계; 및
상기 제1 요청에 대응하는 사용자 데이터를 상기 제1 메모리 블록에 저장하는 단계를 포함하되,
상기 제1 메모리 블록의 신뢰성은 상기 복수의 존들 중 논-액티브 상태를 갖는 제2 존에 할당된 제2 메모리 블록의 신뢰성보다 높고, 그리고
상기 스토리지 장치는 NVM Express의 ZNS(Zoned Namespace) 표준을 지원하는 방법.
A method of operating a storage device communicating with a host,
receiving, from the host, a first request indicating a first zone among a plurality of zones;
In response to the first request, setting a state of the first zone to an active state;
allocating a first memory block among a plurality of memory blocks of a non-volatile memory device to the first zone updated to the active state; and
Storing user data corresponding to the first request in the first memory block;
The reliability of the first memory block is higher than that of a second memory block allocated to a second zone having a non-active state among the plurality of zones, and
The storage device supports the ZNS (Zoned Namespace) standard of NVM Express.
제 18 항에 있어서,
상기 사용자 데이터를 상기 제1 메모리 블록에 저장한 이후에, 상기 호스트로부터, 상기 제1 존을 가리키는 제2 요청을 수신하는 단계;
상기 제2 요청에 응답하여, 상기 제1 존의 상태를 풀(full) 상태로 설정하는 단계;
상기 제2 메모리 블록을 상기 풀 상태로 업데이트된 상기 제1 존에 할당하는 단계; 및
상기 제1 메모리 블록에 저장된 상기 사용자 데이터를 상기 제2 메모리 블록으로 복사하는 단계를 포함하는 방법.
According to claim 18,
receiving a second request indicating the first zone from the host after storing the user data in the first memory block;
setting a state of the first zone to a full state in response to the second request;
allocating the second memory block to the first zone updated to the full state; and
and copying the user data stored in the first memory block to the second memory block.
제 18 항에 있어서,
상기 사용자 데이터를 상기 제1 메모리 블록에 저장한 이후에, 상기 호스트로부터, 상기 제1 존을 가리키는 제3 요청을 수신하는 단계;
상기 제3 요청에 응답하여, 상기 제1 존의 상태를 엠티(empty) 상태로 설정하는 단계;
상기 제1 존에 할당된 상기 제1 메모리 블록을 할당 해제하는 단계; 및
상기 제1 메모리 블록에 저장된 상기 사용자 데이터를 삭제하는 단계를 포함하는 방법.



According to claim 18,
receiving a third request indicating the first zone from the host after storing the user data in the first memory block;
setting a state of the first zone to an empty state in response to the third request;
deallocating the first memory block allocated to the first zone; and
and deleting the user data stored in the first memory block.



KR1020220064866A 2022-01-26 2022-05-26 Storage controller managing different types of blocks, an operating method thereof, and an operating method of a storage device including the same KR20230115197A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/058,546 US20230236737A1 (en) 2022-01-26 2022-11-23 Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same
EP23151752.5A EP4220414A1 (en) 2022-01-26 2023-01-16 Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same
CN202310055420.9A CN116501243A (en) 2022-01-26 2023-01-19 Memory controller, operation method thereof and operation method of memory device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220011494 2022-01-26
KR1020220011494 2022-01-26

Publications (1)

Publication Number Publication Date
KR20230115197A true KR20230115197A (en) 2023-08-02

Family

ID=87566801

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220064866A KR20230115197A (en) 2022-01-26 2022-05-26 Storage controller managing different types of blocks, an operating method thereof, and an operating method of a storage device including the same

Country Status (1)

Country Link
KR (1) KR20230115197A (en)

Similar Documents

Publication Publication Date Title
US11029853B2 (en) Dynamic segment allocation for write requests by a storage system
US9183136B2 (en) Storage control apparatus and storage control method
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
US10235069B2 (en) Load balancing by dynamically transferring memory range assignments
GB2507410A (en) Storage class memory having low power, low latency, and high capacity
CN104903872A (en) Systems, methods, and interfaces for adaptive persistence
KR20220041937A (en) Page table hooks to memory types
WO2012050934A2 (en) Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
JP2013530448A (en) Cache storage adapter architecture
US11755491B2 (en) Mapping supporting non-sequential writes at sequentially-written memory devices
KR20220049026A (en) Memory system for data binding to memory namespaces
CN113254358A (en) Method and system for address table cache management
CN115904212A (en) Data processing method and device, processor and hybrid memory system
US11947419B2 (en) Storage device with data deduplication, operation method of storage device, and operation method of storage server
US20240053917A1 (en) Storage device, operation method of storage device, and storage system using the same
CN115458013A (en) Storage device and operation method thereof
TWI782847B (en) Method and apparatus for performing pipeline-based accessing management in a storage server
KR102425470B1 (en) Data storage device and operating method thereof
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
EP4307129A1 (en) Method for writing data into solid-state hard disk
KR20220119348A (en) Snapshot management in partitioned storage
KR20230115197A (en) Storage controller managing different types of blocks, an operating method thereof, and an operating method of a storage device including the same
US11182329B2 (en) Data processing system and operating method thereof
EP4220414A1 (en) Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same
US20230236737A1 (en) Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same