KR101317720B1 - 데이터 엔코딩 시스템 및 방법 - Google Patents

데이터 엔코딩 시스템 및 방법 Download PDF

Info

Publication number
KR101317720B1
KR101317720B1 KR1020137009463A KR20137009463A KR101317720B1 KR 101317720 B1 KR101317720 B1 KR 101317720B1 KR 1020137009463 A KR1020137009463 A KR 1020137009463A KR 20137009463 A KR20137009463 A KR 20137009463A KR 101317720 B1 KR101317720 B1 KR 101317720B1
Authority
KR
South Korea
Prior art keywords
data
ecc
error correction
region
area
Prior art date
Application number
KR1020137009463A
Other languages
English (en)
Other versions
KR20130060321A (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 KR20130060321A publication Critical patent/KR20130060321A/ko
Application granted granted Critical
Publication of KR101317720B1 publication Critical patent/KR101317720B1/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
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature

Abstract

워드 라인의 데이터 영역으로부터 데이터를 판독하는 단계 및 상기 워드 라인의 ECC 영역으로부터 제1 ECC 데이터를 판독하는 단계를 포함하는 방법이 개시된다. 본 방법은, 에러 표시자가 임계값을 초과함을 결정함에 응답하여, 제2 ECC 데이터를 ECC 영역에 저장하는 것을 포함한다. 제2 ECC 데이터는 상기 데이터 영역의 서브섹션에 대응한다.

Description

데이터 엔코딩 시스템 및 방법{SYSTEM AND METHOD OF DATA ENCODING}
본 출원은 2010년 10월 1일자로 출원된 미국 가출원 제 61/389,100호 및 2011년 9월 27일자로 출원된 미국 특허 출원 제13/246,521호로부터의 우선권을 주장한다. 이들 출원 각각의 내용은 그 전체가 본 명세서에 참조로서 포함된다.
본 발명은 일반적으로 메모리 내의 데이터의 에러 정정에 관한 것이다.
메모리 디바이스 내에 데이터를 저장하는 능력은 기술의 진보에 따라 계속해서 향상되고 있다. 예를 들어, 플래시 메모리는 메모리 셀 당 복수의 데이터 비트들을 저장함으로써 향상될 수 있는 저장 밀도로 데이터의 비휘발성 저장을 가능하게 한다. 그러나, 메모리에 기입된 데이터는 열 노이즈, 코스믹 레이(cosmic ray)와 같은 메모리에 영향을 주는 물리적 조건들, 또는 메모리의 물리적 컴포넌트들에 대한 손상로 인해 의도치 않게 변경될 수 있다. 에러 정정 코딩(ECC) 기법은 때때로 저장된 데이터에서 발생할 수 있는 에러들을 정정하기 위하여 사용된다. 그러한 ECC 기법은 일반적으로 리던던트 정보(redundant information)를 사용하여 데이터를 엔코딩한다. 리던던트 정보의 저장 및 사용은 특정한 에러들로부터의 복구를 지원하지만 또한 제조 비용을 증가시키고 메모리 디바이스의 저장 밀도를 감소시킨다. 메모리 디바이스의 에러 정정 능력 개선은 동작을 향상시키거나, 디바이스 수명을 연장시키거나, 또는 메모리 디바이스의 비용을 감소시킬 수 있다.
에러 정정 능력은 리던던트 정보의 양을 증가시킴으로써 증가될 수 있으나, 리던던트 정보 양의 그러한 증가는 메모리 어레이의 사이즈에 있어서의 대응하는 증가로 인하여 바람직하지 않을 수 있다.
본 발명은 메모리의 사이즈를 증가시킴이 없이 선택적으로 패리티 비트들을 추가함으로써 에러 정정 능력을 증가시킨다.
도 1은 워드 라인이 인핸스드 데이터 무결성 구성으로 선택적으로 수정되는 경우의 메모리의 워드 라인의 구체적인 예시적인 실시예의 도면이다.
도 2는 인핸스드 데이터 무결성 구성에서 도 1의 워드 라인의 데이터 영역의 적어도 일부에 대응하는 ECC 데이터를 포함하는 워드 라인의 구조의 구체적인 예시적 실시예의 도면이다.
도 3은 메모리의 데이터 무결성을 향상시키기 위한 시스템의 구체적인 예시적 실시예의 블록도로서, 여기에는 예시적인 워드 라인이 인핸스드 데이터 무결성 구성으로 도시되어 있다.
도 4는 메모리의 데이터 무결성을 향상시키기 위한 방법의 구체적인 예시적 실시예의 흐름도이다.
데이터를 저장하기 위해 사용되는 각각의 ECC와 관련된 패리티 비트들의 수를 증가시킴으로써 에러 정정 능력이 증대될 수 있으나, 이 기법은 메모리 어레이 사이즈에 있어서의 원치않는 증가로 인하여 실행이 불가능할 수 있다. 본 명세서에 제시된 해법은 메모리 어레이의 사이즈를 증가시킴이 없이 (또는 메모리 사이즈를 소량 증가시키는 상태로) 패리티의 증가를 처리한다.
예를 들어, 메모리의 워드 라인은 8K 바이트(KB)의 데이터와 그에 더하여 ECC 데이터 및 헤더 바이트들을 갖는다. 워드 라인은 2KB 섹터들로 분할되고 각각의 섹터는 230 바이트(B)의 페리티를 갖는다. 이 패리티는 (BCH를 사용하여) 150개의 에러들과 같은 특정 개수까지의 에러들을 정정할 수 있게 한다.
개시된 시스템 및 방법은 특정 조건들이 만족될 때 패리티를 선택적으로 증가시킨다. 패리티 증가를 위한 트리거는, 예를 들어, 판독 에러들, 판독 시간에 있어서의 증가를 보여주는 경향(trend), 또는 메모리 마모(wear)를 표시하는 다른 파라미터들일 수 있다. 패리티를 증가시킴으로써, 정정될 수 있는 에러들의 수가 증가되고, 그럼으로써 NAND 메모리와 같은 메모리가 견딜 수 있는 사이클들의 수가 증가한다.
트리거 조건이 발생할 때, 이벤트를 야기한 워드 라인이 엑스트라 패리티(예컨대, 마진(marginal)으로 태그됨)를 위한 후보(candidate)로서 타겟되며, 따라서 마진으로서 태그된 이들 워드 라인들에 대한 에러 정정 능력이 증가한다.
마진 워드 라인에 대해, 섹터들은 1 KB 서브섹터들로 분할(이는 물리적 분할(break)이 아닌 논리적 분할임)되고, 각각의 서브섹터에 대해 230B의 패리티들이 생성된다. 이 경우에, ECC는 더 작은 데이터 패킷에 대해 에러들을 정정할 수 있다. 엑스트라 패리티 바이트들이 이들 패리티들을 위해 따로 특별 블록 세트 내에 저장(save)된다. 이 구조가 도 1-2와 관련하여 기술된다.
이 특별 블록에서, 워드 라인들은 도 1에 도시된 것과 같이 정의될 수 있고, 워드 라인들은 여전히 8K 더하기 오버헤드의 사이즈를 가질 수 있다. 차이점은 2K 섹터들이 어떻게 구조화되는지에 있다. 각각의 2K 섹터는 8x230B 패리티 및 섹터를 위한 노멀 패리티(상기 노멀 패리티 또한 230B일 것이다)로 구성될 것이다. 노멀 패리티는 8x230B 패리티에 대한 ECC를 제공한다.
다른 워드 라인들(도 2와 관련하여 기술된 "패리티 워드 라인")에 대응하는 패리티 데이터를 저장하기 위해 전용된 각각의 워드 라인은 8x4(섹터들)x3(멀티-레벨 셀(MLC) 페이지들)=96 패리티를 수용할 것이다. 각각의 마진 워드 라인은 워드 라인에 제공된 이들 패리티들에 부가하여 추가적인 12개의 패리티들을 생성하도록 엔코딩될 것이다(각각의 섹터는 1개의 엑스트라 패리티를 사용하고; MLC 워드 라인에는 12개의 섹터들이 있다). 따라서 각각의 패리티-워드 라인이 8개의 마진 워드 라인들에 대한 추가의 패리티를 제공할 수 있다.
마진 워드 라인들을 포함하는 블록들은, 판독이 수행될 때, 태그가 엑스트라 패리티를 포인팅 하도록 (예컨대 테이블에서) 태그될 필요가 있다. 이 엑스트라 패리티는 노멀 패리티가 다른 서브섹터를 위한 ECC를 제공하는 동안 서브섹터들 중 하나를 위한 ECC를 제공할 것이다.
본 방법 및 워드 라인 구조는 워드 라인들을 위한 패리티를 필요할 때 선택적으로 증가시킬 수 있고 ECC 기법과 함께 사용될 수 있다(예를 들어, BCH, 리드-솔로몬, 저 밀도 패리티 검사, Goppa, 등). 이 방법은 펌웨어를 통해 기존의 제어기들에 유익하게 채택될 수 있다.
또한, 시스템 레벨에서, 더 작은 데이터 워드 사이즈(1K vs 2K)로 인하여 ECC 시간이 감소되므로, 판독 시간에서 있어서의 저하(degradation)가 없거나 거의 없다.
도 1을 참조하면, 트리거 조건의 검출 후 초기 구성에서 그리고 인핸스드 데이터 무결성 구성에서 워드 라인(102)의 구체적인 예시적 실시예의 도면이 표시되고 일반적으로 도면부호 100으로 지정된다. 초기 구성에서, 워드 라인(102)은 데이터 영역(106) 및 ECC 영역(108)을 포함하는 재프로그램가능한 ECC 페이지(104)를 포함한다. ECC 페이지(104)는 데이터(110)를 포함한다. ECC 영역(108)은 ECC 데이터(112)를 포함한다. 설명을 위하여, ECC 데이터(112)는 패리티 비트들을 포함할 수 있다. 에러 표시자(error indicator)가 임계값을 초과했음을 검출하는 것과 같은 트리거 조건은 워드 라인(102)을 재구성하기 위하여 인핸스 데이터 무결성 동작(114)의 수행을 트리거한다. (트리거 조건의 검출 후) 인핸스드 데이터 무결성 구성에서, 워드 라인(102)은 데이터 영역의 제1 부분(118), 데이터 영역의 제2 부분(120), 및 제2 ECC 데이터(116)를 포함한다.
동작 중에, 데이터(110)가 워드 라인(102)의 데이터 영역(106)으로부터 판독되고 ECC 데이터(112)가 워드 라인(102)의 ECC 영역(108)로부터 판독된다. 구체적인 실시 형태에서, ECC 데이터(112)는 데이터 영역(106)으로부터 판독되는 데이터(110)에 대응한다(즉, ECC 데이터(112)는, 데이터(110)에 잉여적이며 그리고 데이터(110)에서 발생할 수 있는 에러들에 대한 정정 능력을 가능하게 해주는 정보를 포함한다).
임계값 검출을 통해 에러 표시자가 소정의 임계값을 초과함을 결정함으로써와 같이 트리거 조건을 검출함에 응답하여, 인핸스 데이터 무결성 동작(114)이 수행되고 제2 ECC 데이터(116)가 ECC 영역(108)에 저장된다. 제2 ECC 데이터(116)는 데이터 영역(106)의 서브세트에 대응한다(즉, 제2 ECC 데이터(116)는 데이터 영역(118)의 제1 부분에 저장된 제1 데이터의 에러 정정을 가능하게 해주도록 엔코딩되는 정보를 포함하나, 데이터 영역(120)의 제2 부분에 저장된 제2 데이터의 에러 정정을 가능하게 해주는 정보를 포함하지 않는다).
예를 들어, 초기 구성에서, ECC 데이터(112)는 데이터 영역(106)에 대응한다. 에러 표시자가 임계값을 초과함과 같은 특정 조건이 만족됨에 응답하여, 임계값이 초과되게 한 특정 워드 라인이, 타겟(targeted) 워드 라인에 대한 에러 정정 능력을 증가시키기 위한 엑스트라 패리티를 위한 후보로서 타겟될 수 있다. 도 1에 도시된 바와 같이, 소정의 임계값을 초과하는 에러 표시자에 응답하여, 데이터 영역(106)이, 데이터 영역의 제1 부분(118) 및 데이터 영역의 제2 부분(120)과 같은 데이터 부분의 서브섹션들로 논리적으로 분할될 수 있다. 제2 ECC 데이터(116)가 생성되어 ECC 영역(108)에 저장되고; 상기 제2 ECC 데이터(116)는, 초기 구성의 제1 ECC 데이터(112)와 비교하여, 데이터 영역의 서브섹션(106)에 대응한다. 설명을 위하여, 인핸스드 데이터 무결성 구성에서, 제2 ECC 데이터(116)가 데이터 영역의 제1 부분(118)에 대응할 수 있는 반면, 초기 구성에서, 제1 ECC 데이터(112)가 전체 데이터 영역(106)에 대응할 수 있다.
도 2를 참조로, 다른 워드 라인들에 대응하는 ECC 데이터를 포함하는 패리티 워드 라인(202)의 구조의 구체적인 예시적 실시예의 도면이 도시된다. 예를 들어, 패리티 워드 라인(202)은 도 1에 도시된 인핸스드 데이터 무결성 구성을 갖는 메모리 내의 다른 워드 라인들에 대응하는 ECC 데이터의 저장을 위해 전용될 수 있다. 패리티 워드 라인(202)은 복수의 ECC 페이지들을 포함한다. 각각의 ECC 페이지는 ECC 영역(208) 및 복수의 ECC 저장 영역들(214)을 포함할 수 있다. ECC 영역(208)은 ECC 페이지의 나머지 부분에 저장된 데이터를 보호하는 ECC 데이터를 저장할 수 있다(즉, ECC 영역(208) 내의 ECC 데이터가 ECC 저장 영역들(214) 내의 데이터에 대응한다).
ECC 저장 영역(214)은 상기 ECC 저장 영역(214)에 연속적이지 않은 다른 메모리 위치에 대응하는 ECC 데이터(예컨대, 패리티 비트들)를 저장하기 위해 전용된 영역들일 수 있다. 예를 들어, 도 1의 워드 라인(102)을 인핸스드 데이터 무결성 포맷을 갖도록 포맷한 후, ECC 영역(108)에 저장된 제2 ECC 데이터는 상기 ECC 영역(108)에 인접한 데이터 영역의 제1 부분(118) 내의 제1 데이터에 대응한다. 그러나, 제2 ECC 데이터(116)는 데이터 영역의 제2 부분(120) 내의 제2 데이터에 대응하지 않는다. 대신에, 제3 ECC 데이터가 패리티 워드 라인(202)의 ECC 저장 영역들(214) 중 하나에 저장될 수 있다. 제3 ECC 데이터는 데이터 영역의 제2 부분(120) 내의 제2 데이터에 대응할 수 있다. 제3 ECC 데이터는 메모리의 개별 워드 라인 또는 블록에 저장될 수 있다.
각각의 ECC 저장 영역(214)은 도 1의 ECC 영역(108)과 동일한 수의 패리티 비트들을 포함하도록 크기조정될 수 있다. 예를 들어, ECC 영역(108)이 230 개의 패리티 비트들을 저장하도록 크기조정되면, 각각의 ECC 저장 영역(214)이 또한 230 개의 패리티 비트들을 저장하도록 크기조정 될 수 있다. 그러나, 다른 실시예들에서, ECC 저장 영역들(214)은 ECC 영역(108)보다 더 많거나 적은 수의 패리티 비트들을 보유하기 위하여 ECC 영역(108)보다 더 크거나 더 작을 수 있다. 예를 들어, 데이터 영역의 제1 부분(118) 및 데이터 영역의 제2 부분(120)은 동일하게 크기조정되지 않을 수 있다. 다른 예에서, 데이터 영역(106)이 추가적인 ECC 데이터 세트들을 요구하는 3개 또는 그보다 많은 부분들로 논리적으로 파티셔닝될 수 있거나, 또는 추가의 패리티를 사용하는 더 강한(stronger) ECC 기법이 사용될 수 있거나, 또는 이들의 조합이 이용될 수 있다.
도 3을 참조하면, 메모리의 데이터 무결성을 향상시키기 위하여 시스템의 구체적인 예시적인 실시예의 블록도가 도시되고 일반적으로 도면부호(300)로 지정된다. 시스템(300)은 호스트 디바이스(302)에 동작가능하게 결합된 데이터 저장 디바이스(304)를 포함한다. 호스트 디바이스(302)는 모바일 텔레폰, 음악 또는 비디오 재생기, 게임 콘솔, 전자 책 리더(reader), PDA(personal digital assistant), 랩탑 또는 노트북 컴퓨터와 같은 컴퓨터, 임의의 다른 전자 디바이스, 또는 이들의 임의의 조합을 포함할 수 있다. 설명을 위하여, 데이터 저장 디바이스(304)는 Secure Digital SD® 카드, microSD® 카드, miniSD.TM 카드(미국 델라웨어주 윌밍톤 소재의 3D-3C LLC사의 상표), MultiMediaCard.TM (MMC.TM) 카드(미국 버지니아주 알링톤 소재의 JEDEC Solid State Technology Association의 상표), 또는 CompactFlash® (CF) 카드(미국 캘리포니아주 밀피타스 소재의 SanDisk Corporation의 상표)와 같은 메모리 카드일 수 있다. 데이터 저장 디바이스(304)는, 예시적인 예로서, eMMC®(미국 버지니아주 알링톤 소재 JEDEC Solid State Technology Association의 상표) 및 eSD와 같은 임베디드 메모리로서 호스트 디바이스(302)에 결합되도록 구성될 수 있다.
데이터 저장 디바이스(304)는 메모리(314)에 결합된 제어기(306)를 포함한다. 예시적인 예로서, 메모리(314)는 플래시 메모리와 같은 비휘발성 메모리일 수 있다. 플래시 메모리는 NAND 플래시 메모리 또는 NOR 플래시 메모리일 수 있다. 대안적으로, 메모리(314)는 랜덤 액세스 메모리와 같은 휘발성 메모리일 수 있다. 랜덤 액세스 메모리는 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM)일 수 있다. 제어기(306)는 에러 정정 코드(ECC) 엔진(308), 프로세서(312), 및 랜덤 액세스 메모리(RAM)(310)를 포함한다.
메모리(314)는 블록 1(316), 블록 2(320), 및 블록 N(324)과 같은 복수의 블록들을 포함한다. 블록 1(316)은 제1 워드 라인(318)을 갖는 것으로 도시된다. 제1 워드 라인(318)은 에러 표시자가 임계값을 초과하지 않은 경우의 워드 라인이고, 초기 구성(예컨대, 논-인핸스드 데이터 무결성 구성)으로 도시된다. 제1 워드 라인(318)은 데이터 영역(336), ECC 영역(334), 및 섹터 영역(332)을 포함한다 .구체적인 실시예에서, 섹터 영역(332)은 데이터 영역(336) 및 ECC 영역(334)을 포함한다.
블록 2(320)는 제2 워드 라인(322)을 갖는 것으로서 도시된다. 제2 워드 라인(320)은 트리거 조건이 검출되는(예컨대, 에러 표시자가 임계값을 초과한) 워드 라인이고 인핸스드 데이터 무결성 구성으로 도시된다. 예를 들어, 제2 워드 라인(322)로부터의 데이터 판독 동안에 발생하는 에러들의 수가 임계 에러 수를 초과할 수 있고, 이는 제2 워드 라인(322)을 마진 워드 라인으로서 태그되게 한다. 제2 워드 라인(322)은 데이터 영역의 제1 부분(340), 데이터 영역의 제2 부분(344), 및 제2 ECC 영역(338)을 포함한다.
블록 N(324)은 ECC 저장 워드 라인(326)을 갖는 것으로서 도시된다. ECC 저장 워드 라인(326)은, 도 2의 패리티 워드 라인(202)과 관련하여 설명된 구조와 같이 ECC 데이터를 저장하기 위하여 제어기(306)에 의해 사용될 수 있다.
메모리(314)는 로그 파일(328) 및 테이블(330)을 더 포함한다. 로그 파일(328)은 에러 모니터링 데이터(370)를 포함한다. 에러 모니터링 데이터(370)는 기입/소거(write/erase) 사이클들의 수(372), 적어도 하나의 임계값(376), 에러 데이터(378), 및 다른 모니터링된 데이터(374)를 포함한다. 에러 데이터(378)는 판독 에러의 증가를 보여주는 경향, 판독 시간의 증가를 보여주는 경향, 및 에러 수에 대응하는 데이터를 포함할 수 있다.
테이블(330)은 블록 엔트리(382), 워드 라인 엔트리(384), 섹터 엔트리(386), 및 ECC 위치 엔트리(388)를 포함한다. 테이블(330)은 인덱스(380) 및 엔트리(390)를 더 포함한다. 인핸스드 데이터 무결성 구성을 갖는 워드 라인들을 포함하는 메모리(314) 내의 블록들(예컨대 블록 2(230))이 테이블(330) 내에 인덱스되어 메모리 판독이 그러한 워드 라인들 상에서 수행될 때, 엔트리(390)와 관련된 인덱스(380)가 엑스트라 패리티를 포인팅한다. 따라서, 테이블(330)은 인핸스드 데이터 무결성 포맷을 갖는 워드 라인 섹터들과 ECC 저장 영역들 사이의 관련을 표시하는 정보를 저장할 수 있다. 예를 들어, 엔트리(390)는, 제2 부분(344)과 ECC 저장 영역(348) 사이에 화살표(352)로서 도시된, 제2 부분(344)과 ECC 저장 영역(348) 사이의 관련(association)을 표시하는 정보를 저장할 수 있다.
동작 중에, 제어기(306)는 메모리(314)에 저장될 데이터 및 제어기(306)로부터 실행될 명령들을 포함하는, 호스트 디바이스(302)로부터 수신된 데이터 및 명령들을 통신하도록 구성될 수 있다. 제어기(306)는, 또한 상기 제어기(306) 내에서의 디코딩 및 사용을 위하여 또는 호스트 디바이스(302)로의 전송을 위하여 ECC 엔진(308)에 제공될, 하나 이상의 데이터 블록들 및 상기 데이터 블록들에 대응하는 패리티 비트들과 같은 ECC 엔코딩된 데이터에 대한 메모리(314)로부터의 데이터 검색에 부가하여, 메모리(314)에의 저장 및 ECC 엔진(308)에서의 데이터 엔코딩을 가능하게 해주도록 구성된다.
제어기(306)는 또한 데이터 저장 디바이스(304)의 동작 중에 에러 모니터링 데이터를 유지 및 갱신하도록 더 동작한다. 예를 들어, 제어기(306)는 각각의 블록에서 발생하는 기입 또는 소거의 각 검출 후 기입/소거 사이클들(372)의 카운트를 증분시킬 수 있다. 설명을 위하여, 블록 2(320)가 소거될 때마다, 블록 2(320)를 위한 기입/소거 사이클들의 카운트(372)에 대응하는 에러 모니터링 데이터(370)의 일부가 증분될 수 있다. 제어기(306)는 블록, 워드 라인, 또는 메모리(314)의 다른 영역이 특정 임계값(376)을 초과하는 에러 표시자를 갖는지를 결정하기 위하여 하나 이상의 임계값(376)에 대해, 에러 모니터링 데이터(370) 내의 에러 표시자들의 비교를 수행한다. 임계값(376)을 초과하는 에러 표시자와 관련된, 블록 또는 워드 라인과 같은 메모리(314)의 영역에 응답하여, 제어기(306)는 영향받은 영역(affected region)을, 도 1과 관련하여 기술된 것과 같은 향상된 데이터 무결성 구성으로 변환하도록 동작한다.
도시된 바와 같이, 제어기(306)는 섹터 내의 데이터 영역으로부터 데이터를 판독하고, 섹터에 대응하는 ECC 영역으로부터 ECC 데이터를 판독하고, 상기 데이터 영역을 제1 부분 및 제2 부분으로 논리적으로 파티셔닝하고, 제2 ECC 데이터를 생성할 때 제2 부분으로부터의 비트들을 포함함이 없이 제1 부분 내의 비트들에 대응하는 제2 ECC 데이터를 생성함으로써 워드 라인의 데이터 저장 포맷을 갱신하도록 구성될 수 있다. 제2 ECC 데이터는 워드 라인의 ECC 영역에 기입될 수 있고, 제1 데이터 부분은 데이터 영역의 제1 부분으로 판독될 수 있고, 제2 데이터 부분은 데이터 영역의 제2 부분으로 판독될 수 있다. 추가적으로, 데이터 영역의 제2 부분에 대응하는 데이터가 ECC 엔진(308)에 제공되어 제3 ECC 데이터를 생성할 수 있다. 제3 ECC 데이터는 데이터 영역과 연속적이지 않을 수 있는 별개의 위치에 저장될 수 있다. 예를 들어, 제3 ECC 데이터가 ECC 저장 워드 라인(326)에 저장될 수 있고, 제3 ECC 데이터의 ECC 위치를 표시하기 위하여 테이블(330) 내에서 엔트리(390)를 생성 또는 갱신함으로써와 같이, 제3 ECC 데이터의 위치의 표시가 테이블(330)에 저장될 수 있다. 엔트리(390)는 인핸스드 데이터 무결성 포맷으로 재포맷되는 메모리의 대응 부분(예컨대, 제2 부분(344))을 식별하기 위하여 인덱싱될 수 있다.
호스트 디바이스(302)로부터 데이터를 기입하라는 명령을 수신함에 응답하여, 제어기(306)는 호스트 디바이스(302)로부터 사용자 데이터를 수신하고 그리고 상기 사용자 데이터가 저장될 메모리(314) 내의 위치를 결정하도록 구성될 수 있다. 사용자 데이터가 저장될 메모리의 위치 부분은 워드 라인(322)과 같은 인핸스드 데이터 무결성 부분으로서 포맷되는 부분이고, 제어기(306)는, 사용자 데이터의 제2 부분을 ECC 엔진(308)에 제공함이 없이, 사용자 데이터의 제1 부분(즉, 감소된 사이즈 부분)을 ECC 엔진(308)에 제공할 수 있다. ECC 엔진(308)은 사용자 데이터의 감소된 사이즈 부분에 대한 ECC 패리티 비트들의 풀 세트를 생성할 수 있다. 추가로, 제어기(306)는, 사용자 데이터의 제1 부분을 위한 에러 정정 능력을 제공함이 없이 사용자 데이터의 제2 부분에 대응하는 또 다른 ECC 데이터 세트(즉, 제2 ECC 데이터)를 생성하기 위하여, 사용자 데이터의 제1 부분과는 별개로 ECC 엔진(308)에 사용자 데이터의 제2 부분을 제공할 수 있다. 제어기(306)는 사용자 데이터의 제1 부분을 제1 부분(340)과 같은 섹터의 제1 부분에 기입하고, 사용자 데이터의 제2 부분을 제2 부분(344)와 같은 섹터의 제2 부분에 기입하고, 제1 부분에 대응하는 ECC 데이터를 ECC 영역(338)에 기입하고 그리고 데이터 영역의 제2 부분(344)에 대응하는 ECC 데이터의 제2 부분을 ECC 저장 워드 라인(326)의 ECC 저장 위치(348)와 같은 ECC 저장 위치에 기입하도록 되어 있을 수 있다. 추가로, 제어기(306)는, 제2 부분의 ECC 데이터의 위치와 관련하여 저장될, 워드 라인(322)의 부분들(340, 3440)의 위치에 대응하는 엔트리와 같은, 워드 라인(322)에 대응하는 엔트리를 갱신하기 위하여 테이블(330)에 액세스하도록 구성될 수 있다. 그러한 ECC 데이터는 별개의 ECC 영역(348)에 저장된다.
메모리(314)로부터 데이터를 판독하라는 요청을 수신함에 응답하여, 제어기(306)는, 데이터를 저장하는 위치가 워드 라인(322)과 같은 인핸스드 데이터 무결성 포맷으로 포맷됨을 결정한 후 ECC 데이터를 검색하기 위하여 하나 이상의 추가적인 ECC 저장 위치들이 액세스되어야만 하는지를 결정하기 위해 테이블(330)에 액세스하도록 구성될 수 있다. 메모리로부터 검색할 데이터가 워드 라인(318)과 같은 인핸스드 데이터 무결성 포맷에 따라 포맷되지 않는 메모리의 영역에 저장될 때, 제어기(306)는 섹터(322)와 같은 섹터를 판독하고, 데이터 정정 및 사용자 데이터 복구를 위하여, 데이터 영역(336)으로부터 그리고 ECC 영역(344)으로부터의 데이터를 포함하는 섹터(332)로부터의 데이터를 ECC 엔진(308)에 제공하도록 구성될 수 있다. 판독의 결과가 호스트 디바이스(302)에 제공될 수 있다. 대안적으로, 요청된 데이터가 워드 라인(322)와 같은 인핸스드 데이터 무결성 포맷에 따라 포맷되는 메모리(314)의 부분에 저장될 때, 제어기(306)는 예를 들어, 부분(340) 및 (344)과 같은 제1 부분 및 제2 부분을 포함하는 요청된 데이터를 저장하는 ECC 섹터, 및 ECC 영역(338)과 같은 상기 요청된 데이터와 관련된 ECC 영역을 판독하도록 구성될 수 있다. 추가로, 제어기(306)는 N번째 블록(324)의 ECC 저장 워드 라인(326)에 있는 ECC 위치(348)와 같은, 상기 요청된 데이터에 대응하는 또 다른 ECC 위치를 찾기 위하여 테이블(330)에 인덱스를 제공하도록 되어 있다. 제어기(306)는 제1 에러 정정 동작에서, ECC 영역(338)으로부터 판독된 ECC 데이터와 함께 제1 부분(340)으로부터 판독된 데이터를 ECC 엔진(308)에 제공하고, 그리고 제2 에러 정정 동작에서, 단일 ECC 코드워드로서 ECC 저장 영역(348_으로부터 판독된 ECC 데이터와 함께 제2 부분(344)으로부터 판독된 데이터를 ECC 엔진(308)에 제공하도록 구성될 수 있다. 제1 및 제2 ECC 동작들로부터 ECC 엔진(308)에 의해 제공된 에러 정정된 데이터는 요청된 데이터를 복원(restore)하기 위히여 결합될 수 있고, 상기 요청된 데이터가 호스트 디바이스(302)에 제공될 수 있다.
제어기(306)는 따라서 초기에 인핸스드 데이터 무결성 포맷이 아닌 포맷으로 메모리(314)(또는 메모리의 부분들)를 유지할 수 있고, 인핸스드 데이터 무결성 포맷으로 선택적으로 천이(transition)될 수 있는 특정 워드 라인들에 대한 ECC 데이터의 저장을 위해, ECC 저장 워드 라인(326)과 같은 하나 이상의 워드 라인들을 예약(reserve)할 수 있다. 동작 중에, 제어기(306)는 에러 모니터링 데이터(370)를 유지 및 갱신할 수 있고, 블록 또는 워드 라인과 같은 메모리(314)의 영역이 하나 이상의 소정 임계값(376)을 초과하는 에러 표시자와 관련되는지 여부를 결정하기 위하여, 주기적으로, 또는 트리거링 이벤트들에 따라, 기입/소거 사이클들(372) 또는 에러 데이터(378)의 카운트와 같은 에러 표시자들을 하나 이상의 소정 임계값들(376)과 비교할 수 있다.
에러 표시자가 소정의 임계값들(376) 중 하나 이상을 초과함을 결정함에 응답하여, 제어기(306)는 하나 이상의 워드 라인들 또는 블록들을 인핸스드 데이터 무결성 포맷으로 선택적으로 천이시키도록 구성될 수 있다. 결과적으로, ECC 엔진(308)의 에러 정정 능력을 초과하는 예상 에러율(expected error rate)에 근접할 수 있는 메모리의 영역들을 인핸스드 데이터 무결성 포맷으로 천이시킴으로써, 디바이스 마모에 의한 에러들과 같은 에러들을 정정하는 능력이 향상될 수 있으므로, 데이터 저장 디바이스(304)의 이용가능 수명이 연장될 수 있다.
메모리(314)가 로그 파일(328)과는 별개의 테이블(330)을 포함하는 것으로 도시되고 있으나, 다른 실시예에서, 테이블(330)이 로그 파일(328) 내에 저장될 수 있다. 추가로, 로그 파일(328)이 에러 모니터링 데이터(370)를 포함하는 연속적인 파일로서 도시되나, 다른 실시예들에서, 에러 모니터링 데이터(370)는 로그 파일(328)에 저장되지 않을 수 있고, 그 대신에, 메모리(314)에, RAM(310)에, 제어기(306)가 액세스할 수 있는 하나 이상의 다른 메모리들에, 또는 이들의 임의의 조합에 저장될 수 있다.
데이터 저장 디바이스(304)는 테이블(330)을 포함하는 것으로서 도시되나, 다른 실시예들에서, 데이터 저장 디바이스(304)는 테이블(330)을 포함하지 않을 수 있고 대신에, 제어기(306)로 하여금 인핸스드 무결성 포맷으로 천이된 워드 라인의 부분들에 대한 ECC 데이터의 위치들을 트랙킹(tracking) 및 검색(retrieving)할 수 있게 하는 하나 이상의 다른 메커니즘들을 포함할 수 있다. 예를 들어, 프로세서(312)는 포인터들의 세트를 하나 이상의 레지스터들 또는 제어기(306)가 액세스할 수 있는 다른 메모리 내에 저장할 수 있다.
도 4를 참조로, 메모리의 데이터 무결성을 향상시키는 방법의 제1 예시적인 실시예가 도시되며 일반적으로 도면부호 400으로 지정되어 있다. 방법(400)은 도 3의 데이터 저장 디바이스(304)의 제어기(306)에 의해서와 같이, 메모리 디바이스의 제어기에서 수행될 수 있다. 방법(400)은 데이터를 판독하라는 명령을 수신하는 단계(단계 402)를 포함한다.
본 방법은 또한 워드 라인의 데이터 영역으로부터 데이터를 판독하는 단계 및 워드 라인의 ECC 영역으로부터 제1 ECC 데이터를 판독하는 단계를 포함한다(단계 404). 예를 들어, 데이터(110)는 워드 라인(102)의 데이터 영역(106)으로부터 판독될 수 있고, ECC 데이터(112)는 워드 라인(102)의 ECC 영역(108)으로부터 판독될 수 있다.
에러 표시자가 임계값을 초과함을 결정하는 것과 같은 트리거링 조건에 응답하여(단계 406), 제2 ECC 데이터(예컨대, 제2 ECC 데이터(116))가 ECC 영역에 저장되며, 여기서 제2 ECC 데이터는 제1 ECC 데이터보다 작은 데이터 영역 부분에 대응한다(단계 408). 예를 들어, 데이터 영역(106)이 데이터 영역의 제1 부분(118) 및 데이터 영역의 제2 부분(120)과 같은 데이터 부분들로 논리적으로 분할될 수 있다. 제2 ECC 데이터(116)가 ECC 영역에 저장될 수 있다. 제2 ECC 데이터(116)는 제1 ECC 데이터(112)와 관련된 데이터보다 작은 데이터 영역 부분(106)에 대응한다.
또 다른 실시예에서, 도 3의 데이터 저장 디바이스(304)의 제어기(306)에 의한 것과 같은 방법이 수행될 수 있다. 상기 방법은 데이터 영역으로부터 데이터를 그리고 ECC 영역으로부터 제1 ECC 데이터를 판독하는 것을 포함할 수 있다. 예를 들어, 데이터 영역은 도 1의 워드 라인(102)의 데이터 영역(106)일 수 있고, ECC 영역은 도 1의 워드 라인(102)의 ECC 영역(106)일 수 있다.
본 방법은, 소정의 임계값을 초과하는 에러 표시자에 응답하여, 데이터의 제1 부분에 대응하는 제2 ECC 데이터를 생성하는 단계를 더 포함할 수 있다. 예를 들어, 제2 ECC 데이터는, 데이터 영역(118)의 제1 부분 내의 데이터 1과 같은, 데이터의 제1 부분에 대응하는 도 1의 제2 ECC 데이터일 수 있다.
본 방법은 데이터의 제2 부분에 대응하는 제3 ECC 데이터를 생성하는 단계를 더 포함할 수 있다. 예를 들어, 제3 ECC 데이터는, 데이터 영역(120)의 제2 부분 내의 데이터 2와 같은, 데이터의 제2 부분에 대응하는 도 2의 ECC 저장 영역들(214) 중 하나 내의 ECC 데이터일 수 있다. 본 방법은 데이터의 제1 부분, 데이터의 제2 부분, 제1 ECC 데이터, 및 제2 ECC 데이터를 메모리에 저장하는 단계를 포함할 수 있다.
도시된 실시예들은 메모리 디바이스에 있는 데이터 저장소와 관련하여 기술되나, 다른 실시예들에서, 본 발명의 양상들이 노이즈있는 채널(noisy channel)들 상에서의 전송을 위해 에러 정정 코딩을 사용하는 무슨 통신 시스템과 같은 하나 이상의 통신 시스템에 적용될 수 있다. 예를 들어, 데이터 전송기는, 전송 채널을 따라 예측되는 또는 겪게되는 노이즈의 양을 추정하도록 구성될 수 있고, 전송을 위한 ECC 코드워드의 사용자 데이터 사이즈를 감소시킴으로써 그리고 전송시 다른 곳에 제공되는 추가의 ECC 패리티 비트들을 갖는 추가의 ECC 엔코딩을 제공함으로써 전송되는 데이터의 ECC 데이터 무결성을 증가시킬 수 있다. 추가로, 무선 통신 시스템 내의 수신기는 무선 채널을 따라 사용자 데이터 및 패리티 비트들을 포함하는 ECC 코드워드 데이터를 수신하도록 구성될 수 있고, 그리고 ECC 코드워드 데이터를 논리적으로 파티셔닝하기 위하여 인핸스드 데이터 무결성 포맷이 사용되는 때를 검출하도록 구성될 수 있다. ECC 코드워드 데이터를 논리적으로 파티셔닝하는 것은 사용자 데이터의 제1 논리 부분에 대해 제1 ECC 데이터의 제1 ECC 동작에 의해, 그리고 노이즈 있는 채널 전송 조건 동안 인핸스드 에러 복구를 위하여 사용자 데이터의 제2 부분으로 보조 ECC 데이터를 사용하는 제2 ECC 동작에 의해, 개별 데이터 에러 정정 복구를 가능하게 한다.
본 명세서에 기술된 다양한 구성 요소들이 개괄적으로 블록 구성요소들로서 도시 및 설명되나, 그러한 구성요소들은 도 3의 데이터 저장 디바이스로 하여금 그러한 구성요소들로 인한 특정 기능들을 수행할 수 있게 하도록 구성된 하나 이상의 마이크로프로세서, 상태 머신, 또는 다른 회로들을 포함할 수 있다. 예를 들어, 도 3의 제어기(306)는 에러 표시자가 임계값을 초과함을 결정함에 응답하여, 상기 제어기(306)로 하여금 메모리의 데이터 무결성과 같은 트리거 조건을 향상시킬 수 ?세 하는 하드웨어 제어기, 상태 머신, 로직 회로, 또는 다른 구조와 같은 물리적 구성요소들을 나타낼 수 있다.
에러 표시자들(372, 378)을 임계값(376)과 비교하는 것, 워드라인 또는 다른 메모리 영역을 인핸스드 데이터 무결성 포맷으로 변환하는 것, 그리고 그러한 인핸스드 데이터 무결성 포맷 영역으로부터 데이터를 판독할 때 추가의 ECC 영역들(예컨대, ECC 저장 영역(346)에 선택적으로 액세스하는 것, 또는 이들의 임의의 조합이, 감소된 레이턴시를 위한 전용 하드웨어(예컨대, 제어기(306) 내의 회로)로서 구현될 수 있다. 대안적으로, 제어기(306)의 인핸스드 데이터 무결성 기능의 여러 양상들 중 하나가 각각의 기능을 수행하도록 프로그램된 프로세서(312)와 같은 마이크로프로세서 또는 마이크로제어기를 사용하여 구현될 수 있다. 특정 실시예에서, 메모리(314)는 프로세서(312)에 의해 실행되는 실행가능한 명령어들을 포함하며, 상기 명령어들은 MLC 플래시 메모리와 같은 메모리(314)에 저장된다. 대안적으로, 또는 추가적으로, 프로세서(312)에 의해 실행되는 실행가능한 명령들이, RAM(310)에 또는 별도의 판독 전용 메모리(ROM)에와 같이, 메모리(314)의 부분이 아닌 별도의 메모리 위치에 저장될 수 있다.
구체적인 실시예에서, 데이터 저장 디바이스(304)는 하나 이상의 외부 디바이스들에 선택적으로 결합되도록 구성된 휴대형 디바이스일 수 있다. 그러나, 다른 실시예들에서, 데이터 저장 디바이스(304)는, 휴대형 통신 디바이스의 하우징 내에서와 같은, 하나 이상의 호스트 디바이스들 내에 부착 또는 임베딩될 수 있다. 예를 들어, 데이터 저장 디바이스(304)는 무선 전화기, PDA(personal digital assistant), 게임 디바이스 또는 콘솔, 휴대형 네비게이션 디바이스, 또는 내부 비휘발성 메모리를 사용하는 다른 디바이스와 같은 패키지된 디바이스 내에 있을 수 있다. 구체적인 실시예에서, 데이터 저장 디바이스(304)는 플래시 메모리(예컨대, NAND, NOR, 멀티-레벨 셀(MLC), 분할 비트-라인 NOR(DINOR), AND, 높은 용량성 결합 비율(HiCR; high capacitive coupling ratio), 비대칭 비접촉 트랜지스터(ATC), 도는 다른 플래시 메모리들), 소거가능한 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그램가능 판독 전용 메모리(EEPROM), 판독 전용 메모리(ROM), 일회 프로그램가능 메모리(OTP), 또는 임의의 다른 메모리 타입과 같은 비휘발성 메모리를 포함한다.
본 명세서에 기술된 실시예들의 예는 다양한 실시예들에 대한 개괄적인 이해를 제공하려 의도된 것이다. 다른 실시예들이 본 개시로부터 이용 및 유도될 수 있으며, 본 개시의 범주로부터 벗어남이 없이 구조적 및 논리적 대체 및 변경이 이루어질 수 있다. 본 개시는 다양한 실시예들의 임의의 그리고 모든 후속적인 적응 및 변경을 포함하도록 의도된 것이다. 따라서, 본 개시 및 도면은 제한적인 것이라기 보다는 예시적인 것으로서 여겨져야 한다.
위에 개시된 내용은 예시적인 것이고, 제한적인 것이 아니며, 첨부된 청구항들은 모든 그러한 수정, 향상, 및 본 개시의 범주에 속하는 다른 실시예들을 포함하도록 의도된 것이다. 따라서, 법에 의해 허용되는 최대 범위까지, 본 발명의 범주는 하기의 청구항들 및 그 등가의 허용가능한 광의의 해석에 의해 결정되며, 상술한 설명에 의해 제한 또는 한정되지 않아야 한다.

Claims (20)

  1. 메모리 내의 데이터의 에러 정정을 위한 방법으로서,
    메모리의 워드 라인의 데이터 영역으로부터 데이터를 판독하는 단계와;
    상기 워드 라인의 ECC 영역으로부터 제1 에러 정정 코딩(ECC) 데이터를 판독하는 단계와, 상기 제1 ECC 데이터는 상기 데이터 영역으로부터 판독된 상기 데이터의 에러 정정을 가능하게 하는 정보를 포함하고;
    에러 표시자(error indicator)가 임계값(threshold)을 초과함을 결정한 후, 상기 데이터 영역을 적어도 제1 부분 및 제2 부분으로 논리적으로 분할하는 단계와;
    상기 ECC 영역에 제2 ECC 데이터를 저장하는 단계와, 상기 제2 ECC 데이터는 상기 데이터 영역의 상기 제1 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보를 포함하나 상기 데이터 영역의 상기 제2 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보는 포함하지 않고; 그리고
    제3 ECC 데이터를 상기 메모리에 저장하는 단계를 포함하며, 상기 제3 ECC 데이터는 상기 데이터 영역의 상기 제2 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보를 포함하나 상기 데이터 영역의 상기 제1 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보는 포함하지 않는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  2. 제1 항에 있어서, 상기 제3 ECC 데이터는 ECC 저장(storage) 전용의(dedicated) 다른(another) 워드 라인에 저장되는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  3. 제1 항에 있어서, 상기 메모리 내의 상기 제3 ECC 데이터의 위치를 상기 데이터 영역의 상기 제2 부분과 관련(association)시키도록 테이블(table)을 갱신하는 단계를 더 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  4. 제1 항에 있어서,
    상기 메모리로부터 상기 데이터를 판독하라는 요청을 수신하는 단계와; 그리고
    상기 ECC 영역이 아닌 하나 이상의 ECC 저장 위치들이 상기 데이터 영역과 관련되어 있는지 여부를 결정하는 단계를 더 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  5. 제4 항에 있어서,
    상기 ECC 영역이 아닌 다른 ECC 저장 위치가 상기 데이터 영역과 관련되어 있지 않음을 결정함에 응답하여, 상기 데이터 영역으로부터의 상기 데이터 및 상기 ECC 영역으로부터의 상기 제1 ECC 데이터를 ECC 엔진에 제공하는 단계를 더 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  6. 제4 항에 있어서, 상기 ECC 영역이 아닌 ECC 저장 위치가 상기 데이터 영역과 관련되어 있음을 결정함에 응답하여,
    제1 에러 정정 동작을 수행하기 위하여, 상기 데이터 영역의 상기 제1 부분에 저장된 데이터 및 상기 ECC 영역으로부터의 상기 제2 ECC 데이터를 ECC 엔진에 제공하는 단계와; 그리고
    제2 에러 정정 동작을 수행하기 위하여, 상기 데이터 영역의 상기 제2 부분에 저장된 데이터 및 상기 ECC 저장 위치로부터의 상기 제3 ECC 데이터를 상기 ECC 엔진에 제공하는 단계를 더 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  7. 제6 항에 있어서, 상기 요청은 상기 메모리를 포함하는 데이터 저장 디바이스에 동작적으로 결합되는 호스트 디바이스로부터 수신되며,
    상기 제1 에러 정정 동작의 제1 에러 정정된 데이터와 상기 제2 에러 정정 동작의 제2 에러 정정된 데이터를 결합하여 결합된 데이터를 형성하는 단계와; 그리고
    상기 결합된 데이터를 상기 호스트 디바이스에 제공하는 단계를 더 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  8. 제4 항에 있어서, 상기 ECC 영역이 아닌 하나 이상의 ECC 저장 위치들이 상기 워드 라인의 상기 데이터 영역과 관련되어 있는지 여부를 결정하는 단계는, 상기 워드 라인의 상기 데이터 영역에 대응하는 엔트리를 찾기 위하여 테이블에 액세스하는 단계를 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  9. 제1 항에 있어서, 상기 에러 표시자는 상기 워드 라인에 대응하는 기입/소거 사이클들(write/erase cycles)의 카운트를 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  10. 제1 항에 있어서, 상기 에러 표시자는 판독 에러들의 증가, 판독 시간의 증가, 또는 에러들의 수에 대응하는 데이터를 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  11. 메모리 내의 데이터의 에러 정정을 위한 방법으로서,
    메모리를 구비한 데이터 저장 디바이스에서,
    데이터 영역으로부터 데이터를 판독하는 단계와;
    상기 메모리의 ECC 영역으로부터 제1 ECC(error correction coding) 데이터를 판독하는 단계와, 상기 제1 ECC 데이터는 상기 데이터 영역으로부터 판독된 상기 데이터의 에러 정정을 가능하게 하는 정보를 포함하고; 그리고
    에러 표시자가 임계값을 초과함에 응답하여,
    상기 데이터 영역을 적어도 제1 부분 및 제2 부분으로 논리적으로 분할하는 단계와;
    제2 ECC 데이터를 생성하는 단계와, 상기 제2 ECC 데이터는 상기 데이터 영역의 상기 제1 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보를 포함하나 상기 데이터 영역의 상기 제2 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보는 포함하지 않고; 그리고,
    제3 ECC 데이터를 생성하는 단계와, 상기 제3 ECC 데이터는 상기 데이터 영역의 상기 제2 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보를 포함하나 상기 데이터 영역의 상기 제1 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보는 포함하지 않으며; 그리고
    상기 데이터의 상기 제1 부분, 상기 데이터의 상기 제2 부분, 상기 제3 ECC 데이터, 및 상기 제2 ECC 데이터를 상기 메모리에 저장하는 단계를 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  12. 제11 항에 있어서, 상기 제3 ECC 데이터는 패리티 워드 라인에 저장되는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  13. 제11 항에 있어서, 상기 에러 표시자가 상기 임계값을 초과함에 응답하여, 상기 메모리 내의 상기 제3 ECC 데이터의 위치를 상기 데이터 영역과 관련시키도록 테이블을 갱신하는 단계를 더 포함하는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  14. 제11 항에 있어서, 상기 데이터 저장 디바이스는 또한,
    상기 메모리로부터 상기 데이터를 판독하라는 요청을 수신하고; 그리고
    상기 ECC 영역이 아닌 하나 이상의 ECC 저장 위치들이 상기 데이터 영역과 관련되어 있는지를 결정하도록 된 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  15. 제11 항에 있어서,
    상기 데이터 저장 디바이스는, 상기 데이터 영역에 저장된 데이터를 ECC 엔진에 제공함으로써 상기 제1 ECC 데이터를 생성하는 단계를 더 수행하며;
    상기 제2 ECC 데이터는 상기 데이터 영역의 상기 제2 부분에 저장된 데이터 없이 상기 데이터 영역의 상기 제1 부분에 저장된 데이터를 상기 ECC 엔진에 제공함으로써 생성되고; 그리고
    상기 제3 ECC 데이터는 상기 데이터 영역의 상기 제1 부분에 저장된 데이터 없이 상기 데이터 영역의 상기 제2 부분에 저장된 데이터를 상기 ECC 엔진에 제공함으로써 생성되는 것을 특징으로 하는 메모리 내의 데이터의 에러 정정을 위한 방법.
  16. 데이터 저장 디바이스로서,
    워드 라인을 포함하는 메모리와, 상기 워드 라인은 데이터 영역 및 상기 데이터 영역에 대응하는 에러 정정 코딩(ECC) 영역을 갖고; 그리고
    제어기를 포함하며, 상기 제어기는,
    상기 데이터 영역에 데이터를 기입하고,
    에러 표시자가 임계값을 초과하지 않을 때, 상기 데이터에 대응하는 제1 ECC 데이터를 상기 ECC 영역에 기입하고, 그리고
    상기 에러 표시자가 상기 임계값을 초과할 때, 상기 데이터 영역을 적어도 제1 부분 및 제2 부분으로 논리적으로 분할하고, 제2 ECC 데이터를 상기 ECC 영역에 기입하고, 그리고 제3 ECC 데이터를 다른(another) 워드 라인에 기입하도록 되어 있으며, 상기 제2 ECC 데이터는 상기 데이터 영역의 상기 제1 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보를 포함하나 상기 데이터 영역의 상기 제2 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보는 포함하지 않고, 그리고 상기 제3 ECC 데이터는 상기 데이터 영역의 상기 제2 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보를 포함하나 상기 데이터 영역의 상기 제1 부분에 저장된 데이터의 에러 정정을 가능하게 하는 정보는 포함하지 않는 것을 특징으로 하는 데이터 저장 디바이스.
  17. 제16 항에 있어서, 상기 데이터 저장 디바이스는 ECC 엔진을 더 포함하고, 상기 제어기는 상기 제1 ECC 데이터를 생성하기 위하여 상기 데이터 영역의 데이터를 상기 ECC 엔진에 제공하도록 되어 있고, 그리고 상기 제어기는 상기 제2 ECC 데이터를 생성하기 위하여 상기 데이터 영역의 상기 제2 부분에 저장된 데이터 없이 상기 데이터 영역의 상기 제1 부분에 저장된 데이터를 상기 ECC 엔진에 제공하고 그리고 상기 제3 ECC 데이터를 생성하기 위하여 상기 데이터 영역의 상기 제1 부분에 저장된 데이터 없이 상기 데이터의 상기 데이터 영역의 상기 제2 부분에 저장된 데이터를 상기 ECC 엔진에 제공하도록 된 것을 특징으로 하는 데이터 저장 디바이스.
  18. 제16 항에 있어서, 상기 제어기는 또한 상기 메모리 내의 상기 제3 ECC 데이터의 위치를 상기 워드 라인의 상기 데이터 영역과 관련시키도록 테이블을 갱신하도록 된 것을 특징으로 하는 데이터 저장 디바이스.
  19. 제18 항에 있어서, 상기 제어기는 또한 상기 메모리로부터 상기 데이터를 판독하라는 요청을 수신함에 응답하여, 상기 ECC 영역이 아닌 하나 이상의 ECC 저장 위치들이 상기 워드 라인의 상기 데이터 영역과 관련되어 있는지를 결정하기 위해 상기 테이블에 액세스하도록 된 것을 특징으로 하는 데이터 저장 디바이스.
  20. 제19 항에 있어서, 상기 제어기는, 상기 제3 ECC 데이터의 위치가 상기 워드 라인의 상기 데이터 영역과 관련 있음을 결정함에 응답하여, 제1 에러 정정 동작과관련하여 상기 데이터 영역의 상기 제1 부분에 저장된 데이터 및 상기 제2 ECC 데이터를 상기 ECC 엔진에 제공하고, 그리고 제2 에러 정정 동작과 관련하여 상기 데이터 영역의 상기 제2 부분에 저장된 데이터 및 상기 제3 ECC 데이터를 상기 ECC 엔진에 제공하고, 그리고 상기 제1 에러 정정 동작에 관련된 에러 정정된 데이터 와 상기 제2 에러 정정 동작에 관련된 에러 정정된 데이터를 결합하도록 된 것을 특징으로 하는 데이터 저장 디바이스.
KR1020137009463A 2010-10-01 2011-09-29 데이터 엔코딩 시스템 및 방법 KR101317720B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US38910010P 2010-10-01 2010-10-01
US61/389,100 2010-10-01
US13/246,521 US8341498B2 (en) 2010-10-01 2011-09-27 System and method of data encoding
US13/246,521 2011-09-27
PCT/US2011/053885 WO2012044766A1 (en) 2010-10-01 2011-09-29 System and method of data encoding

Publications (2)

Publication Number Publication Date
KR20130060321A KR20130060321A (ko) 2013-06-07
KR101317720B1 true KR101317720B1 (ko) 2013-10-11

Family

ID=44774183

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137009463A KR101317720B1 (ko) 2010-10-01 2011-09-29 데이터 엔코딩 시스템 및 방법

Country Status (4)

Country Link
US (2) US8341498B2 (ko)
KR (1) KR101317720B1 (ko)
TW (1) TW201230054A (ko)
WO (1) WO2012044766A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130047056A1 (en) * 2009-05-05 2013-02-21 Lite-On It Corporation Flash memory device with rectifiable redundancy and method of controlling the same
US8560898B2 (en) * 2009-05-14 2013-10-15 Mediatek Inc. Error correction method and error correction apparatus utilizing the method
US9141473B2 (en) * 2011-03-25 2015-09-22 Samsung Electronics Co., Ltd. Parallel memory error detection and correction
KR20130012737A (ko) * 2011-07-26 2013-02-05 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이를 포함하는 반도체 시스템
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
EP2672387B1 (en) 2012-06-04 2018-08-01 Amplidata NV A distributed object storage system
TWI521528B (zh) * 2012-08-08 2016-02-11 群聯電子股份有限公司 記憶體儲存裝置、其記憶體控制器與資料處理方法
CN103631670B (zh) * 2012-08-22 2018-08-31 群联电子股份有限公司 存储器储存装置、存储器控制器与数据处理方法
US9619318B2 (en) * 2013-02-22 2017-04-11 Intel Deutschland Gmbh Memory circuits, method for accessing a memory and method for repairing a memory
TWI497280B (zh) * 2013-07-08 2015-08-21 Phison Electronics Corp 資料保護方法、記憶體儲存裝置與記憶體控制器
US9213595B2 (en) * 2013-10-15 2015-12-15 International Business Machines Corporation Handling errors in ternary content addressable memories
US9817749B2 (en) 2013-12-04 2017-11-14 Sandisk Technologies Llc Apparatus and method of offloading processing from a data storage device to a host device
US9520901B2 (en) * 2014-03-06 2016-12-13 Kabushiki Kaisha Toshiba Memory controller, memory system, and memory control method
US10116336B2 (en) 2014-06-13 2018-10-30 Sandisk Technologies Llc Error correcting code adjustment for a data storage device
KR102204391B1 (ko) 2014-08-18 2021-01-18 삼성전자주식회사 공유 가능한 ecc 셀 어레이를 갖는 메모리 장치
JP2016184189A (ja) * 2015-03-25 2016-10-20 ルネサスエレクトロニクス株式会社 診断プログラム、診断方法および半導体装置
US10271115B2 (en) * 2015-04-08 2019-04-23 Itt Manufacturing Enterprises Llc. Nodal dynamic data acquisition and dissemination
US10063263B2 (en) * 2015-05-20 2018-08-28 International Business Machines Corporation Extended error correction coding data storage
US9766976B2 (en) 2015-06-08 2017-09-19 Sandisk Technologies Llc Data storage device and method for storing multiple codewords and redundancy information at a word line
US9870167B2 (en) 2015-10-12 2018-01-16 Sandisk Technologies Llc Systems and methods of storing data
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
US10049007B2 (en) * 2015-10-28 2018-08-14 Via Technologies, Inc. Non-volatile memory device and read method thereof
US10331517B2 (en) * 2016-08-26 2019-06-25 Qualcomm Incorporated Link error correction in memory system
JP2018147537A (ja) * 2017-03-07 2018-09-20 株式会社東芝 磁気ディスク装置及びライト方法
US9881643B1 (en) * 2017-05-15 2018-01-30 Western Digital Technologies, Inc. Data storage device generating extended redundancy to compensate for track squeeze
US10902144B2 (en) * 2017-08-25 2021-01-26 Electronics And Telecommunications Research Institute Method and apparatus for securing data
KR102449346B1 (ko) * 2017-12-12 2022-10-04 삼성전자주식회사 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템
KR20220103205A (ko) 2017-12-29 2022-07-21 마이크론 테크놀로지, 인크. 정정 불가능 ecc
US10644727B2 (en) 2018-01-11 2020-05-05 Western Digital Technologies, Inc. Code rate switching mechanism for flash memory
US11119909B2 (en) * 2018-12-11 2021-09-14 Texas Instmments Incorporated Method and system for in-line ECC protection
US11550727B2 (en) * 2020-06-18 2023-01-10 Micron Technology, Inc. Zone-aware memory management in memory subsystems
US11205498B1 (en) * 2020-07-08 2021-12-21 Samsung Electronics Co., Ltd. Error detection and correction using machine learning
US11321176B2 (en) * 2020-08-27 2022-05-03 Micron Technology, Inc. Reduced parity data management

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080282106A1 (en) 2007-05-12 2008-11-13 Anobit Technologies Ltd Data storage with incremental redundancy
US20100100763A1 (en) 2008-10-16 2010-04-22 Genesys Logic, Inc. Flash memory controller having configuring unit for error correction code (ecc) capability and method thereof

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3829741B2 (ja) * 2002-03-19 2006-10-04 ソニー株式会社 記録媒体、記録方法、記録装置
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US20070300130A1 (en) * 2006-05-17 2007-12-27 Sandisk Corporation Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US8015473B2 (en) * 2006-12-19 2011-09-06 Intel Corporation Method, system, and apparatus for ECC protection of small data structures
US8429492B2 (en) * 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process
US8307261B2 (en) * 2009-05-04 2012-11-06 National Tsing Hua University Non-volatile memory management method
US8307258B2 (en) * 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080282106A1 (en) 2007-05-12 2008-11-13 Anobit Technologies Ltd Data storage with incremental redundancy
US20100100763A1 (en) 2008-10-16 2010-04-22 Genesys Logic, Inc. Flash memory controller having configuring unit for error correction code (ecc) capability and method thereof

Also Published As

Publication number Publication date
US20120084622A1 (en) 2012-04-05
US8341498B2 (en) 2012-12-25
TW201230054A (en) 2012-07-16
KR20130060321A (ko) 2013-06-07
US20130080853A1 (en) 2013-03-28
US8539313B2 (en) 2013-09-17
WO2012044766A1 (en) 2012-04-05

Similar Documents

Publication Publication Date Title
KR101317720B1 (ko) 데이터 엔코딩 시스템 및 방법
US9141534B2 (en) Tracking read accesses to regions of non-volatile memory
KR101369444B1 (ko) 정정 불가능한 에러를 해결하는 하이브리드 에러 정정 코딩
US8473815B2 (en) Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data
US9153331B2 (en) Tracking cell erase counts of non-volatile memory
US8707135B2 (en) Method and system of dynamic data storage for error correction in a memory device
US9158621B2 (en) System and method of copying data
US7856528B1 (en) Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
US9129689B2 (en) Tracking erase pulses for non-volatile memory
US8351288B2 (en) Flash storage device and data protection method thereof
US8996936B2 (en) Enhanced error correction in memory devices
US10763897B2 (en) Memory system
KR20120086239A (ko) 메모리 시스템 및 그 동작 방법
US20150179254A1 (en) Mitigating disturb effects for non-volatile memory
WO2014113402A1 (en) Systems and methods of updating read voltages
KR20130114681A (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
KR20100033507A (ko) 새로운 불량 블록 검출
US10446252B2 (en) Data storage device and method for data error management
TW201346923A (zh) 使用單一錯誤偵測奇偶校驗的抹除修正
US9117533B2 (en) Tracking erase operations to regions of non-volatile memory
CN111399751B (zh) 闪存控制器、管理闪存模块的方法及相关的电子装置
US20240020021A1 (en) Data retry-read method, memory storage device, and memory control circuit element
CN112084532A (zh) 存储设备和存储设备的操作方法
CN117762819A (zh) 存取快闪存储器模块的方法与相关的快闪存储器控制器及记忆装置
CN117762820A (zh) 存取快闪存储器模块的方法与相关的快闪存储器控制器及记忆装置

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: 20160921

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee