KR20090035571A - 멀티비트셀 플래시 메모리에서의 오류 보정 방법 - Google Patents
멀티비트셀 플래시 메모리에서의 오류 보정 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1072—Adding 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking 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
본 발명은 디지털 데이터의 오류 보정에 관한 것으로, 특히 셀당 다수의 비트를 저장하는 플래시 메모리 디바이스를 위한 오류 보정 방법에 관한 것이다.
플래시 메모리 디바이스는 수년 동안 공지되어 왔다. 전형적으로, 플래시 메모리 내의 각각의 셀은 한 비트의 정보를 저장한다. 전통적으로, 한 비트를 저장하는 방법은 한 상태는 논리값 "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)
- 저장된 코드워드의 표시를 처리하는 방법으로서,(a) 저장된 코드워드가 저장된 메모리로부터 상기 저장된 코드워드의 표시를 판독하는 단계; 및(b) 상기 저장된 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하는 단계;를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 복수의 비트는 상기 저장된 코드워드의 표시의 적어도 일부인 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 복수의 비트는 상기 저장된 코드워드의 표시의 적어도 일부분을 처리한 것의 출력의 적어도 일부인 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 메모리는 플래시 메모리인 것을 특징으로 하는 방법.
- 제 1 항에 있어서, 상기 디코딩은 상기 저장된 코드워드의 표시가 오류인 경 우에만 수행되고,(c) 상기 저장된 코드워드의 표시가 오류인지를 판정하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
- 제 5항에 있어서,상기 판정단계는, 상기 저장된 코드워드의 표시가 상기 저장된 코드워드를 포함하는 코드워드의 세트의 멤버인지를 판정하는 것을 포함하는 단계에 의해 수행되는 것을 특징으로 하는 방법.
- 제 6 항에 있어서,상기 코드워드의 세트는 시스템적인 코드워드의 세트인 것을 특징으로 하는 방법.
- 제 6 항에 있어서,상기 코드워드의 세트는 비시스템적인 코드워드의 세트인 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 반복 디코딩은 하드 디코더를 이용하여 수행되는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 반복 디코딩은 소프트 디코더를 이용하여 수행되는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 반복 디코딩은 미리정해진 기준이 만족될 때까지 반복되는 것을 특징으로 하는 방법.
- 제 11 항에 있어서,상기 미리정해진 기준은 상기 반복 디코딩의 성공을 지시하는 것을 특징으로 하는 방법.
- 제 12 항에 있어서,상기 미리정해진 기준은 상기 저장된 코드워드를 포함하는 코드워드의 세트의 멤버인 상기 반복 디코딩의 출력을 포함하는 것을 특징으로 하는 방법.
- 제 13 항에 있어서,상기 세트는 시스템적인 코드워드의 세트인 것을 특징으로 하는 방법.
- 제 13 항에 있어서,상기 세트는 비시스템적인 코드워드의 세트인 것을 특징으로 하는 방법.
- 제 12 항에 있어서,상기 미리 정해진 기준은 상기 반복의 입력과 동일한 상기 반복 디코딩의 반복의 출력을 포함하는 것을 특징으로 하는 방법.
- 제 11 항에 있어서,상기 미리정해진 기준은 상기 반복 디코딩의 실패를 지시하는 것을 특징으로 하는 방법.
- 제 17 항에 있어서,상기 미리정해진 기준은 최대수의 반복을 포함하는 것을 특징으로 하는 방법.
- 코드워드의 표시가 저장된 메모리의 컨트롤러로서, 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하는 것을 특징으로 하는 컨트롤러.
- (a) 코드워드의 표시를 저장하는 메모리; 및(b) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하는 컨트롤러;를 포함하는 것을 특징으로 하는 메모리 디바이스.
- (a) 코드워드의 표시로서 데이터를 저장하는 메모리 디바이스; 및(b) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하도록 동작하는 프로세서;를 포함하는 것을 특징으로 하는 데이터 저장을 위한 시스템.
- (a) 데이터를 코드워드로서 인코딩하는 단계;(b) 메모리에 상기 코드워드를 저장하는 단계;(c) 상기 메모리로부터 상기 코드워드의 표시를 판독하는 단계; 및(d) 상기 코드워드의 표시에 연관된 복수의 비트를 반복적으로 디코딩하는 단계;를 포함하는 것을 특징으로 하는 데이터 처리 방법.
- 제 22 항에 있어서,상기 복수의 비트는 상기 코드워드의 표시의 적어도 일부인 것을 특징으로 하는 데이터 처리 방법.
- 제 22 항에 있어서,상기 복수의 비트는 상기 코드워드의 표시의 적어도 일부의 처리의 출력의 적어도 일부인 것을 특징으로 하는 데이터 처리 방법.
- 제 22 항에 있어서,상기 메모리는 플래시 메모리인 것을 특징으로 하는 데이터 처리 방법.
- 제 22 항에 있어서,상기 인코딩은 시스템적인 인코딩인 것을 특징으로 하는 데이터 처리 방법.
- 제 22 항에 있어서,상기 인코딩은 비시스템적인 인코딩인 것을 특징으로 하는 데이터 처리 방법.
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)
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)
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 |
-
2006
- 2006-12-04 US US11/607,945 patent/US7533328B2/en not_active Expired - Fee Related
-
2007
- 2007-07-03 TW TW096124174A patent/TWI350449B/zh not_active IP Right Cessation
- 2007-07-04 KR KR1020097002147A patent/KR101422050B1/ko not_active IP Right Cessation
- 2007-07-04 WO PCT/IL2007/000830 patent/WO2008004226A2/en active Application Filing
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 |