KR101588306B1 - 인터리빙하는 터보-곱 코드들(tpc) - Google Patents

인터리빙하는 터보-곱 코드들(tpc) Download PDF

Info

Publication number
KR101588306B1
KR101588306B1 KR1020130134902A KR20130134902A KR101588306B1 KR 101588306 B1 KR101588306 B1 KR 101588306B1 KR 1020130134902 A KR1020130134902 A KR 1020130134902A KR 20130134902 A KR20130134902 A KR 20130134902A KR 101588306 B1 KR101588306 B1 KR 101588306B1
Authority
KR
South Korea
Prior art keywords
parity information
corrected
interleaved
segment
error correction
Prior art date
Application number
KR1020130134902A
Other languages
English (en)
Other versions
KR20140059740A (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 KR20140059740A publication Critical patent/KR20140059740A/ko
Application granted granted Critical
Publication of KR101588306B1 publication Critical patent/KR101588306B1/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/27Coding, 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 using interleaving techniques
    • 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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2963Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product 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/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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2966Turbo codes concatenated with another code, e.g. an outer block code

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

제 2 에러 정정 코드 및 제 1 에러 정정 코드와 연관된 디코딩이 수행된다. 세그먼트간 인터리빙된 데이터를 획득하기 위해, Ns개의 제 1 및 제 2-정정된 데이터 세그먼트들, 제 1 세트들의 패리티 정보, 및 제 2 세트들의 패리티 정보가 세그먼트간 인터리빙되고, 여기서 Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 Ns개의 제 2 세트들의 패리티 정보는 제 1 및 제 2 에러 정정 코드와 연관된 디코딩이 이들상에서 수행되게 하였다(Ns는 함께 인터리빙된 세그먼트들의 수이다). 적어도 제 3-정정된 인터리빙된 데이터를 획득하기 위해 세그먼트간 인터리빙된 데이터 및 인터리빙된 패리티 정보에 대해 제 3 에러 정정 코드와 연관된 디코딩이 수행된다. 제 3-정정된 인터리빙된 데이터는 디-인터리빙된다.

Description

인터리빙하는 터보-곱 코드들(TPC){TURBO-PRODUCT CODES (TPC) WITH INTERLEAVING}
다른 출원들에 대한 교차 참조
본 출원은 2012년 11월 8일에 출원되고 발명의 명칭이 MULTI-LEVEL TPC FOR NAND FLASH TECHNOLOGY인 미국 가특허 출원 제61/724,093호(대리인 문서 번호 LINKP128+) 및 2013년 1월 2일 출원되고 발명의 명칭이 SCHEME FOR ERROR-FLOOR REDUCTION FOR MULTI-LEVEL TURBO-PRODUCT CODES (TPC)인 미국 가특허 출원 제61/748,364호(대리인 문서 번호 LINKP129+)에 대한 우선권을 주장하고, 이들 둘다는 사실상 본 명세서에 참조로서 포함된다.
본 발명은 인터리빙하는 터보-곱 코드들에 관한 것이다.
터보-곱 코드들(TPC)은 차세대 솔리드 스테이트 저장장치 시스템들(solid state storage systems)에서의 이용을 위해 탐구중이다. 현재 TPC 기술들이 다수의 흥미를 끄는 특징들을 가지지만, 현재 TPC 기술들의 일 부정적인 면은 연관된 에러 플로어(error floor)이다. 높은 신호대 잡음비(SNR)들에서, 현재 TPC 기술들이 가진 페이지 실패율(PFR: page failure rate)은 평평해진다. 바꿔 말하면, 비트 에러 레이트(BER)가 낮을 때, 성능은 비교적 평탄하다. 대조적으로, 현재 솔리드 스테이트 저장장치 솔루션들에서 이용되는 에러 정정 코드들은 높은 SNR(즉, 낮은 BER) 영역에서 폭포형 성능 곡선을 가져, 성능의 평탄한 상태가 존재하지 않는다.
본 발명의 다양한 실시예들이 다음의 상세한 기술 및 첨부 도면들에 개시된다.
에러 플로어를 낮추는(예를 들면, 성능 곡선이 같은 수준인 PFR이 전보다 양호하도록) 새로운 TPC 기술들이 바람직하다.
본 발명은 방법; 장치; 시스템; 재료의 구성; 컴퓨터 판독 가능한 저장 매체 상에서 구현된 컴퓨터 프로그램 제품; 및/또는 처리기에 결합된 메모리 상에 저장 및/또는 메모리에 의해 제공되는 명령들을 실행하도록 구성된 처리기와 같은 처리기를 포함하여 다수의 방식들로 구현될 수 있다. 이 명세서에서, 이들 구현들 또는 본 발명이 취할 수 있는 임의의 다른 형태는 기술들이라고 칭해질 수 있다. 일반적으로, 개시된 방법들의 단계들의 순서는 본 발명의 범위 내에서 변경될 수 있다. 달리 언급되지 않는 한, 작업을 수행하도록 구성된 것으로 기술된 처리기 또는 메모리와 같은 구성요소는 주어진 시간에 작업을 수행하도록 일시적으로 구성된 일반 구성요소 또는 작업을 수행하도록 제작된 특정 구성요소로서 구현될 수 있다. 본 명세서에 이용된 바와 같이, 용어 '처리기(processor)'는 하나 이상의 디바이스들, 회로들, 및/또는 컴퓨터 프로그램 명령들과 같은 데이터를 처리하도록 구성된 처리 코어들을 나타낸다.
본 발명의 하나 이상의 실시예들의 상세한 기술은 본 발명의 원리들을 기술하는 첨부 도면들과 함께 하기에 제공된다. 본 발명은 이러한 실시예들과 관련하여 기술되지만, 본 발명은 어떠한 실시예에도 제한되지 않는다. 본 발명의 범위는 특허청구범위에 의해서만 제한되고 본 발명은 다수의 변경들, 수정들 및 등가들을 포함한다. 다수의 특정 상세들이 본 발명의 완전한 이해를 제공하기 위해 다음의 기술에 기재된다. 이들 상세들은 예의 목적으로 제공되고 본 발명은 이들 특정 상세들의 일부 또는 전부 없이 특허청구범위에 따라 실시될 수 있다. 명확하게 하기 위해, 본 발명과 관련된 기술 분야들에 알려진 기술 자료는 본 발명이 불필요하게 모호해지지 않도록 상세히 기술되지 않았다.
본 발명은 에러 플로어를 낮추는 TPC 기술들을 제공한다.
도 1a는 인터리빙하는 터보-곱 코드들(TPC)을 사용하여 정보를 인코딩하기 위한 처리의 실시예를 도시한 흐름도.
도 1b 및 도 1c는 세그먼트간 TPC 인터리빙된 디코딩 처리의 실시예를 도시한 흐름도들.
도 2는 인터리빙을 포함하지 않는 TPC 시스템들이 가진 문제의 예를 도시한 도면.
도 3은 제 1 코드를 사용하여 생성된 제 1 세트의 패리티 정보의 실시예를 도시한 도면.
도 4는 제 2 코드를 사용하여 생성된 제 2 세트의 패리티 정보의 실시예를 도시한 도면.
도 5는 세그먼트내 TPC 인터리빙 시스템에 의해 생성되는 인터리빙된 데이터의 실시예를 도시한 도면.
도 6은 세그먼트내 TPC 인터리빙 시스템에 의해 생성되는 인터리빙된 패리티 정보의 실시예를 도시한 도면.
도 7은 제 1 세그먼트내 TPC 인터리빙 기록 처리기의 실시예를 도시한 도면.
도 8a는 컬럼 조합, 터보-곱 코드(CCTPC: column combining, turbo-product code) 디코더의 실시예를 도시한 도면.
도 8b는 제 1 세그먼트내 TPC 인터리빙 판독 처리기의 실시예를 도시한 도면.
도 9는 세그먼트간 TPC 인터리빙 기록 처리기의 실시예를 도시한 도면.
도 10은 세그먼트간 TPC 인터리빙 판독 처리기의 실시예를 도시한 도면.
도 11은 세그먼트간 TPC 인터리빙된 정보를 저장장치에 기록하기 위한 처리의 실시예를 도시한 흐름도.
도 12a 내지 도 12c는 저장장치로부터 세그먼트간 TPC 인터리빙된 정보를 판독하기 위한 처리의 실시예를 도시한 흐름도.
도 13은 제 2 세그먼트내 TPC 인터리빙 기록 처리기의 실시예를 도시한 도면.
도 14a는 초기 디코딩 시도들 동안에 이용되는 CCTPC 디코더를 도시한 제 2 세그먼트내 TPC 인터리빙 판독 처리기의 실시예를 도시한 도면.
도 14b는 제 3 코드를 사용하여 에러 정정 디코딩과 연관된 구성요소들을 포함하는 제 2 세그먼트내 TPC 인터리빙 판독 처리기의 실시예를 도시한 도면.
도 15는 세그먼트내 TPC 인터리빙된 데이터를 솔리드 스테이트 저장장치에 기록하기 위한 처리의 제 2 실시예를 도시한 흐름도.
도 16a 내지 도 16d는 저장장치로부터 세그먼트내 TPC 인터리빙된 정보를 판독하기 위한 처리의 실시예를 도시한 흐름도.
도 1a는 인터리빙하는 터보-곱 코드들(TPC)을 사용하여 정보를 인코딩하기 위한 처리의 실시예를 도시한 흐름도이다. 일부 실시예들에서, 처리는 솔리드 스테이트 저장장치 시스템(예를 들면, NAND 플래시)과 같은 저장장치 시스템에서 기록 처리기에 의해 수행된다. 일부 실시예들에서, 처리는 무선 통신 시스템과 같은 통신 시스템에서 송신기에 의해 수행된다.
단계(100)에서, 제 1 세트의 패리티 정보는 데이터 세그먼트 및 제 1 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 일례에서, 제 1 코드는 BCH 코드이고 데이터 세그먼트는 어레이(예를 들면, 어떤 수의 로우들 및 어떤 수의 컬럼들을 갖는)로 정렬되며 각각의 로우는 복수의 로우들의 패리티 정보를 생성하기 위해 BCH 코드를 이용하여 인코딩된다(예를 들면, 임의의 다른 로우와 무관하게). 생성된 로우들의 패리티 정보는 제 1 세트의 패리티 정보의 예이다.
단계(102)에서, 제 2 세트의 패리티 정보는 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 상기로부터 예를 계속하기 위해, 데이터 세그먼트 및 제 1 세트의 패리티 정보는 어레이(예를 들면,단계(100)에 입력된 어레이와 동일한 수의 로우들을 가지지만, 제 1 세트의 패리티 정보는 부가의 컬럼들 상에 추가됨)로 배열된다. 적어도 이 예에서, 컬럼들은 함께 그룹화되고(예를 들면, 그룹당 2개의 컬럼들, 그룹당 3개의 컬럼들 등) 컬럼들의 그룹들은 다른 BCH 코드를 이용하여 각각 인코딩된다. 함께 그룹화된 컬럼들의 수가 컬럼들의 정수가 될 필요는 없음을 유념한다(예를 들면, 각각의 그룹은 그룹당 1.5개의 컬럼들, 또는 어떤 다른 정수가 아닌 컬럼들을 포함할 수 있다).
단계(108)에서, 인터리빙된 데이터는 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보에 적어도 부분적으로 기초하여 생성된다. 인터리빙은 데이터의 재정리 또는 재배열이고, 단계(108)에서 입력된 비트들의 수는 단계(108)에서 출력되는 비트들의 수와 매칭한다. 일례에서, 단계(108)에서 생성된 인터리빙된 데이터는 다수의 그룹들의 인터리빙된 데이터를 포함하고 각각의 그룹의 인터리빙된 데이터는 다수의 코드워드들 중 하나(예를 들면, 제 1 코드 코드워드들 또는 제 2 코드 코드워드들)로부터 단일 샘플을 포함한다. 이러한 실시예들에서, 제 3 코드로 인코딩할 때(후속적으로 단계(110)에서), 제 3 코드는 제 1의 2개의 코드들의 다수의 코드워드들에 미칠 것이다. 이것은, 제 1 코드 및 제 2 코드가 세그먼트를 성공적으로 디코딩하는 것을 방해하는 에러들을 차단할 수 있기 때문에 바람직하다.
단계(110)에서, 인터리빙된 패리티 정보는 인터리빙된 데이터 및 제 3 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 예를 들면, 단계(108)에서 인터리빙된 데이터는 일부 어레이 내에서 데이터를 재배열할 수 있고, 에러 정정 인코딩은 BCH 코드를 사용하여 인터리빙된 어레이의 로우들을 따라 수행된다. 대안적으로, 인터리빙된 데이터는 수직 방향으로 인코딩될 수 있다. "인터리빙된 패리티 정보"는 인터리빙되는 패리티 정보를 나타내는 것이 아니라 인터리빙된 데이터로부터 생성되는 패리티 정보를 나타냄을 유념한다.
단계(110)에서 생성된 인터리빙된 패리티 정보 및/또는 제 3 코드(두 용어들은 본 명세서에서 교환 가능하게 사용될 수 있음)가 필요시(예를 들면, 제 1 코드 및 제 2 코드가 자력으로 원하는 세그먼트를 성공적으로 디코딩할 수 없는 경우) 사용된다. 바꿔 말하면, 인터리빙된 패리티 정보가 항상 생성되지만, 일부 경우들에서, 인터리빙된 패리티 정보는 디코딩 처리 동안에는 이용되지 않는다(예를 들면, 제 1 코드 및 제 2 코드는 디코딩에 충분하다).
도 1a에 도시된 처리는 세그먼트내 TPC 인터리빙 및 세그먼트간 TPC 인터리빙 둘다를 포함한다. 세그먼트내 TPC 인터리빙에서, 단일 세그먼트와 연관된 정보는 단계(108)에서 인터리빙된다. 비유를 하자면, 세그먼트내 TPC 인터리빙은 단일 팩의 카드들을 셔플링하는 것과 같다(반면에 세그먼트간 TPC 인터리빙은 다수 팩들의 카드들을 셔플링하는 것과 같다). 도 1a에서, 세그먼트내 TPC 인터리빙 실시예들 내에서, 단계들(100 및 102)은 한 번만 수행되고 그 후에 처리는 단계(108)로 진행한다(예를 들면, 인터리버에 대한 모든 입력들이 준비되기 때문이다).
세그먼트간 TPC 인터리빙에서, 다수의 세그먼트들과 연관된 정보가 인터리빙된다. 예를 들면, 2개의 세그먼트들이 인터리빙되는 경우, 단계들(100 및 102)은 각각 2번씩 수행된다. 단계(100)(예를 들면, 로우 인코딩) 및 단계(102)(예를 들면, 컬럼 인코딩)가 처음 수행될 때, 그것은 제 1 세그먼트 상에 있고; 단계(100)(예를 들면, 로우 인코딩) 및 단계(102)(예를 들면, 컬럼 인코딩)가 두 번째로 수행될 때, 그것은 제 2 세그먼트 상에 있다. 그런 다음에는 모든 정보가 인터리버에 대해 준비되고 단계(108)가 수행될 수 있다. 그 후에 단계(108)에서, 제 1 데이터 세그먼트, 제 2 데이터 세그먼트, 제 1 데이터 세그먼트와 연관된 제 1 세트의 패리티 정보, 제 2 데이터 세그먼트와 연관된 제 1 세트의 패리티 정보, 제 1 데이터 세그먼트와 연관된 제 2 세트의 패리티 정보, 및 제 2 데이터 세그먼트와 연관된 제 2 세트의 패리티 정보에 대해 인터리빙이 수행된다.
도 1a의 다른 예들은 하기에 더욱 상세히 기술된다.
저장된 데이터를 디코딩할 때가 되면, 2개의 가능성들이 존재한다: (1) 디코딩 동안 제 3 코드를 이용하기 위한 패널티(예를 들면, 원하는 세그먼트 외에, 부가의 세그먼트들을 페칭해야 하는 것과 연관된)가 존재하는 가능성 또는 (2) 디코딩 동안 제 3 코드를 이용하기 위한 패널티가 존재하지 않는 가능성(예를 들면, 디코딩 동안 제 3 코드를 이용하기 위해 원하는 세그먼트를 넘어서 부가의 세그먼트들을 페칭할 필요가 없기 때문). 후자의 경우, 모든 3개의 코드들이 초기 시도들로부터 이용된다. 모든 코드들이 정확히 동일한 데이터 세트에 미치고 초기 디코딩 시도들로부터 제 3 코드(제 1 및 제 2 코드들 외에)를 이용하는 것은 디코딩 성능을 개선할 것이므로, 모든 3개의 코드들일 이용하는데 있어서 실제 패널티가 거의 존재하지 않는다. 기술적으로, 제 3 코드의 패리티와 연관된 패널티가 존재할 수 있지만, 그것은 전체 데이터 크기에 비해 무시할 만하다.
디코딩 동안 제 3 코드를 이용하는 것과 연관된 패널티가 존재하는 경우(예를 들면, 원하는 세그먼트 외에 다른 세그먼트들이 저장장치로부터 페칭되어야 하기 때문), 디코딩은 바로 제 1 코드 및 제 2 코드로 시작한다. 대부분의 세그먼트들은 이 기간 동안 디코딩할 것이고 대부분의 세그먼트들에 대해서는 제 3 코드가 디코딩 동안 이용되지 않을 것이다. 이 시나리오에서(세그먼트간 TPC 인터리빙을 포함함), 제 3 코드는 필요시 이용된다. 이것은 제 3 코드를 이용하는 것과 연관된 패널티, 특히 솔리드 스테이트 저장장치에서 판독 처리기로 모든 다른 필요한 데이터 세그먼트들을 디코딩을 수행 순서로 이송할 필요를 회피하기 위한 것이다. 저장장치 제어기들은 그들의 디코딩 시간에 기초하여 평가 및 비교되고, 모든 다른 데이터 세그먼트들을 솔리드 스테이트 저장장치에서 판독 처리기로 이송해야 하는 것은(모든 세그먼트에 대해, 디코딩되는 문제를 가지는 세그먼트들만이 아닌) 패널티를 유발한다. 이와 같이, 제 3 코드는 세그먼트간 TPC 인터리빙된 실시예들 및 일부 다른 실시예들에서 필요시 디코딩 동안 이용된다.
도 1b 및 도 1c는 세그먼트간 TPC 인터리빙된 디코딩 처리의 실시예를 도시하는 흐름도를 도시한다. 일부 실시예들에서, 저장장치 시스템에서 판독 처리기에 의해 도시된 처리가 수행된다. 다른 실시예들에서, 통신 시스템에서 수신기에 의해 처리가 수행된다.
상술된 바와 같이, 세그먼트간 TPC 인터리빙된 디코딩 동안 제 3 코드를 이용하기 위한 패널티가 존재하기 때문에(즉, 원하는 세그먼트와 함께 인터리빙되는 다른 세그먼트들을 페칭하는데 걸리는 시간), 제 3 코드는 도시된 세그먼트간 TPC 인터리빙된 디코딩 처리 동안 필요시에만 이용된다. 본 명세서에 기술된 기술에 대한 이점은 대부분의 세그먼트들이 제 3 코드를 이용하지 않고 및/또는 다른 세그먼트와 연관된 정보를 필요로 하지 않고 디코딩될 수 있다는 점이다. 오직 제 1 코드 및 제 2 코드가 원하는 세그먼트를 디코딩하기에 불충분할 때(예를 들면, 원하는 세그먼트를 성공적으로 디코딩하지 않고 최대 수의 디코딩 시도들에 도달될 때)는 제 3 코드를 관련시킨다. 각각의 모든 세그먼트에 대해 제 3 코드를 이용하는 것이 불필요한 전력, 대역폭, 및/또는 그다지 필요하지 않은 다른 리소스들을 소비하기 때문(예를 들면, 제 1 코드 및 제 2 코드가 스스로 충분했기 때문)에 필요시 이용기반으로 제 3 코드를 이용하는 것은 매력적이다. 이를 고려하여, 도 1b의 처리는 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보를 획득함으로써 단계(151)에서 시작한다. 예를 들면, 단계(151)에서 획득된 모든 정보는 솔리드 스테이트 저장장치(예를 들면, NAND 플래시)로부터 획득될 수 있다. 당연히, 단계(151)에서 획득된 정보는 에러들을 포함할 수 있다.
단계(156)에서, 적어도 정정된 데이터 세그먼트, 정정된 제 1 세트의 패리티 정보, 및 정정된 제 2 세트의 패리티 정보를 획득하기 위해 적어도 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보에 대해 제 2 에러 정정 코드와 연관된 디코딩이 수행된다. 일부 경우들에서, 단계(156) 후에 정정된 정보에 에러들이 여전히 남아 있을 수 있다. 일부 경우들에서, 에러 정정 디코딩은 에러들의 수를 감소시킬 수 없을 수 있고 정정된 정보는 단계(156)에 입력된 정보의 대응하는 피스와 매칭한다.
단계(158)에서, 적어도 다른 정정된 데이터 세그먼트, 다른 정정된 제 1 세트의 패리티 정보, 및 다른 정정된 제 2 세트의 패리티 정보를 획득하기 위해 적어도 정정된 데이터 세그먼트, 정정된 제 1 세트의 패리티 정보, 및 정정된 제 2 세트의 패리티 정보에 대해 제 1 에러 정정 코드와 연관된 디코딩이 수행된다.
제 3 코드를 이용하지 않고 각각의 세그먼트를 디코딩할 수 있는 것 외에도(조건들이 정확하다고 가정), 각각의 세그먼트는 다른 세그먼트와 연관된 정보를 이용하지 않고 디코딩할 수 있다. 임의의 다른 세그먼트로부터 정보를 필요로 하지 않고 각각의 세그먼트를 디코딩할 수 있는 것은 각각의 세그먼트(예를 들면, 연관된 제 1 세트의 패리티 정보 및 제 2 세트의 패리티 정보를 더함)가 단일 I/O 액세스의 폭(예를 들면, 저장장치 제어기 "칩(chip)"과 솔리드 스테이트 저장장치 "칩" 사이의 데이터 버스의 폭)을 맞추도록 설계된 이들 시스템들에 바람직할 수 있다. 따라서, 각각의 세그먼트가 임의의 다른 세그먼트와 무관하게 디코딩될 수 있는 경우, 단일 I/O 판독 또는 액세스만이 요구된다. 단일 세그먼트를 판독 및 디코딩하기 위해 2개 이상의 I/O 판독들을 필요로 하는 것은 흥미를 끌지 않을 수 있다.
단계들(156 및 158)의 순서는 단지 예시적일 뿐이고 원하는 경우 교환될 수 있음을 유념한다.
단계(160)에서, 디코딩이 성공적이라고 결정된다. 예를 들면, 제 1 코드 및 제 2 코드가 에러들이 남아있지 않다고 표시하는 경우, 세그먼트는 성공적으로 디코딩된다고 결정되고 세그먼트는 출력된다. 디코딩이 성공하지 못한 경우, 단계(162)에서 최대 수의 시도들에 도달되는지가 결정된다. 예를 들면, 제 1 코드 및 제 2 코드에 대해 제 3 코드로 진행하기 전에 원하는 세그먼트를 디코딩하기 위해 10회의 시도들(예를 들면, 각각)이 이루어질 수 있다. 단계(156)에서 제 2 코드 및 단계(158)에서 제 1 코드를 이용하여 세그먼트가 2개 이상의 디코딩 통과들(예를 들면, 각각)을 필요로 하는 것은 드물지 않고, 따라서 단계(162)에서 최대 수의 시도들은 2회 이상의 시도들이 제 1 코드 및 제 2 코드뿐만 아니라 제 3 코드를 이용하고 "포기(giving up)"하기 전에 허용되도록 통상적으로 2회 이상이다.
최대 수의 시도들에 도달된 경우, 제 2 에러 정정 코드와 연관된 디코딩은 단계(156)에서 다시 시도된다. 최대 수의 시도들에 도달된 경우, 다음 도면에서 수행되는 처리가 수행된다.
도 1b에 도시된 바와 같이, 제 3 코드는 제 1 코드 및 제 2 코드(자력으로)가 원하는 세그먼트를 성공적으로 디코딩할 수 없는 경우에, 필요시 이용기반으로 이용된다. 대부분의 세그먼트들은 최종적으로, 단계(162)에서 최대 수의 시도들에 도달하기 전에 성공적인 디코딩 결과로 단계(160)를 종료할 수 있을 것이다.
그러나, 제 3 코드를 이용하여 디코딩하는 것이 적합한 경우(예를 들면, 최대 수의 시도들에 도달되기 때문), 세그먼트간 TPC 인터리빙된 디코딩 처리는 도 1c에서 계속된다. 일부 실시예들에서, 이 지점에서 데이터 플러시(data flush)가 수행되어, 도 1b로부터의 중간 데이터 또는 중간 결과들은 폐기되고 도 1c에서 이용되지 않는다.
단계(180)에서, 원하는 세그먼트와 연관된 (Ns-1)개의 데이터 세그먼트들, 원하는 세그먼트와 연관된 (Ns-1)개의 제 1 세트들의 패리티 정보, 및 원하는 세그먼트와 연관된 (Ns-1)개의 제 2 세트들의 패리티 정보가 솔리드 스테이트 저장장치로부터 획득된다. Ns는 함께 인터리빙되는 세그먼트들의 수이고, Ns = 4 (예로서)이면, 원하는 세그먼트와 함께 인터리빙된 3개의 다른 세그먼트들뿐만 아니라 그들 패리티 정보도 획득된다. 단계(180)에서의 이러한 검색은 이와 연관된 패널티를 가지고, 따라서 이것은 원하는 세그먼트가 제 1 및 제 2 코드들만을 이용하여 디코딩될 수 없는 경우에만 수행된다.
단계(186)에서, 제 2 에러 정정 코드와 연관된 디코딩이 수행된다. 예를 들면, Ns = 4인 경우, 다른 3개의 세그먼트들(원하는 세그먼트와 함께 인터리빙된)이 솔리드 스테이트 저장장치로부터 획득되고(각각 (Ns-1)개의 제 1 세트들의 패리티 정보 및 (Ns-1)개의 제 2 세트들의 패리티 정보와 함께) 제 2 코드를 이용하여 디코딩된다. 이 예에서, 원하는 세그먼트가 도 1b의 단계(156)에서 제 2 코드를 이용하여 이미 디코딩되었기 때문에 원하는 세그먼트를 다시 처리할 필요는 없다.
단계(188)에서, 제 1 에러 정정 코드와 연관된 디코딩이 수행된다. 예를 들면, 단계(186)에 의해 출력된 (Ns-1)개의 세그먼트들 및 패리티 정보는 제 1 에러 정정 코드를 이용하여 디코딩하기 위해 단계(186)에 입력될 수 있다. 원한다면, 단계(181)로 진행하기 전에 다수 번 반복될 수 있는 단계들(186 및 188)이 (Ns-1)개의 세그먼트들 상에서 바람직하다. 단계들(186 및 188)의 순서는 교환될 수 있음을 유념한다(예를 들면, 제 2 코드로 디코딩하기 전에 제 1 코드로의 디코딩이 수행될 수 있다).
단계(181)에서, 세그먼트간 인터리빙된 데이터를 획득하기 위해 Ns개의 제 1- 정정된 및 제 2-정정된 데이터 세그먼트들, Ns개의 제 1-정정된 및 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 1-정정된 및 제 2-정정된 제 2 세트들의 패리티 정보에 대해 세그먼트간 인터리빙이 수행되고, 여기서 Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 Ns개의 제 2 세트들의 패리티 정보는 이들에 대해 수행된 제 1 에러 정정 코드와 연관된 디코딩 및 제 2 에러 정정 코드와 연관된 디코딩을 경험한다. 본 명세서에 이용된 바와 같이, "제 1-정정된(first-corrected)"은 제 1 (에러 정정) 코드를 이용하여 정정된(예를 들면 가장 최근에) 어떤 데이터를 나타낸다. 유사하게, "제 2-정정된(second-corrected)" 및 "제 3-정정된(third-corrected)"은 제 2 코드 또는 제 3 코드를 이용하여 (각각) 정정된(예를 들면 가장 최근에) 정보를 나타낸다.
단계(182)에서, 적어도 제 3-정정된 인터리빙된 데이터를 획득하기 위해 세그먼트간 인터리빙된 데이터 및 인터리빙된 패리티 정보에 대해 제 3 에러 정정 코드와 연관된 디코딩이 수행된다. 단계(184)에서, 제 3-정정된 인터리빙된 데이터에 대해 디-인터리빙이 수행된다. 코드들이 본 명세서에 도시된 순서(이 예에서, 제 2 코드, 제 1 코드, 그 후에 제 3 코드)는 단지 예시적일 뿐이고 제한하려는 의도가 아님을 유념한다.
단계(190)에서 디코딩이 원하는 세그먼트에 대해 성공적인지가 결정된다. 예를 들면, 에러들이 임의의 코드들에 의해 플래깅되지 않는 경우, 성공적으로 디코딩된 원하는 세그먼트가 출력되고 처리가 종료된다. 그렇지 않은 경우, 단계(192)에서, 계속 시도할지의 여부가 결정된다. 그렇지 않은 경우, 처리가 종료되고 디코딩 실패가 선언된다. 일례에서, 단계(192)는 제 3 코드에 대한 반복들의 수를 확인하는 단계를 포함한다. 제 3 코드를 이용한 디코딩이 어떤 최대 수의 반복들을 초과하는 경우, 처리는 시도를 중단하기로 결정하고 디코딩 실패가 선언된다. (최대 수의 시도들이 단계(192)에서 이용되는 경우, 최대 수의 시도들은 도 1b의 단계(162)에서의 최대 수의 시도들과 매칭할 필요가 없음을 유념한다). 계속 시도하기로 결정된 경우, 처리는 다른 디코딩 통과를 위해 단계(186)로 리턴한다.
특정 구현에 의존하여(예를 들면, 어떤 정보가 실제로 저장 또는 전송되는지에 의존하여), 도 1a 내지 도 1c의 다양한 실시예들은 다양한 단계들을 포함할 수 있다. 도 1a 내지 도 1c의 더 많은 특정 예들은 하기에 더욱 상세히 기술된다.
도 2는 인터리빙을 포함하지 않는 TPC 시스템들이 가진 문제의 예를 도시한 도면이다. 도시된 예에서, 어레이 요소(200)(로우 j 및 컬럼들 k - (k+9)에서)는 TPC 어레이에서의 요소이다. 통상적인 TPC 시스템의 이러한 예에서, T=3 BCH 코드가 각각의 로우에 수평 방향으로 적용되고, 여기서 T는 정정될 수 있는 최대 수의 에러들이다(즉, 로우당 최대 3개의 에러들이 제 1 코드를 이용하여 정정될 수 있다). 수직 방향에서, 한 그룹에 대해 10개의 컬럼들로 컬럼들이 그룹화된다. 10개의 컬럼들의 각각의 그룹은 최대 3개의 에러들(10개의 컬럼들의 그룹당)이 제 2 코드를 이용하여 정정될 수 있도록 제 2의 T=3 BCH 코드를 이용하여 에러 정정 인코딩된다.
어레이 요소(200)에서, 4 비트 에러들이 존재하며, 이것은 수평 방향의 제 1 코드 및 수직 방향의 제 2 코드 둘다의 에러 정정 능력을 넘어선다. TPC 디코딩 동안, 수평 방향의 제 1 코드와 수직 방향의 제 2 코드 사이에서 디코딩이 교호하여, 이들은 모든 에러들이 정정될 때까지 2개의 코드들이 에러들의 수를 점차적으로 떨어뜨릴 것을 기대하여 디코딩을 교대한다. 그러나, 이 예에서, 에러들의 수가 제 1 코드 및 제 2 코드 둘다의 에러 정정 능력을 넘어서기 때문에, TPC 디코딩은 어레이 요소(200)의 에러들의 수를 떨어뜨릴 수 없을 것이다.
반대로, 인터리빙하는 TPC(예를 들면, 세그먼트내 TPC 인터리빙 또는 세그먼트간 TPC 인터리빙)는 어레이 요소(200)에 도시된 에러들을 정정할 수 있다. 인터리빙하는 TPC가 대신 이용되었고 예시적 에러 패턴이 수신되었을 때, 디-인터리빙 처리(예를 들면, 판독 처리기 또는 수신기에서 수행된)는 어레이 요소(200)에 도시된 4개의 어레들이 다수의 로우들 및/또는 다수의 그룹들의 10개의 컬럼들 사이에 분산되게 한다. 본질적으로, 디-인터리빙은 에러들이 제 3 코드의 상이한 코드워드들로 해체되게 하여서, 제 3 코드가 이들을 정정한다. 제 3 코드는 통상적인 TPC에서의 취약성을 제거하거나 감소시킨다. 즉, 불량한 위치들에서의 소수의 에러들이 디코딩 실패를 유발할 것이다. 인터리빙은 불량한 위치들에서의 이러한 에러들이 제 3 코드에서의 상이한 코드워드들에 분산되게 하여, 제 3 에러 정정 디코더는 제 3 코드 공간에서의 상이한 코드워드들에서의 이들 에러들 상에서 개별적으로 작용할 수 있다.
다음이 도면들은 세그먼트내 TPC 인터리빙의 제 1 예를 기술한다.
세그먼트내 TPC 인터리빙 예 1
도 3은 제 1 코드를 이용하여 생성된 제 1 세트의 패리티 정보의 예를 도시한 도면이다. 다양한 실시예들에서, 처리는 세그먼트내 TPC 인터리빙 시스템 또는 세그먼트간 TPC 인터리빙 시스템에 의해 수행된다. 편의상, 비교적 작은 데이터 세그먼트가 이 도면 및 다음 도면들에 도시된다. 당연히, 도시된 크기들 및 치수들은 단지 예시적일 뿐이고 본 명세서에 기술된 기술들이 임의의 크기 또는 치수에 적용 가능하다.
로우들(300a 내지 300d)의 각각은 각각의 패리티 정보를 획득하기 위해 제 1 코드(예를 들면, BCH 코드)를 이용하여 독립적으로 에러 정정 인코딩된다. 로우(300a)는 패리티 정보(302a)를 생성하기 위해 에러 정정 인코딩되고, 로우(300b)는 패리티 정보(302b)를 생성하기 위해 에러 정정 인코딩되고, 로우(300c)는 패리티 정보(302c)를 생성하기 위해 에러 정정 인코딩되고, 로우(300d)는 패리티 정보(302d)를 생성하기 위해 에러 정정 인코딩된다. 패리티 정보(302a 내지 302d)는 도 1a의 단계(100)에서 생성된 제 1 데이터 세그먼트의 예를 도시한다.
도 4는 제 2 코드를 이용하여 생성된 제 2 세트의 패리티 정보의 실시예를 도시한 도면이다. 여기에 도시된 예는 세그먼트내 TPC 인터리빙 시스템 및 세그먼트간 TPC 인터리빙 시스템 둘다에 적용 가능하다. 도 4는 도 3의 예를 계속한다.
도시된 예에서, 컬럼들의 쌍들이 함께 그룹화되고 에러 정정 인코딩이 컬럼들의 쌍(400a), 컬럼들의 쌍(400b), 및 컬럼들의 쌍(400c)에 대해 수행된다(예를 들면, BCH 코드를 이용). 패리티 비트(402a)는 컬럼들의 쌍(400a)으로부터 생성되고, 패리티 비트(402b)는 컬럼들의 쌍(400b)으로부터 생성되고, 패리티 비트(402c)는 컬럼들의 쌍(400c)으로부터 생성된다. 컬럼들의 쌍은 임의의 순서로 에러 정정 인코더에 입력될 수 있다. 예를 들면, 컬럼들의 쌍(400a)이 시퀀스 [D11 D12 D21 … D32 D41 D42]로 또는 시퀀스 [D11 D21 D31 …D22 D32 D42]로 인코딩될 수 있다. 패리티 비트들(402a 내지 402c)은 도 1a의 단계(102)에서 생성된 제 2 세트의 패리티 정보의 예를 도시한다. 당연히, 임의의 수의 컬럼들은 함께 그룹화될 수 있다. 일부 실시예들에서, 정수가 아닌 컬럼들이 함께 그룹화된다(예를 들면, 2.5 컬럼들이 함께 그룹화된다).
컬럼들을 그룹화하는 이점은 적은 오버헤드 정보가 생성된다는 점이다. 예를 들면, 컬럼들이 그룹화된 경우, 패리티 비트는 각각의 컬럼에 대해 생성되어, 이 예에서 6개의 패리티 비트들을 생성한다. 이것은 2개의 컬럼들이 함께 그룹화된 다음 에러 정정 인코딩될 때에 비해 2배 많은 패리티 비트들이다.
도 5는 세그먼트내 TPC 인터리빙 시스템에 의해 생성된 인터리빙된 데이터의 실시예를 도시한 도면이다. 도 5는 도 4의 예를 따른다. 여기에 도시된 예는 세그먼트내 TPC 인터리빙 예이고, 따라서 단일 세그먼트에 대한 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보가 인터리빙된다(예를 들면, 다른 세그먼트와 연관된 정보와 혼합되지 않고). 인터리빙은 데이터의 시퀀스 또는 순서를 재배열하고, 따라서 인터리빙 전의 데이터량은 인터리빙 후의 데이터량과 동일하다(즉, 인터리빙되기 전의 데이터(500)의 크기는 인터리빙된 데이터(502)와 동일하다). 이 예에서, 인터리빙되기 전의 데이터(500)는 인터리빙된 데이터(502)를 생성하기 위해 랜덤 패턴을 이용하여 인터리빙된다. 이것이 모든 로우 및 컬럼 구성 코드들을 랜덤하게 인터리빙하는 한 임의 종류의 인터리빙이 작동할 것이다. 인터리버의 숨은 목적은 로우 및 컬럼 디코딩에 의해 디코딩 가능하지 않은 고착된 에러 패턴들을 분할하는 것이다. 인터리버는 모든 에러들을 확산시킬 것이고 이것은 결국 제 3 코드를 이용하여 디코딩될 것이다. TPC의 에러 플로어에서 우세한 최저 가중 에러 패턴들은 도 2의 예에서와 같이 하나의 로우 코드에서뿐만 아니라 하나의 컬럼 코드에서의 패턴들이다. 대각선 인터리버는 이 에러 패턴의 각각의 비트를 제 3 코드의 상이한 코드워드로 분산할 수 있고, 이것은 따라서 제 3 코드에 의해 정정될 수 있다.
도 6은 세그먼트내 TPC 인터리빙 시스템에 의해 생성되는 인터리빙된 패리티 정보의 실시예를 도시한 도면이다. 도 6은 도 5의 예의 연속이다. 이 예에서, 컬럼들의 쌍들(600a 내지 600c)은 (각각의) 패리티 비트들(602a 내지 602c)을 생성하기 위해 제 3 코드(예를 들면, BCH 코드)를 이용하여 에러 정정 인코딩된다. 일부 다른 실시예들(도시되지 않음)에서, 데이터의 컬럼들에 반대되는 데이터의 로우들은 인터리빙된 패리티 정보를 생성하기 위해 제 3 코드를 이용하여 에러 정정 인코딩된다. 패리티 비트들(602a 내지 602c)은 도 1a의 단계(110)에서 생성되는 인터리빙된 패리티 정보의 예이다.
도 7은 제 1 세그먼트내 TPC 인터리빙 기록 처리기의 실시예를 도시한 도면이다. 도 7은 도 1a 및 도 3 내지 도 6에 도시된 처리를 수행하는 시스템의 예를 도시한다. 일부 실시예들에서, 기록 처리기(700)는 주문형 집적 회로(ASIC) 또는 필드-프로그래밍 가능한 게이트 어레이(FPGA)와 같은 반도체 디바이스를 이용하여 구현된다. 저장장치 시스템이 본 명세서에 도시되지만, 통신 시스템에서 전송기에 의해 유사한 구성요소가 이용될 수 있다(예를 들면, 무선 채널 또는 유선 접속을 통해 전송되기 전에).
데이터 세그먼트는 기록 처리기(700)에 입력된다. 제 1 에러 정정 인코더(704)는 데이터 세그먼트를 입력하고 데이터 세그먼트뿐만 아니라 제 1 세트의 패리티 정보를 출력한다. 예를 들면, 제 1 에러 정정 인코더(704)는 도 3에 도시된 처리를 수행한다.
데이터 세그먼트 및 제 1 세트의 패리티 정보는 제 1 에러 정정 인코더(704)에서 컬럼 그루퍼(705)로 넘겨진다. 컬럼 그루퍼(705)는 임의 수의 컬럼들을 함께 그룹화하고 그 후에 제 2 에러 정정 인코더(706)는 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보를 생성하기 위해 그룹화된 컬럼들을 인코딩한다. 예를 들면, 컬럼 그루퍼(705) 및 제 2 에러 정정 인코더(706)는 도 4에 도시된 그룹화 및 인코딩을 수행한다. 함께, 제 1 에러 정정 인코더(704), 컬럼 그루퍼(705), 및 제 2 에러 정정 인코더(706)는 컬럼 조합, 터보-곱 코드(CCTPC) 인코더(702)를 포함한다.
세그먼트내 인터리버(708)는 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보를 입력하고 모든 비트들을 인터리빙하여 인터리빙된 데이터를 생성한다. 세그먼트내 인터리버(708)는 단일 세그먼트에 대한 정보를 인터리빙하도록 구성된다. 도 5는 세그먼트내 인터리버(708)에 의해 수행된 처리의 예를 도시한다.
인터리빙된 데이터는 세그먼트내 인터리버(708)에서 제 3 에러 정정 인코더(710)로 넘겨지고, 이것은, 제 3 코드를 이용하여 인터리빙된 패리티 정보를 생성한다. 도 6은 제 3 에러 정정 인코더(710)에 의해 수행된 처리의 예를 도시한다. 이 예에서, 데이터 세그먼트, 제 1 세트의 패리티 정보, 제 2 세트의 패리티 정보, 및 인터리빙된 패리티 정보가 솔리드 스테이트 저장장치(720)에 저장된다. 일부 실시예들에서, 데이터 세그먼트, 제 1 세트의 패리티 정보, 제 2 세트의 패리티 정보, 및 인터리빙된 패리티 정보는 단일 판독(예를 들면, 페이지)에 적합하여, 모든 정보가 단일 액세스에서 다시 판독될 수 있다.
도 8a는 컬럼 조합, 터보-곱 코드(CCTPC) 디코더의 실시예를 도시한 도면이다. CCTPC 디코더(802)는 제 1 에러 정정 디코더(806) 및 제 2 에러 정정 디코더(804)를 포함한다. CCTPC 디코더(802)는 도 7의 CCTPC 인코더(702)에 대응하고, 제 1 에러 정정 디코더(806)는 도 7의 제 1 에러 정정 인코더(704)에 대응하고, 제 2 에러 정정 디코더(804)는 도 7의 제 2 에러 정정 인코더(706)에 대응한다. 데이터 세그먼트 (예를 들면, 솔리드 스테이트 저장장치로부터, 아마도 에러들과 함께 판독된), 제 1 세트의 패리티 정보 (예를 들면, 솔리드 스테이트 저장장치로부터, 아마도 에러들과 함께 판독된), 및 제 2 세트의 패리티 정보 (예를 들면, 솔리드 스테이트 저장장치로부터, 아마도 에러들과 함께 판독된)는 정정된 데이터 세그먼트, 정정된 제 1 세트의 패리티 정보, 및 정정된 제 2 세트의 패리티 정보를 생성하는 제 2 에러 정정 디코더(804)에 입력(도시되지 않음)될 수 있다. 일부 경우들에서, 제 2 에러 정정 디코더(804)는 임의의 정정들을 할 수 없고(예를 들면, 에러들이 수가 제 2 코드의 에러 정정 능력을 초과하기 때문) 출력되는 정보는 입력되는 정보와 동일하다.
제 1 에러 정정 디코더(806)는 정정된 데이터 세그먼트, 정정된 제 1 세트의 패리티 정보, 및 정정된 제 2 세트의 패리티 정보를 입력하고 다른 데이터 세그먼트, 다른 정정된 제 1 세트의 패리티 정보, 및 다른 정정된 제 2 세트의 패리티 정보를 출력한다. 여기에 도시된 디코딩 순서는 단지 예시적일 뿐이고 원하는 대로 변경될 수 있음을 유념한다. 예를 들면, 도 8a에 도시된 바와 같이, 일부 경우들에서, 제 1 코드와 연관된 에러 정정 디코딩이 먼저 수행된다.
제 1 코드 및 제 2 코드 둘다가 에러들이 존재하지 않음을 나타내는 경우, 세그먼트는 판독 처리기(800)에 의해 출력된다. 그렇지 않은 경우, 제 2 에러 정정 디코더(804) 및 제 1 에러 정정 디코더(806)는 최대 수의 시도들에 도달될 때까지 또는 세그먼트가 성공적으로 디코딩되어 출력될 때까지 디코딩을 교대한다. 일부 경우들에서, 최대 수의 시도들이 1로 설정되어, 제 1 코드 및 제 2 코드는 제 3 코드가 시도되기 전에 한 번만 이용된다. 다음 도면은 이에 대한 예를 도시한다. 일부 다른 실시예들에서(예를 들면, 세그먼트간 TPC 인터리빙), 최대 수의 시도들은 2 이상으로 설정된다(예를 들면, 제 3 코드를 이용한 디코딩과 연관된 패널티가 존재하기 때문에, 제 1 코드 및 제 2 코드로 한 번만의 디코딩 시도 후에 제 3 코드로 진행하는 것은 바람직하지 않을 수 있다).
도 8b는 제 1 세그먼트내 TPC 인터리빙 판독 처리기의 실시예를 도시한 도면이다. 도시된 예에서, 판독 처리기(800)는 도 7의 기록 처리기(700)에 대응한다. 일부 실시예들에서, 판독 처리기(800)는 주문형 집적 회로(ASIC) 또는 필드-프로그래밍 가능한 게이트 어레이(FPGA)와 같은 반도체 디바이스를 이용하여 구현된다. 판독 처리기(800)는 도 3 내지 도 6에 도시된 바와 같이 인코딩된 데이터를 디코딩하는 시스템의 일례를 도시한다.
도시된 예에서, 판독 데이터 세그먼트(에러들을 가질 가능성이 있음), 판독 제 1 세트의 패리티 정보(에러들을 가질 가능성이 있음), 및 판독 제 2 세트의 패리티 정보(에러들을 가질 가능성이 있음)가 솔리드 스테이트 저장장치(820)로부터 CCTPC 디코더(802)에 입력된다. 도 8a는 CCTPC 디코더(802)의 더욱 상세한 도면을 도시한다. 상기에 기술된 바와 같이, CCTPC 디코더(802)는 솔리드 스테이트 저장장치로부터의 정보에 대해 제 1 코드 및 제 2 코드를 이용한 디코딩을 수행한다. 이 특정한 세그먼트내 TPC 인터리빙 예에서, CCTPC 디코더(802)는 디코딩을 한 번 시도하고 그 후에 제 3 코드가 시도된 후까지 다시 디코딩을 수행하지 않는다. CCTPC 디코더(802)가 에러들을 검출하지 않는 경우, 성공적으로 디코딩된 세그먼트가 출력되고 판독 처리기가 중단한다(또는 다음 원하는 세그먼트를 판독 및 처리하는 단계를 진행한다).
CCTPC 디코더(802)가 원하는 세그먼트를 디코딩할 수 없는 경우, 제 1 및 제 2 정정된 세그먼트, 제 1 및 제 2 정정된 제 1 세트의 패리티 정보, 및 제 1 및 제 2 정정된 제 2 세트의 패리티 정보가 세그먼트내 인터리버(810)에 넘겨진다. 세그먼트내 인터리버(810)는 도 7의 세그먼트내 인터리버(708)와 동일한 인터리빙을 수행한다. 제 3 에러 정정 디코더(812)가 인터리빙된 데이터를 찾을 것(및 인터리빙되지 않은 형태가 아닐 것)으로 기대하고 있기 때문에, 세그먼트내 인터리버(810)는 이를 제 3 에러 정정 디코더(812)에 의해 기대되는 형태로 두기 위해 입력 정보에 대해 동작한다. 인터리빙된 데이터는 세그먼트내 인터리버(810)에서 제 3 에러 정정 디코더(812)로 넘겨진다. 제 3 에러 정정 디코더(812)는 제 3-정정된 인터리빙된 데이터 및 제 3-정정된 인터리빙된 패리티 정보를 생성한다.
세그먼트내 디-인터리버(814)는 제 3-정정된 인터리빙된 데이터를 입력하고, 세그먼트내 인터리버(810)에 의해 수행된 재정리 또는 재배열의 역을 수행하고, 제 3-정정된 인터리빙된 데이터로부터 제 3-정정된 세그먼트, 제 3-정정된 제 1 세트의 패리티 정보, 및 제 3-정정된 제 2 세트의 패리티 정보를 출력한다(예를 들면, 도 1c의 단계(184)의 일례). 제 3 에러 정정 디코더(812)가 모든 나머지 에러들을 제거할 수 있는 경우, 성공적으로 디코딩된 세그먼트가 출력되고 판독 처리기(800)는 처리를 중단하거나 다음 세그먼트로 계속된다.
일부 에러들이 여전히 원하는 세그먼트에 남아있는(예를 들면, 하나 이상의 코드들에 의해 표시되는) 경우, CCTPC 디코더(802)는 제 3-정정된 세그먼트, 제 3-정정된 제 1 세트의 패리티 정보, 및 제 3-정정된 제 2 세트의 패리티 정보를 입력하고 정보를 처리한다. CCTPC 디코더(802), 세그먼트내 인터리버(810), 제 3 에러 정정 디코더(812), 및 세그먼트내 디-인터리버(814) 사이의 이러한 처리 루프는 필요한 한 또는 최대 수의 시도들에 도달될 때까지 계속될 수 있다.
이 도면 및 다른 도면들에 도시된 코드들의 시퀀스들은 단지 예시적일 뿐임을 유념한다. 코드들의 임의의 시퀀스(예를 들면, (코드 1, 코드 2, 코드 3) 또는 (코드 3, 코드 1, 코드 2) 등)가 이용될 수 있다.
상술된 세그먼트내 TPC 인터리빙 실시예는 통상적인 TPC 시스템들에 비해 에러 플로어를 낮춘다. 그러나, 이것은 제 3 코드와 연관된 오버헤드 정보량이 훨씬 더 낮춰질 수 있는 경우에 바람직하다. 다음 도면들은 제 3 코드와 연관된 오버헤드 정보량(세그먼트당)의 감소를 허용하는 세그먼트간 TPC 인터리빙 실시예를 기술한다. 다음 도면들에서, 4개의 세그먼트들(예시적인 수)이 제 3 코드로 에러 정정 인코딩하기 전에 함께 인터리빙되기 때문에, 세그먼트당, 제 3 코드와 연관된 오버헤드 정보량은 감소된다.
세그먼트간 TPC 인터리빙 예
도 9는 세그먼트간 TPC 인터리빙 기록 처리기의 실시예를 도시한 도면이다. 도 9는 도 1a의 처리를 수행하는 시스템의 일 실시예이다. 도시된 예에서, 4개의 데이터 세그먼트들이 CCTPC 인코더들(902a 내지 902d)에 (각각) 입력된다. CCTPC 인코더들(902a 내지 902d)은 도 7에서 상술된 바와 같이 동작한다(예를 들면, 제 1 코드 및 제 2 코드를 이용하여, 그 특정 CCTPC 인코더에 데이터 세그먼트 입력을 위해 제 1 세트의 패리티 정보 및 제 2 세트의 패리티 정보를 각각 생성한다). 가독성을 보존하기 위해, CCTPC 인코더들에 포함되는 제 1 에러 정정 인코더들 및 제 2 에러 정정 인코더들은 도 9에 도시되지 않는다. CCTPC 인코더들(902a 내지 902d)의 각각은 그 특정 CCTPC 인코더에 입력된 특정 데이터 세그먼트, 대응하는 제 1 세트의 패리티 정보, 및 대응하는 제 2 세트의 패리티 정보(가독성을 위해 도 9에 라벨링되지 않음)를 출력한다.
데이터 조합기(904)는 입력되는, 4개의 데이터 세그먼트들, 4개의 제 1 세트들의 패리티 정보, 및 4개의 제 2 세트들의 패리티 정보를 조합하고 조합된 데이터를 출력한다. 데이터 조합기(904)는 연결기(concatenater)로서 또는 12-대-1, 병렬-직렬 변환기로서 생각될 수 있고, 비트들의 값들은 변경되지 않고 입력들은 단지 함께 수집되거나 집결될 뿐이다.
조합된 데이터는 세그먼트간 인터리버(906)에 의해 인터리빙되어 인터리빙된 데이터를 생성한다. 랜덤 인터리빙 패턴 또는 대각 인터리빙 패턴과 같은 임의의 원하는 인터리빙 패턴이 이용될 수 있다. 도 7의 세그먼트내 인터리버(708)와 달리, 세그먼트간 인터리버(906)는 다수의 세그먼트들, 이 경우 4개의 세그먼트들로부터 정보를 혼합하거나 인터리빙하도록 구성된다. 인터리빙된 데이터는 제 3 코드를 이용하여 인터리빙된 패리티 정보를 생성하는 제 3 에러 정정 인코더(908)에 넘겨진다.
4개의 데이터 세그먼트들, 4개의 제 1 세트들의 패리티 정보, 4개의 제 2 세트들의 패리티 정보, 및 인터리빙된 패리티 정보는 솔리드 스테이트 저장장치(920)에 저장된다. 전과 같이, 제 3 코드는 필요시 이용되는 기반으로 이용되어, 디코딩은 제 1 코드 또는 제 2 코드로 시작할 것이고 제 3 코드는 제 1 코드 및 제 2 코드가 세그먼트 디코딩 시 성공적이지 않을 것(예를 들면, 최대 수의 시도들에 도달되는 것)으로 결정되지 않는 한 이용되지 않는다. 이와 같이, 세그먼트간 인터리버(906)에 의해 출력된 인터리빙된 데이터와 대조적으로, 인터리빙되지 않은 데이터(제 1 코드 또는 제 2 코드를 이용하여 디코딩될 준비가 된)가 솔리드 스테이트 저장장치(920)에 저장되는 경우 판독 처리기에 더욱 효율적이다.
일부 애플리케이션들에서, 페이지(예를 들면, 16kB)가 솔리드 스테이트 저장장치로부터 다시 판독될 수 있는 최소 단위이지만, 저장장치 제어기(예를 들면, 판독 처리기를 포함하는)는 바라는 임의의 4kB 세그먼트를 솔리드 스테이트 저장장치로부터 저장장치 제어기로 이전하는 것을 선택할 수 있다. 저장장치 산업에서, 4kB 세그먼트가 다시 판독되어 디코딩될 수 있는 속도는 상이한 저장장치 제어기들을 평가 및/또는 비교하기 위한 중요한 성능 지수이다. 이로 인해, 일부 실시예들에서, 각각의 데이터 세그먼트(예를 들면, 기록 처리기(900)에 입력된)는 4kB이어서, 각각의 세그먼트는 개별적으로 비교적 신속하게 판독될 수 있다(그리고 따라서 저장장치 제어기는 경쟁 제어기들에 비해 양호한 성능 측정을 가진다).
도 10은 세그먼트간 TPC 인터리빙 판독 처리기의 실시예를 도시한 도면이다. 판독 처리기(1000)는 도 9의 기록 처리기(900)에 대응한다. 상술된 바와 같이, 제 3 코드는 솔리드 스테이트 저장장치로부터 다른 세그먼트들(원하는 세그먼트와 함께 인터리빙되는)을 페칭하는 것과 연관된 패널티가 존재하기 때문에, 필요시 이용되는 기반으로 이용된다. 이와 같이, 처리는 하나의 세그먼트 및 연관된 패리티 정보로 시작한다. (예를 들면, 단일) 데이터 세그먼트(에러들을 포함할 가능성이 있음), 제 1 세트의 패리티 정보(에러들을 포함할 가능성이 있음), 및 제 2 세트의 패리티 정보(에러들을 포함할 가능성이 있음)는 솔리드 스테이트 저장장치(1020)로부터 획득되고 CCTPC 디코더(1002a)에 입력된다. 이 예에서, CCTPC 디코더(1002a)는 초기 디코딩 시도들에 이용될 디코더(예를 들면, 디코더들(1002a 내지 1002d)로서 지정된다. 가독성을 보존하기 위해, 솔리드 스테이트 저장장치(1020)에서 CCTPC 디코더(1002a)로 넘겨진 3개의 신호들은 도시되지 않는다.
CCTPC 디코더(1002)는 제 1 에러 정정 디코더(도시되지 않음) 및 제 2 에러 정정 디코더(도시되지 않음)를 포함한다. 이들 2개의 디코더들은 세그먼트가 성공적으로 디코딩될 때까지(이 지점에서 세그먼트가 출력되고 처리가 종료한다), 또는 최대 수의 시도들에 도달될 때까지(예를 들면, 이 지점에서 시스템은 제 1 및 제 2 코드가 스스로 세그먼트를 디코딩할 수 없을 것이고 제 3 코드가 이용되어야 한다고 결정한다) 세그먼트 디코딩하는 것을 교대한다. 최대 수의 시도들에 도달된 경우, 제 3 코드가 디코딩시 이용되고 원하는 세그먼트와 인터리빙된 다른 세그먼트들은 솔리드 스테이트 저장장치(1020)로부터 페칭된다. 통상적으로, 대부분의 세그먼트들은 제 3 코드를 이용하지 않고 저장장치로부터 다른 관련된 세그먼트들을 페칭하지 않고, 바로 제 1 코드 및 제 2 코드를 이용하여 디코딩될 수 있을 것이다.
이 시스템에서, 4개의 세그먼트들 및 관련된 패리티 정보가 함께 인터리빙되고 제 3 코드는 그 세그먼트간 TPC 인터리빙된 정보에 걸쳐 적용된다. 이와 같이, 원하는 세그먼트, 이들 3개의 관련된 세그먼트들과 연관된 제 1 세트들의 패리티 정보, 및 이들 3개의 관련된 세그먼트들과 연관된 제 2 세트들의 패리티 정보와 함께 인터리빙되는 다른 3개의 세그먼트들은 솔리드 스테이트 저장장치로부터 획득된다. 가독성을 위해, 솔리드 스테이트 저장장치(1020)와 CCTPC 디코더들(1002b 내지 1002d) 사이의 신호들은 라벨링되지 않는다. CCTPC 디코더들(1002b 내지 1002d)은 그 후에 상술된 바와 같이 세그먼트들을 처리한다(예를 들면, 어떤 최대 수의 반복들 동안 또는 그 특정 세그먼트가 성공적으로 디코딩될 때까지).
CCTPC 디코더들(1002a 내지 1002d) 각각은 제 1 및 제 2 정정된 데이터 세그먼트, 제 1 및 제 2 정정된 제 1 세트의 패리티 정보, 및 제 1 및 제 2 정정된 제 1 세트의 패리티 정보를 출력하고 데이터 조합기(1008)에 이를 넘겨준다. 4개의 세그먼트들, 4개의 제 1 세트들의 패리티 정보, 및 4개의 제 2 세트들의 패리티 정보가 데이터 조합기(1008)에 의해 조합되어 조합된 데이터를 생성한다. 데이터 조합기(1008)는 도 9의 데이터 조합기(904)와 동일한 처리를 수행한다.
세그먼트간 인터리버(1010)는 조합된 데이터를 인터리빙하여 인터리빙된 데이터를 생성한다. 제 3 에러 정정 디코더(1012)는 세그먼트간 인터리버(1010)로부터 인터리빙된 데이터를 취하고 솔리드 스테이트 저장장치(1020)로부터 인터리빙된 패리티 정보를 판독하고 제 3 코드를 이용하여 에러 정정 디코딩을 수행한다. 제 3-정정된 인터리빙된 패리티 정보 및 제 3-정정된 인터리빙된 데이터는 제 3 에러 정정 디코더(1012)에 의해 출력된다.
세그먼트간 디-인터리버(1014)는 4개의 (제 3-정정된) 세그먼트들, 4개의 (제 3-정정된) 제 1 세트들의 패리티 정보, 및 4개의 (제 3-정정된) 제 2 세트들의 패리티 정보(이들 모두는 제 3 코드를 이용하여 정정되었음)를 획득하기 위해 제 3-정정된 인터리빙된 데이터를 디-인터리빙한다. 제 1 세그먼트, 그 세그먼트와 연관된 제 1 세트의 패리티 정보, 및 그 세그먼트와 연관된 제 2 세트의 패리티 정보는 제 1CCTPC 디코더(1002a)에 의해 처리된다. 유사하게, 제 2 CCTPC 디코더(1002b)는 제 2 세그먼트, 연관된 제 1 세트의 패리티 정보, 및 연관된 제 2 세트의 패리티 정보를 처리한다. 제 3 CCTPC 디코더(1002c) 및 제 4 CCTPC 디코더(1002d)는 유사한 세트들의 정보를 유사하게 처리한다.
원하는 세그먼트에 나머지 에러들이 존재하지 않는 경우, 원하는 세그먼트(및 하나 이상의 다른 세그먼트들이 성공적으로 디코딩된 경우 하나 이상의 다른 세그먼트들도 가능)가 출력된다(예를 들면, 세그먼트간 디-인터리버(1014)의 출력으로부터). 원하는 세그먼트에 적어도 하나의 에러가 여전히 존재하는 경우, CCTPC 디코더들(1002a 내지 1002d), 데이터 조합기(1008), 세그먼트간 인터리버(1010), 제 3 에러 정정 디코더(1012), 및 세그먼트간 디-인터리버(1014)를 포함하는 루프를 통해 처리가 계속된다. 솔리드 스테이트 저장장치(1020)로부터의 입력들과 달리, 세그먼트간 디-인터리버(1014)로부터의 입력들은 제 3 코드를 이용하여 정정되어서 이번에 품질이 더 양호하고 원하는 세그먼트를 성공적으로 디코딩할 더 좋은 기회가 존재함을 유념한다.
일부 지점에서, 원하는 세그먼트가 성공적으로 디코딩될 수 없는 경우(예를 들면, 어떤 총수 또는 전역적 시도들 후에), 시스템은 적어도 원하는 세그먼트에 대해 에러를 선언한다(즉, 다른 3개의 세그먼트들이 제 1 코드 및 제 2 코드만을 이용하여 성공적으로 디코딩할 수 있기 때문).
도 11은 세그먼트간 TPC 인터리빙된 정보를 저장장치에 기록하기 위한 처리의 실시예를 도시한 흐름도이다. 도 11은 도 9의 기록 처리기(900)에 의해 수행된 처리를 기술하고 도 1a의 일 실시예이다. 도 1a의 단계들과 유사한 번호들을 가진 이 도면의 단계들은 그들 단계들의 예들이다(예를 들면, 단계(100b)는 도 1a의 단계(100)의 예이다). 단계(1100)에서, Ns개의 데이터 세그먼트들이 획득된다. Ns는 세그먼트간 TPC 인터리버 시스템에서 (연관된 패리티 정보와) 함께 인터리빙되는 세그먼트들의 수이다. 예를 들면, 도 9에서, Ns개의 = 4이다.
단계(100b)에서, Ns개의 제 1 세트들의 패리티 정보는 Ns개의 데이터 세그먼트들 및 제 1 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 단계(102b)에서, Ns개의 제 2 세트들의 패리티 정보는 Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 제 2 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 예를 들면, 도 9에서, 단계들(100b 및 102b)은 CCTPC 인코더들(902a 내지 902d)에 의해 수행된다.
단계(108b)에서, 세그먼트간 인터리빙된 데이터를 생성하기 위해 Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 Ns개의 제 2 세트들의 패리티 정보가 세그먼트간 인터리빙된다. 예를 들면, 도 9에서, 단계(108b)는 세그먼트간 인터리버(906)에 의해 수행된다.
단계(110b)에서, 세그먼트간 인터리빙된 패리티 정보는 세그먼트간 인터리빙된 데이터 및 제 3 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 예를 들면, 도 9에서, 단계(110b)는 제 3 에러 정정 인코더(908)에 의해 수행된다.
단계(1102)에서, Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, Ns개의 제 2 세트들의 패리티 정보, 및 세그먼트간 인터리빙된 패리티 정보는 솔리드 스테이트 저장장치 상에 저장된다. 도 9에서, 예를 들면, CCTPC 인코더들(902a 내지 902d)로부터의 12개의 출력들 및 제 3 에러 정정 인코더(908)로부터의 (세그먼트간) 인터리빙된 패리티 정보는 솔리드 스테이트 저장장치(902)에 저장된다. 일부 실시예들에서, Ns개의 세그먼트들은 단일 페이지(단일 판독시 다시 판독될 수 있는)에 함께 저장되고 연관된 패리티 정보는 페이지와 연관된 여분의 바이트들에 저장된다. 일부 실시예들에서, 세그먼트들은 판독 시간이 이 구성의 페이지들에 의해 공유될 수 있을 때 쌍을 이룬 평면 페이지들에 배치된다.
도 12a 내지 도 12c는 저장장치로부터 세그먼트간 TPC 인터리빙된 정보를 판독하기 위한 처리의 실시예를 도시한 흐름도이다. 도 12a 내지 도 12c는 도 10의 판독 처리기(1000)에 의해 수행되는 처리를 기술한다. 전과 같이, 유사한 번호들을 가진 단계들은 이들 단계들의 예들이다.
단계(151b)에서, 원하는 데이터 세그먼트, 원하는 데이터 세그먼트와 연관된 제 1 세트의 패리티 정보, 및 원하는 데이터 세그먼트와 연관된 제 2 세트의 패리티 정보가 솔리드 스테이트 저장장치로부터 판독된다. 이것이 세그먼트간 TPC 인터리빙 예이기 때문에, 단계(151b)에서 획득된 세그먼트는 원하는 세그먼트와 인터리빙되는 다른 3개의 세그먼트들(예시적인 수)로부터 이를 구별하기 위해 원하는 세그먼트라고 칭해진다.
단계(156b)에서, 정정된 및 원하는 데이터 세그먼트, 원하는 세그먼트와 연관되는 정정된 제 1 세트의 패리티 정보, 및 원하는 세그먼트와 연관되는 정정된 제 2 세트의 패리티 정보를 획득하기 위해 원하는 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보에 대해 제 2 에러 정정 코드와 연관된 디코딩이 수행된다. 단계(158b)에서, 다른 정정된 및 원하는 데이터 세그먼트, 원하는 세그먼트와 연관되는 다른 정정된 제 1 세트의 패리티 정보, 및 원하는 세그먼트와 연관되는 다른 정정된 제 2 세트의 패리티 정보를 획득하기 위해 정정된 및 원하는 데이터 세그먼트, 정정된 제 1 세트의 패리티 정보, 및 정정된 제 2 세트의 패리티 정보에 대해 제 1 에러 정정 코드와 연관된 디코딩이 수행된다. 예를 들면, 도 10a의 디코더들(1004 및 1006)이 각각 단계들(156b 및 158b)을 수행한다.
단계(160)에서 원하는 세그먼트의 디코딩이 성공적인지가 결정된다. 그러한 경우, 처리는 종료된다. 그렇지 않은 경우, 단계(162)에서, 최대 수의 시도들에 도달되었는지가 결정된다. 그렇지 않은 경우, 처리는 현재 원하는 세그먼트 및 연관된 패리티 정보를 이용하여 단계(156b)로 리턴한다. 달리 말하면, 2개의 디코더들은 교호하고 다른 디코더로부터의 출력을 이용하여 원하는 세그먼트를 반복적으로 디코딩한다.
단계(162)에서 최대 수의 시도들에 도달되었다고 결정되는 경우, 원하는 세그먼트와 연관된 3개의 데이터 세그먼트들, 원하는 세그먼트와 연관된 3개의 제 1 세트들의 패리티 정보, 및 원하는 세그먼트와 연관된 3개의 제 2 세트들의 패리티 정보가 단계(180b)에서 솔리드 스테이트 저장장치로부터 획득된다. 이 특정 예에서, Ns = 4이고, (Ns-1) = 3이다.
단계(186b)에서, 3개의 제 2-정정된 데이터 세그먼트들, 3개의 제 2-정정된, 제 1 세트들의 패리티 정보, 및 3개의 제 2-정정된, 제 2 세트들의 패리티 정보를 획득하기 위해 원하는 세그먼트와 연관된 3개의 데이터 세그먼트들, 원하는 세그먼트와 연관된 3개의 제 1 세트들의 패리티 정보, 및 원하는 세그먼트와 연관된 3개의 제 2 세트들의 패리티 정보에 대해 제 2 에러 정정 코드와 연관된 디코딩이 수행된다. 단계(188b)에서, 3개의 제 1-정정된 데이터 세그먼트들, 3개의 제 1-정정된, 제 1 세트들의 패리티 정보, 및 3개의 제 1-정정된, 제 2 세트들의 패리티 정보를 획득하기 위해 3개의 제 2-정정된 데이터 세그먼트들, 3개의 제 2-정정된, 제 1 세트들의 패리티 정보, 및 3개의 제 2-정정된, 제 2 세트들의 패리티 정보에 대해 제 1 에러 정정 코드와 연관된 디코딩이 수행된다. 도 10에서, 예를 들면, 단계들(186b 및 188b)은 CCTPC 디코더들(1002b 내지 1002d)에 의해 수행된다.
단계(181b)에서, 세그먼트간 인터리빙된 데이터를 획득하기 위해 4개의 제 1-정정된 및 제 2-정정된 데이터 세그먼트들, 4개의 제 1-정정된 및 제 2-정정된 제 1 세트들의 패리티 정보, 및 4개의 제 1-정정된 및 제 2-정정된 제 2 세트들의 패리티 정보에 대해 세그먼트간 인터리빙이 수행되고, 4개의 데이터 세그먼트들, 4개의 제 1 세트들의 패리티 정보, 및 4개의 제 2 세트들의 패리티 정보는 제 1 에러 정정 코드와 연관된 디코딩 및 제 2 에러 정정 코드와 연관된 디코딩이 그들에 대해 수행되게 하였다. 도 10에서, 단계(181b)는 데이터 조합기(1008) 및 세그먼트간 인터리버(1010)에 의해 수행된다.
단계(182)에서, 적어도 제 3-정정된 인터리빙된 데이터를 획득하기 위해 세그먼트간 인터리빙된 데이터 및 인터리빙된 패리티 정보에 대해 제 3 에러 정정 코드와 연관된 디코딩이 수행된다. 도 10에서, 예를 들면, 단계(182)는 제 3 에러 정정 디코더(1012)에 의해 수행되고, 그 예에서 인터리빙된 데이터는 세그먼트간 인터리버(1010)로부터 나오고 인터리빙된 패리티 정보는 솔리드 스테이트 저장장치(1020)로부터 나온다.
단계(184b)에서, 제 3-정정된 원하는 데이터 세그먼트를 포함하여 적어도 4개의 제 3-정정된 데이터 세그먼트들을 획득하기 위해 제 3-정정된 인터리빙된 데이터에 대해 디-인터리빙이 수행된다. 도 10에서, 단계(184b)는 4개의 세그먼트들과 연관된 패리티 정보를 또한 출력하는 세그먼트간 디-인터리버(1014) 및 세그먼트간 디-인터리버(1014)에 의해 수행된다.
단계(190)에서, 디코딩이 원하는 데이터 세그먼트에 대해 성공적인지가 결정된다. 도 12a 내지 도 12c의 목적은 특정 데이터 세그먼트를 디코딩하는 것이어서, 원하는 데이터 세그먼트가 성공적으로 디코딩되는 경우에 처리는 종료될 수 있다(예를 들면, 원하는 데이터 세그먼트와 인터리빙된 다른 3개의 세그먼트들 중 어느 것이 성공적으로 디코딩되지 않거나, 또는 디코딩 결과가 결정되지 않도록 불완전하게 디코딩되는 경우에도). 단계(190)에서 원하는 데이터 세그먼트가 성공적으로 디코딩되었다고 결정되면, 처리는 종료된다.
단계(190)에서, 원하는 데이터 세그먼트가 성공적으로 디코딩되지 않았다고 결정되면, 단계(192)에서 계속 시도할 지의 여부가 결정된다. 예를 들면, 시스템이 포기하고 디코딩 실패를 선언할 어떤 (절대적 또는 전체) 최대 수의 시도들이 존재할 수 있다. 단계(194)에서, 계속 시도하기로 결정된 경우, 단계(186b)에서 제 2 에러 정정 코드와 연관된 다른 디코딩 반복이 수행된다. 도 10b에서, 예를 들면, 이것은 CCTPC 디코더들(1002a 내지 1002d)을 통해 다른 반복을 수행하는 것에 대응한다.
상술된 세그먼트간 TPC 인터리빙 예가 일부 애플리케이션들에 유용하지만, 그것은 일부 이점들이 훨씬 더 적은 인터리빙된 패리티 정보를 이용하여 달성될 수 있다면 바람직할 것이다(예를 들면, 제 3 코드가 필요시 이용되는 기반으로 이용되기 때문에, 제 3 코드와 연관되는 인터리빙된 패리티 정보가 일부 세그먼트들에만 이용된다). 다음 도면들은 세그먼트간 TPC 인터리빙을 수행하기 위한 더 효율적인 기술을 제공하는 제 2 세그먼트내 TPC 인터리빙 실시예를 기술한다.
세그먼트내 TPC 인터리빙 예 2
도 13은 제 2 세그먼트내 TPC 인터리빙 기록 처리기의 실시예를 도시한 도면이다. 도시된 예에서, 4개의 데이터 세그먼트들은 CCTPC 인코더들(1302a 내지 1302d)에 (각각) 넘겨진다. CCTPC 인코더들의 각각은 이에 입력된 세그먼트를 처리하고 데이터 세그먼트, 제 1 세트의 패리티 정보(예를 들면, 제 1 코드에 기초하여), 및 제 2 세트의 패리티 정보(예를 들면, 제 2 코드에 기초하여)를 출력한다. CCTPC 인코더들(1302a 내지 1302d)은 도 7에 기술된 바와 같이 동작한다. 가독성을 보존하기 위해, CCTPC 인코더들(1302a 내지 1302d)에 의해 출력된 세그먼트들 및 대응하는 패리티 정보가 도 13에서 라벨링되지 않는다.
CCTPC 인코더들(1302a 내지 1302d)의 출력들은 세그먼트내 인터리버들(1304a 내지 1304d)에 (각각) 전달된다. 세그먼트내 인터리버들(1304a 내지 1304d)의 각각은 이에 전달된 정보를 인터리빙하고 각각의 인터리빙된 데이터 신호를 출력한다.
세그먼트내 인터리버들(1304a 내지 1304d)에 의해 생성된 4개의 인터리빙된 데이터 신호들은 인터리빙된 패리티 정보를 생성하는 제 3 에러 정정 인코더들(1306a 내지 1306d)에 의해 (각각) 입력된다. 세그먼트내 인터리버들(1304a 내지 1304d) 및 제 3 에러 정정 인코더들(1306a 내지 1306d)의 각 쌍은 인터리빙된 패리티 생성기(예를 들면, 1310a 내지 1310d)를 포함한다. 4개의 인터리빙된 패리티 정보 신호들은 배타적 OR(즉, XOR)를 이용하여 조합되어, 조합된 패리티 정보를 생성한다. 다음 테이블은 인터리빙된 패리티 정보가 3비트 길이인 일례를 도시한다.
비트 1 비트 2 비트 3
인터리빙된 패리티 정보 1 0 0 0
인터리빙된 패리티 정보 2 0 0 1
인터리빙된 패리티 정보 3 0 1 1
인터리빙된 패리티 정보 4 1 1 1
조합된 패리티 정보 1 0 1
XOR 함수를 이용하여 생성된 조합된 패리티 정보예
4개의 세그먼트들, 4개의 제 1 세트들의 패리티 정보, 4개의 제 2 세트들의 패리티 정보(CCTPC 인코더들(1302a 내지 1302d)에 의해 출력된) 및 조합된 패리티 정보(인터리빙된 패리티 조합기(1308)에 의해 출력된)는 솔리드 스테이트 저장장치(1320)에 저장된다. 4개의 패리티 정보 신호들을 단일 조합된 패리티 정보 신호로 조합하는 것이 저장되어야 하는 오버헤드 정보량을 감소시킴을 유념한다. 이 예에서, 모든 4개의 인터리빙된 패리티 정보 신호들을 저장하는 것에 비해 제 3 코드와 연관된 패리티 정보량의 단 ¼ 만이 저장되어야 한다. 당연히, 저장된 오버헤드 정보량은 조합되는 세그먼트들의 수에 적어도 의존할 것이다.
도 14a는 초기 디코딩 시도들 동안에 이용되는 CCTPC 디코더를 도시한 제 2 세그먼트내 TPC 인터리빙 판독 처리기의 실시예를 도시한 도면이다. 판독 처리기(1400)는 도 13의 기록 처리기(1300)에 대응한다. 도시된 예에서, 원하는 데이터 세그먼트(에러들을 포함할 수 있음), 그 세그먼트와 연관된 제 1 세트의 패리티 정보(에러들을 포함할 수 있음), 및 그 세그먼트와 연관된 제 2 세트의 패리티 정보(에러들을 포함할 수 있음)는 솔리드 스테이트 저장장치(1420)로부터 판독되고 판독 처리기(1400)의 CCTPC 디코더(1402)에 넘겨진다.
CCTPC 디코더(1402)는 원하는 세그먼트를 반복적으로 디코딩하는 제 1 에러 정정 디코더(1406) 및 제 2 에러 정정 디코더(1404)를 포함한다. 2개의 디코더들은 세그먼트가 성공적으로 인코딩될 때까지(그 경우에 출력됨) 또는 최대 수의 시도들에 도달될 때까지(그 지점에서 시스템은 제 1 코드 및 제 2 코드가 원하는 세그먼트를 자력으로 디코딩할 수 없을 것이라고 결정함) 세그먼트 및 연관된 패리티 정보를 반복적으로 처리하는 것을 교대한다. 그러한 경우, 제 3 코드가 이용되고 다음 도면에 도시된 구성요소들이 이용된다.
도 14b는 제 3 코드를 이용하여 에러 정정 디코딩과 연관된 구성요소들을 포함하는 제 2 세그먼트내 TPC 인터리빙 판독 처리기의 실시예를 도시한 도면이다. 도시된 예에서, 주어진 세그먼트가 바로 제 1 및 제 2 코드들을 이용하여 디코딩될 수 없어서, 제 3 코드 및 저장된 조합된 패리티 정보가 원하는 세그먼트를 디코딩하도록 이용된다.
원하는 세그먼트 및 이와 연관된 3개의 세그먼트들(즉, 인터리빙된 패리티 정보가 조합된 패리티 정보를 형성하기 위해 함께 조합된 세그먼트들)이 솔리드 스테이트 저장장치(1420)로부터 판독되고 그들 각각의 제 1 및 제 2 세트들의 패리티 정보(이들 모두 에러들을 포함할 수 있음)와 함께 CCTPC 디코더들(1402a 내지 1402d)에 각각 넘겨진다. 예를 들면, CCTPC 디코더(1402a)는 제 1 세그먼트와 연관된 정보를 처리하고, CCTPC 디코더(1402b)는 제 2 세그먼트와 연관된 정보를 처리하는 등이다. 가독성을 보존하기 위해, 솔리드 스테이트 저장장치(1420)에서 CCTPC 디코더들(1402a 내지 1402d)로의 신호들은 개별적으로 라벨링되지 않는다.
CCTPC 디코더들(1402a 내지 1402d)의 각각은 그 특정 세그먼트가 성공적으로 디코딩되거나 최대 수의 시도들에 도달될 때까지 각각의 세그먼트(예를 들면, 제 1 및 제 2 에러 정정 디코더를 반복적으로 이용하는)를 처리한다. CCTPC 디코더들(1402a 내지 1402d) 중 어느 것이라도 도 14a에서 초기 디코딩 시도들에 이용된 CCTPC 디코더(1402)를 포함할 수 있음을 유념한다. 일부 실시예들에서, 원하는 세그먼트를 처리하는 도 14b의 CCTPC 디코더는 도 14b에서 다시 실행되지 않는다(예를 들면, 최대 수의 시도들이 도 14a에서와 동일하고 따라서 중복된 결과들이 생성되는 경우).
CCTPC 디코더들(1402a 내지 1402d)의 각각은 그의 정정된 데이터 세그먼트, 그의 정정된 제 1 세트의 패리티 정보, 및 그의 정정된 제 2 세트의 패리티 정보("정정된(corrected)"은 제 1 및 제 2 코드를 이용하여 정정되는 것을 나타냄)를 인터리빙된 패리티 생성기들(1410a 내지 1410d)의 각각에 각각 넘긴다. 가독성을 보존하기 위해, 이것은 CCTPC 디코더들(1402a 내지 1402d)의 각각으로부터 인터리빙된 패리티 생성기들(1410a 내지 1410d)의 각각에 들어오는 3개의 신호들로서 도 14b에 도시된다. 인터리빙된 패리티 생성기들(1410a 내지 1410d)은 인터리빙된 데이터(예를 들면, 내부 세그먼트내 인터리버에 의해 생성된)의 사본을 출력하는 추가 특징을 갖고, 도 13에 기술된 인터리빙된 패리티 생성기들(1310a 내지 1310d)과 유사하게 동작한다.
인터리빙된 패리티 생성기들(1410a 내지 1410d)은 그들 인터리빙된 패리티 정보를 인터리빙된 패리티 정정기(1416)에 넘겨주고, 이것은 이에 입력되는 인터리빙된 패리티 정보를 가능하면 정정한다. 먼저, 인터리빙된 패리티 정정기(1416)는 임의의 정정이 수행될 수 있는지를 결정하기 위해 CCTPC 디코더들(1402a 내지 1402d)로부터 4개의 디코딩 결과들(예를 들면, "성공(success)" 또는 "실패(fail)")을 분석할 것이다. CCTPC 디코더들(1402a 내지 1402d)의 2개 이상이 실패 신호를 출력하는 경우, 정정이 수행될 수 없다(즉, 인터리빙된 패리티 정보 신호들 중 어느 것이 에러를 도입했는지 및 따라서 어느 것을 정정할 지의 100% 확실성으로 결정될 수 없기 때문에). 이러한 환경들 하에서 정정들을 행하는 것은 더 많은 에러들을 도입할 수 있다. 그러나, 하나 및 단 하나의 디코더가 디코딩 실패를 나타내는 경우, 정정이 수행될 수 있다.
다음에, 디코딩 성공/실패 신호들에 의해 허용되는 경우, 인터리빙된 패리티 정정기(1416)는 4개의 인터리빙된 패리티 정보 신호들 중 어느 것을 정정할지를 결정할 것이다. 디코더가 성공적인 신호를 출력하는 경우, 그 인터리빙된 패리티 정보 신호는 정정되지 않을 것이다(예를 들면, 에러들이 존재하지 않고 인터리빙된 패리티 정보에서 임의의 값을 변경하는 것은 실제로 에러를 도입하는 것이기 때문). (단일) 디코딩 실패 신호에 대응하는 (단일) 인터리빙된 패리티 정보 신호가 정정될 신호이다(필요한 경우). 정정되는 인터리빙된 패리티는 솔리드 스테이트 저장장치(1420)로부터 판독되는 조합된 패리티 정보에 대해 인터리빙된 패리티 생성기들(1410a 내지 1410d)에 의해 출력된 인터리빙된 패리티 정보의 XOR 결과들을 비교한 것이다. 값들이 주어진 비트 위치와 매칭하는 경우, 정정될 인터리빙된 패리티 정보 신호의 그 비트가 플립되지 않는다. 값들이 주어진 비트 위치와 매칭하지 않는 경우, 정정될 인터리빙된 패리티 정보 신호의 그 비트가 플립된다.
인터리빙된 패리티 신호들(정정된 신호를 포함)은 그 후에 인터리빙된 패리티 정정기(1416)로부터 출력되고 제 3 에러 정정 디코더들(1412a 내지 1412d)에 넘겨진다. 제 3 에러 정정 디코더들(1412a 내지 1412d)은 또한 인터리빙된 패리티 생성기들(1410a 내지 1410d)로부터 인터리빙된 데이터를 입력한다. 이들 2개의 신호들을 이용하여, 제 3 에러 정정 디코더들(1412a 내지 1412d)의 각각은 제 3 코드를 이용하여 에러 정정을 수행한다.
제 3 에러 정정 디코더들(1412a 내지 1412d)은 제 3-정정된 인터리빙된 데이터 신호들을 세그먼트내 디-인터리버들(1414a 내지 1414d)에 각각 넘겨준다. 세그먼트내 디-인터리버들(1414a 내지 1414d)의 각각은 제 3-정정된 데이터 세그먼트, 제 3-정정된 제 1 세트의 패리티 정보, 및 제 3-정정된 제 2 세트의 패리티 정보를 생성한다. 그 후에, 제 3-정정된 정보는 세그먼트내 디-인터리버들(1414a 내지 1414d)에서 CCTPC 디코더들(1402a 내지 1402d)에 각각 넘겨져서, 제 3-정정된 정보에 대한 처리를 수행한다. 필요한 경우, 임의 수의 부가의 디코딩 시도들(예를 들면, 제 1 및 제 2 코드를 이용하여 및/또는 제 3 코드를 이용하여)이 수행될 수 있다.
도 15는 세그먼트내 TPC 인터리빙된 데이터를 솔리드 스테이트 저장장치에 기록하기 위한 처리의 제 2 실시예를 도시한 흐름도이다. 도 15는 도 13의 기록 처리기(1300)에 의해 수행되는 처리를 기술하고 도 1a에 도시된 처리의 예이다.
단계(1500)에서, Ns개의 데이터 세그먼트들이 획득된다. 이것이 세그먼트내 TPC 인터리빙 실시예이기 때문에, Ns는 함께 인터리빙되는 세그먼트들의 수가 아니라, 연관되는 인터리빙된 패리티 정보가 함께 조합되는 세그먼트들의 수이다. 예를 들면, 도 13에서, Ns = 4이다. 단계(100c)에서, Ns개의 제 1 세트들의 패리티 정보는 Ns개의 데이터 세그먼트들 및 제 1 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 단계(102c)에서, Ns개의 제 2 세트들의 패리티 정보는 Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 제 2 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 예를 들면, 도 13에서, 단계들(100c 및 102c)은 CCTPC 인코더들(1302a 내지 1302d)에 의해 수행된다.
단계(108c)에서, Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 Ns개의 제 2 세트들의 패리티 정보가 세그먼트내 인터리빙되어 Ns개의 세그먼트내 인터리빙된 데이터를 생성한다. 단계(110c)에서, Ns개의 세그먼트내 인터리빙된 패리티 정보는 Ns개의 세그먼트내 인터리빙된 데이터 및 제 3 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 도 13에서, 예를 들면, 단계(108c)는 세그먼트내 인터리버들(1304a 내지 1304d)에 의해 수행되고 단계(110c)는 제 3 에러 정정 인코더들(1306a 내지 1306d)에 의해 수행된다.
단계(1502)에서, Ns개의 세그먼트내 인터리빙된 패리티 정보가 조합되어 조합된 패리티 정보를 획득한다. 도 13에서, 예를 들면, Ns = 4이고, 인터리빙된 패리티 조합기(1308)는 XOR을 이용하여 인터리빙된 패리티 정보를 조합한다.
단계(1504)에서, Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, Ns개의 제 2 세트들의 패리티 정보, 및 조합된 패리티 정보가 솔리드 스테이트 저장장치 상에 저장된다. 도 13에서, 예를 들면, 4개의 데이터 세그먼트들, 4개의 제 1 세트들의 패리티 정보, 및 4개의 제 2 세트들의 패리티 정보(CCTPC 인코더들(1302a 내지 1302d)로부터 출력된)가 솔리드 스테이트 저장장치(1320)에 저장되고, 조합된 패리티 정보(인터리빙된 패리티 조합기(1308)에 의해 출력된)가 솔리드 스테이트 저장장치(1320)에 저장된다.
도 16a 내지 도 16d는 저장장치로부터 세그먼트내 TPC 인터리빙된 정보를 판독하기 위한 처리의 실시예를 도시한 흐름도이다. 도 16a 내지 도 16d는 도 14a 및 도 14b의 판독 처리기(1400)에 의해 수행되는 처리를 기술한다.
단계(1600)에서, 원하는 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보가 솔리드 스테이트 저장장치로부터 판독된다. 일부 실시예들에서, 초기 디코딩 시도(들)가 성공적이지 않은 경우 나중에 필요한 경우에는 판독되는 정보가 버퍼에 저장된다.
단계(1602)에서, 정정된 및 원하는 데이터 세그먼트, 원하는 세그먼트와 연관되는 정정된 제 1 세트의 패리티 정보, 및 원하는 세그먼트와 연관되는 정정된 제 2 세트의 패리티 정보를 획득하기 위해 원하는 데이터 세그먼트, 제 1 세트의 패리티 정보, 및 제 2 세트의 패리티 정보에 대해 제 2 에러 정정 코드와 연관된 디코딩이 수행된다. 단계(1604)에서, 다른 정정된 및 원하는 데이터 세그먼트, 원하는 세그먼트와 연관되는 다른 정정된 제 1 세트의 패리티 정보, 및 원하는 세그먼트와 연관되는 다른 정정된 제 2 세트의 패리티 정보를 획득하기 위해 정정된 및 원하는 데이터 세그먼트, 정정된 제 1 세트의 패리티 정보, 및 정정된 제 2 세트의 패리티 정보에 대해 제 1 에러 정정 코드와 연관된 디코딩이 수행된다. 예를 들면, 단계들(1602 및 1604)은 도 14a의 에러 정정 디코더들(1404 및 1406)에 의해 각각 수행된다.
단계(1606)에서, 원하는 세그먼트의 디코딩이 성공적인지가 결정된다. 그러한 경우, 처리는 종료된다. 그렇지 않은 경우, 단계(1608)에서, 최대 수의 시도들에 도달되었는지가 결정된다. 그렇지 않은 경우, 디코딩은 단계들(1602 및 1604)에서 다시 수행된다(예를 들면, 현재 데이터 세그먼트 및 연관된 패리티 정보를 이용하여). 이것은, 예를 들면, 에러 정정 디코더들(1404 및 1406)이 원하는 세그먼트들을 원하는 만큼(즉, Ns는 임의의 원하는 수로 설정될 수 있음) 반복적으로 디코딩하는 것을 허용한다.
단계(1608)에서 최대 수의 시도들에 도달되었다고 결정되는 경우, 제 3 코드를 이용한 디코딩이 시도된다. 이를 위해, 단계(1620)에서, Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, Ns개의 제 2 세트들의 패리티 정보, 및 원하는 세그먼트와 연관되는 조합된 패리티 정보가 획득된다. 일부 실시예들에서, 원하는 세그먼트 및 연관된 패리티 정보가 버퍼로부터 획득되어 솔리드 스테이트 저장장치에 대한 중복 판독이 요구되지 않는다. 도 14b의 예에서, Ns = 4이다.
단계(1622)에서, Ns개의 제 2-정정된 데이터 세그먼트들, Ns개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 Ns개의 제 2 세트들의 패리티 정보에 대해 제 2 에러 정정 코드와 연관된 디코딩이 수행된다. 단계(1624)에서, Ns개의 제 1-정정된 데이터 세그먼트들, Ns개의 제 1-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 1-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 Ns개의 제 2-정정된 데이터 세그먼트들, Ns개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보에 대해 제 1 에러 정정 코드와 연관된 디코딩이 수행된다. 단계(1626)에서, 최대 수의 시도들에 도달되는지가 결정된다. 아직 도달되지 않은 경우, 디코딩은 단계들(1622 및 1624)에서 다시 수행된다. 당연히, 주어진 세그먼트가 단계들(1622 및 1624)에서 성공적으로 디코딩된 경우, 그 특정 디코더는 처리를 중단하게 된다.
단계(1626)에서의 최대 수의 시도들은 도 16a의 단계(1608)의 수와 동일할 필요가 없음을 유념한다. 도 14b에서, 단계들(1622, 1624, 1626)은 CCTPC 디코더들(1402a 내지 1402d)에 의해 수행된다. 예를 들면, 이것은 CCTPC 디코더들(1402a 내지 1402d)이 제 3 코드를 이용한 디코딩이 시도되기 전에 4개의 세그먼트들을 원하는 횟수만큼 반복적으로 디코딩하도록 허용한다.
단계(1626)에서 최대 수의 시도들에 도달된 후에, Ns개의 제 1-정정된 데이터 세그먼트들, Ns개의 제 1-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 1-정정된 제 2 세트들의 패리티 정보는 단계(1628)에서 Ns개의 세그먼트내 인터리빙된 데이터를 획득하기 위해 세그먼트내 인터리빙된다. 단계(1630)에서, Ns개의 세그먼트내 인터리빙된 패리티 정보는 Ns개의 세그먼트내 인터리빙된 데이터 및 제 3 에러 정정 코드에 적어도 부분적으로 기초하여 생성된다. 도 14b의 예에서, 단계들(1628 및 1630)은 인터리빙된 패리티 생성기들(1410a 내지 1410d)에 의해 수행된다.
단계(1640)에서, 단 하나의 세그먼트만이 성공적으로 디코딩되지 않은지가 결정된다. 세그먼트내 인터리빙된 패리티 정보는 상술된 바와 같이 많아야 하나의 세그먼트가 성공적으로 디코딩되지 않은 경우에만 정정될 수 있다. 단계(1640)에서의 결정이 아니오이면, 처리는 종료된다(예를 들면, 그리고 처리는 디코딩 실패 신호를 출력한다). 단계(1640)에서의 결정이 예이면, 단계(1642)에서, Ns개의 디코딩 결과들에 적어도 부분적으로 기초하여 정정될 세그먼트내 인터리빙된 패리티 정보는 Ns개의 세그먼트내 인터리빙된 패리티 정보로부터 선택된다. 예를 들면, 성공적으로 디코딩되지 않은 결과에만 대응하는 세그먼트내 인터리빙된 패리티 정보가 단계(1642)에서 선택된다.
단계(1644)에서, Ns개의 정정된 인터리빙된 패리티 정보를 획득하기 위해 선택된 세그먼트내 인터리빙된 패리티 정보는 Ns개의 세그먼트내 인터리빙된 패리티 정보 및 조합된 패리티 정보에 적어도 부분적으로 기초하여 정정된다. 예를 들면, 도 14b에서, 인터리빙된 패리티 정정기(1416)는 인터리빙된 패리티 생성기들(1410a 내지 1410d)로부터 인터리빙된 패리티 정보를 조합하고 이를 솔리드 스테이트 저장장치(1420)로부터 판독되는 조합된 패리티 정보와 비교한다. 주어진 비트 위치에 대해, 2개의 비트 값들이 매칭하는 경우, 선택된 세그먼트내 인터리빙된 패리티 정보는 그 비트 위치에서 플립되지 않는다. 2개가 매칭하지 않는 경우, 선택된 세그먼트내 인터리빙된 패리티 정보는 그 비트 위치에서 플립된다.
단계(1646)에서, Ns개의 제 3-정정된 인터리빙된 데이터 및 Ns개의 제 3-정정된 인터리빙된 패리티 정보를 획득하기 위해 Ns개의 세그먼트내 인터리빙된 데이터 및 Ns개의 정정된 인터리빙된 패리티 정보에 대해 제 3 에러 정정 코드와 연관된 디코딩이 수행된다. 도 14b에서, 단계(1623)는 제 3 에러 정정 디코더들(1412a 내지 1412d)에 의해 수행된다.
단계(1648)에서, Ns개의 제 3-정정된 데이터 세그먼트들, Ns개의 제 3-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 3-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 Ns개의 제 3-정정된 인터리빙된 데이터에 대해 세그먼트내 디-인터리빙이 수행된다. 도 14b에서, 예를 들면, 이 단계는 세그먼트내 디-인터리버들(1414a 내지 1414d)에 의해 수행된다.
단계(1660)에서, Ns개의 제 2-정정된 데이터 세그먼트들, Ns개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 Ns개의 제 3-정정된 데이터 세그먼트들, Ns개의 제 3-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 3-정정된 제 2 세트들의 패리티 정보에 대해 제 2 에러 정정 코드와 연관된 디코딩이 수행된다. 단계(1662)에서, Ns개의 제 1-정정된 데이터 세그먼트들, Ns개의 제 1-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 1-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 Ns개의 제 2-정정된 데이터 세그먼트들, Ns개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보에 대해 제 1 에러 정정 코드와 연관된 디코딩이 수행된다. 도 14b에서, 예를 들면, 단계들(1660 및 1662)은 세그먼트내 디-인터리버들(1414a 내지 1414d)로부터의 입력들(솔리드 스테이트 저장장치(1420)로부터의 입력들과 반대로)을 이용하여 CCTPC 디코더들(1402a 내지 1402d)에 의해 수행된다.
단계(1664)에서, 원하는 데이터 세그먼트의 디코딩이 성공적인지가 결정된다. 그러한 경우, 처리는 종료된다(예를 들면, 그리고 처리는 원하는 데이터 세그먼트를 출력한다). 단계(1664)에서 원하는 세그먼트의 디코딩이 성공적이지 않다고 결정되는 경우, 단계(1666)에서 계속 시도할지의 여부가 결정된다. 그러한 경우, 단계(1668)에서 제 1 코드 및 제 2 코드를 다시 시도하거나 또는 제 3 코드를 다시 시도할지의 여부가 결정된다. 단계(1668)에서 제 1 코드 및 제 2 코드를 다시 시도하기로 결정된 경우, 단계들(1660 및 1662)이 다시 수행된다. 도 14b에서, 예를 들면, CCTPC 디코더들(1402a 내지 1402d)은 다른 반복적인 디코딩 과정을 수행한다. 단계(1668)에서 제 3 코드를 다시 시도하기로 결정된 경우, 세그먼트내 인터리빙이 단계(1628)에서 다시 수행된다. 도 14b에서, 예를 들면, 이것은 CCTPC 디코더들(1402a 내지 1402d)로부터의 출력들을 처리하는 인터리빙된 패리티 생성기들(1410a 내지 1410d)에 대응한다.
앞서 기술된 실시예들이 이해를 명확히 하기 위해 다소 상세히 기술되었지만, 본 발명은 제공된 상세들에 제한되지 않는다. 본 발명을 구현하는 많은 대안적인 방식들이 존재한다. 개시된 실시예들은 예시적이며 제한적인 것이 아니다.
700; 기록 처리기 704; 제 1 에러 정정 인코더
705; 컬럼 그루퍼 706; 제 2 에러 정정 인코더
708; 세그먼트내 인터리버 710; 제 3 에러 정정 인코더
720; 솔리드 스테이트 저장장치 802; CCTPC 디코더
804; 에러 정정 디코더 806; 에러 정정 디코더

Claims (18)

  1. 제 2 에러 정정 코드와 연관된 디코딩을 수행하도록 구성된 제 2 에러 정정 디코더;
    제 1 에러 정정 코드와 연관된 디코딩을 수행하도록 구성된 제 1 에러 정정 디코더;
    세그먼트간 인터리빙된 데이터를 획득하기 위해 Ns개의 제 1-정정된 및 제 2-정정된 데이터 세그먼트들, Ns개의 제 1-정정된 및 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 1-정정된 및 제 2-정정된 제 2 세트들의 패리티 정보에 대해 세그먼트간 인터리빙을 수행하도록 구성된 세그먼트간 인터리버(intersegment interleaver)로서:
    상기 Ns개의 데이터 세그먼트들, 상기 Ns개의 제 1 세트들의 패리티 정보, 및 상기 Ns개의 제 2 세트들의 패리티 정보는 상기 제 1 에러 정정 코드와 연관된 디코딩 및 상기 제 2 에러 정정 코드와 연관된 디코딩을 상기 Ns개의 데이터 세그먼트들, 상기 Ns개의 제 1 세트들의 패리티 정보, 및 상기 Ns개의 제 2 세트들의 패리티 정보 상에서 수행되게 하였고;
    Ns는 상기 세그먼트간 인터리버에 의해 함께 인터리빙되는 세그먼트들의 수인, 상기 세그먼트간 인터리버;
    적어도 제 3-정정된 인터리빙된 데이터를 획득하기 위해 상기 세그먼트간 인터리빙된 데이터 및 인터리빙된 패리티 정보에 대해 제 3 에러 정정 코드와 연관된 디코딩을 수행하도록 구성된 제 3 에러 정정 디코더; 및
    상기 제 3-정정된 인터리빙된 데이터에 대해 디-인터리빙을 수행하도록 구성된 세그먼트간 디-인터리버(intersegment de-interleaver)를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  2. 제 1 항에 있어서,
    솔리드 스테이트 저장장치(solid state storage)로부터, 원하는 세그먼트와 연관된 (Ns-1)개의 데이터 세그먼트들, 상기 원하는 세그먼트와 연관된 (Ns-1)개의 제 1 세트들의 패리티 정보, 및 상기 원하는 세그먼트와 연관된 (Ns-1)개의 제 2 세트들의 패리티 정보를 획득하도록 구성된 인터페이스를 더 포함하는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  3. 제 2 항에 있어서,
    상기 인터페이스는 상기 제 1 에러 정정 코드 및 상기 제 2 에러 정정 코드와 연관되는 디코딩이 최대 수의 시도들 동안 성공적이지 않았는지 여부에 대한 정보를 획득하도록 구성되는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  4. 제 3 항에 있어서,
    상기 제 2 에러 정정 디코더는 상기 제 2 에러 정정 코드와 연관된 디코딩을 수행하도록 구성되고: 상기 제 2 에러 정정 코드와 연관된 디코딩은, (Ns-1)개의 제 2-정정된 데이터 세그먼트들, (Ns-1)개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 (Ns-1)개의 제 2-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 솔리드 스테이트 저장장치로부터, 상기 원하는 세그먼트와 연관된 상기 (Ns-1)개의 데이터 세그먼트들, 상기 원하는 세그먼트와 연관된 상기 (Ns-1)개의 제 1 세트들의 패리티 정보, 및 상기 원하는 세그먼트와 연관된 상기 (Ns-1)개의 제 2 세트들의 패리티 정보에 대해 상기 제 2 에러 정정 코드와 연관된 디코딩을 수행하는 것을 포함하고;
    상기 제 1 에러 정정 디코더는 상기 제 1 에러 정정 코드와 연관된 디코딩을 수행하도록 구성되고: 상기 제 1 에러 정정 코드와 연관된 디코딩은, (Ns-1)개의 제 1-정정된 데이터 세그먼트들, (Ns-1)개의 제 1-정정된 제 1 세트들의 패리티 정보, 및 (Ns-1)개의 제 1-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 상기 (Ns-1)개의 제 2-정정된 데이터 세그먼트들, 상기 (Ns-1)개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 상기 (Ns-1)개의 제 2-정정된 제 2 세트들의 패리티 정보에 대해 상기 제 1 에러 정정 코드와 연관된 디코딩을 수행하는 것을 포함하는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  5. 처리기를 사용하여 제 2 에러 정정 코드와 연관된 디코딩을 수행하는 단계;
    상기 처리기를 사용하여 제 1 에러 정정 코드와 연관된 디코딩을 수행하는 단계;
    세그먼트간 인터리빙된 데이터를 획득하기 위해 Ns개의 제 1-정정된 및 제 2-정정된 데이터 세그먼트들, Ns개의 제 1-정정된 및 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 1-정정된 및 제 2-정정된 제 2 세트들의 패리티 정보에 대해 세그먼트간 인터리빙을 수행하는 단계로서:
    상기 Ns개의 데이터 세그먼트들, 상기 Ns개의 제 1 세트들의 패리티 정보, 및 상기 Ns개의 제 2 세트들의 패리티 정보는 상기 제 1 에러 정정 코드와 연관된 디코딩 및 상기 제 2 에러 정정 코드와 연관된 디코딩을 상기 Ns개의 데이터 세그먼트들, 상기 Ns개의 제 1 세트들의 패리티 정보, 및 상기 Ns개의 제 2 세트들의 패리티 정보 상에서 수행되게 하였고;
    Ns는 상기 세그먼트간 인터리버에 의해 함께 인터리빙되는 세그먼트들의 수인, 상기 세그먼트간 인터리빙 수행 단계;
    상기 처리기를 사용하여 적어도 제 3-정정된 인터리빙된 데이터를 획득하기 위해 상기 세그먼트간 인터리빙된 데이터 및 인터리빙된 패리티 정보에 대해 제 3 에러 정정 코드와 연관된 디코딩을 수행하는 단계; 및
    상기 제 3-정정된 인터리빙된 데이터에 대해 디-인터리빙을 수행하는 단계를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 방법.
  6. 제 5 항에 있어서,
    솔리드 스테이트 저장장치로부터 원하는 세그먼트와 연관된 (Ns-1)개의 데이터 세그먼트들, 상기 원하는 세그먼트와 연관된 (Ns-1)개의 제 1 세트들의 패리티 정보, 및 상기 원하는 세그먼트와 연관된 (Ns-1)개의 제 2 세트들의 패리티 정보를 획득하는 단계를 더 포함하는, 인터리빙하는 터보-곱 코드들을 위한 방법.
  7. 제 6 항에 있어서,
    상기 획득 단계는 상기 제 1 에러 정정 코드 및 상기 제 2 에러 정정 코드와 연관된 디코딩이 최대 수의 시도들 동안 성공적이지 않은 경우에 수행되는, 인터리빙하는 터보-곱 코드들을 위한 방법.
  8. 제 7 항에 있어서,
    상기 처리기를 사용하여 상기 제 2 에러 정정 코드와 연관된 디코딩을 수행하는 단계는: (Ns-1)개의 제 2-정정된 데이터 세그먼트들, (Ns-1)개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 (Ns-1)개의 제 2-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 솔리드 스테이트 저장장치로부터 상기 원하는 세그먼트와 연관된 상기 (Ns-1)개의 데이터 세그먼트들, 상기 원하는 세그먼트와 연관된 상기 (Ns-1)개의 제 1 세트들의 패리티 정보, 및 상기 원하는 세그먼트와 연관된 상기 (Ns-1)개의 제 2 세트들의 패리티 정보에 대해 상기 제 2 에러 정정 코드와 연관된 디코딩을 수행하는 단계를 포함하고;
    상기 처리기를 사용하여 상기 제 1 에러 정정 코드와 연관된 디코딩을 수행하는 단계는: (Ns-1)개의 제 1-정정된 데이터 세그먼트들, (Ns-1)개의 제 1-정정된 제 1 세트들의 패리티 정보, 및 (Ns-1)개의 제 1-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 상기 (Ns-1)개의 제 2-정정된 데이터 세그먼트들, 상기 (Ns-1)개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 상기 (Ns-1)개의 제 2-정정된 제 2 세트들의 패리티 정보에 대해 상기 제 1 에러 정정 코드와 연관된 디코딩을 수행하는 단계를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 방법.
  9. 인터리빙된 패리티 생성기로서:
    Ns개의 세그먼트내 인터리빙된 데이터를 획득하기 위해 Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 Ns개의 제 2 세트들의 패리티 정보를 세그먼트내 인터리빙하고, Ns는 연관된 인터리빙된 패리티 정보가 함께 조합되는 세그먼트들의 수이고,
    상기 Ns개의 세그먼트내 인터리빙된 데이터 및 제 3 에러 정정 코드에 적어도 부분적으로 기초하여 Ns개의 세그먼트내 인터리빙된 패리티 정보를 생성하도록 구성된, 상기 인터리빙된 패리티 생성기;
    인터리빙된 패리티 정정기로서:
    상기 Ns개의 세그먼트내 인터리빙된 패리티 정보로부터, Ns개의 디코딩 결과들에 적어도 부분적으로 기초하여 정정될 상기 세그먼트내 인터리빙된 패리티 정보를 선택하고,
    Ns개의 정정된 인터리빙된 패리티 정보를 획득하기 위해 상기 Ns개의 세그먼트내 인터리빙된 패리티 정보 및 상기 조합된 패리티 정보에 적어도 부분적으로 기초하여 상기 선택된 세그먼트내 인터리빙된 패리티 정보를 정정하도록 구성된, 상기 인터리빙된 패리티 정정기;
    Ns개의 제 3-정정된 인터리빙된 데이터 및 Ns개의 제 3-정정된 인터리빙된 패리티 정보를 획득하기 위해 상기 Ns개의 세그먼트내 인터리빙된 데이터 및 상기 Ns개의 정정된 인터리빙된 패리티 정보에 대해 제 3 에러 정정 코드와 연관된 디코딩을 수행하도록 구성된 제 3 에러 정정 디코더; 및
    Ns개의 제 3-정정된 데이터 세그먼트들, Ns개의 제 3-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 3-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 상기 Ns개의 제 3-정정된 인터리빙된 데이터에 대해 세그먼트내 디-인터리빙을 수행하도록 구성된 세그먼트내 디-인터리버;를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  10. 제 9 항에 있어서,
    Ns개의 제 2-정정된 데이터 세그먼트들, Ns개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 상기 Ns개의 제 3-정정된 데이터 세그먼트들, 상기 Ns개의 제 3-정정된 제 1 세트들의 패리티 정보, 및 상기 Ns개의 제 3-정정된 제 2 세트들의 패리티 정보에 대해 제 2 에러 정정 코드와 연관된 디코딩을 수행하도록 구성된 제 2 에러 정정 디코더; 및
    Ns개의 제 1-정정된 데이터 세그먼트들, Ns개의 제 1-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 1-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 상기 Ns개의 제 2-정정된 데이터 세그먼트들, 상기 Ns개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 상기 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보에 대해 제 1 에러 정정 코드와 연관된 디코딩을 수행하도록 구성된 제 1 에러 정정 디코더를 더 포함하는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  11. 제 9 항에 있어서,
    상기 인터리빙된 패리티 생성기에 의해 입력된 상기 Ns개의 데이터 세그먼트들은 Ns개의 제 1-정정된 데이터 세그먼트들을 포함하고;
    상기 인터리빙된 패리티 생성기에 의해 입력된 상기 Ns개의 제 1 세트들의 패리티 정보는 Ns개의 제 1-정정된 제 1 세트들의 패리티 정보를 포함하고;
    상기 인터리빙된 패리티 생성기에 의해 입력된 상기 Ns개의 제 2 세트들의 패리티 정보는 Ns개의 제 1-정정된 제 2 세트들의 패리티 정보를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  12. 제 9 항에 있어서,
    상기 인터리빙된 패리티 생성기에 의해 입력된 상기 Ns개의 데이터 세그먼트들은 Ns개의 제 2-정정된 데이터 세그먼트들을 포함하고;
    상기 인터리빙된 패리티 생성기에 의해 입력된 상기 Ns개의 제 1 세트들의 패리티 정보는 Ns개의 제 2-정정된 제 1 세트들의 패리티 정보를 포함하고;
    상기 인터리빙된 패리티 생성기에 의해 입력된 상기 Ns개의 제 2 세트들의 패리티 정보는 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  13. 제 9 항에 있어서,
    상기 인터리빙된 패리티 정정기는 성공적으로 디코딩되지 않은 단 하나의 세그먼트가 존재하는 경우에 선택 및 정정하도록 구성되는, 인터리빙하는 터보-곱 코드들을 위한 시스템.
  14. Ns개의 세그먼트내 인터리빙된 데이터를 획득하기 위해 Ns개의 데이터 세그먼트들, Ns개의 제 1 세트들의 패리티 정보, 및 Ns개의 제 2 세트들의 패리티 정보를 세그먼트내 인터리빙하는 단계로서, 상기 Ns는 연관된 인터리빙된 패리티 정보가 함께 조합되는 세그먼트들의 수인, 상기 세그먼트내 인터리빙하는 단계;
    상기 Ns개의 세그먼트내 인터리빙된 데이터 및 제 3 에러 정정 코드에 적어도 부분적으로 기초하여 Ns개의 세그먼트내 인터리빙된 패리티 정보를 생성하는 단계;
    상기 Ns개의 세그먼트내 인터리빙된 패리티 정보로부터, Ns개의 디코딩 결과들에 적어도 부분적으로 기초하여 정정될 상기 세그먼트내 인터리빙된 패리티 정보를 선택하는 단계;
    상기 Ns개의 정정된 인터리빙된 패리티 정보를 획득하기 위해 상기 Ns개의 세그먼트내 인터리빙된 패리티 정보 및 상기 조합된 패리티 정보에 적어도 부분적으로 기초하여 상기 선택된 세그먼트내 인터리빙된 패리티 정보를 정정하는 단계;
    처리기를 사용하여 Ns개의 제 3-정정된 인터리빙된 데이터 및 Ns개의 제 3-정정된 인터리빙된 패리티 정보를 획득하기 위해 상기 Ns개의 세그먼트내 인터리빙된 데이터 및 상기 Ns개의 정정된 인터리빙된 패리티 정보에 대해 제 3 에러 정정 코드와 연관된 디코딩을 수행하는 단계; 및
    Ns개의 제 3-정정된 데이터 세그먼트들, Ns개의 제 3-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 3-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 상기 Ns개의 제 3-정정된 인터리빙된 데이터에 대해 세그먼트내 디-인터리빙을 수행하는 단계를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 방법.
  15. 제 14 항에 있어서,
    상기 처리기를 사용하여 Ns개의 제 2-정정된 데이터 세그먼트들, Ns개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 상기 Ns개의 제 3-정정된 데이터 세그먼트들, 상기 Ns개의 제 3-정정된 제 1 세트들의 패리티 정보, 및 상기 Ns개의 제 3-정정된 제 2 세트들의 패리티 정보에 대해 제 2 에러 정정 코드와 연관된 디코딩을 수행하는 단계; 및
    상기 처리기를 사용하여 Ns개의 제 1-정정된 데이터 세그먼트들, Ns개의 제 1-정정된 제 1 세트들의 패리티 정보, 및 Ns개의 제 1-정정된 제 2 세트들의 패리티 정보를 획득하기 위해 상기 Ns개의 제 2-정정된 데이터 세그먼트들, 상기 Ns개의 제 2-정정된 제 1 세트들의 패리티 정보, 및 상기 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보에 대해 제 1 에러 정정 코드와 연관된 디코딩을 수행하는 단계를 더 포함하는, 인터리빙하는 터보-곱 코드들을 위한 방법.
  16. 제 14 항에 있어서,
    상기 Ns개의 데이터 세그먼트들은 Ns개의 제 1-정정된 데이터 세그먼트들을 포함하고;
    상기 Ns개의 제 1 세트들의 패리티 정보는 Ns개의 제 1-정정된 제 1 세트들의 패리티 정보를 포함하고;
    상기 Ns개의 제 2 세트들의 패리티 정보는 Ns개의 제 1-정정된 제 2 세트들의 패리티 정보를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 방법.
  17. 제 14 항에 있어서,
    상기 Ns개의 데이터 세그먼트들은 Ns개의 제 2-정정된 데이터 세그먼트들을 포함하고;
    상기 Ns개의 제 1 세트들의 패리티 정보는 Ns개의 제 2-정정된 제 1 세트들의 패리티 정보를 포함하고;
    상기 Ns개의 제 2 세트들의 패리티 정보는 Ns개의 제 2-정정된 제 2 세트들의 패리티 정보를 포함하는, 인터리빙하는 터보-곱 코드들을 위한 방법.
  18. 제 14 항에 있어서,
    상기 선택 단계 및 상기 정정 단계는, 성공적으로 디코딩되지 않은 단 하나의 세그먼트가 존재하는 경우에 수행되는, 인터리빙하는 터보-곱 코드들을 위한 방법.
KR1020130134902A 2012-11-08 2013-11-07 인터리빙하는 터보-곱 코드들(tpc) KR101588306B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261724093P 2012-11-08 2012-11-08
US61/724,093 2012-11-08
US201361748364P 2013-01-02 2013-01-02
US61/748,364 2013-01-02
US14/061,600 US9300329B2 (en) 2012-11-08 2013-10-23 Turbo-product codes (TPC) with interleaving
US14/061,600 2013-10-23

Publications (2)

Publication Number Publication Date
KR20140059740A KR20140059740A (ko) 2014-05-16
KR101588306B1 true KR101588306B1 (ko) 2016-01-26

Family

ID=50623532

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130134902A KR101588306B1 (ko) 2012-11-08 2013-11-07 인터리빙하는 터보-곱 코드들(tpc)

Country Status (3)

Country Link
US (1) US9300329B2 (ko)
KR (1) KR101588306B1 (ko)
CN (1) CN103812512B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9300329B2 (en) 2012-11-08 2016-03-29 Sk Hynix Memory Solutions Inc. Turbo-product codes (TPC) with interleaving
US9559727B1 (en) 2014-07-17 2017-01-31 Sk Hynix Memory Solutions Inc. Stopping rules for turbo product codes
US9906241B2 (en) * 2014-11-20 2018-02-27 SK Hynix Inc. Apparatus and method for turbo product codes
US9673840B2 (en) * 2014-12-08 2017-06-06 SK Hynix Inc. Turbo product codes for NAND flash
US9954556B2 (en) 2015-02-25 2018-04-24 SK Hynix Inc. Scheme to avoid miscorrection for turbo product codes
US10388400B2 (en) 2015-05-18 2019-08-20 SK Hynix Inc. Generalized product codes for flash storage
US9935659B2 (en) 2015-05-18 2018-04-03 SK Hynix Inc. Performance optimization in soft decoding for turbo product codes
US9906240B2 (en) 2015-06-03 2018-02-27 SK Hynix Inc. One-shot decoder for two-error-correcting BCH codes
US9998148B2 (en) * 2015-12-01 2018-06-12 SK Hynix Inc. Techniques for low complexity turbo product code decoding
US10498366B2 (en) 2016-06-23 2019-12-03 SK Hynix Inc. Data dependency mitigation in parallel decoders for flash storage
US10439649B2 (en) 2016-02-03 2019-10-08 SK Hynix Inc. Data dependency mitigation in decoder architecture for generalized product codes for flash storage
US10484020B2 (en) 2016-02-03 2019-11-19 SK Hynix Inc. System and method for parallel decoding of codewords sharing common data
US10523245B2 (en) 2016-03-23 2019-12-31 SK Hynix Inc. Soft decoder for generalized product codes
US10263643B2 (en) 2017-04-05 2019-04-16 Alibaba Group Holding Limited Method and system of multi-fold data protection for high-density storage appliance with improved availability and robustness
CN109412610B (zh) * 2017-08-16 2022-08-09 深圳市中兴微电子技术有限公司 一种编码方法、译码方法、编码装置及译码装置
JP6818667B2 (ja) 2017-09-20 2021-01-20 キオクシア株式会社 メモリシステム
CN110896309B (zh) * 2018-09-12 2022-11-15 中兴通讯股份有限公司 Turbo乘积码的译码方法、装置、译码器及计算机存储介质
US10977119B2 (en) * 2018-09-28 2021-04-13 Apple Inc. Techniques for utilizing volatile memory buffers to reduce parity information stored on a storage device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006135584A (ja) 2004-11-05 2006-05-25 Sharp Corp データ伝送システム
JP4284125B2 (ja) 2002-12-23 2009-06-24 三星電子株式会社 パリティビットを再循環させる連続コードデコーダ及びその方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185746A (en) * 1989-04-14 1993-02-09 Mitsubishi Denki Kabushiki Kaisha Optical recording system with error correction and data recording distributed across multiple disk drives
US5333143A (en) * 1991-08-29 1994-07-26 International Business Machines Corporation Method and means for b-adjacent coding and rebuilding data from up to two unavailable DASDS in a DASD array
US5428627A (en) * 1992-11-10 1995-06-27 Qlogic Corporation Method and apparatus for initializing an ECC circuit
CA2404984A1 (en) * 2000-04-04 2001-10-11 Comtech Telecommunications Corp. Enhanced turbo product code decoder system
KR100698620B1 (ko) * 2003-06-16 2007-03-21 삼성전자주식회사 강건한 에러 정정 부호화 장치를 가지는 디지털 송/수신시스템 및 그의 에러정정부호화/정정방법
KR101297060B1 (ko) * 2004-04-09 2013-08-19 에이저 시스템즈 엘엘시 서브 블록 인터리버 및 디-인터리버를 가진 다차원 블록인코더
JP4261575B2 (ja) * 2006-11-30 2009-04-30 株式会社東芝 誤り訂正処理装置及び誤り訂正処理方法
KR100856129B1 (ko) 2006-12-29 2008-09-03 삼성전자주식회사 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
US9300329B2 (en) 2012-11-08 2016-03-29 Sk Hynix Memory Solutions Inc. Turbo-product codes (TPC) with interleaving
US8996969B2 (en) 2012-12-08 2015-03-31 Lsi Corporation Low density parity check decoder with miscorrection handling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4284125B2 (ja) 2002-12-23 2009-06-24 三星電子株式会社 パリティビットを再循環させる連続コードデコーダ及びその方法
JP2006135584A (ja) 2004-11-05 2006-05-25 Sharp Corp データ伝送システム

Also Published As

Publication number Publication date
KR20140059740A (ko) 2014-05-16
CN103812512A (zh) 2014-05-21
US9300329B2 (en) 2016-03-29
US20140129899A1 (en) 2014-05-08
CN103812512B (zh) 2017-04-12

Similar Documents

Publication Publication Date Title
KR101588306B1 (ko) 인터리빙하는 터보-곱 코드들(tpc)
KR101264476B1 (ko) 증가된 용량의 이종의 스토리지 엘리먼트들
JP5394410B2 (ja) 線形合同シーケンスを使用するターボコードインタリーバ
KR100526512B1 (ko) 이동 통신시스템의 직렬 쇄상 컨볼루션 부호화를 위한 인터리빙장치 및 방법
US8205123B2 (en) Interleaver and de-interleaver for iterative code systems
US8281214B2 (en) Programmable quasi-cyclic low-density parity check (QC LDPC) encoder for read channel
US11016844B2 (en) Error correction code structure
EP1733477B1 (en) Sub-block interleaving and de-interleaving for multidimensional product block codes
US8667377B1 (en) Circuit and method for parallel decoding
US7107505B2 (en) Concatenated turbo product codes for high performance satellite and terrestrial communications
US20170214415A1 (en) Memory system using integrated parallel interleaved concatenation
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
KR20170028160A (ko) 에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법
JP5122480B2 (ja) 高速な符号化方法および復号方法ならびに関連する装置
US20060174184A1 (en) Method and apparatus for encoding and decoding data using a pseudo-random interleaver
KR101320684B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
US11258464B1 (en) Codeword concatenation for correcting errors in data storage devices
US8627183B1 (en) Systems and methods for storing variable rate product codes
US20140317478A1 (en) Configurable and low power encoder for cyclic error correction codes
KR101355986B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
KR101304570B1 (ko) 패리티 체크 행렬 생성 방법, 이를 이용한 오류 정정 방법 및 장치, 오류 정정 장치용 디코더 그리고 오류 정정 장치를 포함하는 메모리 및 전자장치
KR101357544B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
RU2743784C1 (ru) Способ кодирования данных на основе LDPC кода
KR101355982B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치

Legal Events

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

Payment date: 20181219

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200106

Year of fee payment: 5