[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20240121657A - A storage device and an operatiing method of a storage controller - Google Patents

A storage device and an operatiing method of a storage controller Download PDF

Info

Publication number
KR20240121657A
KR20240121657A KR1020230189973A KR20230189973A KR20240121657A KR 20240121657 A KR20240121657 A KR 20240121657A KR 1020230189973 A KR1020230189973 A KR 1020230189973A KR 20230189973 A KR20230189973 A KR 20230189973A KR 20240121657 A KR20240121657 A KR 20240121657A
Authority
KR
South Korea
Prior art keywords
block
blocks
physical
sub
list
Prior art date
Application number
KR1020230189973A
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/417,297 priority Critical patent/US20240264766A1/en
Priority to CN202410143522.0A priority patent/CN118426682A/en
Priority to EP24155399.9A priority patent/EP4414852A1/en
Publication of KR20240121657A publication Critical patent/KR20240121657A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

스토리지 장치 및 스토리지 컨트롤러의 동작방법이 제공된다. 상기 스토리지 장치는 각각이 복수의 서브 블록을 포함하는 복수의 물리 블록으로 구성된 비휘발성 메모리 장치 및 상기 복수의 물리 블록에 대한 프리 블록 리스트 및 빅팀 셀렉터블 블록 리스트를 포함하고, 상기 비휘발성 메모리 장치에 대한 구동을 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 호스트로부터 수신된 라이트 요청에 따른 데이터를 저장할 프리 블록이 충분하지 않는 경우 상기 프리 블록 리스트에서 전체 재사용가능한(Full Reusable) 물리 블록을 확인하여 상기 확인된 블록의 헤드를 선택하고, 상기 전체 재사용가능한 물리 블록이 없는 경우, 상기 빅팀 셀렉터블 블록 리스트에 기초하여 가비지 컬렉션을 수행하고 상기 가비지 컬렉션이 수행된 물리 블록의 주소를 상기 라이트 요청과 함께 상기 비휘발성 메모리 장치로 전송한다.A storage device and an operating method of a storage controller are provided. The storage device includes a nonvolatile memory device configured with a plurality of physical blocks, each of which includes a plurality of sub-blocks, and a free block list and a victim selectable block list for the plurality of physical blocks, and a storage controller for controlling operation of the nonvolatile memory device, wherein, when there are insufficient free blocks for storing data according to a write request received from a host, the storage controller checks for a full reusable physical block in the free block list and selects a head of the checked block, and when there is no full reusable physical block, performs garbage collection based on the victim selectable block list and transmits an address of a physical block on which the garbage collection was performed to the nonvolatile memory device together with the write request.

Description

스토리지 장치 및 스토리지 컨트롤러의 동작방법{A STORAGE DEVICE AND AN OPERATIING METHOD OF A STORAGE CONTROLLER}{A STORAGE DEVICE AND AN OPERATIING METHOD OF A STORAGE CONTROLLER}

본 발명은 비휘발성 메모리 장치를 포함하는 스토리지 장치에 관한 것이다.The present invention relates to a storage device including a nonvolatile memory device.

전자 기기가 고속화 및 저전력화됨에 따라, 이에 내장되는 메모리 장치 또한 빠른 읽기/쓰기 동작 및 낮은 동작 전압을 요구하고 있다. 랜덤 액세스 메모리(Random Access Memory, RAM)는 휘발성 또는 비휘발성일 수 있다. 휘발성 RAM은 전원이 제거될 때마다 휘발성 랜덤 액세스 메모리에 저장된 정보를 잃는 반면에, 비휘발성 랜덤 액세스 메모리는 전원이 메모리로부터 제거되는 때조차도 비휘발성 랜덤 액세스 메모리의 메모리 콘텐츠들을 유지할 수 있다.As electronic devices become faster and less power-consuming, memory devices embedded in them also require fast read/write operations and low operating voltages. Random Access Memory (RAM) can be volatile or nonvolatile. Volatile RAM loses information stored in volatile random access memory whenever power is removed, while nonvolatile random access memory can retain memory contents of nonvolatile random access memory even when power is removed from the memory.

본 발명이 해결하려는 과제는 멀티 스택 구조에서 서브 블록을 포함하는 비휘발성 메모리 장치에서 저장 공간 효율이 향상된 스토리지 장치를 제공하는 것이다.The problem to be solved by the present invention is to provide a storage device with improved storage space efficiency in a nonvolatile memory device including sub-blocks in a multi-stack structure.

본 발명이 해결하려는 과제는 서브 블록을 포함하는 비휘발성 메모리 장치에 대한 라이트 동작시, 서브 블록에 대한 이레이즈 동작을 자유롭게 하면서도 비휘발성 메모리 장치의 공간을 보다 효율적으로 활용할 수 있는 스토리지 컨트롤러의 동작 방법을 제공하는 것이다. The problem to be solved by the present invention is to provide an operating method of a storage controller that can more efficiently utilize the space of a nonvolatile memory device while freely performing an erase operation for a sub-block during a write operation for a nonvolatile memory device including a sub-block.

본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The problems to be solved by the present invention are not limited to the problems mentioned above, and other problems not mentioned will be clearly understood by those skilled in the art from the description below.

상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는 각각이 복수의 서브 블록을 포함하는 복수의 물리 블록으로 구성된 비휘발성 메모리 장치 및 상기 복수의 물리 블록에 대한 프리 블록 리스트 및 빅팀 셀렉터블 블록 리스트를 포함하고, 상기 비휘발성 메모리 장치에 대한 구동을 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 호스트로부터 수신된 라이트 요청에 따른 데이터를 저장할 프리 블록이 충분하지 않는 경우 상기 프리 블록 리스트에서 전체 재사용가능한 물리 블록을 확인하여 상기 확인된 블록의 헤드를 선택하고, 상기 전체 재사용가능한 물리 블록이 없는 경우, 상기 빅팀 셀렉터블 블록 리스트에 기초하여 가비지 컬렉션을 수행하고 상기 가비지 컬렉션이 수행된 물리 블록의 주소를 상기 라이트 요청과 함께 상기 비휘발성 메모리 장치로 전송한다.According to some embodiments of the present invention for solving the above problem, a storage device includes a nonvolatile memory device comprising a plurality of physical blocks, each of which includes a plurality of sub-blocks, and a free block list and a victim selectable block list for the plurality of physical blocks, and a storage controller for controlling operation of the nonvolatile memory device, wherein, when there are insufficient free blocks for storing data according to a write request received from a host, the storage controller checks for all reusable physical blocks in the free block list and selects a head of the checked block, and when there are no all reusable physical blocks, performs garbage collection based on the victim selectable block list and transmits an address of a physical block on which the garbage collection was performed to the nonvolatile memory device together with the write request.

상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는 멀티 스택 구조로 복수의 서브 블록으로 구분된 물리 블록을 복수개 포함하는 비휘발성 메모리 장치, 상기 비휘발성 메모리 장치의 구동을 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 호스트의 라이트 요청을 수신하면 라이트 요청에 따른 프리 블록의 주소를 요청하는 라이트 모듈, 가비지 컬렉션을 수행하기 위한 빅팀 블록의 주소를 요청하는 가비지 컬렉터 및 프리 블록 리스트 및 빅팀 셀렉터블 블록 리스트를 저장하고, 상기 프리 블록 리스트 또는 상기 빅팀 셀렉터블 블록 리스트에서 라이트 모듈의 요청 또는 상기 가비지 컬렉터의 요청에 상응하는 물리 블록을 선택하여 리턴하는 블록 관리부를 포함한다. According to some embodiments of the present invention for solving the above problem, a storage device includes a nonvolatile memory device including a plurality of physical blocks divided into a plurality of sub-blocks in a multi-stack structure, a storage controller for controlling operation of the nonvolatile memory device, and the storage controller includes a write module for requesting an address of a free block according to the write request when a write request from a host is received, a garbage collector for requesting an address of a victim block for performing garbage collection, and a block management unit for storing a free block list and a victim selectable block list, and selecting and returning a physical block corresponding to a request of the write module or a request of the garbage collector from the free block list or the victim selectable block list.

상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법은 호스트로부터 라이트 요청을 수신하는 단계, 상기 라이트 요청에 상응하여 프리 블록 리스트에서 상기 라이트 요청된 데이터를 저장가능한 전체 재사용가능한 제1 물리 블록이 있는지 확인하는 단계, 상기 전체 재사용가능한 제1 물리 블록이 있는 경우 제1 물리 블록이 속한 그룹의 제1 헤드를 선택하여 비휘발성 메모리 장치로 상기 제1 헤드를 포함한 프리 블록 주소를 리턴하는 단계, 상기 제1 물리 블록이 없는 경우, 상기 프리 블록 리스트에서 적어도 하나의 유효 서브 블록을 포함하는 제2 헤드를 선택하고, 상기 제2 헤드가 속한 물리 블록에 상기 라이트 요청된 데이터를 저장하기에 충분하면 상기 제2 헤드가 속한 물리 블록의 주소를 리턴하는 단계, 상기 라이트 요청과 함께 상기 리턴된 물리 블록의 주소를 상기 비휘발성 메모리 장치로 전송하는 단계를 포함한다. According to some embodiments of the present invention for solving the above problem, a method of operating a storage controller includes the steps of: receiving a write request from a host; checking whether there is a first physical block in a free block list corresponding to the write request that is entirely reusable and capable of storing the write-requested data; if there is a first physical block in a free block list that is entirely reusable, selecting a first head of a group to which the first physical block belongs and returning a free block address including the first head to a nonvolatile memory device; if there is no first physical block, selecting a second head including at least one valid sub-block from the free block list, and returning an address of the physical block to which the second head belongs if the physical block to which the second head belongs is sufficient to store the write-requested data; and transmitting the address of the returned physical block to the nonvolatile memory device together with the write request.

도 1은 본 발명의 예시적인 실시예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 2는 메모리 장치를 나타내는 예시적인 블록도이다.
도 3은 몇몇 실시예에 따른 FTL 모듈(400)을 구체적으로 나타낸 도면이다.
도 4는 몇몇 실시예에 따른 하나의 물리 블록(500)을 도시한 도면이다.
도 5는 몇몇 실시예에 따라 데이터 액세스 동작을 설명하기 위해 하나의 물리 블록을 간략하게 나타낸 개념도이다.
도 6은 몇몇 실시예에 따른 프리 블록 리스트를 설명하기 위한 개념도이다.
도 7은 몇몇 실시예에 따른 빅팀 셀렉터블 블록 리스트를 설명하기 위한 개념도이다.
도 8은 몇몇 실시예에 따른 FTL 모듈에 저장되는 블록 리스트를 설명하기 위한 개념도이다.
도 9는 몇몇 실시예에 따른 스토리지 장치의 라이트 동작을 설명하기 위한 도면이다.
도 11 내지 도 13은 몇몇 실시예에 따른 스토리지 장치의 동작방법을 설명하기 위한 흐름도이다.
도 14는 본 발명의 일 실시예에 따른 스토리지(storage) 장치가 적용된 시스템을 도시한 도면이다.
FIG. 1 is a block diagram illustrating a host-storage system according to an exemplary embodiment of the present invention.
Figure 2 is an exemplary block diagram illustrating a memory device.
FIG. 3 is a drawing specifically illustrating an FTL module (400) according to some embodiments.
FIG. 4 is a diagram illustrating one physical block (500) according to some embodiments.
FIG. 5 is a schematic diagram illustrating one physical block to illustrate data access operations according to some embodiments.
FIG. 6 is a conceptual diagram illustrating a free block list according to some embodiments.
FIG. 7 is a conceptual diagram illustrating a big team selectable block list according to some embodiments.
Figure 8 is a conceptual diagram illustrating a block list stored in an FTL module according to some embodiments.
FIG. 9 is a diagram illustrating light operation of a storage device according to some embodiments.
FIGS. 11 to 13 are flowcharts illustrating a method of operating a storage device according to some embodiments.
FIG. 14 is a diagram illustrating a system to which a storage device according to one embodiment of the present invention is applied.

이하에서, 도 1 내지 도 14를 참조하여, 본 발명의 몇몇 실시예에 따른 스토리지 장치에 대해서 설명한다.Hereinafter, storage devices according to some embodiments of the present invention will be described with reference to FIGS. 1 to 14.

도 1은 본 발명의 예시적인 실시예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.FIG. 1 is a block diagram illustrating a host-storage system according to an exemplary embodiment of the present invention.

호스트-스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 장치(NVM, 220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.The host-storage system (10) may include a host (100) and a storage device (200). In addition, the storage device (200) may include a storage controller (210) and a non-volatile memory device (NVM, 220). In addition, according to an exemplary embodiment of the present invention, the host (100) may include a host controller (110) and a host memory (120). The host memory (120) may function as a buffer memory for temporarily storing data to be transmitted to the storage device (200) or data transmitted from the storage device (200).

스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.The storage device (200) may include storage media for storing data according to a request from the host (100). As an example, the storage device (200) may include at least one of a solid state drive (SSD), an embedded memory, and a removable external memory. If the storage device (200) is an SSD, the storage device (200) may be a device following the NVMe (non-volatile memory express) standard. If the storage device (200) is an embedded memory or an external memory, the storage device (200) may be a device following the UFS (universal flash storage) or eMMC (embedded multi-media card) standard. The host (100) and the storage device (200) may each generate a packet according to an adopted standard protocol and transmit the packet.

스토리지 장치(200)의 비휘발성 메모리 장치(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리 장치들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.When the nonvolatile memory device (220) of the storage device (200) includes a flash memory, the flash memory may include a 2D NAND memory array or a 3D (or vertical) NAND (VNAND) memory array. As another example, the storage device (200) may include various other types of nonvolatile memory devices. For example, the storage device (200) may apply MRAM (Magnetic RAM), Spin-Transfer Torgue MRAM, Conductive bridging RAM (CBRAM), FeRAM (Ferroelectric RAM), PRAM (Phase RAM), Resistive RAM, and various other types of memory.

스토리지 장치(200)는 예를 들면, PoP(Package on Package), SIP(Systeim in Package), SoC(System on Chip), MCP(Multi Chip Package), CoB(Chip on Board), WFP(Wafer-level Fabricated Package), WSP(Wafer-level Stack Package) 등과 같은 다양한 종류의 패키지들 중 어느 하나의 형태로 제조될 수 있다.The storage device (200) may be manufactured in the form of any one of various types of packages, such as, for example, a PoP (Package on Package), a SIP (System in Package), a SoC (System on Chip), an MCP (Multi Chip Package), a CoB (Chip on Board), a WFP (Wafer-level Fabricated Package), a WSP (Wafer-level Stack Package), etc.

일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 어플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 어플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 어플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.According to one embodiment, the host controller (110) and the host memory (120) may be implemented as separate semiconductor chips. Alternatively, in some embodiments, the host controller (110) and the host memory (120) may be integrated into the same semiconductor chip. As an example, the host controller (110) may be one of a plurality of modules provided in an application processor, and the application processor may be implemented as a system on chip (SoC). In addition, the host memory (120) may be an embedded memory provided in the application processor, or a nonvolatile memory or memory module disposed outside the application processor.

호스트 컨트롤러(110)는 호스트 메모리(120)의 데이터(예컨대, 라이트 데이터)를 비휘발성 메모리 장치(220)에 저장하거나, 비휘발성 메모리 장치(220)의 데이터(예컨대, 리드 데이터)를 호스트 메모리(120)에 저장하는 동작을 관리할 수 있다.The host controller (110) can manage an operation of storing data (e.g., write data) of the host memory (120) in a nonvolatile memory device (220), or storing data (e.g., read data) of the nonvolatile memory device (220) in the host memory (120).

스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 CPU(central processing unit, 213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 레이어 모듈(Flash Translation Layer(이하 FTL 모듈), 214), 패킷 매니저(215), 버퍼 메모리(216), ECC 모듈(error correction code, 217) 엔진 및 AES(advanced encryption standard, 218) 엔진을 더 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL, 214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(211)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리에 대한 데이터 라이트 및 리드 동작이 제어될 수 있다.The storage controller (210) may include a host interface (211), a memory interface (212), and a central processing unit (CPU, 213). In addition, the storage controller (210) may further include a flash translation layer module (Flash Translation Layer (hereinafter referred to as FTL module), 214), a packet manager (215), a buffer memory (216), an ECC module (error correction code, 217) engine, and an AES (advanced encryption standard, 218) engine. The storage controller (210) may further include a working memory (not shown) into which a flash translation layer (FTL, 214) is loaded, and data write and read operations for a non-volatile memory may be controlled by the CPU (211) executing the flash translation layer.

호스트 인터페이스(211)는 호스트(100)에 연결되어 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리 장치(220)에 라이트될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리 장치(220)로부터 리드된 데이터 등을 포함할 수 있다. 메모리 인터페이스(212)는 비휘발성 메모리 장치(220)에 라이트될 데이터를 스토리지 컨트롤러(210)에서 비휘발성 메모리 장치(220)로 송신하거나, 비휘발성 메모리 장치(220)로부터 리드된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.The host interface (211) is connected to the host (100) and can transmit and receive packets. A packet transmitted from the host (100) to the host interface (211) may include a command or data to be written to a nonvolatile memory device (220), and a packet transmitted from the host interface (211) to the host (100) may include a response to the command or data read from the nonvolatile memory device (220). A memory interface (212) may transmit data to be written to the nonvolatile memory device (220) from the storage controller (210) to the nonvolatile memory device (220), or receive data read from the nonvolatile memory device (220). This memory interface (212) may be implemented to comply with a standard protocol such as Toggle or ONFI.

FTL 모듈(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리 장치(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리 장치(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 이레이즈 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 서브 블록의 유효 데이터를 새 서브 블록에 복사한 후 기존 서브 블록을 이레이즈(erase)하는 방식을 통해 비휘발성 메모리 장치(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.The FTL module (214) can perform various functions such as address mapping, wear-leveling, and garbage collection. The address mapping operation is an operation to change a logical address received from a host into a physical address used to actually store data in the nonvolatile memory device (220). Wear-leveling is a technology to prevent excessive deterioration of a specific block by ensuring that blocks in the nonvolatile memory device (220) are used uniformly, and can be implemented through a firmware technology that balances the erase counts of physical blocks, for example. Garbage collection is a technology to secure available capacity in the nonvolatile memory device (220) by copying valid data of a sub-block to a new sub-block and then erasing the existing sub-block.

패킷 매니저(215)는 호스트(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(216)는 비휘발성 메모리 장치(220)에 라이트될 데이터 혹은 비휘발성 메모리 장치(220)로부터 리드될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.The packet manager (215) can generate a packet according to the protocol of the interface agreed upon with the host (100), or parse various pieces of information from a packet received from the host (100). In addition, the buffer memory (216) can temporarily store data to be written to the nonvolatile memory device (220) or data to be read from the nonvolatile memory device (220). The buffer memory (216) may be a configuration provided within the storage controller (210), but may also be placed outside the storage controller (210).

ECC 엔진(217)은 비휘발성 메모리 장치(220)로부터 리드되는 리드 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리 장치(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리 장치(220) 내에 저장될 수 있다. 비휘발성 메모리 장치(220)로부터의 데이터 리드 시, ECC 엔진(217)은 리드 데이터와 함께 비휘발성 메모리 장치(220)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.The ECC engine (217) can perform an error detection and correction function for read data read from a nonvolatile memory device (220). More specifically, the ECC engine (217) can generate parity bits for write data to be written to the nonvolatile memory device (220), and the parity bits generated in this way can be stored in the nonvolatile memory device (220) together with the write data. When reading data from the nonvolatile memory device (220), the ECC engine (217) can correct an error in the read data by using the parity bits read from the nonvolatile memory device (220) together with the read data, and output the read data with the error corrected.

AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.The AES engine (218) can perform at least one of an encryption operation and a decryption operation on data input to the storage controller (210) using a symmetric key algorithm.

도 2는 메모리 장치를 나타내는 예시적인 블록도이다.Figure 2 is an exemplary block diagram illustrating a memory device.

도 2를 참조하면, 메모리 장치(300)는 제어 로직 회로(320), 메모리 셀 어레이(330), 페이지 버퍼부(340), 전압 생성기(350), 및 로우 디코더(360)를 포함할 수 있다. 도 2에는 도시되지 않았으나, 메모리 장치(300)는 도 1에 도시된 메모리 인터페이스 회로(212, 310)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.Referring to FIG. 2, the memory device (300) may include a control logic circuit (320), a memory cell array (330), a page buffer unit (340), a voltage generator (350), and a row decoder (360). Although not shown in FIG. 2, the memory device (300) may further include a memory interface circuit (212, 310) shown in FIG. 1, and may also further include column logic, a pre-decoder, a temperature sensor, a command decoder, an address decoder, etc.

제어 로직 회로(320)는 메모리 장치(300) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(320)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.The control logic circuit (320) can control various operations within the memory device (300) in general. The control logic circuit (320) can output various control signals in response to a command (CMD) and/or an address (ADDR) from the memory interface circuit (310). For example, the control logic circuit (320) can output a voltage control signal (CTRL_vol), a row address (X-ADDR), and a column address (Y-ADDR).

메모리 셀 어레이(330)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(330)는 비트 라인들(BL)을 통해 페이지 버퍼부(340)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(360)에 연결될 수 있다. The memory cell array (330) may include a plurality of memory blocks (BLK1 to BLKz) (z is a positive integer), and each of the plurality of memory blocks (BLK1 to BLKz) may include a plurality of memory cells. The memory cell array (330) may be connected to a page buffer unit (340) through bit lines (BL) and may be connected to a row decoder (360) through word lines (WL), string select lines (SSL), and ground select lines (GSL).

예시적인 실시 예에서, 메모리 셀 어레이(330)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공 보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시 예에서, 메모리 셀 어레이(330)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다. In an exemplary embodiment, the memory cell array (330) may include a three-dimensional memory cell array, and the three-dimensional memory cell array may include a plurality of NAND strings. Each NAND string may include memory cells respectively connected to word lines vertically stacked on the substrate. U.S. Patent Publication No. 7,679,133, U.S. Patent Publication No. 8,553,466, U.S. Patent Publication No. 8,654,587, U.S. Patent Publication No. 8,559,235, and U.S. Patent Application Publication No. 2011/0233648 are herein incorporated by reference in their entirety. In an exemplary embodiment, the memory cell array (330) may include a two-dimensional memory cell array, and the two-dimensional memory cell array may include a plurality of NAND strings arranged along the row and column directions.

몇몇 실시예에 따라 메모리 셀 어레이(330)는 멀티 스택 구조로 구현된 복수의 물리 블록들을 포함할 수 있다. 각 물리 블록은 예를 들어 스택에 의해 구분된 복수의 서브 블록을 포함할 수 있다. 서브 블록은 복수의 페이지를 포함한다. 물리 블록 및 서브 블록은 이레이즈 동작의 단위일 수 있고 페이지는 리드 또는 라이트 동작의 단위일 수 있다. According to some embodiments, the memory cell array (330) may include a plurality of physical blocks implemented in a multi-stack structure. Each physical block may include a plurality of sub-blocks separated by stacks, for example. The sub-blocks include a plurality of pages. The physical block and the sub-block may be units of an erase operation, and the page may be a unit of a read or write operation.

일반적으로 메모리 셀 어레이(330)는 데이터 오버라이팅을 허용하지 않는다. 즉 동일한 페이지에 기존 데이터가 다른 데이터로 제자리(In-Place)에서 라이팅되지 않는다. 새로운 데이터는 새로운 페이지에 라이트되고, 원 페이지는 무효 페이지가 된다. 즉, 페이지들은 3가지 상태 - 프리 페이지(라이트 가능), 유효 페이지(유효한 데이터가 저장된 상태) 및 무효 페이지(유효한 데이터를 더 이상 포함하지 않고 이레이즈할 때까지 사용할 수 없는 상태)- 중 어느 하나의 상태일 수 있다. In general, the memory cell array (330) does not allow data overwriting. That is, existing data on the same page is not written in place with other data. New data is written to a new page, and the original page becomes an invalid page. That is, pages can be in one of three states: a free page (can be written), a valid page (a state in which valid data is stored), and an invalid page (a state in which valid data is no longer contained and cannot be used until erased).

페이지 버퍼부(340)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼부(340)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼부(340)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 라이트 동작 시, 페이지 버퍼부(340)는 선택된 비트 라인으로 라이트될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 리드 동작 시, 페이지 버퍼부(340)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다. The page buffer unit (340) may include a plurality of page buffers (PB1 to PBn) (n is an integer greater than or equal to 3), and the plurality of page buffers (PB1 to PBn) may be respectively connected to memory cells via a plurality of bit lines (BL). The page buffer unit (340) may select at least one bit line among the bit lines (BL) in response to a column address (Y-ADDR). The page buffer unit (340) may operate as a write driver or a sense amplifier depending on the operation mode. For example, in a write operation, the page buffer unit (340) may apply a bit line voltage corresponding to data to be written to the selected bit line. In a read operation, the page buffer unit (340) may detect data stored in the memory cell by detecting a current or voltage of the selected bit line.

전압 생성기(350)는 전압 제어 신호(CTRL_vol)를 기반으로 라이트, 리드, 및 이레이즈 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(350)는 워드 라인 전압(VWL)으로서 라이트 전압, 리드 전압, 라이트 검증 전압, 이레이즈 전압 등을 생성할 수 있다.The voltage generator (350) can generate various types of voltages for performing write, read, and erase operations based on the voltage control signal (CTRL_vol). For example, the voltage generator (350) can generate a write voltage, a read voltage, a write verify voltage, an erase voltage, etc. as a word line voltage (VWL).

로우 디코더(360)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 라이트 동작 시, 로우 디코더(360)는 선택된 워드 라인으로 라이트 전압 및 라이트 검증 전압을 인가하고, 리드 동작 시, 선택된 워드 라인으로 리드 전압을 인가할 수 있다.The row decoder (360) can select one of a plurality of word lines (WL) and one of a plurality of string select lines (SSL) in response to a row address (X-ADDR). For example, during a write operation, the row decoder (360) can apply a write voltage and a write verify voltage to the selected word line, and during a read operation, the row decoder (360) can apply a read voltage to the selected word line.

도 3은 몇몇 실시예에 따른 FTL 모듈(400)을 구체적으로 나타낸 도면이다.FIG. 3 is a drawing specifically illustrating an FTL module (400) according to some embodiments.

도 3을 참조하면, 몇몇 실시예에 따라 도 1의 FTL 모듈(214)은 도 3의 FTL 모듈(400)과 같이 구현될 수 있다. FTL 모듈(400)은 블록관리부(410), 가비지 컬렉터(420) 및 라이트 모듈(430)을 포함할 수 있다. Referring to FIG. 3, according to some embodiments, the FTL module (214) of FIG. 1 may be implemented like the FTL module (400) of FIG. 3. The FTL module (400) may include a block management unit (410), a garbage collector (420), and a write module (430).

블록관리부(410)는 프리 블록 리스트(411) 및 빅팀 셀렉터블 블록 리스트(415)를 포함할 수 있다. 블록 관리부(410)는 어드레스 매핑, 웨어-레벨링 동작 및 가비지 컬렉션 동작을 위해 물리 블록 및 서브 블록의 주소를 프리 블록 리스트와 빅팀 셀렉터블 블록 리스트로 구분하여 관리할 수 있다.The block management unit (410) may include a free block list (411) and a victim selectable block list (415). The block management unit (410) may manage addresses of physical blocks and sub blocks by dividing them into a free block list and a victim selectable block list for address mapping, wear-leveling operation, and garbage collection operation.

웨어-레벨링 동작은 블록당 라이트 횟수/이레이즈 횟수가 카운트되고, 복수의 블록들 간 열화 정도가 균등하게 분배되도록 하는 것이다. Wear-leveling operation counts the number of writes/erases per block and ensures that the degree of degradation is evenly distributed across multiple blocks.

가비지 컬렉터(420)는 블록 관리부(410)의 웨어-레벨링 상태 정보에 기초하여 데이터를 재배열할 수 있다. 예를 들어, 비휘발성 메모리 장치(220)에서 수행되는 반복된 라이트/이레이즈 동작으로 인해 무효(Invalid) 페이지 및 무효 서브 블록이 늘어나는 것을 해결하기 위해 데이터를 재배열한다. The garbage collector (420) can rearrange data based on the wear-leveling status information of the block management unit (410). For example, the data is rearranged to address the increase in invalid pages and invalid sub-blocks due to repeated write/erase operations performed in the nonvolatile memory device (220).

가비지 컬렉터(420)는 유저 데이터의 라이트 및 리드 등이 수행되지 않는 임의의 구간에서 데이터의 신뢰성 향상에 관련된 백그라운드 동작으로서 가비지 컬렉션 동작을 수행할 수 있다. 본 명세서에서, 유효(Valid) 페이지/유효 서브 블록은 데이터를 포함하는 페이지/서브블록을 지칭하고, 무효(Invalid) 페이지/무효 서브 블록은 데이터를 포함하지 않는 페이지/서브블록을 지칭한다. 가비지 컬렉션 동작은 프리 블록을 확보하기 위해 제1 물리 블록에 있던 유효 페이지를 제2 물리 블록으로 이동하여 라이트하고, 제1 물리 블록을 이레이즈하는 것을 포함한다. 또한, 가비지 컬렉션 동작은 제1 서브 블록에 있는 유효 페이지를 제2 서브 블록으로 이동하여 라이트하고, 제1 서브 블록을 이레이즈 하는 것을 포함한다. 본 명세서에서, 빅팀 블록은 가비지 컬렉션이 필요한 블록으로서, 유효 페이지를 이동하고 이레이즈되는 제1 물리 블록 또는 제1 서브 블록을 지칭한다.The garbage collector (420) may perform a garbage collection operation as a background operation related to improving the reliability of data in an arbitrary section where writes and reads of user data are not performed. In this specification, a valid page/valid sub-block refers to a page/sub-block including data, and an invalid page/invalid sub-block refers to a page/sub-block not including data. The garbage collection operation includes moving a valid page in a first physical block to a second physical block and writing it, and erasing the first physical block to secure a free block. In addition, the garbage collection operation includes moving a valid page in the first sub-block to the second sub-block and writing it, and erasing the first sub-block. In this specification, a victim block refers to a block requiring garbage collection, and refers to a first physical block or a first sub-block from which a valid page is moved and erased.

라이트 모듈(430)은 호스트(100)의 요청에 따라 호스트 메모리(120)의 데이터를 비휘발성 메모리 장치(220)에 라이트하는 동작을 수행할 수 있다. 라이트 모듈(430)은 프리 블록에 데이터를 라이트할 수 있다. The light module (430) can perform an operation of writing data of the host memory (120) to the nonvolatile memory device (220) according to a request of the host (100). The light module (430) can write data to a free block.

프리 블록(Free Block)은 몇몇 실시예에 따라 모두 무효(Invalid) 서브 블록만 포함한 물리 블록일 수도 있고, 적어도 하나의 유효 서브 블록을 포함한 물리 블록일 수도 있다. 그러나 모두 유효 서브 블록만으로 구성된 것은 프리 블록에 포함되지 않는다. 프리 블록 리스트는 무효 서브 블록의 비율에 기초하여 제1 순위로 소팅되어 그룹핑되고, 각 그룹 내에서 열화정도(예를 들어 이레이즈 카운트)에 따라 제2 순위로 소팅된 물리 블록의 주소 리스트일 수 있다. A free block may be a physical block that contains only invalid sub-blocks, or may be a physical block that contains at least one valid sub-block, depending on some embodiments. However, a physical block that consists of only valid sub-blocks is not included in a free block. The free block list may be a list of addresses of physical blocks that are sorted by a first priority based on the proportion of invalid sub-blocks and grouped, and then sorted by a second priority based on the degree of deterioration (e.g., erase count) within each group.

스토리지 컨트롤러(210)는 라이트 요청된 데이터에 상응하는 사이즈를 가진 프리 블록을 탐색하여, 비휘발성 메모리 장치(220)로 프리 블록의 주소를 전송한다. 만약 프리 블록에 적어도 하나의 유효 서브 블록이 포함된 경우, 스토리지 컨트롤러(210)는 상기 유효 서브 블록을 다른 물리 블록으로 이동하는 가비지 컬렉션을 수행한 후, 가비지 컬렉션이 완료된 해당 서브 블록을 무효 서브 블록으로 하고, 상기 무효 서브 블록이 포함된 물리 블록을 프리 블록으로 보아, 비휘발성 메모리 장치로 주소를 전송한다.The storage controller (210) searches for a free block having a size corresponding to the data for which a write request has been made, and transmits the address of the free block to the nonvolatile memory device (220). If the free block includes at least one valid sub-block, the storage controller (210) performs garbage collection to move the valid sub-block to another physical block, and then designates the corresponding sub-block for which garbage collection has been completed as an invalid sub-block, and views the physical block including the invalid sub-block as a free block, and transmits the address to the nonvolatile memory device.

빅팀 블록은 가비지 컬렉션에서 저장된 데이터가 다른 서브 블록으로 옮겨지는 유효 서브 블록일 수 있다. 빅팀 블록은 몇몇 실시예에 따라 적어도 하나의 유효 페이지를 포함할 수 있다. 그러나 모두 무효 서브 블록만으로 구성된 것은 빅팀 블록에 포함되지 않는다. 빅팀 셀렉터블 블록 리스트는 무효 서브 블록의 비율에 기초하여 제1 순위로 소팅되어 그룹핑되고, 각 그룹 내에서 유효 페이지 카운트에 따라 제2 순위로 소팅된 물리 블록의 주소 리스트일 수 있다. A victim block may be a valid sub-block from which data saved in garbage collection is moved to another sub-block. A victim block may include at least one valid page according to some embodiments. However, a victim block composed entirely of invalid sub-blocks is not included in the victim block. A victim selectable block list may be a list of addresses of physical blocks that are sorted by a first priority based on a ratio of invalid sub-blocks and grouped, and sorted by a second priority based on a valid page count within each group.

도 4는 몇몇 실시예에 따른 하나의 물리 블록(500)을 도시한 도면이다.FIG. 4 is a diagram illustrating one physical block (500) according to some embodiments.

도 4를 참조하면, 도 2의 메모리 셀 어레이(330)는 복수의 물리 블록(BLK, 500)을 포함할 수 있다. 각 물리 블록은 복수의 메모리 셀들을 포함할 수 있고, 복수의 메모리 셀들은 복수의 페이지를 구성할 수 있다. 물리 블록(BLK)은 복수의 서브 블록(Sub-block)을 포함할 수 있다. 물리 블록은 공통소스라인(CSL, common source line)과 비트라인(BL)사이에 적층된 복수의 메탈패드를 포함하고, 서브 블록(511, 512, 513)은 적층된 메탈패드를 소정의 개수로 구분한 것일 수 있다. 도시된 예에서, N번째 물리블록(500)은 3 개의 서브 블록(511, 512, 513)을 포함할 수 있다. 서브 블록은 둘 이상의 페이지를 포함할 수 있다. Referring to FIG. 4, the memory cell array (330) of FIG. 2 may include a plurality of physical blocks (BLK, 500). Each physical block may include a plurality of memory cells, and the plurality of memory cells may configure a plurality of pages. The physical block (BLK) may include a plurality of sub-blocks. The physical block may include a plurality of metal pads stacked between a common source line (CSL) and a bit line (BL), and the sub-blocks (511, 512, 513) may be divided into a predetermined number of stacked metal pads. In the illustrated example, the Nth physical block (500) may include three sub-blocks (511, 512, 513). The sub-blocks may include two or more pages.

서브블록은 물리블록(500)의 최하단에 배치된 공통 소스 라인(CSL)부터 최상단에 배치된 비트라인(BL) 사이에 서로 적층되어 배치될 수 있다. 즉, 제1 서브블록(511)은 공통 소스 라인(CSL) 위에 배치되고, 제2 서브블록(412)는 제1 서브 블록(512) 위에 적층되고, 제3 서브블록(513)은 비트라인(BL) 아래에서 제2 서브블록(512) 위에 적층배치될 수 있다. 이하 본 발명의 예시적 실시예에서는 하나의 물리블록이 3개의 서브 블록을 포함하는 것으로 설명하나, 본 발명의 범위가 이에 한정되지 않고 하나의 물리 블록이 2이상의 서브 블록을 포함하는 경우에도 적용된다 할것이다. The sub-blocks may be arranged to be stacked on each other between the common source line (CSL) arranged at the bottom of the physical block (500) and the bit line (BL) arranged at the top. That is, the first sub-block (511) may be arranged on the common source line (CSL), the second sub-block (412) may be stacked on the first sub-block (512), and the third sub-block (513) may be stacked on the second sub-block (512) below the bit line (BL). In the exemplary embodiment of the present invention below, it is described that one physical block includes three sub-blocks, but the scope of the present invention is not limited thereto and may be applied even when one physical block includes two or more sub-blocks.

서브 블록은 프리 블록 리스트 및 빅팀 셀렉터블 블록 리스트로 관리될 수 있다. 프리 블록은 라이트 동작이 수행될 물리 블록일 수 있다. 몇몇 실시예에 따라 프리 블록은 모두 무효(Invalid) 서브 블록을 포함할 수 있다. 모두 무효 서브 블록을 포함한 물리 블록의 경우 전체 이레이즈 후 재사용(reusable)할 수 있다(Full reusable). Sub-blocks can be managed by a free block list and a victim selectable block list. A free block can be a physical block on which a write operation is to be performed. According to some embodiments, a free block can include all invalid sub-blocks. A physical block including all invalid sub-blocks can be reusable after a full erase (Full reusable).

빅팀 블록은 가비지 컬렉션이 수행시 데이터가 이레이즈될 물리 블록일 수 있다. 빅팀 블록은 복수의 물리 블록들 중 적어도 하나의 유효(Valid) 서브 블록을 포함할 수 있다. 또는 몇몇 실시예에 따라 빅팀 블록은 모두 유효 서브 블록만 포함하는 물리 블록일 수 있다. A victim block may be a physical block from which data is to be erased when garbage collection is performed. A victim block may include at least one valid sub-block among a plurality of physical blocks. Or, in some embodiments, a victim block may be a physical block that includes only valid sub-blocks.

프리 블록과 빅팀 블록에 대해서는 도 5 및 도 6에서 보다 상세히 설명한다.The free block and the big team block are described in more detail in Figures 5 and 6.

비휘발성 메모리 장치(330)는 페이지 단위로 메모리 셀 어레이(330)에 데이터를 라이트하거나, 리드할 수 있다. 비휘발성 메모리 장치(330)는 서브 블록 단위 또는 물리 블록 단위로 데이터를 이레이즈 할 수 있다. 이레이즈 동작시 하나 이상의 서브 블록이 선택될 수 있고, 선택된 서브 블록들은 동시에 데이터가 이레이즈되거나 순차적으로 이레이즈될 수 있다. 이레이즈 동작으로 선택된 무효 서브 블록들은 무효(Invalid) 페이지만 포함된 서브 블록들일 수 있다. 빅팀 블록에 포함된 서브 블록들은 일 실시예에 따라 동일한 수의 페이지들을 포함할 수도 있고 또는 다른 실시예에 따라 서로 다른 수의 페이지들을 포함할 수 있다.A nonvolatile memory device (330) can write or read data to a memory cell array (330) in units of pages. The nonvolatile memory device (330) can erase data in units of sub blocks or physical blocks. During an erase operation, one or more sub blocks can be selected, and the selected sub blocks can have their data erased simultaneously or sequentially. Invalid sub blocks selected by the erase operation can be sub blocks that only include invalid pages. The sub blocks included in a victim block may include the same number of pages according to one embodiment, or may include different numbers of pages according to another embodiment.

도 5는 몇몇 실시예에 따라 데이터 액세스 동작을 설명하기 위해 하나의 물리 블록을 간략하게 나타낸 개념도이다. FIG. 5 is a schematic diagram illustrating one physical block to illustrate data access operations according to some embodiments.

도 4 및 도 5를 참조하면, 몇몇 실시예에 따라 하나의 물리 블록은 복수의 서브 블록을 포함한다. 물리 블록(BLK a, BLK b, BLK c, BLK d)은 3개의 서브 블록을 포함한다고 하자. 데이터가 저장되어 있어 쓰기 가능하지 않은 무효 페이지(Invalid page)만 포함한 경우의 서브 블록은 I로 표시하였다. 적어도 하나의 유효 페이지(Valid page)를 포함한 경우의 서브 블록은 V로 표시하였다. 즉, V로 표시된 서브 블록은 유효 페이지만 포함할 수도 있고, 유효 페이지와 무효 페이지를 모두 포함할 수도 있다.Referring to FIGS. 4 and 5, according to some embodiments, one physical block includes a plurality of sub-blocks. Assume that a physical block (BLK a, BLK b, BLK c, BLK d) includes three sub-blocks. A sub-block that includes only invalid pages that store data and are not writable is indicated by I. A sub-block that includes at least one valid page is indicated by V. That is, a sub-block indicated by V may include only valid pages, or may include both valid pages and invalid pages.

멀티 스택 기반의 비휘발성 메모리 장치에서, 데이터의 리드 동작 및 라이트 동작은 페이지 단위로 수행되고, 이레이즈 동작은 서브 블록 단위로 수행될 수 있다. 이레이즈 동작시 하나의 물리 블록 내에 속하는 서브 블록 간 이레이즈 순서의 제약은 없으나, 각 서브 블록 간 데이터가 라이트되는 순서는 지켜야 하는 제약사항이 존재한다.In a nonvolatile memory device based on a multi-stack, data read and write operations are performed in units of pages, and the erase operation can be performed in units of sub blocks. There is no restriction on the erase order between sub blocks within a single physical block during the erase operation, but there is a restriction that the order in which data is written between each sub block must be maintained.

예를 들어 물리 블록(BLK a)는 서브 블록 ①, 서브 블록 ②, 서브 블록 ③ 모두 유효 서브 블록이어서, 라이트 불가능한 상태이므로, 가비지 컬렉션의 빅팀 블록이 될 수 있으나 라이트 가능한 프리 블록이 될 수 없다. For example, since the physical block (BLK a) has sub-blocks ①, ②, and ③ all as valid sub-blocks, it cannot be written, so it can become a big team block for garbage collection, but it cannot be a free block that can be written.

예를 들어 물리 블록(BLK b)는 최상단 ③은 무효 서브 블록이나 하단의 서브 블록①, 서브 블록 ②은 유효 서브 블록이다. 이 경우 가비지 컬렉션으로 무효 서브 블록 ③을 이레이즈하고 프리 상태로 전환된 서브 블록 ③에 라이트할 수 있다. For example, in the physical block (BLK b), the top ③ is an invalid sub-block, while the lower sub-block ① and sub-block ② are valid sub-blocks. In this case, the invalid sub-block ③ can be erased by garbage collection and the sub-block ③ that has been converted to a free state can be written.

예를 들어 물리 블록(BLK c)는 중간 서브 블록 ②는 무효 서브 블록이고, 최상단 서브 블록③, 최하단 서브 블록①은 유효 서브 블록이다. 이 경우 최상단 서브 블록③은 빅팀 서브 블록으로써, 다른 물리 블록의 서브 블록으로 데이터 이동한 후 서브 블록③과 중간 서브 블록 ②을 이레이즈 하여 프리 블록으로 전환될 수 있다. 즉, 물리 블록(BLK c)은 1번의 데이터 이동 및 1번의 이레이즈가 수행되어야 하므로, 단순히 1번의 이레이즈만 수행되는 물리 블록(BLK b)보다 관리 비용(cost)이 더 필요하다.For example, in a physical block (BLK c), the middle sub-block ② is an invalid sub-block, and the top sub-block ③ and the bottom sub-block ① are valid sub-blocks. In this case, the top sub-block ③ is a victim sub-block, and after data is moved to the sub-block of another physical block, the sub-block ③ and the middle sub-block ② can be erased to convert it into a free block. In other words, since the physical block (BLK c) must be moved data once and erased once, it requires more management cost than the physical block (BLK b) that only performs one erase.

예를 들어 물리 블록(BLK d)는 모든 서브 블록 ①, ②, ③이 무효 페이지만을 포함하고 있어, 모두 동시에 이레이즈하여 프리 블록으로 전환한 후 서브 블록 ①, 서브 블록 ②, 서브 블록 ③의 순서로 라이트할 수 있다. For example, since all subblocks ①, ②, and ③ of a physical block (BLK d) contain only invalid pages, they can all be erased simultaneously to convert them into free blocks, and then written in the order of subblock ①, subblock ②, and subblock ③.

이러한 제약사항을 극복하기 위해 스토리지 컨트롤러(210)는 서브 블록 단위로 이레이즈 되더라도, 즉시 라이트 가능한 상태의 프리 블록(Free block), 이레이즈를 한번 수행한 후 라이트 가능한 재사용가능한 블록(Usable block) 및 추가적으로 다른 서브 블록에 대해 가비지 컬렉션 한 후 라이트 가능한 상태가 되는 빅팀 셀렉터블 블록(Victim Selectable block)을 구분하고 라이트 가능한 우선순위를 소팅(sort)하여 블록을 관리할 수 있다. 이하 도 6 내지 도 10의 실시예들에서는 순수 프리 블록은 제외하고 재사용가능한 블록 및 빅팀 블록에 대해 보다 상세하게 설명한다.To overcome these limitations, the storage controller (210) can manage blocks by sorting the writable priority by distinguishing between free blocks that are immediately writable, usable blocks that are writable after performing one erase, and victim selectable blocks that become writable after performing garbage collection for other sub blocks, even if erased in sub-block units. In the embodiments of FIGS. 6 to 10 below, reusable blocks and victim blocks will be described in more detail, excluding pure free blocks.

도 6은 몇몇 실시예에 따른 프리 블록 리스트를 설명하기 위한 개념도이다. 도 3의 프리 블록 리스트(411)는 도 6과 같이 구현될 수 있다.Fig. 6 is a conceptual diagram illustrating a free block list according to some embodiments. The free block list (411) of Fig. 3 can be implemented as in Fig. 6.

예를 들어 블록 관리부(410)는 복수의 서브 블록 중 무효 서브 블록(I)의 비율에 기초하여 복수의 물리 블록을 제1 순서로 소팅하여 그루핑한다. 또는 예를 들어 블록 관리부(410)는 복수의 서브 블록 중 유효 서브 블록(V)의 비율에 기초하여 복수의 물리 블록을 제1 순서로 소팅하여 그루핑한다. 제1 순서는 예를 들어 무효 서브 블록(I)의 개수가 많을수록 또는 유효 서브 블록(V)의 개수가 적을수록 우선순위가 높게 설정된 것일 수 있다. For example, the block management unit (410) sorts and groups a plurality of physical blocks in a first order based on the ratio of invalid sub-blocks (I) among the plurality of sub-blocks. Or, for example, the block management unit (410) sorts and groups a plurality of physical blocks in a first order based on the ratio of valid sub-blocks (V) among the plurality of sub-blocks. For example, the first order may be set to have a higher priority as the number of invalid sub-blocks (I) increases or as the number of valid sub-blocks (V) decreases.

프리 블록 리스트(411)는 무효 서브 블록의 비율 및 위치에 따라 L1, L2, L3, L4의 제1 순서대로 소팅된 블록 리스트일 수 있다. The free block list (411) may be a block list sorted in the first order of L1, L2, L3, and L4 according to the ratio and location of invalid sub-blocks.

프리 블록은 도 5에서 설명한 바와 같이, 무효 서브 블록의 수가 많을수록 이레이즈하고 데이터를 라이트할 공간이 많아지므로, 블록 관리부(410)는 무효 서브 블록만 포함한(즉, 3개 모두 무효 서브 블록인) 물리 블록들을 최우선순위 L1으로 결정할 수 있다(Full Reusable Block). As described in Fig. 5, the more free blocks there are of invalid sub-blocks, the more space there is to erase and write data, so the block management unit (410) can determine physical blocks that contain only invalid sub-blocks (i.e., all three are invalid sub-blocks) as the highest priority L1 (Full Reusable Block).

블록 관리부(410)는 적어도 하나의 유효 서브 블록을 포함한 물리 블록들의 경우, 무효 서브 블록의 위치(또는 유효 서브 블록의 위치)에 따라 순위를 다르게 결정할 수 있다(Partial Reusable Block). 무효 서브 블록의 위치에 따라 이레이즈만 수행하여 프리 서브 블록으로 재사용가능한 경우가 있고, 가비지 컬렉션으로 빅팀 서브 블록의 데이터를 이동한 후 이레이즈를 수행하여 프리 서브 블록으로 재사용가능한 경우가 있기 때문이다.The block management unit (410) can determine the priority differently according to the location of the invalid sub-block (or the location of the valid sub-block) for physical blocks including at least one valid sub-block (Partial Reusable Block). This is because, depending on the location of the invalid sub-block, there are cases where it can be reused as a free sub-block by performing only erase, and cases where it can be reused as a free sub-block by performing erase after moving the data of the victim sub-block by garbage collection.

예를 들어, L2의 경우, 유효 서브 블록은 물리 블록의 최하단에 위치하고 무효 서브 블록은 물리 블록의 중간과 최상단에 위치한다. 이 경우 물리 블록의 중간과 최상단에 위치한 무효 서브 블록의 데이터는 동시에 이레이즈할 수 있다. For example, for L2, valid sub-blocks are located at the bottom of the physical block, and invalid sub-blocks are located at the middle and top of the physical block. In this case, data of invalid sub-blocks located at the middle and top of the physical block can be erased simultaneously.

예를 들어, L3의 경우, 유효 서브 블록은 물리 블록의 중간에 위치하고, 무효 서브 블록은 물리 블록의 최하단과 최상단에 위치한다. 이 경우 물리 블록의 최상단에 위치한 무효 서브 블록은 이레이즈 후 재사용 가능하다. 그러나 중간 유효 서브 블록은 가비지 컬렉션을 하기 전에는 데이터가 저장되어 있어 이레이즈할 수 없다. L2 및 L3의 실시예와 같이 물리 블록이 동일한 개수의 무효 서브 블록을 포함하더라도, 무효 서브 블록의 위치에 따라 라이트 가능한 서브 블록의 사이즈가 달라진다. 즉, 상기 이레이즈만으로 라이트 가능한 서브 블록 개수에 따라 라이트 우선순위를 더 높게 설정할 수 있다.For example, in the case of L3, a valid sub-block is located in the middle of a physical block, and invalid sub-blocks are located at the bottom and top of the physical block. In this case, the invalid sub-block located at the top of the physical block can be reused after erasing. However, the middle valid sub-block cannot be erased because data is stored there before garbage collection. Even if the physical blocks include the same number of invalid sub-blocks as in the embodiments of L2 and L3, the size of the writable sub-blocks varies depending on the location of the invalid sub-blocks. That is, the write priority can be set higher depending on the number of writable sub-blocks with the erase alone.

예를 들어 L4의 경우, 유효 서브 블록은 물리 블록의 최하단과 중간에 위치하고, 무효 서브 블록은 물리 블록의 최상단에 위치한다. 이 경우 물리 블록의 최상단에 위치한 무효 서브 블록은 쉽게 이레이즈할 수 있다. 그러나 L1 그룹 내지 L3 그룹 대비 재사용 가능한 서브 블록의 개수가 적으므로 최후 라이트 우선 순위를 가질 수 있다.For example, in the case of L4, valid sub-blocks are located at the bottom and middle of the physical block, and invalid sub-blocks are located at the top of the physical block. In this case, the invalid sub-block located at the top of the physical block can be easily erased. However, since the number of reusable sub-blocks is small compared to L1 or L3 groups, it can have the last write priority.

제1 순위로 소팅되어 그룹핑된(L1, L2, L3, L4) 복수의 물리 블록에 대해, 제2 순위로 소팅할 수 있다. 제2 순위는 물리 블록들의 웨어 레벨링 정도에 따라 소팅되는 것일 수 있다. 도 6에 도시된 물리 블록①, ②, ③, ④은 이레이즈 카운트 등을 포함하는 웨어 레벨링에 따라 소팅된 순서대로 배치된 것일 수 있다. 이레이즈 카운트가 작을수록 열화가 덜 된 블록이므로, 제1 순서로 그루핑된 물리 블록 ①, ②, ③, ④은 이레이즈 카운트에 따라 제2 순서로 소팅될 수 있다. For a plurality of physical blocks grouped (L1, L2, L3, L4) sorted in the first order, they can be sorted in the second order. The second order may be sorted according to the degree of wear leveling of the physical blocks. The physical blocks ①, ②, ③, and ④ illustrated in Fig. 6 may be arranged in the sorted order according to wear leveling including the erase count, etc. Since a block has a smaller erase count and is less deteriorated, the physical blocks ①, ②, ③, and ④ grouped in the first order can be sorted in the second order according to the erase count.

즉, 웨어 레벨링을 위해 같은 그룹(예를 들어 L1 그룹) 내에서, 이레이즈 카운트를 기준으로 물리 블록①이 물리 블록②보다 열화가 덜 되었으므로, 더 높은 우선순위를 가질 수 있다.That is, for wear leveling, within the same group (e.g., L1 group), physical block ① can have a higher priority than physical block ② because it is less degraded based on the erase count.

도 7은 몇몇 실시예에 따른 빅팀 셀렉터블 블록 리스트를 설명하기 위한 개념도이다. 도 3의 빅팀 셀렉터블 블록 리스트(415)는 도 7과 같이 구현될 수 있다.Fig. 7 is a conceptual diagram illustrating a big team selectable block list according to some embodiments. The big team selectable block list (415) of Fig. 3 can be implemented as in Fig. 7.

빅팀 셀렉터블 블록 리스트(415)는 프리 블록 리스트(411)와 달리, 모든 물리 블록이 적어도 하나의 유효 서브 블록을 포함한다. 빅팀 블록은 데이터를 포함한 적어도 하나의 유효 페이지를 포함하여, 최소 1번의 데이터를 이동한 후 이레이즈하여 프리 블록으로 전환가능한 경우의 물리블록을 말한다.Unlike the free block list (411), the victim selectable block list (415) includes every physical block with at least one valid sub-block. A victim block refers to a physical block that includes at least one valid page containing data and can be converted into a free block by erasing it after moving data at least once.

예를 들어 블록 관리부(410)는 복수의 서브 블록 중 유효 서브 블록(V)의 비율에 기초하여 복수의 물리 블록을 제1 순서로 소팅한다. 또는 예를 들어 블록 관리부(410)는 복수의 서브 블록 중 무효 서브 블록(I)의 비율에 기초하여 복수의 물리 블록을 제1 순서로 소팅한다. 제1 순서는 예를 들어 유효 서브 블록(V)의 개수가 적을수록 또는 무효 서브 블록(I)의 개수가 많을수록 우선순위가 높게 설정된 것일 수 있다. 빅팀 셀렉터블 블록 리스트(415)는 무효 서브 블록(I)의 비율 및 무효 서브 블록(I)의 위치에 따라 L1, L2, L3, L4의 제1 순서대로 소팅된 블록 리스트일 수 있다. For example, the block management unit (410) sorts the plurality of physical blocks in a first order based on the ratio of valid sub-blocks (V) among the plurality of sub-blocks. Or, for example, the block management unit (410) sorts the plurality of physical blocks in a first order based on the ratio of invalid sub-blocks (I) among the plurality of sub-blocks. The first order may have a higher priority set, for example, as the number of valid sub-blocks (V) is smaller or the number of invalid sub-blocks (I) is larger. The big team selectable block list (415) may be a block list sorted in the first order of L1, L2, L3, and L4 according to the ratio of invalid sub-blocks (I) and the position of the invalid sub-blocks (I).

빅팀 셀렉터블 블록 리스트(415)는 무효 서브 블록의 수가 많을수록 가비지 컬렉션 동작시 서브 블록을 이레이즈 하고 데이터를 라이트할 공간이 확보되므로, 무효 서브 블록의 수가 클수록 물리 블록의 우선 순위를 높게 설정한다.The Big Team Selectable Block List (415) sets the priority of physical blocks higher as the number of invalid sub-blocks increases, so that space is secured for erasing sub-blocks and writing data during garbage collection.

예를 들어, 빅팀 셀렉터블 블록 리스트(415)의 L1 그룹에 속한 물리 블록은 2개의 무효 서브 블록 및 1개의 유효 서브 블록을 포함하고, L2 및 L3 그룹에 속한 물리 블록은 1개의 무효 서브 블록 및 2개의 유효 서브 블록을 포함하며, L4 그룹에 속한 물리 블록은 3개의 유효 서브 블록을 포함한다. For example, a physical block belonging to an L1 group in the big team selectable block list (415) includes two invalid sub-blocks and one valid sub-block, a physical block belonging to an L2 and L3 group includes one invalid sub-block and two valid sub-blocks, and a physical block belonging to an L4 group includes three valid sub-blocks.

L1 그룹의 경우, 유효 서브 블록은 물리 블록의 최상단에 위치하고 무효 서브 블록은 물리 블록의 중간과 최하단에 위치한다. 이 경우 물리 블록의 중간과 최하단에 위치한 무효 서브 블록은 먼저 최상단에 위치한 유효 서브 블록(V)의 데이터를 다른 물리 블록으로 옮긴 후 최하단 서브 블록, 중간 서브 블록 및 최상단 서브 블록을 모두 이레이즈하여 사용할 수 있다. For L1 group, valid sub-blocks are located at the top of the physical block, and invalid sub-blocks are located at the middle and bottom of the physical block. In this case, invalid sub-blocks located at the middle and bottom of the physical block can be used by first moving the data of the valid sub-block (V) located at the top to another physical block, and then erasing the bottom, middle, and top sub-blocks.

예를 들어, L2 그룹의 경우, 유효 서브 블록은 물리 블록의 최상단 및 중간에 위치하고 무효 서브 블록은 물리 블록의 최하단에 위치한다. 이 경우 물리 블록의 최하단에 위치한 무효 서브 블록은 먼저 물리 블록의 최상단 및 중간에 위치한 유효 서브 블록(V)의 데이터를 다른 물리 블록으로 각각 옮긴 후 전체 물리 블록을 이레이즈하여 사용할 수 있다. L2 그룹의 물리 블록은 2 단(최상단 및 중간)의 유효 서브 블록(V)의 데이터를 옮긴후 이레이즈 해야 하므로, 1단(최상단)의 유효 서브 블록만 옮기는 L1 그룹의 물리 블록에 비해 로드가 크다. 따라서 L2 그룹은 빅팀 블록으로서 L1 그룹에 비해 낮은 우선순위를 가진다.For example, in the case of the L2 group, valid sub-blocks are located at the top and middle of the physical block, and invalid sub-blocks are located at the bottom of the physical block. In this case, the invalid sub-block located at the bottom of the physical block can be used by first moving the data of the valid sub-blocks (V) located at the top and middle of the physical block to other physical blocks, respectively, and then erasing the entire physical block. Since the physical blocks of the L2 group must move the data of the valid sub-blocks (V) of two stages (top and middle) and then erase them, the load is greater than that of the physical blocks of the L1 group that only moves the valid sub-block of the first stage (top). Therefore, the L2 group has a lower priority than the L1 group as a victim block.

예를 들어, L3 그룹의 경우, 유효 서브 블록은 물리 블록의 최상단 및 최하단에 위치하고 무효 서브 블록은 물리 블록의 중간에 위치한다. 이 경우 물리 블록의 최상단에 위치한 유효 서브 블록은 데이터를 다른 물리 블록의 서브 블록으로 옮기고, 무효 서브 블록과 함께 이레이즈 한 후 사용가능하다. 그러나 물리 블록의 최하단에 위치한 유효 서브 블록은 최상단 및 중간의 서브 블록이 모두 이레이즈 된 후 데이터를 다른 물리 블록으로 옮기고 이레이즈되어야 하므로 L2 그룹에 비해 가비지 컬렉션 동작의 로드가 더 클 수 있다. 즉 최상단 및 중간 서브 블록에 대해서만 이레이즈 후 라이트 가능할 수 있다. L3 그룹은 2개의 서브 블록만 재사용가능하므로 L2 그룹에 비해 낮은 우선순위를 가진다.For example, in the case of the L3 group, valid sub-blocks are located at the top and bottom of the physical block, and invalid sub-blocks are located in the middle of the physical block. In this case, the valid sub-block located at the top of the physical block can be used after moving data to a sub-block of another physical block and erasing it together with the invalid sub-blocks. However, the valid sub-block located at the bottom of the physical block must be moved data to another physical block and erased after both the top and middle sub-blocks are erased, so the load of the garbage collection operation may be greater than that of the L2 group. In other words, erase-and-write is possible only for the top and middle sub-blocks. Since the L3 group can reuse only two sub-blocks, it has a lower priority than the L2 group.

예를 들어, L4 그룹의 경우, 유효 서브 블록은 물리 블록의 최상단, 중간, 최하단에 위치한다. 이 경우 물리블록 최상단에 위치한 유효 서브 블록의 데이터를 옮기고 이레이즈 하고, 이어서 중간에 위치한 유효 서브 블록의 데이터를 옮기고 이레이즈 한 후 최하단에 위치한 유효 서브 블록의 데이터를 옮기고 이레이즈한다. 즉, 다른 L1, L2, L3 그룹보다 가비지 컬렉션 동작의 로드가 크므로 L4 그룹은 가장 낮은 우선순위를 가진다.For example, for the L4 group, valid sub-blocks are located at the top, middle, and bottom of the physical block. In this case, the data of the valid sub-block located at the top of the physical block is moved and erased, then the data of the valid sub-block located in the middle is moved and erased, and then the data of the valid sub-block located at the bottom is moved and erased. In other words, since the load of the garbage collection operation is greater than that of other L1, L2, and L3 groups, the L4 group has the lowest priority.

제1 순위로 소팅되어 그룹핑된 물리 블록(L1, L2, L3, L4)에 포함된 복수의 물리 블록에 대해, 제2 순위로 소팅할 수 있다. 제2 순위는 물리 블록들의 유효 페이지 카운트(Valid Page Count)에 따라 소팅되는 것일 수 있다. 도 8에 도시된 물리 블록①, ②, ③, ④은 유효 페이지 카운트 등을 포함하는 가비지 컬렉션 효율이 좋은 물리 블록 순서에 따라 소팅된 순서대로 배치된 것일 수 있다. 유효 페이지 카운트가 작을수록 무효 페이지가 많은 블록이므로, 제1 순서로 그루핑된 물리 블록 L1, L2, L3, L4는 유효 페이지 카운트가 점점 커지는 제2 순서 ①, ②, ③, ④로 소팅될 수 있다. For a plurality of physical blocks included in physical blocks (L1, L2, L3, L4) sorted and grouped in the first order, sorting can be performed in the second order. The second order may be sorted according to the valid page count of the physical blocks. The physical blocks ①, ②, ③, and ④ illustrated in Fig. 8 may be arranged in the sorted order according to the order of physical blocks with good garbage collection efficiency including the valid page count, etc. Since a block has many invalid pages as the valid page count is smaller, the physical blocks L1, L2, L3, and L4 grouped in the first order can be sorted in the second order ①, ②, ③, and ④ in which the valid page count gradually increases.

즉, 가비지 컬렉션의 비용 절약을 위해 같은 그룹(예를 들어 L1 그룹) 내에서, 이레이즈 카운트를 기준으로 물리 블록①이 물리 블록②보다 유효 페이지가 적으므로, 더 높은 우선순위를 가질 수 있다.That is, in order to save on the cost of garbage collection, within the same group (e.g., L1 group), physical block ① can have a higher priority than physical block ② because it has fewer valid pages based on the erase count.

도 8은 몇몇 실시예에 따른 FTL 모듈에 저장되는 블록 리스트를 설명하기 위한 개념도이다.Figure 8 is a conceptual diagram illustrating a block list stored in an FTL module according to some embodiments.

도 8을 참고하면, 프리 블록 리스트(411) 및 빅팀 셀렉터블 블록 리스트(415)는 복수의 물리 블록 리스트를 연결된 리스트(linked list)구조로 저장될 수 있다. Referring to FIG. 8, the free block list (411) and the big team selectable block list (415) can be stored as a linked list structure of multiple physical block lists.

호스트로부터 라이트 요청을 수신하면, FTL 모듈(214)은 먼저 프리 블록 리스트에서 제1 순서에 따라 그루핑된 물리 블록을 선택한다. 도 6의 L1 그룹을 일 실시예로 설명하면, 라이트 요청에 따라 FTL 모듈(214)은 물리 블록의 프리 블록 정보를 확인한다. FTL 모듈(214)은 프리 블록 리스트(411)에서 먼저 L1 그룹을 나타내는 헤드 #N을 확인하고, 메모리에서 #N인 헤드를 갖는 첫번째 물리 블록에 저장된 프리 블록 정보를 확인한다. 이때 메모리는 FTL 모듈(214)의 블록 관리부(410)에 포함된 비휘발성 메모리일 수 있다.When receiving a write request from a host, the FTL module (214) first selects a physical block grouped in the first order from the free block list. If the L1 group of FIG. 6 is described as an example, the FTL module (214) checks the free block information of the physical block according to the write request. The FTL module (214) first checks the head #N indicating the L1 group from the free block list (411), and checks the free block information stored in the first physical block having the head #N in the memory. At this time, the memory may be a nonvolatile memory included in the block management unit (410) of the FTL module (214).

프리 블록 정보는 몇몇 실시예에 따라 그룹의 헤드(#N), 물리 블록 주소, 서브 블록에 대한 이레이즈 카운트, 페이지 유효 상태를 포함할 수 있다. 페이지 유효 상태는 몇몇 실시예에 따라 유효 페이지/무효 페이지인지 여부 및 유효 페이지(또는 무효 페이지)의 위치 정보일 수 있다.Free block information may include a head of a group (#N), a physical block address, an erase count for a sub-block, and a page valid status, depending on some embodiments. The page valid status may include whether a page is valid/invalid and location information of a valid page (or an invalid page), depending on some embodiments.

스토리지 장치(200)는 가비지 컬렉션 동작이 필요한 경우, 가비지 컬렉션 동작을 활성화하고, FTL 모듈(214)은 빅팀 셀렉터블 블록 리스트에서 제1 순서에 따라 그루핑된 물리 블록을 선택한다. 도 7의 L1 그룹을 일 실시예로 설명하면, 가비지 컬렉션 활성화에 따라 FTL 모듈(214)은 물리 블록의 빅팀 블록 정보를 확인한다. FTL 모듈(214)은 빅팀 셀렉터블 블록 리스트(415)에서 먼저 L1 그룹을 나타내는 헤드 #N을 확인하고, 메모리에서 #N인 헤드를 갖는 첫번째 물리 블록에 저장된 빅팀 블록 정보를 확인한다. 이때 메모리는 FTL 모듈(214)의 블록 관리부(410)에 포함된 비휘발성 메모리일 수 있다.When a garbage collection operation is required, the storage device (200) activates the garbage collection operation, and the FTL module (214) selects a physical block grouped in the first order from the victim selectable block list. As an example of the L1 group of FIG. 7, the FTL module (214) checks the victim block information of the physical block according to the garbage collection activation. The FTL module (214) first checks the head #N indicating the L1 group from the victim selectable block list (415), and checks the victim block information stored in the first physical block having the head #N in the memory. At this time, the memory may be a nonvolatile memory included in the block management unit (410) of the FTL module (214).

빅팀 블록 정보는 몇몇 실시예에 따라 그룹의 헤드(#N), 상기 헤드에 연결된 물리 블록 주소, 서브 블록에 대한 유효 페이지 카운트, 페이지 유효 상태를 포함할 수 있다. 페이지 유효 상태는 몇몇 실시예에 따라 유효 페이지/무효 페이지인지 여부 및 유효 페이지(또는 무효 페이지)의 위치 정보일 수 있다.The big team block information may include, according to some embodiments, a head of the group (#N), a physical block address connected to the head, a valid page count for a sub-block, and a page valid status. The page valid status may be, according to some embodiments, whether a page is valid/invalid and location information of a valid page (or an invalid page).

FTL 모듈(214)는 프리 블록 정보에 기초하여 L1 그룹(#N)에서 해당 라이트 요청이 처리가능한 경우, L1 그룹의 물리 블록에 포함된 서브 블록들의 주소를 리턴하여, 라이트 요청과 리턴된 서브 블록의 주소를 비휘발성 메모리 장치(220)로 전송한다.The FTL module (214) returns the addresses of sub-blocks included in the physical blocks of the L1 group if the corresponding write request can be processed in the L1 group (#N) based on the free block information, and transmits the write request and the addresses of the returned sub-blocks to the non-volatile memory device (220).

그러나 FTL 모듈(214)는 프리 블록 정보에 기초하여 L1 그룹(#N)에서 해당 라이트 요청이 처리불가능한 경우, L1 그룹(#N) 다음순서로 연결된 L2 그룹(헤드 #M)으로 넘어간다. 각 그룹의 헤드 #N과 헤드 #M은 예를 들면 L1 그룹의 첫번째 물리 블록의 노드에 대해 L2 그룹의 첫번째 물리 블록의 노드로 연결된 리스트일 수 있다.However, if the FTL module (214) cannot process the corresponding write request in the L1 group (#N) based on the free block information, it moves on to the L2 group (head #M) connected in the next order to the L1 group (#N). The head #N and head #M of each group can be, for example, a list connected to the node of the first physical block of the L2 group for the node of the first physical block of the L1 group.

마찬가지로, FTL 모듈(214)는 빅팀 블록 정보에 기초하여 L1 그룹(#N)에서 가비지 컬렉션이 처리가능한 경우, L1 그룹의 물리 블록에 포함된 서브 블록들의 주소를 리턴하여, 가비지 컬렉션 요청과 리턴된 서브 블록의 주소를 비휘발성 메모리 장치(220)로 전송한다.Similarly, if garbage collection is processable in the L1 group (#N) based on the big team block information, the FTL module (214) returns the addresses of the sub blocks included in the physical blocks of the L1 group and transmits a garbage collection request and the addresses of the returned sub blocks to the nonvolatile memory device (220).

그러나 FTL 모듈(214)는 빅팀 블록 정보에 기초하여 L1 그룹(#N)에서 가비지 컬렉션 요청이 처리불가능한 경우, L1 그룹(#N) 다음순서로 연결된 L2 그룹(헤드 #M)으로 넘어간다. 각 그룹의 헤드 #N과 헤드 #M은 예를 들면 L1 그룹의 첫번째 물리 블록의 노드에 대해 L2 그룹의 첫번째 물리 블록의 노드로 연결된 리스트일 수 있다.However, if the FTL module (214) cannot process a garbage collection request in the L1 group (#N) based on the big team block information, it moves on to the L2 group (head #M) connected in the next order to the L1 group (#N). The head #N and head #M of each group can be, for example, a list connected to the node of the first physical block of the L2 group for the node of the first physical block of the L1 group.

도 9는 몇몇 실시예에 따른 스토리지 장치의 라이트 동작을 설명하기 위한 도면이다.FIG. 9 is a diagram illustrating light operation of a storage device according to some embodiments.

도 9를 참조하면, 호스트(100)로부터 라이트 요청을 수신하면, FTL 모듈(214)은 라이트 모듈(430)에서, 라이트 요청을 처리할 논리 블록-물리 블록 주소를 서치한다. Referring to FIG. 9, when receiving a write request from a host (100), the FTL module (214) searches for a logical block-physical block address to process the write request in the write module (430).

예를 들어 라이트 모듈(430)은 블록 관리부(410)로 프리 블록 주소를 요청하고(① Get Free Block), 블록 관리부(410)는 프리 블록 리스트(411)를 확인한다(② List Check). 블록 관리부(410)는 프리 블록 리스트(411)에서 제1 순서로 소팅된 그룹의 헤드를 확인하며(③ Pop Head), 프리 블록 정보에 기초하여 라이트 요청이 처리 가능한 물리 블록을 탐색한다. For example, the light module (430) requests a free block address to the block management unit (410) (① Get Free Block), and the block management unit (410) checks the free block list (411) (② List Check). The block management unit (410) checks the head of the group sorted in the first order in the free block list (411) (③ Pop Head), and searches for a physical block that can process the light request based on the free block information.

만약 L1 그룹의 물리 블록이 상기 라이트 요청을 처리 가능한 경우, 해당 라이트 요청에 응답하여 상기 처리 가능하다고 판단된 물리 블록의 주소 및 서브 블록의 주소를 리턴한다(④ Return Block). If the physical block of the L1 group can process the write request, the address of the physical block and the address of the sub-block determined to be processable are returned in response to the write request (④ Return Block).

이와 같이 몇몇 실시예에 따라 서브 블록을 포함하는 비휘발성 메모리 장치에 대한 라이트 동작시, 서브 블록 간 라이트 제약(Program sequence)을 고려하여 프리 블록 리스트를 별도로 관리함으로써, 서브 블록에 대한 이레이즈 동작을 자유롭게 하면서도 비휘발성 메모리 장치의 공간을 보다 효율적으로 활용할 수 있는 장점이 있다. 또한 프리 블록 리스트 및 프리 블록 정보에 기초하여 라이트 동작을 수행함으로써 FTL(File Tranlation Layer)을 효율적으로 사용가능하다.In this way, when performing a write operation on a nonvolatile memory device including sub-blocks according to some embodiments, by separately managing a free block list while considering write restrictions (program sequence) between sub-blocks, there is an advantage in that the space of the nonvolatile memory device can be utilized more efficiently while freely performing an erase operation on the sub-blocks. In addition, by performing a write operation based on the free block list and free block information, the FTL (File Tranlation Layer) can be utilized efficiently.

도 10은 몇몇 실시예에 따른 스토리지 장치의 가비지 컬렉션 동작을 설명하기 위한 도면이다.FIG. 10 is a diagram illustrating garbage collection operations of a storage device according to some embodiments.

도 10을 참조하면, 외부의 요청 또는 내부적 판단에 따른 가비지 컬렉션이 활성화되면, FTL 모듈(214)은 가비지 컬렉터(420)에서, 가비지 컬렉션을 처리할 논리 블록-물리 블록 주소를 서치한다. Referring to FIG. 10, when garbage collection is activated based on an external request or internal judgment, the FTL module (214) searches for a logical block-physical block address to process garbage collection in the garbage collector (420).

예를 들어 가비지 컬렉터(420)은 블록 관리부(410)로 빅팀 블록 주소를 요청하고(① Get Victim Block), 블록 관리부(410)는 빅팀 셀렉터블 블록 리스트(415)를 확인한다(② List Check). 블록 관리부(410)는 빅팀 셀렉터블 블록 리스트(415)에서 제1 순서로 소팅된 그룹의 헤드를 확인하며(③ Pop Head), 빅팀 블록 정보에 기초하여 가비지 컬렉션이 필요한 물리 블록을 탐색한다. For example, the garbage collector (420) requests the block management unit (410) for a victim block address (① Get Victim Block), and the block management unit (410) checks the victim selectable block list (415) (② List Check). The block management unit (410) checks the head of the group sorted in the first order in the victim selectable block list (415) (③ Pop Head), and searches for a physical block requiring garbage collection based on the victim block information.

만약 L1 그룹의 물리 블록이 상기 가비지 컬렉션이 필요한 경우, 탐색 결과에 따라 가비지 컬렉션이 필요하다고 판단된 물리 블록의 주소 및 서브 블록의 주소를 리턴한다(④ Return Block). If a physical block of the L1 group requires the above garbage collection, the address of the physical block and the address of the sub-block determined to require garbage collection based on the search result are returned (④ Return Block).

이와 같이 몇몇 실시예에 따라 서브 블록을 포함하는 비휘발성 메모리 장치에 대한 가비지 컬렉션 동작시, 서브 블록에 대한 라이트 동작 순서 및 이레이즈 제약사항을 고려하여 빅팀 셀렉터블 블록 리스트를 관리함으로써, 서브 블록에 대한 이레이즈 동작을 자유롭게 하면서도 데이터를 옮기는데 필요한 코스트를 줄일 수 있는 장점이 있다. 또한 빅팀 셀렉터블 블록 리스트 및 빅팀 블록 정보에 기초하여 가비지 컬렉션 동작을 수행함으로써 FTL(File Tranlation Layer)을 효율적으로 사용가능하다.In this way, when performing a garbage collection operation on a nonvolatile memory device including a sub-block according to some embodiments, by managing the victim selectable block list while considering the write operation order and erase constraints on the sub-block, there is an advantage in that the cost required for moving data can be reduced while freely performing an erase operation on the sub-block. In addition, by performing the garbage collection operation based on the victim selectable block list and the victim block information, the FTL (File Tranlation Layer) can be efficiently used.

도 11 내지 도 13은 몇몇 실시예에 따른 스토리지 장치의 동작방법을 설명하기 위한 흐름도이다.FIGS. 11 to 13 are flowcharts illustrating a method of operating a storage device according to some embodiments.

도 11 내지 도 13을 참조하면, 스토리지 컨트롤러(210)는, 호스트(100)로부터 라이트 요청을 수신한다(S100). 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)에 라이트 요청에 따라 데이터를 저장할 프리 블록이 있는지 확인하고(S110), 비휘발성 메모리 장치(220)에 프리 블록이 많은 경우 라이트 요청을 비휘발성 메모리 장치로 전송한다(S160). Referring to FIGS. 11 to 13, the storage controller (210) receives a write request from the host (100) (S100). The storage controller (210) checks whether there is a free block in the nonvolatile memory device (220) to store data according to the write request (S110), and if there are many free blocks in the nonvolatile memory device (220), transmits the write request to the nonvolatile memory device (S160).

그러나 비휘발성 메모리 장치(220)에 라이트 요청을 처리할 충분한 프리 블록이 없는 경우(S110, Yes) 재사용 가능한 프리 블록을 요청한다(S120). 라이트 모듈(430)은 프리 블록 리스트(411)에 기초하여, 재사용 가능한 프리 블록의 주소를 가져온다. 구체적으로, 모두 무효 서브 블록만을 포함한 그룹이 있는 경우(Full Resulable Block), 예를 들어 도 6의 L1 그룹에서 라이트 요청이 처리가능하다고 판단되면(S130, Yes), L1 그룹의 헤드를 선택한다(S140). 스토리지 컨트롤러는 L1 그룹에 속한 물리 블록의 주소를 상기 라이트 요청과 함께 비휘발성 메모리 장치(220)로 전송한다(S150).However, if there are not enough free blocks to process the write request in the nonvolatile memory device (220) (S110, Yes), a reusable free block is requested (S120). The write module (430) obtains the address of the reusable free block based on the free block list (411). Specifically, if there is a group that includes only invalid sub-blocks (Full Resulable Block), for example, if it is determined that the write request can be processed in the L1 group of FIG. 6 (S130, Yes), the head of the L1 group is selected (S140). The storage controller transmits the address of the physical block belonging to the L1 group to the nonvolatile memory device (220) together with the write request (S150).

반면, 모두 무효 서브 블록만을 포함한 그룹에서 라이트 요청의 처리가 불가능한 경우(S130, No), 우선순위가 낮은 다음 그룹에서 라이트 요청이 가능한지 확인한다. 예를 들어 도 6의 L1 그룹에서 처리 불가능한 경우, 스토리지 컨트롤러(210)는 프로 블록 리스트(411)에서 연결된 리스트에 따라 다음 그룹 L2 그룹(즉, 적어도 하나의 유효 서브 블록을 포함한 경우, Partial Reusable block)을 확인한다(S200).On the other hand, if the write request cannot be processed in a group that includes only invalid sub-blocks (S130, No), it is checked whether the write request is possible in the next group with a lower priority. For example, if the processing is impossible in the L1 group of FIG. 6, the storage controller (210) checks the next group L2 group (i.e., Partial Reusable block, if it includes at least one valid sub-block) according to the linked list in the pro block list (411) (S200).

L2 그룹에 속한 물리 블록에서 상기 라이트 요청을 처리가능한 경우(S210, Yes), 적어도 하나의 유효 서브 블록을 포함하고 있으므로, 스토리지 컨트롤러(210)는 최소 비용으로 유효 서브 블록을 이동하고 무효 서브 블록을 재사용하기 위해, 가비지 컬렉션을 수행할 빅팀 블록을 요청한다(S300). If the write request can be processed in a physical block belonging to the L2 group (S210, Yes), and since it contains at least one valid sub-block, the storage controller (210) requests a big block to perform garbage collection in order to move the valid sub-block at the minimum cost and reuse the invalid sub-block (S300).

스토리지 컨트롤러(210)는 가비지 컬렉션을 수행하기 위해, 빅팀 셀렉터블 블록 리스트에서 최우선 순위의 선택가능한 빅팀 블록을 확인한다(S310). 만약 도 7의 L1 그룹에 속한 물리 블록에서 가비지 컬렉션이 가능한 경우(S310, Yes), L1 그룹의 헤드를 선택하여(S340), L1 그룹에 속한 물리 블록의 주소 및 서브 블록 주소로 상기 적어도 하나의 유효 서브 블록에 저장된 데이터를 옮기고 이레이즈하는 가비지 컬렉션을 수행하고(S350), 상기 가비지 컬렉션이 완료된 빅팀 셀렉터블 블록 리스트(415) 내 L1 그룹의 물리 블록에 대해 프리 블록을 요청한다(S120).The storage controller (210) checks the selectable victim block with the highest priority in the victim selectable block list to perform garbage collection (S310). If garbage collection is possible in the physical block belonging to the L1 group of FIG. 7 (S310, Yes), the head of the L1 group is selected (S340), and garbage collection is performed to move and erase data stored in at least one valid sub-block to the address and sub-block address of the physical block belonging to the L1 group (S350), and a free block is requested for the physical block of the L1 group in the victim selectable block list (415) for which garbage collection is completed (S120).

그러나 도 7의 L1 그룹에 속한 물리 블록에서 가비지 컬렉션이 불가능한 경우(S310, No), 빅팀 셀렉터블 블록 리스트(415) 내 다음 우선 순위의 그룹에서 가비지 컬렉션이 가능한지 확인한다(S320). 예를 들어 L1 그룹 다음의 우선순위를 갖는 L2 그룹에서 가비지 컬렉션이 가능한 경우(S330, Yes), L2 그룹의 헤드를 선택하여(S340), L2 그룹에 속한 물리 블록의 주소 및 서브 블록 주소로 상기 적어도 하나의 유효 서브 블록에 저장된 데이터를 옮기고 이레이즈하는 가비지 컬렉션을 수행하고(S350), 상기 가비지 컬렉션이 완료된 빅팀 셀렉터블 블록 리스트(415) 내 L2 그룹의 물리 블록에 대해 프리 블록을 요청한다(S120).However, if garbage collection is not possible in a physical block belonging to an L1 group of FIG. 7 (S310, No), it is checked whether garbage collection is possible in a group of the next priority in the victim selectable block list (415) (S320). For example, if garbage collection is possible in an L2 group having the next priority after the L1 group (S330, Yes), the head of the L2 group is selected (S340), and garbage collection is performed by moving and erasing data stored in at least one valid sub-block to the address and sub-block address of the physical block belonging to the L2 group (S350), and a free block is requested for the physical block of the L2 group in the victim selectable block list (415) for which garbage collection is completed (S120).

마찬가지로, 도 7의 L2 그룹에 속한 물리 블록에서 가비지 컬렉션이 불가능한 경우(S330, No), 빅팀 셀렉터블 블록 리스트(415) 내 다음 우선 순위의 그룹에서 가비지 컬렉션이 가능한지 확인한다(S320).Similarly, if garbage collection is not possible in a physical block belonging to the L2 group of Fig. 7 (S330, No), it is checked whether garbage collection is possible in the next priority group in the big team selectable block list (415) (S320).

L2 그룹에 속한 물리 블록에서 상기 라이트 요청을 처리할 빈 물리 블록이 없는 경우(S210, No), 우선순위가 낮은 다음 L3 그룹에서 라이트 요청이 가능한지 확인한다(S230). If there is no empty physical block to process the write request in the physical block belonging to the L2 group (S210, No), it is checked whether the write request is possible in the next L3 group with lower priority (S230).

*L3 그룹에서 라이트 요청이 처리 가능한 경우(S230, Yes), L3 그룹의 헤드를 선택하여(S140), L3 그룹에 속한 물리 블록의 주소를 비휘발성 메모리 장치(220)로 리턴한다(S150).*If a write request can be processed in the L3 group (S230, Yes), the head of the L3 group is selected (S140) and the address of the physical block belonging to the L3 group is returned to the nonvolatile memory device (220) (S150).

몇몇 실시예에 따라 서브 블록을 포함하는 멀티 스택으로 구현된 비휘발성 메모리 장치는, 이레이즈 동작 순서에 대한 서브 블록의 제약은 없는데 비해 라이트 동작 순서에 대한 서브 블록의 제약이 존재하므로, 서브 블록에 대한 라이트 제약을 고려하여 프리 블록 리스트 및 빅팀 셀렉터블 블록 리스트를 별도로 관리한다. 이에 따라 스토리지 장치(200)는 서브 블록에 대한 이레이즈 동작을 자유롭게 하면서도 라이트 동작에 대해 가비지 컬렉션의 로드가 보다 적은 서브 블록에 먼저 라이트함으로써, 비휘발성 메모리 장치의 공간을 효율적으로 쓸 수 있고, FTL(File Tranlation Layer)을 효율적으로 사용가능하다.In some embodiments, a nonvolatile memory device implemented with a multi-stack including sub-blocks has no constraints on the erase operation order of the sub-blocks, but has constraints on the write operation order of the sub-blocks. Therefore, the free block list and the victim selectable block list are managed separately in consideration of the write constraints on the sub-blocks. Accordingly, the storage device (200) can efficiently use the space of the nonvolatile memory device and efficiently use the FTL (File Tranlation Layer) by first writing to a sub-block with a smaller garbage collection load for the write operation while freely performing an erase operation on the sub-blocks.

도 14는 본 발명의 일 실시예에 따른 스토리지(storage) 장치가 적용된 시스템을 도시한 도면이다. FIG. 14 is a diagram illustrating a system to which a storage device according to one embodiment of the present invention is applied.

도 14의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 14의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.The system (1000) of FIG. 14 may be a mobile system, such as a mobile phone, a smart phone, a tablet personal computer, a wearable device, a healthcare device, or an Internet of Things (IoT) device. However, the system (1000) of FIG. 14 is not necessarily limited to a mobile system, and may also be a personal computer, a laptop computer, a server, a media player, or an automotive device, such as a navigation device.

도 14를 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.Referring to FIG. 14, the system (1000) may include a main processor (1100), a memory (1200a, 1200b), and a storage device (1300a, 1300b), and may additionally include one or more of an image capturing device (1410), a user input device (1420), a sensor (1430), a communication device (1440), a display (1450), a speaker (1460), a power supplying device (1470), and a connecting interface (1480).

메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다. The main processor (1100) can control the overall operation of the system (1000), more specifically, the operation of other components forming the system (1000). The main processor (1100) can be implemented as a general-purpose processor, a dedicated processor, or an application processor.

메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator) 블록(1130)을 더 포함할 수 있다. 이와 같은 가속기 블록(1130)은 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.The main processor (1100) may include one or more CPU cores (1110) and may further include a controller (1120) for controlling a memory (1200a, 1200b) and/or a storage device (1300a, 1300b). Depending on the embodiment, the main processor (1100) may further include an accelerator block (1130), which is a dedicated circuit for high-speed data operations such as artificial intelligence (AI) data operations. Such an accelerator block (1130) may include a GPU (Graphics Processing Unit), an NPU (Neural Processing Unit), and/or a DPU (Data Processing Unit), and may be implemented as a separate chip that is physically independent from other components of the main processor (1100).

메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.The memory (1200a, 1200b) may be used as a main memory device of the system (1000), and may include volatile memory such as SRAM and/or DRAM, but may also include nonvolatile memory such as flash memory, PRAM and/or RRAM. The memory (1200a, 1200b) may also be implemented in the same package as the main processor (1100).

스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성(non-volatile memory, NVM) 스토리지(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. The storage device (1300a, 1300b) can function as a non-volatile storage device that stores data regardless of whether power is supplied, and can have a relatively large storage capacity compared to the memory (1200a, 1200b). The storage device (1300a, 1300b) can include a storage controller (1310a, 1310b) and a non-volatile memory (NVM) storage (1320a, 1320b) that stores data under the control of the storage controller (1310a, 1310b). The non-volatile memory (1320a, 1320b) can include a V-NAND flash memory having a 2D (2-dimensional) structure or a 3D (3-dimensional) structure, but can also include other types of non-volatile memory such as PRAM and/or RRAM.

스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(universal flash storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.The storage device (1300a, 1300b) may be included in the system (1000) in a physically separated state from the main processor (1100), or may be implemented in the same package as the main processor (1100). In addition, the storage device (1300a, 1300b) may have a form such as an SSD (solid state device) or a memory card, and may be detachably coupled to other components of the system (1000) through an interface such as a connection interface (1480) to be described later. Such storage device (1300a, 1300b) may be a device to which standard specifications such as UFS (universal flash storage), eMMC (embedded multi-media card), or NVMe (non-volatile memory express) are applied, but is not necessarily limited thereto.

촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. The photographing device (1410) can capture still images or moving images and may be a camera, a camcorder, and/or a webcam.

사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.The user input device (1420) can receive various types of data input from a user of the system (1000), and may be a touch pad, a keypad, a keyboard, a mouse, and/or a microphone.

센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 등일 수 있다. The sensor (1430) can detect various types of physical quantities that can be obtained from the outside of the system (1000) and convert the detected physical quantities into electrical signals. Such a sensor (1430) can be a temperature sensor, a pressure sensor, a light sensor, a position sensor, an acceleration sensor, a biosensor, and/or a gyroscope.

통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.The communication device (1440) can transmit and receive signals between other devices outside the system (1000) according to various communication protocols. Such a communication device (1440) can be implemented by including an antenna, a transceiver, and/or a modem.

디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.The display (1450) and speaker (1460) can function as output devices that output visual information and auditory information, respectively, to the user of the system (1000).

전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.The power supply unit (1470) can appropriately convert power supplied from a battery (not shown) built into the system (1000) and/or an external power source and supply it to each component of the system (1000).

연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 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) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.The connection interface (1480) can provide a connection between the system (1000) and an external device that is connected to the system (1000) and can exchange data with the system (1000). The connection interface (1480) can be implemented in various interface methods, such as an Advanced Technology Attachment (ATA), a Serial ATA (SATA), an external SATA (e-SATA), a Small Computer Small Interface (SCSI), a Serial Attached SCSI (SAS), a Peripheral Component Interconnection (PCI), a PCI express (PCIe), a NVM express (NVMe), an IEEE 1394, a universal serial bus (USB), a secure digital (SD) card, a multi-media card (MMC), an embedded multi-media card (eMMC), a Universal Flash Storage (UFS), an embedded Universal Flash Storage (eUFS), a compact flash (CF) card interface, etc.

이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although the embodiments of the present invention have been described with reference to the attached drawings, those skilled in the art will understand that the present invention can be implemented in other specific forms without changing the technical idea or essential features thereof. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive.

10: 스토리지 시스템
100 : 호스트 200 : 스토리지 장치
110 : 호스트 컨트롤러 120 : 호스트 메모리
210 : 스토리지 컨트롤러 220,300 : 비휘발성 메모리 장치
214, 400 : FTL 410 : 블록 관리부
411 : 프리 블록 리스트 415 : 빅팀 셀렉터블 블록 리스트
420 : 가비지 컬렉터 430 : 라이트 모듈
500 : 물리 블록
10: Storage System
100: Host 200: Storage Device
110 : Host controller 120 : Host memory
210 : Storage controller 220,300 : Nonvolatile memory device
214, 400 : FTL 410 : Block Management
411: Free Block List 415: Big Team Selectable Block List
420: Garbage Collector 430: Light Module
500 : Physics Block

Claims (20)

각각이 복수의 서브 블록을 포함하는 복수의 물리 블록으로 구성된 비휘발성 메모리 장치; 및
상기 복수의 물리 블록에 대한 프리 블록 리스트 및 빅팀 셀렉터블 블록 리스트를 포함하고, 상기 비휘발성 메모리 장치에 대한 구동을 제어하는 스토리지 컨트롤러를 포함하고,
상기 스토리지 컨트롤러는
호스트로부터 수신된 라이트 요청에 따른 데이터를 저장할 프리 블록이 충분하지 않는 경우 상기 프리 블록 리스트에서 전체 재사용가능한 물리 블록을 확인하여 상기 확인된 블록의 헤드를 선택하고,
상기 전체 재사용가능한 물리 블록이 없는 경우, 상기 빅팀 셀렉터블 블록 리스트에 기초하여 가비지 컬렉션을 수행하고
상기 가비지 컬렉션이 수행된 물리 블록의 주소를 상기 라이트 요청과 함께 상기 비휘발성 메모리 장치로 전송하는, 스토리지 장치.
A nonvolatile memory device comprising a plurality of physical blocks, each of which includes a plurality of sub-blocks; and
A storage controller including a free block list and a victim selectable block list for the plurality of physical blocks and controlling operation of the nonvolatile memory device,
The above storage controller
If there are not enough free blocks to store data according to a write request received from the host, the entire reusable physical block is checked in the free block list and the head of the checked block is selected.
If there is no fully reusable physical block above, garbage collection is performed based on the big team selectable block list.
A storage device that transmits the address of a physical block on which the garbage collection has been performed to the non-volatile memory device together with the write request.
제1항에 있어서, 상기 프리 블록 리스트는
상기 복수의 서브 블록 중 무효 서브 블록의 비율에 기초하여, 상기 복수의 물리 블록을 제1 순서로 소팅하여 그루핑하고,
상기 그루핑된 물리 블록들 각각의 이레이즈 카운트에 기초하여, 하나의 그룹 내에 속한 적어도 둘의 물리 블록을 제2 순서로 소팅하여 정리된 블록 리스트인, 스토리지 장치.
In the first paragraph, the free block list
Based on the ratio of invalid sub-blocks among the plurality of sub-blocks, the plurality of physical blocks are sorted and grouped in a first order,
A storage device, wherein the list of blocks is organized by sorting at least two physical blocks belonging to one group in a second order based on the erase count of each of the grouped physical blocks.
제2항에 있어서, 상기 프리 블록 리스트는
상기 제1 순서에 따른 그룹의 헤드, 상기 물리 블록의 이레이즈 카운트, 상기 서브 블록의 페이지 유효 상태를 포함하는 프리 블록 정보에 기초하여 복수의 물리 블록을 연결된 리스트 구조로 상기 스토리지 컨트롤러에 저장한 것인, 스토리지 장치.
In the second paragraph, the free block list
A storage device that stores a plurality of physical blocks in a linked list structure in the storage controller based on free block information including a head of a group according to the first order, an erase count of the physical block, and a page validity status of the sub block.
제2항에 있어서, 상기 스토리지 컨트롤러는
상기 라이트 요청을 수신하면 상기 프리 블록 리스트를 호출하고,
상기 프리 블록 리스트에서 상기 제1 순서에 따라 그루핑된 그룹의 헤드를 확인하고,
상기 프리 블록 리스트에 따라 상기 라이트 요청에 상응하는 헤드를 선택하고,
상기 선택된 헤드에 연결된 상기 물리 블록 중 상기 라이트 요청에 상응하는 물리 블록의 주소를 리턴하여 상기 비휘발성 메모리 장치로 전송하는 스토리지 장치.
In the second paragraph, the storage controller
When the above light request is received, the above free block list is called,
Check the head of the group grouped according to the first order in the above free block list,
Select a head corresponding to the light request according to the above free block list,
A storage device that returns the address of a physical block corresponding to the write request among the physical blocks connected to the selected head and transmits it to the non-volatile memory device.
제4항에 있어서, 상기 헤드를 선택하는 것은
모두 무효 서브 블록만 포함한 포함한 제1 그룹이 있는 경우 상기 제1 그룹에 속한 제1 물리 블록의 제1 헤드를 선택하는 스토리지 장치.
In the fourth paragraph, selecting the head
A storage device that selects a first head of a first physical block belonging to a first group when there is a first group including only invalid sub-blocks.
제5항에 있어서, 상기 헤드를 선택하는 경우,
상기 제1 물리 블록이 없는 경우, 적어도 하나의 유효 서브 블록을 포함한 제2 물리 블록의 제2 헤드를 선택하는 스토리지 장치.
In the fifth paragraph, when selecting the head,
A storage device that selects a second head of a second physical block including at least one valid sub-block when the first physical block is absent.
제1항에 있어서, 상기 빅팀 셀렉터블 블록 리스트는
상기 복수의 서브 블록 중 무효 서브 블록의 비율에 기초하여 상기 복수의 물리 블록을 제3 순서로 소팅하여 그루핑하고,
상기 제3 순서로로 그루핑된 물리 블록 각각의 유효페이지 카운트에 기초하여, 하나의 그룹 내에 속한 적어도 둘의 물리 블록을 제4 순서로 소팅하여 정리된 블록 리스트인, 스토리지 장치.
In the first paragraph, the big team selectable block list is
The plurality of physical blocks are sorted and grouped in a third order based on the ratio of invalid sub-blocks among the plurality of sub-blocks,
A storage device, wherein the block list is organized by sorting at least two physical blocks belonging to one group in a fourth order based on the valid page count of each physical block grouped in the third order.
제7항에 있어서, 상기 빅팀 셀렉터블 블록 리스트는
상기 제3 순서에 따른 그룹의 헤드, 상기 물리 블록의 유효페이지 카운트, 상기 서브 블록의 페이지 유효 상태를 포함하는 빅팀 블록 정보에 기초하여 복수의 물리 블록을 연결된 리스트 구조로 상기 스토리지 컨트롤러에 저장한 것인 스토리지 장치.
In the 7th paragraph, the big team selectable block list is
A storage device that stores a plurality of physical blocks in a linked list structure in the storage controller based on victim block information including a head of a group according to the third order, a valid page count of the physical block, and a page valid status of the sub block.
멀티 스택 구조로 복수의 서브 블록으로 구분된 물리 블록을 복수개 포함하는 비휘발성 메모리 장치;
상기 비휘발성 메모리 장치의 구동을 제어하는 스토리지 컨트롤러를 포함하고,
상기 스토리지 컨트롤러는
호스트의 라이트 요청을 수신하면 라이트 요청에 따른 프리 블록의 주소를 요청하는 라이트 모듈;
가비지 컬렉션을 수행하기 위한 빅팀 블록의 주소를 요청하는 가비지 컬렉터; 및
프리 블록 리스트 및 빅팀 셀렉터블 블록 리스트를 저장하고, 상기 프리 블록 리스트 또는 상기 빅팀 셀렉터블 블록 리스트에서 라이트 모듈의 요청 또는 상기 가비지 컬렉터의 요청에 상응하는 물리 블록을 선택하여 리턴하는 블록 관리부를 포함하는, 스토리지 장치.
A nonvolatile memory device comprising a plurality of physical blocks divided into a plurality of sub-blocks in a multi-stack structure;
A storage controller is included that controls the operation of the non-volatile memory device,
The above storage controller
A light module that requests the address of a free block according to the light request upon receiving a light request from the host;
A garbage collector requesting the address of a big team block to perform garbage collection; and
A storage device comprising a block management unit storing a free block list and a victim selectable block list, and selecting and returning a physical block corresponding to a request of a light module or a request of a garbage collector from the free block list or the victim selectable block list.
제9항에 있어서, 상기 프리 블록 리스트는
상기 복수의 서브 블록 중 무효 서브 블록의 개수가 많은 것부터 적어지는 제1 라이팅 순서로 소팅하여 그루핑하고,
상기 그루핑된 물리 블록들 간에 이레이즈 카운트가 작은 것부터 많아지는 제2 라이팅 순서로 소팅하여 정리한 물리 블록 리스트인, 스토리지 장치.
In the 9th paragraph, the free block list
Sorting and grouping in the first writing order from the number of invalid sub-blocks among the above multiple sub-blocks starting from the largest to the smallest,
A storage device, which is a list of physical blocks sorted in second writing order from smallest to largest erase count among the above grouped physical blocks.
제9항에 있어서, 상기 블록 관리부는
상기 라이트 모듈의 요청에 상응하여 상기 프리 블록 리스트에서 전체 재사용가능한 물리 블록을 확인하고,
전체 재사용가능한 서브 블록을 포함한 제1 물리 블록이 있는 경우 제1 물리 블록이 속한 그룹의 제1 헤드 및 상기 제1 헤드에 연결된 제1 물리 블록을 선택하고,
상기 제1 물리 블록의 주소를 상기 라이트 모듈로 리턴하는, 스토리지 장치.
In the 9th paragraph, the block management unit
In response to the request of the above light module, check the entire reusable physical block in the above free block list,
If there is a first physical block including a fully reusable sub-block, select the first head of the group to which the first physical block belongs and the first physical block connected to the first head,
A storage device that returns the address of the first physical block to the light module.
제11항에 있어서, 상기 블록 관리부는
상기 전체 재사용가능한 제1 물리 블록이 없는 경우, 적어도 하나의 유효 서브 블록을 포함하는 제2 물리 블록이 속한 그룹의 제2 헤드를 선택하고,
상기 제2 헤드에 연결된 복수의 제2 물리 블록 중에서 상기 라이트 모듈의 요청에 상응하는 제2 물리 블록의 주소를 선택하는, 스토리지 장치.
In the 11th paragraph, the block management unit
If there is no first physical block that is entirely reusable, select a second head of a group to which a second physical block including at least one valid sub-block belongs,
A storage device that selects an address of a second physical block corresponding to a request of the light module from among a plurality of second physical blocks connected to the second head.
제12항에 있어서, 상기 블록 관리부는
상기 제2 헤드에 속하는 물리 블록이 없는 경우, 상기 가비지 컬렉터에 요청하여 상기 빅팀 셀렉터블 블록 리스트로부터 상기 빅팀 블록을 요청하는, 스토리지 장치.
In the 12th paragraph, the block management unit
A storage device that requests the victim block from the victim selectable block list by requesting the garbage collector when there is no physical block belonging to the second head.
제9항에 있어서, 상기 블록 관리부는
상기 가비지 컬렉터의 요청에 상응하여 상기 빅팀 셀렉터블 블록 리스트에서 제1 순위 그룹에 속한 빅팀 블록을 확인하고,
상기 제1 순위 그룹 내에서 선택가능하면 상기 제1 순위 그룹의 헤드를 선택하고,
상기 헤드에 연결된 제3 물리 블록들 중 상기 가비지 컬렉터의 요청에 상응하는 빅팀 블록 정보를 가진 제3 물리 블록의 주소를 상기 가비지 컬렉터로 리턴하는, 스토리지 장치.
In the 9th paragraph, the block management unit
In response to the request of the above garbage collector, check the big team block belonging to the first priority group from the big team selectable block list,
If selectable within the above first-priority group, select the head of the above first-priority group,
A storage device that returns, to the garbage collector, the address of a third physical block having victim block information corresponding to a request of the garbage collector among the third physical blocks connected to the head.
제14항에 있어서, 상기 빅팀 셀렉터블 블록 리스트는
상기 복수의 서브 블록 중 유효 서브 블록의 개수가 적은 것부터 많아지는 제1 빅팀 순서로 소팅하여 그루핑하고,
상기 그루핑된 물리 블록들 간에 유효 페이지 카운트가 적은 것부터 많아지는 제2 빅팀 순서로 소팅하여 정리한, 물리 블록 리스트인, 스토리지 장치.
In the 14th paragraph, the big team selectable block list is
Sorting and grouping in order of the first big team with the smallest number of valid sub-blocks among the above multiple sub-blocks,
A storage device, which is a list of physical blocks sorted in second big team order from smallest to largest valid page count among the above grouped physical blocks.
호스트로부터 라이트 요청을 수신하는 단계;
상기 라이트 요청에 상응하여 프리 블록 리스트에서 상기 라이트 요청된 데이터를 저장가능한 전체 재사용가능한 제1 물리 블록이 있는지 확인하는 단계;
상기 전체 재사용가능한 제1 물리 블록이 있는 경우 제1 물리 블록이 속한 그룹의 제1 헤드를 선택하여 비휘발성 메모리 장치로 상기 제1 헤드를 포함한 프리 블록 주소를 리턴하는 단계;
상기 제1 물리 블록이 없는 경우, 상기 프리 블록 리스트에서 적어도 하나의 유효 서브 블록을 포함하는 제2 헤드를 선택하고, 상기 제2 헤드가 속한 물리 블록에 상기 라이트 요청된 데이터를 저장하기에 충분하면 상기 제2 헤드가 속한 물리 블록의 주소를 리턴하는 단계; 및
상기 라이트 요청과 함께 상기 리턴된 물리 블록의 주소를 상기 비휘발성 메모리 장치로 전송하는 단계를 포함하는, 스토리지 컨트롤러의 동작 방법.
Step of receiving a light request from a host;
A step of checking whether there is a first physical block available for reuse in the free block list corresponding to the write request and capable of storing the write-requested data;
A step of selecting a first head of a group to which the first physical block belongs when there is a first physical block that is entirely reusable and returning a free block address including the first head to a nonvolatile memory device;
If the first physical block is not present, selecting a second head including at least one valid sub-block from the free block list, and returning an address of the physical block to which the second head belongs if the physical block to which the second head belongs is sufficient to store the write-requested data; and
A method of operating a storage controller, comprising the step of transmitting an address of the returned physical block together with the write request to the non-volatile memory device.
제16항에 있어서, 상기 제2 헤드가 속한 물리 블록에 상기 라이트 요청된 데이터를 저장하기에 충분하지 않으면, 상기 제2 헤드가 속한 물리 블록 주소를 리턴하는 단계는
가비지 컬렉션을 시작하는 단계;
상기 가비지 컬렉션이 시작되면 빅팀 셀렉터블 블록 리스트에서 상기 라이트 요청된 데이터에 기초하여 빅팀 블록을 선택하는 단계;
상기 선택된 빅팀 블록에 대해 가비지 컬렉션을 수행하여 프리 블록으로 전환하는 단계; 및
상기 전환된 프리 블록의 주소를 리턴하는 단계를 포함하는, 스토리지 컨트롤러의 동작 방법.
In the 16th paragraph, if the physical block to which the second head belongs is not sufficient to store the write-requested data, the step of returning the physical block address to which the second head belongs
Steps to start garbage collection;
When the above garbage collection starts, a step of selecting a big team block based on the light-requested data from the big team selectable block list;
A step of performing garbage collection on the above-mentioned selected big team blocks to convert them into free blocks; and
A method of operating a storage controller, comprising the step of returning an address of the converted free block.
제16항에 있어서, 상기 비휘발성 메모리 장치는 복수의 서브 블록을 포함한 물리블록을 복수 개 포함하고,
상기 프리 블록 리스트는
복수의 서브 블록 중 무효 서브 블록의 개수가 많은 것부터 적어지는 제1 라이팅 순서로 소팅하여 그루핑하고,
상기 그루핑된 물리 블록들 간에 이레이즈 카운트가 작은 것부터 많아지는 제2 라이팅 순서로 소팅하여 정리한 물리 블록 리스트인, 스토리지 컨트롤러의 동작 방법.
In the 16th paragraph, the nonvolatile memory device includes a plurality of physical blocks including a plurality of sub blocks,
The above free block list is
Sorting and grouping in the first writing order from the largest number of invalid sub-blocks among multiple sub-blocks to the smallest number,
A method of operating a storage controller, the method comprising: organizing a list of physical blocks by sorting them in second writing order from a small erase count among the above grouped physical blocks;
제18항에 있어서, 상기 프리 블록 리스트는
상기 제1 라이팅 순서에 따른 그룹의 헤드, 상기 물리 블록의 이레이즈 카운트, 상기 서브 블록의 페이지 유효 상태를 포함하는 프리 블록 정보에 기초하여 복수의 물리 블록을 연결된 리스트 구조로 상기 스토리지 컨트롤러에 저장한 것인, 스토리지 컨트롤러의 동작 방법.
In the 18th paragraph, the free block list is
A method of operating a storage controller, wherein a plurality of physical blocks are stored in the storage controller in a linked list structure based on free block information including a head of a group according to the first writing order, an erase count of the physical block, and a page validity status of the sub block.
제17항에 있어서, 상기 빅팀 셀렉터블 블록 리스트는
상기 복수의 서브 블록 중 유효 서브 블록의 개수가 적은 것부터 많아지는 제1 빅팀 순서로 소팅하여 그루핑하고,
상기 그루핑된 물리 블록들 간에 유효 페이지 카운트가 적은 것부터 많아지는 제2 빅팀 순서로 소팅하여 정리한, 물리 블록 리스트인, 스토리지 컨트롤러의 동작 방법.
In the 17th paragraph, the big team selectable block list is
Sorting and grouping in order of the first big team with the smallest number of valid sub-blocks among the above multiple sub-blocks,
A method of operating a storage controller, the method comprising: organizing a list of physical blocks by sorting them in the order of the second big team, from the smallest valid page count among the above grouped physical blocks.
KR1020230189973A 2023-02-02 2023-12-22 A storage device and an operatiing method of a storage controller KR20240121657A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/417,297 US20240264766A1 (en) 2023-02-02 2024-01-19 Storage device and an operating method of a storage controller
CN202410143522.0A CN118426682A (en) 2023-02-02 2024-02-01 Memory device and operation method of memory controller
EP24155399.9A EP4414852A1 (en) 2023-02-02 2024-02-01 A storage device and an operating method of a storage controller

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020230014139 2023-02-02
KR20230014139 2023-02-02

Publications (1)

Publication Number Publication Date
KR20240121657A true KR20240121657A (en) 2024-08-09

Family

ID=92377750

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230189973A KR20240121657A (en) 2023-02-02 2023-12-22 A storage device and an operatiing method of a storage controller

Country Status (1)

Country Link
KR (1) KR20240121657A (en)

Similar Documents

Publication Publication Date Title
KR102533207B1 (en) Data Storage Device and Operation Method Thereof, Storage System Having the Same
US20160062885A1 (en) Garbage collection method for nonvolatile memory device
US11249897B2 (en) Data storage device and operating method thereof
US11567685B2 (en) Storage controller and storage device including the same
CN111158579B (en) Solid state disk and data access method thereof
US11262928B2 (en) Storage system and method for enabling partial defragmentation prior to reading in burst mode
US11526439B2 (en) Storage device and operating method thereof
CN111373383A (en) Memory cache management
CN110928805B (en) Memory system and operating method thereof
KR102544162B1 (en) Data storage device and operating method thereof
US20230266884A1 (en) Operating method for storage controller and storage system including same
US12045476B2 (en) Storage devices, storage controllers, and operating methods of storage controllers
US20220164144A1 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
CN114764396A (en) Data storage device and operation method thereof
US11726921B2 (en) Combined page footer for parallel metadata storage
US12001709B2 (en) Storage devices and operating methods of storage controllers
EP4414852A1 (en) A storage device and an operating method of a storage controller
KR20240121657A (en) A storage device and an operatiing method of a storage controller
CN118426682A (en) Memory device and operation method of memory controller
US11640336B2 (en) Fast cache with intelligent copyback
KR102697634B1 (en) Storage device and electronic system
US12014772B2 (en) Storage controller and storage device including the same
US12141074B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
US20240028507A1 (en) Storage system and method of operating the storage system
US20230244402A1 (en) Storage device and operating method of storage device