KR20070054659A - 에러율을 최적화하기 위한 멀티-비트 플래시 셀의 상태인코딩 - Google Patents

에러율을 최적화하기 위한 멀티-비트 플래시 셀의 상태인코딩 Download PDF

Info

Publication number
KR20070054659A
KR20070054659A KR1020077006271A KR20077006271A KR20070054659A KR 20070054659 A KR20070054659 A KR 20070054659A KR 1020077006271 A KR1020077006271 A KR 1020077006271A KR 20077006271 A KR20077006271 A KR 20077006271A KR 20070054659 A KR20070054659 A KR 20070054659A
Authority
KR
South Korea
Prior art keywords
bits
bit
ordering
bit ordering
cell
Prior art date
Application number
KR1020077006271A
Other languages
English (en)
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 KR20070054659A publication Critical patent/KR20070054659A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Abstract

메모리 셀들은 논리적 비트 오더링을 참조한 유효, 비직렬의 물리적 비트 오더링에 따라, 셀당 M=3 이상의 데이터 비트들을, 독출하게 프로그램되어 있다. 상기 논리적 비트 오더링은, 물리적 비트 오더링 만으로 제공되는 것 보다, 데이터 에러 및 셀 상태 변환 에러의 가능성 분포에 대한, 비트들의 에러 가능성의 더욱 균일한 분포를 제공하도록 선택된다. 바람직하게도, 양 비트 오더링들은 2M 1변환들을 가진다. 바람직하게도, 논리적 비트 오더링은 균일하게 분포된다. 상기 비트 오더링들 사이의 변환은 소프트웨어 또는 하드웨어에 의해 행해진다.

Description

에러율을 최적화하기 위한 멀티-비트 플래시 셀의 상태 인코딩{STATES ENCODING IN MULTI-BIT FLASH CELLS FOR OPTIMIZING ERROR RATE}
본 발명은 플래시 메모리들에 관한 것으로, 더 구체적으로 멀티-비트 플래시 셀의 데이터 저장 방법에 관한 것이다.
플래시 메모리 장치는 수년 동안 알려져 있다. 일반적으로, 플래시 메모리 내의 각 셀은 일 비트의 정보를 저장하고 있다. 통상, 비트를 저장하는 방법은 셀의 두 개의 상태들 - 논리 “0”을 나타내는 하나의 상태 및 논리 “1”을 나타내는 다른 상태 -을 유지함에 의한 것이다. 플래시 메모리 셀에서, 상기 두 개의 상태들은 셀의 채널에 플로팅 게이트(셀의 트랜지스터의 소스 및 드레인 소자들을 접속하는 영역)를 갖고, 이러한 플로팅 게이트 내에 저장된 전하량에 대한 두 개의 유효 상태들을 갖는 것에 의해 실행된다. 일반적으로, 하나의 상태는 플로팅 게이트에 제로 전하를 가지며 소거된(통상 상태 “1”을 나타내도록 정의됨) 후의 셀의 초기 미기입 상태이고 다른 상태는 플로팅 게이트에 부전하량을 갖는(통상 상태 “0”을 나타내도록 정의됨) 경우이다. 게이트에 부전하를 가지면 셀 트랜지스터의 임계 전압(즉, 트랜지스터가 도통하게 되도록 트랜지스터의 제어 게이트에 인가될 전압)이 증가한다. 이제 셀의 임계 전압을 체킹함에 의해 저장된 비트를 독출할 수 있다 : 임계 전압이 더 높은 상태이면 비트 값은 “0”이고 임계 전압이 낮은 상태이면 비트 값은 “1”이다. 실제로 셀의 임계 전압을 정확하게 독출할 필요는 없다. 필요한 모든 것은 셀이 현재 위치한 두 개의 상태들을 올바르게 확인하는 것이다. 이 목적을 위해서는 두 개의 상태들 사이의 중간인 기준 전압 값에 대한 비교를 행하는 것, 따라서 셀의 임계 전압이 이 기준 값 아래 또는 위 인지를 결정하는 것으로 충분하다.
도1a는 상기한 작용의 방법을 그래프로 나타내고 있다. 특히, 도1a는 셀의 대집단의 임계 전압의 분포를 나타내고 있다. 플래시 메모리의 셀들이 그들의 특성 및 거동이 정확하게 동일하지 않기 때문에(예컨대, 불순물 농도의 작은 변화 또는 실리콘 구조의 결함), 모든 셀들에 동일 프로그래밍 동작을 인가하여도 모든 셀들이 정확하게 동일한 임계 전압을 갖지 않게 된다. (플래시 메모리로의 기입 데이터는 통상 플래시 메모리를 “프로그래밍“ 하는 것으로 이해하기 바란다). 대신, 임계 전압은 도1a에 도시된 방법과 유사하게 분포된다. ”1“의 값을 저장하는 셀들은 부의 임계 전압을 가지며, 이로써 대부분의 셀들은 도1a의 좌측 피크로 나타낸 값에 가까운 임계 전압을 갖게 되고, 일부 적은 수의 셀들이 낮거나 또는 높은 임계 전압을 가진다. 유사하게, ”0“의 값을 저장하는 셀들은 정의 임계 전압을 가지며, 이로써 대부분의 셀들은 도1a의 우측 피크로 나타낸 값에 가까운 임계 전압을 갖게 되고, 일부 적은 수의 셀들이 낮거나 또는 높은 임계 전압을 가진다.
최근에, “멀티 레벨 셀” 또는 약자로 MLC라 하는 기술을 이용한, 새로운 종류의 플래시 메모리가 출현되었다. (이 명칭은, 종전 타입의 플래시 셀들도 하나 이상의 레벨을 가지며: 그들도 상기한 바와 같이 두 개의 레벨들을 갖기 때문에, 혼동을 주게 된다. 따라서, 상기 두 종류의 플래시 셀들은 이하 ”싱글 비트 셀“(SBC) 및 ”멀티-비트 셀“(MBC)이라고 한다). MBC 플래시에 의해 제공되는 개선점은 각 셀에 두개 이상의 비트들을 저장하는 점이다. 단일 셀에 2비트들의 정보를 저장하기 위해 상기 셀은 4개의 다른 상태들 중 하나로 될 수 있어야 한다. 셀들의 ”상태“는 그의 임계 전압에 의해 나타나므로, 2-비트 MBC 셀이 그의 임계 전압에 대해 4개의 다른 유효 범위들을 유지해야 함은 명백하다. 도1b는 2-비트 MBC 셀의 임계 전압 분포를 나타낸다. 기대하는 바와 같이, 도1b는, 각각 하나의 상태에 대응하는 4개의 피크들을 가진다. SBC 경우에 있어서, 각각의 상태는 단일의 넘버가 아니고 실제로 범위가 있다. 셀의 컨텐츠를 독출할 때, 반드시 보장되어야 하는 것 전부는 셀의 임계 전압이 있는 범위가 올바르게 확인되는 것이다. MBC 플래시 메모리의 종래 기술의 예는 하라리의 미국 특허 제5,434,825호를 참조하면 된다.
유사하게, 3비트들의 정보를 단일 셀에 저장하기 위해서는 상기 셀은 8개의 다른 상태들 중 하나로 될 수 있어야 한다. 따라서, 3-비트 MBC 셀은 그의 임계 전압에 대해 8개의 다른 유효 범위들을 유지하여야 한다. 도1c는 통상의 3-비트 MBC 셀의 임계 전압 분포를 나타낸다. 기대하는 바와 같이, 도1c는, 각각 하나의 상태에 대응하는 8개의 피크들을 가진다. 도1d는, 16개의 임계 전압 범위들에 의해 나타내지는 16개의 상태들이 필요하게 되는, 4-비트 MBC 셀의 임계 전압 분포를 나타낸다.
4개의 상태들을 통해 MBC 셀의 두 개의 비트들을 인코딩할 때, 일반적으로 “1”의 값을 가진 양쪽 비트들의 경우를 나타내는 도1b의 가장 좌측 상태(통상 부의 임계 전압을 가진다)를 갖게 된다. (이하의 설명에서 - 상기 두 개의 비트들의 셀은 “하위 비트” 및 ”상위 비트“라 한다. 상기 비트들의 명시적 값은, 우측에 하위 비트 값을 나타내는 [”상위 비트““하위 비트”] 형태로 기입된다. 하위 비트가 “0”이고 상위 비트가 “1”인 경우, “10”으로 기입된다. 이 용어 및 표기의 선택은 임의적이며, 다른 명칭 및 인코딩들도 사용될 수 있음을 이해하기 바란다). 이 표기를 이용하면, 가장 좌측 상태는 “11”의 경우를 나타낸다. 다른 3개의 상태들은 좌에서 우로 다음 순서로 할당된다 : “10”, “00, ”01“. 우리는, 모든 목적으로 본 출원에 참조되어 포함된, 첸의 미국 특허 제6,522,580호에서 이 인코딩을 이용한 MBC NAND 플래시 메모리의 실행의 예를 볼 수 있다. 특히, 상기 첸의 특허의 도8을 참조하기 바란다. 타나카의 미국 특허 제6,643,188호도 MBC NAND 플래시 메모리의 유사한 실행을 나타내고 있지만, 도7을 참조하면 비트 인코딩에 대한 상태들의 할당에 차이가 있다 : ”11“, ”10“, ”01“, ”00“. 상기 첸의 인코딩은 도1b에 나타낸 것이다.
우리는, 다음과 같이, 상기 용어 및 표기를 셀당 2비트 이상의 경우들로 연장한다. 가장 좌측의 미기입 상태는 “모두 1”(“1....1”)을 나타내며, 스트링 “1...10”은 셀의 최하위 비트만이 “0”으로 기입된 경우를 나타내며, 스트링 “01....1”은 셀의 최상위 비트만이 “0”으로 기입됨을 나타낸다.
MBC 셀의 컨텐츠를 독출할 때, 셀의 임계 전압이 있는 범위는 올바르게 확인되어야 하며; 단지 이 경우에 있어서 이는 항상 하나의 기준 전압만에 대해 비교함 에 의해 얻어질 수는 없다. 예컨대, 도1b에 도시된 경우에, 히위 비트를 독출하도록, 먼저 셀의 임계 전압이 기준 비교 전압 V1에 비교된 후, 비교의 결과에 따라, 제로 기준 비교 전압 또는 기준 비교 전압 V2에 비교해야 한다. 이와 다르게, 하위 비트는 제로 기준 전압 및 기준 비교 전압 V2에 대해 임계 전압을 무조건적으로 비교하고, 다시 두 개의 비교를 요구함에 의해 독출된다. 셀당 2비트 이상에 대해, 그 이상의 비교들이 요구될 수 있다.
단일 MBC 셀의 비트들은 모두 동일 플래시 페이지에 속하거나, 또는 다른 페이지들에 할당되어, 예컨대, 4-비트 셀에서, 최하위 비트는 페이지 0에 있고, 다음 비트는 페이지 1에 있고, 그 다음 비트는 페이지 2에 있고, 최상위 비트는 페이지 3에 있게 된다. (페이지는 플래시 메모리에 분리되어 기입될 수 있는 데이터의 가장 작은 부분이다). 양 방법들 모두 사용 중이다. 본 발명의 방법들은 “그 자신의 페이지의 각각의 비트”의 내용으로 본 명세서에서 설명되지만, 이 방법들도 동일 페이지에 있는 모든 비트들의 경우에 적용될 수 있다.
2-비트 MBC 셀에 대해 상기한 바와 같이, 셀의 임계 전압 상태들 및 그들이 나타내는 비트 인코딩 사이의 대응성을 정의하는 방법에 하나 이상의 옵션이 있다. 각각의 대응성은 임계 전압 축을 따라 인코딩된 비트 패턴들의 특정 오더링과 동등하다. 우리는, 첸 및 타나카는, 매우 유사한 셀 설계를 개시하지만, 다른 할당들(및 따라서 다른 오더링들)이 사용되며, 둘다 동등하게 사용 가능함을 알았다. 본 발명의 목적은 어떤 의미에서 다른 오더링들 보다 양호한 오더링을 제공하는 것이다.
일견하여, 우리는 모든 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“을 나타내는 상태로 하방으로 변화시킬 필요가 있지만, 상기한 바와 같이, 일반적인 플래시 메모리에서 이는 불가능하다. 따라서, 우리는 모든 비트 프로그래밍 동작의 리 걸(legal) 시퀀스에 대해, 임계 전압을 감소시킬 필요가 없는 방식으로 우리의 비트 패턴들의 오더링을 선택하여야 한다. 상기 두 개의 제한들을 만족하는 오더링을 본 명세서에서 ”유효“ 오더링이라 한다. 유사하게, 유효 오더링으로 되는 셀의 상태들로의 비트 패턴들의 할당을 본 명세서에서 ”유효“ 할당이라 한다.
셀의 비트들을 다른 페이지들에 할당하는 MBC 플래시 메모리들에서, 낮은 번호의 페이지에 하위 비트를 갖고 낮은 번호의 페이지가 높은 번호의 페이지 전에 기입되도록 사용자가 순차적 오더로 페이지들을 기입할 필요가 있음은 일반적이다. 우리는 여기에서의 설명에서 이러한 실시를 이용하지만, 본 발명의 방법들은 페이지들로의 비트들의 할당 및 페이지들의 기입 오더링의 다른 실시들에도 적용될 수 있음을 이해하기 바란다.
도2는 2-비트 MBC 셀의 비트 패턴들의 오더링에 적용할 수 있는 제한들의 그래픽 표현을 나타내고 있다. 각각의 비트 패턴은 원 내의 2진 표시, 및 원 밖의 십진 표시에 의해 도시되어 있다. 양 수치 표현들은 동등하지만, 오더링 제한들을 이해하기 위해서는 2진 표현을 이용하고, 일정 패턴에 대해 논의하기 위해서는 십진 표현을 이용하는 것이 더 편리하다. 도2에서 두 개의 원들을 연결하는 화살표는 화살표 시점의 상태가 화살표 끝점의 상태보다 선행되어야 함을 의미한다.
도2에서, 우리가 기대한 바와 같이, "11”은 제1 상태로 됨을 알 수 있다. 이는 이 상태가 모든 다른 상태보다 선행되어야 하는 사실로부터 알 수 있다. 또한, "10”은 상기한 바와 같이 "00보다 선행되어야 한다. 2-비트 경우는 간단하기 때문에, 모든 제한들을 만족하는 3개의 오더링들 만이 있음을 쉽게 알 수 있다:
a. 11,10,00,01(이는 첸이 사용될 때)
b. 11,10,01,00(이는 타나카가 사용될 때)
c. 11,01,10,00
도3은 3-비트 MBC 셀들의 경우의 대응하는 그래픽 표시를 나타내고, 도4는 4-비트 MBC 셀의 경우의 대응하는 그래픽 표시를 나타낸다. 양쪽 경우들은 2-비트경우보다 복잡하고 더 많은 유효 오더링을 허용한다.
각 경우에 우리가 얼마나 많은 리걸 오더링들을 가질 수 있는지 알아보자. 먼저 2-비트 경우(도2)에 대해 고려한다. “11”은 항상 먼저 오며, 우리는 그것은 무시하고, 도2의 제한들을 만족하면서, 가장 우측의 3개의 상태들에 다른 3개의 패턴들을 배치하도록 얼마나 많은 옵션들을 가지는 가의 동등한 의문에 대해 고려한다. “10” 및 “00”은 그들 사이에 엄격한 필수 오더를 가지므로, 우리는 그 두 개의 패턴들을 배치하도록 3개 중 두 개의 위치들을 선택함에 의해 시작한다. 우리는 (n!)/((n-k)!)/(k!)과 동일한, C(n,k)로서 n소자들과 동시에 취해진 k의 조합들의 수를 나타낸다. 이 경우, k=2 및 n=3이고, “10” 및 “00”을 제 위치에 배치할 방식들의 수는 3!/1!/2!=3이다. 최종 패턴(“01“)은 반드시 남겨진 위치에만 배치해야 하고, 따라서 우리는, 상기한 바와 같이, 3개의 리걸 오더링이 남겨져 있게 된다.
이제 덜 간단한 3-비트 셀(도3)로 이동해 본다. 우리는 3-비트셀의 최하위 비트 기입 후에, 다른 2비트들(아직 미기입)은 2-비트 셀과 동일의 오더링 문제를 나타냄을 주목한다. 이는 6,4,0,2를 포함하는 ”브랜치“가 정확하게 도2 전체와 동일 구조를 가지는 점을 주목하면 도3에서 알 수 있다. 그러나 우리는 이미 이 문제가 3개의 정확하게 다른 해결책을 가지고 있음을 알고 있다. 따라서, 7개의 가능한 위치중 6,4,0,2 브랜치의 4개의 수들에 대한 위치들을 선택함에 의해 오더링의 구조를 시작해 본다(모두-1 패턴은 항상 가장 좌측의 예비 할당 위치를 가지는 점을 상기한다). 이를 행하는 C(7,4) 방식들이 있다. 각각의 방식은 브랜치 부재들의 3개의 내부 유효 오더링을 가지며, 전체 4개의 패턴들을 할당하는 C(7,4) x 3 방식들을 가진다. 이제 각각의 선택에 대해, 우리는 5,1 브랜치 부재들을 나타내도록 여전히 미할당된 3개의 위치들 중 두 개를 선택한다. 이는 C(3,2)=3의 방식으로 행해질 수 있다. 최종 패턴(3)은 남겨진 위치로만 가야 한다. 전체 제품은 3-비트 MBC 셀에 대한 C(7,4)x3x3=315 유효 오더링들이다.
우리는 유사하게 4-비트 MBC 셀(도4)에 대해 계산할 수 있다. 14,12,10,6,8,4,2,0 브랜치의 8개의 부재들의 위치들은 C(15,8) 방식들에서 선택될 수 있고, 각각 우리가 3-비트 경우에서 발견한 바와 같이 315의 가능한 내부 오더링들로 곱해질 수 있다. 다음, 우리는 남아있는 7개의 상태들을 남아있는 7개의 위치들로 배치하는 배열들의 수인, 315로 다시 곱한다. 최종 결과는 C(15,8)x315x315=638,512,875이다. 비트들의 훨씬 더 큰 수의 유효 오더링들의 수는 엄청나다.
부록들은, 후술하는 바와 같이, 이 오더링들의 분석과 함께 3-비트 및 4-비트 오더링들을 리스팅하고 있다. 부록 A는 모두 315의 3-비트 오더링들을 리스팅하고 있다. 부록 B,C,D 및 E는 4-비트 오더링들을 부분적으로 리스팅하고 있다.
2비트보다 큰 MBC 셀들의 가능한 비트 오더링들의 큰 수가 사용할 수 있는 가장 최선의 것인가 라는 의문을 가져온다. 타케우치의 미국 특허 제6,046,935호는 MBC 셀들의 비트 패턴들의 오더링을 구성하는 하나의 방법을 제안하고 있다. 타케우치의 도86a 내지 86c는 3-비트 셀들에 대한 방법을 적용하고 있다. 타케우치의 도88a 내지 88d는 4-비트 셀들에 대한 방법을 적용하고 있다. 타케우치의 도90a 내지 90e는 일반적인 M-비트 경우에 대한 방법을 어떻게 적용하는 지를 나타내고 있다. 그러나, 후술하는 바와 같이, 타케우치에 의해 제안된 방법은 최적이 아닌 오더링으로 된다.
따라서, MBC 셀의 비트들을 오더링하는 최적의 방법에 대한 필요성이 넓게 인식되어 있고, 그 방법을 갖는 것은 크게 유익하게 될 것이다.
본 발명에 따르면, (a) [N/M]셀을 제공하는 단계, M은 3 이상; 및 (b) 유효 물리적 비트 오더링, 및 상기 물리적 비트 오더링과 다르고 상기 M까지의 비트들의 에러 가능성들이 상기 물리적 비트 오더링 보다 더 균일하게 분포되는 논리적 비트 오더링에 따라 상기 비트들 중 M비트 까지 각 셀을 프로그래밍하는 단계를 포함하는, N 비트들의 데이터를 저장하는 방법이 제공된다.
본 발명에 따르면, (a) K 셀들을 포함하는 메모리; 및 (b) 상기 셀들에 N 비트들의 데이터를 저장하기 위해, 유효 물리적 비트 오더링, 및 상기 물리적 비트 오더링과 다르고 3 이상인 M까지의 비트들의 에러 가능성들이 상기 물리적 비트 오더링 보다 더 균일하게 분포하는 논리적 비트 오더링에 따라, 상기 비트들 중 M=[N/K] 까지 상기 각 셀을 프로그래밍함에 의해 동작하는 컨트롤러를 포함하는 메모리 장치가 제공된다.
본 발명에 따르면, (a) K 셀들을 구비하는 메모리를 포함하는 메모리 장치; (b) N 비트들의 데이터를 저장하도록 제공되는, 상기 메모리 장치의 호스트; 및 (c) 상기 각 셀에 대해, 상기 비트들 중 M=[M/K] 까지를, 논리적 비트 오더링에 리스팅된 바와 같이, 상기 논리적 비트 오더링과 다른 유효 물리적 비트 오더링의 대응하는 엔트리로 변환하며, M은 3 이상이고, 그 후상기 각 셀은 상기 물리적 비트 오더링의 대응하는 엔트리에 따라 프로그램되고, 상기 논리적 비트 오더링은 상기 M비트들 까지의 에러 가능성이 상기 물리적 비트 오더링 보다 더 균일하게 분포되는 메커니즘을 포함하는 데이터 저장 시스템이 제공된다.
본 발명에 따르면, (a) [N/M] 셀들을 제공하는 단계, M은 3이상; 및 (b) 유효 물리적 비트 오더링, 및 상기 물리적 비트 오더링과 다른 균일하게 분포된 논리적 비트 오더링에 따라, 비트들 중 M까지 각 셀을 프로그래밍하는 단계를 포함하는, N비트들의 데이터를 저장하는 방법이 제공된다.
본 발명에 따르면, (a) K 셀들을 포함하는 메모리; 및 (b) 유효 물리적 비트 오더링, 및 균일하게 분포된 논리적 비트 오더링에 따라, 상기 비트들 중 M=[N/K]까지 상기 각 셀을 프로그래밍함에 의해 상기 셀들에 N비트들의 데이터를 저장하도록 동작하며, M은 3 이상인 컨트롤러를 포함하는 메모리 장치가 제공된다.
본 발명에 따르면, (a) K 셀들을 구비하는 메모리를 포함하는 메모리 장치; (b) N비트들의 데이터를 저장하도록 제공되는, 상기 메모리 장치의 호스트; 및 (c) 상기 각 셀에 대해, 상기 비트들 중 M=[N/K] 까지를, 균일하게 분포된 논리적 비트 오더링에 리스팅된 바와 같이, 상기 논리적 비트 오더링과 다른 유효 물리적 비트 오더링의 대응하는 엔트리로 변환하며, M은 3 이상이고, 그 후상기 각 셀은 상기 물리적 비트 오더링의 상기 엔트리에 따라 프로그램되는 메커니즘을 포함하는, 데이터 저장 시스템이 제공된다.
본 발명에 따르면, (a) [N/M] 셀들을 제공하는 단계, M은 3이상; 및 (b) M비트들 까지의 모든 에러 가능성들이 균일하게 분포된 유효, 비직렬의 비트 오더링에 따라 비트들 중 M까지 각 셀을 프로그래밍하는 단계를 포함하는, N비트들의 데이터를 저장하는 방법이 제공된다.
본 발명에 따르면, (a) K 셀들을 포함하는 메모리; 및 (b) M비트들 까지의 모든 에러 가능성들이 균일하게 분포된 유효, 비직렬의 비트 오더링에 따라 상기 비트들 중 M=[N/K]까지 상기 각 셀을 프로그래밍함에 의해 상기 셀들에 N비트들의 데이터를 저장하도록 동작하며, M은 3 이상인 컨트롤러를 포함하는 메모리 장치가 제공된다.
본 발명에 따르면, (a) [N/M] 셀들을 제공하는 단계, M은 3이상; 및 (b) 유효, 비직렬, 에러율 최적의 비트 오더링에 따라 비트들 중 M까지 각 셀을 프로그래밍하는 단계를 포함하는, N비트들의 데이터를 저장하는 방법이 제공된다.
본 발명에 따르면, (a) K 셀들을 포함하는 메모리; 및 (b) 유효, 비직렬, 에러율 최적의 비트 오더링에 따라 상기 비트들 중 M=[N/K]까지 상기 각 셀을 프로그래밍함에 의해 상기 셀들에 N비트들의 데이터를 저장하도록 동작하며, M은 3 이상인 컨트롤러를 포함하는 메모리 장치가 제공된다.
본 발명의 제1 방법은 K=[N/M] 셀들에 N 비트들의 데이터를 저장하는 방법이다. (표기 “[x]"는 적어도 실수 x의 크기인 최소 정수를 의미한다. 예컨대, [3]=3 및 [3.5]=4이다.) 각 셀은 유효의 물리적 비트 오더링, 상기 물리적 비트 오더링 만으로 제공되는 것 보다 M비트들 까지의 모든 에러 가능성의 더욱 균일한 분포를 제공하는 그와 다른 논리적 비트 오더링에 따라 데이터 비트들 중 M까지 프로그램된다. 상기 더욱 균일한 에러 분포는 N 데이터 비트들의 가능성 분포 및 셀들의 상태 에러들의 가능성 분포에 대한 것이다. 예컨대, 비트 오더링들이, 후술하는 의미의, ”에러율 최적“이면, 모든 데이터 비트들이 가능성이 동일하고 모든 상태 에러들이 가능성이 동일한 경우, 진정한 에러 가능성의 균일한 분포는 얻어질 수 없는 반면에; 데이터 비트들 및 상태 에러들의 다른 가능성 분포들에서 M비트들까지의 모든 에러 가능성의 진정으로 균일한 분포가 허용된다. 실제, 바람직한 실시예들의 설명의 말미에서, 에러율 최적 비트 오더링 및 진정으로 균일한 에러 분포를 갖는 인위적인 예가 제공된다.
바람직하게, 상기 프로그래밍은, 각 셀에 대해, 상기 M까지의 비트들을, 상기 논리적 비트 오더링에 리스팅된 바와 같이, 상기 물리적 비트 오더링의 대응하는 엔트리로, 변환하는 단계를 포함한다.
바람직하게, N비트들을 저장하는 목적은 N 비트들의 독출 가능성을 제공하는 것이므로, 상기 방법은 또한 상기 셀들에서 상기 N비트들을 독출하는 단계를 포함한다. 가장 바람직하게, 상기 독출은, 각 셀에 대해, 프로그램된 바와 같이 상기 각 셀의 상태에 대응하는, 상기 물리적 비트 오더링의 엔트리를, 상기 논리적 비트 오더링의 대응하는 엔트리로, 변환하는 단계를 포함한다.
바람직하게, 상기 논리적 비트 오더링은 상기 M까지의 비트들 모두의 변환들의 확률-가중(probability-weighted) 넘버들을, 데이터 비트들의 가능성 분포 및 상태 에러들의 가능성 분포에 대해 동일화한다.
바람직하게, 상기 물리적 비트 오더링 및 논리적 비트 오더링은 둘다, 상태들의 수보다 1 적은, 2M-1과 동일의 전체 변환들의 수를 가진다. 2M-1 변환들을 갖는 비트 오더링들은 후술하는 의미에서의 “에러율 최적”이다. 예컨대, M=3일 때, 상기 물리적 비트 오더링 및 논리적 비트 오더링은 둘다 7개의 변환들을 가진다. 대응하는 상기 물리적 비트 오더링은 7,6,4,5,1,0,2,3 및 7,6,4,5,1,3,2,0이다. 유사하게, M=4일 때, 상기 물리적 비트 오더링 및 논리적 비트 오더링은 둘다 15개의 변환들을 가진다. 가장 바람직하게, 상기 논리적 비트 오더링은 균일하게 분포된다. 예컨대, M=4일 때 가장 바람직한 논리적 비트 오더링의 임의의 비트의 변환들의 수는 3 또는 4이다.
바람직하게, 상기 물리적 비트 오더링은 비직렬이다.
본 발명의 제1 방법을 실행하기 위한 본 발명의 메모리 장치는, K 셀들을 가진 메모리 및 상기 셀들에 N 비트들의 데이터를 저장하기 위해, 유효 물리적 비트 오더링, 및 M비트들 까지의 모두의 에러 가능성들이 상기 물리적 비트 오더링만에 의한 것 보다 더 균일한 분포를 제공하는 상기 물리적 비트 오더링과 다른 논리적 비트 오더링에 따라, 상기 비트들 중 M=[N/K]≥3 까지 상기 각 셀을 프로그래밍함에 의해 동작하는 컨트롤러를 포함한다.
바람직하게, 상기 컨트롤러는 상기 물리적 비트 오더링 및 논리적 비트 오더링 사이에서 변환하는 메커니즘을 포함한다. 본 발명의 메모리 장치의 바람직한 실시예들의 일 클래스에서, 이 메커니즘은 소프트웨어를 실행함에 의해 상기 변환을 행한다. 본 발명의 메모리 장치의 바람직한 실시예들의 다른 클래스에서, 상기 컨트롤러는 상기 변환을 행하는 전용 하드웨어(소프트웨어를 실행하는 일반적인 목적의 프로세서에 반대의)를 포함한다. 이와 다르게, 상기 메모리는 전용 하드웨어를 포함할 수 있다.
바람직하게, 상기 메모리는 플래시 메모리이다.
바람직하게, 상기 물리적 비트 오더링은 비직렬이다.
데이터를 저장하기 위한 본 발명의 시스템은, K 셀들을 가진 메모리를 포함하는 메모리 장치 및 상기 메모리 장치에 저장될 N 비트들의 데이터를 제공하는 상기 메모리 장치의 호스트를 포함한다. 상기 시스템은, 또한, 각각의 K 셀들에 대해, 논리 비트 오더링에 리스팅된 바와 같이, 상기 비트들 중 M=[N/K]≥3 까지, 다른 유효의 물리적 비트 오더링의 대응하는 엔트리로 변환시킨 후, 셀을 상기 물리적 비트 오더링의 엔트리에 따라 프로그램하는 메커니즘을 포함한다. 상기 논리적 비트 오더링은 상기 물리적 비트 오더링만으로 제공되는 것 보다 M비트들 까지의 모두의 에러 가능성의 더 균일한 분포를 제공한다.
본 발명의 시스템의 바람직한 실시예들의 일 클래스에서, 상기 변환 메커니즘은 소프트웨어를 실행함에 의해 상기 변환을 행한다. 이러한 변환 메커니즘은 상기 호스트에 포함되거나, 또는 메모리 장치에 포함된, 메모리의, 컨트롤러에 포함될 수 있다. 본 발명의 시스템의 바람직한 실시예들의 다른 클래스에서, 상기 변환 메커니즘은 전용 하드웨어를 포함한다. 이러한 변환 메커니즘은 메모리에 포함되거나, 또는 메모리 장치에 포함된, 메모리의, 컨트롤러에 포함될 수 있다.
바람직하게, 상기 메모리는 플래시 메모리이다.
바람직하게, 상기 물리적 비트 오더링은 비직렬이다.
본 발명의 제1 방법 및 대응하는 메모리 장치 및 시스템의 특별한 경우는 N 데이터 비트들의 가능성 분포 및 셀의 상태 에러들의 가능성 분포 모두를 무시하며, 논리적 비트 오더링이 균일하게 분포되도록 요구한다.
또한, 본 발명의 제2 방법은 K=[N/M] 셀들, M≥3의 N비트들의 데이터를 저장하는 방법이다. 각 셀은 모두 M 비트들의 비트 에러 가능성을 사실상 균일하게 분포시키는 유효, 비직렬의 비트 오더링에 따라 데이터 비트들 중 M까지 프로그램된다. 유효 물리적 비트 오더링은 N데이터 비트들의 가능성 분포에 따라 그리고 셀들의 상태 에러들의 가능성 분포에 대해 비트 에러 가능성의 균일한 분포를 성취할 수 있음을 주목하기 바란다. 바람직한 실시예들의 설명의 말미에 제공되는 인위적인 예가 이러한 경우의 일예이다.
본 발명의 제2 방법을 실행하기 위한, 본 발명의 메모리 장치는 K 셀들을 가진 메모리 및 모두 M 비트들의 에러 가능성을 사실상 균일하게 분포시키는 유효, 비직렬의 비트 오더링에 따라 비트들 중 M=[N/K]≥3까지 각 셀을 프로그래밍함에 의해 셀들의 N비트들의 데이터를 저장하도록 동작하는 컨트롤러를 포함한다. 바람직하게, 상기 비트 오더링은 물리적 비트 오더링이다.
곤잘레즈 등의 미국 특허 제6,684,289호에서도, 웨어 레벨링 및 암호화 등의 목적으로, 플래시 메모리 기입 및 독출 시에 논리적 비트 오더링 및 물리적 비트 오더링 사이의 매핑을 제안하지만, 저장된 비트들의 에러 가능성의 분포를 균일화하지 않고 있다.
또한, 본 발명의 제3 방법도 K=[N/M] 셀들, M≥3의 N비트들의 데이터를 저장하는 방법이다. 각 셀은 유효, 비직렬, 에러율 최적의 비트 오더링에 따라 M비트들 까지 프로그램된다. 비트 오더링의 전체 변환들의 수는 M의 선택된 값에 대한 이러한 넘버 중 최소, 즉 2M-1이다. 예컨대, M=3일 때 비트 오더링은 7의 변환들을 가지며 M=4일 때 비트 오더링은 15의 변환들을 가진다. M=3에 대해, 부록 A에 리스팅된 바와 같이, 이러한 두 개의 비트 오더링들이 있다.
바람직하게, 상기 비트 오더링은 균일하게 분포된다. 예컨대, M=4일 때, 비트 오더링의 각 비트는 3개의 변환 또는 4개의 변환을 가진다.
본 발명의 제3 방법을 실행하기 위한, 본 발명의 메모리 장치는 K 셀들을 가진 메모리 및 유효, 비직렬, 에러율 최적의 비트 오더링에 따라 비트들 중 M=[N/K]≥3까지 각 셀을 프로그래밍함에 의해 셀들의 N비트들의 데이터를 저장하도록 동작하는 컨트롤러를 포함한다.
본 발명은 첨부 도면들을 참조하여, 이하에서, 예시적인 목적으로 설명된다.
도1a는 1-비트 플래시 셀의 임계 전압 분포를 나타낸 도면,
도1b는 2-비트 플래시 셀의 임계 전압 분포를 나타낸 도면,
도1c는 3-비트 플래시 셀의 임계 전압 분포를 나타낸 도면,
도1d는 4-비트 플래시 셀의 임계 전압 분포를 나타낸 도면,
도2는 2-비트 셀을 프로그래밍하는 우선연산(precedence) 트리를 나타낸 도면,
도3은 3-비트 셀을 프로그래밍하는 우선연산 트리를 나타낸 도면,
도4는 4-비트 셀을 프로그래밍하는 우선연산 트리를 나타낸 도면,
도5는 논리적 비트 오더링 및 물리적 비트 오더링을 통해 메모리 셀로 기입하는 플로우챠트,
도6은 논리적 비트 오더링 및 물리적 비트 오더링을 통해 메모리 셀로부터 독출하는 플로우챠트, 및
도7-11은 본 발명의 시스템들의 고 레벨 블록 다이어그램들이다.
본 발명은 멀티-비트 플래시 셀의 프로그래밍 방법에 관한 것이다.
본 발명에 따른 멀티-비트-셀 플래시 메모리 장치의 원리 및 동작은 도면들 및 이하에 첨부하는 설명을 참조하면 잘 이해할 수 있을 것이다.
이제 n-비트 MBC 셀의 비트 패턴들의 양호한 오더링이 무엇인가 하는 의문에 대해 생각해 본다. “최상”의 것을 결정하기 위해 사용될 수 있는 하나의 분명한 기준은 없다. 대신 우리는 선택할 수 있는 여러 개의 다른 기준들을 제시하고자 한다. 실제의 설계에서 사용할 수 있는 최상의 기준은, 이하의 설명에서 명백하게 나 타나는 바와 같이, 전체 저장 시스템의 요구조건에 따르게 된다.
우리는 MBC 셀에 포함된 비트들을 독출하기 위해 요구되는 비교 동작들의 수에 있어서의 오더링의 평가를 갖고 있다. 이미 상술한 바와 같이, SBC 셀은 셀의 데이터 컨텐츠를 결정하기 위한 기준에 대한 그의 임계 전압치의 하나 만의 비교를 필요로 한다. 2-비트 MBC 셀은 두 개의 비교를 필요로 한다. 더 많은 비트를 가진 셀들은 두 개보다 많은 비교들을 필요로 한다.
우리는 독출 프로세스에서 비교를 이용하는 두개의 방법을, 정적 독출 및 동적 독출로 구별하고 있다.
정적 독출에서는, 독출 프로세스 중에 사용되는 모든 기준 전압치들이 독출 시작 전에 완전하게 결정된다. 이러한 독출은 셀의 임계 전압을 비교하는 기준 전압 값을 변경함에 의해 모든 비교들이 하나씩 행해지는 하나의 비교기의 이용, 또는 비교의 수와 동일한 다수의 비교기들(이 경우 모든 비교기들이 병렬로 동작)의 이용에 의해 실행될 수 있다. 또한, 비교기들의 수가 비교의 수에 비해서는 작지만 하나 보다는 커서, 프로세스에서 일부 패럴리즘을 제공하는 중간의 체계를 이용할 수 있다. 이러한 모든 실행들은 모든 기준치들이 독출 전에 완전하게 결정되는 한 본 발명의 목적을 위한 정적인 방법들로 간주된다. 예컨대, 그의 인코딩이 도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}으로 된다. 이러한 오더링을 이용하면 하위 비트는 3개의 비교들을 필요로 하고 상위 비트는 하나의 비교를 필요로 한다.
제3 및 최종의 유효 2-비트 오더링은 {3,1,2,0}={11,01,10,00}이고, 하위 비 트에 대해 {1,1,0,0}을 그리고 상위 비트에 대해 {1,0,1,0}으로 주어진다. 이로써 하위 비트에 대해 하나의 비교 그리고 상위 비트에 대해 3개의 비교들로 변환된다.
정적 독출을 이용하여 단일 비트를 독출하기 위해 필요한 비교들의 수는 모든 상태들이 좌에서 우로의 임계 전압축을 따라 횡으로 이동할 때 발생하는 비트의 변환들의 수와 동일함을 쉽게 알 수 있다. {1,1,0,0}은 하나의 변환을 가지며 하나의 비교를 필요로 하는 반면에, {1,0,1,0}은 3개의 변환을 가지며 3개의 비교를 필요로 한다.
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이다.
동적 독출을 이용하여 단일 비트를 독출하기 위해 필요한 비교들의 수도 좌에서 우로의 임계 전압축을 따라 모든 상태들이 횡으로 이동할 때 발생하는 비트의 변환들의 수에 따라 결정되지만, 정적 독출에서와는 다른 방식으로 된다. 동적 독출에 있어서, 비교들의 수는, 라운드업되는, 변환들의 수 플러스 1의 2진수에 대한 대수(對數)로 된다. 예컨대, {3,2,0,1}={11,10,00,01}의 오더링 및 {1,0,0,1}(두 개의 변환들) 및 {1,1,0,0}(하나의 변환)의 비트 시퀀스를 갖는 2-비트 MBC 셀에서, 비교들의 수는 각각 2 및 1이다. {1,0,1,0}(3개의 변환들) 및 {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}(3 개의 변환들), 및 {1,1,0,1,0,1,0,} (5 개의 변환들)을 생성하는 {7,6,2,4,0,5,3,1}={111,110,010,100,000,101,011,001}의 오더링을 갖는 3-비트 셀의 독출에서는 각각 2개, 2개 및 3개의 비교들을 필요로 한다.
부록 A는 3-비트 경우의 모든 유효 오더링을 리스팅하고 있다. 315개의 오더링들 각각은, 3개의 비트들 각각에 대한 시퀀스들, 각 비트에 대한 정적 독출 비교들의 수(“정적 컴프(comp)”하의 3개의 컬럼들), 및 각 비트에 대한 동적 독출 비교들의 수(“동적 컴프”하의 3개의 컬럼들)를 나타내는, 테이블에 하나의 라인을 가진다. 또한 이하의 설명에서 참조되는 두 개의 독출 방법들, 통계들 각각에 대한 총합, 최소 및 최대 수들이 도시된다.
이제 MBC 셀의 비트 패턴들의 오더링을 선택하기 위한 여러 개의 기준들을 검토하기로 한다. 이 기준들은 모두 독출을 위해 필요한 비교들의 수에 관련되어 있다. 일반적으로, 더 적은 수의 비교들이 더 양호하게 행해진다. 더 높은 수의 비교들은 동작을 완료하도록 더 많은 시간을 요구하거나(단일 비교기를 이용하는 경우) 또는 더 많은 수의 비교기들을(또는 둘다를) 요구하게 된다.
기준 A. 정적 독출을 이용하여, 셀의 비트들 모두를 순차적으로 독출하기 위한(즉, 비트들을 하나의 동작에서가 아니라 하나씩 독출하기 위한) 비교들의 수의 최소화.
단일의 비교기를 가진 정적 독출을 이용하는 셀에서, 셀의 비트들 모두를 순차적으로 독출하기 위해 필요한 시간은 모든 비트들의 비교들의 수의 합으로 증가한다. 따라서 오더링을 선택하는 좋은 기준은 모든 비트들의 비교들의 합을 최소화하는 것이다.
상기한 결과들을 고려하면, 2-비트의 경우에 {3,2,0,1}에 대한 3개의 비교들 및 다른 두 개의 얼터너티브에 대한 4개의 비교들의 합을 얻게 됨을 알 수 있다. 따라서 {3,2,0,1}은 셀의 모든 비트들의 가장 빠른 순차적 독출을 제공하며, 따라서 이 기준에 따라 최적으로 된다.
3-비트 경우에 있어서, 부록 A에 전체 7개의 비교들{7,6,4,5,1,0,2,3} 및 {7,6,4,5,1,3,2,0}을 가진 두 개의 최적의 오더링이 있다. 도1c에 나타낸 인코딩은 {7,6,4,5,1,0,2,3} 오더링에 대응한다. 또한, 최적에 가까운, 전체 8개의 비교들을 가진 15개의 오더링도 있다.
4-비트의 경우, 부록 B에 리스팅된 36개의 오더링들이 이 기준에 따른 최적이다. 이러한 각각의 오더링은 전체 15개의 비교들을 가진다. 도1d에 도시된 인코딩은 이들 오더링들 중 제1 오더링,{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개의 유효 오더링들에 대해 동일하다. 3-비트 경우에, 부록 A는 최선의 최소 수는 역시 1이지만, 느린 독출 동작을 의미하는, 높은 최소 수를 야기하는 많은 오더링들이 있음을 보여준다.
4-비트 유효 오더링들 모두의 완전한 열거는 4-비트의 경우도 이 조건에 대한 최소는 하나의 비교임을 보여준다. 이 오더링들 중 일부를 부록 B에 리스팅하고 있다.
상기한 타케우치의 방법은 상위 비트에 단지 하나의 비교를 제공하는 오더링을 생성한다(타케우치는 우리가 사용하는 것과 반대의 용어를 사용하며 : “하위 비트”가 아니라 셀의 “상위 비트” 로 기입되는 것을 제1 비트로 한다. 우리는 타케우치 방법을 거론할 때 우리의 용어를 계속 이용한다). 이는 타케우치 방법이 이런 의미에서 최적으로 고려될 수 있음을 뜻한다. 그러나, 상기 타케우치의 방법은 - 임계치를 이동시키는 제1 비트를 가장 좌측의 두 개의 상태들 중 하나에 기입하고, 임계치를 이동시키는 제2 비트를 가장 좌측의 4개의 상태들 중 하나에 기입하고, 임계치를 이동시키는 제3 비트를 가장 좌측의 8개의 상태들 중 하나에 기입하고, 임계치를 이동시키는 M번째 비트를 가장 좌측의 2M의 비트들 중 하나에 기입하는, 매우 간단하고 수월한 방식으로 상태들을 할당함에 기초하고 있다. 상기 방식에서 이는(타케우치의 도90a 내지 90e 참조) 항상 평범한 직렬 오더링으로 귀결되며 우리는 가장 좌측의 상태에 대해 가장 높은 값으로 시작하여 각각 우측으로 이동하며 하나씩 내려간다. 예컨대, 3 비트 경우의 타케우치 오더링은 {7, 6, 5, 4, 3, 2, 1, 0}이고 4 비트 경우의 타케우치 오더링은 {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}이다.
이러한 오더링은 셀에 기입될 최종 비트에 대한 하나의 비교, 최종 비트 바로 전의 비트에 대한 3개의 비교들, 끝에서 세 번째의 비트에 대한 7개의 비교, 및 끝에서 M번째의 비트에 대한 2M-1개의 비교들을 필요로 한다. 타케우치 오더링은 하나의 비교만을 갖는 하나의 비트를 제공하는 한편, 셀로 기입될 제1 비트는 가능한 가장 높은 수의 비교들을 가진다(3-비트의 경우 7, 4-비트의 경우 15). 이로써 셀의 다른 비트들의 독출 시간에 큰 차이가 발생하여 바람직하지 않으며, 따라서 이러한 오더링은 비교들의 최소 수를 가진 하나의 비트를 가짐에도 불구하고 최적으로 간주되지 않는다.
본 명세서에서 사용되는 용어 “직렬 할당”은 2M-1,2M-2,...,4,3,2,1,0 형태를 가진, 타케우치 등의 오더링으로 되는 할당에 관한 것이다. 대응하는 비트 오더링은 본 명세서에서 “직렬” 비트 오더링이라 한다. 모든 다른 오더링들은 “비직렬”이라 한다.
기준 D. 정적 독출을 이용하여, 셀의 (어떤 비트가 독출되든 간에 관계없이)단일 비트를 독출하기 위해 동일의 비교들의 수를 얻는다.
단일의 비교기를 가진 정적 독출을 이용하는 셀에서, 어떤 비트가 독출되든 간에 관계없이 동일의 반응 시간을 제공하도록, 동일한 비교들의 수를 이용하여 독출되는 모든 비트들을 갖는 것이 유익하다. 따라서 오더링을 선택하는 좋은 기준은 모든 비트에 대한 동일한 비교들의 수를 얻는 것이다.
2-비트의 경우 이 조건을 만족하는 오더링은 없다. 3-비트의 경우 부록 A는 모든 비트들이 3개의 비교들을 필요로 하는 4개의 오더링 : {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는 가장 낮은 것과 가장 높은 비트 사이의 차이가 단지 2개의 비교들만인 전체 16개의 비교들을 갖는 4-비트의 모든 유효 오더링을 리스팅하고 있으며, 이 경우에도 상기 최적 조건을 만족하는 유효 오더링이 없음을 알 수 있다. 얻을 수 있는 최선은 가장 낮은 비교들의 수를 가진 비트 및 가장 높은 비교들의 수를 가진 비트 사이에 두 개의 비교들의 차가 있는 것이다. 실제로, 모든 비트들에 걸친 동일 스프레드에 가능한 한 가까운 비교들을 얻기를 원한다면, 17개의 비교들을 갖는 4-비트 오더링을 선택하는 것이 좋다. 부록 D는 가장 낮은 비트 및 가장 높은 비트 사이의 차이가 단지 하나의 비교인 전체 17개의 비교들을 갖는 모든 유효 오더링을 리스팅하고 있으며, 가장 낮은 것과 가장 높은 것 사이의 차이가 단지 하나의 비교이며, 이로써 15개의 비교의 오더링 또는 16개의 비교 오더링에서 얻을 수 있는 것보다 더 일정한 독출 반응 시간을 얻게되는 오더링이 있음을 알 수 있다.
기준 E. 동적 독출을 이용하여, 셀의 모든 비트를 순차적으로 독출하기 위한 비교들의 수 최소화.
이는 기준 A와 동등하지만, 동적 독출에 대한 것이다.
2-비트 경우에, 모든 유효 오더링은 동일 비교들의 수로 되며 따라서 최적 오더링은 없다.
3-비트 경우에, 부록 A는 전체 5개의 비교들을 갖는 하나의 최적 오더링({7,6,4,5,1,3,2,0})이 있음을 보여준다. 또한, 전체 6개의 비교들을 갖는 많은 오더링들이 있다.
4-비트의 모든 유효 오더링의 완전한 열거는 4-비트 경우의 이 조건에 대한 최소는 9개의 비교들임을 보여준다. 이 오더링들 중 일부는 부록 B에 리스팅된다.
기준 F. 동적 독출을 이용하여, 셀의 단일 비트를 독출하기 위한 비교들의 최대 수의 최소화.
이는 기준 B와 동등하지만, 동적 독출에 대한 것이다.
2-비트 경우에, 모든 유효 오더링은 동일 비교들의 수(2)로 되며 따라서 최적 오더링은 없다.
3-비트 경우에, 부록 A는 비교들의 최대 수 2를 갖는 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-비트 유효 오더링의 완전한 열거는 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 셀들이 현재 성립되는 방법이다. 그러나, MBC 셀을 약간 다르게 설계할 수 있다. 셀이 항상 그것이 저장할 수 있는 비트들의 전체 수로 프로그램된다고 하면, “1”이 프로그램되는 경우에도 우리는 상태(임계 전압)를 시프트하도록 최종 프로그래밍 동작에 의존하게 될 수 있다. 예컨대, 이는 3개의 “0”비트로 프로그램된 4-비트 MBC가 프로그램되도록 웨이팅하고 있고 제4 비트가 “0001”로 프로그램된 후에 동일 셀과 다른 상태를 가지는 것을 의미한다. 이러한 설계에서 우리는 모든 비트들이 프로그래밍되지 않는 것을 허용하지 않거나, 또는 모든 비트들로 “채워지지” 않은 셀들을 독출하기 위해 다른 독출 방안을 궁리하게 된다.
도2-4는, 상기한 예들 및 설명들 뿐만 아니라, 모두 제1 실행예를 취하고 있다. 제2 실행에 있어서도 여전히 각 비트를 프로그래밍할 때 임계 전압을 감소(즉-전압 축 상에서 좌측으로 이동)시키는 것을 허용하지 않지만, 제1 실행에서 불가능했던 변환들이 제2 실행에서는 가능하다는 의미에서 더욱 융통성이 부여되어 있다. 따라서 “유효”의 개념은 여전히 적용 가능하지만, 그의 오더링 또는 할당이 유효하거나, 그렇지 않은 정확한 규칙은 달라질 수 있다. 도2-4의 우선연산(precedence) 트리가 적용되는, 제1 실행에서와 다르게, 중간 상태들이 정의되는 정확한 방식에 따라 규칙들이 정해짐으로써, 여기에서 유사한 포괄적인 도면들을 작성하기가 불가능하게 된다. 중간 상태가 더욱 우측으로 갈수록, 유효를 유지하는 것으로부터의 변환들이 더욱 적어지게 된다.
본 발명의 제1 실행의 모든 방법들은, 할당 및 오더링의 유효성이 도2-4에 대해서가 아니라 그의 특수한 변환 규칙들에 대해 점검되어야 함을 제외하면, 제2 실행에서도 동일하게 적용 가능하다.
기준 A-H는 성능 이슈에 관한 것이다. 그러나, 안정성 이슈가 성능보다 더 중요한 경우가 있을 수 있다. 이 경우 셀에 저장된 데이터를 독출할 때 기대되는 비트 에러들의 수 및 분포에 대한 그의 영향에 따라 할당 및 인코딩의 선택을 최적화해야 한다. 본 발명의 다음 실시예에서 이 목적이 달성된다.
MBC 셀에 전에 저장된 비트들의 값들을 독출할 때, 어느 전압 밴드에 셀이 배치되었는 지를 알아내려고 시도하게 된다. 그 밴드가 알려진 후에, 셀에 기입할 때 이용된 오더링 및 할당에 따라 그 밴드에 의해 나타내진 대응하는 비트들로 변환된다. 우연하게 에러가 발생되고 그것이 기입되기 때문에 셀의 상태가 변화되었을 수 있다. 플래시 셀에서 이러한 에러의 가장 통상적인 공급원은 셀의 플로팅 게이트에 저장된 전자들의 누출이다. 이로써 일반적으로 셀의 임계 전압의 약간의 시프트가 발생되어, 셀은 그것이 기입된 밴드로부터 다른 밴드로 이동하게 된다. 또한, 예컨대, 어떤 셀의 상태를 변화시키려 하지 않는 동작이 인접한 셀 또는 동일한 셀에 인가되는 신호들 및 전압들의 부작용 때문에 그 셀의 상태를 고의가 아니게 변화시키는 여러 종류의 장애(예컨대, 기입 장애, 독출 장애) 등의, 플래시 셀의 다른 에러 메커니즘도 있다.
플래시 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으로 기입된 경우, 우리는 상태 3에 바로 인접해 있는, 상태 11 또는 상태 2로 상태 3을 이송할 수 있는 가장 통상적인 에러들을 기대할 수 있게 된다. 드물게 다른 13 상태들 중 어느 것으로서 셀을 독출하도록 인도하는 에러가 행해지기도 한다.
셀이 기입되었던 것과 다른 상태로 독출되는 에러의 효과를 조사해 본다. 도1b의 2-비트 MBC의 간단한 경우에서 시작한다. 기입된 상태가 “00”이고 독출 상태가 “01”이면, 우리는 상위 비트를 “0”으로 되도록 바르게 보고하게 되지만 하위 비트는 틀려질 것이다 : “0” 대신 “1”을 얻게 될 것이다. 기입된 상태가 “00”이고 독출 상태가 “10”이면, 우리는 하위 비트를 “0”으로 되도록 바르게 보고하게 되지만 상위 비트는 틀려질 것이다 : “0” 대신 “1”을 얻게 될 것이다. 상술한 바와 같이, 2개의-상태들로-떨어져 있는 에러는 드물기 때문에, 우리는 “00” 내지 “11” 에러의 관련해서는 조사하지 않는다.
상기한 의견은 우리에게 셀의 상태를 독출할 때의 각각의 에러는 하나의 비트가 잘못되게 한다는 결론으로 인도하고 있다. 그러나, 이는 올바르지 않은 결론이다. 다나카의 오더링(11,10,01,00)을 이용하여 2-비트 MBC를 검사해 본다. 물리적 현상은 종전의 예와 정확하게 동일하다고 가정하며- 셀은 좌측에서 제3 상태로 되도록 기입되고 좌측에서 두번째 상태로 되어 종결된다. 종전의 예에서, 이는 “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”로서 독출되었다고 가정한다. 가장 하위 비트는 에러이지만 다른 3개의 비트들은 여전히 올바르다. 하나의 상태 에러가 하나의 비트 에러로 변환된다. 이는 양호한 결과로 보이며, 그러면 이 특수한 오더링이 좋은 것인가? 이제 셀이 “1”로 기입되어 “2”로서 독출되었다고 가정한다. 이는 “0001” 및 “0010”으로 기입하였음을 의미한다. 이제 두 개의 최하위 비트들이 에러인 한편, 두 개의 상위 비트들은 올바르다. 하나의 상태 에러는 두 개의 비트 에러들로 변환되었다. 이는 이 오더링의 최적성에 관한 의문을 확실하게 증가시키며, 우리에게 분석을 계속하도록 한다. 셀이 “3”으로 기입되어 “4”로서 독출되었다고 가정한다. 이는 “0011”로 기입되어 "0100“으로 독출됨을 의미한다. 이제 모두 3개의 최하위 비트들은 에러이고, 상위 비트만 올바르게 남겨진다. 하나의 상태 에러는 3개의 비트 에러들로 변환되며, 확실하게 양호한 결과는 아니다. 그러나 우리는 아직 종료하지 않는다. 셀이 ”7“로 기입되어 ”8“로서 독출되었다고 가정한다. 이는 ”0111“로 기입되어 "1000“으로 독출됨을 의미한다. 이제 모두 4개의 비트들이 에러이다. 하나의 상태 에러는 4개의 비트 에러들로 변환되며, 저장 비트 에러율을 고려할 때 직렬 오더링은 양호한 결과가 아닌 것을 보여준다.
이러한 “에러 증폭”은 불가피한 것은 아니고 직렬 오더링보다 양호한 오더링들이 있으며, 이미 상술한 바와 같이 15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1 오더링으로 복귀한다. 각각 그리고 모두 1의-상태를-벗어난 에러를 엄밀하게 시험함에 의해 다음의 사실을 증명한다 : 각각의 상태 에러는 정확하게 하나의 비트 에러로 귀결된다. 이 사실을 나타내도록 가능한 상태 변환들 모두를 기입해 본다 :
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}이 이러한 의미에서 최적이라는 결론을 얻었다. 우리는 올바른 상태로부터 하나의 상태 떨어진 올바르지 않은 상태를 독출하게 되는 셀의 상태를 독출할 때 모든 에러가 정확하게 하나의 비트 에러를 발생하는 조건을 만족한다면 “에러율 최적”으로 되는 오더링임을 정의한다. 이러한 오더링은 : 2진수의 시퀀스로서 오더링을 살펴볼 때, 임의의 두 개의 인접한 수들 사이의 차이가 하나의 비트 위치로 제한되는 것으로부터 용이하게 확인된다. 이러한 조건을 만족하는 임의의 오더링은 에러율 최적이고, 에러율 최적인 오더링은 이 특징을 가져야 한다. 이러한 타입의 2진 코딩은 수학 문헌에 잘 알려져 있고, 참고의 목적으로 본 명세서에 완전하게 참조된, 미국 특허 제2,632,058호 의 발명자 이후에, “그레이 코드”로 불린다.
상기한 바와 같은 “변환들”의 개념에 기초하여, 종종 더 용이하게 다루어지는 상기 에러율 최적 조건을 고찰하는 다른 방법이 있다. 상술한 바와 같이, 셀의 일정 비트 위치에서 발생된 비트 에러들의 수는 임계 전압축을 따라 상태들을 이동할 때 비트의 값이 변화하는 방식에 따라 정해진다. 제1 예로서, {3,2,0,1}의 오더링을 가진 2-비트 MBC의 경우를 고려해본다. 2진 개념을 이용한 동일 오더링 기입은 {11,10,00,01}을 제공한다. 이제 비트들을, 각각 자신의 시퀀스로 분리한다. 우리가 좌에서 우로 상태들을 따라 이동할 때 하위 비트들은 값 {1,0,0,1}을 통과하지만 상위 비트들은 {1,1,0,0}을 통과한다. 비트의 시퀀스에 변환이 있을 때마다, 이 비트는 그 위치에서 상태 에러가 발생하는 경우 에러로 됨을 알 수 있다. 예컨대, 상태 에러가 제2 및 제3 상태들 사이에서 2-비트 셀을 이동시키면, 하위 비트는 에러로 되지 않지만(이 점에서 {1,0,0,1}에 변환이 없다) 상위 비트는 에러로 된다({1,0,0,1}의 중간에서 변환이 있다). 유사하게, 하위 비트에 대해 {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-비트 셀을 고찰해본다. 우측으로부터 제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개의 에러율 최적의 유효 오더링만이 있음을 알 수 있다.
우리는 4-비트 오더링 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1}이 비트 에러 감소를 위해 최적임을 상기에서 보여준 바 있다. 각각 이 오더링을 이용하는 4비트들의 15개의 셀을 취하여 그들 중 각각 하나가 15개의 가능한 상태 에러들 중 하나를 나타내도록 하면(이 목적으로 동일하게 될 상태들 사이의 동일 경계를, 좌에서 우로 교차하던지 또는 우에서 좌로 교차하던지 관계없이, 교차하는 에러들을 고려함), 모든 셀들의 비트 에러들의 전체 수는 가능한 가장 낮은 수인, 15로 된다.
이들 15개의 비트 에러들이 나타나는 (셀의 4비트 위치들 중의) 비트 위치들을 고찰해 본다. 우리는 이미 셀의 4비트들 중 하나가 상태 에러들 중 각각에 영향을 받게 됨을 리스팅하였다. 최하위 비트는 상기 경우들 중 6의 에러를 겪게 되고, 제2 최하위 비트는 상기 경우들 중 5를, 제2 최상위 비트는 상기 경우들 중 3을, 그리고 최상위 비트는 하나의 경우를 겪게 됨을 볼 수 있다. 이는 비트 위치들 사이의 비트 에러들의 분포가 균일하지 않고, 이로써 일부 비트 위치들이 다른 것 보다 많은 에러들을 겪게 됨을 의미한다.
4-비트 MBC의 각각의 비트 위치가 다른 논리 페이지에 속하는 경우를 고려한다. 플래시 메모리 구조는 각각 4비트를 기억하는 15,000 셀의 그룹들에 기초하며, 각 그룹이 15,000 비트들의 4페이지를 저장한다고 가정한다. 또한, 상태 에러의 가능성은 1,000에 1이고, 즉 - 각각 1,000개의 셀들 중 평균 하나의 셀이 올바르지 않은 상태로 독출된다고 가정한다. 사용된 오더링이 에러율 최적이면, 각각의 상태 에러는 정확하게 1비트 에러를 발생하며 따라서 비트 에러율도 1,000셀당 1이고 전체 그룹을 독출할 때 평균 15비트 에러들로 될 것이다. 그러나, 이 15비트 에러들의 분포가 균일하지 않으면 - 평균 15/4=3.75 에러들을 포함하는 각각 4페이지 대신에, 15*6/15=6 에러들을 갖는 일 페이지, 15*5/15=5 에러들을 갖는 일 페이지, 15*3/15=3 에러들을 갖는 일 페이지, 및 15*1/15=1 에러들을 갖는 일 페이지를 가진다(또한, 여기에서 모든 상태 에러들이 동일하게 발생하는 것으로 가정한다).
얼핏 이러한 불균일한 분포는 중요하지 않다고 말할 수 있다 - 하지만 그들의 전체 수가 동일한 경우에 우리는 에러 위치를 주의해야 한다. 그러나 우리가 플래시 메모리에서 독출된 데이터에서 에러를 보정하기 위한 에러 보정 코드(ECC) 회로를 설계해야 한다고 가정하면, 일 페이지는 한번에 독출되는 데이터의 유닛이므로, 상기 보정 회로는 한번에 일 페이지를 처리하도록 설계되어야 한다. 상기 에러들이 동일 셀들에 존재하는 페이지들에 고르게 분포된 경우, 각각의 단일 페이지를 독출할 때 기대되는 에러율(독출된 비트당 비트 에러로 특정됨)은 4페이지에 걸쳐 함께 계산된 기대 에러율과 동일하게 될 것이다. 상기한 예에서, 이는 15,000비트의 각 페이지당 3.75 비트 에러들로 된다. 그러나 상기 에러들이 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1} 오더링으로 분포된다면, 다른 페이지에 대해 다른 에러율 : 평균 6 에러들을 갖는 일 페이지, 평균 5 에러들을 갖는 일 페이지, 평균 3 에러들을 갖는 일 페이지 및 평균 1 에러를 갖는 일 페이지, 을 갖게 된다.
비트 에러들의 기대되는 평균은 ECC 회로 설계에서 가장 중요한 요소이다. 기대되는 에러들의 수가 클수록, 엑스트라 페리티 또는 체크 비트들을 저장하기 위한 더 많은 리던던시가 필요하고, 저장된 비트들을 인코딩 및 디코딩하기 위한 회로가 더 복잡하게 된다. 비교적 높은 에러율(1,000 당 1 및 그 이상)로 작업할 때, 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으로 나누어질 수 없어서, 완전 균일한 분포를 갖는 최적의 전체 에러율을 얻는 방법은 없다. 기대할 수 있는 최선은 3개의 변환들을 가진 하나의 비트 및 각각 두 개의 변 환들을 갖는 다른 두 개의 비트들로 된 오더링이다.
4-비트 MBC의 경우, 변환들의 최소 수는 15이다. 불행하게도 15는 4로 나누어질 수 없어서, 완전 균일한 분포를 갖는 최적의 전체 에러율을 얻는 방법은 없다. 기대할 수 있는 최선은 3 개의 변환들을 가진 하나의 비트 및 각각 4 개의 변환들을 갖는 다른 3개의 비트들로 된 오더링이다. 이전의 예로 돌아가면, 이러한 오더링은, 페이지 전체 평균 3.75 에러들을 갖는 것에 비해, 3 에러들을 가진 일 페이지 및 4 에러들을 갖는 3 페이지로 된다.
우리는 상기 오더링이 임의의 비트 위치의 변환들의 수가 단지 하나의 변환 만큼 임의의 다른 비트 위치의 변환들의 수와 다르게 되는 경우 "균일하게 분포된”오더링이라 정의한다.
부록 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-비트 오더링을 리스팅하고 있다. 다시 우리는 그들 중 어느 것도 균일하게 분포되지 않았거나, 또는 균일한 분포에 가깝게 조차 되지 않았음을 알게 된다. 가장 균일하게 분포된 오더링은 (5,5,4,1) 변환들의 분포를 가지며, 이는 우리의 목표와는 너무 멀다.
우리가 왜 변환들의 최소 수를 갖지만 더욱 균일하게 분포된 오더링을 발견 할 수 없었는지 의문시 될 수 있다. 실제로, 부록 F는 (3,2,2) 분포를 가진 일부 3-비트 오더링을 리스팅하고 있다. 부록 G는 (4,4,4,3) 분포를 가진 일부 4-비트 오더링을 리스팅하고 있다. 그러나, 상기 균일하게 분포된 오더링들 중 어느 하나도 유효하지 않고 따라서 그둘 중 어느 것도 MBC의 비트 인코딩을 나타내도록 사용될 수 없다. 상기한 내용을 고려하면, 비유효 오더링은, 비트의 기입 시에 셀의 임계치를 좌측으로 이동시킬 (즉, 임계 전압을 낮출) 필요가 있지만, 이는 불가능하기 때문에, 비트가 기입될 수 없는 경우들의 하나이다.
예컨대, 4-비트 오더링 {15,11,3,1,0,2,6,14,10,8,9,13,12,4,5,7}은 부록 G에서 (4,4,4,3)의 분포를 가지도록 되어 있다. 그러나, 셀에 “0000”의 값을, 한번에 하나의 비트에, 기입해야 한다고 가정한다. 이를 성취하도록, 먼저 최하위 비트를(“1110”=“14”의 중간값으로 되도록) 프로그램한 후에, 제2 최하위 비트를(“1100”=“12”의 중간값으로 되도록) 프로그램한 후에, 제2 최상위 비트를(“1000”=“8”의 중간값으로 되도록) 프로그램하고, 마지막으로 최상위 비트를 우리가 원하는 값 “0000”으로 프로그램해야 한다. 이러한 시퀀스의 제3 단계에서, 셀은 상태 “12”에서 상태 “8”로 이동해야 한다. 이러한 시퀀스의 최종 단계에서, 셀은 상태 “8”에서 상태 “0”으로 이동해야 한다. 그러나 이 오더링에서 상태 “12”는 상태 “8”의 우측에 위치하고 상태 “8”은 상태 “0”의 우측에 있으며, 따라서 이 상태의 변화들은 불가능하다.
이로써 우리는 딜레마에 빠지게 된다. 한편으로 우리는 에러율 최적이면서 균일한 분포로 된 오더링을 이용하기를 원하고, 다른 한편으로 유효 오더링을 이용 할 필요가 있지만, 양 조건을 만족하는 오더링은 없다.
본 발명의 다음의 양태는 셀의 물리적 동작 방법에 의해 부여되는 유효 요건을 위배하지 않고 에러율 최적 및 균일한 분포의 목표를 달성할 수 있도록 허용한다. 이 해결책은 셀들의 비트들의 물리적 표현 및 데이터의 사용자에 의해 해석되는 논리적 의미 사이의 차이에 기초하고 있다. 유효성 제한은 물리적 레벨에 의해 부여되지만, 에러율 제한은 논리적 레벨에 의해 부여된다. 따라서, 우리는 물리적 레벨보다는 논리적 레벨이 다른 오더링을 이용하여 양립하지 않는 조건들을 해결한다.
비트들을 셀들에 (물리적 레벨로) 물리적으로 저장시킬 때, 유효하고 또한 에러율 최적이지만, 필수적으로 균일하게 분포될 필요성은 없는 오더링을 이용한다. 플래시 메모리로/에서 (논리적 레벨로) 데이터를 입력 및 출력할 때, 균일하게 분포되고 또한 에러율 최적이지만 유효성은 필수적이지 않은 오더링을 이용한다. 우리는 두 개의 오더링들 사이의 일대일 매핑 및 기입을 위해 셀들에 접근하기 전 또는 독출을 위해 셀들에 접근한 후 오더링들 사이의 스위치를 형성한다.
상기 방법은 특정 예를 참조하면 가장 잘 이해된다. 우리는 물리적 레벨 오더링 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1} 및 논리적 레벨 오더링 {15,11,3,1,0,2,6,14,10,8,9,13,12,4,5,7}을 선택하였다고 가정한다. 다음의 테이블은 두 개의 레벨 들 사이의 대응성을 보여주며, 후술하는 바와 같이, 기입 및 독출을 위한 변환 테이블로서 이용된다. 테이블의 좌측 컬럼은 각각의 물리적 상태를 리스팅하며 셀은 가장 좌측 상태 수 15(소거된 상태를 나타냄)에서 가장 높은 임계 전압을 가진 가장 우측 상태 수 0까지 존재할 수 있다. 실제로 이 컬럼은 테이블을 이용하는데 필요한 것은 아니지만, 명료화를 위해 나타내고 있다. 테이블의 중앙 컬럼은 “논리적 레벨 해석”의 타이틀로 되어 있고 셀의 물리적 상태에 대해 논리적 레벨 오더링이 매치되는 방법을 나타낸다. 테이블의 우측 컬럼은 “물리적 레벨 해석”의 타이틀로 되어 있고 셀의 물리적 상태에 대해 물리적 레벨 오더링이 매치되는 방법을 나타낸다.
물리적 상태 논리적 레벨 해석 물리적 레벨 해석
15 15 15
14 11 14
13 3 12
12 1 13
11 0 9
10 2 8
9 6 10
8 14 11
7 10 3
6 8 2
5 9 0
4 13 4
3 12 6
2 4 7
1 5 5
0 7 1
상기 테이블에서 배울 수 있는 것을 살펴보기로 한다. 셀이 가장 우측 (가장 높은 임계 전압) 상태 0이면, 물리적 상태 수 0에 대응하는 테이블의 최종 열을 고찰한다. 이 물리적 상태의 논리적 레벨 해석은 “7”=“0111”이고, 따라서 이러한 셀은 저장 시스템 수단 “0111”의 사용자에 대한 데이터를 포함한다. 상기 동일 상태의 물리적 레벨 해석은 테이블에서 “1”=0001“로 나타나며, 이는 유효 조건을 위배하지 않고 기입이 완성되도록 보장하기 위해 셀로 기입되어야 하는 물리적 층이다.
이제 도면들을 다시 참조하면, 도5는 본 발명의 상기 양태에 따라 셀로 기입하는 플로우챠트이다. 저장 시스템의 사용자가 비트 “0111”=“7”을 셀로 기입하도록 요청한다고 가정한다(블럭10). 상기 테이블의 중앙 (“논리적”) 컬럼에 값 7을 위치시킨다(블럭12). 동일 열의 우측 (“물리적”) 컬럼으로 이동시키고, 대응하는 물리적 레벨 해석(이 예에서 “0001”=“1”)을 찾아낸다(블럭14). 이는 셀에 실제로 기입된 것이다(블럭16). 셀들의 물리적 메커니즘은 테이블의 우측 컬럼에 도시된 물리적 레벨 오더링에 따라 작업하도록 설계되어 있음을 이해하기 바란다. 물리적 기입 메커니즘에 “1”을 기입하도록 지시하면 셀은 가장 우측 상태로 이동된다. 테이블의 우측 컬럼에서 도4의 15-13-9-1 브랜치의 시퀀스를 확인함으로써, 우리는 가장 우측 상태로의 경로에서 중간 상태들은 제2 최하위 비트가 프로그램될 때 좌측에서 4번째의 상태 및 제2 최상위 비트가 프로그램될 때 좌측에서 5번째의 상태임을 알 수 있다. 최상위 비트를 프로그램하면 셀이 가장 우측 상태로 되게 한다.
도6은 본 발명의 상기 양태에 따라 셀로 기입하는 플로우챠트이다. 저장 시스템의 사용자가 상기와 같이 기입된 셀을 독출하도록 요청한다고 가정한다(블럭20). 독출 시에 물리적 레벨은 “1”의 값으로 복귀된다. 이 값을 테이블의 우측 컬럼에 위치시킨다(블럭22). 동일 열의 중앙 컬럼으로 이동시키고, 대응하는 논리적 레벨 해석(이 예에서 “0111”=“7”)을 찾아낸다(블럭24). 이것은 사용자에게 복귀되는 것이고(블럭24), 실제로 이것은 그 셀에 사용자가 전에 저장한 것이다.
이러한 이중-레벨 시스템의 장점은, “12”로 나타낸 상태의 임계 전압으로 부터 셀의 임계 전압을 감하도록 요구되기 때문에 실행할 수 없는 “8”의 기입의 중간 단계가 요구되는 “0”의 값의 기입의 : 논리적 레벨 오더링의 어려움을 증명하도록 이용되는 예를 고려할 때 나타난다. 상기 이중-레벨 방법을 이용하여 “0”의 논리 값 기입이 물리적 레벨에서 “9”의 기입으로 변환되고, 상기 물리적 레벨 오더링이 유효하면, 이 값(또는 임의의 다른 값)을 셀로 기입 시에 어려움은 없다. 실제로, 도4에 도시된 바와 같이, “9”를 포함하도록 초기에 소거된 셀의 프로그래밍은 “13”의 중간 값 만을 통과하며, “13”은 물리적 레벨 오더링에서 “9”의 좌측으로 이동한다.
본 발명의 상기 양태의 방법들을 사용하기 위해, 기입 및 독출 시에 실행되는 변환 단계를 가질 필요가 있다. 원칙적으로, 소프트웨어에 의해 실행되는 이러한 변환을 가질 수 있고, 호스트 컴퓨터(플래시 메모리가 호스트에 의해 직접 제어되는 경우) 또는 자립형 컨트롤러(플래시 메모리가 호스트에 대한 인터페이스로서 작용하는 플래시 장치의 컨트롤러에 의해 제어되는 경우)에 의해 상기 소프트웨어가 실행된다. 도7은 제1 경우에 따른 시스템(30)의 고레벨 블럭도이다. 도8은 제2 경우에 따른 시스템(40)의 고레벨 블럭도이다.
시스템(30)에서, 호스트 컴퓨터(32)는 플래시 메모리 장치(38)의 플래시 메모리를 관리하도록 플래시 관리 소프트웨어(34)를 실행한다. 플래시 관리 소프트웨어(34)는 도5 및 6에 도시된 바와 같이 논리적 레벨 오더링 및 물리적 레벨 오더링 사이에서 변환되는 변환 모듈(36)을 포함한다.
시스템(40)에서, 호스트 컴퓨터(42)는 플래시 메모리 장치(52)에 독출 및 기 입 명령을 전송한다. 플래시 메모리 장치(52)는 플래시 관리 소프트웨어(46)를 실행함에 의해 플래시 메모리(50)를 관리하도록 플래시 컨트롤러(44)를 이용한다. 플래시 관리 소프트웨어(46)는 도5 및 6에 도시된 바와 같이 논리적 레벨 오더링 및 물리적 레벨 오더링 사이에서 변환되는 변환 모듈(48)을 포함한다.
소프트웨어의 상기 변환 방법은, 특히 상기 변환이 독출 또는 기입될 각각 및 모든 셀에 인가되어야 함을 고려할 때 비효율적이다. 따라서, 자립형 컨트롤러 다이 또는 플래시 셀과 동일의 다이 내의, 하드웨어에서 실행되는 변환을 갖는 것이 더 좋다. 도9는 제1 경우에 따른 시스템(60)의 고레벨 블럭도이다. 도10 및 11은 제2 경우에 따른 시스템(80) 및 시스템(100)의 고레벨 블럭도이다.
시스템(60)에서, 호스트 컴퓨터(62)는 플래시 메모리 장치(72)에 독출 및 기입 명령을 전송한다. 플래시 메모리 장치(72)는 플래시 관리 소프트웨어(66)를 실행함에 의해 플래시 메모리(70)를 관리하도록 플래시 컨트롤러(64)를 이용한다. 플래시 컨트롤러(64)가 플래시 메모리(70)에 기입할 때, 플래시 관리 소프트웨어(66)에 의해 발생된 논리적 레벨 오더링은 도5에 도시된 바와 같이 플래시 컨트롤러(64)의 변환 하드웨어(68)에 의해 논리적 레벨 오더링으로 변환된다. 플래시 컨트롤러(64)가 플래시 메모리(70)로부터 독출될 때, 도6에 도시된 바와 같이 메모리(70)로부터 수신된 물리적 레벨 오더링이 변환 하드웨어(68)에 의해 논리적 레벨 오더링으로 변환된다.
시스템(80)에서, 호스트 컴퓨터(82)는 플래시 메모리 장치(92)에 독출 및 기입 명령을 전송한다. 플래시 메모리 장치(92)는 플래시 관리 소프트웨어(86)를 실 행함에 의해 플래시 메모리(90)를 관리하도록 플래시 컨트롤러(84)를 이용한다. 플래시 컨트롤러(84)가 플래시 메모리(90)에 기입할 때, 플래시 메모리(90)는 플래시 컨트롤러(84)로부터 논리적 레벨 오더링을 수신하고 플래시 메모리(90)의 변환 하드웨어(88)에 의해 도5에 도시된 바와 같이 논리적 레벨 오더링을 물리적 레벨 오더링으로 변환한다. 플래시 컨트롤러(84)가 플래시 메모리(90)로부터 독출될 때, 도6에 도시된 바와 같이 변환 하드웨어(88)에 의해 플래시 메모리(90)의 물리적 레벨 오더링을 플래시 컨트롤러(84)에 프레젠테이션하는 논리적 레벨 오더링으로 변환한다.
시스템(100)에서, 호스트 컴퓨터(82)는 플래시 메모리 장치(110)를 관리하도록 플래시 관리 소프트웨어(104)를 실행한다. 호스트 컴퓨터(102)는 논리적 레벨 오더링에 따라 플래시 메모리 장치(110)를 독출 및 기입한다. 호스트 컴퓨터(102)가 플래시 메모리 장치(110)에 기입할 때, 플래시 메모리 장치(110)의 플래시 메모리(108)의 변환 하드웨어(106)는 도5에 도시된 바와 같이 논리적 레벨 오더링을 물리적 레벨 오더링으로 변환한다. 호스트 컴퓨터(102)가 플래시 메모리 장치(110)로부터 독출될 때, 변환 하드웨어(106)는 도6에 도시된 바와 같이 플래시 메모리(108)의 물리적 레벨 오더링을 호스트 컴퓨터(102)에 프레젠테이션하는 논리적 레벨 오더링으로 변환한다.
어떤 시스템 구조가 선택되더라도, 상기 변환은 기입 작동 시작 전에 가능한, 기입될 셀들로의 타겟인, 모든 데이터 비트들을 필요로 함을 이해하기 바란다. 이는 상기 변환 테이블의 어느 열에 우리가 있는지 알기 위해 우리는 논리적 데이 터의 모든 비트들을 필요로 하기 때문이다. 이는 예컨대 본 발명의 방법을 이용하여 우리가 4-비트 MBC를 실행한다면, 상기 호스트는 프로그램이 시작하기 전에 가능하게 되도록 동일 그룹의 셀들에 존재하는 모두 4의 논리적 페이지를 가져야 함을 의미한다. 다음에 상기 4 패이지 중 어느 한 페이지의 데이터가 4-열 테이블의 하나의 열에 보여지며, 그 후 상기 테이블의 각각의 4-비트 컬럼이 상기한 변환 과정에 입력으로서 작용한다. 다음은 K 셀들에 대한, 이러한 테이블의 예이다 :
최하위 페이지 0 1 0 ... 1 1 1
두번째 하위 페이지 1 1 0 ... 1 1 0
두번째 상위 페이지 1 0 0 ... 1 0 0
최상위 페이지 0 0 1 ... 0 1 0
셀# 0 1 2 ... K-3 K-2 K-1
셀#0은 2진 6을 저장하고, 셀#1은 2진 3을 저장하고, 셀#2는 2진 8을 저장한다.
상기한 설명에서 모든 상태 에러들이 동일하다고 가정하였다. 즉, 셀은 그의 가능한 상태들 중 어느 것에서도 동일하며(저장될 데이터의 이전의 지식을 갖지 않았음을 의미함) 또한 각각의 상태들은 동일하게 안정적이고 동일 에러 가능성을 가진다. 이 가정들 중 어느 하나(또는 모두)는 진실이 아닐 수 있다. 이 경우, 최적 오더링은, 모든 변환들이 동일하게 발생하지 않기 때문에, 비트들에 걸친 변환들의 균일한 분포를 제공할 필요는 없다. 상기한 바와 동일한 원리들도 이 경우에 적용 가능하다. 논리적 레벨에서 이용하는 최적의 오더링은 임의의 비트 위치에서 변환을 가질 가능성이 동일하거나, 또는 가능한 한 이것에 가까운 것이다. 이러한 오더링은 여기에서 비트들의 에러 가능성을 균일하게 분포하거나, 또는 동등하게, 비트들의 에러 가능성의 균일한 분포를 제공하는 오더링이라 하며, 데이터 비트들 및 상태 에러들의 가능성 분포가 제공된다. 비트들의 에러 가능성을 균일하게 분포시키는 오더링이, 상기 정의된 바와 같이, “균일하게 분포된” 오더링일 필요는 없으며, 우리가 알고 있는 것이긴 하지만 데이터 비트 및 상태 에러들이 균일하게 분포된 경우 균일하게 분포된 오더링은 에러 가능성을 균일하게 분포시킨다. 이 최적 기준에서 유래된 오더링이 유효한 경우, 모든 레벨들에서, 변환이 필요없이, 오더링 만으로 사용될 수 있다. 예컨대, 상기한 에러율 최적 M=4 비트 오더링 {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1}의 예에서, 상태 변환 에러 가능성은 다음 테이블과 같다 :
상태 변환 에러 가능성
i .00005
ii .00006
iii .00005
iv .0001
v .00005
vi .00006
vii .00005
viii .0003
ix .00005
x .00006
.0001
xii .00006
xiii .00005
xiv .00006
xv .0001
모든 데이터 비트들은 동일 가능성이라 가정한다. 이 가능성들이 15,000셀 이상의 예에 적용되면, 각 페이지는 평균 .0003 x 15,000=4.5 에러들을 가진다. 예컨대, 최하위 비트가 할당된 논리 페이지의 에러들의 평균 수는 최하위 비트를 변화시키는 변환들의 변환 에러 가능성들의 합의 15,000배이다. 이러한 6개의 변환들 : i, iii, v, vii, ix 및 xiii 이 있다. 이들 각 변환들은 .00005의 에러 가능성을 가진다. 최하위 비트를 저장하는 페이지의 평균 에러들의 수는 6 x .00005 x 15,000 = 4.5 에러들이다. 이 경우, {15,14,12,13,9,8,10,11,3,2,0,4,6,7,5,1} 비트 오더링은 유효이며 에러율 최적이고 비트 에러 가능성도 균일하게 분포하며, 변환은 필요하지 않다. 그러나, 이러한 최적 오더링은 비유효로 될 수 있고 따라서 물리적 셀 레벨에서 이용할 수 없다. 이 경우, 셀에 저장될 논리적 비트 패턴을 실제로 셀로 기입된 물리적 비트 패턴으로 맵(map)하여 유효 오더링을 나타내는 변환을 이용함으로써, 다른 비트 위치들에 걸쳐 비트 에러 가능성의 양호한 분포를 얻는 한편 물리적 셀 실행의 제한을 위배하지 않게 된다.
이상 본 발명이 제한된 수의 실시예들에 대해 설명되었지만, 본 발명에 대해 많은 변화, 개조 및 다른 응용들이 행해질 수 있음을 이해하기 바란다.
Figure 112007021828877-PCT00001
Figure 112007021828877-PCT00002
Figure 112007021828877-PCT00003
Figure 112007021828877-PCT00004
Figure 112007021828877-PCT00005
Figure 112007021828877-PCT00006
Figure 112007021828877-PCT00007
Figure 112007021828877-PCT00008
Figure 112007021828877-PCT00009
Figure 112007021828877-PCT00010
Figure 112007021828877-PCT00011
Figure 112007021828877-PCT00012
Figure 112007021828877-PCT00013
Figure 112007021828877-PCT00014
Figure 112007021828877-PCT00015
Figure 112007021828877-PCT00016
Figure 112007021828877-PCT00017
Figure 112007021828877-PCT00018

Claims (42)

  1. (a) [N/M]셀을 제공하는 단계; 및
    (b) 유효 물리적 비트 오더링, 및 상기 물리적 비트 오더링과 다르고 상기 M까지의 비트들의 에러 가능성들이 상기 물리적 비트 오더링 보다 더 균일하게 분포되는 논리적 비트 오더링에 따라 상기 비트들 중 M까지 각 셀을 프로그래밍하는 단계를 포함하고, M은 3 이상인 N 비트들의 데이터를 저장하는 방법.
  2. 제1항에 있어서, 상기 프로그래밍은, 각 셀에 대해, 상기 M까지의 비트들을, 상기 논리적 비트 오더링에 리스팅된 바와 같이, 상기 물리적 비트 오더링의 대응하는 엔트리로, 변환하는 단계를 포함하는 N 비트들의 데이터를 저장하는 방법.
  3. 제1항에 있어서, (c) 상기 셀들에서 상기 N비트들을 독출하는 단계를 더 포함하는 N 비트들의 데이터를 저장하는 방법.
  4. 제3항에 있어서, 상기 독출은, 각 셀에 대해, 상기 각 셀의 상태에 대응하는 , 상기 물리적 비트 오더링의 엔트리를, 상기 논리적 비트 오더링의 대응하는 엔트리로, 변환하는 단계를 포함하는 N 비트들의 데이터를 저장하는 방법.
  5. 제1항에 있어서, 상기 논리적 비트 오더링은 상기 M까지의 비트들 모두의 변 환들의 확률-가중(probability-weighted) 넘버들을 대체로 동일화하는 N 비트들의 데이터를 저장하는 방법.
  6. 제1항에 있어서, 상기 물리적 비트 오더링 및 논리적 비트 오더링 둘다 2M-1과 동일의 전체 변환들의 수를 가지는 N 비트들의 데이터를 저장하는 방법.
  7. 제6항에 있어서, M=3이고 상기 물리적 비트 오더링 및 상기 논리적 비트 오더링은 둘다 7개의 변환들을 가지는 N 비트들의 데이터를 저장하는 방법.
  8. 제7항에 있어서, 상기 물리적 비트 오더링은 {7,6,4,5,1,0,2,3} 및 {7,6,4,5,1,3,2,0} 중 하나인 N 비트들의 데이터를 저장하는 방법.
  9. 제6항에 있어서, M=4이고 상기 물리적 비트 오더링 및 상기 논리적 비트 오더링은 둘다 15개의 변환들을 가지는 N 비트들의 데이터를 저장하는 방법.
  10. 제6항에 있어서, 상기 논리적 비트 오더링은 균일하게 분포되는 N 비트들의 데이터를 저장하는 방법.
  11. 제10항에 있어서, M=4이고 상기 논리적 비트 오더링의 임의의 비트의 변환들의 수는 3 및 4로 된 그룹에서 선택되는 N 비트들의 데이터를 저장하는 방법.
  12. 제1항에 있어서, 상기 물리적 비트 오더링은 비직렬인 N 비트들의 데이터를 저장하는 방법.
  13. (a) K 셀들을 포함하는 메모리; 및
    (b) 상기 셀들에 N 비트들의 데이터를 저장하기 위해, 유효 물리적 비트 오더링, 및 상기 물리적 비트 오더링과 다르고 3 이상인 M까지의 비트들의 에러 가능성들이 상기 물리적 비트 오더링 보다 더 균일하게 분포하는 논리적 비트 오더링에 따라, 상기 비트들 중 M=[N/K] 까지 상기 각 셀을 프로그래밍함에 의해 동작하는 컨트롤러를 포함하는 메모리 장치.
  14. 제13항에 있어서, 상기 컨트롤러는 상기 물리적 비트 오더링 및 상기 논리적 비트 오더링 사이에서 변환하는 메커니즘을 포함하는 메모리 장치.
  15. 제14항에 있어서, 상기 메커니즘은 소프트웨어를 실행함에 의해 상기 변환을 행하는 메모리 장치.
  16. 제14항에 있어서, 상기 컨트롤러는 상기 변환을 행하는 전용 하드웨어를 포함하는 메모리 장치.
  17. 제13항에 있어서, 상기 메모리는 상기 물리적 비트 오더링 및 상기 논리적 비트 오더링 사이에서 변환하는 전용 하드웨어를 포함하는 메모리 장치.
  18. 제13항에 있어서, 상기 메모리는 플래시 메모리인 메모리 장치.
  19. 제13항에 있어서, 상기 물리적 비트 오더링은 비직렬인 메모리 장치.
  20. (a) K 셀들을 구비하는 메모리를 포함하는 메모리 장치;
    (b) N 비트들의 데이터를 저장하도록 제공되는, 상기 메모리 장치의 호스트; 및
    (c) 상기 각 셀에 대해, 상기 비트들 중 M=[M/K] 까지를, 논리적 비트 오더링에 리스팅된 바와 같이, 상기 논리적 비트 오더링과 다른 유효 물리적 비트 오더링의 대응하는 엔트리로 변환하며, M은 3 이상이고, 그 후상기 각 셀은 상기 물리적 비트 오더링의 대응하는 엔트리에 따라 프로그램되고, 상기 논리적 비트 오더링은 상기 M비트들 까지의 에러 가능성이 상기 물리적 비트 오더링 보다 더 균일하게 분포되는 메커니즘을 포함하는 데이터 저장 시스템.
  21. 제20항에 있어서, 상기 메커니즘은 소프트웨어를 실행함에 의해 상기 변환을 행하는 데이터 저장 시스템.
  22. 제21항에 있어서, 상기 메커니즘은 상기 호스트에 포함되는 데이터 저장 시스템.
  23. 제21항에 있어서, 상기 메커니즘은 상기 메모리의 컨트롤러에 포함되고, 상기 컨트롤러는 상기 메모리 장치에 포함되는 데이터 저장 시스템.
  24. 제20항에 있어서, 상기 메커니즘은 상기 변환을 행하는 전용 하드웨어를 포함하는 데이터 저장 시스템.
  25. 제24항에 있어서, 상기 메커니즘은 상기 메모리에 포함되는 데이터 저장 시스템.
  26. 제24항에 있어서, 상기 메커니즘은 상기 메모리의 컨트롤러에 포함되고, 상기 컨트롤러는 상기 메모리 장치에 포함되는 데이터 저장 시스템.
  27. 제20항에 있어서, 상기 메모리는 플래시 메모리인 데이터 저장 시스템.
  28. 제20항에 있어서, 상기 물리적 비트 오더링은 비직렬인 데이터 저장 시스템.
  29. (a) [N/M] 셀들을 제공하는 단계; 및
    (b) 유효 물리적 비트 오더링, 및 상기 물리적 비트 오더링과 다른 균일하게 분포된 논리적 비트 오더링에 따라, 비트들 중 M까지 각 셀을 프로그래밍하는 단계를 포함하고, M은 3 이상인, N비트들의 데이터를 저장하는 방법.
  30. (a) K 셀들을 포함하는 메모리; 및
    (b) 유효 물리적 비트 오더링 및 균일하게 분포된 논리적 비트 오더링에 따라, 상기 비트들 중 M=[N/K]까지 상기 각 셀을 프로그래밍함에 의해 상기 셀들에 N비트들의 데이터를 저장하도록 동작하며, M은 3 이상인 컨트롤러를 포함하는 메모리 장치.
  31. (a) K 셀들을 구비하는 메모리를 포함하는 메모리 장치;
    (b) N비트들의 데이터를 저장하도록 제공되는, 상기 메모리 장치의 호스트; 및
    (c) 상기 각 셀에 대해, 상기 비트들 중 M=[N/K] 까지를, 균일하게 분포된 논리적 비트 오더링에 리스팅된 바와 같이, 상기 논리적 비트 오더링과 다른 유효 물리적 비트 오더링의 대응하는 엔트리로 변환하며, M은 3 이상이고, 그 후상기 각 셀은 상기 물리적 비트 오더링의 상기 엔트리에 따라 프로그램되는 메커니즘을 포함하는, 데이터 저장 시스템.
  32. (a) [N/M] 셀들을 제공하는 단계; 및
    (b) M비트들 까지의 모든 에러 가능성들이 대체로 균일하게 분포된 유효, 비직렬의 비트 오더링에 따라 비트들 중 M까지 각 셀을 프로그래밍하는 단계를 포함하고 M은 3 이상인, N비트들의 데이터를 저장하는 방법.
  33. (a) K 셀들을 포함하는 메모리; 및
    (b) M비트들 까지의 모든 에러 가능성들이 대체로 균일하게 분포된 유효, 비직렬의 비트 오더링에 따라 상기 비트들 중 M=[N/K]까지 상기 각 셀을 프로그래밍함에 의해 상기 셀들에 N비트들의 데이터를 저장하도록 동작하며, M은 3 이상인 컨트롤러를 포함하는 메모리 장치.
  34. (a) [N/M] 셀들을 제공하는 단계; 및
    (b) 유효, 비직렬, 에러율 최적의 비트 오더링에 따라 비트들 중 M까지 각 셀을 프로그래밍하는 단계를 포함하고 M은 3 이상인, N비트들의 데이터를 저장하는 방법.
  35. 제34항에 있어서, 상기 비트 오더링의 전체 변환들의 수는 상기 변환들의 최소의 수인 N비트들의 데이터를 저장하는 방법.
  36. 제34항에 있어서, 상기 비트 오더링은 2M-1과 동일한 전체 변환들의 수를 가지는 N비트들의 데이터를 저장하는 방법.
  37. 제36항에 있어서, M=3이고 상기 비트 오더링은 7 개의 상기 변환들을 가지는 N비트들의 데이터를 저장하는 방법.
  38. 제37항에 있어서, 상기 비트 오더링은 {7,6,4,5,1,0,2,3} 및 {7,6,4,5,1,3,2,0}로 구성되는 그룹에서 선택되는 N비트들의 데이터를 저장하는 방법.
  39. 제36항에 있어서, M=4이고 상기 비트 오더링은 15개의 변환들을 가지는 N비트들의 데이터를 저장하는 방법.
  40. 제34항에 있어서, 상기 비트 오더링은 균일하게 분포되는 N비트들의 데이터를 저장하는 방법.
  41. 제40항에 있어서, M=4이고 상기 비트 오더링의 각각의 비트는 적어도 3 및 많아야 4의 변환들을 가지는 N비트들의 데이터를 저장하는 방법.
  42. (a) K 셀들을 포함하는 메모리; 및
    (b) 유효, 비직렬, 에러율 최적의 비트 오더링에 따라 상기 비트들 중 M=[N/K]까지 상기 각 셀을 프로그래밍함에 의해 상기 셀들에 N비트들의 데이터를 저장하도록 동작하며, M은 3 이상인 컨트롤러를 포함하는 메모리 장치.
KR1020077006271A 2004-09-22 2005-09-19 에러율을 최적화하기 위한 멀티-비트 플래시 셀의 상태인코딩 KR20070054659A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US61187304P 2004-09-22 2004-09-22
US60/611,873 2004-09-22
US11/061,634 US20050213393A1 (en) 2004-03-14 2005-02-22 States encoding in multi-bit flash cells for optimizing error rate
US11/061,634 2005-02-22

Publications (1)

Publication Number Publication Date
KR20070054659A true KR20070054659A (ko) 2007-05-29

Family

ID=36090394

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077006271A KR20070054659A (ko) 2004-09-22 2005-09-19 에러율을 최적화하기 위한 멀티-비트 플래시 셀의 상태인코딩

Country Status (3)

Country Link
US (3) US20050213393A1 (ko)
KR (1) KR20070054659A (ko)
WO (1) WO2006033099A2 (ko)

Cited By (1)

* 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

Families Citing this family (220)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493457B2 (en) 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
JP2006302345A (ja) * 2005-04-15 2006-11-02 Sony Corp データ処理装置、データ再生装置、データ処理方法及びプログラム
US7681109B2 (en) * 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US7526715B2 (en) * 2005-10-17 2009-04-28 Ramot At Tel Aviv University Ltd. Probabilistic error correction in multi-bit-per-cell flash memory
WO2007046084A2 (en) * 2005-10-17 2007-04-26 Ramot At Tel-Aviv University Ltd. Probabilistic error correction in multi-bit-per-cell flash memory
US8156403B2 (en) 2006-05-12 2012-04-10 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
CN103258572B (zh) 2006-05-12 2016-12-07 苹果公司 存储设备中的失真估计和消除
WO2007132456A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
WO2007132452A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
US20070266296A1 (en) * 2006-05-15 2007-11-15 Conley Kevin M Nonvolatile Memory with Convolutional Coding
US7840875B2 (en) * 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
US8060806B2 (en) 2006-08-27 2011-11-15 Anobit Technologies Ltd. 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
US20080092015A1 (en) * 2006-09-28 2008-04-17 Yigal Brandman Nonvolatile memory with adaptive operation
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
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
CN101601094B (zh) 2006-10-30 2013-03-27 苹果公司 使用多个门限读取存储单元的方法
US7558109B2 (en) * 2006-11-03 2009-07-07 Sandisk Corporation Nonvolatile memory with variable read threshold
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US8001441B2 (en) * 2006-11-03 2011-08-16 Sandisk Technologies Inc. Nonvolatile memory with modulated error correction coding
US7904780B2 (en) 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
WO2008068747A2 (en) 2006-12-03 2008-06-12 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
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
US8370561B2 (en) * 2006-12-24 2013-02-05 Sandisk Il Ltd. Randomizing for suppressing errors in a flash memory
US7539052B2 (en) 2006-12-28 2009-05-26 Micron Technology, Inc. Non-volatile multilevel memory cell programming
US7701765B2 (en) * 2006-12-28 2010-04-20 Micron Technology, Inc. Non-volatile multilevel memory cell programming
US7984360B2 (en) * 2006-12-31 2011-07-19 Ramot At Tel Aviv University Ltd. Avoiding errors in a flash memory by using substitution transformations
KR100850515B1 (ko) * 2007-01-24 2008-08-05 삼성전자주식회사 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
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
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
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
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
US8650352B2 (en) 2007-09-20 2014-02-11 Densbits Technologies Ltd. Systems and methods for determining logical values of coupled flash memory cells
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
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
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
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
US8443242B2 (en) 2007-10-25 2013-05-14 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
US7742335B2 (en) 2007-10-31 2010-06-22 Micron Technology, Inc. Non-volatile multilevel memory cells
US7668012B2 (en) * 2007-10-31 2010-02-23 Micron Technology, Inc. Memory cell programming
US7848142B2 (en) 2007-10-31 2010-12-07 Micron Technology, Inc. Fractional bits in memory cells
WO2009063450A2 (en) 2007-11-13 2009-05-22 Anobit Technologies Optimized selection of memory units in multi-unit 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
US8321625B2 (en) 2007-12-05 2012-11-27 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
WO2009072105A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. A low power chien-search based bch/rs decoding system for flash memory, mobile communications devices and other applications
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8276051B2 (en) 2007-12-12 2012-09-25 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
US8301912B2 (en) * 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
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
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
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8059455B2 (en) * 2008-05-09 2011-11-15 Sandisk Il Ltd. Partial scrambling to reduce correlation
US7821839B2 (en) * 2008-06-27 2010-10-26 Sandisk Il Ltd. Gain control for read operations in flash memory
TWI370969B (en) 2008-07-09 2012-08-21 Phison Electronics Corp Data accessing method, and storage system and controller using the same
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
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. 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
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in 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
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
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
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
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage
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
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
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
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
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
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
US8473809B2 (en) * 2009-11-20 2013-06-25 Sandisk Technologies Inc. Data coding for improved ECC efficiency
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8144512B2 (en) 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US8468294B2 (en) 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
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
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8631304B2 (en) 2010-01-28 2014-01-14 Sandisk Il Ltd. Overlapping error correction operations
US8341502B2 (en) 2010-02-28 2012-12-25 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US9104610B2 (en) 2010-04-06 2015-08-11 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
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
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
US8510639B2 (en) 2010-07-01 2013-08-13 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
WO2012009318A1 (en) 2010-07-13 2012-01-19 Sandisk Technologies Inc. Dynamic optimization of back-end memory system interface
US9069688B2 (en) 2011-04-15 2015-06-30 Sandisk Technologies Inc. Dynamic optimization of back-end memory system interface
US8464135B2 (en) 2010-07-13 2013-06-11 Sandisk Technologies Inc. Adaptive flash 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
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
JP2012226822A (ja) 2011-04-15 2012-11-15 Samsung Electronics Co Ltd 不揮発性メモリ装置
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
KR101818443B1 (ko) 2011-07-08 2018-01-16 삼성전자주식회사 메모리 컨트롤러, 및 상기 메모리 컨트롤러를 포함하는 메모리 시스템
US9318166B2 (en) * 2011-07-22 2016-04-19 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
US8495285B2 (en) * 2011-08-31 2013-07-23 Micron Technology, Inc. Apparatuses and methods of operating for memory endurance
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
KR101893145B1 (ko) * 2011-12-06 2018-10-05 삼성전자주식회사 메모리 시스템들 및 그것들의 블록 복사 방법들
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
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
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
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
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
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
US9117514B2 (en) 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
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
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
KR102068519B1 (ko) 2013-07-01 2020-01-21 삼성전자주식회사 저장 장치, 그것의 쓰기 방법 및 읽기 방법
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
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9390008B2 (en) 2013-12-11 2016-07-12 Sandisk Technologies Llc Data encoding for non-volatile memory
KR102157875B1 (ko) 2013-12-19 2020-09-22 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
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
US9817751B2 (en) * 2014-09-03 2017-11-14 Apple Inc. Multi-phase programming schemes for nonvolatile memories
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
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
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
US9548107B1 (en) 2015-07-09 2017-01-17 Kabushiki Kaisha Toshiba Semiconductor memory device
KR20170058482A (ko) * 2015-11-18 2017-05-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102451154B1 (ko) 2015-12-07 2022-10-06 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 동작 방법
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
KR102547713B1 (ko) * 2016-09-01 2023-06-26 삼성전자주식회사 반도체 메모리 장치 및 이의 동작 방법
KR20200117746A (ko) 2019-04-05 2020-10-14 삼성전자주식회사 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 비휘발성 메모리 장치를 포함하는 메모리 시스템
US10878912B1 (en) 2019-08-02 2020-12-29 Kabushiki Kaisha Toshiba Multi-cell modulation for flash memory
US11263079B2 (en) 2020-06-30 2022-03-01 Kabushiki Kaisha Toshiba Endurance modulation for flash storage
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
JP2023095156A (ja) * 2021-12-24 2023-07-06 キオクシア株式会社 メモリデバイス

Family Cites Families (23)

* 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
US5043940A (en) * 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5673224A (en) * 1996-02-23 1997-09-30 Micron Quantum Devices, Inc. Segmented non-volatile memory array with multiple sources with improved word line control circuitry
JP3614173B2 (ja) 1996-02-29 2005-01-26 株式会社ルネサステクノロジ 部分不良メモリを搭載した半導体記憶装置
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
US6088261A (en) * 1997-08-12 2000-07-11 Nippon Steel Corporation Semiconductor storage device
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
EP0952673B1 (en) * 1997-11-10 2017-05-17 Ntt Mobile Communications Network Inc. Interleaving method, interleaving apparatus, and recording medium in which interleave pattern generating program is recorded
KR100388179B1 (ko) * 1999-02-08 2003-06-19 가부시끼가이샤 도시바 불휘발성 반도체 메모리
US6772383B1 (en) * 1999-05-27 2004-08-03 Intel Corporation Combined tag and data ECC for enhanced soft error recovery from cache tag errors
JP4023953B2 (ja) * 1999-06-22 2007-12-19 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
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
KR100386296B1 (ko) * 2000-12-30 2003-06-02 주식회사 하이닉스반도체 멀티레벨을 가지는 플래쉬 메모리를 프로그램/리드하기위한 회로 및 그 방법
JP3631463B2 (ja) * 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6493266B1 (en) 2001-04-09 2002-12-10 Advanced Micro Devices, Inc. Soft program and soft program verify of the core cells in flash memory array
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
US6847550B2 (en) 2002-10-25 2005-01-25 Nexflash Technologies, Inc. Nonvolatile semiconductor memory having three-level memory cells and program and read mapping circuits therefor
US7023733B2 (en) * 2004-05-05 2006-04-04 Sandisk Corporation Boosting to control programming of non-volatile memory
US7020026B2 (en) * 2004-05-05 2006-03-28 Sandisk Corporation Bitline governed approach for program control of non-volatile memory

Cited By (2)

* 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

Also Published As

Publication number Publication date
US20120042219A1 (en) 2012-02-16
US8055972B2 (en) 2011-11-08
WO2006033099A2 (en) 2006-03-30
US20050213393A1 (en) 2005-09-29
US8245099B2 (en) 2012-08-14
WO2006033099A3 (en) 2007-05-18
US20080104312A1 (en) 2008-05-01

Similar Documents

Publication Publication Date Title
KR20070054659A (ko) 에러율을 최적화하기 위한 멀티-비트 플래시 셀의 상태인코딩
KR100961288B1 (ko) 데이터 비트 저장 방법, 메모리 장치 및 데이터 저장시스템
US8327246B2 (en) Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
CN102160120B (zh) 使用调制编码减轻单元间干扰的方法和设备
JP4653738B2 (ja) フラッシュメモリセルの動作方法、およびフラッシュメモリデバイス
US8136014B2 (en) Non-volatile semiconductor memory device
KR101508890B1 (ko) 메모리 내구성을 위한 동작 방법 및 장치
CN111324299B (zh) 用于存储器设备的多态编程的映射
US8040737B2 (en) Gain control for read operations in flash memory
KR20080080041A (ko) 메모리 컨트롤러 및 반도체 장치
US8386890B2 (en) Error correction for multilevel flash memory
US9424178B2 (en) Optimized flash memory without dedicated parity area and with reduced array size
CN101533671A (zh) 非易失性存储装置及其操作方法
US9865338B2 (en) Memory system and method of controlling nonvolatile memory by converting write data written to a page
US9697892B1 (en) Generation and application of gray codes
CN101276645B (zh) 采用三电平单元的存储装置及相关的管理方法
CN117497018A (zh) 非易失性存储设备中读取参考电压的调整方法和存储系统控制器
JP2018022546A (ja) ストレージシステム用のセル位置プログラミング
KR20210013397A (ko) 스토리지 장치
KR101661048B1 (ko) 메모리 디바이스들에 대한 에러 보호
Li et al. Data archiving in 1x-nm NAND flash memories: Enabling long-term storage using rank modulation and scrubbing
KR20180038941A (ko) 섹터 스프레딩을 이용하여 메모리 셀들에 비트들을 매핑하는 방법 및 상기 방법을 수행하는 장치
CN116758961A (zh) 一种高密度3d闪存两步编程方法
CN115033420A (zh) 一种nand闪存动态写电压方法及装置
CN115016736A (zh) 一种基于高密度闪存的可靠性优化方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application