KR20190127980A - 가비지 컬렉션 - Google Patents

가비지 컬렉션 Download PDF

Info

Publication number
KR20190127980A
KR20190127980A KR1020197032553A KR20197032553A KR20190127980A KR 20190127980 A KR20190127980 A KR 20190127980A KR 1020197032553 A KR1020197032553 A KR 1020197032553A KR 20197032553 A KR20197032553 A KR 20197032553A KR 20190127980 A KR20190127980 A KR 20190127980A
Authority
KR
South Korea
Prior art keywords
block
data
memory
blocks
mode
Prior art date
Application number
KR1020197032553A
Other languages
English (en)
Other versions
KR102382887B1 (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 마이크론 테크놀로지, 인크
Publication of KR20190127980A publication Critical patent/KR20190127980A/ko
Application granted granted Critical
Publication of KR102382887B1 publication Critical patent/KR102382887B1/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
    • 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/061Improving I/O performance
    • 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
    • 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/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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

가비지 컬렉션을 위한 예시적인 장치는 복수의 혼합 모드 블록을 포함하는 메모리를 포함할 수 있다. 예시적인 장치는 제어기를 포함할 수 있다. 제어기는 단일 레벨 셀 (SLC) 모드에서 순차적 호스트 데이터의 제 1 부분을 메모리의 복수의 혼합 모드 블록에 기록하도록 구성될 수 있다. 제어기는 XLC 모드에 순차적 호스트 데이터의 제 2 부분을 복수의 혼합 모드 블록에 기록하도록 구성될 수 있다. 제어기는 가비지 컬렉션 동작을 수행하여 순차적인 호스트 데이터의 제 2 부분을 기록하도록 구성될 수 있다. 가비지 컬렉션 동작은 순차적 호스트 데이터의 제 2 부분을 복수의 혼합 모드 블록에 기록하는 것과 관련하여 기록되는 블록의 양보다 많은 블록을 프리 블록 풀에 추가하는 단계를 포함할 수 있다.

Description

가비지 컬렉션
본 개시는 전반적으로 반도체 메모리 및 방법에 관한 것으로, 보다 상세하게는 가비지 컬렉션(garbage collection)에 관한 것이다.
메모리 디바이스는 전형적으로 컴퓨터 또는 다른 전자 디바이스들에서 내부의, 반도체, 집적 회로 및/또는 외부 착탈 가능한 디바이스들로 제공된다. 휘발성 및 비 휘발성 메모리를 포함하여 많은 상이한 유형의 메모리가 있다. 휘발성 메모리는 데이터를 유지하기 위해 파워가 필요할 수 있으며 RAM (Random-Access Memory), DRAM (Dynamic Random Access Memory) 및 SDRAM (Synchronous Dynamic Random Access Memory)을 포함할 수 있다. 비 휘발성 메모리는 파워가 공급되지 않을 때 저장된 데이터를 보유할 수 있고, 그 중에서도 NAND 플래시 메모리, NOR 플래시 메모리, 상 변화 랜덤 액세스 메모리 (PCRAM), 저항성 랜덤 액세스 메모리 (RRAM), 및 자기 랜덤 액세스 메모리 (MRAM)를 포함할 수 있다.
메모리 디바이스는 SSD (Solid State Drive)를 형성하기 위해 함께 결합될 수 있다. SSD는 다양한 다른 유형의 비 휘발성 및 휘발성 메모리 중에서 비 휘발성 메모리 (예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리)를 포함할 수 있고/있거나 휘발성 메모리 (예를 들어, DRAM 및/또는 SRAM)를 포함할 수 있다. 플래시 메모리 디바이스들은 예를 들어, 전하 저장 구조 예컨대 플로팅 게이트에 데이터를 저장하는 메모리 셀들을 포함할 수 있고, 광범위한 전자 애플리케이션들을 위한 비 휘발성 메모리로서 이용될 수 있다. 플래시 메모리 디바이스들은 전형적으로 고 메모리 밀도, 고 신뢰성, 및 저전력 소비를 허용하는 하나의 트랜지스터 메모리 셀을 사용한다.
고체 상태 드라이브는 성능, 크기, 무게, 견고성, 동작 온도 범위 및 파워 소비 측면에서 하드 드라이브보다 장점이 있으므로 SSD를 사용하여 하드 디스크 드라이브를 컴퓨터의 기본 저장 볼륨으로 교체할 수 있다. 예를 들어, SSD는 움직이는 부품이 없기 때문에 자기 디스크 드라이브와 비교할 때 우수한 성능을 가질 수 있으며, 이는 탐색 시간, 레이턴시 및 자기 디스크 드라이브와 관련된 다른 전기 기계적 지연을 피할 수 있다.
일부 메모리 셀들은 단일 레벨 셀 (SLC) 모드와 잉여 레벨 셀 (XLC)의 모드 (예를 들어, 2 비트 모드, 3 비트 모드, 4 비트 모드 등) 둘 모두에서 동작될 수 있다(예를 들어, 프로그래밍, 판독, 소거 등). 이러한 셀은 "혼합 모드(mixed mode)"메모리 셀로 지칭될 수 있다. SLC 메모리 셀은 2 개의 상이한 데이터 상태 중 목표가 된 하나를 프로그래밍되고 단일 데이터 유닛 (예를 들어, 1 비트)을 저장하도록 구성된 셀을 지칭할 수 있다. XLC 메모리 셀들은 하나 이상의 데이터 유닛 (예를 들어, 2 비트, 2.5비트, 3 비트, 4 비트 등)을 저장하도록 구성되는 둘 이상의 상이한 데이터 상태 중 목표가 된 하나로 프로그래밍될 셀을 지칭할 수 있다. XLC 셀은 멀티 상태 메모리 셀, 멀티 유닛 셀, 멀티 레벨 셀로 지칭될 수 있다. XLC는 각 셀이 하나 초과의 데이터 유닛을 나타낼 수 있기 때문에 메모리 셀 수를 증가시키지 않고도 고밀도 메모리를 제공할 수 있다.
다양한 예들에서, SSD는 SLC 모드에서 호스트 데이터를 기록하도록 구성될 수 있다. 그러나, 사용 가능한 메모리 공간이 가득 차면, SLC 모드로 기록된 데이터 는 공간을 확보하기 위해 XLC 모드에서 재기록될 수 있다. 가비지 컬렉션 프로세스는 소거할 특정 블록을 선택하거나 SLC 모드로 기록된 데이터가 XLC 블록으로 "폴딩(folded)되는" 방식을 선택하기 위해 사용될 수 있다. 가비지 컬렉션 프로세스들은 데이터 단편화(fragmentation)로 귀결될 수 있다. 예를 들어, 가비지 컬렉션은 데이터가 더 이상 순차적으로 저장되지 않도록 (예를 들어, 데이터가 논리적으로(logically) 비 순차적 방식으로 저장되도록) 순차적으로 기록된 워크로드(workload)가 재위치 (예를 들어, 상이한 블록으로) 될 수 있다.
도 1은 본 개시의 다수의 실시예에 따른 다수의 물리적 블록을 갖는 메모리 어레이의 일부의 다이어그램을 예시한다.
도 2는 본 개시의 다수의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 3은 본 개시의 다수의 실시예에 따른 제어기의 다이어그램을 예시한다.
도면들 4a-4b는 본 개시의 다수의 실시예에 따른 가비지 컬렉션과 관련된 다이어그램을 각각 예시한다.
도면들 5a-5f는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 각각 예시한다.
도면들 6a-6l은 본 발명의 다수의 실시예에 따른 가비지 컬렉션과 관련된 다이어그램을 각각 예시한다.
도 7은 본 개시의 다수의 실시예에 따른 가비지 컬렉션과 관련된 예시적인 흐름도를 예시한다.
가비지 컬렉션을 위한 예시적인 장치는 복수의 혼합 모드 블록을 포함하는 메모리를 포함할 수 있다. 예시적인 장치는 제어기를 포함할 수 있다. 제어기는 단일 레벨 셀 (SLC) 모드에서 순차적 호스트 데이터의 제 1 부분을 메모리의 복수의 혼합 모드 블록에 기록 하도록 구성될 수 있다. 제어기는 XLC 모드에서 순차적 호스트 데이터의 제 2 부분을 복수의 혼합 모드 블록에 기록하도록 구성될 수 있다. 제어기는 가비지 컬렉션 동작을 수행하여 순차적인 호스트 데이터의 제 2 부분을 기록하도록 구성될 수 있다. 가비지 컬렉션 동작은 순차적 호스트 데이터의 제 2 부분을 복수의 혼합 모드 블록에 기록하는 것과 관련하여 기록되는 블록의 양보다 많은 블록을 프리 블록 풀(free block pool)에 추가하는 단계를 포함할 수 있다. 가비지 컬렉션 동작은 기록된 블록 수량보다 다 큰 수량의 블록을 비울 수 있다. 순차적 호스트 데이터의 제 1 부분은 순차적 호스트 데이터의 양일 수 있다. 순차적 호스트 데이터의 제 2 부분은 나머지 순차적 호스트 데이터일 수 있다.
본 개시에 따라 메모리에 저장된 데이터의 가비지 컬렉션은 다른 장점들 중에서도 메모리의 성능을 향상시키고 (예를 들어, 속도를 증가시키고, 신뢰성을 증가시키는 등), 및/또는 메모리의 내구성을 증가시킬 수 있다 (예를 들어, 수명을 증가시킨다). 예를 들어, 본 발명에 따른 가비지 컬렉션 방식은 운영 체제 (OS) 파일, 게임 파일, 비디오 파일 및/또는 기타 프로그램 인스톨과 같은 큰 파일이 메모리상에서 수행될 때 메모리 수명의 초기에 (예를 들어, 시작시에) 메모리의 성능을 증가시킬 수 있다.
가비지 컬렉션은 메모리와 관련된 기록 증폭을 증가시켜 예를 들어, SSD의 수명을 줄일 수 있다. 기록 증폭(write amplification)은 기록될 물리적 데이터의 수량(quantity)이 기록될 논리적 수량의 배수인 현상을 지칭할 수 있다. 기록 증폭은 플래시 메모리가 종종 기록 동작에 비교 되었될 때 소거 동작의 더 조악한(coarser) 세분화(granularity)로 재기록되기 전에 소거되어야 한다는 사실에 기인할 수 있다. 다양한 예에서, 기록되는 새로운 데이터의 양에 의해 실제로 요구되는 것보다 더 큰 플래시 메모리 부분이 소거 및 재기록될 수 있다. 이 증식 효과(multiplying effect)는 SSD 수명 동안 다수의 기록을 증가시켜 이는 SSD 수명을 단축시킬 수 있다.
SSD가 대량의 데이터를 순차적으로 기록하는 경우, 드라이브에 기록되는 물리적 데이터의 양은 기록될 논리 데이터의 양과 동일하기 때문에 기록 증폭은 1과 동일할 수 있다. 예를 들어, 순차적으로 기록된 파일이 삭제되어야 하는 경우 전체 블록(들)은 유효하지 않은 것으로 마킹될 수 있으며 블록(들)의 일부를 재위치 할 필요가 없다 (예를 들어, 가비지 컬렉션을 통해). 그러나, 여러 경우에, 데이터 단편화는 동적 단일 레벨 셀 (SLC) 캐싱(caching)에 의해 도입될 수 있다 (예를 들어, 데이터의 첫 번째 충전시(fill)). 데이터 단편화는 순차적인 호스트 데이터의 결과로 발생될 수 있으며, 가비지 컬렉션된 데이터와 함께 기록되며, 이는 순차적이지 않을 수 있어서 목적 블록(destination block)을 비 순차적으로 만든다. 데이터를 다시 순차적으로 만들기 위해, 도 4a와 관련하여 이하에 더 설명되는 바와 같이, 블록 내의 데이터의 랜덤성(randomness)을 배제하고 데이터를 순차적으로 만들기 위해 데이터의 몇몇의 논리적 충전을 취할 수 있다. 단편화로부터 복원하기 위해 사용되는 충전 수 (복원율로 지칭될 수 있음)는 제 1 충전 동안 도입된 단편화의 강력한 기능일 수 있다 (예를 들어, 도 4a와 관련하여 설명된 제 1 충전).
일부 이전의 접근법에서, 가비지 컬렉션은 프리 블록 카운트 (예를 들어, 이용 가능한 블록의 수량)가 특정 값으로 감소될 때 개시될 수 있다. 이러한 접근법에서, 가비지 컬렉션은 소비되는 것과 동일한 양의 프리 블록을 해제(release)하는 것을 목표로 할 수 있다. 아래에 설명되는 많은 예에서, 가비지 컬렉션은 의도적으로 블록 소비와 해제 비율(release rate) 사이의 불균형을 만드는 것을 목표로 할 수 있다. 예를 들어, 가비지 컬렉션 동안에 프리 블록으로 해제되는 다수의 블록은 가비지 컬렉션이 수행되도록 소비되는 블록의 수를 초과할 수 있다.
본 개시에 따른 가비지 컬렉션 방식은 이전 가비지 컬렉션 접근법과 비교하여 메모리의 성능 및/또는 내구성을 증가시킬 수 있다. 예를 들어, 다수의 이전 가비지 컬렉션 접근법은 동적 SLC 캐시 및 강제 SLC 캐시와 관련하여 본 개시에서 설명된 것 이상의 메모리 블록의 추가 충전 및 추가 소거를 이용할 수 있다. 본 출원에서 사용되는 "동적 SLC 캐시(dynamic SLC cache)"는 동적으로 크기를 조정할 수 있는 캐시를 지칭한다. 예를 들어, 동적 캐시 SLC의 크기 (예를 들어, 블록의 수)는 메모리에 각종 요구를 수용하도록 동작 동안 변경될 수 있다 (예를 들어, " 온 더 플라이(on the fly)"). 본 출원에서 사용되는 "강제 SLC 캐싱(forced SLC caching) "은 호스트 데이터가 (예를 들어, 메모리에 기록될 호스트로부터 수신된 데이터) SLC 모드로 기록된다 요건을 포함하는 캐싱을 지칭한다. 본 출원에서 사용되는 바와 같이, "강제 SLC 캐싱"은 데이터를 TLC 모드로 이동시키기 전에 호스트 데이터 (예를 들어, 메모리로부터 기록될 호스트로부터 수신된 데이터)가 SLC 모드로 기록 되어야 하는 요건을 포함하는 캐싱을 지칭할 수 있다.
일부 접근법과 달리, 본 개시의 실시예는 가비지 컬렉션을 수행하면서 메모리의 감소된 충전을 허용하여 메모리상에서 수행되는 판독 및 기록의 수를 감소시킬 수 있다. 실시예는 정상 상태 순차 워크로드, 즉 유휴 시간이 없는 연속(back-to-back) 순차 기록에 대한 감소된 충전을 제공할 수 있다. 이러한 방식으로, 가비지 컬렉션 전에 드라이브 충전의 수를 줄일 수 있다. 예를 들어, SLC 모드에서 FOB (fresh out of the box) 상태로 데이터를 메모리에 기록하는 것과 같이 데이터를 메모리에 처음에 충전하는 경우, 데이터는 이전 접근법보다 논리적 순차적인 방식으로 순서화(order)될 수 있다. 데이터를 논리적으로 순서화하기 위해 충전 횟수를 줄이는 것은 판독 및 기록을 줄이고 메모리의 장기 성능을 향상시킬 수 있다.
본 출원에서 사용되는, "다수의(a number of)" 것은 이러한 것들 중 하나 이상을 지칭할 수 있다. 예를 들어, 다수의 메모리 셀은 하나 이상의 메모리 셀을 지칭할 수 있다. 추가적으로, 특히 도면의 참조 번호와 관련하여 본 출원에서 사용된 " N ", "B", "R" 및 "S"과 같은 지정자(designator)는 그렇게 지정된 다수의 특정 피처가 본 개시의 다수의 실시예들에 포함될 수 있음을 나타낸다.
본 출원의 도면은 제 1 디지트 또는 디지트들이 도면 번호에 대응하고 나머지 디지트는 도면에서 엘리먼트 또는 컴포넌트를 식별하는 넘버링 관계를 따른다. 상이한 도면들 사이의 유사한 엘리먼트 또는 컴포넌트는 유사한 디지트를 사용함으로써 식별될 수 있다. 예를 들어, 210은 도 2에서 엘리먼트 "10"을 참조할 수 있고, 유사한 엘리먼트는 도 3에서 310으로 참조될 수 있다.
도 1은 본 개시의 다수의 실시예에 따른 다수의 물리적 블록을 갖는 메모리 어레이(100)의 일부의 다이어그램을 예시한다. 메모리 어레이(100)는 예를 들어 NAND 플래시 메모리 어레이일 수 있다. 그러나, 본 개시의 실시예들은 특정 유형의 메모리 또는 메모리 어레이로 제한되지 않는다. 예를 들어, 메모리 어레이(100)는 다른 유형의 메모리 어레이 중에서 DRAM 어레이, RRAM 어레이 또는 PCRAM 어레이 일 수 있다. 또한, 도 1에 도시되지 않았지만, 메모리 어레이(100)는 그 동작과 관련된 다양한 주변기기 회로부와 함께 특정 반도체 다이 상에 위치될 수 있다.
도 1에 도시된 바와 같이, 메모리 어레이(100)는 다수의 물리적 블록(116-0 (BLOCK 0), 116-1 (BLOCK 1),..., 116-B (BLOCK B))의 메모리 셀을 갖는다. 메모리 셀은 SLC 및/또는 XLC 로서 동작 가능한 혼합 모드 셀일 수 있다. 메모리 어레이(100)의 물리적 블록의 수는 128 블록, 512 블록, 또는 1,024 블록일 수 있지만, 실시예는 128의 특정 배수 또는 메모리 어레이(100)의 임의의 특정 수의 물리적 블록으로 제한되지 않는다. 제 1 수의 블록(116-0, 116-1,..., 116-B)은 메모리 블록의 제 1 부분으로 할당될 수 있고, 제 2 수의 블록 (116-0, 116-1,..., 116-B)은 메모리 블록의 제 2 부분으로 할당될 수 있고 및/또는 제 3 수의 블록 (116-0, 116-1,..., 116-B)은 메모리 블록의 제 3 부분으로서 할당될 수 있다. 메모리의 다른 부분은 가비지 컬렉션 목적으로 동적 SLC 캐시 역할을 할 수 있다. 예를 들어, 메모리에 대한 요구가 증가 및/또는 감소되고 가비지 컬렉션이 이러한 요구를 감소시키기 때문에 메모리의 상이한 부분이 크기가 동적으로 증가 및/또는 감소될 수 있다.
메모리 셀들의 다수의 물리적 블록들 (예를 들어, 블록들 116-0, 116-1,..., 116-B)은 메모리 셀들의 평면에 포함될 수 있고, 다수의 메모리 셀 평면들은 다이 상에 포함될 수 있다. 예를 들어, 도 1에 도시된 예에서, 각각의 물리적 블록(116-0, 116-1,..., 116-B)은 단일 다이의 일부일 수 있다. 즉, 도 1에 도시된 메모리 어레이(100)의 일부는 메모리 셀의 다이일 수 있다.
도 1에 도시된 바와 같이, 각각의 물리적 블록(116-0, 116-1,..., 116-B)은 액세스 라인(예를 들어, 워드 라인)에 결합된 메모리 셀들의 다수의 물리적 행(row) (예를 들어, 120-0, 120-1,..., 120-R)을 함유한다. 각각의 물리적 블록에서 행의 수 (예를 들어, 워드 라인)는 32 일 수 있지만, 실시예는 물리적 블록 당 특정 수의 행 (120-0, 120-1,..., 120-R)으로 제한되지 않는다. 또한, 도 1에 도시되지 않았지만, 메모리 셀은 감지 라인 (예를 들어, 데이터 라인 및/또는 디지트 라인)에 결합될 수 있다.
각 행(120-0, 120-1,..., 120-R)은 메모리 셀의 다수의 페이지 (예를 들어, 물리적 페이지)을 포함할 수 있다. 물리적 페이지는 프로그래밍 및/또는 감지의 유닛 (예를 들어, 기능 그룹으로서 함께 프로그래밍 및/또는 감지되는 다수의 메모리 셀)을 지칭한다. 도 1에 도시된 실시예에서, 각각의 행(120-0, 120-1,..., 120-R)은 메모리 셀의 하나의 물리적 페이지를 포함한다. 그러나, 본 개시의 실시예는 그렇게 제한되지 않는다. 예를 들어, 다수의 실시 예에서, 각각의 행은 메모리 셀의 다수의 물리적 페이지를 포함할 수 있다 (예를 들어, 짝수 번호 가 매겨진 비트 라인에 결합된 메모리 셀의 하나 이상의 짝수 페이지 및 홀수 번호가 매겨진 비트 라인에 결합된 메모리 셀의 하나 이상의 홀수 페이지). 부가적으로, XLC를 포함하는 실시예의 경우, 메모리 셀의 물리적 페이지는 데이터의 다수의 페이지 (예를 들어, 논리 페이지), 예를 들어 데이터의 상단 페이지 및 데이터의 하단 페이지를 저장할 수 있으며, 물리적 페이지의 각 셀은 데이터의 상단 페이지를 향한 하나 이상의 비트 및 데이터의 하단 페이지를 향한 하나 이상의 비트를 저장한다.
본 개시의 많은 실시예들에서, 도 1에 도시된 바와 같이, 메모리 셀들의 페이지는 다수의 물리적 섹터들(122-0, 122-1,..., 122-S) (예를 들어, 메모리 셀들의 서브 세트들)을 포함할 수 있다. 셀의 각각의 물리 섹터(122-0, 122-1,..., 122-S)는 다수의 데이터의 논리 섹터 (예를 들어, 데이터 워드)를 저장할 수 있다. 추가적으로, 각각의 데이터의 논리 섹터는 특정 데이터 페이지의 일부에 대응할 수 있다. 예로서, 특정 물리 섹터에 저장된 데이터의 제 1 논리 섹터는 데이터의 제 1 페이지에 대응하는 논리 섹터에 대응할 수 있고, 특정 물리 섹터에 저장된 데이터의 제 2 논리 섹터는 데이터의 제 2 페이지에 대응할 수 있다. 각각의 물리 섹터(122-0, 122-1,..., 122-S)는 시스템 및/또는 사용자 데이터를 저장할 수 있고/있거나 에러 정정 코드 (ECC) 데이터, 논리 블록 어드레스 (LBA : logical block address) 데이터 및 반복되는 에러 데이터와 같은 오버 헤드 데이터를 포함할 수 있다.
논리 블록 어드레스 지정은 데이터의 논리 섹터를 식별하기 위해 호스트에 의해 사용될 수 있는 기법이다. 예를 들어, 각 논리 섹터는 고유 논리 블록 어드레스 (LBA)에 대응할 수 있다. 추가적으로, LBA는 물리적 어드레스에 대응할 수도 있다. 데이터의 논리 섹터는 다수의 데이터 바이트 (예를 들어, 256 바이트, 512 바이트 또는 1,024 바이트) 일 수 있다. 그러나, 실시예는 이러한 예에 제한되지 않는다.
물리적 블록(116-0, 116-1,..., 116-B), 행들(120-0, 120-1,..., 120-R), 섹터(122-0, 122-1,..., 122-S)에 대한 다른 구성이 및 페이지가 가능하다는 것에 유의한다. 예를 들어, 물리적 블록들(116-0, 116-1,..., 116-B)의 행(120-0, 120-1,..., 120-R)은 각각 예를 들어 데이터의 512 바이트보다 더 많거나 더 작은 것을 포함할 수 있는 단일 논리 섹터에 대응하는 데이터를 저장할 수 있다.
도 2는 본 개시의 다수의 실시예들에 따른 메모리 시스템(204)을 포함하는 컴퓨팅 시스템(201) 형태의 장치의 블록도이다. 본 출원에서 사용되는, 메모리 시스템, 제어기 및/또는 메모리 디바이스는 별개의 "장치"일 수 있다.
메모리 시스템(204)은 예를 들어 고체 상태 드라이브 (SSD) 일 수 있다. 도 2에 도시된 실시예에서, 메모리 시스템(204)은 호스트 인터페이스(206), 메모리 (예를 들어, 다수의 메모리 디바이스(210-1, 210-2,..., 210-N)) 및 물리적 호스트 인터페이스(206) 및 메모리 디바이스(210-1, 210-2,..., 210-N)에 결합된 제어기(208) (예를 들어, SSD 제어기)를 포함한다.
메모리 디바이스(210-1, 210-2,..., 210-N)는 예를 들어 다수의 비 휘발성 메모리 어레이 (예를 들어, 비 휘발성 메모리 셀의 어레이)를 포함할 수 있다. 예를 들어, 메모리 디바이스(210-1, 210-2,..., 210-N)는 도 1과 관련하여 앞에서 설명된 메모리 어레이(100)와 유사한 다수의 메모리 어레이를 포함할 수 있다.
일부 실시예에서, 메모리 디바이스(210-1,..., 210-N)는 다수의 메모리 셀 어레이 (예를 들어, 비 휘발성 메모리 셀)를 포함할 수 있다. 어레이는 예를 들어 NAND 아키텍처를 갖는 플래시 어레이 일 수 있다. 그러나, 실시예는 특정 유형의 메모리 어레이 또는 어레이 아키텍처로 제한되지 않는다. 도 1과 관련하여 상술한 바와 같이, 메모리 셀은 예를 들어 메모리 셀의 다수의 물리적 페이지를 포함하는 다수의 블록으로 그룹화될 수 있다. 다수의 실시예에서, 블록은 하나의 유닛으로서 함께 소거되는 메모리 셀들의 그룹을 지칭한다. 다수의 블록이 메모리 셀의 평면에 포함될 수 있고 어레이는 다수의 평면을 포함할 수 있다. 일 예로서, 메모리 디바이스는 페이지 당 8KB (킬로바이트)의 사용자 데이터, 블록 당 128 페이지의 사용자 데이터, 평면 당 2048 개의 블록 및 디바이스 당 16 개의 평면을 저장하도록 구성될 수 있다.
동작시에, 데이터는 예를 들어, 데이터의 페이지로서 메모리 시스템의 메모리 디바이스 (예를 들어, 시스템(204)의 메모리 디바이스(210-1,...,210-N))에 기록 및/또는 메모리 디바이스로부터 판독될 수 있다. 이와 같이, 데이터의 페이지는 메모리 시스템의 데이터 전송 크기로 지칭될 수 있다. 데이터는 섹터 (예를 들어, 호스트 섹터)로 지칭되는 데이터 세그먼트에 호스트(202)로 /로부터 전송될 수 있다. 이와 같이, 데이터 섹터는 호스트의 데이터 전송 크기로 지칭될 수 있다. 일부 실시예에서, NAND 블록은 소거 블록으로 지칭될 수 있으며, 블록은 소거 유닛이고 페이지는 판독 및/또는 기록의 척도이다.
호스트 인터페이스(206)는 메모리 시스템(204)과 호스트(202)와 같은 다른 디바이스 사이에서 정보를 전달하는데 사용될 수 있다. 호스트(202)는 메모리 액세스 디바이스 (예를 들어, 프로세서)를 포함할 수 있다. 본 출원에서 사용되는, "프로세서"는 병렬 프로세싱 시스템, 다수의 보조 프로세서 등과 같은 다수의 프로세서를 의도할 수 있다. 예시적인 호스트는 퍼스널 랩탑 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 디지털 기록 및 재생 디바이스, 모바일 (예를 들어, 스마트) 전화기, PDA, 메모리 카드 판독기, 인터페이스 허브 등을 포함할 수 있다.
호스트 인터페이스(206)는 표준화된 물리적 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(204)이 컴퓨팅 시스템(201)에 정보 저장을 위해 사용될 때, 호스트 인터페이스(206)는 다른 물리적 커넥터 및/또는 인터페이스 중에서 SATA (Serial Advanced Technology Attachment) 물리적 인터페이스, PCI (Peripheral Component Interconnect Express) 물리적 인터페이스 또는 USB (Universal Serial Bus) 물리적 인터페이스일 수 있다. 그러나, 일반적으로, 호스트 인터페이스(206)는 메모리 시스템(204)과 호스트 인터페이스(206)를 위한 호환 가능한 수용체를 갖는 호스트 (예를 들어, 호스트(202)) 사이에 제어, 어드레스, 정보 (예를 들어, 데이터) 및 다른 신호를 전달 하기 위한 인터페이스를 제공할 수 있다.
제어기(208)는 예를 들어 제어 회로 및/또는 로직 (예를 들어, 하드웨어 및 펌웨어)을 포함할 수 있다. 제어기(208)는 메모리(210-1, 210-2,..., 210-N)와 동일한 물리적 디바이스 (예를 들어, 동일한 다이) 상에 포함될 수 있다. 예를 들어, 제어기(208)는 물리적 호스트 인터페이스(206) 및 메모리(210-1, 210-2,..., 210-N)를 포함하는 인쇄 회로 기판에 결합된 애플리케이션 특정 집적 회로 (ASIC) 일 수 있다. 대안적으로, 제어기(208)는 메모리(210-1, 210-2,..., 210-N)를 포함하는 물리적 디바이스에 통신 가능하게 결합된 별도의 물리적 디바이스 상에 포함될 수 있다. 다수의 실시예에서, 제어기(208)의 컴포넌트는 분산 제어기로서 다수의 물리적 디바이스 (예를 들어, 메모리와 동일한 다이상에 일부 컴포넌트 및 다른 다이, 모듈 또는 보드상에 일부 컴포넌트)에 걸쳐 분산될 수 있다.
제어기(208)는 다른 동작들 중에서도 정보를 감지 (예를 들어, 판독), 프로그램 (예를 들어, 기록) 및/또는 소거하기 위해 메모리 디바이스들(210-1, 210-2,..., 210-N) 과 통신할 수 있다. 제어기(208)는 다수의 집적 회로 및/또는 이산의 컴포넌트일 수 있는 회로부를 가질 수 있다. 다수의 실시예들에서, 제어기(208)에 회로부는 메모리 디바이스들(210-1, 210-2,..., 210-N)에 걸쳐 액세스를 제어하기 위한 제어 회로부 및/또는 호스트(202)와 메모리 시스템(204) 사이에서 변환 계층(translation layer) (예를 들어, 플래시 변환 계층)을 제공하기 위한 회로부를 포함할 수 있다.
제어기(208)는 정적 (예를 들어, 전용) 단일 레벨 셀 (SLC) 캐시 및/또는 동적 SLC 캐시로서(예를 들어, 그런 캐시로서 동작하도록 각각의 개별 메모리 디바이스(210-1, 210-2,..., 210-N)의 일부를 구성하고) 개별 메모리 디바이스(210-1, 210-2,..., 210-N)의 블록 어드레싱 부분과 같은 전용 영역의 동작을 제어할 수 있다. 예를 들어, 각각의 개별 메모리 디바이스(210-1, 210-2,..., 210-N)의 일부는 SLC 모드에서의 정적 캐시 및/또는 SLC 모드에서의 동적 캐시로서 동작하도록 구성될 수 있다. 각각의 개별 메모리 디바이스(210-1, 210-2,..., 210-N)의 이 부분은 본 출원에 추가로 더 설명되는 (예를 들어, 도 3과 관련하여) 예를 들어, 각각의 메모리에서 메모리 셀 의 제 1 복수의 블록 (예를 들어, 물리적 블록)일 수 있으며, 본 출원에서 메모리의 제 1 부분으로 지칭될 수 있다. 추가하여, 각각의 개별 메모리 디바이스(210-1, 210-2,..., 210-N)의 일부는 제 2 복수의 블록, 제 3 복수의 블록 등을 포함할 수 있다.
각각의 개별 메모리(210-1, 210-2,..., 210-N)의 제 2 부분은 본 출원에 추가로 설명될(예를 들어, 도 3과 관련하여) 예를 들어, 각각의 개별 메모리에서 메모리 셀의 제 2 복수의 블록 (예를 들어, 물리적 블록)일 수 있다. 제어기(208)는 SLC 또는 XLC 모드에서 제 2 부분의 셀에 대해 소거 동작뿐만 아니라 프로그램 및 감지 동작을 수행할 수 있다.
각각의 개별 메모리(210-1, 210-2,..., 210-N)의 제 2 부분의 크기는 메모리의 SLC에 저장된 데이터를 메모리의 XLC에 프로그래밍하기 위해 해당 메모리에 의해 사용되는 메모리 셀의 양에 대응할 수 있다 (예를 들어, SLC 데이터를 XLC로 폴딩(fold)하는 것). 일반적으로, 제 1 부분의 크기는 전체 드라이브 밀도와 비교하여 작다.
도 2에 도시된 실시예는 본 개시의 실시예를 모호하게 하지 않기 위해 도시되지 않은 추가 회로부, 로직 및/또는 컴포넌트를 포함할 수 있다. 예를 들어, 메모리 디바이스(204)는 I/O 회로부를 통해 I/O 커넥터 상에 제공된 어드레스 신호를 래치(latch)하기 위한 어드레스 회로부를 포함할 수 있다. 어드레스 신호는 메모리(210-1, 210-2,..., 210-N)에 액세스하기 위해 행 디코더(row decoder) 및 열 디코더(column decoder)에 의해 수신 및 디코딩될 수 있다.
도 3은 본 개시의 다수의 실시예에 따른 제어기(308)의 다어그램을 예시한다. 제어기는 도 2에 도시된 제어기(208)와 유사할 수 있고, 본 출원에 도 2에 도시된 호스트 인터페이스 및/또는 복수의 메모리 디바이스에 결합될 수 있다. 제어기(308)는 마모 레벨링(342) 컴포넌트, 가비지 컬렉션(344) 컴포넌트, 매핑(346) 컴포넌트 및 소거 블록 추적(348) 컴포넌트를 포함할 수 있는 메모리 관리 컴포넌트(340)를 포함할 수 있다.
일부 실시예들에서, 마모 레벨링(342) 컴포넌트는 메모리 디바이스(들)와 연관된 하나 이상의 블록들에 대한 마모 레벨링을 구현하고 (예를 들어, 도 2에 도시된 메모리 디바이스(들)(210-1,..., 210-N)) 그리고 이러한 메모리 디바이스의 마모율(wear rate)을 제어하도록 구성될 수 있다. 마모 레벨링은 이러한 사이클을 전체 메모리 어레이 및/또는 메모리 디바이스에보다 균일하게 확산시킴으로써 특정 블록 그룹에 대해 수행되는 프로세스 사이클 (예를 들어, 프로그램 및/또는 소거 사이클)의 수를 감소시킬 수 있다. 마모 레벨링은 블록을 재생(reclaim)하기 위해 이동된 유효한 블록의 양을 최소화하기 위해 정적 마모 레벨링 및/또는 동적 마모 레벨링을 포함할 수 있다. 예를 들어, 정적 마모 레벨링은 블록의 수명을 연장시키기 위해 높은 프로그램/소거 카운트를 갖는 블록에 정적 데이터를 기록하는 것을 포함할 수 있다. 일부 실시예에서, 마모 레벨링은 가비지 컬렉션(344) 컴포넌트에 의해 구현될 수 있는 가비지 컬렉션 동작을 포함할 수 있다.
가비지 컬렉션은 메모리 디바이스(들) 내의 블록들 중에서 가장 유효하지 않은(invalid) 페이지를 갖는 재생 (예를 들어, 프로그래밍에 이용 가능하게 소거 및 만드는 것) 블록을 포함할 수 있다. 일부 실시예에서, 가비지 컬렉션은 유효하지 않은 페이지의 임계량 (예를 들어, 수량(quantity) 보다 많은 재생 블록을 포함할 수 있다. 그러나, 프로그래밍 작업에 충분한 프리 블록(free block)이 있으면 가비지 컬렉션 동작이 수행되지 않을 수 있다. 가비지 컬렉션은 일반적으로 백그라운드에서 수행될 수 있다 (예를 들어, 메모리의 유휴 시간 동안); 그러나, 일부 실시예들에서, 가비지 컬렉션은 예를 들어, 프리 블록들의 양이 임계 프리 블록 카운트 미만으로 감소되었다는 결정에 응답하여 포어그라운드(foreground)에서 수행될 수 있다.
일부 실시예에서, 메모리 관리(340) 컴포넌트는 메모리 디바이스(들)에서 메모리 블록의 매핑을 제어하도록 구성될 수 있는 매핑(346) 컴포넌트를 포함할 수 있다. 예를 들어, 매핑(346) 컴포넌트는 마모 레벨링 및/또는 가비지 컬렉션 동작 동안 발견된 불량 블록을 여전히 유효한 데이터를 수용할 수 있는 블록에 매핑하도록 구성될 수 있다.
일부 실시예들에서, 제어기(308)는 소거 블록 추적(348) 컴포넌트에 의해 결정될 수 있는 정보를 이용하여 마모 레벨링을 제어하도록 구성될 수 있다. 예를 들어, 소거 블록 추적(348) 컴포넌트는 블록이 기록 및/또는 소거되는 것에 응답하여 각 블록과 관련된 카운터를 증분시키도록 구성될 수 있다.
도면들 4a 및 4b는 가비지 컬렉션과 관련된 개별 다이어그램(403 및 405)을 예시한다. 열(428)은 메모리 셀들의 블록(432)에 대응하는 물리적 어드레스 (PA : physical address)를 포함한다. 열(434-1)은 "폴딩된(folded)"데이터를 저장하는 블록 (예를 들어, 블록에 재기록된 앞에서 기록된 호스트 데이터)을 나타낸다. 열(434-2)는 폴딩되지 않은 호스트 데이터를 저장하는 블록을 나타낸다. 도 4a 및 4b에 도시된 예에서, 블록은 각각의 블록이 SLC 모드에서 단일 데이터 유닛을 저장하거나 TLC 모드에서 3 데이터 유닛을 저장할 수 있도록 하는 TLC 블록이다. 다양한 실시예에서, 호스트 데이터는 드라이브가 포인트 폴딩이 발생하고 및/또는 데이터가 XLC 모드로 기록되는 (예를 들어, 이 예에서는 TLC 모드)임계 포화 레벨에 도달할 때까지 SLC 모드로 기록된다.
일 예로서, 각각의 PA는 드라이브의 블록에 대응할 수 있다. 이 경우에, 가비지 컬렉션과 호스트 데이터 둘 모두는 같은 블록에 기록될 수 있다. 이 예에서, SLC 모드에서, 하나의(1) 유닛의 데이터가 기록될 수 있다. TLC 모드에서, 세 개의 (3) 유닛의 데이터가 기록될 수 있다. 데이터의 가비지 컬렉션 컴포넌트는 (434-1)로 표시되는 블록에 기록될 수 있고, 데이터의 호스트 컴포넌트는 (434-2)로 표시되는 블록에 기록 될 수 있다. 호스트 데이터가 SLC 모드로 기록되는 것에 응답하여, 하나의(1) 유닛의 호스트 데이터가 각각의 PA에 기록될 수 있다. TLC 모드로 기록되는 데이터에 응답하여, 세개(3)의 유닛의 데이터가 각각의 PA에 기록될 수 있다. 다이어그램 (400-1)에서, 호스트 데이터는 PA (432-1 내지 432-9)에서 SLC 모드로 기록된다. 호스트 데이터는 PA(432-10 및 432-11)에 TLC 모드로 기록된다. 이 예에서 이 시점에 모든 블록은 완전히 사용될 수 있다. 추가 호스트 데이터를 기록하기 위해, 가비지 컬렉션이 블록 상에서 수행될 수 있다. 블록에 기록된 가비지 컬렉션 데이터의 양은 열(434-3)에 표시된다.
도 4a는 이전 접근법들에 따른 가비지 컬렉션과 관련된다. 일부 이전 접근법에서, 메모리 또는 메모리의 일부는 SLC 캐시 및/또는 XLC 캐시로서 역할을 할 수 있다. 메모리(400-1 및 400-2)는 예를 들어 도 1과 관련하여 앞에서 설명된 어레이(100)와 같은 메모리 어레이의 일부를 나타낼 수 있다.
도 4a에 도시된 바와 같이, 메모리(400-1, 400-2)는 가비지 컬렉션을 수행하는 적어도 이전 접근법의 예이다. 예를 들어, 메모리(400-1)는 제 1 충전(fill) (예를 들어, 저장) 데이터의 예시이다. 호스트는 메모리 블록의 열(434-2)의 제 1 블록에 제 1 데이터 유닛 "1"을 저장할 수 있다. 제 1 데이터 유닛 "1"은 메모리(400-1)에 처음에 저장된 데이터 유닛일 수 있다. 제 1 데이터 유닛 "1"은 "1"의 제 1 물리적 어드레스 (“PA")(432-1)와 연관될 수 있다. 제 1 데이터 유닛 "1"은 SLC 모드에 저장될 수 있고 따라서, "폴드"로 지칭된 열(434-1)은 폴딩될 데이터가 없기 때문에 사용되지 않을 것이다 (호스트로부터의 데이터의 초기 저장에서 폴딩이 발생하지 않음을 반복하기 위해 메모리 (400-2)와 관련되고 메모리 (400-1)에 도시된 이하의 설명과 상관되는 예시 목적을 위해 포함됨). 명확성을 위해, 동일한 PA에 있는 데이터의 "FOLD” 및 "HOST"부분은 동일한 블록에 있다. 더구나, 예로서, 블록은 그것이 제 1 순차적인 충전인 경우 어떠한 "폴드" 데이터를 갖지 않을 수 있다.
마찬가지로, 제 2 데이터 유닛 "2"는 메모리 블록의 열(434-2)의 PA (432-2) (예를 들어, "2")와 관련된 제 2 블록에 호스트에 의해 저장될 수 있다. 제 2 데이터 유닛 "2"는 제 1 데이터 유닛이 저장된 후에 순서대로 두번째로 저장될 수 있다. 제 3 내지 제 9 데이터 유닛, "3" 내지 "9"는 SLC 모드에서 메모리 블록의 열(434-2)의 제 3 내지 제 9 블록 (PA (432-3) (예를 들어, "3")과 PA (432-9) (예를 들어, "9")와 관련된)에 저장될 수 있다. 제 3 내지 제 9 데이터 유닛은 제 1 및 제 2 데이터 유닛에 후속하여 제 3으로부터 제 9까지 증가하는 순서로 저장될 수 있다.
일부 실시예에서, 동적 SLC 캐싱 방법을 사용하는 것은 프리 (예를 들어, 비어 있는) 블록이 다 쓸 때까지 SLC 모드에서 XLC 모드가 가능한 메모리 블록에 호스트 데이터를 처음에 기록하는 단계를 포함할 수 있다. 이는 데이터 저장 용량을 보존하기 위해 XLC 모드로 데이터를 저장할 때까지 더 빠른 데이터 액세스를 제공할 수 있다. 예를 들어, XLC 셀이 SLC 모드에서 사용되는 경우, ½, 1/3으로부터 ¼까지의 셀 용량 크기가 사용되는 임의의 경우 (XLC 모드가 멀티 셀 모드(하나의 셀에 저장된 2 개의 데이터 값), 3중 레벨 셀 모드 (하나의 셀에 저장된 3 개의 데이터 값) 또는 4 중 레벨 모드 (하나의 셀에 저장된 4 개의 데이터 값)에 관련되는지에 따라). 따라서, 메모리 블록의 전체 저장 용량에 도달하기 전에 SLC 모드를 사용하는 경우 메모리의 프리 블록이 충전될 수 있다. 가비지 컬렉션은 추가 저장 용량을 생성하기 위해 SLC 모드로 기록된 호스트 데이터를 XLC 모드로 기록된 데이터로 이동하는 것을 지칭할 수 있다. 가비지 컬렉션이 그렇게 하도록 수행되지 않은 경우, 기록 방지 모드가 시작되어 오작동을 피할 수 있다.
메모리의 데이터 저장 용량이 제한되기 때문에, 동적 SLC 캐싱 방법에서, 추가적인 호스트 데이터가 초기에 XLC 모드로 기록될 수 있다. 예를 들어, 도 4a에 도시된 바와 같이, 10 번째 "10", 11 번째 "11” 및 12 번째 "12" 데이터 유닛은, XLC 모드에서 PA(432-10)(예를 들어”10")와 연관된 열(434-2)의 10 번째 블록에 저장될 수 있다. 예를 들어, 10번째 "10" 데이터 유닛은 10번째 블록의 상위 페이지 데이터 유닛일 수 있고, 11번째 "11" 데이터 유닛은 10번째 블록의 중간 페이지 데이터 유닛일 수 있고, 12번째 "12" 데이터 유닛은 10 번째 블록의 하위 페이지 데이터 유닛일 수 있다. 13 번째 "13", 14 번째 "14” 및 15 번째 "15" 데이터 유닛은 XLC 모드에서 PA(432-11)과 연관된 열(434-2)의 11 번째 블록 (예를 들어, "11") 에 저장될 수 있다. 예를 들어, 13번째 "13" 데이터 유닛은 11번째 블록의 상위 페이지 데이터 유닛일 수 있고, 14번째 "14" 데이터 유닛은 11번째 블록의 중간 페이지 데이터 유닛일 수 있고, 15번째 "15" 데이터 유닛은 11 번째 블록의 하위 페이지 데이터 유닛일 수 있다.
이 예의 목적을 위해 각각의 블록에 도시된 단일 데이터 유닛이 도시되어 있지만, 실시예는 이에 제한되지 않는다. 임의의 수의 데이터 유닛이 메모리 블록에 저장될 수 있고, 충전 당 임의의 수의 데이터 유닛이 사용될 수 있다. 예를 들어, 데이터 유닛 "1" 내지 "15"은 처음에 메모리(400-1)에 저장되고 호스트가 가비지 컬렉션에 의해 데이터 유닛 "16"내지 "30"을 계속 저장할 때 데이터 유닛 "1" 내지 "30"은 메모리(400-2)에 저장된다. 그러나, 실시예는 충전 당 총 30 개의 데이터 유닛으로 제한되지 않는다.
추가 호스트 데이터가 메모리 블록에 기록될 때 이미 가비지 컬렉션된 호스트 데이터 및 데이터는 메모리 블록에 함께 기록될 수 있다. 호스트 데이터가 순차적으로 전송되더라도 이것은 논리적으로 비 순차적인 데이터 저장을 생성할 수 있다. 이 동적 SLC 캐싱에 의해 도입된 데이터 단편화로 인해, 데이터의 논리적 랜덤성을 배제하기 위해 여러 개의 논리적 충전이 사용될 수 있다. 단편화에서 복원하는데 사용되는 충전 수는 첫 번째 초기 기록에서 도입된 단편화의 함수일 수 있다. 이하에서 설명되는 실시예들에 따르면, 이미 기록된 다수의 메모리 블록과 기록되기 위해 비워진 블록의 수 사이에 불균형을 생성하는 가비지 컬렉션이 설명된다. 달리 말하면, 기록되는 것보다 더 많은 메모리 블록이 비워진다. 이를 위해, 호스트 데이터 및 가비지 컬렉션된 데이터로 충전된 블록들의 수가 감소된다.
(436-1)에 예시된 가비지 컬렉션은 메모리 (400-1)에 저장된 데이터에 대해 수행될 수 있고, 메모리 (400-2)에 예시된 바와 같이 저장된 데이터로 귀결된다. 예를 들어, SLC 모드에서 메모리 (400-1)에 저장된 제 1 데이터 유닛 "1"은 열(434-3)에 예시된 바와 같이 가비지 컬렉션 및 폴딩될 수 있는 반면, 16번째 데이터 유닛 "16" 및 17번째 데이터 유닛 "17 ""는 호스트에 의해 물리적 어드레스 "1"(432-1)과 관련된 메모리(400-2)의 제 1 블록에 기록된다. 폴딩은 데이터 유닛을 SLC 모드에서 저장하는 것으로부터 XLC 모드의 셀 내의 새로운 위치로 저장하는 것으로 변경하는 것을 지칭할 수 있다. 폴딩 열(434-3)은 가비지 컬렉션 동안 이전 위치로부터 어떤 데이터 유닛이 폴딩되는지를 설명하기 위해 사용된다. 마찬가지로, SLC 모드에서 메모리 (400-1)에 저장된 제 2 데이터 유닛 "2"는 18 번째 데이터 유닛 및 19 번째 데이터 유닛과 함께 가비지 컬렉션 및 폴딩되어 PA(432-2) (예를 들어, "2")와 관련된 제 2 블록에서 XLC 모드로 병합되어 기록될 수 있고, 제 3 데이터 유닛 "3"은 20번째 데이터 유닛 및 21번째 데이터 유닛과 병합될 수 있고,…, 8번째 데이터 유닛은 30번째 데이터 유닛 및 31 번째 데이터 유닛과 함께 병합될 수 있다. PA(432-9, 432-10, 432-11)(예를 들어, " 9, " " 10, " 및 "11")과 관련된 블록에 저장된 데이터 유닛 (“9," "10", "11", "12", "13", "14” 및 "15")은 변경되지 않은 상태로 유지될 수 있다. 이 가비지 컬렉션 후 메모리(400-2)에 저장된 데이터는 제 1 "충전"으로 지칭될 수 있다.
도 4a와 관련하여 설명된 이 예에서, 메모리(400-2)에 저장된 데이터는 동일한 블록 내에 "폴드” 및 "호스트" 데이터를 갖는 많은 블록을 포함한다. 예를 들어, 1 번째,..., 2 번째, 3 번째, 4 번째, 5 번째, 6 번째, 7 번째 및 8 번째 블록은 모두 단편화된 데이터를 포함한다 (가비지 컬렉션을 경험한 유일한 블록임). 이 단편화는 동일한 블록 내에서 순차적 데이터를 제공하는데 필요한 후속 충전 수를 증가시킬 수 있다. 보다 순차적인 블록을 생성하는 제 1 충전을 수행함으로써, 도 4b와 관련하여 설명되는 바와 같이, 더 적은 수의 후속 충전이 더 많은 수의 순차적 블록을 제공하고 SSD의 정상 상태 순차 모드를 달성하는데 사용될 수 있다.
도 4b는 본 개시의 다수의 실시예에 따른 가비지 컬렉션과 관련된 다이어그램(405)을 예시한다. 일부 실시예들에서, 메모리 또는 메모리의 일부는 동적 SLC 캐시로서 역할을 할 수 있다. 메모리 (400-1 및 400-3)는 도 2와 관련하여 앞에서 설명된 메모리 디바이스 (210-1, 210-2,...,210-N)와 유사할 수 있거나 도 2와 관련하여 앞에서 설명된 메모리 디바이스 (210-1, 210-2,..., 210-N)의 일부일 수 있다. 일부 실시예에서, 메모리(400-1 및 400-3)은 도 1과 관련하여 앞에서 설명된 메모리 어레이(100)와 유사한 다수의 메모리 어레이들을 포함할 수 있다.
도 4b에 도시된, 메모리(400-1, 400-3)은 가비지 컬렉션을 수행하는 예시이다. 상기 도 4a와 관련하여 설명된 바와 같이, 제 1 데이터 유닛 "1"은 열(434-2)의 PA (432-1)와 관련된 제 1 블록에 호스트에 의해 저장될 수 있고, 제 2 데이터 유닛 "2"는 메모리 블록의 열(434-2)의 PA (432-2) (예를 들어, "2")와 관련된 제 2 블록에 호스트에 의해 저장될 수 있다. 제 2 데이터 유닛 "2"는 제 1 데이터 유닛이 저장된 후에 순서대로 두번째로 저장될 수 있다. 제 3 내지 제 9 데이터 유닛, "3" 내지 "9"는 SLC 모드에서 메모리 블록의 열(434-2)의 제 3 내지 제 9 블록 (PA (432-3) (예를 들어, "3")과 PA (432-9) (예를 들어, "9")와 관련된)에 저장될 수 있다. 제 3 내지 제 9 데이터 유닛은 제 1 및 제 2 데이터 유닛에 후속하여 제 3으로부터 제 9까지 증가하는 순서로 저장될 수 있다.
메모리의 데이터 저장 용량이 제한되기 때문에, 동적 SLC 캐싱 방법에서, 추가적인 호스트 데이터가 초기에 XLC 모드로 기록될 수 있다. 예를 들어, 도 4a에 도시된 바와 같이, 10 번째 "10", 11 번째 "11” 및 12 번째 "12"데이터 유닛은, XLC 모드에서 PA(432-10)(예를 들어”10")와 연관된 열(434-2)의 10 번째 블록에 저장될 수 있다. 예를 들어, 10번째 "10" 데이터 유닛은 10번째 블록의 상위 페이지 데이터 유닛일 수 있고, 11번째 "11" 데이터 유닛은 10번째 블록의 중간 페이지 데이터 유닛일 수 있고, 12번째 "12" 데이터 유닛은 10 번째 블록의 하위 페이지 데이터 유닛일 수 있다. 13 번째 "13", 14 번째 "14” 및 15 번째 "15" 데이터 유닛은 XLC 모드에서 PA(432-11)과 연관된 열(434-2)의 11 번째 블록 (예를 들어, "11") 에 저장될 수 있다. 예를 들어, 13번째 "13" 데이터 유닛은 11번째 블록의 상위 페이지 데이터 유닛일 수 있고, 14번째 "14" 데이터 유닛은 11번째 블록의 중간 페이지 데이터 유닛일 수 있고, 15번째 "15" 데이터 유닛은 11 번째 블록의 하위 페이지 데이터 유닛일 수 있다.
(436-2)에 예시된 가비지 컬렉션은 메모리 (400-1)에 저장된 데이터에 대해 수행될 수 있고, 메모리 (400-3)에 예시된 바와 같이 저장된 데이터로 귀결된다. 예를 들어, (436-2)에 예시된 가비지 컬렉션이 시작될 때, XLC 모드에서 첫 번째 블록에 저장됨으로써 열 (434-5 및 434-6)에서 PA(432-1)(예를 들어, “1”) 과 연관된 제 1 블록에서 메모리 공간을 비우기 위해 제 1 데이터 유닛 "1" 및 제 2 데이터 유닛 "2"이 가비지 컬렉션될 수 있다. 16번째 데이터 유닛 "16"이 호스트에 의해 발송될 때, 16번째 데이터 유닛 "16"은 제 1 데이터 유닛 "1” 및 제 2 데이터 유닛 "2" 함께 제 1 블록에 XLC 모드로 저장될 수 있다. 가비지 컬렉션이 PA (432-2) (예를 들어, "2")와 연관된 제 1 블록과 제 2 블록 둘 모두에서 메모리 공간을 비울 때, 17 번째 "17", 18 번째 "18"및 19 번째 "19" 데이터 유닛은 호스트로부터 수신되고 제 2 블록에서 XLC 모드로 저장될 수 있다. 이 예는 소비되는 것 보다 많은 블록을 비우고 가비지 컬렉션 동안에 더 많은 순차 블록을 유지하는 가비지 컬렉션을 보여준다. 데이터 유닛 "1", "2” 및 "16"은 본 출원에서 순차적 호스트 데이터의 제 1 부분으로 지칭될 수 있고, 데이터 유닛 "17," "18” 및 "19"는 본 출원에서 순차적 호스트 데이터의 제 2 부분으로 지칭될 수 있다. 데이터 유닛 "1"은 본 출원에서 제 1 부분의 제 1 세트로 지칭될 수 있고, 데이터 유닛 "2"는 본 출원에서 제 1 부분의 제 2 세트로 지칭될 수 있다. 이하에 추가로 설명되는 바와 같이, 제 1 세트는 상이한 블록들 (예를 들어, PA 1(432-1)과 관련된 "1” 및 PA 2(432-2)와 관련된 "2") 으로부터 수집된 데이터 유닛들을 보다 일반적으로 지칭할 수 있고 제 2 세트는 호스트로부터 제 1 세트의 데이터 유닛과 동일한 블록에 기록된 데이터 유닛을 지칭할 수 있다.
호스트로부터 20 번째 데이터 유닛 "20"을 수신하기 위해, PA (432-3) (예를 들어, "3") 에서 메모리(400-3)에 예시된 바와 같이 XLC 모드에서 제 3 데이터 유닛 "3” 및 제 4 데이터 유닛 "4"를 제 3 블록으로 폴딩함으로써 블록들을 비우하기 위한 가비지 컬렉션이 수행된다. 이것은 거기에 저장된 호스트로부터 수신된 20 번째 데이터 유닛 "20"에 의해 예시된 바와 같이, 추가 데이터 유닛이 제 3 블록에 저장되도록 비우고, 또한 제 4 블록을 비운다. 21번째 "21", 22번째 "22” 및 23번째 "23" 데이터 유닛이 수신될 때, 그것들은 제 4 블록에 순차적으로 저장될 수 있다. 또한, 제 24 데이터 유닛 "24"를 수신하기 위해, 제 5 및 제 6 데이터 유닛은 24 번째 데이터 유닛과 함께 제 5 블록 (PA (432-5) (예를 들어, "5")에 저장되도록 폴딩되고, 후속하여 수신된 25 번째, 26 번째 및 27 번째 데이터 유닛은 제 6 블록에 순차적으로 저장된다 (PA (432-6) (예를 들어, "6")). 또한, 제 28 데이터 유닛 (28)을 수신하기 위해, 제 7 및 제 8 데이터 유닛은 XLC 모드에서 제 7 블록에 저장되도록 폴딩되고 이어서 수신된 29번째 "29"및 30번째 "30" 데이터 유닛들은 제 8 블록에 (PA (432-8)과 연관된 (예를 들어, "8")) 순차적으로 저장된다.
이러한 방식으로, 도 4a에 예시된 데이터 유닛 "2", "18” 및 "19"이 앞에서 비 순차적인 방식으로 저장된 경우와 대조적으로 전체 블록 (제 2 블록)은 순차적이고 비 순차적 데이터 유닛을 포함하지 않는다. 추가하여, 데이터 유닛 "3", "4” 및 "20"은 PA (432-3) (예를 들어, "3")와 관련된 제 3 블록에 저장되도록 병합되고, 데이터 유닛 "21", "22" 및 "23"은 PA (432-4)(예를 들어, "4") 와 관련된 제 4 블록에 저장되도록 병합되고, 등등 데이터 유닛 "29” 및 "30"은 PA (432-8) (예를 들어, "8")과 관련된 제 8 블록에 저장되도록 병합된다. 데이터 유닛 "9" 내지 "15"는 PA (432-9) (예를 들어, "9") 내지 PA (432-11) (예를 들어, "11") 과 관련하여 9 번씩 내지 11번째의 블록에 저장된 상태로 유지된다. 이러한 방식으로, 2번째, 4번째, 6번째, 8번째, 10번째 및 11번째 블록은 순차적 데이터를 저장한다.
도 5a 내지 5c는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 각각 도시한다. 도 5a는 동적 SLC 캐시로 지칭되는 7 개의 메모리 블록(560-0 내지 560-6)을 포함하는 메모리를 예시한다. 그러나, 이 예는 7 개의 메모리 블록으로 제한되지 않는다. 도시된 바와 같이, 각각의 메모리 블록은 (563-1, 563-2 및 563-3)으로 도시된 3 개의 메모리 셀을 포함한다. 각각의 메모리 셀은 상위 페이지 비트와 관련된 데이터 위치 (562-0), 중간 페이지 비트와 관련된 데이터 위치 (562-1) 및 0번째 블록 (560-0)의 제 1 메모리 셀 (563-1)에 대한 하위 페이지 비트와 연관된 데이터 위치 (562-2)로 예시된 XLC 모드에서 최대 3 개의 데이터 유닛 (예를 들어, 데이터 비트)을 저장할 수 있다. 데이터 위치(562-3)는 상위 페이지 비트와 관련되고, 데이터 위치(562-4)는 중간 페이지 데이터 비트와 관련되며, 데이터 위치(562-5)는 0번째 브록(560-0)의 제 2 메모리 셀(563-2)의 하위 페이지 비트와 관련된다. 데이터 위치(562-6)는 상위 페이지 비트와 관련되고, 데이터 위치(562-7)는 중간 페이지 비트와 관련되며, 데이터 위치(562-8)는 0번째 블록 (560-0)의 제 3 메모리 셀(563-3)의 하위 페이지 비트와 관련된다. 데이터 유닛은 0번째 블록(560-0)에 저장될 때 논리적으로 순차적일 수 있다. 예를 들어, 데이터 유닛 "1"은 가장 왼쪽 위치 (MSB (Most Significant Bit) 위치)(562-0) 에 저장되고, 데이터 유닛 "2"는 제 2 MSB 위치 (562-1)에 저장되고, 데이터 유닛 "3"은 제 3 MSB 위치(562-2)에 저장되고, 등등 데이터 유닛 "9"는 제 0 블록(560-0)을 충전하기 위해 최하위 비트 (LSB) 위치(562-8)에 저장된다.
유사한 방식으로, 데이터 유닛 "10" 내지 "18 "은 3 개의 셀 (563-1) (데이터 위치 (562-0 내지 562-2)와 관련됨), 563-2 (데이터 위치 (562-3 내지 562-4)와 관련됨) 및 563-3 (데이터 위치 (562-6 내지 562-8)과 관련됨)에 에서 제 1 블록 (560-1)에 논리적으로 순차적으로 저장될 수 있다. 데이터 유닛 "19" 내지 "27"은 제 2 블록 (560-2)에 논리적으로 순차적으로 저장될 수 있고, 데이터 유닛 "28" 내지 "36"은 제 3 블록 (560-3)에 논리적으로 순차적으로 저장될 수 있고, 데이터 유닛 "37" 내지 "42"는 제 4 블록 (560-4)에 논리적으로 순차적으로 저장될 수 있다. 제 5 블록 (560-5) 및 제 6 블록 (560-6)은 프리하고 (예를 들어, 비어 있음) 추가 데이터 유닛을 저장하기 위해 이용 가능할 수 있다.
도 5b는 7 개의 메모리 블록(560-0 내지 560-6)을 포함하는 메모리를 예시한다. 도 5b는 이전 데이터를 소거하는 것을 포함하는 호스트로부터 메모리로 발송된 데이터의 제 1 충전의 예이다. 예를 들어, 데이터 유닛 "1" 내지 "3"은 제 4 블록(560-4)의 제 3 메모리 셀 (563-3)에 기록된다. 데이터 유닛 "4" 내지 "12"은 제 5 블록(560-5)의 제 3 메모리 셀(563-3)에 기록된다. 데이터 유닛 "1" 내지 "12"는 이전에 제 0 블록 (560-0) 및 제 1 블록 (560-1)에 기록되었으므로 해당 데이터 유닛은 덮어 쓰여지고 (도 5b에서 취소선(strikethrough)으로 표시됨) 그리고 이제 기록되도록 비워진다.
도 5c는 7 개의 메모리 블록(560-0 내지 560-6)을 포함하는 메모리를 예시한다. 도 5c는 제 6 블록(560-6)에 데이터 유닛 "13" 내지 "21"을 기록하는 호스트 데이터의 예이다. 데이터 유닛 "13" 내지 "21"이 기록될 때, 이전에 제 1 블록(560-1) 및 제 2 블록(560-2)에 기록된 데이터 유닛 "13"내지 "21"은 이제 유효하지 않으며 덮어 쓰여질 수 있다 (취소선으로 표시됨).
도 5d는 7 개의 메모리 블록(560-0 내지 560-6)을 포함하는 메모리를 예시한다. 도 5d는 제 0 블록 (560-0)에 데이터 유닛 "22" 내지 "30"을 기록하는 호스트 데이터의 예이다. 데이터 유닛 "22" 내지 "30"이 기록될 때, 이전에 제 2 블록 (560-2) 및 제 3 블록 (560-3)에 기록된 데이터 유닛 "22" 내지 "30"은 유효하지 않으며 덮어 쓰여질 수 있다 (취소선으로 표시됨).
도 5e는 7 개의 메모리 블록(560-0 내지 560-6)을 포함하는 메모리를 예시한다. 도 5e는 제 1 블록 (560-1)에 데이터 유닛 "31" 내지 "39"를 기록하는 호스트 데이터의 예이다. 데이터 유닛 "31" 내지 "39"이 기록될 때, 제 1 블록 (560-1) 및 제 2 블록 (560-2)에 이전에 기록된 데이터 유닛 "13" 내지 "21"은 이제 유효하지 않으며 덮어 쓰여질 수 있다 (취소선으로 표시됨).
도 5f는 메모리 (560-0 내지 560-6)의 7 개의 블록을 포함하는 메모리를 예시한다. 도 5f는 제 2 블록 (560-2)에 데이터 유닛 "40" 내지 "42"를 기록하는 호스트 데이터의 예이다. 데이터 유닛 "40" 내지 "42"가 기록될 때, 제 4 블록 (560-4)에 이전에 기록된 데이터 유닛 "40" 내지 "42"는 덮어 쓰여 질 수 있다 (취소선으로 표시됨). 이러한 방식으로 호스트 데이터가 메모리 블록에 기록될 때 프리 메모리 블록이 우선하며, XLC 모드로 기록될 때는 가비지 컬렉션이 필요하지 않다. 그러나, 일부 실시예들에서, 호스트는 처음에 SLC 모드로 기록하는 것으로 제한될 수 있으며, 이는 가비지 컬렉션을 피하면서 충분한 블록 공간을 유지하는 것을 더 어렵게 할 수 있다.
도면들 6a 내지 6i는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 각각 도시한다. 도면들 6a-6i는 강제 SLC 모드 캐시의 예이다. 예를 들어, 호스트에서 메모리 블록으로 발송된 데이터는 처음에 SLC 모드로 저장된다. 추가 메모리 공간을 확보하기 위해, SLC 모드로 저장된 데이터는 호스트에 의한 처음 저장 이후 XLC 모드로 가비지 컬렉션될 수 있다. 일부 실시예에서, 펌웨어는 최소량의 유효 데이터를 갖는 블록을 선택하고 메모리를 비우기 위해 이를 XLC 블록으로 재위치시킬 수 있다. 호스트에 의해 SLC 모드로 기록된 데이터는 XLC 모드로 저장되도록 가비지 컬렉션될 수 있다. XLC 모드로 기록된 데이터는 논리적으로 순차적인 방식으로 데이터를 정렬하거나 데이터를 보다 효율적으로 재구조화하기 위해 가비지 컬렉션될 수 있다.
본 발명에 따른 예시적인 실시예는 최적화된 가비지 컬렉션 방법을 포함한다. 이것은 유효한 데이터의 양과 SLC 블록 또는 XLC 블록과 같은 블록 버전을 기초로 블록을 소팅(sorting)하여 수행된다. 메모리 블록은 최소 유효 데이터 (예를 들어, 최소 유효 블록 (LV 블록), 최고 유효하지 않은(invalid) 블록 (MV 블록), 바닥 블록)이 SLC 모드에 있다는 것에 응답하여 가비지 컬렉션을 위한 블록을 선택함으로써 가비지 컬렉션되도록 선택될 수 있다. 최소 유효 블록이 XLC 모드에 있다는 응답에, 블록 목록에서 다음 블록을 체크한다. 예를 들어, 최소 유효 블록(least valid block)은 더 큰 유효하지 않은 데이터 양을 갖는 블록을 지칭할 수 있다. 다음 블록은 다음 가장 큰 유효하지 않은 데이터의 양을 갖는 다음 최소 유효 블록이 선택될 수 있다. 다음 최소 유효 블록이 또한 XLC 모드에 있는 경우, 해당 최소 유효 블록을 선택한다. 다음 최소 유효 블록이 SLC 모드에 있는 경우, 다음 최소 유효 블록을 선택한다. 이러한 방식으로, 가비지 컬렉션을 위한 블록을 선택하는 효율적인 방법이 수행될 수 있다.
도 6a는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 예시한다. 도 6a는 7 개의 메모리 블록(664-0 내지 664-6)에서 SLC 모드로 저장되는 데이터 유닛 (예를 들어, 데이터 비트) "1" 내지 "18"의 예이다. 예를 들어, 데이터 유닛 "1" 내지 "3"은 0번째 블록 (664-0)에 저장되고, 데이터 유닛 "4" 내지 "6"은 제 1 블록 (664-0)에 저장되고, 데이터 유닛 "7" 내지 "9"는 제 2 블록 (664-2)에 저장되고, 데이터 유닛 "10" 내지 "12"은 제 3 블록 (664-3)에 저장되고, 데이터 유닛 "13" 내지 "15"는 제 4 블록 (664-4)에 저장되고, 데이터 유닛 "16"내지 "18"은 제 5 블록 (664-5)에 저장되고, 제 6 블록 (664-6)은 비어있고 기록될 준비가 되어 있다. 그러나, 추가 블록에 기록하기 위해, 일부 예들에서, 메모리 시스템 (예를 들어, 메모리 시스템(204))은 추가 블록에 기록하기 위해 적어도 하나의 블록이 비어 있고 기록될 수 있어야 할 필요가 있다. 예를 들어, 도 6a에서, 제 6 블록 (664-6)에 기록하기 위해, 제 6 블록 (664-6) 에 추가하여 추가 메모리 블록이 기록 가능해야 한다.
도 6b는 본 개시의 다수의 실시예에 따라 여러 데이터 부분을 저장하는 메모리의 다이어그램을 예시한다. 도 6b는 호스트에 의해 기록될 추가 블록을 비우기 위해 수행되는 제 1 가비지 컬렉션의 예이다. 가비지 컬렉션이 수행될 때, SLC 모드로 저장된 데이터는 XLC 모드로 저장된 데이터가 있는 곳으로 전송될 수 있다. 도 6b에 도시된 바와 같이, 데이터 유닛 "1" 내지 "9"는 SLC 모드로 제 0 (664-0) 내지 제 2 블록(664-2)에 저장된 것으로부터 XLC 모드로 제 6 블록(664-6)에 저장된 것으로 가비지 컬렉션된다.
예시적인 목적으로, 도 6a 내지도 6j 모두에 대해, 3 개의 정사각형을 갖는 메모리 블록은 예컨대, 열(666-0 내지 666-2)의 메모리 셀이 0번째 블록 (664-0)에 있고 SLC 모드에 있는 도 6b에 도시된 것과 같이 SLC 모드에 있는 3 개의 메모리 셀을 예시한다. 도 6b에 도시된 바와 같이, 9 개의 정사각형을 갖는 메모리 블록은 각각 3 개의 데이터 유닛 (상위 페이지, 중간 페이지 및 하위 페이지)을 포함하는 XLC 모드에 3개의 메모리 셀들을 예시하고 예컨대, 도 6b에서 제 6 블록 (664-6)은 데이터 유닛 위치 (666-0)와 관련된 상위 페이지 데이터 유닛, 데이터 유닛 위치 (666-1)와 관련된 중간 페이지 데이터 유닛, 및 데이터 유닛 위치 (666-2)와 관련된 하위 페이지 데이터 유닛을 포함한다. 또한, 데이터 유닛 위치(666-3 내지 666-5)는 제 2 메모리 셀과 관련되고 데이터 유닛 위치(666-6 내지 666-8)는 제 3 메모리 셀과 관련된다. 데이터 유닛 "1" 내지 "9"는 제 6 블록 (664-6)에 저장되도록 가비지 컬렉션되므로, 0 내지 2 블록 (664-0 내지 664-2)에 이전에 저장된 데이터 유닛 "1" 내지 "9"는 유효하지 않고 덮어 쓰여진 것으로 표시된다 (취소선으로 표시됨).
도 6c는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 예시한다. 도 6c는 제 0 블록 (664-0) 및 제 1 블록 (664-1)에 기록되는 추가 데이터 유닛 "19" 내지 "24"의 예이다. 이것은 제 2 블록 (664-2)만을 기록될 빈 블록으로 남겨두기 때문에, 호스트에 의해 기록될 추가 블록을 비우기 위해 제 2 가비지 컬렉션이 수행될 수 있다. 가비지 컬렉션이 수행될 때, 제 3 블록 (664-3) 내지 제 5 블록 (664-5)에 SLC 모드로 저장된 데이터 유닛 "10" 내지 "18"은 제 2 블록(664-2)에 XLC 모드로 저장된 데이터가 있는 곳으로 전송될 수 있다. 이전에 저장된 데이터 유닛 “10” 내지“18”은 유효하지 않고 덮어 쓰여진 것으로 표시될 수 있다 (취소선으로 표시됨).
도 6d는 본 개시의 다수의 실시예들에 따른 데이터의 다양한 부분들을 저장하는 메모리의 다이어그램을 예시한다. 도 6d는 SLC 모드로 호스트에 의해 제 3 블록 (664-3) 및 제 4 블록 (664-4)에 기록되는 추가 데이터 유닛 "25" 내지 "30"의 예이다. 이것은 제 5 블록 (664-5)만을 기록될 빈 블록으로 남겨두기 때문에, 호스트에 의해 추가 블록이 기록될 수 있도록 제 3 가비지 컬렉션이 수행될 수 있다. 가비지 컬렉션이 수행될 때, 제 0 블록 (664-0), 제 1 블록 (664-1) 및 제 3 블록 (664-3)에서 SLC 모드로 저장된 데이터 유닛 "19" 내지 "27"(최근에 기록된 데이터 유닛 25 "내지 "27 "포함)은 제 5 블록 (664-5)에서 XLC 모드로 저장된 데이터가 있는 곳으로 전송 될 수 있다. 이전에 저장된 데이터 유닛 “19” 내지 “27”은 유효하지 않고 덮어 쓰여진 것으로 표시될 수 있다 (취소선으로 표시됨).
도 6e는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 예시한다. 도 6e는 SLC 모드에서 호스트에 의해 제 0 블록 (664-0) 및 제 1 블록 (664-1)에 기록되는 추가 데이터 유닛 "31" 내지 "36"의 예이다. 이것은 제 3 블록 (664-3)만을 기록될 빈 블록으로 남겨두기 때문에, 호스트에 의해 기록될 추가 블록을 빈 블록으로 남겨 두기 위해 제 4 가비지 컬렉션이 수행될 수 있다. 도 6f는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 예시한다. 도 6f는 제 3 블록 (664-3)에서 XLC 모드로 저장된 데이터가 있는 곳으로 전송될 수 있는 제 4 블록 (664-4), 0번째 블록 (664-0) 및 제 1 블록 (664-1)에서 SLC 모드로 저장된 데이터 유닛 "28"내지 "36"(최근에 기록된 데이터 유닛 "31" 내지 "36" 포함)에 수행될 제 4 가비지 컬렉션의 예이다. 이전에 저장된 데이터 유닛 " 28 " 내지 " 36 "은 유효하지 않고 덮어 쓰여진 것으로 표시될 수 잇다(취소선으로 표시됨).
도 6g는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 예시한다. 도 6g는 SLC 모드에서 호스트에 의해 제 4 블록 (664-4) 및 제 0 블록 (664-0)에 각각 기록되는 추가 데이터 유닛 "37" 내지 "42"의 예이다. 이것은 단지 제 1 블록(664-1) 만을 기록될 빈 블록으로 남겨둔다. 도 6h는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 예시한다. 도 6h는 호스트에 의해 기록될 추가 블록 (예를 들어, 제 0 및 4번째 블록 (664-0 및 664-4))을 비우기 위해 수행될 수 있는 제 5 가비지 컬렉션의 예이다. 가비지 컬렉션이 수행될 때, 제 4 블록 (664-4) 및 제 0 블록 (664-0)에서 SLC 모드로 저장된 데이터 유닛 "37" 내지 "42"는 제 1 블록(664-1)에 XLC 모드로 저장된 데이터가 있는 곳으로 전송될 수 있다. 제 4 및 제 0 블록 (664-0 및 664-4)에 이전에 저장된 데이터 유닛 "37" 내지 "42"는 유효하지 않고 덮어 쓰여진 것으로 표시될 수 있다 (취소선으로 표시됨).
도 6i는 본 개시의 다수의 실시예에 따른 데이터의 다양한 부분을 저장하는 메모리의 다이어그램을 예시한다. 도 6i는 SLC 모드에서 호스트에 의해 제 4 블록(664-4)에 기록되는 추가 데이터 유닛 "42" 내지 "45"의 예이다. 제 6 가비지 컬렉션이 끝나면, 메모리 블록에 저장하기 위해 호스트가 보낸 45 개의 모든 데이터 유닛이 메모리 시스템을 기록 방지 모드로 보내지 않고 7 개의 메모리 블록에 저장되었다. 이것은 제 0 블록(664-0) 만을 기록될 빈 블록으로 남겨두기 때문에, 도 6j와 관련하여 설명되는 바와 같이, 호스트에 의해 기록될 추가 블록을 비우기 위해 제 6 가비지 컬렉션이 수행될 수 있다.
도 6j는 본 개시의 다수의 실시예들에 따른 데이터의 다양한 부분들을 저장하는 메모리의 다이어그램을 예시한다. 도 6j에 도시 된 바와 같이, 제 6 가비지 컬렉션은 제 4 블록 (664-4)의 SLC 모드에 저장된 데이터 유닛 "43" 내지 "45"를 열(666-6, 666-7 및 666-8)과 관련된 제 1 블록 (664-1)의 XLC 모드로 저장되도록 전송하는 단계를 포함한다. 이전에 저장된 데이터 유닛 " 43 " 내지 " 45 "는 유효하지 않고 덮어 쓰여 진 것으로 표시될 수 있다 (취소선으로 표시됨). 도 6j에 도시된 바와 같이, 또한, 제 6 가비지 컬렉션에 이어서, 새로 기록된 데이터 유닛 "1", "2” 및 "3"은 0번째 블록 (664-0)에 SLC 모드로 기록될 수 있다. 이것은 기록될 빈 블록으로서 0번째 블록(664-0) 만을 남기므로, 도 6k와 관련하여 설명된 바와 같이, 호스트에 의해 기록될 추가 블록을 비우기 위해 제 6 가비지 컬렉션이 수행될 수 있다.
도 6k는 본 개시의 다수의 실시예에 따른 다양한 부분의 데이터를 저장하는 메모리의 다이어그램을 예시한다. 도 6k에 도시된 바와 같이, 제 7 가비지 컬렉션은 0번째 블록 (664-0)에서 SLC 모드로 저장되는 데이터 유닛 "1" 내지 "3"을 제 4 블록 (664-4)에서 SLC 모드로 저장되는 곳으로 전송하는 단계를 포함한다. 이전에 저장된 데이터 유닛 "1" 내지 "3"은 유효하지 않고 덮어 쓰여진 것으로 표시될 수 있다 (제 0 블록 (664-0)에서 취소선으로 표시됨).
도 6l은 본 개시의 다수의 실시예들에 따른 데이터의 다양한 부분들을 저장하는 메모리의 다이어그램을 예시한다. 도 6l에 도시된 바와 같이, 새롭게 기록된 데이터 유닛 "4" 내지 "6"은 제 0 블록(664-0)에 기록된다. 제 6 블록 (664-6)에 이전에 기록된 데이터 유닛 "4" 내지 "6"은 이제 유효하지 않고 덮여쓰여진다 (취소선으로 표시됨). 이것은 빈 블록 및 부분적으로 유효하지 않은 제 6 블록(664-6)을 남기지 않으므로 가비지 컬렉션이 수행될 수 있다. 그러나, 제 0 블록(664-0) 또는 제 6 블록(664-6)의 가비지 컬렉션 여부 가 결정된다. 제 6 블록 (664-6)이 오래된 데이터이므로, 일부 이전의 접근법들은 가비지 컬렉션을 위해 제 6 블록 (664-6)을 선택할 수 있다. 이러한 이전의 접근 방식은 이미 최근에 가비지 컬렉션된 데이터를 가비지 컬렉션할 수 있다. 순차적인 데이터 패턴의 경우, 최근에 이 가비지 컬렉션된 데이터를 가비지 컬렉션하는 것은 시스템 성능을 저하시킬 수 있다. 이는 호스트 데이터가 XLC 블록으로 가비지 컬렉션되고 자동으로 덮어 쓰지만 덮여 쓰기 직전에 가비지 컬렉션되기 때문일 수 있다. 예를 들어, 가까운 장래에 다시 가비지 컬렉션될 수 있는 XLC 블록에 저장된 가비지 컬렉션 FOLD 데이터는 시스템 성능을 저하시킬 수 있다. 이것은 가까운 미래에 다시 가비지 컬렉션될 가능성을 줄이기 위해 가능한 경우 XLC 블록이 아닌 SLC 블록인 가비지 컬렉션을 위한 소스 블록을 선택함으로써 피할 수 있다.
본 출원의 설명에 따라, 가비지 컬렉션을 위해 XLC 블록에 비해 SLC 블록을 선택하는 것이 가능할 때, 최소 유효 (“LV") 블록 (이 예에서 제 6 블록(664-6)이 SLC 모드 또는 TLC 모드에 있는지 여부에 기초하여 결정이 이루어질 수 있다. LV 블록이 SLC 모드에 있으면 최소 유효 블록이 가비지 컬렉션된다. 그러나, LV 블록(664-6)이 TLC 모드에 있다면, 다음 LV 블록 (이 예에서, 제 0 블록(664-0))이 SLC 모드에 있는지 또는 TLC 모드에 있는지의 결정이 수행된다. LV 블록(664-6)이 TLC 모드에 있고 다음 LV 블록(664-0)이 SLC 모드에 있기 때문에, 다음 LV 블록(664-0)이 가비지 컬렉션을 위해 선택된다. 도 7은 본 개시의 많은 실시예들에 따른 메모리 관리를 위한 예시적인 흐름도(707)를 예시한다. 흐름도(707)는 블록들 내의 유효 데이터 량에 의해 메모리 블록들을 소팅하는 단계(790)를 포함할 수 있다. 예를 들어, 데이터가 호스트로부터 메모리 블록에 기록될 때, 복수의 혼합 모드 메모리 블록 각각에 대해 유효하지 않은 (예를 들어, 중복의) 데이터의 양이 표시될 수 있다. 중복이 많은 (따라서 더 유효하지 않은) 데이터로 충전된 블록은 중복이 적은 (따라서 덜 유효하지 않고, 더 유효한) 데이터가 있는 블록과 대조하여 소팅될 수 있다.
(791)에서, 다음 블록은 다음 블록의 모드 (예를 들어, SLC 모드 또는 X LC 모드)의 결정에 기초하여 가비지 컬렉션을 위해 선택될 수 있다. 다음 블록은 다음의 최대 유효하지 않은 데이터의 양을 갖는 블록을 지칭할 수 있다. (792)에서, 최소 유효 (“LV") 블록이 SLC 모드에 있는지 여부의 결정이 수행될 수 있다. 최소 유효 블록이 SLC 모드에 있는 경우, 최소 유효 블록은 가비지 컬렉션될 다음 블록으로 선택된다. (793)에서, 최소 유효 블록이 X LC 모드에 있는지 여부의 결정이 수행될 수 있다. 최소 유효 블록이 XLC 모드에 있는 경우, 다음 최소 유효 ("LV") 블록이 체크된다. (794)에서, 다음 최소 유효 블록이 XLC 모드에 있는 것에 응답하여, 최소 유효 블록이 가비지 컬렉션을 위해 선택된다. (795)에서, 다음 최소 유효 블록이 SLC 모드에 있는 것에 응답하여, 다음 최소 유효 블록이 가비지 컬렉션을 위해 선택된다. 이러한 방식으로 가비지 컬렉션을 위해 메모리 블록을 선택하여 자원 처리 속도를 낮추거나 자원 사용량을 줄이지 않고도 추가 메모리 공간을 가장 효율적으로 제공할 수 있다.
특정 실시예들이 본 출원에 예시되고 설명되었지만, 당업자는 동일한 결과를 달성하도록 계산된 배열이 도시된 특정 실시예들을 대체할 수 있음을 이해할 것이다. 본 개시는 본 개시의 다수의 실시예들의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것으로 이해되어야 한다. 상기 실시예들과 본 출원에서 구체적으로 설명되지 않은 다른 실시예들의 조합은 상기 설명을 검토할 때 당업자에게 명백할 것이다. 본 개시의 다수의 실시예의 범위는 상기 구조 및 방법이 사용되는 다른 애플리케이션들을 포함한다. 그러므로, 본 개시의 다수의 실시예들의 범위는 첨부된 청구 범위를 참조하여 이러한 청구 범위가 부여하는 전체 범위의 등가물과 함께 결정되어야 한다.
전술한 상세한 설명에서, 일부 피처들은 본 개시를 간소화하기 위해 단일 실시예에서 함께 그룹화된다. 이 개시 방법은 본 개시의 개시된 실시예가 각 청구 범위에 명시적으로 지칭된 것보다 더 많은 피처를 사용해야 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 이하의 청구 범위가 반영하는 바와 같이, 본 개시의 주제는 단일의 개시된 실시예의 모든 피처보다 적다. 따라서, 이하의 청구 범위는 상세한 설명에 포함되며, 각 청구 범위는 그 자체가 별도의 실시예로서 있다.

Claims (23)

  1. 장치에 있어서,
    복수의 혼합 모드 블록을 포함하는 메모리;
    제어기로서,
    단일 레벨 셀 (SLC) 모드에서 순차적 호스트 데이터의 제 1 부분을 상기 메모리의 복수의 혼합 모드 블록에 기록하고; 및
    XLC 모드에서 순차적 호스트 데이터의 제 2 부분을 상기 복수의 혼합 모드 블록에 기록하도록 구성된, 상기 제어기를 포함하고,
    상기 순차적 호스트 데이터의 제 2 부분을 기록하는 단계는 상기 순차적 호스트 데이터의 제 2 부분을 상기 복수의 혼합 모드 블록에 기록하는 것과 관련하여 기록된 블록의 수량보다 많은 블록을 프리 블록 풀(free block pool)에 추가하는 것을 포함하는 가비지 컬렉션 동작(garbage collection operation)을 수행하는 단계를 포함하는, 장치.
  2. 제 1 항에 있어서, 상기 가비지 컬렉션 동작을 수행하도록 구성된 상기 제어기는 상기 복수의 혼합 모드 블록 중 적어도 절반이 논리적으로 순차적인 것으로 귀결되는 가비지 컬렉션 동작을 수행하도록 구성된 제어기를 포함하는, 장치.
  3. 제 1 항 내지 제 2 항 중 어느 한 항에 있어서, 상기 제어기는 상기 복수의 혼합 모드 블록 중 제 2 블록에 저장된 제 2 데이터 세트 및 상기 복수의 혼합 모드 블록 중 제 1 블록에 저장된 제 1 데이터 세트를 가비지 컬렉션하고, 상기 제 1 세트 및 상기 제 2 세트를 상기 제 1 블록에 기록함으로써 상기 순차적 호스트 데이터의 상기 제 1 부분을 가비지 컬렉션하도록 구성된, 장치.
  4. 제 3 항에 있어서, 상기 제 1 데이터 세트 및 상기 제 2 데이터 세트는 서로에 대해 논리적으로 순차적인 관계인, 장치.
  5. 제 3 항에 있어서, 상기 제어기는 또한 호스트 데이터의 제 3 세트를 상기 제 1 블록에 기록하도록 구성되고, 상기 제 1 블록은 상기 제 1 세트, 상기 제 2 세트 및 상기 제 3 세트를 저장하는, 장치.
  6. 제 5 항에 있어서, 상기 제 3 세트는 상기 제 1 세트 및 상기 제 2 세트와 관련하여 논리적으로 순차적이지 않은, 장치.
  7. 제 6 항에 있어서, 상기 제 1 세트, 상기 제 2 세트 및 상기 제 3 세트를 저장하는 상기 제 1 블록은 논리적으로 단편화된(fragmented) 블록인, 장치.
  8. 제 5 항에 있어서, 상기 제어기는 상기 제 2 블록에 호스트 데이터의 제 4 세트를 기록하도록 더 구성된, 장치.
  9. 제 8 항에 있어서, 상기 제 4 세트를 저장하는 상기 제 2 블록은 논리적으로 순차적인, 장치.
  10. 제 8 항에 있어서, 상기 제 4 세트는 3 개의 데이터 유닛을 포함하고, 상기 3 개의 데이터 유닛은 서로에 대해 논리적으로 순차적인 관계인, 장치.
  11. 방법에 있어서,
    단일 레벨 셀 (SLC) 모드에서 호스트 데이터의 제 1 부분을 메모리의 복수의 혼합 모드 블록에 기록하는 단계;
    잉여 레벨 셀(XLC : Extra Level Cell) 모드의 복수의 혼합 모드 블록에 호스트 데이터의 제 2 부분을 기록하는 단계를 포함하고,
    상기 호스트 데이터의 제 2 부분을 기록하는 단계는 상기 제 1 부분의 적어도 2 개의 데이터 유닛을 상기 제 2 부분의 적어도 하나의 데이터 유닛과 동일한 블록으로 폴딩(fold)하는 단계를 포함하는 가비지 컬렉션 동작을 수행하는 단계를 포함하는, 방법.
  12. 제 11 항에 있어서, XLC 모드에서 호스트 데이터의 제 3 부분을 상기 제 1 부분의 상기 적어도 2 개의 데이터 유닛 중 하나를 미리 저장한 블록에 기록하는 단계를 포함하는, 방법.
  13. 제 11 항에 있어서, 상기 데이터의 제 2 부분을 기록하는 단계는 비어있는 임계 수의 블록에 응답하여, XLC 모드의 상기 제 1 블록에 저장될 SLC 모드로 저장된 제 1 블록 및 제 2 블록을 가비지 컬렉션하는 단계를 포함하는, 방법.
  14. 제 13 항에 있어서, 상기 제 2 부분의 데이터를 기록하는 단계는 호스트 데이터를 상기 제 2 블록에 기록하는 단계를 포함하고, 상기 가비지 컬렉션 동작은 상기 임계 수의 비어있는 블록이 있을 때 상기 호스트 데이터가 발송된 것에 응답하여 트리거링되는, 방법.
  15. 장치에 있어서,
    복수의 혼합 모드 블록을 포함하는 메모리;
    제어기로서,
    단일 레벨 셀 (SLC) 모드로 순차적 호스트 데이터를 메모리의 복수의 혼합 모드 블록에 기록하고; 및
    상기 복수의 혼합 모드 블록 중 적어도 하나에 저장된 순차적인 호스트 데이터의 데이터 부분에 대해 가비지 컬렉션 동작을 수행하고, 유효한 데이터를 저장하는 상기 복수의 혼합 모드 블록의 임계량에 응답하여 XLC 모드로 데이터의 부분을 저장하도록 구성된, 상기 제어기를 포함하는, 장치.
  16. 제 15 항에 있어서, 상기 제어기는 상기 복수의 혼합 모드 블록들 각각에서 유효 데이터 량의 결정에 기초하여 상기 데이터 부분에 대해 가비지 컬렉션 동작이 수행되어야 한다고 결정하도록 구성되는, 장치.
  17. 제 15 항에 있어서, 상기 제어기는 특정 블록이 SLC 모드 블록인지의 결정에 기초하여 상기 순차적인 호스트 데이터 중 어떤 데이터 세트를 상기 가비지 컬렉션 동작을 수행할 것인지를 결정하도록 구성된, 장치.
  18. 제 17 항에 있어서, 상기 제어기는 상기 특정 블록이 XLC 모드 블록에 있다는 결정에 응답하여, 다음 최대 유효하지 않은 데이터의 양을 갖는 다음 최소 유효 블록이 XLC 모드 블록인지를 결정하도록 구성된, 장치.
  19. 제 18 항에 있어서, 상기 제어기는
    다음 최소 유효 블록이 XLC 모드 블록이라는 결정에 응답하여, 상기 가비지 컬렉션을 수행할 특정 블록을 선택하고; 및
    다음 최소 유효 블록이 SLC 모드 블록이라는 결정에 응답하여, 상기 가비지 컬렉션이 수행될 다음 최소 유효 블록을 선택하도록 구성된, 장치.
  20. 방법에 있어서,
    단일 레벨 셀 (SLC) 모드에서 순차적 호스트 데이터를 메모리의 복수의 혼합 모드 블록에 기록하는 단계;
    임계량에 도달하도록 기록될 수 있는 복수의 혼합 모드 블록의 블록 수량에 응답하여, 복수의 혼합 모드 블록 중 적어도 하나에 대해 상기 가비지 컬렉션 동작을 수행하는 단계를 포함하고,
    상기 복수의 혼합 모드 블록들 중 적어도 하나는 상기 복수의 혼합 모드 블록들 각각과 관련된 유효 데이터 량에 기초하여 가비지 컬렉션 동작을 수행하도록 선택되는, 방법.
  21. 제 20 항에 있어서, 상기 복수의 혼합 모드 블록들 중 적어도 하나는 상기 복수의 혼합 모드 블록들 중 적어도 하나가 SLC 모드에 있는지 여부에 기초하여 선택되는, 방법.
  22. 제 20 항 내지 제 21 항 중 어느 한 항에 있어서, 상기 복수의 혼합 모드 블록 중 적어도 하나는 가장 높은 유효하지 않은 데이터의 양을 갖는 블록이 XLC 모드 블록인지에 응답하여, 다음 가장 높은 유효하지 않은 데이터 블록이 SLC 모드 블록인지 여부를 결정하는 것에 기초하여 선택되는, 방법.
  23. 제 22 항에 있어서,
    다음 가장 높은 유효하지 않은 데이터 블록이 XLC 모드에 있다는 것에 응답하여 가장 높은 수량의 유효하지 않은 데이터 블록이 선택되고; 및
    다음 가장 높은 유효하지 않은 데이터 블록이 SLC 모드 블록인 것에 응답하여 다음 가장 높은 유효하지 않은 데이터 블록이 선택되는, 방법.
KR1020197032553A 2017-04-04 2018-03-16 가비지 컬렉션 KR102382887B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/478,631 2017-04-04
US15/478,631 US10380018B2 (en) 2017-04-04 2017-04-04 Garbage collection
PCT/US2018/022804 WO2018187016A1 (en) 2017-04-04 2018-03-16 Garbage collection

Publications (2)

Publication Number Publication Date
KR20190127980A true KR20190127980A (ko) 2019-11-13
KR102382887B1 KR102382887B1 (ko) 2022-04-06

Family

ID=63671799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197032553A KR102382887B1 (ko) 2017-04-04 2018-03-16 가비지 컬렉션

Country Status (6)

Country Link
US (3) US10380018B2 (ko)
EP (1) EP3607449B1 (ko)
KR (1) KR102382887B1 (ko)
CN (1) CN110603531B (ko)
TW (1) TWI676132B (ko)
WO (1) WO2018187016A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526439B2 (en) 2020-05-22 2022-12-13 SK Hynix Inc. Storage device and operating method thereof

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180165037A1 (en) * 2015-04-23 2018-06-14 Hewlett Packard Enterprise Development Lp Storage Reclamation in a Thin Provisioned Storage Device
US11043271B2 (en) * 2017-11-29 2021-06-22 Western Digital Technologies, Inc. Reusing a cell block for hybrid dual write
KR20190091035A (ko) * 2018-01-26 2019-08-05 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10733114B2 (en) * 2018-08-28 2020-08-04 International Business Machines Corporation Data cache performance
WO2020087211A1 (en) * 2018-10-29 2020-05-07 Micron Technology, Inc. Slc cache allocation
KR102593541B1 (ko) * 2018-11-29 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN111562880A (zh) * 2019-02-14 2020-08-21 英韧科技(上海)有限公司 一种数据存储装置、系统及数据写入方法
JP7401193B2 (ja) * 2019-04-17 2023-12-19 キヤノン株式会社 情報処理装置及びその制御方法並びにプログラム
CN112100087B (zh) 2019-06-17 2024-04-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112099985B (zh) 2019-06-17 2023-09-12 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112130749B (zh) * 2019-06-25 2023-12-22 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112130750B (zh) 2019-06-25 2023-11-07 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
TWI688956B (zh) * 2019-08-28 2020-03-21 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN112445418B (zh) * 2019-09-05 2023-02-24 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
CN111177021A (zh) * 2019-12-04 2020-05-19 东信和平科技股份有限公司 Java卡碎片管理方法及其存储装置
US11640262B2 (en) * 2020-05-07 2023-05-02 Micron Technology, Inc. Implementing variable number of bits per cell on storage devices
JP2022030146A (ja) 2020-08-06 2022-02-18 キオクシア株式会社 メモリシステムおよび書き込み制御方法
US11354052B2 (en) * 2020-08-25 2022-06-07 Micron Technology, Inc. Memory sub-system media management operation threshold
US11467763B2 (en) * 2021-01-20 2022-10-11 Micron Technology, Inc. Valid data aware media reliability scanning for memory sub-blocks
US11599286B2 (en) * 2021-06-03 2023-03-07 Micron Technology, Inc. Data age and validity-based memory management
US11520510B1 (en) 2021-07-21 2022-12-06 International Business Machines Corporation Extending the lifespan of a flash-based storage device
US11593032B1 (en) * 2021-08-06 2023-02-28 Micron Technology, Inc. Memory sub-system data migration
US11875061B2 (en) * 2022-04-22 2024-01-16 Micron Technology, Inc. Enhanced write performance utilizing program interleave
US11960722B2 (en) * 2022-07-25 2024-04-16 Micron Technology, Inc. Memory device programming technique for increased bits per cell

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120005415A1 (en) * 2010-07-02 2012-01-05 Samsung Electronics Co., Ltd. Memory system selecting write mode of data block and data write method thereof
WO2012158521A1 (en) * 2011-05-17 2012-11-22 Sandisk Technologies Inc. Non-volatile memory and method having block management with hot/cold data sorting
WO2013101573A1 (en) * 2011-12-29 2013-07-04 Sandisk Technologies Inc. Slc-mlc wear balancing
US20130282955A1 (en) * 2012-04-19 2013-10-24 Liam M. Parker System and method for limiting fragmentation
US20140003142A1 (en) * 2012-06-29 2014-01-02 Samsung Electronics Co., Ltd. Nonvolatile memory device performing garbage collection
KR20140040137A (ko) * 2011-05-17 2014-04-02 샌디스크 테크놀로지스, 인코포레이티드 활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법
US20150085572A1 (en) * 2012-04-09 2015-03-26 Sk Hynix Memory Solutions Inc. Storage of read thresholds for nand flash storage using linear approximation
US20160098213A1 (en) * 2014-10-03 2016-04-07 International Business Machines Corporation Hybrid storage system employing reconfigurable memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
KR100877104B1 (ko) 2007-06-26 2009-01-07 주식회사 하이닉스반도체 멀티 레벨 셀 플래시 메모리소자의 프로그램 방법
CN101266828B (zh) * 2008-03-25 2010-12-01 祥硕科技股份有限公司 混合型闪存存储装置及其操作方法
US8639877B2 (en) 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
US9195588B2 (en) 2010-11-02 2015-11-24 Hewlett-Packard Development Company, L.P. Solid-state disk (SSD) management
US8832506B2 (en) 2012-01-20 2014-09-09 International Business Machines Corporation Bit error rate based wear leveling for solid state drive memory
US9146851B2 (en) 2012-03-26 2015-09-29 Compellent Technologies Single-level cell and multi-level cell hybrid solid state drive
US8886877B1 (en) * 2014-05-15 2014-11-11 Sandisk Technologies Inc. In-situ block folding for nonvolatile memory
US10359933B2 (en) * 2016-09-19 2019-07-23 Micron Technology, Inc. Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods
US10452282B2 (en) * 2017-04-07 2019-10-22 Micron Technology, Inc. Memory management
US10956317B2 (en) * 2019-02-11 2021-03-23 International Business Machines Corporation Garbage collection in non-volatile memory that fully programs dependent layers in a target block

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120005415A1 (en) * 2010-07-02 2012-01-05 Samsung Electronics Co., Ltd. Memory system selecting write mode of data block and data write method thereof
WO2012158521A1 (en) * 2011-05-17 2012-11-22 Sandisk Technologies Inc. Non-volatile memory and method having block management with hot/cold data sorting
KR20140035916A (ko) * 2011-05-17 2014-03-24 샌디스크 테크놀로지스, 인코포레이티드 핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법
KR20140040137A (ko) * 2011-05-17 2014-04-02 샌디스크 테크놀로지스, 인코포레이티드 활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법
WO2013101573A1 (en) * 2011-12-29 2013-07-04 Sandisk Technologies Inc. Slc-mlc wear balancing
US20150085572A1 (en) * 2012-04-09 2015-03-26 Sk Hynix Memory Solutions Inc. Storage of read thresholds for nand flash storage using linear approximation
US20130282955A1 (en) * 2012-04-19 2013-10-24 Liam M. Parker System and method for limiting fragmentation
US20140003142A1 (en) * 2012-06-29 2014-01-02 Samsung Electronics Co., Ltd. Nonvolatile memory device performing garbage collection
US20160098213A1 (en) * 2014-10-03 2016-04-07 International Business Machines Corporation Hybrid storage system employing reconfigurable memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526439B2 (en) 2020-05-22 2022-12-13 SK Hynix Inc. Storage device and operating method thereof

Also Published As

Publication number Publication date
TW201842444A (zh) 2018-12-01
EP3607449A1 (en) 2020-02-12
EP3607449A4 (en) 2020-12-16
US11416391B2 (en) 2022-08-16
KR102382887B1 (ko) 2022-04-06
TWI676132B (zh) 2019-11-01
CN110603531A (zh) 2019-12-20
US20190272098A1 (en) 2019-09-05
US10949344B2 (en) 2021-03-16
US20180285258A1 (en) 2018-10-04
US20210133099A1 (en) 2021-05-06
WO2018187016A1 (en) 2018-10-11
EP3607449B1 (en) 2022-06-29
CN110603531B (zh) 2022-10-04
US10380018B2 (en) 2019-08-13

Similar Documents

Publication Publication Date Title
KR102382887B1 (ko) 가비지 컬렉션
US11586357B2 (en) Memory management
JP5823875B2 (ja) 固体メモリフォーマッティング
US8001317B2 (en) Data writing method for non-volatile memory and controller using the same
US20140013030A1 (en) Memory storage device, memory controller thereof, and method for writing data thereof
US9037781B2 (en) Method for managing buffer memory, memory controllor, and memory storage device
CN114730290A (zh) 将变化日志表移动至与分区对准
CN110119326B (zh) 数据存储装置及其操作方法
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
CN115114178A (zh) 存储器系统及其操作方法
US10585795B2 (en) Data relocation in memory having two portions of data
US20210406169A1 (en) Self-adaptive wear leveling method and algorithm
CN116737059A (zh) 快闪存储器控制器的控制方法、快闪存储器控制器以及电子装置
CN113391760A (zh) 分区存储中的快照管理

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