KR20200014175A - Apparatus and method for performing garbage collection to predicting required time - Google Patents

Apparatus and method for performing garbage collection to predicting required time Download PDF

Info

Publication number
KR20200014175A
KR20200014175A KR1020180167583A KR20180167583A KR20200014175A KR 20200014175 A KR20200014175 A KR 20200014175A KR 1020180167583 A KR1020180167583 A KR 1020180167583A KR 20180167583 A KR20180167583 A KR 20180167583A KR 20200014175 A KR20200014175 A KR 20200014175A
Authority
KR
South Korea
Prior art keywords
block
blocks
memory
time
super
Prior art date
Application number
KR1020180167583A
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 US16/502,964 priority Critical patent/US11030094B2/en
Priority to CN201910695645.4A priority patent/CN110781096B/en
Publication of KR20200014175A publication Critical patent/KR20200014175A/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

The present invention relates to a memory system for supporting garbage collection and an operating method thereof. The memory system comprises: a non-volatile memory device including a plurality of pages each including a plurality of memory cells, a plurality of blocks each including the pages, a plurality of planes each including the blocks, and a plurality of dies each including the planes, and including page buffers for caching data inputted/outputted to the blocks in page units; and a controller to group parallel-readable N blocks among the blocks in accordance with a set condition to manage grouped blocks as super blocks, generate required prediction times obtained by predicting and calculating required time needed when extracting valid data from the blocks for garbage collection in super block units, and refer to the required prediction times to select a victim block for the garbage collection among the blocks.

Description

소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치{APPARATUS AND METHOD FOR PERFORMING GARBAGE COLLECTION TO PREDICTING REQUIRED TIME}APAPATUS AND METHOD FOR PERFORMING GARBAGE COLLECTION TO PREDICTING REQUIRED TIME}

본 발명은 메모리 시스템에 관한 것으로서, 구체적으로 가비지 컬렉션을 지원하는 메모리 시스템 및 메모리 시스템의 동작방법에 관한 것이다.The present invention relates to a memory system, and more particularly, to a memory system that supports garbage collection and a method of operating the memory system.

최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.Recently, the paradigm of the computer environment has been shifted to ubiquitous computing, which enables the use of computer systems anytime and anywhere. As a result, the use of portable electronic devices such as mobile phones, digital cameras, notebook computers, and the like is increasing rapidly. Such portable electronic devices generally use a memory system using a memory device, that is, a data storage device. The data storage device is used as a main memory device or an auxiliary memory device of a portable electronic device.

비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.Unlike a hard disk, a data storage device using a nonvolatile memory device has no mechanical driving part, and thus has excellent stability and durability, and has an advantage of fast access to information and low power consumption. As an example of a memory system having such an advantage, a data storage device may include a universal serial bus (USB) memory device, a memory card having various interfaces, a solid state drive (SSD), and the like.

본 발명의 실시예는 가비지 컬렉션을 위해 블록에서 유효 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 뒤, 예측연산된 소요시간들을 기준으로 가비지 컬렉션을 위한 희생블록을 선택할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법을 제공한다.According to an embodiment of the present invention, a memory for predicting a time required for extracting valid data from a block for garbage collection in superblock units and then selecting a victim block for garbage collection based on the predicted time required It provides a method of operating a system and a memory system.

본 발명의 실시예에 따른 메모리 시스템은, 다수의 메모리 셀(cell)들을 각각 포함하는 다수의 페이지(page)들과, 상기 페이지들을 각각 포함하는 다수의 블록(block)들과, 상기 블록들을 각각 포함하는 다수의 플래인(plane)들과, 상기 플래인들을 각각 포함하는 다수의 다이(die)들을 포함하고, 상기 블록들에서 출력되는 데이터를 페이지 단위로 캐싱(catching)하기 위한 페이지버퍼들을 포함하는 비휘발성 메모리 장치; 및 상기 블록들 중 병렬리드가 가능한 N개의 블록을 설정된 조건에 따라 그룹화하여 다수의 슈퍼블록들로서 관리하고, 가비지 컬렉션(garbage collection)을 위해 상기 블록들에서 유효(valid) 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 소요예측시간들을 생성하며, 상기 소요예측시간들을 참조하여 상기 블록들 중 상기 가비지 컬렉션을 위한 희생(victim)블록을 선택하는 컨트롤러를 포함하며, N은 2이상의 자연수일 수 있다.A memory system according to an exemplary embodiment of the present invention may include a plurality of pages each including a plurality of memory cells, a plurality of blocks each including the pages, and a plurality of blocks, respectively. A plurality of planes including a plurality of planes, a plurality of dies each including the planes, and page buffers for caching data output from the blocks in units of pages. A nonvolatile memory device; And N blocks capable of parallel reading among the blocks according to a set condition to be managed as a plurality of superblocks, and required for extracting valid data from the blocks for garbage collection. A controller for generating predicted time predictions calculated by calculating a time in superblock units, and selecting a victim block for the garbage collection among the blocks by referring to the required prediction time, wherein N is a natural number of 2 or more Can be.

또한, 상기 컨트롤러는, 상기 슈퍼블록들 중 제1 슈퍼블록에 그룹화된 N개의 블록 각각에서 동일한 위치의 페이지에 대해서만 병렬리드가 가능한 경우, N개의 블록 각각의 유효 페이지 개수를 모두 합한 제1 개수에서 제1 슈퍼블록에 그룹화된 N개의 블록에서 위치가 동일한 유효 페이지의 개수를 뺀 개수에 리드예측시간을 곱한 제1 시간과, 상기 제1 개수에 전송예측시간을 곱한 제2 시간을 계산한 뒤, 상기 제1 시간과 상기 제2 시간을 더하여 상기 제1 슈퍼블록에 대응하는 소요예측시간을 생성하며, 상기 제1 슈퍼블록에 적용한 소요예측시간의 생성방법을 상기 슈퍼블록들 각각에 적용하여 상기 소요예측시간들을 생성하고, 상기 리드예측시간은, 상기 블록들의 데이터를 상기 페이지버퍼들에 캐싱하는데 걸릴 것으로 예측하는 시간이고, 상기 전송예측시간은, 상기 페이지버퍼들에 캐싱된 데이터를 상기 컨트롤러로 전송하는데 걸릴 것으로 예측하는 시간일 수 있다.In addition, when the parallel read is possible only for pages of the same position in each of the N blocks grouped in the first superblock among the superblocks, the controller may be configured to generate a first number of valid pages of each of the N blocks. After calculating the first time obtained by multiplying the lead prediction time by the number obtained by subtracting the number of valid pages having the same position in the N blocks grouped in the first superblock, and calculating the second time by multiplying the transmission prediction time by the first number, The required time is generated by adding the first time and the second time, and a required prediction time generation method applied to the first super block is applied to each of the superblocks. Generating prediction times, and the read prediction time is a time for predicting that it will take to cache data of the blocks in the page buffers, and the transmission prediction time. The time may be a time for predicting that it will take to transmit data cached in the page buffers to the controller.

또한, 상기 컨트롤러는, 상기 슈퍼블록들 중 제2 슈퍼블록에 그룹화된 N개의 블록 각각에서 서로 다른 위치에 페이지에 대해서 병렬리드가 가능한 경우, N개의 블록 각각의 유효 페이지 개수 중 가장 큰 개수에 리드예측시간을 곱한 제3 시간과, N개의 블록 각각의 유효 페이지 개수를 모두 합한 개수에 전송예측시간을 곱한 제4 시간을 계산한 뒤, 상기 제3 시간과 상기 제4 시간을 더하여 상기 제2 슈퍼블록에 대응하는 소요예측시간을 생성하며, 상기 제2 슈퍼블록에 적용한 소요예측시간의 생성방법을 상기 슈퍼블록들 각각에 적용하여 상기 소요예측시간들을 생성하고, 상기 리드예측시간은, 상기 블록들의 데이터를 상기 페이지버퍼들에 캐싱하는데 걸릴 것으로 예측하는 시간이고, 상기 전송예측시간은, 상기 페이지버퍼들에 캐싱된 데이터를 상기 컨트롤러로 전송하는데 걸릴 것으로 예측하는 시간일 수 있다.The controller reads the largest number of valid pages of each of the N blocks when parallel reading is possible for pages at different positions in each of the N blocks grouped in the second superblock among the superblocks. After calculating the third time multiplied by the prediction time and the fourth time multiplied by the estimated transmission time by the sum of the number of valid pages of each of the N blocks, the third time is added to the fourth time and the second super is added. Generating a required prediction time corresponding to a block; and generating the required prediction times by applying a method of generating a required prediction time applied to the second super block to each of the superblocks, and the read prediction time includes: The time to predict that it will take to cache data in the page buffers, and the transmission prediction time, the data cached in the page buffers It can be predicted that it will take time to transfer to the roller.

또한, 상기 컨트롤러는, 상기 블록들 중 유효 페이지의 개수가 가변되는 블록이 발생할 때마다, 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산할 수 있다.In addition, whenever a block having a variable number of valid pages occurs among the blocks, the controller may predictively calculate a value of a required prediction time corresponding to a superblock in which a block having a variable number of valid pages is grouped. have.

또한, 상기 컨트롤러는, 설정된 시점마다 상기 블록들 중 유효 페이지의 개수가 가변된 블록이 존재하는지 확인하고, 확인결과 존재하는 경우 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산할 수 있다.In addition, the controller checks whether there is a block having a variable number of valid pages among the blocks at each set time point, and if there is a check result, a required prediction corresponding to a superblock in which a block having a variable number of valid pages is grouped is present. The value of time can be predicted again.

또한, 상기 컨트롤러는, 상기 소요예측시간들 중 상대적으로 가장 작은 값의 소요예측시간에 대응하는 슈퍼블록에 그룹화된 N개의 블록 중 적어도 하나 이상의 유효 페이지를 포함하는 블록을 상기 희생블록으로 선택할 수 있다.The controller may select, as the victim block, a block including at least one or more valid pages among N blocks grouped in a superblock corresponding to a relatively small value of the required prediction time. .

또한, 상기 컨트롤러는, 상기 슈퍼블록들 각각에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합친 개수가 설정된 개수 이하인 슈퍼블록이, 1개인 경우, 선택된 1개의 슈퍼블록에 그룹화된 N개의 블록을 상기 희생블록으로 선택하고, 적어도 두 개 이상인 경우, 적어도 두 개 이상의 슈퍼블록에 대응하는 적어도 두 개 이상의 소요예측시간의 값 중 상대적으로 가장 작은 값에 대응하는 슈퍼블록에 그룹화된 N개의 블록 중 적어도 하나 이상의 유효 페이지를 포함하는 블록을 상기 희생블록으로 선택할 수 있다.The controller may further include N blocks grouped into one selected superblock when the number of valid pages of each of the N blocks grouped in each of the superblocks is equal to or less than a set number. At least two of the N blocks grouped in the superblock corresponding to the relatively smallest value among at least two or more required prediction time values corresponding to at least two or more superblocks are selected as the victim blocks and are at least two or more. A block including one or more valid pages may be selected as the victim block.

또한, 상기 컨트롤러는, 상기 슈퍼블록들 중 제3 슈퍼블록에 그룹화된 N개의 블록이 상기 희생블록으로 선택되어 상기 가비지 컬렉션을 통해 모든 유효 데이터가 타겟블록(target block)으로 이동된 경우, 상기 제3 슈퍼블록에 대응하는 소요예측시간을 예정값으로 설정할 수 있다.In addition, when the N blocks grouped in the third superblock among the superblocks are selected as the victim blocks, and all valid data is moved to the target block through the garbage collection, the controller may include the first block. 3 The required forecast time corresponding to the superblock can be set as a predetermined value.

또한, 상기 컨트롤러는, 상기 블록들 중 프리(free)블록의 개수가, 제1 개수 이하인 구간에서 상기 소요예측시간들을 생성 및 관리하고, 상기 제1 개수보다 큰 제2 개수 이상인 구간에서 상기 소요예측시간들을 관리하지 않을 수 있다.The controller may generate and manage the required prediction times in a section in which the number of free blocks among the blocks is less than or equal to a first number, and in the section in which the required number of times is greater than or equal to the second number greater than the first number. You may not manage the times.

또한, 상기 다이들 중 제1 다이는 제1 채널(channel)에 연결되고, 상기 다이들 중 제2 다이는 제2 채널에 연결되며, 상기 제1 다이에 포함된 플래인들은 상기 제1 채널을 공유하는 다수의 제1 경로(way)에 연결되고, 상기 제2 다이에 포함된 플래인들은 상기 제2 채널을 공유하는 다수의 제2 경로에 연결되며, 상기 컨트롤러는, 상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제1 다이의 제2 플래인에 포함된 제2 블록을 그룹화하는 것, 및 상기 제2 다이의 제3 플래인에 포함된 제3 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 상기 설정된 조건에 포함시키거나, 또는 상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제2 다이의 제3 플래인에 포함된 제3 블록을 그룹화하는 것, 및 상기 제1 다이의 제2 플래인에 포함된 제2 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 상기 설정된 조건에 포함시키거나, 또는 상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제1 다이의 제2 플래인에 포함된 제2 블록과 상기 제2 다이의 제3 플래인에 포함된 제3 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 상기 설정된 조건에 포함시킬 수 있다.In addition, a first one of the dies is connected to a first channel, a second one of the dies is connected to a second channel, and the planes included in the first die are connected to the first channel. Are connected to a plurality of shared first paths, and the planes included in the second die are connected to a plurality of second paths sharing the second channel, and the controller is connected to the first die of the first die. Grouping a first block included in a first plane and a second block included in a second plane of the first die, and a third block and the second included in a third plane of the second die Grouping the fourth block included in the fourth plane of the die into the set condition, or the first block included in the first plane of the first die and the third plane of the second die Grouping a third block included in the second block, and a second block included in the second plane of the first die; Grouping the fourth block included in the fourth plane of the second die into the set condition, or the first block included in the first plane of the first die and the first die of the first die; The set condition includes grouping a second block included in two planes, a third block included in a third plane of the second die, and a fourth block included in a fourth plane of the second die. You can.

본 발명의 또 다른 실시예에 따른 메모리 시스템의 동작방법은, 다수의 메모리 셀(cell)들을 각각 포함하는 다수의 페이지(page)들과, 상기 페이지들을 각각 포함하는 다수의 블록(block)들과, 상기 블록들을 각각 포함하는 다수의 플래인(plane)들과, 상기 플래인들을 각각 포함하는 다수의 다이(die)들을 포함하고, 상기 블록들에서 출력되는 데이터를 페이지 단위로 캐싱(catching)하기 위한 페이지버퍼들을 포함하는 비휘발성 메모리 장치를 포함하는 메모리 시스템의 동작방법에 있어서, 상기 블록들 중 병렬리드가 가능한 N개의 블록을 설정된 조건에 따라 그룹화하여 다수의 슈퍼블록들로서 관리하는 단계; 가비지 컬렉션(garbage collection)을 위해 상기 블록들에서 유효(valid) 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 소요예측시간들을 생성하는 생성단계; 및 상기 소요예측시간들을 참조하여 상기 블록들 중 상기 가비지 컬렉션을 위한 희생(victim)블록을 선택하는 선택단계를 포함하며, N은 2이상의 자연수일 수 있다.A method of operating a memory system according to still another embodiment of the present invention includes a plurality of pages each including a plurality of memory cells, a plurality of blocks each including the pages, and a plurality of pages. And a plurality of planes each including the blocks, a plurality of dies each including the planes, and caching data output from the blocks in units of pages. A method of operating a memory system including a nonvolatile memory device including page buffers, the method comprising: grouping N blocks capable of parallel reading among the blocks according to a set condition and managing the plurality of superblocks as a plurality of superblocks; A generation step of generating prediction time required by calculating a necessary time required to extract valid data from the blocks for garbage collection in a superblock unit; And selecting a victim block for the garbage collection among the blocks with reference to the required prediction times, where N may be a natural number of two or more.

또한, 상기 슈퍼블록들 중 제1 슈퍼블록에 그룹화된 N개의 블록 각각에서 동일한 위치의 페이지에 대해서만 병렬리드가 가능한 경우, 상기 생성단계는, 상기 제1 슈퍼블록에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합한 제1 개수에서 상기 제1 슈퍼블록에 그룹화된 N개의 블록에서 위치가 동일한 유효 페이지의 개수를 뺀 개수에 리드예측시간을 곱한 제1 시간을 계산하는 단계; 상기 제1 개수에 전송예측시간을 곱한 제2 시간을 계산하는 단계; 상기 제1 시간과 상기 제2 시간을 더하여 상기 제1 슈퍼블록에 대응하는 소요예측시간을 생성하는 단계; 및 상기 제1 슈퍼블록에 적용한 소요예측시간의 생성방법을 상기 슈퍼블록들 각각에 적용하여 상기 소요예측시간들을 생성하는 단계를 포함하며, 상기 리드예측시간은, 상기 블록들의 데이터를 상기 페이지버퍼들에 캐싱하는데 걸릴 것으로 예측하는 시간이고, 상기 전송예측시간은, 상기 페이지버퍼들에 캐싱된 데이터를 상기 컨트롤러로 전송하는데 걸릴 것으로 예측하는 시간일 수 있다.In addition, when parallel reading is possible only for pages of the same position in each of the N blocks grouped in the first superblock among the superblocks, the generating step is effective for each of the N blocks grouped in the first superblock. Calculating a first time obtained by multiplying a lead prediction time by a number obtained by subtracting the number of valid pages having the same position in the N blocks grouped in the first superblock by the first number of pages; Calculating a second time obtained by multiplying the first number by a transmission prediction time; Generating a required prediction time corresponding to the first super block by adding the first time and the second time; And generating the required prediction times by applying a method of generating the required prediction time applied to the first superblock to each of the superblocks, wherein the read prediction time comprises: generating data of the blocks from the page buffers. It is a time to estimate that it will take to cache, and the transmission prediction time may be a time to predict that it will take to transmit data cached in the page buffers to the controller.

또한, 상기 슈퍼블록들 중 제2 슈퍼블록에 그룹화된 N개의 블록 각각에서 서로 다른 위치에 페이지에 대해서 병렬리드가 가능한 경우, 상기 생성단계는, 상기 제2 슈퍼블록에 그룹화된 N개의 블록 각각의 유효 페이지 개수 중 가장 큰 개수에 리드예측시간을 곱한 제3 시간을 계산하는 단계; 상기 제2 슈퍼블록에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합한 개수에 전송예측시간을 곱한 제4 시간을 계산하는 단계; 상기 제3 시간과 상기 제4 시간을 더하여 상기 제2 슈퍼블록에 대응하는 소요예측시간을 생성하는 단계; 및 상기 제2 슈퍼블록에 적용한 소요예측시간의 생성방법을 상기 슈퍼블록들 각각에 적용하여 상기 소요예측시간들을 생성하는 단계를 포함하며, 상기 리드예측시간은, 상기 블록들의 데이터를 상기 페이지버퍼들에 캐싱하는데 걸릴 것으로 예측하는 시간이고, 상기 전송예측시간은, 상기 페이지버퍼들에 캐싱된 데이터를 상기 컨트롤러로 전송하는데 걸릴 것으로 예측하는 시간일 수 있다.Further, when parallel reading is possible for pages at different positions in each of the N blocks grouped in the second superblock among the superblocks, the generating step may include generating each of the N blocks grouped in the second superblock. Calculating a third time obtained by multiplying a lead prediction time by the largest number of valid pages; Calculating a fourth time obtained by multiplying a transmission prediction time by a sum of the total number of valid pages of each of the N blocks grouped in the second superblock; Generating a required prediction time corresponding to the second superblock by adding the third time and the fourth time; And generating the required prediction times by applying the method of generating the required prediction time applied to the second superblock to each of the superblocks, wherein the read prediction time includes the data of the blocks in the page buffers. It is a time to estimate that it will take to cache, and the transmission prediction time may be a time to predict that it will take to transmit data cached in the page buffers to the controller.

또한, 상기 블록들 중 유효 페이지의 개수가 가변되는 블록이 발생할 때마다, 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 단계를 더 포함할 수 있다.The method may further include predicting and calculating a value of a required prediction time corresponding to the superblock in which the variable number of valid pages is grouped each time a block having a variable number of valid pages occurs. Can be.

또한, 설정된 시점마다 상기 블록들 중 유효 페이지의 개수가 가변된 블록이 존재하는지 확인하고, 확인결과 존재하는 경우 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 단계를 더 포함할 수 있다.In addition, it is determined whether a block having a variable number of valid pages among the blocks exists at each set time point, and if a check result is present, a required predictive time value corresponding to a superblock in which the variable number of valid pages is grouped is determined. The method may further include performing a prediction operation.

또한, 상기 선택단계는, 상기 소요예측시간들 중 상대적으로 가장 작은 값의 소요예측시간에 대응하는 슈퍼블록에 그룹화된 N개의 블록 중 적어도 하나 이상의 유효 페이지를 포함하는 블록을 상기 희생블록으로 선택할 수 있다.The selecting may include selecting, as the victim block, a block including at least one or more valid pages among N blocks grouped in a superblock corresponding to the required prediction time having a relatively small value among the required prediction times. have.

또한, 상기 선택단계는, 상기 슈퍼블록들 각각에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합친 개수가 설정된 개수 이하인 슈퍼블록이 1개인 경우, 선택된 1개의 슈퍼블록에 그룹화된 N개의 블록을 상기 희생블록으로 선택하는 단계; 및 상기 슈퍼블록들 각각에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합친 개수가 설정된 개수 이하인 슈퍼블록이 적어도 두 개 이상인 경우, 적어도 두 개 이상의 슈퍼블록에 대응하는 적어도 두 개 이상의 소요예측시간의 값 중 상대적으로 가장 작은 값에 대응하는 슈퍼블록에 그룹화된 N개의 블록 중 적어도 하나 이상의 유효 페이지를 포함하는 블록을 상기 희생블록으로 선택하는 단계를 포함할 수 있다.The selecting may include selecting N blocks grouped into one selected superblock when there is one superblock whose total number of valid pages of each of the N blocks grouped into each of the superblocks is equal to or less than a set number. Selecting the sacrificial block; And at least two or more prediction times corresponding to at least two or more superblocks when the number of valid pages of each of the N blocks grouped in each of the superblocks is equal to or smaller than a set number. The method may include selecting, as the victim block, a block including at least one or more valid pages among N blocks grouped in a superblock corresponding to a relatively small value among the values of.

또한, 상기 슈퍼블록들 중 제3 슈퍼블록에 그룹화된 N개의 블록이 상기 희생블록으로 선택되어 상기 가비지 컬렉션을 통해 모든 유효 데이터가 타겟블록(target block)으로 이동된 경우, 상기 제3 슈퍼블록에 대응하는 소요예측시간을 예정값으로 설정하는 단계를 더 포함할 수 있다.In addition, when N blocks grouped in a third superblock among the superblocks are selected as the victim blocks and all valid data is moved to a target block through the garbage collection, the third superblock is included in the third superblock. The method may further include setting a corresponding required prediction time to a predetermined value.

또한, 상기 생성단계는, 상기 블록들 중 프리(free)블록의 개수가 제1 개수 이하인 구간에서 상기 소요예측시간들을 생성 및 관리하는 단계; 및 상기 블록들 중 프리블록의 개수가 상기 제1 개수보다 큰 제2 개수 이상인 구간에서 상기 소요예측시간들을 관리하지 않는 단계를 포함할 수 있다.The generating may include generating and managing the required prediction times in a section in which the number of free blocks among the blocks is less than or equal to a first number; And managing the required prediction times in a section in which the number of free blocks among the blocks is greater than or equal to the second number greater than the first number.

또한, 상기 다이들 중 제1 다이는 제1 채널(channel)에 연결되고, 상기 다이들 중 제2 다이는 제2 채널에 연결되며, 상기 제1 다이에 포함된 플래인들은 상기 제1 채널을 공유하는 다수의 제1 경로(way)에 연결되고, 상기 제2 다이에 포함된 플래인들은 상기 제2 채널을 공유하는 다수의 제2 경로에 연결되며, 상기 설정된 조건은, 상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제1 다이의 제2 플래인에 포함된 제2 블록을 그룹화하는 것, 및 상기 제2 다이의 제3 플래인에 포함된 제3 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 포함하거나, 또는 상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제2 다이의 제3 플래인에 포함된 제3 블록을 그룹화하는 것, 및 상기 제1 다이의 제2 플래인에 포함된 제2 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 포함하거나, 또는 상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제1 다이의 제2 플래인에 포함된 제2 블록과 상기 제2 다이의 제3 플래인에 포함된 제3 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 포함할 수 있다.In addition, a first one of the dies is connected to a first channel, a second one of the dies is connected to a second channel, and the planes included in the first die are connected to the first channel. Are connected to a plurality of shared first paths, and the planes included in the second die are connected to a plurality of second paths sharing the second channel. Grouping a first block included in a first plane and a second block included in a second plane of the first die, and a third block and the third block included in a third plane of the second die Grouping a fourth block included in the fourth plane of the second die, or including a first block included in the first plane of the first die and a third plane included in the third plane of the second die; Grouping three blocks, and a second block included in the second plane of the first die and the second die Grouping a fourth block included in four planes, or a first block included in a first plane of the first die and a second block included in a second plane of the first die; Grouping the third block included in the third plane of the second die and the fourth block included in the fourth plane of the second die.

본 기술은 가비지 컬렉션을 위해 블록들에서 유효 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 뒤, 예측연산된 소요시간을 기준으로 가비지 컬렉션을 위한 희생블록을 선택할 수 있다.The present technology predicts the time required to extract valid data from blocks for garbage collection in superblock units, and then selects a victim block for garbage collection based on the predicted time required.

이를 통해, 가비지 컬렉션을 수행하는데 걸리는 시간을 최소화하는 효과가 있다.This minimizes the time it takes to perform garbage collection.

또한, 가비지 컬렉션의 수행으로 인해 메모리 시스템의 성능이 감소하는 것을 최소화하는 효과가 있다.In addition, the performance of the memory collection is minimized due to the performance of the garbage collection.

도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면.
도 2은 본 발명의 다른 실시예에 따른 메모리 시스템 내 컨트롤러를 설명하기 위해 도시한 도면.
도 3은 본 발명의 실시예에 따른 메모리 시스템에서 사용되는 가비지 컬렉션의 예를 설명하기 위한 도면.
도 4는 본 발명의 실시예에 따른 메모리 시스템에서 사용되는 슈퍼 메모리 블록의 개념을 설명하기 위해 도시한 도면.
도 5a 및 도 5b는 본 발명의 제1 실시예에 따른 메모리 시스템에서 슈퍼 메모리 블록에 대한 가비지 컬렉션을 설명하는 도면.
도 6은 도 5a 및 도 5b를 통해 설명된 본 발명의 제1 실시예에 따른 메모리 시스템에서 슈퍼 메모리 블록에 대한 가비지 컬렉션을 수행할 때, 희생블록을 선택하는 동작을 설명하기 위해 도시한 도면.
도 7a 및 도 7b는 본 발명의 제2 실시예에 따른 메모리 시스템에서 슈퍼 메모리 블록에 대한 가비지 컬렉션을 설명하는 도면.
도 8은 도 7a 및 도 7b를 통해 설명된 본 발명의 제2 실시예에 따른 메모리 시스템에서 슈퍼 메모리 블록에 대한 가비지 컬렉션을 수행할 때, 희생블록을 선택하는 동작을 설명하기 위해 도시한 도면.
1 is a diagram schematically illustrating an example of a data processing system including a memory system according to an exemplary embodiment of the inventive concept.
2 is a diagram illustrating a controller in a memory system according to another exemplary embodiment of the present invention.
3 is a diagram illustrating an example of garbage collection used in a memory system according to an embodiment of the present invention.
4 is a diagram illustrating a concept of a super memory block used in a memory system according to an exemplary embodiment of the present invention.
5A and 5B illustrate garbage collection for a super memory block in a memory system according to a first embodiment of the present invention.
FIG. 6 is a diagram for explaining an operation of selecting a victim block when garbage collection is performed on a super memory block in the memory system according to the first embodiment of the present invention described with reference to FIGS. 5A and 5B.
7A and 7B illustrate garbage collection for a super memory block in a memory system according to a second embodiment of the present invention.
FIG. 8 is a diagram for explaining an operation of selecting a victim block when garbage collection is performed on a super memory block in a memory system according to the second embodiment of the present invention described with reference to FIGS. 7A and 7B.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.Hereinafter, with reference to the accompanying drawings will be described a preferred embodiment of the present invention. However, the present invention is not limited to the embodiments disclosed below, but may be configured in various different forms, only the embodiments are intended to complete the disclosure of the present invention and to those skilled in the art the scope of the present invention It is provided to inform you completely.

도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.1 is a diagram schematically illustrating an example of a data processing system including a memory system according to an exemplary embodiment of the inventive concept.

도 1을 참조하면, 데이터 처리 시스템(100)은, 호스트(Host)(102) 및 메모리 시스템(110)을 포함한다.Referring to FIG. 1, the data processing system 100 includes a host 102 and a memory system 110.

그리고, 호스트(102)는, 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함, 즉 유무선 전자 장치들을 포함한다.In addition, the host 102 includes electronic devices, such as portable electronic devices such as mobile phones, MP3 players, laptop computers, or the like, or electronic devices such as desktop computers, game consoles, TVs, projectors, and the like, that is, wired and wireless electronic devices.

또한, 호스트(102)는, 적어도 하나의 운영 시스템(OS: operating system)를 포함하며, 운영 시스템은, 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 여기서, 운영 시스템은, 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 예컨대, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 또한, 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있으며, 일 예로, 개인용 운영 시스템은, 일반 사용자를 위한 서비스 제공 기능을 지원하도록 특성화된 시스템으로, 윈도우(windows) 및 크롬(chrome) 등을 포함하고, 기업용 운영 시스템은, 고성능을 확보 및 지원하도록 특성화된 시스템으로, 윈도 서버(windows server), 리눅스(linux) 및 유닉스(unix) 등을 포함할 수 있다. 아울러, 운영 시스템에서의 모바일 운영 시스템은, 사용자들에게 이동성 서비스 제공 기능 및 시스템의 절전 기능을 지원하도록 특성화된 시스템으로, 안드로이드(android), iOS, 윈도 모바일(windows mobile) 등을 포함할 수 있다. 이때, 호스트(102)는, 복수의 운영 시스템들을 포함할 수 있으며, 또한 사용자 요청(user request)에 상응한 메모리 시스템(110)과의 동작 수행을 위해 운영 시스템을 실행한다, 여기서, 호스트(102)는, 사용자 요청에 해당하는 복수의 커맨드들을 메모리 시스템(110)으로 전송하며, 그에 따라 메모리 시스템(110)에서는 커맨드들에 해당하는 동작들, 즉 사용자 요청에 상응하는 동작들을 수행한다.In addition, the host 102 includes at least one operating system (OS), and the operating system manages and controls the functions and operations of the host 102 as a whole, and the data processing system 100 or Provides interaction between the user and host 102 using the memory system 110. Here, the operating system supports functions and operations corresponding to a user's purpose and purpose of use, and may be classified into a general operating system and a mobile operating system according to, for example, mobility of the host 102. In addition, the general operating system system in the operating system may be divided into a personal operating system and a corporate operating system according to the user's use environment. For example, the personal operating system is characterized to support a service providing function for the general user. The system includes windows and chrome, and the enterprise operating system is a system specialized to secure and support high performance, such as windows server, linux and unix. It may include. In addition, the mobile operating system in the operating system is a system specialized to support the mobility service providing function and the power saving function of the user, and may include Android, iOS, Windows mobile and the like. . In this case, the host 102 may include a plurality of operating systems, and also executes the operating system to perform an operation with the memory system 110 corresponding to a user request. ) Transmits a plurality of commands corresponding to the user request to the memory system 110, and accordingly, the memory system 110 performs operations corresponding to the commands, that is, operations corresponding to the user request.

또한, 메모리 시스템(110)은, 호스트(102)의 요청에 응답하여 동작하며, 특히 호스트(102)에 의해서 액세스되는 데이터를 저장한다. 다시 말해, 메모리 시스템(110)은, 호스트(102)의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다. 여기서, 메모리 시스템(110)은 호스트(102)와 연결되는 호스트 인터페이스 프로토콜에 따라, 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다. 예를 들면, 메모리 시스템(110)은, 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.In addition, the memory system 110 operates in response to a request from the host 102 and, in particular, stores data accessed by the host 102. In other words, the memory system 110 may be used as a main memory or an auxiliary memory of the host 102. The memory system 110 may be implemented as one of various types of storage devices according to a host interface protocol connected to the host 102. For example, the memory system 110 may include a solid state drive (SSD), an MMC, an embedded MMC (eMMC), a reduced size MMC (RS-MMC), and a micro-MMC type multimedia card (MMC). Multi Media Card (SD), Secure Digital (SD) cards in the form of SD, mini-SD, micro-SD, Universal Storage Bus (USB) storage devices, Universal Flash Storage (UFS) devices, Compact Flash (CF) cards, The storage device may be implemented as one of various types of storage devices such as a smart media card, a memory stick, and the like.

아울러, 메모리 시스템(110)을 구현하는 저장 장치들은, DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구현될 수 있다.In addition, the storage devices for implementing the memory system 110 may include volatile memory devices such as dynamic random access memory (DRAM) and static RAM (SRAM), read only memory (ROM), mask ROM (MROM), and programmable PROM (PROM). Non-volatile memory devices such as ROM, erasable ROM (EPROM), electrically erasable ROM (EEPROM), ferromagnetic ROM (FRAM), phase change RAM (PRAM), magnetic RAM (MRAM), resistive RAM (RRAM), and flash memory. Can be implemented.

그리고, 메모리 시스템(110)은, 호스트(102)에 의해서 액세스되는 데이터를 저장하는 메모리 장치(150), 및 메모리 장치(150)로의 데이터 저장을 제어하는 컨트롤러(130)를 포함한다.The memory system 110 includes a memory device 150 that stores data accessed by the host 102, and a controller 130 that controls data storage in the memory device 150.

여기서, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 이용되는 경우, 메모리 시스템(110)에 연결되는 호스트(102)의 동작 속도는 보다 개선될 수 있다. 아울러, 컨트롤러(130) 및 메모리 장치(150)는, 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있으며, 일 예로 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.Here, the controller 130 and the memory device 150 may be integrated into one semiconductor device. For example, the controller 130 and the memory device 150 may be integrated into one semiconductor device to form an SSD. When the memory system 110 is used as an SSD, an operating speed of the host 102 connected to the memory system 110 may be further improved. In addition, the controller 130 and the memory device 150 may be integrated into one semiconductor device to configure a memory card. For example, a PC card (PCMCIA: Personal Computer Memory Card International Association), a compact flash card (CF) Memory cards such as smart media cards (SM, SMC), memory sticks, multimedia cards (MMC, RS-MMC, MMCmicro), SD cards (SD, miniSD, microSD, SDHC), universal flash storage (UFS), etc. can do.

또한, 다른 일 예로, 메모리 시스템(110)은, 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB(Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID(radio frequency identification) 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성할 수 있다.In another example, the memory system 110 may include a computer, an ultra mobile PC (UMPC), a workstation, a netbook, a personal digital assistant (PDA), a portable computer, and a web tablet. ), Tablet computer, wireless phone, mobile phone, smart phone, e-book, portable multimedia player, portable game console, navigation (navigation) devices, black boxes, digital cameras, digital multimedia broadcasting (DMB) players, 3-dimensional televisions, smart televisions, digital audio recorders recorder, digital audio player, digital picture recorder, digital picture player, digital video recorder, digital video player, data center Make up Storage, a device capable of transmitting and receiving information in a wireless environment, one of various electronic devices constituting a home network, one of various electronic devices constituting a computer network, one of various electronic devices constituting a telematics network, RFID (radio frequency identification) device, or one of various components constituting the computing system.

한편, 메모리 시스템(110)에서의 메모리 장치(150)는, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있으며, 특히 라이트(write) 동작을 통해 호스트(102)로부터 제공된 데이터를 저장하고, 리드(read) 동작을 통해 저장된 데이터를 호스트(102)로 제공한다. 여기서, 메모리 장치(150)는, 복수의 메모리 블록(memory block)들(152,154,156)을 포함할 수 있다. 또한, 메모리 블록들(152,154,156) 각각은, 복수의 페이지(page)들(P<0>, P<1>, P<2>, P<3>, P<4>,...>)을 포함할 수 있다. 또한, 페이지들(P<0>, P<1>, P<2>, P<3>, P<4>,...>) 각각은, 복수의 메모리 셀(cell)들(미도시)을 포함할 수 있다. 그리고, 메모리 블록들(152,154,156) 각각은, 입/출력되는 데이터를 페이지 단위로 캐싱하기 위한 페이지버퍼들(미도시)를 포함한다. 그리고, 메모리 장치(150)는, 복수의 메모리 블록들(152,154,156)이 각각 포함된 복수의 플래인(plane)들(미도시)을 포함할 수 있다. 또한, 메모리 장치(150)는, 복수의 플래인들이 각각 포함된 복수의 메모리 다이(memory die)들(미도시)을 포함할 수 있다. 아울러, 메모리 장치(150)는, 비휘발성 메모리 장치, 일 예로 플래시 메모리가 될 수 있으며, 이때 플래시 메모리는 3차원(dimension) 입체 스택(stack) 구조가 될 수 있다.Meanwhile, the memory device 150 in the memory system 110 may maintain stored data even when power is not supplied. In particular, the memory device 150 may store data provided from the host 102 through a write operation and read the data. The stored data is provided to the host 102 through the operation. In this case, the memory device 150 may include a plurality of memory blocks 152, 154, and 156. Each of the memory blocks 152, 154, and 156 may include a plurality of pages P <0>, P <1>, P <2>, P <3>, P <4>, ...>. It may include. In addition, each of the pages P <0>, P <1>, P <2>, P <3>, P <4>, ...> may include a plurality of memory cells (not shown). It may include. Each of the memory blocks 152, 154, and 156 includes page buffers (not shown) for caching input / output data in page units. In addition, the memory device 150 may include a plurality of planes (not shown) including a plurality of memory blocks 152, 154, and 156, respectively. In addition, the memory device 150 may include a plurality of memory dies (not shown) each including a plurality of planes. In addition, the memory device 150 may be a nonvolatile memory device, for example, a flash memory, and in this case, the flash memory may have a three-dimensional stack structure.

그리고, 메모리 시스템(110)에서의 컨트롤러(130)는, 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어한다. 예컨대, 컨트롤러(130)는, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하며, 이를 위해 컨트롤러(130)는, 메모리 장치(150)의 리드, 라이트, 프로그램(program), 이레이즈(erase) 등의 동작을 제어한다.The controller 130 in the memory system 110 controls the memory device 150 in response to a request from the host 102. For example, the controller 130 provides the data read from the memory device 150 to the host 102, and stores the data provided from the host 102 in the memory device 150. The memory device 150 controls operations of read, write, program, erase, and the like of the memory device 150.

보다 구체적으로 설명하면, 컨트롤러(130)는, 호스트 인터페이스(HOST INTERFACE, 132), 프로세서(PROCESS, 134), 메모리 인터페이스(MEMORY INTERFACE, 142), 및 메모리(MEMORY, 144)를 포함한다.In more detail, the controller 130 includes a host interface HOST INTERFACE 132, a processor 134, a memory interface 142, and a memory 144.

또한, 호스트 인터페이스(132)는, 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다. 여기서, 호스트 인터페이스(132)는, 호스트(102)와 데이터를 주고 받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.In addition, the host interface 132 processes commands and data of the host 102, and includes a universal serial bus (USB), a multi-media card (MMC), a peripheral component interconnect-express (PCI-E), Serial-attached SCSI (SAS), Serial Advanced Technology Attachment (SATA), Parallel Advanced Technology Attachment (PATA), Small Computer System Interface (SCSI), Enhanced Small Disk Interface (ESDI), Integrated Drive Electronics (IDE), Mobile (MIPI) It may be configured to communicate with the host 102 via at least one of various interface protocols, such as Industry Processor Interface. Here, the host interface 132 may be driven through firmware called a host interface layer (HIL) as an area for exchanging data with the host 102. have.

또한, 메모리 인터페이스(142)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 수행하는 메모리/스토리지(storage) 인터페이스가 된다. 여기서, 메모리 인터페이스(142)는, 메모리 장치(150)가 플래시 메모리, 특히 일 예로 메모리 장치(150)가 NAND 플래시 메모리일 경우에 NAND 플래시 컨트롤러(NFC: NAND Flash Controller)로서, 프로세서(134)의 제어에 따라, 메모리 장치(150)의 제어 신호를 생성하고 데이터를 처리한다. 그리고, 메모리 인터페이스(142)는, 컨트롤러(130)와 메모리 장치(150) 간의 커맨드 및 데이터를 처리하는 인터페이스, 일 예로 NAND 플래시 인터페이스의 동작, 특히 컨트롤러(130)와 메모리 장치(150) 간 데이터 입출력을 지원하며, 메모리 장치(150)와 데이터를 주고 받는 영역으로 플래시 인터페이스 계층(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.In addition, the memory interface 142 may include a memory that performs an interface between the controller 130 and the memory device 150 so that the controller 130 controls the memory device 150 in response to a request from the host 102. / Storage interface. Here, the memory interface 142 is a NAND flash controller (NFC) when the memory device 150 is a flash memory, particularly, for example, the memory device 150 is a NAND flash memory. According to the control, a control signal of the memory device 150 is generated and data is processed. The memory interface 142 is an interface for processing commands and data between the controller 130 and the memory device 150, for example, an operation of a NAND flash interface, in particular, data input / output between the controller 130 and the memory device 150. And a data exchange area with the memory device 150, and may be driven through a firmware called a flash interface layer (FIL).

아울러, 메모리(144)는, 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장한다. 보다 구체적으로 설명하면, 메모리(144)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해 필요한 데이터를 저장한다. 예컨대, 컨트롤러(130)가, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하는 동작, 및 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하는 동작을 위해 메모리 장치(150)의 리드, 라이트, 프로그램, 이레이즈(erase) 등의 동작을 제어할 때, 필요한 데이터를 저장한다.In addition, the memory 144 is an operating memory of the memory system 110 and the controller 130, and stores data for driving the memory system 110 and the controller 130. More specifically, the memory 144 stores data necessary for the controller 130 to control the memory device 150 in response to a request from the host 102. For example, the controller 130 may be configured to provide data read from the memory device 150 to the host 102 and to store data provided from the host 102 in the memory device 150. When controlling the operation of the read, write, program, erase, and the like of 150, necessary data is stored.

여기서, 메모리(144)는, 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 아울러, 메모리(144)는, 도 1에서 도시한 바와 같이, 컨트롤러(130)의 내부에 포함될 수 있다. 또한, 메모리(144)는, 도 1에서 도시된 것과 다르게 컨트롤러(130)의 외부에 존재할 수 있으며, 이와 같은 경우 별도의 메모리 인터페이스(미도시)를 통해 컨트롤러(130)로부터 데이터가 입출력되는 외부 휘발성 메모리로 구현될 수도 있다.Herein, the memory 144 may be implemented as a volatile memory, for example, a static random access memory (SRAM), a dynamic random access memory (DRAM), or the like. In addition, the memory 144 may be included in the controller 130 as shown in FIG. 1. In addition, the memory 144 may exist outside the controller 130 differently from that shown in FIG. 1, and in this case, external volatile data input / output from the controller 130 through a separate memory interface (not shown). It may be implemented in memory.

또한, 메모리(144)는, 전술한 바와 같이, 호스트(102)와 메모리 장치(150) 간 데이터 라이트 및 리드 등의 동작을 수행하기 위해 필요한 데이터, 및 데이터 라이트 및 리드 등의 동작 수행 시의 데이터를 저장하며, 이러한 데이터 저장을 위해, 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.In addition, as described above, the memory 144 may include data necessary for performing operations such as data write and read between the host 102 and the memory device 150, and data when performing operations such as data write and read. For storing such data, the program memory, data memory, write buffer / cache, read buffer / cache, data buffer / cache, map buffer / cache, etc. may be included. .

그리고, 프로세서(134)는, 메모리 시스템(110)의 전체적인 동작을 제어하며, 특히 호스트(102)로부터의 라이트 요청 또는 리드 요청에 응답하여, 메모리 장치(150)에 대한 프로그램 동작 또는 리드 동작을 제어한다. 여기서, 프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동한다. 또한, 프로세서(134)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.The processor 134 controls the overall operation of the memory system 110, and in particular, controls the program operation or the read operation of the memory device 150 in response to a write request or a read request from the host 102. do. Here, the processor 134 drives a firmware called a flash translation layer (FTL) to control the overall operation of the memory system 110. In addition, the processor 134 may be implemented as a microprocessor or a central processing unit (CPU).

일 예로, 컨트롤러(130)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 호스트(102)로부터 요청된 동작을 메모리 장치(150)에서 수행, 다시 말해 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작을, 메모리 장치(150)와 수행한다. 여기서, 컨트롤러(130)는, 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작으로 포그라운드(foreground) 동작을 수행, 예컨대 라이트 커맨드에 해당하는 프로그램 동작, 리드 커맨드에 해당하는 리드 동작, 이레이즈 커맨드(erase command)에 해당하는 이레이즈 동작, 셋 커맨드(set command)로 셋 파라미터 커맨드(set parameter command) 또는 셋 픽쳐 커맨드(set feature command)에 해당하는 파라미터 셋 동작 등을 수행할 수 있다.For example, the controller 130 performs an operation requested by the host 102 in the memory device 150 through the processor 134 implemented as a microprocessor or a central processing unit (CPU), that is, the host ( The command operation corresponding to the command received from 102 is performed with the memory device 150. Here, the controller 130 performs a foreground operation with a command operation corresponding to a command received from the host 102, for example, a program operation corresponding to a write command, a read operation corresponding to a read command, and an erase operation. An erase operation corresponding to a command (erase command), a parameter set operation corresponding to a set parameter command or a set feature command may be performed using a set command.

그리고, 컨트롤러(130)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 메모리 장치(150)에 대한 백그라운드(background) 동작을 수행할 수도 있다. 여기서, 메모리 장치(150)에 대한 백그라운드 동작은, 메모리 장치(150)의 메모리 블록들(152,154,156)에서 임의의 메모리 블록에 저장된 데이터를 다른 임의의 메모리 블록으로 카피(copy)하여 처리하는 동작, 일 예로 가비지 컬렉션(GC: Garbage Collection) 동작을 포함할 수 있다. 이와 같이, 프로세서(134)는, 메모리 장치(150)에 대한 백그라운드 동작으로써 가비지 컬렉션 동작을 제어할 수 있기 때문에, 도면에서와 같이 프로세서(134) 내부에 가비지 컬렉션 제어부(196)가 포함될 수 있다. 그리고, 메모리 장치(150)에 대한 백그라운드 동작은, 메모리 장치(150)의 메모리 블록들(152, 154, 156) 간 또는 메모리 블록들(152, 154, 156)에 저장된 데이터 간을 스왑(swap)하여 처리하는 동작, 일 예로 웨어 레벨링(WL: Wear Leveling) 동작을 포함할 수 있다. 그리고, 메모리 장치(150)에 대한 백그라운드 동작은, 컨트롤러(130)에 저장된 맵 데이터를 메모리 장치(150)의 메모리 블록들(152, 154, 156)로 저장하는 동작, 일 예로 맵 플러시(map flush) 동작을 포함할 수 있다. 또한, 메모리 장치(150)에 대한 백그라운드 동작은, 메모리 장치(150)에 대한 배드 관리(bad management)하는 동작, 일 예로 메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)에서 배드 블록을 확인하여 처리하는 배드 블록 관리(bad block management) 동작을 포함할 수 있다.In addition, the controller 130 may perform a background operation on the memory device 150 through the processor 134 implemented as a microprocessor or a central processing unit (CPU). The background operation of the memory device 150 may include copying and storing data stored in an arbitrary memory block into another arbitrary memory block in the memory blocks 152, 154, and 156 of the memory device 150. For example, it may include garbage collection (GC) operation. As such, since the processor 134 may control the garbage collection operation as a background operation of the memory device 150, the garbage collection control unit 196 may be included in the processor 134 as shown in the drawing. In addition, the background operation of the memory device 150 may include swapping between the memory blocks 152, 154, and 156 of the memory device 150 or between data stored in the memory blocks 152, 154 and 156. Processing to include, for example, wear leveling (WL). The background operation of the memory device 150 may include storing map data stored in the controller 130 to the memory blocks 152, 154, and 156 of the memory device 150, for example, a map flush. ) May be included. Also, a background operation of the memory device 150 may include bad management of the memory device 150, for example, a plurality of memory blocks 152, 154, and 156 included in the memory device 150. ) May include a bad block management operation of identifying and processing a bad block.

그리고, 컨트롤러(130)의 프로세서(134)에는, 메모리 장치(150)의 배드 관리를 수행하기 위한 구성요소(도시하지 않음)가 포함될 수 있다. 이때, 메모리 장치(150)의 배드 관리를 수행하기 위한 구성요소는, 메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)에서 배드 블록을 확인한 후, 확인된 배드 블록을 배드 처리하는 배드 블록 관리를 수행한다. 여기서, 배드 관리는, 메모리 장치(150)가 플래시 메모리, 예컨대 낸드 플래시 메모리일 경우, 낸드의 특성으로 인해 데이터 라이트, 예컨대 데이터 프로그램(program) 시에 프로그램 실패(program fail)가 발생할 수 있으며, 프로그램 실패가 발생한 메모리 블록을 배드(bad) 처리한 후, 프로그램 실패된 데이터를 새로운 메모리 블록에 라이트, 즉 프로그램하는 것을 의미한다.The processor 134 of the controller 130 may include components (not shown) for performing bad management of the memory device 150. In this case, the component for performing bad management of the memory device 150 may check the bad block in the plurality of memory blocks 152, 154, and 156 included in the memory device 150, and then check the bad block. Perform bad block management for bad processing. Here, in the bad management, when the memory device 150 is a flash memory, for example, a NAND flash memory, a program fail may occur during a data write, for example, a data program due to the characteristics of the NAND. After bad processing of a memory block in which a failure occurs, the program failed data is written into a new memory block, that is, programming.

도 2은 본 발명의 다른 실시예에 따른 메모리 시스템 내 컨트롤러를 설명하기 위해 도시한 도면이다.2 is a diagram illustrating a controller in a memory system according to another exemplary embodiment of the present invention.

도 2을 참조하면, 호스트(102) 및 메모리 장치(150)와 연동하는 컨트롤러(130)는 호스트 인터페이스(132), 플래시 변환 계층(FTL)(40), 메모리 인터페이스(142) 및 메모리 소자(144)를 포함할 수 있다. Referring to FIG. 2, the controller 130 interoperating with the host 102 and the memory device 150 may include a host interface 132, a flash translation layer (FTL) 40, a memory interface 142, and a memory device 144. ) May be included.

호스트 인터페이스(132)는 호스트(102)로부터 전달되는 명령, 데이터 등을 주고받기 위한 것이다. 예를 들어, 호스트 인터페이스(132)은 호스트(102)로부터 전달되는 명령, 데이터 등을 순차적으로 저장한 뒤, 저장된 순서에 따라 출력할 수 있는 명령큐(56), 명령큐(56)로부터 전달되는 명령, 데이터 등을 분류하거나 처리 순서를 조정할 수 있는 버퍼관리자(52), 및 버퍼관리자(52)로부터 전달된 명령, 데이터 등의 처리를 위한 이벤트를 순차적으로 전달하기 위한 이벤트큐(54)를 포함할 수 있다.The host interface 132 is for exchanging commands and data transmitted from the host 102. For example, the host interface 132 may sequentially store commands, data, and the like transmitted from the host 102, and then output the command queue 56 and the command queue 56, which may be output according to the stored order. A buffer manager 52 capable of classifying commands, data, etc., or adjusting a processing order, and an event queue 54 for sequentially delivering events for processing commands, data, etc. delivered from the buffer manager 52. can do.

호스트(102)로부터 명령, 데이터는 동일한 특성의 복수개가 연속적으로 전달될 수도 있고, 서로 다른 특성의 명령, 데이터가 뒤 섞여 전달될 수도 있다. 예를 들어, 데이터를 읽기 위한 명령어가 복수 개 전달되거나, 읽기 및 프로그램 명령이 교번적으로 전달될 수도 있다. 호스트 인터페이스(132)은 호스트(102)로부터 전달된 명령, 데이터 등을 명령큐(56)에 먼저 순차적으로 저장한다. 이후, 호스트(102)로부터 전달된 명령, 데이터 등의 특성에 따라 컨트롤러(130)가 어떠한 동작을 수행할 지를 예측할 수 있으며, 이를 근거로 명령, 데이터 등의 처리 순서나 우선 순위를 결정할 수도 있다. 또한, 호스트(102)로부터 전달된 명령, 데이터 등의 특성에 따라, 호스트 인터페이스(132) 내 버퍼관리자(52)는 명령, 데이터 등을 메모리 소자(144)에 저장할 지, 플래시 변환 계층(FTL)(40)으로 전달할 지도 결정할 수도 있다. 이벤트큐(54)는 호스트(102)로부터 전달된 명령, 데이터 등에 따라 메모리 시스템 혹은 컨트롤러(130)가 내부적으로 수행, 처리해야 하는 이벤트를 버퍼관리자(52)로부터 수신한 후, 수신된 순서대로 플래시 변환 계층(FTL)(40)에 전달할 수 있다.Commands and data from the host 102 may be successively delivered with a plurality of the same characteristics, or may be delivered with a mixture of instructions and data of different characteristics. For example, a plurality of instructions for reading data may be delivered, or read and program instructions may be alternately delivered. The host interface 132 sequentially stores the commands, data, and the like transmitted from the host 102 in the command queue 56 first. Thereafter, the controller 130 may predict what operation the controller 130 performs according to the characteristics of the command, data, and the like transmitted from the host 102, and may determine the processing order or priority of the command, the data, and the like based on this. In addition, depending on characteristics of commands, data, and the like transmitted from the host 102, the buffer manager 52 in the host interface 132 stores the commands, data, and the like in the memory device 144, or a flash translation layer (FTL). You can also decide to forward it to (40). The event queue 54 receives an event that the memory system or the controller 130 needs to execute and process internally according to the command, data, etc. transmitted from the host 102 from the buffer manager 52 and then flashes in the received order. May be passed to the transform layer (FTL) 40.

실시예에 따라, 플래시 변환 계층(FTL)(40)은 이벤트규(54)로부터 수신된 이벤트를 관리하기 위한 호스트 요구 관리자(Host Request Manager(HRM), 46), 맵 데이터를 관리하는 맵데이터 관리자(Map Manger(MM), 44), 가비지 컬렉션 또는 웨어 레벨링을 수행하기 위한 상태 관리자(42), 메모리 장치 내 블록에 명령을 수행하기 위한 블록 관리자(48)를 포함할 수 있다.According to an embodiment, the flash translation layer (FTL) 40 is a host request manager (HRM) 46 for managing events received from the event specification 54, a map data manager for managing map data. (Map Manger (MM), 44), a state manager 42 for performing garbage collection or wear leveling, and a block manager 48 for performing a command on a block in the memory device.

예를 들면, 호스트 요구 관리자(HRM, 46)는 맵데이터 관리자(MM, 44) 및 블록 관리자(48)를 사용하여 호스트 인터페이스(132)으로부터 수신된 읽기 및 프로그램 명령, 이벤트에 따른 요청을 처리할 수 있다. 호스트 요구 관리자(HRM, 46)는 전달된 요청의 논리적 주소에 해당하는 물리적 주소를 파악하기 위해 맵데이터 관리자(MM, 44)에 조회 요청을 보내고 물리적 주소에 대해 메모리 인터페이스(142)에 플래시 읽기 요청을 전송하여 읽기 요청을 처리할 수 있다. 한편, 호스트 요구 관리자(HRM, 46)는 먼저 블록 관리자(48)에 프로그램 요청을 전송함으로써 미기록된(데이터가 없는) 메모리 장치의 특정 페이지에 데이터를 프로그램한 다음, 맵데이터 관리자(MM, 44)에 프로그램 요청에 대한 맵 갱신(update) 요청을 전송함으로써 논리적-물리적 주소의 매핑 정보에 프로그램한 데이터에 대한 내용을 업데이트할 수 있다.For example, the host request manager (HRM) 46 may use the map data manager (MM, 44) and the block manager 48 to process read and program commands received from the host interface 132 and requests based on events. Can be. The host request manager (HRM) 46 sends a lookup request to the map data manager (MM, 44) to determine the physical address corresponding to the logical address of the forwarded request and a flash read request to the memory interface 142 for the physical address. You can process the read request by sending. The host request manager (HRM) 46, on the other hand, first programs the data to a specific page of the unwritten (no data) memory device by sending a program request to the block manager 48, and then the map data manager (MM, 44). By transmitting a map update request for the program request, the content of the data programmed in the mapping information of the logical-physical address can be updated.

여기서, 블록 관리자(48)는 호스트 요구 관리자(HRM, 46), 맵데이터 관리자(MM, 44), 및 상태 관리자(42)가 요청한 프로그램 요청을 메모리 장치(150)를 위한 프로그램 요청으로 변환하여 메모리 장치(150) 내 블록을 관리할 수 있다. 메모리 시스템(110, 도 1 참조)의 프로그램 혹은 쓰기 성능을 극대화하기 위해 블록 관리자(48)는 프로그램 요청을 수집하고 다중 평면 및 원샷 프로그램 작동에 대한 플래시 프로그램 요청을 메모리 인터페이스(142)으로 보낼 수 있다. 또한, 다중 채널 및 다중 방향 플래시 컨트롤러의 병렬 처리를 최대화하기 위해 여러 가지 뛰어난 플래시 프로그램 요청을 메모리 인터페이스(142)으로 전송할 수도 있다. Here, the block manager 48 converts the program request requested by the host request manager (HRM) 46, the map data manager (MM, 44), and the state manager 42 into a program request for the memory device 150 to store the memory. Blocks within the device 150 may be managed. In order to maximize the program or write performance of the memory system 110 (see FIG. 1), the block manager 48 may collect program requests and send flash program requests to the memory interface 142 for multi-plane and one-shot program operations. . In addition, various outstanding flash program requests may be sent to the memory interface 142 to maximize parallelism of the multi-channel and multi-directional flash controllers.

한편, 블록 관리자(48)는 유효 페이지 수에 따라 플래시 블록을 관리하고 여유 블록이 필요한 경우 유효한 페이지가 없는 블록을 선택 및 지우고, 가비지 컬렉션(garbage collection)이 필요한 경우 가장 적게 유효한 페이지를 포함하고 있는 블록을 선택할 수 있다. 블록 관리자(48)가 충분한 빈 블록을 가질 수 있도록, 상태 관리자(42)는 가비지 컬렉션을 수행하여 유효 데이터를 모아 빈 블록으로 이동시키고, 이동된 유효 데이터를 포함하고 있었던 블록들을 삭제할 수 있다. 블록 관리자(48)가 상태 관리자(42)에 대해 삭제될 블록에 대한 정보를 제공하면, 상태 관리자(42)는 먼저 삭제될 블록의 모든 플래시 페이지를 확인하여 각 페이지가 유효한지 여부를 확인할 수 있다. 예를 들어, 각 페이지의 유효성을 판단하기 위해, 상태 관리자(42)는 각 페이지의 스페어(Out Of Band, OOB) 영역에 기록된 논리 주소를 식별한 뒤, 페이지의 실제 주소와 맵 관리자(44)의 조회 요청에서 얻은 논리 주소에 매핑된 실제 주소를 비교할 수 있다. 상태 관리자(42)는 각 유효한 페이지에 대해 블록 관리자(48)에 프로그램 요청을 전송하고, 프로그램 작업이 완료되면 맵 관리자(44)의 갱신을 통해 매핑 테이블이 업데이트될 수 있다.On the other hand, the block manager 48 manages flash blocks according to the number of valid pages, selects and erases blocks without valid pages when free blocks are needed, and includes least valid pages when garbage collection is required. You can select a block. In order for the block manager 48 to have enough free blocks, the state manager 42 may perform garbage collection to collect valid data, move it to an empty block, and delete blocks that contained the moved valid data. When the block manager 48 provides the state manager 42 with information about the block to be deleted, the state manager 42 may first check all the flash pages of the block to be deleted to determine whether each page is valid. . For example, to determine the validity of each page, state manager 42 identifies the logical address recorded in the Out Of Band (OOB) area of each page, and then the physical address and map manager 44 of the page. You can compare the actual addresses that are mapped to the logical addresses obtained from the query request. The state manager 42 may transmit a program request to the block manager 48 for each valid page, and when the program work is completed, the mapping table may be updated by updating the map manager 44.

맵 관리자(44)는 논리적-물리적 매핑 테이블을 관리하고, 호스트 요구 관리자(HRM, 46) 및 상태 관리자(42)에 의해 생성된 조회, 업데이트 등의 요청을 처리할 수 있다. 맵 관리자(44)는 전체 매핑 테이블을 플래시 메모리에 저장하고, 메몰시 소자(144) 용량에 따라 매핑 항목을 캐시할 수도 있다. 조회 및 업데이트 요청을 처리하는 동안 맵 캐시 미스가 발생하면, 맵 관리자(44)는 메모리 인터페이스(142)에 읽기 요청을 전송하여 메모리 장치(150)에 저장된 매핑 테이블을 로드(load)할 수 있다. 맵 관리자(44)의 더티 캐시 블록 수가 특정 임계 값을 초과하면 블록 관리자(48)에 프로그램 요청을 보내서 깨끗한 캐시 블록을 만들고 더티 맵 테이블이 메모리 장치(150)에 저장될 수 있다.The map manager 44 manages logical-physical mapping tables and can handle requests such as queries, updates, etc. generated by the host request manager (HRM) 46 and the state manager 42. The map manager 44 may store the entire mapping table in the flash memory, and cache the mapping item according to the capacity of the device 144 in the memory. If a map cache miss occurs while processing the query and update request, the map manager 44 may send a read request to the memory interface 142 to load the mapping table stored in the memory device 150. If the number of dirty cache blocks in map manager 44 exceeds a certain threshold, a program request may be sent to block manager 48 to create a clean cache block and the dirty map table may be stored in memory device 150.

한편, 가비지 컬렉션이 수행되는 경우, 상태 관리자(42)가 유효한 페이지를 복사하는 동안 호스트 요구 관리자(HRM, 46)는 페이지의 동일한 논리 주소에 대한 데이터의 최신 버전을 프로그래밍하고 업데이트 요청을 동시에 발행할 수 있다. 유효한 페이지의 복사가 정상적으로 완료되지 않은 상태에서 상태 관리자(42)가 맵 업데이트를 요청하면 맵 관리자(44)는 매핑 테이블 업데이트를 수행하지 않을 수도 있다. 맵 관리자(44)는 최신 맵 테이블이 여전히 이전 실제 주소를 가리키는 경우에만 맵 업데이트를 수행하여 정확성을 보장할 수 있다.On the other hand, if garbage collection is performed, the host request manager (HRM) 46 may program the latest version of the data for the same logical address of the page and issue an update request simultaneously while the state manager 42 copies a valid page. Can be. The map manager 44 may not perform the mapping table update when the state manager 42 requests the map update while the copy of the valid page is not normally completed. The map manager 44 can perform map update only if the latest map table still points to the old physical address to ensure accuracy.

실시예에 따라, 도 2에서 설명하는 블록 관리자(48), 맵 관리자(44) 혹은 상태 관리자(42) 중 적어도 하나는 하기의 도 3에서 설명하는 가비지 컬렉션 제어부(196)를 포함할 수 있다.According to an embodiment, at least one of the block manager 48, the map manager 44, or the state manager 42 described in FIG. 2 may include the garbage collection control unit 196 described in FIG. 3 below.

메모리 장치(150)는, 복수의 메모리 블록들을, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 단일 레벨 셀(SLC: Single Level Cell) 메모리 블록 및 멀티 레벨 셀(MLC: Multi Level Cell) 메모리 블록 등으로 포함할 수 있다. 여기서, SLC 메모리 블록은, 하나의 메모리 셀에 1 비트 데이터를 저장하는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하며, 데이터 연산 성능이 빠르며 내구성이 높다. 그리고, MLC 메모리 블록은, 하나의 메모리 셀에 멀티 비트 데이터(예를 들면, 2 비트 또는 그 이상의 비트)를 저장하는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하며, SLC 메모리 블록보다 큰 데이터 저장 공간을 가짐, 다시 말해 고집적화할 수 있다. 특히, 메모리 장치(150)는, MLC 메모리 블록으로, 하나의 메모리 셀에 2 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 MLC 메모리 블록뿐만 아니라, 하나의 메모리 셀에 3 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 트리플 레벨 셀(TLC: Triple Level Cell) 메모리 블록, 하나의 메모리 셀에 4 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 쿼드러플 레벨 셀(QLC: Quadruple Level Cell) 메모리 블록, 또는 하나의 메모리 셀에 5 비트 또는 그 이상의 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 다중 레벨 셀(multiple level cell) 메모리 블록 등을 포함할 수 있다.The memory device 150 may include a single level cell (SLC) memory block and a multi level cell (MLC) according to the number of bits capable of storing or representing a plurality of memory blocks in one memory cell. Cell) memory block, or the like. In this case, the SLC memory block includes a plurality of pages implemented by memory cells that store 1-bit data in one memory cell, and has fast data operation performance and high durability. The MLC memory block includes a plurality of pages implemented by memory cells that store multi-bit data (for example, two bits or more bits) in one memory cell, and store data larger than the SLC memory block. It can have space, that is, it can be highly integrated. In particular, the memory device 150 is an MLC memory block that includes three MLC memory blocks as well as an MLC memory block including a plurality of pages implemented by memory cells capable of storing 2-bit data in one memory cell. Triple Level Cell (TLC) memory block comprising a plurality of pages implemented by memory cells capable of storing bit data, multiple implemented by memory cells capable of storing 4-bit data in one memory cell A multi-level cell comprising a quadruple level cell (QLC) memory block containing pages of a plurality of pages implemented by memory cells capable of storing five or more bits of data in one memory cell It may include a cell (multiple level cell) memory block.

여기서, 본 발명의 실시 예에서는, 설명의 편의를 위해, 메모리 장치(150)가, 플래시 메모리, 예컨대 NAND 플래시 메모리 등과 같은 비휘발성 메모리 등으로 구현되는 것을 일 예로 설명하지만, 상변환 메모리(PCRAM: Phase Change Random Access Memory), 저항 메모리(RRAM(ReRAM): Resistive Random Access Memory), 강유전체 메모리(FRAM: Ferroelectrics Random Access Memory), 및 스핀 주입 자기 메모리(STT-RAM(STT-MRAM): Spin Transfer Torque Magnetic Random Access Memory) 등과 같은 메모리들 중 어느 하나의 메모리로 구현될 수도 있다.Here, in an embodiment of the present disclosure, for convenience of description, the memory device 150 is implemented as a nonvolatile memory such as a flash memory, for example, a NAND flash memory. Phase Change Random Access Memory (RRAM), Resistive Random Access Memory (RRAM), Ferroelectrics Random Access Memory (FRAM), and Spin Injection Magnetic Memory (STT-MRAM): Spin Transfer Torque Magnetic Random Access Memory) may be implemented as any one of memories.

도 3은 본 발명의 실시예에 따른 메모리 시스템에서 사용되는 가비지 컬렉션의 예를 설명하기 위한 도면이다.3 is a diagram for describing an example of garbage collection used in a memory system according to an embodiment of the present invention.

도 3을 참조하면, 가비지 컬렉션(GC)은 호스트에서 전달되는 명령 없이 메모리 시스템 스스로 수행할 수 있다. 메모리 시스템 내 컨트롤러(130)는 메모리 장치(150) 내 복수의 데이터 블록(40_1)으로부터 유저 데이터를 읽어, 컨트롤러(130) 내에 배치된 메모리(144)에 저장한 뒤, 메모리 장치(150) 내 프리블록(40_2)에 유저 데이터를 프로그램할 수 있다. 여기서, 복수의 데이터 블록(40_1)에는 더 이상 데이터를 프로그램할 수 없는 블록이 포함될 수 있다. 실시예에 따라, 메모리(144)는 컨트롤러(130)의 외부에 배치되어 컨트롤러(130)와 연동될 수도 있다.Referring to FIG. 3, garbage collection GC may be performed by the memory system itself without a command transmitted from a host. The controller 130 in the memory system reads user data from the plurality of data blocks 40_1 in the memory device 150, stores the user data in the memory 144 disposed in the controller 130, and then frees the data in the memory device 150. User data can be programmed in block 40_2. Here, the plurality of data blocks 40_1 may include blocks for which data can no longer be programmed. In some embodiments, the memory 144 may be disposed outside the controller 130 and interlocked with the controller 130.

구체적으로, 컨트롤러(130)에 포함된 가비지 컬렉션 제어부(196)는 메모리 장치(150) 내 복수의 데이터 블록(40_1) 중 적어도 하나를 대상 블록으로 선정할 수 있다. 또한, 가비지 컬렉션 제어부(196)는 대상 블록으로 선정된 블록 내 유효한 데이터를 탐색, 추출하고, 유효한 데이터를 프리 블록(40_2)에 이동시킨다. 이때, 메모리 장치(150) 내 복수의 데이터 블록(40_1) 중 선택된 적어도 하나의 대상 블록에서 더 이상 유효하지 않다고 판단되는 데이터는 버려질 수 있다(즉, 프리 블록(40_2)으로 이동되지 않을 수 있다). 메모리 장치(150) 내 특정 블록(40_1)에 저장되어 있던 유효한 데이터를 프리 블록(40_2)으로 이동시키면, 컨트롤러(130)는 특정 블록(40_1)은 더 이상 유효한 데이터를 가지고 있다고 여기지 않는다. 이후, 특정 블록(40_1)에 새로운 데이터를 프로그램할 필요가 발생하면, 해당 블록(40_1)에 저장되어 있던 데이터를 모두 지울 수 있다(erase).In detail, the garbage collection controller 196 included in the controller 130 may select at least one of the plurality of data blocks 40_1 in the memory device 150 as a target block. In addition, the garbage collection control unit 196 searches and extracts valid data in the block selected as the target block, and moves the valid data to the free block 40_2. In this case, data determined to be no longer valid in at least one selected block among the plurality of data blocks 40_1 in the memory device 150 may be discarded (that is, may not be moved to the free block 40_2). ). When valid data stored in the specific block 40_1 in the memory device 150 is moved to the free block 40_2, the controller 130 does not consider the specific block 40_1 to have valid data anymore. Thereafter, when a new data needs to be programmed in a specific block 40_1, all data stored in the block 40_1 may be erased.

실시예에 따라, 컨트롤러(130)는 가비지 컬렉션 중 선별된 유효한 데이터를 프리 블록(40_2)에 프로그램하기 전까지 임시 저장하기 위해 내부 메모리(144)를 사용할 수 있다.According to an embodiment, the controller 130 may use the internal memory 144 to temporarily store valid data selected from garbage collection until it is programmed in the free block 40_2.

가비지 컬렉션을 위해서, 컨트롤러(130)는 복수의 데이터 블록(40_1)에서 유효한 데이터와 유효하지 않은 데이터를 구분해야 한다. 각각의 데이터 블록(40_1)에 대응하는 유효 페이지 카운트(VPC)에 대한 정보는 각 데이터 블록(40_1)에 유효한 데이터 혹은 유효한 페이지의 양을 가리킬 뿐 어느 데이터 혹은 어느 페이지가 유효한 지를 알려주지 못한다. 따라서, 컨트롤러(130)는 유효 페이지 수 뿐만 아니라 맵데이터를 포함한 동작 정보를 이용하여 어느 데이터 혹은 어느 페이지가 유효한 지를 판단할 필요가 있다. 이 경우, 가비지 컬렉션을 위해 프리 블록(40_2)에 저장할 데이터를 용이하게 구분할 수 있어 가비지 컬렉션을 위해 소요되는 자원(예, 시간, 전력)을 줄일 수 있다.For garbage collection, the controller 130 must distinguish between valid and invalid data in the plurality of data blocks 40_1. The information on the valid page count (VPC) corresponding to each data block 40_1 indicates the amount of valid data or valid pages for each data block 40_1 but does not indicate which data or which page is valid. Accordingly, the controller 130 needs to determine which data or which pages are valid using not only the number of valid pages but also operation information including map data. In this case, data to be stored in the free block 40_2 for garbage collection may be easily distinguished, thereby reducing resources (eg, time and power) required for garbage collection.

메모리 장치(150) 내 복수의 블록(40_1, 40_2)은 대용량의 데이터(large volume data)를 저장할 수 있다. 실시예에 따라, 컨트롤러(130)는 대용량의 데이터를 저장하는 복수의 블록(40_1, 40_2)을 보다 효율적으로 제어하고 관리하기 위해, 각각의 블록을 복수의 단위 블록으로 구분할 수 있다. 하나의 블록을 복수의 단위 블록으로 구분하면, 컨트롤러(130)는 각 단위 블록마다 맵 데이터(예, L2P table, P2L table)를 생성할 수 있다.The plurality of blocks 40_1 and 40_2 in the memory device 150 may store large volume data. According to an embodiment, the controller 130 may divide each block into a plurality of unit blocks in order to more efficiently control and manage the plurality of blocks 40_1 and 40_2 that store a large amount of data. When one block is divided into a plurality of unit blocks, the controller 130 may generate map data (eg, L2P table, P2L table) for each unit block.

실시예에 따라, 하나의 블록을 몇 개의 단위 블록으로 구분할 지가 달라질 수 있다. 예를 들면, 메모리 장치(150)의 구조, 맵 데이터의 크기, 맵 데이터의 위치 등에 의해 하나의 블록을 몇 개의 단위 블록으로 구분하는 것이 결정될 수 있다. 메모리 장치(150) 내 각각의 블록은 복수의 페이지 단위로 데이터를 프로그램할 수 있다. 이때, 각 블록의 단위셀의 구조에 따라 각 페이지에 저장될 수 있는 데이터의 크기가 달라질 수 있다. 맵 데이터가 비트맵 형식으로 작성되는 경우, 맵 데이터의 크기 단위의 1배 혹은 수배에 대응하는 영역을 단위 블록의 크기로 결정할 수 있다.According to an embodiment, how many unit blocks are divided into one block may vary. For example, it may be determined to divide one block into several unit blocks based on the structure of the memory device 150, the size of the map data, the location of the map data, and the like. Each block in the memory device 150 may program data in units of a plurality of pages. In this case, the size of data that can be stored in each page may vary according to the structure of the unit cell of each block. When the map data is created in a bitmap format, an area corresponding to one or several times the size unit of the map data may be determined as the size of the unit block.

데이터 블록(40_1)에는 첫 페이지부터 마지막 페이지까지 순차적으로 데이터가 프로그램될 수 있다. 해당 블록의 마지막 페이지에 데이터가 프로그램되면, 해당 블록은 새로운 데이터를 프로그램할 수 있는 오픈(open) 상태에서 새로운 데이터를 더 이상 프로그램할 수 없는 클로즈(close) 상태가 된다. 실시예에 따라, 데이터 블록(40_1) 중 특정 블록이 클로즈(close) 상태가 되면, 가비지 컬렉션 제어부(196)는 해당 블록 내 단위 블록에 저장된 데이터에 대응하는 맵데이터의 수와 유효 페이지 수를 비교하여 해당 블록에 저장된 데이터의 유효성을 판단할 수 있다.Data may be sequentially programmed from the first page to the last page in the data block 40_1. When data is programmed in the last page of the block, the block is in a closed state in which new data can no longer be programmed in an open state in which new data can be programmed. According to an embodiment, when a specific block of the data block 40_1 is in a closed state, the garbage collection control unit 196 compares the number of map data corresponding to the data stored in the unit block in the block with the number of valid pages. The validity of the data stored in the block can be determined.

구체적으로, 메모리 장치 내 데이터 블록(40_1)이 삭제 동작(erase operation) 없이 데이터를 더 이상 데이터를 기록할 수 없는 상태(클로즈 상태)가 되면, 컨트롤러(130)는 유효 페이지 수와 복수의 단위 블록의 맵데이터 총합을 비교할 수 있다. 만약 특정 블록에서 유효 페이지 수와 맵데이터의 총합이 일치하지 않는 경우, 해당 블록에는 불필요한 맵데이터가 포함되어 있다고 추정할 수 있다. 컨트롤러(130)는 해당 블록에 저장된 데이터에 대응하는 맵데이터가 유효한 지를 검사할 수 있다. 만약 더 이상 유효하지 않은 맵데이터가 존재한다면, 컨트롤러(130)는 유효하지 않은 맵데이터를 삭제하거나 무효화시켜 맵데이터를 갱신할 수 있다.Specifically, when the data block 40_1 in the memory device is in a state in which data can no longer be written without a erase operation (close state), the controller 130 may determine the number of valid pages and the plurality of unit blocks. You can compare the total map data. If the total number of valid pages and map data in a particular block do not match, it may be estimated that unnecessary map data is included in the corresponding block. The controller 130 may check whether map data corresponding to data stored in the block is valid. If there is no longer valid map data, the controller 130 may update the map data by deleting or invalidating the invalid map data.

실시예에 따라, 가비지 컬렉션 제어부(196)는 특정 블록 내 복수의 단위 블록의 맵데이터 총합을 해당 블록의 페이지 수로 나눈 비율을 바탕으로, 해당 블록을 가비지 컬렉션의 대상 블록으로 지정할 지를 결정할 수 있다. 여기서 블록의 페이지 수는 메모리 장치(150)의 설계와 제조 과정에서 결정된 고정된 값으로, 하나의 블록에 저장 가능한 최대 유효 데이터의 양을 나타낼 수 있다. 특정 블록을 복수의 단위 블록으로 구분하고 각 단위 블록마다 맵데이터를 생성하는 경우, 해당 블록 내 복수의 단위 블록의 맵데이터의 총합은 해당 블록에 현재 유효한 데이터의 양을 나타낼 수 있다. 따라서, 하나의 블록 내 복수의 단위 블록의 맵데이터 총합을 해당 블록의 페이지 수로 나눈 비율을 바탕으로, 가비지 컬렉션 제어부(196)는 각 블록에 유효 데이터의 양을 인지할 수 있다. 전술한 비율이 낮을수록, 가비지 컬렉션 제어부(196)는 해당 블록을 가비지 컬렉션의 대상 블록으로 우선 지정할 수 있다. 또한, 전술한 비율이 기 설정된 범위에 속하는 가를 통해, 가비지 컬렉션 제어부(196)는 가비지 컬렉션의 대상 블록으로의 선정 여부를 결정할 수 있다.According to an exemplary embodiment, the garbage collection control unit 196 may determine whether to designate the block as the target block of the garbage collection based on a ratio of the total map data of a plurality of unit blocks in a specific block divided by the number of pages of the corresponding block. The number of pages of the block is a fixed value determined during the design and manufacture of the memory device 150 and may represent the maximum amount of valid data that can be stored in one block. When a particular block is divided into a plurality of unit blocks and map data is generated for each unit block, the sum of the map data of the plurality of unit blocks in the block may indicate an amount of data currently valid for the block. Accordingly, the garbage collection control unit 196 may recognize the amount of valid data in each block based on the ratio of the total map data of the plurality of unit blocks in one block divided by the number of pages of the block. As the above ratio is lower, the garbage collection control unit 196 may first designate the block as a target block of garbage collection. In addition, the garbage collection control unit 196 may determine whether the garbage collection is selected as a target block through whether the aforementioned ratio is within a preset range.

전술한 실시예는 가비지 컬렉션을 위해서, 컨트롤러(130)는 복수의 데이터 블록(40_1)에서 유효한 데이터를 탐색해야 한다. 이때, 컨트롤러(30)는 메모리 장치(150) 내 모든 데이터 블록(40_1)에 대해 유효 데이터를 탐색하는 것이 아니라, 데이터 블록(40_1)의 기 설정된 범위에 한정하여 유효 데이터를 탐색할 수 있다. 이 경우, 가비지 컬렉션을 위해 프리 블록(40_2)에 저장할 데이터를 탐색하는 데 소요되는 자원(예, 시간, 전력)을 줄일 수 있다.In the above-described embodiment, for garbage collection, the controller 130 must search for valid data in the plurality of data blocks 40_1. In this case, the controller 30 may search for valid data in a limited range of the data block 40_1 instead of searching valid data for all data blocks 40_1 in the memory device 150. In this case, resources (eg, time and power) required to search for data to be stored in the free block 40_2 for garbage collection can be reduced.

유효 페이지의 탐색은 가비지 컬렉션(GC: Garbage Collection) 동작에 관한 것으로, 가비지 컬렉션을 수행할 블록을 탐색하는 장치와 방법을 통하여 가비지 컬렉션의 시간을 관리하기 위한 것이다. 가비지 컬렉션은 동적 할당된 메모리 영역 가운데 더 이상 사용할 수 없게 되거나 사용할 필요가 없어진 영역을 탐색하여 해당 영역 내 데이터를 삭제하여 새로운 데이터를 프로그램 할 수 있도록 준비하는 동작을 포함한다. 비휘발성 메모리 장치 내 특정 영역에 포함된 데이터를 삭제하는 데 소요되는 시간은 비휘발성 메모리 장치의 셀 구조 혹은 셀 특성 등에 따라 달라질 수 있다. 반면, 비휘발성 메모리 장치 내 삭제(erase)할 영역을 탐색하는데 소요되는 시간은 다양한 실시예에 따른 비휘발성 메모리 장치를 제어하는 방법과 장치에 따라 달라질 수 있다.The navigation of a valid page relates to garbage collection (GC) operation, and is for managing time of garbage collection through an apparatus and a method for searching for a block to perform garbage collection. Garbage collection involves searching for areas that are no longer available or needing to be used in a dynamically allocated memory area and preparing to program new data by deleting data in that area. The time taken to delete data included in a specific area of the nonvolatile memory device may vary depending on the cell structure or cell characteristics of the nonvolatile memory device. On the other hand, the time required to search for an area to erase in the nonvolatile memory device may vary according to a method and a device for controlling the nonvolatile memory device according to various embodiments.

도 4는 본 발명의 실시예에 따른 메모리 시스템에서 사용되는 슈퍼 메모리 블록의 개념을 설명하기 위해 도시한 도면이다.4 is a diagram illustrating a concept of a super memory block used in a memory system according to an exemplary embodiment of the present invention.

도 4를 참조하면, 도 1을 참조하여 본 발명의 실시예에 따른 메모리 시스템(110)의 구성요소 중 메모리 장치(150)에 포함된 구성요소가 구체적으로 도시된 것을 알 수 있다.Referring to FIG. 4, it can be seen that the components included in the memory device 150 among the components of the memory system 110 according to the exemplary embodiment of the present invention are specifically illustrated.

메모리 장치(150)는, 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 포함한다.The memory device 150 may include a plurality of memory blocks BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110 , BLOCK111, BLOCK112, ..., BLCOK11N).

또한, 메모리 장치(150)는, 제0 채널(CH0)을 통해 데이터를 입/출력할 수 있는 첫 번째 메모리 다이(DIE0)과 제1 채널(CH1)을 통해 데이터를 입/출력할 수 있는 두 번째 메모리 다이(DIE1)을 포함한다. 이때, 제0 채널(CH0)과 제1 채널(CH1)은, 인터리빙(interleaving) 방식으로 데이터를 입/출력할 수 있다.In addition, the memory device 150 may input / output data through the first memory die DIE0 capable of inputting / outputting data through the zeroth channel CH0 and the first channel CH1. Second memory die DIE1. In this case, the 0th channel CH0 and the first channel CH1 may input / output data in an interleaving manner.

또한, 첫 번째 메모리 다이(DIE0)는, 제0 채널(CH0)을 공유하여 인터리빙 방식으로 데이터를 입/출력할 수 있는 다수의 경로(WAY0, WAY1)들에 각각 대응하는 다수의 플래인(PLANE00, PLANE01)들을 포함한다.In addition, the first memory die DIE0 may include a plurality of planes PLAE00 respectively corresponding to a plurality of paths WAY0 and WAY1 that may share the 0th channel CH0 and input / output data in an interleaving manner. , PLANE01).

또한, 두 번째 메모리 다이(DIE1)는, 제1 채널(CH1)을 공유하여 인터리빙 방식으로 데이터를 입/출력할 수 있는 다수의 경로(WAY2, WAY3)들에 각각 대응하는 다수의 플래인(PLANE10, PLANE11)들을 포함한다.In addition, the second memory die DIE1 may share a plurality of planes PLAN10 respectively corresponding to a plurality of paths WAY2 and WAY3 that may share the first channel CH1 and input / output data in an interleaving manner. , PLANE11).

또한, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)은, 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N) 중 예정된 개수의 메모리 블록(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N)을 포함한다.In addition, the first plane (PLANE00) of the first memory die (DIE0), a plurality of memory blocks (BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100 , BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N, including a predetermined number of memory blocks (BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N).

또한, 첫 번째 메모리 다이(DIE0)의 두 번째 플래인(PLANE01)은, 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N) 중 예정된 개수의 메모리 블록(BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N)을 포함한다.In addition, the second plane PLANE01 of the first memory die DIE0 includes a plurality of memory blocks BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100. , BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N include a predetermined number of memory blocks BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N.

또한, 두 번째 메모리 다이(DIE1)의 첫 번째 플래인(PLANE10)은, 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)중 예정된 개수의 메모리 블록(BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N)을 포함한다.In addition, the first plane PLANE10 of the second memory die DIE1 may include a plurality of memory blocks BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100. , BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N include a predetermined number of memory blocks (BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N).

또한, 두 번째 메모리 다이(DIE1)의 두 번째 플래인(PLANE11)은, 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N) 중 예정된 개수의 메모리 블록(BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 포함한다.In addition, the second plane PLANE11 of the second memory die DIE1 may include a plurality of memory blocks BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100. , BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N, including a predetermined number of memory blocks BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N.

이와 같이. 메모리 장치(150)에 포함된 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)은, 같은 경로 또는 같은 채널을 사용하는 것과 같은 '물리적인 위치'에 따라 구분될 수 있다.like this. A plurality of memory blocks BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N) may be distinguished according to 'physical locations' such as using the same path or the same channel.

참고로, 도 4에서는 메모리 장치(150)에 2개의 메모리 다이(DIE0, DIE1)가 포함되고, 각각의 메모리 다이(DIE0, DIE1)마다 2개의 플래인(PLANE00, PLANE01 / PLANE10, PLANE11)이 포함되며, 각각의 플래인(PLANE00, PLANE01 / PLANE10, PLANE11)마다 예정된 개수의 메모리 블록(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N / BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N / BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N / BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)이 포함되는 것으로 예시되어 있는데, 이는 어디까지나 하나의 실시예일 뿐이다. 실제로는, 설계자의 선택에 따라 메모리 장치(150)에 2개보다 더 많거나 더 적은 개수의 메모리 다이가 포함될 수 있고, 각각의 메모리 다이에도 2개보다 더 많거나 더 적은 개수의 플래인이 포함될 수 있다. 물론, 각각의 플래인에 포함되는 메모리 블록의 개수인 '예정된 개수'도 설계자의 선택에 따라 얼마든지 조정가능하다.For reference, in FIG. 4, two memory dies DIE0 and DIE1 are included in the memory device 150, and two planes PLAN00, PLANE01, PLANE10, and PLANE11 are included in each of the memory dies DIE0 and DIE1. Each plane (PLANE00, PLANE01 / PLANE10, PLANE11) has a predetermined number of memory blocks (BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N / BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N / BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N / BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N) is illustrated, which is only one embodiment to the last. In practice, depending on the designer's choice, memory device 150 may include more or less than two memory dies, and each memory die may include more or less than two planes. Can be. Of course, the 'scheduled number', which is the number of memory blocks included in each plane, can be adjusted as much as the designer chooses.

한편, 메모리 장치(150)에 포함된 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 다수의 메모리 다이(DIE0, DIE1) 또는 다수의 플래인(PLANE00, PLANE01 / PLANE10, PLANE11)과 같은 '물리적인 위치'로 구분하는 방식과는 별개로 컨트롤러(130)는, 다수의 메모리 블록들 중 동시에 선택되어 동작하는 것을 기준으로 구분하는 방식을 사용할 수 있다. 즉, 컨트롤러(130)는, '물리적인 위치'의 구분방식을 통해 서로 다른 다이 또는 서로 다른 플래인으로 구분되었던 다수의 메모리 블록들을 동시에 선택 가능한 블록들끼리 그룹화하여 슈퍼 메모리 블록(super memory block)들로 구분하여 관리할 수 있다. 이때, '동시에 선택'이라는 것은 '병렬적인 선택'을 의미할 수 있다.Meanwhile, a plurality of memory blocks included in the memory device 150 (BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., The BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N are divided into 'physical locations' such as multiple memory dies (DIE0, DIE1) or multiple planes (PLANE00, PLANE01 / PLANE10, PLANE11). In addition, the controller 130 may use a method of dividing the controller 130 based on the simultaneous selection and operation of a plurality of memory blocks. That is, the controller 130 may group a plurality of memory blocks that have been divided into different dies or different planes at the same time by grouping blocks that can be selected at the same time through a 'physical location' classification method. It can be managed separately. In this case, 'simultaneous selection' may mean 'parallel selection'.

이렇게, 컨트롤러(130)에서 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 슈퍼 메모리 블록들로 구분하여 관리하는 방식은, 설계자의 선택에 따라 여러 가지 방식이 존재할 수 있는데, 여기에서는 세 가지 방식을 예시하도록 하겠다.Thus, in the controller 130, a plurality of memory blocks BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110 , BLOCK111, BLOCK112, ..., BLCOK11N) can be divided into super memory blocks and managed according to the designer's choice. Here, three methods will be illustrated.

첫 번째 방식은, 컨트롤러(130)에서 메모리 장치(150)에 포함된 다수의 메모리 다이들(DIE0, DIE1) 중 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)에서 임의의 하나의 메모리 블록(BLOCK000)과, 두 번째 플래인(PLANE01)에서 임의의 하나의 메모리 블록(BLOCK010)을 그룹화하여 하나의 슈퍼 메모리 블록(A1)으로 관리하는 방식이다. 첫 번째 방식을 메모리 장치(150)에 포함된 다수의 메모리 다이들(DIE0, DIE1) 중 두 번째 메모리 다이(DIE1)에 적용하면, 컨트롤러(130)는, 두 번째 메모리 다이(DIE1)의 첫 번째 플래인(PLANE10)에서 임의의 하나의 메모리 블록(BLOCK100)과, 두 번째 플래인(PLANE11)에서 임의의 하나의 메모리 블록(BLOCK110)을 그룹화하여 하나의 슈퍼 메모리 블록(A2)으로 관리할 수 있다.The first scheme is any one memory in the first plane (PLANE00) of the first memory die (DIE0) of the plurality of memory dies (DIE0, DIE1) included in the memory device 150 in the controller 130 In the block BLOCK000 and the second plane PLAE01, any one memory block BLOCK010 is grouped and managed as one super memory block A1. When the first scheme is applied to the second memory die DIE1 of the plurality of memory dies DIE0 and DIE1 included in the memory device 150, the controller 130 may determine the first of the second memory die DIE1. Any one memory block BLOCK100 in the plane PLAE10 and one memory block BLOCK110 in the second plane PLAE11 may be grouped and managed as one super memory block A2. .

두 번째 방식은, 컨트롤러(130)에서 메모리 장치(150)에 포함된 다수의 메모리 다이들(DIE0, DIE1) 중 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)에 포함된 임의의 하나의 메모리 블록(BLOCK002)과, 두 번째 메모리 다이(DIE1)의 첫 번째 플래인(PLANE10)에 포함된 임의의 하나의 메모리 블록(BLOCK102)를 그룹화하여 하나의 슈퍼 메모리 블록(B1)으로 관리하는 방식이다. 두 번째 방식을 다시 적용하면, 컨트롤러(130)는, 메모리 장치(150)에 포함된 다수의 메모리 다이들(DIE0, DIE1) 중 첫 번째 메모리 다이(DIE0)의 두 번째 플래인(PLANE01)에 포함된 임의의 하나의 메모리 블록(BLOCK012)과, 두 번째 메모리 다이(DIE1)의 두 번째 플래인(PLANE11)에 포함된 임의의 하나의 메모리 블록(BLOCK112)를 그룹화하여 하나의 슈퍼 메모리 블록(B2)으로 관리할 수 있다.The second scheme is any one included in the first plane PLAE00 of the first memory die DIE0 of the plurality of memory dies DIE0 and DIE1 included in the memory device 150 in the controller 130. A memory block BLOCK002 and an arbitrary memory block BLOCK102 included in the first plane PLANE10 of the second memory die DIE1 are grouped and managed as one super memory block B1. to be. Reapplying the second scheme, the controller 130 is included in the second plane PLANE01 of the first memory die DIE0 of the plurality of memory dies DIE0 and DIE1 included in the memory device 150. One memory block BLOCK012 and one memory block BLOCK112 included in the second plane PLANE11 of the second memory die DIE1 to group one super memory block B2. Can be managed by

세 번째 방식은, 컨트롤러(130)에서 메모리 장치(150)에 포함된 다수의 메모리 다이들(DIE0, DIE1) 중 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)에 포함된 임의의 하나의 메모리 블록(BLOCK001)과, 첫 번째 메모리 다이(DIE0)의 두 번째 플래인(PLANE01)에 포함된 임의의 하나의 메모리 블록(BLOCK011)과, 두 번째 메모리 다이(DIE1)의 첫 번째 플래인(PLANE10)에 포함된 임의의 하나의 메모리 블록(BLOCK101), 및 두 번째 메모리 다이(DIE1)의 두 번째 플래인(PLANE11)에 포함된 임의의 하나의 메모리 블록(BLOCK111)을 그룹화하여 하나의 슈퍼 메모리 블록(C)으로 관리하는 방식이다.The third scheme is any one included in the first plane PLAN00 of the first memory die DIE0 of the plurality of memory dies DIE0 and DIE1 included in the memory device 150 in the controller 130. Memory block (BLOCK001), any one memory block (BLOCK011) included in the second plane (PLANE01) of the first memory die (DIE0), and the first plane of the second memory die (DIE1) One super memory by grouping any one memory block BLOCK101 included in PLANE10 and any one memory block BLOCK111 included in the second plane PLANE11 of the second memory die DIE1. It is managed by block (C).

참고로, 슈퍼 메모리 블록에 포함되는 동시에 선택 가능한 메모리 블록들은, 인터리빙 방식, 예컨대, 채널 인터리빙(channel interleaving) 방식 또는 메모리 다이 인터리빙(memory die interleaving) 방식 또는 메모리 칩 인터리빙(memory chip interleaving) 방식 또는 경로 인터리빙(way interleaving) 방식 등을 통해 실질적으로 동시에 선택될 수 있다.For reference, simultaneously selectable memory blocks included in a super memory block may be interleaved, for example, channel interleaving, memory die interleaving, memory chip interleaving, or path. The interleaving may be selected substantially at the same time.

<제1 실시예><First Embodiment>

도 5a 및 도 5b는 본 발명의 제1 실시예에 따른 메모리 시스템에서 슈퍼 메모리 블록에 대한 가비지 컬렉션을 설명하는 도면이다.5A and 5B illustrate garbage collection for a super memory block in a memory system according to a first embodiment of the present invention.

먼저, 도 5a 및 도 5b에 도시된 본 발명의 제1 실시예에서는 앞선 도 4에서 설명한 컨트롤러(130)에서 슈퍼 메모리 블록들을 구분하는 방식 중 세 번째 방식을 사용하는 것을 알 수 있다.First, in the first embodiment of the present invention illustrated in FIGS. 5A and 5B, it can be seen that the controller 130 described above with reference to FIG. 4 uses a third method of dividing the super memory blocks.

즉, 도 5a 및 도 5b에서는 컨트롤러(130)가 메모리 장치(150)에 포함된 4개의 플래인들(PLANE<00, 01, 10, 11>) 각각에서 임의의 하나의 메모리 블록을 선택하여 하나의 슈퍼 메모리 블록(SUPER BLOCK<0> or SUPER BLOCK<1>)으로 관리한다. 따라서, 하나의 슈퍼 메모리 블록(SUPER BLOCK<0> or SUPER BLOCK<1>)에는 4개의 메모리 블록이 포함된다.That is, in FIGS. 5A and 5B, the controller 130 selects one random memory block from each of the four planes PLANE <00, 01, 10, and 11> included in the memory device 150. To a super memory block (SUPER BLOCK <0> or SUPER BLOCK <1>). Therefore, one super memory block SUPER BLOCK <0> or SUPER BLOCK <1> includes four memory blocks.

예컨대, 도 4 및 도 5a를 참조하면, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)과, 첫 번째 메모리 다이(DIE0)의 두 번째 플래인(PLANE01)의 첫 번째 메모리 블록(BLOCK010)과, 두 번째 메모리 다이(DIE1)의 첫 번째 플래인(PLANE10)의 첫 번째 메모리 블록(BLOCK100), 및 두 번째 메모리 다이(DIE1)의 두 번째 플래인(PLANE11)의 첫 번째 메모리 블록(BLOCK110)을 그룹화한 것이다.For example, referring to FIGS. 4 and 5A, the first super memory block SUPER BLOCK <0> may include the first memory block BLOCK000 of the first plane PLANE00 of the first memory die DIE0. The first memory block (BLOCK010) of the second plane (PLANE01) of the first memory die (DIE0), the first memory block (BLOCK100) of the first plane (PLANE10) of the second memory die (DIE1), and The first memory block BLOCK110 of the second plane PLANE11 of the second memory die DIE1 is grouped.

그리고, 도 4 및 도 5b를 참조하면, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 두 번째 메모리 블록(BLOCK001)과, 첫 번째 메모리 다이(DIE0)의 두 번째 플래인(PLANE01)의 두 번째 메모리 블록(BLOCK011)과, 두 번째 메모리 다이(DIE1)의 첫 번째 플래인(PLANE10)의 두 번째 메모리 블록(BLOCK101), 및 두 번째 메모리 다이(DIE1)의 두 번째 플래인(PLANE11)의 두 번째 메모리 블록(BLOCK111)을 그룹화한 것이다.4 and 5B, the second super memory block SUPER BLOCK <1> includes a second memory block BLOCK001 of the first plane PLANE00 of the first memory die DIE0; The second memory block (BLOCK011) of the second plane (PLANE01) of the first memory die (DIE0), the second memory block (BLOCK101) of the first plane (PLANE10) of the second memory die (DIE1), and The second memory block BLOCK111 of the second plane PLANE11 of the second memory die DIE1 is grouped.

그리고, 도 5a 및 도 5b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각은 내부에 포함된 4개씩의 메모리 블록들(BLOCK<000, 010, 100, 110>, BLOCK<001, 011, 101, 111>)을 병렬로 선택하여 각각 페이지 단위의 데이터를 입/출력할 수 있다.Each of the super memory blocks SUPER BLOCK <0, 1> illustrated in FIGS. 5A and 5B includes four memory blocks BLOCK <000, 010, 100, 110>, and BLOCK <included therein. 001, 011, 101, 111>) can be selected in parallel to input / output data in units of pages.

여기서, 도 5a 및 도 5b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각은 내부에 포함된 4개씩의 메모리 블록들(BLOCK<000, 010, 100, 110>, BLOCK<001, 011, 101, 111>)을 병렬로 선택할 때, 서로 동일한 위치의 페이지들에 대해서만 병렬리드가 가능하다고 가정할 수 있다.Here, each of the super memory blocks SUPER BLOCK <0, 1> illustrated in FIGS. 5A and 5B includes four memory blocks BLOCK <000, 010, 100, 110>, and BLOCK <included therein. 001, 011, 101, 111>) in parallel, it can be assumed that parallel reading is possible only for pages of the same position.

예컨대, 도 5a를 통해 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>)을 병렬로 선택한다는 것은, 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>) 각각에서 위치가 동일한 페이지를 선택하는 것을 의미한다. 즉, 도 5a를 통해 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>) 각각의 첫 번째 페이지(P<0>)를 동시에 선택하거나 또는 각각의 두 번째 페이지(P<1>)를 동시에 선택하는 것을 의미한다. 이는, 도 5a에서 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>) 중 첫 번째 및 두 번째 메모리 블록들(BLOCK<000, 010>)에서는 첫 번째 페이지(P<0>)를 선택하고 세 번째 및 네 번째 메모리 블록들(BLOCK<100, 110>)에서는 두 번째 페이지(P<1>)를 선택하는 것과 같이 서로 다른 위치의 페이지를 동시에 선택하는 것이 불가능하다는 것을 의미한다.For example, selecting four memory blocks BLOCK <000, 010, 100, 110> included therein in parallel in the first super memory block SUPER BLOCK <0> illustrated in FIG. This means selecting pages having the same location in each of the four memory blocks BLOCK <000, 010, 100, and 110>. That is, in the first super memory block SUPER BLOCK <0> illustrated in FIG. 5A, the first page P <of each of the four memory blocks BLOCK <000, 010, 100, 110> included therein. 0>) at the same time or to select each second page (P <1>) at the same time. This is because the first and second memory blocks among the four memory blocks BLOCK <000, 010, 100, and 110> included therein in the first super memory block SUPER BLOCK <0> illustrated in FIG. 5A. The first page (P <0>) is selected in (BLOCK <000, 010>) and the second page (P <1>) is selected in the third and fourth memory blocks (BLOCK <100, 110>). This means that it is not possible to select pages from different locations at the same time.

마찬가지로, 도 5b를 통해 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<001, 011, 101, 111>)을 병렬로 선택한다는 것은, 4개의 메모리 블록들(BLOCK<001, 011, 101, 111>) 각각에서 위치가 동일한 페이지를 동시에 선택하는 것을 의미한다. 즉, 도 5b를 통해 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<001, 011, 101, 111>) 각각의 세 번째 페이지(P<2>)를 동시에 선택하거나 또는 각각의 네 번째 페이지(P<3>)를 동시에 선택하는 것을 의미한다. 이는, 도 5b에서 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<001, 011, 101, 111>) 중 첫 번째 및 두 번째 메모리 블록들(BLOCK<001, 011>)에서는 세 번째 페이지(P<2>)를 선택하고 세 번째 및 네 번째 메모리 블록들(BLOCK<101, 111>)에서는 네 번째 페이지(P<3>)를 선택하는 것과 같이 서로 다른 위치의 페이지를 동시에 선택하는 것이 불가능하다는 것을 의미한다.Likewise, in the second super memory block SUPER BLOCK <1> illustrated in FIG. 5B, selecting four memory blocks BLOCK <001, 011, 101, and 111> included therein in parallel is 4 This means selecting the same page at the same time in each of the memory blocks BLOCK <001, 011, 101, and 111>. That is, in the second super memory block SUPER BLOCK <1> illustrated through FIG. 5B, the third page P <of each of the four memory blocks BLOCK <001, 011, 101, and 111> included therein. 2>) or simultaneously select each fourth page (P <3>). This is because the first and second memory blocks of the four memory blocks BLOCK <001, 011, 101, and 111> included therein in the second super memory block SUPER BLOCK <1> illustrated in FIG. 5B. The third page (P <2>) is selected at (BLOCK <001, 011>) and the fourth page (P <3>) is selected at the third and fourth memory blocks (BLOCK <101, 111>). This means that it is not possible to select pages from different locations at the same time.

한편, 도 5a 및 도 5b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각은 내부에 포함된 4개씩의 메모리 블록들(BLOCK<000, 010, 100, 110>, BLOCK<001, 011, 101, 111>) 각각에 포함된 다수의 페이지들(P<0, 1, 2,...>) 각각은, 독립적으로 유효 페이지(VAILD PAGE) 또는 무효 페이지(INVALID PAGE)가 될 수 있다.Meanwhile, each of the super memory blocks SUPER BLOCK <0, 1> illustrated in FIGS. 5A and 5B has four memory blocks BLOCK <000, 010, 100, 110>, and BLOCK <included therein. Each of the plurality of pages (P <0, 1, 2, ...>) included in each of 001, 011, 101, and 111> independently has a valid page (VAILD PAGE) or an invalid page (INVALID PAGE). Can be.

예컨대, 도 5a에 예시된 것과 같이 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은, 첫 번째 내지 세 번째 메모리 블록(BLOCK<000, 010, 100>) 각각의 첫 번째 페이지(P<0>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)일 수 있다.For example, as illustrated in FIG. 5A, the first super memory block SUPER BLOCK <0> may include the first page P <0> of each of the first to third memory blocks BLOCK <000, 010, 100>. ) May be a valid page (VAILD PAGE), all other pages may be an INVALID PAGE.

또한, 도 5b에 예시된 것과 같이 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 첫 번째 메모리 블록(BLOCK001)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK011)의 세 번째 페이지(P<2>), 및 네 번째 메모리 블록(BLOCK111)의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)일 수 있다.In addition, as illustrated in FIG. 5B, the second super memory block SUPER BLOCK <1> may include a first page P <0> of the first memory block BLOCK001 and a second memory block BLOCK011. Only the third page (P <2>) and the second page (P <1>) of the fourth memory block (BLOCK111) are valid pages (VAILD PAGE), and all remaining pages may be invalid pages (INVALID PAGE). .

이렇게, 도 5a에 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)과 도 5b에 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 각각 3개의 유효 페이지를 포함하는 상태라는 것을 알 수 있다.As such, the first super memory block SUPER BLOCK <0> illustrated in FIG. 5A and the second super memory block SUPER BLOCK <1> illustrated in FIG. 5B each include three valid pages. Able to know.

또한, 가비지 컬렉션을 위해 도 5a 및 도 5b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각에 포함된 4개씩의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>, MEMORY BLOCK<001, 011, 101, 111>)을 각각 희생블록(victim block)으로 선택할 수 있다.In addition, four memory blocks (MEMORY BLOCK <000, 010, 100, 110>) included in each of the super memory blocks SUPER BLOCK <0,1> illustrated through FIGS. 5A and 5B for garbage collection. , MEMORY BLOCK <001, 011, 101, and 111> may be selected as victim blocks.

이렇게, 가비지 컬렉션을 위해 도 5a에 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하였을 때, 내부에 포함된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>)에 포함된 3개의 유효 페이지로부터 데이터를 추출하는데 필요한 시간을 첫 번째 소요시간(TOTAL<0>)이라고 할 수 있다. 또한, 가비지 컬렉션을 위해 도 5b에 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)을 희생블록으로 선택하였을 때, 내부에 포함된 4개의 메모리 블록들(MEMORY BLOCK<001, 011, 101, 111>)에 포함된 3개의 유효 페이지로부터 데이터를 추출하는데 필요한 시간을 두 번째 소요시간(TOTAL<1>)이라고 할 수 있다.As such, when the first super memory block SUPER BLOCK <0> illustrated in FIG. 5A is selected as a victim block for garbage collection, four memory blocks included in the memory block (MEMORY BLOCK <000, 010, 100, The time required to extract data from the three valid pages included in 110>) may be referred to as the first time required TOTAL <0>. In addition, when the second super memory block (SUPER BLOCK <1>) illustrated in FIG. 5B is selected as a victim block for garbage collection, four memory blocks (MEMORY BLOCK <001, 011, 101, The time required to extract data from the three valid pages included in 111>) may be referred to as a second time duration TOTAL <1>.

이때, 첫 번재 소요시간(TOTAL<0>)과 두 번째 소요시간(TOTAL<1>)은 다음과 같은 이유로 인해 크게 차이날 수 있다.At this time, the first time required TOTAL <0> and the second time required TOTAL <1> may be significantly different due to the following reasons.

구체적으로, 가비지 컬렉션에서 도 5a에 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하여 내부에 포함된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>)에 포함된 3개의 유효 페이지로부터 데이터를 추출하기 위해 3개의 유효 페이지의 위치를 확인할 수 있다.Specifically, four garbage blocks (MEMORY BLOCK <000, 010, 100, 110>) included therein are selected by selecting the first super memory block (SUPER BLOCK <0>) illustrated in FIG. 5A as a victim block in the garbage collection. In order to extract data from the three valid pages included in), the positions of the three valid pages can be checked.

확인결과, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은, 첫 번째 내지 세 번째 메모리 블록(BLOCK<000, 010, 100>) 각각의 첫 번째 페이지(P<0>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)인 것을 알 수 있다.As a result, the first super memory block (SUPER BLOCK <0>), only the first page (P <0>) of each of the first to third memory blocks (BLOCK <000, 010, 100>) are valid pages (VAILD). PAGE), and all remaining pages are invalid pages (INVALID PAGE).

확인결과에 따라, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 3개의 유효 페이지(VAILD PAGE)는 그 위치가 서로 동일한 것을 알 수 있다. 즉, 3개의 유효 페이지(VAILD PAGE)로부터 3개의 유효 데이터를 추출하기 위해서 한 번의 리드(P<0>_READ)를 수행해야 한다는 것을 알 수 있다.According to the result of the check, it can be seen that the three valid pages VAILD PAGE included in the first super memory block SUPER BLOCK <0> are identical to each other. That is, it can be seen that one read P <0> _READ should be performed to extract three valid data from three valid pages.

따라서, 컨트롤러(130)는, 제0 시점(t0)에서 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 메모리 블록(BLOCK<000, 010, 100, 110>) 각각의 첫 번째 페이지(P<0>)에 대한 한 번의 리드(P<0>_READ)를 수행한다. 한 번의 리드(P<0>_READ)를 통해 4개의 페이지 데이터(B000P0_VD, B010P0_VD, B100P0_VD, B110P0_IVD)를 4개의 페이지 버퍼들(PB<000, 010, 100, 110>)에 캐싱한다. 이어서, 컨트롤러(130)는, 제1 시점(t1)에서 페이지 버퍼들(PB<000, 010, 100, 110>)에 캐싱된 4개의 페이지 데이터들(B000P0_VD, B010P0_VD, B100P0_VD, B110P0_IVD) 중 세 개의 유효 데이터(VALID DATA : B000P0_VD, B010P0_VD, B100P0_VD)만 선택하여 내부의 메모리(144)로 전송(DATA TRANSFER)한다. 물론, 컨트롤러(130)는, 제0 시점(t0)에서 페이지 버퍼들(PB<000, 010, 100, 110>)에 캐싱된 4개의 페이지 데이터들(B000P0_VD, B010P0_VD, B100P0_VD, B110P0_IVD) 중 1개의 무효 데이터(INVALID DATA : B110P0_IVD)는, 제1 시점(t1)에서 내부의 메모리(144)로 전송하지 않고 폐기(discard)한다.Accordingly, the controller 130 may include the first of each of the four memory blocks BLOCK <000, 010, 100, and 110> included in the first super memory block SUPER BLOCK <0> at the zeroth time point t0. Perform one read (P <0> _READ) for page P <0>. Four page data B000P0_VD, B010P0_VD, B100P0_VD, and B110P0_IVD are cached in four page buffers PB <000, 010, 100, and 110 through one read P <0> _READ. Subsequently, the controller 130 may include three of the four page data B000P0_VD, B010P0_VD, B100P0_VD, and B110P0_IVD that are cached in the page buffers PB <000, 010, 100, and 110> at the first time point t1. Only valid data (VALID DATA: B000P0_VD, B010P0_VD, B100P0_VD) is selected and transferred to the internal memory 144 (DATA TRANSFER). Of course, the controller 130 may include one of four page data B000P0_VD, B010P0_VD, B100P0_VD, and B110P0_IVD that are cached in the page buffers PB <000, 010, 100, and 110> at the zeroth time point t0. The invalid data INVALID DATA B110P0_IVD is discarded without being transferred to the internal memory 144 at the first time point t1.

이렇게, 컨트롤러(130)는, 한 번의 리드(P<0>_READ)를 통해, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 3개의 유효 페이지(VAILD PAGE : BLOCK000_P<0>, BLOCK010_P<0>, BLOCK110_P<0>)에 저장된 3개의 유효 데이터(VALID DATA : B000P0_VD, B010P0_VD, B100P0_VD)를 모두 추출할 수 있다.Thus, the controller 130, through one read (P <0> _READ), three valid pages (VAILD PAGE: BLOCK000_P <0>, BLOCK010_P included in the first super memory block SUPER BLOCK <0>). All three valid data (VALID DATA: B000P0_VD, B010P0_VD, and B100P0_VD) stored in <0>, BLOCK110_P <0>) can be extracted.

여기서, 한 번의 리드(P<0>_READ)를 수행하는데 필요한 시간을 리드시간(tREAD)이라고 가정할 수 있다. 또한, 1개의 페이지 버퍼(PB<000> or PB<010> or PB<100>)에 저장된 1개의 페이지 데이터(B000P0_VD or B010P0_VD or B100P0_VD)를 내부의 메모리(144)로 전송하는데 필요한 시간을 전송시간(tTX)라고 가정할 수 있다. 이렇게 가정할 경우, 가비지 컬렉션에서 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하여 데이터를 추출하는데 필요한 첫 번째 소요시간(TOTAL<0>)은, '{리드시간(tREAD) * 1} + {전송시간(tTX) * 3}'이 될 것이다. 예를 들어, 리드시간(tREAD)이 50us이고, 전송시간(tTX)이 10us라고 가정하면, 가비지 컬렉션에서 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하여 데이터를 추출하는데 필요한 첫 번째 소요시간(TOTAL<0>)은, 80us가 될 것이다.Here, the time required to perform one read P <0> _READ may be assumed to be a read time tREAD. Also, the time required to transfer one page data (B000P0_VD or B010P0_VD or B100P0_VD) stored in one page buffer (PB <000> or PB <010> or PB <100>) to the internal memory 144 is transmitted. (tTX) can be assumed. Assuming this, the first time required for extracting data by selecting the first super memory block (SUPER BLOCK <0>) as the victim block in garbage collection is '{read time (tREAD)'. * 1} + {transmission time (tTX) * 3} '. For example, assuming that the read time tREAD is 50us and the transfer time tTX is 10us, it is necessary to select the first super memory block SUPER BLOCK <0> as the victim block in the garbage collection and extract the data. The first time duration (TOTAL <0>) will be 80us.

그리고, 가비지 컬렉션에서 도 5b에 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)을 희생블록으로 선택하여 내부에 포함된 4개의 메모리 블록들(MEMORY BLOCK<001, 011, 101, 111>)에 포함된 3개의 유효 페이지로부터 데이터를 추출하기 위해 3개의 유효 페이지의 위치를 확인할 수 있다.In the garbage collection, the second super memory block SUPER BLOCK <1> illustrated in FIG. 5B is selected as a victim block and four memory blocks included therein (MEMORY BLOCK <001, 011, 101, 111>). In order to extract the data from the three valid pages included in the location of the three valid pages can be identified.

확인결과, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 첫 번째 메모리 블록(BLOCK001)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK011)의 세 번째 페이지(P<2>), 및 네 번째 메모리 블록(BLOCK111)의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)인 것을 알 수 있다.As a result, the second super memory block (SUPER BLOCK <1>) includes the first page (P <0>) of the first memory block (BLOCK001) and the third page (P <) of the second memory block (BLOCK011). 2>), and only the second page P <1> of the fourth memory block BLOCK111 is a valid page (VAILD PAGE), and all remaining pages are invalid pages (INVALID PAGE).

확인결과에 따라, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 3개의 유효 페이지(VAILD PAGE)는 서로간에 그 위치가 동일하지 않은 것을 알 수 있다. 즉, 3개의 유효 페이지(VAILD PAGE)로부터 3개의 유효 데이터를 추출하기 위해서 세 번의 리드(P<0>_READ, P<1>_READ, P<2>_READ)를 수행해야 한다는 것을 알 수 있다. According to the check result, it can be seen that the three valid pages VAILD PAGE included in the second super memory block SUPER BLOCK <1> are not identical to each other. That is, it can be seen that three reads P <0> _READ, P <1> _READ, and P <2> _READ should be performed to extract three valid data from three valid pages.

따라서, 컨트롤러(130)는, 제0 시점(t0)에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 메모리 블록(BLOCK<001, 011, 101, 111>) 각각의 첫 번째 페이지(P<0>)에 대한 첫 번째 리드(P<0>_READ)를 수행한다. 첫 번째 리드(P<0>_READ)를 통해 4개의 페이지 데이터(B001P0_VD, B011P0_IVD, B101P0_IVD, B111P0_IVD)를 4개의 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱한다. 이어서, 컨트롤러(130)는, 제1 시점(t1)에서 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P0_VD, B011P0_IVD, B101P0_IVD, B111P0_IVD) 중 1개의 유효 데이터(VALID DATA : B001P0_VD)만 선택하여 내부의 메모리(144)로 전송(DATA TRANSFER)한다. 물론, 컨트롤러(130)는, 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P0_VD, B011P0_IVD, B101P0_IVD, B111P0_IVD) 중 3개의 무효 데이터(INVALID DATA : B011P0_IVD, B101P0_IVD, B111P0_IVD)는, 내부의 메모리(144)로 전송하지 않고 폐기(discard)한다.Accordingly, the controller 130 may include the first of each of the four memory blocks BLOCK <001, 011, 101, and 111> included in the second super memory block SUPER BLOCK <1> at the zeroth time point t0. Perform the first read (P <0> _READ) for page P <0>. Four page data B001P0_VD, B011P0_IVD, B101P0_IVD, and B111P0_IVD are cached in four page buffers PB <001, 011, 101, and 111 through the first read P <0> _READ. Subsequently, the controller 130 includes one of four page data B001P0_VD, B011P0_IVD, B101P0_IVD, and B111P0_IVD cached in the page buffers PB <001, 011, 101, and 111> at the first time point t1. Only valid data (VALID DATA: B001P0_VD) is selected and transferred to the internal memory 144 (DATA TRANSFER). Of course, the controller 130 may include three invalid data INVALID DATA: B011P0_IVD among the four page data B001P0_VD, B011P0_IVD, B101P0_IVD, and B111P0_IVD cached in the page buffers PB <001, 011, 101, and 111>. , B101P0_IVD and B111P0_IVD are discarded without being transferred to the internal memory 144.

이렇게, 컨트롤러(130)는, 첫 번째 리드(P<0>_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 1개의 유효 페이지(VAILD PAGE : BLOCK001_P<0>)에 저장된 1개의 유효 데이터(VALID DATA : B001P0_VD)를 추출할 수 있다.Thus, the controller 130, through the first read (P <0> _READ), to one valid page (VAILD PAGE: BLOCK001_P <0>) included in the second super memory block (SUPER BLOCK <1>). One stored valid data (VALID DATA: B001P0_VD) can be extracted.

이어서, 컨트롤러(130)는, 제2 시점(t2)에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 메모리 블록(BLOCK<001, 011, 101, 111>) 각각의 두 번째 페이지(P<1>)에 대한 두 번째 리드(P<1>_READ)를 수행한다. 두 번째 리드(P<1>_READ)를 통해 4개의 페이지 데이터(B001P1_IVD, B011P1_IVD, B101P1_IVD, B111P1_VD)를 4개의 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱한다. 이어서, 컨트롤러(130)는, 제3 시점(t3)에서 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P1_IVD, B011P1_IVD, B101P1_IVD, B111P1_VD) 중 1개의 유효 데이터(VALID DATA : B111P1_VD)만 선택하여 내부의 메모리(144)로 전송(DATA TRANSFER)한다. 물론, 컨트롤러(130)는, 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P1_IVD, B011P1_IVD, B101P1_IVD, B111P1_VD) 중 3개의 무효 데이터(INVALID DATA : B001P1_IVD, B011P1_IVD, B101P1_IVD)는, 내부의 메모리(144)로 전송하지 않고 폐기(discard)한다.Subsequently, the controller 130 performs a second operation on each of the four memory blocks BLOCK <001, 011, 101, and 111> included in the second super memory block SUPER BLOCK <1> at the second time point t2. Perform a second read (P <1> _READ) for page P <1>. Four page data B001P1_IVD, B011P1_IVD, B101P1_IVD, and B111P1_VD are cached in four page buffers PB <001, 011, 101, and 111 through the second read P <1> _READ. Subsequently, the controller 130 includes one of four page data B001P1_IVD, B011P1_IVD, B101P1_IVD, and B111P1_VD cached in the page buffers PB <001, 011, 101, and 111> at the third time point t3. Only valid data (VALID DATA: B111P1_VD) is selected and transferred to the internal memory 144 (DATA TRANSFER). Of course, the controller 130 may include three invalid data INVALID DATA: B001P1_IVD among the four page data B001P1_IVD, B011P1_IVD, B101P1_IVD, and B111P1_VD cached in the page buffers PB <001, 011, 101, and 111>. , B011P1_IVD and B101P1_IVD are discarded without being transferred to the internal memory 144.

이렇게, 컨트롤러(130)는, 두 번째 리드(P<1>_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 1개의 유효 페이지(VAILD PAGE : BLOCK111_P<1>)에 저장된 1개의 유효 데이터(VALID DATA : B111P1_VD)를 추출할 수 있다.Thus, the controller 130, through the second read (P <1> _READ), to one valid page (VAILD PAGE: BLOCK111_P <1>) included in the second super memory block (SUPER BLOCK <1>). One stored valid data (VALID DATA: B111P1_VD) can be extracted.

이어서, 컨트롤러(130)는, 제4 시점(t4)에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 메모리 블록(BLOCK<001, 011, 101, 111>) 각각의 세 번째 페이지(P<2>)에 대한 세 번째 리드(P<2>_READ)를 수행한다. 세 번째 리드(P<2>_READ)를 통해 4개의 페이지 데이터(B001P2_IVD, B011P2_VD, B101P2_IVD, B111P2_IVD)를 4개의 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱한다. 이어서, 컨트롤러(130)는, 제5 시점(t5)에서 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P2_IVD, B011P2_VD, B101P2_IVD, B111P2_IVD) 중 1개의 유효 데이터(VALID DATA : B011P2_VD)만 선택하여 내부의 메모리(144)로 전송(DATA TRANSFER)한다. 물론, 컨트롤러(130)는, 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P2_IVD, B011P2_VD, B101P2_IVD, B111P2_IVD) 중 3개의 무효 데이터(INVALID DATA : B001P2_IVD, B101P2_IVD, B111P2_IVD)는, 내부의 메모리(144)로 전송하지 않고 폐기(discard)한다.Subsequently, the controller 130 performs a third operation on each of the four memory blocks BLOCK <001, 011, 101, and 111> included in the second super memory block SUPER BLOCK <1> at the fourth time point t4. Perform a third read (P <2> _READ) for page P <2>. Four page data B001P2_IVD, B011P2_VD, B101P2_IVD, and B111P2_IVD are cached in four page buffers PB <001, 011, 101, and 111 through the third read P <2> _READ. Subsequently, the controller 130 includes one of four page data B001P2_IVD, B011P2_VD, B101P2_IVD, and B111P2_IVD cached in the page buffers PB <001, 011, 101, and 111> at the fifth time point t5. Only valid data (VALID DATA: B011P2_VD) is selected and transferred to the internal memory 144 (DATA TRANSFER). Of course, the controller 130 may include three invalid data INVALID DATA: B001P2_IVD among the four page data B001P2_IVD, B011P2_VD, B101P2_IVD, and B111P2_IVD cached in the page buffers PB <001, 011, 101, and 111>. , B101P2_IVD and B111P2_IVD are discarded without being transferred to the internal memory 144.

이렇게, 컨트롤러(130)는, 세 번째 리드(P<2>_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 1개의 유효 페이지(VAILD PAGE : BLOCK011_P<2>)에 저장된 1개의 유효 데이터(VALID DATA : B011P2_VD)를 추출할 수 있다.In this way, the controller 130, through the third read P <2> _READ, writes to one valid page VAILD PAGE: BLOCK011_P <2> included in the second super memory block SUPER BLOCK <1>. One stored valid data (VALID DATA: B011P2_VD) can be extracted.

정리하면, 컨트롤러(130)는, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 3개의 유효 페이지(VAILD PAGE : BLOCK001_P<0>, BLOCK011_P<2>, BLOCK111_P<1>)에 저장된 3개의 유효 데이터(VALID DATA : B001P0_VD, B011P2_VD, B111P1_VD)를 모두 추출하기 위해 세 번의 리드(P<0>_READ, P<1>_READ, P<2>_READ)가 필요한 것을 알 수 있다.In summary, the controller 130 stores 3 valid pages (VAILD PAGE: BLOCK001_P <0>, BLOCK011_P <2>, and BLOCK111_P <1>) included in the second super memory block (SUPER BLOCK <1>). It can be seen that three reads P <0> _READ, P <1> _READ, and P <2> _READ are required to extract all valid data (VALID DATA: B001P0_VD, B011P2_VD, and B111P1_VD).

여기서, 한 번의 리드(P<0>_READ or P<1>_READ or P<2>_READ)를 수행하는데 필요한 시간을 리드시간(tREAD)이라고 가정할 수 있다. 또한, 1개의 페이지 버퍼(PB<001> or PB<011> or PB<111>)에 저장된 1개의 페이지 데이터(B001P0_VD or B011P2_VD or B111P1_VD)를 내부의 메모리(144)로 전송하는데 필요한 시간을 전송시간(tTX)라고 가정할 수 있다. 이렇게 가정할 경우, 가비지 컬렉션에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)을 희생블록으로 선택하여 데이터를 추출하는데 필요한 소요시간(TOTAL<1>)은, '{리드시간(tREAD) * 3} + {전송시간(tTX) * 3}'이 될 것이다. 예를 들어, 리드시간(tREAD)이 50us이고, 전송시간(tTX)이 10us라고 가정하면, 가비지 컬렉션에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)을 희생블록으로 선택하여 데이터를 추출하는데 필요한 두 번째 소요시간(TOTAL<1>)은, 180us가 될 것이다.Here, the time required to perform one read P <0> _READ or P <1> _READ or P <2> _READ may be assumed to be a read time tREAD. In addition, a time required for transferring one page data (B001P0_VD or B011P2_VD or B111P1_VD) stored in one page buffer (PB <001> or PB <011> or PB <111>) to the internal memory 144 is transmitted. (tTX) can be assumed. In this case, the time required for extracting data by selecting the second super memory block (SUPER BLOCK <1>) as the victim block in the garbage collection is '{lead time (tREAD) * 3'. } + {Transmission time (tTX) * 3} '. For example, assuming that the read time tREAD is 50us and the transfer time tTX is 10us, the second super memory block SUPER BLOCK <1> is selected as a victim block in the garbage collection to extract data. The second time duration (TOTAL <1>) will be 180us.

정리하면, 도 5a에 예시된 것과 같이 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)과 도 5b에 예시된 것과 같이 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 각각 3개의 유효 페이지를 포함하므로, 유효 페이지의 개수를 기준으로 가비지 컬렉션을 위한 희생블록을 선택하는 방식하는 경우에는 동일한 조건인 것을 알 수 있다.In summary, the first super memory block SUPER BLOCK <0> as illustrated in FIG. 5A and the second super memory block SUPER BLOCK <1> as illustrated in FIG. 5B each include three valid pages. In this case, when the victim block for garbage collection is selected based on the number of valid pages, it can be seen that the same condition exists.

하지만, 가비지 컬렉션을 위해 도 5a 및 도 5b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각을 희생블록으로 선택하는 경우, 도 5a에 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)으로부터 데이터를 추출하는데 필요한 첫 번째 소요시간(TOTAL<0>)은 80us인 반면, 도 5b에 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)으로부터 데이터를 추출하는데 필요한 두 번째 소요시간(TOTAL<1>)은 180us로서 두 배 이상의 차이가 나는 것을 알 수 있다.However, when each of the super memory blocks SUPER BLOCK <0, 1> illustrated through FIGS. 5A and 5B is selected as a victim block for garbage collection, the first super memory block SUPER BLOCK illustrated in FIG. 5A is selected. The first time required to extract data from <0>) (TOTAL <0>) is 80us, while the second time required to extract data from the second super memory block (SUPER BLOCK <1>) illustrated in FIG. 5B. The time required (TOTAL <1>) is 180us, which is more than doubled.

즉, 컨트롤러(130)는, 가비지 컬렉션을 효과적으로 수행하기 위해서 도 5a 및 도 5b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 중 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하는 것이 바람직하다.That is, the controller 130 may perform the first super memory block SUPER BLOCK <0> of the super memory blocks SUPER BLOCK <0, 1> illustrated through FIGS. 5A and 5B in order to effectively perform garbage collection. It is preferable to select as the sacrificial block.

도 6은 도 5a 및 도 5b를 통해 설명된 본 발명의 제1 실시예에 따른 메모리 시스템에서 슈퍼 메모리 블록에 대한 가비지 컬렉션을 수행할 때, 희생블록을 선택하는 동작을 설명하기 위해 도시한 도면이다.FIG. 6 is a diagram illustrating an operation of selecting a victim block when garbage collection is performed on a super memory block in a memory system according to the first embodiment of the present invention described with reference to FIGS. 5A and 5B. .

도 6을 참조하면, 본 발명의 제1 실시예에 따른 메모리 시스템(110)은, 컨트롤러(130) 및 메모리 장치(150)를 포함한다.Referring to FIG. 6, the memory system 110 according to the first embodiment of the present invention includes a controller 130 and a memory device 150.

그리고, 컨트롤러(130)는, 가비지 컬렉션 제어부(196), 및 메모리(144)를 포함할 수 있다. 여기서, 가비지 컬렉션 제어부(196)의 일반적인 동작은 전술한 도 3을 통해 설명하였으므로, 여기에서는 더 자세히 설명하지 않도록 하겠다.The controller 130 may include a garbage collection control unit 196 and a memory 144. Here, since the general operation of the garbage collection control unit 196 has been described with reference to FIG. 3, it will not be described in detail here.

그리고, 도 4를 통해 설명한 바와 같이 메모리 장치(150)는, 다수의 메모리 블록들(MEMORY BLOCK<000, 001,...>)을 포함한다. 또한, 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 병렬리드가 가능한 N개의 메모리 블록을 설정된 조건에 따라 그룹화하여 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:N>)로 관리한다. 이때, N은 2이상의 자연수이며, 도 5a 및 도 5b에서는 N이 4인 것을 가정하고 있다. 여기에서는, 도 5a 및 도 5b를 통해 설명된 두 개의 슈퍼 메모리 블록(SUPER BLOCK<0, 1>)과 함께 프리(free) 상태인 하나의 슈퍼 메모리 블록(SUPER BLOCK<2>)이 메모리 장치(150)에 포함된 것을 가정한다. 물론, 도 6에 예시된 사항은 어디까지나 설명의 편의를 위해 간략화된 것이며, 실제는 얼마든지 다른 형태(더 많은 개수의 슈퍼 메모리 블록이 메모리 장치에 포함되는 것과 같은 형태)로 확장될 수 있다.As described with reference to FIG. 4, the memory device 150 includes a plurality of memory blocks MEMORY BLOCK <000, 001, ...>. In addition, the controller 130 may group N memory blocks capable of parallel reading among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 by grouping a plurality of memory blocks according to a set condition. Managed as super memory blocks (SUPER BLOCK <0: N>). At this time, N is a natural number of 2 or more, and it is assumed that N is 4 in FIGS. 5A and 5B. Here, one super memory block SUPER BLOCK <2> in a free state together with the two super memory blocks SUPER BLOCK <0, 1> described with reference to FIGS. 5A and 5B is stored in the memory device ( Assume that it is included in 150). Of course, the matters illustrated in FIG. 6 are merely simplified for the sake of convenience of explanation, and in practice, may be extended to any other form (such as a larger number of super memory blocks are included in the memory device).

구체적으로, 컨트롤러(130)는, 내부에 포함된 가비지 컬렉션 제어부(196)를 통해 가비지 컬렉션을 위해 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>)로부터 유효 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 소요예측시간들(PRE_TOTAL<0, 1>)을 생성하고, 생성된 소요예측시간들(PRE_TOTAL<0, 1>)을 소요예측시간 테이블(600)로서 관리한다.In detail, the controller 130 may include the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 for garbage collection through the garbage collection control unit 196 included therein. Predictions (PRE_TOTAL <0, 1>), which calculates the required time when extracting valid data in superblock units, are generated, and the required prediction times (PRE_TOTAL <0, 1>) are generated. It manages as time table 600. FIG.

또한, 컨트롤러(130)는, 가비지 컬렉션 제어부(196)를 통해 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 각각의 유효 페이지 개수들(VPC<0:1>)을 슈퍼블록단위로 카운팅하고, 카운팅된 유효 페이지 개수들(VPC<0:1>)을 유효 페이지 개수 테이블(610)로서 관리한다.In addition, the controller 130 controls the number of valid pages VPC <0 of each of the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 through the garbage collection control unit 196. : 1> is counted in superblock units, and the counted valid page counts VPC <0: 1> are managed as the valid page count table 610.

좀 더 구체적으로, 컨트롤러(130)는, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 유효 페이지 개수(VPC<0:1>)에서, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각에 그룹화된 4개씩의 메모리 블록들(BLOCK<000, 010, 100, 110>, BLOCK<001, 011, 101, 111>) 중 위치가 동일한 유효 페이지의 개수(DP_CNT<0:1>)를 뺀 개수에 리드예측시간(PRE_tREAD)를 곱하여 제1 시간(FIRST_TIME<0:1>)을 계산(FIRST_TIME<0:1> = (VPC<0:1> - DP_CNT<0:1>) * PRE_tREAD)한다.More specifically, the controller 130 may include the plurality of super memory blocks SUPER BLOCK in the valid page count VPC <0: 1> of each of the plurality of super memory blocks SUPER BLOCK <0: 1>. <0: 1>) The number of valid pages having the same position among the four memory blocks BLOCK <000, 010, 100, 110>, and BLOCK <001, 011, 101, 111> grouped in each (DP_CNT <). Calculate the first time (FIRST_TIME <0: 1>) by multiplying the lead prediction time (PRE_tREAD) by subtracting 0: 1>) (FIRST_TIME <0: 1> = (VPC <0: 1>-DP_CNT <0: 1>) * PRE_tREAD).

또한, 컨트롤러(130)는, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 유효 페이지 개수(VPC<0:1>)에 전송예측시간(PRE_tTX)을 곱한 제2 시간(SECOND_TIME<0:1>)을 계산(SECOND_TIME<0:1> = VPC<0:1> * PRE_tTX)한다.Also, the controller 130 may multiply the number of valid pages VPC <0: 1> of each of the plurality of super memory blocks SUPERBLOCK <0: 1> by the transmission prediction time PRE_tTX, and the second time SECOND_TIME. <0: 1>) (SECOND_TIME <0: 1> = VPC <0: 1> * PRE_tTX).

또한, 컨트롤러(130)는, 제1 시간(FIRST_TIME<0:1>)과 제2 시간(SECOND_TIME<0:1>)을 더한 값을 계산(TOTAL<0:1> = FIRST_TIME<0:1> + SECOND_TIME<0:1>)하여 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 소요예측시간들(PRE_TOTAL<0, 1>)으로서 생성한다.In addition, the controller 130 calculates a value obtained by adding the first time FIRST_TIME <0: 1> and the second time SECOND_TIME <0: 1> (TOTAL <0: 1> = FIRST_TIME <0: 1>). + SECOND_TIME <0: 1>) to generate required prediction times PRE_TOTAL <0, 1> of each of the plurality of super memory blocks SUPER BLOCK <0: 1>.

예를 들어 설명하기 위해 도 6과 함께 도 5a를 함께 참조하면, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은, 첫 번째 내지 세 번째 메모리 블록(BLOCK<000, 010, 100>) 각각의 첫 번째 페이지(P<0>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)인 것을 알 수 있다.For example, referring to FIG. 5 together with FIG. 6 to illustrate, the first super memory block SUPER BLOCK <0> may include the first to third memory blocks BLOCK <000, 010, 100>, respectively. It can be seen that only the first page P <0> is a valid page (VAILD PAGE), and all remaining pages are invalid pages (INVALID PAGE).

따라서, 컨트롤러(130)는, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 첫 번째 유효 페이지 개수(VPC<0>)가 3인 것을 알 수 있다Accordingly, the controller 130 may know that the first valid page number VPC <0> included in the first super memory block SUPER BLOCK <0> is three.

또한, 컨트롤러(130)는, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 3개의 유효 페이지가 모두 첫 번째 페이지(P<0>)로서, 위치가 동일한 첫 번째 유효 페이지 개수(DP_CNT<0>)가 2인 것을 알 수 있다. 여기서, 첫 번째 유효 페이지(BLOCK000/P<0>)를 기준으로 할 때, 두 번째 및 세 번째 유효 페이지(BLOCK010/P<0>, BLOCK100/P<0>)는 첫 번째 유효 페이지(BLOCK000/P<0>)와 동일한 위치이다. 따라서, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에서 위치가 동일한 유효 페이지에는 두 번째 및 세 번째 유효 페이지(BLOCK010/P<0>, BLOCK100/P<0>)가 포함되고, 이를 통해 첫 번째 유효 페이지 개수(DP_CNT<0>)는 2가 된다.In addition, the controller 130 may include all three valid pages included in the first super memory block SUPER BLOCK <0> as the first page P <0>. It can be seen that <0>) is 2. Here, based on the first valid page (BLOCK000 / P <0>), the second and third valid pages (BLOCK010 / P <0>, BLOCK100 / P <0>) are the first valid page (BLOCK000 / P <0>). Same position as P <0>). Therefore, valid pages with the same position in the first super memory block (SUPER BLOCK <0>) include the second and third valid pages (BLOCK010 / P <0>, BLOCK100 / P <0>). The number of first valid pages DP_CNT <0> is two.

따라서, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 제1 시간(FIRST_TIME<0>)은, '(3 ?? 2) * PRE_tREAD'와 같은 계산을 통해 한 번의 리드예측시간(PRE_tREAD)에 대응하는 시간이 된다. 또한, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 제2 시간(SECOND_TIME<0>)은, '3 * PRE_tTX'와 같은 계산을 통해 세 번의 전송예측시간(PRE_tTX)에 대응하는 시간이 된다. 결론적으로, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)은, 한 번의 리드예측시간(PRE_tREAD)에 대응하는 첫 번째 제1 시간(FIRST_TIME<0>)과 세 번의 전송예측시간(PRE_tTX)에 대응하는 첫 번째 제2 시간(SECOND_TIME<0>)을 더한 시간이 된다.Therefore, the first first time FIRST_TIME <0> corresponding to the first super memory block SUPER BLOCK <0> is one read prediction time through a calculation such as '(3 ?? 2) * PRE_tREAD'. It is a time corresponding to (PRE_tREAD). Also, the first second time SECOND_TIME <0> corresponding to the first super memory block SUPER BLOCK <0> corresponds to three transmission prediction times PRE_tTX through the same calculation as '3 * PRE_tTX'. It's time to do it. In conclusion, the first required prediction time PRE_TOTAL <0> corresponding to the first super memory block SUPER BLOCK <0> is the first first time FIRST_TIME <corresponding to one read prediction time PRE_tREAD. 0>) and the first second time (SECOND_TIME <0>) corresponding to three transmission prediction times PRE_tTX.

예컨대, 리드예측시간(PRE_tREAD)이 50us라고 가정하고, 전송예측시간(PRE_tTX)이 10us라고 가정하면, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)은, 50us의 첫 번째 제1 시간(FIRST_TIME<0>)과 30us의 첫 번째 제2 시간(SECOND_TIME<0>)을 더한 80us가 될 것이다.For example, assuming that the lead prediction time PRE_tREAD is 50us and the transmission prediction time PRE_tTX is 10us, the first required prediction time PRE_TOTAL <0 corresponding to the first super memory block SUPER BLOCK <0> is assumed. >) Will be 80us plus 50us first first time (FIRST_TIME <0>) plus 30us first second time (SECOND_TIME <0>).

마찬가지로, 예를 들어 설명하기 위해 도 6과 함께 도 5b를 함께 참조하면, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 첫 번째 메모리 블록(BLOCK001)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK011)의 세 번째 페이지(P<2>), 및 네 번째 메모리 블록(BLOCK111)의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)인 것을 알 수 있다.Likewise, referring to FIG. 5 together with FIG. 6 for an example, the second super memory block SUPER BLOCK <1> is the first page P <0> of the first memory block BLOCK001. Only the third page (P <2>) of the second memory block (BLOCK011) and the second page (P <1>) of the fourth memory block (BLOCK111) are valid pages (VAILD PAGE), and all remaining pages. It can be seen that they are invalid pages.

따라서, 컨트롤러(130)는, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 두 번째 유효 페이지 개수(VPC<1>)가 3인 것을 알 수 있다.Accordingly, the controller 130 may know that the second valid page number VPC <1> included in the second super memory block SUPER BLOCK <1> is three.

또한, 컨트롤러(130)는, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 3개의 유효 페이지 각각의 위치가 서로 다른 상태로서, 위치가 동일한 두 번째 유효 페이지 개수(DP_CNT<1>)가 0인 것을 알 수 있다. 여기서, 첫 번째 유효 페이지(BLOCK001/P<0>)를 기준으로 할 때, 두 번째 유효 페이지(BLOCK011/P<3>)와 세 번째 유효 페이지(BLOCK111/P<0>)는 각각 첫 번째 유효 페이지(BLOCK000/P<0>)와 다른 위치이다. 또한, 두 번째 유효 페이지(BLOCK011/P<3>)와 세 번째 유효 페이지(BLOCK111/P<0>)도 서로 다른 위치이다. 따라서, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에서 위치가 동일한 유효 페이지는 존재하지 않으며, 이를 통해 두 번째 유효 페이지 개수(DP_CNT<1>)는 0이 된다.In addition, the controller 130 may have different positions of each of the three valid pages included in the second super memory block SUPER BLOCK <1>, and the number of second valid pages having the same position may be the same (DP_CNT <1>). It can be seen that is 0. Here, based on the first valid page (BLOCK001 / P <0>), the second valid page (BLOCK011 / P <3>) and the third valid page (BLOCK111 / P <0>) are the first valid page, respectively. This is a different location than the page (BLOCK000 / P <0>). Also, the second valid page BLOCK011 / P <3> and the third valid page BLOCK111 / P <0> are also different positions. Therefore, there is no valid page having the same position in the second super memory block SUPER BLOCK <1>, whereby the second valid page number DP_CNT <1> becomes zero.

따라서, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 제1 시간(FIRST_TIME<1>)은, '(3 ?? 0) * PRE_tREAD'와 같은 계산을 통해 세 번의 리드예측시간(PRE_tREAD)에 대응하는 시간이 된다. 또한, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 제2 시간(SECOND_TIME<1>)은, '3 * PRE_tTX'와 같은 계산을 통해 세 번의 전송예측시간(PRE_tTX)에 대응하는 시간이 된다. 결론적으로, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 소요예측시간(PRE_TOTAL<1>)은, 세 번의 리드예측시간(PRE_tREAD)에 대응하는 두 번째 제1 시간(FIRST_TIME<1>)과 세 번의 전송예측시간(PRE_tTX)에 대응하는 두 번째 제2 시간(SECOND_TIME<1>)을 더한 시간이 된다.Therefore, the second first time FIRST_TIME <1> corresponding to the second super memory block SUPER BLOCK <1> is three read prediction times through a calculation such as '(3 ?? 0) * PRE_tREAD'. It is a time corresponding to (PRE_tREAD). In addition, the second second time SECOND_TIME <1> corresponding to the second super memory block SUPER BLOCK <1> corresponds to three transmission prediction times PRE_tTX through the same calculation as '3 * PRE_tTX'. It's time to do it. In conclusion, the second required prediction time PRE_TOTAL <1> corresponding to the second super memory block SUPER BLOCK <1> is the second first time FIRST_TIME <corresponding to three read prediction times PRE_tREAD. 1>) and the second second time SECOND_TIME <1> corresponding to the three transmission prediction times PRE_tTX.

예컨대, 리드예측시간(PRE_tREAD)이 50us라고 가정하고, 전송예측시간이 10us라고 가정하면, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 소요예측시간(PRE_TOTAL<1>)은, 150us의 두 번째 제1 시간(FIRST_TIME<1>)과 30us의 두 번째 제2 시간(SECOND_TIME<1>)을 더한 180us가 될 것이다.For example, assuming that the lead prediction time PRE_tREAD is 50us and the transmission prediction time is 10us, the second required prediction time PRE_TOTAL <1> corresponding to the second super memory block SUPER BLOCK <1> is , The second first time (FIRST_TIME <1>) of 150us and the second second time (SECOND_TIME <1>) of 30us will be 180us.

참고로, 컨트롤러(130)는, 메모리 장치(150)에 대한 리드예측시간(PRE_tREAD)과 전송예측시간(PRE_tTX)에 대한 정보를 설정하고 있을 수 있다. 즉, 설계자는 메모리 장치(150)의 종류나 상태에 따라 테스트를 통해 메모리 장치(150)에 대한 리드예측시간(PRE_tREAD)과 전송예측시간(PRE_tTX)을 미리 설정할 수 있다.For reference, the controller 130 may set information about the read prediction time PRE_tREAD and the transfer prediction time PRE_tTX for the memory device 150. That is, the designer may preset the read prediction time PRE_tREAD and the transfer prediction time PRE_tTX for the memory device 150 through a test according to the type or state of the memory device 150.

전술한 바와 같이, 컨트롤러(130)는, 가비지 컬렉션을 수행하기 이전에 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각에 대한 소요예측시간(PRE_TOTAL<0, 1>)을 예측연산할 수 있다.As described above, the controller 130 predicts the required prediction time PRE_TOTAL <0, 1> for each of the plurality of super memory blocks SUPER BLOCK <0: 1> before performing garbage collection. can do.

그리고, 컨트롤러(130)는, 내부에 포함된 가지비 컬렉션 제어부(196)를 통해 소요예측시간 테이블(600)에 포함된 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>)을 참조하여 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 어떤 메모리 블록을 가비지 컬렉션을 위해 희생블록으로 선택할지 결정할 수 있다.In addition, the controller 130 may estimate the required number of the super memory blocks SUPER BLOCK <0: 1> included in the required forecast time table 600 through the branch ratio collection control unit 196 included therein. Selecting a memory block among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 as a victim block for garbage collection by referring to the times PRE_TOTAL <0, 1>. You can decide if you want to.

이때, 컨트롤러(130)는, 소요예측시간 테이블(600)에 포함된 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>)을 참조하는 방식에는 다음과 같은 두 가지 방식이 있을 수 있으며, 어느 하나의 방식을 선택할 수 있다.At this time, the controller 130 refers to the required prediction times PRE_TOTAL <0, 1> for the plurality of super memory blocks SUPER BLOCK <0: 1> included in the required prediction time table 600. There may be two methods, and either method may be selected.

첫 번째 방식은, 컨트롤러(130)에서 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>) 중 상대적으로 가장 작은 값의 소요예측시간에 대응하는 슈퍼 메모리 블록에 그룹화된 N개의 메모리 블록들 중 적어도 하나 이상의 유효 페이지를 포함하는 메모리 블록을 희생블록으로 선택하는 방식이다.The first method is based on the predicted time of the relatively smallest required time among the predicted times PRE_TOTAL <0, 1> for the plurality of super memory blocks SUPER BLOCK <0: 1> in the controller 130. The memory block including at least one valid page among the N memory blocks grouped in the corresponding super memory block is selected as a victim block.

예컨대, 전술한 설명에서와 같이 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대한 소요예측시간(PRE_TOTAL<0>)은 80us이고, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대한 소요예측시간(PRE_TOTAL<1>)은 180us이므로, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대한 소요예측시간(PRE_TOTAL<0>)이 더 작다. 따라서, 컨트롤러(130)는, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 그룹화된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>) 중 적어도 하나 이상의 유효 페이지를 포함하는 3개의 메모리 블록들(MEMORY BLOCK<000, 010, 100>)을 희생블록으로 선택한다.For example, as described in the foregoing description, the required prediction time PRE_TOTAL <0> for the first super memory block SUPER BLOCK <0> is 80us, and the requirement for the second super memory block SUPER BLOCK <1>. Since the prediction time PRE_TOTAL <1> is 180us, the required prediction time PRE_TOTAL <0> for the first super memory block SUPER BLOCK <0> is smaller. Accordingly, the controller 130 includes at least one valid page among four memory blocks MEMORY BLOCK <000, 010, 100, 110> grouped in the first super memory block SUPER BLOCK <0>. Three memory blocks MEMORY BLOCK <000, 010, 100> are selected as victim blocks.

이렇게, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 3개의 메모리 블록들(MEMORY BLOCK<000, 010, 100>)이 희생블록으로 선택되었기 때문에, 가비지 컬렉션이 수행되는 구간에서 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 3개의 유효 페이지는 컨트롤러(130) 내부의 메모리(144)로 전달되었다가, 타겟블록(target block)인 세 번째 슈퍼 메모리 블록(SUPER BLOCK<2>)에 저장될 것이다.Thus, since three memory blocks (MEMORY BLOCK <000, 010, 100>) included in the first super memory block (SUPER BLOCK <0>) are selected as victim blocks, the first in the section where garbage collection is performed The three valid pages included in the super memory block SUPER BLOCK <0> are transferred to the memory 144 inside the controller 130, and then a third super memory block SUPER BLOCK <2 that is a target block. >) Will be stored.

두 번째 방식은, 전술한 첫 번째 방식을 사용하기 전에 컨트롤러(130)에서 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각에 포함된 N개의 메모리 블록들 각각의 유효 페이지 개수를 모두 합친 개수(VPC<0:1>)가 '설정된 개수' 이하인 슈퍼 메모리 블록의 개수를 확인하는 방식이다. 즉, 컨트롤러(130)는, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 유효 페이지 개수(VPC<0:1>) 중 '설정된 개수' 이하인 슈퍼 메모리 블록이 '한 개'인 경우, 전술한 첫 번째 방식을 사용하지 않는다. 반면, 컨트롤러(130)는, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 유효 페이지 개수(VPC<0:1>) 중 '설정된 개수' 이하인 슈퍼 메모리 블록이 '적어도 두 개 이상'인 경우, 전술한 첫 번째 방식을 사용한다.In the second method, before using the first method described above, the controller 130 checks the number of valid pages of each of the N memory blocks included in each of the plurality of super memory blocks SUPER BLOCK <0: 1>. This is a method of checking the number of super memory blocks whose combined number VPC <0: 1> is equal to or less than the set number. That is, the controller 130 may have one super memory block that is less than or equal to the set number of valid pages VPC <0: 1> of each of the plurality of super memory blocks SUPER BLOCK <0: 1>. , Do not use the first scheme described above. On the other hand, the controller 130 may have at least two super memory blocks that are less than or equal to the set number of valid pages VPC <0: 1> of each of the plurality of super memory blocks SUPER BLOCK <0: 1>. Above ', the first method described above is used.

예컨대, 전술한 설명에서와 다르게 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)의 유효 페이지 개수(VPC<0>)가 5이고, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)의 유효 페이지 개수(VPC<1>)가 1일 수 있다. 또한, 컨트롤러(130)는, '설정된 개수'를 2로 설정할 수 있다. 이와 같은 경우, 컨트롤러(130)는, 한 개의 슈퍼 메모리 블록, 즉, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)이 '설정된 개수'이하의 유효 페이지 개수를 갖는다는 것을 확인할 수 있다. 따라서, 컨트롤러(130)는, 전술한 첫 번째 방식을 사용하지 않고, '설정된 개수'이하의 유효 페이지 개수를 갖는 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 N개의 메모리 블록들 중 적어도 하나 이상의 유효 페이지를 포함하는 메모리 블록을 희생블록으로 선택한다.For example, unlike the above description, the number of valid pages VPC <0> of the first super memory block SUPER BLOCK <0> is 5 and the number of valid pages of the second super memory block SUPER BLOCK <1>. (VPC <1>) may be one. In addition, the controller 130 may set the 'set number' to two. In this case, the controller 130 may confirm that one super memory block, that is, the second super memory block SUPER BLOCK <1> has a valid number of pages less than or equal to the 'set number'. Accordingly, the controller 130 does not use the first method described above, but among the N memory blocks included in the second super memory block SUPER BLOCK <1> having a valid number of pages less than or equal to the 'set number'. A memory block including at least one valid page is selected as a victim block.

반면, 전술한 설명에서와 같이 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)의 유효 페이지 개수(VPC<0>)가 3이고, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)의 유효 페이지 개수(VPC<1>)도 3일 수 있다. 또한, 컨트롤러(130)는, '설정된 개수'를 2로 설정할 수 있다. 이와 같은 경우, 컨트롤러(130)는, 두 개의 슈퍼 메모리 블록, 즉, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>) 및 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)이 모두 '설정된 개수'이하의 유효 페이지 개수를 갖는다는 것을 확인할 수 있다. 따라서, 컨트롤러(130)는, 전술한 첫 번째 방식을 사용하여, 상대적으로 더 작은 소요예측시간(PRE_TOTAL<0>)을 갖는 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 N개의 메모리 블록들 중 적어도 하나 이상의 유효 페이지를 포함하는 메모리 블록을 희생블록으로 선택한다.On the other hand, as in the above description, the number of valid pages VPC <0> of the first super memory block SUPER BLOCK <0> is 3 and the number of valid pages of the second super memory block SUPER BLOCK <1>. (VPC <1>) may also be three. In addition, the controller 130 may set the 'set number' to two. In this case, the controller 130 may determine that two super memory blocks, that is, the first super memory block SUPER BLOCK <0> and the second super memory block SUPER BLOCK <1> are both less than or equal to the 'set number'. It can be confirmed that it has a valid page number of. Accordingly, the controller 130 uses the first method described above to make N memories included in the first super memory block SUPER BLOCK <0> having a relatively smaller required prediction time PRE_TOTAL <0>. A memory block including at least one valid page among the blocks is selected as the victim block.

한편, 전술한 설명과 같이 컨트롤러(130)는, 소요예측시간들(PRE_TOTAL<0, 1>)을 생성하고, 생성된 소요예측시간들(PRE_TOTAL<0, 1>)을 소요예측시간 테이블(600)로서 관리한다.On the other hand, as described above, the controller 130 generates the required prediction times PRE_TOTAL <0, 1> and generates the required prediction times PRE_TOTAL <0, 1>. I manage it as).

이때, 컨트롤러(130)는, 다음과 같은 두 가지 방식 중 어느 하나의 방식을 사용하여 소요예측시간들(PRE_TOTAL<0, 1>)을 업데이트(update)할 수 있다.In this case, the controller 130 may update the required prediction times PRE_TOTAL <0, 1> by using any one of the following two methods.

첫 번째 방식은, 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변되는 특정 메모리 블록이 발생할 때마다, 특정 메모리 블록이 그룹화된 슈퍼 메모리 블록의 소요예측시간을 업데이트할 수 있다.In the first method, the controller 130 may generate a specific memory block in which the number of valid pages is variable among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150. The required prediction time of the super memory block in which a specific memory block is grouped may be updated.

예컨대, 도 4 및 도 5a를 함께 참조하면, 첫 번째 포그라운드 동작 또는 백그라운드 동작에 따라 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)의 유효 페이지 개수가 가변될 수 있다. 이어서, 두 번째 포그라운드 동작 또는 백그라운드 동작의 수행에 따라 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 두 번째 메모리 블록(BLOCK001)의 유효 페이지 개수가 가변될 수 있다.For example, referring to FIG. 4 and FIG. 5A, according to the first foreground operation or the background operation, the number of valid pages of the first memory block BLOCK000 of the first plane PLANE00 of the first memory die DIE0 may be calculated. Can be variable. Subsequently, the number of valid pages of the second memory block BLOCK001 of the first plane PLANE00 of the first memory die DIE0 may vary according to the execution of the second foreground operation or the background operation.

이와 같은 경우, 컨트롤러(130)는, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)의 유효 페이지가 가변되는 것에 응답하여, 해당 메모리 블록(BLOCK000)이 그룹화된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)의 값을 다시 예측연산할 수 있다. 이어서, 컨트롤러(130)는, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 두 번째 메모리 블록(BLOCK001)의 유효 페이지 개수가 가변되는 것에 응답하여, 해당 메모리 블록(BLOCK001)이 그룹화된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 소요예측시간(PRE_TOTAL<1>)의 값을 다시 예측연산할 수 있다.In this case, the controller 130 may respond to the change of the valid page of the first memory block BLOCK000 of the first plane PLANE00 of the first memory die DIE0, thereby causing the corresponding memory block BLOCK000 to be changed. The value of the first required prediction time PRE_TOTAL <0> corresponding to the grouped first super memory block SUPER BLOCK <0> may be predicted again. Subsequently, the controller 130 may group the corresponding memory block BLOCK001 in response to a change in the number of valid pages of the second memory block BLOCK001 of the first plane PLANE00 of the first memory die DIE0. The value of the second required prediction time PRE_TOTAL <1> corresponding to the second super memory block SUPER BLOCK <1> may be predicted again.

두 번째 방식은, 컨트롤러(130)는, '설정된 시점'마다 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변된 특정 메모리 블록이 존재하는지를 확인하고, 확인결과 유효 페이지의 개수가 가변된 특정 메모리 블록이 존재하는 경우, 특정 메모리 블록이 그룹화된 슈퍼 메모리 블록의 소요예측시간을 업데이트할 수 있다.In the second method, the controller 130 checks whether there is a specific memory block having a variable number of valid pages among the memory blocks MEMORY BLOCK <000, 001, ...> for each 'set time point'. As a result, when there is a specific memory block having a variable number of valid pages, the required prediction time of the super memory block in which the specific memory block is grouped may be updated.

예컨대, 도 4 및 도 5a를 함께 참조하면, 제1 설정된 시점(미도시)과 제2 설정된 시점(미도시) 사이에서 연속된 적어도 두 개의 포그라운드 동작 또는 백그라운드 동작이 수행되어 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)의 유효 페이지 개수 및 두 번째 메모리 블록(BLOCK001)의 유효 페이지 개수가 가변될 수 있다.For example, referring to FIGS. 4 and 5A, at least two foreground operations or background operations consecutive between a first set time point (not shown) and a second set time point (not shown) are performed to perform a first memory die ( The number of valid pages of the first memory block BLOCK000 of the first plane PLANE00 of DIE0 and the number of valid pages of the second memory block BLOCK001 may vary.

이와 같은 경우, 컨트롤러(130)는, 제2 설정된 시점에서 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변된 메모리 블록이 존재하는지 여부를 확인하고, 확인결과에 따라 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000) 및 두 번째 메모리 블록(BLOCK001) 각각의 유효 페이지 개수가 가변하였다는 것을 알 수 있다. 따라서, 컨트롤러(130)는, 제2 설정된 시점에서 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)이 그룹화된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)의 값 및 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 두 번째 메모리 블록(BLOCK001)이 그룹화된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 소요예측시간(PRE_TOTAL<1>)의 값을 동시에 다시 예측연산할 수 있다.In this case, the controller 130 checks whether or not a memory block having a variable number of valid pages among the memory blocks MEMORY BLOCK <000, 001, ...> exists at the second set time point, and confirms that there is. As a result, it can be seen that the number of valid pages of each of the first memory block BLOCK000 and the second memory block BLOCK001 of the first plane PLANE00 of the first memory die DIE0 varies. Accordingly, the controller 130 may include the first super memory block SUPER BLOCK <0> in which the first memory block BLOCK000 of the first plane PLANE00 of the first memory die DIE0 is grouped at the second set time point. Second super memory block (BLOCK001) grouped with the value of the first expected time (PRE_TOTAL <0>) and the second memory block (BLOCK001) of the first plane (PLANE00) of the first memory die (DIE0). The value of the second required prediction time PRE_TOTAL <1> corresponding to SUPER BLOCK <1>) may be simultaneously predicted again.

참고로, '설정된 시점'은, 설계자에 의해 미리 정의될 수 있는 시점으로서, 설정된 크기의 데이터가 라이트될 때마다 반복되는 시점 또는 특정동작의 수행이 완료될 때마다 반복되는 시점일 수 있다.For reference, the 'set time' may be predefined by the designer, and may be a time point that is repeated each time data of a set size is written or a time point that is repeated every time the execution of a specific operation is completed.

한편, 가비지 컬렉션이 수행되어 희생블록으로 선택된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 모든 유효 페이지가 컨트롤러(130) 내부의 메모리(144)로 전달되었다가, 타겟블록(target block)인 세 번째 슈퍼 메모리 블록(SUPER BLOCK<2>)으로 이동되면, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에는 더 이상 유효 페이지가 존재하지 않는 상태가 될 것이다. 따라서, 가비지 컬렉션 이후의 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은 소거(erase)동작을 통해 프리(free) 슈퍼 메모리 블록이 되는 동작 이외에 무효(invalid)한 슈퍼 메모리 블록으로서 어떠한 동작에도 관여될 필요가 없다. 그런데, 컨트롤러(130)는, 가비지 컬렉션을 수행하기 이전에 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대한 첫 번째 소요예측시간(PRE_TOTAL<0>)을 생성하였기 때문에, 가비지 컬렉션을 수행한 이후에도 소요예측시간 테이블(600)에 그 값이 남아 있을 수 있다. 이렇게, 소요예측시간 테이블(600)에 남아있는 첫 번째 소요예측시간(PRE_TOTAL<0>)의 값으로 인해 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대해 알 수 없는 비정상적인 동작이 수행될 수 있다. 따라서, 컨트롤러(130)는, 희생블록으로 선택된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대한 가비지 컬렉션이 수행된 이후에, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)을 '예정값'으로 설정하여 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대해 알 수 없는 비정상적인 동작이 수행되는 것을 방지한다.Meanwhile, garbage collection is performed so that all valid pages included in the first super memory block SUPER BLOCK <0> selected as the victim block are transferred to the memory 144 in the controller 130 and then the target block. If it is moved to the third super memory block (SUPER BLOCK <2>), the first super memory block (SUPER BLOCK <0>) will no longer have a valid page. Therefore, the first super memory block (SUPER BLOCK <0>) after garbage collection is an invalid super memory block in addition to the free super memory block through an erase operation. Need not be. However, since the controller 130 generates the first required time PRE_TOTAL <0> for the first super memory block SUPER BLOCK <0> before performing garbage collection, the controller 130 performs garbage collection. Thereafter, the value may remain in the required prediction time table 600. As such, an unknown abnormal operation may be performed on the first super memory block SUPER BLOCK <0> due to the value of the first predicted time PRE_TOTAL <0> remaining in the required time table 600. have. Therefore, after garbage collection is performed on the first super memory block SUPER BLOCK <0> selected as the victim block, the controller 130 corresponds to the first corresponding to the first super memory block SUPER BLOCK <0>. By setting the first expected time PRE_TOTAL <0> to 'scheduled value', an unknown abnormal operation on the first super memory block SUPER BLOCK <0> is prevented from being performed.

정리하면, 컨트롤러(130)는, 특정 슈퍼 메모리 블록이 희생블록으로 선택되어 가비지 컬렉션을 통해 내부의 유효 페이지가 모두 타겟 슈퍼 메모리 블록으로 이동한 경우, 특정 슈퍼 메모리 블록이 알 수 없는 잘못된 동작을 수행할 수 없도록 특정 슈퍼 메모리 블록에 대한 소요예측시간을 '예정값'으로 설정할 수 있다.In summary, when a specific super memory block is selected as a victim block and all valid pages inside the target super memory block are moved through garbage collection, the controller 130 performs an unknown wrong operation. The estimated time required for a specific super memory block can be set to 'scheduled value'.

한편, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 프리 메모리 블록의 개수가 충분히 많은 상태이면, 가비지 컬렉션을 수행할 확률이 높지 않다. 즉, 일반적으로 가비지 컬렉션은 메모리 장치(150)에 포함된 프리 메모리 블록의 개수가 '일정 개수' 이하로 줄어들 때 수행하는 동작이다.Meanwhile, if the number of free memory blocks among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 is sufficiently large, the probability of garbage collection is not high. That is, in general, garbage collection is an operation performed when the number of free memory blocks included in the memory device 150 decreases below a predetermined number.

따라서, 본 발명의 제1 실시예에 따른 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 프리 메모리 블록의 개수가 '제1 개수'이하인 구간에서 전술한 소요예측시간들(PRE_TOTAL<0, 1>)을 생성 및 관리한다. 물론, 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 프리 메모리 블록의 개수가 '제1 개수'보다 큰 '제2 개수' 이상인 구간에서 소요예측시간들(PRE_TOTAL<0, 1>)을 생성 및 관리하지 않는다.Accordingly, in the controller 130 according to the first embodiment of the present invention, the number of free memory blocks among the memory blocks MEMORY BLOCK <000, 001,... The above-described required prediction times PRE_TOTAL <0, 1> are generated and managed in a section of 1 number 'or less. Of course, the controller 130 may include a 'second number' in which the number of free memory blocks among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 is greater than the 'first number'. 'It does not generate and manage required forecasting times PRE_TOTAL <0, 1> in the section above.

참고로, '제1 개수'는, 일반적인 가비지 컬렉션 동작의 트리거(trigger) 시점을 결정하기 위한 '일정 개수'와는 다르게 설정될 수 있다. 예컨대, '제1 개수'보다 '일정 개수'가 더 작을 수 있다.For reference, the first number may be set differently from the predetermined number for determining a trigger time of a general garbage collection operation. For example, the 'constant number' may be smaller than the 'first number'.

<제2 실시예>Second Embodiment

도 7a 및 도 7b는 본 발명의 제2 실시예에 따른 메모리 시스템에서 슈퍼 메모리 블록에 대한 가비지 컬렉션을 설명하는 도면이다.7A and 7B illustrate garbage collection for a super memory block in a memory system according to a second embodiment of the present invention.

먼저, 도 7a 및 도 7b에 도시된 본 발명의 제2 실시예에서는 앞선 도 4에서 설명한 컨트롤러(130)에서 슈퍼 메모리 블록들을 구분하는 방식 중 세 번째 방식을 사용하는 것을 알 수 있다.First, in the second embodiment of the present invention illustrated in FIGS. 7A and 7B, it can be seen that the controller 130 described above with reference to FIG. 4 uses a third method of dividing the super memory blocks.

즉, 도 7a 및 도 7b에서는 컨트롤러(130)가 메모리 장치(150)에 포함된 4개의 플래인들(PLANE<00, 01, 10, 11>) 각각에서 임의의 하나의 메모리 블록을 선택하여 하나의 슈퍼 메모리 블록(SUPER BLOCK<0> or SUPER BLOCK<1>)으로 관리한다. 따라서, 하나의 슈퍼 메모리 블록(SUPER BLOCK<0> or SUPER BLOCK<1>)에는 4개의 메모리 블록이 포함된다.That is, in FIGS. 7A and 7B, the controller 130 selects one random memory block from each of the four planes PLANE <00, 01, 10, and 11> included in the memory device 150. To a super memory block (SUPER BLOCK <0> or SUPER BLOCK <1>). Therefore, one super memory block SUPER BLOCK <0> or SUPER BLOCK <1> includes four memory blocks.

예컨대, 도 4 및 도 7a를 참조하면, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)과, 첫 번째 메모리 다이(DIE0)의 두 번째 플래인(PLANE01)의 첫 번째 메모리 블록(BLOCK010)과, 두 번째 메모리 다이(DIE1)의 첫 번째 플래인(PLANE10)의 첫 번째 메모리 블록(BLOCK100), 및 두 번째 메모리 다이(DIE1)의 두 번째 플래인(PLANE11)의 첫 번째 메모리 블록(BLOCK110)을 그룹화한 것이다.For example, referring to FIGS. 4 and 7A, the first super memory block SUPER BLOCK <0> may include the first memory block BLOCK000 of the first plane PLANE00 of the first memory die DIE0. The first memory block (BLOCK010) of the second plane (PLANE01) of the first memory die (DIE0), the first memory block (BLOCK100) of the first plane (PLANE10) of the second memory die (DIE1), and The first memory block BLOCK110 of the second plane PLANE11 of the second memory die DIE1 is grouped.

그리고, 도 4 및 도 7b를 참조하면, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 두 번째 메모리 블록(BLOCK001)과, 첫 번째 메모리 다이(DIE0)의 두 번째 플래인(PLANE01)의 두 번째 메모리 블록(BLOCK011)과, 두 번째 메모리 다이(DIE1)의 첫 번째 플래인(PLANE10)의 두 번째 메모리 블록(BLOCK101), 및 두 번째 메모리 다이(DIE1)의 두 번째 플래인(PLANE11)의 두 번째 메모리 블록(BLOCK111)을 그룹화한 것이다.4 and 7B, the second super memory block SUPER BLOCK <1> includes a second memory block BLOCK001 of the first plane PLANE00 of the first memory die DIE0; The second memory block (BLOCK011) of the second plane (PLANE01) of the first memory die (DIE0), the second memory block (BLOCK101) of the first plane (PLANE10) of the second memory die (DIE1), and The second memory block BLOCK111 of the second plane PLANE11 of the second memory die DIE1 is grouped.

그리고, 도 7a 및 도 7b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각은 내부에 포함된 4개씩의 메모리 블록들(BLOCK<000, 010, 100, 110>, BLOCK<001, 011, 101, 111>)을 병렬로 선택하여 각각 페이지 단위의 데이터를 입/출력할 수 있다.Each of the super memory blocks SUPER BLOCK <0, 1> illustrated in FIGS. 7A and 7B has four memory blocks BLOCK <000, 010, 100, 110>, and BLOCK <included therein. 001, 011, 101, 111>) can be selected in parallel to input / output data in units of pages.

여기서, 도 7a 및 도 7b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각은 내부에 포함된 4개씩의 메모리 블록들(BLOCK<000, 010, 100, 110>, BLOCK<001, 011, 101, 111>)을 병렬로 선택할 때, 서로 다른 위치의 페이지들에 대해서 병렬리드가 가능하다고 가정할 수 있다. 물론, 서로 다른 위치의 페이지들에 대해서 병렬리드가 가능하다고 해도 하나의 블록에서 한 번에 하나의 페이지만 선택하여 리드하는 것이 가능하다.Here, each of the super memory blocks SUPER BLOCK <0, 1> illustrated in FIGS. 7A and 7B has four memory blocks BLOCK <000, 010, 100, 110>, and BLOCK <included therein. 001, 011, 101, 111>) in parallel, it can be assumed that parallel reads are possible for pages of different positions. Of course, even if parallel reading is possible for pages of different positions, it is possible to select and read only one page at a time in one block.

예컨대, 도 7a를 통해 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>)을 병렬로 선택한다는 것은, 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>) 각각에서 위치와 상관없이 하나의 페이지를 선택하는 것을 의미한다. 즉, 도 7a를 통해 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>) 중 첫 번째 메모리 블록(BLOCK000)에서는 첫 번째 페이지(P<0>)를 선택하고, 두 번째 메모리 블록(BLOCK010)에서는 세 번째 페이지(P<2>)를 선택하며, 세 번째 및 네 번째 메모리 블록(BLOCK<100, 110>)에서는 각각 두 번째 페이지(P<1>)를 선택하는 것을 의미한다. 물론, 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>) 중 첫 번째 및 두 번째 메모리 블록(BLOCK<000, 010>)에서는 각각 두 개의 페이지를 선택하고, 세 번째 및 네 번째 메모리 블록(BLOCK<100, 110>)에서는 어떠한 페이지도 선택하지 않는 것과 같은 방식의 리드는 불가능하다.For example, selecting four memory blocks BLOCK <000, 010, 100, 110> included therein in parallel in the first super memory block SUPER BLOCK <0> illustrated in FIG. This means that one page is selected regardless of the position in each of the memory blocks BLOCK <000, 010, 100, and 110>. That is, the first memory block BLOCK000 of the four memory blocks BLOCK <000, 010, 100, and 110> included therein in the first super memory block SUPER BLOCK <0> illustrated in FIG. 7A. Selects the first page (P <0>), selects the third page (P <2>) in the second memory block (BLOCK010), and selects the third and fourth memory blocks (BLOCK <100, 110>). Respectively means selecting the second page (P <1>). Of course, the first and second memory blocks BLOCK <000, 010> of the four memory blocks BLOCK <000, 010, 100, 110> select two pages, respectively, and the third and fourth memories. In the blocks BLOCK <100, 110>, reading in the same manner as selecting no page is impossible.

마찬가지로, 도 7b를 통해 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<001, 011, 101, 111>)을 병렬로 선택한다는 것은, 4개의 메모리 블록들(BLOCK<001, 011, 101, 111>) 각각에서 위치와 상관없이 하나의 페이지를 동시에 선택하는 것을 의미한다. 즉, 도 7b를 통해 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에서 내부에 포함된 4개의 메모리 블록들(BLOCK<001, 011, 101, 111>) 중 첫 번째 메모리 블록(BLOCK001)에서는 첫 번째 페이지(P<0>)를 선택하고, 두 번째 내지 네 번째 메모리 블록(BLOCK<011, 101, 111>)에서는 각각 두 번째 페이지(P<1>)를 선택하는 것을 의미한다. 물론, 4개의 메모리 블록들(BLOCK<001, 011, 101, 111>) 중 두 번째 및 세 번째 메모리 블록(BLOCK<011, 101>)에서는 각각 두 개의 페이지를 선택하고, 첫 번째 및 네 번째 메모리 블록(BLOCK<001, 111>)에서는 어떠한 페이지도 선택하지 않는 것과 같은 방식의 리드는 불가능하다.Similarly, in the second super memory block SUPER BLOCK <1> illustrated in FIG. 7B, selecting four memory blocks BLOCK <001, 011, 101, 111> included therein in parallel is 4 This means that one page is simultaneously selected regardless of the position in each of the memory blocks BLOCK <001, 011, 101, and 111>. That is, the first memory block BLOCK001 of the four memory blocks BLOCK <001, 011, 101, and 111> included therein in the second super memory block SUPER BLOCK <1> illustrated in FIG. 7B. In this case, the first page P <0> is selected, and in the second to fourth memory blocks BLOCK <011, 101, and 111>, the second page P <1> is selected. Of course, the second and third memory blocks BLOCK <011 and 101> of the four memory blocks BLOCK <001, 011, 101, and 111> respectively select two pages, and the first and fourth memories are selected. In the blocks BLOCK <001, 111>, reading in the same manner as selecting no page is impossible.

한편, 도 7a 및 도 7b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각은 내부에 포함된 4개씩의 메모리 블록들(BLOCK<000, 010, 100, 110>, BLOCK<001, 011, 101, 111>) 각각에 포함된 다수의 페이지들(P<0, 1, 2,...>) 각각은, 독립적으로 유효 페이지(VAILD PAGE) 또는 무효 페이지(INVALID PAGE)가 될 수 있다.Meanwhile, each of the super memory blocks SUPER BLOCK <0, 1> illustrated in FIGS. 7A and 7B has four memory blocks BLOCK <000, 010, 100, 110>, and BLOCK <included therein. Each of the plurality of pages (P <0, 1, 2, ...>) included in each of 001, 011, 101, and 111> independently has a valid page (VAILD PAGE) or an invalid page (INVALID PAGE). Can be.

예컨대, 도 7a에 예시된 것과 같이 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은, 첫 번째 메모리 블록(BLOCK000)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK010)의 세 번째 페이지(P<2>)와, 세 번째 및 네 번째 메모리 블록(BLOCK<100, 110>) 각각의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)일 수 있다.For example, as illustrated in FIG. 7A, the first super memory block SUPER BLOCK <0> may include the first page P <0> of the first memory block BLOCK000 and the second memory block BLOCK010. Only the third page (P <2>) and the second page (P <1>) of each of the third and fourth memory blocks (BLOCK <100, 110>) are valid pages (VAILD PAGE), and all remaining pages It may be an invalid page.

또한, 도 7b에 예시된 것과 같이 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 첫 번째 메모리 블록(BLOCK001)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK011)의 두 번재 및 세 번째 페이지(P<1, 2>), 및 네 번째 메모리 블록(BLOCK111)의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)일 수 있다.In addition, as illustrated in FIG. 7B, the second super memory block SUPER BLOCK <1> may include the first page P <0> of the first memory block BLOCK001 and the second memory block BLOCK011. Only the second and third pages (P <1, 2>) and the second page (P <1>) of the fourth memory block (BLOCK111) are valid pages (VAILD PAGE), and all remaining pages are invalid pages (INVALID). PAGE).

이렇게, 도 7a에 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)과 도 7b에 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 각각 4개의 유효 페이지를 포함하는 상태라는 것을 알 수 있다.As such, the first super memory block SUPER BLOCK <0> illustrated in FIG. 7A and the second super memory block SUPER BLOCK <1> illustrated in FIG. 7B may each include four valid pages. Able to know.

또한, 가비지 컬렉션을 위해 도 7a 및 도 7b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각에 포함된 4개씩의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>, MEMORY BLOCK<001, 011, 101, 111>)을 각각 희생블록(victim block)으로 선택할 수 있다.In addition, four memory blocks (MEMORY BLOCK <000, 010, 100, 110>) included in each of the super memory blocks SUPER BLOCK <0, 1> illustrated through FIGS. 7A and 7B for garbage collection. , MEMORY BLOCK <001, 011, 101, and 111> may be selected as victim blocks.

이렇게, 가비지 컬렉션을 위해 도 7a에 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하였을 때, 내부에 포함된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>)에 포함된 4개의 유효 페이지로부터 데이터를 추출하는데 필요한 시간을 첫 번째 소요시간(TOTAL<0>)이라고 할 수 있다. 또한, 가비지 컬렉션을 위해 도 7b에 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)을 희생블록으로 선택하였을 때, 내부에 포함된 4개의 메모리 블록들(MEMORY BLOCK<001, 011, 101, 111>)에 포함된 4개의 유효 페이지로부터 데이터를 추출하는데 필요한 시간을 두 번째 소요시간(TOTAL<1>)이라고 할 수 있다.As such, when the first super memory block SUPER BLOCK <0> illustrated in FIG. 7A is selected as the victim block for garbage collection, four memory blocks included in the memory block (MEMORY BLOCK <000, 010, 100, The time required to extract data from four valid pages included in 110>) may be referred to as the first time TOTAL <0>. In addition, when the second super memory block (SUPER BLOCK <1>) illustrated in FIG. 7B is selected as a victim block for garbage collection, four memory blocks (MEMORY BLOCK <001, 011, 101, The time required to extract data from the four valid pages included in 111>) may be referred to as the second time required TOTAL <1>.

이때, 첫 번재 소요시간(TOTAL<0>)과 두 번째 소요시간(TOTAL<1>)은 다음과 같은 이유로 인해 크게 차이날 수 있다.At this time, the first time required TOTAL <0> and the second time required TOTAL <1> may be significantly different due to the following reasons.

구체적으로, 가비지 컬렉션에서 도 7a에 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하여 내부에 포함된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>)에 포함된 4개의 유효 페이지로부터 데이터를 추출하기 위해 4개의 유효 페이지의 위치를 확인할 수 있다.Specifically, four garbage blocks included in the garbage collection are selected by selecting the first super memory block SUPER BLOCK <0> illustrated in FIG. 7A as a victim block in the garbage collection. In order to extract data from the four valid pages included in), the positions of the four valid pages can be checked.

확인결과, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은, 첫 번째 메모리 블록(BLOCK000)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK010)의 세 번째 페이지(P<2>)와, 세 번째 및 네 번째 메모리 블록(BLOCK<100, 110>) 각각의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)인 것을 알 수 있다.As a result, the first super memory block (SUPER BLOCK <0>) includes the first page (P <0>) of the first memory block (BLOCK000) and the third page (P <) of the second memory block (BLOCK010). 2>), and only the second page (P <1>) of each of the third and fourth memory blocks (BLOCK <100, 110>) is a valid page (VAILD PAGE), and all remaining pages are invalid pages (INVALID PAGE). It can be seen that.

확인결과에 따라, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 유효 페이지(VAILD PAGE)는 그 위치가 서로 다른 것도 있고 서로 같은 것도 있는 것을 알 수 있다. 또한, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>) 각각은 1개씩의 유효 페이지를 포함하는 것을 알 수 있다. 즉, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>) 각각의 유효 페이지 개수 중 가장 큰 개수는 1인 것을 알 수 있다. 이는, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 유효 페이지로부터 4개의 유효 데이터를 추출하기 위해서 한 번의 리드(FIRST_READ)를 수행해야 한다는 것을 의미한다.According to the check result, it can be seen that the four valid pages VAILD PAGE included in the first super memory block SUPER BLOCK <0> have different positions and the same positions. In addition, it can be seen that each of the four memory blocks MEMORY BLOCK <000, 010, 100, 110> included in the first super memory block SUPER BLOCK <0> includes one valid page. That is, the largest number of valid pages of each of the four memory blocks (MEMORY BLOCK <000, 010, 100, 110>) included in the first super memory block SUPER BLOCK <0> is 1. have. This means that one read FIRST_READ must be performed to extract four valid data from four valid pages included in the first super memory block SUPER BLOCK <0>.

따라서, 컨트롤러(130)는, 제0 시점(t0)에서 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 첫 번째 메모리 블록(BLOCK000)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK010)의 세 번째 페이지(P<2>)와, 세 번째 및 네 번째 메모리 블록(BLOCK<100, 110>) 각각의 두 번째 페이지(P<1>)에 대해 한 번의 리드(FIRST_READ)를 수행한다. 한 번의 리드(FIRST_READ)를 통해 4개의 페이지 데이터(B000P0_VD, B010P2_VD, B100P1_VD, B110P1_VD)를 4개의 페이지 버퍼들(PB<000, 010, 100, 110>)에 캐싱한다. 이어서, 컨트롤러(130)는, 제1 시점(t1)에서 페이지 버퍼들(PB<000, 010, 100, 110>)에 캐싱된 4개의 페이지 데이터들(B000P0_VD, B010P2_VD, B100P1_VD, B110P1_VD)은 모두 유효 데이터(VALID DATA)이므로, 4개의 페이지 데이터들(B000P0_VD, B010P2_VD, B100P1_VD, B110P1_VD)을 모두 내부의 메모리(144)로 전송(DATA TRANSFER)한다.Accordingly, the controller 130 and the first page (P <0>) of the first memory block (BLOCK000) included in the first super memory block (SUPER BLOCK <0>) at the 0th time point t0, One read for each third page (P <2>) of the first memory block (BLOCK010) and the second page (P <1>) of each of the third and fourth memory blocks (BLOCK <100, 110>). FIRST_READ). Four page data B000P0_VD, B010P2_VD, B100P1_VD, and B110P1_VD are cached in four page buffers PB <000, 010, 100, and 110 through one read FIRST_READ. Subsequently, the controller 130 is valid for all four page data B000P0_VD, B010P2_VD, B100P1_VD, and B110P1_VD cached in the page buffers PB <000, 010, 100, and 110> at the first time point t1. Since the data is VALID DATA, all four page data B000P0_VD, B010P2_VD, B100P1_VD, and B110P1_VD are transferred to the internal memory 144 (DATA TRANSFER).

이렇게, 컨트롤러(130)는, 한 번의 리드(FIRST_READ)를 통해, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 유효 페이지(VAILD PAGE : BLOCK000_P<0>, BLOCK010_P<2>, BLOCK100_P<1>, BLOCK110_P<1>)에 저장된 4개의 유효 데이터(VALID DATA : B000P0_VD, B010P2_VD, B100P1_VD, B110P1_VD)를 모두 추출할 수 있다.Thus, the controller 130, through one read (FIRST_READ), four valid pages (VAILD PAGE: BLOCK000_P <0>, BLOCK010_P <2>, included in the first super memory block (SUPER BLOCK <0>), All four valid data (VALID DATA: B000P0_VD, B010P2_VD, B100P1_VD, B110P1_VD) stored in BLOCK100_P <1> and BLOCK110_P <1> can be extracted.

여기서, 한 번의 리드(FIRST_READ)를 수행하는데 필요한 시간을 리드시간(tREAD)이라고 가정할 수 있다. 또한, 1개의 페이지 버퍼(PB<000> or PB<010> or PB<100> or PB<110>)에 저장된 1개의 페이지 데이터(B000P0_VD or B010P2_VD or B100P1_VD or B110P1_VD)를 내부의 메모리(144)로 전송하는데 필요한 시간을 전송시간(tTX)라고 가정할 수 있다. 이렇게 가정할 경우, 가비지 컬렉션에서 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하여 데이터를 추출하는데 필요한 첫 번째 소요시간(TOTAL<0>)은, '{리드시간(tREAD) * 1} + {전송시간(tTX) * 4}'이 될 것이다. 예를 들어, 리드시간(tREAD)이 50us이고, 전송시간(tTX)이 10us라고 가정하면, 가비지 컬렉션에서 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하여 데이터를 추출하는데 필요한 첫 번째 소요시간(TOTAL<0>)은, 90us가 될 것이다.Here, the time required to perform one read FIRST_READ may be assumed to be a read time tREAD. In addition, one page data (B000P0_VD or B010P2_VD or B100P1_VD or B110P1_VD) stored in one page buffer (PB <000> or PB <010> or PB <100> or PB <110>) is stored in the internal memory 144. The time required for transmission may be assumed to be a transmission time tTX. Assuming this, the first time required for extracting data by selecting the first super memory block (SUPER BLOCK <0>) as the victim block in garbage collection is '{read time (tREAD)'. * 1} + {transmission time (tTX) * 4} '. For example, assuming that the read time tREAD is 50us and the transfer time tTX is 10us, it is necessary to select the first super memory block SUPER BLOCK <0> as the victim block in the garbage collection and extract the data. The first time duration (TOTAL <0>) will be 90us.

그리고, 가비지 컬렉션에서 도 7b에 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)을 희생블록으로 선택하여 내부에 포함된 4개의 메모리 블록들(MEMORY BLOCK<001, 011, 101, 111>)에 포함된 4개의 유효 페이지로부터 데이터를 추출하기 위해 4개의 유효 페이지의 위치를 확인할 수 있다.In the garbage collection, the second super memory block SUPER BLOCK <1> illustrated in FIG. 7B is selected as a victim block and four memory blocks included therein (MEMORY BLOCK <001, 011, 101, 111>). In order to extract data from the four valid pages included in, the positions of the four valid pages may be checked.

확인결과, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 첫 번째 메모리 블록(BLOCK001)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK011)의 두 번재 및 세 번째 페이지(P<1, 2>), 및 네 번째 메모리 블록(BLOCK111)의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)인 것을 알 수 있다.As a result, the second super memory block (SUPER BLOCK <1>) has the first page (P <0>) of the first memory block (BLOCK001) and the second and third pages of the second memory block (BLOCK011). Notice that (P <1, 2>), and only the second page (P <1>) of the fourth memory block (BLOCK111) are valid pages (VAILD PAGE), and all remaining pages are invalid pages (INVALID PAGE). have.

확인결과에 따라, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 유효 페이지(VAILD PAGE)는 그 위치가 서로 다른 것도 있고 서로 같은 것도 있는 것을 알 수 있다. 또한, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 메모리 블록들(MEMORY BLOCK<001, 011, 101, 111>) 중 첫 번째 및 네 번째 메모리 블록(BLOCK<001, 111>) 각각은 1개씩의 유효 페이지를 포함하고, 두 번째 메모리 블록(BLOCK011)은 2개의 유효 페이지를 포함하며, 세 번째 메모리 블록(BLOCK101)은 유효 페이지를 포함하지 않는 것을 알 수 있다. 즉, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 메모리 블록들(MEMORY BLOCK<001, 011, 101, 111>) 각각의 유효 페이지 개수 중 가장 큰 개수는 2인 것을 알 수 있다. 이는, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 유효 페이지로부터 4개의 유효 데이터를 추출하기 위해서 두 번의 리드(FIRST_READ, SECOND_READ)를 수행해야 한다는 것을 의미한다.According to the result of the check, it can be seen that the four valid pages VAILD PAGE included in the second super memory block SUPER BLOCK <1> have different positions and the same positions. In addition, the first and fourth memory blocks BLOCK <001, 111> of the four memory blocks (MEMORY BLOCK <001, 011, 101, 111>) included in the second super memory block (SUPER BLOCK <1>). Note that each one includes one valid page, the second memory block BLOCK011 includes two valid pages, and the third memory block BLOCK101 does not include the valid pages. That is, the largest number of valid pages of each of the four memory blocks MEMORY BLOCK <001, 011, 101, and 111> included in the second super memory block SUPER BLOCK <1> is 2. have. This means that two reads FIRST_READ and SECOND_READ must be performed to extract four valid data from four valid pages included in the second super memory block SUPER BLOCK <1>.

따라서, 컨트롤러(130)는, 제0 시점(t0)에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 첫 번째 메모리 블록(BLOCK001)의 첫 번째 페이지(P<0>)와, 두 번째 내지 네 번째 메모리 블록(BLOCK<011, 101, 111>) 각각의 두 번째 페이지(P<1>)에 대해 첫 번째 리드(FIRST_READ)를 수행한다. 첫 번째 리드(FIRST_READ)를 통해 4개의 페이지 데이터(B001P0_VD, B011P1_VD, B101P1_IVD, B111P1_VD)를 4개의 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱한다. 이어서, 컨트롤러(130)는, 제1 시점(t1)에서 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P0_VD, B011P1_VD, B101P1_IVD, B111P1_VD) 중 3개의 유효 데이터(VALID DATA : B001P0_VD, B011P1_VD, B111P1_VD)만 선택하여 내부의 메모리(144)로 전송(DATA TRANSFER)한다. 물론, 컨트롤러(130)는, 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P0_VD, B011P1_VD, B101P1_IVD, B111P1_VD) 중 1개의 무효 데이터(INVALID DATA : B101P1_IVD)는, 내부의 메모리(144)로 전송하지 않고 폐기(discard)한다.Accordingly, the controller 130 and the first page P <0> of the first memory block BLOCK001 included in the second super memory block SUPER BLOCK <1> at the zeroth time point t0 are separated from each other. The first read FIRST_READ is performed on the second page P <1> of each of the first to fourth memory blocks BLOCK <011, 101, and 111>. Four page data B001P0_VD, B011P1_VD, B101P1_IVD, and B111P1_VD are cached in four page buffers PB <001, 011, 101, and 111 through the first read FIRST_READ. Subsequently, the controller 130 may output three of the four page data B001P0_VD, B011P1_VD, B101P1_IVD, and B111P1_VD cached to the page buffers PB <001, 011, 101, and 111> at the first time point t1. Only valid data (VALID DATA: B001P0_VD, B011P1_VD, B111P1_VD) is selected and transferred to the internal memory 144 (DATA TRANSFER). Of course, the controller 130 may include one invalid data INVALID DATA: B101P1_IVD among four page data B001P0_VD, B011P1_VD, B101P1_IVD, and B111P1_VD cached in the page buffers PB <001, 011, 101, and 111>. ) Is discarded without being transferred to the internal memory 144.

이렇게, 컨트롤러(130)는, 첫 번째 리드(FIRST_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 3개의 유효 페이지(VAILD PAGE : BLOCK001_P<0>, BLOCK011_P<1>, BLOCK111_P<1>)에 저장된 3개의 유효 데이터(VALID DATA : B001P0_VD, B011P1_VD, B111P1_VD)를 추출할 수 있다.Thus, the controller 130, through the first read (FIRST_READ), three valid pages (VAILD PAGE: BLOCK001_P <0>, BLOCK011_P <1>, included in the second super memory block (SUPER BLOCK <1>), Three valid data (VALID DATA: B001P0_VD, B011P1_VD, and B111P1_VD) stored in BLOCK111_P <1> may be extracted.

이어서, 컨트롤러(130)는, 제2 시점(t2)에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 메모리 블록(BLOCK<001, 011, 101, 111>) 각각의 세 번째 페이지(P<2>)에 대한 두 번째 리드(SECOND_READ)를 수행한다. 두 번째 리드(SECOND_READ)를 통해 4개의 페이지 데이터(B001P2_IVD, B011P2_VD, B101P2_IVD, B111P2_IVD)를 4개의 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱한다. 이어서, 컨트롤러(130)는, 제3 시점(t3)에서 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P2_IVD, B011P2_VD, B101P2_IVD, B111P2_IVD) 중 1개의 유효 데이터(VALID DATA : B011P2_VD)만 선택하여 내부의 메모리(144)로 전송(DATA TRANSFER)한다. 물론, 컨트롤러(130)는, 페이지 버퍼들(PB<001, 011, 101, 111>)에 캐싱된 4개의 페이지 데이터들(B001P2_IVD, B011P2_VD, B101P2_IVD, B111P2_IVD) 중 3개의 무효 데이터(INVALID DATA : B001P2_IVD, B101P2_IVD, B111P2_IVD)는, 내부의 메모리(144)로 전송하지 않고 폐기(discard)한다.Subsequently, the controller 130 performs a third operation on each of the four memory blocks BLOCK <001, 011, 101, and 111> included in the second super memory block SUPER BLOCK <1> at the second time point t2. Perform a second read (SECOND_READ) for page P <2>. Four page data B001P2_IVD, B011P2_VD, B101P2_IVD, and B111P2_IVD are cached in four page buffers PB <001, 011, 101, and 111> through the second read SECOND_READ. Subsequently, the controller 130 includes one of four page data B001P2_IVD, B011P2_VD, B101P2_IVD, and B111P2_IVD cached in the page buffers PB <001, 011, 101, and 111> at the third time point t3. Only valid data (VALID DATA: B011P2_VD) is selected and transferred to the internal memory 144 (DATA TRANSFER). Of course, the controller 130 may include three invalid data INVALID DATA: B001P2_IVD among the four page data B001P2_IVD, B011P2_VD, B101P2_IVD, and B111P2_IVD cached in the page buffers PB <001, 011, 101, and 111>. , B101P2_IVD and B111P2_IVD are discarded without being transferred to the internal memory 144.

이렇게, 컨트롤러(130)는, 두 번째 리드(SECOND_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 1개의 유효 페이지(VAILD PAGE : BLOCK011_P<2>)에 저장된 1개의 유효 데이터(VALID DATA : B011P2_VD)를 추출할 수 있다.In this way, the controller 130, through the second read (SECOND_READ), one valid page stored in one valid page (VAILD PAGE: BLOCK011_P <2>) included in the second super memory block (SUPER BLOCK <1>). You can extract the data (VALID DATA: B011P2_VD).

정리하면, 컨트롤러(130)는, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 유효 페이지(VAILD PAGE : BLOCK001_P<0>, BLOCK011_P<1>, BLOCK011_P<2>, BLOCK111_P<1>)에 저장된 4개의 유효 데이터(VALID DATA : B001P0_VD, B011P1_VD, B011P2_VD, B111P1_VD)를 모두 추출하기 위해 두 번의 리드(FIRST_READ, SECOND_READ)가 필요한 것을 알 수 있다.In summary, the controller 130 may include four valid pages (VAILD PAGE: BLOCK001_P <0>, BLOCK011_P <1>, BLOCK011_P <2>, and BLOCK111_P <1 included in the second super memory block SUPER BLOCK <1>). It can be seen that two reads (FIRST_READ, SECOND_READ) are required to extract all four valid data (VALID DATA: B001P0_VD, B011P1_VD, B011P2_VD, B111P1_VD) stored in the>).

여기서, 한 번의 리드(FIRST_READ or SECOND_READ)를 수행하는데 필요한 시간을 리드시간(tREAD)이라고 가정할 수 있다. 또한, 1개의 페이지 버퍼(PB<001> or PB<011> or PB<101> or PB<111>)에 저장된 1개의 페이지 데이터(B001P0_VD or B011P1_VD or B011P2_VD or B111P1_VD)를 내부의 메모리(144)로 전송하는데 필요한 시간을 전송시간(tTX)라고 가정할 수 있다. 이렇게 가정할 경우, 가비지 컬렉션에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)을 희생블록으로 선택하여 데이터를 추출하는데 필요한 두 번째 소요시간(TOTAL<1>)은, '{리드시간(tREAD) * 2} + {전송시간(tTX) * 4}'이 될 것이다. 예를 들어, 리드시간(tREAD)이 50us이고, 전송시간(tTX)이 10us라고 가정하면, 가비지 컬렉션에서 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)을 희생블록으로 선택하여 데이터를 추출하는데 필요한 두 번째 소요시간(TOTAL<1>)은, 140us가 될 것이다.Here, the time required to perform one read FIRST_READ or SECOND_READ may be assumed to be a read time tREAD. In addition, one page data (B001P0_VD or B011P1_VD or B011P2_VD or B111P1_VD) stored in one page buffer (PB <001> or PB <011> or PB <101> or PB <111>) is stored in the internal memory 144. The time required for transmission may be assumed to be a transmission time tTX. Assuming this, the second time required to extract data by selecting the second super memory block (SUPER BLOCK <1>) as the victim block in garbage collection is '{read time (tREAD)'. * 2} + {transmission time (tTX) * 4} '. For example, assuming that the read time tREAD is 50us and the transfer time tTX is 10us, the second super memory block SUPER BLOCK <1> is selected as a victim block in the garbage collection to extract data. The second time duration (TOTAL <1>) will be 140us.

정리하면, 도 7a에 예시된 것과 같이 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)과 도 7b에 예시된 것과 같이 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 각각 4개의 유효 페이지를 포함하므로, 유효 페이지의 개수를 기준으로 가비지 컬렉션을 위한 희생블록을 선택하는 방식하는 경우에는 동일한 조건인 것을 알 수 있다.In summary, the first super memory block SUPER BLOCK <0> as illustrated in FIG. 7A and the second super memory block SUPER BLOCK <1> as illustrated in FIG. 7B each have four valid pages. In this case, when the victim block for garbage collection is selected based on the number of valid pages, it can be seen that the same condition exists.

하지만, 가비지 컬렉션을 위해 도 7a 및 도 7b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 각각을 희생블록으로 선택하는 경우, 도 7a에 예시된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)으로부터 데이터를 추출하는데 필요한 첫 번째 소요시간(TOTAL<0>)은 90us인 반면, 도 7b에 예시된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)으로부터 데이터를 추출하는데 필요한 두 번째 소요시간(TOTAL<1>)은 140us로서 매우 큰 차이가 나는 것을 알 수 있다.However, when each of the super memory blocks SUPER BLOCK <0, 1> illustrated through FIGS. 7A and 7B is selected as a victim block for garbage collection, the first super memory block SUPER BLOCK illustrated in FIG. 7A is selected. The first time required to extract data from <0>) (TOTAL <0>) is 90us, while the second time required to extract data from the second super memory block (SUPER BLOCK <1>) illustrated in FIG. 7B. The time required (TOTAL <1>) is 140us, which shows a big difference.

즉, 컨트롤러(130)는, 가비지 컬렉션을 효과적으로 수행하기 위해서 도 7a 및 도 7b를 통해 예시된 슈퍼 메모리 블록들(SUPER BLOCK<0, 1>) 중 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)을 희생블록으로 선택하는 것이 바람직하다.That is, the controller 130 may perform the first super memory block SUPER BLOCK <0> of the super memory blocks SUPER BLOCK <0, 1> illustrated through FIGS. 7A and 7B to effectively perform garbage collection. It is preferable to select as the sacrificial block.

도 8은 도 7a 및 도 7b를 통해 설명된 본 발명의 제2 실시예에 따른 메모리 시스템에서 슈퍼 메모리 블록에 대한 가비지 컬렉션을 수행할 때, 희생블록을 선택하는 동작을 설명하기 위해 도시한 도면이다.FIG. 8 is a diagram illustrating an operation of selecting a victim block when garbage collection is performed on a super memory block in the memory system according to the second embodiment of the present invention described with reference to FIGS. 7A and 7B. .

도 8을 참조하면, 본 발명의 제2 실시예에 따른 메모리 시스템(110)은, 컨트롤러(130) 및 메모리 장치(150)를 포함한다.Referring to FIG. 8, the memory system 110 according to the second embodiment of the present invention includes a controller 130 and a memory device 150.

그리고, 컨트롤러(130)는, 가비지 컬렉션 제어부(196), 및 메모리(144)를 포함할 수 있다. 여기서, 가비지 컬렉션 제어부(196)의 일반적인 동작은 전술한 도 3을 통해 설명하였으므로, 여기에서는 더 자세히 설명하지 않도록 하겠다.The controller 130 may include a garbage collection control unit 196 and a memory 144. Here, since the general operation of the garbage collection control unit 196 has been described with reference to FIG. 3, it will not be described in detail here.

그리고, 도 4를 통해 설명한 바와 같이 메모리 장치(150)는, 다수의 메모리 블록들(MEMORY BLOCK<000, 001,...>)을 포함한다. 또한, 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 병렬리드가 가능한 N개의 메모리 블록을 설정된 조건에 따라 그룹화하여 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:N>)로 관리한다. 이때, N은 2이상의 자연수이며, 도 7a 및 도 7b에서는 N이 4인 것을 가정하고 있다. 여기에서는, 도 7a 및 도 7b를 통해 설명된 두 개의 슈퍼 메모리 블록(SUPER BLOCK<0, 1>)과 함께 프리(free) 상태인 하나의 슈퍼 메모리 블록(SUPER BLOCK<2>)이 메모리 장치(150)에 포함된 것을 가정한다. 물론, 도 8에 예시된 사항은 어디까지나 설명의 편의를 위해 간략화된 것이며, 실제는 얼마든지 다른 형태(더 많은 개수의 슈퍼 메모리 블록이 메모리 장치에 포함되는 것과 같은 형태)로 확장될 수 있다.As described with reference to FIG. 4, the memory device 150 includes a plurality of memory blocks MEMORY BLOCK <000, 001, ...>. In addition, the controller 130 may group N memory blocks capable of parallel reading among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 by grouping a plurality of memory blocks according to a set condition. Managed as super memory blocks (SUPER BLOCK <0: N>). At this time, N is a natural number of 2 or more, and it is assumed that N is 4 in FIGS. 7A and 7B. Here, together with the two super memory blocks SUPER BLOCK <0, 1> described with reference to FIGS. 7A and 7B, one super memory block SUPER BLOCK <2> in a free state is stored in the memory device ( Assume that it is included in 150). Of course, the matters illustrated in FIG. 8 are merely simplified for the sake of convenience of explanation, and in fact, may be extended to any other form (such as a larger number of super memory blocks are included in the memory device).

구체적으로, 컨트롤러(130)는, 내부에 포함된 가비지 컬렉션 제어부(196)를 통해 가비지 컬렉션을 위해 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>)로부터 유효 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 소요예측시간들(PRE_TOTAL<0, 1>)을 생성하고, 생성된 소요예측시간들(PRE_TOTAL<0, 1>)을 소요예측시간 테이블(600)로서 관리한다.In detail, the controller 130 may include the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 for garbage collection through the garbage collection control unit 196 included therein. Predictions (PRE_TOTAL <0, 1>), which calculates the required time when extracting valid data in superblock units, are generated, and the required prediction times (PRE_TOTAL <0, 1>) are generated. It manages as time table 600. FIG.

또한, 컨트롤러(130)는, 가비지 컬렉션 제어부(196)를 통해 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 각각의 유효 페이지 개수들(VPC<0:1>)을 슈퍼블록단위로 카운팅하고, 카운팅된 유효 페이지 개수들(VPC<0:1>)을 유효 페이지 개수 테이블(610)로서 관리한다.In addition, the controller 130 controls the number of valid pages VPC <0 of each of the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 through the garbage collection control unit 196. : 1> is counted in superblock units, and the counted valid page counts VPC <0: 1> are managed as the valid page count table 610.

좀 더 구체적으로, 컨트롤러(130)는, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각에 그룹화된 4개씩의 메모리 블록들(BLOCK<000, 010, 100, 110>, BLOCK<001, 011, 101, 111>) 각각의 유효 페이지 개수 중 가장 큰 개수(MB_CNT<0:1>)에 리드예측시간(PRE_tREAD)를 곱하여 제1 시간(FIRST_TIME<0:1>)을 계산(FIRST_TIME<0:1> = MB_CNT<0:1> * PRE_tREAD한다.More specifically, the controller 130 may include four memory blocks BLOCK <000, 010, 100, 110>, and BLOCK <grouped in each of the plurality of super memory blocks SUPER BLOCK <0: 1>. 001, 011, 101, and 111) calculates the first time (FIRST_TIME <0: 1>) by multiplying the largest number (MB_CNT <0: 1>) of the number of valid pages by the read prediction time (PRE_tREAD) (FIRST_TIME) <0: 1> = MB_CNT <0: 1> * PRE_tREAD.

또한, 컨트롤러(130)는, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 유효 페이지 개수(VPC<0:1>)에 전송예측시간(PRE_tTX)을 곱한 제2 시간(SECOND_TIME<0:1>)을 계산(SECOND_TIME<0:1> = VPC<0:1> * PRE_tTX)한다.Also, the controller 130 may multiply the number of valid pages VPC <0: 1> of each of the plurality of super memory blocks SUPERBLOCK <0: 1> by the transmission prediction time PRE_tTX, and the second time SECOND_TIME. <0: 1>) (SECOND_TIME <0: 1> = VPC <0: 1> * PRE_tTX).

또한, 컨트롤러(130)는, 제1 시간(FIRST_TIME<0:1>)과 제2 시간(SECOND_TIME<0:1>)을 더한 값을 계산(TOTAL<0:1> = FIRST_TIME<0:1> + SECOND_TIME<0:1>)하여 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 소요예측시간들(PRE_TOTAL<0, 1>)으로서 생성한다.In addition, the controller 130 calculates a value obtained by adding the first time FIRST_TIME <0: 1> and the second time SECOND_TIME <0: 1> (TOTAL <0: 1> = FIRST_TIME <0: 1>). + SECOND_TIME <0: 1>) to generate required prediction times PRE_TOTAL <0, 1> of each of the plurality of super memory blocks SUPER BLOCK <0: 1>.

예를 들어 설명하기 위해 도 8과 함께 도 7a를 함께 참조하면, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은, 첫 번째 메모리 블록(BLOCK000)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK010)의 세 번째 페이지(P<2>)와, 세 번째 및 네 번째 메모리 블록(BLOCK<100, 110>) 각각의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)인 것을 알 수 있다.For example, referring to FIG. 7 together with FIG. 8 to illustrate, the first super memory block SUPER BLOCK <0> may include the first page P <0> of the first memory block BLOCK000, Only the third page (P <2>) of the second memory block (BLOCK010) and the second page (P <1>) of each of the third and fourth memory blocks (BLOCK <100, 110>) are valid pages (VAILD). PAGE), and all remaining pages are invalid pages (INVALID PAGE).

따라서, 컨트롤러(130)는, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 첫 번째 유효 페이지 개수(VPC<0>)가 4인 것을 알 수 있다Accordingly, the controller 130 may know that the first valid page number VPC <0> included in the first super memory block SUPER BLOCK <0> is four.

또한, 컨트롤러(130)는, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 그룹화된 4개의 메모리 블록들(BLOCK<000, 010, 100, 110>) 각각이 1개씩의 유효 페이지를 포함하는 것을 알 수 있다. 즉, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>) 각각의 유효 페이지 개수 중 가장 큰 개수(MB_CNT<0>)는 1인 것을 알 수 있다. In addition, the controller 130 may include one valid page for each of the four memory blocks BLOCK <000, 010, 100, and 110> grouped in the first super memory block SUPER BLOCK <0>. It can be seen that. That is, the largest number of valid pages (MB_CNT <0>) of each of the four memory blocks (MEMORY BLOCK <000, 010, 100, 110>) included in the first super memory block SUPER BLOCK <0>. It can be seen that is 1.

따라서, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 제1 시간(FIRST_TIME<0>)은, '1 * PRE_tREAD'와 같은 계산을 통해 한 번의 리드예측시간(PRE_tREAD)에 대응하는 시간이 된다. 또한, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 제2 시간(SECOND_TIME<0>)은, '4 * PRE_tTX'와 같은 계산을 통해 네 번의 전송예측시간(PRE_tTX)에 대응하는 시간이 된다. 결론적으로, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)은, 한 번의 리드예측시간(PRE_tREAD)에 대응하는 첫 번째 제1 시간(FIRST_TIME<0>)과 네 번의 전송예측시간(PRE_tTX)에 대응하는 첫 번째 제2 시간(SECOND_TIME<0>)을 더한 시간이 된다.Therefore, the first first time FIRST_TIME <0> corresponding to the first super memory block SUPER BLOCK <0> corresponds to one read prediction time PRE_tREAD through a calculation such as '1 * PRE_tREAD'. It's time to do it. Also, the first second time SECOND_TIME <0> corresponding to the first super memory block SUPER BLOCK <0> corresponds to four transmission prediction times PRE_tTX through a calculation such as '4 * PRE_tTX'. It's time to do it. In conclusion, the first required prediction time PRE_TOTAL <0> corresponding to the first super memory block SUPER BLOCK <0> is the first first time FIRST_TIME <corresponding to one read prediction time PRE_tREAD. 0>) and the first second time (SECOND_TIME <0>) corresponding to four transmission prediction times PRE_tTX.

예컨대, 리드예측시간(PRE_tREAD)이 50us라고 가정하고, 전송예측시간(PRE_tTX)이 10us라고 가정하면, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)은, 50us의 첫 번째 제1 시간(FIRST_TIME<0>)과 40us의 첫 번째 제2 시간(SECOND_TIME<0>)을 더한 90us가 될 것이다.For example, assuming that the lead prediction time PRE_tREAD is 50us and the transmission prediction time PRE_tTX is 10us, the first required prediction time PRE_TOTAL <0 corresponding to the first super memory block SUPER BLOCK <0> is assumed. >) Will be 90us plus 50us first first time (FIRST_TIME <0>) plus 40us first second time (SECOND_TIME <0>).

마찬가지로, 예를 들어 설명하기 위해 도 8과 함께 도 7b를 함께 참조하면, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)은, 첫 번째 메모리 블록(BLOCK001)의 첫 번째 페이지(P<0>)와, 두 번째 메모리 블록(BLOCK011)의 두 번재 및 세 번째 페이지(P<1, 2>), 및 네 번째 메모리 블록(BLOCK111)의 두 번째 페이지(P<1>)만 유효 페이지(VAILD PAGE)이고, 나머지 모든 페이지들은 무효 페이지(INVALID PAGE)인 것을 알 수 있다.Similarly, referring to FIG. 7B together with FIG. 8 for an example, the second super memory block SUPER BLOCK <1> is the first page P <0> of the first memory block BLOCK001. Only the second and third pages (P <1, 2>) of the second memory block (BLOCK011) and the second page (P <1>) of the fourth memory block (BLOCK111) are valid pages (VAILD PAGE). It can be seen that all the remaining pages are invalid pages (INVALID PAGE).

따라서, 컨트롤러(130)는, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 두 번째 유효 페이지 개수(VPC<1>)가 4인 것을 알 수 있다.Accordingly, the controller 130 may know that the second valid page number VPC <1> included in the second super memory block SUPER BLOCK <1> is four.

또한, 컨트롤러(130)는, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 메모리 블록들(MEMORY BLOCK<001, 011, 101, 111>) 중 첫 번째 및 네 번째 메모리 블록(BLOCK<001, 111>) 각각은 1개씩의 유효 페이지를 포함하고, 두 번째 메모리 블록(BLOCK011)은 2개의 유효 페이지를 포함하며, 세 번째 메모리 블록(BLOCK101)은 유효 페이지를 포함하지 않는 것을 알 수 있다. 즉, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 4개의 메모리 블록들(MEMORY BLOCK<001, 011, 101, 111>) 각각의 유효 페이지 개수 중 가장 큰 개수(MB_CNT<1>)는 2인 것을 알 수 있다.In addition, the controller 130 may include the first and fourth memory blocks (MEMORY BLOCK <001, 011, 101, 111>) included in the second super memory block SUPER BLOCK <1>. BLOCK <001, 111>) each contains one valid page, the second memory block (BLOCK011) contains two valid pages, and the third memory block (BLOCK101) does not contain valid pages. Can be. That is, the largest number (MB_CNT <1>) of the number of valid pages of each of the four memory blocks (MEMORY BLOCK <001, 011, 101, 111>) included in the second super memory block (SUPER BLOCK <1>). It can be seen that is 2.

따라서, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 제1 시간(FIRST_TIME<1>)은, '2 * PRE_tREAD'와 같은 계산을 통해 두 번의 리드예측시간(PRE_tREAD)에 대응하는 시간이 된다. 또한, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 제2 시간(SECOND_TIME<1>)은, '4 * PRE_tTX'와 같은 계산을 통해 네 번의 전송예측시간(PRE_tTX)에 대응하는 시간이 된다. 결론적으로, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 소요예측시간(PRE_TOTAL<1>)은, 두 번의 리드예측시간(PRE_tREAD)에 대응하는 두 번째 제1 시간(FIRST_TIME<1>)과 네 번의 전송예측시간(PRE_tTX)에 대응하는 두 번째 제2 시간(SECOND_TIME<1>)을 더한 시간이 된다.Therefore, the second first time FIRST_TIME <1> corresponding to the second super memory block SUPER BLOCK <1> corresponds to two read prediction times PRE_tREAD through a calculation such as '2 * PRE_tREAD'. It's time to do it. In addition, the second second time SECOND_TIME <1> corresponding to the second super memory block SUPER BLOCK <1> corresponds to four transmission prediction times PRE_tTX through a calculation such as '4 * PRE_tTX'. It's time to do it. In conclusion, the second required prediction time PRE_TOTAL <1> corresponding to the second super memory block SUPER BLOCK <1> is the second first time FIRST_TIME <corresponding to the two read prediction times PRE_tREAD. 1>) and the second second time SECOND_TIME <1> corresponding to four transmission prediction times PRE_tTX.

예컨대, 리드예측시간(PRE_tREAD)이 50us라고 가정하고, 전송예측시간이 10us라고 가정하면, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 소요예측시간(PRE_TOTAL<1>)은, 100us의 두 번째 제1 시간(FIRST_TIME<1>)과 40us의 두 번째 제2 시간(SECOND_TIME<1>)을 더한 140us가 될 것이다.For example, assuming that the lead prediction time PRE_tREAD is 50us and the transmission prediction time is 10us, the second required prediction time PRE_TOTAL <1> corresponding to the second super memory block SUPER BLOCK <1> is , The second first time of 100us (FIRST_TIME <1>) and the second second time of 40us (SECOND_TIME <1>) will be 140us.

참고로, 컨트롤러(130)는, 메모리 장치(150)에 대한 리드예측시간(PRE_tREAD)과 전송예측시간(PRE_tTX)에 대한 정보를 설정하고 있을 수 있다. 즉, 설계자는 메모리 장치(150)의 종류나 상태에 따라 테스트를 통해 메모리 장치(150)에 대한 리드예측시간(PRE_tREAD)과 전송예측시간(PRE_tTX)을 미리 설정할 수 있다.For reference, the controller 130 may set information about the read prediction time PRE_tREAD and the transfer prediction time PRE_tTX for the memory device 150. That is, the designer may preset the read prediction time PRE_tREAD and the transfer prediction time PRE_tTX for the memory device 150 through a test according to the type or state of the memory device 150.

전술한 바와 같이, 컨트롤러(130)는, 가비지 컬렉션을 수행하기 이전에 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각에 대한 소요예측시간(PRE_TOTAL<0, 1>)을 예측연산할 수 있다.As described above, the controller 130 predicts the required prediction time PRE_TOTAL <0, 1> for each of the plurality of super memory blocks SUPER BLOCK <0: 1> before performing garbage collection. can do.

그리고, 컨트롤러(130)는, 내부에 포함된 가지비 컬렉션 제어부(196)를 통해 소요예측시간 테이블(600)에 포함된 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>)을 참조하여 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 어떤 메모리 블록을 가비지 컬렉션을 위해 희생블록으로 선택할지 결정할 수 있다.In addition, the controller 130 may estimate the required number of the super memory blocks SUPER BLOCK <0: 1> included in the required forecast time table 600 through the branch ratio collection control unit 196 included therein. Selecting a memory block among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 as a victim block for garbage collection by referring to the times PRE_TOTAL <0, 1>. You can decide if you want to.

이때, 컨트롤러(130)는, 소요예측시간 테이블(600)에 포함된 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>)을 참조하는 방식에는 다음과 같은 두 가지 방식이 있을 수 있으며, 어느 하나의 방식을 선택할 수 있다.At this time, the controller 130 refers to the required prediction times PRE_TOTAL <0, 1> for the plurality of super memory blocks SUPER BLOCK <0: 1> included in the required prediction time table 600. There may be two methods, and either method may be selected.

첫 번째 방식은, 컨트롤러(130)에서 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>) 중 상대적으로 가장 작은 값의 소요예측시간에 대응하는 슈퍼 메모리 블록에 그룹화된 N개의 메모리 블록들 중 적어도 하나 이상의 유효 페이지를 포함하는 메모리 블록을 희생블록으로 선택하는 방식이다.The first method is based on the predicted time of the relatively smallest required time among the predicted times PRE_TOTAL <0, 1> for the plurality of super memory blocks SUPER BLOCK <0: 1> in the controller 130. The memory block including at least one valid page among the N memory blocks grouped in the corresponding super memory block is selected as a victim block.

예컨대, 전술한 설명에서와 같이 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대한 소요예측시간(PRE_TOTAL<0>)은 90us이고, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대한 소요예측시간(PRE_TOTAL<1>)은 140us이므로, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대한 소요예측시간(PRE_TOTAL<0>)이 더 작다. 따라서, 컨트롤러(130)는, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 그룹화된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>) 중 적어도 하나 이상의 유효 페이지를 포함하는 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>)을 희생블록으로 선택한다.For example, as in the above description, the required prediction time PRE_TOTAL <0> for the first super memory block SUPER BLOCK <0> is 90us, and the requirement for the second super memory block SUPER BLOCK <1>. Since the prediction time PRE_TOTAL <1> is 140us, the required prediction time PRE_TOTAL <0> for the first super memory block SUPER BLOCK <0> is smaller. Accordingly, the controller 130 includes at least one valid page among four memory blocks MEMORY BLOCK <000, 010, 100, 110> grouped in the first super memory block SUPER BLOCK <0>. Four memory blocks (MEMORY BLOCK <000, 010, 100, 110>) are selected as victim blocks.

이렇게, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 메모리 블록들(MEMORY BLOCK<000, 010, 100, 110>)이 희생블록으로 선택되었기 때문에, 가비지 컬렉션이 수행되는 구간에서 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 4개의 유효 페이지는 컨트롤러(130) 내부의 메모리(144)로 전달되었다가, 타겟블록(target block)인 세 번째 슈퍼 메모리 블록(SUPER BLOCK<2>)에 저장될 것이다.In this way, since four memory blocks (MEMORY BLOCK <000, 010, 100, 110>) included in the first super memory block (SUPER BLOCK <0>) are selected as victim blocks, the garbage collection is performed. Four valid pages included in the first super memory block (SUPER BLOCK <0>) are transferred to the memory 144 in the controller 130, and then a third super memory block (SUPER BLOCK), which is a target block. <2>).

두 번째 방식은, 전술한 첫 번째 방식을 사용하기 전에 컨트롤러(130)에서 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각에 포함된 N개의 메모리 블록들 각각의 유효 페이지 개수를 모두 합친 개수(VPC<0:1>)가 '설정된 개수' 이하인 슈퍼 메모리 블록의 개수를 확인하는 방식이다. 즉, 컨트롤러(130)는, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 유효 페이지 개수(VPC<0:1>) 중 '설정된 개수' 이하인 슈퍼 메모리 블록이 '한 개'인 경우, 전술한 첫 번째 방식을 사용하지 않는다. 반면, 컨트롤러(130)는, 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각의 유효 페이지 개수(VPC<0:1>) 중 '설정된 개수' 이하인 슈퍼 메모리 블록이 '적어도 두 개 이상'인 경우, 전술한 첫 번째 방식을 사용한다.In the second method, before using the first method described above, the controller 130 checks the number of valid pages of each of the N memory blocks included in each of the plurality of super memory blocks SUPER BLOCK <0: 1>. This is a method of checking the number of super memory blocks whose combined number VPC <0: 1> is equal to or less than the set number. That is, the controller 130 may have one super memory block that is less than or equal to the set number of valid pages VPC <0: 1> of each of the plurality of super memory blocks SUPER BLOCK <0: 1>. , Do not use the first scheme described above. On the other hand, the controller 130 may have at least two super memory blocks that are less than or equal to the set number of valid pages VPC <0: 1> of each of the plurality of super memory blocks SUPER BLOCK <0: 1>. Above ', the first method described above is used.

예컨대, 전술한 설명에서와 다르게 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)의 유효 페이지 개수(VPC<0>)가 5이고, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)의 유효 페이지 개수(VPC<1>)가 1일 수 있다. 또한, 컨트롤러(130)는, '설정된 개수'를 2로 설정할 수 있다. 이와 같은 경우, 컨트롤러(130)는, 한 개의 슈퍼 메모리 블록, 즉, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)이 '설정된 개수'이하의 유효 페이지 개수를 갖는다는 것을 확인할 수 있다. 따라서, 컨트롤러(130)는, 전술한 첫 번째 방식을 사용하지 않고, '설정된 개수'이하의 유효 페이지 개수를 갖는 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 N개의 메모리 블록들 중 적어도 하나 이상의 유효 페이지를 포함하는 메모리 블록을 희생블록으로 선택한다.For example, unlike the above description, the number of valid pages VPC <0> of the first super memory block SUPER BLOCK <0> is 5 and the number of valid pages of the second super memory block SUPER BLOCK <1>. (VPC <1>) may be one. In addition, the controller 130 may set the 'set number' to two. In this case, the controller 130 may confirm that one super memory block, that is, the second super memory block SUPER BLOCK <1> has a valid number of pages less than or equal to the 'set number'. Accordingly, the controller 130 does not use the first method described above, but among the N memory blocks included in the second super memory block SUPER BLOCK <1> having a valid number of pages less than or equal to the 'set number'. A memory block including at least one valid page is selected as a victim block.

반면, 전술한 설명에서와 같이 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)의 유효 페이지 개수(VPC<0>)가 4이고, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)의 유효 페이지 개수(VPC<1>)도 4일 수 있다. 또한, 컨트롤러(130)는, '설정된 개수'를 2로 설정할 수 있다. 이와 같은 경우, 컨트롤러(130)는, 두 개의 슈퍼 메모리 블록, 즉, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>) 및 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)이 모두 '설정된 개수'이하의 유효 페이지 개수를 갖는다는 것을 확인할 수 있다. 따라서, 컨트롤러(130)는, 전술한 첫 번째 방식을 사용하여, 상대적으로 더 작은 소요예측시간(PRE_TOTAL<0>)을 갖는 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 N개의 메모리 블록들 중 적어도 하나 이상의 유효 페이지를 포함하는 메모리 블록을 희생블록으로 선택한다.On the other hand, as in the above description, the number of valid pages VPC <0> of the first super memory block SUPER BLOCK <0> is 4 and the number of valid pages of the second super memory block SUPER BLOCK <1>. (VPC <1>) may also be four. In addition, the controller 130 may set the 'set number' to two. In this case, the controller 130 may determine that two super memory blocks, that is, the first super memory block SUPER BLOCK <0> and the second super memory block SUPER BLOCK <1> are both less than or equal to the 'set number'. It can be confirmed that it has a valid page number of. Accordingly, the controller 130 uses the first method described above to make N memories included in the first super memory block SUPER BLOCK <0> having a relatively smaller required prediction time PRE_TOTAL <0>. A memory block including at least one valid page among the blocks is selected as the victim block.

한편, 전술한 설명과 같이 컨트롤러(130)는, 소요예측시간들(PRE_TOTAL<0, 1>)을 생성하고, 생성된 소요예측시간들(PRE_TOTAL<0, 1>)을 소요예측시간 테이블(600)로서 관리한다.On the other hand, as described above, the controller 130 generates the required prediction times PRE_TOTAL <0, 1> and generates the required prediction times PRE_TOTAL <0, 1>. I manage it as).

이때, 컨트롤러(130)는, 다음과 같은 두 가지 방식 중 어느 하나의 방식을 사용하여 소요예측시간들(PRE_TOTAL<0, 1>)을 업데이트(update)할 수 있다.In this case, the controller 130 may update the required prediction times PRE_TOTAL <0, 1> by using any one of the following two methods.

첫 번째 방식은, 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변되는 특정 메모리 블록이 발생할 때마다, 특정 메모리 블록이 그룹화된 슈퍼 메모리 블록의 소요예측시간을 업데이트할 수 있다.In the first method, the controller 130 may generate a specific memory block in which the number of valid pages is variable among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150. The required prediction time of the super memory block in which a specific memory block is grouped may be updated.

예컨대, 도 4 및 도 7a를 함께 참조하면, 첫 번째 포그라운드 동작 또는 백그라운드 동작에 따라 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)의 유효 페이지 개수가 가변될 수 있다. 이어서, 두 번째 포그라운드 동작 또는 백그라운드 동작의 수행에 따라 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 두 번째 메모리 블록(BLOCK001)의 유효 페이지 개수가 가변될 수 있다.For example, referring to FIG. 4 and FIG. 7A, according to the first foreground operation or the background operation, the number of valid pages of the first memory block BLOCK000 of the first plane PLANE00 of the first memory die DIE0 may be calculated. Can be variable. Subsequently, the number of valid pages of the second memory block BLOCK001 of the first plane PLANE00 of the first memory die DIE0 may vary according to the execution of the second foreground operation or the background operation.

이와 같은 경우, 컨트롤러(130)는, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)의 유효 페이지가 가변되는 것에 응답하여, 해당 메모리 블록(BLOCK000)이 그룹화된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)의 값을 다시 예측연산할 수 있다. 이어서, 컨트롤러(130)는, 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 두 번째 메모리 블록(BLOCK001)의 유효 페이지 개수가 가변되는 것에 응답하여, 해당 메모리 블록(BLOCK001)이 그룹화된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 소요예측시간(PRE_TOTAL<1>)의 값을 다시 예측연산할 수 있다.In this case, the controller 130 may respond to the change of the valid page of the first memory block BLOCK000 of the first plane PLANE00 of the first memory die DIE0, thereby causing the corresponding memory block BLOCK000 to be changed. The value of the first required prediction time PRE_TOTAL <0> corresponding to the grouped first super memory block SUPER BLOCK <0> may be predicted again. Subsequently, the controller 130 may group the corresponding memory block BLOCK001 in response to a change in the number of valid pages of the second memory block BLOCK001 of the first plane PLANE00 of the first memory die DIE0. The value of the second required prediction time PRE_TOTAL <1> corresponding to the second super memory block SUPER BLOCK <1> may be predicted again.

두 번째 방식은, 컨트롤러(130)는, '설정된 시점'마다 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변된 특정 메모리 블록이 존재하는지를 확인하고, 확인결과 유효 페이지의 개수가 가변된 특정 메모리 블록이 존재하는 경우, 특정 메모리 블록이 그룹화된 슈퍼 메모리 블록의 소요예측시간을 업데이트할 수 있다.In the second method, the controller 130 checks whether there is a specific memory block having a variable number of valid pages among the memory blocks MEMORY BLOCK <000, 001, ...> for each 'set time point'. As a result, when there is a specific memory block having a variable number of valid pages, the required prediction time of the super memory block in which the specific memory block is grouped may be updated.

예컨대, 도 4 및 도 7a를 함께 참조하면, 제1 설정된 시점(미도시)와 제2 설정된 시점(미도시) 사이에서 연속된 적어도 두 개의 포그라운드 동작 또는 백그라운드 동작이 수행되어 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)의 유효 페이지 개수 및 두 번째 메모리 블록(BLOCK001)의 유효 페이지 개수가 가변될 수 있다.For example, referring to FIGS. 4 and 7A, at least two foreground operations or background operations consecutive between a first set time point (not shown) and a second set time point (not shown) may be performed to perform a first memory die ( The number of valid pages of the first memory block BLOCK000 of the first plane PLANE00 of DIE0 and the number of valid pages of the second memory block BLOCK001 may vary.

이와 같은 경우, 컨트롤러(130)는, 제2 설정된 시점에서 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변된 메모리 블록이 존재하는지 여부를 확인하고, 확인결과에 따라 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000) 및 두 번째 메모리 블록(BLOCK001) 각각의 유효 페이지 개수가 가변하였다는 것을 알 수 있다. 따라서, 컨트롤러(130)는, 제2 설정된 시점에서 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 첫 번째 메모리 블록(BLOCK000)이 그룹화된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)의 값 및 첫 번째 메모리 다이(DIE0)의 첫 번째 플래인(PLANE00)의 두 번째 메모리 블록(BLOCK001)이 그룹화된 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 대응하는 두 번째 소요예측시간(PRE_TOTAL<1>)의 값을 동시에 다시 예측연산할 수 있다.In this case, the controller 130 checks whether or not a memory block having a variable number of valid pages among the memory blocks MEMORY BLOCK <000, 001, ...> exists at the second set time point, and confirms that there is. As a result, it can be seen that the number of valid pages of each of the first memory block BLOCK000 and the second memory block BLOCK001 of the first plane PLANE00 of the first memory die DIE0 varies. Accordingly, the controller 130 may include the first super memory block SUPER BLOCK <0> in which the first memory block BLOCK000 of the first plane PLANE00 of the first memory die DIE0 is grouped at the second set time point. Second super memory block (BLOCK001) grouped with the value of the first expected time (PRE_TOTAL <0>) and the second memory block (BLOCK001) of the first plane (PLANE00) of the first memory die (DIE0). The value of the second required prediction time PRE_TOTAL <1> corresponding to SUPER BLOCK <1>) may be simultaneously predicted again.

참고로, '설정된 시점'은, 설계자에 의해 미리 정의될 수 있는 시점으로서, 설정된 크기의 데이터가 라이트될 때마다 반복되는 시점 또는 특정동작의 수행이 완료될 때마다 반복되는 시점일 수 있다.For reference, the 'set time' may be predefined by the designer, and may be a time point that is repeated each time data of a set size is written or a time point that is repeated every time the execution of a specific operation is completed.

한편, 가비지 컬렉션이 수행되어 희생블록으로 선택된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 포함된 모든 유효 페이지가 컨트롤러(130) 내부의 메모리(144)로 전달되었다가, 타겟블록(target block)인 세 번째 슈퍼 메모리 블록(SUPER BLOCK<2>)으로 이동되면, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에는 더 이상 유효 페이지가 존재하지 않는 상태가 될 것이다. 따라서, 가비지 컬렉션 이후의 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)은 소거(erase)동작을 통해 프리(free) 슈퍼 메모리 블록이 되는 동작 이외에 무효(invalid)한 슈퍼 메모리 블록으로서 어떠한 동작에도 관여될 필요가 없다. 그런데, 컨트롤러(130)는, 가비지 컬렉션을 수행하기 이전에 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대한 첫 번째 소요예측시간(PRE_TOTAL<0>)을 생성하였기 때문에, 가비지 컬렉션을 수행한 이후에도 소요예측시간 테이블(600)에 그 값이 남아 있을 수 있다. 이렇게, 소요예측시간 테이블(600)에 남아있는 첫 번째 소요예측시간(PRE_TOTAL<0>)의 값으로 인해 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대해 알 수 없는 비정상적인 동작이 수행될 수 있다. 따라서, 컨트롤러(130)는, 희생블록으로 선택된 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대한 가비지 컬렉션이 수행된 이후에, 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대응하는 첫 번째 소요예측시간(PRE_TOTAL<0>)을 '예정값'으로 설정하여 첫 번째 슈퍼 메모리 블록(SUPER BLOCK<0>)에 대해 알 수 없는 비정상적인 동작이 수행되는 것을 방지한다.Meanwhile, garbage collection is performed so that all valid pages included in the first super memory block SUPER BLOCK <0> selected as the victim block are transferred to the memory 144 in the controller 130 and then the target block. If it is moved to the third super memory block (SUPER BLOCK <2>), the first super memory block (SUPER BLOCK <0>) will no longer have a valid page. Therefore, the first super memory block (SUPER BLOCK <0>) after garbage collection is an invalid super memory block in addition to the free super memory block through an erase operation. Need not be. However, since the controller 130 generates the first required time PRE_TOTAL <0> for the first super memory block SUPER BLOCK <0> before performing garbage collection, the controller 130 performs garbage collection. Thereafter, the value may remain in the required prediction time table 600. As such, an unknown abnormal operation may be performed on the first super memory block SUPER BLOCK <0> due to the value of the first predicted time PRE_TOTAL <0> remaining in the required time table 600. have. Therefore, after garbage collection is performed on the first super memory block SUPER BLOCK <0> selected as the victim block, the controller 130 corresponds to the first corresponding to the first super memory block SUPER BLOCK <0>. By setting the first expected time PRE_TOTAL <0> to 'scheduled value', an unknown abnormal operation on the first super memory block SUPER BLOCK <0> is prevented from being performed.

정리하면, 컨트롤러(130)는, 특정 슈퍼 메모리 블록이 희생블록으로 선택되어 가비지 컬렉션을 통해 내부의 유효 페이지가 모두 타겟 슈퍼 메모리 블록으로 이동한 경우, 특정 슈퍼 메모리 블록이 알 수 없는 잘못된 동작을 수행할 수 없도록 특정 슈퍼 메모리 블록에 대한 소요예측시간을 '예정값'으로 설정할 수 있다.In summary, when a specific super memory block is selected as a victim block and all valid pages inside the target super memory block are moved through garbage collection, the controller 130 performs an unknown wrong operation. The estimated time required for a specific super memory block can be set to 'scheduled value'.

한편, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 프리 메모리 블록의 개수가 충분히 많은 상태이면, 가비지 컬렉션을 수행할 확률이 높지 않다. 즉, 일반적으로 가비지 컬렉션은 메모리 장치(150)에 포함된 프리 메모리 블록의 개수가 '일정 개수' 이하로 줄어들 때 수행하는 동작이다.Meanwhile, if the number of free memory blocks among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 is sufficiently large, the probability of garbage collection is not high. That is, in general, garbage collection is an operation performed when the number of free memory blocks included in the memory device 150 decreases below a predetermined number.

따라서, 본 발명의 제2 실시예에 따른 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 프리 메모리 블록의 개수가 '제1 개수'이하인 구간에서 전술한 소요예측시간들(PRE_TOTAL<0, 1>)을 생성 및 관리한다. 물론, 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 프리 메모리 블록의 개수가 '제1 개수'보다 큰 '제2 개수' 이상인 구간에서 소요예측시간들(PRE_TOTAL<0, 1>)을 생성 및 관리하지 않는다.Accordingly, in the controller 130 according to the second exemplary embodiment, the number of free memory blocks among the memory blocks MEMORY BLOCK <000, 001,... The above-described required prediction times PRE_TOTAL <0, 1> are generated and managed in a section of 1 number 'or less. Of course, the controller 130 may include a 'second number' in which the number of free memory blocks among the memory blocks MEMORY BLOCK <000, 001, ...> included in the memory device 150 is greater than the 'first number'. 'It does not generate and manage required forecasting times PRE_TOTAL <0, 1> in the section above.

참고로, '제1 개수'는, 일반적인 가비지 컬렉션 동작의 트리거(trigger) 시점을 결정하기 위한 '일정 개수'와는 다르게 설정될 수 있다. 예컨대, '제1 개수'보다 '일정 개수'가 더 작을 수 있다.For reference, the first number may be set differently from the predetermined number for determining a trigger time of a general garbage collection operation. For example, the 'constant number' may be smaller than the 'first number'.

이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진자에게 있어 명백할 것이다.The present invention described above is not limited to the above-described embodiments and the accompanying drawings, and various substitutions, modifications, and changes are possible in the art without departing from the technical spirit of the present invention. It will be apparent to those of ordinary skill.

Claims (20)

다수의 메모리 셀(cell)들을 각각 포함하는 다수의 페이지(page)들과, 상기 페이지들을 각각 포함하는 다수의 블록(block)들과, 상기 블록들을 각각 포함하는 다수의 플래인(plane)들과, 상기 플래인들을 각각 포함하는 다수의 다이(die)들을 포함하고, 상기 블록들에서 출력되는 데이터를 페이지 단위로 캐싱(catching)하기 위한 페이지버퍼들을 포함하는 비휘발성 메모리 장치;
상기 블록들 중 병렬리드가 가능한 N개의 블록을 설정된 조건에 따라 그룹화하여 다수의 슈퍼블록들로서 관리하고, 가비지 컬렉션(garbage collection)을 위해 상기 블록들에서 유효(valid) 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 소요예측시간들을 생성하며, 상기 소요예측시간들을 참조하여 상기 블록들 중 상기 가비지 컬렉션을 위한 희생(victim)블록을 선택하는 컨트롤러
를 포함하며, N은 2이상의 자연수인 메모리 시스템.
A plurality of pages each including a plurality of memory cells, a plurality of blocks each including the pages, a plurality of planes each including the blocks, A non-volatile memory device including a plurality of dies each including the planes, and page buffers for caching data output from the blocks in units of pages;
N times of parallel blocks among the blocks can be grouped according to a set condition to be managed as a plurality of superblocks, and a time required for extracting valid data from the blocks for garbage collection. The controller generates prediction time required by the superblock unit, and selects a victim block for the garbage collection among the blocks by referring to the required prediction time.
Wherein N is a natural number of two or more.
제1항에 있어서,
상기 컨트롤러는,
상기 슈퍼블록들 중 제1 슈퍼블록에 그룹화된 N개의 블록 각각에서 동일한 위치의 페이지에 대해서만 병렬리드가 가능한 경우, N개의 블록 각각의 유효 페이지 개수를 모두 합한 제1 개수에서 제1 슈퍼블록에 그룹화된 N개의 블록에서 위치가 동일한 유효 페이지의 개수를 뺀 개수에 리드예측시간을 곱한 제1 시간과, 상기 제1 개수에 전송예측시간을 곱한 제2 시간을 계산한 뒤, 상기 제1 시간과 상기 제2 시간을 더하여 상기 제1 슈퍼블록에 대응하는 소요예측시간을 생성하며, 상기 제1 슈퍼블록에 적용한 소요예측시간의 생성방법을 상기 슈퍼블록들 각각에 적용하여 상기 소요예측시간들을 생성하고,
상기 리드예측시간은, 상기 블록들의 데이터를 상기 페이지버퍼들에 캐싱하는데 걸릴 것으로 예측하는 시간이고,
상기 전송예측시간은, 상기 페이지버퍼들에 캐싱된 데이터를 상기 컨트롤러로 전송하는데 걸릴 것으로 예측하는 시간인 메모리 시스템.
The method of claim 1,
The controller,
When parallel reading is possible only for pages of the same position in each of the N blocks grouped in the first superblock among the superblocks, grouping the first superblock into a first superblock in which the total number of valid pages of each of the N blocks is added together. A first time obtained by multiplying a lead prediction time by a number obtained by subtracting the number of valid pages having the same position in the N blocks, and a second time obtained by multiplying the transmission prediction time by the first number, and then the first time and the Generating a required prediction time corresponding to the first superblock by adding a second time, generating the required prediction times by applying a method of generating a required prediction time applied to the first super block to each of the superblocks,
The read prediction time is a time for predicting that it will take to cache the data of the blocks in the page buffers.
The transmission prediction time is a time for predicting that it takes to transmit data cached in the page buffers to the controller.
제1항에 있어서,
상기 컨트롤러는,
상기 슈퍼블록들 중 제2 슈퍼블록에 그룹화된 N개의 블록 각각에서 서로 다른 위치에 페이지에 대해서 병렬리드가 가능한 경우, N개의 블록 각각의 유효 페이지 개수 중 가장 큰 개수에 리드예측시간을 곱한 제3 시간과, N개의 블록 각각의 유효 페이지 개수를 모두 합한 개수에 전송예측시간을 곱한 제4 시간을 계산한 뒤, 상기 제3 시간과 상기 제4 시간을 더하여 상기 제2 슈퍼블록에 대응하는 소요예측시간을 생성하며, 상기 제2 슈퍼블록에 적용한 소요예측시간의 생성방법을 상기 슈퍼블록들 각각에 적용하여 상기 소요예측시간들을 생성하고,
상기 리드예측시간은, 상기 블록들의 데이터를 상기 페이지버퍼들에 캐싱하는데 걸릴 것으로 예측하는 시간이고,
상기 전송예측시간은, 상기 페이지버퍼들에 캐싱된 데이터를 상기 컨트롤러로 전송하는데 걸릴 것으로 예측하는 시간인 메모리 시스템.
The method of claim 1,
The controller,
When parallel reading is possible for pages at different positions in each of the N blocks grouped in the second superblock among the superblocks, a third value obtained by multiplying the lead prediction time by the largest number of valid pages of each of the N blocks After calculating the fourth time obtained by multiplying the transmission prediction time by the sum of the time and the number of valid pages of each of the N blocks, the required time corresponding to the second superblock is added by adding the third time and the fourth time. Generating time, generating the required prediction time by applying the method of generating the required prediction time applied to the second superblock to each of the superblocks,
The read prediction time is a time for predicting that it will take to cache the data of the blocks in the page buffers.
The transmission prediction time is a time for predicting that it takes to transmit data cached in the page buffers to the controller.
제1항에 있어서,
상기 컨트롤러는,
상기 블록들 중 유효 페이지의 개수가 가변되는 블록이 발생할 때마다, 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 메모리 시스템.
The method of claim 1,
The controller,
Each time a block having a variable number of valid pages occurs among the blocks, the memory system re-predicts a value of a required prediction time corresponding to a superblock in which the variable number of valid pages is grouped.
제1항에 있어서,
상기 컨트롤러는,
설정된 시점마다 상기 블록들 중 유효 페이지의 개수가 가변된 블록이 존재하는지 확인하고, 확인결과 존재하는 경우 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 메모리 시스템.
The method of claim 1,
The controller,
Check whether there is a variable variable number of valid pages among the blocks at each set time point, and if there is a result of the check, re-predict the required predicted time value corresponding to the superblock in which the variable number of valid pages is grouped. Memory system to operate on.
제1항에 있어서,
상기 컨트롤러는,
상기 소요예측시간들 중 상대적으로 가장 작은 값의 소요예측시간에 대응하는 슈퍼블록에 그룹화된 N개의 블록 중 적어도 하나 이상의 유효 페이지를 포함하는 블록을 상기 희생블록으로 선택하는 메모리 시스템.
The method of claim 1,
The controller,
And selecting a block including at least one valid page from among N blocks grouped in a superblock corresponding to a required prediction time having a relatively small value among the required prediction times as the victim block.
제1항에 있어서,
상기 컨트롤러는,
상기 슈퍼블록들 각각에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합친 개수가 설정된 개수 이하인 슈퍼블록이,
1개인 경우, 선택된 1개의 슈퍼블록에 그룹화된 N개의 블록을 상기 희생블록으로 선택하고,
적어도 두 개 이상인 경우, 적어도 두 개 이상의 슈퍼블록에 대응하는 적어도 두 개 이상의 소요예측시간의 값 중 상대적으로 가장 작은 값에 대응하는 슈퍼블록에 그룹화된 N개의 블록 중 적어도 하나 이상의 유효 페이지를 포함하는 블록을 상기 희생블록으로 선택하는 메모리 시스템.
The method of claim 1,
The controller,
A superblock having a number equal to or less than a set number of all the effective pages of each of the N blocks grouped in each of the superblocks,
In case of one, N blocks grouped in one selected superblock are selected as the victim blocks,
In the case of at least two or more, at least one or more valid pages of N blocks grouped in a superblock corresponding to a relatively smallest value among at least two or more required predictive time values corresponding to at least two or more superblocks. Selecting a block as the victim block.
제1항에 있어서,
상기 컨트롤러는,
상기 슈퍼블록들 중 제3 슈퍼블록에 그룹화된 N개의 블록이 상기 희생블록으로 선택되어 상기 가비지 컬렉션을 통해 모든 유효 데이터가 타겟블록(target block)으로 이동된 경우, 상기 제3 슈퍼블록에 대응하는 소요예측시간을 예정값으로 설정하는 메모리 시스템.
The method of claim 1,
The controller,
When N blocks grouped in a third superblock among the superblocks are selected as the victim blocks and all valid data is moved to a target block through the garbage collection, the corresponding blocks correspond to the third superblock. Memory system that sets the required forecast time to a predetermined value.
제1항에 있어서,
상기 컨트롤러는,
상기 블록들 중 프리(free)블록의 개수가,
제1 개수 이하인 구간에서 상기 소요예측시간들을 생성 및 관리하고,
상기 제1 개수보다 큰 제2 개수 이상인 구간에서 상기 소요예측시간들을 관리하지 않는 메모리 시스템.
The method of claim 1,
The controller,
The number of free blocks of the blocks,
Generating and managing the required prediction times in a section less than or equal to a first number;
The memory system does not manage the required prediction times in a section greater than or equal to the second number greater than the first number.
제1항에 있어서,
상기 다이들 중 제1 다이는 제1 채널(channel)에 연결되고, 상기 다이들 중 제2 다이는 제2 채널에 연결되며, 상기 제1 다이에 포함된 플래인들은 상기 제1 채널을 공유하는 다수의 제1 경로(way)에 연결되고, 상기 제2 다이에 포함된 플래인들은 상기 제2 채널을 공유하는 다수의 제2 경로에 연결되며,
상기 컨트롤러는,
상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제1 다이의 제2 플래인에 포함된 제2 블록을 그룹화하는 것, 및 상기 제2 다이의 제3 플래인에 포함된 제3 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 상기 설정된 조건에 포함시키거나, 또는
상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제2 다이의 제3 플래인에 포함된 제3 블록을 그룹화하는 것, 및 상기 제1 다이의 제2 플래인에 포함된 제2 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 상기 설정된 조건에 포함시키거나, 또는
상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제1 다이의 제2 플래인에 포함된 제2 블록과 상기 제2 다이의 제3 플래인에 포함된 제3 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 상기 설정된 조건에 포함시키는 메모리 시스템.
The method of claim 1,
A first die of the dies is connected to a first channel, a second die of the dies is connected to a second channel, and the planes included in the first die share the first channel. Are connected to a plurality of first paths, and the planes included in the second die are connected to a plurality of second paths sharing the second channel,
The controller,
Grouping a first block included in a first plane of the first die and a second block included in a second plane of the first die, and a first included in a third plane of the second die. Grouping the third block and the fourth block included in the fourth plane of the second die in the set condition, or
Grouping a first block included in a first plane of the first die and a third block included in a third plane of the second die, and a first contained in the second plane of the first die. Grouping the second block and the fourth block included in the fourth plane of the second die in the set condition, or
A first block included in a first plane of the first die, a second block included in a second plane of the first die, a third block included in a third plane of the second die, and the first block Grouping the fourth block included in the fourth plane of the two die into the set condition.
다수의 메모리 셀(cell)들을 각각 포함하는 다수의 페이지(page)들과, 상기 페이지들을 각각 포함하는 다수의 블록(block)들과, 상기 블록들을 각각 포함하는 다수의 플래인(plane)들과, 상기 플래인들을 각각 포함하는 다수의 다이(die)들을 포함하고, 상기 블록들에서 출력되는 데이터를 페이지 단위로 캐싱(catching)하기 위한 페이지버퍼들을 포함하는 비휘발성 메모리 장치를 포함하는 메모리 시스템의 동작방법에 있어서,
상기 블록들 중 병렬리드가 가능한 N개의 블록을 설정된 조건에 따라 그룹화하여 다수의 슈퍼블록들로서 관리하는 단계;
가비지 컬렉션(garbage collection)을 위해 상기 블록들에서 유효(valid) 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 소요예측시간들을 생성하는 생성단계; 및
상기 소요예측시간들을 참조하여 상기 블록들 중 상기 가비지 컬렉션을 위한 희생(victim)블록을 선택하는 선택단계
를 포함하며, N은 2이상의 자연수인 메모리 시스템의 동작방법.
A plurality of pages each including a plurality of memory cells, a plurality of blocks each including the pages, a plurality of planes each including the blocks, And a nonvolatile memory device including a plurality of dies each including the planes, and page buffers for caching data output from the blocks in units of pages. In the operation method,
Grouping N blocks capable of parallel reading among the blocks according to a set condition and managing the plurality of blocks as a plurality of superblocks;
A generation step of generating prediction time required by calculating a necessary time required to extract valid data from the blocks for garbage collection in a superblock unit; And
Selecting a victim block for the garbage collection among the blocks by referring to the required prediction times;
Including, N is a natural number of two or more operating method of the memory system.
제11항에 있어서,
상기 슈퍼블록들 중 제1 슈퍼블록에 그룹화된 N개의 블록 각각에서 동일한 위치의 페이지에 대해서만 병렬리드가 가능한 경우, 상기 생성단계는,
상기 제1 슈퍼블록에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합한 제1 개수에서 상기 제1 슈퍼블록에 그룹화된 N개의 블록에서 위치가 동일한 유효 페이지의 개수를 뺀 개수에 리드예측시간을 곱한 제1 시간을 계산하는 단계;
상기 제1 개수에 전송예측시간을 곱한 제2 시간을 계산하는 단계;
상기 제1 시간과 상기 제2 시간을 더하여 상기 제1 슈퍼블록에 대응하는 소요예측시간을 생성하는 단계; 및
상기 제1 슈퍼블록에 적용한 소요예측시간의 생성방법을 상기 슈퍼블록들 각각에 적용하여 상기 소요예측시간들을 생성하는 단계를 포함하며,
상기 리드예측시간은, 상기 블록들의 데이터를 상기 페이지버퍼들에 캐싱하는데 걸릴 것으로 예측하는 시간이고, 상기 전송예측시간은, 상기 페이지버퍼들에 캐싱된 데이터를 상기 컨트롤러로 전송하는데 걸릴 것으로 예측하는 시간인 메모리 시스템의 동작방법.
The method of claim 11,
When parallel reading is possible only for pages of the same position in each of N blocks grouped in a first superblock among the superblocks, the generating step may include:
The lead prediction time is obtained by subtracting the number of valid pages having the same position in the N blocks grouped in the first superblock from the first number of the total number of valid pages of the N blocks grouped in the first superblock. Calculating a multiplied first time;
Calculating a second time obtained by multiplying the first number by a transmission prediction time;
Generating a required prediction time corresponding to the first super block by adding the first time and the second time; And
Generating the required prediction times by applying the method of generating the required prediction time applied to the first superblock to each of the superblocks,
The read prediction time is a time for predicting that it will take to cache data of the blocks in the page buffers, and the transmission prediction time is a time for predicting that it will take to transmit the data cached in the page buffers to the controller. Operation method of in-memory system.
제11항에 있어서,
상기 슈퍼블록들 중 제2 슈퍼블록에 그룹화된 N개의 블록 각각에서 서로 다른 위치에 페이지에 대해서 병렬리드가 가능한 경우, 상기 생성단계는,
상기 제2 슈퍼블록에 그룹화된 N개의 블록 각각의 유효 페이지 개수 중 가장 큰 개수에 리드예측시간을 곱한 제3 시간을 계산하는 단계;
상기 제2 슈퍼블록에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합한 개수에 전송예측시간을 곱한 제4 시간을 계산하는 단계;
상기 제3 시간과 상기 제4 시간을 더하여 상기 제2 슈퍼블록에 대응하는 소요예측시간을 생성하는 단계; 및
상기 제2 슈퍼블록에 적용한 소요예측시간의 생성방법을 상기 슈퍼블록들 각각에 적용하여 상기 소요예측시간들을 생성하는 단계를 포함하며,
상기 리드예측시간은, 상기 블록들의 데이터를 상기 페이지버퍼들에 캐싱하는데 걸릴 것으로 예측하는 시간이고, 상기 전송예측시간은, 상기 페이지버퍼들에 캐싱된 데이터를 상기 컨트롤러로 전송하는데 걸릴 것으로 예측하는 시간인 메모리 시스템의 동작방법.
The method of claim 11,
When parallel reads are possible for pages at different positions in each of N blocks grouped in a second superblock among the superblocks, the generating step may include:
Calculating a third time obtained by multiplying a lead prediction time by a largest number of valid pages of each of the N blocks grouped in the second superblock;
Calculating a fourth time obtained by multiplying a transmission prediction time by a sum of the total number of valid pages of each of the N blocks grouped in the second superblock;
Generating a required prediction time corresponding to the second superblock by adding the third time and the fourth time; And
Generating the required prediction times by applying the method of generating the required prediction time applied to the second superblock to each of the superblocks,
The read prediction time is a time for predicting that it will take to cache data of the blocks in the page buffers, and the transmission prediction time is a time for predicting that it will take to transmit the data cached in the page buffers to the controller. Operation method of in-memory system.
제11항에 있어서,
상기 블록들 중 유효 페이지의 개수가 가변되는 블록이 발생할 때마다, 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 단계를 더 포함하는 메모리 시스템의 동작방법.
The method of claim 11,
Each time a block having a variable number of valid pages occurs among the blocks, the method further includes predicting and calculating a value of a required prediction time corresponding to the superblock in which the variable number of valid pages is grouped. How to operate.
제11항에 있어서,
설정된 시점마다 상기 블록들 중 유효 페이지의 개수가 가변된 블록이 존재하는지 확인하고, 확인결과 존재하는 경우 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 단계를 더 포함하는 메모리 시스템의 동작방법.
The method of claim 11,
Check whether there is a variable variable number of valid pages among the blocks at each set time point, and if there is a result of the check, re-predict the required predicted time value corresponding to the superblock in which the variable number of valid pages is grouped. And operating the memory system.
제11항에 있어서,
상기 선택단계는,
상기 소요예측시간들 중 상대적으로 가장 작은 값의 소요예측시간에 대응하는 슈퍼블록에 그룹화된 N개의 블록 중 적어도 하나 이상의 유효 페이지를 포함하는 블록을 상기 희생블록으로 선택하는 것을 특징으로 하는 메모리 시스템의 동작방법.
The method of claim 11,
The selection step,
Selecting a victim block including at least one valid page from among N blocks grouped in a superblock corresponding to a required prediction time having a relatively small value among the required prediction times as the victim block; How it works.
제11항에 있어서,
상기 선택단계는,
상기 슈퍼블록들 각각에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합친 개수가 설정된 개수 이하인 슈퍼블록이 1개인 경우, 선택된 1개의 슈퍼블록에 그룹화된 N개의 블록을 상기 희생블록으로 선택하는 단계; 및
상기 슈퍼블록들 각각에 그룹화된 N개의 블록 각각의 유효 페이지 개수를 모두 합친 개수가 설정된 개수 이하인 슈퍼블록이 적어도 두 개 이상인 경우, 적어도 두 개 이상의 슈퍼블록에 대응하는 적어도 두 개 이상의 소요예측시간의 값 중 상대적으로 가장 작은 값에 대응하는 슈퍼블록에 그룹화된 N개의 블록 중 적어도 하나 이상의 유효 페이지를 포함하는 블록을 상기 희생블록으로 선택하는 단계를 포함하는 메모리 시스템의 동작방법.
The method of claim 11,
The selection step,
When there is one superblock whose total number of valid pages of each of the N blocks grouped in each of the superblocks is equal to or less than a set number, selecting N blocks grouped into the selected superblock as the victim blocks ; And
In the case where at least two or more superblocks having the sum of the number of valid pages of each of the N blocks grouped to each of the superblocks are less than or equal to a set number, at least two or more required prediction times corresponding to at least two or more superblocks are determined. Selecting a block including at least one or more valid pages among N blocks grouped in a superblock corresponding to a relatively small value among values as the victim block.
제11항에 있어서,
상기 슈퍼블록들 중 제3 슈퍼블록에 그룹화된 N개의 블록이 상기 희생블록으로 선택되어 상기 가비지 컬렉션을 통해 모든 유효 데이터가 타겟블록(target block)으로 이동된 경우, 상기 제3 슈퍼블록에 대응하는 소요예측시간을 예정값으로 설정하는 단계를 더 포함하는 메모리 시스템의 동작방법.
The method of claim 11,
When N blocks grouped to a third superblock among the superblocks are selected as the victim blocks and all valid data is moved to a target block through the garbage collection, the corresponding blocks correspond to the third superblock. And setting the required prediction time to a predetermined value.
제11항에 있어서,
상기 생성단계는,
상기 블록들 중 프리(free)블록의 개수가 제1 개수 이하인 구간에서 상기 소요예측시간들을 생성 및 관리하는 단계; 및
상기 블록들 중 프리블록의 개수가 상기 제1 개수보다 큰 제2 개수 이상인 구간에서 상기 소요예측시간들을 관리하지 않는 단계를 포함하는 메모리 시스템의 동작방법.
The method of claim 11,
The generating step,
Generating and managing the required prediction times in a section in which the number of free blocks among the blocks is less than or equal to a first number; And
And managing the required prediction times in a section in which a number of free blocks among the blocks is greater than or equal to a second number greater than the first number.
제11항에 있어서,
상기 다이들 중 제1 다이는 제1 채널(channel)에 연결되고, 상기 다이들 중 제2 다이는 제2 채널에 연결되며, 상기 제1 다이에 포함된 플래인들은 상기 제1 채널을 공유하는 다수의 제1 경로(way)에 연결되고, 상기 제2 다이에 포함된 플래인들은 상기 제2 채널을 공유하는 다수의 제2 경로에 연결되며,
상기 설정된 조건은,
상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제1 다이의 제2 플래인에 포함된 제2 블록을 그룹화하는 것, 및 상기 제2 다이의 제3 플래인에 포함된 제3 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 포함하거나, 또는
상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제2 다이의 제3 플래인에 포함된 제3 블록을 그룹화하는 것, 및 상기 제1 다이의 제2 플래인에 포함된 제2 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 포함하거나, 또는
상기 제1 다이의 제1 플래인에 포함된 제1 블록과 상기 제1 다이의 제2 플래인에 포함된 제2 블록과 상기 제2 다이의 제3 플래인에 포함된 제3 블록과 상기 제2 다이의 제4 플래인에 포함된 제4 블록을 그룹화하는 것을 포함하는 메모리 시스템의 동작방법.
The method of claim 11,
A first die of the dies is connected to a first channel, a second die of the dies is connected to a second channel, and the planes included in the first die share the first channel. Are connected to a plurality of first paths, and the planes included in the second die are connected to a plurality of second paths sharing the second channel,
The set condition is,
Grouping a first block included in a first plane of the first die and a second block included in a second plane of the first die, and a first included in a third plane of the second die. Grouping three blocks and a fourth block included in the fourth plane of the second die, or
Grouping a first block included in a first plane of the first die and a third block included in a third plane of the second die, and a first contained in the second plane of the first die. Grouping two blocks and a fourth block included in the fourth plane of the second die, or
A first block included in a first plane of the first die, a second block included in a second plane of the first die, a third block included in a third plane of the second die, and the first block Grouping the fourth block included in the fourth plane of the two die.
KR1020180167583A 2018-07-31 2018-12-21 Apparatus and method for performing garbage collection to predicting required time KR20200014175A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/502,964 US11030094B2 (en) 2018-07-31 2019-07-03 Apparatus and method for performing garbage collection by predicting required time
CN201910695645.4A CN110781096B (en) 2018-07-31 2019-07-30 Apparatus and method for performing garbage collection by predicting demand time

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180089400 2018-07-31
KR20180089400 2018-07-31

Publications (1)

Publication Number Publication Date
KR20200014175A true KR20200014175A (en) 2020-02-10

Family

ID=69627401

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180167583A KR20200014175A (en) 2018-07-31 2018-12-21 Apparatus and method for performing garbage collection to predicting required time

Country Status (1)

Country Link
KR (1) KR20200014175A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449259B2 (en) 2020-09-25 2022-09-20 SK Hynix Inc. Memory controller and operating method thereof
US11494106B2 (en) 2020-08-18 2022-11-08 SK Hynix Inc. Memory controller and method of ordering sequential data and random data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494106B2 (en) 2020-08-18 2022-11-08 SK Hynix Inc. Memory controller and method of ordering sequential data and random data
US11449259B2 (en) 2020-09-25 2022-09-20 SK Hynix Inc. Memory controller and operating method thereof

Similar Documents

Publication Publication Date Title
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
US10860231B2 (en) Memory system for adjusting map segment based on pattern and operating method thereof
US11449418B2 (en) Controller and method for selecting victim block for wear leveling operation
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
KR20200068941A (en) Apparatus and method for controlling data stored in memory system
KR20160105624A (en) Data processing system and operating method thereof
KR20200019421A (en) Apparatus and method for checking valid data in block capable of large volume data in memory system
KR20210157537A (en) Memory system and operationg method thereof
US20200364157A1 (en) Apparatus and method for transmitting map data in memory system
US11422930B2 (en) Controller, memory system and data processing system
US20200334139A1 (en) Apparatus and method for processing different types of data in memory system
US8782345B2 (en) Sub-block accessible nonvolatile memory cache
KR20210012641A (en) Memory system, data processing system and method for operation the same
KR20200087487A (en) Apparatus and method for checking valid data in memory system
KR20200014175A (en) Apparatus and method for performing garbage collection to predicting required time
KR20210039185A (en) Apparatus and method for providing multi-stream operation in memory system
KR20210038096A (en) Memory system, data processing system and method for operation the same
KR20200119059A (en) Memory system and operating method thereof
US11657000B2 (en) Controller and memory system including the same
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
US11586382B2 (en) Memory system and data processing system for distributedly storing input data
US11275694B2 (en) Memory system and method of operating method thereof
US20220164119A1 (en) Controller, and memory system and data processing system including the same
KR20200125262A (en) Memory system, data processing system and method for operation the same
KR20210063814A (en) Apparatus and method for reading operation in memory system