KR20220049027A - 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행 - Google Patents

가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행 Download PDF

Info

Publication number
KR20220049027A
KR20220049027A KR1020227008808A KR20227008808A KR20220049027A KR 20220049027 A KR20220049027 A KR 20220049027A KR 1020227008808 A KR1020227008808 A KR 1020227008808A KR 20227008808 A KR20227008808 A KR 20227008808A KR 20220049027 A KR20220049027 A KR 20220049027A
Authority
KR
South Korea
Prior art keywords
data
memory
data block
error
controller
Prior art date
Application number
KR1020227008808A
Other languages
English (en)
Inventor
토모코 오구라 이와사키
아바니 에프. 트리베디
젠민 황
아파르나 유. 리마예
트레이시 디. 에반스
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20220049027A publication Critical patent/KR20220049027A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, 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/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/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

솔리드 스테이트 드라이브와 같은 메모리 또는 저장 시스템 또는 서브 시스템의 "가비지 수집"을 포함하여, 매체 관리와 관련된 시스템, 장치 및 방법이 설명되어 있다. 예를 들어, 유효한 데이터를 제1 데이터 블록에서 제2 데이터 블록으로 마이그레이션하라는 컨트롤러로부터의 요청을 나타내는 시그널링이 수신될 수 있다. 예를 들어, 제1 데이터 블록은 단일 레벨 셀(SLC) 메모리로 구성된 복수의 메모리 셀들의 데이터 블록일 수 있다. 제2 데이터 블록은 다중 레벨 셀(MLC) 메모리로 구성될 수 있다. 데이터 마이그레이션 동작은 메모리 컴포넌트를 사용하여 수행되는 에러 제어 동작을 포함할 수 있으며, 에러 제어 동작은 데이터를 컨트롤러로 전송하는 것을 제외한다. 데이터는 메모리 컴포넌트를 사용하여 에러 제어 동작이 수행된 후 데이터를 SLC 메모리로 구성된 제1 데이터 블록으로부터 MLC 메모리로 마이그레이션될 수 있다.

Description

가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행
본 개시의 실시예들은 일반적으로 메모리 서브 시스템에 관한 것으로, 보다 구체적으로는, 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행에 관한 것이다.
메모리 서브 시스템은 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD)와 같은 저장 시스템일 수 있다. 메모리 서브 시스템은 DIMM(dual in-line memory Module), SO-DIMM(small outline DIMM), 또는 NVDIMM(non-volatile dual in-line memory module)과 같은 메모리 모듈일 수 있다. 메모리 서브 시스템은 데이터를 저장하는 하나 이상의 메모리 컴포넌트들을 포함할 수 있다. 메모리 컴포넌트들은, 예를 들어, 비휘발성 메모리 컴포넌트들 및 휘발성 메모리 컴포넌트들일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브 시스템을 사용하여 메모리 컴포넌트들에 데이터를 저장하고 메모리 컴포넌트들로부터 데이터를 검색할 수 있다.
본 개시는 이하의 상세한 설명 및 본 개시의 다양한 실시예들의 첨부 도면들로부터 보다 완전하게 이해될 것이다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 환경을 예시한다.
도 2는 본 개시의 일부 실시예들에 따른 메모리 컴포넌트에 대한 에러 제어 동작 수행의 일 예를 예시한다.
도 3은 본 개시의 일부 실시예들에 따른, 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작을 수행하기 위한 예시적인 방법의 흐름도이다.
도 4는 본 개시의 일부 실시예들에 따른, SLC 메모리로부터 MLC 메모리로 데이터를 마이그레이션하는 동안 에러 제어를 수행하는 것을 포함하는 예시적인 방법의 흐름도이다.
도 5는 본 개시의 실시예들이 동작될 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태들은 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 또는 에러 코드 정정을 수행하는 것에 관한 것이다. 메모리 서브 시스템은 이하에서 "메모리 장치"로도 지칭된다. 메모리 서브 시스템의 일 예로는 주변 기기 상호접속부(예를 들어, 입력/출력 버스, 저장 영역 네트워크)를 통해 중앙 처리 장치(CPU)에 결합되는 저장 장치가 있다. 저장 장치들의 예들은 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브 및 하드 디스크 드라이브(HDD)를 포함한다. 메모리 서브 시스템의 다른 예로는 메모리 버스를 통해 CPU에 결합되는 메모리 모듈이 있다. 메모리 모듈들의 예들은 DIMM(Dual In-line Memory Module), SO-DIMM(Small Outline DIMM), NVDIMM(Non-Volatile Dual In-line Memory Module) 등을 포함한다. 일부 실시예들에서, 메모리 서브 시스템은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 컴포넌트들을 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있으며 검색될 데이터를 메모리 서브 시스템에 요청할 수 있다.
호스트 시스템이 데이터 저장을 요청할 때, 데이터는 메모리 컴포넌트 내의 물리적 어드레스에 저장된다. 호스트 시스템은 저장될 데이터를 식별하는 논리적 어드레스를 제공한다. 각 논리적 어드레스에 대응되는 데이터가 있는 물리적 위치를 식별하기 위해 논리적 대 물리적(L2P) 매핑 테이블이 유지된다. 메모리 서브 시스템의 메모리 컴포넌트는 호스트 시스템으로부터 수신된 데이터에 대응되는 1비트 이상의 이진 데이터를 저장하기 위한 하나 이상의 메모리 페이지들(본원에서 "페이지"로도 지칭됨)을 포함할 수 있다. 메모리 컴포넌트의 하나 이상의 메모리 페이지들은 함께 그룹화되어 데이터 블록을 형성할 수 있다. 데이터가 메모리 컴포넌트에 기입될 때, 일반적으로 전체 페이지 또는 여러 페이지들이 단일 동작으로 기입되도록 페이지 레벨에서 수행된다. 호스트 시스템이 특정 논리적 어드레스의 데이터를 업데이트하도록 요청할 때, 업데이트된 데이터가 새로운 물리적 위치(예를 들어, 새로운 물리적 어드레스)에 저장되고, L2P 매핑은 데이터의 특정 논리적 어드레스가 새로운 물리적 어드레스에 매핑되도록 업데이트된다. 원본 데이터(예를 들어, 업데이트 전 데이터)는 여전히 원래의 물리적 어드레스에 저장된 상태로 유지된다. 그러나, 이 데이터는 호스트의 관점에서 더 이상 유효하지 않으며, 호스트에 의해 더 이상 사용될 수 없다. 데이터의 다양한 변경으로 인해, 메모리 컴포넌트는 유효한 데이터가 있는 물리적 어드레스들을 갖는 것 외에도, 유효하지 않은 데이터가 있는 다양한 데이터 블록들에 걸쳐 물리적 어드레스들을 축적한다. 메모리 컴포넌트에 저장된 유효하지 않은 데이터는 "가비지"로 간주되며, 어느 시점에서 삭제될 수 있다.
메모리 컴포넌트가 가득 차서 추가 기입 동작들에서 데이터를 수용할 수 있는 용량이 충분하지 않은 경우, 공간을 확보하기 위해 특정 데이터가 소거될 수 있다. 그러나, 데이터가 메모리 컴포넌트로부터 소거될 때, 일반적으로 전체 블록(다수의 페이지들을 포함함)이 단일 동작으로 소거되도록 블록 레벨에서 수행된다. 따라서, 메모리 컴포넌트의 특정 데이터 세그먼트가 업데이트되면, 블록의 특정 페이지들은 다른 위치에 다시 기입되고/되거나 더 이상 필요하지 않은 데이터를 가질 것이다. 각 블록은 유효한 데이터의 페이지들이 몇 개 있을 수 있으므로 전체 블록은 간단히 소거될 수는 없다. 유효한 데이터를 포함하는 블록의 이러한 페이지들을 다른 블록으로 마이그레이션(예를 들어, 다시 기입)하는 것을 포함하는 가비지 수집 프로세스가 수행되어 유효 데이터와 유효하지 않은 데이터 둘 다 있는 현재 블록이 소거될 수 있다. 가비지 수집은 가비지 또는 (예를 들어, 새 값으로 업데이트되었기 때문에) 더 이상 사용되지 않는 오래된(stale) 데이터 객체들이 차지하는 메모리를 회수하려고 시도하는 자동 메모리 관리의 한 형태이다. 가비지 수집의 기본 원칙은 추후에 액세스될 수 없거나 액세스될 필요가 없는 데이터 객체들을 찾고, 이러한 객체들에 의해 사용된 리소스들(즉, 저장 공간)을 회수하는 것이다.
메모리 서브 시스템은 호스트 시스템으로부터의 데이터를 저장할 수 있는 다수의 메모리 컴포넌트들을 포함할 수 있다. 메모리 컴포넌트의 데이터 블록들은 다수의 메모리 셀들로 형성된다. 메모리 셀들 각각은 호스트 시스템으로부터 수신되는 1비트 이상의 이진 데이터를 저장할 수 있다. 데이터 밀도는 메모리 컴포넌트의 메모리 셀당 저장될 수 있는 데이터의 양(예를 들어, 데이터 비트)에 대응한다. 일 예에서, 메모리 시스템의 블록은 SLC 메모리의 각 메모리 셀이 단일 비트의 데이터로 프로그래밍될 수 있는 단일 레벨 셀(single-level-cell; SLC) 메모리로 구성될 수 있다. SLC 메모리에 1비트의 데이터를 저장할 때, 메모리 셀의 가능한 전압 레벨의 범위는 두 가지 범위로 나뉜다. 예를 들어, 두 범위는 논리 데이터 값 "1"에 대응하는 제1 임계 전압 범위 및 논리 데이터 값 "0"에 대응하는 제2 임계 전압 범위를 포함할 수 있다.
메모리 시스템의 다른 데이터 블록들은 메모리 셀당 2비트, 메모리 셀당 3비트, 메모리 셀당 4비트 또는 메모리 셀당 그 이상을 저장하여 프로그래밍되는 다중 레벨 셀(multi-level cell; MLC) 메모리와 같은 고밀도 메모리로 구성될 수 있다. 데이터는 메모리 셀들에 대한 몇 가지 별개의 임계 전압 범위들로 나뉜 총 전압 범위를 기반으로 MLC 메모리에 저장될 수 있다. 각 별개의 임계 전압 범위는 메모리 셀에 저장된 데이터에 대한 미리 결정된 값에 해당한다. 예를 들어, 일부 MLC 셀들은 2비트의 데이터를 저장할 수 있고, 트리플 레벨 셀(triple-level cell; TLC) 메모리라고 하는 다른 셀들은 3비트의 데이터를 저장할 수 있으며, 쿼드 레벨 셀(quad-level cell; QLC) 메모리라고 하는 또 다른 셀들은 4비트의 데이터를 저장할 수 있다. 본원에 사용된 바와 같이, "다중 레벨 셀 메모리"라는 용어는 셀당 1비트 이상의 데이터를 저장하도록 구성된 임의의 메모리를 포함할 수 있다.
SLC 메모리는 용량이 작고 밀도가 낮음에도 불구하고, MLC/TLC/QLC 메모리에 비해 우수한 성능과 안정성을 포함한 많은 이점이 있다. SLC 메모리의 판독 시간 및 프로그램(예를 들어, 기입) 시간은 MLC 메모리보다 빠르다. 호스트 시스템은 호스트 시스템으로부터의 데이터가 SLC 메모리에 기입되면 그 성능에 있어 더 적은 레이턴시를 경험할 수 있다. 따라서, 특정 기존 시스템들은 메모리의 고정된 부분을 SLC 메모리(즉, SLC 캐시)로 구성한다. 이러한 시스템들은 처음에 호스트 시스템으로부터 수신된 임의의 메모리 기입 명령들과 관련된 모든 데이터를 SLC 메모리로 구성된 데이터 블록들에 기입하고 나중에 해당 데이터를 MLC/TLC/QLC 메모리로 마이그레이션함으로써 동작한다.
메모리 서브 시스템의 한 위치로부터 호스트와의 직접적인 상호 작용과 무관한 다른 위치로의 내부 데이터 마이그레이션은 "폴딩(folding)" 또는 "데이터 압축(data compaction)"으로 알려져 있다. 일반적으로, 폴딩은 새로운 기입, 에러 방지, 웨어 레벨링(wear leveling)(예를 들어, 자주 판독되는 데이터를 다른 물리적 위치들로 이동시켜 빈번한 판독 동작으로 인한 물리적 매체에 대한 손상을 방지하기 위한 프로세스)을 위해 더 많은 공간을 확보하는 등, 유효한 데이터를 함께 패킹(pack)(예를 들어, 가비지 수집)하기 위해 수행된다. SLC 메모리로부터 MLC 메모리로 데이터를 폴딩하는 것은 데이터를 한 과립(granulation)(예를 들어, 셀당 1비트)에서 다른 과립(예를 들어, 셀당 다수의 비트)으로 이동하는 것을 포함한다. 예를 들어, SLC 메모리로부터 TLC 메모리로 데이터를 폴딩하는 것은 3개의 SLC 메모리 셀들로부터 하나의 TLC 메모리 셀로 데이터를 맞추는 것(fitting)을 포함한다.
데이터 마이그레이션(예를 들어, 폴딩) 동작 동안, 메모리 서브 시스템은 마이그레이션될 데이터에 대한 에러 제어("EC") 동작을 구현할 수 있으며, 이는 업계에서 에러 코드 정정 또는 ECC로도 알려져 있다. 에러 제어 동작은 데이터에 대한 에러 검출 및/또는 에러 정정 동작들을 포함할 수 있다. 예를 들어, 마이그레이션될 데이터에 대한 에러 검출 동작은 저장된 데이터와 판독된 데이터 사이에 에러 또는 불일치가 있는지 여부를 검출할 수 있\다. 예를 들어, 에러 정정 동작은 다양한 전압 임계치들을 사용하여 하나 이상의 판독 재시도를 수행하는 것과 같은 다양한 데이터 정정 단계들을 수행하여 에러를 정정할 수 있다.
종래의 메모리 서브 시스템은 메모리 컴포넌트와 별개인 메모리 서브 시스템의 컨트롤러를 사용하여 폴딩될 데이터에 대한 에러 제어 동작을 수행하는 것을 포함할 수 있다. 메모리 셀들이 높은 데이터 밀도를 가질 때, 해당 메모리 셀들에 있는 데이터를 정정하기 위해 정교한 에러 제어 기능들이 필요하며, 컨트롤러는 필요한 기능들을 제공할 수 있다. 컨트롤러는 일반적으로 데이터 I/O(입력/출력) 버스를 통해 메모리 컴포넌트들에 결합된다. 일 예에서, 컨트롤러를 사용하여 EC를 수행하는 것은 메모리 컴포넌트로부터 데이터를 판독하고, 데이터 버스를 사용하여 데이터를 컨트롤러로 전송하고, 컨트롤러를 사용하여 EC 동작을 수행하고, 데이터 버스가 사용될 수 있을 때까지 대기하고, 수정된 데이터를 메모리 컴포넌트로 다시 전송하는 것을 포함한다. 데이터가 SLC로부터 TLC 메모리로 마이그레이션되는 예에서, 3개의 SLC 페이지들이 에러 제어를 위해 버스를 사용하여 판독되고 컨트롤러로 전송되며, 이는 각 SLC 페이지가 버스를 사용하여 컨트롤러로 또는 컨트롤러로부터 전송되므로, 버스가 사용될 수 있을 때까지 다른 SLC 페이지들에 대한 대기 시간이 있음을 의미한다. 따라서, 컨트롤러에서 EC를 수행하려면 상당한 시간과 전력 사용량이 수반된다. 추가로, 버스가 컨트롤러에서 EC 동작을 위해 데이터를 전송하는 데 사용중인 동안, 호스트 명령들에도 버스 대기의 결과로서 레이턴시를 겪는다. 데이터 버스가 자주 사용되는 동안에도 지연 패널티가 발생된다.
본 개시의 양태들은 SLC 메모리로부터 MLC 메모리로 데이터를 폴딩하고 컨트롤러에 데이터를 전송하지 않고 메모리 컴포넌트에서 에러 제어 동작을 수행하는 것을 포함하는 메모리 서브 시스템을 가짐으로써 상기 및 기타 결점들을 해결한다. 데이터가 MLC 메모리에 있을 때와 달리, 마이그레이션될 데이터가 SLC 메모리에 있을 때 메모리 컴포넌트에서 에러 제어 동작이 실행될 수 있다. SLC 메모리의 경우, 데이터 밀도가 더 낮고, 판독 창 마진(즉, 두 전압 임계값 분포 사이의 간격)이 MLC 메모리보다 더 넓다. 이와 같이, EC 동작은 MLC 메모리의 데이터보다 SLC 메모리의 데이터에 대해 더 간단하다. 데이터 에러에 대한 기대도 MLC 메모리보다 SLC 메모리에서 더 낮다. 따라서, 메모리 컴포넌트 자체의 펌웨어는 메모리 컴포넌트 외부의 컨트롤러를 사용할 필요없이 SLC 메모리의 데이터에 대해 EC 동작을 수행할 수 있는 기능을 가지고 있다.
일 실시예에서, 메모리 서브 시스템의 컨트롤러는 데이터 블록이 SLC 메모리로 구성된 메모리 서브 시스템의 메모리 컴포넌트의 데이터 블록에 대한 가비지 수집 동작을 시작한다. 가비지 수집이 시작된 후, 메모리 컴포넌트의 펌웨어는 SLC 메모리로 구성된 데이터 블록으로부터 MLC 메모리로 구성된 데이터 블록으로 데이터를 마이그레이션(예를 들어, 폴드)하라는 요청을 수신한다. 마이그레이션될 데이터가 SLC 메모리에 있으므로, 데이터에 대한 에러 제어 동작을 수행하기 위해 데이터를 다시 컨트롤러로 전송하는 대신, 메모리 컴포넌트 자체의 펌웨어가 에러 제어 동작(예를 들어, 에러 검출 동작 및/또는 에러 정정 동작)을 수행할 수 있다. 에러 제어 동작이 완료되면, 펌웨어는 데이터를 MLC 메모리로 구성된 데이터 블록으로 마이그레이션할 수 있다.
종래 기술에 비해 본 개시의 이점은, 이에 제한되는 것은 아니나, 메모리 서브 시스템의 전반적으로 증가된 성능 및 효율성을 포함한다. 온-칩 에러 제어 동작(예를 들어, 메모리 컴포넌트를 사용하여 수행되는 에러 제어)의 결과로, 가비지 수집 및 폴딩 동작들이 보다 효율적으로 수행될 수 있다. I/O 버스 가용성을 기다리는 것은 물론, 데이터 판독을 수행하고 이를 컨트롤러로 그리고 다시 메모리 컴포넌트로 이동시키는 데 상당한 전력 소비와 시간을 없앤다. I/O 버스도 다른 동작들 및 호스트 명령을 위해 확보된다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 환경(100)을 예시한다. 메모리 서브 시스템(110)은 메모리 컴포넌트들(112A 내지 112N)과 같은 매체들을 포함할 수 있다. 메모리 컴포넌트들(112A 내지 112N)은 휘발성 메모리 컴포넌트들, 비휘발성 메모리 컴포넌트들 또는 이들의 조합일 수 있다. 일부 실시예들에서, 메모리 서브 시스템은 저장 시스템이다. 저장 시스템의 예로는 SSD가 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 컴퓨팅 환경(100)은 메모리 서브 시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 데이터를 메모리 서브 시스템(110)에 기입하고 메모리 서브 시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 장치(120)는 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 장치, 또는 메모리와 처리 장치를 포함하는 이러한 컴퓨팅 장치와 같은 컴퓨팅 장치일 수 있다. 호스트 시스템(120)은 호스트 시스템(120)이 메모리 서브 시스템(110)로부터 데이터를 판독하거나 이에 데이터를 기입할 수 있도록 메모리 서브 시스템(110)을 포함하거나 이에 결합될 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 본원에 사용된 바와 같이, "~에 결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 중간 컴포넌트들이 없는) 직접 통신 연결일 수 있는, 컴포넌트들 사이의 연결을 지칭한다. 물리적 호스트 인터페이스의 예들은, 이에 제한되는 것은 아니나, 직렬 고급 기술 결합(SATA) 인터페이스, 주변 컴포넌트 상호접속 익스프레스(PCIe) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 광섬유 채널, 직렬 결합된 SCSI(SAS) 등을 포함한다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합되는 경우 NVM 익스프레스(NVMe) 인터페이스를 추가로 이용하여 메모리 컴포넌트들(112A 내지 112N)에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 기타 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 컴포넌트들(112A 내지 112N)은 상이한 유형의 비휘발성 메모리 컴포넌트들 및/또는 휘발성 메모리 컴포넌트들의 임의의 조합을 포함할 수 있다. 비휘발성 메모리 컴포넌트들의 일 예는 네거티브-앤드(NAND)형 플래시 메모리를 포함한다. 메모리 컴포넌트들(112A 내지 112N) 각각은 단일 레벨 셀(SLC)들 또는 다중 레벨 셀(MLC)들(예를 들어, 트리플 레벨 셀(TLC)들 또는 쿼드 레벨 셀(QLC)들)과 같은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 일부 실시예들에서, 특정 메모리 컴포넌트는 메모리 셀들의 SLC 부분 및 MLC 부분 둘 다를 포함할 수 있다. 메모리 셀들 각각은 호스트 시스템(120)에 의해 사용된 1비트 이상의 데이터(예를 들어, 데이터 블록들)을 저장할 수 있다. NAND형 플래시 메모리와 같은 비휘발성 메모리 컴포넌트들이 설명되어 있지만, 메모리 컴포넌트들(112A 내지 112N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 실시예들에서, 메모리 컴포넌트들(112A 내지 112N)은, 이에 제한되는 것은 아니나, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), 네거티브-오어(NOR) 플래시 메모리, 전기 소거 가능한 프로그래밍 가능 읽기 전용 메모리(EEPROM) 및 비휘발성 메모리 셀들의 크로스포인트 어레이일 수 있다. 비휘발성 메모리의 크로스포인트 어레이는 적층 가능한 크로스 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 크로스포인트 비휘발성 메모리는 라이트 인 플레이스(write in-place) 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 게다가, 메모리 컴포넌트들(112A 내지 112N)의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 컴포넌트의 단위를 지칭할 수 있는 메모리 페이지들 또는 데이터 블록들로 그룹화될 수 있다.
메모리 시스템 컨트롤러(115)(이하 "컨트롤러"라 함)는 메모리 컴포넌트들(112A 내지 112N)에서 데이터를 판독하거나, 데이터를 기입하거나 데이터를 소거하는 것과 같은 동작들 및 다른 이러한 동작들을 수행하기 위해 메모리 컴포넌트들(112A 내지 112N)과 통신할 수 있다. 컨트롤러(115)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(115)는, 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(FPGA), 주문형 반도체(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다. 컨트롤러(115)는 로컬 메모리(119)에 저장된 인스트럭션들을 실행하도록 구성된 프로세서(처리 장치)(117)를 포함할 수 있다. 예시된 예에서, 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 로직 흐름들 및 루틴들을 수행하기 위한 인스트럭션들을 저장하도록 구성된 임베디드 메모리를 포함한다. 일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터, 페치 데이터(fetched data) 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 읽기 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브 시스템(110)은 컨트롤러(115)를 포함하는 것으로 예시되어 있지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(110)은 컨트롤러(115)를 포함하지 않을 수 있으며, 대신 (예를 들어, 외부 호스트에 의해 또는 메모리 서브 시스템으로부터 분리된 프로세서나 컨트롤러에 의해 제공된) 외부 제어에 의존할 수 있다.
일반적으로, 컨트롤러(115)는 호스트 시스템(120)으로부터 명령들 또는 동작들을 수신할 수 있으며, 메모리 컴포넌트들(112A 내지 112N)에 대한 원하는 액세스를 달성하기 위해 명령들 또는 동작들을 인스트럭션들 또는 적절한 명령들로 변환할 수 있다. 컨트롤러(115)는 웨어 레벨링(wear leveling) 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들 및 메모리 컴포넌트들(112A 내지 112N)과 관련되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환들과 같은 기타 동작들을 담당할 수 있다. 컨트롤러(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 컴포넌트들(112A 내지 112N)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 뿐만 아니라, 호스트 시스템으로부터 수신된 명령들을 메모리 컴포넌트들(112A 내지 112N)에 액세스하기 위한 명령 인스트럭션들로 변환할 수 있다.
메모리 서브 시스템(110)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 캐시나 버퍼(예를 들어, DRAM) 및 컨트롤러(115)로부터 어드레스를 수신하고 메모리 컴포넌트들(112A 내지 112N)에 액세스하기 위해 어드레스를 디코딩할 수 있는 어드레스 회로부(예를 들어, 행 디코더 또는 열 디코더)를 포함할 수 있다.
메모리 서브 시스템(110)은 가비지 수집을 위한 메모리 컴포넌트를 사용하여 에러 제어 동작을 수행하는 데 사용될 수 있는 에러 제어 컴포넌트(113)를 포함한다. 일부 실시예들에서, 에러 제어 컴포넌트(113)는 메모리 컴포넌트들(112A 내지 112N) 각각의 일부일 수 있다. 예를 들어, 메모리 컴포넌트(112A)는 본원에 설명된 동작들을 수행하기 위해 메모리 컴포넌트(112A)에 저장된 인스트럭션들을 실행하도록 구성된 처리 장치(예를 들어, 펌웨어)를 포함할 수 있다. 대안으로, 동작들(예를 들어, 에러 검출 및 에러 정정)은 메모리 서브 시스템(110)의 컨트롤러(115)와 메모리 서브 시스템(110)의 개별 메모리 컴포넌트들(112A 내지 112N) 사이에서 분할될 수 있다. 예를 들어, 컨트롤러(115)는 본원에 설명된 동작들 중 일부를 수행하기 위해 로컬 메모리(119)에 저장된 인스트럭션들을 실행하도록 구성된 프로세서(117)(처리 장치)를 포함할 수 있다. 일부 실시예들에서, 에러 제어 컴포넌트(113)는 호스트 시스템(120), 애플리케이션, 또는 운영 체제의 일부이다.
에러 제어 컴포넌트(113)는 SLC 메모리로 구성된 메모리 컴포넌트(112A)의 데이터 블록으로부터 MLC 메모리로 구성된 데이터 블록으로 데이터를 마이그레이션하라는 요청을 수신할 수 있다. MLC 메모리로 구성된 데이터 블록은 메모리 컴포넌트들(112A 내지 112N) 중 어느 하나의 일부일 수 있다. 에러 제어 컴포넌트(113)는 데이터에 대한 에러 제어 동작을 수행할 수 있으며, 메모리 컴포넌트의 펌웨어는 에러 제어 동작을 수행하기 위해 데이터를 다시 컨트롤러(115)로 전송하는 대신 에러 제어 동작(예를 들어, 에러 검출 동작 및/또는 에러 정정 동작)을 수행한다. 에러 제어 동작이 완료되면, 에러 제어 컴포넌트(113)는 데이터를 MLC 메모리로 구성된 데이터 블록으로 마이그레이션할 수 있다. 특성 컴포넌트(113)의 동작들에 관한 추가 세부사항은 아래에서 설명된다.
도 2는 본 개시의 일부 실시예들에 따른 메모리 컴포넌트(112)에 대한 에러 제어 동작 수행의 일 예를 예시한다. 예에 도시된 바와 같이, 메모리 컴포넌트(112)는 다수의 메모리 셀들(예를 들어, C1 내지 Cn)을 포함할 수 있다. 메모리 셀들 각각은 호스트 시스템(120)으로부터 수신된 데이터에 대응되는 1비트 이상의 이진 데이터를 저장할 수 있다. 메모리 컴포넌트(112)의 개별 데이터 블록들(230)(예를 들어, B1, B2, B3 내지 Bn)은 메모리 셀들을 함께 그룹화함으로써 형성될 수 있다. 특정 데이터 블록들은 SLC 메모리(예를 들어, B1)로 구성될 수 있으며, 여기서 SLC 메모리의 각 메모리 셀(예를 들어, C1, C2, C3, C4)은 단일 비트의 데이터로 프로그래밍된다. 다른 데이터 블록들은 MLC 메모리(예를 들어, B2)로 구성되며, 여기서 MLC 메모리의 각 메모리 셀(예를 들어, C5, C6, C7, C8)은 메모리 셀당 2비트, 메모리 셀당 3비트, 메모리 셀당 4비트 또는 메모리 셀당 그 이상의 비트를 저장함으로써 프로그래밍된다. 일 구현에서, 메모리 컴포넌트(112)는 다수의 개별 데이터 블록들(230)을 포함하는 단일 메모리 다이이다. 메모리 컴포넌트(112)는 도 2에 도시된 바와 같이 동일한 메모리 컴포넌트 내의 메모리 셀들의 SLC 부분 및 MLC 부분 둘 다를 포함한다. 다른 구현에서, 메모리 컴포넌트(112)는 다수의 메모리 다이를 포함한다. 각 메모리 다이는 메모리 다이당 한 유형의 메모리 부분(예를 들어, SLC만, MLC만)을 포함할 수 있다.
이 예에서, 도 1의 메모리 서브 시스템(110)의 컨트롤러(115)는 메모리 컴포넌트(112)에 대한 가비지 수집 동작(210)을 개시한다. 컨트롤러(115)는 가비지 수집 동작을 개시하는 것이 적절한 때를 결정할 수 있다. 일 실시예에서, 가비지 수집 동작(210)은 메모리 서브 시스템(110)에 대한 정규 메모리 관리 동작들의 일부로서 주기적으로 시작된다. 다른 실시예에서, 가비지 수집 프로세스는 (예를 들어, 호스트 시스템(120)으로부터) 기입 요청을 수신하고 메모리 컴포넌트(112)(예를 들어, 도 1의 112A 내지 112N)가 기입 요청을 수락하기에 불충분한 용량을 갖는다는 결정과 같은 특정 이벤트에 응답하여 시작된다. 예를 들어, 컨트롤러(115)는 메모리 컴포넌트(112)가 가득 차고/차거나 호스트(120)로부터의 추가 기입 동작들을 수락하기에 용량이 충분하지 않으며 메모리 컴포넌트(112)의 공간을 확보하기 위해 가비지 수집이 수행될 필요가 있다고 결정할 수 있다. 일부 예들에서, 컨트롤러(115)는 메모리 서브 시스템(110) 또는 메모리 서브 시스템(110) 내의 특정 컴포넌트들이 유휴 상태에 있거나 다운타임을 겪고 있다고 결정할 수 있다. 적절한 시간의 결정에 기초하여, 컨트롤러(115)는 특정 블록들로부터 유효하지 않은 데이터를 소거하기 위해 가비지 수집 동작을 시작할 수 있다.
가비지 수집 동작(210)을 시작하는 것에 응답하여, 컨트롤러는 가비지 수집 동작(210)을 수행할 메모리 컴포넌트(112)의 데이터 블록을 결정할 수 있다. 컨트롤러(115)는 가비지 수집 동작(210)을 시작하기 위해 SLC 메모리로서 구성된 데이터 블록(B1)을 선택할 수 있다. 예를 들어, 데이터 블록(B1)의 일부 메모리 셀들(예를 들어, C1, C3 및 C4)은 유효하지 않은 데이터를 포함하고 데이터 블록(B1)의 일부 메모리 셀들(예를 들어, C2)은 유효한 데이터를 포함한다. 컨트롤러(115)는 데이터 블록(B1)에서 소거 동작을 수행하기 위해 데이터(예를 들어, 유효 데이터)를 메모리 셀(C2)로부터 다른 데이터 블록(예를 들어, B2)으로 마이그레이션하기 위해 메모리 컴포넌트(112)(예를 들어, 메모리 컴포넌트 내의 펌웨어)에 요청을 보낼 수 있다. 마이그레이션은 블록(B1)의 셀(C2)에 있는 데이터를 판독하고 데이터를 다른 데이터 블록(예를 들어, B2)의 다른 셀(예를 들어, 셀(C6))에 기입함으로써 수행될 수 있다. 마이그레이션이 완료된 후, 블록(B1)의 데이터는 소거될 수 있으며, B1의 메모리 공간은 호스트(120)로부터 수신될 새로운 데이터를 저장하기 위해 회수될 수 있다. 데이터 마이그레이션 동작은 셀(C2)의 데이터에 대해 수행될 에러 제어 동작을 포함할 수 있다.
컨트롤러(115)가 SLC 메모리로 구성된 데이터 블록을 선택하면, 데이터를 데이터 버스를 통해 컨트롤러(115)로 전송하지 않고 에러 제어 동작이 수행될 수 있다. 메모리 컴포넌트(112)의 메모리 셀들에 결합된 처리 장치는 펌웨어를 실행하여 데이터를 SLC 메모리로서 구성된 블록(B1)으로부터 MLC 메모리로서 구성된 블록(B2)으로 마이그레이션하라는 요청을 수신할 수 있다. SLC 메모리에 있는 데이터에 기초하여, 처리 장치는 메모리 컴포넌트(112) 내에 상주하는 에러 제어 컴포넌트(113)에 의해 에러 제어 동작이 수행될 수 있다고 결정한다. 펌웨어는 에러 제어 컴포넌트(113)에 인스트럭션을 전송하여 셀(C2)의 데이터(예를 들어, 데이터(201))에 대한 에러 제어 동작을 수행한다. 에러 제어 컴포넌트(113)는 데이터(201)에 대한 에러 제어 동작(220)을 수행한다. 펌웨어는 에러 제어 동작이 메모리 컴포넌트(112) 내에 상주하는 에러 제어 컴포넌트(113)에 의해 수행되기 때문에, 에러 제어 동작(210)을 수행하기 위해 데이터 버스를 통해 컨트롤러(115)로 데이터(201)를 보내는 것을 배제하는 알고리즘을 포함한다. 일부 예들에서, 펌웨어는 에러 제어 동작(210)의 서브셋을 수행하기 위해 컨트롤러(115)에 데이터(201)를 전송하는 것을 배제하는 알고리즘을 포함한다. 일부 예들에서, 에러 제어 동작은 추가 처리를 위해 컨트롤러에 데이터를 전송하기 전에 수행될 수 있다.
일 실시예에서, 에러 제어 동작(220)은 데이터(201)와 관련된 에러를 검출하기 위한 에러 검출 동작을 포함한다. 일부 실시예들에서, 에러 제어 동작은 에러 검출 동작에 기초하여 검출된 에러를 정정하기 위한 에러 정정 동작을 더 포함할 수 있다. 다른 실시예들에서, 에러 검출 동작에 기초하여 데이터(201)와 관련된 에러를 검출 시, 처리 장치는 에러를 정정하기 위해 데이터를 컨트롤러(115)에 전달할 수 있다. 컨트롤러(115)는 검출된 에러를 정정하기 위해 에러 정정 동작을 수행할 수 있다. 그런 다음, 처리 장치는 컨트롤러(115)로부터 정정된 데이터를 수신할 수 있다.
에러 제어 동작이 완료되면, 펌웨어는 데이터를 MLC 메모리로 구성된 데이터 블록으로 이동시킬 수 있다. 데이터 마이그레이션은 데이터(201)(또는 데이터(201)의 정정된 버전)를 MLC 메모리의 데이터 블록(B2)의 메모리 셀에 기입함으로써 완료될 수 있다. 일부 예들에서, 데이터 블록(B2)은 SLC 메모리로 구성된 데이터 블록(B1)과 동일한 메모리 컴포넌트(112)의 일부이다. 다른 예들에서, 데이터 블록(B2)은 SLC 메모리로서 구성된 데이터 블록(B1)을 포함하는 메모리 컴포넌트(112)와 상이한 다른 메모리 컴포넌트의 일부일 수 있다. 데이터의 마이그레이션이 완료된 후, 데이터 블록(B1)으로부터의 기존 데이터가 소거될 수 있다.
도 3은 본 개시의 일부 실시예들에 따른, 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작을 수행하기 위한 예시적인 방법(300)의 흐름도이다. 방법(300)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 인스트럭션들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(300) 또는 방법(300)의 특정 동작들은 도 1의 에러 제어 컴포넌트(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예시로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
동작(310)에서, 처리 로직은 SLC 메모리로 구성된 블록으로부터 MLC 메모리로 구성된 블록으로 데이터를 마이그레이션하라는 요청을 컨트롤러(115)로부터 수신한다. SLC 메모리로서 구성된 데이터 블록은 메모리 컴포넌트(112A)의 하나 이상의 메모리 페이지들의 그룹화를 포함할 수 있다. 일 예에서, MLC 메모리로서 구성된 데이터 블록은 메모리 컴포넌트(112A)의 하나 이상의 메모리 페이지들의 그룹화를 포함할 수 있다. 다른 예에서, MLC 메모리로서 구성된 데이터 블록은 메모리 컴포넌트(112N)의 하나 이상의 메모리 페이지들의 그룹화를 포함할 수 있다. 일 예에서, 컨트롤러(115)는 메모리 컴포넌트(112A 및 112N)의 외부에 상주한다.
동작(320)에서, 처리 로직은 데이터를 컨트롤러(115)에 전달하지 않고 데이터에 대한 에러 제어 동작을 수행한다. 예를 들어, 에러 제어 동작은 에러 검출 코드 및/또는 에러 정정 코드를 포함할 수 있다. 일부 예들에서, 에러 검출 및/또는 에러 정정 코드들은 패리티 비트, 해시, 해밍(Hamming) 코드, BCH(Bose-Chaudhuri-Hocquenghem) 또는 기타 유사한 순환 코드를 포함할 수 있다. 이러한 코드는 일반적으로 작은 영역을 차지하지만 검출 및/또는 정정 기능이 제한될 수 있으므로 MLC/TLC/QLC보다 SLC에 더 적합할 수 있다. 일 예에서, 에러 제어 컴포넌트(113)는 동작(320)을 수행한다. 일 예에서, 메모리 컴포넌트(112A) 내의 펌웨어는 에러 제어 동작을 수행하기 위한 에러 제어 컴포넌트(113)를 포함할 수 있다. 에러 제어 동작을 수행하기 위해 컨트롤러(115)에 데이터를 전송하는 단계들을 제외함으로써, 에러 제어 동작이 메모리 컴포넌트(112A) 내의 펌웨어에 의해 전적으로 수행될 수 있다. 이는 데이터를 판독하고 컨트롤러(115)로 전송하기 위한 시간 및 전력 사용량, 데이터 버스의 가용성을 위한 대기 시간, 및 컨트롤러(115)로부터 메모리 컴포넌트(112)로 데이터를 다시 전송하기 위한 시간 및 전력 사용량을 제거할 수 있다.
일 실시예에서, 에러 제어 동작은 데이터와 관련된 에러를 검출하기 위한 에러 검출 동작을 포함할 수 있다. 일부 실시예들에서, 에러 제어 동작은 에러 검출 동작에 기초하여 검출된 에러를 정정하기 위한 에러 정정 동작을 포함할 수 있다. 다른 실시예들에서, 에러 검출 동작에 기초하여 데이터와 관련된 에러를 검출 시, 처리 로직은 에러를 정정하기 위해 데이터를 컨트롤러(115)에 전달할 수 있다. 컨트롤러(115)는 검출된 에러를 정정하기 위해 에러 정정 동작을 수행할 수 있다. 그런 다음, 처리 로직은 컨트롤러(115)로부터 정정된 데이터를 수신할 수 있다.
동작(330)에서, 처리 로직은 SLC 메모리로 구성된 블록으로부터 MLC 메모리로 구성된 블록으로 데이터를 마이그레이션한다. 일 예에서, 데이터를 마이그레이션하는 것은 SLC 메모리로 구성된 블록에 저장된 데이터를 판독하고 데이터를 MLC 메모리로 구성된 블록에 기입하는 것을 포함할 수 있다.
일 실시예에서, 데이터는 컨트롤러(115)에 의해 인코딩/디코딩되는 종래의 에러 제어 컴포넌트 외에, 가볍고 간단한 온-칩 에러 제어 컴포넌트(113)에 의해 디코딩된다. 일부 예에서, 컨트롤러(115)의 에러 제어 컴포넌트는 TLC 메모리와 같은 더 높은 에러율과 관련된 데이터에 사용될 수 있는 반면, 온-칩 에러 제어 컴포넌트(113)는 SLC 메모리와 관련된 동작들과 같은 기타 간단한 에러 제어 동작들을 위한 추가 기능들을 제공하는 데 사용될 수 있다. 일부 예들에서, 온-칩 에러 제어 컴포넌트는 컨트롤러(115)의 에러 제어 컴포넌트를 사용하여 에러 제어 동작을 수행하기 위해 일부 데이터를 컨트롤러(115)로 전송하기 전에 메모리 컴포넌트 내에서 에러 제어 동작을 수행할 수 있다.
도 4는 본 개시의 일부 실시예들에 따른, SLC 메모리로부터 MLC 메모리로 데이터를 마이그레이션하는 동안 에러 제어를 수행하는 예시적인 방법(400)의 흐름도이다. 방법(400)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 인스트럭션들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(400) 또는 방법(400)의 특정 동작들은 도 1의 컨트롤러(115)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예시로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
동작(410)에서, 처리 로직은 메모리 컴포넌트(112A)에 대한 가비지 수집 동작을 시작한다. 일부 실시예에서, 컨트롤러(115)는 동작(410)을 수행한다. 컨트롤러(115)는 가비지 수집 동작을 시작하는 것이 적절한 때를 결정할 수 있다. 일부 예들에서, 컨트롤러(115)는 메모리 컴포넌트(112A)가 가득 차고/차거나 호스트(120)로부터의 추가 기입 동작들을 수락하기에 용량이 충분하지 않으며 메모리 컴포넌트(112A)의 공간을 확보하기 위해 가비지 수집이 수행될 필요가 있다고 결정할 수 있다. 일부 예들에서, 컨트롤러(115)는 메모리 서브 시스템(110) 또는 메모리 서브 시스템(110) 내의 특정 컴포넌트들이 유휴 상태에 있거나 다운타임을 겪고 있다고 결정할 수 있다. 적절한 시간의 결정에 기초하여, 컨트롤러(115)는 특정 블록들로부터 유효하지 않은 데이터를 소거하기 위해 가비지 수집 동작을 시작할 수 있다. 컨트롤러는 가비지 수집 동작을 수행할 메모리 컴포넌트(112A)의 데이터 블록을 결정할 수 있다. 일 예에서, 컨트롤러(115)는 가비지 수집 동작을 시작하기 위해 SLC 메모리로서 구성된 데이터 블록을 선택할 수 있다.
동작(420)에서, 처리 로직은 SLC 메모리로 구성된 블록으로부터 MLC 메모리로 구성된 블록으로 데이터를 마이그레이션하라는 요청을 전송한다. 일부 실시예에서, 컨트롤러(115)는 동작(420)을 수행한다. 가비지 수집 동작을 시작하는 것에 응답하여, 컨트롤러(115)는 가비지 수집 동작을 수행하기 위해 식별된 데이터 블록으로부터 데이터를 마이그레이션하라는 요청을 보낼 수 있다. 컨트롤러(115)는 가비지 수집 동작의 일부로서, 데이터를 마이그레이션할 SLC 메모리로서 구성된 제1 데이터 블록을 선택할 수 있다. 컨트롤러(115)는 데이터를 마이그레이션할 MLC 메모리로 구성된 제2 데이터 블록을 선택할 수 있다. SLC 메모리로서 구성된 제1 데이터 블록은 메모리 컴포넌트(112A)의 하나 이상의 메모리 페이지들의 그룹화를 포함할 수 있다. 일 예에서, MLC 메모리로서 구성된 데이터 블록은 메모리 컴포넌트(112A)의 하나 이상의 메모리 페이지들의 그룹화를 포함할 수 있다. 다른 예에서, MLC 메모리로서 구성된 데이터 블록은 메모리 컴포넌트(112N)의 하나 이상의 메모리 페이지들의 그룹화를 포함할 수 있다. 일 예에서, 컨트롤러(115)는 메모리 컴포넌트(112A 및 112N)의 외부에 상주한다.
동작(430)에서, 처리 로직은 데이터 블록으로부터의 데이터가 마이그레이션되었다는 확인을 수신하고, 여기서 메모리 컴포넌트 내의 처리 장치는 에러 제어 동작을 수행하기 위해 컨트롤러에 데이터를 전송하지 않고 데이터에 대한 에러 제어 동작을 수행한다. 일부 실시예에서, 컨트롤러(115)는 데이터 블록으로부터의 데이터가 마이그레이션되었다는 확인을 메모리 컴포넌트(112A)로부터 수신한다. 일 예에서, 메모리 컴포넌트(112A) 내의 펌웨어는 확인을 컨트롤러(115)에 보낼 수 있다. 펌웨어는 데이터에 대한 에러 제어 동작을 수행한 후 확인을 보낼 수 있다. 일 예에서, 펌웨어는 에러 제어 동작을 수행하기 위한 에러 제어 컴포넌트(113)를 포함할 수 있다. 컨트롤러(115)가 데이터의 마이그레이션을 위해 메모리 컴포넌트(112A)에 요청을 보낸 후, 메모리 컴포넌트는 에러 제어 동작을 위해 데이터를 컨트롤러(115)로 다시 전송하는 대신에 에러 제어 동작을 수행할 수 있다.
일 실시예에서, 메모리 컴포넌트(112A)를 사용하여 수행된 에러 제어 동작은 데이터와 관련된 에러를 검출하기 위한 에러 검출 동작을 포함할 수 있다. 일부 실시예들에서, 에러 제어 동작은 에러 검출 동작에 기초하여 검출된 에러를 정정하기 위한 메모리 컴포넌트(112A)를 사용하여 수행된 에러 정정 동작을 포함할 수 있다. 다른 실시예들에서, 데이터와 연관된 에러가 에러 검출 동작에 기초한 메모리 컴포넌트(112A)에 의해 검출될 시, 컨트롤러(115)는 에러 정정 동작을 수행하기 위한 데이터를 수신하고, 컨트롤러(115)는 에러를 정정하기 위한 에러 정정 동작을 수행하며, 컨트롤러(115)는 에러가 정정된 후 메모리 컴포넌트에 데이터를 전달한다. SLC 페이지에 대해 에러가 발생할 가능성이 낮기 때문에, 에러 정정 동작은 또한 SLC 페이지들에 대해 덜 자주 수행될 것으로 예상된다. 이와 같이, 메모리 컴포넌트(112A)가 에러 검출 동작을 수행하도록 하고 에러 정정 동작을 수행하기 위해 컨트롤러(115)에 데이터를 전송하는 것은 가비지 수집을 위한 에러 제어 동작을 수행하는 것과 관련된 소비된 전체 시간 및 전력 사용량을 최소화할 수 있다. 일부 예들에서, 메모리 컴포넌트(112A)는 제1 데이터 블록에 저장된 데이터를 판독하고 데이터를 제2 데이터 블록에 기입함으로써 제1 블록에서 제2 블록으로 데이터를 마이그레이션할 수 있다.
도 5는 기계가 본원에 논의된 방법론들 중 임의의 하나 이상을 수행하게 하는 인스트럭션 세트가 실행될 수 있는 컴퓨터 시스템(500)의 예시적인 기계를 예시한다. 일부 실시예들에서, 컴퓨터 시스템(500)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나 이에 결합되거나 이를 활용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나 컨트롤러의 동작을 수행하는 데(예를 들어, 운영 체제를 실행하여 도 1의 에러 제어 컴포넌트(113)에 대응되는 동작을 수행하는 데) 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량으로, 피어 투 피어(또는 분배) 네트워크 환경에서의 피어 기계로, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 디지털 보조 장치(PDA), 셀룰러 텔레폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 수행될 조치들을 명시하는 인스트럭션 세트(순차적 또는 다른 방식)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 예시되어 있지만, "기계"라는 용어는 또한 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 인스트럭션 세트(또는 복수 세트)를 개별적으로 또는 공통으로 실행하는 임의의 기계 컬렉션을 포함하는 것으로 간주해야 한다.
예시적인 컴퓨터 시스템(500)은 버스(530)를 통해 서로 통신하는, 처리 장치(502), 메인 메모리(504)(예를 들어, 읽기 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등) 및 데이터 저장 시스템(518)을 포함한다.
처리 장치(502)는 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 처리 장치들을 나타낸다. 보다 구체적으로, 처리 장치는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 인스트럭션 세트들을 구현하는 프로세서, 또는 인스트럭션 세트들의 조합을 구현하는 프로세서들일 수 있다. 처리 장치(502)는 또한 주문형 반도체(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 장치들일 수 있다. 처리 장치(502)는 본원에 논의된 동작들 및 단계들을 수행하기 위한 인스트럭션들(526)을 실행하도록 구성된다. 컴퓨터 시스템(500)은 네트워크(520)를 통해 통신하기 위한 네트워크 인터페이스 장치(508)를 더 포함할 수 있다.
데이터 저장 시스템(518)는 본원에 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 인스트력션 세트(526) 또는 소프트웨어가 저장되는 기계 판독 가능 저장 매체(524)(컴퓨터 판독 가능 매체로 알려짐)를 포함할 수 있다. 인스트럭션들(526)은 또한 기계 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(500), 메인 메모리(504) 및 처리 장치(502)에 의한 실행 동안 메인 메모리(504) 내에 및/또는 처리 장치(502) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능 저장 매체(524), 데이터 저장 시스템(518) 및/또는 메인 메모리(504)는 도 1의 메모리 서브 시스템(110)에 대응될 수 있다.
일 실시예에서, 인스트럭션들(526)은 에러 제어 컴포넌트(예를 들어, 도 1의 에러 제어 컴포넌트(113))에 대응하는 기능을 구현하기 위한 인스트럭션들을 포함한다. 기계 판독 가능 저장 매체(524)가 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "기계 판독 가능 저장 매체"라는 용어는 하나 이상의 인스트럭션 세트들을 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 저장 매체"라는 용어는 또한 기계에 의해 실행되는 인스트럭션 세트를 저장 또는 인코딩할 수 있고 기계가 본 개시의 방법들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서 "기계 판독 가능 저장 매체"라는 용어는, 이에 제한되는 것은 아니나, 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하는 것으로 간주되어야 한다.
전술한 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산의 알고리즘 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명들 및 표현들은 데이터 처리 분야의 당업자가 그들 작업의 실체를 다른 당업자에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 여기서, 알고리즘은 일반적으로 원하는 결과를 도출하는 자기 모순 없는(self-consistent) 동작 시퀀스인 것으로 생각된다. 동작들은 이러한 물리적 수량의 물리적 조작을 필요로 한다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 양은 저장되고, 결합되고, 비교되고 아니면 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 이러한 신호들을 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이, 주로 일반적인 사용의 이유로, 때때로 편리한 것으로 입증되었다.
그러나, 이러한 및 유사한 용어들 모두는 적절한 물리적 양과 관련이 있으며 이러한 양에 적용되는 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들과 메모리들 내에서 물리적(전자적) 양으로 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내의 물리적 양으로 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 인용할 수 있다.
본 개시는 또한 본원에서 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 이는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 이에 제한되는 것은 아니나, 플로피 디스크, 광 디스크, CD-ROM, 및 자기-광학 디스크, 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 각각 컴퓨터 시스템 버스에 연결된 전자 인스트럭션들을 저장하기에 적합한 임의의 유형의 매체를 포함하는 임의 유형의 디스크와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본원에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들은 본원의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 다 특화된 장치를 구성하는 것이 편리하다는 것을 입증할 수 있다. 다양한 이들 시스템들의 구조는 아래의 설명에서 제시되는 것으로 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본원에 기술된 바와 같이 본 개시의 교시를 구현하는 데 사용될 수 있음이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 장치)를 프로그래밍하는 데 사용될 수는, 인스트럭션들을 저장한 기계 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예들에서, 기계 판독 가능(예를 들어, 컴퓨터 판독 가능) 매체는 읽기 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트들 등과 같은 기계(예를 들어, 컴퓨터) 판독 가능 저장 매체를 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구 범위에 명시된 본 개시의 실시예들의 넓은 사상 및 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 시스템에 있어서,
    메모리 컴포넌트로서,
    복수의 메모리 셀들; 및
    상기 복수의 메모리 셀들과 동작 가능하게 결합된 처리 장치로서,
    단일 레벨 셀(SLC) 메모리로 구성된 상기 복수의 메모리 셀들의 제1 데이터 블록으로부터 다중 레벨 셀(MLC) 메모리로 구성된 제2 데이터 블록으로 데이터를 마이그레이션하라는 컨트롤러로부터의 요청을 나타내는 시그널링을 수신하고;
    상기 메모리 컴포넌트를 사용하여 에러 제어 동작을 수행하되, 상기 에러 제어 동작은 상기 데이터를 상기 컨트롤러로 전달하는 것을 제외하고;
    SLC 메모리로 구성된 상기 제1 데이터 블록으로부터 MLC 메모리로 구성된 상기 제2 데이터 블록으로 상기 데이터를 마이그레이션하도록 하는, 상기 처리 장치를 포함하는, 상기 메모리 컴포넌트를 포함하는, 시스템.
  2. 제1항에 있어서,
    상기 컨트롤러를 더 포함하며, 상기 컨트롤러는 상기 메모리 컴포넌트의 외부에 상주하는, 시스템.
  3. 제1항에 있어서, 상기 복수의 메모리 셀들은 MLC 메모리로 구성된 상기 제2 데이터 블록을 포함하는, 시스템.
  4. 제1항에 있어서, 상기 메모리 컴포넌트를 사용하여 상기 에러 제어 동작을 수행하기 위해, 상기 처리 장치는,
    상기 메모리 컴포넌트를 사용하여 에러 검출 동작을 수행하도록 하는, 시스템.
  5. 제4항에 있어서, 상기 처리 장치는 추가로,
    상기 에러 검출 동작에 기초하여 상기 데이터와 연관된 에러를 검출 시, 상기 에러를 정정하기 위한 상기 데이터를 상기 컨트롤러로 전달하고;
    상기 에러가 정정된 후 상기 컨트롤러로부터 상기 데이터를 수신하도록 하는, 시스템.
  6. 제1항에 있어서, 상기 메모리 컴포넌트를 사용하여 상기 에러 제어 동작을 수행하기 위해, 상기 처리 장치는,
    상기 메모리 컴포넌트를 사용하여 에러 정정 동작을 수행하도록 하는, 시스템.
  7. 제1항에 있어서, SLC 메모리로 구성된 상기 제1 데이터 블록으로부터 MLC 메모리로 구성된 상기 제2 데이터 블록으로 상기 데이터를 마이그레이션하기 위해, 상기 처리 장치는,
    상기 제1 데이터 블록에 저장된 상기 데이터를 판독하고;
    상기 데이터를 상기 제2 데이터 블록에 기입하도록 하는, 시스템.
  8. 방법에 있어서,
    컨트롤러에 의해, 메모리 서브 시스템의 메모리 컴포넌트에 저장된 제1 데이터 블록에 대한 가비지 수집 동작을 시작하는 단계로서, 상기 가비지 수집 동작은 상기 제1 데이터 블록의 관리를 위해 유효한 데이터를 포함하는 상기 데이터 블록의 하나 이상의 페이지들의 제2 데이터 블록으로의 마이그레이션을 포함하는, 상기 시작하는 단계;
    상기 가비지 수집 동작을 시작하는 것에 응답하여, 단일 레벨 셀(SLC) 메모리로 구성된 상기 메모리 컴포넌트의 상기 제1 데이터 블록으로부터 다중 레벨 셀(MLC) 메모리로 구성된 상기 제2 데이터 블록으로 데이터를 마이그레이션하라는 요청을 나타내는 제1 시그널링을 전송하는 단계; 및
    데이터가 마이그레이션된다는 확인을 나타내는 제2 시그널링을 수신하는 단계로서, 상기 데이터 마이그레이션은 상기 데이터를 상기 컨트롤러로 전송하기 전에 상기 메모리 컴포넌트 내에 수행된 에러 제어 동작을 포함하는, 상기 수신하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 컨트롤러는 상기 메모리 컴포넌트의 외부에 상주하는, 방법.
  10. 제8항에 있어서, 상기 메모리 컴포넌트는 MLC 메모리로 구성된 상기 제2 데이터 블록을 포함하는, 방법.
  11. 제8항에 있어서, 상기 데이터에 대한 상기 에러 제어 동작은 상기 데이터에 대한 에러 검출 동작을 포함하는, 방법.
  12. 제11항에 있어서,
    상기 데이터와 연관된 에러가 상기 에러 검출 동작에 기초하여 검출될 시, 상기 컨트롤러에 의해, 에러 검출 동작을 수행하기 위해 상기 데이터를 수신하는 단계;
    상기 에러를 정정하기 위한 상기 에러 정정 동작을 수행하는 단계; 및
    상기 에러가 정정된 후 상기 데이터를 상기 메모리 컴포넌트에 전달하는 단계를 더 포함하는, 방법.
  13. 제8항에 있어서, 상기 데이터에 대한 상기 에러 제어 동작은 상기 데이터와 연관된 에러를 정정하는 단계를 포함하는, 방법.
  14. 제9항에 있어서, 상기 제1 블록으로부터 상기 제2 데이터로 상기 데이터를 마이그레이션하는 단계는 상기 메모리 컴포넌트에 의해 판독되는 상기 제1 데이터 블록에 저장된 상기 데이터를 포함하며 상기 데이터는 상기 메모리 컴포넌트에 의해 상기 제2 데이터 블록에 기입되는, 방법.
  15. 비일시적 컴퓨터 판독 가능 저장 매체로서, 메모리 컴포넌트 내에 포함된 처리 장치에 의해 실행 시, 상기 처리 장치가,
    단일 레벨 셀(SLC) 메모리로 구성된 제1 데이터 블록으로부터 다중 레벨 셀(MLC) 메모리로 구성된 제2 데이터 블록으로 데이터를 마이그레이션하라는 컨트롤러로부터의 요청을 나타내는 시그널링을 수신하고;
    에러 제어 동작을 수행하되, 상기 에러 제어 동작은 상기 데이터를 상기 컨트롤러로 전달하는 것을 제외하고;
    SLC 메모리로 구성된 상기 제1 데이터 블록으로부터 MLC 메모리로 구성된 상기 제2 데이터 블록으로 상기 데이터를 마이그레이션하도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제15항에 있어서, SLC 메모리로 구성된 상기 제1 데이터 블록으로부터 MLC 메모리로 구성된 상기 제2 데이터 블록으로 상기 데이터를 마이그레이션하기 위해, 상기 처리 장치는,
    상기 제1 데이터 블록에 저장된 상기 데이터를 판독하고;
    상기 데이터를 상기 제2 데이터 블록에 기입하도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제15항에 있어서, 상기 컨트롤러는 상기 메모리 컴포넌트의 외부에 상주하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제15항에 있어서, 상기 제1 데이터 블록 및 상기 제2 데이터 블록은 상기 메모리 컴포넌트 내에 각각 포함되는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제15항에 있어서, 상기 에러 제어 동작은 상기 데이터가 에러와 연관되는지 여부를 검출하기 위한 에러 검출 동작을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제15항에 있어서, 상기 에러 제어 동작은 에러와 연관된 상기 데이터를 정정하기 위한 에러 정정 동작을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020227008808A 2019-08-20 2020-08-19 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행 KR20220049027A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962889280P 2019-08-20 2019-08-20
US62/889,280 2019-08-20
US16/995,334 US11726869B2 (en) 2019-08-20 2020-08-17 Performing error control operation on memory component for garbage collection
US16/995,334 2020-08-17
PCT/US2020/047074 WO2021034978A1 (en) 2019-08-20 2020-08-19 Performing error control operation on memory component for garbage collection

Publications (1)

Publication Number Publication Date
KR20220049027A true KR20220049027A (ko) 2022-04-20

Family

ID=74645725

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227008808A KR20220049027A (ko) 2019-08-20 2020-08-19 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행

Country Status (5)

Country Link
US (1) US11726869B2 (ko)
EP (1) EP4018315A4 (ko)
KR (1) KR20220049027A (ko)
CN (1) CN114341815A (ko)
WO (1) WO2021034978A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11495309B2 (en) 2020-12-16 2022-11-08 Micron Technology, Inc. Initiating media management operation using voltage distribution metrics in memory system
KR20220099848A (ko) * 2021-01-07 2022-07-14 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11922034B2 (en) 2021-09-02 2024-03-05 Samsung Electronics Co., Ltd. Dual mode storage device
US11972114B2 (en) * 2022-07-18 2024-04-30 Micron Technology, Inc. Dynamic block categorization to improve reliability and performance in memory sub-system

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5127014A (en) 1990-02-13 1992-06-30 Hewlett-Packard Company Dram on-chip error correction/detection
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7409473B2 (en) 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
JP4054347B2 (ja) 2005-12-16 2008-02-27 シャープ株式会社 不揮発性半導体記憶装置
KR100725410B1 (ko) 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
US7630253B2 (en) 2006-04-05 2009-12-08 Spansion Llc Flash memory programming and verification with reduced leakage current
KR100922308B1 (ko) 2006-08-04 2009-10-21 쌘디스크 코포레이션 페이징된 가비지 콜렉션
US7450425B2 (en) * 2006-08-30 2008-11-11 Micron Technology, Inc. Non-volatile memory cell read failure reduction
KR100918707B1 (ko) 2007-03-12 2009-09-23 삼성전자주식회사 플래시 메모리를 기반으로 한 메모리 시스템
US7652929B2 (en) 2007-09-17 2010-01-26 Sandisk Corporation Non-volatile memory and method for biasing adjacent word line for verify during programming
US8880775B2 (en) 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
JP2010244342A (ja) 2009-04-07 2010-10-28 Ricoh Co Ltd メモリ管理制御装置及びメモリ管理制御方法
KR101606453B1 (ko) 2009-05-13 2016-04-01 삼성전자주식회사 비휘발성 데이터 저장 장치의 읽기 및 쓰기 성능 향상 방법
KR101201838B1 (ko) 2009-12-24 2012-11-15 에스케이하이닉스 주식회사 프로그램 시간을 감소시킨 비휘발성 메모리 장치
US8713380B2 (en) * 2011-05-03 2014-04-29 SanDisk Technologies, Inc. Non-volatile memory and method having efficient on-chip block-copying with controlled error rate
KR101861170B1 (ko) * 2011-08-17 2018-05-25 삼성전자주식회사 마이그레이션 관리자를 포함하는 메모리 시스템
US9158621B2 (en) 2011-08-29 2015-10-13 Sandisk Technologies Inc. System and method of copying data
CN104011690B (zh) 2011-12-29 2016-11-09 英特尔公司 具有直接存取的多级存储器
US8799561B2 (en) 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
KR102025263B1 (ko) * 2012-10-05 2019-09-25 삼성전자주식회사 메모리 시스템 및 그것의 읽기 교정 방법
KR102147628B1 (ko) 2013-01-21 2020-08-26 삼성전자 주식회사 메모리 시스템
KR101453313B1 (ko) 2013-03-25 2014-10-22 아주대학교산학협력단 플래시 메모리 기반의 페이지 주소 사상 방법 및 시스템
US9514057B2 (en) 2013-12-04 2016-12-06 Sandisk Technologies Llc Storage module and method for managing logical-to-physical address mapping
US10055294B2 (en) * 2014-01-09 2018-08-21 Sandisk Technologies Llc Selective copyback for on die buffered non-volatile memory
KR102218735B1 (ko) 2014-01-21 2021-02-23 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 소거 방법
KR20160008365A (ko) 2014-07-14 2016-01-22 삼성전자주식회사 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법
US9710326B2 (en) 2014-07-28 2017-07-18 SK Hynix Inc. Encoder by-pass with scrambler
US9841910B2 (en) * 2014-09-30 2017-12-12 Sandisk Technologies Llc Moving and committing valid data on a set-by-set basis
US10409526B2 (en) 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US9606915B2 (en) 2015-08-11 2017-03-28 Toshiba Corporation Pool level garbage collection and wear leveling of solid state devices
US20170242625A1 (en) 2016-02-24 2017-08-24 Samsung Electronics Co., Ltd. Apparatus for ssd performance and endurance improvement
WO2017151211A1 (en) 2016-02-29 2017-09-08 Microsemi Storage Solutions (U.S.), Inc. Method and system for handling random access write requests for a shingled magnetic recording hard disk drive
US10684795B2 (en) 2016-07-25 2020-06-16 Toshiba Memory Corporation Storage device and storage control method
CN106681652B (zh) 2016-08-26 2019-11-19 合肥兆芯电子有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US10255179B2 (en) 2016-12-30 2019-04-09 Western Digital Technologies, Inc. Garbage collection read throttling
JP2018163434A (ja) 2017-03-24 2018-10-18 東芝メモリ株式会社 メモリシステム
US10372522B2 (en) 2017-04-28 2019-08-06 Advanced Micro Devices, Inc. Memory protection in highly parallel computing hardware
US10558564B2 (en) 2017-09-28 2020-02-11 Hewlett Packard Enterprise Development Lp Pointers in a memory managed system
US10482986B2 (en) * 2017-10-25 2019-11-19 Western Digital Technologies, Inc. Adaptive erase fail bit criteria
TWI674505B (zh) 2017-11-30 2019-10-11 宜鼎國際股份有限公司 資料存取效率的預估方法
CN109901782A (zh) 2017-12-07 2019-06-18 上海宝存信息科技有限公司 数据储存装置与数据储存方法
KR102535627B1 (ko) 2018-03-28 2023-05-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102483476B1 (ko) * 2018-04-03 2023-01-03 에스케이하이닉스 주식회사 데이터 입/출력 핀 단위로의 리페어를 지원하는 반도체 메모리 장치 및 그 반도체 메모리 장치의 리페어 방법
US11030094B2 (en) 2018-07-31 2021-06-08 SK Hynix Inc. Apparatus and method for performing garbage collection by predicting required time
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
KR102533207B1 (ko) 2018-08-30 2023-05-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
TWI703442B (zh) 2018-08-31 2020-09-01 大陸商合肥沛睿微電子股份有限公司 快閃記憶體控制器及相關的存取方法及電子裝置
CN114528226A (zh) 2018-09-17 2022-05-24 慧荣科技股份有限公司 高效能垃圾收集方法以及数据存储装置及其控制器
US11249664B2 (en) 2018-10-09 2022-02-15 Western Digital Technologies, Inc. File system metadata decoding for optimizing flash translation layer operations
KR20200042791A (ko) 2018-10-16 2020-04-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102601143B1 (ko) 2018-10-29 2023-11-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20200066882A (ko) 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11068165B2 (en) 2019-06-27 2021-07-20 Western Digital Technologies, Inc. Non-volatile memory data write management
US11243705B2 (en) 2019-08-01 2022-02-08 EMC IP Holding Company LLC Method and system for policy class based data migration
KR20210017481A (ko) 2019-08-08 2021-02-17 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US11282567B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Sequential SLC read optimization
KR20220036468A (ko) 2020-09-16 2022-03-23 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20220082509A (ko) 2020-12-10 2022-06-17 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Also Published As

Publication number Publication date
EP4018315A4 (en) 2023-08-09
CN114341815A (zh) 2022-04-12
US11726869B2 (en) 2023-08-15
US20210055990A1 (en) 2021-02-25
WO2021034978A1 (en) 2021-02-25
EP4018315A1 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
US11726869B2 (en) Performing error control operation on memory component for garbage collection
US11640262B2 (en) Implementing variable number of bits per cell on storage devices
KR20210070378A (ko) 판독 방해 스캔 통합
US11404092B2 (en) Cross point array memory in a non-volatile dual in-line memory module
US11749373B2 (en) Bad block management for memory sub-systems
US11836392B2 (en) Relocating data to low latency memory
WO2020033487A1 (en) Adjustment of a pre-read operation associated with a write operation
WO2021092465A1 (en) Dynamic over provisioning allocation for purposed blocks
CN112543908A (zh) 写入缓冲器管理
US20220050772A1 (en) Data block switching at a memory sub-system
CN114270304A (zh) 存储器组件的同一平面内的数据压缩
US11836377B2 (en) Data transfer management within a memory device having multiple memory regions with different memory densities
US10956344B2 (en) Providing information for a controller memory buffer elasticity status of a memory sub-system to a host system
KR102403173B1 (ko) 메모리 시스템에의 중요 데이터 저장
KR20220049028A (ko) 배터리 부족 상태 동안 메모리 서브 시스템에서의 가비지 수집
US11853201B2 (en) Selective single-level memory cell operation
US20230297511A1 (en) Full multi-plane operation enablement