KR102226607B1 - 저장 디바이스를 위한 계단 코드 인코딩 및 디코딩을 위한 장치 및 방법 - Google Patents

저장 디바이스를 위한 계단 코드 인코딩 및 디코딩을 위한 장치 및 방법 Download PDF

Info

Publication number
KR102226607B1
KR102226607B1 KR1020197008539A KR20197008539A KR102226607B1 KR 102226607 B1 KR102226607 B1 KR 102226607B1 KR 1020197008539 A KR1020197008539 A KR 1020197008539A KR 20197008539 A KR20197008539 A KR 20197008539A KR 102226607 B1 KR102226607 B1 KR 102226607B1
Authority
KR
South Korea
Prior art keywords
syndrome
horizontal
vertical
codeword
block
Prior art date
Application number
KR1020197008539A
Other languages
English (en)
Other versions
KR20190034699A (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
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20190034699A publication Critical patent/KR20190034699A/ko
Application granted granted Critical
Publication of KR102226607B1 publication Critical patent/KR102226607B1/ko

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1525Determination and particular use of error location polynomials
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2918Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes with error correction codes in three or more dimensions, e.g. 3-dimensional product code where the bits are arranged in a cube
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • H03M13/2951Iterative decoding using iteration stopping criteria

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

장치가 제공된다. 상기 장치는, 복수의 행 및 복수의 열을 갖는 코드워드를 수신하도록 구성되고, 상기 코드워드의 제1 성분 코드워드의 적어도 일부에 대한 제1 신드롬을 연산하도록 더 구성된 제1 신드롬 연산 회로를 포함한다. 상기 장치는, 상기 코드워드를 수신하고 상기 코드워드의 제2 성분 코드워드의 적어도 일부에 대한 제2 신드롬을 연산하도록 구성된 제2 신드롬 연산 회로를 더 포함한다. 상기 장치는, 상기 제1 신드롬과 상기 제2 신드롬 중 적어도 하나에 적어도 부분적으로 기초하여 상기 코드워드 내 하나 이상의 에러 비트를 정정하도록 구성된 비트 정정 회로를 더 포함하고, 상기 제1 및 제2 성분 코드워드는 상기 코드워드의 2개 이상의 행과 2개 이상의 열에 걸쳐 있다.

Description

저장 디바이스를 위한 계단 코드 인코딩 및 디코딩을 위한 장치 및 방법
계단 코드(staircase code)는 순방향 에러 정정(forward error correction) 방식으로 구현될 수 있는 제품 코드 유형이다. 계단 코드는 계단 패턴으로 배열된 다수의 블록을 포함한다. 각각의 블록은 데이터 비트 및 패리티 비트를 포함할 수 있다. 기존의 계단 코드에서, 각각의 개별 라인(line) 및 각각의 개별 열(column)은 데이터 비트 및 패리티 비트를 포함하는 단일 성분 코드워드(component codeword)이다. 성분 코드워드는 BCH(Bose-Chaudhuri-Hocquenghem) 코드와 같은 에러 정정 코드(error correcting code: ECC) 방식에 따라 유효 코드워드를 형성하도록 인접한 블록들에 걸쳐 있다. 블록들이 계단 패턴으로 배열되기 때문에, 성분 코드워드는 수평 방향과 수직 방향으로 형성될 수 있다. 즉, 블록의 임의의 주어진 데이터 비트에서 이 비트는 수평 코드워드 및 수직 코드워드의 일부이다. 따라서, 각각의 데이터 비트는 이중으로 인코딩되고, 2개의 별개의 성분 코드워드를 사용하여 독립적으로 정정될 수 있다.
일 양태에 따르면, 장치는, 복수의 행(row) 및 복수의 열을 갖는 코드워드를 수신하도록 구성되고, 상기 코드워드의 제1 성분 코드워드의 적어도 일부에 대한 제1 신드롬(syndrome)을 연산하도록 더 구성된 제1 신드롬 연산 회로를 포함한다. 상기 장치는 상기 코드워드를 수신하고 상기 코드워드의 제2 성분 코드워드의 적어도 일부에 대한 제2 신드롬을 연산하도록 구성된 제2 신드롬 연산 회로를 포함한다. 상기 장치는 상기 제1 신드롬과 상기 제2 신드롬 중 적어도 하나에 적어도 부분적으로 기초하여 상기 코드워드 내의 하나 이상의 에러 비트를 정정하도록 구성된 비트 정정 회로를 포함하고, 상기 제1 및 제2 성분 코드워드는 상기 코드워드의 2개 이상의 행과 2개 이상의 열에 걸쳐 있다.
다른 양태에 따르면, 방법은, 계단 코드 인코더 회로에 의해, 계단 코드를 생성하는 단계를 포함하고; 상기 계단 코드는, 상기 계단 코드의 블록의 복수의 행에 걸쳐 있는 복수의 수평 성분 코드워드; 및 상기 계단 코드의 블록의 복수의 열에 걸쳐 있는 복수의 수직 성분 코드워드를 포함하고, 상기 복수의 성분 코드워드의 수평 성분 코드워드 및 상기 복수의 수직 성분 코드워드의 수직 성분 코드워드는 복수의 데이터 비트를 인코딩한다. 상기 방법은 상기 계단 코드를 메모리 어레이에 저장하는 단계를 포함한다. 상기 방법은 계단 코드 디코더 회로에 의해 상기 블록을 디코딩하여 상기 복수의 데이터 비트를 검색하는 단계; 및 상기 복수의 데이터 비트를 제공하는 단계를 포함한다.
또 다른 양태에 따르면, 방법은 계단 코드의 블록을 수신하는 단계, 상기 블록을 디코딩하는 단계, 및 상기 블록이 성공적으로 디코딩되었는지 여부를 결정하는 단계를 포함한다. 상기 방법은 상기 블록이 성공적으로 디코딩되지 않았다고 결정한 것에 응답하여, 상기 계단 코드의 추가 블록을 반복적으로 수신하는 단계, 상기 추가 블록에 기초하여 상기 블록을 디코딩하는 단계, 및 상기 블록이 성공적으로 디코딩되었는지 여부를 결정하는 단계를 포함한다. 상기 방법은 상기 블록이 성공적으로 디코딩되었다고 결정한 것에 응답하여 상기 블록을 제공하는 단계를 포함한다.
또 다른 양태에 따르면, 방법은 복수의 수직 성분 코드워드 및 복수의 수평 성분 코드워드를 갖는 계단 코드로 데이터 세트를 인코딩하는 단계를 포함하고, 상기 수직 성분 코드워드 각각은 상기 계단 코드의 2개 이상의 행에 걸쳐 있고, 상기 수평 성분 코드워드 각각은 상기 계단 코드의 2개 이상의 열에 걸쳐 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템의 블록도;
도 2는 본 발명의 일 실시예에 따른 예시적인 계단 코드를 도시하는 도면;
도 3은 본 발명의 일 실시예에 따른 예시적인 계단 코드 블록을 도시하는 도면;
도 4는 본 발명의 일 실시예에 따른 예시적인 성분 코드워드를 도시하는 도면;
도 5는 본 발명의 일 실시예에 따른 예시적인 계단 코드를 도시하는 도면;
도 6은 본 발명의 일 실시예에 따른 디코더 회로의 블록도;
도 7은 본 발명의 일 실시예에 따른 예시적인 계단 코드를 도시하는 도면;
도 8은 본 발명의 일 실시예에 따른 계단 코드를 디코딩하는 방법의 흐름도; 및
도 9는 본 발명의 일 실시예에 따른 메모리의 블록도.
이하, 본 발명의 실시예에 대한 충분한 이해를 제공하기 위해 특정 상세들이 제시된다. 그러나, 본 발명의 실시예는 이 특정 상세 없이 실시될 수 있음은 이 기술 분야에 통상의 지식을 가진 자에게 명백할 것이다. 또한, 본 명세서에 기술된 본 발명의 특정 실시예는 예로서 제공되고, 본 발명의 범위를 이 특정 실시예로 제한하는데 사용되어서는 안 된다. 다른 경우에, 잘 알려진 회로, 제어 신호, 타이밍 프로토콜 및 소프트웨어 동작은 본 발명을 불필요하게 모호하게 하는 것을 피하기 위해 상세하게 도시되지 않았다. 본 명세서에 사용된 바와 같이, 계단 코드의 문맥에서, "섹터(sector)", "블록" 및 "코드워드"라는 용어는 상호 교환 가능하게 사용된다.
본 발명의 실시예는 일반적으로 기존의 계단 코드가 만족스러운 에러 정정 능력을 달성하기 위해 다수의 큰 블록(예를 들어, 16KB 블록)으로 배열된 큰 코드워드를 요구한다는 것을 인식한다. 이러한 큰 코드워드는 광통신과 같은 일부 상황에서는 용인될 수 있지만, 저장 응용과 같은 더 작은 섹터의 데이터를 통상적으로 조작하는 응용에서는, 다수의 큰 블록으로 배열된 큰 코드워드를 디코딩하는 것은 처리 자원 및 전력 자원의 낭비를 가져온다. 예를 들어, NAND 플래시 메모리와 같은 많은 메모리 시스템은 일반적으로 4KB 섹터로 데이터 요청을 한다. 4KB 상당의 데이터에 액세스하는데 기존의 큰 코드워드 디코딩(16KB 섹터용)을 구현하는 것은 비효율적이다. 따라서, 본 발명의 실시예는, 저장 시스템과 같은 더 작은 데이터 요청을 위해 구현될 수 있는 효율적인 디코딩 수단을 가지면서 계단 코드의 장점을 이용하는 계단 코드 ECC 방식을 구현하는 시스템 및 방법을 개시한다.
도 1은 본 발명의 일 실시예에 따라 일반적으로 100으로 표시된 메모리 시스템의 블록도이다. 메모리 시스템(100)은 호스트(102) 및 메모리 디바이스(104)를 포함한다. 메모리 디바이스(104)는 제어 회로(106) 및 메모리 어레이(108)를 포함한다. 제어 회로(106)는 계단 코드(staircase code: SCC) 인코더 회로(110) 및 SCC 디코더 회로(112)를 포함한다. 다양한 실시예에서, 제어 회로(106)는 선택적으로 BCH 인코더 회로(114) 및 BCH 디코더 회로(116)를 포함할 수 있다.
호스트(102)는 메모리 디바이스(104)와 통신할 수 있는 랩탑 컴퓨터, 데스크탑 컴퓨터, 스마트 폰, 또는 임의의 다른 전자 디바이스와 같은 프로세서 기반 시스템일 수 있다. 호스트(102)는 메모리 디바이스(104)에 메모리 요청(예를 들어, 판독/기입 요청)을 제출하도록 구성될 수 있다. 호스트(102)는 메모리 디바이스(104)로부터 검색되거나 이 메모리 디바이스에 저장될 메모리 요청(예를 들어, 데이터 판독 및 데이터 기입)과 관련된 데이터를 제출하고 수신하도록 더 구성될 수 있다.
메모리 디바이스(104)는 메모리 어레이(108)를 포함한다. 메모리 어레이(108)는 메모리 셀(예를 들어, 비휘발성 메모리 셀)의 하나 이상의 어레이를 포함할 수 있다. 어레이는 NAND 플래시 메모리 셀, NOR 플래시 메모리 셀, 상 변화 메모리(phase change memory: PCM) 셀, 또는 이들의 조합을 포함할 수 있다. 실시예는 특정 유형의 메모리 디바이스로 제한되지 않는다. 예를 들어, 메모리 디바이스(104)는 RAM, ROM, HDD, DRAM, SDRAM, PCRAM, RRAM, 플래시 메모리, 또는 임의의 다른 유형의 메모리를 포함할 수 있다.
메모리 디바이스(104)는 제어 회로(106)를 더 포함한다. 제어 회로(106)는 호스트(102)로부터 수신된 메모리 커맨드에 응답하여 메모리 어레이(108)에 메모리 동작을 수행하도록 구성된다. 제어 회로(106)는 메모리 어레이(108)에 저장된 데이터를 인코딩 및 디코딩하도록 더 구성될 수 있다. ECC를 사용하여 데이터를 인코딩하면 데이터가 메모리로부터 검색될 때 에러 데이터 비트를 정정할 수 있다. 예를 들어, 제어 회로(106)는 SCC 인코더 회로(110) 및 선택적인 BCH 인코더 회로(114)를 사용하여 데이터를 인코딩하고, 인코딩된 데이터 비트 및 패리티 비트를 메모리 어레이(108)에 저장할 수 있다. 제어 회로(106)는 SCC 디코더 회로(112) 및 선택적인 BCH 디코더 회로(116)를 사용하여 메모리 어레이(108)에 저장된 데이터를 디코딩하도록 더 구성될 수 있다.
다양한 실시예에서, BCH 인코더 회로(114)는 비교적 작은 정정 능력을 갖는 외부(outer) BCH 코드(예를 들어, 25 비트의 정정 능력을 갖는 4KB BCH 코드)에 따라 호스트(102)로부터 수신된 기입 데이터를 인코딩하도록 구성될 수 있다. BCH 코드는 SCC 인코더(110)를 사용하여 데이터를 인코딩하기 전에 데이터를 인코딩하기 때문에 "외부" 코드이다. BCH 코드와 관련하여 설명되었지만, 이 기술 분야에 통상의 지식을 가진 자라면 임의의 적절한 인코딩 방법이 외부 코드로 사용될 수 있어서 본 명세서에 설명된 실시예는 BCH 코드로 한정되지 않는다는 것을 인식할 수 있을 것이다. 예를 들어, 일 실시예에서, 외부 코드는 리드-솔로몬 코드일 수 있다. 외부 BCH 코드는 보다 상세히 후술되는 바와 같이 비교적 작은 계단 블록(예를 들어, 96 x 96 비트 블록)을 사용하는 것으로부터 초래되는 계단 코드의 에러 층(error floor)이 증가하는 것을 보상하는 것을 도와줄 수 있다. BCH 인코더(114)는 BCH 인코딩의 결과를 SCC 인코더 회로(110)에 제공하도록 더 구성될 수 있다.
SCC 인코더 회로(110)는 작은 블록 계단 코드에 따라 데이터를 인코딩하도록 구성된 회로일 수 있다. BCH 인코더 회로(114)를 포함하는 실시예에서, SCC 인코더 회로(110)는 BCH 인코더 회로(114)로부터 인코딩된 데이터를 수신할 수 있다. BCH 인코더 회로(114)를 제외하는 실시예에서, SCC 인코더 회로(110)는 호스트(102)로부터 수신된 기입 데이터를 인코딩하도록 구성될 수 있다. 다양한 실시예에서, BCH 인코더 회로(114) 및 SCC 인코더 회로(110)는 인코딩이 동시에 발생하도록 기입 데이터의 상이한 부분을 병렬로 인코딩하도록 구성될 수 있다. 예를 들어, BCH 인코더 회로(114)가 제1 코드워드를 인코딩하면, BCH 인코더 회로(114)가 제2 코드워드를 인코딩하는 동안 인코딩을 위해 제1 코드워드가 SCC 인코더 회로(110)에 제공될 수 있다. 본 발명에 따른 계단 인코딩의 상세는 도 2 내지 도 5와 관련하여 이하에서 보다 상세하게 설명된다.
SCC 디코더 회로(112)는 SCC 인코더 회로(110)에 의해 생성된 작은 블록 계단 코드를 디코딩하도록 구성될 수 있다. 예를 들어, 호스트(102)로부터의 판독 커맨드에 응답하여, 제어 회로(106)는 메모리 어레이(108)로부터의 요청된 인코딩된 데이터를 검색할 수 있고, SCC 디코더 회로(112)는 검색된 데이터를 디코딩 할 수 있다. 선택적인 BCH 디코더 회로(116)는, 수신된 데이터에 BCH 디코딩을 수행하고, 디코딩된 데이터를 호스트(102)에 제공하도록 구성될 수 있다. 선택적인 BCH 디코더 회로(116)를 갖는 실시예에서, SCC 디코더 회로(112)는 계단 코드를 디코딩하여 BCH 디코더 회로(116)에 제공되는 BCH 인코딩된 판독 데이터를 생성할 수 있다. BCH 디코더 회로(116)는 BCH 인코딩된 판독 데이터를 디코딩하여, 요청된 판독 데이터를 생성하고, 요청된 판독 데이터를 호스트(102)에 제공할 수 있다. BCH 디코더 회로(116)를 포함하지 않는 실시예에서, SCC 디코더 회로(112)는 계단 코드를 디코딩하고, 요청된 판독 데이터를 호스트(102)에 제공할 수 있다. 인코더 회로와 유사하게, SCC 디코더 회로(112) 및 선택적인 BCH 디코더 회로(116)는 디코딩 동작을 병렬로 수행할 수 있다. 예를 들어, SCC 디코더 회로(112)가 제1 코드워드를 디코딩하면, SCC 디코더 회로(112)가 제2 코드워드를 디코딩하기 시작하는 동안 BCH 디코더 회로(116)는 제1 코드워드를 디코딩하기 시작할 수 있다. 본 발명에 따른 계단 디코딩의 상세는 도 6과 관련하여 이하에서 보다 상세히 설명된다.
도 2는 본 발명의 일 실시예에 따라 일반적으로 200으로 표시된 예시적인 계단 코드이다. 계단 코드(200)는 예를 들어 도 1의 SCC 인코더 회로(110)에 의해 생성되고 메모리 어레이(108)에 저장될 수 있다. 계단 코드(200)는 일반적으로 초기 제로(initial zero) 블록(202), 다수의 SCC 블록(204(1)-(N)), 종단으로부터 두 번째(penultimate) 블록(206) 및 종단(terminal) 블록(208)을 포함한다. 초기 제로 블록(202)은, 각각의 비트가 미리 결정된 값으로 설정된, 비트의 어레이를 포함할 수 있다. 예를 들어, 초기 제로 블록(202)의 각각의 비트는 논리 0으로 설정될 수 있다. 대안적으로, 다른 알려진 값이 사용될 수 있다. 유사하게, 종단으로부터 두 번째 블록(206) 및 종단 블록(208)은 아래에서 더 상세히 설명된 바와 같이, 선행 블록의 패리티 비트 또는 비-제로(non-zero) 데이터 비트로부터 생성된 비-제로 패리티 비트를 제외하고는 모두 제로 논리 값을 포함할 수 있다. SCC 블록(204(1)-(N)) 각각은 복수의 데이터 비트(210) 및 패리티 비트(212)를 포함할 수 있다. 데이터 비트(210) 및 패리티 비트(212)뿐만 아니라 초기 제로 블록(202), 종단으로부터 두 번째 블록(206) 및 종단 블록(208)의 비트는 계단 코드(200)의 수평 및 수직 성분 코드워드로 배열될 수 있다. 도 3 내지 도 6과 관련하여 이하에서 보다 상세하게 기술되는 바와 같이, 성분 코드워드는 각각의 수평 코드워드가 다수의 열에 걸쳐 있고 각각의 수직 코드워드가 다수의 행에 걸쳐 있도록 배열될 수 있다. 도 2에 도시된 바와 같이, 초기 제로 블록(202), SCC 블록(204(1)-(N)), 종단으로부터 두 번째 블록(206), 및 종단 블록(208)은 선행 블록에 인접하거나 선행 블록 아래에서 교대로 위치된 블록을 갖는 계단 패턴으로 배열될 수 있다. 데이터 비트(210) 및 패리티 비트(212)의 특정 배열은 도 3 내지 도 5와 관련하여 보다 상세히 설명된다.
도 3은 본 발명의 일 실시예에 따라 일반적으로 300으로 표시된 예시적인 계단 코드 블록이다. 계단 코드 블록(300)은 복수의 데이터 비트(310) 및 복수의 패리티 비트(312)를 포함한다. 계단 코드 블록(300)은 m x (m-r) 데이터 비트(310) 및 m x r 패리티 비트(312)를 포함하는 m x m 블록일 수 있다. 계단 코드 블록(300)의 데이터 비트(310) 및 패리티 비트(312)는, BCH 코드와 같은 특정 코딩 방식에 따라, 다른 계단 코드 블록(도 3에 도시되지 않음)의 데이터 비트 및 패리티 비트와 결합되어 복수의 유효 코드워드를 형성할 수 있다.
도 4는 본 발명의 일 실시예에 따라 일반적으로 400으로 표시된 예시적인 성분 코드워드이다. 성분 코드워드(400)는 복수의 데이터 비트(410) 및 복수의 패리티 비트(412)를 포함한다. 성분 코드워드(400)는 수평 성분 코드워드일 수 있고, 2개의 계단 코드 블록에 걸쳐 있을 수 있다. 도 4의 실시예에서, 성분 코드워드(400)는 계단 코드 블록(402 및 404)에 걸쳐 있다. 성분 코드워드(400)의 데이터 비트(410)는 계단 코드 블록(402 및 404)의 다수의 행 및 열에 걸쳐 랩핑(wrapped)될 수 있다. 도 4의 실시예에서, 성분 코드워드(400)는 총 2m개의 열(블록(402)과 블록(404) 각각에서 m개의 열) 및 n개의 행에 걸쳐 있다. 유사하게, 수직 코드워드는 2m개의 행과 n개의 열에 걸쳐 있을 수 있다. 도 4는 편의상 각 행의 끝에 패리티 비트를 도시하지만, 이 기술 분야에 통상의 지식을 가진 자라면 패리티 비트가 성분 코드워드 내 모든 데이터 비트(410)의 끝과 같이 성분 코드워드의 임의의 지점에 위치될 수 있다는 것을 이해할 수 있을 것이다. 데이터 비트(410) 및 패리티 비트(412)를 다수의 행 및 열에 걸쳐 랩핑함으로써, 더 긴 성분 코드워드의 정정 능력을 유지하면서 계단 코드 내 개별 블록의 크기가 감소될 수 있다. 다양한 실시예에서, 블록의 특정 크기뿐만 아니라 계단 코드 내의 블록의 수는 성능 요건에 따라 조절될 수 있다. 예를 들어, 엄격한 타이밍 요구 조건을 갖는 실시예는 보다 완화된 타이밍 요구 조건을 갖는 실시예보다 더 적은 수의 블록을 갖게 구현될 수 있다. 블록의 수를 감소시킴으로써, 디코딩에 필요한 시간이 감소될 수 있다.
기존의 계단 코드에서 성분 코드워드는 다수의 행에 걸쳐 있지 않다. 즉, 기존의 계단 코드는 n=1을 갖는다. 이 포맷은 적절한 데이터 정정 능력을 달성하기 위해 큰 블록 크기를 갖는 긴 코드워드를 요구한다. 이러한 큰 계단 코드 블록은 일부 응용에는 적합하지만, 데이터가 훨씬 더 작은 섹터 크기로 루틴하게 교환되는 메모리 응용과 같은 다른 응용에서는 허용될 수 없다. 예를 들어 광 통신에 사용되는 것과 같은 기존의 계단 코드는 약 16KB 블록으로 데이터를 전송하고, 여기서 총 계단 코드는 100KB 이상만큼 크다. 그러나, 저장 응용과 같은 다양한 다른 응용에서는 일반적인 블록 크기는 이상적으로는 훨씬 더 작다(예를 들어, 저장 응용에서는 4KB이다). 광 통신에 사용될 수 있는 큰 블록은 저장과 같은 더 작은 트랜잭션을 이용하는 응용에 사용하기에는 간단하게 비실용적이다. 그러나, 성분 코드워드(400)를 다수의 행에 걸쳐 연장시킴으로써, 본 명세서에서 개시된 바와 같은 계단 코드는 비실용적인 블록 크기를 초래하지 않고, 긴 성분 코드워드의 에러 정정 능력으로부터 장점을 얻을 수 있다.
도 5는 본 발명의 일 실시예에 따라 일반적으로 500으로 표시된 예시적인 계단 코드이다. 계단 코드(500)는 도 2의 계단 코드(200)로 구현될 수 있다. 계단 코드(500)는 복수의 수평 성분 코드워드(502) 및 수직 성분 코드워드(504)를 포함한다. 수평 성분 코드워드(502) 및 수직 성분 코드워드(504)는 정점(vertex)(506)에서 교차할 수 있다. 수평 성분 코드워드(502)는 다수의 행에 걸쳐 있을 수 있고, 수직 성분 코드워드(504)는 다수의 열에 걸쳐 있을 수 있다. 즉, 각 성분 코드워드의 길이는 계단 스텝(staircase step)의 길이보다 더 클 수 있다. 그 결과, 각각의 성분 코드워드는 미리 결정된 랩핑 방식에 따라 랩핑된다. 예를 들어, 일 실시예에서, 코드워드가 행에 저장하기 위한 비트 한계(예를 들어, 2m 비트)에 도달될 때, 그 다음 비트는 그 다음의 행의 시작 부분에 저장될 수 있다. 다른 실시예에서, 성분 코드워드의 비트는, 비트가 하나의 행(또는 열)에서 좌측에서부터 우측으로 (또는 상단에서부터 하단으로) 저장되고, 후속 행(또는 열)에서 비트가 반대 방향으로 저장되는 사행식(snake-like) 방식으로 저장될 수 있다. 특정 랩핑 방식이 인코딩 목적에는 중요하지 않지만, 계단 코드가 디코딩될 때, 에러 비트를 검출한 것에 응답하여 올바른 비트가 정정되는 것을 보장하기 위해 랩핑 방식이 알려져야 한다.
수평 성분 코드워드(502)와 수직 성분 코드워드(504) 각각은 n x 2m 비트 길이이므로, 각각의 정점(506)은 n x n 서브블록을 보호한다. 단일 계단 성분 코드워드 및 단일 열 성분 코드워드를 갖는 기존의 계단 코드에서, 교차하는 성분 코드워드의 임의의 쌍은 교차점에서 단일 비트를 보호한다. 대조적으로, 본 발명의 실시예에 따른 계단 코드는 정점(506)에서 n x n 서브블록을 보호할 수 있고, 이는 보호된 정점 내 에러 비트가 성분 코드워드의 패리티 비트에 기초하여 정정될 수 있다는 것을 의미한다. 일 실시예에서, 계단 코드는 다음과 같이, m = 48, r = 5, L = 16 및 n = 6으로 구성될 수 있는데, 여기서 각 성분 코드워드는 576개의 데이터 비트, 32개의 패리티 비트, 및 t=3 비트의 정정 능력을 갖는 BCH 코드워드이다.
다양한 실시예에서, 다수의 열 또는 행에 걸쳐 성분 코드워드를 구성하면 표준 디코딩 기술을 사용하여 정정될 수 없는 성분 코드워드에서 발생하는 에러 확률을 증가시킬 수 있다. 기존의 계단 코드에서 각 비트는 두 개의 성분 코드워드에 의해 보호된다. 에러 비트가, 각 성분 코드워드에 대해 정정될 수 있는 것보다 더 많은 수의 에러를 갖는 성분 코드워드, 즉 수평 및 수직 성분 코드워드에 속하는, 일반적으로 실속 패턴(stall pattern)이라고 지칭되는 정정될 수 없는 에러가 발생할 수 있다. 에러 비트는 기존의 계단 코드의 단일 비트 정점에서보다 n x n 정점(506)에서 발생할 가능성이 증가되기 때문에 실속 패턴은 랩핑된 성분 코드워드를 갖는 계단 코드에서 더 널리 행해질 수 있다. 작은 정정 능력을 갖는 BCH 코드와 같은 추가적인 외부 코드는 계단 코드를 사용하여 데이터를 인코딩하기 전에 데이터를 인코딩하여 실속 패턴이 증가하는 가능성을 보상하기 위해 사용될 수 있다. 예를 들어, 도 1을 참조하면, 선택적인 BCH 인코더 회로(114)는 이 기능을 수행하는 역할을 할 수 있다. 비교적 낮은 정정 능력을 갖는 외부 BCH 코드를 포함함으로써, 계단 디코딩 후에 임의의 잔류 비트 에러는 외부 BCH 코드를 사용하여 정정될 수 있다. 일 예에서, 외부 BCH 코드는 t=25 비트의 정정 능력을 가질 수 있다.
도 6은 본 발명의 일 실시예에 따라 일반적으로 600으로 표시된 SCC 디코더 회로의 블록도이다. SCC 디코더 회로(600)는 도 1의 SCC 디코더 회로(112)로서 구현될 수 있다. 일반적으로, SCC 디코더 회로(600)는 도 5와 관련하여 전술한 바와 같이, 각각의 성분 코드워드가 다수의 열 및 다수의 행에 걸쳐 있는 성분 코드워드를 갖는 계단 코드를 디코딩하도록 구성된다. SCC 디코더 회로(600)는 수평 신드롬 연산 회로(602), 수직 신드롬 연산 회로(604), 수평 신드롬 메모리(606), 수직 신드롬 메모리(608), 하이브리드 디코드 회로(610), 맵퍼(mapper) 회로(612), 계단 신드롬 업데이트 회로(614), BCH 신드롬 연산 회로(616), BCH 신드롬 업데이트 회로(614), 벌리캄프 회로(Berlekamp circuit)(620), 치엔 탐색(Chien search) 회로(622), 버퍼(624), 및 XOR 플립(flip)(626)을 포함한다.
수평 신드롬 연산 회로(602)는 계단 코드 내 수평 성분 코드워드의 전체 또는 일부 신드롬을 계산하도록 구성될 수 있다. 이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이, 신드롬 디코딩은 BCH 코드와 같은 선형 코드를 디코딩하는데 매우 효율적인 방법이다. 이 신드롬은 성분 코드워드 내 에러 위치를 나타낸다. 주어진 성분 코드워드의 전체 또는 일부 신드롬은 성분 코드워드 내 수신된 데이터 비트 및 패리티 비트의 전체 또는 일부에 기초하여 계산될 수 있다. 다양한 실시예에서, 성분 코드워드 비트는 SCC 디코더 회로(600)에 의해 직렬로 수신될 수 있다. 일 실시예에서, 수신된 비트는 성분 코드워드의 데이터 비트가 수신되고 나서 성분 코드워드의 패리티 비트가 수신되도록 수평 성분 코드워드에 대해 수신될 수 있다. 성분 코드워드가 (예를 들어, 메모리 어레이(108)로부터) 수신될 때, 수평 신드롬 연산 회로(602)는 수신된 코드워드 내 하나 이상의 에러의 위치를 식별하기 위해 수평 성분 코드워드에 대한 신드롬을 계산할 수 있다. 수평 신드롬 연산 회로(602)는, 성분 코드워드에 대한 모든 성분 코드워드 비트(데이터 비트 및 패리티 비트)가 수신되어 신드롬 계산이 완료될 때까지 성분 코드워드 비트가 여전히 수신되고 있을 때 수평 성분 코드워드의 신드롬을 연산할 수 있다.
수평 신드롬 메모리(606)는 일반적으로 임의의 유형의 메모리일 수 있다. 수평 신드롬 메모리(606)는 하나 이상의 블록의 수평 성분 코드워드에 대한 전체 또는 일부 신드롬을 저장하도록 구성될 수 있다. 다양한 실시예에서, 수평 신드롬 메모리(606)는 적어도 2개의 블록의 성분 코드워드에 대한 신드롬을 저장하도록 구성될 수 있다. 둘 이상의 블록에 대한 신드롬을 저장함으로써, 수평 신드롬 메모리(606)는 이전 블록에 추가 연산 및 정정이 수행되는 동안 수평 신드롬 연산 회로(602)가 후속 블록에 신드롬 연산을 시작하도록 할 수 있다. 일 실시예에서, 수평 신드롬 메모리(606)는 2개의 블록에 걸쳐 있는 수평 성분 코드워드에 대한 모든 신드롬을 저장하도록 구성된다. 주어진 블록 쌍에 대한 모든 성분 코드워드를 저장함으로써, 신드롬이 교차 성분 코드워드(즉, 수직 성분 코드워드)에 대한 보정에 기초하여 업데이트될 수 있다.
수직 신드롬 연산 회로(604)는 계단 코드 내 수직 성분 코드워드의 전체 또는 일부 신드롬을 계산하도록 구성된다. 전체 또는 일부 수직 신드롬은 수직 신드롬 메모리(608)에 저장될 수 있다. 다양한 실시예에서, 수평 신드롬 연산 회로(602)가 수평 성분 코드워드에 대한 신드롬을 계산하고 있음과 동시에 수직 신드롬 연산 회로(604)는 수직 성분 코드워드의 일부 신드롬을 계산하도록 구성될 수 있다.
수직 신드롬 메모리(608)는 일반적으로 임의의 유형의 메모리일 수 있다. 수직 신드롬 메모리(608)는 계단 코드의 하나 이상의 블록의 성분 코드워드에 대한 전체 또는 일부 신드롬을 저장하도록 구성될 수 있다. 다양한 실시예에서, 수직 신드롬 메모리(608)는 계단 코드의 적어도 두 블록에 대한 신드롬을 저장하도록 구성될 수 있다. 2개 이상의 블록의 성분 코드워드에 대한 신드롬을 저장함으로써, 추가 연산 및 정정이 이전 블록에 수행되는 동안 수직 신드롬 메모리(608)는 수직 신드롬 연산 회로(604)가 후속 블록에 신드롬 연산을 시작하게 할 수 있다.
수평 신드롬 연산 회로(602), 수직 신드롬 연산 회로(604), 수평 신드롬 메모리(606) 및 수직 신드롬 메모리(608)의 예시적인 동작이 이제 도 5에 도시된 계단 코드와 관련하여 설명될 것이다. 데이터 비트 및/또는 패리티 비트는 수평 성분 코드워드(502)에 대해 수평 신드롬 연산 회로(602)에 의해 직렬로 수신될 수 있다. 비트가 수신될 때, 수평 신드롬 연산 회로(602)는 수평 성분 코드워드(502)에 대한 신드롬을 계산하고, 결과 신드롬을 수평 신드롬 메모리(606)에 저장한다. 수평 성분 코드워드의 비트는 수직 신드롬 연산 회로(604)에 동시에 제공될 수 있다. 전술한 바와 같이, 랩핑된 데이터 비트 및 패리티 비트를 갖는 수평 성분 코드워드 및 수직 성분 코드워드는 n x n 정점(506)에서 오버랩(overlap)한다. 수직 성분 코드워드(504)의 비트는 수평 성분 코드워드(502)와 함께 있기 때문에 이 예에서 단일 스트림으로 모두 수신되지는 않지만, 수직 신드롬 연산 회로(604)는 수직 성분 코드워드에 대한 일부 신드롬을 계산할 수 있고, SCC 디코더 회로(600)가 주어진 블록의 수평 성분 코드워드(502)를 통해 진행할 때 반복적으로 수직 신드롬을 형성할 수 있다.
예를 들어, 수평 신드롬 연산 회로(602)는 수평 성분 코드워드(예를 들어, 6개의 행의 데이터 비트 및 패리티 비트)를 수신하고, 수평 성분 코드워드에 대한 수평 신드롬을 연산하기 시작할 수 있다. 모든 비트가 수신되면, 수평 신드롬 연산 회로(602)는 전체 수평 성분 코드워드(502)에 대한 신드롬을 계산하고, 그 결과를 수평 신드롬 메모리(606)에 저장할 수 있다. 동시에, 수평 성분 코드워드(502)가 교차하는 각각의 n x n 정점(506)에 대해, 수직 신드롬 연산 회로(604)는 정점(506)과 교차하는 수직 성분 코드워드(504)에 대한 일부 신드롬을 계산할 수 있다. 수평 신드롬 연산 회로(602)가 제1 수평 성분 코드워드(502)에 대한 신드롬 계산을 완료하면, 수평 신드롬 연산 회로(602)는 그 다음의 수평 성분 코드워드(502)로 이동한다. 유사하게, 수직 신드롬 연산 회로(604)는 제2 수평 성분 코드워드(502)와 오버랩하는 수직 성분 코드워드(504)에 대한 일부 신드롬을 계산하기 시작한다. 수평 신드롬과 동시에 일부 수직 신드롬을 연산함으로써, 신드롬 연산의 속도 및 효율이 증가될 수 있다. 특히, 수평 스텝(예를 들어, 각각이 6개의 행에 걸쳐 있는 8개의 수평 성분 코드워드)에 대한 신드롬 계산이 완료되면, 계단 코드 내 그 다음 스텝의 수직 신드롬이 부분적으로 계산된다. 이후, 수평 신드롬 연산 회로가 계단 코드(500)의 그 다음 스텝에 대한 신드롬을 계산하기 시작할 때, 나머지 일부 수직 신드롬이 계산된다. 따라서, SSC 디코더 회로(600)는 수평 성분 코드워드(502) 및 수직 성분 코드워드(504)에 대한 신드롬을 동시에 계산하는 것을 회피하는데, 이는 기존의 계단 코드 디코딩 방법보다 더 효율적으로 디코딩할 수 있게 한다.
하이브리드 디코드 회로(610)는, 수평 신드롬 메모리(606) 및 수직 신드롬 메모리(608)에 각각 저장된 수평 및 수직 신드롬에 액세스하고, 각각의 신드롬에 기초하여 수평 및 수직 성분 코드워드에서 검출된 에러의 위치를 결정하도록 구성될 수 있다. 다양한 실시예에서, 하이브리드 디코드 회로(610)는 계단 코드를 생성하는데 사용된 특정 랩핑 방식과 독립적으로 에러 비트의 위치를 결정할 수 있다. 예를 들어, 하이브리드 디코드 회로(610)는 성분 코드워드 내 에러 비트의 위치(예를 들어, 성분 코드워드의 시작 부분으로부터의 위치)를 나타낼 수 있으나, 반드시 계단 코드 내 에러 비트의 위치(예를 들어, 계단 코드 내 특정 행 및 열)를 나타내는 것은 아닐 수 있다.
맵퍼(612)는 하이브리드 디코드 회로(610)로부터의 식별된 비트 에러의 위치를 디코딩되는 특정 블록 내의 비트 위치로 변환하도록 구성된다. 전술한 바와 같이, 성분 코드워드는 계단 코드의 블록에서 다수의 행 및/또는 열을 가로질러 랩핑될 수 있다. 하이브리드 디코드 회로(610)가 에러 비트의 위치를 결정할 때, 이 하이브리드 디코드 회로는 계단 코드를 생성하는데 사용된 특정 랩핑 방식과는 독립적으로 그렇게 한다. 맵퍼(612)는, 정정을 요구하는 계단 코드의 블록 내 에러 비트의 실제 위치(예를 들어, 성분 코드워드 내 위치와 달리 특정 행 및 열)를 결정하기 위해 특정 맵핑 방식을 참조한다.
계단 신드롬 업데이트 회로(614)는 하이브리드 디코드 회로(610) 및 맵퍼(612)에 의해 결정된 에러 비트의 위치에 기초하여, 수평 신드롬 메모리(606) 및 수직 신드롬 메모리(608)에 저장된 계산된 신드롬을 업데이트하도록 구성된다. 전술한 바와 같이, 수직 신드롬 연산 회로(604)는 수평 신드롬 연산 회로(602)가 전체 수평 성분 코드워드에 대한 신드롬을 계산함과 동시에 일부 수직 신드롬을 계산할 수 있다. 그러나, 하이브리드 디코드 회로(610)가 수평 성분 코드워드(또는 수직 성분 코드워드)의 비트가 정정을 필요로 한다고 결정하면, 이 정정된 비트는 정점(506)에서 수직 성분 코드워드의 일부 및/또는 수평 성분 코드워드의 신드롬에 대해 계산된 일부 수직 신드롬의 계산에 영향을 줄 수 있다. 계단 신드롬 업데이트 회로(614)는 수평 신드롬 메모리(606) 및/또는 수직 신드롬 메모리(608)에 액세스하고, 식별된 에러 비트 위치에 기초하여 계산된 신드롬을 업데이트한다. 따라서, 하이브리드 디코드 회로(610) 및 맵퍼(612)가 에러 비트의 위치를 결정함에 따라, 신드롬은 실시간으로 업데이트될 수 있다. 업데이트된 신드롬은 성분 코드워드 내 추가적인 에러 비트를 나타낼 수 있다. 따라서, 업데이트된 신드롬은 계단 신드롬 업데이트 회로(614)에 제공될 수 있고, 이 계단 신드롬 업데이트 회로는 업데이트된 신드롬에 기초하여 추가 업데이트가 필요한지 여부를 결정할 수 있다.
전술한 바와 같이, 계단 코드는 선택적인 외부 BCH 코드(또는 다른 유형의 코드)를 사용하여 더 인코딩될 수 있다. 이러한 실시예에서, BCH 신드롬 연산 회로(616)는 외부 BCH 코드의 신드롬을 계산하도록 구성될 수 있다. 다양한 실시예에서, BCH 신드롬 연산 회로(616)는 계단 코드의 성분 코드워드의 신드롬을 연산하는 수평 신드롬 연산 회로(602) 및 수직 신드롬 연산 회로(604)와 병렬로 BCH 신드롬을 연산하도록 구성될 수 있다. 계단 신드롬 업데이트 회로(614)와 유사하게, BCH 신드롬 업데이트 회로(614)는 에러 비트가 하이브리드 디코드 회로(610) 및 맵퍼(612)에 의해 정정될 때 정정된 비트에 기초하여 BCH 신드롬 연산 회로(616)에 의해 계산된 신드롬을 업데이트하도록 구성될 수 있다. 따라서, 맵퍼(612)는 연산된 BCH 신드롬을 정정하기 위해 BCH 신드롬 업데이트 회로(614)에 결합될 수 있다.
벌리캄프 회로(620) 및 치엔 탐색 회로(622)는 외부 BCH 코드와 관련된 동작을 수행하도록 구성된다. 예를 들어, 벌리캄프 회로(620)는 BCH 코드 내 에러를 찾는 다항식을 결정하도록 구성될 수 있다. 다양한 실시예에서, 벌리캄프 회로(620)는 BCH 신드롬 연산 회로(616) 및 BCH 신드롬 업데이트 회로(614)에 의해 결정된 신드롬에 기초하여 에러를 찾는 다항식을 식별하기 위해 벌리캄프-메시(Berlekamp-Massey) 알고리즘을 구현한다. 치엔 탐색 회로(622)는 벌리캄프 회로(620)에 의해 결정된 다항식의 근(root)을 결정하도록 구성될 수 있다. 식별된 근은 디코딩된 데이터의 어느 비트가 정정을 필요로 하는지를 결정하는데 사용될 수 있다.
버퍼(624)는 제공될 데이터 비트를 저장하도록 구성된다. 다양한 실시예에서, 버퍼(624)는 2개 이상의 블록에 대한 데이터 비트를 동시에 저장하도록 구성될 수 있다. 예를 들어, 버퍼(624)는 2개의 블록에 대한 데이터 비트(예를 들어, 2개의 4KB 코드워드)를 저장하도록 구성될 수 있다. 도 6에서 수평 신드롬 연산 회로(602), 수평 신드롬 연산 회로(604), BCH 신드롬 연산 회로(616) 및 다른 블록에 관하여 전술한 회로 및 동작은 모두 신드롬 영역에서 동작한다. 즉, 하이브리드 디코드 회로(610)와 맵퍼(612)가 에러 비트의 위치를 식별할 때, 계단 신드롬 업데이트 회로(614)는 계산된 신드롬을 정정하는 역할을 한다. 에러 비트가 성분 코드워드 및 외부 BCH 코드의 신드롬을 사용하여 식별되면, 식별된 비트는 전체 코드워드(즉, 계단 코드의 블록)에서 정정될 수 있고, 이 전체 코드워드는 이후 사용을 위해 호스트(102)에 제공된다. 요청된 코드워드 내의 비트를 정정하기 위해, 데이터 비트는 버퍼(624)에 저장될 수 있고, 식별된 에러 데이터 비트는 XOR 플립(626)에 의해 정정될 수 있다. 다양한 실시예에서, 코드워드는 다양한 메모리 디바이스에서 공통적으로 사용되는 4KB 코드워드이다. XOR 플립(626)은 (BCH 신드롬 연산 회로(616), BCH 신드롬 업데이트 회로(614), 벌리캄프 회로(620), 및 치엔 탐색 회로(622)에 의해 디코딩된) 외부 BCH 코드 및 맵퍼(612)에 의해 식별된 에러 비트의 위치에 기초하여 전체 코드워드 내 비트의 논리 상태를 선택적으로 변경하도록 구성될 수 있다. 식별된 에러 비트가 정정되면, 정정된 코드워드는 호스트(102)에 제공될 수 있다.
도 7은 본 발명의 일 실시예에 따라 일반적으로 700으로 표시된 예시적인 계단 코드이다. 특정 저장 응용에서, 계단 코드는 코드워드가 요청된 섹터의 크기보다 더 커지도록 구성될 수 있다. 즉, 이러한 응용에서 코드워드는 약 4KB로 제한될 필요가 없다. 코드워드가 클수록 에러 층이 적어져서, 전술한 외부 BCH 코드가 필요하지 않을 수 있다. 이러한 응용의 예로는, 스트리밍과 같은 순차적 판독 및 기입에 의해 지배되는 응용, 순차적 기입에 의해 지배되지만, 반드시 순차적 판독에 의해 지배되는 것은 아닌 응용, 및 데이터가 자주 액세스되지 않아 엄격한 대기 시간이 중요하지 않는 콜드 저장(cold storage) 응용을 포함하지만 이로 국한되지는 않는다. 도 7 및 도 8은 증가된 정정 능력을 각각 갖는 여러 하드(hard) 입력 디코딩 층을 허용하는 윈도우 디코딩 전략을 설명한다.
계단 코드(700)는 계단 형태로 배열된 다수의 블록(702)을 포함한다. 블록(702)은 수평 성분 코드워드(704) 및 수직 성분 코드워드(706)를 포함한다. 각각의 성분 코드워드(704, 706)는 다수의 데이터 비트(708) 및 다수의 패리티 비트(710)를 포함한다. 도 7의 예시적인 실시예에서, 각각의 블록은 288 x 288 비트이다. 각각의 성분 코드워드(704, 706)는 544개의 데이터 비트(708) 및 32개의 패리티 비트(710)를 포함한다. 따라서, 각각의 성분 코드워드(704)는 계단 코드의 단일 행 또는 열 내에 들어맞는다. 각각의 스텝에 대해, 계단 코드(700)는 데이터 비트(708)를 보호하는 256개의 수직 성분 코드워드(706) 및 수평 패리티 비트(710)를 보호하는 32개의 수직 성분 코드워드(706)를 포함한다. 12개의 블록을 갖는 예시적인 실시예에서, 각각의 스텝(즉, 계단 코드(700) 내의 한 쌍의 인접한 블록)은 약 20KB의 데이터 비트(708) 및 패리티 비트(710)를 포함하고, 전체 12 블록 계단 코드는 약 124KB의 데이터 비트를 포함한다. 요청된 데이터 섹터가 계단 코드보다 상당히 더 작은 경우, 요청된 섹터를 얻기 위해 전체 계단 코드(700)를 디코딩하는 것은 비효율적이다. 따라서, 실시예는 다양한 정정 능력을 갖고 요청된 섹터를 디코딩하는 윈도우 디코딩 방식을 개시한다.
도 8은 본 발명의 일 실시예에 따라 일반적으로 800으로 표시된 계단 코드를 디코딩하는 방법을 도시하는 흐름도이다. 동작(802)에서, 제어 회로(106)와 같은 제어 회로는 블록(Bi)으로부터 성분 코드워드를 판독한다. 다양한 실시예에서, 블록(Bi)은 계단 코드의 중심 블록일 수 있다. 즉, 계단 코드에서 블록(Bi)의 전과 후에 같은 개수의 블록이 존재할 수 있다. 다른 실시예에서, 블록(Bi)은 계단 코드의 중심 블록 이외의 블록일 수 있다. 동작(804)에서, 제어 회로는 블록(Bi)의 성분 코드워드를 디코딩한다. 블록(Bi)을 디코딩하는 것은 일반적으로 임의의 적절한 수단으로 수행될 수 있다. 다양한 실시예에서, 블록(Bi)의 성분 코드워드를 디코딩하는 메커니즘은 계단 코드의 성분 코드워드를 구성하는데 사용되는 인코딩 유형에 의존한다. 예를 들어, 성분 코드워드는 BCH 코드를 사용하여 인코딩될 수 있으며, 이 경우 BCH 디코딩은 성분 코드워드를 디코딩하는데 사용된다.
결정 블록(806)에서, 제어 회로는 동작(804)의 디코드 동작이 성공적이었는지 여부를 결정한다. 다양한 실시예에서, 성분 코드워드에서 발생하는 에러의 수는 성분 코드워드를 구성하는데 사용된 인코딩 메커니즘에 기초하여 완전히 정정될 수 있다. 예를 들어, 각각의 성분 코드워드가 t=3의 정정 용량을 갖는다면, 각각의 성분 코드워드의 최대 3개의 데이터 비트가 성분 코드워드의 패리티 비트를 사용하여 정정될 수 있다. 대안적으로, 성분 코드워드의 단지 패리티 비트만을 사용하여 정정될 수 있는 것보다 성분 코드워드에 더 많은 에러가 있을 수 있다. 예를 들어, 성분 코드워드가 t=3의 정정 용량을 갖지만, 성분 코드워드가 4개의 에러 비트를 포함하면, 성분 코드워드는 성분 코드워드의 패리티 비트만을 사용하여 정정될 수 없다. 디코드가 성공적이라면(판정 블록(806), "예" 분기), 블록은 동작(808)에서 호스트(즉, 블록을 요청하는 프로세서)로 리턴된다. 제어 회로는 하나 이상의 데이터 버스를 통해 호스트에 블록을 제공할 수 있다. 제어 회로가 디코드가 성공적이지 않았다고 결정하면(결정 블록(806), "아니오" 분기), 제어 회로는 동작(810)에서 블록(Bi-j) 및 블록(Bi+j)으로부터 성분 코드워드를 판독한다. 제어 회로는 블록(Bi)의 양측으로부터 블록을 검색할 수 있다. 계단 코드 내 각각의 비트는 2개의 성분 코드워드(즉, 수평 성분 코드워드 및 수직 성분 코드워드)에 의해 보호되기 때문에, 디코딩 동작을 블록(Bi)의 양측의 블록으로 확장하면 추가적인 비트를 코드워드에서 디코딩할 수 있다.
동작(812)에서 제어 회로는 검색된 추가 블록과 블록(Bi)에 디코딩을 수행한다. 추가 블록은 전체 계단 코드보다 더 작을 수 있다. 예를 들어, 블록(Bi)은 블록(Bi)의 양측의 하나의 추가 블록 또는 2개의 추가 블록 등에 기초하여 디코딩될 수 있다. 디코딩은 데이터를 인코딩하는데 사용된 인코딩 메커니즘에 기초하여 초기 디코딩과 유사한 방식으로 수행될 수 있다. 초기 블록의 양측의 추가 블록을 디코딩함으로써, 이 코드워드의 패리티 비트에만 기초하여 정정될 수 없는 에러를 포함하는 블록(Bi) 내 성분 코드워드가 주변 블록의 오버랩하는 성분 코드워드를 사용하여 비트의 값을 결정함으로써 정정될 수 있다. 예를 들어, 도 7을 참조하면, 수평 성분 코드워드(704)가 이 성분 코드워드와 관련된 패리티 비트(710)를 사용하여 정정될 수 있는 것보다 더 많은 에러 비트를 포함하면, 수직 성분 코드워드(706)를 디코딩하는 것은 수평 성분 코드워드(704)의 비트를 디코딩하는데 사용될 수 있다.
결정 블록(814)에서, 제어 회로는 블록(Bi)이 동작(812)에서 성공적으로 디코딩되었는지 여부를 결정한다. 블록(Bi)이 성공적으로 디코딩되었다면(결정 블록(814), "예" 분기), 제어 회로는 동작(808)에서 요청된 섹터를 호스트로 리턴한다. 제어 회로(814)가 블록(Bi)이 성공적으로 디코딩되지 않았다고 결정하면(결정 블록(814), "아니오" 분기), 제어 회로는 결정 블록(816)에서 전체 계단 코드가 디코딩되었는지 여부를 결정한다. 전체 계단 코드가 디코딩되었다면(결정 블록(Bi), "예" 분기), 제어 회로는 동작(818)에서 에러 복구를 개시하고 방법(800)의 실행은 종료된다. 제어 회로가 전체 계단 코드가 디코딩되지 않았다고 결정하면(결정 블록(816), "아니오" 분기), 제어 회로는 디코딩될 블록의 범위에 포함될 블록의 수를 증분시키고, 동작(810)에서 새로운 더 큰 윈도우에서 블록에 대한 성분 코드워드를 판독하는 것으로 진행한다. 방법(800)은 요청된 섹터가 성공적으로 디코딩될 때까지 또는 전체 계단 코드가 디코딩되고 에러 복구가 개시될 때까지 반복될 수 있다. 증가하는 수의 블록을 반복적으로 디코딩하면 요청된 섹터를 디코딩하는 데 필요한 블록으로만 디코딩 동작을 제한함으로써 디코딩 시간을 최소화하면서 요청된 섹터를 호스트에 제공할 수 있다. 그리하여, 디코딩 동작은 호스트의 요청을 만족시키는데 계단 코드의 일부만을 디코딩하는 것이 필요할 때에는 전체 계단 코드를 디코딩하여 불필요한 자원을 소비하는 것을 회피한다.
도 9는 본 발명의 일 실시예에 따른 메모리 디바이스(900)를 포함하는 장치를 도시한다. 메모리 디바이스(900)는 데이터를 저장하도록 구성된 복수의 메모리 셀을 갖는 메모리 어레이(960)를 포함한다. 메모리 셀은 다양한 신호 라인, 즉 워드 라인(WL) 및/또는 비트 라인(BL)의 사용을 통해 어레이에서 액세스될 수 있다. 메모리 셀은 NAND 또는 NOR 플래시 셀, 상 변화 메모리 셀과 같은 비휘발성 메모리 셀일 수 있고, 또는 일반적으로 임의의 유형의 메모리 셀일 수 있다. 메모리 어레이(960)의 메모리 셀은 메모리 어레이 아키텍처로 배열될 수 있다. 예를 들어, 일 실시예에서, 메모리 셀은 3D 크로스-포인트(cross-point) 아키텍처로 배열된다. 다른 실시예에서, 다른 메모리 어레이 아키텍처, 특히 예를 들어, 단일-레벨의 크로스-포인트 아키텍처가 사용될 수 있다. 메모리 셀은 1 비트의 데이터용 데이터를 저장하도록 구성된 단일 레벨 셀일 수 있다. 메모리 셀은 또한 1 비트를 초과하는 데이터용 데이터를 저장하도록 구성된 다중 레벨 셀일 수 있다.
데이터 스트로브 신호(data strobe signal)(DQS)는 데이터 스트로브 버스(도시되지 않음)를 통해 전송될 수 있다. DQS 신호는 메모리 디바이스(900)로 또는 메모리 디바이스(900)로부터 데이터 전송을 위한 타이밍 정보를 제공하는데 사용될 수 있다. I/O 버스(928)는 I/O 버스(928)와 내부 데이터 버스(922), 내부 어드레스 버스(924) 및/또는 내부 커맨드 버스(926) 사이에 데이터 신호, 어드레스 정보 신호 및 다른 신호를 라우팅하는 I/O 제어 회로(920)에 연결된다. I/O 제어 회로(920)는 상태 레지스터 버스(932)를 통해 상태 레지스터(934)에 결합된다. 상태 레지스터(934)에 의해 저장된 상태 비트는 메모리 디바이스(100)에 제공된 판독 상태 커맨드에 응답하여 I/O 제어 회로(920)에 의해 제공될 수 있다. 상태 비트는 메모리 및 그 동작의 다양한 양태의 상태 조건을 나타내는 각각의 값을 가질 수 있다. I/O 제어 회로(920)는 또한 메모리 어레이(960)에 저장되거나 메모리 어레이로부터 검색될 데이터에 인코딩 및 디코딩 동작을 수행하도록 구성될 수 있다. 다양한 실시예에서, I/O 제어 회로(920)는 도 1의 제어 회로(106)로서 구현될 수 있다.
메모리 디바이스(900)는 또한 메모리 디바이스(900)의 동작을 제어하기 위해 커맨드 버스(926)를 통해 또는 외부에서 다수의 제어 신호(938)를 수신하는 제어 로직(910)을 포함한다. 제어 신호(938)는 임의의 적절한 인터페이스 프로토콜로 구현될 수 있다. 예를 들어, 제어 신호(938)는 동적 랜덤 액세스 메모리 및 플래시 메모리(예를 들어, NAND 플래시)에 공통적으로 핀(pin) 기반하거나 또는 연산-코드(op-code) 기반일 수 있다. 예시적인 제어 신호(938)는 클록 신호, 판독/기입 신호, 클록 인에이블 신호 등을 포함한다. 커맨드 레지스터(936)는, I/O 제어 회로(920)에 의해 수신된 정보를 저장하고 제어 로직(910)에 정보를 제공하기 위해 내부 커맨드 버스(926)에 결합된다. 제어 로직(910)은 예를 들어, 상태 조건이 변함에 따라 상태 비트를 업데이트하기 위해, 상태 레지스터 버스(932)를 통해 상태 레지스터(934)에 더 액세스할 수 있다. 제어 로직(910)은 메모리 디바이스(900)의 다양한 회로에 내부 제어 신호를 제공하도록 구성될 수 있다. 예를 들어, 메모리 액세스 커맨드(예를 들어, 판독, 기입)를 수신한 것에 응답하여, 제어 로직(910)은 메모리 액세스 동작을 수행하기 위해 다양한 메모리 액세스 회로를 제어하는 내부 제어 신호를 제공할 수 있다. 다양한 메모리 액세스 회로는 메모리 액세스 동작 동안 사용되고, 일반적으로 행 디코더(row decoder)와 열 디코더(column decoder), 전하 펌프 회로, 신호 라인 드라이버, 데이터 및 캐시 레지스터, I/O 회로 등과 같은 회로를 포함할 수 있다.
행 디코더(940) 및 열 디코더(950)는 메모리 동작, 예를 들어, 판독 및 기입 동작을 위한 메모리 셀의 블록을 선택하는데 사용될 수 있다. 행 디코더(940) 및/또는 열 디코더(950)는 메모리 어레이(960) 내의 하나 이상의 신호 라인에 바이어스 신호를 제공하도록 구성된 하나 이상의 신호 라인 드라이버를 포함할 수 있다.
데이터 I/O 회로(970)는 제어 로직(910)으로부터 수신된 신호에 기초하여 I/O 제어 회로(920)와 메모리 어레이(960) 간의 데이터 전달을 용이하게 하도록 구성된 하나 이상의 회로를 포함한다. 다양한 실시예에서, 데이터 I/O 회로(970)는 메모리 어레이(960)와 I/O 제어 회로(920) 간의 데이터 전송을 관리하기 위해 하나 이상의 레지스터, 버퍼 및 다른 회로를 포함할 수 있다. 예를 들어, 기입 동작 동안, I/O 제어 회로(920)는 I/O 버스(928)를 통해 기입될 데이터를 수신하고, 이 데이터를 내부 데이터 버스(922)를 통해 데이터 I/O 회로(970)에 제공한다. 데이터 I/O 회로(970)는 행 디코더(940) 및 열 디코더(950)에 의해 지정된 위치에서 제어 로직(910)에 의해 제공된 제어 신호에 기초하여 데이터를 메모리 어레이(960)에 기입한다. 판독 동작 동안, 데이터 I/O 회로(970)는 행 디코더(940) 및 열 디코더(950)에 의해 지정된 어드레스에서 제어 로직(910)에 의해 제공된 제어 신호에 기초하여 메모리 어레이(960)로부터 데이터를 판독한다. 데이터 I/O 회로(970)는 판독 데이터를 내부 데이터 버스(922)를 통해 I/O 제어 회로(920)에 제공한다. 이후, I/O 제어 회로(920)는 판독 데이터를 I/O 버스(928) 상에 제공한다.
이 기술 분야에 통상의 지식을 가진 자라면, 본 명세서에 개시된 실시예와 관련하여 설명된 다양한 예시적인 논리 블록, 구성, 모듈, 회로 및 알고리즘 단계가 전자 하드웨어, 프로세서에 의해 실행되는 컴퓨터 소프트웨어, 또는 이들의 조합으로 구현될 수 있다는 것을 더 이해할 수 있을 것이다. 다양한 예시적인 구성 요소, 블록, 구성, 모듈, 회로, 및 단계가 일반적으로 이들의 기능의 관점에서 설명되었다. 이 기술 분야에 통상의 지식을 가진 자라면 각 특정 응용에 대해 다양한 방식으로 설명된 기능을 구현할 수 있지만, 이러한 구현 방식의 결정이 본 발명의 범위를 벗어나는 것으로 해석되어서는 안 된다.
개시된 실시예의 이전 설명은 이 기술 분야에 통상의 지식을 가진 자가 개시된 실시예를 제조하거나 사용할 수 있도록 제공된다. 이러한 실시예에 대한 다양한 변형은 이 기술 분야에 통상의 지식을 가진 자에게는 쉽게 명백할 것이고, 본 명세서에 한정된 원리는 본 발명의 범위를 벗어나지 않고 다른 실시예에 적용될 수 있을 것이다. 따라서, 본 발명은 본 명세서에 도시된 실시예로 한정되는 것으로 의도된 것이 아니고, 이전에 설명한 바와 같은 원리 및 신규한 특징에 부합하는 가능한 가장 넓은 범위로 부여되는 것으로 의도된다.

Claims (25)

  1. 장치로서,
    제1 신드롬 메모리와 통신되도록 결합된 제1 신드롬 연산 회로로서, 상기 제1 신드롬 연산 회로는 복수의 행 및 복수의 열을 갖는 코드워드(codeword)를 수신하도록 구성되고 상기 코드워드의 제1 성분 코드워드의 적어도 일부에 대한 제1 신드롬(syndrome)을 연산하도록 더 구성되고, 계단 코드(staircase code)는 계단 패턴으로 배열된 복수의 블록을 포함하고 상기 코드워드는 상기 계단 코드의 상기 복수의 블록의 일부이고, 상기 제1 신드롬은 상기 제1 신드롬 메모리에 저장되는, 상기 제1 신드롬 연산 회로 -;
    제2 신드롬 메모리와 통신되도록 결합된 제2 신드롬 연산 회로로서, 상기 제2 신드롬 연산 회로는 상기 코드워드를 수신하고 상기 코드워드의 제2 성분 코드워드의 적어도 일부에 대한 제2 신드롬을 연산하도록 구성되고, 상기 계단 코드의 수평 스텝(horizontal step)에 대한 상기 제1 신드롬 연산의 완료에 응답하여 상기 계단 코드 내 그 다음 스텝(subsequent step)의 상기 제2 신드롬이 부분적으로 연산되고, 상기 제2 신드롬은 상기 제2 신드롬 메모리에 저장되는, 상기 제2 신드롬 연산 회로; 및
    상기 제1 신드롬 메모리 및 상기 제2 신드롬 메모리 양쪽에 결합되어 상기 제1 신드롬 및 상기 제2 신드롬에 제각기 액세스하는 하이브리드 디코드 회로(hybrid decode circuit)로서, 상기 하이브리드 디코드 회로는 상기 제1 신드롬 및 상기 제2 신드롬에 기초하여 상기 제1 성분 코드워드 또는 상기 제2 성분 코드워드 내 하나 이상의 에러 비트의 위치를 제각기 결정하도록 구성되는, 상기 하이브리드 디코드 회로
    를 포함하는, 장치.
  2. 제1항에 있어서,
    상기 제1 성분 코드워드 및 상기 제2 성분 코드워드는 상기 코드워드의 2 이상의 행 및 2 이상의 열에 걸쳐 있는, 장치.
  3. 제2항에 있어서,
    상기 제1 성분 코드워드 또는 상기 제2 성분 코드워드 내 상기 하나 이상의 에러 비트의 위치를 상기 코드워드 내 상기 하나 이상의 에러 비트의 위치로 변환하도록 구성된 맵퍼(mapper) 회로를 더 포함하는, 장치.
  4. 제3항에 있어서,
    상기 코드워드 내 상기 하나 이상의 에러 비트의 위치에 기초하여 상기 제1 신드롬과 상기 제2 신드롬 중 적어도 하나를 업데이트하도록 구성된 신드롬 업데이트 회로를 더 포함하는, 장치.
  5. 제1항에 있어서,
    상기 제1 신드롬은 수평 신드롬(horizontal syndrome)을 포함하고 상기 제2 신드롬은 수직 신드롬(vertical syndrome)을 포함하는, 장치.
  6. 제5항에 있어서,
    상기 계단 코드는 외부 코드 인코더 회로에 의해 인코딩된 데이터 비트를 계단 코드 인코더 회로를 사용하여 인코딩함으로써 생성되는, 장치.
  7. 제6항에 있어서,
    상기 외부 코드 인코더 회로에 의해 사용된 인코딩 방법에 기초하여 상기 코드워드의 신드롬을 연산하도록 구성된 제3 신드롬 연산 회로를 더 포함하는, 장치.
  8. 방법으로서,
    계단 코드 인코더 회로에 의해 계단 코드를 생성하는 단계로서, 상기 계단 코드는,
    계단 패턴으로 배열된 복수의 블록을 포함하고, 상기 계단 코드의 상기 복수의 블록 중 각각의 블록은,
    상기 계단 코드의 상기 복수의 블록 중 한 블록의 복수의 행에 걸쳐 있는 복수의 수평 성분 코드워드; 및
    상기 계단 코드의 상기 복수의 블록 중 상기 블록의 복수의 열에 걸쳐 있는 복수의 수직 성분 코드워드를 포함하고,
    상기 복수의 수평 성분 코드워드의 수평 성분 코드워드 및 상기 복수의 수직 성분 코드워드의 수직 성분 코드워드는 상기 계단 코드 인코더 회로에 의해 인코딩되는 복수의 데이터 비트를 포함하는, 상기 계단 코드를 생성하는 단계;
    상기 계단 코드를 메모리 어레이에 저장하는 단계; 및
    상기 복수의 데이터 비트를 검색하기 위해, 계단 코드 디코더 회로에 의해 상기 블록을 디코딩하는 단계
    를 포함하고,
    상기 계단 코드의 상기 블록 내 수평 스텝에 대한 수평 신드롬 연산의 완료에 응답하여 상기 계단 코드의 상기 블록 내 그 다음 스텝의 수직 신드롬을 부분적으로 연산하고,
    상기 블록을 디코딩하는 단계는,
    수평 신드롬 메모리와 통신되도록 결합된 수평 신드롬 연산 회로를 통해, 상기 수평 성분 코드워드의 적어도 일부에 대한 상기 수평 신드롬을 연산하는 단계로서, 상기 수평 신드롬은 상기 수평 신드롬 메모리에 저장되는, 상기 수평 신드롬을 연산하는 단계;
    수직 신드롬 메모리와 통신되도록 결합된 수직 신드롬 연산 회로를 통해, 상기 수직 성분 코드워드의 적어도 일부에 대한 상기 수직 신드롬을 연산하는 단계로서, 상기 수직 신드롬은 상기 수직 신드롬 메모리에 저장되는, 상기 수직 신드롬을 연산하는 단계
    를 포함하고, 하이브리드 디코드 회로는 상기 수평 신드롬 메모리 및 상기 수직 신드롬 메모리 양쪽에 결합되어 상기 수평 신드롬 및 상기 수직 신드롬에 제각기 액세스하고, 상기 하이브리드 디코드 회로는 상기 수평 신드롬 및 상기 수직 신드롬에 기초하여 상기 수평 성분 코드워드 또는 상기 수직 성분 코드워드 내 하나 이상의 에러 비트의 위치를 제각기 결정하도록 구성되는, 방법.
  9. 제8항에 있어서,
    상기 블록을 디코딩하는 단계는,
    상기 수평 성분 코드워드 또는 상기 수직 성분 코드워드 내 하나 이상의 에러 비트의 위치를 식별하는 단계를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 에러 비트를 정정하는 단계를 더 포함하는, 방법.
  11. 제9항에 있어서,
    상기 식별된 에러 비트에 적어도 부분적으로 기초하여 상기 수평 신드롬 및 상기 수직 신드롬을 업데이트하는 단계를 더 포함하는, 방법.
  12. 제9항에 있어서, 상기 에러 비트를 식별하는 단계는,
    상기 하이브리드 디코드 회로와 통신되도록 결합된 맵퍼 회로를 통해 상기 블록 내 상기 에러 비트의 위치를 결정하는 단계를 포함하고,
    상기 맵퍼 회로는 상기 수평 성분 코드워드 또는 상기 수직 성분 코드워드 내 상기 하나 이상의 에러 비트의 위치를 상기 블록 내 상기 하나 이상의 에러 비트의 위치로 변환하도록 구성되는, 방법.
  13. 방법으로서,
    계단 코드의 블록을 수신하는 단계;
    상기 블록을 디코딩하는 단계로서, 상기 계단 코드의 상기 블록 내 수평 스텝에 대한 수평 신드롬 연산의 완료에 응답하여 상기 계단 코드의 상기 블록 내 그 다음 스텝의 수직 신드롬을 부분적으로 연산하고, 상기 블록을 디코딩하는 단계는,
    수평 신드롬 메모리와 통신되도록 결합된 수평 신드롬 연산 회로를 통해, 상기 계단 코드의 상기 블록 내 상기 수평 스텝에 대한 상기 수평 신드롬을 연산하는 단계로서, 상기 수평 신드롬은 상기 수평 신드롬 메모리에 저장된, 상기 수평 신드롬을 연산하는 단계; 및
    수직 신드롬 메모리와 통신되도록 결합된 수직 신드롬 연산 회로를 통해, 상기 계단 코드의 상기 블록 내 상기 그 다음 스텝에 대한 상기 수직 신드롬을 연산하는 단계로서, 상기 수직 신드롬은 상기 수직 신드롬 메모리에 저장된, 상기 수직 신드롬을 연산하는 단계
    를 포함하고, 하이브리드 디코드 회로는 상기 수평 신드롬 메모리 및 상기 수직 신드롬 메모리 양쪽에 결합되어 상기 수평 신드롬 및 상기 수직 신드롬에 제각기 액세스하고, 상기 하이브리드 디코드 회로는 상기 수평 신드롬 및 상기 수직 신드롬에 기초하여 상기 계단 코드의 상기 블록 내 하나 이상의 에러 비트의 위치를 제각기 결정하도록 구성되는, 상기 블록을 디코딩하는 단계;
    상기 블록이 성공적으로 디코딩되었는지 여부를 결정하는 단계;
    상기 블록이 성공적으로 디코딩되지 않았다고 결정한 것에 응답하여, 상기 계단 코드의 추가 블록을 반복적으로 수신하고, 상기 추가 블록에 기초하여 상기 블록을 디코딩하고, 상기 블록이 성공적으로 디코딩되었는지 여부를 결정하는 단계; 및
    상기 블록이 성공적으로 디코딩되었다고 결정한 것에 응답하여, 상기 블록을 제공하는 단계
    를 포함하는, 방법.
  14. 제13항에 있어서, 상기 계단 코드의 상기 블록은 복수의 수직 성분 코드워드 및 복수의 수평 성분 코드워드를 포함하는, 방법.
  15. 제14항에 있어서, 상기 블록은 복수의 비트를 포함하고, 상기 복수의 비트의 각각의 비트는 적어도 하나의 수직 성분 코드워드 및 적어도 하나의 수평 성분 코드워드에 의해 인코딩되는, 방법.
  16. 제15항에 있어서, 상기 복수의 수직 성분 코드워드 및 상기 복수의 수평 성분 코드워드는 Bose-Chaudhuri-Hocquenghem(BCH) 코드를 포함하는, 방법.
  17. 제13항에 있어서, 각각의 반복에 대해, 2개의 추가 블록이 수신되는, 방법.
  18. 제13항에 있어서, 상기 블록이 성공적으로 디코딩되었는지 여부를 결정하는 단계는,
    상기 블록을 성공적으로 디코딩하지 않고 상기 계단 코드 내 모든 블록이 디코딩되었는지 여부를 결정하는 단계; 및
    상기 블록을 성공적으로 디코딩하지 않고 모든 블록이 디코딩되었다고 결정한 것에 응답하여, 에러 복구 동작을 개시하는 단계를 포함하는, 방법.
  19. 제18항에 있어서, 상기 블록은 상기 계단 코드의 중심 블록이고, 상기 계단 코드의 상기 중심 블록의 전과 후에는 같은 개수의 블록이 존재하는, 방법.
  20. 방법으로서,
    복수의 수직 성분 코드워드 및 복수의 수평 성분 코드워드를 갖는 계단 코드 내 데이터 세트를 인코딩하는 단계로서, 상기 수직 성분 코드워드 각각은 상기 계단 코드의 2개 이상의 행에 걸쳐 있고, 상기 수평 성분 코드워드 각각은 상기 계단 코드의 2개 이상의 열에 걸쳐 있는, 상기 계단 코드 내 데이터 세트를 인코딩하는 단계; 및
    상기 복수의 수직 성분 코드워드 및 상기 복수의 수평 성분 코드워드를 디코딩하여 상기 계단 코드 내 상기 데이터 세트를 검색하는 단계
    를 포함하고, 상기 계단 코드 내 수평 스텝에 대해 완전한 수평 신드롬(complete horizontal syndrome)을 연산하는 것에 응답하여, 상기 계단 코드 내 그 다음 스텝의 수직 신드롬을 부분적으로 연산하고,
    상기 복수의 수직 성분 코드워드 및 상기 복수의 수평 성분 코드워드를 디코딩하는 것은,
    수평 신드롬 메모리와 통신되도록 결합된 수평 신드롬 연산 회로를 통해, 상기 수평 성분 코드워드의 적어도 일부에 대한 상기 수평 신드롬을 연산하는 단계로서, 상기 수평 신드롬은 상기 수평 신드롬 메모리에 저장되는, 상기 수평 신드롬을 연산하는 단계;
    수직 신드롬 메모리와 통신되도록 결합된 수직 신드롬 연산 회로를 통해, 상기 수직 성분 코드워드의 적어도 일부에 대한 상기 수직 신드롬을 연산하는 단계로서, 상기 수직 신드롬은 상기 수직 신드롬 메모리에 저장되는, 상기 수직 신드롬을 연산하는 단계
    를 포함하고, 하이브리드 디코드 회로는 상기 수평 신드롬 메모리 및 상기 수직 신드롬 메모리 양쪽에 결합되어 상기 수평 신드롬 및 상기 수직 신드롬에 제각기 액세스하고, 상기 하이브리드 디코드 회로는 상기 수평 신드롬 및 상기 수직 신드롬에 기초하여 상기 수평 성분 코드워드 또는 상기 수직 성분 코드워드 내 하나 이상의 에러 비트의 위치를 제각기 결정하도록 구성되는, 방법.
  21. 제20항에 있어서, 상기 복수의 수평 성분 코드워드의 수평 성분 코드워드는 정점(vertex)에서 상기 복수의 수직 성분 코드워드의 수직 성분 코드워드와 오버랩(overlap)하는, 방법.
  22. 제21항에 있어서, 상기 정점은 상기 데이터 세트 내 데이터 비트의 어레이를 포함하는, 방법.
  23. 제21항에 있어서,
    상기 수직 신드롬을 부분적으로 연산하는 것은 상기 복수의 수직 성분 코드워드의 오버랩하는 수직 성분 코드워드에 대한 일부 신드롬을 연산하는 것을 포함하는, 방법.
  24. 제20항에 있어서, 상기 데이터 세트는 Bose-Chaudhuri-Hocquenghem(BCH) 코드워드를 포함하는, 방법.
  25. 삭제
KR1020197008539A 2016-09-16 2017-08-18 저장 디바이스를 위한 계단 코드 인코딩 및 디코딩을 위한 장치 및 방법 KR102226607B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/267,967 2016-09-16
US15/267,967 US10110256B2 (en) 2016-09-16 2016-09-16 Apparatuses and methods for staircase code encoding and decoding for storage devices
PCT/US2017/047530 WO2018052652A1 (en) 2016-09-16 2017-08-18 Apparatuses and methods for staircase code encoding and decoding for storage devices

Publications (2)

Publication Number Publication Date
KR20190034699A KR20190034699A (ko) 2019-04-02
KR102226607B1 true KR102226607B1 (ko) 2021-03-15

Family

ID=61618060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197008539A KR102226607B1 (ko) 2016-09-16 2017-08-18 저장 디바이스를 위한 계단 코드 인코딩 및 디코딩을 위한 장치 및 방법

Country Status (6)

Country Link
US (2) US10110256B2 (ko)
EP (1) EP3513497A4 (ko)
KR (1) KR102226607B1 (ko)
CN (1) CN109716661A (ko)
TW (1) TWI646545B (ko)
WO (1) WO2018052652A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210030891A (ko) * 2017-07-10 2021-03-18 지티이 코포레이션 계단 코드의 디코딩 방법, 계단 코드 디코딩 장치, 및 저장매체

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10110256B2 (en) 2016-09-16 2018-10-23 Micron Technology, Inc. Apparatuses and methods for staircase code encoding and decoding for storage devices
CN109245846B (zh) * 2017-07-10 2022-07-05 中兴通讯股份有限公司 一种阶梯码解码方法和阶梯码解码装置
CN109787641B (zh) * 2017-11-15 2024-02-06 中兴通讯股份有限公司 staircase码的解码方法、装置及存储介质
US10831596B2 (en) * 2018-01-22 2020-11-10 Micron Technology, Inc. Enhanced error correcting code capability using variable logical to physical associations of a data block
US11061771B2 (en) 2019-03-01 2021-07-13 Micron Technology, Inc. Extended error detection for a memory device
US10936415B2 (en) * 2019-06-28 2021-03-02 Western Digital Technologies, Inc. Error correction scheme in flash memory
US11424001B2 (en) * 2020-02-07 2022-08-23 Micron Technology, Inc. Apparatuses, systems, and methods for error correction
US11057060B1 (en) * 2020-03-23 2021-07-06 Sage Microelectronics Corporation Method and apparatus for matrix flipping error correction
US11709734B2 (en) * 2021-04-30 2023-07-25 Micron Technology, Inc. Error correction with syndrome computation in a memory device
CN115276796A (zh) * 2022-06-23 2022-11-01 兰州理工大学 一种基于阶梯码的超奈奎斯特速率大气光传输方法
WO2024026584A1 (en) * 2022-07-30 2024-02-08 Qualcomm Incorporated Techniques for staircase encoding with block-code-based shaping
CN116708842B (zh) * 2023-08-01 2023-12-12 国网安徽省电力有限公司超高压分公司 用于高速视频传输的阶梯码编码调制方法、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120266051A1 (en) 2011-04-13 2012-10-18 Cortina Systems, Inc. Staircase forward error correction coding
US20140215292A1 (en) 2013-01-29 2014-07-31 Qualcomm Incorporated Lt staircase fec code

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3165099B2 (ja) * 1998-02-05 2001-05-14 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 誤り訂正方法及びシステム
FR2834146A1 (fr) * 2001-12-20 2003-06-27 St Microelectronics Sa Turbo-decodeur compact a haute efficacite
US7676735B2 (en) 2005-06-10 2010-03-09 Digital Fountain Inc. Forward error-correcting (FEC) coding and streaming
US7774688B1 (en) * 2006-10-11 2010-08-10 Marvell International Ltd. Hardware efficient decoding system for Bose, Ray-Chaudhuri, Hocquenghem (BCH) product codes
EP2176758B1 (en) * 2007-07-02 2010-11-10 Technology from Ideas Limited Generation of parity-check matrices
KR101490194B1 (ko) * 2007-07-05 2015-02-06 삼성전자주식회사 스트림 처리 장치 및 그 방법
TWI538415B (zh) * 2007-11-26 2016-06-11 Sony Corp Data processing device and data processing method
US8656244B1 (en) 2010-10-29 2014-02-18 Massachusetts Institute Of Technology Rate adaptive nonbinary LDPC codes with low encoding complexity
JP2013183205A (ja) * 2012-02-29 2013-09-12 Nagoya Institute Of Technology マルチレート線形符号のレート推定方法及び送受信装置
JP2014039227A (ja) * 2012-08-20 2014-02-27 Nagoya Institute Of Technology 送受信システム
RU2675051C2 (ru) * 2013-09-12 2018-12-14 Сони Корпорейшн Устройство кодирования, устройство передачи и устройство приема
JP6539210B2 (ja) * 2013-11-15 2019-07-03 日本放送協会 送信装置及び受信装置
WO2015072145A1 (ja) * 2013-11-15 2015-05-21 日本放送協会 符号化器、復号器、送信装置及び受信装置
US20150264404A1 (en) * 2014-03-17 2015-09-17 Nokia Technologies Oy Method and apparatus for video coding and decoding
US20150311920A1 (en) * 2014-04-25 2015-10-29 Agency For Science, Technology And Research Decoder for a memory device, memory device and method of decoding a memory device
JP2016213701A (ja) * 2015-05-11 2016-12-15 富士通株式会社 誤り訂正方法、半導体装置、送受信モジュールおよび伝送装置
CN105429646B (zh) 2015-06-30 2019-03-22 南京大学 一种咬尾阶梯码的编码及解码方法
US10277905B2 (en) * 2015-09-14 2019-04-30 Google Llc Transform selection for non-baseband signal coding
US9998148B2 (en) * 2015-12-01 2018-06-12 SK Hynix Inc. Techniques for low complexity turbo product code decoding
US10200066B2 (en) * 2016-03-09 2019-02-05 SK Hynix Inc. Code reconstruction scheme for multiple code rate TPC decoder
US10110256B2 (en) 2016-09-16 2018-10-23 Micron Technology, Inc. Apparatuses and methods for staircase code encoding and decoding for storage devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120266051A1 (en) 2011-04-13 2012-10-18 Cortina Systems, Inc. Staircase forward error correction coding
US20140215292A1 (en) 2013-01-29 2014-07-31 Qualcomm Incorporated Lt staircase fec code

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210030891A (ko) * 2017-07-10 2021-03-18 지티이 코포레이션 계단 코드의 디코딩 방법, 계단 코드 디코딩 장치, 및 저장매체
KR102324655B1 (ko) 2017-07-10 2021-11-10 지티이 코포레이션 계단 코드의 디코딩 방법, 계단 코드 디코딩 장치, 및 저장매체

Also Published As

Publication number Publication date
US20180083653A1 (en) 2018-03-22
TW201814719A (zh) 2018-04-16
US10110256B2 (en) 2018-10-23
US10693504B2 (en) 2020-06-23
CN109716661A (zh) 2019-05-03
US20190058493A1 (en) 2019-02-21
TWI646545B (zh) 2019-01-01
KR20190034699A (ko) 2019-04-02
EP3513497A1 (en) 2019-07-24
WO2018052652A1 (en) 2018-03-22
EP3513497A4 (en) 2020-08-26

Similar Documents

Publication Publication Date Title
KR102226607B1 (ko) 저장 디바이스를 위한 계단 코드 인코딩 및 디코딩을 위한 장치 및 방법
KR102179228B1 (ko) 메모리에서의 티어드 오류 정정 코드(ecc) 동작
US10847246B2 (en) Memory systems performing reconfigurable error correction operation using ECC engine with fixed error correction capability
US9754684B2 (en) Completely utilizing hamming distance for SECDED based ECC DIMMs
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
US8990667B2 (en) Error check and correction circuit, method, and memory device
JP2010218634A (ja) 誤り検出訂正器、メモリコントローラおよび半導体記憶装置
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US11431355B2 (en) Error correction code (ECC) operations in memory for providing redundant error correction
US10186302B2 (en) Semiconductor systems performing double-write operations and methods of operating the same
KR20230100620A (ko) 다단 연결 코드를 사용하는 계층적 오류 정정 코드 디코딩
US10942805B2 (en) Error correcting circuit performing error correction on user data and error correcting method using the error correcting circuit
KR20210001927A (ko) 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법
KR101157516B1 (ko) 데이터 처리 효율을 향상시킨 bch 코덱
US10855316B2 (en) Error correction code (ECC) operations in memory
US20230195358A1 (en) Separation of Parity Columns in Bit-Flip Decoding of Low-Density Parity-Check Codes with Pipelining and Column Parallelism
KR20240048306A (ko) G-ldpc 인코더, g-ldpc 인코딩 방법 및 스토리지 장치
CN112530507A (zh) 准循环校正子解码器的硬件实施方案
CN112530506A (zh) 减少基于校验子的准循环解码器的延迟
KR20180091268A (ko) Bch 디코더 및 이의 동작 방법

Legal Events

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