KR101661048B1 - 메모리 디바이스들에 대한 에러 보호 - Google Patents

메모리 디바이스들에 대한 에러 보호 Download PDF

Info

Publication number
KR101661048B1
KR101661048B1 KR1020147027842A KR20147027842A KR101661048B1 KR 101661048 B1 KR101661048 B1 KR 101661048B1 KR 1020147027842 A KR1020147027842 A KR 1020147027842A KR 20147027842 A KR20147027842 A KR 20147027842A KR 101661048 B1 KR101661048 B1 KR 101661048B1
Authority
KR
South Korea
Prior art keywords
data
memory cells
group
program data
parity
Prior art date
Application number
KR1020147027842A
Other languages
English (en)
Other versions
KR20140139538A (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 KR20140139538A publication Critical patent/KR20140139538A/ko
Application granted granted Critical
Publication of KR101661048B1 publication Critical patent/KR101661048B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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
    • G11C11/5635Erasing 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
    • G11C16/107Programming all cells in an array, sector or block to the same state prior to flash erasing
    • 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
    • G11C2029/0411Online error correction
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

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

Abstract

본 명세서에 개시된 발명 대상은 메모리 셀들의 제 1 및 제 2 그룹들을 포함하는 장치와 같은, 장치들 및/또는 방법에 관한 것이다. 메모리 셀들의 제 1 그룹은 메모리 셀 당 다수의 숫자들의 프로그램 데이터를 저장한다. 메모리 셀들의 제 2 그룹은 메모리 셀 당 패리티 심볼을 저장한다. 다른 장치들 및/또는 방법들이 개시된다.

Description

메모리 디바이스들에 대한 에러 보호{ERROR PROTECTION FOR MEMORY DEVICES}
본 명세서에 개시된 발명 대상은 메모리 디바이스들(memory devices)에 대한 에러 보호에 관한 것이다.
메모리 디바이스들은 몇 개만 예를 들자면, 컴퓨터들(computers), 휴대 전화들, PDA들(personal digital assistants), 데이터 로거들(data loggers), 또는 내비게이션 장비(navigational equipment)와 같은 다양한 전자 디바이스들에 사용될 수 있다. 예를 들어, 몇 개만 예를 들자면, NAND 플래시 메모리(flash memory) 또는 NOR 플래시 메모리와 같은 다양한 타입들의 비휘발성 메모리 디바이스들이 사용될 수 있다. 이는 에러 보호가 메모리 디바이스들에 제공될 수 있으면 바람직할 것이다.
도 1은 단일-레벨 메모리 셀(SLC; single-level memory cell)에 대한 프로그램(program) 동작의 일 실시예의 개략도이다.
도 2는 멀티 레벨 메모리 셀(MLC; multilevel memory cell)의 상태들을 예시하는 개략도이다.
도 3은 멀티 레벨 메모리 셀(MLC)의 다른 실시예의 상태들을 예시하는 개략도이다.
도 4는 멀티 레벨 메모리 셀을 데이터(data)의 단일 비트(single bit) 값을 나타내는 데이터 상태(data state)로 프로그래밍하는 프로세스(process)의 일 실시예의 흐름도이다.
도 5는 프로그램 데이터를 패리티 데이터(parity data)로 분할하고/하거나 패리티 데이터와 연관시키는 일 실시예의 개략도이다.
도 6은 패리티 생성기 어레이(parity generator array)의 일 실시예이다.
도 7은 패리티 생성기 어레이의 다른 실시예이다.
도 8은 컴퓨팅 시스템(computing system)의 일 실시예를 예시하는 개략도이다.
본 명세서 도처에서 "일 실시예" 또는 "하나의 실시예"에 대한 참조는 일 실시예와 관련하여 설명된 특정한 피쳐(feature), 구조, 및/또는 특성이 청구된 발명 대상의 적어도 하나의 실시예에 포함되는 것을 의미한다. 따라서, 본 명세서 도처의 다양한 곳들에서 "일 실시예에서" 또는 "하나의 실시예에서"와 같은 구들의 출현들은 반드시 동일한 실시예를 모두 나타내는 것은 아니다. 더욱이, 특정한 피쳐들, 구조들, 및/또는 특성들은 하나 이상의 실시예들로 조합될 수 있다.
청구된 발명 대상의 실시예들은 동작들을 수행하는 방법들 및/또는 장치들(예를 들어, 각각의 장치 또는 장치들 또는 그것의 구성요소들의 조합)을 포함할 수 있다. 장치는 원하는 목적들을 위해 특별히 구성될 수 있고/있거나 장치는 메모리에 저장된 컴퓨터 프로그램에 따라 동작할 수 있는 범용 컴퓨팅 디바이스를 포함할 수 있다. 프로그램은 플로피 디스크들(floppy disks), 광 디스크들, CD-ROM들(compact disc read only memories), 자기 광 디스크들(magnetic-optical disks)을 포함하는 임의의 타입의 디스크, ROM들(read-only memories), RAM들(random access memories), EPROM들(electrically programmable read-only memories), EEPROM들(electrically erasable and programmable read only memories) 및/또는 플래시(FLASH) 메모리들과 같은 비휘발성 메모리들, PCM(phase change memories) 및/또는 전자 명령어들을 저장하는데 적절한 임의의 다른 타입의 매체와 같은 메모리에 저장될 수 있으나, 이에 제한되지는 않는다.
메모리는 전형적으로 비일시적 디바이스를 포함할 수 있다. 이러한 맥락에서, 비일시적 메모리는 유형(tangible)인 디바이스를 포함할 수 있어, 디바이스가 구체적인 물리적 형태를 갖지만, 디바이스가 그것의 물리적 상태들 중 하나 이상을 변화시킬 수 있다는 것을 의미한다. 따라서, 예를 들어, 비일시적은 디바이스가 상태의 변화에도 불구하고 유형을 유지하는 것을 나타낸다.
청구된 발명 대상의 실시예들을 설명할 시에, 용어 "비트(bit)"는 이진 디지털 데이터 신호의 상태에 의해 표현되는 바와 같이, 데이터의 이진 숫자(binary digit)에 상응하며, 이는 때때로 로직 신호(logic signal), 이진 신호, 로직 상태, 또는 이진 상태로도 나타내어진다. 비트의 값, 비트의 분수, 또는 다수의 비트들은 단일 트랜지스터(transistor)와 같은 메모리 셀(memory cell)을 복수의 데이터 상태들 중 하나로 프로그래밍(예를 들어, 기록)함으로써 저장될 수 있다. 예를 들어, 단일 레벨 메모리 셀(SLC 또는 SLC 셀)에서, 셀은 제 1(예를 들어, 로직 1) 데이터 상태 또는 제 2(예를 들어, 로직 0) 데이터 상태로 프로그래밍될 수 있다. 또한, 각각의 이진 디지털 데이터 신호들 및/또는 데이터 상태들을 포함하는 다수의 데이터 상태들 및/또는 다수의 이진 디지털 데이터 신호들은 예를 들어, 2 비트, 4 비트, 8 비트, 10 비트 등을 총괄하여 나타낼 수 있는 "심볼(symbol)"을 구성(예를 들어, 어셈블(assemble))하도록 종합되고/되거나 조직될 수 있다. 일 예로, 2-비트 심볼은 00, 01, 10, 또는 11의 이진 값을 가질 수 있다. 경우에 따라서는, 단일 메모리 셀은 그러한 값들 중 어느 하나를 나타내는 각각의 데이터 상태로 선택적으로 프로그래밍될 수 있다. 예를 들어, 2-비트 심볼에 대한 00 값은 메모리 셀을 4개의 가능한 데이터 상태들의 각각의 상태(예를 들어, 임계 전압 레벨들의 각각의 범위에 상응하는)로 프로그래밍함으로써 저장될 수 있다. 유사한 방식으로, 4-비트 심볼(예를 들어, 0101)의 특정 값은 하나 이상의 메모리 셀들을 16개의 가능한 데이터 상태들의 각각의 상태로 프로그래밍함으로써 저장될 수 있고, 8-비트 심볼(예를 들어, 0000 0110)의 특정 값은 하나 이상의 메모리 셀들을 256개의 상이한 데이터 상태들의 각각의 상태로 프로그래밍함으로써 저장될 수 있는 등등이다. 상기한 심볼들 중 어느 것은 예를 들어, 하나 이상의 데이터 신호들의 하나 이상의 측정가능한 물리적 성질들(예를 들어, 음향, 전류, 방사, 및/또는 전압 레벨)로 전달될 수 있다.
또한, "코드워드(codeword)"는 프로그램 데이터(예를 들어, 저장된 정보 또는 저장될 정보)를 나타내는 다수의 메모리 셀들(예를 들어, 200개 이상의 수 정도)의 각각의 프로그래밍된 데이터 상태들로, 예를 들어, 패리티 데이터(parity data)를 나타내는 다수의 메모리 셀 상태들의 각각의 프로그래밍된 데이터 상태들과 함께 저장될 수 있으며, 후자는 다양한 메커니즘들(mechanisms)을 통해 잠재적으로 도입될 수 있었던 프로그램 데이터 내의 에러들을 검출하고/하거나 정정하기 위해 사용될 수 있다. 패리티 데이터는 에러 보호 데이터로 언급될 수도 있다. 청구된 발명 대상의 실시예들은 코드워드 내의 하나 이상의 에러들의 위치(들)가 알려져 있고/있거나 근접될 수 있는 것을 표시하는 소거 플래그(erasure flag)를 포함할 수 있다. 코드워드 내의 하나 이상의 에러들의 위치(들)가 알려져 있거나 근접될 수 있는 경우에, 하나 이상의 에러들의 위치(들)가 다르게 알려져 있으면 특정한 에러 보호 코드들(예를 들어, 리드 솔로몬(Reed Solomon) 에러 보호 코드와 같은)은 정정될 수 있는 에러들의 수의 두 배 정도를 정정할 수 있다(그러나 본 명세서에서의 아무것도 청구된 발명 대상의 실시예들을 특정 코딩 기술에 필요로 하거나 제한하는 것으로 해석되지 않아야 한다). 이러한 맥락에서, 에러 보호 코드는 에러들을 검출하고/하거나 정정하기 위해 이용되는 코드(ECC)를 나타낸다. 이러한 맥락에서, 에러 보호 코드와 관련된 코드워드는 프로그램 데이터 및 패리티 데이터를 나타내는 메모리 내의 프로그래밍된 데이터 상태들을 포함할 수 있다.
메모리는 다양한 맥락들로 이용될 수 있다. 일 예로서, 메모리는 컴퓨팅 시스템에 포함될 수 있다. 이러한 맥락에서, 용어 컴퓨팅 시스템(computing system)은 적어도 버스(bus)에 의해 결합되는 프로세서 및 메모리를 나타낸다. 마찬가지로, 본 출원에서, 용어들 메모리(memory), 메모리 시스템(memory system), 메모리 모듈(memory module), 메모리 디바이스(memory device) 및/또는 메모리 장치(memory apparatus)는 사용의 맥락이 다르게 표시하지 않으면 호환하여 사용된다. 그러나, 메모리 셀은 메모리 내의 저장 유닛(unit)을 나타내고 메모리 어레이는 메모리 셀들의 어레이를 나타낸다. 전형적으로, 어레이의 메모리 셀들은 메모리 코어(memory core)를 포함한다. 그러나, 메모리, 메모리 시스템, 메모리 모듈, 메모리 디바이스 및/또는 메모리 장치는 예를 들어, 메모리 셀들의 사용을 가능하게 하기 위해 다른 회로조직 또는 구성요소들을 포함할 수도 있다는 점이 이해된다. 마찬가지로, 메모리 서브시스템(memory subsystem)은 메모리 시스템의 서브-부분을 나타낸다.
메모리의 몇몇 타입들에 대해, 메모리 셀은 메모리 셀이 제 2 데이터 상태로부터 제 1 데이터 상태로 토글(toggle)될 수 있는 것보다 더 용이하게 제 1 데이터 상태(예를 들어, "1" 데이터 상태)로부터 제 2 데이터 상태(예를 들어, "0" 데이터 상태)로 토글될 수 있다. 그러한 메모리 셀은 "일-방향(one-directional)" 메모리 셀로 불려질 수 있다. 예를 들어, "1" 데이터 상태에서의 NOR 또는 NAND 플래시 메모리 셀은 전기 전하를 메모리 셀의 전하 저장 구조(예를 들어, 부동 게이트(floating gate) 또는 전하 트랩(charge trap))에 추가함으로써 비교적 용이하게 "0" 데이터 상태로 토글될 수 있다. 그러나, 전기 전하는 메모리 셀의 전하 저장 구조로부터 제거되는 것이 비교적 어려울 수 있어, "1" 데이터 상태로부터 "0" 데이터 상태로 다시 토글하는 것을 더 어렵게 한다. 더욱이, 전형적으로, 플래시 메모리 디바이스 내의 메모리 셀들의 블록(block)은 "0" 데이터 상태에서의 셀들을 블록 소거 또는 블록 소거 동작으로 나타내어지는, "1" 데이터 상태로 다시 토글하기 위해 실질적으로 동시에 소거된다. 그러나, 하나 이상의 블록 소거들을 실행하는 것은 바람직하지 않은 느린 프로세스를 포함할 수 있다.
일 실시예에서, 2개보다 많은 데이터 상태들 중 하나로 프로그래밍될 수 있는 메모리 셀은 종종 멀티-레벨 메모리 셀(MLC 또는 MLC 셀)로 나타내어진다. 전형적인 MLC 셀의 경우, N 비트의 데이터(N은 1보다 큼)의 특정 값은 M 데이터 상태들의 각각의 상태로 표현되며, 여기서 M = 2N이다. 그러한 경우, MLC 셀은 N 비트의 데이터를 저장하기 위해 사용될 수 있다. 예를 들어, 일 예로서, MLC 셀은 4개의 데이터 상태들 중 하나로 프로그래밍될 수 있으며, 여기서 제 1 데이터 상태는 11의 이진 값을 나타낼 수 있고, 제 2 데이터 상태는 01의 이진 값을 나타낼 수 있고, 제 3 데이터 상태는 10의 이진 값을 나타낼 수 있으며, 제 4 데이터 상태는 00의 이진 값을 나타낼 수 있다. 일 실시예에서 그러한 셀은 전기 전하를 셀의 전하 구조에 연속적으로 추가함으로써, 그리고 셀을 반드시 소거하는 것 없이 제 1 데이터 상태로부터 제 2 데이터 상태로, 제 2 데이터 상태로부터 제 3 데이터 상태로, 그리고 제 3 데이터 상태로부터 제 4 데이터 상태로 전이될 수 있다. 따라서, 그러한 셀을 제 1 데이터 상태로부터 제 1, 제 2, 또는 제 3 데이터 상태들로, 제 2 데이터 상태로부터 제 3 또는 제 4 데이터 상태들로, 또는 제 3 데이터 상태로부터 제 4 데이터 상태로 프로그래밍(예를 들어, 기록)하는 것은 본 명세서에서 "허용된 방향으로의 프로그래밍"으로 간주될 수 있다. 한편, 그렇게 수행하는 것은 종래에 셀을 우선 소거하는 것을 수반하므로, 임의의 다른 데이터 상태들 사이에서 셀을 프로그래밍하는 것은 본 명세서에서 "허용되지 않은 방향으로의 프로그래밍"으로 간주될 수 있다(이해되는 바와 같이, 이것은 셀이 그러한 데이터 상태들 사이에서 프로그래밍되도록 허용되는 것을 의미하는 것이 아니라, 단순히 그렇게 수행하는 것이 셀을 우선 소거하는 것을 수반한다는 것을 의미한다).
본 발명의 일 실시예에서, N 비트의 데이터(또한, 여기서 M = 2N)를 저장하기 위해 MLC 셀을 사용하는 대신에, 셀은 N 비트보다 적은 데이터의 값을 나타내기 위해 M개의 데이터 상태들 중 하나로 프로그래밍될 수 있다. 예를 들어, 그러한 셀은 4개의 데이터 상태들 중 하나로 프로그래밍될 수 있으며(그러한 셀은 때때로 본 명세서에서 4-레벨 MLC 셀로 언급됨), 여기서 제 1 데이터 상태는 "1"의 이진 값을 나타낼 수 있고, 제 2 데이터 상태는 "0"의 이진 값을 나타낼 수 있고, 제 3 데이터 상태도 "1"의 이진 값을 나타낼 수 있으며, 제 4 데이터 상태도 "0"의 값을 나타낼 수 있다. 따라서, 그러한 일 실시예에 따른 메모리 셀은 예를 들어, 전기 전하를 셀의 전하 구조에 연속적으로 추가함으로써 예를 들어, "1" 데이터 상태로부터 "0" 데이터 상태로, "0" 데이터 상태로부터 다른 "1" 데이터 상태로, 그리고 또 다른 "1" 데이터 상태로부터 다른 "0" 데이터 상태로 전이될 수 있다. 따라서, 그러한 일 실시예에 따른 셀은 이러한 예에서 전기 전하를 추가함으로써 그리고 셀을 소거하는 것 없이 비트 값들(예를 들어, "1" 및 "0") 사이에서 특정 횟수로 토글될 수 있다.
본 명세서에 개시된 일 실시예에서, 몇몇 MLC 셀들은 다수의 숫자들(예를 들어, 통상 "비트들(bits)"로 언급되는 이진 숫자들)을 저장하기 위해 멀티-레벨 방식으로 사용될 수 있는 반면, 다른 MLC 셀들은 단일 숫자(예를 들어, 1 비트(a bit))를 저장하기 위해 사용될 수 있다. 저장된 데이터는 예를 들어, 이전에 설명된 바와 같이, 코드워드 내의 프로그램 데이터에 대한 에러 보호를 제공하기 위해 사용되는 패리티 데이터를 포함할 수 있다. 그러한 일 실시예에 따르면, 블록 소거들이 감소될 수 있다.
예를 들어, 코드워드에 대한 에러 보호를 제공하는 것은 메모리로부터 판독되는 코드워드와 연관된 에러들을 검출하고/하거나 정정하는 것을 수반할 수 있다. 예를 들어, 해밍(7,4)과 같은 해밍 코드(Hamming Code)는 코드워드 데이터를 형성하기 위해 3 비트의 패리티 데이터를 추가함으로써 4 비트의 프로그램 데이터를 7 비트의 인코딩(encoding)된 데이터로 인코딩하기 위해 사용될 수 있으며, 여기서 1 비트의 패리티 데이터는 이러한 예에서 각각의 3 비트의 프로그램 데이터에 에러 보호를 제공하기 위해 동작할 수 있다.
종래에, 프로그램(예를 들어, 메모리 기록) 동작은 프로그래밍이 허용된 방향이기만 하면 셀을 우선 소거하는 것 없이 메모리 셀에 저장된 1 비트를 토글할 수 있다. 다른 한편, 프로그램 동작이 허용되지 않은 방향이면, 종래에 셀은 1 비트가 토글될 수 있기 전에 우선 (예를 들어, 블록 소거를 통해) 소거된다. 이와 비교하여, 허용된 방향으로의 프로그램 동작은 블록 소거를 수반할 필요가 없으며, 이는 달리 바람직하지 않은 느린 또는 지연 프로그램 동작들일 수 있다.
그러나, 코드워드 내 1 비트의 프로그램 데이터를 토글하기 위한 프로그래밍이 허용된 방향일 수 있다 하더라도, 그러한 동작은 여전히 허용되지 않은 방향으로 코드워드와 연관된 1 비트의 패리티 데이터를 프로그래밍하는 것을 수반할 수 있다. 따라서, 블록 소거가 토글링 전에 요구되지 않을 수 있음에도 불구하고, 코드워드와 연관된 패리티 데이터의 변화들은 여전히 블록 소거를 필요로 할 수 있다. 그러한 블록 소거를 회피하기 위해 "턴 오프(turn off)"되거나 다른 방법으로 무시될 수 있지만, 그렇게 수행하는 것은 코드워드에 대한 적어도 몇몇 에러 보호가 바람직하지 않게 손실될 수 있다는 것을 의미할 것이다.
따라서, 본 명세서에 설명된 실시예들은 블록 소거를 회피하면서 또는 블록 소거 동작들이 덜 빈번하게 발생함으로써 에러 보호를 메모리 디바이스들에 제공하는 기술들을 수반할 수 있다. 기술들은 반드시 블록 소거를 필요로 하는 것 없이 1 숫자의 패리티 데이터가 종래에 허용되지 않은 방향으로 프로그래밍되는 것을 허용할 수 있다. 하나의 기술은 블록 소거 동작을 실행하기 전에 임계값 아래에서 많은 패리티 데이터 변화들을 유지하는 패리티 데이터를 생성하는 것을 포함할 수 있다. 가능한 실시예에서, 패리티 데이터는 임계값 아래에서 많은 패리티 데이터 변화들을 유지하기 위한 방식으로 구성될 수 있는 패리티 생성기 어레이를 적어도 부분적으로 사용하여 생성될 수 있다. 예를 들어, 제 1 그룹의 메모리 셀들의 단일 MLC 셀은 일 실시예에서 단일 비트의 패리티 데이터를 저장하기 위해 사용될 수 있다. 한편, 제 2 그룹의 메모리 셀들의 단일 MLC 셀은 2 비트 이상의 프로그램 데이터를 저장하기 위해 사용될 수 있다.
일 구현예에서, 메모리 프로그래밍 회로조직은 예를 들어, MLC 셀을 소거하기 전에 1 비트의 패리티 데이터를 다수 회 변화시키기 위해(예를 들어, 제 1 값과 제 2 값 사이에서 1 비트의 패리티 데이터를 토글하기 위해) MLC 셀의 전하 저장 구조에 전기 전하를 저장할 수 있다. 일 실시예에서, 가능한 변화들의 수는 MLC 셀이 프로그래밍될 수 있는 많은 가능한 데이터 상태들에 상응할 수 있다. 예를 들어, MLC 셀이 M개의(예를 들어, 4개의) 가능한 데이터 상태들 중 하나에 프로그래밍될 수 있으며, 그것은 M-1(예를 들어, M=4이면, 3)회까지 토글될 수 있다. 물론, 하나 이상의 메모리 셀(들)을 동작시키는 이러한 상세들은 단지 예들이고, 청구된 발명 대상은 그렇게 제한되지 않는다.
상기 언급된 바와 같이, NAND 또는 NOR 플래시 메모리 디바이스와 같은, 플래시 메모리 디바이스는 예를 들어, 셀 당 다수의 비트들을 저장하는 대신에 셀 당 단일 비트의 패리티 데이터를 저장하기 위해 사용될 수 있는 하나 이상의 MLC 셀들을 포함할 수 있다. 단일 비트의 데이터의 값은 예를 들어, "1" 또는 "0"을 포함할 수 있다. 하나의 가능한 실시예에서, MLC 셀은 그것의 임계 전압 레벨이 다수(M개)의 별개 전압 범위들 중 하나에 있도록 프로그래밍될 수 있는 트랜지스터를 포함할 수 있으며, 각각의 전압 범위들은 메모리 셀의 각각의 데이터 상태에 개별적으로 상응한다. 이러한 몇몇 데이터 상태들은 다수의 가능한 데이터 상태들 중, 이러한 예에서, 패리티 데이터를 나타내는 어느 데이터 상태로, 메모리 셀이 프로그래밍되는 것을 검출하는 프로세스에서 서로 구별 가능할 수 있다. 예를 들어, 기록 컨트롤러(controller) 또는 판독 컨트롤러는 하나의 가능한 실시예에서, 예를 들어, MLC 메모리 셀에 단일 비트의 데이터를 저장하는 것을 수용하는 메모리 디바이스를 동작시킬 수 있다.
하나 이상의 실시예들에서, 프로그램 및 데이터 패리티 데이터를 포함하는 코드워드 데이터는 패리티 데이터를 저장하는 메모리 디바이스의 상응하는 셀(또는 블록)을 우선 소거하는 것 없이 저장된 비트의 패리티 데이터가 1회보다 많이 변화될 수 있도록, 메모리 디바이스와 같은 장치에 저장될 수 있다. 일 구현예에서, 코드워드 데이터는 비트들의 그룹들로서 메모리에 저장될 수 있으며, 여기서 패리티 데이터는 프로그램 데이터의 비트들의 각각의 그룹들과 연관된 데이터의 비트들로서 저장될 수 있다. 따라서, 일 예로, 코드워드 데이터는 프로그램 및 패리티 데이터의 비트들의 일관되게 사이징(sizing)된 그룹들로서 메모리에 저장될 수 있다. 예를 들어, 패리티 데이터는 예를 들어, 코드워드, 또는 그것의 일부를 형성하기 위해 프로그램 데이터의 비트들의 일관되게 사이징된 그룹과 연관된 데이터의 각각의 비트로 저장될 수 있다. 예를 들어, 코드워드는 일 예로, 패리티 데이터에 더하여, 16개의 16-비트 워드들로 저장된 256 비트의 프로그램 데이터를 포함할 수 있다. 물론, 비트들의 일관되게 사이징된 그룹들은 프로그램 데이터이든지 또는 프로그램 및 패리티 데이터 함께이든지 1 바이트(byte), 1 워드(word), 다수의 바이트들, 또는 다수의 워드들의 것과 같은, 임의의 수의 비트들을 포함할 수 있고, 청구된 발명 대상은 이 점에 있어서 제한되지 않는다.
코드워드 데이터의 비트들의 그룹들의 크기들은 패리티 데이터를 저장하는데 할당된 메모리의 양에 영향을 미칠 수 있다. 예를 들어, 패리티 데이터(예를 들어, 어레이 오버헤드(array overhead)의 적어도 일부분)를 저장하는데 할당된 플래시 메모리의 양은 비트들의 그룹들에서의 프로그램 데이터 비트들의 평균 수가 증가함에 따라 코드워드 데이터의 그것에 비례하여 퍼센트를 기준으로 감소할 수 있다. 예를 들어, 퍼센트 기준은 다수의 비트들의 패리티 데이터 대 연관된 수의 비트들의 코드워드 데이터의 비율을 포함할 수 있다.
상기 언급된 바와 같이, 패리티 데이터는 블록 소거와 같은, 소거 동작이 실행되기 전에 특정 수 아래에 있기 위해 다수의 데이터 상태 변화들을 유지하도록 생성될 수 있다. 이전에 언급된 바와 같이, 1 비트의 패리티 데이터는 일 실시예에서 다수의 비트들을 포함하는 단위의 레벨에서 프로그램 데이터와 연관될 수 있다. 예를 들어, 1 비트의 패리티 데이터는 바이트들, 워드들, 다수의 바이트들, 또는 다수의 워드들의 프로그램 데이터와 같은, 비트들의 프로그램 데이터의 그룹들과 연관될 수 있다. 몇몇 예들에서, 비트들의 그룹들은 일관되게 사이징될 수 있다. 다시 말해, 몇몇 실시예들에서, 1 비트의 패리티 데이터는 몇 개만 예를 들자면, 셀 당, 바이트 당, 또는 워드 당에 기초하여 프로그램 데이터와 연관될 수 있다. 그러나, 다른 실시예들에서, 그룹들은 반드시 일관되게 사이징될 필요는 없다.
도 1은 단일-레벨 메모리 셀(SLC 또는 SLC 셀)에 대한 프로그램 동작의 일 실시예의 개략도이다. 수평 축은 메모리 셀의 트랜지스터의 전하 저장 구조 상의 전기 전하의 양을 설명하기 위해 사용될 수 있고, 수직 축은 메모리 셀에 대한 데이터 상태 확률의 크기를 설명하기 위해 사용될 수 있다. 예를 들어, 데이터 상태 확률은 메모리 셀이 "1" 데이터 상태 또는 "0" 데이터 상태와 같은, 2개의 데이터 상태들 중 하나에 있는 확률을 나타낼 수 있다. 물론, 다른 실시예들은 임의의 수의 메모리 셀 데이터 상태들을 수반할 수 있고, 청구된 발명 대상은 이점에 있어서 제한되지 않는다. 일 예로서, 메모리 셀의 전하 저장 구조는 임의의 프로그래밍 전에, 전하 레벨(105)에 있을 수 있으며, 이는 "1" 데이터 상태에 상응할 수 있다. 메모리 셀은 전하를 전하 저장 구조에 추가함으로써 "0" 데이터 상태로 전이(예를 들어, 토글)될 수 있다. 예를 들어, 메모리 셀의 전하 저장 구조는 전하 레벨(120)로 충전될 수 있으며, 이는 "0" 데이터 상태에 상응할 수 있다. SLC 셀에서 데이터 상태를 더 전이(예를 들어, 토글)시키기 위해, 예를 들어, 블록 소거를 포함하는 것과 같은, 소거 동작이 이용될 수 있다. 불행하게도, 플래시 메모리에서의 소거는 예를 들어, 단일 메모리 셀보다는 오히려 메모리 셀들의 블록을 소거하는 것을 전형적으로 수반하고/하거나 예를 들어, 셀을 프로그래밍하는 것과 같은, 다른 메모리 동작보다 비교적 더 느릴 수 있다. 물론, "1" 데이터 상태 및 "0" 데이터 상태는 도 1에 도시된 전하 레벨들에 상응할 필요가 없으며, 도 1에 도시된 전하 레벨은 "1" 데이터 상태 및 "0" 데이터 상태에 상응할 필요도 없고, 청구된 발명 대상은 이 점에 있어서 제한되지 않는다. 이것은 단지 예시이다.
MLC 셀은 도 2에 도시된 바와 같이, 2개보다 많은 데이터 상태들 중 하나로 프로그래밍될 수 있으며, 도 2는 2비트의 데이터(예를 들어, 11, 10, 00, 또는 01의 이진 값들)를 저장할 수 있는 MLC 셀의 일 실시예의 개략도이며, 이는 때때로 본 명세서에서 4-레벨 MLC 셀로 언급된다. 수평 축은 메모리 셀의 전하 저장 구조 상의 전하의 양을 설명하기 위해 사용될 수 있고, 수직 축은 메모리 셀에 대한 데이터 상태 확률의 크기를 설명하기 위해 사용될 수 있다. 데이터 상태 확률은 메모리 셀이 이진 값들 "11", "10", "00", 및/또는 "01"에 상응하는 것들과 같은, 4개의 데이터 상태들 중 하나로 프로그래밍되는 확률을 나타낼 수 있다. 물론, 다른 실시예들은 임의의 수의 데이터 상태들을 수반할 수 있고, 청구된 발명 대상은 그렇게 제한되지 않는다. 이것은 단지 예시이다.
이전에 언급된 바와 같이, 메모리 셀은 전압 레벨들의 다수의 범위들 중 하나 내에서 임계 전압으로 프로그래밍될 수 있는 트랜지스터(도시되지 않음)를 포함할 수 있으며, 여기서 범위는 각각의 데이터 상태, 예를 들어, 230, 240, 250, 및 260에 상응하며, 이는 차례로 1 비트보다 많은 데이터의 각각의 값을 나타낸다. 예를 들어, 제 1 데이터 상태(230)는 제 1 레벨(235) 아래의 전압 레벨에 상응할 수 있다. 제 2 데이터 상태(240)는 제 1 레벨과 제 2 레벨(245) 사이의 전압 레벨에 상응할 수 있다. 제 3 데이터 상태(250)는 제 2 레벨과 제 3 레벨(255) 사이의 전압 레벨에 상응할 수 있으며, 제 4 데이터 상태(260)는 제 3 레벨 위의 전압 레벨에 상응할 수 있는 등등이다. 각각의 데이터 상태들은 예를 들어, 데이터 상태(230)의 경우에 "11", 데이터 상태(240)의 경우에 "10", 데이터 상태(250)의 경우에 "00", 또는 데이터 상태(260)의 경우에 "01"과 같은, 2 비트의 데이터의 각각의 값을 나타낼 수 있다. 물론, 데이터 상태들은 특정 전압 범위들에 상응하거나 도 2에 제시된 특정 값들을 나타낼 필요는 없고, 청구된 발명 대상은 이 점에서 제한되지 않는다. 이것은 단지 예시이다.
일 실시예에 따르면, MLC 셀은 도 3에 도시된 바와 같이, 단일 비트의 패리티 데이터를 저장하기 위해 사용될 수 있으며, 도 3은 전압 레벨들의 다수의 범위들의 일 실시예(300)의 개략도이며, 여기서 몇몇 범위들은 이러한 예에 예시된 바와 같이, 셀에 저장된 단일 비트의 패리티 데이터의 동일한 값을 나타낼 수 있다. 도 4는 도 3에 도시된 바와 같은, MLC 셀에 단일 비트의 데이터를 저장하는 프로세스(400)의 일 실시예의 흐름도이다. 도 3의 수평 축은 메모리 셀의 전하 저장 구조 상의 전하의 양을 설명하기 위해 사용될 수 있고, 수직 축은 메모리 셀에 대한 데이터 상태 확률의 크기를 설명하기 위해 사용될 수 있다. 예를 들어, 데이터 상태들(310, 320, 330, 및 340)은 각각, 대략 1.0 내지 1.2 볼트, 2.0 내지 2.2 볼트, 3.3 내지 3.5 볼트, 및 4.8 내지 5.0 볼트의 범위들 내의 전압 레벨들에 상응할 수 있다. 물론, 이러한 전압 레벨 범위들은 단지 예들이고, 청구된 발명 대상은 그렇게 제한되지 않는다. 이것은 단지 예시이다. MLC 셀은 임의의 수의 전압 레벨 범위들을 포함할 수 있고, 청구된 발명 대상은 4개의 범위들에 제한되지 않는다.
일 실시예에 따르면, MLC 셀은 전하 저장 구조를 소거하는 것 없이 다수 회 프로그래밍될 수 있다. 예를 들어, 프로세스(400)에서, 메모리 셀은 예를 들어, "1"의 이진 값을 갖는 1 비트의 데이터를 저장하기 위해 제 1 데이터 상태(310)에 상응하는 전하 레벨에서 전하 저장 구조로 시작할 수 있다. 이것은 예를 들어, 일 구현예에서, 소거 동작만을 실행했던 것에 상응할 수 있다. 따라서, 일 구현예에서, 메모리 셀은 메모리 셀이 소거되는 결과로서 "1"의 이진 값을 갖는 1 비트의 데이터를 저장할 수 있다(예를 들어, 블록(460) 참조). 물론, 이것은 단지 예시적 실시예이고 많은 다른 대안예들이 가능하고 청구된 발명 대상의 범위 내에 포함된다.
이러한 예를 계속하면, 셀의 데이터 상태는 블록들(430 및 435)에 도시된 바와 같이, 전하를 전하 저장 구조에 추가(예를 들어, 주입)함으로써 "0"의 이진 값을 갖는 1 비트를 저장하기 위해 전이될 수 있다. 그 결과, 메모리 셀의 전하 저장 구조는 예를 들어, 제 2 데이터 상태(320)에 상응하는 전하 레벨(예를 들어, 범위 내)에 있음으로써, "0"의 이진 값을 갖는 1 비트의 데이터를 저장할 수 있다. 메모리 셀의 데이터 상태는 블록들(440 및 445)에 도시된 바와 같이, 부가 전하를 전하 저장 구조에 추가함으로써 "1"의 이진 값을 갖는 1 비트를 저장하기 위해 다시 전이될 수 있다. 그 결과, 메모리 셀의 전하 저장 구조는 제 3 데이터 상태(330)에 상응하는 전하 레벨(예를 들어, 범위 내)에 있어, "1"의 이진 값을 갖는 1 비트의 데이터를 저장할 수 있다. 메모리 셀의 데이터 상태는 블록들(450 및 455)에 도시된 바와 같이, 부가 전하를 전하 저장 구조에 더 추가함으로써 "0"의 이진 값을 갖는 1 비트를 저장하기 위해 다시 전이될 수 있다. 그 결과, 메모리 셀의 전하 저장 구조는 제 4 데이터 상태(340)에 상응하는 전하 레벨(예를 들어, 범위 내)에 있어, "0"의 이진 값을 갖는 1 비트의 데이터를 저장할 수 있다. 예시된 실시예에 따르면, 메모리 셀의 데이터 상태를 더 전이시키기 위해, 소거 동작은 블록(460)에 도시된 바와 같이 이용되어, 이전에 설명된 바와 같이, 소거 동작 후에 셀을 초기 상태로 복귀시킬 수 있다. 물론, 상기 설명된 프로그램 또는 소거 동작의 상세들은 단지 메모리 셀의 데이터 상태를 전이시키는 예들이고, 청구된 발명 대상은 그렇게 제한되지 않는다.
도 5는 프로그램 데이터를 워드코드(예를 들어, ECC 또는 에러 보호 코드를 이용하는) 내의 패리티 데이터와 연관시키는 일 실시예(500)의 개략도이다. 데이터의 특정 배열이 도시되지만, 이들은 단지 예들이고, 청구된 발명 대상은 임의의 특정 수들에 제한되지 않는다. 상기 논의된 바와 같이, 패리티 데이터는 메모리에 기록된 프로그램 데이터에 대한 에러 보호를 제공할 수 있다. 예를 들어, 패리티 데이터는 코드워드의 특정 프로그램 데이터와 연관될 수 있는 하나 이상의 비트들을 포함할 수 있다. 메모리 셀들을 상응하는 데이터 상태들로 프로그래밍함으로써 메모리 셀들에 저장된 비트들의 집합은 프로그램 데이터 및 연관된 패리티 데이터를 포함하는 코드워드 데이터를 포함할 수 있다.
이전 예로 돌아가서, 해밍(7,4) 코드는 이러한 예에서, 3 비트의 패리티 데이터를 포함하여, 4 비트의 프로그램 데이터를 7 비트의 코드워드의 인코딩된 데이터로 인코딩하기 위해 사용될 수 있다. 그러한 코드를 수용하기 위해, 코드워드의 워드(510)는 일 실시예에서, 4 비트의 그룹들(520)로 분할될 수 있다. 그러한 그룹(520) 내의 4 비트의 프로그램 데이터는 이러한 예에서 7 비트의 인코딩된 데이터(예를 들어, 4 비트의 프로그램 데이터(530) 및 3 비트의 연관된 패리티 데이터(540))로 인코딩될 수 있다. 물론, 다른 실시예들은 코드워드 데이터가 프로그램 데이터로부터 형성되고 패리티 데이터와 연관되는 다른 배열들의 ECC를 수반할 수 있고, 청구된 발명 대상은 임의의 특정 배열에 제한되지 않는다. 예를 들어, 한 경우, 11 비트의 프로그램 데이터는 4 비트의 패리티 데이터(예를 들어, 해밍(15,11))와 연관될 수 있는 반면, 다른 경우에 26 비트의 프로그램 데이터는 5 비트의 패리티 데이터(예를 들어, 해밍(31,26))와 연관될 수 있다. 이러한 경우들에서, 코드워드 데이터의 분할은 예를 들어, 도 5에 도시된 것과 상이할 수 있다.
실시예(500)로 돌아가서, 프로그램 데이터(530)는 멀티-레벨 방식으로 MLC 셀들에 저장될 수 있다. 멀티-레벨 방식으로 MLC 셀들에 프로그램 데이터를 저장하는 것은 동일한 양의 프로그램 데이터가 SLC 셀들에 저장되었다면 주어진 양의 프로그램 데이터가 보다 적은 셀들에 저장되는 것을 허용한다. 따라서, 프로그램 데이터를 저장하는 용량이 증가될 수 있다. 예를 들어, 4 비트의 프로그램 데이터는 4개의 데이터 상태들 중 하나로 프로그래밍될 수 있는 2개의 MLC 셀들에 저장될 수 있다. 다시 말해, 1 보다 많은 비트의 데이터가 단일 MLC 셀에 저장될 수 있다. 한편, 적어도 하나의 실시예에서, 단일 비트의 패리티 데이터(540)가 단일 MLC 셀에 저장될 수 있다. 예를 들어, 1 비트의 패리티 데이터는 4개의 데이터 상태들 중 하나로 프로그래밍될 수 있는 단일 MLC에 저장될 수 있다. 단일 MLC 셀에 단일 비트의 패리티 데이터를 저장하는 것은 블록 소거 동작이 이용되기 전에 그러한 MLC 셀이 다수 회 프로그래밍되는 것을 허용할 수 있다. 따라서, 단일 MLC 셀에 1 비트의 패리티 데이터의 값이 다수 회 변화될 수 있다.
MLC들(550) 상에서 수행된 특정 프로그램 동작은 블록 소거를 갖지 않거나 보다 적은 블록 소거 동작들을 가지고 저장된 프로그램 데이터 변화를 야기할 수 있다. 마찬가지로, 일 실시예에 따르면, 그렇게 저장된 프로그램 데이터와 연관된 패리티 데이터의 비트들을 저장하는 MLC 셀들(560)은 연관된 프로그램 데이터를 변화시키는 결과로서 프로그래밍되지만, 블록 소거를 갖지 않거나 보다 적은 블록 소거 동작들을 가지고 프로그래밍될 수도 있다. 따라서, 일 실시예에서, 프로그램 동작들은 블록 소거를 갖지 않거나 보다 적은 블록 소거 동작들을 가지고 패리티 데이터 및/또는 프로그램 데이터 변화들을 수용하기 위해 수행될 수 있다.
다수의 가능한 기술들 중에서, 패리티 데이터는 매트릭스(matrix)와 같은, 패리티 생성기 어레이를 사용하여 생성될 수 있으며, 이는 패리티 데이터가 소거 동작 전에 특정 회수 변화되는 것을 허가하는 방식으로 이용될 수 있다. 예를 들어, 일 구현예에서, 패리티 데이터가 4개의 데이터 상태들 중 하나로 프로그램될 수 있는 MLC 셀들에 저장되면, 패리티 생성기 어레이는 1 비트의 패리티 데이터가 3(예를 들어, 4 마이너스 1)회 변화되는 것을 허가할 수 있으나, 청구된 발명 대상은 그렇게 제한되지 않는다.
도 6은 매트릭스와 같은, 패리티 생성기 어레이(600)의 일 실시예이다. 어레이(600)는 4개의 데이터 상태들 중 하나로 프로그래밍될 수 있는 MLC 셀들이 패리티 데이터를 저장하기 위해 사용될 수 있는 일 구현예에 상응할 수 있다. 해밍(20, 12) 코드는 패리티 데이터를 생성하기 위해 사용될 수 있지만, 청구된 발명 대상은 그렇게 제한되지 않는다. 패리티 생성기 어레이는 다수의 비트들의 프로그램 데이터를 동일하게 나타내는 1차원 및 다수의 비트들의 패리티 데이터를 나타내는 다른 차원을 포함할 수 있다. 물론, 도 6에 도시된 배열은 단지 일 예이고, 청구된 발명 대상은 그렇게 제한되지 않는다.
어레이(600)는 12개의 행들 및 8개의 열들을 포함할 수 있다. 어레이에서, "1"들은 "1" 데이터 상태들로 프로그래밍되는 메모리 셀들에 의해 표현될 수 있고, "0"들은 "0" 데이터 상태들로 프로그래밍되는 메모리 셀들에 의해 표현될 수 있다. 어레이(600)의 열은 1 비트의 패리티 데이터에 상응할 수 있다. 어레이(600)의 행은 1 비트의 프로그램 데이터에 상응할 수 있다. 열 및 행 내의 "1"들은 프로그램 데이터의 각각의 비트와 패리티 데이터의 각각의 비트 사이의 연관성을 형성할 수 있다. 따라서, 어레이(600) 내의 위치는 프로그램 데이터의 특정 비트와 패리티 데이터의 특정 비트 사이의 연관성을 나타낼 수 있다.
도 6에 예시된 것과 같은 어레이(600)를 이용하는 것은 일 실시예에서, 예를 들어, 소거 동작을 이용하기 전에, 1 비트의 패리티 데이터가 3회 변화되는 것을 허가할 수 있으며, 여기서 1 비트의 패리티 데이터는 이러한 특정 예에서(예를 들어, 4개의 데이터 상태들 중 하나로 프로그래밍될 수 있는 MLC들을 포함하는 MLC 메모리 어레이에 대해) 3 비트의 프로그램 데이터와 연관될 수 있다. 예를 들어, 이전에 논의된 바와 같이, 멀티-레벨 성능은 달리 허용되지 않는 방향으로 변화를 허가하기 위해 이용될 수 있다(예를 들어, 소거 동작을 이용하는 것을 수반하는). 따라서, 적어도 하나의 가능한 실시예에서, 1 비트의 패리티 데이터에 상응하는 열은 3개의 "1"들을 포함할 수 있다.
다른 수들의 "1"들이 행들 및 열들에 포함될 수 있다. 일 구현예에서, 예를 들어, 패리티 데이터 또는 패리티 생성기 어레이를 생성하기 전에, MLC 셀이 프로그래밍될 수 있는 데이터 상태들의 수는 일 예로서, 특수 목적 소프트웨어(software)와 같이, 미리 저장되거나 선택가능할 수 있다. 프로세서는 일 예로서, 적절한 패리티 생성기 어레이를 생성하기 위해 이러한 정보를 사용할 수 있다.
도 7은 매트릭스와 같은, 패리티 생성기 어레이(700)의 다른 실시예이다. 어레이(700)는 어레이(600) 구현에 대한 적어도 몇몇과 유사하게, 다른 구현예를 포함할 수 있다. 유추에 의해, 어레이(600)의 행은 어레이(700)의 서브-어레이(예를 들어, 710, 720, 730 등)에 상응할 수 있다. 따라서, 어레이(600) 내의 행은 방금 설명된 바와 같이, 1 비트의 프로그램 데이터에 상응하며; 마찬가지로, 700 내의 서브-어레이는 1 워드의 프로그램 데이터에 상응한다. 어레이(600) 내의 열은 3개의 "1"들을 포함하며; 마찬가지로, 어레이(700)는 3개의 서브 어레이들이 상응하는 0이 아닌 열을 갖도록 배열된다.
이전에, 1 비트 패리티가 이용되었다. 여기서, 2 비트를 포함하는 패리티 심볼이 이용된다. 따라서, 패리티 생성기 어레이(700)는 예를 들어, 4개의 상태 레벨들을 저장하는 MLC들에 상응하는 네 요소로 구성된-값의 상태들을 포함하는 어레이를 포함한다. 즉, 이러한 예에서, 어레이(700) 내의 구성요소들은 4개의 수들: "0"; "1"; "2"; 또는 "3" 중 어느 하나를 포함할 수 있다. 도 7에서, 어떤 구성요소도 기록되지 않은 어레이(700) 내의 빈 공간들은 편의상 "0"들을 나타낸다.
또한, 어레이(700)의 서브-어레이는 1 워드의 프로그램 데이터에 상응한다. 더 구체적으로, 어레이(700)의 각각의 행들은 1 워드(예를 들어, 4-레벨 MLC에 저장되는)의 프로그램 데이터의 2 비트에 상응한다. 따라서, 어레이(700)의 8개의 행들은 어레이(700)를 사용하여 인코딩될 수 있는 16 비트(예를 들어, 1 워드)의 프로그램 데이터에 상응할 수 있다. 물론, 어레이(700)를 설명하기 위해 사용되는 특정 수들 및 다른 상세들은 단지 예들이고, 청구된 발명 대상은 그렇게 제한되지 않는다.
따라서, 코드워드가 16개의 워드들(예를 들어, 비트들의 일관되게 사이징된 그룹들)로 분할된 256 비트의 프로그램 데이터를 포함하는 경우, 어레이(700)는 16개의 서브-어레이들(710, 720, 730, 및 740)를 포함할 수 있다(730과 740 사이의 서브-어레이들은 도시되지 않음). 그러한 경우에, 1 워드는 16 비트를 포함한다. 어레이(700)의 각각의 서브-어레이들은 상기 진술된 바와 같이, 이러한 예에서 16 비트 워드에 상응한다. 256-비트 예(예를 들어, 128 MLC 셀들에 저장된 16 워드들)에 대한 에러들을 검출하고/하거나 정정할 시에 사용하기 위한 패리티 데이터를 생성하기 위해, 어레이(700)의 3개의 서브-어레이들은 패리티 심볼에 상응하는 열과 함께, 상응하는 0이 아닌 열을 포함한다. 따라서, 예를 들어, 어레이(700)의 각각의 서브-어레이들(710 내지 740)은 몇몇 상응하는 0이 아닌 열들을 포함한다.
각각의 서브-어레이들(710 내지 740)은 "0"들, "1"들, "2"들, 또는 "3"들의 8개의 행들 및 16개의 열들을 포함할 수 있다. 각각의 서브-어레이들(710 내지 740) 내의 "1"들, "2"들, 또는 "3"들은 프로그램 데이터와 패리티 데이터 사이의 연관성을 형성할 수 있다. 따라서, 어레이(700)의 서브-어레이들 내의 0이 아닌 열 교차들(예를 들어, 상응하는 열들)은 1 워드의 프로그램 데이터(예를 들어, "워드 레벨" 단위를 가지는)와 패리티 심볼들 사이의 연관성을 나타낼 수 있다. 따라서, 이러한 예에서, 구성에 의해, 3회까지 토글하도록 허가되는 패리티 심볼은 예를 들어, 3 워드들의 프로그램 데이터와 연관될 수 있다.
어레이(700)는 상기 언급된 바와 같이, 4개의 데이터 상태들 중 하나로 프로그래밍될 수 있는 MLC 셀이 패리티 심볼을 저장하기 위해 사용되는 일 구현예에 상응할 수 있다. 따라서, 어레이(700)는 단위의 워드 레벨에서 프로그램 데이터에 대한 패리티 데이터를 생성하기 위해 사용될 수 있다. 프로그램 데이터는 한 번에 1 워드 변환될 수 있다(예를 들어, 프로그램 동작 당 1 워드 변화). 유추에 의해, 그러나 또한 대조적으로, 어레이(600)는 프로그램 데이터에서 비트 레벨 단위 변화들의 예시들을 제공한다. 따라서, 프로그램 데이터의 상응하는 양에 대해, 다수의 MLC들은 1-워드(예를 들어, 이러한 예에서 16-비트) 레벨 단위에 상응하는 패리티 데이터를 저장하는 것과 비교하여 1-비트 레벨 단위에 상응하는 패리티 데이터를 저장하는 것에 수반될 수 있는 것으로 보여진다. 물론, 어레이가 특정 실시예에 대해 저장되는 대신 생성될 수 있다는 점이 주목된다.
패리티 데이터를 생성하는 어레이(700)를 사용하면, 4개-상태 MLC에 저장될 수 있는 임의의 특정 패리티 심볼은 3개의 상태 전이들까지 허가될 수 있다. 16개의 16-비트 워드들을 포함하는 코드워드의 예에서, 프로그램(예를 들어, 기록) 동작들은 데이터를 한 번에 1 워드 저장할 수 있다. 예를 들어, 제 1 워드(프로그램 데이터의 16 워드들의)는 프로그래밍될 수 있으며, 그 후에 제 2 워드가 프로그래밍될 수 있는 등등이다. 물론, 어레이(700)의 상세들은 단지 예들이고, 청구된 발명 대상은 그렇게 제한되지 않는다.
표 1은 패리티 생성기 어레이에 적어도 부분적으로 기초하여, 4-레벨 MLC들에 대한 프로그램 데이터(예를 들어, 열 C) 및/또는 패리티 데이터(예를 들어, 열 B)의 변화하는 배열들을 갖는 많은 경우들을 제시한다. 물론, 패리티 생성기 어레이는 임의의 형태 또는 구조를 포함할 수 있고, 청구된 발명 대상은 반드시 열들 또는 행들을 포함하는 패리티 생성기 어레이에 제한되는 것은 아니다. 그러나, 열 A 내의 라인(line) 6은 어레이(600)를 수반하는 대표적인 실시예에 상응할 수 있거나 여기서 패리티 데이터는 열들에 상응하고 프로그램 데이터는 행들에 상응한다. 열 D는 패리티 심볼들 대 프로그램 데이터 비트들의 수의 비율을 나타낸다. 열 E는 예를 들어, 실시예(500)와 같은 일 실시예에서 사용될 수 있는 MLC 셀들의 수를 나타낸다.
A
라인 번호
B
패리티 심볼들의 수
C
프로그램 데이터 비트들의 수
D
어레이 OH
(%)
E
MLC들의 수
1 3 4 75.0 5
2 4 6 66.7 7
3 5 7 71.4 8.5
4 6 9 66.7 10.5
5 7 10 70.0 12
6 8 12 66.7 14
7 9 13 69.2 15.5
8 10 15 66.7 17.5
9 11 16 68.8 19
10 12 18 66.7 21
11 13 19 68.4 22.5
12 14 21 66.7 24.5
13 15 22 68.2 26
14 16 24 66.7 28
15 17 25 68.0 29.5
16 18 27 66.7 31.5
17 86 129 66.7 150.5
18 171 256 66.8 299
도 8은 예를 들어, 체인 토폴로지(chain topology)에서 서로 상호 연결되는 메모리 디바이스들을 포함하는 멀티-칩(multi-chip) 메모리 모듈을 포함할 수 있는, 메모리 모듈(910)(장치로 간주될 수도 있는)을 포함하는 컴퓨팅 시스템(900)의 형태로 장치의 일 실시예를 예시하는 개략도이다. 컴퓨팅 디바이스는 예를 들어, 응용(application) 또는 다른 코드(code)를 실행하기 위해 하나 이상의 프로세서들을 포함할 수 있다. 컴퓨팅 디바이스(904)는 메모리 모듈(910)을 관리하기 위해 사용될 수 있는 임의의 디바이스, 기기, 또는 기계를 나타낼 수 있다. 메모리 모듈(910)은 메모리 컨트롤러(915) 및 메모리(922)를 포함할 수 있다. 제한이 아닌 예로서, 컴퓨팅 디바이스(904)는 예를 들어, 데스크톱 컴퓨터(desktop computer), 랩톱 컴퓨터(laptop computer), 워크스테이션(workstation), 서버 디바이스(server device) 등과 같은, 하나 이상의 컴퓨팅 디바이스들 또는 플랫폼들(platforms); 예를 들어, 개인 휴대 정보 단말기(personal digital assistant), 이동 통신 디바이스 등과 같은, 하나 이상의 개인용 컴퓨팅 또는 통신 디바이스들 또는 기기들; 예를 들어, 데이터베이스(database) 또는 정보 저장 서비스 제공자 또는 시스템과 같은, 컴퓨팅 시스템 또는 연관된 서비스 제공자 성능; 또는 그것의 임의의 조합을 포함할 수 있다.
시스템(900)에 도시된 다양한 디바이스들의 전부 또는 일부, 및 본 명세서에 더 설명되는 바와 같은 프로세스들 및 방법들은 소프트웨어 외에 단독으로, 하드웨어(hardware), 펌웨어(firmware), 또는 소프트웨어 중 적어도 하나를 사용하거나 다른 방법으로 포함하여 구현될 수 있다는 점이 인식된다. 따라서, 제한이 아닌 예로서, 컴퓨팅 디바이스(904)는 버스(940) 및 호스트(host) 또는 메모리 컨트롤러(915)를 통해 메모리(922)에 동작 가능하게 결합되는 적어도 하나의 처리 유닛(920)을 포함할 수 있다. 처리 유닛(920)은 컴퓨팅 절차 또는 프로세스의 적어도 일부를 수행할 수 있는 하나 이상의 디바이스들을 나타낸다. 제한이 아닌 예로서, 처리 유닛(920)은 하나 이상의 프로세서들, 마이크로프로세서들(microprocessors), 컨트롤러들, 응용 주문형 집적 회로들(application specific integrated circuit), 디지털 신호 프로세서들, 프로그램 가능 로직 디바이스들(programmable logic devices), 필드 프로그램 가능 게이트 어레이들(field programmable gate arrays) 등, 또는 그것의 임의의 조합을 포함할 수 있다. 처리 유닛(920)은 메모리 컨트롤러(915)와 통신할 수 있는 실행될 운영 체제를 포함할 수 있다. 운영 체제는 예를 들어, 버스(940)를 통해 또는 버스에 의해 메모리 컨트롤러(915)에 송신될 커맨드들(commands)을 생성할 수 있다. 커맨드들은 예를 들어, 판독 또는 기록 커맨드들을 포함할 수 있다. 기록 커맨드에 대응하여, 예를 들어, 메모리 컨트롤러(915)는 메모리를 프로그래밍하고 패리티 데이터를 변화시키기 위해, 상술된 프로세스(800)를 수행할 수 있다.
메모리(922)는 임의의 정보 저장 메커니즘을 나타낸다. 메모리(922)는 예를 들어, 일차 메모리(924) 또는 이차 메모리(926)를 포함할 수 있다. 일차 메모리(924)는 예를 들어, 랜덤 액세스 메모리(random access memory), 판독 전용 메모리 등을 포함할 수 있다. 이러한 예에서 처리 유닛(920)으로부터 분리되는 것으로 예시되지만, 일차 메모리(924)의 전부 또는 일부는 처리 유닛(920) 내에 제공되거나 다른 방법으로 같은 장소에 배치되거나 처리 유닛과 결합될 수 있다는 점이 이해되어야 한다. 일 구현예에서, 메모리(922)는 예를 들어, 집적 회로에 통합될 수 있으며, 이는 처리 유닛(920)으로부터 에러 신드롬들(error syndromes) 또는 다른 에러 데이터를 수신하기 위해 포트(port)를 포함할 수 있다.
이차 메모리(926)는 예를 들어, 일차 메모리와 동일 또는 유사한 타입의 메모리 또는 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브(tape drive), 고체 상태 메모리 드라이브 등과 같은, 하나 이상의 다른 타입들의 정보 저장 디바이스들 또는 시스템들을 포함할 수 있다. 특정 구현예들에서, 이차 메모리(926)는 컴퓨터-판독 가능 매체(928)를 동작 가능하게 수용할 수 있거나, 이 매체에 다른 방법으로 동작 가능하게 결합될 수 있다. 컴퓨터-판독 가능 매체(928)는 예를 들어, 시스템(900) 내의 디바이스 중 하나 이상에 대해 판독 가능, 기록 가능, 또는 재기록 가능 데이터(예를 들어, 코드 또는 명령어들)를 저장(예를 들어, 전송 또는 다른 방법으로 액세스 가능하게 만드는)할 수 있는 임의의 매체를 포함할 수 있다. 컴퓨팅 디바이스(904)는 예를 들어, 입력/출력 디바이스 또는 유닛(932)을 포함할 수 있다.
입력/출력 유닛 또는 디바이스(932)는 인간 또는 기계로부터 신호 입력들을 수락하거나 다른 방법으로 수신할 수 있는 하나 이상의 디바이스들 또는 피처들(features), 또는 인간 또는 기계에 의해 수신될 신호 출력들을 전달하거나 다른 방법으로 제공할 수 있는 하나 이상의 디바이스들 또는 피처들을 나타낸다. 제한이 아닌 예로서, 입력/출력 디바이스(932)는 디스플레이(display), 스피커(speaker), 키보드(keyboard), 마우스(mouse), 트랙볼(trackball), 터치 스크린(touch screen) 등을 포함할 수 있다.
물론, 특정 실시예들이 단지 설명되었지만, 청구된 발명 대상은 특정 실시예 또는 구현예에 대한 범위에 제한되지 않는다는 점이 이해될 것이다. 예를 들어, 일 실시예는 디바이스 또는 디바이스들의 조합 상에 구현되는 것과 같은, 하드웨어일 수 있다. 마찬가지로, 청구된 발명 대상이 이 점에 있어서 범위에 제한되지 않지만, 일 실시예는 이전에 설명된 실시예들 중 하나와 같은, 청구된 발명 대상에 따른 방법의 일 실시예의 성과를 야기하기 위해, 예를 들어, 특정 또는 특수 목적 시스템 또는 장치에 의해 실행될 수 있는 명령어들을 저장할 수 있는 저장 매체 또는 저장 매체들과 같은, 하나 이상의 물품들을 포함할 수 있다. 그러나, 물론, 청구된 발명 대상은 반드시 설명된 실시예들 중 하나에 제한되는 것은 아니다. 더욱이, 특정 또는 특수 목적 컴퓨팅 플랫폼은 하나 이상의 처리 유닛들 또는 프로세서들, 하나 이상의 입력/출력 디바이스들, 예컨대 디스플레이, 키보드 또는 마우스, 또는 하나 이상의 메모리들, 예컨대 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 플래시 메모리, 또는 하드 드라이브를 포함할 수 있지만, 또한 청구된 발명 대상은 이러한 예에 대한 범위로 제한되지 않는다.
몇몇 상황들에서, 데이터 상태의 변화와 같은 메모리 디바이스의 동작은 예를 들어, 물리적 변환과 같은 변환을 포함할 수 있다. 특정 타입들의 메모리 디바이스들의 경우, 그러한 물리적 변환은 상이한 상태 또는 것에 대한 물품의 물리적 변환을 포함할 수 있다. 예를 들지만, 제한 없이, 일부 타입들의 메모리 디바이스들에 대해, 데이터 상태의 변화는 전하의 축적 및 저장 또는 저장된 전하의 방출을 수반할 수 있다. 마찬가지로, 다른 메모리 디바이스들에서, 데이터 상태의 변화는 결정질로부터 비정질로 또는 그 역으로와 같이, 분자 구조의 물리적 변화 또는 변환 또는 자기 배향(magnetic orientation)의 물리적 변화 또는 변환을 포함할 수 있다. 상기한 것은 메모리 디바이스와 같은 장치에서의 데이터 상태의 변화가 물리적 변환과 같은 변환을 포함할 수 있는 모든 예들의 완전한 리스트(list)가 되도록 의도되지 않는다. 오히려, 상기한 것은 예시적 예들로 의도된다.
저장 매체는 전형적으로 비-일시적일 수 있거나 비-일시적 디바이스를 포함한다. 이러한 맥락에서, 비-일시적 저장 매체는 유형인 디바이스를 포함할 수 있어, 디바이스가 구체적인 물리적 형태를 갖지만, 디바이스가 그것의 물리적 상태를 변화시킬 수 있다는 것을 의미한다. 따라서, 예를 들어, 비-일시적은 디바이스가 이러한 상태의 변화에도 불구하고 유형을 유지하는 것을 나타낸다.
이전 설명에서, 청구된 발명 대상의 다양한 측면들이 설명되었다. 설명을 위해, 특정 수들, 시스템들, 또는 구성들은 청구된 발명 대상의 철저한 이해를 제공하기 위해 진술될 수 있었다. 그러나, 청구된 발명 대상이 그러한 특정 상세들 없이 실시될 수 있다는 점은 본 발명의 이득을 갖는 당해 기술에서 통상의 기술자에게 분명해야 한다. 다른 경우들에서, 당해 기술에서 통상의 기술자에 의해 이해되는 피쳐들(features)은 청구된 발명 대상을 모호하게 하지 않도록 생략되거나 간략화되었다. 특정 피쳐들이 본 명세서에 예시되고 설명되었지만, 많은 수정들, 치환들, 변화들, 또는 균등물들은 이제 당해 기술에서 통상의 기술자들에게 떠오를 수 있다. 따라서, 첨부된 특허청구범위는 청구된 발명 대상의 진정한 사상 내에 있는 것처럼 모든 그러한 수정들 또는 변화들을 망라하도록 의도된다는 점이 이해되어야 한다.

Claims (24)

  1. 멀티-레벨 메모리 셀들의 그룹(group)에, 프로그램 데이터(program data) 및 연관된 패리티 데이터(parity data)를 포함하는, 코드워드 데이터(codeword data)를 저장하는 단계 - 상기 코드워드 데이터를 저장하는 단계는 상기 패리티 데이터를 저장하기 위한 멀티-레벨 메모리 셀 당 단일 비트의 패리티 데이터만을 저장하는 단계를 포함하며,
    상기 연관된 패리티 데이터를 저장하는 멀티-레벨 메모리 셀들에는 프로그램 데이터가 저장되지 않고, 프로그램 데이터를 저장하는 상기 그룹의 멀티-레벨 메모리 셀들 어느 것도 패리티 데이터를 저장하지 않고, 프로그램 데이터를 저장하는 상기 그룹의 멀티-레벨 메모리 셀들 각각은 1보다 많은 비트의 프로그램 데이터를 저장하고,
    상기 패리티 데이터는 상기 메모리 셀들의 그룹의 상응하는 메모리 셀을 소거하는 것 없이 한 번보다 많이 변화될 수 있음 - ,
    프로그램 데이터를 저장하는 상기 그룹의 멜티-레벨 메모리 셀들에 저장된 프로그램 데이터를 변경하는 단계; 및
    상기 프로그램 데이터의 변경에 응답하여, 상기 연관된 패리티 데이터를 저장하는 상기 멀티-레벨 메모리 셀들에 대한 소거 동작을 수행하기 전에 상기 연관된 패리티 데이터를 저장하는 상기 그룹의 멀티-레벨 메모리 셀들을 재프로그래밍하는 단계
    를 포함하는 방법.
  2. 청구항 1에 있어서,
    상기 메모리 셀들의 그룹은 메모리 셀들의 블록(block)을 포함하는 방법.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 하나 이상의 패리티 비트 중 하나의 패리티 비트에 대한 변화들의 횟수가 소거 동작을 수행하기 전 임계값 아래로 유지되도록, 프로그램 데이터로부터 하나 이상의 비트의 패리티 데이터를 생성하는 단계; 및
    멀티-레벨 메모리 셀들의 제 1 그룹에 상기 프로그램 데이터에 대응하는 패리티 데이터를 저장하고, 멀티-레벨 메모리 셀들의 제 2 그룹에 상기 프로그램 데이터를 저장하는 단계 - 상기 패리티 데이터를 저장하는 멀티-레벨 메모리 셀들에는 프로그램 데이터가 저장되지 않고, 상기 제 1 그룹의 멀티-레벨 메모리 셀들 각각은 단일 비트의 패리티 데이터만을 저장하고, 프로그램 데이터를 저장하는 상기 제 2 그룹의 멀티-레벨 메모리 셀들 어느 것도 패리티 데이터를 저장하지 않고, 프로그램 데이터를 저장하는 상기 제 2 그룹의 멀티-레벨 메모리 셀들 각각은 1보다 많은 비트의 프로그램 데이터를 저장함 - ;
    프로그램 데이터를 저장하는 상기 제 2 그룹의 멜티-레벨 메모리 셀들에 저장된 프로그램 데이터를 변경하는 단계; 및
    상기 프로그램 데이터의 변경에 응답하여, 연관된 패리티 데이터를 저장하는 상기 제 1 그룹의 멀티-레벨 메모리 셀들에 대한 소거 동작을 수행하기 전에 상기 연관된 패리티 데이터를 저장하는 상기 제 1 그룹의 멀티-레벨 메모리 셀들을 재프로그래밍하는 단계
    를 포함하는 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 청구항 6에 있어서,
    하나 이상의 패리티 비트를 생성하는 것은,
    패리티 생성기 어레이(parity generator array)를 사용하여 하나 이상의 패리티 비트를 생성하는 것을 포함하는 방법.
  12. 장치로서,
    프로그램 데이터 및 연관된 패리티 데이터를 저장하도록 구성된 멀티-레벨 메모리 셀들의 그룹 - 상기 멀티-레벨 메모리 셀들의 그룹은 패리티 데이터만을 저장하도록 구성된 제 1 그룹, 및 프로그램 데이터만을 저장하도록 구성된 제 2 그룹을 포함함 - ;
    을 포함하고,
    상기 장치는 상기 멀티-레벨 메모리 셀들의 제 1 그룹의 메모리 셀 당 단일 비트의 패리티 데이터만을 저장하도록 구성되고,
    상기 장치는 상기 패리티 데이터를 저장하는 멀티-레벨 메모리 셀들의 상기 제 1 그룹 내에 프로그램 데이터를 저장하지 않도록 구성되고,
    상기 멀티-레벨 메모리 셀들의 상기 제 1 그룹의 각각의 셀은, 셀을 소거하는 것 없이 셀에 저장된 패리티 비트가 한 번보다 많이 변화되는 것을 허용할 수 있고,
    프로그램 데이터를 저장하는 상기 제 2 그룹의 멀티-레벨 메모리 셀들 어느 것도 패리티 데이터를 저장하지 않고, 프로그램 데이터를 저장하는 상기 제 2 그룹의 멀티-레벨 메모리 셀들 각각은 1보다 많은 비트의 프로그램 데이터를 저장하고,
    상기 장치는,
    프로그램 데이터를 저장하는 상기 제 2 그룹의 멜티-레벨 메모리 셀들에 저장된 프로그램 데이터를 변경하고,
    상기 프로그램 데이터의 변경에 응답하여, 상기 연관된 패리티 데이터를 저장하는 상기 제 1 그룹의 멀티-레벨 메모리 셀들에 대한 소거 동작을 수행하기 전에 상기 연관된 패리티 데이터를 저장하는 상기 제 1 그룹의 멀티-레벨 메모리 셀들을 재프로그래밍하도록 구성된 장치.
  13. 삭제
  14. 청구항 12에 있어서,
    상기 장치는 메모리 디바이스(memory device), 데스크톱 컴퓨터(desktop computer), 랩톱 컴퓨터(laptop computer), 워크스테이션(workstation), 서버 디바이스(server device), 개인 휴대 정보 단말기(personal digital assistant), 이동 통신 디바이스, 또는 그것의 임의의 조합 중 적어도 하나를 포함하는 장치.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 장치로서,
    메모리 셀 당 다수의 숫자(digit)들의 프로그램 데이터를 저장하는 메모리 셀들의 제 1 그룹; 및
    상기 프로그램 데이터와 연관된 패리티 데이터를 저장하는 메모리 셀들의 제 2 그룹 - 상기 제 2 그룹은 프로그램 데이터를 저장하지 않으면서 메모리 셀 당 단일 패리티 숫자만을 저장함 - ;
    을 포함하며,
    상기 단일 패리티 숫자는 소거 동작을 실행하기 전에 한 번보다 많이 변화될 수 있고,
    프로그램 데이터를 저장하는 상기 제 1 그룹의 멀티-레벨 메모리 셀들 어느 것도 패리티 데이터를 저장하지 않고, 프로그램 데이터를 저장하는 상기 제 1 그룹의 멀티-레벨 메모리 셀들 각각은 1보다 많은 숫자의 프로그램 데이터를 저장하고,
    상기 장치는,
    프로그램 데이터를 저장하는 상기 제 1 그룹의 멜티-레벨 메모리 셀들에 저장된 프로그램 데이터를 변경하고,
    상기 프로그램 데이터의 변경에 응답하여, 상기 연관된 패리티 데이터를 저장하는 상기 제 1 그룹의 멀티-레벨 메모리 셀들에 대한 소거 동작을 수행하기 전에 상기 연관된 패리티 데이터를 저장하는 상기 제 1 그룹의 멀티-레벨 메모리 셀들을 재프로그래밍하도록 구성된 장치.
  21. 삭제
  22. 청구항 20에 있어서,
    상기 단일 패리티 숫자는 1 비트를 포함하는 장치.
  23. 삭제
  24. 삭제
KR1020147027842A 2012-03-15 2013-02-28 메모리 디바이스들에 대한 에러 보호 KR101661048B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/421,578 US9361181B2 (en) 2012-03-15 2012-03-15 Error protection for memory devices
US13/421,578 2012-03-15
PCT/US2013/028368 WO2013138083A1 (en) 2012-03-15 2013-02-28 Error protection for memory devices

Publications (2)

Publication Number Publication Date
KR20140139538A KR20140139538A (ko) 2014-12-05
KR101661048B1 true KR101661048B1 (ko) 2016-09-28

Family

ID=49158862

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027842A KR101661048B1 (ko) 2012-03-15 2013-02-28 메모리 디바이스들에 대한 에러 보호

Country Status (5)

Country Link
US (1) US9361181B2 (ko)
EP (1) EP2845101B1 (ko)
KR (1) KR101661048B1 (ko)
CN (1) CN104246709B (ko)
WO (1) WO2013138083A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182244B2 (en) * 2018-10-16 2021-11-23 Micron Technology, Inc. Error correction management for a memory device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011161622A1 (en) 2010-06-21 2011-12-29 Sandisk Il Ltd. Optimized flash memory without dedicated parity area and with reduced array size

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006042262A2 (en) 2004-10-11 2006-04-20 Texas Instruments Incorporated Detecting a security violation using error correction code
US7783955B2 (en) 2006-01-18 2010-08-24 Sandisk Il Ltd. Method for implementing error-correction codes in flash memory
KR100827662B1 (ko) 2006-11-03 2008-05-07 삼성전자주식회사 반도체 메모리 장치 및 이 장치의 데이터 오류 검출 및정정 방법
US20080168215A1 (en) 2007-01-05 2008-07-10 Anxiao Jiang Storing Information in a Memory
US8006166B2 (en) 2007-06-12 2011-08-23 Micron Technology, Inc. Programming error correction code into a solid state memory device with varying bits per cell
US20080320366A1 (en) * 2007-06-25 2008-12-25 Lin Jason T Methods of reading nonvolatile memory
US8139412B2 (en) 2007-10-31 2012-03-20 Agere Systems Inc. Systematic error correction for multi-level flash memory
KR101486424B1 (ko) 2008-09-12 2015-01-26 삼성전자주식회사 에러 정정 회로, 에러 정정 회로를 구비하는 플래시 메모리시스템 및 에러 정정 회로의 동작 방법
US7978529B1 (en) 2008-12-24 2011-07-12 Micron Technology, Inc. Rewritable single-bit-per-cell flash memory
WO2010076835A1 (en) 2008-12-31 2010-07-08 Christophe Laurent Error correction code for unidirectional memory
JP5321113B2 (ja) 2009-02-13 2013-10-23 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
US8370709B2 (en) 2009-04-16 2013-02-05 Micron Technology, Inc. Multiple-level memory cells and error detection
US8321775B2 (en) 2009-04-21 2012-11-27 Micron Technology, Inc. Non-volatile memory with extended error correction protection
US8386890B2 (en) 2009-09-11 2013-02-26 Arm Limited Error correction for multilevel flash memory
US8737138B2 (en) 2010-11-18 2014-05-27 Micron Technology, Inc. Memory instruction including parameter to affect operating condition of memory
US8547743B2 (en) * 2011-06-28 2013-10-01 Seagate Technology Llc Read error recovery for solid-state memory based on cumulative background charges
US8645773B2 (en) * 2011-06-30 2014-02-04 Seagate Technology Llc Estimating temporal degradation of non-volatile solid-state memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011161622A1 (en) 2010-06-21 2011-12-29 Sandisk Il Ltd. Optimized flash memory without dedicated parity area and with reduced array size

Also Published As

Publication number Publication date
WO2013138083A1 (en) 2013-09-19
CN104246709A (zh) 2014-12-24
EP2845101B1 (en) 2020-04-08
US20130246895A1 (en) 2013-09-19
KR20140139538A (ko) 2014-12-05
US9361181B2 (en) 2016-06-07
EP2845101A4 (en) 2015-11-11
EP2845101A1 (en) 2015-03-11
CN104246709B (zh) 2018-02-09

Similar Documents

Publication Publication Date Title
CN111326199B (zh) 用于存储器设备的多态编程
KR102102828B1 (ko) 메모리에서 에러 정정 코드(ecc) 연산
CN110739017B (zh) 闪存控制器、闪存模块以及电子装置
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US8644066B2 (en) Multi-level non-volatile memory device, system and method with state-converted data
CN111324299B (zh) 用于存储器设备的多态编程的映射
KR101752987B1 (ko) 메모리를 위한 성형 코드들
US8612667B2 (en) Method for performing data pattern management regarding data accessed by a controller of a flash memory, and associated memory device and controller thereof
US9171629B1 (en) Storage device, memory controller and memory control method
US11309916B2 (en) Error correction circuit and memory controller having the same
US11243838B2 (en) Methods and apparatuses for error correction
EP2447842A1 (en) Method and system for error correction in a memory array
CN110047544B (zh) 用于包括qlc单元的存储器装置的编码方法及系统
KR20110028228A (ko) 다중레벨 플래시 메모리의 에러정정
US20180024879A1 (en) Decoder using low-density parity-check code and memory controller including the same
TWI682399B (zh) 操作記憶體之方法及用於錯誤率降低之設備
US20240028216A1 (en) Apparatus and method for programming data in a non-volatile memory device
KR101661048B1 (ko) 메모리 디바이스들에 대한 에러 보호
CN115938446A (zh) 存储器装置、其操作方法以及存储器系统
US20160071597A1 (en) Storage device, memory controller and memory control method
US9473171B2 (en) Data encoding method for compressing data to be stored, data storage device with data encoder, and operating method of data storage device
US11372719B1 (en) Memory system
KR102666852B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법
CN115775582A (zh) 将数据编程在非易失性存储器装置中的设备、系统及方法
CN112599180A (zh) 用于存储器系统的解码器及其方法

Legal Events

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