KR20170064978A - Raid 메모리의 여러 ecc 블록들 내의 데이터를 정정하기 위한 장치 및 방법 - Google Patents

Raid 메모리의 여러 ecc 블록들 내의 데이터를 정정하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20170064978A
KR20170064978A KR1020160087571A KR20160087571A KR20170064978A KR 20170064978 A KR20170064978 A KR 20170064978A KR 1020160087571 A KR1020160087571 A KR 1020160087571A KR 20160087571 A KR20160087571 A KR 20160087571A KR 20170064978 A KR20170064978 A KR 20170064978A
Authority
KR
South Korea
Prior art keywords
ecc
blocks
bit
value
block
Prior art date
Application number
KR1020160087571A
Other languages
English (en)
Inventor
요아프 쉬어쉬브스키
모셰 트위토
공준진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170064978A publication Critical patent/KR20170064978A/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
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/458Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit

Landscapes

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

Abstract

비휘발성 메모리의 읽기 연산 동안, 오류 정정 부호(error correction code, ECC) 블록의 비트로부터 잘못 기인한(errantly attributed) 값을 정정하는 방법이 게시된다. 상기 정정하는 방법은, 상기 ECC 블록들 중 하나 이상의 ECC 블록들의 j 번째 비트에 오류가 존재하는지를 판단함에 따라, (1) 부정확한 데이터를 가지는 ECC 블록들 각각의 상기 j 번째 비트에 대응하는 비휘발성 메모리 셀로부터, 저장된 전압 값의 추정치를 회수하는 단계, (2) 상기 단계 (1) 에서 회수된 전압 값 추정치들 중에서, ECC 블록에 대응하는, 상기 단계 (1) 에서 회수된 전압 값 추정치가 상기 ECC 블록의 상기 j번째 비트에 “0” 또는 “1”의 비트 값을 할당할지 여부를 결정하기 위한 결정 경계(decision boundary)의 전압 값과 가장 가까운 ECC 블록들을 식별하는 단계, (3) 상기 단계 (2) 에서 식별된 ECC 블록의 상기 j 번째 비트의 값을 반전하는 단계를 포함할 수 있다.

Description

RAID 메모리의 여러 ECC 블록들 내의 데이터를 정정하기 위한 장치 및 방법{METHOD AND APPARATUS FOR CORRECTING DATA IN MULTIPLE ECC BLOCKS OF RAID MEMORY}
본 발명의 개념에 따른 실시 예는 NAND 메모리 내의 블록 수준 또는 외곽 (outer) 에러 정정 코드(error correction code(ECC))를 통해 암호화된(encoded) 된 정보의 신뢰성(reliability)을 개선시키는 것에 관한 것이다.
NAND 플래시 메모리에서, 정보는 데이터 단위(예컨대, 2KB)로 분할되고, 각 분할된 데이터 단위는 ECC 블록으로 암호화된다. 플래시 메모리에 있어서, 기존의 RAID(redundant array of independent disks)는, 모든 N 개의 ECC 블록들에 대한 추가적인 패리티 블록(parity block)을 기록하는 것(writing)을 포함한다. 이 추가적인 패리티 블록은 N 개의 블록들의 (비트단위(bitwise)) 배타적 논리합 (exclusive OR(XOR))으로 구성된다.
Yk 를 k 번째 ECC 블록이라고 하고(k=1, …, N) YN +1 를 상기 패리티 블록이라고 하면, YN +1 = Y1 Y2
Figure pat00002
...
Figure pat00003
YN 이다(이때,
Figure pat00004
는 배타적 논리합을 뜻한다). 상기 패리티 블록 때문에 전체의 기록 속도(writing rate)는 1/N+1로 감소하지만, 추가된 리던던시(redundancy)는 낮은 프레임 오류율(frame error rate(FER))을 제공한다.
위에서 설명한, 패리티 블록을 생성하기 위해 XOR 연산을 채용하는 RAID 구성(configuration)은 단지 RAID의 예시 중 하나이다. 작은 ECC 블록을 생성하기 위해 더 정교한 연산들을 채용하는 다른 RAID 구성도 존재한다. 예컨대, 각 N 개의 ECC 블록들을 위해 2개의 ECC 블록들을 추가하고, 너무 많은 오류들(ECC 실패(fail) 같은 오류들)을 가지는 2개의 블록들을 수정할 수 있는 RAID 구성도 존재한다.
어떤 ECC 라도 약간의 실패율(failure rate)을 가질 수 있다. 예컨대, NAND 플래시 메모리에서 요구되는 FER은 약 10-12이다. 실패 사건(failure event)을 옮기기 위해서, 순환 덧붙임 검사(cyclic redundancy check, CRC) 코드를 이용하여 데이터의 유효성(validity)을 검사한다.
RAID의 주된 개념은, ECC 복호기(decoder)가 실패하더라도 데이터는 여전히 재구성될 수 있다는 것이다. 이러한 재구성은 보통의 읽기보다 훨씬 더 많은 시간을 소비하지만, 매우 드물게 발생한다. 실패된 ECC 블록을 재구성하기 위해서는, RAID 코드 내의 다른 모든 N 개의 블록들이 읽어져야 하고 ECC 에 의해 복호화되어야 한다. 그러면, 다른 모든 N 개의 블록들이 오류들이 없다면(보통의 ECC 복호 후에), 이들 N 개의 코드 워드들의 비트 단위 XOR은 올바른 코드 워드를 제공한다.
반대로, 만약 하나 혹은 그 이상의 잘못된(오류를 갖는) 코드워드들이 상기 RAID 블록 내의 다른 N 개의 ECC 블록들 내에 있다면, 기존의 방법은 실패된 ECC 블록을 재구성할 수 없다.
본 발명이 이루고자 하는 과제는 NAND 메모리 내의 블록 수준 또는 외곽(outer) 에러 정정 코드(error correction code, ECC)를 통해 암호화된(encoded) 된 정보의 신뢰성(reliability)을 개선하는 RAID 메모리의 여러 ECC 블록들 내의 데이터를 정정할 수 있는 위한 장치 및 방법을 제공하는 것에 있다.
본 발명의 개념에 따른 비휘발성 메모리의 읽기 연산 동안, 오류 정정 부호(error correction code, ECC) 블록의 비트로부터 잘못 기인한(errantly attributed) 값을 정정하는 방법은 (a) ECC 블록의 비트로부터 기인한 부정확한 값을 가지는 부정확한(errant) ECC 블록들을, ECC 블록들 중에서 식별하는 단계, (b) 상기 하나 또는 그 이상의 ECC 블록들의 j 번째 비트에 오류가 있는지 여부를 판단하는 단계, 및 (c) 상기 하나 또는 그 이상의 ECC 블록들의 상기 j 번째 비트에 상기 오류가 있는지 여부를 판단함에 따라 연산 (c1) 내지 연산 (c3)을 수행하는 단계를 포함하고, 상기 연산 (c1)은 부정확한 ECC 블록들 각각의 상기 j 번째 비트에 대응하는 비휘발성 메모리 셀로부터, 저장된 전압 값의 추정치를 회수하는 연산이고, 상기 연산 (c2)는, 상기 연산 (c1)에서 회수된 전압 값 추정치들 중에서, ECC 블록에 대응하는, 상기 연산 (c1)에서 회수된 전압 값 추정치가 상기 ECC 블록의 상기 j번째 비트에 “0” 또는 “1”의 비트 값을 할당할지 여부를 결정하기 위한 결정 경계(decision boundary)의 전압 값과 가장 가까운 ECC 블록들을 식별하는 연산이고, 상기 연산 (c3)은 상기 연산 (c2)에서 식별된 ECC 블록의 상기 j 번째 비트의 값을 반전하는 연산일 수 있다.
본 발명의 개념에 따른 메모리 장치는, 비휘발성 메모리 및 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 (a) 다수의 ECC(error correction code) 블록들 각각에 대하여, 상기 비휘발성 메모리의 읽기 연산 동안, 값들을 상기 ECC 블록의 비트들로 돌리고(attribute), (b) ECC 블록의 비트로부터 기인한 부정확한 값을 가지는 부정확한 ECC 블록들을, ECC 블록들 사이에서 식별하고, (c) 상기 하나 또는 그 이상의 ECC 블록들의 j 번째 비트에 오류가 있는지 여부를 판단하고, 상기 하나 또는 그 이상의 ECC 블록들의 상기 j 번째 비트에 상기 오류가 있는지 여부를 판단함에 따라, 연산 (d1) 내지 연산 (d2)를 수행하고, 상기 연산 (d1)은, 상기 부정확한 ECC 블록들 각각의 상기 j 번째 비트에 대응하는 비휘발성 메모리 셀로부터, 저장된 전압 값의 추정치를 회수하는 연산이고, 상기 연산 (d2)는, 상기 연산 (d1)에서 회수된 전압 값 추정치들 중에서, ECC 블록에 대응하는, 상기 연산 (d1)에서 회수된 전압 값 추정치가 상기 ECC 블록의 상기 j번째 비트에 “0” 또는 “1”의 비트 값을 할당할지 여부를 결정하기 위한 결정 경계(decision boundary)의 전압 값과 가장 가까운 ECC 블록들을 식별하는 연산이고, 상기 연산 (d3)는, 상기 연산 (d2)에서 식별된 ECC 블록의 상기 j 번째 비트의 값을 반전하는 연산일 수 있다.
본 발명의 개념에 따른, 프로세서에 의해 실행될 때 상기 프로세서가, 비휘발성 메모리의 리드 연산 동안, ECC 블록의 비트로부터 부정확하게 기인한 값을 정정하는 방법을 실행하는 명령들을 저장하는 비 일시적인 컴퓨터 판독가능 매체(non transitory computer readable medium)에 있어서, 상기 정정하는 방법은, (a) ECC 블록들 중에서, 상기 ECC 블록의 비트로부터 기인한 부정확한 값을 가지는 부정확한 ECC 블록들을 식별하는 단계, (b) 상기 하나 또는 그 이상의 ECC 블록들의 j 번째 비트에 에러가 있는지 여부를 판단하는 단계 및 (c) 상기 하나 또는 그 이상의 ECC 블록들의 상기 j 번째 비트에 상기 에러가 있는지 여부를 판단함에 따라, (c1) 상기 부정확한 ECC 블록들 각각의 상기 j 번째 비트에 대응하는 비휘발성 메모리 셀로부터, 저장된 전압 값의 추정치를 회수하는 단계, (c2) 단계 (c1)에서 회수된 전압 값 추정치들 중에서, ECC 블록에 대응하는 단계 (c1)에서 회수된 전압 값 추정치가, 상기 ECC 블록의 상기 j번째 비트에 “0” 또는 “1”의 비트 값을 할당할지 여부를 결정하기 위한 결정 경계(decision boundary)의 전압 값과 가장 가까운 ECC 블록을 식별하는 단계 및 (c3) 상기 단계 (c2)에서 식별된 ECC 블록의 상기 j 번째 비트의 값을 반전하는 단계를 수행할 수 있다.
본 발명의 실시 예에 따른 장치와 방법은 RAID와 같은(RAID-like) 암호화된 정보의 신뢰성을 개선시키는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분하게 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 장치를 나타낸다.
도 2는 RAID(redundant array of independent disks)의 ECC 블록들 내의 부정확한 데이터를 정정하는 방법을 나타낸다.
도 3은 본 발명의 실시 예를 적용할 때, BCH 경판정(hard decision) 복호기에서의 N=64 개의 ECC 블록들과 1KB 코드 워드들에 대한 가능한 개선을 나타낸다.
도 4는 본 발명의 실시 예를 적용할 때, BCH 경판정(hard decision) 복호기에서의 N=64 ECC 블록들과 2KB 코드 워드들에 대한 가능한 개선을 나타낸다.
본 발명의 실시 예에서, 연판정(soft decision(SD)) 데이터는 종래의 경판정 (hard decision(HD)) 데이터 더하여(또는 대신에) 사용될 수 있다. SD는 그것의 HD 값뿐만 아니라, 각 코드 블록의 모든 비트에 대한 신뢰 값(reliability value)을 제공한다.
상술한 바와 같이, NAND 플래시 메모리와 관련되어, 정보는 데이터 단위(예컨대, 2KB)로 나누어지고, 상기 각 데이터 단위는 ECC 블록으로 암호화된다. 상기 암호화는 모든 N 개의 ECC 블록들에 대하여 추가적인 패리티 블록을 기록함으로써 달성될 수 있다. 이 추가적인 패리티 블록은 상기 N 블록들의 (비트단위) 배타적 논리합으로 구성될 수 있다.
예컨대, Yk 를 k 번째 ECC 블록이라고 하고(k=1, …, N) YN +1 를 상기 패리티 블록이라고 하면, YN+1 = Y1
Figure pat00005
Y2
Figure pat00006
...
Figure pat00007
YN 이다.
본 발명의 개념에 따른 실시 예는 다음과 같이 작동한다.
ECC 블록이 실패할 때(예컨대, Yk 에 오류가 있을 때), 모든 N 개의 다른 ECC 블록들 Yn {1 ≤ n ≤ N+1; n ≠ k} 은 읽어진다. 각 코드 블록 읽기는 실패/성공(각각 F/S로 그룹)으로 표시된다. 읽어진 블록들의 그룹은 {n∈S|Yn}로 표현된다. 제대로(properly) 읽어지는 것에 실패한 블록들의 그룹은 {n∈F|Yn}로 표현된다. 그룹 S의 모든 코드 블록들의 배타적 논리합은 다음 등식에 의해 표현된다.
Figure pat00008
SD 데이터는 에러 블록 Yk 와 제대로 읽어지는 것에 실패한 블록들의 그룹 Yi{i∈F}을 위해 생성된다. 제대로 읽어지는 것에 실패한 블록들의 그룹 Yi{i∈F}을 위한 상기 SD 데이터는 Rl(l = 1, 2, …, |F|+1)로 나타낼 수 있다. 여기서 Rl 에는 상기 Yk 의 SD 데이터가 포함되어 있으므로, 상기 Rl 들(l = 1, 2, …, |F|+1)의 수는 |F|보다 하나 많게 된다. 다시 말하면, 그룹 F는 Yk 를 포함하도록 정의될 수 있고, 나머지들은 그대로 남는다.
Bi-phase shift keying(BPSK)을 위한 비트-심벌 매핑(bit to symbol mapping) G(Y)(Y={0,1}→G(Y)={-1,1})를 G(Y)=2Y-1로 정의하자. 그리고 ηj를 상기 그룹 F의 j 번째 ECC 블록에 대응하는 j 번째 노이즈 벡터라고 하자. 그러면 다음과 같은 관계들을 얻는다.
R1 = G(Yk) + η1, R2 = G(YF {1}) + η2, …, R|F|+1 = G(YF{|F|+1}) + η|F|+1
Yk
Figure pat00009
YF {1}
Figure pat00010
YF{2}
Figure pat00011
...
Figure pat00012
YF{|F|+1} = Z.
Yk 를 최적의 방법으로 재구성하는 것이 바라는 결과이다. 이러한 재구성을 수행하는 많은 방법이 있다. 상기 재구성을 수행하는 방법들의 성능은, 읽기 분해능(read resolution, 즉 읽은 블록의 수), 제대로 읽어지는 것에 실패한 블록들의 그룹에 있는 블록들의 수(즉, 그룹 F 내의 블록들의 수) 및 알고리즘 적 계산 복잡도(algorithmic computation complexity)에 의존할 수 있다.
상기 성능은 상기 어레이 내의 실패의 수에 기초하고, 상기 실패가 추가적인 XOR 블록(YN + 1)에서 발생하는지 또는 상기 어레이 내의 어떠한 다른 블록에서 발생하는지 여부에 기초하지 않는다는 것은 보여질 수 있다.
상기 재구성은 BCH(Bose-Chaudhuri-Hocquenghem) 복호기와 같은 경판정 복호기 또는 저-밀도 패리티 체크(low density parity check, LDPC) 복호기와 같은 연판정 복호기에서 개선될 수 있다.
경판정 복호기의 경우, Z와 Rl은 상기 디코더 입력에서의 오류들의 수를 감소시키기 위해 사용된다. 다음의 예시로부터 약간의 직관이 얻어질 수 있다.
읽기 실패(reading failure)가 Y1을 읽는 동안에 있다고 하자. 읽기 실패를 경험한 Y2를 제외하고, Y2, Y3, …, YN +1의 읽기가 성공한다. R1, R2 및 Z = Y3
Figure pat00013
Y4
Figure pat00014
...
Figure pat00015
YN
Figure pat00016
YN +1 를 찾는 것이 바람직하다.
Figure pat00017
를 아래와 같이 정의하자.
Figure pat00018
이고
Figure pat00019
그러면 다음과 같은 관계들을 얻을 수 있다.
Y1
Figure pat00020
Y2 = Z ⇒
Figure pat00021
=
Figure pat00022
R1=G(Y1) + η1 =
Figure pat00023
+ η1 ⇒ R1=
Figure pat00024
+ η1
R2=G(Y2) + η2 =
Figure pat00025
+ η2 =
Figure pat00026
+ η2 ⇒ R2 =
Figure pat00027
+ η2
(여기서,
Figure pat00028
,
Figure pat00029
,
Figure pat00030
,
Figure pat00031
Figure pat00032
이다)
Figure pat00033
을 슬라이서(slicer)의 입력으로 사용(즉,
Figure pat00034
)에 따라, 상기 노이즈 파워가 1/2로 감소된다.
또 다른 예시로서, 읽기 실패가 Y1에서 일어나고, 또한 블록들 Y2 과 Y3 의 읽기가 실패했으나, 블록들 Y4 내지 YN +1의 읽기가 성공했다고 가정하자. R1, R2, R3, 및 Z는 다음과 같이 찾아질 수 있다.
Z = Y4
Figure pat00035
Y5
Figure pat00036
...
Figure pat00037
YN
Figure pat00038
YN +1
R1 =
Figure pat00039
+ η1
R2 =
Figure pat00040
+ η2
R2 =
Figure pat00041
+ η3
Y1
Figure pat00042
Y2
Figure pat00043
Y3 = Z ⇒
Figure pat00044
Figure pat00045
이고
Figure pat00046
Figure pat00047
Figure pat00048
을 이용하면, 다음을 얻을 수 있다.
Figure pat00049
Figure pat00050
(여기서,
Figure pat00051
이고
Figure pat00052
이다)
이상으로부터, 다음의 세 등식들이 얻어진다.
제1등식 :
Figure pat00053
제2등식 :
Figure pat00054
제3등식
Figure pat00055
단일 수준 셀(single level cells, SLC)들이 {-1,1}과 0 주변에 중심이 있는 수준들로 쓰여지고, 0 V가 결정 경계(decision border)라고 하자. 즉, 읽기의 부호(sign of the read)는 그것이 -1 또는 1인지를 표시한다. 읽기 전압이 0V에 가까워질 때, 오류의 가능성은 증가한다.
간단하지만, 효과적인 해결책은 다음일 수 있다.
Figure pat00056
여기서 sign(x)는 0보다 작은 x에 대하여 -1을 반환하고, 0보다 큰 x에 대하여 +1을 반환한다.
상기 제1조건은 상기 제3등식이 상기 제1등식 및 상기 제2등식과 일치하지 않는 것을 지시하고, 이는 R1, R2, 및 R3 사이에 적어도 하나의 오류(또는 실수(mistake))가 존재하는 것을 지시한다. 상기 제2조건과 상기 제3조건은 상기 오류가 높은 확률로 Y1 블록에 있음을(따라서, 그것의 본래 값이 뒤집힘(반전됨)을) 검증한다.
위의 수학적인 논의가 실제(practice)에 어떻게 적용되는지 잘 이해하기 위하여, 각 블록이 10000비트들을 가지고 있고, 10개의 상기 블록들로 이루어진 RAID가 존재한다고 가정하자. 각 블록의 비트들은 BCH 부호화되어 있기 때문에, BCH 복호는 상기 블록의 오류들을 m개 까지 정정할 수 있다. 이 예시에서는, m을 60비트 오류라고 하자.
상기 RAID에 데이터가 쓰여지면, 새로운 BCH 암호화된 정보들의 9개의 블록들(도합 90000비트들)은 수집되고, 10번째 블록은 상기 9개의 블록들의 (비트 단위) 배타적 논리합 값으로서 생성된다. 이 10번째 블록은 어떠한 새로운 정보를 전달하지 않고, 전적으로 앞선 9개의 블록들에 의해서 결정된다. 상기 10번째 블록의 i번째 비트는 다음과 같이 표현된다.
Figure pat00057
그리고 상기 등식은 아래 등식과 동치(equivalent)이다.
Figure pat00058
(여기서, 아래 첨자는 블록 넘버를 나타내고 위 첨자는 상기 블록에서의 상기 비트의 위치를 나타낸다.)
상기 10개의 데이터의 블록들이 약간의 시간 동안 비휘발성 메모리에 저장되고, 그 뒤에 접근된다고 가정하자. 상기 접근(예컨대, 읽기)은 모든 블록들의 비트 값 각각의 추정치를 얻기 위하여, 오직 수준들 사이의 경계에서 이루어진다. BCH 복호 연산은 상기 10개의 블록들 위에서 각각 수행된다. 보통 10,000비트 블록당 61개 보다 적은 읽기 오류가 있지만, 가끔 그렇지 않을 때도 있다.
만약 상기 블록 내에 61개보다 적은 읽기 오류가 존재한다면, 상기 BCH 복호화 연산은 그 오류들 모두를 정정할 수 있다. 그렇지 않다면, 상기 블록의 상기 정보를 복구하기 위해 추가적인 오류 정정이 요구된다.
각 블록에서 실행되는 CRC 연산은 상기 블록의 데이터가 상기 BCH 복호화 연산에 의해 전부 정정되었는지 여부에 대한 지시(indication)를 제공한다. 이 예시에서, 62개의 오류들이 블록 1에 존재하고, 63개의 오류들이 블록 2 및 블록 3에 존재하고, 그리고 60개 미만의 오류들이 블록 4 내지 블록 10에 존재한다고 가정하자. 상기 BCH 복호 연산은 상기 블록 4 내지 블록 10의 모든 오류들을 정정하고, 이들 블록들에 적용된 상기 CRC는 이들 블록들에 오류들이 없다는 것을 지시한다. 블록 1 내지 블록 3에 적용된 상기 CRC 연산은, 이들 블록 각각이 상기 BCH 복호 연산에 의해 정정될 수 없는 오류들을 포함하고 있다는 것을 지시한다.
블록 1 내지 블록 3의 비트 오류들을 정정하기 위해서, 아래의 식이 만족하는지 여부를 판단한다.
Figure pat00059
여기서, 블록 1 내지 3의
Figure pat00060
는 할당된 비트 값이 추정 값임을 지시하고, 따라서 상기
Figure pat00061
는 잘못된 값일 수 있다. 블록 4 내지 블록 10의 비트 값들은 상기 CRC 연산에 기초하여 올바른 것으로 알려져 있다. 앞서 설명하였듯이, 모든 블록들의 비트 값 각각의 추정치를 얻기 위해 상기 접근(예컨대, 읽기)은 오직 수준들 사이의 경계에서 이루어진다는 것을 상기하자. 예컨대, 셀들 수준들이 “0”을 나타내기 위해 이상적으로 3V에 있고, “1”을 나타내기 위해 이상적으로 4V에 있다고 가정하면, 3.5V가 추정치 경계일 때, 상기 전압이 3.5 V보다 낮으면 상기 추정치는 “0”이고, 3.5 V보다 높으면 상기 추정치는 “1”이다(상기 경계는 불균형하게 할당될 수 있다).
만약,
Figure pat00062
이라면, 오류들이 없거나, 2개의 오류들이 있거나 또는 2 아닌 짝수 개만큼의 오류들이 있다. 2개 혹은 그 이상의 오류들이 있을 확률은, 오류들이 없을 확률보다 훨씬 낮기 때문에, 상기 등식의 등가(equivalency)는 비-오류(no errors)의 지시를 제공하는 것으로 추정된다. 비-오류 또는 2개의 오류들의 지시 때문에, 상기 오류 정정 기법(scheme)은 비-오류를 가정하고, i+1번째 비트를 고려해야 한다.
만약,
Figure pat00063
이라면,
Figure pat00064
,
Figure pat00065
Figure pat00066
사이에 1개의 오류 또는 3개의 오류들이 있다. 3개의 오류들이 발생할 확률은 낮으므로, 우리는 하나의 오류가 존재한다는 것을 가정한다.
상기 단일 비트 오류를 식별하기 위해서, 상기 3개의 부정확할 것으로 예상되는 비트(prospectively errant bit)들의 연성 정보(soft information) 값들이 고려된다. 상기 연성 정보 값들은 각 비트의 읽기 전압(즉, 상기 비트에 대응하는 상기 비휘발성 메모리의 셀에 저장되어 있는 상기 전압의 추정치)이다.
상기 3개의 비트들
Figure pat00067
,
Figure pat00068
Figure pat00069
의 연성 정보 값(즉, 셀 전압) 각각이 3.9V, 3.2 V 및 4.3 V로 측정되고, 상기 수준들은 3 V(“0”라 한다)와 4 V(“1”라 한다)의 중심에 있고, 그리고 3.5 V가 상기 읽기(read) 전압(결정 경계)이라고 가정하자.
상기 오류 정정 기법에 따르면, 3V와 4V 사이의 결정 경계에 가장 가까운 연성 정보 값에 대응하는 하드(hard) 값(즉, 1 또는 0)은 상기 하드 값의 반대 값으로 변한다. 비트
Figure pat00070
의 3.2 V 전압이 3.5 V의 상기 결정 경계에 가장 가깝기 때문에, 상기 비트
Figure pat00071
의 하드 값은, 상기 하드 값의 반대 값으로 변한다. 예컨대, 상기 비트
Figure pat00072
의 비트 값이 원래 “0”으로 측정된 경우, 상기 비트 값은 “1”로 변한다. 그리고 상기 비트
Figure pat00073
의 비트 값이 원래 “1” 으로 측정된 경우, 상기 비트 값은 “0”으로 바뀐다. 비트들
Figure pat00074
Figure pat00075
는 변하지 않는다.
이 예시에서, 상기 비트
Figure pat00076
의 비트 값이 원래 “0”으로 측정되었고, 상기 비트 값은 “1”로 변화한다. 이러한 연산들은 비트 인덱스 i 각각에 대하여 수행된다. 이 예시에서 상기 i 는 1≤i≤10000 이다.
그 후에, 상기 BCH 복호 연산은, 이전에 오류들을 가지고 있다고 식별된(마지막에 수행된 CRC 연산에 의해) 상기 블록들 각각에 대해 수행된다. 상기 BCH 복호화는 이전에 오류들을 가지고 있지 않다고 식별된 블록들에 대해서는 실행될 필요가 없다. 이러한 블록들은 제대로 복호 되었기 때문이다. 따라서, 상기 CRC 연산은 가장 최근에 BCH 복호된 블록들에 대해 수행된다.
이 예시를 위해, 상기 i번째 비트에 대해 위에서 설명된 연산들이 수행된 후에, 61, 61 및 59개의 오류들이 처음 3개의 블록들 각각에 남아 있다고 가정하자. (이러한 절차 후에)블록당 남아있는 오류들의 수는 보통 60개보다 훨씬 적지만, 이 예시는 61, 61 및 59개의 오류들이 남아 있다고 가정한다.
위에서 설명한 배타적 논리합 및 비트 변환 연산들을 수행한 후에, 필요에 따라, 10,000개의 비트 위치들 각각에 대해, 상기 CRC 연산을 이전에 통과하지 않은 블록들에 대해 다시 상기 BCH 복호와 상기 CRC 연산이 수행된다. 이 예시에서 메모리 블록 3의 59개의 오류들 모두는 상기 BCH 복호에 의해서 정정되었으나, 메모리 블록 1과 메모리 블록 2는 상기 BCH 복호에 의해 정정되기에는 너무 많은 수의 오류들을 포함한다.
상술한 배타적 논리합과 비트 변환 연산은, 등식
Figure pat00077
을 이용함으로써 10,000개의 비트 위치들 각각에 대해서 반복될 수 있다. 이는, 블록 3에는 뒤집히거나 오류로 의심되는 비트들이 없을 것임을 의미한다.
이제, 블록 1과 블록 2로부터 정정된 오류들이 있을 것이고, 상기 블록들에 있는 오류들의 수가 감소할 것이다. 상술한 기법은 모든 블록들이 정정될 때까지 반복된다.
ECC가 LDPC와 같은 SISO(soft in soft out) 복호기일 때, 상기 패리티 블록은 다른 방식으로 사용된다. 상기 패리티 블록은, 위에서 설명한 것처럼 상기 복호기의 입력에서 HD 오류들의 수를 감소시키기 위해 사용되지 않는다. 상기 패리티 블록은, 대신에, 상기 복호기의 입력에서 연성(soft) 대수 우도 비(log likelihood ratio, LLR)들을 개선시키기 위해 사용된다.
상기 연성 복호기(예컨대, LDPC)에서 LLR들을 개선하는 것은 다양한 방법으로 행해질 수 있다. 상기 복호기 출력에서의 LLR들을 LLRk i(k=0,1, …, N)로 표시하자. 여기서 k는 상기 RAID 배열에 있는 블록 넘버이고, i는 그 블록의 비트 인덱스이다.
만약 블록이 오류 없이 성공적으로 읽어졌다(예컨대, CRC가 비-오류를 확정)면, 그 블록의 모든 LLR들은 ±∞(또는 ±”큰(large)” 값)으로 설정되어야 한다. 여기서 부호는 상기 올바른 비트 값에 대응한다(복호된 비트 0은 -∞로, 비트 1은 +∞로).
상기 패리티 정보를 이용하는 최적의 LLR 출력은 아래와 같이 나타낼 수 있다.
Figure pat00078
상기 연성 복호기는 상기 LLR 출력을 (상기 위 등식을 상기 패리티 블록 정보에 삽입한 후에) 다시 복호할 수 있고, 상기 위 등식은 상기 연성 복호기 출력에 다시 구현될 수 있다. 이런 반복적인 과정은 모든 비트들이 올바르게 복호화되었을 때 정지한다.
도 1은 본 발명의 실시 예에 따른 메모리 장치를 나타낸다. 메모리 장치(100)는 메모리 컨트롤러(110)와 비휘발성 메모리(120)를 포함한다. 비휘발성 메모리(120)는 앞서 설명한 것처럼, RAID를 포함할 수 있다.
메모리 장치(100)는 주소 복호기(address decoder), 하나 또는 그 이상의 입/출력 데이터 버퍼(buffer), 전압 생성기, RAM(random access memory), 전력 공급원 등과 같은 다른 구성요소들을 포함할 수 있다. 그러나 이들 구성요소들의 기능은 본 발명의 주제에 있어서 중요하지 않기 때문에, 이들 구성요소들은 더 설명되지 않으며, 도시되지 않는다.
메모리 컨트롤러(110)는 비휘발성 메모리(120)에 저장하기 위해 호스트(미 도시)로부터 데이터를 수신하고, 상기 호스트에 의한 요청에 따라, 상기 호스트로의 수송을 위해 비휘발성 메모리(120)에 의해 저장된 데이터들을 읽는다.
메모리 컨트롤러(110)는 비휘발성 메모리(120)로 데이터를 저장하기 위한 연산들을 제어하고, 비휘발성 메모리(120)로부터 상기 데이터들을 회수할 수 있다.
도 2는 본 발명의 실시 예에 따라, ECC 데이터 블록 내의 부정확한 데이터를 정정하는 방법을 나타낸다. 상기 방법은 메모리 컨트롤러(110)에 의해 실행될 수 있다. 이 실시 예를 설명하기 위해서, 앞서 설명한 것처럼, 비휘발성 메모리(120)는 Y1 … YN ECC 데이터 블록들과 YN +1 패리티 블록을 저장한다고 가정하자.
메모리 컨트롤러(110)는 비트 인덱스 “j”를 1의 값으로 설정한다(S210).
메모리 컨트롤러(110)는 상기 각 블록 내에 있는 모든 오류들을 정정하기 위해서, N+1개의 ECC 블록들 각각에 대해 BCH 복호화를 적용한다(S215).
메모리 컨트롤러(110)는 상기 각 블록이 상기 BCH 복호화에 의해 정정될 수 없었던 오류들을 포함하는지 여부를 판단하기 위해서, N+1개의 ECC 블록들 각각에 대해 CRC 알고리즘을 적용한다(S220).
메모리 컨트롤러(110)는 상기 CRC 알고리즘의 적용(S220 및 S275)으로부터 판단된 대로, 오류들을 포함하는 블록들을 부정확한 블록들로서 식별한다(S225).
메모리 컨트롤러(110)는 몇몇 고려사항들에 기초하여 연판정 오류 정정 기법(soft decision error correction scheme)을 적용할지 여부를 판단한다(S230). 예컨대, 단계 S220에서, ECC 블록들 중 오류를 가지고 있다고 식별된 블록들이 없는 경우, 더 이상의 오류 정정은 불필요하기 때문에, 메모리 컨트롤러(110)는 도 2에 도시된 상기 방법을 종료한다.
상기 ECC 블록들 중, 단 하나의 블록에 오류들이 존재하는 경우, 하나의 부정확한 블록 내에 있는 상기 오류들은 오류들이 없는 N 개의 ECC 블록들에 대해 적용된 배타적 논리합 연산(상기 하나의 부정확한 블록의 올바른 비트 값들을 식별하기 위한)을 통해 정정될 수 있기 때문에, 메모리 컨트롤러(110)는 다시 도 2에 도시된 상기 방법을 종료할 수 있다.
또한, 상기 연판정 오류 정정 기법이, 그것이 정정할 수 있는 상기 블록들 각각에 있는 상기 모든 오류들을 정정하고, 상기 BCH 복호화가 비트 오류들을 가지지 않는 적어도 N 개의 데이터 블록들을 생성할 수 없는 경우, 메모리 컨트롤러(110)는 도 2에 도시된 상기 방법을 종료할 수 있다.
예컨대, ECC 블록들의 동일한 그룹이 2개의 분리된 루프(단계 S225 내지 단계 S275를 통과하는)에서 실행되는 상기 BCH 복호화 연산(S215)에 의해 부정확한 비트들을 가진다고 판단(S225)된다면, 메모리 컨트롤러(110)는 부정확한 데이터에 대한 더 이상의 개선이 가능하지 않다고 판단하고, 도 2에 도시된 상기 방법을 중단할 수 있다.
그렇지 않다면, 메모리 컨트롤러(110)는 연판정 오류 정정 기법을 실행할지(또는 만약 실행이 이미 시작되었다면, 실행하는 것을 계속 할지)를 판단할 수 있다(S230).
메모리 컨트롤러(110)는 상기 N+1 개의 블록들의 상기 j번째 비트의 배타적 논리합을 수행할 수 있다(S235). 상기 배타적 논리합 연산(S235)이 0의 값을 생성한다면, 상기 N+1 개의 ECC 블록들 각각의 상기 j번째 비트에 대한 오류들은 존재하지 않을 가능성이 크다. 상기 배타적 논리합 연산(S235)이 1의 값을 생성한다면, 상기 ECC 블록들 중 하나 이상의 ECC 블록의 상기 j번째 비트에 적어도 하나의 오류가 존재한다.
메모리 컨트롤러(110)는 상기 배타적 논리합 연산(S235)이 상기 N+1 개의 ECC 블록들의 상기 j번째 비트들 사이에 있는 적어도 하나의 부정확한 비트의 존재를 지시하는지 여부를 판단한다(S240). 부정확한 비트가 존재하지 않은 것으로 판단(S240)되면, 메모리 컨트롤러(110)는 단계 S255로 진행한다.
부정확한 비트가 존재한다고 판단(S240)되면, 메모리 컨트롤러(110)는 단계 S225에서 부정확한 데이터를 가지는 것으로 식별된 ECC 블록들 각각의 상기 j번째 비트에 해당하는 메모리 셀들에 저장된, 전압 값들의 추정치를 회수한다.
이들 회수된 전압 값들 사이에서, 메모리 컨트롤러(110)는 상기 ECC 블록의 상기 j번째 비트에 비트 값 “0” 또는 “1”을 할당하기 위한 강판정 경계(hard decision boundary)가 가지는 전압 값과 가장 가까운 특정한 전압 값을 가지는 해당하는 ECC 블록을 식별한다(S245).
메모리 컨트롤러(110)는 상기 식별된(S245) ECC 블록의 상기 j 번째 비트의 값을 반전한다(S250).
그 후에, 메모리 컨트롤러(110)는 상기 연판정 오류 정정 기법이 상기 ECC 블록들의 모든 비트에 대해서 실행되고 있는지를 판단한다(S255).
상기 연판정 오류 정정 기법이 상기 ECC 블록들의 모든 비트에 대해서 실행되고 있지 않다면, 메모리 컨트롤러(110)는 비트 인덱스 j의 값을 증가시키고(S260), j의 상기 다음 값까지 상기 ECC 블록들의 특정한 비트를 식별하는 상기 연판정 오류 정정 기법(단계 S235 내지 단계 S255에 의해 정의된) 을 반복한다.
메모리 컨트롤러(110)는 상기 연판정 오류 정정 기법이 상기 ECC 블록들의 모든 비트에 대해 실행될 때까지 단계 S235 내지 S260을 반복한다.
비록 도 2와 이전의 설명은 상기 비트 인덱스 “j”의 값이 가장 낮은 값으로부터 가장 높은 값으로 할당되는 것을 지시하지만, 이러한 값들은 어떠한 순서에 의해서도 할당될 수 있다.
메모리 컨트롤러(110)가 단계 S235 내지 S255가 상기 ECC 블록들의 모든 비트에 대해서 실행되는지 판단(S255)한 후에, 메모리 컨트롤러(110)는 상기 비트 인덱스 j의 상기 값을 1로 재설정할 수 있다(S265).
메모리 컨트롤러(110)는 상기 CRC 알고리즘의 적용(S225와 S275)에 기초하여, 부정확한 블록들이라고 마지막에 식별된(S225) ECC 블록들 각각에 대하여 개별적으로 BCH 복호화를 적용한다(S270). 상기 BCH 복호화는 상기 BCH 복호화가 정정할 수 있는 오류의 최대 개수까지 각 블록의 모든 오류들을 정정한다.
메모리 컨트롤러(110)는 단계 S270에서 BCH 복호화된 블록들 각각에 대하여, 상기 각각의 블록이 상기 BCH 복호화에 의해 정정될 수 없었던 오류들을 포함하는지 여부를 판단하기 위해 상기 CRC 알고리즘을 적용할 수 있다(S275).
그 후에 메모리 컨트롤러(110)는 단계 S225 내지 S275 중 전부 또는 일부를 통과하는(through) 또 다른 루프를 시작할 수 있다. 메모리 컨트롤러(110)는, 단계 S230에 관하여 이전에 식별된 조건들 중 하나가 상기 방법을 종료하기 위해 발생할 때까지, 단계 S215 내지 S275의 전부 또는 일부를 통과하는 루프들을 반복할 수 있다.
도 2에 도시된 상기 방법은 비휘발성 컴퓨터-판독가능-매체(computer readable medium)로부터 읽어진 지시(instruction)들을 실행하는 컴퓨터 프로세서에 의해 실행될 수 있다. 상기 컴퓨터 프로세서는 메모리 컨트롤러(100)일 수 있다.
본 발명에 따른 실시 예에 설명된 상기 BCH 복호기는 다른 경판정 복호기들로 대체될 수 있다. 마찬가지로, 본 발명에 따른 실시 예에 설명된 상기 BCH 복호기는, LDPC 복호기와 같은 연판정 복호기로도 대체될 수 있다.
도 3은 BCH 경판정 복호기에서의 N=64 개의 ECC 블록들과 1KB 코드 워드들에 대한 가능한 개선을 나타낸다. 도 4는 BCH 경판정 복호기에서의 N=64 개의 ECC 블록들과 2KB 코드 워드들에 대한 가능한 개선을 나타낸다. 다른 블록 크기와 코드 워드의 크기 또한 사용될 수 있다.
각각의 개념 도에서 도시된 구성은 단지 개념적인 관점에서 이해되어야 할 것이다. 각각의 개념 도에서 도시된 각 구성의 형상, 구조 및 크기는 본 발명의 이해를 위하여 과장 또는 축소되었으며, 실제 구현된 구성은, 상기 각각의 개념 도에 도시된 구성과 다른 물리적인 형상을 가질 수 있다. 본 발명은 각각의 개념 도에 도시된 물리적 형상이나 크기에 제한되지 않는다.
각각의 블록 도에 도시된 장치 구성은 본 발명을 이해하는 것을 돕기 위하여 제공된다. 각각의 블록은 기능들에 따라 더 작은 블록들을 포함할 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 블록으로 구현될 수 있다. 즉, 본 발명은 각각의 블록 도에 도시된 구성들로 한정되지 않는다.
도면에 도시된 상기 연산(혹은 단계)들은 본 발명의 하나 이상의 실시 예를 나타내지만, 도시된 순서(sequence)에 한정되지는 않는다. 본 발명의 실시 예에서, 몇몇 연산들은 생략될 수 있으며 추가적인 연산들이 포함될 수 있다. 또한, 상기 연산들의 상기 순서는 바뀔 수 있으며 몇몇 연산들은 동시에 또는 순차적으로 수행될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 메모리 장치
110: 메모리 컨트롤러
120: 비휘발성 메모리

Claims (10)

  1. 비휘발성 메모리의 읽기 연산 동안, 오류 정정 부호(error correction code, ECC) 블록의 비트로부터 잘못 기인한(errantly attributed) 값을 정정하는 방법에 있어서,
    (a) ECC 블록의 비트로부터 기인한 부정확한 값을 가지는 부정확한(errant) ECC 블록들을, ECC 블록들 중에서 식별하는 단계;
    (b) 상기 하나 또는 그 이상의 ECC 블록들의 j 번째 비트에 오류가 있는지 여부를 판단하는 단계; 및
    (c) 상기 하나 또는 그 이상의 ECC 블록들의 상기 j 번째 비트에 상기 오류가 있는지 여부를 판단함에 따라,
    (c1) 부정확한 ECC 블록들 각각의 상기 j 번째 비트에 대응하는 비휘발성 메모리 셀로부터, 저장된 전압 값의 추정치를 회수하는 단계(operation);
    (c2) 상기 단계 (c1)에서 회수된 전압 값 추정치들 중에서, ECC 블록에 대응하는, 상기 단계 (c1)에서 회수된 전압 값 추정치가 상기 ECC 블록의 상기 j번째 비트에 “0” 또는 “1”의 비트 값을 할당할지 여부를 결정하기 위한 결정 경계(decision boundary)의 전압 값과 가장 가까운 ECC 블록들을 식별하는 단계; 및
    (c3) 상기 단계 (c2)에서 식별된 ECC 블록의 상기 j 번째 비트의 값을 반전하는 단계를 수행하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    (d) 1≤j≤m (여기서 m은 상기 각 ECC 블록 내에 있는 비트들의 수)인 모든 j에 대하여, 상기 단계 (b)와 상기 단계 (c)를 수행하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 단계 (a)에서 2개 미만의 부정확한 블록이 식별될 때까지 또는,
    상기 단계 (a)에서 식별된 부정확한 블록들의 수가 상기 단계 (a) 내지 상기 단계 (d)의 연속적인 반복 동안 감소하지 않을 때까지, 상기 단계 (a) 내지 상기 단계 (d)를 반복하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 ECC 블록들 중에서, 상기 ECC 블록의 비트로부터 기인한 부정확한 값을 가지는 상기 부정확한 ECC 블록들을 식별하기 위해, CRC(cyclic redundancy check) 코드가 각각의 ECC 블록에 적용되는 방법.
  5. 제4항에 있어서,
    상기 CRC 코드를 각 ECC 블록에 적용하는 단계 이전에, BCH(Bose Chaudhuri Hocquenghem) 복호화를 각 ECC 블록에 수행하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서,
    (d) 1≤j≤m (여기서 m은 상기 각 ECC 블록 내에 있는 비트들의 수)인 모든 j에 대하여, 상기 단계 (b)와 상기 단계 (c)를 수행하는 단계를 더 포함하는 방법.
  7. 비휘발성 메모리; 및
    메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는
    (a) 다수의 ECC(error correction code) 블록들 각각에 대하여, 상기 비휘발성 메모리의 읽기 연산 동안, 값들을 상기 ECC 블록의 비트들로 돌리고(attribute),
    (b) ECC 블록의 비트로부터 기인한 부정확한 값을 가지는 부정확한 ECC 블록들을, ECC 블록들 사이에서 식별하고,
    (c) 상기 하나 또는 그 이상의 ECC 블록들의 j 번째 비트에 오류가 있는지 여부를 판단하고,
    (d) 상기 하나 또는 그 이상의 ECC 블록들의 상기 j 번째 비트에 상기 오류가 있는지 여부를 판단함에 따라,
    (d1) 상기 부정확한 ECC 블록들 각각의 상기 j 번째 비트에 대응하는 비휘발성 메모리 셀로부터, 저장된 전압 값의 추정치를 회수하는 연산(operation),
    (d2) 상기 연산 (d1)에서 회수된 전압 값 추정치들 중에서, ECC 블록에 대응하는, 상기 연산 (d1)에서 회수된 전압 값 추정치가 상기 ECC 블록의 상기 j번째 비트에 “0” 또는 “1”의 비트 값을 할당할지 여부를 결정하기 위한 결정 경계(decision boundary)의 전압 값과 가장 가까운 ECC 블록들을 식별하는 연산,
    (d3) 상기 연산 (d2)에서 식별된 ECC 블록의 상기 j 번째 비트의 값을 반전하는 연산을 수행하는 메모리 장치.
  8. 제7항에 있어서, 상기 메모리 컨트롤러는,
    (e) 1≤j≤m (여기서 m은 상기 각 ECC 블록 내에 있는 비트들의 수)인 모든 j에 대하여, 상기 연산 (c)와 상기 연산 (d)를 더 수행하는 메모리 장치.
  9. 제8항에 있어서, 상기 메모리 컨트롤러는,
    상기 연산 (b)에서 2개 미만의 부정확한 블록이 식별될 때까지 또는,
    상기 연산 (b)에서 식별된 부정확한 블록들의 수가, 상기 연산 (b) 내지 상기 연산 (e)의 연속적인 반복 동안 감소하지 않을 때까지, 상기 연산 (b) 내지 상기 연산 (e)를 더 반복하는 메모리 장치.
  10. 프로세서에 의해 실행될 때, 상기 프로세서가 비휘발성 메모리의 리드 연산 동안, ECC 블록의 비트로부터 부정확하게 기인한 값을 정정하는 방법을 실행하는 명령들을 저장하는 비 일시적인 컴퓨터 판독가능 매체(non transitory computer readable medium)에 있어서,
    상기 정정하는 방법은,
    (a) ECC 블록의 비트로부터 기인한 부정확한 값을 가지는 부정확한 ECC 블록들을, ECC 블록들 중에서 식별하는 단계;
    (b) 상기 하나 또는 그 이상의 ECC 블록들의 j 번째 비트에 에러가 있는지 여부를 판단하는 단계; 및
    (c) 상기 하나 또는 그 이상의 ECC 블록들의 상기 j 번째 비트에 상기 에러가 있는지 여부를 판단함에 따라,
    (c1) 상기 부정확한 ECC 블록들 각각의 상기 j 번째 비트에 대응하는 비휘발성 메모리 셀로부터, 저장된 전압 값의 추정치를 회수하는 단계(operation);
    (c2) 상기 단계 (c1)에서 회수된 전압 값 추정치들 중에서, ECC 블록에 대응하는 상기 단계 (c1)에서 회수된 전압 값 추정치가, 상기 ECC 블록의 상기 j번째 비트에 “0” 또는 “1”의 비트 값을 할당할지 여부를 결정하기 위한 결정 경계(decision boundary)의 전압 값과 가장 가까운 ECC 블록을 식별하는 단계; 및
    (c3) 상기 단계 (c2)에서 식별된 ECC 블록의 상기 j 번째 비트의 값을 반전하는 단계를 수행하는 매체.
KR1020160087571A 2015-12-02 2016-07-11 Raid 메모리의 여러 ecc 블록들 내의 데이터를 정정하기 위한 장치 및 방법 KR20170064978A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/956,726 US20170161141A1 (en) 2015-12-02 2015-12-02 Method and apparatus for correcting data in multiple ecc blocks of raid memory
US14/956,726 2015-12-02

Publications (1)

Publication Number Publication Date
KR20170064978A true KR20170064978A (ko) 2017-06-12

Family

ID=58800282

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160087571A KR20170064978A (ko) 2015-12-02 2016-07-11 Raid 메모리의 여러 ecc 블록들 내의 데이터를 정정하기 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US20170161141A1 (ko)
KR (1) KR20170064978A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107947902A (zh) * 2017-12-04 2018-04-20 郑州云海信息技术有限公司 一种高速接口芯片的数据差错处理系统及方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942662B2 (en) 2018-11-30 2021-03-09 International Business Machines Corporation Relocating and/or re-programming blocks of storage space based on calibration frequency and resource utilization
CN112099986B (zh) * 2020-08-11 2022-02-01 西安电子科技大学 一种分支流水线结构的ecc译码系统及方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101397549B1 (ko) * 2007-08-16 2014-05-26 삼성전자주식회사 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법
CN102077173B (zh) * 2009-04-21 2015-06-24 艾格瑞系统有限责任公司 利用写入验证减轻代码的误码平层
JP5017407B2 (ja) * 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP5651457B2 (ja) * 2010-12-15 2015-01-14 株式会社東芝 半導体記憶装置
KR101678919B1 (ko) * 2011-05-02 2016-11-24 삼성전자주식회사 메모리 시스템 및 에러 정정 방법
JP2013029882A (ja) * 2011-07-26 2013-02-07 Toshiba Corp メモリコントローラ、半導体記憶装置および復号方法
US9577673B2 (en) * 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US9235467B2 (en) * 2013-03-15 2016-01-12 Pmc-Sierra Us, Inc. System and method with reference voltage partitioning for low density parity check decoding
US9252810B2 (en) * 2014-02-20 2016-02-02 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
TWI564904B (zh) * 2014-05-13 2017-01-01 群聯電子股份有限公司 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107947902A (zh) * 2017-12-04 2018-04-20 郑州云海信息技术有限公司 一种高速接口芯片的数据差错处理系统及方法

Also Published As

Publication number Publication date
US20170161141A1 (en) 2017-06-08

Similar Documents

Publication Publication Date Title
US10613930B2 (en) Global error recovery system
US9417963B2 (en) Enabling efficient recovery from multiple failures together with one latent error in a storage array
US9164839B2 (en) System and method for correcting errors in data using a compound code
US10146482B2 (en) Global error recovery system
CN108053862B (zh) 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据
US9569306B1 (en) Recovery of multi-page failures in non-volatile memory system
US9673840B2 (en) Turbo product codes for NAND flash
WO2018142391A1 (en) Device, system and method of implementing product error correction codes for fast encoding and decoding
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
US8635508B2 (en) Systems and methods for performing concatenated error correction
US10574272B2 (en) Memory system
US9189327B2 (en) Error-correcting code distribution for memory systems
CN111538621B (zh) 针对位线故障的软芯片猎杀恢复
KR20170064978A (ko) Raid 메모리의 여러 ecc 블록들 내의 데이터를 정정하기 위한 장치 및 방법
US10678662B2 (en) Computing system with data protection mechanism with soft information and method of operation thereof
WO2016122515A1 (en) Erasure multi-checksum error correction code
CN113168882B (zh) 一种编码方法、译码方法以及存储控制器
US11042440B2 (en) Data checksums without storage overhead
JP2020042512A (ja) メモリシステム
US11770133B1 (en) Exact ber reporting in the presence of CRC termination
US11204831B2 (en) Memory system
Haratsch Media management for high density NAND flash memories
US11563450B1 (en) System and method for high reliability fast RAID decoding for NAND flash memories
KR20230132697A (ko) 일반 연결 코드 코드워드를 디코딩하는 장치, 저장 시스템 및 그 제어 방법
CN111061520A (zh) 一种高可靠性加载运行嵌入式软件的方法