KR20170035155A - 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 - Google Patents

메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 Download PDF

Info

Publication number
KR20170035155A
KR20170035155A KR1020150133887A KR20150133887A KR20170035155A KR 20170035155 A KR20170035155 A KR 20170035155A KR 1020150133887 A KR1020150133887 A KR 1020150133887A KR 20150133887 A KR20150133887 A KR 20150133887A KR 20170035155 A KR20170035155 A KR 20170035155A
Authority
KR
South Korea
Prior art keywords
mapping
source blocks
data
valid data
memory
Prior art date
Application number
KR1020150133887A
Other languages
English (en)
Other versions
KR102501751B1 (ko
Inventor
정재성
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150133887A priority Critical patent/KR102501751B1/ko
Priority to US15/236,501 priority patent/US10296453B2/en
Priority to CN202210398473.6A priority patent/CN114924993A/zh
Priority to CN201610842112.0A priority patent/CN107025178B/zh
Publication of KR20170035155A publication Critical patent/KR20170035155A/ko
Priority to US16/393,721 priority patent/US11243878B2/en
Application granted granted Critical
Publication of KR102501751B1 publication Critical patent/KR102501751B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법이 개시된다. 본 발명의 기술적 사상에 따른 메모리 시스템의 동작방법은, 가비지 콜렉션이 수행될 다수 개의 소스 블록들을 선택하는 단계와, 상기 다수 개의 소스 블록들 중 두 개 이상의 소스 블록들에서 선택된 유효 데이터들을 목적 블록에 카피하는 단계와, 상기 카피 결과에 따라 변경된 맵핑 정보를 업데이트 캐쉬에 저장하는 단계 및 상기 업데이트 캐쉬에 저장된 맵핑 정보를 이용하여 맵핑 테이블을 업데이트하는 것을 특징으로 한다.

Description

메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법{Memory Controller, Non-volatile Memory System and Operating Method thereof}
본 발명의 기술적 사상은 불휘발성 메모리 시스템에 관한 것으로서, 상세하게는 가비지 콜렉션 동작을 수행하는 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법에 관한 것이다.
메모리 시스템, 예컨대 플래시 메모리 시스템은 불휘발성 메모리 장치로서 USB(universal serial bus) 드라이브, 디지털 카메라, 이동 전화기, 스마트폰, 태블릿(tablet) PC, 메모리 카드 및 SSD(solid state drive)에서 널리 사용되고 있다. 플래시 메모리 장치에서 기록/독출 단위와 소거 단위는 서로 상이하고, 따라서 펌웨어를 포함할 수 있는 플래시 변환 레이어(FTL)에 의해 메모리 동작이 관리될 수 있다.
한편, 플래시 메모리 시스템에서 데이터는 소거 상태의 블록(예컨대, 프리 블록)에 기록되며, 하나 이상의 프리 블록을 확보하기 위하여 가비지 콜렉션(garbage collection)이 수행될 수 있다. 가비지 콜렉션 수행에 따라 데이터가 이동되므로 데이터의 어드레스 맵핑 정보가 변경될 수 있으며, 맵핑 정보를 업데이트하는 과정에서 메타 데이터의 기록 양이 증가하거나 메모리 시스템의 특정 영역이 빈번하게 업데이트될 수 있다. 이는 가비지 콜렉션에 소요되는 레이턴시를 증가시킬 뿐 아니라 메모리 시스템의 수명을 단축하는 결과를 초래할 수 있다.
본 발명의 기술적 사상이 해결하려는 과제는, 가비지 콜렉션 동작을 효율적으로 수행할 수 있는 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법을 제공하는 데에 있다.
본 발명의 기술적 사상에 따른 메모리 시스템의 동작방법은, 가비지 콜렉션이 수행될 다수 개의 소스 블록들을 선택하는 단계와, 상기 다수 개의 소스 블록들 중 두 개 이상의 소스 블록들에서 선택된 유효 데이터들을 목적 블록에 카피하는 단계와, 상기 카피 결과에 따라 변경된 맵핑 정보를 업데이트 캐쉬에 저장하는 단계 및 상기 업데이트 캐쉬에 저장된 맵핑 정보를 이용하여 맵핑 테이블을 업데이트하는 것을 특징으로 한다.
또한, 본 발명의 기술적 사상에 따른 메모리 콘트롤러 및 메모리 장치를 포함하는 메모리 시스템의 동작방법에 있어서, 상기 메모리 장치는 어드레스의 맵핑 정보를 저장하는 다수 개의 맵핑 테이블들을 포함하고, 상기 메모리 콘트롤러는 상기 맵핑 테이블들의 업데이트에 이용되는 업데이트 캐쉬를 포함하며, 데이터가 랜덤 패턴에 따라 상기 메모리 장치에 기록되었는지를 판단하는 단계와, 상기 판단 결과에 따라, 가비지 콜렉션이 동시에 수행될 두 개 이상의 소스 블록들을 선택하는 단계와, 상기 두 개 이상의 소스 블록들에서, 동일한 맵핑 테이블에 연관된 다수 개의 유효 데이터들을 목적 블록에 카피하는 단계 및 상기 카피된 유효 데이터들의 변경된 맵핑 정보를 상기 업데이트 캐쉬에 저장하는 단계를 구비하는 것을 특징으로 한다.
또한, 본 발명의 기술적 사상에 따른 메모리 콘트롤러의 동작방법은 다수의 맵핑 테이블들을 포함하는 메모리 장치를 제어하고, 가비지 콜렉션이 수행될 다수 개의 소스 블록들을 선택하는 단계와, 상기 다수 개의 소스 블록들에 위치하고 서로 동일한 제1 맵핑 테이블에 연관된 제1 그룹의 유효 데이터들을 목적 블록에 카피하는 단계와, 상기 제1 그룹의 유효 데이터들의 변경된 맵핑 정보를 업데이트 캐쉬에 저장하는 단계 및 상기 업데이트 캐쉬에 저장된 맵핑 정보를 이용하여, 상기 다수의 맵핑 테이블들 중 일부가 업데이트되도록 제어하는 단계를 구비하는 것을 특징으로 한다.
또한, 본 발명의 기술적 사상에 따른 메모리 시스템은, 플래시 변환 레이어와 업데이트 캐쉬를 포함하는 메모리 콘트롤러 및 다수 개의 맵핑 테이블들을 포함하는 메모리 장치를 구비하고, 상기 플래시 변환 레이어는, 상기 메모리 장치의 두 개 이상의 소스 블록들에서 선택된 유효 데이터들을 목적 블록에 카피하고, 이에 따라 변경된 맵핑 정보를 상기 업데이트 캐쉬에 저장하며, 상기 업데이트 캐쉬에 저장된 맵핑 정보에 따라 상기 다수 개의 맵핑 테이블들 중 일부를 업데이트하는 것을 특징으로 한다.
본 발명의 기술적 사상에 따른 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법은, 업데이트 캐쉬에 저장된 정보가 맵핑 테이블에 대한 높은 지역성을 갖도록 함으로써 가비지 콜렉션 수행에 소요되는 레이턴시를 감소할 수 있는 효과가 있다.
또한, 본 발명의 기술적 사상에 따른 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법은, 맵핑 테이블에 대한 업데이트 빈도를 감소시킬 수 있으므로 메모리 시스템의 수명의 저하 정도를 감소할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 메모리 콘트롤러의 일 구현 예를 나타내는 블록도이다.
도 3은 메모리 장치의 일 구현 예를 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 메모리 콘트롤러의 동작을 나타내는 플로우차트이다.
도 5는 도 3의 메모리 셀 어레이의 메모리 구조의 일 예를 나타내는 블록도이다.
도 6a,b는 맵핑 테이블에 저장되는 맵핑 정보의 일 예를 나타내는 블록도이다.
도 7은 본 발명의 실시예에 따라 가비지 콜렉션 동작을 수행하는 일 예를 나타내는 블록도이다.
도 8은 업데이트 캐쉬에 저장된 정보를 이용하여 메모리 장치의 맵핑 테이블을 업데이트하는 예를 나타내는 블록도이다.
도 9는 하나의 가비지 콜렉션 과정에서 맵핑 테이블에 대한 다수 회의 업데이트가 수행되는 예를 나타내는 블록도이다.
도 10 내지 도 12는 본 발명의 실시예들에 따른 메모리 콘트롤러의 동작을 나타내는 플로우차트이다.
도 13은 랜덤 패턴에 따라 데이터가 기록되는 경우, 블록에 포함되는 유효 데이터의 개수의 일 예를 나타내는 그래프이다.
도 14a,b는 소스 블록들 및 목적 블록들을 선택하는 일 예 및 업데이트 캐쉬에 저장된 맵핑 정보의 일 예를 나타내는 블록도이다.
도 15는 본 발명의 실시예에 따라 맵핑 테이블을 업데이트하는 일 예를 나타내는 블록도이다.
도 16은 본 발명의 실시예에 따른 메모리 콘트롤러의 동작을 나타내는 플로우차트이다.
도 17은 선택된 소스 블록들의 개수에 따른 업데이트 동작의 빈도의 일 예를 나타내는 그래프이다.
도 18은 본 발명의 예시적인 실시예에 따른 메모리 콘트롤러의 구성을 나타내는 블록도이다.
도 19는 메모리 장치의 메모리 셀 어레이의 일 구현 예를 나타내는 구조도이다.
도 20은 본 발명의 실시예에 따른 메모리 시스템이 메모리 카드 시스템에 적용된 예를 나타내는 블록도이다.
도 21은 본 발명의 실시예들에 따른 메모리 장치를 SSD 시스템에 적용한 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 벗어나지 않으면서, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다. 메모리 시스템(100)은 메모리 콘트롤러(110) 및 메모리 장치(120)를 포함할 수 있다. 본 발명의 실시예에서, 상기 메모리 장치(120)는 데이터를 불휘발성하게 저장하는 불휘발성 메모리 장치일 수 있다. 예컨대, 상기 메모리 장치(120)는 플래시 메모리 셀들을 포함하는 플래시 메모리 장치일 수 있다. 또는, 상기 메모리 장치(120)는 저항성 메모리 셀들을 포함하는 ReRAM, MRAM 및 PRAM 등의 메모리 장치일 수 있다. 이하에서 본 발명의 실시예들이 설명됨에 있어서, 상기 메모리 장치(120)가 낸드(NAND) 또는 노어(NOR) 플래시 메모리 셀들을 포함하는 플래시 메모리 장치인 것으로 가정된다.
메모리 콘트롤러(110)는 호스트(Host)로부터의 기록/독출 요청에 응답하여 메모리 장치(120)에 저장된 데이터를 독출하거나, 또는 메모리 장치(120)에 데이터를 기록하도록 메모리 장치(120)를 제어할 수 있다. 구체적으로, 메모리 콘트롤러(110)는 메모리 장치(120)에 커맨드(CMD) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(120)에 대한 프로그램(program)(또는 기록), 독출(read) 및 소거(erase) 동작을 제어할 수 있다. 또한, 기록될 데이터(DATA)와 독출된 데이터(DATA)가 메모리 콘트롤러(110)와 메모리 장치(120) 사이에서 송수신될 수 있다.
메모리 콘트롤러(110)는 플래시 변환 레이어(FTL, 111) 및 업데이트 캐쉬(112)를 포함할 수 있다. FTL(111)은 플래시 메모리 장치의 기록, 독출 및 소거 동작 등에 대한 관리를 수행하는 시스템 소프트웨어(또는, 펌웨어)를 포함하고, 메모리 콘트롤러(110) 내의 동작 메모리(미도시)에 로딩될 수 있다. 상기 FTL(111)에 포함되는 펌웨어는 메모리 콘트롤러(110) 내에 구비되는 프로세싱 유닛(미도시)에 의해 구동될 수 있다.
FTL(111)은 호스트로부터의 데이터 억세스 요청에 따라, 논리적 어드레스를 물리적 어드레스로 변환하여 메모리 장치(120)로 제공할 수 있다. 또한, FTL(111)은 메모리 셀 어레이(120)에 구비되는 다양한 셀 영역들(예컨대, 칩 단위, 블록 단위 및 페이지 단위 등)에 대한 관리 동작을 수행하며, 예컨대 메모리 장치(120)에 구비되는 메모리 셀 어레이(121)의 다수의 블록들에 대한 가비지 콜렉션 및 배드 블록 관리 동작을 수행할 수 있다.
메모리 장치(120)에 대한 기록 동작 및 가비지 콜렉션 등의 관리 동작에 따라, 논리적 어드레스에 대응하는 물리적 어드레스의 맵핑 정보가 변경될 수 있다. 상기 변경된 맵핑 정보는 메모리 셀 어레이(121)의 메타 영역(121_1)에 업데이트될 필요가 있으며, 이에 따라 주기적 또는 비주기적으로 변경된 맵핑 정보가 메모리 장치(120)로 제공될 수 있다. 업데이트 캐쉬(112)는 변경된 맵핑 정보를 임시적으로 저장할 수 있다. 업데이트 캐쉬(112)는 데이터를 휘발성하게 저장하는 다양한 형태의 메모리를 포함할 수 있으며, 예컨대 DRAM 또는 SRAM 등의 휘발성 메모리가 업데이트 캐쉬(112)에 적용될 수 있다.
한편, 메모리 장치(120)에 구비되는 메모리 셀 어레이(121)는 메타 데이터가 저장되는 메타 영역(121_1)과, 유저 데이터 등의 노멀한 데이터가 저장되는 스토리지 영역(121_2)을 포함할 수 있다. 메타 영역(121_1)은 스토리지 영역(121_2)에 저장되는 데이터를 관리하기 위한 각종 정보들을 저장할 수 있으며, 일 예로서 논리적 어드레스와 물리적 어드레스의 맵핑 정보(L2P Info)가 메타 영역(121_1)에 불휘발성하게 저장될 수 있다.
상기 맵핑 정보(L2P Info)는 메모리 콘트롤러(110)와 메모리 장치(120) 사이에서 송수신될 수 있다. 예컨대, 메모리 시스템(100) 구동시 메타 영역(121_1)에 저장된 맵핑 정보(L2P Info)가 메모리 콘트롤러(110)로 제공됨에 따라, 메모리 콘트롤러(110)는 어드레스 맵핑 정보(L2P Info)를 참조하여 메모리 장치(120)에 대한 메모리 동작을 관리할 수 있다. 또한, 메모리 콘트롤러(110)는 메모리 동작이나 가비지 콜렉션 등 메모리 관리 동작에 따라 맵핑 정보(L2P Info)를 변경할 수 있으며, 변경된 맵핑 정보(L2P Info)가 메타 영역(121_1)에 저장되도록 관리할 수 있다.
메타 영역(121_1)은 다수 개의 맵핑 테이블들을 포함할 수 있다. 예컨대, 메모리 셀 어레이(121)는 각각 소정의 사이즈를 갖는 다수 개의 영역들을 포함하고, 메타 영역(121_1)은 상기 다수 개의 영역들에 대응하는 다수 개의 맵핑 테이블들을 포함할 수 있다. 만약, 메모리 셀 어레이(121)의 스토리지 영역(121_2)이 16 GB에 해당하는 사이즈를 가지고, 상기 각각의 영역이 16 MB의 사이즈를 가지며, 하나의 맵핑 테이블이 16 MB의 사이즈의 단위에 대한 맵핑 정보를 저장하는 경우, 메타 영역(121_1)은 16 GB에 해당하는 스토리지 영역(121_2)의 어드레스를 관리하기 위하여 대략 1000 개의 맵핑 테이블들을 포함할 수 있다.
메타 영역(121_1)의 맵핑 테이블들이 업데이트되는 경우의 일 예로서, 가비지 콜렉션 동작시에 소스 블록에 저장된 다수의 유효 데이터들이 목적 블록으로 카피되므로, 상기 유효 데이터들에 대한 맵핑 정보가 변경될 수 있다. 변경된 맵핑 정보는 업데이트 캐쉬(112)에 임시적으로 저장된 후 메타 영역(121_1)의 맵핑 테이블들이 업데이트될 수 있다. 예컨대, 업데이트 캐쉬(112)는 상대적으로 그 집적도가 낮으므로 그 사이즈가 작을 수 있다(예컨대, 4 ~ 5 KB 등). 이에 따라, 가비지 콜렉션 수행 과정에서 업데이트 캐쉬(112)에 저장된 변경된 맵핑 정보는 여러 차례 메타 영역(121_1)의 맵핑 테이블들에 업데이트될 수 있다.
그러나, 상기 맵핑 테이블들의 업데이트 빈도가 증가하는 경우에는, 가비지 콜렉션 동작에 소요되는 레이턴시가 증가될 뿐만 아니라, 메타 영역(121_1)에 대한 소거 동작의 횟수가 증가함에 따라 메모리 장치(120)의 수명이 단축되는 문제가 발생될 수 있다. 본 발명의 예시적인 실시예들에 따르면, 가비지 콜렉션 동작시 맵핑 테이블들이 업데이트되는 빈도를 감소함으로써 가비지 콜렉션에 소요되는 레이턴시를 감소시키고 메모리 장치(120)의 수명 단축이 방지되도록 한다.
메타 영역(121_1)의 맵핑 테이블들의 업데이트 빈도를 감소하는 일 예로서, 업데이트 캐쉬(112)에 저장된 정보가 맵핑 테이블들에 대한 높은 지역성(Locality)을 갖도록 관리될 수 있다. 이를 위한 일 구현 예로서, 가비지 콜렉션 수행시 두 개 이상의 소스 블록들이 함께 선택되고, 선택된 소스 블록들에 대해 가비지 콜렉션 동작이 동시에 수행될 수 있다.
예컨대, 업데이트 캐쉬(112)에 저장된 다수 개의 맵핑 정보들과 관련하여, 동일한 맵핑 테이블에 업데이트될 맵핑 정보가 업데이트 캐쉬(112)에 많이 저장될 수록, 업데이트 캐쉬(112)에 저장된 맵핑 정보들은 적은 개수의 맵핑 테이블에 업데이트될 수 있다. 즉, 업데이트 캐쉬(112)의 맵핑 정보들이 맵핑 테이블에 대해 높은 지역성을 갖는 경우에는, 하나의 업데이트 과정에서 상대적으로 적은 개수의 맵핑 테이블에 대해 업데이트 동작이 수행되는 반면에, 낮은 지역성을 갖는 경우에는 상대적으로 많은 개수의 맵핑 테이블에 대해 업데이트 동작이 수행될 수 있다. 즉, 맵핑 테이블에 대한 지역성이 높아지는 경우에는, 업데이트될 맵핑 테이블의 개수가 줄어들기 때문에 상기 업데이트 과정에서 소요되는 레이턴시가 감소될 수 있다.
또한, 하나의 가비지 콜렉션 과정에서는, 상기 업데이트 캐쉬(112)를 이용한 업데이트 동작이 다수 회 수행될 수 있다. 즉, 가비지 콜렉션 수행시 유효 데이터의 카피되는 횟수는 상대적으로 많은 반면에, 업데이트 캐쉬(112)는 상대적으로 그 사이즈가 작으므로, 하나의 가비지 콜렉션 과정에서 맵핑 테이블들은 다수 회 업데이트될 수 있다. 전술한 바와 같이, 맵핑 테이블에 대한 지역성이 높아지는 경우에는, 어느 하나의 맵핑 테이블에 대한 업데이트 동작이 다수의 회수로 분산되는 것이 방지될 수 있으므로, 각각의 맵핑 테이블에 대한 업데이트 빈도가 감소될 수 있다. 또한, 메타 영역(121_1)의 동일한 위치의 메모리 셀들이 빈번하게 소거되는 것을 방지할 수 있으므로, 메모리 장치(120)의 수명이 감소되는 것이 방지될 수 있다.
일 실시예에 따라, 전술한 맵핑 테이블들에 대한 높은 지역성(Locality)을 갖도록 하기 위하여, 다수 개의 소스 블록들에 대한 가비지 콜렉션 동작이 동시에 수행된다. 즉, 하나의 소스 블록 단위로서 가비지 콜렉션 동작이 순차적으로 수행되는 것이 아니라, 다수 개의 소스 블록들의 가비지 콜렉션 동작을 동시에 수행함으로써, 동일한 맵핑 테이블에 연관된 유효 데이터들을 선택하기 위한 풀(Pool)을 증가시킨다.
예컨대, 하나의 소스 블록 단위로 순차적으로 가비지 콜렉션하는 경우, 4 KB의 사이즈를 갖는(또는, 1000 개의 맵핑 정보를 저장할 수 있는) 업데이트 캐쉬(112)에 서로 다른 600 개의 맵핑 테이블들에 대응하는 맵핑 정보가 저장되는 경우가 가정될 수 있다. 반면에, 본 발명의 실시예에 따라 3 개의 소스 블록들을 동시에 가비지 콜렉션하는 경우, 통계적으로 업데이트 캐쉬(112)에는 서로 다른 200 개의 맵핑 테이블들에 대응하는 맵핑 정보가 저장될 수 있다. 이에 따르면, 메타 영역(121_1)에서의 맵핑 테이블들의 업데이트 빈도를 1/3로 감소할 수 있다.
한편, 상기와 같은 두 개 이상의 소스 블록들을 동시에 가비지 콜렉션하는 동작은 소정의 판단 과정을 통해 선택적으로 수행될 수 있다. 예컨대, 메모리 장치(120)에 랜덤 패턴(Random Pattern)이 아닌 순차적 패턴(Sequential Pattern)에 따라 데이터가 기록되는 경우, 메모리 셀 어레이(121) 내에서 데이터는 물리적으로 순차적인 위치에 따라 기록되거나 또는 무효화될 수 있다. 이 경우, 하나의 소스 블록 단위로서 가비지 콜렉션이 수행되더라도, 업데이트 캐쉬(112)에 저장된 정보는 맵핑 테이블들에 대해 높은 지역성을 가질 수 있다. 이에 따라, 본 발명의 예시적인 실시예들에 따르면, 메모리 셀 어레이(121)에 포함되는 블록들에 대해 데이터가 랜덤 패턴으로 기록되었는지를 판단하고, 랜덤 패턴에 해당하는 경우에 다수 개의 소스 블록들에 대해 가비지 콜렉션 동작이 동시에 수행되도록 제어할 수 있다.
상기와 같은 본 발명의 실시예에 따르면, 가비지 콜렉션 동작에서 업데이트되는 메타 데이터의 양을 감소시킬 수 있다. 예컨대, 각각의 맵핑 테이블이 16 KB의 사이즈를 가짐에 따라, 맵핑 테이블에 대한 업데이트는 16 KB 단위로 수행될 수 있다. 본 발명의 실시예에 따르면, 다수 회 수행될 수 있는 업데이트 과정들에서 각각의 맵핑 테이블의 업데이트 빈도를 감소할 수 있으므로, 가비지 콜렉션 과정에서 업데이트되는 메타 데이터의 전체 양을 감소시킬 수 있다.
한편, 메모리 컨트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 컨트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들어, 메모리 컨트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM/SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD), 유니버설 플래시 기억장치(UFS) 등을 구성할 수 있다. 다른 예를 들면, 메모리 컨트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적되어 SSD(Solid State Disk/Drive)를 구성할 수 있다.
이하, 본 발명의 예시적인 실시예들을 설명하기 위해 이용되는 각종 용어들의 의미는 다양하게 정의될 수 있다. 일 예로서, 하나의 가비지 콜렉션 과정은 두 개 이상의 소스 블록들의 유효 데이터를 목적 블록으로 카피하여 하나 이상의 프리 블록을 확보하는 과정을 나타낼 수 있다. 이에 따라, 하나의 가비지 콜렉션 과정은, 소스 블록들을 선택하는 과정, 소스 블록들의 유효 데이터를 목적 블록으로 카피하는 과정, 카피 결과에 따라 변경된 맵핑 정보를 업데이트 캐쉬에 저장하는 과정, 업데이트 캐쉬에 저장된 맵핑 정보를 맵핑 테이블들에 업데이트 하는 과정, 유효 데이터들이 모두 카피된 소스 블록들을 소거하는 과정들을 포함할 수 있다.
또한, 하나의 소스 블록 단위로 가비지 콜렉션을 수행하는 동작은, 하나의 소스 블록의 유효 데이터들을 모두 카피하고 난 후 다른 소스 블록의 유효 데이터들을 카피하는 방식으로 프리 블록을 확보할 수 있다. 반면에, 본 발명의 실시예에 따라 두 개 이상의 소스 블록들을 동시에 가비지 콜렉션하는 동작은, 다수 개의 소스 블록들에 대해 소스 블록의 순서에 관계 없이 유효 데이터들을 카피하는 방식으로 프리 블록을 확보할 수 있다. 이 때, 두 개 이상의 서로 다른 소스 블록들의 유효 데이터들이 함께 목적 블록으로 카피되는 것으로 지칭될 수 있다.
도 2는 메모리 콘트롤러의 일 구현 예를 나타내는 블록도이다. 도 2를 참조하면, 메모리 콘트롤러(200)는 프로세싱 유닛(processing unit, 210), 동작 메모리(working memory, 220), 호스트 인터페이스(230), 메모리 인터페이스(240), 업데이트 캐쉬(250) 및 ROM(260)을 포함할 수 있다. 전술한 FTL은 동작 메모리(220)에 로딩될 수 있다. FTL은 펌웨어를 포함할 수 있으며, 상기 펌웨어에 의해 구현되는 기능에 따라, FTL은 웨어-레벨링 모듈(221), 배드 블록 관리 모듈(222), 가비지 콜렉션 모듈(223) 및 어드레스 맵핑 테이블(224)을 포함할 수 있다.
도 2에 도시되지는 않았으나, 메모리 콘트롤러(200)는 이외에도 다양한 구성들을 더 포함할 수 있으며, 예컨대 기록/독출에 따른 데이터를 임시적으로 저장하는 버퍼 메모리나, 버퍼 메모리를 제어하기 위한 버퍼 제어 모듈, 호스트로부터의 요청에 따른 메모리 동작을 제어하기 위한 커맨드(CMD)를 생성하는 커맨드 생성 모듈(미도시) 등을 더 포함할 수 있다.
프로세싱 유닛(210)은 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 메모리 콘트롤러(200)의 전반적인 동작을 제어할 수 있다. 프로세싱 유닛(210)은 메모리 콘트롤러(200)를 제어하기 위하여 동작 메모리(220)에 로딩된 펌웨어(firmware)를 구동할 수 있다. 메모리 콘트롤러(200)는 외부의 호스트와 다양한 표준 인터페이스들을 통해 통신할 수 있으며, 호스트 인터페이스(230)는 호스트와 메모리 콘트롤러(200) 사이의 인터페이스를 제공한다. 상기 표준 인터페이스는, ATA(advanced technology attachment), SATA(serial ATA), e-SATA(external SATA), SCSI(small computer small interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi media card), eMMC(embedded multi media card), 유니버설 플래시 기억장치(UFS), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식들을 포함할 수 있다.
한편, 메모리 인터페이스(240)는 메모리 장치에 대한 인터페이스를 제공할 수 있으며, 예컨대 기록 데이터 및 독출 데이터가 메모리 인터페이스(240)를 통해 메모리 장치와 송수신될 수 있다. 또한, 메모리 인터페이스(240)는 커맨드(CMD) 및 어드레스(ADD)를 메모리 장치로 제공할 수 있으며, 또한 메모리 장치로부터 각종 정보들을 수신하여 이를 메모리 콘트롤러(200) 내부로 제공할 수 있다.
한편, 동작 메모리(220)는 각종 메모리로 구현될 수 있으며, 예컨대 캐시(cache) 메모리, DRAM, SRAM, PRAM, 플래시 메모리 장치들 중 적어도 하나로 구현될 수 있다. 웨어-레벨링 모듈(221)은 메모리 장치의 메모리 셀들에 대한 마모도(wear-level)를 관리한다. 메모리 셀들은 기록 및 소거 동작 등에 의해 노화(aging)될 수 있으며, 노화된 메모리 셀(또는, 마모된 메모리 셀)은 결함을 야기할 수 있다. 웨어-레벨링 모듈(221)은 메모리 셀 어레이에 대한 프로그램 및 소거 사이클을 관리함으로써 특정 셀 영역이 다른 셀 영역보다 빨리 마모되는 것을 방지한다. 일 예로서, 웨어-레벨링 모듈(221)은 메모리 셀 어레이의 셀 영역들에 대해 균등하게 프로그램 및 소거 횟수가 부여되도록 어드레스 맵핑 테이블(224)을 관리할 수 있다.
한편, 배드 블록 관리 모듈(222)은 메모리 장치에 구비되는 다수의 블록들에 대해 결함이 발생된 블록을 관리한다. 예컨대, 배드 블록 관리 모듈(222)은 배드 블록으로 처리된 블록에 데이터가 기록되는 것이 차단되도록 어드레스 맵핑 테이블(224)을 관리할 수 있다.
한편, 가비지 콜렉션 모듈(223)은 전술한 실시예들에 따른 가비지 콜렉션 동작을 수행할 수 있다. 예컨대, 하나 이상의 프리 블록을 확보하기 위하여, 소스 블록에 저장된 하나 이상의 유효 데이터들을 임의의 블록에 기록하고, 유효 데이터들이 모두 이동된 소스 블록을 소거함으로써 프리 블록이 확보될 수 있다.
한편, 어드레스 맵핑 테이블(224)은 호스트로부터의 논리적 어드레스와, 이에 대응하여 실제 데이터가 억세스될 물리적 위치를 나타내는 물리적 어드레스 사이의 맵핑 정보를 저장할 수 있다. 맵핑 정보를 참조함에 의해, 호스트로부터 제공된 논리적 어드레스는 실제 억세스될 메모리 셀의 물리적 위치를 나타내는 물리적 어드레스로 변환될 수 있다. 어드레스 맵핑 테이블(224)은 메모리 장치의 메타 영역에 불휘발성하게 저장된 맵핑 정보에 상응할 수 있으며, 메모리 시스템 구동시 메모리 장치의 메타 영역에 저장된 맵핑 정보가 어드레스 맵핑 테이블(224)에 로딩될 수 있다.
한편, ROM(read only memory, 260)은 메모리 시스템이 채용된 장치의 초기 부팅에 필요한 코드 데이터(code)를 저장할 수 있다. 또한, 업데이트 캐쉬(250)는 어드레스 맵핑 테이블(224)의 맵핑 정보가 변경된 경우, 변경된 맵핑 정보가 메모리 장치로 제공되도록 변경된 맵핑 정보를 임시적으로 저장할 수 있다. 업데이트 캐쉬(250)는 상대적으로 작은 사이즈를 가지므로, 어드레스 맵핑 테이블(224)의 맵핑 정보 중 일부만을 저장할 수 있다. 도 2에서는 업데이트 캐쉬(250)가 메모리 콘트롤러(200) 내에서 별도로 구비되는 것으로 도시되었으나, 본 발명의 실시예는 이에 국한될 필요가 없다. 예컨대, DRAM 또는 SRAM 등의 휘발성 메모리로 구성될 수 있는 업데이트 캐쉬(250)는 프로세싱 유닛(210) 내에 구비되어도 무방하며, 또는 동작 메모리(220) 내에 구비되어도 무방하다.
도 3은 메모리 장치의 일 구현 예를 나타내는 블록도이다.
도 3을 참조하면, 메모리 장치(300)는 메모리 셀 어레이(310), 제어 로직(320), 전압 생성부(330), 로우 디코더(340) 및 페이지 버퍼(350)를 포함할 수 있다. 도시되지는 않았으나, 메모리 장치(300)는 데이터 입출력 회로 또는 입출력 인터페이스 등을 더 포함할 수 있다.
메모리 셀 어레이(310)는 메타 데이터를 저장하는 메타 영역(311)과 노멀 데이터를 저장하는 스토리지 영역(312)을 포함할 수 있다. 메타 영역(311)과 스토리지 영역(312) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(310)가 플래시 메모리 셀들을 포함하는 경우, 메모리 셀 어레이(310)는 워드 라인들(WL), 스트링 선택 라인(SSL), 접지 선택 라인(GSL) 및 비트 라인들(BL)에 연결될 수 있다. 구체적으로, 메모리 셀 어레이(310)는 워드 라인들(WL), 스트링 선택 라인(SSL) 및 접지 선택 라인(GSL)을 통해 로우 디코더(340)에 연결되고, 비트 라인들(BL)을 통해 페이지 버퍼(350)에 연결될 수 있다.
제어 로직(320)은 메모리 콘트롤러로부터 수신한 커맨드(CMD), 어드레스(ADD) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(310)에 데이터를 기록하거나, 메모리 셀 어레이(310)로부터 데이터를 독출하거나, 메모리 셀 어레이(310)에 저장된 데이터를 소거하기 위한 각종 내부 제어 신호를 출력할 수 있다.
제어 로직(320)에서 출력된 각종 제어 신호는 전압 생성부(330), 로우 디코더(340) 및 페이지 버퍼(350)에 제공될 수 있다. 구체적으로, 제어 로직(320)은 전압 생성부(330)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(340)에 로우 어드레스(X-ADD)를 제공할 수 있으며, 페이지 버퍼(350)에 칼럼 어드레스(Y-ADD)를 제공할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 제어 로직(320)은 전압 생성부(330), 로우 디코더(340) 및 페이지 버퍼(350)에 다른 제어 신호들을 더 제공할 수 있다.
본 발명의 실시예에 따라, 메타 영역(311)은 다수 개의 맵핑 테이블들을 포함할 수 있다. 메모리 장치(300)는 메모리 콘트롤러의 제어에 기반하여 가비지 콜렉션 동작 동안 스토리지 영역(312)의 소스 블록에 포함된 유효 데이터들을 목적 블록에 카피(Copy)할 수 있다. 또한, 메타 영역(311)에 구비되는 다수 개의 맵핑 테이블들은, 메모리 콘트롤러의 제어에 기반하여 가비지 콜렉션 결과에 따라 업데이트될 수 있다. 가비지 콜렉션 과정에서 다수 회에 걸쳐서 메타 영역(311)에 대한 업데이트 동작이 수행될 수 있으며, 본 발명의 실시예에 따라 각각의 업데이트 동작에서 업데이트되는 맵핑 테이블들의 개수가 감소될 수 있다.
도 4는 본 발명의 일 실시예에 따른 메모리 콘트롤러의 동작을 나타내는 플로우차트이다.
도 4에 도시된 바와 같이, 메모리 콘트롤러는 하나 이상의 프리 블록을 확보해야 할 시점을 판단하고, 판단 결과에 따라 가비지 콜렉션 모드로 진입할 수 있다(S11). 일 실시예에서, 가비지 콜렉션 동작 동안 기록/독출 등 메모리 동작은 중단될 수 있으며, 메모리 콘트롤러는 이를 나타내는 정보를 호스트로 제공할 수 있다.
메모리 콘트롤러는 다수 개의 소스 블록(Source Block)들을 선택할 수 있으며(S12), 또한 하나 이상의 목적 블록(Destination Block)을 선택할 수 있다(S13). 하나 이상의 프리 블록을 확보하기 위해서는 목적 블록에 비해 더 많은 개수의 소스 블록들이 선택될 수 있다. 예컨대, 3 개의 소스 블록들과 2 개의 목적 블록들이 선택되고, 상기 3 개의 소스 블록들에 저장된 유효 데이터들이 2 개의 목적 블록들(예컨대, 프리 블록)에 카피된다. 3 개의 소스 블록들의 유효 데이터가 모두 카피되고 난 후 3 개의 소스 블록들은 소거되며, 이에 따라 하나의 프리 블록이 더 확보될 수 있다.
유효 데이터가 목적 블록에 카피되고, 이에 따라 프리 블록이 확보되면(S14), 상기 유효 데이터의 카피에 따라 맵핑 정보가 변경되고, 변경된 맵핑 정보는 업데이트 캐쉬에 임시적으로 저장될 수 있다(S15). 메모리 콘트롤러는 업데이트 캐쉬에 저장된 맵핑 정보를 이용하여 메모리 장치의 맵핑 테이블을 업데이트한다(S16).
상기와 같은 실시예에 따라, 가비지 콜렉션 과정에서 다수 개의 소스 블록들이 선택되고, 선택된 소스 블록들에 대해 동시에 가비지 콜렉션 동작이 수행된다. 이로써, 동일한 맵핑 테이블에 대응하는 유효 데이터를 선택하기 위한 풀(Pool)이 증가되고, 업데이트 캐쉬에 저장된 맵핑 정보는 메모리 장치의 다수의 맵핑 테이블에 대해 높은 지역성을 가질 수 있다. 이에 따라, 1 회의 업데이트 과정에서 실제 업데이트되는 맵핑 테이블의 개수가 감소되기 때문에 메타 데이터의 기록 양을 감소할 수 있으며, 동일한 맵핑 테이블이 다수 회에 걸쳐 빈번하게 업데이트되는 것이 방지될 수 있다.
도 5는 도 3의 메모리 셀 어레이(310)의 메모리 구조의 일 예를 나타내는 블록도이다. 메모리 셀 어레이(310)는 메타 영역(311)과 스토리지 영역(312)을 포함할 수 있다.
메타 영역(311)은 스토리지 영역(312)에 저장되는 데이터들에 대한 맵핑 정보를 저장하는 다수 개의 맵핑 테이블(L2P Table)들을 포함할 수 있다. 또한, 스토리지 영역(312)은 다양한 단위로서 물리적 또는 논리적으로 구분될 수 있다. 예컨대, 스토리지 영역(312)은 하나 이상의 세그먼트(SEGMENT)를 포함할 수 있으며, 각각의 세그먼트는 다수 개의 블록(BLK)들을 포함할 수 있다. 상기 블록들 각각은 메모리 장치의 소거 단위일 수 있다.
또한, 각각의 블록은 다수 개의 페이지들을 포함할 수 있으며, 각각의 페이지에 포함되는 다수의 메모리 셀들은 동일한 워드 라인에 연결될 수 있다. 메모리 장치의 기록/독출 단위는 상기 페이지의 사이즈에 해당할 수 있다. 또는, 메모리 장치의 기록/독출 단위는 하나의 페이지의 일부의 사이즈에 해당할 수 있다. 일 예로서, 각각의 페이지는 16 KB의 사이즈를 가질 수 있으며, 기록/독출 단위는 이보다 작은 4 KB 단위로 수행될 수 있다. 또는, 각각의 페이지는 4 KB의 사이즈를 가질 수 있으며, 기록/독출 단위는 페이지의 사이즈와 동일하게 4 KB 단위로 수행될 수 있다. 또한 기록/독출 단위에 대응하여 4 KB 데이터 단위로 어드레스가 맵핑될 수 있다.
도 6a,b는 맵핑 테이블에 저장되는 맵핑 정보의 일 예를 나타내는 블록도이다.
도 5 및 도 6a,b를 참조하면, 각각의 맵핑 테이블(L2P Table)은 소정의 사이즈를 가질 수 있으며, 각각의 맵핑 테이블은 스토리지 영역(312)의 소정의 사이즈의 영역의 데이터에 대한 맵핑 정보를 저장할 수 있다. 일 예로서, 각각의 맵핑 테이블은 16 KB의 사이즈를 가지고, 또한 각각의 맵핑 테이블은 16 MB의 영역의 데이터에 대한 맵핑 정보를 저장할 수 있다. 상기와 같은 사이즈는 일 예에 불과한 것으로서, 메모리 시스템에서 맵핑 테이블의 사이즈와, 맵핑 테이블에 대응하는 스토리지 영역(312)의 저장 영역의 사이즈는 다양하게 변경이 가능하다.
랜덤 패턴에 따라 데이터가 기록되는 경우, 어느 하나의 맵핑 테이블은 많은 개수의 블록들(BLK)에 위치하는 데이터의 맵핑 정보를 저장할 수 있다. 예컨대, 랜덤 패턴에 따라 4 KB 단위로 데이터가 기록되는 경우, 상기 4 KB 단위의 데이터에 대응하여 4 B의 맵핑 정보가 맵핑 테이블에 저장될 수 있다. 또한, 맵핑 테이블이 16 KB의 사이즈를 갖는 경우, 각각의 맵핑 테이블은 대략 4000 개의 4 KB 단위의 데이터에 관련된 맵핑 정보를 저장할 수 있다. 스토리지 영역(312)에 포함되는 블록들의 개수가 M 개인 것으로 가정할 때, 각각의 맵핑 테이블은 상기 M 개 이하의 값을 갖는 N 개의 블록들의 데이터에 대한 맵핑 정보를 저장할 수 있다. 상기와 같이 랜덤 패턴으로 데이터가 기록되면 상기 N의 값은 증가될 것이다.
도 6a에 도시된 제1 맵핑 테이블(L2P Table 1)을 참조하면, 제1 맵핑 테이블(L2P Table 1)에는 다수 개의 블록들에 위치하는 데이터들의 맵핑 정보가 저장될 수 있다. 순차적 패턴에 따라 데이터가 기록되는 경우에는, 제1 맵핑 테이블(L2P Table 1)은 상대적으로 적은 개수의 블록들에 위치하는 데이터들의 맵핑 정보를 저장할 수 있다. 반면에, 랜덤 패턴에 따라 데이터가 기록되는 경우에는, 제1 맵핑 테이블(L2P Table 1)은 상대적으로 많은 개수의 블록들에 위치하는 데이터들의 맵핑 정보를 저장할 수 있다.
한편, 도 6b를 참조하면, 제1 맵핑 테이블(L2P Table 1)은 논리적 어드레스(ADD_L)와 이에 대응하는 물리적 어드레스(ADD_P)의 테이블 정보를 포함할 수 있다. 물리적 어드레스(ADD_P)는 블록 어드레스(A_BLK)와 페이지 어드레스(A_Page)를 포함할 수 있다. 만약, 기록/독출 단위가 페이지의 사이즈보다 작은 경우에는, 페이지 어드레스(A_Page)는 블록 내에서 페이지를 지시하는 정보 이외에도 페이지 내에서 데이터의 위치를 나타내는 정보(예컨대, 칼럼 어드레스)를 더 포함할 수 있다.
도 6b에 도시된 바와 같이, 랜덤 패턴에 따라 데이터가 기록되는 경우, 제1 맵핑 테이블(L2P Table 1)은 다양한 블록들에 위치하는 데이터들의 맵핑 정보를 저장할 수 있다.
도 7은 본 발명의 실시예에 따라 가비지 콜렉션 동작을 수행하는 일 예를 나타내는 블록도이다.
도 7에 도시된 바와 같이, 다수 개의 소스 블록들이 선택되어 동시에 가비지 콜렉션이 수행될 수 있다. 예컨대 3 개의 소스 블록들(Source BLK 1 ~ Source BLK 3)이 선택될 수 있다. 또한, 상기 소스 블록들보다 적은 개수의 목적 블록들(Des. BLK 1 ~ Des. BLK 2)이 선택될 수 있다.
소스 블록들(Source BLK 1 ~ Source BLK 3) 각각은 유효 데이터(Valid Data)와 무효 데이터(Invalid Data)를 포함할 수 있다. 상기 유효 데이터(Valid Data)에 연관된 맵핑 정보는 유효하게 저장되어 있으며, 유효 데이터(Valid Data)는 외부 호스트에 의해 억세스가 수행될 수 있는 데이터를 나타낼 수 있다. 반면에, 무효 데이터(Invalid Data)에 연관된 맵핑 정보는 유효하게 저장되어 있지 않으며, 무효 데이터(Invalid Data)는 외부 호스트에 의해 억세스되지 않는 데이터를 나타낼 수 있다. 도 7에서는, 유효 데이터(Valid Data)가 각각의 블록의 일정 영역을 구성하는 것으로 도시되었으나, 실제적으로 랜덤 패턴으로 데이터가 기록됨에 따라, 블록 내에서 유효 데이터(Valid Data)의 위치는 랜덤하게 분포될 수 있다.
본 발명의 실시예에 따라, 하나의 소스 블록 단위로서 유효 데이터(Valid Data)가 순차적으로 목적 블록으로 카피되는 것이 아니라, 3 개의 소스 블록들(Source BLK 1 ~ Source BLK 3)에 위치하는 유효 데이터가 함께 목적 블록에 카피될 수 있다. 일 예로서, 3 개의 소스 블록들(Source BLK 1 ~ Source BLK 3) 중에서, 동일한 맵핑 테이블에 연관된(또는, 동일한 맵핑 테이블에 맵핑 정보가 저장된) 유효 데이터(Valid Data)들이 함께 선택되고, 상기 선택된 유효 데이터(Valid Data)들이 다른 맵핑 테이블에 연관된 유효 데이터들에 비해 우선적으로 목적 블록에 카피될 수 있다. 이 경우, 업데이트 캐쉬(미도시)에는 동일한 맵핑 테이블에 대응하는 맵핑 정보(예컨대, 변경된 맵핑 정보)의 비율이 증가하고, 이에 따라 맵핑 테이블들에 대한 지역성이 향상될 수 있다.
도 8은 업데이트 캐쉬에 저장된 정보를 이용하여 메모리 장치의 맵핑 테이블을 업데이트하는 예를 나타내는 블록도이다.
도 8을 참조하면, 업데이트 캐쉬는 소정의 사이즈를 가지며, 예컨대 4 KB의 사이즈를 갖는 예가 도시된다. 또한, 4 KB 사이즈를 갖는 기록 단위의 데이터에 대응하여 4 B의 맵핑 정보가 저장될 수 있다. 업데이트 캐쉬가 4 KB의 사이즈를 갖는 경우, 업데이트 캐쉬는 대략 1000 개의 맵핑 정보(예컨대, 변경된 맵핑 정보(I1, I2, I3,...)를 임시로 저장할 수 있다.
가비지 콜렉션 동작에 따라 유효 데이터들이 다른 블록(예컨대, 목적 블록)에 카피되고, 이에 따라 변경된 맵핑 정보가 업데이트 캐쉬에 저장된다. 또한, 업데이트 캐쉬에 저장된 맵핑 정보에 따라 맵핑 테이블이 업데이트될 수 있으며, 각각의 맵핑 테이블에 대한 업데이트 동작은 16 KB의 단위의 메타 데이터 기록 동작으로서 수행될 수 있다. 도 8의 예에서와 같이, 업데이트 캐쉬는 다수 개의 맵핑 테이블들에 관련된 변경된 맵핑 정보를 저장할 수 있으며, 상기 업데이트 캐쉬에 저장된 정보에 따라 일부의 맵핑 테이블들이 선택적으로 업데이트될 수 있다.
도 9는 하나의 가비지 콜렉션 과정에서 맵핑 테이블에 대한 다수 회의 업데이트 과정들이 수행되는 예를 나타내는 블록도이다.
소스 블록들(Source BLK 1 ~ Source BLK 3) 각각은 다수 개의 유효 데이터들을 포함할 수 있으며, 예컨대 소스 블록들(Source BLK 1 ~ Source BLK 3) 각각이 대략 6000 개의 유효 데이터들을 포함하는 것으로 가정될 수 있다. 또한, 업데이트 캐쉬(Update Cache)는 그 사이즈에 대응하여 대략 1000 개의 유효 데이터들에 대응하는 맵핑 정보를 저장할 수 있다. 하나의 가비지 콜렉션 과정에서 소스 블록들(Source BLK 1 ~ Source BLK 3)에 포함되는 모든 유효 데이터들(예컨대, 대략 18,000 개의 유효 데이터들)이 목적 블록에 카피될 수 있다. 이에 따라 18,000 개의 데이터들의 맵핑 정보가 변경될 수 있다. 이 때, 업데이트 캐쉬(Update Cache)를 이용한 업데이트 동작은 최소 18 회가 수행될 수 있다.
만약, 기존의 방식에 따라 하나의 소스 블록 내의 1,000 개의 유효 데이터가 카피되고, 이에 대응하는 맵핑 정보가 업데이트 캐쉬(Update Cache)에 저장되는 경우, 업데이트 캐쉬(Update Cache)에는 동일한 맵핑 테이블에 대응하는 맵핑 정보의 개수가 감소되며, 이에 따라 업데이트 캐쉬(Update Cache)에는 상대적으로 많은 맵핑 테이블에 대응하는 맵핑 정보가 저장된다. 즉, 하나의 업데이트 과정에서 많은 수의 맵핑 테이블이 업데이트되고, 이에 따라 상기 업데이트 동작에 소요되는 레이턴시가 증가될 수 있다.
또한, 전술한 최소 18 회의 업데이트 동작이 수행되는 과정에서, 상기 기존의 방식에 따르면 동일한 맵핑 테이블이 빈번하게 업데이트될 수 있다. 즉, 동일한 맵핑 테이블에 대한 기록/소거 동작이 빈번하게 발생되므로 메모리 장치의 수명이 저하될 수 있다.
그러나, 전술한 바와 같이, 본 발명의 실시예에 따르면 다수 개의 소스 블록들이 함께 선택되고, 동일한 맵핑 테이블(L2P Table)에 연관된 유효 데이터들이 상기 다수 개의 소스 블록들로부터 함께 선택될 수 있다. 즉, 동일한 맵핑 테이블(L2P Table)에 관련된 유효 데이터들을 선택하기 위한 풀(Pool)이 증가되고, 이에 따라 업데이트 캐쉬(Update Cache)에는 적은 개수의 맵핑 테이블에 대응하는 맵핑 정보가 저장될 수 있다. 또한, 하나의 맵핑 테이블에 대한 업데이트가 다수 회에 걸쳐 분산되어 수행되는 것이 방지되므로, 각각의 맵핑 테이블에 대한 업데이트 빈도가 감소될 수 있다.
도 10 내지 도 12는 본 발명의 실시예들에 따른 메모리 콘트롤러의 동작을 나타내는 플로우차트이다.
도 10을 참조하면, 가비지 콜렉션 동작을 수행함에 있어서 다수 개의 소스 블록들을 선택하는 방식을 적용할 것인지가 판단될 수 있다. 예컨대, 메모리 장치에 대해, 데이터가 랜덤 패턴으로 기록되었는지가 판단될 수 있다(S21). 일 예로서, 메모리 시스템에서 호스트로부터의 데이터 기록 요청을 랜덤 패턴에 따라 기록할 지 여부가 기 설정될 수 있으며, 상기와 같은 판단 동작은 메모리 시스템의 설정 정보를 참조함에 의해 판단될 수 있다. 또는, 랜덤 패턴에 따라 데이터가 기록되는 경우, 각각의 블록에서 유효 데이터가 존재하는 비율이 상대적으로 큰 값을 가질 수 있으며, 상기와 같은 판단 동작은 각각의 블록에서의 유효 데이터의 비율을 분석함에 의해 수행될 수 있다. 이외에도, 전술한 랜덤 패턴 기록 방식이 메모리 시스템에 적용되었는 지 여부는 다양한 방식에 따라 판단될 수 있다.
판단 결과, 랜덤 패턴으로 데이터가 기록된 경우에는, 유효 데이터들을 카피하기 위한 다수 개의 소스 블록들이 선택될 수 있다(S22). 또한, 상기 다수 개의 소스 블록들에 저장된 유효 데이터가 이동될 하나 이상의 목적 블록이 선택될 수 있다(S23). 그리고, 다수 개의 소스 블록들을 동시에 가비지 콜렉션하고(S24), 유효 데이터의 카피 결과에 따라 변경된 맵핑 테이블에 대한 지역성이 향상된 맵핑 정보를 업데이트 캐쉬에 저장한다(S25). 이후, 업데이트 캐쉬에 저장된 맵핑 정보를 이용하여 메모리 장치에 구비되는 맵핑 테이블이 업데이트될 수 있다(S26).
한편, 도 11에서는 랜덤 패턴을 판단하는 구체적인 예와 본 발명의 실시예에 따른 가비지 콜렉션 동작이 선택적으로 수행되는 예가 도시된다. 도 11에 도시된 구성요소들의 동작을 설명함에 있어서, 전술한 도 10에서 설명된 것과 중복된 동작에 대해서는 구체적인 설명이 생략된다.
도 11을 참조하면, 메모리 장치에 구비되는 블록들에 저장된 유효 데이터의 비율을 판단한다(S31). 전술한 바와 같이, 데이터가 랜덤 패턴으로 기록된 경우에는 블록에 저장되는 유효 데이터의 비율이 상대적으로 클 수 있다. 상기 유효 데이터의 비율은 다양하게 판단될 수 있으며, 예컨대 가비지 콜렉션이 수행될 수 있는 소스 블록들의 유효 데이터의 비율이 판단될 수 있으며, 특정 소스 블록의 유효 데이터의 비율이 판단되거나, 두 개 이상의 소스 블록들의 유효 데이터의 비율의 평균 값, 소스 블록들의 유효 데이터의 비율의 최소값 등 다양한 판단 동작이 수행될 수 있다.
판단된 유효 데이터의 비율이 소정의 임계값과 비교될 수 있으며, 예컨대 유효 데이터의 비율이 소정 임계값 이상인지가 판단된다(S32). 유효 데이터의 비율이 임계값보다 작은 경우에는 데이터가 랜덤 패턴이 아닌 순차적 패턴에 따라 기록된 것으로 판단될 수 있다. 이 경우, 다수 개의 소스 블록들을 함께 선택할 필요 없이, 하나의 소스 블록 단위로 유효 데이터를 카피하는 동작이 순차적으로 수행될 수 있다(S33).
반면에, 유효 데이터의 비율이 임계값 이상인 경우에는 데이터가 랜덤 패턴에 따라 기록된 것으로 판단될 수 있다. 이 경우, 다수 개의 소스 블록들이 함께 선택되고(S34), 다수 개의 소스 블록들을 단위로 하여 유효 데이터가 목적 블록에 카피될 수 있다(S35). 일 예로서, 다수 개의 소스 블록들에 저장된 유효 데이터들 중, 동일한 맵핑 테이블에 연관된 유효 데이터들이 함께 선택되어 목적 블록에 카피될 수 있다. 상기 카피 결과에 따라 맵핑 테이블에 대한 지역성이 높은 맵핑 정보가 업데이트 캐쉬에 저장될 수 있으며(S36), 이후, 업데이트 캐쉬에 저장된 정보를 이용하여 메모리 장치의 맵핑 테이블이 업데이트된다(S37).
한편, 변형 가능한 실시예로서 도 12를 참조하면, 가비지 콜렉션이 수행될 소스 블록들의 유효 데이터의 비율의 최소값이 판단될 수 있다(S41). 전술한 유효 데이터의 비율을 임계값과 비교함에 있어서, 상기 유효 데이터의 비율의 최소값이 임계값 이상인 경우인지를 비교함으로써 데이터가 랜덤 패턴에 따라 기록되었는지가 판단될 수 있다(S42).
본 발명의 실시예에 따라 다수 개의 소스 블록들을 함께 선택함에 있어서, 상기 유효 데이터의 비율이 판단된 소스 블록들 중 최소의 유효 데이터 비율을 갖는 다수 개의 소스 블록들이 선택될 수 있다(S43). 그리고, 선택된 소스 블록들을 동시에 가비지 컬렉션 함으로써 하나 이상의 프리 블록이 확보될 수 있다(S44).
도 13은 랜덤 패턴에 따라 데이터가 기록되는 경우, 블록에 포함되는 유효 데이터의 개수의 일 예를 나타내는 그래프이다.
메모리 장치에 포함되는 다수 개의 블록들에 대해 랜덤 패턴에 따라 데이터가 기록되는 경우 도 13에 도시된 바와 같은 각 블록의 유효 데이터의 개수의 분포가 나타날 수 있다. 또한, 도 13에서와 같은 유효 데이터 개수의 카운팅 결과에 따라 각 블록 내에서 유효 데이터의 비율이 산출될 수 있다.
유효 데이터의 개수가 0 인 블록은 프리 블록을 나타낼 수 있으며, 상대적으로 낮은 개수의 유효 데이터를 갖는 블록은 기록이 진행중(Active)인 블록을 나타낼 수 있다. 한편, 블록 내에 데이터가 모두 기록되고 난 후, 이후의 메모리 동작에 따라 상기 블록에서 일부의 데이터가 무효화될 수 있으며, 일부의 데이터가 무효화된 블록은 가비지 콜렉션 동작에서 소스 블록으로 선택될 수 있다. 랜덤 패턴에 따라 데이터가 기록되는 경우, 유효 데이터의 비율이 상대적으로 낮은 블록은 대략 유효 데이터의 개수가 5300개에 해당하고, 이는 해당 블록에서 유효 데이터가 차지하는 비율이 대략 64 %에 해당함을 나타낼 수 있다. 이와 같은 소스 블록들에 대해 가비지 콜렉션을 수행하여 프리 블록을 확보함에 있어서, 3 개의 소스 블록들과 2 개의 목적 블록들을 선택함으로써 하나의 프리 블록을 확보하는 것이 적절할 수 있다. 그러나, 이는 일 예에 불과한 것으로서, 본 발명의 실시예에 따라 소스 블록들과 목적 블록들은 다양한 개수로서 선택이 가능하다.
도 14a,b는 소스 블록들 및 목적 블록들을 선택하는 일 예 및 업데이트 캐쉬에 저장된 맵핑 정보의 일 예를 나타내는 블록도이다.
도 14a를 참조하면, 가비지 컬렉션 동작을 위해 다수 개(예컨대, M 개)의 소스 블록들이 선택되고, 다수 개(예컨대, N 개)의 목적 블록들이 선택되는 예가 도시된다. 소스 블록들(Source BLK 1 ~ Source BLK M)의 개수는 목적 블록들(Des. BLK 1 ~ Des. BLK N)의 개수보다 많다. 소스 블록들(Source BLK 1 ~ Source BLK M) 각각의 유효 데이터(Valid Data)는 목적 블록들(Des. BLK 1 ~ Des. BLK N)에 카피된다.
많은 개수의 소스 블록들(Source BLK 1 ~ Source BLK M)이 선택될수록 업데이트 캐쉬에 저장되는 맵핑 정보는 맵핑 테이블에 대한 높은 지역성을 가질 수 있다. 반면에, 많은 개수의 소스 블록들(Source BLK 1 ~ Source BLK M)이 선택될수록, 다수 개의 소스 블록들에서 서로 연관된 유효 데이터들을 선택하는 등의 관리를 위한 처리 량이 증가될 수 있다. 본 발명의 실시예에 따라, 소스 블록에 포함되는 유효 데이터의 비율, 지역성 향상 및 관리를 위한 처리 량 등을 고려하여 적절한 개수의 소스 블록들(Source BLK 1 ~ Source BLK M)이 선택될 수 있을 것이다.
한편, 도 14b에 도시된 바와 같이, 소스 블록들(Source BLK 1 ~ Source BLK M) 중에서 동일한 맵핑 테이블에 관련된 유효 데이터들은 동일한 그룹의 유효 데이터로서 정의될 수 있다. 예컨대, 제1 맵핑 테이블(L2P Table 1)에 의해 맵핑 정보가 관리되는 유효 데이터들은 소스 블록들(Source BLK 1 ~ Source BLK M)에 분산되어 저장될 수 있으며, 이에 해당하는 유효 데이터들은 제1 그룹의 유효 데이터로 정의될 수 있다. 소스 블록들(Source BLK 1 ~ Source BLK M)에는 다수 개의 그룹들의 유효 데이터들이 저장될 수 있다.
본 발명의 실시예에 따라, 유효 데이터의 카피 동작은 그룹 단위로 수행될 수 있으며, 또한 업데이트 캐쉬(Update Cache)에는 그룹 단위로 수행된 카피 동작에 기반하여 맵핑 정보가 저장된다. 이에 따라, 업데이트 캐쉬(Update Cache)에는 동일한 그룹에 속하는 많은 개수의 유효 데이터들의 맵핑 정보가 저장될 수 있으며, 이로써 업데이트 캐쉬(Update Cache)에 저장된 맵핑 정보는 높은 지역성을 가질 수 있다.
도 15는 본 발명의 실시예에 따라 맵핑 테이블을 업데이트하는 일 예를 나타내는 블록도이다. 도 15에서는 세 개의 소스 블록들(Source BLK 1 ~ Source BLK 3)이 함께 선택되는 예가 도시된다.
소스 블록들(Source BLK 1 ~ Source BLK 3) 각각은 다수 개의 맵핑 테이블들에 연관된 다수 개의 유효 데이터들을 포함한다. 일 예로서, 제1 소스 블록(Source BLK 1)은 다양한 맵핑 테이블들에 연관된 유효 데이터들(Data_T1, Data_T2, Data_T3, Data_T12, Data_T21,...)을 저장할 수 있다.
동일한 그룹에 속하는 유효 데이터들이 소스 블록들(Source BLK 1 ~ Source BLK 3)에서 선택되어 목적 블록에 카피되고, 카피 결과에 따라 변경된 맵핑 정보가 업데이트 캐쉬(Update Cache)에 저장된다. 예컨대, 소스 블록들(Source BLK 1 ~ Source BLK 3)로부터 제1 그룹의 유효 데이터들(Data_T1)이 선택되고, 상기 제1 그룹의 유효 데이터들(Data_T1)에 관련하여 변경된 맵핑 정보가 업데이트 캐쉬(Update Cache)의 일부 영역에 저장될 수 있다. 이와 유사하게, 제12 그룹 및 제21 그룹의 유효 데이터들(Data_T12, Data_T21)이 선택되고, 이에 관련하여 변경된 맵핑 정보가 업데이트 캐쉬(Update Cache)의 다른 일부 영역에 저장될 수 있다.
상기와 같이 업데이트 캐쉬(Update Cache)에는 동일한 맵핑 테이블에 대응하는 맵핑 정보의 양이 증가되고, 이에 따라 각각의 업데이트 과정에서 업데이트되는 맵핑 테이블의 개수가 최소화될 수 있다. 예컨대, 업데이트 캐쉬(Update Cache)에 저장된 맵핑 정보가 제1, 12, 21 맵핑 테이블(L2P Table 1, 12, 21)에 관련된 정보만을 포함하는 경우, 업데이트 과정에서 다수 개의 맵핑 테이블들 중 제1, 12, 21 맵핑 테이블(L2P Table 1, 12, 21)만이 업데이트될 수 있다.
도 16은 본 발명의 실시예에 따른 메모리 콘트롤러의 동작을 나타내는 플로우차트이다. 도 16에서는, 다수 개의 소스 블록들에서 업데이트 캐쉬에 함께 맵핑 정보가 저장될 유효 데이터들을 선택하는 일 예가 도시된다.
도 16을 참조하면, 가비지 콜렉션을 위해 다수 개의 소스 블록들이 선택되고, 또한 상기 선택 동작은 전술한 실시예에 따라 소스 블록에서의 유효 데이터의 비율을 판단함에 의해 수행될 수 있다. 메모리 시스템 내부에는 메타 데이터로서 맵핑 정보가 저장될 수 있으며, 이에 따라 상기 다수 개의 소스 블록들의 유효 데이터들의 맵핑 정보가 판단될 수 있다(S51).
상기 판단 결과에 따라, 상기 다수 개의 소스 블록들 각각에 저장된 유효 데이터에 연관된 맵핑 테이블의 위치가 판단될 수 있다. 상기 판단 결과에 따라, 다수 개의 소스 블록들에서 업데이트 캐쉬에 함께 맵핑 정보가 저장될 유효 데이터들이 선택될 수 있다. 예컨대, 동일한 맵핑 테이블에 연관된 유효 데이터들(또는, 동일한 맵핑 테이블에 맵핑 정보가 저장된 유효 데이터들)이 선택될 수 있다(S52).
선택된 유효 데이터들은 하나 이상의 목적 블록에 카피되고(S53), 선택된 유효 데이터들에 대한 맵핑 정보가 업데이트 캐쉬에 함께 저장된다(S54). 상기와 같은 동작이 반복됨에 따라, 업데이트 캐쉬에는 상대적으로 적은 개수의 맵핑 테이블에 대응하는 맵핑 정보가 저장된다. 다른 관점에서, 업데이트 캐쉬에는 어느 하나의 맵핑 테이블에 대응하는 많은 개수의 맵핑 정보가 함께 저장된다.
이후, 업데이트 타이밍이 도달하였는지 판단되고(S55), 업데이트 타이밍이 도달하지 않은 경우에는 전술한 바와 같이 유효 데이터들을 선택하는 과정과, 변경된 맵핑 정보를 업데이트 캐쉬에 저장하는 과정이 반복될 수 있다. 이후, 업데이트 타이밍이 도달한 경우에는 업데이트 캐쉬에 저장된 맵핑 정보가 하나 이상의 맵핑 테이블에 업데이트된다.
도 17은 선택된 소스 블록들의 개수에 따른 업데이트 동작의 빈도의 일 예를 나타내는 그래프이다.
도 17에 도시된 바와 같이, 가비지 콜렉션을 위해 선택되는 소스 블록들의 개수가 증가될수록 맵핑 테이블에 대한 업데이트 회수는 감소될 수 있다. 일 예로서, 1 개의 소스 블록이 선택된 경우에는 업데이트 캐쉬에 저장된 맵핑 정보의 개수의 대략 74%에 해당하는 개수의 맵핑 테이블이 업데이트될 수 있으나, 본 발명의 실시예에 따라 4 개의 소스 블록들이 선택된 경우에는 업데이트 캐쉬에 저장된 맵핑 정보의 개수의 대략 38%에 해당하는 개수의 맵핑 테이블만이 업데이트될 수 있다. 이는, 업데이트 회수가 대략 51%로 감소된 것을 의미할 수 있다.
도 18은 본 발명의 예시적인 실시예에 따른 메모리 콘트롤러의 구성을 나타내는 블록도이다.
도 18에 도시된 바와 같이, 메모리 콘트롤러(400)는 소스 블록 특성 판단부(410), 소스 블록 선택부(420), 가비지 콜렉션 수행부(430) 및 업데이트 캐쉬(440)를 포함할 수 있다. 업데이트 캐쉬(440)는 SRAM 또는 DRAM 등 휘발성 메모리를 포함할 수 있다. 또한, 소스 블록 특성 판단부(410), 소스 블록 선택부(420) 및 가비지 콜렉션 수행부(430) 등은 하드웨어적 또는 소프트웨어적으로 구현되어도 무방하다. 일 예로서, 소스 블록 특성 판단부(410), 소스 블록 선택부(420) 및 가비지 콜렉션 수행부(430)의 기능은 전술한 FTL의 펌웨어를 통해 소프트웨어적으로 구현될 수도 있다.
소스 블록 특성 판단부(410)는 맵핑 정보(L2P Info)를 참조함으로써, 각각의 소스 블록에 포함되는 유효 데이터의 특성을 판단할 수 있다. 예컨대, 소스 블록에 포함되는 유효 데이터들 각각에 대한 맵핑 정보가 저장된 맵핑 테이블의 위치가 판단될 수 있다. 또한, 동일한 그룹에 속하는(또는, 동일한 맵핑 테이블에 의해 맵핑 정보가 관리되는) 유효 데이터들이 일부의 소스 블록들에 집중되게 저장되는 경우가 존재할 수 있으며, 소스 블록 특성 판단부(410)는 다수 개의 소스 블록들의 유효 데이터들에 대한 맵핑 정보(L2P Info)를 참조함으로써, 이와 같은 소스 블록들 사이의 관련성을 판단할 수 있다.
소스 블록 선택부(420)는 상기와 같은 판단 결과를 참조하여 동시에 가비지 콜렉션이 수행될 소스 블록들을 선택할 수 있다. 상기와 같은 판단 결과에 따라 지역성을 향상할 수 있는 소스 블록들이 선택될 수 있다. 예컨대, 어느 하나의 소스 블록에 특정 맵핑 테이블에 연관된 유효 데이터의 저장 비율이 높고, 다른 하나의 소스 블록에도 이와 동일한 맵핑 테이블에 연관된 유효 데이터의 저장 비율이 높은 경우에는, 상기 소스 블록들이 동시에 가비지 콜렉션될 소스 블록들로서 선택될 수 있다. 즉, 본 실시예에 따르면 소스 블록들은 유효 데이터들의 저장 특성을 고려하여 선택될 수 있다.
상기와 같은 선택 결과(Info_sel)에 따라, 가비지 콜렉션 수행부(430)는 선택된 소스 블록들에 대해 전술한 실시예에서와 같은 유효 데이터의 카피 동작, 업데이트 캐쉬에 대한 맵핑 정보 저장, 그리고 업데이트 캐쉬를 이용한 맵핑 테이블의 업데이트 동작이 수행되도록 가비지 콜렉션 제어 신호(Ctrl_GC)를 생성할 수 있다.
도 19는 메모리 장치의 메모리 셀 어레이의 일 구현 예를 나타내는 구조도이다.
메모리 셀 어레이는 복수의 블록들을 포함하고, 각각의 블록은 3차원 구조(또는 수직 구조)를 가질 수 있다. 구체적으로, 각각의 블록은 제1 내지 제3 방향들을 따라 신장된 구조물들을 포함한다. 플래시 메모리 장치를 예로 들면, 각각의 셀 블록은 제3 방향을 따라 신장된 복수의 낸드 스트링들을 포함할 수 있다. 이 때, 복수의 낸드 스트링들은 제1 및 제2 방향들을 따라 특정 거리만큼 이격되어 제공될 수 있다. 도 19는 하나의 블록(BLK1)에 해당하는 구조도를 나타낼 수 있다. 또한, 상기 블록(BLK1)은 메타 영역에 포함되는 블록일 수도 있으며, 또는 스토리지 영역에 포함되는 블록일 수도 있다.
도 19를 참조하면, 셀 블록(BLK1)은 기판(SUB)에 대해 수직 방향으로 형성되어 있다. 도 19에서는, 셀 블록(BLK1)이 2 개의 선택 라인들(GSL, SSL)과, 8 개의 워드 라인들(WL1 ~ WL8), 및 3 개의 비트 라인들(BL1 ~ BL3)을 포함하는 것으로 도시되어 있으나, 상기 라인들의 개수는 다양하게 변동될 수 있다.
기판(SUB)은 제1 도전형(예를 들어, p 타입)을 가지며, 기판(SUB) 상에 제1 방향(예를 들어, Y 방향)을 따라 신장되고, 제2 도전형(예를 들어, n 타입)의 불순물들이 도핑된 공통 소스 라인(CSL)이 제공된다. 인접한 두 공통 소스 라인(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향을 따라 신장되는 복수의 절연막들(IL)이 제3 방향(예를 들어, Z 방향)을 따라 순차적으로 제공되며, 복수의 절연막들(IL)은 제3 방향을 따라 특정 거리만큼 이격된다. 예를 들어, 복수의 절연막들(IL)은 실리콘 산화물과 같은 절연 물질을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향을 따라 순차적으로 배치되며, 제3 방향을 따라 복수의 절연막들(IL)을 관통하는 복수의 필라들(pillars, P)이 제공된다. 예를 들어, 복수의 필라들(P)은 복수의 절연막들(IL)을 관통하여 기판(SUB)과 컨택할 것이다. 구체적으로, 각 필라(P)의 표면층(surface layer)(S)은 제1 타입을 갖는 실리콘 물질을 포함할 수 있고, 채널 영역으로 기능할 수 있다. 한편, 각 필라(P)의 내부층(I)은 실리콘 산화물과 같은 절연 물질 또는 에어 갭(air gap)을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 절연막들(IL), 필라들(P) 및 기판(SUB)의 노출된 표면을 따라 전하 저장층(charge storage layer, CS)이 제공된다. 전하 저장층(CS)은 게이트 절연층(또는 '터널링 절연층'이라고 지칭함), 전하 트랩층 및 블로킹 절연층을 포함할 수 있다. 예를 들어, 전하 저장층(CS)은 ONO(oxide-nitride-oxide) 구조를 가질 수 있다. 또한, 인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 전하 저장층(CS)의 노출된 표면 상에, 선택 라인들(GSL, SSL) 및 워드 라인들(WL1 ~ WL8)과 같은 게이트 전극(GE)이 제공된다.
복수의 필라들(P) 상에는 드레인들 또는 드레인 컨택들(DR)이 각각 제공된다. 예를 들어, 드레인들 또는 드레인 컨택들(DR)은 제2 도전형을 갖는 불순물들이 도핑된 실리콘 물질을 포함할 수 있다. 드레인들(DR) 상에, 제2 방향(예를 들어, X 방향)으로 신장되고 제1 방향을 따라 특정 거리만큼 이격되어 배치된 비트 라인들(BL1 ~ BL3)이 제공된다.
한편, 미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
도 20은 본 발명의 실시예에 따른 메모리 시스템이 메모리 카드 시스템(500)에 적용된 예를 나타내는 블록도이다. 일 예로서, 메모리 시스템은 플래시 메모리 시스템인 것으로 가정한다.
도 20을 참조하면, 메모리 카드 시스템(500)은 호스트(510) 및 메모리 카드(520)를 포함할 수 있다. 호스트(510)는 호스트 컨트롤러(511) 및 호스트 접속부(512)를 포함할 수 있다. 메모리 카드(520)는 카드 접속부(521), 카드 컨트롤러(522) 및 메모리 시스템(523)을 포함할 수 있다. 이 때, 메모리 시스템(523)은 도 1 내지 도 19에 도시된 실시예들을 이용하여 구현될 수 있다. 이에 따라 메모리 시스템(523)은 전술한 실시예에 따른 가비지 콜렉션을 수행할 수 있으며, 다수 개의 소스 블록들을 선택하여 가비지 콜렉션을 동시에 수행함에 따라 맵핑 테이블이 업데이트되는 빈도를 감소할 수 있다.
호스트(510)는 메모리 카드(520)에 데이터를 기록하거나, 메모리 카드(520)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(511)는 커맨드(CMD), 호스트(510) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK) 및 데이터(DATA)를 호스트 접속부(512)를 통해 메모리 카드(520)로 전송할 수 있다.
카드 컨트롤러(522)는 카드 접속부(521)를 통해 수신된 요청에 응답하여, 카드 컨트롤러(522) 내에 있는 클럭 발생기(미도시)에서 발생한 클럭 신호에 동기하여 데이터를 메모리 시스템(523)에 제공할 수 있다. 메모리 시스템(523)은 호스트(510)로부터 전송된 데이터를 저장할 수 있다.
메모리 카드(520)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 유니버설 플래시 기억장치(UFS), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 21은 본 발명의 실시예들에 따른 메모리 장치를 SSD 시스템(600)에 적용한 예를 나타내는 블록도이다.
도 21을 참조하면, SSD 시스템(600)은 호스트(610) 및 SSD(620)를 포함할 수 있다. SSD(620)는 신호 커넥터(signal connector)를 통해 호스트(610)와 신호를 주고 받으며, 전원 커넥터(power connector)를 통해 전원을 입력 받는다. SSD(620)는 SSD 컨트롤러(621), 보조 전원 장치(622) 및 복수의 불휘발성 메모리 시스템들(623, 624, 625)을 포함할 수 있다. 복수의 불휘발성 메모리 시스템들(623, 624, 625) 각각은 본 발명의 실시예들에 따른 메모리 장치를 포함할 수 있다. 본 발명의 실시예에 따라, 이에 따라 불휘발성 메모리 시스템들(623, 624, 625) 각각은 전술한 실시예에 따른 가비지 콜렉션을 수행할 수 있으며, 다수 개의 소스 블록들을 선택하여 가비지 콜렉션을 동시에 수행함에 따라 맵핑 테이블이 업데이트되는 빈도를 감소할 수 있다.
상기한 실시예의 설명은 본 발명의 더욱 철저한 이해를 위하여 도면을 참조로 예를 든 것에 불과하므로, 본 발명을 한정하는 의미로 해석되어서는 안될 것이다. 또한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기본적 원리를 벗어나지 않는 범위 내에서 다양한 변화와 변경이 가능함은 명백하다 할 것이다.

Claims (20)

  1. 가비지 콜렉션이 수행될 다수 개의 소스 블록들을 선택하는 단계;
    상기 다수 개의 소스 블록들 중 두 개 이상의 소스 블록들에서 선택된 유효 데이터들을 목적 블록에 카피하는 단계;
    상기 카피 결과에 따라 변경된 맵핑 정보를 업데이트 캐쉬에 저장하는 단계; 및
    상기 업데이트 캐쉬에 저장된 맵핑 정보를 이용하여 맵핑 테이블을 업데이트하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  2. 제1항에 있어서,
    상기 메모리 시스템에 데이터들이 랜덤 패턴에 따라 기록되었는지 여부를 판단하는 단계를 더 구비하고,
    상기 판단 결과에 따라, 상기 선택되는 소스 블록들의 개수가 조절되는 것을 특징으로 하는 메모리 시스템의 동작방법.
  3. 제2항에 있어서,
    데이터들이 랜덤 패턴에 따라 기록되지 않은 경우에는, 유효 데이터의 카피 동작이 하나의 소스 블록 단위로 순차적으로 수행되며,
    데이터들이 랜덤 패턴에 따라 기록된 경우에는, 두 개 이상의 소스 블록들에서 선택된 유효 데이터들이 함께 상기 목적 블록에 카피되는 것을 특징으로 하는 메모리 시스템의 동작방법.
  4. 제2항에 있어서,
    상기 판단하는 단계는, 상기 메모리 시스템에 구비되는 소스 블록들의 유효 데이터의 비율이 임계값 이상인지를 판단하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  5. 제4항에 있어서,
    상기 다수 개의 소스 블록들을 선택하는 단계는, 전체 소스 블록들 중 유효 데이터의 비율이 낮은 순서에 따라 적어도 두 개의 소스 블록들을 선택하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  6. 제1항에 있어서,
    상기 다수 개의 소스 블록들의 모든 유효 데이터들이 상기 목적 블록에 카피된 후, 상기 다수 개의 소스 블록들을 소거하는 단계를 더 구비하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  7. 제1항에 있어서,
    상기 메모리 시스템은, 맵핑 정보를 불휘발성하게 저장하는 다수 개의 맵핑 테이블들을 포함하고,
    상기 맵핑 테이블을 업데이트하는 단계는, 상기 다수 개의 맵핑 테이블들 중 상기 업데이트 캐쉬에 저장된 맵핑 정보에 대응하는 일부의 맵핑 테이블을 선택적으로 업데이트하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  8. 제7항에 있어서,
    상기 업데이트 캐쉬에는, 서로 다른 소스 블록들에 위치하고 동일한 맵핑 테이블에 연관된 다수 개의 유효 데이터들에 대한 맵핑 정보가 함께 저장되는 것을 특징으로 하는 메모리 시스템의 동작방법.
  9. 제1항에 있어서,
    상기 업데이트 캐쉬는 M 값의 사이즈를 가지고, 상기 다수 개의 소스 블록들은 N*M 값의 사이즈의 전체 유효 데이터들을 포함하며(단, M, N은 각각 1 이상의 정수),
    하나의 가비지 콜렉션 과정 동안 상기 업데이트 캐쉬를 이용한 업데이트 동작은 N 회 수행되고, 어느 하나의 맵핑 테이블은 상기 하나의 가비지 콜렉션 과정 동안 한번만 업데이트되는 것을 특징으로 하는 메모리 시스템의 동작방법.
  10. 메모리 콘트롤러 및 메모리 장치를 포함하는 메모리 시스템의 동작방법에 있어서,
    상기 메모리 장치는 어드레스의 맵핑 정보를 저장하는 다수 개의 맵핑 테이블들을 포함하고, 상기 메모리 콘트롤러는 상기 맵핑 테이블들의 업데이트에 이용되는 업데이트 캐쉬를 포함하며,
    데이터가 랜덤 패턴에 따라 상기 메모리 장치에 기록되었는지를 판단하는 단계;
    상기 판단 결과에 따라, 가비지 콜렉션이 동시에 수행될 두 개 이상의 소스 블록들을 선택하는 단계;
    상기 두 개 이상의 소스 블록들에서, 동일한 맵핑 테이블에 연관된 다수 개의 유효 데이터들을 목적 블록에 카피하는 단계; 및
    상기 카피된 유효 데이터들의 변경된 맵핑 정보를 상기 업데이트 캐쉬에 저장하는 단계를 구비하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  11. 제10항에 있어서,
    상기 메모리 장치에 데이터가 순차적 패턴에 따라 저장된 것으로 판단된 경우, 하나의 소스 블록 단위로 가비지 콜렉션이 수행되는 것을 특징으로 하는 메모리 시스템의 동작방법.
  12. 제10항에 있어서,
    상기 메모리 장치에 데이터가 랜덤 패턴에 따라 저장된 것으로 판단된 경우, 3 개의 소스 블록들이 선택되고, 상기 3 개의 소스 블록들의 유효 데이터들이 2 개의 목적 블록들에 카피되는 것을 특징으로 하는 메모리 시스템의 동작방법.
  13. 제10항에 있어서,
    상기 유효 데이터들을 상기 목적 블록에 카피하고 상기 변경된 맵핑 정보를 상기 업데이트 캐쉬에 저장하는 단계가 반복하여 수행되고,
    상기 업데이트 캐시에 저장된 하나 이상의 맵핑 테이블에 연관된 유효 데이터들의 맵핑 정보를 상기 맵핑 테이블들에 업데이트하는 단계를 더 구비하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  14. 제10항에 있어서,
    상기 선택된 소스 블록들에서 어느 하나의 맵핑 테이블에 연관된 제1 그룹의 유효 데이터들이 선택되고, 상기 제1 그룹의 유효 데이터들의 맵핑 정보가 상기 업데이트 캐쉬에 함께 저장되는 것을 특징으로 하는 메모리 시스템의 동작방법.
  15. 제14항에 있어서,
    상기 업데이트 캐쉬에는 다수 개의 그룹들의 유효 데이터들의 맵핑 정보가 함께 저장되는 것을 특징으로 하는 메모리 시스템의 동작방법.
  16. 제15항에 있어서,
    상기 업데이트하는 단계는, 상기 업데이트 캐쉬에 맵핑 정보가 저장된 다수 개의 그룹에 대응하는 맵핑 테이블만을 선택적으로 업데이트하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  17. 제10항에 있어서,
    상기 메모리 장치에 포함되는 다수 개의 블록들에 저장된 유효 데이터의 맵핑 정보 특성을 판단하는 단계를 더 구비하고,
    상기 두 개 이상의 소스 블록들을 선택하는 단계는, 서로 동일한 맵핑 테이블에 연관된 유효 데이터의 저장 비율이 높은 소스 블록들을 선택하는 것을 특징으로 하는 메모리 시스템의 동작방법.
  18. 플래시 변환 레이어와 업데이트 캐쉬를 포함하는 메모리 콘트롤러; 및
    다수 개의 맵핑 테이블들을 포함하는 메모리 장치를 구비하고,
    상기 플래시 변환 레이어는, 상기 메모리 장치의 두 개 이상의 소스 블록들에서 선택된 유효 데이터들을 목적 블록에 카피하고, 이에 따라 변경된 맵핑 정보를 상기 업데이트 캐쉬에 저장하며, 상기 업데이트 캐쉬에 저장된 맵핑 정보에 따라 상기 다수 개의 맵핑 테이블들 중 일부를 업데이트하는 것을 특징으로 하는 메모리 시스템.
  19. 제18항에 있어서,
    상기 플래시 변환 레이어는, 3 개의 소스 블록들에 위치하고 동일한 맵핑 테이블에 연관된 다수 개의 유효 데이터들의 카피에 따른 변경된 맵핑 정보를 상기 업데이트 캐쉬에 함께 저장하는 것을 특징으로 하는 메모리 시스템.
  20. 제18항에 있어서,
    상기 메모리 장치는 3 차원 메모리 어레이를 포함하고, 상기 3 차원 메모리 어레이는 기판에 수직한 다수 개의 셀 스트링들을 포함하며, 상기 셀 스트링들에 포함되는 메모리 셀은 전하 트랩층을 포함하는 것을 특징으로 하는 메모리 시스템.
KR1020150133887A 2015-09-22 2015-09-22 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 KR102501751B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020150133887A KR102501751B1 (ko) 2015-09-22 2015-09-22 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
US15/236,501 US10296453B2 (en) 2015-09-22 2016-08-15 Memory controller, non-volatile memory system, and method of operating the same
CN202210398473.6A CN114924993A (zh) 2015-09-22 2016-09-22 存储器系统及其操作方法
CN201610842112.0A CN107025178B (zh) 2015-09-22 2016-09-22 存储器控制器、非易失性存储器系统及其操作方法
US16/393,721 US11243878B2 (en) 2015-09-22 2019-04-24 Simultaneous garbage collection of multiple source blocks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150133887A KR102501751B1 (ko) 2015-09-22 2015-09-22 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법

Publications (2)

Publication Number Publication Date
KR20170035155A true KR20170035155A (ko) 2017-03-30
KR102501751B1 KR102501751B1 (ko) 2023-02-20

Family

ID=58282359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150133887A KR102501751B1 (ko) 2015-09-22 2015-09-22 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법

Country Status (3)

Country Link
US (2) US10296453B2 (ko)
KR (1) KR102501751B1 (ko)
CN (2) CN114924993A (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109828749A (zh) * 2018-12-29 2019-05-31 北京航天云路有限公司 兼顾快速响应和数据更新的数据缓存方法及系统
US10606758B2 (en) 2017-10-23 2020-03-31 SK Hynix Inc. Memory system and method of operating the same
US10977170B2 (en) 2018-03-27 2021-04-13 SK Hynix Inc. Memory controller for performing unmap operation and memory system having the same
US11163696B2 (en) 2019-03-27 2021-11-02 SK Hynix Inc. Controller, memory system and operating method thereof for controlling a non-volatile memory device during a sync-up operation
US11169721B2 (en) 2018-12-06 2021-11-09 SK Hynix Inc. Memory system for flexible map block management and operating method thereof
US11216384B2 (en) 2019-03-28 2022-01-04 SK Hynix Inc. Controller, memory system and operating method of the controller
US11269769B2 (en) 2019-07-24 2022-03-08 SK Hynix Inc. Memory system and method of operating the same
US11360889B2 (en) 2018-12-21 2022-06-14 SK Hynix Inc. Memory system and operating method thereof performing garbage collection and write operations in parallel on different dies
US11513946B2 (en) 2019-02-15 2022-11-29 SK Hynix Inc. Memory controller generating mapping data and method of operating the same
US11775426B2 (en) 2021-01-27 2023-10-03 SK Hynix Inc. Apparatus and method for securing a free memory block in a memory system

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102509540B1 (ko) * 2015-06-30 2023-03-14 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
KR20170044780A (ko) * 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US20170199687A1 (en) * 2016-01-12 2017-07-13 Kabushiki Kaisha Toshiba Memory system and control method
KR20170131796A (ko) * 2016-05-20 2017-11-30 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
US9977627B1 (en) * 2016-11-09 2018-05-22 Macronix International Co., Ltd. Memory device and memory controlling method
US10318415B2 (en) * 2017-05-31 2019-06-11 International Business Machines Corporation Garbage collection facility grouping infrequently accessed data units in designated transient memory area
TWI642059B (zh) * 2017-06-02 2018-11-21 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
CN109032957B (zh) * 2017-06-09 2022-11-22 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
KR20180135188A (ko) * 2017-06-12 2018-12-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10628326B2 (en) * 2017-08-21 2020-04-21 Micron Technology, Inc. Logical to physical mapping
US10409500B2 (en) * 2017-09-08 2019-09-10 Intel Corporation Multiple indirection granularities for mass storage devices
CN107918530A (zh) * 2018-01-12 2018-04-17 江苏华存电子科技有限公司 一种非易失性存储器的磨损均衡方法和装置
CN108170614B (zh) * 2018-01-19 2022-01-11 湖南国科微电子股份有限公司 一种避免数据重复回收的方法、装置及固态硬盘
US10489291B2 (en) * 2018-01-23 2019-11-26 Goke Us Research Laboratory Garbage collection method for a data storage apparatus by finding and cleaning a victim block
US20190286569A1 (en) * 2018-03-19 2019-09-19 Seagate Technology Llc Logical to physical data storage mapping
CN108717395B (zh) * 2018-05-18 2021-07-13 记忆科技(深圳)有限公司 一种降低动态块映射信息占用内存的方法及装置
KR102620255B1 (ko) * 2018-05-18 2024-01-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP2020003838A (ja) * 2018-06-25 2020-01-09 キオクシア株式会社 メモリシステム
WO2020000492A1 (zh) 2018-06-30 2020-01-02 华为技术有限公司 一种存储碎片管理方法及终端
KR102620731B1 (ko) * 2018-09-27 2024-01-05 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200064567A (ko) * 2018-11-29 2020-06-08 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작방법
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
KR20200137181A (ko) 2019-05-29 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보를 전송하는 장치
KR102666123B1 (ko) 2019-07-05 2024-05-16 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11422942B2 (en) 2019-04-02 2022-08-23 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20200123684A (ko) 2019-04-22 2020-10-30 에스케이하이닉스 주식회사 메모리 시스템에서 맵 정보를 전송하는 장치
KR20200139433A (ko) 2019-06-04 2020-12-14 에스케이하이닉스 주식회사 컨트롤러의 동작 방법 및 메모리 시스템
KR20210004322A (ko) 2019-07-04 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보 및 리드카운트를 전송하는 장치 및 방법
US11113007B2 (en) * 2019-05-13 2021-09-07 Micron Technology, Inc. Partial execution of a write command from a host system
US11138108B2 (en) * 2019-08-22 2021-10-05 Micron Technology, Inc. Logical-to-physical map synchronization in a memory device
KR20210127026A (ko) * 2020-04-13 2021-10-21 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN113535089B (zh) * 2020-05-22 2024-05-17 长江存储科技有限责任公司 用于ssd的映射表的刷新方法
CN112069189B (zh) * 2020-09-16 2024-05-17 深圳市硅格半导体有限公司 多层级映射表格的更新方法、系统、终端设备及存储介质
KR20220048864A (ko) * 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN112540726A (zh) * 2020-12-02 2021-03-23 深圳市硅格半导体有限公司 固态存储设备的数据读取方法、系统、设备及介质
TWI766582B (zh) * 2021-02-17 2022-06-01 群聯電子股份有限公司 有效資料合併方法、記憶體儲存裝置及記憶體控制電路單元
KR20230152501A (ko) * 2022-04-27 2023-11-03 한국과학기술원 플래시 기반 저장 장치 및 그 카피백 동작 방법
US20240070063A1 (en) * 2022-08-30 2024-02-29 Micron Technology, Inc. Sequential garbage collection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
US20120311237A1 (en) * 2011-05-30 2012-12-06 Young-Jin Park Storage device, storage system and method of virtualizing a storage device
US20140043901A1 (en) * 2012-08-10 2014-02-13 Donghun Kwak Nonvolatile memory device and operating method with variable memory cell state definitions
US20140101372A1 (en) * 2012-10-05 2014-04-10 Young Woo Jung Memory system and read reclaim method thereof

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4775932A (en) 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
US6892212B2 (en) 2001-03-22 2005-05-10 International Business Machines Corporation Method for efficient garbage collection based on object type
US7490283B2 (en) * 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US7769974B2 (en) 2004-09-10 2010-08-03 Microsoft Corporation Increasing data locality of recently accessed resources
US7603530B1 (en) * 2005-05-05 2009-10-13 Seagate Technology Llc Methods and structure for dynamic multiple indirections in a dynamically mapped mass storage device
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
JP2007310618A (ja) * 2006-05-18 2007-11-29 Fujitsu Ltd 階層型ストレージ装置及びその記録媒体管理方法
US20080005520A1 (en) * 2006-06-09 2008-01-03 Siegwart David K Locality with parallel hierarchical copying garbage collection
KR100843543B1 (ko) * 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
KR101297563B1 (ko) * 2007-11-15 2013-08-19 삼성전자주식회사 스토리지 관리 방법 및 관리 시스템
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
US8185685B2 (en) 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
CN100590609C (zh) * 2008-02-22 2010-02-17 浙江大学 一种基于非连续页的动态内存管理方法
JP5120455B2 (ja) * 2008-08-11 2013-01-16 富士通株式会社 ガーベジコレクションプログラム、及びガーベジコレクション方法、ならびにガーベジコレクションシステム
CN101482837B (zh) * 2009-01-21 2011-03-16 华为技术有限公司 闪存文件系统纠错方法和装置
US8161228B2 (en) 2009-03-19 2012-04-17 Samsung Electronics Co., Ltd. Apparatus and method for optimized NAND flash memory management for devices with limited resources
US20100287216A1 (en) * 2009-05-07 2010-11-11 Tatu Ylonen Oy Ltd Grouped space allocation for copied objects
CN102576330B (zh) 2009-06-12 2015-01-28 提琴存储器公司 具有持久化无用单元收集机制的存储系统
US8402242B2 (en) 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
JP2011070365A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8285946B2 (en) 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
US8495338B2 (en) * 2010-12-03 2013-07-23 Micron Technology, Inc. Transaction log recovery
KR101774496B1 (ko) * 2010-12-08 2017-09-05 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 장치들, 및 이의 동작 방법
US8913335B2 (en) * 2011-05-23 2014-12-16 HGST Netherlands B.V. Storage device with shingled data and unshingled cache regions
US8949568B2 (en) * 2011-05-24 2015-02-03 Agency For Science, Technology And Research Memory storage device, and a related zone-based block management and mapping method
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
KR101824949B1 (ko) * 2011-11-23 2018-02-05 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치
KR101942272B1 (ko) * 2011-12-27 2019-01-28 삼성전자주식회사 비휘발성 메모리의 제어방법, 이를 구현한 비휘발성 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR20130076429A (ko) * 2011-12-28 2013-07-08 삼성전자주식회사 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
CN102591807B (zh) * 2011-12-30 2015-03-11 记忆科技(深圳)有限公司 一种固态硬盘掉电和写异常处理方法及系统
KR101419004B1 (ko) * 2012-05-03 2014-07-11 주식회사 디에이아이오 비휘발성 메모리 시스템
KR20140001535A (ko) * 2012-06-27 2014-01-07 삼성전자주식회사 스토리지 시스템 및 그것의 데이터 관리 방법
KR101992940B1 (ko) * 2012-08-08 2019-06-26 삼성전자주식회사 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템
WO2014047159A1 (en) 2012-09-21 2014-03-27 Violin Memory Inc. Write cache sorting
KR20140050941A (ko) * 2012-10-22 2014-04-30 삼성전자주식회사 비휘발성 메모리 장치의 데이터 관리 방법
US9189389B2 (en) * 2013-03-11 2015-11-17 Kabushiki Kaisha Toshiba Memory controller and memory system
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US10209904B2 (en) * 2013-04-09 2019-02-19 EMC IP Holding Company LLC Multiprocessor system with independent direct access to bulk solid state memory resources
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
CN104298605A (zh) * 2013-07-17 2015-01-21 光宝科技股份有限公司 固态储存装置中用于垃圾搜集动作的区块分组方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
US20120311237A1 (en) * 2011-05-30 2012-12-06 Young-Jin Park Storage device, storage system and method of virtualizing a storage device
US20140043901A1 (en) * 2012-08-10 2014-02-13 Donghun Kwak Nonvolatile memory device and operating method with variable memory cell state definitions
US20140101372A1 (en) * 2012-10-05 2014-04-10 Young Woo Jung Memory system and read reclaim method thereof

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606758B2 (en) 2017-10-23 2020-03-31 SK Hynix Inc. Memory system and method of operating the same
US10977170B2 (en) 2018-03-27 2021-04-13 SK Hynix Inc. Memory controller for performing unmap operation and memory system having the same
US11169721B2 (en) 2018-12-06 2021-11-09 SK Hynix Inc. Memory system for flexible map block management and operating method thereof
US11360889B2 (en) 2018-12-21 2022-06-14 SK Hynix Inc. Memory system and operating method thereof performing garbage collection and write operations in parallel on different dies
CN109828749A (zh) * 2018-12-29 2019-05-31 北京航天云路有限公司 兼顾快速响应和数据更新的数据缓存方法及系统
US11513946B2 (en) 2019-02-15 2022-11-29 SK Hynix Inc. Memory controller generating mapping data and method of operating the same
US11163696B2 (en) 2019-03-27 2021-11-02 SK Hynix Inc. Controller, memory system and operating method thereof for controlling a non-volatile memory device during a sync-up operation
US11216384B2 (en) 2019-03-28 2022-01-04 SK Hynix Inc. Controller, memory system and operating method of the controller
US11269769B2 (en) 2019-07-24 2022-03-08 SK Hynix Inc. Memory system and method of operating the same
US11775426B2 (en) 2021-01-27 2023-10-03 SK Hynix Inc. Apparatus and method for securing a free memory block in a memory system

Also Published As

Publication number Publication date
KR102501751B1 (ko) 2023-02-20
CN107025178A (zh) 2017-08-08
US11243878B2 (en) 2022-02-08
US20190251024A1 (en) 2019-08-15
US20170083436A1 (en) 2017-03-23
CN114924993A (zh) 2022-08-19
CN107025178B (zh) 2022-05-03
US10296453B2 (en) 2019-05-21

Similar Documents

Publication Publication Date Title
KR102501751B1 (ko) 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
US9715444B2 (en) Storage device having nonvolatile memory device and write method
KR101979392B1 (ko) 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
KR102467032B1 (ko) 메모리 스케줄링 방법 및 메모리 시스템의 동작방법
US11226895B2 (en) Controller and operation method thereof
US20150347291A1 (en) Flash memory based storage system and operating method
US11386005B2 (en) Memory system, memory controller, and method of operating memory system for caching journal information for zone in the journal cache
US9639463B1 (en) Heuristic aware garbage collection scheme in storage systems
KR20160077343A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20220130438A1 (en) Memory system and operating method thereof
US11301174B2 (en) Memory system, memory controller and method for operating memory system
US11315650B2 (en) Memory system, memory controller, and method of operating memory system
US11726878B2 (en) Memory system and operating method thereof
US20210365382A1 (en) Memory system, memory controller, and operation method thereof
KR20210157544A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20210041233A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR20210012123A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
CN114968856B (zh) 存储器系统及其操作方法
CN114596898A (zh) 存储器系统及其操作方法
KR20210071314A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
KR20210054187A (ko) 메모리 시스템, 메모리 장치 및 메모리 시스템의 동작 방법
KR20210028335A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
US11404137B1 (en) Memory system and operating method of memory system
KR20110019227A (ko) 웨어-레벨링 기능을 갖는 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant