KR20240030819A - 스토리지 장치 및 스토리지 컨트롤러의 동작 방법 - Google Patents

스토리지 장치 및 스토리지 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20240030819A
KR20240030819A KR1020220110328A KR20220110328A KR20240030819A KR 20240030819 A KR20240030819 A KR 20240030819A KR 1020220110328 A KR1020220110328 A KR 1020220110328A KR 20220110328 A KR20220110328 A KR 20220110328A KR 20240030819 A KR20240030819 A KR 20240030819A
Authority
KR
South Korea
Prior art keywords
sub
blocks
block
victim
garbage collection
Prior art date
Application number
KR1020220110328A
Other languages
English (en)
Inventor
오은주
신범규
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020220110328A priority Critical patent/KR20240030819A/ko
Priority to US18/136,041 priority patent/US20240069789A1/en
Priority to EP23176316.0A priority patent/EP4332778A1/en
Priority to CN202310899108.8A priority patent/CN117632777A/zh
Publication of KR20240030819A publication Critical patent/KR20240030819A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

스토리지 장치 및 스토리지 컨트롤러의 동작 방법이 개시된다. 스토리지 장치는 독립적으로 소거 가능한 복수의 서브 블록들을 포함하는 비휘발성 메모리, 및 복수의 서브 블록들에 대한 가비지 콜렉션 동작을 제어하는 스토리지 컨트롤러를 포함한다. 복수의 서브 블록들은 제1 워드 라인 그룹에 각각 연결되고 각각 제1 블록 사이즈를 갖는 제1 서브 블록들, 및 제2 워드 라인 그룹에 각각 연결되고 각각 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 제2 서브 블록들을 포함한다. 스토리지 컨트롤러는 복수의 서브 블록들 중 유효 페이지 카운트의 무효 페이지 카운트에 대한 비율이 가장 낮은 희생 서브 블록을 선택하고, 희생 서브 블록의 유효 페이지를 복수의 서브 블록들 중 대상 서브 블록에 복사한다.

Description

스토리지 장치 및 스토리지 컨트롤러의 동작 방법{Storage Device and Method of Operating Storage Controller}
본 개시의 기술적 사상은 메모리 장치에 관한 것이며, 더욱 상세하게는, 서로 다른 사이즈를 갖는 서브 블록들을 포함하는 비휘발성 메모리를 포함하는 스토리지 장치 및 상기 비휘발성 메모리와 통신하는 스토리지 컨트롤러의 동작 방법에 관한 것이다.
메모리 장치는 데이터를 저장하는데 사용되며, 휘발성 메모리 장치와 비휘발성 메모리 장치로 구분된다. 비휘발성 메모리 장치에 대한 고용량화 및 소형화 요구에 따라, 기판 상에 적층되는 워드 라인들의 개수가 증가함에 따라 메모리 블록의 사이즈도 증가할 수 있다. 메모리 블록의 사이즈가 증가함에 따라, 메모리 블록은 적어도 두 개의 서브 블록들로 구분될 수 있고, 서브 블록 단위로 소거 동작을 수행할 수 있다. 비휘발성 메모리 장치의 경우, 프리 블록을 확보하기 위하여 가비지 콜렉션(garbage collection) 동작을 수행할 수 있는데, 서브 블록들의 사이즈 차이를 고려하지 않고 희생 서브 블록을 선택할 경우 가비지 콜렉션 동작의 효율 및 스토리지 장치의 성능이 저하될 수 있다.
본 개시의 기술적 사상은 사이즈가 서로 다른 서브 블록들을 포함하는 비휘발성 메모리에 대한 가비지 콜렉션 동작의 효율을 향상시킬 수 있는 스토리지 장치 및 스토리지 컨트롤러의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 스토리지 장치는, 독립적으로 소거 가능한 복수의 서브 블록들을 포함하는 비휘발성 메모리; 및 상기 복수의 서브 블록들에 대한 가비지 콜렉션 동작을 제어하는 스토리지 컨트롤러를 포함하고, 상기 복수의 서브 블록들은, 수직 방향을 따라 적층된 제1 워드 라인들을 포함하는 제1 워드 라인 그룹에 각각 연결되고, 각각 제1 블록 사이즈를 갖는 제1 서브 블록들; 및 상기 수직 방향을 따라 적층된 제2 워드 라인들을 포함하는 제2 워드 라인 그룹에 각각 연결되고, 각각 상기 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 제2 서브 블록들을 포함하고, 상기 스토리지 컨트롤러는, 상기 복수의 서브 블록들 중 유효 페이지 카운트의 무효 페이지 카운트에 대한 비율이 가장 낮은 희생 서브 블록을 선택하고, 상기 희생 서브 블록의 유효 페이지를 상기 복수의 서브 블록들 중 대상 서브 블록에 복사한다.
또한, 본 개시의 기술적 사상에 따른 스토리지 장치는, 각각 제1 블록 사이즈를 갖는 제1 서브 블록들 및 각각 상기 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 제2 서브 블록들을 포함하고, 상기 제1 및 제2 서브 블록들 각각은 복수의 메모리 셀들을 포함하는, 비휘발성 메모리; 및 상기 제1 서브 블록들에 대한 가비지 콜렉션 동작 및 상기 제2 서브 블록들에 대한 가비지 콜렉션 동작을 독립적으로 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는, 상기 제1 서브 블록들에 대한 제1 가비지 콜렉션 관리 테이블을 기초로, 상기 제1 서브 블록들 중 유효 페이지 카운트가 가장 적은 제1 희생 서브 블록의 유효 페이지를 상기 제1 서브 블록들 중 제1 대상 서브 블록에 복사하고, 상기 제2 서브 블록들에 대한 제2 가비지 콜렉션 관리 테이블을 기초로, 상기 제2 서브 블록들 중 유효 페이지 카운트가 가장 적은 제2 희생 서브 블록의 유효 페이지를 상기 제2 서브 블록들 중 제2 대상 서브 블록에 복사한다.
또한, 본 개시의 기술적 사상에 따른 스토리지 컨트롤러의 동작 방법은, 제1 서브 블록들 및 제2 서브 블록들을 포함하는 비휘발성 메모리와 통신하는 스토리지 컨트롤러의 동작 방법으로서, 각각 제1 블록 사이즈를 갖는 상기 제1 서브 블록들 및 각각 상기 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 상기 제2 서브 블록들 중 희생 서브 블록을 선택하는 단계; 상기 희생 서브 블록의 유효 페이지를 대상 서브 블록에 복사하는 단계; 및 상기 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함하고, 상기 희생 서브 블록을 선택하는 단계는, 상기 제1 서브 블록들 및 상기 제2 서브 블록들 중 유효 페이지 카운트의 무효 페이지 카운트에 대한 비율 값이 가장 작은 서브 블록을 상기 희생 서브 블록으로 선택하는 단계; 상기 제1 서브 블록들 및 상기 제2 서브 블록들 중 상기 무효 페이지 카운트와 상기 유효 페이지 카운트의 차이 값이 가장 큰 서브 블록을 희생 서브 블록으로 선택하는 단계; 및 상기 제1 서브 블록들 및 상기 제2 서브 블록들 중 상기 유효 페이지 카운트의 블록 사이즈에 대한 비율 값이 가장 작은 서브 블록을 상기 희생 서브 블록으로 선택하는 단계 중 적어도 하나를 포함한다.
또한, 본 개시의 기술적 사상에 따른 스토리지 컨트롤러의 동작 방법은, 제1 서브 블록들 및 제2 서브 블록들을 포함하는 비휘발성 메모리와 통신하는 스토리지 컨트롤러의 동작 방법으로서, 상기 제1 서브 블록들에 대해 제1 가비지 콜렉션 동작을 수행하는 단계; 및 상기 제2 서브 블록들에 대해 제2 가비지 콜렉션 동작을 수행하는 단계를 포함하고, 상기 제1 가비지 콜렉션 동작을 수행하는 단계는, 각각 제1 블록 사이즈를 갖는 상기 제1 서브 블록들 중 유효 페이지 카운트가 가장 작은 서브 블록을 제1 희생 서브 블록으로 선택하는 단계; 상기 제1 희생 서브 블록의 유효 페이지를 상기 제1 서브 블록들 중 제1 대상 서브 블록에 복사하는 단계; 및 상기 제1 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함하고, 상기 제2 가비지 콜렉션 동작을 수행하는 단계는, 각각 상기 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 상기 제2 서브 블록들 중 제2 희생 서브 블록을 선택하는 단계; 상기 제2 희생 서브 블록의 유효 페이지를 상기 제2 서브 블록들 중 제2 대상 서브 블록에 복사하는 단계; 및 상기 제2 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함한다.
본 개시의 기술적 사상에 따르면, 사이즈가 서로 다른 서브 블록들을 포함하는 비휘발성 메모리에 대한 가비지 콜렉션 동작 시, 서브 블록들의 사이즈 차이를 고려하여 희생 서브 블록을 선택함으로써 가비지 콜렉션 동작의 효율을 향상시키고, 스토리지 장치의 성능을 개선할 수 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 비휘발성 메모리를 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 메모리 블록을 예시적으로 나타내는 회로도이다.
도 4a 및 도 4b는 본 개시의 일부 실시예들에 따른 메모리 블록을 각각 예시적으로 나타내는 사시도들이다.
도 5 내지 도 7은 본 개시의 일부 실시예들에 따른 비휘발성 메모리를 각각 개략적으로 나타낸다.
도 8은 본 개시의 일 실시예에 따른 스토리지 장치를 나타내는 블록도이다.
도 9는 본 개시의 일 실시예에 따라 서로 다른 블록 사이즈를 갖는 서브 블록들을 포함하는 비휘발성 메모리를 예시적으로 나타낸다.
도 10은 본 개시의 일 실시예에 따라, 도 8의 스토리지 컨트롤러의 가비지 콜렉션 동작을 예시적으로 나타낸다.
도 11a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기를 나타내는 블록도이고, 도 11b는 본 개시의 일 실시예에 따른 가비지 콜렉션 관리 테이블을 나타낸다.
도 12a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기를 나타내는 블록도이고, 도 12b는 본 개시의 일 실시예에 따른 가비지 콜렉션 관리 테이블을 나타낸다.
도 13a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기를 나타내는 블록도이고, 도 13b는 본 개시의 일 실시예에 따른 가비지 콜렉션 관리 테이블을 나타낸다.
도 14a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기를 나타내는 블록도이고, 도 14b는 본 개시의 일 실시예에 따른 가비지 콜렉션 관리 테이블을 나타낸다.
도 15는 본 개시의 일 실시예에 따른 가비지 콜렉션 동작의 수행 방법을 나타내는 흐름도이다.
도 16은 본 개시의 일 실시예에 따른 스토리지 장치를 나타내는 블록도이다.
도 17은 본 개시의 일 실시예에 따라 서로 다른 블록 사이즈를 갖는 서브 블록들을 포함하는 비휘발성 메모리를 예시적으로 나타낸다.
도 18은 본 개시의 일 실시예에 따라, 도 16의 스토리지 컨트롤러의 가비지 콜렉션 동작을 예시적으로 나타낸다.
도 19a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기를 나타내는 블록도이고, 도 19b는 본 개시의 일 실시예에 따른 제1 및 제2 가비지 콜렉션 관리 테이블들을 나타낸다.
도 20a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기를 나타내는 블록도이고, 도 20b는 본 개시의 일 실시예에 따른 제1 및 제2 가비지 콜렉션 관리 테이블들을 나타낸다.
도 21은 본 개시의 일 실시예에 따른 가비지 콜렉션 동작의 수행 방법을 나타내는 흐름도이다.
도 22는 본 개시의 일 실시예에 따른 스토리지 장치가 적용된 시스템을 나타낸다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 호스트-스토리지 시스템(SS)을 나타내는 블록도이다. 도 1을 참조하면, 호스트-스토리지 시스템(SS)은 스토리지 장치(10) 및 호스트(20)를 포함할 수 있고, 스토리지 장치(10)는 스토리지 컨트롤러(11) 및 비휘발성 메모리(NVM)(12)를 포함할 수 있다. 비휘발성 메모리(12)는 복수의 블록들(BLKs)을 포함하고, 각 블록(BLK)은 서로 다른 블록 사이즈를 갖는 복수의 서브 블록들을 포함할 수 있다. 일 실시예에서, 블록 사이즈는 각 서브 블록에 연결되는 워드 라인들의 개수에 대응할 수 있다. 일 실시예에서, 블록 사이즈는 각 서브 블록에 포함되는 전체 페이지 개수에 대응할 수 있고, 이때, 페이지는 프로그램 및 독출의 단위에 대응할 수 있다.
일 실시예에서, 비휘발성 메모리(12)에 대한 소거 동작은 블록 단위 또는 서브 블록 단위로 수행될 수 있다. 예를 들어, 제1 모드에서, 복수의 서브 블록들 각각에 대해 소거 동작이 독립적으로 수행될 수 있고, 다시 말해, 서브 블록 단위로 소거 동작이 수행할 수 있다. 제2 모드에서, 복수의 블록들(BLKs) 각각에 대해 소거 동작이 독립적으로 수행될 수 있고, 다시 말해, 블록 단위로 소거 동작이 수행될 수 있다.
일 실시예에서, 각 블록(BLK)은 제1 블록 사이즈를 갖는 제1 서브 블록(SUB_BLK1) 및 제2 블록 사이즈를 갖는 제2 서브 블록(SUB_BLK2)을 포함하고, 제1 블록 사이즈와 제2 블록 사이즈는 서로 다를 수 있다. 예를 들어, 제1 서브 블록(SUB_BLK1)은 M개의 워드 라인들에 연결될 수 있고, 제2 서브 블록(SUB_BLK2)은 N개의 워드 라인들에 연결될 수 있다. 이때, M과 N은 서로 다른 양의 정수이다. 그러나, 본 발명은 이에 한정되지 않으며, 각 블록(BLK)은 세 개 이상의 서브 블록들을 포함할 수 있다. 이와 같이, 각 블록(BLK)은 멀티 서브 블록 구조를 가질 수 있다.
스토리지 컨트롤러(11)는 비휘발성 메모리(12)와 통신할 수 있고, 비휘발성 메모리(12)의 복수의 서브 블록들에 대한 가비지 콜렉션 동작을 제어할 수 있다. 구체적으로, 스토리지 컨트롤러(11)는 비휘발성 메모리(12)의 복수의 서브 블록들 중 희생(victim) 서브 블록을 선택하고, 희생 서브 블록의 유효 데이터를 새 서브 블록, 즉, 대상(target) 서브 블록에 복사한 후, 희생 서브 블록을 소거하는 가비지 콜렉션 동작을 수행함으로써 비휘발성 메모리(12) 내에서 사용 가능한 용량을 확보할 수 있다. 이하에서는, 스토리지 컨트롤러(11)의 구체적인 구성 및 동작에 대해 상술하기로 한다.
스토리지 컨트롤러(11)는 프로세서(111), 가비지 콜렉션 모듈(112), 호스트 인터페이스(113), 버퍼 메모리(114), 및 비휘발성 메모리 인터페이스(115)를 포함할 수 있고, 이들은 버스(116)를 통해 서로 통신할 수 있다. 프로세서(111)는 CPU나 마이크로 프로세서 등을 포함할 수 있으며, 스토리지 컨트롤러(11)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(111)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드(quad) 코어 프로세서로 구현될 수 있다. 버퍼 메모리(114)는 비휘발성 메모리(12)에 기록될 데이터 혹은 비휘발성 메모리(12)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(114)는 스토리지 컨트롤러(11) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(11)의 외부에 배치되어도 무방하다. 예를 들어, 스토리지 컨트롤러(11)는 버퍼 메모리(114)와 통신하기 위한 버퍼 메모리 매니저 또는 버퍼 메모리 인터페이스를 더 포함할 수 있다.
일 실시예에서, 가비지 콜렉션 모듈(112)은 복수의 서브 블록들 각각에 대한 유효 페이지 개수 또는 유효 페이지 카운트(VPC), 무효 페이지 개수 또는 무효 페이지 카운트(IPC) 및 블록 사이즈 중 적어도 두 개에 대한 연산 결과를 기반으로 복수의 서브 블록들 중 희생 서브 블록을 선택하고, 희생 서브 블록의 유효 페이지를 복수의 서브 블록들 중 대상 서브 블록에 복사할 수 있다. 이때, 가비지 콜렉션 모듈(112)은 가비지 콜렉션 관리 테이블을 참조하여 복수의 서브 블록들에 대한 가비지 콜렉션 동작을 제어할 수 있고, 가비지 콜렉션 동작의 수행 결과에 따라 가비지 콜렉션 관리 테이블(예를 들어, 도 8의 GTB) 및 맵핑 테이블(예를 들어, 도 8의 MTB)을 업데이트할 수 있다. 이에 대해, 도 8 내지 도 15를 참조하여 더욱 상세하게 설명하기로 한다.
일 실시예에서, 가비지 콜렉션 모듈(112)은 동일한 사이즈를 갖는 서브 블록들을 그룹핑하고, 그룹 별로 독립적으로 가비지 콜렉션 동작을 제어할 수 있다. 이때, 가비지 콜렉션 모듈(112)은 그룹 별로 가비지 콜렉션 관리 테이블을 관리할 수 있고, 해당 그룹에 대응하는 가비지 콜렉션 관리 테이블을 참조하여 해당 그룹에 포함되는 서브 블록들에 대한 가비지 콜렉션 동작을 제어할 수 있고, 그룹 별 가비지 콜렉션 동작의 수행 결과에 따라 그룹 별 가비지 콜렉션 관리 테이블 및 맵핑 테이블을 업데이트할 수 있다. 이에 대해, 도 16 내지 도 21을 참조하여 더욱 상세하게 설명하기로 한다.
실시예에 따라, 가비지 콜렉션 모듈(112)은 소프트웨어, 펌웨어 및/또는 하드웨어로 구현될 수 있다. 일 실시예에서, 가비지 콜렉션 모듈(112)은 소프트웨어로 구현될 수 있고, 스토리지 컨트롤러(11)는 가비지 콜렉션 모듈(112)이 로딩되는 워킹 메모리를 더 포함할 수 있으며, 프로세서(111)가 가비지 콜렉션 모듈(112)을 실행하는 것에 의해 비휘발성 메모리(12)에 대한 가비지 콜렉션 동작을 제어할 수 있다. 예를 들어, 워킹 메모리는 SRAM, DRAM 등과 같은 휘발성 메모리 또는 플래시 메모리, PRAM 등과 같은 비휘발성 메모리로 구현될 수 있다.
일 실시예에서, 가비지 콜렉션 모듈(112)은 FTL(Flash Translation Layer)에 구현될 수 있고, 스토리지 컨트롤러(11)는 FTL이 로딩되는 워킹 메모리를 더 포함할 수 있으며, 프로세서(111)가 FTL을 실행하는 것에 의해 비휘발성 메모리(12)에 대한 가비지 콜렉션 동작을 제어할 수 있다. 이때, 프로세서(111)가 FTL을 실행하는 것에 의해 비휘발성 메모리(12)에 대한 데이터 기록 및 독출 동작도 제어될 수 있다. 또한, FTL은 어드레스 매핑, 웨어-레벨링(wear-leveling)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(20)로부터 수신한 논리 어드레스를 비휘발성 메모리(12) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(12) 내의 블록들(BLKs)이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다.
호스트 인터페이스(113)는 호스트(20)와 패킷(packet)을 송수신할 수 있다. 호스트(20)로부터 호스트 인터페이스(113)로 전송되는 패킷은 커맨드 혹은 비휘발성 메모리(12)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(113)로부터 호스트(20)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(12)로부터 독출된 데이터 등을 포함할 수 있다. 메모리 인터페이스(115)는 비휘발성 메모리(12)에 기록될 데이터를 비휘발성 메모리(12)로 송신하거나, 비휘발성 메모리(12)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(115)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
스토리지 장치(10)는 호스트(20)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(10)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(10)가 SSD인 경우, 스토리지 장치(10)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(10)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(10)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(20)와 스토리지 장치(10)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
일 실시예에서, 호스트(20)는 호스트 컨트롤러(21) 및 호스트 메모리(22)를 포함할 수 있다. 호스트 컨트롤러(21)는 호스트 메모리(22)의 버퍼 영역의 데이터를 비휘발성 메모리(12)에 저장하거나, 비휘발성 메모리(12)의 데이터를 버퍼 영역에 저장하는 동작을 관리할 수 있다. 호스트 메모리(22)는 스토리지 장치(10)로 전송될 데이터, 혹은 스토리지 장치(10)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다. 일 예로서, 호스트 컨트롤러(21)는 애플리케이션 프로세서에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(22)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
도 2는 본 개시의 일 실시예에 따른 비휘발성 메모리(12)를 나타내는 블록도이다. 도 2를 참조하면, 비휘발성 메모리(12)는 메모리 셀 어레이(121), 제어 로직 회로(122), 전압 생성기(123), 로우 디코더(124), 및 페이지 버퍼 회로(125)를 포함할 수 있다. 비휘발성 메모리(120)는 도 1의 비휘발성 메모리(12)의 일 구현 예에 대응할 수 있다.
메모리 셀 어레이(121)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고, 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 페이지들(PG1 내지 PGc)을 포함할 수 있고, z와 c은 양의 정수일 수 있고, 실시예에 따라 다양하게 변경될 수 있다. 예를 들어, 복수의 페이지들(PG1 내지 PGc) 중 일부 페이지들(PG1 내지 PGb)은 제1 서브 블록(SUB_BLK1)에 포함되고, 복수의 페이지들(PG1 내지 PGc) 중 나머지 페이지들(PGb+1 내지 PBc)은 제2 서브 블록(SUB_BLK2)에 포함될 수 있다. 예를 들어, 메모리 블록 또는 서브 블록은 소거의 단위이고, 페이지는 프로그램 및 독출의 단위일 수 있다. 메모리 셀 어레이(121)는 비트 라인들(BL)을 통해 페이지 버퍼 회로(125)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(124)에 연결될 수 있다.
일 실시예에서, 메모리 셀 어레이(121)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다.
일 실시예에서, 메모리 셀 어레이(121)는 플래시 메모리를 포함할 수 있고, 플래시 메모리는 2D NAND 메모리 어레이 또는 3D(Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 일 실시예에서, 스토리지 장치(10)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 메모리 셀 어레이(121)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리를 포함할 수도 있다.
제어 로직 회로(122)는 비휘발성 메모리(12) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(122)는 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(122)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X_ADDR), 및 컬럼 어드레스(Y_ADDR)를 출력할 수 있다. 전압 생성기(123)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(123)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.
로우 디코더(124)는 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(124)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다. 페이지 버퍼 회로(125)는 컬럼 어드레스(Y_ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼 회로(125)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다.
도 3은 본 개시의 일 실시예에 따른 메모리 블록(BLK)을 예시적으로 나타내는 회로도이다. 도 3을 참조하면, 메모리 블록(BLK)은 도 2의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 메모리 블록(BLK)은 낸드 스트링들(NS11 내지 NS33)을 포함하고, 각 낸드 스트링(예를 들면, NS11)은 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MCs) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 각 낸드 스트링에 포함된 트랜지스터들(SST, GST) 및 메모리 셀들(MCs)은 기판 상에서 수직 방향을 따라 적층된 구조를 형성할 수 있다.
비트 라인들(BL1 내지 BL3)은 제1 방향을 따라 연장될 있고, 워드 라인들(WL1 내지 WL8)은 제2 방향을 따라 연장될 수 있다. 제1 비트 라인(BL1)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS11, NS21, NS31)이 위치하고, 제2 비트 라인(BL2)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS12, NS22, NS32)이 위치하고, 제3 비트 라인(BL3)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS13, NS23, NS33)이 위치할 수 있다.
스트링 선택 트랜지스터(SST)는 대응하는 스트링 선택 라인(SSL1 내지 SSL3)에 연결될 수 있다. 메모리 셀들(MCs)은 대응하는 워드 라인들(WL1 내지 WL8)에 각각 연결될 수 있다. 그라운드 선택 트랜지스터(GST)는 대응하는 그라운드 선택 라인(GSL1 내지 GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 대응하는 비트 라인에 연결되고, 그라운드 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다. 여기서, 낸드 스트링들의 개수, 워드 라인들의 개수, 비트 라인들의 개수, 그라운드 선택 라인의 개수 및 스트링 선택 라인들의 개수는 실시예에 따라 다양하게 변경될 수 있다.
도 4a는 본 개시의 일 실시예에 따른 메모리 블록(BLKa)을 예시적으로 나타내는 사시도이다. 도 4a를 참조하면, 메모리 블록(BLKa)은 도 2의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 메모리 블록(BLKa)은 기판(SUB)의 상부에 수직 방향(VD)으로 신장되는 메모리 스택(ST)을 포함할 수 있다. 예를 들어, 메모리 블록(BLKa)은 기판(SUB)과 비트 라인들(BL1 내지 BL3) 사이에 단일 메모리 스택(ST)을 포함할 수 있다. 기판(SUB)에 공통 소스 라인들(CSL)이 배치될 수 있고, 인접한 두 공통 소스 라인(CSL) 사이의 기판(SUB)의 영역 상에, 제2 수평 방향(HD2)을 따라 신장되는 절연막들(IL)이 수직 방향(VD)을 따라 순차적으로 제공되며, 절연막들(IL)은 수직 방향(VD)을 따라 특정 거리만큼 이격된다. 인접한 두 공통 소스 라인들(CSL) 사이의 기판(SUB)의 영역 상에, 수직 방향(VD)을 따라 절연막들(IL)을 관통하는 필라들(P)이 제공된다. 각 필라(P)의 표면층(S)은 제1 타입을 갖는 실리콘 물질을 포함할 수 있고, 채널 영역으로 기능할 수 있다. 한편, 각 필라(P)의 내부층(I)은 실리콘 산화물과 같은 절연 물질 또는 에어 갭(air gap)을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 절연막들(IL), 필라들(P) 및 기판(SUB)의 노출된 표면을 따라 전하 저장층(CS)이 제공된다. 전하 저장층(CS)은 게이트 절연층, 전하 트랩층 및 블로킹 절연층을 포함할 수 있다. 예를 들어, 전하 저장층(CS)은 ONO(oxide-nitride-oxide) 구조를 가질 수 있다. 또한, 인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 전하 저장층(CS)의 노출된 표면 상에, 선택 라인들(GSL, SSL) 및 워드 라인들(WL1 내지 WL8)과 같은 게이트 전극(GE)이 제공된다. 복수의 필라들(P) 상에는 드레인들(DR)이 각각 제공된다. 드레인들(DR) 상에, 제1 수평 방향(HD1)으로 신장되고 제2 수평 방향(HD2)을 따라 특정 거리만큼 이격되어 배치된 비트 라인들(BL1 내지 BL3)이 제공된다.
도 4b는 본 개시의 일 실시예에 따른 메모리 블록(BLKb)을 예시적으로 나타내는 사시도이다. 도 4b를 참조하면, 메모리 블록(BLKb)은 도 2의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 또한, 메모리 블록(BLKb)은 도 4a의 메모리 블록(BLKa)의 변형 예에 대응하며, 도 4a를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 메모리 블록(BLKb)은 기판(SUB)의 상부에 수직 방향(VD)으로 적층된 제1 메모리 스택(ST1) 및 제2 메모리 스택(ST2)을 포함할 수 있다. 예를 들어, 메모리 블록(BLKb)은 기판(SUB)과 비트 라인들(BL1 내지 BL3) 사이에 두 개의 메모리 스택들(ST1, ST2)을 포함할 수 있고, 이에 따라, 멀티 스택 구조, 예를 들어, 2-스택 구조를 가질 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 실시예에 따라, 메모리 블록은 기판(SUB)과 비트 라인들(BL1 내지 BL3) 사이에 세 개 이상의 메모리 스택들을 포함할 수도 있다.
도 5는 본 개시의 일 실시예에 따른 비휘발성 메모리(50)를 개략적으로 나타낸다. 도 5를 참조하면, 비휘발성 메모리(50)는 제1 수평 방향(HD1)으로 연장되는 공통 소스 라인(CSL) 및 비트 라인(BL)을 포함하고, 수직 방향(VD)으로 연장되는 메모리 스택(ST)을 포함할 수 있다. 이때, 메모리 스택(ST)은 드레인(DR)을 통해 비트 라인(BL)에 연결될 수 있다. 예를 들어, 비휘발성 메모리(50)는 도 4a의 일 예에 대응하며, 메모리 스택(ST)은 도 4a의 필라(P)에 대응할 수 있고, 도 3의 제1 셀 스트링(NS11)에 대응할 수도 있다.
비휘발성 메모리(50)는 수직 방향(VD)으로 적층되는 복수의 워드 라인들(WL1 내지 WLn)을 더 포함하고, 공통 소스 라인(CSL)과 워드 라인(WL1) 사이에는 적어도 하나의 그라운드 선택 라인(GSL)이 배치되고, 비트 라인(BL)과 워드 라인(WLn) 사이에는 적어도 하나의 스트링 선택 라인(SSL)이 배치될 수 있다. 도시되지는 않았으나, 스트링 선택 라인(SSL)과 비트 라인(BL) 사이에는 소거 제어 라인(예를 들어, GIDL_SS)이 더 배치되고, 그라운드 선택 라인(GSL)과 공통 소스 라인(CLS) 사이에는 소거 제어 라인(예를 들어, GIDL_GS)이 더 배치될 수 있다.
일 실시예에서, 복수의 워드 라인들(WL1 내지 WLn)은 제1 워드 라인 그룹(WGR1) 및 제2 워드 라인 그룹(WGR2)을 포함하는 복수의 그룹들로 그룹핑될 수 있다. 제1 워드 라인 그룹(WGR1)은 기판에 상대적으로 가까운 워드 라인들(예를 들어, WL1 내지 WLm)을 포함하고, 제2 워드 라인 그룹(WGR2)은 기판에 상대적으로 먼 워드 라인들(예를 들어, WLm+1 내지 WLn)을 포함할 수 있고, m은 1과 n 사이의 양의 정수이다. 실시예에 따라, 복수의 워드 라인들(WL1 내지 WLn)은 3개 이상의 그룹들로 그룹핑될 수 있다.
일 실시예에서, 제1 워드 라인 그룹(WGR1)에 포함되는 워드 라인들의 개수와 제2 워드 라인 그룹(WGR2)에 포함되는 워드 라인들의 개수는 서로 다를 수 있다. 예를 들어, 제1 워드 라인 그룹(WGR1)에 포함되는 워드 라인들의 개수는 제2 워드 라인 그룹(WGR2)에 포함되는 워드 라인들의 개수보다 많을 수 있다. 다시 말해, m은 n/2보다 클 수 있다. 예를 들어, 제1 워드 라인 그룹(WGR1)에 포함되는 워드 라인들은 제1 서브 블록(예를 들어, 도 1의 SUB_BLK1)에 연결될 수 있고, 제2 워드 라인 그룹(WGR2)에 포함되는 워드 라인들은 제2 서브 블록(예를 들어, 도 1의 SUB_BLK2)에 연결될 수 있다. 이때, 제1 서브 블록(SUB_BLK1)의 블록 사이즈는 제1 워드 라인 그룹(WGR1)에 포함되는 워드 라인들의 개수에 대응할 수 있고, 제2 서브 블록(SUB_BLK2)의 블록 사이즈는 제2 워드 라인 그룹(WGR2)에 포함되는 워드 라인들의 개수에 대응할 수 있다. 이와 같이, 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2)은 서로 다른 블록 사이즈를 가질 수 있다.
실시예에 따라, 제1 및 제2 워드 라인 그룹들(WGR1, WGR2)의 사이즈들은 동적으로 변경될 수 있고, 이에 따라, 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2)의 블록 사이즈들도 동적으로 변경될 수 있다. 즉, 스토리지 장치의 런타임 중에 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2)의 블록 사이즈들이 변경될 수 있다. 이때, 스토리지 컨트롤러는 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2)의 변경된 블록 사이즈들을 고려하여 희생 서브 블록의 선택 동작을 수행할 수 있다.
도 6은 본 개시의 일 실시예에 따른 비휘발성 메모리(60)를 개략적으로 나타낸다. 도 6을 참조하면, 비휘발성 메모리(60)는 제1 수평 방향(HD1)으로 연장되는 공통 소스 라인(CSL) 및 비트 라인(BL)을 포함하고, 수직 방향(VD)으로 연장되는 제1 메모리 스택(ST1) 및 제2 메모리 스택(ST2)을 포함할 수 있다. 이때, 제1 메모리 스택(ST1)은 공통 소스 라인(CSL)의 상부에 배치되고, 제2 메모리 스택(ST2)은 제1 메모리 스택(ST1)의 상부에 배치되며 드레인(DR)을 통해 비트 라인(BL)에 연결될 수 있다. 예를 들어, 비휘발성 메모리(60)는 도 4b의 일 예에 대응하며, 제1 메모리 스택(ST1) 및 제2 메모리 스택(ST2)은 도 4b의 제1 메모리 스택(ST1) 및 제2 메모리 스택(ST2)에 각각 대응할 수 있다.
또한, 비휘발성 메모리(60)는 도 5의 비휘발성 메모리(50)의 변형 예에 대응하며, 중복된 설명은 생략하기로 한다. 비휘발성 메모리(60)는 제1 메모리 스택(ST1)과 제2 메모리 스택(ST2)의 접합부에 대응하는 제1 및 제2 접합 더미 워드 라인들(CDL1, CDL2)을 더 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 접합부에 대응하는 접합 더미 워드 라인들의 개수는 실시예에 따라 다양하게 변경될 수 있다. 또한, 실시예에 따라, 접합 더미 워드 라인이 배치되지 않을 수도 있다.
일 실시예에서, 복수의 워드 라인들(WL1 내지 WLn)은 제1 워드 라인 그룹(WGR1) 및 제2 워드 라인 그룹(WGR2)을 포함하는 복수의 워드 라인 그룹들로 그룹핑될 수 있다. 제1 워드 라인 그룹(WGR1)은 제1 메모리 스택(ST1)에 연결되는 워드 라인들을 포함하고, 제2 워드 라인 그룹(WGR2)은 제2 메모리 스택(ST2)에 연결되는 워드 라인들을 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 제1 메모리 스택(ST1)에 연결되는 워드 라인들은 복수의 워드 라인 그룹들로 그룹핑될 수 있고, 또한, 제2 메모리 스택(ST2)에 연결된 워드 라인들도 복수의 워드 라인 그룹들로 그룹핑될 수도 있다.
도 7은 본 개시의 일 실시예에 따른 비휘발성 메모리(70)를 개략적으로 나타낸다. 도 7을 참조하면, 비휘발성 메모리(70)는 제1 수평 방향(HD1)으로 연장되는 공통 소스 라인(CSL) 및 비트 라인(BL)을 포함하고, 수직 방향(VD)으로 연장되는 제1 메모리 스택(ST1), 제2 메모리 스택(ST2) 및 제3 메모리 스택(ST3)을 포함할 수 있다. 이때, 제1 메모리 스택(ST1)은 공통 소스 라인(CSL)의 상부에 배치되고, 제2 메모리 스택(ST2)은 제1 메모리 스택(ST1)의 상부에 배치되고, 제3 메모리 스택(ST3)은 제2 메모리 스택(ST2)의 상부에 배치되며 드레인(DR)을 통해 비트 라인(BL)에 연결될 수 있다. 예를 들어, 비휘발성 메모리(70)는 도 6의 비휘발성 메모리(60)의 변형 예에 대응하며, 중복된 설명은 생략하기로 한다.
또한, 비휘발성 메모리(70)는 도 6의 비휘발성 메모리(60)의 변형 예에 대응하며, 중복된 설명은 생략하기로 한다. 비휘발성 메모리(70)는 제1 메모리 스택(ST1)과 제2 메모리 스택(ST2)의 접합부에 대응하는 제1 및 제2 접합 더미 워드 라인들(CDL1, CDL2) 및 제2 메모리 스택(ST2)과 제3 메모리 스택(ST3)의 접합부에 대응하는 제3 및 제4 접합 더미 워드 라인들(CDL3, CDL4)을 더 포함할 수 있다.
일 실시예에서, 복수의 워드 라인들(WL1 내지 WLn)은 제1 워드 라인 그룹(WGR1), 제2 워드 라인 그룹(WGR2) 및 제3 워드 라인 그룹(WGR3)을 포함하는 복수의 워드 라인 그룹들로 그룹핑될 수 있다. 제1 워드 라인 그룹(WGR1)은 제1 메모리 스택(ST1)에 연결되는 워드 라인들을 포함하고, 제2 워드 라인 그룹(WGR2)은 제2 메모리 스택(ST2)에 연결되는 워드 라인들을 포함하며, 제3 워드 라인 그룹(WGR3)은 제3 메모리 스택(ST3)에 연결되는 워드 라인들을 포함할 수 있다. 제1 워드 라인 그룹(WGR1)은 기판과의 거리가 상대적으로 짧은 워드 라인들(예를 들어, WL1 내지 WLk)을 포함하고, 제2 워드 라인 그룹(WGR2)은 기판과의 거리가 제1 워드 라인 그룹(WGR1)의 워드 라인들보다 긴 워드 라인들(예를 들어, WLk+1 내지 WLm)을 포함하며, 제3 워드 라인 그룹(WGR3)은 기판과의 거리가 제2 워드 라인 그룹(WGR2)의 워드 라인들보다 긴 워드 라인들(예를 들어, WLm+1 내지 WLn)을 포함할 수 있다.
일 실시예에서, 제1 워드 라인 그룹(WGR1)에 포함되는 워드 라인들의 개수, 제2 워드 라인 그룹(WGR2)에 포함되는 워드 라인들의 개수, 및 제3 워드 라인 그룹(WGR3)에 포함되는 워드 라인들의 개수 중 적어도 두 개는 서로 다를 수 있다. 예를 들어, 제1 워드 라인 그룹(WGR1)에 포함되는 워드 라인들의 개수는 제2 워드 라인 그룹(WGR2)에 포함되는 워드 라인들의 개수보다 많을 수 있고, 제2 워드 라인 그룹(WGR2)에 포함되는 워드 라인들의 개수는 제3 워드 라인 그룹(WGR3)에 포함되는 워드 라인들의 개수보다 많을 수 있다. 예를 들어, 제1 메모리 스택(ST1)은 제1 서브 블록(SUB_BLK1)에 대응할 수 있고, 제2 메모리 스택(ST2)은 제2 서브 블록(SUB_BLK2)에 대응할 수 있고, 제3 메모리 스택(ST3)은 제3 서브 블록에 대응할 수 있다. 이때, 제1 내지 제3 서브 블록들은 서로 다른 블록 사이즈를 가질 수 있다.
일부 실시예들에서, 메모리 장치는 4개 이상의 메모리 스택들을 포함할 수 있고, 메모리 스택들의 개수가 증가함에 따라 복수의 워드 라인들에 대응하는 워드 라인 그룹들의 개수도 증가할 수 있고, 메모리 블록에 포함되는 서브 블록들의 개수도 증가할 수 있다.
도 8은 본 개시의 일 실시예에 따른 스토리지 장치(80)를 나타내는 블록도이다. 도 8을 참조하면, 스토리지 장치(80)는 스토리지 컨트롤러(11) 및 비휘발성 메모리(12)를 포함할 수 있고, 도 1의 스토리지 장치(10)의 일 구현 예에 대응할 수 있다. 비휘발성 메모리(12)는 복수의 제1 서브 블록들(121a) 및 복수의 제2 서브 블록들(121b)을 포함할 수 있다. 복수의 제1 서브 블록들(121a) 각각은 제1 블록 사이즈를 가질 수 있고, 복수의 메모리 셀들을 포함할 수 있다. 복수의 제2 서브 블록들(121b) 각각은 제2 블록 사이즈를 가질 수 있고, 복수의 메모리 셀들을 포함할 수 있다. 이때, 제1 블록 사이즈와 제2 블록 사이즈는 서로 다를 수 있다. 예를 들어, 복수의 제1 서브 블록들(121a) 각각은 도 5, 도 6 또는 도 7의 제1 워드 라인 그룹(WLG1)에 연결될 수 있고, 복수의 제2 서브 블록들(121b) 각각은 도 5, 도 6 또는 도 7의 제2 워드 라인 그룹(WLG2)에 연결될 수 있다.
스토리지 컨트롤러(11)는 가비지 콜렉션 관리 테이블(GTB), 가비지 콜렉션 희생 선택 블록(VS) 및 맵핑 테이블(MTB)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 관리 테이블(GTB), 가비지 콜렉션 희생 선택 블록(VS)은 도 1의 가비지 콜렉션 모듈(112)에 포함될 수 있다. 예를 들어, 가비지 콜렉션 관리 테이블(GTB), 가비지 콜렉션 희생 선택 블록(VS) 및/또는 맵핑 테이블(MTB)은 워킹 메모리에 로딩될 수 있다.
가비지 콜렉션 관리 테이블(GTB)은 제1 서브 블록들(121a) 및 제2 서브 블록들(121b) 각각에 대응하는 유효 페이지의 개수, 즉, 유효 페이지 카운트(VPC) 및 제1 서브 블록들(121a) 및 제2 서브 블록들(121b) 각각에 대응하는 무효 페이지의 개수, 즉, 무효 페이지 카운트(IPC)를 저장할 수 있다. 일 실시예에서, 스토리지 컨트롤러(11)는 비휘발성 메모리(12)로부터 독출 데이터를 수신하고, 수신한 독출 데이터로부터 유효 페이지 카운트(VPC) 및 무효 페이지 카운트(IPC)를 계산할 수 있다. 일 실시예에서, 비휘발성 메모리(12)는 유효 페이지 카운터 및 무효 페이지 카운터를 포함할 수 있고, 스토리지 컨트롤러(11)는 비휘발성 메모리(12)로부터 유효 페이지 카운트(VPC) 및 무효 페이지 카운트(IPC)를 수신할 수 있다. 일 실시예에서, 비휘발성 메모리(12)는 유효 페이지 카운터를 포함할 수 있고, 스토리지 컨트롤러(11)는 비휘발성 메모리(12)로부터 유효 페이지 카운트(VPC)를 수신하고, 제1 서브 블록들(121a) 및 제2 서브 블록들(121b) 각각의 블록 사이즈를 기초로 무효 페이지 카운트(IPC)를 계산할 수 있다.
가비지 콜렉션 희생 선택 블록(VS)은 가비지 콜렉션 관리 테이블(GTB)을 참조하여, 복수의 제1 서브 블록들(121a) 및 복수의 제2 서브 블록들(121b) 중 희생 서브 블록을 선택할 수 있다. 일 실시예에서, 가비지 콜렉션 희생 선택 블록(VS)은 프리 블록이 요구되는 경우 희생 서브 블록을 선택할 수 있다. 예를 들어, 가비지 콜렉션 희생 선택 블록(VS)은 유효 페이지 카운트(VPC)와 무효 페이지 카운트(IPC) 사이의 비율의 임계 값 이상인 경우 인에이블되어 희생 서브 블록을 선택할 수 있다. 일 실시예에서, 가비지 콜렉션 희생 선택 블록(VS)은 주기적으로 희생 서브 블록을 선택할 수 있다. 예를 들어, 가비지 콜렉션 희생 선택 블록(VS)은 미리 결정된 선택 주기에 따라 인에이블되어 희생 서브 블록을 선택할 수 있다. 이때, 선택 주기는 동적으로 변경될 수 있다.
일 실시예에서, 가비지 콜렉션 희생 선택 블록(VS)은 제1 및 제2 서브 블록들(121a, 121b)의 유효 페이지 카운트(VPC)가 동일한 경우, 무효 페이지 카운트(IPC)가 많은 서브 블록을 희생 서브 블록으로 선택할 수 있다. 일 실시예에서, 가비지 콜렉션 희생 선택 블록(VS)은 제1 및 제2 서브 블록들(121a, 121b) 각각에 대해 유효 페이지 카운트(VPC)에서 무효 페이지 카운트(IPC)를 뺀 값에 가장 작은 서브 블록을 희생 서브 블록으로 선택할 수 있다. 일 실시예에서, 가비지 콜렉션 희생 선택 블록(VS)은 제1 및 제2 서브 블록들(121a, 121b) 각각에 대해 무효 페이지 카운트(IPC)에서 유효 페이지 카운트(VPC)를 뺀 값에 가장 작은 서브 블록을 희생 서브 블록으로 선택할 수 있다.
일 실시예에서, 가비지 콜렉션 희생 선택 블록(VS)은 유효 페이지 카운트(VPC)를 임계 값과 비교하고, 비교 결과에 따라 서브 블록을 선택할 수 있다. 예를 들어, 유효 페이지 카운트(VPC)가 임계 값 이상이면, 제1 및 제2 서브 블록들(121a, 121b) 중 유효 페이지 카운트(VPC)가 작은 서브 블록을 희생 서브 블록으로 선택할 수 있다. 한편, 예를 들어, 유효 페이지 카운트(VPC)가 임계 값보다 작으면, 제1 및 제2 서브 블록들(121a, 121b) 중 무효 페이지 카운트(IPC)가 많은 서브 블록을 희생 서브 블록으로 선택할 수 있다. 일 실시예에서, 임계 값은 프로그램 시간, 독출 시간 및 소거 시간에 따라 변경될 수 있다. 구체적으로, 페이지 마이그레이션 시간은 프로그램 시간, 독출 시간 및 소거 시간의 합에 대응할 수 있고, 페이지 마이그레이션 시간에 따라 임계 값이 변경될 수 있다. 일 실시예에서, 임계 값은 서브 블록의 마모 정도, 예를 들어, 프로그램/소거 사이클 카운트에 따라 변경될 수 있다.
일 실시예에서, 가비지 콜렉션 희생 선택 블록(VS)은 선택 가중치를 더 고려하여 희생 서브 블록의 선택 동작을 수행할 수 있다. 일 실시예에서, 선택 가중치는 프로그램 시간, 독출 시간 및/또는 소거 시간을 포함할 수 있다. 구체적으로, 페이지 마이그레이션 시간은 프로그램 시간, 독출 시간 및 소거 시간의 합에 대응할 수 있고, 가비지 콜렉션 희생 선택 블록(VS)은 페이지 마이그레이션 시간을 고려하여 희생 서브 블록의 선택 동작을 수행할 수 있다. 일 실시예에서, 선택 가중치는 서브 블록의 마모 정도, 예를 들어, 프로그램/소거 사이클 카운트를 포함할 수 있다.
맵핑 테이블(MTB)은 호스트(20)로부터 수신된 논리 주소들에 각각 대응하는 비휘발성 메모리(12)의 물리 주소들을 저장할 수 있다. 스토리지 컨트롤러(11)는 가비지 콜렉션 동작이 수행되면 가비지 콜렉션 관리 테이블(GTB) 및/또는 맵핑 테이블(MTB)을 업데이트할 수 있다. 예를 들어, 스토리지 컨트롤러(11)는 가비지 콜렉션 동작 중 희생 서브 블록의 유효 데이터를 대상 서브 블록에 복사 또는 기입하는 동작이 완료되면 가비지 콜렉션 관리 테이블(GTB) 및/또는 맵핑 테이블(MTB)을 업데이트할 수 있다.
또한, 스토리지 컨트롤러(11)는 프리 블록 테이블을 더 포함할 수 있고, 가비지 콜렉션 동작의 수행 결과에 따라 프리 블록 테이블을 관리할 수 있다. 스토리지 컨트롤러(11)는 가비지 콜렉션 동작 중 희생 서브 블록에 대한 소거 동작이 완료되면 희생 서브 블록에 대한 정보를 프리 블록 테이블에 업데이트할 수 있다. 일 실시예에서, 프리 블록 테이블은 맵핑 테이블(MTB)의 일부로서 구현될 수도 있다. 일 실시예에서, 스토리지 컨트롤러(11)는 프리 블록 테이블을 주기적으로 또는 비주기적으로 업데이트할 수 있다.
일 실시예에 따른 스토리지 컨트롤러(11)의 동작 방법은 스토리지 컨트롤러(11)의 가비지 콜렉션 동작 방법에 대응할 수 있다. 동작 방법은 제1 서브 블록들(121a) 및 제2 서브 블록들(121b) 중 희생 서브 블록을 선택하는 단계, 희생 서브 블록의 유효 페이지를 복수의 서브 블록들 중 대상 서브 블록에 복사하는 단계, 및 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함할 수 있다. 이때, 희생 서브 블록을 선택하는 단계는, 제1 서브 블록들(121a) 및 제2 서브 블록들(121b) 중 유효 페이지 카운트(VPC)의 무효 페이지 카운트(IPC)에 대한 비율 값이 가장 작은 서브 블록을 희생 서브 블록으로 선택하는 단계, 제1 서브 블록들(121a) 및 제2 서브 블록들(121b) 중 무효 페이지 카운트(IPC)와 유효 페이지 카운트(VPC)의 차이 값이 가장 큰 서브 블록을 희생 서브 블록으로 선택하는 단계, 및 제1 서브 블록들(121a) 및 제2 서브 블록들(121b) 중 유효 페이지 카운트(VPC)의 블록 사이즈에 대한 비율 값이 가장 작은 서브 블록을 희생 서브 블록으로 선택하는 단계 중 적어도 하나를 포함할 수 있다.
도 9는 본 개시의 일 실시예에 따라 서로 다른 블록 사이즈를 갖는 서브 블록들을 포함하는 비휘발성 메모리(90)를 예시적으로 나타낸다. 도 9를 참조하면, 비휘발성 메모리(90)는 제1 서브 블록들(SUB_BLK1a 내지 SUB_BLK1d) 및 제2 서브 블록들(SUB_BLK2a 내지 SUB_BLK2d)을 포함할 수 있다. 예를 들어, 비휘발성 메모리(90)는 도 8의 비휘발성 메모리(12)의 일 예에 대응할 수 있고, 제1 서브 블록들(SUB_BLK1a 내지 SUB_BLK1d)은 도 8의 제1 서브 블록들(121a)에 대응할 수 있고, 제2 서브 블록들(SUB_BLK2a 내지 SUB_BLK2d)은 도 8의 제2 서브 블록들(121b)에 대응할 수 있다.
예를 들어, 제1 서브 블록들(SUB_BLK1a 내지 SUB_BLK1d)은 제1 방향(HD1)으로 서로 인접할 수 있고, 제2 서브 블록들(SUB_BLK2a 내지 SUB_BLK2d)은 제1 방향(HD1)으로 서로 인접할 수 있으나, 본 발명은 이에 한정되지 않는다. 수직 방향(VD)으로 인접한 제1 서브 블록(SUB_BLK1a) 및 제2 서브 블록(SUB_BLK2a)은 메모리 블록 또는 블록(BLK)을 구성할 수 있다. 제1 서브 블록들(SUB_BLK1a 내지 SUB_BLK1d) 각각은 수직 방향(VD)으로 제1 블록 사이즈(BS1)를 가질 수 있고, 제2 서브 블록들(SUB_BLK2a 내지 SUB_BLK2d) 각각은 수직 방향(VD)으로 제2 블록 사이즈(BS2)를 가질 수 있고, 제1 블록 사이즈(BS1)와 제2 블록 사이즈(BS2)는 서로 다를 수 있다.
도 10은 본 개시의 일 실시예에 따라, 도 8의 스토리지 컨트롤러(11)의 가비지 콜렉션 동작을 예시적으로 나타낸다. 도 10을 참조하면, 제1 및 제2 서브 블록들(101, 102)은 수직 방향으로 적층되고, 예를 들어, 도 9의 제1 및 제2 서브 블록들(SUB_BLK1a, SUB_BLK2a)에 각각 대응할 수 있다. 제3 및 제4 서브 블록들(103, 104)은 수직 방향으로 적층되고, 예를 들어, 도 9의 제1 및 제2 서브 블록들(SUB_BLK1b, SUB_BLK2b)에 각각 대응할 수 있다. 제1 및 제3 서브 블록들(101, 103) 각각은 제1 메모리 스택(ST1)에 대응하고, 제2 및 제4 서브 블록들(102, 104) 각각은 제2 메모리 스택(ST2)에 대응할 수 있다.
제1 및 제2 서브 블록들(101, 102) 각각은 유효 페이지들(VP) 및 무효 페이지들(IP)을 포함할 수 있다. 여기서, 유효 페이지들(VP)은 유효한 데이터가 기입된 페이지이고, 무효 페이지들(IP)은 무효(invalid) 데이터가 기입된 페이지일 수 있다. 또한, 제1 및 제2 서브 블록들(101, 102) 각각은 데이터가 기입되지 않은 프리 페이지를 더 포함할 수도 있다. 예를 들어, 제1 및 제3 서브 블록들(101, 103) 각각에 연결된 워드 라인들의 개수는 100이고, 제2 및 제4 서브 블록들(102, 104) 각각에 연결된 워드 라인들의 개수는 80일 수 있다. 이와 같이, 제1 메모리 스택(ST1)에 대응하는 서브 블록의 블록 사이즈는 제2 메모리 스택(ST2)에 대응하는 서브 블록의 블록 사이즈보다 클 수 있다.
본 발명의 실시예들에 따르면, 스토리지 컨트롤러(11)는 제1 및 제2 서브 블록들(101, 102) 각각에 대응하는 유효 페이지 카운트(VPC), 무효 페이지 카운트(IPC) 및 블록 사이즈 중 적어도 두 개의 연산 결과를 기초로 제1 및 제2 서브 블록들(101, 102) 중 희생 서브 블록을 선택할 수 있다. 일 실시예에서, 스토리지 컨트롤러(11)는 유효 페이지 카운트(VPC)와 무효 페이지 카운트(IPC)의 차이를 기초로 희생 서브 블록을 선택할 수 있고, 이에 대해 도 11a 및 도 11b를 참조하여 상술하기로 한다. 일 실시예에서, 스토리지 컨트롤러(11)는 유효 페이지 카운트(VPC)와 무효 페이지 카운트(IPC)의 비율을 기초로 희생 서브 블록을 선택할 수 있고, 이에 대해 도 12a 및 도 12b를 참조하여 상술하기로 한다. 일 실시예에서, 스토리지 컨트롤러(11)는 유효 페이지 카운트(VPC)와 블록 사이즈의 비율을 기초로 희생 서브 블록을 선택할 수 있다. 예를 들어, 블록 사이즈는 워드 라인들의 개수 또는 전체 페이지들의 개수에 대응할 수 있고, 이에 대해 도 13a 내지 도 14b를 참조하여 상술하기로 한다.
도 11a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기(110A)를 나타내는 블록도이고, 도 11b는 본 개시의 일 실시예에 따른 가비지 콜렉션 관리 테이블(110B)을 나타낸다.
도 11a 및 도 11b를 함께 참조하면, 가비지 콜렉션 희생 선택기(110A)는 감산 모듈(SB), 가비지 콜렉션 관리 테이블(GTB) 및 비교 로직(CL)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 희생 선택기(110A)는 도 1의 가비지 콜렉션 모듈(112)에 포함될 수 있다. 가비지 콜렉션 희생 선택기(110A)는 복수의 서브 블록들 각각에 대응하는 유효 페이지 카운트(VPC) 및 무효 페이지 카운트(IPC)를 수신할 수 있다. 감산 모듈(SM)은 무효 페이지 카운트(IPC)에서 유효 페이지 카운트(VPC)를 감산함으로써 차이 값(VID)를 출력할 수 있다(즉, VID=IPC-VPC).
예를 들어, 가비지 콜렉션 관리 테이블(GTB)은 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2)에 각각 대응하는 가비지 콜렉션 인덱스들을 저장하는 가비지 콜렉션 관리 테이블(110B)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 관리 테이블(110B)은 제1 서브 블록(SUB_BLK1)에 대응하는 제1 유효 페이지 카운트(VPCa), 제1 무효 페이지 카운트(IPCa) 및 제1 차이 값(VIDa)을 저장할 수 있고, 제2 서브 블록(SUB_BLK2)에 대응하는 제2 유효 페이지 카운트(VPCb), 제2 무효 페이지 카운트(IPCb) 및 제2 차이 값(VIDb)을 저장할 수 있다. 예를 들어, 제1 유효 페이지 카운트(VPCa)가 43이고, 제1 무효 페이지 카운트(IPCa)가 57인 경우, 제1 차이 값(VIDa)은 14(=57-43)이다. 예를 들어, 제2 유효 페이지 카운트(VPCb)는 40이고, 제2 무효 페이지 카운트(IPCb)가 40인 경우, 제2 차이 값(VIDb)은 0(=40-40)이다.
비교 로직(CL)은 제1 서브 블록(SUB_BLK1)의 제1 차이 값(VIDa)과 제2 서브 블록(SUB_BLK2)의 제2 차이 값(VIDb)를 비교할 수 있다. 가비지 콜렉션 선택기(110A)는 제1 차이 값(VIDa)과 제2 차이 값(VIDb) 중 큰 값에 대응하는 서브 블록을 희생 서브 블록으로 선택할 수 있다. 예를 들어, 제1 차이 값(VIDa)이 14이고, 제2 차이 값(VIDb)이 0이면, 가비지 콜렉션 선택기(110A)는 제1 차이 값(VIDa)에 대응하는 제1 서브 블록(SUB_BLK1)을 희생 서브 블록으로 선택할 수 있다.
도 12a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기(120A)를 나타내는 블록도이고, 도 12b는 본 개시의 일 실시예에 따른 가비지 콜렉션 관리 테이블(120B)을 나타낸다.
도 12a 및 도 12b를 참조하면, 가비지 콜렉션 희생 선택기(120A)는 디비전 모듈(DM), 가비지 콜렉션 관리 테이블(GTB) 및 비교 로직(CL)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 희생 선택기(120A)는 도 1의 가비지 콜렉션 모듈(112)에 포함될 수 있다. 가비지 콜렉션 희생 선택기(120A)는 복수의 서브 블록들 각각에 대응하는 유효 페이지 카운트(VPC) 및 무효 페이지 카운트(IPC)를 수신할 수 있다. 디비전 모듈(DM)은 유효 페이지 카운트(VPC)를 무효 페이지 카운트(IPC)로 나눔으로써, 무효 페이지 카운트(IPC)에 대한 유효 페이지 카운트(VPC)의 비율 값, 즉, 무효 페이지 카운트(IPC)와 유효 페이지 카운트(VPC)의 비율 값(VIR)을 출력할 수 있다(즉, VIR=VPC/IPC).
예를 들어, 가비지 콜렉션 관리 테이블(GTB)은 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2)에 각각 대응하는 가비지 콜렉션 인덱스들을 저장하는 가비지 콜렉션 관리 테이블(120B)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 관리 테이블(120B)은 제1 서브 블록(SUB_BLK1)에 대응하는 제1 유효 페이지 카운트(VPCa), 제1 무효 페이지 카운트(IPCa) 및 제1 비율 값(VIRa)을 저장할 수 있고, 제2 서브 블록(SUB_BLK2)에 대응하는 제2 유효 페이지 카운트(VPCb), 제2 무효 페이지 카운트(IPCb) 및 제2 비율 값(VIRb)을 저장할 수 있다. 예를 들어, 제1 유효 페이지 카운트(VPCa)가 43이고, 제1 무효 페이지 카운트(IPCa)가 57인 경우, 제1 비율 값(VIRa)은 0.75(=43/57)이다. 예를 들어, 제2 유효 페이지 카운트(VPCb)는 40이고, 제2 무효 페이지 카운트(IPCb)가 40인 경우, 제2 비율 값(VIRb)은 1(=40/40)이다.
비교 로직(CL)은 제1 서브 블록(SUB_BLK1)의 제1 비율 값(VIRa)과 제2 서브 블록(SUB_BLK2)의 제2 비율 값(VIRb)를 비교할 수 있다. 가비지 콜렉션 선택기(120A)는 제1 비율 값(VIRa)과 제2 비율 값(VIRb) 중 작은 값에 대응하는 서브 블록을 희생 서브 블록으로 선택할 수 있다. 예를 들어, 제1 비율 값(VIRa)이 0.75이고, 제2 비율 값(VIRb)이 1이면, 가비지 콜렉션 선택기(120A)는 제1 비율 값(VIRa)에 대응하는 제1 서브 블록(SUB_BLK1)을 희생 서브 블록으로 선택할 수 있다.
도 13a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기(130A)를 나타내는 블록도이고, 도 13b는 본 개시의 일 실시예에 따른 가비지 콜렉션 관리 테이블(130B)을 나타낸다.
도 13a 및 도 13b를 참조하면, 가비지 콜렉션 희생 선택기(130A)는 디비전 모듈(DM), 가비지 콜렉션 관리 테이블(GTB) 및 비교 로직(CL)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 희생 선택기(130A)는 도 1의 가비지 콜렉션 모듈(112)에 포함될 수 있다. 가비지 콜렉션 희생 선택기(130A)는 복수의 서브 블록들 각각에 대응하는 유효 페이지 카운트(VPC) 및 워드 라인 카운트(total word line count)(TWC)를 수신할 수 있다. 이때, 워드 라인 카운트(TWC)는 각 서브 블록에 연결되는 워드 라인들의 개수로서, 각 서브 블록의 블록 사이즈에 대응할 수 있다. 디비전 모듈(DM)은 유효 페이지 카운트(VPC)를 워드 라인 카운트(TWC)로 나눔으로써, 워드 라인 카운트(TWC)에 대한 유효 페이지 카운트(VPC)의 비율 값, 즉, 워드 라인 카운트(TWC)와 유효 페이지 카운트(VPC)의 비율 값(VTWR)을 출력할 수 있다(즉, VTWR=VPC/TWC).
예를 들어, 가비지 콜렉션 관리 테이블(GTB)은 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2)에 각각 대응하는 가비지 콜렉션 인덱스들을 저장하는 가비지 콜렉션 관리 테이블(130B)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 관리 테이블(130B)은 제1 서브 블록(SUB_BLK1)에 대응하는 제1 유효 페이지 카운트(VPCa), 제1 워드 라인 카운트(TWCa) 및 제1 비율 값(VTWRa)을 저장할 수 있고, 제2 서브 블록(SUB_BLK2)에 대응하는 제2 유효 페이지 카운트(VPCb), 제2 워드 라인 카운트(TWCb) 및 제2 비율 값(VTWRb)을 저장할 수 있다. 예를 들어, 제1 유효 페이지 카운트(VPCa)가 43이고, 제1 워드 라인 카운트(TWCa)가 100인 경우, 제1 비율 값(VIRa)은 0.43(=43/100)이다. 예를 들어, 제2 유효 페이지 카운트(VPCb)는 40이고, 제2 워드 라인 카운트(TWCb)가 80인 경우, 제2 비율 값(VTWRb)은 0.5(=40/80)이다.
비교 로직(CL)은 제1 서브 블록(SUB_BLK1)의 제1 비율 값(VTWRa)과 제2 서브 블록(SUB_BLK2)의 제2 비율 값(VTWRb)를 비교할 수 있다. 가비지 콜렉션 선택기(130A)는 제1 비율 값(VTWRa)과 제2 비율 값(VTWRb) 중 작은 값에 대응하는 서브 블록을 희생 서브 블록으로 선택할 수 있다. 예를 들어, 제1 비율 값(VTWRa)이 0.43이고, 제2 비율 값(VTWRb)이 0.5이면, 가비지 콜렉션 선택기(130A)는 제1 비율 값(VTWRa)에 대응하는 제1 서브 블록(SUB_BLK1)을 희생 서브 블록으로 선택할 수 있다.
도 14a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기(140A)를 나타내는 블록도이고, 도 14b는 본 개시의 일 실시예에 따른 가비지 콜렉션 관리 테이블(140B)을 나타낸다.
도 14a 및 도 14b를 참조하면, 가비지 콜렉션 희생 선택기(140A)는 디비전 모듈(DM), 가비지 콜렉션 관리 테이블(GTB) 및 비교 로직(CL)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 희생 선택기(140A)는 도 1의 가비지 콜렉션 모듈(112)에 포함될 수 있다. 가비지 콜렉션 희생 선택기(140A)는 복수의 서브 블록들 각각에 대응하는 유효 페이지 카운트(VPC) 및 전체 페이지 카운트(total page count)(TPC)를 수신할 수 있다. 이때, 전체 페이지 카운트(TWC)는 각 서브 블록에 포함되는 페이지들의 개수로서, 각 서브 블록의 블록 사이즈에 대응할 수 있다. 디비전 모듈(DM)은 유효 페이지 카운트(VPC)를 전체 페이지 카운트(TPC)로 나눔으로써, 전체 페이지 카운트(TPC)에 대한 유효 페이지 카운트(VPC)의 비율 값, 즉, 전체 페이지 카운트(TPC)와 유효 페이지 카운트(VPC)의 비율 값(VTPR)을 출력할 수 있다(즉, VTPR=VPC/TPC).
예를 들어, 가비지 콜렉션 관리 테이블(GTB)은 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2)에 각각 대응하는 가비지 콜렉션 인덱스들을 저장하는 가비지 콜렉션 관리 테이블(140B)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 관리 테이블(140B)은 제1 서브 블록(SUB_BLK1)에 대응하는 제1 유효 페이지 카운트(VPCa), 제1 전체 페이지 카운트(TPCa) 및 제1 비율 값(VTPRa)을 저장할 수 있고, 제2 서브 블록(SUB_BLK2)에 대응하는 제2 유효 페이지 카운트(VPCb), 제2 전체 페이지 카운트(TPCb) 및 제2 비율 값(VTPRb)을 저장할 수 있다.
예를 들어, 전체 페이지 카운트(TWC)는 서브 블록에 연결되는 워드 라인들의 개수, 스트링 선택 라인들의 개수 및 각 메모리 셀에 저장되는 데이터 비트 개수의 곱에 대응할 수 있다. 예를 들어, 제1 서브 블록(SUB_BLK1)에 연결되는 워드 라인들의 개수는 100이고, 제2 서브 블록(SUB_BLK2)에 연결되는 워드 라인들의 개수는 80이고, 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2) 각각에 연결되는 스트링 선택 라인들의 개수가 8이며, 제1 및 제2 서브 블록들(SUB_BLK1, SUB_BLK2) 각각에 포함된 메모리 셀들이 QLC들일 수 있다. 이때, 제1 전체 페이지 카운트(TPCa)는 3200(=100*8*4)이고, 제2 전체 페이지 카운트(TPCb)는 2560(=80*8*4)이다. 예를 들어, 제1 유효 페이지 카운트(VPCa)가 43이면, 제1 비율 값(VTPRa)은 0.0134375(=43/3200)이다. 예를 들어, 제2 유효 페이지 카운트(VPCb)는 40이면, 제2 비율 값(VTPRb)은 0.015625(=40/2560)이다.
비교 로직(CL)은 제1 서브 블록(SUB_BLK1)의 제1 비율 값(VTPRa)과 제2 서브 블록(SUB_BLK2)의 제2 비율 값(VTPRb)를 비교할 수 있다. 가비지 콜렉션 선택기(140A)는 제1 비율 값(VTPRa)과 제2 비율 값(VTPRb) 중 작은 값에 대응하는 서브 블록을 희생 서브 블록으로 선택할 수 있다. 예를 들어, 제1 비율 값(VTPRa)이 0.0134375이고, 제2 비율 값(VTPRb)이 0.015625이면, 가비지 콜렉션 선택기(140A)는 제1 비율 값(VTPRa)에 대응하는 제1 서브 블록(SUB_BLK1)을 희생 서브 블록으로 선택할 수 있다.
도 10 내지 도 14b를 함께 참조하면, 예를 들어, 제1 서브 블록(101)에 연결된 워드 라인들의 개수는 100개이고, 제2 서브 블록(102)에 연결된 워드 라인들의 개수는 80일 수 있다. 예를 들어, 제1 서브 블록(101)에서, 유효 페이지들(VP)에 대응하는 워드 라인들의 개수, 즉, 유효 워드 라인 개수는 43개이고, 무효 페이지들(IP)에 대응하는 워드 라인들의 개수, 즉, 무효 워드 라인 개수는 57개일 수 있다. 또한, 예를 들어, 제2 서브 블록(102)에서, 유효 페이지들(VP)에 대응하는 워드 라인들의 개수, 즉, 유효 워드 라인 개수는 40개이고, 무효 페이지들(IP)에 대응하는 워드 라인들의 개수, 즉, 무효 워드 라인 개수는 40개일 수 있다. 이하에서는, 설명의 편의상 유효 페이지(VP)에 대응하는 워드 라인을 유효 워드 라인으로, 무효 페이지(IP)에 대응하는 워드 라인을 무효 워드 라인이라고 지칭하기로 한다.
본 발명의 비교예에 따라, 제1 및 제2 서브 블록들(101, 102) 각각의 유효 페이지 카운트 또는 유효 워드 라인 개수를 기초로 희생 서브 블록을 선택할 경우, 유효 워드 라인 개수가 더 적은 제2 서브 블록(102)을 희생 서브 블록으로 선택할 수 있다. 희생 서브 블록으로 선택된 제2 서브 블록(102)에 대해 가비지 콜렉션 동작을 수행할 경우, 제2 서브 블록(102)의 유효 페이지들(VP)을 대상 서브 블록에 복사하고, 제2 서브 블록(102)을 소거함으로써, 제2 서브 블록(102)을 프리 블록으로 변경할 수 있다. 예를 들어, 제2 서브 블록(102)에 대해 가비지 콜렉션 동작을 수행할 경우, 제2 서브 블록(102)의 40개의 유효 워드 라인들에 대응하는 유효 페이지를 복사하고, 제2 서브 블록(102)의 80개의 워드 라인들에 대응하는 페이지들이 프리 페이지들로서 확보될 수 있다.
한편, 도 11a 내지 도 14b에서 상술된 실시예들에서, 제1 서브 블록(SUB_BLK1)은 도 10의 제1 서브 블록(101)에 대응하고, 제2 서브 블록(SUB_BLK2)은 도 10의 제2 서브 블록(102)에 대응할 수 있다. 도 11a 내지 도 14b에서 상술된 실시예들에 따르면, 유효 페이지 카운트(VPC)의 무효 페이지 카운트(IPC)에 대한 비율이 낮은 제1 서브 블록(101)을 희생 서브 블록으로 선택할 수 있다. 스토리지 컨트롤러(11)는 제1 서브 블록(101)의 유효 페이지(VP)를 대상 서브 블록(104)에 복사할 수 있고, 이에 따라, 제1 서브 블록(101)은 무효 페이지들(IP)만을 포함하는 제1 변환 블록(101')으로 변경될 수 있다. 이어서, 스토리지 컨트롤러(11)는 제1 변환 블록(101')에 대해 소거 동작을 수행함으로써, 제1 프리 블록(101")을 확보할 수 있다.
본 개시의 실시예들에 따르면, 제1 서브 블록(101)의 43개의 유효 워드 라인들에 대응하는 유효 페이지들(VP)을 대상 서브 블록인 제4 서브 블록(104)에 복사하고, 제1 서브 블록(101)을 소거함으로써, 100개의 유효 워드 라인들에 대응하는 프리 페이지들(FP)을 확보할 수 있다. 이와 같이, 본 개시의 실시예들에 따르면, 비교예에 비해 3개의 유효 워드 라인들에 대응하는 유효 페이지들을 더 복사함으로써, 비교예에 비해 20개의 추가 유효 워드 라인들에 대응하는 프리 페이지들을 확보할 수 있다.
가비지 콜렉션 동작의 수행에 따른 가비지 콜렉션 코스트(cost)는 복사해야 하는 유효 페이지들의 개수, 즉, 유효 페이지 카운트(VPC)에 비례하고, 가비지 콜렉션 수행으로 인한 가비지 콜렉션 이득(gain)은 무효 페이지들의 개수, 즉, 무효 페이지 카운트(IPC)에 비례할 수 있다. 본 개시의 실시예들에 따르면, 종래에 비해 가비지 콜렉션 코스트의 증가량보다 가비지 콜렉션 이득의 증가량이 더 크기 때문에, 가비지 콜렉션 동작의 수행으로 인한 스토리지 장치(80)의 성능 저하를 개선할 수 있다.
구체적으로, 가비지 콜렉션 코스트, 즉, 가비지 콜렉션 동작에 소요되는 시간은 복사해야 하는 유효 페이지들의 개수, 즉, 유효 페이지 카운트(VPC)와 페이지 마이그레이션 시간(tMigration)의 곱에 비례할 수 있다. 여기서, 페이지 마이그레이션 시간(tMigration)은 페이지에 대한 독출 시간, 프로그램 시간 및 소거 시간의 합에 대응할 수 있다. 비교예에 따라 제2 서브 블록(102)을 선택할 경우, 가비지 콜렉션 동작에 소요되는 시간은 40*tMigration에 비례할 수 있고, 본 실시예들에 따라 제1 서브 블록(101)을 선택할 경우, 가비지 콜렉션 동작에 소요되는 시간은 43*tMigration에 비례할 수 있다.
한편, 가비지 콜렉션 이득은 희생 서브 블록의 전체 페이지 카운트(TPC)와 페이지 마이그레이션 시간(tMigration)의 곱에 비례할 수 있다. 비교예에 따라 제2 서브 블록(102)을 선택할 경우, 가비지 콜렉션 이득은 80*tMigration에 비례할 수 있고, 본 실시예들에 따라 제1 서브 블록(101)을 선택할 경우, 가비지 콜렉션 이득은 100*tMigration에 비례할 수 있다.
이때, 가비지 콜렉션 효율(efficiency)은 가비지 콜렉션 이득에서 가비지 콜렉션 코스트를 뺀 값에 대응할 수 있다. 따라서, 비교예에 따라 제2 서브 블록(102)을 선택할 경우, 가비지 콜렉션 효율은 40*tMigration(= 80*tMigration - 40*tMigration)에 비례할 수 있고, 본 실시예들에 따라 제1 서브 블록(101)을 선택할 경우, 가비지 콜렉션 효율은 57*tMigration(= 100*tMigration - 43*tMigration)에 비례할 수 있다. 따라서, 본 개시의 상술된 실시예들에 따르면, 가비지 콜렉션 효율이 종래에 비해 클 수 있으므로, 가비지 콜렉션 동작의 수행으로 인한 스토리지 장치(80)의 성능 저하를 개선할 수 있다.
도 15는 본 개시의 일 실시예에 따른 가비지 콜렉션 동작의 수행 방법을 나타내는 흐름도이다. 도 15를 참조하면, 본 실시예에 따른 가비지 콜렉션 동작의 수행 방법은 예를 들어, 도 8의 스토리지 컨트롤러(11)에서 수행될 수 있다. 도 8 내지 도 14b를 참조하여 상술된 내용은 본 실시예도 적용될 수 있고, 중복된 설명은 생략하기로 한다. 단계 S110에서, 유효 페이지 카운트(VPC)와 무효 페이지 카운트(IPC)의 차이 값(VID)으로 가비지 콜렉션 관리 테이블(GTB)을 업데이트한다. 단계 S120에서, 차이 값(VID)이 가장 큰 서브 블록을 찾는다. 단계 S130에서, 상기 서브 블록을 희생 서브 블록으로서 선택한다. 단계 S140에서, 희생 서브 블록의 유효 페이지를 대상 서브 블록으로 복사한다. 단계 S150에서, 맵핑 테이블(MTB)을 업데이트한다. 단계 S160에서, 희생 서브 블록에 대해 소거 동작을 수행한다. 단계 S170에서, 프리 블록 테이블을 업데이트한다. 예를 들어, 스토리지 컨트롤러(11)는 프리 블록들에 대한 정보를 저장하는 프리 블록 테이블을 관리할 수 있고, 희생 서브 블록에 대한 소거 동작이 완료되면 희생 서브 블록은 프리 블록으로 변환될 수 있고, 해당 프리 블록에 대한 정보는 프리 블록 테이블에 업데이트될 수 있다.
도 16은 본 개시의 일 실시예에 따른 스토리지 장치(160)를 나타내는 블록도이다. 도 16을 참조하면, 스토리지 장치(160)는 스토리지 컨트롤러(11a) 및 비휘발성 메모리(12a)를 포함할 수 있고, 도 1의 스토리지 장치(10)의 일 구현 예에 대응할 수 있다. 비휘발성 메모리(12a)는 제1 그룹(GR1) 및 제2 그룹(GR2)을 포함하고, 제1 그룹(GR1)은 복수의 제1 서브 블록들(121a)을 포함하고, 제2 그룹(GR2)은 복수의 제2 서브 블록들(121b)을 포함할 수 있다. 복수의 제1 서브 블록들(121a) 각각은 제1 블록 사이즈를 가질 수 있고, 복수의 메모리 셀들을 포함할 수 있다. 복수의 제2 서브 블록들(121b) 각각은 제2 블록 사이즈를 가질 수 있고, 복수의 메모리 셀들을 포함할 수 있다. 이때, 제1 블록 사이즈와 제2 블록 사이즈는 서로 다를 수 있다. 예를 들어, 복수의 제1 서브 블록들(121a) 각각은 도 5, 도 6 또는 도 7의 제1 워드 라인 그룹(WLG1)에 연결될 수 있고, 복수의 제2 서브 블록들(121b) 각각은 도 5, 도 6 또는 도 7의 제2 워드 라인 그룹(WLG2)에 연결될 수 있다.
스토리지 컨트롤러(11a)는 제1 및 제2 가비지 콜렉션 관리 테이블들(GTBa, GTBb), 제1 및 제2 가비지 콜렉션 희생 선택 블록들(VSa, VSb) 및 맵핑 테이블(MTB)을 포함할 수 있다. 예를 들어, 제1 및 제2 가비지 콜렉션 관리 테이블들(GTBa, GTBb), 제1 및 제2 가비지 콜렉션 희생 선택 블록들(VSa, VSb)은 도 1의 가비지 콜렉션 모듈(112)에 포함될 수 있다. 예를 들어, 제1 및 제2 가비지 콜렉션 관리 테이블들(GTBa, GTBb), 제1 및 제2 가비지 콜렉션 희생 선택 블록들(VSa, VSb) 및 맵핑 테이블(MTB)은 워킹 메모리에 로딩될 수 있다. 스토리지 컨트롤러(11a)는 도 8의 스토리지 컨트롤러(11)의 변형 예에 대응하며, 도 8 내지 도 15를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
제1 가비지 콜렉션 관리 테이블(GTBa)은 복수의 제1 서브 블록들(121a) 각각에 대응하는 유효 페이지의 개수, 즉, 제1 유효 페이지 카운트(VPC1) 및 복수의 제1 서브 블록들(121a) 각각에 대응하는 무효 페이지의 개수, 즉, 제1 무효 페이지 카운트(IPC1)를 저장할 수 있다. 제2 가비지 콜렉션 관리 테이블(GTBb)은 복수의 제2 서브 블록들(121b) 각각에 대응하는 유효 페이지의 개수, 즉, 제2 유효 페이지 카운트(VPC2) 및 복수의 제2 서브 블록들(121b) 각각에 대응하는 무효 페이지의 개수, 즉, 제2 무효 페이지 카운트(IPC2)를 저장할 수 있다.
제1 가비지 콜렉션 희생 선택 블록(VSa)은 제1 가비지 콜렉션 관리 테이블(GTBa)을 참조하여, 제1 그룹(GR1)에 포함되는 복수의 제1 서브 블록들(121a) 중 희생 서브 블록을 선택할 수 있다. 제2 가비지 콜렉션 희생 선택 블록(VSb)은 제2 가비지 콜렉션 관리 테이블(GTBb)을 참조하여, 제2 그룹(GR2)에 포함되는 복수의 제2 서브 블록들(121b) 중 희생 서브 블록을 선택할 수 있다. 일 실시예에서, 제1 가비지 콜렉션 희생 선택 블록(VSa)은 제1 그룹(GR1)에서 프리 블록이 요구되는 경우 제1 서브 블록들(121a) 중 희생 서브 블록을 선택할 수 있고, 제2 가비지 콜렉션 희생 선택 블록(VSb)은 제2 그룹(GR2)에서 프리 블록이 요구되는 경우 제2 서브 블록들(121b) 중 희생 서브 블록을 선택할 수 있다.
일 실시예에서, 제1 가비지 콜렉션 희생 선택 블록(VSa)은 제1 유효 페이지 카운트(VPC1)를 임계 값과 비교하고, 비교 결과에 따라 제1 희생 서브 블록을 선택할 수 있다. 예를 들어, 제1 유효 페이지 카운트(VPC1)가 임계 값 이상이면, 제1 서브 블록들(121a) 중 제1 유효 페이지 카운트(VPC1)가 작은 서브 블록을 제1 희생 서브 블록으로 선택할 수 있다. 한편, 예를 들어, 제1 유효 페이지 카운트(VPC1)가 임계 값보다 작으면, 제1 서브 블록들(121a) 중 제1 무효 페이지 카운트(IPC1)가 많은 서브 블록을 제1 희생 서브 블록으로 선택할 수 있다. 일 실시예에서, 제2 가비지 콜렉션 희생 선택 블록(VSb)은 제2 유효 페이지 카운트(VPC2)를 임계 값과 비교하고, 비교 결과에 따라 제2 희생 서브 블록을 선택할 수 있다. 예를 들어, 제2 유효 페이지 카운트(VPC2)가 임계 값 이상이면, 제2 서브 블록들(121b) 중 제2 유효 페이지 카운트(VPC2)가 작은 서브 블록을 제2 희생 서브 블록으로 선택할 수 있다. 한편, 예를 들어, 제2 유효 페이지 카운트(VPC2)가 임계 값보다 작으면, 제2 서브 블록들(121b) 중 제2 무효 페이지 카운트(IPC2)가 많은 서브 블록을 제2 희생 서브 블록으로 선택할 수 있다. 일 실시예에서, 임계 값은 프로그램 시간, 독출 시간 및 소거 시간에 따라 변경될 수 있다. 구체적으로, 페이지 마이그레이션 시간은 프로그램 시간, 독출 시간 및 소거 시간의 합에 대응할 수 있고, 페이지 마이그레이션 시간에 따라 임계 값이 변경될 수 있다. 일 실시예에서, 임계 값은 서브 블록의 마모 정도, 예를 들어, 프로그램/소거 사이클 카운트에 따라 변경될 수 있다.
맵핑 테이블(MTB)은 호스트(20)로부터 수신된 논리 주소들에 각각 대응하는 비휘발성 메모리(12)의 물리 주소들을 저장할 수 있다. 스토리지 컨트롤러(11a)는 가비지 콜렉션 동작이 수행되면 제1 또는 제2 가비지 콜렉션 관리 테이블(GTBa 또는 GTBb) 및 맵핑 테이블(MTB)을 업데이트할 수 있다. 예를 들어, 스토리지 컨트롤러(11a)는 제1 그룹(GR1)에 대한 가비지 콜렉션 동작 중 대상 서브 블록에 대한 기입 동작이 완료되면 제1 가비지 콜렉션 관리 테이블(GTBa) 및 맵핑 테이블(MTB)을 업데이트할 수 있고, 제2 그룹(GR2)에 대한 가비지 콜렉션 동작 중 대상 서브 블록에 대한 기입 동작이 완료되면 제2 가비지 콜렉션 관리 테이블(GTBb) 및 맵핑 테이블(MTB)을 업데이트할 수 있다.
일 실시예에 따른 스토리지 컨트롤러(11a)의 동작 방법은 스토리지 컨트롤러(11a)의 가비지 콜렉션 동작 방법에 대응할 수 있다. 동작 방법은 제1 서브 블록들(121a)에 대해 제1 가비지 콜렉션 동작을 수행하는 단계, 및 제2 서브 블록들(121b)에 대해 제2 가비지 콜렉션 동작을 수행하는 단계를 포함할 수 있다. 제1 가비지 콜렉션 동작을 수행하는 단계는, 제1 서브 블록들(121a) 중 제1 유효 페이지 카운트(VPC1)가 가장 작은 서브 블록을 제1 희생 서브 블록으로 선택하는 단계, 제1 희생 서브 블록의 유효 페이지를 제1 서브 블록들(121a) 중 제1 대상 서브 블록에 복사하는 단계, 및 제1 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함할 수 있다. 제2 가비지 콜렉션 동작을 수행하는 단계는, 제2 서브 블록들(121b) 중 제2 희생 서브 블록을 선택하는 단계, 제2 희생 서브 블록의 유효 페이지를 제2 서브 블록들(121b) 중 제2 대상 서브 블록에 복사하는 단계, 및 제2 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함할 수 있다.
도 17은 본 개시의 일 실시예에 따라 서로 다른 블록 사이즈를 갖는 서브 블록들을 포함하는 비휘발성 메모리(170)를 예시적으로 나타낸다. 도 17을 참조하면, 비휘발성 메모리(170)는 제1 그룹(GR1) 및 제2 그룹(GR2)을 포함하고, 제1 그룹(GR1)은 제1 서브 블록들(SUB_BLK1a 내지 SUB_BLK1d)을 포함하고, 제2 그룹(GR2)은 제2 서브 블록들(SUB_BLK2a 내지 SUB_BLK2d)을 포함할 수 있다. 예를 들어, 비휘발성 메모리(170)는 도 16의 비휘발성 메모리(12a)의 일 예에 대응할 수 있고, 제1 서브 블록들(SUB_BLK1a 내지 SUB_BLK1d)은 도 16의 제1 서브 블록들(121a)에 대응할 수 있고, 제2 서브 블록들(SUB_BLK2a 내지 SUB_BLK2d)은 도 16의 제2 서브 블록들(121b)에 대응할 수 있다.
예를 들어, 제1 서브 블록들(SUB_BLK1a 내지 SUB_BLK1d)은 제1 방향(HD1)으로 서로 인접할 수 있고, 제2 서브 블록들(SUB_BLK2a 내지 SUB_BLK2d)은 제1 방향(HD1)으로 서로 인접할 수 있으나, 본 발명은 이에 한정되지 않는다. 수직 방향(VD)으로 인접한 제1 서브 블록(SUB_BLK1a) 및 제2 서브 블록(SUB_BLK2a)은 메모리 블록(BLK)을 구성할 수 있다. 제1 서브 블록들(SUB_BLK1a 내지 SUB_BLK1d) 각각은 수직 방향(VD)으로 제1 블록 사이즈(BS1)를 가질 수 있고, 제2 서브 블록들(SUB_BLK2a 내지 SUB_BLK2d) 각각은 수직 방향(VD)으로 제2 블록 사이즈(BS2)를 가질 수 있고, 제1 블록 사이즈(BS1)와 제2 블록 사이즈(BS2)는 서로 다를 수 있다.
도 18은 본 개시의 일 실시예에 따라, 도 16의 스토리지 컨트롤러(11a)의 가비지 콜렉션 동작을 예시적으로 나타낸다. 도 18을 참조하면, 제1 및 제2 서브 블록들(181, 182)은 수직 방향으로 적층되고, 예를 들어, 도 17의 제1 및 제2 서브 블록들(SUB_BLK1a, SUB_BLK2a)에 각각 대응할 수 있다. 제3 및 제4 서브 블록들(183, 184)은 수직 방향으로 적층되고, 예를 들어, 도 17의 제1 및 제2 서브 블록들(SUB_BLK1b, SUB_BLK2b)에 각각 대응할 수 있다. 제1 및 제3 서브 블록들(181, 183) 각각은 제1 메모리 스택(ST1)에 대응하고, 제1 그룹(GR1)에 포함될 수 있다. 제2 및 제4 서브 블록들(182, 184) 각각은 제2 메모리 스택(ST2)에 대응하고, 제2 그룹(GR2)에 포함될 수 있다.
본 실시예는 도 10의 가비지 콜렉션 동작의 변형 예에 대응하며, 중복된 설명은 생략하기로 한다. 제1 및 제2 서브 블록들(181, 182) 각각은 유효 페이지들(VP) 및 무효 페이지들(IP)을 포함할 수 있다. 예를 들어, 제1 그룹(GR1)의 제1 및 제3 서브 블록들(181, 183) 각각에 연결된 워드 라인들의 개수는 100이고, 제2 그룹(GR2)의 제2 및 제4 서브 블록들(182, 184) 각각에 연결된 워드 라인들의 개수는 80일 수 있다. 이와 같이, 제1 메모리 스택(ST1)에 대응하는 서브 블록의 블록 사이즈는 제2 메모리 스택(ST2)에 대응하는 서브 블록의 블록 사이즈보다 클 수 있다.
본 발명의 실시예들에 따르면, 스토리지 컨트롤러(11a)는 제1 그룹(GR1)에 대해 프리 블록이 요구되는 경우, 제1 서브 블록들(181, 183) 중 제1 유효 페이지 카운트(VPC1)가 가장 적은 서브 블록을 제1 희생 서브 블록으로 선택할 수 있다. 또한, 스토리지 컨트롤러(11a)는 제2 그룹(GR2)에 대해 프리 블록이 요구되는 경우, 제2 서브 블록들(182, 184) 중 제2 유효 페이지 카운트(VPC2)가 가장 적은 서브 블록을 제2 희생 서브 블록으로 선택할 수 있다.
일 실시예에서, 스토리지 컨트롤러(11a)는 제1 그룹(GR1)에 대해 제1 유효 페이지 카운트(VPC1)를 기초로 제1 희생 서브 블록을 선택하고, 제2 그룹(GR2)에 대해 제2 유효 페이지 카운트(VPC2)를 기초로 제2 희생 서브 블록을 선택할 수 있고, 이에 대해 도 19a 및 도 19b를 참조하여 상술하기로 한다. 일 실시예에서, 스토리지 컨트롤러(11a)는 제1 그룹(GR1)에 대해 제1 유효 페이지 카운트(VPC1)와 제1 무효 페이지 카운트(IPC1)의 차이를 기초로 제1 희생 서브 블록을 선택하고, 제2 그룹(GR2)에 대해 제2 유효 페이지 카운트(VPC2)와 제2 무효 페이지 카운트(IPC2)의 차이를 기초로 제2 희생 서브 블록을 선택할 수 있고, 이에 대해 도 20a 및 도 20b를 참조하여 상술하기로 한다.
일 실시예에서, 스토리지 컨트롤러(11a)는 각 그룹 별로 유효 페이지 카운트(VPC)와 무효 페이지 카운트(IPC)의 비율을 기초로 희생 서브 블록을 선택할 수 있고, 이에 대해 도 12a 및 도 12b를 참조하여 상술된 내용이 적용될 수 있다. 일 실시예에서, 스토리지 컨트롤러(11a)는 각 그룹 별로 유효 페이지 카운트(VPC)와 블록 사이즈의 비율을 기초로 희생 서브 블록을 선택할 수 있다. 예를 들어, 블록 사이즈는 워드 라인들의 개수 또는 전체 페이지들의 개수에 대응할 수 있고, 이에 대해 도 13a 내지 도 14b를 참조하여 상술된 내용이 적용될 수 있다.
도 19a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기(190A)를 나타내는 블록도이고, 도 19b는 본 개시의 일 실시예에 따른 제1 및 제2 가비지 콜렉션 관리 테이블들(190B, 190C)을 나타낸다.
도 19a 및 도 19b를 참조하면, 가비지 콜렉션 희생 선택기(190A)는 제1 및 제2 가비지 콜렉션 관리 테이블들(GTBa, GTBb) 및 제1 및 제2 비교 로직들(CL1, CL2)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 희생 선택기(190A)는 도 1의 가비지 콜렉션 모듈(112)에 포함될 수 있다. 가비지 콜렉션 희생 선택기(190A)는 제1 그룹(GR1)의 복수의 제1 서브 블록들(SUB_BLK1a, SUB_BLK1b) 각각에 대응하는 제1 유효 페이지 카운트(VPC1) 및 복수의 제2 서브 블록들(SUB_BLK2a, SUB_BLK2b) 각각에 대응하는 제2 유효 페이지 카운트(VPC2)를 수신할 수 있다.
예를 들어, 제1 가비지 콜렉션 관리 테이블(GTBa)은 제1 서브 블록들(SUB_BLK1a, SUB_BLK1b)에 각각 대응하는 가비지 콜렉션 인덱스들을 저장하는 제1 가비지 콜렉션 관리 테이블(190B)을 포함할 수 있다. 예를 들어, 제1 가비지 콜렉션 관리 테이블(190B)은 제1 서브 블록(SUB_BLK1a)에 대응하는 제1 유효 페이지 카운트(VPC1a), 제1 서브 블록(SUB_BLK1b)에 대응하는 제1 유효 페이지 카운트(VPC1b)를 저장할 수 있다. 예를 들어, 제2 가비지 콜렉션 관리 테이블(GTBb)은 제2 서브 블록들(SUB_BLK2a, SUB_BLK2b)에 각각 대응하는 가비지 콜렉션 인덱스들을 저장하는 제2 가비지 콜렉션 관리 테이블(190C)을 포함할 수 있다. 예를 들어, 제2 가비지 콜렉션 관리 테이블(190C)은 제2 서브 블록(SUB_BLK2a)에 대응하는 제2 유효 페이지 카운트(VPC2a), 제2 서브 블록(SUB_BLK2b)에 대응하는 제2 유효 페이지 카운트(VPC2b)를 저장할 수 있다.
일 실시예에서, 가비지 콜렉션 희생 선택기(190A)은 제1 유효 페이지 카운트(VPC1)를 임계 값(TH1)과 비교하고, 비교 결과에 따라 제1 희생 서브 블록을 선택할 수 있다. 예를 들어, 제1 유효 페이지 카운트(VPC1)가 제1 임계 값(TH1) 이상이면, 제1 및 제2 서브 블록들(SUB_BLK1a, SUB_BLK1b) 중 제1 유효 페이지 카운트(VPC1)가 작은 서브 블록을 제1 희생 서브 블록으로 선택할 수 있다. 한편, 예를 들어, 유효 페이지 카운트(VPC)가 임계 값보다 작으면, 제1 및 제2 서브 블록들(121a, 121b) 중 무효 페이지 카운트(IPC)가 많은 서브 블록을 희생 서브 블록으로 선택할 수 있다. 일 실시예에서, 임계 값은 프로그램 시간, 독출 시간 및 소거 시간에 따라 변경될 수 있다. 구체적으로, 페이지 마이그레이션 시간은 프로그램 시간, 독출 시간 및 소거 시간의 합에 대응할 수 있고, 페이지 마이그레이션 시간에 따라 임계 값이 변경될 수 있다. 일 실시예에서, 임계 값은 서브 블록의 마모 정도, 예를 들어, 프로그램/소거 사이클 카운트에 따라 변경될 수 있다.
가비지 콜렉션 선택기(190A)는 제1 유효 페이지 카운트들(VPC1a, VPC1b) 중 작은 값에 대응하는 서브 블록을 제1 희생 서브 블록으로 선택할 수 있고, 제2 유효 페이지 카운트들(VPC2a, VPC2b) 중 작은 값에 대응하는 서브 블록을 제2 희생 서브 블록으로 선택할 수 있다. 이와 같이, 가비지 콜렉션 선택기(190A)는 제1 그룹(GR1)에 대한 제1 희생 서브 블록의 선택 동작과 제2 그룹(GR2)에 대한 제2 희생 서브 블록의 선택 동작을 독립적으로 수행할 수 있다. 나아가, 스토리지 컨트롤러는 제1 그룹(GR1)에 대한 제1 가비지 콜렉션 동작과 제2 그룹(GR2)에 대한 제2 가비지 콜렉션 동작을 독립적으로 수행할 수 있다.
도 20a는 본 개시의 일 실시예에 따른 가비지 콜렉션 희생 선택기(200A)를 나타내는 블록도이고, 도 20b는 본 개시의 일 실시예에 따른 제1 및 제2 가비지 콜렉션 관리 테이블들(200B, 200C)을 나타낸다.
도 20a 및 도 20b를 참조하면, 가비지 콜렉션 희생 선택기(200A)는 제1 및 제2 감산 모듈들(SMa, SMb), 제1 및 제2 가비지 콜렉션 관리 테이블들(GTBa, GTBb) 및 제1 및 제2 비교 로직들(CLa, CLb)을 포함할 수 있다. 예를 들어, 가비지 콜렉션 희생 선택기(200A)는 도 1의 가비지 콜렉션 모듈(112)에 포함될 수 있다. 가비지 콜렉션 희생 선택기(200A)는 복수의 제1 서브 블록들 각각에 대응하는 제1 유효 페이지 카운트(VPC1) 및 제1 무효 페이지 카운트(IPC1)을 수신할 수 있고, 복수의 제2 서브 블록들 각각에 대응하는 제2 유효 페이지 카운트(VPC2) 및 제2 무효 페이지 카운트(IPC2)을 수신할 수 있다.
예를 들어, 제1 가비지 콜렉션 관리 테이블(GTBa)은 제1 서브 블록들(SUB_BLK1a, SUB_BLK1b)에 각각 대응하는 가비지 콜렉션 인덱스들을 저장하는 제1 가비지 콜렉션 관리 테이블(200B)을 포함할 수 있다. 예를 들어, 제1 가비지 콜렉션 관리 테이블(200B)은 제1 서브 블록(SUB_BLK1a)에 대응하는 제1 유효 페이지 카운트(VPC1a), 제1 무효 페이지 카운트(IPC1a) 및 제1 차이 값(VID1a)을 저장할 수 있고, 제1 서브 블록(SUB_BLK1b)에 대응하는 제1 유효 페이지 카운트(VPC1b), 제1 무효 페이지 카운트(IPC1b) 및 제1 차이 값(VID1b)을 저장할 수 있다.
예를 들어, 제2 가비지 콜렉션 관리 테이블(GTBb)은 제2 서브 블록들(SUB_BLK2a, SUB_BLK2b)에 각각 대응하는 가비지 콜렉션 인덱스들을 저장하는 제2 가비지 콜렉션 관리 테이블(200C)을 포함할 수 있다. 예를 들어, 제2 가비지 콜렉션 관리 테이블(200C)은 제2 서브 블록(SUB_BLK2a)에 대응하는 제2 유효 페이지 카운트(VPC2a), 제2 무효 페이지 카운트(IPC2a) 및 제2 차이 값(VID2a)을 저장할 수 있고, 제2 서브 블록(SUB_BLK2b)에 대응하는 제2 유효 페이지 카운트(VPC2b), 제2 무효 페이지 카운트(IPC2b) 및 제2 차이 값(VID2b)을 저장할 수 있다.
제1 비교 로직(CLa)은 제1 서브 블록(SUB_BLK1a)의 제1 차이 값(VID1a)과 제1 서브 블록(SUB_BLK1b)의 제1 차이 값(VID1b)을 비교할 수 있다. 일 실시예에서, 제1 비교 로직(CLa)은 제1 임계 값(TH1)을 수신할 수 있고, 제1 그룹(GR1)의 유효 페이지 카운트와 무효 페이지 카운트의 비율이 제1 임계 값(TH1) 이상이면, 제1 차이 값들(VID1a, VID1b)에 대한 비교 동작을 수행할 수 있다. 제2 비교 로직(CLb)은 제2 서브 블록(SUB_BLK2a)의 제2 차이 값(VID2a)과 제2 서브 블록(SUB_BLK2b)의 제2 차이 값(VID2b)을 비교할 수 있다. 일 실시예에서, 제2 비교 로직(CLb)은 제2 임계 값(TH2)을 수신할 수 있고, 제2 그룹(GR2)의 유효 페이지 카운트와 무효 페이지 카운트의 비율이 제2 임계 값(TH2) 이상이면, 제2 차이 값들(VID2a, VID2b)에 대한 비교 동작을 수행할 수 있다.
가비지 콜렉션 선택기(200A)는 제1 차이 값들(VID1a, VID1b) 중 큰 값에 대응하는 제1 서브 블록을 제1 희생 서브 블록으로 선택할 수 있고, 제2 차이 값들(VID2a, VID2b) 중 큰 값에 대응하는 제2 서브 블록을 제2 희생 서브 블록으로 선택할 수 있다. 이와 같이, 가비지 콜렉션 선택기(200A)는 제1 그룹(GR1)에 대한 제1 희생 서브 블록의 선택 동작과 제2 그룹(GR2)에 대한 제2 희생 서브 블록의 선택 동작을 독립적으로 수행할 수 있다. 나아가, 스토리지 컨트롤러는 제1 그룹(GR1)에 대한 제1 가비지 콜렉션 동작과 제2 그룹(GR2)에 대한 제2 가비지 콜렉션 동작을 독립적으로 수행할 수 있다.
도 19a 내지 도 20b에서 상술된 실시예들에서, 제1 서브 블록(SUB_BLK1)은 도 18의 제1 서브 블록(181)에 대응하고, 제2 서브 블록(SUB_BLK2a)은 도 18의 제2 서브 블록(182)에 대응할 수 있다. 상술된 실시예들에 따르면, 제1 그룹(GR1)에서 유효 페이지 카운트(VPC)가 가장 작은 제1 서브 블록(181)을 희생 서브 블록으로 선택할 수 있다. 스토리지 컨트롤러(11a)는 제1 서브 블록(181)의 유효 페이지(VP)를 제1 그룹(GR1)의 대상 서브 블록(184)에 복사할 수 있고, 이에 따라, 제1 서브 블록(181)은 무효 페이지들(IP)만을 포함하는 제1 변환 블록(181')으로 변경될 수 있다. 이어서, 스토리지 컨트롤러(11a)는 제1 변환 블록(181')에 대해 소거 동작을 수행함으로써, 제1 프리 블록(181")을 확보할 수 있다. 도 11a 내지 도 14b를 참조하여 상술한 바와 같이, 본 개시의 실시예들에 따르면, 가비지 콜렉션 효율이 종래에 비해 향상될 수 있고, 가비지 콜렉션 동작의 수행으로 인한 스토리지 장치(160)의 성능 저하를 개선할 수 있다.
도 21은 본 개시의 일 실시예에 따른 가비지 콜렉션 동작의 수행 방법을 나타내는 흐름도이다. 도 21을 참조하면, 본 실시예에 따른 가비지 콜렉션 동작의 수행 방법은 예를 들어, 도 16의 스토리지 컨트롤러(11a)에서 수행될 수 있다. 도 16 내지 도 20b를 참조하여 상술된 내용은 본 실시예도 적용될 수 있고, 중복된 설명은 생략하기로 한다. 단계 S210에서, 가비지 콜렉션 동작을 수행할 그룹을 선택한다. 구체적으로, 프리 블록이 필요한 그룹을 찾고, 해당 그룹을 가비지 콜렉션 동작이 수행될 그룹으로 선택할 수 있다. 단계 S220에서, 선택된 그룹 내에서 유효 페이지 카운트(VPC)가 가장 적은 서브 블록을 찾는다. 단계 S230에서, 상기 서브 블록을 희생 서브 블록으로서 선택한다. 단계 S240에서, 희생 서브 블록의 유효 페이지를 대상 서브 블록으로 복사한다. 단계 S250에서, 맵핑 테이블(MTB)을 업데이트한다. 단계 S260에서, 희생 서브 블록에 대해 소거 동작을 수행한다. 단계 S270에서, 프리 블록 테이블을 업데이트한다. 예를 들어, 스토리지 컨트롤러(11a)는 프리 블록들에 대한 정보를 저장하는 프리 블록 테이블을 관리할 수 있고, 희생 서브 블록에 대한 소거 동작이 완료되면 희생 서브 블록은 프리 블록으로 변환될 수 있고, 해당 프리 블록에 대한 정보는 프리 블록 테이블에 업데이트될 수 있다.
도 22는 본 개시의 일 실시예에 따른 스토리지 장치가 적용된 시스템(1000)을 나타낸다. 도 22의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 22의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 22를 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. 사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다. 센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다. 디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다. 전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 독립적으로 소거 가능한 복수의 서브 블록들을 포함하는 비휘발성 메모리; 및
    상기 복수의 서브 블록들에 대한 가비지 콜렉션(garbage collection) 동작을 제어하는 스토리지 컨트롤러를 포함하고,
    상기 복수의 서브 블록들은,
    수직 방향을 따라 적층된 제1 워드 라인들을 포함하는 제1 워드 라인 그룹에 각각 연결되고, 각각 제1 블록 사이즈를 갖는 제1 서브 블록들; 및
    상기 수직 방향을 따라 적층된 제2 워드 라인들을 포함하는 제2 워드 라인 그룹에 각각 연결되고, 각각 상기 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 제2 서브 블록들을 포함하고,
    상기 스토리지 컨트롤러는, 상기 복수의 서브 블록들 중 유효 페이지 카운트의 무효 페이지 카운트에 대한 비율이 가장 낮은 희생(victim) 서브 블록을 선택하고, 상기 희생 서브 블록의 유효 페이지를 상기 복수의 서브 블록들 중 대상(target) 서브 블록에 복사하는 것을 특징으로 하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 제1 블록 사이즈는 상기 제1 워드 라인들의 개수에 대응하고,
    상기 제2 블록 사이즈는 상기 제2 워드 라인들의 개수에 대응하는 것을 특징으로 하는 스토리지 장치.
  3. 제1항에 있어서,
    상기 제1 블록 사이즈는 상기 제1 서브 블록들 각각의 전체 페이지 개수에 대응하고,
    상기 제2 블록 사이즈는 상기 제2 서브 블록들 각각의 전체 페이지 개수에 대응하는 것을 특징으로 하는 스토리지 장치.
  4. 제1항에 있어서,
    상기 복수의 서브 블록들은, 기판의 상부에서 각각 상기 수직 방향으로 연장되는 복수의 메모리 스택들에 각각 대응하고,
    상기 제1 서브 블록들은 상기 기판의 상부의 제1 메모리 스택들에 각각 대응하며,
    상기 제2 서브 블록들은 상기 제1 메모리 스택들의 상부의 제2 메모리 스택들에 각각 대응하는 것을 특징으로 하는 스토리지 장치.
  5. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 서브 블록들 각각에 대한 상기 무효 페이지 카운트와 상기 유효 페이지 카운트의 차이 값을 계산하고, 상기 복수의 서브 블록들 중 상기 차이 값이 가장 큰 서브 블록을 상기 희생 서브 블록으로 선택하는 것을 특징으로 하는 스토리지 장치.
  6. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 서브 블록들 각각에 대해 상기 무효 페이지 카운트에 대한 상기 유효 페이지 카운트의 비율 값을 계산하고, 상기 복수의 서브 블록들 중 상기 비율 값이 가장 작은 서브 블록을 상기 희생 서브 블록으로 선택하는 것을 특징으로 하는 스토리지 장치.
  7. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 서브 블록들 각각에 대해 블록 사이즈에 대한 상기 유효 페이지 카운트의 비율 값을 계산하고, 상기 복수의 서브 블록들 중 상기 비율 값이 가장 작은 서브 블록을 상기 희생 서브 블록으로 선택하는 것을 특징으로 하는 스토리지 장치.
  8. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 서브 블록들에 대한 가비지 콜렉션 관리 테이블을 관리하고,
    상기 복수의 서브 블록들에 대한 상기 가비지 콜렉션 동작에 따라 상기 가비지 콜렉션 관리 테이블에 업데이트하며,
    상기 가비지 콜렉션 관리 테이블을 기초로 상기 복수의 서브 블록들에 대한 상기 가비지 콜렉션 동작을 제어하는 것을 특징으로 하는 스토리지 장치.
  9. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    호스트로부터 수신한 논리 주소들에 각각 대응하는 상기 비휘발성 메모리의 물리 주소들을 저장하는 맵핑 테이블을 관리하고,
    상기 희생 서브 블록의 상기 유효 페이지를 상기 대상 서브 블록에 복사한 후, 상기 맵핑 테이블을 업데이트하는 것을 특징으로 하는 스토리지 장치.
  10. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    제1 모드에서, 상기 비휘발성 메모리에 대해 서브 블록 단위로 소거 동작을 제어하고,
    제2 모드에서, 상기 비휘발성 메모리에 대해 블록 단위로 소거 동작을 제어하며,
    상기 블록은 적어도 두 개의 서브 블록들을 포함하는 것을 특징으로 하는 스토리지 장치.
  11. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 서브 블록들 각각의 프로그램/소거 사이클 카운트 및 페이지 마이그레이션 타임(migration time) 중 적어도 하나를 더 고려하여, 상기 복수의 서브 블록들 중 상기 희생 서브 블록을 선택하는 것을 특징으로 하는 스토리지 장치.
  12. 각각 제1 블록 사이즈를 갖는 제1 서브 블록들 및 각각 상기 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 제2 서브 블록들을 포함하고, 상기 제1 및 제2 서브 블록들 각각은 복수의 메모리 셀들을 포함하는, 비휘발성 메모리; 및
    상기 제1 서브 블록들에 대한 가비지 콜렉션 동작 및 상기 제2 서브 블록들에 대한 가비지 콜렉션 동작을 독립적으로 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는,
    상기 제1 서브 블록들에 대한 제1 가비지 콜렉션 관리 테이블을 기초로, 상기 제1 서브 블록들 중 유효 페이지 카운트가 가장 적은 제1 희생(victim) 서브 블록의 유효 페이지를 상기 제1 서브 블록들 중 제1 대상 서브 블록에 복사하고,
    상기 제2 서브 블록들에 대한 제2 가비지 콜렉션 관리 테이블을 기초로, 상기 제2 서브 블록들 중 유효 페이지 카운트가 가장 적은 제2 희생 서브 블록의 유효 페이지를 상기 제2 서브 블록들 중 제2 대상 서브 블록에 복사하는 것을 특징으로 하는 스토리지 장치.
  13. 제12항에 있어서,
    상기 제1 가비지 콜렉션 관리 테이블은, 상기 제1 서브 블록들 각각의 유효 페이지 카운트를 저장하고,
    상기 제2 가비지 콜렉션 관리 테이블은, 상기 제2 서브 블록들 각각의 유효 페이지 카운트를 저장하는 것을 특징으로 하는 스토리지 장치.
  14. 제12항에 있어서,
    상기 제1 서브 블록들 각각은, 수직 방향을 따라 적층된 제1 워드 라인들을 포함하는 제1 워드 라인 그룹에 연결되고,
    상기 제2 서브 블록들 각각은, 상기 수직 방향을 따라 적층된 제2 워드 라인들을 포함하는 제2 워드 라인 그룹에 연결되며,
    상기 제1 워드 라인들의 개수와 상기 제2 워드 라인들의 개수는 서로 다른 것을 특징으로 하는 스토리지 장치.
  15. 제12항에 있어서,
    상기 제1 서브 블록들은, 기판의 상부에서 수직 방향으로 각각 연장되는 제1 메모리 스택들에 각각 대응하며,
    상기 제2 서브 블록들은, 상기 제1 메모리 스택들의 상부에서 상기 수직 방향으로 각각 연장되는 제2 메모리 스택들에 각각 대응하는 것을 특징으로 하는 스토리지 장치.
  16. 제12항에 있어서, 상기 스토리지 컨트롤러는,
    상기 제1 희생 서브 블록의 유효 페이지를 상기 제1 대상 서브 블록에 복사한 후, 상기 제1 가비지 콜렉션 관리 테이블을 업데이트하고,
    상기 제2 희생 서브 블록의 유효 페이지를 상기 제2 대상 서브 블록에 복사한 후, 상기 제2 가비지 콜렉션 관리 테이블을 업데이트하는 것을 특징으로 하는 스토리지 장치.
  17. 제12항에 있어서, 상기 스토리지 컨트롤러는,
    제1 모드에서, 상기 비휘발성 메모리에 대해 서브 블록 단위로 소거 동작을 제어하고,
    제2 모드에서, 상기 비휘발성 메모리에 대해 블록 단위로 소거 동작을 제어하며,
    상기 블록은 적어도 두 개의 서브 블록들을 포함하는 것을 특징으로 하는 스토리지 장치.
  18. 제12항에 있어서, 상기 스토리지 컨트롤러는,
    상기 제1 서브 블록들 각각의 프로그램/소거 사이클 카운트 및 페이지 마이그레이션 타임 중 적어도 하나를 더 고려하여 상기 제1 서브 블록들 중 상기 제1 희생 서브 블록을 선택하고,
    상기 제2 서브 블록들 각각의 프로그램/소거 사이클 카운트 및 페이지 마이그레이션 타임 중 적어도 하나를 더 고려하여 상기 제2 서브 블록들 중 상기 제2 희생 서브 블록을 선택하는 것을 특징으로 하는 스토리지 장치.
  19. 제1 서브 블록들 및 제2 서브 블록들을 포함하는 비휘발성 메모리와 통신하는 스토리지 컨트롤러의 동작 방법으로서,
    각각 제1 블록 사이즈를 갖는 상기 제1 서브 블록들 및 각각 상기 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 상기 제2 서브 블록들 중 희생 서브 블록을 선택하는 단계;
    상기 희생 서브 블록의 유효 페이지를 대상 서브 블록에 복사하는 단계; 및
    상기 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함하고,
    상기 희생 서브 블록을 선택하는 단계는,
    상기 제1 서브 블록들 및 상기 제2 서브 블록들 중 유효 페이지 카운트의 무효 페이지 카운트에 대한 비율 값이 가장 작은 서브 블록을 상기 희생 서브 블록으로 선택하는 단계;
    상기 제1 서브 블록들 및 상기 제2 서브 블록들 중 상기 무효 페이지 카운트와 상기 유효 페이지 카운트의 차이 값이 가장 큰 서브 블록을 희생 서브 블록으로 선택하는 단계; 및
    상기 제1 서브 블록들 및 상기 제2 서브 블록들 중 상기 유효 페이지 카운트의 블록 사이즈에 대한 비율 값이 가장 작은 서브 블록을 상기 희생 서브 블록으로 선택하는 단계 중 적어도 하나를 포함하는 방법.
  20. 제1 서브 블록들 및 제2 서브 블록들을 포함하는 비휘발성 메모리와 통신하는 스토리지 컨트롤러의 동작 방법으로서,
    상기 제1 서브 블록들에 대해 제1 가비지 콜렉션 동작을 수행하는 단계; 및
    상기 제2 서브 블록들에 대해 제2 가비지 콜렉션 동작을 수행하는 단계를 포함하고,
    상기 제1 가비지 콜렉션 동작을 수행하는 단계는,
    각각 제1 블록 사이즈를 갖는 상기 제1 서브 블록들 중 유효 페이지 카운트가 가장 작은 서브 블록을 제1 희생 서브 블록으로 선택하는 단계;
    상기 제1 희생 서브 블록의 유효 페이지를 상기 제1 서브 블록들 중 제1 대상 서브 블록에 복사하는 단계; 및
    상기 제1 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함하고,
    상기 제2 가비지 콜렉션 동작을 수행하는 단계는,
    각각 상기 제1 블록 사이즈와 다른 제2 블록 사이즈를 갖는 상기 제2 서브 블록들 중 제2 희생 서브 블록을 선택하는 단계;
    상기 제2 희생 서브 블록의 유효 페이지를 상기 제2 서브 블록들 중 제2 대상 서브 블록에 복사하는 단계; 및
    상기 제2 희생 서브 블록에 대한 소거 동작을 수행하는 단계를 포함하는 방법.
KR1020220110328A 2022-08-31 2022-08-31 스토리지 장치 및 스토리지 컨트롤러의 동작 방법 KR20240030819A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220110328A KR20240030819A (ko) 2022-08-31 2022-08-31 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US18/136,041 US20240069789A1 (en) 2022-08-31 2023-04-18 Storage device and operating method of storage controller
EP23176316.0A EP4332778A1 (en) 2022-08-31 2023-05-31 Storage device and operating method of storage controller
CN202310899108.8A CN117632777A (zh) 2022-08-31 2023-07-20 存储装置和存储控制器的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220110328A KR20240030819A (ko) 2022-08-31 2022-08-31 스토리지 장치 및 스토리지 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
KR20240030819A true KR20240030819A (ko) 2024-03-07

Family

ID=86646484

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220110328A KR20240030819A (ko) 2022-08-31 2022-08-31 스토리지 장치 및 스토리지 컨트롤러의 동작 방법

Country Status (4)

Country Link
US (1) US20240069789A1 (ko)
EP (1) EP4332778A1 (ko)
KR (1) KR20240030819A (ko)
CN (1) CN117632777A (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
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 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
KR102596407B1 (ko) * 2018-03-13 2023-11-01 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102649131B1 (ko) * 2018-08-14 2024-03-19 에스케이하이닉스 주식회사 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
KR20210099870A (ko) * 2020-02-05 2021-08-13 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법

Also Published As

Publication number Publication date
EP4332778A1 (en) 2024-03-06
CN117632777A (zh) 2024-03-01
US20240069789A1 (en) 2024-02-29

Similar Documents

Publication Publication Date Title
US11366599B2 (en) Storage device and operating method thereof
EP4124962A1 (en) Storage devices, storage controllers, and operating methods of storage controllers
US20140289454A1 (en) Storage device and controller
KR20230060569A (ko) 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
US11922037B2 (en) Controller, storage device and operation method of storage device
US12001709B2 (en) Storage devices and operating methods of storage controllers
CN116414307A (zh) 操作存储装置的方法和存储装置
CN116126222A (zh) 包括非易失性存储器装置的存储装置
KR20240030819A (ko) 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US20240168669A1 (en) Non-volatile memory device and storage device
US12001349B2 (en) Storage device including regions of different densities and operation method thereof
KR20240094058A (ko) 비휘발성 메모리 장치 및 스토리지 장치
KR20240082907A (ko) 비휘발성 메모리 장치 및 스토리지 장치
US20230393741A1 (en) Storage device and electronic system
US20230131466A1 (en) Storage device and operation method thereof
US12013778B2 (en) Storage device configured to update hotnesses of received logical addresses and a method of operating the storage device
US12014772B2 (en) Storage controller and storage device including the same
US20230221885A1 (en) Storage system and computing system including the same
US20240028507A1 (en) Storage system and method of operating the storage system
US20230297505A1 (en) Storage device, system including storage device and method operating storage device
EP4174646A1 (en) Storage device supporting multi-tenant operation and methods of operating same
JP2024031843A (ja) メモリコントローラとストレージ装置及びその動作方法
KR20230071005A (ko) 스토리지 장치