KR20130101149A - 추가 에러 정정 코딩 데이터를 사용한 데이터 복구 - Google Patents

추가 에러 정정 코딩 데이터를 사용한 데이터 복구 Download PDF

Info

Publication number
KR20130101149A
KR20130101149A KR1020137021030A KR20137021030A KR20130101149A KR 20130101149 A KR20130101149 A KR 20130101149A KR 1020137021030 A KR1020137021030 A KR 1020137021030A KR 20137021030 A KR20137021030 A KR 20137021030A KR 20130101149 A KR20130101149 A KR 20130101149A
Authority
KR
South Korea
Prior art keywords
data
ecc
block
additional
memory
Prior art date
Application number
KR1020137021030A
Other languages
English (en)
Other versions
KR101394596B1 (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 KR20130101149A publication Critical patent/KR20130101149A/ko
Application granted granted Critical
Publication of KR101394596B1 publication Critical patent/KR101394596B1/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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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

Landscapes

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

Abstract

방법은 데이터 저장 디바이스의 제어기에서, 데이터 블록 및 상기 데이터 블록에 대한 메인 에러-정정 코팅(ECC) 데이터를 포함하는 데이터를 수신한다. 상기 데이터 블록은 데이터의 제 1 서브-블록 및 데이터의 제 2 서브-블록을 포함한다. 방법은 상기 메인 ECC 데이터를 사용하여 상기 데이터 블록을 처리하는 ECC 오퍼레이션을 시작하는 단계를 포함한다. 상기 데이터 블록 내의 정정할 수 없는 에러들을 나타내는 상기 ECC 오퍼레이션에 응답하여, 상기 데이터 블록 외부에 있는 제 1 추가 ECC 데이터가 검색되며, 제 2 ECC 오퍼레이션은 상기 제 1 추가 ECC 데이터를 사용하여 상기 데이터의 제 1 서브-블록을 처리하기 위해 시작된다.

Description

추가 에러 정정 코딩 데이터를 사용한 데이터 복구{DATA RECOVERY USING ADDITIONAL ERROR CORRECTION CODING DATA}
본 발명은 일반적으로 데이터 복구와 관련이 있다.
메모리 디바이스들에 데이터를 저장하는 성능은 기술의 발전과 함께 지속적으로 향상한다. 예를 들어, 플래시 메모리는 메모리 셀 당 다수의 데이터 비트들을 저장함으로써 향상될 수 있는 저장 밀도(storage density)로 데이터의 비-휘발성 저장을 할 수 있다. 그러나, 메모리에 기록된 데이터가 열 잡음, 우주 광선(cosmic rays), 또는 메모리의 물리적 컴포넌트들에 대한 손상과 같은 메모리의 물리적 조건들로 인하여 의도되지 않게 변경될 수 있다. 에러 정정 코딩(ECC) 스킴(error correction coding scheme)들은 종종 데이터에서 발생할 수 있는 에러들을 정정하는 데 사용된다. 이러한 ECC 스킴들은 통상적으로 리던던트 정보(redundant information)를 사용하여 데이터를 인코딩하는 것을 포함하는바, 이 정보는 에러들로부터 강력한 복구를 제공하지만 또한 제조 비용을 증가시키고, 메모리 디바이스의 데이터 저장 밀도를 줄일 수 있다.
메모리 디바이스의 동작 조건들의 예상 범위에 대한 에러 정정 성능을 제공하도록 선택된 ECC 스킴은 제조 동안 발생되는 조건들에 의해 생성된 에러들을 정정하기에 불충분할 수 있다. 예를 들어, 콘텐츠는 인쇄 회로 기판(PCB)에 메모리 디바이스를 부착하기 전에 메모리 디바이스에 사전-로딩(pre-load)될 수 있다. PCB에 메모리 디바이스를 부착하는 것은 폴리싱(polishing), 리플로우(reflow), 또는 다른 공정들을 포함할 수 있다. 이러한 공정들 중에 사전-로딩된 데이터에서 발생하는 에러들은 ECC 스킴의 에러 정정 성능을 초과할 수 있다. 하나 이상의 다른 공정들의 결과로 인해 에러들이 사전-로딩된 데이터에서 발생할 수 있다. 예를 들어, 일부 메모리 디바이스들이 데이터가 상기 디바이스에 저장된 시간이 지남에 따라 저장된 데이터의 저하를 경험할 수 있다.
데이터 블록들 외부에 있고 및 상기 데이터 블록들의 서브-블록들에 해당하는 추가 ECC 데이터를 제공함으로써, 향상된 에러 정정이 데이터 블록들에 제공된다. 데이터 블록 및 상기 데이터 블록에 대한 메인 패리티(main parity)가 상기 메인 패리티를 사용하여 정정하기에는 너무 많은 에러들을 갖는 경우, 하나 이상의 서브-블록들이 추가 ECC 데이터를 사용하여 개별적으로 정정될 수 있다. 추가 ECC 데이터는 메인 패리티를 사용하여 정정 가능한 것보다 단일 서브-블록들 내의 더 많은 수의 에러들의 정정이 가능하도록 상기 단일 서브-블록에 전용의 추가 패리티를 포함할 수 있다.
추가 ECC 데이터는 폴리싱 또는 리플로우 공정 중에 손상될 수 있는 사전-로딩된 콘텐츠의 추가적인 보호가 가능하도록 데이터 저장 디바이스에 제공될 수 있다. 데이터 정정 절차는 필요에 따라 추가 ECC 데이터를 사용하여 손상된 사전-로딩된 콘텐츠를 복구하기 위해 수행될 수 있다. 상기 사전-로딩된 콘텐츠를 복구한 후, 상기 추가 ECC 데이터를 저장하는 메모리 위치(memory location)들이 상기 추가 ECC 데이터를 유지하거나 또는 상기 메모리 내 사용 가능한 공간을 증가시키기 위해 선택에 따라 프리(free) 상태로 될 수 있다.
도 1은 추가 에러 정정 코딩(ECC) 데이터를 사용하여 데이터 복구를 제공하는 시스템의 특정 실시 예의 블록도이다;
도 2는 도 1의 메모리(112)에 저장된 사전-로딩된 콘텐츠 및 추가 ECC 데이터의 제 1 예시적 실시 예의 일반적인 다이어그램이다;
도 3은 도 1의 메모리(112)에 저장된 사전-로딩된 데이터 및 추가 ECC 데이터의 제 2 예시적 실시 예에 대한 일반적인 다이어그램이다;
도 4는 추가 에러 정정 코딩(ECC) 데이터를 사용하여 데이터 복구를 제공하는 방법의 제 1 예시적 실시 예의 흐름도이다;
도 5는 추가 에러 정정 코딩(ECC) 데이터를 사용하여 데이터 복구를 제공하는 방법의 제 2 예시적 실시 예의 흐름도이다; 및
도 6은 추가 에러 정정 코딩(ECC) 데이터를 사용하여 데이터 복구를 제공하는 방법의 제 3 예시적 실시 예의 흐름도이다.
도 1을 참조하면, 데이터의 복구가 가능하도록 추가 패리티를 저장하는 시스템이 도시되며 전반적으로 도면부호 100으로 나타냈다. 시스템(100)은 호스트 디바이스(104)에 동작적으로 결합될 수 있는 데이터 저장 디바이스(102)를 포함한다. 데이터 저장 디바이스(102)는 메인 ECC 인코딩 스킴의 에러 정정 성능을 넘어서는 손상된 데이터의 정정이 가능하도록 추가 패리티를 저장하는 메모리(112)를 포함한다.
호스트 디바이스(104)는 데이터 저장 디바이스(102)에 저장될 데이터를 제공하거나 또는 데이터 저장 디바이스(102)로부터 판독할 데이터를 요청하도록 구성될 수 있다. 예를 들어, 호스트 디바이스(104)는 이동 전화, 음악 또는 비디오 플레이어, 게임 콘솔, 전자 책 리더, 개인용 디지털 보조(PDA), 랩톱 컴퓨터 또는 노트북 컴퓨터와 같은 컴퓨터, 다른 전자 디바이스, 또는 이들의 임의의 조합을 포함할 수 있다.
데이터 저장 장치(102)는 메모리(112)에 결합된 제어기(110)를 포함한다. 설명을 위해서, 데이터 저장 디바이스(102)는 보안 디지털 SD® 카드, microSD® 카드, miniSD.TM 카드 (델어웨어 윌밍턴 소재, SD-3C LLC의 상표), MultiMediaCard.TM(MMC.TM) 카드 (버지니아 알링턴 소재, JEDEC 솔리드 스테이트 기술 협회의 상표), 또는 CompactFlash®(CF) 카드 (캘리포니아 밀피타스 소재, 샌 디스크 주식 회사의 상표)와 같은 메모리 카드일 수 있다. 또 다른 예로서, 데이터 저장 장치(102)는 예시적인 예들로, eMMC®(버지니아 알링턴 소재, JEDEC 솔리드 스테이트 기술 협회의 상표) 및 eSD와 같은 임베디드 메모리로 호스트 디바이스(104)에 결합되도록 구성될 수 있다. 또 다른 예시적 예로서, 데이터 저장 디바이스(102)는 데이터 저장을 위한 하나 이상의 회전 플래터들(rotating platters)을 포함하는 하드 디스크 드라이브를 포함할 수 있다.
메모리(112)는 플래시 메모리와 같은 비-휘발성 메모리 디바이스를 포함할 수 있다. 데이터 저장 디바이스(102)는 플래시 메모리 카드, 범용 직렬 버스(USB) 플래시 드라이브, 솔리드 스테이트 드라이브(SSD) 및 임베디드 플래시 메모리 중 하나일 수 있다. 또 다른 예로서, 메모리(112)는 3-차원(3D) 메모리일 수 있다. 데이터 저장 디바이스(102)는 임베디드 메모리로 호스트 디바이스(104)에 결합되도록 구성될 수 있다. 또한, 데이터 저장 디바이스(102)는 메모리 카드 또는 USB 플래시 드라이브(UFD)와 같은 호스트 디바이스(104)에 착탈식으로(removably) 결합되도록 구성될 수 있다. 일부 구현들에서는, 데이터 저장 디바이스(102)는 하드 드라이브 또는 다른 유형의 저장 디바이스일 수 있다.
제어기(110)는 에러 정정 코딩(ECC) 엔진(114)을 포함한다. ECC 엔진(114)은 사용자 데이터 및 패리티 비트들을 포함할 수 있는 코드 데이터를 수신하도록, 및 메모리(112)에 저장된 데이터에 손상이 발생될 수 있는 리플로우 이벤트와 같은 손상 이벤트 이후에 인코딩된 데이터를 디코딩하도록 구성된다.
메모리(112)는 사전-로딩된 콘텐츠 영역(160) 및 추가 패리티 영역(162)을 포함할 수 있다. 사전-로딩된 콘텐츠는 메모리(112) 또는 데이터 저장 디바이스(102)의 제조자에 의해 메모리(112)에 저장된 데이터를 포함할 수 있다. 예를 들어, 사전-로딩된 콘텐츠는 메모리(112)가 인쇄 회로 기판(PCB)에 부착되기 전에 메모리(112)에 저장될 수 있다. PCB에 메모리(112)의 부착은 솔더(solder), 적외선(IR), 또는 메모리(112)를 상온(elevated temperature)에 노출시킬 수 있는 다른 리플로우 유형과 같은 리플로우 이벤트를 포함할 수 있다. 그 결과로, 메모리(112)에 저장된 사전-로딩된 콘텐츠는 정상 동작 중에 통상적으로 경험하는 에러율보다 높은 에러율을 경험할 수 있다.
ECC 페이지(120)는 콘텐츠 저장소의 대표 단위(representative unit)로서 예시된다. 대표 ECC 페이지(120)는 데이터 블록(122) 및 메인 ECC 데이터(124)를 포함한다. 예를 들어, 데이터 블록(122)이 메모리(112)에 저장된 데이터를 포함할 수 있으며, 메인 ECC 데이터(124)는 ECC 페이지(120)를 형성하는 에러 정정 코딩을 사용하여 생성된 패리티 비트들을 포함할 수 있다. 메인 ECC 데이터(124)의 패리티 비트는 ECC 페이지(120)에서 발생하는 하나 이상의 에러들의 검출 및 정정이 가능하도록 ECC 엔진(114)에 의해 사용될 수 있다.
추가 패리티 영역(162)은 사전-로딩된 콘텐츠 영역(160)에 있는 데이터와 같은 메모리(112)에 저장된 데이터에 해당하는 추가 패리티 비트들을 포함할 수 있다. 예시된 대로, 추가 패리티 영역(162)은 제 1 추가 ECC 데이터(130), 제 2 추가 ECC 데이터(132) 및 제 3 추가 ECC 데이터(134)를 포함한다. 각각의 추가 ECC 데이터(130-134)는 사전-로딩된 콘텐츠 영역(160) 내의 데이터 블록의 부분에 해당될 수 있다. 예를 들어, 제 1 추가 ECC 데이터(130)는 데이터 블록(122)의 제 1 서브-블록(126)에 대한 리던던시(redundancy)를 제공하는 제 1 추가 패리티(AP) 비트들을 포함할 수 있다.
설명을 위해서, 제 1 추가 ECC 데이터(130)는 오직 코드 워드(code word)를 생성하는 제 1 서브-블록(126)(즉, 제 2 서브-블록(128)을 제외)을 인코딩함으로써 생성될 수 있다. 상기 생성된 코드 워드에 포함된 패리티는 제 1 추가 ECC 데이터(130)로서 저장될 수 있으며, 제 1 서브-블록(126)과 조합되어 ECC 엔진(114)에 제공될 때 검출 및 에러 정정을 가능하게 할 수 있다. 마찬가지로, 제 2 추가 ECC 데이터(132)는 데이터 블록(122) 내 다수의 서브-블록들 중 다른 단일 서브-블록 내의 에러들을 정정하기 위해 ECC 엔진(114)에 의해 사용될 수 있다. 예를 들어, 제 2 추가 ECC 데이터(132)는 제 2 서브-블록(128)에 대한 에러 정정을 수행하기 위해 ECC 엔진(114)에 의해 사용될 수 있다.
제 1 추가 ECC 데이터(130)와 같은 추가 ECC 데이터가 전체 데이터 블록에 대해서 보다는 단일 서브-블록에 대한 에러 복구를 제공할 수 있기 때문에, 서브-블록 내의 에러들을 정정하는 에러 정정 성능이 메인 ECC 데이터(124)의 에러 정정 성능과 비교하여 향상될 수 있다. 설명을 위해서, 메인 ECC 데이터(124)를 사용하는 에러 정정 성능이, 조합된 제 1 서브-블록(126) 및 제 2 서브-블록(128)에서 발생하는 에러들의 수에 의해 초과될 수 있으나, 반면 제 1 추가 ECC 데이터(130)를 사용하는(예, 추가 패리티를 사용하는) 에러 정정 성능은 단일로 제 1 서브-블록(126)에 적용될 때 초과되지 않을 수 있다.
제어기(110)는 메인 ECC 데이터(124)와 같은 데이터 블록에 대한 메인 ECC 데이터를 사용하여, 데이터 블록(122)과 같은 데이터 블록을 처리(process)하는 ECC 엔진(114)에서 제 1 ECC 오퍼레이션(ECC operation)(150)을 시작하도록 구성될 수 있다. 데이터의 블록들을 개방하여 도 1에 예시된, 각각의 서브-블록들(126, 128) 및 메인 ECC 데이터(124)는 에러들을 포함할 수 있다. 디코딩 실패 표시(156)로서 예시된, 데이터 블록(122) 내의 정정할 수 없는 에러들을 나타내는 제 1 ECC 오퍼레이션(150)에 응답하여, 제어기(110)는 데이터 블록(122) 외부에 있는 제 1 추가 ECC 데이터를 메모리(112)로부터 검색하도록 구성될 수 있다. 예를 들어, 제어기(110)는 메모리(112)의 추가 패리티 영역(162)으로부터 제 1 추가 ECC 데이터(130)를 검색할 수 있다.
제어기(110)는 제 2 ECC 오퍼레이션(152)에서 제 1 추가 ECC 데이터(130)를 사용하여 데이터 블록(122)의 제 1 서브-블록(126)을 처리하도록 구성될 수 있다. 예시된 대로, 제 2 ECC 오퍼레이션(152)은 결과적으로 제 1 서브-블록(126)에서 발생한 에러들의 정정을 발생시키며, 결과적으로 제 1 서브-블록(127)의 에러-정정된 버전(error corrected version)을 발생시킬 수 있다.
상기 에러-정정된 제 1 서브-블록(127) 생성하도록 제 1 서브-블록(126)을 성공적으로 디코딩한 이후, 제어기(110)는 ECC 엔진(114)에서 제 3 ECC 오퍼레이션(154)을 시작하도록 구성될 수 있다. 제 3 ECC 오퍼레이션(154)은 메모리(112)로부터 처음에 검색된 제 2 서브-블록(128) 및 메인 ECC 데이터(124)와 함께, 상기 에러-정정된 제 1 서브-블록(127)을 사용하여 수행될 수 있다. 데이터의 일부가 에러-정정이 되었기 때문에, ECC 페이지 내 에러들의 총 개수는 감소될 수 있으며, 메인 ECC 데이터(124)를 사용하는 ECC 엔진(114)의 에러 정정 성능 내에 들어갈 수 있다. 그 결과로, 제 3 ECC 오퍼레이션(154)은 제 1 에러-정정된 서브-블록(127)을 포함하는 에러-정정된 데이터 블록 및 에러-정정된 제 2 서브-블록(129)을 생성할 수 있다.
도 1이 (즉, 제 2 ECC 오퍼레이션(152)에서) 추가 패리티를 사용하여 단일 ECC 오퍼레이션을 수행하는 것을 예시하지만, 제어기(110)는 다수의 이차 ECC 오퍼레이션들을 수행하도록 구성될 수 있으며, 각각의 이차 ECC 오퍼레이션들은 다른 추가 패리티 블록들을 사용하여 데이터 블록(122)의 다른 서브-블록들을 디코딩하도록 구성된다. 설명을 위해서, 제 2 추가 ECC 데이터(132)가 제 2 서브-블록(128)에 해당하는 경우, 제 2 ECC 오퍼레이션(152)은 제 2 추가 ECC 데이터(132)를 사용하여 제 2 서브-블록(128)을 정정하도록 다른 ECC 오퍼레이션이 뒤따라 수행될 수 있다. 상기 서브-블록들의 순차적 처리가 ECC 페이지(120)의 모든 서브-블록들이 추가 ECC 데이터를 사용하여 개별적으로 처리될 때까지 계속될 수 있다. 상기 서브-블록들의 처리 이후에, 메인 ECC 데이터(124)를 사용하는 제 3 ECC 오퍼레이션(154)은 모든 에러들이 개별 서브-블록들에서 검출 및 정정될 수 있기 때문에 바이패스(bypass)될 수 있다.
또 다른 구현들에서, 제 3 ECC 오퍼레이션(154)이 수행되고, 제 2 서브-블록(128) 및 나머지 ECC 데이터(124)가 메인 ECC 데이터(124)를 사용하는 ECC 엔진(114)의 에러 정정 성능을 초과하는 에러들의 수를 계속해서 갖는 것으로 결정된 이후에, 추가 패리티를 사용하는 하나 이상의 추가 ECC 오퍼레이션들이 수행될 수 있다. 예를 들어, 제 3 ECC 오퍼레이션(154) 동안 데이터 블록(122) 내에 정정할 수 없는 에러들이 있음을 나타내는 표시를 수신한 후, 제 4 ECC 오퍼레이션이 제 2 추가 ECC 데이터(132)를 사용하여 제 2 서브-블록(128)을 디코딩하기 위해 제어기(110)에 의해 시작될 수 있다.
도 1이 사전-로딩된 콘텐츠 영역(160) 내 단일의 대표 ECC 페이지(120)를 예시하지만, 사전-로딩된 콘텐츠의 다수의 ECC 페이지들이 메모리(112)에 포함될 수 있음을 이해해야 한다. 또한, 추가 패리티 영역(162)이 대표 추가 ECC 데이터(130-134)를 포함하는 것으로 예시되지만, 충분한 양의 추가 ECC 데이터가 사전-로딩된 콘텐츠에 대한 추가 에러 정정 성능을 제공하도록 메모리(112)에 저장될 수 있음을 이해해야 한다. 메모리(112)가 단일 사전-로딩된 콘텐츠 영역(160) 및 추가 패리티 영역(162) 갖는 것으로 예시되지만, 다른 구현들에서 메모리(112)는 다수의 사전-로딩된 콘텐츠 영역들, 다수의 추가 패리티 영역들, 또는 이들의 조합을 포함할 수 있다.
사전-로딩된 콘텐츠 영역(160) 내의 콘텐츠를 포함함으로써, 및 상기 사전-로딩된 콘텐츠에 대한 추가 에러 정정 성능을 제공하기 위해 추가 패리티를 포함함으로써, 메인 ECC 데이터를 사용하는 에러 정정 성능이 초과되더라도 리플로우 공정, 폴리싱 공정 또는 다른 이벤트 중에 발생할 수 있는 데이터 손상이 복구될 수 있다. 따라서, 예로서, 모바일 또는 전자 디바이스 내에서 인쇄 회로 보드에 데이터 저장 디바이스(102)를 마운팅(mount)한 후, 제어기(110)는 사전-로딩된 콘텐츠 영역(160)을 스캔하고, 에러-정정을 수행하고, 및 에러-정정된 데이터를 메모리(112)에 재저장하는 데이터 정정 절차를 시작할 수 있다. 상기 메인 ECC 데이터를 사용하여 복구할 수 없는 것으로 결정된 ECC 페이지들은 제 2 ECC 오퍼레이션(152)과 같은 이차 ECC 오퍼레이션을 시작함으로써 정정될 수 있는바, 여기서 각 서브-블록에 대한 추가 ECC 데이터는 추가 에러 정정 성능 및 상기 에러 발생 이벤트로부터의 데이터 복구를 제공하기 위해 검색된다. 데이터 정정 절차의 예는 도 4를 참조하여 더 자세히 설명된다.
도 2는 사전-로딩된 콘텐츠 및 추가 ECC 데이터를 저장하는 메모리 구조의 제 1 실시 예(200)를 도시한다. 제 1 워드 라인(202)은 도 1의 메모리(112)에 저장된 사전-로딩된 콘텐츠와 같은 사전-로딩된 콘텐츠를 포함할 수 있다. 예를 들어, 제 1 워드 라인(202)은 제 1 대표 ECC 페이지(206)를 포함하는 4개의 ECC 페이지들을 포함할 수 있다. 각 ECC 페이지는 제 1 대표 서브-블록(212) 및 제 2 대표 서브-블록(214)과 같은 하나 이상의 서브-블록들을 포함할 수 있다. 각 ECC 페이지는 또한 제 1 서브-블록(212) 및 제 2 서브-블록(214)의 에러-정정을 위한 패리티 비트들을 포함하는 대표 메인 ECC 데이터(218)와 같은 메인 ECC 데이터를 포함할 수 있다.
제 2 워드 라인(204)은 추가 ECC 데이터를 저장한다. 예시된 대로, 제 2 워드 라인(204)은 대표 제 2 ECC 페이지(208)를 포함하는 다수의 ECC 페이지들을 포함한다. 제 2 워드 라인(204)의 각각의 ECC 페이지들은 제 1 워드 라인(202)의 하나 이상의 서브-블록들에 해당하는 추가 ECC 데이터의 다수의 블록들(예를 들어, 추가 패리티)을 포함한다. 예시된 대로, 제 2 대표 ECC 페이지(208)는 제 1 추가 ECC 데이터(220), 제 2 추가 ECC 데이터(222), 제 3 추가 ECC 데이터(224), 및 제 4 추가 ECC 데이터(226)를 포함한다. 제 2 ECC 페이지(208)는 또한 임의의 추가 ECC 데이터(220-226)에서 발생할 수 있는 에러들에 대한 에러 정정 성능을 제공하는 메인 ECC 데이터(228)를 포함한다.
각각의 추가 ECC 데이터(220-226)는 상기 사전-로딩된 콘텐츠의 서브-블록에 해당한다. 예를 들어, 도 1과 관련하여 예시적이며 설명적인 방식으로, 제 1 워드 라인(202)의 각각의 ECC 페이지들의 제 1 서브-블록은 개별적으로 인코딩될 수 있으며, 그 결과로 인한 추가 패리티는 제 2 ECC 페이지(208)에 저장된다. 제 2 ECC 페이지(208)는 추가 ECC 데이터(220-226)의 4개의 세트들을 포함하며, 따라서 전체 제 1 워드 라인(202)에 대한 추가 ECC 데이터를 제공한다. 이와 같이, 제 2 워드 라인(204)은 사전-로딩된 콘텐츠를 저장하는 4개의 워드 라인들의 전체에 대한 데이터 복구를 위해 추가 ECC 데이터를 제공할 수 있다.
일부 구현들에서, 제 1 워드 라인(202)의 ECC 페이지들 중 하나 이상의 서브-블록들은 해당 추가 패리티를 구비하지 않는다. 예를 들어, 제 2 서브-블록(214)은 추가 ECC 데이터에 의해 보호되지 않을 수 있다. 메인 ECC 데이터(218)가 조합된 서브-블록들(212 및 214)의 에러들을 정정하기에 불충분할 수 있지만, 제 1 서브-블록(212)이 제 2 추가 ECC 데이터(222)를 사용하여 정정된 이후에는, 메인 ECC 데이터(218)가 제 2 서브-블록(214) 내의 에러들을 정정하기에 충분할 수 있다. 다른 구현들에서, 도 3을 참조하여 예시된 대로, ECC 페이지의 모든 서브-블록들이 추가 ECC 데이터를 사용하여 보호될 수 있다.
도 3은 상기 사전-로딩된 콘텐츠 및 상기 사전-로딩된 콘텐츠에 대한 추가 ECC 데이터를 저장하는 메모리 구조의 또 다른 실시 예(300)를 도시한다. 제 1 워드 라인(302)은 제 1 대표 ECC 페이지(306)를 포함하는 다수의 ECC 페이지들 내에 사전-로딩된 콘텐츠를 저장한다. 제 1 ECC 페이지(306)는 4개의 서브-블록들(310-316) 및 메인 ECC 데이터 부분(318)을 포함한다. 제 2 워드 라인(304)은 추가 ECC 데이터를 포함한다.
예시된 대로, 제 2 워드 라인(304)의 각 ECC 페이지는 4개의 서브-블록들을 포함하며, 각 서브-블록은 사전-로딩된 콘텐츠에 해당하는 추가 ECC 데이터를 포함한다. 제 2 워드 라인(304)의 제 1 페이지의 제 1 서브-블록(320)은 제 1 서브-블록(310)에 대한 추가 ECC 데이터를 제공한다. 제 2 워드 라인(304)의 제 2 페이지의 제 1 서브-블록(322)은 제 2 서브-블록(312)에 대한 추가 ECC 데이터를 제공한다. 제 2 워드 라인(304)의 제 3 ECC 페이지의 제 1 서브-블록(324)의 제 3 서브-블록(314)에 대한 추가 ECC 데이터를 제공한다. 제 2 워드 라인(304)의 제 4 ECC 페이지의 제 1 서브-블록(326)은 제 1 ECC 페이지(306)의 제 4 서브-블록(316)에 대한 추가 ECC 데이터를 제공한다.
도 3은 추가 패리티가 사전-로딩된 콘텐츠의 다수의 서브-블록들을 갖는 ECC 페이지들의 개별 서브-블록들을 위해 제공될 수 있음을 예시한다. 도 3은 또한 단일 ECC 페이지의 다수의 서브-블록들에 대한 추가 ECC 데이터가 추가 ECC 데이터의 분리된 개별 ECC 페이지들에 저장될 수 있음을 예시한다. 또한, 사전-로딩된 콘텐츠의 데이터 복구를 보조하는 추가 ECC 데이터를 저장하는 도 2의 제 2 워드 라인(204) 또는 도 3의 제 2 워드 라인(304) 각각이 또한 추가 ECC 데이터로 보호될 수 있음을 이해해야 한다.
예를 들어, 도 2의 제 2 ECC 페이지(208)에서 발생하는 에러들은 메인 패리티(228)를 사용하는 ECC 오퍼레이션을 적용함으로써 정정될 수 있다. 제 2 ECC 페이지(208)에서 발생하는 에러들의 수가 메인 패리티(228)를 사용하는 에러 정정 성능을 초과하는 경우, 추가 ECC 데이터(220-226)를 포함하는 서브-블록 중 하나 이상이 도 1의 제 2 ECC 오퍼레이션(152)과 유사한 방식으로 메모리에 저장된 더 추가된 추가 ECC 패리티를 사용하여 디코딩될 서브-블록으로서 ECC 엔진에 제공될 수 있다. 따라서, 추가 워드 라인들이 추가 패리티의 에러 복구를 가능하게 하는 추가 패리티를 포함하기 위해 제공될 수 있는바, 이는 결국 사전-로딩된 데이터의 에러 복구를 가능하게 한다
도 2의 메인 ECC 데이터(218) 및 제 2 추가 ECC 데이터(222)와 같은 메인 ECC 데이터 및 추가 ECC 데이터는 ECC 데이터의 모든 유형을 포함할 수 있다. 예를 들어, 메인 ECC 데이터(218) 및 제 2 추가 ECC 데이터(222)는 Bose-Chaudhuri-Hocquenghem (BCH) 인코딩, 리드-솔로몬(Reed-Solomon) 인코딩, 저밀도 패리티 체크(LDPC) 인코딩, 또는 다른 유형의 인코딩에 따라 패리티 비트들 또는 다른 리던던트 정보를 포함할 수 있다. 상기 메인 ECC 데이터 및 상기 추가 ECC 데이터는 BCH 스킴과 같은 동일한 인코딩 스킴을 사용할 수 있다. 또한 상기 메인 ECC 데이터 및 상기 추가 ECC 데이터는 다른 인코딩 스킴들에 사용될 수 있다. 상기 메인 ECC 데이터 및 상기 추가 ECC 데이터는 동일한 수의 패리티 비트들을 포함하거나 또는 다른 수의 패리티 비트들을 포함할 수 있다.
콘텐츠 데이터는 섹터들(예, 도 1의 ECC 페이지(120)과 같은 ECC 섹터들)에 저장될 수 있다. 도 2-3에 도시된 대로, 상기 섹터들은 워드 라인 내에 구성될 수 있다. 도 2-3이 NAND 플래시 메모리 어레이와 같은 워드 라인들 내의 콘텐츠 데이터 및 추가 ECC 데이터의 구성(organization)을 예시하고 있지만, 다른 유형들의 메모리 및 다른 메모리 아키텍처들이 사용될 수 있다.
에러 정정은 상기 ECC 스킴에서 사용되는 패리티 바이트의 수의 함수일 수 있다. 예를 들어, 도 2-3의 각 워드 라인은 패리티 및 헤더 데이터에 더하여 8 킬로바이트(KB)의 컨텐츠 데이터를 저장할 수 있다. 각 워드 라인은 4개의 ECC 페이지들을 포함하는 것으로 예시되고, 각 ECC 페이지(예, 제 1 ECC 페이지(206))는 2 KB의 콘텐츠 데이터에 더하여 230 바이트의 메인 ECC 데이터("메인 패리티")를 포함할 수 있다. ECC 페이지의 에러 정정 성능이 메인 패리티 비트들의 수를 증가시킴으로써 향상될 수 있지만, 이러한 증가는 메모리의 비용을 증가시킬 수 있는 (예, NAND 플래시 구현들에서) 메모리 어레이의 크기의 증가를 야기할 수 있다.
추가 패리티는 ECC 페이지의 청크(chunk), 또는 서브-블록에 대해 생성될 수 있다. 상기 추가 패리티는 상기 모든 콘텐츠 데이터에 대해 생성될 수 있다. 도 2에 예시된 바와 같이, 각 ECC 페이지는 2 킬로바이트의 데이터를 감당하는 일차 패리티(메인 패리티)를 포함할 수 있으며, 또한 상기 ECC 페이지의 가장 왼쪽(또는 가장 오른쪽) 절반에 대한 에러 검출 및 정정을 제공하는 추가 패리티(예, 230 바이트)와 관련될 수 있다. 일부 실시 예들에서, 상기 추가 패리티는 도 3에서 예시된 ECC 페이지의 매 쿼터(quarter)마다, 도 1과 관련하여 설명된 상기 ECC 페이지의 양 절반들에, 또는 하나 이상의 다른 구성들에 따라 추가될 수 있다. 추가 패리티의 어느 구성을 사용할 것인지에 대한 결정은 얼마나 많은 스토리지가 추가 패리티들에 사용될 것인지를 기반으로 할 수 있다.
상기 추가 패리티들은 추가 패리티를 저장하기 위해 별도로 설정된 블록들에 저장될 수 있다. 예를 들어, 도 1의 추가 패리티 영역(162)은 추가 패리티 데이터를 저장하는 것에 전용된 메모리 어레이의 하나 이상의 블록들을 포함할 수 있다. 도 2-3에 예시된 바와 같이, 각 블록은 다수의 워드 라인들을 포함할 수 있으며, 각 워드 라인은 하나 이상의 섹터들, 또는 추가 패리티의 ECC 페이지들을 포함한다.
도 4를 참조하면, 데이터 저장 디바이스에 사전-로딩된 콘텐츠를 정정하는 방법의 특정 실시 예가 도시된다. 상기 방법은 단계(402)에서, 데이터 저장 디바이스 제조자가 콘텐츠(490), 추가 패리티(492), 및 추가 데이터를 로케이팅(locating)하는 테이블(494)을 데이터 저장 디바이스에 사전-로딩함으로써 시작하는 것으로 예시된다. 예를 들어, 테이블(494)은 도 1의 제어기(110)와 같은 데이터 저장 디바이스의 제어기로 액세스될 수 있어, 이 제어기가 사전-로딩된 콘텐츠의 특정 ECC 페이지에 대한 추가 패리티를 로케이팅하는 것이 가능하게 된다. 테이블(494)은 메모리 어드레스 또는 해당 추가 ECC 데이터 블록의 로케이션을 포함하는 엔트리를 로케이팅하기 위해 워드 라인 어드레스 및 ECC 페이지 인디케이터(ECC page indicator)에 의해 인덱싱되도록 배치될 수 있다. 데이터 저장 디바이스 제조자는 호스트 제조자에게 사전-로딩된 디바이스(404)를 제공할 수 있다. 예를 들어, 호스트 제조자는 사전-로딩된 콘텐츠를 구비한 내장 데이터 저장 디바이스들을 포함하는 휴대용 전자 디바이스들을 제조할 수 있다.
호스트 제조자는 사전-로딩된 데이터 저장 디바이스(404)를 받을 수 있고, 단계(408)에서 인쇄 회로 기판(406)에 디바이스(404)를 고정할 수 있다. 인쇄 회로 기판(406)에 디바이스(404)를 고정하는 것은 디바이스(404)를 하나 이상의 데이터 손상 이벤트들에 노출시킬 수 있다. 설명을 위해서, 디바이스(404)를 고정하는 것은 디바이스(404)를 폴리싱하는 것, 리플로우, 또는 상기 사전-로딩된 데이터를 손상시킬 수 있는 하나 이상의 다른 이벤트들을 포함할 수 있다. PCB(406)에 디바이스(404)를 고정하는 것과 같이 디바이스(404)를 처리한 후, 호스트 제조자는 단계(410)에서 데이터 정정 절차를 시작할 수 있다.
상기 데이터 정정 절차는 도 1의 제어기(110)와 같은 데이터 저장 디바이스의 제어기에 의해 수행될 수 있다. 상기 데이터 정정 절차는 단계(412)에서 메인 ECC 데이터를 사용하여 사전-로딩된 콘텐츠의 ECC 페이지를 디코딩하는 것을 포함할 수 있다. 예를 들어, 도 1의 제어기(110)는 사전-로딩된 콘텐츠 영역(160)의 각 ECC 페이지를 검사하고 메인 ECC 데이터(124)와 같은 메인 ECC 데이터를 사용하여 각 ECC 페이지를 디코딩하기 위해 메모리(112)를 스캔하는 것을 시작하도록 구성될 수 있다. 단계(414)에서, 상기 ECC 페이지가 상기 메인 ECC 데이터를 사용하여 정정 가능한지 결정될 수 있다. 메인 ECC 데이터가 단계(414)에서 ECC 페이지를 정정하기에 충분하다고 결정한 것에 응답하여, 단계(416)에서, 상기 데이터 정정 절차는 분석될 추가 사전-로딩된 콘텐츠가 남아 있는지를 결정하는 단계를 포함할 수 있다. 분석될 추가 사전-로딩된 콘텐츠가 남아 있는 경우, 단계(418)에서 사전-로딩된 콘텐츠의 다음 ECC 페이지가 검색될 수 있으며, 단계(412)에서, 프로세싱은 메인 ECC 데이터를 사용하여 사전-로딩된 콘텐츠의 다음 ECC 페이지를 디코딩하는 단계로 되돌아 간다.
단계(414)에서, 상기 ECC 페이지가 메인 ECC 데이터를 사용하여 정정이 불가하다고 결정한 것에 응답하여, 단계(420)에서, 프로세싱은 상기 ECC 페이지의 서브-블록에 대한 추가 패리티를 검색하는 단계로 계속할 수 있다. 단계(422)에서, 상기 서브-블록은 도 1의 제 2 ECC 오퍼레이션(152)과 관련하여 예시되고 설명된 것과 같이 개별적으로 디코딩될 수 있다. 단계(424)에서, 상기 ECC 페이지가 에러-정정된 서브-블록과 함께 업데이트될 수 있으며, 상기 에러-정정된 서브-블록을 포함하는 ECC 페이지가 상기 메인 ECC 데이터를 사용하여 디코딩될 수 있는 단계(412)로 되돌아 갈 수 있다. 예를 들어, 상기 디코딩은 도 1의 제 3 ECC 오퍼레이션(154)에 해당할 수 있다.
단계(416)에서, 모든 사전-로딩된 콘텐츠가 분석된 것으로 결정되면, 단계(426)에서, 상기 데이터 정정 절차는 추가 패리티를 포함하는 메모리를 프리 상태로 두는 단계를 포함할 수 있다. 예를 들어, 추가 ECC 데이터를 포함하는 메모리 위치들은 상기 추가 데이터를 포함하는 메모리 위치들이 사용되지 않음을 표시하도록 파일 시스템 테이블을 업데이트함으로써 프리 상태로 될 수 있다. 상기 추가 ECC 데이터가 플래시 메모리 어레이의 하나 이상의 블록들에 저장되는 예시적 구현에서, 상기 추가 ECC 데이터를 포함하는 블록들은 삭제되며, 데이터 저장이 가능한 것으로 표시될 수 있다. 대안적으로, 상기 추가 패리티는 비 프리 상태로 놓여질 수 있으며 상기 사전-로딩된 콘텐츠 내에서의 미래의 에러들의 경우에, 상기 데이터 저장 디바이스에 의한 추가 ECC 정정이 가능하도록 상기 제어기에 의해 메모리에서 유지될 수 있다.
비록 상기 데이터 정정 절차는 데이터 손상 이벤트가 제조 중에 발생한 이후에 사전-로딩된 콘텐츠를 정정하는 것과 관련하여 설명되지만, 다른 구현들에서 상기 데이터 정정 절차는 다른 환경들에서 수행할 수 있다. 예를 들어, 상기 데이터 정정 절차는 높은 에러 정정 성능을 제공하도록 추가 ECC 데이터에 의해 보호된 사용자 데이터를 복구하는 데 사용될 수 있다.
도 4와 관련하여 설명된 상기 데이터 정정 절차는 상기 메모리 디바이스의 제어기 또는 프로세서에 의해 수행될 수 있는 특별한 펌웨어 절차일 수 있다. 상기절차는 워드 라인에서 각 ECC 페이지를 판독하는 것 및 손상된 데이터 콘텐츠가 상기 메인 패리티로 정정될 수 있는지를 결정하는 것이 포함될 수 있다. 상기 데이터 콘텐츠가 상기 메인 패리티로 정정될 수 없는 경우, 상기 ECC 페이지에 대한 상기 추가 패리티가 검색되며, 상기 해당 데이터 필드들(예를 들어, 하나 이상의 추가 패리티에 의해 보호되는 서브-블록)이 상기 검색된 추가 패리티를 사용하여 정정된다. 상기 추가 패리티를 사용하여 하나 이상의 서브-블록들을 정정한 후, 상기 메인 패리티는 나머지 에러들을 정정하는 데 사용될 수 있다.
대안적으로, 에러 검출 및 정정은 콘텐츠 데이터가 전용 데이터 정정 절차 동안이 아닌 상기 메모리로부터 판독될 때 "즉시(on the fly)" 수행될 수 있다. 따라서, 단일 절차에서 모든 사전-로딩된 콘텐츠 데이터에 대한 데이터 정정을 수행하는 것과 반대로, 에러 정정이 점진적으로(incrementally) 수행될 수 있다.
추가 ECC 데이터를 제공하는 것은 메모리의 크기를 증가시키는 것이 없이(즉, 추가 패리티 비트들을 수용하기 위해 도 1의 메인 ECC 데이터(124)의 크기를 증가시키지 않고) 워드 라인들에 대한 패리티의 증가를 가능하게 한다. 상기 추가 ECC 데이터를 제공 및 사용하는 방법은 어떤 ECC 기법(예를 들어, BCH, 리드-솔로몬(Reed-Solomon), 등)을 가지고도 사용될 수 있다. 도 1-4와 함께 설명된 대로 향상된 에러-정정은 상기 제어기들에 의해 실행된 펌웨어를 통해 기존의 제어기들에 채택될 수 있으며, 솔더링(soldering) 또는 다른 제조 공정들에 기인하여 사전-로딩된 콘텐츠 데이터의 손상을 해결하는 데 사용될 수 있다.
도 5는 추가 ECC 데이터를 사용하는 방법(500)의 특정 실시 예의 흐름도이다. 방법(500)은 도 1의 제어기(110)와 같은 데이터 저장 디바이스의 제어기에서 수행될 수 있다. 방법(500)은 단계(502)에서 데이터 블록 및 상기 데이터 블록에 대한 메인 ECC 데이터를 포함하는 데이터를 수신하는 단계를 포함한다. 상기 데이터 블록은 다수의 서브-블록(예를 들어, 데이터의 제 1 서브-블록 및 데이터의 제 2 서브-블록)들을 포함한다. 예를 들어, 제어기(110)는 제어기가 ECC 페이지(120)를 판독하기 위해 제어기(110)에 대한 ECC 페이지(120)의 어드레스를 포함하는 메모리(112)에 명령을 발송할 수 있다. 상기 명령을 발송한 이후, 제어기(110)는 메모리(112)로부터 ECC 페이지(120)에 해당하는 데이터 블록을 수신할 수 있다.
단계(504)에서, 상기 메인 ECC 데이터를 사용하여 상기 데이터 블록을 처리하는 ECC 오퍼레이션이 시작된다. 예를 들어, 제어기(110)는 메인 ECC 데이터(124)를 사용하여 데이터 블록(122)을 처리하기 위해 도 1의 제 1 ECC 오퍼레이션(150)을 시작할 수 있다. 설명을 위해서, 도 1의 제어기(110)는 상기 수신된 데이터 블록 및 메인 ECC 데이터를 ECC 엔진(114)의 입력으로 제공할 수 있다. 제어기(110)는 또한 ECC 엔진(114)이 ECC 엔진(114) 입력에서의 상기 데이터 블록 및 상기 메인 ECC 데이터를 사용하여 ECC 디코딩 동작을 수행하도록 ECC 엔진(114)에 제어 신호를 제공할 수 있다.
상기 데이터 블록 내에 정정할 수 없는 에러들을 나타내는 ECC 오퍼레이션에 응답하여, 상기 데이터 블록 외부에 있는 제 1 추가 ECC 데이터가 검색된다. 상기 제 1 추가 ECC 데이터는 데이터의 제 1 서브-블록에 해당한다. 단계(506)에서, 제 2 ECC 오퍼레이션은 상기 제 1 추가 ECC 데이터를 사용하여 상기 데이터의 제 1 서브-블록을 처리하기 위해 시작된다. 예를 들어, 제어기(110)는 상기 제 1 추가 ECC 데이터(130)의 어드레스를 포함하는 메모리(112)에 판독 명령을 발송할 수 있다. 명령을 발송한 후, 제어기(110)는 메모리(112)로부터 제 1 추가 ECC 데이터(130)를 수신할 수 있다. 제어기(110)는 ECC 엔진(114)의 입력에 제 1 서브-블록(126) 및 제 1 추가 ECC 데이터(130)를 제공할 수 있다. 제어기(110)는 또한 디코딩 동작을 시작하기 위해 ECC 엔진(114)에 제어 신호를 제공할 수 있다. 상기 디코딩 동작은 도 2의 제 2 ECC 오퍼레이션(152)에 해당할 수 있다.
상기 데이터 블록 및 상기 메인 ECC 데이터는 도 2의 제 1 ECC 페이지(206) 와 같은 메모리의 제 1 워드 라인으로부터 제 1 ECC 페이지로서 검색될 수 있으며, 제 1 추가 ECC 데이터는 제 2 추가 ECC 데이터(222)를 저장하는 도 2의 제 2 ECC 페이지(208)의 제 2 서브-블록과 같은 제 2 ECC 페이지의 부분으로서 상기 메모리의 제 2 워드 라인으로부터 검색될 수 있다. 상기 제 2 ECC 페이지는 상기 제 1 ECC 페이지의 제 1 서브-블록 내의 에러들을 정정하기 위한 제 1 추가 ECC 데이터, 및 상기 제 1 ECC 페이지의 제 2 서브-블록 내의 에러들을 정정하기 위한 제 2 추가 ECC 데이터를 포함할 수 있다. 상기 제 2 ECC 페이지는 제 1 추가 ECC 데이터 및 제 2 추가 ECC 데이터 내의 에러들을 정정하기 위해 도 2의 메인 ECC 데이터(228)와 같은 메인 패리티 비트들을 포함할 수 있다.
일부 구현들에서, 상기 제어기는 상기 데이터 블록의 로케이션에 하나 이상의 덧셈 또는 곱셈 계수들(additive or multiplicative factors)를 적용함으로써 하나 이상의 연산들을 통해 상기 제 1 추가 ECC 데이터의 로케이션을 결정할 수 있다. 예를 들어, 연속적인 연산들은 도 2-3의 제 1 ECC 페이지(206 또는 306)를 제 2 ECC 페이지(208 또는 308)의 해당 서브-블록에 매핑하도록 수행될 수 있다.
일부 구현들에서, 상기 제 1 추가 ECC 데이터의 로케이션이 상기 데이터의 메모리 어드레스를 기반으로 테이블 룩업 오퍼레이션(table lookup operation)을 수행함으로써 결정될 수 있다. 상기 제 1 추가 ECC 데이터의 로케이션은 상기 데이터 블록 내의 제 1 서브-블록의 로케이션을 더 기반으로 할 수 있다. 설명을 위해서, 제어기(110)는 도 1의 메모리(112) 내에, 또는 제어기(110)로 액세스가 가능한 다른 메모리에 저장될 수 있는 테이블에 액세스할 수 있다. 제어기(110)는 상기 테이블의 엘리먼트를 로케이팅하는 것에 사용을 위해 상기 블록 내의 블록 번호 및 워드 번호의 인디케이터와 같은 데이터의 어드레스를 제공할 수 있다. 제어기(110)는 또한 워드 라인 내의 ECC 페이지의 인덱스와 같은 워드 라인 내의 데이터 로케이션의 표시를 제공할 수 있다. 상기 제공된 로케이션 정보는 제 1 추가 ECC 데이터(130)의 로케이션을 저장하는 테이블 엘리먼트의 로케이션을 로케이팅 하기 위해 사용될 수 있다. 제 1 추가 ECC 데이터(130)의 로케이션은 상기 테이블로부터 검색될 수 있으며, 메모리(112)로부터 제 1 추가 ECC 데이터(130)를 검색하는데 사용될 수 있다.
상기 ECC 오퍼레이션 및 제 1 서브-블록 ECC 오퍼레이션이 제 1 ECC 오퍼레이션(150) 및 제 2 ECC 오퍼레이션(152)을 수행하는 도 1의 ECC 엔진(114)과 같은 데이터 저장 디바이스의 공통 ECC 엔진에서 수행될 수 있다. 또는 상기 ECC 오퍼레이션 및 상기 제 1 서브-블록 ECC 오퍼레이션은 상기 데이터 저장 디바이스의 다른 ECC 엔진에서 수행될 수 있다. 상기 메인 ECC 데이터 및 상기 제 1 추가 ECC 데이터는 동일한 수의 패리티 비트들을 가질 수 있다. 또한, 상기 메인 ECC 데이터는 제 1 수의 패리티 비트들를 가질 수 있으며, 상기 제 1 추가 ECC 데이터는 제 2 수의 패리티 비트들을 가질 수 있으며, 상기 제 2 수는 제 1 수와 다를 수 있다.
단계(506)에서, 상기 제 2 ECC 오퍼레이션 동안 제 1 서브-블록 내의 에러들을 정정한 이후 단계(508)에서, 상기 메인 ECC 데이터를 사용하여 상기 데이터 블록을 처리하는 제 3 ECC 오퍼레이션이 시작될 수 있다. 예를 들어, 상기 제 3 ECC 오퍼레이션은 도 1의 제 3 ECC 오퍼레이션(154)에 해당할 수 있다. 다른 구현들에서, 데이터 블록의 모든 서브-블록들이 추가 ECC 데이터를 사용하여 에러-정정될 수 있으며, 상기 메인 ECC 데이터를 사용하는 에러 정정은 바이패스될 수 있다.
도 4에서 설명된 바와 같은 구현에서, 상기 데이터는 상기 데이터 저장 디바이스에 저장된 사전-로딩된 콘텐츠에 해당할 수 있다. 상기 ECC 오퍼레이션을 시작하는 단계는 데이터 손상 이벤트가 발생한 이후 상기 데이터 저장 디바이스에 상기 사전-로딩된 콘텐츠를 정정 및 재저장하는 데이터 정정 절차 중에 수행될 수 있다. 예를 들어, 상기 데이터 손상 이벤트는 인쇄 회로 기판에 상기 데이터 저장 디바이스를 부착하는 솔더링 또는 리플로우 공정에 기인할 수 있다. 다른 구현들에서는 상기 데이터는 사전-로딩된 콘텐츠에 해당하지 않을 수 있으며, 대신에 높은 에러 정정 성능을 제공하도록 추가 ECC 데이터에 의해 보호된 사용자 데이터를 포함할 수 있다.
도 6은 추가 ECC 데이터를 제공하는 방법(600)의 특정 실시 예를 예시한다. 방법(600)은 도 1의 데이터 저장 디바이스(102)의 메모리(112) 및 ECC 엔진(114)과 같은 메모리 및 에러 정정 코딩(ECC) 엔진을 포함하는 데이터 저장 디바이스에서 수행될 수 있다. 방법(600)은 단계(602)에서, 데이터 블록 및 상기 메모리에 대한 제 1 메인 ECC 데이터를 포함하는 제 1 ECC 페이지를 저장하는 단계를 포함한다. 상기 제 1 메인 ECC 데이터는 제 1 ECC 페이지 내의 에러들을 정정하기 위해 ECC 엔진에 의해 사용될 수 있다. 예를 들어, 제 1 ECC 페이지는 도 2의 제 1 ECC 페이지(206)일 수 있다.
단계(604)에서, 제 1 추가 ECC 데이터를 포함하는 제 2 ECC 페이지는 상기 메모리에 저장된다. 상기 제 1 추가 ECC 데이터는 상기 데이터 블록 내의 다수의 서브-블록들 중 단일 서브-블록 내의 에러들을 정정하기 위해 ECC 엔진에 의해 사용될 수 있다. 예를 들어, 제 2 ECC 페이지는 도 2의 제 2 ECC 페이지(208)일 수 있다.
단계(606)에서, 상기 제 1 ECC 페이지의 어드레스를 상기 제 2 ECC 페이지의 로케이션과 관련시키는 테이블이 저장될 수 있다. 상기 테이블은 상기 제 1 ECC 페이지에서 발생하는 에러들의 수가 상기 메인 ECC 데이터를 사용하는 ECC 엔진의 정정 성능을 초과할 때 상기 데이터 저장 디바이스가 상기 제 2 ECC 페이지를 로케이팅하는 것이 가능하도록 저장될 수 있다.
예시적인 구현에서, 방법(600)은 사전-로딩된 디바이스(404)를 형성하기 위해 도 4의 데이터 저장 디바이스 제조자에 의해 제어될 수 있다. 상기 제 1 ECC 페이지는 상기 메모리의 제 1 부분에 저장된 사전-로딩된 콘텐츠의 부분일 수 있으며, 상기 제 2 ECC 페이지는 상기 메모리의 제 2 부분에 저장된 추가 패리티의 부분일 수 있다. 상기 사전-로딩된 콘텐츠 및 상기 추가 패리티가 도 4의 호스트 제조 공정과 관련하여 설명된 바와 같이, 솔더링 또는 리플로우 공정 동안 상기 데이터 저장 디바이스의 온도를 올리기 전에 메모리에 저장될 수 있다.
본 명세서에서 묘사된 다양한 컴포넌트들이 블록 컴포넌트들로서 예시되고 일반적인 용어들로 설명되지만, 이러한 컴포넌트들은 하나 이상의 마이크로 프로세서들, 상태 머신들(state machines), 또는 도 1의 데이터 저장 디바이스(102)가 이러한 컴포넌들에 기인된 특정 기능들을 수행할 수 있도록 구성된 다른 회로들을 포함할 수 있다. 예를 들어, 도 1의 제어기(110)는 하드웨어 제어기들, 상태 머신들, 논리 회로들, 또는 데이터 저장 디바이스(102)가 상기 추가 ECC 데이터를 사용하여 서브-블록의 데이터 정정을 수행하는 것을 가능하게 하는 다른 구조들과 같은 물리적 컴포넌트들을 나타낼 수 있다.
제어기(110)는 추가 ECC 데이터를 사용하여 에러-정정을 구현하기 위해 전용 하드웨어(즉, 회로)를 포함할 수 있다. 또한, 제어기(110)는 ECC 페이지의 서브-블록을 디코딩하기 위해 언제 추가 ECC 데이터를 검색 및 사용할지를 결정하도록 프로그래밍된 마이크로프로세서 또는 마이크로컨트롤러를 사용하여 추가 ECC 데이터를 사용하는 에러 정정을 구현할 수 있다. 특정 실시 예에서, 제어기(110)는 프로세서에 의해 실행되는 실행 가능한 명령들을 포함하며, 그 명령들은 메모리(112)에 저장된다. 대안적으로, 또는 추가로, 제어기(110)에 포함될 수 있는 프로세서에 의해 실행되는 실행 가능한 명령들은 읽기-전용 메모리(ROM)에서와 같이, 메모리(112)의 부분이 아닌 별도의 메모리 위치에 저장될 수 있다.
특정 실시 예에서, 데이터 저장 디바이스(102)는 하나 이상의 외부 디바이스들에 선택적으로 결합되도록 구성된 휴대용 디바이스일 수 있다. 그러나 다른 실시 예들에서, 데이터 저장 디바이스(102)는 부착되거나, 또는 휴대용 통신 디바이스의 하우징 내에서와 같이 하나 이상의 호스트 디바이스 내에 내장될 수 있다. 예를 들어, 데이터 저장 디바이스(102)는 무선 전화, 개인용 디지털 보조(PDA), 게임 디바이스 또는 콘솔, 휴대용 내비게이션 디바이스, 또는 내부 비-휘발성 메모리를 사용하는 다른 디바이스와 같은 패키징된 장치 내에 있을 수 있다. 특정 실시 예에서, 데이터 저장 디바이스(102)는 플래시 메모리(예를 들어, NAND, NOR, 멀티-레벨 셀(MLC), 분할된 비트-라인 NOR(Divided bit-line NOR : DINOR), AND, 고 정전용량 결합율(high capacitive coupling ratio : HiCR), 비대칭 비접촉 트랜지스터(asymmetrical contactless transistor : ACT), 또는 다른 플래시 메모리들), 소거 가능한 프로그래머블 읽기-전용 메모리(erasable programmable read-only memory : EPROM), 전기적-소거 가능한 프로그래머블 읽기-전용 메모리(electrically-erasable programmable read-only memory : EEPROM), 읽기-전용 메모리(ROM), 일회성 프로그래머블 메모리(one-time programmable memory: OTP), 또는 다른 유형의 메모리와 같은 비-활성 메모리를 포함한다.
본 명세서에서 설명된 실시 예들의 예시들은 상기 다양한 실시 예들의 일반적인 이해를 제공하기 위해 의도된다. 본 발명으로부터 다른 실시 예들이 활용되고, 유도될 수 있으므로, 구조적 및 논리적 대체들 및 변경들이 본 발명의 범위에서 벗어나지 않고 이루어질 수 있다. 본 발명은 다양한 실시 예들의 모든 후속 각색들 또는 변형들을 포괄하도록 의도된다. 따라서, 본 발명 및 도면들은 제한적이기보다는 오히려 예시적인 것으로 간주될 수 있다.
상기 개시된 내용은 예시적이며, 제한하지 않는 것으로 고려되어야 하며, 또한 첨부된 청구 범위는 본 발명의 범위에 속하는 모든 이러한 수정들, 개선들, 및 다른 실시 예들을 포괄하도록 의도된다. 따라서, 법에 의해 허용되는 최대 범위까지, 본 발명의 범위는 다음의 청구 범위 및 그 균등물들의 가장 광범위한 허용 가능한 해석에 의해 결정되며, 전술한 상세한 설명에 의해 제한되거나 한정되지 않는다.

Claims (33)

  1. 방법으로서,
    데이터 저장 디바이스의 제어기에서:
    데이터 블록 및 상기 데이터 블록에 대한 메인 에러-정정 코팅(ECC) 데이터를 포함하는 데이터를 수신하는 단계, 여기서 상기 데이터 블록은 데이터의 제 1 서브-블록 및 데이터의 제 2 서브-블록을 포함하며;
    상기 메인 ECC 데이터를 사용하여 상기 데이터 블록을 처리(process)하는 ECC 오퍼레이션(ECC operation)을 시작하는 단계; 및
    상기 ECC 오퍼레이션이 상기 데이터 블록 내의 정정할 수 없는 에러들을 나타냄에 응답하여, 상기 데이터 블록 외부에 있는 제 1 추가 ECC 데이터를 검색하고, 여기서 상기 제 1 추가 ECC 데이터는 상기 데이터의 제 1 서브-블록에 해당하며, 및 상기 제 1 추가 ECC 데이터를 사용하여 상기 데이터의 제 1 서브-블록을 처리하는 제 2 ECC 오퍼레이션을 시작하는 단계를 수행하는 것을 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제 2 ECC 오퍼레이션 동안 상기 제 1 서브-블록 내의 에러들을 정정한 이후, 상기 메인 ECC 데이터를 사용하여 상기 데이터 블록을 처리하는 제 3 ECC 오퍼레이션을 시작하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 데이터는 상기 데이터 저장 디바이스에 저장된 사전-로딩된 콘텐츠(pre-loaded content)에 해당하며, 상기 ECC 오퍼레이션을 시작하는 단계는 데이터 손상 이벤트(data corruption event)가 발생한 이후 상기 데이터 저장 디바이스 내의 상기 사전-로딩된 콘텐츠를 정정 및 재저장하는 데이터 정정 절차 중에 수행되는 것을 특징으로 하는 방법.
  4. 제 3 항에 있어서,
    상기 데이터 손상 이벤트는 상기 데이터 저장 디바이스를 인쇄 회로 기판에 부착하는 솔더링 또는 리플로우 공정으로부터 기인하는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서,
    상기 데이터 블록 및 상기 메인 ECC 데이터는 메모리의 제 1 워드 라인으로부터 제 1 ECC 페이지로서 검색되며, 상기 제 1 추가 ECC 데이터는 상기 메모리의 제 2 워드 라인으로부터 제 2 ECC 페이지의 부분으로서 검색되는 것을 특징으로 하는 방법.
  6. 제 5 항에 있어서,
    상기 제 2 ECC 페이지는 상기 제 1 ECC 페이지의 제 1 서브-블록 내의 에러들을 정정하기 위한 제 1 추가 ECC 데이터 및 상기 제 1 ECC 페이지의 제 2 서브-블록 내의 에러들을 정정하기 위한 제 2 추가 ECC 데이터를 포함하는 것을 특징으로 하는 방법.
  7. 제 6 항에 있어서,
    상기 제 2 ECC 페이지는 상기 제 1 추가 ECC 데이터 및 상기 제 2 추가 ECC 데이터 내의 에러들을 정정하기 위한 메인 패리티 비트들을 더 포함하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서,
    상기 메인 ECC 데이터 및 상기 제 1 추가 ECC 데이터는 동일한 수의 패리티 비트들을 갖는 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서,
    상기 메인 ECC 데이터는 제 1 수의 패리티 비트들을 가지며, 및 상기 제 1 추가 ECC 데이터는 제 2 수의 패리티 비트들을 가지며, 여기서 상기 제 2 수는 상기 제 1 수와 다른 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서,
    상기 ECC 오퍼레이션 및 상기 제 1 서브-블록 ECC 오퍼레이션은 상기 데이터 저장 디바이스의 공통 ECC 엔진에서 수행되는 것을 특징으로 하는 방법.
  11. 제 1 항에 있어서,
    상기 데이터의 메모리 어드레스를 기반으로 하여 상기 제 1 추가 ECC 데이터의 로케이션을 결정하는 테이블 룩업 오퍼레이션(table lookup operation)을 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 제 1 추가 ECC 데이터의 로케이션은 상기 데이터 블록 내의 상기 제 1 서브-블록의 로케이션에 더 기반으로 하는 것을 특징으로 하는 방법.
  13. 방법으로서,
    메모리 및 에러 정정 코딩(ECC) 엔진을 포함하는 데이터 저장 디바이스에서,
    데이터 블록 및 제 1 메인 ECC 데이터를 포함하는 제 1 ECC 페이지를 상기 메모리에 저장하는 단계, 여기서 상기 제 1 메인 ECC 데이터는 상기 제 1 ECC 페이지 내의 에러들을 정정하기 위해 상기 ECC 엔진에 의해 사용이 가능하며; 및
    제 1 추가 ECC 데이터를 포함하는 제 2 ECC 페이지를 상기 메모리에 저장하는 단계를 포함하며, 여기서 상기 제 1 추가 ECC 데이터는 상기 데이터 블록 내의 다수의 서브-블록들 중 단일 서브-블록 내의 에러들을 정정하기 위해 상기 ECC 엔진에 의해 사용이 가능한 것을 특징으로 하는 방법.
  14. 제 13 항에 있어서,
    상기 제 1 ECC 페이지에서 발생하는 에러들의 수가 상기 메인 ECC 데이터를 사용하는 상기 ECC 엔진의 정정 성능을 초과하는 경우, 상기 데이터 저장 디바이스가 제 2 ECC 페이지를 로케이팅(locating)하도록 상기 제 1 ECC 페이지의 어드레스를 상기 제 2 ECC 페이지의 로케이션과 관련시키는 테이블을 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  15. 제 13 항에 있어서,
    상기 제 1 ECC 페이지는 상기 메모리의 제 1 부분에 저장된 사전-로딩된 콘텐츠의 부분이며, 및 상기 제 2 ECC 페이지는 상기 메모리의 제 2 부분에 저장된 추가 패리티의 부분인 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서,
    상기 사전-로딩된 콘텐츠 및 상기 추가 패리티는 솔더링(soldering) 또는 리플로우(reflow) 공정 중에 상기 데이터 저장 디바이스의 온도를 올리는 것에 앞서 상기 메모리에 저장되는 것을 특징으로 하는 방법.
  17. 데이터 저장 디바이스로서,
    메모리 디바이스; 및
    상기 메모리에 결합된 제어기를 포함하며, 여기서 상기 제어기는 에러 정정 코딩(ECC) 엔진을 포함하며,
    여기서 상기 제어기는 데이터 블록에 대한 메인 ECC 데이터를 사용하여 상기 데이터 블록을 처리하는 상기 ECC 엔진의 제 1 ECC 오퍼레이션을 시작하도록 구성되며, 및
    여기서 상기 제어기는 상기 제 1 ECC 오퍼레이션이 상기 데이터 블록 내의 정정할 수 없는 에러들을 나타냄에 응답하여, 상기 데이터 블록 외부에 있는 제 1 추가 ECC 데이터를 상기 메모리로부터 검색하도록, 및 상기 제 1 추가 ECC 데이터를 사용하여 상기 데이터 블록의 제 1 서브-블록을 처리하는 제 2 ECC 오퍼레이션을 시작하도록 구성되는 것을 특징으로 하는 데이터 저장 디바이스.
  18. 제 17 항에 있어서,
    상기 데이터 블록 및 상기 메인 ECC 데이터를 포함하는 데이터는 상기 메모리에 저장된 사전-로딩된 콘텐츠에 해당하며, 및 상기 ECC 오퍼레이션을 시작하는 것은 데이터 손상 이벤트가 발생한 이후 상기 메모리 내의 상기 사전-로딩된 콘텐츠를 정정 및 재저장하는 데이터 정정 절차 중에 수행되는 것을 특징으로 하는 데이터 저장 디바이스.
  19. 제 18 항에 있어서,
    상기 데이터 손상 이벤트가 상기 데이터 저장 디바이스를 인쇄 회로 기판에 부착하는 솔더링 또는 리플로우 공정으로부터 기인하는 것을 특징으로 하는 데이터 저장 디바이스.
  20. 제 18 항에 있어서,
    상기 제어기는 상기 데이터 정정 절차를 완료한 이후 상기 제 1 추가 ECC 데이터를 상기 메모리 내에 유지하도록 구성되는 것을 특징으로 하는 데이터 저장 디바이스.
  21. 제 18 항에 있어서,
    상기 제어기는 상기 데이터 정정 절차를 완료한 이후 상기 제 1 추가 ECC 데이터를 저장하는 메모리의 부분을 프리(free)상태가 되도록 구성되는 것을 특징으로 하는 데이터 저장 디바이스.
  22. 제 18 항에 있어서,
    상기 제어기는 상기 데이터 정정 절차를 완료한 이후 상기 제 1 추가 ECC 데이터를 유지하도록 구성되는 것을 특징으로 하는 데이터 저장 디바이스.
  23. 제 18 항에 있어서,
    상기 제어기는 상기 데이터 블록 및 상기 메인 ECC 데이터를 상기 메모리의 제 1 워드 라인으로부터 제 1 ECC 페이지로로서 검색하도록, 및 제 1 추가 ECC 데이터를 상기 메모리의 제 2 워드 라인으로부터 제 2 ECC 페이지의 부분으로서 검색하도록 구성되는 것을 특징으로 하는 데이터 저장 디바이스.
  24. 제 23 항에 있어서,
    상기 제 2 ECC 페이지는 제 1 ECC 페이지의 제 1 서브-블록 내의 에러들을 정정하기 위한 상기 제 1 추가 ECC 데이터, 및 제 1의 ECC 페이지의 제 2 서브-블록 내의 에러들을 정정하기 위한 제 2 추가 ECC 데이터를 포함하는 것을 특징으로 하는 데이터 저장 디바이스.
  25. 제 24 항에 있어서,
    상기 제 2 ECC 페이지는 상기 제 1 추가 ECC 데이터 및 상기 제 2 추가 ECC 데이터 내의 에러들을 정정하기 위한 메인 패리티 비트들을 더 포함하는 것을 특징으로 하는 데이터 저장 디바이스.
  26. 제 17 항에 있어서,
    상기 메인 ECC 데이터 및 상기 제 1 추가 ECC 데이터는 동일한 수의 패리티 비트들을 갖는 것을 특징으로 하는 데이터 저장 디바이스.
  27. 제 17 항에 있어서,
    상기 메인 ECC 데이터는 제 1 수의 패리티 비트들을 가지며, 및 상기 제 1 추가 ECC 데이터는 제 2 수의 패리티 비트들을 가지며, 여기서 상기 제 2 수는 상기 제 1 수와 다른 것을 특징으로 하는 데이터 저장 디바이스.
  28. 제 17 항에 있어서,
    상기 제어기는 상기 데이터 블록의 메모리 어드레스를 기반으로 하여 상기 제 1 추가 ECC 데이터의 로케이션을 결정하는 테이블 룩업 오퍼레이션을 수행하도록 구성되는 것을 특징으로 하는 데이터 저장 디바이스.
  29. 제 28 항에 있어서,
    상기 제 1 추가 ECC 데이터의 상기 로케이션이 상기 데이터 블록 내의 상기 제 1 서브-블록의 로케이션을 더 기반으로 하는 것을 특징으로 하는 데이터 저장 디바이스.
  30. 제 17 항에 있어서,
    상기 메모리가 플래시 메모리인 것을 특징으로 하는 데이터 저장 디바이스.
  31. 제 30 항에 있어서,
    상기 데이터 저장 디바이스가:
    플래시 메모리 카드;
    범용 직렬 버스(USB) 플래시 드라이브;
    솔리드 스테이트 드라이브(SSD); 및
    내장 플래시 메모리(embedded flash memory) 중 하나인 것을 특징으로 하는 데이터 저장 디바이스.
  32. 제 17 항에 있어서,
    상기 메모리가 3-차원(3D) 메모리인 것을 특징으로 하는 데이터 저장 디바이스.
  33. 제 17 항에 있어서,
    상기 데이터 저장 디바이스가 내장 메모리로서 호스트 디바이스에 결합되도록 구성되는 것을 특징으로 하는 데이터 저장 디바이스.
KR1020137021030A 2011-02-08 2012-02-03 추가 에러 정정 코딩 데이터를 사용한 데이터 복구 KR101394596B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/023,147 2011-02-08
US13/023,147 US8484542B2 (en) 2011-02-08 2011-02-08 Data recovery using additional error correction coding data
PCT/US2012/023735 WO2012109101A1 (en) 2011-02-08 2012-02-03 Data recovery using additional error correction coding data

Publications (2)

Publication Number Publication Date
KR20130101149A true KR20130101149A (ko) 2013-09-12
KR101394596B1 KR101394596B1 (ko) 2014-05-14

Family

ID=45569776

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137021030A KR101394596B1 (ko) 2011-02-08 2012-02-03 추가 에러 정정 코딩 데이터를 사용한 데이터 복구

Country Status (6)

Country Link
US (2) US8484542B2 (ko)
EP (1) EP2673709B1 (ko)
KR (1) KR101394596B1 (ko)
CN (1) CN103329104B (ko)
TW (1) TW201245953A (ko)
WO (1) WO2012109101A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150093755A (ko) * 2012-12-03 2015-08-18 웨스턴 디지털 테크놀로지스, 인코포레이티드 런타임 가변 raid 보호 방식을 갖는 방법들, 솔리드 스테이트 드라이브 제어기들 및 데이터 저장 디바이스들
US9619323B2 (en) 2014-11-17 2017-04-11 SK Hynix Inc. Data storage device and operating method thereof
KR20180003468A (ko) * 2016-06-30 2018-01-09 타이완 세미콘덕터 매뉴팩쳐링 컴퍼니 리미티드 메모리 어레이 내의 에러들을 교정하는 방법 및 그 방법을 구현하기 위한 시스템
WO2020055731A1 (en) * 2018-09-10 2020-03-19 Micron Technology, Inc. Apparatuses and methods for error correction coding and data bus inversion for semiconductor memories

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8418026B2 (en) * 2010-10-27 2013-04-09 Sandisk Technologies Inc. Hybrid error correction coding to address uncorrectable errors
KR101751506B1 (ko) * 2011-03-28 2017-06-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 배드 영역 관리 방법
US10031850B2 (en) * 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
JP5426711B2 (ja) * 2011-06-08 2014-02-26 パナソニック株式会社 メモリコントローラ及び不揮発性記憶装置
KR20130012737A (ko) * 2011-07-26 2013-02-05 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이를 포함하는 반도체 시스템
US20130117632A1 (en) * 2011-11-08 2013-05-09 Sony Corporation Storage control apparatus
JP2013109567A (ja) * 2011-11-21 2013-06-06 Toshiba Corp ストレージデバイス及び誤り訂正方法
US8694862B2 (en) * 2012-04-20 2014-04-08 Arm Limited Data processing apparatus using implicit data storage data storage and method of implicit data storage
WO2014051550A1 (en) * 2012-09-25 2014-04-03 Hewlett-Packard Development Company, L.P. Notification of address range including non-correctable error
US8904250B2 (en) * 2013-02-14 2014-12-02 Micron Technology, Inc. Autorecovery after manufacturing/system integration
US9367391B2 (en) 2013-03-15 2016-06-14 Micron Technology, Inc. Error correction operations in a memory device
US9569308B1 (en) 2013-07-15 2017-02-14 Rambus Inc. Reduced-overhead error detection and correction
US9213595B2 (en) * 2013-10-15 2015-12-15 International Business Machines Corporation Handling errors in ternary content addressable memories
JP6028709B2 (ja) * 2013-10-18 2016-11-16 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
US9165670B2 (en) * 2013-11-14 2015-10-20 Sandisk Technologies Inc. Data retention detection techniques for a data storage device
US9229806B2 (en) 2013-11-14 2016-01-05 Sandisk Technologies Inc. Block closure techniques for a data storage device
US10417090B2 (en) 2013-12-23 2019-09-17 Cnex Labs, Inc. Computing system with data protection mechanism and method of operation thereof
TWI544492B (zh) * 2013-12-31 2016-08-01 慧榮科技股份有限公司 電子裝置及其資料維護方法
WO2015134262A1 (en) * 2014-03-01 2015-09-11 CNEXLABS, Inc. Computing system with data protection mechanism and method of operation thereof
US9323607B2 (en) 2014-04-29 2016-04-26 Seagate Technology Llc Data recovery once ECC fails to correct the data
US9652381B2 (en) * 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US10146482B2 (en) 2014-08-01 2018-12-04 Toshiba Memory Corporation Global error recovery system
US9583206B2 (en) 2014-10-02 2017-02-28 Sandisk Technologies Llc Data storage device having reflow awareness
US10067828B2 (en) * 2014-10-03 2018-09-04 Hitachi, Ltd. Memory controller and data control method
US10248497B2 (en) * 2014-10-22 2019-04-02 Advanced Micro Devices, Inc. Error detection and correction utilizing locally stored parity information
US9472270B2 (en) 2014-10-24 2016-10-18 Sandisk Technologies Llc Nonvolatile storage reflow detection
US9786386B2 (en) * 2015-02-27 2017-10-10 Microsoft Technology Licensing, Llc Dynamic approximate storage for custom applications
US9811420B2 (en) * 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
TWI541809B (zh) 2015-04-24 2016-07-11 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
US10063263B2 (en) * 2015-05-20 2018-08-28 International Business Machines Corporation Extended error correction coding data storage
TWI575531B (zh) * 2015-08-10 2017-03-21 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置
US9734009B2 (en) * 2015-10-08 2017-08-15 Sandisk Technologies Llc Data encoding techniques for a device
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
KR102413755B1 (ko) * 2015-11-20 2022-06-28 삼성전자주식회사 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US9946596B2 (en) 2016-01-29 2018-04-17 Toshiba Memory Corporation Global error recovery system
US10318378B2 (en) 2016-02-25 2019-06-11 Micron Technology, Inc Redundant array of independent NAND for a three-dimensional memory array
US10324782B1 (en) 2016-03-24 2019-06-18 Emc Corporation Hiccup management in a storage array
US10705907B1 (en) 2016-03-24 2020-07-07 EMC IP Holding Company LLC Data protection in a heterogeneous random access storage array
US10101934B1 (en) 2016-03-24 2018-10-16 Emc Corporation Memory allocation balancing for storage systems
TWI582581B (zh) * 2016-05-13 2017-05-11 群暉科技股份有限公司 用來於一冗餘儲存系統中進行資料修復之方法與裝置
US10255172B1 (en) 2016-09-30 2019-04-09 EMC IP Holding Company LLC Controlled testing using code error injection
US10223008B1 (en) 2016-09-30 2019-03-05 EMC IP Holding Company LLC Storage array sizing for compressed applications
US10152371B1 (en) * 2016-09-30 2018-12-11 EMC IP Holding Company LLC End-to-end data protection for distributed storage
US10079613B2 (en) * 2016-11-18 2018-09-18 SK Hynix Inc. Data mapping scheme for generalized product codes
KR20180090422A (ko) * 2017-02-02 2018-08-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10817388B1 (en) 2017-07-21 2020-10-27 EMC IP Holding Company LLC Recovery of tree data in a geographically distributed environment
US10684780B1 (en) 2017-07-27 2020-06-16 EMC IP Holding Company LLC Time sensitive data convolution and de-convolution
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10528260B1 (en) 2017-10-26 2020-01-07 EMC IP Holding Company LLC Opportunistic ‘XOR’ of data for geographically diverse storage
US20190196726A1 (en) * 2017-12-26 2019-06-27 Nanya Technology Corporation Dynamic random access memory and method of operating the same
CN108052414B (zh) * 2017-12-28 2021-09-17 湖南国科微电子股份有限公司 一种提升ssd工作温度范围的方法及系统
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
KR102432551B1 (ko) * 2018-02-13 2022-08-16 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
US10817374B2 (en) 2018-04-12 2020-10-27 EMC IP Holding Company LLC Meta chunks
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US10936196B2 (en) 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US10719250B2 (en) * 2018-06-29 2020-07-21 EMC IP Holding Company LLC System and method for combining erasure-coded protection sets
KR20200042360A (ko) 2018-10-15 2020-04-23 에스케이하이닉스 주식회사 에러 정정 회로, 이를 포함하는 메모리 컨트롤러 및 메모리 시스템
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10768840B2 (en) 2019-01-04 2020-09-08 EMC IP Holding Company LLC Updating protection sets in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
KR20200099438A (ko) 2019-02-14 2020-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러
US10983883B2 (en) 2019-03-27 2021-04-20 Spin Memory, Inc. Error recovery in magnetic random access memory after reflow soldering
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
KR20210015087A (ko) 2019-07-31 2021-02-10 에스케이하이닉스 주식회사 오류 정정 회로, 이를 포함하는 메모리 컨트롤러 및 메모리 시스템
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
EP3849089A1 (en) 2020-01-09 2021-07-14 Microsoft Technology Licensing, LLC Encoding for data recovery in storage systems
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11218165B2 (en) * 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11043266B1 (en) 2020-06-15 2021-06-22 Western Digital Technologies, Inc. Multi-level read after heating event in non-volatile storage
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
KR20220074079A (ko) 2020-11-27 2022-06-03 삼성전자주식회사 스토리지 컨트롤러 및 스토리지 컨트롤러의 에러 복구 방법
US11468963B2 (en) * 2020-12-08 2022-10-11 Macronix International Co., Ltd. Memory device and read method thereof
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
KR20230026016A (ko) * 2021-08-17 2023-02-24 삼성전자주식회사 스토리지 장치
US11994947B2 (en) * 2022-08-09 2024-05-28 Micron Technology, Inc. Multi-layer code rate architecture for special event protection with reduced performance penalty

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978958A (en) * 1995-04-03 1999-11-02 Matsushita Electric Industrial Co., Ltd. Data transmission system, data recording and reproducing apparatus and recording medium each having data structure of error correcting code
JP3305966B2 (ja) * 1995-12-25 2002-07-24 ソニー株式会社 データ復号装置及びその方法並びにデータ再生装置
US6092231A (en) * 1998-06-12 2000-07-18 Qlogic Corporation Circuit and method for rapid checking of error correction codes using cyclic redundancy check
JP3975245B2 (ja) 1999-12-16 2007-09-12 株式会社ルネサステクノロジ 記録再生装置および半導体メモリ
US6757862B1 (en) * 2000-08-21 2004-06-29 Handspring, Inc. Method and apparatus for digital data error correction coding
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
TWI309776B (en) 2003-10-24 2009-05-11 Hon Hai Prec Ind Co Ltd Secure storage system and method for solid memory
US7171591B2 (en) 2003-12-23 2007-01-30 International Business Machines Corporation Method and apparatus for encoding special uncorrectable errors in an error correction code
JP4828816B2 (ja) * 2004-10-25 2011-11-30 株式会社東芝 メモリカード、半導体装置、及びメモリカードの制御方法
US7849381B2 (en) * 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US7562283B2 (en) 2005-12-27 2009-07-14 D.S.P. Group Ltd. Systems and methods for error correction using binary coded hexidecimal or hamming decoding
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
KR100842680B1 (ko) 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US8136008B1 (en) * 2007-03-30 2012-03-13 Link—A—Media Devices Corporation ECC with out of order completion
US7958427B1 (en) * 2007-03-30 2011-06-07 Link—A—Media Devices Corporation ECC with out of order completion
US8370715B2 (en) 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
US8051358B2 (en) 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
US7747903B2 (en) * 2007-07-09 2010-06-29 Micron Technology, Inc. Error correction for memory
US8095851B2 (en) * 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
CN101140809A (zh) * 2007-09-07 2008-03-12 炬力集成电路设计有限公司 支持流水线纠错码和可配置操作的flash控制器及其控制方法
JP4538034B2 (ja) * 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
US7859931B2 (en) * 2007-12-14 2010-12-28 Hynix Semiconductor Inc. Refresh period signal generator with digital temperature information generation function
US8621137B2 (en) * 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US8276028B2 (en) 2008-05-23 2012-09-25 Intel Corporation Using error information from nearby locations to recover uncorrectable data in non-volatile memory
US7859932B2 (en) * 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150093755A (ko) * 2012-12-03 2015-08-18 웨스턴 디지털 테크놀로지스, 인코포레이티드 런타임 가변 raid 보호 방식을 갖는 방법들, 솔리드 스테이트 드라이브 제어기들 및 데이터 저장 디바이스들
US9619323B2 (en) 2014-11-17 2017-04-11 SK Hynix Inc. Data storage device and operating method thereof
KR20180003468A (ko) * 2016-06-30 2018-01-09 타이완 세미콘덕터 매뉴팩쳐링 컴퍼니 리미티드 메모리 어레이 내의 에러들을 교정하는 방법 및 그 방법을 구현하기 위한 시스템
US10558525B2 (en) 2016-06-30 2020-02-11 Taiwan Semiconductor Manufacturing Company, Ltd. Method of correcting errors in a memory array and a system for implementing the same
US11294764B2 (en) 2016-06-30 2022-04-05 Taiwan Semiconductor Manufacturing Company, Ltd. Method of correcting errors in a memory array and method of screening weak bits in the same
US11714717B2 (en) 2016-06-30 2023-08-01 Taiwan Semiconductor Manufacturing Company, Ltd. Method of correcting errors in a memory array and method of screening weak bits in the same
WO2020055731A1 (en) * 2018-09-10 2020-03-19 Micron Technology, Inc. Apparatuses and methods for error correction coding and data bus inversion for semiconductor memories
US10795759B2 (en) 2018-09-10 2020-10-06 Micron Technology, Inc. Apparatuses and methods for error correction coding and data bus inversion for semiconductor memories
US11314591B2 (en) 2018-09-10 2022-04-26 Micron Technology, Inc. Apparatuses and methods for error correction coding and data bus inversion for semiconductor memories

Also Published As

Publication number Publication date
US20120204077A1 (en) 2012-08-09
TW201245953A (en) 2012-11-16
US8484542B2 (en) 2013-07-09
EP2673709A1 (en) 2013-12-18
CN103329104A (zh) 2013-09-25
CN103329104B (zh) 2016-08-10
US20130275832A1 (en) 2013-10-17
KR101394596B1 (ko) 2014-05-14
EP2673709B1 (en) 2019-06-12
WO2012109101A1 (en) 2012-08-16
US8806297B2 (en) 2014-08-12

Similar Documents

Publication Publication Date Title
KR101394596B1 (ko) 추가 에러 정정 코딩 데이터를 사용한 데이터 복구
US8418026B2 (en) Hybrid error correction coding to address uncorrectable errors
US9063857B2 (en) Memory system and error correction method
US9043678B2 (en) Detecting effect of corrupting event on preloaded data in non-volatile memory
US9124300B2 (en) Error correction coding in non-volatile memory
US8719677B2 (en) Using ECC encoding to verify an ECC decode operation
US8938656B2 (en) Data storage device with intermediate ECC stage
US8635510B2 (en) Non-systematic coded error correction
US8862967B2 (en) Statistical distribution based variable-bit error correction coding
CN109426580A (zh) 数据存储设备及其操作方法
US20140047298A1 (en) Memory devices facilitating differing depths of error detection and/or error correction coverage
US9229801B2 (en) Method and device for write abort protection
US9003264B1 (en) Systems, methods, and devices for multi-dimensional flash RAID data protection
WO2013126182A1 (en) Erasure correction using single error detection parity
KR20160039153A (ko) 에러 정정 코드(ecc) 에러 핸들링을 위한 방법 및 디바이스
KR20130054385A (ko) 분산형 ecc 프로세싱 시스템 및 방법
KR102404257B1 (ko) 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법

Legal Events

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

Payment date: 20170420

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 6