KR20160068108A - 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 관리 방법 - Google Patents
반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 관리 방법 Download PDFInfo
- Publication number
- KR20160068108A KR20160068108A KR1020140173320A KR20140173320A KR20160068108A KR 20160068108 A KR20160068108 A KR 20160068108A KR 1020140173320 A KR1020140173320 A KR 1020140173320A KR 20140173320 A KR20140173320 A KR 20140173320A KR 20160068108 A KR20160068108 A KR 20160068108A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- count value
- block
- memory block
- cells
- Prior art date
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 79
- 238000007726 management method Methods 0.000 title abstract description 3
- 238000000034 method Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 6
- 230000000052 comparative effect Effects 0.000 abstract description 4
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 45
- 238000006243 chemical reaction Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 12
- 230000004044 response Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 description 1
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- GPXJNWSHGFTCBW-UHFFFAOYSA-N Indium phosphide Chemical compound [In]#P GPXJNWSHGFTCBW-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 229910052732 germanium Inorganic materials 0.000 description 1
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical compound [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
- G11C11/5635—Erasing circuits
-
- 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
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/0615—Address space extension
-
- 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/1016—Performance 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5644—Multilevel memory comprising counting devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
본 발명의 실시 예에 따른 반도체 메모리 장치에 대한 관리 방법은 제 1 메모리 블록 내 유효 페이지들의 개수를 제 1 카운트 값으로 결정하는 단계, 제 2 메모리 블록 내 유효 페이지들의 개수를 제 2 카운트 값으로 결정하는 단계, 제 1 카운트 값에 가중치를 부여하여 제 1 카운트 값보다 큰 비교 카운트 값을 생성하는 단계, 그리고 비교 카운트 값 및 제 2 카운트 값을 임계값과 비교함에 따라 제 1 및 제 2 메모리 블록들을 희생 블록으로 정의하는 단계를 포함한다.
Description
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다. 플래시 메모리는 크게 노어 타입과 낸드 타입으로 구분된다.
반도체 메모리 장치는 복수의 메모리 블록들을 포함한다. 복수의 메모리 블록들 각각은 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들 각각은 싱글 레벨 셀로서 정의되거나 멀티 레벨 셀로서 정의될 수 있다. 싱글 레벨 셀은 하나의 비트를 저장하며, 멀티 레벨 셀은 2 이상의 비트들을 저장한다.
본 발명의 실시 예는 향상된 속도를 갖는 메모리 시스템 및 그것의 동작 방법을 제공하기 위한 것이다.
본 발명의 일면은 반도체 메모리 장치에 대한 관리 방법에 관한 것이다. 상기 반도체 메모리 장치는 복수의 메모리 블록들을 포함하되, 상기 복수의 메모리 블록들 중 제 1 메모리 블록은 싱글 레벨 셀들을 포함하고 상기 복수의 메모리 블록들 중 제 2 메모리 블록은 멀티 레벨 셀들을 포함한다. 상기 관리 방법은 상기 제 1 메모리 블록 내 유효 페이지들의 개수를 제 1 카운트 값으로 결정하는 단계; 상기 제 2 메모리 블록 내 유효 페이지들의 개수를 제 2 카운트 값으로 결정하는 단계; 상기 제 1 카운트 값에 가중치를 부여하여 상기 제 1 카운트 값보다 큰 비교 카운트 값을 생성하는 단계; 및 상기 비교 카운트 값 및 상기 제 2 카운트 값을 임계값과 비교함에 따라 상기 제 1 및 제 2 메모리 블록들을 희생 블록으로 정의하는 단계를 포함한다.
실시 예로서, 상기 제 2 메모리 블록의 메모리 셀들 각각에 2 비트들이 저장될 때 상기 제 1 카운트 값에 2를 곱함으로써 상기 비교 카운트 값이 결정될 수 있다.
실시 예로서, 상기 제 2 메모리 블록의 메모리 셀들 각각에 n (n은 2보다 큰 정수)비트들이 저장될 때 상기 제 1 카운트 값에 n을 곱함으로써 상기 비교 카운트 값이 결정될 수 있다.
실시 예로서, 상기 비교 카운트 값이 임계값보다 작을 때 상기 제 1 메모리 블록이 상기 희생 블록으로 정의될 수 있다.
실시 예로서, 상기 제 2 카운트 값이 임계값보다 작을 때 상기 제 2 메모리 블록이 상기 희생 블록으로 정의될 수 있다.
실시 예로서, 상기 관리 방법은 상기 희생 블록 내 유효 페이지들의 데이터를 상기 복수의 메모리 블록들 중 제 3 메모리 블록에 저장하는 단계를 더 포함할 수 있다. 상기 관리 방법은 상기 희생 블록 내 유효 페이지들의 데이터를 소거하는 단계를 더 포함할 수 있다.
본 발명의 다른 일면은 반도체 메모리 장치를 포함하는 메모리 시스템에 관한 것이다. 본 발명의 실시 예에 따른 메모리 시스템은 싱글 레벨 셀들을 포함하는 제 1 메모리 블록 및 멀티 레벨 셀들을 포함하는 제 2 메모리 블록을 포함하는 반도체 메모리 장치; 및 상기 제 1 및 제 2 메모리 블록들 중 적어도 하나를 희생 블록으로 선정할 때 상기 제 1 메모리 블록 내 유효 페이지들의 개수를 제 1 카운트 값으로 결정하고 상기 제 2 메모리 블록 내 유효 페이지들의 개수를 제 2 카운트 값으로 결정하도록 구성되는 컨트롤러를 포함하되, 상기 컨트롤러는 상기 제 1 카운트 값에 가중치를 부여하여 상기 제 1 카운트 값보다 큰 비교 카운트 값을 생성하고, 상기 비교 카운트 값 및 상기 제 2 카운트 값을 임계값과 비교함에 따라 상기 제 1 및 제 2 메모리 블록들을 희생 블록으로 선정하도록 구성된다.
실시 예로서, 상기 컨트롤러는 상기 제 2 메모리 블록의 메모리 셀들 각각에 2 비트들이 저장될 때 상기 제 1 카운트 값에 2를 곱함으로써 상기 비교 카운트 값을 생성할 수 있다.
실시 예로서, 상기 컨트롤러는 상기 제 2 메모리 블록의 메모리 셀들 각각에 n(n은 2보다 큰 정수)비트들이 저장될 때 상기 제 1 카운트 값에 n을 곱함으로써 상기 비교 카운트 값을 생성할 수 있다.
실시 예로서, 상기 컨트롤러는 상기 비교 카운트 값이 임계값보다 작을 때 상기 제 1 메모리 블록을 상기 희생 블록으로 정의할 수 있다. 그리고 상기 컨트롤러는 상기 제 2 카운트 값이 임계값보다 작을 때 상기 제 2 메모리 블록을 상기 희생 블록으로 정의할 수 있다.
실시 예로서, 상기 반도체 메모리 장치는 제 3 메모리 블록을 더 포함하고, 상기 컨트롤러는 상기 희생 블록 내 유효 페이지들의 데이터를 상기 제 3 메모리 블록에 저장할 수 있다.
실시 예로서, 상기 컨트롤러는, 프로세싱 유닛; 및 램을 포함하되, 상기 프로세싱 유닛은 상기 램에 상기 제 1 및 제 2 메모리 블록들 내 유효 페이지들에 해당하는 물리 블록 어드레스들, 그리고 해당 논리 블록 어드레스들 사이의 매핑 관계를 포함하는 맵 테이블을 저장할 수 있다.
실시 예로서, 상기 프로세싱 유닛은 상기 램에 상기 제 1 및 제 2 카운트 값들을 저장하고, 상기 제 1 및 제 2 메모리 블록들 내 유효 페이지들 각각이 무효화될 때마다 상기 제 1 및 제 2 카운트 값들을 조절할 수 있다.
본 발명의 다른 실시 예에 따른 메모리 시스템은 n 비트들을 각각 저장하는 메모리 셀들을 포함하는 제 1 메모리 블록 및 m 비트들을 각각 저장하는 메모리 셀들을 포함하는 제 2 메모리 블록을 갖는 적어도 하나의 반도체 메모리 장치; 및 상기 제 1 및 제 2 메모리 블록들 중 적어도 하나를 희생 블록으로 선정할 때 상기 제 1 메모리 블록 내 유효 페이지들의 개수를 제 1 카운트 값으로 결정하고 상기 제 2 메모리 블록 내 유효 페이지들의 개수를 제 2 카운트 값으로 결정하도록 구성되는 컨트롤러를 포함하되, 상기 n과 상기 m은 정수이고, 상기 m은 상기 n보다 크고, 상기 컨트롤러는 상기 제 1 카운트 값에 가중치를 부여하여 상기 제 1 카운트 값보다 큰 비교 카운트 값을 생성하고, 상기 비교 카운트 값 및 상기 제 2 카운트 값을 임계값과 비교함에 따라 상기 제 1 및 제 2 메모리 블록들을 희생 블록으로 선정하도록 구성된다.
실시 예로서, 상기 가중치는 상기 m을 n으로 나눈 값일 수 있다.
본 발명의 실시 예에 따르면, 향상된 속도를 갖는 메모리 시스템 및 그것의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 반도체 메모리 장치에 포함된 메모리 블록들을 설명하기 위한 도면이다.
도 3은 메모리 시스템의 변형 실시 예를 보여주는 블록도이다.
도 4는 도 3의 반도체 메모리 장치들에 포함된 메모리 블록들을 설명하기 위한 도면이다.
도 5는 도 1의 카운트 테이블을 보여주는 테이블이다.
도 6은 메모리 블록들 중 어느 하나 내 논리 페이지들을 보여주는 개념도이다.
도 7은 본 발명의 실시 예에 따른 컨트롤러의 동작 방법을 보여주는 순서도이다.
도 8은 임계값과 비교되는 카운트 값들을 설명하기 위한 도면이다.
도 9는 적어도 하나의 희생 블록이 선정되는 것을 설명하기 위한 개념도이다.
도 10은 도 1의 메모리 시스템의 구현 례를 보여주는 블록도이다.
도 2는 반도체 메모리 장치에 포함된 메모리 블록들을 설명하기 위한 도면이다.
도 3은 메모리 시스템의 변형 실시 예를 보여주는 블록도이다.
도 4는 도 3의 반도체 메모리 장치들에 포함된 메모리 블록들을 설명하기 위한 도면이다.
도 5는 도 1의 카운트 테이블을 보여주는 테이블이다.
도 6은 메모리 블록들 중 어느 하나 내 논리 페이지들을 보여주는 개념도이다.
도 7은 본 발명의 실시 예에 따른 컨트롤러의 동작 방법을 보여주는 순서도이다.
도 8은 임계값과 비교되는 카운트 값들을 설명하기 위한 도면이다.
도 9는 적어도 하나의 희생 블록이 선정되는 것을 설명하기 위한 개념도이다.
도 10은 도 1의 메모리 시스템의 구현 례를 보여주는 블록도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 모호하지 않도록 하기 위해 생략될 것이라는 것을 유의하여야 한다. 또한 본 발명은 여기에서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 여기에서 설명되는 실시 예은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(10)을 보여주는 블록도이다. 도 2는 반도체 메모리 장치(100)에 포함된 메모리 블록들(BLK1~BLKz)을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(10)은 반도체 메모리 장치(100) 및 컨트롤러(200)를 포함한다.
반도체 메모리 장치(100)는 컨트롤러(200)의 제어에 응답하여 동작한다. 반도체 메모리 장치(100)는 메모리 셀 어레이(110) 및 메모리 셀 어레이(110)를 구동하기 위한 주변 회로(120)를 포함한다. 메모리 셀 어레이(110)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 복수의 메모리 블록들(BLK1~BLKz) 각각은 복수의 메모리 셀들을 포함한다.
실시 예로서, 각 메모리 블록은 싱글 레벨 셀들을 포함하거나, 멀티 레벨 셀들을 포함할 수 있다. 복수의 메모리 블록들(BLK1~BLKz) 중 일부에 포함된 메모리 셀들 각각은 하나의 비트를 저장하는 싱글 레벨 셀로 정의될 수 있다. 싱글 레벨 셀은 하나의 메모리 셀 당 하나의 비트를 저장한다. 복수의 메모리 블록들(BLK1~BLKz) 중 다른 일부에 포함된 메모리 셀들 각각은 멀티 비트들을 저장하는 멀티 레벨 셀로 정의될 수 있다. 멀티 레벨 셀은 하나의 메모리 셀 당 멀티 비트들을 저장한다.
도 2를 참조하면, 복수의 메모리 블록들(BLK1~BLKz)은 복수의 메모리 블록 그룹들(BLKG1, BLKG2)로 구분된다. 제 1 메모리 블록 그룹(BLKG1)은 제 1 내지 제 x-1 메모리 블록들(BLK1~BLKx-1)을 포함한다. 이때 제 1 내지 제 x-1 메모리 블록들(BLK1~BLKx-1)에 포함된 메모리 셀들은 싱글 레벨 셀들로 정의될 수 있다. 제 1 메모리 블록 그룹(BLKG1)의 메모리 블록들(BLK1~BLKx-1) 각각은 제 1 내지 제 n 물리 페이지들(PP11~PP1n)을 포함하고, 제 1 내지 제 n 물리 페이지들(PP11~PP1n) 각각은 하나의 논리 페이지(LP)를 포함할 수 있다. 하나의 물리 페이지를 구성하는 메모리 셀들에 저장된 비트들은 하나의 논리 페이지를 구성할 것이다.
제 2 메모리 블록 그룹(BLKG2)은 제 x 내지 z 메모리 블록들(BLKx~BLKz)을 포함한다. 제 x 내지 z 메모리 블록들(BLKx~BLKz)에 포함된 메모리 셀들은 멀티 레벨 셀들로 정의될 수 있다. 제 2 메모리 블록 그룹(BLKG2)의 메모리 블록들(BLKx~BLKz) 각각은 제 1 내지 제 n 물리 페이지들(PP21~PP2n)을 포함하고, 제 1 내지 제 n 물리 페이지들(PP21~PP2n) 각각은 2 이상의 논리 페이지들(LPs)을 포함할 수 있다. 예를 들면, 하나의 물리 페이지를 구성하는 메모리 셀들에 저장된 최하위 비트들(Least Significant Bits)는 하나의 논리 페이지를 구성하고, 해당 메모리 셀들에 저장된 최상위 비트들(Most Significant Bits)은 다른 하나의 논리 페이지를 구성할 것이다.
즉 제 1 메모리 블록 그룹(BLKG1)의 물리 페이지는 하나의 논리 페이지(LP)를 포함하고, 제 2 메모리 블록 그룹(BLKG2)의 물리 페이지는 복수의 논리 페이지들(LPs)을 포함할 수 있다. 이하, 설명의 편의를 위해 제 x 내지 제 z 메모리 블록들(BLKx~BLKz)의 메모리 셀들 각각은 2비트들을 저장한다고 가정한다.
다시 도 1을 참조하면, 주변 회로(120)는 메모리 셀 어레이(110)에 연결된다. 주변 회로(120)는 컨트롤러(200)의 제어에 응답하여 동작한다. 주변 회로(120)는 컨트롤러(200)의 제어에 응답하여, 메모리 셀 어레이(110)에 데이터를 프로그램하고, 메모리 셀 어레이(110)로부터 데이터를 읽고 메모리 셀 어레이(110)의 데이터를 소거하도록 구성된다.
실시 예로서, 반도체 메모리 장치(100)의 읽기 동작 및 프로그램 동작은 논리 페이지 단위로 수행될 수 있다. 반도체 메모리 장치(100)의 소거 동작은 메모리 블록 단위로 수행될 수 있다.
프로그램 동작 시에, 주변 회로(120)는 컨트롤러(200)로부터 쓰기 데이터 및 물리 블록 어드레스(Physical Block Address)를 수신할 것이다. 물리 블록 어드레스에 의해 하나의 메모리 블록과 그것에 포함된 하나의 물리 페이지가 특정될 것이다. 물리 블록 어드레스에 의해 해당 물리 페이지 내 논리 페이지가 특정될 것이다. 주변 회로(120)는 해당 물리 페이지에 쓰기 데이터를 프로그램할 것이다. 예를 들면, 쓰기 데이터는 해당 물리 페이지의 최하위 비트들로서 저장될 것이다. 예를 들면, 쓰기 데이터는 해당 물리 페이지의 최상위 비트들로서 저장될 것이다.
읽기 동작 시에, 주변 회로는 컨트롤러(200)로부터 물리 블록 어드레스를 수신할 것이다. 물리 블록 어드레스에 의해 하나의 메모리 블록과 그것에 포함된 물리 페이지가 특정될 것이다. 물리 블록 어드레스에 의해 해당 물리 페이지 내 논리 페이지가 특정될 수 있다. 주변 회로(120)는 해당 물리 페이지로부터 최하위 비트들 혹은 최상위 비트들을 읽고, 읽어진 데이터를 컨트롤러(200)에 출력할 것이다.
소거 동작 시에, 컨트롤러(200)로부터 주변 회로(120)에 전송되는 물리 블록 어드레스는 하나의 메모리 블록을 특정할 것이다. 주변 회로(120)는 물리 블록 어드레스에 대응하는 메모리 블록의 데이터를 소거할 것이다.
실시 예로서, 반도체 메모리 장치(100)는 플래시 메모리 장치(Flash Memory Device)일 수 있다.
컨트롤러(200)는 플래시 변환 레이어(Flash Translation Layer, FTL, 220) 및 램(210)을 포함한다.
컨트롤러(200)은 반도체 메모리 장치(100)의 제반 동작을 제어한다. 컨트롤러(200)는 호스트(Host)로부터의 요청에 응답하여 반도체 메모리 장치(100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(200)는 반도체 메모리 장치(100)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(200)는 반도체 메모리 장치(100) 및 호스트(Host) 사이에서 인터페이스를 제공하도록 구성된다. 컨트롤러(200)는 반도체 메모리 장치(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
램(210)은 플래시 변환 레이어(220)의 제어에 응답하여 동작한다. 램(210)은 맵 테이블(MPT)을 저장한다. 맵 테이블(MPT)은 논리 블록 어드레스와 물리 블록 어드레스 사이의 매핑 관계를 저장한다.
본 발명의 실시 예에 따르면, 램(210)은 카운트 테이블(CNT)을 더 저장한다. 카운트 테이블(CNT)은 각 메모리 블록에 대응하는 카운트 값을 포함한다. 카운트 값은 해당 메모리 블록 내 유효 페이지들의 개수를 나타낸다.
실시 예로서, 램(210)은 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등으로 구성될 수 있다.
실시 예로서, 램(210)은 플래시 변환 레이어(220)의 동작 메모리로 이용될 수 있다. 실시 예로서, 램(210)은 반도체 메모리 장치(100) 및 호스트(Host) 사이의 버퍼 메모리로서 이용될 수 있다. 예를 들면, 읽기 시에, 반도체 메모리 장치(100)로부터 읽어진 데이터는 램(210)에 임시 저장되고, 호스트(Host)로 출력될 수 있다. 프로그램 시에, 호스트(Host)로부터 수신된 쓰기 데이터는 램(210)에 임시 저장되고, 반도체 메모리 장치(100)에 제공될 수 있다.
플래시 변환 레이어(220)는 호스트(Host)로부터의 요청에 응답하여 반도체 메모리 장치(100)을 엑세스할 것이다. 호스트(Host)로부터의 프로그램 요청은 논리 블록 어드레스(Logical Block Address) 및 쓰기 데이터를 포함할 것이다. 호스트(Host)로부터의 읽기 요청은 논리 블록 어드레스를 포함할 것이다.
프로그램 요청이 수신될 때, 플래시 변환 레이어(220)는 논리 블록 어드레스를 물리 블록 어드레스로 변환할 것이다. 플래시 변환 레이어(220)는 물리 블록 어드레스, 쓰기 데이터 및 프로그램을 수행하도록 제어하기 위한 커맨드를 반도체 메모리 장치(100)에 제공할 것이다. 플래시 변환 레이어(220)는 논리 블록 어드레스 및 물리 블록 어드레스의 매핑 관계를 맵 테이블(MPT)에 업데이트할 것이다.
읽기 요청이 수신될 때, 플래시 변환 레이어(220)는 맵 테이블(MPT)을 참조하여 논리 블록 어드레스를 물리 블록 어드레스로 변환하고, 물리 블록 어드레스 및 읽기를 수행하도록 제어하기 위한 커맨드를 반도체 메모리 장치(100)에 제공할 것이다.
이미 프로그램 동작이 수행된 논리 블록 어드레스에 대해 다시 프로그램 요청이 수신된다고 가정한다. 즉 임의의 논리 블록 어드레스에 대응하는 데이터의 갱신(update)이 요청된다고 가정한다. 플래시 변환 레이어(220)는 맵 테이블(MPT) 내 해당 논리 블록 어드레스와 제 1 물리 블록 어드레스 사이의 매핑을 취소하고, 해당 논리 블록 어드레스를 새로운 제 2 물리 블록 어드레스와 매핑할 것이다. 즉 플래시 변환 레이어(220)는 맵 테이블(MPT) 내에서 해당 논리 블록 어드레스를 제 2 물리 블록 어드레스와 매핑하고 제 1 물리 블록 어드레스에 해당하는 논리 페이지의 데이터를 무효화(invalid)할 것이다. 예를 들면 맵 테이블(MPT) 내에 각 물리 블록 어드레스에 해당하는 메타 필드가 제공되고, 제 1 물리 블록 어드레스에 해당하는 메타 필드에 무효화 마크를 기입함으로써 제 1 물리 블록 어드레스에 해당하는 데이터가 무효화될 수 있다. 이러한 경우, 제 1 물리 블록 어드레스에 해당하는 논리 페이지의 데이터는 무효화된 데이터로 취급될 것이다. 이에 따라, 제 1 물리 블록 어드레스에 대응하는 메모리 셀 어레이(110) 내 논리 페이지는 무효 페이지로서 정의된다. 제 2 물리 블록 어드레스에 대응하는 논리 페이지는 유효 페이지로서 정의될 수 있다.
본 발명의 실시 예에 따르면, 플래시 변환 레이어(220)는 램(210)에 카운트 테이블(CNT)을 저장하고, 관리하도록 구성된다.
카운트 테이블(CNT)은 각 메모리 블록의 유효 페이지들의 개수를 카운트 값으로서 저장한다. 각 메모리 블록의 유효 페이지들의 개수는 다양한 방법으로 카운트될 수 있음이 이해될 것이다.
실시 예로서, 플래시 변환 레이어(220)는 임의의 논리 블록 어드레스에 대응하는 데이터의 갱신(update)이 요청될 때마다, 해당 프로그램 요청을 처리하고 무효화된 논리 페이지가 포함된 메모리 블록의 카운트 값을 감소시킬 것이다.
실시 예로서, 메모리 셀 어레이(110) 내 각 논리 페이지는 플래그(flag) 비트를 포함하고, 플래그 비트에 해당 논리 페이지가 유효 페이지인지 무효 페이지인지 여부가 기입될 수 있다. 플래시 변환 레이어(220)는 각 논리 페이지의 플래그 비트를 읽음으로써 각 메모리 블록의 유효 페이지들의 개수를 카운트할 수 있다.
실시 예로서, 플래시 변환 레이어(220)는 맵 테이블(MPT) 내 각 물리 블록 어드레스에 대응하는 메타 필드를 스캔함으로써 각 메모리 블록의 유효 페이지들의 개수를 카운트할 수 있다.
플래시 변환 레이어(220)는 배경 동작으로서 가비지 컬렉션(Garbage Collection)을 수행하도록 구성된다. 플래시 변환 레이어(220)는 제 1 내지 제 z 메모리 블록들(BLK1~BLKz) 중 적어도 하나를 희생 블록(Victim Block)으로 선정하고, 제 1 내지 제 z 메모리 블록들(BLK1~BLKz) 중 어느 하나를 타겟 블록으로 선정할 것이다. 플래시 변환 레이어(220)는 희생 블록 내 유효 페이지들을 읽고, 읽어진 데이터를 타겟 블록에 프로그램할 것이다.
이때, 적은 개수의 유효 페이지들을 포함하는 메모리 블록이 희생 블록으로서 선정되는 것이 바람직하다.
예를 들면, 메모리 블록이 적은 개수의 유효 페이지들을 포함하는 것은 해당 메모리 블록이 많은 개수의 무효 페이지들을 포함하는 것을 의미한다. 해당 메모리 블록이 많은 개수의 무효 페이지들을 포함하는 것은 많은 저장 공간이 낭비됨을 의미한다. 따라서 적은 개수의 유효 페이지들을 포함하는 메모리 블록이 희생 블록으로 선정될수록 반도체 메모리 장치(100)의 저장 공간이 확보될 수 있다.
예를 들면, 희생 블록이 적은 개수의 유효 페이지들을 포함하는 것은 유효 페이지들에 저장된 데이터를 타겟 블록에 저장하는 데에 적은 시간이 소요됨을 의미한다. 따라서 희생 블록이 적은 개수의 유효 페이지들을 포함할수록 가비지 컬렉션에 소요되는 시간은 감소한다. 이는 메모리 시스템(10)의 동작 속도가 향상됨을 의미한다.
플래시 변환 레이어(220)는 희생 블록을 선정할 때 카운트 테이블(CNT) 내 각 메모리 블록에 대응하는 카운트 값들을 참조한다. 본 발명의 실시 예에 따르면, 싱글 레벨 셀들을 포함하는 제 1 메모리 블록 그룹(BLKG1, 도 2 참조)의 카운트 값들, 그리고 멀티 레벨 셀들을 포함하는 제 2 메모리 블록 그룹(BLKG2, 도 2 참조)의 카운트 값들에 상이한 기준들이 적용될 수 있다. 제 2 메모리 블록 그룹(BLKG2)에 대응하는 카운트 값들은 그대로 임계값과 비교되고, 임계값보다 큰 카운트 값을 갖는 메모리 블록이 희생 블록으로 선정될 수 있다. 반면, 제 1 메모리 블록 그룹(BLKG1)에 대응하는 카운트 값들에는 가중치가 적용되어 비교 카운트 값들이 생성될 수 있다. 임계값보다 큰 비교 카운트 값을 갖는 메모리 블록은 희생 블록으로 선정될 수 있다. 이에 따라, 각 메모리 블록이 싱글 레벨 셀들을 포함하는 메모리 블록인지 멀티 레벨 셀들을 포함하는 메모리 블록인지 여부에 관계없이, 각 메모리 블록의 논리 페이지들 중 유효 페이지들이 차지하는 비율에 따라 희생 블록이 선정될 수 있다.
만약 싱글 레벨 셀들을 포함하는 메모리 블록과 멀티 레벨 셀들을 포함하는 메모리 블록에 동일한 기준이 적용되어 희생 블록이 선정된다고 가정한다. 멀티 레벨 셀들을 포함하는 메모리 블록은 싱글 레벨 셀들을 포함하는 메모리 블록보다 많은 논리 페이지들을 포함한다. 싱글 레벨 셀들을 포함하는 메모리 블록의 유효 페이지들의 개수와 멀티 레벨 셀들을 포함하는 메모리 블록의 유효 페이지들의 개수가 임계값과 비교될 것이다. 이러한 경우, 싱글 레벨 셀들을 포함하는 메모리 블록 내에서 유효 페이지들의 비중이 아직 높음에도 불구하고 해당 메모리 블록이 희생 블록으로 선정되고, 멀티 레벨 셀들을 포함하는 메모리 블록 내에서는 유효 페이지들의 비중이 낮음에도 불구하고 해당 메모리 블록이 희생 블록으로 선정되지 않을 수 있다.
가비지 컬렉션이 수행되기 전에, 각 메모리 블록의 논리 페이지들에 해당하는 데이터가 갱신되기 위한 충분한 시간이 제공되어야 한다. 적절한 시간이 제공됨으로써, 데이터가 갱신될 수 있고 해당 논리 페이지들은 무효화될 것이다. 각 메모리 블록의 논리 페이지들에 해당하는 데이터가 갱신되기 위한 적절한 시간이 제공되지 않는다고 가정한다. 메모리 블록 내에서 비교적 적은 논리 페이지들의 데이터가 무효화된 채로 해당 메모리 블록이 희생 블록으로 선정될 수 있다. 이러한 경우, 해당 메모리 블록의 논리 페이지들에 해당하는 데이터가 충분히 무효화되는 경우보다, 가비지 컬렉션이 빈번하게 수행될 것이다. 가비지 컬렉션이 빈번하게 수행되는 것은 메모리 시스템(10)의 동작 속도를 감소시키는 것을 의미한다.
본 발명의 실시 예에 따르면, 멀티 레벨 셀들을 포함하는 메모리 블록에 대응하는 카운트 값들은 그대로 임계값과 비교되어 해당 메모리 블록이 희생 블록으로 선정될지 여부가 결정된다. 싱글 레벨 셀들을 포함하는 메모리 블록에 대응하는 카운트 값들에는 가중치가 적용되어 비교 카운트 값들이 생성되고, 비교 카운트 값들과 임계값이 비교되어 해당 메모리 블록이 희생 블록으로 선정될지 여부가 결정된다. 싱글 레벨 셀들을 포함하는 메모리 블록에 대한 가비지 컬렉션은 빈번하게 수행되지 않을 것이다. 따라서 향상된 동작 속도를 갖는 메모리 시스템(10)이 제공된다.
도 3은 메모리 시스템(10)의 변형 실시 예(1000)를 보여주는 블록도이다.
도 3을 참조하면, 메모리 시스템(1000)은 복수의 반도체 메모리 장치들(1110~11k0) 및 메모리 컨트롤러(1200)를 포함한다.
제 1 내지 제 k 반도체 메모리 장치들(1110~11k0) 각각은 도 1을 참조하여 설명된 반도체 메모리 장치(100)와 마찬가지로 구성되고, 동작할 것이다.
메모리 컨트롤러(1200)은 램(1210) 및 플래시 변환 레이어(1220)를 포함한다.
메모리 컨트롤러(1200)는 제 1 내지 제 k 채널들(CH1~CHk)을 통해 제 1 내지 제 k 반도체 메모리 장치들(1110~11k0)과 통신한다.
플래시 변환 레이어(1220)는 도 1을 참조하여 설명된 플래시 변환 레이어(220)와 마찬가지로 각 반도체 메모리 장치를 제어하도록 구성될 것이다.
플래시 변환 레이어(1220)는 호스트(Host)로부터의 요청에 응답하여 반도체 메모리 장치들(1110~11k0)을 엑세스할 것이다. 플래시 변환 레이어(1220)는 논리 블록 어드레스 및 물리 블록 어드레스의 매핑 관계를 맵 테이블(MPT)에 업데이트할 것이다. 플래시 변환 레이어(220)는 램(210)에 카운트 테이블(CNT)을 저장하고, 관리하도록 구성된다. 이때, 카운트 테이블(CNT)은 반도체 메모리 장치들(1110~11k0) 각각에 포함된 메모리 블록의 유효 페이지들의 개수를 카운트 값으로서 저장할 것이다.
도 4는 도 3의 반도체 메모리 장치들(1110~11k0)에 포함된 메모리 블록들을 설명하기 위한 도면이다. 도 4에서, 설명의 편의를 위해 8개의 반도체 메모리 장치들(1110~118)이 제공된다고 가정한다.
실시 예로서, 각 반도체 메모리 장치는 싱글 레벨 셀들을 포함하거나 멀티 레벨 셀들을 포함할 수 있다. 도 4를 참조하면, 복수의 반도체 메모리 장치들(1110~1180)은 복수의 메모리 그룹들(MG1, MG2)로 구분된다. 제 1 메모리 그룹(MG1)의 메모리 셀들은 싱글 레벨 셀들로 정의될 수 있다. 제 2 메모리 그룹(MG2)의 메모리 셀들은 멀티 레벨 셀들로 정의될 수 있다.
제 1 메모리 그룹(MG1)은 제 1 내지 제 4 반도체 메모리 장치들(1110~1140)을 포함한다. 제 1 메모리 그룹(MG1)의 반도체 메모리 장치들(1110~1140) 각각은 제 1 내지 제 z 메모리 블록들(BLK11~BLK1z)을 포함하고, 제 1 내지 제 z 메모리 블록들(BLK11~BLK1z) 각각은 제 1 내지 제 n 물리 페이지들(PP11~PP1n)을 포함할 것이다. 제 1 메모리 그룹(MG1)의 메모리 셀들은 싱글 레벨 셀들이므로, 제 1 내지 제 n 물리 페이지들(PP11~PP1n)은 하나의 논리 페이지(LP)를 포함할 것이다.
제 2 메모리 그룹(MG2)은 제 5 내지 제 8 반도체 메모리 장치들(1150~1180)을 포함한다. 제 2 메모리 그룹(MG2)의 반도체 메모리 장치들(1150~1180) 각각은 제 1 내지 제 z 메모리 블록들(BLK21~BLK2z)을 포함하고, 제 1 내지 제 z 메모리 블록들(BLK21~BLK2z) 각각은 제 1 내지 제 n 물리 페이지들(PP21~PP2n)을 포함할 것이다. 제 2 메모리 그룹(MG2)의 메모리 셀들은 멀티 레벨 셀들이므로, 제 1 내지 제 n 물리 페이지들(PP21~PP2n) 각각은 복수의 논리 페이지들(LPs), 예를 들면 2개의 논리 페이지들(LPs)을 포함할 것이다.
본 발명의 기술적 사상은 도 3의 실시 예에도 적용된다. 메모리 시스템(1000, 도 3 참조) 내 각 반도체 메모리 장치가 싱글 레벨 셀들 또는 멀티 레벨 셀들을 포함하는 것은, 메모리 시스템(1000) 내 각 메모리 블록이 싱글 레벨 셀들 또는 멀티 레벨 셀들을 포함하는 것을 의미할 것이다. 예를 들면, 도 4의 메모리 블록(BLK12)은 싱글 레벨 셀들을 포함하고, 따라서 메모리 블록(BLK12)의 각 물리 페이지는 하나의 논리 페이지(LP)를 포함할 것이다. 예를 들면, 메모리 블록(BLK22)은 멀티 레벨 셀들을 포함하고, 따라서 메모리 블록(BLK22)의 각 물리 페이지는 복수의 논리 페이지들(LPs)을 포함할 것이다. 가비지 컬렉션 시에, 메모리 시스템(1000) 내 메모리 블록들 중 적어도 하나가 희생 블록으로 선정되고, 메모리 시스템(1000) 내 메모리 블록들 중 하나가 타겟 블록으로 선정될 것이다.
이하, 설명의 편의를 위해 도 1의 실시 예를 기준으로 본 발명의 실시 예가 설명된다.
도 5는 도 1의 카운트 테이블(CNT)을 보여주는 테이블이다. 도 6은 메모리 블록들(BLK1~BLKz) 중 어느 하나(BLK2) 내 논리 페이지들을 보여주는 개념도이다.
도 5를 참조하면, 카운트 테이블(CNT)은 제 1 내지 제 z 카운트 값들(CNV1~CNVz)을 포함한다. 제 1 내지 제 z 카운트 값들(CNV1~CNVz)은 각각 제 1 내지 제 z 메모리 블록들(BLK1~BLKz)에 대응한다.
각 카운트 값은 해당 메모리 블록의 유효 페이지들의 개수를 나타낼 것이다. 도 6를 참조하면, 제 2 메모리 블록(BLK2)은 복수의 논리 페이지들(LP1~LP4)을 포함하고 있다. 도 6에서, 설명의 편의를 위해 제 2 메모리 블록(BLK2)이 4개의 논리 페이지들(LP1~LP4)을 포함한다고 예시된다. 도 6에서, 빗금친 영역은 유효 페이지를 나타내고, 빗금치지 않은 영역은 무효 페이지를 나타낸다. 복수의 논리 페이지들(LP1~LP4) 중 1개의 논리 페이지(LP1)는 유효 페이지에 해당한다. 복수의 논리 페이지들(LP1~LP4) 중 3개의 논리 페이지들(LP1~LP3)은 무효 페이지들에 해당한다. 이러한 경우, 제 2 메모리 블록(BLK2)에 해당하는 카운트 값(CNV2)은 1일 것이다.
도 7은 본 발명의 실시 예에 따른 컨트롤러(200)의 동작 방법을 보여주는 순서도이다.
도 1, 도 2 및 도 7을 참조하면, S110단계에서, 메모리 블록들(BLK1~BLKz) 각각의 유효 페이지들에 따라 카운트 값들(CNV1~CNVz, 도 5 참조)을 업데이트한다.
실시 예로서, 플래시 변환 레이어(220)는 임의의 논리 블록 어드레스에 대응하는 데이터가 갱신되어 무효 페이지가 발생될 때마다, 해당 무효 페이지를 포함하는 메모리 블록의 카운트 값을 감소시킬 것이다. 실시 예로서, 플래시 변환 레이어(220)는 메모리 블록 내 논리 페이지들에 포함된 플래그 비트들을 참조함으로써 해당 카운트 값을 업데이트할 것이다. 실시 예로서, 플래시 변환 레이어(220)는 맵 테이블(MPT)을 참조함으로써 각 메모리 블록의 카운트 값을 업데이트할 것이다. 이 밖에도 다양한 방법들을 이용하여 제 1 내지 제 z 카운트 값들(CNV1~CNVz)이 업데이트될 것이다.
S130단계 내지 S170단계에서, 가비지 컬렉션이 수행된다.
S130단계에서, 싱글 레벨 셀들을 포함하는 메모리 블록의 카운트 값에 가중치를 부여하여 비교 카운트 값을 생성한다. 비교 카운트 값은 카운트 테이블(CNT) 내 해당 카운트 값보다 큰 값이다. 메모리 블록들(BLKx~BLKz)의 메모리 셀들 각각은 2 비트들을 저장한다. 메모리 블록들(BLKx~BLKz) 각각에 포함된 논리 페이지들의 개수는 메모리 블록들(BLK1~BLKx-1) 각각에 포함된 논리 페이지들의 개수보다 2배만큼 클 것이다. 이러한 경우 싱글 레벨 셀들을 포함하는 메모리 블록의 카운트 값에 2를 곱함으로써 비교 카운트 값이 결정된다.
본 발명의 기술적 사상은 제 1 메모리 블록 그룹(BLKG1)의 메모리 셀들이 싱글 레벨 셀들이 아닌 경우에도 적용될 수 있음이 이해될 것이다. 실시 예로서, 메모리 블록들(BLK1~BLKx-1)의 메모리 셀들 각각에 p 비트들이 저장되고, 메모리 블록들(BLKx~BLKz)의 메모리 셀들 각각에 q 비트들이 저장된다고 가정한다. q는 p보다 큰 정수이다. 이러한 경우 메모리 블록들(BLK1~BLKx-1) 각각에 해당하는 카운트 값에 q를 p로 나눈 값을 곱함으로써, 해당 메모리 블록의 비교 카운트 값이 결정될 수 있다.
S140단계에서, 멀티 레벨 셀들을 포함하는 메모리 블록의 카운트 값, 그리고 비교 카운트 값이 임계값과 비교된다. S150단계에서, 비교 결과 임계값보다 작은 카운트 값이 존재할 때 S160단계가 수행된다. 비교 결과 임계값보다 작은 카운트 값이 존재하지 않을 때 S110단계가 수행된다.
S160단계에서, 임계값보다 작은 카운트 값에 해당하는 메모리 블록이 희생 블록으로 정의된다. 멀티 레벨 셀들을 포함하는 메모리 블록의 카운트 값이 임계값보다 작을 때 해당 메모리 블록은 희생 블록으로 선정될 것이다. 싱글 레벨 셀들을 포함하는 메모리 블록의 비교 카운트 값이 임계값보다 작을 때 해당 메모리 블록은 희생 블록으로 선정될 것이다.
S170단계에서, 선정된 희생 블록 내 유효 페이지들의 데이터가 타겟 블록에 저장된다. 메모리 블록들(BLK1~BLKz) 중 어느 하나가 타겟 블록으로서 선정될 것이다. 예를 들면 소거 상태에 해당하는 메모리 셀들을 포함하는 메모리 블록이 타겟 블록으로서 선정될 것이다. 그러한 소거 상태에 해당하는 문턱 전압들을 갖는 메모리 셀들에, 유효 페이지들의 데이터가 저장될 것이다. 컨트롤러(200)는 유효 페이지의 데이터를 읽도록 반도체 메모리 장치(100)를 제어하고, 유효 페이지로부터 읽어진 데이터를 수신할 것이다. 그리고, 컨트롤러(200)는 읽어진 데이터를 타겟 블록에 저장할 것이다.
이후, 컨트롤러(200)는 희생 블록에 대한 소거 동작을 수행하도록 반도체 메모리 장치(100)를 제어할 수 있다. 반도체 메모리 장치(100)는 희생 블록에 대한 소거 동작을 수행하고, 이에 따라 희생 블록의 메모리 셀들은 소거 상태에 해당하는 문턱 전압들을 갖게 되고, 희생 블록은 데이터를 저장하지 않는 빈(empty) 영역으로 세팅된다.
도 8은 임계값과 비교되는 카운트 값들을 설명하기 위한 도면이다.
도 8을 참조하면, 카운트 테이블(CNT)은 제 1 내지 제 z 메모리 블록들(BLK1~BLKz)에 각각 대응하는 제 1 내지 제 z 카운트 값들(CNV1~CNVz)을 포함한다.
제 1 내지 제 z 메모리 블록들(BLK1~BLKz, 도 1 참조)로부터 희생 블록이 선정된다. 싱글 레벨 셀들을 포함하는 메모리 블록들(BLK1~BLKx-1, 도 2 참조)의 카운트 값들(CNV1~CNVx-1)에 가중치를 곱함으로써 비교 카운트 값들(CMPV1~CMPVx-1)이 생성된다. 제 x 내지 제 z 메모리 블록들(BLKx~BLKz, 도 2 참조)의 메모리 셀들 각각에 2비트들이 저장될 때, 메모리 블록들(BLK1~BLKx-1)의 카운트 값들(CNV1~CNVx-1) 각각에 2를 곱함으로써 비교 카운트 값들(CMPV1~CMPVx-1)이 결정될 것이다. 다른 예로서, 제 x 내지 제 z 메모리 블록들(BLKx~BLKz)의 메모리 셀들 각각에 q비트들이 저장될 때, 메모리 블록들(BLK1~BLKx-1)의 카운트 값들(CNV1~CNVx-1) 각각에 q를 곱함으로써 비교 카운트 값들(CMPV1~CMPVx-1)이 결정된다. 제 x 내지 제 z 메모리 블록들(BLKx~BLKz)의 메모리 셀에 저장되는 비트 수를 제 1 내지 제 x-1 메모리 블록들(BLK1~BLKx-1)의 메모리 셀에 저장되는 비트 수로 나눈 값이 가중치로서 결정될 수 있다.
이후 카운트 값들(CV)이 임계값과 비교될 것이다. 제 1 내지 제 x-1 메모리 블록들(BLK1~BLKx-1)과 관련하여 제 1 내지 제 x-1 비교 카운트 값들(CMPV1~CMPVx-1)이 임계값과 비교될 것이다. 제 x 내지 제 z 메모리 블록들(BLKx~BLKz)과 관련하여 제 x 내지 제 z 카운트 값들(CNVx~CNVz)이 임계값과 비교될 것이다.
도 9는 적어도 하나의 희생 블록(VCTBs)이 선정되는 것을 설명하기 위한 개념도이다. 도 9을 참조한 설명에서, 설명의 편의를 위해, 희생 블록들(VCTBs)을 선정하는 데에 제 1, 제 2, 제 x+1 및 제 x+2 메모리 블록들(BLK1, BLK2, BLKx+1, BLKx+2)이 고려되고, 나머지 메모리 블록들(BLK3~BLKx, BLKx+3~BLKz)은 고려되지 않는다. 도 9를 참조한 설명에서, 인식의 편의를 위해 하나의 메모리 블록에 4개의 물리 페이지들이 포함된다고 가정한다.
도 9를 참조하면, 제 1 및 제 2 메모리 블록들(BLK1, BLK2)은 싱글 레벨 셀들을 포함하므로, 하나의 물리 페이지는 하나의 논리 페이지를 포함한다. 제 1 및 제 2 메모리 블록들(BLK1, BLK2) 각각은 4개의 논리 페이지들을 포함한다. 도 9에서, 빗금친 영역은 유효 페이지를 나타내고, 빗금치지 않은 영역은 무효 페이지를 나타낸다. 제 1 메모리 블록(BLK1)은 3개의 유효 페이지들와 1개의 무효 페이지를 포함한다. 제 2 메모리 블록(BLK2)은 1개의 유효 페이지와 3개의 무효 페이지들을 포함한다.
제 x+1 내지 제 x+2 메모리 블록들(BLKx+1~BLKx+2)은 멀티 레벨 셀들을 포함한다. 제 x+1 내지 제 x+2 메모리 블록들(BLKx+1~BLKx+2)의 메모리 셀들 각각이 2 비트들을 저장할 때, 하나의 물리 페이지는 2개의 논리 페이지들을 포함한다. 제 x+1 내지 제 x+2 메모리 블록들(BLKx+1~BLKx+2) 각각은 8개의 논리 페이지들을 포함할 것이다. 도 9에서, 제 x+1 메모리 블록(BLKx+1)은 3개의 유효 페이지와 5개의 무효 페이지들을 포함한다. 제 x+2 메모리 블록(BLKx+2)은 5개의 유효 페이지들과 3개의 무효 페이지들을 포함한다.
가중치를 적용하지 않고, 각 메모리 블록의 유효 페이지들의 개수와 임계값을 비교한다고 가정한다. 임계값은 4으로 가정한다. 4보다 작은 유효 페이지들을 갖는 제 1, 제 2 및 제 x+1 메모리 블록들(BLK1, BLK2, BLKx+1)은 희생 블록들로 선정될 수 있다. 제 2 및 제 x+1 메모리 블록들(BLK2, BLKx+1)은 전체 논리 페이지들의 수 중 반 이하의 유효 페이지들을 포함한다. 하지만 제 1 메모리 블록(BLK1)은 전체 논리 페이지들의 수 중 반 이상의 유효 페이지들을 포함한다. 그럼에도 불구하고, 제 1 메모리 블록(BLK1)은 희생 블록으로 선정될 수 있다. 이는, 제 1 메모리 블록(BLK1) 내 비교적 많은 수의 논리 페이지들이 아직 유효함에도 제 1 메모리 블록(BLK1)이 희생 블록으로 선정됨을 의미한다. 이는, 제 1 메모리 블록(BLK1)의 논리 페이지들에 해당하는 데이터가 갱신되기 위한 충분한 시간이 제공되지 않고 제 1 메모리 블록(BLK1)이 희생 블록으로 선정됨을 의미한다. 이는, 제 1 메모리 블록(BLK1)의 논리 페이지들에 해당하는 데이터가 충분히 갱신된 후 제 1 메모리 블록(BLK1)이 희생 블록으로 선정되는 경우보다, 가비지 컬렉션이 빈번하게 수행됨을 의미할 수 있다. 싱글 메모리 셀들을 포함하는 메모리 블록이 멀티 레벨 셀들을 포함하는 메모리 블록을 위한 버퍼 영역으로서 사용될 때, 제 1 메모리 블록(BLK1)의 논리 페이지들에 해당하는 데이터가 갱신될 확률은 증가하므로, 제 1 메모리 블록(BLK1)의 유효 페이지들의 개수가 그대로 임계값과 비교되는 경우 가비지 컬렉션은 더 빈번하게 수행될 수 있다.
본 발명의 실시 예에 따르면, 희생 블록의 선정 시에 적은 비트를 저장하는 메모리 셀을 포함하는 메모리 블록의 카운트 값에 가중치가 적용된다. 제 1 및 제 2 메모리 블록들(BLK1, BLK2) 각각에 해당하는 유효 페이지들의 수에 2가 곱해진다. 가중치가 적용된 후에, 제 1 메모리 블록(BLK1)은 6개의 유효 페이지들을 포함하는 것으로 고려될 수 있다. 제 2 메모리 블록(BLK2)은 2개의 유효 페이지들을 포함하는 것으로 고려될 수 있다. 즉 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 비교 카운트 값들(CMPV1, CMPV2)은 각각 6과 2로 결정된다.
제 1 및 제 2 메모리 블록들(BLK1, BLK2)과 관련하여 제 1 및 제 2 비교 카운트 값들(CMPV1, CMPV2)이 임계값과 비교되고, 제 x+1 및 제 x+2 메모리 블록들(BLKx+1, BLKx+2)과 관련하여 제 x+1 및 제 x+2 카운트 값들(CNVx+1, CNVx+2)이 임계값과 비교된다. 임계값 4보다 적은 카운트 값을 갖는 제 2 및 제 x+1 메모리 블록들(BLK2, BLKx+1)이 희생 블록들(VCTBs)로 선정될 것이다. 제 1 비교 카운트 값(CMPV1)은 임계값 4보다 적지 않으므로, 제 1 메모리 블록(BLK1)은 희생 블록으로 선정되지 않을 것이다.
본 발명의 실시 예에 따르면, 싱글 레벨 셀을 포함하는 메모리 블록의 카운트 값에 가중치가 적용되어 비교 카운트 값이 생성되고 비교 카운트 값과 임계값이 비교될 수 있다. 멀티 레벨 셀들을 포함하는 메모리 블록의 카운트 값은 그대로 임계값과 비교될 수 있다. 이에 따라, 각 메모리 블록이 싱글 레벨 셀들을 포함하는 메모리 블록인지 멀티 레벨 셀들을 포함하는 메모리 블록인지 여부에 관계없이, 각 메모리 블록의 논리 페이지들 중 유효 페이지들이 차지하는 비율에 따라 희생 블록이 선정될 수 있다. 따라서, 가비지 컬렉션은 효율적으로 수행될 것이다.
도 10은 도 1의 메모리 시스템(10)의 구현 례(2000)를 보여주는 블록도이다.
도 10을 참조하면, 메모리 시스템(2000)은 반도체 메모리 장치(100) 및 컨트롤러(1200)를 포함한다.
반도체 메모리 장치(100)는 도 1을 참조하여 설명된 바와 마찬가지로 구성되고, 동작할 수 있다. 이하, 중복되는 설명은 생략된다.
컨트롤러(2200)는 호스트(Host) 및 반도체 메모리 장치(100)에 연결된다. 컨트롤러(2200)는 램(2210, Random Access Memory), 프로세싱 유닛(2220, processing unit), 호스트 인터페이스(2230, host interface), 메모리 인터페이스(2240, memory interface) 및 에러 정정 블록(2250)을 포함한다.
램(2210)은 프로세싱 유닛(2220)의 동작 메모리, 반도체 메모리 장치(100) 및 호스트(Host) 사이의 캐시 메모리, 그리고 반도체 메모리 장치(100) 및 호스트(Host) 사이의 버퍼 메모리 중 적어도 하나로서 이용된다. 프로세싱 유닛(2220)은 컨트롤러(2200)의 제반 동작을 제어한다. 프로세싱 유닛(2220) 및 램(2210)은 도 1을 참조하여 설명된 플래시 변환 레이어(220)의 기능을 수행할 수 있다. 예를 들면, 플래시 변환 레이어(220)의 기능을 수행하기 위한 프로그램 코드가 반도체 메모리 장치(100)에 저장되고, 그러한 프로그램 코드가 램(2210)에 로드되고, 프로세싱 유닛(2220)은 램(2210)에 로드된 프로그램 코드를 실행하여 플래시 변환 레이어(220)의 기능을 수행할 수 있다. 예를 들면, 프로세싱 유닛(2220)은 펌웨어(firmware)를 구동함으로써 플래시 변환 레이어(220)의 기능을 수행할 수 있다.
호스트 인터페이스(2230)는 호스트(Host) 및 컨트롤러(2200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 예시적인 실시 예로서, 컨트롤러(2200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜, 사유(private) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(Host)와 통신하도록 구성된다.
메모리 인터페이스(2240)는 반도체 메모리 장치(100)와 인터페이싱한다. 예를 들면, 메모리 인터페이스는 낸드 인터페이스 또는 노어 인터페이스를 포함한다.
에러 정정 블록(2250)은 에러 정정 코드(ECC, Error Correcting Code)를 이용하여 반도체 메모리 장치(100)로부터 수신된 데이터의 에러를 검출하고, 정정하도록 구성된다.
컨트롤러(2200) 및 반도체 메모리 장치(100)는 하나의 반도체 장치로 집적될 수 있다. 예시적인 실시 예로서, 컨트롤러(2200) 및 반도체 메모리 장치(100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(2200) 및 반도체 메모리 장치(100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 것이다.
컨트롤러(2200) 및 반도체 메모리 장치(100)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다. 메모리 시스템(2000)이 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(2000)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선된다.
다른 예로서, 메모리 시스템(2000)은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
예시적인 실시 예로서, 반도체 메모리 장치(100) 또는 메모리 시스템(2000)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 반도체 메모리 장치(100) 또는 메모리 시스템(2000)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline integrated circuit (SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline Package(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
본 발명의 실시 예에 따르면, 각 메모리 블록이 싱글 레벨 셀들을 포함하는 메모리 블록인지 멀티 레벨 셀들을 포함하는 메모리 블록인지 여부에 관계없이, 각 메모리 블록의 논리 페이지들 중 유효 페이지들이 차지하는 비율에 따라 희생 블록이 선정될 수 있다. 따라서, 가비지 컬렉션은 효율적으로 수행될 것이다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 반도체 메모리 장치
110: 메모리 셀 어레이
120: 주변 회로
200: 컨트롤러
210: 램
220: 플래시 변환 레이어
CNV1~CNVz: 제 1 내지 제 z 카운트 값들
CMPV1~CMPVx: 제 1 내지 제 x 비교 카운트 값들
110: 메모리 셀 어레이
120: 주변 회로
200: 컨트롤러
210: 램
220: 플래시 변환 레이어
CNV1~CNVz: 제 1 내지 제 z 카운트 값들
CMPV1~CMPVx: 제 1 내지 제 x 비교 카운트 값들
Claims (17)
- 복수의 메모리 블록들을 포함하는 반도체 메모리 장치에 대한 관리 방법에 있어서;
상기 복수의 메모리 블록들 중 제 1 메모리 블록은 싱글 레벨 셀들을 포함하고 상기 복수의 메모리 블록들 중 제 2 메모리 블록은 멀티 레벨 셀들을 포함하되,
상기 제 1 메모리 블록 내 유효 페이지들의 개수를 제 1 카운트 값으로 결정하는 단계;
상기 제 2 메모리 블록 내 유효 페이지들의 개수를 제 2 카운트 값으로 결정하는 단계;
상기 제 1 카운트 값에 가중치를 부여하여 상기 제 1 카운트 값보다 큰 비교 카운트 값을 생성하는 단계; 및
상기 비교 카운트 값 및 상기 제 2 카운트 값을 임계값과 비교함에 따라 상기 제 1 및 제 2 메모리 블록들을 희생 블록으로 정의하는 단계를 포함하는 관리 방법. - 제 1 항에 있어서,
상기 제 2 메모리 블록의 메모리 셀들 각각에 2 비트들이 저장될 때 상기 제 1 카운트 값에 2를 곱함으로써 상기 비교 카운트 값이 결정되는 관리 방법. - 제 1 항에 있어서,
상기 제 2 메모리 블록의 메모리 셀들 각각에 n (n은 2보다 큰 정수)비트들이 저장될 때 상기 제 1 카운트 값에 n을 곱함으로써 상기 비교 카운트 값이 결정되는 관리 방법. - 제 1 항에 있어서,
상기 비교 카운트 값이 임계값보다 작을 때 상기 제 1 메모리 블록이 상기 희생 블록으로 정의되는 관리 방법. - 제 1 항에 있어서,
상기 제 2 카운트 값이 임계값보다 작을 때 상기 제 2 메모리 블록이 상기 희생 블록으로 정의되는 관리 방법. - 제 1 항에 있어서,
상기 희생 블록 내 유효 페이지들의 데이터를 상기 복수의 메모리 블록들 중 제 3 메모리 블록에 저장하는 단계를 더 포함하는 관리 방법. - 제 6 항에 있어서,
상기 희생 블록 내 유효 페이지들의 데이터를 소거하는 단계를 더 포함하는 관리 방법. - 싱글 레벨 셀들을 포함하는 제 1 메모리 블록 및 멀티 레벨 셀들을 포함하는 제 2 메모리 블록을 포함하는 적어도 하나의 반도체 메모리 장치; 및
상기 제 1 및 제 2 메모리 블록들 중 적어도 하나를 희생 블록으로 선정할 때 상기 제 1 메모리 블록 내 유효 페이지들의 개수를 제 1 카운트 값으로 결정하고 상기 제 2 메모리 블록 내 유효 페이지들의 개수를 제 2 카운트 값으로 결정하도록 구성되는 컨트롤러를 포함하되,
상기 컨트롤러는 상기 제 1 카운트 값에 가중치를 부여하여 상기 제 1 카운트 값보다 큰 비교 카운트 값을 생성하고, 상기 비교 카운트 값 및 상기 제 2 카운트 값을 임계값과 비교함에 따라 상기 제 1 및 제 2 메모리 블록들을 희생 블록으로 선정하도록 구성되는 메모리 시스템. - 제 8 항에 있어서,
상기 컨트롤러는 상기 제 2 메모리 블록의 메모리 셀들 각각에 2 비트들이 저장될 때 상기 제 1 카운트 값에 2를 곱함으로써 상기 비교 카운트 값을 생성하는 메모리 시스템. - 제 8 항에 있어서,
상기 컨트롤러는 상기 제 2 메모리 블록의 메모리 셀들 각각에 n(n은 2보다 큰 정수)비트들이 저장될 때 상기 제 1 카운트 값에 n을 곱함으로써 상기 비교 카운트 값을 생성하는 메모리 시스템. - 제 8 항에 있어서,
상기 컨트롤러는 상기 비교 카운트 값이 임계값보다 작을 때 상기 제 1 메모리 블록을 상기 희생 블록으로 정의하는 메모리 시스템. - 제 8 항에 있어서,
상기 컨트롤러는 상기 제 2 카운트 값이 임계값보다 작을 때 상기 제 2 메모리 블록을 상기 희생 블록으로 정의하는 메모리 시스템. - 제 8 항에 있어서,
상기 반도체 메모리 장치는 제 3 메모리 블록을 더 포함하고,
상기 컨트롤러는 상기 희생 블록 내 유효 페이지들의 데이터를 상기 제 3 메모리 블록에 저장하는 메모리 시스템. - 제 8 항에 있어서,
상기 컨트롤러는,
프로세싱 유닛; 및
램을 포함하되,
상기 프로세싱 유닛은 상기 램에 상기 제 1 및 제 2 메모리 블록들 내 유효 페이지들에 해당하는 물리 블록 어드레스들, 그리고 해당 논리 블록 어드레스들 사이의 매핑 관계를 포함하는 맵 테이블을 저장하는 메모리 시스템. - 제 8 항에 있어서,
상기 프로세싱 유닛은 상기 램에 상기 제 1 및 제 2 카운트 값들을 저장하고, 상기 제 1 및 제 2 메모리 블록들 내 유효 페이지들 각각이 무효화될 때마다 상기 제 1 및 제 2 카운트 값들을 조절하는 메모리 시스템. - n 비트들을 각각 저장하는 메모리 셀들을 포함하는 제 1 메모리 블록 및 m 비트들을 각각 저장하는 메모리 셀들을 포함하는 제 2 메모리 블록을 갖는 적어도 하나의 반도체 메모리 장치; 및
상기 제 1 및 제 2 메모리 블록들 중 적어도 하나를 희생 블록으로 선정할 때 상기 제 1 메모리 블록 내 유효 페이지들의 개수를 제 1 카운트 값으로 결정하고 상기 제 2 메모리 블록 내 유효 페이지들의 개수를 제 2 카운트 값으로 결정하도록 구성되는 컨트롤러를 포함하되,
상기 n과 상기 m은 정수이고, 상기 m은 상기 n보다 크고,
상기 컨트롤러는 상기 제 1 카운트 값에 가중치를 부여하여 상기 제 1 카운트 값보다 큰 비교 카운트 값을 생성하고, 상기 비교 카운트 값 및 상기 제 2 카운트 값을 임계값과 비교함에 따라 상기 제 1 및 제 2 메모리 블록들을 희생 블록으로 선정하도록 구성되는 메모리 시스템. - 제 16 항에 있어서,
상기 가중치는 상기 m을 n으로 나눈 값인 메모리 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140173320A KR20160068108A (ko) | 2014-12-04 | 2014-12-04 | 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 관리 방법 |
US14/713,695 US20160163381A1 (en) | 2014-12-04 | 2015-05-15 | Memory system including semiconductor memory device and method of operating the same |
CN201510299782.8A CN106201908A (zh) | 2014-12-04 | 2015-06-03 | 包括半导体存储器件的存储系统及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140173320A KR20160068108A (ko) | 2014-12-04 | 2014-12-04 | 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 관리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160068108A true KR20160068108A (ko) | 2016-06-15 |
Family
ID=56094890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140173320A KR20160068108A (ko) | 2014-12-04 | 2014-12-04 | 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 관리 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160163381A1 (ko) |
KR (1) | KR20160068108A (ko) |
CN (1) | CN106201908A (ko) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190112513A (ko) * | 2018-03-26 | 2019-10-07 | 성균관대학교산학협력단 | 비휘발성 메모리 장치, 및 비휘발성 메모리의 데이터 관리 방법 |
KR20190143531A (ko) | 2018-06-11 | 2019-12-31 | 주식회사 티맥스오에스 | 컨테이너 기반 클라우드 서버를 위한 통합관리 시스템 |
KR20200013028A (ko) | 2020-01-29 | 2020-02-05 | 주식회사 티맥스에이앤씨 | 컨테이너 기반 클라우드 서버를 위한 통합관리 시스템 |
KR20200064568A (ko) * | 2018-11-29 | 2020-06-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR102187384B1 (ko) | 2020-07-31 | 2020-12-07 | 나무기술 주식회사 | 클라우드 인프라 기반의 컨테이너 가상os 통합 표준화 시스템 |
US11055216B2 (en) | 2018-12-14 | 2021-07-06 | SK Hynix Inc. | Controller and operating method thereof |
KR102322312B1 (ko) | 2021-05-24 | 2021-11-05 | 나무기술 주식회사 | 쿠버네티스 RBAC(Role Based Access Control)를 이용한 컨테이너 보안 관리 시스템 |
CN115048039A (zh) * | 2021-03-09 | 2022-09-13 | 美光科技公司 | 用于基于有效转换单元计数的存储器管理的方法、设备和系统 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180092435A (ko) * | 2017-02-09 | 2018-08-20 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20180093153A (ko) * | 2017-02-09 | 2018-08-21 | 에스케이하이닉스 주식회사 | 데이터 저장 장치의 동작 방법 |
KR20190044798A (ko) * | 2017-10-23 | 2019-05-02 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
KR102679967B1 (ko) * | 2018-09-12 | 2024-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 관리 방법 및 장치 |
KR20200142393A (ko) * | 2019-06-12 | 2020-12-22 | 에스케이하이닉스 주식회사 | 저장 장치, 호스트 장치 및 그들의 동작 방법 |
KR20210127026A (ko) * | 2020-04-13 | 2021-10-21 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11237958B1 (en) * | 2021-01-11 | 2022-02-01 | Oracle International Corporation | Low overhead cardinality estimation for incoming references in regional garbage collection |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5907739B2 (ja) * | 2012-01-26 | 2016-04-26 | 株式会社日立製作所 | 不揮発性記憶装置 |
US8949689B2 (en) * | 2012-06-11 | 2015-02-03 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
KR102147359B1 (ko) * | 2012-06-29 | 2020-08-24 | 삼성전자 주식회사 | 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치 |
US9645924B2 (en) * | 2013-12-16 | 2017-05-09 | International Business Machines Corporation | Garbage collection scaling |
-
2014
- 2014-12-04 KR KR1020140173320A patent/KR20160068108A/ko not_active Application Discontinuation
-
2015
- 2015-05-15 US US14/713,695 patent/US20160163381A1/en not_active Abandoned
- 2015-06-03 CN CN201510299782.8A patent/CN106201908A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190112513A (ko) * | 2018-03-26 | 2019-10-07 | 성균관대학교산학협력단 | 비휘발성 메모리 장치, 및 비휘발성 메모리의 데이터 관리 방법 |
KR20190143531A (ko) | 2018-06-11 | 2019-12-31 | 주식회사 티맥스오에스 | 컨테이너 기반 클라우드 서버를 위한 통합관리 시스템 |
KR20200064568A (ko) * | 2018-11-29 | 2020-06-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11055216B2 (en) | 2018-12-14 | 2021-07-06 | SK Hynix Inc. | Controller and operating method thereof |
KR20200013028A (ko) | 2020-01-29 | 2020-02-05 | 주식회사 티맥스에이앤씨 | 컨테이너 기반 클라우드 서버를 위한 통합관리 시스템 |
KR102187384B1 (ko) | 2020-07-31 | 2020-12-07 | 나무기술 주식회사 | 클라우드 인프라 기반의 컨테이너 가상os 통합 표준화 시스템 |
CN115048039A (zh) * | 2021-03-09 | 2022-09-13 | 美光科技公司 | 用于基于有效转换单元计数的存储器管理的方法、设备和系统 |
CN115048039B (zh) * | 2021-03-09 | 2023-09-05 | 美光科技公司 | 用于基于有效转换单元计数的存储器管理的方法、设备和系统 |
KR102322312B1 (ko) | 2021-05-24 | 2021-11-05 | 나무기술 주식회사 | 쿠버네티스 RBAC(Role Based Access Control)를 이용한 컨테이너 보안 관리 시스템 |
Also Published As
Publication number | Publication date |
---|---|
CN106201908A (zh) | 2016-12-07 |
US20160163381A1 (en) | 2016-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160068108A (ko) | 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 관리 방법 | |
US11086518B2 (en) | Memory system and operating method thereof | |
US9761287B2 (en) | Semiconductor memory device, memory system including the same and operating method thereof | |
US9529705B2 (en) | Nonvolatile memory system including nonvolatile memory device and memory controller that loads a mapping table on a sub-bitmap and method of operating the memory controller | |
CN106201901B (zh) | 包括映射表的控制器、包括半导体存储器件的存储系统及其操作方法 | |
EP1906311B1 (en) | Mapping apparatus and method for non-volatile memory supporting different cell types | |
US10296452B2 (en) | Data separation by delaying hot block garbage collection | |
US11630766B2 (en) | Memory system and operating method thereof | |
US10061695B2 (en) | Memory system and operating method thereof | |
CN106128505B (zh) | 包括半导体存储器件的存储系统以及其编程方法 | |
US10782909B2 (en) | Data storage device including shared memory area and dedicated memory area | |
US10409718B2 (en) | Memory system and operating method thereof | |
KR20120109903A (ko) | 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템 | |
US20100211820A1 (en) | Method of managing non-volatile memory device and memory system including the same | |
KR20160146332A (ko) | 복수의 저장 영역들을 포함하는 메모리 시스템 및 그것의 동작 방법 | |
US20160378375A1 (en) | Memory system and method of operating the same | |
KR20120124285A (ko) | 배드 블록 관리를 위한 방법 및 메모리 시스템 | |
KR20200137244A (ko) | 메모리 시스템 및 그것의 동작방법 | |
US20220405201A1 (en) | Storage device for performing dump operation, method of operating storage device, computing system including storage device and host device for controlling storage device, and method of operating computing system | |
US10019158B2 (en) | Determination of a read voltage to be applied to a page based on read voltages of other pages | |
US8656084B2 (en) | User device including flash memory storing index and index accessing method thereof | |
US20150121168A1 (en) | Memory system including randomizer and de-randomizer | |
US9465747B2 (en) | Controller for controlling non-volatile memory and semiconductor device including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |