KR20150024489A - 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더 - Google Patents

메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더 Download PDF

Info

Publication number
KR20150024489A
KR20150024489A KR20130101274A KR20130101274A KR20150024489A KR 20150024489 A KR20150024489 A KR 20150024489A KR 20130101274 A KR20130101274 A KR 20130101274A KR 20130101274 A KR20130101274 A KR 20130101274A KR 20150024489 A KR20150024489 A KR 20150024489A
Authority
KR
South Korea
Prior art keywords
memory
check
nodes
ldpc
variable
Prior art date
Application number
KR20130101274A
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 삼성전자주식회사
Priority to KR20130101274A priority Critical patent/KR20150024489A/ko
Priority to US14/334,947 priority patent/US20150058692A1/en
Publication of KR20150024489A publication Critical patent/KR20150024489A/ko

Links

Images

Classifications

    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/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/1131Scheduling of bit node or check node processing
    • 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/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • G11B2020/185Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information using an low density parity check [LDPC] code

Abstract

메모리 시스템에서의 LDPC 디코딩 방법 및 이를 이용한 LDPC 디코더에 관하여 개시한다. 메모리 시스템에서의 LDPC 디코딩 방법은 저밀도 패리티 체크(LDPC) 디코딩을 위한 체크 노드들과 변수 노드들 간의 메시지 교환 순서를 나타내는 스케줄링 정보에 기초하여 상기 체크 노드들과 상기 변수 노드들 간의 메시지들을 교환하는 단계 및 상기 교환된 메시지들에 기초하여 LDPC 디코딩 처리를 수행하는 단계를 포함하고, 상기 스케줄링 정보는 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여 결정되는 것을 특징으로 한다.

Description

메모리 시스템에서의 LDPC 디코딩 방법 및 이를 이용한 LDPC 디코더{Method for performing LDPC decoding in memory system and LDPC decoder using method thereof}
본 발명은 디코딩 방법 및 장치에 관한 것으로서, 자세하게는 메모리 시스템에서의 LDPC 디코딩 방법 및 이를 이용한 LDPC 디코더에 관한 것이다.
반도체 메모리 분야에서 에러 정정 코드들에 기초한 코딩 및 디코딩 기술을 적용하여 잡음에 의하여 발생되는 에러를 정정한다. 에러 정정 코드들 중에서 확률 기반 반복 연산을 이용하는 에러 정정 코드인 저밀도 패리티 체크(LDPC; Low Density Parity Check) 코드가 주목받고 있다. 이와 같은, LDPC 코드를 이용한 디코딩 처리 과정에서의 디코딩 시간을 단축시키기 위한 새로운 스케줄링 기법이 필요하게 되었다.
본 발명의 목적은 디코딩 처리 과정에서의 메모리 액세스 스케줄링을 개선시키기 위한 메모리 시스템에서의 LDPC 디코딩 방법을 제공하는데 있다.
본 발명의 다른 목적은 효율적인 메모리 액세스 스케줄링에 기초하여 LDPC 디코딩을 수행하는 LDPC 디코더를 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 메모리 시스템에서의 LDPC 디코딩 방법은 저밀도 패리티 체크(LDPC) 디코딩을 위한 체크 노드들과 변수 노드들 간의 메시지 교환 순서를 나타내는 스케줄링 정보에 기초하여 상기 체크 노드들과 상기 변수 노드들 간의 메시지들을 교환하는 단계 및, 상기 교환된 메시지들에 기초하여 LDPC 디코딩 처리를 수행하는 단계를 포함하고, 상기 스케줄링 정보는 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여 결정되는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 체크 노드들의 순서 조작은 상기 LDPC 이분 그래프에 따른 시리얼-체크 목록에서의 체크 노드 번호를 교환할 수 있다.
본 발명의 실시 예에 따르면, 상기 변수 노드들의 순서 조작은 상기 LDPC 이분 그래프에 따른 시리얼-체크 목록에서의 체크 노드 행 별로 인접 변수 노드들의 순서를 재정렬할 수 있다.
본 발명의 실시 예에 따르면, 상기 LDPC 이분 그래프에 따른 시리얼-체크 목록에서의 체크 노드 번호를 교환하는 체크 노드들의 순서 조작을 수행하고 나서, 체크 노드들의 순서가 조작된 시리얼-체크 목록에서의 체크 노드 행 별로 인접 변수 노드들의 순서를 재정렬하는 변수 노드들의 순서 조작을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 스케줄링 정보는 체크 노드와 변수 노드간의 메시지 교환 순서에 기초한 메모리 액세스 처리 순서에 대한 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 스케줄링 정보는 체크 노드와 변수 노드간의 메시지 교환 처리 과정에서의 변수 노드들의 상태들이 저장된 메모리에서의 메모리 액세스 충돌이 발생되지 않는 조건을 만족하도록 결정될 수 있다.
본 발명의 실시 예에 따르면, 상기 스케줄링 정보는 체크 노드와 변수 노드 간의 메시지 교환을 다중으로 처리하는 과정에서의 쓰기 전 읽기 위반(read-before-write violation)이 발생되지 않는 조건을 만족하도록 결정될 수 있다.
본 발명의 실시 예에 따르면, 상기 스케줄링 정보는 체크 노드와 변수 노드간의 메시지 교환 처리 과정에서의 체크 노드들 또는 변수 노드들의 상태가 저장된 메모리에서의 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 조건을 만족하도록 결정될 수 있다.
본 발명의 실시 예에 따르면, 상기 스케줄링 정보는 블록-시리얼-체크 스케줄링에 대한 정보를 포함하고, 상기 블록-시리얼 체크 스케줄링은 동일 블록에 속하는 복수개의 노드들의 상태들을 한 클럭 사이클에 병렬로 액세스되도록 결정될 수 있다.
본 발명의 실시 예에 따르면, 상기 스케줄링 정보는 체크 노드들과 변수 노드들 간의 메시지 교환 시간이 최적화되도록 상기 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여 결정될 수 있다.
본 발명의 실시 예에 따르면, 상기 변수 노드들의 상태들을 복수개로 구획된 메모리 섹터들에 나누어 저장할 수 있다.
본 발명의 실시 예에 따르면, 상기 스케줄링 정보는 LDPC 스케줄 테이블 정보에서 시리얼-체크 목록의 체크 노드 번호를 교환하는 프로세스 및 체크 노드별 시리얼-변수 목록의 변수 노드들의 순서를 재정렬하는 프로세스를 반복적으로 수행하면서 찾아낸 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 조건을 만족하는 시리얼-체크 목록 및 체크 노드별 시리얼-변수 목록이 포함된 LDPC 스케줄 테이블 정보일 수 있다.
본 발명의 기술적 사상의 다른 면에 따른 LDPC 디코더는 저밀도 패리티 체크(LDPC) 이분 그래프의 변수 노드들의 상태들을 저장하는 제1메모리, 상기 LDPC 이분 그래프의 체크 노드들의 상태들을 저장하는 제2메모리, 상기 제1메모리 및 상기 제2메모리에 접속되어, 체크 노드들과 변수 노드들 간의 메시지 교환 처리를 위한 연산을 수행하는 논리 장치 모듈 및, 상기 체크 노드들과 변수 노드들 간의 메시지 교환 순서를 나타내는 스케줄링 정보에 기초하여 상기 체크 노드들과 상기 변수 노드들 간의 메시지 교환 처리를 수행하도록 상기 논리 장치 모듈을 제어하는 제어 장치를 포함하고, 상기 스케줄링 정보는 상기 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여 체크 노드들과 변수 노드들 간의 메시지 교환 시간이 최적화되도록 설정됨을 특징으로 한다.
본 발명의 일실시 예에 따르면, 상기 제1메모리는 복수개로 파티션된 메모리 섹터들을 포함하고, 상기 메모리 섹터들 각각을 하나 이상의 변수 노드들에 할당할 수 있다.
본 발명의 일실시 예에 따르면, 상기 스케줄링 정보는 상기 체크 노드들과 변수 노드들 간의 메시지 교환 과정에서 상기 제1메모리 및 제2메모리에서의 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 조건을 만족하도록 결정될 수 있다.
본 발명에 의하면 LDPC 이분 그래프를 조작하여 획득한 스케줄링 정보를 적용하여 디코딩 처리를 수행함으로써, 새로운 하드웨어를 추가하지 않고도 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않으면서 LDPC 디코딩 처리 시간을 단축시킬 수 있는 효과가 발생된다.
그리고, 본 발명에 의하면 배선이 최소화되도록 변수 노드들에 대한 메모리 섹터 할당을 결정함으로써, 라우팅(routing) 혼잡을 줄일 수 있는 효과가 발생된다.
또한, 본 발명에 의하면 LDPC 디코딩 처리에 필요한 메모리로 듀얼 포트 메모리를 이용하지 않고도 메모리 액세스 충돌을 해결할 수 있으므로, 원가를 절감할 있는 효과가 발생된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템의 구성도이다.
도 2는 본 발명의 다른 실시 예에 따른 복수의 채널을 구비하는 메모리 시스템의 구성도이다.
도 3은 도 1 및 도 2에 도시된 메모리 시스템의 채널 및 뱅크의 구성을 예시적으로 보여주는 도면이다.
도 4는 도 1 및 도 2에 도시된 메모리 장치에 포함된 플래시 메모리 칩의 세부 구성을 예시적으로 보여주는 도면이다.
도 5는 플래시 메모리 칩의 내부 저장 구조를 보여주는 개념도이다.
도 6은 도 1에 도시된 프로세서의 소프트웨어 구조를 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 LDPC 디코더의 구성을 예시적으로 보여주는 도면이다.
도 8은 도 7에 도시된 논리 장치 모듈의 구성을 예시적으로 보여주는 도면이다.
도 9는 도 7에 도시된 LDPC 디코더의 제1메모리 및 논리 장치 모듈의 구성을 예시적으로 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 LDPC 이분 그래프의 일 예를 보여주는 도면이다.
도 11은 도 10에 도시된 LDPC 이분 그래프를 등가적으로 표시한 시리얼 체크 및 체크 노드별 시리얼 변수 목록을 보여주는 도면이다.
도 12는 도 10에 도시된 시리얼 체크 및 체크 노드별 시리얼 변수 목록에 따른 LDPC 스케줄 테이블을 예시적으로 보여주는 도면이다.
도 13은 변수 노드들을 6개의 파티션으로 나눈 메모리 섹터들에 할당하는 예를 보여주는 도면이다.
도 14는 도 13에 도시된 변수 노드들에 대한 메모리 섹터 할당 목록에 기초하여 도 12에 도시된 LDPC 스케줄 테이블에 대응되는 메모리 액세스 스케줄 테이블을 보여주는 도면이다.
도 15는 도 11에 도시된 시리얼 체크 및 체크 노드별 시리얼 변수 목록에서 체크 노드들의 순서를 재정렬한 예를 보여준다.
도 16은 도 15에 도시된 시리얼 체크 및 체크 노드별 시리얼 변수 목록에서 변수 노드들의 순서를 재정렬한 예를 보여준다.
도 17은 도 13에 도시된 변수 노드들에 대한 메모리 섹터 할당 목록에서 메모리 섹터 할당을 변경한 예를 보여준다.
도 18은 도 16에 도시된 체크 노드들의 순서 및 변수 노드들의 순서를 재정렬한 시리얼 체크 목록 및 체크 노드별 시리얼 변수 목록에 따른 LDPC 스케줄 테이블을 예시적으로 보여주는 도면이다.
도 19는 도 17에 도시된 변수 노드들에 대한 메모리 섹터 할당 목록에 기초하여 도 18에 도시된 LDPC 스케줄 테이블에 대응되는 메모리 액세스 스케줄 테이블을 보여주는 도면이다.
도 20은 본 발명의 실시 예에 따른 메모리 시스템에서의 LDPC 디코딩 방법의 흐름도이다.
도 21은 본 발명의 실시 예에 따른 스케줄링 정보를 결정하는 방법에 대한 일 예를 보여주는 흐름도이다.
도 22는 본 발명의 실시 예에 따른 스케줄링 정보를 결정하는 방법에 대한 다른 예를 보여주는 흐름도이다.
도 23은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 24는 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 메모리 카드 시스템의 일 구현 예를 나타내는 블록도이다.
도 25는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일실시 예에 따른 메모리 시스템(1000A)의 구성도이다.
도 1에 도시된 바와 같이, 메모리 시스템(1000A)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함한다.
메모리 장치(200)는 비휘발성 메모리 디바이스로 구현할 수 있다. 예로서, 메모리 장치(200)는 플래시 메모리 디바이스, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 디바이스 등으로 구성될 수 있다. 메모리 장치(200)는 적어도 하나의 비휘발성 메모리 디바이스들과 적어도 하나의 휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수도 있다.
그리고, 메모리 장치(200)는 단일의 플래시 칩으로 구성할 수 있다. 또한, 메모리 장치(200)는 복수의 플래시 메모리 칩들로 구성할 수도 있다.
메모리 컨트롤러(100)는 프로세서(110), 인코더(120), 디코더(130), RAM(Random Access Memory; 140), 호스트 인터페이스(150), 메모리 인터페이스(160) 및 버스(170)를 구비한다.
프로세서(110)는 버스(170)를 통하여 인코더(120), 디코더(130), RAM(140), 호스트 인터페이스(150) 및 메모리 인터페이스(160)와 전기적으로 접속된다.
버스(170)는 메모리 컨트롤러(100)의 구성 수단들 간의 정보를 전송하는 전송로를 의미한다.
프로세서(110)는 메모리 시스템(1000A)의 전반적인 동작을 제어한다. 세부적으로, 호스트로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 메모리 시스템(1000A)을 제어한다.
프로세서(110)는 리드(read) 동작 시에는 리드 커맨드 및 어드레스를 메모리 장치(200)에 제공하고, 라이트(write) 동작 시에는 라이트 커맨드, 어드레스, 그리고 인코딩 처리된 코드워드를 메모리 장치(200)에 제공한다. 그리고, 프로세서(110)는 RAM(140)에 저장된 메타 데이터를 이용하여 호스트로부터 수신되는 논리적 주소를 물리적 페이지 주소로 변환시키는 처리를 수행한다.
RAM(140)에는 호스트로부터 전송된 데이터 및 프로세서(110)에서 생성된 데이터가 임시로 저장되거나 메모리 장치(200)에서 읽어낸 데이터가 임시로 저장된다. 또한, RAM(140)에는 메모리 장치(200)로부터 읽어낸 메타 데이터도 저장될 수 있다. 그리고, RAM(140)에는 메모리 장치(200)로부터 읽어낸 저밀도 패리티 체크(LDPC) 이분 그래프를 조작하여 획득한 스케줄링 정보도 저장될 수 있다. 스케줄링 정보는 LDPC 이분 그래프의 체크 노드들과 변수 노드들 간의 메시지 교환 순서를 나타내는 정보가 포함될 수 있다. RAM(200)은 DRAM, SRAM 등으로 구현될 수 있다.
메타 데이터(meta data)는 메모리 장치(200)를 관리하기 위하여 메모리 시스템(1000A)에서 생성된 정보이다. 관리 정보인 메타 데이터에는 논리적 주소(Logical Address)를 메모리 장치(200)의 물리적 페이지 주소(PPA)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보가 포함되어 있다. 일 예로서, 메타 데이터에는 페이지 단위로 어드레스 매핑 처리를 수행하는데 필요한 페이지 매핑 테이블 정보가 포함될 수 있다. 또한, 메타 데이터에는 메모리 장치(200)의 저장 공간을 관리하기 위한 정보들도 포함할 수 있다.
호스트 인터페이스(150)는 메모리 장치(200)와 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 장치(200)와 호스트를 상호 연결한다. 호스트 인터페이스(150)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 세부적으로, 호스트 인터페이스(150)는 프로세서(110)의 제어에 따라서 호스트와 커맨드, 어드레스 및 데이터를 교환할 수 있다.
메모리 인터페이스(160)는 메모리 장치(200)와 전기적으로 연결되어 있다. 메모리 인터페이스(160)는 NAND 플래시 메모리 칩 또는 NOR 플래시 메모리 칩과의 인터페이스를 지원하도록 구성될 수 있다. 메모리 인터페이스(160)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
프로세서(110)는 메모리 시스템(1000A)에 전원이 공급되면 메모리 장치(200)에 저장되어 있는 메타 데이터를 읽어내어 RAM(140)에 저장하도록 메모리 시스템(1000A)을 제어한다. 프로세서(110)는 메모리 장치(200)에서의 메타 데이터 변경을 발생시키는 동작에 따라서 RAM(140)에 저장된 메타 데이터를 업데이트 하도록 메모리 시스템(1000A)을 제어한다. 그리고, 프로세서(110)는 메모리 시스템(1000A)에서 파워 오프(POWER OFF) 되기 전에 RAM(140)에 저장되어 있는 메타 데이터를 메모리 장치(200)에 라이트하도록 메모리 시스템(1000A)을 제어한다.
프로세서(110)는 라이트 동작 시에는 호스트로부터 수신된 정보 워드를 인코더(120)에서 LDPC 인코딩 처리하고, 리드 동작 시에는 메모리 장치(200)로부터 읽어낸 데이터를 디코더(130)에서 LDPC 디코딩 처리하도록 메모리 컨트롤러(100)를 제어한다.
인코더(120)는 호스트로 수신된 정보 워드에 LDPC 코드에 의해 명시된 다수의 패리티 비트들을 첨부하여 코드워드를 생성한다. 코드워드의 비트 수가 N이고, 정보 워드의 비트 수가 K이면, 패리티 비트 수는 (N-K)가 된다. LDPC 코드워드의 각각의 패리티 비트는 LDPC 코드를 만족시키도록 설정된다.
디코더(130)는 메모리 장치(200)로부터 읽어낸 데이터를 코드워드 단위로 LDPC 디코딩 처리하여 정보 워드를 복원한다.
LDPC 코드들은 태너 그래프(Tanner graph)로 불리는 이분(bipartite) 그래프에 의해 표시될 수 있다. 즉, 에지는 변수 노드를 체크 노드에만 연결할 수 있고, 변수 노드를 다른 변수 노드에, 또는 체크 노드를 다른 체크 노드에 연결할 수 없다. 이러한 그래프에서 한 세트의 노드들, 변수 노드(variable node)들은 코드워드의 비트들 및 다른 노드들의 세트에 대응하고, 체크 노드들로 불리는 제약 노드(constraint node)들은 코드를 정의하는 한 세트의 패리티 체크 제약들에 대응한다.
디코더(130)는 예로서, 도 10에 도시된 바와 같은 LDPC 이분 그래프에 기초하여 변수 노드들과 체크 노드들 간의 메시지를 교환하면서 에러 판정이 발생되지 않을 때까지 체크 노드 업데이트 및 변수 노드 업데이트를 반복적으로 실행한다.
디코더(130)는 LDPC 이분 그래프를 조작하여 획득한 스케줄링 정보에 기초하여 LDPC 디코딩 처리를 수행한다. 여기에서, 스케줄링 정보는 저밀도 패리티 체크(LDPC) 디코딩을 위한 체크 노드들과 변수 노드들 간의 메시지 교환 순서를 나타내는 정보가 포함될 수 있다. 스케줄링 정보는 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여 메모리 액세스 충돌(memory access collision) 및 쓰기 전 읽기 위반(read-before-write violation)이 발생되지 않는 조건을 만족하도록 결정된다. 디코더(130)에 대한 구성 및 동작에 대해서는 아래에서 상세히 설명되어질 것이다.
도 2는 도 1에 도시된 메모리 장치(200)를 복수개의 메모리 칩들로 구성하여 복수의 채널(channel) 및 웨이(way)를 형성하는 메모리 시스템의 구성도이다.
도 2와 같이 구성된 메모리 시스템(1000B)으로 SSD(Solid State Drive)를 구현할 수 있다. SSD는 솔리드 스테이트 디스크(Solid State Disc)라고 칭해지기도 한다.
도 2를 참조하면, 메모리 시스템(1000B)은 메모리 장치(200')를 복수개의 플래시 메모리 칩들(201, 203)로 구현한 예를 보여준다.
메모리 시스템(1000B)은 N(N은 자연수)개의 채널을 갖고, 채널별로 4개의 플래시 메모리 칩들로 구성되는 예를 보여준다. 물론, 채널별로 구성되는 플래시 메모리 칩들의 개수는 다양하게 설정될 수 있다.
도 2에 도시된 메모리 컨트롤러(100)의 구성은 도 1에 도시된 메모리 컨트롤러(100)의 구성과 실질적으로 동일하므로 중복된 설명은 피하기로 한다.
도 3은 도 2에 도시된 메모리 시스템(1000B)의 채널 및 웨이의 구조를 예시적으로 보여주는 도면이다.
각각의 채널(CH1 ~ CHN))에는 복수 개의 플래시 메모리 칩들(201, 202, 203)이 전기적으로 연결될 수 있다. 각각의 채널(CH1 ~ CHN)은 대응되는 플래시 메모리 칩들(201, 202, 203)로 커맨드, 어드레스 및 데이터를 송수신할 수 있는 독립적인 버스를 의미할 수 있다. 서로 다른 채널에 접속된 플래시 메모리 칩들은 각각 독립적으로 동작할 수 있다. 각각의 채널에 접속된 복수의 플래시 메모리 칩들(201, 202, 203)은 복수 개의 웨이(way1 ~ wayM)들을 형성할 수 있다. 각 채널에 형성된 M개의 웨이에는 M개의 플래시 메모리 칩들이 접속될 수 있다.
예를 들어, 참조번호 201의 플래시 메모리 칩들은 1번 채널(CH1)에서 M개의 웨이들(way1 ~ wayM)을 형성할 수 있다. 1번 채널(CH1)의 M개의 웨이들(way1 ~ wayM) 각각에는 플래시 메모리 칩(201-1 ~ 201-M)이 접속될 수 있다. 이와 같은 플래시 메모리 칩들과 각각의 채널과 웨이의 형성 관계는 참조 번호 202의 플래시 메모리 칩들 및 참조번호 203의 플래시 메모리 칩들에도 적용될 수 있다.
웨이는 동일한 채널을 공유하는 플래시 메모리 칩들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 플래시 메모리 칩들이 식별될 수 있다. 호스트로부터 제공된 리퀘스트(request)가 어느 채널의 어느 웨이의 플래시 메모리 칩에서 수행될 지는 호스트로부터 전달된 논리적 주소에 의해 정해질 수 있다.
도 4는 도 3의 메모리 장치(200')를 구성하는 하나의 플래시 메모리 칩(201-1)의 회로 구성을 예시적으로 보여주는 도면이다.
도 4에 도시된 바와 같이, 플래시 메모리 칩(201-1)은 셀 어레이(10), 페이지 버퍼(20), 제어 회로(30) 및 로우 디코더(40)를 포함할 수 있다.
셀 어레이(10)는 트랜지스터에 일정 전압을 인가하는 방식으로 데이터가 기입되는 영역이다. 셀 어레이(10)는 워드라인들(WL0~WLm-1) 및 비트라인들(BL0~BLn-1)이 교차한 곳에 형성된 메모리 셀들을 포함한다. 여기에서, m 및 n은 자연수이다. 도 4에서는 하나의 메모리 블록이 도시되어 있으나 셀 어레이(10)는 복수의 메모리 블록들을 포함할 수 있다. 각각의 메모리 블록들은 각 워드 라인들(WL0~WLm-1)에 대응되는 페이지들을 포함하고 있다. 그리고 페이지들 각각은 해당 워드라인에 연결된 복수의 메모리 셀들을 포함한다. 플래시 메모리 칩(201-1)은 블록 단위로 소거 동작을 수행하고, 페이지 단위로 프로그램 동작 혹은 읽기 동작을 수행한다.
메모리 셀 어레이(10)는 셀 스트링(cell string) 구조를 갖는다. 각각의 셀 스트링은 스트링 선택 라인(String Selection Line; SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WLO ~ WLm-1)에 각각 연결된 복수의 메모리 셀들(MC0 ~ MCm-1), 그리고 접지 라인(Ground Section Line; GSL)에 연결된 접지 선택 트랜지스터(GST)를 포함한다. 여기에서, 스트링 선택 트랜지스터(SST)는 비트라인과 스트링 채널 사이에 연결되고, 접지 선택 트랜지스터(GST)는 스트링 채널과 공통 소스 라인(Common Source Line; CSL) 사이에 연결된다.
페이지 버퍼(20)는 복수의 비트라인들(BL0~BLn-1)을 통해 셀 어레이(10)에 연결된다. 페이지 버퍼(20)는 선택된 워드라인에 연결된 메모리 셀들에 기입할 데이터를 임시로 저장하거나 또는 선택된 워드라인에 연결된 메모리 셀들로부터 독출된 데이터를 임시로 저장한다.
제어 회로(30)는 프로그램(program) 또는 리드(read) 동작 그리고 소거 동작에 필요한 각종 전압들을 생성하고, 플래시 메모리 칩(201-1)의 제반 동작을 제어한다.
로우 디코더(40)는 선택 라인들(SSL, GSL) 및 복수의 워드라인들(WL0~WLm-1)을 통해 셀 어레이(10)에 연결된다. 로우 디코더(40)는 프로그램 동작 또는 리드 동작 시 어드레스를 입력받고, 입력된 어드레스에 따라 어느 하나의 워드라인을 선택한다. 여기에서 선택된 워드라인에는 프로그램 동작이 수행되거나 또는 리드 동작이 수행될 메모리 셀들이 연결되어 있다.
또한, 로우 디코더(40)는 선택된 워드라인, 비선택된 워드라인들, 그리고 선택 라인들(SSL, GSL)로 프로그램 동작 또는 리드 동작에 필요한 전압들(예를 들어, 프로그램 전압, 패스 전압, 읽기 전압, 스트링 선택 전압, 접지 선택 전압)을 인가한다.
각각의 메모리 셀은 한 비트의 데이터 혹은 2비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장하는 메모리 셀은 싱글 레벨 셀(Single Level Cell; SLC)이라고 불린다. 그리고, 하나의 메모리 셀에 2비트 이상의 데이터를 저장하는 메모리 셀은 멀티 레벨 셀(Multi Level Cell; MLC)이라고 불린다. 싱글 레벨 셀은 문턱 전압에 따라 소거 상태(Erase State) 또는 프로그램 상태(Program State)를 갖는다.
도 5에 도시된 바와 같이, 플래시 메모리 칩(201-1)의 내부 구조는 복수의 블록들로 구성되고, 각 블록들은 복수의 페이지들로 이루어져 있다.
플래시 메모리 칩(201-1)에서 데이터의 기입 및 독출은 페이지 단위로 수행되고, 전기적 소거는 블록 단위로 이루어진다. 또한, 기입 전에 블록의 전기적 소거 작업이 요구된다. 이에 따라서, 덮어쓰기가 불가능하다.
덮어쓰기가 불가능한 메모리 장치에서는 사용자 데이터를 사용자가 원하는 물리적 영역에 기입할 수 없다. 따라서 호스트로부터 기입 또는 독출을 위하여 액세스를 요청받는 경우, 기입 또는 독출이 요청된 영역을 나타내는 논리적 주소를 실제로 데이터가 저장되어 있는 또는 데이터가 저장될 물리적 영역을 나타내는 물리적 페이지 주소로 변환시키는 주소 변환 동작이 필요하다.
메모리 시스템(1000A 또는 1000B)에서 논리적 주소를 물리적 페이지 주소로 변환시키는 과정을 도 6을 참조하여 설명하기로 한다.
도 6은 메모리 시스템(1000A 또는 1000B)의 소프트웨어 구조를 보여주는 블록도이다. 일 예로서, 도 6에서는 메모리 장치(200)를 플래시 메모리로 구현한 경우의 소프트웨어 구조를 보여준다.
도 6을 참조하면, 메모리 시스템(1000A 또는 1000B)은 애플리케이션 계층(101), 파일 시스템 계층(102), 플래시 변환 계층(103), 그리고 플래시 메모리 계층(104)순으로 소프트웨어 계층 구조를 갖는다.
애플리케이션 계층(101)은 호스트에서의 사용자 입력에 응답하여 데이터를 가공하는 펌웨어를 의미한다. 애플리케이션 계층(101)에서는 사용자의 입력에 응답하여 사용자 데이터를 처리하고, 처리된 사용자 데이터를 플래시 메모리 칩에 저장하기 위한 커맨드를 파일 시스템 계층(102)으로 전달한다.
파일 시스템 계층(102)에서는 애플리케이션 계층(101)으로부터의 전달된 커맨드에 응답하여, 사용자 데이터가 저장될 논리적 주소를 할당한다. 파일 시스템(102)의 일종으로 FAT(File Allocation Table) 파일 시스템, NTFS 등이 있다.
플래시 변환 계층(Flash Translation Layer; FTL, 103)에서는 파일 시스템 계층(102)으로부터 전달받은 논리적 주소를 플래시 메모리 칩에서의 읽기/쓰기 동작을 위한 물리적 페이지 주소로의 변환 과정을 수행한다. 플래시 변환 계층(103)에서는 메타 데이터에 포함된 매핑 정보를 이용하여 논리적 주소를 물리적 페이지 주소 변환할 수 있다. 플래시 변환 계층(Flash Translation Layer; FTL, 103)에서의 주소 변환 동작은 메모리 컨트롤러(100)의 프로세서(110)에서 수행될 수 있다.
플래시 메모리 계층(104)에서는 논리적 주소로부터 변환된 물리적 페이지 주소를 액세스하여 데이터를 저장하거나 독출하기 위한 제어 신호들을 발생한다.
도 7은 도 1에 도시된 디코더(130)에 대한 일 예인 LDPC 디코더(130A)의 구성을 예시적으로 보여주는 도면이다.
도 7에 도시된 바와 같이, LDPC 디코더(130A)는 제1메모리(VND; 131), 논리 장치 모듈(132), 제2메모리(CND; 133) 및 제어 장치(134)를 포함한다.
제1메모리(131)는 LDPC 이분 그래프의 변수 노드들의 상태들을 저장한다. 예로서, 제1메모리(131)는 복수개로 파티션된 메모리 섹터들을 포함하고, 메모리 섹터들 각각을 하나 이상의 변수 노드들에 할당할 수 있다.
제2메모리(133)는 LDPC 이분 그래프의 체크 노드들의 상태들을 저장한다.
예로서, 같은 블록에 속하는 노드들의 상태들은 같은 메모리 행에 저장되도록 제1메모리(131) 및 제2메모리(133)를 각각 설계할 수 있다. 여기에서, 블록은 특정 원시 그래프 노드의 확장으로부터 얻어진 노드들의 컬렉션이다. 이와 같이, 제1메모리(131) 및 제2메모리(133)를 설계하면 메모리 행에 저장된 노드들의 상태들을 한 클럭 사이클에 병렬로 액세스 할 수 있게 된다.
논리 장치 모듈(132)은 제1메모리(131) 및 제2메모리(133)에 각각 접속되어, 체크 노드들과 변수 노드들 간의 메시지 교환 처리를 위한 연산을 수행하는 논리 회로들을 포함한다. 논리 장치 모듈(132)은 P개의 변수 노드들이 병렬로 처리되도록 설계될 수 있으며, 예로서, 만일 P= 4이면, 변수 노드에서 체크 노드로 메시지를 전송하는 패스 1에서 4개의 변수 노드들로부터 체크 노드로 병렬로 메시지를 보내고, 체크 노드에서 변수 노드로 메시지를 전송하는 패스 2에서 체크 노드로부터 4개의 변수 노드들로 병렬로 메시지를 보낸다. 여기에서, P는 병렬화 팩터라고 한다.
제어 장치(134)는 LDPC 이분 그래프를 조작하여 획득한 스케줄링 정보에 기초하여 체크 노드들과 변수 노드들 간의 메시지 교환 처리를 수행하도록 논리 장치 모듈(132)을 제어한다. 스케줄링 정보는 체크 노드들과 변수 노드들 간의 메시지 교환 과정에서 제1메모리(131) 및 제2메모리(133)에서의 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 조건을 만족하도록 결정된다.
메시지 교환 처리에 따라서 제1메모리(131)에서는 변수 노드 업데이트가 이루어지고, 제2메모리(133)에서는 체크 노드 업데이트가 이루어진다.
제어 장치(134)는 메시지 교환 처리에 따른 변수 노드 업데이트 실행 결과에 기초하여 LDPC 디코딩 처리를 수행한다. 예로서, 제어 장치(134)는 제1메모리(131)로부터 업데이트된 변수 노드들의 상태들을 읽어내어 시험 디코딩(tentative decoding) 처리를 수행한 후에, 시험 디코딩 처리 결과에 대한 에러 유무를 판정한다. 예로서, 제어 장치(134)는 업데이트된 변수 노드들의 상태들을 경판정(hard decision)한 결과에 기초하여 에러 유무를 판정할 수 있다.
제어 장치(134)는 시험 디코딩 처리 결과 에러로 판정되면 메시지 교환에 따른 체크 노드 업데이트 및 변수 노드 업데이트를 반복하여 수행하도록 논리 장치 모듈(132)을 제어한다. 만일, 시험 디코딩 처리 결과 에러로 판정되지 않으면, 업데이트된 변수 노드의 상태의 경판정 결과를 디코딩된 데이터로 출력한다.
제어 장치(134)는 예로서, 직렬-체크(row-by-row) 스케줄링 프로세스, 직렬-체크 X (SCX) 스케줄링 프로세스 또는 블록-직렬-체크 X(BSCX) 스케줄링 프로세스에 따른 스케줄링 정보에 기초하여 체크 노드들과 변수 노드들 간의 메시지 교환 처리를 수행하도록 논리 장치 모듈(132)을 제어할 수 있다.
직렬-체크(row-by-row) 스케줄링 프로세스에서 체크 노드들은 몇 가지 미리 정의 된 순서에 따라 직렬로 처리된다. 체크 노드들의 처리는 두개의 "패스(pass)"로 구성된다. 각 이러한 패스에서 이웃 변수 노드들은 사전 정의된 순서에 따라 순차적으로 처리된다.
패스 1: 변수 노드 -> 체크 노드
각 인접 변수 노드는 체크 노드로 메시지를 전송한다. 체크 노드는 수신된 메시지들에 기초하여 새로운 상태를 계산한다.
패스 2: 체크 노드 -> 변수 노드
체크 노드는 각 인접 변수 노드에 메시지를 전송한다. 변수 노드는 수신된 메시지에 기초하여 그들의 상태를 업데이트한다.
직렬-체크 X(SCX) 스케줄링 프로세스는 직렬-체크 스케줄링 프로세스와 유사하나 변수 노드들이 순차적으로 처리되기 보다는 고정된 P개의 변수 노드들이 병렬로 처리된다.
블록-직렬-체크 X(BSCX) 스케줄링 프로세스는 직렬 - 체크 X와 유사하나, 속도를 높이는 성능을 위하여 복수의 메시지들이 병렬로 교환된다. 특히, 각 클럭 사이클에서 메시지들은 원시 그래프(proto-graph)에서 동일한 엣지(edge)로부터 확장된 병렬 엣지들을 통하여 전송된다.
병렬 패스를 갖는 블록-직렬-체크 X(BSCXP)스케줄링 프로세스는 속도를 높이는 성능을 위하여, 패스 2의 처리는 다음 원시 그래프 체크 노드의 패스 1의 처리와 병렬로 수행될 수 있다.
아래에서는 BSCXP 스케줄링 프로세스에 초점을 맞추어 설명되어질 것이다. 그러나, 본 발명은 이에 한정되지 않고 다양한 형태의 스케줄링 프로세스에도 적용될 수 있다.
도 8은 도 7에 도시된 논리 장치 모듈(132)의 구성을 예시적으로 보여주는 도면이다.
도 8에 도시된 바와 같이, 논리 장치 모듈(132A)은 논리 장치 블록(132-1) 및 스위치 블록(132-2)을 포함한다.
스위치 블록(132-2)은 제1메모리(131) 및 논리 장치 블록(132-1)에 각각 접속되어 있다. 스위치 블록(132-2)은 LDPC 이분 그래프를 조작하여 획득한 스케줄링 정보에 기초하여 제어 장치(134)에서 생성된 제어 신호에 따라서 체크 노드와 변수 노드간의 메시지 교환이 이루어지도록 제1메모리(131)와 논리 장치 블록(132-1) 사이의 신호 경로들을 스위칭한다.
논리 장치 블록(132-1)은 체크 노드들과 변수 노드들 간에 교환될 메시지에 대한 연산 처리를 수행하고, 연산 처리된 메시지를 스위치 블록(132-2)에 의하여 스위칭된 신호 경로들을 통하여 교환한다.
도 9는 도 7에 도시된 LDPC 디코더의 제1메모리(131) 및 논리 장치 모듈(132)의 구성을 예시적으로 보여주는 도면이다.
도 9에 도시된 바와 같이, 제1메모리(131)는 6개의 메모리 섹터 A~F(131-1 ~ 131-6)로 파티션 된다. 이는 변수 노드들을 6개의 메모리 섹터 A~F(131-1 ~ 131-6)에 나누어 할당한다는 것을 의미한다.
그리고, 논리 장치 모듈(132)이 4개의 논리 장치 1~4(132-1A ~ 132-1D)와 4개의 스위치 1~4(132-2A ~ 132-2D)로 구성되는 예를 보여준다. 이와 같은 예에서는 패스 1의 2개의 변수 노드들에 대하여 병렬 처리하고, 동시에 패스 2의 2개의 변수 노드들에 대하여 병렬 처리할 수 있게 된다.
도 9에서는 도 19에 도시된 메모리 액세스 스케줄 테이블에 따른 메시지 교환 처리를 위한 LDPC 디코더의 배선 설계의 예를 보여준다.
도 9 및 도 19를 참조하면, 논리 장치1, 3(132-1A, 132-1C)을 메모리 섹터A, C, E(131-1, 131-3, 131-5)로 제한하고, 논리 장치2, 4(132-1B, 132-1D)를 메모리 섹터B, D, F(131-2, 131-4, 131-6)로 제한한 예를 보여준다. 이에 따라서, LDPC 디코더에 대한 배선의 복잡도를 감소시킬 수 있게 된다.
다음으로, 본 발명의 기술적 사상에 따른 LDPC 이분 그래프를 조작하여 스케줄링 정보를 결정하는 방법에 대하여 설명하기로 한다.
우선, 체크 노드들과 변수 노드들 사이의 메시지 교환을 병렬로 처리하는 경우에 아래와 같은 메모리 액세스 충돌 문제, 쓰기 전 읽기 위반 문제 및 라우팅 혼잡 문제가 수반될 수 있다.
< 메모리 액세스 충돌>
도 7을 참조하면, 변수 노드로부터/로 메시지의 전송은 제1메모리(131)로부터/로 변수 노드들의 상태를 읽는/쓰는 동작을 수반한다. 예로서, BSCXP 스케줄링 프로세스에서, 다중 메모리 액세스는 각 클럭 사이클에 이루어진다. 그런데, 단일 포트 메모리들은 클럭 사이클 당 단지 하나의 메모리 액세스를 허용한다. 이에 따라서, 하나 이상의 액세스를 필요로 하면 충돌이 발생된다.
이 문제에 대한 하나의 해결책은 제1메모리(131)를 섹터들이라고 불리는 서브-메모리로 분할하는 것이다. 서브-메모리에는 변수 노드 블록들에 대한 상태들의 일부분이 각각 저장됩니다. 이와 같은 메모리 분할에도 임의의 LDPC 그래프에서는 다중 액세스가 동일한 섹터에 빈번하게 발생될 수 있다.
<쓰기 전 읽기 위반(read-before-write violation)>
BSCXP 스케줄링 프로세스에서 패스 1과 패스 2의 병렬 실행은 데이터 무결성 문제의 가능성을 암시한다. 특히, 패스 1에서, 제1메모리(131)에 저장되어 있는 모든 변수 노드들의 상태가 정확하고 최신 것으로 가정한다. 만일, 이전 체크 노드의 패스 2가 아직 종료되지 않은 경우에는, 변수 노드의 일부 상태는 구식이다. 이에 따라서, 패스 1과 패스 2를 병렬로 처리하는 경우에 쓰기 전 읽기 위반 문제가 발생될 수 있다.
<라우팅 혼잡>
변수 노드로부터/로 전송되는 메시지들의 계산은 논리 장치 모듈(132)에 의해 수행된다. 예로서, BSCXP 스케줄링 프로세스에서 P = 4로 가정하면, 8개의 논리 장치들이 필요하다. 변수 노드들로부터 메시지를 전송하는 메시지들을 위하여 4개의 논리 장치가 필요하고, 변수 노드들로 메시지를 전송하는 메시지들을 위하여 4개의 논리 장치가 필요하다. 만일 다중(예로서, 8) 메모리 섹터들이 사용되면 이들 8개의 논리 장치들 각각은 8개의 메모리 섹터들 각각에 결선될 필요가 있으므로 라우팅이 복잡해진다.
위와 같은 문제들을 해결하기 위하여 다음과 같은 방안들을 고려해 볼 수 있다.
<듀얼 - 포트 메모리>
이러한 메모리들은 각 클럭 사이클에서 메모리 당 2개의 액세스가 허용된다. 그러나, 이러한 메모리들은 다이-사이즈(die-size)가 커지는 단점이 있다.
<LDPC 그래프 제한>
원하는 확장 비율(블록 길이) z를 갖는 LDPC 그래프는 확장 비율 8z를 갖는 그래프를 변형하여 얻을 수 있다. 그 결과 그래프를 메모리 액세스 충돌 (메모리의 파티션을 8로 가정) 또는 쓰기 전 읽기 위반이 없도록 표시할 수 있다. 그러나, 주어진 코드 워드의 길이에 대하여, 확장 비율 8z있는 코드들은 더욱더 제한되고, 오류 복원력과 처리량의 관점에서 실질적으로 열악한 성능을 나타내는 단점이 있다.
<전용 하드웨어>
메모리 액세스 충돌 및 쓰기 전 읽기 위반은 전용 하드웨어에서의 일시 정지를 통하여 이들 문제를 해결할 수 있습니다. 그러나, 이러한 하드웨어는 복잡성 및 검증 시간을 증가시키고, 일시 정지는 처리량을 감소는 결과를 초래한다.
본 발명에서는 위와 같은 단점들을 개선하기 위한 메모리 액세스 충돌 및 쓰기 전 읽기 위반에 대한 간단한 솔루션을 제공한다. 또한, 라우팅 문제가 실질적으로 개선되는 간단한 방법을 제안한다.
본 발명의 기술적 사상에 따른 솔루션은 예로서, BSCXP 스케줄에서 액세스되는 노드들의 초기 설정된 순서들을 조작하는 것이다. 특히, 체크 노드가 처리되는 순서 및 패스 1 및 2에서 처리되는 체크 노드의 이웃한 변수 노드들의 순서를 조작하는 것이다. 이러한 조작은 인코더에 아무런 영향을 미치지 않는다, 따라서 코드의 성능(오류 수정 및 디코딩 시간)에 영향을 전혀 미치지 않는다. 즉, 본 발명에서 제안하는 방법은 고정된 코드와 인코더에서 적용되는 것이 아니라, 디코더를 조작하는 것이다.
예로서, 도 10과 같은 초기 설정된 LDPC 이분 그래프를 조작하여 스케줄링 정보를 결정하는 방법에 대하여 설명하기로 한다.
도 10의 그래프에 도시된 노드들과 엣지들을 도 11과 같은 목록으로 등가적으로 표시 할 수 있다.
도 11을 참조하면, 예로서 BSCXP 스케쥴을 적용 할 때 체크 노드들이 처리되는 임의의 순서를 나타내고, 임의의 순서는 패스 1 및 2에서 처리되는 체크 노드들에 인접한 변수 노드들의 순서를 나타낸다.
예로서, 병렬화 펙터 P=2로 가정하면 도 12와 같은 LDPC 스케줄 테이블을 얻을 수 있다.
도 12를 참조하면, 디코딩 처리가 체크 노드 번호 0에 대한 처리부터 시작한다. 병렬화 펙터 P=2이기 때문에 각 클럭 사이클에서 두 변수 노드들을 읽고, 두 변수 노드들을 쓸 수 있다. 참고적으로, 변수 노드 "읽기" 또는 "쓰기"는 제1메모리(131)로부터/로 해당 블록에 상응하는 변수 노드들의 상태를 읽거나 쓴다는 것을 의미한다.
클럭 사이클 1에서, 변수 노드 0과 1을 처리한다. 도 12에서, 체크 노드 0에 인접된 변수 노드들의 리스트에서 이들 변수 노드들이 처음 2개의 변수 노드들에 해당되기 때문이다. 클럭 사이클 3에서, 체크 노드 0에 대한 패스 1을 끝내고, 클럭 사이클 4에서 체크 노드 1에 대한 패스 1 처리를 시작한다.
그리고, 클럭 사이클 5에서, 체크 노드 0에 대한 패스 2 처리를 시작한다. 이 클럭 사이클에서 변수 노드들 0과 1을 처리한다. 패스 2에서 변수 노드에 액세스하는 순서는 패스 1에서 사용된 것과 동일하다.
편의를 위해, 도 12에서 단지 하나의 LDPC 디코딩 반복을 가정했다. 실제로 여러 번 반복 사용될 수 있다. 즉, 체크 노드 2의 패스 1이 끝날 때, 체크 노드 0의 두 번째 패스 1이 시작될 수 있다. 이는 메모리 액세스 충돌 및 쓰기 전 읽기 위반의 제거 프로세스를 복잡하게 한다.
체크 노드 0의 패스 2가 클럭 사이클 5가 아닌 클럭 사이클 4에 시작할 수도 있다. 이는 체크 노드 0에 대한 패스 1의 읽기 작업이 클럭 사이클 3 완료되었기 때문이다. 그러나, 하드웨어 파이프 라인은 패스 1의 데이터 처리를 완료하는데 몇 클럭 사이클이 추가적으로 필요하다. 이러한 지연을 지연 팩터 d로 칭한다. 예로서 d = 1에서, 패스 2는 클럭 사이클 5에서 시작된다. 지연 팩터 d는 시스템 특성을 고려하여 다른 값으로 설정할 수 있다.
도 12를 참조하면, 변수 노드 4의 상태가 클럭 사이클 3 및 5에 읽혀지는 것을 확인할 수 있다. 클럭 사이클 7 및 9에서 변수 노드 4가 업데이트(쓰기)된다. 이는 클럭 사이클 5에서 읽은 상태는 오래된 것이라는 것을 의미한다. 이에 따라서, 쓰기 전 읽기 위반이 발생된다.
예로서, 변수 노드들을 6개 섹터들로 나눈 예를 도 13에 도시하였다.
도 13에 도시된 테이블을 참조하면, 제1메모리(131)가 A, B, C, D, E, F로 표시되는 섹터들로 불리는 6개의 메모리 섹터들로 파티션되는 것을 보여준다. 예를 들어, 메모리 섹터 A는 변수 노드들 0, 5, 6 및 10에 해당하는 블록의 상태를 저장한다.
도 14는 도 13에 도시된 변수 노드들에 대한 메모리 섹터 할당 목록에 기초하여 도 12에 도시된 LDPC 스케줄 테이블에 대응되는 메모리 액세스 스케줄 테이블을 보여주는 도면이다.
도 12를 참조하면, 예를 들어 클럭 사이클 1에서, 테이블 2에 의하면 변수 노드들 0과 1이 읽혀지고, 도 13의 테이블에 의하면 변수 노드 0은 메모리 섹터 A에 속해 있고, 변수 노드 1은 메모리 섹터 F에 속해 있다. 이에 따라서, 도 14에 도시된 바와 같이, 클럭 사이클 1에서 메모리 섹터 A와 F가 읽혀진다.
도 14를 참조하면, 많은 메모리 액세스 충돌을 드러내고 있다. 예를 들어, 클럭 사이클 5에서 메모리 섹터 F가 읽혀지고 동시에 쓰여질 필요가 있다. 클럭 사이클 7에서 메모리 섹터 A는 두 번 읽혀질 필요가 있다.
도 14에 도시된 메모리 액세스 스케줄 테이블에서 발생되는 메모리 액세스 충돌 및 쓰기 전 읽기 위반을 해결하기 위하여 도 11에 도시된 시리얼 체크 및 체크 노드별 시리얼 변수 목록과 도 13에 도시된 메모리 섹터 할당 테이블을 다음과 같이 조작할 수 있다.
단계 1: 체크 노드들의 순서 변경
이 단계에서 도 11에 도시된 목록에서 단순히 행 1과 2의 왼쪽 열을 교환한 예를 도 15에 도시하였다. 이는 단순히 체크 노드 1과 2의 이름을 변경한 것과 같다.
단계 2: 인접 변수 노드들의 순서 변경
예로서, 체크 노드 0의 인접 변수 노드들의 리스트에서 변수 노드들 1과 5의 순서를 교환한다. 그리고, 체크 노드 1의 인접 변수 노드들 5와 7을 교환하고, 체크 노드 2의 인접 변수 노드들 쌍(4, 12)과 (13,14)를 교환한다. 이와 같은 변수 노드들의 순서를 변경하면, 도 16과 같이 변경된 시리얼 체크 및 체크 노드별 시리얼 변수 목록을 얻을 수 있다.
단계 3: 변수 노드들에 대한 섹터 할당 변경
변수 노드 5를 메모리 섹터 A로부터 메모리 섹터 B로 변경한 예를 도 17에 도시하였다.
위의 단계 1~3에 따른 변경 사항들을 적용하면, 도 18의 새로운 LDPC 스케줄 테이블 및 도 19의 새로운 메모리 액세스 스케줄 테이블을 획득할 수 있다.
도 18을 참조하면, 쓰기 전 읽기 위반이 없다는 것을 알 수 있다. 그리고, 도 19를 참조하면, 메모리 액세스 충돌도 발생되지 않는다는 것을 알 수 있다.
위에서 언급한 바와 같이, 라우팅 혼잡 문제는 메모리 섹터들과 논리 장치들 사이의 배선으로부터 발생된다. 위의 예에서, 6개의 메모리 섹터들을 사용하였다. 패스 1의 2개 변수 노드들, 패스 2의 2개 변수 노드들에 대한 처리를 위하여 4개 논리 장치들이 필요하다.
논리 장치 1과 2는 패스 1의 계산을 지원하는 것으로 가정하자. 클럭 사이클 1에서 논리 장치 1은 섹터 A로부터 데이터를 획득하기 위하여 필요하고, 논리 장치 2는 섹터 B로부터 데이터를 획득하기 위하여 필요하다. 동일하게, 논리 장치 3 및 4는 패스 2의 계산을 지원하는 것으로 가정할 수 있다. 클럭 사이클 5에서 논리 장치 3의 출력은 섹터 A에 쓰여질 필요가 있고, 논리 장치 4의 출력은 섹터 B에 쓰여질 필요가 있다.
원시적인 구현은 6개의 메모리들 각각에 논리 장치들 각각을 배선할 수 있다. 그러나, 테이블 7을 참조하면, 논리 장치 1 및 3을 메모리 섹터들 A, C, E로 제한하고, 다른 2개의 논리 장치들을 메모리 섹터들 B, D, F로 제한할 수 있다. 이와 같은 6개의 메모리 섹터들과 논리 장치들에 대한 배선 설계의 일 예를 도 9에 도시하였다. 이에 따라서, 배선의 복잡도가 감소하게 된다.
위에서 설명한 바와 같은 그래프의 순서 변경 및 메모리 섹터 재정렬은 라우팅 혼잡을 줄일 수 있도록 설계가 가능하다.
요약하면, 본 발명에서 제안하는 일반화된 방법은 다음과 같다.
체크 노드들의 재정렬(번호 재정렬) 및 체크 노드에 인접된 변수 노드들의 재정렬에 의하여 그래프 표현을 조작한다. 또한, 변수 노드들을 메모리 섹터들에 할당한다. 그 결과에 대한 구성은 다음과 같은 조건들을 만족하여야 한다.
1. 쓰기 전 읽기 위반이 없어야 한다.
2. 메모리 액세스 충돌이 없어야 한다.
3. 라우팅 혼잡을 줄이기 위하여, 2P 논리 장치들의 각각은 가능한 한 섹터들의 개수가 작아지도록 해야 한다.
옵션으로서, 다음과 같은 추가 요구 사항은 적용할 수도 있다.
<섹터 개수의 최소화>
더 많은 섹터들로 제1메모리(131)를 파티션하면, 메모리 액세스 충돌을 제거하는 방식에 있어서 제1메모리(131)에 변수 노드들의 할당은 단순화된다. 그러나 제1메모리(131)를 보다 많은 섹터들로 분할하면, 메모리 효율(메모리 비트 당 논리 게이트)이 저하된다. 섹터들의 최소 개수는 클럭 사이클 당 메모리 액세스의 최대 개수인 2P개 필요로 한다.
<섹터 사이즈 균형>
최적의 메모리 효율성 (메모리 비트 당 논리 게이트)을 달성하기 위해, 메모리들은 각각에 포함된 변수 노드들의 개수에 있어서 가능한 밸런스를 유지할 필요가 있다.
본 발명에서는 BSCXP에 초점을 맞추어 설명하고 있지만, 다른 스케쥴에도 적용할 수 있다. 예를 들어, 블록 시리얼 - 변수 스케쥴에서 체크 노드들의 상태들을 읽거나 쓰기 위하여 다중 체크 노드 메모리 액세스를 필요로 한다. 본 발명에서 설명된 방법은 메모리 액세스 스케쥴을 재정렬하는데 적용될 수 있고, 메모리 액세스 충돌을 줄이도록 체크 노드들의 상태들이 저장되는 제2메모리(133)를 적응적으로 파디션 하는데 적용될 수 있다. 다른 스케쥴에 적용하는 경우에도 쓰기 전 읽기 위반 및 라우팅 혼잡도를 비슷하게 줄일 수 있다.
위의 간단한 예와는 달리 실제 그래프는 많은 다른 노드들에 각각 연결된 수 백 개의 노드들을 가지고 있다. 좋은 그래프 재정렬 및 섹터 할당은 어려운 일이다. 일 예로서, 아래의 알고리즘을 이용하여 이를 달성 할 수 있다.
설명의 편의를 위해 알고리즘은 병렬화 펙터 P = 4로 설정하였다. 임의의 P에 대한 변형도 가능하다.
알고리즘 1 : 메모리 액세스 충돌 및 쓰기 전 읽기 위반 제거
알고리즘 1은 아래에 언급된 메모리 액세스 충돌을 제거하는 알고리즘 2, 그리고 쓰기 전 읽기 위반을 제거하는 알고리즘 3을 적용할 수 있다. 출력은 위의 내용과 같은 추가 요구 사항을 충족시킨다.
알고리즘은 다음과 같은 단계들을 수행한다.
단계 1A; 알고리즘 2 적용
체크 노드들 및 그들의 인접 변수 노드들의 순서를 재정렬하고, 메모리 섹터들("칼라들")에 변수 노드들을 할당한다.
단계 2A; 결과 평가
섹터 할당이 섹터 사이즈 요구 사항을 충족하는지 검증한다. 그렇지 않은 경우, 단계 1A에서 다시 시작한다.
단계 3A; 알고리즘 3 적용.
쓰기 전 읽기 위반을 제거하도록 체크 노드들과 그들의 인접 변수 노드들을 재정렬한다.
단계 4A; 결과 평가
알고리즘 3의 출력에 쓰기 전 읽기 위반이 남아있는 경우 단계 1A에서 다시 시작합니다.
그래프를 식별하는데 이용될 수 있는 간단한 기술은 솔루션으로 존재하지 않는다. 특히, 같은 변수 노드에 인접한 체크 노드들은 분리되어 있다. 만일 체크 노드 차수가 40 인 경우, 같은 변수 노드에 인접한 3 개의 연속 체크 노드가 있는 경우 쓰기 전 읽기 위반을 제거하는 솔루션을 찾기 용이하지 않다는 것을 보여준다.
아래에 설명되어질 알고리즘 2는 변수 노드들이 8 섹터로 파티션된다. 첫 번째 파티션은 2 섹터들로 나누어진다. 각 섹터의 파티션은 2개의 서브 섹터들로 나누어질 수 있다. 이 경우에 총 4개 섹터들을 얻을 수 있다. 최종적으로, 8 섹터를 얻기 위해 반복합니다.
세부적인 알고리즘 2에 대하여 설명하기로 한다.
알고리즘 2 : 메모리 액세스 충돌 제거
아래의 논의에서 메모리 섹터에 변수 노드들의 할당은 "칼라링" 알고리즘을 이용할 수 있다. 섹터의 "칼라"는 범위 {0, ..., 7}에서 할당된다. 형식적인 표기법 및 알고리즘에 대하여 설명하기로 한다.
표기법(Notation)
1. 변수 노드들
N은 변수 노드들의 수이고, [N] = {1, ..., N} 변수 노드들의 집합이다.
2. 체크 노드를
K는 체크 노드들의 수이고, [K] = {1, ..., K} 체크 노드들의 집합이다.
3. 체크 노드 차수
L은 체크 노드 당 변수 노드들의 수이다. 예로서, 4??L로 가정할 수 있다.
4. 엣지들(Edges)
각 체크 노드 K =1, ..., K에 대응되는 변수 노드들의 집합 SK⊂[N]이고, |SK| = L이며, 모든 Sk k∈[K]의 합집합은 [N]이다. 시퀀스로 표시하면, Sk = {X (k,1), ..., X (k, L)}, K∈ [K]이다.
5. 그래프 길이 (엣지들의 수).
M = K??L이고, 목표 시퀀스의 길이 m = M / 4이다.
6. 오프셋.
오프셋 상수 d는 L / 4 <d <M / 4로 주어진다.
대표적인 예 : N = 300, K = 30, L = 40.
문제 해결 : 3원소 (π, σ, f)
체크 노드들의 순열(permutation) π : [K] →[K]
매핑들의 벡터 σ=(σ1, ..., σK), σi : [L] →Si (i=1,...,K)
여기에서, σ는 엣지 순열(edge permutation)
섹터(칼라) 할당 f
각 변수 노드에 대한 칼라 할당을 나타내는 매핑 f : [N] → Z8
조작 오프셋 d를 d'∈{d-1, d, d+1}로 대체할 수 있다.
유효한 솔루션에 대한 제약에 대하여 아래를 참조하기로 한다.
문제 공식화(Problem Formulation)
정의 : CV 및 CV-4 시퀀스들
다음 매핑 π와 σ=(σ1, ..., σK)의 모든 선택은 변수 노드 번호들(예 : 1, ..., N)의 길이 M의 순서에 해당한다. 순서 π에 따라 체크 노드들을 설정하고, 각 k∈[K] 체크 노드에 대한 변수 노드는 σK에 의하여 정렬된다. 따라서, π, σ: an=an (π, σ), 0≤n≤ M-1, 여기에서 an∈[N] (즉, an은 체크 노드)이고, 각 0≤n≤ M-1에 대한 n=Lㆍ(k-1)+j를 만족하는 K≥k≥1, 0≤j≤L-1인 CV(체크 노드- 변수 노드) 시퀀스는 수학식 1과 같이 정의된다.
Figure pat00001
다음으로, {an}의 4개 요소들의 시이퀀스인 CV-4 시이퀀스 {Ai}는 수학식 2와 같이 정의된다.
Figure pat00002
U ⊆ [8]에 대하여 수학식 3과 같이 표현된다.
Figure pat00003
주어진 (π, σ, f)에 대하여, i-충돌 Coli (0≤i≤m-1)은 수학식 4와 같이 정의된다.
Figure pat00004
여기에서,
Figure pat00005
이다. 참고적으로, 모듈로 링(modulo ring) Zm={0,1,...,m1}이다.
그리고, 사이클 충돌들의 총량 Col은 수학식 5와 같이 정의된다.
Figure pat00006
그러면, 다음과 같은 조건을 만족하는 (π, σ, f)를 찾아낸다.
(i) Col(π, σ, f)가 존재하지 않거나 최소화되는 조건 (즉, Col(π, σ, f)=0을 만족하는 (π, σ, f)을 문제에 대한 솔루션이 된다)
(ii) 가능한 칼라들이 균형을 유지하는 조건 (즉, |F-1(j)| j∈ Z8이 가능한 균등해지는 조건)
(iii) 각 CV-4 시퀀스는 집합 {0,1,2,3} 또는 집합 {4,5,6,7}의 색상으로 둘 사이의 혼성이 없게 칼라링되는 순서를 충족시키는 조건
[이론적 배경]
변수 노드 차수 정의
i∈[N]에 대하여, deg(i)= |{k∈ [K] : i ∈ SK}| 가 된다.
아벨 그룹(Abelian group)은 공통 원소를 갖지 않는 잉여류(disjoint cosets)들 및 상대적인 속성들로 파티션 된다. 0≤i≤m-1에 대하여, Coli =0 ↔ Ai??d =Ai c 조건이 성립한다.
적응적인 아벨 그룹 Zm은 (i∈Zm), Ci={i??j??d: j∈Zm}에 의하여 주어진 상호적인 잉여류로 파티션될 수 있다. 이에 대하여 수학식 6과 같이 표현할 수 있다.
Figure pat00007
즉, Ci=Ck ↔ i-k ∈ C0 (제로 잉여류는 Zm의 서브 그룹임)
그리고,
Figure pat00008
추가적으로, | Ci | = m / gcd (m, d)
또한, 아벨 그룹 Zm에서는 C0+i=Ci가 된다. 모든 Zi에 대하여 R(Zi)를 Zi의 가장 작은 요소가 되도록 정의할 수 있다. 예로서, r=gcd(m,d)로 설정하고, Gm,d=Zm/C0={Ci:i∈Zm}과 Hm ,d={R(Ci): i∈Zm}={i1,...,ir}로 정의할 수 있다.
솔루션의 존재에 대한 필요 조건은 다음과 같다.
[보조 명제]
Col(π, σ, f) = 0인 (π, σ, f)의 존재는 m / gcd (m, d)가 짝수(또는 등가적으로 m / gcd (m, d)=8) 라는 것을 암시한다.
[증명]
0≤i≤m-1에 대하여 주어진 (π, σ, f)는
Figure pat00009
가 성립한다. Col =0 일 때 모든 j∈ Zm에 대하여
Figure pat00010
인 관계가 성립한다. 이는 모든 i∈ Zm에 대하여 i=mod(i+jㆍd, m)이고, j는 짝수이다. 즉, Col(π, σ, f) = 0는 mod(jㆍd, m)=0을 암시하므로 j는 짝수가 된다.
Col(π, σ, f) = 0인 (π, σ, f)가 존재한다고 가정하고 m'=m/gcd(m,d), d'=m/gcd(m,d)라 하자. 그러면, mod(jㆍd', m')=0 일 때 j는 짝수가 된다. mod(jㆍd', m')=0은 jㆍd'+kㆍ m'=0인 k∈ Z가 존재하는 것과 같은 의미이다.
위와 같은 조건이 발생되었다고 가정하면, 그것은 직접적인 모순을 얻을 수 있는 m'가 짝수가 아닌 gcd(k, j)=1 인 경우에 직접적인 모순을 얻을 수 있다고 가정할 수 있다.
참고적으로, 다음과 조건이 성립한다.
(1) 8|M과 d가 홀수일 때 이 조건은 항상 만족한다.
(2) 8|M과 d가 홀수라고 가정하고, 추가적으로 |Ci| ≤m/3이면 자유도가 증가하게 된다.
[칼라링 알고리즘]
칼라링 알고리즘은 다음과 같이 순차적으로 작동한다.
첫 번째 잉여류(coset): {As}s∈ Zm, s=mod(jㆍd, m)으로부터 2번째 잉여류 등을 산출한다.
첫 번째 4개의 A0은 모든 체크 노드들을 거쳐서 형성되며, 하나의 체크 노드에서 4개의 칼라링되지 않은 변수 노드들 찾으면, 그들의 차수들의 합은 최대가 된다.
각 중간 단계에서는 일부 잉여류의 처음 또는 중간에서 수행한다. 몇몇 j에 대한 mod(i+jㆍd, m)을 정의한다. 체크 노드의 인덱스를 유도하면, 거기에는 2가지 가능성들이 있다.
각 잉여류의 시작에서 2가지 가능성들 중의 하나를 선택한다. 예로서, 칼라 {0,1,2,3} 또는 {4,5,6,7}이다. 그러면, 위에서 언급한 문제 목표 (iii)이 보증된다. 그리고, 다음과 같은 조건에서는 각각 다음과 같이 처리한다.
(i) 해당 인덱스에 대응되는 체크 노드는 이미 프로세스에 의하여 액세스되어 정의되어 있는 경우
이러한 경우에, 이미 색을 갖고 있는 이들(변수 노드들)의 개수를 최대화시키고, 그들의 차수에 관련된 기준(norm)을 최대화시키는 체크 노드의 4개의 변수 노드들 집합이 되기 위한 Amod (i+jㆍd,m)을 취한다.
(ii) 해당 인덱스에 대응되는 체크 노드가 아직 프로세스에 의하여 액세스되지 않은 경우
이러한 경우에, 액세스되지 않은 모든 체크 노드들을 조사하여 이미 색을 갖은 변수 노드들의 개수가 최대화되고 그들의 차수에 관련된 기준(norm)을 최대화시키는 4개의 변수 노드들 집합을 갖는 체크 노드를 찾아내기 되기 위한 Amod (i+jㆍd,m)을 취한다.
예로서, 모듈로-8 칼라링 알고리즘에서는 d는 홀수이고 8|M 이라고 가정하고, f(an) =mod(n, 8)이 되도록 (π, σ, f)를 결정할 수 있다.
다음으로, 알고리즘 3에 대하여 설명하기로 한다.
알고리즘 3 : 쓰기 전 읽기 위반의 제거
이 알고리즘은 알고리즘 2에 의하여 출력된 그래프 및 섹터들에 대한 변수 노드들의 할당을 취한다. 알고리즘 2의 조건들을 위반하지 않고 체크 노드들 및 그들의 인접한 변수 노드들을 재정렬함으로써 쓰기 전 읽기 위반을 제거하기 위한 알고리즘이다.
알고리즘 3은 다음과 같은 처리를 수행한다.
1. 체크 노드들의 순서 변경.
그래프에서 체크 노드들을 다시 정렬한다. 새로운 순서는 연속적인 체크 노드들 사이에 공유된 변수 노드들의 개수를 최소화시킨다. 또한, 3 연속 체크 노드들에 의하여 공유되는 변수 노드들을 최소화시킨다.
참고적으로, 알고리즘 2의 출력의 속성은 재정렬 체크 노드가 해당 알고리즘에 의해 보증된 메모리 액세스 충돌 회피에 방해가 되지 않는 것입니다.
2. 변수 노드들에 대한 인접 순서 변경.
각 체크 노드 내에서 쓰기 전 읽기 위반을 최소화하기 위해 변수 노드들에 대한 인접 순서들을 다시 정렬한다. 예를 들어, 2 연속 체크 노드들에 공유되는 변수 노드에 대한 인접 위치는 첫 번째 체크 노드의 시작과 두 번째 체크 노드의 끝으로 이동된다. "이동"은 체크 노드의 이웃의 순서 목록에서 두개의 이웃을 교환한다는 것을 의미합니다.
참고적으로, 알고리즘 3에 따른 재정렬은 알고리즘 2로 얻은 충돌 회피에 방해가 되지 않도록 하기 위해 같은 섹터에 속하는 변수 노드에 대한 인접 위치를 교환할 수 있다.
3. 랜덤 그리디(random greedy) 알고리즘
이 알고리즘에서 고정된 회수의 반복이 되풀이된다. 체크 노드와 변수 노드들에 이웃하는 그들의 인접한 2개의 이웃 노드들이 랜덤하게 선택된다. 만일, 인접노드들을 교환하는 것이 쓰기 전 읽기 위반의 수를 증가시키지 않고, 메모리 충돌이 발생되지 않는다면 교환은 허용된다. 그렇지 않으면 거부된다.
다음으로, 위에서 설명한 알고리즘 1 ~ 3을 이용하여 도 7에 도시된 LDPC 디코더(130A)에서 효율적인 스케줄링에 따른 LDPC 디코딩을 수행하는 방법에 대하여 설명하기로 한다.
도 20은 본 발명의 실시 예에 따른 효율적인 스케줄링에 따른 LDPC 디코딩 방법의 흐름도이다.
우선, 단계 S110에서 LDPC 디코더(130A)의 제어 장치(134)는 LDPC 이분 그래프를 조작하여 획득한 스케줄링 정보에 기초하여 체크 노드들과 변수 노드들 간의 메시지들을 교환하도록 논리 장치 모듈(132)을 제어한다. 이에 따라서, 스케줄링 정보에 기초하여 제1메모리(131) 및 제2메모리(133)에서의 읽기 또는 쓰기 동작을 수행하게 된다. 이와 같이, 제1메모리(131) 또는 제2메모리(133)에서의 쓰기 동작에 의하여 변수 노드 업데이트 또는 체크 노드 업데이트 처리가 수행된다.
스케줄링 정보는 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여 결정될 수 있다. 스케줄링 정보는 체크 노드와 변수 노드간의 메시지 교환 처리 과정에서의 체크 노드들 또는 변수 노드들의 상태가 저장된 메모리에서의 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 조건을 만족하도록 결정될 수 있다. 또한, 라우팅 혼잡을 줄이기 위하여, 2P개의 논리 장치들의 각각은 가능한 한 섹터들의 개수가 작아지도록 결정할 수 있다. 그리고, 최적의 메모리 효율성 (메모리 비트 당 논리 게이트)을 달성하기 위해, 메모리 섹터들은 각각에 포함된 변수 노드들의 개수에 있어서 가능한 밸런스를 유지하도록 결정할 수 있다.
다음으로, 단계 S120에서 LDPC 디코더(130A)의 제어 장치(134)는 단계 S110에서 메시지 교환 처리에 따른 변수 노드 업데이트 실행 결과에 기초하여 LDPC 디코딩 처리를 수행한다. 즉, 변수 노드 업데이트 실행 결과에 기초하여 시험 디코딩(tentative decoding) 처리를 수행한 후에, 시험 디코딩 처리 결과에 대한 에러 유무를 판정한다.
예로서, 업데이트된 변수 노드들의 상태들을 경판정(hard decision)한 결과에 기초하여 에러 유무를 판정할 수 있다. 시험 디코딩 처리 결과 에러로 판정되면 메시지 교환에 따른 체크 노드 업데이트 및 변수 노드 업데이트를 반복하여 수행한다. 만일, 시험 디코딩 처리 결과 에러로 판정되지 않으면, 업데이트된 변수 노드의 상태의 경판정 결과를 디코딩된 데이터로 출력한다.
도 21은 본 발명의 실시 예에 따른 스케줄링 정보를 결정하는 방법에 대한 일 예를 보여주는 흐름도이다.
단계 S210에서, LDPC 이분 그래프를 등가적으로 표시한 목록에서 체크 노드들의 순서를 변경하는 처리를 수행한다. 예로서, 도 10에 도시된 LDPC 이분 그래프를 등가적으로 표시한 도 11에 도시된 목록에서 단순히 행 1과 2의 왼쪽 열을 교환하면 도 15와 같은 목록을 얻을 수 있다. 이는 단순히 체크 노드 1과 2의 이름을 변경한 것과 같다.
단계 S220에서, 체크 노드별로 접속된 인접 변수 노드들의 순서를 변경하는 처리를 수행한다. 예로서, 도 15에 도시된 목록에서 체크 노드 0의 인접 변수 노드들의 리스트에서 변수 노드들 1과 5의 순서를 교환할 수 있다. 그리고, 체크 노드 1의 인접 변수 노드들 5와 7을 교환하고, 체크 노드 2의 인접 변수 노드들 쌍(4, 12)와 (13,14)를 교환한다. 이와 같은 변수 노드들의 순서를 변경하면, 도 16과 같이 변경된 시리얼 체크 목록 및 체크 노드별 시리얼 변수 목록을 얻을 수 있다.
단계 S230에서, 변수 노드들에 대한 섹터 할당을 변경하는 처리를 수행한다. 예로서, 도 13에 도시된 변수 노드들을 6개의 파티션으로 나눈 메모리 섹터들에 할당하는 테이블에서 변수 노드 5를 메모리 섹터 A로부터 메모리 섹터 B로 변경하면 도 17과 같은 테이블을 얻을 수 있다.
위의 단계 S210 ~ S230을 반복적으로 수행하면서, 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 스케줄링 정보를 찾아낸다. 이와 같이 찾아낸 스케줄링 정보를 추가적으로 조작하여 라우팅 혼잡을 줄이도록 변수 노드들에 대한 메모리 섹터 할당을 변경할 수도 있다.
도 22는 본 발명의 실시 예에 따른 스케줄링 정보를 결정하는 방법에 대한 다른 예를 보여주는 흐름도이다.
단계 S310에서, 메모리 액세스 충돌이 발생되지 않도록 체크 노드들 및 변수 노드들의 순서의 재정렬 및 섹터 할당 처리를 수행한다. 예로서, 위에서 설명한 바와 같은 알고리즘 2를 적용하여 메모리 액세스 충돌이 발생되지 않는 조건을 충족시키는 섹터 할당 및 체크 노드들 및 변수 노드들의 재정렬 결과를 찾아낼 수 있다.
단계 S320에서, 섹터 할당이 섹터 사이즈 요구 사항을 충족하는지 검증한다. 섹터 사이즈 요구 사항은 예로서, 메모리 섹터들에 각각 포함된 변수 노드들이 초기 설정된 허용 개수 범위 내에 포함되는 조건이 포함될 수 있다. 이는 최적의 메모리 효율성을 달성하기 위해서는 메모리 섹터들 각각에 포함된 변수 노드들의 개수들에 대한 밸런스를 유지할 필요가 있기 때문이다.
단계 S320에서의 판단 결과 섹터 할당이 섹터 사이즈 요구 사항을 충족하지 못하는 경우에 단계 S310부터 다시 시작한다.
단계 S330에서, 단계 S320에서의 판단 결과 섹터 할당이 섹터 사이즈 요구 사항을 충족하는 경우에 쓰기 전 읽기 위반을 제거하도록 체크 노드들과 그들의 인접 변수 노드들을 재정렬한다. 예로서, 위에서 설명한 바와 같은 알고리즘 3을 적용하여 메모리 액세스 충돌이 발생되지 않는 조건을 충족시키는 섹터 할당 및 체크 노드들 및 변수 노드들의 재정렬 결과를 찾아낼 수 있다.
단계 S340에서, 단계 S320에서의 재정렬된 결과가 쓰기 전 읽기 위반이 존재하는지 평가한다.
단계 S340에서의 평가 결과 쓰기 전 읽기 위반이 존재하는 경우에는 단계 S310부터 다시 시작한다.
만일, 단계 S340에서의 평가 결과 쓰기 전 읽기 위반이 존재하지 않는 경우에는 단계 S330에서 재정렬된 결과로서 최종적인 스케줄링 정보를 결정한다.
도 23은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 23을 참조하면, 전자 장치(2000)는 프로세서(2100), RAM(2200), 입출력 장치(2300), 전원 장치(2400) 및 메모리 시스템(1000)을 포함할 수 있다. 한편, 도 23에는 도시되지 않았지만, 전자 장치(2000)는 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 전자 장치(2000)는 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 23에 도시된 메모리 시스템(1000)은 도 1 또는 도 2에 도시된 본 발명의 실시 예에 따른 메모리 시스템(1000A 또는 1000B)이 적용될 수 있다. 따라서, 메모리 장치(200)에서 읽어낸 데이터를 본 발명에서 제안하는 효율적인 스케줄링에 따른 LDPC 디코딩 방법을 적용하여 디코딩 처리할 수 있다.
프로세서(2100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(2100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(2100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2500)를 통하여 RAM(2200), 입출력 장치(2300) 및 메모리 시스템(1000)과 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(2100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2200)는 전자 장치(2000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(2200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(2300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(2400)는 전자 장치(2000)의 동작에 필요한 동작 전압을 공급할 수 있다.
도 24는 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 메모리 카드 시스템을 나타내는 블록도이다.
도 24를 참조하면, 메모리 카드 시스템(3000)은 호스트(3100) 및 메모리 카드(3200)를 포함할 수 있다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 접속부(3120)를 포함할 수 있다. 메모리 카드(3200)는 카드 접속부(3210), 카드 컨트롤러(3220) 및 메모리 장치(3230)를 포함할 수 있다.
도 24에 도시된 카드 컨트롤러(3220) 및 메모리 장치(3230)는 각각 도 1 또는 도 2에 도시된 메모리 컨트롤러(100) 및 메모리 장치(200 또는 200')가 적용될 수 있다.
호스트(3100)는 메모리 카드(3200)에 데이터를 기입하거나, 메모리 카드(3200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(3110)는 커맨드(CMD), 호스트(3100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK), 및 데이터(DATA)를 호스트 접속부(3120)를 통해 메모리 카드(3200)로 전송할 수 있다.
카드 컨트롤러(3220)는 카드 접속부(3210)를 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(3220)는 메모리 장치(3230)에서 읽어낸 데이터를 본 발명에서 제안하는 효율적인 스케줄링에 따른 LDPC 디코딩 방법을 적용하여 디코딩 처리할 수 있다.
메모리 카드(3200)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 25는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
도 25를 참조하면, 본 발명의 실시 예에 따른 네트워크 시스템(4000)은 네트워크(4200)를 통해 연결되는 서버 시스템(4100) 및 다수의 단말들(4300, 4400, 4500)을 포함할 수 있다. 본 발명의 실시예에 따른 서버 시스템(4100)은 네트워크(4200)에 연결되는 다수의 단말들(4300, 4400, 4500)로부터 수신되는 요청을 처리하는 서버(4110) 및 단말들(4300, 4400, 4500)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD(4120)를 포함할 수 있다. 이때, SSD(4120)는 도 1 또는 도 2에 도시된 메모리 시스템(1000A 또는 1000B)이 적용될 수 있다.
한편, 상기에서 설명된 본 발명에 따른 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000A, 1000B : 메모리 시스템 100 : 메모리 컨트롤러
120, 120' : 메모리 장치 110 : 프로세서
120 : 인코더 130 : 디코더
140 : RAM 150 : 호스트 인터페이스
160 : 메모리 인터페이스 170 : 버스
200 : 메모리 장치 131 : 제1메모리
132 : 논리 장치 모듈 133 : 제2메모리
134 : 제어 장치 132-1 : 논리 장치 블록
132-2 : 스위치 블록 131-1 ~ 131-6 : 메모리 섹터 A~F
132-1A ~ 132-1D : 논리 장치 1~4 132-2A ~ 132-2D : 스위치 1~4
10 : 셀 어레이 20 : 페이지 버퍼
30 : 제어 회로 40 : 로우 디코더
2000 : 전자 장치 3000 : 메모리 카드 시스템
4000 : 네트워크 시스템

Claims (10)

  1. 저밀도 패리티 체크(LDPC) 디코딩을 위한 체크 노드들과 변수 노드들 간의 메시지 교환 순서를 나타내는 스케줄링 정보에 기초하여 상기 체크 노드들과 상기 변수 노드들 간의 메시지들을 교환하는 단계; 및
    상기 교환된 메시지들에 기초하여 LDPC 디코딩 처리를 수행하는 단계를 포함하고,
    상기 스케줄링 정보는 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여 결정되는 것을 특징으로 하는 메모리 시스템에서의 LDPC 디코딩 방법.
  2. 제1항에 있어서, 상기 체크 노드들의 순서 조작은 상기 LDPC 이분 그래프에 따른 시리얼-체크 목록에서의 체크 노드 번호를 교환하는 것을 특징으로 하는 메모리 시스템에서의 LDPC 디코딩 방법.
  3. 제1항에 있어서, 상기 변수 노드들의 순서 조작은 상기 LDPC 이분 그래프에 따른 시리얼-체크 목록에서의 체크 노드 행 별로 인접 변수 노드들의 순서를 재정렬하는 것을 특징으로 하는 메모리 시스템에서의 LDPC 디코딩 방법.
  4. 제1항에 있어서, 상기 스케줄링 정보는 체크 노드와 변수 노드간의 메시지 교환 처리 과정에서의 변수 노드들의 상태들이 저장된 메모리에서의 메모리 액세스 충돌이 발생되지 않는 조건을 만족하도록 결정되는 것을 특징으로 하는 메모리 시스템에서의 LDPC 디코딩 방법.
  5. 제1항에 있어서, 상기 스케줄링 정보는 상기 체크 노드와 변수 노드 간의 메시지 교환을 다중으로 처리하는 과정에서의 쓰기 전 읽기 위반(read-before-write violation)이 발생되지 않는 조건을 만족하도록 결정되는 것을 특징으로 하는 메모리 시스템에서의 LDPC 디코딩 방법.
  6. 제1항에 있어서, 상기 스케줄링 정보는 상기 체크 노드와 변수 노드간의 메시지 교환 처리 과정에서의 체크 노드들 또는 변수 노드들의 상태가 저장된 메모리에서의 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 조건을 만족하도록 결정되는 것을 특징으로 하는 메모리 시스템에서의 LDPC 디코딩 방법.
  7. 제1항에 있어서, 상기 스케줄링 정보는 LDPC 스케줄 테이블 정보에서 시리얼-체크 목록의 체크 노드 번호를 교환하는 프로세스 및 체크 노드별 시리얼-변수 목록의 변수 노드들의 순서를 재정렬하는 프로세스를 반복적으로 수행하면서 찾아낸 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 조건을 만족하는 시리얼-체크 목록 및 체크 노드별 시리얼-변수 목록이 포함된 LDPC 스케줄 테이블 정보임을 특징으로 하는 메모리 시스템에서의 LDPC 디코딩 방법.
  8. 저밀도 패리티 체크(LDPC) 이분 그래프의 변수 노드들의 상태들을 저장하는 제1메모리;
    상기 LDPC 이분 그래프의 체크 노드들의 상태들을 저장하는 제2메모리;
    상기 제1메모리 및 상기 제2메모리에 접속되어, 체크 노드들과 변수 노드들 간의 메시지 교환 처리를 위한 연산을 수행하는 논리 장치 모듈; 및
    상기 체크 노드들과 변수 노드들 간의 메시지 교환 순서를 나타내는 스케줄링 정보에 기초하여 상기 체크 노드들과 상기 변수 노드들 간의 메시지 교환 처리를 수행하도록 상기 논리 장치 모듈을 제어하는 제어 장치를 포함하고,
    상기 스케줄링 정보는 상기 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여 체크 노드들과 변수 노드들 간의 메시지 교환 시간이 최적화되도록 설정됨을 특징으로 하는 LDPC 디코더.
  9. 제8항에 있어서, 상기 제1메모리는 복수개로 파티션된 메모리 섹터들을 포함하고, 상기 메모리 섹터들 각각을 하나 이상의 변수 노드들에 할당하는 것을 특징으로 하는 LDPC 디코더.
  10. 제8항에 있어서, 상기 스케줄링 정보는 상기 체크 노드들과 변수 노드들 간의 메시지 교환 과정에서 상기 제1메모리 및 제2메모리에서의 메모리 액세스 충돌 및 쓰기 전 읽기 위반이 발생되지 않는 조건을 만족하도록 결정되는 것을 특징으로 하는 LDPC 디코더.
KR20130101274A 2013-08-26 2013-08-26 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더 KR20150024489A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR20130101274A KR20150024489A (ko) 2013-08-26 2013-08-26 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더
US14/334,947 US20150058692A1 (en) 2013-08-26 2014-07-18 Low-density parity-check decoding method and low-density parity-check decoder using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20130101274A KR20150024489A (ko) 2013-08-26 2013-08-26 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더

Publications (1)

Publication Number Publication Date
KR20150024489A true KR20150024489A (ko) 2015-03-09

Family

ID=52481513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130101274A KR20150024489A (ko) 2013-08-26 2013-08-26 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더

Country Status (2)

Country Link
US (1) US20150058692A1 (ko)
KR (1) KR20150024489A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180053224A (ko) * 2016-11-11 2018-05-21 한국전자통신연구원 패리티 검사 행렬의 스케줄링 방법 및 이를 수행하는 ldpc 복호기
KR101871682B1 (ko) 2017-02-02 2018-06-28 한밭대학교 산학협력단 페이지 단위의 ldpc 복호 반복 횟수 기록 및 마모도 모니터링을 통한 신뢰도 높은 웨어-레벨링 수행방법
KR20180090414A (ko) 2017-02-02 2018-08-13 한밭대학교 산학협력단 Ldpc 복호 반복 횟수 기록 및 모니터링을 통한 웨어-레벨링 신뢰도 향상 시스템 및 방법
KR20200021253A (ko) * 2018-08-20 2020-02-28 에스케이하이닉스 주식회사 디코더, 그것의 동작 방법 및 메모리 시스템
US11139832B1 (en) 2020-03-17 2021-10-05 SK Hynix Inc. LDPC decoder and operating method thereof

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10038456B1 (en) * 2014-03-25 2018-07-31 Marvell International Ltd. Decoders with look ahead logic
US10548158B2 (en) * 2016-03-10 2020-01-28 Huawei Technologies Co., Ltd. Message passing algorithm decoder and methods
US10168938B2 (en) * 2016-11-25 2019-01-01 Hughes Network Systems, Llc LDPC decoder design to significantly increase throughput in ASIC by utilizing pseudo two port memory structure
US10727869B1 (en) * 2018-03-28 2020-07-28 Xilinx, Inc. Efficient method for packing low-density parity-check (LDPC) decode operations
US11108410B1 (en) 2018-08-24 2021-08-31 Xilinx, Inc. User-programmable LDPC decoder
US11075650B1 (en) * 2019-10-29 2021-07-27 Xilinx, Inc. Sub-matrix reduction for quasi-cyclic LDPC codes
KR20210061504A (ko) 2019-11-19 2021-05-28 삼성전자주식회사 에러 정정 회로, 및 그것을 동작하는 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
JP4138700B2 (ja) * 2004-05-31 2008-08-27 株式会社東芝 復号装置および復号回路
KR20060032464A (ko) * 2004-10-12 2006-04-17 삼성전자주식회사 효율적인 저밀도 패리티 검사 코드 복호 방법 및 장치
KR100703271B1 (ko) * 2004-11-23 2007-04-03 삼성전자주식회사 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치
EP1667353A1 (en) * 2004-12-03 2006-06-07 STMicroelectronics N.V. Method and device for decoding packets of data within an hybrid ARQ scheme
KR100899738B1 (ko) * 2006-02-02 2009-05-27 삼성전자주식회사 노드 메모리 기반의 ldpc 복호기 및 복호방법
KR20070084947A (ko) * 2006-02-22 2007-08-27 삼성전자주식회사 통신 시스템에서 신호 수신 장치 및 방법
CN101350625B (zh) * 2007-07-18 2011-08-31 北京泰美世纪科技有限公司 一种高效通用的qc-ldpc码译码器及其译码方法
US8181083B2 (en) * 2007-08-27 2012-05-15 Stmicroelectronics S.R.L. Methods and architectures for layered decoding of LDPC codes with minimum latency
US20090319860A1 (en) * 2008-06-23 2009-12-24 Ramot At Tel Aviv University Ltd. Overcoming ldpc trapping sets by decoder reset
US8370711B2 (en) * 2008-06-23 2013-02-05 Ramot At Tel Aviv University Ltd. Interruption criteria for block decoding
US8347172B2 (en) * 2008-12-12 2013-01-01 Electronics And Telecommunications Research Institute Method for decoding using dynamic scheduling scheme for low density parity check codes and apparatus thereof
US8601352B1 (en) * 2009-07-30 2013-12-03 Apple Inc. Efficient LDPC codes
US8984376B1 (en) * 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for avoiding error mechanisms in layered iterative decoding

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180053224A (ko) * 2016-11-11 2018-05-21 한국전자통신연구원 패리티 검사 행렬의 스케줄링 방법 및 이를 수행하는 ldpc 복호기
KR101871682B1 (ko) 2017-02-02 2018-06-28 한밭대학교 산학협력단 페이지 단위의 ldpc 복호 반복 횟수 기록 및 마모도 모니터링을 통한 신뢰도 높은 웨어-레벨링 수행방법
KR20180090414A (ko) 2017-02-02 2018-08-13 한밭대학교 산학협력단 Ldpc 복호 반복 횟수 기록 및 모니터링을 통한 웨어-레벨링 신뢰도 향상 시스템 및 방법
KR20200021253A (ko) * 2018-08-20 2020-02-28 에스케이하이닉스 주식회사 디코더, 그것의 동작 방법 및 메모리 시스템
US11139832B1 (en) 2020-03-17 2021-10-05 SK Hynix Inc. LDPC decoder and operating method thereof

Also Published As

Publication number Publication date
US20150058692A1 (en) 2015-02-26

Similar Documents

Publication Publication Date Title
KR20150024489A (ko) 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더
KR102128471B1 (ko) 폴라 부호의 리스트 복호 방법 및 이를 적용한 메모리 시스템
US8732538B2 (en) Programmable data storage management
CN105739915B (zh) 存储系统中执行的条带重建方法和存储系统
CN103348330B (zh) 采用独立硅元件的动态较高级冗余模式管理
US10795827B2 (en) Adaptive management of intermediate storage
KR101926608B1 (ko) 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더
US20110016263A1 (en) Method for performing data pattern management regarding data accessed by a controller of a flash memory, and associated memory device and controller thereof
KR20100124087A (ko) 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법
US10553285B2 (en) Single-port memory with opportunistic writes
US10324785B2 (en) Decoder using low-density parity-check code and memory controller including the same
US9858000B2 (en) Storage device and sustained status accelerating method thereof
KR20140044107A (ko) 메모리 시스템에서의 순환 중복 검사 동작 수행 방법 및 이를 이용한 메모리 컨트롤러
KR102204394B1 (ko) 메모리 시스템에서의 코딩 방법 및 디코딩 방법
KR20110099883A (ko) 홀수의 매트들을 갖는 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 배속 동작 방법
KR20200038812A (ko) 메모리 시스템 및 그것의 동작 방법
CN113168562A (zh) 优化的神经网络数据组织
BR112019010741B1 (pt) Método e aparelho para acessar dispositivos de memória de porta única como dispositivos de pseudomemória de duas portas
CN112084119A (zh) 存储装置、主机装置以及操作存储装置和主机装置的方法
JP6303039B2 (ja) ストレージシステム用のセル位置プログラミング
KR20190127395A (ko) 준순환 저밀도 패리티 체크 코드의 패리티 체크 행렬 변환 회로, 이를 포함하는 에러 정정 회로 및 이의 동작 방법
KR20140088423A (ko) 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법
US10860243B2 (en) Per cursor logical unit number sequencing
TWI656529B (zh) 資料儲存裝置及其操作方法
KR102511827B1 (ko) Ldpc 디코더 및 스토리지 장치

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid