KR20200046743A - 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들 - Google Patents
예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들 Download PDFInfo
- Publication number
- KR20200046743A KR20200046743A KR1020180128313A KR20180128313A KR20200046743A KR 20200046743 A KR20200046743 A KR 20200046743A KR 1020180128313 A KR1020180128313 A KR 1020180128313A KR 20180128313 A KR20180128313 A KR 20180128313A KR 20200046743 A KR20200046743 A KR 20200046743A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- block
- valid pages
- garbage collection
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000015654 memory Effects 0.000 claims abstract description 359
- 238000003062 neural network model Methods 0.000 claims abstract description 75
- 230000007423 decrease Effects 0.000 claims abstract description 16
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 71
- 210000004027 cell Anatomy 0.000 description 52
- 238000007726 management method Methods 0.000 description 40
- 239000010410 layer Substances 0.000 description 39
- 210000002569 neuron Anatomy 0.000 description 25
- 230000004913 activation Effects 0.000 description 16
- 238000001994 activation Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 10
- 239000000758 substrate Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 4
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 3
- 101150064834 ssl1 gene Proteins 0.000 description 3
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 2
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 description 2
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 239000012535 impurity Substances 0.000 description 2
- 239000002210 silicon-based material Substances 0.000 description 2
- 101150062870 ssl3 gene Proteins 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101000641216 Aquareovirus G (isolate American grass carp/USA/PB01-155/-) Non-structural protein 4 Proteins 0.000 description 1
- 101100058961 Arabidopsis thaliana CALS2 gene Proteins 0.000 description 1
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 1
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 1
- 101000927946 Homo sapiens LisH domain-containing protein ARMC9 Proteins 0.000 description 1
- 102100036882 LisH domain-containing protein ARMC9 Human genes 0.000 description 1
- 101100287040 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ARG82 gene Proteins 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011810 insulating material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 229910052814 silicon oxide Inorganic materials 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 239000002344 surface layer Substances 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
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
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들이 개시된다. 스토리지 장치는 뉴럴 네트워크 모델을 이용하여 과거 시간 스텝들 및 현재 시간 스텝의 유효 페이지들 개수에 기초하여 미래 시간 스텝의 유효 페이지들 개수를 예측하고, 예측된 유효 페이지들의 개수에 기초하여 메모리 블록들 중 가비지 콜력션이 수행될 희생 블록을 선정한다. 예측된 유효 페이지들의 개수가 가장 작은 메모리 블록이 희생 블록으로 선정되거나, 예측된 유효 페이지들의 개수가 감소하는 경향을 갖는 메모리 블록은 희생 블록 선정에서 배제되거나, 예측된 유효 페이지들의 개수가 유지되는 메모리 블록이 희생 블록으로 선정된다.
Description
본 발명은 전자 장치에 관한 것으로서, 더욱 상세하게는 데이터를 저장하기 위한 스토리지 장치의 구성들 및 동작들에 관한 것이다.
다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 전자 회로들의 동작들에 따라 고유의 기능들을 제공한다. 전자 장치의 전자 회로는 단독으로 특정 기능을 수행하거나, 다른 전자 회로와 통신하면서 복합적인 기능을 수행한다.
스토리지 장치는 전자 장치들의 한 예이다. 스토리지 장치는 데이터를 저장하거나 출력하는 기능을 수행함으로써, 사용자에게 스토리지 서비스를 제공한다. 예로서, 스토리지 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 플래시 메모리 장치로 구현될 수 있다.
플래시 메모리 장치는 페이지 단위로 데이터를 기입 (또는 프로그램)하고, 메모리 블록 단위로 소거(erase) 동작을 수행한다. 플래시 메모리 장치는 이전에 프로그램된 메모리 셀들에 데이터를 기입할 경우, 이전에 프로그램된 메모리 셀들을 소거한 후에 데이터를 기입한다. 이러한 플래시 메모리 장치의 물리적 특성을 보완하기 위하여 다양한 메모리 블록 관리 기법들이 사용되고 있다.
플래시 메모리 장치를 제어하는 메모리 콘트롤러는 프리 블록을 확보하기 위하여 가비지 콜렉션(garbage collection)을 수행한다. 가비지 콜렉션은 희생 블록(Victim Block)의 유효 페이지들의 데이터를 읽는 동작, 읽은 데이터를 목적 블록(Destination Block)으로 이동 (또는 복사)하는 동작, 그리고 희생 블록을 소거하는 동작을 수행하여 프리 블록을 확보하는 동작을 말하는데, 이러한 가비지 콜렉션을 수행하는데 많은 시간이 소요된다. 가비지 콜렉션의 대상이 되는 희생 블록의 유효 페이지들 수가 많을수록 가비지 콜렉션의 효율이 떨어지고 플래시 메모리 장치의 성능이 저하되는 문제를 초래할 수 있다.
본 발명의 목적은 예측된 유효 페이지들 수를 이용하여 효율적으로 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들을 제공하는 데 있다.
본 발명의 실시예들에 따른
불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하는 메모리 콘트롤러를 포함하는 스토리지 장치의 동작 방법은, 불휘발성 메모리 장치에 데이터를 저장하도록 구성되는 메모리 블록들의 유효 페이지들의 개수를 기반으로 훈련되는 뉴럴 네트워크 모델을 이용하여 메모리 블록들의 유효 페이지들의 개수를 예측하는 단계, 메모리 블록들 각각의 예측된 유효 페이지들의 개수에 기초하여 메모리 블록들 중 가비지 콜력션이 수행될 희생 블록을 선정하는 단계, 그리고 희생 블록에 대하여 가비지 콜렉션을 수행하는 단계를 포함한다.
본 발명의 실시예들에 따른 스토리지 장치는, 데이터를 저장하도록 구성되는 메모리 블록들을 포함하는 불휘발성 메모리 장치, 그리고 메모리 블록들의 유효 페이지들의 개수를 기반으로 훈련되는 뉴럴 네트워크 모델을 이용하여 메모리 블록들의 유효 페이지들의 개수를 예측하고, 예측된 유효 페이지들의 개수에 기초하여 메모리 블록들 중 가비지 콜력션이 수행될 희생 블록을 선정하는 메모리 콘트롤러를 포함한다.
본 발명의 실시예들에 따른 불휘발성 메모리 장치는, 데이터를 저장하도록 구성되는 메모리 블록들을 포함하는 메모리 셀 어레이, 그리고 메모리 블록들의 유효 페이지들의 개수를 기반으로 훈련되는 뉴럴 네트워크 모델에서 제공되는 예측된 유효 페이지들의 개수에 기초하여 메모리 블록들 중에서 선정되는 희생 블록에 대하여 가비지 콜렉션이 수행되도록 제어하는 제어 로직 블락을 포함한다.
본 발명의 스토리지 장치는, 메모리 콘트롤러에서 뉴럴 네트워크 모델에서 예측한 유효 페이지들 수를 기반으로 가비지 콜렉션 코스트가 작은 희생 블록을 선정함으로써, 가비지 콜렉션 수행에서 복사되는 유효 페이지들 수를 줄여 스토리지 장치의 성능 저하를 방지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 장치에 포함되는 메모리 시스템을 나타내는 블록도이다.
도 2는 도 1의 메모리 콘트롤러를 설명하는 블록도이다.
도 3은 도 1의 메모리 장치를 설명하는 블록도이다.
도 4는 도 3의 제1 메모리 블록의 등가 회로도를 나타낸다.
도 5는 도 3의 제1 메모리 블록을 예시적으로 나타내는 사시도이다.
도 6은 도 2의 가비지 콜렉션 모듈을 설명하는 도면이다.
도 7a 및 도 7b는 도 6의 모델 입력 특성 관리 모듈에 수집된 정보를 보여주는 도면들이다.
도 8은 도 6의 뉴럴 네트워크 모델의 일 예를 설명하기 위한 도면이다.
도 9a 내지 도 9f는 도 8의 뉴럴 네크워크 모델의 동작을 개념적으로 설명하는 도면들이다.
도 10 및 도 11은 본 발명의 실시예에 따른 가비지 콜렉션 동작을 설명하는 플로우챠트들이다.
도 12는 도 10 및 도 11의 가비지 콜렉션 동작에 따라 가비지 콜렉션을 수행하는 과정들을 보여주는 도면이다.
도 13은 도 12의 가비지 콜렉션 동작의 비교예로서 설명되는 도면이다.
도 14는 본 발명의 실시예들에 따른 예측된 유효 페이지들 수를 기반으로 수행되는 가비지 콜렉션 동작을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
도 2는 도 1의 메모리 콘트롤러를 설명하는 블록도이다.
도 3은 도 1의 메모리 장치를 설명하는 블록도이다.
도 4는 도 3의 제1 메모리 블록의 등가 회로도를 나타낸다.
도 5는 도 3의 제1 메모리 블록을 예시적으로 나타내는 사시도이다.
도 6은 도 2의 가비지 콜렉션 모듈을 설명하는 도면이다.
도 7a 및 도 7b는 도 6의 모델 입력 특성 관리 모듈에 수집된 정보를 보여주는 도면들이다.
도 8은 도 6의 뉴럴 네트워크 모델의 일 예를 설명하기 위한 도면이다.
도 9a 내지 도 9f는 도 8의 뉴럴 네크워크 모델의 동작을 개념적으로 설명하는 도면들이다.
도 10 및 도 11은 본 발명의 실시예에 따른 가비지 콜렉션 동작을 설명하는 플로우챠트들이다.
도 12는 도 10 및 도 11의 가비지 콜렉션 동작에 따라 가비지 콜렉션을 수행하는 과정들을 보여주는 도면이다.
도 13은 도 12의 가비지 콜렉션 동작의 비교예로서 설명되는 도면이다.
도 14는 본 발명의 실시예들에 따른 예측된 유효 페이지들 수를 기반으로 수행되는 가비지 콜렉션 동작을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
도 1은 본 발명의 일 실시예에 따른 스토리지 장치에 포함되는 메모리 시스템을 나타내는 블록도이다. 메모리 시스템(100)은 메모리 콘트롤러(110) 및 메모리 장치(120)를 포함할 수 있다. 메모리 장치(120)는 데이터를 불휘발성하게 저장하는 불휘발성 메모리 장치일 수 있다. 예컨대, 메모리 장치(120)는 플래시 메모리 셀들을 포함하는 플래시 메모리 장치일 수 있다. 또는, 메모리 장치(120)는 저항성 메모리 셀들을 포함하는 ReRAM, MRAM 및 PRAM 등의 메모리 장치일 수 있다. 이하에서 본 발명의 실시예들이 설명됨에 있어서, 메모리 장치(120)가 낸드(NAND) 또는 노어(NOR) 플래시 메모리 셀들을 포함하는 플래시 메모리 장치인 것으로 가정된다.
메모리 콘트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적될 수 있다. 일부 실시예들에서, 메모리 시스템(100)은 스토리지 장치에 내장되는 내부 메모리로 구현될 수 있고, 예를 들어, 임베디드 UFS(Universal Flash Storage) 메모리 장치, eMMC(embedded Multi-Media Card), 또는 SSD(Solid State Drive) 일 수 있다. 일부 실시예들에서, 메모리 시스템(100)은 스토리지 장치에 착탈 가능한 외장 메모리로 구현될 수 있고, 예를 들어, UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick) 일 수 있다.
메모리 콘트롤러(110)는 호스트로부터의 데이터 억세스 요청(REQ)에 응답하여 메모리 장치(120)에 저장된 데이터를 독출하거나, 또는 메모리 장치(120)에 데이터를 기록하도록 메모리 장치(120)를 제어할 수 있다. 구체적으로, 메모리 콘트롤러(110)는 메모리 장치(120)에 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(120)에 대한 프로그램(program)(또는 기록), 독출(read) 및 소거(erase) 동작을 제어할 수 있다. 또한, 기록될 데이터(DATA)와 독출된 데이터(DATA)가 메모리 콘트롤러(110)와 메모리 장치(120) 사이에서 송수신될 수 있다.
메모리 콘트롤러(110)는 플래시 변환 레이어(FTL, 115)를 포함할 수 있다. FTL(115)은 메모리 장치(120)의 기록, 독출 및 소거 동작 등에 대한 관리를 수행하는 시스템 소프트웨어 (또는, 펌웨어)를 포함하고, 메모리 콘트롤러(110) 내 동작 메모리(220, 도 2)에 로딩될 수 있다. FTL(115)에 포함되는 펌웨어는 메모리 콘트롤러(110) 내에 구비되는 프로세싱 유닛(210, 도 2)에 의해 구동될 수 있다.
FTL(115)은 호스트로부터의 데이터 억세스 요청(REQ)에 따라, 논리적 어드레스를 물리적 어드레스로 변환하여 메모리 장치(120)로 제공할 수 있다. 또한, FTL(115)은 메모리 장치(120)에 구비되는 다양한 메모리 셀 영역들(예컨대, 칩 단위, 블록 단위 및 페이지 단위 등)에 대한 관리 동작을 수행하며, 예컨대 메모리 장치(120)에 구비되는 메모리 셀 어레이(122)의 다수의 블록들에 대한 가비지 콜렉션 및 배드 블록 관리 동작을 수행할 수 있다.
메모리 셀 어레이(122)는 복수의 메모리 셀들을 포함할 수 있는데, 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 이하에서는, 복수의 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 경우를 예로 하여 본 발명의 실시예들을 상술하기로 한다. 메모리 셀 어레이(122)는 복수의 낸드 스트링들을 포함하는 3차원 메모리 셀 어레이를 포함할 수 있으며, 이에 대해 도 4 및 도 5를 참조하여 상술하기로 한다.
3차원 메모리 셀 어레이는 실리콘 기판 위에 배치되는 활성 영역과, 메모리 셀들의 동작과 관련된 회로로서 상기 기판 상에 또는 상기 기판 내에 형성된 회로를 가지는 메모리 셀 어레이들의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식"은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. 본 발명의 기술적 사상에 의한 일 실시예에서, 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 낸드 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3차원 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들 간에 공유되어 있는 3차원 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
도 2는 도 1의 메모리 콘트롤러를 설명하는 블록도이다.
도 2를 참조하면, 메모리 콘트롤러(110)는 프로세싱 유닛(processing unit, 210), 동작 메모리(working memory, 220), 호스트 인터페이스(230), 메모리 인터페이스(240) 및 ROM(Read Only Memory, 250)을 포함할 수 있다. 프로세싱 유닛(210)은 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 메모리 콘트롤러(110)의 전반적인 동작을 제어할 수 있다. 프로세싱 유닛(210)은 메모리 콘트롤러(110)를 제어하기 위하여 동작 메모리(220)에 로딩된 펌웨어를 구동할 수 있다.
메모리 콘트롤러(110)는 외부의 호스트와 다양한 표준 인터페이스들을 통해 통신할 수 있으며, 호스트 인터페이스(230)는 호스트와 메모리 콘트롤러(110) 사이의 인터페이스를 제공한다. 상기 표준 인터페이스는, ATA(advanced technology attachment), SATA(serial ATA), e-SATA(external SATA), SCSI(small computer small interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi media card), eMMC(embedded multi media card), 유니버설 플래시 기억장치(UFS), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식들을 포함할 수 있다.
메모리 인터페이스(240)는 메모리 장치(120)에 대한 인터페이스를 제공할 수 있으며, 예컨대 기록 데이터 및 독출 데이터가 메모리 인터페이스(240)를 통해 메모리 장치(120)와 송수신될 수 있다. 메모리 인터페이스(240)는 커맨드(CMD), 어드레스(ADD) 및 제어 신호(CTRL)를 메모리 장치(120)로 제공할 수 있으며, 메모리 장치(120)로부터 각종 정보들을 수신하여 이를 메모리 콘트롤러(110) 내부로 제공할 수 있다.
ROM(250)은 메모리 시스템(100)이 채용된 스토리지 장치의 초기 부팅에 필요한 코드(code) 데이터를 저장할 수 있다. 동작 메모리(220)는 다양한 메모리로 구현될 수 있으며, 예컨대 캐시(cache) 메모리, DRAM, SRAM, PRAM, 플래시 메모리 장치들 중 적어도 하나로 구현될 수 있다.
메모리 콘트롤러(110)는 도 2에 도시된 것 이외에 다양한 구성들을 더 포함할 수 있으며, 예컨대 기록/독출에 따른 데이터를 임시적으로 저장하는 버퍼 메모리나, 버퍼 메모리를 제어하기 위한 버퍼 제어 모듈, 호스트로부터의 데이터 억세스 요청에 따른 메모리 동작을 제어하기 위한 커맨드를 생성하는 커맨드 생성 모듈 및 생성된 복수의 커맨드들을 저장하는 커맨드 큐(Queue) 등을 더 포함할 수 있다.
호스트의 데이터 관리 단위는 메모리 장치(120)의 데이터 관리 단위와 다를 수 있다. 예를 들어, 호스트는 섹터(sector) 단위를 기반으로 데이터를 쓰고 읽을 수 있는 반면에, 메모리 장치(120)는 페이지 단위를 기반으로 데이터를 쓰고 읽을 수 있다. 예시적으로, 페이지 단위는 섹터 단위 보다 클 수 있다. 버퍼 제어 모듈은 기록 동작 시 호스트로부터 수신된 섹터 단위의 데이터를 메모리 장치(120)에 기입될 수 있도록 페이지 단위로 묶어서 관리할 수 있다.
동작 메모리(220)에는 도 1에서 설명된 FTL(115)이 로딩될 수 있다. FTL(115)은 가비지 콜렉션을 수행하는 펌웨어(firmware)로서, 가비지 콜렉션 모듈(600)을 포함할 수 있다. 가비지 콜렉션 모듈(600)은 희생 블록의 유효 페이지를 목적 블록에 복사하고 희생 블록을 소거함으로써, 프리 블록을 확보할 수 있다. 가비지 콜렉션 모듈(600)은 펌웨어에 의해 구현되는 기능에 따라, 가비지 콜렉션 트리거 모듈(610), 가비지 콜렉션 관리 모듈(620), 희생 블록 선정 모듈(630) 그리고 모델 입력 특성 관리 모듈(640)을 포함할 수 있다. 가비지 콜렉션 모듈(600)은 도 6에서 구체적으로 설명될 것이다.
메모리 콘트롤러(110)는 가비지 콜렉션 모듈(600)을 이용하여 메모리 장치(120)의 가비지 콜렉션을 제어할 수 있다. 메모리 콘트롤러(110)는 메모리 장치(120)에 데이터를 저장하도록 구성되는 메모리 블록들(BLK1~BLKn, 도 3)의 유효 페이지들의 개수를 기반으로 훈련되는 뉴럴 네트워크 모델(800)을 이용하여, 메모리 블록들(BLK1~BLKn)의 유효 페이지들의 개수를 예측할 수 있다.
메모리 콘트롤러(110)는 메모리 블록들(BLK1~BLKn) 각각의 예측된 유효 페이지들의 개수에 기초하여 메모리 블록들(BLK1~BLKn) 중 가비지 콜력션이 수행될 희생 블록을 선정할 수 있다. 메모리 콘트롤러(110)는 메모리 블록들(BLK1~BLKn) 중에서 예측된 유효 페이지들의 개수가 가장 작은 메모리 블록을 희생 블록으로 선정할 수 있다. 메모리 콘트롤러(110)는 메모리 블록들(BLK1~BLKn) 중에서 예측된 유효 페이지들의 개수가 감소하는 경향을 갖는 메모리 블록을 희생 블록의 선정에서 배제시킬 수 있다. 메모리 콘트롤러(110)는 메모리 블록들(BLK1~BLKn) 중에서 예측된 유효 페이지들의 개수가 유지되는 메모리 블록을 희생 블록으로 선정할 수 있다.
메모리 콘트롤러(110)는 선정된 희생 블록의 유효 페이지들의 데이터를 목적 블록으로 복사하고 희생 블록을 소거하는 가비지 콜렉션이 수행되도록 제어할 수 있다.
도 3은 도 1의 메모리 장치를 설명하는 블록도이다.
도 3을 참조하면, 메모리 장치(120)는 메모리 셀 어레이(122), 어드레스 디코더(123), 제어 로직 블락(124), 페이지 버퍼부(125), 입출력 회로부(126) 그리고 전압 생성부(127)를 포함할 수 있다. 도시되지는 않았으나, 메모리 장치(120)는 입출력 인터페이스를 더 포함할 수 있다.
메모리 셀 어레이(122)는 워드 라인들(WL), 스트링 선택 라인들(SSL), 그라운드 선택 라인들(GSL) 및 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(122)는 워드 라인들(WL), 스트링 선택 라인들(SSL) 및 그라운드 선택 라인들(GSL)을 통해 어드레스 디코더(123)에 연결되고, 비트 라인들(BL)을 통해 페이지 버퍼부(125)에 연결될 수 있다. 메모리 셀 어레이(122)는 복수의 메모리 블록들(BLK1~BLKn)을 포함할 수 있다.
각 메모리 블록(BLK1~BLKn)은 복수의 메모리 셀들 및 복수의 선택 트랜지스터들을 포함할 수 있다. 메모리 셀들은 워드라인들(WL)에 연결되고, 선택 트랜지스터들은 스트링 선택 라인들(SSL) 또는 그라운드 선택 라인들(GSL)에 연결될 수 있다. 각 메모리 블록(BLK1~BLKn)의 메모리 셀들은 1-비트 데이터를 저장하는 싱글 레벨 셀들 또는 M(M은 2 또는 그 보다 큰 정수)-비트 데이터를 저장하는 멀티 레벨 셀들로 구성될 수 있다.
어드레스 디코더(123)는 메모리 셀 어레이(122)의 복수의 메모리 블록들(BLK1~BLKn) 중 하나를 선택할 수 있고, 선택된 메모리 블록의 워드라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다.
제어 로직 블락(124)은 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(122)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 각종 제어 신호를 출력할 수 있다. 제어 로직 블락(124)은 어드레스 디코더(123)에 로우 어드레스(X-ADDR)를 제공할 수 있고, 페이지 버퍼부(125)에 칼럼 어드레스(Y-ADDR)를 제공할 수 있고, 전압 생성부(127)에 전압 제어 신호(CTRL_Vol)를 제공할 수 있다.
제어 로직 블락(124)은, 메모리 콘트롤러(110)의 네트워크 모델(800)에서 예측된 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수에 기초하여 메모리 블록들(BLK1~BLKn) 중에서 선정되는 희생 블록에 대하여 가비지 콜렉션을 수행할 수 있다.
제어 로직 블락(124)은, 메모리 콘트롤러(110)에 의해 메모리 블록들(BLK1~BLKn) 중에서 예측된 유효 페이지들의 개수가 가장 작은 메모리 블록이 희생 블록으로 선정될 때, 해당되는 희생 블록의 유효 페이지들의 데이터를 목적 블록으로 복사하고 희생 블록을 소거하는 가비지 콜렉션을 수행할 수 있다.
제어 로직 블락(124)은, 메모리 콘트롤러(110)에 의해 메모리 블록들(BLK1~BLKn) 중에서 이전의 희생 블록 선정에서 배제된, 예측된 유효 페이지들의 개수가 감소하는 경향을 갖는 메모리 블록이 유효 페이지들의 개수가 0이 됨에 따라 희생 블록으로 선정될 때, 해당되는 희생 블록을 소거하는 가비지 콜렉션을 수행할 수 있다.
제어 로직 블락(124)은, 메모리 콘트롤러(110)에 의해 메모리 블록들(BLK1~BLKn) 중에서 예측된 유효 페이지들의 개수가 유지되는 메모리 블록이 희생 블록으로 선정될 때, 해당되는 희생 블록의 유효 페이지들의 데이터를 목적 블록으로 복사하고 희생 블록을 소거하는 가비지 콜렉션을 수행할 수 있다.
페이지 버퍼부(125)는 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 독출 동작시, 페이지 버퍼부(125)는 제어 로직 블락(124)의 제어에 따라 선택된 메모리 셀의 비트라인(BL)을 센싱할 수 있다. 센싱된 데이터는 페이지 버퍼부(125) 내부에 구비되는 래치들에 저장될 수 있다. 페이지 버퍼부(125)는 제어 로직 블락(124)의 제어에 따라 래치들에 저장된 데이터를 입출력 회로부(126)로 덤핑할 수 있다.
입출력 회로부(126)는 메모리 장치(120)의 외부로부터 입출력 라인(I/O)을 통해서 제공되는 명령어(CMD), 어드레스(ADDR), 제어 신호(CTRL) 및 데이터(DATA)를 일시 저장할 수 있다. 입출력 회로부(126)는 메모리 장치(120)의 읽기 데이터를 일시 저장하고, 지정된 시점에 입출력 라인(I/O)을 통해서 외부로 출력할 수 있다.
전압 생성부(127)는 전압 제어 신호(CTRL_Vol)를 기초로 하여 메모리 셀 어레이(122)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(127)는 워드 라인 전압(VWL), 예를 들어, 프로그램 전압, 독출 전압, 패스 전압, 소거 검증 전압 또는 프로그램 검증 전압 등을 생성할 수 있다. 또한, 전압 생성부(127)는 전압 제어 신호(CTRL_Vol)를 기초로 하여 스트링 선택 라인 전압 및 그라운드 선택 라인 전압을 생성할 수 있다. 또한, 전압 생성부(127)는 메모리 셀 어레이(122)에 제공할 소거 전압을 생성할 수 있다.
도 4는 도 3의 제1 메모리 블록(BLK1)의 등가 회로도를 나타낸다.
도 4를 참조하면, 제1 메모리 블록(BLK1)은 낸드 스트링들(NS11~NS33), 워드 라인들(WL1~WL8), 비트 라인들(BL1~BL3), 그라운드 선택 라인들(GSL1~ GSL3), 스트링 선택 라인들(SSL1~SSL3) 및 공통 소스 라인(CSL)을 포함할 수 있다. 각 낸드 스트링(예, NS11)은 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 스트링 선택 트랜지스터(SST)는 대응하는 스트링 선택 라인(SSL1)에 연결된다. 그라운드 선택 트랜지스터(GST)는 대응하는 그라운드 선택 라인(GSL1)에 연결된다. 스트링 선택 트랜지스터(SST)는 대응하는 비트 라인(BL1~BL3)에 연결되고, 그라운드 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결된다.
낸드 스트링들(NS11~NS33) 중에서 제1 행의 낸드 스트링들(NS11, NS12, NS13)은 제1 스트링 선택 라인(SSL1)에 공통으로 연결되며, 제1 플레인을 구성할 수 있다. 제2 행의 낸드 스트링들(NS21, NS22, NS23)은 제2 스트링 선택 라인(SSL2)에 공통으로 연결되며, 제2 플레인을 구성할 수 있다. 제3 행의 낸드 스트링들(NS31, NS32, NS33)은 제3 스트링 선택 라인(SSL3)에 공통으로 연결되며, 제3 플레인을 구성할 수 있다. 본 실시예에서, 제1 메모리 블록(BLK1)은 3개의 비트라인들(BL1~BL3)에 연결되는 3개의 플레인들을 보여준다.
복수의 메모리 셀들(MC)은 각각 대응하는 워드 라인(WL1~WL8)에 연결된다. 하나의 워드라인에 연결되고, 동시에 프로그램되는 메모리 셀들(MC)의 집합을 페이지라 부른다. 제1 메모리 블록(BLK1)은 복수의 페이지들로 구성될 수 있다. 실시예에 따라, 하나의 워드라인에는 복수의 페이지들이 연결될 수 있는데, 공통 소스 라인(CSL)으로부터 동일 높이의 워드라인(예를 들어, WL4)은 3개의 페이지에 공통으로 연결될 수 있다.
한편, 각각의 메모리 셀(MC)은 한 비트의 데이터 또는 두 비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장할 수 있는 메모리 셀은 싱글 레벨 셀(Single Level Cell: SLC) 또는 싱글 비트 셀이라 부른다. 하나의 메모리 셀에 두 비트 이상의 데이터를 저장할 수 있는 메모리 셀은 멀티 레벨 셀(Multi Level Cell: MLC)이라 부른다. 2 비트 MLC의 경우에는 하나의 물리적 페이지에 2개의 페이지 데이터가 저장될 수 있다. 예시적으로, WL4 워드라인에 연결된 메모리 셀에는 6개의 페이지 데이터가 저장될 수 있다.
제1 메모리 블록(BLK1) 내 낸드 스트링들의 행들 및 열들의 수는 증가 또는 감소할 수 있다. 낸드 스트링들의 행들의 수가 변경됨에 따라, 플레인들의 수가 변경될 수 있다. 낸드 스트링들의 열들의 수가 변경됨에 따라, 낸드 스트링들의 칼럼들에 연결되는 비트라인들의 수, 그리고 하나의 스트링 선택 라인에 연결되는 낸드 스트링들의 수 또한 변경될 수 있다. 낸드 스트링들의 높이는 증가 또는 감소될 수 있다. 예를 들어, 낸드 스트링들 각각에 적층되는 메모리 셀들의 수는 증가 또는 감소될 수 있다.
도 5는 도 3의 제1 메모리 블록(BLK1)을 예시적으로 나타내는 사시도이다.
도 5를 참조하면, 제1 메모리 블록(BLK1)은 기판(SUB)에 대해 수직 방향으로 형성되어 있다. 기판(SUB)은 제1 도전형(예를 들어, p 타입)을 가지며, 기판(SUB) 상에 제1 방향(y)을 따라 신장되고, 제2 도전형(예를 들어, n 타입)의 불순물들이 도핑된 공통 소스 라인(CSL)이 제공된다. 인접한 두 공통 소스 라인들(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향(y)을 따라 신장되는 절연막들(IL)이 제3 방향을 따라 순차적으로 제공되며, 절연막들(IL)은 제3 방향(z)을 따라 특정 거리만큼 이격된다. 인접한 두 공통 소스 라인들(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향(y)을 따라 순차적으로 배치되며, 제3 방향(z)을 따라 절연막들(IL)을 관통하는 필라들(pillars)(P)이 제공된다. 예를 들어, 필라들(P)은 절연막들(IL)을 관통하여 기판(SUB)과 컨택할 것이다. 구체적으로, 각 필라(P)의 표면층(surface layer)(S)은 제1 타입을 갖는 실리콘 물질을 포함할 수 있고, 채널 영역으로 기능할 수 있다. 한편, 각 필라(P)의 내부층(I)은 실리콘 산화물과 같은 절연 물질 또는 에어 갭(air gap)을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 절연막들(IL), 필라들(P) 및 기판(SUB)의 노출된 표면을 따라 전하 저장층(CS)이 제공된다. 전하 저장층(CS)은 터널링 절연층, 전하 트랩층 및 블로킹 절연층을 포함할 수 있다. 또한, 인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 전하 저장층(CS)의 노출된 표면 상에, 선택 라인들(GSL, SSL) 및 워드 라인들(WL1 내지 WL8)과 같은 게이트 전극(GE)이 제공된다. 복수의 필라들(P) 상에는 드레인 컨택들(DR)이 각각 제공된다. 예를 들어, 드레인 컨택들(DR)은 제2 도전형을 갖는 불순물들이 도핑된 실리콘 물질을 포함할 수 있다. 드레인들(DR) 상에, 제2 방향(x)으로 신장되고 제1 방향(y)을 따라 특정 거리만큼 이격되어 배치된 비트 라인들(BL1 내지 BL3)이 제공된다.
도 6은 도 2의 가비지 콜렉션 모듈(600)을 설명하는 도면이다.
도 6을 참조하면, 가비지 콜렉션 모듈(600)은 가비지 콜렉션 트리거 모듈(610), 가비지 콜렉션 관리 모듈(620), 희생 블록 선정 모듈(630) 그리고 모델 입력 특성 관리 모듈(640)을 포함할 수 있다.
가비지 콜렉션 트리거 모듈(610)은 메모리 장치(120)의 메모리 셀 어레이(122, 도 3)에 포함된 복수의 메모리 블록들(BLK1~BLKn) 중 프리 블록의 개수를 카운트할 수 있다. 가비지 콜렉션 트리거 모듈(610)은 하나 이상의 프리 블록을 확보해야 할 시점을 판단하고, 판단 결과에 따라 가비지 콜렉션 모드(GC Mode)로 진입할 수 있다. 가비지 콜렉션 트리거 모듈(610)은 프리 블록의 개수가 제1 가비지 콜렉션 임계값 (이하, 제1 GC 임계값이라 칭한다) 보다 적은 경우 가비지 콜렉션 관리 모듈(620)에게 가비지 콜렉션 모드(GC Mode)를 작동시킬 수 있다.
실시예에 따라, 가비지 콜렉션 모드 동안 메모리 장치(120)의 기록/독출 등 메모리 동작이 중단될 수 있으며, 가비지 콜렉션 트리거 모듈(610)은 이를 나타내는 정보를 호스트 인터페이스(230)를 통해 호스트로 제공할 수 있다.
가비지 콜렉션 모드에서, 가비지 콜렉션 관리 모듈(620)은 가비지 콜렉션을 수행할 대상이 되는 적어도 하나의 희생 블록을 선택할 수 있다. 가비지 콜렉션 관리 모듈(620)은 적어도 하나의 목적 블락 (예, 프리 블록)을 선택할 수 있다. 가비지 콜렉션 관리 모듈(620)은 희생 블록에 저장된 유효 페이지들의 데이터를 목적 블록에 복사하고 나서, 희생 블록을 소거할 수 있다. 가비지 콜렉션 관리 모듈(620)은 희생 블록 선정 모듈(630)에서 제공되는 복수의 메모리 블록들(BLK1~BLKn) 중 가비지 콜렉션 코스트가 작을 것이라고 예견되는(predict) 메모리 블록을 희생 블록으로 선택할 수 있다.
가비지 콜렉션 관리 모듈(620)은 하나 이상의 프리 블록을 확보하기 위하여, 목적 블록에 비해 더 많은 개수의 희생 블록들을 선택할 수 있다. 예컨대, 3 개의 희생 블록들과 2 개의 목적 블록들이 선택되고, 3 개의 희생 블록들에 저장된 유효 페이지들의 데이터가 2 개의 목적 블록들(예컨대, 프리 블록들)에 복사될 수 있다. 3 개의 희생 블록들의 유효 데이터가 모두 복사되고 난 후 3 개의 희생 블록들은 소거되며, 이에 따라 하나의 프리 블록이 더 확보될 수 있다.
가비지 콜렉션 관리 모듈(620)은 가비지 콜렉션 모드 동안 선택될 희생 블록을 희생 블록 선정 모듈(630)에게 요청할 수 있다. 희생 블록 선정 모듈(630)은 가비지 콜렉션 관리 모듈(620)의 요청에 응답하여 메모리 블록들(BLK1~BLKn) 중 가비지 콜렉션 코스트가 작은 메모리 블록을 예견할 수 있다. 가비지 콜렉션 관리 모듈(620)은 메모리 시스템(100, 도 1)의 내부 정보에 기초하여 가비지 콜렉션 코스트가 작은 메모리 블록을 예견할 수 있다. 메모리 시스템(100)의 내부 정보는 모델 입력 특성 관리 모듈(640)에서 제공될 수 있다.
희생 블록 선정 모듈(630)은 메모리 블록들(BLK1~BLKn) 중 가비지 콜렉션 코스트가 작은 메모리 블록을 예견하기 위하여, 뉴럴 네트워크 모델(Neural Network Model, 800)을 이용할 수 있다. 뉴럴 네트워크 모델(800)은 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))하거나, 수신되는 입력 데이터를 기초로 연산을 수행하고, 연산 수행 결과를 기초로 훈련 데이터를 생성하거나, 훈련 데이터에 대응하는 출력 데이터를 출력할 수 있다.
예시적으로, 뉴럴 네트워크 모델(800)에는 입력 데이터로서, 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수가 입력될 수 있다. 뉴럴 네트워크 모델(800)은 출력 데이터로서, 메모리 블록들(BLK1 내지 BLKn) 각각의 예측된 유효 페이지들의 개수를 출력할 수 있다. 뉴럴 네트워크 모델(800)은 도 8에서 구체적으로 설명될 것이다.
희생 블록 선정 모듈(630)은 뉴럴 네트워크 모델(800)에서 출력되는 메모리 블록들(BLK1 내지 BLKn) 각각의 예측된 유효 페이지들의 개수를 기반으로 가비지 콜렉션 코스트가 작은 메모리 블록을 예견할 수 있다. 희생 블록 선정 모듈(630)은 가비지 콜렉션 코스트가 작은 메모리 블록을 희생 블록으로서 가비지 콜렉션 관리 모듈(620)에게 알릴 수 있다.
희생 블록 선정 모듈(630)은 가비지 콜렉션 모드 동안 뉴럴 네트워크 모델(800)의 입력 데이터로 이용될 메모리 시스템(100)의 내부 정보를 모델 입력 특성 관리 모듈(640)에 요청할 수 있다. 모델 입력 특성 관리 모듈(640)은 메모리 시스템(100)의 내부 정보를 수집할 수 있다. 모델 입력 특성 관리 모듈(640)은 일정 시간 주기로 메모리 시스템(100), 예를 들어 SSD의 데이터 처리 (예컨대, 저장되거나 읽히거나 또는 수정(modify)되는) 동작에 따른 내부 정보를 수집할 수 있다.
모델 입력 특성 관리 모듈(640)은, 도 7a에 도시된 바와 같이, 메모리 장치(120)의 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수, SSD의 평균적인 초당 독출 데이터 처리량(READ IOPS Average), 평균적인 초당 기록 데이터 처리량(WRITE IOPS Average), 독출 요청의 평균적인 데이터 크기(READ IO Size Average), 기록 요청의 평균적인 데이터 크기(WRITE IO Size Average), 독출 처리량(READ Throughput), 기록 처리량(WRITE Throughput), 프리 블록 개수(Free Block Count) 등을 수집할 수 있다.
더욱이, 모델 입력 특성 관리 모듈(640)은, 도 7b에 도시된 바와 같이, 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수를 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t) 마다 저장할 수 있다. 즉, 모델 입력 특성 관리 모듈(640)은 일정 시간(t) 주기로 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수(VPC)를 저장할 수 있다.
모델 입력 특성 관리 모듈(640)은, 희생 블록 선정 모듈(630)의 요청에 응답하여 수집된 메모리 시스템(100)의 내부 정보를 뉴럴 네트워크 모델(800)의 입력 데이터로 제공할 수 있다.
도 8은 도 6의 뉴럴 네트워크 모델의 일 예를 설명하기 위한 도면이다.
도 8을 참조하면, 뉴럴 네트워크 모델(800)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가질 수 있다. 뉴럴 네트워크 모델(800)은 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다. 뉴럴 네트워크 모델(800)은 입력 데이터에 기반한 연산 수행을 통해 훈련될 수 있다. 뉴럴 네트워크 모델(800)의 훈련 시, 입력 데이터는 훈련용 데이터일 수 있다.
뉴럴 네트워크 모델(800)은 2개 이상의 히든 레이어들을 포함하는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-레이어 뉴럴 네트워크(n-layers neural networks)일 수 있다. 뉴럴 네트워크 모델(800)은 입력 레이어(2), 제1 및 제2 히든 레이어(3, 4) 및 출력 레이어(5)를 포함하는 DNN일 수 있다. DNN은 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나, 이에 제한되지 않는다.
뉴럴 네트워크 모델(800)이 DNN 구조를 갖는 경우 유효한 정보를 추출할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크 모델(800)은 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크 모델(800)은 4개의 레이어들(2, 3, 4, 5)을 포함하는 것으로 도시되었으나, 이는 예시에 불과할 뿐 뉴럴 네트워크 모델(800)은 더 적거나 많은 레이어들을 포함할 수 있다. 또한, 뉴럴 네트워크 모델(800)은 도 8에 도시된 것과는 다른 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크 모델(800)에 포함된 레이어들(2, 3, 4, 5) 각각은 복수의 뉴런(neuron)들을 포함할 수 있다. 뉴런은, 프로세싱 엘리먼트(Processing Element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 8에 도시된 바와 같이, 입력 레이어(2)는 2개의 뉴런들(노드들), 제1 및 제2 히든 레이어(3, 4) 각각은 3개의 뉴런들(노드들)을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크 모델(800)에 포함된 레이어들 각각은 다양한 개수의 뉴런들(노드들)을 포함할 수 있다.
뉴럴 네트워크 모델(800)에 포함된 레이어들 각각에 포함된 뉴런들은 서로 연결되어 데이터를 교환할 수 있다. 하나의 뉴런은 다른 뉴런들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 뉴런들로 출력할 수 있다.
뉴런들(노드들) 각각의 입력 및 출력은 입력 액티베이션(activation)및 출력 액티베이션으로 지칭될 수 있다. 즉, 액티베이션은 한 뉴런의 출력임과 동시에, 다음 레이어에 포함된 뉴런들의 입력에 해당되는 파라미터일 수 있다. 한편, 뉴런들 각각은 이전 레이어에 포함된 뉴런들로부터 수신된 액티베이션들 및 웨이트(weight)들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 뉴런에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 뉴런들 간의 연결관계에 할당되는 값일 수 있다.
뉴런들 각각은 입력을 수신하여 액티베이션을 출력하는 뉴럴 처리기(Neural processing unit)(또는 프로세싱 엘리먼트)에 의해 처리될 수 있고, 뉴런들 각각의 입력-출력은 매핑될 수 있다. 예를 들어, 는 활성화 함수(activation function)이고, 는 (i-1) 번째 레이어에 포함된 k 번째 뉴런으로부터 i 번째 레이어에 포함된 j 번째 뉴런으로의 웨이트 값일 수 있다. 는 i 번째 레이어에 포함된 j 번째 뉴런의 바이어스(bias)값이고, 는 i 번째 레이어의 j 번째 뉴런의 액티베이션, 다시 말해서 포스트 액티베이션(post activation)으로 지칭될 수 있다. 포스트 액티베이션 는 다음의 [수학식 1]을 이용하여 계산될 수 있다.
도 8에 도시된 바와 같이, 제1 히든 레이어(3)의 첫 번째 뉴런의 포스트 액티베이션은 로 표현될 수 있다. 또한, 은 [수학식 1]에 따라 의 값을 가질 수 있다. 다시 말해서, 포스트 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 합(sum)에 활성화 함수를 적용하여 획득된 값일 수 있다. 다만, [수학식 1]은 뉴럴 네트워크에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다.
전술한 바와 같이, 뉴럴 네트워크 모델(800)에서는 수많은 데이터 집합들이 상호 연결된 복수의 뉴런들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 한편, 이러한 연산 수행을 통해 뉴럴 네트워크 모델(800)은 훈련되고, 이에 기반하여 웨이트들 및 바이어스들이 최적화될 수 있다.
본 실시예에서 뉴럴 네트워크 모델(800)은, 입력 레이어(2)의 입력 데이터(I1, I2)로서 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 메모리 블록들(BLK1 내지 BLKn) 각각의 유효 페이지들의 개수를 입력할 수 있다. 뉴럴 네트워크 모델(800)은 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 메모리 블록들(BLK1 내지 BLKn) 각각의 유효 페이지들의 개수에 기반하여 연산을 수행하고, 연산 수행을 통해 훈련 데이터가 생성되고, 훈련 데이터에 대응하는 출력 데이터를 출력할 수 있다. 뉴럴 네트워크 모델(800)의 출력 데이터는 미래 시간 스텝(t+1)에서의 메모리 블록들(BLK1 내지 BLKn) 각각의 예측된 유효 페이지들의 개수를 나타낼 수 있다.
뉴럴 네트워크 모델(800)은 각 뉴런의 파라미터들, 예를 들어 웨이트들, 바이어스들 등 뉴럴 네트워크 연산에 기반이 되는 다양한 종류의 데이터를 포함할 수 있다. 뉴럴 네트워크 모델(800)의 훈련이 반복 진행됨에 따라, 뉴럴 네트워크 모델(800)은 주어진 입력인 메모리 블록들(BLK1 내지 BLKn) 각각의 유효 페이지들의 개수에 대해 보다 정확한 출력으로 메모리 블록들(BLK1 내지 BLKn) 각각의 예측된 유효 페이지들의 개수를 연산하기 위해, 파라미터들이 제공될 수 있다.
실시예에 따라, 뉴럴 네트워크 모델(800)의 파라미터들에는 메모리 시스템(100)의 데이터 처리 동작들을 나타내는 파라미터들, 예컨대 SSD의 평균적인 초당 독출 데이터 처리량(READ IOPS Average), 평균적인 초당 기록 데이터 처리량(WRITE IOPS Average), 독출 요청의 평균적인 데이터 크기(READ IO Size Average), 기록 요청의 평균적인 데이터 크기(WRITE IO Size Average), 독출 처리량(READ Throughput), 기록 처리량(WRITE Throughput), 프리 블록 개수(Free Block Count) 등이 포함될 수 있다.
예시적으로, SSD의 독출 데이터 처리량(READ IOPS Average), 평균적인 초당 기록 데이터 처리량(WRITE IOPS Average), 독출 요청의 평균적인 데이터 크기(READ IO Size Average), 기록 요청의 평균적인 데이터 크기(WRITE IO Size Average), 독출 처리량(READ Throughput) 또는 기록 처리량(WRITE Throughput)이 많아지면, 뉴럴 네트워크 모델(800)에서 예측되는 메모리 블록들(BLK1 내지 BLKn) 각각의 유효 페이지들의 개수는 줄어드는 경향을 보일 것이다. 또한, SSD의 프리 블록 개수(Free Block Count)가 적은 경우에도 뉴럴 네트워크 모델(800)에서 예측되는 메모리 블록들(BLK1 내지 BLKn) 각각의 유효 페이지들의 개수는 줄어드는 경향을 보일 것이다.
도 9a 내지 도 9f는 도 8의 뉴럴 네크워크 모델의 동작을 개념적으로 설명하는 도면들이다.
도 9a를 참조하면, 뉴럴 네크워크 모델(800)은 입력 데이터로서 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수를 입력하고, 뉴럴 네크워크 모델(800)의 파라미터들인 SSD의 평균적인 초당 독출 데이터 처리량(READ IOPS Average), 평균적인 초당 기록 데이터 처리량(WRITE IOPS Average), 독출 요청의 평균적인 데이터 크기(READ IO Size Average), 기록 요청의 평균적인 데이터 크기(WRITE IO Size Average), 독출 처리량(READ Throughput), 기록 처리량(WRITE Throughput) 또는 프리 블록 개수(Free Block Count)을 입력하여, 연산을 수행하고, 연산 수행을 통해 훈련 데이터를 생성하고, 훈련 데이터에 대응하는 출력 데이터로서 메모리 블록들(BLK1~BLKn) 각각의 미래 시간 스텝(t+1)에서의 예측된 유효 페이지들의 개수를 출력할 수 있다. 메모리 블록들(BLK1~BLKn) 각각의 미래 시간 스텝(t+1)에서의 예측된 유효 페이지들의 개수는 시간이 경과함에 따라 비선형적으로 감소되는 경향을 보일 것이다.
도 9b를 참조하면, 뉴럴 네크워크 모델(800)은 메모리 블록들(BLK1~BLKn) 중 제1 메모리 블록(BLK1)에 대하여 예측된 유효 페이지들의 개수(VPC)를 출력할 수 있다. 예시적으로, 도 7b에서 보여주었듯이, 제1 메모리 블록(BLK1)의 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 제1 메모리 블록(BLK1)의 유효 페이지들의 개수가 2000, 1500 및 1000 이라고 가정하자. 뉴럴 네크워크 모델(800)은 제1 메모리 블록(BLK1)의 유효 페이지들의 개수 2000, 1500 및 1000을 입력 데이터로서 입력하고, 입력 데이터 2000, 1500 및 1000을 기반하여 연산을 수행하고, 연산 수행을 통해 훈련 데이터를 생성하고, 훈련 데이터에 대응하는 출력 데이터로서 500을 출력할 수 있다. 뉴럴 네트워크 모델(800)의 출력 데이터 500은 미래 시간 스텝(t+1)에서의 제1 메모리 블록(BLK1)의 예측된 유효 페이지들의 개수를 의미한다.
뉴럴 네트워크 모델(800)은 제1 메모리 블록(BLK1)에 대하여 예측된 유효 페이지들의 개수(VPC)를 출력하는 것과 유사하게, 나머지 메모리 블록들(BLK2~BLKn) 각각에 대해서도 예측된 유효 페이지들의 개수(VPC)를 출력할 수 있다. 도 9c에서, 뉴럴 네크워크 모델(800)은 나머지 메모리 블록들(BLK2~BLKn) 각각의 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 유효 페이지들의 개수를 입력하여 연산을 수행하고, 연산 수행을 통해 훈련 데이터를 생성하고, 훈련 데이터에 대응하는 출력 데이터로서 나머지 메모리 블록들(BLK2~BLKn) 각각의 미래 시간 스텝(t+1)에서의 예측된 유효 페이지들의 개수를 출력할 수 있다.
예시적으로, 뉴럴 네트워크 모델(800)은 제2 메모리 블록(BLK2)의 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 유효 페이지들의 개수 1300, 1400 및 1500을 입력하여 연산을 수행하고, 연산 수행을 통해 훈련 데이터를 생성하고, 훈련 데이터에 대응하는 출력 데이터로서 제2 메모리 블록(BLK2)의 미래 시간 스텝(t+1)에서의 예측된 유효 페이지들의 개수 1600을 출력할 수 있다. 뉴럴 네트워크 모델(800)은 제3 메모리 블록(BLK3)의 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 유효 페이지들의 개수 5000, 5000 및 5000을 입력하여 연산을 수행하고, 연산 수행을 통해 훈련 데이터를 생성하고, 훈련 데이터에 대응하는 출력 데이터로서 제2 메모리 블록(BLK2)의 미래 시간 스텝(t+1)에서의 예측된 유효 페이지들의 개수 5000을 출력할 수 있다.
뉴럴 네트워크 모델(800)에서, 메모리 블록들(BLK1~BLKn) 각각의 과거 시간 스텝들(t-2, t-1) 및 현재 시간 스텝(t)에서의 유효 페이지들의 개수에 대한 훈련이 반복 진행되고, 메모리 블록들(BLK1~BLKn) 각각의 훈련 데이터에 대응하는 미래 시간 스텝(t+1)에서의 예측된 유효 페이지들의 개수(VPC)는 증가하거나 감소하거나 유지되는 경향을 나타낼 수 있다.
도 9d를 참조하면, 뉴럴 네트워크 모델(800)은, 제1 메모리 블록(BLK1)의 유효 페이지들의 개수(VPC)가 과거 시간 스텝들(t-2, t-1), 현재 시간 스텝(t) 및 미래 시간 스텝(t+1)으로 시간이 경과함에 따라, 2000, 1500, 1000 및 500으로 감소하는 경향을 갖는다고 예견할 수 있다.
도 9e를 참조하면, 뉴럴 네트워크 모델(800)은, 제2 메모리 블록(BLK2)의 유효 페이지들의 개수(VPC)가 과거 시간 스텝들(t-2, t-1), 현재 시간 스텝(t) 및 미래 시간 스텝(t+1)으로 시간이 경과함에 따라, 1300, 1400, 1500 및 1600으로 증가하는 경향을 갖는다고 예견할 수 있다.
도 9f를 참조하면, 뉴럴 네트워크 모델(800)은, 제3 메모리 블록(BLK3)의 유효 페이지들의 개수(VPC)가 과거 시간 스텝들(t-2, t-1), 현재 시간 스텝(t) 및 미래 시간 스텝(t+1)으로 시간이 경과함에 따라, 5000, 5000, 5000 및 5000으로 유지되는 경향을 갖는다고 예견할 수 있다.
뉴럴 네트워크 모델(800)은 메모리 블록들(BLK1~BLKn)의 예측된 유효 페이지들의 개수(VPC) 및/또는 이들의 감소, 증가 또는 유지 경향을 참조하여 메모리 블록들(BLK1~BLKn) 각각의 가비지 콜렉션 코스트를 판단할 수 있다.
실시예에 따라, 뉴럴 네트워크 모델(800)은 메모리 블록들(BLK1~BLKn) 중 예측된 유효 페이지들의 개수(VPC)가 가장 작은 메모리 블록을 가비지 콜렉션 코스트가 작은 블록으로 판단하고 희생 블록으로 선정할 수 있다.
실시예에 따라, 뉴럴 네트워크 모델(800)은 메모리 블록들(BLK1~BLKn) 중 예측된 유효 페이지들의 개수(VPC)가 감소하는 경향을 갖는 메모리 블록을 희생 블록 선정에서 배제시킬 수 있다. 왜냐하면, 예측된 유효 페이지들의 개수(VPC)가 감소하는 메모리 블록은 시간이 경과함에 따라 예측된 유효 페이지들의 개수(VPC)가 더욱 감소할 것이기 때문에, 당해 희생 블록 선정에서 배제시키는 것이 가비지 콜렉션 코스트를 줄일 수 있기 때문이다.
실시예에 따라, 뉴럴 네트워크 모델(800)은 메모리 블록들(BLK1~BLKn) 중 예측된 유효 페이지들의 개수(VPC)가 유지되는 메모리 블록을 희생 블록으로 선정할 수 있다. 예측된 유효 페이지들의 개수(VPC)가 유지되는 메모리 블록은, 사용자에게 빈번하게 접근되지 않는 "콜드 데이터(Cold Data)"를 저장하고 있을 수 있다. 이 경우, 콜드 데이터를 저장하고 있는 메모리 블록을 희생 블록으로 선정하고 가비지 콜력션을 수행하여 프리 블록으로 만드는 것이 가비지 콜렉션 코스트를 줄일 수 있기 때문이다.
도 10 및 도 11은 본 발명의 실시예에 따른 가비지 콜렉션 동작을 설명하는 플로우챠트들이다.
도 1, 도 2 및 도 3과 연계하여, 도 10을 참조하면, S1010 동작에서, 메모리 콘트롤러(110)는 호스트로부터 기록 요청을 수신할 수 있다.
S1020 동작에서, 메모리 콘트롤러(110)는 호스트의 기록 요청에 응답하여 메모리 장치(120)의 메모리 셀 어레이(122)에 포함된 복수의 메모리 블록들(BLK1~BLKn) 중 프리 블록의 개수를 카운트할 수 있다. 메모리 콘트롤러(110)는 가비지 콜렉션 트리거 모듈(610)를 이용하여 카운트된 프리 블록의 개수를 제1 GC 임계값(GC_Threshold1)과 비교할 수 있다.
실시예에 따라, S1020 동작은 호스트의 기록 요청과 같은 특정 조건이 충족되는 때에 수행되거나 주기적으로 수행될 수 있다. 나아가, S1020 동작의 제1 GC 임계값(GC_Threshold1)은 변경 또는 수정될 수 있다.
S1020 동작의 비교 결과, 카운트된 프리 블록의 개수가 제1 GC 임계값(GC_Threshold1) 보다 큰 경우, S1070 동작이 수행될 수 있다. S1070 동작에서, 메모리 콘트롤러(110)는 호스트의 기록 요청에 대해 메모리 장치(120)의 메모리 블록들(BLK1~BLKn)로 기입 동작이 수행되도록 제어할 수 있다.
S1020 동작의 비교 결과, 카운트된 프리 블록의 개수가 제1 GC 임계값(GC_Threshold1) 보다 적은 경우, S1030 동작이 수행될 수 있다. S1030 동작에서, 메모리 콘트롤러(110)는 가비지 콜렉션 모드로 작동될 수 있다. 가비지 콜렉션 모드 동안, 메모리 콘트롤러(110)는 모델 입력 특성 관리 모듈(640)에 저장된 메모리 시스템(100)의 내부 정보를 희생 블록 선정 관리 모듈(630)로 가져올 수 있다. 메모리 콘트롤러(110)는 도 7a 나타낸 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수, SSD의 평균적인 초당 독출 데이터 처리량(READ IOPS Average), 평균적인 초당 기록 데이터 처리량(WRITE IOPS Average), 독출 요청의 평균적인 데이터 크기(READ IO Size Average), 기록 요청의 평균적인 데이터 크기(WRITE IO Size Average), 독출 처리량(READ Throughput), 기록 처리량(WRITE Throughput), 프리 블록 개수(Free Block Count) 등과 같은 메모리 시스템(100)의 내부 정보를 희생 블록 선정 관리 모듈(630)로 가져올 수 있다.
S1040 동작에서, 메모리 콘트롤러(110)는 도 9c에 나타낸 바와 같이, 뉴럴 네크워크 모델(800)을 이용하여 메모리 블록들(BLK1~BLKn)의 유효 페이지들의 개수(VPC)를 예측할 수 있다.
S1050 동작에서, 메모리 콘트롤러(110)는 뉴럴 네트워크 모델(800)에서 출력되는 메모리 블록들(BLK1~BLKn) 각각의 예측된 유효 페이지들의 개수(VPC)를 기반으로 가비지 콜렉션 코스트가 작은 메모리 블록을 희생 블록으로 선정할 수 있다.
S1050 동작은, 도 11에 도시된 실시예와 같이, 희생 블록 선정 관리 모듈(630)에서 수행되는 S1110 내지 S1130 동작을 포함할 수 있다.
S1110 동작에서, 희생 블록 선정 관리 모듈(630)은 메모리 블록들(BLK1~BLKn) 중 예측된 유효 페이지들의 개수(VPC)가 가장 작은 메모리 블록을 가비지 콜렉션 코스트가 작은 블록으로 판단하고 희생 블록으로 선정할 수 있다.
S1120 동작에서, 희생 블록 선정 관리 모듈(630)은 메모리 블록들(BLK1~BLKn) 중 예측된 유효 페이지들의 개수(VPC)가 감소하는 경향을 갖는 메모리 블록을 당해 희생 블록 선정에서 배제시킬 수 있다.
S1130 동작에서, 희생 블록 선정 관리 모듈(630)은 메모리 블록들(BLK1~BLKn) 중 예측된 유효 페이지들의 개수(VPC)가 유지되는 메모리 블록을 희생 블록으로 선정할 수 있다.
메모리 콘트롤러(110)는 S1110 내지 S1130 동작을 통하여 가비지 콜렉션 코스트가 작은 메모리 블록을 희생 블록으로 선정하고, S1060 동작으로 이동하여 선정된 희생 블록을 가비지 콜렉션 관리 모듈(620)에게 알릴 수 있다.
S1060 동작에서, 메모리 콘트롤러(110)는 가비지 콜렉션 관리 모듈(620)을 이용하여 희생 블록에 저장된 유효 페이지들의 데이터를 목적 블록에 복사하고 나서, 희생 블록을 소거하여 하나의 프리 블록을 확보할 수 있다. 이 후, 메모리 콘트롤러(110)는 S1070 동작에서 호스트의 기록 요청에 대해 메모리 장치(120)의 메모리 블록들(BLK1~BLKn)로 기입 동작이 수행되도록 제어할 수 있다.
도 12는 도 10 및 도 11의 가비지 콜렉션 동작에 따라 가비지 콜렉션을 수행하는 과정들을 보여주는 도면이다.
도 12를 참조하면, S1020 동작과 연관되어, 메모리 콘트롤러(110)는 호스트의 기록 요청과 같은 특정 조건이 충족되는 때 또는 주기적으로, 메모리 블록들(BLK1~BLKn) 중 프리 블록의 개수를 카운트하고, 카운트된 프리 블록의 개수가 제1 GC 임계값(GC_Threshold1) 보다 적은 경우, 가비지 콜렉션 모드로 작동될 수 있다. 본 실시예에서는 두 번의 가비지 콜렉션 동작이 순차적으로 일어나는 예를 보여준다.
제1 가비지 콜렉션 동작(1210)에서, 메모리 콘트롤러(110)는 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수(VPC)를 오름차순으로 정렬할 수 있다. 유효 페이지들의 개수가 가장 작은 메모리 블록인, 메모리 블록 번호 20부터 메모리 블록 번호 100, 50, 710, … , 310 순으로 정렬될 수 있다. 메모리 블록 번호 20의 유효 페이지들의 개수는 1000 이고, 메모리 블록 번호 100의 유효 페이지들의 개수는 1500 이고, 메모리 블록 번호 50의 유효 페이지들의 개수는 2500 일 수 있다.
S1030 및 S1040 동작들과 연관되어, 메모리 콘트롤러(110)는 뉴럴 네크워크 모델(800)을 이용하여 메모리 블록들(BLK1~BLKn) 각각의 유효 페이지들의 개수(VPC)를 예측할 수 있다. 뉴럴 네트워크 연산(NN) 결과, 메모리 블록 번호 20의 예측된 유효 페이지들의 개수는 0 이고, 메모리 블록 번호 100의 예측된 유효 페이지들의 개수는 1450 이고, 메모리 블록 번호 50의 예측된 유효 페이지들의 개수는 2300 일 수 있다.
S1050 동작과 연관되어, 메모리 콘트롤러(110)는 희생 블록 선정 관리 모듈(630)을 이용하여 예측된 유효 페이지들의 개수(VPC)가 0으로 메모리 블록 번호 20을 당해 희생 블록 선정에서 배제시키고(S1120 동작), 예측된 유효 페이지들의 개수(VPC)가 가장 작은 메모리 블록 번호 100을 희생 블록으로 선정할 수 있다(S1110 동작).
S1060 동작과 연관되어, 메모리 콘트롤러(110)는 가비지 콜렉션 관리 모듈(620)을 이용하여 희생 블록으로 선정된 메모리 블록 번호 100의 1500개 유효 페이지들의 데이터를 목적 블록에 복사하고 나서, 메모리 블록 번호 100을 소거하여 하나의 프리 블록을 확보하는 가비지 콜렉션을 수행할 수 있다.
제1 가비지 콜력션 동작에 따른 메모리 블록 번호 100의 가비지 콜렉션이 수행되고 나서, 메모리 콘트롤러(110)는 메모리 블록 번호 100을 뺀 나머지 메모리 블록들 중에서 유효 페이지들의 개수가 가장 작은 메모리 블록 번호 20, 50, 710, 30, … , 310 순으로 오름차순 정렬할 수 있다. 이 때, 메모리 블록 번호 20, 50, 710 및 30 각각의 유효 페이지들의 개수는 1000, 2500, 5000 및 6000 일 수 있다.
제2 가비지 콜렉션 동작(1220)에서, 메모리 콘트롤러(110)는 호스트의 기록 요청과 같은 특정 조건이 충족되는 때 또는 주기적으로, 메모리 블록들(BLK1~BLKn) 중 프리 블록의 개수를 카운트하고, 카운트된 프리 블록의 개수가 제1 GC 임계값(GC_Threshold1) 보다 적은 경우, 가비지 콜렉션 모드로 작동될 수 있다(S1020 동작).
제2 가비지 콜렉션 동작(1220)은 제1 가비지 콜렉션 동작(1210)이 수행된 후 소정의 시간이 경과한 후 일어날 수 있다. 이에 따라, 제1 가비지 콜력션 동작(1210) 후 유효 페이지들의 개수가 가장 작은 순서인 메모리 블록 번호 20, 50, 710 및 30 각각의 유효 페이지들의 개수가 1000, 2500, 5000 및 6000 에서 0, 2500, 5000 및 6000으로 변경될 수 있다. 여기에서, 메모리 블록 번호 20의 유효 페이지들의 개수는 1000 에서 0으로 변경됨을 볼 수 있다. 이는 제1 가비지 콜력션 동작(1210)에서 뉴럴 네크워크 모델(800)에서 뉴럴 네트워크 연산(NN) 결과, 예측된 메모리 블록 번호 20의 유효 페이지들의 개수 0 에 부합한다.
S1030 및 S1040 동작들과 연관되어, 메모리 콘트롤러(110)는 뉴럴 네크워크 모델(800)을 이용하여 유효 페이지들의 개수가 가장 작은 순서인 메모리 블록 번호 20, 50, 710 및 30 각각의 유효 페이지들의 개수(VPC)를 예측할 수 있다. 뉴럴 네트워크 연산(NN) 결과, 메모리 블록 번호 20의 예측된 유효 페이지들의 개수는 0 이고, 메모리 블록 번호 50의 예측된 유효 페이지들의 개수는 2000 이고, 메모리 블록 번호 700의 예측된 유효 페이지들의 개수는 2300 일 수 있다.
S1050 동작과 연관되어, 메모리 콘트롤러(110)는 희생 블록 선정 관리 모듈(630)을 이용하여 당해 유효 페이지들의 개수 및 예측된 유효 페이지들의 개수가 0인 메모리 블록 번호 20을 희생 블록으로 선정할 수 있다(S1110 동작). 즉, 희생 블록으로 선정된 메모리 블록 번호 20은, 유효 페이지 개수가 0으로 유효 페이지를 포함하지 않기 때문에 유효 페이지의 데이터를 목적 블록에 복사하는 동작 없이 소거할 수 있으므로, 가비지 콜렉션 코스트가 작다.
S1060 동작과 연관되어, 메모리 콘트롤러(110)는 가비지 콜렉션 관리 모듈(620)을 이용하여 희생 블록으로 선정된 메모리 블록 번호 20을 소거하여 하나의 프리 블록을 확보하는 가비지 콜렉션을 수행할 수 있다.
제2 가비지 콜력션 동작에 따른 메모리 블록 번호 20의 가비지 콜렉션이 수행되고 나서, 메모리 콘트롤러(110)는 메모리 블록 번호 20을 뺀 나머지 메모리 블록들 중에서 유효 페이지들의 개수가 가장 작은 메모리 블록 번호 50, 710, 30, 120, … , 310 순으로 오름차순 정렬할 수 있다.
제1 가비지 콜렉션 동작(1210)에서 희생 블록으로 선정된 메모리 블록 번호 100의 1500개 유효 페이지들의 데이터가 목적 블록에 복사되는 동작이 수행되고, 제2 가비지 콜렉션 동작(1220)에서는 복사 동작이 수행되지 않는다. 이에 따라, 제1 및 제2 가비지 콜렉션 동작들(1210, 1220)에서 복사 동작이 수행되는 유효 페이지들의 총 개수는 1500개로 나타난다.
도 13은 도 12의 가비지 콜렉션 동작의 비교예로서 설명되는 도면이다.
도 13을 참조하면, 가비지 콜렉션은 다양한 방식으로 수행될 수 있는데, 전통적이고 심플한 그리디 방식(Greedy Policy)을 이용하여 수행되는 예를 보여준다. 그리디 방식은 가비지 콜력션이 트리거되는 시점에서 유효 페이지들의 개수가 가장 작은 메모리 블록을 희생 블록으로 선정하고, 선정된 희생 블록에 대하여 가비지 콜력션을 수행하는 방식을 말한다. 도 13에서는 설명의 편의를 위하여 도 12에서 설명된 가비지 콜력션 동작과 유사하게, 두 번의 가비지 콜렉션 동작이 순차적으로 일어나는 경우를 보여준다.
도 12의 제1 가비지 콜렉션 동작(1210)이 트리거되는 환경과 동일하게, 유효 페이지들의 개수가 가장 작은 메모리 블록 번호 20부터 메모리 블록 번호 100, 50, 710, … , 310 순으로 오름차순 정렬될 수 있다. 메모리 블록 번호 20의 유효 페이지들의 개수는 1000 이고, 메모리 블록 번호 100의 유효 페이지들의 개수는 1500 이고, 메모리 블록 번호 50의 유효 페이지들의 개수는 2500 일 수 있다.
그리디 방식의 제1 가비지 콜렉션 동작(1310)에서, 유효 페이지들의 개수(VPC)가 가장 작은 메모리 블록 번호 20을 희생 블록으로 선정될 수 있다. 희생 블록으로 선정된 메모리 블록 번호 20의 1000개 유효 페이지들의 데이터가 목적 블록에 복사되고 메모리 블록 번호 20을 소거하여 프리 블록을 확보하는 가비지 콜렉션이 수행될 수 있다. 이 후, 유효 페이지들의 개수가 가장 작은 메모리 블록 번호 100부터 메모리 블록 번호 50, 710, … , 310 순으로 오름차순 정렬될 수 있다.
그리디 방식의 제2 가비지 콜렉션 동작(1320)에서, 유효 페이지들의 개수(VPC)가 가장 작은 메모리 블록 번호 100을 희생 블록으로 선정될 수 있다. 희생 블록으로 선정된 메모리 블록 번호 100의 1500개 유효 페이지들의 데이터가 목적 블록에 복사되고 메모리 블록 번호 100을 소거하여 프리 블록을 확보하는 가비지 콜렉션이 수행될 수 있다.
그리디 방식의 제1 가비지 콜렉션 동작(1310)에서 희생 블록으로 선정된 메모리 블록 번호 20의 1000개 유효 페이지들의 데이터가 목적 블록에 복사되는 동작이 수행되고, 그리디 방식의 제2 가비지 콜렉션 동작(1320)에서는 희생 블록으로 선정된 메모리 블록 번호 100의 1500개 유효 페이지들의 데이터가 목적 블록에 복사되는 동작이 수행된다. 이에 따라, 그리디 방식의 제1 및 제2 가비지 콜렉션 동작들(1310, 1320)에서 복사 동작이 수행되는 유효 페이지들의 총 개수는 2500개로 나타난다.
도 12 | 도 13 | |
가비지 콜력션에서 복사되는 유효 페이지들 개수 (가비지 콜렉션 코스트) |
1500 | 2500 |
표 1의 비교 테이블에서 보여주듯이, 본 발명의 예측된 유효 페이지들의 개수를 기반으로 수행되는 가비지 콜렉션 동작(도 12)에서 복사되는 유효 페이지들의 개수는 1500 개 인데 반해, 그리디 방식의 가비지 콜렉션 동작(도 13)에서 복사되는 유효 페이지들의 개수는 2500 개로 나타난다. 본 발명의 예측된 유효 페이지들의 개수를 기반으로 수행되는 가비지 콜렉션 동작은 그리디 방식의 가비지 콜렉션 동작보다 40% 정도의 가비지 콜렉션 코스트를 줄일 수 있다.
도 14는 본 발명의 실시예들에 따른 예측된 유효 페이지들 수를 기반으로 수행되는 가비지 콜렉션 동작을 SSD 시스템(1400)에 적용한 예를 나타내는 블록도이다.
도 14를 참조하면, SSD 시스템(1400)은 호스트(1410) 및 SSD(1420)를 포함할 수 있다. SSD(1420)는 신호 커넥터(signal connector)를 통해 호스트(1410)와 신호를 주고 받으며, 전원 커넥터(power connector)를 통해 전원을 입력 받는다. SSD(1420)는 SSD 콘트롤러(1421), 보조 전원 장치(1422) 및 복수의 불휘발성 메모리 장치들(1423, 1424, 1425)을 포함할 수 있다.
SSD 콘트롤러(1421)는 도 1 내지 도 12에 도시된 실시예들을 이용하여 복수의 불휘발성 메모리 장치들(1423, 1424, 1425)의 가비지 콜렉션을 제어할 수 있다. SSD 콘트롤러(1421)는 복수의 불휘발성 메모리 장치들(1423, 1424, 1425)에 데이터를 저장하도록 구성되는 메모리 블록들의 유효 페이지들의 개수를 기반으로 훈련되는 뉴럴 네트워크 모델을 이용하여, 복수의 불휘발성 메모리 장치들(1423, 1424, 1425) 내 메모리 블록들의 유효 페이지들의 개수를 예측할 수 있다. SSD 콘트롤러(1421)는 복수의 불휘발성 메모리 장치들(1423, 1424, 1425) 내 메모리 블록들 각각의 예측된 유효 페이지들의 개수에 기초하여 메모리 블록들 중 가비지 콜력션이 수행될 희생 블록을 선정할 수 있다.
SSD 콘트롤러(1421)는 복수의 불휘발성 메모리 장치들(1423, 1424, 1425) 내 메모리 블록들 중에서 예측된 유효 페이지들의 개수가 가장 작은 메모리 블록을 희생 블록으로 선정할 수 있다. SSD 콘트롤러(1421)는 복수의 불휘발성 메모리 장치들(1423, 1424, 1425) 내 메모리 블록들 중에서 예측된 유효 페이지들의 개수가 감소하는 경향을 갖는 메모리 블록을 희생 블록의 선정에서 배제시킬 수 있다. SSD 콘트롤러(1421)는 복수의 불휘발성 메모리 장치들(1423, 1424, 1425) 내 메모리 블록들 중에서 예측된 유효 페이지들의 개수가 유지되는 메모리 블록을 희생 블록으로 선정할 수 있다.
SSD 콘트롤러(1421)는 복수의 불휘발성 메모리 장치들(1423, 1424, 1425)에서 선정된 희생 블록의 유효 페이지들의 데이터를 목적 블록으로 복사하고 희생 블록을 소거하는 가비지 콜렉션이 수행되도록 제어할 수 있다.
본 개시는 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
Claims (20)
- 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하는 메모리 콘트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서,
상기 불휘발성 메모리 장치에 데이터를 저장하도록 구성되는 메모리 블록들의 유효 페이지들의 개수를 기반으로 훈련되는 뉴럴 네트워크 모델을 이용하여, 상기 메모리 블록들의 유효 페이지들의 개수를 예측하는 단계;
상기 메모리 블록들 각각의 예측된 유효 페이지들의 개수에 기초하여, 상기 메모리 블록들 중 가비지 콜력션이 수행될 희생 블록을 선정하는 단계; 및
상기 희생 블록에 대하여 가비지 콜렉션을 수행하는 단계를 포함하는 동작 방법. - 제1항에 있어서, 상기 메모리 블록들의 유효 페이지들의 개수를 예측하는 단계는,
상기 뉴럴 네트워크 모델에서, 상기 메모리 블록들 각각의 적어도 하나의 과거 시간 스텝과 현재 시간 스텝에서의 유효 페이지들의 개수를 기반으로 연산을 수행하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법. - 제2항에 있어서,
상기 뉴럴 네트워크 모델에서, 상기 연산을 수행하여 훈련 데이터를 생성하고, 상기 훈련 데이터에 대응하는 출력 데이터로서 미래 시간 스텝에서의 상기 메모리 블록들 각각의 상기 예측된 유효 페이지들의 개수를 출력하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법. - 제3항에 있어서,
상기 스토리지 장치의 데이터 처리 동작에 따른 내부 정보를 수집하는 단계; 및
상기 스토리지 장치의 상기 내부 정보를 상기 훈련 데이터를 생성하는 상기 뉴럴 네트워크 모델로 제공하는 단계를 더 포함하는 동작 방법. - 제4항에 있어서,
상기 스토리지 장치의 상기 내부 정보는, 평균적인 초당 독출 데이터 처리량, 평균적인 초당 기록 데이터 처리량, 독출 요청의 평균적인 데이터 크기, 기록 요청의 평균적인 데이터 크기, 독출 처리량, 기록 처리량 또는 프리 블록 개수를 포함하는 것을 특징으로 하는 동작 방법. - 제1항에 있어서, 상기 메모리 블록들 중 상기 가비지 콜력션이 수행될 상기 희생 블록을 선정하는 단계는,
상기 메모리 블록들 중에서 상기 예측된 유효 페이지들의 개수가 가장 작은 메모리 블록을 상기 희생 블록으로 선정하는 것을 특징으로 하는 동작 방법. - 제1항에 있어서, 상기 메모리 블록들 중 상기 가비지 콜력션이 수행될 상기 희생 블록을 선정하는 단계는,
상기 메모리 블록들 중에서 상기 예측된 유효 페이지들의 개수가 감소하는 경향을 갖는 메모리 블록을 상기 희생 블록의 선정에서 배제시키는 것을 특징으로 하는 동작 방법. - 제1항에 있어서, 상기 메모리 블록들 중 상기 가비지 콜력션이 수행될 상기 희생 블록을 선정하는 단계는,
상기 메모리 블록들 중에서 상기 예측된 유효 페이지들의 개수가 유지되는 메모리 블록을 상기 희생 블록으로 선정하는 것을 특징으로 하는 동작 방법. - 제1항에 있어서, 상기 메모리 블록들 중 상기 가비지 콜력션이 수행될 상기 희생 블록을 선정하는 단계는,
상기 메모리 블록들 중 프리 블록의 개수가 임계값 보다 작은지 판별하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법. - 제9항에 있어서,
상기 스토리지 장치의 외부에서 기록 요청할 때 상기 메모리 블록들 중에서 상기 프리 블록을 카운트하여 상기 프리 블록의 개수를 획득하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법. - 제9항에 있어서,
상기 메모리 블록들 중에서 상기 프리 블록을 주기적으로 카운트하여 상기 프리 블록의 개수를 획득하는 단계를 더 포함하는 것을 특징으로 하는 동작 방법. - 제1항에 있어서, 상기 희생 블록에 대하여 가비지 콜렉션을 수행하는 단계는,
상기 희생 블록의 유효 페이지들의 데이터를 목적 블록으로 복사하는 단계; 및
상기 희생 블록을 소거하는 단계를 포함하는 것을 특징으로 하는 동작 방법. - 데이터를 저장하도록 구성되는 메모리 블록들을 포함하는 불휘발성 메모리 장치; 및
상기 메모리 블록들의 유효 페이지들의 개수를 기반으로 훈련되는 뉴럴 네트워크 모델을 이용하여, 상기 메모리 블록들의 유효 페이지들의 개수를 예측하고, 예측된 유효 페이지들의 개수에 기초하여 상기 메모리 블록들 중 가비지 콜력션이 수행될 희생 블록을 선정하는 메모리 콘트롤러를 포함하는 스토리지 장치. - 제13항에 있어서, 상기 메모리 콘트롤러는,
상기 희생 블록의 유효 페이지들의 데이터를 목적 블록으로 복사하고, 상기 희생 블록을 소거하는 상기 가비지 콜렉션을 수행하는 것을 특징으로 하는 스토리지 장치. - 제14항에 있어서, 상기 메모리 콘트롤러는,
상기 메모리 블록들 중에서 프리 블록을 카운트하고, 카운트된 프리 블록의 개수가 임계값보다 작은 경우 상기 가비지 콜렉션을 수행하는 것을 특징으로 하는 스토리지 장치. - 제13항에 있어서, 상기 메모리 콘트롤러는,
상기 메모리 블록들 각각의 적어도 하나의 과거 시간 스텝과 현재 시간 스텝에서의 유효 페이지들의 개수를 상기 뉴럴 네트워크 모델의 입력 데이터로 제공하고, 상기 뉴럴 네트워크 모델의 출력 데이터로서 미래 시간 스텝에서의 상기 메모리 블록들 각각의 상기 예측된 유효 페이지들의 개수를 출력하는 것을 특징으로 하는 스토리지 장치. - 제16항에 있어서, 상기 메모리 콘트롤러는,
상기 스토리지 장치의 평균적인 초당 독출 데이터 처리량, 평균적인 초당 기록 데이터 처리량, 독출 요청의 평균적인 데이터 크기, 기록 요청의 평균적인 데이터 크기, 독출 처리량, 기록 처리량 또는 프리 블록 개수를 상기 뉴럴 네트워크 모델의 파라미터로 제공하는 것을 특징으로 하는 스토리지 장치. - 제13항에 있어서, 상기 메모리 콘트롤러는,
상기 메모리 블록들 중에서 상기 예측된 유효 페이지들의 개수가 가장 작은 메모리 블록을 상기 희생 블록으로 선정하는 것을 특징으로 하는 스토리지 장치. - 제13항에 있어서, 상기 메모리 콘트롤러는,
상기 메모리 블록들 중에서 상기 예측된 유효 페이지들의 개수가 감소하는 경향을 갖는 메모리 블록을 상기 희생 블록의 선정에서 배제시키는 것을 특징으로 스토리지 장치. - 제13항에 있어서, 상기 메모리 콘트롤러는,
상기 메모리 블록들 중에서 상기 예측된 유효 페이지들의 개수가 유지되는 메모리 블록을 상기 희생 블록으로 선정하는 것을 특징으로 하는 스토리지 장치.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180128313A KR102645142B1 (ko) | 2018-10-25 | 2018-10-25 | 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들 |
EP19177962.8A EP3644189B1 (en) | 2018-10-25 | 2019-06-03 | Storage device, method and non-volatile memory device performing garbage collection using estimated number of valid pages |
CN201910497126.7A CN111104343B (zh) | 2018-10-25 | 2019-06-04 | 存储装置、操作存储装置的方法和非易失性存储器装置 |
US16/445,491 US10896126B2 (en) | 2018-10-25 | 2019-06-19 | Storage device, method and non-volatile memory device performing garbage collection using estimated number of valid pages |
SG10201905952XA SG10201905952XA (en) | 2018-10-25 | 2019-06-26 | Storage Device, Method And Non-Volatile Memory Device Performing Garbage Collection Using Estimated Number Of Valid Pages |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180128313A KR102645142B1 (ko) | 2018-10-25 | 2018-10-25 | 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200046743A true KR20200046743A (ko) | 2020-05-07 |
KR102645142B1 KR102645142B1 (ko) | 2024-03-07 |
Family
ID=66690290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180128313A KR102645142B1 (ko) | 2018-10-25 | 2018-10-25 | 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10896126B2 (ko) |
EP (1) | EP3644189B1 (ko) |
KR (1) | KR102645142B1 (ko) |
CN (1) | CN111104343B (ko) |
SG (1) | SG10201905952XA (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112684984A (zh) * | 2020-12-31 | 2021-04-20 | 联想(北京)有限公司 | 一种控制方法和装置 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10678439B2 (en) * | 2018-04-02 | 2020-06-09 | Micron Technology, Inc. | Optimization of memory systems based on performance goals |
TWI759580B (zh) * | 2019-01-29 | 2022-04-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
CN111857558B (zh) * | 2019-04-30 | 2024-04-09 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、设备和计算机程序产品 |
US11586194B2 (en) | 2019-08-12 | 2023-02-21 | Micron Technology, Inc. | Storage and access of neural network models of automotive predictive maintenance |
US11635893B2 (en) | 2019-08-12 | 2023-04-25 | Micron Technology, Inc. | Communications between processors and storage devices in automotive predictive maintenance implemented via artificial neural networks |
US11775816B2 (en) | 2019-08-12 | 2023-10-03 | Micron Technology, Inc. | Storage and access of neural network outputs in automotive predictive maintenance |
US12061971B2 (en) | 2019-08-12 | 2024-08-13 | Micron Technology, Inc. | Predictive maintenance of automotive engines |
US11586943B2 (en) | 2019-08-12 | 2023-02-21 | Micron Technology, Inc. | Storage and access of neural network inputs in automotive predictive maintenance |
US11748626B2 (en) | 2019-08-12 | 2023-09-05 | Micron Technology, Inc. | Storage devices with neural network accelerators for automotive predictive maintenance |
US11853863B2 (en) | 2019-08-12 | 2023-12-26 | Micron Technology, Inc. | Predictive maintenance of automotive tires |
US11498388B2 (en) | 2019-08-21 | 2022-11-15 | Micron Technology, Inc. | Intelligent climate control in vehicles |
US11702086B2 (en) | 2019-08-21 | 2023-07-18 | Micron Technology, Inc. | Intelligent recording of errant vehicle behaviors |
US11361552B2 (en) | 2019-08-21 | 2022-06-14 | Micron Technology, Inc. | Security operations of parked vehicles |
US11693562B2 (en) | 2019-09-05 | 2023-07-04 | Micron Technology, Inc. | Bandwidth optimization for different types of operations scheduled in a data storage device |
US11436076B2 (en) | 2019-09-05 | 2022-09-06 | Micron Technology, Inc. | Predictive management of failing portions in a data storage device |
US11435946B2 (en) * | 2019-09-05 | 2022-09-06 | Micron Technology, Inc. | Intelligent wear leveling with reduced write-amplification for data storage devices configured on autonomous vehicles |
US11409654B2 (en) | 2019-09-05 | 2022-08-09 | Micron Technology, Inc. | Intelligent optimization of caching operations in a data storage device |
US11650746B2 (en) | 2019-09-05 | 2023-05-16 | Micron Technology, Inc. | Intelligent write-amplification reduction for data storage devices configured on autonomous vehicles |
US11250648B2 (en) | 2019-12-18 | 2022-02-15 | Micron Technology, Inc. | Predictive maintenance of automotive transmission |
US11531339B2 (en) | 2020-02-14 | 2022-12-20 | Micron Technology, Inc. | Monitoring of drive by wire sensors in vehicles |
US12066947B2 (en) * | 2020-02-14 | 2024-08-20 | Micron Technology, Inc. | Optimization of quality of service of data storage devices |
US11709625B2 (en) | 2020-02-14 | 2023-07-25 | Micron Technology, Inc. | Optimization of power usage of data storage devices |
US11550712B2 (en) * | 2020-06-11 | 2023-01-10 | Google Llc | Optimizing garbage collection based on survivor lifetime prediction |
CN114063885B (zh) * | 2020-07-31 | 2024-07-09 | 伊姆西Ip控股有限责任公司 | 用于管理存储空间的方法、设备和计算机程序产品 |
KR20220020008A (ko) * | 2020-08-11 | 2022-02-18 | 삼성전자주식회사 | 비휘발성 메모리를 포함하는 메모리 저장 장치 및 전자 장치 |
US11244718B1 (en) * | 2020-09-08 | 2022-02-08 | Alibaba Group Holding Limited | Control of NAND flash memory for al applications |
CN112416814A (zh) * | 2020-11-25 | 2021-02-26 | 合肥大唐存储科技有限公司 | 固态硬盘中垃圾回收的管理方法、存储介质和电子装置 |
CN112433682B (zh) * | 2020-12-15 | 2023-12-05 | 合肥大唐存储科技有限公司 | 固态硬盘中控制参数的获取方法、存储介质和电子装置 |
US11467942B2 (en) | 2020-12-16 | 2022-10-11 | Western Digital Technologies, Inc. | Predictive performance indicator for storage devices |
KR20220093982A (ko) | 2020-12-28 | 2022-07-05 | 삼성전자주식회사 | 파편화율을 이용하는 메모리 컨트롤러, 및 스토리지 장치 및 이의 동작 방법 |
US11507502B2 (en) * | 2021-02-23 | 2022-11-22 | Western Digital Technologies, Inc. | Data storage device performance prediction based on valid fragment count |
TWI796912B (zh) * | 2021-12-30 | 2023-03-21 | 新唐科技股份有限公司 | 控制裝置及存取方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160267004A1 (en) * | 2015-03-09 | 2016-09-15 | Amitai Perlstein | Storage device including nonvolatile memory device and garbage collection method thereof |
US20180143762A1 (en) * | 2016-11-24 | 2018-05-24 | Chanha KIM | Storage device including nonvolatile memory device and access method for nonvolatile memory device |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE527613T1 (de) * | 2003-10-14 | 2011-10-15 | Verseon | Verfahren und vorrichtung zur analyse von molekularer kombination auf der grundlage von berechnungen der formkomplementarität unter verwendung von basisexpansionen |
US7984084B2 (en) * | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
KR101226685B1 (ko) | 2007-11-08 | 2013-01-25 | 삼성전자주식회사 | 수직형 반도체 소자 및 그 제조 방법. |
JP5480913B2 (ja) * | 2009-12-03 | 2014-04-23 | 株式会社日立製作所 | 記憶装置、およびメモリコントローラ |
KR101691092B1 (ko) | 2010-08-26 | 2016-12-30 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
US8553466B2 (en) | 2010-03-04 | 2013-10-08 | Samsung Electronics Co., Ltd. | Non-volatile memory device, erasing method thereof, and memory system including the same |
US9536970B2 (en) | 2010-03-26 | 2017-01-03 | Samsung Electronics Co., Ltd. | Three-dimensional semiconductor memory devices and methods of fabricating the same |
KR101682666B1 (ko) | 2010-08-11 | 2016-12-07 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템 |
KR20120112965A (ko) * | 2011-04-04 | 2012-10-12 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법 |
KR20130032155A (ko) * | 2011-09-22 | 2013-04-01 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 관리 방법 |
US9081663B2 (en) * | 2011-11-18 | 2015-07-14 | Stec, Inc. | Optimized garbage collection algorithm to improve solid state drive reliability |
KR20140004429A (ko) | 2012-07-02 | 2014-01-13 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그 동작 방법 |
US8799561B2 (en) * | 2012-07-27 | 2014-08-05 | International Business Machines Corporation | Valid page threshold based garbage collection for solid state drive |
DE102013108456B4 (de) * | 2012-08-08 | 2024-03-07 | Samsung Electronics Co., Ltd. | Nichtflüchtige Speichervorrichtung und Programmierverfahren |
JP6008325B2 (ja) * | 2013-05-17 | 2016-10-19 | 学校法人 中央大学 | データ記憶システムおよびその制御方法 |
US9298608B2 (en) * | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US20150324691A1 (en) | 2014-05-07 | 2015-11-12 | Seagate Technology Llc | Neural network connections using nonvolatile memory devices |
US10409526B2 (en) | 2014-12-17 | 2019-09-10 | Violin Systems Llc | Adaptive garbage collection |
US9720819B2 (en) | 2015-06-12 | 2017-08-01 | Intel Corporation | Concurrent, moving, garbage collector |
US10185657B2 (en) | 2016-04-13 | 2019-01-22 | Nanjing University | Method and system for optimizing deterministic garbage collection in NAND flash storage systems |
US10671317B2 (en) | 2016-05-25 | 2020-06-02 | Samsung Electronics Co., Ltd. | Block cleanup: page reclamation process to reduce garbage collection overhead in dual-programmable NAND flash devices |
US9971681B2 (en) | 2016-06-01 | 2018-05-15 | Nanjing University | Lazy real time garbage collection method |
KR102653401B1 (ko) | 2016-07-18 | 2024-04-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
US11188456B2 (en) * | 2017-03-21 | 2021-11-30 | Western Digital Technologies Inc. | Storage system and method for predictive block allocation for efficient garbage collection |
US11269764B2 (en) * | 2017-03-21 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for adaptive scheduling of background operations |
-
2018
- 2018-10-25 KR KR1020180128313A patent/KR102645142B1/ko active IP Right Grant
-
2019
- 2019-06-03 EP EP19177962.8A patent/EP3644189B1/en active Active
- 2019-06-04 CN CN201910497126.7A patent/CN111104343B/zh active Active
- 2019-06-19 US US16/445,491 patent/US10896126B2/en active Active
- 2019-06-26 SG SG10201905952XA patent/SG10201905952XA/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160267004A1 (en) * | 2015-03-09 | 2016-09-15 | Amitai Perlstein | Storage device including nonvolatile memory device and garbage collection method thereof |
US20180143762A1 (en) * | 2016-11-24 | 2018-05-24 | Chanha KIM | Storage device including nonvolatile memory device and access method for nonvolatile memory device |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112684984A (zh) * | 2020-12-31 | 2021-04-20 | 联想(北京)有限公司 | 一种控制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US10896126B2 (en) | 2021-01-19 |
EP3644189A1 (en) | 2020-04-29 |
CN111104343B (zh) | 2023-06-30 |
SG10201905952XA (en) | 2020-05-28 |
US20200133845A1 (en) | 2020-04-30 |
EP3644189B1 (en) | 2020-12-23 |
KR102645142B1 (ko) | 2024-03-07 |
CN111104343A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102645142B1 (ko) | 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들 | |
CN107797935B (zh) | 存储装置和用于非易失性存储器装置的访问方法 | |
US9715344B2 (en) | Memory device and controlling method of the same | |
KR101891164B1 (ko) | 프로그램 스케줄러를 포함하는 플래시 메모리 장치 | |
US20160011971A1 (en) | Storage medium, memory system, and method of managing storage area in memory system | |
KR102714985B1 (ko) | 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 비휘발성 메모리 장치를 포함하는 메모리 시스템 | |
US20140063938A1 (en) | Nonvolatile memory device and sub-block managing method thereof | |
KR102314136B1 (ko) | 비휘발성 메모리 장치, 메모리 시스템 및 그것의 동작 방법 | |
KR20160110596A (ko) | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법 | |
EP3893116A1 (en) | Storage device and method for operating the same | |
KR20210050635A (ko) | 메모리 장치, 및 이를 포함하는 컴퓨터 시스템 | |
US20220130438A1 (en) | Memory system and operating method thereof | |
CN114664367A (zh) | 预测非易失性存储器件的剩余寿命的方法以及存储设备 | |
CN116403629A (zh) | 存储装置 | |
US11592982B2 (en) | Memory storage device and electronic device including nonvolatile memory | |
CN114490428A (zh) | 测量耐久性的方法及执行磨损均衡的方法 | |
US9570181B2 (en) | Memory system | |
US11922040B2 (en) | Extended super memory blocks in memory systems | |
KR20150106777A (ko) | 플래시 메모리 시스템 및 플래시 메모리 시스템의 제어 방법 | |
US11966608B2 (en) | Memory controller with improved data reliability and memory system including the same | |
US12056047B2 (en) | Memory system, memory controller and operating method thereof for determining garbage collection victim block | |
KR20230068712A (ko) | 메모리 시스템의 성능 최적화 장치 및 그 방법 | |
KR20220063335A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20230147525A (ko) | 머신 러닝을 이용한 비휘발성 메모리의 경판정 디코딩 | |
JP2024037461A (ja) | 半導体記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |