KR20240055821A - 대규모 코드워드의 rain 보호를 위한 리던던시 메타데이터 방식 - Google Patents

대규모 코드워드의 rain 보호를 위한 리던던시 메타데이터 방식 Download PDF

Info

Publication number
KR20240055821A
KR20240055821A KR1020247011350A KR20247011350A KR20240055821A KR 20240055821 A KR20240055821 A KR 20240055821A KR 1020247011350 A KR1020247011350 A KR 1020247011350A KR 20247011350 A KR20247011350 A KR 20247011350A KR 20240055821 A KR20240055821 A KR 20240055821A
Authority
KR
South Korea
Prior art keywords
memory
metadata
redundancy
data
memory subsystem
Prior art date
Application number
KR1020247011350A
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 KR20240055821A publication Critical patent/KR20240055821A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/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/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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/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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

복수의 코드워드는 메모리 서브시스템의 하나 이상의 메모리 페이지에 프로그래밍된다. 메모리 서브시스템의 각 메모리 페이지는 메모리 서브시스템의 복수의 논리 단위 중 논리 단위, 및 메모리 서브시스템의 복수의 평면 중 평면 또는 메모리 서브시스템의 복수의 블록 중 블록 중 적어도 하나와 연관된다. 복수의 코드워드의 각 코드워드는 호스트 데이터와 기본 패리티 비트를 포함한다. 복수의 추가 패리티 비트는 메모리 서브시스템의 하나 이상의 메모리 페이지에 프로그래밍되고, 복수의 추가 패리티 비트의 각 추가 패리티 비트는 복수의 표준 코드워드의 코드워드와 연관된다. 추가 패리티 비트 각각에 대응하는 리던던시 메타데이터의 제1 세트가 생성된다. 리던던시 메타데이터의 제1 세트는 추가 패리티 비트를 저장하는 임의의 메모리 페이지와 별개인 메모리 페이지에 프로그래밍된다.

Description

대규모 코드워드의 RAIN 보호를 위한 리던던시 메타데이터 방식
본 발명의 실시형태는 일반적으로 메모리 서브시스템에 관한 것으로, 보다 상세하게는 대규모 코드워드(large codeword)의 RAIN 보호를 위한 리던던시 메타데이터 방식(redundancy metadata scheme)에 관한 것이다.
메모리 서브시스템은 데이터를 저장하는 하나 이상의 메모리 디바이스를 포함할 수 있다. 메모리 디바이스는, 예를 들어, 비휘발성 메모리 디바이스와 휘발성 메모리 디바이스일 수 있다. 일반적으로, 호스트 시스템은 메모리 디바이스에 데이터를 저장하고 메모리 디바이스로부터 데이터를 검색하기 위해 메모리 서브시스템을 이용할 수 있다.
본 발명은 아래에 주어진 상세한 설명과 본 발명의 다양한 실시형태의 첨부 도면으로부터 보다 완전히 이해될 수 있을 것이다. 그러나 본 도면은 본 발명을 특정 실시형태로 제한하는 것으로 해석되어서는 안 되고, 단지 본 발명을 설명하고 이해하기 위해 주어진 것이다.
도 1은 본 발명의 일부 실시형태에 따라 메모리 서브시스템을 포함하는 예시적인 컴퓨팅 시스템을 도시한다.
도 2는 본 발명의 일부 실시형태에 따라 다중 평면(multi-plane) LUN의 세트에 대한 리던던시 메타데이터를 생성하기 위한 흐름도이다.
도 3은 본 발명의 일부 실시형태에 따라 LUN의 세트로 리던던시 메타데이터를 저장하기 위한 예시적인 구성의 예시이다.
도 4는 본 발명의 일부 실시형태에 따라 LUN의 세트로 리던던시 메타데이터를 저장하기 위한 예시적인 구성의 또 다른 예시이다.
도 5는 본 발명의 일부 실시형태에 따라 리던던시 메타데이터를 사용하여 데이터를 복구하기 위한 흐름도이다.
도 6은 본 발명의 실시형태가 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 발명의 양태는 대규모 코드워드의 RAIN 보호를 위한 리던던시 메타데이터 방식에 관한 것이다. 메모리 서브시스템은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 조합일 수 있다. 저장 디바이스와 메모리 모듈의 예는 도 1과 관련하여 아래에서 설명된다. 일반적으로, 호스트 시스템은 데이터를 저장하는 메모리 디바이스와 같은 하나 이상의 메모리 구성요소를 포함하는 메모리 서브시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장될 데이터를 제공할 수 있고, 메모리 서브시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 서브시스템은 호스트 시스템에 의해 제공된 데이터를 저장하기 위해 다양한 유형의 비휘발성 메모리 디바이스 및/또는 휘발성 메모리 디바이스의 임의의 조합을 포함하는 하나 이상의 메모리 디바이스를 이용할 수 있다. 일부 실시형태에서, 비휘발성 메모리 디바이스는 네거티브-AND(Negative-AND: NAND)형 플래시 메모리 디바이스로 제공될 수 있다. 비휘발성 메모리 디바이스의 다른 예는 도 1과 함께 아래에서 설명된다. 비휘발성 메모리 디바이스는 하나 이상의 다이로 구성된 패키지이다. 각 다이는 하나 이상의 평면을 포함할 수 있다. 평면은 다수의 메모리 셀을 포함하는 메모리 디바이스의 일부이다. 일부 메모리 디바이스는 두 개 이상의 평면을 포함할 수 있다. 일부 유형의 비휘발성 메모리 디바이스(예를 들어, NAND 디바이스)의 경우 각 평면은 물리적 블록(physical block)의 세트를 포함한다. 각 블록은 페이지(page)의 세트를 포함한다. 본 명세서에서 "블록"은 연속 또는 비연속 메모리 페이지의 세트를 의미한다. "블록"의 일례는 소거 가능한 최소 메모리 단위인 "소거 가능 블록"인 반면, "페이지"는 기록 가능한 최소 메모리 단위이다. 각 페이지는 메모리 셀 세트를 포함한다. 메모리 셀은 정보를 저장하는 전자 회로이다.
위에 설명된 바와 같이 다이는 하나 이상의 평면을 포함할 수 있다. 메모리 서브시스템은 데이터 동작(예를 들어, 기록, 판독, 소거 등)을 수행할 때 다양한 데이터 세트를 단위로 처리하기 위해 스트라이핑 방식(striping scheme)을 사용할 수 있다. 다이 스트라이프(die stripe)는 데이터를 기록하거나 판독하거나 소거할 때 하나의 단위로 처리되는 평면의 집합을 의미한다. 메모리 디바이스의 제어기(즉, 메모리 서브시스템 제어기, 메모리 디바이스 제어기 등)는 동일한 동작을 실행할 수 있으며, 다이 스트라이프의 각 평면에서 동일한 동작을 병렬로 수행할 수 있다. 블록 스트라이프는 하나의 단위로 처리되는 다이 스트라이프의 각 평면으로부터 적어도 하나의 블록의 집합이다. 블록 스트라이프에서 블록은 각 개별 평면에서 동일한 블록 식별자(예를 들어, 블록 번호)와 연관될 수 있다. 페이지 스트라이프는 블록 스트라이프에 걸쳐 동일한 페이지 식별자(예를 들어, 동일한 페이지 번호)를 갖고 하나의 단위로 처리되는 페이지의 세트이다.
호스트 시스템은 메모리 서브시스템에서 메모리 액세스 동작(예를 들어, 프로그래밍 또는 기록 동작, 판독 동작, 소거 동작 등)을 시작할 수 있다. 예를 들어, 호스트 시스템은 메모리 서브시스템의 메모리 디바이스에 데이터를 프로그래밍하고/하거나 메모리 디바이스로부터 데이터를 판독하라는 요청을 메모리 서브시스템 제어기에 전송할 수 있다. 이러한 데이터는 본 명세서에서 "호스트 데이터"라고 지칭된다. 메모리 서브시스템 제어기는 요청에 따라 호스트 데이터에 액세스하기 위해 하나 이상의 동작을 실행할 수 있다. 호스트 데이터는 전송 또는 저장 동안 발생할 수 있는 데이터 에러를 정정하기 위한 에러 정정 코드(ECC)를 사용하여 인코딩될 수 있다. 특히, 호스트 데이터는 코드워드를 형성하기 위해 리던던시 메타데이터(예를 들어, 하나 이상의 패리티 비트(parity bit)와 같은 패리티 데이터)를 사용하여 인코딩될 수 있다. 패리티 데이터를 사용하면 메모리 서브시스템 제어기가 호스트 데이터 어디에서나 발생할 수 있는 다수의 에러를 검출하고 재전송 없이 이러한 에러를 종종 정정할 수 있다.
비율 적응형 ECC는 다수의 계층의 패리티 데이터를 사용하여 호스트 데이터를 보호할 수 있는 에러 정정 코드이다. 각 계층은 인코딩과 디코딩이 가능하고, 각 계층은 다른 코드율(code rate)을 갖는 ECC로 기능한다. 제1 계층 ECC 패리티는 제2 계층 ECC 패리티의 서브세트이고, 제1 계층 패리티와 제2 계층 패리티는 제3 계층 패리티의 서브세트이고, 이와 같이 계속된다. 예를 들어, 제1 계층 ECC 패리티는 호스트 데이터와 제1 패리티(이하 "기본 패리티")를 포함하는 표준 코드워드라고 지칭될 수 있고, 제2 계층 ECC 패리티는 표준 코드워드와 제2 패리티(이하 "추가 패리티")를 포함하는 대규모 코드워드라고 지칭될 수 있고, 이와 같이 계속된다. 계층 번호가 증가하면 패리티 크기가 증가하고, 코드율이 감소하며, ECC 보호는 더욱 강력해진다. 제1 계층 패리티는 상대적으로 작은 세분성 실패(granularity failure)로 인한 에러를 정정하는 데 사용될 수 있으며, 제2 계층 패리티는 더 큰 세분성 실패를 정정하는 데 사용될 수 있고, 이와 같이 계속된다. 일부 데이터 손상의 경우 데이터 복구를 위해 상위 계층 ECC에 대한 추가 패리티만을 전송하면 되므로 채널 대역폭이 절약된다.
일부 시스템에서는 대규모 코드워드(제2 계층 ECC 패리티)가 다수의 페이지로 분할될 수 있다. 특히, 표준 코드워드는 페이지의 사분면(quarter)에 프로그래밍될 수 있어서 4개의 표준 코드워드가 단일 메모리 페이지에 맞춰진다. 예를 들어, 4KB 코드워드와 16KB 페이지의 경우 메모리 서브시스템 제어기는 메모리 페이지당 4개의 코드워드를 저장할 수 있다. 각 대규모 코드워드의 추가 패리티는 다른 페이지나 평면에 저장될 수 있다. 표준 ECC가 디코딩에 실패하면 추가 패리티를 판독할 수 있으며, 또는 작업 부하, 시스템 성능 및/또는 전력 요구 사항에 따라 동시에 표준 코드워드를 판독할 수 있다.
메모리 디바이스의 메모리 셀에 있는 데이터가 반복적으로 액세스됨에 따라 메모리 셀이 열화되어 종국적으로 결함이 발생할 수 있다. 예를 들어, 호스트 시스템이 메모리 디바이스에 저장된 호스트 데이터에 대해 너무 많은 메모리 액세스 동작을 시작하면 호스트 데이터를 저장하는 메모리 셀뿐만 아니라 메모리 디바이스의 인접한 메모리 셀도 손상될 수 있다. 일부 예에서, 메모리 디바이스의 평면의 하나 이상의 메모리 페이지에 있는 데이터에 액세스하기 위해 메모리 서브시스템 제어기에 의해 수행되는 메모리 액세스 동작(예를 들어, 판독 동작 등)이 실패할 수 있다. 이러한 실패는 본 명세서에서 메모리 액세스 실패라고 지칭된다.
메모리 서브시스템은 메모리 액세스 실패로부터 호스트 데이터를 보호하기 위해 리던던시 메커니즘을 지원할 수 있다. 예를 들어, NAND형 플래시 디바이스의 경우 메모리 서브시스템은 메모리 서브시스템에 저장된 데이터에 대한 리던던시를 제공하기 위해 독립적인 NAND의 리던던트 어레이(Redundant Array of Independent NAND: RAIN) 동작을 구현할 수 있다. 호스트 데이터(또는 하나 이상의 코드워드)가 메모리 서브시스템의 메모리 디바이스에 프로그래밍되기 위해 호스트 시스템으로부터 수신될 때, 메모리 서브시스템 제어기는 수신된 호스트 데이터와 하나 이상의 배타적 논리합(exclusive-OR: XOR)에 기초하여 리던던시 메타데이터를 생성할 수 있고, 호스트 데이터를 저장하고 있는 메모리 디바이스의 일부가 실패한 경우 호스트 데이터를 재구성하거나 재계산하기 위해 리던던시 메타데이터를 사용할 수 있다. 일례로서, 메모리 서브시스템 제어기는 메모리 서브시스템의 하나 이상의 논리 단위(logical unit)(LUN)(예를 들어, 페이지, 블록)의 특정 개수의 데이터 위치에 저장된 호스트 데이터에 적용된 XOR 연산에 기초하여 하나 이상의 RAIN 표준 코드워드(리던던시 메타데이터)를 생성할 수 있다. 호스트 데이터를 저장하는 메모리 디바이스의 일부가 실패하여 대응하는 데이터가 손실되거나 손상된 경우, 메모리 서브시스템 제어기는 나머지 호스트 데이터와 리던던시 메타데이터 간의 XOR 연산에 기초하여 손실/손상된 데이터를 재구성할 수 있다.
표준 코드워드의 경우 기존 RAIN 방식을 사용하면 메모리 서브시스템이 메모리 액세스 실패로부터 호스트 데이터를 보호할 수 있다. 그러나 대규모 코드워드는 다수의 평면으로 분할될 수 있다. 현재, 전술된 추가 패리티를 저장하는 페이지나 평면이 실패를 경험한 경우 추가 패리티를 복구할 수 있는 방식은 없다.
본 발명의 양태는 대규모 코드워드의 RAIN 보호를 위한 리던던시 메타데이터 방식을 제공함으로써 위의 결함 및 다른 결함을 해결한다. 특히, 메모리 서브시스템의 메모리 부분은 메모리 서브시스템의 메모리의 다른 부분에 저장된 호스트 데이터에 대해 생성된 다양한 유형의 리던던시 메타데이터를 저장하기 위해 예비될 수 있다. 메모리의 예비된 부분은 메모리 서브시스템의 다른 메모리 디바이스에 저장된 호스트 데이터에 대해 생성된 리던던시 메타데이터를 저장하도록 구성된 하나 이상의 지정된 메모리 디바이스에 대응할 수 있다. 예를 들어, 메모리 서브시스템은 호스트 데이터를 저장하도록 지정된 메모리 서브시스템의 다수의 메모리 디바이스에 걸쳐 다수의 스트라이프를 포함할 수 있다. 메모리 서브시스템의 하나 이상의 메모리 디바이스는 다수의 메모리 디바이스에 걸쳐 각 스트라이프와 연관된 LUN에 상주하는 호스트 데이터와 연관된 다양한 유형의 리던던시 메타데이터를 저장하도록 지정될 수 있다. 리던던시 메타데이터는 추가 패리티 데이터, RAIN 리던던시 메타데이터 및 LUN 리던던시 메타데이터를 포함할 수 있다. LUN 리던던시 메타데이터를 사용하여 메모리 디바이스에 저장된 각 대규모 코드워드의 추가 패리티 데이터를 복구할 수 있다. 메모리 서브시스템 제어기는 추가 패리티 데이터와 하나 이상의 XOR 연산에 기초하여 LUN 리던던시 메타데이터를 생성할 수 있다. 예를 들어, 메모리 서브시스템 제어기는 각 LUN에 저장된 추가 패리티 비트 각각에 하나 이상의 XOR 연산을 적용하여 LUN 패리티 코드워드를 생성할 수 있다.
일부 경우에 특정 유형의 리던던시 메타데이터를 저장하기 위해 메모리 디바이스의 개별 부분(예를 들어, 평면)이 지정될 수 있다. 호스트 데이터는 LUN으로 프로그래밍되기 때문에 메모리 서브시스템 제어기는 각 스트라이프에 대한 추가 패리티 데이터를 생성할 수 있고, 하나 이상의 메모리 디바이스의 지정된 부분에 생성된 추가 패리티 데이터를 저장할 수 있다. 또한, 메모리 서브시스템 제어기는 RAIN 리던던시 메타데이터와 LUN 리던던시 메타데이터를 생성하고 하나 이상의 메모리 디바이스의 다른 지정된 부분에 저장할 수 있다. 일 실시형태에서, 추가 패리티 데이터와 LUN 리던던시 메타데이터는 다른 지정된 부분에 저장될 수 있다. 메모리 서브시스템의 각 스트라이프와 연관된 다양한 유형의 리던던시 메타데이터를 하나 이상의 지정된 메모리 디바이스의 개별 부분에 저장함으로써 메모리 서브시스템 제어기는 다수의 메모리 디바이스 중 하나 이상에서 메모리 액세스 실패 후 메모리 서브시스템의 다수의 스트라이프와 연관된 각 LUN에 상주하는 호스트 데이터를 복구할 수 있다. 예를 들어, 메모리 서브시스템 제어기는 메모리 서브시스템의 일부(예를 들어, 메모리 페이지)에서 수행되는 메모리 액세스 동작(예를 들어, 판독 동작 등) 동안 실패가 발생했음을 검출할 수 있다. 메모리 액세스 동작 실패를 검출한 것에 응답하여 메모리 서브시스템 제어기는 메모리 페이지가 1) 호스트 데이터만을 포함하는지, 2) 호스트 데이터와 추가 패리티 데이터를 포함하는지, 3) 호스트 데이터, 추가 패리티 데이터 및 RAIN 리던던시 메타데이터(예를 들어, RAIN 패리티 코드워드)를 포함하는지 또는 4) RAIN 리던던시 메타데이터와 LUN 리던던시 메타데이터(예를 들어, 패리티 코드워드)를 포함하는지 여부를 결정할 수 있다. 호스트 데이터는 기본 패리티 데이터로 인코딩될 수 있다. 메모리 페이지가 호스트 데이터만을 포함한다고 결정한 것에 응답하여 메모리 서브시스템 제어기는 RAIN 패리티 메타데이터와 메모리 디바이스의 다른 부분에 프로그래밍된 나머지 호스트 데이터에 대한 일련의 XOR 연산을 사용하여 메모리 페이지의 호스트 데이터를 복구할 수 있다. 메모리 페이지가 호스트 데이터와 추가 패리티 데이터를 포함한다고 결정한 것에 응답하여 메모리 서브시스템 제어기는 RAIN 패리티 메타데이터와 나머지 호스트 데이터에 대한 일련의 XOR 연산을 사용하여 메모리 페이지의 호스트 데이터를 복구할 수 있고, LUN 패리티 데이터와 메모리 디바이스의 다른 부분에 프로그래밍된 나머지 추가 패리티 데이터를 사용하여 추가 패리티 데이터를 복구할 수 있다. 대안적으로, 일부 실시형태에서, 메모리 서브시스템 제어기가 기본 패리티 데이터를 사용하여 호스트 데이터를 복구하는 것을 실패한 것에 응답하여, 메모리 서브시스템 제어기는 추가 패리티 데이터와 일련의 XOR 연산을 사용하여 호스트 데이터를 복구하기 위해 추가 패리티 데이터를 사용할 수 있다. 메모리 페이지가 호스트 데이터, 추가 패리티 데이터 및 RAIN 패리티 메타데이터를 포함한다고 결정한 것에 응답하여 메모리 서브시스템 제어기는 위에서 설명된 방법을 사용하여 호스트 데이터와 추가 패리티 메타데이터를 복구하고, 호스트 데이터를 사용하여 RAIN 패리티 메타데이터를 재생성할 수 있다. 메모리 페이지가 RAIN 패리티 데이터와 LUN 패리티 데이터를 포함한다고 결정한 것에 응답하여 메모리 서브시스템 제어기는 호스트 데이터와 추가 패리티 데이터를 사용하여 RAIN 패리티 메타데이터와 LUN 패리티 데이터를 재생성할 수 있다. RAIN 패리티 데이터, LUN 패리티 데이터 및 추가 패리티 데이터를 다양한 메모리 디바이스의 특정 위치에 저장함으로써 메모리 서브시스템 제어기는 메모리 디바이스의 임의의 실패한 부분과 연관된 데이터 항목(data item)에 대한 데이터 복구 프로세스를 수행할 수 있다. 데이터 항목은 메모리 서브시스템의 LUN에 기록하고/하거나 LUN으로부터 판독된 데이터의 원자 단위(atomic unit)를 나타낸다. 예를 들어, 데이터 항목은 데이터 블록이나 키-값 쌍(key-value pair)에 대응할 수 있다. 데이터 항목을 복구한 것에 응답하여 데이터 항목은 동일하거나 다른 메모리 페이지에 프로그래밍될 수 있다. 일부 실시형태에서, LUN 패리티 데이터 및/또는 RAIN 패리티 데이터는 제2 계층 ECC 패리티를 사용하여 인코딩될 수 있다.
4개의 LUN을 포함하고, 각 LUN은 6개의 평면(예를 들어, 24개의 메모리 페이지)에 걸쳐 있는 일 실시형태에서, LUN 패리티 데이터와 RAIN 패리티 데이터는 5개의 메모리 페이지에 저장될 수 있다. 따라서, 본 발명의 장점은 호스트 데이터를 저장하는데 이용 가능한 메모리 공간의 양을 최대화하면서 제2 계층 ECC 패리티 메타데이터를 사용하여 인코딩된 호스트 데이터의 복구를 가능하게 하는 호스트 데이터 복구 방식을 제공하는 것을 포함하지만 이로 제한되지는 않는다. 제2 계층 ECC 패리티를 사용하여 호스트 데이터를 인코딩함으로써 메모리 서브시스템 제어기는 호스트 데이터의 에러를 검출하고 정정할 수 있다. 또한 RAIN 리던던시 메타데이터와 LUN 리던던시 메타데이터는 메모리 액세스 실패 후 메모리 서브시스템의 하나 이상의 메모리 디바이스의 LUN에서 데이터 항목을 복구할 수 있다. 따라서, 메모리 디바이스 실패 시 대규모 코드워드를 보호할 수 있는 동시에 메모리 서브시스템의 상당량의 공간을 호스트 데이터를 저장하는 데 이용할 수 있다. 그 결과 호스트 데이터에는 강력한 ECC 보호를 제공하는 동시에 상당한 양의 시스템 자원을 다른 프로세스에 이용 가능할 수 있게 하여 전체 시스템 효율성이 향상되고 전체 시스템 대기 시간이 단축된다.
도 1은 본 발명의 일부 실시형태에 따라 메모리 서브시스템(110)을 포함하는 예시적인 컴퓨팅 시스템(100)을 도시한다. 메모리 서브시스템(110)은 하나 이상의 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140)), 하나 이상의 비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130)), 또는 이들의 조합과 같은 매체를 포함할 수 있다.
메모리 서브시스템(110)은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 조합일 수 있다. 저장 디바이스의 예로는 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브, 내장형 멀티미디어 제어기(eMMC) 드라이브, 범용 플래시 저장(UFS) 드라이브, 보안 디지털(SD) 카드, 및 하드 디스크 드라이브(HDD)를 포함한다. 메모리 모듈의 예로는 듀얼 인라인 메모리 모듈(DIMM), 작은 아웃라인 DIMM(SO-DIMM) 및 다양한 유형의 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM)을 포함한다.
컴퓨팅 시스템(100)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 네트워크 서버, 모바일 디바이스, 차량(예를 들어, 비행기, 드론, 기차, 자동차 또는 기타 운송 수단), 사물 인터넷(IoT) 지원 디바이스, 내장형 컴퓨터(예를 들어, 차량, 산업 장비 또는 네트워크로 연결된 상용 디바이스에 포함된 컴퓨터)와 같은 컴퓨팅 디바이스 또는 메모리와 처리 디바이스를 포함하는 컴퓨팅 디바이스일 수 있다.
컴퓨팅 시스템(100)은 하나 이상의 메모리 서브시스템(110)에 결합된 호스트 시스템(120)을 포함할 수 있다. 일부 실시형태에서, 호스트 시스템(120)은 서로 다른 유형의 다수의 메모리 서브시스템(110)에 결합된다. 도 1은 하나의 메모리 서브시스템(110)에 결합된 호스트 시스템(120)의 일례를 도시한다. 본 명세서에 사용된 "~에 결합된" 또는 "~와 결합된"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결을 포함하여 유선이든 무선이든 간접 통신 연결 또는 직접 통신 연결(예를 들어, 개입 구성요소 없는 연결)일 수 있는 구성요소 간의 연결을 의미한다.
호스트 시스템(120)은 프로세서 칩셋, 및 이 프로세서 칩셋에 의해 실행되는 소프트웨어 스택을 포함할 수 있다. 프로세서 칩셋은 하나 이상의 코어, 하나 이상의 캐시, 메모리 제어기(예를 들어, NVDIMM 제어기) 및 저장 프로토콜 제어기(예를 들어, PCIe 제어기, SATA 제어기)를 포함할 수 있다. 호스트 시스템(120)은 예를 들어 메모리 서브시스템(110)에 데이터를 기록하고 메모리 서브시스템(110)으로부터 데이터를 판독하기 위해 메모리 서브시스템(110)을 사용한다.
호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브시스템(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예로는 직렬 고급 기술 부착(SATA) 인터페이스, 주변 기기 상호 연결 익스프레스(PCIe) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 파이버 채널, 직렬 부착 SCSI(SAS), 이중 데이터 속도(DDR) 메모리 버스, 소형 컴퓨터 시스템 인터페이스(SCSI), 이중 인라인 메모리 모듈(DIMM) 인터페이스(예를 들어, 이중 데이터 속도(DDR)를 지원하는 DIMM 소켓 인터페이스) 등을 포함하지만 이로 제한되지는 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브시스템(110)이 물리적 호스트 인터페이스(예를 들어, PCIe 버스)에 의해 호스트 시스템(120)과 결합될 때 구성요소(예를 들어, 메모리 디바이스(130))에 액세스하기 위해 NVM 익스프레스(NVMe) 인터페이스를 추가로 이용할 수 있다. 물리적 호스트 인터페이스는 메모리 서브시스템(110)과 호스트 시스템(120) 사이에 제어, 주소, 데이터 및 기타 신호를 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 일례로서 메모리 서브시스템(110)을 도시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다수의 개별 통신 연결, 및/또는 통신 연결의 조합을 통해 다수의 메모리 서브시스템에 액세스할 수 있다.
메모리 디바이스(130, 140)는 다양한 유형의 비휘발성 메모리 디바이스 및/또는 휘발성 메모리 디바이스의 임의의 조합을 포함할 수 있다. 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140))는 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(SDRAM)와 같은 랜덤 액세스 메모리(RAM)일 수 있지만 이로 제한되지는 않는다.
비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130))의 일부 예로는 비휘발성 메모리 셀의 교차점 어레이(cross-point array)인 3차원 교차점("3D 교차점") 메모리 디바이스와 같은 네거티브-AND(NAND)형 플래시 메모리 및 제자리 기록형 메모리(write-in-place memory)를 포함한다. 비휘발성 메모리 셀의 교차점 어레이는 적층 가능한 교차 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리와 달리 교차점 비휘발성 메모리는 제자리 기록형 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 이전에 소거된 비휘발성 메모리 셀 없이 프로그래밍될 수 있다. NAND형 플래시 메모리는 예를 들어 2차원 NAND(2D NAND)와 3차원 NAND(3D NAND)를 포함한다.
메모리 디바이스(130) 각각은 하나 이상의 메모리 셀 어레이를 포함할 수 있다. 예를 들어 단일 레벨 셀(SLC)과 같은 한 가지 유형의 메모리 셀은 셀당 1비트를 저장할 수 있다. 다중 레벨 셀(MLC), 3중 레벨 셀(TLC), 4중 레벨 셀(QLC) 및 5중 레벨 셀(PLC)과 같은 다른 유형의 메모리 셀은 셀당 다수의 비트를 저장할 수 있다. 일부 실시형태에서, 메모리 디바이스(130) 각각은 SLC, MLC, TLC, QLC, PLC 또는 이들의 임의의 조합과 같은 하나 이상의 메모리 셀 어레이를 포함할 수 있다. 일부 실시형태에서, 특정 메모리 디바이스는 메모리 셀의 SLC 부분, MLC 부분, TLC 부분, QLC 부분, 또는 PLC 부분을 포함할 수 있다. 메모리 디바이스(130)의 메모리 셀은 데이터를 저장하는 데 사용되는 메모리 디바이스의 논리 단위를 의미할 수 있는 페이지로 그룹화될 수 있다. 일부 유형의 메모리(예를 들어, NAND)에서 페이지는 블록을 형성하기 위해 그룹화될 수 있다.
비휘발성 메모리 셀의 3D 교차점 어레이 및 NAND형 플래시 메모리(예를 들어, 2D NAND, 3D NAND)와 같은 비휘발성 메모리 구성요소가 설명되어 있지만, 메모리 디바이스(130)는, 예를 들어, 판독 전용 메모리(ROM), 위상 변화 메모리(PCM), 자가 선택 메모리, 기타 칼코게나이드 기반 메모리, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전성 랜덤 액세스 메모리(FeRAM), 마그네토 랜덤 액세스 메모리(MRAM), 스핀 전달 토크(STT)-MRAM, 전도성 브리징 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), 네거티브-OR(NOR) 플래시 메모리 또는 전기적으로 소거 가능 프로그래밍 가능한 판독 전용 메모리(EEPROM)와 같은 임의의 다른 유형의 비휘발성 메모리에 기초할 수 있다.
메모리 서브시스템 제어기(115)(또는 단순화를 위해 제어기(115))는 메모리 디바이스(130)에서 데이터 판독, 데이터 기록 또는 데이터 소거와 같은 동작 및 기타 이러한 동작을 수행하기 위해 메모리 디바이스(130)와 통신할 수 있다. 메모리 서브시스템 제어기(115)는 하나 이상의 집적 회로 및/또는 이산 구성요소, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 하드웨어는 본 명세서에 설명된 동작을 수행하기 위한 전용 (즉, 하드 코딩된) 로직을 갖는 디지털 회로부를 포함할 수 있다. 메모리 서브시스템 제어기(115)는 마이크로제어기, 특수 목적 논리 회로부(예를 들어, 전계 프로그래밍 가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC) 등) 또는 다른 적합한 프로세서일 수 있다.
메모리 서브시스템 제어기(115)는 로컬 메모리(119)에 저장된 명령어를 실행하도록 구성된 하나 이상의 프로세서(예를 들어, 프로세서(117))를 포함하는 처리 디바이스를 포함할 수 있다. 도시된 예에서, 메모리 서브시스템 제어기(115)의 로컬 메모리(119)는 메모리 서브시스템(110)과 호스트 시스템(120) 간의 통신을 처리하는 것을 포함하여 메모리 서브시스템(110)의 동작을 제어하는 다양한 프로세스, 동작, 논리 흐름 및 루틴을 수행하기 위한 명령어를 저장하도록 구성된 내장형 메모리를 포함한다.
일부 실시형태에서, 로컬 메모리(119)는 메모리 포인터, 페치된 데이터 등을 저장하는 메모리 레지스터를 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로 코드를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)를 포함하는 것으로 도시되어 있으나, 본 발명의 다른 실시형태에서 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)를 포함하지 않고 대신 외부 제어(예를 들어, 외부 호스트에 의해 제공되거나 또는 메모리 서브시스템과 별개인 프로세서나 제어기에 의해 제공되는 제어)에 의존할 수 있다.
일반적으로, 메모리 서브시스템 제어기(115)는 호스트 시스템(120)으로부터 커맨드 또는 동작을 수신할 수 있고, 메모리 디바이스(130)에 대한 원하는 액세스를 달성하기 위해 커맨드 또는 동작을 명령어 또는 적절한 커맨드로 변환할 수 있다. 메모리 서브시스템 제어기(115)는 마모 평준화 동작, 가비지 수집 동작, 에러 검출 및 에러 정정 코드(ECC) 동작, 암호화 동작, 캐싱 동작, 및 논리 주소(예를 들어, 논리 블록 주소(LBA), 네임스페이스)와 메모리 디바이스(130)와 연관된 물리적 주소(예를 들어, 물리적 블록 주소) 간의 주소 변환과 같은 다른 동작을 담당할 수 있다. 메모리 서브시스템 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 추가로 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 커맨드를 메모리 디바이스(130)에 액세스하기 위한 커맨드 명령어로 변환할 수 있을 뿐만 아니라 메모리 디바이스(130)와 연관된 응답을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
메모리 서브시스템(110)은 또한 도시되지 않은 추가적인 회로부 또는 구성요소를 포함할 수 있다. 일부 실시형태에서, 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)로부터 주소를 수신하고 메모리 디바이스(130)에 액세스하기 위해 주소를 디코딩할 수 있는 캐시 또는 버퍼(예를 들어, DRAM) 및 주소 회로부(예를 들어, 행 디코더와 열 디코더)를 포함할 수 있다.
일부 실시형태에서, 메모리 디바이스(130)는 메모리 디바이스(130)의 하나 이상의 메모리 셀에 대한 동작을 실행하기 위해 메모리 서브시스템 제어기(115)와 함께 동작하는 로컬 매체 제어기(135)를 포함한다. 외부 제어기(예를 들어, 메모리 서브시스템 제어기(115))는 메모리 디바이스(130)를 외부적으로 관리할 수 있다(예를 들어, 메모리 디바이스(130)에 대한 매체 관리 동작을 수행할 수 있다). 일부 실시형태에서, 메모리 서브시스템(110)은 다이 상의 제어 로직(예를 들어, 로컬 제어기(132))을 갖는 원시 메모리 디바이스(130)인 관리형 메모리 디바이스 및 동일한 메모리 디바이스 패키지 내에서 매체 관리를 위한 제어기(예를 들어, 메모리 서브시스템 제어기(115))이다. 관리되는 메모리 디바이스의 일례로는 관리형 NAND(MNAND) 디바이스이다.
메모리 서브시스템(110)은 메모리 디바이스(130, 140)의 하나 이상의 부분에 저장된 호스트 데이터에 대해 생성된 리던던시 데이터를 관리할 수 있는 리던던시 메타데이터 관리자 구성요소(113)를 포함한다. 일부 실시형태에서, 메모리 서브시스템 제어기(115)는 리던던시 메타데이터 관리자 구성요소(113)의 적어도 일부를 포함한다. 예를 들어, 메모리 서브시스템 제어기(115)는 본 명세서에 설명된 동작을 수행하기 위해 로컬 메모리(119)에 저장된 명령어를 실행하도록 구성된 프로세서(117)(처리 디바이스)를 포함할 수 있다. 일부 실시형태에서, 리던던시 메타데이터 관리자 구성요소(113)는 호스트 시스템(120), 애플리케이션 또는 운영 체제의 일부이다.
리던던시 메타데이터 관리자 구성요소(113)는 2개 이상의 논리 메모리 유닛(LUN)에서 사용자 데이터 및/또는 메모리 페이지 그룹에 대한 리던던시 메타데이터를 생성하도록 구성될 수 있다. LUN은 다수의 평면, 블록 및/또는 다이에 걸쳐 있는 메모리 페이지의 그룹일 수 있다. LUN은 단일 동작으로 기록되거나 소거될 수 있는 메모리 디바이스의 개별 세그먼트를 나타낼 수 있다. 리던던시 메타데이터는 메모리 디바이스(130, 140)의 일부에서 메모리 액세스 동작(예를 들어, 기록 동작, 판독 동작 등)이 실패한 후 데이터 항목을 복구하기 위해 메모리 서브시스템 제어기(115)에 의해 사용될 수 있는 메모리 디바이스(130, 140)의 일부에 프로그래밍된 데이터 항목에 대해 생성된 메타데이터(예를 들어, 패리티 데이터)를 의미한다. 일부 실시형태에서, 리던던시 메타데이터 관리자 구성요소(113)(본 명세서에서는 구성요소(113)라고도 지칭됨)는 메모리 디바이스(130, 140)(또는 메모리 서브시스템(110)의 다른 메모리 디바이스(130, 140))에 저장된 데이터 항목 및 하나 이상의 다른 데이터 항목에 대한 리던던시 메타데이터에 기초하여 데이터 복구 동작(예를 들어, 하나 이상의 배타적 논리합(XOR) 연산)을 수행함으로써 실패한 데이터 항목을 계산하거나 재구성할 수 있다.
구성요소(113)는 저장된 데이터의 미리 결정된 위치(예를 들어, LUN의 다수의 평면에 걸친 호스트 데이터의 스트라이프, 각 평면의 각 메모리 페이지 내의 데이터의 위치 및/또는 LUN(메모리 페이지의 제1 사분면 페이지, 메모리 페이지의 제2 사분면 페이지 등) 등) 또는 저장된 데이터의 유형(예를 들어, 표준 코드워드, 추가 패리티 데이터 등)에 기초하여 다양한 유형의 리던던시 메타데이터를 생성할 수 있다. 일부 실시형태에서, 리던던시 메타데이터는 제1 계층 ECC 패리티 데이터(예를 들어, 기본 패리티 데이터), 제2 계층 ECC 패리티 데이터(예를 들어, 추가 패리티 데이터), RAIN 패리티 메타데이터 및 LUN 리던던시 메타데이터를 포함할 수 있다. RAIN 패리티 메타데이터는 호스트 데이터(예를 들어, 표준 코드워드)를 복구하는 데 사용될 수 있다. LUN 리던던시 메타데이터는 저장된 호스트 데이터에 대한 추가 패리티 데이터를 복구하는 데 사용될 수 있다.
도 2는 본 발명의 일부 실시형태에 따라 다중 평면 LUN의 세트에 대한 리던던시 메타데이터를 생성하기 위한 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그래밍 가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 작동되거나 실행되는 명령어), 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시형태에서, 방법(200)은 도 1의 리던던시 메타데이터 관리자 구성요소(113)에 의해 수행된다. 다른 또는 유사한 실시형태에서, 방법(200)의 하나 이상의 동작은 메모리 서브시스템 제어기(115)의 다른 구성요소에 의해 수행되거나 로컬 매체 제어기(135)의 구성요소에 의해 수행된다. 특정 시퀀스나 순서로 도시되어 있지만, 달리 명시하지 않는 한, 프로세스의 순서는 수정될 수 있다. 따라서, 도시된 실시형태는 단지 예시인 것으로만 이해되어야 하며, 도시된 프로세스는 다른 순서로 수행될 수 있고, 일부 프로세스는 병렬로 수행될 수 있다. 추가적으로, 다양한 실시형태에서 하나 이상의 프로세스는 생략될 수 있다. 따라서, 모든 실시형태에서 모든 프로세스가 요구되는 것은 아니다. 다른 프로세스 흐름도 가능하다.
블록(210)에서, 처리 로직은 하나 이상의 메모리 디바이스에 프로그래밍하기 위한 기록 데이터를 수신한다. 일부 실시형태에서, 기록 데이터는 호스트 시스템(120)으로부터 수신될 수 있다. 일부 실시형태에서, 기록 데이터는 대규모 코드워드의 세트를 포함할 수 있다. 각 대규모 코드워드는 호스트 데이터와 기본 패리티(제1 계층 ECC 패리티) 및 추가 패리티(제2 계층 ECC 패리티)를 포함하는 표준 코드워드로 구성될 수 있다.
다른 실시형태에서, 기록 데이터는 인코딩되지 않은 호스트 데이터를 포함한다. 인코딩되지 않은 호스트 데이터를 수신한 것에 응답하여 처리 로직은 호스트 데이터와 패리티 데이터를 사용하여 대규모 코드워드를 생성할 수 있다. 특히, 처리 로직은 먼저 수신된 호스트 데이터와 하나 이상의 XOR 연산에 기초하여 기본 패리티 데이터를 생성함으로써 표준 코드워드를 생성한다. 예시적인 예로서, 각각의 표준 코드워드는 크기가 4KB일 수 있고, 페이지의 사분면 크기로 프로그래밍 가능하다. 그러나, 본 발명의 실시형태는 임의의 크기의 페이지와 함께 사용될 수 있다는 점에 유의해야 한다. 그런 다음 처리 로직은 표준 코드워드와 하나 이상의 XOR 연산에 기초하여 추가 패리티 데이터를 생성함으로써 대규모 코드워드를 생성한다. 기본 패리티 데이터는 호스트 데이터가 손상된 경우 대응하는 호스트 데이터를 재구성하거나 재계산하는 데 사용될 수 있다. 기본 패리티 데이터와 결합된 추가 패리티 데이터는 더 강력한 정정 능력으로 표준 코드워드를 판독하는 데 실패한 경우 대응하는 표준 코드워드를 재구성하거나 재계산하는 데 사용될 수 있다.
일부 실시형태에서, 추가 패리티 데이터는 제2 계층 ECC 패리티를 사용하여 인코딩될 수 있다. 예를 들어, 추가 패리티 데이터에 기초하여 생성된 각 표준 코드워드를 인코딩하여 대규모 코드워드를 생성할 수 있다. 각 대규모 코드워드에 대한 추가 패리티 데이터는 지정된 구획에 프로그래밍될 수 있으며 이에 대해서는 도 3을 참조하여 보다 상세히 설명한다. 일부 실시형태에서, 특정 추가 패리티 데이터만이 제2 계층 ECC 패리티로 인코딩될 수 있다. 예를 들어, 추가 패리티 데이터를 저장하는 평면과는 다른 평면에 저장된 호스트 데이터 기반 표준 코드워드에 대응하는 추가 패리티 데이터는 제2 계층 ECC 패리티를 사용하여 인코딩될 수 있는 반면, 추가 패리티 데이터와 동일한 평면에 저장된 호스트 데이터 기반 표준 코드워드에 대응하는 추가 패리티 데이터는 동일한 평면의 제2 계층 ECC 코드워드와 상관된다. 다른 평면이 대응하는 추가 패리티 데이터를 저장하는, 표준 코드워드를 저장하는 평면이 실패한 경우, 추가 패리티 데이터는 실패한 표준 코드워드의 복구를 향상(예를 들어, 속도 향상)시킬 수 있다. 그러나, 표준 코드워드와 이에 대응하는 추가 패리티 데이터를 저장하는 평면이 실패한 경우, 표준 코드워드와 이에 대응하는 추가 패리티 데이터를 복구하기 위해 다른 복구 방법을 사용하므로 추가 패리티의 제2 계층 ECC 패리티는 필요치 않다.
블록(212)에서, 처리 로직은 하나 이상의 메모리 디바이스의 하나 이상의 LUN에 대규모 코드워드를 프로그래밍한다. 특히, 각 LUN은 메모리 서브시스템(110)의 메모리 디바이스(130, 140)에서 다수의 평면, 블록 및/또는 다이에 걸친 메모리 페이지의 스트라이프에 대응할 수 있다. 예시적인 예를 통해, 다수의 평면에 걸쳐 있는 메모리 페이지의 다수의 LUN이 이후에 설명된다. 각 LUN에서는 특정 유형의 데이터(예를 들어, 사용자 데이터, 인코딩된 데이터, 다양한 유형의 리던던시 데이터(추가 패리티 데이터, RAIN 패리티 메타데이터, LUN 패리티 메타데이터 등))를 저장하기 위해 메모리 페이지의 특정 구획을 지정할 수 있다. 각 대규모 코드워드에 대해 대응하는 표준 코드워드는 표준 코드워드용으로 지정된 LUN의 이용 가능한 페이지에 프로그래밍될 수 있으며, 각 강력한 코드워드의 추가 패리티는 대응하는 LUN의 지정된 구획(예를 들어, 지정된 사분면 페이지)에 프로그래밍될 수 있다. 지정된 구획은 도 3과 관련하여 보다 상세히 설명될 것이다.
블록(214)에서 처리 로직은 LUN 리던던시 메타데이터를 생성하고 하나 이상의 메모리 디바이스에 프로그래밍한다. LUN 리던던시 메타데이터는 하나 이상의 대규모 코드워드의 추가 패리티 데이터(예를 들어, 추가 패리티)를 복구하는 데 사용될 수 있다. 일부 실시형태에서, 처리 로직은 추가 패리티 데이터와 하나 이상의 XOR 연산에 기초하여 LUN 리던던시 메타데이터를 생성할 수 있다. 예를 들어, 처리 로직은 각 LUN에 저장된 각 추가 패리티 비트에 하나 이상의 XOR 연산을 적용할 수 있다. LUN 리던던시 메타데이터는 지정된 LUN의 지정된 구획에 프로그래밍될 수 있으며, 이에 대해서는 도 3을 참조하여 보다 상세히 설명한다. 추가 패리티 데이터를 저장하는 메모리 디바이스의 일부가 실패하여 대응하는 데이터가 손실되거나 손상된 경우, 처리 로직은 나머지 추가 패리티 데이터와 LUN 리던던시 메타데이터 간의 하나 이상의 XOR 연산에 기초하여 손실/손상된 데이터를 재구성할 수 있다.
블록(216)에서, 처리 로직은 RAIN 리던던시 메타데이터를 생성하고 하나 이상의 메모리 디바이스에 프로그래밍한다. 특히, 처리 로직은 각 메모리 페이지의 특정 구획에 저장된 데이터 항목(예를 들어, 표준 코드워드)에 기초하여 리던던시 메타데이터 생성 동작(예를 들어, 배타적 논리합(XOR) 연산)을 수행함으로써 RAIN 리던던시 메타데이터의 제1 세트(예를 들어, 제1 RAIN 코드워드)를 생성할 수 있다. 예를 들어, 처리 로직은 각 메모리 페이지의 제1 사분면 페이지에 저장된 표준 코드워드에 기초하여 XOR 연산을 수행함으로써 제1 RAIN 코드워드를 생성할 수 있다. 그런 다음 처리 로직은 각 메모리 페이지의 제2 사분면 페이지에 저장된 표준 코드워드에 기초하여 XOR 연산을 수행함으로써 제2 RAIN 코드워드를 생성할 수 있다. 그런 다음 처리 로직은 각 메모리 페이지의 제3 사분면 페이지에 저장된 표준 코드워드에 기초하여 XOR 연산을 수행함으로써 제3 RAIN 코드워드를 생성할 수 있다. 그런 다음 처리 로직은 각 메모리 페이지의 제4 사분면 페이지에 저장된 표준 코드워드에 기초하여 XOR 연산을 수행함으로써 제4 RAIN 코드워드를 생성할 수 있다. 각각의 RAIN 코드워드는 지정된 LUN의 지정된 구획에 프로그래밍될 수 있으며, 이에 대해서는 도 3을 참조하여 보다 상세히 설명한다.
일부 실시형태에서, 각 RAIN 코드워드는 제2 계층 ECC 패리티를 사용하여 추가로 인코딩될 수 있다. 예를 들어, 처리 로직은 RAIN 스트라이프를 구성하는 호스트 데이터의 추가 패리티 데이터에 대해 하나 이상의 XOR 연산을 수행하여 각 RAIN 코드워드에 대한 추가 패리티 메타데이터(이하 "추가 RAIN 패리티")를 생성할 수 있다. 추가 RAIN 패리티 데이터는 지정된 LUN의 지정된 구획에 프로그래밍될 수 있으며, 이에 대해서는 도 3을 참조하여 보다 상세히 설명한다.
도 3은 본 발명의 일부 실시형태에 따라 LUN의 세트에 리던던시 메타데이터를 저장하기 위한 예시적인 구성의 예시를 도시한다. 도시된 바와 같이, LUN(312A-D)은 도 1과 관련하여 설명된 하나 이상의 메모리 디바이스(130, 140)에 대응할 수 있는 평면(314A-F)에 걸쳐 있다. 주목해야 할 점은 도 3은 (메모리 서브시스템 제어기(115)(미도시)에 연결될 수 있는) 6개의 평면을 도시하지만, 본 발명의 실시형태는 임의의 개수의 메모리 서브시스템 제어기(예를 들어, 하나의 메모리 서브시스템 제어기(115), 두 개의 메모리 서브시스템 제어기(115) 등)에 연결된 임의의 개수의 평면, 블록 및/또는 다이에 관한 것일 수 있다.
도 3에 도시된 바와 같이, 각 LUN(312A-D)은 6개의 평면(예를 들어, 평면(314A-F))에 걸쳐 있는 6개의 메모리 페이지(각 메모리 페이지는 4개의 사분면 페이지로 분할됨)의 스트라이프를 포함한다. 각 표준 코드워드는 사분면 페이지에 저장될 수 있다. 도시된 바와 같이 LUN(312A-C)의 경우 26개의 사분면 페이지 중 처음 25개는 표준 코드워드를 저장하도록 구성된다. LUN(312D)의 경우 26개의 사분면 페이지 중 처음 20개는 표준 코드워드를 저장하도록 구성된다. 각 LUN(312A-C)의 마지막 사분면 페이지는 각 개별 LUN에 저장된 표준 코드워드에 대한 추가 패리티 데이터를 저장하도록 구성된다. 예를 들어, 사분면 페이지(322)는 LUN(312A)에 저장된 23개의 표준 코드워드에 대한 추가 패리티 메타데이터를 저장하도록 구성될 수 있고, 사분면 페이지(324)는 LUN(312B)에 저장된 23개의 표준 코드워드에 대한 추가 패리티 데이터를 저장하도록 구성될 수 있고, 사분면 페이지(326)는 LUN(312C)에 저장된 23개의 표준 코드워드에 대한 추가 패리티 데이터를 저장하도록 구성될 수 있다. LUN(312D)과 관련하여, LUN(312D)의 평면(314E)의 제3 사분면 페이지(예를 들어, 사분면 페이지(328))는 LUN(312D)에 저장된 18개의 표준 코드워드에 대한 추가 패리티 데이터를 저장하도록 구성될 수 있다.
RAIN 패리티 코드워드(332, 334, 336, 338) 각각은 LUN(312D)에 저장될 수 있다. 특히, LUN(312D)의 평면(314F)의 제1 사분면 페이지는 각 메모리 페이지의 제1 사분면 페이지에 저장된 표준 코드워드에 대해 생성된 RAIN 패리티 코드워드(332)를 저장하도록 구성될 수 있고, LUN(312D)의 평면(314F)의 제2 사분면 페이지는 각 메모리 페이지의 제2 사분면 페이지에 저장된 표준 코드워드에 대해 생성된 RAIN 패리티 코드워드(334)를 저장하도록 구성될 수 있고, LUN(312D)의 평면(314F)의 제3 사분면 페이지는 각 메모리 페이지의 제3 사분면 페이지에 저장된 표준 코드워드에 대해 생성된 RAIN 패리티 코드워드(336)를 저장하도록 구성될 수 있고, LUN(312D)의 평면(314E)의 제4 사분면 페이지는 각 메모리 페이지의 제4 사분면 페이지에 저장된 표준 코드워드에 대해 생성된 RAIN 패리티 코드워드(338)를 저장하도록 구성될 수 있다.
LUN 리던던시 메타데이터(342)는 LUN(312D)의 평면(314F)에 저장될 수 있다. 특히, LUN(312D)의 마지막 사분면 페이지의 일부는 LUN 리던던시 메타데이터(342)를 저장할 수 있다. 또한, LUN(312D)의 평면(314F)의 마지막 사분면 페이지의 다른 부분은 각 RAIN 코드워드(예를 들어, 추가 RAIN 패리티)에 대해 생성된 제2 계층 ECC 패리티 데이터(344)를 저장하도록 구성될 수 있다. 도 5와 관련하여 보다 상세히 설명된 바와 같이, 다양한 유형의 리던던시 메타데이터(예를 들어, 추가 패리티 메타데이터와 별개인 메모리 페이지에 있는 LUN 패리티 데이터)를 프로그래밍함으로써 메모리 서브시스템 제어기는 다수의 메모리 디바이스 중 하나 이상에서 메모리 액세스 실패 후 메모리 서브시스템의 다수의 스트라이프와 연관된 각 LUN에 있는 호스트 데이터를 복구할 수 있다.
도 4는 본 발명의 일부 실시형태에 따라 LUN의 세트에 리던던시 메타데이터를 저장하기 위한 예시적인 구성의 또 다른 예시를 도시한다. 도시된 바와 같이, LUN(412A-D)은 도 1과 관련하여 설명된 하나 이상의 메모리 디바이스(130, 140)에 대응할 수 있는 평면(414A-F)에 걸쳐 있다. 주목해야 할 점은 도 4는 (메모리 서브시스템 제어기(115)(미도시)에 연결될 수 있는) 6개의 평면을 도시하지만, 본 발명의 실시형태는 임의의 개수의 메모리 서브시스템 제어기(예를 들어, 하나의 메모리 서브시스템 제어기(115), 두 개의 메모리 서브시스템 제어기(115) 등)에 연결된 임의의 개수의 평면, 블록 및/또는 다이에 관한 것일 수 있다. 도시된 바와 같이, 리던던시 메타데이터는 도 3에 도시된 바와 같이 마지막 두 개의 평면보다는 LUN(412D)의 처음 두 개의 평면(예를 들어, 평면(414A-B))에 저장된다. 특히, 사분면 페이지(422)는 LUN(412A)에 저장된 23개의 표준 코드워드에 대한 추가 패리티 메타데이터를 저장하도록 구성될 수 있고, 사분면 페이지(424)는 LUN(412B)에 저장된 23개의 표준 코드워드에 대한 추가 패리티 데이터를 저장하도록 구성될 수 있고, 사분면 페이지(426)는 LUN(412C)에 저장된 23개의 표준 코드워드에 대한 추가 패리티 데이터를 저장하도록 구성될 수 있다. LUN(412D)과 관련하여, LUN(412D)의 평면(414B)의 제2 사분면 페이지(예를 들어, 사분면 페이지(428))는 LUN(412D)에 저장된 18개의 표준 코드워드에 대한 추가 패리티 데이터를 저장하도록 구성될 수 있다. RAIN 패리티 코드워드(432, 434, 436, 438) 각각은 LUN(412D)의 처음 두 개의 평면(예를 들어 평면(414A-B))에 저장될 수 있다. 각 RAIN 코드워드에 대한 LUN 리던던시 메타데이터(442)와 제2 계층 ECC 패리티 데이터(444)는 LUN(412D)의 평면(414A)에 저장될 수 있다. 도 4는 리던던시 메타데이터가 다양한 구성을 사용하여 저장될 수 있으며, 메모리 페이지, 평면 또는 블록 실패 시 나머지 데이터 항목을 사용하여 데이터 항목 중 임의의 항목을 복구할 수 있음을 보여준다. 특히, RAIN 패리티 데이터, LUN 패리티 데이터 및 추가 패리티 데이터를 다양한 메모리 디바이스의 특정 위치에 저장함으로써 메모리 서브시스템 제어기는 메모리 디바이스의 임의의 실패한 부분과 연관된 데이터 항목에 대해 데이터 복구 프로세스를 수행할 수 있다.
도 5는 본 발명의 일부 실시형태에 따라 리던던시 메타데이터를 사용하여 데이터를 복구하기 위한 예시적인 방법(500)의 흐름도이다. 방법(500)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그래밍 가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 작동되거나 실행되는 명령어) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시형태에서, 방법(500)은 도 1의 리던던시 메타데이터 관리자 구성요소(113)에 의해 수행된다. 다른 또는 유사한 실시형태에서, 방법(200)의 하나 이상의 동작은 메모리 서브시스템 제어기(115)의 다른 구성요소에 의해 수행되거나 로컬 매체 제어기(135)의 구성요소에 의해 수행된다. 특정 시퀀스나 순서로 도시되어 있지만, 달리 명시하지 않는 한, 프로세스의 순서는 수정될 수 있다. 따라서, 도시된 실시형태는 단지 예시인 것으로만 이해되어야 하며, 도시된 프로세스는 다른 순서로 수행될 수 있고, 일부 프로세스는 병렬로 수행될 수 있다. 추가적으로, 다양한 실시형태에서 하나 이상의 프로세스는 생략될 수 있다. 따라서, 모든 실시형태에서 모든 프로세스가 요구되는 것은 아니다. 다른 프로세스 흐름도 가능하다.
동작(510)에서, 판독 요청을 처리한 것에 응답하여, 처리 로직은 메모리 액세스 실패가 발생했다고 결정할 수 있다. 예를 들어, 처리 로직은 결함, 에러, 데이터 손상 등으로 인해 요청된 데이터를 검색할 수 없다.
동작(512)에서, 처리 로직은 호스트 데이터만을 저장하는 메모리 디바이스(예를 들어, LUN(312A-C)의 평면(314A-314E) 또는 LUN(312D)의 평면(314A-D))의 구획(예를 들어, 메모리 페이지)에서 메모리 액세스 실패가 발생했는지 여부를 결정한다. 예를 들어, 처리 로직은 판독 요청과 연관된 물리적 주소가 호스트 데이터만을 저장하도록 구성된 메모리 디바이스의 메모리 페이지와 상관되는지 여부를 결정할 수 있다. 판독 요청이 호스트 데이터만을 저장하는 메모리 디바이스의 메모리 페이지와 연관된다고 결정한 것에 응답하여, 처리 로직은 동작(514)으로 진행한다. 판독 요청이 호스트 데이터만을 저장하는 메모리 디바이스의 메모리 페이지와 연관되지 않는다고 결정한 것에 응답하여, 처리 로직은 동작(516)으로 진행한다.
동작(514)에서 처리 로직은 호스트 데이터 전용 메모리 페이지를 복구한다. 예를 들어, 처리 로직은 메모리 액세스 실패가 추가 패리티 데이터를 저장하는 임의의 페이지, 블록 및/또는 평면에 영향을 미치지 않으므로 추가 패리티 데이터를 사용하여 대응하는 스트라이프의 호스트 데이터 및/또는 RAIN 패리티 코드워드를 정정할 수 있다. 일부 실시형태에서, 처리 로직은 LUN(예를 들어, LUN(312A-D))의 나머지 호스트 데이터와 RAIN 리던던시 메타데이터를 사용하여 메모리 페이지의 호스트 데이터를 재구성한다. 예를 들어, 처리 로직은 실패한 메모리 페이지의 호스트 데이터를 재구성하기 위해 RAIN 패리티 데이터 및 나머지 호스트 데이터 기반 코드워드(표준 코드워드 또는 대규모 코드워드)에 대해 RAIN 알고리즘(예를 들어, 일련의 XOR 연산)을 사용할 수 있다. 구체적으로, 각 메모리 페이지의 제1 사분면 페이지에 저장된 제1 RAIN 코드워드와 나머지 표준 코드워드는 실패한 메모리 페이지의 제1 사분면 페이지에 저장된 표준 코드워드를 재구성하는 데 사용될 수 있고, 각 메모리 페이지의 제2 사분면 페이지에 저장된 제2 RAIN 코드워드와 나머지 표준 코드워드는 실패한 메모리 페이지의 제2 사분면 페이지에 저장된 표준 코드워드를 재구성하는 데 사용될 수 있고, 각 메모리 페이지의 제3 사분면 페이지에 저장된 제3 RAIN 코드워드와 나머지 표준 코드워드는 실패한 메모리 페이지의 제3 사분면 페이지에 저장된 표준 코드워드를 재구성하는 데 사용될 수 있고, 각 메모리 페이지의 제4 사분면 페이지에 저장된 제4 RAIN 코드워드와 나머지 표준 코드워드는 실패한 메모리 페이지의 제4 사분면 페이지에 저장된 표준 코드워드를 재구성하는 데 사용될 수 있다.
동작(516)에서, 처리 로직은 호스트 데이터에 대한 추가 패리티 데이터를 저장하는 구획에서 메모리 액세스 실패가 발생했는지 여부를 결정한다(예를 들어, 판독 요청은 예를 들어, LUN(312A-C)의 평면(314F)과 LUN(312D)의 평면(314E)과 같은, 호스트 데이터에 대한 추가 패리티 데이터를 저장하는 메모리 디바이스의 메모리 페이지와 연관된다). 호스트 데이터에 대한 추가 패리티 데이터를 저장하는 메모리 디바이스의 구획에서 메모리 액세스 실패가 발생했다고 결정한 것에 응답하여, 처리 로직은 동작(518)으로 진행한다. 호스트 데이터에 대한 추가 패리티 데이터를 저장하는 메모리 디바이스의 구획에서 메모리 액세스 실패가 발생하지 않았다고 결정한 것에 응답하여, 처리 로직은 동작(522)으로 진행한다.
단계(518)에서 처리 로직은 메모리 페이지의 호스트 데이터와 추가 패리티 데이터를 복구한다. 특히 처리 로직은 RAIN 패리티 데이터와 나머지 호스트 데이터에 대한 일련의 XOR 연산을 사용하여 메모리 페이지의 호스트 데이터를 복구할 수 있다. 처리 로직은 LUN 패리티 데이터와 LUN과 연관된 다른 메모리 페이지에 프로그래밍된 나머지 추가 패리티 데이터를 사용하여 추가 패리티 데이터를 복구할 수 있다.
동작(520)에서, 처리 로직은 RAIN 패리티 데이터를 저장하는 구획(예를 들어, LUN(312D)의 평면(314E))에서 메모리 액세스 실패가 발생했는지 여부를 결정한다. RAIN 패리티 데이터를 저장하는 구획에서 메모리 액세스 실패가 발생했다고 결정한 경우, 처리 로직은 동작(522)으로 진행한다. RAIN 패리티 데이터를 저장하는 구획에서 메모리 액세스 실패가 발생하지 않았다고 결정한 것에 응답하여 처리 로직은 방법(500)을 종료한다.
단계(520)에서 처리 로직은 호스트 데이터와 추가 패리티 데이터를 사용하여 RAIN 패리티 데이터와 LUN 패리티 데이터를 재생성한다. 예를 들어, 처리 로직은 호스트 데이터(예를 들어, 표준 코드워드)에 하나 이상의 XOR 연산을 적용하여 RAIN 패리티 코드워드를 재생성할 수 있다. 처리 로직은 추가 패리티 데이터에 하나 이상의 XOR 연산을 적용하여 LUN 패리티 데이터를 재생성할 수 있다.
도 6은 기계로 하여금 본 명세서에 논의된 방법론 중 임의의 하나 이상을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템(600)의 예시적인 기계를 도시한다. 일부 실시형태에서, 컴퓨터 시스템(600)은 메모리 서브시스템(예를 들어, 도 1의 메모리 서브시스템(110))을 포함하거나, 메모리 서브시스템에 결합되거나, 메모리 서브시스템을 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있고, 또는 제어기의 동작을 수행하는 데 (예를 들어, 운영 체제를 실행하여 도 1의 리던던시 메타데이터 관리자 구성요소(113)에 대응하는 동작을 수행하는 데) 사용될 수 있다. 대안적인 실시형태에서, 기계는 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 기계에 연결(예를 들어, 네트워크로 연결)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 자격으로 동작하거나, 피어 투 피어(또는 분산) 네트워크 환경에서 피어 기계로 동작하거나, 또는 클라우드 컴퓨팅 인프라 또는 환경에서 서버 또는 클라이언트 기계로 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 휴대 정보 단말기(PDA), 휴대폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 임의의 기계에 의해 수행될 동작을 지정하는 일련의 명령어(순차적 또는 기타)를 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 도시되어 있지만, "기계"라는 용어는 또한 본 명세서에 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 명령어의 세트(또는 다수의 세트)를 개별적으로 또는 공동으로 실행하는 임의의 기계 집합을 포함하는 것으로 이해되어야 한다.
예시적인 컴퓨터 시스템(600)은 버스(630)를 통해 서로 통신하는, 처리 디바이스(602), 주 메모리(504)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 RDRAM과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(606)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등) 및 데이터 저장 시스템(618)을 포함한다.
처리 디바이스(602)는 마이크로프로세서, 중앙 처리 유닛 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 보다 구체적으로, 처리 디바이스는 복잡한 명령어 세트 컴퓨팅(CISC) 마이크로프로세서, 감소된 명령어 세트 컴퓨팅(RISC) 마이크로프로세서, 매우 긴 명령어 워드(VLIW) 마이크로프로세서, 또는 다른 명령어 세트를 구현하는 프로세서, 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(602)는 또한 주문형 집적 회로(ASIC), 전계 프로그래밍 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(602)는 본 명세서에 논의된 동작 및 단계를 수행하기 위한 명령어(626)를 실행하도록 구성된다. 컴퓨터 시스템(600)은 네트워크(620)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(608)를 추가로 포함할 수 있다.
데이터 저장 시스템(518)은 본 명세서에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 하나 이상의 명령어 세트(626) 또는 소프트웨어를 저장하는 기계 판독 가능 저장 매체(624)(컴퓨터 판독 가능 매체라고도 알려짐)를 포함할 수 있다. 또한 명령어(626)는 또한 기계 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(600), 주 메모리(604) 및 처리 디바이스(602)에 의해 실행되는 동안 주 메모리(604) 내에 및/또는 처리 디바이스(602) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능 저장 매체(624), 데이터 저장 시스템(618) 및/또는 주 메모리(604)는 도 1의 메모리 서브시스템(110)에 대응할 수 있다.
일 실시형태에서, 명령어(626)는 전압 빈 경계(bin boundary) 구성요소(예를 들어, 도 1의 리던던시 메타데이터 관리자 구성요소(113))에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 기계 판독 가능 저장 매체(624)는 예시적인 실시형태에서 단일 매체인 것으로 도시되어 있으나, "기계 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다수의 매체를 포함하는 것으로 간주되어야 한다. 또한 "기계 판독 가능 저장 매체"라는 용어는, 기계에 의해 실행되기 위한 일련의 명령어를 저장하거나 인코딩할 수 있고, 기계로 하여금 본 발명의 방법론 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서 "기계 판독 가능 저장 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이로 제한되지 않는 것으로 간주되어야 한다.
이전의 상세한 설명의 일부 부분은 컴퓨터 메모리 내의 데이터 비트에 대한 동작 알고리즘 및 기호 표현의 관점에서 제시되었다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 당업자가 자신의 작업 내용을 다른 당업자에게 가장 효과적으로 전달하기 위해 사용하는 방식이다. 여기에서 그리고 일반적으로 알고리즘은 원하는 결과를 이끌어내는 일관된 동작 시퀀스인 것으로 간주된다. 동작은 물리량의 물리적 조작이 필요한 동작이다. 반드시 그런 것은 아니지만 일반적으로 이러한 양은 저장, 결합, 비교 및 기타 조작이 가능한 전기 또는 자기 신호의 형태를 취한다. 주로 일반적인 사용법으로 인해 이러한 신호를 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 지칭하는 것이 때때로 편리한 것으로 입증되었다.
그러나 이러한 모든 용어 및 유사한 용어는 적절한 물리적 수량과 연관되어야 하며, 이러한 수량에 적용되는 단지 편리한 라벨일 뿐이라는 점을 명심해야 한다. 본 발명은 컴퓨터 시스템의 레지스터와 메모리 내의 물리적 (전자적) 양으로 표현된 데이터를, 컴퓨터 시스템 메모리나 레지스터 또는 기타 정보 저장 시스템 내 물리적 양으로 유사하게 표현된 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 작용 및 프로세스를 의미할 수 있다.
본 발명은 또한 본 명세서의 동작을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 컴퓨터 시스템 버스에 각각 결합된, 플로피 디스크, 광학 디스크, CD-ROM 및 광자기 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어를 저장하는 데 적합한 임의의 유형의 매체를 포함하는 임의의 유형의 디스크를 포함하지만 이로 제한되지 않는 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본 명세서에 제시된 알고리즘과 디스플레이는 본질적으로 임의의 특정 컴퓨터나 기타 장치와 관련이 없다. 다양한 범용 시스템이 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 이러한 다양한 시스템의 구조는 아래 설명에 제시된 대로 나타난다. 또한, 본 발명은 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 명세서에 설명된 본 발명의 교시를 구현하기 위해 다양한 프로그래밍 언어가 사용될 수 있는 것으로 이해된다.
본 발명은 본 발명에 따른 프로세스를 수행하도록 컴퓨터 시스템(또는 다른 전자 디바이스)을 프로그래밍하는 데 사용될 수 있는 명령어를 저장하는 기계 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능 매체는 기계(예를 들어, 컴퓨터)가 판독할 수 있는 형태로 정보를 저장하는 임의의 메커니즘을 포함한다. 일부 실시형태에서, 기계 판독 가능(예를 들어, 컴퓨터 판독 가능) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 구성요소 등과 같은 기계(예를 들어, 컴퓨터) 판독 가능 저장 매체를 포함한다.
전술한 명세서에서, 본 발명의 실시형태는 그 특정 예시적인 실시형태를 참조하여 설명되었다. 다음의 청구범위에 제시된 본 발명의 실시형태의 더 넓은 사상과 범위를 벗어나지 않고 다양한 수정이 본 발명에 이루어질 수 있다는 것은 명백하다. 따라서, 본 명세서와 도면은 본 발명을 제한하는 의미가 아니라 본 발명을 예시하는 의미로 간주되어야 한다.

Claims (20)

  1. 방법으로서,
    복수의 코드워드(codeword)를 메모리 서브시스템의 하나 이상의 메모리 페이지에 프로그래밍하는 단계로서, 상기 메모리 서브시스템의 각 메모리 페이지는 상기 메모리 서브시스템의 복수의 논리 단위 중 논리 단위, 및 상기 메모리 서브시스템의 복수의 평면(plane) 중 평면 또는 상기 메모리 서브시스템의 복수의 블록(block) 중 블록 중 적어도 하나와 연관되고, 상기 복수의 코드워드의 각 코드워드는 호스트 데이터와 기본 패리티 비트를 포함하는, 상기 복수의 코드워드를 하나 이상의 메모리 페이지에 프로그래밍하는 단계;
    복수의 추가 패리티 비트를 상기 메모리 서브시스템의 하나 이상의 메모리 페이지에 프로그래밍하는 단계로서, 상기 복수의 추가 패리티 비트의 각 추가 패리티 비트는 상기 복수의 코드워드의 각 코드워드와 연관된, 상기 복수의 추가 패리티 비트를 하나 이상의 메모리 페이지에 프로그래밍하는 단계;
    상기 추가 패리티 비트 각각에 대응하는 리던던시 메타데이터(redundancy metadata)의 제1 세트를 생성하는 단계; 및
    상기 복수의 추가 패리티 비트를 저장하는 임의의 메모리 페이지와 별개인 상기 메모리 서브시스템의 메모리 페이지에 상기 리던던시 메타데이터의 제1 세트를 프로그래밍하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    코드워드의 세트에 대응하는 리던던시 메타데이터의 제2 세트를 생성하는 단계; 및
    상기 리던던시 메타데이터의 제1 세트를 저장하는 상기 메모리 서브시스템의 메모리 페이지에 상기 리던던시 메타데이터의 제2 세트를 프로그래밍하는 단계
    를 추가로 포함하는, 방법.
  3. 제1항에 있어서,
    상기 리던던시 메타데이터의 제1 세트에 대한 제2 계층 패리티 메타데이터를 생성하는 단계; 및
    상기 리던던시 메타데이터의 제1 세트를 저장하는 상기 메모리 서브시스템의 메모리 페이지에 상기 패리티 메타데이터를 프로그래밍하는 단계
    를 추가로 포함하는, 방법.
  4. 제1항에 있어서, 상기 리던던시 메타데이터의 제1 세트를 생성하는 단계는 상기 추가 패리티 비트에 기초하여 하나 이상의 배타적 논리합(XOR) 연산을 실행하는 단계를 포함하는, 방법.
  5. 제2항에 있어서,
    상기 리던던시 메타데이터의 제2 세트에 대한 패리티 메타데이터를 생성하는 단계; 및
    상기 리던던시 메타데이터의 제1 세트를 저장하는 상기 메모리 서브시스템의 메모리 페이지에 상기 패리티 메타데이터를 프로그래밍하는 단계
    를 추가로 포함하는, 방법.
  6. 제1항에 있어서,
    상기 메모리 서브시스템의 메모리 페이지에 저장된 데이터 항목에 대한 판독 요청을 수신한 것에 응답하여 판독 에러가 발생했다고 결정하는 단계;
    상기 판독 에러를 경험한 메모리 페이지가 상기 리던던시 메타데이터의 제1 세트를 저장했다고 결정하는 단계;
    상기 리던던시 메타데이터의 제1 세트를 재생성하는 단계; 및
    상기 리던던시 메타데이터의 재생성된 세트를 상기 메모리 서브시스템의 다른 메모리 페이지에 저장하는 단계
    를 추가로 포함하는, 방법.
  7. 제2항에 있어서,
    상기 메모리 서브시스템의 메모리 페이지에 저장된 데이터 항목에 대한 판독 요청을 수신한 것에 응답하여 판독 에러가 발생했다고 결정하는 단계;
    상기 판독 에러를 경험한 메모리 페이지가 상기 리던던시 메타데이터의 제2 세트를 저장했다고 결정하는 단계;
    상기 리던던시 메타데이터의 제2 세트를 재생성하는 단계; 및
    상기 리던던시 메타데이터의 재생성된 세트를 상기 메모리 서브시스템의 다른 메모리 페이지에 저장하는 단계
    를 추가로 포함하는, 방법.
  8. 시스템으로서,
    각각이 하나 이상의 메모리 페이지를 포함하는 복수의 블록으로서, 상기 메모리 페이지는 복수의 스트라이프(stripe)로 구성되고, 상기 복수의 스트라이프 각각은 복수의 평면 또는 상기 복수의 블록 각각의 적어도 하나의 메모리 페이지를 포함하는, 상기 복수의 블록; 및
    상기 복수의 평면 또는 상기 복수의 블록 각각에 결합된 처리 디바이스
    를 포함하고, 상기 처리 디바이스는,
    데이터 항목의 세트에 액세스하는 것과 연관된 에러를 검출하는 단계로서, 상기 데이터 항목의 세트는 상기 복수의 스트라이프 중 스트라이프와 연관된 각 메모리 페이지에 프로그래밍된, 상기 에러를 검출하는 단계;
    상기 데이터 항목의 세트가 하나 이상의 코드워드, 추가 패리티 메타데이터, 독립적인 네거티브-AND(NAND)의 리던던트 어레이(RAIN) 리던던시 메타데이터, 또는 논리 단위(LUN) 리던던시 메타데이터 중 적어도 하나를 포함하는지 여부를 결정하는 단계;
    상기 데이터 항목의 세트가 하나 이상의 코드워드를 포함한다고 결정한 것에 응답하여, RAIN 리던던시 메타데이터에 적어도 부분적으로 기초하여 상기 하나 이상의 코드워드 각각을 복구하기 위해 제1 데이터 복구 프로세스를 수행하는 단계;
    상기 데이터 항목의 세트가 추가 패리티 메타데이터를 포함한다고 결정한 것에 응답하여, LUN 리던던시 메타데이터에 적어도 부분적으로 기초하여 상기 추가 패리티 메타데이터를 복구하기 위해 제2 데이터 복구 프로세스를 수행하는 단계;
    상기 데이터 항목의 세트가 RAIN 리던던시 메타데이터를 포함한다고 결정한 것에 응답하여, 상기 복수의 블록의 복수의 평면에 저장된 코드워드의 하나 이상의 세트에 적어도 부분적으로 기초하여 상기 RAIN 리던던시 메타데이터를 재생성하기 위해 제1 데이터 재구성 프로세스를 수행하는 단계; 및
    상기 데이터 항목의 세트가 LUN 리던던시 메타데이터를 포함한다고 결정한 것에 응답하여, 상기 복수의 블록의 복수의 평면에 저장된 추가 패리티 메타데이터에 적어도 부분적으로 기초하여 상기 LUN 리던던시 메타데이터를 재생성하기 위해 제2 데이터 재구성 프로세스를 수행하는 단계
    를 포함하는 동작을 수행하는, 시스템.
  9. 제8항에 있어서, 상기 RAIN 리던던시 메타데이터와 상기 LUN 리던던시 메타데이터는 동일한 메모리 페이지에 저장되는, 시스템.
  10. 제8항에 있어서, 상기 LUN 리던던시 메타데이터와 상기 추가 패리티 메타데이터는 상기 메모리 서브시스템 제어기의 다른 메모리 페이지에 저장되는, 시스템.
  11. 제8항에 있어서, 상기 제2 복구 프로세스를 수행하는 단계는 상기 LUN 리던던시 메타데이터 및 상기 메모리 서브시스템에 저장된 나머지 추가 패리티 메타데이터에 기초하여 하나 이상의 배타적 논리합(XOR) 연산을 실행하는 단계를 포함하는, 시스템.
  12. 제8항에 있어서, 상기 제2 데이터 재구성 프로세스를 수행하는 단계는 상기 메모리 서브시스템에 저장된 추가 패리티 메타데이터에 기초하여 하나 이상의 배타적 논리합(XOR) 연산을 실행하는 단계를 포함하는, 시스템.
  13. 제8항에 있어서, 상기 LUN 리던던시 메타데이터는 패리티 메타데이터를 사용하여 인코딩되는, 시스템.
  14. 명령어를 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령어는, 처리 디바이스에 의해 실행될 때, 상기 처리 디바이스로 하여금,
    복수의 코드워드를 메모리 서브시스템의 하나 이상의 메모리 페이지에 프로그래밍하는 단계로서, 상기 메모리 서브시스템의 각 메모리 페이지는 상기 메모리 서브시스템의 복수의 논리 단위 중 논리 단위, 및 상기 메모리 서브시스템의 복수의 평면 중 평면 또는 상기 메모리 서브시스템의 복수의 블록 중 블록 중 적어도 하나와 연관되고, 상기 복수의 코드워드의 각 코드워드는 호스트 데이터와 기본 패리티 비트를 포함하는, 상기 복수의 코드워드를 하나 이상의 메모리 페이지에 프로그래밍하는 단계;
    복수의 추가 패리티 비트를 상기 메모리 서브시스템의 하나 이상의 메모리 페이지에 프로그래밍하는 단계로서, 상기 복수의 추가 패리티 비트의 각 추가 패리티 비트는 상기 복수의 코드워드의 코드워드와 연관된, 상기 복수의 추가 패리티 비트를 하나 이상의 메모리 페이지에 프로그래밍하는 단계;
    상기 추가 패리티 비트 각각에 대응하는 리던던시 메타데이터의 제1 세트를 생성하는 단계; 및
    상기 복수의 추가 패리티 비트를 저장하는 임의의 메모리 페이지와 별개인 상기 메모리 서브시스템의 메모리 페이지에 상기 리던던시 메타데이터의 제1 세트를 프로그래밍하는 단계
    를 포함하는 동작을 수행하게 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제14항에 있어서, 상기 동작은,
    코드워드의 세트에 대응하는 리던던시 메타데이터의 제2 세트를 생성하는 단계; 및
    상기 리던던시 메타데이터의 제1 세트를 저장하는 상기 메모리 서브시스템의 메모리 페이지에 상기 리던던시 메타데이터의 제2 세트를 프로그래밍하는 단계
    를 추가로 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제14항에 있어서, 상기 동작은,
    상기 리던던시 메타데이터의 제1 세트에 대한 제2 계층 패리티 메타데이터를 생성하는 단계; 및
    상기 리던던시 메타데이터의 제1 세트를 저장하는 상기 메모리 서브시스템의 메모리 페이지에 상기 패리티 메타데이터를 프로그래밍하는 단계
    를 추가로 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제14항에 있어서, 상기 리던던시 메타데이터의 제1 세트를 생성하는 단계는 상기 추가 패리티 비트에 기초하여 하나 이상의 배타적 논리합(XOR) 연산을 실행하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제15항에 있어서, 상기 동작은,
    상기 리던던시 메타데이터의 제2 세트에 대한 패리티 메타데이터를 생성하는 단계; 및
    상기 리던던시 메타데이터의 제1 세트를 저장하는 상기 메모리 서브시스템의 메모리 페이지에 상기 패리티 메타데이터를 프로그래밍하는 단계
    를 추가로 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제14항에 있어서, 상기 동작은,
    상기 메모리 서브시스템의 메모리 페이지에 저장된 데이터에 대한 판독 요청을 수신한 것에 응답하여 판독 에러가 발생했다고 결정하는 단계;
    상기 판독 에러를 경험한 메모리 페이지가 상기 리던던시 메타데이터의 제1 세트를 저장했다고 결정하는 단계;
    상기 리던던시 메타데이터의 제1 세트를 재생성하는 단계; 및
    상기 리던던시 메타데이터의 재생성된 세트를 상기 메모리 서브시스템의 다른 메모리 페이지에 저장하는 단계
    를 추가로 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제15항에 있어서, 상기 동작은,
    상기 메모리 서브시스템의 메모리 페이지에 저장된 데이터 항목에 대한 판독 요청을 수신한 것에 응답하여 판독 에러가 발생했다고 결정하는 단계;
    상기 판독 에러를 경험한 메모리 페이지가 상기 리던던시 메타데이터의 제2 세트를 저장했다고 결정하는 단계;
    상기 리던던시 메타데이터의 제2 세트를 재생성하는 단계; 및
    상기 리던던시 메타데이터의 재생성된 세트를 상기 메모리 서브시스템의 다른 메모리 페이지에 저장하는 단계
    를 추가로 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020247011350A 2021-09-17 2022-09-19 대규모 코드워드의 rain 보호를 위한 리던던시 메타데이터 방식 KR20240055821A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/477,859 2021-09-17
US17/477,859 US11775381B2 (en) 2021-09-17 2021-09-17 Redundancy metadata schemes for RAIN protection of large codewords
PCT/US2022/044022 WO2023044125A1 (en) 2021-09-17 2022-09-19 Redundancy metadata schemes for rain protection of large codewords

Publications (1)

Publication Number Publication Date
KR20240055821A true KR20240055821A (ko) 2024-04-29

Family

ID=85573075

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247011350A KR20240055821A (ko) 2021-09-17 2022-09-19 대규모 코드워드의 rain 보호를 위한 리던던시 메타데이터 방식

Country Status (4)

Country Link
US (1) US11775381B2 (ko)
KR (1) KR20240055821A (ko)
CN (1) CN117957521A (ko)
WO (1) WO2023044125A1 (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9171585B2 (en) * 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US9348696B2 (en) * 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
US8732538B2 (en) * 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management
US9268637B2 (en) * 2013-03-15 2016-02-23 Silicon Space Technology Corporation Memory circuit incorporating error detection and correction (EDAC), method of operation, and system
US9086997B2 (en) * 2013-06-20 2015-07-21 International Business Machines Corporation Memory uncorrectable error handling technique for reducing the impact of noise
US10198313B2 (en) 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
KR102410566B1 (ko) 2018-02-05 2022-06-17 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
US10824502B2 (en) 2018-08-08 2020-11-03 Micron Technology, Inc. Enhanced codeword for media persistence and diagnostics
US10942809B2 (en) 2018-12-20 2021-03-09 Micron Technology, Inc. Changing of error correction codes based on the wear of a memory sub-system
KR20200079134A (ko) 2018-12-24 2020-07-02 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11340987B1 (en) * 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives

Also Published As

Publication number Publication date
CN117957521A (zh) 2024-04-30
US20240045759A1 (en) 2024-02-08
US11775381B2 (en) 2023-10-03
US20230086696A1 (en) 2023-03-23
WO2023044125A1 (en) 2023-03-23

Similar Documents

Publication Publication Date Title
US11630725B2 (en) Management of parity data in a memory sub-system
US11775179B2 (en) Enabling stripe-based operations for error recovery at a memory sub-system
US11487609B2 (en) Separating parity data from host data in a memory sub-system
US11899966B2 (en) Implementing fault tolerant page stripes on low density memory systems
US11907066B2 (en) Managing storage of multiple plane parity data in a memory sub-system
US11704196B2 (en) Reduced parity data management
US11775381B2 (en) Redundancy metadata schemes for RAIN protection of large codewords
US12007837B2 (en) Redundancy metadata schemes for rain protection of large codewords
US11556261B2 (en) Memory stripe coding management
US11709601B2 (en) Redundancy metadata for multi-plane memory access failure
US11625295B2 (en) Operating memory device in performance mode
US11507304B1 (en) Diagonal page mapping in memory systems
US11880600B2 (en) Consolidating write request in cache memory
US11860732B2 (en) Redundancy metadata media management at a memory sub-system
US20230317195A1 (en) Error Correction in a Memory Device having an Error Correction Code of a Predetermined Code Rate