KR101482684B1 - 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 - Google Patents
디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 Download PDFInfo
- Publication number
- KR101482684B1 KR101482684B1 KR20130122578A KR20130122578A KR101482684B1 KR 101482684 B1 KR101482684 B1 KR 101482684B1 KR 20130122578 A KR20130122578 A KR 20130122578A KR 20130122578 A KR20130122578 A KR 20130122578A KR 101482684 B1 KR101482684 B1 KR 101482684B1
- Authority
- KR
- South Korea
- Prior art keywords
- decoding
- submatrix
- result
- variable
- check
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0052—Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
- H04L1/0053—Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables specially adapted for power saving
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
Abstract
디코딩 방법은 디코더의 내부 메모리에 포함되는 패리티 체크 매트릭스의 일부를 서브 매트릭스로서 선택하는 단계, 상기 서브 매트릭스에 기초하여 코드 워드를 디코딩하고 결과 코드 워드를 생성하는 단계 및 상기 결과 코드 워드, 상기 서브 매트릭스 및 디코딩 수행 횟수에 기초하여 상기 디코딩의 결과를 디코딩 성공, 디코딩 실패 및 디코딩 재수행 중 하나로 판단하는 단계를 포함한다. 디코딩 방법은 패리티 체크 매트릭스 중 일부인 서브 매트릭스를 사용함으로써 디코더 내부 메모리의 액세스 횟수를 줄이고 디코딩 과정에서 소모되는 전력을 줄일 수 있다.
Description
본 발명은 반도체 장치에 관한 것으로서, 더욱 상세하게는 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법에 관한 것이다.
플래시 메모리(flash memory)의 셀이 싱글 레벨 셀(Single Level Cell, SLC)에서 멀티 레벨 셀(Multi Level Cell, MLC)로 바뀌어감에 따라 플래시 메모리의 비트 에러 래이트(Bit Error Rate, BER)이 점차 증가하고 있다.
기존 싱글 레벨 셀로 이루어진 플래시 메모리는 비씨에이치(Bose, Chaudhri, Hocquenghem, BCH) 코드와 같은 대수적인 코드(algebraic code)를 이용해 셀의 오류를 정정하는 것이 가능하였으나 멀티 레벨 셀로 이루어진 메모리의 경우 강력한 오류 정정 능력을 가진 저밀도 패리티 체크(Low-Density Parity Check, LDPC) 코드가 비씨에이치 코드의 대안으로 이용되고 있다. 그러나, 저밀도 패리티 체크 코드를 디코딩하기 위한 디코더는 하드웨어 복잡도가 높고 디코딩 시에 소비 전력이 높다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 저밀도 패리티 체크 디코더의 소비 전력을 감소시킬 수 있는 디코딩 방법을 제공하는 것이다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 저밀도 패리티 체크 디코더의 소비 전력을 감소시킬 수 있는 메모리 장치의 데이터 독출 방법을 제공하는 것이다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 저밀도 패리티 체크 디코더의 소비 전력을 감소시킬 수 있는 메모리 시스템의 동작 방법을 제공하는 것이다
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 저밀도 패리티 체크 디코더의 소비 전력을 감소시킬 수 있는 메모리 시스템을 제공하는 것이다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 저밀도 패리티 체크 디코더의 소비 전력을 감소시킬 수 있는 메모리 시스템의 디코딩 방법을 제공하는 것이다.
상기한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 디코딩 방법은 디코더의 내부 메모리에 포함되는 패리티 체크 매트릭스의 일부를 서브 매트릭스로서 선택하는 단계, 상기 서브 매트릭스에 기초하여 코드 워드를 디코딩하고 결과 코드 워드를 생성하는 단계 및 상기 결과 코드 워드, 상기 서브 매트릭스 및 디코딩 수행 횟수에 기초하여 상기 디코딩의 결과를 디코딩 성공, 디코딩 실패 및 디코딩 재수행 중 하나로 판단하는 단계를 포함한다.
예시적인 실시예에 있어서, 상기 내부 메모리는 상기 코드 워드에 상응하는 변수 비트들이 할당되는 변수 노드들 및 상기 서브 매트릭스에 따라 상기 변수 노드들과 연결되어 상기 변수 비트들을 전달받는 체크 노드들을 포함할 수 있다.
예시적인 실시예에 있어서, 상기 변수 노드들의 개수는 상기 서브 매트릭스의 열의 개수와 동일할 수 있다.
예시적인 실시예에 있어서, 상기 체크 노드들의 개수는 상기 서브 매트릭스의 행의 개수와 동일할 수 있다.
예시적인 실시예에 있어서, 상기 서브 매트릭스에서 i (i는 자연수) 번째 행의 원소들 중 j (j는 자연수) 번째 열의 값이 1인 경우 i번째 체크 노드와 j번째 변수 노드가 연결되어 디코딩을 수행할 수 있다.
예시적인 실시예에 있어서, 상기 서브 매트릭스에 기초하여 상기 디코딩을 1회 수행하는 동안 상기 변수 노드들 각각은 상기 체크 노드들에 적어도 1회 이상 연결될 수 있다.
예시적인 실시예에 있어서, 상기 결과 코드 워드와 상기 서브 매트릭스의 역행렬의 곱이 0인 경우 상기 디코딩의 결과는 상기 디코딩 성공으로 판단될 수 있다.
예시적인 실시예에 있어서, 상기 결과 코드 워드와 상기 서브 매트릭스의 역행렬의 곱이 0이 아니고 상기 디코딩 수행 횟수가 총 최대 반복 횟수 보다 같거나 큰 경우 상기 디코딩의 결과는 상기 디코딩 실패로 판단될 수 있다.
예시적인 실시예에 있어서, 상기 결과 코드 워드와 상기 서브 매트릭스의 역행렬의 곱이 0이 아니고, 상기 디코딩 수행 횟수가 총 최대 반복 횟수 보다 작으며, 상기 디코딩 수행 횟수가 행 최대 반복 횟수 보다 작은 경우, 상기 디코딩의 결과는 상기 디코딩 재수행으로 판단되고, 상기 서브 매트릭스 및 상기 결과 코드 워드에 기초하여 상기 디코딩이 재수행될 수 있다.
예시적인 실시예에 있어서, 상기 결과 코드 워드와 상기 서브 매트릭스의 역행렬의 곱이 0이 아니고, 상기 디코딩 수행 횟수가 총 최대 반복 횟수 보다 작으며, 상기 디코딩 수행 횟수가 행 최대 반복 횟수 보다 같거나 큰 경우, 상기 디코딩의 결과는 상기 디코딩 재수행으로 판단되고, 상기 패리티 체크 매트릭스 중 상응하는 하나의 행을 상기 서브 매트릭스에 추가한 추가 서브 매트릭스 및 상기 결과 코드 워드에 기초하여 상기 디코딩이 재수행될 수 있다.
예시적인 실시예에 있어서, 상기 총 최대 반복 횟수 및 상기 행 최대 반복 횟수는 가변될 수 있다.
상기한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 메모리 장치의 데이터 독출 방법은 디코더의 내부 메모리에 포함되는 패리티 체크 매트릭스의 일부를 서브 매트릭스로서 선택하는 단계, 메모리 컨트롤러로부터 독출 코맨드 및 독출 어드레스를 수신하고 상기 독출 어드레스에 상응하는 코드 워드를 메모리 장치 내의 메모리 셀 어레이로부터 독출하는 단계, 상기 서브 매트릭스에 기초하여 상기 코드 워드를 디코딩하고 결과 코드 워드를 생성하는 단계, 상기 결과 코드 워드, 상기 서브 매트릭스 및 디코딩 수행 횟수에 기초하여 상기 디코딩의 결과를 디코딩 성공, 디코딩 실패 및 디코딩 재수행 중 하나로 판단하는 단계 및 상기 디코딩이 상기 디코딩 성공으로 판단되는 경우 상기 결과 코드 워드를 상기 메모리 장치 외부로 출력하는 단계를 포함한다.
상기한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 메모리 시스템의 동작 방법은 메모리 컨트롤러에 포함되는 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 단계 및 상기 메모리 장치로부터 출력되는 코드 워드를 디코딩하는 단계를 포함하고, 상기 디코딩하는 단계는 디코더의 내부 메모리에 포함되는 패리티 체크 매트릭스의 일부를 서브 매트릭스로서 선택하는 단계, 상기 서브 매트릭스에 기초하여 상기 코드 워드를 디코딩하고 결과 코드 워드를 생성하는 단계 및 상기 결과 코드 워드, 상기 서브 매트릭스 및 디코딩 수행 횟수에 기초하여 상기 디코딩의 결과를 디코딩 성공, 디코딩 실패 및 디코딩 재수행 중 하나로 판단하는 단계를 포함한다.
상기한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 메모리 시스템은 메모리 장치 및 상기 메모리 장치와 호스트 간에 데이터의 전송을 제어하기 위한 메모리 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 인코더 및 디코더를 포함한다. 상기 인코더는 상기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력한다. 상기 디코더는 상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정한다. 상기 디코더는 패리티 체크 매트릭스의 일부를 서브 매트릭스로서 선택하고, 상기 서브 매트릭스에 기초하여 코드 워드를 디코딩하여 결과 코드 워드를 생성한다.
상기한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 메모리 시스템의 디코딩 방법은 디코더의 내부 메모리에 포함되는 패리티 체크 매트릭스의 일부를 서브 매트릭스로서 선택하는 단계, 메모리 컨트롤러로부터 코맨드 및 액세스 어드레스를 수신하고 상기 액세스 어드레스에 상응하는 코드 워드를 메모리 장치 내의 메모리 셀 어레이로부터 독출하는 단계, 상기 서브 매트릭스에 기초하여 상기 코드 워드를 디코딩하고 결과 코드 워드를 생성하는 단계 및 상기 결과 코드 워드, 상기 서브 매트릭스 및 디코딩 수행 횟수에 기초하여 상기 디코딩의 결과를 디코딩 성공, 디코딩 실패 및 디코딩 재수행 중 하나로 판단하는 단계를 포함한다.
도 1은 본 발명의 실시예들에 따른 디코딩 방법을 나타내는 순서도이다.
도 2는 도 1의 디코딩 방법을 사용하는 디코더를 나타내는 블록도이다.
도 3은 도 1의 디코딩 방법에서 사용되는 서브 매트릭스의 일 예를 나타내는 도면이다.
도 4 및 도 5는 도 1의 디코딩 방법의 수행 과정을 설명하기 위한 도면이다.
도 6는 도 1의 디코딩 방법에 사용되는 서브 매트릭스를 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 디코딩 방법을 나타내는 순서도이다.
도 8은 도 1의 디코딩 방법에 사용되는 총 최대 반복 횟수 및 행 최대 반복 횟수를 설명하기 위한 도면이다.
도 9는 플래시 메모리의 프로그램 및 소거 사이클(Program/Erase cycle, P/E cycle)에 따른 멀티 레벨 셀의 비트 에러 래이트를 나타내는 도면이다.
도 10은 본 발명의 실시예들에 따른 메모리 장치의 데이터 독출 방법을 나타내는 순서도이다.
도 11은 본 발명의 실시예들에 따른 메모리 시스템의 동작 방법을 나타내는 순서도이다.
도 12는 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 13은 본 발명의 실시예들에 따른 메모리 시스템의 디코딩 방법을 나타내는 순서도이다.
도 2는 도 1의 디코딩 방법을 사용하는 디코더를 나타내는 블록도이다.
도 3은 도 1의 디코딩 방법에서 사용되는 서브 매트릭스의 일 예를 나타내는 도면이다.
도 4 및 도 5는 도 1의 디코딩 방법의 수행 과정을 설명하기 위한 도면이다.
도 6는 도 1의 디코딩 방법에 사용되는 서브 매트릭스를 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 디코딩 방법을 나타내는 순서도이다.
도 8은 도 1의 디코딩 방법에 사용되는 총 최대 반복 횟수 및 행 최대 반복 횟수를 설명하기 위한 도면이다.
도 9는 플래시 메모리의 프로그램 및 소거 사이클(Program/Erase cycle, P/E cycle)에 따른 멀티 레벨 셀의 비트 에러 래이트를 나타내는 도면이다.
도 10은 본 발명의 실시예들에 따른 메모리 장치의 데이터 독출 방법을 나타내는 순서도이다.
도 11은 본 발명의 실시예들에 따른 메모리 시스템의 동작 방법을 나타내는 순서도이다.
도 12는 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 13은 본 발명의 실시예들에 따른 메모리 시스템의 디코딩 방법을 나타내는 순서도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 디코딩 방법을 나타내는 순서도이고, 도 2는 도 1의 디코딩 방법을 사용하는 디코더를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 디코더(10)는 디코딩 로직(190) 및 내부 메모리(100)를 포함할 수 있다. 디코딩 로직(190)은 내부 메모리(100)를 제어하는 제어 신호를 전달할 수 있다. 디코딩 방법에서는 디코더의 내부 메모리(100)에 포함되는 패리티 체크 매트릭스(110)의 일부를 서브 매트릭스(111)로서 선택한다(S100). 패리티 체크 매트릭스(110)는 디코더의 내부 메모리(100)에 구현될 수 있다. 패리티 체크 매트릭스(110)는 복수 개의 서브 매트릭스(111)들을 포함할 수 있다. 복수 개의 서브 매트릭스(111)들 중 하나의 서브 매트릭스(111)를 선택하여 디코딩을 수행할 수 있다. 서브 매트릭스(111)는 플래시 메모리의 사용 시간 및 과거 디코딩을 수행했던 기록들을 기준으로 선택할 수 있다.
서브 매트릭스(111)에 기초하여 코드 워드(Code Word, CW)를 디코딩하고 결과 코드 워드(Result Code Word, RCW)를 생성한다(S110). 디코더의 내부 메모리(100)는 변수 노드들(150) 및 체크 노드들(130)을 포함할 수 있다. 도 4 및 5에서 후술하는 바와 같이 변수 노드들(150)은 코드 워드(CW)에 상응하는 변수 비트(variable bit, VB)들이 전달될 수 있다. 체크 노드들(130)은 변수 노드들(150)과 연결되어 변수 비트(VB)들이 전달될 수 있다. 변수 노드들(150)과 연결되는 체크 노드들(130)이 변수 비트(VB)들을 전달받으면, 정해진 알고리즘에 따라 디코딩을 수행하고 결과를 변수 노드들(150)에 전달할 수 있다. 디코딩을 수행하고 변수 노드들(150)에 전달되는 결과는 결과 코드 워드(RCW)일 수 있다.
결과 코드 워드(RCW), 서브 매트릭스(111) 및 디코딩 수행 횟수(Decoding Operation Number, DON)에 기초하여 디코딩의 결과(Decoding Result, DR)를 디코딩 성공(Decoding Success, DS), 디코딩 실패(Decoding Failure, DF) 및 디코딩 재수행(Repeat Decoding, RD) 중 하나로 판단한다(S120). 결과 코드 워드(RCW), 서브 매트릭스(111) 및 디코딩 수행 횟수(DON)에 따라 디코딩 성공(DS)여부를 판단할 수 있다. 디코딩 성공(DS)은 신드롬 체크(Syndrome Check, SC)를 통해서 판단할 수 있다. 신드롬 체크(SC)는 결과 코드 워드(RCW)와 서브 매트릭스(111)의 역행렬의 곱이 0인 지 여부를 판단하는 과정일 수 있다. 신드롬 체크(SC) 결과가 0인 경우, 디코딩의 결과 (DR)를 디코딩 성공(DS)으로 판단할 수 있다. 신드롬 체크(SC) 결과가 0이 아닌 경우, 디코딩의 결과(DR)를 디코딩 실패(DF) 및 디코딩 재수행(RD) 중 하나로 판단할 수 있다.
디코딩의 결과(DR) 디코딩 재수행(RD)의 경우 서브 매트릭스(111)의 행을 증가시킬 수 있다. 즉, 체크 노드(130)의 개수를 증가시킬 수 있다. 디코딩 재수행(RD)을 반복하는 경우 반복적으로 서브 매트릭스(111)의 행이 증가하여 서브 매트릭스(111)가 패리티 체크 매트릭스(110)될 수도 있다.
본 발명에 따른 디코딩 방법은 패리티 체크 매트릭스(110) 중 일부를 서브 매트릭스(111)로 사용함으로써 디코딩 과정에서 디코더의 내부 메모리(100)에 액세스(access)하는 횟수를 줄일 수 있다. 저밀도 패리티 체크(Low-Density Parity Check, LDPC) 코드는 1KB 이상의 긴 코드가 사용되므로 메모리 액세스에 소모되는 전력은 전체 디코딩 파워의 상당한 부분을 차지할 수 있다. 따라서 본 발명에 따른 디코딩 방법을 사용하면 디코딩 과정에서 소모되는 전력을 줄일 수 있다.
도 3은 도 1의 디코딩 방법에서 사용되는 서브 매트릭스의 일 예를 나타내는 도면이다.
도 2 및 도 3을 참조하면, 내부 메모리(100)는 코드 워드(CW)에 상응하는 변수 비트(VB)들이 할당되는 변수 노드들(150)(c0 내지 c7) 및 서브 매트릭스(111)에 따라 변수 노드들(150)과 연결되어 변수 비트(VB)들을 전달받는 체크 노드들(130)(f0 내지 f3)을 포함할 수 있다.
예를 들어, 코드 워드(CW)가 CW=[1 0 0 1 0 1 0 1]인 경우, 변수 노드들(150) 중 제1 변수 노드(c0)에는 1이 할당될 수 있다. 변수 노드들(150) 중 제2 변수 노드(c1)에는 0이 할당될 수 있다. 변수 노드들(150) 중 제3 변수 노드(c2)에는 0이 할당될 수 있다. 변수 노드들(150) 중 제4 변수 노드(c3)에는 1이 할당될 수 있다. 변수 노드들(150) 중 제5 변수 노드(c4)에는 0이 할당될 수 있다. 변수 노드들(150) 중 제6 변수 노드(c5)에는 1이 할당될 수 있다. 변수 노드들(150) 중 제7 변수 노드(c6)에는 0이 할당될 수 있다. 변수 노드들(150) 중 제8 변수 노드(c7)에는 1이 할당될 수 있다.
서브 매트릭스(111)에 따라 변수 노드들(150)과 체크 노드들(130)이 연결되는 방법은 다음과 같을 수 있다. 예를 들어, 서브 매트릭스(111)의 첫 번째 행의 원소들이 [0 1 0 1 1 0 0 1]인 경우, 체크 노드들(130) 중 제1 체크 노드(f0)에는 제2 변수 노드(c1), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제8 변수 노드(c7)가 연결될 수 있다. 서브 매트릭스(111)의 두 번째 행의 원소들이 [1 1 1 0 0 1 0 0]인 경우, 체크 노드들(130) 중 제2 체크 노드(f1)에는 제1 변수 노드(c0), 제2 변수 노드(c1), 제3 변수 노드(c2) 및 제 6 변수 노드가 연결될 수 있다. 서브 매트릭스(111)의 세 번째 행의 원소들이 [0 0 1 0 0 1 1 1]인 경우, 체크 노드들(130) 중 제3 체크 노드(f2)에는 제3 변수 노드(c2), 제6 변수 노드(c5), 제7 변수 노드(c6) 및 제8 변수 노드(c7)가 연결될 수 있다. 서브 매트릭스(111)의 네 번째 행의 원소들이 [1 0 0 1 1 0 1 0]인 경우, 체크 노드들(130) 중 제4 체크 노드(f3)에는 제1 변수 노드(c0), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제 7 변수 노드(c6)가 연결될 수 있다.
변수 노드들(150)과 연결되는 체크 노드들(130)이 변수 비트(VB)들을 전달받으면, 정해진 알고리즘에 따라 디코딩을 수행하고 결과를 변수 노드들(150)에 전달할 수 있다. 디코딩을 수행하고 변수 노드들(150)에 전달되는 결과는 결과 코드 워드(RCW)일 수 있다.
예시적인 실시예에 있어서, 변수 노드들(150)의 개수는 서브 매트릭스(111)의 열의 개수와 동일할 수 있다. 코드 워드(CW)의 길이는 변수 노드들(150)의 개수와 동일할 수 있다. 서브 매트릭스(111)의 각 열의 값에 따라 상응하는 변수 노드가 디코딩되는지 여부가 결정될 수 있다. 예를 들어 서브 매트릭스(111)의 첫 번째 행의 원소들이 [0 1 0 1 1 0 0 1]인 경우, 체크 노드들(130) 중 제1 체크 노드(f0)를 통해서는 제2 변수 노드(c1), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제8 변수 노드(c7)에 해당하는 변수 비트(VB)들만 디코딩될 수 있다. 따라서 코드 워드(CW)에 포함되는 모든 변수 비트(VB)들을 디코딩하기 위해서는 서브 매트릭스(111)의 열의 개수는 변수 노드들(150)의 개수와 동일할 수 있다.
예시적인 실시예에 있어서, 체크 노드들(130)의 개수는 서브 매트릭스(111)의 행의 개수와 동일할 수 있다. 예를 들어 서브 매트릭스(111)가 4행으로 구성되는 경우, 체크 노드들(130)은 4개일 수 있다.
도 4 및 도 5는 도 1의 디코딩 방법의 수행 과정을 설명하기 위한 도면이다.
도 3, 도 4 및 도 5를 참조하면, 서브 매트릭스(111)에서 i (i는 자연수) 번째 행의 원소들 중 j (j는 자연수) 번째 열의 값이 1인 경우 i번째 체크 노드와 j번째 변수 노드가 연결되어 디코딩을 수행할 수 있다. 예를 들어, 서브 매트릭스(111)의 1 행의 2 번째 열의 값이 1 인 경우, 체크 노드들(130) 중 제1 체크 노드(f0)와 변수 노드들(150) 중 제2 변수 노드(c1)는 연결되어 디코딩을 수행할 수 있다.
디코딩 과정은 다음과 같이 수행될 수 있다.
예를 들어, 코드 워드(CW)가 CW=[1 0 0 1 0 1 0 1]이고 코드 워드(CW)의 두 번째 원소는 0인데, 1로 수신되어 에러가 발생한 경우를 가정할 수 있다. 또한 서브 매트릭스(111)의 첫 번째 행의 원소들이 [0 1 0 1 1 0 0 1]인 경우, 체크 노드들(130) 중 제1 체크 노드(f0)에는 제2 변수 노드(c1), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제8 변수 노드(c7)가 연결될 수 있다. 서브 매트릭스(111)의 두 번째 행의 원소들이 [1 1 1 0 0 1 0 0]인 경우, 체크 노드들(130) 중 제2 체크 노드(f1)에는 제1 변수 노드(c0), 제2 변수 노드(c1), 제3 변수 노드(c2) 및 제 6 변수 노드가 연결될 수 있다. 서브 매트릭스(111)의 세 번째 행의 원소들이 [0 0 1 0 0 1 1 1]인 경우, 체크 노드들(130) 중 제3 체크 노드(f2)에는 제3 변수 노드(c2), 제6 변수 노드(c5), 제7 변수 노드(c6) 및 제8 변수 노드(c7)가 연결될 수 있다. 서브 매트릭스(111)의 네 번째 행의 원소들이 [1 0 0 1 1 0 1 0]인 경우, 체크 노드들(130) 중 제4 체크 노드(f3)에는 제1 변수 노드(c0), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제 7 변수 노드(c6)가 연결될 수 있다.
도 4를 참조하면, 제1 체크 노드(f0)는 제2 변수 노드(c1), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제8 변수 노드(c7)로부터 1, 1, 0, 1인 변수 비트(VB)들을 전달받을 수 있다. 제2 체크 노드(f1)는 제1 변수 노드(c0), 제2 변수 노드(c1), 제3 변수 노드(c2) 및 제 6 변수 노드로부터 1, 1, 0, 1인 변수 비트(VB)들을 전달받을 수 있다. 제3 체크 노드(f2)는 제3 변수 노드(c2), 제6 변수 노드(c5), 제7 변수 노드(c6) 및 제8 변수 노드(c7)로부터 0, 1, 0, 1인 변수 비트(VB)들을 전달받을 수 있다. 제4 체크 노드(f3)는 제1 변수 노드(c0), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제7 변수 노드(c6)로부터 1, 1, 0, 0인 변수 비트(VB)들을 전달받을 수 있다.
변수 노드들(150)과 연결되는 체크 노드들(130)이 변수 비트(VB)들을 전달받으면, 정해진 알고리즘에 따라 디코딩을 수행하고 결과를 변수 노드들(150)에 전달할 수 있다. 예를 들어, 제1 체크 노드(f0)는 제2 변수 노드(c1), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제8 변수 노드(c7) 각각에 0, 0, 1, 0인 결과 비트들을 전달할 수 있다. 제2 체크 노드(f1)는 제1 변수 노드(c0), 제2 변수 노드(c1), 제3 변수 노드(c2) 및 제 6 변수 노드 각각에 0, 0, 1, 0인 결과 비트들을 전달할 수 있다. 제3 체크 노드(f2)는 제3 변수 노드(c2), 제6 변수 노드(c5), 제7 변수 노드(c6) 및 제8 변수 노드(c7) 각각에 0, 1, 0, 1인 결과 비트들을 전달할 수 있다. 제4 체크 노드(f3)는 제1 변수 노드(c0), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제7 변수 노드(c6) 각각에 1, 1, 0, 0인 결과 비트들을 전달할 수 있다.
도 5를 참조하면, 제1 변수 노드(c0)로 전달되는 결과 비트들은 제2 체크 노드(f1) 및 제4 체크 노드(f3) 각각으로부터 전달되는 0, 1일 수 있다. 제2 변수 노드(c1)로 전달되는 결과 비트들은 제1 체크 노드(f0) 및 제2 체크 노드(f1) 각각으로부터 전달되는 0, 0일 수 있다. 제3 변수 노드(c2)로 전달되는 결과 비트들은 제2 체크 노드(f1) 및 제3 체크 노드(f2) 각각으로부터 전달되는 1, 0일 수 있다. 제4 변수 노드(c3)로 전달되는 결과 비트들은 제1 체크 노드(f0) 및 제4 체크 노드(f3) 각각으로부터 전달되는 0, 1일 수 있다. 제5 변수 노드(c4)로 전달되는 결과 비트들은 제1 체크 노드(f0) 및 제4 체크 노드(f3) 각각으로부터 전달되는 1, 0일 수 있다. 제6 변수 노드(c5)로 전달되는 결과 비트들은 제2 체크 노드(f1) 및 제3 체크 노드(f2) 각각으로부터 전달되는 0, 1일 수 있다. 제7 변수 노드(c6)로 전달되는 결과 비트들은 제3 체크 노드(f2) 및 제4 체크 노드(f3) 각각으로부터 전달되는 0, 0일 수 있다. 제8 변수 노드(c7)로 전달되는 결과 비트들은 제1 체크 노드(f0) 및 제3 체크 노드(f2) 각각으로부터 전달되는 1, 1일 수 있다.
각 변수 노드들(150)이 전달받은 결과 비트들을 통해서 디코딩 결과에 해당하는 결과 코드 워드(RCW)는 [1 0 0 1 0 1 0 1]일 수 있다. 각 변수 노드들(150)에 전달되는 결과 비트들 중 하나의 결과 비트를 결정하는 방법은 다수결에 의하여 결정할 수 있다. 에러를 포함하는 코드 워드(CW)는 [1 1 0 1 0 1 0 1]이고 디코딩 결과에 해당하는 결과 코드 워드(RCW)는 [1 0 0 1 0 1 0 1]일 수 있다. 결과 코드 워드(RCW)의 두 번째 원소가 1에서 0으로 정정되는 것을 확인할 수 있다.
도 4 및 도 5는 하드 디시젼 엘디피씨(hard-decision LDPC) 디코딩에 관하여 설명하고 있으나, 본 발명은 하드 디시젼 엘티피씨에 한정되지 않고, 소프트 디시젼 엘디피씨(soft-decion LDPC)의 경우에도 적용될 수 있다.
본 발명에 따른 디코딩 방법은 패리티 체크 매트릭스(110) 중 일부를 서브 매트릭스(111)로 사용함으로써 디코딩 과정에서 디코더의 내부 메모리(100)에 액세스(access)하는 횟수를 줄일 수 있다. 저밀도 패리티 체크(Low-Density Parity check, LDPC) 코드는 1KB 이상의 긴 코드가 사용되므로 메모리 액세스에 소모되는 전력은 전체 디코딩 파워의 상당한 부분을 차지할 수 있다. 따라서 본 발명에 따른 디코딩 방법을 사용하면 디코딩 과정에서 소모되는 전력을 줄일 수 있다.
도 6는 도 1의 디코딩 방법에 사용되는 서브 매트릭스를 나타내는 도면이다.
도 6을 참조하면, 서브 매트릭스(111)에 기초하여 디코딩을 1회 수행하는 동안 변수 노드들(150) 각각은 체크 노드들(130)에 적어도 1회 이상 연결될 수 있다. 패리티 체크 매트릭스(110)는 디코더의 내부 메모리(100)에 구현될 수 있다. 패리티 체크 매트릭스(110)는 복수 개의 서브 매트릭스(111)들을 포함할 수 있다. 복수 개의 서브 매트릭스(111)들 중 하나의 서브 매트릭스(111)를 선택하여 디코딩을 수행할 수 있다. 코드 워드(CW)의 길이는 변수 노드들(150)의 개수와 동일할 수 있다. 서브 매트릭스(111)의 각 열의 값에 따라 상응하는 변수 노드가 디코딩되는지 여부가 결정될 수 있다. 예를 들어 서브 매트릭스(111)의 첫 번째 행의 원소들이 [0 1 0 1 1 0 0 1]인 경우, 체크 노드들(130) 중 제1 체크 노드(f0)를 통해서는 제2 변수 노드(c1), 제4 변수 노드(c3), 제5 변수 노드(c4) 및 제8 변수 노드(c7)에 해당하는 변수 비트(VB)들만 디코딩될 수 있다. 따라서 코드 워드(CW)에 포함되는 모든 변수 비트(VB)들을 디코딩하기 위해서는 서브 매트릭스(111)의 각 열의 값들 중 적어도 하나는 1을 포함하고 있어야 한다. 이 경우, 도 6의 (b)와 같이 서브 매트릭스(111)에 기초하여 디코딩을 1회 수행하는 동안 변수 노드들(150) 각각은 체크 노드들(130)에 적어도 1회 이상 연결될 수 있다.
도 7은 본 발명의 일 실시예에 따른 디코딩 방법을 나타내는 순서도이고, 도 8은 도 1의 디코딩 방법에 사용되는 총 최대 반복 횟수 및 행 최대 반복 횟수를 설명하기 위한 도면이다.
도 7을 참조하면, 결과 코드 워드(RCW)와 서브 매트릭스(111)의 역행렬의 곱이 0인 경우 디코딩의 결과(DR)는 디코딩 성공(DS)으로 판단될 수 있다. 디코딩 성공(DS)은 신드롬 체크(SC)를 통해서 판단할 수 있다. 신드롬 체크(SC)는 결과 코드 워드(RCW)와 서브 매트릭스(111)의 역행렬의 곱이 0인 지 여부를 판단하는 과정일 수 있다. 신드롬 체크(SC) 결과가 0인 경우, 디코딩의 결과(DR)를 디코딩 성공(DS)으로 판단할 수 있다. 신드롬 체크(SC) 결과가 0이 아닌 경우, 디코딩의 결과(DR)를 디코딩 실패(DF) 및 디코딩 재수행(RD) 중 하나로 판단할 수 있다.
도 7 및 도 8을 참조하면, 결과 코드 워드(RCW)와 서브 매트릭스(111)의 역행렬의 곱이 0이 아니고 디코딩 수행 횟수(DON)가 총 최대 반복 횟수 보다 같거나 큰 경우 디코딩의 결과(DR)는 디코딩 실패(DF)로 판단될 수 있다. 즉, 총 최대 반복 횟수 체크(S122)를 하여 디코딩 횟수가 총 최대 반복 횟수 보다 같거나 큰 경우, 디코딩 실패(DF)로 판단될 수 있다. 디코딩에 성공하지 못한 경우에도 결과 코드 워드(RCW)를 이용하여 디코딩을 무한히 반복할 수는 없다. 따라서 디코딩 수행 횟수(DON)를 일정 반복 횟수로 제한할 수 있다. 일정 반복 횟수는 총 최대 반복 횟수일 수 있다. 예를 들어 총 최대 반복 횟수는 12일 수 있다. 디코딩 반복 횟수가 12보다 크면, 디코딩을 중단하고 디코딩 실패(DF)로 판단할 수 있다.
예시적인 실시예에 있어서, 결과 코드 워드(RCW)와 서브 매트릭스(111)의 역행렬의 곱이 0이 아니고, 디코딩 수행 횟수(DON)가 총 최대 반복 횟수 보다 작으며, 디코딩 수행 횟수(DON)가 행 최대 반복 횟수 보다 작은 경우, 디코딩의 결과(DR)는 디코딩 재수행(RD)으로 판단되고, 서브 매트릭스(111) 및 결과 코드 워드(RCW)에 기초하여 디코딩이 재수행될 수 있다.
예시적인 실시예에 있어서, 결과 코드 워드(RCW)와 서브 매트릭스(111)의 역행렬의 곱이 0이 아니고, 디코딩 수행 횟수(DON)가 총 최대 반복 횟수 보다 작으며, 디코딩 수행 횟수(DON)가 행 최대 반복 횟수 보다 같거나 큰 경우, 디코딩의 결과(DR)는 디코딩 재수행(RD)으로 판단되고, 패리티 체크 매트릭스(110) 중 상응하는 하나의 행을 서브 매트릭스(111)에 추가한 추가 서브 매트릭스 및 결과 코드 워드(RCW)에 기초하여 디코딩이 재수행될 수 있다.
디코딩에 성공하지 못한 경우에도 결과 코드 워드(RCW) 및 동일 서브 매트릭스(111)를 이용하여 디코딩을 무한히 반복할 수는 없다. 따라서 동일 서브 매트릭스(111)를 이용하여 디코딩 수행하는 횟수를 일정 반복 횟수로 제한할 수 있다. 동일한 서브 매트릭스(111)를 이용하여 디코딩을 반복하는 총 횟수는 행 최대 반복 횟수일 수 있다. 예를 들어, 행 최대 반복 횟수는 3일 수 있다. 신드롬 체크(S121) 결과가 0이 아니고, 디코딩 수행 횟수(DON)가 행 최대 반복 횟수 보다 크거나 같은 경우에는 디코딩의 결과(DR)는 디코딩 재수행(RD)으로 판단될 수 있다. 즉, 행 최대 반복 횟수 체크(S123)를 하여 디코딩 횟수가 행 최대 반복 횟수 보다 같거나 큰 경우, 디코딩 재수행(RD)로 판단될 수 있다. 이 경우, 패리티 체크 매트릭스(110) 중 상응하는 하나의 행을 서브 매트릭스(111)에 추가한 추가 서브 매트릭스 및 결과 코드 워드(RCW)에 기초하여 디코딩이 재수행될 수 있다.
도 9는 플래시 메모리의 프로그램 및 소거 사이클(Program/Erase cycle, P/E cycle)에 따른 멀티 레벨 셀의 비트 에러 래이트를 나타내는 도면이다.
도 9을 참조하면, 플래시 메모리는 오랜 사용 시간을 보장하기 위하여 웨어 레벨링(wear-leveling)되어 있다. 플래시 메모리는 여러 개의 페이지 단위로 나누어질 수 있다. 하나의 페이지에만 독출과 기입 동작을 반복하면 해당 페이지의 셀들만 쉽게 오동작할 수 있기 때문에 데이터를 플래시 메모리에 쓸 때 페이지를 랜덤(random)하게 나누어서 프로그래밍하는 것을 웨어 레벨링이라고 한다. 플래시 메모리는 웨어 레벨링되어 있으므로 전체 페이지에 대해서도 도 9과 같은 비트 에러 래이트(BER)를 나타낸다.
비트 에러 래이트는 프로그램 및 소거 사이클이 증가함에 따라 높아질 수 있다. 특히, 플래시 메모리의 사용 초기에는 거의 오류가 없음을 확인할 수 있다. 멀티 레벨 셀의 경우, 약 60만번 이상의 프로그램 및 소거 사이클이 지난 후에 비트 에러 래이트(BER)이 급속히 증가하는 것을 확인할 수 있다. 따라서 약 60만번 이하의 프로그램 및 소거 사이클의 구간에서는 전체 패리티 체크 매트릭스(110)를 이용하여 디코딩하는 것은 전력 소모 측면에서 매우 불리하다. 따라서 본 발명에 따른 디코딩 방법은 패리티 체크 매트릭스(110) 중 일부를 서브 매트릭스(111)로 사용함으로써 디코딩 과정에서 디코더의 내부 메모리(100)에 액세스(access)하는 횟수를 줄일 수 있다. 저밀도 패리티 체크(Low-Density Parity check, LDPC) 코드는 1KB 이상의 긴 코드가 사용되므로 메모리 액세스에 소모되는 전력은 전체 디코딩 파워의 상당한 부분을 차지할 수 있다. 따라서 본 발명에 따른 디코딩 방법을 사용하면 디코딩 과정에서 소모되는 전력을 줄일 수 있다.
예시적인 실시예에 있어서, 총 최대 반복 횟수 및 행 최대 반복 횟수는 가변될 수 있다. 총 최대 반복 횟수 및 행 최대 반복 횟수는 플래시 메모리의 사용 시간, 과거 디코딩을 수행했던 기록 및 프로그램/소거 사이클에 따라 변경될 수 있다.
도 10은 본 발명의 실시예들에 따른 메모리 장치의 데이터 독출 방법을 나타내는 순서도이다.
도 2 및 도 10을 참조하면, 메모리 장치의 데이터 독출 방법에서는 디코더의 내부 메모리(100)에 포함되는 패리티 체크 매트릭스(110)의 일부를 서브 매트릭스(111)로서 선택한다(S200). 패리티 체크 매트릭스(110)는 디코더의 내부 메모리(100)에 구현될 수 있다. 패리티 체크 매트릭스(110)는 복수 개의 서브 매트릭스(111)들을 포함할 수 있다. 복수 개의 서브 매트릭스(111)들 중 하나의 서브 매트릭스(111)를 선택하여 디코딩을 수행할 수 있다.
메모리 컨트롤러로부터 독출 코맨드 및 독출 어드레스를 수신하고 독출 어드레스에 상응하는 코드 워드(CW)를 메모리 장치 내의 메모리 셀 어레이로부터 독출한다(S210).
서브 매트릭스(111)에 기초하여 코드 워드(CW)를 디코딩하고 결과 코드 워드(RCW)를 생성한다(S220). 디코더의 내부 메모리(100)는 변수 노드들(150) 및 체크 노드들(130)을 포함할 수 있다. 도 4 및 5에서 전술한 바와 같이 변수 노드들(150)은 코드 워드(CW)에 상응하는 변수 비트(VB)들이 전달될 수 있다. 체크 노드들(130)은 변수 노드들(150)과 연결되어 변수 비트(VB)들이 전달될 수 있다. 변수 노드들(150)과 연결되는 체크 노드들(130)이 변수 비트(VB)들을 전달받으면, 정해진 알고리즘에 따라 디코딩을 수행하고 결과를 변수 노드들(150)에 전달할 수 있다. 디코딩을 수행하고 변수 노드들(150)에 전달되는 결과는 결과 코드 워드(RCW)일 수 있다.
결과 코드 워드(RCW), 서브 매트릭스(111) 및 디코딩 수행 횟수(DON)에 기초하여 디코딩의 결과(DR)를 디코딩 성공(DS), 디코딩 실패(DF) 및 디코딩 재수행(RD) 중 하나로 판단한다(S230). 결과 코드 워드(RCW), 서브 매트릭스(111) 및 디코딩 수행 횟수(DON)에 따라 디코딩 성공(DS)여부를 판단할 수 있다. 디코딩 성공(DS)은 신드롬 체크(S121)를 통해서 판단할 수 있다. 신드롬 체크(S121)는 결과 코드 워드(RCW)와 서브 매트릭스(111)의 역행렬의 곱이 0인 지 여부를 판단하는 과정일 수 있다. 신드롬 체크(S121) 결과가 0인 경우, 디코딩의 결과(DR)를 디코딩 성공(DS)으로 판단할 수 있다. 신드롬 체크(S121) 결과가 0이 아닌 경우, 디코딩의 결과(DR)를 디코딩 실패(DF) 및 디코딩 재수행(RD) 중 하나로 판단할 수 있다.
디코딩이 디코딩 성공(DS)으로 판단되는 경우 결과 코드 워드(RCW)를 메모리 장치 외부로 출력한다(S240). 본 발명에 따른 디코딩 방법은 패리티 체크 매트릭스(110) 중 일부를 서브 매트릭스(111)로 사용함으로써 디코딩 과정에서 디코더의 내부 메모리(100)에 액세스(access)하는 횟수를 줄일 수 있다. 저밀도 패리티 체크(Low-Density Parity Check, LDPC) 코드는 1KB 이상의 긴 코드가 사용되므로 메모리 액세스에 소모되는 전력은 전체 디코딩 파워의 상당한 부분을 차지할 수 있다. 따라서 본 발명에 따른 디코딩 방법을 사용하면 디코딩 과정에서 소모되는 전력을 줄일 수 있다.
도 11은 본 발명의 실시예들에 따른 메모리 시스템의 동작 방법을 나타내는 순서도이다.
도 11을 참조하면, 메모리 시스템의 동작 방법에서는 메모리 컨트롤러에 포함되는 호스트로부터 수신되는 데이터를 인코딩하여 메모리 장치로 출력한다(S300). 디코더의 내부 메모리(100)에 포함되는 패리티 체크 매트릭스(110)의 일부를 서브 매트릭스(111)로서 선택한다(S310). 서브 매트릭스(111)에 기초하여 코드 워드(CW)를 디코딩하고 결과 코드 워드(RCW)를 생성한다(S320). 결과 코드 워드(RCW), 서브 매트릭스(111) 및 디코딩 수행 횟수(DON)에 기초하여 디코딩의 결과(DR)를 디코딩 성공(DS), 디코딩 실패(DF) 및 디코딩 재수행(RD) 중 하나로 판단한다(S330).
도 12는 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 12를 참조하면, 메모리 시스템(400)은 메모리 장치(420) 및 메모리 컨트롤러(410)를 포함한다.
메모리 컨트롤러(410)는 메모리 장치(420)와 호스트 간에 데이터의 전송을 제어한다. 메모리 컨트롤러(410)는 인코더(412) 및 디코더(413)를 포함한다. 인코더(412)는 호스트로부터 수신되는 데이터를 인코딩하여 메모리 장치(420)로 출력한다. 디코더(413)는 메모리 장치(420)로부터 출력되는 데이터의 오류를 검사하고 정정한다. 디코더(413)는 패리티 체크 매트릭스(110)의 일부를 서브 매트릭스(111)로서 선택하고, 서브 매트릭스(111)에 기초하여 코드 워드(CW)를 디코딩하여 결과 코드 워드(RCW)를 생성한다.
메모리 장치(420)는 플래시 메모리 장치(420)일 수 있고, 메모리 장치(420)에 포함되는 메모리 셀 어레이(421)는 복수의 메모리 셀들을 구비하는데 이 메모리 셀들 각각에는 복수 비트의 데이터가 저장될 수 있다. 즉 메모리 셀들은 멀티 레벨 셀(MLC)이다.
도 13은 본 발명의 실시예들에 따른 메모리 시스템의 디코딩 방법을 나타내는 순서도이다.
도 12 및 도 13을 참조하면, 메모리 시스템(400)의 디코딩 방법에서는 디코더(413)의 내부 메모리(100)에 포함되는 패리티 체크 매트릭스(110)의 일부를 서브 매트릭스(111)로서 선택한다(S400). 메모리 컨트롤러(410)로부터 코맨드 및 액세스 어드레스를 수신하고 액세스 어드레스에 상응하는 코드 워드(CW)를 메모리 장치(420) 내의 메모리 셀 어레이로부터 독출한다(S410). 서브 매트릭스(111)에 기초하여 코드 워드(CW)를 디코딩하고 결과 코드 워드(RCW)를 생성한다(S420). 결과 코드 워드(RCW), 서브 매트릭스(111) 및 디코딩 수행 횟수(DON)에 기초하여 디코딩의 결과(DR)를 디코딩 성공(DS), 디코딩 실패(DF) 및 디코딩 재수행(RD) 중 하나로 판단한다(S430).
본 발명에 따른 디코딩 방법은 패리티 체크 매트릭스(110) 중 일부를 서브 매트릭스(111)로 사용함으로써 디코딩 과정에서 디코더(413)의 내부 메모리(100)에 액세스(access)하는 횟수를 줄일 수 있다. 저밀도 패리티 체크(Low-Density Parity Check, LDPC) 코드는 1KB 이상의 긴 코드가 사용되므로 메모리 액세스에 소모되는 전력은 전체 디코딩 파워의 상당한 부분을 차지할 수 있다. 따라서 본 발명에 따른 디코딩 방법을 사용하면 디코딩 과정에서 소모되는 전력을 줄일 수 있다.
본 발명의 실시예에 따른 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법은 서브 매트릭스로 사용하여 디코더 내부 메모리의 액세스 횟수를 줄이고 디코딩 과정에서 소모되는 전력을 줄임으로써 디코더가 포함되는 메모리 시스템에 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
Claims (12)
- 디코더의 내부 메모리에 포함되는 패리티 체크 매트릭스의 일부를 서브 매트릭스로서 선택하는 단계;
상기 서브 매트릭스에 기초하여 코드 워드를 상기 코드 워드에 상응하는 변수 비트들을 전달받는 모든 체크 노드들을 통해서 디코딩하고 결과 코드 워드를 생성하는 단계; 및
상기 결과 코드 워드, 상기 서브 매트릭스 및 디코딩 수행 횟수에 기초하여 상기 디코딩의 결과를 디코딩 성공, 디코딩 실패 및 디코딩 재수행 중 하나로 판단하는 단계를 포함하는 디코딩 방법. - 제1 항에 있어서,
상기 내부 메모리는 상기 코드 워드에 상응하는 상기 변수 비트들이 할당되는 변수 노드들 및 상기 서브 매트릭스에 따라 상기 변수 노드들과 연결되어 상기 변수 비트들을 전달받는 상기 체크 노드들을 포함하는 것을 특징으로 하는 디코딩 방법. - 제2 항에 있어서,
상기 변수 노드들의 개수는 상기 서브 매트릭스의 열의 개수와 동일한 것을 특징으로 하는 디코딩 방법. - 제2 항에 있어서,
상기 체크 노드들의 개수는 상기 서브 매트릭스의 행의 개수와 동일한 것을 특징으로 하는 디코딩 방법. - 제2 항에 있어서,
상기 서브 매트릭스에서 i (i는 자연수) 번째 행의 원소들 중 j (j는 자연수) 번째 열의 값이 1인 경우 i번째 체크 노드와 j번째 변수 노드가 연결되어 디코딩을 수행하는 것을 특징으로 하는 디코딩 방법. - 제2 항에 있어서,
상기 서브 매트릭스에 기초하여 상기 디코딩을 1회 수행하는 동안 상기 변수 노드들 각각은 상기 체크 노드들에 적어도 1회 이상 연결되는 것을 특징으로 하는 디코딩 방법. - 제1 항에 있어서,
상기 결과 코드 워드와 상기 서브 매트릭스의 역행렬의 곱이 0인 경우,
상기 디코딩의 결과는 상기 디코딩 성공으로 판단되는 것을 특징으로 하는 디코딩 방법. - 제1 항에 있어서,
상기 결과 코드 워드와 상기 서브 매트릭스의 역행렬의 곱이 0이 아니고,
상기 디코딩 수행 횟수가 총 최대 반복 횟수 보다 같거나 큰 경우,
상기 디코딩의 결과는 상기 디코딩 실패로 판단되는 것을 특징으로 하는 디코딩 방법. - 제1 항에 있어서,
상기 결과 코드 워드와 상기 서브 매트릭스의 역행렬의 곱이 0이 아니고,
상기 디코딩 수행 횟수가 총 최대 반복 횟수 보다 작으며,
상기 디코딩 수행 횟수가 행 최대 반복 횟수 보다 작은 경우,
상기 디코딩의 결과는 상기 디코딩 재수행으로 판단되고, 상기 서브 매트릭스 및 상기 결과 코드 워드에 기초하여 상기 디코딩이 재수행되는 것을 특징으로 하는 디코딩 방법. - 제1 항에 있어서,
상기 결과 코드 워드와 상기 서브 매트릭스의 역행렬의 곱이 0이 아니고,
상기 디코딩 수행 횟수가 총 최대 반복 횟수 보다 작으며,
상기 디코딩 수행 횟수가 행 최대 반복 횟수 보다 같거나 큰 경우,
상기 디코딩의 결과는 상기 디코딩 재수행으로 판단되고, 상기 패리티 체크 매트릭스 중 상응하는 하나의 행을 상기 서브 매트릭스에 추가한 추가 서브 매트릭스 및 상기 결과 코드 워드에 기초하여 상기 디코딩이 재수행되는 것을 특징으로 하는 디코딩 방법. - 제10 항에 있어서,
상기 총 최대 반복 횟수 및 상기 행 최대 반복 횟수는 가변되는 것을 특징으로 하는 디코딩 방법. - 메모리 장치와 호스트 간에 데이터의 전송을 제어하기 위한 메모리 컨트롤러로서,
상기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코더; 및
상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정하기 위한 디코더를 포함하며,
상기 디코더는 패리티 체크 매트릭스의 일부를 서브 매트릭스로서 선택하고, 상기 서브 매트릭스에 기초하여 코드 워드를 상기 코드 워드에 상응하는 변수 비트들을 전달받는 모든 체크 노드들을 통해서 디코딩하여 결과 코드 워드를 생성하는 메모리 컨트롤러.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130122578A KR101482684B1 (ko) | 2013-10-15 | 2013-10-15 | 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130122578A KR101482684B1 (ko) | 2013-10-15 | 2013-10-15 | 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101482684B1 true KR101482684B1 (ko) | 2015-01-16 |
Family
ID=52590524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130122578A KR101482684B1 (ko) | 2013-10-15 | 2013-10-15 | 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101482684B1 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190019716A (ko) * | 2017-08-18 | 2019-02-27 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20190072972A (ko) * | 2017-12-18 | 2019-06-26 | 삼성전자주식회사 | 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
WO2020017908A1 (ko) * | 2018-07-18 | 2020-01-23 | 광주과학기술원 | 채굴 장치, 및 채굴 장치 동작 방법 |
KR20200009974A (ko) * | 2018-07-18 | 2020-01-30 | 광주과학기술원 | 부호-암호 화폐 시스템 |
US10606695B2 (en) | 2018-04-18 | 2020-03-31 | SK Hynix Inc. | Error correction circuit and memory system including the same |
US11031957B2 (en) | 2017-10-26 | 2021-06-08 | Samsung Electronics Co., Ltd. | Decoder performing iterative decoding, and storage device using the same |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070046476A (ko) * | 2005-10-31 | 2007-05-03 | 삼성전자주식회사 | 반복 축적 타입-저밀도 패리티 검사 부호를 사용하는 통신시스템에서 신호 송수신 장치 및 방법 |
KR20100022023A (ko) * | 2007-05-21 | 2010-02-26 | 라모트 앳 텔-아비브 유니버시티 리미티드 | 메모리 효율적인 ldpc 디코딩 |
KR101191197B1 (ko) | 2006-06-07 | 2012-10-15 | 엘지전자 주식회사 | 복수의 패리티 검사 행렬을 이용하여 복호화하는 방법 |
-
2013
- 2013-10-15 KR KR20130122578A patent/KR101482684B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070046476A (ko) * | 2005-10-31 | 2007-05-03 | 삼성전자주식회사 | 반복 축적 타입-저밀도 패리티 검사 부호를 사용하는 통신시스템에서 신호 송수신 장치 및 방법 |
KR101191197B1 (ko) | 2006-06-07 | 2012-10-15 | 엘지전자 주식회사 | 복수의 패리티 검사 행렬을 이용하여 복호화하는 방법 |
KR20100022023A (ko) * | 2007-05-21 | 2010-02-26 | 라모트 앳 텔-아비브 유니버시티 리미티드 | 메모리 효율적인 ldpc 디코딩 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190019716A (ko) * | 2017-08-18 | 2019-02-27 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR102333140B1 (ko) | 2017-08-18 | 2021-12-02 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11031957B2 (en) | 2017-10-26 | 2021-06-08 | Samsung Electronics Co., Ltd. | Decoder performing iterative decoding, and storage device using the same |
US11791846B2 (en) | 2017-10-26 | 2023-10-17 | Samsung Electronics Co., Ltd. | Decoder performing iterative decoding, and storage device using the same |
KR20190072972A (ko) * | 2017-12-18 | 2019-06-26 | 삼성전자주식회사 | 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
KR102475279B1 (ko) | 2017-12-18 | 2022-12-07 | 삼성전자주식회사 | 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
US10606695B2 (en) | 2018-04-18 | 2020-03-31 | SK Hynix Inc. | Error correction circuit and memory system including the same |
WO2020017908A1 (ko) * | 2018-07-18 | 2020-01-23 | 광주과학기술원 | 채굴 장치, 및 채굴 장치 동작 방법 |
KR20200009974A (ko) * | 2018-07-18 | 2020-01-30 | 광주과학기술원 | 부호-암호 화폐 시스템 |
KR102231257B1 (ko) | 2018-07-18 | 2021-03-23 | 광주과학기술원 | 채굴 장치, 및 채굴 장치 동작 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101482684B1 (ko) | 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 | |
US11108408B2 (en) | Memory controller and method of accessing flash memory | |
US9319073B2 (en) | Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding | |
EP2780810B1 (en) | Systems, methods, and devices for multi-tiered error correction | |
EP2780808B1 (en) | Data encoder and decoder using memory-specific parity-check matrix | |
US7904790B2 (en) | Flash memory device error correction code controllers and related methods and memory systems | |
EP2780809B1 (en) | Systems and methods for decoding codewords having multiple parity segments | |
US8015473B2 (en) | Method, system, and apparatus for ECC protection of small data structures | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
US9405624B2 (en) | On-die error detection and correction during multi-step programming | |
US9654147B2 (en) | Concatenated error correction device | |
US10423484B2 (en) | Memory controller, memory system, and control method | |
US10291258B2 (en) | Error correcting code for correcting single symbol errors and detecting double bit errors | |
TWI460733B (zh) | 具有低密度奇偶校驗碼解碼能力的記憶體控制裝置及方法 | |
US10514980B2 (en) | Encoding method and memory storage apparatus using the same | |
WO2019136976A1 (zh) | 一种编译码系统使用多种错误纠正码组合的方法 | |
JP2020042884A (ja) | メモリシステム | |
US11515898B2 (en) | Error correction decoder, error correction circuit having the same, and method of operating the same | |
CN107402860B (zh) | 用于执行内建式自我测试的独立磁盘冗余数组译码系统 | |
JP2020046823A (ja) | メモリシステム | |
US9619317B1 (en) | Decoder having early decoding termination detection | |
KR101512361B1 (ko) | 연접 비씨에이치 디코더 및 연접 비씨에이치 디코딩 방법 | |
US20240356565A1 (en) | Error correction code (ecc) circuit including low-density parity-check decoder in adaptive operation mode, operating method of the ecc circuit, and memory controller including the ecc circuit | |
US12119841B2 (en) | G-LDPC decoder and G-LDPC decoding method | |
US20240061586A1 (en) | Memory controller and method for bit flipping of low-density parity-check codes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180102 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |