KR20110031092A - 메모리 시스템 및 메모리 시스템의 제어 방법 - Google Patents

메모리 시스템 및 메모리 시스템의 제어 방법 Download PDF

Info

Publication number
KR20110031092A
KR20110031092A KR1020100085836A KR20100085836A KR20110031092A KR 20110031092 A KR20110031092 A KR 20110031092A KR 1020100085836 A KR1020100085836 A KR 1020100085836A KR 20100085836 A KR20100085836 A KR 20100085836A KR 20110031092 A KR20110031092 A KR 20110031092A
Authority
KR
South Korea
Prior art keywords
sector
data
error
ldpc
memory system
Prior art date
Application number
KR1020100085836A
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 KR20110031092A publication Critical patent/KR20110031092A/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online 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)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

복수의 조각의 섹터 데이터로 이루어진 프레임 데이터를 기억하도록 구성된 메모리 카드와, 메모리 카드와 프레임 데이터를 송수신하도록 구성된 호스트를 구비하는 메모리 시스템으로서, 메모리 카드는, 섹터 데이터를 기준으로 하여 경 판정 코드로 BCH 디코딩 처리를 수행하도록 구성된 ECC1 디코더와, 프레임 데이터를 기준으로 하여 LDPC 코드로 LDPC 디코딩 처리를 수행하도록 구성된 ECC2 디코더와, BCH 디코딩 처리에서 에러 데이터의 유무에 관한 정보를 기억하도록 구성된 섹터 에러 플래그 섹션과, 섹터 에러 플래그 섹션에서의 정보에 기초하여 에러 데이터를 포함하지 않는 섹터 데이터의 신뢰도를 증가시키는 제어를 LDPC 디코딩 처리에서 수행하도록 구성된 ECC 제어 섹션을 포함한다.

Description

메모리 시스템 및 메모리 시스템의 제어 방법{MEMORY SYSTEM AND CONTROL METHOD FOR THE SAME}
[관련 출원의 상호 참조]
본 출원은 2009년 9월 18일에 일본에서 출원된 일본 출원 제2009-218044호를 우선권 주장하며, 이 내용이 참조로 본 명세서에 원용된다.
본 발명은 메모리 시스템 및 메모리 시스템의 제어 방법에 관한 것이며, 보다 구체적으로, 대수-기반(algebra-based) 에러 정정 코드들과 확률-기반 반복 연산을 이용한 에러 정정 코드들을 채용한 에러 정정 섹션을 구비한 메모리 시스템에 관한 것이다.
반도체 메모리 분야에서, 에러 정정 코드들에 관한 발전이 진행 중이다. 에러 정정 코드들 중에서, 최근, 확률-기반 반복 연산을 이용하는 에러 정정 코드들인 저밀도 패리티 체크 코드들(이하, "LDPC 코드"라 지칭함)이 특히 주목받고 있다. LDPC 코드들에 대해서는, 코드 성능의 이론적 한계인 새논 한계(Shannon limit)에 근접한 우수한 성능이 보고되었다.
실제 널리 사용되는 BCH 코드들과 RS(Reed-Solomon) 코드들과 같은 경 판정 코드(hard decision code)들을 이용하는 대수-기반 에러 정정 방식들에서는, 정정가능한 비트 에러들의 비율이 증가하면, 패리티 부분 또는 정정 회로의 크기의 증가와 같은 문제점들을 포함하게 된다. 그러나, 에러들을 소정의 수 또는 미만으로 안정적으로 정정하기 위한 이들 방식들의 능력은 수학적으로 증명된 바 있다.
한편, 확률-기반 반복 연산을 이용한 에러 정정 방식인 LDPC 코드들에 대해서는, 코드들의 정정 능력 자체를 명확히 규정하는 것이 곤란하다. 에러 정정은 오히려 적은 비트 에러에 대해서도 종종 실패할 수 있다.
LDPC 코드와 BCH 코드 모두를 이용하는 연접 코드(concatenated code)를 채용한 에러 정정 방식들이 공지되어 있다. 예컨대, 전파법(1950년 법률 제131호) 제38조의 규정에 기초하는, 표준 텔레비전 방송 등 중 디지털 방송에 관한 송신의 표준 방식("Ordinance for Standard Transmission Systems for Digital Broadcasting among Standard Television Broadcasting, Etc"), 별도의 표 제39호의 고도 협대역 전송 디지털 방송의 에러 정정 방식("Error Correction Scheme for Advanced Narrow-band Transmission Digital Broadcasting") (제49조 제3항 관련)에는 외부 코드로서 BCH 코드와 내부 코드로서 LDPC 코드를 이용하는 연접 코드를 채용하는 에러 정정 방식이 규정되어 있다.
그러나, LDPC 코드들로 처리되는 디코딩 처리는 후술되는 바와 같이 반복 처리를 반복하여 수행되기 때문에, 많은 횟수의 반복 처리가 수행될 수 있다. 이는 디코딩 처리 시간을 증가시키며, 또한 디코딩 처리에 필요한 전력 소비를 증가시킨다.
또한, LDPC 코드들을 이용하는 에러 체크 및 정정(이하 "ECC"라 칭함) 회로에서, 처리 시간은 코드 길이에 비례하여 증가된다. 동시에, 반복 처리 회로뿐만 아니라 패리티 체크 회로의 크기도 증가된다.
여기서, 일본 특허 출원 공개 공보 제2008-219528호는 미리 정해진 값을 초과하는 신뢰도를 갖는 데이터에 대한 반복 처리를 생략하는 ECC 회로를 제안한다. 그러나, 작업의 병렬 처리에는 비트 노드 신뢰도에 대한 복수의 임계값 판정 회로가 필요하기 때문에, ECC 회로에 있어서 회로 크기가 증가된다. 예컨대, 256 x 256 단위 행렬에 의한 통상 형태의 패리티 체크 행렬을 이용하는 방식에서, 256 개의 연산 유닛에 있어서 256개의 비트 노드들의 연산의 병렬 처리는 전체 작업 유닛들 각각에 대하여 임계값 판정 회로(예컨대, 크기 비교기(magnitude comparator)를 필요로 한다. 따라서, 회로 크기는 상당히 증가된다.
또한, 상기 ECC 회로에서, 반복 처리의 수가 반복의 미리 정해진 최대수를 초과하여, 에러 정정이 수렴(converge)되지 않는 것을 발견한 경우에, 임계값을 초과한 안전성을 갖는 데이터를 포함하여 다시 반복 처리가 수행된다. 예컨대, 반복의 최대수가 8이라면, 8회의 반복 처리후에 반복 처리는 다시 수행되고, 따라서 처리 속도는 감소할 수 있다.
본 출원의 본 발명의 일 양태의 메모리 시스템은 복수의 섹터 데이터로 이루어진 프레임 데이터를 인코딩하여 얻어진 코딩된 프레임 데이터를 기억하도록 구성된 기억 장치와, 상기 기억 장치와 상기 프레임 데이터를 송수신하도록 구성된 호스트를 구비하며, 상기 기억 장치는 섹터 데이터를 기준으로 하여 경 판정 코드(hard decision code)로 경 판정 코드 디코딩 처리를 수행하도록 구성된 제1 ECC 디코더와, 프레임 데이터를 기준으로 하여 LDPC 코드로 LDPC 디코딩 처리를 수행하도록 구성된 제2 ECC 디코더와, 경 판정 코드 디코딩 처리에서의 에러 데이터의 유무에 관한 정보를 기억하는 섹터 에러 플래그를 각각의 섹터마다 설정하도록 구성된 섹터 에러 플래그 섹션과, 섹터 에러 플래그 섹션에서의 정보에 기초하여, 에러 데이터를 포함하지 않는 섹터 데이터의 신뢰도를 증가시키는 제어를 LDPC 디코딩 처리에서 수행하도록 구성된 ECC 제어 섹션을 포함한다.
본 출원의 본 발명의 다른 양태에 따른 메모리 시스템의 제어 방법은, 프레임 데이터를 구성하는 복수의 섹터 데이터 각각의 CRC 패리티를 생성하여 부가하는 CRC 인코딩을 수행하는 단계와, 각각의 상기 섹터 데이터의 경 판정 코드 패리티를 생성하여 부가하는 경 판정 인코딩을 수행하는 단계와, CRC 패리티와 경 판정 코드 패리티를 포함하는 프레임 데이터의 LDPC 패리티를 생성하여 코딩된 프레임 데이터를 생성하는 LDPC 인코딩을 수행하는 단계와, 코딩된 프레임 데이터를 NAND 메모리 섹션에 기억시키는 단계와, 코딩된 프레임 데이터를 NAND 메모리 섹션으로부터 판독하는 단계와, 각각의 상기 섹터 데이터의 에러의 유무가 코딩된 프레임 데이터를 구성하는 각각의 상기 섹터 데이터의 상기 CRC 패리티로부터 검출되는 CRC 에러 검출을 수행하는 단계와, 코딩된 프레임 데이터를 구성하는 각각의 상기 섹터 데이터의 경 판정 코드 패리티를 이용하여 에러 정정을 수행하는 경 판정 코드 디코딩을 수행하는 단계와, CRC 에러 검출 또는 경 판정 코드 디코딩에서 에러를 포함하는 것으로 발견된 섹터 데이터를 식별하기 위한 섹터 에러 플래그를 설정하는 단계와, 코딩된 프레임 데이터가 LDPC 패리티로 디코딩 처리될 때, 설정되는 섹터 에러 플래그 없이 섹터 데이터의 신뢰도를 증가시키는 LLR 변경을 수행하는 단계와, LDPC 디코딩 처리를 수행하는 단계를 포함한다.
도 1의 (a) 내지 (b)는 LDPC 코드에서의 반복 디코딩을 설명하는 도면.
도 2의 (a) 내지 (d)는 태너 그래프(Tanner graph) G의 일부를 도시하는 도면.
도 3은 대수 우도비(log likelihood ratio)를 설명하는 설명도.
도 4는 데이터 계층 구조 및 ECC1 과 ECC2의 에러 체크/정정 범위를 설명하는 도면.
도 5는 제1 실시예에서의 메모리 시스템의 구성을 도시하는 구성도.
도 6은 제1 실시예에서의 메모리 시스템의 인코딩 처리의 흐름을 도시하는 순서도.
도 7은 제1 실시예에서의 메모리 시스템의 인코딩 처리의 타이밍 챠트.
도 8은 제1 실시예에서의 메모리 시스템의 ECC1 디코더 처리의 흐름을 도시하는 순서도.
도 9는 제1 실시예에서의 메모리 시스템의 ECC1 디코더의 타이밍 챠트.
도 10은 제1 실시예에서의 메모리 시스템의 ECC2 디코더 처리의 흐름을 도시하는 순서도.
도 11은 제2 실시예에서의 메모리 시스템의 구성을 도시하는 구성도.
도 12는 제2 실시예에서의 메모리 시스템의 ECC2 디코더 처리의 흐름을 도시하는 순서도.
도 13은 제3 실시예에서의 메모리 시스템의 구성을 도시하는 구성도.
도 14는 제3 실시예에서의 메모리 시스템의 ECC2 디코더 처리의 흐름을 도시하는 순서도.
도 15는 제3 실시예에서의 메모리 시스템의 ECC2 디코더의 타이밍 챠트.
도 16은 제1 변형예에서의 메모리 시스템의 ECC2 디코더 처리의 흐름을 도시하는 순서도.
도 17은 제2 변형예에서의 메모리 시스템의 ECC2 디코더 처리의 흐름을 도시하는 순서도.
도 18은 제3 변형예에서의 메모리 시스템의 ECC2 디코더 처리의 흐름을 도시하는 순서도.
이하에서는 도면들을 참조하여 본 발명의 실시예들을 설명한다.
<LDPC 코드에 관하여>
우선, 도 1의 (a) 내지 도 2의 (d)를 이용하여, LDPC 코드의 반복 디코딩을 간략히 설명한다. 도 1의 (a) 및 (b)는 LDPC 코드의 반복 디코딩을 설명하기 위한 도면들이며, 도 1의 (a)는 패리티 체크 행렬 H의 예를 도시하며, 도 1의 (b)는 패리티 체크 행렬 H에 대응하는 태너 그래프 G이다. 도 2의 (a) 내지 도 2의 (d)는 태너 그래프 G의 일부를 도시하는 도면들이다.
도 1의 (a) 및 (b)에 도시된 바와 같이, 패리티 체크 행렬 H에 대응하는 2부(bipartite) 그래프인 태너 그래프를 이용하면 LDPC 코드의 반복 디코딩을 이해하기 용이하다. 도 1의 (a) 및 (b)에서는, 태너 그래프 G의 노드들을 2 형태, 즉, 변수 노들들과 체크 노드들로 분류한다. 변수 노드들은 행렬 H의 열(column)들에 대응하며, 체크 노드들은 행렬 H의 행(row)들에 대응한다. 행렬 H의 요소들의 노드들 "1"은 엣지들에 의해 연결되어 태너 그래프 G를 구성한다.
LDPC 코드의 디코딩 처리는 노드들에서 반복적으로 업데이트되어 수행되며, 대수 우도비 정보는 태너 그래프의 엣지들에 할당된다. 대수 우도비 정보는 2가지 형태의 정보, 즉 체크 노드로부터 변수 노드로의 대수 우도비 정보(이하 기호 "α"로 나타냄)와, 변수 노드로부터 체크 노드로의 대수 우도비 정보(이하 기호 "β"로 나타냄)를 포함한다. LDPC 코드의 디코딩 처리에서는, 변수 노드 처리(행 처리)를 한번, 체크 노드 처리(열 처리)를 한번 수행하는 처리를 일 반복 처리(one iteration process)라 칭하며, 디코딩 처리는 반복 처리를 반복하여 수행된다.
변수 노드들과 체크 노드들에서의 대수 우도비 정보를 업데이트하기 위한 공지된 알고리즘들, 즉, 메시지-패싱(message-passing) 알고리즘들은 합-곱(sum-product) 알고리즘과 최소-합(min-sum) 알고리즘과 같은 방법들을 포함한다. 여기서, 비교적 연산이 복잡하지 않은 최소-합 알고리즘을, 대수 우도비 정보를 업데이트하기 위한 알고리즘으로서 설명한다.
우선, 도 2의 (a) 및 (b)를 이용하여, 변수 노드 처리를 설명한다. 도 2의 (a) 및 (b)는, 도 1의 (b)의 태너 그래프에서 변수 노드 3에 연관된 일부가 추출된 도식이다.
변수 노드, 예컨대 변수 노드 3에 대응하는 코드워드(codeword) 비트의 수령시의 대수 우도비(이하 "LLR"이라 칭하고 기호 "λ"로 나타냄)를 λ(3)으로 나타낸다. 체크 노드로부터 변수 노드 3으로의 대수 우도비 정보를 α(j, 3)으로 나타내며, 여기서 j는 변수 노드 3에 연결되는 체크 노드의 노드수를 가리키며, 도 1의 (b)에 도시된 태너 그래프 G의 "1" 및 "2"에 대응한다.
이제, 도 3을 이용하여, 대수 우도비(LLR; log likelihood ratio)를 설명한다. 도 3에 도시된 바와 같이, 비트 "0"에 대응하는 맵핑 포인트는 "D"이며, 비트 "1"에 대응하는 맵핑 포인트는 넘버 라인 상의 "-D"이다. 수신된 데이터가 "X"에 위치될 때, 대수 우도비 λ는 이하의 식으로 연산된다.
Figure pat00001
그러나, 상한값 Mx는 대수 우도비 λ의 절대값으로 설정된다. 즉,
Figure pat00002
라면,
Figure pat00003
가 되도록 클리핑(clipping) 처리가 수행된다.
여기서, 대수 우도비 λ의 절대값
Figure pat00004
을 신뢰도라 한다. Mx에 가까울수록 신뢰도는 높아지며, 0에 가까울수록 신뢰도는 낮아진다.
변수 노드 3은 α(1, 3)에 대응하는 엣지의 체크 노드, 즉 체크 노드 1에 대하여 이하의 수학식 1로 나타낸 연산을 수행한다.
Figure pat00005
마찬가지로, 노드 수 j인 체크 노드에 대하여 이하의 수학식 2로 나타낸 연산을 수행하며, ∑는 변수 노드 3에 연결되는 체크 노드들 중에서 k=j 이외의 총합을 의미한다.
Figure pat00006
상기 연산은 모든 변수 노드들에 대하여 수행되어 이하의 수학식 3으로 나타낸 β(i, j)를 연산한다. i = 1 내지 N이라는 것을 주목하고, 여기서 N은 코드 길이이며, i는 노드수이다. ∑는 변수 노드 i에 연결되는 체크 노드들 중에서 k=j 이외의 총합을 의미한다.
Figure pat00007
다음으로, 도 2의 (c) 및 (d)를 이용하여, 체크 노드 처리에 대하여 설명한다. 도 2의 (c) 및 (d)는 도 1의 (b)의 태너 그래프에서 체크 노드 1에 연관된 부분을 추출한 도면들이다.
체크 노드, 예컨대, 체크 노드 1에 대한 메시지로서 대수 우도비 정보를 β(k, 1)로 나타낸 곳에서, 이러한 체크 노드는 β(1, 1)에 대응하는 엣지의 변수 노드인 변수 노드 1에 대하여 이하의 수학식 4로 나타낸 α(1, 1)를 연산하며, 여기서 k는 이러한 체크 노드 1에 연결되는 변수 노드의 노드수이며, 도 1의 (b)의 예에서는 "1", "2", "3"에 대응한다. 또한, m은 "2" 내지 "3"에서 선택된다. 여기서 기호(∏β(m, 1))은 m = 2 내지 m = 3 일 때, β(m, 1)을 곱한 결과의 기호("+1" 또는 "-1")를 의미한다. 또한,
Figure pat00008
은 β(m, 1)의 절대값이며, min는 복수의
Figure pat00009
의 최소 선택에 대한 함수이다.
Figure pat00010
마찬가지로, 이하의 수학식 5를 사용하여 α(1, i)를 연산하며, 여기서 i는 체크 노드 1에 연결되는 변수 노드의 노드수이며, 도 1의 (b)의 태너 그래프의 예어서 "1", "2", "3"에 대응한다. 또한, m은 체크 노드 1에 연결되는 변수 노드 중에서 m = i는 이외로 한다.
Figure pat00011
상기 연산은 모든 체크 노드에 대하여 수행되어 이하의 수학식 6으로 α(j, i)를 연산하며, 여기서 m은 체크 노드 j에 연결되는 변수 노드 중에서 m = i는 이외로 한다.
Figure pat00012
반복 디코딩에서, 반복 처리후의 LLR 인 사후 확률(posterior probability) Pb(i) (로그 사후 확률 비: Ln)은, 상기 변수 노드 처리 및 체크 노드 처리가 각각 한번 수행되는 각각의 반복 처리에서 이하의 수학식 7로 결정되며, 여기서 i = 1 내지 N이며, N은 코드 길이이다. ∑은 변수 노드 i에 연결되는 모든 체크 노드의 합이다.
Figure pat00013
이러한 사후 확률값 Pb에 기초하여, bit 결정, 즉 해당 bit가 "0" 또는 "1"인지를 결정한다. 이러한 경 판정 결과는 LDPC 코드의 패리티 체크를 수행하는데 이용되며, 에러가 없다면, 반복 처리가 종료된다. 이것이 LDPC 코드의 반복 디코딩 방법이다.
<제1 실시예>
이제, 본 발명의 제1 실시예에서의 메모리 시스템(1)과, 메모리 시스템(1)의 제어 방법을 설명한다.
도 4에 도시된 바와 같이, 데이터가 기억될 때, 본 실시예의 메모리 시스템(1)은 LDPC 프레임 데이터(클러스터)를 서브프레임 데이터(섹터들)로 분할하여 섹터 기준으로 BCH/CRC 방식(ECC1)의 데이터를 인코드하며, 클러스터 기준으로 LDPC 방식(ECC2)의 데이터를 더 인코드한다. 프레임 데이터는, 예컨대 섹터 0 에서 섹터 7까지의 8개의 512 바이트 섹터로 분할된다. CRC 패리티 및 BCH 패리티가 각각의 섹터에 부가되며, LDPC 패리티가 프레임 데이터에 더 부가된다.
ECC1의 CRC 패리티 생성에서, 4 바이트 CRC 패리티는 생성 다항식(generator polynominal)으로 512 바이트 섹터 데이터를 인코딩하여 생성된다. ECC1의 BCH 패리티 생성에서, 3-비트 정정 가능한 인코딩을 수행하는 경우에, 5 바이트 BCH 패리티가 516 바이트(512 바이트 섹터 데이터 + CRC 패리티)에 대하여 생성된다.
ECC2의 LDPC 패리티 생성에서, 320 바이트 LDPC 패리티는 LDPC 방식에서「섹터 데이터 + 8개의 섹터의 CRC 패리티」를 인코딩하여 생성된다. 도 4에서, B1은 CRC 패리티에 대한 에러 체크 범위를 가리키며, B2는 BCH 패리티에 대한 에러 체크 및 정정 범위를 가리키며, B3는 LDPC 패리티에 대한 에러 체크 범위를 가리킨다. 도 4에 도시된 예에서 LDPC 인코딩에는 BCH 패리티가 포함되지 않지만, LDPC 인코딩에는 BCH 패리티가 포함되어도 좋다.
코딩된 데이터가 판독되고 디코드될 때, 메모리 시스템(1)은 섹터 기준으로 우선 BCH/CRC 기반 에러 체크 및 정정 처리(ECC1)를 수행한 후, 클러스터 기준으로 LDPC 기반 에러 체크 및 정정 처리(ECC2)를 수행한다. ECC2에서, ECC1에서 에러가 없다고 식별된 섹터의 신뢰도는 증가되며, 또는, 구체적으로 신뢰도가 최대로 설정되어, 섹터에 대한 반복 처리는 생략된다.
이제, 도 5를 이용하여, 메모리 시스템(1)의 구성을 설명한다. 도 5에 도시된 바와 같이, 메모리 시스템(1)은 PC 또는 디지털 카메라와 같은 호스트(2) 및 호스트(2)에 탈착가능하게 접속되는 기억 장치인 메모리 카드(10)를 구비한다. 호스트(2)는 버스(4)를 통하여 접속되는 다양한 기능 섹션들(미도시)에 걸쳐서 CPU(3)의 제어를 통하여 메모리 카드(10)와 데이터를 송수신한다.
메모리 시스템은 호스트, 및 호스트 내에 수용되어 호스트 등에 대한 시동(startup) 데이터를 기억하도록 구성되는 소위 내장형 기억 장치를 구비하여도 좋으며, 기억 장치는 반도체 디스크: SSD(Solid State Drive; 고상 드라이브)와 같은 형태이여도 좋다. 대안으로서, 메모리 시스템은, 메모리 카드(10)에 대응하는 기억 장치가 내장되고 호스트가 통합된 모바일 뮤직 플레이어와 같이 기능하여도 좋다.
도 5에 도시된 바와 같이, 기억 장치인 메모리 카드(10)는 NAND 메모리 섹션(15)과 메모리 컨트롤러(50)를 구비한다. NAND 메모리 섹션(15)은 플래시 메모리 섹션이며, 단위 셀들인 많은 메모리 셀이 기입용 비트선과 판독용 워드선을 통하여 접속되는 구조를 가진다.
메모리 컨트롤러(50)는 버스(13)를 통하여 접속되는 CPU(11), 인터페이스(12), 에러 체크 및 정정 섹션(ECC 섹션)(20)을 구비한다. CPU(11)는 버스(13)를 통하여 접속되는 다양한 기능 섹션들 등(미도시)을 제어함으로써, 인터페이스(12)를 통하여 호스트(2)와, 및 NAND 메모리 섹션(15)와 데이터를 송수신한다.
ECC 제어 섹션(21)의 제어하에서, ECC 섹션(20)은 인터페이스(22)를 통하여 버스(13)와 데이터를 송수신하며, 인터페이스(24)를 통하여 NAND 메모리 섹션(15)으로/으로부터 데이터를 송수신하는 것 외에, 후술될 인코딩 처리와 디코딩 처리를 수행한다.
도 5에 도시된 바와 같이, ECC 섹션(20)은 인코더(25), ECC1 디코더(제1 ECC 디코더; 30), ECC2 디코더(제2 ECC 디코더; 40) 및 버퍼(23)를 구비한다. 인코더(25)는 대수 기반 에러 정정 방식을 채용한 ECC1 인코더(제1 ECC 인코더; 26)와, 확률 기반 반복 연산을 이용한 에러 정정 방식을 채용한 ECC2 인코더(제2 ECC 인코더; 27)를 구비한다. ECC1 디코더(30)는 CRC 신드롬(syndrome) 연산 회로(31) 및 BCH 디코더(32)를 구비한다. ECC2 디코더(40)는 LDPC 반복 처리 회로(41), 중간-값 메모리로서의 버퍼(42), LLR(로그 사후 확률비; log posterior probability ratio; Ln)를 연산하여 기억하도록 구성된 LLR 연산/기억 섹션(43), 섹터 에러 플래그들을 설정하여 기억하도록 구성된 섹터 에러 플래그(EF) 섹션(44), 데이터 메모리로서의 버퍼(47), CRC 신드롬 연산 회로(45) 및 패리티 체크 회로(46)를 구비한다.
이제, 도 6 및 도 7을 이용하여, 시스템(1)의 인코딩 처리를 상세히 설명한다. 이하에서는, 도 6의 순서도에 따라 설명된다. 도 7에서, "uk"는 리셋 이전의 미정 상태를 의미하고, "all0"는 버퍼가 리셋된 상태를 의미하고, "Valid"는 처리가 완료되어 출력 결과가 유효한 상태를 의미한다.
<스텝 S10>
호스트(2)의 CPU(3)는 NAND 메모리 섹션(15)에 기억될 프레임 데이터를 섹터 기반으로 인터페이스(12 및 22)를 통하여 데이터 버퍼인 버퍼(23)로 기입한다. 즉, 프레임 데이터는 ECC(20)에 입력되어 섹터 데이터의 8 조각으로 분할된다.
<스텝 S11>
섹터 수 K가 초기화된다.
<스텝 S12>
ECC1 인코더(26)는 섹터 K의 CRC 패리티를 생성한다. ECC1 인코더(26)의 CRC 패리티 생성과, ECC1 디코더(30)의 CRC 신드롬 연산 회로(31)는 메모리 시스템(1)의 필수 구성 요소가 아니라는 점을 주목해야 한다.
<스텝 S13>
ECC1 인코더(26)는 섹터 K의 BCH 패리티를 생성한다.
<스텝 S14 및 스텝 S15>
ECC1 인코더(26)에 의해 처리되는 인코딩은 전체 8개의 섹터의 패리티가 생성될 때까지 수행된다.
<스텝 S16>
ECC2 인코더(27)는 프레임 데이터의 LDPC 패리티를 생성한다. 후술될 바와 같이, ECC1 인코더(26)에 의한 처리 및 ECC2 인코더(27)에 의한 처리는 병렬로 수행된다.
<스텝 S17>
ECC 제어 섹션(21)은 버퍼(23)에 기억된 데이터를 인코더(25)에서 연산된 패리티에 따라 인터페이스(24)로 전송하여 이 데이터를 NAND 메모리 섹션(15)에 기입한다.
여기서, 도 7에 도시된 타이밍 챠트에 도시된 바와 같이, ECC1 인코더(26)에 의한 인코딩 처리와 ECC2 인코더(27)에 의한 인코딩 처리가 병렬 처리로 수행된다. 섹터 0이, 예컨대 ECC2 인코더(27)에서 인코딩될 때, 섹터 0의 데이터(512 바이트)가 우선 ECC2 인코더(27)에 입력된 다음, CRC 패리티(4 바이트)가 입력된다. 필요에 따라, 인코딩 처리는, CRC 패리티가 유효하게 될 때까지 일시적으로 중단된다. 「데이터 + 8개의 섹터의 CRC 패리티」가 ECC2 인코더(27)에 입력된 후에, ECC2 인코더(27)의 패리티 연산이 완료된다.
이제, 도 8, 도 9 및 도 10을 이용하여, 메모리 시스템(1)에서의 디코딩 처리를 상세히 설명한다. 우선, ECC1 디코더(30)에 의한 디코딩 처리를 도 8의 순서도에 따라 설명한다.
<스텝 S20>
ECC 제어 섹션(21)은 인터페이스(24)를 통하여 NAND 메모리 섹션(15)에 기억된 코딩된 프레임 데이터를 판독하여, 이 프레임 데이터를 8개의 섹터로 분할하여 상기 섹터들을 버퍼(23)에 기억시킨다.
<스텝 S21>
프레임 수 K 및 섹터 에러 플래그(EF(1) 내지 EF(7))를 초기화한다.
<스텝 S22>
ECC1 디코더(30)의 CRC 신드롬 연산 회로(31) 및 BCH 디코더(32)는 에러 체크를 위하여 CRC 및 BCH 신드롬을 연산한다. 즉, BCH 코드의 대수 디코딩에서, 에러 위치 다항식(error locator polynominal)이 디코딩 결과로서 출력된다. 에러 위치 다항식의 출력에 의해 에러가 존재하는지, 바꿔 말하면 에러의 존재 유무 만을 검출한다. 에러 위치 다항식의 해를 구함으로써, 에러 비트가 BCH 코드 내에 위치될 수 있으므로, 이 에러는 정정될 수 있다. 에러가 없다면, 출력 신드롬은 "0" 이다.
<스텝 S23 및 스텝 S24>
에러가 검출되면(S23: 예), ECC1 디코더(30)는 S24에서 섹터 기반으로 BCH 디코더(32)에 의한 에러 정정 처리를 수행한다. 에러가 없다면(S23: 아니오), ECC1 디코더(30)는 다음 섹터의 처리로 이동한다.
<스텝 S25>
BCH 디코더(32)에 의한 에러 정정이 성공("예")되었다면, ECC1 디코더(30)는 다음 섹터의 처리로 이동한다.
<스텝 S26>
BCH 디코더(32)에 의한 에러 정정이 실패("아니오")하였다면, ECC1 디코더(30)는 다음 섹터의 처리로 이동한다. 이후, "1"이 EF 섹션(44)에 설정되며, 상기 EF 섹션(44)은, ECC1 디코더(30)가 에러를 정정할 수 없었던 섹터(에러 섹터)에 대응하는 섹터 에러 플래그(EF(K))를 설정하여 기억하도록 구성된다.
<스텝 S27 및 스텝 S28>
ECC1 디코더(30)는, 8개의 섹터(K = 0 내지 7)의 에러 체크 및 정정 처리가 완료될 때까지 S22로부터의 처리를 반복한다.
<스텝 S29>
8개의 섹터에서의 에러 체크 및 정정 처리의 완료 시에 8개의 섹터에 대한 에러 플래그가 모두 "0"이라면("예"), ECC 제어 섹션(21)은 디코딩 처리를 완료하여 호스트(2)의 CPU(3)에 통지를 송신한다. 통지에 대해 응답하여, CPU(3)는 버퍼(23)로부터 NAND 판독 데이터를 판독하여, 예컨대 이 데이터를 메인 메모리로 전송한다. 8개의 섹터에 대한 에러 플래그들 중의 적어도 하나가 "1"로 설정된다면("아니오"), ECC 제어 섹션(21)은「I」, 즉, 도 10에 도시된 ECC2 디코더(40)에 의한 LDPC 에러 정정 처리를 수행한다.
도 9의 타이밍 챠트에 도시된 바와 같이, CRC 신드롬 연산 회로(31), BCH 디코더(32) 및 ECC2 디코더(40)에 의한 디코딩 처리는 적시에 병렬로 수행된다.
다음으로, ECC2 디코더(40)에 의한 디코딩 처리를 도 10의 순서도에 따라 설명한다.
<스텝 S40>
ECC2 디코더(40)에서의 디코딩 처리에서, 우선, 반복의 최대 횟수 Mitr 및 반복 횟수를 나타내는 파라미터 Itr가 "0"으로 설정된다. 반복의 최대 횟수는 매번 설정될 필요가 없으므로, 현재 값이 사용되어도 좋다. 반복 최대 횟수는 특정 횟수, 예컨대 50회이어도 좋으며, 또는, 예컨대 1/90 초로 제한되어도 좋다.
<스텝 S41>
ECC2 디코더(40)는 프레임 데이터로부터 각각의 비트의 본래 대수 우도비 LLR을 생성한다.
<스텝 S42>
ECC 제어 섹션(21)은 EF 섹션(44)에 기억되는 에러 플래그들을 체크한다. 섹터 K에 대한 에러 플래그, 즉 EF(K)가 "0"인 경우, 즉 섹터 K에 에러가 없는 경우, 섹터 데이터의 신뢰도는 본래 대수 우도비에 무관하게 증가된다. 예컨대, 로그 사후 확률 비 Ln의 절대값은 최대로 업데이트된다.
<스텝 S43>
ECC 제어 섹션(21)에 의해 ECC2 디코더(40)는, 전체 섹터 데이터를 이용하여 제1 라운드의 반복 처리를 수행한다.
<스텝 S44>
ECC2 디코더(40)는 패리티 체크를 수행하는 동시에, Itr의 값을 하나씩 증가시키는 동작인 일 증분(one increment)을 수행한다.
<스텝 S45 및 스텝 S46>
패리티 체크 결과가 OK로 되면("예"), 디코딩 처리는 종료되며 S46에서 호스트(2)의 CPU(3)에 통지된다. 통지에 응답하여, CPU(3)는 버퍼(23)로부터 NAND 판독 데이터를 판독하여, 이 데이터를, 예컨대 메인 메모리에 전송한다.
<스텝 S47>
ECC2 디코더(40)는 반복 처리의 횟수(라운드의 수), 즉 Itr의 값을 체크한다.
<스텝 S48>
반복 처리의 횟수, 즉 Itr의 값이 반복의 최대 횟수 Mitr에 도달하면("아니오"), ECC2 디코더(40)는 반복 처리를 더 수행함 없이 디코딩 처리를 완료하여, 디코딩 처리의 실패를 호스트(2)의 CPU(3)에 통지한다.
<스텝 S49>
반복 처리의 횟수, 즉 Itr의 값이 반복 최대 횟수 Mitr보다 작다면(S48: 예), ECC2 디코더(40)는 LLR을 업데이트한다.
<스텝 S50>
기본적으로, ECC 제어 섹션(21)은 제2 LDPC 디코딩 처리를 선택하는 것이 바람직하다. 따라서, 제2 라운드 및 이 이후의 라운드의 반복 처리에서, ECC2 디코더(40)는 EF = 0, 즉, 에러 없는 섹터 데이터를 제외한 제2 반복 처리를 수행한다. 바꿔 말하면, EF = 0인 섹터 데이터에 대한 Ln 연산을 생략한다. 구체적으로, Ln 연산에 필요한, β 연산에 이용된 외부 정보 α의 연산(행 처리)과 사후 확률 β의 연산(열 처리)을 생략한다. 즉, 행 처리/열 처리는 에러 플래그가 설정되지 않은(EF = 0) 섹터 데이터에 대해 생략된다.
ECC2 디코더(40)는 S44로부터의 처리를 반복한다.
상술된 바와 같이, 메모리 시스템(1)의 제어 방법은, 전체 섹터 데이터를 이용하여 반복 처리가 수행되는 제1의 LDPC 디코딩을 수행하는 단계와, 에러 데이터가 포함되지 않는 것으로 섹터 에러 플래그가 설정되지 않은 섹터 데이터를 이용하지 않고 반복 처리가 수행되는 제2 LDPC 디코딩을 수행하는 단계와, 제1 LDPC 디코딩 및 제2 LDPC 디코딩 중의 하나가 선택되는 LDPC 처리 선택을 수행하는 단계를 포함한다.
본 실시예의 메모리 시스템(1) 및 메모리 시스템(1)의 제어 방법에서는, 예컨대, 8개의 섹터 중에서 4개의 섹터에 에러가 없다면, 제1 LDPC 디코딩을 선택하여 수행하는 것보다, 제2 LDPC 디코딩을 선택하여 수행하는 것이 바람직하다. 이는 라운드 당 행 처리/열 처리 시간을 대략 절반으로 감소시킨다. 그래서, 처리 속도가 높은 메모리 시스템 및 메모리 시스템의 제어 방법이 실현된다.
본 실시예의 메모리 시스템(1)에 포함되는 메모리 카드(10)(NAND 메모리를 구비한 반도체 기억 장치), 메모리 컨트롤러(50) 또는 에러 정정 섹션(에러 정정 회로; 20)를 다른 부재와 조합하여 사용하더라도, 본 실시예의 메모리 시스템(1)과 동일한 이점이 달성된다는 것은 명백하다. 즉, 상기 구성요소들의 각각은 본 발명의 이점을 갖는다.
<제2 실시예>
이제, 본 발명의 제2 실시예에서의 메모리 시스템(1B) 및 메모리 시스템(1B)의 제어 방법을 설명한다. 본 실시예에서의 메모리 시스템(1B) 및 메모리 시스템(1B)의 제어 방법은 제1 실시예에서의 메모리 시스템(1) 및 메모리 시스템(1)의 제어 방법과 유사하며, 동일 구성요소에는 동일한 참조부호를 부여하며, 이들 동일 구성요소에 대한 설명은 생략한다.
도 11에 도시된 바와 같이, 본 실시예에서의 메모리 시스템(1B)의 메모리 카드(10B)의 메모리 컨트롤러(50B)의 ECC(20B)의 ECC2 디코더(40B)는 정정된 비트의 수를 카운팅하는 기능을 갖는 정정 비트 카운터(48)를 구비한다. 각각의 반복 처리가 왼료될 시에, 정정 비트 카운터(48)는 반복 처리(라운드)에서 에러 정정된 정정된 비트의 수를 카운트한다. 메모리 컨트롤러(50B)에서는, 기본적으로 제2 LDPC 디코딩 처리가 선택되는 것이 바람직하다. 그러나, 정정 비트 카운터(48)의 카운트 결과에 기초하여, 에러 정정된 비트의 수가 미리 정해진 값을 초과하여 증가되지 않아, 정정 처리가 정체되고 있다고 검출되면, 행 처리/열 처리(반복 처리)로부터 배제된 에러 없는 섹터 데이터를 포함하는 모든 섹터 데이터를 사용하거나, 바꿔 말하면 제1 LDPC 디코딩 처리를 선택함으로써, 다음의 라운드를 수행한다.
이하에서는, 도 12의 순서도에 따라 설명한다. 도 12의 스텝 S60 내지 S69는 도 10의 상술된 스텝 S40 내지 S49와 동일하기 때문에, 설명을 생략한다.
<스텝 S70>
정정 비트 카운터(48)는 에러 정정된 비트의 수를 카운트한다. 즉, 이전 반복 처리의 완료시의 에러 비트의 수와 현재 반복 처리의 완료시의 에러 비트의 수의 차이로부터, 현재 반복 처리에서 성공적으로 정정된 에러 비트의 수를 카운트한다.
<스텝 S71>
에러 정정된 비트의 수가 그다지 증가되지 않은 경우, 예컨대, 에러 정정된 비트의 수가 미리 정해진 값 N 비트 이하인 경우("아니오"), 이는 정정 처리가 정체되고 있다는 것을 의미한다. 이러한 경우에는, 반복 처리를 단순히 반복하는 것으로서는 디코딩 처리를 완료하는데 시간이 많이 소요되게 된다. 다른 한편, 에러 정정된 비트의 수가 미리 정해진 값 N 비트를 초과하는 경우("예"), ECC 제어 섹션(21)은 스텝 S63으로부터 반복 처리를 반복한다.
<스텝 S72>
에러 정정된 비트의 수가 미리 정해진 값 N 비트 이하인 경우에, ECC 제어 섹션(21)은 모든 섹터 데이터를 사용하는 제1 LDPC 디코딩 처리를 선택하여, 다음 라운드를 처리한다. 이에 대한 이유는 다음과 같다. LDPC 디코딩 처리는 높은 신뢰도를 지닌 α 및 β 데이터가 메시지로서 낮은 신뢰도를 지닌 데이터로 확산되어, 에러 데이터의 신뢰도가 증가되도록 에러 정정을 수행하는 것을 필수로 한다. 메시지 확산 루프로부터 높은 신뢰도를 지닌 모든 섹터 데이터를 배제하면, 에러 데이터로 이루어진 루프 내에서 처리가 봉쇄될 수 있어, 에러 정정 처리의 수렴을 방해하게 된다.
따라서, 처리는 스텝 S64로부터 계속된다.
회로 크기를 감소시키기 위해서, 각각의 라운드의 완료 시에 에러가 없는 섹터들의 수의 증가를 검출하는 수단이, 정정 비트 카운터(48)를 사용하는 대신에 제공되어도 좋다. 이는, 섹터 당 에러 비트가 많은 경우에 정정 비트 카운터(48)를 사용하는 것과 등가의 효과를 달성할 수도 있다.
상술된 바와 같이, 본 실시예에서의 메모리 시스템(1B)의 제어 방법은, 전체 섹터 데이터를 이용하여 반복 처리가 수행되는 제1 LDPC 디코딩을 수행하는 단계와, 섹터 에러 플래그가 설정되지 않은 섹터 데이터를 이용하지 않고 반복 처리를 수행하는 제2 LDPC 디코딩을 수행하는 단계와, 제1 LDPC 디코딩 및 제2 LDPC 디코딩 중의 하나를 선택하는 LDPC 처리 선택을 수행하는 단계를 포함하며, 디코딩 처리를 선택하는 단계는 각각의 반복 처리에서 정정된 에러 비트의 수를 카운트하도록 구성된 정정된 비트 카운트 섹션의 카운트 결과에 기초하여 선택하는 단계를 포함한다.
본 실시예에서의 메모리 시스템(1B)은, 이러한 처리 이외에도 높은 신뢰도를 지닌 섹터 데이터를 사용함으로써, 처리 부하가 일시적으로 증가되더라도, 정정 처리가 정체되고 있을 때에 에러 정정 처리의 효율을 증가시킬 수 있다. 따라서, 제1 실시예에서의 메모리 시스템(1) 및 메모리 시스템(1)의 제어 방법의 이점 외에도, 메모리 시스템(1B) 및 메모리 시스템(1B)의 제어 방법은 작은 회로 크기 및 높은 처리 속도를 실현한다.
<제3 실시예>
이제, 본 발명의 제3 실시예에서의 메모리 시스템(1C) 및 메모리 시스템(1C)의 제어 방법을 설명한다. 본 실시예에서의 메모리 시스템(1C) 및 메모리 시스템(1C)의 제어 방법은 제1 실시예에서의 메모리 시스템(1) 및 메모리 시스템(1)의 제어 방법과 유사하기 때문에, 동일 구성요소에 대해서는 동일 참조부호를 부여하며, 이들 구성요소에 대한 설명을 생략한다.
도 13에 도시된 바와 같이, 본 실시예에서의 메모리 시스템(1C)의 메모리 카드(10C)의 메모리 컨트롤러(50C)의 ECC(20C)의 ECC2 디코더(40C)에는 체크 행렬을 이용하여 에러 정정의 종료를 검출하는 패리티 체크 회로(46)가 없으므로, 대신 CRC 신드롬 연산 회로(45)가 에러 정정의 성공 또는 실패를 체크한다. 대신, ECC1 디코더(30)의 CRC 신드롬 연산 회로(31)가 에러 정정의 성공 또는 실패를 체크할 수 있으므로, CRC 신드롬 연산 회로(45)는 없어도 좋다.
또한, ECC2 디코더(40C)는 어떤 에러 섹터가 코드가 변경된 데이터를 가지는 지를 ECC 제어 섹션(21)에 통지하는 기능을 갖는 섹터 변경 플래그(이하, "변경 플래그(modifier flag; MF)" 라고도 함) (49)를 구비한다. 섹터 변경 플래그(49)는 코드가 변경된 데이터, 즉 "0"이 "1"로 또는 "1"이 "0"으로 변경된 데이터를 포함하는 에러 섹터(EF = 1)에 대해 "1"을 설정한다.
그래서, ECC2 디코더(40C)에 의해 ECC1 디코더(30)의 BCH 디코더(32)에 의한 에러 정정 처리가 ECC2 디코더(40C)에 의한 LDPC 디코딩 처리와 연계하여 수행되도록 하여, 에러 정정 처리를 가속화시킬 수 있다. 이하에서는, 도 14의 순서도에 따라 설명한다. 도 14의 스텝 S80 내지 S89는 상술된 도 10의 스텝 S40 내지 S49와 동일하기 때문에, 그 설명을 생략한다.
<스텝 S90>
ECC 제어 섹션(21)은, 섹터 변경 플래그(49)에 기초하여, BCH 디코더(32)에 의한 에러 정정 처리가 에러 섹터(EF = 1)이며 섹터 변경 플래그(MF) = 1을 갖는 섹터 상에서 다시 수행되도록 제어한다.
복수의 에러 섹터가 동시에 1로 설정된 섹터 변경 플래그를 가진다면, 하나의 에러 섹터가 미리 정해진 알고리즘으로 선택되어 BCH 디코더(32)에 의한 에러 정정 처리를 수행하여도 좋다.
<스텝 S91 및 스텝 S92>
BCH 디코더(32)에 의한 에러 정정이 성공되면(S91: 예), 에러 정정된 섹터와 관련된 대수 우도비와 같은 데이터가 업데이트되고, 대응 섹터 에러 플래그가 ECC2 디코더(40C)에 의한 처리와 충돌하지 않는 타이밍(예컨대, 일 반복 처리의 완료시)으로 클리어된다.
BCH 디코더(32)에 의한 에러 정정이 실패하였다면(S91: 아니오), 정상 처리가 반복된다.
여기서, 메모리 시스템(1C)의 제어 방법을 도 15의 타이밍 챠트를 예로서 취하여 더 설명한다. 도 15는 섹터 1 및 섹터 3에 대한 ECC1 디코더(30)에서의 에러 정정이 실패할 때의 동작을 나타낸다. ECC1 디코더(30)에 의한 처리가 완료된 후에, ECC2 디코더(40C)에 의한 LDPC 디코딩 처리가 시작된다. 이러한 처리의 시작 시에, NAND 메모리 섹션(15)으로부터 판독된 데이터는 대수 우도비로 변경된다. 이 시점에서, 에러 없는 섹터들 0, 2 및 4 내지 7의 신뢰도를 증가시켜, 예컨대 Ln의 절대값을 최대로 설정하여 변환을 수행한다. LDPC 디코딩 처리의 제1 반복 처리(라운드 1)를 전체 8개의 섹터에 대해 수행한다. 도 15의 예에서, 에러 섹터 1에 대한 변경 플래그는 라운드 1의 종료 시에 "1"로 설정된다. 따라서, 라운드 2에서, BCH 디코더(32)에 의한 디코딩 처리를 섹터 1에서 다시 수행한다. 이후, 섹터 1이 BCH 디코더(32)에 의해 성공적으로 디코딩되어, 섹터 1의 신뢰도가 최대로 업데이트되고, 섹터 1에 대한 에러 플래그는 "0"으로 클리어된다. 이후, 섹터 3은 라운드 3에서의 처리에 의해 성공적으로 에러 정정되어, 디코딩 처리는 종료된다.
상기 설명에서는 일례로서, ECC1 - ECC2의 일련의 디코딩 처리 방식을 채용하는 메모리 시스템(1C)을 취하고 있으며, 여기서 ECC2 디코더(40C)는 도 15에 도시된 바와 같이 ECC1 디코더(30)에 의한 처리의 종료 후에 본 처리를 시작한다. 그러나, ECC1 - ECC2 병렬 디코딩 처리 방식이 채용되어도 좋으며, 여기서 ECC1 디코더(30) 및 ECC2 디코더(40C)는 디코딩 처리를 거의 동시에 시작한다. 이러한 경우에, ECC2 디코더(40C)에 의한 제1 라운드 반복 처리는 모든 섹터를 에러 섹터(EF = 1)로 고려하여 수행된다. ECC1 디코더(30)에 의한 처리 결과에 따라, ECC2 디코더(40C)에 의한 제1 라운드 반복 처리의 완료 후에, 섹터 에러 플래그가 설정되고/신뢰도 업데이트 처리가 수행된다. 이후의 처리는 상술된 바와 같다.
ECC1 - ECC2 병렬 디코딩 처리 방식에서는, ECC1 - ECC2의 일련의 디코딩 처리 방식에 비하여, 섹터 당 데이터 크기를 줄이고, 또한 ECC1 디코더(30) (ECC1 인코더(26))의 정정 처리 능력을 낮게 더 설정하는 것이 바람직하다. 이는 정정 처리 능력을 낮게 설정하면 패리티 크기를 줄일 수 있기 때문이며, 이로 인해 인코딩 비율의 축소를 회피할 수 있어, 처리 속도를 높이고 소비 전력을 줄일 수 있다. ECC1 - ECC2 병렬 디코딩 처리 방식에서는, 하나의 섹터가, 예컨대 4 비트의 정정가능한 패리티를 지닌 128 바이트로 이루어져도 좋다.
상술된 바와 같이, 메모리 시스템(1C)의 제어 방법은, 전체 섹터 데이터를 사용하여 반복 처리를 수행하는 제1 LDPC 디코딩을 수행하는 단계와, 섹터 에러 플래그가 설정되지 않은 섹터 데이터를 사용함 없이 반복 처리가 수행되는 제2 LDPC 디코딩을 수행하는 단계와, 제1 LDPC 디코딩 및 제2 LDPC 디코딩 중의 하나를 선택하는 LDPC 처리 선택을 수행하는 단계와, 제1 LDPC 디코딩 또는 제2 LDPC 디코딩에서 코드가 변경된 비트 데이터를 포함하는 섹터 데이터를 식별하기 위한 섹터 변경 플래그를 설정하는 단계와, 섹터 변경 플래그 및 섹터 에러 플래그가 설정되는 섹터 데이터의 에러 정정이 수행되도록 경 판정 코드 패리티를 사용하는 제2 경 판정 코드 디코딩을 수행하는 단계와, 제2 경 판정 코드 디코딩으로부터 기인한 에러 정정 섹터 데이터에 대한 섹터 에러 플래그를 리셋하는 단계를 더 포함한다.
메모리 시스템(1C)에서, BCH 디코더(32)는 ECC2 디코더(40C)의 디코딩 처리를 보완한다. 따라서, 제1 실시예에서의 메모리 시스템(1) 또는 메모리 시스템(1)의 제어 방법의 이점 이외에, 메모리 시스템(1C) 및 메모리 시스템(1C)의 제어 방법은 회로 크기를 작게할 수 있으며 처리 속도를 향상시킬 수 있다.
<제1 변형예>
본 발명의 상술된 실시예들에서의 메모리 시스템(1) 등 및 메모리 시스템(1) 등의 제어 방법에서, 반복 처리는, ECC1 디코더(30)에 의한 처리에서 에러가 없다고 식별된 섹터들을 생략하고, 바꿔 말하면 섹터 에러 플래그(EF) = 0 인 섹터들을 배제하여 수행된다.
한편, 도 16에 도시된 바와 같이, 본 변형예에서의 메모리 시스템에서, 섹터 에러 플래그(EF) = 0인 섹터들의 Ln의 절대값은 최대로 설정되며, 모든 섹터를 사용하여 반복 처리가 수행된다.
본 변형예에서의 메모리 시스템은 항시 높은 신뢰도를 지닌 데이터를 사용하여 LDPC 디코딩 처리를 수행함으로써, 빠른 처리가 가능하다.
<제2 변형예>
본 발명의 상술된 제3 실시예에서의 메모리 시스템(1C) 및 메모리 시스템(1C)의 제어 방법에서, 반복 처리는, ECC1 디코더(30)에 의한 처리에서 에러가 없다고 식별된 섹터들을 생략하고, 바꿔 말하면, 섹터 에러 플래그(EF) = 0인 섹터들을 배제하여 수행된다.
한편, 도 17에 도시된 바와 같이, 본 변형예에서의 메모리 시스템에서, 섹터 에러 플래그(EF) = 0인 섹터들의 신뢰도는 증가되며, 예컨대 섹터 에러 플래그(EF) = 0인 섹터들의 Ln의 절대값이 최대로 설정되며, 모든 섹터를 사용하여 반복 처리가 수행된다.
즉, 본 변형예에서의 메모리 시스템은, 복수의 조각의 섹터 데이터로 이루어진 인코딩 프레임 데이터로부터 기인한 코딩된 프레임 데이터를 기억하도록 구성된 기억 장치이며, 기억 장치와 프레임 데이터를 송수신하도록 구성된 호스트인 메모리 카드를 구비하는 메모리 시스템이며, 기억 장치는, 섹터 데이터 기준으로 경 판정 코드로 경 판정 인코딩 처리를 수행하도록 구성된 제1 ECC 인코더와, 프레임 데이터 기준으로 LDPC 코드로 LDPC 인코딩 처리를 수행하도록 구성된 제2 ECC 인코더와, 경 판정 코드 디코딩 처리를 수행하도록 구성된 제1 ECC 디코더와, 프레임 데이터 기준으로 LDPC 코드로 LDPC 디코딩 처리를 수행하도록 구성된 제2 ECC 디코더와, 경 판정 코드 디코딩 처리에서 에러 데이터의 유무에 관한 식별 정보를 각각의 섹터마다 기억하도록 구성된 섹터 에러 플래그 섹션과, 섹터 에러 플래그 섹션에서의 정보에 기초하여 에러 데이터가 없는 섹터 데이터의 신뢰도를 증가시키는 제어를 LDPC 디코딩 처리에서 수행하도록 구성된 ECC 제어 섹션을 포함한다.
본 변형예에서의 메모리 시스템의 제어 방법은, 프레임 데이터를 구성하는 섹터 데이터의 복수의 조각 각각의 CRC 패리티가 생성되어 추가되는 CRC 인코딩을 수행하는 단계와, 섹터 데이터의 각각의 조각의 경 판정 코드 패리티가 생성되어 추가되는 경 판정 인코딩을 수행하는 단계와, 코딩된 프레임 데이터가 생성되도록 CRC 패리티와 경 판정 코드 패리티를 포함하는 프레임 데이터의 LDPC 패리티가 생성되는 LDPC 인코딩을 수행하는 단계와, 코딩된 프레임 데이터를 NAND 메모리 섹션에 기억시키는 단계와, 코딩된 프레임 데이터를 NAND 메모리 섹션으로부터 판독하는 단계와, 코딩된 프레임 데이터로 구성된 섹터 데이터의 각각의 조각의 CRC 패리티로부터 섹터 데이터의 각각의 조각의 에러의 유무를 검출하는 CRC 에러 검출을 수행하는 단계와, CRC 에러 검출에서 에러가 검출된 섹터 데이터에 대한 경 판정 코드 패리티를 사용하여 에러 정정을 수행하는 경 판정 코드 디코딩을 수행하는 단계와, CRC 에러 검출 또는 경 판정 코드 디코딩에서 에러를 포함하는 것으로 발견된 섹터 데이터를 식별하기 위한 섹터 에러 플래그를 설정하는 단계와, 코딩된 프레임 데이터가 LDPC 패리티로의 디코딩 처리하에 있을 때에 설정되는 섹터 에러 플래그 없이 섹터 데이터의 신뢰도가 증가되는 LLR 변경을 수행하는 단계를 포함한다.
본 변형예에서의 메모리 시스템 및 메모리 시스템의 제어 방법은 항시 높은 신뢰도를 지닌 데이터를 사용하여 LDPC 디코딩 처리를 수행함으로써, 처리 속도가 향상된다.
<제3 변형예>
본 발명의 상술된 실시예에서의 메모리 시스템(1) 등 및 메모리 시스템(1) 등의 제어 방법에서, 반복 처리는, ECC1 디코더(30)에 의한 처리에서 에러가 없다고 식별된 섹터들을 생략하고, 바꿔 말하면, 섹터 에러 플래그(EF) = 0인 섹터들을 배제하여 수행된다.
한편, 도 18에 도시된 바와 같이, 본 변형예에서의 메모리 시스템은 라운드의 수(반복 수: Itr)가 기수(odd number)일 경우에 모든 섹터를 사용하여 반복 처리를 수행한다.
본 변형예에서의 메모리 시스템은 두번의 반복 처리 중에 한번, 높은 신뢰도를 지닌 데이터를 사용하여 LDPC 디코딩 처리를 수행함으로써, 처리 속도를 향상시킬 수 있다.
모든 섹터를 사용하는 대신에, 에러 섹터들(EF = 1)과 에러 섹터들(EF = 1)에 인접한 에러 없는 섹터들(EF = 0)을 사용하여도 좋다. LDPC 디코딩 처리는 또한, 예컨대 3번의 반복 처리중에 한번, 높은 신뢰도를 지닌 데이터를 사용하여 수행되어도 좋다.
그래서, 본 발명은 상술된 실시예들 및 변형예들에 한정되지 않고, 본 발명의 요지를 벗어남 없이 다양한 변경 및 대체가 있을 수 있다. 예컨대, BCH 코드 대신에, RS 코드가 경 결정 코드로서 사용되어도 좋다. 또한, 상술된 실시예들 및 변형예들은 적절히 조합되어도 좋다. 예컨대, 제1 실시예의 메모리 시스템(1)은 제3 변형예의 제어 방법과 조합되어도 좋고, ECC1 - ECC2 병렬 디코딩 처리 방식이 채용되어도 좋다.
첨부 도면들을 참조로 하여 본 발명의 바람직한 실시예들을 설명하였지만, 본 발명은 이들 정확한 실시예들로 한정되지 않는 것으로 이해되어야 하며, 청구범위에 규정된 바와 같이 본 발명의 요지 또는 범위를 벗어남 없이 당업자에 의한 다양한 변형 및 변경이 이루어질 수 있다.
1: 메모리 시스템
2: 호스트
4: 버스
10: 메모리 카드
11: CPU

Claims (15)

  1. 복수의 섹터 데이터로 이루어진 프레임 데이터를 인코딩하여 얻어진 코딩된 프레임 데이터를 기억하도록 구성된 기억 장치와, 상기 기억 장치와 상기 프레임 데이터를 송수신하도록 구성된 호스트를 구비하는 메모리 시스템으로서,
    상기 기억 장치는
    섹터 데이터를 기준으로 하여 경 판정 코드(hard decision code)로 경 판정 코드 디코딩 처리를 수행하도록 구성된 제1 ECC 디코더와,
    프레임 데이터를 기준으로 하여 LDPC 코드로 LDPC 디코딩 처리를 수행하도록 구성된 제2 ECC 디코더와,
    상기 경 판정 코드 디코딩 처리에서의 에러 데이터의 유무에 관한 정보를 기억하는 섹터 에러 플래그를 각각의 섹터마다 설정하도록 구성된 섹터 에러 플래그 섹션과,
    상기 섹터 에러 플래그 섹션에서의 상기 정보에 기초하여, 에러 데이터를 포함하지 않는 섹터 데이터의 신뢰도를 증가시키는 제어를 상기 LDPC 디코딩 처리에서 수행하도록 구성된 ECC 제어 섹션
    을 포함하는, 메모리 시스템.
  2. 제1항에 있어서,
    상기 ECC 제어 섹션은 모든 상기 섹터 데이터를 이용하여 반복 처리가 수행되는 제1 LDPC 디코딩 처리와, 에러 데이터를 포함하지 않는 상기 섹터 데이터를 이용하지 않고 반복 처리가 수행되는 제2 LDPC 디코딩 처리 중의 하나를 선택함으로써 상기 LDPC 디코딩 처리를 수행하는, 메모리 시스템.
  3. 제2항에 있어서,
    상기 ECC 제어 섹션은 우선적으로 상기 제2 LDPC 디코딩 처리를 선택하는, 메모리 시스템.
  4. 제3항에 있어서,
    상기 ECC 제어 섹션은 각각의 반복 처리시 새롭게 정정된 에러 비트들의 수를 카운트하고, 상기 카운트 결과에 기초하여, 새롭게 정정된 에러 비트들의 수가 미리 정해진 값 미만인 경우에 상기 제1 LDPC 디코딩 처리를 선택하는, 메모리 시스템.
  5. 제4항에 있어서,
    상기 LDPC 디코딩 처리에서, 상기 ECC 제어 섹션은, 코드가 변경된 섹터 데이터에 대하여 경 판정 코드를 이용하는 에러 정정 처리를 다시 수행하여, 그 에러 정정된 섹터 데이터에 대한 상기 섹터 에러 플래그를 리셋하는, 메모리 시스템.
  6. 제5항에 있어서,
    상기 ECC 제어 섹션은 에러 데이터를 포함하지 않는 섹터 데이터의 신뢰도를 최대로 설정하는, 메모리 시스템.
  7. 제6항에 있어서,
    상기 기억 장치는 NAND 메모리 섹션을 구비한 메모리 카드인, 메모리 시스템.
  8. 메모리 시스템의 제어 방법으로서,
    프레임 데이터를 구성하는 복수의 섹터 데이터 각각의 CRC 패리티를 생성하여 부가하는 CRC 인코딩을 수행하는 단계와,
    각각의 상기 섹터 데이터의 경 판정 코드 패리티를 생성하여 부가하는 경 판정 인코딩을 수행하는 단계와,
    상기 CRC 패리티와 상기 경 판정 코드 패리티를 포함하는 상기 프레임 데이터의 LDPC 패리티를 생성하여 코딩된 프레임 데이터를 생성하는 LDPC 인코딩을 수행하는 단계와,
    상기 코딩된 프레임 데이터를 NAND 메모리 섹션에 기억시키는 단계와,
    상기 코딩된 프레임 데이터를 상기 NAND 메모리 섹션으로부터 판독하는 단계와,
    각각의 상기 섹터 데이터의 에러의 유무가 상기 코딩된 프레임 데이터를 구성하는 각각의 상기 섹터 데이터의 상기 CRC 패리티로부터 검출되는 CRC 에러 검출을 수행하는 단계와,
    상기 코딩된 프레임 데이터를 구성하는 각각의 상기 섹터 데이터의 상기 경 판정 코드 패리티를 이용하여 에러 정정을 수행하는 경 판정 코드 디코딩을 수행하는 단계와,
    상기 CRC 에러 검출 또는 상기 경 판정 코드 디코딩에서 에러를 포함하는 것으로 발견된 상기 섹터 데이터를 식별하기 위한 섹터 에러 플래그를 설정하는 단계와,
    상기 코딩된 프레임 데이터가 상기 LDPC 패리티로 디코딩 처리될 때, 설정되는 섹터 에러 플래그 없이 상기 섹터 데이터의 신뢰도를 증가시키는 LLR 변경을 수행하는 단계와,
    상기 LDPC 디코딩 처리를 수행하는 단계
    를 포함하는, 메모리 시스템의 제어 방법.
  9. 제8항에 있어서,
    상기 LDPC 디코딩에서 수행되는 상기 디코딩 처리는
    전체 섹터 데이터를 이용하여 반복 처리가 수행되는 제1 LDPC 디코딩과, 에러 데이터를 포함하지 않는 상기 섹터 데이터를 이용하지 않고 반복 처리가 수행되는 제2 LDPC 디코딩 중의 하나를 선택하는 LDPC 처리 선택을 수행하는 단계를 포함하는, 메모리 시스템의 제어 방법.
  10. 제9항에 있어서,
    상기 제2 LDPC 디코딩 처리가 우선적으로 선택되는, 메모리 시스템의 제어 방법.
  11. 제10항에 있어서,
    새롭게 정정된 에러 비트들의 수는 각각의 반복 처리시 카운트되며, 상기 카운트의 결과에 기초하여, 상기 새롭게 정정된 에러 비트들의 수가 미리 정해진 값 미만인 경우에 상기 제1 LDPC 디코딩 처리를 선택하는, 메모리 시스템의 제어 방법.
  12. 제11항에 있어서,
    상기 제1 LDPC 디코딩 또는 제2 LDPC 디코딩시 코드가 변경된 비트 데이터를 포함하는 섹터 데이터를 식별하기 위한 섹터 변경 플래그를 설정하는 단계와,
    상기 섹터 변경 플래그 및 상기 섹터 에러 플래그가 설정되는 섹터 데이터의 에러 정정이 수행되도록 상기 경 판정 코드 패리티가 사용되는 제2 경 판정 코드 디코딩을 수행하는 단계와,
    상기 제2 경 판정 코드 디코딩으로부터 얻어진 에러 정정된 상기 섹터 데이터에 대한 상기 섹터 에러 플래그를 리셋하는 단계
    를 더 포함하는, 메모리 시스템의 제어 방법.
  13. 제12항에 있어서,
    에러 데이터를 포함하지 않는 상기 섹터 데이터의 신뢰도는 최대로 설정되는, 메모리 시스템의 제어 방법.
  14. 제13항에 있어서,
    상기 기억 장치는 NAND 메모리 섹션을 구비한 메모리 카드인, 메모리 시스템의 제어 방법.
  15. 복수의 섹터 데이터로 이루어진 프레임 데이터를 인코딩하여 얻어진 코딩된 프레임 데이터를 기억하도록 구성된 NAND 메모리 섹션을 갖는 메모리 카드와, 메모리 카드와 상기 프레임 데이터를 송수신하도록 구성된 호스트를 구비한 메모리 시스템으로서,
    상기 메모리 카드는
    섹터 데이터를 기준으로 하여 경 판정 코드로 경 판정 인코딩 처리를 수행하도록 구성된 제1 ECC 인코더와,
    프레임 데이터를 기준으로 하여 LDPC 코드로 LDPC 인코딩 처리를 수행하도록 구성된 제2 ECC 인코더와,
    경 판정 코드 디코딩 처리를 수행하도록 구성된 제1 ECC 디코더와,
    프레임 데이터를 기준으로 하여 상기 LDPC 코드로 LDPC 디코딩 처리를 수행하도록 구성된 제2 ECC 디코더와,
    상기 경 판정 코드 디코딩 처리에서의 에러 데이터의 유무에 관한 식별 정보를 각각의 섹터마다 기억시키도록 구성된 섹터 에러 플래그 섹션과,
    상기 섹터 에러 플래그 섹션에서의 상기 정보에 기초하여 상기 LDPC 디코딩 처리에서 에러 데이터를 포함하지 않는 섹터 데이터의 신뢰도를 최대로 설정하고, 전체의 섹터 데이터를 사용하여 반복 처리를 수행하는 제1 LDPC 디코딩 처리 이외에 에러 데이터를 포함하지 않는 상기 섹터 데이터를 사용하지 않고 반복 처리가 수행되는 제2 LDPC 디코딩 처리를 우선적으로 선택함으로써, 상기 LDPC 디코딩 처리를 수행하도록 구성된 ECC 제어 섹션
    을 포함하는, 메모리 시스템.
KR1020100085836A 2009-09-18 2010-09-02 메모리 시스템 및 메모리 시스템의 제어 방법 KR20110031092A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009218044A JP2011065599A (ja) 2009-09-18 2009-09-18 メモリシステムおよびメモリシステムの制御方法
JPJP-P-2009-218044 2009-09-18

Publications (1)

Publication Number Publication Date
KR20110031092A true KR20110031092A (ko) 2011-03-24

Family

ID=43757679

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100085836A KR20110031092A (ko) 2009-09-18 2010-09-02 메모리 시스템 및 메모리 시스템의 제어 방법

Country Status (4)

Country Link
US (1) US8448050B2 (ko)
JP (1) JP2011065599A (ko)
KR (1) KR20110031092A (ko)
CN (1) CN102024501A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170037163A (ko) * 2015-09-25 2017-04-04 에스케이하이닉스 주식회사 데이터 처리 장치 및 그것의 동작 방법
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
US11928077B2 (en) 2015-05-29 2024-03-12 SK Hynix Inc. Data processing circuit, data storage device including the same, and operating method thereof

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5535220B2 (ja) * 2008-09-30 2014-07-02 エルエスアイ コーポレーション デコーダ性能フィードバックを使用するメモリ・デバイス用の軟データ生成の方法および装置
US8756473B1 (en) 2010-12-23 2014-06-17 Sk Hynix Memory Solutions Inc. Solid state device coding architecture for chipkill and endurance improvement
US8788922B2 (en) * 2011-02-28 2014-07-22 Apple Inc Error correction codes for incremental redundancy
US8601351B2 (en) * 2011-03-16 2013-12-03 Intel Corporation BCH decoding with multiple sigma polynomial calculation algorithms
KR20130001013A (ko) * 2011-06-24 2013-01-03 삼성전자주식회사 통신 시스템의 데이터 송수신 방법 및 장치
US8694855B1 (en) * 2011-11-02 2014-04-08 Pmc-Sierra Us, Inc. Error correction code technique for improving read stress endurance
US8694849B1 (en) 2011-12-19 2014-04-08 Pmc-Sierra Us, Inc. Shuffler error correction code system and method
US8918705B1 (en) * 2012-01-11 2014-12-23 Sk Hynix Memory Solutions Inc. Error recovery by modifying soft information
US8856615B1 (en) 2012-06-11 2014-10-07 Western Digital Technologies, Inc. Data storage device tracking log-likelihood ratio for a decoder based on past performance
JP2014017734A (ja) * 2012-07-10 2014-01-30 Toshiba Corp 受信機及び受信方法
TWI594254B (zh) * 2012-07-17 2017-08-01 慧榮科技股份有限公司 讀取快閃記憶體中區塊之資料的方法及相關的記憶裝置
CN103839594A (zh) * 2012-11-27 2014-06-04 建兴电子科技股份有限公司 固态储存装置及其联合编解码方法
US9116822B2 (en) * 2012-12-07 2015-08-25 Micron Technology, Inc. Stopping criteria for layered iterative error correction
US10013203B2 (en) * 2013-01-04 2018-07-03 International Business Machines Corporation Achieving storage compliance in a dispersed storage network
US9311187B2 (en) * 2013-01-04 2016-04-12 Cleversafe, Inc. Achieving storage compliance in a dispersed storage network
US8995302B1 (en) 2013-01-16 2015-03-31 Pmc-Sierra Us, Inc. Method and apparatus for translated routing in an interconnect switch
JP2014140111A (ja) * 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
US9128858B1 (en) 2013-01-29 2015-09-08 Pmc-Sierra Us, Inc. Apparatus and method for adjusting a correctable raw bit error rate limit in a memory system using strong log-likelihood (LLR) values
US9092353B1 (en) 2013-01-29 2015-07-28 Pmc-Sierra Us, Inc. Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system
US9164832B2 (en) * 2013-02-27 2015-10-20 Seagate Technology Llc ECC management for variable resistance memory cells
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US8990661B1 (en) 2013-03-05 2015-03-24 Pmc-Sierra Us, Inc. Layer specific attenuation factor LDPC decoder
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US9397701B1 (en) 2013-03-11 2016-07-19 Microsemi Storage Solutions (Us), Inc. System and method for lifetime specific LDPC decoding
US8935598B1 (en) 2013-03-12 2015-01-13 Pmc-Sierra Us, Inc. System and method for adaptive check node approximation in LDPC decoding
US9048873B2 (en) * 2013-03-13 2015-06-02 Lsi Corporation Systems and methods for multi-stage encoding of concatenated low density parity check codes
US8984365B1 (en) 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for reduced memory storage in LDPC decoding
US8984376B1 (en) 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for avoiding error mechanisms in layered iterative decoding
US8990668B2 (en) 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
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
US9450610B1 (en) 2013-03-15 2016-09-20 Microsemi Storage Solutions (Us), Inc. High quality log likelihood ratios determined using two-index look-up table
US9590656B2 (en) 2013-03-15 2017-03-07 Microsemi Storage Solutions (Us), Inc. System and method for higher quality log likelihood ratios in LDPC decoding
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding
US9183095B1 (en) 2013-06-28 2015-11-10 Sk Hynix Memory Solutions Inc. Recovering from a program failure by combining write data
KR101496052B1 (ko) 2013-11-28 2015-02-25 한국과학기술원 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로
US9230655B2 (en) * 2013-12-20 2016-01-05 Apple Inc. Data storage management in analog memory cells using a non-integer number of bits per cell
US9621188B2 (en) 2014-03-17 2017-04-11 Samsung Electronics Co., Ltd. Soft and hard decision message-passing decoding
US9417804B2 (en) 2014-07-07 2016-08-16 Microsemi Storage Solutions (Us), Inc. System and method for memory block pool wear leveling
CN105575440B (zh) * 2014-10-15 2018-11-23 群联电子股份有限公司 错误处理方法、存储器储存装置及存储器控制电路单元
TWI557747B (zh) * 2015-02-13 2016-11-11 瑞昱半導體股份有限公司 記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法
KR102265220B1 (ko) * 2015-03-09 2021-06-16 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10332613B1 (en) 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
US10157677B2 (en) 2016-07-28 2018-12-18 Ip Gem Group, Llc Background reference positioning and local reference positioning using threshold voltage shift read
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
CN106502590A (zh) * 2016-10-24 2017-03-15 郑州云海信息技术有限公司 一种固态硬盘ssd存储系统及方法
US10284230B2 (en) * 2016-11-15 2019-05-07 Western Digital Technologies, Inc. Linked storage system and host system error correcting code
US10498362B2 (en) 2016-12-19 2019-12-03 Kabushiki Kaisha Toshiba Low power error correcting code (ECC) system
JP2018182429A (ja) * 2017-04-06 2018-11-15 株式会社村田製作所 データ変換装置
US10824504B2 (en) * 2018-04-16 2020-11-03 International Business Machines Corporation Common high and low random bit error correction logic
US20200127685A1 (en) * 2018-10-19 2020-04-23 Nyquist Semiconductor Limited Systems and methods for a hybrid non-volatile storage system
US10886947B2 (en) 2018-12-20 2021-01-05 Toshiba Memory Corporation Efficient decoding of n-dimensional error correction codes
US10853609B2 (en) * 2019-03-12 2020-12-01 Microsoft Technology Licensing, Llc Hybrid two-dimensional barcode reader
JP2021150733A (ja) * 2020-03-17 2021-09-27 キオクシア株式会社 半導体装置及び半導体記憶装置
CN112230855A (zh) * 2020-10-20 2021-01-15 英韧科技(上海)有限公司 固态硬盘及其读写方法
KR20220124582A (ko) * 2021-03-03 2022-09-14 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20220139199A (ko) * 2021-04-07 2022-10-14 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US20220375479A1 (en) * 2021-05-04 2022-11-24 Cypress Semiconductor Corporation Retransmission Softbit Decoding
US11861191B2 (en) * 2021-10-13 2024-01-02 Micron Technology, Inc. Parameter table protection for a memory system
US11770133B1 (en) * 2022-04-20 2023-09-26 SK Hynix Inc. Exact ber reporting in the presence of CRC termination

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3305966B2 (ja) * 1995-12-25 2002-07-24 ソニー株式会社 データ復号装置及びその方法並びにデータ再生装置
EP0790615A3 (en) * 1996-02-19 1998-04-15 Sony Corporation Data decoding apparatus and method and data reproduction apparatus
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US7237174B2 (en) * 2003-09-04 2007-06-26 The Directv Group, Inc. Method and system for providing short block length low density parity check (LDPC) codes in support of broadband satellite applications
US8180931B2 (en) * 2004-01-20 2012-05-15 Super Talent Electronics, Inc. USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch
KR100762619B1 (ko) 2004-05-21 2007-10-01 삼성전자주식회사 저밀도 패리티 검사 코드를 이용한 복호화 장치 및 방법
JP4444755B2 (ja) * 2004-08-17 2010-03-31 Kddi株式会社 連接符号システムおよび連接符号処理方法、復号装置
JP2008065969A (ja) * 2006-08-09 2008-03-21 Fujitsu Ltd 符号化装置、復号化装置、符号化方法、復号化方法および記憶装置
US20100180154A1 (en) * 2009-01-13 2010-07-15 International Business Machines Corporation Built In Self-Test of Memory Stressor

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
US11928077B2 (en) 2015-05-29 2024-03-12 SK Hynix Inc. Data processing circuit, data storage device including the same, and operating method thereof
KR20170037163A (ko) * 2015-09-25 2017-04-04 에스케이하이닉스 주식회사 데이터 처리 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
US8448050B2 (en) 2013-05-21
US20110072331A1 (en) 2011-03-24
CN102024501A (zh) 2011-04-20
JP2011065599A (ja) 2011-03-31

Similar Documents

Publication Publication Date Title
US8448050B2 (en) Memory system and control method for the same
KR101535225B1 (ko) 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치
US10707899B2 (en) Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
US9417956B2 (en) Error detection and correction unit, error detection and correction method, information processor, and program
US9170876B1 (en) Method and system for decoding encoded data stored in a non-volatile memory
US11115051B2 (en) Systems and methods for decoding error correcting codes
US10439649B2 (en) Data dependency mitigation in decoder architecture for generalized product codes for flash storage
US10484020B2 (en) System and method for parallel decoding of codewords sharing common data
US11321175B2 (en) Soft chip-kill recovery for multiple wordlines failure
US10707902B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
US10498366B2 (en) Data dependency mitigation in parallel decoders for flash storage
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
US10574274B2 (en) Systems and methods for decoding error correcting codes
US8751895B2 (en) Semiconductor memory device and decoding method
CN111240597B (zh) 存储数据的方法、装置、设备和计算机可读存储介质
CN107733443B (zh) 用于通用乘积码背景的低延迟软解码器架构
US20170279467A1 (en) Performance optimization in soft decoding of error correcting codes
JP2019057752A (ja) メモリシステム
US10700708B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
US20170264320A1 (en) Code reconstruction scheme for multiple code rate tpc decoder
US20170194989A1 (en) Techniques for miscorrection detection for constituent codewords in product codes
CN1905374A (zh) 非对称低密度校验码编译码方法
Kim et al. Quasi-primitive block-wise concatenated BCH codes for NAND flash memories
EP3913810A1 (en) Error correcting decoding device and error correcting decoding method
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application