KR20070087557A - 데이터 비트 저장 방법, 메모리 장치 및 데이터 저장시스템 - Google Patents

데이터 비트 저장 방법, 메모리 장치 및 데이터 저장시스템 Download PDF

Info

Publication number
KR20070087557A
KR20070087557A KR1020077010412A KR20077010412A KR20070087557A KR 20070087557 A KR20070087557 A KR 20070087557A KR 1020077010412 A KR1020077010412 A KR 1020077010412A KR 20077010412 A KR20077010412 A KR 20077010412A KR 20070087557 A KR20070087557 A KR 20070087557A
Authority
KR
South Korea
Prior art keywords
bits
bit
interleaving
cell
data
Prior art date
Application number
KR1020077010412A
Other languages
English (en)
Other versions
KR100961288B1 (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 KR20070087557A publication Critical patent/KR20070087557A/ko
Application granted granted Critical
Publication of KR100961288B1 publication Critical patent/KR100961288B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/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
    • G11C16/10Programming or data input circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

M≥2 개의 논리 페이지의 N 개의 비트를 저장하기 위해, 이 비트는 인터리빙(interleaving)되고, 인터리빙된 비트는 셀당 M 비트씩
Figure 112007034050047-PCT00024
개의 메모리 셀에 프로그램된다. 바람직하게는, 인터리빙은 각각의 논리 페이지로부터의 동일한 비트 수를
Figure 112007034050047-PCT00025
셀의 각각의 비트 페이지에 둔다. 셀로부터 비트가 판독될 때, 비트들은 디인터리빙(deinterleaving)된다. 인터리빙은 결정론적일 수도 있고 랜덤일 수도 있으며, 소프트웨어 또는 전용 하드웨어에 의해 행해질 수 있다.

Description

데이터 비트 저장 방법, 메모리 장치 및 데이터 저장 시스템{STATES ENCLODING IN MULTI-BIT FLASH CELLS FOR OPTIMIZING ERROR RATE}
본 발명은 플래시 메모리에 관한 것으로, 보다 구체적으로는 멀티 비트 플래시 셀에 데이터를 저장하는 방법에 관한 것이다.
플래시 메모리 장치는 수년 전부터 알려져 왔다. 통상, 플래시 메모리 내의 각각의 셀은 1 비트의 정보를 저장한다. 통상, 비트를 저장하는 방법은 셀의 두 상태를 지원하는데, 한 상태는 논리 "0"을 나타내고, 다른 상태는 논리 "1"을 나타낸다. 플래시 메모리 셀에서, 두 상태는 셀의 채널(셀의 트랜지스터의 소스 및 드레인 요소를 접속하는 영역) 위에 플로팅 게이트를 구비하고 이 플로팅 게이트 내에 저장된 전하량에 대해 두 개의 유효 상태를 가짐으로써 구현된다. 통상적으로, 한 상태는 플로팅 게이트에서 제로 전하를 가지며 소거된 후 셀이 기록되지 않은 최초 상태이고(일반적으로 "1" 상태를 나타내도록 규정), 다른 상태는 플로팅 게이트 내에 소정의 부의 전하량을 갖는다(일반적으로 "0" 상태를 나타내도록 규정). 게이트 내에 부의 전하를 가지면, 셀의 트랜지스터의 임계 전압(즉, 트랜지스터가 도통하도록 트랜지스터의 제어 게이트에 인가되어야 하는 전압)이 증가한다. 따라서, 셀의 임계 전압을 검사함으로써 저장된 비트를 판독하는 것이 가능하다. 만약 임계 전압이 보다 높은 상태에 있으면 비트값은 "0"이고, 임계 전압이 보다 낮은 상태에 있으면 비트값은 "1"이다. 실제로, 셀의 임계 전압을 정확하게 판독할 필요는 없다. 셀이 두 상태 중 현재 어느 상태에 위치하고 있는 지를 정확하게 식별하기만 하면 된다. 이 목적을 위해, 두 상태의 중간에 있는 기준 전압 값과 비교하여 셀의 임계 전압이 이 기준 전압 값보다 높은 지 아니면 낮은 지를 판정하면 된다.
도 1a는 이러한 작업을 그래프로 나타낸 것이다. 구체적으로는, 도 1a는 다수 셀의 임계 전압의 분포를 도시하고 있다. 플래시 메모리의 셀들은 (예를 들어 불순물 농도의 작은 변화 또는 실리콘 구조 내의 결함으로 인해)그 특성 및 동작이 정확히 동일하지는 않기 때문에, 모든 셀에 동일한 프로그래밍 동작을 적용해도 모든 셀이 정확히 동일한 임계 전압을 가질 수는 없게 된다. (통상, 데이터를 플래시 메모리에 기록하는 것을 일반적으로 플래시 메모리를 "프로그래밍"한다고 한다.) 대신에, 임계 전압은 도 1a에 도시된 방법과 유사하게 분포된다. "1"의 값을 저장하는 셀은 통상 부의 임계 전압을 갖는데, 대부분의 셀이 도 1a의 좌측 피크로 도시된 값에 가까운 임계 전압을 가지며, 일부 보다 적은 수의 셀은 보다 낮거나 또는 보다 높은 임계 전압을 갖는다. 마찬가지로, "0"의 값을 저장하는 셀은 정의 임계 전압을 갖는데, 대부분의 셀이 도 1a의 우측 피크로 도시된 값에 가까운 임계 전압을 가지며, 일부 보다 적은 수의 셀은 보다 낮거나 또는 보다 높은 임계 전압을 갖는다.
최근에는, "멀티 레벨 셀" 또는 간략히 MLC라고 하는 기법을 사용하는 새로 운 종류의 플래시 장치가 시장에 출현하였다. MBC 플래시에 의해 개선된 점은 각 셀에 2 비트를 저장하는 것이다. (원리상 MBC는 셀당 2 비트보다 많은 비트를 저장하는 것도 포함하지만, 그러한 셀은 현재까지는 시장에 없다. 설명을 단순화하기 위해, 여기서는 2비트의 경우만 중점을 두기로 한다. 그러나, 본 발명은 셀당 2 비트보다 더 많은 비트를 지원하는 플래시 메모리 장치에도 동등하게 적용될 수 있다.) 단일 셀에서 2 비트의 정보를 저장하기 위해, 셀은 네 개의 상이한 상태 중 한 상태에 있을 수 있어야 한다. 셀의 상태는 그 셀의 임계 전압으로 표현되므로, MBC 셀이 그 임계 전압에 대해 네 개의 상이한 유효 범위를 지원해야 한다는 것은 분명하다. 도 1b는 통상의 MBC 셀에 대한 임계 전압 분포를 도시한 것이다. 예상대로 도 1b는 네 개의 피크를 갖는데, 이들 각각은 한 상태에 대응한다. SBC의 경우에는, 각 상태가 실제로 범위(range)이며 단일 수(number)가 아니다. 셀의 내용을 판독할 때, 셀의 임계 전압이 있어야 하는 범위는 정확하게 동일해야 한다. MBC 플래시 장치의 종래기술의 예에 대해서는 Harari의 미국 특허 제5,434,525호를 참고하라.
마찬가지로, 단일 셀에 3 비트 정보를 저장하기 위해, 셀은 8 개의 다른 상태들 중 하나에 있을 수 있어야 한다. 따라서, 3 비트 MBC 셀은 그 임계 전압에 대해 8 개의 상이한 유효 범위를 갖는다. 도 1c는 통상적인 3 비트 MBC 셀에 대한 임계 전압 분포를 도시한 것이다. 예상대로, 도 1c는 각각이 하나의 상태에 대응하는 8 개의 피크를 갖고 있다. 도 1d는 4 비트 MBC 셀에 대한 임계 전압 분포를 도시하고 있는데, 여기서는 16 개의 임계 전압 범위로 표시된 16 개의 상태가 요구 된다.
네 상태를 통해 MBC 셀의 2 비트를 인코딩할 때, 일반적으로 도 1b의 맨 좌측 상태(통상 부의 임계 전압을 가짐)는 두 비트가 모두 "1"의 값을 갖는 경우를 나타낸다. (아래 논의에서는, 셀의 2 비트를 "하위 비트"와 "상위 비트"로 명명하는 표기를 사용한다. 비트의 명시적 값은 ["상위 비트" "하위 비트"] 형태로 기록되는데, 우측에 하위 비트 값을 갖는다. 따라서 하위 비트가 "0"이고, 상위 비트가 "1인 경우는 "10"으로 기록된다. 이 용어의 선택 및 표기는 임의적이며, 다른 이름 및 인코딩도 가능하다). 이 표기를 사용하면, 맨 좌측 상태는 "11"의 경우를 나타낸다. 다른 세 상태는 통상 좌측에서 우측으로 "10", "00", "01"의 순서로 할당된다. 전술한 인코딩을 사용하는 MBC NAND 플래시의 실시예는 Chen의 미국특허 제5,522,580호에 개시되어 있는데, 이 특허는 참조로서 본 명세서에 완전히 포함된다. 특히 Chen의 특허 중 도 8을 참조하라. Tanaka의 미국 특허 제6,643,188호는 MBC NAND 플래시 메모리의 유사한 구현예를 보여주고 있지만, 도 7에는 비트 인코딩에 다른 상태, 즉 "11", "10", "01", "00"을 할당한다. Chen의 인코딩은 도 1b에 도시된 인코딩이다.
여기서는 위 용어 및 표기를 다음과 같이 셀당 2 비트보다 많은 경우로 확장한다. 맨좌측의 기록되지 않은 상태는 "모두 1"("1...1")을 나타내고, 스트링("1...10")은 셀의 최하위 비트만이 "0"으로 기록되는 경우를 나타내고, 스트링("01...1")은 셀의 최상위 비트만이 "0"으로 기록되는 경우를 나타낸다.
MBC 셀의 내용을 판독할 때, 셀의 임계 전압이 있는 범위는 정확하게 식별되 어야 하는데, 이 경우 이것은 단 하나의 기준 전압과 비교함으로써 항상 달성될 수는 없기 때문이다. 대신에 여러 비교가 필요할 수 있다. 예를 들면, 도 1b에 도시된 경우에서, 하위 비트를 판독하기 위해, 먼저 셀의 임계 전압을 기준 비교 전압(V1)과 비교한 다음, 이 비교의 결과에 따라 셀의 임계 전압을 제로 기준 비교 전압 또는 기준 비교 전압(V2)과 비교한다. 이와 달리, 하위 비트는 임계 전압을 조건없이 제로 기준 전압 및 기준 비교 전압(V2) 모두와 비교함으로써 판독된다. 셀당 2비트보다 많은 경우에는 보다 많은 비교가 필요할 수 있다.
단일 MBC 셀의 비트가 모두 동일한 플래시 페이지에 속할 수도 있고, 또는 예를 들어 4 비트 셀에서는 최하위 비트가 페이지 0에 있고, 그 다음 비트가 페이지 1에 있으며, 그 다음 비트가 페이지 2에 있고 최고 비트가 페이지 3에 있는 방식으로 상이한 페이지에 할당될 수도 있다. (페이지는 플래시 메모리에 개별적으로 기록될 수 있는 데이터의 가장 작은 부분이다.) 두 방법 모두 사용되고 있다. 본 발명의 방법은 본 명세서에서 "페이지당 각각의 비트(each bit in its own page)" 상황으로 설명되어 있지만, 본 발명의 방법은 동일 페이지에 모든 비트가 위치하는 경우에 적용될 수도 있다.
2 비트 MBC 셀에 대해 위에서 설명한 바와 같이, 셀의 임계 전압 상태와 이들을 나타내는 비트 인코딩 사이의 대응관계를 정의하는 방법에는 하나보다 많은 선택사항이 있다. 각각의 이러한 대응관계는 임계 전압축을 따른 인코딩된 비트 패턴의 특정 순서와 동일하다. 전술한 바와 같이, Chen의 특허 및 Tanaka의 특허 는, 매우 유사한 셀 설계를 개시하고 있지만, 둘 모두 동등하게 사용가능한 상이한 할당(따라서 상이한 순서)을 이용하였다. 본 발명의 목적은 어떤 의미에서 다른 순서보다 더 나은 양호한 순서를 제공하는 것이다.
일견, 모든 n 비트 패턴의 모든 순열이 n 비트 MBC 셀에 대해 고려되어야 한다고 생각할 수도 있을 것이다. N 개의 요소의 순열의 수는 N!(N 팩토리얼)이다. n 비트를 갖는 셀은 2n 개의 상이한 비트 패턴을 가지며, 따라서 2n!의 순열을 갖는다. 따라서 2 비트 셀은 4!=24 개의 가능한 순서를 가지게 되며, 3 비트 셀은 8!=40,320 개의 가능한 순서를 갖게 되는 식이다. 그러나, 플래시 셀을 프로그램하는 방식 때문에 순서에 제한이 있으며, 이들 제한은 실제로 사용할 수 있는 순서의 수를 감소시킨다.
첫째, 위에서 정의한 관례에 따르면, 맨좌측 상태가 항상 "모두 1" 비트 패턴에 대응한다. 둘째, 각각의 비트가 상이한 페이지에 위치하는 설계에서는, 모두 한번에 기록되기보다는 순차적으로 기록되는 셀의 비트들로 인한 제한이 있다. 프로그래밍은 셀의 임계 전압을 증가시킬 수만 있고 이것을 감소시킬 수는 없다는 점을 명심해야 한다. 임게 전압의 감소는 소거시에만 행해질 수 있지만, 소거는 셀의 큰 그룹(통상적인 용어로 "블록")에만 적용될 수 있다. 따라서, 비트를 "0"으로 기록할 때 임계 전압을 감소시키는 데 필요한 비트 패턴의 어떠한 순서도 사용될 수 없다. 예를 들어 2 비트 MBC 셀을 고려해보자. 좌측에서 우측으로 "11", "00", "10", "01"의 순서를 선택하였다고 가정한다. 먼저 하위 비트를 "0"으로 기 록하고, 셀은 "10" 상태로 되었다고 가정한다. 이제 상위 비트를 "0"으로 기록하기를 원한다고 하자. 이것은 임계치를 "10"을 나타내는 상태로부터 "00"을 나타내는 상태로 하향 변환할 것을 요구하지만, 위에서 살펴본 바와 같이, 이것은 통상의 플래시 메모리에서는 불가능하다. 따라서, 비트 프로그래밍 연산의 모든 적합한 순서에 대해 임계 전압을 감소시키는 것을 절대로 요구하지 않는 방법으로 비트 패턴의 순서를 선택해야 한다. 이들 두 제한을 만족하는 순서를 본 명세서에서는 "유효(valid)" 순서라고 지칭한다. 이와 유사하게, 유효 순서를 생성하도록 비트 패턴을 셀의 상태에 할당하는 것을 "유효" 할당이라고 지칭한다.
셀의 비트를 상이한 페이지에 할당하는 MBC 플래시 메모리에서, 하위 번호의 페이지에 하위 비트를 가지며, 사용자에게 하위 번호의 페이지가 상위 번호의 페이지 앞에 기록되도록 순차적으로 페이지를 기록할 것을 요구하는 것이 일반적이다. 본 명세서의 상세한 설명에서는 이러한 관례를 이용하지만, 본 발명의 방법은 비트를 페이지에 할당하고 페이지의 기록을 순서화하는 다른 방법에도 동등하게 적용할 수 있다.
도 2는 2 비트 MBC 셀의 비트 패턴의 순서에 적용할 수 있는 제한 사항을 도시한 도면이다. 각각의 비트 패턴은 원 내부에 2진 표기로 표시되어 있고, 원 밖에는 10진 표기로 표시되어 있다. 두 표기 모두 동등하지만, 순서 제한을 이해하기 위해서는 2진 표기를 사용하는 것이 더 편리하고, 어떠한 패턴에 대해 말할 때에는 10진 표기를 사용하는 것이 더 편리하다. 도 2에서 두 개의 원을 연결하는 화살표는 화살표가 출발 상태가 화살표가 가리키는 상태에 앞선다는 것을 의미한 다.
도 2에서, 예상대로 "11"은 제 1 상태가 되어야 한다는 것을 알 수 있다. 이것은 이 상태가 모든 다른 상태에 앞서야 한다는 사실로부터 알 수 있다. 또한, 전술한 바와 같이, "10"은 "00"에 앞서야 한다. 2 비트의 경우가 단순하기 때문에, 모든 제한 사항을 만족하는 순서는 단 세 개뿐이라는 것을 알 수 있다.
a. 11, 10, 00, 01 (이것은 Chen이 사용한 것이다)
b. 11, 10, 01, 00 (이것은 Tanaka가 사용한 것이다.)
c. 11, 01, 10, 00
도 3은 3 비트 MBC 셀의 경우의 대응하는 그래픽 표현을 나타내고, 도 4는 4 비트 MBC 셀의 경우의 대응하는 그래픽 표현을 나타낸 것이다. 두 경우 모두 2 비트 경우보다는 훨씬 더 복잡하며 보다 많은 유효 순서가 허용된다.
각각의 경우에 얼마나 많은 적절한 순서들이 있는 지 찾아보자. 먼저 2 비트 경우(도 2)를 고려한다. "11"은 항상 처음에 오기 때문에, 이것은 무시하고, 도 2에 도시된 제한사항을 만족하면서 맨 우측 세 상태에 다른 세 개의 패턴을 두는 얼마나 많은 선택권이 있는 지에 대한 동등한 문제를 고려한다. "10" 및 "00"은 이들 사이에 엄격한 필수 순서를 가지므로, 이들 두 패턴을 나열하기 위한 세 위치 중 두 위치를 선택함으로써 시작하기로 한다. 한번에 k를 취한 n 요소의 조합의 수를 C(n,k)로 지정하는데, 이것은 (n!)/((n-k)!)/(k!)이다. 이 경우에는, k=2이고 n=3이며, "10" 및 "00"을 적소에 나열하는 방법의 수는 3!/1!/2!=3이다. 마지막 패턴("01")은 이제 좌측 위치에만 위치해야 하며, 따라서 위에서 살펴본 바 와 같이, 좌측에 세 개의 적절한 순서를 갖게 된다.
이제 좀 더 복잡한 3 비트 셀(도 3)을 생각해 보자. 3 비트 셀의 최하위 비트를 기록한 후에, (아직 기록되지 않은)나머지 2 비트는 2 비트 셀과 동일한 문제를 갖고 있다는 것을 알 수 있다. 이것은 도 3에서 알 수 있다. 즉, {6,4,0,2}를 포함하는 "브랜치(branch)"는 도 2와 정확하게 동일한 구조를 갖고 있다. 그러나, 이 문제는 정확하게 세 개의 다른 해법을 갖고 있음을 이미 알고 있다. 따라서, 7 개의 이용가능한 위치 중에서 {6,4,0,2}의 네 멤버에 대한 위치를 선택함으로써 순서의 구성을 시작하기로 한다(모두 1인 패턴은 항상 그 맨 좌측에 지정된 위치를 갖는다는 점을 상기하라). 이를 위한 C(7,4) 개의 방법이 있다. 각각의 그러한 방법은 브랜치 멤버의 세 개의 유효 내부 순서를 가지며, 따라서, 이들 네 개의 패턴을 할당하는 방법으로서 총 C(7,4)×3 개의 방법이 있다. 이제 각각의 이러한 선택에 대하여, {5,1} 브랜치 멤버를 나타내는 세 개의 아직 할당되지 않은 위치 중 두 개를 선택한다. 이것은 C(3,2)=3의 방법으로 행해질 수 있다. 마지막 패턴(3)은 남아 있는 위치로만 가야 한다. 이 결과 3 비트 MBC 셀에 대해 C(7,4)×3×3=315 개의 유효 순서가 생성된다.
4비트 MBC 셀(도 4 참고)에 대해서도 유사하게 계산할 수 있다. {14,12,10,6,8,4,2,0} 브랜치의 8 개의 멤버에 대한 위치는 C(15,8) 방식으로 선택될 수 있는데, 각각의 1에 3 비트 경우에 대해 위에서 살펴본 315 개의 가능한 내부 순서가 곱해진다. 그 다음에, 다시 나머지 7 개의 상태를 나머지 7 개의 위치에 배치하기 위해 갖는 배열의 수인 315를 곱한다. 최종 결과는 C(15,8)×315× 315=638,512,875이다. 더 큰 비트 수의 유효 순서의 수는 무한하다.
후술하는 바와 같이, 부칙들(appendices)은 이들 순서의 분석과 함께 3 비트 4 비트 순서들을 나열한다. 부칙 A는 모두 315 개의 3 비트 순서를 나열한다. 부칙 B, C, D, E는 4 비트 순서의 부분적인 리스트이다.
2 비트보다 많은 MBC 셀에 대한 다수의 가능한 비트 순서는 어느 것이 사용하기에 가장 최선의 것인가에 대한 문제를 가져온다. Takeuchi의 미국 특허 제6,046,935호는 MBC 셀에 대한 비트 패턴 순서를 구성하는 방법을 제안하고 있다. Takeuchi의 특허의 도 86a 내지 86c는 이 방법을 3 비트 셀에 적용한다. Takeuchi의 특허의 도 88a 내지 88d는 이 방법을 4비트 셀에 적용한다. Takeuchi의 특허의 도 90a 내지 90e는 이 방법을 일반적인 M 비트의 경우에 적용하는 방법을 나타낸다. 그러나, 후술하는 바와 같이, Takeuchi에 의해 제안된 방법은 결국 최적의 순서는 아니다.
따라서, MBC 셀에서 비트의 순서를 정하는 최적의 방법이 필요하다는 인식이 만연하며, 또한 이러한 방법을 갖는 것이 매우 바람직할 것이다.
본 발명에 따르면, N 개의 입력 데이터 비트를 저장하는 방법에 있어서, (a) M이 적어도 2인
Figure 112007034050047-PCT00001
셀을 제공하는 단계와, (b) 상기 N 개의 입력 비트를 인터리빙(interleaving)하여 N 개의 인터리빙된 비트를 제공하는 단계와, (c) 각각의 상기 셀을 상기 인터리빙된 비트 중 M 개까지의 비트로 프로그램하는 단계를 포함하는 데이터 비트 저장 방법이 제공된다.
본 발명에 따르면, 메모리 장치로서, (a) 적어도 K 개의 셀을 포함하는 메모리와, (b) (i) 상기 N 개의 입력 비트를 인터리빙(interleaving)하여 N 개의 인터리빙된 비트를 제공하는 단계와, (ii) 상기 메모리의 K 개의 셀 각각을 상기 인터리빙된 비트 중
Figure 112007034050047-PCT00002
(M은 적어도 2) 개까지의 비트로 프로그램하는 단계에 의해 상기 셀에 N 개의 데이터 입력 비트를 저장하도록 동작하는 제어기를 포함하는 메모리 장치가 제공된다.
본 발명에 따르면, 데이터 저장 시스템으로서, (a) 적어도 K 개의 셀을 포함하는 메모리를 포함하는 메모리 장치와, (b) 저장할 N 개의 입력 데이터 비트를 제공하는 상기 메모리 장치의 호스트와, (c) 상기 N 개의 입력 비트를 인터리빙하여, N 개의 인터리빙된 비트를 제공하는 인터리빙 메커니즘을 포함하되, 상기 메모리의 K 개의 셀 각각은 상기 인터리빙된 비트 중
Figure 112007034050047-PCT00003
(M은 적어도 2) 개까지의 비트로 프로그램되는 데이터 저장 시스템이 제공된다.
본 발명에 따르면, N 개의 데이터 비트 저장 방법에 있어서, (a) M 개(M은 적어도 2)의 입력 논리 페이지 중에서 상기 N 개의 데이터 비트를 분할하는 단계와, (b) 적어도 하나의 리던던시 비트를 상기 입력 논리 페이지 각각에 첨부하여 L≥N+M 개의 입력 비트를 제공하는 단계와, (c)
Figure 112007034050047-PCT00004
개의 셀을 제공하는 단계와, (d) 상기 L 개의 입력 비트를 인터리빙하여 L 개의 인터리빙된 비트를 제공하는 단계와, (e) 각각의 상기 셀을 상기 인터리빙된 비트 중 M 개까지의 비트로 프로그램하는 단계를 포함하는 데이터 비트 저장 방법이 제공된다.
본 발명에 따르면, M≥2 개의 논리 페이지 중에서 분할된 N 개의 데이터 비트를 저장하는 메모리 장치에 있어서, (a) 적어도 하나의 리던던시 비트를 각각의 상기 논리 페이지에 첨부하여 L≥N+M 개의 입력 비트를 제공하는 메커니즘과, (b) 적어도
Figure 112007034050047-PCT00005
개의 셀을 포함하는 메모리와, (c) (i)상기 L 개의 입력 비트를 인터리빙하여 L 개의 인터리빙된 비트를 제공하고, (ii) 상기 메모리의 K 개의 셀 각각을 상기 인터리빙된 비트의 M 개까지의 비트로 프로그램하도록 동작하는 제어기를 포함하는 메모리 장치가 제공된다.
본 발명에 따르면, 데이터 저장 시스템에 있어서, (a) M 개(M은 적어도 2)의 논리 페이지 중에서 분할된 N 개의 데이터 비트를 제공하는 호스트와, (b) 적어도 하나의 리던던시 비트를 각각의 상기 논리 페이지에 첨부하여 L≥N+M 개의 입력 비트를 제공하는 에러 정정 메커니즘과, (c) 적어도
Figure 112007034050047-PCT00006
개의 셀을 포함하는 메모리를 포함하는 메모리 장치와, (d) 상기 L 개의 입력 비트를 인터리빙하여 L 개의 인터리빙된 비트를 제공하고 상기 메모리의 K 개의 셀 각각은 상기 인터리빙된 비트의 M 개까지의 비트로 프로그램되는 인터리빙 메커니즘을 포함하는 데이터 저장 시스템이 제공된다.
본 발명의 제 1 방법은 M≥2인
Figure 112007034050047-PCT00007
개의 셀에 N 개의 입력 비트를 저장하는 방법이다. (표기 "
Figure 112007034050047-PCT00008
"는 실수 x 이상의 정수 중에서 최소 정수를 의미한다. 예를 들면,
Figure 112007034050047-PCT00009
=3이고
Figure 112007034050047-PCT00010
=4이다.) N 개의 입력 비트는 인터리빙되고, 각각의 셀은 인터리빙된 비트의 M 개까지의 비트로 프로그램된다.
바람직하게는 M≥3이다.
바람직하게는, N 개의 입력 비트는 M 개의 논리 페이지 중에서 분할되고, 인터리빙은 각각의 상기 논리 페이지로부터 동일한 수의 입력 비트를 순차적으로 갖는
Figure 112007034050047-PCT00011
개의 셀의 각각의 비트 페이지를 제공한다.
인터리빙은 결정론적이거나 또는 랜덤일 수도 있다. 바람직한 결정론적 인터리빙 방법에서, N 개의 입력 비트는 적어도 하나의 M×M 행렬이고, 이 행렬은 전치된다. 이 결정론적 인터리빙 방법의 한 변형예에서, 각각의 행렬의 성분은 단일 입력 비트를 포함한다. 이 결정론적인 인터리빙 방법의 다른 변형예에서는, 모든 N 개의 입력 비트가 단일 M×M 행렬로 배열되고, 각각의 행렬 성분은 N/M2 비트를 포함한다.
바람직하게는, 이 방법은 또한 셀들로부터 N 개의 인터리빙된 비트를 판독하는 단계와, 셀로부터 판독된 N 개의 인터리빙된 비트를 디인터리빙(de-interleaving)하는 단계를 포함한다. 비트 에러 때문에, 셀로부터 판독되는 인터리빙된 비트는 셀에 기록된 인터리빙된 비트와 모두 동일하지 않을 수도 있다. 인터리빙 및 디인터리빙의 목적은 임의의 이러한 에러들을 비트들 중에 고르게 분포시키는 것이다.
본 발명의 제 1 방법을 구현하는 본 발명의 메모리 장치는 K 개의 셀을 포함하는 메모리 및 N 개의 입력 비트를 인터리빙(interleaving)한 다음, 셀 각각을 인터리빙된 비트 중
Figure 112007034050047-PCT00012
개까지의 비트로 프로그램하여 N 개의 입력 데이터 비트를 셀에 저장하도록 동작하는 제어기를 포함한다.
바람직하게는, M≥3이다.
바람직하게는, 제어기는 인터리빙을 행하는 메커니즘을 포함한다. 본 발명의 메모리 장치의 바람직한 실시예의 한 유형에서, 이 메커니즘은 소프트웨어를 실행함으로써 상기 인터리빙을 행한다. 본 발명의 메모리 장치의 바람직한 실시예의 다른 유형에서는, 제어기가 (소프트웨어를 실행하는 범용 프로세서와 달리)인터리빙을 행하는 전용 하드웨어를 포함한다. 또는 메모리가 이러한 전용 하드웨어를 포함한다.
바람직하게는, 메모리는 플래시 메모리이다.
데이터를 저장하기 위한 본 발명의 시스템은 K 개의 셀을 갖는 메모리를 포함하는 메모리 장치와, 메모리 장치에 저장될 N 개의 데이터 입력 비트를 제공하는 메모리 장치의 호스트를 포함한다. 이 시스템은 또한 N 개의 입력 비트를 인터리빙하는 메커니즘을 포함한다. 각각의 셀은 인터리빙된 비트 중
Figure 112007034050047-PCT00013
개까지의 비트로 프로그램된다.
바람직하게는, M≥3이다.
본 발명의 시스템의 바람직한 실시예의 한 유형에서, 인터리빙 메커니즘은 소프트웨어를 실행함으로써 인터리빙을 행한다. 이러한 인터리빙 메커니즘은 호스트에 포함되거나 또는 메모리 장치에 포함되는 메모리의 제어기에 포함된다. 본 발명의 시스템의 바람직한 실시예의 다른 유형에서는, 인터리빙 메커니즘이 인터리빙을 행하는 전용 하드웨어를 포함한다. 이러한 인터리빙 메커니즘은 메모리의 제어기에 포함되고, 상기 제어기는 메모리에 포함되거나 또는 메모리 장치에 포함되는 메모리의 제어기에 포함된다.
바람직하게는, 메모리는 플래시 메모리이다.
본 발명의 제 2 방법은 N 개의 데이터 비트를 저장하는 방법이다. N 개의 데이터 비트는 M≥2 개의 논리 페이지 중에서 분할된다. 적어도 하나의 리던던시 비트가 각각의 논리 페이지에 첨부되어 총 L≥N+M 개의 입력 비트를 제공한다. L 개의 입력 비트가 인터리빙되고, 각각의
Figure 112007034050047-PCT00014
개의 셀이 인터리빙된 비트의 M 개까지의 비트로 프로그램된다.
바람직하게는 M≥3이다.
바람직하게는, 각각의 셀이 상태 변화 확률(P)을 가지면, 약 P/M의 에러 확률에 따라 각각의 논리 페이지에 첨부된 리던던시 비트의 수가 선택된다.
바람직하게는, 인터리빙된 비트가 셀로부터 판독되고, 디인터리빙되어, 디인터리빙된 비트로 이루어진 M 개의 논리 페이지를 제공한다. 디인터리빙된 비트로 이루어진 각각의 논리 페이지는 적어도 하나의 에러 정정 비트를 포함한다. 비트 에러 때문에, 셀로부터 판독되는 비트는 셀을 프로그램한 비트와 동일하지 않을 수도 있다. 디인터리빙된 비트의 각각의 논리 페이지는 에러 정정 비트에 따라 정정된다.
M≥2 개의 논리 페이지 중에서 분할된 N 개의 데이터 비트를 저장하기 위한 본 발명의 제 2 방법을 구현하는 본 발명의 메모리 장치는 적어도 하나의 리던던시 비트를 각각의 논리 페이지에 첨부하여 총 L≥N+M 개의 입력 비트를 제공하는 메커니즘과, 적어도
Figure 112007034050047-PCT00015
개의 셀을 포함하는 메모리와, L 개의 입력 비트를 인터리빙하고, 인터리빙된 비트의 M 개까지의 비트로 K 개의 셀 각각을 프로그램하도록 동작하는 제어기를 포함한다. 바람직하게는, 리던던시 비트를 첨부하는 메커니즘은 제어기의 일부이다. 바람직하게는, M≥3이다.
본 발명의 제 2 방법을 구현하는 본 발명의 시스템은 메모리 장치와, 메모리 장치의 호스트와, 에러 정정 메커니즘 및 인터리빙 메커니즘을 포함한다. 호스트는 M≥2 개의 논리 페이지 중에서 분할된 N 개의 데이터 비트를 제공한다. 에러 정정 메커니즘은 적어도 하나의 리던던시 비트를 각각의 논리 페이지에 첨부하여 총 L≥N+M 개의 입력 비트를 제공한다. 메모리 장치는 적어도
Figure 112007034050047-PCT00016
개의 셀을 갖는 메모리를 포함한다. 인터리빙 메커니즘은 L 개의 입력 비트를 인터리빙한다. 각각의 K 개의 셀은 인터리빙된 비트의 Mro까지의 비트로 프로그램된다. 바람직하게는 M≥3이다.
도 1a 내지 1d는 1 비트 플래시 셀, 2 비트 플래시 셀, 3 비트 플래시 셀, 4 비트 플래시 셀에서의 임계 전압 분포를 도시한 도면.
도 2는 2 비트 셀을 프로그램하기 위한 우선순위 트리(precedence tree)를 도시한 도면.
도 3은 3 비트 셀을 프로그램하기 위한 우선순위 트리(precedence tree)를 도시한 도면.
도 4는 4 비트 셀을 프로그램하기 위한 우선순위 트리(precedence tree)를 도시한 도면.
도 5a 내지 5d는 논리 페이지의 인터리빙(interleaving) 및 디인터리빙(de-interleaving)을 도시한 도면.
도 6 내지 10은 본 발명의 시스템의 고 레벨 블록도.
이하, 첨부 도면을 참조하여 예를 통해 본 발명을 설명한다.
본 발명은 멀티 비트 플래시 셀을 프로그램하는 방법에 관한 것이다.
본 발명에 따른 멀티 비트 셀 플래시 메모리 장치의 원리 및 동작은 도면 및 첨부한 상세한 설명을 참조하면 보다 잘 이해할 수 있을 것이다.
효율적인 판독을 위한 비트 순서(Bit Ordering for Efficient Reading)
이제 M 비트 MBC 셀에서 비트 패턴의 양호한 순서가 무엇인지에 대한 문제를 고려해 보자. 무엇이 최선인 지를 결정하기 위해 사용할 하나의 명확한 기준은 없다. 대신에, 선택할 수 있는 여러 개의 다른 기준이 존재한다. 이하의 논의에서 명확하듯이, 실제 설계에 사용할 최선의 기준은 전체 저장 시스템의 요건에 달려있다.
여기서 순서의 평가는 MBC 셀에 포함된 비트를 판독하는데 요구된 비교 동작의 수에 기초한다. 전술한 바와 같이, SBC 셀은 셀의 데이터 내용을 결정하기 위해 기준에 대한 그 임계 전압 값의 단 하나의 비교를 요구한다. 2 비트 MBC 셀은 두 개의 비교를 요구할 수도 있다. 보다 많은 비트를 갖는 셀은 일반적으로 둘보 다 많은 비교를 요구한다.
정적 판독 및 동적 판독의 판독 프로세스에서의 비교를 이용하여 두 방법을 구별할 수 있다.
정적 판독에서는, 판독 프로세스 동안 사용된 모든 기준 전압 값이 판독을 시작하기 전에 완전히 결정된다. 이러한 판독은 모든 셀의 임계 전압을 비교하는 기준 전압 값을 하나씩 변경함으로써 모든 비교를 행하는 하나의 비교기를 사용하거나 또는 비교 횟수와 동일한 수의 비교기(이 경우 모든 비교기가 병렬로 동작할 수 있음)를 사용함으로써 행해질 수 있다. 비교기의 수가 비교 횟수보다 적지만 1개보다 많은 중간 방안을 이용하여 프로세스에서 일부 병렬 동작을 하는 것도 가능하다. 모든 기준 전압이 판독 전에 완전히 결정되는 한 이러한 모든 구현예는 본 발명의 목적을 위한 정적 방법으로 간주한다. 예를 들면, 인코딩이 도 1b에 도시되어 있는 2 비트 MBC 셀의 하위 비트를 항상 0 및 V2 모두와 비교함으로써 판독하는 것은 두 개의 비교를 이용하는 정적 판독 방법이다.
동적 판독에서는, 판독 프로세스 도안 사용된 적어도 하나의 기준 전압 값이 동일한 판독 동작 동안 행해진 이전의 비교의 결과에 기초하여 결정된다. 예를 들면, 인코딩이 도 1b에 도시되어 있는 2 비트 MBC 셀의 하위 비트를 먼저 V1과 비교하고, 그 다음에 이 비교의 결과에 따라 0 또는 V2와 비교함으로써 판독하는 것은 두 개의 비교를 이용하는 동적 판독 방법이다.
정적 판독을 이용하여 단일 비트를 판독하는데 요구되는 비교 횟수는 임계 전압축을 따라 상태 사이를 이동할 때 비트 값이 변하는 방법에 달려 있다. 제 1 예로서, {3,2,0,1}의 순서를 갖는 2 비트 MBC 경우를 고려하자. 2진 표기로, 이 순서는 {11,10,00,01}이다. (첨부한 청구범위에서는, 비트 순서에 대해 10진 표기가 사용된다.) 이제 비트들을 자체 순서로 각각 분리시킨다. 좌측으로부터 우측으로의 상태를 따라 이동할 때, 하위 비트는 값 {1,0,0,1}을 통과하지만 상위 비트는 {1,1,0,0}을 통과한다. 두 개의 좌측 상태와 두 개의 우측 상태 사이를 구별하기 위해 배치된 기준 값으로 단지 한 번의 비교에 의해 상위 비트의 값을 결정할 수 있다는 것을 쉽게 알 수 있다. 그러나, 하위 비트는 단일 비교에 의해 결정될 수 없다. 우리가 할 수 있는 최선의 방법은 두 개의 비교(하나는 맨 좌측 상태를 다른 모든 상태로부터 분리시키는 것이고, 다른 하나는 맨 우측 상태를 다른 모든 상태로부터 분리시키는 것이다)를 사용하는 것이다.
그러나, 만약 상태의 순서가 {3,2,1,0}={11,10,01,00}이면, 하위 비트 순서는 이제 {1,0,1,0}이고, 상위 비트 순서는 다시 {1,1,0,0}이다. 따라서 이 순서를 사용하면, 하위 비트는 세 개의 비교를 요구하고, 상위 비트는 하나의 비교를 요구한다.
하위 비트에 대해 {1,1,0,0}이고 상위 비트에 대해 {1,0,1,0}인 경우, 제 3 및 마지막 유효 2 비트 순서는 {3,1,2,0}={11,01,10,00}이다.
정적 판독을 이용하여 단일 비트를 판독하는데 요구된 비교 횟수는 좌측으로부터 우측으로 임계 전압축을 따라 모든 상태를 통과할 때 발생하는 비트의 변화 수와 동일하다는 것은 쉽게 알 수 있다. {1,1,0,0}은 단 한번의 변화만 가지며 한 번의 비교를 요구하는 반면에, {1,0,1,0}은 세 번의 변화를 가지며 세 번의 비교를 요구한다.
동일한 규칙이 2 비트보다 많은 셀을 판독하는 데에도 적용된다. 예를 들면, {7,6,2,4,0,5,3,1}={111,110,010,100,000,101,011,001} 순서를 갖는 3 비트 셀은 하위 비트에 대해 {1,0,0,0,0,1,1,1} 순서를 생성하고, 중간 비트에 대해 {1,1,1,0,0,0,1,0} 순서를 생성하며, 상위 비트에 대해 {1,1,0,1,0,1,0,0} 순서를 생성한다. 변화의 수(및 비교의 수)는 하위 비트에 대해 2이고, 중간 비트에 대해 3이며, 상위 비트에 대해 5이다.
동적 판독을 이용하여 단일 비트를 판독하는데 요구되는 비교의 수는 좌측에서 우측으로 임계 전압축을 따라 모든 상태를 통과할 때 발생하는 변화의 수에 의존하지만, 정적 판독과는 다른 방법으로 의존한다. 동적 판독에서는, 비교 수가 변화의 수의 밑 2에 대한 로그 함수+1을 반올림한 것이다. 예를 들면, {3,2,0,1}={11,10,00,01}의 순서와, {1,0,0,1}(두 번의 변화) 및 {1,1,0,0}(한번의 변화)의 비트 순서를 갖는 2 비트 MBC 셀에 있어서, 비교 수는 각각 2 및 1이다. {1,0,1,0}(세 번의 변화) 및 {1,1,0,0}(한 번의 변화)를 갖는 {3,2,1,0}={11,10,01,00}의 순서는 그 변화 수가 상이하지만, 각각 2개 및 1개의 비교를 요구한다.
또한, 동일한 규칙이 2 비트보다 더 큰 셀에도 적용된다. 예를 들면, 비트 순서 {1,0,0,0,0,1,1,1}(두 번의 변화), {1,1,1,0,0,0,1,0}(세 번의 변화), 및 {1,1,0,1,0,1,0,0}(다섯 번의 변화)를 생성하는 순서 {7,6,2,4,0,5,3,1} = {111,110,010,100,000,101,011,001}를 갖는 3 비트 셀의 판독은 각각 2, 2, 3 개의 비교를 요구한다.
부칙 A는 3 비트 경우에 대한 모든 유효 순서를 나열하고 있다. 각각의 315 개의 순서는 세 비트 각각에 대한 순서, 각 비트에 대한 정적 판독 비교의 수("정적 비교"아래의 3 개의 열)와, 각 비트에 대한 동적 판독 비교의 수("동적 비교" 아래의 3 개의 열)를 보여주는 표에서 한 개의 라인을 갖는다. 또한, 아래 논의에서 참조하는 두 개의 판독 방법 각각에 대한 총 수, 최소 수, 최대 수가 나타나 있다.
이제 MBC 셀에서 비트 패턴의 순서를 선택하기 위한 여러 개의 표준을 살펴변다. 이들 표준은 모두 판독에 요구되는 비교의 수와 관련된다. 일반적으로, 비교가 적을수록 더 좋다. 비교 수가 많다는 것은 동작을 완료하는데 시간이 더 걸리거나(단일 비교기를 사용하는 경우) 비교기의 수가 더 많다는 것(또는 이들 둘 모두)을 의미한다.
표준 A. 정적 판독을 이용하여 셀에서 모든 비트를 순차적으로 판독(즉, 비트들을 한 동작에 판독하지 않고 하나씩 판독)하기 위한 비교 수를 최소화한다.
단일 비교기의 정적 판독을 이용하는 셀에서는, 셀의 모든 비트를 순차적으로 판독하는데 요구되는 시간이 모든 비트의 비교기의 수의 합으로서 증가한다. 따라서, 순서를 선택하기 위한 양호한 표준은 모든 비트의 비교의 합을 최소화하는 것이다.
위 결과를 보면, 2 비트 경우에 있어서 {3,2,0,1}에 대해 총 세 개의 비교를 얻고 다른 두 개에 대해서는 네 개의 비교를 얻는다. 따라서, {3,2,0,1}은 셀의 모든 비트의 최고속 순차 판독을 제공하며, 이 표준에 따라 최적이다.
3 비트의 경우에 있어서는, 부칙 A에서 총 7개의 비교({7,6,4,5,1,0,2,3} 및 {7,6,4,5,1,3,2,0})를 갖는 2 개의 최적의 순서가 있음을 알 수 있다. 도 1c에 도시된 인코딩은 {7,6,4,5,1,0,2,3} 순서에 대응한다. 또한 최적에 가까운 총 8 개의 비교를 갖는 15 개의 순서가 있다.
4 비트의 경우에 있어서는, 부칙 B에 나열된 36 개의 순서가 이 표준에 따라 최적이 된다. 각각의 그러한 순서는 총 15 개의 비교를 갖는다. 도 1d에 도시된 인코딩은 이들 순서의 첫 번째인 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1}에 대응한다.
표준 B. 정적 판독을 이용하여 셀의 단일 비트를 판독하기 위한 최대 비교 수를 최소화한다.
단일 비교기의 정적 판독을 이용하는 셀에서는, 셀의 임의의 비트를 판독하는데 요구된 최대 시간이 임의의 비트의 최대 비교 수에 따라 증가한다. 따라서, 순서를 선택하는 양호한 표준은 임의의 비트에 대한 최대 비교 수를 최소화하는 것이다.
2 비트 경우에 있어서, 이 최대 수는 {3,2,0,1}에 대해서는 2이고, 다른 두 경우에 대해서는 3이다. 따라서, {3,2,0,1}는 이 표준에 대해서도 최적이다.
3 비트의 경우에 있어서, 부칙 A는 이 표준 하에서 3개의 최대 비교 수를 갖는 10 개의 최적의 순서 {7,6,2.4,5,1,3,0}, {7.6,2,4,5,3,1,0}, {7,6,4,2,3,5,1,0}, {7,6,4,0,2,3,5,1}, {7,6,4,0,5,1,3,2}, {7,6,4,5,1,3,2,0}, {7,6,5,1,3,2,4,0}, {7,5,6,2,3,1,4,0}, {7,3,6,4,5,1,2,0}, {7,3,6,4,5,1,0,2}를 나열한다.
모든 유효 4 비트 순서의 완전한 목록은 이 표준에 대한 최소치가 5 개의 비교라는 것을 보여준다. 이들 순서 중 일부는 부칙 B에 나열되어 있다.
표준 C. 정적 판독을 이용하여 셀의 단일 비트를 판독하기 위한 최소 비교 수를 최소화한다.
단일 비교기의 정적 판독을 이용하는 셀에서, 셀의 임의의 비트를 판독하는데 필요한 최소 시간은 임의의 비트의 최소 비교 수에 따라 증가한다. 따라서, 순서를 선택하는 양호한 표준은 임의의 비트에 대한 최소 비교 수를 최소화하는 것이다.
2 비트 경우에 있어서, 이 최소 수는 1이고, 이는 세 개의 다른 모든 유효 순서에 대해서도 동일하다. 3 비트 경우에 있어서는, 부칙 A가 최선의 최소 수가 다시 1이지만, 최소 수를 높게 만드는 많은 순서가 있음을 보여주는데, 이것은 판독 동작이 느려진다는 것을 의미한다.
모든 유효 4 비트 순서의 완전한 목록은 4 비트 경우에 있어서 이 표준에 대한 최소치가 하나의 비교임을 보여준다. 이들 순서 중 일부는 부칙 B에 나열되어 있다.
전술한 Takeuchi의 방법은 결국 상위 비트가 하나의 비교만 제공하는 순서가 된다(Takeuchi는 본 명세서에서 사용하는 용어와 반대의 용어를 사용한다. 즉 Takeuchi는 셀에 기록되는 첫 번째 비트를 "하위 비트"라 하지 않고 "상위 비트"라고 하였다. 여기서는 Takeuchi의 방법을 논의할 때 본 명세서에서 사용되는 용어를 계속 사용할 것이다). 이것은 Takeuchi의 방법이 이런 의미에서 최적으로 고려될 수 있다는 것을 의미한다. 그러나, Takeuchi의 방법은 매우 간단한 방법으로 상태들을 할당하는 것에 기초한다. 즉, 제 1 비트를 기록함으로써 두 개의 최 좌측 상태 중 하나에 임계치를 가져오고, 제 2 비트를 기록함으로써 네 개의 최좌측 상태 중 하나에 임계치를 가져오며, 제 3 비트를 기록함으로써 8 개의 최좌측 상태 중 하나에 임계치를 가져오고, 제 n 비트를 기록함으로써 2n 개의 최좌측 비트 중 하나에 임계치를 가져온다. 이것을 행하는 방법(Takeuchi의 특허의 도 90a 내지 90e 참조)은 결국 최좌측 상태에서 최고의 값을 가지고 시작하여 우측으로 갈 때마다 1씩 감소시키는 평범한 연속적인 순서가 된다. 예를 들면, 3 비트 경우의 Takeuchi 순서는 {7,6,5,4,3,2,1,0}이고, 4비트 경우의 Takeuchi 순서는 {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}이다.
이러한 순서는 셀에 기록될 맨 마지막 비트에 대해 하나의 비교를 요구하고, 그 다음 마지막 비트에 대해서는 3 개의 비교를 요구하며, 마지막에서 세 번째 비트에 대해서는 7개의 비교를 요구하고, 마지막에서 nqjsWo 비트에 대해서는 2n-1개의 비교를 요구한다. Takeuchi의 순서가 단 하나의 비교를 갖는 1 비트를 제공하는 것은 맞지만, 셀에 기록되는 제 1 비트는 가능한 가장 높은 비교 수를 갖는다(3 비트의 경우에 대해서는 7이고, 4비트 경우에 대해서는 15). 이것은 셀의 다른 비 트의 판독 시간에서 큰 차를 발생하고 바람직하지 않으며, 따라서 이러한 순서는 최소 비교 수를 갖는 1 비트를 가짐에도 불구하고 최적으로 고려되지는 않는다.
본 명세서에서는, {2M-1, 2M-2, ..., 4,3,2,1.0} 형태를 갖는 Takeuchi와 같은 순서가 되는 할당을 지칭하기 위해 "연속 할당(serial assignment)"이란 용어를 사용한다. 대응하는 비트 순서를 여기서는 "연속(serial)" 비트 순서라고 한다. 본 명세서에서 다른 모든 순서는 "비연속(nonserial)"이라 한다.
표준 D. 정적 판독을 이용하여 (어느 비트를 판독하는 지에 관계없이)셀의 단일 비트를 판독하기 위한 동일한 비교 수를 달성한다.
단일 비교기의 정적 판독을 이용하는 셀에서는, 어느 비트가 판독되는 지에 관계 없이 동일한 응답 시간을 제공하기 위해, 동일한 비교 수를 사용하여 모든 비트를 판독하는 것이 바람직할 것이다. 따라서, 순서를 선택하는 양호한 기준은 모든 비트에 대해 동일한 비교 수를 달성하는 것이다.
2 비트 경우에 있어서, 어떠한 순서도 이 표준을 만족시키지 못한다. 3 비트 경우에 있어서, 부칙 A는 모든 비트가 세 개의 비교를 요구하는 네 개의 순서, 즉 {7,6,2,4,5,1,3,0}, {7,6,2,4,5,3,1,0}, {7,6,4,2,3,5,1,0}, {7,6,5,1,3,2,4,0}가 존재한다는 것을 보여준다.
분명히, 15는 4로 나누어지지 않기 때문에, 모든 비트가 동일한 비교 수를 갖는 총 15 개의 비교를 갖는 4 비트 순서는 있을 수 없다. 부칙 C는 최하위 비트와 최상위 비트 사이의 차가 두 개의 비교보다 많지 않은 총 16 개의 비교를 갖는 모든 4 비트 유효 순서를 나열하고 있는데, 이 경우에도, 이 최적화 표준을 만족시키는 유효 순서는 없다는 것을 알 수 있다. 달성할 수 있는 최선은 가장 낮은 비교 수를 갖는 비트와 가장 높은 비교 수를 갖는 비트 사이의 두 비교의 차이다. 실제로, 모든 비트에 대해 동등한 비교 확산에 가능한 가까이 가고자 한다면, 17 비교 4 비트 순서를 선택하는 것이 낫다. 부칙 D는 최하위 비트와 최상위 비트 사이의 차가 기껏해야 하나의 비교인 총 17 개의 비교를 갖는 모든 유효 순서를 나열하는데, 실제로는 최하위 비트와 최상위 비트 사이의 차가 단 하나의 비교인 순서가 존재하며 그 결과 15 비교 순서 또는 16 비교 순서로 달성할 수 있는 것보다 더 일정한 판독 응답이 발생한다는 것을 알 수 있다.
표준 E. 동적 판독을 이용하여 셀 내의 모든 비트를 순차적으로 판독하는 비교 수를 최소화한다.
이것은 표준 A와 동일하지만, 동적 판독에 대한 것이다.
2 비트의 경우에, 모든 유효 순서는 동일한 비교 수로 되며, 따라서 하나의 최적의 순서는 없다.
3 비트 경우에, 부칙 A는 총 5 개의 비교를 갖는 하나의 최적의 순서({7,6,5,4,3,2,1,0})가 존재한다는 것을 보여준다. 또한 총 6 개의 비교를 갖는 많은 순서가 있다.
모든 유효 4 비트 순서의 완전한 목록은 4 비트 경우에 있어서 이 표준에 대한 최소치가 9 개의 비교라는 것을 보여준다. 이들 순서중 일부는 부칙 B에 나열되어 있다.
표준 F. 동적 판독을 이용하여 셀의 단일 비트를 판독하는 최대 비교 수를 최대화한다.
이것은 표준 B와 동일하지만, 동적 판독에 대한 것이다.
2 비트 경우에 있어서, 모든 유효 순서는 비교 수(2)와 동일하며 따라서 하나의 최적의 순서는 없다.
3 비트 경우에 있어서, 부칙 A는 2의 최대 비교 수를 갖는 최적의 순서, 즉 {7,6,2,4,5,1,3,0}, {7,6,2,4,5,3 ,1,0}, {7,6,4,2,3,5,1,0}, {7,6,4,0,2,3,5,1 }, {7,6,4,0,5,1,3,2}, {7,6,4,5,1,3,2,0}, {7,6,5,1,3,2 ,4,0}, {7,5,6,2,3,1,4,0}, {7,3,6,4,5,1,2,0}, {7,3,6,4,5,1,0,2}가 있다는 것을 보여준다.
모든 4 비트 순서의 완전한 목록은 4 비트 경우에 있어서의 이 표준에 대한 최소치가 3 개의 비교임을 보여준다. 이들 순서 중 일부는 부칙 B에 나열되어 있다.
표준 G. 동적 판독을 이용항 셀의 단일 비트를 판독하는 최소 비교 수를 최소화한다.
이것은 표준 C와 동일하지만, 동적 판독에 대한 것이다.
2 비트 경우에 있어서, 모든 유효 순서는 동일한 최소 비교 수(1)로 되며 따라서 하나의 최적의 순서는 없다.
3 비트 경우에 있어서, 부칙 A는 최선의 최소 수가 다시 1이지만, 높은 비교 수가 되는 많은 순서가 있음을 보여준다. 이것은 판독 동작이 늦어진다는 것을 의미한다.
모든 유효 4 비트 순서의 완전한 목록은 4 비트 경우에 있어서 이 표준에 대한 최소치가 하나의 비교임을 보여준다. 이들 순서 중 일부는 부칙 B에 나열되어 있다.
표준 H. 동적 판독을 이용하여 (어느 비트가 판독되는 지에 관계 없이) 셀의 단일 비트를 판독하는 동등한 비교 수를 획득한다.
이것은 표준 D와 동일하지만 동적 판독에 대한 것이다.
2 비트 경우에 있어서, 어떠한 순서도 이 표준을 만족시키지 못한다. 3 비트 경우에 있어서, 부칙 A는 모든 비트가 두 개의 비교를 요구하는 9 개의 순서, 즉 {7,6,2,4,5,1,3,0}, {7,6,2,4,5,3,1,0}, {7,6,4,2,3,5,1,0}, {7,6,4,0,2,3,5,1}, {7,6,4,0,5,1,3,2}, {7,6,5,1,3,2,4,0}, {7,5,6,2,3,1,4,0}, {7,3,6,4,5,1,2,0}, {7,3,6,4,5,1,0,2}가 있음을 보여준다.
부칙 E는 최대 비교 수와 최소 비교 수 사이의 차가 1인 유효 4 비트 순서를 나열한다.
한가지 설명이 유효 할당 및 유효 순서의 개념의 정의에 추가된다. 셀의 비트들 중 (전부가 아니라)일부만 프로그래밍하는 것에 의한 임의의 중간 단계는 아직 기록되지 않은 비트가 "1"로서 기록되면 생성되는 상태와 동일하다. 즉, 셀의 마지막 비트를 "1로 프로그래밍하는 것은 실제로는 아무것도 하지 않는 것이지만, 셀의 상태를 변화되지 않게 유지한다. 이것은 실제로 셀을 구현하는 편리한 방법이며, 이것은 통상의 MBC 셀이 현재 구축되는 방법이다. 만약 셀이 항상 그것이 저장할 수 있는 완전한 비트 수로 프로그램된다고 가정하면, "1"이 프로그램되는 경우에도 상태(임계 값)를 이동시키기 위해 마지막 프로그래밍 동작에 의존할 것이다. 이것은 예를 들면, 세 개의 "0" 비트로 프로그램되었으며 제 4 비트로 프로그램되기를 기다리는 4 비트 MBC가 "0001"로 프로그램된 후에 동일한 셀과 다른 상태를 가질 것이라는 것을 의미한다. 이러한 설계에서, 우리는 모든 비트를 프로그램하는 것을 허용하지 않거나 또는 모든 비트로 채워지지 않은 셀을 판독하는 다른 판독 방안을 궁리한다.
도 2 내지 4 및 전술한 예 및 설명은 모두 제 1 구현예를 가정한다. 제 2 구현예에 있어서는, 각각의 비트를 프로그램할 때 임계 전압을 감소시키는 것(즉, 전압축 상에서 좌측으로 이동)은 여전히 허용하지 않지만, 제 1 구현예에서 불가능한 변화가 제 2 구현예에서는 가능하다는 의미에서 보다 유연하다. 따라서, "유효성"의 개념이 여전히 적용되지만, 도 2 내지 4의 우선순위 트리가 적용되는 제 1 구현예와는 달리, 여기서는 규칙들이 중간 상태가 정의되는 정확한 방법에 의존하기 때문에, 유사한 포괄적인 다이어그램을 얻는 것이 불가능하다. 중간 상태가 우측에 있을수록 그것으로부터의 보다 적은 변화가 유효하게 된다.
본 발명의 제 1 구현예의 모든 방법은, 할당 또는 순서의 유효성이 도 2 내지 4에 대해서가 아니라, 특정 변화 규칙에 대해 검사되어야 한다는 점을 제외하고는 제 2 구현예에 동등하게 적용가능하다는 점에 유의하라.
에러를 최소화하기 위한 비트 순서
표준 A-H는 성능 문제에 관한 것이다. 그러나, 신뢰도 문제가 성능보다 훨씬 더 중요한 경우가 있을 수 있다. 이러한 경우, 셀에 저장된 데이터를 판독할 때 예상 비트 에러의 수 및 분포에 미치는 영향에 따라서 할당 및 인코딩의 선택을 최적화해야 한다. 본 발명의 다음 실시예는 이 목적을 달성한다.
MBC 셀에 사전에 저장된 비트의 값을 판독할 때, 어느 전압 밴드가 셀에 위치하는 지를 찾으려 시도한다. 밴드를 찾아내면, 이 밴드는 셀을 기록할 때 사용된 할당 및 순서에 따라서 그 밴드에 의해 표현된 대응 비트로 변환된다. 에러가 발생하고 이 에러가 기록되어 셀의 상태가 변할 수도 있다. 플래시 셀에서 이러한 에러의 가장 일반적인 원인은 셀의 플로팅 게이트에 저장된 전자의 누설이다. 이것은 통상 셀의 임계 전압을 1 비트 이동시켜, 셀이 그 밴드로부터 다른 밴드로 기록되게 한다. 또한 플레시 메모리 셀에서의 다른 에러 메커니즘이 있는데, 예를 들면, 어떠한 셀의 상태를 변화시킬 의도는 없는 동작이 이웃 셀 또는 동일 셀에 인가된 전압 및 신호의 부작용 때문에 그 셀의 상태를 원치 않게 변화시키는 다양한 유형의 교란(예를 들면, 기록 교란, 판독 교란)이 있다.
플래시 MBC 에러의 통계치의 수많은 테스트는 대다수의 에러가 전압축을 따라 한 밴드만큼의 셀의 상태의 이동을 보여 주었다. 예를 들면, 도 1b의 2 비트 MBC를 상정하면, "00" 상태로 프로그램된 셀은 결국 바로 이웃하는 "01" 또는 "10" 상태로 판독되지만, 기록 상태로부터 떨어져 있는 두 상태인 "11"로는 거의 절대로 판독되지 않는다. 마찬가지로, 상태 순서가 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1}인 4 비트 MBC에서, 만약 셀이 상태 3에 기록되면, 대부분의 일반적인 에러는 상태 11 또는 상태 2가 되는데, 이들 둘 모두 상태 3의 바로 이웃들이다. 셀이 다른 13 상태 중 어느 하나가 되는 것은 매우 드 물게 발생한다.
셀이 기록된 한 상태와 다른 상태로 기록되는 에러의 효과를 조사해 보자. 먼저 도 1b의 2 비트 MBC의 간단한 경우로 시작한다. 만약, 기록 상태가 "00"이고 판독 상태가 "01"이면, 상위 비트는 정확하게 "0"으로 보고하지만, 하위 비트는 틀려서 "0" 대신에 "1"을 얻게 될 것이다. 만약 기록 상태가 "00"이고 판독 상태가 "10"이면, 하위 비트는 "0"으로 정확하게 보고하지만, 상위 비트는 틀려서 "0" 대신에 "1"을 얻게 될 것이다. 하지만, "00"에서 "11"로의 에러 관계는 검토하지 않는데, 그 이유는 전술한 바와 같이, 2 상태 떨어진 에러는 드물기 때문이다.
위 논의에 의해 셀의 상태를 판독하는 데 있어서 각각의 에러는 한 비트가 틀리다는 결론을 낼 수 있다. 그러나, 이것은 잘못된 결론이다. Tanaka의 순서({11,10,01,00})를 이용하여 2 비트 MBC를 검토해 보자. 물리적 현상은 이전의 예와 동일하다고 가정한다. 즉, 셀이 좌측으로부터 세번째 상태에 있도록 기록되었고 결국 좌측으로부터 두 번째 상태에 있게 되었다. 이전의 예에서는 이것이 "00"에서 "10"으로의 변화를 의미했다. 그러나, 이번 경우에는 이 에러가 "01"로부터 "10"으로의 이동에 해당하는 다른 비트 할당이 된다. 결국 이 에러는 하위 비트 및 상위 비트 모두의 에러가 되는데, 즉 하위 비트는 "1" 대신에 "0"으로서 보고되고, 상위 비트는 "0" 대신에 "1"로서 보고된다. 따라서, 비트 할당 및 순서의 선택이 저장된 데이터를 판독할 때 획득하게 되는 비트 에러의 수에 영향을 미친다는 것을 알 수 있다.
이제 4 비트 MBC의 보다 복잡한 경우를 살펴보자. {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}의 연속 순서를 이용하여 4 비트 셀을 살펴보자. 셀은 "0"으로 기록되고 "1"로서 판독된다고 가정한다. 이것은 "0000"을 기록하고 "0001"을 판독한다는 것을 의미한다. 따라서, 최하위 비트는 에러가 발생하였고, 나머지 세 비트는 여전히 정확하다. 이 에러는 1 비트 에러라고 한다. 이것은 바람직한 결과처럼 보이는데, 이 특정 순서가 양호한 순서일까? 이제 셀이 "1"로서 기록되었고, "2"로서 판독되었다고 가정해 보자. 이것은 "0001"을 기록하고 "0010"을 판독하였다는 것을 의미한다. 따라서, 이제 두 개의 최하위 비트에 에러가 발생했고, 두 개의 상위 비트는 정확하다. 이 에러는 2 비트 에러라고 한다. 이것은 분명히 이 순서의 최적화에 대한 의문을 불러일으킨다. 따라서 분석을 계속해 보자. 셀이 "3"으로 기록되고 "4"로서 판독되었다고 하자. 이것은 "0011"을 기록하고 "0100"을 판독하였다는 것을 의미한다. 이제 단 하나의 상위 비트만 정확하고 모든 세 개의 하위 비트에 에러가 발생하였다. 이 에러는 3 비트 에러라고 하며, 분명히 양호한 결과는 아니다. 그러나, 아직 끝난 것은 아니다. 셀이 "7"로서 기록되고 "8"로서 판독되었다고 가정하자. 이것은 "0111"을 기록하고 "1000"을 판독하였다는 것을 의미한다. 이제 네 비트 모두 부정확하다. 이 에러는 4 비트 에러라고 하며, 저장 비트 에러율을 고려할 때 연속 순서는 양호하지 않음을 보여준다.
이러한 "에러 증폭(error amplification)"이 당연하지 않으며, 연속 순서보다 더 양호한 순서가 실제 존재한다는 것을 확인하기 위해, 전술한 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1} 순서로 돌아가 보자. 각각의 그리고 모 든 1 상태 떨어진 에러(one-state-away error)를 살펴봄으로써, 다음 사실을 확인한다. 즉, 각각의 상태 에러의 결과 정확하게 한 비트 에러가 발생한다. 이 사실을 보여주기 위해 모든 가능한 상태 변화를 아래에 기록한다.
i. 15 <--> 14, "1111" <--> "1110", 최하위 비트만 영향을 받음
ii. 14 <--> 12, "1110" <--> "1100", 제 2 하위 비트만 영향을 받음
iii. 12 <--> 13, "1100" <--> "1101", 최하위 비트만 영향을 받음
iv. 13 <--> 9, "1101" <--> "1001", 제 2 최고 비트만 영향을 받음
v. 9 <--> 8, "1001" <--> "1000", 최하위 비트만 영향을 받음
vi. 8 <--> 10, "1000" <--> "1010", 제 2 최하위 비트만 영향을 받음
vii. 10 <--> 11, "1010" <--> "1011", 최하위 비트만 영향을 받음
viii. 11 <--> 3, "1011" <--> "0011", 최상위 비트만 영향을 받음
ix. 3 <--> 2, "0011" <--> "0010", 최하위 비트만 영향을 받음
x. 2 <--> 0, "0010" <--> "0000", 제 2 최하위 비트만 영향을 받음
xi. 0 <--> 4, "0000" <--> "0100", 제 2 최상위 비트만 영향을 받음
xii. 4 <--> 6, "0100" <--> "0110", 제 2 최하위 비트만 영향을 받음
xiii. 6 <--> 7, "0110" <--> "0111", 최하위 비트만 영향을 받음
xiv. 7 <--> 5, "0111" <--> "0101", 제 2 최하위 비트만 영향을 받음
xv. 5 <--> 1 , "0101 " <--> "0001 ", 제 2 최상위 비트만 영향을 받음
여기서 비교하고 있는 것은 동일한 물리적 셀에 대한 상이한 순서임을 이해하는 것이 중요하다. 에러의 소스인 물리적 현상은 비트를 나타내는 상태를 해석 하는 방법에 영향을 받지 않는다. 올바른 상태로 끝나는 셀의 수는 비트 할당에 의해서가 아니라 물리 법칙에 의해 규정된다. 그럼에도 불구하고, 소정 수의 오류 셀의 동일한 물리적 사실이 비트가 물리적 상태에 할당되는 방법에 의존하는 상이한 수의 오류 비트로 해석된다. 따라서, 플래시 메모리 설계자들은 데이터의 비트 에러 레이트에 영향을 미치며 적절히 최적화된 비트 할당을 이용하여 비트 에러 수를 감소시킬 수 있다.
셀의 상태의 각각의 에러는 적어도 하나의 비트 에러를 생성하는 것이 분명하므로(그렇지 않으면 두 개의 상이한 상태가 정확히 동일 비트를 나타낼 것이므로), 이런 의미에서 상기 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1} 순서는 최적이다고 결론지을 수 있다. 만약 올바른 상태로부터 한 상태 떨어지는 부정확한 상태를 판독하게 되는 셀의 상태를 판독하는 데 있어서의 모든 에러가 정확히 1 비트 에러를 생성하는 조건을 만족하면, 이 순서를 "에러 레이트 최적(error-rate optimal)"이 되는 순서라고 규정한다. 이러한 순서를 식별하는 것은 쉽다. 왜냐하면, 순서를 2진 수의 시퀀스로서 볼 때, 임의의 두 개의 바로 인접하는 수 사이의 차가 1 비트 위치로 한정되기 때문이다. 이 조건을 만족하는 어떠한 순서도 에러 레이트 최적이며, 에러 레이트 최적인 어떠한 순서도 이 특징을 가져야 한다. 이러한 유형의 2진 코딩은 수학 문헌에 잘 알려져 있으며, 미국 특허 제2,632,058호의 발명자의 이름을 따서 "그래이 코드(Gray code)"라고 하는데, 이 특허는 참조로서 본 명세서에 완전히 포함된다.
전술한 "변화(transition)"의 개념에 기초하여 때론 함께 작업하는 것이 더 쉬운 에러 레이트 최적 조건을 찾기 위한 다른 방법이 있다. 위에서 살펴본 바와 같이, 셀의 어떠한 비트 위치에서 발생된 비트 에러의 수는 임계 전압 축을 따라 한 상태로부터 다른 상태로 이동할 때 비트 값이 변하는 방법에 달려 있다. 첫 번째 예로서, {3,2,0,1}의 순서를 갖는 2 비트 MBC 경우를 고려하자. 2진 표기를 이용하여 동일 순서를 나타내면 {11,10,00,01}이 된다. 이제 비트들을 각각 그 자체 시퀀스로 분리한다. 좌측에서 우측으로 상태를 따라 이동하면, 하위 비트는 {1,0,0,1} 값을 통과하고, 상위 비트는 {1,1,0,0}을 통과한다.비트 시퀀스에서 변화가 있을 때마다, 이 비트는 상태 에러가 그 위치에서 발생하면 에러가 있다는 것을 쉽게 알 수 있다. 예를 들면, 상태 에러가 이 2 비트 셀을 제 2 및 제 3 상태 사이에서 이동시키면, 하위 비트는 에러가 없지만({1,0,0,1}에서 이 지점에서 변화가 없다), 상위 비트는 에러가 있다({1,1,0,0}의 중간에 변화가 있다). 마찬가지로, 하위 비트에 대해 {1,0,0,0,0,1,1,1} 시퀀스를 생성하고, 상위 비트에 대해 {1,1,0,1,0,1,0,0} 시퀀스를 생성하는 {7,6,2,4,0,5,3,1}={111,110,010,100,000,101,011,001}을 갖는 3 비트 셀을 살펴보자. 우측으로부터의 제 3 및 제 4 상태 사이의 상태 에러는, 하위 및 상위 비트에서는 이 지점에서 변화가 있고 중간 비트 시퀀스에서는 변화가 없기 때문에, 상위 및 하위 비트 모두에 에러를 발생시키지만, 중간 비트에는 발생하지 않는다.
이것은 그 비트 위치의 시퀀스에서의 변화의 위치가 그 위치에서 상태 에러에 대한 에러가 발생하는 지를 결정한다는 것을 의미한다. 만약 셀의 모든 상태가 셀이 사용될 때 발생할 확률이 동일하고(즉, 셀에 저장된 데이터에 대해 사전 정보 가 없고) 두 방향(좌우)으로의 상태 에러가 발생할 확률이 대략 비슷하다면, 어떠한 비트에서의 에러의 확률이 그 시퀀스를 따르는 변화의 수에 직접적으로 비례한다고 결론지을 수 있다. 또한, 임의의 비트 위치에서의 비트 에러의 총 확률이 모든 비트 시퀀스에서의 총 변화의 수에 직접 비례한다. 따라서 총 변화의 수가 적을수록 비트 에러 관점에서는 양호한 순서가 된다고 결론지을 수 있다. 최적의 순서가 각각의 상태 변화로부터 정확히 한 비트 변화를 생성한다고 앞에서 결론지었기 때문에, 최적의 순서에 대한 동등한 조건은 총 비트 변화의 수가 상태 수에서 1을 뺀 것과 같다. 3 비트 MBC에 있어서, 이것은 총 변화의 수가 7이라는 것을 의미하고, 4비트 MBC에 대해서는, 이것은 총 변화의 수가 15라는 것을 의미한다. 요약하면, 모든 비트 위치에 대한 총 변화 수가 셀의 상태의 수에서 1을 뺀 수와 같기만 하면 그 순서는 에러 레이트 최적이 된다.
에러 레이트 최적 조건이 정적 판독을 이용하여 셀의 모든 비트를 순차 판독하는 비교 수를 최소화하는 성능 최적 표준 A와 동일하다는 점이 흥미롭다. 이 표준에 따라 최적화되는 임의의 순서는 또한 비트 에러 레이트 표준에 따라서도 최적화되며, 그 역도 마찬가지다.
부칙 A로부터, 3 비트 MBC에 대한 에러 레이트 최적인 단 두 개의 유효 순서, 즉 {7,6,4,5,1,0,2,3} 및 (7,6,4,5,1,3,2,0}이 존재한다는 것을 알 수 있다. 4 비트 MBC 경우에 있어서는, 모든 유효 순서의 완전한 목록에 의해 부칙 B에 나열된 바와 같이, 에러 레이트 최적인 36 개의 유효 순서가 존재한다는 것을 알 수 있다.
에러를 고르게 분포시키기 위한 비트 순서(Bit Ordering to Distribute Errors Evenly)
{15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1}의 4 비트 순서가 비트 에러 감소에 최적이라는 것을 위에서 확인하였다. 만약, 이 순서를 각각 이용하여 15 개의 4 비트 셀을 취하여 이들 각각이 15 개의 가능한 상태 에러 중 하나를 나타내도록 하면(이 목적을 위해, 동일한 상태들 간의 동일한 바운다리를 교차(이 교차는 좌에서 우 또는 우에서 좌에 관계 없음)하는 에러를 고려한다), 모든 셀 내의 비트 에러의 총 수는 가능한 가장 낮은 수인 15가 될 것이다.
이들 15 비트 에러가 (셀의 4 비트 위치 중)어느 비트 위치에 나타나는 지를 살펴보자. 셀의 4 비트 중 한 비트는 각각의 상태 에러에 대해 영향을 받는다는 것은 위에서 이미 설명하였다. 최하위 비트가 6에서 에러를 갖고, 제 2 최하위 비트가 5에서 에러를 가지며, 최상위 비트가 1에서 에러를 갖는 경우를 살펴보자. 이것은 비트 위치들 사이의 비트 에러들의 분포가 고르지 않으며, 따라서 일부 비트 위치는 다른 비트 위치보다 더 많은 에러를 가질 수도 있다는 것을 의미한다.
4 비트 MBC의 각각의 비트 위치가 상이한 논리 페이지에 속하는 경우를 고려한다. 플래시 메모리 아키텍처는 각각 4 비트를 저장하는 15,000 개의 셀로 이루어진 그룹에 기초하며, 따라서 각 그룹은 15,000 비트의 4 페이지를 저장한다. 상태 에러의 확률은 1/1,000이다(즉, 각각의 1,000 개의 셀로부터 평균 하나의 셀이 부정확한 상태로 판독된다). 사용된 순서가 에러 레이트 최적이라면, 각각의 상태 에러는 정확히 1 비트를 생성하고, 따라서 비트 에러 레이트는 1,000 개의 셀당 1 이며, 전체 그룹을 판독할 때 평균 15 비트가 될 것이다. 그러나, 이들 15 비트 에러의 분포는 고르지 않다. 즉, 평균 15/4=3.75 에러를 포함하는 각각의 4 페이지 대신에 15*6/15=6 에러를 갖는 1 페이지, 15*5/15=5 에러를 갖는 1 페이지, 15*3/15=3 에러를 갖는 1 페이지 및 15*1/15=1 에러를 갖는 1 페이지를 갖는다(또한 여기서 모든 상태는 발생할 확률이 동일하다고 가정한다).
첫 번째 생각으로 이 불균일한 분포는 중요하지 않다고 할 수 있다. 결국 총 수가 동일하다면 에러가 어디에 위치하는 지 걱정할 필요가 없다. 그러나, 플래시 메모리로부터 판독된 데이터에 에러가 발생하는 ECC(Error Correction Code)를 설계해야 한다고 가정해 보라. 페이지는 한번에 판독되는 데이터 유닛으므로, 정정 회로는 한 번에 한 페이지를 처리하도록 설계되어야 한다. 만약, 에러가 동일한 셀에 있는 페이지들 가운데 고르게 분포되어 있다면, (판독된 비트당 비트 에러에 지정된)각각의 단일 페이지를 판독할 때의 예상 에러 레이트는 4 페이지에 걸쳐 계산된 예상 에러 레이트와 동일할 것이다. 위 예에서, 이것은 결국 15,000 비트의 각 페이지당 3.75 비트 에러가 된다. 그러나, 에러가 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1} 순서로 분포되면, 다른 페이지에 대해 상이한 에러 레이트, 즉 평균 6 에러를 갖는 1 페이지, 평균 5 에러를 갖는 1 페이지, 평균 3 에러를 갖는 1 페이지, 평균 1 에러를 갖는 1 페이지를 갖는다.
예상 평균 비트 에러는 ECC 회로의 설계에서 가장 중요한 요소이다. 예상 에러의 수가 많을수록, 여분의 패리티 또는 체크 비트를 저장하기 위해 더 많은 리던던시가 필요하고, 저장된 비트를 인코딩 및 디코딩하기 위해 회로가 더 복잡해진 다. 비교적 높은 에러 레이트(1/1,000 이상)를 가지고 작업하면, ECC 복잡도의 의존도 및 에러 레이트의 리던던시 비용이 매우 중요하며, 보호해야할 비트 에러 레이트를 다소 감소시키면 매우 유익하다. 따라서, ECC 설계의 관점에서, 페이지 중에서 고른 에러 분포 및 고르지 않은 에러 분포는 매우 상이하다. 고른 경우에 설계는 페이지당 예상 평균 3.75의 에러 수에 대해 보호해야 하며, 고르지 않은 경우에는 설계가 페이지당 예상 평균 6의 에러 수에 대해 보호해야 하는데, 이것은 훨씬 더 어렵고 비용이 많이 드는 작업이다.
이 모든 최종 결론은 총 에러 수를 볼 때 에러 레이트 최적 순서 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1}이 최적의 순서이지만, 각각의 페이지를 별도로 볼 때는 최적이 아니다는 것이다. 두 최적 표준을 모두 만족시키기 위해서는 다음 두 조건을 만족시키는 유효 순서를 찾을 필요가 있다.
a. 변화의 총 수는 가능한 가장 적은 것이다. 즉, 이 순서가 에러 레이트 최적이다.
b. 이들 변화는 상이한 비트 위치에 대해 고르게 확산된다.
3 비트 MBC 경우에 있어서, 변화의 최소 수는 7이다. 불행히도 7은 3으로 나누어지지 않는다. 따라서 후술하는 바와 같이 저장될 비트를 인터리빙하지 않고, 최적의 고른 분포를 갖는 최적의 전체 에러 레이트를 달성하는 방법은 없다. 1 비트가 3 개의 변화를 갖고 나머지 두 비트가 두 개의 변화를 각각 갖는 순서가 최선의 순서이다.
4 비트 MBC 경우에 있어서, 최소 변화 수는 15이다. 불행히도 15는 4로 나 누어지지 않는다. 따라서 후술하는 바와 같이, 저장될 비트를 인터리빙하지 않고, 완전히 고른 분포를 갖는 최적의 전체 에러 레이트를 달성하는 방법은 없다. 1 비트가 3 개의 변화를 갖고, 나머지 3 비트가 4 개의 변화를 각각 갖는 순서가 최선의 경우이다. 다시 이전의 예로 돌아가서, 이러한 순서는 페이지당 전체 평균 3.75 개의 에러에 비해 한 페이지가 3 개의 에러를 갖고, 3 페이지가 4 개의 에러를 갖게 된다.
만약 순서가 단지 하나의 변화에 의해 다른 비트 위치의 변화의 수와 상이한 임의의 비트 위치의 변화의 수를 갖게 된다면 그 순서가 "고르게 분포되었다"고 규정한다.
부칙 A는 3 비트 MBC 경우의 모든 유효 순서를 나열한다. 이들 순서 중 단 두 개의 순서만이 에러 레이트 최적이라는 것은 이미 언급하였다. 그러나, 이들 둘 모두 고른 분포 요건을 만족하지는 못한다는 것을 확인하였다. {7,6,4,5,1,0,2,3}은 (4,2,1) 변화의 분포를 갖는 반면에, {7,6,4,5,1,3,2,0}은 (3,3,1) 변화의 분포를 갖는다.
부칙 B는 에러 레이트 최적인 모든 유효 4 비트 순서를 나열한다. 36 개의 순서가 있다. 또한, 이들 중 어느 것도 고르게 분포되지 않거나 또는 심지어 거의 고르게 분포되지도 않는다는 것을 알 수 있다. 가장 고르게 분포된 순서는 (5,5,4,1) 변화의 분포를 가지며, 이것은 우리의 목표와는 전혀 다르다.
최소 변화의 수를 갖지만 보다 고르게 분포되는 순서를 발견할 수 없는지에 대해 의문을 가질 수 있다. 부칙 F는 (3,2,2) 분포를 갖는 일부 3 비트 순서를 나 열한다. 부칙 G는 (4,4,4,3) 분포를 갖는 일부 4 비트 순서를 나열한다. 그러나, 이들 고르게 분포된 순서 중 하나도 유효하지 않고, 따라서 이들 중 어느 것도 MBC에서 비트 인코딩을 나타내는데 사용될 수 없다. 이상으로부터 유효하지 않은 순서는 하나가 있는데, 여기서 비트를 기록하는 것이 셀의 임계치를 좌측으로 이동시키는데(즉, 임계 전압을 낮추는데) 필요치 않기 때문에 비트가 기록될 수 없는 경우가 있는데 이것은 가능하지 않다.
예를 들면, (4,4,4,3)의 분포를 갖는 4 비트 순서 {15,11,13,1,0,2,6,14,10,8,9,13,12,4,5,7}이 부칙 G에 나타나 있다. 그러나, 한번에 1 비트씩 셀에 "0000"의 값을 기록해야 한다고 가정하자. 이를 위해, 먼저 최하위 비트를 프로그램해야 하고("1110"="14"의 중간 값을 얻고), 그 자음에 제 2 최하위 비트를 프로그램해야 하며("1100"="12"), 그 다음에 제 2 최상위 비트를 프로그램해야 하고("1000"="8"), 그 다음에 마지막으로 최상위 비트를 프로그램하여 원하는 값인 "0000"을 얻는다. 이 시퀀스의 제 3 단계에서 셀은 상태 "12"로부터 상태 "8"로 이동해야 한다. 이 시퀀스의 마지막 단계에서, 셀은 상태 "8"로부터 상태 "0"으로 이동해야 한다. 그러나, 상태 12는 상태 8의 우측에 있고, 상태 8은 이 순서의 상태 0의 우측에 있으며, 따라서 이들 상태의 변화는 불가능하다.
따라서, 딜레마에 빠지게 됨을 알 수 있다. 한편, 에러 레이트 최적 및 고르게 분포된 순서를 이용하고자 하는 반면에, 유효 순서를 사용할 필요가 있지만, 이 두 요건을 모두 만족시키는 순서는 존재하지 않는다.
본 출원인의 미국 특허 출원 번호 제11/061,634호는 셀의 물리적 동작 방법 에 의해 부과된 유효성 요건을 위반하지 않으면서 에러 최적 및 고른 분포에 근사한 목적을 달성한다. US 11/061,634의 해법은 셀 내의 비트의 물리적 표현과 데이터의 사용자에 의해 해석된 논리적인 의미 사이에서 만들어지는 구분(distinction)에 기초한다. 유효성 제한은 물리적 레벨에 의해 부과되지만, 에러 레이트 제한은 논리적 레벨에 의해 부과된다. 따라서, 모순된 것처럼 보이는 요건들이 물리적 레벨에서보다 논리적 레벨에서 상이한 순서를 사용하여 해결된다.
비트들을 물리적으로 셀에 저장할 때(물리적 레벨), 유효하고 또한 에러 레이트 최적인 순서가 사용되지만, 반드시 고르게 분포될 필요는 없는 순서가 사용된다. 데이터를 플래시 메모리에 대해 입력 및 출력할 때(논리적 레벨), 고르게 분포되고 또한 에러 레이터 최적이지만 반드시 유효할 필요는 없는 순서가 사용된다. 두 순서 사이에 1:1 맵핑이 확립되고, 두 순서 사이의 교환은 기록을 위해 셀에 액세스하기 전에 그리고 판독을 위해 셀에 액세스한 후에 행해진다.
그러나, 만약 저장될 데이터가 균일하게 분포되고, 상태 에러 확률이 균일하게 분포되면, 매우 큰 M(M은 셀당 비트 수)의 제한을 제외하고는 US 11/061,634의 물리적 비트 순서 맵핑에 대해 논리적 비트 순서를 사용함으로써 비트 에러의 고른 분포를 달성하는 것이 불가능하다. 본 발명의 다음의 측면은 실제로 저장하기 전에 장치에 기록되는 데이터를 "혼합(mixing)" 및 재할당함으로써 MBC 장치에 저장된 논리 페이지들 사이의 고른 비트 에러 분포를 달성한다. 만약 사용자가 동일한 물리적 페이지에 저장되는 데이터의 M 개의 논리 페이지를 송신하면, 각각의 논리 페이지의 데이터 비트는 모두 셀 내의 동일한 "비트 위치"(예를 들면, 모든 셀의 L:SB 또는 MSB 위치)로 들어가지만, 모든 가능한 비트 위치에 동등하게 분할된다. 즉, 데이터의 논리 페이지가 15,000 개의 데이터 비트를 포함하고 4 비트 MBC 장치로 저장되면, 위 예에서와 같이, 3,750 개의 데이터 비트가 일부 셀의 최하위 비트 위치에 기록되고, 다른 3,750 개의 비트가 제 2의 최하위 비트 위치에 기록되며, 또 다른 3,750 개의 비트는 제 2의 최상위 비트 위치에 기록되고, 나머지 3,750 개의 비트가 최상위 비트 위치에 기록된다. 동일한 혼합이 동일 셀을 공유하는 데이터의 다른 세 개의 논리 페이지에 대해 행해진다. 따라서, 이 프로세스의 마지막에 셀의 각각의 물리적 비트 위치가 각각의 논리 페이지의 데이터의 1/4을 저장한다.
후술하는 바와 같이, 이 프로세스는 셀의 물리적 비트 위치 중에서 비트 에러의 분포에 관계 없이, 논리 데이터 페이지 중에서 비트 에러의 고른 분포를 발생하는 것을 보장한다. 셀의 인코딩 방안이 에러 레이트 최적(즉, "그레이 코드")이 되도록 선택된다고 가정하면, 이 방법을 적용함으로써 결국 논리 페이지 중의 에러의 분포가 에러 레이트 최적이 되고 또한 고르게 된다.
M 개의 비트/셀을 포함하는 MBC 장치를 고려해 보자. 이러한 장치에서 셀의 각각의 물리적 페이지는 M 개의 논리적 비트 페이지의 그룹으로 보일 수도 있다. ("비트 페이지"는 동일한 페이지의 모든 셀 내의 동일한 비트 위치를 차지하는 모든 비트의 집합이다. 예를 들면, 물리적 페이지 내의 모든 셀의 모든 최고 비트의 집합은 "최고 비트 페이지"라고도 하는 1 비트 페이지를 구성한다. 논리 페이지는 사용자가 볼 수 있는 데이터 비트의 집합이므로, 비트 페이지는 논리 페이지와는 다른 것으로 이해해야 한다. 본 발명의 이 측면의 특징은, 비트 페이지와 논리 페이지 사이를 1:1로 대응시키며, 어떠한 논리 페이지는 전체로서 어떠한 비트 페이지로서 저장되는 종래기술과 달리 비트 페이지와 논리 페이지의 두 개념을 분리하는데 있다.) 장치가 비트 인코딩을 위해 그레이 코드를 사용하면(즉, 인코딩이 에러 레이트 최적이면), 2M 상태 사이에 2M-1 상태의 변화를 가지며, 이 코드는 비트 페이지 1,2,...,M 각각에 대해 k1,k2,...,kM 개의 비트 변화를 가질 것이다.
k1+k2+...+kM=2M-1
만약, 장치에서의 상태 변화의 확률(즉, 에러의 확률)이 P이면, 비트 페이지(i)에서의 에러의 확률(Pi)은 다음과 같이 될 것이다.
Pi=P·ki/(2M-1)
M=1을 제외하면, 임의의 정수 q에 대해 2M-1≠Mq일 수 있으므로, 비트 페이지들 중에서 고른 에러 확률을 분포시킬 수 있는 코딩 방안이 존재하지 않는다. 이것은 고른 분포에 대해 Pi(및 따라서 모든 Ki)는 동일해야 하기 때문이며, 다음 등식을 요구한다.
2M-1=M·ki
이제, 각각의 비트 페이지가 동일한 물리적 페이지의 임의의 다른 비트 페이 지에 저장되는 것과 동일한 임의의 논리 페이지에 속하는 데이터 비트의 수를 저장하는 방법으로 논리 페이지의 데이터를 재배열하면, 각각의 비트 페이지는 동일한 확률의 P/M의 비트 에러를 가질 것이다. 이것은 희망하는 최적의 결과이다. 이 유형의 데이터 재배열을 여기서는 "인터리빙"이라 하며, 반면에 인터리브된 데이터를 원래의 순서로 다시 배열하는 반대의 동작을 "디인터리빙(de-interleaving)"이라 한다. 보다 일반적으로는, "인터리빙"은 비트 페이지 중 적어도 두 페이지 각각이 논리 페이지의 적어도 두 페이지 각각으로부터 적어도 한 페이지를 갖도록 논리 페이지의 데이터를 재배열하는 것을 의미하며, 이 "인터리빙"을 원상태로 되돌리는 것이 "디인터리빙"이다. 본 명세서에서 상세히 기술하는 "인터리빙"과 "디인터리빙"은 데이터가 균일하게 분포되어 있고 그 상태 에러 확률이 균일하게 분포되어 있는 비트 페이지에 동일한 비트 에러를 제공하는 "인터리빙" 및 "디인터리빙"의 특정 예이다.
따라서, 만약 그레이 코드로 코딩된 데이터가 메모리에 lrfhr되기 전에 인터리빙되고, 그 다음에 판독된 후에 디인터리빙되면, 그 결과는 이들 데이터가 장치에 의해 사용된 특정 그레이 코드에 관계없이 각 논리 페이지에 대해 비트 에러 P/M의 고르게 분포된 확률을 가질 것이다.
(각각의 비트 페이지에 저장된 논리 페이지를 동등하게 공유하는) 비트 페이지들 사이에 사용자의 데이터 비트를 고르게 할당하는 임의의 인터리빙/디인터리빙 방안은 상이한 논리 페이지에 대해 에러 확률을 동일하게 하는 것과 같은 효과를 가져올 것이다. 이 에러 확률의 등화는 물리적 비트 순서가 그레이 코드에 따르는 지에 관계없다. 그레이 코드 물리적 비트 순서가 사용되지 않으면, 총 비트 에러의 수는 최소화되지 않을 것이지만, 비트 에러는 모두 M 개의 논리 페이지에 걸쳐 균일하게 분포될 것이다.
도 5a 내지 5d는 간단한 인터리빙 방안을 도시한 것이다.
M 개의 논리 페이지로서 조직된 원 데이터는 M×M 비트의 행렬로 논리적으로 분할된다. 각각의 행렬에서, j 번째 행은 최초에 논리 페이지(j)의 데이터를 포함하고, 열(i)은 M 개의 셀의 대응 그룹 내의 셀(i)에 대응한다.
인터리빙 프로세스는 다음 방식으로 이러한 행렬을 각각 전치한다.
bit[i,j]=>bit[j,i]
즉, 각각의 원 논리 페이지의 개별 비트는 인터리빙된 페이지의 비트 페이지들 중에서 고르게 할당되고, 각각의 비트 페이지는 각각의 원 논리 페이지의 비트들의 1/M 번째 비트를 획득한다. 따라서, 각 인터리빙된 논리 페이지에서의 에러의 확률은 다음과 같이 된다.
P·k1/(2M-1)/M+P·k2/(2M-1)/M+...+P·kM/(2M-1)/M=P/M
M=2, M=3, M=4의 경우에 대한 위 방안에 따른 특정 인터리빙 방법은 도 5b 내지 5d에 도시되어 있다.
인터리빙된 비트로부터 논리 페이지의 "원(original)" 데이터를 재생하는 디인터리빙 프로세스는 정확히 동일한데, 즉 판독 비트를 M×M 행렬로 논리적으로 배열한 후 각각의 행렬을 다음과 같이 전치하는 것이다.
bit[i,j]=>bit[j,i]
이와 달리, 비트는 개별 비트로서가 아니라 비트 그룹으로서 전치되는데, 각각의 그룹은 하나의 논리 페이지의 비트의 연속하는 1/M 번째 비트를 포함한다. 각각의 논리 페이지는 연속하는 비트로 이루어진 M 개의 그룹 중에서 분할된다. 따라서 원 데이터는 단일의 M×M 행렬로서 구성되는데, 이 때 각각의 행렬 성분은 비트들로 이루어진 그룹으로, 논리 페이지들 중 하나로부터 논리 페이지의 비트 수의 1/M과 동일한 수이다. 앞에서와 같이, 행렬의 j 번째 행은 최초에 j 번째 논리 페이지의 비트를 포함하지만, 행렬의 i 번째 열은 논리 페이지의 i 번째 비트 그룹에 대응한다. 이 전치의 결과, 모든 논리 페이지의 제 1 1/M 번째 페이지가 제 1 비트 페이지에서 끝나고, 모든 논리 페이지의 제 2 1/M 번째 페이지가 제 2 비트 페이지에서 끝나며, 일반적으로 모든 논리 페이지의 i 번째 1/M 번째 페이지가 제 i 비트 페이지에서 끝난다.
인터리빙 방안은 단지 일례이며, 전술한 요건을 만족시키는 어떠한 인터리빙 방안도 본 발명의 이 특징을 위해 수락될 수 있음에 유의하라. 이것은, 결과의 비트 에러 확률이 모든 논리 페이지에 대해 동일한 한, 논리 페이지의 데이터 비트를 비트 페이지에 할당하는 것이 랜덤 프로세스를 이용하여 행해지는 비 결정론적 방안을 포함한다. "인터리빙"이라는 용어는 결정론적 인터리빙 방안 및 비결정론적 인터리빙 방안 모두를 포함하는 것으로 이해해야 한다.
위 논의에 기초하여, 사용자 데이터를 메모리 장치에 인코딩 및 기록하는 프로세스는 다음과 같이 행해진다.
1. 물리적 페이지에 저장되는 논리 페이지의 각 그룹에 대하여, 에러 확률 P/M(여기서 P는 에러의 장치 확률(셀이 그 상태를 변화시킬 확률)이고, M은 비트/셀의 수)에 따라 ECC 리던던시 비트(각 논리 페이지에 대해 개별적으로)를 부가한다.
2. 리던던시 비트를 포함하는 페이지의 데이터를 인터리빙한다.
3. 메모리 장치에 인터리빙된 데이터를 기록한다.
그러면, 판독 및 디코딩 프로세스는 다음과 같다.
1. 물리적 페이지에 저장된 모든 데이터 비트를 판독한다.
2. 데이터를 디인터리빙하고, 따라서 (ECC 리던던시 비트를 포함하는)원 논리 페이지를 재생한다. 일부 비트는 메모리 장치 내에서의 에러로 인해 플립(flip)될 수도 있다. 첨부한 청구범위에서, 원 ECC 리던던시 비트는 "리던던시 비트"라고 하며, 재생된(re-created) ECC 리던던시 비트는 "에러 정정 비트"라고 한다.
3. 각각의 논리 페이지에 대하여, ECC 알고리즘 및 대응 리던던시 비트를 사용하여 플립된 비트를(각 논리 페이지에 대해 개별적으로) 정정한다. 물리적 페이지에 저장된 모든 논리 페이지의 원 데이터가 이제 재구성되고 사용자에게 전달될 수 있다.
본 발명의 이 측면의 방법을 이용하기 위해, 기록 중에 구현된 인터리빙 단계 및 판독 중에 구현된 디인터리빙 단계를 가질 필요가 있다. 원리상 소프트웨어에 의해 구현된 이 인터리빙/디인터리빙을 갖는 것이 가능한데, 여기서 소프트웨어 는 호스트 컴퓨터(플래시 메모리가 호스트에 의해 직접 제어됨) 또는 독립형 제어기(플래시 메모리가 호스트에 대한 인터페이스로서 작용하는 플래시 장치 내의 제어기에 의해 제어됨)에 의해 실행된다. 도 6은 제 1 경우에 따른 시스템(30)의 고 레벨 블록도이다. 도 7은 제 2 경우에 따른 시스템(40)의 고 레벨 블록도이다.
시스템(30)에서, 호스트 컴퓨터(32)는 플래시 관리 소프트웨어(34)를 실행하여 플래시 메모리 장치(38)의 플래시 메모리를 관리한다. 플래시 관리 소프트웨어(34)는 본 발명의 두 개의 소프트웨어 모듈을 포함한다. 한 소프트웨어 모듈은 예를 들어 도 5a 내지 5d에 도시된 바와 같이, 기록시에 논리 페이지의 비트들을 인터리빙하고 판독시에 논리 페이지의 비트들을 디인터리빙하는 인터리빙/디인터리빙 모듈(36)이다. 다른 소프트웨어 모듈은 플래시 메모리 장치(38)에 기록되는 논리 페이지에 리던던시 비트를 첨부하고, 이들 논리 페이지의 리던던시 비트에 따라서, 플래시 메모리 장치(38)로부터 데이터를 판독하는 동안, 인터리빙/디인터리빙 모듈(36)로부터 수신되는 논리 페이지를 정정하는 에러 정정 모듈(37)이다.
시스템(40)에서, 호스트 컴퓨터(42)는 플래시 메모리 장치(52)에 판독 및 기록 인스트럭션을 송신한다. 플래시 메모리 장치(52)는 플래시 제어기(44)를 사용하여 플래시 관리 소프트웨어(46)를 실행시킴으로써 플래시 메모리(50)를 관리한다. 플래시 관리 소프트웨어(46)는 본 발명의 두 소프트웨어 모듈을 포함한다. 한 소프트웨어 모듈은 예를 들어 도 5a 내지 5d에 도시된 바와 같이, 기록시에 논리 페이지의 비트들을 인터리빙하고 판독시에 논리 페이지의 비트들을 디인터리빙하는 인터리빙/디인터리빙 모듈(48)이다. 다른 소프트웨어 모듈은 호스트 컴퓨 터(42)로부터 수신되는 논리 페이지에 리던던시 비트를 첨부하고, 이들 논리 페이지의 리던던시 비트에 따라서, 플래시 메모리 장치(52)로부터 데이터를 판독하는 동안, 인터리빙/디인터리빙 모듈(48)로부터 수신되는 논리 페이지를 정정하는 에러 정정 모듈(49)이다.
소프트웨어로 인터리빙/디인터리빙을 구현하는 것은 비효율적이다. 따라서, 독립형 제어기 다이 또는 플래시 셀과 동일한 다이 내에 하드웨어로 수행된 인터리빙/디인터리빙을 갖는 것이 더 낫다. 도 8은 제 1 경우에 따른 시스템(60)의 고 레벨 블록도이다. 도 9, 10은 제 2 경우에 따른 시스템(80) 및 시스템(100)의 고 레벨 블록도이다.
시스템(60)에서, 호스트 컴퓨터(62)는 판독 및 기록 인스트럭션을 플래시 메모리 장치(72)로 보낸다. 플래시 메모리 장치(72)는 플래시 제어기(64)를 사용하여 플래시 관리 소프트웨어(66)를 실행시킴으로써 플래시 메모리(70)를 관리한다. 플래시 제어기(64)가 플래시 메모리(70)에 기록할 때, 플래시 관리 소프트웨어(66)에 의해 생성된 논리 페이지는, 예를 들어 도 5a 내지 5d에 도시된 바와 같이, 플래시 제어기(64) 내의 인터리빙/디인터리빙 하드웨어(68)에 의해 인터리빙된다. 플래시 제어기(64)가 플래시 메모리(70)로부터 판독될 때, 플래시 메모리(70)로부터 수신된 논리 페이지는 예를 들어 도 5a 내지 5d에 도시된 바와 같이 인터리빙/디인터리빙 하드웨어(68)에 의해 디인터리빙된다. 도 9의 시스템(40)에서와 같이, 플래시 관리 소프트웨어(66)는 호스트 컴퓨터(62)로부터 수신되는 논리 페이지에 리던던시 비트를 첨부하고, 이들 논리 페이지의 리던던시 비트에 따라서, 플래시 메모리 장치(72)로부터 데이터를 판독하는 동안, 인터리빙/디인터리빙 하드웨어(68)로부터 수신되는 논리 페이지를 정정하는 에러 정정 모듈(67)을 포함한다.
시스템(80)에서, 호스트 컴퓨터(82)는 기록 및 판독 인스트럭션을 플래시 메모리 장치(92)로 보낸다. 플래시 메모리 장치(92)는 플래시 제어기(84)를 이용하여 플래시 관리 소프트웨어(86)를 실행함으로써 플래시 메모리(90)를 관리한다. 플래시 제어기(84)가 플래시 메모리(90)에 기록할 때, 플래시 메모리(90)는 플래시 제어기(84)로부터 논리 페이지를 수신하고, 플래시 메모리(90) 내의 인터리빙/디인터리빙 하드웨어(88)는 예를 들어 도 5a 내지 5d에 도시된 바와 같이 논리 페이지를 인터리빙한다. 플래시 제어기(84)가 플래시 메모리(90)로부터 판독할 때, 인터리빙/디인터리빙 하드웨어(88)는 예를 들어 도 5a 내지 5d에 도시된 바와 같이 플래시 제어기(84)에 표시하기 위해 플래시 메모리(90)의 논리 페이지를 디인터리빙한다. 도 9의 시스템(40) 및 도 10의 시스템(60)에서와 같이, 플래시 관리 소프트웨어(86)는 호스트 컴퓨터(82)로부터 수신되는 논리 페이지에 리던던시 비트를 첨부하고 이들 논리 페이지의 리던던시 비트에 따라서 플래시 메모리 방치(92)로부터 데이터를 판독하는 동안 인터리빙/디인터리빙 하드웨어(88)로부터 수신되는 논리 페이지를 정정하는 에러 정정 모듈(87)을 포함한다.
시스템(100)에서, 호스트 컴퓨터(102)는 플래시 관리 소프트웨어(104)를 실행하여 플래시 메모리 장치(110)를 관리한다. 호스트 컴퓨터(102)는 플래시 메모리 장치(110)로부터 논리 페이지를 판독하고, 플래시 메모리 장치(110)에 논리 페이지를 기록한다. 호스트 컴퓨터(102)가 플래시 메모리 장치(110)에 기록할 때, 플래시 메모리 장치(110)의 플래시 메모리(108) 내의 인터리빙/디인터리빙 하드웨어(106)는 예를 들어 도 5a 내지 5d에 도시된 바와 같이 논리 페이지를 인터리빙한다. 호스트 컴퓨터(102)가 플래시 메모리 장치(110)로부터 판독될 때, 인터리빙/디인터리빙 하드웨어(106)는 도 5a 내지 5d에 도시된 바와 같이 호스트 컴퓨터(102)에 표시하기 위해 플래시 메모리(108)의 논리 페이지를 디인터리빙한다. 도 8의 시스템(30)에서와 같이, 플래시 관리 소프트웨어(104)느 플래시 메모리 장치(110)에 기록되는 논리 페이지에 리던던시 비트를 첨부하고, 이들 논리 페이지의 리던던시 비트에 따라서 플래시 메모리 장치(110)로부터 수신되는 논리 페이지를 정정하는 에러 정정 모듈(105)을 포함한다.
비트 에러를 고르게 분포시키기 위해 논리 페이지를 인터리빙 및 디인터리빙하는 위 논의는 저장될 데이터가 균일하게 분하되며 상태 에러 확률이 균일하게 분포되어 있다고 가정한다. 비균일하게 분포된 데이터 및/또는 비균일하게 분포된 상태 에러 확률을 설명하는 위 절차를, 예를 들면, 다양한 비트 위치에 저장된 각각의 논리 페이지로부터 상이한 비트 수를 가짐으로써 수정하는 방법은 당업자에게 명백할 것이다.
이상, 실시예를 참조하여 본 발명을 설명하였지만, 본 발명의 많은 다른 변경, 수정 및 다른 적용이 행해질 수도 있을 것이다.

Claims (34)

  1. N 개의 입력 데이터 비트를 저장하는 방법에 있어서,
    (a) M이 적어도 2인
    Figure 112007034050047-PCT00017
    셀을 제공하는 단계와,
    (b) 상기 N 개의 입력 비트를 인터리빙(interleaving)하여 N 개의 인터리빙된 비트를 제공하는 단계와,
    (c) 각각의 상기 셀을 상기 인터리빙된 비트 중 M 개까지의 비트로 프로그램하는 단계
    를 포함하는 데이터 비트 저장 방법.
  2. 제 1 항에 있어서,
    상기 M은 적어도 3인
    데이터 비트 저장 방법.
  3. 제 1 항에 있어서,
    (d) M 개의 논리 페이지 중 상기 N 개의 입력 비트를 분할하는 단계를 더 포함하고,
    상기 인터리빙은 각각의 상기 논리 페이지로부터 동일한 수의 입력 비트를 순차적으로 갖는 상기
    Figure 112007034050047-PCT00018
    셀의 각각의 비트 페이지를 제공하는
    데이터 비트 저장 방법.
  4. 제 1 항에 있어서,
    상기 인터리빙은 결정론적인(deterministic)
    데이터 비트 저장 방법.
  5. 제 4 항에 있어서,
    상기 인터리빙은
    (i) 상기 N 개의 입력 비트를 적어도 하나의 M×M 행렬로 배열하는 단계와,
    (ii) 적어도 하나의 행렬 각각을 전치하는(transposing) 단계
    를 포함하는 단계에 의해 이루어지는
    데이터 비트 저장 방법.
  6. 제 5 항에 있어서,
    각각의 상기 행렬의 각각의 행렬 성분은 단일 입력 비트를 포함하는
    데이터 비트 저장 방법.
  7. 제 5 항에 있어서,
    상기 N 개의 입력 비트는 단일의 상기 M×M 행렬로 배열되고, 상기 행렬의 각각의 행렬 성분은 N/M2 개의 입력 비트를 포함하는
    데이터 비트 저장 방법.
  8. 제 1 항에 있어서,
    상기 인터리빙은 랜덤인
    데이터 비트 저장 방법.
  9. 제 1 항에 있어서,
    (d) 상기 셀로부터 상기 N 개의 인터리빙된 비트를 판독하는 단계와,
    (e) 상기 셀로부터 판독된 상기 N 개의 인터리빙된 비트를 디인터리빙(de-interleaving)하는 단계
    를 더 포함하는 데이터 비트 저장 방법.
  10. 메모리 장치로서,
    (a) 적어도 K 개의 셀을 포함하는 메모리와,
    (b) (i) N 개의 입력 비트를 인터리빙(interleaving)하여 N 개의 인터리빙된 비트를 제공하는 단계와,
    (ii) 상기 메모리의 K 개의 셀 각각을 상기 인터리빙된 비트 중
    Figure 112007034050047-PCT00019
    (M은 적어도 2) 개까지의 비트로 프로그램하는 단계
    를 포함하는 단계에 의해 상기 셀에 N 개의 입력 데이터 비트를 저장하도록 동작하는 제어기
    를 포함하는 메모리 장치.
  11. 제 10 항에 있어서,
    상기 M은 적어도 3인
    메모리 장치.
  12. 제 10 항에 있어서,
    상기 제어기는 상기 N 개의 입력 비트의 상기 인터리빙을 행하는 메커니즘을 포함하는
    메모리 장치.
  13. 제 12 항에 있어서,
    상기 메커니즘은 소프트웨어를 실행함으로써 상기 인터리빙을 행하는
    메모리 장치.
  14. 제 12 항에 있어서,
    상기 제어기는 상기 인터리빙을 행하는 전용 하드웨어를 포함하는
    메모리 장치.
  15. 제 10 항에 있어서,
    상기 메모리는 상기 인터리빙을 행하는 전용 하드웨어를 포함하는
    메모리 장치.
  16. 제 10 항에 있어서,
    상기 메모리는 플래시 메모리인
    메모리 장치.
  17. 데이터 저장 시스템으로서,
    (a) 적어도 K 개의 셀을 갖는 메모리를 포함하는 메모리 장치와,
    (b) 저장할 N 개의 입력 데이터 비트를 제공하는 상기 메모리 장치의 호스트와,
    (c) 상기 N 개의 입력 비트를 인터리빙하여, N 개의 인터리빙된 비트를 제공하는 인터리빙 메커니즘
    을 포함하되, 상기 메모리의 K 개의 셀 각각은 상기 인터리빙된 비트 중
    Figure 112007034050047-PCT00020
    (M은 적어도 2) 개까지의 비트로 프로그램되는
    데이터 저장 시스템.
  18. 제 17 항에 있어서,
    상기 M은 적어도 3인
    데이터 저장 시스템.
  19. 제 17 항에 있어서,
    상기 인터리빙 메커니즘은 소프트웨어를 실행함으로써 상기 인터리빙을 행하는
    데이터 저장 시스템.
  20. 제 19 항에 있어서,
    상기 인터리빙 메커니즘은 상기 호스트에 포함되는
    데이터 저장 시스템.
  21. 제 19 항에 있어서,
    상기 인터리빙 메커니즘은 상기 메모리의 제어기에 포함되고, 상기 제어기는 상기 메모리 장치에 포함되는
    데이터 저장 시스템.
  22. 제 17 항에 있어서,
    상기 인터리빙 메커니즘은 상기 인터리빙을 행하는 전용 하드웨어를 포함하는
    데이터 저장 시스템.
  23. 제 22 항에 있어서,
    상기 인터리빙 메커니즘은 상기 메모리의 제어기에 포함되고, 상기 제어기는 상기 메모리 장치에 포함되는
    데이터 저장 시스템.
  24. 제 22 항에 있어서,
    상기 인터리빙 메커니즘은 상기 메모리에 포함되는
    데이터 저장 시스템.
  25. 제 17 항에 있어서,
    상기 메모리는 플래시 메모리인
    데이터 저장 시스템.
  26. N 개의 데이터 비트 저장 방법에 있어서,
    (a) M 개(M은 적어도 2)의 입력 논리 페이지 중에서 상기 N 개의 데이터 비트를 분할하는 단계와,
    (b) 적어도 하나의 리던던시 비트를 상기 입력 논리 페이지 각각에 첨부하여 L≥N+M 개의 입력 비트를 제공하는 단계와,
    (c)
    Figure 112007034050047-PCT00021
    개의 셀을 제공하는 단계와,
    (d) 상기 L 개의 입력 비트를 인터리빙하여, L 개의 인터리빙된 비트를 제공하는 단계와,
    (e) 각각의 상기 셀을 상기 인터리빙된 비트 중 M 개까지의 비트로 프로그램하는 단계
    를 포함하는 데이터 비트 저장 방법.
  27. 제 26 항에 있어서,
    상기 M은 적어도 3인
    데이터 비트 저장 방법.
  28. 제 26 항에 있어서,
    각각의 상기 셀은 상태 변화 확률(state transition probability)(P)을 가지며, 각각의 상기 입력 논리 페이지에 대해, 상기 입력 논리 페이지의 상기 적어도 하나의 리던던시 비트의 수가 약 P/M의 에러 확률에 따라서 선택되는
    데이터 비트 저장 방법.
  29. 제 26 항에 있어서,
    (f) 상기 셀로부터 상기 인터리빙된 비트를 판독하는 단계와,
    (g) 상기 셀로부터 판독된 상기 인터리빙된 비트를 디인터리빙하여, 디인터 리빙된 비트로 이루어진 M 개의 출력 논리 페이지를 제공하는 단계로서, 각각의 상기 출력 논리 페이지는 적어도 하나의 에러 정정 비트를 포함하는, 상기 제공 단계와,
    (h) 각각의 상기 출력 논리 페이지에 대해, 상기 출력 논리 페이지의 상기 적어도 하나의 에러 정정 비트에 따라 상기 각각의 출력 논리 페이지의 상기 디인터리빙된 비트를 정정하는 단계
    를 더 포함하는 데이터 비트 저장 방법.
  30. M≥2 개의 논리 페이지 중에서 분할된 N 개의 데이터 비트를 저장하는 메모리 장치에 있어서,
    (a) 적어도 하나의 리던던시 비트를 각각의 상기 논리 페이지에 첨부하여 L≥N+M 개의 입력 비트를 제공하는 메커니즘과,
    (b) 적어도
    Figure 112007034050047-PCT00022
    개의 셀을 포함하는 메모리와,
    (c) (i) 상기 L 개의 입력 비트를 인터리빙하여 L 개의 인터리빙된 비트를 제공하고,
    (ii) 상기 메모리의 K 개의 셀 각각을 상기 인터리빙된 비트 중 M 개까지의 비트로 프로그램하도록
    동작하는 제어기
    를 포함하는 메모리 장치.
  31. 제 30 항에 있어서,
    상기 메커니즘은 상기 제어기에 포함되는
    메모리 장치.
  32. 제 30 항에 있어서,
    상기 M은 적어도 3인
    메모리 장치.
  33. 데이터 저장 시스템에 있어서,
    (a) M 개(M은 적어도 2)의 논리 페이지 중에서 분할된 N 개의 데이터 비트를 제공하는 호스트와,
    (b) 적어도 하나의 리던던시 비트를 각각의 상기 논리 페이지에 첨부하여 L≥N+M 개의 입력 비트를 제공하는 에러 정정 메커니즘과,
    (c) 적어도
    Figure 112007034050047-PCT00023
    개의 셀을 갖는 메모리를 포함하는 메모리 장치와,
    (d) 상기 L 개의 입력 비트를 인터리빙하여 L 개의 인터리빙된 비트를 제공하고, 상기 메모리의 K 개의 셀 각각은 상기 인터리빙된 비트의 M 개까지의 비트로 프로그램되는 인터리빙 메커니즘
    을 포함하는 데이터 저장 시스템.
  34. 제 33 항에 있어서,
    상기 M은 적어도 3인
    데이터 저장 시스템.
KR1020077010412A 2004-11-08 2005-10-26 데이터 비트 저장 방법, 메모리 장치 및 데이터 저장시스템 KR100961288B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US62575204P 2004-11-08 2004-11-08
US60/625,752 2004-11-08
US11/078,478 2005-03-14
US11/078,478 US7493457B2 (en) 2004-11-08 2005-03-14 States encoding in multi-bit flash cells for optimizing error rate

Publications (2)

Publication Number Publication Date
KR20070087557A true KR20070087557A (ko) 2007-08-28
KR100961288B1 KR100961288B1 (ko) 2010-06-04

Family

ID=36317676

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077010412A KR100961288B1 (ko) 2004-11-08 2005-10-26 데이터 비트 저장 방법, 메모리 장치 및 데이터 저장시스템

Country Status (3)

Country Link
US (2) US7493457B2 (ko)
KR (1) KR100961288B1 (ko)
WO (1) WO2006048861A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301978B2 (en) 2008-05-23 2012-10-30 Samsung Electronics Co., Ltd. Memory device and method of storing data with error correction using codewords
US8743604B2 (en) 2010-02-08 2014-06-03 Samsung Electronics Co., Ltd. Nonvolatile memory devices having improved read reliability
US9460005B2 (en) 2012-12-04 2016-10-04 Samsung Electronics Co., Ltd. Storage devices including memory device and methods of operating the same
US9792990B2 (en) 2010-09-20 2017-10-17 Samsung Electronics Co., Ltd. Flash memory system and word line interleaving method thereof

Families Citing this family (228)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7333364B2 (en) * 2000-01-06 2008-02-19 Super Talent Electronics, Inc. Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory
US7660941B2 (en) * 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
JP2006302345A (ja) * 2005-04-15 2006-11-02 Sony Corp データ処理装置、データ再生装置、データ処理方法及びプログラム
EP1898312A4 (en) * 2005-06-24 2008-10-08 Matsushita Electric Ind Co Ltd MEMORY CONTROLLER, NONVOLATILE STORAGE DEVICE, NONVOLATILE STORAGE SYSTEM, AND DATA WRITING METHOD
US7526715B2 (en) * 2005-10-17 2009-04-28 Ramot At Tel Aviv University Ltd. Probabilistic error correction in multi-bit-per-cell flash memory
US8020060B2 (en) * 2006-01-18 2011-09-13 Sandisk Il Ltd Method of arranging data in a multi-level cell memory device
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
WO2007132452A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
US7639531B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Dynamic cell bit resolution
US8000134B2 (en) 2006-05-15 2011-08-16 Apple Inc. Off-die charge pump that supplies multiple flash devices
US7551486B2 (en) 2006-05-15 2009-06-23 Apple Inc. Iterative memory cell charging based on reference cell value
US7511646B2 (en) * 2006-05-15 2009-03-31 Apple Inc. Use of 8-bit or higher A/D for NAND cell value
US7840875B2 (en) * 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
US7639542B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Maintenance operations for multi-level data storage cells
US7613043B2 (en) * 2006-05-15 2009-11-03 Apple Inc. Shifting reference values to account for voltage sag
US7701797B2 (en) * 2006-05-15 2010-04-20 Apple Inc. Two levels of voltage regulation supplied for logic and data programming voltage of a memory device
US20070266296A1 (en) * 2006-05-15 2007-11-15 Conley Kevin M Nonvolatile Memory with Convolutional Coding
US7911834B2 (en) * 2006-05-15 2011-03-22 Apple Inc. Analog interface for a flash memory die
US7568135B2 (en) 2006-05-15 2009-07-28 Apple Inc. Use of alternative value in cell detection
US7852690B2 (en) * 2006-05-15 2010-12-14 Apple Inc. Multi-chip package for a flash memory
US7716415B2 (en) * 2006-08-01 2010-05-11 Sandisk Il Ltd. Method of avoiding errors in flash memory
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7805663B2 (en) 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
US7818653B2 (en) * 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
US7904783B2 (en) * 2006-09-28 2011-03-08 Sandisk Corporation Soft-input soft-output decoder for nonvolatile memory
US20080092015A1 (en) * 2006-09-28 2008-04-17 Yigal Brandman Nonvolatile memory with adaptive operation
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7558109B2 (en) * 2006-11-03 2009-07-07 Sandisk Corporation Nonvolatile memory with variable read threshold
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
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US7701765B2 (en) * 2006-12-28 2010-04-20 Micron Technology, Inc. Non-volatile multilevel memory cell programming
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
TW200832436A (en) * 2007-01-26 2008-08-01 Holtek Semiconductor Inc Data securing method and structure for non-volatile storage device
US20080189473A1 (en) * 2007-02-07 2008-08-07 Micron Technology, Inc Mlc selected multi-program for system management
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US7971127B2 (en) * 2007-03-31 2011-06-28 Sandisk Technologies Inc. Guided simulated annealing in non-volatile memory 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
US7966546B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Non-volatile memory with soft bit data transmission for error correction control
US7975209B2 (en) * 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
KR100836800B1 (ko) * 2007-05-30 2008-06-10 삼성전자주식회사 메모리 데이터 독출 장치 및 이를 이용한 메모리 데이터독출 방법
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8650352B2 (en) * 2007-09-20 2014-02-11 Densbits Technologies Ltd. Systems and methods for determining logical values of coupled flash memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
WO2009053962A2 (en) * 2007-10-22 2009-04-30 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8443242B2 (en) 2007-10-25 2013-05-14 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
US8270246B2 (en) 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
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
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
WO2009072104A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
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
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8327246B2 (en) * 2007-12-18 2012-12-04 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
KR101386489B1 (ko) * 2008-01-14 2014-04-21 삼성전자주식회사 메모리 장치 및 멀티 비트 프로그래밍 방법
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
TWI381387B (zh) * 2008-02-21 2013-01-01 Phison Electronics Corp 儲存裝置、控制器及其資料存取方法
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8059457B2 (en) * 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8627165B2 (en) * 2008-03-24 2014-01-07 Micron Technology, Inc. Bitwise operations and apparatus in a multi-level system
US8972472B2 (en) * 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
TWI362668B (en) * 2008-03-28 2012-04-21 Phison Electronics Corp Method for promoting management efficiency of an non-volatile memory storage device, non-volatile memory storage device therewith, and controller therewith
US7808831B2 (en) * 2008-06-30 2010-10-05 Sandisk Corporation Read disturb mitigation in non-volatile memory
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
KR101486424B1 (ko) * 2008-09-12 2015-01-26 삼성전자주식회사 에러 정정 회로, 에러 정정 회로를 구비하는 플래시 메모리시스템 및 에러 정정 회로의 동작 방법
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US20100169557A1 (en) * 2008-12-31 2010-07-01 John Mark Morris Using non-volatile storage to track status changes in objects
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
KR20100106142A (ko) * 2009-03-23 2010-10-01 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8102705B2 (en) 2009-06-05 2012-01-24 Sandisk Technologies Inc. Structure and method for shuffling data within non-volatile memory devices
US8027195B2 (en) * 2009-06-05 2011-09-27 SanDisk Technologies, Inc. Folding data stored in binary format into multi-state format within non-volatile memory devices
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8305812B2 (en) * 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
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
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
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
US8458572B1 (en) * 2009-11-24 2013-06-04 Apple Inc. Efficient storage of error correction information in DRAM
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8144512B2 (en) 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
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
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
US8700970B2 (en) * 2010-02-28 2014-04-15 Densbits Technologies Ltd. System and method for multi-dimensional decoding
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
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
WO2011154780A1 (en) 2010-06-11 2011-12-15 Freescale Semiconductor, Inc. Method for providing data protection for data stored within a memory element and integrated circuit device therefor
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8417876B2 (en) 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
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
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US8464135B2 (en) 2010-07-13 2013-06-11 Sandisk Technologies Inc. Adaptive flash interface
KR101719395B1 (ko) 2010-07-13 2017-03-23 샌디스크 테크놀로지스 엘엘씨 백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법
US9069688B2 (en) 2011-04-15 2015-06-30 Sandisk Technologies Inc. Dynamic optimization of back-end memory system interface
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
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
KR101736792B1 (ko) 2010-09-20 2017-05-18 삼성전자주식회사 플래시 메모리 및 그것의 셀프 인터리빙 방법
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US9195540B2 (en) * 2010-10-06 2015-11-24 HGST, Inc. Multiple sector parallel access memory array with error correction
US8560919B2 (en) 2010-10-22 2013-10-15 Sandisk Technologies Inc. System and method of interleaving data according to an adjustable parameter
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
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
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
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. 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
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
US8874994B2 (en) 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
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
KR20130041603A (ko) * 2011-10-17 2013-04-25 삼성전자주식회사 비휘발성 메모리 장치의 데이터 저장 방법
JP2013089082A (ja) * 2011-10-19 2013-05-13 Toshiba Corp メモリコントローラ、半導体記憶システムおよびメモリ制御方法
US8666068B2 (en) 2011-10-20 2014-03-04 Sandisk Technologies Inc. Method for scrambling shaped data
US8832506B2 (en) 2012-01-20 2014-09-09 International Business Machines Corporation Bit error rate based wear leveling for solid state drive memory
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8842473B2 (en) 2012-03-15 2014-09-23 Sandisk Technologies Inc. Techniques for accessing column selecting shift register with skipped entries in non-volatile memories
KR101962786B1 (ko) * 2012-03-23 2019-03-27 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
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
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9098428B2 (en) 2012-12-11 2015-08-04 Sandisk Technologies Inc. Data recovery on cluster failures and ECC enhancements with code word interleaving
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9041428B2 (en) 2013-01-15 2015-05-26 International Business Machines Corporation Placement of storage cells on an integrated circuit
US9201727B2 (en) 2013-01-15 2015-12-01 International Business Machines Corporation Error protection for a data bus
US9021328B2 (en) 2013-01-15 2015-04-28 International Business Machines Corporation Shared error protection for register banks
US9043683B2 (en) 2013-01-23 2015-05-26 International Business Machines Corporation Error protection for integrated circuits
US9124300B2 (en) 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
US9431125B2 (en) * 2013-03-15 2016-08-30 Sandisk Technologies Llc Method and system for adaptive setting of verify levels in flash memory
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
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
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
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
US9384128B2 (en) 2014-04-18 2016-07-05 SanDisk Technologies, Inc. Multi-level redundancy code for non-volatile memory controller
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
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
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
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US10055267B2 (en) 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
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
DE102016107285B4 (de) * 2016-04-20 2019-04-25 Infineon Technologies Ag Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US11893243B2 (en) 2021-10-06 2024-02-06 Western Digital Technologies, Inc. Storage system and method for program reordering to mitigate program disturbs

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2632058A (en) 1946-03-22 1953-03-17 Bell Telephone Labor Inc Pulse code communication
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US6088261A (en) * 1997-08-12 2000-07-11 Nippon Steel Corporation Semiconductor storage device
US5886930A (en) * 1997-09-24 1999-03-23 Emc Corporation Bit interleaving in a memory which uses multi-bit DRAMs
WO1999025069A1 (fr) * 1997-11-10 1999-05-20 Ntt Mobile Communications Network, Inc. Procede et dispositif d'entrelacement, et support d'enregistrement dans lequel on a enregistre un programme de production de motifs d'entrelacement
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6772383B1 (en) * 1999-05-27 2004-08-03 Intel Corporation Combined tag and data ECC for enhanced soft error recovery from cache tag errors
KR200171332Y1 (ko) 1999-09-14 2000-03-15 김경미 배선덕트
US6297988B1 (en) 2000-02-25 2001-10-02 Advanced Micro Devices, Inc. Mode indicator for multi-level memory
US6707713B1 (en) * 2000-03-01 2004-03-16 Advanced Micro Devices, Inc. Interlaced multi-level memory
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
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6483743B1 (en) * 2001-06-18 2002-11-19 Intel Corporation Multilevel cell memory architecture
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
JP4437519B2 (ja) * 2001-08-23 2010-03-24 スパンション エルエルシー 多値セルメモリ用のメモリコントローラ
US7082168B2 (en) * 2002-05-21 2006-07-25 Coffey John T Methods and apparatus for self-inverting turbo code interleaving with high separation and dispersion
US20050213393A1 (en) 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301978B2 (en) 2008-05-23 2012-10-30 Samsung Electronics Co., Ltd. Memory device and method of storing data with error correction using codewords
US8543892B2 (en) 2008-05-23 2013-09-24 Samsung Electronics Co., Ltd. Memory device and method of storing data with error correction using codewords
US8743604B2 (en) 2010-02-08 2014-06-03 Samsung Electronics Co., Ltd. Nonvolatile memory devices having improved read reliability
US9792990B2 (en) 2010-09-20 2017-10-17 Samsung Electronics Co., Ltd. Flash memory system and word line interleaving method thereof
US9460005B2 (en) 2012-12-04 2016-10-04 Samsung Electronics Co., Ltd. Storage devices including memory device and methods of operating the same

Also Published As

Publication number Publication date
WO2006048861A2 (en) 2006-05-11
US20090113120A1 (en) 2009-04-30
US8010755B2 (en) 2011-08-30
KR100961288B1 (ko) 2010-06-04
WO2006048861A3 (en) 2008-01-10
US20060101193A1 (en) 2006-05-11
US7493457B2 (en) 2009-02-17

Similar Documents

Publication Publication Date Title
KR100961288B1 (ko) 데이터 비트 저장 방법, 메모리 장치 및 데이터 저장시스템
US8055972B2 (en) States encoding in multi-bit flash cells for optimizing error rate
EP1735967B1 (en) States encoding in multi-bit flash cells
KR101675170B1 (ko) 플래시 메모리 프로그래밍 방법 및 시스템, 플래시 메모리 판독 방법 및 시스템
US8327246B2 (en) Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
KR100922515B1 (ko) 플래시 메모리의 신뢰성을 높이는 방법
US8136014B2 (en) Non-volatile semiconductor memory device
CN101183565B (zh) 存储介质中数据校验方法
CN101533671B (zh) 非易失性存储装置及其操作方法
KR20090101887A (ko) 치환 변환을 사용하여 플래시 메모리 내의 에러를 피하는 방법
CN100489996C (zh) 产生错误更正码的方法与系统
KR20100139010A (ko) 멀티-레벨 셀 플래쉬 메모리 디바이스 내에 데이터를 저장하는 방법 및 멀티-레벨 셀 플래쉬 메모리 디바이스
KR20130029080A (ko) 소거 없는 플래시 메모리의 다중 프로그래밍
WO2011150177A1 (en) Methods and devices to reduce outer code failure rate variability
WO2013112580A1 (en) Generating soft read values using multiple reads and/or bins
CN110795270A (zh) 固态储存装置及其读取重试方法
JP2011014195A (ja) フラッシュメモリ
CN101276645B (zh) 采用三电平单元的存储装置及相关的管理方法
US20180166148A1 (en) Control method for memory device and memory controller
JP2018022546A (ja) ストレージシステム用のセル位置プログラミング
KR101508665B1 (ko) 비휘발성 메모리 장치, 이를 위한 메모리 제어기 및 동작 방법
CN113342570B (zh) 一种适配3d tlc型nand闪存数据存储的双目标状态消除编解码方法
KR20090011207A (ko) 3비트 멀티 레벨 셀 메모리 소자의 프로그램 방법
JP2006031755A (ja) 不揮発性半導体記憶装置及びデータ読み書き方法
Maeda et al. Less Reliable Page Error Reduction for 3D-TLC NAND Flash Memories with Data Overhead Reduction by 40% and Data-retention Time Increase by 5.0 x

Legal Events

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

Payment date: 20130502

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190516

Year of fee payment: 10