KR101462961B1 - 비전단사 맵핑을 하는 셀당 멀티 비트의 플래시 메모리 디바이스 - Google Patents

비전단사 맵핑을 하는 셀당 멀티 비트의 플래시 메모리 디바이스 Download PDF

Info

Publication number
KR101462961B1
KR101462961B1 KR1020087020296A KR20087020296A KR101462961B1 KR 101462961 B1 KR101462961 B1 KR 101462961B1 KR 1020087020296 A KR1020087020296 A KR 1020087020296A KR 20087020296 A KR20087020296 A KR 20087020296A KR 101462961 B1 KR101462961 B1 KR 101462961B1
Authority
KR
South Korea
Prior art keywords
bits
mapping
cell
delete delete
flash
Prior art date
Application number
KR1020087020296A
Other languages
English (en)
Other versions
KR20080110994A (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 KR20080110994A publication Critical patent/KR20080110994A/ko
Application granted granted Critical
Publication of KR101462961B1 publication Critical patent/KR101462961B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/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
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Abstract

복수의 입력 비트를 저장하기 위해, 상기 비트는 하나 이상의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑되고, 상기 셀(들)은 대응하는 프로그래밍된 상태에 대해 프로그래밍된다. 상기 맵핑은 다수대일이 되거나 또는 "안으로의" 일반화된 그레이 맵핑이 된다. 상기 셀(들)은 예를 들면 최대 우도 디코딩에 의하거나 또는 상기 판독된 상태값을 복수의 소프트 비트로 맵핑하여 소프트 비트를 디코딩함으로써, 복수의 출력 비트로 변환되는 판독된 상태값을 제공하기 위해 판독된다.
Figure R1020087020296
입력 비트, 다수대일 맵핑, 메모리 셀, 프로그래밍된 상태, 플래시 메모리 셀, 임계전압, 상태값, 출력 비트, 최대 우도 디코딩

Description

비전단사 맵핑을 하는 셀당 멀티 비트의 플래시 메모리 디바이스{MULTI­BIT­PER­CELL FLASH MEMORY DEVICE WITH NON­BIJECTIVE MAPPING}
본 발명은 셀당 멀티 비트의 플래시 메모리 디바이스에 관한 것이다.
셀당 멀티 비트(MBPC)의 플래시 메모리 디바이스(10)의 간략화된 블록도가 도 1에 도시된다. 특히, 도 1에 도시된 2 개의 플래시 메모리 디바이스(10)의 컴포넌트는 플래시 컨트롤러(12)와 플래시 메모리 셀 어레이(18)이다.
플래시 컨트롤러(12)는 2개의 블록: 사용자가 플래시 셀 어레이(18)에 저장하고자 하는 정보 비트의 스트림을 플래시 셀 어레이(18)의 셀로 프로그래밍될 상태 또는 전압 레벨의 스트림으로 변환하는 인코더 블록(14)과, 플래시 셀 어레이(18)로부터 판독된 셀 상태 또는 전압 레벨의 스트림을 플래시 셀 어레이(18)에 저장된 정보 비트의 스트림으로 변환하는 디코더 블록(16)을 포함한다.
MBPC 플래시 시스템의 비용은 주로 주어진 정보의 크기를 저장하기 위해 필요한 플래시 메모리 셀 어레이의 크기, 즉 주어진 정보의 크기를 저장하기 위해 필요한 플래시 셀의 수에 의해 영향을 받는다. 플래시 메모리의 비용 효율의 정규화된 측정치로서 플래시 셀당 정보 비트(IBPC로 축약함)의 수를 이용하는 것이 편리하다.
IBPC=(플래시 메모리에 저장된 정보 비트의 수)÷(플래시 메모리에서의 셀의 수)
일부는 MBPC 플래시 시스템의 IBPC는 플래시 셀에서 프로그래밍될 수 있는 상태 또는 전압 레벨의 수를 증가시킴으로써만 증가될 수 있다고 주장할 수 있다. 그러나, 적정한 비교는 또한 MBPC 플래시의 신뢰성 및 MBPC 플래시의 성능을 고려해야한다.
플래시 신뢰성의 주된 기준은 높은 확률, 즉 무시할 수 있을 정도의 작은 비트 오류율로 저장된 정보를 복구할 수 있는 컨트롤러의 능력이다. 플래시 셀로 프로그래밍된 상태 또는 전압 레벨은 상기 플래시 셀로부터 판독된 상태 또는 전압 레벨과 항상 동일하지는 않다. 이것은 플래시 셀에 저장된 전하가 변하도록 하는 플래시 셀 어레이 내부에서 발생하는 물리적 프로세스에 기인한다. 상기의 유해한 물리적 프로세스는 플래시 셀에 저장된 정보를 손상시킨다. 대개 플래시 신뢰성은 시간과 플래시 셀의 마모 레벨의 함수이다. 상기 플래시 신뢰성은 하기의 팩터에 의해 주로 결정된다:
1. 데이터 보존: 데이터가 플래시 셀에 저장되고 높은 신뢰성을 가지고 복구될 수 있는 예상되는 시간의 크기.
2. 프로그램/삭제 사이클: 신뢰할 수 있는 데이터 저장을 허용하면서 플래시 셀이 프로그래밍되고 삭제될 수 있는 예상되는 횟수.
플래시 성능의 주된 기준은 플래시 판독/기록 쓰루풋, 즉, 플래시 메모리로 데이터를 기록하고 상기 플래시 메모리로부터 데이터를 판독하는, 초당 정보비트로 측정된, 쓰루풋이다.
불행히도, 각각의 플래시 셀에 프로그래밍될 수 있는 전압 레벨의 수를 증가시키는 것은 플래시 메모리 신뢰성 및 플래시 메모리 성능 모두에 대해 부정적인 영향을 가진다. 예를 들면, 전압 레벨의 수가 증가하면서, 플래시 메모리의 예상되는 데이터 보존시간이 감소하고, 가용한 프로그램/삭제 사이클의 예상되는 수가 감소하여, 더 낮은 플래시 메모리 신뢰성을 야기한다. 또한, 플래시 메모리의 판독/기록 쓰루풋은 플래시 셀 전압 레벨의 수의 증가와 함께 더 느려진다. 따라서, 플래시 메모리 비용(플래시 메모리의 IBPC)과 플래시 메모리의 신뢰성 및 성능 사이에는 상충이 있다. 명확하게, 이러한 상충을 최적화하기를 원한다. 이것은 플래시 컨트롤러의 적절한 설계를 통해 구현될 수 있다.
간단한 종래 기술의 플래시 컨트롤러는 전단사 맵핑, 즉 k 정보비트를 각 플래시 셀의 q=2k 상태로부터의 상태 또는 전압 레벨로 직접 맵핑하기 위해, 일대일 및 전사인 맵핑을 사용한다. 작은 상태의 수 q 만이 셀에서 프로그래밍되도록 허용함으로써, 상기 셀이 자신의 상태로부터 변화하도록 하는 가능성은 무시할 수 있을 정도로 작게되고, 신뢰성있는 플래시 메모리 디바이스를 제공하게 된다. 이러한 플래시 메모리 디바이스는, 비트가 전단사 맵핑을 통해 셀의 상태로 직접 맵핑되기 때문에, 2의 거듭제곱인 셀에서의 다수의 상태 q 만을 이용할 수 있다는 것에 유의하라.
2005년 1월 25일, Park에 발급된, "NONVOLATILE SEMICONDUCTOR MEMORY HAVING THREE_LEVEL MEMORY CELLS AND PROGRAM AND READ MAPPING CIRCUITS THERFOR"이라는 제하의, 미국특허 제 6,847,550(이하, "Park '550")은 정보 비트로부터 하나 이상의 플래시 셀의 상태로의 일대일이지만 전사는 아닌 비-전단사 맵핑을 이용함으로써 플래시 비용과 신뢰성 사이의 상충 방법을 기술한다. 비-전단사 맵핑을 이용함으로써, 2의 거듭제곱이 아닌 다수의 셀의 상태가 사용될 수 있다. Park '550에 기술된 예를 들면, 3개의 상태 셀이 사용된다. 이것은 4개 상태 셀에 기초한 플래시 메모리 디바이스에 비해 더 높은 플래시 신뢰성(상태에서 상태로의 더 낮은 변환 확률에 기인하여)과 2 개의 상태 셀에 기초한 플래시 메모리 디바이스에 비해 더 낮은 비용을 제공한다.
2002년 10월 22일 Ban 등에 발급된, "METHOD FOR INCREASING INFORMATION CONTENT IN A COMPUTER MEMORY"라는 제하의 미국특허 6,469,931(이하 Ban '931)은 플래시 메모리 디바이스의 신뢰성을 유지하면서 플래시 메모리 디바이스의 비용을 감소시키는 일반적인 프레임워크를 제공한다. 이것은 K 정보비트의 커다란 블록을 q 상태를 가진 M 셀의 커다란 블록으로 맵핑함으로써 수행된다. 상기 인코더 블록(예를 들면 도 1의 인코더 블록(14))은 벡터 공간 2K로부터의 포인트를 벡터 공간 qM에서의 포인트로 맵핑하는, 또한 오류 보정 코드(ECC)로 알려진, 맵핑 함수를 구현한다. 상기 맵핑은 전사가 아니며, 즉, 모든 셀 상태의 구성이 사용되는 것이 아니다(2K<qM). 디코더 블록(예를 들면 도 1의 디코더 블록(16))은 집합적으로 상기 M 판독 셀 상태를 디코딩하고, 플래시 메모리에 저장된 셀 상태중 가장 가능성 높은 적절한 구성을 판정하고, 이는 K 저장된 정보 비트를 복구하는 데에 이용된다. 정보 비트의 블록이 맵핑되는 가능한 셀 상태 구성의 공간의 차원을 증가시키는 것은 정보의 보다 효율적인 스토리지를 가능하게 한다는 것이 정보 이론 및 코딩 이론(R. Gallagher, Information Theory and Reliable Communication, Wiley, New York NY USA, 1971)으로부터 공지되었다. 상기의 방식으로, 적절한 맵핑 함수 또는 ECC가 사용된다면, 보다 많은 정보 비트가 주어진 수의 플래시 셀에 맵핑될 수 있고, 하나의 적절한 구성의 상태에서 또다른 상태로의 변환을 하도록 하는 플래시 메모리의 확률이 임의로 작게 유지된다. 그러나, 상기 맵핑 함수가 높은 IBPC에 대해 제공하는 것은 충분하지 못하다. 상기 맵핑 함수는 또한 상기 인코더 및 디코더 블록의 낮은 복잡도의 구현을 허용해야한다. 코딩 이론(S. Lin 및 D. J. Costello, Error Control Coding: Fundamentals and Applications, Prentice Hall, Englewood Cliffs NJ USA, 1983)은 이러한 적절한 ECC 설계에 대한 이론적인 근거를 제공한다.
Ban '931에서 제공된 예에서, 직접 맵핑 함수는 정보 비트를 셀 상태의 구성으로 맵핑하기 위해 사용된다. 상기 방법은 높은 인코더 복잡도를 가져온다. 도 2에 도시된 보다 일반적인 낮은 복잡도의 접근 방식은 인코더 블록(14)을 2 개의 부분: 1) N-K 잉여 비트를 추가함으로써 N 코딩된 비트로 K 정보 비트를 맵핑하는 바이너리 ECC 인코더 블록(20), 및 2) 각각의 N/M 비트를 셀의 상태 q=2N/M 중 하나로 맵핑함으로써 상기 N 코딩된 비트를 M 셀로 맵핑하는 1차원 전단사 맵핑 함수를 구현하는 단일 맵퍼 블록(22)으로 분할하는 것이다
디코더 블록(16)은 또한 유사하게 2개의 부분으로: 1) 각각의 판독 셀 상태를 N/M 비트로 맵핑함으로써 상기 M 판독 셀 상태를 N 비트로 맵핑하는 1차원 전단사 맵핑함수를 구현하는 단순 디맵퍼 블록(24), 및 2) 디맵퍼(24)로부터 수신된 N "노이즈" 비트를 디코딩하고 K 정보 비트의 측정치를 산출하는 ECC 디코더 블록(26)으로 분할된다. 최적의 디코더(26)가 가장 가능성 높은 K 정보 비트를 주어진 N "노이즈" 비트로 리턴한다.
본 발명의 플래시 컨트롤러는 ECC 및 낮은 차원 비전단사 맵핑의 조합을 이용하여, 플래시 비용, 신뢰성 및 성능 사이의 최적의 상충을 달성하기 위한 낮은 복잡도의 해결책을 제공한다. 또한, 본 발명의 플래시 컨트롤러는 플래시 시스템의 설계시 매우 높은 유연성을 제공하고, 플래시 셀에서 반드시 2의 거듭제곱일 필요가 없는 임의의 수의 상태 또는 전압 레벨을 지원한다. ECC 및 비전단사 맵퍼의 조합은 주어진 MBPC 플래시 기술 및 주어진 성능, 비용 및/또는 신뢰성 요구조건에 대한 낮은 복잡도의 최적 해결안을 설계하도록 한다. 보다 특정하여,
· 주어진 플래시 신뢰성에 대해, 본 발명의 플래시 컨트롤러는 종래 기술의 컨트롤러에 비해, 더 낮은 비용 및/또는 더 높은 플래시 성능을 제공한다.
· 주어진 플래시 비용에 대해, 본 발명의 플래시 컨트롤러는 종래 기술의 컨트롤러에 비해, 더 나은 신뢰성 및/또는 더 높은 플래시 성능을 제공한다.
· 주어진 플래시 성능에 대해, 본 발명의 플래시 컨트롤러는 종래 기술의 컨트롤러에 비해, 더 낮은 플래시 비용 및/또는 더 나은 플래시 신뢰성을 제공한다.
본 발명의 컨트롤러는 비전단사 맵퍼, 즉 그의 맵핑이 일대일(one-to-one) 또는 전사(onto), 또는 일대일도 아니고 전사도 아닌 맵퍼를 이용한다. 또한 상기 맵핑은 낮은 차원이지만, 필수적으로 1차원인 것은 아니며, 즉, 상기 맵핑은 다수의 셀에 대해 수행될수 있고 단일 셀에 대해서만 수행될 필요는 없다. 상기 비전단사 맵핑은 2의 거듭제곱이 아닌 셀에서의 다수의 전압레벨을 이용하는 것을 허용한다. 상기 비전단사 맵핑은 또한 프로그래밍된 상태 또는 셀의 전압레벨에 대한 불균일한 확률을 감소시키는 것을 허용한다. 상기 추가된 자유도는 플래시 메모리 디바이스의 특성을 최적화하는 데에 사용될 수 있다.
f를 본 발명에 따라 사용되는 비전단사 맵핑 함수라고 하면, f는 길이 k 바이너리 시퀀스로부터 길이 m q-ary로의 시퀀스 맵핑, 즉 f: 2k → qm 이다. f는 비전단사이기 때문에, 2k≠ qm이다. 따라서 f가 일대일이 아니라면(즉, 전사라면) 2k>qm이고, f가 전사가 아니라면(즉, 일대일이라면) 2k<qm이다. 우리는 여기서 길이 m q-ary 시퀀스를 구성이라고 한다. 구성은 q 상태로 m 셀에 저장되거나 또는 프로그래밍된다. 우리는 여기서 f에 의해 맵핑되는 구성에 대해 적합한 구성이라고 한다.
하기의 논의에서, 우리는 하나의 상태에서 다른 상태로의 원하지 않는 변환의 확률을 측정하는 것을 사용할 필요가 있다. 플래시 메모리 셀에서, 일반적으로 상기 2개의 상태의 임계 전압 범위로 함께 더 접근할수록, 상기 2 상태 사이의 변환의 가능성은 더 높아지는 경우가 있다. 따라서, "인접한 상태"라는 용어는 본문에서 임계전압 축상에 인접한 상태를 가리키는 데에 사용된다. 즉, 2 개의 상태는, 그의 임계전압이 그들 2 개 상태의 임계전압 사이에 놓인 셀의 다른 상태가 없다면, 그리고 다른 상태가 없는 경우에만 서로 인접한다. 상기 정의는 또한 우리가 S1이 S2에 인접하다면, S2는 S1에 인접하다는 반사관계가 되는 인접성을 취하는 것을 의미한다.
상기 논의에서 상기 플래시 메모리 셀은 "도전성 플로팅 게이트" 형이라고 가정하고, 여기서 셀의 모든 상태는 자신의 임계 전압 레벨에서만 상이하다는 것에 유의하라. 비도전성 플로팅 게이트를 이용하는 플래시 메모리 기술이 있으며, 그 예로는 이스라엘 네타냐의 Saifun Semiconductors의 NROM 메모리와, 미국 캘리포니아주 서니베일의 Spansion Inc.의 MirrorBit 메모리가 있다. 이러한 플래시 메모리에서, 셀의 상태는, 게이트의 다중 장소에 상주하는 전기 전하에 의해 야기되는, 함께 셀의 상태를 나타내는 임계 전압의 다중(일반적으로 2개의) 값의 조합에 대응한다. 본 발명의 목적을 위해, 이러한 플래시 셀은 각각 자신의 "인접한 상태"의 개념으로 개별 임계전압을 정의하는 각각의 전기 전하를 가진 개별 다수의 셀로서 간주된다. 유사하게, 예를 들면 각각의 전하가 4 개의 상이한 상태로 들어갈 수 있는(따라서, 하나의 셀에 4 비트의 스토리지를 지원하는), 게이트의 2 개의 대향하는 에지에 2 개의 전기 전하를 가지는 NROM 셀이 본 발명의 목적에 대해, 각각이 2 비트를 저장할 수 있는 2 개의 셀과 등가인 것으로 간주된다.
2 개의 구성 Q1 및 Q2는 상기 2 개의 구성이 단일 셀의 상태에서만 상이하고 상기 셀의 2 개의 상이한 상태가 인접하다면 인접한 구성이라고 한다. 즉, 상기 2 개의 구성이 i번째 셀의 상태에서만 상이하여, 하나의 구성에서는 상기 i번째 셀의 상태가 S1이고, 다른 구성에서는 상기 i번째 셀의 상태는 S2이고, 상기 상태 S2는 상태 S1에 인접하도록 한다면, 상기 2 개의 구성은 인접하다.
임의의 2개의 적절한 인접한 구성 Q1 및 Q2에 대해, 바이너리 시퀀스 f -1(Q1)과 f -1(Q2 )가 단일 비트에서만 상이하다면 일대일 매핑 f는 일반화된 그레이 맵핑이라고 한다.
본 발명의 일부 실시예에서, 일반화된 그레이 맵핑은 비트 오류 율을 최소화하기 때문에 컨트롤러에서 일반화된 그레이 맵핑을 이용하는 것이 바람직하다. 플래시 메모리의 셀의 상태에서 가능한 변환은 높은 확률로 ECC에 의해 보정될 수 있는 작은 수의 오류 비트를 야기한다.
본 발명의 일 실시예에 따르면, 상기 컨트롤러는 일대일이 아닌 맵핑을 채용한다. 예상되는 비트 오류율을 최소화하는 맵핑을 이용하는 것이 바람직하다. 적절한 ECC를 가지고 이러한 비전단사 맵핑을 조합함으로써, 플래시 디바이스의 비용 대 신뢰성 대 성능의 상충을 최적화할 수 있다.
본 발명의 또다른 실시예에 따르면, 상기 컨트롤러는 전사가 아닌 일반화된 그레이 맵핑을 채용한다. 적절한 ECC를 가지고 이러한 비전단사 맵핑을 조합함으로써, 플래시 디바이스의 비용 대 신뢰성 대 성능의 상충을 최적화할 수 있다.
본 발명의 또다른 실시예에 따르면, 상기 컨트롤러는 일대일도 아니고 전사도 아닌 맵핑을 채용한다. 적절한 ECC를 가지고 이러한 비전단사 맵핑을 조합함으로써, 플래시 메모리 디바이스의 비용 대 신뢰성 대 성능의 상충을 최적화할 수 있다.
종래 기술의 컨트롤러는 1차원 전단사 맵퍼, 즉, 단일 셀의 모든 가능한 전압 레벨로의 바이너리 시퀀스의 일대일 맵핑을 이용하는 맵퍼를 이용한다. 따라서, 종래 기술의 컨트롤러는 2의 거듭제곱인 다수의 프로그래밍 전압 레벨만을 이용할 수 있다. 추가로, 종래 기술의 컨트롤러는 랜덤 데이터가 플래시 메모리로 기록될 때 셀 전압 레벨에 대해 동일한 확률을 채용한다. 즉, 플래시 메모리로 기록된 각 정보 비트가 0 또는 1이 될 확률이 동일하다고 가정하면, 플래시 컨트롤러에 의한 플래시 셀에서의 모든 전압 레벨을 프로그래밍할 확률은 거의 동일하게 된다.
종래 기술의 컨트롤러와 달리, 본 발명의 컨트롤러는 비전단사 맵퍼, 즉 그의 맵핑이 일대일이나 전사가 아니고, 또 일대일도 아니고 전사도 아닌 맵퍼이다. 또한, 상기 맵핑은 낮은 차원이지만, 반드시 1차원일 필요는 없고, 즉, 맵핑은 다수의 셀에 대해 수행될 수 있고 단일 셀에 대해서만 수행되는 것은 아니다. 상기 비전단사 맵핑은 2의 거듭제곱이 아닌 셀에서의 다수의 전압 레벨을 이용하는 것을 허용한다. 상기 비전단사 맵핑은 또한 프로그래밍된 상태 또는 셀의 전압 레벨에 대해 동일하지 않은 확률을 유도하는 것을 허용한다. 이러한 추가된 자유도는 플래시 메모리 디바이스의 특성을 최적화하는 데에 사용될 수 있다.
전사가 아닌 맵핑은 또한 Park '550에서 또한 사용된다. 그러나 Park '550에서 사용된 맵핑은 일반화된 그레이 맵핑이 아니다.
따라서, 본 발명에 따라, 복수의 입력 비트를 저장하는 방법으로서, (a) 상기 입력 비트를 다수대일 맵핑을 이용하여 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 단계; 및 (b) 상기 메모리 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍하는 단계;를 포함하는 방법이 제공된다.
또한, 본 발명에 따라, 복수의 입력 비트를 저장하는 방법으로서, (a) 상기 입력 비트를 다수대일 맵핑을 이용하여 복수의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 단계; 및 (b) 상기 메모리 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍하는 단계;를 포함하는 방법이 제공된다.
또한, 본 발명에 따라, 복수의 입력 비트를 저장하는 방법으로서, (a) (ⅰ) 안으로의(into) 맵핑 및 (ⅱ) 일반화된 그레이 맵핑;을 이용하여 입력 비트를 적어도 하나의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 단계; 및 (b) 상기 적어도 하나의 메모리 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍하는 단계;를 포함하는 방법이 제공된다.
또한, 본 발명에 따라, (a) 셀; 및 (b) (ⅰ) 다수대일의 맵핑을 이용하여 상기 비트를 셀의 대응하는 프로그래밍된 상태로 맵핑하고 및 (ⅱ) 상기 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍함;으로써 상기 셀에 복수의 비트를 저장하도록 동작하는 컨트롤러;를 포함하는 메모리 디바이스가 제공된다.
또한, 본 발명에 따라, (a) 셀을 포함하는 메모리 디바이스; 및 (b) (ⅰ) 다수대일의 맵핑을 이용하여 상기 비트를 셀의 대응하는 프로그래밍된 상태로 맵핑하고 및 (ⅱ) 상기 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍하도록 동작하는 프로세서;를 포함하는 복수의 비트를 저장하기 위한 시스템이 제공된다.
또한, 본 발명에 따라, (a) 복수의 셀; 및 (b) (ⅰ) 다수대일의 맵핑을 이용하여 상기 비트를 셀의 대응하는 프로그래밍된 상태로 맵핑하고 및 (ⅱ) 상기 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍함;으로써 상기 셀에 복수의 비트를 저장하도록 동작하는 컨트롤러;를 포함하는 메모리 디바이스가 제공된다.
또한, 본 발명에 따라, (a) 복수의 셀을 포함하는 메모리 디바이스; 및 (b) (ⅰ) 다수대일의 맵핑을 이용하여 상기 비트를 셀의 대응하는 프로그래밍된 상태로 맵핑하고 및 (ⅱ) 상기 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍하도록 동작하는 프로세서;를 포함하는 복수의 비트를 저장하기 위한 시스템이 제공된다.
또한, 본 발명에 따라, (a) 적어도 하나의 셀; 및 (b) (ⅰ) (A) 안으로의 맵핑 및 (B) 일반화된 그레이 맵핑을 이용하여 상기 비트를 적어도 하나의 셀의 대응하는 프로그래밍된 상태로 맵핑하고 및 (ⅱ) 상기 적어도 하나의 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍함;으로써 상기 적어도 하나의 셀에 복수의 비트를 저장하도록 동작하는 컨트롤러;를 포함하는 메모리 디바이스가 제공된다.
또한, 본 발명에 따라, (a) 적어도 하나의 셀을 포함하는 메모리 디바이스; 및 (b) (ⅰ) (A) 안으로의 맵핑 및 (B) 일반화된 그레이 맵핑을 이용하여 상기 비트를 적어도 하나의 셀의 대응하는 프로그래밍된 상태로 맵핑하고 및 (ⅱ) 상기 적어도 하나의 셀을 대응하는 프로그래밍된 상태에 대해 프로그래밍하도록 동작하는 프로세서;를 포함하는 복수의 비트를 저장하기 위한 시스템이 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 방법으로서, (a) 메모리 셀을 포함하는 메모리 디바이스를 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하도록 설정하는 단계; (b) 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하는 단계; 및 (c) 상기 메모리 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍하는 단계;를 포함하는 방법이 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 방법으로서, (a) 복수의 메모리 셀을 포함하는 메모리 디바이스를 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하도록 설정하는 단계; (b) 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하는 단계; 및 (c) 상기 메모리 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍하는 단계;를 포함하는 방법이 제공된다.
또한 본 발명에 따라, 복수의 비트 각각이 상이한 각각의 바이너리 정수를 나타내는 2개의 복수의 비트를 저장하는 방법으로서, (a) 복수의 비트의 각각을 각각의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 단계; (b) 각각의 메모리 셀을 대응하는 프로그래밍된 상태로 각각 프로그래밍하는 단계로서, 상기 프로그래밍된 상태들은 동일한 단계;를 포함하는 방법이 제공된다.
또한 본 발명에 따라, 복수의 비트 각각이 상이한 각각의 바이너리 정수를 나타내는 2개의 복수의 비트를 저장하는 방법으로서, (a) 복수의 비트의 각각을 각각의 복수의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 단계; 및 (b) 각각의 복수의 메모리 셀을 대응하는 프로그래밍된 상태로 각각 프로그래밍하는 단계로서, 상기 프로그래밍된 상태들은 동일한 단계;를 포함하는 방법이 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 방법으로서, (a) 적어도 하나의 메모리 셀을 포함하는 메모리 디바이스를 상기 적어도 하나의 메모리 셀을 M>2N의 프로그래밍된 상태로 선택적으로 배치하도록 설정하는 단계; (b) 일반화된 그레이 맵핑에 따라 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하는 단계; 및 (c) 상기 적어도 하나의 메모리 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍하는 단계로서, 상기 프로그래밍된 상태중 적어도 하나는 상기 선택에서 배제되는 단계;를 포함하는 방법이 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 메모리 디바이스로서, (a) 셀; 및 (b) (ⅰ) 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하고; 및 (ⅱ) (A) 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하고 및 (B) 상기 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍함으로써 셀에 상기 비트를 저장하도록; 동작하는 컨트롤러를 포함하는 메모리 디바이스가 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 시스템으로서, (a) 셀을 포함하는 메모리 디바이스; 및 (b) (ⅰ) 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하고; 및 (ⅱ) (A) 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하고 및 (B) 상기 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍함으로써 셀에 상기 비트를 저장하도록; 동작하는 프로세서를 포함하는 시스템이 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 메모리 디바이스로서, (a) 복수의 셀; 및 (b) (ⅰ) 상기 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하고; 및 (ⅱ) (A) 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하고 및 (B) 상기 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍함으로써 셀에 상기 비트를 저장하도록; 동작하는 컨트롤러를 포함하는 메모리 디바이스가 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 시스템으로서, (a) 복수의 셀을 포함하는 메모리 디바이스; 및 (b) (ⅰ) 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하고; 및 (ⅱ) (A) 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하고 및 (B) 상기 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍함으로써 셀에 상기 비트를 저장하도록; 동작하는 프로세서를 포함하는 시스템이 제공된다.
또한 본 발명에 따라, 메모리 디바이스로서, (a) 2개의 셀; 및 (b) (ⅰ) 복수의 비트 각각을 상기 셀들 중 각각의 하나의 대응하는 프로그래밍된 상태로 각각 맵핑하고; 및 (ⅱ) 복수의 비트 각각이 상이한 각각의 바이너리 상수를 나타내고,상기 프로그래밍된 상태들은 동일한 것인, 각각의 셀을 대응하는 프로그래밍된 상태로 프로그래밍함으로써 2 개의 복수의 비트를 저장하도록 동작하는 컨트롤러;를 포함하는 메모리 디바이스가 제공된다.
또한 본 발명에 따라, 각각의 복수의 비트가 상이한 각각의 바이너리 정수를 나타내는 2개의 복수의 비트를 저장하는 시스템으로서, (a) 2개의 셀을 포함하는 메모리 디바이스; 및 (b) (ⅰ) 복수의 비트 각각을 상기 셀들 중 각각의 하나의 대응하는 프로그래밍된 상태로 맵핑하고; 및 (ⅱ) 각각의 셀을 대응하는 프로그래밍된 상태로 각각 프로그래밍하도록 동작하고, 여기서 상기 프로그래밍된 상태들은 동일한 것인 프로세서;를 포함하는 시스템이 제공된다.
또한 본 발명에 따라, 메모리 디바이스로서, (a) 2개의 복수의 셀; 및 (b) (ⅰ) 복수의 비트 각각을 상기 복수의 셀들 중 각각의 하나의 대응하는 프로그래밍된 상태로 맵핑하고; 및 (ⅱ) 각각의 복수의 셀을 대응하는 프로그래밍된 상태로 프로그래밍함으로써 2개의 복수의 비트를 저장하도록 동작하는 컨트롤러를 포함하고, 여기서 각각의 복수의 비트는 상이한 각각의 바이너리 정수를 나타내고, 상기 프로그래밍된 상태들은 동일한 것을 특징으로 하는 메모리 디바이스가 제공된다.
또한 본 발명에 따라, 각각의 복수의 비트가 상이한 각각의 바이너리 정수를 나타내는 2개의 복수의 비트를 저장하는 시스템으로서, (a) 2개의 복수의 셀을 포함하는 메모리 디바이스; 및 (b) (ⅰ) 복수의 비트 각각을 상기 복수의 셀들 중 각각의 하나의 대응하는 프로그래밍된 상태로 맵핑하고; 및 (ⅱ) 각각의 복수의 셀을 대응하는 프로그래밍된 상태로 프로그래밍하도록 동작하고, 여기서 상기 프로그래밍된 상태들은 동일한 것인 프로세서;를 포함하는 시스템이 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 메모리 디바이스로서, (a) 적어도 하나의 셀; 및 (b) (ⅰ) 상기 적어도 하나의 셀을 M>2N의 프로그래밍된 상태로 선택적으로 배치하고, 및 (ⅱ) 일반화된 그레이 맵핑에 따라 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하고, 및 (ⅲ) 상기 적어도 하나의 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍하도록; 동작하는 컨트롤러;를 포함하고, 여기서 상기 프로그래밍된 상태 중 적어도 하나는 선택에서 배제되는 메모리 디바이스가 제공된다.
또한 본 발명에 따라, N>1 비트를 저장하는 시스템으로서, (a) 적어도 하나의 셀을 포함하는 메모리 디바이스; 및 (b) (ⅰ) 상기 적어도 하나의 셀을 M>2N의 프로그래밍된 상태로 선택적으로 배치하고, 및 (ⅱ) 일반화된 그레이 맵핑에 따라 상기 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하고 및 (ⅲ) 상기 적어도 하나의 셀을 상기 선택된 프로그래밍된 상태로 프로그래밍하도록; 동작하는 프로세서;를 포함하고, 여기서 상기 프로그래밍된 상태 중 적어도 하나는 선택에서 배제되는 시스템이 제공된다.
또한, 본 발명에 따라, 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 복수의 입력 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 판독가능한 코드는, (a) 다수대일의 맵핑을 이용하여, 상기 입력 비트를 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 프로그램 코드; 및 (b) 상기 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하는 프로그램 코드;를 포함하는 컴퓨터 판독가능한 매체가 제공된다.
또한, 본 발명에 따라, 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 복수의 입력 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 판독가능한 코드는, (a) 다수대일의 맵핑을 이용하여, 상기 입력 비트를 복수의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 프로그램 코드; 및 (b) 상기 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하는 프로그램 코드;를 포함하는 컴퓨터 판독가능한 매체가 제공된다.
또한, 본 발명에 따라, 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 복수의 입력 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 판독가능한 코드는, (a) (ⅰ) 안으로의 맵핑, 및 (ⅱ) 일반화된 그레이 맵핑인, 맵핑을 이용하여, 상기 입력 비트를 적어도 하나의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 프로그램 코드; 및 (b) 상기 적어도 하나의 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하는 프로그램 코드;를 포함하는 컴퓨터 판독가능한 매체가 제공된다.
또한, 본 발명에 따라, 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 메모리 셀을 포함하며 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하도록 구성된 메모리 디바이스에 N>1 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 판독가능한 코드는, (a) 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하는 프로그램 코드; 및 (b) 상기 메모리 셀을 선택된 프로그래밍된 상태로 프로그래밍하는 프로그램 코드;를 포함하는 컴퓨터 판독가능한 매체가 제공된다.
또한, 본 발명에 따라, 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 복수의 메모리 셀을 포함하며 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하도록 구성된 메모리 디바이스에 N>1 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 판독가능한 코드는, (a) 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하는 프로그램 코드; 및 (b) 상기 메모리 셀을 선택된 프로그래밍된 상태로 프로그래밍하는 프로그램 코드;를 포함하는 컴퓨터 판독가능한 매체가 제공된다.
또한, 본 발명에 따라, 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 각각의 복수의 비트가 상이한 각각의 바이너리 수를 나타내는 2 개의 복수의 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 판독가능한 코드는, (a) 각각의 복수의 비트를 각각의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 프로그램 코드; 및 (b) 각각의 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하고, 여기서 상기 프로그래밍된 상태들은 동일한 것인 프로그램 코드;를 포함하는 컴퓨터 판독가능한 매체가 제공된다.
또한, 본 발명에 따라, 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 각각의 복수의 비트가 상이한 각각의 바이너리 수를 나타내는 2 개의 복수의 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 판독가능한 코드는, (a) 각각의 복수의 비트를 각각의 복수의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 프로그램 코드; 및 (b) 각각의 복수의 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하고, 여기서 상기 프로그래밍된 상태들은 동일한 것인 프로그램 코드;를 포함하는 컴퓨터 판독가능한 매체가 제공된다.
또한, 본 발명에 따라, 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 적어도 하나의 메모리 셀을 포함하며 상기 적어도 하나의 메모리 셀을 M>2N의 프로그래밍된 상태로 선택적으로 배치하도록 구성된 메모리 디바이스에 N>1 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 판독가능한 코드는, (a) 일반화된 그레이 맵핑을 이용하여 비트를 나타내기 위해 상기 프로그래밍된 상태중 하나를 선택하는 프로그램 코드; 및 (b) 상기 적어도 하나의 메모리 셀을 선택된 프로그래밍된 상태로 프로그래밍하고, 여기서 상기 프로그래밍된 상태 중 적어도 하나는 선택에서 배제되는 프로그램 코드;를 포함하는 컴퓨터 판독가능한 매체가 제공된다.
본 발명의 제 1 기본 방법은 복수의 입력 비트를 저장하는 방법이다. 다수대일 맵핑은 메모리 셀의 대응하는 프로그래밍된 상태에 상기 입력 비트를 맵핑하기 위해 사용된다. 그런 다음 상기 메모리 셀이 상기 대응하는 프로그래밍된 상태에 대해 프로그래밍된다. 역사적 이유로, 플래시 메모리에 데이터를 기록하는 것을 셀을 "프로그래밍"한다고 한다. 본 발명의 주된 의도한 애플리케이션은 플래시 메모리에 대한 것이고, 하나 이상의 셀을 "프로그래밍"한다는 용어는, 본 발명의 범위가 플래시 메모리 뿐만 아니라 전체적으로 메모리를 포함한다고 하더라도, 본문에서 데이터를 셀에 기록한다는 것을 의미하도록 사용된다.
바람직하게는, 상기 맵핑은 상기 입력 비트를 하나 이상의 코드워드로서 인코딩하고 그런다음 상기 코드워드를 상기 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 것을 포함하는 단계에 의해 수행된다. 상기 인코딩은 규칙적 또는 불규칙적일 수 있다.
바람직하게는, 상기 메모리 셀은 플래시 메모리 셀이고, 상기 프로그래밍된 상태는 상기 셀의 임계전압 상태, 즉, 상기 셀은 상기 셀의 임계전압을 상기 셀에 대해 정의된 임계전압 범위의 세트중 하나에 있도록 설정함으로써 프로그래밍된다.
바람직하게는, 상기 방법은 또한 상기 메모리 셀을 판독하는 것을 포함하고, 그에 의해 판독 상태의 값을 획득하고, 그런다음 상기 판독된 상태 값을 복수의 출력 비트로 변환한다. 상기 판독된 상태값은 상기 프로그래밍된 상태의 값과 반드시 동일할 필요는 없다는 것에 유의하라. 상기 판독된 상태의 값을 출력 비트로 변환하는 가장 바람직한 방법 중 하나는 최대 우도 디코딩(maximum likelihood decoding)을 포함한다. 상기 판독된 상태 값을 출력 비트로 변환하는 또다른 가장 바람직한 방법은 상기 판독된 상태 값을 복수의 소프트 비트 측정치로 맵핑하고 그런다음 상기 소프트 비트 측정치를 디코딩하는 것을 포함한다.
또는, 상기 맵핑은 복수의 입력 코드워드로서 상기 입력 비트를 인코딩하는 것을 포함한다. 상기 판독된 상태 값의 출력비트로의 후속하는 변환은 상기 판독된 상태값을, 각각의 코드워드를 상기 입력 코드워드 중 하나에 고유하게 대응하면서, 복수의 출력 코드워드로 맵핑하는 것을 포함한다. 즉, 입력 코드워드와 출력 코드워드 사이에 1:1 대응이 있다. 그런다음, 상기 출력 워드는, 적어도 하나의 선행하는 코드워드의 디코딩의 결과에 적어도 부분적으로 기초하는 제 1 출력 코드워드에 후속하는 각각의 출력 코드워드의 디코딩과 함께, 연속하여 디코딩된다. 상기 가장 바람직한 실시예의 예가 부록 B에서 하기에 기술된다.
본 발명의 제 2 기본적인 방법은 복수의 입력 비트를 저장하는 방법이다. 다수대일의 맵핑은 상기 입력 비트를 복수의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 데에 사용된다. 상기 프로그래밍된 상태는 함께 고려된 셀의 집합적 상태라는 것에 유의하라. 그런다음, 상기 메모리 셀은 상기 대응하는 프로그래밍된 상태로 프로그래밍된다.
바람직하게는, 상기 맵핑은 하나 이상의 코드워드로서 상기 입력 비트를 인코딩하고, 그런다음 상기 코드워드를 상기 메모리 셀의 대응하는 프로그래밍된 상태에 맵핑하는 것을 포함하는 단계에 의해 수행된다. 상기 인코딩은 규칙적인 또는 불규칙적일 수 있다.
바람직하게는, 상기 메모리 셀은 플래시 메모리 셀이고, 상기 프로그래밍된 상태는 상기 셀의 임계전압 상태이고, 즉, 상기 셀은 상기 셀의 임계전압을 상기 셀에 대해 정의된 집합적 임계전압 범위의 세트중 하나에 있도록 설정함으로써 프로그래밍된다.
바람직하게는, 상기 방법은 또한 상기 메모리 셀을 판독하고, 그에 의해 판독 상태의 값을 획득하고, 그런다음 상기 판독된 상태 값을 복수의 출력 비트로 변환하는 것을 포함한다. 상기 판독된 상태의 값을 출력 비트로 변환하는 가장 바람직한 방법 중 하나는 최대 우도 디코딩을 포함한다. 상기 판독된 상태 값을 출력 비트로 변환하는 또다른 가장 바람직한 방법은 상기 판독된 상태 값을 복수의 소프트 비트 측정치로 맵핑하고 그런다음 상기 소프트 비트 측정치를 디코딩하는 것을 포함한다.
또는, 상기 맵핑은 복수의 입력 코드워드로서 상기 입력 비트를 인코딩하는 것을 포함한다. 상기 판독된 상태값의 출력비트로의 후속하는 변환은 상기 판독된 상태값을, 각각의 출력 코드워드를 상기 입력 코드워드 중 하나에 고유하게 대응시키면서, 복수의 출력 코드워드로 맵핑하는 것을 포함한다. 즉, 입력 코드워드와 출력 코드워드 사이에 1:1 대응이 있다. 그런다음, 상기 출력 워드는, 적어도 하나의 선행하는 코드워드의 디코딩의 결과에 적어도 부분적으로 기초하는 제 1 출력 코드워드에 후속하는 각각의 출력 코드워드의 디코딩과 함께, 연속하여 디코딩된다. 상기 가장 바람직한 실시예의 예가 부록 E에서 하기에 기술된다.
본 발명의 제 3 기본적인 방법은 복수의 입력 비트를 저장하는 방법이다. 상기 입력 비트는, 안으로의 맵핑이자 일반화된 그레이 맵핑인 맵핑을 이용하여, 하나 이상의 셀(바람직하게는 하니 이상의 메모리 셀)의 대응하는 프로그래밍된 상태로 맵핑된다. 상기 맵핑이 "안으로"라는 것은 상기 맵핑이 일대일이지만 상기 가능한 프로그래밍된 상태 중 하나 이상이 맵핑에서 제외되어 남는다는 것을 의미한다. 그런다음, 상기 메모리 셀(들)은 대응하는 프로그래밍된 상태로 프로그래밍된다.
바람직하게는, 상기 메모리 셀(들)은 플래시 메모리 셀(들)이고, 상기 프로그래밍된 상태는 상기 셀(들)의 임계전압 상태이다.
바람직하게는, 상기 방법은 또한 상기 메모리 셀을 판독하고, 그에 의해 판독 상태의 값을 획득하고, 그런다음 상기 판독된 상태 값을 복수의 출력 비트로 변환하는 것을 포함한다. 상기 판독된 상태의 값을 출력 비트로 변환하는 가장 바람직한 방법 중 하나는 최대 우도 디코딩을 포함한다. 상기 판독된 상태 값을 출력 비트로 변환하는 또다른 가장 바람직한 방법은 상기 판독된 상태 값을 복수의 소프트 비트 측정치로 맵핑하고 그런다음 상기 소프트 비트 측정치를 디코딩하는 것을 포함한다.
또는, 상기 맵핑은 복수의 입력 코드워드로서 상기 입력 비트를 인코딩하는 것을 포함한다. 상기 판독된 상태값의 출력비트로의 후속하는 변환은 상기 판독된 상태값을, 각각의 출력 코드워드를 상기 입력 코드워드 중 하나에 고유하게 대응시키면서, 복수의 출력 코드워드로 맵핑하는 것을 포함한다. 즉, 입력 코드워드와 출력 코드워드 사이에 1:1 대응이 있다. 그런다음, 상기 출력 워드는, 적어도 하나의 선행하는 코드워드의 디코딩의 결과에 적어도 부분적으로 기초하는 제 1 출력 코드워드에 후속하는 각각의 출력 코드워드의 디코딩과 함께, 연속하여 디코딩된다. 상기 가장 바람직한 실시예의 예가 부록 E에서 하기에 기술된다.
본 발명의 제 4 방법은 N>1 비트를 저장하는 방법이다. 메모리 셀을 포함하는 메모리 디바이스는 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하도록 구성된다. 상기 프로그래밍된 상태 중 하나는 상기 비트를 나타내도록 선택되고, 상기 메모리 셀은 상기 선택된 프로그래밍된 상태로 프로그래밍된다.
본 발명의 제 5 방법은 N>1 비트를 저장하는 방법이다. 복수의 메모리 셀을 포함하는 메모리 디바이스는 상기 메모리 셀을 M<2N의 프로그래밍된 상태로 선택적으로 배치하도록 구성된다. 상기 프로그래밍된 상태 중 하나는 상기 비트를 나타내도록 선택되고, 상기 메모리 셀은 상기 선택된 프로그래밍된 상태로 프로그래밍된다.
본 발명의 제 6 방법은 2 개의 상이한 각각의 바이너리 정수를 나타내는 2 개의 복수의 비트를 저장하는 방법이다. 각각의 복수의 비트는 각각의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑되고, 각각의 메모리 셀은 상기 대응하는 프로그래밍된 상태로 프로그래밍된다. 상기 2 개의 프로그래밍된 상태는 동일하다. 예를 들면, 하기의 표 2에서, 정수(3)의 바이너리 표시인 비트 복수(11)와 정수(2)의 바이너리 표시인 비트 복수(10) 모두가 전압 레벨(2)로 맵핑된다.
본 발명의 제 7 방법은 2 개의 상이한 각각의 바이너리 정수를 나타내는 2 개의 복수의 비트를 저장하는 방법이다. 각각의 복수의 비트는 각각의 복수의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑되고, 각각의 복수의 메모리 셀은 상기 대응하는 프로그래밍된 상태로 프로그래밍된다. 상기 2 개의 프로그래밍된 상태는 동일하다.
본 발명의 제 8 방법은 N>1 비트를 저장하는 방법이다. 하나 이상의 메모리 셀을 포함하는 메모리 디바이스는 상기 메모리 셀(들)을 M>2N의 프로그래밍된 상태로 선택적으로 배치하도록 구성된다. 상기 프로그래밍된 상태 중 하나는 일반화된 그레이 맵핑에 따라 상기 비트를 나타내도록 선택된다. 상기 메모리 셀은 상기 선택된 프로그래밍된 상태로 프로그래밍된다. 상기 프로그래밍된 상태 중 적어도 하나는 상기 선택에서 배제된다. 예를 들면, 하기의 표 6에서, "1, 1" 전압 레벨은 선택에서 배제된다.
본 발명의 범위는 또한 상기 방법을 구현하는 메모리 디바이스 및 시스템을 포함한다. 상기 제 6 및 제 7 방법을 구현하는 메모리 디바이스 및 시스템에서, 2 개의 복수의 비트가 순차적으로 저장되면, 상기 동일한 셀(제 6 방법) 또는 동일한 복수의 셀(제 7 방법)이 복수의 비트 모두를 저장하는 데에 사용될 수 있음에 유의하라. 상기 2 개의 복수의 비트가 동시에 저장되면, 상기 2 개의 셀(제 6 방법) 또는 2 개의 복수의 셀(제 7 방법)은 상이하여야만 한다.
본 발명의 범위는 본 발명의 방법을 구현하기 위한 컴퓨터 판독가능한 코드를 그 안에 내장한 컴퓨터 판독가능한 매체를 또한 포함한다.
본 발명은 첨부도면을 참조하여 예시의 방식으로 본문에 기술된다.
도 1은 종래 기술의 MBPC 플래시 메모리 디바이스의 간략화된 블록도이다.
도 2는 도 1의 종래 기술의 MBPC 플래시 메모리 디바이스의 일 변형의 간략 화된 블록도이다.
도 3은 대응하는 용량으로 라벨링된 다양한 임계 전압 분포의 스케치이다.
도 4는 도 2를 도 3의 제 3 임계전압 분포에 특화시킨 것이다.
도 5는 본 발명의 MBPC 플래시 메모리 디바이스의 간략화된 블록도이다.
도 6은 호스트에 결합된 본 발명의 플래시 메모리 디바이스의 고-레벨 블록도이다.
도 7은 본 발명의 데이터 스토리지 시스템의 고-레벨 부분 블록도이다.
도 8은 멀티-레벨 코딩 및 멀티-스테이지 디코딩을 이용하는 플래시 메모리의 간략화된 블록도이다.
본 발명에 따른 플래시 메모리 컨트롤러의 원리 및 동작은 도면과 하기의 설명을 참조하여 더 잘 이해될 것이다.
주어진 플래시 기술과 주어진 요구되는 플래시 신뢰성에 대해, 주어진 플래시 컨트롤러에 의해 주어진 크기의 플래시 메모리에 저장될 수 있는 정보 비트의 수에 대한 보다 상위의 조건, 즉, 플래시 디바이스의 달성가능한 IBPC의 보다 상위의 조건이 있다. 본문에서 플래시 디바이스의 IBPC에 대한 상기의 보다 상위의 조건을 상기 디바이스의 플래시 용량이라고 한다.
주어진 플래시 신뢰성에 대한 플래시 용량은, 상기 플래시 기술의 물리적 모델이 공지된 것이라면, 정보 이론으로부터의 도구를 이용하여 연산될 수 있다. 특히, 셀에서 주어진 전압 레벨이 프로그래밍되었다고 가정하면, 각 전압 레벨을 판 독하는 확률을 알 필요가 있다. 상기 플래시 메모리의 용량을 연산하는 방법이 부록 A에 기술되어 있다. 더구나, 정보 이론은 또한 상기 플래시 용량은 컨트롤러의 복잡도가 제한되지 않는 경우에 달성될 수 있다고 보장한다. 이것은 플래시 데이터를 보호하기 위해 길이를 증가시키는 랜덤 ECC를 이용하여 수행될 수 있다. 상기 플래시 컨트롤러를 이용하는 상기 코드의 인코딩 및 디코딩의 복잡도는 극도로 높다. 그러나, 낮은 인코딩 및 디코딩 복잡도를 가진 실질적인 코딩 기술을 사용함으로써, 플래시 용량을 달성할 수 있다. 이러한 이유로, 다양한 플래시 디바이스의 효율과 최적성을 비교하기 위해 플래시 용량을 사용한다.
정보 이론적인 고려사항에 기초하여, 주어진 플래시 기술과 플래시 신뢰성에 대해 사용되어야하는 전압 프로그래밍 레벨의 최적의 수가 있다는 것을 이해할 수 있다. 또한, 상기 전압 레벨에 대해 사용되어야 하는 최적의 확률 분포가 있다. 상기 전압 레벨의 수와 상기 레벨에 대한 확률 분포에 대해, 플래시 용량이 최대화된다. 따라서, 이러한 플래시 메모리 디바이스에서의 전압 레벨의 수를 이용하는 것은, 상기 전압 레벨의 수를 이용하는 것이 주어진 플래시 신뢰성에 대한 플래시 비용을 최소화하기 때문에, 바람직하다. 대개, 전압 레벨의 최적의 수는 2의 급수가 아니고 상기 전압 레벨에 대한 최적 분포는 균일하지 않다.
또는, 더 많은 전압 레벨의 사용이 플래시 용량에서의 미미한 증가만을 제공하도록 하기 위해, 최소의 전압 레벨의 수가 존재하는 경우가 있을 수 있다. 이 경우, 최소의 전압 레벨의 수를 이용하는 것은 플래시 비용과 플래시 성능에 대한 플래시 신뢰성 사이의 최상의 상충을 제공한다. 즉, 최소의 전압 레벨수를 이용하 는 것은 동일한 플래시 비용과 신뢰성을 유지하면서 플래시 판독/기록 쓰루풋을 최대화시킨다.
예를 들면, 하기의 플래시 메모리의 간략화된 모델을 참조하라: X를 플래시 셀의 프로그래밍된 전압 레벨이라고하고, Y를 상기 플래시 셀의 판독된 전압 레벨이라고 하자. 상기 프로그래밍 및 판독된 전압 레벨은 서로 동일하고 일정하다(시간에 따라 변하지 않음)고 가정한다. 상기 플래시 셀은 1[볼트]의 전압 창으로 제한된다고 가정한다. 또한, Y=X+N이고, 여기서 N은 가산성 백색 가우시안 노이즈(플래시 셀에서의 물리적 프로세스의 모델링)라고 가정한다. 상기 노이즈 N은 기대값
Figure 112008059040303-pct00001
이고 표준편차
Figure 112008059040303-pct00002
로 정상적으로 분산된 확률변수이다. 시간에 따라 변하지 않는 상기 간략화된 플래시 모델하에서, 데이터 보존과 프로그램/삭제 사이클에 대해 의미가 없으며, 따라서 상기 플래시 용량을 신뢰가능한 스토리지, 즉, 무시할 수 있는 비트 오류율을 허용하는 달성 가능한 IBPC에 상위 제한으로 정의한다.
상기 플래시 컨트롤러가 상기 프로그래밍 전압 레벨에 대해 동일한 확률을 채용한다고 가정하면(즉, 셀에서의 각각의 전압 레벨이 플래시에 기록된 정보가 랜덤하다고 주어지도록 거의 동일하게 프로그래밍되는),
· 2 프로그래밍 전압 레벨의 사용은 셀당 0.9946 정보 비트의 플래시 용량(IBPC=0.9946)의 결과를 가져온다.
· 3 프로그래밍 전압 레벨의 사용은 셀당 1.2169 정보 비트의 플래시 용량(IBPC=1.2169)의 결과를 가져온다.
· 4 프로그래밍 전압 레벨의 사용은 셀당 1.1612 정보 비트의 플래시 용량(IBPC=1.1612)의 결과를 가져온다.
도면을 다시 참조하면, 도 3은 대응하는 임계 전압 분포의 스케치이다. 도 3에서의 가로좌표가 임계전압이다. 도 3의 용량이 어떻게 연산되는 지의 상세한 설명은 부록 A를 참조하라.
더 높은 플래시 용량은, 상기 컨트롤러가 전압 레벨에 대해 불균일한 분포를 채용하는 경우에 달성될 수 있다. 상기 간략화된 플래시 메모리의 용량은, 3 프로그래밍 전압 레벨이 사용되고, 중간 전압레벨이, 상기 2개의 외부 전압 레벨이 각각 36%의 확률을 가지고 프로그래밍되는 반면 28%의 확률을 가지고 프로그래밍되는 경우에 최대화 될 수 있다. 이 경우 상기 플래시 용량은 셀당 1.2245 정보 비트(IBPC=1.2245)이다. 이에 대한 직관적인 설명은 상기 중간 프로그래밍 전압 레벨이 외부 전압 레벨에 비해 오류시 판독되는 것(즉, 프로그래밍 레벨과 상이한 판독 레벨에서 판독될)에 비해 약 2 배라는 것이다. 따라서, 중간 레벨의 프로그래밍 확률을 감소시킴으로써, 전압 레벨 오류의 전체 확률을 감소시킨다. 셀 전압 레벨에 대한 불균일한 확률을 채용하기 위해, 플래시 컨트롤러는 일부 잉여 비트를 추가할 필요가 있다. 그러나, 감소된 오류 확률에 기인하여, 상기 컨트롤러는 플래시 메모리에서의 정보의 신뢰할 수 있는 스토리지를 허용하기 위해 더 작은 잉여 비트를 필요로한다. 전반적으로, 총 잉여비트의 수(불균일한 확률을 채용하는 데에 사용되는 것과, 상기 데이터를 오류로부터 보호하는 데에 사용되는 것)가 감소되고, 더 높은 플래시 용량을 가져온다.
간략화된 모델에 대해, 본 발명의 플래시 컨트롤러는 3 전압 레벨을 사용하도록 하고, 상기 전압 레벨에 대해 최적의 확률 분포를 채용할 수 있다. 동일한 확률을 가진 4 전압 레벨을 이용하는 종래 기술의 컨트롤러에 비해 무엇을 얻을 수 있을까?
1. 플래시 비용이 감소됨: 동일한 정보의 양을 저장하기 위해; 플래시 크기는 5.17%까지 감소(IBPC종래기술컨트롤러/IBPC본발명 = 1.1612/1.2245=0.9483)
2. 플래시 성능이 개선됨: 4 대신에 3 프로그래밍 전압 레벨을 이용하여 더 높은 판독/기록 쓰루풋을 가져옴.
도 4는 4 개의 동일한 확률 프로그래밍 전압 레벨을 이용하여 종래 기술의 플래시 메모리 디바이스(10)를 구현하는 것을 도시한다. 플래시 컨트롤러(12)는 하기의 블록을 포함한다:
1. 오류 보정 코드(ECC) 층:
·ECC 인코더(20): 코딩된 비트의 스트림으로 정보 비트의 스트림을 인코딩한다. ECC 율은 코딩된 비트에 대한 정보 비트의 비율이다. 예를 들면, 바이너리 선형 블록 코드에 기초한 ECC는 K정보 비트의 블록을 N코딩된 비트의 블록으로 맵핑하고, 여기서 N>K이다. ECC 율은 R=K/N이다. 도 4에 도시된 예에서, 바이너리 선형 블록 코드가 사용되는 것으로 가정한다.
·ECC 디코더(26): "노이즈" 코딩된 비트 스트림을 디코딩하고 정보 비트 스트림의 측정치를 산출한다. 상기 "노이즈" 코딩된 비트 스트림은 상이한 심볼로 플립된 자신의 원래 심볼의 일부를 가진 원래 코딩된 비트 스트림(또는 바이너리 코드의 경우의 비트)이다. 예를 들면, 바이너리 선형 블록 코드에 대한 디코더(26)는 N 코딩된 비트의 "노이즈" 블록(a.k.a. "노이즈" 코드워드)를 수신하고, 상기 "노이즈" 블록을 디코딩하여, K 정보 비트의 블록의 측정치를 산출한다. 디코더(26)의 개선된 보정 기능은 코딩된 비트의 "소프트" 측정치가 디코더(26)로 제공되고, "소프트" 디코딩이 수행될 때 달성될 수 있다. "소프트" 디코딩은 오류가 있을 수 있는 비트의 확률에 대한 정보가 디코딩 프로세스에서 디코더(26)에 의해 활용될 때 수행될 수 있다. 비트 b의 "소프트" 측정치는 다양한 방식으로 주어질 수 있다. 2 개의 일반적인 방식은: 1) 플래시 메모리로부터 판독된 전압 레벨/초
Figure 112008059040303-pct00003
이 주어진, 1인 비트 b의 아프리오리(a-priori) 확률,
Figure 112008059040303-pct00004
을 제공하는 방식, 2) 플래시 메모리로부터 판독된 전압 레벨/초
Figure 112008059040303-pct00005
이 주어진, 비트 b에 대한 아프리오리 로그 최우비(log likelihood ratio)(LLR),
Figure 112008059040303-pct00006
를 제공하는 방식. 아프리오리 LLR을 연산하는 방법의 설명은 부록 C에 주어진다. 도 4에 도시된 예에서, "소프트" 디코더(26)가 사용되고, 플래시 용량이 그에 따라 연산되는 것으로 가정한다.
2. 맵핑/디맵핑 층:
·맵퍼(22)는: 플래시 셀로 프로그래밍되는 전압 레벨의 스트림으로 코딩된 비트의 스트림을 맵핑한다. 종래 기술에 따라, 맵퍼(22)는 전단사 맵핑 함수, 즉 일대일(단사)이고 전사(전사함수)인 함수를 채용한다. 전단사, 단사, 및 전사의 전형적인 정의에 대해서는 부록 B를 참조하라.
·디맵퍼(24)는: 플래시 셀 어레이(18)로부터 판독된 전압 레벨의 스트림을 비트 스트림 또는 "소프트" 디코더가 사용되는 경우에는 비트의 "소프트" 측정치의 스트림으로 맵핑한다. 그 결과, 디맵퍼(24)는 필수적인 것이 아니다. 다양한 코딩 설계가 사용될 수 있으며, 일부는 디맵퍼로, 일부는 하기에 기술되는 바와 같이 판독 전압 레벨에 직접적으로 동작한다. 도 4에 도시된 예에서, 디맵퍼(24)를 가진 설계와 가지지 않은 설계 모두를 도시한다.
표 1은 비트 시퀀스로부터 도 4의 컨트롤러(12)에 의해 사용되는 전압레벨로의 맵핑을 도시한다.
Figure 112008059040303-pct00007
이론적인 플래시 용량에 도달하기 위해, 최적의 코딩 설계가 사용되어야 한다. 2 개의 이러한 코딩 설계가 있다:
1. 최적 최대-가능도(ML) 디코딩을 가진 단일 레벨 코딩(SLC): 상기 설계에서, 전체 정보 비트 스트림은 단일 코드에 의해 인코딩되고, 최적 ML 디코더를 이용하여 디코딩된다. ML 디코더는 플래시 셀 어레이로부터 판독된 전압 레벨로부터 직접 가장 가능성있는 정보 비트 스트림을 연산한다. 최적 디코더는 대개 높은 디코딩 복잡도를 가져온다. 최적 SLC 설계의 상세한 설명은 부록 D에 제공된다. 최적 SLC 코딩 설계는 디맵퍼(24)를 경유하는 화살표로서 도 4에 표시된다.
2. 멀티-스테이지 디코딩(MSD)을 가진 멀티-레벨 코딩(MLC): 상기 설계에서, 정보 비트 스트림은 다수의 스트림으로 분할되고, 각 비트 스트림은 상이한 코드를 이용하여 인코딩된다. 디코딩은 각 스테이지에서 단일 코딩된 비트 스트림이 상기 디맵퍼에 의해 제공된 "소프트" 비트 측정치에 대해 동작하는 "소프트" 디코더를 이용하여 디코딩되는, 스테이지에서 수행된다. 각 코딩된 비트 스트림의 디코딩 결과는 다음 코딩된 비트 스트림의 "소프트" 비트 측정치를 연산하기 위해 디맵퍼에 의해 사용된다. 최적 MLC/MSD 설계의 상세한 설명은 부록 E에 제공된다.
차선의 디코딩에 기초한 SLC설계를 이용하는 것은 매우 일반적이다. 상기 차선의 디코딩은 플래시 셀 어레이로부터 판독된 전압 레벨에 직접 작용하지 않고, 상기 디맵퍼에 의해 제공된 "소프트" 비트 측정치에 작용하는 것도 아니다. 상기 디맵퍼 측정치는 오직 제 1 오더의 통계치에만 기초하기 때문에, 일부 정보는 유실되고 디코딩은 최적화가 안된다. 그러나, 이러한 설계는 더 낮은 구현 복잡도를 요구하고, 다수의 경우에, 일반화된 그레이 맵핑이 발견되고 사용되면서 무시해도 될 정도의 작은 성능 손실만을 가져오게 되었다. 차선의 SLC 설계의 상세한 설명은 부록 D에서 제공된다. 이러한 차선의 SLC 설계는 도 4에서 플래시 셀 어레이(18)로부터 디맵퍼(24)로 그리고 디맵퍼(24)로부터 ECC 디코더(26)로의 화살표로서 표시된다.
메모리 디바이스의 용량, 즉 달성가능한 플래시 메모리 디바이스 IBPC에 의해 플래시 메모리 디바이스의 비용을 측정한다. 도 4에 도시된 예에서, 최적 코딩 설계에 기초한 종래 기술 플래시 메모리 디바이스의 용량은 1.1612 IBPC(부록 A를 참조)이다. 상기 플래시 용량에 도달하기 위해, 1.1612/2의 비율의 양질의 ECC가 사용되어야 한다.
도 5는 본 발명의 MBPC 플래시 메모리 디바이스(110)의 간략화된 블록도이다. 특히, 플래시 메모리 디바이스(110)는 본 발명에 따라 변형된 도 4의 플래시 메모리 디바이스(10)이다. 플래시 메모리 디바이스(10)와 유사하게, 플래시 메모리 디바이스(110)는 플래시 컨트롤러(112), 및 디바이스(10)로부터 유래한 플래시 셀 어레이(18)를 포함한다. 플래시 컨트롤러(112)는 인코더(114) 및 디코더(116)를 포함한다. 인코더(114)는 디바이스(10)의 ECC 인코더 블록(20)과 본 발명의 맵퍼 블록(122)을 포함한다. 디코더(116)는 본 발명의 디맵퍼 블록(124)과 본 발명의 ECC 디코더 블록(126)을 포함한다. 종래 기술의 맵퍼 블록(22)과는 달리, 본 발명의 맵퍼 블록(122)은 전단사 함수가 아닌 맵핑 함수를 채용한다. 본 발명의 맵핑 함수는 하기에 논의되는 본 발명의 제 1 실시예에서, 일대일(단사)이 아니거나, 또는 본 발명의 제 2 실시예에서 전사(전사함수)가 아니다. 이것은 임의의 수의 전압 레벨(반드시 2의 급수일 필요는 없는)과 프로그래밍 전압 레벨에 대한 임의의 확률분포를 이용하여 플래시 메모리 디바이스를 설계하는 것을 허용한다. 상기의 플래시 메모리 디바이스(110) 설계에서의 추가적인 자유도는 플래시 비용, 신뢰성 및 성능 사이의 더 나은 상충성을 제공하는 보다 효율적인 플래시 메모리 디바이스를 설계하는 것을 허용한다. 더구나, 하기에 논의되는 본 발명의 제 2 실시예에서, 일반화된 그레이 맵핑이 사용된다. 이것은 ECC 디코더(126)의 입력시 예측된 비트 오류율을 감소시킨다. 플래시 메모리 디바이스(110)에서 무시할 정도의 미세한 효율의 손실, 즉 플래시 메모리 디바이스(110)의 용량에서의 무시할 정도의 미세한 감소를 가지는 차선의 SLC 코딩 설계를 이용하여 컨트롤러(112)의 매우 간단한 구현을 허용한다. 하기에 논의되는 본 발명의 제 1 실시예에서, 또한 ECC 디코더(126)의 입력시 예측되는 비트 오류율을 최소화하는 맵핑을 이용한다.
표 2 및 3은 오직 3개의 프로그래밍 레벨만이 사용되는 본 발명의 제 1 실시예의 인스턴스의 맵핑 함수와 소프트 디맵핑을 도시한다. 상기 맵핑 함수는 일대일이 아니다(단사가 아님). ECC의 이용에 기인하여, 상기 맵핑이 일대일이 아니더라도 정보 비트를 복구할 수 있다. 예를 들면, "소프트" 디맵퍼 및 "소프트" 디코더를 가진 SLC 코딩 설계가 사용되면, 표 3에 도시된 바와 같이, 전압 레벨 2가 판독될 때, 디맵퍼(124)는 전압 레벨 2로 맵핑되는 비트의 아프리오리 측정치를 제공한다. 상기 제 1 비트는,
Figure 112008059040303-pct00008
에 의해 표시되는, 높은 확률을 가진 1이다. 제 2 비트에 대해, 1 또는 0이 되는 거의 동일한 확률이 있다. 실제로, 제 2 전압 레벨을 판독한다면 상기 프로그래밍된 레벨이 2 또는 0이 되는 것 보다 2 또는 1이 되는 것이 근소하게 더 가능성있기 때문에 제 2 비트가 1일 가능성이 근소하게 더 높다. 즉 다음과 같다.
Figure 112008059040303-pct00009
플래시 모델에 기초하여 정확한 확률을 연산하면 다음을 얻는다:
Figure 112008059040303-pct00010
LLR이 어떻게 연산되는지에 대한 보다 상세한 설명은 부록 C를 참조하라. 상기 소프트 디코더는 모든 이러한 "소프트" 비트 측정치를 고려하여, 플래시 어레이(18)에 저장된 가장 가능성 높은 정보 비트 스트림으로 리턴한다.
표 2의 맵핑은 3개의 프로그래밍 전압 레벨에 대해 확률 분포[0.25 0.25 0.5]를 가져온다. 표 2의 맵핑 함수와 표 3의 소프트 디맵핑을 사용하고 최적 코딩 설계에 기초한 플래시 메모리 디바이스(110)의 용량은 1.166 IBPC이다(부록 A를 참조). 이러한 플래시 용량을 달성하기 위해, 1.166/2=0.583의 비율의 양질의 ECC가 사용되어야 한다. 상기 용량은 도 4의 플래시 메모리 디바이스(10)의 용량과 매우 유사하다. 그러나, 플래시 메모리 디바이스(110)의 이러한 인스턴스는 종래 기술의 플래시 메모리 디바이스(10)의 4 전압 레벨에 비해 3 전압 레벨만을 사용하여, 더 높은 판독/기록 쓰루풋을 가져온다.
Figure 112008059040303-pct00011
Figure 112008059040303-pct00012
표 4 및 5는 3 개의 프로그래밍 레벨이 사용되는 본 발명의 제 1 실시예의 또다른 인스턴스의 맵핑 함수와 소프트 디맵핑을 도시한다. 상기 맵핑 함수는 일대일이 아니다(단사가 아님). 상기 맵핑 함수는 3 개의 프로그래밍 전압 레벨에 대해 [0.375 0.25 0.375]의 확률 분포를 가져온다. 표 4의 맵핑 함수와 표 5의 소프트 디맵핑을 이용하고 최적의 코딩 설계에 기초하는 플래시 메모리 디바이스(110)의 용량은 1.2224 IBPC(부록 C를 참조)이다. 상기 플래시 용량을 달성하기 위해, 1.2224/3=0.4075 비율의 ECC를 달성하는 용량이 사용되어야 한다. 상기 최적 코딩 설계에 기초한 플래시 메모리 디바이스(110)의 용량은 도 4의 종래 기술의 플래시 메모리 디바이스(10)의 용량 보다 더 높고, ~5%까지의 더 낮은 플래시 비용을 가져온다. 또한, 상기 플래시 메모리 디바이스(110)의 인스턴스는 종래 기술의 플래시 메모리 디바이스(10)의 4 전압 레벨에 비해 3개의 전압 레벨만을 사용하여, 더 높은 판독/기록 쓰루풋을 가져온다.
Figure 112008059040303-pct00013
Figure 112008059040303-pct00014
표 6 및 7은 3 개의 프로그래밍 레벨이 사용되는 본 발명의 제 2 실시예의 맵핑 함수와 소프트 디맵핑을 도시한다. 각각의 3개의 코딩된 비트의 시퀀스는 2개의 플래시 셀로 프로그래밍되는 2개의 프로그래밍 전압 레벨로 맵핑된다. 따라서, 표 6의 맵핑 함수는 전사가 아니다. 표 6의 맵핑 함수와 표 7의 소프트 디맵핑을 이용하고 최적의 코딩 설계에 기초하는 플래시 메모리 디바이스(110)의 용량은 1.1987 IBPC(부록 A를 참조)이다. 최적 및 차선 코딩 설계를 이용하여 상기 플래시 용량을 달성하기 위해, 1.1987/(3비트/2셀)=0.7991 비율의 ECC를 달성하는 용량이 사용되어야 한다. 상기 최적 코딩 설계에 기초한 플래시 메모리 디바이스(110)의 용량은 도 4의 종래 기술의 플래시 메모리 디바이스(10)의 용량 보다 더 높고, ~3.1%까지의 더 낮은 플래시 비용을 가져온다. 또한, 상기 플래시 메모리 디바이스(110)의 상기 실시예는 종래 기술의 플래시 메모리 디바이스(10)의 4 전압 레벨에 비해 3개의 전압 레벨만을 사용하여, 더 높은 판독/기록 쓰루풋을 가져온다.
Figure 112008059040303-pct00015
Figure 112008059040303-pct00016
도 6은 호스트(60)에 결합된 본 발명의 플래시 메모리 디바이스(50)의 고-레벨 블록도이다. 도 6은 그 전체가 본문에 설명을 위해 참조에 의해 통합되어 있는 Ban의, 미국 특허 5,404,485로부터 적용된 것이다. 플래시 메모리 디바이스(50)는 플래시 메모리(54), 컨트롤러(52) 및 랜덤 액세스 메모리(RAM)(56)를 포함한다. 미국 특허 5,404,485의 "플래시 제어(14)"에 대응하는 컨트롤러(52)는 미국특허 5,404,485에 기술된 바와 같이, RAM(56)의 보조로 플래시 메모리(54)를 관리한다. 플래시 메모리(54)는 미국특허 6,522,580 또는 미국특허 6,643,188에 기술된 바와 같이 플래시 메모리(54)의 셀당 2 개 이상의 비트의 데이터를 인코딩한다. 컨트롤러(52)는 또한 ECC 인코딩 및 디코딩, 비전단사 맵핑 및 디맵핑을 상술한 바와 같이 수행한다.
도 7은 본 발명의 대안의 데이터 스토리지 시스템(80)의 고-레벨 국부적인 블록도이다. 데이터 스토리지 시스템(80)은 프로세서(82) 및 4개의 메모리 디바이스: 모두 공통 버스(90)를 통해 통신하는, 램(84), 부트 롬(86), 대용량 스토리지 디바이스(하드 디스크)(88) 및 플래시 메모리 디바이스(70)를 포함한다. 플래시 메모리 디바이스(50)와 유사하게, 플래시 메모리 디바이스(70)는 플래시 메모리(72)를 포함한다. 플래시 메모리 디바이스(50)와 달리, 플래시 메모리 디바이스(70)는 자신의 컨트롤러와 램이 없다. 대신에 프로세서(82)가 예를 들면 이스라엘 크파 사바의 msystems Ltd.의 TrueFFS™ 드라이버와 같은 방식의 미국 5,404,485의 방법을 구현하는 소프트웨어 드라이버를 실행함으로써 컨트롤러(52)를 에뮬레이트한다. 플래시 메모리(72)는 미국특허 6,522,580 또는 미국특허 6,643,188에 기술된 바와 같이 플래시 메모리(72)의 셀당 2개 이상의 비트의 데이터를 인코딩한다. 프로세서(82)는 또한 상술한 바와 같이 ECC 인코딩 및 디코딩, 및 비전단사 맵핑 및 디맵핑을 수행한다. 플래시 메모리 디바이스(70)는 또한 프로세서(82)로 하여금 플래시 메모리(72)와 통신할 수 있도록 하는 버스 인터페이스(78)를 포함한다.
본 발명의 ECC 코드는 "시스템적"이거나 또는 "비-시스템적"이다. 시스템 오류 보정 코딩은 원 데이터 비트가 인코딩 프로세스에 의해 보존되고 저장된 비트 내에서 식별될 수 있다는 사실에 의해 특징화된다. 즉, 상기 오류 보정 메커니즘은 원 데이터 비트를 취하고, 그것들에 일부 패리티 비트를 추가하고, 데이터 비트와 패리티 비트 모두를 저장한다. 나중에, 상기 저장된 비트를 판독했을 때, 상기 데이터 비트와 패리티 비트 모두가 판독되고, 상기 패리티 비트가 상기 판독된 데이터 비트에서의 오류의 보정을 할수 있고, 그 결과 원 데이터 비트를 생성한다.
비시스템적인 오류 보정 코드에서, 원 데이터 비트는 보존되지 못하고, 저장되지 않는다. 대신에, 상기 인코딩 프로세스는 상기 원 데이터 비트를 더 큰 비트의 그룹, 때때로 저장된 데이터 비트인 "보호된 데이터 비트"라고 하는 비트의 그룹으로 변환한다. 데이터 비트의 결합과 시스템적인 오류 코드의 연관된 패리티 비트와 유사하게, 상기 비시스템적인 오류 코드의 보호된 데이터 비트는 본 문에서 원 데이터 비트에 대응하는 코드워드인 것으로 간주된다. 저장된 보호된 데이터 비트를 판독할 때, 상기 보호된 데이터 비트에 오류가 있다고 하더라도, 상기 원 데이터 비트는 다시 생성된다. 비시스템적인 코드의 특성의 정의는 특정한 원 데이터 비트와 특정한 저장된 비트 사이의 직접적인 대응관계가 없다는 것이다. 원 데이터 비트는 다중 저장된 비트에서 "스캐터링되고", 상기 다중 저장된 비트의 조합만이 상기 원 비트의 값을 말해준다.
프로세서(82)가 플래시 메모리(72)를 관리하기 위해 실행하는 소프트웨어 드라이버의 코드는 대용량 스토리지 디바이스(88)에 저장되고, 실행을 위해 램(84)으로 전송된다. 대용량 스토리지 디바이스(88)는 따라서 본 발명의 원리에 따라 플래시 메모리(72)를 관리하는 컴퓨터 판독가능한 코드에 내장된 컴퓨터 판독가능한 코드 스토리지 매체의 예이다.
본 발명이 제한된 수의 실시예에 대해 기술되었지만, 본 발명의 다수의 변형, 변경, 및 기타 적용이 이루어질 수 있음이 이해될 것이다.
부록 A: 플래시 용량 연산
Figure 112008059040303-pct00017
를 프로그래밍 전압 레벨이라고 하자.
Figure 112008059040303-pct00018
를 판독된 전압 레벨이라고 한다.
Figure 112008059040303-pct00019
는 프로그래밍 전압 레벨
Figure 112008059040303-pct00020
의 확률이라고 한다.
Figure 112008059040303-pct00021
를 전압 레벨
Figure 112008059040303-pct00022
가 주어질 때, 판독된 전압 레벨
Figure 112008059040303-pct00023
에 대한 확률이라고 한다. 그러면, 상기 플래시 용량은 하기와 같이 주어진다.
Figure 112008059040303-pct00024
플래시 메모리의 용량을 연산하기 위한 2가지 예가 다음과 같이 주어진다.
예 1 : 도 4의 플래시 메모리(10)의 용량 연산:
프로그래밍 및 판독된 전압 레벨:
Figure 112008059040303-pct00025
[볼트]
상기 플래시 메모리는 표준 편차
Figure 112008059040303-pct00026
를 가진 추가적인 가우시안 노이즈로 곤란을 겪는다,
각 프로그래밍 레벨은 동일한 확률로 프로그래밍된다:
P(X i ) = 0.25 for i= 1, 2, 3, 4
전이확률은 하기와 같이 연산된다:
Figure 112008059040303-pct00027
여기서,
Figure 112008059040303-pct00028
이다.
그러면, 상기 플래시 용량은 하기와 같이 주어진다:
Figure 112008059040303-pct00029
예 2 : 도 5의 플래시 메모리(110)의 용량 연산, 표 4 및 5의 실시예:
상기 프로그래밍 및 판독된 전압레벨은:
Figure 112008059040303-pct00030
이다.
상기 플래시 메모리는 표준 편차
Figure 112008059040303-pct00031
를 가진 추가적인 가우시안 노이즈로 곤란을 겪는다,
비전단사 맵핑은 프로그래밍 전압 레벨에 대해 하기의 불균일한 분포를 포함한다:
Figure 112008059040303-pct00032
전이 확률은 하기와 같이 연산된다:
Figure 112008059040303-pct00033
그러면, 플래시 용량은 하기와 같이 주어진다:
Figure 112008059040303-pct00034
부록 B: 포멀 함수-연관 정의
정의(일대일): f(x)=f(y)가 x=y인 경우에만, 함수 f는 일대일(단사)이라고 한다. 그렇지 않다면, 상기 함수는 다수대일이고:
Figure 112008059040303-pct00035
이면서 f(x)=f(y)가 되도록 하는 적어도 하나의 복소수쌍(x, y)가 존재한다.
정의(전사): 모든 B의 원소 y에 대해, f(x)=f(y)가 되도록 하는 원소 x가 A에 존재한다면 집합 A로부터 집합 B로의 함수는 전사(전사함수), 즉,
Figure 112008059040303-pct00036
라면, f는 전사이다. 그렇지 않다면, 상기 함수는 안으로의 함수이고: f에 의해 맵핑되지 않는 B의 적어도 하나의 원소 y가 존재한다.
정의( 전단사 ): 함수가 전사이면서 일대일이라면, 상기 함수를 전단사 함수라고 한다.
부록 C: 로그 최우비 ( LLR ) 연산
Figure 112008059040303-pct00037
를 각각의 길이 m 바이너리 시퀀스 b 를 셀/초의 M의 가능한 상태로부터의 프로그래밍된 셀/초 상태 X로 맵핑하는, 맵핑함수하고 하자. 추가로, Y를 판독 셀/초 상태라고 하자. 그러면, 비트 i에 대한 로그 최우비(LLR)는 하기와 같이 주어진다.
Figure 112008059040303-pct00038
여기서,
Figure 112008059040303-pct00039
이고,
Figure 112008059040303-pct00040
는 각각 0과 1인 i'번째 비트를 가진 길이 m 바이너리 시퀀스의 세트를 기술한다. 확률
Figure 112008059040303-pct00041
은 부록 A에 기술된 것과 같이 연산된다. 상기 비트들은 동일한 아프로리 확률을 가진다고(즉, 비트는 0 또는 1인 동일한 확률은 가진다고) 가정한다는 것에 유의하라.
부록 D: 단일-레벨 코딩( SLC ) 기반 코딩 설계
참고 문헌: U. Wachsmann, R. F. H. Fischer 및 J. B. Huber, "Multilevel codes: theoretical concepts and practical design rules", IEEE Transactions on Information Theory vol. 45 no. 5 pp. 1361-1391(1999)
단일 레벨 코딩 설계에서, 정보 비트 스트림 i 는 단일 코드를 이용하여 인코딩된다. 상기 코딩된 비트는 플래시 메모리의 프로그래밍 전압 레벨로 맵핑된다. 상기 판독된 전압레벨은 그런다음 원 정보 비트 스트림을 복구하기 위해 디코딩된다. 도 4의 플래시 메모리(10) 및 도 5의 플래시 메모리(110)는 단일 레벨 코딩 설계를 이용한다.
i 를 플래시 메모리에 저장된 정보 비트라고 하자. Y 를 판독된 전압 레벨의 시퀀스라고 하자. 또한, 모든 정보 비트 스트림은 동일한 아프리오리 확률을 가진다고 가정하자. 최적 최대-가능도(ML) 디코딩은 하기와 같이 주어진다:
Figure 112008059040303-pct00042
.
ML 디코딩은 대개 높은 디코딩 복잡도를 야기한다. 따라서, 차선의 디코딩 알고리즘을 이용하는 것이 매우 일반적이다. 예를 들면, 낮은 복잡도의 반복 디코딩 알고리즘은 ML 디코딩에 매우 근사하게 수행될 수 있다.(Y. Nana, E. Shraon 및 S. Litsyn, "Improved decoding of LDPC coded modulations", IEEE Communication Letters vol. 10 no. 5 pp. 375-377(2006)")
디코딩 설계의 추가적인 간략화는 상기 디코더가 직접 판독 전압레벨상에서 동작하는 것이 아니라 디맵퍼에 의해 생성되는 LLR과 같은 저장된 비트의 "소프트" 측정치에 대해 동작할 때 얻어질 수 있다. 상기 설계는, 상기 디맵퍼가 상기 저장된 비트의 제 1차 통계치 만을 추출하고, 상기 동일한 셀 상태로 맵핑되는 비트 사이의 통계학적 종속성을 무시하기 때문에, 최적이 아니다. 대개 성능 손실은 일반화된 그레이 맵핑이 사용될 때 매우 작다(G. Caire, G. Taricco 및 E. Biglieri, "Bit interleaved coded modulation", IEEE Transactions on Information Theory vol. 44 no. 3 pp. 927-946(1998)).
부록 E: 멀티-스테이지 디코딩( MSD )을 가진 멀티-레벨 코딩( MLC )에 기초한 코딩 설계
참고 문헌: U. Wachsmann, R. F. H. Fischer 및 J. B. Huber, "Multilevel codes: theoretical concepts and practical design rules", IEEE Transactions on Information Theory vol. 45 no. 5 pp. 1361-1391(1999)
상기 설계에서, 정보 비트 스트림은 m 스트림으로 분할되고, 각 비트 스트림은 상이한 코드를 이용하여 인코딩된다. 상기 m 코딩된 비트 스트림은 그런다음 프로그래밍 전압 레벨의 스트림을 산출하기 위해 맵퍼에 의해 사용된다. 각 코딩된 비트 스트림 중 하나인, 각 m 비트는 프로그래밍 전압 레벨로 맵핑된다.
도 8은 종래 기술 또는 본 발명 중 어느 하나에 따른, MLC/MSD 플래시 메모리(210)의 간략화된 블록도이다. 플래시 메모리(210)는 MLC/MSD 컨트롤러(212), 및 도 4 및 5의 플래시 메모리 셀 어레이(18)와 동일한 플래시 메모리 셀(214)을 포함한다. 컨트롤러(212)는 정보 비트의 인입 스트림을 m 내부 입력 비트 스트림으로 병렬화하는 병렬기(216)(직렬에서 병렬로), 각각의 내부 입력 비트 스트림을 인코딩하는 m ECC 인코더(218), 상기 인코딩된 비트 스트림을 플래시 셀 어레이(214) 프로그래밍을 위한 프로그래밍된 전압 레벨로 맵핑하는 맵퍼(220), 판독된 전압 레벨을 m 내부 출력 비트 스트림으로 디맵핑하기 위한 디맵퍼, 각각의 내부 출력 비트 스트림을 하기에 기술한 바와 같이 디코딩하는 m ECC 디코더(224), 및 상기 디코딩된 비트 스트림을 직렬화하는 직렬기(병렬에서 직렬로)를 포함한다.
플래시 셀 어레이(214)가 판독될 때, 디코딩은 상기 저장된 정보를 복구하기 위해 수행된다. 디코딩은 스테이지에서 수행된다. 각 스테이지에서, 단일 코딩된 비트 스트림은 디맵퍼(222)에 의해 제공된 "소프트" 비트 측정치에 대해 동작하는 각각의 "소프트" 디코더(224)를 이용하여 디코딩된다. 상기 각각의 코딩된 비트 스트림의 디코딩 결과(m번째 비트 스트림은 제외)는 다시 디맵퍼(222)로 공급되어모든 m 정보 비트 스트림이 복구될 때까지 다음번 코딩된 비트 스트림의 "소프트" 비트 측정치 등을 연산하기 위해 디맵퍼에 의해 사용된다.
상기 MLC/MSD 설계는 최적의 설계를 유지하면서, 직접 판독된 전압 레벨에 대해서가 아니라 디맵퍼 출력에 대해 동작하는 낮은 복잡도의 디코더를 이용할 수 있다. 그러나, MLC.MSD는 다수의 실질적인 단점을 가진다. 예를 들면, MLC/MSD는 설계를 하기 위해 플래시 메모리의 물리적 모델에 대해 잘 알아야될 필요가 있고, MLC/MSD는 상기 물리적 모델의 불완전한 지식에 민감하고, 즉, MLC/MSD는 SLC 설계보다 덜 강건하다. 또한, MLC/MSD는, 특히 상기 설계가 플래시 물리적 모델의 불완전한 지식에 기초하여 설계되었다면, 상기 상이한 디코딩 스테이지 사이에 오류 전파로 인해 곤란을 겪는다. 추가로, 상기 코딩 설계가 특정한 블록 크기로 한정되면, 상기 정보 비트 스트림을 다수의 블록으로 분할하는 MLC/MSD 설계는 상기 SLC 설계의 ECC 보다 더 짧은 ECC에 기초한다. 상기 ECC의 성능이 코드 길이가 증가하면서 개선되기 때문에, 상기 MLC/MSD 설계는 실제에 있어서는 상기 SLC 설계에 비해 열화한 성능을 겪게된다.

Claims (48)

  1. 복수의 입력 비트를 메모리 셀에 저장하는 방법으로서,
    (a) 컨트롤러에 의해, 상기 입력 비트를 다수대일 맵핑을 이용하여 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 단계;
    (b) 컨트롤러에 의해, 상기 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하는 단계;
    (c) 상기 메모리 셀을 판독하고, 그에 의해 판독된 상태값을 획득하는 단계; 및
    (d) 상기 판독된 상태값을 복수의 출력 비트로 변환하는 단계;를 포함하는 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  2. 제 1 항에 있어서,
    상기 메모리 셀은 플래시 메모리 셀이고, 상기 상태는 임계전압 상태인 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 변환은 최대 우도 디코딩을 포함하는 단계에 의해 수행되는 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  5. 제 1 항에 있어서,
    상기 변환은,
    (ⅰ) 상기 판독된 상태 값은 복수의 소프트 비트 측정치로 맵핑하는 단계; 및
    (ⅱ) 상기 소프트 비트 측정치를 디코딩하는 단계;를 포함하는 단계에 의해 수행되는 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  6. 제 1 항에 있어서,
    상기 맵핑은 복수의 입력 코드워드로서 상기 입력 비트를 인코딩하는 것을 포함하고, 상기 변환은,
    (ⅰ) 상기 판독된 상태 값을, 각각의 출력 코드워드가 상기 입력 코드워드 중 하나에 고유하게 대응하는, 복수의 출력 코드워드로 맵핑하는 단계; 및
    (ⅱ) 상기 출력 코드워드를 연속적으로 디코딩하는 단계로서, 적어도 하나의 선행하는 상기 출력 코드워드의 상기 디코딩의 결과에 적어도 부분적으로 기초하는 제 1 상기 출력 코드워드에 후속하는 각각의 상기 출력 코드워드의 디코딩하는 단계;를 포함하는 단계에 의해 수행되는 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  7. 복수의 입력 비트를 메모리 셀에 저장하는 방법으로서,
    (a) 컨트롤러에 의해, 상기 입력 비트를 다수대일 맵핑을 이용하여 복수의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 단계;
    (b) 컨트롤러에 의해, 상기 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하는 단계;
    (c) 상기 메모리 셀을 판독하고, 그에 의해 판독된 상태값을 획득하는 단계; 및
    (d) 상기 판독된 상태값을 복수의 출력 비트로 변환하는 단계;를 포함하는 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  8. 제 7 항에 있어서,
    상기 메모리 셀은 플래시 메모리 셀이고, 상기 상태는 임계전압 상태인 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  9. 삭제
  10. 제 7 항에 있어서,
    상기 변환은 최대 우도 디코딩을 포함하는 단계에 의해 수행되는 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  11. 제 7 항에 있어서,
    상기 변환은,
    (ⅰ) 상기 판독된 상태 값을 복수의 소프트 비트 측정치로 맵핑하는 단계; 및
    (ⅱ) 상기 소프트 비트 측정치를 디코딩하는 단계;를 포함하는 단계에 의해 수행되는 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  12. 제 7 항에 있어서,
    상기 맵핑은 복수의 입력 코드워드로서 상기 입력 비트를 인코딩하는 것을 포함하고, 상기 변환은,
    (ⅰ) 상기 판독된 상태 값을, 각각의 출력 코드워드가 상기 입력 코드워드 중 하나에 고유하게 대응하는, 복수의 출력 코드워드로 맵핑하는 단계; 및
    (ⅱ) 상기 출력 코드워드를 연속적으로 디코딩하는 단계로서, 적어도 하나의 선행하는 상기 출력 코드워드의 상기 디코딩의 결과에 적어도 부분적으로 기초하는 제 1 상기 출력 코드워드에 후속하는 각각의 상기 출력 코드워드의 디코딩 단계;를 포함하는 단계에 의해 수행되는 것을 특징으로 하는 복수의 입력 비트를 메모리 셀에 저장하는 방법.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 메모리 디바이스로서,
    (a) 셀; 및
    (b) 컨트롤러로서,
    (ⅰ) 다수대일의 맵핑을 이용하여 복수의 비트를 상기 셀의 대응하는 프로그래밍된 상태로 맵핑하고;
    (ⅱ) 상기 셀을 대응하는 프로그래밍된 상태로 프로그래밍하고;
    (iii) 상기 셀을 판독하고, 그에 의해 판독된 상태값을 획득하고; 및
    (iv) 상기 판독된 상태값을 복수의 출력 비트로 변환;함으로써 상기 셀에 복수의 비트를 저장하도록 동작하는 컨트롤러;를 포함하는 것을 특징으로 하는 메모리 디바이스.
  21. 복수의 비트를 저장하는 시스템에 잇어서,
    (a) 셀을 포함하는 메모리 디바이스; 및
    (b) 프로세서를 포함하고,
    상기 프로세서는,
    (ⅰ) 다수대일의 맵핑을 이용하여 상기 비트를 셀의 대응하는 프로그래밍된 상태로 맵핑하고:
    (ⅱ) 상기 셀을 대응하는 프로그래밍된 상태로 프로그래밍하고;
    (iii) 상기 셀을 판독하고, 그에 의해 판독된 상태값을 획득하고; 및
    (iv) 상기 판독된 상태값을 복수의 출력 비트로 변환;하도록 동작하는 것을 특징으로 하는 복수의 비트를 저장하는 시스템.
  22. 메모리 디바이스로서,
    (a) 복수의 셀; 및
    (b) 컨트롤러를 포함하고,
    상기 컨트롤러는,
    (ⅰ) 다수대일의 맵핑을 이용하여, 복수의 비트를 상기 복수의 셀의 대응하는 프로그래밍된 상태로 맵핑하고;
    (ⅱ) 상기 복수의 셀을 대응하는 프로그래밍된 상태로 프로그래밍하고;
    (iii) 상기 복수의 셀의 적어도 하나의 셀을 판독하고, 그에 의해 판독된 상태값을 획득하고; 및
    (iv) 상기 판독된 상태값을 복수의 출력 비트로 변환;함으로써 상기 셀에 복수의 비트를 저장하도록 동작하는 것을 특징으로 하는 메모리 디바이스.
  23. 복수의 비트를 저장하는 시스템에 있어서,
    (a) 복수의 셀을 포함하는 메모리 디바이스; 및
    (b) 프로세서;를 포함하고,
    상기 프로세서는,
    (ⅰ) 다수대일의 맵핑을 이용하여 상기 비트를 상기 복수의 셀의 대응하는 프로그래밍된 상태로 맵핑하고;
    (ⅱ) 상기 복수의 셀을 대응하는 프로그래밍된 상태로 프로그래밍하고;
    (iii) 상기 복수의 셀의 적어도 하나의 셀을 판독하고, 그에 의해 판독된 상태값을 획득하고; 및
    (iv) 상기 판독된 상태값을 복수의 출력 비트로 변환;하도록 동작하는 것을 특징으로 하는 복수의 비트를 저장하는 시스템.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 복수의 입력 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체에 있어서, 상기 컴퓨터 판독가능한 코드는 프로세서로 하여금,
    (a) 다수대일의 맵핑을 이용하여, 상기 입력 비트를 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 것;
    (b) 상기 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하는 것;
    (c) 상기 메모리 셀을 판독하고, 그에 의해 판독된 상태값을 획득하는 것; 및
    (d) 상기 판독된 상태값을 복수의 출력 비트로 변환하는 것;을 수행하도록 작동되는 것을 특징으로 하는 컴퓨터 판독가능한 매체.
  42. 컴퓨터 판독가능한 스토리지 매체에서 구현되고, 복수의 입력 비트를 저장하기 위한 컴퓨터 판독가능한 코드를 구비한 컴퓨터 판독가능한 매체에 있어서, 상기 컴퓨터 판독가능한 코드는 프로세서로 하여금,
    (a) 다수대일의 맵핑을 이용하여, 상기 입력 비트를 복수의 메모리 셀의 대응하는 프로그래밍된 상태로 맵핑하는 것;
    (b) 상기 복수의 메모리 셀을 대응하는 프로그래밍된 상태로 프로그래밍하는 것;
    (c) 상기 복수의 메모리 셀의 적어도 하나의 메모리 셀을 판독하고, 그에 의해 판독된 상태값을 획득하는 것; 및
    (d) 상기 판독된 상태값을 복수의 출력 비트로 변환하는 것;을 수행하도록 작동되는 것을 특징으로 하는 컴퓨터 판독가능한 매체.
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
KR1020087020296A 2006-03-06 2006-10-30 비전단사 맵핑을 하는 셀당 멀티 비트의 플래시 메모리 디바이스 KR101462961B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US77904406P 2006-03-06 2006-03-06
US60/779,044 2006-03-06
US11/540,560 US7388781B2 (en) 2006-03-06 2006-10-02 Multi-bit-per-cell flash memory device with non-bijective mapping
US11/540,560 2006-10-02
PCT/IL2006/001251 WO2007102141A2 (en) 2006-03-06 2006-10-30 Multi-bit-per-cell flash memory device with non-bijective mapping

Publications (2)

Publication Number Publication Date
KR20080110994A KR20080110994A (ko) 2008-12-22
KR101462961B1 true KR101462961B1 (ko) 2014-11-19

Family

ID=38472704

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087020296A KR101462961B1 (ko) 2006-03-06 2006-10-30 비전단사 맵핑을 하는 셀당 멀티 비트의 플래시 메모리 디바이스

Country Status (5)

Country Link
US (5) US7388781B2 (ko)
EP (1) EP1999591B1 (ko)
JP (2) JP5534675B2 (ko)
KR (1) KR101462961B1 (ko)
WO (1) WO2007102141A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200008829A (ko) * 2018-07-17 2020-01-29 한국과학기술연구원 플래시 메모리 시스템 및 그것의 양자화 신호 생성 방법

Families Citing this family (228)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7388781B2 (en) * 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US8848442B2 (en) * 2006-03-06 2014-09-30 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
CN101421792B (zh) * 2006-04-13 2015-09-23 Nxp股份有限公司 半导体器件标识符产生方法以及半导体器件
US8645793B2 (en) 2008-06-03 2014-02-04 Marvell International Ltd. Statistical tracking for flash memory
US8725929B1 (en) 2006-11-06 2014-05-13 Marvell World Trade Ltd. Adaptive read and write systems and methods for memory cells
WO2007132453A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Distortion estimation and cancellation in memory devices
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
WO2007132456A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
US7840875B2 (en) * 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
JP4896605B2 (ja) * 2006-07-04 2012-03-14 株式会社東芝 不揮発性半導体記憶システム
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
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
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8001441B2 (en) * 2006-11-03 2011-08-16 Sandisk Technologies Inc. Nonvolatile memory with modulated error correction coding
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
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US7941590B2 (en) * 2006-11-06 2011-05-10 Marvell World Trade Ltd. Adaptive read and write systems and methods for memory cells
WO2008068747A2 (en) 2006-12-03 2008-06-12 Anobit Technologies Ltd. Automatic defect management in memory devices
KR100766042B1 (ko) * 2006-12-06 2007-10-12 삼성전자주식회사 연접 부호화를 이용한 멀티 레벨 셀 메모리 장치
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
KR100907218B1 (ko) * 2007-03-28 2009-07-10 삼성전자주식회사 읽기 레벨 제어 장치 및 그 방법
US7808834B1 (en) 2007-04-13 2010-10-05 Marvell International Ltd. Incremental memory refresh
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
US7719889B2 (en) * 2007-06-25 2010-05-18 Sandisk Corporation Methods of programming multilevel cell nonvolatile memory
US8051358B2 (en) * 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
US8065583B2 (en) * 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US7907473B2 (en) * 2007-07-23 2011-03-15 Renesas Electronics Corporation Semiconductor memory device and data storage method including address conversion circuit to convert coordinate information of data into one-dimensional information to amplifier
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8031526B1 (en) 2007-08-23 2011-10-04 Marvell International Ltd. Write pre-compensation for nonvolatile memory
US8189381B1 (en) 2007-08-28 2012-05-29 Marvell International Ltd. System and method for reading flash memory cells
US8085605B2 (en) 2007-08-29 2011-12-27 Marvell World Trade Ltd. Sequence detection for flash memory with inter-cell interference
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
KR101403429B1 (ko) * 2007-10-09 2014-06-03 삼성전자주식회사 멀티 비트 프로그래밍 장치 및 방법
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
US8270246B2 (en) 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8327245B2 (en) * 2007-11-21 2012-12-04 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
US8046542B2 (en) * 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US7633798B2 (en) * 2007-11-21 2009-12-15 Micron Technology, Inc. M+N bit programming and M+L bit read for M bit memory cells
US8499229B2 (en) * 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash memory
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
WO2009072102A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US7656707B2 (en) * 2007-12-14 2010-02-02 Intel Corporation Systems and methods for discrete channel decoding of LDPC codes for flash memory
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
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
EP2592553B1 (en) * 2008-03-11 2015-11-18 Agere Systems, Inc. Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
KR20090097673A (ko) * 2008-03-12 2009-09-16 삼성전자주식회사 연판정 값에 기반하여 메모리에 저장된 데이터를 검출하는장치
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8627165B2 (en) * 2008-03-24 2014-01-07 Micron Technology, Inc. Bitwise operations and apparatus in a multi-level system
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8576955B2 (en) * 2008-03-28 2013-11-05 Qualcomm Incorporated Architecture to handle concurrent multiple channels
US8059455B2 (en) * 2008-05-09 2011-11-15 Sandisk Il Ltd. Partial scrambling to reduce correlation
US8464131B2 (en) * 2008-06-23 2013-06-11 Ramot At Tel Aviv University Ltd. Reading a flash memory by constrained decoding
US8458563B2 (en) * 2008-06-23 2013-06-04 Ramot At Tel Aviv University Ltd. Reading a flash memory by joint decoding and cell voltage distribution tracking
US8560762B2 (en) * 2008-06-25 2013-10-15 Microsoft Corporation Limited memory power
WO2010002941A1 (en) * 2008-07-01 2010-01-07 Lsi Corporation Methods and apparatus for read-side intercell interference mitigation in flash memories
US8111548B2 (en) 2008-07-21 2012-02-07 Sandisk Technologies Inc. Programming non-volatile storage using binary and multi-state programming processes
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
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
US8671327B2 (en) 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
WO2010035241A1 (en) * 2008-09-28 2010-04-01 Ramot At Tel Aviv University Ltd. Method and system for adaptive coding in flash memories
TW201019327A (en) * 2008-09-30 2010-05-16 Lsi Corp Methods and apparatus for soft data generation for memory devices using reference cells
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
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
US7653779B1 (en) * 2009-02-04 2010-01-26 Gene Fein Memory storage using a look-up table
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8458114B2 (en) * 2009-03-02 2013-06-04 Analog Devices, Inc. Analog computation using numerical representations with uncertainty
JP5195550B2 (ja) * 2009-03-17 2013-05-08 沖電気工業株式会社 復号装置及び符号化システム
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
US8179731B2 (en) 2009-03-27 2012-05-15 Analog Devices, Inc. Storage devices with soft processing
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
US8464123B2 (en) * 2009-05-07 2013-06-11 Ramot At Tel Aviv University Ltd. Matrix structure for block encoding
US8935589B2 (en) * 2009-06-02 2015-01-13 Silicon Motion, Inc. Controller and data access method for flash memories
TWI415130B (zh) * 2009-06-02 2013-11-11 Silicon Motion Inc 快閃記憶體之控制器以及於快閃記憶體存取資料的方法
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8615700B2 (en) * 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories
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
US8743629B2 (en) 2009-08-31 2014-06-03 Sandisk Il Ltd. Preloading data into a flash storage device
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
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
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
KR101675118B1 (ko) * 2010-01-14 2016-11-10 삼성전자 주식회사 스킵 및 분할 순서를 고려한 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
JP5556189B2 (ja) * 2010-01-20 2014-07-23 ソニー株式会社 記憶装置およびデータの書込み方法
US20110238946A1 (en) * 2010-03-24 2011-09-29 International Business Machines Corporation Data Reorganization through Hardware-Supported Intermediate Addresses
JP5612508B2 (ja) * 2010-03-25 2014-10-22 パナソニック株式会社 不揮発性メモリコントローラ及び不揮発性記憶装置
US8775913B2 (en) 2010-03-31 2014-07-08 Lsi Corporation Methods and apparatus for computing soft data or log likelihood ratios for received values in communication or storage systems
US8429500B2 (en) 2010-03-31 2013-04-23 Lsi Corporation Methods and apparatus for computing a probability value of a received value in communication or storage systems
US8504885B2 (en) 2010-03-31 2013-08-06 Lsi Corporation Methods and apparatus for approximating a probability density function or distribution for a received value in communication or storage systems
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
KR101438072B1 (ko) 2010-04-15 2014-09-03 라모트 앳 텔-아비브 유니버시티 리미티드 소거 없는 플래시 메모리의 다중 프로그래밍
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8386895B2 (en) 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
WO2011161622A1 (en) 2010-06-21 2011-12-29 Sandisk Il Ltd. Optimized flash memory without dedicated parity area and with reduced array size
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8510639B2 (en) 2010-07-01 2013-08-13 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
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
WO2012020278A1 (en) 2010-08-13 2012-02-16 Sandisk Il Ltd. Data coding using divisions of memory cell states
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
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
US8464137B2 (en) 2010-12-03 2013-06-11 International Business Machines Corporation Probabilistic multi-tier error correction in not-and (NAND) flash memory
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
US9898361B2 (en) 2011-01-04 2018-02-20 Seagate Technology Llc Multi-tier detection and decoding in flash memories
US9292377B2 (en) 2011-01-04 2016-03-22 Seagate Technology Llc Detection and decoding in flash memories using correlation of neighboring bits and probability based reliability values
US9502117B2 (en) 2011-03-14 2016-11-22 Seagate Technology Llc Cell-level statistics collection for detection and decoding in flash memories
US8942035B2 (en) 2011-03-23 2015-01-27 Seagate Technology Llc Non-sequential encoding scheme for multi-level cell (MLC) memory cells
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
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
US9372792B1 (en) 2011-05-12 2016-06-21 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
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
US9311969B2 (en) 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
US8645810B2 (en) * 2011-07-31 2014-02-04 Sandisk Technologies Inc. Fast detection of convergence or divergence in iterative decoding
US9449692B2 (en) 2011-08-03 2016-09-20 Micron Technology, Inc. Functional data programming and reading in a memory
WO2013048385A1 (en) * 2011-09-28 2013-04-04 Intel Corporation Maximum-likelihood decoder in a memory controller for synchronization
US8666068B2 (en) 2011-10-20 2014-03-04 Sandisk Technologies Inc. Method for scrambling shaped data
US8799559B2 (en) 2011-10-24 2014-08-05 Sandisk Technologies Inc. Endurance enhancement coding of compressible data in flash memories
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
US9286972B2 (en) * 2012-02-22 2016-03-15 Silicon Motion, Inc. Method, memory controller and system for reading data stored in flash memory
TWI571885B (zh) * 2012-02-24 2017-02-21 慧榮科技股份有限公司 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與系統
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8629689B1 (en) * 2012-05-18 2014-01-14 Altera Corporation Integrated circuit with improved interconnect routing and associated methods
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
KR20130130484A (ko) * 2012-05-22 2013-12-02 삼성전자주식회사 읽기 카운터 로직을 포함하는 플래시 메모리 시스템
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
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
US9779016B1 (en) * 2012-07-25 2017-10-03 Smart Modular Technologies, Inc. Computing system with backup and recovery mechanism and method of operation thereof
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
US9577673B2 (en) 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
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
US8913428B2 (en) 2013-01-25 2014-12-16 Sandisk Technologies Inc. Programming non-volatile storage system with multiple memory die
US9026757B2 (en) 2013-01-25 2015-05-05 Sandisk Technologies Inc. Non-volatile memory programming data preservation
US9250814B2 (en) * 2013-02-11 2016-02-02 Apple Inc. Command order re-sequencing in non-volatile memory
US9081674B2 (en) 2013-02-28 2015-07-14 Micron Technology, Inc. Dual mapping between program states and data patterns
US9117530B2 (en) 2013-03-14 2015-08-25 Sandisk Technologies Inc. Preserving data from adjacent word lines while programming binary non-volatile storage elements
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
GB2513592A (en) * 2013-04-30 2014-11-05 Ibm Read-detection in multi-level cell memory
US9235469B2 (en) 2013-05-22 2016-01-12 Seagate Technology Llc Systems and methods for inter-cell interference mitigation in a flash memory
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9009568B2 (en) 2013-08-09 2015-04-14 Sandisk Technologies Inc. Sensing parameter management in non-volatile memory storage system to compensate for broken word lines
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
TWI511136B (zh) * 2014-01-09 2015-12-01 Macronix Int Co Ltd 記憶體系統及其存取方法
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
KR20150091693A (ko) 2014-02-03 2015-08-12 삼성전자주식회사 플래쉬 메모리 읽기 방법
US9311992B2 (en) 2014-02-07 2016-04-12 Seagate Technology Decoding system and method for electronic non-volatile computer storage apparatus
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
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
CN105468471A (zh) * 2014-09-12 2016-04-06 光宝科技股份有限公司 固态存储装置及其错误更正方法
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9552163B1 (en) 2015-07-03 2017-01-24 Qualcomm Incorporated Systems and methods for providing non-power-of-two flash cell mapping
US9921909B2 (en) 2015-07-03 2018-03-20 Qualcomm Incorporated Systems and methods for providing error code detection using non-power-of-two flash cell mapping
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
US10216575B2 (en) 2016-03-17 2019-02-26 Sandisk Technologies Llc Data coding
US10114549B2 (en) * 2016-03-17 2018-10-30 Sandisk Technologies Llc Error correction code processing and data shaping for reducing wear to a memory
US10360973B2 (en) 2016-12-23 2019-07-23 Western Digital Technologies, Inc. Data mapping enabling fast read multi-level 3D NAND to improve lifetime capacity
US10025661B1 (en) 2016-12-27 2018-07-17 Sandisk Technologies Llc Adaptive hard and soft bit decoding
CN107070588B (zh) * 2016-12-28 2020-03-24 深圳清华大学研究院 一种简化的多址接入传输系统的接收机及接收方法
US10910044B2 (en) 2018-09-28 2021-02-02 Sandisk Technologies Llc State coding for fractional bits-per-cell memory
US11263079B2 (en) 2020-06-30 2022-03-01 Kabushiki Kaisha Toshiba Endurance modulation for flash storage
KR20220041574A (ko) 2020-09-25 2022-04-01 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
KR20220046308A (ko) * 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11650756B2 (en) 2020-12-28 2023-05-16 Western Digital Technologies, Inc. Nonvolatile memory with encoding for foggy-fine programming with soft bits
US11495296B2 (en) 2021-01-20 2022-11-08 Western Digital Technologies, Inc. Read threshold calibration for nonvolatile memory with encoded foggy-fine programming
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
US11822820B2 (en) 2021-11-10 2023-11-21 Western Digital Technologies, Inc. Storage system and method for multi-cell mapping

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001014873A (ja) * 1999-06-30 2001-01-19 Nec Corp 不揮発性半導体記憶装置
JP2001210085A (ja) * 2001-02-13 2001-08-03 Toshiba Corp 不揮発性半導体記憶装置

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308800A (ja) * 1987-06-10 1988-12-16 Hitachi Ltd 記憶装置
US5301284A (en) * 1991-01-16 1994-04-05 Walker-Estes Corporation Mixed-resolution, N-dimensional object space method and apparatus
JPH08249893A (ja) * 1995-03-07 1996-09-27 Toshiba Corp 半導体記憶装置
JPH05174584A (ja) * 1991-06-28 1993-07-13 Sharp Corp データ記憶装置
US5479624A (en) * 1992-10-14 1995-12-26 Lee Research, Inc. High-performance interleaved memory system comprising a prime number of memory modules
JPH06131881A (ja) * 1992-10-14 1994-05-13 Toshiba Corp 半導体メモリへの情報書き込み読み出し方法
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5511026A (en) * 1993-12-01 1996-04-23 Advanced Micro Devices, Inc. Boosted and regulated gate power supply with reference tracking for multi-density and low voltage supply memories
US5828601A (en) * 1993-12-01 1998-10-27 Advanced Micro Devices, Inc. Programmed reference
JP3999822B2 (ja) * 1993-12-28 2007-10-31 株式会社東芝 記憶システム
US5541886A (en) 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US6353554B1 (en) * 1995-02-27 2002-03-05 Btg International Inc. Memory apparatus including programmable non-volatile multi-bit memory cell, and apparatus and method for demarcating memory states of the cell
US5943693A (en) * 1995-03-29 1999-08-24 Intel Corporation Algorithmic array mapping to decrease defect sensitivity of memory devices
US5859858A (en) * 1996-10-25 1999-01-12 Intel Corporation Method and apparatus for correcting a multilevel cell memory by using error locating codes
JPH10162503A (ja) * 1996-11-28 1998-06-19 Toshiba Corp 書き換え可能不揮発性メモリを備えたデータ記録再生装置及び書き換え可能不揮発性メモリ内設定データの変更方法
KR100219842B1 (ko) * 1997-03-12 1999-09-01 서평원 이동 전화시스템
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
JP3605266B2 (ja) * 1997-08-12 2004-12-22 新日本製鐵株式会社 半導体記憶装置及び読み出し方法並びに読み出し方法が記録された記録媒体
JP3513379B2 (ja) * 1997-12-09 2004-03-31 新日本製鐵株式会社 半導体記憶装置及び使用方法並びに使用方法が記憶された記憶媒体
JP3581549B2 (ja) * 1997-12-09 2004-10-27 新日本製鐵株式会社 半導体記憶装置及び使用方法並びにコンピュータ読み取り可能な記憶媒体
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
JP3648057B2 (ja) * 1997-12-09 2005-05-18 新日本製鐵株式会社 半導体記憶装置及びその使用方法、並びに記録媒体
JPH11177070A (ja) * 1997-12-10 1999-07-02 Sony Corp 不揮発性半導体記憶装置及びその駆動方法
US6304657B1 (en) * 1999-05-26 2001-10-16 Matsushita Electric Industrial Co., Ltd. Data encryption apparatus using odd number of shift-rotations and method
US6297988B1 (en) * 2000-02-25 2001-10-02 Advanced Micro Devices, Inc. Mode indicator for multi-level memory
JP2002158590A (ja) * 2000-11-17 2002-05-31 Sony Corp 復号装置及び方法、並びにデータ受信装置及び方法
US6469931B1 (en) 2001-01-04 2002-10-22 M-Systems Flash Disk Pioneers Ltd. Method for increasing information content in a computer memory
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
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
US7178004B2 (en) * 2003-01-31 2007-02-13 Yan Polansky Memory array programming circuit and a method for using the circuit
JP2005092923A (ja) 2003-09-12 2005-04-07 Renesas Technology Corp 半導体記憶装置
US7188228B1 (en) * 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
GB2407007B (en) * 2003-10-09 2006-06-28 Toshiba Res Europ Ltd Estimator for mimo receiver
KR100719380B1 (ko) 2006-03-31 2007-05-18 삼성전자주식회사 향상된 신뢰성 특성을 갖는 다치 플래시 메모리 장치 및그것을 포함한 메모리 시스템
US7047252B2 (en) * 2003-12-02 2006-05-16 Oracle International Corporation Complex computation across heterogenous computer systems
US7049652B2 (en) * 2003-12-10 2006-05-23 Sandisk Corporation Pillar cell flash memory technology
WO2005083889A1 (fr) * 2004-01-30 2005-09-09 France Telecom Quantification vectorielle en dimension et resolution variables
US7042044B2 (en) * 2004-02-18 2006-05-09 Koucheng Wu Nor-type channel-program channel-erase contactless flash memory on SOI
JP4357331B2 (ja) 2004-03-24 2009-11-04 東芝メモリシステムズ株式会社 マイクロプロセッサブートアップ制御装置、及び情報処理システム
US8316068B2 (en) * 2004-06-04 2012-11-20 Telefonaktiebolaget Lm Ericsson (Publ) Memory compression
US7133311B2 (en) * 2004-08-16 2006-11-07 Bo Liu Low power, high speed read method for a multi-level cell DRAM
JP4271115B2 (ja) * 2004-09-29 2009-06-03 株式会社東芝 画像マッチング装置、画像マッチング方法および画像マッチングプログラム
JP2006114078A (ja) 2004-10-12 2006-04-27 Toshiba Corp 不揮発性半導体記憶装置及びその動作方法
US20060143368A1 (en) 2004-12-23 2006-06-29 M-Systems Flash Disk Pioneers Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
US7071855B1 (en) * 2004-12-23 2006-07-04 Sadowsky Jonathan B Gray code conversion method and apparatus embodying the same
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
ATE534999T1 (de) * 2005-10-17 2011-12-15 Univ Ramot Probabilistische fehlerkorrektur in einem mehrbit-pro-zelle-flash-speicher
US7608886B2 (en) * 2006-01-06 2009-10-27 Macronix International Co., Ltd. Systems and methods for a high density, compact memory array
US7844879B2 (en) * 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US8848442B2 (en) 2006-03-06 2014-09-30 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US7388781B2 (en) * 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US7716415B2 (en) 2006-08-01 2010-05-11 Sandisk Il Ltd. Method of avoiding errors in flash memory
JP2009129477A (ja) * 2007-11-20 2009-06-11 Toshiba Corp 不揮発性半導体記憶装置
JP5174584B2 (ja) 2008-08-28 2013-04-03 ダイニチ工業株式会社 電子回路基板
KR101438072B1 (ko) 2010-04-15 2014-09-03 라모트 앳 텔-아비브 유니버시티 리미티드 소거 없는 플래시 메모리의 다중 프로그래밍
US8649215B2 (en) 2010-12-22 2014-02-11 HGST Netherlands B.V. Data management in flash memory using probability of charge disturbances

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001014873A (ja) * 1999-06-30 2001-01-19 Nec Corp 不揮発性半導体記憶装置
JP2001210085A (ja) * 2001-02-13 2001-08-03 Toshiba Corp 不揮発性半導体記憶装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200008829A (ko) * 2018-07-17 2020-01-29 한국과학기술연구원 플래시 메모리 시스템 및 그것의 양자화 신호 생성 방법
KR102124064B1 (ko) 2018-07-17 2020-06-17 한국과학기술연구원 플래시 메모리 시스템 및 그것의 양자화 신호 생성 방법

Also Published As

Publication number Publication date
US20110029754A1 (en) 2011-02-03
US7643342B2 (en) 2010-01-05
EP1999591A2 (en) 2008-12-10
US20110276749A1 (en) 2011-11-10
US8804423B2 (en) 2014-08-12
US7990766B2 (en) 2011-08-02
JP2012164420A (ja) 2012-08-30
JP5534675B2 (ja) 2014-07-02
JP2009529203A (ja) 2009-08-13
EP1999591B1 (en) 2012-12-19
WO2007102141A2 (en) 2007-09-13
US7388781B2 (en) 2008-06-17
JP5558522B2 (ja) 2014-07-23
KR20080110994A (ko) 2008-12-22
EP1999591A4 (en) 2009-10-14
US20080291724A1 (en) 2008-11-27
US20070208905A1 (en) 2007-09-06
US20100070692A1 (en) 2010-03-18
WO2007102141A3 (en) 2009-04-09
US8085590B2 (en) 2011-12-27

Similar Documents

Publication Publication Date Title
KR101462961B1 (ko) 비전단사 맵핑을 하는 셀당 멀티 비트의 플래시 메모리 디바이스
US10437668B2 (en) Memory controller, memory system, and method for controlling memory system
US8848442B2 (en) Multi-bit-per-cell flash memory device with non-bijective mapping
US8140935B2 (en) ECC controller for use in flash memory device and memory system including the same
US9294132B1 (en) Dual-stage data decoding for non-volatile memories
US9070453B2 (en) Multiple programming of flash memory without erase
KR101422050B1 (ko) 셀 당 멀티­비트인 플래시 메모리에서의 오류 보정 방법
US8756365B2 (en) Apparatus and method for enhancing flash endurance by encoding data
US20100223530A1 (en) Semiconductor memory device and data processing method thereof
KR101386489B1 (ko) 메모리 장치 및 멀티 비트 프로그래밍 방법
WO2014130557A1 (en) Bandwidth optimization in a non-volatile memory system
KR20160150036A (ko) 부분 페이지 압축을 위한 메모리 시스템
US9639421B2 (en) Operating method of flash memory system
JP4099844B2 (ja) メモリ装置
JPH11212876A (ja) 符号化方法およびそれを利用したメモリ装置
JPH11213693A (ja) メモリ装置
Al Kim et al. Codes for Memory Cells with Unreachable Levels
IL196239A (en) Method of error correction in a multi-bit-per-cell flash memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee