KR20180087322A - 저장 디바이스의 프로그래밍 전의 소거 검출을 위한 시스템 및 방법 - Google Patents

저장 디바이스의 프로그래밍 전의 소거 검출을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180087322A
KR20180087322A KR1020187017663A KR20187017663A KR20180087322A KR 20180087322 A KR20180087322 A KR 20180087322A KR 1020187017663 A KR1020187017663 A KR 1020187017663A KR 20187017663 A KR20187017663 A KR 20187017663A KR 20180087322 A KR20180087322 A KR 20180087322A
Authority
KR
South Korea
Prior art keywords
memory
program
programming
adjusted
voltage
Prior art date
Application number
KR1020187017663A
Other languages
English (en)
Inventor
니안 나일스 양
크리스 입
그리쉬마 쉬아
Original Assignee
샌디스크 테크놀로지스 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스 엘엘씨 filed Critical 샌디스크 테크놀로지스 엘엘씨
Publication of KR20180087322A publication Critical patent/KR20180087322A/ko

Links

Images

Classifications

    • 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
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • 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/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
    • 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
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written

Landscapes

  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

프로그램 방해를 검출하기 위한 그리고 검출된 프로그램 방해에 기초하여 프로그래밍/판독하기 위한 시스템들 및 방법들이 개시된다. 프로그램 방해는 메모리의 선택된 구역의 프로그램 동작 동안 메모리의 비선택된 구역을 비의도적으로 프로그래밍하는 것을 포함한다. 프로그램 방해의 영향을 줄이기 위해, 메모리의 구역은 프로그램 방해에 대해 미리 결정된 상태(이를테면 소거 상태)에서 분석된다. 프로그램 방해의 징후를 식별하는 것에 응답하여, 메모리의 구역을 프로그래밍하는데 사용되는 전압들(이를테면 메모리의 구역의 셀들에 데이터를 프로그래밍하기 위한 프로그램 검증 레벨들)이 조정될 수 있다. 마찬가지로, 메모리의 구역으로부터 데이터를 판독할 때, 판독 전압들은 프로그래밍을 위해 사용되는 조정된 전압들에 기초하여 조정될 수 있다. 이러한 방식으로, 조정된 프로그래밍 및 판독 전압들을 사용하여, 프로그램 방해의 영향이 감소할 수 있다.

Description

저장 디바이스의 프로그래밍 전의 소거 검출을 위한 시스템 및 방법
관련 출원에 대한 참조
본 출원은 2016년 3월 29일자로 출원된 미국 출원 제15/084,100호를 우선권 주장하며, 이는 본 명세서에 그 전부가 참조로 포함된다.
기술분야
본 출원은 대체로 저장 디바이스들에 관한 것이다. 더 구체적으로, 본 출원은 프로그램 방해(program disturbance)를 적어도 부분적으로 보상하는 저장 디바이스에 관한 것이다.
본 명세서에서 제공되는 배경기술 설명은 본 개시내용의 상황을 일반적으로 제시하는 목적을 위한 것이다. 이 배경기술 섹션에서 설명되는 정도의 현재 명명된 발명자들의 작업, 뿐만 아니라 출원 당시의 종래 기술로서 별도로 간주되지 않을 수 있는 설명의 양태들은 본 개시내용에 대한 종래 기술로서 명시적으로 인정된 것이 아니고 암묵적으로 인정된 것도 아니다.
반도체 메모리는 모바일 컴퓨팅 디바이스들, 모바일 폰들, 고체 상태 드라이브들, 디지털 카메라들, 개인 정보 단말기들, 서버들, 및 비-모바일 컴퓨팅 디바이스들과 같은 다양한 전자 디바이스들에서 널리 사용된다. 반도체 메모리는 비휘발성 메모리 또는 휘발성 메모리를 포함할 수 있다. 심지어 비휘발성 저장 디바이스가 전력 소스(예컨대, 배터리)에 접속되지 않는 경우에도 비휘발성 저장 디바이스는 정보가 저장되거나 유지되는 것을 허용한다. 비휘발성 메모리의 예들은 플래시 메모리(예컨대, NAND 형 및 NOR 형 플래시 메모리), 전기 소거가능 프로그램가능 판독전용 메모리(Electrically Erasable Programmable Read-Only Memory)(EEPROM), 강유전성 메모리(예컨대, FeRAM), 자기저항성 메모리(예컨대, MRAM), 및 상 변화 메모리(예컨대, PRAM)를 포함한다. 근년에, 비휘발성 저장 디바이스들이 비트 당 비용을 줄이기 위하여 스케일링되었다. 그러나, 공정 기하구조들이 축소함에 따라, 많은 설계 및 공정 도전과제들이 제시된다. 이들 도전과제들은 메모리 셀 I-V 특성들에서의 증가된 가변성과 기입 또는 프로그램 방해들에 대한 증가된 민감성(susceptibility)을 포함하여서, 대상 아닌 메모리 셀들(또는 비선택된 메모리 셀들)에 저장된 데이터가 대상 메모리 셀들(또는 프로그래밍을 위해 선택되어 있는 메모리 셀들) 상에서 수행되고 있는 프로그래밍 동작들로 인해 손상될 수 있다.
시스템은 다음의 도면들 및 설명을 참조하여 더 잘 이해될 수 있다. 도면들에서, 유사한 참조 번호들은 상이한 도면들 전체에 걸쳐 대응하는 부분들을 지정한다.
도 1a는 예시적인 비휘발성 메모리 시스템의 블록도이다.
도 1b는 예시적인 저장 모듈을 도시하는 블록도이다.
도 1c는 계층적 저장 시스템을 예시하는 블록도이다.
도 2a는 비휘발성 메모리 시스템의 제어기의 예시적인 컴포넌트들의 하나의 예를 도시하는 블록도이다.
도 2b는 비휘발성 메모리 저장 시스템의 비휘발성 메모리의 예시적인 컴포넌트들을 도시하는 블록도이다.
도 2c는 플래시 메모리 시스템의 제어기의 예시적인 컴포넌트들의 다른 예를 도시하는 블록도이다.
도 3은 3차원 메모리의 그리고 셀(P)에 대한 방해를 나타내는 개략도이다.
도 4a는 셀 당 3 비트 메모리에서 3 스테이지 NAND 플래시 프로그래밍 동작의 각각의 스테이지에 대한 타겟 전압 레벨들을 도시하는 예시적인 비휘발성 메모리 프로그래밍 차트를 도시한다.
도 4b는 블록에서의 상이한 워드라인들에 대한 프로그램 방해 영향들 및 트루 소거 검출을 예시한다.
도 5는 소거 검출에 기초하여 식별된 프로그램 방해에 대한 적응적 프로그램 보상을 예시한다.
도 6은 블록들 및 각각의 블록들 내의 워드라인들 사이에서 상관된 프로그램 방해 보상의 테이블을 예시한다.
도 7은 메모리의 구역(section of memory)에 대한 프로그램 방해의 표시자에 기초하여 메모리의 구역을 프로그래밍하는 하나의 예의 흐름도이다.
도 8은 메모리의 구역에 대한 프로그램 방해의 표시자에 기초하여 메모리의 구역을 판독하는 하나의 예의 흐름도이다.
도 9는 메모리의 구역에 대한 프로그램 방해의 표시자에 기초하여 메모리의 구역을 프로그래밍하는 다른 예의 흐름도이다.
도 10은 메모리의 구역에 대한 프로그램 방해의 표시자에 기초하여 메모리의 구역을 판독하는 다른 예의 흐름도이다.
저장 디바이스가 저장 디바이스 제어기와 메모리를 포함할 수 있다. 메모리는 하나 이상의 메모리 집적 회로 칩들의 형태일 수 있다. 저장 디바이스 제어기는 커맨드들을 메모리 집적 회로 칩(들)에 실행을 위해 전송할 수 있다. 커맨드들의 예들은 메모리 집적 회로 칩(들)에서의 메모리에 데이터를 기입하기 위한 기입 커맨드, 메모리 집적 회로 칩(들)으로부터 데이터를 판독하기 위한 판독 커맨드 및 메모리 집적 회로 칩(들)에서의 메모리를 소거하기 위한 소거 커맨드를 포함한다. 다른 커맨드들이 고려된다.
메모리에(이를테면 각각의 메모리 집적 회로 칩에) 데이터를 프로그래밍(또는 기입)할 때, 메모리의 구역(이를테면 워드라인)은 프로그래밍을 위해 선택된다. 메모리의 구역을 프로그래밍하는 프로세스에서, 프로그램 방해가 비선택된 메모리의 구역에서 일어날 수 있다. 하나의 예로서, 프로그램 방해는 선택된 메모리의 구역의 프로그램 동작 동안 비선택된 메모리의 구역을 비의도적으로 프로그래밍하는 것을 포함한다. 이와 관련하여, 비선택된 메모리의 구역(예컨대, 메모리 셀들의 다른 세트, 다른 워드라인 등)은, 프로그래밍 전압이 선택된 메모리의 구역에서의 셀들을 가로질러 인가되는 동안 전압 스트레스를 경험할 수 있다. 전압 스트레스는 비선택된 메모리의 구역의 하나 이상의 양태들에 영향을 미칠 수 있다. 하나의 예로서, 전압 스트레스는 비선택된 메모리의 구역의 전압 임계값(Vt)이 시프트하는 것을 야기할 수 있다. 많은 프로그래밍 사이클들에 걸쳐, Vt에서의 누적된 시프트는 데이터 손상을 초래할 수 있다.
하나의 실시예에서, 저장 디바이스의 동작은 각각의 메모리의 구역에서의 검출된 프로그램 방해에 기초하여 수정된다. 제1 특정 실시예에서, 데이터의 각각의 메모리의 구역에의 프로그래밍은 검출된 프로그램 방해에 기초하여 조정된다. 제2 특정 실시예에서, 각각의 메모리의 구역으로부터의 데이터의 판독은 검출된 프로그램 방해에 기초하여 조정된다. 아래에서 더 상세히 논의되는 바와 같이, 제1 특정 실시예는 제2 특정 실시예와는 별개로 실용화될 수 있다. 대안적으로, 제1 특정 실시예는 제2 특정 실시예와 조합하여 실용화될 수 있다.
데이터를 각각의 메모리의 구역에 기입(프로그래밍)하는 것에 관하여, 제어기는 각각의 메모리의 구역에서 프로그램 방해의 표시를 결정하고, 그 표시에 기초하여, 각각의 메모리의 구역에서의 데이터의 프로그래밍을 조정 또는 수정할 수 있다. 대안적으로, 제어기가 아니라 저장 디바이스의 다른 구역이 그 표시를 결정하고 프로그래밍을 조정 또는 수정할 수 있다. 예를 들어, 메모리 집적 회로 칩들 상에 존재하는 회로부가 이 기능을 수행할 수 있다. 위에서 논의된 바와 같이, 다양한 실시예들에서, 각각의 메모리의 구역은 메모리의 프로그래밍 단위(이를테면 워드라인)를 포함할 수 있으며, 메모리의 서브 프로그래밍 단위(이를테면 워드라인 내의 셀들의 구역)를 포함할 수 있으며, 그리고/또는 메모리의 프로그래밍 단위보다 더 큰 단위를 포함할 수 있다.
하나의 실시예에서, 제어기는 각각의 메모리의 구역의 하나 이상의 위상들 또는 상태들에서 각각의 메모리의 구역을 분석하는 제어기에 기초하여 (또는 적어도 부분적으로 의존하여) 프로그램 방해의 표시를 결정하고, 그 분석에 기초하여, 프로그램 방해의 표시를 결정할 수 있다. 아래에서 더 상세히 논의되는 바와 같이, 제어기는 각각의 메모리의 구역(또는 메모리의 서브구역)을 트루 소거 상태에서(예컨대, 그 메모리의 구역이 소거 동작을 겪은 후) 분석할 수 있다. 그 분석에 기초하여, 제어기는 프로그램 방해의 표시를 결정할 수 있다. 대안적으로, 제어기는 각각의 메모리의 구역(또는 메모리의 서브구역)을 다른 상태에서(이를테면 프로그래밍 후) 분석할 수 있다.
제어기는 메모리의 구역의 일부 또는 모두의 프로그램 방해 분석을 여러 방식들 중 하나의 방식으로 수행하도록 트리거될 수 있다. 하나의 방식에서, 제어기는 메모리의 나이를 결정하고, 그 나이에 기초하여, 프로그램 방해 분석을 수행하도록 트리거될 수 있다. 하나의 예로서, 제어기는 각각의 메모리의 구역에 대한 프로그램/소거(P/E) 카운트의 수를 결정하고, P/E 카운트가 하나 이상의 임계값들 이상이면 프로그램 방해 분석을 수행할 수 있다. 특히, 제어기는 P/E 카운트가 100, 200, 및/또는 500과 동일하다고 결정하는 것에 응답하여 프로그램 방해 분석을 수행하도록 프로그래밍될 수 있다. 대안적으로, 제어기는 메모리의 상이한 구역에 대한 프로그램/소거(P/E) 카운트의 수를 결정하고, 상이한 메모리의 구역에서의 P/E 카운트가 하나 이상의 임계값들 이상이면 메모리의 일부 또는 모든 구역들에 대한 프로그램 방해 분석을 수행할 수 있다. 특히, 메모리에서의 임의의 블록이 100, 200, 및/또는 500과 동일한 P/E 카운트를 가진다고 제어기가 결정하는 것에 응답하여 제어기는 메모리에서의 모든 블록들에 대한 프로그램 방해 분석을 수행하도록 프로그래밍될 수 있다.
대안적 실시예에서, 제어기는 메모리의 구역의 임의의 분석과는 독립적으로 그리고 그러한 임의의 분석에 기초하지 않고 프로그램 방해의 표시를 결정할 수 있다. 예를 들어, 저장 디바이스는 프로그램 방해의 표시를 나타내는 테이블로 사전 프로그래밍될 수 있다. 이와 관련하여, 하나의 실시예에서, 프로그램 방해의 표시는 메모리의 구역의 상태(이를테면 트루 소거 상태)의 임의의 분석에 기초하지 않고, 저장 디바이스의 제조 시에 사전 프로그래밍되는 사전 설정된 표시에 기초하여 결정된다. 예를 들어, 프로그래밍을 위한 워드라인 수가 결정될 수 있다. 워드라인 수는 하나 이상의 미리 결정된 임계값들과 비교될 수 있고, 워드라인 수가 미리 결정된 임계값보다 더 크다고 결정하는 것에 응답하여, 프로그램 방해의 표시는 결정될 수 있다. 아래에서 더 상세히 논의되는 바와 같이, 블록이 128개 워드라인들을 포함할 수 있다. 프로그램 방해는 더 높은 수의 워드라인들에 통상적으로 영향을 미친다. 이와 관련하여, 제어기는 워드라인들의 수들 또는 지역(zone)들과 프로그램 방해의 표시들을 상관시키는 테이블에 액세스할 수 있다.
프로그램 방해의 표시를 결정하는 것(메모리의 구역의 분석에 의존적이거나 독립적임)에 응답하여, 메모리의 구역에의 데이터의 프로그래밍의 하나 이상의 양태들이 조정될 수 있다. 하나의 실시예에서, 메모리의 구역의 셀들에 데이터를 프로그래밍하기 위한 프로그램 검증 전압 레벨들은 프로그램 방해의 영향을 적어도 부분적으로 감소시키기 위하여 수정될 수 있다. 대안적으로, 데이터를 프로그래밍하는 다른 양태들이 프로그램 방해의 영향을 줄이도록)제거하도록 조정된다.
하나의 특정 구현예에서, 새로운 워드라인이 프로그래밍되기 전에, 트루 소거 상태 체크가 수행된다. 워드라인이 트루 소거 상태에 있다면, 제어기는 메모리 집적 회로 칩이 디폴트 프로그래밍 조건으로 프로그래밍할 것을 명령한다. 워드라인이 트루 소거 상태에 있지 않다면(예컨대, 특정한 프로그램 방해 레벨의 표시가 있다면), 제어기는 프로그래밍의 적어도 하나의 양태에서의 변화들을 명령한다(예컨대, 프로그램 방해를 보상하기 위해 디폴트 프로그래밍 조건보다 약간 더 세게 워드라인을 프로그래밍하기 위해 프로그램 검증(program verify)(PGMV) 전압 레벨들을 조정한다). 하나의 실시예에서, PGMV 전압 레벨들의 변화는 워드라인의 트루 소거 체크 결과들에 의존할 수 있다. 예를 들어, 더 많은 프로그램 방해가 검출될수록, 워드라인을 프로그래밍하기 위해 선택되는 PGMV 전압 레벨들이 더 높다. 대안적으로 또는 추가적으로, 프로그램 방해가 너무 강해서 프로그래밍이 실행될 수 없는 것으로 검출되면, 워드라인 프로그래밍은 포기되고 그 워드 라인에 더미 데이터(이를테면 상태 B(아래에 도 4a에서 논의됨), 또는 더 높은 상태)가 삽입될 수 있다. 아래에서 더 상세히 논의되는 바와 같이, 일반적으로, 더 높은 차수의 워드라인들이 더 큰 프로그램 방해 영향을 경험할 것이며, 결국 더 높은 PGMV 전압 레벨들을 가질 가능성이 있고, 따라서 그것들의 판독 전압 레벨들은 그에 따라 더 나은 판독들을 위해 조정될 것이 필요하다.
각각의 메모리의 구역으로부터 데이터를 판독하는 것에 관하여, 제어기는 각각의 메모리의 구역에서 프로그램 방해의 표시를 결정하고, 그 표시에 기초하여, 각각의 메모리의 구역으로부터의 데이터의 판독을 조정 또는 수정할 수 있다. 예를 들어, 제어기는 워드라인이 프로그래밍되었던 프로그램 전압들을 결정할 수 있다. 위에서 논의된 바와 같이, 프로그램 전압들은 워드라인의 프로그램 방해에 기초할 수 있다. 결정된 프로그램 전압들에 기초하여, 워드라인은 판독될 수 있다.
도면들을 참조하면, 도 1a는 비휘발성 메모리 시스템을 예시하는 블록도이다. 비휘발성 메모리 시스템(100)은 제어기(102)와, 하나 이상의 비휘발성 메모리 다이(104)로 이루어질 수 있는 비휘발성 메모리를 포함한다. 비휘발성 메모리 다이는 하나 이상의 메모리 집적 회로 칩들을 포함할 수 있다. 제어기(102) 및 비휘발성 메모리 다이(104)의 하나 또는 양쪽 모두는 조정 전압(regulated voltage)을 사용할 수 있다. 본 명세서에서 사용되는 바와 같이, 다이라는 용어는, 단일 반도체 기판 상에 형성되는, 비휘발성 메모리 셀들의 세트와 그들 비휘발성 메모리 셀들의 물리적 동작을 관리하는 연관된 회로부를 지칭한다. 제어기(102)는 호스트 시스템과 인터페이싱하고 판독, 프로그램(예컨대, 기입), 및 소거 동작들을 위한 커맨드 시퀀스들을 비휘발성 메모리 다이(104)에 송신한다.
제어기(102)(이는 하나의 실시예에서 플래시 메모리 제어기일 수 있음)는, 예를 들어 (마이크로)프로세서, 로직 게이트들, 스위치들, 주문형 집적회로(ASIC), 프로그램가능 로직 제어기, 및 임베디드 마이크로제어기에 의해 실행 가능한 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어)를 저장하는 프로세싱 회로부, 마이크로프로세서 또는 프로세서, 및 컴퓨터 판독가능 매체의 형태를 취할 수 있다. 제어기(102)는 아래에서 설명되고 흐름도들에서 도시되는 다양한 기능들을 수행하도록 하드웨어 및/또는 펌웨어로 구성될 수 있다. 예를 들어, 하드웨어 및/또는 펌웨어는, 아래에서 더 상세히 논의되는 바와 같이, 들어오는 데이터 스트림의 (이를테면 대역폭 및/또는 일관성에 대한) 분석을 위해 그리고 하이브리드 블록들을 사용할지의 여부를 결정하기 위해 구성될 수 있다. 또한, 제어기 내부에 있는 것으로서 도시된 컴포넌트들의 일부는 제어기 외부에 또한 저장될 수 있고, 다른 컴포넌트들이 사용될 수 있다. 덧붙여, "와 동작 가능하게 통신하는"이란 어구는 직접적으로 통신하거나 또는 하나 이상의 컴포넌트들을 통해 간접적으로(또는 유선 또는 무선으로) 통신하는 것을 의미할 수 있으며, 이는 본 명세서에서 도시 또는 설명될 수 있거나 또는 도시 또는 설명되지 않을 수 있다.
본 명세서에서 사용되는 바와 같이, 플래시 메모리 제어기가, 플래시 메모리 상에 저장된 데이터를 관리하고 호스트, 이를테면 컴퓨터 또는 전자 디바이스와 통신하는 디바이스이다. 플래시 메모리 제어기가 본 명세서에서 설명되는 특정 기능 외에도 다양한 기능을 가질 수 있다. 예를 들어, 플래시 메모리 제어기는 메모리가 적절히 동작하는 것을 보장하기 위해 플래시 메모리를 포맷하며, 좋지 않은(bad) 플래시 메모리 셀들을 매핑하고, 향후의 불량(failed) 셀들을 대체하기 위해 예비용(spare) 셀들을 할당한다. 예비용 셀들의 일부 부분은, 플래시 메모리 제어기를 동작시키고 다른 특징들을 구현하기 위해 펌웨어를 보유하는데 사용될 수 있다. 동작 시, 호스트가 플래시 메모리로부터 데이터를 판독하거나 또는 그 플래시 메모리에 데이터를 기입하는 것이 필요할 때, 호스트는 플래시 메모리 제어기와 통신할 것이다. 데이터가 판독/기입될 논리적 주소를 호스트가 제공하면, 플래시 메모리 제어기는 호스트로부터 수신된 논리적 주소를 플래시 메모리에서의 물리적 주소로 변환할 수 있다. (다르게는, 호스트는 물리적 주소를 제공할 수 있다). 플래시 메모리 제어기는, 비제한적으로, 마모 레벨링(wear leveling)(그렇지 않으면 반복적으로 기입될 메모리의 특정 블록들을 마모시키는 것을 피하기 위해 기입들을 분배시킴)과 가비지 수집(garbage collection)(블록이 가득 찬 후, 데이터의 유효한 페이지들만을 새로운 블록으로 이동시키며, 그래서 전체 블록이 소거되고 재사용될 수 있음)과 같은 다양한 메모리 관리 기능들을 또한 수행할 수 있다.
비휘발성 메모리 다이(104)는 NAND 플래시 메모리 셀들 및/또는 NOR 플래시 메모리 셀들을 포함하는 임의의 적합한 비휘발성 저장 매체를 포함할 수 있다. 비휘발성 메모리 다이(104)의 하나의 예는 메모리 집적 회로 칩을 포함할 수 있다. 메모리 셀들은 고체 상태(예컨대, 플래시) 메모리 셀들의 형태를 취할 수 있고, 일회 프로그램 가능하거나, 수 회 프로그램 가능하거나, 또는 다수 회 프로그램 가능할 수 있다. 위에서 논의된 바와 같이, 메모리 셀들은 또한, 단일 레벨 셀들(single-level cells)(SLC), 다중 레벨 셀들(multiple-level cells)(MLC), 삼중 레벨 셀들(triple-level cells)(TLC), 사중 레벨 셀들(quadruple-level cells)(QLC)이거나, 또는 지금 공지되거나 또는 나중에 개발되는 다른 메모리 셀 레벨 기술들을 사용할 수 있다. 또한, 메모리 셀들은 2차원 또는 3차원 형태로 제작될 수 있다.
제어기(102)와 비휘발성 메모리 다이(104) 사이의 인터페이스는 토글 모드 200, 400, 또는 800과 같은 임의의 적합한 플래시 인터페이스일 수 있다. 하나의 실시예에서, 메모리 시스템(100)은 카드 기반 시스템, 이를테면 보안 디지털(secure digital)(SD) 또는 마이크로 보안 디지털(micro secure digital)(마이크로-SD) 카드일 수 있다. 대안적 실시예에서, 메모리 시스템(100)은 임베디드 메모리 시스템의 일부일 수 있다.
비록 도 1a에 도시된 예에서 비휘발성 메모리 시스템(100)이 제어기(102)와 비휘발성 메모리 다이(104) 사이에 단일 채널을 포함하지만, 본 명세서에서 설명되는 본 발명의 요지는 단일 메모리 채널을 갖는 것으로 제한되지 않는다. 예를 들어, 도 1b 및 도 1c에서 예시된 바와 같은 일부 NAND 메모리 시스템 아키텍처들에서, 2, 4, 8개 이상의 NAND 채널들이, 제어기 능력들에 의존하여, 제어기와 NAND 저장 디바이스 사이에 존재할 수 있다. 본 명세서에서 설명되는 실시예들 중 임의의 실시예에서, 심지어 단일 채널이 도면들에서 도시되더라도, 단일을 초과하는 채널이 제어기와 메모리 다이 사이에 존재할 수 있다.
도 1b는 복수의 비휘발성 메모리 시스템들(100)을 포함하는 저장 모듈(200)을 예시한다. 이와 같이, 저장 모듈(200)은 호스트와 그리고 저장 시스템(204)과 인터페이싱하는 저장 제어기(202)를 포함할 수 있는데, 저장 시스템은 복수의 비휘발성 메모리 시스템들(100)을 포함한다. 저장 제어기(202)와 비휘발성 메모리 시스템들(100) 사이의 인터페이스는, SAT A(serial advanced technology attachment) 또는 PCIe(peripheral component interface express) 인터페이스와 같은 버스 인터페이스일 수 있다. 저장 모듈(200)은, 하나의 실시예에서, 랩톱 컴퓨터들과, 태블릿 컴퓨터들과 같은 휴대용 컴퓨팅 디바이스들에서 발견되는 바와 같은 고체 상태 드라이브(SSD)일 수 있다.
도 1c는 계층적 저장 시스템을 예시하는 블록도이다. 계층적 저장 시스템(210)이 복수의 저장 제어기들(202)을 포함하며, 그 제어기들의 각각은 각각의 저장 시스템(204)을 제어한다. 호스트 시스템들(212)이 계층적 저장 시스템 내에 메모리들에 버스 인터페이스를 통해 액세스할 수 있다. 하나의 실시예에서, 버스 인터페이스는 NVMe(volatile memory express) 또는 FCoE(fiber channel over Ethernet) 인터페이스일 수 있다. 하나의 실시예에서, 도 1c에 예시된 시스템은 대용량 저장이 필요한 데이터 센터 또는 다른 로케이션에서 발견될 바와 같은 다수의 호스트 컴퓨터들에 의해 액세스 가능한 래크(rack) 장착가능 대용량 저장 시스템일 수 있다.
도 2a는 제어기(102)의 예시적인 컴포넌트들을 더 상세히 도시하는 블록도이다. 제어기(102)는 호스트와 인터페이싱하는 프런트 엔드 모듈(108), 하나 이상의 비휘발성 메모리 다이(104)와 인터페이싱하는 백 엔드 모듈(110), 및 이제 상세히 설명될 기능들을 수행하는 다양한 다른 모듈들을 포함한다.
모듈이, 예를 들어, 다른 컴포넌트들과 함께 사용하기 위해 설계된 패키징된 기능성 하드웨어 유닛, 관련된 기능들 중 특정 기능을 보통 수행하는 (마이크로)프로세서 또는 프로세싱 회로부에 의해 실행 가능한 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어)의 부분, 또는 더 큰 시스템과 인터페이싱하는 자급식(self-contained) 하드웨어 또는 소프트웨어 컴포넌트의 형태를 취할 수 있다.
제어기(102)의 모듈들은 워드라인 프로그램 방해 결정(111), 프로그램 방해 결정에 기초한 워드라인 프로그래밍(112), 및 프로그램 방해 결정에 기초한 워드라인 판독(113)을 포함할 수 있다. 대안적으로, 제어기(102)는 워드라인 프로그램 방해 회로부, 프로그램 방해 결정에 기초한 워드라인 프로그래밍 회로부, 및 프로그램 방해 결정에 기초한 워드라인 판독 회로부와 같은 다양한 회로부에 의해 표현될 수 있다. 하나의 실시예에서, 회로부는 연관된 기능을 구현하기 위해 코드 또는 소프트웨어의 실행과 조합하여 제어기(또는 제어기의 다양한 부분들)(102)를 포함할 수 있다. 대안적으로, 회로부는 프로그램가능 로직 어레이들 등에 의해 표현될 수 있다.
아래에서 더 상세히 설명되는 바와 같이, 제어기(102)는 프로그램 방해의 표시를 결정할 수 있다. 하나의 실시예에서, 프로그램 방해의 결정은 워드라인 레벨에서 될 수 있다. 게다가, 하나의 실시예에서, 그 표시의 결정은 실시간으로 수행될 수 있다. 특히, 워드라인의 상태(예컨대, 트루 소거 상태)의 분석은 데이터를 워드라인에 기입하려는 결정에 응답하여 수행될 수 있다. 대안적으로, 그 표시의 결정은 이전의 분석(예컨대, 도 6에 예시된 바와 같은 테이블)에 기초하여 수행될 수 있다. 이와 관련하여, 워드라인 프로그램 방해 결정(111)은 프로그램 방해의 표시를 결정하기 위해, 워드라인 및 블록을 사용하여, 테이블에 액세스하는 것을 포함할 수 있다. 특정 구현예에서, 프로그램 방해의 표시는 프로그램 전압(예컨대, 도 6에 예시된 바와 같은 프로그램 전압 또는 프로그램 전압에 대한 오프셋)을 포함할 수 있다. 프로그램 방해 결정에 기초한 워드라인 프로그래밍(112)은, 아래에서 더 상세히 설명되는 바와 같이, 워드라인을 프로그래밍하기 위하여 워드라인 프로그램 방해 결정(111)의 출력(예컨대, 프로그램 전압)을 사용할 수 있다. 제어기(102)는 워드라인을 판독하기 위하여 프로그램 방해 결정(113)에 기초하여 워드라인 판독에 액세스할 수 있다. 위에서 논의된 바와 같이, 워드라인의 프로그래밍은 프로그램 방해의 표시에 기초하여 조정되거나 또는 수정될 수 있다. 따라서, 워드라인을 판독함에 있어서, 조정된 프로그래밍은 워드라인으로부터 판독된 데이터를 해석하는데 사용될 수 있다.
일부 구현예들에서 워드라인 프로그램 방해 결정(111), 프로그램 방해 결정에 기초한 워드라인 프로그래밍(112), 및 프로그램 방해 결정에 기초한 워드라인 판독(113)은 제어기(102)의 일부일 수 있으며, 다른 구현들에서, 워드라인 프로그램 방해 결정(111)의 모두 또는 부분, 프로그램 방해 결정에 기초한 워드라인 프로그래밍(112), 프로그램 방해 결정에 기초한 워드라인 판독(113)은 제어기(102)와 인터페이싱하는, 제어기(102)와는 별개인 개별 컴포넌트들일 수 있다.
제어기(102)의 모듈들을 다시 참조하면, 버퍼 관리자/버스 제어기(114)가 랜덤 액세스 메모리(RAM)(116) 내의 버퍼들을 관리하고 제어기(102)의 내부 버스 중재(bus arbitration)를 제어한다. 판독 전용 메모리(ROM)(118)가 시스템 부트 코드를 저장한다. 비록 도 2a에서 제어기(102)와는 따로따로 위치되는 것으로서 예시되지만, 다른 실시예들에서 RAM(116) 및 ROM(118) 중 하나 또는 양쪽 모두는 제어기 내에 위치될 수 있다. 또 다른 실시예들에서, RAM 및 ROM의 부분들은 제어기(102) 내부와 제어기 외부 둘 다에 위치될 수 있다. 게다가, 일부 구현예들에서, 제어기(102), RAM(116), 및 ROM(118)은 별도의 반도체 다이 상에 위치될 수 있다.
프런트 엔드 모듈(108)은, 호스트 또는 다음 레벨 저장 제어기와의 전기 인터페이스를 제공하는 호스트 인터페이스(120) 및 물리 계층 인터페이스(PHY)(122)를 포함한다. 호스트 인터페이스(120)의 유형의 선택은 사용되고 있는 메모리의 유형에 의존할 수 있다. 호스트 인터페이스들(120)의 예들은 SATA, SATA 익스프레스, SAS, 파이버 채널(Fibre Channel), USB, PCIe, eMMC I/F, 및 NVMe를 포함하고, 이것으로 제한되지 않는다. 호스트 인터페이스(120)는 데이터, 제어 신호들, 및 타이밍 신호들에 대한 전송을 통상적으로 용이하게 한다.
백 엔드 모듈(110)은, 호스트로부터 수신된 데이터 바이트들을 인코딩하고 비휘발성 메모리로부터 수신된 데이터 바이트들을 디코딩하고 오류 정정하는 오류 정정 제어기(error correction controller)(ECC) 엔진(124)을 포함한다. 커맨드 시퀀서(126)가 비휘발성 메모리 다이(104)에 송신될 커맨드 시퀀스들, 이를테면 프로그램 및 소거 커맨드 시퀀스들을 생성한다. RAID(Redundant Array of Independent Drives) 모듈(128)이 RAID 패리티의 생성 및 불량 데이터의 복구를 관리한다. RAID 패리티는 비휘발성 메모리 시스템(100)에 기입되고 있는 데이터에 대한 추가적인 무결성 보호 레벨로서 사용될 수 있다. 일부 경우들에서, RAID 모듈(128)은 ECC 엔진(124)의 일부일 수 있다. 메모리 인터페이스(130)는 커맨드 시퀀스들을 비휘발성 메모리 다이(104)에 제공하고 비휘발성 메모리 다이(104)로부터 스테이터스 정보를 수신한다. 하나의 실시예에서, 메모리 인터페이스(130)는 이중 데이터 레이트(double data rate)(DDR) 인터페이스, 이를테면 토글 모드 200, 400, 또는 800 인터페이스일 수 있다. 플래시 제어 계층(132)이 백 엔드 모듈(110)의 전체 동작을 제어한다.
도 2a에 예시된 시스템(100)의 추가적인 컴포넌트들이 비휘발성 메모리 다이(104)의 메모리 셀들의 마모 레벨링을 수행하는 매체 관리 계층(138)을 포함한다. 시스템(100)은 제어기(102)와 인터페이싱할 수 있는 외부 전기 인터페이스들, 외부 RAM, 저항기들, 커패시터들, 또는 다른 컴포넌트들과 같은 다른 개별 컴포넌트들(140)을 또한 포함한다.
대안적 실시예들에서, 물리 계층 인터페이스(122), RAID 모듈(128), 매체 관리 계층(138) 및 버퍼 관리/버스 제어기(114) 중 하나 이상이 제어기(102)에서 필요하지 않은 옵션적인 컴포넌트들이다.
도 2b는 비휘발성 메모리 다이(104)의 예시적인 컴포넌트들을 더 상세히 도시하는 블록도이다. 비휘발성 메모리 다이(104)는 주변 회로부(141)와 비휘발성 메모리 어레이(142)를 포함한다. 비휘발성 메모리 어레이(142)는 데이터를 저장하는데 사용되는 비휘발성 메모리 셀들을 포함한다. 비휘발성 메모리 셀들은, NAND 플래시 메모리 셀들 및/또는 NOR 플래시 메모리 셀들을 2차원 및/또는 3차원 구성으로 포함하는 임의의 적합한 비휘발성 메모리 셀들일 수 있다. 주변 회로부(141)는 스테이터스 정보를 제어기(102)에 제공하는 상태 머신(151)을 포함한다.
비휘발성 메모리 다이(104)는 비휘발성 메모리 어레이(142)에서의 각각의 워드라인을 판독하도록 구성되는 워드라인 판독 모듈(152)을 더 포함할 수 있다. 마찬가지로, 비휘발성 메모리 다이(104)는 비휘발성 메모리 어레이(142)에서의 각각의 워드라인을 프로그래밍하도록 구성되는 워드라인 프로그래밍 모듈(154)을 더 포함할 수 있다. 워드라인 프로그래밍 모듈은 프로그램 검증 모듈(155)을 포함할 수 있다. 프로그램 검증 모듈(155)은 아래에서 더 상세히 논의되는 바와 같은 프로그램 검증 기능을 포함할 수 있다.
비휘발성 메모리 다이(104)는 비휘발성 메모리 어레이(142) 내의 주소지정을 위한 주소 디코더들(148, 150)과, 데이터 데이터를 캐싱하는 캐시(156)를 더 포함한다.
도 2c는 플래시 메모리 시스템(260)의 제어기(270)의 예시적인 컴포넌트들의 다른 예를 도시하는 블록도이다. 제어기(270)는 제어기(270)가 기입 상태에 있는지 또는 판독 상태에 있는지와 같은 제어기(270)의 상태를 결정하도록 구성되는 제어기 상태 머신(276)을 포함한다. 기입 상태에서, 제어기 상태 머신(276)은 프로그램 보상 블록(274)을 기록하기 위한 프로그램 검증(PGMV) 전압 레벨들을 결정하기 위하여 테이블들에 액세스하도록 구성된다. 대안적으로 또는 추가적으로, 제어기 상태 머신(276)이 (프로그램 검증 전압 레벨들을 포함하는) 프로그램 보상 블록(274)을 기록하기 위한 테이블들의 일부 또는 전부를 구축할 수 있다. 테이블들의 구축은 각각의 워드라인 내의 셀(들)의 소거 상태의 분석에 기초할 수 있다. 따라서, 제어기 상태 머신(276)은 PGMV의 선택을 결정함으로써 프로그램 방해 보상을 수행할 수 있다. 게다가, 제어기 상태 머신(276)은 판독 오프셋을 결정하기 위하여 블록(272)의 프로그램 방해 보상에 기초하여 사용할 판독 오프셋을 액세스 결정할 수 있다.
도 2c는 플래시 메모리(280)를 추가로 예시한다. 인터페이스 I/O(292)는 제어기(270)와 통신하도록 구성된다. 게다가, 메모리 어레이(282)는 사용자 블록들(284 및 290), 시스템 파일 제어 블록들(286), 및 부트/보안 블록들(288)과 같은 메모리의 다양한 구역들을 포함한다. 도 2c에 예시된 블록들은 단지 예의 목적을 위한 것이다. 다른 유형들의 블록들이 고려된다.
플래시 메모리는 플래시 메모리(280)에서의 워드라인들을 프로그래밍하기 위한 고전압 펌프들을 포함하는 고전압(HV) 회로부를 더 포함한다. 트림 레지스터들(297)이 워드라인들의 프로그래밍을 변경하는데 사용될 수 있다. 특히, PGMV는 트림 레지스터들(297)에 저장될 수 있다. 실제로, 상태 머신/로직(296)은 트림 레지스터들(297)에서의 변화들을 식별하고, 프로그래밍 회로들(294)을 사용하여, 워드라인들의 프로그래밍을 수정하기 위해 식별된 변화를 사용한다. 특히, 프로그래밍 회로들(294)은 워드라인들 상에 프로그래밍된 전압들을 검증하기 위하여, 아래에서 논의되는 프로그램 검증 기능을 포함할 수 있다. 게다가, 판독 회로(293)가 워드라인들로부터 데이터를 판독하기 위하여 판독 오프셋을 사용할 수 있다.
도 3은 3차원 메모리(300)의 그리고 셀(P)에 대한 방해를 나타내는 개략도이다. 특히, 도 3은 다수의 워드라인들(예컨대, WL0 내지 WL47), 다수의 스트링들(예컨대, SGS0 내지 SGS3) 및 페이지 당 다수의 비트라인들을 예시한다. 실제로, 스트링 기반 아키텍처로 인해 2D에서보다 도 3에 예시된 3D NAND 플래시에 대해 더 많은 프로그램 방해들이 있다. 프로그램 방해는 Vt 시프트들로 나타날 수 있다. 결국, 이는 프로그램에서의 온도들 및 판독에서의 온도가 매우 상이할 때 시스템 비트 에러 율에서의 증가로 이어질 수 있다.
위에서 논의된 바와 같이, 저장 디바이스는 메모리 셀들에 데이터를 프로그래밍할 수 있다. 메모리 셀들은 각각의 셀 내에 하나의 비트, 또는 다수의 비트들을 저장하도록 프로그래밍될 수 있다. 예를 들어, 데이터의 단일 비트가 각각의 셀에 저장되도록 메모리 셀들은 두 개의 변화 레벨들을 저장하도록 동작될 수 있다. 이는 이진 또는 단일 레벨 셀(single level cell)(SLC) 메모리라고 통상적으로 지칭된다. 다른 예로서, 메모리 셀들은 각각의 변화 저장 엘리먼트 또는 지역에 두 개를 초과하는 검출가능 변화 레벨들을 저장함으로써, 각각에 데이터의 하나를 초과하는 비트를 저장하도록 동작될 수 있다. 이 후자의 구성은 멀티레벨 셀(multi-level cell)(MLC) 메모리라고 지칭된다. 하나의 실시예에서, 하나의 유형의 메모리 셀들이 메모리에서 사용된다. 대안적으로, 양 유형들의 메모리 셀들은 메모리에서 사용될 수 있으며, 예를 들어 이진수 플래시 메모리가 데이터를 캐싱하기 위해 사용될 수 있고 MLC 메모리는 더 긴 기간의 저장을 위해 사용될 수 있다.
예를 들어, 정보의 3 비트들을 저장하도록 구성되는 MLC 메모리 셀에서, 3개의 비트들을 표현하는데 필요한 23 = 8개의 가능한 상태가 있다. 8개의 상태(본 명세서에서 Er, A, B, C, D, E, F, 및 G라고 지칭되며, 여기서 Er은 소거 상태를 지칭함)는, 셀이 프로그래밍될 수 있는 8개의 이산 전압 레벨(Vt)이다. 저장된 셀 당 비트 수 및 상태 수의 예들은 단지 예시 목적을 위한 것이다.
하나의 예로서, Vt는 저장 디바이스 동작들로 인해 시프트할 수 있다. 더 구체적으로는, 저장 디바이스가 과도하게 사이클링됨에 따라, 프로그램 방해는 점점 더 심해질 수 있다. Vt 시프트 현상은 상태들의 Vt 분포가 약간 넓어지게 (예컨대, 우측 및 좌측 꼬리들(tails) 중 하나 또는 양쪽 모두에서 넓어지게) 할 수 있다. 이 유형의 Vt 시프트는 비정정가능 오류 정정 코드(uncorrectable error correction code)(UECC)를 즉시 초래할 통상적으로 충분히 심각한 문제는 아니지만, FBC(fail bit count)가 증가하게 할 수 있다. 증가된 FBC는 두 가지 부정적인 영향들을 가질 수 있다: (1) FBC가 초기 수명에서 증가함에 따라, 저장 디바이스 판독 성능은 더 긴 오류 정정 코딩(error correction coding)(ECC) 디코드 시간으로 인해 영향을 받을 수 있으며; 그리고 (2) 시스템 BER에 대한 과도 검출을 야기할 더 높은 기회가 있음으로써, 다른 시스템 레벨 오류 핸들링 메커니즘(이를테면 판독 스크러브/리프레시, CVD, EPWR/RBAX 복구 등)을 트리거하고 전반적인 시스템 수행을 지연시키고 추가적인 P/E 사이클들을 불필요하게 도입할 수 있다. 저장 디바이스가 최대 내구성에 도달하기 위해 시도할 때 추가의 Vt 시프트는 UECC를 결과적으로 야기할 수 있다.
위에서 논의된 바와 같이, 프로그램 검증 기능은 하나 이상의 메모리 셀에 프로그래밍되는 데이터가 성공적으로 프로그래밍되었는지의 여부를 검증하는데 사용될 수 있다. 프로그램 검증 테스트는 진실(verity) 전압(Vread)이 인가되고 세트 또는 리세트 상태가 각각, 도달되었는지의 여부를 결정하기 위해 셀을 통과하는 전류가 프로그램 검증 테스트(Iverify_set)의 전류 또는 프로그램 검증 테스트의 리셋 검증 전류(Iverify_reset)를 검증하는데 사용되는 판독 동작을 포함할 수 있다. 프로그램 검증(308)은 프로그램 검증 테스트가 통과되었는지의 여부를 결정할 수 있다. 프로그램 검증 테스트가 통과되지 않았다고 결정되면, 하나의 실시예에서, 에러가 반환될 수 있고, 대안적 실시예에서, 파라미터들을 프로그래밍하기 위한 하나 이상의 값들이 전압 크기 및/또는 지속기간 및/또는 전류 제한을 증가시킴으로써 업데이트될 수 있고, 프로그래밍은 다시 수행될 수 있다.
도 4a는 프로그램 방해로부터 식별된 영향 없이 셀 당 3 비트 NAND 플래시 메모리의 프로그래밍을 예시한다. 도 4a의 예는 단지 예시 목적을 위한 것이다. 셀 당 다른 비트 수 및 메모리의 다른 유형들이 고려된다. 도 4a를 참조하면, 셀 당 3 비트 NAND 플래시 메모리를 위한 WL에서의 각각의 셀은, 3개의 상이한 페이지 각각으로부터의 비트: 상위 페이지 비트(UP)(402), 중간 페이지 비트(MP)(404) 및 하위 페이지 비트(LP)(406)를 저장할 수 있다. 그러한 메모리 셀에 대한 전형적인 프로그래밍 동작은, 그 셀을 위해 의도된 호스트 데이터의 3개의 원래 비트들이 제어기로부터 NAND 메모리로 3번 전송되는 것을 요구할 것이고, 원하는 전압 상태를 오버슈팅(overshooting)하지 않고 원하는 전압 상태에 도달하기 위해 셀 내로 정확한 전하의 양을 넛지(nudge)하는 데에 3개의 프로그래밍 패스 각각에 대해 한번 필요하다.
도 4a에 나타낸 바와 같이, 3개의 프로그래밍 패스 또는 상태가 각각 본 명세서에서 제1 프로그래밍 패스(408), 포기 프로그래밍 패스(foggy programming pass)(410) 및 파인 프로그래밍 패스(fine programming pass)(412)로 지칭될 수 있다. 일반적으로 말해서, 제1 프로그래밍 패스(408)는 저장된 전압을 소거된(Er)(414) 레벨 또는 중간 레벨(도 4a에서의 LM(416)) 중 어느 하나에 남겨 두는 더 대충 만든(cruder) 전압 펄스일 것이며, 여기서 Er 전압 레벨은 8개의 원하는 전압 상태 중 처음 4개(Er, A, B 또는 C) 중 하나로의 후속하는 계속되는 프로그래밍을 허용하고 LM 전압 레벨은 8개의 원하는 전압 상태 중 후자의 4개(D, E, F 또는 G) 중 하나로 증가될 수 있는 임계값으로 전압을 푸시한다.
도 4a에 예시된 바와 같은 메모리에서의 전형적인 제1/포기/파인 프로그래밍 스킴에서, 원래의 3개의 호스트 비트는 3개의 프로그래밍 스테이지 각각을 수행하기 위해 제어기로부터 NAND로 반복적으로 전송된다. 따라서, 제2 또는 "포기" 프로그래밍 단계에서 UP, MP, 및 LP 데이터는 제어기로부터 NAND 메모리로 다시 전송된다. UP, MP 및 LP 비트들은 제1 프로그래밍 단계 408에서 성취된 현재 상태(Er 또는 LM)를 8개의 원하는 상태들 중 더 많이 분해된 하나로 푸시하는데 필요한 포기 프로그래밍 스테이지 전압 펄스들을 생성하기 위해 비휘발성 메모리(예컨대, NAND 플래시)에 의해 사용된다. 가상적인 전압 분포 옵션들이, 그 전압 레벨에서의 3 페이지 비트들의 연관된 상태와 함께, 포기 프로그래밍(410) 후에, 도 4a에 도시된다. 데이터의 원래의 3개의 비트를 NAND 메모리에 송신하고 제2, 또는 포기, 프로그래밍 스테이지(410)를 수행하는 제2 라운드 후, 원래의 세 개의 비트들은 제어기에서 RAM으로부터 다시 취출되고 NAND로 전송되어 8개 상태들 중 원하는 1개를 성취하는데 필요한 마지막, 또는 파인, 프로그래밍 단계들(412)을 제공한다. 파인 프로그래밍 스테이지(412) 후에 성취된 가능한 프로그래밍 전압들에 대한 분포가 도 4a에서 뒤에 도시되는데, 여기서 8개의 가능한 상태들이 충분이 복원되어 도시된다.
프로그래밍 전압을 인가한 후, 프로그램 검증 기능은 미리 결정된 전압들의 세트를 사용하여 셀이 적절히 프로그래밍되었는지의 여부를 결정할 수 있다. 예시적인 목적을 위해, 셀 당 3비트 NAND 플래시 메모리에 대한, A부터 G까지의, 검증 전압 레벨들은, 0.8, 1.6, 2.4, 3.2, 4.0, 4.8, 5.6V를 포함할 수 있다. 프로그램 검증이 실패하는 이벤트에서, 초기 프로그래밍 전압은 (예컨대, 40mV만큼) 증가될 수 있고, 프로세스는 반복될 수 있다. 하나의 실시예에서, 프로세스의 반복 수는 미리 결정된 수로 제한될 수 있다. 그 후, 메모리 칩은, 아래에서 더 상세히 논의되는 바와 같이, 메모리 시스템 제어기에 대한 고장을 보고할 수 있다. 이 프로세스는 상태 A 내지 G의 각각에 대해 반복될 수 있다.
도 4b는 블록에서의 상이한 워드라인들에 대한 프로그램 방해 영향들(450) 및 트루 소거 검출을 예시한다. 특히, 도 4b는 WLn, WLn+j 및 WLn+j+i를 포함하는 상이한 워드라인들에 대한 소거 상태(Er) 및 상태 A 내지 G를 예시한다. 따라서, 도 4b는 숫자를 증가시키는 워드라인들에 대한 상태들을 예시한다. WLn은 프로그램 방해가 거의 없거나 없음을 예시하고, 따라서 도 4a에 묘사된 것에 유사하다. WLn+j는 트루 소거 검출 라인을 지나게 교차하는 일부 프로그램 방해(소거 상태로서 도시됨)를 예시한다. WLn+j+i는 상태 A 내로 교차하는 소거 상태에 대한 꼬리로서 더 많은 프로그램 방해(소거 상태로서 도시됨)를 예시한다. 따라서, 프로그램 방해는 워드라인 숫자가 증가함에 따라 더 강해진다.
위에서 논의된 바와 같이, 제어기는 프로그램 방해의 표시를 결정할 수 있다. 하나의 방식에서, 제어기는 워드라인의 하나 이상의 양태들을 분석할 수 있다. 하나의 실시예에서, 제어기는 소거 상태를 분석할 수 있다. 하나의 예에서, 제어기는 트루 소거 체크를 위해 직접 메모리 카운트(direct memory count)(DMC) 기능을 사용할 수 있다. 특히, DMC 기능은 판독 전압 레벨(도 4b에서 트루 소거 검출 라인으로서 예시됨) 위의 비트들의 수를 카운트할 수 있다. 이와 관련하여, DMC 기능은 각각의 워드라인에 대한 얼마나 많은 비트가 "트루 소거 검출" 라인의 좌측 및 우측에 있는지를 결정할 수 있다. "트루 소거 검출" 라인의 우측에서 검출되는 비트들의 수가 미리 결정된 수량을 초과하면, 이는 소거 상태의 꼬리가 상태 A 내로 침범하고 있다(또는 침범하였다)는 표시이다. 이는 도 4b의 워드라인 WLn+j+i에서 예시된다. 상태 A 내지 G는 PGMV 전압 레벨들로 일반적으로 프로그래밍된 것으로서 예시된다. 전형적인 프로그래밍으로, 소거 상태의 우측 꼬리는 상태 A와 중첩한다. 이러한 방식으로, 전형적인 프로그래밍을 사용하면 잠재적 오류들이 야기될 것이다.
프로그램 방해의 영향을 줄이기 위하여, 상이한 상태들(예컨대, 상태 A 내지 G)에 대한 프로그래밍 전압들이 수정된다. 이는 도 5에서, 소거 검출에 기초하여 식별된 프로그램 방해에 대한 적응적 프로그램 보상과 함께, 예시된다. 워드라인 WLn+j+i에 대해 도시된 바와 같이, 프로그래밍은 트루 소거 검출 결과들에 기초하여 프로그램 방해를 보상하도록 적응된다. 이러한 방식으로, 소거 상태의 우측 꼬리는 (상태 A를 포함하는) 임의의 다른 상태와 중첩하지 않는다.
아래에서 더 상세히 논의되는 바와 같이, 상이한 상태(들)은 PGMV를 수정하는 것에 기초하여 시프트된다. 예를 들어, 하나의 실시예에서, 상태들(소거 상태가 아님)의 모두는 시프트된다. 예를 들어, 상태 A 내지 G(Er을 제외)는, 워드라인 WLn+j+i에 대해 도 5에서 도시된 바와 같이, 시프트된다. 대안적으로, 모두보다 더 적은 수의 상태들(소거 상태는 제외)이 시프트된다. 예를 들어, 상태 A 내지 F는 시프트될 수 있지만 상태 G 및 Er은 시프트되지 않는다.
덧붙여서, 하나의 실시예에서, 상태 A 내지 G의 우측으로의 시프트는 균일하다(예컨대, 전형적인 프로그래밍 전압으로부터의 전압 오프셋이, 도 6에 예시된 바와 같이, 상태 A 내지 G의 각각에 대해 동일하다). 대안적으로, 전형적인 프로그래밍 전압들로부터의 전압 오프셋은 상이한 상태들에 대해 가변할 수 있다. 워드라인들(WLn 및 WLn+j)에 대한 프로그램 방해의 더 적은 영향으로 인해, 상태 A 내지 G는 전형적인 PGMV 전압 레벨들로 프로그래밍된다는 점에 또한 주의한다.
도 6은 블록들 및 각각의 블록들 내의 워드라인들 사이에서 상관된 프로그램 방해 보상의 테이블(600)을 예시한다. 위에서 논의된 바와 같이, 트리거에 응답하여, 제어기는 나중의 참조를 위해 테이블(600)을 채울 수 있다. 테이블(600)은 블록들(예컨대, 블록 0 내지 4)을 상이한 워드라인 지역들(예컨대, 상이한 워드라인 그루핑들)에 상관시킬 수 있다. 단지 5 개의 블록들이 도 6에 예시되지만, 하나의 실시예에서, 블록들의 각각은 테이블에 포함될 수 있다. 대안적으로, 모두보다 더 적은 수의 블록들이 테이블에 포함될 수 있다. 예를 들어, 100 개의 워드라인들이 있을 수 있다. 이와 관련하여, 워드라인들은 도 6에 예시된 다섯 개 지역들과 같은 상이한 지역들로 세분될 수 있다. 예를 들어, 지역 0은 워드라인 0~19을 포함할 수 있으며, 지역 1은 워드라인 20~39을 포함할 수 있다는 등등이다. 게다가, 하나의 실시예에서, 각각의 메모리 다이는 대응하는 테이블을 포함할 수 있다. 대안적으로, 단일 테이블이 다수의 메모리 다이들을 위해 사용될 수 있다.
테이블을 채움에 있어서, 제어기는 하나 이상의 워드라인들을 분석할 수 있다. 도 6에서의 예시적인 테이블에서, 제어기는 지역 내의 하나의 워드라인을 분석하고 오프셋을 결정할 수 있다. 하나의 실시예에서, 지역에서의 최고 숫자의 워드라인은 그 지역에 대한 프로그램 방해를 결정하기 위해 분석될 수 있는데, 워드라인 숫자가 증가함에 따라 프로그램 방해의 영향이 증가하여서이다. 예를 들어, 블록 0, 지역 0(블록 0의 워드라인 0~19를 커버함)에 대해, 제어기는 (예컨대, 위에서 논의된 DMC 기능을 사용하여) 프로그램 방해에 대한 소거 상태에서 워드라인(19)을 분석할 수 있다. 도 6에 도시된 바와 같이, 블록 0, 지역 0에서의 프로그램 방해는 무시해도 될 정도라서, PGMV에 대한 0 오프셋으로 이어진다. 다른 예로서, 블록 1, 지역 4에서, 제어기는 워드라인(127)(마지막 워드라인)을 테스트하여, 각각의 DAC = 12.5mV로 하여, DAC에서의 9의 오프셋을 결정할 수 있다. 따라서, 블록 1, 지역 4에 대해, 프로그램 검증을 위한 오프셋은 112.5mV와 동일하다. 도시된 바와 같이, 프로그램 방해가 더 높을수록, PGMV 전압 레벨들이 더 높아진다.
도 7은 메모리의 구역에 대한 프로그램 방해의 표시자에 기초하여 메모리의 구역을 프로그래밍하는 하나의 예의 흐름도(700)이다. 702에서, 제어기는 메모리의 구역(이를테면 워드라인 또는 워드라인들의 그룹)에 대한 프로그램 방해의 표시자에 액세스한다. 표시자의 일 예가 도 6에 예시된 오프셋들을 포함할 수 있다. 다른 표시자들이 고려된다. 704에서, 표시자는 메모리의 구역을 프로그래밍하기 위한 조정된 프로그래밍 전압을 결정하는데 사용된다. 예를 들어, 오프셋은 프로그래밍을 위한 조정된 프로그래밍 전압을 생성하기 위하여 전형적인 프로그래밍 전압을 수정하는데 사용될 수 있다. 대안적으로, 테이블은 블록들/워드라인들과 조정된 프로그래밍 전압들을 상관시킬 수 있다. 이와 관련하여, 조정된 프로그래밍 전압을 결정하기 위하여 표시자(이를테면 프로그래밍 오프셋)에 액세스하는 것 및 전형적인 프로그래밍 전압에 액세스하는 것 없이 조정된 프로그래밍 전압에 대해 블록들/워드라인들 사이에 직접 상관이 있을 수 있다. 706에서, 조정된 프로그래밍 전압은 메모리의 구역을 프로그래밍하는데 사용된다.
도 8은 메모리의 구역에 대한 프로그램 방해의 표시자에 기초하여 메모리의 구역을 판독하는 하나의 예의 흐름도(800)이다. 802에서, 메모리의 구역의 판독을 요청할지의 여부가 결정된다. 만약 그렇다면, 804에서, 메모리의 구역에 상관되는 조정된 프로그래밍 전압이 액세스될 수 있다. 예를 들어, 조정된 프로그래밍 전압들에 블록/워드라인들을 상관시키는 테이블이 액세스될 수 있다. 특히, 상이한 상태들(이를테면 상태 Er, A 내지 G)에 대한 조정된 프로그래밍 전압들이 결정될 수 있다. 대안적으로, 메모리 내의 워드라인의 판독을 요청하는 것에 응답하여, 도 6에 묘사된 테이블은 액세스될 수 있다. 이와 관련하여, 표시자(이를테면 PGMV에 대한 오프셋)와 전형적인(비조정된) 프로그래밍 전압들이 액세스될 수 있다. 표시자와 전형적인 프로그래밍 전압들을 결합하면 결국 조정된 프로그래밍 전압들이 결정될 수 있다. 806에서, 조정된 프로그래밍 전압은 데이터를 판독하기 위하여 사용될 수 있다. 특히, 조정된 프로그래밍 전압들은 데이터가 상이한 상태들로 저장되는지의 여부를 결정하는데 사용될 수 있다.
도 9는 메모리의 구역에 대한 프로그램 방해의 표시자에 기초하여 메모리의 구역을 프로그래밍하는 다른 예의 흐름도(900)이다. 902에서, 소거 검출이 프로그래밍 전에 워드라인 상에서 수행된다. 위에서 논의된 바와 같이, 소거 검출의 하나의 예는 위에서 논의된 DMC 기능을 사용하여 소거 상태(Er)를 분석하고 있다. 904에서, 제어기는 소거 검출 결과들을 체크한다. 예를 들어, 제어기는 소거 검출 결과들이 분석 하의 워드라인에서 프로그램 방해를 나타내는지의 여부를 결정할 수 있다. 906에서, 소거 검출 결과들에 기초하여, 제어기는 어떤 프로그램 조건들을 사용할지를 결정할 수 있다. 예를 들어 제어기는 조정된 프로그래밍 전압을 결정할 수 있다. 908에서, 워드라인은 프로그램 조건을 사용하여 프로그래밍될 수 있다. 910에서, 프로그램 조건은 프로그램 보상 테이블(이를테면 도 6에 도시된 바와 같음)에 기록될 수 있다.
도 10은 메모리의 구역에 대한 프로그램 방해의 표시자에 기초하여 메모리의 구역을 판독하는 다른 예의 흐름도(1000)이다. 1002에서, 워드라인에 대한 디폴트 판독 조건들이 획득된다. 예를 들어, 상이한 상태들에 대한 디폴트 판독 조건들(예컨대, 프로그램 방해에 대한 임의의 조정 없이, Er, 상태 A 내지 G에서의 전압들)이 획득된다. 1004에서, 프로그램 보상 테이블(이를테면 910에서 채워지고 도 6에서 예시됨)은 프로그램 검증 오프셋을 획득하기 위해 액세스될 수 있다. 1006에서, 프로그램 검증 오프셋은 업데이트된 판독 조건들을 생성하기 위하여 디폴트 판독 조건들에 적용된다. 1008에서, 워드라인은 그 다음에 업데이트된 판독 조건들을 사용하여 판독된다.
본 출원에서, 본 출원에서 설명된 것들과 같은 반도체 메모리 시스템들은, 휘발성 메모리 시스템들, 이를테면 동적 랜덤 액세스 메모리("DRAM") 또는 정적 랜덤 액세스 메모리("SRAM") 디바이스들, 비휘발성 메모리 시스템들, 이를테면 저항성 랜덤 액세스 메모리("ReRAM"), 전기적으로 소거가능 프로그램가능 판독 전용 메모리("EEPROM"), 플래시 메모리(이는 EEPROM의 서브세트로 또한 간주될 수 있음), 강유전성 랜덤 액세스 메모리("FRAM"), 및 자기저항성 랜덤 액세스 메모리("MRAM"), 그리고 정보를 저장할 수 있는 다른 반도체 엘리먼트들을 포함할 수 있다. 각각의 유형의 메모리 시스템은 상이한 구성들을 가질 수 있다. 예를 들어, 플래시 메모리 시스템들은 NAND 또는 NOR 구성으로 구성될 수 있다.
메모리 시스템들은 수동 및/또는 능동 엘리먼트들로부터, 임의의 조합들로 형성될 수 있다. 비제한적 예로, 수동 반도체 메모리 엘리먼트들은 ReRAM 디바이스 엘리먼트들을 포함하는데, 이 엘리먼트들은 일부 실시예들에서 비저항 스위칭 저장 엘리먼트, 이를테면 안티퓨즈, 상변화 재료 등을 포함하고, 옵션적으로는 조향(steering) 엘리먼트, 이를테면 다이오드 등을 포함한다. 추가로 비제한적 예로서, 능동 반도체 메모리 엘리먼트들은 EEPROM 및 플래시 메모리 시스템 엘리먼트들을 포함하는데, 이들 엘리먼트들은 일부 실시예들에서, 전하 저장 지역, 이를테면 플로팅 게이트, 도전성 나노입자들, 또는 전하 저장 유전체 재료를 포함하는 엘리먼트들을 포함한다.
다수의 메모리 엘리먼트들은 그것들이 직렬로 접속되도록 또는 각각의 엘리먼트가 개별적으로 액세스 가능하도록 구성될 수 있다. 비제한적 예로, NAND 구성의 플래시 메모리 시스템들(NAND 메모리)은 직렬로 접속된 메모리 엘리먼트들을 통상적으로 포함한다. NAND 메모리 어레이가 메모리의 다수의 스트링들로 구성되고 그 스트링이 단일 비트 라인을 공유하는 다수의 메모리 엘리먼트들로 이루어지고 그룹으로서 액세스되도록 그 어레이는 구성될 수 있다. 대안적으로, 메모리 엘리먼트들은 각각의 엘리먼트가 개별적으로 액세스 가능하도록, 예컨대, NOR 메모리 어레이로 구성될 수 있다. NAND 및 NOR 메모리 구성들은 예시적이고, 메모리 엘리먼트들은 달리 구성될 수 있다.
기판 내에 및/또는 그 위에 위치된 반도체 메모리 엘리먼트들은 2차원 메모리 구조 또는 3차원 메모리 구조와 같은 2차원 또는 3차원으로 배열될 수 있다.
2차원 메모리 구조에서, 반도체 메모리 엘리먼트들은 단일 평면 또는 단일 메모리 시스템 레벨에서 배열된다. 통상적으로, 2차원 메모리 구조에서, 메모리 엘리먼트들은 메모리 엘리먼트들을 지지하는 기판의 주 표면에 실질적으로 평행하게 연장하는 평면에 (예컨대, x-z 방향 평면에) 배열된다. 기판은 메모리 엘리먼트들의 층이 그 위에 또는 그 내에 형성되는 웨이퍼일 수 있거나 또는 메모리 엘리먼트들이 형성된 후에 그 메모리 엘리먼트들에 부착되는 캐리어 기판일 수 있다. 비제한적 예로서, 기판은 실리콘과 같은 반도체를 포함할 수 있다.
메모리 엘리먼트들은 단일 메모리 시스템 레벨에서 순서화된 어레이로, 이를테면 복수의 행들 및/또는 열들로 배열될 수 있다. 그러나, 메모리 엘리먼트들은 비정규(non-regular) 또는 비-직교 구성들로 배열될 수 있다. 메모리 엘리먼트들은 각각이 둘 이상의 전극들 또는 접촉 라인들, 이를테면 비트 라인들 및 워드 라인들을 가질 수 있다.
3차원 메모리 어레이가 메모리 엘리먼트들이 다수의 평면들 또는 다수의 메모리 시스템 레벨들을 점유하도록 배열됨으로써, 구조를 3차원으로 (즉, x, y 및 z 방향들로이고, 여기서 y 방향은 기판의 주 표면에 실질적으로 수직이고 x 및 z 방향들은 실질적으로 평행함) 형성한다.
비제한적 예로서, 3차원 메모리 구조는 다수의 2차원 메모리 시스템 레벨들의 스택으로서 수직으로 배열될 수 있다. 다른 비제한적 예로서, 3차원 메모리 어레이가, 각각의 열이 각각의 열에서 다수의 메모리 엘리먼트들을 가지고서, 다수의 수직 열들(예컨대, 기판의 주 표면에 실질적으로 수직으로, 즉 y 방향으로 연장하는 열들)로서 배열될 수 있다. 그 열들은 2차원 구성으로, 예컨대, x-z 평면에서 배열되어, 다수의 수직 스택형 메모리 평면들 상에 엘리먼트들을 갖는 메모리 엘리먼트들의 3차원 배열을 초래할 수 있다. 세 개의 차원들에서의 메모리 엘리먼트들의 다른 구성들은 3차원 메모리 어레이를 또한 구성할 수 있다.
비제한적 예로, 3차원 NAND 메모리 어레이에서, 메모리 엘리먼트들은 단일 수평(예컨대, x-z) 메모리 시스템 레벨들 내에서 NAND 스트링을 형성하도록 함께 커플링될 수 있다. 대안적으로, 메모리 엘리먼트들은 다수의 수평 메모리 시스템 레벨들을 가로지르는 수직 NAND 스트링을 형성하도록 함께 커플링될 수 있다. 일부 NAND 스트링들이 단일 메모리 레벨에서 메모리 엘리먼트들을 포함하면서 다른 스트링들이 다수의 메모리 레벨들을 통해 걸쳐 있는 메모리 엘리먼트들을 포함하는 다른 3차원 구성들이 상상될 수 있다. 3차원 메모리 어레이들은 NOR 구성으로 그리고 ReRAM 구성으로 또한 설계될 수 있다.
통상적으로, 모놀리식 3차원 메모리 어레이에서, 하나 이상의 메모리 시스템 레벨들이 단일 기판 위에 형성된다. 옵션적으로, 모놀리식 3차원 메모리 어레이는 적어도 부분적으로 단일 기판 내에 하나 이상의 메모리 층들을 또한 가질 수 있다. 비제한적 예로서, 기판은 실리콘과 같은 반도체를 포함할 수 있다. 모놀리식 3차원 어레이에서, 어레이의 각각의 메모리 시스템 레벨을 구성하는 층들은 어레이의 기저(underlying) 메모리 시스템 레벨들의 층들 상에 통상적으로 형성된다. 그러나, 모놀리식 3차원 메모리 어레이의 인접한 메모리 시스템 레벨들의 층들은 메모리 시스템 레벨들 사이에 개재 층들을 공유하거나 또는 가질 수 있다.
그 다음에 다시, 2차원 어레이들이 따로따로 형성된 다음 다수의 메모리 층들을 갖는 비-모놀리식 메모리 시스템을 형성하도록 함께 패키징될 수 있다. 예를 들어, 비-모놀리식 스택형 메모리들은 별개의 기판들 상에 메모리 레벨들을 형성한 다음 서로의 위에 메모리 레벨들을 적층함으로써 구성될 수 있다. 기판들은 스태킹 전에 메모리 시스템 레벨들로부터 제거되거나 또는 박형화될 수 있지만, 메모리 시스템 레벨들이 처음에 별개의 기판들 위에 형성되므로, 결과적인 메모리 어레이들은 모놀리식 3차원 메모리 어레이들이 아니다. 게다가, 다수의 2차원 메모리 어레이들 또는 3차원 메모리 어레이들(모놀리식 또는 비-모놀리식)이 별개의 칩들 상에 형성된 다음 스택형 칩 메모리 시스템을 형성하도록 함께 패키징될 수 있다.
연관된 회로부가 메모리 엘리먼트들의 동작을 위해 그리고 메모리 엘리먼트들과의 통신을 위해 통상적으로 요구된다. 비제한적 예들로서, 메모리 시스템들은 프로그래밍 및 판독과 같은 기능들을 완수하기 위해 메모리 엘리먼트들을 제어하고 구동하는데 사용되는 회로부를 가질 수 있다. 이 연관된 회로부는 메모리 엘리먼트들과는 동일한 기판 상에 그리고/또는 별도의 기판 상에 있을 수 있다. 예를 들어, 메모리 판독-기입 동작들을 위한 제어기가 메모리 엘리먼트들과는 별도의 제어기 칩 상에 그리고/또는 동일한 기판 상에 위치될 수 있다.
본 기술분야의 통상의 기술자는, 본 발명이 설명되는 2차원 및 3차원의 예시적 구조들로 제한되지 않고 본 명세서에서 설명되는 바와 같은 그리고 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같은 본 발명의 정신 및 범위 내의 모든 관련 메모리 구조들을 커버한다는 것을 인식할 것이다.
전술한 상세한 설명은 본 발명의 정의로서가 아니라 본 발명이 취할 수 있는 선택된 형태들의 예시로서 이해되는 것이 의도된다. 청구된 발명의 범위를 정의하도록 의도되는 것은 모든 동등물들을 포함하는 다음의 청구항들만이다. 마지막으로, 본 명세서에서 설명되는 임의의 바람직한 실시예들 중 실시예의 임의의 양태는 단독으로 또는 서로 조합하여 사용될 수 있다는 것에 주의해야 한다.

Claims (21)

  1. 저장 디바이스를 동작시키는 방법으로서,
    상기 저장 디바이스 내의 메모리의 구역(section of memory)에서 프로그램 방해(program disturb)의 표시를 결정하는 단계;
    상기 표시에 기초하여, 상기 메모리의 구역을 프로그래밍하기 위한 조정된 프로그래밍 전압 - 상기 조정된 프로그래밍 전압은 상기 메모리의 구역 내의 검출가능 프로그램 방해의 부재 시의 프로그래밍 전압과는 상이함 - 을 결정하는 단계;
    결정되는 조정된 프로그래밍 전압에 기초하여 상기 메모리의 구역에 데이터를 프로그래밍하는 단계; 및
    상기 메모리의 구역에 프로그래밍된 상기 데이터의 일부 또는 전부를 판독하라는 커맨드에 응답하여, 상기 결정되는 조정된 프로그래밍 전압에 기초하여 조정된 판독 전압을 사용하여, 상기 메모리의 구역으로부터 상기 데이터를 판독하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 프로그램 방해의 표시를 결정하는 단계는, 각각의 메모리의 구역들과 각각의 프로그램 방해의 표시들을 상관시키는 테이블에 액세스하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 상기 테이블은 각각의 메모리 다이의 각각의 블록 내의 각각의 워드라인 그룹들과 상기 각각의 프로그램 방해의 표시들을 상관시키는 엔트리들을 포함하는, 방법.
  4. 제1항에 있어서, 상기 프로그램 방해의 표시는 오프셋 전압을 포함하고, 상기 오프셋 전압은 상기 메모리의 구역 내의 상기 검출가능 프로그램 방해의 부재 시의 상기 프로그래밍 전압에 대한 오프셋을 포함하고;
    상기 메모리의 구역을 프로그래밍하기 위한 상기 조정된 프로그래밍 전압을 결정하는 단계는, 상기 오프셋 전압을 상기 프로그래밍 전압에 가산하는 단계를 포함하는, 방법.
  5. 제1항에 있어서, 상기 프로그램 방해의 표시는 상기 메모리의 구역에서의 하나 이상의 셀에 대한 소거 상태의 분석에 기초하는, 방법.
  6. 제5항에 있어서, 상기 프로그램 방해의 표시를 결정하는 단계는,
    상기 소거 상태에서의 워드라인의 셀들에서 미리 결정된 임계값보다 더 큰 비트들의 수를 카운팅(counting)하는 단계;
    상기 미리 결정된 임계값보다 더 큰 상기 비트들의 수에 기초하여, 상기 프로그램 방해의 표시를 결정하는 단계를 포함하는, 방법.
  7. 제6항에 있어서, 상기 워드라인은 데이터의 다수의 비트들을 저장하기 위한 셀들을 포함하고, 상기 데이터의 다수의 비트들은 복수의 상태들에 의해 표현되고;
    상기 조정된 프로그래밍 전압은 상기 복수의 상태들 중 적어도 하나의 상태에 대한 프로그램 검증 전압 레벨들을 조정하기 위한 조정된 프로그램 검증 전압 레벨들을 포함하는, 방법.
  8. 제7항에 있어서, 상기 조정된 프로그래밍 전압은 상기 소거 상태를 제외한 상기 복수의 상태들 전부에 대한 프로그램 검증 전압 레벨들을 조정하기 위한 상기 조정된 프로그램 검증 전압 레벨들을 포함하는, 방법.
  9. 제1항에 있어서, 상기 메모리의 구역에 프로그래밍된 상기 데이터의 일부 또는 전부를 판독하라는 상기 커맨드의 수신에 응답하여, 테이블로부터 상기 결정되는 조정된 프로그래밍 전압에 액세스하는 단계를 더 포함하는, 방법.
  10. 제9항에 있어서, 상기 메모리의 구역은 워드라인을 포함하고, 상기 워드라인은 데이터의 다수의 비트들을 저장하기 위한 셀들을 포함하며, 상기 데이터의 다수의 비트들은 복수의 상태들에 의해 표현되고;
    상기 결정되는 조정된 프로그래밍 전압은, 소거 상태를 제외한 상기 복수의 상태들 각각에 대해 상기 데이터가 프로그래밍되었던 전압들을 나타내는 조정된 프로그램 검증 전압 레벨들을 포함하는, 방법.
  11. 제10항에 있어서, 상기 프로그래밍 전압이 조정되지 않을 것이라고 결정하는 상기 소거 상태의 상기 분석에 응답하여, 상기 판독 전압은 조정되지 않고 디폴트 판독 전압이 사용되고;
    상기 프로그래밍 전압이 조정될 것이라고 결정하는 상기 소거 상태의 분석에 응답하여, 상기 판독 전압은 상기 소거 상태의 상기 분석에 따른 프로그램 검증 전압 조정의 양에 기초하여 상기 디폴트 판독 전압으로부터 조정되는, 방법.
  12. 저장 디바이스로서,
    상기 저장 디바이스 내의 워드라인의 적어도 일부의 소거 상태를 분석하여 상기 워드라인의 상기 적어도 일부의 프로그램 방해의 표시를 결정하도록 구성되는 소거 상태 분석 회로부;
    결정된 프로그램 방해의 표시에 기초하여 상기 워드라인의 프로그래밍을 조정하도록 구성되는 프로그래밍 조정 회로부;
    조정된 프로그래밍에 기초하여 상기 워드라인을 프로그래밍하도록 구성되는 프로그래밍 회로부; 및
    결정되는 조정된 프로그래밍 전압에 기초하여 조정된 판독 전압을 사용하여 판독하도록 구성되는 판독 회로부
    를 포함하는 저장 디바이스.
  13. 제12항에 있어서, 상기 소거 상태 분석 회로부는,
    상기 소거 상태에서의 상기 워드라인의 셀들에서 미리 결정된 임계값보다 더 큰 비트들의 수를 카운트하고; 그리고
    상기 미리 결정된 임계값보다 더 큰 상기 비트들의 수에 기초하여, 상기 프로그램 방해의 표시를 결정하도록 구성되는, 저장 디바이스.
  14. 제13항에 있어서, 상기 워드라인은 데이터의 다수의 비트들을 저장하기 위한 셀들을 포함하고, 상기 데이터의 다수의 비트들은 복수의 상태들에 의해 표현되고;
    상기 조정된 프로그래밍은 상기 복수의 상태들 중 적어도 하나의 상태에 대한 프로그램 검증 전압 레벨들을 조정하기 위한 조정된 프로그램 검증 전압 레벨들을 포함하는, 저장 디바이스.
  15. 제14항에 있어서, 상기 조정된 프로그래밍은 상기 소거 상태를 제외한 상기 복수의 상태들 전부에 대한 프로그램 검증 전압 레벨들을 조정하기 위한 상기 조정된 프로그램 검증 전압 레벨들을 포함하는, 저장 디바이스.
  16. 제15항에 있어서, 상기 판독 회로부는 상기 조정된 프로그래밍 검증 전압 레벨들에 기초하여 조정된 상기 판독 전압을 사용하여 판독하도록 구성되는, 저장 디바이스.
  17. 저장 디바이스로서,
    메모리; 및
    상기 메모리와 통신하는 제어기
    를 포함하며, 상기 제어기는,
    상기 메모리의 구역에 대한 프로그램 방해를 결정하고;
    결정된 프로그램 방해에 기초하여 상기 메모리의 상기 구역의 프로그래밍을 조정하고;
    조정된 프로그래밍을 사용하여, 상기 메모리의 상기 구역에 데이터를 프로그래밍하고; 그리고
    상기 조정된 프로그래밍에 기초한 판독 전압을 사용하여, 상기 메모리의 상기 구역으로부터 상기 데이터를 판독
    하도록 구성되는, 저장 디바이스.
  18. 제17항에 있어서, 상기 프로세서는 테이블에 액세스함으로써 상기 메모리의 구역에 대한 상기 프로그램 방해를 결정하도록 구성되며, 상기 테이블은 상기 프로그램 방해에 대한 메모리의 상기 구역의 이전의 분석을 나타내는, 저장 디바이스.
  19. 제17항에 있어서, 상기 프로세서는 상기 메모리의 구역에 대한 상기 프로그램 방해를 메모리의 상기 구역의 상태를 분석함으로써 결정하도록 구성되는, 저장 디바이스.
  20. 제19항에 있어서, 상기 상태는 메모리의 상기 구역에서의 하나 이상의 셀의 소거 상태를 포함하는, 저장 디바이스.
  21. 제19항에 있어서, 상기 프로세서는 메모리의 상기 구역의 상태를 미리 결정된 전압에 대해 비교함으로써 메모리의 상기 구역의 상태를 분석하도록 구성되고;
    상기 프로세서는 상기 비교에 기초하여 상기 메모리의 상기 구역의 프로그래밍을 조정하도록 구성되는, 저장 디바이스.
KR1020187017663A 2016-03-29 2017-02-22 저장 디바이스의 프로그래밍 전의 소거 검출을 위한 시스템 및 방법 KR20180087322A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/084,100 2016-03-29
US15/084,100 US9792998B1 (en) 2016-03-29 2016-03-29 System and method for erase detection before programming of a storage device
PCT/US2017/018806 WO2017172118A1 (en) 2016-03-29 2017-02-22 System and method for erase detection before programming of a storage device

Publications (1)

Publication Number Publication Date
KR20180087322A true KR20180087322A (ko) 2018-08-01

Family

ID=58213367

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187017663A KR20180087322A (ko) 2016-03-29 2017-02-22 저장 디바이스의 프로그래밍 전의 소거 검출을 위한 시스템 및 방법

Country Status (4)

Country Link
US (1) US9792998B1 (ko)
KR (1) KR20180087322A (ko)
CN (1) CN108475530B (ko)
WO (1) WO2017172118A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200132671A (ko) * 2019-05-16 2020-11-25 샌디스크 테크놀로지스 엘엘씨 메모리 셀의 잘못된 형상 완화
US11373709B2 (en) 2020-02-26 2022-06-28 SK Hynix Inc. Memory system for performing a read operation and an operating method thereof
US11380402B2 (en) 2020-02-05 2022-07-05 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
CN107341071A (zh) * 2013-08-23 2017-11-10 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10395723B2 (en) * 2017-03-07 2019-08-27 Toshiba Memory Corporation Memory system that differentiates voltages applied to word lines
WO2018174857A1 (en) * 2017-03-21 2018-09-27 Micron Technology, Inc. Apparatuses and methods for automated dynamic word line start voltage
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10705900B2 (en) 2018-02-02 2020-07-07 Western Digital Technologies, Inc. Program verify adaptation for flash memory
KR102592796B1 (ko) * 2018-04-27 2023-10-25 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10446254B1 (en) * 2018-05-03 2019-10-15 Western Digital Technologies, Inc. Method for maximizing power efficiency in memory interface block
KR102565913B1 (ko) * 2018-06-12 2023-08-11 에스케이하이닉스 주식회사 저장 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 이의 동작 방법
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10679708B2 (en) 2018-09-17 2020-06-09 Western Digital Technologies, Inc. Pre-program read to counter wordline failures
US10705966B1 (en) 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
US10748606B2 (en) * 2018-12-14 2020-08-18 Western Digital Technologies, Inc. Multi-state programming for memory devices
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11132303B2 (en) * 2020-02-04 2021-09-28 Micron Technology, Inc. Memory sub-system management of firmware block record and device block record
US11361830B2 (en) * 2020-03-18 2022-06-14 Micron Technology, Inc. Adjusting read voltage levels based on a programmed bit count in a memory sub-system
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11662941B2 (en) 2020-10-13 2023-05-30 Western Digital Technologies, Inc. System and method for mitigating effect of erase cells on adjacent cells
US11521688B2 (en) * 2020-10-21 2022-12-06 Western Digital Technologies, Inc. Power reduction during open and erased block reads of memory based on the position of last written word line of a memory block
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11656936B2 (en) * 2021-09-07 2023-05-23 Micron Technology, Inc. Managing write disturb for units of memory in a memory sub-system
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11756637B2 (en) 2021-11-24 2023-09-12 Western Digital Technologies, Inc. Block erase type detection using bit count check

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100851853B1 (ko) * 2006-11-22 2008-08-13 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 및 프로그램 검증방법
US7817467B2 (en) * 2007-09-07 2010-10-19 Micron Technology, Inc. Memory controller self-calibration for removing systemic influence
US7916543B2 (en) * 2007-10-22 2011-03-29 Micron Technology, Inc. Memory cell operation
US8094502B1 (en) * 2008-04-09 2012-01-10 Link—A—Media Devices Corporation Write-precompensation and variable write backoff
US7808819B2 (en) * 2008-04-29 2010-10-05 Sandisk Il Ltd. Method for adaptive setting of state voltage levels in non-volatile memory
KR101434403B1 (ko) * 2008-05-15 2014-08-27 삼성전자주식회사 플래시 메모리 장치, 그것의 프로그램 방법, 그리고 그것을포함하는 메모리 시스템
KR101534274B1 (ko) * 2009-02-25 2015-07-06 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
US8819503B2 (en) 2010-07-02 2014-08-26 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8248856B2 (en) * 2010-10-20 2012-08-21 Seagate Technology Llc Predictive read channel configuration
DE102011056141A1 (de) * 2010-12-20 2012-06-21 Samsung Electronics Co., Ltd. Negativspannungsgenerator, Dekoder, nicht-flüchtige Speichervorrichtung und Speichersystem, das eine negative Spannung verwendet
US9007832B2 (en) * 2011-03-03 2015-04-14 Micron Technology, Inc. Methods for programming a memory device and memory devices
US8484519B2 (en) * 2011-08-19 2013-07-09 Stec, Inc. Optimal programming levels for LDPC
US9047210B2 (en) * 2011-09-15 2015-06-02 Sandisk Technologies Inc. Data storage device and method to correct bit values using multiple read voltages
US9142315B2 (en) 2012-07-25 2015-09-22 Freescale Semiconductor, Inc. Methods and systems for adjusting NVM cell bias conditions for read/verify operations to compensate for performance degradation
US9063879B2 (en) 2012-12-13 2015-06-23 Sandisk Technologies Inc. Inspection of non-volatile memory for disturb effects
US9105360B2 (en) * 2013-03-07 2015-08-11 Seagate Technology Llc Forming a characterization parameter of a resistive memory element
US9224450B2 (en) * 2013-05-08 2015-12-29 International Business Machines Corporation Reference voltage modification in a memory device
KR20150020478A (ko) * 2013-08-16 2015-02-26 삼성전자주식회사 비휘발성 메모리 장치의 독출 방법
US9471486B2 (en) 2014-07-07 2016-10-18 Sandisk Technologies Llc Reducing disturbances in memory cells

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200132671A (ko) * 2019-05-16 2020-11-25 샌디스크 테크놀로지스 엘엘씨 메모리 셀의 잘못된 형상 완화
US11398285B2 (en) 2019-05-16 2022-07-26 Sandisk Technologies Llc Memory cell mis-shape mitigation
US11380402B2 (en) 2020-02-05 2022-07-05 SK Hynix Inc. Memory system and operating method thereof
US11373709B2 (en) 2020-02-26 2022-06-28 SK Hynix Inc. Memory system for performing a read operation and an operating method thereof

Also Published As

Publication number Publication date
WO2017172118A1 (en) 2017-10-05
CN108475530B (zh) 2020-03-31
CN108475530A (zh) 2018-08-31
US20170287568A1 (en) 2017-10-05
US9792998B1 (en) 2017-10-17

Similar Documents

Publication Publication Date Title
CN108475530B (zh) 用于在储存体装置的编程之前进行擦除检测的系统和方法
US11288149B2 (en) Flash memory block retirement policy
US10090044B2 (en) System and method for burst programming directly to MLC memory
US10223018B2 (en) Bad page and bad block management in memory
US11722323B2 (en) Physical unclonable function with NAND memory array
US20160343449A1 (en) Read disturb detection in open blocks
US9691485B1 (en) Storage system and method for marginal write-abort detection using a memory parameter change
KR102362767B1 (ko) 정정 불가능 ecc
KR102411922B1 (ko) 메모리 셀의 잘못된 형상 완화
US10535411B2 (en) System and method for string-based erase verify to create partial good blocks
US9865360B2 (en) Burn-in memory testing
US9753657B2 (en) Dynamic reconditioning of charge trapped based memory
US20210407600A1 (en) Memory device error detection with improved scanning
US11705201B2 (en) Log data storage for flash memory
CN111292792A (zh) 3d存储器中的晶体管阈值电压维持
US10269439B2 (en) Post write erase conditioning
CN111798910A (zh) 存储装置及其操作方法
WO2019089350A1 (en) Nand flash thermal alerting
KR20200122407A (ko) Nand 데이터 배치 스키마
CN112074816A (zh) Nand数据放置模式的集群奇偶校验
US20160125960A1 (en) System and method for write abort detection
US10714169B1 (en) System and method for programming non-volatile memory during burst sequential write

Legal Events

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