KR100645058B1 - 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 - Google Patents
데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 Download PDFInfo
- Publication number
- KR100645058B1 KR100645058B1 KR1020040088988A KR20040088988A KR100645058B1 KR 100645058 B1 KR100645058 B1 KR 100645058B1 KR 1020040088988 A KR1020040088988 A KR 1020040088988A KR 20040088988 A KR20040088988 A KR 20040088988A KR 100645058 B1 KR100645058 B1 KR 100645058B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory block
- error
- data
- selected memory
- error bits
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
- G11C29/4401—Indication or identification of errors, e.g. for repair for self repair
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
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)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
복수의 메모리 블록들을 갖는 불 휘발성 메모리에 저장된 데이터를 관리하는 방법이 개시되어 있다. 먼저, 선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생하였는 지의 여부가 판별된다. 상기 선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생한 경우, 상기 선택된 메모리 블록이 어느 데이터 영역에 속하는 지의 여부가 판별된다. 상기 선택된 메모리 블록이 코드 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 지의 여부가 판별된다. 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 경우, 상기 코드 데이터 영역의 선택된 메모리 블록이 여분의 메모리 블록으로 대체되고 상기 코드 데이터 영역의 선택된 메모리 블록이 사용자 데이터 영역으로 지정된다.
Description
도 1은 본 발명에 따른 불 휘발성 메모리 장치를 개략적으로 보여주는 블록도;
도 2는 도 1에 도시된 불 휘발성 메모리의 어레이 구조를 보여주는 도면; 그리고
도 3은 본 발명에 따른 불 휘발성 메모리 장치의 메모리 관리 기법을 설명하기 위한 흐름도이다.
* 도면의 주요 부분에 대한 부호 설명 *
120 : 불 휘발성 메모리 140 : 버퍼 메모리
160 : 제어 회로 162 : ECC 블록
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 불 휘발성 메모리 장치에 저장된 데이터를 관리하는 기법에 관한 것이다.
에러 검출 및 정정 기술들은 다양한 원인들로 인해 손상되는 데이터의 효율 적인 복구를 제공한다. 예를 들면, 메모리에 데이터를 저장하는 과정에서 다양한 원인들로 인해서 데이터가 손상될 수 있고, 소오스에서 목적지로 데이터가 전송되는 데이터 전송 채널의 불안 (perturbations)에 의해서 데이터가 손상될 수 있다. 손상된 데이터를 검출하고 보정하기 위해서 다양한 방법들이 제안되어 오고 있다. 잘 알려진 에러 검출 기술들은 RS 코드 (Reed-Solomon code), 헤밍 코드 (Hamming code), BCH (Bose-Chaudhuri-Hocquenghem) 코드, CRC (Cyclic Redundancy Code) 코드 등이 있다. 이러한 코드들을 이용하여 손상된 데이터를 발견하고 보정하는 것이 가능하다. 불 휘발성 메모리 장치가 사용되는 대부분의 응용 분야에 있어서, 데이터는 오류보정코드 (error correcting code: ECC)라 불리는 값 (이하, ECC 데이터라 칭함)과 함께 불 휘발성 메모리 장치에 저장된다.
ECC 데이터는 불 휘발성 메모리 장치의 읽기 동작시 발생하는 에러를 정정하기 위한 것으로, ECC 데이터를 이용하여 정정 가능한 에러 비트 수는 제한되어 있다. 일반적인 불 휘발성 메모리 장치에는 1-비트 에러를 정정하기 위한 ECC 데이터가 저장된다. 읽기 동작시 생기는 1-비트 에러는, 따라서, 잘 알려진 블록 대체 (block replacement)와 같은 별도의 구제 과정없이 에러 검출 및 정정 기술을 통해 정정될 수 있다.
1-비트 에러가 정정된 데이터에 있어서, 다음의 읽기 동작시 추가적으로 에러가 발생할 확률이 높다. 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하는 경우, 블록 대체 방식으로 알려진 별도의 구제 방식을 통해 읽혀진 데이터를 포함하는 메모리 블록이 불 휘발성 메모리 장치에 제공되는 여분의 메모리 블록 (reserved memory block)으로 대체된다. 이때, 대체된 메모리 블록의 데이터는 여분의 메모리 블록으로 복사될 것이다. 일단 읽혀진 데이터가 허용되는 에러 비트 수를 포함하면, 주어진 에러 검출 및 정정 기술을 통해 읽혀진 데이터의 에러가 정정된다. 비록 읽혀진 데이터의 에러가 정정되더라도, 하지만, 에러 정정된 데이터는 추후의 읽기 동작시 에러가 발생할 확률이 높다. 따라서, 에러 정정된 데이터의 신뢰성을 향상시킬 수 있는 기술이 요구되고 있다.
본 발명의 목적은 데이터의 신뢰성을 향상시킬 수 있는 불 휘발성 메모리 장치의 데이터 관리 기법을 제공하는 것이다.
상술한 제반 목적을 달성하기 위한 본 발명의 일 특징에 따르면, 복수의 메모리 블록들을 갖는 불 휘발성 메모리에 저장된 데이터를 관리하는 방법은 선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생하였는 지의 여부를 판별하는 단계와; 상기 선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생한 경우, 상기 선택된 메모리 블록이 어느 데이터 영역에 속하는 지의 여부를 판별하는 단계와; 상기 선택된 메모리 블록이 코드 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 지의 여부를 판별하는 단계와; 그리고 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 여분의 메모리 블록으로 대체하고 상기 코드 데이터 영역의 선택된 메모리 블록을 사용자 데이터 영역으로 지정하는 단계 를 포함한다.
예시적인 실시예에 있어서, 상기 선택된 메모리 블록을 대체하는 데 사용된 여분의 메모리 블록은 상기 코드 데이터 영역으로 지정된다.
예시적인 실시예에 있어서, 상기 읽혀진 데이터를 제외한 상기 선택된 메모리 블록에 저장된 나머지 데이터는 상기 대체된 메모리 블록으로 복사된다.
예시적인 실시예에 있어서, 상기 읽혀진 데이터의 에러는 에러정정코드 블록에 의해서 자동적으로 정정되고, 에러 정정된 데이터는 상기 대체된 메모리 블록에 저장된다.
예시적인 실시예에 있어서, 본 발명에 따른 방법은 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하지 않은 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 여분의 메모리 블록으로 대체하는 단계를 더 포함한다.
예시적인 실시예에 있어서, 본 발명에 따른 방법은 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하지 않은 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 결함 메모리 블록으로 지정하는 단계를 더 포함한다.
예시적인 실시예에 있어서, 상기 코드 데이터 영역의 선택된 메모리 블록에 저장된 데이터는 새롭게 로드되며, 새롭게 로드된 데이터는 상기 대체된 여분의 메모리 블록에 저장된다.
예시적인 실시예에 있어서, 본 발명에 따른 방법은 상기 선택된 메모리 블록이 상기 사용자 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하였는 지의 여부를 판별하는 단계를 더 포함한다.
예시적인 실시예에 있어서, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하지 않은 경우, 상기 읽혀진 데이터의 에러는 에러정정코드 블록에 의해서 자동적으로 정정된다.
예시적인 실시예에 있어서, 본 발명에 따른 방법은 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하는 경우, 상기 선택된 메모리 블록을 여분의 메모리 블록으로 대체하는 단계를 더 포함한다.
예시적인 실시예에 있어서, 상기 선택된 메모리 블록은 결함 메모리 블록으로 지정된다.
본 발명의 다른 특징에 따르면, 복수의 메모리 블록들을 갖는 불 휘발성 메모리에 저장된 데이터를 관리하는 방법은 선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생하였는 지의 여부를 판별하는 단계와; 그리고 상기 선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생한 경우, 상기 선택된 메모리 블록이 데이터 영역들 중 어느 데이터 영역에 속하는 지의 여부에 따라 상기 데이터 영역들의 에러를 상이하게 처리하는 단계를 포함한다.
예시적인 실시예에 있어서, 상기 에러를 상이하게 처리하는 단계는 상기 선택된 메모리 블록이 코드 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 지의 여부를 판별하는 단계와; 그리고 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 여분의 메모리 블록으로 대체하고 상기 코드 데이터 영역의 선택된 메모리 블록을 사용자 데이터 영역으로 지정하는 단계를 포함한다.
예시적인 실시예에 있어서, 상기 선택된 메모리 블록을 대체하는 데 사용된 여분의 메모리 블록은 상기 코드 데이터 영역으로 지정된다.
예시적인 실시예에 있어서, 상기 읽혀진 데이터를 제외한 상기 선택된 메모리 블록에 저장된 나머지 데이터는 상기 대체된 메모리 블록으로 복사된다.
예시적인 실시예에 있어서, 상기 읽혀진 데이터의 에러는 에러정정코드 블록에 의해서 자동적으로 정정되고, 에러 정정된 데이터는 상기 대체된 메모리 블록에 저장된다.
예시적인 실시예에 있어서, 상기 에러를 상이하게 처리하는 단계는 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하지 않은 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 여분의 메모리 블록으로 대체하는 단계를 더 포함한다.
예시적인 실시예에 있어서, 상기 에러를 상이하게 처리하는 단계는 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하지 않은 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 결함 메모리 블록으로 지정하는 단계를 더 포함한다.
예시적인 실시예에 있어서, 상기 코드 데이터 영역의 선택된 메모리 블록에 저장된 데이터는 새롭게 로드되며, 새롭게 로드된 데이터는 상기 대체된 여분의 메모리 블록에 저장된다.
예시적인 실시예에 있어서, 상기 에러를 상이하게 처리하는 단계는 상기 선 택된 메모리 블록이 상기 사용자 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하였는 지의 여부를 판별하는 단계를 더 포함한다.
예시적인 실시예에 있어서, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하지 않은 경우, 상기 읽혀진 데이터의 에러는 에러정정코드 블록에 의해서 자동적으로 정정된다.
예시적인 실시예에 있어서, 상기 에러를 상이하게 처리하는 단계는 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하는 경우, 상기 선택된 메모리 블록을 여분의 메모리 블록으로 대체하는 단계를 더 포함한다.
예시적인 실시예에 있어서, 상기 선택된 메모리 블록은 결함 메모리 블록으로 지정된다.
본 발명의 예시적인 실시예들이 참조 도면들에 의거하여 이하 상세히 설명될 것이다.
도 1은 본 발명에 따른 불 휘발성 메모리 장치를 개략적으로 보여주는 블록도이다. 본 발명에 따른 불 휘발성 메모리 장치는 NAND 플래시 메모리 장치이다. 하지만, 본 발명이 다른 메모리 장치들 (예를 들면, MROM, PROM, FRAM, NOR 플래시 메모리 장치, 등)에 적용될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
도 1을 참조하면, 본 발명에 따른 불 휘발성 메모리 장치 (100)는 불 휘발성 메모리 (120), 버퍼 메모리 (140), 그리고 제어 회로 (160)를 포함한다. 불 휘발성 메모리 (120)는, 도 2에 도시된 바와 같이, 제 1 메모리 영역 (121), 제 2 메모리 영역 (122), 그리고 제 3 메모리 영역 (123)으로 구성된 메모리 셀 어레이를 포함한다. 제 1 내지 제 3 메모리 영역들 (121, 122, 123) 각각은 메모리 블록들로 구성되고, 각 메모리 블록은 복수 개의 페이지들로 구성된다. 코드 데이터 영역으로서 제 1 메모리 영역 (121)에는 응용 프로그램과 같은 코드 데이터가 저장되고, 사용자 데이터 영역으로서 제 2 메모리 영역 (122)에는 일반적인 데이터로서 사용자 데이터가 저장된다. 제 3 메모리 영역 (123)은 제 1 및 제 2 메모리 영역들 (121, 122)의 메모리 블록(들)을 대체하기 위한 여분의 메모리 영역이다. 버퍼 메모리 (140)는 불 휘발성 메모리 (120)에서 읽혀진 데이터를 임시 저장하는 데 그리고 불 휘발성 메모리 (120)에 저장될 데이터를 임시 저장하는 데 사용된다. 제어 회로 (160)는 불 휘발성 메모리 (120)와 버퍼 메모리 (140)의 동작들 (예를 들면, 읽기 및 쓰기 동작들)을 제어하도록 구성된다. 제어 회로 (160)는 에러정정코드 (ECC) 블록 (162)을 포함한다. ECC 블록 (162)은 버퍼 메모리 (140)에서 불 휘발성 메모리 (120)로 쓰여질 데이터가 전송될 때 쓰여질 데이터와 관련된 ECC 데이터를 생성한다. ECC 블록 (162)은 불 휘발성 메모리 (120)에서 버퍼 메모리 (140)로 읽혀진 데이터가 전송될 때 읽혀진 데이터에 에러가 생성되었는 지의 여부를 검출한다. 읽혀진 데이터에 ECC 블록 (162)의 허용되는 에러 비트 수에 해당하는 에러가 생성된 경우, ECC 블록 (162)은 읽혀진 데이터의 에러를 정정한다. ECC 블록 (162)의 정정 가능한 에러 비트 수는 미리 결정된다. 예를 들면, ECC 블록 (162)은 허용되는 에러 비트 수에 해당하는 1-비트 에러를 정정하도록 구성될 것이다. 하지만, ECC 블 록 (162)이 이에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
도 1에 있어서, 불 휘발성 메모리 (120), 버퍼 메모리 (140), 그리고 제어 회로 (160)는 단일의 집적 회로에 포함되도록 구현될 수 있다. 불 휘발성 메모리 (120), 버퍼 메모리 (140), 그리고 제어 회로 (160)는 메모리 시스템을 구성하도록 서로 다른 집적 회로들로 구현될 수 있다.
도 3은 본 발명에 따른 불 휘발성 메모리 장치의 메모리 관리 기법을 설명하기 위한 흐름도이다. 이하, 본 발명에 따른 불 휘발성 메모리 장치의 메모리 관리 기법이 참조 도면들에 의거하여 상세히 설명될 것이다.
제어 회로 (160)는 불 휘발성 메모리 (120)에서 버퍼 메모리 (140)로 데이터가 전송되도록 제어한다. 즉, 제어 회로 (160)의 제어에 따라 읽기 동작이 수행된다 (S100). 설명의 편의상, 읽기 동작시 한 페이지 분량의 데이터 (이하, 페이지 데이터라 칭함)가 불 휘발성 메모리 (120)에서 버퍼 메모리 (140)로 전송된다고 가정하자. 불 휘발성 메모리 (120)에서 버퍼 메모리 (140)로 페이지 데이터가 전송되는 동안, 제어 회로 (160)의 ECC 블록 (162)은 읽혀진 페이지 데이터에서 에러가 생성되었는 지의 여부를 검출한다 (S110). 만약 읽혀진 페이지 데이터에서 에러가 발생하지 않으면, 읽기 동작은 정상적으로 종료될 것이다. 만약 읽혀진 페이지 데이터에서 에러가 발생하면, 제어 회로 (160)는 에러가 코드 데이터 영역으로서 제 1 메모리 영역 (121)에서 발생하였는 지의 여부를 판별한다 (S120). 만약 그렇지 않으면, 제어 회로 (160)는 읽기 동작시 2-비트 에러가 발생하였는 지의 여부를 판 별한다 (S130). 만약 읽기 동작시 발생한 에러가 ECC 블록 (162)의 허용되는 에러 비트 수를 초과하는 2-비트 에러가 아니면, 읽기 동작은 정상적으로 종료된다. 즉, 읽기 동작시 발생한 제 2 메모리 영역 (122)에서 읽혀진 페이지 데이터의 에러가 ECC 블록 (162)의 허용되는 에러 비트 수에 속하는 1-비트 에러인 경우, 현재 발생된 에러는 별도의 구제 과정없이 ECC 블록 (162)에 의해서 검출/정정된다. 따라서, 만약 읽기 동작시 발생한 에러가 2-비트 에러가 아니면, 읽기 동작은 블록 대체와 같은 별도의 구제 과정없이 정상적으로 종료된다.
제 2 메모리 영역 (122)에서 읽혀진 페이지 데이터의 에러가 ECC 블록 (162)의 허용되는 에러 비트 수를 초과한 2-비트 에러인 경우, 현재 읽혀진 데이터의 페이지를 포함한 제 2 메모리 영역 (122)의 메모리 블록은 제 3 메모리 영역 (123)의 메모리 블록들 중 하나로 대체된다 (S140). 이때, 에러 페이지 데이터를 제외한 나머지 페이지 데이터는 제 3 메모리 영역 (123)의 대응하는 메모리 블록으로 복사된다. 에러 페이지 데이터는 ECC 블록 (162)에 의해서 정정되고, 에러 정정된 페이지 데이터는 제 3 메모리 영역 (123)의 대응하는 메모리 블록으로 복사된다. 이와 동시에, 에러 페이지 데이터를 포함한 메모리 블록은 결함 메모리 블록으로 지정되고, 대체된 메모리 블록은 제 2 메모리 영역 (122)의 메모리 블록으로 지정된다. 에러 페이지 데이터를 포함한 메모리 블록이 대체된 후, 읽기 동작은 종료될 것이다. 즉, 읽기 동작시 발생한 제 2 메모리 영역 (122)에서 읽혀진 페이지 데이터의 에러가 ECC 블록 (162)의 허용되는 에러 비트 수를 초과하는 2-비트 에러인 경우, 현재 발생된 에러는 별도의 구제 과정과 함께 정정된다. 따라서, 만약 읽기 동작시 제 2 메모리 영역 (122)에서 발생한 에러가 2-비트 에러이면, 읽기 동작은 블록 대체와 같은 별도의 구제 과정이 수행된 후 종료된다.
다시 S120 단계로 돌아가면, 에러가 제 1 메모리 영역 (121)에서 발생한 경우, 제어 회로 (160)는 현재 발생된 에러가 ECC 블록 (162)의 허용되는 에러 비트 수에 속하는 1-비트 에러인 지의 여부를 판별한다 (S150). 만약 현재 발생된 에러가 1-비트 에러가 아니면 즉, 2-비트 에러가 제 1 메모리 영역 (121)에서 발생하면, 에러가 발생한 페이지를 포함한 제 1 메모리 영역 (121)의 메모리 블록은 제 3 메모리 영역 (123)의 대응하는 메모리 블록으로 대체된다 (S160). 이때, 에러가 발생한 메모리 블록은 결함 메모리 블록으로 지정되고, 제 3 메모리 영역 (123)의 대체된 메모리 블록은 제 1 메모리 영역 (121)의 메모리 블록으로 지정된다. 여기서, 제 1 메모리 영역 (121)의 결함 메모리 블록에 저장된 데이터 대신에 새롭게 입력된 (또는 로드된) 데이터가 잘 알려진 방식에 따라 결함 메모리 블록 대신에 지정된 메모리 블록에 저장될 것이다. 이후, 읽기 동작이 종료될 것이다. 만약 현재 발생된 에러가 ECC 블록 (162)의 허용되는 에러 비트 수에 속하는 1-비트 에러이면, 즉, 1-비트 에러가 제 1 메모리 영역 (121)에서 발생하면, 제 1 메모리 영역 (121)의 메모리 블록은 제 3 메모리 영역 (123)의 대응하는 메모리 블록으로 대체되고, 제 1 메모리 영역 (121)의 메모리 블록은 제 2 메모리 영역 (122)의 메모리 블록으로 지정된다 (S170). 제 1 메모리 영역 (121)의 메모리 블록이 제 3 메모리 영역 (123)의 대응하는 메모리 블록으로 대체될 때, 에러가 발생한 페이지 데이터를 제외한 나머지 페이지 데이터는 새롭게 지정된 메모리 블록으로 복사된다. 에러가 발 생한 페이지 데이터는 ECC 블록 (162)에 의해서 정정되고, 에러 정정된 페이지 데이터는 새롭게 지정된 메모리 블록으로 복사된다. 이후, 읽기 동작이 종료될 것이다.
이상의 설명으로부터 알 수 있듯이, 제 1 메모리 영역 (121)에서 1-비트 에러 (ECC 블록의 허용되는 에러 비트 수에 속함)가 발생하면, 1-비트 에러가 발생한 제 1 메모리 영역 (121)의 메모리 블록의 페이지 데이터는 제 3 메모리 영역 (123)의 대응하는 메모리 블록으로 복사된다. 1-비트 에러가 발생하는 제 1 메모리 영역 (121)의 메모리 블록은 제 2 메모리 영역 (122)의 메모리 블록으로 지정된다. 이는 제 1 메모리 영역 (121)에 저장된 데이터의 신뢰성이 향상될 수 있음을 의미한다. 즉, 1-비트 에러가 제 1 메모리 영역에서 발생될 때마다, 제 1 메모리 영역의 메모리 블록이 여분의 메모리 블록으로 대체되며, 그 결과 한 페이지에서 생기는 1-비트 에러의 확률이 일정하게 유지될 수 있다. 결과적으로, 제 1 메모리 영역 (121)에 저장된 데이터의 신뢰성이 향상될 수 있다.
이 실시예에 있어서, 제 3 메모리 영역의 메모리 블록들은 제 1 및 제 2 메모리 영역들에 관계없이 사용되도록 구성되었다. 하지만, 제 3 메모리 영역의 메모리 블록들 중 일부는 제 1 메모리 영역의 메모리 블록들으로 대체되도록 그리고 나머지 메모리 블록들은 제 2 메모리 영역의 메모리 블록들로 대체되도록 구성될 수 있다.
이상에서, 본 발명에 따른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만, 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상 및 범위를 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
상술한 바와 같이, 제 1 및 제 2 메모리 영역들의 에러를 상이한 방식으로 관리함으로써 제 1 메모리 영역에 저장된 데이터 (또는 코드 데이터)의 신뢰성을 향상시킬 수 있다.
Claims (23)
- 복수의 메모리 블록들을 갖는 불 휘발성 메모리에 저장된 데이터를 관리하는 방법에 있어서:선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생하였는 지의 여부를 판별하는 단계와;상기 선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생한 경우, 상기 선택된 메모리 블록이 어느 데이터 영역에 속하는 지의 여부를 판별하는 단계와;상기 선택된 메모리 블록이 코드 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 지의 여부를 판별하는 단계와; 그리고상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 여분의 메모리 블록으로 대체하고 상기 코드 데이터 영역의 선택된 메모리 블록을 사용자 데이터 영역으로 지정하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 선택된 메모리 블록을 대체하는 데 사용된 여분의 메모리 블록은 상기 코드 데이터 영역으로 지정되는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 읽혀진 데이터를 제외한 상기 선택된 메모리 블록에 저장된 나머지 데이터는 상기 대체된 메모리 블록으로 복사되는 것을 특징으로 하는 방법.
- 제 3 항에 있어서,상기 읽혀진 데이터의 에러는 에러정정코드 블록에 의해서 자동적으로 정정되고, 에러 정정된 데이터는 상기 대체된 메모리 블록에 저장되는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하지 않은 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 여분의 메모리 블록으로 대체하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서,상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하지 않은 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 결함 메모리 블록으로 지정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 6 항에 있어서,상기 코드 데이터 영역의 선택된 메모리 블록에 저장된 데이터는 새롭게 로드되며, 새롭게 로드된 데이터는 상기 대체된 여분의 메모리 블록에 저장되는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 선택된 메모리 블록이 상기 사용자 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하였는 지의 여부를 판별하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 8 항에 있어서,상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하지 않은 경우, 상기 읽혀진 데이터의 에러는 에러정정코드 블록에 의해서 자동적으로 정정되는 것을 특징으로 하는 방법.
- 제 8 항에 있어서,상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하는 경우, 상기 선택된 메모리 블록을 여분의 메모리 블록으로 대체하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 10 항에 있어서,상기 선택된 메모리 블록은 결함 메모리 블록으로 지정되는 것을 특징으로 하는 방법.
- 복수의 메모리 블록들을 갖는 불 휘발성 메모리에 저장된 데이터를 관리하는 방법에 있어서:선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생하였는 지의 여부를 판별하는 단계와; 그리고상기 선택된 메모리 블록에서 읽혀진 데이터에 에러가 발생한 경우, 상기 선택된 메모리 블록이 데이터 영역들 중 어느 데이터 영역에 속하는 지의 여부에 따라 그리고 상기 읽혀진 데이터의 에러 비트 수가 허용 가능한 에러 비트 수를 초과하였는 지의 여부에 따라 블록 대체 방식과 에러 정정 방식 중 어느 하나의 방식으로 상기 데이터 영역들의 에러를 처리하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 12 항에 있어서,상기 에러를 처리하는 단계는상기 선택된 메모리 블록이 코드 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 지의 여부를 판별하는 단계와; 그리고상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하는 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 여분의 메모리 블록으로 대체하고 상기 코드 데이터 영역의 선택된 메모리 블록을 사용자 데이터 영역으로 지정하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 13 항에 있어서,상기 선택된 메모리 블록을 대체하는 데 사용된 여분의 메모리 블록은 상기 코드 데이터 영역으로 지정되는 것을 특징으로 하는 방법.
- 제 13 항에 있어서,상기 읽혀진 데이터를 제외한 상기 선택된 메모리 블록에 저장된 나머지 데이터는 상기 대체된 메모리 블록으로 복사되는 것을 특징으로 하는 방법.
- 제 13 항에 있어서,상기 읽혀진 데이터의 에러는 에러정정코드 블록에 의해서 자동적으로 정정되고, 에러 정정된 데이터는 상기 대체된 메모리 블록에 저장되는 것을 특징으로 하는 방법.
- 제 13 항에 있어서,상기 에러를 처리하는 단계는상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하지 않은 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 여분의 메모리 블록으로 대체하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 17 항에 있어서,상기 에러를 처리하는 단계는상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수와 일치하지 않은 경우, 상기 코드 데이터 영역의 선택된 메모리 블록을 결함 메모리 블록으로 지정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 18 항에 있어서,상기 코드 데이터 영역의 선택된 메모리 블록에 저장된 데이터는 새롭게 로드되며, 새롭게 로드된 데이터는 상기 대체된 여분의 메모리 블록에 저장되는 것을 특징으로 하는 방법.
- 제 13 항에 있어서,상기 에러를 처리하는 단계는상기 선택된 메모리 블록이 상기 사용자 데이터 영역인 경우, 상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하였는 지의 여부를 판별하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 20 항에 있어서,상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하지 않 은 경우, 상기 읽혀진 데이터의 에러는 에러정정코드 블록에 의해서 자동적으로 정정되는 것을 특징으로 하는 방법.
- 제 20 항에 있어서,상기 에러를 처리하는 단계는상기 읽혀진 데이터의 에러 비트 수가 허용되는 에러 비트 수를 초과하는 경우, 상기 선택된 메모리 블록을 여분의 메모리 블록으로 대체하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 22 항에 있어서,상기 선택된 메모리 블록은 결함 메모리 블록으로 지정되는 것을 특징으로 하는 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040088988A KR100645058B1 (ko) | 2004-11-03 | 2004-11-03 | 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 |
US11/156,721 US7412575B2 (en) | 2004-11-03 | 2005-06-21 | Data management technique for improving data reliability |
JP2005299149A JP2006134310A (ja) | 2004-11-03 | 2005-10-13 | データ信頼性を向上させることができるメモリ管理方法 |
DE102005052698A DE102005052698A1 (de) | 2004-11-03 | 2005-10-31 | Verfahren zur Verarbeitung von nichtflüchtig gespeicherten Daten |
CNB2005101193252A CN100545817C (zh) | 2004-11-03 | 2005-11-03 | 用于提高数据可靠性的数据管理技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040088988A KR100645058B1 (ko) | 2004-11-03 | 2004-11-03 | 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060039771A KR20060039771A (ko) | 2006-05-09 |
KR100645058B1 true KR100645058B1 (ko) | 2006-11-10 |
Family
ID=36202091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040088988A KR100645058B1 (ko) | 2004-11-03 | 2004-11-03 | 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7412575B2 (ko) |
JP (1) | JP2006134310A (ko) |
KR (1) | KR100645058B1 (ko) |
CN (1) | CN100545817C (ko) |
DE (1) | DE102005052698A1 (ko) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7469368B2 (en) * | 2005-11-29 | 2008-12-23 | Broadcom Corporation | Method and system for a non-volatile memory with multiple bits error correction and detection for improving production yield |
KR100802059B1 (ko) * | 2006-09-06 | 2008-02-12 | 삼성전자주식회사 | 읽기 디스터브로 인한 배드 블록의 생성을 억제할 수 있는메모리 시스템 및 그것의 동작 방법 |
US7904783B2 (en) * | 2006-09-28 | 2011-03-08 | Sandisk Corporation | Soft-input soft-output decoder for nonvolatile memory |
US7805663B2 (en) * | 2006-09-28 | 2010-09-28 | Sandisk Corporation | Methods of adapting operation of nonvolatile memory |
US20080092015A1 (en) * | 2006-09-28 | 2008-04-17 | Yigal Brandman | Nonvolatile memory with adaptive operation |
US7818653B2 (en) | 2006-09-28 | 2010-10-19 | Sandisk Corporation | Methods of soft-input soft-output decoding for nonvolatile memory |
US8151082B2 (en) * | 2007-12-06 | 2012-04-03 | Fusion-Io, Inc. | Apparatus, system, and method for converting a storage request into an append data storage command |
US8161353B2 (en) * | 2007-12-06 | 2012-04-17 | Fusion-Io, Inc. | Apparatus, system, and method for validating that a correct data segment is read from a data storage device |
WO2008070813A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a front-end, distributed raid |
US7765426B2 (en) * | 2007-06-07 | 2010-07-27 | Micron Technology, Inc. | Emerging bad block detection |
KR101425958B1 (ko) * | 2007-09-06 | 2014-08-04 | 삼성전자주식회사 | 멀티-비트 데이터를 저장하는 메모리 시스템 및 그것의읽기 방법 |
TWI343001B (en) * | 2007-11-13 | 2011-06-01 | Ite Tech Inc | Data preserving method and data accessing method for non-volatile memory |
EP2077559B1 (en) * | 2007-12-27 | 2012-11-07 | Hagiwara Solutions Co., Ltd. | Refresh method of a flash memory |
US7934130B2 (en) * | 2008-08-29 | 2011-04-26 | Cadence Design Systems, Inc. | System and method for managing non-volatile memory based on health |
US8510614B2 (en) * | 2008-09-11 | 2013-08-13 | Mediatek Inc. | Bad block identification methods |
CN101859604B (zh) * | 2009-04-10 | 2012-10-24 | 国民技术股份有限公司 | 闪存坏块的利用方法 |
KR20110018605A (ko) * | 2009-08-18 | 2011-02-24 | 삼성전자주식회사 | 자동 백업기능을 갖는 저장장치 |
KR101090394B1 (ko) * | 2009-12-24 | 2011-12-07 | 주식회사 하이닉스반도체 | 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 |
US8331151B2 (en) | 2009-12-25 | 2012-12-11 | Samsung Electronics Co., Ltd. | Semiconductor memory including control unit responsive to erase command to determine selection of redundant memory block |
JP5494086B2 (ja) * | 2010-03-24 | 2014-05-14 | パナソニック株式会社 | 不揮発性記憶装置および不揮発性メモリコントローラ |
US8549379B2 (en) * | 2010-11-19 | 2013-10-01 | Xilinx, Inc. | Classifying a criticality of a soft error and mitigating the soft error based on the criticality |
US9086983B2 (en) | 2011-05-31 | 2015-07-21 | Micron Technology, Inc. | Apparatus and methods for providing data integrity |
US8522091B1 (en) | 2011-11-18 | 2013-08-27 | Xilinx, Inc. | Prioritized detection of memory corruption |
US9455048B2 (en) | 2013-06-28 | 2016-09-27 | Sandisk Technologies Llc | NAND flash word line management using multiple fragment pools |
KR20150033859A (ko) * | 2013-09-25 | 2015-04-02 | 삼성전자주식회사 | 반도체 메모리 장치 및 메모리 시스템 |
KR102297541B1 (ko) | 2014-12-18 | 2021-09-06 | 삼성전자주식회사 | 메모리 영역의 신뢰성에 기초하여 데이터를 저장하는 저장 장치 및 스토리지 시스템 |
US10204693B2 (en) * | 2016-12-31 | 2019-02-12 | Western Digital Technologies, Inc. | Retiring computer memory blocks |
CN110568993B (zh) * | 2019-08-06 | 2022-04-12 | 新华三技术有限公司成都分公司 | 一种数据更新方法及相关装置 |
US11093164B2 (en) | 2019-08-27 | 2021-08-17 | Micron Technology, Inc. | Handling bad blocks generated during a block erase operation |
CN111625200B (zh) * | 2020-05-29 | 2024-02-27 | 合肥中科智存科技有限公司 | 一种非易失性存储器的读取方法、装置及*** |
TWI794967B (zh) * | 2021-09-10 | 2023-03-01 | 臺灣發展軟體科技股份有限公司 | 資料處理電路及故障修補方法 |
CN114035745A (zh) * | 2021-10-19 | 2022-02-11 | 许昌许继软件技术有限公司 | 一种flash数据存储控制方法及装置 |
US12019870B2 (en) | 2022-11-07 | 2024-06-25 | International Business Machines Corporation | System wide memory technology over-provisioning |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2514954B2 (ja) | 1987-03-13 | 1996-07-10 | 三菱電機株式会社 | Icカ−ド |
JPH05150913A (ja) * | 1991-11-29 | 1993-06-18 | Hitachi Ltd | フラツシユメモリを記憶媒体としたシリコンデイスク |
EP0862762B1 (en) * | 1996-08-16 | 2002-10-09 | Tokyo Electron Device Limited | Semiconductor memory device having error detection and correction |
JPH10289164A (ja) * | 1997-04-16 | 1998-10-27 | Mitsubishi Electric Corp | メモリ制御方法およびメモリ制御装置 |
JP3230485B2 (ja) * | 1998-04-09 | 2001-11-19 | 日本電気株式会社 | 1チップマイクロコンピュータ |
KR100328818B1 (ko) | 1998-09-17 | 2002-10-19 | 주식회사 하이닉스반도체 | 플래시 메모리의 데이타 저장방법 |
US6684289B1 (en) | 2000-11-22 | 2004-01-27 | Sandisk Corporation | Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory |
US6950966B2 (en) | 2001-07-17 | 2005-09-27 | Seachange International, Inc. | Data transmission from raid services |
JP4437519B2 (ja) | 2001-08-23 | 2010-03-24 | スパンション エルエルシー | 多値セルメモリ用のメモリコントローラ |
US20040083334A1 (en) | 2002-10-28 | 2004-04-29 | Sandisk Corporation | Method and apparatus for managing the integrity of data in non-volatile memory system |
JP4239754B2 (ja) * | 2003-08-26 | 2009-03-18 | パナソニック株式会社 | 不揮発メモリシステム |
-
2004
- 2004-11-03 KR KR1020040088988A patent/KR100645058B1/ko not_active IP Right Cessation
-
2005
- 2005-06-21 US US11/156,721 patent/US7412575B2/en not_active Expired - Fee Related
- 2005-10-13 JP JP2005299149A patent/JP2006134310A/ja active Pending
- 2005-10-31 DE DE102005052698A patent/DE102005052698A1/de not_active Withdrawn
- 2005-11-03 CN CNB2005101193252A patent/CN100545817C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006134310A (ja) | 2006-05-25 |
DE102005052698A1 (de) | 2006-05-04 |
KR20060039771A (ko) | 2006-05-09 |
CN1790292A (zh) | 2006-06-21 |
US20060107127A1 (en) | 2006-05-18 |
US7412575B2 (en) | 2008-08-12 |
CN100545817C (zh) | 2009-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100645058B1 (ko) | 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 | |
US8694849B1 (en) | Shuffler error correction code system and method | |
KR100681429B1 (ko) | 반도체 메모리 장치 및 그것의 비트 에러 검출 방법 | |
US8954818B2 (en) | Error detection and correction scheme for a memory device | |
KR100712596B1 (ko) | 플래시 메모리 장치의 리페어 및 트리밍 방법 및 장치 | |
KR102143353B1 (ko) | 메모리 소자로부터 액세스된 데이터의 오류를 정정하는 장치 및 방법 | |
US10333558B2 (en) | Decoding device and decoding method | |
US8635508B2 (en) | Systems and methods for performing concatenated error correction | |
US20110041040A1 (en) | Error Correction Method for a Memory Device | |
CA2588858A1 (en) | System and method for efficient uncorrectable error detection in flash memory | |
US8347183B2 (en) | Flash memory device using ECC algorithm and method of operating the same | |
US7747926B2 (en) | Methods and apparatus for a memory device with self-healing reference bits | |
US10514980B2 (en) | Encoding method and memory storage apparatus using the same | |
JP2019057752A (ja) | メモリシステム | |
US20050091569A1 (en) | System and method for securely storing data in a memory | |
US8347201B2 (en) | Reading method of a memory device with embedded error-correcting code and memory device with embedded error-correcting code | |
US20180122494A1 (en) | Raid decoding architecture with reduced bandwidth | |
JP2009295252A (ja) | 半導体記憶装置及びそのエラー訂正方法 | |
US11962327B2 (en) | Iterative decoding technique for correcting DRAM device failures | |
WO2017158430A1 (en) | Coding technique | |
US9170881B2 (en) | Solid state device coding architecture for chipkill and endurance improvement | |
JP2005011386A (ja) | 誤り訂正装置 | |
US11132254B2 (en) | Semiconductor integrated circuit, storage device, and error correction method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for 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: 20091016 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |