KR20090019819A - 시행착오에 의한 에러 보정 디코딩 - Google Patents

시행착오에 의한 에러 보정 디코딩 Download PDF

Info

Publication number
KR20090019819A
KR20090019819A KR1020087029786A KR20087029786A KR20090019819A KR 20090019819 A KR20090019819 A KR 20090019819A KR 1020087029786 A KR1020087029786 A KR 1020087029786A KR 20087029786 A KR20087029786 A KR 20087029786A KR 20090019819 A KR20090019819 A KR 20090019819A
Authority
KR
South Korea
Prior art keywords
codeword
decoder
representation
data
applying
Prior art date
Application number
KR1020087029786A
Other languages
English (en)
Other versions
KR101306645B1 (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 KR20090019819A publication Critical patent/KR20090019819A/ko
Application granted granted Critical
Publication of KR101306645B1 publication Critical patent/KR101306645B1/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
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • 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
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6511Support of multiple decoding rules, e.g. combined MAP and Viterbi decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

코드워드의 리프리젠테이션은 코드워드에 코드워드의 제1디코더를 적용함으로써 디코딩된다. 제1디코더 적용이 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 코드워드의 제2디코더가 그 코드워드의 리프리젠테이션에 적용된다. 제1디코더는 제2디코더보다 적은 전력을 소비하고 더 빠른 것이 바람직하다. 데이터는 데이터를 코드워드로 인코딩하는 단계, 그 코드워드를 오류 있는 매체로 내보내는 단계, 코드워드의 리프리젠테이션을 가져오는 단계, 및 코드워드의 리프리젠테이션에 제1디코더를 적용하는 단계에 의해 이식된다. 제1디코더의 적용이 코드워드의 리프리젠테이션의 디코딩에 실패하면, 그 코드워드의 리프리젠테이션에 코드워드의 제2디코더가 적용된다.
코드워드, 제1디코더, 제2디코더, 시행착오 디코딩, 메모리 디바이스, 데이터 저장 시스템.

Description

시행착오에 의한 에러 보정 디코딩{ERROR CORRECTION DECODING BY TRIAL AND ERROR}
본 발명은 코드워드의 리프리젠테이션의 디코딩에 관한 것이고, 더욱 상세하게는 코드워드의 리프리젠테이션의 시행착오 디코딩 방법 및 관련 시스템에 관한 것이다.
플래시 메모리 디바이스는 수년 동안 공개되어 왔다. NAND 타입 플래시 메모리는 다른 특성들 중에서도 특히, 메모리에 기록되는, 임의의 개수의 정보 비트가 "플리핑된"(즉, 오리지널 비트가 메모리에 기록된 상태와 상이한) 상태로 메모리로부터 판독될 수 있다는 점에서 다른 타입의 플래시 메모리(예컨대, NOR 타입)와 상이하다.
이러한 현상을 극복하고 NAND 타입 메모리를 실제 어플리케이션에서 사용가능하게 하기 위해, 이들 메모리와 결합하여 에러 보정 코드(ECC)를 사용하는 것은 일반적인 기술이다. 플래시 메모리에서 ECC를 사용하는 일반적인 개요는 아래에 나타나고, 다음 단계를 포함한다:
(1) 메모리에 데이터를 기록하기 전에, 에러 검출 및 보정을 위해 이후 사용될 추가(즉, 리둔던트) 비트를 계산하기 위해 그 데이터에 ECC 알고리즘이 적용된 다. 이러한 리둔던트 비트를 종종 "패리티 비트", 또는 "패리티"라 한다. 데이터의 조합은 ECC 모듈로 입력되고, 모듈에 의해 출력되는 패리티를 코드워드라 한다. ECC 모듈로의 입력 데이터의 각각의 상이한 값은 상이한 코드워드를 야기한다.
(2) 전체 코드워드(즉, 원 데이터 및 패리티)가 플래시 메모리에 기록된다. NAND 타입 플래시 메모리의 실제 크기는 원 데이터의 크기보다 더 크고, 메모리는 패리티를 잘 수용하도록 설계되어야 함을 이해해야 한다.
(3) 데이터가 메모리로부터 추출될 때, 전체 코드워드가 다시 판독되고, 가능한 "비트 플립"(즉, 에러)을 검출하고 보정하기 위해, 그 데이터 및 패리티에 ECC 알고리즘이 적용된다.
ECC의 구현은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 이루어질 수 있음을 이해해야 한다. 또한, ECC는 메모리 디바이스 내에, 메모리 디바이스 컨트롤러 내에, 호스트 컴퓨터 내에 구현될 수 있고, 또는 한 시스템의 이들 컴포넌트 사이에 "분산"될 수 있다.
ECC 알고리즘의 설계는 주지되어 있다. 알고리즘은 일반적으로 리드-솔로몬, BCH, 해밍 등을 사용한다. 각각의 ECC 알고리즘은 두 부분 - 데이터 비트를 수신하고 패리티 비트를 생성하는(또는 동등하게 코드워드를 생성하는) 부분과 코드워드를 수신하고 보정된 데이터 비트를 생성하는 부분으로 구성된다. 제1부분을 "인코더"라 하며 기록시 사용되고, 제2부분을 "디코더"라 하며 판독시 사용된다. 두 부분은 각각 하드웨어 또는 소프트웨어로 구현될 수 있고, 또한 한 부분은 하드웨어로 한 부분은 소프트웨어로 구현될 수도 있다. 또한 각 부분은 하드웨어와 소 프트웨어의 조합으로 구현되는 것도 가능하다.
데이터 비트를 수신하는 것과 대응 코드워드를 생성하는 것을 본 명세서에서 "인코딩"이라 한다. 코드워드를 수신하고 보정된 데이터 비트를 생성하는 것을 본 명세서에서 "디코딩"이라 한다.
실제로 두 종류의 ECC가 존재함을 이해해야 한다. 코드워드 내에서 데이터 비트의 동일성이 유지되는, 상술된 ECC의 종류는 "계통적" ECC라 한다. "비계통적" ECC에서, 데이터 비트는 원 데이터 비트의 동일성이 보존되지 않는 코드워드로 변환된다.
플래시 메모리 시스템에서 사용될 ECC 알고리즘으로서, BCH와 같은, 알고리즘을 선택하는 것은 선택된 솔루션을 고유하게 정의하지 않는다. 임의의 이러한 ECC 알고리즘은 실제로 단일 알고리즘이 아니라, 한 패밀리의 알고리즘이다. 동일한 패밀리 내의 알고리즘은 그들이 보호할 수 있는 데이터 비트의 크기가 서로 상이하다. 100개의 데이터 비트를 보호할 필요가 있는 알고리즘과 10,000개의 데이터 비트를 보호할 필요가 있는 알고리즘은, 두 알고리즘이 전형적으로 매우 유사하고 동일한 원리로 오퍼레이팅한다 할지라도, 동일하지 않다.
동일한 개수의 데이터 비트를 보호하는 동일한 패밀리의 두 알고리즘이더라도, 반드시 동일하지는 않다. 알고리즘은 제공된 신뢰도 레벨에서 상이할 수 있고, 또는 동등하게, 알고리즘이 보정할 수 있는 데이터 내의 비트 에러의 개수에서 상이할 수 있다. 예를 들어, 한 시스템은 임의의 조합의 3비트까지의 에러에 대항하여(4비트 이상의 에러에는 대항하지 않는) 1,000개의 데이터 비트의 정크 보호를 요구할 수 있고, 한편 다른 시스템에서는 더 높은 신뢰도가 요구되고, 그러므로 임의의 조합의 10비트까지의 에러에 대항하여 1,000개의 데이터 비트의 정크를 보호하도록 요구된다. 전형적으로 더 많은 에러에 대한 보호는 더 많은 패리티 비트(또는 더 긴 코드워드)의 사용을 필요로 하고, ECC 스킴을 덜 "효율적"으로 만들고, 이러한 효율성은 (계통적 ECC에서, 데이터 비트 및 패리티 비트를 포함하는) 코드워드 내의 전체 비트수에 대한 코드워드 내의 데이터 비트수의 비율로 측정된다. 이러한 측정값을 전형적으로 ECC 코딩의 "레이트"라 한다.
상이한 ECC 알고리즘 및 구현 방법은 또한 다른 형태 - 인코딩 프로세스의 속도, 디코딩 프로세스의 속도, 인코딩 프로세서의 복잡도, 디코딩 프로세스의 복잡도, (저장 셀의 퀄리티에 따라 정의되는) 디코더로 입력되는 수용가능한 에러율 등에서 상이하다. 인코딩 및 디코딩의 복잡도는 그것이 오퍼레이션의 속도에 영향을 미침은 물론, ECC 스킴의 하드웨어 구현의 실리콘 영역, 및 전력 소비량에 영향을 미치기 때문에 중요하다.
그러므로, 메모리 시스템에 대한 ECC 솔루션의 선택은 다양한 고려 가운데 복잡한 트레이드-오프를 포함함이 분명하다. ECC 설계 분야에서 전형적인 몇몇 제한하지 않는 경험 법칙은 다음과 같다:
a. 주어진 메모리 신뢰도에 대하여, 출력 신뢰도가 우수할수록(또는 동등하게, 보정가능한 에러의 개수가 더 많을수록), 코드 레이트는 더 낮다(또는 동등하게, 계통적 ECC에 대하여, 더 많은 패리티 비트가 요구된다).
b. 주어진 메모리 신뢰도에 대하여, 출력 신뢰도가 우수할수록, 디코더는 더 욱 복잡해진다.
c. 주어진 레벨의 출력 신뢰도에 대하여, 코드 레이트가 더 높을수록, 디코더는 더욱 복잡해진다.
d. 주어진 레벨의 출력 신뢰도에 대하여, 코드 레이트가 더 높을수록, 디코딩은 더 느려진다.
ECC 스킴을 설계할 때, 전형적으로 (저장 셀의 퀄리티에 의해 정해지는) 디코더의 입력에서의 에러율, 및 (어플리케이션의 요구사항에 의해 정해지는) 원하는 출력 신뢰도에서부터 시작한다. 이러한 수치를 기초로 하여, 특정 ECC 패밀리를 선택하고, 요구된 패리티 비트의 개수를 계산하고, 그 다음, 인코더 및 디코더의 속도 및 복잡도를 추정한다.
시스템 설계자가 가장 중요하게 고려하는 것이 디코딩 속도인 몇몇 경우에, 메모리에서 데이터를 판독하는 속도에 대한 제한을 설정할 수 있다. 이러한 경우의 시스템을 지원하기 위해, 'Lasser'의, "Corruption-Resistant Data Porting With Multiple Error Correction Schemes"란 제목의, 미국특허출원번호 제11/505,798호는 상이한 디코딩 속도를 가진 두 개의 개별 ECC 스킴이 동일한 데이터를 보호하기 위해 사용되는 방법을 개시한다. 그러나, 'Lasser'의 방법은 메모리가 두 ECC 스킴의 패리티 비트를 모두 저장해야 하고, 그 결과 더 높은 비율의 메모리 셀이 패리티 비트를 저장하기 위해 사용되게 하여 실제 데이 데이터를 저장하기 위해 사용될 수 없다는 단점을 가진다. 저장 용량이 충분하여 'Lasser'의 방법이 유용한 시스템이 존재하지만, 그렇지 않은 경우 또한 존재한다.
또한, 시스템 설계자가 가장 중요하게 고려하는 것이 디코딩 프로세스를 구형하는 회로의 전력소비량인 경우가 존재한다. 전형적으로, 최대 전력소비량은 모든 다른 파라미터가 고정된 때, 출력 신뢰도와 관련되고, 전형적으로 많은 수의 에러를 보정할 수록 더 많은 전력을 소비한다. 그러나, 입력 에러율 및 출력 신뢰도는 통상적으로 설계자에게 고정되어 있기 때문에, 전력소비를 최소화할 목적으로 설계자가 그것을 변경할 수 없다.
그러므로, 평균 디코딩 속도를 최대화하고, 여전히 원하는 출력 신뢰도를 획득하면서 디코더의 평균 전력소비량을 최소화하고, 데이터 비트를 원하는 레벨로 보호하기 위해 절대적으로 필수적인 것보다 많은 저장공간을 패비티 비트 저장을 위해 낭비하지 않는 에러 보정 솔루션을 가지는 것이 매우 바람직할 것이다.
본 발명에 따라, 코드워드의 리프리젠테이션을 디코딩하는 방법으로서, (a) 코드워드의 리프리젠테이션에 코드워드의 제1디코더를 적용하는 단계; 및 (b) 제1디코더의 적용이 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 코드워드의 리프리젠테이션에 코드워드의 제2디코더를 적용하는 단계를 포함하는 방법이 제공된다.
본 발명에 따라, 코드워드의 리프리젠테이션을 수신하는 수신기로서, (a) 코드워드의 리프리젠테이션에 상기 코드워드의 제1디코더를 적용하고; 그리고 (b) 제1디코더의 적용이 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 코드워드의 리프리젠테이션에 코드워드의 제2디코더를 적용하도록 동작하는 수신기가 제공된다.
본 발명에 따라, 코드워드의 리프리젠테이션이 저장되는 메모리의 컨트롤러로서, (a) 코드워드의 리프리젠테이션에 코드워드의 제1디코더를 적용하고; 그리고 (b) 제1디코더의 적용이 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 코드워드의 리프리젠테이션에 코드워드의 제2디코더를 적용하도록 동작하는 컨트롤러가 제공된다.
본 발명에 따라, 메모리 디바이스로서, (a) 코드워드의 리프리젠테이션을 저장하는 메모리; 및 (b) 컨트롤러로서, (i) 코드워드의 리프리젠테이션에 코드워드의 제1디코더를 적용하고; 그리고 (ii) 제1디코더의 적용이 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 코드워드의 리프리젠테이션에 코드워드의 제2디코더를 적용하도록 동작하는 컨트롤러를 포함하는 메모리 디바이스가 제공된다.
본 발명에 따라, 데이터 저장 시스템으로서, (a) 데이터를 코드워드의 리프리젠테이션으로 저장하는 메모리; 및 (b) 프로세서로서, (i) 코드워드의 리프리젠테이션에 코드워드의 제1디코더를 적용하고; 그리고 (ii) 제1디코더의 적용이 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 그 코드워드의 리프리젠테이션에 코드워드의 제2디코더를 적용하도록 동작하는 프로세서를 포함하는 데이터 저장 시스템이 제공된다.
본 발명에 따라, 코드워드의 리프리젠테이션을 디코딩하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체로서, (a) 코드워드의 리프리젠테이션에 코드워드의 제1디코더를 적용하기 위한 프로그램 코드; (b) 제1디코더의 적용의 성공여부 판정하기 위한 프로그램 코드; 및 (c) 제1디코더의 적용이 실패하면, 코드워드의 리프리젠테이션에 코드워드의 제2디코더를 적용하기 위한 프로그램 코드를 포함하는 저장 매체가 제공된다.
본 발명의 기본적인 방법은 코드워드의 리프리젠테이션을 디코딩하는 방법이다. 디코딩될 코드워드가 인코딩된 후 오류가 없음이 보장되지 않기 때문에, 본 방법에 대한 입력은 단지 코드워드의 "리프리젠테이션"일 뿐이다. 실제로, 본 발명이든 또는 종래기술이든 간에, 코드워드의 리프리젠테이션은 매우 오류가 많은, 즉, 코드워드에 에러를 도입하고, 에러 보정 디코딩이 필수적이다. 코드워드의 리프리젠테이션을 디코딩하기 위해 코드워드의 리프리젠테이션에 코드워드의 제1디코더가 적용된다. 제1디코더의 적용이 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 그 코드워드의 리프리젠테이션을 디코딩하기 위해 코드워드의 리프리젠테이션에 코드워드의 제2디코더가 적용된다.
두 디코더는 두 디코더 모두 그 코드워드를 인코딩하기 위해 사용되는 인코딩 스킴에 따라 설계되었다는 의미로, 그 "코드워드"의 디코더이다. 이것이 본 발명과 'Lasser'의 종래기술의 방법과 차별되는 점이다. 'Lasser'는 두 개의 상이한, 독립된 ECC 스킴을 사용한다. 본 발명은 두 개의 상이한, 동일한 ECC 스킴의 디코더를 사용한다.
제1디코더는 소프트 디코더이거나 대수 디코더일 수 있다. 이와 유사하게 제2디코더는 소프트 디코더이거나 대수 디코더일 수 있다. "소프트" 디코더, 및 "대수" 디코더는 아래에 정의된다.
바람직하게는 두 디코더는 공통의 디코딩 알고리즘을 공유한다. 그 다음, 두 디코더는 그 알고리즘의 적어도 하나의 파라미터 중 상이한 각각의 값을 가진다는 것이 다르다. 예를 들어, 본 발명의 순수한 하드웨의 구현에서, 두 디코더는 두 개의 상이한 논리회로에 하드와이어링될 수 있고, 또는 두 디코더는 공통의 논리회로를 공유하고, 판독/기록 메모리가 공통 알고리즘의 파라미터의 값을 저장하기 위해 제공되고, 그 파라미터 값은 디코더가 적용됨에 따라 변한다. 더욱 바람직하게는, 파라미터 또는 파라미터 중 하나는 알고리즘의 적어도 한 단계에서 사용되는 다수의 비트이다. 가장 바람직하게는, 디코더가 소프트 디코더이고, 상기 다수의 비트는 상기 알고리즘에 의해 메시지 패싱에 사용되는 다수의 비트이다.
바람직하게는, 코드워드의 리프리젠테이션에 제1디코더를 적용하는 것이 코드워드의 리프리젠테이션에 제2디코더를 적용하는 것보다 적은 전력을 소비한다.
바람직하게는, 코드워드의 리프리젠테이션에 제1디코더를 적용하는 것이 코드워드의 리프리젠테이션에 제2디코더를 적용하는 것보다 더 빠르다.
또한, 본 발명의 범위는 또한 코드워드의 리프리젠테이션을 디코딩하기 위해 본 기본적인 방법을 적용한, 코드워드의 리프리젠테이션을 수신하는 수신기; 코드워드의 리프리젠테이션을 디코딩하기 위해 본 기본적인 방법을 적용한, 이러한 코드워드 리프리젠테이션이 저장되는 메모리의, 컨트롤러; 컨트롤러 및 메모리를 모두 포함하는 메모리 디바이스; 및 데이터가 코드워드의 리프리젠테이션으로 저장되는 메모리 디바이스, 및 코드워드의 리프리젠테이션을 디코딩하기 위해 본 기본적인 방법을 적용한 프로세서를 포함하는 데이터 저장 시스템을 포함한다.
또한, 본 발명의 범위는 본 발명의 방법을 구현하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체를 포함한다.
본 발명은 적어도 두 개의 상이한 환경에 존재하는 오류로부터 데이터를 보호하는 것에 적용가능하다. 한 환경은 저장 매체에 데이터를 저장하고, 후속하여 저장 매체로부터 데이터를 추출하는 것이다. 다른 환경은 전송 매체로 데이터를 전송하고, 후속하여 전송 매체로부터 데이터를 추출하는 것이다. 그러므로, 데이터의 "저장" 및 "전송"은 본 명세서에서 데이터를 "내보내는" 개념으로 일반화되고, 데이터를 "추출"하고, "수신"하는 개념은 본 명세서에서 데이터를 "가져오는" 개념으로 일반화된다. 그러므로, 데이터를 "저장"하는 것과 데이터를 "전송"하는 것은 데이터를 "내보내는" 것의 특별한 경우이고, 데이터를 "추출"하는 것과, 데이터를 "수신"하는 것은 데이터를 "가져오는" 것의 특별한 경우이다. 데이터를 "내보내는" 프로세스, 및 옵션으로써 데이터를 "가져오는" 프로세스는 본 명세서에서 데이러를 "이식"한다라고 통칭한다.
그러므로, 본 발명에 따라, 데이터 이식 방법으로서, (a) 데이터를 코드워드로 인코딩하는 단계; (b) 코드워드를 오류 있는 매체로 내보내는 단계; (c) 매체로부터 코드워드의 리프리젠테이션을 가져오는 단계; (d) 코드워드의 리프리젠테이션에 코드워드의 제1디코더를 적용하는 단계; 및 (e) 제1디코더의 적용이 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 코드워드의 리프리젠테이션에 코드워드의 제2디코더를 적용하는 단계를 포함하는 방법이 제공된다.
데이터를 이식하는 본 발명의 기본적인 방법에 따라, 데이터는 코드워드로 인코딩된다. 코드워드는 오류있는 매체로 내보내진다. "오류 있는" 매체는 매체로 내보내진 데이터에 에러, t를 도입할 수 있는 매체이고, 그로 인해 대응하는 가져온 데이터가 내보내진 데이터와 일치하지 않는다. 그러므로, 본 기본적인 방법의 가져오는 단계는 코드워드 그 자체라기 보다는 코드워드의 리프리젠테이션을 가져온다. 물론, 코드워드의 리프리젠테이션은 코드워드와 일치할 수 있고, 실제로 일반적으로 코드워드와 일치하지만, 코드워드의 리프리젠테이션이 코드워드와 일치한다는 선(a priori) 보장되지 않는다. 코드워드의 리프리젠테이션을 디코딩하기 위해 코드워드의 리프리젠테이션에 그 코드워드의 제1디코더가 적용된다. 제1디코더의 적용이 그 코드워드의 리프리젠테이션을 디코딩하는데 실패하면, 그 코드워드의 리프리젠테이션을 디코딩하기 위해 코드워드의 리프리젠테이션에 제2디코더가 적용된다.
한 종류의 바람직한 실시예에서, 매체는 일반적인 전자기적 전송을 위한 자유 공간, RF 전송을 위한 동축 케이블, 또는 광 전송을 위한 광섬유와 같은 전송 매체이다. 내보내는 단계는 코드워드를 전송 매체를 통해 전송하는 단계를 포함한다.
다른 종류의 바람직한 실시예에서, 매체는 RAM, 하드 디스크, 또는 플래시 EEPROM과 같은 저장 매체이다. 내보내는 단계는 코드워드를 저장 매체에 저장하는 단계를 포함한다.
코드워드는 계통적 코드워드 또는 비계통적 코드워드일 수 있다.
본 발명은 첨부된 도면을 참조하여, 단지 예시의 방법으로, 본 명세서에 서술된다:
도 1은 본 발명의 플래시 메모리 디바이스의 하이레벨 블록 다이어그램이고;
도 2는 본 발명의 데이터 저장 시스템의 하이레벨 부분 블록 다이어그램이고; 그리고
도 3은 본 발명의 데이터 통신 시스템의 개략적인 하이레벨 블록 다이어그램이다.
본 발명에 따른 에러 보정 디코딩의 원리 및 오퍼레이션은 첨부된 도면을 참조하여 아래 설명을 통해 더 잘 이해될 것이다.
본 발명에 따라, 두 개의 상이한 디코더가 동일한 코드워드를 디코딩하기 위해 사용된다. 이 두 디코더는 동일한 코드워드에서 오퍼레이팅하고, 동일한 패리티 비트를 포함하고, 그러므로 동일한 ECC 디코딩 계산의 두 개의 구현방법으로 간주되어야 함이 강조된다.
당업자들이 이러한 접근 방법은 사용할 수 없다고 생각했기 때문에, 본 발명은 매우 혁신적이다. 동일한 문제의 솔루션을 구현하는 두 개의 계산이 동일한 문제를 해결하기 위해 하나의 계산만에 대해 어떠한 이점을 가져다 줄것이라고 예상할 수 없을 것이다. 그러나, 우리가 다음과 같은 특성을 가진 두 개의 디코더를 가지고 있다고 가정한다(또는 상이한 두 모드로 오퍼레이팅할 수 있는 디코더를 가지고 있다고 가정한다):
a. 제1디코더는 고속이고 적은 전력을 소비하지만, 디코딩 프로세스의 결과 산출의 성공이 보장되지 않는다.
b. 제2디코더는 저속이고 많은 전력를 소비하지만, 디코딩 프로세스의 정확한 결과를 항상 산출함이 보장된다.
지금부터, 상기 두 디코더를 아래의 방법으로 사용한다:
a. 메모리에 데이터를 기록하기 전에, 패리티 비트를 계산하기 위해 데이터 비트에 ECC 알고리즘이 적용된다. 데이터 비트와 패리티 비트의 조합은 데이터 내의 원하는 개수의 에러 보정을 제공한다.
b. 데이터 비트 및 패리티 비트는 함께 코드워드를 형성하고, 모두 플래시 메모리에 기록된다.
c. 데이터가 메모리로부터 추출될 때, 전체 컨텐츠, 즉, 데이터 비트 및 패리티 비트가 판독된다.
d. 제1디코더가 추출된 코드워드에 적용된다. 제1디코더가 디코딩 완료에 성공하면, (임의의 에러가 존재한다면) 에러가 보정되고, 그 데이터는 요청한 소프트웨어 어플리케이션 및 판독 오퍼레인션 엔드로 전송된다.
e. 한편, 제1디코더가 디코딩을 완료하는데 실패하면, 추출된 코드워드에 제2디코더를 적용한다. 제2디코더는 (에러의 개수가 ECC 스킴의 보정 능력을 초과하지 않는 한) 성공이 보장되므로, 그 데이터는 요청한 소프트웨어 어플리케이션 및 판독 오퍼레이션 엔드로 전송된다.
전형적으로, 데이터 내의 에러 개수가 많을수록, 제1디코더는 더 자주 실패 한다. 데이터 내의 최대 에러 개수가 있을 확률이 데이터 내의 평균 에러 개수가 있을 확률 보다 훨씬 낮기 때문에, 제1디코더가 대부분의 경우에 성공하도록 설계되어 있다면, 평균 디코딩 속도 및 전력소비량은 제2디코더 보다 고속이고, 전력소비량가 적은, 제1디코더의 속도 및 전력소비량에 가깝게 나타난다. 이것은 아래의 간단한 계산 예를 통해 쉽게 이해될 것이다.
사용된 ECC는 1,000 비트의 데이터 중 3개까지의 에러를 보정할 수 있고, 제2디코더는 1,000개의 데이터 비트 중 3개까지의 에러를 보정하는데 항상 성공하는 것으로 가정한다. 제1디코더는 2개까지의 에러를 보정하는 것은 항상 성공하고, 3개의 에러를 보정하는 것은 항상 실패하는 것으로 가정한다(실제 디코더에서는, 성공과 실패를 구별하는 에러 개수의 명확한 경계가 항상 존재하지는 않지만, 이러한 간소화를 통해 계산을 단순화할 수 있다).
1,000개의 데이터 비트 중 에러가 하나일 확률은 p1=10-1이라 가정하고, 비트에러 확률(랜덤하게 선택된 임의의 데이터 비트가 에러일 확률, 이하 pb라 함)은
Figure 112008083958656-PCT00001
를 만족한다. n=1000을 사용하여,
Figure 112008083958656-PCT00002
을 얻는다. 지금부터, 데이터 내에 에러가 두 개일 확률은
Figure 112008083958656-PCT00003
(이 확률은 실제로 100개 이상의 n, 및 p1<0.25인 임의의 값에 대하여 변하지 않음을 알 수 있다)으로 근사화할 수 있고, 1,000개의 데이터 비트 중 에러가 셋일 확률은
Figure 112008083958656-PCT00004
이다.
제1디코더의 디코딩 시간이 10마이크로초이고, 제2디코더의 디코딩 시간이 1000 마이크로초이고, 제1디코더의 전력소비량이 10밀리와트이고, 제2디코더의 전력소비량이 50밀리와트라면, 위 방법의 평균 디코딩 시간은 대략
Figure 112008083958656-PCT00005
마이크로초이고, 평균 전력소비량은 대략
Figure 112008083958656-PCT00006
밀리와트이다. (평균 전력소비량은 3개의 에러인 경우에, 두 디코더기 모두 병렬로 오퍼레이팅하는 것처럼, 계산하였다. 정확하진 않지만, 오차는 무시할만한 수준이다). 데이터 내의 에러가 하나일 확률이 (다양한 타입의 플래시 메모리인 경우와 같이) 상기 예보다 더 낮다면, 상기 방법의 평균 속도 및 평균 전력소비량은 제1디코더의 속도 및 전력소비량에 훨씬 더 가까워 질 것이다.
그러므로, 본 발명의 방법은 아래의 목적을 모두 달성한다:
a. 빠른 디코딩 시간을 제공하고;
b. 낮은 전력소비량을 제공하고;
c. 메모리 시스템의 출력에 원하는 신뢰도 레벨을 제공하고; 그리고
d. (제2디코더만 사용하는 것과 같은) 종래기술의 방법에서 동일한 신뢰도 레벨에 대하여 요구되는 패리티 비트의 개수 보다 많지 않은 패리티 비트를 사용한다.
본 발명의 이러한 이점이 댓가가 없는 것은 아님을 이해해야 한다. 제1디코더가 실패하는 드문 경우에, 결국 디코딩 프로세스를 두번 실행하는 것과 같은 두 배의 디코딩 시간이 걸린다. 평균 디코딩 시간에 이러한 영향이 무시할만하다 하더라도, 최대 디코딩 시간, 또는 요청한 어플리케이션에 데이터를 제공하는 최대 지연을 증가시킨다. 그러나, 이는 매우 드물게 발생하기 때문에, 일반적으로 본 발명의 이점이 이러한 단점을 압도한다.
상기 방법이 특히 유용한 중요 클래스의 ECC 알고리즘이 존재한다. 이것은 "소프트 디코더" 클래스이이고, 이러한 클래스에서 가장 잘 알려진 알고리즘은 터보 디코더이다. 이러한 알고리즘은, 예컨대, 'George C. Clark, Jr.', 및 'J. Bibb Cain'의, "Error Correction Coding for Digital Communications(Springer, 1981)", 'S. Lin', 및 'D. J. Costello'의, "Error Control Coding: Fundamentals and Applications(Prentice-Hall, 1983)", 및 'Branka Vucetic' 및 'Jinhong Yuan'의, "Turbo Codes:Principles and Applications(Kluwer, 2000)"에 서술되어 있다. 본 참조문헌은 통신에서의 소프트 ECC 알고리즘의 사용으로 다이렉팅되어 있으나, 당업자들은 이러한 알고리즘을 메모리 내의 에러 보정을 위해 변형하는 방법이 명백할 것이다. 소프트 디코더가 아닌 임의의 디코더는 본 명세서에서 "대수 디코더"라 한다.
소프트 디코더는 코드워드의 각각의 비트에 대하여 하나의 확률(예컨대, 그 비트의 값이 1이고 0이 아닐 확률)을 할당하고, 복수의 반복을 실행함으로써 오퍼레이팅하고, 여기서 각각의 비트의 각각의 확률은 다른 비트의 현재의 확률에 따라 변한다. 각각의 비트가 그 동등(peer)에게 "메시지를 패싱하기" 때문에, 이러한 타입의 계산을 "메시지 패싱" 기술을 채용한 것이라 한다. 이러한 디코더를 구현 하는데 있어서 주된 설계 결정 요소는 메시지 패싱의 버스 폭이다. 넓은 버스(예컨대, 10비트)를 사용하는 것은 그 알고리즘이 에러를 극복할 수 있다면, 그 알고리즘은 실제로 정확한 데이터에 수렴할 것임을 보장한다. 그러나 한편으로, 이러한 설계에서 디코더의 전력소비량이 높다. 좁은 버스(예컨대, 3비트)를 사용하는 것은 훨씬 더 낮은 전력소비량을 제공하지만, 이 디코더는 비교적 많은 에러를 가진 경우에(동일한 패턴의 데이터 및 에러가 대응하는 넓은 버스의 디코더에서 정확하게 디코딩되었다 하더라도) 정확한 데이터로 수렴하는 것에 실패할 것이다. 메시지 패싱을 위해 사용된 비트의 개수는 디코딩 프로세스의 전력소비량에 주로 영향을 준다 - 비트의 개수가 많을수록, 전력소비량이 커진다.
이러한 현상에 대한 한 이유는 소프트 디코더의 메시지 및 채널 입력(소프트 값)이 디코딩 오퍼레이션동안 큰 전력을 소비하는 RAM에 저장된다는 점이다. 예를 들어, 메시지마다 10개의 비트 대신 3개의 비트를 사용할 때, RAM의 70%가 절약될 수 있다. 전력소비량을 줄이는 다른 요인는 패싱 메시지를 프로세싱하는 프로세싱 유닛이다. 10비트 대신에 3비트에 대한 계산을 수행하는 것이 더 작고, 전력을 덜 소비하는 유닛을 필요로 한다 것은 명백하다.
"메시지 패싱" 내의 비트 수가 디코딩의 시작 단계에서 설정될 수 있는 소프트 디코더를 구현하는 것이 가능하다. 본 발명의 방법을 이러한 디코더에 적용하는 것은 아래 방식으로 사용된다:
a. 메모리에 데이터를 기록하기 전에, 패리티 비트를 계산하기 위해 데이터 비트에 ECC 알고리즘이 적용된다. 데이터 비트와 패리티 비트의 조합은 원하는 개 수의 에러에 대한 보정을 제공한다.
b. 데이터 비트 및 패리티 비트는 함께 코드워드를 형성하고, 모두 플래시 메모리에 기록된다.
c. 데이터가 메모리로부터 추출될 때, 전체 컨텐츠 - 데이터 비트 및 패리티 비트가 판독된다.
d. 메시지 패싱을 위해 작은 비트수를 사용하여, 추출된 코드워드에 소프트 디코더가 적용된다. 디코더가 디코딩 완료에 성공하면, (임의의 에러가 존재하면) 에러가 보정되고, 그 데이터는 요청한 소프트웨어 어플리케이션 및 판독 오퍼레이션 엔드로 전송된다.
e. 한편, 처음 시도가 디코딩 완료에 실패하면, 추출된 코드워드에 소프트 디코더를 두번째로 적용한다. 이러한 제2디코딩은 (에러 패턴이 ECC 스킴의 보정 능력을 초과하지 않는 한) 성공이 보장되기 때문에, 디코딩은 성공하고, 모든 에러는 보정되고, 그 데이터는 요청한 소프트웨어 어플리케이션 및 판독 오퍼레이션 엔드로 전송된다.
본 발명의 방법은 다양한 타입의 시스템에 대하여 사용가능하지만, 본 방법은 특히 플래시 메모리 시스템에 유용하다. 이것은 플래시 메모리의 에러율이 시간에 의존하기 때문이다. 플래시 메모리에 데이터를 저장한 직후, 그 신뢰도는 비교적 높지만, 시간이 경과할수록 동일한 데이터가 더 낮은 신뢰도로 판독된다. 이것은 메모리 셀의 게이트 내의 전하가 시간에 따라 누수하기 때문이다. 플래시 메모리 내의 다른 영향은 한 플래시 메모리는 비교적 높은 신뢰도를 가지지만, 많이 사용된 디바이스(많은 기록 및 삭제 사이클을 겪을 디바이스)는 훨씬 더 낮은 신뢰도를 가진다는 것이다.
플래시 메모리 시스템에 저장된 데이터를 보호하기 위한 ECC 스킴을 설계할 때, 매우 많이 사용된 디바이스이고, 기록된 시점의 오랜 시간 후에 데이터가 판독되는 최악의 시나리오에 대하여 보호해야 한다. 그러나, 이러한 최악의 시나리오 가정은 대부분의 실제 판독 오퍼레이션에서 보정되지 않는다. 그러므로, 종래기술의 시스템은 이것이 실제 요구되지 않더라도 최악의 경우의 솔루션의 속도 및 전력 패널티를 부담한다. 본 발명의 방법은 디바이스가 새로운 것이거나, 데이터가 최근에 기록된 것이여서 제1디코더만으로 작업이 완료될 때, 이러한 패널티를 부담하지 않는다. 실제로 최악의 경우의 환경을 만났을 때만 제2디코더가 사용된다.
본 발명의 범위는 상술된 에러 보정 방법을 포함한다. 본 발명은 플래시 메모리 시스템으로 한정되지 않고, 또한 자성, 광, 또는 임의의 다른 타입의 메모리에 적용가능하다. 본 발명의 범위는 또한 본 발명의 방법을 사용하는 메모리를 위한, 메모리 및 컨트롤러를 갖춘 메모리 시스템을 포함한다. 본 발명의 범위는 또한 본 발명의 방법을 사용하는 메모리 시스템을 갖춘 컴퓨팅 시스템을 포함한다. 본 발명의 범위는 또한 메모리 및 호스트 컴퓨터를 갖추고, 전용의 메모리 컨트롤러를 사용하지 않고, 본 발명의 방법을 사용하는 컴퓨팅 시스템을 포함한다.
본 발명의 ECC는 계통적일 수 있고, 비계통적일 수도 있다. 계통적 ECC에서, 에러 보정 알고리즘은 원 데이터 비트를 취하고, 원 데이터 비트에 패리티 비트를 첨부하고, 그리고 원 데이터 비트와 패리티 비트를 모두 저장한다. 그러므 로, 원 데이터 비트는 인코딩 프로세스에 의해 보존되고, 저장된 비트 사이에서 식별될 수 있다. 그 후, 저장된 비트가 판독될 때, 데이터 비트 및 패리티 비트가 모두 판독되고, 패리티 비트는 판독된 데이터 비트 내의 에러를 보정할 수 있다. 비계통적 ECC에서, 원 데이터 비트는 보존되지 않고 저장되지 않는다. 그 대신에, 인코딩 프로세스는 원 데이터 비트를 더 큰 그룹의 비트(이하, "보호된 비트"라 함)로 변환하고, 그 보호된 비트가 실제로 저장된다. 저장된 비트가 판독될 때, 원 데이터 비트는 저장된 비트로부터 재생된다. 특정의 원 데이터 비트와 특정의 저장된 비트 사이에 직접적인 대응 관계가 존재하지 않는다.
본 발명의 방법은 메모리 시스템으로 한정되지 않음을 이해해야 한다. 에러 보정은 또한 목적지로의 경로 상에서 전송되는 데이터 비트에 도입된 에러로부터 복구하기 위해, 통신 시스템에서 사용된다. 그러므로, 본 발명의 청구항은 또한 전송된 데이터 내의 에러를 보정하는데 사용되는 에러 보정 방법 및 시스템에 적용가능함을 이해해야 한다.
지금부터 도면을 참조하면, 도 1은 호스트(20)에 연결된, 본 발명의 플래시 메모리 디바이스(10)의 하이레벨 블록 다이어그램이다. 도 1은 'Ban'의 미국특허 제5,404,485호의 도 1을 수정한 것이다. 플래시 메모리 디바이스(10)는 플래시 메모리(14), 컨트롤러(12), 및 RAM(16)을 포함한다. 미국특허 제5,404,485호의 "플래시 컨트롤 14"에 대응하는 컨트롤러(12)는 미국특허 제5,404,485호에 서술된 바와 같이, RAM(16)의 도움과 함께, 플래시 메모리(14)를 관리한다. 플래시 메모리(14)에 데이터를 기록할 때, 컨트롤러(12)는 에러보정 인코딩을 적용한다. 플래 시 메모리(14)로부터 데이터를 판독할 때, 컨트롤러(12)는 상술된 바와 같은 본 발명의 에러보정 방법을 적용한다.
도 2는 본 발명의 데이터 저장 시스템(40)의 하이레벨 부분 블록 다이어그램이다. 데이터 저장 시스템(40)은 프로세서(42), 및 4개의 메모리 디바이스:RAM(44), 부트 ROM(46), 대용량 디바이스(하드 디스크, 48), 및 플래시 메모리 디바이스(30)를 포함하고, 이들은 모두 공통 버스(50)를 통해 통신한다. 플래시 메모리 디바이스(10)와 유사하게, 플래시 메모리 디바이스(30)는 플래시 메모리(32)를 포함한다. 플래시 메모리 디바이스(10)와 달리, 플래시 메모리 디바이스(30)는 그 자신의 컨트롤러 및 RAM을 포함하지 않는다. 그 대신, 프로세서(42)는 , 예컨대, 이스라엘 크파 사바의 엠시스템즈 리미티드의 'TureFFS™' 드라이버의 방식으로, 미국특허 제5,404,485호의 방법을 구현한 소프트웨어 드라이버를 실행함으로써 컨트롤러(12)를 에뮬레이팅한다. 플래시 메모리 디바이스(30)로부터 데이터를 판독할 때, 프로세서(42)는 상술된 바와 같은 본 발명의 에러 보정 방법을 적용한다. 플래시 메모리 디바이스(30)는 또한 프로세서(42)가 플래시 메모리(32)와 통신할 수 있게 하는 버스 인터페이스(34)를 포함한다.
프로세서(42)가 플래시 메모리(32)를 관리하기 위해 실행하는 소프트웨어 드라이버의 코드는 대용량 저장 디바이스(48)에 저장되고, 실행을 위해 RAM(44)으로 전송된다. 그러므로, 대용량 저장 디바이스(48)는 본 발명의 원리에 따른 플래시 메모리(32)를 관리 하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 코드 저장 매체의 한 예이다.
도 3은 본 발명의 데이터 통신 시스템(60)의 하이레벨 블록 다이어그램이다. 시스템(60)은 송신기(62), 전송 매체(64), 및 수신기(66)를 포함한다. 송신기(62)는 매체(64)를 통해 데이터를 수신기(66)로 전송한다. 데이터를 전송하기 전에, 송신기(62)는 데이터에 에러보정 인코딩을 적용한다. 전송된 데이터를 수신한 후, 수신기(66)는 데이터에 본 발명의 에러보정 디코딩을 적용한다.
전송 매체(64)는 데이터의 임의의 적합한 캐리어를 사용하여 데이터를 전송하기 위한 임의의 적합한 매체일 수 있다. 이러한 매체의 일반적인 예는 자유 공간, 무선 주파수 전송을 위한 동축 케이블, 및 광 주파수 전송을 위한 광 섬유를 포함한다. 송신기(62), 및 수신기(66)는 전송 매체(64)의 특성에 따라 조절된다. 종래 기술의 에러 보정 인코딩 방법을 사용하는 시스템(60)과 유사한 데이터 통신 시스템은 주지되어 있고, 본 발명의 에러 보정 디코딩 방법을 사용하기 위해 이러한 종래 기술의 시스템을 변형하는 것은 당업자들에게는 매우 간단할 것이다.
본 발명은 제한된 수의 실시예에 관하여 서술되었으나, 본 발명의 다양한 변형, 수정, 및 다른 어플리케이션이 이루어질 수 있음이 이해될 것이다.

Claims (20)

  1. 코드워드의 리프리젠테이션을 디코딩하는 방법으로서,
    (a) 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제1디코더를 적용하는 단계; 및
    (b) 상기 제1디코더의 적용이 상기 코드워드의 상기 리프리젠테이션를 디코딩하는데 실패하면, 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제2디코더를 적용하는 단계를 포함하는 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  2. 제 1 항에 있어서, 상기 제1디코더는 소프트 디코더인 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  3. 제 1 항에 있어서, 상기 제1디코더는 대수 디코더인 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  4. 제 1 항에 있어서, 상기 제2디코더는 소프트 디코더인 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  5. 제 1 항에 있어서, 상기 제2디코더는 대수 디코더인 것을 특징으로 하는 코 드워드의 리프리젠테이션을 디코딩하는 방법.
  6. 제 1 항에 있어서, 상기 디코더들은 공통의 디코딩 알고리즘을 공유하고, 상기 디코더들은 상기 알고리즘의 적어도 하나의 파라미터 중 상이한 각각의 값을 가진 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  7. 제 6 항에 있어서, 상기 적어도 하나의 파라미터는 상기 알고리즘의 적어도 한 단계에서 사용되는 다수의 비트를 포함하는 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  8. 제 7 항에 있어서, 상기 디코더들은 소프트 디코더이고, 상기 다수의 비트는 상기 알고리즘에 의해 메시지 패싱에 사용되는 다수의 비트인 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  9. 제 1 항에 있어서, 상기 코드워드의 상기 리프리젠테이션에 제1디코더를 적용하는 것이 상기 코드워드의 상기 리프리젠테이션에 제2디코더를 적용하는 것보다 적은 전력을 소모하는 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  10. 제 1 항에 있어서, 상기 코드워드의 상기 리프리젠테이션에 제1디코더를 적 용하는 것이 상기 코드워드의 상기 리프리젠테이션에 제2디코더를 적용하는 것보다 더 빠른 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하는 방법.
  11. 코드워드의 리프리젠테이션을 수신하는 수신기로서,
    (a) 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제1디코더를 적용하고; 그리고
    (b) 상기 제1디코더의 적용이 상기 코드워드의 상기 리프리젠테이션를 디코딩하는데 실패하면, 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제2디코더를 적용하도록 동작하는 것을 특징으로 하는 코드워드의 리프리젠테이션을 수신하는 수신기.
  12. 코드워드의 리프리젠테이션이 저장되는 메모리의 컨트롤러로서,
    (a) 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제1디코더를 적용하고; 그리고
    (b) 상기 제1디코더의 적용이 상기 코드워드의 상기 리프리젠테이션을 디코딩하는데 실패하면, 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제2디코더를 적용하도록 동작하는 것을 특징으로 하는 코드워드의 리프리젠테이션이 저장되는 메모리의 컨트롤러.
  13. 메모리 디바이스로서,
    (a) 코드워드의 리프리젠테이션을 저장하는 메모리; 및
    (b) 컨트롤러로서,
    (i) 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제1디코더를 적용하고; 그리고
    (ii) 상기 제1디코더의 적용이 상기 코드워드의 상기 리프리젠테이션을 디코딩하는데 실패하면, 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제2디코더를 적용하도록 동작하는 컨트롤러를 포함하는 것을 특징으로 하는 메모리 디바이스.
  14. 데이터 저장 시스템으로서,
    (a) 상기 데이터를 코드워드의 리프리젠테이션으로 저장하는 메모리; 및
    (b) 프로세서로서,
    (i) 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제1디코더를 적용하고; 그리고
    (ii) 상기 제1디코더의 적용이 상기 코드워드의 상기 리프리젠테이션을 디코딩하는데 실패하면, 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제2디코더를 적용하도록 동작하는 프로세서를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  15. 코드워드의 리프리젠테이션을 디코딩하기 위한 컴퓨터 판독가능한 코드를 내 장한 컴퓨터 판독가능한 저장 매체로서, 상기 컴퓨터 판독가능한 코드는
    (a) 상기 코드워드의 리프리젠테이션에 상기 코드워드의 제1디코더를 적용하기 위한 프로그램 코드;
    (b) 상기 제1디코더의 적용의 성공여부 판정하기 위한 프로그램 코드; 및
    (c) 상기 제1디코더의 적용이 실패하면, 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제2디코더를 적용하기 위한 프로그램 코드를 포함하는 것을 특징으로 하는 코드워드의 리프리젠테이션을 디코딩하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체.
  16. 데이터 이식 방법으로서,
    (a) 상기 데이터를 코드워드로 인코딩하는 단계;
    (b) 상기 코드워드를 오류 있는 매체로 내보내는 단계;
    (c) 상기 매체로부터 상기 코드워드의 리프리젠테이션을 가져오는 단계;
    (d) 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제1디코더를 적용하는 단계; 및
    (e) 상기 제1디코더의 적용이 상기 코드워드의 상기 리프리젠테이션을 디코딩하는데 실패하면, 상기 코드워드의 상기 리프리젠테이션에 상기 코드워드의 제2디코더를 적용하는 단계를 포함하는 것을 특징으로 하는 데이터 이식 방법.
  17. 제 16 항에 있어서, 상기 매체는 전송 매체이고, 상기 내보내는 단계는 상 기 코드워드를 상기 전송 매체를 통해 전송하는 단계를 포함하는 것을 특징으로 하는 데이터 이식 방법.
  18. 제 16 항에 있어서, 상기 매체는 저장 매체이고, 상기 내보내는 단계는 상기 코드워드를 상기 저장 매체에 저장하는 단계를 포함하는 것을 특징으로 하는 데이터 이식 방법.
  19. 제 16 항에 있어서, 상기 코드워드는 계통적 코드워드인 것을 특징으로 하는 데이터 이식 방법.
  20. 제 16 항에 있어서, 상기 코드워드는 비계통적 코드워드인 것을 특징으로 하는 데이터 이식 방법.
KR1020087029786A 2006-05-21 2006-10-30 시행착오에 의한 에러 보정 디코딩 KR101306645B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US74780006P 2006-05-21 2006-05-21
US60/747,800 2006-05-21
US11/528,556 US8042029B2 (en) 2006-05-21 2006-09-28 Error correction decoding by trial and error
US11/528,556 2006-09-28
PCT/IL2006/001248 WO2007135657A2 (en) 2006-05-21 2006-10-30 Error correction decoding by trial and error

Publications (2)

Publication Number Publication Date
KR20090019819A true KR20090019819A (ko) 2009-02-25
KR101306645B1 KR101306645B1 (ko) 2013-09-11

Family

ID=38723689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087029786A KR101306645B1 (ko) 2006-05-21 2006-10-30 시행착오에 의한 에러 보정 디코딩

Country Status (3)

Country Link
US (2) US8042029B2 (ko)
KR (1) KR101306645B1 (ko)
WO (1) WO2007135657A2 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840875B2 (en) * 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
US8042029B2 (en) * 2006-05-21 2011-10-18 Ramot At Tel Aviv University Ltd. Error correction decoding by trial and error
US7904783B2 (en) * 2006-09-28 2011-03-08 Sandisk Corporation Soft-input soft-output decoder for nonvolatile memory
US7805663B2 (en) * 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
US7818653B2 (en) 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US7904780B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US8001441B2 (en) * 2006-11-03 2011-08-16 Sandisk Technologies Inc. Nonvolatile memory with modulated error correction coding
US8261170B2 (en) * 2007-06-19 2012-09-04 Mitsubishi Electric Research Laboratories, Inc. Multi-stage decoder for error-correcting codes
US8386868B2 (en) * 2008-04-16 2013-02-26 Sandisk Il, Ltd. Using programming-time information to support error correction
KR20110036816A (ko) * 2008-06-24 2011-04-11 샌디스크 아이엘 엘티디 고체 상태 메모리의 소거 횟수에 따라 에러를 정정하기 위한 방법과 장치
US8301979B2 (en) * 2008-10-07 2012-10-30 Sandisk Il Ltd. Low density parity code (LDPC) decoding for memory with multiple log likelihood ratio (LLR) decoders
US8533496B1 (en) 2009-11-10 2013-09-10 Marvell International Ltd. Power management of iterative data processing systems
US8627175B2 (en) 2010-09-27 2014-01-07 Seagate Technology Llc Opportunistic decoding in memory systems
US8243511B2 (en) 2010-09-27 2012-08-14 Seagate Technology Llc Reuse of information from memory read operations
US8498152B2 (en) 2010-12-23 2013-07-30 Sandisk Il Ltd. Non-volatile memory and methods with soft-bit reads while reading hard bits with compensation for coupling
US8099652B1 (en) 2010-12-23 2012-01-17 Sandisk Corporation Non-volatile memory and methods with reading soft bits in non uniform schemes
US8782495B2 (en) * 2010-12-23 2014-07-15 Sandisk Il Ltd Non-volatile memory and methods with asymmetric soft read points around hard read points
US8812939B2 (en) * 2011-01-28 2014-08-19 Marvell World Trade Ltd. Soft decoding systems and methods for flash based memory systems
US8880977B2 (en) 2011-07-22 2014-11-04 Sandisk Technologies Inc. Systems and methods of storing data
US8543891B2 (en) * 2011-09-21 2013-09-24 Apple Inc. Power-optimized decoding of linear codes
US8935600B1 (en) * 2011-09-28 2015-01-13 Marvell International Ltd. Modification of decoder operating mode based on a probability of non-standard errors in concatenated decoding systems
US8719677B2 (en) 2011-12-22 2014-05-06 Sandisk Technologies Inc. Using ECC encoding to verify an ECC decode operation
GB2499424B (en) * 2012-02-16 2016-06-01 Canon Kk Methods for decoding, methods for retrieving, method for encoding, method of transmitting, corresponding devices, information storage means and computer
US9286972B2 (en) * 2012-02-22 2016-03-15 Silicon Motion, Inc. Method, memory controller and system for reading data stored in flash memory
TWI571885B (zh) * 2012-02-24 2017-02-21 慧榮科技股份有限公司 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與系統
US20140071761A1 (en) 2012-09-10 2014-03-13 Sandisk Technologies Inc. Non-volatile storage with joint hard bit and soft bit reading
US8924834B2 (en) * 2012-09-26 2014-12-30 Wisconsin Alumni Research Foundation Error correction circuit for data communication providing parallelizable linear programming decoding
US10275624B2 (en) 2013-10-29 2019-04-30 Hand Held Products, Inc. Hybrid system and method for reading indicia
US9654144B2 (en) * 2014-09-30 2017-05-16 Micron Technology, Inc. Progressive effort decoder architecture
US9811418B2 (en) * 2015-10-26 2017-11-07 Sandisk Technologies Llc Syndrome-based codeword decoding
US9886342B2 (en) 2015-10-28 2018-02-06 Sandisk Technologies Llc Storage device operations based on bit error rate (BER) estimate
US10180874B2 (en) 2015-10-28 2019-01-15 Western Digital Technologies, Inc. Storage device operations based on bit error rate (BER) estimate
US9978462B2 (en) 2015-10-29 2018-05-22 Sandisk Technologies Llc Partial soft bit read
US10523244B2 (en) * 2016-08-11 2019-12-31 Zebware Ab Device and associated methodoloy for encoding and decoding of data for an erasure code
KR20190030294A (ko) * 2017-09-14 2019-03-22 에스케이하이닉스 주식회사 에러 정정 회로, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2194850B (en) * 1986-09-05 1990-10-31 Philips Nv Data processing device
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US7031408B2 (en) * 1997-12-10 2006-04-18 Adtran Inc. Mechanism for reducing recovery time after path loss in coded data communication system having sequential decoder
US6182264B1 (en) * 1998-05-22 2001-01-30 Vlsi Technology, Inc. Smart dynamic selection of error correction methods for DECT based data services
US6567475B1 (en) * 1998-12-29 2003-05-20 Ericsson Inc. Method and system for the transmission, reception and processing of 4-level and 8-level signaling symbols
US6721373B1 (en) * 2000-03-29 2004-04-13 Tioga Technologies Ltd. Multi-tone receiver and a method for operating the same
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
WO2003103152A2 (en) * 2002-05-31 2003-12-11 Koninklijke Philips Electronics N.V. Soft decoding of linear block codes
US7266750B1 (en) * 2002-07-10 2007-09-04 Maxtor Corporation Error recovery strategies for iterative decoders
US7015837B1 (en) * 2004-10-29 2006-03-21 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US7823043B2 (en) * 2006-05-10 2010-10-26 Sandisk Il Ltd. Corruption-resistant data porting with multiple error correction schemes
US8042029B2 (en) * 2006-05-21 2011-10-18 Ramot At Tel Aviv University Ltd. Error correction decoding by trial and error

Also Published As

Publication number Publication date
KR101306645B1 (ko) 2013-09-11
US20110264981A1 (en) 2011-10-27
WO2007135657A3 (en) 2009-04-09
US20070283227A1 (en) 2007-12-06
WO2007135657A2 (en) 2007-11-29
US8042029B2 (en) 2011-10-18
US8938664B2 (en) 2015-01-20

Similar Documents

Publication Publication Date Title
KR101306645B1 (ko) 시행착오에 의한 에러 보정 디코딩
US7823043B2 (en) Corruption-resistant data porting with multiple error correction schemes
US9946596B2 (en) Global error recovery system
US9673840B2 (en) Turbo product codes for NAND flash
US7853854B2 (en) Iterative decoding of a frame of data encoded using a block coding algorithm
US8667360B2 (en) Apparatus, system, and method for generating and decoding a longer linear block codeword using a shorter block length
US10108490B1 (en) Decoding method, memory storage device and memory control circuit unit
US20150370631A1 (en) Write mapping to mitigate hard errors via soft-decision decoding
US9553612B2 (en) Decoding based on randomized hard decisions
CN106341136A (zh) Ldpc解码方法及其装置
KR102426047B1 (ko) 폴라 부호 복호화 장치 및 방법
KR20200111509A (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
US10719389B2 (en) Enhanced data storage with concatenated inner and outer error correction codes
CN101634938A (zh) 固态硬盘的数据迁移方法、数据迁移装置及固态硬盘
US10944424B1 (en) Error correction with multiple LLR-LUTS for a single read
US9184954B1 (en) Systems and methods for directed soft data perturbation in layered decoding
US20180122494A1 (en) Raid decoding architecture with reduced bandwidth
US20110022927A1 (en) Compact decoding of punctured codes
KR20160075001A (ko) 플래시 메모리 시스템 동작 방법
CN110032331B (zh) 用于通过绕过编码和解码来提高备份效率的方法和系统
Hwang et al. Energy-efficient symmetric BC-BCH decoder architecture for mobile storages
CN113496753A (zh) 利用历史解码信息对纠错码进行解码的系统和方法
KR20200124054A (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
US20230370090A1 (en) Encoding and decoding of data using generalized ldpc codes
KR20230132697A (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: 20160727

Year of fee payment: 4