KR101738173B1 - 플래시 메모리에서의 적응형 코딩 방법 및 시스템 - Google Patents

플래시 메모리에서의 적응형 코딩 방법 및 시스템 Download PDF

Info

Publication number
KR101738173B1
KR101738173B1 KR1020117009232A KR20117009232A KR101738173B1 KR 101738173 B1 KR101738173 B1 KR 101738173B1 KR 1020117009232 A KR1020117009232 A KR 1020117009232A KR 20117009232 A KR20117009232 A KR 20117009232A KR 101738173 B1 KR101738173 B1 KR 101738173B1
Authority
KR
South Korea
Prior art keywords
memory cell
bit
value
physical parameter
memory
Prior art date
Application number
KR1020117009232A
Other languages
English (en)
Other versions
KR20110081822A (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 KR20110081822A publication Critical patent/KR20110081822A/ko
Application granted granted Critical
Publication of KR101738173B1 publication Critical patent/KR101738173B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/5628Programming or writing circuits; Data input circuits
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

비트는 그 비트의 일부분을 표현하기 위해 셀의 파라미터 값을 설정하고자 시도함으로써 저장된다. 이러한 시도에 따라, 값 범위에 대한 그 비트의 적응형 맵핑이 제공되고, 값은 그 맵핑에 따라 필요할 때 조절된다. 또는, 셀에 비트를 저장하기 위해, 값 범위의 소정의 세트에 대한 그 비트의 디폴트 맵핑이 제공되고, 그에 따라 셀 값을 설정하고자 하는 시도가 이루어진다. 하나의 셀에 대하여, 그 시도가 바람직한 범위가 접근불가능하도록 그 값을 설정한다면, 바람직한 범위가 접근가능하도록 하는 적응형 맵핑이 제공된다. 또는, 셀에 비트를 저장하기 위해, 범위의 소정의 세트에 대한 그 비트의 몇가지 맵핑이 제공된다. 하나의 맵핑에 따라 셀 값을 설정하고자 하는 시도에 응답하여, 실제로 사용하기 위한 맵핑이 선택된다.

Description

플래시 메모리에서의 적응형 코딩 방법 및 시스템{METHOD AND SYSTEM FOR ADAPTIVE CODING IN FLASH MEMORIES}
본 발명은 플래시 메모리와 같은 컴퓨터 메모리에 데이터를 저장하는 것에 관한 것이고, 더욱 상세하게는 데이터를 저장하는 셀이 소수의 "배드" 셀을 포함할 수 있게 하는 방법으로 컴퓨터 메모리에 데이터를 저장하는 방법에 관한 것이다.
플래시 메모리 디바이스는 수년동안 주지되어 왔다. 전형적으로, 플래시 메모리 내의 각각의 메모리 셀은 하나의 정보 비트를 저장한다. 플래시 메모리 셀에 하나의 비트를 저장하는 전통적인 방법은 셀의 2개의 상태를 지원하는 것이다. 하나의 상태는 논리적 "0"을 나타내고, 다른 상태는 논리적 "1"을 나타낸다. 플래시 메모리 셀에서, 두 상태는 셀의 채널 위의 플로팅 게이트(셀의 트랜지스터의 소스 및 드레인 엘리먼트를 연결하는 영역)를 가지고, 플로팅 게이트 내에 저장된 전하의 양에 대한 2개의 유효 상태를 가짐으로써 구현될 수 있다. 전형적으로, 하나의 상태는 플로팅 게이트에 (통상적으로 "1" 상태를 나타내도록 정의된) 0 전하를 가지고 삭제된 후 그 셀의 기록되지 않은 상태이고, 다른 상태는 플로팅 게이트에 (통상적으로 "0" 상태를 나타내도록 정의된) 일정양의 음의 전하을 가진다. 음의 전하는 임계 전압이 "0"의 상태를 나타내기 위해 충분히 높아질 때까지 플로팅 게이트에 셀의 산화물 층을 통해 셀의 실리콘 기판으로부터 전자를 주입하기 위해 셀에 전압 펄스를 인가함으로써 플로팅 게이트에 부과될 수 있다. 게이트 내에 음의 전하를 가지는 것은 그 셀의 트랜지스터의 임계 전압(즉, 트랜지스터를 통전시키기 위해 트랜지스터의 컨트롤 게이트에 인가되어야 하는 전압)을 증가시킨다. 그 셀의 임계 전압을 확인함으로써 저장된 비트를 판독하는 것이 가능하다. 임계 전압이 높은 상태이면, 비트 값은 "0"이고, 임계 전압이 낮은 상태이면, 비트 값은 "1"이다. 실제로 그 셀의 임계 전압을 정밀하게 판독할 필요는 없다. 이러한 목적으로, 두 상태 사이에 있는 기준 전압과 그 셀의 임계 전압을 비교하고 그 셀의 임계 전압이 기준 값보다 큰지 작은지를 판정하는 것으로 충분하다.
도 1a(종래 기술)는 이러한 동작 방법을 도식적으로 보여준다. 도 1a는 대다수의 셀의 임계전압의 분포를 도시한다. 플래시 메모리 내의 셀이 (예컨대, 실리콘 구조의 결함 또는 불순물 농도의 작은 편차로 인해) 그 특성 및 행동이 정확하게 일치하지 않기 때문에, 모든 셀에 동일한 기록 오퍼레이션을 적용하는 것은 모든 셀이 동일한 임계 전압을 정확하게 가지게 하지 못한다. 그 대신, 임계 전압은 도 1a에 도시된 바와 같이 분포된다. "1"의 값을 저장하는 셀은 전형적으로 음의 임계 전압을 가지고, 대부분의 셀이 도 1a의 (1이 라벨링된) 좌측 피크의 중심 전압 값에 근접하고, 소수의 셀이 좌측 피크의 중심 전압보다 더 낮거나 더 높은 임계 전압을 가진다. 이와 유사하게, "0"의 값을 저장하는 셀은 전형적으로 양의 임계 전압을 가지고, 대부분의 셀이 도 1a의 (0이 라벨링된) 우측 피크의 중심 전압 값에 근접하고, 소수의 셀이 우측 피크의 중심 전압보다 더 낮거나 더 높은 임계 전압을 가진다.
역사적으로, 플래시 메모리 셀에 데이터를 저장하는 것은 플래시 셀을 "프로그래밍"한다고도 한다. 용어 "기록한다" 및 "프로그래밍한다"는 본 명세서에서 상호치환가능하게 사용된다.
최근에, "멀티 레벨 셀"(MLC)을 사용하는 새로운 종류의 플래시 디바이스가 시중에 등장하였다. 용어 "멀티-레벨-셀"은 셀당 하나의 비트를 가지는 플래시 메모리가 복수의, 즉 상기 서술된 바와 같이 2개의 레벨을 가지므로 오해를 일으킨다. 그러므로, 용어 "단일 비트 셀"(SBC)은 이하 2 레벨의 메모리 셀을 나타내기 위해 사용되고, "멀티-비트 셀"(MBC)은 이하 2 이상의 레벨의, 즉 셀당 하나 이상의 비트인, 메모리 셀을 나타내기 위해 사용된다. 본 명세서에 기재된 기술은 셀당 2비트를 가진 MBC 플래시 메모리를 참조하여 서술된다. 그러나, 본 명세서에 기재된 기술은 셀당 2이상의 비트를 지원하는 플래시 메모리 디바이스에도 동등하게 적용가능함을 이해해야 한다.
2개의 정보 비트를 저장하는 하나의 MBC 셀은 4개의 상이한 상태 중 하나이다. 셀의 "상태"는 셀의 임계 전압에 의해 표현되므로, MBC 셀은 셀의 임계 전압을 위해 4개의 상이한 유효 범위를 지원한다. 도 1b(종래기술)는 셀당 2비트의 전형적인 MBC 셀에 대한 임계 전압 분포를 보여준다. 예상되는 바와 같이, 도 1b는 4개의 피크를 가지고, 각각의 피크는 하나의 상태에 대응한다. SBC의 경우와 마찬가지로, 각각의 상태는 실제로 전압 범위이고, 하나의 전압이 아니다. 셀의 내용을 판독할 때, 셀의 임계 전압은 한정된 전압 범위 내에 정확하게 식별되어야 한다.
MBC 플래시 셀의 프로그래밍은 풀 프루프(fool proof)하지 않다. 예컨대, 10개의 이진수 11, 01, 11, 01, 11, 00, 10, 00, 10, 00가 10개의 MBC 셀에 어떻게 저장되는지 고려해보자. 비트 패턴에 대한 임계 전압의 맵핑은 도 1b에 도시된 바와 같다.
Figure 112011030140587-pct00001
최대 유효 비트(1010101010)는 제2, 제4, 제6, 제8, 및 제10 셀을 1V-2V 임계 전압 대역으로 프로그래밍함으로써 저장된다. 최소 유효 비트(111111000000)는 제6, 제8, 및 제10 셀을 >2V 임계 전압 대역으로 프로그래밍하고, 제7, 및 제9 셀을 0V-1V 임계 전압 대역으로 프로그래밍함으로써 저장된다. 프로그래밍 편차, 프로그램 교란 및 교차 커플링과 같은, 최대 유효 비트의 프로그래밍 동안, 그리고 최대 유효 비트의 프로그래밍과 최소 유효 비트의 프로그래밍 사이의, 물리적 영향은, 예컨대, 제2 셀이 최소 유효 비트가 프로그래밍되기 전에 >2V 대역내에 우연히(inadvertently) 놓여질 수 있게 할 수 있고, 그로 인해 제2 셀은 프로그래밍 오퍼레이션이 셀의 임계 전압을 증가만 시키기 때문에 그 셀을 삭제하지 않고 다시 시작하지 않고서는 원하는 "01" 비트 패턴을 저장할 수 없게 만들 수 있다. 그러나, 플래시 메모리 셀은 셀의 전체 블록이 한번에 삭제되어야 하고, 소수의 셀 내의 에러를 보정하기 위해 전체 블록의 셀을 삭제하는 것은 현실적이지 못하다.
그 셀의 원하는 최종 상태가 그 셀을 삭제하지 않고는 추가적인 프로그래밍에 의해 도달될 수 없는, 플래시 메모리 셀이 프로그래밍 동안 중간 상태에 놓여 있는 이러한 종류의 에러는 본 명세서에서 그 셀을 "오버프로그래밍한다"고 한다. 이러한 오버프로그래밍을 겪은 셀은 본 명세서에서 "오버프로그래밍된" 셀이라 한다.
오버프로그래밍은 MBC 플래시 셀이 풀 프루프하지 않은 것이 유일한 이유는 아니다. 다수의 프로그래밍 및 삭제 사이클의 마모 및 찢김 이후, 플래시 셀은 하나의 임계 전압 상태로 영구적으로 갇힐 수 있다. 예를 들어, (상기 표에 따라 "11"을 저장하는) 삭제된 상태인 셀의 컨디션은 프로그래밍이 그 셀을 삭제 상태로부터 변하게 할 수 없고, 또는 (상기 표에 따라 "00"을 저장하는) 그 가장 많이 프로그래밍된 상태인 셀의 컨디션은 삭제하는 것이 그 셀을 가장 많이 프로그래밍된 상태로부터 변하게 할 수 없다.
이러한 종류의 문제는 데이터를 저장하는 대신에 코드워드로 저장되도록 그 데이터를 인코딩함으로써 해결되는 것이 일반적이고, 이러한 인코딩은 이러한 프로그래밍 에러 및 시간이 흐름에 따른 임계 전압의 드리프트와 같은 후속적인 에러를 모두 극복할 만큼 충분히 강력할 것으로 기대된다.
GF (2 t+1 )에 대한 튜토리얼
아래에 서술된 하나의 방법은 갈루아 필드(Galois field), GF(2t+1)를 기초로 한다.
GF(2t+1)는 덧셈, 곱셈, 및 나눗셈의 잘 정의된 오퍼레이션을 가진 2t+1 항의 세트이다. 이 필드 내의 항은 길이 t+1의 이진 백터로 표현될 수 있다. 대안으로서, 이 필드 항은 덧셈, 곱셈, 및 나눗셈의 잘 정의된 오퍼레이션을 가진, 최대 t차의 이진 다항식으로 표현될 수 있다.
GF(2t+1)의 각각의 항은 아래와 같은 방식으로 GF(2)에 걸쳐 t+1 좌표의 백터와 연관되고, 최대 t차의 다항식과 연관된다.
Figure 112011030140587-pct00002
다항식 pa(x)의 계수는 GF(2) 내의 항(즉, 0 또는 1)이고, pa(x) 및 pb(x)의 합은 아래와 같이 정의된다.
Figure 112011030140587-pct00003
두 항, a,b의 곱셈은 연관된 다항식, pa(x), pb(x)의 곱셈 및 그 결과와 GF(2)에 걸처 t+1차의 소정의 기약 다항식 g(x)을 모듈로(modulo)하여 수행된다. 곱셈 결과 a·b는 GF(2)에 걸쳐 t+1 길이의 이진 백터로 표현될 수 있고, 이때 각각의 좌표는 a의 항(계수)과 b의 항(계수)의 이진 선형 결합이다.
그림을 완성하기 위해, 인버스 및 나눗셈 오퍼레이션이 정의된다. GF(2t+1)의 각각의 0이 아닌 항 a은 a-1로 표현되는 고유한 인버스 항을 가지고, a·a-1=a-1·a=1이다. a에 의한 나눗셈은 a-1에 의한 곱셈과 동등하다.
본 명세서에 서술된 방법의 바람직한 실시예에 따라, 복수의 코드워드는 플래시 메모리에 프로그래밍될 정보 비트의 백터와 연관된다.
플래시 메모리를 프로그래밍할 때, 각각의 프로그래밍 코드워드는 프로그래밍 오퍼레이션 이전에 플래시 메모리의 상태를 기초로 하고, 또한 플래시 메모리에 프로그래밍될 정보를 기초로 한다. 플래시 메모리를 프로그래밍하기 전에(또는 수개의 프로그래밍 오퍼레이션의 경우에 마지막 프로그래밍 이전에), 프로그래밍될 셀은 판독되고, 이미 높은 임계 전압 레벨을 전달하는 셀은 결함있는 셀로, 또는 전압이 변경될 수 없는 셀로 표시된다. 그 다음, 코드워드는 셀이 변경 불가능한 임계 전압을 가진다는 제한에 따라, 플래시 셀로 프로그래밍될 정보 비트의 백터와 연관된 복수의 코드워드의 세트로부터 선택된다. 선택된 코드워드는 (0은 1보다 높은 전압 레벨과 연관된다고 가정하여) 결함있는 셀과 연관된 모든 또는 대부분의 좌표에 0을 포함한다. 선택된 코드워드는 그 다음 플래시 메모리에 프로그래밍된다.
그러므로, 본 명세서에 제공된 하나의 실시예는 복수의 비트를 저장하는 방법이고, 본 방법은 (a) 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 비트의 초기 부분을 나타내도록, 적어도 하나의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하는 단계; (b) 적어도 하나의 셀의 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 적어도 하나의 메모리 셀 내의 모든 비트를 저장하기 위한 물리 파라미터 값 범위에 대한 비트의 적응형 맵핑을 제공하는 단계; 및 (c) 적어도 하나의 메모리 셀 각각에 대하여, 적응형 맵핑에 따라, 각각의 메모리 셀의 물리 파라미터의 각각의 값이 모든 비트가 적어도 하나의 메모리 셀에 저장될 수 있도록 조절될 필요가 있다면: 적응형 맵핑에 따라 각각의 메모리 셀의 물리 파라미터의 각각의 값을 조절하는 단계;를 포함한다.
본 명세서에 제공되는 다른 실시예는 적어도 하나의 비트를 저장하는 방법이고, 본 방법은 (a) 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 디폴트 맵핑을 제공하는 단계; (b) 적어도 하나의 비트가 디폴트 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하는 단계; 및 (c) 상기 시도하는 단계가 적어도 하나의 메모리 셀 중 하나의 셀의 물리 파라미터의 각각의 값을 하나의 값으로 설정하는데, 그 값으로부터 디폴트 맵핑에 따른 적어도 하나의 비트에 대응하는, 하나의 메모리 셀의, 물리 파라미터의 값의 범위가 접근 불가능하다면: 적응형 맵핑에 따라 적어도 하나의 비트에 대응하는 하나의 메모리 셀의 물리 파라미터 값의 범위가 접근가능하도록, 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위한, 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 적응형 맵핑을 제공하는 단계;를 포함한다.
본 명세서에 제공되는 다른 실시예는 적어도 하나의 비트를 저장하는 방법이고, 본 방법은 (a) 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 복수의 맵핑을 제공하는 단계; (b) 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하는 단계; 및 (c) 상기 시도하는 단계의 결과에 응답하여: 적어도 하나의 메모리 셀 내에 적어도 하나의 비트를 저장하기 위해 실제로 사용하기 위해 상기 맵핑 중 하나를 선택하는 단계;를 포함한다.
본 명세서에 제공되는 다른 실시예는 적어도 하나의 메모리 셀을 포함하는 메모리에 복수의 비트를 저장하는 컨트롤러이고, 본 컨트롤러는 (a) 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 비트의 초기 부분을 나타내도록, 적어도 하나의 메모리 셀의 각각의 물리 파라미터의 각각의 값을 설정하고자 시도하고; (b) 적어도 하나의 셀의 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 적어도 하나의 메모리 셀에 모든 비트를 저장하기 위한 물리 파라미터 값 범위에 대한 비트의 적응형 맵핑을 제공하고; 그리고 (c) 적어도 하나의 메모리 셀 각각에 대하여, 적응형 맵핑에 따라, 각각의 메모리 셀의 물리 파라미터의 각각의 값이 모든 비트가 적어도 하나의 메모리 셀에 저장되기 위해 조절될 필요가 있다면, 적응형 맵핑에 따라 각각의 메모리 셀의 물리 파라미터의 각각의 값을 조절하도록 동작한다.
본 명세서에 제공되는 다른 실시예는 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하는 컨트롤러이고, 본 컨트롤러는 (a) 적어도 하나의 비트가 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 디폴트 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하고; 그리고 (b) 상기 시도가 적어도 하나의 메모리 셀 중 하나의 셀의 물리 파라미터의 각각의 값을 하나의 값으로 설정하는데 그 값으로부터 디폴트 맵핑에 따른 적어도 하나의 비트에 대응하는, 하나의 메모리 셀의, 물리 파라미터의 값의 범위가 접근 불가능하다면: 적응형 맵핑에 따른 적어도 하나의 비트에 대응하는 하나의 메모리 셀의 물리 파라미터 값의 범위가 접근가능하도록, 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위한, 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의, 적응형 맵핑을 제공하도록 동작한다.
본 명세서에 제공되는 다른 실시예는 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하는 컨트롤러이고, 본 컨트롤러는 (a) 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 복수의 맵핑을 제공하고; (b) 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하고; 그리고 (c) 상기 시도의 결과에 응답하여: 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위해 실제로 사용하기 위해 상기 맵핑 중 하나를 선택하도록 동작한다.
본 명세서에 제공되는 다른 실시예는 (a) 적어도 하나의 메모리 셀을 포함하는 메모리; 및 (b) 컨트롤러를 포함하는 메모리 디바이스이고, 본 컨트롤러는 (ⅰ) 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 복수의 비트의 초기 부분을 나타내도록, 적어도 하나의 메모리 셀의 각각의 물리 파라미터의 각각의 값을 설정하고자 시도하고; (ⅱ) 적어도 하나의 셀의 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 적어도 하나의 메모리 셀에 모든 비트를 저장하기 위한 물리 파라미터 값 범위에 대한 비트의 적응형 맵핑을 제공하고; 그리고 (ⅲ) 적어도 하나의 메모리 셀 각각에 대하여, 적응형 맵핑에 따라, 각각의 메모리 셀의 물리 파라미터의 각각의 값이 모든 비트가 적어도 하나의 메모리 셀에 저장되기 위해 조절될 필요가 있다면, 적응형 맵핑에 따라 각각의 메모리 셀의 물리 파라미터의 각각의 값을 조절하도록 동작한다.
본 명세서에 제공되는 다른 실시예는 (a) 적어도 하나의 메모리 셀을 포함하는 메모리; 및 (b) 컨트롤러를 포함하는 메모리 디바이스이고, 본 컨트롤러는 (ⅰ) 적어도 하나의 비트가 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 디폴트 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하고; 그리고 (ⅱ) 상기 시도가 적어도 하나의 메모리 셀 중 하나의 셀의 물리 파라미터의 각각의 값을 하나의 값으로 설정하는데 그 값으로부터 디폴트 맵핑에 따른 적어도 하나의 비트에 대응하는, 하나의 메모리 셀의, 물리 파라미터의 값의 범위가 접근 불가능하다면: 적응형 맵핑에 따른 적어도 하나의 비트에 대응하는 하나의 메모리 셀의 물리 파라미터 값의 범위가 접근가능하도록, 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위한, 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의, 적응형 맵핑을 제공하도록 동작한다.
본 명세서에 제공되는 다른 실시예는 (a) 적어도 하나의 메모리 셀을 포함하는 메모리; 및 (b) 컨트롤러를 포함하는 메모리 디바이스이고, 본 컨트롤러는 (ⅰ) 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 복수의 맵핑을 제공하고; (ⅱ) 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하고; 그리고 (ⅲ) 상기 시도의 결과에 응답하여: 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위해 실제로 사용하기 위해 상기 맵핑 중 하나를 선택하도록 동작한다.
본 명세서에 제공되는 다른 실시예는 (a) 복수의 비트를 저장하기 위한, 적어도 하나의 메모리 셀을 포함하는, 제1 메모리; 및 (b) 제1 메모리의 호스트를 포함하는 시스템이고, 상기 호스트는 (i) (A) 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 비트의 초기 부분을 나타내도록, 적어도 하나의 메모리 셀의 각각의 물리 파라미터의 각각의 값을 설정하고자 시도하고; (B) 적어도 하나의 셀의 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 적어도 하나의 메모리 셀에 모든 비트를 저장하기 위한 물리 파라미터 값 범위에 대한 비트의 적응형 맵핑을 제공하고; 그리고 (C) 적어도 하나의 메모리 셀 각각에 대하여, 적응형 맵핑에 따라, 각각의 메모리 셀의 물리 파라미터의 각각의 값이 모든 비트가 적어도 하나의 메모리 셀에 저장되기 위해 조절될 필요가 있다면, 적응형 맵핑에 따라 각각의 메모리 셀의 물리 파라미터의 각각의 값을 조절함으로써, 제1 메모리를 관리하는 코드를 저장하는 제2 메모리, 및 (ⅱ) 이 코드를 실행하기 위한 프로세서를 포함한다.
본 명세서에 제공되는 다른 실시예는 (a) 복수의 비트를 저장하기 위한, 적어도 하나의 메모리 셀을 포함하는, 제1 메모리; 및 (b) 제1 메모리의 호스트를 포함하는 시스템이고, 상기 호스트는 (i) (A) 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 디폴트 맵핑을 제공하고; (B) 적어도 하나의 비트가 디폴트 맵핑에 따라 적어도 하나의 비트에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하고; (C) 상기 시도가 적어도 하나의 메모리 셀 중 하나의 셀의 물리 파라미터의 각각의 값을 하나의 값으로 설정하는데 그 값으로부터 디폴트 맵핑에 따른 적어도 하나의 비트에 대응하는, 하나의 메모리 셀의, 물리 파라미터의 값의 범위가 접근 불가능하다면: 적응형 맵핑에 따른 적어도 하나의 비트에 대응하는 하나의 메모리 셀의 물리 파라미터 값의 범위가 접근가능하도록, 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위한, 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의, 적응형 맵핑을 제공함으로써, 제1 메모리를 관리하는 코드를 저장하는 제2 메모리, 및 (ⅱ) 이 코드를 실행하기 위한 프로세서를 포함한다.
본 명세서에 제공되는 다른 실시예는 (a) 복수의 비트를 저장하기 위한, 적어도 하나의 메모리 셀을 포함하는, 제1 메모리; 및 (b) 제1 메모리의 호스트를 포함하는 시스템이고, 상기 호스트는 (i) (A) 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 복수의 맵핑을 제공하고; (B) 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하고; 그리고 (C) 상기 시도의 결과에 응답하여: 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위해 실제로 사용하기 위해 상기 맵핑 중 하나를 선택함으로써, 제1 메모리를 관리하는 코드를 저장하는 제2 메모리, 및 (ⅱ) 이 코드를 실행하기 위한 프로세서를 포함한다.
본 명세서에 제공되는 다른 실시예는 적어도 하나의 메모리 셀을 포함하는 메모리에 복수의 비트를 저장하는 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체이고, 상기 컴퓨터 판독가능한 코드는 (a) 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 비트의 초기 부분을 나타내도록, 적어도 하나의 메모리 셀의 각각의 물리 파라미터의 각각의 값을 설정하고자 시도하는 프로그램 코드; (b) 적어도 하나의 셀의 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 적어도 하나의 메모리 셀에 모든 비트를 저장하기 위한 물리 파라미터 값 범위에 대한 비트의 적응형 맵핑을 제공하는 프로그램 코드; 및 (c) 적어도 하나의 메모리 셀 각각에 대하여, 적응형 맵핑에 따라, 각각의 메모리 셀의 물리 파라미터의 각각의 값이 모든 비트가 적어도 하나의 메모리 셀에 저장되기 위해 조절될 필요가 있다면, 적응형 맵핑에 따라 각각의 메모리 셀의 물리 파라미터의 각각의 값을 조절하는 프로그램 코드;를 포함한다.
본 명세서에 제공되는 다른 실시예는 적어도 하나의 메모리 셀을 포함하는 메모리에 복수의 비트를 저장하는 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체이고, 상기 컴퓨터 판독가능한 코드는 (a) 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 디폴트 맵핑을 제공하는 프로그램 코드; (b) 적어도 하나의 비트가 디폴트 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하는 프로그램 코드; 및 (c) 상기 시도가 적어도 하나의 메모리 셀 중 하나의 셀의 물리 파라미터의 각각의 값을 하나의 값으로 설정하는데 그 값으로부터 디폴트 맵핑에 따른 적어도 하나의 비트에 대응하는, 하나의 메모리 셀의, 물리 파라미터의 값의 범위가 접근 불가능하다면: 적응형 맵핑에 따른 적어도 하나의 비트에 대응하는 하나의 메모리 셀의 물리 파라미터 값의 범위가 접근가능하도록, 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위한, 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의, 적응형 맵핑을 제공하는 프로그램 코드;를 포함한다.
본 명세서에 제공되는 다른 실시예는 적어도 하나의 메모리 셀을 포함하는 메모리에 복수의 비트를 저장하는 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체이고, 상기 컴퓨터 판독가능한 코드는 (a) 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 소정의 세트에 대한 적어도 하나의 비트의 복수의 맵핑을 제공하는 프로그램 코드; (b) 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 적어도 하나의 메모리 셀에 저장되도록, 적어도 하나의 메모리 셀의 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 시도하는 프로그램 코드; 및 (c) 상기 시도의 결과에 응답하여: 적어도 하나의 메모리 셀에 적어도 하나의 비트를 저장하기 위해 실제로 사용하기 위해 상기 맵핑 중 하나를 선택하는 프로그램 코드;를 포함한다.
본 명세서에 개시된 제1 방법은 복수의 비트를 저장하는 방법이다. 본 발명의 가장 일반적인 실시예의 제1 단계로서, 물리 파라미터의 값이 비트의 초기 부분을 나타내도록, 하나 이상의 메모리 셀의 각각의, 임계 전압과 같은, 물리 파라미터의 각각의 값을 설정하기 위한 시도가 이루어진다. 이 단계에서, 물리 파라미터의 값은 모든 비트를 나타낼 필요가 없다. 또한, 예컨대, 복수의 셀이 프로그래밍되고, 그 셀 중 하나가 앞서 서술된 이유로 인한 결함이 있다면(삭제된 상태 또는 가장 큰 프로그래밍 상태로 굳어져 있다면), 그 비트의 일부분을 단지 나타내고자하는 시도가 실패하는 것이 가능하다. 이것이 이 단계가 단지 "시도"인 이유이다. 이 제1 단계에서 달성된 물리 파라미터의 값에 따라, 물리 파라미터 값 범위에 대한 비트의 적응형 맵핑이 메모리 셀 내에 모든 비트를 저장하기 위해 제공된다. 이러한 맵핑은 "적응형"인데, 이는 이 맵핑이 제1 단계의 결과에 따라 하나의 비트 저장 세션마다 변할 수 있기 때문이다. 각각의 메모리 셀에 대하여, 적응형 맵핑에 따라, 셀의 물리 파라미터의 각각의 값이 모든 비트가 메모리 셀 내에 저장되기 위해 조절될 필요가 있다면, 그 메모리 셀의 각각의 값은 적응형 맵핑에 따라 조절된다.
바람직하게는, 이 제1 단계는 궁극적으로 모든 비트를 나타내게 될 물리 파라미터의 값이 제1 단계에서 설정된 값으로부터 접근가능하도록, 메모리 셀의 물리 파라미터의 값을 설정하고자 시도한다. 물리 파라미터 값이 "접근가능하다는" 것은 그 물리 파라미터가 그 셀을 삭제하지 않고 그 셀을 프로그래밍함으로써 그 값을 달성하도록 조절될 수 있다는 것을 의미한다. 예를 들어, 도 1b에서, (0,1) 대역 내의 임계 전압 값은 (0,0) 임계 전압 대역으로부터 접근가능하지 않지만, (0.0) 대역 내의 임계 전압 값은 (0,1) 임계 전압 대역으로부터 접근가능하다.
바람직하게는, 제1 방법은 또한 (제1 단계에서 시도되는 비트의 초기 부분의 리프리젠테이션이 통상적으로 디폴트 맵핑을 따르는 경우에) 셀 내에 모든 비트를 저장하기 위해, 물리 파라미터 값 범위에 대한 비트의 디폴트 맵핑을 제공하는 것을 포함한다. 적응형 맵핑은 (예컨대, 시도가 성공이라면) 디폴트 맵핑과 동일할 수도 있고, 또는 (예컨대, 시도가 실패하거나, 디폴트 맵핑이 셀에 모든 비트를 저장하는 것과 일치하지 않는다면) 디폴트 맵핑과 상이할 수도 있다. 셀 내에 모든 비트를 저장하는 것과 일치하지 않는 디폴트 맵핑에 대한 전형적인 이유는 셀에 저장될 비트에, 디폴트 맵핑에 따른, 대응하는 (하나의) 셀에 대한, 물리 파라미터의 값 범위가 물리 파라미터가 시도하는 단계에 의해 설정되었던 값으로부터 접근불가능하다는 것이다. 예를 들어, 물리 파라미터가 임계 전압인 경우에, 물리 파라미터 값 범위가 가장 낮은 값부터 가장 높은 값까지 순서 지어져 있다면, 그 셀에 저장될 비트에 대응하는, 디폴트 맵핑에 따른, 물리 파라미터 값 범위는 시도하는 단계에 의해 설정되었던 물리 파라미터의 값보다 낮으므로, 접근 불가능할 수 있다.
바람직하게는, 적응형 맵핑을 제공하는 것은 비트의 적어도 일부분을 코드워드로 인코딩하는 것을 포함한다. 조절될 필요가 있는 물리 파라미터 값을 조절하는 것은 각각의 셀이 코드워드의 각각의 부분을 저장하도록 수행된다.
본 명세서에 개시된 제2 방법은 하나 이상의 비트를 저장하는 방법이다. 본 방법의 가장 일반적인 실시예에서, 하나 이상의 메모리 셀의, 임계 전압과 같은, 물리 파라미터의 값의 범위의 소정의 세트에 대한 비트의 디폴트 맵핑이 제공된다. 이러한 맵핑의 하나의 예는 각각의 셀에 대하여, 도 1b와 관련지어 앞서 언급한 표이다. 이러한 맵핑의 다른 예는 각각 (0, 1, 및 2로 라벨링된) 3가지 임계 전압 범위 중 하나로 놓여질 수 있는, 2 셀의 임계 전압의 범위의 조합에 대한 3비트의 시퀀스의 아래의 전사(surjective) 맵핑이다.
Figure 112011030140587-pct00004
(이 맵핑은 (1, 1) 임계 전압 범위 조합이 사용되지 않기 때문에, 전사적이다) 그 비트가 디폴트 맵핑에 따라 셀에 저장되도록, 각각의 셀의 물리 파라미터의 각각의 값을 설정하고자 하는 시도가 이루어진다. 상기 시도가 (하나의) 셀의 물리 파라미터의 각각의 값을 하나의 값으로 설정하지만 그 값으로부터 디폴트 맵핑에 따른 비트에 대응하는, 셀의 물리 파라미터 값의 범위가 접근불가능하다면, 디폴트 맵핑은 그 비트에 대응하는 셀의 물리 파라미터 값의 범위가 (그 값이 이미 그 범위 내에 있기 때문에, 또는 그 셀이 그 셀을 삭제하지 않고도 추가적인 프로그래밍에 의해 그 범위로 설정될 수 있기 때문에) 접근가능하도록 하는, 물리 파라미터의 범위의 소정의 세트에 대한 비트의, 적응형 맵핑으로 교체된다. 그 다음, 물리 파라미터의 각각의 값은 적응형 맵핑에 따라 설정되는 것이 바람직하다.
바람직하게는, 물리 파라미터가 임계 전압인 경우에, 물리 파라미터 값 범위는 순서지어 지고, 디폴트 맵핑에 따른 비트에 대응하는 (하나의) 셀의 물리 파라미터 값의 범위가 접근불가능한 이유는 그 범위가 해당 셀의 물리 파라미터가 시도하는 단계에 의해 설정되었던 각각의 값보다 낮기 때문이다.
바람직하게는, 적응형 맵핑을 제공하는 것은 비트의 적어도 일부분을 코드워드로 인코딩하는 것을 포함한다.
본 명세서에 개시된 제3 방법은 하나 이상의 비트를 저장하는 방법이다. 하나 이상의 메모리 셀의, 임계 전압과 같은, 물리 파라미터의 값의 범위의 소정의 세트에 대한 비트의 복수의 맵핑이 제공된다. 비트가 맵핑 중 제1 맵핑에 따라 셀에 저장되도록, 각각의 메모리 셀의 물리 파라미터의 각각의 값을 설정하고자 하는 시도가 이루어진다. 시도의 결과에 응답하여, 그 비트를 저장하기 위해 실제로 사용하기 위한 하나의 맵핑이 선택된다. 그 다음, 각각의 메모리 셀의 물리 파라미터의 각각의 값은 그 비트가 선택된 맵핑에 따라 그 셀에 저장되도록 설정되는 것이 바람직하다.
선택된 맵핑은 (예컨대, 시도하는 단계가 성공적이라면) 제1 맵핑일 수 있고, 또는 (예컨대, 시도하는 단계가 실패라면) 맵핑 중 다른 맵핑일 수 있다. 실패의 전형적인 징후는 셀에 저장될 비트에 대하여, 제1 맵핑에 따라, 대응하는 (하나의) 셀에 대한, 물리 파라미터 값 범위가 물리 파라미터가 시도하는 단계에 의해 설정되었던 값으로부터 접근불가능하다는 것이다. 예를 들어, 물리 파라미터가 임계 전압인 경우에, 물리 파라미터 값 범위가 최소값에서 최대값까지 순서지어 있다면, 그 셀에 저장될 비트에 대하여, 디폴트 맵핑에 따른, 대응하는 물리 파라미터 값 범위는 시도하는 단계에 의해 설정되었던 물리 파라미터의 값보다 낮기 때문에, 접근불가능할 수 있다.
바람직하게는, 선택된 맵핑은 비트의 적어도 일부를 코드워드로 인코딩하는 것을 포함한다.
개시된 제1 방법에 대응하는, 하나 이상의 메모리 셀을 포함하는 메모리에 복수의 비트를 저장하는 컨트롤러는 셀에 비트를 저장하기 위해 개시된 제1 방법을 사용한다. 개시된 제2 또는 제3 방법에 대응하는, 하나 이상의 메모리 셀을 포함하는 메모리에 하나 이상의 비트를 저장하는 컨트롤러는 셀에 비트를 저장하기 위해 제2 또는 제3 방법을 사용한다.
개시된 제1 방법에 대응하는 메모리 디바이스는 하나 이상의 메모리 셀을 가진 메모리와, 셀에 복수의 비트를 저장하기 위해 개시된 제1 방법을 사용하는 컨트롤러를 포함한다. 개시된 제2 또는 제3 방법에 대응하는 메모리 디바이스는 하나 이상의 메모리 셀을 가진 메모리와, 셀에 복수의 비트를 저장하기 위해 개시된 제2 또는 제3 방법을 사용하는 컨트롤러를 포함한다.
3가지 개시된 방법 중 하나에 대응하는 시스템은 제1 메모리 및 제1 메모리의 호스트를 포함한다. 제1 메모리는 하나 이상의 메모리 셀을 포함한다. 호스트는 관련된 방법에 따라 제1 메모리를 관리하는 코드를 저장하기 위한 제2 메모리, 및 상기 코드를 실행하는 프로세서를 포함한다.
3가지 개시된 방법 중 하나에 따른 컴퓨터 판독가능한 매체는 하나 이상의 메모리 셀을 포함하는 메모리를 관리하기 위해 관련된 방법을 구현하기 위한 컴퓨터 판독가능한 코드를 내장한다.
다양한 실시예가 첨부된 도면을 참조하여 단지 예시의 방법으로 본 명세서에 서술된다.
도 1은 단일 비트 및 듀얼 비트 플래시 메모리 셀에 대한 전압 레벨 분포의 종래기술의 도면이다.
도 2는 코드가 저밀도 패리티 체크 매트릭스 또는 저밀도 이분 그래프로 어떻게 표현될 수 있는지를 도시한다.
도 3은 "소프트 인코딩"을 수렴시키기 위해 사용되는 더 낮은 삼각 구조를 도시한다.
도 4는 플래시 메모리 디바이스의 하이 레벨의 개략적인 블록 다이어그램이다.
도 5는 도 4의 컨트롤러의 부분적인 기능 블록 다이어그램이다.
도 6은 플래시 메모리 디바이스를 관리하는 시스템의 하이 레벨의 개략적인 블록 다이어그램이다.
본 발명에 따른 플래시 메모리와 같은 메모리의 프로그래밍의 원리 및 동작은 첨부된 도면과 설명을 참조함으로써 더 잘 이해될 것이다.
이제, 코드 구성의 2가지 예로가 대응하는 인코딩 및 디코잉 알로리즘과 함께 설명될 것이다. 하나의 코드 구성은 "하드" 피드백에 적합하다. 다른 코드 구성은 "소프트" 피드백에 적합하다.
서술된 코드 구성은 아래의 속성을 충족한다.
· 모든 정보의 백터는 복수의 코드워드와 연관되어 있다.
· 효율적이고 낮은 복잡도의 인코딩 알고리즘이 그 코드에 대하여 존재한다. 바람직한 코드워드에 주어진 세트의 "하드"/"소프트" 조건에 대하여, 인코딩 알고리즘은 모든 또는 대부분의 조건을 높은 확률로 가능한 가깝게 충족시키는 코드워드로 그 정보 백터의 낮은 복잡도의 인코딩을 가능하게 한다.
·효율적이고 낮은 복잡도의 디코딩 알고리즘이 그 코드에 대하여 존재하여, 판독된 코드워드로부터 정보 백터의 디코딩을 가능하게 한다.
아래의 "하드" 조건의 예는 정보 비트, I의 백터의 복수의 인코딩을 정의하는 방법을 보여주는데, 여기서, 인코딩된 백터의 대부분의 t 좌표는 0으로 제한되고, 단지 t+1 개의 리던던시 비트만 추가한다. 이러한 인코딩은 길이 k×(t+1)의 백터를 길이 (k+1)×(t+1)의 백터로 인코딩하는 블록 코드의 종류에 속한다.
GF(2)에 걸쳐 길이 k×(t+1)의 정보 백터가 주어진 때(즉, I의 각각의 좌표는 0 또는 1일 때), I는 I=(v0, v1, ..., vk-1) ∈GF(2t+1)k 형태로 분할된다. 각각의 좌표 vi는 t+1개의 비트의 백터이고, 표준 방식으로 GF(2t+1)의 항에 연결된다. 이러한 종류의 복수의 인코딩은 아래와 같은 집합이다.
Figure 112011030140587-pct00005
그러므로, 각각의 정보 백터는 2t+1-1 인코딩의 패밀리와 연관된다.
최대 t개의 비트가 0으로 되도록 제약된 특정한 인코딩을 선택하는 것은 기본적인 선형 대수를 사용하여, f를 구성하는 t+1개의 미지의(unknown) 비트 값과 함께 최대 t개의 호모지니어스 식의 세트로 변환된다. 논-트리비얼 솔루션이 존재한다는 것이 보장되고, 표준 선형 대수 방법에 의해 계산될 수 있다.
더욱 상세하게는, 항
Figure 112011030140587-pct00006
을 고정하고, vi에 의한
Figure 112011030140587-pct00007
의 곱셈을 고려하면, 그 결과는 각각의 좌표가 f의 좌표의 선형 조합인 이진 백터이다. 그러므로, 그 결과의 임의의 좌표를 0이 되도록 제한하는 것은 f의 좌표를 알 수 없는 선형 방정식을 푸는 것과 동등하며, 그 계수는 vi의 좌표이다.
예컨대,
Figure 112011030140587-pct00008
a=(0,1,0,1)에 대하여, 아래의 식을 얻는다.
Figure 112011030140587-pct00009
예를 들어, 그 결과의 최소 유효 비트를 0으로 제약하는 것은 b1+b3=0을 풀므로써 수행된다.
이제, 아래의 예를 살펴보자. 메모리는 NAND 플래시 메모리이다. 각각의 워드 라인은 528개의 셀: 데이터를 저장하기 위한 512개의 셀 및 오버헤드 정보를 저장하기 위한 16개의 셀을 가진다. 임계 전압 대역 및 대응하는 비트 패턴은 도 1b와 관련지어 앞서 표시된 표에 있는 것과 같다.
워드 라인이 프로그래밍되기 전에, 모든 셀의 임계 전압은 가장 낮은 임계 전압 대역 내에 있다. 이 셀들은 2개의 논리 페이지로 프로그래밍될 수 있다. 제1 논리 페이지는 처음 512개의 셀 내의 최대 유효 비트로서 저장될 512개의 정보 비트이다. 그 셀의 임계 전압이 1V 이상일 때까지 "0" 최대 유효 비트를 저장하는 것으로 가정되는 셀에 프로그래밍 전압 펄스를 적용함으로써, 제1 최대 유효 정보 비트가 프로그래밍된다. 제1 논리 페이지의 프로그래밍은 임의의 임계 전압을 4번째 임계 대역(>2V)으로 놓는 것으로 가정되지 않지만, 앞서 서술한 바와 같이, 소수의 셀이 이러한 임계 전압 대역으로 오버프로그래밍되는 것이 발생할 수 있다. 그러므로, 제2 논리 페이지의 정보 비트는 코드워드의 비트가 오버프로그래밍된 셀 내의 제로 비트인 코드워드로서 인코딩된다. 워드 라인은 셀이 오버프로그래밍되었음을 알기 위해 판독된다.
명료함을 위해, 코드워드는 최대 3개의 오버프로그래밍된 셀(t=3)을 수용할 수 있는 것으로 가정한다. 이는 각각의 좌표 vi가 4개의 비트의 백터임을 의미한다. 그러므로, k=128: v0는 제2 논리 페이지의 첫번째 4개의 정보 비트이고, v127은 제2 논리 페이지의 마지막 4개의 정보 비트이고, 16개의 오버헤드 셀의 2개의 출력은 f를 나타내는 4개의 비트를 저장하기 위해 사용될 것이다. f가 4개의 비트를 가지고 f≠0이므로, 이는 선택될 수 있는 15(24-1)개의 코드워드가 존재한다는 것을 의미한다. 적합한 코드워드가 어떤 것인지는 얼마나 많은 오버프로그래밍된 셀이 존재하는가와 어떠한 셀이 오버프로그래밍되었는가에 의존한다. 오버프로그래밍된 셀이 없다면, 15개의 코드워드 중 임의의 코드워드가 적합하다. 하나의 오버프로그래밍된 셀이 존재한다면, 15개의 코드워드 중 7(23-1)이 적합하다. 2개의 오버프로그래밍된 셀이 존재한다면, 15개의 코드워드 중 3(22-1)이 적합하다. 3개의 오버프로그래밍된 셀이 존재한다면, 15개의 코드워드 중 1(23-1)(그리고 가능하다면 그 이상)이 적합하다.
더욱 명료함을 위해, 3개의 오버프로그래밍된 셀은 셀(25, 50, 및 75)인 것으로 가정한다. 이는 코드워드에서, v6f의 제1 비트, v12f의 제2 비트 및 v18f의 제3 비트가 0 이여야 한다는 것을 의미한다. 이러한 3가지 조건과 f≠0인 조건은 표준 선형대수법에 의해 f를 판정하기에 충분하다.
상기 예의 GF(2t+1) 곱셈은 v6=a=(0,1,0,1) 및 b=f이면, 본 예에 맵핑된다. f=(f1,f2,f3,f4)이면, "v6f의 제1 비트가 0이여야 한다"는 조건은 f1+f3=0이 된다.
상기 3개의 조건을 기초로, f가 계산된다. 결과적인 코드워드는 (v0f, ... v127f, f)이다. 비트, v0f,...,v127f는 처음 512개의 셀의 최소 유효 비트에 저장된다. f의 비트는 처음 2개의 오버헤드 셀에 저장될 수 있다. 이러한 인코딩 프로시저는 프로그래밍동안 도입되고 인코딩 동안 알게 되는 에러(예컨대, 셀(25, 50, 및 75)의 오버프로그래밍)를 다루는 것을 목적으로 한다. 그러나, 예컨대, 시간이 흐름에 따라 임계 전압 드리프트로 인하여, 프로그래밍 이후 추가적인 에러가 도입될 수 있다. 이러한 에러를 다루기 위해, 추가적인 에러 보정 코드(ECC)가 사용될 필요가 있다. ECC 인코더는 제1 인코딩 단계의 최종적인 코드워드(v0f,...,v127f)를 인코딩하고, 오버헤드 비트의 제2 세트를 추가한다. 이러한 오버헤드 비트는 워드 라인의 나머지, 528-512-2 = 14 개의 셀에 저장될 수 있다.
워드 라인의 판독 중에, 먼저 ECC 디코더가 마지막 14개의 셀에 저장된 오버헤드를 사용하여 처음 514개의 셀에 저장된 데이터를 복구하기 위해 사용된다. ECC가 데이터를 성공적으로 복구하였다고 가정하면(ECC는 높은 확률로 성공하도록 설계된다), (w0,...,w128)로 지정된, 처음 512개의 셀의 최소 유효 비트 내에 복구된 데이터 및 처음 2개의 오버헤드 셀의 비트는 (v0f,...,v127f,f)와 같다. 그 다음, 제2 디코딩 단계는 제2 논리 페이지 (v0,...,v127)를 복구하기 위해 수행된다. f=는 GF(16)의 논-제로 엘리먼트이므로, f는 역함수, f-1을 가진다. 그러므로, 제2 디코딩 단계는 코드워드의 처음 128개의 엘리먼트(w0, ..., w128) 각각을 f-1로 나눔으로써 수행될 수 있다. 예를 들어, v0는 w0f-1로 복구된다.
정보 비트와 처음 2개의 오버헤드 비트를 코드워드(v0f,...,v127f,f)로 인코딩하는 것은 데이터를 정확하게 저장하기 위해 오버프로그래밍된 셀을 사용할 수 있게 할 목적일 뿐이다. 종래의 에러 보정 코드(ECC) 인코딩은 512개의 정보 비트를 오버헤드 비트 사이에 자신의 리던던시 비트가 포함되어 있는, 시스테메틱 코드워드로 인코딩함으로써 이루어진다. 앞서 서술한 바와 같이, 이러한 ECC 인코딩은, 예컨대, 시간이 흐름에 따른 임계 전압 드리프트로 인하여, 잘못 판독되는 좌표 vi의 일부 및 f의 가능성에 대하여 보상한다. 이러한 ECC 인코딩은 또한 t개 이상의 셀이 오버프로그래밍된 경우에(너무 많은 t개 이상의 셀이 오버프로그레밍되지 않는 한), 마치 f에 의해 고려되지 않았던 오버프로그래밍된 셀이 오버프로그래밍되지 않았던 것처럼, 정보 비트의 지식과 함께, 그 코드워드의 보정 디코딩을 가능하게 한다. 하드 조건 인코딩은 t개의 오버프로그래밍된 셀을 다루고, 후속하는 ECC 인코딩은 나머지 오버프로그래밍된 셀을 다룬다.
단지 하나의 셀의 오버프로그래밍은 아래 페이지의 모든 정보 비트를 간단하게 인버팅하고 정보 비트가 인버팅되었음을 나타내기 위해 아래 페이지의 하나의 오버헤드 비트를 사용함으로써 다루어질 수 있음을 이해해야 한다. 2 이상의 셀이 오버프로그래밍된 경우에 일반적으로 GF(2t+1)번의 인코딩이 필요하다.
제1 논리 페이지의 프로그래밍은 그 셀의 임계 전압이, 예컨대, 도 1b와 관련지어 앞서 표현된 표에 의해, 정의된 임계 전압에 대한 비트의, 디폴트 맵핑에 따른 최대 유효 정보 비트를 나타내도록 프로그래밍된 셀의 임계 전압을 설정하고자 하는 시도이다. 그 시도가 하나 이상의 셀이 오버프로그래밍 되어, 그 셀에 대하여 바람직한 임계 전압 상태가 실제 획득된 임계 전압 상태로부터 접근가능하지 않다면, 제2 논리 페이지는 도 1b와 관련지어 앞서 표현된 테이블과 함께, 임계 전압에 대하여 제2 논리 페이지의 비트의 적응형 맵핑을 구성하는 코드워드(v0f,v1f,...,v127f,f)로서 인코딩된다.
"소프트" 피드백의 경우에, 더 야심찬 목표가 설정된다. 제안된 스킴은 프로그래밍 동안 발생하는 에러를 효율적으로(즉, 최소 리던던시로) 다루고자 할 뿐만 아니라, 더 좁은 셀의 임계 전압의 확률 분포를 만들고자 한다. 즉, 이 스킴은 동일한 상태로 프로그래밍되는 모든 셀의 프로그래밍된 임계 전압의 편차를 줄이고자 한다. 이것의 목적은, 예컨대, 시간이 흐름에 따른 임계 전압 드리프트로 인한, 에러가 프로그래밍 후 도입될 수 있는 확률을 줄이는 것이다. 이는 차례로 메모리의 신뢰성을 증가시키고, 메모리가 더 많은 프로그램 및 삭제 사이클에 견딜 수 있고, 데이터 보유시간을 증가시킬 수 있게 한다. 이러한 셀 임계 전압 분포를 좁히기 위해서는, 메트릭스가 그 임계 전압 대역의 중심으로부터 그것의 오버슈팅의 정도에 따라 셀이 더 높은 "이상(odd)" 상태로 프로그래밍되는 것이 얼마나 중요한지 나타내는 각각의 판독된 셀과 연관된다. (도 1의 셀당 2비트인 MBC 예에서, 상태 2의 탑을 향하거나, 이미 상태 3으로 오버프로그래밍된 셀을 상태 2에서 상태 3으로 변하도록 촉진할 것인가의 문제가 발생한다. 셀당 n비트의 MBC 경우에, 통상적으로 0 내지 2n-1로 넘버링된 2n개의 상태가 존재하고, 0 보다 큰 짝수인 상태에 있는 셀을 다음 홀수의 상태로 변하도록 촉진할 것인가의 문제가 발생한다.) 오버슈트가 증가할수록, 짝수 상태와 다음 홀수 상태를 구분하는 임계값까지의 거리가 감소하므로, 그 셀을 홀수 상태로 놓는 중요도 또는 바람직한 정도가 증가한다. 명백하게, "하드" 피드백 예에서처럼, 오버슈트는 그 셀을 홀수 상태로 실제로 올려 놓을만큼 강하고, 그 셀을 홀수 상태에 있는 것처럼 처리할 필요성은 절대적이다. 즉, 이러한 경우에, 셀이 다음 상태로 놓여지도록 셀의 데이터가 "재-맵핑"되지 않으면, 이 셀은 에러일 것이고, 이는 ECC에 추가적인 부담이 될 것이다(처리될 수 있는 프로그래밍 후 발생하는 셀 에러가 줄어들게 된다).
제2의 예는 하나의 인코딩이 그 코드워드에 대한 다수의 "소프트" 조건을 가진 복수의 인코딩 세트로부터 선택되는 "소프트" 조건 예이다. "소프트" 조건은 몇몇 비트에 대하여 그들이 "0"일 것임이 더 바람직하므로 "0" 비트일 더 높은 확율을 가지도록 설정되고, 다른 비트에 대하여 그들이 "1"일 것임이 더 바람직하므로, 복수의 옵션 중에서 선택된 코드워드 내에 "0" 비트일 더 낮은 확율을 가지도록 설정된다는 것을 의미한다. 비트 v가 0 또는 1일 확률의 바람직한 측정값은 로그-우도비(LLR)이다.
Figure 112011030140587-pct00010
주어진 정보 백터 I에 대하여, 복수의 인코딩의 세트는 형태 HC=I의 매트릭스 방정식을 충족시키는 모든 백터의 세트이다. 여기서, H는 그 코드를 정의하는 패리티 체크 매트릭스이다.
정보 백터를 소프트 조건을 충족시키는 코드워드로 인코딩하는 하나의 바람직한 접근법은 반복적 인코딩 알고리즘을 사용하는 것이다. 이는 매트릭스 H의 이분 그래프 리프리젠테이션에 적용되는, 신뢰 확산(BP, Belief Propagation)과 같은 반복적 메시지 패싱 알고리즘을 사용함으로써 수행된다. 이러한 알고리즘은 저밀도 매트릭스 H에서 동작할 때 잘 수행된다.
매트릭스 H의 동등한 이분 그래프 리프리젠테이션은 다음과 같은 방식으로 유도된다.
· N개의 좌측 노드(비트 노드라 함) 및 K개의 우측 노드(체크 노드라 함)를 가진 이분 그래프를 구성한다. 비트 노드는 H의 칼럼에 대응하고, 체크 노드는 H의 로우에 대응한다.
·Hij=1인 임의의 쌍(i,j)에 대하여, 비트 노드 j로부터 체크 노드 i까지의 에지를 그린다.
·비트노드는 코드워드 C 내의 비트와 연관된다. 체크 노드는 정보 백터 I 내의 비트와 연관된다.
·체크 노드는 연결된 비트 노드(또는 연관된 코드워드 비트)에 조건을 부과한다. 체크 노드와 연관된 대응한 정보 비트가 "0"이면, 체크 노드는 연결된 코드워드 비트(또는 비트 노드)는 짝수 개의 "1"을 가져야 한다는 조건을 부과한다. 체크 노드와 연관된 대응한 정보 비트가 "1"이면, 체크 노드는 연결된 코드워드 비트(또는 비트 노드)는 홀수 개의 "1"을 가져야 한다는 조건을 부과한다.
이제 도면으로 돌아가면, 도 2는 (좌측에) 코드를 정의하는 저밀도 패리티-체크 매트릭스 H, 및 (우측에) N개의 비트 노드의 세트 V(본 예에서, N=13), K개의 체크 노드의 세트 C(본 예에서, K=10), 및 비트 노드를 체크 노드에 연결하는 에지의 세트 E(본 예에서 E=38)를 가진 동등한 저밀도 이분 그래프 G=(V,C,E)를 도시한다. 이 비트 노드는 코드워드 비트에 대응하고, 체크 노드는 그 비트에 대한 패리티-체크 조건에 대응한다. 비트 노드는 그것이 참가한 체크 노드에 에지에 의해 연결된다.
코드의 도식적 리프리젠테이션을 기초로, 인코딩은 반복적 메시지 패싱 알고리즘을 사용하여 수행될 수 있다. 이러한 알고리즘은 그 코드를 표현하는 언더라잉 이분 그래프의 에지를 통해 비트 노드와 체크 노드 사이에서 메시지를 교환함으로써 수행된다. 인코더는 (판독된 메모리 셀로부터의 "소프트" 피드백을 기초로 하는) 코드워드 비트의 초기 추정값과 함께 제공된다. 이러한 초기 추정값은 그 비트가 유효한 코드워드로서 충족시켜야 하는 조건을 체크 노드에 부과함으로써 정제되고 개선된다. 이는 그래프 에지를 따라 전달되는 메시지를 사용하여 그 코드워드 비트를 나타내는 비트 노드와, 그 코드워드 비트에 대한 조건을 나타내는 체크 노드 사이에서 정보를 교환함으로써 이루어진다.
이러한 비트 추정값은 앞서 정의된 LLRs이다. "현재 조건 및 관측값"은 수기로 메시지를 계산하는 것을 고려한 다양한 체크 노드 조건이고, 이러한 초기 추정값은 이러한 체크 노드에 참여하는 코드워드 비트에 대응한다.
이러한 반복적 메시지 패싱 알고리즘은 C의 좌표와 연관된 "LLRs"의 초기 백터로부터 시작한다. 예를 들어, C의 값에 대한 프리오리(priori) 우선순위를 가지고 있지 않다면, 모든 초기 LLRs를 0("돈 캐어")으로 설정할 수 있다. 오버프로그래밍 경우에서처럼, 코드워드 비트가 "0"인 것이 바람직하다면, 대응하는 LLR은 양의 수, 바람직하게는 20 내지 32로 설정된다. 삭제된 상태로 적체되어 있고 전혀 프로그래밍될 수 없는 셀의, 기술분야 및 배경기술에서 서술된 경우에서처럼, 코드워드 비트가 "1"인 것이 바람직하다면, 대응하는 LLR은 음의 수, 바람직하게는 -32 내지 -20으로 설정된다. LLR의 절대 값은 "0" 또는 "1"을 향하는 추세의 강도를 반영한다. 예를 들어, C의 t 좌표를 0이 되게 하고자 한다면, 이들 좌표는 매우 높은 양의 LLR 값으로 설정된다.
이러한 코드는 코드워드 C가 충족해야 하는 추가적인 패리티-체크 제한을 추가함으로써, 종래의 ECC와 결합될 수 있다. 이는 매트릭스 H 및 (C에 대한 추가적인 패리티-체크를 포함하는) 추가적인 매트릭스(HECC)로 이루어진 패리티-체크 매트릭스 HT를 구성함으로써 이루어질 수 있다. 유효한 코드워드 C는 아래의 세트 식을 충족시킨다.
Figure 112011030140587-pct00011
C가 초기화되는 LLRs의 백터를 "P"라 하면, 메지시 패싱 룰은 아래와 같다.
비트노드에서 체크노드로의 메시지:
Figure 112011030140587-pct00012
체크노드에서 비트노드로의 메시지는:
I의 "0" 비트에 대응하는 또는 종래의 ECC 패리티 체크 중 하나에 대응하는 체크 노드에 대하여,
Figure 112014091246247-pct00013
이고,
I의 "1" 비트에 대응하는 체크 노드에 대하여:
Figure 112014091246247-pct00014
이다.
이러한 메시지 패싱 룰에서, N(n,G)는 그래프 G에서 노드 n의 이웃을 나타내고,
Figure 112014091246247-pct00015
Figure 112014091246247-pct00016
도메인에서의 오퍼레이션은 크기에 대한 합, 및 부호에 대한 XOR이다. 모든 Rcv가 0으로 초기화되므로, 제1 반복에서 Qvc=Pv이다.
각각의 반복의 끝에서, 코드워드 엘리먼트의 LLRs의 추정값은
Figure 112014091246247-pct00017
이고, Qv>0이면 비트 Cv는 "0"이고, Qv<0이면 비트 Cv는 "1"이다. 백터 C가 HC=I를 충족한다면, 이 반복은 수렴된다. 그렇지 않다면, 반복은 계속된다.
일반적으로, 반복적 메시지 패싱은 수렴하지 않을 수 있다. 수렴을 강화하기 위해, 도 3에 도시된 더 낮은 삼각 매트릭스 구조가 사용된다.
도 3에 사용된 용어는 아래와 같다.
·K - 정보 비트의 수.
·M1 - 매 정보 백터에 대하여 복수의 코드워드 리프리젠테이션을 허용하기 위해 추가되는 리던던시의 수(각각의 정보 백터 I와 연관된 2M1개의 가능한 백터 C가 존재한다).
·M2 - 종래의 ECC에 대한 리던던시의 수.
다음은 K=4, M1=2, M2=0인 예이다.
Figure 112011030140587-pct00018
C=(c1, c2, c3, c4, c5, c6)T를 가정하면, HC=I의 일반해는 c1 및 c2를 파라미터로서 선택함으로써 얻어지고, C의 다른 4개의 항은 아래와 같이 표현된다.
Figure 112011030140587-pct00019
하나의 해(디폴트)가 c1=c2=0을 선택하는 것이므로,
Figure 112011030140587-pct00020
오버프로그래밍이 c3=0을 요구한다면, c1=0, c2=1을 선택하므로,
Figure 112011030140587-pct00021
대안으로서, c1=1 및 c2=0으로 놓으면 아래와 같은 식이 주어진다.
Figure 112011030140587-pct00022
도 3의 매트릭스 구조는 반복적 인코더가 항상 C에 대한 유효한 해로 수렴함을 보장할 수 있다. 이는 초기 인코딩 오퍼레이션을 수행함으로써 달성되고,
인코딩이 수렴하지 않는 경우에(즉, 모든 체크를 충족시키는 코드워드를 찾지 못한 경우에), C의 제1 M1 비트는 이러한 비트의 "추세"를 강화하는 방식으로 수정된다. 즉, (음의 LLRs 및 "1"로 향하는) 제1 M1 비트의 음의 값은 더 높은 1일 확률이 주어지고(더 큰 음의 값으로), (양의 LLRs 및 "0"로 향하는) 제1 M1 비트의 양의 값은 더 높은 0일 확률이 주어진다(더 큰 양의 값으로). 그 다음, 이러한 인코딩이 반복된다.
이러한 전략은 제1 M1 비트의 특정 값에 대하여, 그 세트의 식에 대한 (고유한) 해가 존재하므로, 그 인코딩이 수렴함을 보장한다. 도 3으로부터, 제1 M1 비트가 설정된 후, 그 다음 K+M2 식에서 가우시안 소거법을 사용하여, 그 값이 대응하는 매트릭스 로우(식)에 의해 정해지는 하나 이상의 비트가 더해짐을 알 수 있다. 예를 들어, M1=2, K=3, 및 M2=0이라면, 제1 두 비트 c1, c2가 각각 0 및 1이라면, I(2)=1이라면, 매트릭스 제2 로우가 (1 1 1)이라면,
Figure 112014091246247-pct00023
이므로 c3=1이다.
먼저, 제1 M1 비트는 해를 강요하지 않기 위해 언바이어싱된다(LLR=0). 실제로, 반복적인 프로시저는 적은 횟수의 반복으로 제한되고, 제1 M1 비트와 연관된 LLRs이 설정되고, 그 후 인코딩은 다음 K+M2-1 단계에 대한 가우시안 소거법을 계속한다. 각각의 이러한 단계에서, C의 하나의 다음 비트가 계산된다.
이 코드워드가 플래시 메모리로부터 다시 판독될 때, 매트릭스 HECC를 기초로, 종래의 ECC가 C의 제1 M1+K비트를 복구하기 위해 사용되고, 이들 비트는 정보 백터 I를 복구하기 위해 H가 곱해진다.
대안으로서, 식 HC=I와 연관된 이분 그래프는 아래와 같이 구성된다. 여기서, H=KxN 매트릭스이다.
·N+1개의 좌측 노드(비트 노드라 함), 및 K개의 우측 노드(체크 노드라 함)를 가진 이분 그래프를 구성한다.
·제1 N개의 비트 노드는 H의 칼럼에 대응하고, 마지막 비트 노드는 "더미" 비트 노드이고, 체크 노드는 H의 로우에 대응한다.
·Hij=1이도록 하는 임의의 쌍(i,j)에 대하여, 비트노드 j로부터 체크노드 i까지 에지를 그린다.
·Ii=1이도록 하는 임의의 로우 i에 대하여, 비트 노드 N+1에서 체크 노드 i까지 에지를 그린다.
·제1 N 비트 노드는 코드워드 C 내의 비트와 연관된다.
·마지막 비트노드는 "1"의 상수 값과 연관된 "더미" 비트 노드이다.
·체크 노드는 그들의 연결된 비트 노드(또는 연관된 코드워드 비트)에 제한을 부과한다. 이러한 제한은 각각의 체크 노드에 대하여, 그것의 연결된 코드워드 비트(또는 비트 노드)가 ("더미" 비트 노드를 포함하여) 짝수개의 "1"을 포함해야 한다는 것이다.
이러한 대안은 아래의 행렬 식을 풀기 위해 종래의 디코딩 메시지 패싱 룰을 적용하는 것과 동등함을 이해해야 한다.
Figure 112011030140587-pct00024
더미 비트 노드가 "1" 값으로 고정되어 있다는 것을 제외하면, 더미 비트 노드로부터의 체크 노드 메시지에 대한 비트 노드에 대한 룰은
Figure 112011030140587-pct00025
이다.
도 4는 플래시 메모리 디바이스의 하이-레벨 블록 다이어그램이다. 다수의 개별적으로 어셈블리 가능한 메모리 셀은 로우 및 컬럼의 레귤러 어레이(11)에 배열된다. 각각의 메모리 셀은 비트 라인에 의해 제어될 수 있고, 워드 라인에 배열된 게이트를 선택하고, 게이트를 스티어링한다. 비트 라인은 본 명세서에서 어레이(11)의 칼럼을 따라 뻗어 있도록 설계되어 있고, 워드 라인은 어레이(11)의 로우를 따라 뻗어 있도록 설계되어 있다. 비트 라인 유닛(13)은 비트 라인 디코더, 저장 엘리먼트, 드라이버 회로, 및 센스 증폭기를 포함할 수 있다. 비트 라인 유닛(13)은 라인(15)에 의해 셀 어레이(11)에 연결될 수 있고, 비트 제어 라인(29) 및 판독 라인(41)에 의해 컨트롤러(27)에 연결될 수 있다. 워드 라인 유닛(19)은 선택 게이트 디코더 및 드라이버 회로를 포함할 수 있다. 워드 라인 유닛(19)은 라인(17)에 의해 셀 어레이(11)에 연결될 수 있고, 워드 제어 라인(31)에 의해 컨트롤러(27)에 연결될 수 있다. 스티어링 라인 유닛(43)은 스티어링 게이트 디코더 및 드라이버 회로를 포함할 수 있다. 스티어링 유닛(43)은 라인(23)에 의해 셀 어레이(11)에 연결되고, 스티어링 제어 라인(33)에 의해 컨트롤러(27)에 연결되고, 라인(44)에 의해 비트 라인 유닛(13)에 연결될 수 있다. 비트 라인 유닛(13), 워드 라인 유닛(19), 및 스티어링 유닛(43)은 버스(25)에 연결될 수 있고, 차례로 컨트롤러(27)에 연결된다. 컨트롤러(27)는 라인(35)에 의해 호스트에 연결될 수 있다.
사전 선택된 메모리 셀이 프로그래밍되어야 할 때, 전압은 사전 선택된 셀의 프로그래밍을 위해 충분한 소정의 레벨로, 사전 선택된 메모리 셀에 대응하는, 비트 라인, 워드 라인, 및 스티어링 게이트에 인가될 수 있다. 컨트롤러(27)는 사전 선택된 메모리 셀의 어드레스를 버스(25)를 통해, 각각 라인 (26a, 26b, 및 26c)를 통해 비트 라인 유닛(13), 워드 라인 유닛(19), 및 스티어링 유닛(43) 내의 각각의 디코더에 전송한다. 비트 라인 유닛(13), 워드 라인 유닛(19), 스티어링 유닛(43), 및 컨트롤러(27) 사이의 상태 및 제어 커맨드는 비트 제어 라인(29), 워드 제어 라인(31), 및 스티어링 제어 라인(33)을 통해 통신된다.
사전 선택된 메모리 셀이 판독되어야 할 때, 전압은 사전 선택된 메모리 셀의 판독을 활성화시키기에 충분한, 소정의 레벨로, 사전 선택된 메모리 셀에 대응하는, 비트 라인, 워드 라인, 및 스티어링 게이트에 인가될 수 있다. 컨트롤러(27)는 비트 제어 라인(29)을 통해 비트 라인의 전압을 인가할 수 있고, 워드 제어 라인(31)을 통해 워드 라인의 전압을 인가할 수 있고, 스티어링 제어 라인(33)을 통해 스티어링 게이트의 전압을 인가할 수 있다. 전류는 이러한 전압에 의해 사전 선택된 메모리 셀을 통해 발생될 수 있다. 이 전류는 (셀당 하나의 비트가 프로그래밍된 어레이(11)의 셀인 경우) 사전 선택된 메모리 셀이 프로그래밍되었는지 아닌지를 나타내거나, 또는 (셀당 하나 이상의 비트로 프로그래밍된 어레이(11)의 셀인 경우) 사전 선택된 메모리 셀에 저장되었던 비트 패턴을 나타낸다. 이 전류의 값은 증폭되고 비트 라인 유닛(13) 내의 센스 증폭기에 의해 기준치와 비교되고, 그 결과는 래치 또는 레지스터에 임시적으로 저장될 수 있다. 사전 선택된 메모리 셀로부터 판독된 결과적인 데이터는 판독 라인(41)을 통해 컨트롤러(27)로 전송될 수 있다.
메모리 셀 어레이(1)에 정보 비트를 기록할 때, 컨트롤러(27)는 앞서 서술한 인코딩 방법이 앞서 서술한 프로그래밍 문제: 오버프로그래밍된 셀과 같은 일시적 문제, 또는 삭제된 상태(최소 임계 전압) 또는 높은 임계 전압 상태로 굳어져 프로그래밍될 수 없는 셀과 같은 영구적인 문제를 극복하기 위해 필요로 되는지 여부를 판정한다. 앞서 서술한 인코딩 방법이 그 정보 비트를 프로그래밍하는데 필요하다면, 컨트롤러(27)는 앞서 서술한 바와 같이 정보 비트를 인코딩하고, 그 결과적인 코드워드를 메모리 셀 어레이(1)에 저장한다. 메모리 셀 어레이(1)에 저장된 데이터를 판독할 때, 컨트롤러(27)가 판독 데이터를 코드워드로 인식하면, 컨트롤러(27)는 그 정보 비트를 앞서 서술한 바와 같이 코드워드로부터 복구시킨다.
도 5는 컨트롤러(27)의 부분적인 기능 블록 다이어그램이고, 컨트롤러(27)의 기능 블록이 셀 어레이(11)를 프로그래밍하기 위한 프로그래밍 블록(100), 및 셀 어레이(11)를 판독하기 위한 판독 블록(110)을 포함함을 보여준다. 프로그래밍 블록(100)은 임계 전압 맵핑 서브 블록(102), 테스팅 서브 블록(104), 및 인코딩 서브 블록(106)을 포함한다. 임계 전압 맵핑 서브 블록(102)은 도 1b와 관련지어 앞서 표시된 표에 따라, 예컨대 셀당 2비트 경우에, 임계 전압 인터벌로 프로그래밍될 비트를 맵핑한다. 테스팅 서브 블록(104)은 프로그래밍이 성공했는지를 판정하기 위해 임계 전압 맵핑 서브 블록(102)에 의해 제공된 임계 전압 맵핑에 따라 프로그래밍된 셀을 판독한다. 그 프로그래밍이, 예컨대, 하나 이상의 프로그래밍된 셀이 비트의 초기 부분의 프로그래밍 동안 오버프로그래밍됨으로 인해, 실패했다면, 또는 그 프로그래밍이, 예컨대, 프로그래밍될 셀 중 하나가 삭제 상태로, 또는 가장 높은 임계 전압 상태로 굳어져 있음을 알고 있음으로써, 실패할 것으로 예상된다면, 인코딩 서브 블록(106)은 그 비트의 일부 또는 모두를 앞서 서술한 바와 같이 코드워드로 인코딩하는데, 이 코드워드의 비트는 임계 전압 맵핑 서브 블록(102)에 의해 접근가능한 임계 전압 인터벌로 맵핑된다. 옵션으로서, 컨트롤러(27)는 또한 셀 어레이(11)의 어떤 셀이 결함있다는 식별정보를 저장하기 위한 작은 비휘발성 메모리(120)를 포함한다. (그렇지 않다면, 결함있는 셀은 그러한 셀이 정확하게 프로그래밍되는 것이 실패되는 방법에 의해 식별된다.) 컨트롤러(27)의 기능 블록 및 기능 서브 블록은 하드웨어, 펌웨어, 또는 하드웨어 및/또는 펌웨어 및/또는 소프트웨어의 조합으로 구현될 수 있다.
도 6은 본 발명의 시스템(50)의 하이-레벨 블록 다이어그램이다. 시스템(50)은 프로세서(52) 및 모두 공통 버스(66)를 통해 통신하는 4개의 메모리 디바이스: RAM(54), ROM(56), 대용량 저장 디바이스(하드 디스크)(58), 및 종래기술의 플래시 메모리 디바이스(64)를 포함한다. 플래시 메모리 디바이스(64)는, 예컨대, 컨트롤러(27) 이외에 도 4의 플래시 메모리 디바이스의 컴포넌트를 포함할 수 있고, 시스템(50)은 소프트웨어를 실행함으로써 컨트롤러(27)의 기능을 에뮬레이팅한다. 플래시 메모리 디바이스(64)의 소프트웨어 드라이버(60)는 대용량 저장 디바이스(58)에 저장되고, 플래시 메모리 디바이스(64)에 접근하기 위해 프로세서(52)에 의해 실행된다. 드라이버(60)는 본 명세서에 서술된 방법을 사용하여 플래시 메모리 디바이스(64)에 저장될 데이터를 인코딩하고, 플래시 메모리 디바이스(64)로부터 수신되는 코드워드를 디코딩하는 모듈(62)을 포함한다.
도 6에서, 플래시 메모리 디바이스(64) 이외의 시스템(50)의 컴포넌트는 플래시 메모리 디바이스(64)의 호스트(70)를 구성한다. 대용량 저장 디바이스(58)는 본 명세서에 개시된 데이터 저장 방법을 구현한 컴퓨터 저장가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체의 하나의 예이다. 이러한 컴퓨터 판독가능한 저장 매체의 다른 예는 그러한 코드를 내장한 CD와 같은 다른 판독전용 메모리를 포함한다.
플래시 메모리와 같은 메모리에 데이터를 저장하는 방법, 및 그 방법을 사용하는 디바이스 및 시스템의 제한 개수의 실시예가 개시되어 있다. 그 방법, 디바이스, 및 시스템의 다양한 변형, 수정 및 다른 애플리케이션이 이루어질 수 있음을 이해해야 한다.

Claims (36)

  1. 복수의 비트를 순서가 정해진 물리 파라미터 값 범위를 갖는 적어도 하나의 메모리 셀에 저장하는 방법으로서,
    적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 상기 복수의 비트의 최대 유효 비트(most significant bit)를 나타내도록, 상기 적어도 하나의 메모리 셀 각각에 대한 상기 물리 파라미터 범위들의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하는 단계;
    상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 비트의 디폴트 맵핑을 제공하는 단계 - 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀에 대하여, 상기 디폴트 맵핑에 따라 상기 비트의 적어도 일부에 대응하는, 상기 하나의 메모리 셀의 상기 물리 파라미터 값 범위는, 상기 비트들의 최대 유효 비트를 저장하기 위해 상기 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근불가능함 -;
    상기 적어도 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 상기 비트의 적응형 맵핑을 제공하는 단계; 및
    상기 적어도 하나의 메모리 셀 각각에 대하여, 상기 적어도 하나의 메모리 셀을 삭제하지 않고 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하도록, 상기 적응형 맵핑에 따라 상기 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 조절하는 단계
    를 포함하는 복수의 비트를 저장하는 방법.
  2. 제1항에 있어서,
    상기 시도하는 단계는 또한
    상기 비트 모두에 대응하는 상기 적어도 하나의 메모리 셀의 상기 물리 파라미터의 상기 적어도 하나의 값이, 상기 시도하는 단계에 의해 설정되는 상기 적어도 하나의 메모리 셀의 상기 물리 파라미터의 상기 적어도 하나의 값으로부터 접근가능하도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하고자 시도하는, 복수의 비트를 저장하는 방법.
  3. 제1항에 있어서,
    상기 물리 파라미터는 임계 전압인, 복수의 비트를 저장하는 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 제1항에 있어서,
    상기 적응형 맵핑을 제공하는 단계는 상기 비트의 적어도 일부분을 코드워드로 인코딩하는 단계를 포함하는, 복수의 비트를 저장하는 방법.
  11. 제10항에 있어서,
    상기 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 조절하는 단계는 상기 메모리 셀이 상기 코드워드의 각각 적어도 일부를 저장하도록, 상기 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 조절하는 단계를 포함하는, 복수의 비트를 저장하는 방법.
  12. 적어도 하나의 비트를 저장하는 방법으로서,
    적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 사전 결정된 세트에 대하여 상기 적어도 하나의 비트의 디폴트 맵핑을 제공하는 단계;
    상기 적어도 하나의 비트가 상기 디폴트 맵핑에 따라 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하는 단계;
    상기 시도하는 단계가, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 디폴트 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위가 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근 불가능하도록 설정하는 경우: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해, 상기 물리 파라미터의 상기 값의 범위의 상기 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 적응형 맵핑을 제공하여, 상기 적응형 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터 값의 범위에 접근가능하도록 하는 단계; 및
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 적응형 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하는 단계
    를 포함하는 적어도 하나의 비트를 저장하는 방법.
  13. 삭제
  14. 제12항에 있어서,
    상기 물리 파라미터는 임계 전압인, 적어도 하나의 비트를 저장하는 방법.
  15. 제12항에 있어서,
    상기 물리 파라미터 값 범위는 순서가 정해져 있는, 적어도 하나의 비트를 저장하는 방법.
  16. 제12항에 있어서,
    상기 적응형 맵핑을 제공하는 단계는 상기 적어도 하나의 비트의 적어도 일부분을 코드워드로 인코딩하는 단계를 포함하는, 적어도 하나의 비트를 저장하는 방법.
  17. 적어도 하나의 비트를 저장하는 방법으로서,
    적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 복수의 맵핑을 제공하는 단계;
    상기 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하는 단계 - 상기 시도하는 단계는, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 제1 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위에 접근 불가능한 값으로 설정하며, 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위는 상기 각각의 값 미만임 -;
    상기 시도의 결과에 응답하여: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해 실제로 사용하도록 상기 맵핑 중 상이한 맵핑을 선택하는 단계; 및
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 상이한 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하는 단계
    를 포함하는, 적어도 하나의 비트를 저장하는 방법.
  18. 삭제
  19. 제17항에 있어서,
    상기 물리 파라미터는 임계 전압인, 적어도 하나의 비트를 저장하는 방법.
  20. 제17항에 있어서,
    상기 물리 파라미터 값 범위는 순서가 정해져 있는, 적어도 하나의 비트를 저장하는 방법.
  21. 제17항에 있어서,
    상기 상이한 맵핑은 상기 적어도 하나의 비트의 적어도 일부분을 코드워드로 인코딩하는 것을 포함하는, 적어도 하나의 비트를 저장하는 방법.
  22. 적어도 하나의 메모리 셀을 포함하는 메모리 내에 복수의 비트를 저장하기 위한 컨트롤러로서,
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 상기 복수의 비트의 최대 유효 비트를 나타내도록, 상기 적어도 하나의 메모리 셀 각각에 대한 상기 물리 파라미터 범위들의 상기 물리 파라미터의 각각의 값을 설정하도록 시도하고;
    상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 비트의 디폴트 맵핑을 제공하고 - 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀에 대하여, 상기 디폴트 맵핑에 따라 상기 비트의 적어도 일부에 대응하는, 상기 하나의 메모리 셀의 상기 물리 파라미터 값 범위는, 상기 비트들의 최대 유효 비트를 저장하기 위해 상기 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근불가능함 -;
    상기 적어도 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 상기 적어도 하나의 값에 따라, 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 상기 비트의 적응형 맵핑을 제공하고;
    상기 적어도 하나의 메모리 셀 각각에 대하여, 상기 적어도 하나의 메모리 셀을 삭제하지 않고 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하도록, 상기 적응형 맵핑에 따라 상기 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 조절하도록
    동작하는 적어도 하나의 메모리 셀을 포함하는 메모리 내에 복수의 비트를 저장하기 위한 컨트롤러.
  23. 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하기 위한 컨트롤러로서,
    상기 적어도 하나의 비트가 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 디폴트 맵핑에 따라, 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하고;
    상기 시도가, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 디폴트 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위가 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근 불가능하도록 설정하는 경우: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해, 상기 물리 파라미터의 상기 값의 범위의 상기 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 적응형 맵핑을 제공하여, 상기 적응형 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터 값의 범위에 접근가능하게 하고;
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 적응형 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하도록
    동작하는, 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하기 위한 컨트롤러.
  24. 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하기 위한 컨트롤러로서,
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 복수의 맵핑을 제공하고;
    상기 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 상기 적어도 하나의 메모리 셀에 저장되도록 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하고 - 상기 시도는, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 제1 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위에 접근 불가능한 값으로 설정하며, 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위는 상기 각각의 값 미만임 -;
    상기 시도의 결과에 응답하여: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해 실제로 사용하도록 상기 맵핑 중 상이한 맵핑을 선택하고;
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 상이한 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하도록
    동작하는, 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하기 위한 컨트롤러.
  25. 메모리 디바이스로서,
    적어도 하나의 메모리 셀을 포함하는 메모리; 및
    컨트롤러
    를 포함하고,
    상기 컨트롤러는
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 복수의 비트의 최대 유효 비트를 나타내도록, 상기 적어도 하나의 메모리 셀 각각에 대한 상기 물리 파라미터 범위들의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하고;
    상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 비트의 디폴트 맵핑을 제공하고 - 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀에 대하여, 상기 디폴트 맵핑에 따라 상기 비트의 적어도 일부에 대응하는, 상기 하나의 메모리 셀의 상기 물리 파라미터 값 범위는, 상기 비트들의 최대 유효 비트를 저장하기 위해 상기 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근불가능함 -; 상기 적어도 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 상기 비트 모두를 상기 적어도 하나의 메모리 셀 내에 저장하기 위해 물리 파라미터 값 범위에 대한 상기 비트의 적응형 맵핑을 제공하고;
    상기 적어도 하나의 메모리 셀 각각에 대하여, 상기 적어도 하나의 메모리 셀을 삭제하지 않고 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하도록, 상기 적응형 맵핑에 따라 상기 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 조절하도록
    동작하는, 메모리 디바이스.
  26. 메모리 디바이스로서,
    적어도 하나의 메모리 셀을 포함하는 메모리; 및
    컨트롤러
    를 포함하고,
    상기 컨트롤러는
    적어도 하나의 비트가 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 디폴트 맵핑에 따라, 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하고;
    상기 시도가, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 디폴트 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위가 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근 불가능하도록 설정하는 경우: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해, 상기 물리 파라미터의 상기 값의 범위의 상기 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 적응형 맵핑을 제공하여, 상기 적응형 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터 값의 범위에 접근가능하게 하고;
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 적응형 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하도록
    동작하는, 메모리 디바이스.
  27. 메모리 디바이스로서,
    적어도 하나의 메모리 셀을 포함하는 메모리; 및
    컨트롤러
    를 포함하고,
    상기 컨트롤러는
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 적어도 하나의 비트의 복수의 맵핑을 제공하고;
    상기 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하고 - 상기 시도는, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 제1 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위에 접근 불가능한 값으로 설정하며, 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위는 상기 각각의 값 미만임 -;
    상기 시도의 결과에 응답하여: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해 실제로 사용하도록 상기 맵핑 중 상이한 맵핑을 선택하고;
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 상이한 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하도록
    동작하는, 메모리 디바이스.
  28. 시스템으로서,
    복수의 비트를 저장하는, 적어도 하나의 메모리 셀을 포함하는 제1 메모리; 및
    상기 제1 메모리의 호스트
    를 포함하고,
    상기 호스트는
    상기 제1 메모리를 관리하는 코드를 저장하기 위한 제2 메모리, 및
    상기 코드를 실행하는 프로세서를 포함하고,
    상기 제1 메모리를 관리하는 코드는
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 상기 복수의 비트의 최대 유효 비트를 나타내도록, 상기 적어도 하나의 메모리 셀 각각에 대한 상기 물리 파라미터 범위들의 상기 물리 파라미터의 각각의 값을 설정하도록 시도하고;
    상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 비트의 디폴트 맵핑을 제공하고 - 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀에 대하여, 상기 디폴트 맵핑에 따라 상기 비트의 적어도 일부에 대응하는, 상기 하나의 메모리 셀의 상기 물리 파라미터 값 범위는, 상기 비트들의 최대 유효 비트를 저장하기 위해 상기 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근불가능함 -;
    상기 적어도 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 상기 비트의 적응형 맵핑을 제공하고;
    상기 적어도 하나의 메모리 셀 각각에 대하여, 상기 적어도 하나의 메모리 셀을 삭제하지 않고 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하도록, 상기 적응형 맵핑에 따라 상기 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 조절함으로써
    상기 제1 메모리를 관리하는, 시스템.
  29. 시스템으로서,
    적어도 하나의 비트를 저장하기 위한 적어도 하나의 메모리 셀을 포함하는 제1 메모리; 및
    상기 제1 메모리의 호스트
    를 포함하고,
    상기 호스트는
    상기 제1 메모리를 관리하는 코드를 저장하기 위한 제2 메모리, 및
    상기 코드를 실행하는 프로세서를 포함하고,
    상기 제1 메모리를 관리하는 코드는
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 디폴트 맵핑을 제공하고;
    상기 적어도 하나의 비트가 상기 디폴트 맵핑에 따라 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하고;
    상기 시도가, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 디폴트 맵핑에 따라 상기 적어도 하나의 비트가 대응하는 상기 하나의 메모리 셀의 상기 물리 파라미터 값의 범위가 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근 불가능하도록 설정하는 경우: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해, 상기 물리 파라미터의 상기 값의 범위의 상기 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 적응형 맵핑을 제공하여, 상기 적응형 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터 값의 범위에 접근가능하도록 하고;
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 적응형 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정함으로써,
    상기 제1 메모리를 관리하는, 시스템.
  30. 시스템으로서,
    적어도 하나의 비트를 저장하는, 적어도 하나의 메모리 셀을 포함하는 제1 메모리; 및
    상기 제1 메모리의 호스트
    를 포함하고,
    상기 호스트는
    상기 제1 메모리를 관리하는 코드를 저장하기 위한 제2 메모리, 및
    상기 코드를 실행하는 프로세서를 포함하고,
    상기 제1 메모리를 관리하는 코드는
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 복수의 맵핑을 제공하고;
    상기 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하고 - 상기 시도는, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 제1 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위에 접근 불가능한 값으로 설정하며, 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위는 상기 각각의 값 미만임 -;
    상기 시도의 결과에 응답하여: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해 실제로 사용하도록 상기 맵핑 중 상이한 맵핑을 선택하고;
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 상이한 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하도록
    함으로써, 상기 제1 메모리를 관리하는, 시스템.
  31. 적어도 하나의 메모리 셀을 포함하는 메모리에 복수의 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체로서,
    상기 컴퓨터 판독가능한 코드는
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 적어도 하나의 값이 상기 복수의 비트의 최대 유효 비트를 나타내도록, 상기 적어도 하나의 메모리 셀 각각에 대한 상기 물리 파라미터 범위들의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하는 프로그램 코드;
    상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 비트의 디폴트 맵핑을 제공하는 프로그램 코드 - 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀에 대하여, 상기 디폴트 맵핑에 따라 상기 비트의 적어도 일부에 대응하는, 상기 하나의 메모리 셀의 상기 물리 파라미터 값 범위는, 상기 비트들의 최대 유효 비트를 저장하기 위해 상기 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근불가능함 -;
    상기 적어도 하나의 메모리 셀의 상기 물리 파라미터가 설정되었던 적어도 하나의 값에 따라, 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하기 위해 물리 파라미터 값 범위에 대한 상기 비트의 적응형 맵핑을 제공하는 프로그램 코드; 및
    상기 적어도 하나의 메모리 셀 각각에 대하여, 상기 적어도 하나의 메모리 셀을 삭제하지 않고 상기 비트 모두를 상기 적어도 하나의 메모리 셀에 저장하도록, 상기 적응형 맵핑에 따라 상기 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 조절하는 프로그램 코드
    를 포함하는, 적어도 하나의 메모리 셀을 포함하는 메모리에 복수의 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체.
  32. 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체로서,
    상기 컴퓨터 판독가능한 코드는
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 디폴트 맵핑을 제공하는 프로그램 코드;
    상기 적어도 하나의 비트가 상기 디폴트 맵핑에 따라 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하는 프로그램 코드;
    상기 시도가, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 디폴트 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터 값의 범위가 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값 미만이고 상기 각각의 값으로부터 접근 불가능하도록 설정하는 경우: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해, 상기 물리 파라미터의 상기 값의 범위의 상기 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 적응형 맵핑을 제공하여, 상기 적응형 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터 값의 범위에 접근가능하도록 하는 프로그램 코드; 및
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 적응형 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하는 프로그램 코드
    를 포함하는, 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체.
  33. 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체로서,
    상기 컴퓨터 판독가능한 코드는
    상기 적어도 하나의 메모리 셀의 물리 파라미터의 값의 범위의 사전 결정된 세트에 대한 상기 적어도 하나의 비트의 복수의 맵핑을 제공하는 프로그램 코드;
    상기 적어도 하나의 비트가 상기 맵핑 중 제1 맵핑에 따라 상기 적어도 하나의 메모리 셀에 저장되도록, 상기 적어도 하나의 메모리 셀의 각각의 메모리 셀의 상기 물리 파라미터의 각각의 값을 설정하고자 시도하는 프로그램 코드 - 상기 시도는, 상기 적어도 하나의 메모리 셀 중 하나의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을, 상기 제1 맵핑에 따라 상기 적어도 하나의 비트에 대응하는 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위에 접근 불가능한 값으로 설정하며, 상기 하나의 메모리 셀의 물리 파라미터의 값의 범위는 상기 각각의 값 미만임 -;
    상기 시도의 결과에 응답하여: 상기 적어도 하나의 메모리 셀에 상기 적어도 하나의 비트를 저장하기 위해 실제로 사용하도록 상기 맵핑 중 상이한 맵핑을 선택하는 프로그램 코드; 및
    상기 적어도 하나의 메모리 셀을 삭제하지 않고, 상기 상이한 맵핑에 따라, 상기 적어도 하나의 비트가 상기 적어도 하나의 메모리 셀에 저장되도록, 각각의 메모리 셀의 상기 물리 파라미터의 상기 각각의 값을 설정하는 프로그램 코드
    를 포함하는, 적어도 하나의 메모리 셀을 포함하는 메모리에 적어도 하나의 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 저장 매체.
  34. 삭제
  35. 삭제
  36. 삭제
KR1020117009232A 2008-09-28 2009-09-27 플래시 메모리에서의 적응형 코딩 방법 및 시스템 KR101738173B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10073208P 2008-09-28 2008-09-28
US61/100,732 2008-09-28
PCT/IB2009/054222 WO2010035241A1 (en) 2008-09-28 2009-09-27 Method and system for adaptive coding in flash memories

Publications (2)

Publication Number Publication Date
KR20110081822A KR20110081822A (ko) 2011-07-14
KR101738173B1 true KR101738173B1 (ko) 2017-05-19

Family

ID=41413940

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117009232A KR101738173B1 (ko) 2008-09-28 2009-09-27 플래시 메모리에서의 적응형 코딩 방법 및 시스템

Country Status (6)

Country Link
US (1) US8675417B2 (ko)
EP (1) EP2335245B1 (ko)
JP (1) JP5537551B2 (ko)
KR (1) KR101738173B1 (ko)
TW (1) TW201019325A (ko)
WO (1) WO2010035241A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100104840A (ko) * 2009-03-19 2010-09-29 삼성전자주식회사 셀 패턴에 따라 추가 ecc가 가능한 반도체 메모리 장치,상기 장치를 포함하는 전자 시스템
KR101438072B1 (ko) 2010-04-15 2014-09-03 라모트 앳 텔-아비브 유니버시티 리미티드 소거 없는 플래시 메모리의 다중 프로그래밍
US8296508B1 (en) * 2010-04-27 2012-10-23 Micron Technology, Inc. Secure memory device erase
US9070427B2 (en) 2010-08-13 2015-06-30 Sandisk Technologies Inc. Data coding using divisions of memory cell states
US9311969B2 (en) 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
US9256531B2 (en) 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic
US9280417B2 (en) * 2013-05-21 2016-03-08 Microsoft Technology Licensing, Llc Message storage in memory blocks using codewords
US9489294B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9117520B2 (en) 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9117514B2 (en) 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
US9390008B2 (en) 2013-12-11 2016-07-12 Sandisk Technologies Llc Data encoding for non-volatile memory
US9252817B2 (en) * 2014-01-10 2016-02-02 SanDisk Technologies, Inc. Dynamic log-likelihood ratio mapping for error correcting code decoding
US20150205664A1 (en) * 2014-01-17 2015-07-23 Fusion-Io, Inc. Determining a configuration parameter using a soft read command
US9678832B2 (en) 2014-09-18 2017-06-13 Sandisk Technologies Llc Storage module and method for on-chip copy gather
US9583196B2 (en) 2015-01-28 2017-02-28 Sandisk Technologies Llc Immediate feedback before or during programming
US9720612B2 (en) 2015-04-30 2017-08-01 Sandisk Technologies Llc Biasing schemes for storage of bits in unreliable storage locations
TWI659299B (zh) * 2018-04-19 2019-05-11 慧榮科技股份有限公司 資料儲存裝置及應用其的預防資料錯誤方法
US10891077B2 (en) * 2018-12-26 2021-01-12 Macronix International Co., Ltd. Flash memory device and controlling method thereof
US10838661B1 (en) 2019-04-29 2020-11-17 Western Digital Technologies, Inc. Fast storage class memory using write once memory coding
CN111627484B (zh) * 2020-05-29 2023-04-18 珠海创飞芯科技有限公司 Nor flash擦除干扰纠正方法及装置
US11404139B2 (en) * 2020-12-17 2022-08-02 Micron Technology, Inc. Smart sampling for block family scan

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
WO2008019347A2 (en) 2006-08-05 2008-02-14 Benhov Gmbh, Llc Solid state storage element and method
US20080148115A1 (en) 2006-12-17 2008-06-19 Anobit Technologies Ltd. High-speed programming of memory devices

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5837986A (en) * 1990-01-05 1998-11-17 Symbol Technologies, Inc. Modification of software files in a microprocessor-controlled device via two-dimensional bar code symbols
AU1041097A (en) * 1996-03-19 1997-10-10 Mitsubishi Denki Kabushiki Kaisha Encoder, decoder and methods used therefor
US6636641B1 (en) * 1996-03-19 2003-10-21 Mitsubishi Denki Kabushiki Kaisha Encoding apparatus, decoding apparatus, encoding method and decoding method
US6744925B2 (en) * 1996-03-19 2004-06-01 Mitsubishi Denki Kabushiki Kaisha Encoding apparatus, decoding apparatus, encoding method, and decoding method
US6263312B1 (en) * 1997-10-03 2001-07-17 Alaris, Inc. Audio compression and decompression employing subband decomposition of residual signal and distortion reduction
US6175893B1 (en) * 1998-04-24 2001-01-16 Western Digital Corporation High bandwidth code/data access using slow memory
US6377706B1 (en) * 1998-05-12 2002-04-23 Xerox Corporation Compression framework incorporating decoding commands
US6597689B1 (en) * 1998-12-30 2003-07-22 Nortel Networks Limited SVC signaling system and method
US7106788B1 (en) * 1999-11-19 2006-09-12 3Com Corporation Method and system for analytically computing and using an ANSpcm signal
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
US6637011B1 (en) * 2000-10-02 2003-10-21 Lsi Logic Corporation Method and apparatus for quick search for identities applicable to specified formula
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
ATE302464T1 (de) * 2000-12-15 2005-09-15 Koninkl Philips Electronics Nv Datenverarbeitungseinrichtung mit einer speicherstelle, in der daten gemäss einem wom- code gespeichert werden
JP4282989B2 (ja) * 2000-12-20 2009-06-24 エヌエックスピー ビー ヴィ Womメモリーを備えたデータ処理装置
US6469931B1 (en) 2001-01-04 2002-10-22 M-Systems Flash Disk Pioneers Ltd. Method for increasing information content in a computer memory
US6727847B2 (en) * 2001-04-03 2004-04-27 Rosum Corporation Using digital television broadcast signals to provide GPS aiding information
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
KR100941196B1 (ko) 2001-11-14 2010-02-10 더 로섬 코퍼레이션 디지털 텔레비전 신호를 이용한 gps 보조 정보 제공방법, 장치, 컴퓨터-판독형 매체
US6915020B2 (en) 2001-12-19 2005-07-05 Hewlett-Packard Development Company, L.P. Generating graphical bar codes by halftoning with embedded graphical encoding
US7292647B1 (en) * 2002-04-22 2007-11-06 Regents Of The University Of Minnesota Wireless communication system having linear encoder
US6914505B2 (en) * 2002-06-07 2005-07-05 Matsushita Electric Industrial Co., Ltd. Deflection yoke and CRT device
US7433347B1 (en) * 2002-06-28 2008-10-07 Arraycomm, Llc Broadcast superframe with variable reuse and interference levels for a radio communications system
US7164726B1 (en) * 2002-06-28 2007-01-16 Arraycomm, Llc. Broadcast burst using spatial diversity for a radio communications system
US7164739B1 (en) * 2002-06-28 2007-01-16 Arraycomm, Llc. Broadcast burst with repeated weights for a radio communications system
US6928287B2 (en) 2002-06-28 2005-08-09 Arraycomm, Inc. Efficient broadcast channel structure and use for spatial diversity communications
WO2004047062A2 (en) 2002-11-14 2004-06-03 Opentv, Inc. Positioning of images in a data stream
US7237074B2 (en) * 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US6903669B1 (en) * 2003-10-03 2005-06-07 Cirrus Logic, Inc. Systems and methods for decoding compressed data
US20050147131A1 (en) * 2003-12-29 2005-07-07 Nokia Corporation Low-rate in-band data channel using CELP codewords
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7383375B2 (en) * 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
CN101027842B (zh) * 2004-07-27 2012-05-02 Nxp股份有限公司 数据处理电路和编码/解码输入数据字的方法
WO2006039801A1 (en) * 2004-10-12 2006-04-20 Nortel Networks Limited System and method for low density parity check encoding of data
WO2006062993A2 (en) 2004-12-09 2006-06-15 Massachusetts Institute Of Technology Lossy data compression exploiting distortion side information
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7196928B2 (en) * 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
US7199735B1 (en) * 2005-08-25 2007-04-03 Mobilygen Corporation Method and apparatus for entropy coding
US7348903B2 (en) * 2005-09-26 2008-03-25 Samsung Electronics Co., Ltd. Method and apparatus for enhancing performance of entropy coding, and video coding method and apparatus using the entropy coding performance enhancing method
WO2007035070A1 (en) 2005-09-26 2007-03-29 Samsung Electronics Co., Ltd. Method and apparatus for enhancing performance of entropy coding, and video coding method and apparatus using the entropy coding performance enhancing method
US7934137B2 (en) 2006-02-06 2011-04-26 Qualcomm Incorporated Message remapping and encoding
US7388781B2 (en) * 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US8234537B2 (en) * 2006-03-31 2012-07-31 Intel Corporation Layered decoder and method for performing layered decoding
KR101059005B1 (ko) 2006-04-13 2011-08-23 엔엑스피 비 브이 반도체 장치, 그 식별자 생성 방법 및 그 식별 방법
US7697326B2 (en) 2006-05-12 2010-04-13 Anobit Technologies Ltd. Reducing programming error in memory devices
US8239735B2 (en) * 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
JP4999921B2 (ja) * 2006-05-12 2012-08-15 アノビット テクノロジーズ リミテッド メモリ素子用の歪み推定と誤り訂正符号化の組み合せ
US7533328B2 (en) 2006-07-04 2009-05-12 Sandisk Il, Ltd. Method of error correction in a multi-bit-per-cell flash memory
JP4896605B2 (ja) * 2006-07-04 2012-03-14 株式会社東芝 不揮発性半導体記憶システム
US7716415B2 (en) * 2006-08-01 2010-05-11 Sandisk Il Ltd. Method of avoiding errors in flash memory
US7958426B2 (en) * 2006-08-25 2011-06-07 Innovation Specialists, Llc Distributed block coding (DBC)
JP2008077810A (ja) * 2006-09-25 2008-04-03 Toshiba Corp 不揮発性半導体記憶装置
TWI360126B (en) * 2006-09-28 2012-03-11 Sandisk Corp Nonvolatile memory with adaptive operations and me
JP5177991B2 (ja) * 2006-10-25 2013-04-10 株式会社東芝 不揮発性半導体記憶装置
JP5409371B2 (ja) * 2006-11-03 2014-02-05 サンディスク テクノロジィース インコーポレイテッド 可変読み出ししきい値を有する不揮発性メモリ
US7558109B2 (en) * 2006-11-03 2009-07-07 Sandisk Corporation Nonvolatile memory with variable read threshold
US7545293B2 (en) * 2006-11-14 2009-06-09 Qualcomm Incorporated Memory efficient coding of variable length codes
US7573407B2 (en) 2006-11-14 2009-08-11 Qualcomm Incorporated Memory efficient adaptive block coding
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
US7984360B2 (en) * 2006-12-31 2011-07-19 Ramot At Tel Aviv University Ltd. Avoiding errors in a flash memory by using substitution transformations
US8170617B2 (en) * 2007-03-26 2012-05-01 Sibeam, Inc. Extensions to adaptive beam-steering method
US7970215B2 (en) * 2007-03-30 2011-06-28 Intel Corporation Automatic generation of compact code tables
US7577034B2 (en) * 2007-09-26 2009-08-18 Sandisk Corporation Reducing programming voltage differential nonlinearity in non-volatile storage
US8254486B2 (en) * 2007-09-28 2012-08-28 Intel Corporation Unified closed loop SU/MU-MIMO signaling and codebook design
WO2009040775A2 (en) 2007-09-28 2009-04-02 Nokia Corporation User equipment-initiated precoding subset restriction for communication systems
KR101177278B1 (ko) * 2007-10-08 2012-08-24 삼성전자주식회사 비휘발성 메모리 셀 프로그래밍 방법
US8335977B2 (en) 2007-12-05 2012-12-18 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
US8269498B2 (en) * 2009-05-04 2012-09-18 The Regents Of The University Of California Method and apparatus for MRI signal excitation and reception using non-resonance RF method (NORM)

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
WO2008019347A2 (en) 2006-08-05 2008-02-14 Benhov Gmbh, Llc Solid state storage element and method
US20080148115A1 (en) 2006-12-17 2008-06-19 Anobit Technologies Ltd. High-speed programming of memory devices

Also Published As

Publication number Publication date
US8675417B2 (en) 2014-03-18
JP5537551B2 (ja) 2014-07-02
JP2012503816A (ja) 2012-02-09
EP2335245A1 (en) 2011-06-22
US20100082885A1 (en) 2010-04-01
WO2010035241A1 (en) 2010-04-01
KR20110081822A (ko) 2011-07-14
TW201019325A (en) 2010-05-16
EP2335245B1 (en) 2015-01-07

Similar Documents

Publication Publication Date Title
KR101738173B1 (ko) 플래시 메모리에서의 적응형 코딩 방법 및 시스템
US7533328B2 (en) Method of error correction in a multi-bit-per-cell flash memory
US8671327B2 (en) Method and system for adaptive coding in flash memories
KR100987632B1 (ko) Mbc 플래시 메모리에서의 에러 보정 방법
US9977713B2 (en) LDPC decoder, semiconductor memory system and operating method thereof
US9397701B1 (en) System and method for lifetime specific LDPC decoding
CN101529525B (zh) 每单元多位的闪速存储器的概率错误校正
US9070453B2 (en) Multiple programming of flash memory without erase
JP5177991B2 (ja) 不揮発性半導体記憶装置
JP4818381B2 (ja) 半導体メモリ装置
GB2537484A (en) Read level grouping for increased flash performance
US11211950B2 (en) Decoding device and decoding method
JP2011197957A (ja) 誤り訂正符号復号装置及び誤り訂正符号復号方法
KR102556479B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
JP7039298B2 (ja) メモリシステム
KR20180010448A (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US20150317203A1 (en) Code-Based Read Control for Data Storage Devices
CN112860474B (zh) 快速收敛的低密度奇偶校验码的软位翻转解码器
US11095316B2 (en) Controller and operating method for performing read operation to read data in memory device
WO2017098581A1 (ja) 記憶装置、及び、データの誤り訂正方法
KR102530269B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
IL196239A (en) Method of error correction in a multi-bit-per-cell flash memory
JP2021048525A (ja) メモリシステム

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
X701 Decision to grant (after re-examination)