KR101913900B1 - 조기 디코딩 종료 검출을 갖는 디코더 - Google Patents

조기 디코딩 종료 검출을 갖는 디코더 Download PDF

Info

Publication number
KR101913900B1
KR101913900B1 KR1020157033536A KR20157033536A KR101913900B1 KR 101913900 B1 KR101913900 B1 KR 101913900B1 KR 1020157033536 A KR1020157033536 A KR 1020157033536A KR 20157033536 A KR20157033536 A KR 20157033536A KR 101913900 B1 KR101913900 B1 KR 101913900B1
Authority
KR
South Korea
Prior art keywords
data unit
decoded
decoding
data
layers
Prior art date
Application number
KR1020157033536A
Other languages
English (en)
Other versions
KR20160004338A (ko
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
Priority claimed from US13/918,400 external-priority patent/US20140223255A1/en
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20160004338A publication Critical patent/KR20160004338A/ko
Application granted granted Critical
Publication of KR101913900B1 publication Critical patent/KR101913900B1/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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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/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/114Shuffled, staggered, layered or turbo decoding schedules
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • 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/6561Parallelized implementations
    • 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/1191Codes on graphs other than LDPC codes

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)

Abstract

조기 디코딩 종료 검출을 갖는 디코더들의 실시형태들이 개시된다. 그 디코더들은 특히 쿼시사이클 저밀도 패리티 체크 코드 (QC LDPC) 디코딩이 사용될 때 유연하고 스케일링가능한 디코딩 및 조기 종료 검출을 제공할 수 있다. 하나의 실시형태에서, 제어기는 복수의 계층들을 포함하는 디코딩 매트릭스를 사용하여 데이터 유닛을 반복적으로 디코딩한다. 그 제어기는 둘 이상의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛들이 패리티 체크 방정식을 만족시키는 것, 및 둘 이상의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛들이 동일하다는 것을 결정하는 것에 응답하여 데이터 유닛을 디코딩하는 것을 종료한다. 이롭게도, 데이터 유닛의 디코딩의 종료는 데이터 유닛을 디코딩하기 위해 수행되는 반복들의 수를 감소시킬 수 있다.

Description

조기 디코딩 종료 검출을 갖는 디코더{DECODER HAVING EARLY DECODING TERMINATION DETECTION}
본 개시는 컴퓨터 시스템들을 위한 데이터 스토리지 시스템들에 관한 것이다. 특히, 본 개시는 조기 디코딩 종료 검출을 갖는 디코더에 관한 것이다.
비휘발성 메모리 어레이들은 종종 제한된 내구성을 갖는다. 메모리 어레이의 내구성은 통상적으로 사용 패턴 및 마모에 따른다. 또한, 내구성은 사용되는 비휘발성 메모리 어레이의 타입에 의존한다. 예를 들어, 다중 레벨 셀 (MLC) NAND 매체들을 갖는 메모리 어레이들은 통상적으로 단일 레벨 셀 (SLC) NAND 매체들을 갖는 메모리 어레이들보다 더 낮은 내구성을 갖는다. 메모리 어레이들에 저장된 사용자 데이터를, 감소된 내구성에 의해 야기될 수도 있는 변질로부터 보호하기 위해, 에러 검출 및/또는 정정을 용이하게 하기 위해 패리티 데이터가 사용자 데이터와 함께 생성 및 저장될 수 있다. 패리티 데이터를 디코딩하는 것은 시간 소비적이고 자원 집중적일 수 있다. 이에 따라, 패리티 데이터를 디코딩하기 위해 더 효율적인 메커니즘들을 제공하는 것이 바람직하다.
본 발명의 여러 특징들을 구현하는 시스템들 및 방법들이 이제 다음의 도면들을 참조하여 기술될 것이다.
도 1 은 본 발명의 하나의 실시형태에 따른 조기 디코딩 종료 검출을 갖는 디코더를 구현하는 호스트 시스템 및 데이터 스토리지 시스템의 결합을 도시한다.
도 2 는 본 발명의 하나의 실시형태에 따라 데이터를 디코딩하기 위해 사용된 디코딩 매트릭스를 도시한다.
도 3 은 본 발명의 하나의 실시형태에 따른 디코더의 블록도를 도시한다.
도 4 는 본 발명의 하나의 실시형태에 따른 조기 검출 모듈의 블록도를 도시한다.
도 5 는 본 발명의 하나의 실시형태에 따른 조기 종료 검출의 프로세스를 도시하는 상태도이다.
도 6 은 본 발명의 하나의 실시형태에 따른 디코딩 프로세스 및 조기 종료 검출 프로세스를 위한 타이밍들을 도시하는 타이밍도이다.
도 7 은 본 발명의 하나의 실시형태에 따른 조기 종료 검출을 갖는 디코딩 프로세스를 도시하는 흐름도이다.
도 8 내지 도 10 은 본 발명의 여러 실시형태에 따른 조기 검출 모듈들의 블록도들을 도시한다.
소정의 실시형태들이 기술되지만, 이들 실시형태들은 단지 예로써 제시되며, 보호의 범위를 제한하는 것으로 의도되지 않는다. 실제로, 여기에 기술된 신규의 방법들 및 시스템들은 다양한 다른 형태들로 구현될 수도 있다. 더욱이, 여기에 기술된 방법들 및 시스템들의 형태에 있어서의 여러 생략들, 치환들, 및 변경들이 보호의 범위로부터 일탈하지 않고 행해질 수도 있다.
개관
고체 상태 드라이브들과 같은 데이터 스토리지 시스템들은 통상적으로 하나 이상의 비휘발성 메모리 어레이들과 커플링된 하나 이상의 제어기들을 포함한다. 사용되는 비휘발성 메모리 어레이의 타입에 따라, 저장된 데이터는 예를 들어 판독/기입 방해들, 데이터 보유의 손실, 및/또는 내구성의 손실의 결과로서 변질될 수도 있다. 데이터 스토리지 시스템들은 저장된 데이터에서의 에러들을 검출 및/또는 정정하기 위해 하나 이상의 에러 정정 또는 에러 코딩 메커니즘들을 이용할 수 있다. 하나의 그러한 메커니즘은 사용자 데이터를 기입할 때 패리티 데이터와 같은 패리티 데이터를 결정할 수 있다. 패리티 데이터는 예를 들어 메모리 어레이 내에 저장될 수 있다. 저장된 사용자 데이터를 취출하는 경우, 패리티 데이터는 취출된 사용자 데이터의 무결성을 결정하기 위해 디코딩 프로세스의 부분으로서 이용될 수 있다. 하나 이상의 에러들이 검출되는 경우, 그러한 에러들은 정정될 수도 있다.
데이터의 반복적인 디코딩은 프로세싱 시간 오버헤드, 시스템 자원 오버헤드, 및/또는 시스템 컴포넌트 오버헤드 (예를 들어, 추가적인 하드웨어, 펌웨어 등을 사용할 필요성) 과 같은 고려가능한 시스템 오버헤드를 수반할 수 있다. 이에 따라, 반복 디코딩 조기에 종료하는 것은 데이터 스토리지 시스템들에 대한 상당한 전력 및/또는 프로세싱 시간 절약들을 제공할 수 있다. 게다가, (예를 들어, 메모리 어레이에) 패리티 데이터를 저장하는 것은 사용자 데이터의 저장을 위해 이용가능한 메모리 공간을 감소시킬 수 있다. 따라서, 데이터 스토리지 시스템이 상이한 에러 코드 레이트들, 코드 길이들, 및/또는 상이한 코딩 스루풋 속도들을 지원하는 것이 또한 이로울 수 있다. 예를 들어, 데이터 스토리지 시스템은 비휘발성 메모리가 라이프사이클에 있어서 조기에 있고 따라서 상대적으로 더 높은 보유 및/또는 내구성을 갖는 경우 더 적은 패리티 데이터가 사용되도록 상대적으로 더 높은 코딩 레이트를 가지는 저장된 데이터를 디코딩할 수 있다. 비휘발성 메모리가 시간의 경과에 따라 마모됨에 따라, 데이터 스토리지 시스템은 사용자 데이터를 에러들로부터 보호하기 위해 더 많은 패리티 데이터가 생성되도록 더 낮은 코딩 레이트들을 디코딩하는 것으로 스위치할 수 있다. 그러나, 다수의 코드 레이트들, 길이들, 및/또는 스루풋 속도들을 지원하는 것은 시스템 컴포넌트들 (하드웨어, 펌웨어 등) 을 추가하는 것 및/또는 중복하는 것을 요구할 수 있으며, 이는 전력 소비 및 프로세싱 시간을 증가시킬 수 있다.
본 발명의 실시형태들은 조기 디코딩 종료 검출을 갖는 디코더에 지향된다. 하나의 실시형태에서, 그 디코더는 시스템 컴포넌트들의 통상의 중복을 사용하거나 어떠한 중복도 사용하지 않고, 다수의 에러 코드 레이트들 및/또는 에러 코드 길이들을 지원하면서 조기 디코딩 종료 검출을 수행할 수 있다. 예를 들어, 디코더의 조기 검출 모듈은 현존하는 검출 컴포넌트들이 여러 코드 레이트들 및/또는 길이들을 지원하기 위해 사용 및/또는 재사용될 수 있도록 구성될 수 있다. 조기 검출 모듈은 또한 예를 들어 병렬 컴퓨테이션 기법들을 이용함으로써 다수의 에러 코딩 스루풋 속도들을 지원할 수 있다. 즉, 조기 검출 모듈의 아키텍쳐는 스케일링가능하고 및/또는 유연할 수 있다. 이에 따라, 디코딩 효율 및, 결과적으로 데이터 스토리지 시스템 성능은 데이터 디코딩에서의 시스템 컴포넌트들의 수 및/또는 사이즈에서의 실질적인 증가 없이 증가될 수 있다. 게다가, 전력 소비 및 데이터 프로세싱 시간은 데이터를 디코딩하는 반복들의 수를 감소시킴으로써 감소될 수 있다.
시스템 개관
도 1 은 본 발명의 하나의 실시형태에 따른 조기 디코딩 종료 검출을 갖는 디코더를 구현하는 호스트 시스템 (110) 및 데이터 스토리지 시스템 (120) 의 결합 (100) 을 도시한다. 도시된 바와 같이, 데이터 스토리지 시스템 (120) (예를 들어, 하이브리드 하드 드라이브, 고체 상태 드라이브 등) 은 제어기 (130) 및 스토리지 매체 (140) 를 포함한다. 스토리지 매체 (140) 는 플래시 집적 회로들, 칼코게나이드 RAM (C-RAM), 상 변화 메모리 (PC-RAM 또는 PRAM), 프로그램가능 금속화 셀 RAM (PMC-RAM 또는 PMCm), OUM (Ovonic Unified Memory), 저항 RAM (RRAM), NAND 메모리 (예를 들어, 단일 레벨 셀 (SLC) 메모리, 다중 레벨 셀 (MLC) 메모리, 또는 이들의 임의의 조합), NOR 메모리, EEPROM, 강유전성 메모리 (FeRAM), 자기저항성 RAM (MRAM), 다른 이산 NVM (non-volatile memory) 칩들, 또는 이들의 임의의 조합과 같은 비휘발성 메모리의 어레이를 포함할 수도 있다. 일부 실시형태들에서, 데이터 스토리지 시스템 (120) 은 하나 이상의 자기적 매체 스토리지 모듈들 또는 다른 타입들의 스토리지 모듈들과 같은 다른 타입들의 스토리지를 더 포함할 수 있다.
제어기 (130) 는 호스트 시스템 (110) 의 스토리지 인터페이스 모듈 (112) (예를 들어, 디바이스 드라이버) 로부터 데이터 및/또는 스토리지 액세스 커맨드들을 수신하도록 구성될 수 있다. 스토리지 인터페이스 모듈 (112) 에 의해 통신된 스토리지 액세스 커맨드들은 호스트 시스템 (110) 에 의해 발행된 데이터 기입 및 데이터 판독 커맨드들을 포함할 수 있다. 판독 및 기입 커맨드들은 데이터 스토리지 시스템 (120) 에 액세스하기 위해 사용되는 로지컬 어드레스 (예를 들어, 로지컬 블록 어드레스들 또는 LBA 들) 를 특정할 수 있다. 제어기 (130) 는 스토리지 매체 (140) 내의 수신된 커맨드들을 실행할 수 있다.
데이터 스토리지 시스템 (120) 은 호스트 시스템 (110) 에 의해 통신된 데이터를 저장할 수 있다. 즉, 데이터 스토리지 시스템 (120) 은 호스트 시스템 (110) 을 위한 메모리 스토리지로서 작용할 수 있다. 이러한 기능을 용이하게 하기 위해, 제어기 (130) 는 로지컬 인터페이스를 구현할 수 있다. 로지컬 인터페이스는 사용자 데이터가 저장될 수 있는 로지컬 어드레스들 (예를 들어, 인접하는 어드레스) 의 세트로서의 데이터 스토리지 시스템 메모리를 호스트 시스템 (110) 에 제공할 수 있다. 내부적으로, 제어기 (130) 는 로지컬 어드레스들을 스토리지 매체 (140) 및/또는 다른 스토리지 모듈들 내의 여러 물리적 로케이션들 또는 어드레스들로 맵핑할 수 있다.
제어기 (130) 는 각각 스토리지 매체 (140) 내에 저장되고 스토리지 매체 (140) 로부터 취출되는 데이터를 디코딩하고 인코딩하도록 구성된 디코더 모듈 (132) 및 인코더 모듈 (134) 을 포함한다. 디코더 모듈 (132) 은 또한 스토리지 매체 (140) 로부터 취출된 데이터의 무결성을 결정하고, 필요하다면 취출된 데이터의 에러 정정을 수행할 수 있다. 일부 실시형태들에서, 스토리지 매체 (140) 가 라이프사이클의 조기에 있고, 따라서 상대적으로 더 높은 보유 및/또는 내구성을 갖는 경우, 제어기 (130) 는 더 적은 패리티 데이터가 사용되도록 인코더 모듈 (134) 에게 상대적으로 더 높은 코딩 레이트를 사용하여 데이터를 인코딩하도로 지시할 수 있다. 스토리지 매체 (140) 가 시간의 경과에 따라 마모됨에 따라, 제어기 (130) 는 인코더 모듈 (134) 에게 사용자 데이터를 에러들로부터 보호하기 위해 더 많은 패리티 데이터가 생성되도록 더 낮은 인코딩 레이트들로 스위칭하도록 지시할 수 있다. 제어기 (130) 는 디코더 모듈 (132) 이 인코딩된 데이터를 디코딩하기 위해 이후에 정보에 액세스할 수 있도록 스토리지 매체 (140) 또는 다른 스토리지 모듈 (도시하지 않음) 에 인코딩된 데이터에 대한 코딩 레이트들을 저장할 수 있다.
저밀도 패리티 체크 ( LDPC ) 코딩의 개관
하나의 실시형태에서, 디코더 모듈 (132) 및 인코더 모듈 (134) 은 각각 패리티 데이터를 디코딩 및/또는 생성하기 위해 저밀도 패리티 체크 (LDPC) 코드들을 이용할 수 있다. LDPC 코드들은 디코딩 매트릭스 H 를 사용하여 디코딩되고 대응하는 생성 매트릭스 G 를 사용하여 생성될 수 있다.
도 2 는 본 발명의 하나의 실시형태에 따라 데이터를 디코딩하기 위해 사용된 디코딩 매트릭스 (200) 를 도시한다. 디코딩 매트릭스 (200) 는 H 가 쿼시사이클릭 (QC) LDPC 매트릭스이기 때문에 4 의 열 가중치 (즉, 계층들 H1, H2, H3, 및 H4 로서 지칭될 수도 있는 4 개의 층들) 를 갖고 P 서브 매트릭스들로 지칭될 수도 있는 서브 매트릭스들 (202, 204, 206, 및 208) 과 같은 다수의 서브 매트릭스들을 포함하는 예시의 디코딩 매트릭스 H 를 나타낸다. 열 가중치는 다른 타입들의 H 매트릭스들이 사용되는 경우 변할 수도 있다. 다수의 서브 매트릭스들은 각각 P 비트들 x P 비트들의 사이즈를 가질 수도 있다. P 는 예를 들어 128, 256, 350, 512, 1024 등과 같은 정수 값일 수도 있다. 다수의 서브 매트릭스들은 값들 만큼 회전된 단위 매트릭스들일 수 있으며, 여기서 하나의 서브 매트릭스의 각 행은 열들의 동일한 수 만큼 시프트 또는 회전된다 (예를 들어, 각 서브 매트릭스는 순환 매트릭스일 수 있다). 디코딩 매트릭스 (200) 는 또한 행 가중치를 갖는다. 행 가중치는 QC-LDPC 매트릭스의 경우에 계층당 서브 매트릭스들의 수와 동일할 수 있다. 다른 경우들은 사용된 매트릭스들의 타입에 따라 상이한 행 가중치를 가질 수도 있다. 일부 실시형태들에서, 디코딩 매트릭스 (200) 는 NULL 서브 매트릭스를 포함하지 않을 수도 있다. 디코딩 매트릭스 (200) 가 4 와 동일한 열 가중치를 갖도록 도시되지만, 일부 실시형태들에서, 디코딩 매트릭스 (200) 는 예를 들어 3 또는 5 와 동일한 열 가중치와 같이 4 보다 작거나 큰 열 가중치를 가질 수 있다. 각각의 상이한 디코딩 매트릭스 사이즈는 패리티의 상이한 양들을 갖는 데이터 유닛들의 디코딩에 대응하고 그 디코딩을 가능하게 할 수있다.
디코딩 매트릭스 (200) 는 레이어드 (layered) 반복 쿼시사이클릭 LDPC 디코딩에서 사용될 수 있으며, 여기서 레이어드 접근법 또는 레이어 디코딩 동작들이 스토리지 매체로부터 취출된 데이터를 디코딩하는데 사용된다. 취출된 데이터는 다수의 코드 워드 길이들 중 하나와 동일한 길이를 갖는 부분들에서, 디코더 모듈 (132) 과 같은 디코더로 입력될 수 있다. 디코딩 매트릭스의 행 가중치는 디코딩 매트릭스 내의 서브 매트릭스들의 수의 면에서 인코딩된 데이터를 위한 코드 워드 길이와 동일할 수 있다. 데이터를 디코딩하기 위해 사용되는 디코딩 매트릭스의 P 서브 매트릭스 사이즈 또는 열 가중치를 변경함으로써, 상이한 코드 레이트들을 갖는 데이터가 디코딩될 수 있다. 데이터를 디코딩하기 위해 사용되는 디코딩 매트릭스의 행 가중치를 변경함으로써, 상이한 메모리 페이지 포맷들에 대한 데이터가 코딩될 수 있다. 일부 실시형태들에서, 데이터를 디코딩하기 위해 사용되는 코드 워드 길이는 데이터 스토리지 시스템 (120) 과 같은 데이터 스토리지 시스템의 메모리의 NAND 플래시 페이지 사이즈 또는 E-페이지 사이즈 (예를 들어, 비휘발성 메모리 어레이에 대한 메모리의 정의된 그룹핑 또는 에러 정정 코드 페이지 사이즈) 에 의존할 수 있다.
디코딩 매트릭스 (200) 는 최소 합산 (min-sum) 알고리즘을 푸는데 사용될 수 있다. 최소 합산 알고리즘의 부분으로서, Rmj 는 체크 노드 m 으로부터 변수 노드 j 로 전송된 체크 노드 로그-가능성 비 (LLR) 메시지를 표시하도록 정의될 수도 있다. L(qmj) 는 변수 노드 j 로부터 체크 노드 m 으로 전송된 변수 노드 LLR 메시지를 포시하도록 정의될 수도 있다. L(qj)(j=1,...,N) 는 변수 노드들에 대해 사후 확률 비 (APP 메시지들) 을 나타내도록 정의될 수도 있다. APP 메시지들은 코딩된 비트 j 의 대응하는 사전 (채널) 신뢰성 값으로 초기화될 수 있다. 디코딩 매트릭스 (200) 의 현재의 수평 계층의 각 변수 노드 j 에 대해, 특정의 체크 방정식 m 에 대응하는 메시지들 L(qmj) 은 방정식 1 에 따라 컴퓨팅된다.
Figure 112015114780203-pct00001
각각의 체크 노드 m 에 대해, 패리티 체크 방정식에 참여하는 모든 변수 노드들 j 에 대응할 수 있는 메시지 Rmj 는 식 2 에 따라 컴퓨팅될 수 있다.
Figure 112015114780203-pct00002
현재의 수평 계층에서의 사후 확률 APP 메시지들은 식 3 에 따라 업데이트될 수 있다.
Figure 112015114780203-pct00003
L(qj), j=1,..., N 의 부호에 기초하여 디코딩 매트릭스 (200) 의 각 수평 계층을 프로세싱한 후 결정이 행해질 수 있다. 모든 패리티 체크 방정식들이 만족되면, 디코딩 알고리즘은 정지할 수도 있다. 그렇지 않으면, 식들 1, 2 및 3 의 최소 합산 알고리즘은 다음의 수평 계층에 대해 반복될 수 있다.
일부 실시형태들에서, 데이터가 디코딩 매트릭스 (200) 의 하나의 수평 계층을 사용하여 성공적으로 디코딩되었는지를 결정하기 위해 사용된 패리티 체크 방정식은 식 4 일 수 있다.
Figure 112015114780203-pct00004
식 4 는 데이터 부분 또는 코드 워드 C 와 디코딩 매트릭스 (200) 의 하나의 수평 계층 Hn 의 전치 행렬의 매트릭스 곱을 포함한다. 식 4 의 패리티 체크는 매트릭스 곱의 결과가 제로인 경우 만족될 수 있고, 따라서 데이터 부분 C 는 결과가 제로인 경우 하나의 수평 계층 Hn 을 사용하여 성공적으로 디코딩되었을 수도 있다.
디코딩 매트릭스 (200) 는 또한 최소 합산 알고리즘을 반복적으로 푸는데 사용될 수 있다. 그 디코딩 알고리즘은 디코딩 매트릭스 (200) 의 모든 층들에 대해 한번 수행될 수 있다 (예를 들어, 디코딩 알고리즘의 하나의 반복이 수행될 수 있다). 하나 이상의 패리티 체크 방정식들이 적어도 하나의 계층에 대해 만족되지 않는 경우, 디코딩 알고리즘은 다시 반복될 수 있다 (예를 들어, 디코딩 알고리즘의 다른 반복이 수행될 수 있다). 추가적으로 또는 대안적으로, 디코딩 알고리즘은 디코딩 매트릭스 (200) 의 연속적으로 프로세싱되는 계층들 (예를 들어, 하나의 반복의 일부 계층들 및 다른 반복의 일부 계층들, 또는 하나의 반복의 모든 계층들) 에 대해 수행될 수 있다. (1) 하나 이상의 패리티 체크 방정식들이 연속적으로 프로세싱되는 계층들 중 적어도 하나의 계층에 대해 만족되지 않거나, (2) 코드 워드 C 가 대응하는 연속적으로 프로세싱되는 계층들의 프로세싱 동안 변경된 경우, 디코딩 알고리즘이 다시 수행될 수 있다. 또한, 디코딩 알고리즘은 반복들의 미리결정된 최대 수가 도달될 때까지 추가적으로 또는 대안적으로 수행될 수 있다. 반복들의 최대 수는 예를 들어 데이터를 성공적으로 디코딩하기 위해 이력적으로 사용된 반복들의 수, 원하는 스루풋, 또는 전력 제약들에 기초하여 결정될 수도 있다.
조기 디코딩 종료 검출을 갖는 디코더
도 3 은 본 발명의 하나의 실시형태에 따른 디코더 (300) 의 블록도를 도시한다. 디코더 (300) 는 쿼시-사이클릭 저밀도 패리티 체크 (LDPC) 디코더와 같은 쿼시사이클릭 디코더일 수 있다. 디코더 (300) 는 도 1 의 디코더 모듈 (132) 에 대응할 수도 있다. 디코더 (300) 는 디코더 (300) 의 컴포넌트들의 동작들뿐 아니라, 데이터 교환 및 반복 제어를 관리할 수 있는 디코더 제어기 (360) 를 포함한다. 일부 실시형태들에서, 디코더 제어기 (360) 는 도 1 의 제어기 (130) 와는 별도의 더 낮은 레벨 제어기일 수도 있다. 다른 실시형태들에서, 디코더 제어기 (360) 는 제어기 (130) 의 부분일 수 있다.
디코더 (300) 는 디코딩 유닛 A (320a), 디코딩 유닛 B (320b), 디코딩 유닛 C (320c), 및 디코딩 유닛 D (320d) (집합적으로, 디코딩 유닛들 (320)) 를 포함하는 다수의 디코딩 유닛들 및 소프트 값 생성 모듈 (310) 을 포함한다. 소프트 값 생성 모듈 (310) 은 스토리지 매체로부터 취출된 코딩된 데이터를 수신하고 디코딩 유닛들 (320) 에 대한 입력들로서 소프트 값들 (예를 들어, 로그-가능성 값들 또는 스케일링된 값들) 을 생성할 수 있다. 일부 실시형태들에서, 소프트 값 생성 모듈 (310) 은 상이한 조건들 (예를 들어, 조정된 전압 판독 임계값) 로 동일한 메모리 페이지를 다수회 판독함으로써 소프트 값들을 구성한다. 다수의 판독 결과들은 최종 고정 포인트가 1 또는 0 의 확률을 나타내도록 하는 방식으로 결합될 수 있다. 또한, 일부 실시형태들에서, 소프트 값 생성 모듈 (310) 은 디코딩 유닛들 (320) 로 이진 입력들을 추가적으로 또는 대안적으로 제공할 수 있다. 소프트 값 생성 모듈 (310) 은 프로세싱을 위해 디코딩 유닛들 (320) 로 다수의 코드 워드 길이들 중 하나를 갖는 데이터 유닛들을 입력할 수도 있다. 각각의 디코딩 유닛은 소프트 값 생성 모듈 (310) 로부터 수신된 데이터 유닛의 일부 또는 전체 데이터 유닛을 저장하기 위한 하나 이상의 메모리들 (도시하지 않음) 을 포함할 수도 있다.
디코딩 유닛들 (320) 은 예를 들어 식들 1, 2, 및 3 에 기초하여 최소 합산 알고리즘에 따라 데이터 유닛들을 반복적으로 디코딩하도록 구성될 수 있다. 디코딩 유닛들 (320) 은 다수의 코드 워드 길이들 또는 프로세싱 유닛 길이들 중 하나를 사용하여 인코딩되는 데이터 유닛들을 디코딩할 수 있다. 디코딩 유닛들 (320) 은 디코딩 매트릭스 (200) 과 같은 다수의 디코딩 매트릭스들 중 하나를 사용하여 계층 디코딩 동작들을 수행하기 위해 회전-좌측/우측 시프터 (330) 및 시프트 제어 모듈 (340) 과 협력하여 동작할 수 있다. 각각의 계층을 사용하여 디코딩하거나 각각의 계층 디코딩 동작을 수행한 후, 디코딩 유닛들 (320) 은 각 계층에 대한 글로벌 최소값 (예를 들어, 최소값들 중의 최소값) 을 결정하기 위해 최소 합산 알고리즘으로부터 각 계층에 대한 최소 계산된 값을 결정할 수 있다. 계층들에 대한 글로벌 최소값들은 그 후 모든 계층들에 대한 최저의 또는 글로벌 최소값을 결정하기 위해 비교될 수 있다. 디코딩 유닛들 (320) 은 예를 들어 디코딩 프로세스 동안 최소 계산된 값들 또는 데이터를 저장하기 위해 하나 이상의 작업 메모리들 (도시하지 않음) 을 포함할 수 있다.
디코딩 유닛들 (320) 은 대응하는 디코딩 매트릭스의 서브셋들을 사용하여 병렬로 또는 실질적으로 병렬로 데이터 유닛의 서브셋들을 디코딩하도록 구성될 수 있다. 일부 실시형태들에서, 디코딩 유닛들 (320) 은 각각 디코더 (300) 에 의해 지원되는 디코딩 매트릭스의 가장 작은 P 서브 매트릭스 사이즈의 사이즈에 대응하는 클럭 사이클 당 소프트 값들 또는 비트들의 프로세싱 능력을 가질 수 있다. 예를 들어, 디코딩 유닛들 (320) 은 지원되는 가장 작은 P 서브 매트릭스 사이즈의 사이즈가 각각 256 비트들 x 256 비트들, 512 비트들 x 512 비트들, 또는 1024 비트들 x 1024 비트들인 경우 클럭 사이클 당 데이터 유닛의 256 소프트 값들, 512 소프트 값들, 또는 1024 소트프 값들 서브셋들을 각각 프로세싱할 수 있다. 디코딩 유닛들 (320) 은 각각의 계층에 대한 최소 계산된 값의 병렬 디코딩 및 결정을 용이하게 하기 위해, 데이터 유닛의 하나의 계층의 서브셋들을 디코딩하는 것으로부터 로컬 결정된 최소값들과 같은, 계층 디코딩 동작의 부분으로서 결정된 값들을 공유할 수도 있다. 일부 실시형태들에서, 하나 이상의 디코딩 유닛들 (320) 은 하나의 길이를 갖고 다른 길이는 갖지 않는 데이터 유닛을 프로세싱할 때 값들을 공유한다.
회전-좌측/우측 시프터 (330) 는 시프트 제어 모듈 (340) 로부터의 명령들에 따라 데이터 유닛들의 일부들의 소프트 값들 또는 비트들을 (예를 들어, 좌측으로 또는 우측으로) 시프트 또는 회전시키도록 구성될 수 있다. 시프트 제어 모듈 (340) 은 특정의 데이터 유닛들을 디코딩하기 위해 메모리 (도시하지 않음) 로부터 대응하는 디코딩 매트릭스를 결정하거나 또는 룩업할 수 있다. 대응하는 디코딩 매트릭스에 기초하여, 시프트 제어 모듈 (340) 은 회전-좌측/우측 시프터 (330) 에게 특정의 입도 (granularity) 를 사용하여 데이터 유닛들을 프로세싱하고 데이터 유닛들을 디코딩하기 위해 사용되는 디코딩 매트릭스의 서브 매트릭스들의 사이즈 및 컨텐츠들에 기초하여 데이터 유닛들의 일부분들을 소정 양 시트프하도록 지시할 수 있다 (예를 들어, 단위 매트릭스의 P 서브 매트릭스 사이즈 및 회전). 일부 실시형태들에서, 회전-좌측/우측 시프터 (330) 는 시프트 레지스터들의 구성가능한 베네스 (Benes) 네트워크 또는 그룹일 수 있고, 회전-좌측/우측 시프터 (330) 는 예를 들어 적어도 256 소프트 값들, 512 소프트 값들, 및 1024 소프트 값들의 입력 데이터 사이즈들을 지원할 수도 있다. 그러한 실시형태들에서, 베네스 네트워크는 또한 더 큰 베네스 네트워크로서 기능하기 위해 서로 연결된 하나 이상의 더 작은 베네스 네트워크들을 포함할 수 있다. 회전-좌측/우측 시프터 (330) 의 일부 예시의 동작들에서, 회전-좌측/우측 시프터 (330) 는 256 소프트 값들, 512 소프트 값들, 또는 1024 소프트 값들의 사이즈를 갖는 데이터 유닛 부분들을 시프트할 수 있다. 아래에 보여주는 회전-좌측/우측 시프터 (330) 의 간단한, 설명적인 예시의 동작에서, 회전-좌측/우측 시프터 (330) 는 디코딩 매트릭스의 서브 매트릭스의 컨텐츠에 기초하여 1 비트 x 6 비트들 매트릭스의 각 행을 우측으로 한 열 시프트할 수 있다.
Figure 112015114780203-pct00005
회전-좌측/우측 시프터 (330) 는 비록 회전-좌측/우측 시프터 (330) 가 고정된 클럭 사이클당 능력을 가질 수도 있지만, 디코딩 매트릭스 서브 매트릭스 사이즈에 대응하는 상이한 사이즈들 또는 입도들을 갖는 데이터 유닛 부분들을 시프트할 수 있다. 시프트 제어 모듈 (340) 은 회전-좌측/우측 시프터 (330) 에게 회전-좌측/우측 시프터 (330) 에 의해 프로세싱된 데이터의 상이한 부분들을 상이한 회전 유닛들로서 고려하도록 지시할 수도 있다. 이것에 의해, 시프트 제어 모듈 (340) 은 독립적으로 데이터의 상이한 부분들의 시프팅을 지시할 수 있다. 이하에 도시되는 회전-좌측/우측 시프터 (330) 의 다른 간단한 설명적 예시의 동작에서, 회전-좌측/우측 시프터 (330) 는 디코딩 매트릭스의 2 개의 서브 매트릭스들의 컨텐츠들에 기초하여 2 개의 1 비트 x 3 비트들 매트릭스들을 1 열 우측으로 독립적으로 시프트할 수 있다.
Figure 112015114780203-pct00006
디코딩 유닛들 (320) 은 조기 검출 모듈 (350) 로 하나 이상의 계층 디코딩 동작들로부터의, 디코딩된 데이터와 같은 결과들을 출력할 수 있다. 조기 검출 모듈 (350) 은 식 4 의 패리티 체크와 같은 패리티 체크 방정식이 디코딩 매트릭스의 하나 이상의 계층들 및 그 결과들에 의해 만족되는지 여부에 적어도 부분적으로 기초하여 데이터 유닛을 디코딩하는 추가의 반복들을 종료할지 여부를 결정할 수 있다. 조기 검출 모듈 (350) 은 디코딩 유닛들 (320) 에 의한 디코딩을 정지하기 위해 디코딩 유닛들 (320) 과 병렬로 또는 실질적으로 병렬로 동작할 수 있다. 패리티 체크 방정식들은 데이터가 인코딩되기 전의 데이터의 원래의 순서 이외의 회전된 순서에 디코딩된 데이터가 존재하는 동안 평가될 수도 있다. 또한, 조기 검출 모듈 (350) 은 데이터가 인코딩되기 전에 데이터의 원래의 순서로 디코딩된 데이터를 다시 회전시키기 위해 사용될 수 있다. 일부 실시형태들에서, 조기 검출 모듈 (350) 은 하나 이상의 조기 검출 서브모듈들을 포함할 수 있고, 여기서 각 서브모듈은 병렬로 또는 실질적으로 병렬로 디코딩 매트릭스의 하나의 계층 및 그 결과들을 프로세싱할 수 있다.
일부 실시형태들에서, 디코딩 유닛들 및/또는 조기 검출 서브모듈들의 수는 원하는 스루풋에 따라 선택될 수 있다. 예를 들어, 디코더 유닛들의 수는 1, 2, 3, (도 3 에 도시된 바와 같이) 4 등일 수 있다. 유사하게, 조기 검출 서브모듈들의 수는 (도 3 에 도시된 바와 같이) 1, 2, 3, 또는 4 등일 수 있다. 하나의 실시형태에서, 디코더 유닛들 및/또는 조기 검출 서브모듈들의 수의 상한은 디코딩 유닛들 (320), 회전-좌측/우측 시프터 (330), 또는 조기 검출 모듈 (350) 중 하나 이상에 의해 지원되는 하나 이상의 디코딩 매트릭스들 내의 서브매트릭스들의 수로서 선택될 수 있다. 게다가, 일부 실시형태들에서, 회전-좌측/우측 시프터 (330) 는 조기 검출 모듈 (350) 에 의한 조기 종료 검출을 용이하게 하기 위해 조기 검출 모듈 (350) 로 시프트된 데이터 유닛 부분들을 출력할 수 있다.
도 4 는 발명의 하나의 실시형태에 따른 도 3 의 조기 검출 모듈 (350) 의 블록도를 도시한다. 조기 검출 모듈 (350) 은 패리티 체크 모듈 (410), 회전 모듈 (420), 데이터 비교 모듈 (430), 및 출력 버퍼 모듈 (440) 을 포함할 수 있다. 조기 검출 모듈 (350) 은 디코딩 매트릭스를 사용하여 각 계층 디코딩 동작 또는 하나 이상의 계층 디코딩 동작들의 결과들에 기초하여 조기 종료 검출을 수행할 수 있다. 결과적으로, 조기 검출 모듈 (350) 은 하나 이상의 계층 디코딩 동작들 후에 데이터 유닛을 디코딩하는 것을 정지할 수 있고, 일단 데이터 유닛이 임계 신뢰도 (예를 들어, 50%, 75%, 90%, 99% 또는 99.99% 신뢰성 등) 로 디코딩되었을 수도 있거나 성공적으로 디코딩되었을 수도 있다면, 이롭게도 데이터의 디코딩의 조기 종료를 가능하게 할 수도 있다. 디코딩의 종료는 계층 디코딩 동자들의 수 및 데이터를 디코딩하기 위해 수행되는 반복들을 감소시킬 수 있다.
패리티 체크 모듈 (410) 은 도 3 의 디코딩 유닛들 (320) 로부터 디코딩된 데이터를 수신하고 그 디코딩된 데이터에 대한 배타적-오어 (exclusive-or) 동작을 수행할 수 있다. 그 배타적-오어 동작에 기초하여, 패리티 체크 모듈 (410) 은 예를 들어 디코딩 매트릭스의 계층 및 디코딩된 데이터가 식 4 와 같은 패리티 체크 방정식을 만족시키는 지 여부에 대한 표시를 제공하도록 구성된 플래그를 설정할 수 있다. 플래그는 디코딩된 데이터가 소정의 신뢰도로 디코딩될 수도 있거나 성공적으로 디코딩될 수도 있는지 여부 및 데이터 유닛의 디코딩을 종료할지 여부를 결정하기 위해 조기 검출 모듈 (350) 의 하나 이상의 다른 컴포넌트들에 의해 사용될 수 있다.
하나의 예에서, 패리티 체크 모듈 (410) 은 1 비트 x 1024 비트들의 능력을 가지며, 256 비트들 x 256 비트들의 사이즈를 갖는 서브 매트릭스들을 포함하는 디코딩 매트릭스를 프로세싱할 때 다음의 의사코드를 사용하여 동작할 수도 있다. 패리티 체크 모듈 (410) 은 이러한 예에서 클럭 사이클 당 디코딩된 데이터의 4 개의 1 비트 x 256 비트들 부분들을 프로세싱할 수 있다.
Figure 112015114780203-pct00007
다른 예에서, 패리티 체크 모듈 (410) 은 1 비트 x 1024 비트들의 능력을 가지며, 512 비트들 x 512 비트들의 사이즈를 갖는 서브 매트릭스들을 포함하는 디코딩 매트릭스를 프로세싱할 때 다음의 의사코드를 사용하여 동작할 수도 있다. 패리티 체크 모듈 (410) 은 이러한 예에서 클럭 사이클 당 디코딩된 데이터의 2 개의 1 비트 x 512 비트들 부분들을 프로세싱할 수 있다.
Figure 112015114780203-pct00008
또 다른 예에서, 패리티 체크 모듈 (410) 은 1 비트 x 1024 비트들의 능력을 가지며, 1024 비트들 x 1024 비트들의 사이즈를 갖는 서브 매트릭스들을 포함하는 디코딩 매트릭스를 프로세싱할 때 다음의 의사코드를 사용하여 동작할 수도 있다. 패리티 체크 모듈 (410) 은 이러한 예에서 클럭 사이클 당 디코딩된 데이터의 1 개의 1 비트 x 1024 비트들 부분들을 프로세싱할 수 있다.
Figure 112015114780203-pct00009
회전 모듈 (420) 은 도 3 의 디코딩 유닛들 (320) 로부터 디코딩된 데이터를 수신할 수 있다. 수신된 디코딩된 데이터가 디코딩 매트릭스로 디코딩하는 특정의 계층에 기초하는 순서로 회전될 수도 있기 때문에, 회전 모듈 (420) 은, 시프트 제어 모듈 (340) 의 제어하에서, 데이터 비교 모듈 (430) 에 의한 평가를 위해 수신된 데이터 부분들을 회전 또는 정렬할 수 있다. 회전 모듈 (420) 은 도 3 의 회전-좌측/우측 시프터 (330) 와 유사하게 기능할 수 있다. 회전 모듈 (420) 은 시프트 제어 모듈 (340) 로부터의 명령들에 따라 부분들을 시프트 또는 회전하도록 구성될 수 있다. 시프트 제어 모듈 (340) 은 데이터를 디코딩하기 위해 사용되었던 메모리 (도시하지 않음) 로부터 대응하는 디코딩 매트릭스를 결정 또는 룩업할 수 있다. 대응하는 디코딩 매트릭스에 기초하여, 시프트 제어 모듈 (340) 은 회전 모듈 (420) 에게 특정의 입도를 사용하여 데이터를 프로세싱하고 그 데이터를 디코딩하기 위해 사용되는 디코딩 매트릭스의 서브 매트릭스들의 컨텐츠 및 사이즈에 기초한 양만큼 그 데이터의 부분들을 시프트하도록 지시할 수 있다. 일부 실시형태들에서, 회전 모듈 (420) 은 시프트 레지스터들의 구성가능한 베네스 네트워크들 또는 그룹일 수 있고, 회전 모듈 (420) 은 예를 들어 적어도 1 비트 x 256 비트들, 1 비트 x 512 비트들, 및 1 비트 x 1024 비트들의 입력 매트릭스 사이즈들을 지원할 수도 있다. 그러한 실시형태들에서, 베네스 네트워크는 더 큰 베네스 네트워크로서 기능하도록 하기 위해 서로 연결된 하나 이상의 더 작은 베네스 네트워크들을 더 포함할 수 있다. 또, 회전 모듈 (420) 은 이전의 계층에 대한 현재의 계층의 회전 사이의 비교에 기초한 양들만큼 데이터의 부분들을 회전시킬 수 있다. 회전 모듈 (420) 의 하나의 예시의 동작에서, 회전 모듈 (420) 은 1 비트 x 256 비트들, 1 비트 x 512 비트들, 또는 1 비트 x 1024 비트들의 사이즈를 갖는 데이터 부분들을 시프트할 수 있다.
회전 모듈 (420) 은 비록 회전 모듈 (420) 이 고정된 클럭당 능력을 가질 수도 있지만, 디코딩 매트릭스 서브 매트릭스 사이즈에 대응하는 상이한 사이즈들 또는 입도들을 갖는 데이터 부분들을 시프트할 수 있다. 시프트 제어 모듈 (340) 은 회전 모듈 (420) 에게 회전 모듈 (420) 에 의해 프로세싱된 데이터의 상이한 부분들을 상이한 회전 유닛들로서 고려하도록 지시할 수도 있다. 이것에 의해, 시프트 제어 모듈 (340) 은 회전-좌측/우측 시프터 (330) 에 대해 논의된 바와 같이 독립적으로 데이터의 상이한 부분들의 시프팅을 지시할 수 있다. 일부 실시형태들에서, 도 4 의 조기 검출 모듈 (350) 의 시프트 제어 모듈 (340) 에 의해 수행된 시프트 제어 기능은 도 3 의 디코더 (300) 의 시프트 제어 모듈 (340) 이외의 시프트 제어기에 의해 수행된다.
데이터 비교 모듈 (430) 은 둘 이상의 상이한 계층 디코딩 동작들로부터 시프트된 디코딩된 데이터를 수신, 저장, 및 비교할 수 있다. 시프트된 디코딩된 데이터를 비교함으로써, 데이터 비교 모듈 (430) 은 둘 이상의 계층 디코딩 동작들로부터 디코딩된 데이터가 서로 동일하거나 상이한지 여부를 결정할 수 있다. 계층 디코딩 동작들로부터 디코딩된 데이터가 동일한 경우, 데이터 비교 모듈 (430) 은 디코딩된 데이터가 소정의 신뢰도로 디코딩될 수도 있거나 성공적으로 디코딩될 수도 있는지 여부를 결정하기 위해 이용가능한 하나 이상의 플래그들을 설정할 수 있다. 조기 검출 모듈 (350) 은 이에 따라 데이터 비교 모듈 (430) 에 의한 비교의 결과에 적어도 부분적으로 기초하여 조기에 데이터의 디코딩을 종료하기로 결정할 수 있다.
데이터 비교 모듈 (430) 은 출력 버퍼 모듈 (440) 로 시프트된 디코딩된 데이터를 출력할 수 있다. 출력 버퍼 모듈 (440) 은 차례로 단축 (shortening), 재정렬, 또는 다른 메모리로의 저장과 같은 프로세싱을 위해 디코딩된 데이터를 저장 및 출력할 수 있다.
일부 실시형태들에서, 데이터 비교 모듈 (430) 은 조기 검출 모듈 (350) 을 위해 조기 종료 결정을 행하고 출력 버퍼 모듈 (440) 로 디코딩된 데이터를 선택적으로 출력할 수 있다. 예를 들어, 데이터 비교 모듈 (430) 은, (1) 패리티 체크 모듈 (410) 이 디코딩 매트릭스의 하나 이상의 계층들 및 디코딩된 데이터가 패리터 체크 방정식을 만족시키고, (2) 데이터 비교 모듈 (430) 이 둘 이상의 계층 디코딩 동작들로부터의 디코딩된 데이터가 동일한 경우, 디코딩을 종료하기로 결정하고 출력 버퍼 모듈 (440) 로 디코딩된 데이터를 출력할 수 있다. 그러한 경우들에서, 데이터 비교 모듈 (430) 은 하나 이상의 플래그들을 설정함으로써 디코딩 유닛들 (320) 에게 데이터 유닛의 디코딩을 종료하고 다음 데이터 유닛의 디코딩을 시작하도록 표시할 수 있다. 또, 패리티 체크 모듈 (410) 또는 데이터 비교 모듈 (430) 은 데이터 유닛의 디코딩을 언제 종료할지를 결정하는 것을 용이하게 하기 위해 하나 이상의 결정들이 만족되는 연속적인 시간들의 수의 실행 카운트를 유지할 수 있다.
도 4 에 도시되지 않지만, 패리티 체크 모듈 (410) 과 같은 하나 이상의 추가적인 패리티 체크 모듈들, 또는 회전 모듈 (420) 과 같은 회전 모듈들이 조기 검출 모듈 (350) 내에 포함될 수 있다. 추가적인 모듈들은 추가적인 소프트웨어 및/또는 하드웨어의 희생으로 조기 검출 모듈 (350) 에 의한 디코딩된 데이터의 병렬 프로세싱을 용이하게 할 수 있다. 하나 이상의 추가적인 모듈을 포함하는 조기 검출 모듈들의 일부 예들은 도 8 내지 도 10 에 대해 더욱 상세하게 논의된다.
조기 디코딩 종료 검출 프로세스들
도 5 는 본 발명의 하나의 실시형태에 따른 조기 종료 검출의 프로세스 (500) 를 도시하는 상태도이다. 프로세스 (500) 는 도 2 의 디코딩 매트릭스 (200) 와 같은 4 개의 계층들을 갖는 디코딩 매트릭스에 대한 조기 종료 검출 프로세스, 및 조기 종료 검출 조건들의 하나의 예시의 세트를 도시하며, 그 조기 종료 검출 조건들은 (1) 패리티 체크가 연속적인 계층 디코딩 동작들의 x 수에 대해 만족되고 (2) 디코딩된 데이터 유닛 또는 코드 워드가 x-1 개의 연속적인 계층 디코딩 동작들에 대해 변경되지 않고 유지되는지 여부를 포함하며, 여기서 x 는 디코딩 매트릭스의 계층들의 총 수이다. 일부 실시형태들에서, 도 1 의 제어기 (130) 및/또는 디코더 모듈 (132) 은 프로세스 (500) 를 수행하도록 구성된다. 더욱 구체적으로는, 도 4 의 조기 검출 모듈 (350) 은 프로세스 (500) 를 수행하도록 구성될 수 있다.
상태 (505) 에서, 프로세스 (500) 는 하나의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛 및 디코딩 매트릭스의 대응하는 계층이 식 4 와 같은 패리티 체크 방정식을 만족하는지 여부를 결정한다. 디코딩 매트릭스의 대응하는 계층은 하나의 계층 디코딩 동작 동안 데이터 유닛을 디코딩하기 위해 사용되는 디코딩 매트릭스의 계층일 수 있다. 패리티 체크 방정식이 만족되지 않는 경우 (도 5 에서 FAILPARITY 로서 표시됨), 프로세스 (500) 는 상태 (505) 로 리턴한다. 다른 한편으로, 패리티 체크 방정식이 만족되는 경우 (도 5 에서 PASSPARITY 로서 표시됨), 프로세스 (500) 는 상태 (510) 로 이동한다.
상태 (510) 에서, 프로세스 (500) 는 다음의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛 및 디코딩 매트릭스의 대응하는 다음의 계층이 식 4 와 같은 패리티 체크 방정식을 만족하는지 여부뿐 아니라, 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일한지 여부를 결정한다. 다음의 계층 디코딩 동작은 디코딩 매트릭스를 사용하여 데이터 유닛을 디코딩하는 동일한 반복으로부터일 수도 있거나 아닐 수도 있다. 패리티 체크 방정식이 만족되지 않는 경우, 프로세스 (500) 는 상태 (505) 로 이동한다. 패리티 체크 방정식이 만족되고 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일하지 않는 경우 (도 5 에서 PASSPARITY AND FAILCODEWORD 로서 표시됨), 프로세스 (500) 는 상태 (510) 로 이동한다. 패리티 체크 방정식이 만족되고 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일한 경우 (도 5 에서 PASSPARITY AND PASSCODEWORD 로서 표시됨), 프로세스 (500) 는 상태 (515) 로 이동한다.
상태 (515) 에서, 프로세스 (500) 는 다른 다음의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛 및 디코딩 매트릭스의 대응하는 다른 다음의 계층이 식 4 와 같은 패리티 체크 방정식을 만족하는지 여부뿐 아니라, 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일한지 여부를 결정한다. 다른 다음의 계층 디코딩 동작은 하나 이상의 이전의 계층 디코딩 동작들과, 디코딩 매트릭스를 사용하여 데이터 유닛을 디코딩하는 동일한 반복으로부터일 수도 있거나 아닐 수도 있다. 패리티 체크 방정식이 만족되지 않는 경우, 프로세스 (500) 는 상태 (505) 로 이동한다. 패리티 체크 방정식이 만족되고 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일하지 않는 경우, 프로세스 (500) 는 상태 (510) 로 이동한다. 패리티 체크 방정식이 만족되고 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일한 경우, 프로세스 (500) 는 상태 (520) 로 이동한다.
상태 (520) 에서, 프로세스 (500) 는 후속하는 다음의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛 및 디코딩 매트릭스의 대응하는 후속하는 다음의 계층이 식 4 와 같은 패리티 체크 방정식을 만족하는지 여부뿐 아니라, 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일한지 여부를 결정한다. 후속하는 다음의 계층 디코딩 동작은 하나 이상의 이전의 계층 디코딩 동작들과, 디코딩 매트릭스를 사용하여 데이터 유닛을 디코딩하는 동일한 반복으로부터일 수도 있거나 아닐 수도 있다. 패리티 체크 방정식이 만족되지 않는 경우, 프로세스 (500) 는 상태 (505) 로 이동한다. 패리티 체크 방정식이 만족되고 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일하지 않는 경우, 프로세스 (500) 는 상태 (510) 로 이동한다. 패리티 체크 방정식이 만족되고 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 동일한 경우, 프로세스 (500) 는 종료하고 데이터 유닛의 디코딩이 종료될 수 있다.
도 6 은 본 발명의 하나의 실시형태에 따른 디코딩 프로세스 및 조기 종료 검출 프로세스를 위한 타이밍들을 도시하는 타이밍도 (600) 이다. 타이밍도 (600) 는 4 개의 계층들을 갖는 디코딩 매트릭스 H 를 사용하는 디코딩 및 조기 종료 검출을 도시한다. 디코딩 D1- 4 로서 라벨링된 타이밍도 (600) 의 부분은 도 3 의 디코딩 유닛들 (320) 과 같은 디코딩 유닛들에 의해 수행되는 디코딩 동작들에 대응한다. EDU (early detection unit) P 로서 라벨링된 타이밍도 (600) 의 부분은 도 4 의 패리티 체크 모듈 (410) 과 같은 패리티 체크 모듈에 의해 수행되는 조기 디코딩 종료 검출에 대응한다. EDU 상태로서 라벨링된 타이밍도 (600) 의 부분은 패리티 체크 방정식에 대한 조기 디코딩 종료 검출 결과들 및 특정의 계층 디코딩 동작에 대한 디코딩된 데이터 유닛에서의 변경에 대응한다. 일부 실시형태들에서, 도 1 의 제어기 (130) 및/또는 디코더 모듈 (132) 은 타이밍도 (600) 에 따라 프로세스를 수행하도록 구성된다. 더욱 구체적으로는, 도 4 의 조기 검출 모듈 (350) 은 타이밍도 (600) 에 따라 프로세스를 수행하도록 구성될 수 있다.
조기 검출 유닛은, 각각의 계층 디코딩 동작에 대해, (1) 식 4 와 같은 패리티 체크 방정식이 계층 디코딩 동작에 대해 만족되는 지 여부 및 (2) 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작의 디코딩된 데이터 유닛으로부터 변경되지 않았는지 여부를 결정하도록 구성될 수 있다. 일부 실시형태들에서, 양 조건들 (1) 및 (2) 가 만족되는 경우, 조기 검출 유닛은 조건들 (1) 및 (2) 의 만족들을 추적하기 위해 카운터를 증분할 수 있다. 하나 또는 양 조건들이 만족되지 않는 경우, 조기 검출 유닛은 카운터를 1 또는 제로로 설정할 수 있다. 카운터가 임계 카운트 값에 도달하는 경우, 카운터는 이것에 의해 데이터가 임계 신뢰도로 디코딩되었거나 성공적으로 디코딩되었다는 것을 표시할 수 있고, 데이터 유닛의 디코딩이 정지될 수 있고 다른 데이터 유닛의 디코딩이 시작될 수 있다. 카운터의 사용이 도 5 의 논의에 대해 설명되었지만, 하나 이상의 다른 접근법들이 다른 실시형태들에서 만족 결정들을 추적하기 위해 사용될 수 있다.
타이밍도 (600) 는 데이터 유닛을 디코딩하는 것의 적어도 반복들 i 및 i+1 을 도시한다. 디코딩 반복 i 는 디코딩된 데이터 유닛 C( i,1 ) 을 생성하기 위해 디코딩 매트릭스 H 의 계층 1 을 사용하여 데이터 유닛을 디코딩하는 하나의 계층 디코딩 동작을 수행함으로써 시작한다. 후속적으로, 반복 i 는 계층들 2, 3, 및 4 를 사용하여 데이터 유닛의 개별적, 연속적 디코딩으로 계속한다. 반복 i 의 완료 후, 데이터 유닛을 디코딩하는 다음의 반복 i+1 이 시작된다.
디코딩된 데이터 유닛 C( i,2 ) 을 생성하기 위해 반복 i 동안 계층 2 를 사용하여 데이터 유닛을 디코딩함과 실질적으로 병행하여, 조기 디코딩 종료 검출이 디코딩된 데이터 유닛 C( i,1 ) 및 계층 1 을 평가하는 것으로 시작된다. 그러나, 예시된 경우에서의 패리티 체크 방정식은 계층 1 에 대해 만족되지 않고 (예를 들어, C(i,1)·H1 T ≠ 0), 조기 디코딩 종료 검출 프로세스는 계속되며, 카운터는 제로로 설정될 수 있다. 디코딩된 데이터 유닛 C( i,3 ) 을 생성하기 위해 반복 i 동안 계층 3 을 사용하여 데이터 유닛을 디코딩하는 것과 실질적으로 병행하여, 조기 디코딩 종료 검출은 디코딩된 데이터 유닛 C( i,2 ) 및 계층 2 를 평가하는 것으로 계속된다. 이러한 경우의 패리티 체크 방정식은 또한 계층 2 에 대해 만족되지 않고 (예를 들어, C( i,2 )·H2 T ≠ 0), 따라서, 조기 디코딩 종료 검출 프로세스는 계속되며, 카운터는 제로로 설정된 채로 유지될 수 있다.
이전의 문단의 예로 계속하면, 디코딩된 데이터 유닛 C( i,4 ) 을 생성하기 위해 반복 i 동안 계층 4 를 사용하여 데이터 유닛을 디코딩함과 실질적으로 병행하여, 조기 디코딩 종료 검출이 디코딩된 데이터 유닛 C( i,3 ) 및 계층 3 을 평가하는 것으로 시작된다. 이러한 경우의 패리티 체크 방정식은 계층 3 에 대한 조기 디코딩 종료 검출에 대해 만족되고 (예를 들어, C( i,3 )·H3 T = 0), 따라서, 조기 디코딩 종료 검출 프로세스는 계속되며, 카운터는 1 로 증분될 수 있다. 디코딩된 데이터 유닛 C(i+1,1) 을 생성하기 위해 반복 i+1 동안 계층 1 을 사용하여 데이터 유닛을 디코딩하는 것과 실질적으로 병행하여, 조기 디코딩 종료 검출은 디코딩된 데이터 유닛 C( i,4 ) 및 계층 4 를 평가하는 것으로 계속된다. 이러한 경우의 패리티 체크 방정식은 계층 4 에 대한 조기 디코딩 종료 검출에 대해 만족되고 (예를 들어, C(i,4)·H4 T = 0), 디코딩된 데이터 유닛은 이전의 계층 디코딩 동작의 디코딩된 데이터 유닛으로부터 변경되지 않았고 (예를 들어, C( i,3 ) = C( i,4 )), 따라서, 조기 디코딩 종료 검출 프로세스는 계속되며, 카운터는 2 로 증분될 수 있다. 디코딩된 데이터 유닛 C(i+1,2) 을 생성하기 위해 반복 i+1 동안 계층 2 를 사용하여 데이터 유닛을 디코딩함과 실질적으로 병행하여, 조기 디코딩 종료 검출이 디코딩된 데이터 유닛 C(i+1,1) 및 계층 1 을 평가하는 것으로 계속된다. 이러한 경우의 패리티 체크 방정식은 계층 1 에 대한 조기 디코딩 종료 검출에 대해 만족되고 (예를 들어, C(i+1,1)·H1 T = 0), 디코딩된 데이터 유닛은 이전의 계층 디코딩 동작의 디코딩된 데이터 유닛으로부터 변경되지 않았고 (예를 들어, C( i,4 ) = C(i+1,1)), 따라서 조기 디코딩 종료 검출 프로세스는 계속되며, 카운터는 3 으로 증분될 수 있다. 디코딩된 데이터 유닛 C(i+1,3) 을 생성하기 위해 반복 i+1 동안 계층 3 을 사용하여 데이터 유닛을 디코딩하는 것과 실질적으로 병행하여, 조기 디코딩 종료 검출은 디코딩된 데이터 유닛 C(i+1,2) 및 계층 2 를 평가하는 것으로 계속된다. 이러한 경우의 패리티 체크 방정식은 계층 2 에 대한 조기 디코딩 종료 검출에 대해 만족되고 (예를 들어, C(i+1,2)·H2 T = 0), 디코딩된 데이터 유닛은 이전의 계층 디코딩 동작의 디코딩된 데이터 유닛으로부터 변경되지 않았고 (예를 들어, C(i+1,1) = C(i+1,2)), 따라서, 카운터는 4 로 증분될 수 있다. 일부 실시형태들에서, 카운터는 4 의 값을 저장하고 디코딩 코딩 H 매트릭스는 4 개의 계층들을 가지기 때문에, 디코딩된 데이터 유닛은 시간 Tok 에서 성공적으로 디코딩되도록 결정될 수 있다. 따라서, 다른 데이터 유닛이 다음에 동일하거나 상이한 디코딩 매트릭스의 계층 1 을 사용하여 디코딩될 수 있다.
도 7 은 본 발명의 하나의 실시형태에 따른 조기 종료 검출을 갖는 디코딩 프로세스 (700) 를 도시하는 흐름도이다. 일부 실시형태들에서, 도 1 의 제어기 (130) 및/또는 디코더 모듈 (132) 은 프로세스 (700) 를 수행하도록 구성된다. 더욱 구체적으로는, 도 4 및 도 8 내지 도 10 의 조기 검출 모듈 (350) 이 프로세스 (700) 를 수행하도록 구성될 수 있다.
블록 (705) 에서, 프로세스 (700) 는 데이터 유닛을 디코딩하는 것의 하나의 계층 디코딩 동작을 수행하고 카운터를 제로로 설정한다. 예를 들어, 도 3 의 디코딩 유닛들 (320) 은 도 2 의 디코딩 매트릭스 (200) 와 같은 디코딩 매트랙스의 하나 이상의 계층들을 사용하여 디코딩 유닛을 디코딩할 수 있다. 블록 (710) 에서, 프로세스 (700) 는 데이터 유닛을 디코딩하는 것의 다른 계층 디코딩 동작을 수행한다. 예를 들어, 디코딩 유닛들 (320) 은 다시 디코딩 매트릭스 (200) 의 하나 이상의 다음의 연속적인 계층들을 사용하여 데이터 유닛을 디코딩할 수 있다.
블록 (710) 에서의 액션들과 실질적으로 병행하여, 프로세스 (700) 는 패리티 체크 방정식이 블록 (715) 에서 만족되는지 여부를 결정한다. 예를 들어, 패리티 체크 모듈 (410) 은 디코딩 매트릭스의 하나 이상의 계층들 및 디코딩된 데이터가 패리티 체크 방정식을 만족시키는지 여부를 결정할 수 있다. 패리티 체크 방정식이 만족되지 않는 경우, 프로세스 (700) 는 카운터를 제로로 설정하고 블록 (720) 에서 데이터 유닛을 계속 디코딩한다. 다른 한편으로, 패리티 체크 방정식이 만족되는 경우, 프로세스 (700) 는 블록 (725) 으로 이동하고 카운터가 제로와 동일한지 여부를 결정한다. 카운터가 제로와 동일하면, 프로세스 (700) 는 블록 (740) 으로 이동하고 카운터를 증분시킨다. 카운터가 제로와 동일하지 않으면, 프로세스 (700) 는 블록 (730) 에서 디코딩된 데이터 유닛이 이전의 계층 디코딩 동작으로부터 변경되었는지 여부를 결정한다. 예를 들어, 데이터 비교 모듈 (430) 이 디코딩된 데이터 유닛을 이전의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛과 비교할 수 있다. 디코딩된 데이터 유닛이 변경되었다면, 프로세스 (700) 는 블록 (735) 로 이동하고 카운터를 1 로 설정하고 데이터 유닛의 디코딩을 계속한다. 디코딩된 데이터 유닛이 변경되지 않았다면, 프로세스 (700) 는 블록 (740) 으로 이동하고 카운터를 증분한다.
블록 (745) 에서, 프로세스 (700) 는 카운터가 임계값을 초과하는지 여부를 결정한다. 예를 들어, 데이터 비교 모듈 (430) 이 카운터가 임계값을 초과하는지 여부를 결정하기 위해 카운터와 임계값을 비교할 수 있다. 임계값은 다른 팩터들 중에서, 데이터 유닛의 디코딩을 종료하기 전에 원하는 확실성의 정도 또는 디코딩 매트릭스의 계층들의 수에 의존할 수 있다. 예를 들어, 디코딩 매트릭스가 5 개의 계층들을 가지면, 임계값은 패리티 체크 및 디코딩된 데이터 유닛에서의 변경 조건들이 조기 종료 검출 동안 디코딩 매트릭스의 5 개의 계층들에 대해 연속적으로 만족되도록 디코딩 매트릭스 계층들의 수 마이너스 1 (즉, 이 예에서는 4) 로 설정될 수 있다. 다른 예로서, 디코딩 매트릭스가 4 개의 계층들을 가지면, 임계값은 디코딩이 소정의 확실성의 정도 (예를 들어, 50%, 75%, 90%, 99%, 또는 99.99% 신뢰성 등) 로 성공적으로 완료되도록 디코딩 매트릭스 계층들의 수 마이너스 2 (즉, 이 예에서는 2) 로 설정될 수 있다. 카운터가 임계값을 초과하지 않는 경우, 프로세스 (700) 는 블록 (750) 으로 이동하고 데이터 유닛의 디코딩을 계속한다. 카운터가 임계값을 초과하는 경우, 프로세스 (700) 는 블록 (755) 로 이동하고, 데이터 유닛의 디코딩을 종료한다.
블록 (760) 에서, 프로세스 (700) 는 데이터 유닛에 대한 디코딩 반복들 또는 계층 디코딩 동작들의 최대 수와 같은 반복들의 최대수가 도달되었는지 여부를 결정한다. 반복들의 최대 수가 도달된 경우, 블록 (755) 에서, 프로세스 (700) 는 데이터 유닛의 디코딩을 종료한다. 다른 한편으로, 디코딩 반복들의 최대수가 도달되지 않은 경우, 프로세스 (700) 는 블록들 (710 및 715) 로 이동하고 블록들 (710 및 715) 의 액션들을 실질적으로 병렬로 수행한다. 블록 (710) 에서, 프로세스 (700) 는 다시 데이터 유닛을 디코딩하는 것의 다른 계층 디코딩 동작을 수행한다. 블록 (715) 에서, 프로세스 (700) 는 다시 패리티 체크 방정식이 만족되는지 여부를 결정한다; 그러나, 프로세스 (700) 는 이제 블록 (710) 에서의 데이터 유닛을 디코딩하는 이전의 다른 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛에 기초하여 패리티 체크 방정식이 만족되는지 여부를 결정한다.
다른 조기 디코딩 종료 검출 실시형태들
도 8 은 본 발명의 하나의 실시형태에 따른 조기 검출 모듈 (350) 의 블록도를 도시한다. 도 8 의 조기 검출 모듈 (350) 은 도 8 의 조기 검출 모듈 (350) 이 패리티 체크 모듈 Z (410z) 를 더 포함한다는 것을 제외하고 도 4 의 조기 검출 모듈 (350) (여기서 패리티 체크 모듈 (410) 은 패리티 체크 모듈 (410A) 이다) 과 동일한 컴포넌트들을 포함할 수 있다. 패리티 체크 모듈 Z (410z) 은 이롭게도 도 4 의 조기 검출 모듈 (350) 의 하나의 계층 디코딩 동작 앞에서 데이터 유닛의 디코딩의 종료를 가능하게 할 수 있다.
패리티 체크 모듈 Z (410z) 은 도 3 에서의 회전-좌측/우측 시프터 (330) 와 조기 검출 모듈 (350) 사이에 도시된 선택적 연결을 통해 회전-좌측/우측 시프터 (330) 로부터 디코딩된 데이터를 수신할 수 있다. 회전-좌측/우측 시프터 (330) 로부터의 디코딩된 데이터가 디코딩 매트릭스의 다음의 계층 서브 매트릭스에 대해 대각선 정렬 (diagonal-aligned) 될 수 있기 때문에, 패리티 체크 모듈 Z (410z) 은 디코딩 매트릭스의 다음의 연속적인 계층에 대해, 식 4 와 같은 패리티 체크 방정식을 사용하여, 패리티 체크를 수행할 수 있다.
예를 들어, 현재의 계층 디코딩 동작에 대해 실질적으로 병렬로, 패리티 체크 모듈 A (410a) 는 C(i,1)·H1 T = 0 인지 여부를 결정할 수 있고, 패리티 체크 모듈 Z (410z) 는 C( i,1 )·H2 T = 0 인지 여부를 결정할 수 있으며, 여기서 C( i,1 ) 는 현재의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛을 지칭하고, Hn 은 디코딩 매트릭스의 n 번째 계층을 지칭한다. 다음의 연속적인 계층 디코딩 동작에 대해 실질적으로 병렬로, 패리티 체크 모듈 A (410a) 는 C( i,2 )·H2 T = 0 인지 여부를 결정할 수 있고, 패리티 체크 모듈 Z (410z) 는 C( i,2 )·H3 T = 0 인지 여부를 결정할 수 있으며, 데이터 비교 모듈 (430) 은 C( i,1 ) = C( i,2 ) 인지 여부를 결정할 수 있고, 여기서 C(i,2) 는 다음의 연속적인 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛을 지칭한다. 후속하는 연속적인 계층 디코딩 동작에 대해 실질적으로 병렬로, 패리티 체크 모듈 A (410a) 는 C( i,3 )·H3 T = 0 인지 여부를 결정할 수 있고, 패리티 체크 모듈 Z (410z) 는 C( i,3 )·H4 T = 0 인지 여부를 결정할 수 있으며, 데이터 비교 모듈 (430) 은 C( i,2 ) = C( i,3 ) 인지 여부를 결정할 수 있고, 여기서 C( i,3 ) 는 후속하는 연속적인 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛을 지칭한다.
이러한 프로세스는 예를 들어 (1) 패리티 체크가 x 수의 계층들에 대해 만족되는 것 및 (2) 디코딩된 데이터 유닛이 x-2 연속적인 계층 디코딩 동작들에 대해 변경되지 않은 채로 유지되는 것과같은 조기 종료 검출 조건들이 만족될 때까지 계속될 수 있으며, 여기서 x 는 디코딩 매트릭스의 계층들의 총 수이다. 이전의 문단의 예에서, 패리티 체크 모듈 A (410a), 패리티 체크 모듈 Z (410z), 및 데이터 비교 모듈 (430) 에 의한 진술된 결정들의 모두가 만족된다면, 조기 검출 모듈 (350) 은 4 개의 계층들을 갖는 디코딩 매트릭스에 대해 데이터 유닛의 디코딩을 종료할 수 있다. 게다가, 이전의 문단의 예는 패리티 체크들이 데이터 유닛을 디코딩하는 동일한 반복에 대해 수행되는 것을 설명하지만, 도 8 의 조기 검출 모듈 (350) 은 또한 데이터 유닛을 디코딩하는 상이한 반복들로부터의 계층 디코딩 동작들에 대해 결정들을 수행할 수도 있다.
도 9 는 본 발명의 하나의 실시형태에 따른 조기 검출 모듈 (350) 의 블록도를 도시한다. 도 9 의 조기 검출 모듈 (350) 은 도 9 의 조기 검출 모듈 (350) 이 회전 모듈 B (420b) 및 및 패리티 체크 모듈 B (410b) 를 더 포함한다는 것을 제외하고 도 8 의 조기 검출 모듈 (350) (여기서 회전 모듈 (420) 은 회전 모듈 (420A) 이다) 과 동일한 컴포넌트들을 포함할 수 있다. 회전 모듈 B (420b) 및 패리티 체크 모듈 B (410b) 는 이롭게도 도 8 의 조기 검출 모듈 (350) 의 하나의 계층 디코딩 동작 앞에서 데이터 유닛의 디코딩의 종료를 가능하게 할 수 있다.
회전 모듈 (420b) 는 회전 모듈 (420a) 와 유사하게 기능할 수 있다. 회전 모듈 (420b) 은 도 3 의 디코딩 유닛들 (320) 로부터 디코딩된 데이터를 수신할 수 있다. 회전 모듈 (420) 에 의해 수신된 디코딩된 데이터의 부분들이 디코딩 매트릭스를 갖는 디코딩의 특정의 계층에 기초하는 순서로 회전될 수도 있기 때문에, 회전 모듈 (420) 은, 시프트 제어 모듈 (340) 의 제어 하에서, 패리티 체크 모듈 B (410b) 에 의한 평가를 위해 수신된 데이터 부분들을 회전 또는 정렬할 수 있다.
패리티 체크 모듈 B (410b) 은 패리티 체크 모듈 A (410a) 및 패리티 체크 모듈 Z (410z) 와 유사하게 기능할 수 있다. 패리티 체크 모듈 B (410b) 는 디코딩 매트릭스의 후속하는 연속적인 계층에 대해, 식 4 와 같은 패리티 체크 방정식을 사용하여, 패리티 체크를 수행할 수 있다.
예를 들어, 현재의 계층 디코딩 동작에 대해 실질적으로 병렬로, 패리티 체크 모듈 A (410a) 는 C( i,1 )·H1 T = 0 인지 여부를 결정할 수 있고, 패리티 체크 모듈 Z (410z) 는 C( i,1 )·H2 T = 0 인지 여부를 결정할 수 있으며, 패리티 체크 모듈 B (410b) 는 C( i,1 )·H3 T = 0 인지 여부를 결정할 수 있고, 여기서 C( i,1 ) 는 현재의 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛을 지칭하고, Hn 은 디코딩 매트릭스의 n 번째 계층을 지칭한다. 다음의 연속적인 계층 디코딩 동작에 대해 실질적으로 병렬로, 패리티 체크 모듈 A (410a) 는 C( i,2 )·H2 T = 0 인지 여부를 결정할 수 있고, 패리티 체크 모듈 Z (410z) 는 C( i,2 )·H3 T = 0 인지 여부를 결정할 수 있으며, 패리티 체크 모듈 B (410b) 는 C( i,2 )·H4 T = 0 인지 여부를 결정할 수 있고, 데이터 비교 모듈 (430) 은 C( i,1 ) = C( i,2 ) 인지 여부를 결정할 수 있고, 여기서 C( i,2 ) 는 다음의 연속적인 계층 디코딩 동작으로부터의 디코딩된 데이터 유닛을 지칭한다.
이러한 프로세스는 예를 들어 (1) 패리티 체크가 x 수의 계층들에 대해 만족되는 것 및 (2) 디코딩된 데이터 유닛이 x-3 연속적인 계층 디코딩 동작들에 대해 변경되지 않은 채로 유지되는 것과 같은 조기 종료 검출 조건들이 만족될 때까지 계속될 수 있으며, 여기서 x 는 디코딩 매트릭스의 계층들의 총 수이다. 이전의 문단의 예에서, 패리티 체크 모듈 A (410a), 패리티 체크 모듈 Z (410z), 패리티 체크 모듈 B (410b) 및 데이터 비교 모듈 (430) 에 의한 진술된 결정들의 모두가 만족된다면, 조기 검출 모듈 (350) 은 4 개의 계층들을 갖는 디코딩 매트릭스에 대해 데이터 유닛의 디코딩을 종료할 수 있다. 게다가, 이전의 문단의 예는 패리티 체크들이 데이터 유닛을 디코딩하는 동일한 반복에 대해 수행되는 것을 설명하지만, 도 9 의 조기 검출 모듈 (350) 은 또한 데이터 유닛을 디코딩하는 상이한 반복들로부터의 계층 디코딩 동작들에 대해 결정들을 수행할 수도 있다.
도 10 은 본 발명의 하나의 실시형태에 따른 조기 검출 모듈 (350) 의 블록도를 도시한다. 도 10 의 조기 검출 모듈 (350) 은 도 10 의 조기 검출 모듈 (350) 이 회전 모듈 N (420n) 및 및 패리티 체크 모듈 N (410n) 과 같은 하나 이상의 회전 모듈들 및 패리티 체크 모듈들을 더 포함한다는 것을 제외하고 도 9 의 조기 검출 모듈 (350) 과 동일한 컴포넌트들을 포함할 수 있다. 하나 이상의 추가적인 회전 모듈들 및 패리티 체크 모듈들은 각각 회전 모듈 B (420b) 및 패리티 체크 모듈 B (410b) 와 유사하게 기능할 수 있고, 이롭게도 도 9 의 조기 검출 모듈 (350) 의 하나 이상의 계층 디코딩 동작들 앞에서 데이터 유닛의 디코딩의 종료를 가능하게 할 수 있다.
다른 변형들
본 기술에서 통상의 기술자들은 일부 실시형태들에서, 다른 적합한 에러 정정 메커니즘들이 LDPC 코딩에 추가하여 및/또는 대신에 사용될 수 있다는 것을 인정할 것이다. 예를 들어, 해밍 코딩, 터보 코딩, BCH 코딩 등이 사용될 수 있다. 또, 옥테트, 니블, 워드, 바이트 등과 같은 데이터의 임의의 적합한 유닛 또는 그룹핑이 사용자 데이터의 비트에 추가하여 또는 대신에 사용될 수 있다. 게다가, 도 5 및 도 7 에 도시된 프로세스들과 같은 개시된 프로세스들에서 취해진 실제의 단계들은 도면들에서 도시된 것들과 상이할 수도 있다. 추가적인 시스템 컴포넌트들이 이용될 수 있고, 개시된 시스템 컴퍼넌트들은 결합되거나 생략될 수 있다. 실시형태에 따라, 상술된 소정의 단계들은 제거될 수도 있고, 다른 것들이 추가될 수도 있다.
소정의 실시형태들이 기술되었지만, 이들 실시형태들은 예시로만 제시되었고, 보호의 범위를 제한하는 것으로 의도되지 않는다. 실제로, 여기에 기술된 신규한 방법들 및 시스템들은 다양한 다른 형태들로 구현될 수도 있다. 더욱이, 여기에 기술된 방법들 및 시스템들의 형태에서의 여러 생략들, 치환들 및 변경들이 보호의 사상으로부터 일탈하지 않고 행해질 수도 있다. 첨부하는 청구항들 및 그들의 균등물들은 보호의 범위 및 사상 내에 있는 것으로서 그러한 형태들 또는 변경들을 커버하는 것으로 의도된다. 예를 들어, 도면들에 도시된 여러 컴포넌트들은 프로세서, ASIC/FPGA, 또는 전용 하드웨어 상의 소프트웨어 및/또는 펌웨어로서 구현될 수도 있다. 또한 상기 개시된 특정의 실시형태들의 특징들 및 속성들은 추가적인 실시형태들을 형성하기 위해 상이한 방식들로 구현될 수도 있으며, 이들 모두는 본 개시의 범위 내에 있다. 본 개시가 소정의 바람직한 실시형태들 및 애플리케이션들을 제공하지만, 여기에 진술된 특징들 및 이점들의 모두를 제공하지는 않는 실시형태들을 포함하는, 본 기술분야에 통상의 기술자들에게 명백한 다른 실시형태들이 또한 본 개시의 범위 내에 있다. 이에 따라, 본 개시의 범위는 첨부된 청구범위들을 참조하여서만 정의되도록 의도된다.

Claims (21)

  1. 데이터 스토리지 시스템으로서,
    비휘발성 메모리 어레이; 및
    제어기를 포함하고,
    상기 제어기는,
    코딩 매트릭스의 복수의 계층들을 사용하여, 상기 비휘발성 메모리 어레이로부터 판독된 복수의 데이터 유닛들 중 제 1 데이터 유닛을 반복적으로 디코딩 - 상기 반복적인 디코딩은, 적어도,
    상기 복수의 계층들을 사용하여 상기 제 1 데이터 유닛에 대해 제 1 디코딩 반복을 수행하여 디코딩된 제 1 데이터 유닛을 생성하고,
    상기 복수의 계층들을 사용하여 상기 디코딩된 제 1 데이터 유닛에 대해 제 2 디코딩 반복을 수행함으로써 이루어짐 - 하도록;
    상기 제 2 디코딩 반복을 수행하는 것과 병행하여, 상기 제 1 디코딩 반복에 의해 생성된 상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들 중 하나 이상의 계층이 패리티 체크 방정식을 만족시키는지 여부를 결정하도록;
    상기 디코딩된 제 1 데이터 유닛 및 상기 하나 이상의 계층 중 제 1 계층이 상기 패리티 체크 방정식을 만족시키지 않는다는 결정에 응답하여,
    상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들 중, 상기 하나 이상의 계층 외의, 적어도 하나의 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하는 것을 건너뛰고,
    상기 디코딩된 제 1 데이터 유닛에 대해 상기 제 2 디코딩 반복을 수행하는 것을 계속하도록; 그리고
    상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들의 각 계층이 상기 패리티 체크 방정식을 만족시킨다는 결정에 응답하여, 상기 제 1 데이터 유닛을 반복적으로 디코딩하는 것을 종료하도록
    구성되는 것인, 데이터 스토리지 시스템.
  2. 제 1 항에 있어서,
    상기 제어기는 또한, 상기 디코딩된 제 1 데이터 유닛 및 상기 제 1 계층이 상기 패리티 체크 방정식을 만족시킨다는 결정에 응답하여, 상기 디코딩된 제 1 데이터 유닛 및 상기 하나 이상의 계층 중 제 2 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하도록 구성되는 것인, 데이터 스토리지 시스템.
  3. 제 1 항에 있어서,
    상기 제어기는 또한, 제 1 패리티 체크 컴퓨터 하드웨어를 사용하여 상기 디코딩된 제 1 데이터 유닛 및 상기 제 1 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하는 것과 병행하여, 상기 제 1 패리티 체크 컴퓨터 하드웨어와는 상이한 제 2 패리티 체크 컴퓨터 하드웨어를 사용하여 상기 디코딩된 제 1 데이터 유닛 및 상기 하나 이상의 계층 중 제 2 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하도록 구성되는 것인, 데이터 스토리지 시스템.
  4. 제 1 항에 있어서,
    상기 제어기는 또한, 상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들의 각 계층이 상기 패리티 체크 방정식을 만족시킨다는 결정에 응답하여, 상기 복수의 데이터 유닛들 중 제 2 데이터 유닛을 반복적으로 디코딩하도록 구성되는 것인, 데이터 스토리지 시스템.
  5. 제 1 항에 있어서,
    상기 제어기는 또한, 상기 디코딩된 제 1 데이터 유닛 및 상기 하나 이상의 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하기 전에, 상기 디코딩된 제 1 데이터 유닛의 데이터를 회전시키도록 회전-좌측/우측 시프터에게 지시하도록 구성되는 것인, 데이터 스토리지 시스템.
  6. 제 5 항에 있어서,
    상기 제어기는, 현재의 계층과 이전의 계층 간의 비교에 기초한 회전량만큼 상기 디코딩된 제 1 데이터 유닛의 데이터를 회전시키도록 상기 회전-좌측/우측 시프터에게 지시하도록 구성되고, 상기 회전-좌측/우측 시프터는 베네스 (Benes) 네트워크를 포함하는 것인, 데이터 스토리지 시스템.
  7. 제 5 항에 있어서,
    상기 제어기는, 복수의 매트릭스 사이즈들 중 제 1 매트릭스 사이즈에 대응하는 입도 (granularity)를 사용하여 상기 디코딩된 제 1 데이터 유닛을 프로세싱하도록 상기 회전-좌측/우측 시프터에게 지시하도록 구성되고, 상기 회전-좌측/우측 시프터는 상기 복수의 매트릭스 사이즈들 각각에 대응하는 입도들을 지원하는 것인, 데이터 스토리지 시스템.
  8. 제 5 항에 있어서,
    상기 제어기는 또한, 상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들의 각 계층이 상기 패리티 체크 방정식을 만족시킨다는 결정에 응답하여, 상기 디코딩된 제 1 데이터 유닛의 데이터를 역회전 (de-rotate)시키도록 상기 회전-좌측/우측 시프터에게 지시하도록 구성되는 것인, 데이터 스토리지 시스템.
  9. 제 1 항에 있어서,
    상기 패리티 체크 방정식은 상기 디코딩된 제 1 데이터 유닛과 상기 복수의 계층들 중의 하나의 계층의 전치 행렬과의 매트릭스 곱을 포함하고, 상기 디코딩된 제 1 데이터 유닛 및 상기 하나의 계층의 전치 행렬은 상기 매트릭스 곱의 결과가 제로일 때 상기 패리티 체크 방정식을 만족시키는 것인, 데이터 스토리지 시스템.
  10. 제 1 항에 있어서,
    상기 복수의 데이터 유닛들은 복수의 저밀도 패리티 체크 (low-density parity-check, LDPC) 데이터 유닛들을 포함하고, 상기 코딩 매트릭스는 복수의 서브매트릭스들을 포함하며, 상기 복수의 서브매트릭스들은 값들만큼 회전된 단위 매트릭스들을 포함하는 것인, 데이터 스토리지 시스템.
  11. 제어기를 포함하는 데이터 스토리지 시스템에서, 상기 제어기의 제어하에 수행되는 데이터를 디코딩하는 방법으로서,
    코딩 매트릭스의 복수의 계층들을 사용하여, 비휘발성 메모리 어레이로부터 판독된 복수의 데이터 유닛들 중 제 1 데이터 유닛을 반복적으로 디코딩 - 상기 반복적인 디코딩은 적어도,
    상기 복수의 계층들을 사용하여 상기 제 1 데이터 유닛에 대해 제 1 디코딩 반복을 수행하여 디코딩된 제 1 데이터 유닛을 생성하고,
    상기 복수의 계층들을 사용하여 상기 디코딩된 제 1 데이터 유닛에 대해 제 2 디코딩 반복을 수행함으로써 이루어짐 - 하는 단계;
    상기 제 2 디코딩 반복을 수행하는 것과 병행하여, 상기 제 1 디코딩 반복에 의해 생성된 상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들 중 하나 이상의 계층이 패리티 체크 방정식을 만족시키는지 여부를 결정하는 단계;
    상기 디코딩된 제 1 데이터 유닛 및 상기 하나 이상의 계층 중 제 1 계층이 상기 패리티 체크 방정식을 만족시키지 않는다는 결정에 응답하여,
    상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들 중, 상기 하나 이상의 계층 외의, 적어도 하나의 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하는 것을 건너뛰고,
    상기 디코딩된 제 1 데이터 유닛에 대해 상기 제 2 디코딩 반복을 수행하는 것을 계속하는 단계; 및
    상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들의 각 계층이 상기 패리티 체크 방정식을 만족시킨다는 결정에 응답하여, 상기 제 1 데이터 유닛을 반복적으로 디코딩하는 것을 종료하는 단계
    를 포함하는, 데이터를 디코딩하는 방법.
  12. 제 11 항에 있어서,
    상기 디코딩된 제 1 데이터 유닛 및 제 1 계층이 상기 패리티 체크 방정식을 만족시킨다는 결정에 응답하여, 상기 디코딩된 제 1 데이터 유닛 및 상기 하나 이상의 계층 중 제 2 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하는 단계를 더 포함하는, 데이터를 디코딩하는 방법.
  13. 제 11 항에 있어서,
    제 1 패리티 체크 컴퓨터 하드웨어를 사용하여 상기 디코딩된 제 1 데이터 유닛 및 상기 제 1 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하는 단계와 병행하여, 상기 제 1 패리티 체크 컴퓨터 하드웨어와는 상이한 제 2 패리티 체크 컴퓨터 하드웨어를 사용하여 상기 디코딩된 제 1 데이터 유닛 및 상기 하나 이상의 계층 중 제 2 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하는 단계를 더 포함하는, 데이터를 디코딩하는 방법.
  14. 제 11 항에 있어서,
    상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들의 각 계층이 상기 패리티 체크 방정식을 만족시킨다는 결정에 응답하여, 상기 복수의 데이터 유닛들 중 제 2 데이터 유닛을 반복적으로 디코딩하는 단계를 더 포함하는, 데이터를 디코딩하는 방법.
  15. 제 11 항에 있어서,
    상기 디코딩된 제 1 데이터 유닛 및 상기 하나 이상의 계층이 상기 패리티 체크 방정식을 만족시키는지 여부를 결정하는 단계 전에, 상기 디코딩된 제 1 데이터 유닛의 데이터를 회전시키도록 회전-좌측/우측 시프터에게 지시하는 단계를 더 포함하는, 데이터를 디코딩하는 방법.
  16. 제 15 항에 있어서,
    현재의 계층과 이전의 계층 간의 비교에 기초한 회전량만큼 상기 디코딩된 제 1 데이터 유닛의 데이터를 회전시키도록 상기 회전-좌측/우측 시프터에게 지시하는 단계를 더 포함하고, 상기 회전-좌측/우측 시프터는 베네스 네트워크를 포함하는 것인, 데이터를 디코딩하는 방법.
  17. 제 15 항에 있어서,
    복수의 매트릭스 사이즈들 중 제 1 매트릭스 사이즈에 대응하는 입도를 사용하여 상기 디코딩된 제 1 데이터 유닛을 프로세싱하도록 상기 회전-좌측/우측 시프터에게 지시하는 단계를 더 포함하고, 상기 회전-좌측/우측 시프터는 상기 복수의 매트릭스 사이즈들 각각에 대응하는 입도들을 지원하는 것인, 데이터를 디코딩하는 방법.
  18. 제 15 항에 있어서,
    상기 디코딩된 제 1 데이터 유닛 및 상기 복수의 계층들의 각 계층이 상기 패리티 체크 방정식을 만족시킨다는 결정에 응답하여, 상기 디코딩된 제 1 데이터 유닛의 데이터를 역회전시키도록 상기 회전-좌측/우측 시프터에게 지시하는 단계를 더 포함하는, 데이터를 디코딩하는 방법.
  19. 제 11 항에 있어서,
    상기 패리티 체크 방정식은 상기 디코딩된 제 1 데이터 유닛과 상기 복수의 계층들 중의 하나의 계층의 전치 행렬과의 매트릭스 곱을 포함하고, 상기 디코딩된 제 1 데이터 유닛 및 상기 하나의 계층의 전치 행렬은 상기 매트릭스 곱의 결과가 제로일 때 상기 패리티 체크 방정식을 만족시키는 것인, 데이터를 디코딩하는 방법.
  20. 제 11 항에 있어서,
    상기 복수의 데이터 유닛들은 복수의 저밀도 패리티 체크 (low-density parity-check, LDPC) 데이터 유닛들을 포함하고, 상기 코딩 매트릭스는 복수의 서브매트릭스들을 포함하며, 상기 복수의 서브매트릭스들은 값들만큼 회전된 단위 매트릭스들을 포함하는 것인, 데이터를 디코딩하는 방법.
  21. 삭제
KR1020157033536A 2013-04-30 2014-04-30 조기 디코딩 종료 검출을 갖는 디코더 KR101913900B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361817421P 2013-04-30 2013-04-30
US61/817,421 2013-04-30
US13/918,400 US20140223255A1 (en) 2012-12-18 2013-06-14 Decoder having early decoding termination detection
US13/918,400 2013-06-14
PCT/US2014/036255 WO2014179502A1 (en) 2013-04-30 2014-04-30 Decoder having early decoding termination detection

Publications (2)

Publication Number Publication Date
KR20160004338A KR20160004338A (ko) 2016-01-12
KR101913900B1 true KR101913900B1 (ko) 2018-10-31

Family

ID=51843935

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157033536A KR101913900B1 (ko) 2013-04-30 2014-04-30 조기 디코딩 종료 검출을 갖는 디코더

Country Status (5)

Country Link
EP (1) EP2992429B1 (ko)
KR (1) KR101913900B1 (ko)
CN (1) CN105164646B (ko)
HK (1) HK1216200A1 (ko)
WO (1) WO2014179502A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9595977B2 (en) 2014-09-29 2017-03-14 Apple Inc. LDPC decoder with efficient circular shifters
US10128869B2 (en) 2016-05-17 2018-11-13 Apple Inc. Efficient convergence in iterative decoding
WO2018042597A1 (ja) * 2016-09-01 2018-03-08 三菱電機株式会社 誤り訂正復号装置及び光送受信装置
US10606694B2 (en) * 2018-04-20 2020-03-31 Micron Technology, Inc. Error correction using hierarchical decoders
CN108683426B (zh) * 2018-05-18 2022-08-26 中国科学院微电子研究所 一种基于bch码的ecc系统及存储器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009053940A2 (en) 2007-10-24 2009-04-30 Nokia Corporation Method, computer program product, apparatus and device providing scalable structured high throughput ldpc decoding
US20100042891A1 (en) 2008-08-15 2010-02-18 Lsi Corporation Error-correction decoder employing check-node message averaging
US20100275088A1 (en) 2009-04-22 2010-10-28 Agere Systems Inc. Low-latency decoder
US20110029756A1 (en) 2009-07-28 2011-02-03 Eric Biscondi Method and System for Decoding Low Density Parity Check Codes

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US8127209B1 (en) * 2007-07-30 2012-02-28 Marvell International Ltd. QC-LDPC decoder with list-syndrome decoding
TWI419481B (zh) * 2009-12-31 2013-12-11 Nat Univ Tsing Hua 低密度奇偶檢查碼編解碼器及其方法
US8572463B2 (en) * 2010-02-01 2013-10-29 Sk Hynix Memory Solutions Inc. Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size
US8499226B2 (en) * 2010-06-29 2013-07-30 Lsi Corporation Multi-mode layered decoding
US8661326B1 (en) * 2010-08-04 2014-02-25 Marvell International Ltd. Non-binary LDPC code decoding early termination
WO2013019560A2 (en) * 2011-07-29 2013-02-07 Sandisk Technologies Inc. Checksum using sums of permutation sub-matrices
US8775896B2 (en) * 2012-02-09 2014-07-08 Lsi Corporation Non-binary LDPC decoder with low latency scheduling

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009053940A2 (en) 2007-10-24 2009-04-30 Nokia Corporation Method, computer program product, apparatus and device providing scalable structured high throughput ldpc decoding
US20100042891A1 (en) 2008-08-15 2010-02-18 Lsi Corporation Error-correction decoder employing check-node message averaging
US20100275088A1 (en) 2009-04-22 2010-10-28 Agere Systems Inc. Low-latency decoder
US20110029756A1 (en) 2009-07-28 2011-02-03 Eric Biscondi Method and System for Decoding Low Density Parity Check Codes

Also Published As

Publication number Publication date
HK1216200A1 (zh) 2016-10-21
EP2992429A1 (en) 2016-03-09
CN105164646B (zh) 2019-06-07
EP2992429A4 (en) 2016-12-14
CN105164646A (zh) 2015-12-16
WO2014179502A1 (en) 2014-11-06
KR20160004338A (ko) 2016-01-12
EP2992429B1 (en) 2022-03-09

Similar Documents

Publication Publication Date Title
US20140223255A1 (en) Decoder having early decoding termination detection
US8966339B1 (en) Decoder supporting multiple code rates and code lengths for data storage systems
US9495243B2 (en) Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems
US9070453B2 (en) Multiple programming of flash memory without erase
US8560930B2 (en) Systems and methods for multi-level quasi-cyclic low density parity check codes
KR101913900B1 (ko) 조기 디코딩 종료 검출을 갖는 디코더
US9710327B2 (en) Flash memory system and operating method thereof
US11016844B2 (en) Error correction code structure
WO2011121490A1 (en) Two -level bch codes for solid state storage devices
US8990668B2 (en) Decoding data stored in solid-state memory
US9748974B2 (en) Non-binary LDPC decoder using binary subgroup processing
US20150317203A1 (en) Code-Based Read Control for Data Storage Devices
US10289348B2 (en) Tapered variable node memory
US9236886B1 (en) Universal and reconfigurable QC-LDPC encoder
US20180351577A1 (en) Iteration-adaptive decoding for non-binary ldpc codes
CN111869111A (zh) 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字
CN108270449B (zh) 支持多种编码率和编码长度的编码器
US9619317B1 (en) Decoder having early decoding termination detection
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US11258464B1 (en) Codeword concatenation for correcting errors in data storage devices
CN105938728B (zh) 用于近似平衡码的编码器和解码器设计
KR101355986B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
KR101355982B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant