KR102569162B1 - 포기-미세 프로그래밍을 위한 온-칩 인코딩을 갖는 비휘발성 메모리 - Google Patents

포기-미세 프로그래밍을 위한 온-칩 인코딩을 갖는 비휘발성 메모리 Download PDF

Info

Publication number
KR102569162B1
KR102569162B1 KR1020210081788A KR20210081788A KR102569162B1 KR 102569162 B1 KR102569162 B1 KR 102569162B1 KR 1020210081788 A KR1020210081788 A KR 1020210081788A KR 20210081788 A KR20210081788 A KR 20210081788A KR 102569162 B1 KR102569162 B1 KR 102569162B1
Authority
KR
South Korea
Prior art keywords
data
memory
distributions
memory cells
programming
Prior art date
Application number
KR1020210081788A
Other languages
English (en)
Other versions
KR20220044641A (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 KR20220044641A publication Critical patent/KR20220044641A/ko
Application granted granted Critical
Publication of KR102569162B1 publication Critical patent/KR102569162B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • 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/5671Digital 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 trapping in an insulator
    • 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/08Address circuits; Decoders; Word-line control 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/26Sensing or reading circuits; Data output 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
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Non-Volatile Memory (AREA)
  • Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

비휘발성 저장 장치는, 메모리 다이 상에 형성되는 복수의 비휘발성 메모리 셀들 - 각각의 비휘발성 메모리 셀은 데이터의 복수의 비트들을 유지하도록 구성됨 -; 및 메모리 다이 상에 형성되는 제어 회로를 포함한다. 제어 회로는, 메모리 셀들에 저장될 데이터에 대한 패리티 데이터를 계산하도록 그리고 메모리 셀들을 제1 분포들로 프로그래밍하도록 구성된다. 제어 회로는 또한, 제1 분포들에서 메모리 셀들을 판독하도록, 패리티 데이터와 조합된 제1 분포들에서의 메모리 셀들을 판독한 결과들로부터 데이터를 복구하도록, 그리고 메모리 셀들을 제1 분포들로부터 제2 분포들로 추가로 프로그래밍하여 데이터를 저장하도록 구성된다.

Description

포기-미세 프로그래밍을 위한 온-칩 인코딩을 갖는 비휘발성 메모리{NONVOLATILE MEMORY WITH ON-CHIP ENCODING FOR FOGGY-FINE PROGRAMMING}
우선권 주장
본 출원은 2020년 10월 2일자로 출원되고 발명의 명칭이 "NONVOLATILE MEMORY WITH ON-CHIP ENCODING FOR FOGGY-FINE PROGRAMMING"인 Gorobets 등의 미국 가특허 출원 제63/086,732호로부터의 우선권을 주장하며, 상기 출원은 그 전체가 본 명세서에 참고로 포함된다.
본 기술은 메모리 디바이스들의 동작에 관한 것이다.
반도체 메모리 디바이스들은 다양한 전자 디바이스들에서 사용하기에 더 대중적이 되었다. 예를 들어, 비휘발성 반도체 메모리는 셀룰러 전화기, 디지털 카메라, 개인 휴대 정보 단말기, 모바일 컴퓨팅 디바이스, 비-모바일 컴퓨팅 디바이스 및 다른 디바이스에서 사용된다.
플로팅 게이트 또는 전하 트래핑 재료와 같은 전하 저장 재료가 데이터 상태를 나타내는 전하를 저장하기 위하여 그러한 메모리 디바이스들에서 사용될 수 있다. 전하 트래핑 재료는 3차원(3D) 적층형 메모리 구조물로 수직으로, 또는 2차원(2D) 메모리 구조물로 수평으로 배열될 수 있다. 3D 메모리 구조물의 일례는 교번하는 전도성 및 유전체 층들의 스택(stack)을 포함하는 BiCS(Bit Cost Scalable) 아키텍처이다.
메모리 디바이스는, 예를 들어, NAND 스트링들에 직렬로 배열될 수 있는 메모리 셀들을 포함하는데, 여기서 선택 게이트 트랜지스터들이 NAND 스트링의 단부들에 제공되어 NAND 스트링의 채널을 소스 라인 또는 비트 라인에 선택적으로 접속시킨다. 그러나, 그러한 메모리 디바이스들을 동작시키는 데 다양한 문제들이 나타난다.
전하 저장 또는 전하 트래핑 재료를 사용하는 일부 메모리 구조물들(예컨대, NAND 구조물들)에서, 메모리 셀들의 프로그래밍은 이전에 프로그래밍된 메모리 셀들을 교란시킬 수 있다(예컨대, 메모리 셀에 추가되는 전하는 인근 메모리 셀들에 영향을 미칠 수 있음). 그러한 프로그램 교란 효과들을 완화시키기 위해, 프로그래밍은 2개 이상의 프로그래밍 동작들에서 발생할 수 있으며, 이때 이웃 메모리 셀들은 프로그래밍 동작들 사이에서 (적어도 부분적으로) 프로그래밍된다. 이러한 접근법은 프로그램 교란 효과들을 완화시킬 수 있지만, 구현은 (예컨대, 데이터가 NAND 구조물 내에서 완전히 프로그래밍되기 전에) 프로그래밍 동작들 사이에서 데이터를 유지하기 위해 유의미한 데이터 저장 용량을 필요로 할 수 있고, 유의미한 오버헤드(예컨대, 다수의 프로그래밍 동작들 동안 컴포넌트들 사이의 데이터의 유의미한 이동)를 유발할 수 있다. 다수의 프로그래밍 동작들에서 메모리 셀들을 효율적으로 프로그래밍하는 것은 어려울 수 있다.
도 1은 블록들 내의 비휘발성 메모리 셀들을 포함하는 예시적인 메모리 디바이스의 블록도이다.
도 1a는 호스트에 접속된 메모리 디바이스의 일 실시예의 블록도이다.
도 1b는 프론트 엔드 프로세서 회로의 일 실시예의 블록도이다. 일부 실시예들에서, 프론트 엔드 프로세서 회로는 제어기의 일부이다.
도 1c는 백 엔드 프로세서 회로의 일 실시예의 블록도이다. 일부 실시예들에서, 백 엔드 프로세서 회로는 제어기의 일부이다.
도 1d는 메모리 패키지의 일 실시예의 블록도이다.
도 2는 메모리 다이의 일 실시예의 블록도이다.
도 3a는 도 1의 감지 블록(51)의 일 실시예를 도시하는 블록도이다.
도 3b는 도 1의 감지 블록(51)의 다른 예시적인 블록도를 도시한다.
도 4는 메모리 셀들의 블록들에 전압들을 제공하기 위한 예시적인 회로를 도시한다.
도 5는 도 1의 메모리 구조물(126)의 예시적인 3D 구성에서의 블록들의 세트를 포함하는 메모리 디바이스(500)의 사시도이다.
도 6a는 도 5의 블록들 중 하나의 블록의 일부의 예시적인 단면도를 도시한다.
도 6b는 도 6a의 메모리 홀들의 그 높이를 따른 폭의 예시적인 변화를 도시한다.
도 6c는 도 6a의 스택의 영역(622)의 확대도를 도시한다.
도 7은 프로그래밍 동작에서의 프로그래밍 펄스들의 일례를 도시한다.
도 8은 데이터를 저장하기 위해 상이한 데이터 상태들로 프로그래밍된 복수의 메모리 셀들의 메모리 셀 임계 전압들의 일례를 도시한다.
도 9는 데이터를 저장하기 위해 상이한 데이터 상태들로 프로그래밍된 복수의 메모리 셀들의 메모리 셀 임계 전압들의 다른 예를 도시한다.
도 10은 포기 프로그래밍(foggy programming), 뒤이어 미세 프로그래밍(fine programming)의 일례를 도시한다.
도 11은 NAND 구조물 내의 워드 라인들의 포기-미세 프로그래밍을 위한 스킴의 일례를 도시한다.
도 12는 디지털 값들 및 패리티 비트들에 대한 임계 전압 분포들의 맵핑의 일례를 도시한다.
도 13a는 포기-프로그래밍되었던 메모리 셀들의 포기 판독의 일례를 도시한다.
도 13b는 디지털 값들 및 패리티 비트들에 대한 임계 전압 분포들의 맵핑의 다른 예를 도시한다.
도 13c는 포기 판독 스킴에서 복구된 값들을 획득하는 데 사용되는 판독 레벨들, 초기 디지털 값들, 및 패리티 비트들의 일례를 도시한다.
도 13d는 포기 판독 스킴에서 복구된 값들을 획득하는 데 사용되는 논리 동작들의 일례를 도시한다.
도 13e는 포기 판독을 수행하는 방법의 일례를 도시한다.
도 14는 오프-칩 인코딩(off-chip encoding)에 의한 포기-미세 프로그래밍을 사용하는 메모리 디바이스의 일례를 도시한다.
도 15a는 온-칩 인코딩(on-chip encoding)에 의한 포기-미세 프로그래밍을 사용하는 메모리 디바이스의 일례를 도시한다.
도 15b는 포기 프로그래밍을 위한 패리티 데이터의 생성(인코딩)의 일례를 도시한다.
도 15c는 패리티 데이터와 조합하여 포기 판독으로부터의 초기 값들을 사용한 데이터의 복구(디코딩)의 일례를 도시한다.
도 16은 XOR(Exclusive OR)을 사용한 온-칩 인코딩의 일례를 예시한다.
도 17은 패리티 데이터가 단일 레벨 셀(Single Level Cell, SLC) 메모리 셀들 내에 온-칩으로 저장되는 포기-미세 프로그래밍의 예시적인 구현예를 도시한다.
도 18은 패리티 데이터가 에러 정정 코드(Error Correction Code, ECC)에 의해 정정되는 포기-미세 프로그래밍의 예시적인 구현예를 도시한다.
도 19는 패리티 데이터가 DRAM 내에 오프-칩으로 저장되는 포기-미세 프로그래밍의 예시적인 구현예를 도시한다.
도 20은 포기 프로그래밍 동작에서의 프로그래밍 데이터 및 미세 프로그래밍 동작에서의 추가 프로그래밍을 포함하는 방법의 일례를 도시한다.
비휘발성 메모리 셀들, 예를 들어, NAND 구조물 내의 비휘발성 메모리 셀들을 프로그래밍하기 위한 장치들 및 기법들이 기술된다. 일부 경우들에 있어서, 비휘발성 메모리 셀들은 다른 비휘발성 메모리 셀들(예컨대, 이웃 워드 라인들을 따르는 인근 비휘발성 메모리 셀들)의 프로그래밍에 의해 영향을 받는다. 그러한 효과들을 다루기 위한 하나의 기법은 2개 이상의 프로그래밍 동작들, 예컨대 비휘발성 메모리 셀들을 근사한 제1 분포들 내에 남겨두는 제1 "포기" 프로그래밍 동작, 뒤이어, 비휘발성 메모리 셀들을 더 정확한 제2 분포들(예컨대, 더 좁은 분포들)에 있게 하는 제2 "미세" 프로그래밍 동작(이는 장기 저장에 사용될 수 있음)에서 비휘발성 메모리 셀들을 프로그래밍하는 것이다. 그러한 포기 프로그래밍과 후속의 미세 프로그래밍 사이에서, 이웃 비휘발성 메모리 셀들은, 미세 프로그래밍이 발생할 때, 이웃 비휘발성 메모리 셀들에 전하가 존재하고 이웃 비휘발성 메모리 셀들의 임의의 추가 프로그래밍에 의해 추가 교란이 거의 또는 전혀 야기되지 않도록 프로그래밍(적어도 포기 프로그래밍)될 수 있다(예컨대, 미세 프로그래밍은 미세 프로그래밍의 효과들이 유의미하지 않도록 비교적 적은 추가적인 전하를 추가할 수 있음). (예컨대, DRAM 내의) 데이터의 안전한 사본은, 데이터가 포기 프로그래밍되고 아직 미세 프로그래밍되지 않은 동안 유지될 수 있다. 그러나, 그러한 데이터를 유지하는 것은 DRAM 또는 다른 저장 위치에 유의미한 공간을 요구할 수 있다. 또한, (그것을 저장하고 후속적으로 취출하기 위해) 그러한 데이터에 액세스하는 것은 유의미한 리소스들을 사용할 수 있다(예컨대, 메모리 다이와 DRAM 사이의 버스 상에 유의미한 트래픽을 초래할 수 있음).
일례에서, 데이터는 (예컨대, 패리티 데이터를 생성함으로써) 포기 프로그래밍되기 전에 인코딩되어, (제1 분포들에서의) 포기-프로그래밍된 메모리 셀들의 판독이 수행될 때, 그 판독(포기 판독)의 결과들이 디코딩되어(예컨대, 패리티 데이터와 조합되어) 오리지널 데이터를 복구하게 할 수 있다. 일부 경우들에 있어서, 데이터가 인코딩될 때 안전한 사본이 필요하지 않을 수 있고, 포기 프로그래밍된 메모리 셀들 및 패리티 데이터로부터 복구가능하다. 온-칩 회로들은 그러한 인코딩(예컨대, XOR 회로들) 및 디코딩을 수행하도록 제공되어, 리소스들이 효율적으로 사용되고 (예컨대, 메모리 버스를 통한) 데이터의 과도한 전달이 회피되도록 할 수 있다. 패리티 데이터는 일부 경우들에 있어서 (예컨대, 단일 레벨 셀(SLC) 저장을 위해 구성된 비휘발성 메모리 구조물의 일부분 내에) 온-칩으로 저장될 수 있다. 일부 경우들에 있어서, 패리티 데이터는 데이터의 복구를 위해 사용되기 전에 에러 정정 코드(ECC) 회로들에 의해 정정(디코딩)될 수 있다. 패리티 데이터는 또한 (예컨대, DRAM 내에) 오프-칩으로 저장될 수 있다.
도 1은 상이한 평면들에 배열된 메모리 셀들을 포함하는 예시적인 메모리 디바이스의 블록도이다. 비휘발성 저장 시스템과 같은 메모리 디바이스(100)는 하나 이상의 메모리 다이들(108)을 포함할 수 있다. 메모리 다이(108)는 메모리 셀들의 메모리 구조물(126), 예컨대, 메모리 셀들의 어레이, 제어 회로(110), 및 판독/기록 회로들(128)을 포함한다. 메모리 구조물(126)은 로우(row) 디코더(124)를 통해 워드 라인들에 의해 그리고 컬럼(column) 디코더(132)를 통해 비트 라인들에 의해 어드레싱가능하다. 메모리 구조물(126)은 이웃 평면들(P0 및 P1)과 같은 다수의 평면들을 포함할 수 있다. 각각의 평면은 메모리 셀들의 하나 이상의 블록들을 포함할 수 있다. 예를 들어, P0은 블록들(B0a 내지 B0d)을 포함하고, P1은 블록들(B1a 내지 B1d)을 포함한다.
판독/기록 회로들(128)은 다수의 감지 블록들(51, 52, ... 53)(감지 회로)을 포함하고, 메모리 셀들의 페이지가 동시에 판독 또는 프로그래밍되게 한다. 전형적으로, 제어기(122)가 하나 이상의 메모리 다이들(108)과 동일한 메모리 디바이스(100)(예컨대, 착탈식 저장 카드 또는 다른 비휘발성 저장 장치) 내에 포함된다. 제어기는 메모리 다이와는 별개일 수 있다. 커맨드들 및 데이터가 데이터 버스(120)와 같은 인터페이스를 통해 호스트(140)와 제어기(122) 사이에서 전달되고, 라인들(118)을 통해 제어기와 하나 이상의 메모리 다이들(108) 사이에서 전달된다.
메모리 구조물(126)은 2D 또는 3D일 수 있다. 메모리 구조물은 3D 어레이를 포함한 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 메모리 구조물은 다수의 메모리 레벨들이, 개재된 기판들 없이, 웨이퍼와 같은 단일 기판 위에 형성되는 (그리고 그 내에는 형성되지 않는) 모놀리식(monolithic) 3D 메모리 구조물을 포함할 수 있다. 메모리 구조물은 실리콘 기판 위에 활성 영역이 배치된 메모리 셀들의 어레이들의 하나 이상의 물리적 레벨에 모놀리식으로 형성되는 임의의 유형의 비휘발성 메모리를 포함할 수 있다. 메모리 구조물은, 연관된 회로부가 기판 위에 있든 기판 내에 있든, 메모리 셀들의 동작과 연관된 회로부를 갖는 비휘발성 메모리 디바이스 내에 있을 수 있다.
제어 회로(110)는 판독/기록 회로들(128)과 협력하여 메모리 구조물(126)에 대해 판독, 기록 및 소거를 포함한 메모리 동작들을 수행하고, 상태 머신(112), 온-칩 어드레스 디코더(114), 온도 감지 회로(115), 전력 제어 모듈(116), 파워 온(power on) 검출 회로(117) 및 타이머(119)를 포함한다.
상태 머신(112)은 메모리 동작들의 칩 레벨 제어를 제공한다. 저장 영역(113)이, 예컨대, 동작 파라미터들 및 소프트웨어/코드를 위해 제공될 수 있다. 일 실시예에서, 상태 머신은 소프트웨어에 의해 프로그래밍가능하다. 다른 실시예들에서, 상태 머신은 소프트웨어를 사용하지 않고, 완전히 하드웨어(예컨대, 전기 회로들)로 구현된다. 온-칩 어드레스 디코더(114)는 호스트 또는 메모리 제어기에 의해 사용되는 어드레스와 디코더들(124, 132)에 의해 사용되는 하드웨어 어드레스 사이에 어드레스 인터페이스를 제공한다. 온도 감지 회로(115)에 의해 획득되는 온도의 표시가, 하기에서 추가로 기술되는 바와 같이, 판독 동작을 조정하는 데 사용될 수 있다.
전력 제어 모듈(116)은 메모리 동작들 동안 워드 라인들, 선택 게이트 라인들, 비트 라인들 및 소스 라인들에 공급되는 전력 및 전압들을 제어한다. 그것은 데이터 및 더미 워드 라인들, SGS 및 SGD 트랜지스터들 및 소스 라인들을 위한 드라이버들을 포함할 수 있다. 감지 블록들(51 내지 53)은 하나의 접근법에서 비트 라인 드라이버들을 포함할 수 있다. 파워 온 검출 회로는 메모리 디바이스가 언제 파워 온되었는지를 검출하는 데 사용될 수 있다. 검출 회로(117)는 소프트웨어 또는 펌웨어 루틴, 또는 하드웨어로 구현되는 루틴일 수 있는 이벤트 핸들러를 포함할 수 있다. 타이머(119)는 마지막 동작(예컨대, 판독 또는 기록 동작) 이후에 경과한 시간을 결정하는 데 사용될 수 있다. 타이머(119)는 메모리 디바이스에서 사용되는 클록 신호에 기초하여 증분할 수 있다.
일부 구현예들에서, 컴포넌트들 중 일부가 조합될 수 있다. 다양한 설계들에서, 메모리 구조물(126) 이외의 컴포넌트들 중 하나 이상은 (단독으로 또는 조합하여) 본 명세서에 기술된 프로세스들의 단계들을 포함하는 본 명세서에 기술된 기법들을 수행하도록 구성된 적어도 하나의 제어 회로로 고려될 수 있다. 예를 들어, 제어 회로는 제어 회로(110), 상태 머신(112), 온-칩 어드레스 디코더(114), 전력 제어 모듈(116), 감지 블록들(51, 52, ..., 53), 판독/기록 회로들(128), 제어기(122) 등 중 어느 하나 또는 이들의 조합을 포함할 수 있다.
오프-칩 제어기(122)(이는 일 실시예에서 전기 회로임)는 프로세서(122c), ROM(122a) 및 RAM(122b)과 같은 저장 디바이스들(메모리), 및 에러 정정 코드(ECC) 엔진(245)을 포함할 수 있다. ECC 엔진은 다수의 판독 에러들을 정정할 수 있다.
메모리 인터페이스(122d)가 또한 제공될 수 있다. ROM(122a), RAM(122b) 및 프로세서(122c)와 통신 상태에 있는 메모리 인터페이스(122d)는 제어기(122)와 메모리 다이(108) 사이에 전기적 인터페이스를 제공하는 전기 회로이다. 예를 들어, 메모리 인터페이스는 신호들의 포맷 또는 타이밍을 변경시킬 수 있고, 버퍼를 제공할 수 있고, 서지(surge)들로부터 격리될 수 있고, I/O를 래칭(latching)할 수 있고, 등일 수 있다. 프로세서(122c)는 메모리 인터페이스(122d)를 통해 제어 회로(110)(또는 메모리 다이의 임의의 다른 컴포넌트)로 커맨드들을 발행할 수 있다.
저장 디바이스는 명령어들의 세트와 같은 코드를 포함하고, 프로세서는 본 명세서에서 설명되는 기능을 제공하기 위하여 명령어들의 세트를 실행하도록 동작가능하다. 대안적으로 또는 추가적으로, 프로세서는 하나 이상의 워드 라인들 내의 메모리 셀들의 예약된 영역과 같은 메모리 구조물의 저장 디바이스로부터의 코드에 액세스할 수 있다.
예를 들어, 코드는, 예컨대, 프로그래밍, 판독, 및 소거 동작들을 위해 메모리 구조물에 액세스하도록 제어기에 의해 사용될 수 있다. 코드는 부트 코드 및 제어 코드(예를 들어, 명령어들의 세트)를 포함할 수 있다. 부트 코드는, 부팅 또는 시동 프로세스 동안 제어기를 초기화하고 제어기가 메모리 구조물에 액세스할 수 있게 하는 소프트웨어이다. 코드는 하나 이상의 메모리 구조물들을 제어하기 위해 제어기에 의해 사용될 수 있다. 전력 공급 시에, 프로세서(122c)는 실행을 위해 ROM(122a) 또는 메모리 구조물(126)로부터 부트 코드를 페치(fetch)하고, 부트 코드는 시스템 컴포넌트들을 초기화하고 제어 코드를 RAM(122b)에 로딩한다. 일단 제어 코드가 RAM에 로딩되면, 그것은 프로세서에 의해 실행된다. 제어 코드는 메모리의 제어 및 할당, 명령어들의 처리의 우선 순위화, 및 입력 및 출력 포트들의 제어와 같은 기본 작업들을 수행하는 드라이버들을 포함한다.
일 실시예에서, 호스트는 하나 이상의 프로세서들, 본 명세서에서 설명되는 방법들을 수행하도록 하나 이상의 프로세서들을 프로그래밍하기 위한 프로세서 판독 가능 코드(예를 들어, 소프트웨어)를 저장하는 하나 이상의 프로세서 판독 가능 저장 디바이스들(RAM, ROM, 플래시 메모리, 하드 디스크 드라이브, 솔리드 스테이트 메모리)을 포함하는 컴퓨팅 디바이스(예를 들어, 랩톱, 데스크톱, 스마트폰, 태블릿, 디지털 카메라)이다. 호스트는 또한, 하나 이상의 프로세서들과 통신하는 추가 시스템 메모리, 하나 이상의 입력/출력 인터페이스들 및/또는 하나 이상의 입력/출력 디바이스들을 포함할 수 있다.
NAND 플래시 메모리에 더하여 다른 유형의 비휘발성 메모리가 또한 사용될 수 있다.
반도체 메모리 디바이스들은 "DRAM"(dynamic random access memory) 또는 "SRAM"(static random access memory) 디바이스들과 같은 휘발성 메모리 디바이스들, "ReRAM"(resistive random access memory), "EEPROM"(electrically erasable programmable read only memory), 플래시 메모리(이는 또한 EEPROM의 서브세트로 간주될 수 있음), "FRAM"(ferroelectric random access memory), 및 "MRAM"(magnetoresistive random access memory)과 같은 비휘발성 메모리 디바이스들, 및 정보를 저장할 수 있는 다른 반도체 요소들을 포함한다. 메모리 디바이스의 각각의 유형은 상이한 구성들을 가질 수 있다. 예를 들어, 플래시 메모리 디바이스들은 NAND 또는 NOR 구성으로 구성될 수 있다.
메모리 디바이스들은 수동 및/또는 능동 요소들로부터, 임의의 조합들로 형성될 수 있다. 비제한적인 예로서, 수동 반도체 메모리 요소들은 ReRAM 디바이스 요소들을 포함하며, 이들은 일부 실시예들에서, 안티-퓨즈(anti-fuse) 또는 상변화 재료와 같은 저항성 스위칭 저장 요소, 및 선택적으로, 다이오드 또는 트랜지스터와 같은 스티어링 요소(steering element)를 포함한다. 또한, 비제한적인 예로서, 능동 반도체 메모리 요소들은 EEPROM 및 플래시 메모리 디바이스 요소들을 포함하며, 이들은 일부 실시예들에서, 플로팅 게이트, 전도성 나노입자들, 또는 전하 저장 유전체 재료와 같은 전하 저장 영역을 포함하는 요소들을 포함한다.
다수의 메모리 요소들은 그들이 직렬로 접속되도록 또는 각각의 요소가 개별적으로 액세스가능하도록 구성될 수 있다. 비제한적인 예로서, NAND 구성의 플래시 메모리 디바이스들(NAND 메모리)은 전형적으로 직렬로 접속된 메모리 요소들을 포함한다. NAND 스트링은 메모리 셀들 및 선택 게이트 트랜지스터들을 포함하는 직렬-접속된 트랜지스터들의 세트의 일례이다.
NAND 메모리 어레이는 어레이가 다수의 메모리 스트링들 - 그들 중 하나의 스트링은, 단일 비트 라인을 공유하고 그룹으로서 액세스되는 다수의 메모리 요소들로 구성됨 - 로 구성되도록 구성될 수 있다. 대안적으로, 메모리 요소들은 각각의 요소가 개별적으로 액세스가능하도록 구성될 수 있다 - 예컨대, NOR 메모리 어레이. NAND 및 NOR 메모리 구성들은 예들이고, 메모리 요소들은 달리 구성될 수 있다.
기판 내에 그리고/또는 기판 위에 위치된 반도체 메모리 요소들은 2D 메모리 구조물 또는 3D 메모리 구조물과 같이, 2차원 또는 3차원으로 배열될 수 있다. 2D 메모리 구조물에서, 반도체 메모리 요소들은 단일 평면 또는 단일 메모리 디바이스 레벨로 배열된다. 전형적으로, 2D 메모리 구조물에서, 메모리 요소들은, 메모리 요소들을 지지하는 기판의 주 표면에 실질적으로 평행하게 연장되는 평면(예컨대, x-y 방향 평면) 내에 배열된다. 기판은 메모리 요소들의 층이 상부에 또는 내부에 형성되는 웨이퍼일 수 있거나, 또는 그것은 메모리 요소들이 형성된 후에 메모리 요소들에 부착되는 캐리어 기판일 수 있다. 비제한적인 예로서, 기판은 실리콘과 같은 반도체를 포함할 수 있다.
메모리 요소들은, 복수의 로우들 및/또는 컬럼들에서와 같이, 순서화된 어레이에서의 단일 메모리 디바이스 레벨로 배열될 수 있다. 그러나, 메모리 요소들은 규칙적이지 않은(non-regular) 또는 직교하지 않는(non-orthogonal) 구성들로 배열될 수 있다. 메모리 요소들은 각각 비트 라인들 및 워드 라인들과 같은 2개 이상의 전극들 또는 콘택트 라인들을 가질 수 있다.
3D 메모리 어레이는 메모리 요소들이 다수의 평면들 또는 다수의 메모리 디바이스 레벨들을 차지하도록 배열되고, 그에 의해 구조물을 3차원으로 (즉, x, y 및 z 방향들로 - 여기서, z 방향은 기판의 주 표면에 실질적으로 수직이고, x 및 y 방향들은 기판의 주 표면에 실질적으로 평행함) 형성한다.
비제한적인 예로서, 3D 메모리 구조물은 다수의 2D 메모리 디바이스 레벨들의 스택으로서 수직으로 배열될 수 있다. 다른 비제한적인 예로서, 3D 메모리 어레이는 각각의 컬럼이 다수의 메모리 요소들을 갖는 다수의 수직 컬럼들(예컨대, 기판의 주 표면에 실질적으로 수직으로, 즉, y 방향으로 연장된 컬럼들)로서 배열될 수 있다. 컬럼들은 2D 구성으로, 예컨대, x-y 평면 내에 배열될 수 있어서, 요소들이 다수의 수직으로 적층된 메모리 평면들 상에 있는, 메모리 요소들의 3D 배열을 생성할 수 있다. 3차원의 메모리 요소들의 다른 구성들이 또한 3D 메모리 어레이를 구성할 수 있다.
비제한적인 예로서, 3D NAND 메모리 어레이에서, 메모리 요소들은 함께 커플링되어, 단일 수평(예컨대, x-y) 메모리 디바이스 레벨 내의 NAND 스트링을 형성할 수 있다. 대안적으로, 메모리 요소들은 함께 커플링되어, 다수의 수평 메모리 디바이스 레벨들을 가로질러 가는 수직 NAND 스트링을 형성할 수 있다. 일부 NAND 스트링들이 메모리 요소들을 단일 메모리 레벨로 포함하는 한편 다른 스트링들은 다수의 메모리 레벨들을 통하여 걸쳐 있는 메모리 요소들을 포함하는 다른 3D 구성들이 구상될 수 있다. 3D 메모리 어레이들은 또한 NOR 구성으로 그리고 ReRAM 구성으로 설계될 수 있다.
전형적으로, 모놀리식 3D 메모리 어레이에서, 하나 이상의 메모리 디바이스 레벨들이 단일 기판 위에 형성된다. 선택적으로, 모놀리식 3D 메모리 어레이는 또한, 적어도 부분적으로 단일 기판 내에 하나 이상의 메모리 층들을 가질 수 있다. 비제한적인 예로서, 기판은 실리콘과 같은 반도체를 포함할 수 있다. 모놀리식 3D 어레이에서, 어레이의 각각의 메모리 디바이스 레벨을 구성하는 층들은 전형적으로 어레이의 하부 메모리 디바이스 레벨들의 층들 상에 형성된다. 그러나, 모놀리식 3D 메모리 어레이의 인접한 메모리 디바이스 레벨들의 층들이 공유될 수 있거나 메모리 디바이스 레벨들 사이에 개재하는 층들을 가질 수 있다.
2D 어레이들은 별도로 형성되고 이어서 함께 패키징되어 다수의 메모리 층들을 갖는 비-모놀리식 메모리 디바이스를 형성할 수 있다. 예를 들어, 비-모놀리식 적층된 메모리들은, 별개의 기판들 상에 메모리 레벨들을 형성하고 이어서 메모리 레벨들을 서로 적층함으로써 구성될 수 있다. 기판들은 적층 이전에 메모리 디바이스 레벨들로부터 박화되거나 제거될 수 있지만, 메모리 디바이스 레벨들은 초기에 별개의 기판들 위에 형성되기 때문에, 생성된 메모리 어레이들은 모놀리식 3D 메모리 어레이들이 아니다. 또한, 다수의 2D 메모리 어레이들 또는 3D 메모리 어레이들(모놀리식 또는 비-모놀리식)이 별개의 칩들 상에 형성되고 이어서 함께 패키징되어 적층형 칩 메모리 디바이스를 형성할 수 있다.
연관된 회로부가 메모리 요소들의 동작을 위해 그리고 메모리 요소들과의 통신을 위해 전형적으로 요구된다. 비제한적인 예로서, 메모리 디바이스들은 프로그래밍 및 판독과 같은 기능들을 달성하기 위해 메모리 요소들을 제어하고 구동하는 데 사용되는 회로부를 가질 수 있다. 이러한 연관된 회로부는 메모리 요소들과 동일한 기판 상에 그리고/또는 별개의 기판 상에 있을 수 있다. 예를 들어, 메모리 판독, 기록, 및 소거 동작들을 위한 제어기는 별개의 제어기 칩 상에 그리고/또는 메모리 요소들과 동일한 기판 상에 위치될 수 있다.
당업자는 이러한 기술이 설명된 2D 및 3D의 예시적인 구조물들로 제한되는 것이 아니라 본 명세서에서 설명되는 바와 같은 그리고 당업자에 의해 이해되는 바와 같은 본 기술의 사상 및 범주 내의 모든 관련된 메모리 구조들을 포함한다는 것을 인식할 것이다.
도 1의 메모리 디바이스(100)가 비휘발성 저장 장치의 일례이지만, 비휘발성 저장 장치들의 다른 예들이 본 기술을 사용하여 구현될 수 있다.
도 1a는 본 명세서에 제안된 기술을 구현할 수 있는 호스트(140)에 접속된 메모리 디바이스(101)의 일 실시예의 블록도이다. 메모리 디바이스(101)는 비휘발성 저장 장치의 다른 예로 간주될 수 있다. 많은 상이한 유형들의 메모리 디바이스들이 본 명세서에 제안된 기술과 함께 사용될 수 있다. 하나의 예시적인 메모리 디바이스는 솔리드 스테이트 드라이브(solid state drive, "SSD")이지만; 다른 유형들의 메모리 디바이스들이 또한 사용될 수 있다. 메모리 디바이스(101)는 제어기(102), 데이터를 저장하기 위한 비휘발성 메모리(104), 및 로컬 메모리(106)(예컨대, DRAM, SRAM 또는 ReRAM)를 포함한다. 일 실시예에서, 제어기(102)는 프론트 엔드 프로세서(Front End Processor, FEP) 회로(141) 및 하나 이상의 백 엔드 프로세서(Back End Processor, BEP) 회로들(142)을 포함한다. 일 실시예에서, FEP 회로(141)는 ASIC 상에서 구현된다. 일 실시예에서, 각각의 BEP 회로(142)는 별개의 ASIC 상에서 구현된다. 일 실시예에서, BEP 회로들(142) 및 FEP 회로(141) 각각에 대한 ASIC들은 제어기(102)가 시스템 온 칩(System on a Chip, SoC)으로서 제조되도록 동일한 반도체 상에서 구현된다. FEP 회로(141) 및 BEP 회로(142) 둘 모두는 그 자신들만의 프로세서들을 포함한다. 일 실시예에서, FEP 회로(141) 및 BEP 회로(142)는 FEP 회로(141)가 마스터(master)이고 각각의 BEP 회로(142)가 슬레이브(slave)인 마스터 슬레이브 구성으로 작동한다. 예를 들어, FEP 회로(141)는 메모리 관리(예컨대, 가비지 수집, 마모 레벨링 등), 논리-물리 어드레스 변환, 호스트와의 통신, DRAM(로컬 휘발성 메모리)의 관리 및 SSD(또는 기타 비휘발성 저장 시스템)의 전체 동작의 관리를 수행하는 플래시 변환 계층을 구현한다. BEP 회로(142)는 FEP 회로(141)의 요청으로 메모리 패키지들/다이에서의 메모리 동작들을 관리한다. 예를 들어, BEP 회로(142)는 판독, 소거 및 프로그래밍 프로세스들을 수행할 수 있다. 추가적으로, BEP 회로(142)는 버퍼 관리를 수행할 수 있고, FEP 회로(141)에 의해 요구되는 특정 전압 레벨들을 설정할 수 있고, 에러 정정을 수행할 수 있고(예컨대, 에러 정정 코드(ECC)를 생성할 수 있음), 메모리 패키지들에 대한 토글 모드 인터페이스들을 제어할 수 있고, 등등을 할 수 있다. 일 실시예에서, 각각의 BEP 회로(142)는 그 자신의 메모리 패키지들의 세트를 담당한다. 제어기(102)는 제어 회로의 일례이다.
일 실시예에서, 비휘발성 메모리(104)는 복수의 메모리 패키지들을 포함한다. 각각의 메모리 패키지는 하나 이상의 메모리 다이를 포함한다. 따라서, 제어기(102)는 하나 이상의 비휘발성 메모리 다이에 접속된다. 일 실시예에서, 메모리 패키지들(104) 내의 각각의 메모리 다이는 NAND 플래시 메모리(2차원 NAND 플래시 메모리 및/또는 3차원 NAND 플래시 메모리 포함)를 이용한다. 다른 실시예들에서, 메모리 패키지는 다른 유형들의 메모리를 포함할 수 있다.
제어기(102)는 인터페이스(예컨대, 데이터 버스(120))를 통해 호스트(140)와 통신한다. 일 실시예에서, 데이터 버스(120)는 "UFS(Universal Flash Storage)" 인터페이스를 구현한다.
호스트(140)는 메모리 디바이스(101)에 액세스(예컨대, 그에 기록하고 그로부터 판독)할 필요가 있는 소프트웨어 애플리케이션(143)을 실행하도록 구성된다. 메모리 디바이스(101)에 액세스하기 위해, 애플리케이션(143)은 드라이버(144)와 통신하는데, 이는 애플리케이션(143)과 메모리 디바이스(101) 사이의 통신을 가능하게 하기 위한 소프트웨어이다. 드라이버(144)를 구현하는 소프트웨어는 호스트(140) 내의 마이크로프로세서에 의해 실행될 수 있다. 드라이버(144)는 디바이스 인터페이스(129)를 통해 메모리 디바이스(101)와 통신하는 호스트 제어기(146)(예컨대, 마이크로프로세서 및 소프트웨어, 또는 다른 유형의 프로세서)와 통신한다. 일 실시예에서, 디바이스 인터페이스(129)는 메모리 디바이스(101)에 물리적으로 접속하기 위한 일련의 커넥터들, 포트들, 커패시터들 등을 포함한다. 호스트 제어기(146)는 또한 호스트 메모리(130)에 접속되는데, 이는 호스트의 물리적 메모리이고, DRAM, SRAM, 비휘발성 메모리 또는 다른 유형의 저장소일 수 있다. 호스트(140)는 메모리 디바이스(101)의 외부에 있고 그로부터 분리된다. 일 실시예에서, 메모리 디바이스(101)는 호스트(140)에 임베드된다. 일부 실시예들에서, 메모리 디바이스(101)는 호스트(140) 내에 임베드되지 않고, 호스트(140)에 접속된다.
호스트(140)는 메모리 디바이스(101) 외부에 있는 엔티티의 일례이다. 메모리 디바이스(101) 외부에 있는 엔티티의 다른 예들은 메모리 디바이스(101)에 접속되는 다른 컴퓨팅 디바이스들(예컨대, 컴퓨터들, 서버들, 스마트 기기들, 스마트 폰들 등), 및 임의의 통신 수단(예컨대, LAN, WAN, WiFi, 유선 접속, 무선 접속, 직접 접속, 간접 접속 등)을 통해 메모리 디바이스(101)와 통신하는 다른 컴퓨팅 시스템들을 포함한다.
도 1b는 FEP 회로(141)의 일 실시예의 블록도이다. 도 1b는 호스트(140)와 통신하기 위한 PCIe 인터페이스(150) 및 PCIe 인터페이스와 통신하는 호스트 프로세서(152)를 도시한다. 호스트 프로세서(152)는 구현에 적합한 당업계에 공지된 임의의 유형의 프로세서일 수 있다. 호스트 프로세서(152)는 네트워크-온-칩(network-on-chip, NOC)(154)과 통신한다. NOC는 통상적으로 SoC 내의 코어들 사이의, 집적 회로 상의 통신 서브시스템이다. NOC들은 동기 및 비동기 클록 도메인들에 걸쳐 있을 수 있거나, 또는 클록킹되지 않은 비동기 로직을 사용할 수 있다. NOC 기술은 온-칩 통신에 네트워킹 이론 및 방법들을 적용하고, 종래의 버스 및 크로스바 상호접속부를 통한 현저한 개선을 가져온다. NOC는 다른 설계들에 비해 SoC들의 확장성 및 복잡한 SoC들의 전력 효율을 개선한다. NOC의 배선들 및 링크들은 많은 신호들에 의해 공유된다. 높은 레벨의 병렬성(parallelism)이 달성되는데, 그 이유는 NOC 내의 모든 링크들이 상이한 데이터 패킷들에 대해 동시에 동작할 수 있기 때문이다. 따라서, 통합된 서브시스템들의 복잡도가 계속 증가하고 있음에 따라, NOC는 이전의 통신 아키텍처들(예컨대, 전용 P2P 신호 배선, 공용 버스, 또는 브리지들을 갖는 구분된 버스)에 비해 향상된 성능(예컨대, 처리율) 및 확장성을 제공한다. 메모리 프로세서(156), SRAM(160) 및 DRAM 제어기(162)는 NOC(154)에 접속되고 이와 통신한다. DRAM 제어기(162)는 DRAM(예컨대, 로컬 메모리(106))을 동작시키고 이와 통신하는 데 사용된다. SRAM(160)은 메모리 프로세서(156)에 의해 사용되는 로컬 RAM 메모리이다. 메모리 프로세서(156)는 FEP 회로를 실행하고 다양한 메모리 동작들을 수행하는 데 사용된다. 또한, 2개의 PCIe 인터페이스들(164, 166)이 NOC와 통신한다. 도 1b의 실시예에서, SSD 제어기는 2개의 BEP 회로들(142)을 포함할 것이고; 따라서, 2개의 PCIe 인터페이스들(164/166)이 있다. 각각의 PCIe 인터페이스는 BEP 회로들(142) 중 하나와 통신한다. 다른 실시예들에서, 2개 초과 또는 2개 미만의 BEP 회로들(142)이 있을 수 있고; 따라서, 2개 초과의 PCIe 인터페이스들이 있을 수 있다.
도 1c는 BEP 회로(142)의 일 실시예의 블록도이다. 도 1c는 FEP 회로(141)와 통신(예컨대, 도 2의 PCIe 인터페이스들(164, 166) 중 하나와 통신)하기 위한 PCIe 인터페이스(200)를 도시한다. PCIe 인터페이스(200)는 2개의 NOC들(202, 204)과 통신한다. 일 실시예에서, 2개의 NOC들은 하나의 큰 NOC로 조합될 수 있다. 각각의 NOC(202/204)는 XOR 엔진(224/254) 및 ECC 엔진(226/256)을 통해 SRAM(230/260), 버퍼(232/262), 프로세서(220/250), 및 데이터 경로 제어기(222/252)에 접속된다. ECC 엔진들(226/256)은, 본 기술 분야에 공지된 바와 같이, 에러 정정을 수행하는 데 사용된다(예컨대, 기록될 데이터를 인코딩하고, 판독되는 데이터를 디코딩함). XOR 엔진들(224/254)은 데이터를 XOR하는 데 사용되어 프로그래밍 에러가 있는 경우에 복구될 수 있는 방식으로 데이터가 조합(예컨대, 데이터를 조합) 및 저장될 수 있도록 한다. 데이터 경로 제어기(22)는 4개의 채널들을 통해 메모리 패키지들과 통신하기 위해 인터페이스 모듈에 접속된다. 따라서, 상부 NOC(202)는 메모리 패키지들과 통신하기 위하여 4개의 채널들에 대한 인터페이스(228)와 연관되고, 하부 NOC(204)는 메모리 패키지들과의 통신을 위하여 4개의 추가 채널들에 대한 인터페이스(258)와 연관된다. 각각의 인터페이스(228/258)는 4개의 토글 모드 인터페이스들(TM 인터페이스), 4개의 버퍼들 및 4개의 스케줄러들을 포함한다. 채널들의 각각에 대하여 하나의 스케줄러, 버퍼 및 TM 인터페이스가 있다. 프로세서는 당업계에 공지된 임의의 표준 프로세서일 수 있다. 데이터 경로 제어기들(222/252)은 프로세서, FPGA, 마이크로프로세서 또는 다른 유형의 제어기일 수 있다. XOR 엔진들(224/254) 및 ECC 엔진들(226/256)은 하드웨어 가속기로 알려진 전용 하드웨어 회로들이다. 다른 실시예들에서, XOR 엔진들(224/254) 및 ECC 엔진들(226/256)은 소프트웨어에서 구현될 수 있다. 스케줄러, 버퍼, 및 TM 인터페이스들은 하드웨어 회로들이다.
도 1d는 메모리 버스(294)(커맨드 라인들, 데이터 라인들 및 칩 인에이블 라인들)에 접속된 복수의 메모리 다이(300)를 포함하는 메모리 패키지(104)의 일 실시예의 블록도이다. 메모리 버스(294)는 BEP 회로(142)(예컨대, 도 1c 참조)의 TM 인터페이스와 통신하기 위한 토글 모드 인터페이스(296)에 접속된다. 일부 실시예들에서, 메모리 패키지는 메모리 버스 및 TM 인터페이스에 접속되는 소형 제어기를 포함할 수 있다. 메모리 패키지는 하나 이상의 메모리 다이를 가질 수 있다. 일 실시예에서, 각각의 메모리 패키지는 8개 또는 16개의 메모리 다이를 포함하지만; 다른 개수들의 메모리 다이가 또한 구현될 수 있다. 본 명세서에 설명된 기술은 임의의 특정 개수의 메모리 다이에 한정되지 않는다.
도 1a 내지 도 1d는 제어기의 하나의 예시적인 아키텍처를 제공한다. 그러나, 본 명세서에 설명된 기술은 임의의 특정 형태의 제어기로 제한되지 않는다. 따라서, 다른 아키텍처들이 제어기에 활용될 수 있다. 예를 들어, 제어기의 다른 실시예들은 다른 구성들에서 마이크로프로세서들, 마이크로제어기들, 상태 머신 등을 포함한다. 일부 경우들에 있어서, 제어기는 호스트 내부에 있을 수 있다. 다른 경우들에 있어서, 제어기는 메모리 다이 상에서 구현될 수 있다. 다른 옵션들/구성들이 또한 사용될 수 있다. 제어기는 또한, 제어기가 메모리 디바이스를 위한 프로세서로서 동작함에 따라, 그것이 다수의 프로세싱 코어들을 포함하더라도, 프로세서로 지칭될 수 있다.
도 2는 메모리 다이(300)의 일 실시예의 기능 블록도이다. 도 1d의 하나 이상의 메모리 다이(300) 각각은 도 2의 메모리 다이(300)로서 구현될 수 있다. 도 2에 도시된 컴포넌트들은 전기 회로들이다. 일 실시예에서, 각각의 메모리 다이(300)는 모두가 전기 회로들인 메모리 구조물(326), 제어 회로(310), 및 판독/기록 회로들(328)을 포함한다. 메모리 구조물(326)은 로우 디코더(324)를 통해 워드 라인들에 의해 그리고 컬럼 디코더(332)를 통해 비트 라인들에 의해 어드레싱가능하다. 판독/기록 회로들(328)은 SB1, SB2,...,SBp(감지 회로)를 포함한 다수의 감지 블록들(350)을 포함하고, 다수의 메모리 셀들 내의 일정 페이지(또는 다수의 페이지들)의 데이터가 동시에 판독 또는 프로그래밍될 수 있게 한다. 일 실시예에서, 각각의 감지 블록은 감지 증폭기, 및 비트 라인에 접속된 래치들의 세트를 포함한다. 래치들은 기록될 데이터 및/또는 판독된 데이터를 저장한다. 감지 블록들은 비트 라인 드라이버들을 포함한다.
커맨드들 및 데이터는 라인들(319)을 통해 제어기(102)와 메모리 다이(300) 사이에서 전달된다. 일 실시예에서, 메모리 다이(300)는 라인들(118)에 접속된 입력 및/또는 출력(I/O) 핀들의 세트를 포함한다.
제어 회로(310)는 메모리 구조물(326) 상에서 메모리 동작들(예컨대, 기록, 판독, 소거, 및 다른 것들)을 수행하기 위해 판독/기록 회로들(328)과 협력한다. 일 실시예에서, 제어 회로(310)는 상태 머신(312), 온-칩 어드레스 디코더(314), 전력 제어 회로(316) 및 온도 검출 회로(318)를 포함한다. 상태 머신(312)은 메모리 동작들의 다이-레벨 제어를 제공한다. 일 실시예에서, 상태 머신(312)은 소프트웨어에 의해 프로그래밍가능하다. 다른 실시예들에서, 상태 머신(312)은 소프트웨어를 사용하지 않고, 완전히 하드웨어(예컨대, 전기 회로들)로 구현된다. 일부 실시예들에서, 상태 머신(312)은 마이크로제어기 또는 마이크로프로세서에 의해 대체되거나 증강될 수 있다. 일 실시예에서, 제어 회로(310)는 버퍼들, 예컨대 레지스터들, ROM 퓨즈들, 및 디폴트 값들, 예컨대, 베이스 전압들 및 다른 파라미터들을 저장하기 위한 다른 저장 디바이스들을 포함한다.
온-칩 어드레스 디코더(314)는 제어기(102)에 의해 사용되는 어드레스들 사이의 어드레스 인터페이스를 디코더들(324, 332)에 의해 사용되는 하드웨어 어드레스에 제공한다. 전력 제어 모듈(316)은 메모리 동작 동안 워드 라인들 및 비트 라인들에 공급되는 전력 및 전압들을 제어한다. 전력 제어 모듈(316)은 전압들을 생성하기 위한 전하 펌프들을 포함할 수 있다.
본 문헌의 목적들을 위해, 제어 회로(310)는, 단독으로 또는 판독/기록 회로들(328) 및 디코더들(324/332)과 조합하여, 메모리 구조물(326)에 접속되는 제어 회로를 포함한다. 이러한 제어 회로는 흐름도들에서 후술되는 기능들을 수행하는 전기 회로이다. 다른 실시예들에서, 제어 회로는 흐름도들에서 후술되는 기능들을 수행하는, 소프트웨어(예컨대, 펌웨어)와 조합하는 전기 회로인 제어기(102)만으로 이루어질 수 있다. 다른 대안예에서, 제어 회로는 흐름도들에서 후술되는 기능들을 수행하는 제어기(102) 및 제어 회로(310)를 포함한다. 다른 실시예에서, 제어 회로는 상태 머신(312)(및/또는 마이크로제어기 및/또는 마이크로프로세서)을 단독으로 또는 제어기(102)와 조합하여 포함한다. 다른 대안예에서, 제어 회로는 흐름도들에서 후술되는 기능들을 수행하는 제어기(102), 제어 회로(310), 판독/기록 회로들(328), 및 디코더들(324/332)을 포함한다. 다른 실시예들에서, 제어 회로는 비휘발성 메모리를 동작시키는 하나 이상의 전기 회로들을 포함한다.
일 실시예에서, 메모리 구조물(326)은 다수의 메모리 레벨들이 단일 기판 위에 형성되는 비휘발성 메모리 셀들의 모놀리식 3차원 메모리 어레이를 포함한다. 메모리 구조물은 실리콘(또는 다른 유형의) 기판 위에 활성 영역이 배치되어 있는 메모리 셀들의 어레이들의 하나 이상의 물리적 레벨들에서 모놀리식으로 형성되는 임의의 유형의 비휘발성 메모리를 포함할 수 있다. 일례에서, 메모리 구조물(326)의 비휘발성 메모리 셀들은, 예를 들어 전체가 본 명세서에 참고로 포함된 미국 특허 제9,721,662호에서 설명된 것과 같은 전하-트래핑(charge-trapping) 재료를 갖는 수직 NAND 스트링들을 포함한다. 다른 실시예에서, 메모리 구조물(326)은 비휘발성 메모리 셀들의 2차원 메모리 어레이를 포함한다. 일례에서, 비휘발성 메모리 셀들은, 예를 들어 전체가 본 명세서에 참고로 포함된 미국 특허 제9,082,502호에서 설명된 것과 같은 플로팅 게이트들을 활용하는 NAND 플래시 메모리 셀들이다. 다른 유형들의 메모리 셀들(예컨대, NOR-형 플래시 메모리)이 또한 사용될 수 있다.
일 실시예에서, 제어 회로(들)는 제어 다이라고 지칭되는 제1 다이 상에 형성되고, 메모리 어레이는 메모리 다이로 지칭되는 제2 다이 상에 형성된다. 예를 들어, 메모리와 연관된 일부 또는 모든 제어 회로들(예컨대, 제어 회로(310), 로우 디코더(324), 컬럼 디코더(332), 및 판독/기록 회로들(328))이 동일한 제어 다이 상에 형성될 수 있다. 제어 다이는 집적 메모리 조립체를 형성하기 위해 하나 이상의 대응하는 메모리 다이에 접합될 수 있다. 제어 다이 및 메모리 다이는 서로에 대한 전기 접속을 위해 배열된 접합 패드들을 가질 수 있다. 제어 다이 및 메모리 다이의 접합 패드들은, 접합 패드 크기 및 접합 패드 간격(즉, 접합 패드 피치)에 부분적으로 의존하여, 다양한 접합 기법들 중 임의의 것에 의해 함께 정렬 및 접합될 수 있다. 일부 실시예들에서, 접합 패드들은 소위 Cu-Cu 접합 프로세스에서, 솔더 또는 다른 추가 재료 없이, 서로 직접 접합된다. 일부 예들에서, 다이들은 일대일 배열(예컨대, 하나의 제어 다이 대 하나의 메모리 다이)로 접합된다. 일부 예들에서, 집적 메모리 조립체에는 하나 초과의 제어 다이 및/또는 하나 초과의 메모리 다이가 있을 수 있다. 일부 실시예들에서, 집적 메모리 조립체는 다수의 제어 다이 및/또는 다수의 메모리 다이의 스택을 포함한다. 일부 실시예에서, 제어 다이는 메모리 제어기에 접속되거나, 또는 다른 방식으로 그와 통신한다. 예를 들어, 메모리 제어기는 메모리 어레이에 프로그래밍될 데이터를 수신할 수 있다. 메모리 제어기는 제어 다이가 그 데이터를 메모리 다이 상의 메모리 어레이에 프로그래밍할 수 있도록 그 데이터를 제어 다이로 포워딩할 것이다.
도 3a는 도 1의 감지 블록(51) 또는 도 2의 감지 블록(350)의 일 실시예를 도시하는 블록도이다. 개별 감지 블록(51)은 감지 회로들(180 내지 183) 또는 감지 증폭기들로 지칭되는 하나 이상의 코어 부분들, 및 관리 회로(190)로 지칭되는 공통 부분으로 분할된다. 일 실시예에서, 각각의 비트 라인/NAND 스트링에 대한 별개의 감지 회로 및 한 세트의 다수의, 예컨대 4개 또는 8개의 감지 회로들에 대한 하나의 공통 관리 회로(190)가 있을 것이다. 그룹 내의 감지 회로들 각각은 데이터 버스(172)를 통해 연관된 관리 회로와 통신한다. 따라서, 한 세트의 저장 요소들의 감지 회로들과 통신하는 하나 이상의 관리 회로들이 있다.
감지 회로(180)는, 일례로서, 접속된 비트 라인 내의 전도 전류가 사전결정된 임계 레벨을 초과하는지 또는 그 미만인지를 결정함으로써 감지를 수행하는 감지 회로(170)를 포함한다. 감지 회로(180)는 또한 접속된 비트 라인 상의 전압 조건을 설정하는 데 사용되는 비트 라인 래치(184)를 포함한다. 예를 들어, 비트 라인 래치에 래칭된 사전결정된 상태는 접속된 비트 라인이 프로그래밍 금지를 지정하는 상태(예컨대, 1.5 내지 3 V)로 풀링(pulling)되게 할 것이다. 예로서, 플래그(flag)=0은 프로그래밍을 금지할 수 있는 반면, 플래그=1은 프로그래밍을 금지하지 않는다.
관리 회로(190)는 프로세서(192), 데이터 래치들(194 내지 197)의 4개의 예시적인 세트들, 및 데이터 래치들(194)의 세트와 데이터 버스(120) 사이에 커플링된 I/O 인터페이스(196)를 포함한다. 데이터 래치들, 예컨대 T, C, B, A의 하나의 세트가 각각의 감지 회로에 대해 제공될 수 있다. 일부 경우들에 있어서, 추가적인 데이터 래치들이 사용될 수 있다. 래치들 T, C, B, A의 각각의 세트는 비휘발성 메모리 셀들의 세트에 함께 프로그래밍하기 위한 데이터의 상이한 논리 페이지에 대응할 수 있다. 이것은 저장 요소당 16-레벨 또는 4-비트 메모리 디바이스 내에 있다. 비트 라인당 하나의 추가 데이터 래치가 저장 요소당 각각의 추가 데이터 비트에 대해 제공될 수 있다.
프로세서(192)는, 예를 들어, 감지된 저장 요소에 저장된 데이터를 결정하고 결정된 데이터를 데이터 래치들의 세트에 저장하기 위해, 계산을 수행한다. 데이터 래치들(194 내지 197)의 각각의 세트는 판독 동작 동안 프로세서(192)에 의해 결정된 데이터 비트들을 저장하는 데, 그리고 기록 데이터가 메모리 내에 프로그래밍되려는 것을 나타내는 프로그래밍 동작 동안 데이터 버스(120)로부터 불러오는 데이터 비트들을 저장하는 데 사용된다. I/O 인터페이스(196)는 데이터 래치들(194 내지 197)과 데이터 버스(120) 사이에 인터페이스를 제공한다.
판독 및 검증 동안, 시스템의 동작은 어드레싱된 저장 요소에 대한 상이한 제어 게이트 전압들의 공급을 제어하는 상태 머신(112)의 제어 하에 있다. 그것이 메모리에 의해 지원되는 다양한 메모리 상태들에 대응하는 다양한 사전정의된 제어 게이트 전압들을 통해 스텝형으로 진행됨에 따라, 감지 회로(180)는 이러한 전압들 중 하나에서 트립핑(tripping)할 수 있고, 대응하는 출력이 감지 회로(180)로부터 버스(172)를 통해 프로세서(192)로 제공될 것이다. 그 시점에서, 프로세서(192)는 감지 회로의 트리핑 이벤트(들) 및 상태 머신으로부터 입력 라인들(193)을 통해 인가된 제어 게이트 전압에 대한 정보를 고려하여 결과적인 메모리 상태를 결정한다. 이어서, 그것은 메모리 상태에 대한 이진 인코딩을 계산하고, 결과적인 데이터 비트들을 데이터 래치들(194 내지 197)에 저장한다. 관리 회로(190)의 다른 실시예에서, 비트 라인 래치는, 감지 회로(180)의 출력을 래칭하기 위한 래치로서, 그리고 또한, 전술된 바와 같은 비트 라인 래치로서의 이중 기능을 담당한다.
일부 구현예들은 다수의 프로세서들(192)을 포함할 수 있다. 일 실시예에서, 각각의 프로세서(192)는 출력 라인(도시되지 않음)을 포함하여 출력 라인들 각각이 함께 와이어드-OR(wired-OR)되게 한다. 일부 실시예들에서, 출력 라인들은 와이어드-OR 라인에 접속되기 전에 반전된다. 이러한 구성은, 와이어드-OR를 수신하는 상태 머신이, 프로그래밍되고 있는 모든 비트들이 원하는 레벨에 도달했을 때를 결정할 수 있기 때문에, 프로그래밍 검증 프로세스 동안 프로그래밍 프로세스가 완료되었을 때의 빠른 결정을 가능하게 한다. 예를 들어, 각각의 비트가 그의 원하는 레벨에 도달했을 때, 그 비트에 대한 논리 0이 와이어드-OR 라인으로 전송될 것이다(또는 데이터 1이 반전된다). 모든 비트들이 데이터 0 (또는 반전된 데이터 1)을 출력할 때, 상태 머신은 프로그래밍 프로세스를 종료하는 것을 알고 있다. 각각의 프로세서가 8개의 감지 회로들과 통신하기 때문에, 상태 머신은 와이어드-OR 라인을 8회 판독할 필요가 있거나, 또는 상태 머신이 와이어드-OR 라인을 1회만 판독하면 되도록 로직이 프로세서(192)에 추가되어 연관된 비트 라인들의 결과들을 누산한다. 유사하게, 논리 레벨들을 정확하게 선택함으로써, 전반적인 상태 머신은 제1 비트가 그의 상태를 변경하는 때를 검출할 수 있고 그에 따라서 알고리즘들을 변경할 수 있다.
메모리 셀들에 대한 프로그래밍 또는 검증 동작들 동안, 프로그래밍될 데이터(기록 데이터)는 데이터 버스(120)로부터 데이터 래치들(194 내지 197)의 세트에 저장된다. 저장 요소당 4-비트 구현예(쿼드-레벨 셀 또는 QLC)에서, 4개의 데이터 래치들(T, C, B, A)이 사용될 수 있다. 프로그래밍 동작은, 상태 머신의 제어 하에서, 어드레싱된 저장 요소들의 제어 게이트들에 인가되는 일련의 프로그래밍 전압 펄스들을 포함한다. 각각의 프로그래밍 전압에 뒤이어, 저장 요소가 원하는 메모리 상태로 프로그래밍되었는지를 결정하기 위해 재판독(검증)이 따른다. 일부 경우들에서, 프로세서(192)는 원하는 메모리 상태에 대한 재판독된 메모리 상태를 모니터링한다. 두 상태가 일치할 때, 프로세서(192)는 비트 라인 래치를 설정하여 비트 라인이 프로그래밍 금지를 나타내는 상태로 풀링되게 한다. 이것은, 비트 라인에 커플링된 저장 요소가 추가로 프로그래밍하는 것을, 프로그래밍 펄스들이 그의 제어 게이트에 나타나더라도, 금지한다. 다른 실시예들에서, 프로세서는 초기에 비트 라인 래치를 로딩하고, 감지 회로는 검증 프로세스 동안 비트 라인 래치를 금지 값(inhibit value)으로 설정한다.
데이터 래치들(194 내지 197)의 각각의 세트는 각각의 감지 회로에 대한 데이터 래치들의 스택으로서 구현될 수 있다. 일 실시예에서, 감지 회로(180)당 4개 이상의 데이터 래치들이 있다. 일부 구현들에서, 데이터 래치들은 그에 저장된 병렬 데이터가 데이터 버스(120)에 대한 직렬 데이터로 변환되도록, 그리고 그 반대로 되도록 시프트 레지스터로서 구현된다. 저장 요소들의 판독/기록 블록에 대응하는 데이터 래치들 모두는, 데이터의 블록이 직렬 전송(serial transfer)에 의해 입력 또는 출력될 수 있도록, 블록 시프트 레지스터를 형성하기 위해 함께 연결될 수 있다. 특히, 판독/기록 회로들의 뱅크는 그의 데이터 래치들의 세트 각각이, 이들이 마치 전체 판독/기록 블록에 대한 시프트 레지스터의 일부인 것처럼, 순차적으로 데이터 버스 내로 또는 데이터 버스 외부로 데이터를 시프트하도록 구성된다.
데이터 래치들은 연관된 저장 요소가 프로그래밍 동작에서 소정의 이정표들(mileposts)에 도달했을 때를 식별한다. 예를 들어, 래치들은 저장 요소의 Vth가 특정 검증 레벨 미만인 것을 식별할 수 있다. 데이터 래치들은 저장 요소가 데이터의 페이지로부터 하나 이상의 비트들을 현재 저장하는지의 여부를 나타낸다.
도 3b는 도 1의 감지 블록(51) 또는 도 2의 감지 블록(350)의 다른 예시적인 블록도를 도시한다. 컬럼 제어 회로부는 다수의 감지 블록들을 포함할 수 있고, 여기서 각각의 감지 블록은 각자의 비트 라인들을 통해 다수의 메모리 셀들에 대한 감지, 예컨대, 판독, 프로그래밍 검증 또는 소거 검증 동작들을 수행한다. 하나의 접근법에서, 감지 블록은 감지 증폭기들로도 지칭되는 다수의 감지 회로들을 포함한다. 각각의 감지 회로는 데이터 래치들 및 캐시들과 연관된다. 예를 들어, 예시적인 감지 회로들(350a, 351a, 352a, 353a)은 캐시들(350c, 351c, 352c, 353c)과 각각 연관된다.
하나의 접근법에서, 비트 라인들의 상이한 서브세트들이 상이한 각자의 감지 블록들을 사용하여 감지될 수 있다. 이는 감지 회로들과 연관된 프로세싱 부하가 각각의 감지 블록 내의 각자의 프로세서에 의해 분할되고 다뤄질 수 있게 한다. 예를 들어, 감지 회로 제어기(360)는 감지 회로들 및 래치들의 세트, 예컨대, 16개와 통신할 수 있다. 감지 회로 제어기는 사전충전 전압을 설정하기 위해 전압을 각각의 감지 회로에 제공하는 사전충전 회로(361)를 포함할 수 있다. 감지 회로 제어기는 또한 메모리(362) 및 프로세서(363)를 포함할 수 있다.
도 4는 메모리 셀들의 블록들에 전압들을 제공하기 위한 예시적인 회로를 도시한다. 이러한 예에서, 로우 디코더(401)는 블록들(410)의 세트 내의 각각의 블록의 워드 라인들 및 선택 게이트들에 전압들을 제공한다. 블록들은 평면 내에 있을 수 있고 블록들(BLK_0 내지 BLK_7)을 포함한다. 로우 디코더는 로우 디코더에 블록들을 접속시키는 패스 트랜지스터들(422)에 제어 신호를 제공한다. 전형적으로, 프로그래밍 또는 판독 동작들은 한 번에 하나의 선택된 블록에서 그리고 블록의 하나의 선택된 서브블록에서 수행된다. 소거 동작이 선택된 블록 또는 서브블록에서 수행될 수 있다. 로우 디코더 및 패스 게이트들은 글로벌 제어 라인들(402)을 로컬 제어 라인들(403)에 접속시킬 수 있다. 제어 라인들은 전도성 경로들을 나타낸다. 전압들은 전압원들(420)로부터 패스 트랜지스터들(422)로의 글로벌 제어 라인들 상에 제공된다. 전압원들은 글로벌 제어 라인들에 접속되는 스위치들(421)에 전압들을 제공할 수 있다. 패스 트랜지스터들(424)은 전압원들(420)로부터 스위치들(421)로 전압들을 통과시키도록 제어된다.
전압원들(420)은, 예를 들어, 워드 라인들(WL), SGS 제어 게이트들 및 SGD 제어 게이트들에 전압들을 제공할 수 있다. 전압원들은 프로그래밍 또는 판독 동작 동안 선택된 워드 라인 상에 전압을 제공하는 선택된 워드 라인(WL) 드라이버(447), 선택되지 않은 데이터 워드 라인들에 대한 드라이버(447a), 및 더미 워드 라인들 상에 전압들을 제공하는 더미 워드 라인 드라이버(447b)를 포함할 수 있다.
전압원들은 또한, 각각의 서브블록을 위한 별개의 SGS 드라이버들 및 공통 SGD 드라이버(445)를 포함할 수 있다. 예를 들어, SGD 드라이버들(446, 446a, 446b, 446c)은 SB0, SB1, SB2 및 SB3에 대해 각각 제공될 수 있다. 다른 옵션에서, 별개의 SGS 드라이버들이 각각의 서브블록에 제공된다.
로우 디코더를 포함하는 다양한 컴포넌트들은 상태 머신(112) 또는 제어기(122)와 같은 제어기로부터 커맨드들을 수신하여 본 명세서에 기술된 기능들을 수행할 수 있다.
소스 라인 전압원(430)이 전압(Vsl)을 제어 라인들(432)을 통해 기판 내의 소스 라인들/확산 영역에 제공한다. 하나의 접근법에서, 소스 확산 영역(433)은 블록들에 공통적이다. 한 세트의 비트 라인들(442)이 또한 블록들에 의해 공유된다. 비트 라인 전압원(440)이 전압들을 비트 라인들에 제공한다.
도 5는 도 1의 메모리 구조물(126) 또는 도 2의 메모리 구조물(326)의 예시적인 3D 구성에서의 블록들의 세트를 포함하는 메모리 디바이스(500)의 사시도이다. 기판 상에는, 메모리 셀들(저장 요소들)의 예시적인 블록들(BLK0, BLK1, BLK2, BLK3), 및 블록들에 의한 사용을 위한 회로부를 갖는 주변 영역들이 있다. 주변 영역(504)이 각각의 블록의 에지를 따라서 이어지는 한편, 주변 영역(505)은 블록들의 세트의 단부에 있다. SGS 트랜지스터들의 전압 드라이버에 대한 패스 트랜지스터들은, 하나의 접근법에서, 이러한 주변 영역(505)에 위치될 수 있다. 이러한 경우에, 블록들(BLK0, BLK1, BLK2, BLK3)은 패스 트랜지스터들로부터 점진적으로 더 먼 거리에 있다. 회로부는 블록들의 제어 게이트 층들, 비트 라인들 및 소스 라인들에 접속될 수 있는 전압 드라이버들을 포함할 수 있다. 하나의 접근법에서, 블록들 내의 공통 높이에 있는 제어 게이트 층들이 공통적으로 구동된다. 기판(501)은 또한, 블록들 아래의 회로부 및 회로부의 신호들을 반송하기 위한 전도성 경로들로 패턴화되는 하나 이상의 하부 금속 층들을 지지할 수 있다. 블록들은 메모리 디바이스의 중간 영역(502)에 형성된다. 메모리 디바이스의 상부 영역(503)에는, 하나 이상의 상부 금속 층이 회로부의 신호들을 반송하기 위한 전도성 경로들로 패턴화된다.
하나의 가능한 접근법에서, 블록들은 평면 내에 있고, x-방향에서의 평면의 길이는 워드 라인들로의 신호 경로들이 하나 이상의 상부 금속 층들로 연장되는 방향(워드 라인 또는 SGD 라인 방향)을 표현하고, y-방향에서의 평면의 폭은 비트 라인들로의 신호 경로들이 하나 이상의 상부 금속 층들로 연장되는 방향(비트 라인 방향)을 표현한다. z-방향은 메모리 디바이스의 높이를 표현한다. 블록들은 또한 다수의 평면들로 배열될 수 있다.
도 6a는 도 5의 블록들 중 하나의 블록의 일부의 예시적인 단면도를 도시한다. 블록은 교번하는 전도성 층들과 유전체 층들의 스택(610)을 포함한다. 이러한 예에서, 전도성 층들은 2개의 SGD 층들, 하나의 SGS 층, 2개의 소스측 더미 워드 라인 층들(또는 워드 라인들)(WLS1, WLS0), 2개의 드레인측 더미 워드 라인 층들(WLD1, WLD0), 및 11개의 데이터 워드 라인 층들(또는 데이터 워드 라인들)(WL0 내지 WL10)을 포함한다. WL0은 소스측 데이터 워드 라인이고, WLS1은 소스측 데이터 워드 라인에 인접한 더미 워드 라인 층이다. WLS0은 WLS1에 인접한 다른 더미 워드 라인 층이다. WL10은 드레인측 데이터 워드 라인이고, WLD1은 드레인측 데이터 워드 라인에 인접한 더미 워드 라인 층이다. WLD0은 WLD1에 인접한 다른 더미 워드 라인 층이다. 유전체 층들은 DL1 내지 DL19로 라벨링된다. 또한, NAND 스트링들 NS1 및 NS2를 포함하는 스택의 영역들이 도시되어 있다. 각각의 NAND 스트링은 메모리 홀(618 또는 619)을 포함하고, 이 메모리 홀은 워드 라인들에 인접한 메모리 셀들을 형성하는 재료들로 충전된다. 스택의 영역(622)이 도 6c에 더 상세히 도시되어 있다.
스택은 기판(611)을 포함한다. 하나의 접근법에서, 소스 라인(SL)의 일부분은 블록 내의 메모리 셀들의 각각의 스트링의 소스 단부와 접촉하는 기판 내의 n-형 소스 확산 층(611a)을 포함한다. 소거 동작에서 소거 전압이 이러한 층에 인가될 수 있다. 하나의 가능한 구현예에서, n-형 소스 확산 층(611a)은 p-형 웰 영역(611b) 내에 형성되고, 이는 이어서 n-형 웰 영역(611c) 내에 형성되고, 이는 이어서 p-형 반도체 기판(611d) 내에 형성된다. n-형 소스 확산 층은, 하나의 접근법에서, 평면 내의 블록들 모두에 의해 공유될 수 있다.
NS1은 스택(616)의 하단(616b)에서는 소스 단부(613)를 그리고 스택의 상단(616a)에서는 드레인 단부(615)를 갖는다. 금속 충전 슬릿들(617, 620)은 스택을 가로질러서 상호접속부들로서 주기적으로 제공될 수 있고, 이들은 스택을 관통하여 연장되어, 예컨대 소스 라인을 스택 위의 라인에 접속시킨다. 슬릿들은 워드 라인들의 형성 동안 사용될 수 있고, 후속으로, 금속으로 충전될 수 있다. 비트 라인(BL0)의 일부분이 또한 도시되어 있다. 전도성 비아(621)가 드레인 단부(615)를 BL0에 접속시킨다.
하나의 접근법에서, 메모리 셀들의 블록은 교번하는 제어 게이트 층들 및 유전체 층들의 스택을 포함하고, 메모리 셀들은 스택 내의 수직으로 연장되는 메모리 홀들에 배열된다.
하나의 접근법에서, 각각의 블록은, 수직 상호접속부들이 SGS, WL 및 SGD 층들을 포함하는 각각의 층에 접속되고 전압 드라이버들에 대한 수평 경로들로 상향으로 연장되는 테라스형(terraced) 에지를 포함한다.
도 6b는 도 6a의 메모리 홀들의 그 높이를 따른 폭의 예시적인 변화를 도시한다. 메모리 홀들을 생성하는 데 사용되는 에칭 프로세스 및 매우 높은 종횡비로 인해, 메모리 홀의 단면 폭, 예를 들어 직경은 그의 높이를 따라 변화할 수 있다. 전형적으로, 직경은 메모리 홀의 상부로부터 하부까지 점진적으로 더 작아진다. 일부 경우에, 도시된 바와 같이 홀의 상부에서 약간의 좁아짐이 일어나, 직경이 메모리 홀의 상부로부터 하부로 점진적으로 더 작아지기 전에 약간 더 넓어진다.
도 6c는 도 6a의 스택의 영역(622)의 확대도를 도시한다. 메모리 셀들은 워드 라인 층과 메모리 홀의 교차부에 스택의 상이한 레벨들에서 형성된다. 이러한 예에서, SGD 트랜지스터들(718, 717)이 더미 메모리 셀들(716, 715) 및 데이터 메모리 셀(714) 위에 제공된다. 다수의 층들이, 예컨대 원자층 침착을 이용하여, 메모리 홀(630)의 측벽(SW)을 따라서 그리고/또는 각각의 워드 라인 층 내에 침착될 수 있다. 예를 들어, 재료들에 의해 메모리 홀 내에 형성되는 각각의 필러(699) 또는 컬럼은 차단 산화물 층(663), 질화규소(Si3N4) 또는 다른 질화물과 같은 전하 트래핑 층(664) 또는 필름, 터널링 층(665), 채널(660)(예를 들어, 폴리실리콘을 포함함), 및 유전체 코어(666)를 포함할 수 있다. 워드 라인 층은 금속 배리어(661), 및 제어 게이트로서 텅스텐과 같은 전도성 금속(662)을 포함할 수 있다. 예를 들어, 제어 게이트들(690 내지 694)이 제공된다. 이러한 예에서, 금속을 제외한 층들 모두가 메모리 홀 내에 제공된다. 다른 접근법들에서, 층들 중 일부는 제어 게이트 층 내에 있을 수 있다. 추가 필러들이 상이한 메모리 홀들에 유사하게 형성된다. 필러는 NAND 스트링의 컬럼 활성 영역(AA)을 형성할 수 있다.
각각의 NAND 스트링은 하나 이상의 소스-단 선택 게이트 트랜지스터들로부터 하나 이상의 드레인-단 선택 게이트 트랜지스터들로 연속적으로 연장되는 채널을 포함한다.
도 7은 예시적인 프로그래밍 동작에서 일련의 프로그래밍 루프들에 사용되는 전압 신호를 도시한다. 수평축은 1 내지 22 범위의 프로그래밍 루프(PL) 번호를 나타내고, 수직축은 전압을 나타낸다. 프로그래밍 동작 동안, 각각의 평면 내의 선택된 블록 내의 선택된 워드 라인에 대해 프로그래밍 루프들이 수행된다. 프로그래밍 루프는 선택된 워드 라인에 프로그래밍 전압 또는 펄스가 인가되는 프로그래밍 부분, 및 뒤이어 연관된 메모리 셀들에 대해 하나 이상의 검증 테스트들이 수행되는 동안 검증 신호가 선택된 워드 라인에 인가되는 검증 부분을 포함한다. 소거 상태를 제외하면, 각각의 할당된 상태는 프로그래밍 동작에서의 상태에 대한 검증 테스트에서 사용되는 검증 전압을 갖는다.
전압 신호(700)는 프로그래밍을 위해 선택된 워드 라인에 인가되는, 초기 프로그래밍 전압(701)을 포함하는, 일련의 프로그래밍 전압들을 포함한다. 이 예에서, 전압 신호는 고정 또는 가변 스텝 크기를 사용하여 프로그래밍 패스의 하나 이상의 프로그래밍 루프들에서 진폭을 단계적으로 증가시키는 프로그래밍 전압들을 포함한다. 이것은 증분식 스텝 펄스 프로그래밍(incremental step pulse programming)으로 지칭되며, 여기서 프로그래밍 전압은 초기 레벨 Vpgm_int에서 시작하고(초기 프로그래밍 전압(701) 참조), 예를 들어, 프로그래밍 동작이 완료될 때까지 각각의 연속적인 프로그래밍 루프마다 한 스텝씩 증가한다. 선택된 메모리 셀들의 임계 전압들이 할당된 데이터 상태들의 검증 전압들에 도달할 때 성공적 완료가 발생한다.
프로그래밍 동작은 단일 프로그래밍 패스 또는 다중 프로그래밍 패스들을 포함할 수 있으며, 여기서 각각의 패스는, 예를 들어, 증분식 스텝 펄스 프로그래밍을 사용한다.
예시적인 검증 신호(702)를 포함하는, 각각의 프로그래밍 루프에서의 검증 신호는 프로그래밍 루프에 대해 검증되고 있는 할당된 데이터 상태들에 기초하여, 하나 이상의 검증 전압들을 포함할 수 있다. 검증 테스트들은 프로그래밍 동작들이 진행됨에 따라 하위의 할당된 데이터 상태들, 이어서 중간범위의 할당된 데이터 상태들, 및 이어서 상위의 할당된 데이터 상태들을 포괄할 수 있다. 예시적인 검증 신호들은 3개의 검증 전압들을 단순화하여 도시한다.
모든 메모리 셀들은 초기에, 예를 들어, 프로그래밍 동작의 시작 시 소거 상태에 있을 수 있다. 프로그래밍 동작이 완료된 후, 데이터는 Vth 분포들 사이에 있는 판독 전압들을 사용하여 메모리 셀들로부터 판독될 수 있다. 동시에, 패스 전압으로도 지칭되는 판독 패스 전압 Vpass(예를 들어, 8 내지 10 V)가 나머지 워드 라인들에 인가된다. 주어진 메모리 셀의 Vth가 판독 기준 전압들 중 하나 이상보다 큰지 작은지를 테스트함으로써, 시스템은 메모리 셀에 의해 표현되는 데이터 상태를 결정할 수 있다. 이들 전압은 이들이 상이한 데이터 상태들의 Vth 범위들 사이에서 구분하기 때문에 구분 전압들이다.
더욱이, 프로그래밍되거나 판독되는 데이터는 페이지들로 배열될 수 있다. 예를 들어, 4개의 데이터 상태들, 또는 셀당 2개 비트들로, 데이터의 2개 논리 페이지들이 한 페이지에 함께 저장될 수 있다. Er, A, B 및 C 상태들에 대한 비트들의 예시적인 인코딩은 상부 페이지(UP) 비트/하부 페이지(LP) 비트의 포맷으로, 각각, 11, 10, 00 및 01이다. 하부 페이지 판독은 VrA 및 VrC를 사용할 수 있고, 상부 페이지 판독은 VrB를 사용할 수 있다.
8개의 데이터 상태들, 또는 셀당 3개 비트들에 의해, 3개 페이지들의 데이터가 저장될 수 있다. Er, A, B, C, D, E, F 및 G 상태들에 대한 비트들의 예시적인 인코딩은 각각 111, 110, 100, 000, 010, 011, 001 및 101이다. 셀당 하나 초과의 비트를 저장하는 메모리들은 다중 레벨 셀(Multi-Level Cell, MLC) 메모리로 지칭될 수 있는데, 이는 (8개의 데이터 상태들을 사용하여 셀당 3개 비트들을 저장하는) 3 레벨 셀(Three Level Cell, TLC) 메모리 및 (16개의 데이터 상태들을 사용하여 셀당 4개 비트들을 저장하는) 쿼드 레벨 셀(Quad Level Cell, QLC) 메모리를 포함한다. 2개의 데이터 상태들을 사용하여 셀당 1개 비트를 저장하는 메모리들은 단일 레벨 셀(SLC) 메모리로 지칭될 수 있다.
도 8은 8개 데이터 상태들, 또는 셀당 3개 비트들을 갖는 메모리 셀들의 세트에서의 프로그래밍 동작 이후의 메모리 셀들의 세트들의 예시적인 Vth 분포를 도시한다. 수직축은 메모리 셀들의 수를 대수 스케일(logarithmic scale)로 도시하고, 수평축은 메모리 셀들의 Vth를 선형 스케일로 도시한다. 하나의 접근법에서, 프로그래밍 동작의 시작 시에, 메모리 셀들은 모두 초기에 소거 상태 1000에 있다. 프로그래밍 동작이 성공적으로 완료된 후에, Er 상태에 할당된 메모리 셀들은 정상적으로 발생하는 일정 양의 프로그램 교란으로 인해 업시프트될 수 있다.
VvA, VvB, VvC, VvD, VvE, VvF 및 VvG의 검증 전압들을 사용하여 각각 A, B, C, D, E, F 및 G 상태들로 프로그래밍되는 메모리 셀들은 Vth 분포들(1001, 1002, 1003, 1004, 1005, 1006, 1007)에 의해 각각 나타난다. 판독 전압들(VrA, VrB, VrC, VrD, VrE, VrF, VrG)이 판독 동작에서 메모리 셀들의 상태들을 판독하기 위해 사용될 수 있다. 이러한 검증 전압들 및 판독 전압들은 선택된 워드 라인 전압의 제어 게이트 판독 레벨들의 예들이다.
데이터가 메모리 셀들에 일정 시간 동안 저장된 후에, 데이터는 쓸모없어질 수 있거나, 다른 위치로 복사될 수 있거나, 또는 일부 다른 이유로, 메모리 셀들을 소거하는 것이 바람직할 수 있다. 많은 비휘발성 메모리 설계들에서, 블록 단위로 소거가 수행된다. 블록 내의 메모리 셀들의 서브세트는 블록이 소거의 최소 단위로 간주될 수 있도록 그러한 설계(블록 소거가능 메모리)에서 별도로 소거되지 않을 수 있다.
도 9는 16개의 데이터 상태들, 또는 셀당 4개 비트들을 갖는 메모리 셀들의 세트(QLC 메모리)에서의 프로그래밍 동작 이후의 메모리 셀들의 다른 예시적인 Vth 분포를 도시한다. 수직축은 메모리 셀들의 수를 대수 스케일로 도시하고, 수평축은 메모리 셀들의 Vth를 선형 스케일로 도시한다. 하나의 접근법에서, 프로그래밍 동작의 시작 시에, 메모리 셀들은 모두 초기에 소거된 분포 S0으로 있다. 대응하는 분포들 S1 내지 S15에 대한 판독 전압들 VrS1 내지 VrS15가 도시되어 있다(대응하는 검증 전압들은 명료함을 위해 도 9에 도시되지 않음).
도 8 및 도 9의 예들에서, 프로그래밍은, 소거된 분포(Er 또는 S0) 내의 모든 메모리 셀들에서 시작하여 저장될 데이터에 따라 그들의 타깃 분포들에 있는 것으로 검증되는 모든 또는 실질적으로 모든 메모리 셀들에서 종료되는 단일 연속 동작으로 수행될 수 있다. 다른 예들에서, 도 8 및 도 9에 도시된 상태들에 대한 프로그래밍은 상이한 시간들에서 수행될 수 있는 둘 이상의 별개의 프로그래밍 동작들에서 발생할 수 있다. 그러한 프로그래밍 동작들 사이에 다른 동작들이 수행될 수 있다.
일부 경우들에 있어서, 하나 이상의 메모리 셀들의 프로그래밍은 이전에 프로그래밍된 메모리 셀들의 임계 전압 분포들에 영향을 미칠 수 있다. 예를 들어, NAND 구조물의 워드 라인을 따르는 프로그래밍된 메모리 셀들은 NAND 구조물의 후속 워드 라인들의 프로그래밍(예컨대, 동일한 블록 내의 인접 워드 라인을 따르는 메모리 셀들의 프로그래밍)에 의해 영향을 받을 수 있다. 인근 메모리 셀들에 전하가 추가될 때, 이전에 프로그래밍된 메모리 셀들의 임계 전압들은, 임계 전압 분포들이 "프로그램 교란"으로 지칭될 수 있는 것에서 변화하도록 증가할 수 있다. 이는 데이터의 오판독을 야기할 수 있다. 그러한 프로그램 교란 효과를 감소시키기 위해, 프로그래밍이 마무리되기 전에 인접 메모리 셀들의 프로그래밍을 허용하도록 둘 이상의 동작들에서 프로그래밍이 수행될 수 있다. 예를 들어, 제1 프로그래밍 동작은 포기 프로그래밍 동작으로 지칭될 수 있는 것에서 최종 분포들에 가까운 제1 분포들로 메모리 셀들의 그룹을 프로그래밍할 수 있다. 이어서, 하나 이상의 이웃 워드 라인의 메모리 셀들이 프로그래밍될 수 있다. 후속적으로, 이웃 셀들이 프로그래밍된 후에, 다른 프로그래밍 동작(미세 프로그래밍 동작)이, 메모리 셀들의 그룹을 제2 분포들(예컨대, 도 8 및 도 9에 도시된 것들과 같은 최종 분포들)로 프로그래밍할 수 있다. 이러한 방식으로 제1(근사한 또는 포기) 분포들로 프로그래밍하고, 후속적으로 제2(정확한 또는 미세) 분포들로 프로그래밍하는 것은 포기-미세 프로그래밍으로 지칭될 수 있다.
도 10은 16개의 데이터 상태들에 대응하는 16개의 분포들을 사용한 QLC 메모리 셀들의 그룹의 포기-미세 프로그래밍의 일례를 도시한다. 모든 메모리 셀들은 포기 프로그래밍 이전에 소거된 분포(예를 들어, 분포 S0)로 있을 수 있다. 포기 프로그래밍은 메모리 셀들을 도 10의 상부에 도시된 제1 분포들 S1' 내지 S15'으로 프로그래밍한다. 미세 프로그래밍은 후속적으로, 메모리 셀들을 하부에 도시된 제2 분포들 S1 내지 S15로 프로그래밍한다. 이들 2개의 프로그래밍 동작들 사이에 얼마간의 시간이 있을 수 있고, 메모리 셀들의 하나 이상의 다른 그룹들이 그 시간 동안 프로그래밍될 수 있다. 주어진 제1 분포의 메모리 셀들은 후속적으로, 그 사이에 메모리 셀들을 소거하지 않고서 대응하는 제2 분포로 추가로 프로그래밍되어, 미세 프로그래밍이 소거된 분포로부터 시작되지 않도록 한다는 것이 이해될 것이다. 예를 들어, 포기 프로그래밍 동작에서 S1' 분포로 프로그래밍되는 메모리 셀들은 후속적으로, 미세 프로그래밍 동작에서 S1 분포로 추가로 프로그래밍되고, 포기 프로그래밍 동작에서 S2' 분포로 프로그래밍되는 메모리 셀들은 후속적으로, 미세 프로그래밍 동작에서 S2 분포로 추가로 프로그래밍되고, 포기 프로그래밍 동작에서 S3' 분포로 프로그래밍되는 메모리 셀들은 후속적으로, 미세 프로그래밍 동작에서 S3 분포로 추가로 프로그래밍되고, 등등이다.
제1 분포들 S1' 내지 S15'은 대체적으로, 제2 분포들 S1 내지 S15보다 더 넓고, 인접 분포들 사이에 유의미한 중첩이 있다(예컨대, 분포 S1'은 분포 S2'과 중첩되고, 분포 S2'은 분포 S3'과 중첩되고, 등등임). 제1 분포들로의 프로그래밍은 제2 분포들에 사용되는 바와 동일한 프로그래밍 단계들을 사용할 수 있거나, 또는 상이한 단계들(예컨대, 동일한 전압 및 시간 또는 상이한 전압 및/또는 시간의 프로그래밍 펄스들)을 사용할 수 있다. 도 9에 도시된 바와 같은 판독 전압들을 사용하여 제1 분포들 S1' 내지 S15'에 있는 메모리 셀들을 판독하는 것은, 다른 소스가 미세 프로그래밍에 사용될 수 있도록 하는 그러한 중첩들로 인해 많은 수의 에러들(예컨대, ECC에 의해 정정될 수 있는 더 많은 에러들)을 제공할 수 있다. 데이터의 안전한 사본은, 양호한 사본이 미세 프로그래밍에 이용가능해지도록 포기 프로그래밍 동작과 미세 프로그래밍 동작 사이에서 다른 위치에 유지될 수 있다. 예를 들어, 데이터의 사본은 추가적인 비휘발성 메모리 셀들에(예컨대, QLC 메모리 셀들과 동일한 메모리 구조물 내에 있을 수 있는 SLC 메모리 셀들에, 또는 다른 곳에) 또는 후속적인 미세 프로그래밍을 위한 휘발성 메모리에 기록될 수 있다.
주어진 워드 라인의 포기 프로그래밍과 미세 프로그래밍 사이에, 하나 이상의 다른 워드 라인들(예컨대, 주어진 워드 라인과의 일부 커플링을 가질 수 있는 인근 워드 라인들)이 프로그래밍될 수 있다. 도 11은 3D NAND 구조물의 4개의 스트링들(예컨대, 도 6a에 도시된 NS1 및 NS2와 같은 NAND 스트링들)의 워드 라인들을 프로그래밍하는 데 사용될 수 있는 프로그래밍 스킴의 일례를 도시한다. 좌측 상의 제1 컬럼은 그 워드 라인(WL)을 나타내고, 다음 컬럼(STAGE)은 프로그래밍 단계를 4개의 스트링들 STR0 내지 STR3 각각에 대해 FOGGY 또는 FINE 중 어느 하나로 나타낸다. 각각의 엔트리에서의 숫자들은 상이한 스트링들 및 워드 라인들의 포기 및 미세 프로그래밍의 순서를 나타낸다. 화살표들은 일부 단계들의 순서를 나타내는 데 사용된다.
프로그래밍은 STR0, STR1, STR2 및 STR3의 WL0의 포기 프로그래밍으로 시작하고, 뒤이어 STR0의 WL1의 포기 프로그래밍, 및 이어서 STR0의 WL0의 미세 프로그래밍이 이어진다. 이에 뒤이어, STR1의 WL1을 포기 프로그래밍하고, 이어서, STR1의 WL0을 미세 프로그래밍하고, STR2의 WL1을 포기 프로그래밍하고, STR2의 WL0을 미세 프로그래밍하고, STR3의 WL1을 포기 프로그래밍하고, STR3의 WL0을 미세 프로그래밍하고, 뒤이어 STR0의 WL2를 포기 프로그래밍하고, 등등을 하는 것이 이어진다. 메모리 셀들의 주어진 그룹의 포기 프로그래밍과 미세 프로그래밍 사이에, 다른 메모리 셀들이 프로그래밍되어(예컨대, 포기 프로그래밍되어), 이웃 셀들의 커플링 효과들이 이미 제 자리에 있게 된 이후에 미세 프로그래밍이 발생하고, 따라서 프로그램 교란 효과들이 감소되도록 한다는 것을 알 수 있다. 예를 들어, STR0의 WL1의 포기 프로그래밍이 도 11의 제4 프로그래밍 동작인 반면, STR0의 WL1의 미세 프로그래밍은 그 사이에 9개의 다른 프로그래밍 동작들이 발생하도록 하는 제13 프로그래밍 동작이다. 포기 프로그래밍되고 아직 미세 프로그래밍되지 않은 데이터의 사본은, 미세 프로그래밍이 완료될 때까지 안전한 위치에 저장될 수 있다(예컨대, STR0의 WL1에 대한 데이터의 안전한 사본이 도 11의 제4 동작과 제13 동작 사이에서 유지될 수 있음). 안전한 사본을 유지하는 것은 (예컨대, 휘발성 또는 비휘발성 메모리 내의) 저장 공간의 관점 및 데이터를 전달하기 위한 버스 사용의 관점 둘 모두에서 유의미한 리소스들을 취할 수 있다.
본 기술의 예에서, 패리티 데이터는 MLC 메모리 셀들에 저장될 데이터에 대해 계산될 수 있고, 이러한 패리티 데이터는 포기 프로그래밍된 데이터가 복구될 수 있게 할 수 있다(예컨대, 포기 데이터를 판독한 결과와 패리티 데이터를 조합하여 안전한 사본을 요구하지 않고서 오리지널 데이터를 획득함으로써 복구될 수 있게 함).
도 12는 포기 프로그래밍된 메모리 셀들로부터의 데이터의 복구를 용이하게 하기 위해 패리티 데이터와 함께 사용되는 그레이 코드 메모리 상태 인코딩 스킴의 일례를 도시한다. 도시된 인코딩 스킴은 도 8 내지 도 10 중 임의의 도면에 도시된 분포들에 적용될 수 있다. 분포들 S0 내지 S15(컬럼 1)에는, 임의의 인접 분포들에 할당된 디지털 값들이 단지 하나의 비트만큼 상이하도록 그레이 코드 할당 스킴에 따라 상이한 4-비트 디지털 값(컬럼 2), 또는 메모리 상태가 각각 할당된다. 예를 들어, 분포 S4에 할당된 디지털 값(1100) 및 이웃 분포 S3에 할당된 디지털 값(1101)은 처음 3개 비트들이 동일하고(110), 마지막 비트만이 상이하다. 유사하게, 분포 S4에 할당된 디지털 값(1100) 및 이웃 분포 S5에 할당된 디지털 값(0100)은 마지막 3개 비트들이 동일하고(100), 처음 비트만이 상이하다. 패리티 데이터(컬럼 3)는 각각의 할당된 디지털 값에 대한 1개의 패리티 비트로 이루어지는데, 이는 이러한 경우에, 단순히 디지털 값의 비트들에 대한 XOR 동작에 의해 획득된다. 그레이 코드가 메모리 상태들의 할당을 위해 사용되기 때문에, 패리티 비트들은 도시된 바와 같이 0-1-0-1로 교번한다. 다른 예들에서, 다른 패리티 스킴들(또는 상이한 인코딩 스킴들)이 사용될 수 있다. 디지털 값들이 분포들 S0 내지 S15에 맵핑 - 이는 미세 프로그래밍 이후에 달성될 수 있음 - 되는 것으로 도시되어 있지만, 동일한 디지털 값들이 유사하게 제1 분포들 S0 내지 S15'에 맵핑 - 이는 포기 프로그래밍으로부터 비롯될 수 있음 - 된다는 것이 이해될 것이다. 따라서, 예를 들어, S3 및 S3' 분포들 둘 모두는 디지털 값 1101에 맵핑되고, S12 및 S12' 분포들 둘 모두는 디지털 값 1010에 맵핑되고, 등등이다. 패리티 데이터에 의한 그레이 코드 할당 스킴의 사용은, 포기 프로그래밍된 메모리 셀들(예컨대, 아직 미세 프로그래밍되지 않았고 상태들 S1 내지 S15에 있는 것이 아니라 데이터 상태들 S1' 내지 S15'에 있는 메모리 셀들)로부터의 데이터의 복구를 용이하게 할 수 있다.
도 13a는 (예컨대, 도 12에 도시된 바와 같은 또는 상이한 그레이 코드를 사용하는) 패리티 데이터에 의한 적합한 그레이 코드 할당이 포기 프로그래밍되는 메모리 셀들로부터의 데이터의 정확한 복구를 용이하게 하기 위해 어떻게 사용될 수 있는지의 일례를 도시한다. 도 13a는 (소거된 분포 S0에 더하여) 1-비트 패리티 데이터(1 또는 0 값 중 어느 하나)를 각각의 분포 위에 나타낸, 분포들 S1' 내지 S15'을 도시한다. 이는, 예컨대 도 12에 도시된 바와 같이 패리티 데이터가 생성된 포기 프로그래밍 조건(예컨대, 이웃 메모리 셀들이 프로그래밍되고 있는 동안)에 있는 메모리 셀들에 대응한다. 일련의 판독 단계들이 도 13a에 도시된 바와 같이 판독 레벨들 RL1 내지 RL14에서 수행될 수 있다. 판독 레벨들 RL1 내지 RL14는 이전 예들에서와 같이 분포들 사이에 위치되지 않는다(예컨대, 도 8의 VrA 내지 VrG 또는 도 9의 VrS1 내지 VrS15처럼 위치되지 않음). 대신에, 각각의 판독 레벨 RL1 내지 RL14는 분포의 중간(중간점)에 또는 그 근처에, 또는 양측의 분포들 사이의 대략 중간에 위치된다. 예를 들어, RL3은 분포 S2'과 분포 S4' 사이의 대략 중간이며, 이는 분포 S3'의 중간에 있다. 따라서, RL3은 홀수 패리티 값(패리티 값 = 1)을 갖는 분포(S3')의 중간에 또는 그 근처에서 짝수 패리티 값들(패리티 값 = 0)을 갖는 2개의 분포들(S2' 및 S4') 사이에 있다. 판독 레벨들 RL1 내지 RL14는 분포들 S1 내지 S14의 중간에 또는 그 근처에(즉, 최저 분포 S0 및 최고 분포 S15를 제외한 모든 분포들의 중간에 또는 그 근처에) 위치된다.
(사용된 그레이 코드에 따라 교번하는) 도시된 패리티 값들과 조합하여 14개의 판독 레벨들 RL1 내지 RL14에서 포기 프로그래밍된 데이터 상태들 S1' 내지 S15'을 판독하는 것은 포기 프로그래밍 동작에서 프로그래밍된 데이터를 정확하게 복구하기에 충분할 수 있다. 일부 경우들에 있어서, 이것은 포기 프로그래밍되는 데이터가 포기 프로그래밍된 메모리 셀들로부터 직접 복구될 수 있게 하여, 안전한 사본이 다른 곳에 유지될 필요가 없도록 할 수 있다(예컨대, SLC에서 또는 휘발성 메모리에서 안전한 사본을 필요로 하지 않을 수 있음).
RL1이 사용될 때(예컨대, RL1에서의 전압이 대응하는 워드 라인에 인가될 때) 턴온되는(예컨대, 감지 블록에 의해 검출되는 바와 같이, 전도성이 되거나 또는 트리핑 이벤트를 겪게 되는) 메모리 셀들은 S0 또는 S1' 분포들 중 어느 하나에 있을 수 있다. 주어진 셀이 이러한 분포들 중 어느 것에 있는지는 그 셀과 연관된 패리티 비트로부터 결정될 수 있다(예컨대, RL1에서 턴온되고 패리티 = 0을 갖는 임의의 셀이 분포 S0에 있는 한편, RL1에서 턴온되고 패리티 = 1을 갖는 임의의 셀은 분포 S1'에 있음). 이러한 방식으로, S0 분포 내의 모든 메모리 셀들(및 S1' 분포에서의 일부 메모리 셀들)은 RL1에서의 판독으로부터 발견될 수 있다. RL1에서 턴온되지 않고 RL2에서 턴온되는 메모리 셀들(RL1과 RL2 사이에서 검출된 트리핑 이벤트)은 S1' 또는 S2' 분포들 중 어느 하나에 있을 수 있다. 주어진 셀이 이러한 분포들 중 어느 것에 있는지는 그 셀과 연관된 패리티 비트로부터 결정될 수 있다(예컨대, 먼저 RL2에서 턴온되고 패리티 = 1을 갖는 임의의 셀이 분포 S1'에 있는 한편, 먼저 RL2에서 턴온되고 패리티 = 0을 갖는 임의의 셀은 분포 S2'에 있음). 이러한 방식으로, S1' 분포 내의 나머지 메모리 셀들(및 S2' 분포에서의 일부 메모리 셀들)은 RL2에서의 판독으로부터 발견될 수 있다. RL1 또는 RL2에서 턴온되지 않고 RL3에서 턴온되는 메모리 셀들은 S2' 또는 S3' 분포들 중 어느 하나에 있을 수 있다. 주어진 셀이 이러한 분포들 중 어느 것에 있는지는 그 셀과 연관된 패리티 비트로부터 결정될 수 있다(예컨대, 먼저 RL3에서 턴온되고 패리티 = 0을 갖는 임의의 셀이 분포 S2'에 있는 한편, 먼저 RL3에서 턴온되고 패리티 = 1을 갖는 임의의 셀은 분포 S3'에 있음). 이러한 방식으로, S2' 분포 내의 나머지 메모리 셀들(및 S3' 분포에서의 일부 메모리 셀들)은 RL3에서의 판독으로부터 발견될 수 있다. 이러한 접근법은 S0 및 S1' 내지 S13' 내의 모든 셀들 및 S14'에서의 일부 셀들을 식별하기 위해 RL14를 통해 확장될 수 있다. RL14가 적용될 때 턴온되지 않는(트리핑 이벤트를 경험하지 않는) 메모리 셀들은 분포 S14' 또는 S15' 중 어느 하나에 있고, 이들은 각자의 패리티 비트들에 의해 구별될 수 있다(RL14에서 턴온되지 않고 패리티 = 0을 갖는 메모리 셀들은 분포 S14'에 있는 반면, RL14에서 턴온되지 않고 패리티 = 1을 갖는 메모리 셀들은 분포 S15'에 있음).
도 13b 내지 도 13d는 도 13a에 도시된 바와 같이 포기 프로그래밍되었던 QLC 셀들(예컨대, 도 6a 내지 도 6c에 도시된 바와 같은 NAND 구조물 또는 다른 메모리 구조물 내의 메모리 셀들)을 판독하는 구현예들을 도시한다. 도 13b는 인접 분포들이 단지 1 비트만큼 상이함을 보장하기 위해 그레이 코드를 사용하여 디지털 값들을 16개의 분포들 S0 내지 S15에 할당하는 할당 스킴을 도시한다. 분포들 S0 내지 S15는 제1 컬럼에 열거되는데, 이때 제2 컬럼에는 디지털 값들(또는 메모리 상태들)이 열거되고 제3 컬럼에는 각각의 디지털 값에 대응하는 패리티 값들이 열거된다. 패리티 값들은 대응하는 디지털 값의 4개 비트들을 XOR함으로써 획득될 수 있다. 도 13b에 도시된 스킴은 도 12에 도시된 스킴에 대한 대안일 수 있다(상이한 패리티 스킴들을 포함하는 다른 인코딩 스킴들이 또한 사용될 수 있음). 도 13b에 도시된 패리티 값들을 사용하여 데이터를 인코딩하는 것은 포기 프로그래밍된 데이터의 후속적 복구를 허용할 수 있다.
도 13c는 도 13a에 도시된 바와 같은 판독 레벨들 RL1 내지 RL14에서의 메모리 셀들을 판독하는 것이 패리티 비트들과 조합되어, 포기 프로그래밍되었던 데이터를 어떻게 복구할 수 있는지를 도시한다. 판독 레벨들은 제1 컬럼에 열거되고, 이때 제2 컬럼에는 초기 값들(4-비트 디지털 값들)이 열거된다. 제2 컬럼 내의 초기 값을 갖는 각각의 셀에 대해, 복구된 값(디코딩된 값)은 셀에 대한 패리티 비트에 의존한다. 패리티 비트들이 제3 컬럼에 열거되고, 대응하는 복구된 값들이 제4 컬럼에 열거된다. 복구된 값들을 획득하기 위해 패리티 값들을 사용하여 포기 판독 데이터(예컨대, 초기 값들)를 디코딩하는 것은 포기-프로그래밍된 데이터의 안전한 사본을 유지하는 것이 일부 경우들에 있어서 불필요한 것이 되게 할 수 있다.
RL1에서 턴온되는 메모리 셀들에는 초기 값 1111(도 13b의 표에서 분포 S0에 대응함)이 할당될 수 있다. 대응하는 패리티 비트 = 0인 경우, 복구된 값은 또한 1111이고(예컨대, 메모리 셀이 분포 S0에 있음), 패리티 비트 = 1인 경우, 복구된 값은 1110이다(예컨대, 메모리 셀이 분포 S1'에 있고 제4 비트가 플립핑됨). RL1에서 턴온되지 않고 RL2에서 턴온되는 메모리 셀들에는 초기 값 1110(도 13b의 표에서 분포 S1 또는 S1'에 대응함)이 할당될 수 있다. 대응하는 패리티 비트 = 1인 경우, 복구된 값은 또한 1110이고(예컨대, 메모리 셀이 분포 S1'에 있고, 초기 값이 복구된 값으로서 사용됨), 패리티 비트 = 0인 경우, 복구된 값은 1010이다(예컨대, 메모리 셀이 분포 S2'에 있고 제2 비트가 플립핑됨). RL1 또는 RL2에서 턴온되지 않고 RL3에서 턴온되는 메모리 셀들에는 초기 값 1010(도 3b의 표에서 분포 S2 또는 S2'에 대응함)이 할당될 수 있다. 대응하는 패리티 비트 = 0인 경우, 복구된 값은 또한 1010이고(예컨대, 메모리 셀이 분포 S2'에 있고, 초기 값이 복구된 값으로서 사용됨), 패리티 비트 = 1인 경우, 복구된 값은 1000이다(예컨대, 메모리 셀이 분포 S3'에 있고 제3 비트가 플립핑됨). 이러한 접근법은 도 13c에 도시된 바와 같이 RL14일 때까지 계속되며, 여기서 RL14에서 먼저 턴온되는 메모리 셀들에는 0111의 초기 값(도 13b의 표에서 분포 S13 또는 S13'에 대응함)이 할당되고, 대응하는 패리티 값들에 따라, 0111(패리티 = 1인 경우) 또는 0011(패리티 = 0인 경우) 중 어느 하나의 복구된 값들이 할당된다. RL14에서 턴온되지 않는 나머지 메모리 셀들(도 13c에서 "나머지"로 표시됨)에는 0011의 초기 값(분포 S14 또는 S14'에 대응함)이 할당되고, 대응하는 패리티 값들에 따라, 분포 S14에 대응하는 0011(패리티 = 0인 경우) 또는 분포 S15에 대응하는 1011(패리티 = 1인 경우) 중 어느 하나의 복구된 값들이 할당된다.
패리티 데이터로 포기 판독하여 값들을 복구하는 것이 다양한 방식들로 구현될 수 있다. 도 13d는 대응하는 논리 동작에 의해 나타내질 때 비트를 플립핑하기 위해 논리 동작들을 초기 값(비트들 T, C, B, A) 및 패리티 비트(S)에 적용하는 일례를 도시한다. 예를 들어, 제1 라인에서, 초기 값 1111은 패리티 비트 0 또는 1로 발생할 수 있다. 패리티 비트가 1인 경우(T&C&B&A&S), 비트 A는 0(A = 0)으로 플립핑되고, 그렇지 않은 경우, 초기 값 1111이 복구된 값으로서 사용된다. 제2 라인에서, 초기 값 1110은 패리티 비트 0 또는 1로 발생할 수 있다. 패리티 비트가 0인 경우(T&C&B&!A&!S, 여기서, "!"는 역을 나타내고, 따라서 !A는 A의 역이며, 즉 A=0인 경우, !A = 1이며, A = 1인 경우, !A = 0임), 비트 C는 0(C = 0)으로 플립핑되며, 그렇지 않은 경우, 초기 값 1110이 복구된 값으로서 사용된다. 제3 라인에서, 초기 값 1010은 패리티 비트 0 또는 1로 발생할 수 있다. 패리티 비트가 1인 경우(T&!C&B&!A&S), 비트 B는 0(B = 0)으로 플립핑되고, 그렇지 않은 경우, 초기 값 1010이 복구된 값으로서 사용된다. QLC 메모리에 대해 예시된 16개의 값들에 대해, 15개 논리 동작들은 복구된 값들을 획득하기에 충분할 수 있다는 것을 알 수 있다. 그레이 코드가 사용되기 때문에, 임의의 주어진 초기 값에 대해, 패리티 비트에 따라 플립핑할 비트가 단 하나만이 있다. 플립핑될 비트들은 예시를 위해 셰이딩된다.
간단한 논리 동작들, 예컨대, AND 동작들이 메모리 다이 상에서 구현될 수 있다. 일부 경우들에 있어서, 그러한 논리 동작들은 데이터가 데이터 래치들(194 내지 197)(예컨대, 패리티 데이터에 대한 추가적인 래치들을 가짐)과 같은 데이터 래치들 내에 유지되는 동안 적용될 수 있다. 비트들은 데이터가 래치들 내에 유지되는 동안(예컨대, 미세 기록 동작에서 복구된 값들을 기록하는 데 사용되기 전에) 그 스킴에 따라 플립핑될 수 있다. 도 13a에 예시된 바와 같은 포기 프로그래밍된 데이터를 판독하는 것은 초기 값들이 데이터 래치들(194 내지 197) 내에 래칭되는 결과를 가져올 수 있다. 이러한 데이터가 (예컨대, 도 13d에 도시된 논리 동작들을 사용하여) 패리티 값들과 조합될 때, 복구된 값들은 데이터가 데이터 래치들(194 내지 194) 내에서 유지되는 동안 비트들을 플립핑함으로써 획득될 수 있다. 이어서, 이러한 복구된 데이터는 미세 기록 동작에서 데이터 래치들(194 내지 197)로부터 동일한 메모리 셀들로 다시 기록되어, 다른 회로들로의(예컨대, 메모리 다이 외측으로의) 초기 값들 및 복구된 값들의 전달이 불필요하게 될 수 있다.
도 13e는 (예컨대, 상기의 도 13a 내지 도 13d의 예에서와 같이) 패리티 데이터를 사용함으로써 포기 프로그래밍되는 메모리 셀들로부터의 데이터를 복구하기 위한 동작을 도시한다. 본 방법은, 중간 분포 판독 레벨들(예컨대, 도 13a에 도시된 바와 같이, RL1 내지 RL14)에서 판독을 수행하는 단계(1302), 판독 결과들에 따라 초기 값들(예컨대, 도 13c에 도시된 바와 같이, RL1 내지 RL14에 대응하는 초기 값들)을 할당하는 단계(1304), 판독 데이터에 대응하는 패리티 데이터(패리티 데이터는 포기 프로그래밍 이전에 생성될 수 있고, 후속적 사용을 위해 저장될 수 있음)를 획득하는 단계(1306), 및 (예컨대, 도 13c 및 도 13d에 도시된 바와 같이, 패리티 비트에 의해 나타내질 때 초기 값의 비트를 플립핑함으로써) 패리티 데이터를 판독 결과들과 조합하여 복구된 데이터를 획득하는 단계(1308)를 포함한다.
도 13a 내지 도 13d에 도시된 바와 같은 포기 프로그래밍된 메모리 셀들로부터의 데이터의 복구(디코딩)는 포기 판독 동작의 결과들과 조합하여 패리티 데이터를 사용한다. 패리티 데이터는, 데이터가 기록될 때, 또는 그것이 기록되기 전에 계산될 수 있고, 적절한 위치에 저장될 수 있다. 예를 들어, 패리티 데이터는 그것이 메모리 다이로 전송되기 전에 메모리 제어기에서 계산될 수 있으며, 포기 프로그래밍된 데이터를 복구하는 것이 필요할 때까지 휘발성 메모리(예컨대, DRAM)에 저장될 수 있다.
도 14는 (예컨대, 도 1a에 도시된 바와 같은) 메모리 디바이스(101)가 비휘발성 메모리 다이(1414)(예컨대, 비휘발성 메모리(104)의 개별 비휘발성 메모리 다이) 내의 QLC 저장소(1412) 내에 포기 프로그래밍되는 메모리 셀들로부터의 데이터의 인코딩 및 디코딩을 구현하도록 변경되는 일례를 도시한다. 제어기(102)는 SRAM(1416)을 포함하는 FEP 회로(141) 및 BEP 회로(142)를 포함한다. FEP 회로(141)는 버스(1418)(예컨대, PCIe 인터페이스)를 통해 BEP 회로(142)에 접속된다. BEP 회로(142)는 ECC 회로(1420)(예컨대, ECC 엔진(226/256)(이는 LDPC(Low Density Parity Check) 인코딩 및 디코딩을 구현할 수 있음), 이 경우에 XOR 회로(1413)(예컨대, XOR 회로(1413)는 XOR 엔진(224/254)에 의해 구현될 수 있음)인 패리티 회로, 및 디코더 회로(1422)(예컨대, 프로세서(220/250)를 사용하여 구현됨)를 포함한다. 제어기(102)는 버스(1424)(예컨대, 메모리 버스(294))를 통해 비휘발성 메모리 다이(1414)에 접속된다.
데이터는 입력(1428)에서 호스트로부터 수신되고, SRAM(1416)으로부터 버스(1418)를 통해 ECC 회로(1420)로 전달되는데, ECC 회로는 데이터를 인코딩하고 그것을 QLC 저장소(1412)에서의 포기 프로그래밍을 위해 버스(1424)를 통해 전달하며(1430), 또한 그것을, 로컬 메모리(이 예에서는 DRAM(106))에 저장되는 XOR 비트들을 계산하는 XOR 회로(1413)로 전송한다. 후속적으로, 데이터가 포기 프로그래밍된 상태로 유지되는 동안 다른 기록들이 발생할 수 있고, 프로그래밍 시퀀스(예컨대, 도 11에 도시된 시퀀스)에서의 약간 나중의 지점에서, 데이터가 미세 프로그래밍될 수 있다. 미세 프로그래밍 시에, (예컨대, 도 13a 내지 도 13d에 도시된 바와 같은) 포기 판독이 수행될 수 있고, 결과들이 디코더(1422)로 전달될 수 있다(1434)(예컨대, 도 13c에 도시된 초기 값들은 비휘발성 메모리 다이(1414)의 판독/기록 회로들로부터 디코더(1422)로 전송될 수 있음). 디코더(1422)는 또한, DRAM(106)으로부터 XOR 비트들을 수신하고, 포기 판독 결과들을 XOR 비트들과 조합하여 (예컨대, 도 13c에 도시된 바와 같이) 복구된 데이터를 획득한다. 이어서, 이러한 결과들이 전달되고(1434), 미세 프로그래밍 동작에서 동일한 메모리 셀들에 기록된다(예컨대, 포기 프로그래밍되었던 동일한 메모리 셀들이 추가로 프로그래밍됨).
이러한 예는 컴포넌트들 사이에서의(예컨대, 버스(1424)를 통해 제어기(102)와 메모리 다이(1414) 사이에서의, 그리고 버스(1418)를 통해 FEP 회로(141)와 BEP 회로(142) 사이에서의) 유의미한 데이터의 전송을 포함한다는 것을 알 수 있다. 예를 들어, QLC 저장소에서는, 데이터의 4개 논리 페이지들이 함께 저장될 수 있고, 그러한 4개 페이지들을 XOR한 결과들은 패리티 데이터의 페이지이다. 도 14에 도시된 스킴에서, 그러한 데이터를 프로그래밍하는 것은 데이터의 4개 논리 페이지들의 전달(1430), 포기 판독으로부터 획득된 4개 페이지들의 (버스(1424)를 통한) 제어기(102)로의 후속적 전달(1432), 및 미세 프로그래밍을 위해 복구된 데이터의 4개 페이지들의, 메모리 다이(1414)로의 재전달(1434)을 포함한다. 이는, 특히 (예컨대, 도 1d에 도시된 바와 같이) 버스가 다수의 메모리 다이들 사이에서 공유되는 경우에 버스(1424) 상에 유의미한 트래픽을 초래할 수 있다. 또한, XOR 데이터(예컨대, 포기 프로그래밍되는 데이터의 매 4개 논리 페이지들마다 XOR 데이터의 1개 논리 페이지)에 의해 로컬 메모리(106)에서 유의미한 공간이 점유될 수 있다. DRAM(106) 내의 XOR 데이터에 액세스하는 것은 버스(1418) 상에서 유의미한 트래픽을 생성할 수 있다.
도 15a는 포기-미세 프로그래밍을 위한 온-칩 인코딩 및 디코딩을 수행하도록 구성된 메모리 디바이스(1530)의 일례를 도시한다. 메모리 다이(1532)는 패리티 데이터 생성 회로들, 이 예에서는 XOR 회로들(1540)을 포함하며, 이들은 메모리 다이(1532) 내의 패리티 데이터(XOR 데이터)를 생성하도록 구성된다. XOR 회로들(1540)은 QLC 저장소(1412)의 비휘발성 메모리 셀들에 저장될 데이터에 대한 패리티 데이터를 계산하기 위한 수단으로서 간주될 수 있다. 예를 들어, 데이터가 메모리 디바이스(1530)로 전달될 때(1536), 데이터는 (임의의 ECC 데이터와 함께) 제어기(102)로부터 버스(1424)를 통해 QLC 저장소(1412)로 그리고 또한 메모리 다이(1532)의 XOR 회로(1540)로 전달될 수 있다(1538). 데이터는 QLC 저장소(1412) 내에 포기 프로그래밍될 수 있고, 또한, 패리티 데이터(이 예에서는, XOR 데이터)를 생성하는 데 사용될 수 있다. 패리티 데이터는, 미세 프로그래밍이 개시될 때까지 데이터가 포기 프로그래밍되는 동안 저장될 수 있다. 메모리 다이(1532)는 또한 온-칩 디코더(1542)를 포함하고, 이는 QLC 저장소(1412)로부터 포기 판독 데이터를 수신하도록(전달(1544)), 그리고 XOR 회로(1540)에 의해 이전에 생성된 XOR 데이터를 사용하여 포기 판독 데이터를 디코딩하도록 구성된다. 이러한 방식으로 복구되는 디코딩된 데이터는 미세 프로그래밍 동작에서 QLC 저장소(1412)로 전달된다(1546). 이러한 방식으로 온-칩으로 패리티 데이터를 생성하고 온-칩 디코딩을 수행하는 것은 포기-미세 프로그래밍이 데이터의 안전한 사본 없이(예컨대, 안전한 사본 대신에 포기 프로그래밍된 데이터 및 패리티 데이터의 조합을 사용하여) 그리고 버스(1424) 상의 비교적 적은 트래픽으로 수행될 수 있게 할 수 있다. 예를 들어, 데이터의 4개 논리 페이지들이 기록될 때, 4개 논리 페이지들이 메모리 다이(1532)로 전달된다(1538). 후속적으로, 포기 판독 데이터의 4개 논리 페이지들이 온-칩 디코더(1542)로 전달되는데, 이는 버스(1424) 상에 트래픽을 생성하지 않으며, 복구된 데이터는, 또한 버스(1424) 상에 트래픽을 생성하지 않고서 QLC 저장소(1412)로 다시 전달된다(1546). 일부 경우들에 있어서, XOR 데이터는 메모리 다이(1532) 내의 SLC 저장소에 저장되어, 패리티 데이터가 버스(1424) 상에 트래픽을 생성하지 않고서 저장 및 복구될 수 있게 할 수 있다(다른 예들에서, XOR 회로(1540)로부터의 XOR 데이터는, 예컨대 메모리 제어기(102)에 또는 메모리 제어기(102)에 접속된 휘발성 메모리에, 오프-칩으로 저장될 수 있음).
도 15b는 온-칩 XOR 회로들(1540)의 예시적인 구현예를 도시하며, 이는 QLC 저장소(1412)의 물리적 페이지에서 프로그래밍될 데이터의 4개 논리 페이지들(각각 "T", "C", "B", 및 "A"로 라벨링된 논리 페이지들)에 대응하는 데이터 래치들(1550 내지 1553)의 4개 세트들을 포함한다. 예를 들어, 래치들의 각각의 세트는 ECC 데이터(예컨대, 메모리 제어기(102)의 ECC 회로들에 의해 계산됨) 및 호스트로부터의 데이터와 함께 저장될 수 있는 임의의 다른 오버헤드 데이터와 함께 호스트로부터의 데이터의 하나의 논리 페이지에 대한 용량을 가질 수 있다. XOR 회로들(1540)은 XOR 논리 회로(1554)를 포함하는데, 이는 QLC 저장소(1412)의 메모리 셀에 대응하는 비트들의 각각의 세트에 대해 XOR 논리 동작을 수행하도록 그리고 XOR 데이터(패리티 데이터)의 대응하는 비트를 생성하도록 구성된다. XOR 논리 회로(1554)는 복수의 비휘발성 메모리 셀들에 저장될 데이터에 대한 패리티 데이터를 계산하기 위한 수단의 일례로서 고려될 수 있다. 패리티 데이터는 데이터 래치들(1556)의 세트에 저장된다. 비트들(1558)의 예시적인 세트가 QLC 저장소(1412)의 메모리 셀에 프로그래밍될 것이다. XOR 논리 회로(1554)는 비트들(1558)의 세트의 비트들 1101에 대응하는 해당 패리티 비트(이 경우에, "1")를 계산한다. 예를 들어, 모듈로 2 추가 또는 다른 기법이 XOR 비트들을 생성하는 데 사용될 수 있다(예컨대, 홀수 개의 "1" 비트들이 있는 경우, XOR 결과는 "1"임). 패리티 비트들이 (XOR이 아닌) 다른 방식들로 생성되는 경우, 상이한 로직이 패리티 비트들을 생성하도록 적용될 수 있다. 데이터 래치들(1550 내지 1553)은 도 3a의 데이터 래치들(194 내지 197)에 의해 구현될 수 있으며, 포기 프로그래밍 이전에 또는 그 동안에 데이터가 래치들 내에 있을 때 인코딩(이 예에서는, XOR 비트들의 계산)이 수행될 수 있다. 감지 블록(51)의 추가적인 회로들과 조합하여 데이터 래치들(1550 내지 1553)(예컨대, 데이터 래치들(194 내지 197))은 복수의 비휘발성 메모리 셀들을 제1 분포들로 프로그래밍하기 위한 수단의 일례로서 고려될 수 있다.
도 15c는 온-칩 디코더(1542)의 일례를 도시하며, 이는 QLC 저장소(1412)의 페이지의 포기 판독으로부터 획득된 데이터의 4개 논리 페이지들에 대응하는 데이터 래치들(1560 내지 1563)의 4개 세트들을 포함한다. 예를 들어, 래치들의 각각의 세트는 ECC 데이터 및 호스트로부터 수신된 데이터와 함께 저장될 수 있는 임의의 다른 오버헤드 데이터와 함께 데이터의 하나의 논리 페이지에 대한 용량을 가질 수 있다. 일부 예들에서, 동일한 물리적 데이터 래치들은 XOR 데이터 래치들(1550 내지 1553)로서 그리고 디코드 데이터 래치들(1560 내지 1563)(예컨대, 데이터 래치들(194 내지 197))에 사용될 수 있다. (예컨대, 도 13a에 도시된 바와 같이) 포기 판독이 수행될 때, 초기 데이터 상태들이 데이터 래치들(1560 내지 1563)에 로딩될 수 있다(예컨대, 도 13c에 열거된 초기 값들). 감지 블록(51)의 추가적인 회로들과 조합하여 데이터 래치들(1560 내지 1563)(예컨대, 데이터 래치들(194 내지 197))은 복수의 비휘발성 메모리 셀들을 제1 분포들에서 판독하기 위한 수단의 일례로서 고려될 수 있다. 온-칩 디코더(1542)는 디코드 논리 회로(1564)를 포함하며, 이는 그러한 포기 판독으로부터 획득된 초기 값들을 데이터 래치들(1566)의 세트 내의 패리티 데이터(예컨대, 포기 프로그래밍 이전에 XOR 회로들(1540)에 의해 생성된 XOR 데이터)와 조합한다. 디코드 논리 회로(1564)는 도 13c 및 도 13d에 도시된 바와 같은 포기 판독 데이터 및 패리티 데이터를 조합하여, 메모리 셀과 연관된 패리티 값에 따라, 메모리 셀로부터의 초기 값이 복구된 값으로서 사용될 수 있거나 또는 하나의 비트가 플립핑될 수 있게 할 수 있다. 예를 들어, 디코드 논리 회로(1564)는 도 13d에 도시된 논리 동작들을 수행하도록 AND 논리 및 NOR 논리 회로들을 포함할 수 있다. 제1 예(1568)에서, 메모리 셀의 포기 판독은 초기 값 1101을 제공하고(예컨대, 메모리 셀이 RL12 에서 전도성으로 됨), 메모리 셀에 대한 대응하는 XOR 비트는 1이다. 디코드 논리 회로(1564)는 (도 13c 및 도 13d의 대응하는 엔트리들에 도시된 바와 같이) 이러한 경우에 1101의 복구된 값을 생성한다. 제2 예(1570)에서, 다른 메모리 셀의 포기 판독은 초기 값 1101을 제공하고, 메모리 셀에 대한 대응하는 XOR 비트는 0이다. 디코드 논리 회로(1564)는 (도 13c 및 도 13d의 대응하는 엔트리들에 도시된 바와 같이) 이러한 경우에 0101의 복구된 값을 생성한다. 디코드 논리 회로(1564)는 도 13d에 도시된 논리 동작에 따라 비트 T(셰이딩됨)를 0으로 간단히 플립핑하여(T&C&!B&A&!S인 경우, T = 0을 설정함), 초기 값이 래치들(1560 내지 1563) 내에 있는 동안 복구된 값으로 대체되도록 할 수 있다. 디코드 논리 회로(1564)는 XOR 비트들과 조합하여 QLC 저장소(1412)의 메모리 셀들의 포기 판독에 의해 획득된 대응하는 초기 값들로부터 도 13c 및 도 13d의 복구된 값들을 생성하도록 구성된다. 이어서, 이들 복구된 값들은 메모리 셀들의 미세 프로그래밍을 수행하는 데 사용될 수 있다(예를 들어, 포기 프로그래밍되었던 동일한 메모리 셀들은 복구된 값들에 기초하여 도 10에 도시된 바와 같이 추가로 프로그래밍됨). 데이터는 데이터 래치들(1560 내지 1563)(예컨대, 데이터 래치들(194 내지 197))로부터 미세 프로그래밍될 수 있다. 온-칩 디코드(1542)는, 패리티 데이터와 조합된 제1 분포들에서의 복수의 비휘발성 메모리 셀들을 판독한 결과들로부터 데이터를 복구하고 복수의 비휘발성 메모리 셀들을 제1 분포들로부터 제2 분포들로 추가로 프로그래밍하여 데이터를 저장하기 위한 수단의 일례로서 고려될 수 있다.
도 16은 프로그래밍에 사용되는 일련의 단계들의 일례를 도시한다. 단계 1에서, 데이터의 4개 논리 페이지들이 메모리 다이(예컨대, 메모리 다이(1532))로 전달되고, 데이터 래치들(예컨대, 래치들 T, C, B, A)의 대응하는 세트들에 로딩된다. 단계 2에서, 4개 논리 페이지들은 프로그래밍될 각각의 메모리 셀에 대한 XOR 비트(또는 플래그 "A")를 생성하기 위해 XOR 동작을 적용받는다. 도 16의 예에서, 이것은 25us가 소요된다. 단계 3에서, XOR 비트들(전송된 데이터의 4개 논리 페이지들로부터 생성된 XOR 데이터의 하나의 논리 페이지)은 SLC 메모리에 기록된다(예컨대, SLC로서 지정되는 메모리 다이(1532) 상의 NAND 메모리의 일부분 내에 기록됨). 도 16의 예에서, 이것은 130us가 소요된다. 따라서, SLC에서의 XOR 데이터의 (XOR하는 것에 의한) 온-칩 인코딩 및 저장이 신속하게 수행될 수 있다. SLC 부분들 및 QLC 부분들이 별개의 구조물들일 수 있거나, 또는 둘 모두가 공통 구조물로 형성될 수 있다는 것이 이해될 것이다(예컨대, 구조물의 일부 블록들은 QLC 블록들로서 지정될 수 있고 다른 것들은 SLC 블록들로서 지정될 수 있으며, 이들 지정들은 시간 경과에 따라 변할 수 있음).
상기의 예들 중 임의의 것에 기술된 바와 같은 포기-미세 프로그래밍을 위한 온-칩 인코딩 및 디코딩은 도 17 내지 도 19의 예들을 포함하지만 이들로 제한되지 않는 다양한 방식들로 구현될 수 있다. 도 17은 SLC 메모리 셀들이 미세 프로그래밍에서 나중의 사용을 위해 패리티 데이터(예컨대, XOR 데이터)를 저장하는 데 사용되는 일례를 도시한다. (예컨대, 호스트로부터의) 데이터 전달(1770)이 메모리 제어기(102)에 의해 수신되고, 데이터는 ECC 회로(1772)에 의해 ECC 인코딩된다. 이어서, 인코딩된 데이터는 버스(1424)를 통해 그것이 포기 프로그래밍되는 QLC 저장소(1412)로 전달되며(1774), 또한 SLC 캐시(1776)에 이어서 저장되는 XOR 비트들을 생성하는 XOR 회로들(1540)로 전달된다. SLC 캐시(1776)는 SLC 데이터 저장을 위해 구성되는 구조물(1778)(예컨대, 3-D NAND 메모리 구조물)의 일부분이다. 구조물(1778)은 또한 QLC 저장소(1412)를 포함하고, 이들 부분들은 재구성가능할 수 있다. 포기 프로그래밍 후에, 데이터가 QLC 저장소(1412)에 있고 대응하는 XOR 데이터가 SLC 캐시(1776) 내에 있는 동안, 다른 데이터가 프로그래밍될 수 있다(예컨대, 도 11에 도시된 바와 같음). 후속적으로, 미세 프로그래밍이 스케줄링될 수 있고, 포기 판독이 수행되어 QLC 저장소(1412)로부터 디코더(1524)로 초기 값들을 판독할 수 있고(전달(1780)), XOR 데이터는 SLC 캐시(1776)로부터 판독될 수 있다(전달(1782)). 이어서, 디코더(1542)는 포기 판독 데이터 및 XOR 데이터의 조합으로부터 복구된 값들을 생성한다(예컨대, 도 13c에 도시된 바와 같은 디코딩). 이어서, 이러한 복구된 값들은, 이전에 포기 프로그래밍되었던 메모리 셀들의 미세 프로그래밍을 수행하는 데 사용된다(전달(1784)). 따라서, 이러한 예에서, 버스(1424)를 가로지른 데이터의 유일한 전달은 초기 데이터(예컨대, 임의의 오버헤드 및 사용자 데이터의 4개 논리 페이지들)가 메모리 다이(1532)로 전달될 때이다. XOR 데이터, 포기 판독 데이터, 및 복구된 데이터의 후속적인 전달들은 메모리 다이(1532) 내에서 내부적으로 발생한다.
도 18은 SLC 메모리 셀들이 미세 프로그래밍에서 나중의 사용을 위해 패리티 데이터(XOR 데이터)를 저장하는 데 사용되는 다른 예를 도시한다. (예컨대, 호스트로부터의) 데이터 전달(1770)이 메모리 제어기(102)에 의해 수신되고, 데이터는 ECC 회로(1772)에 의해 ECC 인코딩된다. 이어서, 인코딩된 데이터는 버스(1424)를 통해 그것이 포기 프로그래밍되는 QLC 저장소(1412)로 전달되며(1774), 또한 SLC 캐시(1776)에 이어서 저장되는 XOR 비트들을 생성하는 XOR 회로들(1540)로 전달된다. 후속적으로, 미세 프로그래밍이 스케줄링될 수 있고, 포기 판독이 수행되어 QLC 저장소(1412)로부터 디코더(1524)로 초기 값들을 판독할 수 있다(전달(1780)). 이 예에서, XOR 데이터는 SLC 캐시(1776)로부터 디코더(1542)로 직접 전달되지 않는다. SLC 캐시(1776)로부터의 XOR 데이터는 버스(1424)를 통해 메모리 제어기(102)의 ECC 회로(1772)로 전달되며(전달(1880)), 여기서 에러 정정이 수행된다. 정정된 XOR 데이터(디코딩된 패리티 데이터)는 버스(1424)를 통해 디코더(1542)로 전달된다(전달(1882)). ECC 회로(1772)는, 패리티 데이터를 ECC 디코딩하고 디코딩된 패리티 데이터를 디코더(1542)로 전송하기 위한 수단의 일례로 고려될 수 있다. 이어서, 디코더(1542)는 포기 판독 데이터 및 정정된 XOR 데이터의 조합(예컨대, 도 13c에 도시된 바와 같음)으로부터 복구된 값들을 생성한다. 이어서, 이러한 복구된 값들은, 이전에 포기 프로그래밍되었던 메모리 셀들의 미세 프로그래밍을 수행하는 데 사용된다(전달(1784)). 따라서, 이러한 예에서, 버스(1424)를 가로지른 초기 전달(1774)(예컨대, 4개 논리 페이지들)에 더하여, 또한, 버스(1424) 상에서 메모리 다이(1532)로부터 메모리 제어기(102)로의 XOR 데이터(예컨대, 데이터의 4개 논리 페이지들에 대한 1개 논리 페이지)의 전달 및 다시 메모리 제어기(102)로부터 메모리 다이(1532)로의 정정된 XOR 데이터의 전달이 있다. XOR 데이터에서의 에러들이 복구된 데이터에서의 에러들 및 이에 따른 미세 프로그래밍된 데이터에서의 에러들을 초래할 수 있기 때문에, ECC를 사용한 그러한 에러들의 감소 또는 제거는 버스(1424) 상의 추가적인 트래픽을 정당화할 수 있다.
패리티 데이터가 SLC 캐시(1776)에 저장하기 전에 ECC 회로(1772)에 의해 개별적으로 인코딩될 수 있지만, 일부 경우들에 있어서, 예를 들어, 패리티 데이터가 인코딩된 데이터의 XOR 곱인 경우에 어떠한 개별 인코딩도 요구되지 않는다(예컨대, 코드워드들의 XOR 곱은 별개의 인코딩이 요구되지 않도록 코드워드를 제공할 수 있음). 패리티 데이터의 ECC 정정은 모든 데이터에 적용될 수 있거나 또는 선택적으로 사용될 수 있다. 예를 들어, ECC 정정은 선택된 블록들(높은 에러들을 갖는 블록들), 주어진 블록의 선택된 부분들(예컨대, 3-D 블록의 하위 레벨들)에 대해, 또는 트리거링 이벤트에 응답하여(예컨대, 소정 수의 기록-소거 사이클들, 임계치 초과 온도, 또는 다른 그러한 이벤트 이후에) 사용될 수 있다. 따라서, 메모리 디바이스(1530)는 도 17의 스킴 및 도 18의 스킴 둘 모두를 상이한 시간들에 그리고/또는 QLC 저장소(1412)의 상이한 부분들에서의 데이터에 대해 사용할 수 있다.
도 19는 로컬 메모리, DRAM(106)이 미세 프로그래밍에서 나중의 사용을 위해 패리티 데이터(XOR 데이터)를 저장하는 데 사용되는 일례를 도시한다. (예컨대, 호스트로부터의) 데이터 전달(1770)이 메모리 제어기(102)에 의해 수신되고, 데이터는 ECC 회로(1772)에 의해 ECC 인코딩된다. 이어서, 인코딩된 데이터는 버스(1424)를 통해 그것이 포기 프로그래밍되는 QLC 저장소(1412)로 전달되며(1774), 또한 DRAM(106)에 이어서 전달되는 XOR 비트들을 생성하는 XOR 회로들(1540)로 전달된다(전달(1990)). 후속적으로, 미세 프로그래밍이 스케줄링될 수 있고, 포기 판독이 수행되어 QLC 저장소(1412)로부터 디코더(1524)로 초기 값들을 판독할 수 있다(전달(1780)). XOR 데이터는 DRAM(106)으로부터 디코더(1542)로 전달된다(전달(1992)). 이어서, 디코더(1542)는 포기 판독 데이터 및 XOR 데이터의 조합(예컨대, 도 13c에 도시된 바와 같음)으로부터 복구된 값들을 생성한다. 이어서, 이러한 복구된 값들은, 이전에 포기 프로그래밍되었던 메모리 셀들의 미세 프로그래밍을 수행하는 데 사용된다(전달(1784)). 따라서, 이러한 예에서, 버스(1424)를 가로지른 초기 전달(1774)(예컨대, 4개 논리 페이지들)에 더하여, 또한, 버스(1424) 상에서 메모리 다이(1532)로부터 DRAM(106)으로의 XOR 데이터(예컨대, 데이터의 4개 논리 페이지들에 대한 하나의 논리 페이지)의 전달 및 다시 DRAM(106)으로부터 메모리 다이(1532)로의 XOR 데이터의 전달이 있다.
기술된 일부 예들에서, 포기-미세 프로그래밍을 위한 인코딩 및 디코딩이 (예컨대, 데이터가 프로그래밍되는 메모리 구조물과 동일한 다이 상에 형성된 인코딩 및 디코딩 회로들에 의해) 온-칩으로 수행되지만, 다른 예들에서, 인코딩 및 디코딩 회로들은 집적 메모리 조립체 내의 메모리 다이에 접합되는 제어 다이 내에 위치될 수 있다. 예를 들어, 도 15a 및 도 17 내지 도 19의 XOR 회로들 및 디코더 회로들은 그러한 제어 다이에 위치될 수 있다.
도 20은 본 기술의 태양들을 구현하는 방법의 일례를 예시하는 흐름도이다. 본 방법은, 메모리 다이에 의해, MLC 메모리의 페이지로 저장될 데이터의 복수의 논리 페이지들을 수신하는 단계(2002), 메모리 다이의 회로들에 의해, 복수의 논리 페이지들에 대한 패리티 데이터를 계산하는 단계(예컨대, 저장될 사용자 데이터의 4개 논리 페이지들에 대한 XOR 비트들의 페이지를 계산함)(2004), 및 포기 프로그래밍 동작에서 MLC 메모리의 페이지에서의 데이터의 복수의 논리 페이지들을 프로그래밍하여 MLC 메모리의 페이지의 메모리 셀들이 제1 분포들로 프로그래밍되도록 하는 단계(2006)를 포함한다. 본 방법은, (예컨대, 도 13a에 도시된 바와 같이) 포기 판독 동작에서 메모리 셀들이 제1 분포들에 있는 동안 MLC 메모리의 페이지를 판독하는 단계(2008); 메모리 다이의 회로들에 의해, 포기 판독 동작의 결과들 및 패리티 데이터로부터 데이터의 복수의 논리 페이지들을 계산하는 단계(예컨대, 도 13c의 복구된 값들을 계산함)(2010); 및 (예컨대, 도 10에 도시된 바와 같이) 미세 프로그래밍 동작에서 제1 분포들로부터 제2 분포들로 MLC 메모리의 페이지를 추가로 프로그래밍하는 단계(2012) - 제2 분포들은 패리티 데이터로부터 계산된 복수의 논리 페이지들을 표현함 - 를 포함한다. 본 방법은, 단일 레벨 셀(SLC) 셀들로서 구성되는 추가적인 메모리 셀들 내의 메모리 다이에 패리티 데이터를 저장하는 단계를 포함할 수 있고, SLC 셀들로부터 패리티 데이터를 판독하는 단계 및 패리티 데이터로부터 복수의 논리 페이지들을 계산하기 전에 패리티 데이터의 에러 정정 코드(ECC) 디코딩을 수행하는 단계를 추가로 포함할 수 있거나, 또는 휘발성 메모리에 저장될 패리티 데이터를 메모리 다이로부터 전송하는 단계, 및 후속적으로, 계산하는 단계를 위해 휘발성 메모리로부터 패리티 데이터를 수신하는 단계(도 20에 도시되지 않음)를 포함할 수 있다.
비휘발성 저장 장치의 일례는, 메모리 다이 상에 형성되는 복수의 비휘발성 메모리 셀들 - 각각의 비휘발성 메모리 셀은 데이터의 복수의 비트들을 유지하도록 구성됨 -; 및 메모리 다이 상에 형성되는 제어 회로를 포함하고, 제어 회로는 복수의 비휘발성 메모리 셀들에 저장될 데이터에 대한 패리티 데이터를 계산하도록, 복수의 비휘발성 메모리 셀들을 제1 분포들로 프로그래밍하도록, 복수의 비휘발성 메모리 셀들을 제1 분포들에서 판독하도록, 패리티 데이터와 조합된 제1 분포들에서의 비휘발성 메모리 셀들을 판독한 결과들로부터 데이터를 복구하도록, 그리고 복수의 비휘발성 메모리 셀들을 제1 분포들로부터 제2 분포들로 추가로 프로그래밍하여 데이터를 저장하도록 구성된다.
제어 회로는 메모리 다이 상에 형성된 추가적인 비휘발성 메모리 셀들에서 패리티 데이터를 프로그래밍하도록 추가로 구성될 수 있고, 각각의 추가적인 비휘발성 메모리 셀은 데이터의 하나의 비트를 유지하도록 구성된다. 제어 회로는 추가적인 비휘발성 메모리 셀들로부터 패리티 데이터를 판독하도록, 그리고 에러 정정 코드(ECC) 디코딩을 위해 패리티 데이터를 전송하도록 추가로 구성될 수 있다. 제어 회로는, 메모리 다이에 접속된 제어 다이 상의 휘발성 메모리에서의 저장을 위해 패리티 데이터를 전송하도록, 그리고 휘발성 메모리로부터 패리티 데이터를 수신하도록 추가로 구성될 수 있다. 복수의 비휘발성 메모리 셀들은 메모리 다이의 NAND 구조물의 제1 워드 라인을 따라 위치될 수 있고, 제어 회로는 복수의 비휘발성 메모리 셀들을 제1 분포들로 프로그래밍하는 것과 복수의 비휘발성 메모리 셀들을 제1 분포들로부터 제2 분포들로 추가로 프로그래밍하는 것 사이에서 NAND 구조물의 적어도 제2 워드 라인을 프로그래밍하도록 추가로 구성될 수 있다. 제1 분포들은 4개 데이터 비트들을 표현하는 16개 분포들로 이루어질 수 있고, 제어 회로는 최저 및 최고 제1 분포들 이외의 제1 분포들의 중간에 또는 그 근처에 위치되는 14개 판독 전압들을 사용하여 제1 분포들에서 복수의 비휘발성 메모리 셀들을 판독하도록 추가로 구성될 수 있다. 제어 회로는 그레이 코드에 따라 복수의 비휘발성 메모리 셀들을 프로그래밍하여, 이웃 분포들에 유일한 하나의 비트만큼 상이한 디지털 값들이 할당되게 하도록 구성될 수 있다. 제어 회로는, 포기 프로그래밍 동작에서 복수의 비휘발성 메모리 셀들을 제1 분포들로 프로그래밍하여 제1 분포들이 유의미한 중첩을 갖도록 그리고 미세 프로그래밍에서 복수의 비휘발성 메모리 셀들을 제1 분포들로부터 제2 분포들로 프로그래밍하여 제2 분포들이 제1 분포들보다 더 좁고 제1 분포들보다 더 적은 중첩을 갖도록 구성될 수 있다. 제어 회로는, 복수의 비휘발성 메모리 셀들에 저장될 데이터의 4개 논리 페이지들에 대한 패리티 데이터의 하나의 논리 페이지를 계산하도록, 메모리 다이 상에 형성된 추가적인 비휘발성 메모리 셀들에서 패리티 데이터의 논리 페이지를 기록하거나 또는 메모리 다이 외측에 저장을 위해 패리티 데이터의 논리 페이지를 전송하도록, 그리고 후속적으로, 추가적인 비휘발성 메모리 셀들로부터 패리티 데이터의 논리 페이지를 판독하거나 데이터의 복구를 위해 메모리 다이 외측으로부터 패리티 데이터의 논리 페이지를 수신하도록 구성될 수 있다.
방법의 일례는, 메모리 다이에 의해, 다중 레벨 셀(MLC) 메모리의 페이지에 저장될 데이터의 복수의 논리 페이지들을 수신하는 단계; 메모리 다이의 회로들에 의해, 복수의 논리 페이지들에 대한 패리티 데이터를 계산하는 단계; 포기 프로그래밍 동작에서 MLC 메모리의 페이지에서의 데이터의 복수의 논리 페이지들을 프로그래밍하여 MLC 메모리의 페이지의 메모리 셀들이 제1 분포들로 프로그래밍되게 하는 단계; 메모리 셀들이 포기 판독 동작에서 제1 분포들에 있는 동안 MLC 메모리의 페이지를 판독하는 단계; 메모리 다이의 회로들에 의해, 포기 판독 동작의 결과들 및 패리티 데이터로부터 데이터의 복수의 논리 페이지들을 계산하는 단계; 및 미세 프로그래밍 동작에서 제1 분포들로부터 제2 분포들로 MLC 메모리의 페이지를 추가로 프로그래밍하는 단계를 포함하고, 제2 분포들은 패리티 데이터로부터 계산된 복수의 논리 페이지들을 표현한다.
복수의 논리 페이지들에 대한 패리티 데이터를 계산하는 단계는 MLC 메모리의 페이지의 각각의 메모리 셀에 대한 하나의 패리티 비트를 계산하는 단계를 포함할 수 있다. 패리티 데이터를 계산하는 단계는 복수의 논리 페이지들에 대해 XOR 동작을 수행하는 단계를 포함할 수 있다. 본 방법은, 단일 레벨 셀(SLC) 셀들로서 구성되는 추가적인 메모리 셀들 내의 메모리 다이에 패리티 데이터를 저장하는 단계를 포함할 수 있다. 본 방법은, SLC 셀들로부터 패리티 데이터를 판독하는 단계 및 패리티 데이터로부터 복수의 논리 페이지들을 계산하기 전에 패리티 데이터의 에러 정정 코드(ECC) 디코딩을 수행하는 단계를 추가로 포함할 수 있다. 본 방법은, 휘발성 메모리에 저장될 패리티 데이터를 메모리 다이로부터 전송하는 단계, 및 후속적으로, 계산하는 단계를 위해 휘발성 메모리로부터 패리티 데이터를 수신하는 단계를 추가로 포함할 수 있다. 본 방법은, 포기 프로그래밍 동작에 후속하여 그리고 포기 판독 동작 이전에, MLC 메모리의 적어도 하나의 다른 페이지를 프로그래밍하는 단계를 추가로 포함할 수 있다. MLC 메모리의 페이지는 NAND 메모리 구조물의 제1 워드 라인을 따르는 것일 수 있고, MLC 메모리의 적어도 하나의 다른 페이지는 NAND 메모리 구조물의 적어도 제2 워드 라인을 따르는 것일 수 있다. 메모리 셀들이 제1 분포들에 있는 동안 MLC 메모리의 페이지를 판독하는 단계는 제1 분포들의 중간점들에서 또는 그 근처에서 판독 레벨들을 사용하는 단계를 포함할 수 있다.
비휘발성 저장 장치의 일례는 복수의 비휘발성 메모리 셀들을 포함하는 메모리 다이를 포함하고, 메모리 다이는, 복수의 비휘발성 메모리 셀들에 저장될 데이터에 대한 패리티 데이터를 계산하기 위한 수단; 복수의 비휘발성 메모리 셀들을 제1 분포들로 프로그래밍하기 위한 수단; 복수의 비휘발성 메모리 셀들을 제1 분포들에서 판독하기 위한 수단; 및 패리티 데이터와 조합된 제1 분포들에서의 복수의 비휘발성 메모리 셀들을 판독한 결과들로부터 데이터를 복구하고, 복수의 비휘발성 메모리 셀들을 제1 분포들로부터 제2 분포들로 추가로 프로그래밍하여 데이터를 저장하기 위한 수단을 추가로 포함한다.
비휘발성 저장 장치는 메모리 다이에 접속된 메모리 제어기 다이를 포함할 수 있고, 메모리 제어기 다이는, 패리티 데이터를 에러 정정 코드(ECC) 디코딩하고, 디코딩된 패리티 데이터를, 데이터를 복구하기 위한 수단으로 전송하기 위한 수단을 포함한다.
본 발명의 전술한 상세한 설명은 예시 및 설명의 목적으로 제시되었다. 그것은 본 발명을 개시된 정확한 형태로 제한하거나 망라하도록 의도되지 않는다. 상기의 교시내용의 관점에서 많은 수정 및 변형이 가능하다. 기술된 실시예들은 본 발명의 원리 및 그의 실제 응용을 가장 잘 설명하기 위해 선택되었고, 이에 의해, 당업자가 다양한 실시예들에서 그리고 고려된 특정 용도에 적합하게 된 바와 같은 다양한 수정예들로 본 발명을 가장 잘 활용할 수 있게 하였다. 본 발명의 범주는 명세서에 첨부된 청구범위에 의해 정의되는 것으로 의도된다.

Claims (20)

  1. 비휘발성 저장 장치로서,
    메모리 다이 상에 형성되는 복수의 비휘발성 메모리 셀들 - 각각의 비휘발성 메모리 셀은 데이터의 복수의 비트들을 유지하도록 구성됨 -; 및
    상기 메모리 다이 상에 위치되는 제어 회로를 포함하고, 상기 제어 회로는 상기 복수의 비휘발성 메모리 셀들에 저장될 데이터에 대한 패리티 데이터를 계산하도록, 상기 복수의 비휘발성 메모리 셀들을 제1 분포들로 프로그래밍하도록, 상기 복수의 비휘발성 메모리 셀들을 상기 제1 분포들에서 판독하여 복수의 논리 페이지들의 초기 사본을 획득하도록, 상기 메모리 다이 상의 복수의 래치들에 상기 초기 사본을 래치(latch)하도록, 개별 비휘발성 메모리 셀을 판독하여 획득된 비트들 사이의 복수의 AND 동작들을 포함하는 복수의 논리 동작들에서, 상기 패리티 데이터와 상기 초기 사본을 조합하여, 복수의 논리 출력들을 생성하도록, 선택된 비트들이 상기 복수의 래치들의 각각의 래치 내에서 유지되는 동안 상기 초기 사본의 선택된 비트들을 플립핑(flipping)하여 상기 복수의 논리 출력들에 따라 상기 초기 사본을 정정함으로써, 상기 복수의 논리 페이지들의 복구된 사본을 생성하도록, 그리고 상기 복수의 비휘발성 메모리 셀들을 상기 제1 분포들로부터 제2 분포들로 추가로 프로그래밍함으로써, 상기 복수의 래치들로부터 상기 복구된 사본을 프로그래밍하여 상기 복구된 사본을 저장하도록 구성되는, 비휘발성 저장 장치.
  2. 제1항에 있어서, 상기 제어 회로는 상기 메모리 다이 상에 형성된 추가적인 비휘발성 메모리 셀들에서 상기 패리티 데이터를 프로그래밍하도록 추가로 구성되고, 각각의 추가적인 비휘발성 메모리 셀은 데이터의 하나의 비트를 유지하도록 구성되는, 비휘발성 저장 장치.
  3. 제2항에 있어서, 상기 제어 회로는 상기 추가적인 비휘발성 메모리 셀들로부터 상기 패리티 데이터를 판독하도록, 그리고 에러 정정 코드(Error Correction Code, ECC) 디코딩을 위해 상기 패리티 데이터를 전송하도록 추가로 구성되는, 비휘발성 저장 장치.
  4. 제1항에 있어서, 상기 제어 회로는, 상기 메모리 다이에 접속된 제어 다이 상의 휘발성 메모리에서의 저장을 위해 상기 패리티 데이터를 전송하도록, 그리고 휘발성 메모리로부터 상기 패리티 데이터를 수신하도록 추가로 구성되는, 비휘발성 저장 장치.
  5. 제1항에 있어서, 상기 복수의 비휘발성 메모리 셀들은 상기 메모리 다이의 NAND 구조물의 제1 워드 라인을 따라 위치되고, 상기 제어 회로는 상기 복수의 비휘발성 메모리 셀들을 상기 제1 분포들로 프로그래밍하는 것과 상기 복수의 비휘발성 메모리 셀들을 상기 제1 분포들로부터 상기 제2 분포들로 추가로 프로그래밍하는 것 사이에서 상기 NAND 구조물의 적어도 제2 워드 라인을 프로그래밍하도록 추가로 구성되는, 비휘발성 저장 장치.
  6. 제1항에 있어서, 상기 제1 분포들은 4개 데이터 비트들을 표현하는 16개 제1 분포들로 이루어지고, 상기 제어 회로는 14개 판독 전압들을 사용하여 상기 제1 분포들에서 상기 복수의 비휘발성 메모리 셀들을 판독하도록 추가로 구성되고, 각 판독 전압은 최저 제1 분포 및 최고 제1 분포 이외의 각각의 제1 분포의 중간에 위치되는, 비휘발성 저장 장치.
  7. 제1항에 있어서, 상기 제어 회로는 그레이 코드에 따라 상기 복수의 비휘발성 메모리 셀들을 프로그래밍하여, 이웃 분포들에 유일한 하나의 비트만큼 상이한 디지털 값들이 할당되게 하도록 구성되는, 비휘발성 저장 장치.
  8. 제1항에 있어서, 상기 제어 회로는, 포기 프로그래밍 동작에서 상기 복수의 비휘발성 메모리 셀들을 상기 제1 분포들로 프로그래밍하여 제1 분포들이 중첩하도록 그리고 미세 프로그래밍에서 상기 복수의 비휘발성 메모리 셀들을 상기 제1 분포들로부터 상기 제2 분포들로 프로그래밍하여 상기 제2 분포들이 상기 제1 분포들보다 더 좁고 상기 제1 분포들보다 더 적은 중첩을 갖도록 구성되는, 비휘발성 저장 장치.
  9. 제1항에 있어서, 상기 제어 회로는, 상기 복수의 비휘발성 메모리 셀들에 저장될 데이터의 4개 논리 페이지들에 대한 패리티 데이터의 하나의 논리 페이지를 계산하도록, 상기 메모리 다이 상에 형성된 추가적인 비휘발성 메모리 셀들에서 상기 패리티 데이터의 논리 페이지를 기록하거나 또는 상기 메모리 다이 외측에 저장을 위해 상기 패리티 데이터의 논리 페이지를 전송하도록, 그리고 후속적으로, 상기 추가적인 비휘발성 메모리 셀들로부터 상기 패리티 데이터의 논리 페이지를 판독하거나 상기 데이터의 복구를 위해 상기 메모리 다이 외측으로부터 상기 패리티 데이터의 논리 페이지를 수신하도록 구성되는, 비휘발성 저장 장치.
  10. 방법으로서,
    메모리 다이에 의해, 다중 레벨 셀(Multi-Level Cell, MLC) 메모리의 페이지에 저장될 데이터의 복수의 논리 페이지들을 수신하는 단계;
    상기 메모리 다이의 회로들에 의해, 상기 복수의 논리 페이지들에 대한 패리티 데이터를 계산하는 단계;
    포기 프로그래밍 동작에서 상기 MLC 메모리의 페이지에서의 상기 데이터의 복수의 논리 페이지들을 프로그래밍하여 상기 MLC 메모리의 페이지의 메모리 셀들이 제1 분포들로 프로그래밍되게 하는 단계;
    상기 메모리 셀들이 포기 판독 동작에서 상기 제1 분포들에 있는 동안 상기 MLC 메모리의 페이지를 판독하여, 상기 메모리 다이의 데이터 래치들 내의 데이터의 복수의 논리 페이지들의 초기 사본을 획득하는 단계;
    상기 메모리 다이의 논리 회로들에 의해, 상기 복수의 논리 페이지들의 상기 초기 사본 및 상기 패리티 데이터에 대해 복수의 AND 동작들을 수행하는 단계 - 각 AND 동작은, 상기 MLC 메모리 내의 개별 메모리 셀을 판독하여 획득된 비트들 및 대응하는 패리티 데이터 비트에 적용됨 - ;
    상기 복수의 AND 동작들의 결과들에 따라, 각 선택된 비트들이 각각의 데이터 래치 내에서 유지되는 동안, 데이터의 상기 복수의 논리 페이지들의 상기 초기 사본의 선택된 비트들을 플립핑(flipping)하여, 상기 데이터 래치들 내의 상기 복수의 논리 페이지들을 획득하는 단계; 및
    미세 프로그래밍 동작에서 상기 제1 분포들로부터 제2 분포들로 상기 MLC 메모리의 페이지를 추가로 프로그래밍하는 단계를 포함하고, 상기 제2 분포들은 상기 복수의 AND 동작들의 결과들에 따라 획득된 상기 복수의 논리 페이지들을 표현하는, 방법.
  11. 제10항에 있어서, 상기 복수의 논리 페이지들에 대한 상기 패리티 데이터를 계산하는 단계는 상기 MLC 메모리의 페이지의 각각의 메모리 셀에 대한 하나의 패리티 비트를 계산하는 단계를 포함하는, 방법.
  12. 제10항에 있어서, 상기 복수의 AND 동작들을 수행하는 단계는, 개별 메모리 셀을 판독하여 획득된 4개의 비트들 및 대응하는 패리티 데이터 비트에 AND 동작을 수행하는 단계를 포함하는, 방법.
  13. 제10항에 있어서, 단일 레벨 셀(Single Level Cell, SLC)들로서 구성되는 추가적인 메모리 셀들 내의 상기 메모리 다이에 상기 패리티 데이터를 저장하는 단계를 추가로 포함하는, 방법.
  14. 제13항에 있어서, 상기 SLC 셀들로부터 상기 패리티 데이터를 판독하는 단계 및 상기 패리티 데이터로부터 상기 복수의 논리 페이지들을 계산하기 전에 상기 패리티 데이터의 에러 정정 코드(ECC) 디코딩을 수행하는 단계를 추가로 포함하는, 방법.
  15. 제10항에 있어서, 휘발성 메모리에 저장될 상기 패리티 데이터를 상기 메모리 다이로부터 전송하는 단계, 및 후속적으로, 상기 데이터의 복수의 논리 페이지들의 상기 계산하는 단계를 위해 상기 휘발성 메모리로부터 상기 패리티 데이터를 수신하는 단계를 추가로 포함하는, 방법.
  16. 제10항에 있어서, 상기 포기 프로그래밍 동작에 후속하여 그리고 상기 포기 판독 동작 이전에, 상기 MLC 메모리의 적어도 하나의 다른 페이지를 프로그래밍하는 단계를 추가로 포함하는, 방법.
  17. 제10항에 있어서, 상기 복수의 논리 페이지들은 4개의 논리 페이지로 구성되며, 다중 레벨 셀(Multi-Level Cell, MLC) 메모리의 상기 페이지의 각 메모리 셀은 16개의 데이터 상태들을 사용하여 4개의 비트들을 저장하도록 구성되고, 상기 복수의 AND 동작들은 15개의 AND 동작들로 구성되는, 방법.
  18. 제10항에 있어서, 상기 메모리 셀들이 상기 제1 분포들에 있는 동안 상기 MLC 메모리의 페이지를 판독하는 단계는 상기 제1 분포들의 중간점들에서 판독 레벨들을 사용하는 단계를 포함하는, 방법.
  19. 비휘발성 저장 장치로서,
    복수의 비휘발성 메모리 셀들을 포함하는 메모리 다이를 포함하고, 상기 메모리 다이는,
    상기 복수의 비휘발성 메모리 셀들에 저장될 데이터에 대한 패리티 데이터를 계산하기 위한 수단;
    상기 복수의 비휘발성 메모리 셀들을 제1 분포들로 프로그래밍하기 위한 수단;
    상기 메모리 다이 상의 래치들로, 상기 제1 분포들에서 상기 복수의 비휘발성 메모리 셀들을 판독하여, 상기 래치들 내의 상기 데이터의 초기 사본을 획득하기 위한 수단; 및
    상기 패리티 데이터와 조합하여 상기 래치들 내의 상기 초기 사본에 대해 복수의 AND 동작들을 수행하여 상기 데이터를 복구하고 - 각 AND 동작은, MLC 메모리 내의 개별 메모리 셀을 판독하여 획득된 비트들 및 대응하는 패리티 데이터 비트에 적용됨 - , 상기 복수의 AND 동작들의 출력들에 따라, 각 선택된 비트가 각각의 데이터 래치 내에서 유지되는 동안, 상기 데이터의 상기 초기 사본의 선택된 비트들을 플립핑(flipping)하고, 상기 복수의 비휘발성 메모리 셀들을 상기 제1 분포들로부터 제2 분포들로 추가로 프로그래밍하여, 상기 데이터의 상기 초기 사본 또는 상기 복구된 데이터를 상기 메모리 다이로부터 전송하지 않고, 상기 래치들로부터 상기 복구된 데이터를 저장하기 위한 수단을 추가로 포함하는, 비휘발성 저장 장치.
  20. 제19항에 있어서, 상기 메모리 다이에 접속된 메모리 제어기 다이를 추가로 포함하고, 상기 메모리 제어기 다이는, 상기 패리티 데이터를 에러 정정 코드(ECC) 디코딩하고, 디코딩된 패리티 데이터를 상기 데이터를 복구하기 위한 수단으로 전송하기 위한 수단을 포함하는, 비휘발성 저장 장치.
KR1020210081788A 2020-10-02 2021-06-23 포기-미세 프로그래밍을 위한 온-칩 인코딩을 갖는 비휘발성 메모리 KR102569162B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063086732P 2020-10-02 2020-10-02
US63/086,732 2020-10-02
US17/172,362 US11914886B2 (en) 2020-10-02 2021-02-10 Nonvolatile memory with on-chip encoding for foggy-fine programming
US17/172,362 2021-02-10

Publications (2)

Publication Number Publication Date
KR20220044641A KR20220044641A (ko) 2022-04-11
KR102569162B1 true KR102569162B1 (ko) 2023-08-21

Family

ID=80931386

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210081788A KR102569162B1 (ko) 2020-10-02 2021-06-23 포기-미세 프로그래밍을 위한 온-칩 인코딩을 갖는 비휘발성 메모리

Country Status (3)

Country Link
US (1) US11914886B2 (ko)
JP (1) JP7126015B2 (ko)
KR (1) KR102569162B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023190941A1 (ja) 2022-03-31 2023-10-05 学校法人同志社 培養由来成分を含まない角膜内皮細胞製剤及びその製造法
US20240045611A1 (en) * 2022-08-08 2024-02-08 Micron Technology, Inc. Coding for quad-level memory cells having a replacement gate configuration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160004596A1 (en) * 2014-07-07 2016-01-07 Sandisk Technologies Inc. Data storage device with in-memory parity circuitry
US20200194064A1 (en) * 2018-12-14 2020-06-18 Western Digital Technologies, Inc. Multi-state programming for memory devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101636248B1 (ko) * 2009-12-10 2016-07-06 삼성전자주식회사 플래시 메모리 장치, 이를 포함하는 플래시 메모리 시스템 및 이의 프로그램 방법
US8437183B2 (en) 2009-12-16 2013-05-07 Sandisk Il Ltd. Auxiliary parity bits for data written in multi-level cells
US8885410B2 (en) 2012-08-29 2014-11-11 Sandisk Technologies Inc. Direct multi-level cell programming
US8839074B2 (en) * 2012-09-13 2014-09-16 Sandisk Technologies Inc. On chip data recovery for non-volatile storage
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
US10176886B1 (en) * 2017-07-07 2019-01-08 Seagate Technology Llc Multi-level data block error detection code
US10481816B2 (en) * 2017-10-18 2019-11-19 Western Digital Technologies, Inc. Dynamically assigning data latches
US10705966B1 (en) 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
KR20200085519A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11133067B2 (en) 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding
US11309032B2 (en) * 2019-11-26 2022-04-19 Samsung Electronics Co., Ltd. Operating method of memory system including memory controller and nonvolatile memory device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160004596A1 (en) * 2014-07-07 2016-01-07 Sandisk Technologies Inc. Data storage device with in-memory parity circuitry
US20200194064A1 (en) * 2018-12-14 2020-06-18 Western Digital Technologies, Inc. Multi-state programming for memory devices

Also Published As

Publication number Publication date
US11914886B2 (en) 2024-02-27
KR20220044641A (ko) 2022-04-11
US20220107751A1 (en) 2022-04-07
JP2022060148A (ja) 2022-04-14
JP7126015B2 (ja) 2022-08-25

Similar Documents

Publication Publication Date Title
US9570176B2 (en) Nonvolatile memory device, storage device having the same, operating method thereof
US10892025B2 (en) Soft erase and programming of nonvolatile memory
US10223018B2 (en) Bad page and bad block management in memory
CN110770837B (zh) 用于减少热电子注入型读取干扰的存储器设备和方法
US9583207B2 (en) Adaptive data shaping in nonvolatile memory
US11250926B2 (en) Positive feedback and parallel searching enhanced optimal read method for non-volatile memory
US10838726B1 (en) Asynchronous FIFO buffer for redundant columns in memory device
KR102569162B1 (ko) 포기-미세 프로그래밍을 위한 온-칩 인코딩을 갖는 비휘발성 메모리
US11842774B2 (en) Memories for calibrating sensing of memory cell data states
US20220406398A1 (en) Programming memory cells with concurrent storage of multi-level data as single-level data for power loss protection
US10971202B1 (en) Low latency data transfer
CN114765045A (zh) 在电路之间具有存储器阵列的非易失性存储器
US11698750B2 (en) Smart re-use of parity buffer
JP7086449B1 (ja) 符号化されたFoggy-Fineプログラミングを用いた、不揮発性メモリのための読み出し閾値の較正
US11791001B2 (en) Non-volatile memory with updating of read compare voltages based on measured current
US11482292B1 (en) Non-volatile storage with processive writes
CN116072186A (zh) 存储装置及其操作方法
US11532370B1 (en) Non-volatile memory with fast multi-level program verify
TW202312175A (zh) 未選擇子區塊之程式化相依偏壓
US10714169B1 (en) System and method for programming non-volatile memory during burst sequential write
CN114596897A (zh) 两侧相邻存储器单元干扰抑制
US11650756B2 (en) Nonvolatile memory with encoding for foggy-fine programming with soft bits
US11475961B1 (en) Nonvolatile memory with efficient look-ahead read
US20240347122A1 (en) Xor data recovery schemes nonvolatile memory devices
US11687252B2 (en) Non-volatile memory with pre-trained model and inference circuit

Legal Events

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