KR20090035571A - 멀티­비트­셀 플래시 메모리에서의 오류 보정 방법 - Google Patents

멀티­비트­셀 플래시 메모리에서의 오류 보정 방법 Download PDF

Info

Publication number
KR20090035571A
KR20090035571A KR1020097002147A KR20097002147A KR20090035571A KR 20090035571 A KR20090035571 A KR 20090035571A KR 1020097002147 A KR1020097002147 A KR 1020097002147A KR 20097002147 A KR20097002147 A KR 20097002147A KR 20090035571 A KR20090035571 A KR 20090035571A
Authority
KR
South Korea
Prior art keywords
codeword
stored
bits
indication
bit
Prior art date
Application number
KR1020097002147A
Other languages
English (en)
Other versions
KR101422050B1 (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 KR20090035571A publication Critical patent/KR20090035571A/ko
Application granted granted Critical
Publication of KR101422050B1 publication Critical patent/KR101422050B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

데이터는 플래시 메모리와 같은 메모리에 저장된 시스템적인 또는 비시스템적인 코드워드로서 인코딩된다. 코드워드의 표시는 상기 메모리로부터 판독된다. 상기 코드워드의 표시에 연관된 복수의 비트는 반복적으로 디코딩된다. 복수의 비트는, 예를 들면, 코드워드 자체의 일부 또는 전부, 또는 상기 코드워드의 표시의 일부 또는 모두를 전처리한 결과의 일부 또는 모두가 될 수 있다.
코드워드, 메모리, 비트, 디코딩, 플래시 메모리, 시스템적인 코드워드, 비시스템적인 코드워드, 반복 디코딩, 하드 디코더, 소프트 디코더, 컨트롤러, 메모리 디바이스, 데이터 저장

Description

멀티­비트­셀 플래시 메모리에서의 오류 보정 방법{METHOD OF ERROR CORRECTION IN A MULTI­BIT­PER­CELL FLASH MEMORY}
본 발명은 디지털 데이터의 오류 보정에 관한 것으로, 특히 셀당 다수의 비트를 저장하는 플래시 메모리 디바이스를 위한 오류 보정 방법에 관한 것이다.
플래시 메모리 디바이스는 수년 동안 공지되어 왔다. 전형적으로, 플래시 메모리 내의 각각의 셀은 한 비트의 정보를 저장한다. 전통적으로, 한 비트를 저장하는 방법은 한 상태는 논리값 "0"을 나타내고, 다른 상태는 논리값 "1"을 나타내는 -두 상태의 셀을 지원하는 것이다. 플래시 메모리 셀에서, 두 상태는 셀의 채널(셀의 트랜지스터의 소스 및 드레인 엘리먼트를 연결하는 영역) 상에 플로팅 게이트를 가지고, 이 플로팅 게이트 내에 저장된 전하의 크기에 대한 두 유효 상태를 가짐으로써 구현된다. 전형적으로, 한 상태는 플로팅 게이트에서 0 전하를 가지고, (일반적으로 "1" 상태를 나타내도록 정의된) 삭제된 후 셀의 초기의 기록되지 않은 상태이고, 다른 상태(일반적으로 "0" 상태를 나타내도록 정의된)는 플로팅 게이트에서 일정 크기의 음 전하를 가진다. 게이트에서 음 전하를 가지는 것은 셀의 트랜지스터의 문턱 전압(즉, 트랜지스터가 도전되게 하기 위해 트랜지스터의 컨트롤 게이트에 적용되어야할 전압)을 증가하게 한다. 셀의 문턱 전압을 체크함으 로써 저장된 비트를 판독하는 것이 가능하다: 문턱 전압이 더 높은 상태이면, 비트 값은 "0"이고, 문턱 전압이 더 낮은 상태이면 비트 값은 "1"이다. 실제로 셀의 문턱 전압을 정확하게 판독할 필요는 없다. 셀이 현재 두 상태 중 어디에 위치하는지 정확하게 식별하는 것이 필요한 전부이다. 이러한 목적을 위해, 두 상태 사이의 중간인 기준 전압에 대하여 비교하고, 그 결과 셀의 문턱 전압이 이 기준 값보다 큰지 작은지를 판단하는 것으로 충분하다.
도 1A는 이들이 동작하는 방법을 그래픽적으로 도시한다. 더욱 상세하게, 도 1A는 다수의 셀의 문턱 전압의 분포를 도시한다. 플래시 메모리 내의 셀은 (예를 들어, 불순물 농도의 작은 변화 또는 실리콘 구조의 결함으로 인해) 그들의 특성 및 행동이 정확하게 동일하지는 않기 때문에, 동일한 프로그래밍 동작을 모든 셀에 적용하는 것은 모든 셀이 정확하게 동일한 문턱 전압을 가지게 하지 못한다(참고로, 경험적으로 플래시 메모리에 데이터를 기록하는 것은 일반적으로 플래시 메모리를 "프로그래밍한다"라고 한다). 그 대신, 문턱 전압은 도 1A에 도시된 것과 유사한 방식으로 분포된다. "1"의 값을 저장하는 셀은 전형적으로 음의 문턱 전압을 가지고, 대부분의 셀은 도 1A의 좌측 피크에 도시된 값과 근접한 임계값을 가지고, 소수의 셀이 더 낮은 또는 더 높은 문턱 전압을 가진다. 이와 유사하게, "0"의 값을 저장하는 셀은 전형적으로 양의 문턱 전압을 가지고, 대부분의 셀은 도 1A의 우측 피크에 도시된 값과 근접한 임계값을 가지고, 소수의 셀이 더 낮은 또는 더 높은 문턱 전압을 가진다.
최근에, 전통적으로 "멀티 레벨 셀" 또는 짧게 MLC라 불리는 기술을 사용한 새로운 종류의 플래시 메모리가 시장에 등장하였다(이러한 명칭은 오해의 소지가 있는데, 이전의 유형의 플래시 셀 또한 하나 이상의 레벨을 가지기 때문이다: 그들은 상술한 바와 같이, 두 레벨을 가진다. 그러므로, 두 종류의 플래시 셀은 본 명세서에서 "단일 비트 셀"(SBC), 및 "멀티 비트 셀"(MBC)이라 한다). MBC 플래시에 의한 개선은 각각의 셀에 둘 이상의 비트를 저장하는 것이다. 단일 셀에 대하여 두 비트의 정보를 저장하기 위해, 셀은 4개의 상이한 상태 중 하나일 수 있어야 한다. 셀의 "상태"는 그것의 문턱 전압에 의해 표현되므로, 2-비트 MBC 셀은 그것의 문턱 전압에 대하여 4개의 상이한 유효 범위를 지원해야 함이 분명하다. 도 1B는 전형적인 2-비트 MBC 셀에 대한 문턱 전압 분포를 도시한다. 예상한 바와 같이, 도 1B는 각각의 하나의 상태에 대응하는 4개의 피크를 가진다. SBC 경우와 같이, 각각의 상태는 실제로 범위이며, 단일 숫자가 아니다. 셀의 내용을 판독할 때, 셀의 문턱 전압이 속한 범위가 정확하게 식별됨을 보장해야 한다. 종래기술에 대하여, MBC 플래시 메모리의 예는 Harari의 미국 특허번호 제5,434,825호를 참조하라.
이와 유사하게, 단일 셀이 3비트의 정보를 저장하기 위해, 셀은 8개의 상이한 상태 중 하나일 수 있어야 한다. 그러므로, 3-비트 MBC 셀은 그것의 문턱 전압에 대하여 8개의 상이한 유효 범위를 지원해야 한다. 도 1C는 전형적인 3-비트 MBC 셀에 대한 문턱 전압 분포를 도시한다. 예상한 바와 같이, 도 1C는 각각의 하나의 상태에 대응하는 8개의 피크를 가진다. 도 1D는 16개의 문턱 전압 범위에 의해 나타난 16개의 상태가 필요한 4-비트 MBC 셀에 대한 문턱 전압 분포를 도시한다.
MBC 셀 내에 두 비트를 4개의 상태를 통해 인코딩할 때, 도 1B의 가장 왼쪽의 상태는 두 비트 모두 "1"의 값을 가진 경우를 나타낸다(하기 설명에서, 다음의 명명법이 사용된다 - 셀의 두 비트는 "하위 비트" 및 "상위 비트"라 한다. 비트의 명백한 값은 오른쪽에 하위 비트를 가진 ["상위 비트" "하위 비트"] 형태로 쓰여 진다. 그러므로, 하위 비트가 "0"이고 상위 비트가 "1"인 경우는 "10"으로 쓰여 진다. 이러한 용어 및 명명법은 임의적인 것이며, 다른 명칭 및 인코딩이 가능함을 이해해야 한다.). 이러한 명명법을 사용하여, 가장-왼쪽의 상태는 "11"의 경우를 나타낸다. 다른 3개의 상태는 전형적으로 왼쪽에서 오른쪽으로의 순서로: "10", "00", "01"로 할당된다. 이러한 인코딩을 사용한 MBC NAND 플래시 메모리의 한 예시적인 구현은 본 문에 설명을 위해 참조에 의해 통합된 Chen의 미국 특허번호 제6,522,580호에서 찾을 수 있다. 특히 Chen 특허의 도 8을 참조하라. 또한, Tanaka의 미국 특허번호 제6,643,188호는 MBC NAND 플래시 메모리의 유사한 구현을 도시하지만, 도 7을 참조하면 비트 인코딩에 대한 상태의 상이한 할당이 있다: "11", "10", "01", "00". 'Chen' 인코딩은 도 1B에 도시된 것이다.
우리는 상기 용어 및 명명법을 다음과 같이, 셀 당 두 비트 이상의 경우로 확장한다. 가장 왼쪽의 기록되지 않은 상태는 "모두 1"("1...1")을 나타내고, 스트링 "1...10"은 셀의 최하위 비트만 "0"으로 쓰여 지는 경우를 나타내고, 스트링 "01...1"은 최상위 비트만 "0"으로 쓰여 지는 경우를 나타낸다.
MBC 셀의 내용을 판독할 때, 셀의 문턱 전압이 속하는 범위는 정확하게 식별되어야 한다: 이러한 경우에, 이것은 하나의 기준 전압을 비교하는 것만으로는 항 상 달성될 수 없다. 대신에, 수차례의 비교가 필요할 수 있다. 예를 들어, 도 1B에 도시된 경우에, 하위 비트를 판독하기 위해, 셀의 문턱 전압이 먼저 기준 비교 전압 V1과 비교되고, 그 다음 그 비교 결과에 따라, 0 기준 비교 전압 또는 기준 비교 전압 V2와 비교된다. 대안으로서, 하위 비트는 문턱 전압을 0 기준 전압 및 기준 비교 전압 V2와 무조건 비교하고, 다시 두 비교를 요청함으로써 판독된다. 셀당 둘 이상의 비트에 대하여, 훨씬 더 많은 비교가 필요할 것이다.
플래시 메모리에서의 페이지는 플래시 메모리로 개별적으로 기록될 수 있는 데이터의 가장 작은 부분으로 표시하고, 그런다음 단일 비트 MBC 셀의 비트는 모두 동일한 플래시 페이지에 속하거나 또는, 상기 비트들은 예를 들면 셀 플래시 메모리당 4비트로 가장 낮은 비트는 페이지 0에, 다음 비트는 페이지 1, 다음 비트는 페이지 2, 및 다음 비트는 페이지 3에 있도록 상이한 페이지들에 할당된다.
MBC 디바이스는 현저한 비용의 효익을 제공한다. 셀당 2비트를 가진 MBC 디바이스는 유사한 용량의 SBC에 의해 필요로하는 실리콘 웨이퍼 영역의 약 절반을 필요로한다. 그러나, MBC 플래시를 사용하는 것은 결점이 있다. MBC 메모리의 평균 판독 및 기록 시간은 SBC메모리 보다 더 길고, 성능 감소를 야기한다. 더 중요한 것은, MBC의 신뢰성이 SBC 보다 더 낮다는 것이다. MBC에서의 문턱 전압 사이의 차이가 SBC에서 보다 더 작다. 따라서, 2 개 상태 사이의 커다란 갭때문에 SBC에서는 미약한 상기 문턱 전압에서의 요란(예를 들면, 문턱 전압의 드리프트 또는 동작하는 이웃 셀로부터의 간섭을 일으키는 저장된 전하의 누설)은 MBC 셀이 하나 의 상태에서 다른 상태로 이동하도록 하여, 오류 비트를 야기한다. 상기 결론적인 결과는 데이터 유지 시간 또는 다수의 기록/삭제 사이클에 대한 상기 디바이스의 내구성에 관해 MBC 셀의 더 낮은 성능의 스펙이다.
플래시 메모리 셀, 특히 NAND 유형의 플래시 메모리 셀은 판독시 오류 비트를 제공할 0이 아닌 확률을 가진다. 즉, 특정한 비트의 데이터를 플래시 메모리 디바이스로 기록하고 추후에 상기 디바이스로부터 상기 비트를 판독할 때 상기 비트의 판독값이 이전에 기록된 값과 동일하지 않게되는 확률이 0이 아니라는 것이다(비록 작다고 하더라도). 상기 사실은 일반적으로 NAND 유형 플래시 메모리 디바이스의 데이터시트에 명시적으로 기술되며, 제조사는 대개 판독되는 데이터에 적용되어야하는 오류 보정의 크기에 대한 권장사항을 제공한다. SBC 플래시 메모리 디바이스에 대해, 제조사는 사용자 데이터의 512 바이트의 각 섹터당 일 비트 오류를 보정할 수 있는 오류 보정 코드(ECC)의 사용을 권장하는 것이 일반적이다. 셀당-2 비트 MBC 플래시 메모리 디바이스에 대해, 제조사는 사용자 데이터의 512 바이트의 각 섹터 당 4개의 비트 오류를 보정할 수 있는 ECC의 사용을 권장하는 것이 일반적이다. 이것은 MBC 셀이 SBC 셀보다 신뢰성이 떨어진다는 이전의 관찰에 따른 것이다.
오류 보정 코드의 구현은 2 부분을 포함한다. 제 1 부분은 "인코더"라고 하며, 데이터를 메모리에 기록할 때 활성화된다. 상기 인코더는 입력으로서 사용자 데이터를 수신하고, 상기 사용자 데이터에 상기 오류가 발생한 데이터에서의 오류를 극복하는 것을 허용하는 추가 정보를 더한 것을 나타내는 "코드워드"를 출력한 다. 제 2 부분은 "디코더"라고 하며, 데이터가 플래시 메모리 디바이스로부터 판독될 때 활성화된다. 상기 디코더는 상기 메모리 셀로부터 판독된 비트를 수신한다. 상기 비트들은 이상적으로는 이전에 저장된 코드워드와 동일해야하지만, 실제에 있어서는 상기 비트들은 오류 비트들을 포함할 수 있다. 상기 디코더의 태스크는 정확한 사용자 비트를 복구하기 위해 상기 인코더에 의해 상기 코드워드에 배치되는 추가 정보를 이용하는 것이다.
ECC 디코더는 2 개 유형으로 분류될 수 있다:
a. 반복 디코더
b. 비-반복 디코더.
본 발명의 목적을 위해, 반복 디코더는 상기 디코딩된 사용자 데이터의 퍼텐셜 값이 디코딩 알고리즘에 의해 생성되고 성공 기준에 대해 테스트되는 디코딩 알고리즘을 수행하는 디코더로서 정의된다. 상기 성공 기준에 들어맞으면, 상기 퍼텐셜 값은 디코딩된 사용자 데이터가 된다. 상기 성공 기준에 들어맞지 않으면, 상기 알고리즘은 상기 디코딩된 사용자 데이터의 새로운 잠재적인 값을 가져오는 또다른 연산으로 진행하고, 이는 상기 판정 로직에 따라 성공 기준에 대해 테스트된다. 비-반복 디코더는 반복 디코더가 아닌 모든 디코더이다. 반복 및 비반복 디코더 모두가 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있고, 모든 유형의 구현은 "반복 디코더" 및 "비반복 디코더"의 범위 내에 있다는 것에 유의해야한다.
반복 디코더는 일반적으로 비반복 디코더보다 구현하기 더 복잡하다. 즉, 반복 디코더의 오류 보정 기능은 대개 비반복 디코더의 오류 보정 기능보다 우수하다.
상술한 바와 같이, 반복 디코더는 다음 반복에 대한 입력으로서 하나의 반복의 출력을 이용하여 반복시 정보를 처리한다. 상기 접근 방식을 작동하기 위해, 반복 코드가 일반적으로 보다 단순한 구성 코드로 구축된다. 상기 반복 프로시저에 의해 효율적으로 디코딩될 수 있는 다수의 코드의 패밀리가 있다. 가장 인기있는 것 중에 하나는 컨볼루셔널 터보 코드(CTC), 터보 제품 코드(TPC) 및 저밀도 패리티-체크(LDPC) 코드이다. CTC에서, 상기 구성 코드는 돌림형 코드이고, TPC에서는 상기 구성 코드는 단순 블록 코드(예를 들면, 패리티-체크, 해밍, 2-오류 보정 BHC 코드)이고, LDPC 코드에서는 상기 구성 코드는 짧은 패리티-체크 및 반복 코드이다.
반복 설계의 개관을 위해서는, S. Lin 및 D. J. Costello, Error Control Coding, Prentice-Hall, 2004를 참조하라.
CTC의 상세한 설명은 C. Berrou 및 A. Glavieux, "Near optimum error correcting coding and decoding: Turbo-codes", IEEE Trans. Com, Vol. 44, N° 10, pp. 1261-1271, 1996년 10월에서 볼수 있다.
TPC 코드는 R. M. Pyndiah, "Near-optimum decoding of product code: Block turbo codes", IEEE Trans. Com, vol. 46, pp. 1003-1010, 1998년 8월에서 다루어진다.
LDPC 코드는 R. G. Gallager, "Low-density parity-check codes", IRE Trans. Info. Theory, vol. IT-8, pp. 21-28, 1962에 기술된다.
현재, 반복 디코딩은 통신에서만 사용되며, 데이터 스토리지 애플리케이션에는 사용되지 않는다. 특히, 플래시 메모리로부터 판독된 데이터에서의 오류를 보정하기 위해 반복 디코더를 사용하는 플래시 메모리 시스템은 없다. 이것은 반복 디코더의 구현 비용이 상대적으로 높기 때문에 놀라운 일은 아니다.
현재, 셀당 2 비트 이상을 가지는 상용으로 가용한 MBC 플래시 메모리 디바이스는 없다. 이러한 디바이스가 가용하게 되는 것을 방해하는 주된 방해물은 상기 메모리 디바이스의 셀로부터 판독된 데이터의 열화한 신뢰성이다. 예를 들면, 기존의 플래시 메모리 제조 기술로, 셀당 4비트를 저장하는 MBC 셀은 수백 비트의 오류를 보정할 수 있는 ECC가 필요한 매우 신뢰할 수 없는 데이터를 출력한다.
따라서, 상기 디바이스들이 그들로부터 판독된 데이터로 삽입하는 다수의 오류에도 불구하고 유용한 셀당 2비트 이상을 가진 MBC 플래시 메모리 디바이스를 제조하는 방법을 발견할 필요가 있다.
본 발명의 개념의 혁신은, 종래 지식과는 반대로, 반복 디코딩이 통신 뿐 아니라 데이터 저장에 있어서도 실제 유용한 것이다. 예를 들면, 플래시 메모리 디바이스에 저장된 데이터의 반복 디코딩은 셀당 3 비트 이상을 상기 상업적으로 실용적인 디바이스의 메모리에 저장한다.
따라서, 본 발명에 따라, 저장된 코드워드의 표시를 처리하는 방법으로서, (a) 저장된 코드워드가 저장된 메모리로부터 상기 코드워드의 표시를 판독하는 단계; (b) 상기 저장된 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하는 단계;를 포함하는 방법이 제공된다.
또한, 본 발명에 따라, 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하고, 코드워드의 표시가 저장된 메모리의 컨트롤러가 제공된다.
또한, 본 발명에 따라, (a) 코드워드의 표시를 저장하는 메모리; (b) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하는 컨트롤러;를 포함하는 메모리 디바이스가 제공된다.
추가로, 본 발명에 따라, (a) 코드워드의 표시로서 데이터를 저장하는 메모리 디바이스; (b) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하는 프로세서;를 포함하는 데이터 저장을 위한 시스템이 제공된다.
추가로, 본 발명에 따라, (a) 상기 데이터를 코드워드로서 인코딩하는 단계; (b) 메모리에 상기 코드워드를 저장하는 단계; (c) 상기 메모리로부터 상기 코드워드의 표시를 판독하는 단계; 및 (d) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하는 단계;를 포함하는 데이터 처리 방법이 제공된다.
본 발명의 제 1 기본 방법에 따라, 코드워드가 플래시 메모리와 같은 메모리에 저장된 후에, 상기 저장된 코드워드의 표시가 상기 메모리로부터 판독된다. 저장된 코드워드 판독시의 오류, 또는 상기 코드워드가 저장된 후 상기 저장된 코드워드의 비트를 변경하는 메모리의 불안정성이 일부 비트를 원래 저장된 코드워드의 비트와 상이한 것으로 판독되도록 하기 때문에, 상기 메모리로부터 판독된 것은 저장된 코드워드의 표시일 뿐이다. 그런다음, 상기 저장된 코드워드의 표시에 연관된 복수의 비트는 반복적으로 디코딩된다. 본 문맥에서, "반복 디코딩"은 일부 입력에 대한 반복적인 디코딩 알고리즘의 적어도 하나의 반복에 적용하는 것을 의미한다.
상기 저장된 코드워드의 표시에 연관된 복수의 비트는 저장된 코드워드 그 자체의 일부분 또는 모두가 될 수 있거나 또는 상기 저장된 코드워드의 일부 또는 모두를 처리한 결과의 일부 또는 모두가 될 수 있다. 예를 들면, 상기 저장된 코드워드의 표시에 연관된 복수의 비트는 예를 들면 저장된 코드워드의 표시의 일부분 또는 모두에 대한 비반복 디코딩 알고리즘을 적용함으로써, 전처리의 출력의 후속하는 반복 디코딩 준비시, 상기 저장된 코드워드의 표시의 일부분 또는 모두의 상기 전처리의 출력이 될 수 있다.
바람직하게는, 상기 메모리는 플래시 메모리이다.
바람직하게는, 상기 디코딩은 상기 저장된 코드워드의 표시가 오류이고, 상기 방법이 상기 저장된 코드워드의 표시가 오류인지 여부를 판정하는 단계를 포함하는 경우에만 실행된다. 가장 바람직하게는, 상기 저장된 코드워드의 표시에 오류가 있는지 여부에 대한 판정은, 상기 저장된 코드워드의 표시가 상기 저장된 코드워드를 포함하는 코드워드의 세트의 멤버인지를 판정하는 것을 포함하는 단계에 의해 수행된다. 상기 저장된 코드워드의 표시가 상기 세트에 포함되지 않으면, 상기 저장된 코드워드의 표시는 오류가 있는 것으로 간주된다. 상기 코드워드의 세트는 시스템적인 코드워드의 세트 또는 비시스템적인 코드워드의 세트 중 어느 하나이다.
상기 반복 디코딩은 하드 디코더 또는 소프트 디코더 중 어느 하나를 이용하여 수행된다.
바람직하게는, 상기 디코딩은 미리 정해진 기준이 만족될 때까지 반복된다. 본 발명의 하나의 실시예에서, 상기 미리정해진 기준은 반복 디코딩의 성공을 지시하는 기준이다. 가장 바람직하게는, 이러한 기준은 저장된 코드워드를 포함하는 시스템적인 코드워드 또는 비시스템적인 코드워드 중 어느 하나인 코드워드의 세트의 멤버인 반복 디코딩의 출력을 포함한다. 또 다른 성공을 위해 보다 덜 바람직한 기준은 상기 기준에 대한 입력과 동일한 반복적인 디코딩 반복의 출력을 포함한다. 대안으로, 상기 미리 정해진 기준은 상기 반복 디코딩의 실패를 지시하는 기준이다. 가장 바람직하게는, 상기 기준은 상기 반복 디코딩 알고리즘의 최대수의 반복을 포함한다.
본 발명의 제 2 기본 방법에 따라, 데이터가 코드워드로서 인코딩된다. 상기 코드워드는 메모리에 저장된다. 코드워드의 표시는 상기 메모리로부터 판독된다. 그런다음, 상기 코드워드의 표시에 연관된 복수의 비트는 반복적으로 디코딩된다. 상기 저장된 코드워드의 표시에 연관된 복수의 비트는 상기 저장된 코드워드 자체의 일부분 또는 모두이거나, 또는 상기 저장된 코드워드의 일부분 또는 모두의 처리 결과의 일부분 또는 모두가 될 수 있다.
바람직하게는, 상기 메모리는 플래시 메모리이다. 상기 데이터의 인코딩은 시스템적인 인코딩 또는 비시스템적인 인코딩 중 어느 하나이다.
본 발명의 범위는 또한 본 발명의 제 1 방법을 이용하여 코드워드를 복구하는 코드워드의 표시가 저장된 메모리의 컨트롤러, 코드워드의 표시를 저장하는 메모리와 본 발명의 컨트롤러를 포함하는 메모리 디바이스, 및 데이터를 상기 코드워드의 표시로서 저장하는 메모리 디바이스와 본 발명의 제 1 방법을 이용하여 상기 데이터를 복구하는 프로세서를 포함하는 데이터를 저장하기 위한 시스템을 포함한다.
본 발명은 첨부 도면을 참조하여 예시의 방식으로서만 본문에 기술된다.
도 1A-1D는 1 비트 플래시 셀, 2 비트 플래시 셀, 3 비트 플래시 셀, 및 4 비트 플래시 셀에서의 문턱 전압 분포를 도시한다.
도 2는 본 발명의 플래시 메모리 디바이스의 고-레벨 블록도이다.
도 3은 본 발명의 데이터 스토리지 시스템의 고-레벨 부분 블록도이다.
본 발명에 따른 플래시 메모리 디코더의 원리와 동작은 도면 및 하기의 설명을 참조하여 더 잘 이해될 것이다.
본 발명은 MBC 플래시 메모리 디바이스를 이용하는 플래시 메모리 스토리지 시스템에서 채용된 ECC에서의 반복 디코더를 이용한다. 본 발명의 방법은 하기와 같이 동작한다:
a. 사용자 데이터는 추후의 호출을 위해 저장되기 위해 본 발명의 플래시 메모리 스토리지 시스템에 대한 외부 호스트 컴퓨터에 의해 제공된다.
b. 상기 스토리지 시스템의 ECC 모듈의 인코더 부분은 오류가 발생할 수 있는 데이터에서 오류 극복을 하도록 하는 일부 추가 정보에 사용자 데이터 표시를 더한 것인 코드워드로 사용자 데이터를 인코딩한다. 일반적으로, 상기 저장된 코드워드는 원래 사용자 데이터 비트에 상기 사용자 데이터 비트에 기초하여 연산된 패리티 비트를 더한 것을 포함한다. 상기 인코딩은, 상기 코드워드를 디코딩할 수 있는 대응하는 반복 디코딩 알고리즘이 있는 한은, 당업자에 공지된 ECC를 사용하여 수행될 수 있다.
c. 상기 코드워드는 메모리 디바이스로 저장된다.
d. 상기 호스트 컴퓨터는 상기 사용자 데이터의 검색을 요청한다.
e. 상기 코드워드 비트는, 잠재적으로 상기 원래 저장된 비트에 비교하여 일부 비트에서 오류가 있는, 스토리지 셀로부터 판독된다. 상기 판독 비트는 사용자 데이터 비트와 패리티 비트 모두에 대응하는 비트를 포함한다.
f. 상기 스토리지 시스템의 ECC 모듈의 디코더 부분은 반복 디코딩 알고리즘을 이용하여 판독 비트를 디코딩한다. 실제로 상기 반복 디코더의 성공 기준이 만족될 때, 상기 사용자 데이터의 마지막 포텐셜 값(마지막 반복에 대해 생성되고, 상기 기준을 만족시키는)이 디코딩된 사용자 데이터로서 선언된다. 상기 디코딩은, 반복 디코딩 알고리즘이 상기 코드워드 생성에 사용되는 인코딩 알고리즘과 매칭하는 한은, 종래 기술에 공지된 반복 디코딩 알고리즘을 이용하여 수행된다.
g. 상기 디코딩된 사용자 데이터가 호스트 컴퓨터로 리턴된다.
h. 단계 "f"에서, 실패 기준이 만족될 때까지 상기 성공 기준이 만족되지 못하면, 상기 디코딩은 실패한 것으로 간주된다. 상기 실패 기준은 디코딩 반복의 수를 제한하거나 또는 그것이 디코딩 시간 또는 일부 기타 기준에 대한 제한이 될 수 있다. 디코딩 실패의 경우, 설계자는 오류 지시를 호스트 컴퓨터로 리턴하는 것과 오류 지시 제공없이 부정확한 데이터를 호스트 컴퓨터로 리턴하는 것 사이에서 선택한다. 상기 ECC 알고리즘이 플래시 미디어의 신뢰성 특성에 대해 적절하게 선택되면, 상기 디코딩 실패는 매우 희박해지고 무시될 수 있다.
상기 디코더에 의해 실행되는 반복 횟수는 고정된 것이 아니고, 오류의 횟수와 상기 사용자 데이터의 특정한 값 모두에 따를 수 있음에 유의해야한다. 예를 들면, 상기 반복 디코더의 하나의 호출은 상기 성공 기준을 만족시키고 정확한 디코딩된 데이터로 변환하기 전에 단지 2개의 반복만을 실행하는 반면, 동일한 디코더의 또다른 호출은, 상기 디코딩된 사용자 데이터가 양측 호출에서 동일하다고 할지라도, 동일한 결과를 산출하기 위해 15번의 반복을 실행한다. 상기는 제 1 호출이 소수의 오류를 처리하는 반면 제 2 호출은 다수의 오류를 처리해야하는 경우에 발생할 수 있다. 그러나, 상기 디코더의 2개의 호출에서 동일한 수의 오류가 있다고 하더라도, 상기 반복 횟수는 상기 사용자 데이터가 동일하지 않다면 동일할 필요가 없다.
상기 반복 디코더는 한 번의 반복 또는 전혀 반복이 없은 후에만 정지할 수 있다는 것에 유의해야한다. 예를 들면, 상기 코드워드는 일반적으로 허용된 코드워드의 세트의 멤버이다. 상기 판독 비트가 상기 세트의 멤버에 대응하면, 상기 판독 비트는 상기 판독 비트가 대응하는 코드워드로 원래 인코딩되었다고 가정되고, 더이상 디코딩은 필요없다. 상기는 디코더로의 입력이 전혀 오류를 가지지 않는 일반적인 경우이고, 상기 경우에서는 성공 기준의 테스트를 제외하고는 기타 연산을 필요로하지 않고서 상기 성공 기준이 만족된다. 실제로는, 허용된 대부분의 코드워드의 수는 항상 상기 판독 비트가 그 세트에 속하는지를 판정하기 위해 상기 허용된 코드워드 세트에 직접 비교되는 판독 비트에 비해 매우 더 크다. 대신에, 상기 판독 비트가 상기 세트에서의 멤버십과 등가인 특정한 수학적 조건을 만족하는지 여부가 체크된다. 예를 들면, 사용된 코드가 선형 코드라면, 코드워드가 될 판독 비트의 컬럼 벡터 d 에 대한 필요충분 조건은 d Hd= 0인 식을 만족하는 것이고, 여기서 H 는 사용된 코드에 종속적인 항등 매트릭스이고, 0은 0의 컬럼 벡터이며, 상기 매트릭스-벡터 곱에서의 가법은 XOR 연산이다. 판독 비트가 허용된 코드워드의 세트의 멤버에 대응하지 않는 경우, 동일한 것이 각각의 반복의 출력이 상기 세트의 멤버인지를 판정하는 것을 유지한다. 반복의 출력이 상기 세트의 멤버인 조건을 만족하는 것이 성공에 대한 기준이다.
정상적인 성공에 대한 또다른 기준은 현재 반복이 그의 입력을 변화시키지 않는 것이다. 일부 반복 디코딩 알고리즘에 대해 입력 수단에 대해 변하지 않는 모든 것은 상기 현재의 디코딩 알고리즘을 적용하기 위해 연속한 포인트에 없기 때문에, 이것은 반복의 출력이 허용된 코드워드의 세트의 멤버가 되는 것보다 덜 바람직한 기준이다.
상술한 예에서 반복 디코딩이 단일 디코딩 실행시 완전한 코드워드를 디코딩 한다고 할지라도, 본 발명은 또한 반복 디코딩이 상기 판독 비트의 하나 이상의 부분에서 활성화되는 디코더 구현을 자신의 범위 내에 포함하고, 그런다음 추가적인 로직이 상기 마지막 디코딩된 사용자 데이터로의 반복 디코딩의 하나 이상의 활성화 결과를 조합하고, 또한 아마도 상기 비반복 방법에 의해 디코딩된 코드워드의 부분들의 결과를 조합하기 위해 적용되는 것에 유의해야한다. 본 발명의 혁신은, 상기 마지막 디코딩된 사용자 데이터를 생성하기 위해 추가적인 방법이 사용되고 조합되는지 여부에 관계없이, 플래시 메모리 스토리지 시스템으로부터 데이터를 판독하는 부분으로서 반복 디코더를 사용하는 데에 있다.
상기 코드워드로부터 사용자 데이터를 복구하는 것은 오류 확률, 오류 분포, 또는 기타 정보와 같이, 판독 비트 그 자체 이외의 추가 입력에 따르며, 이는 미리 정해지거나 또는 디코딩 실행시 정해진다. 예를 들면, 설명을 위해 본문에 그 전체가 참조에 의해 통합되어 있는 Litsyn 등의 미국 특허 출원 번호 제 11/339,571을 참조하라. 본 발명은 단지 판독 비트 자체에 대해서만 작동하는 "하드" 디코더 또는 판독 비트와 오류가 있는 상기 비트의 확률의 추정치 모두에 대해 작동하는 "소프트" 디코더 중 어느 하나에서 적용가능하다. 본 발명의 혁신은, 상기 판독 비트 이외의 추가적인 입력이 상기 디코딩된 사용자 데이터를 생성하기 위해 사용되는 것에 관계없이, 플래시 메모리 스토리지 시스템으로부터의 데이터 판독의 일부로서 반복 디코더를 사용하는데에 있다.
반복 디코딩을 사용함으로써, ECC는 일반적으로 유사한 레벨의 출력 신뢰성을 위한 비반복적 디코더로 가능한 것보다 데이터에서 더 높은 수의 오류를 비용효 율적으로 보정할 수 있다. 반복적 디코더의 복잡도가 비반복적 디코더의 복잡도보다 더 높다고 하더라도, 상기 부가된 비용은 셀당 매우 큰 수의 비트를 가진 MBC 플래시 메모리 시스템의 사용을 가능하게 함으로써 용이하게 그 가치만큼의 역할을 한다. 셀당 3 또는 4 또는 그 이상의 셀당 비트수를 저장하는 상기 MBC 시스템은 SBC 또는 셀당 2비트의 MBC 스토리지 시스템보다 비트당 더 적은 비용을 제공하고, 상기 비용 감소는 용이하게 상기 반복 디코더의 추가 비용을 능가한다.
지금까지, 본 발명은 "시스템적인" 오류 보정 설계에 관해 제시하여왔다. 시스템적인 오류 보정 코딩에서, 원 데이터 비트는 상기 인코딩 프로세스에 의해 보존되며, 저장된 비트내에서 식별될 수 있다. 즉, 오류 보정 메커니즘은 원 데이터 비트를 취하고, 상기 비트에 일정한 패리티 비트를 추가하고, 데이터 비트와 패리티 비트 모두를 저장한다. 추후에, 상기 저장된 비트 판독시, 데이터 비트와 패리티 비트 모두가 판독되고, 상기 패리티 비트는 상기 판독된 데이터 비트에서의 오류 보정을 가능하게 하고, 따라서 원 데이터 비트를 재생성한다.
그러나, 본 발명은 동일하게 비시스템적인 오류 보정 코드에 적용가능하다. 상기 코드에서, 원 데이터 비트는 보존되지 않고 저장되지도 않는다. 대신에, 상기 인코딩 프로세스가 원 데이터 비트를 실제 저장된 비트(본문에서는 "보호된 데이터 비트"라고 하는)인 더 큰 그룹의 비트로 변환시킨다. 보호된 데이터 비트에 오류가 있을지라도, 상기 저장된 보호된 데이터 비트 판독시, 원 데이터 비트가 재생성된다. 비시스템적인 코드 특성의 정의는 특정한 원 데이터 비트와 특정한 저장된 비트 사이의 직접적 대응이 없다는 것이다. 원 데이터 비트는 다중 저장된 비트에서 "분산"되고, 상기 다중 저장된 비트의 조합만이 원 비트의 값을 나타낸다.
다시 도면을 참조하면, 도 2는 호스트(30)에 결합된 본 발명의 플래시 메모리 디바이스(20)의 고레벨 블록도이다. 도 2는 본문에 설명의 목적으로 참조에 의해 통합된 Ban의 미국특허 제 5,404,485의 도 1로부터 적용된다. 플래시 메모리 디바이스(20)는 플래시 메모리(24), 컨트롤러(22) 및 RAM(26)을 포함한다. 미국 특허 5,404,485의 "플래시 제어(14)"에 대응하는 컨트롤러(22)는 미국특허 5,404,485에 기술된 바와 같은 RAM(26)의 보조로 플래시 메모리(24)를 유지관리한다. 플래시 메모리(24)는 미국특허 6,522,580 또는 미국 특허 6,643,188에 기술된 바와 같이, 시스템적인 코드워드로서 또는 비시스템적인 코드워드로서 플래시 메모리(24)의 셀당 2이상의 비트인, 데이터를 인코딩한다. 상기 데이터 판독시, 컨트롤러(22)는 상술한 바와 같이 오류 보정을 적용한다.
도 3은 본 발명의 대안의 데이터 스토리지 시스템(50)의 고레벨 부분 블록도이다. 데이터 스토리지 시스템(50)은 프로세서(52) 및 4개의 메모리 디바이스인, RAM(54), 부트 ROM(56), 대용량 스토리지 디바이스(하드 디스크)(58) 및 플래시 메모리 디바이스(40)를 포함하고, 모두 공통 버스(60)를 통해 통신한다. 플래시 메모리 디바이스(20)와 유사하게, 플래시 메모리 디바이스(40)는 플래시 메모리(42)를 포함한다. 플래시 메모리 디바이스(20)와 달리, 플래시 메모리 디바이스(40)는 자신의 컨트롤러와 RAM이 없다. 대신에, 프로세스(52)가 예를 들면 이스라엘 크파 사바의 M-Systems Flash Disk Pioneers Ltd.의 TrueFFS™ 드라이버의 방식으로 미국특허 5,404,485의 방법을 구현하는 소프트웨어 드라이버를 실행함으로써 컨트롤러(22)를 에뮬레이팅한다. 플래시 메모리(42)는 미국특허 6,522,580 또는 미국 특허 6,643,188에 기술된 바와 같이, 시스템적인 코드워드로서 또는 비시스템적인 코드워드로서 플래시 메모리(42)의 셀당 2이상의 비트인, 데이터를 인코딩한다. 상기 데이터 판독시, 프로세서(52)는 상술한 바와 같이 오류 보정을 적용한다. 플래시 메모리 디바이스(40)는 또한 프로세서(52)로 하여금 플래시 메모리(42)와 통신할 수 있도록 하는 버스 인터페이스(44)를 포함한다.
프로세서(52)가 플래시 메모리(42)를 유지관리하기 위해 실행하는 소프트웨어 드라이버의 코드는 대용량 스토리지 디바이스(58)에 저장되고, 실행을 위해 RAM(54)으로 전송된다. 대용량 스토리지 디바이스(58)는 따라서 본 발명의 원리에 따라 플래시 메모리(42)를 유지관리하기 위한 내장된 컴퓨터 판독가능 코드인 컴퓨터-판독가능 코드 스토리지 매체의 예이다.
본 발명이 제한된 수의 실시예에 대해 기술되었지만, 본 발명의 다수의 변형, 변조, 및 기타 적용이 이루어질 수 있음이 이해될 것이다. 본 발명의 범위는 상술한 바와 같이 MBC 플래시 메모리 디바이스로부터 데이터 비트를 판독하기 위한 방법을 포함한다. 본 발명의 범위는 또한 본 발명의 방법 중 하나를 이용하여 메모리에 저장된 데이터를 복구하는 MBC 메모리용 컨트롤러, MBC 메모리, 및 본 발명의 컨트롤러를 포함하는 메모리 디바이스, 및 본 발명의 방법 중 하나에 따라 메모리를 유지관리하기 위한 컴퓨터판독가능한 코드를 내장한 컴퓨터 판독가능한 스토리지 매체를 포함한다.
추가로, 본 발명의 주된 의도의 애플리케이션이 MBC 플래시 메모리에 대한 것 일지라도, 본 발명은 또한 SBC 플래시 메모리, 또는 실제로는 플래시 기술 또는 기타 기술에 기반을 두고, 비휘발성 또는 휘발성인, 메모리에 일반적으로 적용가능하다는 것이 이해될 것이다.
본 발명이 제한된 수의 실시예에 대해 기술되었지만, 본 발명의 다수의 변형, 변조, 및 기타 적용이 이루어질 수 있음이 이해될 것이다.

Claims (27)

  1. 저장된 코드워드의 표시를 처리하는 방법으로서,
    (a) 저장된 코드워드가 저장된 메모리로부터 상기 저장된 코드워드의 표시를 판독하는 단계; 및
    (b) 상기 저장된 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하는 단계;를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 복수의 비트는 상기 저장된 코드워드의 표시의 적어도 일부인 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 복수의 비트는 상기 저장된 코드워드의 표시의 적어도 일부분을 처리한 것의 출력의 적어도 일부인 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서,
    상기 메모리는 플래시 메모리인 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서, 상기 디코딩은 상기 저장된 코드워드의 표시가 오류인 경 우에만 수행되고,
    (c) 상기 저장된 코드워드의 표시가 오류인지를 판정하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 5항에 있어서,
    상기 판정단계는, 상기 저장된 코드워드의 표시가 상기 저장된 코드워드를 포함하는 코드워드의 세트의 멤버인지를 판정하는 것을 포함하는 단계에 의해 수행되는 것을 특징으로 하는 방법.
  7. 제 6 항에 있어서,
    상기 코드워드의 세트는 시스템적인 코드워드의 세트인 것을 특징으로 하는 방법.
  8. 제 6 항에 있어서,
    상기 코드워드의 세트는 비시스템적인 코드워드의 세트인 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서,
    상기 반복 디코딩은 하드 디코더를 이용하여 수행되는 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서,
    상기 반복 디코딩은 소프트 디코더를 이용하여 수행되는 것을 특징으로 하는 방법.
  11. 제 1 항에 있어서,
    상기 반복 디코딩은 미리정해진 기준이 만족될 때까지 반복되는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 미리정해진 기준은 상기 반복 디코딩의 성공을 지시하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서,
    상기 미리정해진 기준은 상기 저장된 코드워드를 포함하는 코드워드의 세트의 멤버인 상기 반복 디코딩의 출력을 포함하는 것을 특징으로 하는 방법.
  14. 제 13 항에 있어서,
    상기 세트는 시스템적인 코드워드의 세트인 것을 특징으로 하는 방법.
  15. 제 13 항에 있어서,
    상기 세트는 비시스템적인 코드워드의 세트인 것을 특징으로 하는 방법.
  16. 제 12 항에 있어서,
    상기 미리 정해진 기준은 상기 반복의 입력과 동일한 상기 반복 디코딩의 반복의 출력을 포함하는 것을 특징으로 하는 방법.
  17. 제 11 항에 있어서,
    상기 미리정해진 기준은 상기 반복 디코딩의 실패를 지시하는 것을 특징으로 하는 방법.
  18. 제 17 항에 있어서,
    상기 미리정해진 기준은 최대수의 반복을 포함하는 것을 특징으로 하는 방법.
  19. 코드워드의 표시가 저장된 메모리의 컨트롤러로서, 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하는 것을 특징으로 하는 컨트롤러.
  20. (a) 코드워드의 표시를 저장하는 메모리; 및
    (b) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하는 컨트롤러;를 포함하는 것을 특징으로 하는 메모리 디바이스.
  21. (a) 코드워드의 표시로서 데이터를 저장하는 메모리 디바이스; 및
    (b) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하는 프로세서;를 포함하는 것을 특징으로 하는 데이터 저장을 위한 시스템.
  22. (a) 데이터를 코드워드로서 인코딩하는 단계;
    (b) 메모리에 상기 코드워드를 저장하는 단계;
    (c) 상기 메모리로부터 상기 코드워드의 표시를 판독하는 단계; 및
    (d) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하는 단계;를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  23. 제 22 항에 있어서,
    상기 복수의 비트는 상기 코드워드의 표시의 적어도 일부인 것을 특징으로 하는 데이터 처리 방법.
  24. 제 22 항에 있어서,
    상기 복수의 비트는 상기 코드워드의 표시의 적어도 일부의 처리의 출력의 적어도 일부인 것을 특징으로 하는 데이터 처리 방법.
  25. 제 22 항에 있어서,
    상기 메모리는 플래시 메모리인 것을 특징으로 하는 데이터 처리 방법.
  26. 제 22 항에 있어서,
    상기 인코딩은 시스템적인 인코딩인 것을 특징으로 하는 데이터 처리 방법.
  27. 제 22 항에 있어서,
    상기 인코딩은 비시스템적인 인코딩인 것을 특징으로 하는 데이터 처리 방법.
KR1020097002147A 2006-07-04 2007-07-04 셀 당 멀티­비트인 플래시 메모리에서의 오류 보정 방법 KR101422050B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US80653406P 2006-07-04 2006-07-04
US60/806,534 2006-07-04
US11/607,945 2006-12-04
US11/607,945 US7533328B2 (en) 2006-07-04 2006-12-04 Method of error correction in a multi-bit-per-cell flash memory
PCT/IL2007/000830 WO2008004226A2 (en) 2006-07-04 2007-07-04 Method of error correction in a multi-bit-per-cell flash memory

Publications (2)

Publication Number Publication Date
KR20090035571A true KR20090035571A (ko) 2009-04-09
KR101422050B1 KR101422050B1 (ko) 2014-07-23

Family

ID=38894988

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097002147A KR101422050B1 (ko) 2006-07-04 2007-07-04 셀 당 멀티­비트인 플래시 메모리에서의 오류 보정 방법

Country Status (4)

Country Link
US (1) US7533328B2 (ko)
KR (1) KR101422050B1 (ko)
TW (1) TWI350449B (ko)
WO (1) WO2008004226A2 (ko)

Families Citing this family (116)

* 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
US7904783B2 (en) * 2006-09-28 2011-03-08 Sandisk Corporation Soft-input soft-output decoder for nonvolatile memory
US7818653B2 (en) 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
US7805663B2 (en) * 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of 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
KR100822030B1 (ko) * 2006-12-26 2008-04-15 삼성전자주식회사 고 부호화율 부호를 이용한 멀티 레벨 셀 메모리 장치
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US7975209B2 (en) * 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US7971127B2 (en) * 2007-03-31 2011-06-28 Sandisk Technologies Inc. Guided simulated annealing in non-volatile memory error correction control
US7966546B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Non-volatile memory with soft bit data transmission for error correction control
US7966550B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
US8261170B2 (en) * 2007-06-19 2012-09-04 Mitsubishi Electric Research Laboratories, Inc. Multi-stage decoder for error-correcting codes
US8290060B2 (en) * 2007-08-21 2012-10-16 Limberg Allen Leroy Staggercasting of DTV signals that employ concatenated convolutional coding
WO2009037697A2 (en) * 2007-09-20 2009-03-26 Densbits Technologies Ltd. Improved systems and methods for determining logical values of coupled flash memory cells
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009053961A2 (en) 2007-10-25 2009-04-30 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
WO2009072102A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
US8607128B2 (en) * 2007-12-05 2013-12-10 Densbits Technologies Ltd. Low power chien-search based BCH/RS decoding system for flash memory, mobile communications devices and other applications
WO2009072103A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
WO2009074979A2 (en) * 2007-12-12 2009-06-18 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
WO2009078006A2 (en) 2007-12-18 2009-06-25 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
US8972472B2 (en) * 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
US8671327B2 (en) 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
EP2335245B1 (en) * 2008-09-28 2015-01-07 Ramot at Tel-Aviv University Ltd. Method and system for adaptive coding in flash memories
US8127091B2 (en) * 2008-10-30 2012-02-28 Micron Technology, Inc. Programming memory cells with additional data for increased threshold voltage resolution
US7995387B2 (en) * 2009-01-30 2011-08-09 Sandisk Il Ltd. System and method to read data subject to a disturb condition
US8374026B2 (en) * 2009-01-30 2013-02-12 Sandisk Il Ltd. System and method of reading data using a reliability measure
US8023345B2 (en) * 2009-02-24 2011-09-20 International Business Machines Corporation Iteratively writing contents to memory locations using a statistical model
US8166368B2 (en) * 2009-02-24 2012-04-24 International Business Machines Corporation Writing a special symbol to a memory to indicate the absence of a data signal
US8458114B2 (en) * 2009-03-02 2013-06-04 Analog Devices, Inc. Analog computation using numerical representations with uncertainty
US8107306B2 (en) * 2009-03-27 2012-01-31 Analog Devices, Inc. Storage devices with soft processing
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8305812B2 (en) * 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
US8230276B2 (en) * 2009-09-28 2012-07-24 International Business Machines Corporation Writing to memory using adaptive write techniques
US8386739B2 (en) * 2009-09-28 2013-02-26 International Business Machines Corporation Writing to memory using shared address buses
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US8626988B2 (en) * 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8607124B2 (en) * 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
US8429468B2 (en) * 2010-01-27 2013-04-23 Sandisk Technologies Inc. System and method to correct data errors using a stored count of bit values
US8341502B2 (en) * 2010-02-28 2012-12-25 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8463985B2 (en) 2010-03-31 2013-06-11 International Business Machines Corporation Constrained coding to reduce floating gate coupling in non-volatile memories
US8516274B2 (en) 2010-04-06 2013-08-20 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US9021177B2 (en) 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
KR101650123B1 (ko) 2010-05-18 2016-08-24 삼성전자주식회사 페이지-기반 반복 복호 구조를 갖는 메모리 시스템 및 그것의 페이지-기반 반복 복호 방법
US8578246B2 (en) * 2010-05-31 2013-11-05 International Business Machines Corporation Data encoding in solid-state storage devices
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8468431B2 (en) 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US20120008414A1 (en) 2010-07-06 2012-01-12 Michael Katz Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8508995B2 (en) 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories
GB2498298B (en) * 2010-09-29 2017-03-22 Ibm Decoding in solid state memory devices
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US10079068B2 (en) 2011-02-23 2018-09-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Devices and method for wear estimation based memory management
US8693258B2 (en) 2011-03-17 2014-04-08 Densbits Technologies Ltd. Obtaining soft information using a hard interface
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
US9270297B2 (en) 2011-07-31 2016-02-23 SanDisk Technologies, Inc. Error-correction decoding with reduced memory and power requirements
US8588003B1 (en) 2011-08-01 2013-11-19 Densbits Technologies Ltd. System, method and computer program product for programming and for recovering from a power failure
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
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
DE112012003458B4 (de) 2011-09-29 2016-04-07 International Business Machines Corporation Leseerkennung in Halbleiter-Speichereinheiten
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US8924834B2 (en) * 2012-09-26 2014-12-30 Wisconsin Alumni Research Foundation Error correction circuit for data communication providing parallelizable linear programming decoding
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9407290B2 (en) 2013-03-15 2016-08-02 Sandisk Technologies Llc Error-correction decoding with conditional limiting of check-node messages
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
KR102149668B1 (ko) 2014-04-22 2020-08-31 삼성전자주식회사 비휘발성 메모리 장치의 데이터 디코딩 방법
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9984768B2 (en) 2014-10-20 2018-05-29 Sandisk Technologies Llc Distributing storage of ECC code words
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US9406377B2 (en) 2014-12-08 2016-08-02 Sandisk Technologies Llc Rewritable multibit non-volatile memory with soft decode optimization
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
CN109714061B (zh) * 2017-10-25 2023-04-14 中兴通讯股份有限公司 一种Turbo乘积码的译码方法、装置和计算机可读存储介质
US10304550B1 (en) 2017-11-29 2019-05-28 Sandisk Technologies Llc Sense amplifier with negative threshold sensing for non-volatile memory
US10643695B1 (en) 2019-01-10 2020-05-05 Sandisk Technologies Llc Concurrent multi-state program verify for non-volatile memory
US11024392B1 (en) 2019-12-23 2021-06-01 Sandisk Technologies Llc Sense amplifier for bidirectional sensing of memory cells of a non-volatile memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US6598204B1 (en) * 1999-02-18 2003-07-22 Imec Vzw System and method of turbo decoding
US6614858B1 (en) * 2000-02-17 2003-09-02 Agere Systems Inc. Limiting range of extrinsic information for iterative decoding
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6885711B2 (en) * 2001-06-27 2005-04-26 Qualcomm Inc Turbo decoder with multiple scale selections
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system

Also Published As

Publication number Publication date
TWI350449B (en) 2011-10-11
WO2008004226A2 (en) 2008-01-10
US20080010581A1 (en) 2008-01-10
US7533328B2 (en) 2009-05-12
KR101422050B1 (ko) 2014-07-23
TW200811651A (en) 2008-03-01
WO2008004226A3 (en) 2009-05-07

Similar Documents

Publication Publication Date Title
KR101422050B1 (ko) 셀 당 멀티­비트인 플래시 메모리에서의 오류 보정 방법
KR101738173B1 (ko) 플래시 메모리에서의 적응형 코딩 방법 및 시스템
KR101438072B1 (ko) 소거 없는 플래시 메모리의 다중 프로그래밍
US9294132B1 (en) Dual-stage data decoding for non-volatile memories
US9397701B1 (en) System and method for lifetime specific LDPC decoding
US8984376B1 (en) System and method for avoiding error mechanisms in layered iterative decoding
EP1999591B1 (en) Multi-bit-per-cell flash memory device with non-bijective mapping
US9576671B2 (en) Calibrating optimal read levels
US9235488B2 (en) System and method for random noise generation
US9235467B2 (en) System and method with reference voltage partitioning for low density parity check decoding
US8788905B2 (en) Flash memory device error correction code controllers and related methods and memory systems
US8990661B1 (en) Layer specific attenuation factor LDPC decoder
US8671327B2 (en) Method and system for adaptive coding in flash memories
US9189322B2 (en) Memory system
US20080151617A1 (en) Soft decoding of hard and soft bits read from a flash memory
US20110093652A1 (en) Multi-bit-per-cell flash memory device with non-bijective mapping
US9553612B2 (en) Decoding based on randomized hard decisions
JP6957392B2 (ja) メモリシステム
US10157097B2 (en) Redundant bytes utilization in error correction code
US20150317203A1 (en) Code-Based Read Control for Data Storage Devices
US11204831B2 (en) Memory system
IL196239A (en) Method of error correction in a multi-bit-per-cell flash memory
US10628259B2 (en) Bit determining method, memory control circuit unit and memory storage device
US20210089393A1 (en) Memory system and method for controlling nonvolatile memory
KR102530269B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법

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
LAPS Lapse due to unpaid annual fee