KR101730510B1 - 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출 - Google Patents

메타데이터 태그를 통한 불규칙적인 패리티 분포 검출 Download PDF

Info

Publication number
KR101730510B1
KR101730510B1 KR1020127027758A KR20127027758A KR101730510B1 KR 101730510 B1 KR101730510 B1 KR 101730510B1 KR 1020127027758 A KR1020127027758 A KR 1020127027758A KR 20127027758 A KR20127027758 A KR 20127027758A KR 101730510 B1 KR101730510 B1 KR 101730510B1
Authority
KR
South Korea
Prior art keywords
parity
page
pages
codeword
data
Prior art date
Application number
KR1020127027758A
Other languages
English (en)
Other versions
KR20120134144A (ko
Inventor
다니엘 제이. 포스트
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20120134144A publication Critical patent/KR20120134144A/ko
Application granted granted Critical
Publication of KR101730510B1 publication Critical patent/KR101730510B1/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

이것은 플래시 메모리와 같은 비휘발성 메모리("NVM")의 불규칙적인 패리티 분포와, 메타데이터 태그를 통한 불규칙적인 패리티의 검출과 관련될 수 있다. 예를 들어, NVM의 각각의 코드워드는 NVM을 통해 랜덤으로 분포될 수 있는 하나 이상의 패리티 페이지들을 포함할 수 있다. 페이지를 패리티 페이지로서 식별하기 위해서, 패리티 페이지 마커가 그 페이지의 메타데이터에 포함될 수 있다. NVM의 파워-업 동안, 페이지들의 논리-대-물리 어드레스 맵핑들을 포함하는 어드레스 테이블이 생성될 수 있다. 그러나, 패리티 페이지 마커를 포함하는 페이지들은 이 어드레스 테이블의 생성 동안 스킵될 수 있다. 부가적으로, 코드워드와 연관된 2개 이상의 패리티 페이지들을 가짐으로써, 부가적인 보호 계층이 그 코드워드 내의 에러들을 교정하기 위해 제공될 수 있다.

Description

메타데이터 태그를 통한 불규칙적인 패리티 분포 검출{NON-REGULAR PARITY DISTRIBUTION DETECTION VIA METADATA TAG}
이것은 플래시 메모리와 같은 비휘발성 메모리의 불규칙적인 패리티 분포(non-regular parity distribution), 및 메타데이터 태그를 통한 불규칙적인 패리티의 검출에 관한 것이다.
NAND 플래시 메모리와, 다른 유형들의 비휘발성 메모리들(non-volatile memories; "NVMs")이 대용량 저장을 위해 보통 이용된다. 예를 들어, 포터블 미디어 플레이어들 또는 셀룰러 전화기들과 같은 소비자 전자제품들은 종종 음악, 비디오들, 및 다른 미디어를 저장하기 위해 미가공(raw) 플래시 메모리 또는 플래시 카드를 포함한다.
NAND 플래시 메모리와 같은 일부 비휘발성 메모리들은 초기 결함들을 포함하거나 이용을 통해 결함들을 생성할 수 있는 메모리 위치들을 가질 수 있다. 또한, 이용가능한 메모리 위치들에 저장된 데이터는 판독 방해 또는 전하 유지 이슈들과 같은 다른 에러 유발 현상을 겪을 수 있다. 따라서, 이들 메모리 위치들에 저장된 데이터가 정확하게 검색될 수 있도록 보장하기 위해서, "패리티 데이터(parity data)"가 계산되어 데이터와 함께 저장될 수 있다. 예를 들어, 그러한 패리티 데이터를 생성하기 위해 데이터에 에러 정정 코드가 적용될 수 있다.
또한, 오늘날의 소비자 전자제품들은 종종 디바이스의 동작들을 제어하고 NVM에 대한 액세스 요구들(예를 들어, 판독, 기입, 또는 소거 커맨드들)을 수행하는 임베디드 시스템(embedded system)을 포함할 수 있다. 전자 장치에 처음에 전원이 인가될 때, 전자 장치는 NVM을 스캔하여 NVM의(예를 들어, NVM의 각각의 페이지의) 내용들을 결정할 수 있다. 예를 들어, 스캔 중에, 전자 장치는 각각의 페이지와 연관된 논리 어드레스를 식별할 수 있다.
플래시 메모리(예를 들어, NAND 플래시 메모리)와 같은 비휘발성 메모리("NVM")에서의 불규칙적인 패리티 분포를 위한 시스템들 및 방법들이 개시된다. 또한, 메타데이터 태그를 통한 그러한 불규칙적인 패리티 분포들의 검출을 위한 시스템들 및 방법들이 본원에 개시된다.
일부 실시예들에서, 시스템 온 칩(system-on-a-chip) 및 NVM을 포함할 수 있는 전자 장치가 제공될 수 있다. NVM은 NAND 플래시 메모리와 같은 플래시 메모리, 또는 임의의 다른 적절한 유형의 비휘발성 메모리를 포함할 수 있다. 시스템 온 칩은 NVM에 액세스하기 위한 NVM 인터페이스를 포함할 수 있다. 일부 실시예들에서, NVM 인터페이스는 NVM에 사용자 데이터를 저장하기 위해 파일 시스템으로부터 기입 요구들, NVM에 저장된 데이터를 검색(예를 들어, 판독, 또는 그렇지 않으면 액세스)하기 위한 검색 요구들, 또는 둘다를 수신할 수 있다.
일부 실시예들에서, 데이터는 함께 "코드워드"를 구성하는 NVM의 2개 이상의 연속 페이지들(예를 들어, 물리 어드레스들)에 저장될 수 있다. 코드워드의 각각의 페이지는 그 페이지의 에러들을 정정하기 위한 ECC 데이터를 포함할 수 있다(예를 들어, "내부 ECC"). 또한, 하나 이상의 "패리티 페이지들"은 코드워드에 포함될 수 있고, 각각의 패리티 페이지는 전체로서 코드워드에 관련된 ECC 데이터를 제공할 수 있다(예를 들어, "외부 ECC"). 각각의 패리티 페이지는 코드워드의 에러들을 정정하기 위한 보호의 부가적인 계층을 제공할 수 있다. 예를 들어, 코드워드가 "m" 패리티 페이지들을 포함할 때, 그 코드워드 내의 에러들은 코드워드가 최대 "m" 정정 불가능 페이지들까지 포함하더라도 적절하게 정정될 수 있다(예를 들어, "정정 불가능 페이지"는 내부 ECC 데이터가 그 페이지의 에러들을 정정하기에 충분하지 않을 수 있는 페이지를 가리킬 수 있다).
일부 실시예들에서, 패리티 페이지들은 NVM에 걸친 불규칙적인 분포를 가질 수 있다. 예시로서, 패리티 페이지들의 "규칙적인 분포"는 NVM의 수퍼 블록의 동일한 다이 번호에 항상 배치되는 패리티 페이지들을 포함할 수 있다. 반대로, 패리티 페이지들의 불규칙적인 분포를 갖는 NVM은 반드시 동일한 다이 번호에 배치되지 않고 오히려 NVM의 임의의 적절한 위치에 배치될 수 있는 패리티 페이지들을 포함할 수 있다. 유사하게, 동일한 위치(예를 들어, 동일한 다이 번호의 수퍼 블록)에서 시작하고 종료하도록 한정되기보다는, 코드워드들은 시작하고 종료하는 위치들의 불규칙적인 분포 및 길이의 불규칙적인 분포를 포함할 수 있다.
이러한 방식으로, 패리티 페이지들의 불규칙적인 분포는 특정 데이터에 대해 더 큰 양의 보호를 제공하는 것을 도울 수 있다. 예시로서, 더 큰 수의 패리티 페이지들을 이용하여 더욱 중요한 정보를 보호할 수 있고, 더 적은 수의 패리티 페이지들을 이용하여 덜 중요한 정보를 보호할 수 있다. 다른 예시로서, 일부 실시예들에서, 더 큰 수의 패리지 페이지들을 이용하여 에러들에 더욱 민감한 페이지들을 보호할 수 있고, 더 적은 수의 패리지 페이지들을 이용하여 에러들에 덜 민감한 페이지들을 보호할 수 있다.
NVM 메모리의 패리티 페이지들은 불규칙적인 분포를 가질 수 있기 때문에, NVM의 어느 페이지들(예를 들어, 물리 어드레스들)이 패리티 페이지들인지는 즉시 알려지지 않을 수 있다. 어느 페이지가 패리티 페이지들인지를 결정하기 위해서, 예를 들어, 각각의 페이지의 메타데이터 정보에 "패리티 페이지 마커"가 포함될 수 있다. 이 메타데이터 태그는 특정 페이지가 패리티 페이지인지 여부를 결정하기 위해 NVM 인터페이스 또는 전자 장치의 다른 적절한 컴포넌트에 의해 판독될 수 있다.
일부 실시예들에서, 전자 장치의 파워-업 동안, NVM의 페이지들의 논리-대-물리 어드레스를 맵핑하는 테이블이 생성될 수 있다. 이 테이블은 예를 들어, 파워-업시에 페이지들을 스캔하고 그것들의 논리 어드레스들을 판독하고 나서, 논리-대-물리 어드레스 테이블에 판독 페이지의 이들 논리 어드레스들 및 연관된 물리 어드레스를 저장함으로써 생성될 수 있다. 그러나, 이러한 테이블에 외부 ECC 데이터를 포함하는 것은 불필요할 수 있기 때문에, 각각의 페이지의 패리티 페이지 마커는 이 스캔 동안 판독될 수 있다. 패리티 페이지 마커가 페이지가 패리티 페이지임을 표시할 때, 그 페이지는 스킵될 수 있고, 그의 정보는 논리-대-물리 어드레스 테이블에 포함되지 않는다.
일부 실시예들에서, 패리티 페이지들의 불규칙적인 분포는 NVM으로부터의 데이터의 검색에 영향을 줄 수 있다. 예를 들어, NVM으로부터 코드워드를 검색하는 동안, 정정 불가능 페이지를 만날 수 있다. 그러나, 패리티 페이지의 불규칙적인 분포로 인해, 얼마나 많은 패리티 페이지들이 코드워드와 연관되는지는 즉시 알려지지 않을 수 있고, 따라서 정정 불가능 페이지가 교정(repair)될 수 있는지는 즉시 알려지지 않을 수 있다. 따라서, 일부 실시예들에서, 코드워드의 데이터는 그 코드워드가 검색되는 동안 버퍼링될 수 있다. 코드워드의 끝에 도달하면, NVM 인터페이스(예를 들어, 또는 다른 적절한 컴포넌트)는 얼마나 많은 패리티 페이지들이 코드워드에 포함되는지와, 따라서, 그 코드워드의 정정 불가능 페이지들(만약에 있다면)이 교정될 수 있는지 여부를 결정할 수 있다. 정정 불가능 페이지들이 교정될 수 있다면, 버퍼링된 데이터 및 패리티 페이지들을 이용하여 정정 불가능 페이지들을 교정할 수 있다.
일부 실시예들에서, NVM 인터페이스는 오직 코드워드의 제1 정정 불가능 페이지를 대면하면 코드워드를 버퍼링하는 것을 시작할 수 있다. 이 시나리오에서, 정정 불가능 페이지를 대면하면, NVM 인터페이스는 코드워드의 현재 페이지뿐만 아니라 모든 이전 페이지들을 버퍼링하기 위해 코드워드에 걸쳐서 "좌로 스캔(scan left)"할 수 있다. 그 다음에 NVM 인터페이스는 코드워드의 나머지가 검색됨에 따라 계속해서 코드워드를 검색하고 코드워드의 나머지를 버퍼링할 수 있다. 코드워드의 끝에 도달하면, 패리티 페이지들의 수가 결정될 수 있고, 적절한 수의 패리티 페이지들이 존재하는 경우, 정정 불가능 페이지들이 교정될 수 있다.
일부 실시예들에서, 데이터를 버퍼링하기보다는, 정정 불가능 코드워드들을 교정하기 위한 필요한 계산들이 "온 더 플라이(on the fly)" 계산될 수 있다. 예를 들어, NVM 인터페이스는 검색되는 코드워드와 연관된 2개의 패리티 페이지들(예를 들어, 또는 임의의 다른 적절한 수의 패리티 페이지들)이 존재한다고 "가정"할 수 있다. 코드워드가 검색되고 있을 때, NVM 인터페이스는 검색된 페이지들의 데이터로 2개의 계산들을 갱신할 수 있고, 각각의 계산은 가정된 패리티 페이지들 중 상이한 것과 연관될 수 있다. 코드워드의 끝에 도달하면, 패리티 페이지들의 실제 수 및 정정 불가능 페이지들의 수가 결정될 수 있다. 제2 계산이 필요하지 않은 이벤트에서(예를 들어, 하나 또는 그보다 적은 정정 불가능 페이지들만이 존재하거나, 하나의 실제 패리티 페이지만이 존재하는 이벤트에서), 제2 계산은 폐기될 수 있다. 두 계산들이 필요할 때(예를 들어, 2개의 실제 패리티 페이지들이 존재하고 2개의 정정 불가능 페이지들이 존재할 때), 2개의 계산들을 이용하여 정정 불가능 페이지들을 교정할 수 있다.
발명의 상기 및 다른 양태들 및 이점들은, 첨부 도면들과 결합하여 취해진, 다음의 상세한 설명의 고려시에 더욱 명백하게 될 것이고, 첨부 도면들에서 동일한 참조 문자들은 전체에 걸쳐서 동일한 부분들을 가리킨다.
도 1 및 2는 본 발명의 일부 실시예들에 따라 구성되는 전자 장치들의 개략도들이다.
도 3 및 4는 본 발명의 일부 실시예들에 따른 비휘발성 메모리의 기능도들이다.
도 5는 본 발명의 일부 실시예들에 따른 불규칙적인 패리티 분포를 예시하는 수퍼 블록의 기능도이다.
도 6은 본 발명의 일부 실시예들에 따른 파워업시에 비휘발성 메모리의 어드레스 테이블을 확립하기 위한 프로세스를 도시한다.
도 7a, 7b, 및 8은 본 발명의 일부 실시예들에 따른 비휘발성 메모리로부터 데이터를 검색하기 위한 프로세스들을 도시한다.
도 1은 전자 장치(100)의 개략도이다. 일부 실시예들에서, 전자 장치(100)는 포터블 미디어 플레이어(예를 들어, 캘리포니아주 쿠퍼티노의 Apple Inc.에 의해 이용가능하게 만들어진 iPod™), 셀룰러 전화기(예를 들어, Apple Inc.에 의해 이용가능하게 만들어진 iPhone™), 포켓 사이즈 퍼스널 컴퓨터, PDA(personal digital assistance), 데스크톱 컴퓨터, 랩톱 컴퓨터, 포터블 게이밍 장치, 리모트 컨트롤러, 및 임의의 다른 적절한 유형의 전자 장치일 수 있거나 그를 포함할 수 있다.
전자 장치(100)는 시스템 온 칩(system-on-a-chip; "SoC")(110) 및 비휘발성 메모리("NVM")(120)를 포함할 수 있다. SoC(110)는 제어 회로(112), 메모리(114), 에러 정정 코드(error correction code; "ECC") 모듈(116), 및 NVM 인터페이스(118)를 포함할 수 있다. NVM 인터페이스(118), ECC 모듈(116), 및 제어 회로(112)는 시스템 온 칩에 포함된 별개의 모듈들로서 도시되지만, 이것은 발명의 실시예들의 설명을 간단하게 하기 위한 것일 뿐이다. 예를 들어, 일부 실시예들에서, 이들 모듈들은 모두 별개의 물리적 엔티티들일 수 있고 및/또는 그것들 자신의 마이크로전자 칩으로서 형성될 수 있다. 다른 예로서, 일부 실시예들에서, 이들 모듈들은 모두 단일 마이크로전자 칩에 형성될 수 있고, 동일한 기판 및/또는 하드웨어를 공유할 수 있다. 또 다른 예로서, 일부 실시예들에서, 이들 모듈들은 하드웨어, 소프트웨어 컴포넌트들, 또는 둘다의 일부 부분들을 공유할 수 있다. 따라서, 제어 회로(112) 및 NVM 인터페이스(118)의 통합된 부분들은 때때로 일괄하여 "제어 회로"라고 할 수 있다.
비휘발성 메모리(120)는 전자 장치(100)가 파워 다운(power down)될 때 유지될 수 있는 정보를 저장하는 데 이용될 수 있다. 본원에 이용되는 바와 같이, 그리고 문맥에 따라, "비휘발성 메모리"는 데이터가 저장될 수 있는 NVM 집적 회로들을 가리킬 수 있거나, 그러한 NVM 집적 회로들(예를 들어, NVM(120))을 포함하는 NVM 패키지를 가리킬 수 있다.
비휘발성 메모리(120)는 부동 게이트 또는 전하 트랩핑(charge trapping) 기술에 기초한 NAND 플래시 메모리, NOR 플래시 메모리, EPROM, EEPROM, FRAM(Ferroelectric RAM), MRAM(magnetoresistive RAM), 임의의 다른 알려진 또는 미래의 유형들의 비휘발성 메모리 기술, 또는 그의 임의의 결합을 포함할 수 있다. 일부 실시예들에서, NVM(120)은 외부 전자 장치(100)인 제거가능한 메모리 장치를 포함할 수 있다. 이 경우, NVM(120)은 예를 들어, USB(Universal Serial Bus) 메모리 드라이브, 메모리 카드(예를 들어, 플래시 카드), 또는 임의의 다른 적절한 제거가능한 메모리 장치를 포함할 수 있다. 일부 실시예들에서, NVM(120)은 전자 장치(100) 내로 통합될 수 있다. 이 경우, NVM 패키지(120)는 예를 들어, 전자 장치의 통합 메모리일 수 있다.
NVM(120)은 복수의 다이들(즉, 집적 회로들)을 포함할 수 있고, 각각의 다이는 하나 이상의 "블록들"로 조직될 수 있고, 각각의 블록은 한번에 소거가능할 수 있다. 각각의 블록은 "페이지들"로 더 조직될 수 있고, 각각의 페이지는 한번에 프로그램가능 및 판독가능할 수 있다. 예를 들어, 각각의 페이지는 NVM의 특정 "물리 어드레스"에 대응할 수 있고, 데이터는 물리 어드레스에 기입되고 및/또는 물리 어드레스로부터 판독될 수 있다. NVM(120)의 대응하는 다이들로부터의 블록들(예를 들어, 다이 내의 동일한 위치 또는 "블록 번호"를 갖는 각각의 다이로부터의 하나의 블록)은 "수퍼 블록들"이라고 하는 논리 저장 유닛들을 형성할 수 있다. 또한, NVM(120)의 다이들은 임의의 적절한 수의 블록들 및 페이지들을 포함할 수 있다. 페이지에 부가하여, NVM(120)의 각각의 메모리 위치(예를 들어, 블록 등)는 물리 어드레스(예를 들어, 물리 블록 어드레스)를 이용하여 어드레싱될 수 있다.
도 1과, 나중의 도면들 및 다양한 개시된 실시예들은 때때로 플래시 기술을 이용하는 것에 관하여 설명될 수 있다. 그러나, 이것은 한정하는 것으로 의도되지 않고, 임의의 다른 유형의 비휘발성 메모리가 그 대신에 구현될 수 있다. 또한, 전자 장치(100)는, 도면을 너무 복잡하게 하는 것을 방지하기 위해서 도 1에 도시되지 않은, 파워 서플라이 또는 임의의 사용자 입력 또는 출력 컴포넌트들과 같은, 임의의 다른 적절한 컴포넌트들을 포함할 수 있다.
위에 언급한 바와 같이, 시스템 온 칩(110)은 제어 회로(112), 메모리(114), 에러 정정 코드("ECC") 모듈(116), 및 NVM 인터페이스(150)를 포함할 수 있다. 제어 회로(112)는 SoC(110)와 SoC(110) 및/또는 전자 장치(100)의 다른 컴포넌트들의 일반적인 동작들 및 기능들을 제어할 수 있다. 예를 들어, 사용자 입력들 및/또는 애플리케이션의 명령어들에 응답하여, 제어 회로(112)는 NVM(120)으로부터 데이터를 획득하거나 NVM(120)에 데이터를 저장하기 위해 NVM 인터페이스(118)에 판독 또는 기입 커맨드들을 발행할 수 있다. 명확함을 위해, 저장 또는 검색을 위해 제어 회로(112)가 요구하는 데이터를 "사용자 데이터"라고 할 수 있지만, 그 데이터는 사용자 또는 사용자 애플리케이션과 직접 연관되지 않을 수도 있다. 오히려, 사용자 데이터는 제어 회로(112)에 의해(예를 들어, 애플리케이션을 통해) 생성 또는 획득된 임의의 적절한 시퀀스의 디지털 정보를 포함할 수 있다.
제어 회로(112)는 하드웨어, 소프트웨어, 및 펌웨어의 임의의 결합과, 전자 장치(100)의 기능을 구동하도록 동작하는 임의의 컴포넌트들, 회로, 또는 로직을 포함할 수 있다. 예를 들어, 제어 회로(112)는 NVM(120) 및/또는 메모리(114)에 저장된 소프트웨어/펌웨어의 제어하에서 동작하는 하나 이상의 프로세서들을 포함할 수 있다.
메모리(114)는 DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory), DDR(double-data-rate) RAM, 캐시 메모리, ROM(read-only memory), 임의의 다른 적절한 메모리, 또는 그의 임의의 결합과 같은, 임의의 적절한 유형의 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 메모리(140)는 비휘발성 메모리(120) 내로 프로그램하거나 그로부터 판독하기 위한 사용자 데이터를 임시로 저장할 수 있는 데이터 소스를 포함할 수 있다. 일부 실시예들에서, 메모리(140)는 제어 회로(112)의 부분으로서 구현되는 임의의 프로세서들을 위한 메인 메모리로서 작용할 수 있다.
ECC 모듈(116)은 ECC 데이터를 생성하기 위한 RS(Reed-Solomon) 코드, BCH(Bose, Chaudhuri and Hocquenghem) 코드, CRC(cyclic redundancy check) 코드, 또는 임의의 다른 적절한 에러 정정 또는 검출 코드와 같은, 하나 이상의 에러 정정 또는 에러 검출 코드들을 이용할 수 있다. 본원에 이용되는 바와 같이, "ECC 데이터"라는 용어는 사용자 데이터에 에러 정정 및/또는 검출 코드를 적용함으로써 생성된 임의의 적절한 데이터를 가리킬 수 있고, ECC 데이터는 사용자 데이터를 검증하거나, 사용자 데이터를 정정하거나, 둘다를 위해 이용될 수 있다.
일부 실시예들에서, ECC 모듈은 "내부 ECC 데이터"를 생성하기 위해 단일 페이지의 사용자 데이터에 에러 정정 코드를 적용할 수 있다. 내부 ECC 데이터는 그 다음에 그 단일 페이지의 사용자 데이터를 정정 및/또는 검증하기 위해 이용될 수 있다. 또한, 아래 더 상세하게 설명되는 바와 같이, 일부 실시예들에서, ECC 모듈은 전체 코드워드(예를 들어, 2 이상의 연속 페이지들)의 사용자 데이터에 에러 정정 코드를 적용할 수 있다. 이 경우, ECC 모듈은 전체로서 코드워드의 사용자 데이터를 정정하기 위해 이용될 수 있는 "외부 ECC 데이터"를 생성할 수 있다. 외부 ECC 데이터는 하나 이상의 "패리티 페이지들"에 저장될 수 있고, 패리티 페이지는 이 외부 ECC 데이터를 저장하는 것으로 정해진 페이지일 수 있다. 패리티 페이지들 및 외부 ECC 데이터는 아래 더 상세히 설명될 것이다.
ECC 모듈(116)은 특정 "세기(strength)"를 가질 수 있고, ECC의 "세기"는 ECC 모듈(116)에 의해 생성되는 내부 ECC에 의해 정정될 수 있는 에러들(예를 들어, 플립 비트들(flipped bits))의 최대 수를 표시할 수 있다. 예를 들어, ECC 모듈(116)은 페이지에서 "t" 에러들까지 정정할 수 있고 페이지에서 "n" 에러들까지 검출할 수 있는 에러 정정 코드를 이용할 수 있다(여기서 n은 t보다 더 큰 수의 에러들일 수 있다). 본원에 이용되는 바와 같이, "t 에러들"이라는 용어는 ECC 코드가 페이지에서 정정할 수 있는 에러들의 최대 수를 가리키고, "n 에러들"은 ECC 코드가 페이지에서 검출할 수 있는 에러들의 최대 수를 가리킨다. 예를 들어, 페이지가 t보다 많은 에러들을 포함하는 경우, 그 페이지는 내부 ECC 데이터에 의해 "정정 불가능"할 수 있다. 유사하게, 페이지가 n보다 많은 에러들을 포함하는 경우, 내부 ECC 데이터는 그 페이지에 얼마나 많은 에러들이 존재하는지를 적절하게 결정할 수 없을 수 있다.
ECC 모듈(116)은 예를 들어, 하나 이상의 선형 피드백 시프트 레지스터들(linear feedback shift registers; LFSRs)과 같은 하드웨어에 구현될 수 있거나, 프로세서에 의해 실행되는 소프트웨어에 구현될 수 있다. 소프트웨어 구현들에 대해, 대응하는 프로그램 코드는 예를 들어, NVM(120) 또는 메모리(114)에 저장될 수 있다.
NVM 인터페이스(118)는 제어 회로(112)와 NVM(120) 사이에 인터페이스 또는 드라이버로서 작용하도록 구성되는 하드웨어와 소프트웨어의 임의의 적절한 결합을 포함할 수 있다. NVM 인터페이스(118)에 포함된 임의의 소프트웨어 모듈들에 대해서, 대응하는 프로그램 코드가 NVM(120) 또는 메모리(114)에 저장될 수 있다.
NVM 인터페이스(118)는 제어 회로(112)가 NVM(120)에 액세스하고 NVM(120)의 메모리 위치들(예를 들어, 페이지들, 블록들, 수퍼 블록들, 다이들 등) 및 그 안에 저장된 데이터(예를 들어, 사용자 데이터)를 관리할 수 있게 하는 다양한 기능들을 수행할 수 있다. 예를 들어, NVM 인터페이스(118)는 제어 회로(112)로부터의 판독 또는 기입 커맨드들을 해석하고, ECC 모듈(116)에 NVM(120)에 저장될 사용자 데이터를 인코딩하도록 지시하고, ECC 모듈(116)에 NVM(120)으로부터 판독되는 사용자 데이터를 디코딩하도록 지시하고, 쓰레기 수집(garbage collection)을 수행하고, 웨어 레벨링(wear leveling)을 수행하고, NVM(120)의 버스 프로토콜과 호환되는 판독 및 프로그램 명령어들을 생성하는 등등을 할 수 있다.
도 2는 다양한 실시예들에 따라 전자 장치(100)(도 1)의 소프트웨어 및 하드웨어 컴포넌트들의 일부를 상세하게 예시할 수 있는 전자 장치(200)의 개략도이다. 전자 장치(200)는 따라서 도 1과 결합하여 전술한 특징들 및 기능들 중 임의의 것을 가질 수 있고, 그 반대로 가능하다. 전자 장치(200)는 파일 시스템(210), NVM 인터페이스(218), 및 NVM(220)을 포함할 수 있다. NVM 인터페이스(218)는 예를 들어, 도 1의 NVM 인터페이스(118)에 대응할 수 있고, NVM 드라이버(232) 및 NVM 버스 컨트롤러(234)를 포함할 수 있다. 파일 시스템(210) 및 NVM 드라이버(232)는 소프트웨어 모듈들일 수 있고, NVM 버스 컨트롤러(234) 및 NVM(220)은 하드웨어 모듈들일 수 있다. 따라서, NVM 드라이버(232)는 NVM 인터페이스(218)의 소프트웨어 양태를 표현할 수 있고, NVM 버스 컨트롤러(234)는 NVM 인터페이스(218)의 하드웨어 양태를 표현할 수 있다.
파일 시스템(210)은 FAT(File Allocation Table) 파일 시스템과 같은 임의의 적절한 유형의 파일 시스템을 포함할 수 있고, 전자 장치(200)의 오퍼레이팅 시스템의 부분(예를 들어, 도 1의 SoC 제어 회로(112)의 부분)일 수 있다. 일부 실시예들에서, 파일 시스템(210)은 YAFFS(Yet Another Flash File System)와 같은 플래시 파일 시스템을 포함할 수 있다. 이들 실시예들에서, 파일 시스템(210)은 아래 논의되는 NVM 드라이버(232)의 기능들의 일부 또는 전부를 수행할 수 있고, 따라서 파일 시스템(210) 및 NVM 드라이버(232)는 별개의 모듈들일 수도 그렇지 않을 수도 있다.
파일 시스템(210)은 애플리케이션 및 오퍼레이팅 시스템을 위한 파일 및 폴더 구조들을 관리할 수 있다. 파일 시스템(210)은 전자 장치(200)에서 실행되는 애플리케이션 또는 오퍼레이팅 시스템의 제어하에서 동작할 수 있고, 애플리케이션 또는 오퍼레이팅 시스템이 정보가 NVM(220)으로부터 판독되거나 NVM(220)에 저장되는 것을 요구할 때 각각 NVM 드라이버(232)에 판독 및 기입 커맨드들을 제공할 수 있다. 각각의 판독 또는 기입 커맨드와 함께, 파일 시스템(210)은 페이지 오프셋을 갖는 논리 페이지 어드레스 또는 논리 블록 어드레스와 같이, 사용자 데이터가 판독되거나 기입되어야 함을 표시하기 위해 논리 어드레스를 제공할 수 있다.
파일 시스템(210)은 NVM(220)과 직접 호환되지 않는 NVM 드라이버(232)에 판독 및 기입 요구들을 제공할 수 있다. 예를 들어, 논리 어드레스들은 하드 드라이브 기반 시스템들에 통상적인 규약들 또는 프로토콜들을 이용할 수 있다. 플래시 메모리와 달리, 하드 드라이브 기반 시스템은 먼저 블록 소거를 수행하지 않고 메모리 위치를 겹쳐쓰기할 수 있다. 또한, 하드 드라이브들은 디바이스의 수명을 증가시키기 위해 웨어 레벨링을 필요로 하지 않는다. 따라서, NVM 인터페이스(218)는 파일 시스템 요구들을 다루기 위해 메모리 특정, 벤더 특정, 또는 둘다인 임의의 기능들을 수행할 수 있고, NVM(220)에 적절한 방식으로 다른 관리 기능들을 수행할 수 있다.
NVM 드라이버(232)는 변환 계층(translation layer)(236)을 포함할 수 있다. 일부 실시예들에서, 변환 계층(236)은 플래시 변환 계층(flash translation layer; "FTL")일 수 있다. 기입 동작에서, 변환 계층(236)은 NVM(220)에서 자유로운 소거된 물리 어드레스에 논리 어드레스를 맵핑할 수 있다. 판독 동작에서, 변환 계층(236)은 요구된 데이터가 저장되는 물리 어드레스를 결정하기 위해 논리 어드레스를 이용할 수 있다. 각각의 NVM이 NVM의 사이즈 또는 벤더에 따라 상이한 레이아웃을 가질 수 있기 때문에, 이 맵핑 동작은 메모리 및/또는 벤더 특정일 수 있다. 변환 계층(236)은 논리-대-물리 어드레스 맵핑에 부가하여 임의의 다른 적절한 기능들을 수행할 수 있다. 예를 들어, 변환 계층(236)은 쓰레기 수집 및 웨어 레벨링과 같은 플래시 변환 계층들에 통상적인 다른 기능들 중 임의의 것을 수행할 수 있다.
NVM 드라이버(232)는 NVM 액세스 요구들(예를 들어, 기입, 판독, 소거 요구들 등)을 완료하기 위해 NVM 버스 컨트롤러(234)와 인터페이스할 수 있다. 예를 들어, NVM 드라이버(232)는 데이터를 저장 또는 검색할 물리 어드레스와, 기입 요구들에 대해, 기입될 대응하는 데이터 벡터를 NVM 버스 컨트롤러(234)에 제공할 수 있다. NVM 버스 컨트롤러(216)는 NVM(220)에 대한 하드웨어 인터페이스로서 작용할 수 있고, 버스 프로토콜, 데이터 레이트, 및 NVM(220)의 다른 사양들을 이용하여 NVM(220)과 통신할 수 있다.
NVM 인터페이스(218)는 본원에서 때때로 "메타데이터"라고 하는, 메모리 관리 데이터에 기초하여 NVM(220)을 관리할 수 있다. 메타데이터는 NVM 드라이버(232)에 의해 생성될 수 있거나, NVM 드라이버(232)의 제어하에서 동작하는 모듈에 의해 생성될 수 있다. 메타데이터는 예를 들어, 논리 및 물리 어드레스들(예를 들어, 파일 시스템(210)에 의해 제공된 "논리 어드레스") 사이의 맵핑을 관리하기 위해 이용되는 임의의 정보, 나쁜 블록 관리 정보, 웨어 레벨링 정보, 쓰레기 수집 정보, 에러 정정 코드("ECC") 데이터, 또는 그의 임의의 결합을 포함할 수 있다. 따라서, 일반적으로, 본원에 이용되는 바와 같이, "메타데이터"라는 용어는 비휘발성 메모리의 동작 및 메모리 위치들을 관리하기 위해 일반적으로 이용될 수 있는 사용자 데이터에 관한 또는 관련된(예를 들어, 그리고 사용자 데이터가 아닌) 임의의 정보를 가리킬 수 있다.
NVM 인터페이스(218)는 NVM(220)에 메타데이터를 저장하도록 구성될 수 있다. 일부 실시예들에서, NVM 인터페이스(218)는 사용자 데이터가 저장되는 동일한 메모리 위치(예를 들어, 페이지)에 사용자 데이터와 연관된 메타데이터를 저장할 수 있다. 예를 들어, NVM 인터페이스(218)는 NVM(220)의 하나의 메모리 위치에 사용자 데이터, 연관된 논리 어드레스들, 사용자 데이터를 위한 ECC 데이터, 및 임의의 다른 적절한 메타데이터를 저장할 수 있다. 다른 예로서, 메타데이터는 NVM(220)의 임의의 적절한 메모리 위치에 저장될 수 있다.
위에 언급한 바와 같이, 비휘발성 메모리(예를 들어, 도 1의 NVM(120))는 다이들, 블록들, 페이지들, 수퍼 블록들 등으로 조직될 수 있다. 예를 들어, 도 3 및 4는 NVM(320)의 개략적인 레이아웃들을 도시한다. 도 3 및 4는 단지 NVM(320)의 조직적 레이아웃을 예시하기 위한 것이고 비휘발성 메모리의 실제적인 물리적 레이아웃을 표시하지 않는다. 예를 들어, 다이 0이 도 3 및 4에서 다이 1의 옆에 있는 것으로 예시되지만, 이것은 단지 이들 다이들의 기능 관계를 예시하기 위한 것이고, NVM(320)의 실제 물리 레이아웃에서, 이들 다이들은 서로 가까이 배치될 수 있거나 그렇지 않을 수 있다. 또한, 특정 수의 다이들, 블록들, 및 페이지들이 도 3 및 4에 도시되지만, 이것은 단지 예시의 목적을 위한 것이고, 이 기술분야의 통상의 기술자는 NVM(320)이 임의의 적절한 수의 다이들, 블록들, 및 페이지들을 포함할 수 있다는 것을 알 수 있다. 하나의 예시로서, NVM(320)의 각각의 다이는 4096 블록들을 포함할 수 있고, 각각의 블록은 블록이 SLC 블록, 2 비트 MLC 블록, 또는 3 비트 MLC 블록인지에 기초하여 64, 128, 또는 192 페이지들을 포함할 수 있고, 각각의 페이지는 512 바이트를 포함할 수 있다.
도 3에 의해 예시된 바와 같이, NVM(320)은 다이 0, 다이 1, 다이 2, 및 다이 3과 같은, 하나 이상의 다이들(즉, 집적 회로들)을 포함할 수 있다. 각각의 다이는 그 다음에 하나 이상의 "블록들"로 조직될 수 있다. 예를 들어, 다이 0은 블록들 0-3으로 조직되는 것으로 예시된다. NVM(320)의 소거 커맨드 동안, 메모리의 전체 블록은 한번에 소거될 수 있다. 다이들의 각각의 블록은 그 다음에 하나 이상의 페이지들로 조직될 수 있다. 예를 들어, 다이 2의 블록 0(예를 들어, 블록 302)은 페이지들 0-3으로 조직되는 것으로서 예시된다. NVM(320)의 판독 또는 기입 커맨드 동안, 전체 페이지가 한번에 각각 판독 또는 기입될 수 있다. NVM(320)은 또한 다이에서 동일한 위치 또는 "블록 번호"를 갖는 각각의 다이로부터의 하나의 블록을 포함하는 하나 이상의 수퍼 블록들을 포함할 수 있다. 예를 들어, NVM(320)의 수퍼 블록 0은 다이들 0-3 각각의 블록 0을 포함할 수 있다. 유사하게, NVM(320)의 수퍼 블록 1은 다이들 0-3 각각의 블록 1을 포함할 수 있고, NVM(320)의 수퍼 블록 2는 다이들 0-3 각각의 블록 2를 포함할 수 있고, 등등이다.
NVM(320)의 각각의 수퍼 블록은 수퍼 블록의 각각의 다이로부터 하나의 페이지를 포함함으로써 형성되는 하나 이상의 "스트라이프들(stripes)"을 포함할 수 있고, 각각의 페이지는 그 다이에 동일한 페이지 번호를 갖는다. 예를 들어, 도 4는 NVM(320)의 스트라이프(310)를 도시한다. 스트라이프(310)는 수퍼 블록 0의 다이들 1-3 각각의 동일한 페이지 번호를 포함할 수 있다. NVM(320)의 동작 동안, 스트라이프 및/또는 수퍼 블록의 페이지들은 순차적으로 프로세싱될 수 있다. 예를 들어, 스트라이프(310)의 판독 또는 기입 동작 동안, 페이지(320)가 프로세싱될 수 있고 그 다음에 페이지(330)의 프로세싱이 오고 나서, 페이지(340)의 프로세싱이 오고, 그 다음에 페이지(350)의 프로세싱이 온다. 이러한 식으로, 스트라이프(312)에 포함된 데이터는 정보의 "코드워드"로 고려될 수 있다. 특히, 본원에 이용되는 바와 같이, "코드워드"라는 용어는 함께 정보의 조각을 형성하는 비휘발성 메모리의 하나 이상의 연속 페이지들에 포함되는 데이터를 가리킬 수 있다. 아래 더 상세히 설명되는 바와 같이, 코드워드는 단일 스트라이프로 한정되지 않고, 하나 이상의 스트라이프들의 연속 페이지들로부터의 데이터를 포함할 수 있다.
NVM(320)의 각각의 페이지는 임의의 적절한 정보를 포함할 수 있다. 예를 들어, 페이지들은 사용자 데이터, 메타데이터 또는 둘다를 포함할 수 있다. 일부 실시예들에서, ECC 데이터와 같은 메타데이터는 NVM(320)에 저장된 정보의 에러 검출 및/또는 정정을 제공하기 위해 페이지들에 포함될 수 있다. 예를 들어, ECC 모듈(예를 들어, 도 1의 ECC 모듈(116))은 "내부 ECC 데이터"를 생성하기 위해 단일 페이지의 사용자 데이터에 에러 정정 코드를 적용할 수 있다. 내부 ECC 데이터는 그 다음에 그 단일 페이지의 사용자 데이터를 정정 및/또는 검증하기 위해 이용될 수 있다. 이것의 예시로서, 도 4는 스트라이프(312)가 페이지들(322, 332, 342, 및 352)을 포함할 수 있음을 도시한다. 함께, 페이지들(322, 332, 342, 및 352) 내의 데이터는 코드워드(390)를 형성할 수 있다. 페이지(322)는 예를 들어, 사용자 데이터(324)의 제1 부분 및 내부 ECC 데이터(326)의 제2 부분을 포함할 수 있다. 간단함을 위해 예시되지 않지만, 페이지(322)는 또한 NVM(320)의 관리 또는 동작을 위해 임의의 다른 적절한 데이터 또는 메타데이터(예를 들어, 위치 데이터, 생성 데이터 등)를 포함할 수 있다. 전술한 바와 같이, ECC 데이터(326)는 이 ECC 데이터를 생성하기 위해 적절한 ECC 모듈이 페이지(322)의 사용자 데이터에 대해 에러 정정 코드를 행함으로써 생성될 수 있다.
페이지(322)의 검색(예를 들어, 저장된 데이터를 판독하는 것 또는 그렇지 않으면 데이터에 액세스하는 것) 동안, 페이지(322)의 내부 ECC 데이터는 페이지(322)의 사용자 데이터의 무결성을 유지하기 위해 이용될 수 있다. 예를 들어, 페이지(322)의 사용자 데이터에 "t" 에러들 또는 그보다 적은 에러들이 존재하는 경우, 그 페이지의 내부 ECC 데이터는 이들 에러들을 정정하기 위해 이용될 수 있다. 유사하게, 페이지(322)의 사용자 데이터에 n 에러들 또는 그보다 적은 에러들이 존재하는 경우, 그 페이지의 내부 ECC 데이터는 얼마나 많은 에러들이 페이지(322)에 존재하는지를 식별할 수 있다(예를 들어, 여기서 n은 t보다 클 수 있다). 유사하게, 페이지 332 및 342와 같은 페이지들은 사용자 데이터 및 그것들의 연관된 내부 ECC 데이터를 포함할 수 있다.
일부 실시예들에서, ECC 데이터는 하나 이상의 페이지들의 사용자 데이터에 대해 부가적으로 제공될 수 있다. 예를 들어, ECC 모듈(예를 들어, 도 1의 ECC 모듈(116))은 "외부 ECC 데이터"를 생성하기 위해 전체 코드워드의 사용자 데이터에 에러 정정 코드를 적용할 수 있다. 이 외부 ECC 데이터는 전체로서 코드워드의 사용자 데이터를 정정하기 위해 이용될 수 있다. 이것의 예시로서, 도 4는 페이지들(322, 332, 및 342)의 사용자 데이터와 연관될 수 있는 외부 ECC 데이터(356)를 포함할 수 있는 스트라이프(312)의 페이지(352)를 도시한다. 다시 말해, 페이지(352)의 외부 ECC 데이터(356)는 코드워드(390)의 전체에서 에러들을 정정 및/또는 검출하기 위해 이용될 수 있다. 외부 ECC 데이터(356)를 생성하기 위해서, 전술한 바와 같이 적절한 에러 정정이 코드워드(390)의 전체에 대해 행해졌을 수 있다.
페이지(352)가 (예를 들어, 단지 단일 페이지에 대한 내부 ECC 데이터보다는) 코드워드(390)의 전체에 대한 외부 ECC 데이터를 포함할 수 있기 때문에, 페이지(352)는 "패리티 페이지"(352)라고 할 수 있다. 본원에 이용되는 바와 같이, "패리티 페이지"라는 용어는 데이터의 2 이상의 페이지들의 사용자 데이터에서 에러들을 정정 및/또는 검출하기 위해 외부 ECC 데이터를 포함할 수 있는 NVM의 페이지를 가리킨다. 일부 실시예들에서, 패리티 페이지는 외부 ECC 데이터에 대해 정해질 수 있고, 그 자신의 임의의 사용자 데이터를 포함하지 않을 수 있다. 또한, 외부 ECC 데이터(356)가 도 4에 예시되고 (예를 들어, 패리티 페이지(352)의 정보의 모든 바이트를 이용하는 것으로서) 패리티 페이지(352)의 전체를 채우고 있지만, 외부 ECC 데이터(356)는 대안적으로 페이지(352)의 일부분만을 채울 수 있다. 특히, 외부 ECC 데이터는 오직 그 외부 ECC 데이터를 홀드하기 위해 필요에 따라 패리티 페이지의 그만큼의 공간(as much space)을 이용할 수 있다. 예를 들어, 코드워드(390)를 위한 외부 ECC 데이터가 400 바이트의 정보를 포함하고 패리티 페이지(352)가 512 바이트를 저장할 수 있는 경우, 이 외부 ECC 데이터는 패리티 페이지(352)의 512 바이트 중 400 바이트만을 점유할 수 있다.
이러한 식으로, 코드워드(390)의 각각의 페이지 내의 그 데이터는 2번 보호될 수 있다. 먼저, 각각의 페이지는 그 페이지의 내부 ECC 데이터에 의해 보호된다(예를 들어, 사용자 데이터(324)는 내부 ECC 데이터(326)에 의해 보호될 수 있다). 예시로서, 사용자 데이터(324)가 t 에러들 또는 그보다 적은 에러들을 가질 때, 내부 ECC 데이터(326)는 이들 에러들을 정정하는 데 이용될 수 있다. 그 다음에 보호의 제2 계층이 패리티 페이지(352)의 외부 ECC 데이터(356)를 통해 사용자 데이터(322)에 제공될 수 있다. 예를 들어, 사용자 데이터(322)가 t보다 많은 에러들을 갖는 경우, 페이지(322)의 내부 ECC 데이터(326)는 단독으로 사용자 데이터(322)를 정정하기에 불충분할 수 있다. 이 경우, 패리티 페이지(352)의 외부 ECC 데이터(356)는 사용자 데이터(322)를 정정하는 데 이용될 수 있다. 예를 들어, 코드워드의 페이지들의 사용자 데이터 및 패리티 페이지의 외부 ECC 데이터를 포함하는 수학식이 생성될 수 있다. 간단함을 위해, 예시로서 아래에 간단한 덧셈 수학식이 주어진다:
[수학식 1]
X = A + B + C
여기서, X는 패리티 페이지(352)의 외부 ECC 데이터와 관련될 수 있고, A는 페이지(322)의 사용자 데이터와 관련될 수 있고, B는 페이지(322)의 사용자 데이터와 관련될 수 있고, C는 페이지(342)의 사용자 데이터와 관련될 수 있다. 수학식 1은 예시를 간단하게 하기 위해 덧셈 수학식으로서 제공되지만, X, A, B, 및 C를 포함하는 임의의 다른 적절한 수학식이 대안적으로 이용될 수 있다. B 및 C는 둘다 t 에러들보다 적은 에러를 포함한다고 가정하면, B 및 C의 사용자 데이터는 올바르게 알려질 수 있다. A가 t보다 많은 에러들을 갖는 경우, A는 내부 ECC 데이터가 A를 정정하기에 불충분한 "정정 불가능" 페이지일 수 있다. 이 경우, A에 대한 올바른 사용자 데이터는 A에 대해 수학식 1을 푸는 것에 의해 결정될 수 있다:
[수학식 2]
A = X - B - E
이러한 식으로, 패리티 페이지(352)의 외부 ECC 데이터(356)는 페이지의 올바른 사용자 데이터를 결정하는 데 이용될 수 있고, NVM(320)의 사용자 데이터에 대한 제2 레벨의 보호를 제공할 수 있다. 또한, 이것은 페이지의 사용자 데이터가 그 페이지가 t보다 많은 에러들을 포함하더라도(예를 들어, 그 페이지가 "정정 불가능"이더라도) 정정될 수 있게 할 수 있다.
일부 실시예들에서, NVM(320)은 예를 들어, 비휘발성 메모리에서 다른 데이터보다 더욱 중요하거나 에러들에 더욱 취약한 사용자 데이터를 포함할 수 있다. 이러한 경우, 그러한 데이터에 대해 부가적인 보호를 제공하는 것이 바람직할 수 있다. 예를 들어, 하나의 패리티 페이지가 코드워드에 대해 제공될 때, 하나의 페이지 또는 그보다 적은 페이지가 t보다 많은 에러들을 갖는 경우, 그 페이지 내의 사용자 데이터는 여전히 정정될 수 있다. 그러나, 코드워드가 t보다 많은 에러들을 갖는 2 이상의 페이지들을 포함하는 경우, 단일 외부 ECC 데이터는 단독으로 이들 페이지 둘다를 정정할 수가 없을 수 있다(예를 들어, 수학식 1과 같은 단일 수학식은 2개의 미지수들에 대해 구해지지 않을 수 있기 때문에). 따라서, 일부 실시예들에서, 그 코드워드의 사용자 데이터에 대해 부가적인 보호를 제공하기 위해 코드워드에 대해 2 이상의 세트들의 ECC 데이터(예를 들어, 2 이상의 패리티 페이지들)가 제공될 수 있다. 예를 들어, ECC 모듈은 전체 코드워드의 사용자 데이터에 대해 2개의 에러 정정 코드들을 행할 수 있고, 각각의 에러 정정 코드는 단일 세트의 ECC 데이터를 생성할 수 있다. 2 세트의 ECC 데이터는 그 다음에 코드워드의 2개의 패리티 페이지들에 저장될 수 있다.
일부 실시예들에서, 단일 스트라이프로 한정되기보다는, 코드워드는 수퍼 블록의 2 이상의 스트라이프에 걸칠 수 있다. 예를 들어, 도 5는 비휘발성 메모리의 수퍼 블록(500)을 도시한다. 예를 들어, 수퍼 블록(500)은 도 3의 NVM(320)의 수퍼 블록들 0-3 중 임의의 것에 대응할 수 있다. 수퍼 블록(500)이 도 5에서 4개의 다이(즉, 다이들 0-3) 각각으로부터의 블록을 포함하는 것으로서 예시되고 이들 블록들 각각이 4개의 페이지(즉, 페이지들 0-4)를 갖는 것으로서 예시되지만, 이것은 단지 예시의 목적을 위한 것이다. 대안적으로, 수퍼 블록(500)은 임의의 적절한 수의 다이들 및/또는 페이지들을 포함할 수 있다.
도 5에 도시된 바와 같이, 페이지들 A1, B1, 및 Y1은 단일 코드워드("코드워드 1")를 형성할 수 있고, Y1은 코드워드 1의 패리티 페이지일 수 있다. 유사하게, A1, B2, C2, X1, 및 X2는 단일 코드워드("코드워드 2")를 형성할 수 있고, X1, 및 X2는 각각 코드워드 2의 패리티 페이지들일 수 있다. 코드워드들 1 및 2는 각각 3 및 4 페이지들을 갖는 것으로 예시되지만, 이것은 예시를 위한 것이고, 코드워드들 1 및 2는 대안적으로 임의의 적절한 수의 페이지들을 포함할 수 있다. 따라서, 도 5는 코드워드가 수퍼 블록(500)의 임의의 적절한 위치에서 시작 또는 종료할 수 있고 특정 위치에서 시작 및 종료하는 것으로 한정되지 않음(예를 들어, 스트라이프의 시작에서 시작하거나 스트라이프의 끝에서 종료하는 것으로 한정되지 않음)을 예시한다. 이러한 식으로, 비휘발성 메모리의 패리티 페이지들은 수퍼 블록 내의 불규칙적인 분포를 가질 수 있다.
도 5는 또한 단일 코드워드가 그 코드워드의 사용자 데이터를 보호하기 위해 2 이상의 패리티 페이지들을 포함할 수 있다는 것을 예시한다. 일부 실시예들에서, 더 큰 수의 패리티 페이지들을 이용하여 더욱 중요한 정보를 보호할 수 있고, 더 적은 수의 패리티 페이지들을 이용하여 덜 중요한 정보를 보호할 수 있다. 다른 예시로서, 일부 실시예들에서, 더 큰 수의 패리티 페이지들을 이용하여 에러들에 더욱 민감한 페이지들을 보호할 수 있고, 더 적은 수의 패리티 페이지들을 이용하여 에러들에 덜 민감한 페이지들을 보호할 수 있다.
따라서, 코드워드가 그와 연관된 복수의 패리티 페이지들을 가질 수 있기 때문에, 코드워드는 복수의 페이지들이 t보다 많은 에러들을 가질 때(예를 들어, 복수의 페이지들이 "정정 불가능"할 때) 정정 가능할 수 있다. 예시로서, 도 5의 코드워드 2는 2개의 패리티 페이지들, X1 및 X2를 갖는다. 따라서, 2개의 패리티 페이지들이 이용가능하기 때문에, 코드워드의 페이지들의 사용자 데이터 및 패리티 페이지들의 ECC 데이터를 포함하는 2개의 적절한 수학식들이 생성될 수 있다. 예를 들어, 2개의 예시적인 수학식들이 아래에 주어진다:
[수학식 3]
X1 = A2 + B2 + C2
[수학식 4]
X2 = A2 * B2 * C2
수학식들 3 및 4는 단지 예시의 목적으로 주어지고, 2개의 정정 불가능 페이지들의 복구를 지원하기에 충분한 임의의 다른 2개의 수학식들이 이용될 수 있다. 예를 들어, 일부 실시예들에서, 제1 수학식은 간단한 XOR 수학식(예를 들어, GF(2) 덧셈 수학식)일 수 있고, 제2 수학식은 GF(2x)에 기초한 리드 솔로몬 수학식일 수 있고, 여기서, x는 8 또는 임의의 다른 적절한 수와 같을 수 있다.
따라서, 코드워드 2의 최대 2 페이지들이 t보다 많은 에러들을 갖는 경우(예를 들어, "정정 불가능"한 경우), 수학식들 3 및 4는 이들 페이지들의 올바른 사용자 데이터를 결정하기 위해 동시에 구해질 수 있다(예를 들어, 2개의 수학식들이 2개의 미지수들에 대해 구해질 수 있기 때문에). 따라서, 코드워드에 대한 외부 ECC 데이터의 부가적인 세트를 생성함으로써, 데이터 에러들로부터 그 코드워드를 지키기 위해 부가적인 보호 계층이 제공될 수 있다. 유사하게, 코드워드를 보호하기 위해서 임의의 적절한 수의 패리티 페이지들 및 외부 ECC 데이터 세트가 포함될 수 있다. 예를 들어, "n" 세트들의 외부 ECC 데이터가 코드워드에 대해 생성될 수 있으므로, "정정 불가능"한(예를 들어, t 또는 그보다 많은 에러들을 갖는) n 또는 그보다 적은 페이지들이 존재할 때 코드워드가 정정될 수 있게 한다.
본원에 이용되는 바와 같이, "정정 불가능" 또는 "정정 불가능 페이지"라는 용어들은 t보다 많은 에러들을 갖고 그 페이지의 내부 ECC 데이터에 의해 정정되지 않을 수 있는 페이지를 가리킬 수 있다. 그러나, 정정 불가능 페이지는 여전히 정정 불가능 페이지를 포함하는 코드워드가 적절한 수의 패리티 페이지들을 가질 때(예를 들어, 임의의 수의 세트들의 외부 ECC 데이터를 가질 때) 교정될 수 있다. 따라서, 본원에 이용되는 바와 같이, "정정 불가능 페이지"라는 용어는, 그러한 페이지들은 여전히 하나 이상의 패리티 페이지들의 이용을 통해 교정가능할 수 있기 때문에, 페이지가 결코 정정될 수 없음을 의미하지 않는다.
도 5의 패리티 페이지들은 불규칙적인 분포를 갖기 때문에, 수퍼 블록의 패리티 페이지들이 배치되는 곳이 쉽게 알려지지 않을 수 있다(예를 들어, 코드워드는 임의의 위치에서 시작하고 종료할 수 있기 때문에). 따라서, 일부 실시예들에서, 페이지들 중 어느 것이 패리티 페이지들인지를 표시하기 위해 페이지들의 메타데이터에 마커가 포함될 수 있다. 예를 들어, "패리티 페이지 마커"는 각각의 페이지에서 메타데이터 태그로서 포함될 수 있다. 일반적으로, 단일 비트가 이 메타데이터 태그로서 이용될 수 있다. 예를 들어, 비트는 페이지가 패리티 페이지인 경우 "1"일 수 있고, 페이지가 패리티 페이지가 아닌 경우 "0"일 수 있거나, 그 반대도 가능하다. 대안적으로, 임의의 다른 적절한 수의 비트들이 패리티 페이지 마커를 위해 이용될 수 있다.
각각의 페이지의 메타데이터 태그에 저장된 패리티 페이지 마커는 시스템의 메모리에서 공간 절약을 제공할 수 있다. 예를 들어, 패리티 페이지 마커들이 포함되지 않는 경우, 비휘발성 메모리의 각각의 페이지 및 그 페이지가 패리티 페이지인지 여부를 추적하는 (예를 들어, 도 1의 NVM(120) 또는 메모리(114)에 저장된) 별개의 테이블을 저장하는 것이 필요할 수 있다. 그러나, 각각의 페이지가 패리티 페이지 마커를 포함하는 경우, 별개의 테이블을 유지하기보다는, 시스템은 그 페이지가 프로세싱을 위해 검색될 때(예를 들어, 판독, 또는 그렇지 않으면 그의 데이터가 액세스될 때) 페이지가 패리티 페이지인지 여부를 결정할 수 있다.
페이지들이 패리티 페이지 또는 비-패리티 페이지로서 적절하게 식별되는 것을 돕기 위해서, 패리티 페이지 마커를 포함하는 메타데이터 태그는 여분으로(redundantly) 저장될 수 있다. 예를 들어, 기입 요구에 응답하여, NVM 인터페이스(예를 들어, 도 1의 NVM 인터페이스(118))는 제1 메모리 위치(예를 들어, 페이지)에 데이터 및 그의 연관된 패리티 페이지 마커를 저장할 수 있고, 제2 메모리 위치에 패리티 페이지 마커의 여분의 카피를 저장할 수 있다. 이렇게, 제1 메모리 위치가 액세스불가능하게 되더라도, 메모리 인터페이스는 여전히 제2 메모리 위치에 저장된 백업 카피로부터 패리티 페이지 마커를 복구할 수 있다. 따라서, 시스템은 페이지가 패리티 페이지인지 여부를 여전히 정확하게 결정할 수 있다. 패리티 페이지 마커에 부가하여, 2009년 9월 18일자로 출원되고 명칭이 "METADATA REDUNDANCY SCHEMES FOR NON-VOLATILE MEMORIES"인 동시계류중인 공동 양도된 미국 특허 출원 번호 12/562,860(이것은 이로써 본원에 그대로 포함됨)에 논의된 바와 같이, 임의의 다른 적절한 메타데이터가 여분으로 저장될 수 있다.
NVM의 각각의 페이지가 패리티 페이지 마커를 포함할 수 있기 때문에, 그 코드워드 내로부터 임의의 코드워드의 사이즈를 결정하는 것이 가능할 수 있다. 예를 들어, 다시 도 5를 참조하면, NVM 인터페이스(예를 들어, 또는 전자 장치의 임의의 다른 적절한 컴포넌트)는 수퍼 블록(500)의 데이터를 스캔(예를 들어, 판독)할 수 있다. 예시로서, NVM 인터페이스는 현재 코드워드 2의 페이지 A2를 스캔하고 있을 수 있다. 코드워드 2의 사이즈를 결정하기 위해서, NVM 인터페이스는 패리티 페이지를 대면할 때까지 "좌로 스캔"할 수 있다.
본원에 이용되는 바와 같이, "좌로 스캔(scan left)"이라는 용어는 현재 프로세싱 방향과 반대인 방향으로 NVM의 페이지들을 스캔하는 것을 가리킨다. 예를 들어, 도 5에서, "좌로 스캔"하기 위해서 수퍼 블록(500)의 페이지들은 순서 . . . A2, Y1, B1, A1, . . . 등으로 스캔될 수 있다. 다시 한번, 도 5는 단지 NVM의 기능적 도시를 나타내고 NVM의 물리적 레이아웃을 표시하도록 의미하지 않기 때문에, "좌로 스캔"이라는 용어는 페이지들의 물리적 레이아웃을 표시하지 않고 오직 페이지들이 프로세싱되는 순서를 표시하도록 의미한다. 또한, 좌로 스캔할 때, 스캔은 페이지들을 랩 어라운드(wrap-around)할 수 있고 하나의 스트라이프로부터 다른 스트라이프로 진행할 수 있다. 예를 들어, 좌로 스캔할 때 페이지들은 순서 . . . C1, B2, A2, . . . 등으로 프로세싱될 수 있다. 유사하게, 본원에 이용되는 바와 같이, "우로 스캔"이라는 용어는 현재 프로세싱 방향의 방향으로 NVM의 페이지들을 스캔하는 것을 가리킨다. 예를 들어, 도 5에서, "우로 스캔"하기 위해서 수퍼 블록(500)의 페이지들은 순서 . . . Y1, A2, B2, C1, X1, . . . 등으로 스캔될 수 있다.
따라서, 코드워드의 사이즈를 결정하기 위해서, 예시로서, NVM 인터페이스(예를 들어, 또는 전자 장치의 다른 적절한 컴포넌트)는 페이지 A2로부터 좌로 스캔할 수 있다. NVM 인터페이스는 패리티 페이지를 대면할 때까지(즉, 페이지 Y1), 좌로 스캔하는 것을 유지할 수 있다. 예를 들어, NVM 인터페이스는 페이지의 패리티 페이지 마커를 판독함으로써 그 페이지가 패리티 페이지임을 결정할 수 있다. 페이지 Y1가 이전 코드워드의 끝을 표시할 수 있기 때문에, NVM 인터페이스는 코드워드 2가 페이지에서 페이지 Y1의 우측으로(즉, 페이지 A2) 시작함을 결정할 수 있다. 코드워드 2의 끝을 배치하기 위해서, NVM 인터페이스는 패리티 페이지를 대면할 때까지(즉, 페이지 X1) 우로 스캔할 수 있다. NVM 인터페이스는 그 다음에 비-패리티 페이지를 대면할 때까지(즉, 페이지 A3) 우로 스캔하는 것을 진행할 수 있으므로, 새로운 코드워드가 시작되었음을 표시할 수 있다. NVM 인터페이스는 그 다음에 이들 2개의 스캔으로부터, 코드워드 2가 2개의 패리티 페이지들을 갖고(예를 들어, 우로 스캔에서 대면한 2개의 패리티 페이지들 때문) 코드워드의 사이즈가 길이가 5 페이지들(예를 들어, 페이지들 A2, B2, C2, X1, 및 X2)임을 결정할 수 있다.
일부 실시예들에서, 패리티 페이지 마커에 부가하여 또는 그 대신에, 페이지들은 "제1 페이지" 마커를 포함할 수 있다. 예를 들어, 이 페이지가 코드워드의 제1 페이지임을 표시하는 메타데이터 태그가 페이지의 메타데이터에 포함될 수 있다(예를 들어, 페이지 A2는 제1 페이지 메타데이터 태그를 포함할 수 있다). 따라서, 이 경우, 코드워드의 시작을 결정하기 위해서 NVM 인터페이스는 제1 페이지 메타데이터 태그를 대면할 때까지 좌로 스캔할 수 있다.
일부 실시예들에서, 패리티 페이지들의 불규칙적인 분포를 포함하는 것은 전자 장치의 다양한 동작들에 영향을 줄 수 있다. 예시로서, 패리티 페이지들의 불규칙적인 분포는 디바이스의 파워-업 시퀀스에 영향을 줄 수 있다. 전술한 바와 같이, NVM 인터페이스는 NVM의 사용자 데이터의 논리-대-물리 어드레스 맵핑을 저장할 수 있다. 특히, 별개의 테이블(즉, "어드레스 테이블")이 이 논리-대-물리 어드레스 맵핑을 유지하도록 생성될 수 있다. 그러나, 어드레스 테이블은 구식이 될 수 있거나(예를 들어, 사용자 데이터는 테이블을 갱신하지 않고 이동될 수 있음) 또는 이웃하는 위치들로부터의 방해 영향들, 결함들, 실패한 판독 동작들로 인해, 또는 일부 다른 에러 유발 현상으로 인해 에러들이 생기거나 판독 불가능하게 될 수 있다. 따라서, 어드레스 테이블의 무결성을 유지하는 것을 돕기 위해서, 이 테이블은 NVM의 파워-업시에 재확립될 수 있다. 예를 들어, 파워-업시, NVM의 각각의 페이지는 스캔될 수 있고, 각각의 페이지의 논리 어드레스가 (예를 들어, 페이지의 메타데이터로부터) 판독될 수 있다. 논리 어드레스는 그 다음에 그 페이지의 물리 어드레스와 연관되어 어드레스 테이블에 저장될 수 있다.
그러나, 패리티 페이지는 사용자 데이터를 포함하지 않을 수 있기 때문에, 일반적으로 어드레스 테이블에 패리티 페이지의 논리 어드레스를 저장할 필요가 없을 수 있다. 따라서, 이들 페이지들은 전자 장치의 파워-업 동안 어드레스 테이블을 생성할 때 "스킵"될 수 있다. 그러나, 패리티 페이지들의 불규칙적인 분포로 인해, 시스템은 패리티 페이지들의 위치들을 쉽게 알지 않을 수 있다. 따라서, 파워-업 동안, 각각의 페이지의 패리티 페이지 마커가 판독될 수 있다. 패리티 마커가 페이지가 비-패리티 페이지임을 표시하는 경우, 그 페이지의 논리 어드레스 및 연관된 물리 어드레스가 어드레스 테이블에 저장될 수 있다. 그러나, 패리티 페이지 마커가 페이지가 패리티 페이지임을 표시하는 경우, 그 페이지는 스킵될 수 있고 그의 논리 어드레스는 어드레스 테이블에 저장되지 않는다.
이제 도 6을 참조하면, 본 발명의 일부 실시예들에 따른 예시적인 프로세스(600)의 흐름도가 도시된다. 프로세스(600)는 전자 장치(예를 들어, 도 1의 전자 장치(100))의 파워-업시에 어드레스 테이블을 확립하도록 실행될 수 있다. 특히, 프로세스(600)는 패리티 페이지들의 불규칙적인 분포를 갖는 비휘발성 메모리와 관련된 어드레스 테이블을 확립하도록 실행될 수 있다. 각각 도 1 및 2의 NVM 인터페이스(118 또는 218)와 같은 임의의 적절한 메모리 인터페이스가 프로세스(600)를 실행할 수 있고, 프로세스(600)는 때때로 이와 같이 설명될 수 있다. 그러나, 메모리 시스템 또는 전자 장치 내의 임의의 다른 적절한 컴포넌트(들)가 이들 단계들을 수행하도록 구성될 수 있다는 것을 이해해야 한다.
프로세스(600)는 단계(602)에서 시작할 수 있다. 예를 들어, 단계(602)는 전자 장치의 파워-업시에 일어날 수 있다. 단계(604)에서, 프로세스(600)는 현재 페이지의 패리티 페이지 마커를 판독함으로써 NVM의 페이지들을 스캔할 수 있다. 단계(606)에서, 이 패리티 페이지 마커는 그 페이지가 패리티 페이지인지 여부를 결정하도록 분석될 수 있다. 예를 들어, "1"의 패리티 페이지 마커는 페이지가 패리티 페이지임을 표시할 수 있고, "0"의 패리티 페이지 마커는 페이지가 패리티 페이지가 아님을 표시할 수 있다. 대안적으로, 페이지가 패리티 페이지인지 여부를 표시하기 위해 임의의 다른 적절한 마커 또는 비트 시퀀스가 이용될 수 있다.
페이지가 패리티 페이지가 아님을 결정하는 것에 응답하여, 프로세스(600)는 어드레스 테이블에 이 페이지를 추가하기 위해 단계(608)로 진행할 수 있다. 특히, 단계(608)에서, 페이지의 논리 어드레스가 판독될 수 있다. 단계(608)에서, 판독된 논리 어드레스는 페이지의 물리 어드레스와 연관되어 어드레스 테이블에 저장될 수 있다.
단계(612)에서, 프로세스(600)는 아직 스캔되지 않은 NVM 내의 페이지들(예를 들어, 물리적 위치들)이 더 존재하는지를 결정할 수 있다. 더 많은 페이지들이 있다는 것에 응답하여, 프로세스(600)는 단계(616)에서 NVM의 다른 페이지로 진행할 수 있다. 단계들(604, 606, 608, 610, 612, 및 616)은 그 다음에 전체 NVM이 스캔되고 어드레스 테이블이 완료될 때까지 적절하게 루프를 형성하고 반복될 수 있다. NVM에 스캔할 더 많은 페이지가 존재하지 않는다는 것에 응답하여, 프로세스(600)는 단계(612)로부터 단계(614)로 진행할 수 있고, 그 다음에 프로세스가 종료될 수 있다.
단계(606)로 돌아가면, 현재 페이지가 패리티 페이지임을 표시하는 패리티 페이지 마커에 응답하여, 프로세스(600)는 단계(612)로 직접 진행할 수 있다. 이러한 식으로, 단계들(608 및 610)을 우회함으로써, 패리티 페이지의 논리 어드레스는 스킵될 수 있고 어드레스 테이블에 저장되지 않을 수 있다. 따라서, 프로세스(600)를 실행하는 것에 의해, 오직 외부 ECC 데이터를 포함하는 임의의 페이지들(예를 들어, 패리티 페이지들)을 우회하면서, NVM 인터페이스는 사용자 데이터를 포함하는 페이지들(예를 들어, 비-패리티 페이지들)의 논리-대-물리 어드레스들을 포함하는 어드레스 테이블을 확립할 수 있다. 특히, 페이지가 패리티 페이지임을 결정하면, 프로세스(300)는 그 패리티 페이지를 무시하고(예를 들어, 패리티 페이지의 메타데이터의 논리 어드레스 영역을 무시하고) 그 대신에 비-패리티 페이지가 배치될 때까지 NVM의 페이지를 스캔하는 것을 유지할 수 있다.
패리티 페이지들의 불규칙적인 분포에 의해 영향을 받을 수 있는 시스템 동작의 다른 예가 NVM으로부터의 데이터의 검색이다. 예를 들어, 데이터의 검색은 패리티 페이지가 판독되거나, 프로세싱되거나, 달리 저장된 데이터가 액세스될 때를 포함할 수 있다. 데이터를 검색할 때, 하나 이상의 정정 불가능 페이지들(예를 들어, t보다 큰 에러들을 갖는 페이지들)을 대면할 수 있다. 오직 단일 패리티 페이지 및/또는 규칙적으로 분포되는 패리티 페이지를 갖는 시스템에서, 시스템은 코드워드에서 얼마나 많은 정정 불가능 페이지들이 교정될 수 있는지를 자동으로 알고 있을 수 있다. 그러나, 패리티 페이지들의 불규칙적인 분포를 갖는 시스템에서, 시스템은 먼저 그 코드워드가 교정될 수 있는지를 결정하기 전에 그 코드워드와 연관된 패리티 페이지들의 수를 결정할 필요가 있을 수 있다. 예를 들어, 코드워드의 검색 동안 2개의 정정 불가능 페이지를 대면하면, 시스템은 코드워드가 2(예를 들어, 또는 그보다 많은) 세트의 외부 ECC 데이터를 갖는지를 결정할 필요가 있을 수 있다. 코드워드가 2 이상의 세트의 외부 ECC 데이터와 연관되는 경우, 2개의 정정 불가능 페이지들이 에러 없는 페이지들로 대체될 수 있고, 코드워드의 정확도가 회복될 수 있다.
위에서 언급한 바와 같이, 시스템은 t보다 많은 에러들을 갖는 코드워드의 정정 불가능 페이지들을 교정하기 위해 수학식 1(예를 들어, 코드워드가 한 세트의 외부 ECC 데이터를 가질 때) 또는 수학식 3 및 4(예를 들어, 코드워드가 2 세트의 외부 ECC 데이터를 가질 때), 또는 임의의 다른 적절한 수학식들과 같은 수학식들을 적용할 수 있다. 따라서, 일부 실시예들에서, 코드워드의 데이터는 그 코드워드가 검색되고 있을 때 버퍼링될 수 있다. 그 다음, 전체 코드워드가 검색되었을 때, 시스템은 얼마나 많은 정정 불가능 페이지들이 존재하는지 및 얼마나 많은 패리티 페이지들이 그 코드워드를 위해 이용가능한지를 결정할 수 있다. 이 정보로부터, 시스템은 정정 불가능 페이지들이 교정될 수 있는지를 결정할 수 있고, 그렇다면, 버퍼링된 데이터를 적용하여 적절한 수학식들을 풀 수 있으므로, 정정 불가능 페이지들의 올바른 값들을 결정할 수 있다.
일부 실시예들에서, 코드워드를 검색하는 것의 시작으로부터 코드워드를 버퍼링하기보다는, 버퍼링은 정정 불가능 페이지가 검출된 후에 시작할 수 있다. 이것은 예를 들어 임의의 정정 불가능 페이지들을 갖지 않는 코드워드들이 버퍼링될 필요가 없을 수 있기 때문에 시스템에 메모리 절감을 제공할 수 있다.
예시로서, 시스템은 도 5의 코드워드 2를 검색하고 있을 수 있고, 페이지 B2가 정정 불가능함을 결정할 수 있다. 정정 불가능 페이지를 대면하면, 시스템은 코드워드의 시작(예를 들어, 페이지 A2)을 대면할 때까지 좌로 스캔할 수 있다. 시스템은 그 다음에 페이지 B2 자체를 버퍼링할 뿐만 아니라 페이지 B2의 좌로 페이지 또는 페이지들을 버퍼링할 수 있다. 시스템은 그 다음에 페이지 B2 다음의 코드워드의 페이지들을 검색 및 버퍼링하는 것을 진행할 수 있다. 부가적인 정정 불가능 페이지들을 대면하는 것에 응답하여, 시스템은 이들 정정 불가능 페이지들을 교정하기 위해 임의의 수의 패리티 페이지들이 존재할 수 있기 때문에 코드워드의 페이지들의 검색 및 버퍼링을 계속할 수 있다. 다시 말해, 이들 페이지들을 교정하기 위해 코드워드의 끝에 임의의 수의 세트들의 외부 ECC 데이터가 존재할 수 있기 때문에, 시스템은 정정 불가능 페이지들을 대면하면 코드워드가 교정 불가능함을 자동으로 가정할 수 없을 수 있다. 코드워드의 끝을 대면하면, 시스템은 (예를 들어, 페이지들의 패리티 페이지 마커들을 판독함으로써) 얼마나 많은 패리티 페이지들이 이용가능한지를 결정할 수 있고, 적절한 수의 패리티 페이지들이 존재하는 경우, (예를 들어, 임의의 적절한 수의 세트들의 외부 ECC 데이터와 관련된 수학식 1, 3, 4, 또는 임의의 다른 적절한 수학식들을 적용함으로써) 정정 불가능 페이지들을 교정할 수 있다.
일부 실시예들에서, 코드워드를 버퍼링하기보다는, 페이지들을 정정하기 위한 하나 이상의 적절한 수학식들이 그 코드워드가 검색되고 있을 때 "온 더 플라이" 계산될 수 있다. 예시로서, 코드워드가 검색될 때, 시스템은 코드워드가 2개의 패리티 페이지(예를 들어, 또는 임의의 다른 적절한 수의 패리티 페이지)와 연관되는 것처럼 페이지들을 취급할 수 있다. 따라서, 페이지들이 검색될 때, 페이지들의 데이터를 이용하여 수학식 3 및 4(예를 들어, 또는 임의의 다른 적절한 수학식들)와 같은 수학식들의 계산들을 온 더 플라이 갱신할 수 있다. 코드워드의 끝에 도달하여 얼마나 많은 패리티 페이지들이 실제로 존재하는지를 결정하면, 시스템은 예를 들어, 두 수학식들을 적용하거나, 수학식들 중 하나만을 적용하거나, 어떠한 수학식도 적용하지 않거나, 코드워드를 폐기할 수 있다. 예를 들어, 2개의 정정 불가능 페이지 및 2개의 패리티 페이지가 존재한다고 결정하면, 수학식들 둘다가 이들 페이지들을 교정하기 위해 적용될 수 있다. 다른 예로서, 하나의 정정 불가능 페이지 및 하나의 패리티 페이지가 존재한다고 결정하면, 계산된 수학식들 중 하나를 이용하여 이 페이지를 정정할 수 있다(예를 들어, 그리고 다른 계산된 수학식이 폐기될 수 있다). 또 다른 예로서, 어떠한 정정 불가능 페이지들도 존재하지 않다고 결정하면, 교정이 필요하지 않기 때문에 계산된 수학식들 중 어떤 것도 이용되지 않을 수 있다. 또 다른 예로서, 정정 불가능 페이지들을 교정하기 위해 충분한 패리티 페이지들이 존재하지 않는다고 결정하면, 코드워드는 올바르지 않은 데이터를 갖는 것으로서 폐기될 수 있다. 유사하게, 코드워드가 검색될 때 3개 이상의 수학식들을 계산하는 "온 더 플라이" 방법이 이용될 수 있다.
도 7a, 7b, 및 8은 비휘발성 메모리의 코드워드로부터 데이터를 검색하기 위한 프로세스들(700, 750, 및 800)을 각각 도시한다. 각각 도 1 및 2의 NVM 인터페이스(118 또는 218)와 같은 임의의 적절한 메모리 인터페이스가 프로세스들(700, 750, 및 800)을 실행할 수 있고, 이들 프로세스들은 때때로 이와 같이 설명될 수 있다. 그러나, 메모리 시스템 또는 전자 장치의 임의의 다른 적절한 컴포넌트(들)가 이들 단계들을 수행하도록 구성될 수 있다는 것을 이해해야 한다.
프로세스들(700 및 750)은 예를 들어, 데이터가 검색될 때 코드워드의 페이지들의 데이터를 버퍼링할 수 있다. 버퍼링된 데이터는 그 다음에 코드워드의 정정 불가능 페이지들을 교정하기 위해 이용될 수 있다.
프로세스(700)는 단계(702)에서 시작할 수 있다. 단계(704)에서, NVM으로부터 특정 세트의 데이터를 검색하기 위한 요구가 수신될 수 있다. 예를 들어, 데이터를 판독하거나, 데이터를 프로세싱하거나, 그렇지 않으면 데이터에 액세스하기 위한 요구가 수신될 수 있다. 단계(706)에서, 요구는 연관된 세트의 물리 어드레스들로 변환될 수 있다. 예를 들어, 특정 세트의 데이터가 저장되는 페이지들의 물리 어드레스들이 결정될 수 있다.
단계(708)에서, 단계(706)의 물리 어드레스들에 저장된 데이터가 검색될 수 있다. 데이터가 검색되고 있을 때, 프로세스(700)는 단계(710)에서 정정 불가능 페이지를 대면하였는지를 결정할 수 있다. 어떠한 정정 불가능 페이지들도 대면하지 않은 것에 응답하여, 물리 어드레스의 데이터의 검색이 "정상적으로" 진행할 수 있다. 다시 말해, 데이터는 외부 ECC 데이터와 관련되거나 정정 불가능 페이지를 교정하는 것과 관련된 부가적인 단계들을 실행하지 않고 검색될 수 있다.
그러나, 정정 불가능 페이지를 대면하는 것에 응답하여, 프로세스(700)는 단계(716)로 진행할 수 있다. 단계(716)에서, 검색을 위해 요구된 데이터가 버퍼링될 수 있다. 예를 들어, 정정 불가능 페이지로부터 시작하여, NVM은 단계(706)에서 결정된 물리 어드레스들에 저장된 데이터를 버퍼링하기 위해 좌로 스캔 및 우로 스캔할 수 있다. 이 버퍼링된 데이터는 그 다음에 정정 불가능 페이지 또는 페이지들을 교정하기 위해 이용될 수 있다. 예를 들어, 버퍼링된 데이터는 정정 불가능 페이지들을 교정하기 위해 버퍼링된 데이터와 연관된 하나 이상의 외부 ECC 코드들과 결합하여 이용될 수 있다. 프로세스(700)는 그 다음에 단계(714)에서 종료할 수 있다.
도 7b로 진행하면, 프로세스(750)는 예를 들어, 그 데이터가 검색될 때 코드워드의 페이지들의 데이터를 버퍼링할 수 있다. 프로세스(750)의 단계들 중 일부는 도 7a의 프로세스(700)의 하나 이상의 단계들에 대응할 수 있다. 예를 들어, 프로세스(750)의 단계들은 프로세스(700)의 단계들(708, 710, 712, 및 714)을 더 상세하게 예시할 수 있다.
프로세스(750)는 단계(752)에서 시작할 수 있다. 단계(754)에서, 코드워드의 제1 페이지(예를 들어, 물리 어드레스)가 검색될 수 있다. 예를 들어, "코드워드"는 프로세스(700)의 단계(706)에서 결정된 물리 어드레스들의 세트에 대응할 수 있다. 페이지의 데이터를 검색하기 위해서, 페이지는 판독, 프로세싱, 또는 그렇지 않으면 그의 저장된 데이터에 액세스될 수 있다. 단계(756)에서, 프로세스(750)는 단계(754)에서 검색된 페이지가 정정 불가능한지를 결정할 수 있다. 예를 들어, 페이지는 그것이 t보다 많은 에러들을 갖는 경우 정정 불가능할 수 있어, 페이지의 임의의 내부 ECC 데이터가 그 페이지의 에러들을 정정할 수 없다. 정정 불가능하지 않은 페이지에 응답하여, 프로세스(750)는 단계(758)에서 코드워드의 끝에 도달하였는지를 결정할 수 있다. 코드워드의 끝에 도달하지 않았다면, 프로세스(750)는 단계(754)로 리턴할 수 있고, 다음 페이지(예를 들어, 물리 어드레스)가 검색될 수 있다. 대안적으로, 코드워드의 끝에 도달하였다면, 프로세스(750)는 단계(760)에서 종료할 수 있다. 이러한 식으로, 코드워드의 어떠한 페이지들도 정정 불가능이 아닐 때, (즉, 단계들(754, 756, 및 756)을 루프 형성함으로써) 전체 코드워드가 검색될 수 있고, 프로세스(750)는 버퍼링된 페이지들 중 임의의 것을 갖지 않고 종료할 수 있다.
단계(756)로 리턴하면, 정정 불가능인 코드워드의 페이지에 응답하여, NVM 인터페이스는 코드워드의 시작으로 단계(762)에서 "좌로 스캔"할 수 있다. 예를 들어, NVM 인터페이스는 패리티 페이지 마커(예를 들어, 메타데이터 태그)가 그것이 패리티 페이지임을 표시하는 페이지에 도달할 때까지 좌로 스캔함으로써 코드워드의 시작을 식별할 수 있다. 이 경우, 패리티 페이지를 직접 진행하는 페이지는 코드워드의 시작으로서 결정될 수 있다. 다른 예로서, NVM 인터페이스는 제1 페이지 메타데이터 태그를 대면할 때까지 좌로 스캔할 수 있어, 이 페이지가 코드워드의 제1 페이지임을 표시할 수 있다. NVM 인터페이스는 단계(754)에서 검색된 페이지 자체뿐만 아니라 단계(754)에서 검색된 페이지의 좌측에 있는 이들 페이지들을 버퍼링할 수 있다. 프로세스(750)는 그 다음에 단계들(764 및 766)에서 코드워드의 나머지 페이지들의 검색 및 버퍼링을 계속할 수 있다.
코드워드의 끝에 도달하였고 전체 코드워드가 버퍼링된 것에 응답하여, 패리티 페이지들 및 정정 불가능 페이지들의 수가 단계(768)에서 결정될 수 있다. 예를 들어, NVM 인터페이스는 페이지들이 검색되었을 때 정정 불가능 페이지들의 수의 기록(tally)을 유지할 수 있다. 패리티 페이지들의 수를 결정하기 위해서, NVM 인터페이스는 패리티 페이지 마커가 그것이 패리티 페이지가 아님을 표시하는(예를 들어, 따라서 코드워드의 패리티 페이지들 전부가 스캔되었음을 표시하는) 페이지에 도달할 때까지 패리티 페이지들에 걸쳐서 "우로 스캔"할 수 있다.
하나 이상의 패리티 페이지들의 이용을 통해 페이지들이 교정 가능하지 않을 수 있는 경우들이 존재할 수 있다. 이들 경우에, NVM 컨트롤러는 정책들(policies)을 다루는 다수의 정정 불가능 에러 중 어느 하나를 호출(invoke)할 수 있다. 예를 들어, 사용자 데이터 페이지가 정정 불가능한 경우, NVM 컨트롤러는 그 페이지에 대한 메타데이터를 획득하기 위해 휘발성 메모리 내의 데이터 구조에 액세스함으로써 페이지를 복구할 수 있다. 정정 불가능 에러로부터의 복구는 시스템이 계속해서 동작하고 데이터 일관성을 유지할 수 있게 한다. 정정 불가능 에러로부터의 복구를 위한 부가적인 상세들이 예를 들어, 명칭이 "Uncorrectable Error Handling Schemes for Non-Volatile Memories"이고 ________에 출원된(이와 동시에) Post et al.의 미국 특허 출원 번호 ________(대리인 사건 번호 P8905US1)에서 발견될 수 있고, 그 개시가 이로써 그대로 참고로 포함된다. 다른 예로서, 인덱스 페이지(즉, 물리 어드레스들에 대한 논리 섹터들의 맵핑들을 저장하는 NVM의 페이지)가 정정 불가능한 경우, NVM은 복구 동작을 호출하기 전에 휘발성 메모리 내의 데이터 구조에 액세스함으로써 그 페이지의 재구성을 시도할 수 있다. 정정 불가능 에러를 갖는 인덱스 페이지를 다루기 위한 부가적인 상세들이 예를 들어, 2009년 7월 24일에 출원된 Wakrat et al.의 미국 특허 출원 번호 12/509,071 및 명칭이 "Garbage Collection Schemes for Index Block"이고 ________에 출원된(이와 동시에) Post et al.의 미국 특허 출원 번호 ________(대리인 사건 번호 P8907US1)에서 발견될 수 있고, 두 개시는 이로써 그대로 참고로 포함된다.
단계(770)에서, 프로세스(750)는 코드워드가 교정가능한지를 결정할 수 있다. 예를 들어, 패리티 페이지들의 수가 정정 불가능 페이지들의 수보다 크거나 같을 때, 코드워드는 교정가능할 수 있다. 다른 예로서, 패리티 페이지들의 수가 정정 불가능 페이지들의 수보다 작을 때, 코드워드는 교정가능하지 않을 수 있다. 코드워드가 교정 가능한 것에 응답하여, 코드워드는 단계(772)에서 교정될 수 있다. 예를 들어, 정정 불가능 페이지들을 교정하기 위해 수학식 1(예를 들어, 코드워드가 한 세트의 외부 ECC 데이터를 가질 때) 또는 수학식 3 및 4(예를 들어, 코드워드가 2 세트의 외부 ECC 데이터를 가질 때) 또는 임의의 다른 적절한 수학식(들)과 같은 수학식들이 계산될 수 있다. 프로세스(750)는 그 다음에 단계(760)에서 종료할 수 있다. 그러나, 코드워드가 교정 가능하지 않을 때, 코드워드는 예를 들어, 올바르지 않은 데이터를 갖는 것으로서 단계(774)에서 폐기될 수 있다.
일부 실시예들에서, 프로세스(750)는 대안적으로 단계(764)에서 시작할 수 있고, 이전 단계들은 생략될 수 있다. 예를 들어, 그렇게 하는 것은 먼저 적어도 하나의 정정 불가능 페이지가 존재하는지를 결정하지 않고 코드워드의 데이터를 항상 버퍼링하는 시스템을 제공할 수 있다.
도 8은 비휘발성 메모리의 코드워드로부터 데이터를 검색하기 위한 프로세스(800)를 도시한다. 예를 들어, 데이터가 검색될 때, 프로세스(800)는 코드워드의 정정 불가능 페이지들을 교정하기 위한 수학식들을 "온 더 플라이" 계산할 수 있다. 다시 말해, 프로세스(800)는 그의 페이지들의 데이터를 버퍼링할 필요 없이 정정 불가능 페이지들을 교정할 수 있다. 간단함을 위해 도시되지 않지만, 프로세스(800)는 부가적으로 코드워드를 위한 검색 요구가 수신되고, 이 검색 요구가 물리 어드레스들의 세트로 변환되는, 프로세스(700)의 단계들(704 및 706)과 같은 사전 단계들(pre-steps)을 포함할 수 있다.
프로세스(800)는 단계(802)에서 시작할 수 있다. 단계(804)에서, 프로세스는 코드워드가 "m" 패리티 페이지들(예를 들어, "m" 세트들의 외부 ECC 데이터)을 가질 것이고, 그의 패리티 페이지들과 연관된 "m" 수학식들이 존재할 것임(예를 들어, 여기서 "m"은 1, 2, 3, 4, 또는 임의의 다른 적절한 수일 수 있음)을 가정할 수 있다. 예를 들어, m이 1과 같을 때, 프로세스(800)는 수학식 1을 가정할 수 있다. 다른 예로서, m이 2와 같을 때, 프로세스(800)는 수학식 3 및 4를 가정할 수 있다.
단계(806)에서, 코드워드의 제1 페이지가 검색될 수 있다. 예를 들어, 페이지는 판독, 프로세싱, 또는 그렇지 않으면 그의 저장된 데이터에 액세스될 수 있다. 단계(808)에서, 단계(804)에서 결정된 수학식 또는 수학식들의 계산은 검색된 페이지의 데이터로 갱신될 수 있다. 단계(810)에서, 프로세스(800)는 코드워드의 끝에 도달하였는지를 결정할 수 있다. 끝에 도달하지 않은 것에 응답하여, 프로세스(800)는 단계(806)로 리턴할 수 있고 단계들(808 및 810)을 반복할 수 있다. 이러한 식으로, 코드워드의 끝에 도달할 때까지 단계들(806, 808, 및 810)을 루프 형성함으로써, 단계(804)의 수학식들이 계속해서 코드워드에 걸쳐서 진행하고, 페이지들을 검색하고, 검색된 페이지들의 데이터로 계산들을 갱신함으로써 "온 더 플라이" 계산될 수 있다.
코드워드의 끝에 도달한 것에 응답하여, 프로세스(800)는 단계(812)에서 코드워드와 연관된 실제 수의 패리티 페이지들을 결정할 수 있다. 예를 들어, 코드워드의 패리티 페이지들에 도달하면, NVM 인터페이스는 패리티 페이지 마커가 그것이 패리티 페이지가 아님을 표시하는(예를 들어, 따라서 그 코드워드의 패리티 페이지들 전부가 스캔되었음을 표시하는) 페이지에 도달할 때까지 패리티 페이지들에 걸쳐서 "우로 스캔"함으로써 패리티 페이지들의 수를 결정할 수 있다. 단계(812)에서 결정된 실제 수의 패리티 페이지들은 단계(804)에서 가정된 "m"개의 패리티 페이지들과 같을 수 있거나 그렇지 않을 수 있다. 단계(812)에서, NVM 인터페이스는 코드워드의 정정 불가능 페이지들의 수를 결정할 수도 있다. 예를 들어, 코드워드가 검색될 때, NVM 인터페이스는 t보다 큰 에러들을 갖는 페이지들의 수의 기록을 유지하였을 수 있다.
단계(814)에서, "거짓(false)" 수학식들(만약에 있다면)은 "m" 수학식들로부터 폐기될 수 있다. 거짓 수학식들은 존재할 것으로 가정되었지만 그 수학식을 생성하기 위해 적절한 외부 ECC 데이터가 존재하지 않는, 프로세스(800)에서 계산된 임의의 수학식들을 포함할 수 있다. 예시로서, 단계(804)에서 NVM 인터페이스는 2개의 패리티 페이지들 및 따라서 코드워드가 검색되었을 때 온 더 플라이로 계산된 수학식들 (3) 및 (4)이 존재하였다고 가정하였을 수 있다. 그러나, 단계(812)에서, NVM 인터페이스는 코드워드와 연관된 하나의 실제 패리티 페이지만이 존재하였다고 결정하였을 수 있다. 따라서, 단계(814)에서, 수학식 4는 거짓 수학식으로서 폐기될 수 있다.
단계(816)에서, 프로세스(800)는 코드워드가 교정가능한지를 결정할 수 있다. 예를 들어, 단계(814)에서 폐기되지 않은 수학식들의 수(예를 들어, 또는 단계(812)에서 결정된 실제 패리티 페이지들의 수)가 정정 불가능 페이지들의 수와 같거나 크면, 코드워드는 교정가능할 수 있다. 코드워드가 교정가능한 것에 응답하여, 코드워드는 그 다음에 단계(818)에서 교정될 수 있고, 프로세스는 단계(820)에서 종료될 수 있다. 예를 들어, 단계(814)에서 폐기되지 않은 "m" 수학식들 중 하나 이상을 이용하여 정정 불가능 페이지들의 올바른 값들을 구할 수 있다. 그러나, 코드워드가 교정가능하지 않을 때, 코드워드는 예를 들어, 정확하지 않은 데이터를 갖는 것으로서 단계(822)에서 폐기될 수 있다.
전술한 프로세스들은 단지 예시라는 것을 이해해야 한다. 발명의 범위에서 벗어나지 않고, 단계들 중 임의의 것이 제거, 수정, 또는 결합될 수 있고, 임의의 부가적인 단계들이 추가될 수 있다.
설명된 발명의 실시예들은 제한이 아닌 예시의 목적으로 제시된다.

Claims (10)

  1. 전자 장치로서,
    복수의 부분을 포함하는 비휘발성 메모리(non-volatile memory; "NVM"); 및
    상기 NVM에 대한 액세스를 제어하기 위한 프로세서
    를 포함하며, 상기 프로세서는
    각 부분에 메타데이터 필드를 마크하여 상기 부분이 패리티 부분 및 사용자 데이터 부분 중 하나인지 여부를 나타내고;
    상기 부분에 대한 메타데이터 필드에 기초하여 매핑 어드레스 테이블에 상기 부분을 선택적으로 포함하도록
    구성되는, 전자 장치.
  2. 제1항에 있어서,
    에러 정정 코드 모듈을 더 포함하고, 상기 에러 정정 코드 모듈은:
    사용자 데이터에 인코딩 기법을 적용하여 패리티 데이터를 생성하도록
    구성되며;
    상기 프로세서는 또한:
    적어도 하나의 패리티 부분에 상기 패리티 데이터를 저장하도록
    구성되는, 전자 장치.
  3. 제1항에 있어서,
    상기 복수의 부분의 서브세트는 패리티 부분들이며;
    상기 복수의 부분은 복수의 코드워드로 그룹화되고, 각각의 코드워드는 상기 복수의 부분의 적어도 2개의 연속 부분들을 포함하며, 적어도 하나의 패리티 부분을 포함하고, 상기 복수의 코드워드의 적어도 제1 서브세트의 각각의 코드워드는 적어도 2개의 패리티 부분들을 포함하는, 전자 장치.
  4. 제3항에 있어서,
    상기 프로세서는 또한:
    특정 코드워드의 각각의 부분을 검색하고;
    상기 검색 동안, 상기 특정 코드워드의 정정 불가능 부분을 식별하고;
    상기 정정 불가능 부분을 식별하는 것에 응답하여, 상기 정정 불가능 부분의 이전의 상기 특정 코드워드 내의 각각의 부분의 데이터를 버퍼링하기 위해 좌로 스캔하고,
    식별된 정정 불가능 부분이 없는 것에 응답하여, 상기 특정 코드워드의 끝을 결정하기 위해 우로 스캔하며;
    상기 정정 불가능 부분의 데이터를 버퍼링하며;
    상기 정정 불가능 부분 다음의 각각의 부분이 검색될 때 상기 정정 불가능 부분 다음의 상기 특정 코드워드 내의 각각의 부분의 데이터를 버퍼링하도록
    구성되는, 전자 장치.
  5. 제4항에 있어서,
    상기 프로세서는 또한:
    패리티 마커를 대면할 때까지 좌로 스캔하는 것에 의해 상기 특정 코드워드의 시작을 결정하도록 구성되는, 전자 장치.
  6. 제4항에 있어서,
    상기 프로세서는 또한:
    패리티 마커에 이어서 비-패리티 마커를 대면할 때까지 우로 스캔하는 것에 의해 상기 특정 코드워드의 끝을 결정하도록 구성되는, 전자 장치.
  7. 제4항에 있어서,
    상기 프로세서는 또한:
    상기 특정 코드워드에 포함되는 적어도 하나의 패리티 부분 및 상기 버퍼링된 데이터에 기초하여 상기 정정 불가능 부분을 교정하도록 구성되는, 전자 장치.
  8. 제1항에 있어서,
    상기 복수의 부분은 복수의 코드워드로 그룹화되고,
    상기 프로세서는 또한:
    특정 코드워드가 제1 수의 가정된 패리티 부분들을 포함한다는 예비 가정에 기초하여 적어도 2개의 패리티 수학식을 생성하고;
    상기 특정 코드워드를 검색하며;
    각각의 부분이 검색될 때 상기 특정 코드워드의 각각의 부분의 데이터로 상기 적어도 2개의 패리티 수학식의 계산들을 갱신하도록
    구성되는, 전자 장치.
  9. 제8항에 있어서,
    상기 프로세서는 또한:
    상기 특정 코드워드의 끝을 검색하면, 상기 특정 코드워드와 연관된 제2 수의 실제 패리티 부분들을, 각각의 실제 패리티 부분의 메타데이터 태그를 판독하는 것에 의해 결정하고;
    상기 제2 수가 상기 제1 수보다 작다고 결정하며;
    상기 적어도 2개의 패리티 수학식의 갱신된 계산들 중 제2 수의 갱신된 계산들 외에는 전부 폐기하도록
    구성되는, 전자 장치.
  10. 제8항에 있어서,
    상기 프로세서는 또한:
    상기 특정 코드워드의 끝을 검색하면, 상기 특정 코드워드와 연관된 제2 수의 실제 패리티 부분들을, 각각의 실제 패리티 부분의 메타데이터 태그를 판독하는 것에 의해 결정하고;
    상기 제2 수가 상기 제1 수와 동일하다고 결정하며;
    상기 적어도 2개의 패리티 수학식의 갱신된 계산들을 이용하여 상기 특정 코드워드의 적어도 하나의 정정 불가능 부분을 교정하도록
    구성되는, 전자 장치.
KR1020127027758A 2010-03-23 2011-01-31 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출 KR101730510B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/729,564 US8726126B2 (en) 2010-03-23 2010-03-23 Non-regular parity distribution detection via metadata tag
US12/729,564 2010-03-23
PCT/US2011/023197 WO2011119255A2 (en) 2010-03-23 2011-01-31 Non-regular parity distribution detection via metadata tag

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020127027498A Division KR101417561B1 (ko) 2010-03-23 2011-01-31 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출

Publications (2)

Publication Number Publication Date
KR20120134144A KR20120134144A (ko) 2012-12-11
KR101730510B1 true KR101730510B1 (ko) 2017-04-26

Family

ID=44509772

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127027758A KR101730510B1 (ko) 2010-03-23 2011-01-31 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출
KR1020127027498A KR101417561B1 (ko) 2010-03-23 2011-01-31 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020127027498A KR101417561B1 (ko) 2010-03-23 2011-01-31 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출

Country Status (9)

Country Link
US (2) US8726126B2 (ko)
EP (1) EP2550745B1 (ko)
JP (1) JP5675954B2 (ko)
KR (2) KR101730510B1 (ko)
CN (1) CN103038830B (ko)
AU (1) AU2011229938B2 (ko)
BR (1) BR112012023932A2 (ko)
MX (1) MX2012010944A (ko)
WO (1) WO2011119255A2 (ko)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
KR20120029239A (ko) * 2010-09-16 2012-03-26 삼성전자주식회사 Pram을 이용하는 데이터 기록 시스템 및 그 방법
KR101732030B1 (ko) * 2010-12-22 2017-05-04 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
TWI444825B (zh) * 2011-03-29 2014-07-11 Phison Electronics Corp 記憶體儲存裝置、記憶體控制器與資料寫入方法
US20120297256A1 (en) * 2011-05-20 2012-11-22 Qualcomm Incorporated Large Ram Cache
JP5364807B2 (ja) * 2011-06-08 2013-12-11 パナソニック株式会社 メモリコントローラ及び不揮発性記憶装置
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US8756458B2 (en) * 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
WO2013089715A1 (en) * 2011-12-14 2013-06-20 Intel Corporation Storage of codeword portions
US9239781B2 (en) * 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9158675B2 (en) 2012-03-16 2015-10-13 Marvell World Trade Ltd. Architecture for storage of data on NAND flash memory
US9146856B2 (en) 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
JP5874525B2 (ja) * 2012-05-11 2016-03-02 ソニー株式会社 制御装置、記憶装置、記憶制御方法
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
EP2908247A4 (en) * 2012-11-23 2015-11-11 Huawei Tech Co Ltd METHOD AND DEVICE FOR DATA RECOVERY
US9021339B2 (en) * 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9671962B2 (en) * 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9146808B1 (en) * 2013-01-24 2015-09-29 Emulex Corporation Soft error protection for content addressable memory
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9218890B2 (en) * 2013-06-03 2015-12-22 Sandisk Technologies Inc. Adaptive operation of three dimensional memory
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9880926B1 (en) * 2013-08-20 2018-01-30 Seagate Technology Llc Log structured reserved zone for a data storage device
CN104424107B (zh) * 2013-09-03 2020-02-04 北京谊安医疗系统股份有限公司 麻醉机标校数据的可靠存储方法及装置
US9619324B2 (en) 2013-09-27 2017-04-11 Intel Corporation Error correction in non—volatile memory
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9588882B2 (en) 2013-12-02 2017-03-07 Intel Corporation Non-volatile memory sector rotation
US9612908B2 (en) 2015-02-20 2017-04-04 Qualcomm Incorporated Performing memory data scrubbing operations in processor-based memory in response to periodic memory controller wake-up periods
DE102015205827A1 (de) * 2015-03-31 2016-10-06 Siemens Aktiengesellschaft Verfahren zum Schutz sicherheitsrelevanter Daten in einem Cachespeicher
KR20170004693A (ko) * 2015-07-03 2017-01-11 에스케이하이닉스 주식회사 메모리 장치의 컨트롤러 및 그 동작 방법
US9921909B2 (en) 2015-07-03 2018-03-20 Qualcomm Incorporated Systems and methods for providing error code detection using non-power-of-two flash cell mapping
US9552163B1 (en) 2015-07-03 2017-01-24 Qualcomm Incorporated Systems and methods for providing non-power-of-two flash cell mapping
US10133625B2 (en) * 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data
US9946594B2 (en) 2015-08-19 2018-04-17 International Business Machines Corporation Validation bits and offsets to represent logical pages split between data containers
US9929750B2 (en) 2015-09-08 2018-03-27 Toshiba Memory Corporation Memory system
US10459793B2 (en) 2016-03-17 2019-10-29 Western Digital Technologies, Inc. Data reliability information in a non-volatile memory device
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10289487B2 (en) 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
CN107391296B (zh) 2016-04-27 2020-11-06 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
US9910772B2 (en) * 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10554334B2 (en) * 2017-10-17 2020-02-04 Hewlett Packard Enterprise Development Lp Nominally unguaranteed error-detection codes for sub-data packets
JP7030636B2 (ja) * 2018-07-12 2022-03-07 キオクシア株式会社 メモリシステムおよびその制御方法
US12007886B2 (en) * 2018-09-12 2024-06-11 International Business Machines Corporation Addressing page-correlated read issues using intra-block parity
US10929069B2 (en) 2018-09-12 2021-02-23 International Business Machines Corporation Addressing page-correlated read issues using intra-block parity
US20200127685A1 (en) * 2018-10-19 2020-04-23 Nyquist Semiconductor Limited Systems and methods for a hybrid non-volatile storage system
WO2020107301A1 (zh) * 2018-11-29 2020-06-04 华为技术有限公司 一种编码方法、译码方法以及存储控制器
US10769014B2 (en) * 2018-12-28 2020-09-08 Micron Technology, Inc. Disposable parity
CN110389724B (zh) * 2019-07-23 2023-06-06 深圳忆联信息系统有限公司 基于固态硬盘的parity page识别方法和装置
US11301325B2 (en) * 2020-05-29 2022-04-12 Intel Corporation Memory in integrity performance enhancement systems and methods
CN115443451A (zh) 2021-04-01 2022-12-06 美光科技公司 与由微处理器识别的存储器错误相关的信息的记录和解码
US11726873B2 (en) * 2021-12-20 2023-08-15 Micron Technology, Inc. Handling memory errors identified by microprocessors

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0242595A2 (en) 1986-04-25 1987-10-28 International Business Machines Corporation Error detection using variable field parity checking
JP2005056397A (ja) 2003-07-31 2005-03-03 Hewlett-Packard Development Co Lp 複数のセットの誤り修正コードを有するデータ
US20050091569A1 (en) 2003-10-24 2005-04-28 Hon Hai Precision Industry Co., Ltd. System and method for securely storing data in a memory

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5009A (en) * 1847-03-13 Ratchet-wrench
US6529997B1 (en) * 2000-08-11 2003-03-04 Storage Technology Corporation Apparatus and method for writing and reading data to and from a virtual volume of redundant storage devices
JP4256600B2 (ja) * 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2004152194A (ja) * 2002-10-31 2004-05-27 Ricoh Co Ltd メモリデータ保護方法
JP2004152196A (ja) 2002-10-31 2004-05-27 Lexer Research Inc 機能オブジェクト表象装置
US7139863B1 (en) * 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7328305B2 (en) 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US7549089B1 (en) * 2004-09-27 2009-06-16 Network Appliance, Inc. Lost write detection in a storage redundancy layer of a storage server
US7366825B2 (en) * 2005-04-26 2008-04-29 Microsoft Corporation NAND flash memory management
US7389397B2 (en) * 2005-06-01 2008-06-17 Sandisk Il Ltd Method of storing control information in a large-page flash memory device
US7533330B2 (en) * 2005-06-27 2009-05-12 Seagate Technology Llc Redundancy for storage data structures
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US20070268905A1 (en) * 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
JP2008077783A (ja) * 2006-09-22 2008-04-03 Fujitsu Ltd 記憶データ処理装置、記憶装置、記憶データ処理プログラム
US7694091B2 (en) * 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
US20080288712A1 (en) * 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US8332574B2 (en) * 2007-04-30 2012-12-11 Sandisk Il Ltd. Method for efficient storage of metadata in flash memory
KR100852193B1 (ko) 2007-05-02 2008-08-13 삼성전자주식회사 오류 제어 코드 장치 및 그 방법
KR101433859B1 (ko) * 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
US7761740B2 (en) * 2007-12-13 2010-07-20 Spansion Llc Power safe translation table operation in flash memory
US8185685B2 (en) * 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
US8762620B2 (en) * 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US7941692B2 (en) * 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US9542431B2 (en) * 2008-10-24 2017-01-10 Microsoft Technology Licensing, Llc Cyclic commit transaction protocol
US9141475B2 (en) * 2008-11-23 2015-09-22 Sandisk Technologies Methods for tag-grouping of blocks in storage devices
KR101014040B1 (ko) * 2009-03-19 2011-02-14 (주)인디링스 디램 버퍼 관리 장치 및 방법
US8307261B2 (en) * 2009-05-04 2012-11-06 National Tsing Hua University Non-volatile memory management method
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
US8281065B2 (en) * 2009-09-01 2012-10-02 Apple Inc. Systems and methods for determining the status of memory locations in a non-volatile memory
US9063886B2 (en) * 2009-09-18 2015-06-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
US8316175B2 (en) * 2009-11-03 2012-11-20 Inphi Corporation High throughput flash memory system
JP5525605B2 (ja) * 2009-11-04 2014-06-18 株式会社日立製作所 フラッシュメモリモジュール
US8364886B2 (en) * 2010-01-26 2013-01-29 Seagate Technology Llc Verifying whether metadata identifies a most current version of stored data in a memory space
KR101678868B1 (ko) * 2010-02-11 2016-11-23 삼성전자주식회사 플래시 주소 변환 장치 및 그 방법
US8478796B2 (en) 2010-03-23 2013-07-02 Apple Inc. Uncorrectable error handling schemes for non-volatile memories
US8812816B2 (en) 2010-03-23 2014-08-19 Apple Inc. Garbage collection schemes for index block

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0242595A2 (en) 1986-04-25 1987-10-28 International Business Machines Corporation Error detection using variable field parity checking
JP2005056397A (ja) 2003-07-31 2005-03-03 Hewlett-Packard Development Co Lp 複数のセットの誤り修正コードを有するデータ
US20050091569A1 (en) 2003-10-24 2005-04-28 Hon Hai Precision Industry Co., Ltd. System and method for securely storing data in a memory

Also Published As

Publication number Publication date
EP2550745A2 (en) 2013-01-30
AU2011229938B2 (en) 2014-07-31
EP2550745B1 (en) 2014-08-27
JP5675954B2 (ja) 2015-02-25
JP2013522792A (ja) 2013-06-13
KR101417561B1 (ko) 2014-07-08
US8726126B2 (en) 2014-05-13
BR112012023932A2 (pt) 2016-08-02
WO2011119255A3 (en) 2012-10-11
CN103038830A (zh) 2013-04-10
KR20120139830A (ko) 2012-12-27
CN103038830B (zh) 2016-03-09
AU2011229938A1 (en) 2012-11-08
US20140143634A1 (en) 2014-05-22
MX2012010944A (es) 2013-03-05
KR20120134144A (ko) 2012-12-11
US9274887B2 (en) 2016-03-01
WO2011119255A2 (en) 2011-09-29
US20110239088A1 (en) 2011-09-29

Similar Documents

Publication Publication Date Title
KR101730510B1 (ko) 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출
US8732392B2 (en) Systems and methods for determining the status of memory locations in a non-volatile memory
US8397107B1 (en) Data storage device employing data path protection using both LBA and PBA
US7765426B2 (en) Emerging bad block detection
KR101576102B1 (ko) 플래시 메모리의 블록으로부터 데이터를 판독하는 방법 및 관련 메모리 장치
US8892981B2 (en) Data recovery using outer codewords stored in volatile memory
US8479062B2 (en) Program disturb error logging and correction for flash memory
US20110209028A1 (en) Codeword remapping schemes for non-volatile memories
US20130254463A1 (en) Memory system
US20150046772A1 (en) Method and device for error correcting code (ecc) error handling
US20140115416A1 (en) Non-volatile memory error correction
US9465538B2 (en) Flash memory control chip and data storage device and flash memory control method
US9754682B2 (en) Implementing enhanced performance with read before write to phase change memory
JP2010079856A (ja) 記憶装置およびメモリ制御方法
TWI550627B (zh) 儲存裝置及其操作方法
TWI777087B (zh) 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
KR20220081610A (ko) 컨트롤러 및 상기 컨트롤러를 포함하는 메모리 시스템
JP2007179480A (ja) メモリコントローラおよびフラッシュメモリシステム

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant