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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage 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
Description
본 발명은 메모리 시스템에 관한 것으로서, 구체적으로 가비지 컬렉션을 지원하는 메모리 시스템 및 메모리 시스템의 동작방법에 관한 것이다.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
그리고, 호스트(102)는, 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함, 즉 유무선 전자 장치들을 포함한다.In addition, the
또한, 호스트(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
또한, 메모리 시스템(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
아울러, 메모리 시스템(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
그리고, 메모리 시스템(110)은, 호스트(102)에 의해서 액세스되는 데이터를 저장하는 메모리 장치(150), 및 메모리 장치(150)로의 데이터 저장을 제어하는 컨트롤러(130)를 포함한다.The
여기서, 컨트롤러(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
또한, 다른 일 예로, 메모리 시스템(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
한편, 메모리 시스템(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
그리고, 메모리 시스템(110)에서의 컨트롤러(130)는, 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어한다. 예컨대, 컨트롤러(130)는, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하며, 이를 위해 컨트롤러(130)는, 메모리 장치(150)의 리드, 라이트, 프로그램(program), 이레이즈(erase) 등의 동작을 제어한다.The
보다 구체적으로 설명하면, 컨트롤러(130)는, 호스트 인터페이스(HOST INTERFACE, 132), 프로세서(PROCESS, 134), 메모리 인터페이스(MEMORY INTERFACE, 142), 및 메모리(MEMORY, 144)를 포함한다.In more detail, the
또한, 호스트 인터페이스(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
또한, 메모리 인터페이스(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
아울러, 메모리(144)는, 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장한다. 보다 구체적으로 설명하면, 메모리(144)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해 필요한 데이터를 저장한다. 예컨대, 컨트롤러(130)가, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하는 동작, 및 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하는 동작을 위해 메모리 장치(150)의 리드, 라이트, 프로그램, 이레이즈(erase) 등의 동작을 제어할 때, 필요한 데이터를 저장한다.In addition, the
여기서, 메모리(144)는, 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 아울러, 메모리(144)는, 도 1에서 도시한 바와 같이, 컨트롤러(130)의 내부에 포함될 수 있다. 또한, 메모리(144)는, 도 1에서 도시된 것과 다르게 컨트롤러(130)의 외부에 존재할 수 있으며, 이와 같은 경우 별도의 메모리 인터페이스(미도시)를 통해 컨트롤러(130)로부터 데이터가 입출력되는 외부 휘발성 메모리로 구현될 수도 있다.Herein, the
또한, 메모리(144)는, 전술한 바와 같이, 호스트(102)와 메모리 장치(150) 간 데이터 라이트 및 리드 등의 동작을 수행하기 위해 필요한 데이터, 및 데이터 라이트 및 리드 등의 동작 수행 시의 데이터를 저장하며, 이러한 데이터 저장을 위해, 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.In addition, as described above, the
그리고, 프로세서(134)는, 메모리 시스템(110)의 전체적인 동작을 제어하며, 특히 호스트(102)로부터의 라이트 요청 또는 리드 요청에 응답하여, 메모리 장치(150)에 대한 프로그램 동작 또는 리드 동작을 제어한다. 여기서, 프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동한다. 또한, 프로세서(134)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.The
일 예로, 컨트롤러(130)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 호스트(102)로부터 요청된 동작을 메모리 장치(150)에서 수행, 다시 말해 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작을, 메모리 장치(150)와 수행한다. 여기서, 컨트롤러(130)는, 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작으로 포그라운드(foreground) 동작을 수행, 예컨대 라이트 커맨드에 해당하는 프로그램 동작, 리드 커맨드에 해당하는 리드 동작, 이레이즈 커맨드(erase command)에 해당하는 이레이즈 동작, 셋 커맨드(set command)로 셋 파라미터 커맨드(set parameter command) 또는 셋 픽쳐 커맨드(set feature command)에 해당하는 파라미터 셋 동작 등을 수행할 수 있다.For example, the
그리고, 컨트롤러(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
그리고, 컨트롤러(130)의 프로세서(134)에는, 메모리 장치(150)의 배드 관리를 수행하기 위한 구성요소(도시하지 않음)가 포함될 수 있다. 이때, 메모리 장치(150)의 배드 관리를 수행하기 위한 구성요소는, 메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)에서 배드 블록을 확인한 후, 확인된 배드 블록을 배드 처리하는 배드 블록 관리를 수행한다. 여기서, 배드 관리는, 메모리 장치(150)가 플래시 메모리, 예컨대 낸드 플래시 메모리일 경우, 낸드의 특성으로 인해 데이터 라이트, 예컨대 데이터 프로그램(program) 시에 프로그램 실패(program fail)가 발생할 수 있으며, 프로그램 실패가 발생한 메모리 블록을 배드(bad) 처리한 후, 프로그램 실패된 데이터를 새로운 메모리 블록에 라이트, 즉 프로그램하는 것을 의미한다.The
도 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
호스트 인터페이스(132)는 호스트(102)로부터 전달되는 명령, 데이터 등을 주고받기 위한 것이다. 예를 들어, 호스트 인터페이스(132)은 호스트(102)로부터 전달되는 명령, 데이터 등을 순차적으로 저장한 뒤, 저장된 순서에 따라 출력할 수 있는 명령큐(56), 명령큐(56)로부터 전달되는 명령, 데이터 등을 분류하거나 처리 순서를 조정할 수 있는 버퍼관리자(52), 및 버퍼관리자(52)로부터 전달된 명령, 데이터 등의 처리를 위한 이벤트를 순차적으로 전달하기 위한 이벤트큐(54)를 포함할 수 있다.The
호스트(102)로부터 명령, 데이터는 동일한 특성의 복수개가 연속적으로 전달될 수도 있고, 서로 다른 특성의 명령, 데이터가 뒤 섞여 전달될 수도 있다. 예를 들어, 데이터를 읽기 위한 명령어가 복수 개 전달되거나, 읽기 및 프로그램 명령이 교번적으로 전달될 수도 있다. 호스트 인터페이스(132)은 호스트(102)로부터 전달된 명령, 데이터 등을 명령큐(56)에 먼저 순차적으로 저장한다. 이후, 호스트(102)로부터 전달된 명령, 데이터 등의 특성에 따라 컨트롤러(130)가 어떠한 동작을 수행할 지를 예측할 수 있으며, 이를 근거로 명령, 데이터 등의 처리 순서나 우선 순위를 결정할 수도 있다. 또한, 호스트(102)로부터 전달된 명령, 데이터 등의 특성에 따라, 호스트 인터페이스(132) 내 버퍼관리자(52)는 명령, 데이터 등을 메모리 소자(144)에 저장할 지, 플래시 변환 계층(FTL)(40)으로 전달할 지도 결정할 수도 있다. 이벤트큐(54)는 호스트(102)로부터 전달된 명령, 데이터 등에 따라 메모리 시스템 혹은 컨트롤러(130)가 내부적으로 수행, 처리해야 하는 이벤트를 버퍼관리자(52)로부터 수신한 후, 수신된 순서대로 플래시 변환 계층(FTL)(40)에 전달할 수 있다.Commands and data from the
실시예에 따라, 플래시 변환 계층(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
예를 들면, 호스트 요구 관리자(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
여기서, 블록 관리자(48)는 호스트 요구 관리자(HRM, 46), 맵데이터 관리자(MM, 44), 및 상태 관리자(42)가 요청한 프로그램 요청을 메모리 장치(150)를 위한 프로그램 요청으로 변환하여 메모리 장치(150) 내 블록을 관리할 수 있다. 메모리 시스템(110, 도 1 참조)의 프로그램 혹은 쓰기 성능을 극대화하기 위해 블록 관리자(48)는 프로그램 요청을 수집하고 다중 평면 및 원샷 프로그램 작동에 대한 플래시 프로그램 요청을 메모리 인터페이스(142)으로 보낼 수 있다. 또한, 다중 채널 및 다중 방향 플래시 컨트롤러의 병렬 처리를 최대화하기 위해 여러 가지 뛰어난 플래시 프로그램 요청을 메모리 인터페이스(142)으로 전송할 수도 있다. Here, the
한편, 블록 관리자(48)는 유효 페이지 수에 따라 플래시 블록을 관리하고 여유 블록이 필요한 경우 유효한 페이지가 없는 블록을 선택 및 지우고, 가비지 컬렉션(garbage collection)이 필요한 경우 가장 적게 유효한 페이지를 포함하고 있는 블록을 선택할 수 있다. 블록 관리자(48)가 충분한 빈 블록을 가질 수 있도록, 상태 관리자(42)는 가비지 컬렉션을 수행하여 유효 데이터를 모아 빈 블록으로 이동시키고, 이동된 유효 데이터를 포함하고 있었던 블록들을 삭제할 수 있다. 블록 관리자(48)가 상태 관리자(42)에 대해 삭제될 블록에 대한 정보를 제공하면, 상태 관리자(42)는 먼저 삭제될 블록의 모든 플래시 페이지를 확인하여 각 페이지가 유효한지 여부를 확인할 수 있다. 예를 들어, 각 페이지의 유효성을 판단하기 위해, 상태 관리자(42)는 각 페이지의 스페어(Out Of Band, OOB) 영역에 기록된 논리 주소를 식별한 뒤, 페이지의 실제 주소와 맵 관리자(44)의 조회 요청에서 얻은 논리 주소에 매핑된 실제 주소를 비교할 수 있다. 상태 관리자(42)는 각 유효한 페이지에 대해 블록 관리자(48)에 프로그램 요청을 전송하고, 프로그램 작업이 완료되면 맵 관리자(44)의 갱신을 통해 매핑 테이블이 업데이트될 수 있다.On the other hand, the
맵 관리자(44)는 논리적-물리적 매핑 테이블을 관리하고, 호스트 요구 관리자(HRM, 46) 및 상태 관리자(42)에 의해 생성된 조회, 업데이트 등의 요청을 처리할 수 있다. 맵 관리자(44)는 전체 매핑 테이블을 플래시 메모리에 저장하고, 메몰시 소자(144) 용량에 따라 매핑 항목을 캐시할 수도 있다. 조회 및 업데이트 요청을 처리하는 동안 맵 캐시 미스가 발생하면, 맵 관리자(44)는 메모리 인터페이스(142)에 읽기 요청을 전송하여 메모리 장치(150)에 저장된 매핑 테이블을 로드(load)할 수 있다. 맵 관리자(44)의 더티 캐시 블록 수가 특정 임계 값을 초과하면 블록 관리자(48)에 프로그램 요청을 보내서 깨끗한 캐시 블록을 만들고 더티 맵 테이블이 메모리 장치(150)에 저장될 수 있다.The
한편, 가비지 컬렉션이 수행되는 경우, 상태 관리자(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
실시예에 따라, 도 2에서 설명하는 블록 관리자(48), 맵 관리자(44) 혹은 상태 관리자(42) 중 적어도 하나는 하기의 도 3에서 설명하는 가비지 컬렉션 제어부(196)를 포함할 수 있다.According to an embodiment, at least one of the
메모리 장치(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
여기서, 본 발명의 실시 예에서는, 설명의 편의를 위해, 메모리 장치(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
도 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
구체적으로, 컨트롤러(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
실시예에 따라, 컨트롤러(130)는 가비지 컬렉션 중 선별된 유효한 데이터를 프리 블록(40_2)에 프로그램하기 전까지 임시 저장하기 위해 내부 메모리(144)를 사용할 수 있다.According to an embodiment, the
가비지 컬렉션을 위해서, 컨트롤러(130)는 복수의 데이터 블록(40_1)에서 유효한 데이터와 유효하지 않은 데이터를 구분해야 한다. 각각의 데이터 블록(40_1)에 대응하는 유효 페이지 카운트(VPC)에 대한 정보는 각 데이터 블록(40_1)에 유효한 데이터 혹은 유효한 페이지의 양을 가리킬 뿐 어느 데이터 혹은 어느 페이지가 유효한 지를 알려주지 못한다. 따라서, 컨트롤러(130)는 유효 페이지 수 뿐만 아니라 맵데이터를 포함한 동작 정보를 이용하여 어느 데이터 혹은 어느 페이지가 유효한 지를 판단할 필요가 있다. 이 경우, 가비지 컬렉션을 위해 프리 블록(40_2)에 저장할 데이터를 용이하게 구분할 수 있어 가비지 컬렉션을 위해 소요되는 자원(예, 시간, 전력)을 줄일 수 있다.For garbage collection, the
메모리 장치(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
실시예에 따라, 하나의 블록을 몇 개의 단위 블록으로 구분할 지가 달라질 수 있다. 예를 들면, 메모리 장치(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
데이터 블록(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
구체적으로, 메모리 장치 내 데이터 블록(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
실시예에 따라, 가비지 컬렉션 제어부(196)는 특정 블록 내 복수의 단위 블록의 맵데이터 총합을 해당 블록의 페이지 수로 나눈 비율을 바탕으로, 해당 블록을 가비지 컬렉션의 대상 블록으로 지정할 지를 결정할 수 있다. 여기서 블록의 페이지 수는 메모리 장치(150)의 설계와 제조 과정에서 결정된 고정된 값으로, 하나의 블록에 저장 가능한 최대 유효 데이터의 양을 나타낼 수 있다. 특정 블록을 복수의 단위 블록으로 구분하고 각 단위 블록마다 맵데이터를 생성하는 경우, 해당 블록 내 복수의 단위 블록의 맵데이터의 총합은 해당 블록에 현재 유효한 데이터의 양을 나타낼 수 있다. 따라서, 하나의 블록 내 복수의 단위 블록의 맵데이터 총합을 해당 블록의 페이지 수로 나눈 비율을 바탕으로, 가비지 컬렉션 제어부(196)는 각 블록에 유효 데이터의 양을 인지할 수 있다. 전술한 비율이 낮을수록, 가비지 컬렉션 제어부(196)는 해당 블록을 가비지 컬렉션의 대상 블록으로 우선 지정할 수 있다. 또한, 전술한 비율이 기 설정된 범위에 속하는 가를 통해, 가비지 컬렉션 제어부(196)는 가비지 컬렉션의 대상 블록으로의 선정 여부를 결정할 수 있다.According to an exemplary embodiment, the garbage
전술한 실시예는 가비지 컬렉션을 위해서, 컨트롤러(130)는 복수의 데이터 블록(40_1)에서 유효한 데이터를 탐색해야 한다. 이때, 컨트롤러(30)는 메모리 장치(150) 내 모든 데이터 블록(40_1)에 대해 유효 데이터를 탐색하는 것이 아니라, 데이터 블록(40_1)의 기 설정된 범위에 한정하여 유효 데이터를 탐색할 수 있다. 이 경우, 가비지 컬렉션을 위해 프리 블록(40_2)에 저장할 데이터를 탐색하는 데 소요되는 자원(예, 시간, 전력)을 줄일 수 있다.In the above-described embodiment, for garbage collection, the
유효 페이지의 탐색은 가비지 컬렉션(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
메모리 장치(150)는, 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 포함한다.The
또한, 메모리 장치(150)는, 제0 채널(CH0)을 통해 데이터를 입/출력할 수 있는 첫 번째 메모리 다이(DIE0)과 제1 채널(CH1)을 통해 데이터를 입/출력할 수 있는 두 번째 메모리 다이(DIE1)을 포함한다. 이때, 제0 채널(CH0)과 제1 채널(CH1)은, 인터리빙(interleaving) 방식으로 데이터를 입/출력할 수 있다.In addition, the
또한, 첫 번째 메모리 다이(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
한편, 메모리 장치(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
이렇게, 컨트롤러(130)에서 다수의 메모리 블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 슈퍼 메모리 블록들로 구분하여 관리하는 방식은, 설계자의 선택에 따라 여러 가지 방식이 존재할 수 있는데, 여기에서는 세 가지 방식을 예시하도록 하겠다.Thus, in the
첫 번째 방식은, 컨트롤러(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
두 번째 방식은, 컨트롤러(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
세 번째 방식은, 컨트롤러(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
참고로, 슈퍼 메모리 블록에 포함되는 동시에 선택 가능한 메모리 블록들은, 인터리빙 방식, 예컨대, 채널 인터리빙(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
즉, 도 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
예컨대, 도 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
이렇게, 컨트롤러(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
여기서, 한 번의 리드(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
그리고, 가비지 컬렉션에서 도 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
이렇게, 컨트롤러(130)는, 첫 번째 리드(P<0>_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 1개의 유효 페이지(VAILD PAGE : BLOCK001_P<0>)에 저장된 1개의 유효 데이터(VALID DATA : B001P0_VD)를 추출할 수 있다.Thus, the
이어서, 컨트롤러(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
이렇게, 컨트롤러(130)는, 두 번째 리드(P<1>_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 1개의 유효 페이지(VAILD PAGE : BLOCK111_P<1>)에 저장된 1개의 유효 데이터(VALID DATA : B111P1_VD)를 추출할 수 있다.Thus, the
이어서, 컨트롤러(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
이렇게, 컨트롤러(130)는, 세 번째 리드(P<2>_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 1개의 유효 페이지(VAILD PAGE : BLOCK011_P<2>)에 저장된 1개의 유효 데이터(VALID DATA : B011P2_VD)를 추출할 수 있다.In this way, the
정리하면, 컨트롤러(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
여기서, 한 번의 리드(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
정리하면, 도 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
도 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
그리고, 컨트롤러(130)는, 가비지 컬렉션 제어부(196), 및 메모리(144)를 포함할 수 있다. 여기서, 가비지 컬렉션 제어부(196)의 일반적인 동작은 전술한 도 3을 통해 설명하였으므로, 여기에서는 더 자세히 설명하지 않도록 하겠다.The
그리고, 도 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
구체적으로, 컨트롤러(130)는, 내부에 포함된 가비지 컬렉션 제어부(196)를 통해 가비지 컬렉션을 위해 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>)로부터 유효 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 소요예측시간들(PRE_TOTAL<0, 1>)을 생성하고, 생성된 소요예측시간들(PRE_TOTAL<0, 1>)을 소요예측시간 테이블(600)로서 관리한다.In detail, the
또한, 컨트롤러(130)는, 가비지 컬렉션 제어부(196)를 통해 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 각각의 유효 페이지 개수들(VPC<0:1>)을 슈퍼블록단위로 카운팅하고, 카운팅된 유효 페이지 개수들(VPC<0:1>)을 유효 페이지 개수 테이블(610)로서 관리한다.In addition, the
좀 더 구체적으로, 컨트롤러(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
또한, 컨트롤러(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
또한, 컨트롤러(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
예를 들어 설명하기 위해 도 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
또한, 컨트롤러(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
따라서, 첫 번째 슈퍼 메모리 블록(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
또한, 컨트롤러(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
따라서, 두 번째 슈퍼 메모리 블록(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
전술한 바와 같이, 컨트롤러(130)는, 가비지 컬렉션을 수행하기 이전에 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각에 대한 소요예측시간(PRE_TOTAL<0, 1>)을 예측연산할 수 있다.As described above, the
그리고, 컨트롤러(130)는, 내부에 포함된 가지비 컬렉션 제어부(196)를 통해 소요예측시간 테이블(600)에 포함된 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>)을 참조하여 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 어떤 메모리 블록을 가비지 컬렉션을 위해 희생블록으로 선택할지 결정할 수 있다.In addition, the
이때, 컨트롤러(130)는, 소요예측시간 테이블(600)에 포함된 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>)을 참조하는 방식에는 다음과 같은 두 가지 방식이 있을 수 있으며, 어느 하나의 방식을 선택할 수 있다.At this time, the
첫 번째 방식은, 컨트롤러(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
예컨대, 전술한 설명에서와 같이 첫 번째 슈퍼 메모리 블록(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
이렇게, 첫 번째 슈퍼 메모리 블록(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
두 번째 방식은, 전술한 첫 번째 방식을 사용하기 전에 컨트롤러(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
예컨대, 전술한 설명에서와 다르게 첫 번째 슈퍼 메모리 블록(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
반면, 전술한 설명에서와 같이 첫 번째 슈퍼 메모리 블록(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
한편, 전술한 설명과 같이 컨트롤러(130)는, 소요예측시간들(PRE_TOTAL<0, 1>)을 생성하고, 생성된 소요예측시간들(PRE_TOTAL<0, 1>)을 소요예측시간 테이블(600)로서 관리한다.On the other hand, as described above, the
이때, 컨트롤러(130)는, 다음과 같은 두 가지 방식 중 어느 하나의 방식을 사용하여 소요예측시간들(PRE_TOTAL<0, 1>)을 업데이트(update)할 수 있다.In this case, the
첫 번째 방식은, 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변되는 특정 메모리 블록이 발생할 때마다, 특정 메모리 블록이 그룹화된 슈퍼 메모리 블록의 소요예측시간을 업데이트할 수 있다.In the first method, the
예컨대, 도 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
두 번째 방식은, 컨트롤러(130)는, '설정된 시점'마다 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변된 특정 메모리 블록이 존재하는지를 확인하고, 확인결과 유효 페이지의 개수가 가변된 특정 메모리 블록이 존재하는 경우, 특정 메모리 블록이 그룹화된 슈퍼 메모리 블록의 소요예측시간을 업데이트할 수 있다.In the second method, the
예컨대, 도 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
참고로, '설정된 시점'은, 설계자에 의해 미리 정의될 수 있는 시점으로서, 설정된 크기의 데이터가 라이트될 때마다 반복되는 시점 또는 특정동작의 수행이 완료될 때마다 반복되는 시점일 수 있다.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
정리하면, 컨트롤러(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
한편, 메모리 장치(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
따라서, 본 발명의 제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
참고로, '제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
즉, 도 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
예컨대, 도 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
이렇게, 컨트롤러(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
여기서, 한 번의 리드(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
그리고, 가비지 컬렉션에서 도 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
이렇게, 컨트롤러(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
이어서, 컨트롤러(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
이렇게, 컨트롤러(130)는, 두 번째 리드(SECOND_READ)를 통해, 두 번째 슈퍼 메모리 블록(SUPER BLOCK<1>)에 포함된 1개의 유효 페이지(VAILD PAGE : BLOCK011_P<2>)에 저장된 1개의 유효 데이터(VALID DATA : B011P2_VD)를 추출할 수 있다.In this way, the
정리하면, 컨트롤러(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
여기서, 한 번의 리드(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
정리하면, 도 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
도 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
그리고, 컨트롤러(130)는, 가비지 컬렉션 제어부(196), 및 메모리(144)를 포함할 수 있다. 여기서, 가비지 컬렉션 제어부(196)의 일반적인 동작은 전술한 도 3을 통해 설명하였으므로, 여기에서는 더 자세히 설명하지 않도록 하겠다.The
그리고, 도 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
구체적으로, 컨트롤러(130)는, 내부에 포함된 가비지 컬렉션 제어부(196)를 통해 가비지 컬렉션을 위해 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>)로부터 유효 데이터를 추출할 때 필요한 소요시간을 슈퍼블록단위로 예측연산한 소요예측시간들(PRE_TOTAL<0, 1>)을 생성하고, 생성된 소요예측시간들(PRE_TOTAL<0, 1>)을 소요예측시간 테이블(600)로서 관리한다.In detail, the
또한, 컨트롤러(130)는, 가비지 컬렉션 제어부(196)를 통해 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 각각의 유효 페이지 개수들(VPC<0:1>)을 슈퍼블록단위로 카운팅하고, 카운팅된 유효 페이지 개수들(VPC<0:1>)을 유효 페이지 개수 테이블(610)로서 관리한다.In addition, the
좀 더 구체적으로, 컨트롤러(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
또한, 컨트롤러(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
또한, 컨트롤러(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
예를 들어 설명하기 위해 도 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
또한, 컨트롤러(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
따라서, 첫 번째 슈퍼 메모리 블록(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
또한, 컨트롤러(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
따라서, 두 번째 슈퍼 메모리 블록(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
전술한 바와 같이, 컨트롤러(130)는, 가비지 컬렉션을 수행하기 이전에 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>) 각각에 대한 소요예측시간(PRE_TOTAL<0, 1>)을 예측연산할 수 있다.As described above, the
그리고, 컨트롤러(130)는, 내부에 포함된 가지비 컬렉션 제어부(196)를 통해 소요예측시간 테이블(600)에 포함된 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>)을 참조하여 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 어떤 메모리 블록을 가비지 컬렉션을 위해 희생블록으로 선택할지 결정할 수 있다.In addition, the
이때, 컨트롤러(130)는, 소요예측시간 테이블(600)에 포함된 다수의 슈퍼 메모리 블록들(SUPER BLOCK<0:1>)에 대한 소요예측시간들(PRE_TOTAL<0, 1>)을 참조하는 방식에는 다음과 같은 두 가지 방식이 있을 수 있으며, 어느 하나의 방식을 선택할 수 있다.At this time, the
첫 번째 방식은, 컨트롤러(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
예컨대, 전술한 설명에서와 같이 첫 번째 슈퍼 메모리 블록(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
이렇게, 첫 번째 슈퍼 메모리 블록(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
두 번째 방식은, 전술한 첫 번째 방식을 사용하기 전에 컨트롤러(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
예컨대, 전술한 설명에서와 다르게 첫 번째 슈퍼 메모리 블록(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
반면, 전술한 설명에서와 같이 첫 번째 슈퍼 메모리 블록(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
한편, 전술한 설명과 같이 컨트롤러(130)는, 소요예측시간들(PRE_TOTAL<0, 1>)을 생성하고, 생성된 소요예측시간들(PRE_TOTAL<0, 1>)을 소요예측시간 테이블(600)로서 관리한다.On the other hand, as described above, the
이때, 컨트롤러(130)는, 다음과 같은 두 가지 방식 중 어느 하나의 방식을 사용하여 소요예측시간들(PRE_TOTAL<0, 1>)을 업데이트(update)할 수 있다.In this case, the
첫 번째 방식은, 컨트롤러(130)는, 메모리 장치(150)에 포함된 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변되는 특정 메모리 블록이 발생할 때마다, 특정 메모리 블록이 그룹화된 슈퍼 메모리 블록의 소요예측시간을 업데이트할 수 있다.In the first method, the
예컨대, 도 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
두 번째 방식은, 컨트롤러(130)는, '설정된 시점'마다 메모리 블록들(MEMORY BLOCK<000, 001,...>) 중 유효 페이지의 개수가 가변된 특정 메모리 블록이 존재하는지를 확인하고, 확인결과 유효 페이지의 개수가 가변된 특정 메모리 블록이 존재하는 경우, 특정 메모리 블록이 그룹화된 슈퍼 메모리 블록의 소요예측시간을 업데이트할 수 있다.In the second method, the
예컨대, 도 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
참고로, '설정된 시점'은, 설계자에 의해 미리 정의될 수 있는 시점으로서, 설정된 크기의 데이터가 라이트될 때마다 반복되는 시점 또는 특정동작의 수행이 완료될 때마다 반복되는 시점일 수 있다.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
정리하면, 컨트롤러(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
한편, 메모리 장치(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
따라서, 본 발명의 제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
참고로, '제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)
상기 블록들 중 병렬리드가 가능한 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 슈퍼블록에 그룹화된 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.
상기 컨트롤러는,
상기 슈퍼블록들 중 제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.
상기 컨트롤러는,
상기 블록들 중 유효 페이지의 개수가 가변되는 블록이 발생할 때마다, 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 메모리 시스템.
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.
상기 컨트롤러는,
설정된 시점마다 상기 블록들 중 유효 페이지의 개수가 가변된 블록이 존재하는지 확인하고, 확인결과 존재하는 경우 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 메모리 시스템.
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.
상기 컨트롤러는,
상기 소요예측시간들 중 상대적으로 가장 작은 값의 소요예측시간에 대응하는 슈퍼블록에 그룹화된 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.
상기 컨트롤러는,
상기 슈퍼블록들 각각에 그룹화된 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.
상기 컨트롤러는,
상기 슈퍼블록들 중 제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.
상기 컨트롤러는,
상기 블록들 중 프리(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 채널(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.
상기 블록들 중 병렬리드가 가능한 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.
상기 슈퍼블록들 중 제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.
상기 슈퍼블록들 중 제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.
상기 블록들 중 유효 페이지의 개수가 가변되는 블록이 발생할 때마다, 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 단계를 더 포함하는 메모리 시스템의 동작방법.
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.
설정된 시점마다 상기 블록들 중 유효 페이지의 개수가 가변된 블록이 존재하는지 확인하고, 확인결과 존재하는 경우 유효 페이지의 개수가 가변된 블록이 그룹화된 슈퍼블록에 대응하는 소요예측시간의 값을 다시 예측연산하는 단계를 더 포함하는 메모리 시스템의 동작방법.
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.
상기 선택단계는,
상기 소요예측시간들 중 상대적으로 가장 작은 값의 소요예측시간에 대응하는 슈퍼블록에 그룹화된 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.
상기 선택단계는,
상기 슈퍼블록들 각각에 그룹화된 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.
상기 슈퍼블록들 중 제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.
상기 생성단계는,
상기 블록들 중 프리(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.
상기 다이들 중 제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.
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)
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 |
-
2018
- 2018-12-21 KR KR1020180167583A patent/KR20200014175A/en unknown
Cited By (2)
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 |