KR101312146B1 - Nand 메모리들을 위한 관리 데이터의 프로그래밍 - Google Patents

Nand 메모리들을 위한 관리 데이터의 프로그래밍 Download PDF

Info

Publication number
KR101312146B1
KR101312146B1 KR1020097017683A KR20097017683A KR101312146B1 KR 101312146 B1 KR101312146 B1 KR 101312146B1 KR 1020097017683 A KR1020097017683 A KR 1020097017683A KR 20097017683 A KR20097017683 A KR 20097017683A KR 101312146 B1 KR101312146 B1 KR 101312146B1
Authority
KR
South Korea
Prior art keywords
error correction
data
delete delete
sectors
page
Prior art date
Application number
KR1020097017683A
Other languages
English (en)
Other versions
KR20090117747A (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 KR20090117747A publication Critical patent/KR20090117747A/ko
Application granted granted Critical
Publication of KR101312146B1 publication Critical patent/KR101312146B1/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
    • 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
    • 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
    • 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
    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • 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
    • 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
    • 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/5642Multilevel memory with buffers, latches, registers at input or output
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Abstract

방법들, 장치들, 시스템들 및 데이터 구조들은 페이지(700) 내의 특정 섹터(708)를 제외하고, 상기 페이지의 복수의 섹터(702, 704, 706)의 각각에 대한 에러 보정 데이터(703, 705, 707)를 생성하거나 저장하고, 수정된 섹터를 생성하기 위해 블록 관리 데이터와 상기 특정 섹터(708)를 결합하도록 동작할 수 있다. 또한, 다양한 방법, 장치, 시스템 및 데이터 구조는 상기 수정된 섹터에 대한 에러 보정 데이터를 생성하거나 저장하고, 상기 복수의 섹터, 상기 특정 섹터 외의 상기 복수의 섹터의 각각에 대한 에러 보정 데이터(709), 상기 블록 관리 데이터 및 상기 수정된 섹터에 대한 에러 보정 데이터를 결합하도록 동작할 수 있다.
NAND 플래시 메모리, 블록 관리 데이터, 에러 보정 데이터, 섹터, 페이지

Description

NAND 메모리들을 위한 관리 데이터의 프로그래밍{PROGRAMMING MANAGEMENT DATA FOR NAND MEMORIES}
<관련 출원>
본 특허 출원은 본 명세서에 참고 문헌으로 포함되는, 2007년 1월 26일자로 출원된 미국 특허 출원 번호 11/698,455로부터 우선권의 이익을 주장한다.
<기술분야>
본 명세서에 설명되는 다양한 실시예는 일반적으로 비휘발성 메모리 디바이스들과 관련하여 사용되는 에러 보정을 포함하는 비휘발성 메모리 디바이스들에 관한 것이다.
에러 보정 코드(ECC) 엔진은 데이터의 전송 동안에 데이터의 정확성 및 보전성을 보장하기 위해 에러들을 검출하고 보정하는 프로세스를 수행하는 디바이스이다. 일반적으로, 메모리 시스템들에서, 메모리 제어기는 데이터 및 ECC 데이터를 메모리 디바이스에 기입한다. ECC 데이터는 메모리에 데이터가 기입된 후에 발생했을 수 있는 에러들을 식별하고 보정하기 위해 제어기에 의해 판독 동안에 사용된다.
메모리 디바이스들은 2개의 큰 분야, 즉 휘발성 및 비휘발성으로 분류될 수 있다. 휘발성 메모리 디바이스들은 데이터를 유지하기 위해 전력을 필요로 하는 반면, 비휘발성 메모리들은 전원의 부재시에도 데이터를 유지할 수 있다. 비휘발성 메모리의 일례는 칩 내에 정보를 유지하기 위한 전력을 필요로 하지 않고 반도체 디바이스 내에 정보를 저장하는 플래시 메모리이다.
플래시 메모리는 NOR 또는 NAND 디바이스들을 이용하여 형성될 수 있다. NAND 플래시는 단일 레벨 셀(SLC) 또는 다중 레벨 셀(MLC)의 구성을 가질 수 있다. MLC NAND 플래시는 각각의 메모리 셀에 둘 이상의 데이터 비트의 저장을 가능하게 하므로, SLC NAND 플래시에 비해 더 높은 밀도의 메모리 디바이스를 가능하게 한다. 메모리 밀도를 증가시키기 위해 다수의 레벨을 이용하는 경우, MLC NAND의 프로그래밍 동안 더 많은 에러가 발생할 수 있으며, 효율적인 에러 보정 스킴이 필요하게 된다.
도 1은 본 발명의 다양한 실시예에 따른 메모리 시스템의 블록도.
도 2는 본 발명의 다양한 실시예에 따른 메모리 시스템 내의 메모리 셀들의 어레이들의 구성을 나타내는 개략도.
도 3은 본 발명의 다양한 실시예에 따른 NAND 플래시 메모리 어레이의 개략도.
도 4는 본 발명의 다양한 실시예에 따른 도 3에 도시된 다중 레벨 셀(MLC) 어레이의 임계 전압들의 분포를 나타내는 다이어그램.
도 5는 본 발명의 다양한 실시예에 따른 에러 보정 장치를 나타내는 시스템 의 블록도.
도 6은 본 발명의 다양한 실시예에 따른 NAND 플래시 메모리 내에 페이지를 프로그래밍하는 방법을 나타내는 흐름도.
도 7A 및 7B는 본 발명의 다양한 실시예에 따른 4개의 섹터 및 블록 관리 데이터와 결합된 ECC를 나타내는 페이지의 데이터 구조들을 나타내는 도면.
도 7C는 본 발명의 다양한 실시예에 따른 8개의 섹터 및 블록 관리 데이터와 결합된 ECC를 나타내는 페이지의 데이터 구조를 나타내는 도면.
도 8은 본 발명의 다양한 실시예에 따른 NAND 플래시 메모리에서 에러 보정을 수행하는 방법을 나타내는 흐름도.
도 9는 본 발명의 다양한 실시예에 따른 NAND 플래시 메모리에서 에러 보정을 수행하는 방법을 나타내는 흐름도.
도 1은 본 발명의 다양한 실시예에 따른 메모리 시스템(100)의 블록도를 나타낸다. 다양한 실시예에서, 시스템(100)은 집적 회로 메모리(120) 및 제어기(110)를 포함한다. 메모리(120)는 비휘발성 부동 게이트 메모리 셀들의 어레이(122), 어드레스 회로(124), 제어 회로(126), 입출력(I/O) 회로(128) 및 에러 보정 시스템(130)을 포함한다. 메모리 어레이(122)는 메모리 셀들의 블록들이 통상적으로 '플래시' 동작에서 동시에 소거되므로 플래시 메모리 셀들의 어레이로도 참조될 수 있다. 다양한 실시예에서, 메모리 어레이는 NAND 플래시 메모리 어레이를 포함한다.
다양한 실시예에서, 제어 회로(126)는 판독, 기입 및 소거 동작들과 같은 메모리 동작들을 관리하기 위해 제공된다. 후술하는 바와 같이, 메모리 제어 회로(126)에 의해 수행되는 하나의 메모리 동작은 내부 데이터 이동 동작을 포함한다.
다양한 실시예에서, 메모리(120)는 메모리 어레이(122)에 액세스하기 위한 프로세서 또는 다른 메모리 제어기(110)에 결합될 수 있다. 다양한 실시예에서, 메모리(120)는 프로세서(도시되지 않음)에 결합될 수 있으며, 전자 시스템의 일부를 형성할 수 있다. 다양한 실시예의 신규한 장치들 및 시스템들은 고속 컴퓨터들에 사용되는 전자 회로, 통신 및 신호 처리 회로, 단일 또는 다중 프로세서 모듈들, 단일 또는 다수의 내장 프로세서들, 멀티코어 프로세서들, 데이터 스위치들, 및 다층, 다중 칩 모듈들을 포함하는 주문형(application-specific) 모듈들을 포함하고, 그리고/또는 그에 포함될 수 있다. 그러한 장치들 및 시스템들은 텔레비전, 셀룰러 전화, 개인용 컴퓨터(예를 들어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 핸드헬드 컴퓨터, 타블렛 컴퓨터 등), 워크스테이션, 라디오, 비디오 플레이어, 오디오 플레이어(예를 들어, MP3 플레이어), 차량, 의료 장비(예를 들어, 심장 모니터, 혈압 모니터 등), 셋톱 박스 등과 같은 다양한 전자 시스템 내에 서브 컴포넌트로서 포함될 수도 있다. 일부 실시예들은 다수의 방법을 포함할 수 있다.
메모리(120)는 제어 회로(126)를 통해 메모리 어레이(122)에 대한 액세스를 제어하기 위해 제어기(110)에서 프로세서로부터 I/O 라인(132)을 통해 제어 신호들을 수신한다. 메모리 어레이(122)에 대한 액세스는 I/O 라인(132)을 통해 수신된 어드레스 신호들에 응답하여 하나 이상의 타겟 메모리 셀로 지향된다. 어레이(122)가 제어 신호들 및 어드레스 신호들에 응답하여 액세스되는 경우, I/O 라인(132)을 통해 데이터가 메모리 셀들에 기입되거나 메모리 셀들로부터 판독될 수 있다.
이 분야의 기술자들은, 추가 회로 및 제어 신호들이 제공될 수 있으며, 도 1의 메모리 디바이스는 본 발명의 실시예들에 대한 집중을 돕기 위해 간략화될 수 있다는 것을 알 것이다. 메모리 디바이스에 대한 위의 설명은 통상적인 메모리 디바이스의 모든 요소들 및 특징들의 완전한 설명이 아니라, 메모리의 일반적인 이해를 제공하는 것을 의도한다는 것을 알 것이다.
다양한 실시예에서, 시스템(100)은 제어기(110)에 의해 제공되는 ECC 정보를 저장하기 위한 에러 보정 시스템(130)을 포함한다. 에러 보정 시스템(130)은 제어기에 의해 사용되는 ECC 스킴, 예를 들어 해밍(Hamming), BCH 또는 리드-솔로몬 코딩(Reed-Solomon coded) 등의 지시를 저장할 수 있다. 제어기에 의해 사용되는 ECC의 타입에 더하여, 에러 보정 시스템(130)은 어레이 데이터와 연관된 ECC 데이터 바이트들의 위치의 어드레스 또는 오프셋을 저장할 수 있다.
일부 실시예들에서, 시스템(100)은 디스플레이 및/또는 무선 송수신기에 결합되는 프로세서(도시되지 않음)를 포함할 수 있다. 메모리(120)에 포함된 메모리 어레이(들)(122)는 또한 프로세서에 동작적으로 결합될 수 있다.
일부 실시예들에서, 시스템(100)은 프로세서에 결합하기 위한 렌즈 및 촬상면을 포함하는 카메라를 포함할 수 있다. 촬상면은 렌즈에 의해 포착된 광을 수신하는 데 사용될 수 있다.
많은 변형들이 가능하다. 예를 들어, 일부 실시예들에서, 시스템(100)은 무선 송수신기의 일부를 형성하는 셀룰러 전화 수신기(도시되지 않음)를 포함할 수 있다. 일부 실시예들에서, 시스템(100)은 프로세서에 결합하기 위한 한 세트의 매체 재생 제어들을 포함하는 오디오, 비디오 또는 멀티미디어 플레이어를 포함할 수 있다.
전술한 임의의 컴포넌트는 소프트웨어 구현들을 포함하는 다양한 방법으로 구현될 수 있다. 소프트웨어 구현들은 시뮬레이션 시스템에서 사용될 수 있으며, 그러한 시스템의 출력은 여기에 설명되는 메모리(120) 및 시스템(100)의 다양한 부분을 동작시키는 데 사용될 수 있다.
ECC 기술들은 이 분야에 잘 알려져 있으며, 본 명세서에서는 상세히 리스트되거나 설명되지 않는다. 본 발명의 실시예들은 특정 ECC 코드(들)로의 제한 없이 구현될 수 있다는 것을 이해할 것이다. 에러가 검출되는 경우, 제어기(110)는 메모리(120)로부터 데이터를 제어기의 버퍼 내로 판독하고, ECC 동작을 수행하여 에러를 보정하고, 보정된 데이터를 메모리(120)에 다시 기입할 수 있다.
도 2는 본 발명의 다양한 실시예에 따른 메모리 시스템(200) 내의 메모리 셀들의 어레이들의 구성을 나타내는 개략도를 나타낸다. 메모리 시스템(200)은 블록(202), 데이터 레지스터(204), 캐시 레지스터(206), 데이터 영역(208), 예비 영역(210), I/O 포트들(212) 및 평면(214)을 포함한다. 메모리 시스템(200)은 NAND 플래시 메모리를 포함하는 SLC 또는 MLC 메모리를 포함할 수 있다. 데이터는 데이터 레지스터(204) 및 캐시 레지스터(206)를 통해 NAND 플래시 메모리(200)로 그리고 그로부터 바이트 단위로 전송된다. 캐시 레지스터(206)는 I/O 제어 회로들에 가장 가깝게 위치할 수 있으며, I/O 데이터에 대한 데이터 버퍼로서 작용하는 반면, 데이터 레지스터(204)는 메모리 어레이에 가장 가깝게 위치할 수 있고, NAND 플래시 메모리의 동작 동안 데이터 버퍼로서 작용한다. 다양한 실시예에서, 데이터 영역(208)의 길이는 "페이지"로서 정의된다.
메모리는 페이지 기반 동작들에서 프로그래밍되고 판독되며, 블록 기반 동작들에서 소거된다. 페이지 동작들 동안, 데이터 및 캐시 레지스터들은 함께 결합되어 단일 레지스터로서 동작할 수 있다. 캐시 동작들 동안, 데이터 및 캐시 레지스터들은 데이터 처리량을 증가시키기 위해 독립적으로 동작할 수 있다.
도 2에 도시된 바와 같은 구조의 NAND 플래시 메모리는 페이지들의 블록들로 구성될 수 있다. 각각의 블록은 16, 32 또는 64개의 페이지로 구성될 수 있다. 다양한 실시예에서, 각각의 페이지는 데이터 영역(208)에서 512 바이트(256 워드) 그리고 예비 영역(210)에서 여분의 16 바이트(8 워드)를 가질 수 있다. 다양한 실시예에서, 각각의 페이지는 데이터 영역(208)에서 2048 바이트(1024 워드) 그리고 예비 영역(210)에서 여분의 64 바이트(32 워드)를 가질 수 있다. 예비 영역(210)은 제조 프로세스 동안 무효 블록들을 표시하는 데 사용되는 비트들을 저장하는 데 사용될 수 있다. 또한, 예비 영역(210)은 ECC 검사 비트들을 저장하는 데 사용될 수 있다. 무효 블록들의 표시는 블록 관리 데이터 내에 포함된 비트들의 세트 상에 작용하는 소프트웨어에 의해 수행될 수 있다. 다양한 실시예에서, 이러한 소프트웨어는 프로세서가 ECC 하드웨어를 포함하지 않는 경우에 ECC 코드를 제공할 수도 있다.
SLC NAND 메모리의 다양한 실시예에서, 예비 영역 내의 데이터는 호스트 섹터들과 함께 또는 개별적으로 프로그래밍될 수 있다. 예를 들어, 할당 관리 정보 또는 블록 관리 정보 및 ECC 검사 비트들은 데이터가 호스트로부터 도달하기 전에 먼저 프로그래밍될 수 있다. 또한, 호스트 데이터에 대한 ECC 검사 비트들은 호스트 데이터와 동시에 프로그래밍될 수 있다.
MLC NAND 메모리의 다양한 실시예에서, 예비 영역 데이터는 호스트 데이터와 동시에 프로그래밍될 수 있다. 또한, 전체 페이지가 동시에 프로그래밍될 수 있다. 블록 관리 데이터는 호스트 섹터들이 버퍼에 수신되기 전에 결정될 수 있지만, 호스트 데이터가 프로그래밍될 때까지 프로그래밍되지 않을 수도 있다. 여러 실시예에서, 블록 관리는 호스트 데이터가 메모리 내에 프로그래밍되기 전에 섹터들이 ECC 회로를 통해 스트리밍될 때 호스트 섹터들 중 하나에 추가된다. 결과적으로, 블록 관리 데이터에 대한 에러 보정을 개별적으로 수행하는 것에 비해 추가 시간이 필요하지 않게 된다.
도 2에 도시된 메모리 시스템(200)의 다양한 실시예에서, 판독 및 프로그램 동작 절차들은 페이지 단위로(예를 들어, NOR 플래시 메모리에서 수행되는 바이트 또는 워드 단위와 달리, 한 번에 528 바이트씩) 수행된다. 또한, 소거 동작은 블록 단위로 수행된다. 동작에 있어서, 다양한 실시예에서, 페이지 판독 동작 동안, 528 바이트의 페이지가 출력을 위해 메모리로부터 데이터 레지스터로 전송된다. 페이지 프로그램 동작에서, 528 바이트의 페이지가 데이터 레지스터에 기입된 후에 메모리 어레이 내에 프로그래밍된다. 또한, 블록 소거 동작에서, 연속 페이지들의 그룹이 단일 동작에서 소거될 수 있다.
도 3은 본 발명의 다양한 실시예에 따른 NAND 플래시 메모리 어레이(300)의 개략도를 나타낸다. 메모리 어레이(300)는 메모리 어레이에 통상적으로 사용되는 요소들 모두를 나타내지는 않는다. 예를 들어, 3개의 비트 라인(BL1, BL2, BL32)만이 도시되지만, 실제로 사용되는 비트 라인들의 수는 메모리 밀도에 의존한다. 비트 라인들은 (BL1-BL32)로서 순차적으로 참조된다.
NAND 메모리는 직렬의 스트링들(304, 305)로 배열된 부동 게이트 메모리 셀들(301)의 어레이(300)를 포함한다. 부동 게이트 메모리 셀들(301)의 각각은 각각의 직렬 스트링(304, 305)에서 드레인 대 소스 결합될 수 있다. 다수의 직렬 스트링(304, 305)에 걸치는 워드 라인(WL0-WL31)가 행 내의 모든 부동 게이트 셀의 제어 게이트들에 결합되어 이들의 동작을 제어한다. 비트 라인들(BL1-BL32)은 결국에는 각각의 셀(301)의 상태를 검출하는 감지 증폭기들(도시되지 않음)에 결합된다.
동작에 있어서, 워드 라인들(WLO-WL31)은 기입되거나 판독될 직렬 스트링들(304, 305) 내의 개별 부동 게이트 메모리 셀들을 선택하고, 각각의 직렬 스트링(304, 305) 내의 나머지 부동 게이트 메모리 셀들을 통과(pass-through) 모드로 동작시킨다. 부동 게이트 메모리 셀들의 각각의 직렬 스트링(304, 305)은 소스 선택 게이트(316, 317)에 의해 소스 라인(306)에, 드레인 선택 게이트(312, 313)에 의해 개별 비트 라인(BL1-BL32)에 결합된다. 소스 선택 게이트들(316, 317)은 그들의 제어 게이트들에 결합된 소스 선택 게이트 제어 라인 SG(S)(318)에 의해 제어된다. 드레인 선택 게이트들(312, 313)은 드레인 선택 제어 라인 SG(D)(314)에 의해 제어된다.
각각의 셀은 셀당 단일 비트 또는 셀당 다수의 비트로서 프로그래밍될 수 있다. SLC는 셀당 단일 비트의 프로그래밍을 허가하고, MLC는 셀당 다수 비트의 프로그래밍을 허가한다. 각각의 셀의 임계 전압(Vt)은 셀에 저장되는 데이터를 결정한다. 예를 들어, 셀당 단일 비트 아키텍처에서, 1V의 Vt는 프로그래밍된 셀을 지시하는 반면, -1V의 Vt는 소거된 셀을 지시할 수 있다. 다중 레벨 셀들은 상이한 상태를 각자 지시하는 둘 이상의 Vt 윈도우를 갖는다. MLC는 셀에 저장된 특정 전압 범위에 비트 패턴을 할당함으로써 전통적인 플래시 셀의 아날로그 특성을 이용한다. 이러한 기술은 셀에 할당된 전압 범위들의 양에 따라 셀당 둘 이상의 비트의 저장을 허가한다.
예를 들어, 셀은 약 200 mV의 폭을 각자 갖는 4개의 상이한 전압(Vt) 분포를 할당받을 수 있다. 다양한 실시예에서, 0.3V 내지 0.5V의 분리가 각각의 Vt 분포 범위 사이에 또한 할당된다. 이러한 Vt 분포들 사이의 분리 영역은 다수의 Vt 분포들이 오버랩되어 논리 에러들을 유발하지 않도록 설정된다. 검증 동안, 셀에 저장된 전압이 01 하이(high) Vt 분포 내에 있는 것으로 감지되는 경우, 셀은 01을 저장하고 있다. 전압이 00 제2 하이 분포 내에 있는 경우, 셀은 00을 저장하고 있다. 이것은 셀에 대해 사용되는 많은 범위들(레벨들)에 대해 계속된다.
프로그래밍 동작 동안, 프로그래밍될 플래시 메모리 셀에 대해 선택된 워드 라인(WL)에는 하이 전압 프로그래밍 펄스들의 열이 공급된다. 하이 전압 프로그래밍 펄스들은 통상적으로 16V에서 시작되어 0.5V의 증분으로 증가한다. 10V의 증가하지 않는 하이 전압 펄스가 선택되지 않은 WL들에 인가된다.
일 실시예에서, 선택된 셀들이 선택된 WL들 상에서 프로그래밍되는 것을 금지하기 위하여, 금지된 셀의 채널은 비트 라인(BL)에 ~1.3V를 인가함으로써 비트 라인(BL)으로부터 분리된다. 선택된 셀들을 선택된 WL 상에서 프로그래밍하기 위하여, 채널은 BL을 통해 0V로 접지된다. 채널과 WL 사이에 형성되는 큰 전위는 셀이 프로그래밍되게 하도록 설계되며, 디바이스의 Vt는 더 높은 프로그래밍 펄스들이 인가됨에 따라 증가할 것이다.
다양한 실시예에서, 모든 프로그래밍 펄스 사이에는 검증 단계가 수행된다. 검증 동안, 선택된 WL은 0V로 낮아지고, 선택되지 않은 WL들은 5V로 낮아지며, 선택된 셀들의 상태들이 감지된다. 셀이 WL 상의 OV가 디바이스를 도통되지 않게 하는 Vt 레벨을 갖도록 프로그래밍되는 경우, 디바이스는 프로그래밍된 것으로 간주된다. 그렇지 않은 경우, 셀은 소거된 것으로 간주되며, 프로그래밍 펄스 높이는 0.5V 증가되고, 선택된 WL에 다시 인가된다. 이러한 프로세스는 프로그래밍될 모든 선택된 셀들이 확실히 프로그래밍될 때까지 반복된다.
통상적인 메모리 블록은 64개의 논리 페이지를 포함할 수 있다. 64개의 논리 페이지는 32개의 물리 WL로 형성될 수 있다. 각각의 WL은 2개의 논리 페이지를 포함할 수 있다. 예를 들어, WL 상에는 4K 비트의 셀이 존재할 수 있다. 이들 중에서, 2K 비트는 다른 2K 비트 페이지와 동일한 WL을 공유하는 하나의 페이지에 전용화될 수 있다. 모든 셀이 다중 Vt 분포 레벨 모드에서 사용되는 경우, 설명되는 구조를 갖는 WL은 페이지당 2K 비트를 갖는 4 페이지를 유지할 것이다. 이들 페이지 중 하나가 프로그래밍되고 있을 때, 동일 WL 상의 제2 페이지는 금지된 경우에도 교란 상태를 경험할 것이다. 따라서, 공유된 WL들을 갖는 페이지들은 프로그래밍 교란을 경험할 수 있다. 공유된 WL 상에서 발생하는 프로그래밍 교란은 동일 WL 상에 있는 제2 페이지에서 이전에 프로그래밍된 셀들의 Vt 분포를 바꾸어, 이들의 분포를 더 넓게 만들 것이다. 셀당 2개의 레벨을 사용하는 비휘발성 메모리 디바이스들에 대해, 이것은 중요한 문제가 아닐 수 있는데, 이는 두 분포 사이의 분리 영역이 교란 상태로 인한 분포들의 오버랩핑을 방지하기에 충분할 만큼 클 수 있기 때문이다. 그러나, 단일 셀이 물리적 단일 셀당 2 비트 또는 4 레벨을 나타내는 데 사용되는 MLC 동작들에 대해, 분리 영역은 감소되며, Vt 분포들의 오버랩핑 또는 변동을 방지하기 위해 교란 상태의 감소가 바람직하게 된다.
도 4는 본 발명의 다양한 실시예에 따른 도 3의 NAND 플래시 메모리 어레이의 임계 전압들의 분포를 나타내는 다이어그램(400)이다. 다이어그램(400) 내의 임계 전압들의 분포는 각각의 메모리 셀이 2비트의 데이터, 즉 4개의 데이터 상태를 저장한 것을 보여준다. 다이어그램(400)은 임계 전압을 나타내는 y축(402) 및 메모리 셀의 논리 레벨들을 나타내는 곡선들(406, 408, 410, 412)을 갖는 x축(404)을 포함한다. 곡선 406은 음의 임계 전압들에 있는 소거 상태에 있는 어레이(122; 도 1 참조) 내의 셀들의 임계 레벨들(Vt)의 분포를 나타낸다. 곡선들 408 및 410은 각각 "10" 및 "00"을 저장하기 위한 임계 전압 분포들을 나타내기 위해 도시된다. 또한, 곡선 408은 0V와 1V 사이에 있고, 곡선 410은 1V와 2V 사이에 있다. 곡선 412는 2V보다 높고 4.5V보다 낮게 설정된 최고 임계 전압 레벨에 있는 바와 같은 "01" 상태로 프로그래밍된 셀들의 분포를 나타낸다.
위의 예에서 설명된 바와 같은 단일 메모리 셀에 저장된 2개의 비트의 각각은 상이한 논리 페이지로부터의 비트이다. 즉, 각각의 메모리 셀에 저장된 2개 비트의 각각의 비트는 다른 비트와 다른 논리 페이지 어드레스를 갖는다. 도 4에 도시된 하위 페이지 비트는 짝수 페이지 어드레스(0, 2, 4,..., N/2)가 요청될 때 액세스된다. 상위 페이지 비트는 홀수 페이지 어드레스(1, 3, 5,..., [N/2+1])가 요청될 때 액세스된다. 향상된 신뢰성을 제공하기 위해, 개별 분포들이 감소될 수 있으며, 이에 따라 더 큰 판독 마진들을 제공할 수 있다.
판독 동작에 있어서, 타겟(선택된) 메모리 셀의 워드 라인은 로우(low) 전압 레벨로 유지될 수 있다. 모든 선택되지 않은 셀 워드 라인들은 그들의 부동 게이트 전하들에 관계없이 선택되지 않은 셀들을 활성화하기에 충분히 큰 전압에 결합될 수 있다. 선택된 셀이 충전되지 않은 부동 게이트를 갖는 경우, 이 셀은 활성화된다. 이어서, 비트 라인 및 소스 라인이 어레이 내의 직렬 메모리 셀들을 통해 결합된다. 선택된 셀이 충전된 부동 게이트를 갖는 경우, 이 셀은 활성화되지 않을 것이다. 이 경우에 비트 라인 및 소스 라인은 직렬 메모리 셀들을 통해 결합되지 않는다.
일부 NAND 플래시 메모리 디바이스들은 메모리 어레이(블록) 내에 초기 불량 블록들을 포함한다. 이러한 불량 블록들은 제조자에 의해 불량으로서 표시되어, 이들이 어떠한 시스템에서도 사용되지 않아야 함을 지시할 수 있다. 또한, NAND 디바이스는 정상 디바이스 동작 동안 열화되고 마모되어, 더 많은 불량 블록들이 생성될 수 있다. 더욱이, NAND 플래시 디바이스 동작 동안 또는 긴 비활성 기간 동안 비트 에러들이 발생할 수 있다. 결과적으로, NAND 플래시 메모리에는 데이터 보전성을 보장하기 위한 ECC 특징이 제공될 수 있다.
NAND 플래시 메모리는 각각의 페이지 상에 "예비 영역"이라고 하는 여분의 저장소를 포함할 수 있다. 다양한 실시예에서, 예비 영역은 64 바이트(512 바이트 섹터당 16 바이트)를 포함한다. 다양한 실시예에서, 예비 영역은 불량 블록 정보 및 마모-레벨링(wear-leveling) 또는 논리 대 물리 블록 맵핑을 저장하는 데 사용되는 ECC 및 블록 관리 데이터와 같은 정보를 저장하는 데 사용된다. 마모 레벨링은 파일이 프로그래밍될 때마다 논리 메모리 어드레스를 상이한 물리 메모리 어드레스들로 변환하는 것을 포함한다. 마모 레벨링은 NAND 플래시 메모리 셀 사용을 메모리 어레이의 전체 범위에 걸쳐 확장하여, 모든 메모리 셀들의 사용을 등화하고, 디바이스의 수명의 연장을 돕는다. 이러한 동작은 NAND 플래시 메모리 디바이스에 접속된 제어기에 의해 모니터링되고 구현될 수 있다.
도 5는 본 발명의 다양한 실시예에 따른 에러 보정을 위한 장치를 나타내는 시스템(500)의 블록도이다. 시스템(500)은 호스트(502), 버퍼(504), 에러 보정 시스템(518), 직접 메모리 액세스 제어기(DMA; 520) 및 플래시 메모리(522)를 포함한다. 에러 보정 시스템(518)은 에러 보정 검사 비트 생성기(506), 블록 관리 데이터 블록(508), 제1 멀티플렉서(510), 신드롬 생성기(512), 에러 보정 모듈(514) 및 제2 멀티플렉서(516)를 포함한다. 다양한 실시예에서, 시스템(500)은 소프트웨어, 하드웨어 또는 이 둘의 조합으로 구현되는 NAND 플래시 메모리 제어기를 포함한다. 시스템(500)의 제어기는 도 1의 제어 회로(126)와 유사하거나 동일할 수 있다. 다양한 실시예에서, 버퍼(504)는 멀티미디어 카드 인터페이스(도시되지 않음)를 통해 호스트(502)에 결합된다. 다양한 실시예에서, 에러 보정 시스템(518)은 NAND 플래시 제어기 하드웨어(도시되지 않음)에서 구현된다. 에러 보정은 하드웨어 또는 소프트웨어로 수행될 수 있다. 에러 보정 시스템(518)은 도 1의 에러 보정 시스템(130)과 유사하거나 동일할 수 있다.
도 5에 도시된 바와 같이, 호스트(502)는 버퍼(504)에 결합되고, DMA(520)는 플래시 메모리(522)에 결합된다. 버퍼(504) 및 DMA(520) 양자는 각각 호스트(502) 및 플래시 메모리(522)로부터 데이터를 송수신하도록 구성된다. 다양한 실시예에서, 호스트(502) 및 플래시 메모리(522)로의 그리고 그로부터의 데이터의 전송은 8비트 또는 16비트 폭의 양방향 데이터 버스를 통해 수행된다. 버퍼(504)의 출력은 에러 보정 모듈(514), 에러 보정 검사 비트 생성기(506) 및 제1 멀티플렉서(510)의 입력들에 결합된다. 제1 멀티플렉서(510)의 출력은 DMA(520)의 입력에 결합된다. DMA(520)의 출력은 신드롬 생성기(512), 블록 관리 모듈(508) 및 제2 멀티플렉서(516)의 입력들에 결합된다.
여러 실시예에서, 블록 관리 모듈(508)은 메모리 블록 내의 불량 블록들(무효 블록들) 및 그들의 위치들에 관한 정보를 저장한다. 무효 블록들은 2개의 그룹, 즉 선천적 무효 블록들 및 후천적 무효 블록들로 분류될 수 있다. 선천적 무효 블록들은 NAND 디바이스의 제조 프로세스 동안에 발생한다. 반면, 후천적 무효 블록들은 공장에서 식별되지 않고, 이러한 블록들은 마모의 결과로서 고객 측에서 발생한다. 마모 블록들은 무효 블록으로서 표시되며, 블록 소거 또는 페이지 프로그램 실패가 존재하는 경우에는 더 이상 액세스되지 않는다. 후천적 무효 블록들은 일반적으로 선천적 무효 블록들과 동일한 방식으로 표시된다. 블록 관리 데이터 블록(508)은 에러 보정 모듈(514) 및 에러 보정 검사 비트 생성기(506)에 결합되어 에러 보정 모듈(514) 및 에러 보정 검사 비트 생성기(506)로부터 데이터를 송수신한다. 제2 멀티플렉서(516)의 출력은 버퍼(504)의 입력에 결합된다.
다양한 실시예에서, 호스트(502)로부터의 데이터 워드가 플래시 메모리(522)에 기입될 때, 이 워드는 버퍼(504)에 페이지의 일부로서 초기 저장된다. 다양한 실시예에서, 페이지는 정보의 비트들로서 저장되는 호스트(502)로부터의 정보를 갖는 일련의 섹터들을 포함한다. 다양한 실시예에서, 페이지를 플래시 메모리(522) 내에 프로그래밍하기 위한 명령어가 제어기(도시되지 않음)로부터 수신될 때, 페이지 내에 포함된 섹터들의 각각에 대해(아마도 페이지의 최종 섹터는 제외됨) 에러 보정 검사 비트 생성기(506)에서 에러 보정 검사 비트들이 생성된다. 페이지의 최종 섹터는 수정된 섹터를 형성하기 위해 블록 관리 모듈(508)에 의해 제공되는 블록 관리 데이터와 결합될 수 있다. 수정된 섹터에 대해 에러 보정 검사 비트들이 생성된다. 최종 섹터 외의 일련의 섹터들, 수정된 섹터 및 이들의 대응 에러 보정 비트들은 도 7A-C에 도시된 바와 같이 플래시 메모리(522)에 페이지로서 저장된다.
다양한 실시예에서, 플래시 메모리(522)로부터 데이터 워드가 판독될 때, 페이지에 저장된 에러 보정 검사 비트들이 재계산되고, 플래시 메모리(522)로부터 판독된 저장된 에러 보정 검사 비트들과 비교된다. 비교 결과로서 차이가 발견되는 경우, 이것은 에러가 발생하였음을 지시한다. 그러한 비교의 결과는 신드롬이라 하며, 신드롬 생성기(512)에서 생성된다. 신드롬이 0인 것으로 밝혀지는 경우, 에러가 존재하지 않는 것으로 결정될 수 있다. 신드롬이 0이 아닌 경우, 이것은 어떤 데이터 비트들 또는 ECC 비트들이 에러인지를 식별하기 위해, 또는 에러가 보정 불가능한지를 결정하기 위해 사용될 수 있다. 다양한 실시예에서, 신드롬이 0이 아닌 경우, 이것은 어떤 비트들이 에러인지를 결정하기 위해 테이블을 인덱싱하는 데 사용될 수 있다. 다양한 실시예에서, 이러한 테이블 탐색 단계는 하드웨어로 구현되며, 다른 실시예들에서는 소프트웨어로 구현된다.
여러 실시예에서, 주어진 시스템에서 구현되는 에러 보정 코드들의 타입 및 요구되는 에러 방지의 정도는 저장될 데이터의 타입 및 사용되는 NAND 플래시 기술의 타입(SLC 또는 MLC)에 의존한다. 다양한 실시예에서, 사용되는 에러 보정 코드들은 BCH(Bose-Chaudhuri-Hocquenghem), 리드-솔로몬(RS), 해밍, 골레이(Golay), 리드-뮬러(Reed-Muller), 고파(Goppa) 및 데니스톤(Denniston) 코드들 중 어느 하나 이상을 포함할 수 있다. 여러 실시예에서, 8개의 단일 비트 에러가 에러 보정 코드들을 이용하여 임의의 주어진 섹터에서 보정될 수 있다. 다양한 실시예에서, 16개의 단일 비트 에러가 에러 보정 코드들을 이용하여 임의의 주어진 섹터에서 보정될 수 있다.
도 6은 다양한 실시예에 따른 NAND 플래시 메모리에 페이지를 프로그래밍하는 방법의 흐름도이다. 방법(600)은 페이지를 프로그래밍하기 위해 블록 602에서 시작한다. 이제, 도 5 및 6을 참조하면, 방법(600)은 블록 604에서 프로그램 명령을 페이지 어드레스와 함께 플래시 메모리(522)에 전송하는 단계를 포함할 수 있다. 방법(600)은 블록 606에서 호스트(502)에서 버퍼(504)로 하나의 섹터를 전송하는 단계를 포함할 수 있다. 방법(600)은 블록 608에서 버퍼(504)에 저장된 섹터들을 에러 보정 시스템(518) 내의 ECC 논리를 통해 한 번에 하나씩 플래시 메모리(522)로 전송하는 단계를 포함할 수 있다.
방법(600)은 블록 610에서 섹터가 페이지의 최종 섹터인지를 결정하는 단계를 포함할 수 있다. 섹터가 최종 섹터인 것으로 결정되는 경우, 방법은 블록 614로 진행한다. 섹터가 최종 섹터가 아닌 것으로 결정되는 경우, 방법은 블록 612로 진행하여, 대응 섹터에 대한 ECC 바이트들을 플래시 메모리(522)로 전송한다.
방법(600)은 블록 614에서 블록 관리 데이터를 ECC 논리를 통해 그리고 이어서 플래시 메모리(522)로 클럭킹(clocking)하는 단계를 포함할 수 있다. 방법(600)은 블록 616에서 최종 섹터 및 블록 관리 데이터에 대응하는 ECC 리던던시 바이트들을 플래시 메모리(522)로 전송하는 단계를 포함할 수 있다. 방법(600)은 블록 618에서 페이지를 프로그래밍하기 위해 프로그램 확인 명령을 플래시 메모리(522)로 전송하는 단계를 포함할 수 있다. 방법(600)은 블록 620에서 플래시 메모리(522)로부터 프로그램 확인 상태를 수신하는 단계를 포함할 수 있다.
도 7A 및 7B는 각각 다양한 실시예에 따른 4개의 섹터 및 블록 관리 데이터와 결합된 ECC 검사 비트들을 나타내는 페이지(700 및 720)의 데이터 구조들을 나타낸다. 도 7A에 도시된 바와 같이, 페이지(700)는 필드들(702-710)을 포함한다. 필드들(702, 704, 706, 708)은 데이터 비트들을 포함하는 섹터들을 나타낸다. 필드들(703, 705, 707, 709)은 각각 섹터들(702, 704, 706, 708)에 대해 생성된 ECC 검사 비트들에 대응한다. 필드(710)는 블록 관리 데이터를 포함한다. 다양한 실시예에서, 필드들(702, 704, 706, 708)은 호스트(502)에서 플래시 메모리(522)로 전송될 데이터를 공동으로 포함한다. 다양한 실시예에서, 필드들(702, 704, 706, 708)은 512 바이트의 정보를 포함한다. 여러 실시예에서, 필드들(703, 705, 707, 709)은 13 바이트의 ECC 검사 코드를 포함한다. 다양한 실시예에서, 블록 관리 데이터(710)는 12 바이트의 블록 관리 정보를 포함한다.
도 7B에 도시된 바와 같이, 페이지(720)는 필드들(722-730)을 포함한다. 필드들(722, 724, 726, 728)은 데이터 비트들을 포함하는 섹터들을 나타낸다. 필드들(723, 725, 727, 729)은 각각 섹터들(722, 724, 726, 728)에 대해 생성된 ECC 검사 비트들에 대응한다. 필드(730)는 블록 관리 데이터를 포함한다. 다양한 실시예에서, 필드들(722, 724, 726, 728)은 호스트 디바이스(502)에서 플래시 메모리(522)로 전송될 데이터를 공동으로 포함한다. 다양한 실시예에서, 필드들(722, 724, 726, 728)은 512 바이트의 정보를 포함한다. 여러 실시예에서, 필드들(723, 725, 727, 729)은 13 바이트의 ECC 검사 코드를 포함한다. 다양한 실시예에서, 블록 관리 데이터(730)는 10 바이트의 블록 관리 정보를 포함한다.
도 7C는 본 발명의 다양한 실시예에 따른 8개 섹터 및 블록 관리 데이터와 결합된 ECC를 나타내는 페이지(740)의 데이터 구조를 나타낸다. 도 7C에 도시된 바와 같이, 페이지(740)는 필드들(741, 742... 759)을 포함한다. 필드들(741, 742... 748)은 데이터 비트들을 포함하는 섹터들을 나타낸다. 필드들(751, 752... 758)은 각각 섹터들(741, 742... 748)에 대해 생성된 ECC 검사 비트들에 대응한다. 필드(759)는 블록 관리 데이터를 포함한다. 다양한 실시예에서, 섹터 필드들(741, 742... 748)은 호스트 디바이스(502)에서 플래시 메모리(522)로 전송될 데이터를 공동으로 포함한다. 다양한 실시예에서, 섹터들(741, 742... 748)은 512 바이트의 정보를 포함한다. 여러 실시예에서, 필드들(751, 752... 758)은 26 바이트의 ECC 검사 비트를 포함한다. 다양한 실시예에서, 필드(759)는 10 바이트의 블록 관리 정보를 포함한다.
도 8은 다양한 실시예에 따른 NAND 플래시 메모리에서 에러 보정을 수행하기 위한 방법(800)을 나타내는 흐름도이다. 방법(800)은 블록 802에서 페이지 내의 하나 이상의 선택된 섹터를 제외한 페이지의 복수의 섹터의 각각에 대한 에러 보정 데이터를 생성하는 단계를 포함할 수 있다. 방법(800)은 블록 804에서 블록 관리 데이터와 선택된 섹터(들)를 결합하여 수정된 섹터를 생성하는 단계를 포함할 수 있다. 방법(800)은 블록 806에서 수정된 섹터에 대한 에러 보정 데이터를 생성하는 단계를 포함할 수 있다.
방법(800)은 블록 808에서 복수의 섹터, 선택된 섹터들 외의 복수의 섹터 각각에 대한 에러 보정 데이터, 블록 관리 데이터 및 수정된 섹터에 대한 에러 보정 데이터를 결합하는 단계를 포함할 수 있다.
도 9는 다양한 실시예에 따른 NAND 플래시 메모리에서 에러 보정을 수행하기 위한 방법(900)을 나타내는 흐름도이다. 방법(900)은 블록 902에서 복수의 데이터 섹터 및 블록 관리 데이터를 다중 레벨 셀 플래시 메모리에 저장하는 단계를 포함할 수 있다.
방법(900)은 블록 904에서 블록 관리 데이터와 복수의 데이터 섹터 중 적어도 하나를 결합하여 결합된 블록 관리 데이터 섹터를 생성하는 단계를 포함할 수 있다.
방법(900)은 블록 906에서, 결합된 블록 관리 데이터 섹터를 생성하는 데 사용된 복수의 데이터 섹터 중 적어도 하나 외의 복수의 데이터 섹터 각각에 대한 에러 보정 데이터를 생성하는 단계를 포함할 수 있다.
방법(900)은 블록 908에서, 결합된 블록 관리 데이터 섹터에 대한 결합된 블록 관리 에러 보정 데이터를 생성하는 단계를 포함할 수 있다.
방법(900)은 블록 910에서 복수의 데이터 섹터, 블록 관리 데이터, 복수의 데이터 섹터 각각에 대한 에러 보정 데이터 및 결합된 블록 관리 에러 보정 데이터를 결합하는 단계를 포함할 수 있다.
여기에 설명되는 장치들, 시스템들 및 방법들의 구현은 NAND 플래시 메모리들에 대해 이용 가능한 보다 양호한 에러 보정 기능을 제공할 수 있다. 또한, 에러 보정 동작을 위한 시간 및 에러 보정에 사용되는 메모리의 상당한 절약이 가능할 수 있다.
본 명세서의 일부를 형성하는 첨부 도면들은, 제한이 아니라 예시적으로, 본 발명이 실시될 수 있는 특정 실시예들을 나타낸다. 도시된 실시예들은 이 분야의 기술자들이 여기에 개시되는 가르침들을 실시할 수 있도록 충분히 상세하게 설명되어 있다. 다른 실시예들이 이용될 수 있고, 그로부터 도출될 수 있으며, 따라서 본 발명의 범위를 벗어나지 않고 구조 및 논리적 대체들 및 변경들이 이루어질 수 있다. 따라서, '발명의 상세한 설명'은 제한적인 것으로 간주되지 않아야 하며, 다양한 실시예의 범위는 첨부된 청구항들 및 이 청구항들의 권리 범위에 속하는 균등물들의 전체 범위에 의해서만 정의된다.
그러한 본 발명의 실시예들은, 단지 편의를 위해, 그리고 사실상 둘 이상이 개시되는 경우에 본 출원의 범위를 임의의 단일 발명 또는 발명적 개념으로 자발적으로 한정하고자 하는 의도 없이, 본 명세서에서 개별적으로 또는 집합적으로 "발명"이라는 용어로 참조될 수 있다. 따라서, 특정 실시예들이 본 명세서에 도시되고 설명되었지만, 동일 목적을 달성하는 것으로 추정되는 임의의 배열이 도시된 특정 실시예들을 대체할 수 있다. 본 발명은 다양한 실시예의 임의의 그리고 모든 개량들 및 변형들을 커버하는 것을 의도한다. 위의 실시예들 및 본 명세서에 구체적으로 설명되지 않은 다른 실시예들의 조합들은 위의 설명의 검토시에 이 분야의 전문가들에게 명백할 것이다.
"로우" 논리 신호들 및 "하이" 논리 신호들에 대한 전압 크기들은 통상적으로 정의되지 않는데, 이는 이들이 음의 전압들 및 양의 전압들을 포함하는 다양한 상대적인 값들을 가질 수 있기 때문이다. "하이" 및 "로우" 논리 신호들은 이진 값들을 표현함에 있어서 서로에 대한 관계에 의해서만 정의된다. 통상적으로, "하이" 논리 신호는 "로우" 논리 신호보다 높은 전압 레벨 또는 전위를 갖거나, "로우" 신호는 "하이" 신호와 다른 극성 또는 음의 극성을 가질 수 있다. 이 분야의 전문가들이 이해하듯이, 소정의 논리 시스템들에서, "하이" 논리 값은 상대적 "로우" 논리 값이 접지에 대해 음의 전위로 표현될 때 심지어 접지 전위로도 표현될 수 있다.
'요약서'는 독자가 기술적 개시의 특징을 빠르게 확인할 수 있게 하는 요약서를 요구하는 37 C.F.R.§1.72(b)에 따라 제공된다. 요약서는 요약서가 청구항들의 범위 또는 의미를 해석하거나 제한하는 데 사용되지 않을 것이라는 이해와 함께 제출된다. 위의 '발명의 상세한 설명'에서, 다양한 특징들은 개시를 간결화하기 위해 단일 실시예 내에 함께 그룹화된다. 이러한 개시의 방법은 각 청구항에 명확히 기재된 것보다 많은 특징들을 필요로 하는 것으로 해석되지 않아야 한다. 오히려, 본 발명은 단일의 개시된 실시예의 모든 특징보다 적은 특징에서 발견될 수 있다. 따라서, 아래의 청구항들은 '발명의 상세한 설명'에 포함되며, 각각의 청구항은 개별 실시예로서 그 자신에 의거한다.
<결론>
다양한 실시예가 메모리 디바이스에 시스템 관리 데이터를 프로그래밍하기 위한 메커니즘으로서 설명되었다. 프로그래밍은 버퍼와 직접 메모리 액세스 사이에 결합된 에러 보정 모듈을 이용하여 내부적으로 수행될 수 있다. 다양한 실시예에서, 메모리 디바이스는 MLC NAND 디바이스를 포함한다.

Claims (41)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 버퍼와 직접 메모리 액세스 제어 회로의 사이에 결합되고, 상기 버퍼로부터 상기 직접 메모리 액세스 제어 회로로 데이터를 전달하는 제1 멀티플렉서;
    상기 버퍼와 상기 직접 메모리 액세스의 사이에 결합되고, 상기 직접 메모리 액세스로부터 상기 버퍼로 데이터를 전달하는 제2 멀티플렉서;
    상기 제1 멀티플렉서에 결합되는 에러 보정 검사 비트 생성기;
    상기 제2 멀티플렉서 및 상기 버퍼에 결합되는 에러 보정 모듈;
    상기 에러 보정 모듈과 상기 직접 메모리 액세스의 사이에 결합되고, 상기 직접 메모리 액세스로부터 수신되는 데이터 내의 적어도 하나의 비트 에러의 존재를 검출하는 신드롬(syndrome) 생성기; 및
    상기 에러 보정 검사 비트 생성기, 상기 에러 보정 모듈, 상기 제1 멀티플렉서 및 상기 직접 메모리 액세스에 결합되고, 메모리 블록 내의 불량 블록들 및 그들의 위치들에 관한 정보를 포함하는 블록 관리 데이터의 세트를 생성하는 블록 관리 모듈
    을 포함하는 에러 보정 데이터 생성 장치.
  25. 제24항에 있어서,
    상기 직접 메모리 액세스는 다중 레벨 셀(MLC) NAND 플래시 메모리에 결합되는 에러 보정 데이터 생성 장치.
  26. 제25항에 있어서,
    상기 신드롬 생성기는 검출된 에러를 상기 에러 보정 모듈로 전달하는 에러 보정 데이터 생성 장치.
  27. 제26항에 있어서,
    상기 신드롬 생성기는 상기 직접 메모리 액세스로부터 상기 버퍼로 전달된 데이터 내의 검출된 에러들에 기초하여 신드롬을 생성하는 에러 보정 데이터 생성 장치.
  28. 제27항에 있어서,
    상기 블록 관리 모듈은 상기 버퍼로부터 상기 직접 메모리 액세스로 전달된 데이터의 각각의 페이지에 대한 블록 관리 데이터를 제공하고, 상기 블록 관리 데이터는 상기 버퍼로부터 상기 직접 메모리 액세스로 전달된 데이터의 각각의 페이지의 최종 섹터와 결합되는 에러 보정 데이터 생성 장치.
  29. 제28항에 있어서,
    상기 에러 보정 검사 비트 모듈은, 각각의 페이지의 최종 섹터를 제외하고 각각의 페이지의 섹터들 각각에 대한 에러 보정 코드를 생성하는 에러 보정 데이터 생성 장치.
  30. 제29항에 있어서,
    상기 에러 보정 검사 비트 모듈은, 각각의 페이지에 대한 최종 섹터 및 상기 블록 관리 데이터에 대한 에러 보정 코드를 생성하는 에러 보정 데이터 생성 장치.
  31. 제24항에 있어서,
    상기 제1 멀티플렉서는 복수의 섹터, 하나 이상의 미리 결정된 섹터들을 제외한 상기 복수의 섹터의 각각에 대한 에러 보정 데이터, 및 상기 블록 관리 데이터 및 상기 블록 관리 데이터와 결합된 상기 하나 이상의 미리 결정된 섹터들에 대한 에러 보정 데이터를 포함하는 페이지를 수신하는 에러 보정 데이터 생성 장치.
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 제24항에 있어서,
    상기 에러 보정 데이터 생성 장치는,
    페이지 내의 하나 이상의 미리 결정된 섹터들을 제외하고, 상기 페이지의 복수의 섹터의 각각에 대해 에러 보정 데이터를 생성하고.
    수정된 섹터를 생성하기 위해 상기 블록 관리 모듈에 의해 제공된 블록 관리 데이터와 상기 하나 이상의 미리 결정된 섹터들을 결합하고,
    상기 수정된 섹터에 대한 에러 보정 데이터를 생성하고,
    상기 복수의 섹터, 상기 하나 이상의 미리 결정된 섹터들 이외의 상기 복수의 섹터의 각각에 대한 에러 보정 데이터, 상기 블록 관리 데이터 및 상기 수정된 섹터에 대한 에러 보정 데이터를 결합하고 상기 페이지 내에 저장하도록 더 구성된 에러 보정 데이터 생성 장치.
  38. 제37항에 있어서,
    상기 에러 보정 데이터 생성 장치는 상기 복수의 섹터 및 상기 블록 관리 데이터를 상기 에러 보정 모듈 내의 레지스터로 전송하도록 더 구성된 에러 보정 데이터 생성 장치.
  39. 제37항에 있어서,
    상기 에러 보정 데이터 생성 장치는 상기 복수의 섹터, 상기 하나 이상의 미리 결정된 섹터들 이외의 상기 페이지 내의 복수의 섹터의 각각에 대한 에러 보정 데이터, 상기 블록 관리 데이터 및 상기 수정된 섹터에 대한 에러 보정 데이터를 다중 레벨 셀(MLC) NAND 플래시 메모리에 저장하도록 더 구성된 에러 보정 데이터 생성 장치.
  40. 제39항에 있어서,
    상기 에러 보정 데이터 생성 장치는 상기 다중 레벨 셀(MLC) NAND 플래시 메모리의 예비 영역에 상기 에러 보정 데이터를 저장하도록 더 구성된 에러 보정 데이터 생성 장치.
  41. 제40항에 있어서,
    상기 에러 보정 데이터 생성 장치는 상기 블록 관리 데이터와 상기 하나 이상의 미리 결정된 섹터들을 결합하고, 상기 다중 레벨 셀(MLC) NAND 플래시 메모리의 상기 예비 영역으로부터 상기 블록 관리 데이터를 검색하도록 더 구성된 에러 보정 데이터 생성 장치.
KR1020097017683A 2007-01-26 2008-01-22 Nand 메모리들을 위한 관리 데이터의 프로그래밍 KR101312146B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/698,455 2007-01-26
US11/698,455 US7861139B2 (en) 2007-01-26 2007-01-26 Programming management data for NAND memories
PCT/US2008/000804 WO2008091590A1 (en) 2007-01-26 2008-01-22 Programming management data for nand memories

Publications (2)

Publication Number Publication Date
KR20090117747A KR20090117747A (ko) 2009-11-12
KR101312146B1 true KR101312146B1 (ko) 2013-09-26

Family

ID=39367515

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097017683A KR101312146B1 (ko) 2007-01-26 2008-01-22 Nand 메모리들을 위한 관리 데이터의 프로그래밍

Country Status (8)

Country Link
US (3) US7861139B2 (ko)
EP (1) EP2106587B1 (ko)
JP (1) JP5686516B2 (ko)
KR (1) KR101312146B1 (ko)
CN (1) CN101627371B (ko)
AT (1) ATE552552T1 (ko)
TW (1) TWI380313B (ko)
WO (1) WO2008091590A1 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7861139B2 (en) * 2007-01-26 2010-12-28 Micron Technology, Inc. Programming management data for NAND memories
JP5064820B2 (ja) * 2007-02-01 2012-10-31 マーベル ワールド トレード リミテッド 磁気ディスクコントローラおよび方法
TWI362668B (en) * 2008-03-28 2012-04-21 Phison Electronics Corp Method for promoting management efficiency of an non-volatile memory storage device, non-volatile memory storage device therewith, and controller therewith
JP2010061242A (ja) * 2008-09-01 2010-03-18 Toshiba Storage Device Corp 記憶装置、制御装置および制御プログラム
TWI393146B (zh) * 2008-10-15 2013-04-11 Genesys Logic Inc 具有錯誤修正碼容量設定單元之快閃記憶體控制器及其方法
US8161354B2 (en) * 2008-10-16 2012-04-17 Genesys Logic, Inc. Flash memory controller having configuring unit for error correction code (ECC) capability and method thereof
KR20100089288A (ko) * 2009-02-03 2010-08-12 삼성전자주식회사 휴대용 단말기에서 보안 정보를 관리하기 위한 장치 및 방법
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US8149622B2 (en) * 2009-06-30 2012-04-03 Aplus Flash Technology, Inc. Memory system having NAND-based NOR and NAND flashes and SRAM integrated in one chip for hybrid data, code and cache storage
US8140712B2 (en) * 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US20110040924A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
CN101996685B (zh) * 2009-08-11 2013-12-04 中颖电子股份有限公司 存储器管理数据的差错控制方法及差错控制器
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8615700B2 (en) * 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories
US8077515B2 (en) * 2009-08-25 2011-12-13 Micron Technology, Inc. Methods, devices, and systems for dealing with threshold voltage change in memory devices
US8271697B2 (en) 2009-09-29 2012-09-18 Micron Technology, Inc. State change in systems having devices coupled in a chained configuration
US8589766B2 (en) * 2010-02-24 2013-11-19 Apple Inc. Codeword remapping schemes for non-volatile memories
US8429391B2 (en) 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
US8451664B2 (en) 2010-05-12 2013-05-28 Micron Technology, Inc. Determining and using soft data in memory devices and systems
US8892981B2 (en) * 2010-09-30 2014-11-18 Apple Inc. Data recovery using outer codewords stored in volatile memory
TWI473105B (zh) 2011-01-18 2015-02-11 Macronix Int Co Ltd 具有錯誤自動檢查與更正位元之三維記憶體結構
US9086983B2 (en) 2011-05-31 2015-07-21 Micron Technology, Inc. Apparatus and methods for providing data integrity
US8732557B2 (en) * 2011-05-31 2014-05-20 Micron Technology, Inc. Data protection across multiple memory blocks
KR101417827B1 (ko) * 2011-10-24 2014-07-11 한양대학교 산학협력단 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8788915B2 (en) 2012-03-05 2014-07-22 Micron Technology, Inc. Apparatuses and methods for encoding using error protection codes
US8954825B2 (en) 2012-03-06 2015-02-10 Micron Technology, Inc. Apparatuses and methods including error correction code organization
KR102072449B1 (ko) 2012-06-01 2020-02-04 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 리페어 방법
US8984369B2 (en) * 2012-11-21 2015-03-17 Micron Technology, Inc. Shaping codes for memory
US9535777B2 (en) * 2013-11-22 2017-01-03 Intel Corporation Defect management policies for NAND flash memory
US9417945B2 (en) 2014-03-05 2016-08-16 International Business Machines Corporation Error checking and correction for NAND flash devices
JP6131207B2 (ja) * 2014-03-14 2017-05-17 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
KR102308777B1 (ko) 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
US10395753B2 (en) * 2014-08-28 2019-08-27 Winbond Electronics Corp. Semiconductor memory device and programming method thereof
US9400713B2 (en) * 2014-10-02 2016-07-26 Sandisk Technologies Llc System and method for pre-encoding of data for direct write to multi-level cell memory
JP6411282B2 (ja) * 2015-05-15 2018-10-24 ラピスセミコンダクタ株式会社 半導体メモリ及びデータ書込方法
JP2017045405A (ja) * 2015-08-28 2017-03-02 株式会社東芝 メモリシステム
JP6115740B1 (ja) * 2015-12-17 2017-04-19 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
JP6239078B1 (ja) * 2016-11-04 2017-11-29 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および読出し方法
US10303543B1 (en) * 2017-02-09 2019-05-28 Cadence Design Systems, Inc. System and method for memory control having address integrity protection for error-protected data words of memory transactions
US10275306B1 (en) * 2017-02-09 2019-04-30 Cadence Design Systems, Inc. System and method for memory control having adaptively split addressing of error-protected data words in memory transactions for inline storage configurations
TWI671637B (zh) * 2018-04-25 2019-09-11 點序科技股份有限公司 記憶體管理裝置及其操作方法
US11334492B2 (en) 2019-10-24 2022-05-17 International Business Machines Corporation Calibrating pages of memory using partial page read operations
CN113010112B (zh) * 2021-03-09 2022-11-11 重庆邮电大学 一种基于可变电阻式存储器的数据分配优化方法
US20230027820A1 (en) * 2021-07-21 2023-01-26 Micron Technology, Inc. Hybrid parallel programming of single-level cell memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007011872A (ja) 2005-07-01 2007-01-18 Toshiba Corp メモリカードとその制御方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3272903B2 (ja) * 1995-03-16 2002-04-08 株式会社東芝 誤り訂正検出回路と半導体記憶装置
KR100214309B1 (ko) * 1997-05-09 1999-08-02 윤종용 디지털비디오디스크 재생장치에 있어서 디스크램블링 신뢰도를 향상시키는 방법 및 장치
JP3233079B2 (ja) * 1997-09-30 2001-11-26 ソニー株式会社 データ処理システム及びデータ処理方法
JPH11212873A (ja) * 1998-01-27 1999-08-06 Seiko Epson Corp コンピューターシステムの操作方法
KR100354744B1 (ko) * 1998-08-04 2002-12-11 삼성전자 주식회사 고밀도기록매체를위한인터리브방법및그회로
JP4105819B2 (ja) * 1999-04-26 2008-06-25 株式会社ルネサステクノロジ 記憶装置およびメモリカード
JP2002074862A (ja) * 2000-08-25 2002-03-15 Toshiba Corp データ処理方法及び装置及び記録媒体及び再生方法及び装置
US6751766B2 (en) * 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
US20040083334A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
JP4550439B2 (ja) * 2003-02-28 2010-09-22 東芝メモリシステムズ株式会社 Ecc制御装置
KR100562906B1 (ko) * 2003-10-08 2006-03-21 삼성전자주식회사 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
JP2005267676A (ja) * 2004-03-16 2005-09-29 Matsushita Electric Ind Co Ltd 不揮発性記憶装置
US7246195B2 (en) * 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
US7212440B2 (en) * 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
US7424648B2 (en) * 2005-03-10 2008-09-09 Matsushita Electric Industrial Co., Ltd. Nonvolatile memory system, nonvolatile memory device, data read method, and data read program
US7861139B2 (en) * 2007-01-26 2010-12-28 Micron Technology, Inc. Programming management data for NAND memories

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007011872A (ja) 2005-07-01 2007-01-18 Toshiba Corp メモリカードとその制御方法

Also Published As

Publication number Publication date
US20080184094A1 (en) 2008-07-31
CN101627371A (zh) 2010-01-13
WO2008091590A1 (en) 2008-07-31
EP2106587B1 (en) 2012-04-04
US20110093766A1 (en) 2011-04-21
US20130254630A1 (en) 2013-09-26
ATE552552T1 (de) 2012-04-15
US8458564B2 (en) 2013-06-04
EP2106587A1 (en) 2009-10-07
KR20090117747A (ko) 2009-11-12
US7861139B2 (en) 2010-12-28
CN101627371B (zh) 2012-09-05
JP5686516B2 (ja) 2015-03-18
TW200839776A (en) 2008-10-01
TWI380313B (en) 2012-12-21
JP2010517168A (ja) 2010-05-20
US8943387B2 (en) 2015-01-27

Similar Documents

Publication Publication Date Title
KR101312146B1 (ko) Nand 메모리들을 위한 관리 데이터의 프로그래밍
US11494085B2 (en) Flash memory controller, flash memory module and associated electronic device
US11216337B2 (en) Memory system
KR101032576B1 (ko) 셀 당 비트가 가변하는 고체 상태 메모리 디바이스로의 에러 정정 코드의 프로그래밍
CN107133122B (zh) 存储器控制方法
US10635585B2 (en) On-chip copy with data folding in three-dimensional non-volatile memory array
KR101616100B1 (ko) 메모리 시스템 및 그것의 동작 방법
US8069382B2 (en) Memory cell programming
US8607120B2 (en) Semiconductor memory device for performing additional ECC correction according to cell pattern and electronic system including the same
US10985780B2 (en) Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller
US11461039B2 (en) Nonvolatile memory that stores temperature information therein
KR20190051570A (ko) 메모리 시스템 및 그것의 동작 방법
US11106518B2 (en) Failure mode study based error correction
CN110600069A (zh) 具有存储装置和存储器控制器的存储器系统及其操作方法
US10755798B2 (en) Recovering data from a faulty memory block in a memory system
US11244735B2 (en) Systems and methods for program verification on a memory system
US10886002B1 (en) NAND field use erase plus defect detections

Legal Events

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

Payment date: 20160818

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170822

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190905

Year of fee payment: 7