KR101565564B1 - 비휘발성 저장장치를 위한 데이터 리프레시 - Google Patents

비휘발성 저장장치를 위한 데이터 리프레시 Download PDF

Info

Publication number
KR101565564B1
KR101565564B1 KR1020117016629A KR20117016629A KR101565564B1 KR 101565564 B1 KR101565564 B1 KR 101565564B1 KR 1020117016629 A KR1020117016629 A KR 1020117016629A KR 20117016629 A KR20117016629 A KR 20117016629A KR 101565564 B1 KR101565564 B1 KR 101565564B1
Authority
KR
South Korea
Prior art keywords
group
volatile storage
storage elements
data
refresh
Prior art date
Application number
KR1020117016629A
Other languages
English (en)
Other versions
KR20110106378A (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 KR20110106378A publication Critical patent/KR20110106378A/ko
Application granted granted Critical
Publication of KR101565564B1 publication Critical patent/KR101565564B1/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
    • 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

Landscapes

  • Read Only Memory (AREA)

Abstract

비휘발성 저장 디바이스 내의 데이터를, 에러있는 또는 손상된 데이터 비트들에 대처(combat)할만큼 충분히 자주(그러나 메모리 액세스를 방해하거나 메모리 셀들에 과도한 스트레스를 야기할 정도로 자주는 아님) 리프레시하는 기법들이 개시된다. 일 실시예는 제1 그룹의 데이터의 상태(condition)에 근거하여 디바이스 내의 비휘발성 저장 소자들의 제1 그룹에 저장된 데이터의 리프레시를 수행할 것을 결정하는 단계, 상기 제1 그룹의 비휘발성 저장 소자들의 최종 프로그래밍된 때와 대비하여 제2 그룹의 비휘발성 저장 소자들이 언제 최종 프로그래밍되었는지에 근거하여 상기 디바이스 내의 상기 제2 그룹의 비휘발성 저장 소자들이 리프레시 과정을 거쳐야하는지를 결정하는 단계, 그리고 상기 제2 그룹의 비휘발성 저장 소자들에 대해 리프레시 과정을 수행하는 단계를 포함한다.

Description

비휘발성 저장장치를 위한 데이터 리프레시{DATA REFRESH FOR NON-VOLATILE STORAGE}
본 발명은 비휘발성 저장장치를 위한 기술에 관한 것이다.
반도체 메모리는 다양한 전자 디바이스들에서 점점 더 보편적으로 사용되고 있다. 예를 들어, 비휘발성 반도체 메모리는 개인용 네비게이션 디바이스들, 셀룰러 전화기, 디지털 카메라, PDA(Personal Digital Assistants), 모바일 컴퓨팅 디바이스, 논-모바일 컴퓨팅 디바이스 및 다른 디바이스들에서 사용되고 있다. EEPROM(Electrical Erasable Programmable Read Only Memory) 및 플래시 메모리는 가장 보편적인 비휘발성 반도체 메모리들 중 하나이다.
EEPROM 및 플래시 메모리 둘 모두는 반도체 기판에서 채널 영역 위에 위치함과 아울러 채널 영역으로부터 절연되어 있는 플로팅 게이트를 사용한다. 플로팅 게이트와 채널 영역들은 소스 영역과 드레인 영역 사이에 위치한다. 제어 게이트는 플로팅 게이트 위에 제공되고 플로팅 게이트로부터 절연되어 있다. 트랜지스터의 드레시홀드 전압(VTH)은 플로팅 게이트 상에 보유되는 전하의 양에 의해 제어된다. 즉, 트랜지스터의 소스와 드레인 사이가 도통(conduction)될 수 있게하기 위하여 트랜지스터가 턴온(turn on)되기 전에 제어 게이트에 인가되어야만 하는 전압의 최소량이 플로팅 게이트 상의 전하의 레벨에 의해 제어된다.
NAND 플래시 메모리 디바이스와 같은 EEPROM 또는 플래시 메모리 디바이스를 프로그래밍할 때, 일반적으로 프로그램 전압이 제어 게이트에 인가되고 비트 라인이 접지된다. 채널로부터의 전자들이 플로팅 게이트 내부로 주입된다. 전자들이 플로팅 게이트에 축적될 때, 플로팅 게이트는 음으로 충전되고 메모리 셀의 드레시홀드 전압이 상승하여 메모리 셀이 프로그램 상태(programmed state)에 있게 된다. 프로그래밍에 대한 더 많은 정보는 미국 특허 6,859,397 "Source Side Self Boosting Technique for Non-Volatile Momoery", 미국 특허 6,917,542 "Detecting Over Programmed Memory", 및 미국 특허 6,888,758 "Programming Non-Volatile Memory"에서 찾아볼 수 있으며, 상기 세개의 인용된 특허들은 그 전체가 본 명세서에 참조로서 포함된다.
많은 경우에, 프로그램 전압은, 각각의 펄스마다 펄스의 크기가 증가하는 일련의 펄스들(프로그래밍 펄스라 지칭함)로서 제어 게이트에 인가된다. 프로그래밍 펄스들 사이에는, 프로그래밍되는 메모리 셀(들)이 그것들의 타겟 레벨에 도달하였는지 여부를 결정하기 위하여 하나 이상의 검증 동작들의 세트가 수행된다. 메모리 셀이 그것의 타겟 레벨에 도달하였다면, 그 메모리 셀에 대해 프로그래밍이 정지된다. 메모리 셀이 그것의 타겟 레벨에 도달하지 않았다면, 그 메모리 셀에 대해 프로그래밍이 계속될 것이다.
몇몇 EEPROM 및 플래시 메모리 디바이스들은 2개의 전하 범위들을 저장하는데 사용되는 플로팅 게이트를 가지며, 따라서, 메모리 셀이 두 상태들(소거 상태(erased state) 및 프로그램 상태(programmed state) 사이에서 프로그램/소거 될 수 있다. 그러한 프래시 메모리 디바이스는 종종 바이너리 메모리 디바이스라고 지칭된다.
복수-상태 메모리 디바이스는 복수의 서로 구분되는(distinct) 유효 드레시홀드 전압(Vt) 분포들(또는 데이터 상태들)을 식별함으로써 메모리 셀 마다 복수의 데이터 비트들을 저장한다. 각각의 서로 구분되는 Vt 분포는 메모리 디바이스 내에 엔코딩된 데이터 비트들의 세트에 대한 소정 값(predetermined value)에 대응한다. 예를 들어, 2 비트의 데이터를 저장하는 메모리 셀은 4개의 유효(valid) Vt 분포들을 사용한다. 3 비트의 데이터를 저장하는 메모리 셀은 8개의 유효 Vt 분포들을 사용한다.
일단 비휘발성 저장 소자가 프로그래밍되면, 그것의 프로그래밍 상태가 고도의 신뢰성을 가지고 판독(read back)될 수 있는 것이 중요하다. 그러나, 노이즈 및 시간이 경과함에 따라 전하 중성(charge neutrality)으로 향해가려는 디바이스들의 경향(tendency)을 포함하는 요인들로 인하여, 감지된 프로그래밍 상태가 때때로 의도된 프로그래밍 상태와 다를 수 있다. 온도와 같은 환경적 요인들은 프로그래밍 상태들이 변하는 속도(rate)에 영향을 준다. 예를 들어, 고온에 노출하는 것은 메모리 셀들이 매우 빠르게 전하 중성으로 향해가게 한다.
결과적으로, 비휘발성 메모리를 판독할 때 에러있는(erroneous) 또는 손상된(corrupted) 데이터를 만나게될 수 있다. 일반적으로, 임의의 손상된 데이터 비트들을 검사하고 정정하기 위하여 몇가지 방식의 에러 검사 및 정정 알고리즘("정정 알고리즘")이 적용된다. 한가지 일반적인 정정 알고리즘은 기록 프로세스 동안에 데이터 비트 그룹의 패리티(parity)를 요구되는 논리 레벨로 설정하기 위하여 추가적인 패리티 비트들을 저장한다. 상기 추가적인 패리티 비트들은 때때로 에러 정정 코드(ECC)라고 지칭된다. 판독 프로세스 동안, 정정 알고리즘은, 임의의 손상된 데이터를 검출하기 위하여 데이터 비트들의 그룹의 패리티를 계산함으로써 상기 비트들을 디코딩한다. 정정 알고리즘은 너무 심각하게 손상되지는 않은 데이터를 정정한다. 일부 구현예에서, 더 많이 손상된 데이터일 수록, 정정 알고리즘이 상기 데이터를 정정하는데 걸리는 시간이 더 길어진다.
데이터가 손상되는 것을 방지하기 위하여, 메모리 셀들 내의 데이터는 리프레시될 수 있으며, 이는 상기 데이터를 요구되는 드레시홀드 전압들로 복귀시킨다. 메모리 셀들의 블록 내의 데이터를 리프레시하는 것은 종종 데이터를 판독하고, 정정 알고리즘에 의해 검출된 임의의 에러들을 정정하고, 웨어 레벨링(wear leveling)을 포함하는 기법의 일부로서 다른 블록에 상기 데이터를 기록하는 것에 의해 달성된다. 그러나, 필요하다면, 데이터는 동일한 블록에 재기록(rewritten)될 수 있다. 데이터를 너무 자주 리프레시하는 것은 메모리 셀들을 오버스트레스할 수 있으므로, 바람직하지 않다. 또한, 데이터의 리프레시는 사용자 고유의 메모리 액세스를 방해(interfere)할 수 있다.
따라서, 한편으로는, 데이터가 충분하게 자주 리프레시되지 않는다면, 데이터가 손실되거나 또는 정정 알고리즘이 상기 데이터를 정정하는것이 더 오래 걸리므로 메모리 액세스가 느려질 수 있다. 반면, 데이터가 너무 자주 리프레시된다면, 메모리 디바이스가 오버스트레스되거나 사용자의 메모리 액세스가 방해받을 수 있다.
더욱이, 메모리 디바이스가 광범위한 온도 조건과 같은 다양한 환경 조건들에 노출될 수 있을 때, 언제 데이터를 리프레시할지를 결정하는 것은 특히 도전과제이다. 예를 들어, 메모리 디바이스는 개인용 내비게이션 디바이스에 내장될 수 있으며, 상기 내비게이션 디바이스는 주차된 자동차에 남겨질 수 있다. 여름철 동안, 자동차 내의 온도는 매우 높은 온도로 상승할 수 있다. 반면, 메모리 디바이스는 높은 온도에 노출되지 않은채 장시간 있을 수 있다. 따라서, 온도와 같은 환경적 조건들이 데이터 리텐션(data retention)에 미치는 영향을 예측하는 것은 매우 어려울 수 있다.
비휘발성 저장 디바이스 내의 데이터를, 에러있는 또는 손상된 데이터 비트들에 대처(combat)할만큼 충분히 자주(그러나 메모리 액세스를 방해하거나 메모리 셀들에 과도한 스트레스를 야기할 정도로 자주는 아님) 리프레시하는 기법들이 개시된다. 본 기법들은 광범위한 온도와 같은 다양한 환경 조건들에 노출될 수 있는 메모리 디바이스들에 아주 적합한 것이다.
일 실시예는 제1 그룹의 데이터의 상태(condition)에 근거하여 디바이스 내의 비휘발성 저장 소자들의 제1 그룹에 저장된 데이터의 리프레시를 수행할 것을 결정하는 단계, 상기 제1 그룹의 비휘발성 저장 소자들의 최종 프로그래밍된 때와 대비하여 제2 그룹의 비휘발성 저장 소자들이 언제 최종 프로그래밍되었는지에 근거하여 상기 디바이스 내의 상기 제2 그룹의 비휘발성 저장 소자들이 리프레시 과정을 거쳐야하는지를 결정하는 단계, 그리고 상기 제2 그룹의 비휘발성 저장 소자들에 대해 리프레시 과정을 수행하는 단계를 포함한다.
일 실시예는 복수-상태 비휘발성 저장 소자들의 세트에 데이터를 기록하는 단계, 제1 그룹의 하나 이상의 비휘발성 저장 소자들의 상태에 근거하여 상기 세트 내의 제1 그룹의 비휘발성 저장 소자들에 저장된 데이터가 리프레시되어야 하는지를 결정하는 단계, 상기 제1 그룹에 저장된 데이터가 리프레시되어야 하는것으로 결정된다면 상기 세트에서 어떤 비휘발성 저장 소자들이 상기 제1 그룹의 비휘발성 저장 소자들보다 먼저 기록되었는지를 결정하는 단계, 그리고 상기 제1 그룹보다 먼저 기록된 비휘발성 저장 소자들이 리프레시 과정을 거쳐야함을 결정하는 단계를 포함한다.
일 실시예는 비휘발성 저장 소자들의 블록들로 조직된 복수-상태 메모리 디바이스를 동작시키는 방법이다. 상기 방법은 상기 블록들 중 제1 블록의 하나 이상의 비휘발성 저장 소자들에 데이터 무결성 문제가 있는지를 결정하는 단계, 상기 디바이스내의 블록들 중 어느 블록들이 상기 제1 블록보다 먼저 기록되었는지를 결정하는 단계, 그리고 상기 제1 블록보다 먼저 기록된 블록들의 비휘발성 저장 소자들에 데이터 무결성 문제가 있는지를 결정함이 없이 상기 제1 블록보다 먼저 기록된 블록 들 및 상기 제1 블록에 저장된 데이터를 리프레시하는 단계를 포함한다.
일 예시적인 실시예는 비휘발성 저장 소자들의 세트 및 상기 비휘발성 저장 소자들과 통신하는 하나 이상의 관리 회로들을 포함한다. 상기 하나 이상의 관리 회로들은 상술한 프로세스들을 수행한다.
도 1은 NAND 스트링의 평면도이다.
도 2는 NAND 스트링의 등가 회로도이다.
도 3은 비휘발성 메모리 시스템의 블록도이다.
도 4는 메모리 어레이의 일 실시예를 도시하는 블록도이다.
도 5는 감지 블록의 일 실시예를 도시하는 블록도이다.
도 6a는 Vt 분포의 예시적인 세트를 도시한다.
도 6b는 Vt 분포의 예시적인 세트를 도시한다.
도 7은 본 발명의 실시예들에 따른 저장 장치가 내장될 수 있는 예시적인 모바일 디바이스이다.
도 8은 어떤 블록들이 리프레시된 데이터를 가져야 하는지를 결정하는 프로세스의 일 실시예이다.
도 9a는 메모리 어레이 블록 내에 저장되는 데이터를 리프레시하는 프로세스의 일 실시예를 도시하는 흐름도이다.
도 9b는 비휘발성 메모리를 프로그래밍하기 위한 프로세스의 일 실시예를 도시하는 흐름도이다.
도 10a는 블록에 데이터 무결성 문제가 있는지를 결정하는 프로세스의 일 실시예를 도시하는 흐름도이다.
도 10b는 정정 알고리즘에 의해 얼마나 많은 비트들이 정정되어야 하는지에 근거하여 데이터 리프레시가 필요한지 여부를 결정하는 프로세스의 일 실시예이다.
도 10c는 정정 알고리즘이 수렴을 위해 얼마나 오래 걸리는지에 근거하여 데이터 리프레시가 필요한지 여부를 결정하는 프로세스의 일 실시예이다.
도 11은 예시적인 분포 함수를 도시한다.
도 12는 데이터 리프레시가 필요한지 여부를 결정하기 위한 값들을 저장하는 테이블의 일 실시예를 도시한다.
도 13a는 리프레시 과정을 위한 후보 블록들(candidate blocks)을 식별하는 프로세스의 일 실시예를 도시한다.
도 13b는 리프레시 과정을 위한 후보 블록들을 식별하기 위한 프로세스의 일 실시예를 도시하는 흐름도이다.
도 14는 리프레시 과정을 위한 후보 블록들을 식별하는데 사용되는 순서 번호들을 관리하는 프로세스의 일 실시예를 도시한다.
도 15는 리프레시 과정을 위한 후보 블록들을 선택하는데 사용되는 타임 스탬프들을 관리하는 프로세스의 일 실시예를 도시한다.
도 16은 사용자에게 데이터 리텐션 문제를 경감시키기 위한 동작을 취하도록 경고(warning)하는 프로세스의 일 실시예를 도시한다.
플래시 메모리 시스템의 일 예는 NAND 구조를 사용하는바, 이는 두개의 선택 게이트들 사이에 샌드위치된 복수의 트랜지스터들을 직렬로 배열하는 것을 포함한다. 직렬의 트랜지스터들 및 선택 게이트들은 NAND 스트링이라 칭해진다. 도 1은 하나의 NAND 스트링을 보여 주는 평면도이다. 도 2는 그것의 등가 회로이다. 도 1 및 도 2에 도시된 NAND 스트링은 네 개의 트랜지스터들(100, 102, 104 및 106)을 포함하는데, 이들은 제1(또는 드레인측) 선택 게이트(120)와 제2(또는 소스측) 선택 게이트(122) 사이에서 직렬로 연결되어 있고 그리고 샌드위치되어 있다. 선택 게이트(120)는 비트 라인 컨택(126)을 통해 NAND 스트링을 비트 라인에 연결한다. 선택 게이트(122)는 NAND 스트링을 소스 라인(128)에 연결한다. 선택 게이트(120)는 적절한 전압을 선택 라인(SGD)에 인가함으로써 제어된다. 선택 게이트(122)는 적절한 전압을 선택 라인(SGS)에 인가함으로써 제어된다. 트랜지스터들(100, 102, 104, 106) 각각은 제어 게이트 및 플로팅 게이트를 가진다. 예를 들어, 트랜지스터(100)는 제어 게이트(100CG) 및 플로팅 게이트(100FG)를 가진다. 트랜지스터(102)는 제어 게이트(102CF) 및 플로팅 게이트(102FG)를 가진다. 트랜지스터(104)는 제어 게이트(104CG) 및 플로팅 게이트(104FG)를 가진다. 트랜지스터(106)는 제어 게이트(106CG) 및 플로팅 게이트(106FG)를 가진다. 제어 게이트(100CG)는 워드 라인(WL3)에 연결되고, 제어 게이트(102CG)는 워드 라인(WL2)에 연결되고, 제어 게이트(104CG)는 워드 라인(WL1)에 연결되고, 그리고 제어 게이트(106CG)는 워드 라인(WL0)에 연결된다.
도 1 및 2는 NAND 스트링 내에 4개의 메모리 셀들을 보여주나, 4개의 트랜지스터들을 사용하는 것은 단지 예로서 제공된 것이다. NAND 스트링은 4개보다 더 적은 메모리 셀들을 가지고너 또는 4개보다 더 많은 메모리 셀들을 가질 수 있다. 예를 들어, 일부 NAND 스트링들은 8개의 메모리 셀들, 16개의 메모리 셀들, 32개의 메모리 셀들, 64개의 메모리 셀들, 128개의 메모리 셀들 등을 포함할 것이다. 본 명세서의 내용은 NAND 스트링 내의 임의의 특정 개수의 메모리 셀들에 국한되는 것이 아니다.
NAND 구조를 사용하는 플래시 메모리 시스템에 대한 일반적인 아키텍쳐는 몇개의 NAND 스트링들을 포함할 수 있다. 각각의 NAND 스트링은 선택 라인(SGS)에 의해 제어되는 소스 선택 게이트에 의해 소스 라인에 연결되고, 선택 라인(SGD)에 의해 제어 되는 드레인 선택 게이트에 의해 상기 NAND 스트링의 관련 비트 라인(associated bit line)에 연결된다. 각각의 비트 라인 및 비트 라인 컨택을 통해 그 비트 라인에 연결된 개개의 NAND 스트링(들)은 메모리 셀들의 어레이의 열들(columns)을 구성한다. 복수의 NAND 스트링들이 비트 라인들을 공유한다. 일반적으로, 비트 라인은 워드 라인들에 수직인 방향으로 NAND 스트링들의 상부에서 이어지고, 하나 이상의 감지 증폭기들에 연결된다.
각각의 메모리셀은 (아날로그 또는 디지털) 데이터를 저장할 수 있다. 디지털 데이터의 1 비트를 저장할 때, 상기 메모리셀의 가능한 드레시홀드 전압들의 범위는 두개의 범위들로 나뉘며, 이 두개의 범위에는 논리 데이터(logical data) "1" 및 "0"이 할당된다. NAND-타입 플래시 메모리의 일례에서, 상기 메모리셀이 소거된 후 드레시홀드 전압은 음(negative)의 값이며, 논리(logic) "1"로서 정의된다. 프로그래밍 후 드레시홀드 전압은 양(positive)의 값이며, 논리 "0"으로서 정의된다. 드레시홀드 전압이 음이고 제어 게이트에 0 볼트를 인가함으로써 판독 동작이 시도될 때, 메모리셀이 턴온 되어 로직 "1"이 저장됨을 나타낸다. 드레시홀드 전압이 양이고 제어 게이트에 0 볼트를 인가함으로써 판독 동작이 시도될 때, 메모리셀은 턴온되지 않을 것이며, 이는 논리 "0"이 저장됨을 나타낸다.
복수의 데이터 레벨들을 저장하는 경우에, 가능한 드레시홀드 전압 값의 범위는 데이터의 레벨들의 수로 나뉘어진다. 예를 들어, 만약 4개 레벨의 정보가 저장되면, 데이터 값들 "11", "10", "01", "00"에 할당되는 4개의 드레시홀드 전압 범위들이 존재할 것이다. NAND 타입 메모리의 일 예에서, 소거 동작 후 드레시홀드 전압은 음이며 "11"로서 정의된다. "10", "01", 그리고 "00"의 상태들에 대해 양의 드레시홀드 전압들이 사용된다. 8개의 정보 레벨들(또상태들)이 저장되면(예를 들어, 3 비트의 데이터), 데이터 값들 "000", "001", "010", "011", "100", "101", "110" 및 "111"에 할당되는 8개의 전압 범위들이 존재할 것이다.
메모리 셀에 프로그래밍된 데이터와 상기 셀의 드레시홀드 전압 레벨들 간의 구체적인 관계는 상기 셀들에 채택된 데이터 인코딩 기법에 의존한다. 예를 들어, 그 전체가 본 명세서에 참조로서 포함되는 미국 특허 제6,222,762 및 미국 특허 출원 공개 제2004/0255090호는, 복수-상태 플래시 메모리 셀들에 대한 다양한 데이터 엔코딩 기법들을 기술한다. 일 실시예에서, 데이터 값들은 그레이 코드 할당을 사용하여 드레시홀드 전압 범위들에 할당되며, 따라서, 플로팅 게이트의 드레시홀드 전압이 그것의 이웃하는 물리적 상태로 잘못 시프트되면, 단지 1 비트만이 영향을 받을 것이다. 일부 실시예들에서, 데이터 엔코딩 기법은 서로 다른 워드 라인들에 대해 변경되거나 시간에 따라 변경될 수 있다. 또는 랜덤 워드 라인들에 대한 데이터 비트들이 반전(inverting)되거나, 다른 경우에는 데이터 패턴 민감도(sensitivity)를 줄이고 메모리 셀들에 대한 마모(wear)를 균일하게 하기 위하여 랜덤화된다.
NAND 타입 플래시 메모리들 및 그 동작에 대한 관련 예들은 하기의 미국 특허/특허 출원에 제공되며, 그 전체는 본 명세서에 참조로서 포함된다. 미국 특허 제5,570,315호; 미국 특허 제5,774,397호; 미국 특허 제6,046,935호; 미국 특허 제6,456,528호; 및 미국 특허 공개 US2003/0002348. 본 명세서의 내용은 또한 NAND 플래시 메모리에 이외에도 다른 타입의 플래시 메모리 및 다른 타입의 비휘발성 메모리들에 적용될 수 있다.
NAND 플래시 메모리에 부가하여, 다른 타입의 비휘발성 저장 디바이스들이 또한 사용될 수 있다. 예를 들어, 기본적으로 (플로팅 게이트 대신에) 질화물 층 내에 전하를 포획(trap)하는 방법을 사용하는 메모리 셀인 소위 TANOS 구조(실리콘 기판 위에 TaN-Al2O3-SiN-SiO2의 스택 층으로 이루어진 구조)가 또한 본 발명과 함께 사용될 수 있다. 플래시 EEPROM 시스템에서 유용한 또 다른 타입의 메모리 셀은 비휘발성 방식으로 전하를 저장하기 위하여 전도성 플로팅 게이트 대신 비전도성 유전체 물질을 사용한다. 그러한 셀은 Chan et al., "A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device,"(IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93-95)에서 설명된다. 실리콘 옥사이드, 실리콘 니트라이드, 그리고 실리콘 옥사이드("ONO")로 형성된 3중 층 유전체가 전도성 제어 게이트와 메모리 셀 채널 위의 반-전도성(semi-conductive) 기판 표면 사이에 샌드위치된다. 상기 셀은 상기 셀 채널로부터 상기 질화물로 전자들을 주입함으로써 프로그래밍되며, 여기에서 전자들은 제한된 영역 내에 포획(trap)되고 저장된다. 이 저장된 전하는 검출가능한 방식으로 상기 셀의 채널 일부의 드레시홀드 전압을 변화시킨다. 상기 메모리 셀은 고온의 정공(hot hole)들을 상기 질화물 내로 주입함으로써 소거된다. IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, April 1991, pp. 497-501의 "A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application"(Nozaki et al.)을 또한 참조하면, 여기에서는 도핑된 폴리실리콘 게이트가 메모리셀 채널의 일부분 위로 신장되어 별도의 선택 트랜지스터를 형성하는 분리-게이트 구조(split-gate configuration)에서 유사한 메모리 셀을 설명한다. 앞의 두 문헌은 그 전체가 본 명세서에 참조로써 포함된다. William D. Brown과 Joe E. Brewer에 의한 "Nonvolatile Semiconductor Memory Technology," IEEE Press, 1998의 1.2 섹션에 언급된 프로그래밍 기법들은, 본 출원에 대한 참조로서 본 명세서에 통합되며, 또한 상기 섹션에는 이들 기법들은 유전체 전하-포획 디바이스들에도 적용가능하다고 설명되어 있다. 다른 타입의 메모리 디바이스들이 또한 사용될 수 있다.
도 3은 하나 이상의 메모리 다이 또는 칩들(212)을 포함할 수 있는 비휘발성 저장 디바이스(210)를 도시한다. 메모리 다이(212)는 메모리 셀들의 (2차원 또는 3차원) 어레이(200), 제어 회로(220), 및 판독/기록 회로(230A,230B)를 포함한다. 일 실시예에서, 다양한 주변 회로들에 의한 상기 메모리 어레이(200)에의 액세스는 어레이의 대향 측들 상에서 대칭적인 방식으로 구현되어, 각 측의 액세스 라인들 및 회로의 밀도는 절반으로 줄어든다. 판독/기록 회로들(230A, 230B)은 메모리 셀들의 페이지가 병렬로 판독되거나 프로그래밍될 수 있게 해주는 복수의 감지 블록들(300)을 포함한다. 메모리 어레이(100)는 행 디코더들(240A, 240B)을 통해 워드 라인들에 의해 어드레싱될 수 있거나, 열 디코더들(242A, 242B)을 통해 비트 라인들에 의해 어드레싱될 수 있다. 일반적인 실시예에서, 제어기(244)는 동일한 메모리 디바이스(210)(예를 들어, 착탈식 저장 카드 또는 패키지) 내에 하나 이상의 메모리 다이(212)로서 포함된다. 명령들 및 데이터는 라인들(232)을 통해 호스트와 제어기(244) 사이에서 전송되고 라인들(234)을 통해 제어기와 하나 이상의 메모리 다이들(212) 사이에서 전송된다. 일 실시예는 복수의 칩들(212)을 포함할 수 있다.
제어 회로(220)는 메모리 어레이(220) 상에서 메모리 동작들을 수행하기 위하여 판독/기록 회로들(230A, 230B)과 협력하여 동작한다. 제어 회로(220)는 상태 머신(222), 온-칩 어드레스 디코더(224) 및 전력 제어 모듈(226)을 포함한다. 상태 머신(222)은 메모리 동작들에 대한 칩-레벨 제어를 제공한다. 온-칩 어드레스 디코더(224)는 호스트 또는 메모리 제어기에 의해 사용되는 어드레스와 디코더들(240A, 240B, 242A, 및 242B)에 의해 사용되는 하드웨어 어드레스 사이의 어드레스 인터페이스를 제공한다. 전력 제어 모듈(226)은 메모리 동작들 중에 워드 라인들 및 비트 라인들에 공급되는 전력 및 전압들을 제어한다. 일 실시예에서, 전력 제어 모듈(226)은 공급 전압 보다 큰 전압들을 생성할 수 있는 하나 이상의 전하 펌프들(charge pumps)을 포함한다.
일 실시예에서, 제어 회로(220), 전력 제어 회로(226), 디코더 회로(224), 상태 머신 회로(222), 디코더 회로(242A), 디코더 회로(242B), 디코더 회로(240A), 디코더 회로(240B), 판독/기록 회로들(230A), 판독/기록 회로들(230B), 및/또는 제어기(224) 중 하나 또는 이것들의 임의의 조합이 하나 이상의 관리 회로들로서 참조될 수 있다.
도 4는 메모리 셀 어레이(200)의 예시적인 구조를 도시한다. 일 실시예에서, 메모리 셀들의 어레이는 메모리 셀들의 M 블록들로 분할된다. 플래시 EEPROM 시스템들에서 일반적인 바와 같이, 블록은 소거의 단위(unit)이다. 즉, 각각의 블록은 함께 소거되는 최소 수의 메모리 셀들을 포함한다. 각각의 블록은 일반적으로 다수의 페이지들로 분할된다. 페이지는 프로그래밍의 최소 단위이다. 하나 이상의 데이터 페이지들은 일반적으로 메모리 셀들의 일 행에 저장된다. 페이지는 하나 이상의 섹터들을 저장할 수 있다. 섹터는 사용자 데이터 또는 오버헤드 데이터를 포함한다. 오버헤드 데이터는 일반적으로 섹터의 사용자 데이터로부터 계산된 ECC(에러 정정 코드)를 포함할 수 있다. 제어기의 부분(하기에서 설명됨)은, 데이터가 어레이로 프로그래밍될 때 ECC를 계산하며, 그리고 또한 데이터가 어레이로부터 판독될 때 ECC를 검사한다. 대안적으로, ECC들 및/또는 다른 오버헤드 데이터는 그것들이 적용되는 사용자 데이터와는 다른 페이지들 또는 심지어 다른 블록들에 저장된다.사용자 데이터의 섹터는 일반적으로 자기 디스크 드라이브에서의 섹터의 사이즈에 대응하는 512 바이트이다. 오버헤드 데이터는 일반적으로 추가적인 16-20 바이트이다. 8 페이지 이상, 예를 들어, 32, 62, 128 이상의 페이지들과 같은 다수의 페이지들이 블록을 형성한다. 다른 사이즈의 블록들 및 구성들이 또한 사용될 수 있다.
또 다른 실시예에서, 비트 라인들은 짝수 비트 라인들과 홀수 비트 라인들로 분할된다. 홀수/짝수 비트 라인 아키텍쳐에서, 공통 워드 라인을 따라 있으며 홀수 비트 라인들에 연결된 메모리 셀들이 한번에 프로그래밍되며, 공통 워드 라인을 따라 있으며 짝수 비트 라인들에 연결된 저장 소자들은 또 다른 시간에 프로그래밍된다.
도 4는 메모리 어레이(200)의 블록 i를 보다 자세히 도시한다. 블록 i는 X+1 비트 라인들 및 X+1개의 NAND 스트링들을 포함한다. 블록 i는 또한 64개의 데이터 워드 라인들(WL0-WL63), 2개의 더미 워드 라인들(WL_d0, WL_d1), 드레인측 선택 라인(SGD) 및 소스측 선택 라인(SGS)을 포함한다. 각각의 NAND 스트링의 일 단자는 (선택 라인 SGS에 연결된) 드레인 선택 게이트를 통해 대응하는 비트 라인에 연결되고, 또 다른 단자는 (선택 라인(SGS)에 연결된) 소스 선택 게이트를 통해 소스 라인에 연결된다. 64개의 데이터 워드 라인들 및 2개의 더미 워드 라인들이 존재하므로, 각각의 NAND 스트링은 64개의 데이터 메모리 셀들 및 2개의 더미 메모리 셀들을 포함한다. 다른 실시예들에서, NAND 스트링들은 64개의 데이터 메모리 셀들 및 2개의 더미 메모리 셀들 보다 더 많은 또는 더 적은 메모리 셀들을 가질 수 있다. 데이터 메모리 셀들은 사용자 또는 시스템 데이터를 저장할 수 있다. 더미 메모리 셀들은 일반적으로 사용자 또는 시스템 데이터를 저장하는데 사용되지 않는다. 일부 실시예들은 더미 메모리 셀들을 포함하지 않는다.
도 5는 감지 모듈(480)로서 참조된 코어 부분, 및 공통 부분(490)으로 분할되는 개별 감지 블록(300)의 블록도이다. 일 실시예에서, 각각의 비트 라인에 대해 개별적인 감지 모듈(480)이, 그리고 복수의 감지 모듈들(480)의 세트에 대해 하나의 공통 부분(490)이 존재할 것이다. 일 실시예에서, 감지 블록은 하나의 공통 부분(490) 및 8개의 감지 모듈들(480)을 포함할 것이다. 그룹내의 감지 모듈들 각각은 데이터 버스(472)를 통해 관련된 공통 부분과 통신할 것이다. 보다 자세한 사항은 그 전체가 본 명세서에 참조로서 포함되는 미국 특허 출원 공개 제2006/0140007를 참조하도록 한다.
감지 모듈(480)은 연결된 비트 라인 내의 전도 전류(conduction current)가 소정의 드레시홀드 레벨을 초과하는지 또는 소정의 드레시홀드 레벨 미만인지를 결정하는 감지 회로(470)를 포함한다. 일부 실시예들에서, 감지 모듈(480)은 또한 통상적으로 감지 증폭기로서 칭해지는 회로를 포함한다. 감지 모듈(480)은 또한 연결된 비트 라인에 대한 전압 조건을 설정하기 위하여 사용되는 비트 라인 래치(482)를 포함한다. 예를 들어, 비트 라인 래치(482)에 래치된 소정의 상태는 결과적으로 연결된 비트들이 프로그램 금지를 나타내는 상태가 되게 이끌 것이다.
공통 부분(490)은 프로세서(492), 데이터 래치들의 세트(494), 및 상기 데이터 래치들의 세트(494)와 데이터 버스(420) 사이에 결합된 I/O 인터페이스(496)를 포함한다. 프로세서(492)는 연산들을 수행한다. 예를 들어, 프로세서의 기능들 중 하나는 감지된 메모리 셀 내에 저장된 데이터를 결정하고 상기 결정된 데이터를 데이터 래치들의 세트 내에 저장하는 것이다. 데이터 래치들의 세트(494)는 판독 동작 중에 프로세서(492)에 의해 결정되는 데이터 비트들을 저장하는데 사용된다. 그것은 또한 프로그램 동작 중에 데이터 버스(420)로부터 유입(importing)되는 데이터 비트들을 저장하는데 사용된다. 유입된 데이터 비트들은 메모리 내에 프로그래밍될 기록 데이터를 나타낸다. I/O 인터페이스(496)는 데이터 래치들(494)과 데이터 버스(420) 사이의 인터페이스를 제공한다.
판독 또는 감지 중에, 시스템의 동작은 어드레싱된 셀에 서로 다른 제어 게이트 전압들을 공급하는 것을 제어하는 상태 머신(222)의 제어하에 있다. 메모리에 의해 지원되는 다양한 메모리 상태들에 대응하는 다양한 소정의 제어 게이트 전압들을 거침에 따라, 감지 모듈(480)은 이 전압들 중 하나에 트립(trip)할 수 있고 버스(472)를 통해 감지 모듈(480)로부터 프로세서(492)로 출력이 제공될 것이다. 그 시점에서, 프로세서(492)는 입력 라인들(493)을 통해 상태 머신으로부터 얻은 인가된 제어 게이트 전압에 대한 정보 및 감지 모듈의 트립핑 이벤트(들)을 고려하여 결과적인 메모리 상태를 결정한다. 그후 프로세서(492)는 메모리 상태에 대한 바이너리 엔코딩을 연산하고 결과적인 데이터 비트들을 데이터 래치들(494)에 저장한다. 코어 부분의 또 다른 실시예에서, 비트 라인 래치(482)는 감지 모듈(480)의 출력을 래치하기 위한 래치로서, 그리고 상술된 것과 같은 비트 라인 래치로서의 두가지 역할을 수행한다.
몇몇 실시예들은 복수의 프로세서들(492)을 포함할 것으로 예상된다. 일 실시예에서, 각각의 프로세서(492)는 각각의 출력 라인들이 함께 와이어드-OR 되도록 된 출력 라인(도 5에 도시되지 않음)을 포함할 것이다. 몇몇 실시예들에서, 상기 출력 라인들은 와이어드-OR 라인에 연결되기 전에 인버팅된다. 이러한 구성은 프로그램 검증 프로세스 동안 프로그래밍 공정이 완료된 때에 대한 빠른 결정을 가능하게 해주는바, 이는 와이어드-OR 라인을 수신하는 상태 머신이, 프로그래밍되는 모든 비트들이 요구된 레벨에 도달했을 때를 결정할 수 있기때문이다. 예를 들어, 각각의 비트가 그것의 요구되는 레벨에 도달했을 때, 그 비트에 대한 논리 0이 와이어드-OR 라인으로 송신될 것이다(또는 데이터 1이 반전된다). 모든 비트들이 데이터 0을 출력할 때(또는 데이터 1이 반전될 때), 상태 머신은 프로그래밍 프로세스를 종료할 것을 인지한다. 각각의 프로세서가 8개의 감지 모듈들과 통신하는 실시예들에서, 상태 머신은 와이어드-OR 라인을 8번 판독해야 하거나(몇몇 실시예들에서), 또는 상태 머신이 한번만 와이어드-OR 라인을 판독하면 되도록 관련된 비트 라인들의 결과들을 축적하기 위하여 로직이 프로세서(492)에 부가된다.
프로그래밍 또는 검증 중에, 프로그래밍될 데이터는 데이터 버스(420)로부터 데이터 래치들(494)의 세트 내에 저장된다. 상태 머신의 제어하의 프로그램 동작은, 어드레싱된 메모리 셀들의 제어 게이트들에 인가되는 (크기가 증가하는)일련의 프로그래밍 전압 펄스들을 포함한다. 각각의 프로그래밍 펄스에는, 저장 소자가 요구된 저장 상태로 프로그래밍되었는지를 판단하기 위한 검증 프로세스가 뒤따른다. 프로세서(492)는 요구되는 메모리 상태와 관련하여 검증된 메모리 상태를 모니터링한다. 두 상태가 일치할 때, 프로세서(492)는 비트 라인이 프로그램 금지를 나타내는 상태로 견인(pull)되도록 비트 라인 래치(482)를 설정한다. 이것은 비트 라인에 결합된 셀이 그것의 제어 게이트 상에서 프로그래밍 펄스들에 노출된다하더라도, 상기 셀이 더 프로그래밍되는 것을 방지해준다. 다른 실시예들에서, 프로세서가 처음에 비트 라인 래치(482)를 로딩하고, 감지 회로는 검증 프로세스 중에 그것을 금지 값으로 설정한다.
데이터 래치 스택(494)은 감지 모듈에 대응하는 데이터 래치들의 스택을 포함한다. 일 실시예에서, 감지 모듈(480)당 3-5개(또는 또 다른 개수)의 데이터 래치들이 존재한다. 일부 구현예들에서(그러나, 반드시는 그러한 것은 아님), 데이터 래치들이 시프트 레지스터로서 구현되어 그 내부에 저장된 병렬 데이터가 데이터 버스(420)를 위한 직렬 데이터로 변환되거나 그 반대의 경우도 가능하다. 바람직한 실시예에서, m 개의 메모리 셀들의 판독/기록 블록에 대응하는 모든 데이터 래치들이 함께 링크되어 블록 시프트 레지스터를 형성할 수 있으며, 따라서 데이터 블록이 직렬 전송(serial transfer)에 의해 입력 또는 출력될 수 있다. 특히, 판독/기록 모듈들의 뱅크는, 그것의 데이터 래치들의 세트 각각이 마치 전체 판독/기록 블록을 위한 시프트 레지스터의 일부인것 처럼 데이터 버스 내로 또는 데이터 버스로부터 데이터를 시프트하도록 적응된다.
판독 동작들 및 감지 증폭기들에 대한 추가적인 정보는 (1) 미국 특허 제7,196,931호 "Non-Volatile Memory And Method With Reduced Source Line Bias Errors,"; (2) 미국 특허 제7,023,736호 "Non-Volatile Memory And Method with Improved Sensing,"; (3) 미국 특허 출원 공개 제2005/0169082호; (4) 미국 특허 제7,196,928호 "Compensating for Coupling During Read Operations of Non-Volatile Memory" 및 (5) 미국 특허 출원 공개 제2006/0158947호 "Reference Sense Amplifier For Non-Volatile Memory"(2006/07/20 공개)에서 찾아볼 수 있다. 위에 렬거된 특허 5개의 문헌들 모두는 그 전체가 본 명세서에 참조로서 포함된다.
(검증을 사용한) 성공적인 프로그래밍 프로세스의 종료시, 메모리 셀들의 드레시홀드 전압들은 프로그래밍된 메모리 셀들에 대한 하나 이상의 드레시홀드 전압 분포들 또는 소거된 메모리 셀들에 대한 드레시홀드 전압 분포 내에 적절히 있어야 한다. 도 6a는 각각의 메모리 셀이 4 비트의 데이터를 저장할 때 메모리 셀 어레이에 대한 데이터 상태들에 대응하는 예시적인 Vt 분포들을 도시한다. 그러나, 다른 실시예는 메모리 셀당 4개보다 더 많은 혹은 더 적은 데이터 비트들을 사용할 수 있다. 도 6a는 데이터 상태들 0-15에 대응하는 16개의 Vt 분포들을 도시한다. 일 실시예에서, 상태 0에서의 드레시홀드 전압은 음이고, 상태 1-15에서의 드레시홀드 전압들은 양이다. 그러나, 상태 1-15 중 하나 이상의 상태에서 드레시홀드 전압이 음일 수 있다.
데이터 상태들 0-15 각각 사이에는 메모리 셀들로부터 데이터를 판독하기 위하여 사용되는 판독 기준 전압들(read reference voltages)이 존재한다. 예를 들어, 도 6a는 데이터 상태 0과 1 사이의 판독 기준 전압 Vr1, 데이터 상태 1과 2 사이의 Vr2를 도시한다. 주어진 메모리 셀의 드레시홀드 전압이 각각의 판독 기준 전압들보다 큰지 또는 작은지를 테스트함으로써, 시스템은 메모리 셀이 어떤 상태에 있는지를 결정할 수 있다.
각각의 데이터 상태 0-15에 또는 각각의 데이터 상태 1-15의 하부 경계(lower edge) 부근에는 검증 기준 전압들이 존재한다. 예를 들어, 도 6a는 상태 1에 대한 Vv1 및 상태 2에 대한 Vv2를 도시한다. 메모리 셀들을 소정 상태로 프로그래밍할 때, 시스템은 그 메모리 셀들이 검증 기준 전압보다 큰 또는 검증 기준 전압과 같은 드레시홀드 전압을 가지는지 여부를 테스트할 것이다.
도 6b는 데이터 상태들 0-15에 대응하는 Vt 분포들의 또 다른 실시예를 도시하는바, 정정 알고리즘이 에러있는 셀들의 어느정도 퍼센티지를 처리할 수 있으므로 상기 Vt 분포들은 부분적으로 오버랩될 수 있다.
소스 또는 바디 바이어싱을 통한 바디 효과(body effec)가 음의 드레시홀드 전압을 측정가능한 양의 범위로 시프트하는데 사용되므로, Vt 축은 제어 게이트들에 인가된 실제 전압들로부터의 오프셋일 수 있다. 또 다른 주목할점은 도시된 16개 상태들의 동일한 간격/너비와는 대조적으로, 데이터 리텐션 손실(data retention loss)에 대한 가변 양의 감수성(susceptibility) 수용하기 위하여, 다양한 상태들이 서로 다른 너비들/간격들을 가질 수 있다는 것이다. 일부 실시예들에서, 상태 0 및/또는 15는 다른 상태들 보다 넓다.
도 7은 본 발명의 실시예들에 따라 저장 디바이스(210)가 내장된 예시적인 모바일 디바이스(700)를 도시한다. 예시적인 디바이스(700)는 개인용 내비게이션 디바이스로서 사용될 수 있도록 GPS 정보를 수신하기 위한 GPS(global positioning satellite) 수신기(710)를 가진다. 저장 디바이스(210)는 지도를 저장하는데 사용될 수 있으며, 프로세서(720)는 GPS정보에 의해 결정된 것과 같은 디바이스의 위치에 근거하여 디스플레이(702) 상에 상기 지도를 사용자에게 디스플레이한다.
일반적으로, 사용자가 저장 디바이스(210) 내의 지도들의 세트를 저장하면, 사용자는 오랜 기간 동안 저장된 지도들에 대해 기록할 필요가 없다. 예를 들어, 지도 데이터의 대다수는 몇년 동안 바뀌지 않을 것이다. 본 명세서에 개시된 실시예들은 얼마나 자주(즉, 데이터를 보호할만큼은 충분히 자주 그러나 사용자와 충돌하거나 저장 디바이스(210)를 오버스트레스할 정도로 자주는 아니게) 지도 데이터와 같은 데이터를 리프레시할지를 결정한다. 예시적인 디바이스(700)는 저장 디바이스(210)가 내장된 하나의 예시적인 디바이스로서 사용된다. 그러나, 내장된 저장 디바이스(210)가 PDA(personal digital assistants), 셀룰러 전화기, 개인용 미디어 플레이어 등에서 사용될 수 있다.
도 8은 저장 디바이스(210) 내에서 어느 블록들이 그것들의 데이터를 리프레시해야만 하는지를 결정하는 프로세스(800)에 대한 일 실시예를 도시한다. 일반적으로, 방법(800)은, 셀당 4비트를 저장하는 도 6a 및 6B의 예에서와 같이, 메모리 셀당 하나보다 많은 비트가 저장된 블록들에 대해 사용된다. 프로세스(800)는, 저장 디바이스(210)가 파워-온된(power-on) 후 유휴 시간(idle time)이 생기는 대로 즉시 개시될 수 있으며 그리고 그후 주기적 간격들(periodic intervals)로 개시될 수 있다. 일 실시예에서, 저장 디바이스(210)는 휴대형 디바이스(예를 들어, 개인용 내비게이션 디바이스) 내에 통합되는바, 상기 휴대형 디바이스는, 상기 휴대형 디바이스 자체의 전원이 꺼지는 경우에도 오랜 기간 동안 전원에 액세스할 수 있다. 예를 들어, 휴대형 내비게이션 디바이스는 한번에 며칠 동안 자동차의 시거잭(cigarette lighter)에 플러그인된 채로 있을 수 있으며, 이 경우, 프로세스(800)는 정정 알고리즘의 성능에 근거하여 트리거된다. 예를 들어, 정정 알고리즘이 수렴(converge)하는데 너무 오래 걸린다면 또는 정정 알고리즘에 의해 정정되어야하는 데이터 비트들의 수가 임계값(critical value)보다 크다면, 프로세스(800)가 개시되어, (검출된 문제 또는 다른 문제들과 관련된) 특정 블록들이 그것들의 데이터를 리프레시해야하는지를 결정한다.
단계(802)에서, 데이터 리텐션(data retention) 문제, 리드 디스터브(read disturb) 문제, 등과 같은 데이터 무결성 문제를 테스트하기 위하여, 메모리 어레이(200)의 블록이 선택된다. 그러나, 데이터 무결성 문제의 원인(예를 들어, 데이터 보유)은 구체적으로 식별될 필요가 없다. 일 실시예에서, 각각의 블록들을 테스트하기 위하여 메모리 어레이(200) 내의 블록들이 순차적으로 테스트된다. 그러나, 블록들은 랜덤 순서, 또는 블록들이 최종적으로 프로그래밍된 순서와 같은 다른 순서로 테스트될 수 있다. 프로세스(800)이 메모리 어레이(200) 내의 모든 블록을 테스트할 것이 요구되지는 않는다. 예를 들어, 최근에 프로그래밍된 블록들에 대해 테스트가 연기(defer)될 수 있다. 그러나, 온도의 이력(history)은 모니터링하고 기록하기가 어렵기 때문에, 데이터 무결성 문제들에 대한 영향이 예측하기 어려울 수 있다. 예를 들어, 저장 디바이스(210)가 고온에 노출되었는지 여부를 직접 결정하는 것이 어려울 수 있다. 예를 들어, 저장 디바이스(210)는 온도 데이터를 모니터링 및 저장할 수 있는 로직을 구동(drive)할 어떠한 전력 소스도 없이 고온 환경에 남겨질 수 있다. 결과적으로, 데이터 무결성 문제들을 놓치지 않기 위해서는 최근에 프로그래밍된 블록들 조차 테스트될 수 있다.
일 실시예에서, 프로세스(800)는 테스트를 위하여 단지 메모리 어레이(200)내의 블록들의 작은 샘플을 선택한다. 일 실시예에서, 메모리 셀당 특정 최소 수의 비트들을 저장하는 블록들만이 데이터 무결성 문제에 대해 테스트된다. 예를 들어, 일부 블록들은 메모리 셀당 단일 비트를 저장할 수 있고 다른 블록들은 셀당 4 비트들을 저장할 수 있다. 그러한 경우에, 메모리 셀당 단일 비트를 저장하는 블록들은 Vt 분포들 사이에 매우 큰 갭을 가지며 테스트될 필요가 없다.
일부 실시예들에서, 시스템은, 전체 데이터 블록이 본질적으로(essentially) 동시에 기록된다는 것을 보장하며, 이 경우, 선택된 블록 내의 각각의 워드 라인은 데이터 무결성 문제에 대해 분석(analyze)될 것이 요구되지 않는다. 본질적으로 동시에 기록한다는 것은, 상기 시스템이, 블록의 기록이 인터럽트되면 그 블록에 대한 기록을 중단(abort)하는 규칙(rule)을 시행한다는 것을 의미한다. 즉, 블록 내의 데이터는 폐기되고, 데이터는 나중에 또 다른 블록에 기록된다. 본질적으로 동시에 기록하는 것이, 모든 워드 라인들을 동시에 프로그래밍하는 것을 의미하지는 않음에 주의하여야 한다. 일반적으로, 워드 라인들은 순차적으로 프로그래밍된다.
전체 블록을 본질적으로 동시에 기록하는 예는, 각각의 메모리 셀이 단일 비트을 저장하는 블록들("바이너리 블록들") 내에 임시로 데이터를 저장하는 것이다. 그리고 나서, 4개의 그러한 바이너리 블록들이 채워진 후, 데이터는 각각의 메모리 셀이 4개의 비트들을 저장하는 블록(본 명세서에서는 "X4 블록"으로 지칭함)에 기록된다. 데이터를 X4 블록에 기록하는 것이 인터럽트된다면, 그 X4 블록으로의 기록은 중단된다. 나중에, 여전히 바이너리 블록들에 있는 데이터가 또 다른 X4 블록에 기록된다. 그러한 기록이 인터럽트 없이 완료된다면, 그 블록 기록은 성공적이다. 따라서, X4 블록 내의 모든 데이터는 본질적으로 동시에 기록된다.
단계(840)에서, 선택된 블록 내의 하나의 워드 라인이 데이터 무결성 분석을 위하여 선택된다. 일부 실시예들에서, 시스템은 워드 라인들이 어떤 특정 순서로 기록되는 것을 보장한다. 워드 라인들이 특정 순서로 기록되는 실시예에서, 기록된 블록 내의 제1 워드 라인이 데이터 무결성 분석을 위해 선택된다. 일 실시예에서, 워드 라인의 선택은 랜덤하게 이루어진다. 필요하다면, 블록 내의 복수의 워드 라인들이 데이터 무결성에 대해 분석될 수 있다. 블록 내의 모든 워드 라인들이 상기 선택의 후보가 될 필요가 있는 것은 아니다. 일 실시예에서, 데이터 무결성 분석을 위해, 다른 워드 라인들보다 더 문제 있는(more problematic) 워드 라인이 선택될 수 있다. 예를 들어, 공학 특성평가(enginnering characterization)는 각각의 블록의 제1 워드 라인이 데이터 무결성 문제에 대해 더 강한 감수성(stronger susceptibility)을 가진다는 것을 이미 결정했을 수 있다. 다른 실시예들에서, 블록당 단일의 워드 라인을 테스트 한다면 블록의 중간 부근의 워드 라인들이 더 적합할 것이므로, 블록의 에지 부근의 워드 라인들은 후보 풀(candidate pool)에서 빠질 수 있다.
프로세스(800)의 일 실시예에서 워드 라인이 랜덤하게 선택지만, 워드 라인이 랜덤하게 선택되는 것이 요구되는 것은 아니다. 일 실시예에서, 테스트되는 워드 라인(들)에 대해 기록(record)이 유지되어, 각각의 워드 라인(또는 적어도 후보 세트 각각)이 테스트된다. 예를 들어, 워드 라인들의 테스트는, 블록이 테스트될 때마다 서로 다른 워드 라인이 테스트되는 방식으로, 순차적으로 진행될 수 있다.
단계(806)에서, 블록의 선택된 워드 라인에 저장된 데이터가 데이터 무결성 문제를 가지는지(이는, 상기 블록이 리프레시되어야함을 나타냄)에 대한 결정이 이루어진다. 도 1OA, 1OB 및 10C는 데이터 무결성 문제가 있는지를 결정하는데 사용될 수 있는 몇가지 기법들의 세부사항들을 제공한다. 간략히 말하면, 일 기법은 블록에서 하나 이상의 Vt 분포들이 허용된 양보다 많이 시프트되었는지를 결정하는 단계를 포함하며, 이는 데이터 리텐션 문제가 있음을 나타낼 수 있다. 그러한 시프트는 또한 리드 디스터브와 같은 또 다른 문제를 나타낼 수 있다. 이 시프트에 대한 테스트는, 시프트에 대해 모든 Vt 분포들이 분석될 것을 요구하지는 않는다.
데이터 무결성 문제를 테스트하기 위한 또 다른 기법은, 선택된 블록의 워드 라인으로부터 판독된 데이터에 대해 정정 알고리즘을 실행하는 것을 수반한다. 데이터 무결성 문제는, 정정 알고리즘에 의해 정정될 필요가 있는 비트들의 개수에 근거하여 표시되거나, 또는 정정 알고리즘이 해법으로 수렴하기 위해 소요되는 시간 길이에 의해 표시된다.
블록이 데이터 무결성 문제를 가지지 않는다면, 제어는 테스트를 위한 또 다른 블록을 선택하는 단계(802)로 이동한다. 선택된 블록이 데이터 무결성 문제를 가진다면, 이것의 기록이 유지되어, 어느 시점에 그 블록의 데이터가 리프레시될 수 있다. 데이터가 반드시 즉시 리프레시되어야하는 것은 아님에 주목하여야 한다. 예를 들어, 임의의 블록들에 대한 데이터 리프레시를 수행하기 전에, 어떤 블록들의 세트가 리프레시될 것인가에 대한 결정이 이루어질 수 있다. 일부 경우들에서는, 데이터 리프레시가 수행되기 전에 디바이스가 파워-다운될 수 있다. 일 실시예에서, 어떤 데이터 블록들이 리프레시되어야 하는지를 기록하기 위하여 스페어 블록이 사용된다. 도 9a는 데이터를 리프레시하는 프로세스를 도시한다.
한 블록이 데이터 무결성 문제를 가진것으로 식별되면, 많은 다른 블록들 또한 동일한 문제를 겪게될 수 있음에 주목하여야 한다. 예를 들어, 데이터 무결성 문제가 메모리 디바이스가 고온에 노출됨으로 인한 것이라면, 다른 블록들 또한 동일한 데이터 무결성 문제를 가질 수 있다. 이는 문제있는 블록 전에 마지막으로 프로그래밍된 다른 블록들, 또는 그후 최근에 프로그램된 다른 블록들에 대해 특히 사실이다. 따라서, 이러한 다른 블록들은 리프레시 과정에 대한 후보가 될 수 있다. 그러므로, 단계(806)에서 블록이 데이터 무결성 문제를 가짐(이후 상기 블록은 "배드 블록(bad block)"으로 칭함)이 결정되면, 제어는 리프레시 과정을 위한 다른 블록들을 식별하는 단계(808)로 이동한다.
단계(808)에서, 배드 블록이 마지막으로 프로그래밍된 때와 대비하여 블록들이 언제 마지막으로 프로그래밍되었는지에 근거하여 리프레시 과정을 위한 블록들이 식별된다. 본 명세서에서, 이러한 다른 블록들은 "후보 블록들(candidate blocks)"로 지칭하기로 한다. 예를 들어, 배드 블록 전에 프로그래밍된 블록들 전체는 후보 블록들로서 식별된다. 그러나, 배드 블록 후 특정 시간 기간 내에 프로그래밍된 블록들이 또한 후보 블록들로서 식별될 수 있다.
단계(810)에서, 후보 블록들에 대해 리프레시 과정이 수행된다. 리프레시 과정은, 상기 후보 블록들의 데이터가 리프레시되어야 하는지를 결정한다. 일 실시예에서, 리프레시 과정은, 후보 블록들에 데이터 무결성 문제가 있는지 결정하지 않고 상기 후보 블록들의 데이터를 자동적으로 리프레시한다. 그러한 자동적인 데이터 리프레시 실시예에서, 도 9a의 프로세스(900)는 단계(810)을 실시하는데 사용된다.
일 실시예에서, 단계(810)의 리프레시 과정은 후보 블록들에서 데이터를 리프레시할지를 결정하기 위하여 후보 블록에 데이터 무결성 문제가 있는지를 결정한다. 후보 블록들의 워드 라인에 데이터 무결성 문제가 있는지를 판단하기 위하여 도 10a, 10B, 10C의 프로세스들 중 임의의 프로세스, 또는 또 다른 프로세스가 사용될 수 있다. 전체 블록이 본질적으로 동시에 기록되는 실시예에서, 후보 블록에서 테스트될 워드 라인은 랜덤하게 선택된다. 도 10a, 10B, 10C의 프로세스들 중 하나가 후보 블록에 데이터 무결성 문제가 있음을 결정하면, 후보 블록에서 데이터를 리프레시하기 위하여 도 9a의 프로세스(900)가 사용될 수 있다.
후보 블록은, 프로세스(800)의 일 반복 동안 단계(806)에 의하여 데이터 무결성에 대해 테스트되고, 프로세스(800)의 다른 반복의 단계(810)에서 데이터 무결성에 대해 또 다시 테스트됨에 주목하여야 한다. 그러나, 단계(806)에서 테스트된 워드 라인과는 다른 랜덤하게 선택된 워드 라인이 단계(810)에서 테스트를 위해 선택될 가능성이 크다. 또한, 단계(806)에서 사용된 데이터 무결성 테스트와 다른 데이터 무결성 테스트가 사용될 수 있다. 예를 들어, 단계(806)에서, 도 10b의 테스트(얼마나 많은 비트들이 정정 알고리즘에 의한 정정을 필요로하는지를 결정)가 사용되었을 수 있고, 반면 단계(810)에서, 도 10a의 테스트(Vt 분포에서의 시프트를 찾음)가 사용될 수 있다. 그러나, 동일한 테스트가 서로 다른 파라미터들을 가지고 사용될 있다. 예를 들어, 데이터 리프레시를 트리거하기 위하여 정정 알고리즘에 의한 정정에 필요한 비트들의 개수가 블록을 두번째로 테스트할 때는 달라질 수 있다.
전략적으로 식별된 후보 블록들에서 데이터를 리프레시함으로써, 프로세스(800)는 데이터가 손실(lost)되는것을 방지할만큼 충분히 자주(그러나, 디바이스(210)를 오버스트레스하거나 메모리 어레이(200)에 대한 사용자 액세스를 방해할 정도로 자주는 아님) 데이터를 리프레시한다. 단계(802-806)에서 후보 블록들 중 몇몇이 데이터 무결성 문제에 대해 최근 테스트되었으나, 상기 테스트가 결과적으로 데이터를 리프레시하는 결정에 이르지는 않았음에 주목하여야 한다. 이에 대한 가능한 원인은 데이터 무결성 문제의 심각성(severity)이 데이터 리프레시를 프리거하는 드레시홀드(threshold)에 상당하지는 않았다는 것이다.
배드 블록이 마지막으로 프로그래밍된 때와 대비하여 후보 블록들이 언제 마지막으로 프로그래밍되었는지에 근거하여 후보 블록들에 대한 리프레시 과정을 수행함으로써, 디바이스를 오버스트레스할 정도로 너무 자주도 아니고 디바이스 무결성 문제들이 너무 심각해져서 정정 알고리즘에 의해 정정될 수 없을 정도로 너무 드물게도 아닌 적절한 시간에 저장 디바이스(210) 내의 블록들이 리프레시됨에 주목하여야 한다.
예를 들어, 저장 디바이스(210)가 여름철 자동차 내부와 같은 극도의 고온 환경에 남겨지는 경우를 고려하기로 한다. 그러한 고온에 저장 디바이스(210)를 노출하는 것은 전하 손실/이득의 속도를 크게 가속할 수 있으며, 이는 잠재적으로, 데이터 리텐션 문제를 야기할 수 있다. 그러나, 디바이스가 반드시 고온에 노출되는 것은 아니므로, 단순히 데이터를 자주 리프레시하는 것은 불필요할 수 있음에 주목하여야 한다. 더욱이, 빈번한 데이터 리프레시는 디바이스를 오버스트레스하거나 디바이스의 정상적인 사용을 방해할 것이므로 바람직하지 않을 수 있다.
도 9a는 메모리 어레이(200)의 블록에 저장되는 데이터를 리프레시하는 프로세스(900)의 일 실시예를 도시하는 흐름도이다. 프로세스(900)는, 프로세스(800)의 단계(806) 또는 단계(810)에 의해 데이터 리프레시가 필요한 것으로 식별된 블록들에 대해 개시된다. 일 실시예에서, 프로세스(900)는 블록 내의 페이지들 전체를 리프레시한다. 그러나, 모든 페이지들의 데이터가 리프레시될 것이 요구되는 것은 아니다. 단계(902)에서, 데이터는 리프레시될 블록으로부터 판독된다. 앞에서 논의된 바와 같이, 블록에 대한 데이터가 본래 저장되었을 때, ECC 엔코딩 메커니즘의 일부로서 섹터 기반으로(by sector basis) 섹터에 대해 패리티 체크 비트들이 계산되어 사용자 데이터와 결합되었다. 데이터를 저장하기 전에, 데이터를 랜덤화하기 위하여, 스크램블링(scrambling) 과정이 또한 사용될 수 있음에 주목하여야 한다. 일부 실시예들에서, 일 워드 라인 상의 셀들은 몇개의 섹터들 또는 ECC 페이지들을 형성한다. 섹터의 데이터는 먼저 스크램블되고 그후 ECC 엔진에 의해 엔코딩될 수 있다. 몇개의 섹터들에 대응하는 스크램블되고 ECC 엔코딩된 데이터가 축적(accumulation)되고, 그리고 그후 동시에 단일 워드 라인에 기록된다. 예를 들어, 일 워드 라인은 4 섹터 상당의 데이터(four sectors worth of data)를 수용할 수 있다. 일부 아키텍쳐들에서, 한 워드 라인 상의 모든 셀들이 동시에 기록될 수 있다. 한 블록의 프로그래밍은, 데이터를, 각각의 플레인(plane)에서 동시에 한 워드 라인에 기록하는 것으로 이루어진다. 모든 비트 라인들이 함께 프로그래밍 될 수 있는 그러한 NAND 아키텍쳐(ABL NAND 아키텍쳐)의 예는 미국 특허 출원 공개 제2006/0158947호에서 설명된다.
단계(904)에서, 데이터를 정정하기 위하여 단지 판독된 데이터(data just read)에 대해 ECC 알고리즘이 실행된다. 일 실시예에서, 제어기(224)는 512 비트들 마다 6개 이상의 비트들을 정정할 수 있는 강한 에러 정정 알고리즘을 구행한다. 일 실시예에서, 제어기(244)는 반복 디코딩(iterative decoding) 기법을 수행한다. 일 실시예에서, 제어기(244)는 멀티-비트-퍼-셀(multi-bit-per-cell) 플래시 메모리 에서 확률론적 에러 정정(probabilistic error correction)을 수행한다. 멀티-비트-퍼-셀 플래시 메모리에서 에러 정정을 수행하는 것에 대한 보다 자세한 사항은, 2007년 4월 19일 공개된 미국 공개 특허 출원 제2007/0086239호 "Probabilistic Error Correction in Multi-bit-per-cell Flash Memory", 2007년 4월 19일에 공개된 미국 공개 특허 출원 제2007/0089034호 "Method of Error Correction in MBC Flash Memory"에 제공되며, 상기 출원 각각은 본 명세서에 참조로서 포함된다.
단계(906)에서, 정정된 데이터가 메모리 어레이(200)의 블록에 기록된다. 일 실시예에서, "웨어 레벨링(wear leveling)"을 달성하기 위하여, 데이터는 리프레시되는 블록과는 항상 다른 블록에 기록된다. 즉, 데이터를 다른 블록에 기록하는 것은, 각각의 블록이 얼마나 많은 프로그래밍을 겪는지를 균일하게 해주는 것을 도울 수 있다. 일 실시예에서, 데이터를 새 블록에 리프레시할지 또는 동일한 블록에 리프레시할지에 대한 결정이 이루어진다. 이 결정은 데이터의 최종 기록으로부터의 시간 및/또는 블록이 프로그램된 횟수의 "핫 카운트(hot count"에 근거하여 이루어질 수 있다. 예를 들어, 블록이 최근에 프로그래밍되었다면 그리고/또는 핫 카운트가 높다면, 데이터를 다른 블록에 기록하는 것이 바람직할 수 있다. 일 실시예에서, 각각의 블록은 그 고유의 핫 카운트를 저장한다.
일 실시예에서, 리프레시 과정(900)이 완료될 때까지 디바이스를 끄지(power-down)않게 하기 위하여 메시지가 사용자에게 디스플레이된다. 그러나, 그러한 메시지가 디스플레이되는지의 여부와 관계없이, 사용자는 데이터 리프레시 도중에 상기 디바이스를 끌 수 있다. 또한, 사용자는 메모리 어레이(200)에 액세스함으로써 리프레시 과정을 방해할 수 있다. 따라서, 프로세스(900)는, 상기 프로세스가 방해받으면 재개(resume)될 수 있게끔, 데이터 리프레시 프로세스(900)의 진행(progress)에 대한 기록이 비휘발성 메모리에 보유된다.
도 9b는 선택된 워드 라인에 연결된 메모리 셀들을 프로그래밍하는 프로그래밍 프로세스를 도시하는 흐름도이다. 일 실시예에서, 도 9b의 프로세스는 데이터의 1 페이지를 프로그래밍하는데 사용된다. 그러므로, 도 9b의 프로세스는 프로세스(900)의 단계(906)에서 기록되는 블록 내의 서로 다른 페이지들을 프로그래밍하기 위하여 여러번 사용될 수 있다.
도 9b의 프로세스의 일 실시예에서, 메모리 셀들은 프로그래밍 전에 소거된다(단계(940)). 일 실시예에서, 메모리 셀들은, 충분한 시간 기간 동안 p-우물을 소거 전압(예를 들어, 20볼트)으로 상승시키고 소스 및 비트 라인들이 플로팅 상태인 채로 선택된 블록의 워드 라인들을 접지시킴으로써 소거된다. 용량성 커플링으로 인하여, 선택되지 않은 워드 라인들, 비트 라인들, 선택 라인들, 및 공통 소스 라인이 또한 소거 전압의 상당분(significant fraction)으로 상승된다. 따라서 강한 전계가 선택된 메모리 셀들의 터널 산화물층들에 인가되며, 일반적으로 포울러-노드하임 터널링(Fowler-Nordheim tunneling) 메커니즘에 의해, 플로팅 게이트들의 전자들이 기판측으로 방출됨에 따라 선택된 메모리 셀들의 데이터가 소거된다. 전자들이 플로팅 게이트로부터 p-우물 영역으로 전달됨에 따라, 선택된 셀의 드레시홀드 전압이 낮아진다. 소거는 전체 메모리 어레이, 개별 블록들, 또는 셀들의 또다른 유닛에 대해 수행될 수 있다. 메모리 셀들의 블록이 소거된 후, 본 명세서에서 기술된 바와 같이, 다양한 메모리 셀들이 프로그래밍되거나 부분적으로 프로그래밍될 수 있다. 단계(940)에서 수행되는 소거는 블록의 각각의 워드 라인이 프로그래밍되기 전에 수행될 필요는 없음에 주목하여야 한다. 오히려, 블록은 소거될 수 있으며, 그후 워드 라인들의 프로그래밍 사이에 소거를 행함이없이 각각의 워드 라인이 프로그래밍될 수 있다.
단계(942)에서, 소프트 프로그래밍이 수행되어 소거된 메모리 셀들에 대한 소거된 드레시홀드 전압들의 분포가 좁아진다. 소거 프로세스의 결과로서 일부 메모리 셀들은 필요한 것 보다 깊이 소거된 상태(deeper erase state)에 있을 수 있다. 소프트 프로그래밍은, 소거된 메모리 셀들의 드레시홀드 전압을 소거 검증 레벨에 가깝게 이동시키기 위하여 작은 프로그래밍 펄스들을 인가할 수 있다. 단계(950)에서, 제어기(244)에 의해 "데이터 로드" 명령이 발행되고, 상태 머신(222)로 입력된다. 단계(952)에서, 페이지 어드레스를 지정하는 어드레스 데이터가 디코더(224)에 제공된다. 단계(954)에서, 어드레싱된 페이지에 대한 프로그램 데이터의 페이지가 프로그래밍을 위하여 입력된다. 예를 들어, 일 실시예에서 528 바이트의 데이터가 입력될 수 있다. 그 데이터는 선택된 비트 라인들을 위한 적절한 레지스터들/래치들 내에 래치된다. 일부 실시예들에서, 데이터는 또한 선택된 비트 라인들에 대한 제2 레지스터에 래치되어 검증 동작들을 위하여 사용된다. 단계(956)에서, 제어기(244)로부터 "프로그램" 명령이 수신되어 상태 머신(222)에 제공된다.
"프로그램" 명령에 의해 트리거링되어, 단계(954)에서 래치된 데이터는, 적절한 워드 라인에 인가되는 펄스들을 사용하여 상태 머신(222)에 의해 제어되는 선택된 메모리 셀들에 프로그래밍될 것이다. 단계(958)에서, 프로그래밍 신호 "Vpgm"(예를 들어, 일련의 전압 펄스들)가 시작 크기(예를 들어 ~12V 또는 또 다른 적정 레벨)로 초기화되고 상태 머신(222)에 의해 유지되는 프로그램 카운터 PC가 0으로 초기화된다. 단계(960)에서, 프로그래밍 신호의 펄스 Vpgm가 선택된 워드 라인에 인가된다. 선택되지 않은 워드 라인들은 "Vpass"로 지칭되는 하나 이상의 부스팅 전압들을 수신한다. 특정 데이터 래치에 로직 "0"이 저장되어 대응하는 메모리 셀이 프로그래밍되어야 함을 나타낸다면, 대응하는 비트 라인이 접지된다. 반면, 특정 래치에 로직 "1"이 저장되어 대응하는 메모리 셀이 그것의 현재 데이터 상태로 유지되어야 함을 나타낸다면, 대응하는 비트 라인은 VDD에 연결되어 프로그래밍이 금지된다. 프로그래밍 신호는 전압 펄스들의 세트를 포함하며, 여기서 상기 펄스들의 크기는, 각각의 연속적인 펄스마다 증가함에 주목하여야 한다. 전압 펄스들 사이에는 검증 펄스들의 세트가 존재한다.
단계(962)에서, 상술한 바와 같이, 적절한 타겟 레벨들의 세트를 사용하여 선택된 메모리 셀들의 상태들이 검증된다. 선택된 셀의 드레시홀드 전압이 적절한 타겟 레벨에 도달하였음이 검출되면, 대응하는 데이터 래치 내에 저장된 데이터는 논리 "1"로 변경된다. 만약 드레시홀드 전압이 적정 레벨에 도달하지 않았음이 검출되면, 대응하는 데이터 래치 내에 저장된 데이터는 변경되지 않는다. 이러한 식으로, 대응하는 데이터 래치 내에 논리 "1"이 저장된 비트라인은 프로그래밍될 필요가 없다. 데이터 래치들 전체가 논리 "1"을 저장할 때, 상태 머신(222)은 모든 선택된 셀들이 프로그래밍되었음을 인지한다. 단계(964)에서, 모든 데이터 래치들이 논리 "1"을 저장하고 있는지에 대한 검사가 이루어진다. 모든 데이터 래치들이 논리 "1"을 저장하고 있다면, 모든 선택된 메모리 셀들이 프로그래밍되었고 그들의 타겟 상태들로 검증되었으므로 프로그래밍 프로세스는 완료되며 성공적인 것이다. 단계(966)에서 "패스" 상태가 보고된다. 일부 실시예들에서는, 단계(964)에서, 적어도 소정 수의 데이터 래치들이 논리 "1"을 저장하는지가 검사된다는 것에 주목하여야 한다. 이 소정 수는 전체 데이터 래치들의 개수보다 작을 수 있으며, 그럼으로써 전체 메모리 셀들이 그들의 적절한 검증 레벨들에 도달하기 전에 프로그래밍 프로세스가 중지될 수 있게 해준다. 성공적으로 프로그래밍되지 않은 메모리 셀들은 판독 프로세스 동안 에러 정정을 사용하여 정정될 수 있다.
단계(964)에서, 모든 데이터 래치들이 모든 데이터 래치들 논리 "1"을 저장하는 것은 아님이 결정되면, 프로그래밍 프로세스가 계속된다. 단계(968)에서, 프로그램 제한값(program limit value)에 대해 프로그램 카운터(PC)가 검사된다. 프로그램 제한 값의 일 예는 20이다. 그러나, 다양한 실시예들에서 다른 수들이 또한 사용될 수 있다. 만약 프로그램 카운터(PC)가 프로그램 제한 값보다 작지 않다면, 단계(969)에서 성공적으로 프로그램되지 않은 메모리 셀들의 수가 소정 수 이하인지가 결정된다. 상기 성공적으로 프로그램되지 않은 메모리 셀들의 수가 소정 수 미만이면, 프로그래밍 프로세스는 "패스"로 플래그되고, 단계(971)에서 PASS 상태가 보고된다. 많은 경우에, 성공적으로 프로그래밍되지 않은 메모리 셀들은 판독 프로세스 동안 에러 정정을 사용하여 정정될 수 있다. 그러나, 성공적으로 프로그래밍되지 않은 메모리 셀들의 수가 소정 수보다 크다면, 프로그램 프로세스는 실패로 플래그되고 단계(970)에서 FAIL 상태가 보고된다. 단계(968)에서 프로그램 카운터(PC)가 프로그램 제한 값(예를 들어, 20)보다 작은것으로 결정되면, 다음 Vpgm 전압 펄스의 크기는 스텝 사이즈(예를 들어, 0.2-0.4 전압 스텝 사이즈) 만큼 증가하고, 단계(972)에서 프로그램 카운트 PC가 증분된다. 단계(972) 후, 프로세스는 단계(960)으로 되돌아가, 다음 Vpgm 전압 펄스가 인가된다.
일반적으로, (도 9b의 단계(962) 동안에 수행되는 검증 동작들과 같은) 검증 동작들 및 판독 동작들 동안, 선택된 워드 라인이 전압에 연결되며, 상기 전압의 레벨은 각각의 판독 및 검증 동작에 대해 특정되는바, 이는 고려되는 메모리 셀의 드레시홀드 전압이 그러한 레벨에 도달했는지를 판단하기 위한 것이다. 워드 라인 전압을 인가한 후, 상기 워드 라인에 인가된 전압에 응답하여 메모리 셀이 턴 온 되는지를 결정하기 위하여 메모리 셀의 전도 전류가 측정된다. 전도 전류가 특정 값보다 큰것으로 측정되면, 상기 메모리 셀이 턴 온되고 워드 라인에 인가된 전압이 메모리 셀의 드레시홀드 전압보다 높은것으로 가정된다. 전도 전류가 특정 값보다 큰 것으로 측정되지 않으면, 메모리 셀이 턴온 되지 않았으며 워드 라인에 인가된 전압이 상기 메모리 셀의 드레시홀드 전압보다 크지 않은 것으로 가정된다.
판독 또는 검증 동작 중에 메모리 셀의 전도 전류를 측정하는 많은 방법들이 존재한다. 일 예에서, 메모리 셀의 전도 전류는 감지 증폭기에서 그것이 전용 커패시터를 방전 또는 충전하는 속도(rate)에 의해 측정된다. 또 다른 예에서, 선택된 메모리 셀의 전도 전류는 상기 메모리 셀을 포함한 NAND 스트링이 대응하는 비트 라인을 방전할 수 있게(또는 방전하지 못하게) 해준다. 메모리 셀이 방전되었는지 여부를 알기 위하여 임의의 시간 기간 후에 비트 라인 상의 전압이 측정된다.
도 10a는 블록에 데이터 무결성 문제가 있는지를 판단하는 프로세스(1000)의 일 실시예를 도시하는 흐름도이다. 프로세스(1000)는 도 8의 단계(806)를 수행하는데 사용될 수 있다. 프로세스(1000)는 또한 단계(810)의 리프레시 과정의 실시예들에서 사용될 수 있는바, 여기서 후보 블록이 데이터 무결성 문제를 가지는지에 대한 결정이 이루어진다. 단계(1002)에서, 고해상도 스캔(high resolution scan)이 비휘발성 저장 소자들에 대해 수행된다. 상기 스켄은 제한된 범위에 대해 수행될 수 있다. 예를 들어, 도 6b를 참조하면, 스캔은 상태들(14, 15)의 일부에 대해 수행될 수 있다. 고해상도 스캔은 정규 판독 프로세스(normal read process) 보다 더 높은 해상도에서 다수의 판독을 수행하는 것을 수반한다. 데이터 무결성 문제를 검출하기 위한 데이터 전체를 수집하기 위하여 블록 내의 단일 워드 라인(또는 그 일부)만이 스캔될 필요가 있다. 그러나, 필요하다면 복수의 워드 라인들로부터의 데이터가 스캔될 수 있다. 여기서, 고해상도 판독 포인트들은 "소프트 판독들"이라 지칭된다.
도 11은 분포 함수(1101)(제어 게이트 전압의 함수로서의 셀 카운트)를 도시한다. 분포(1101)은 예를 들어, 도 6b에 도시된 것들과 같은 16개의 Vt 분포들 중 대략적으로 4개에 대응한다. 상기 분포는, 메모리 셀들을 서로 다른 상태들로 프로그래밍한 결과인 Vt 분포들에 대응하는 피크들(peaks) 사이의 "밸리들(valleys)"을 가진다. 일 실시예에서, 분포 함수(1101)에서의 곡저들(valley bottoms)(1111) 중 하나가 결정된다. 하나의 곡저에 대응하는 드레시홀드 전압만이 결정될 필요가 있으므로, 분포 함수(1101)의 일부만이 결정될 필요가 있다. 도 11에 도시된 예에서, 실선으로 표시된 분포(1101) 부분을 생성하기 위하여 16개의 서로 다른 제어 게이트 전압들(소프트 판독 전압들 Vsr1-Vsr16)이 사용되었다. 16개보다 더 많은 또는 더 적은 소프트 판독 전압들이 사용될 수 있따. 분포(1101)의 점선 부분은, 더 큰 범위의 제어 게이트 전압들이 인가된다면 분포(1101)이 어떻게 나타날지를 보여준다.
일 실시예에서, 식별을 위한 타겟이 되는 밸리는, 다양한 상태들로의 프로그래밍으로부터 기인된 Vt 분포들의 예측된 특성들에 근거하여 결정된다. 예를 들어, 밸리는, Vt 분포들 사이의 예측된 분리(seperation) 및 서로 다른 Vt 분포들에 대해 발생할것으로 예측되는 시프트의 양과 같은 인자들에 근거하여 선택될 수 있다. 일부 비휘발성 저장 디바이스들에서, 더 높은 전압의 Vt 분포들은 더 큰 분리를 가지며더 큰 시프트를 겪을 것으로 예측된다. 그러나, 각각의 상태는, 서로 다른 데이터 무결성 문제들에 의해 서로 다르게 영향받을 수 있으며, 상기 서로 다른 데이터 무결성 문제들은 또한 어떤 밸리를 식별할지에 대한 결정에 영향을 줄 것임에 주목하여야 한다. 예를 들어, 상태 15는 다른 상태들 보다 리드 디스터브 문제를 더 크게 겪을 수 있다. 그러므로, 데이터 리텐션 문제를 측정하기 위한 것이라면, 리드 디스터브를 크게 겪는 상태에 대한 판독을 피하거나, 또는 적어도 리드 디스터브가 Vt 분포의 시프트에 얼마나 영향을 주는지에 대해 감안하는 것이 바람직하다. 고해상도 스캔은 (16 개의 데이터 상태들을 사용하는 실시예에서) 다른 14개의 Vt 분포들 중 어느것도 포함하지 않는 매우 제한된 전압 범위에 대해 수행됨에 주목하여야 한다. 그러므로, 판독 동작들의 전체 개수는 적절히 낮은 숫자로 유지된다. 반면, 상태 14와 15(즉, 16개의 상태들이 있을 때 가장 높은 밸리) 사이의 밸리에 대한 스캔을 선택하는 것은 하기의 이유로 인해 바람직할 수 있다. 분포들에서 하방 시프트(downward shift)가 커서 상태 14과 15 사이의 밸리가 마치 상태 13과 14 사이의 밸리인것으로 잘못 해석될 수 있다. 2개의 가장 높은 상태들 사이의 밸리를 찾는 것은 이 문제를 완화해준다.
분포를 결정하기 위하여, 블록 내의 선택된 워드 라인의 메모리 셀들의 제어 게이트들에 소프트 판독 전압들(Vsr1-Vsr16)이 연속적으로 인가된다. 예를 들어, 메모리 셀들의 제어 게이트들에 인가되는 전압은, 예를 들어, 각각의 연속적인 전압마다 50mV만큼, 단계적으로 증가(step up)된다. 각각의 소프트 판독에 응답하여 도통(턴 온)된 메모리 셀들의 수가 기록된다. 각각의 주어진 셀에 저장되는 실제 데이터가 기록되는 것이 요구되는 것은 아니다. 오히려, 분포(1101)의 형상은 각각의 소프트 판독 전압들에 응답하여 얼마나 많은 메모리 셀들이 도통(턴온)되는지에 대한 분석에 근거하여 결정될 수 있다.
프로세스(1000)의 단계(1004)에서, 분포 함수 내의 곡저가 결정된다. 일 실시예에서, 곡저 전압이 식별된다. 곡저 전압의 목적은 Vt 분포들 중 적어도 하나가 얼마나 시프트했는지를 결정하는 기준점을 가지기 위한 것이다. 예시적인 곡저 전압(1111)은 도 11의 Vt 분포들(1102a, 1102b) 사이에 도시된다. 일 실시예에서, 기준점은 곡저가 아닌 다른 어딘가이다. 예를 들어, 기준 전압은 분포 함수(1101)에서의 피크일 수 있다.
일 실시예에서, 밸리는 먼저 드레시홀드 전압 분포 데이터를 스무딩(smooting)함으로써 결정된다. 많은 적절한 알려진 함수들 중 임의의 것이 드레시홀드 전압 분포 데이터를 스무딩하는데 사용될 수 있다. 예를 들어, 데이터를 스무딩하기 위하여 로우 패스 필터(low pass filter)가 사용될 수 있다. 그후, 스무딩된 데이터의 도함수(derivative)가 결정될 수 있다. 도함수에 대한 정보를 생성하고 저장하기 위한 많은 방법 및 형태들이 존재하며, 어떠한 특정한 방법 또는 형태가 요구되는 것은 아니다. 그후, 밸리를 식별하기 위한 부호변환점(zero crossing)을 찾기 위하여 도함수 계산의 출력이 조사(investigate)된다.
하기에서는 밸리를 찾기 위한 또 다른 기법을 기술한다. 이 실시예에서, 드레시홀드 전압 분포 데이터는, 상기 드레시홀드 전압 분포 데이터를 임의의 함수와 콘볼루션(convolution)함으로써 스무딩된다. 일 실시예에서, 상기 함수는 가우시안 함수이다. 또 다른 실시예에서, 상기 함수는 트런케이티드 가우시안(truncated Gaussian)이므로, 가우시안 함수의 앞 뒤 꼬리들(front and back tails)이 제거된다. 다른 실시예들에서, 가우시안이 아닌 함수들이 사용될 수 있다. 그후, 스무딩된 데이터의 도함수가 결정된다. 그후, 밸리를 식별하기 위하여 음에서 양으로의 부호 변환점을 찾기 위하여 도함수 계산의 출력이 조사된다.
밸리의 위치를 찾는데 사용될 수 있는 한가지 추가적인 기법은 드레시홀드 전압 분포 데이터를 제곱(square)하는 것이다. 이는 데이터에 대해 더 큰 대비(constrast)를 제공하는 기능을 할 수 있다. 그후, 상술된 방법들 중 임의의 것을 사용하여 드레시홀드 전압 분포 데이터의 제곱이 스무딩된다. 그후, 스무딩된 데이터의 도함수가 결정되고 부호 변환점으로부터 밸리가 결정된다.
단계(1006)에서, 기준점(예를 들어, 곡저 전압의 드레시홀드 전압)에 근거하여 Vt 분포내의 시프트가 결정된다. 또다른 예로서, Vt 분포(1102b)내의 시프트는 분포 함수에서 피크의 드레시홀드 전압에 근거하여 결정될 수 있다. 일 실시예에서, 분포 함수(1101) 내의 피크를 식별하기 위하여 상술된 미분 기법들이 수정될 수 있다. 일 실시예에서, Vt 분포내의 시프트는 곡저 전압과 기준 전압 사이의 차(difference)로서 계산된다. 기준 전압은 프로그래밍 후 Vt 분포(1102b)의 예측된 형상에 근거하여 결정될 수 있다. 예측된 형상은 공학 특성평가에 의해 결정될 수 있다. 따라서, 기준 전압을 결정하기 위하여 필드(field)에서 프로그래밍 직후 Vt 분포들(1102a, 1102b)의 형상이 결정될 필요는 없다. 또한, 처음 프로그래밍되었을 때, Vt 분포들(1102a, 1102b)은 전혀 오버랩되지 않을 수 있음에 주목하여야 한다. 프로그래밍 중에 전하가 제거되었는지 또는 부가되었는지에 의존하는 데이터 리텐션 문제들의 결과로서, 분포들(1102a, 1102b)이 우측 또는 좌측으로 시프트될 수 있음에 주목하여야 한다.
단계(1008)에서, 적어도 부분적으로 Vt 분포 내의 시프트에 의존하여, 데이터를 리프레시할지에 대한 결정이 이루어진다. 데이터 리프레시를 타당하게 하는 시프트의 양은, 정확히 데이터를 판독하는 성능에 그 시프트들이 어떻게 영향을 미치는지를 결정하는 실험실 테스트에 근거하여 결정될 수 있다. 블록 내의 데이터가 리프레시될 것이라면, 도 9a의 프로세스(900)이 수행된다. 그러나, 데이터 리프레시는 즉시 수행될 필요는 없다. 예를 들어, 데이터 리프레시는, 전체 메모리 어레이(200)에서 어느 블록들이 리프레시될 것인지에 대한 결정이 이루어질 때까지 연기될 수 있다. 데이터 리프레시(예를 들어, 프로세스(900))가 편리한 시간에 수행될 수 있게끔 리프레시될 블록들의 기록이 유지된다. 일부 경우들에서는, 디바이스(210)가 파워다운 되기전에는 데이터 리프레시가 수행되지 않을 것이다. 그러므로, 기록은 스페어 블록과 같은 비휘발성 메모리 내에 유지되어야 한다.
단계(1008)의 리프레시 결정은, Vt 분포 시프트에 부가하여, 또는 Vt 분포 시프트 이외의, 많은 인자들(factors)에 근거할 수 있다. 메모리 셀들이 높은 드레시홀드 전압들을 가지는 상태들은, 낮은 드레시홀드 전압들과 관련된 상태들보다 빠른 속도로 전하를 잃거나 얻을 수 있음에 주목하여야 한다. 따라서, 리프레시 결정의 한가지 인자는 어떤 상태들이 분석중인 Vt 분포들과 관련되어있는가이다. 앞서 논의된 바와 같이, 다양한 상태들은 데이터 보유 손실에 대한 가변양의 감수성을 수용하기 위하여 서로 다른 폭들/간격들을 가질 수 있다. 따라서, 시프트하기 더 쉬운 상태들은 Vt 분포내의 시프트를 측정하는데 더 적합할 수 있다. 그러나, 상기 상태들중 임의의 상태가 Vt 분포내의 시프트를 측정하는데 사용될 수 있다. 실험실에서 디바이스에 대해 수행되는 테스트들에 근거하여, 특정 저장 디바이스에 대한 서로 다른 Vt 분포 시프트 특성들을 알게될 수 있다.
리프레시 결정에서 고려되는 또 다른 인자는 어떤 워드 라인 또는 워드 라인들이 데이터 무결성에 대해 테스트되었는가이다. 앞에서 논의된 바와 같이, 일 실시예에서, 데이터 무결성 문제에 대한 테스트를 위하여 단일 워드 라인이 선택된다. 서로 다른 워드 라인들은 데이터 보유와 같은 특정한 데이터 무결성 문제들에 관하여 서로 다른 특성들을 가질 수 있다. 일부 워드 라인들의 특성들은 다른 워드 라인들과 매우 유사할 것이므로, 서로 다른 워드라인들이 한 세트로 그룹화될 수 있음에 주목하여야 한다.
여전히 고려되어야하는 또 다른 요인은 블록이 프로그램된 횟수이며, 이는 다르게는 "핫 카운트"라고 지칭된다. 핫 카운트는 블록 내에 오버헤드로서 저장될 수 있다. 여러번 프로그래밍된 블록들은 단지 몇번만 프로그래밍된 블록들보다 더 빠르게 전하 중성을 향해 이동하는 경향이 있을 수 있다. 그러므로, 높은 핫 카운트를 지닌 블록은 낮은 핫 카운트를 가진 블록보다 Vt 분포내에서 더 적은 시프트를 가지고 리프레시될 것이다.
또 다른 인자는 블록이 프로그래밍된 후 경과된 시간이다. 그러나, 디바이스는 극도로 다른 환경 조건들에 노출될 수 있으므로, 최종 기록으로부터의 시간 그 자체는 데이터를 리프레시의 필요성에 대한 신뢰가능한 지시자가 아닐 수 있다. 즉, 최종 프로그래밍으로부터의 시간에 대한 과도한 의존은, 시간 파라미터가 너무 길면 필요할 때 리프레시하지 못하게 하거나, 시간 파라미터가 너무 짧으면 너무 자주 리프레시하게 할 수 있다. 그러나, 많은 인자들 중 한 인자로서, 시간 파라미터를 사용하는 것은 이것도 저것도 아닌 경우(borderline case)에 데이터를 리프레시할지 여부를 결정할 때 유익할 수 있다.
고려할 또 다른 인자는 현재의 전원 전압(power supply voltage)인바, 상기 현재의 전원 전압은, Vt 분포들이 교차(intersect)되는 점을 결정하기 위하여 사용되는 소프트 판독 전압들의 크기와 같은 많은 전압들의 크기에 영향을 줄 수 있다.
리프레시 결정은 또한 선택된 블록이 프로그래밍되었을 때의 온도 및 현재 온도에 근거하할 수 있다.트랜지스터의 드레시홀드 전압은 온도의 함수임에 주목하여야 한다. 그러므로, 이 두 온도들이 실질적으로 서로 다르면, Vt 분포에서의 시프트가 예측될 수 있다. 일 실시예에서, 저장 디바이스(210)은, 그러한 온도로 유발된 드레시홀드 전압에서의 시프트들(temperature induced shifts)을 지우기 위한 내장된 온도 보상(built in temperature compensation)을 가지며, 이 경우 리프레시 결정을 할 때 온도의 인자는 필요하지 않을 수 있다.
일 실시예에서, 저장 디바이스(210)는 위의 인자들이 리프레시 결정에 얼마나 열향을 미치는지를 특정하는 다중-축(multi-axis) "리프레시 인자들" 테이블을 저장한다. 이 리프레시 인자들 테이블은, 상기 테이블이 관리 회로에 의해 엑세스될 수 있게끔, 저장 디바이스(210)를 소비자에게 제공하기 전에 메모리 어레이(200) 내에 저장된다. 도 12는 16개의 서로 다른 상태들(S0-S15)에 대한 제1 축과 5개의 워드 라인들(WL)의 5개의 서로 다른 그룹들에 대한 제2 축을 가진 2-축 테이블(1200)의 예를 도시한다. 실제로, 각각의 셀은, 상기 셀과 관련된 인자들에 대해, Vt 분포가 얼마나 많이 시프트될 수 있도록 허용되는지를 결정하기 위하여 사용되는 값을 포함한다. 예를 들어, 상태 13 및 WL11-WL23과 관련된 셀은 값 "Vx"를 가진다. 도표를 모호하게 하지 않기 위하여, 예시적인 테이블(1200)의 다른 셀들에는 값들이 도시되지 않는다.
구체적인 예로서, 만약 워드 라인 17이 테스트되었고 상태 13이 분석된다면, 테이블(1200)을 참조하여, 데이터 무결성 문제가 있는지를 결정하기 위하여 Vt 분포내의 시프트가 값 "Vx"와 비교된다. 테이블(1200)은, 각각의 축이 위의 인자들 중 하나, 또는 다른 인자들에 대응하는, 더 많은 축들을 가질 수 있다. 예를 들어, 테이블(1200)은 서로 다른 핫 카운트 범위들에 대응하는 또 다른 축을 가질 수 있다.
도 10b는 정정 알고리즘에 의해 얼마나 많은 비트들이 정정되어야 하는지에 근거하여 데이터 리프레시가 필요한지 여부를 결정하는 프로세스(1030)의 일 실시예를 도시한다. 프로세스(1030)는 도 8의 단계(806)을 수행하기 위한 한가지 기법이다. 단계(1032)에서, 선택된 워드 라인 내의 셀들이 판독된다. 앞에서 논의된 바와 같이, 일 실시예에서, 워드 라인은 랜덤하게 선택된다.
단계(1034)에서, 단지 판독된 데이터에 대해 ECC 알고리즘이 실행된다. ECC 알고리즘은 상기 데이터에서 얼마나 많은 비트들이 정정될 필요가 있는지를 결정한다.
단계(1038)에서, 제어기(244)는 정정에 필요한 비트들의 수가 비트들의 임계 개수보다 큰지를 결정한다. 만약 그렇다면, 블록은 데이터 리프레시를 필요로하는 블록으로서 식별되고 이 시점에 또는 그 후 리프레시 과정(예를 들어, 도 9a)이 수행된다. 에러인 비트들의 개수가 임계값보다 적으면, 블록은 이 시점에 데이터 리프레시를 위한 블록으로 식별되지 않는다(단계(1042)). 일 실시예에서, 드레시홀드는 핫 카운트의 함수이다. 예를 들어, 핫 카운트가 높을 수록, 드레시홀드는 낮아진다.
도 10c는 정정 알고리즘이 수렴하는데 얼마나 오래걸리는지에 근거하여 데이터 리프레시가 필요한지여부를 결정하는 프로세스(1060)의 일 실시예를 도시한다. 프로세스(1060)는 도 8의 단계(806)을 수행하기 위한 한가지 기법이다. 단계(1062)에서, 선택된 워드 라인 내의 셀들이 판독된다.
단계(1064)에서, 제어기(244)는 ECC 알고리즘을 수행하여 에러인 데이터 비트들을 복구하려 시도한다. 단계(1068)에서, 제어기(244)는 정정 알고리즘이 수렴하기 위하여, 허용되는 시간보다 더 오래 걸리는지 여부를 결정한다. 일 실시예에서, 제어기(244)는 반복 디코딩 기법이 수렴을 위해 허용되는 반복의 수보다 더 많이 반복되는지를 결정한다. 허용되는 수는 프로세서(1060)의 민감도(sensitivity)를 변경하기 위하여 조정될 수 있는 변수일 수 있다. 예를 들어, 블록이 프로세스(800)의 단계(808)에서 식별된 후보 블록이라면, 민감도는 증가할 수 있다. 정정 알고리즘이 수렴하는데 너무 오래 걸리면, 블록은 이시점에 또는 나중에 리프레시된다(단계(902)). 만약 정정 알고리즘이 허용되는 반복 횟수 내에서 수렴하면, 블록 내의 데이터는 리프레시되지 않는다(단계(1072)). 일 실시예에서, 반복의 횟수는 핫 카운트의 함수이다. 예를 들어, 더 높은 핫 카운트에 대해서, 수렴을 위하여 허용되는 반복의 횟수는 더 낮다.
도 13a는 리프레시 과정을 위한 후보 블록들을 식별하는 프로세스(1300)의 일 실시예를 도시한다. 도 13a의 프로세스는 도 8의 단계(808)을 실시하는데 사용될 수 있다. 프로세스(1300)는 후보 블록들을 식별하기 위하여 각각의 블록에 관련된 타임 스탬프(time stamps)를 사용한다. 단계(1302)에서, 배드 블록과 관련된 타임 스탬프가 액세스된다. (배드 블록은 프로세스(800)의 단계(806)에서 식별되었다.) 단계(1304)에서, 다른 블록들과 과련된 타임 스탬프들이 액세스된다. 일 실시예에서, 블록에 대한 타임 스탬프가 블록 그 자체 내에 저장된다. 일반적으로, 각각의 워드 라인은 데이터 저장을 위해 사용되는것이 아닌 몇개의 메모리 셀들을 가진다. 타임 스탬프는 상기 사용되지 않는 메모리 셀들 중 하나와 관련된 저장 소자들에 저장될 수 있다. 타임 스템프들이 각각의 블록 내에 저장된다면, 타임 스탬프를 가진 워드 라인만이 판독될 필요가 있다. 또한, 타임 스탬프 데이터가 워드 라인 내의 데이터의 단지 매우 작은 부분일 것이므로, 워드 라인 내의 데이터의 대부분이 무시될 수 있음에 주목하여야 한다. 일 실시예에서, 저장 디바이스 내의 "타임 스탬프" 테이블이 타임스템프들을 저장하여, 각각의 블록으로부터 타임 스탬프들을 판독할 필요성을 경감시켜준다. 예를 들어, 메모리 어레이(200) 내의 하나 이상의 블록들이 타임 스탬프 테이블을 위해 확보될 수 있다.
단계(1306)에서, 어떤 블록들이 배드 블록과 관련된 타임 스탬프보다 더 이른 타임 스탬프들을 가지는지에 대한 결정이 이루어진다. 그 블록들은 리프레시 과정을 위한 후보 블록들로 식별된다. 일 실시예에서, 데이터 무결성 문제를 지닌 블록이 프로그래밍된 이후 특정 시간 내에 최종 프로그래밍된 블록들이 또한 리프레시 과정을 위해 표시된다. 예를 들어, 배드 블록 이후 하루 또는 이틀 내에 최종 프로그래밍된 블록들 또한 동일한 환경적으로 야기된 데이터 무결성 문제들을 겪을 수 있으며, 따라서 후보 블록들로서 식별될 수 있다. 후보 블록들로서 식별된 상기 블록들에 대해, 프로세스(800)의 단계(810)가 수행된다.
일 실시예에서, 타임 스탬프들보다 오히려, 순차 번호들(sequence numbers)이 각각의 블록과 관련된다. 순차 번호들은 블록들이 프로그래밍된 순서를 기술한다. 도 13은 순차 번호들을 사용하여 리프레시 과정을 위한 후보 블록들을 식별하는 프로세스(1350)의 일 실시예를 도시하는 흐름도이다. 도 13b의 프로세스(1350)는 도 8의 단계(808)를 실시하는데 사용될 수 있다. 단계(1352)에서, 배드 블록과 관련된 순차 번호가 액세스된다. 단계(1354)에서, 다른 블록들과 관련된 순차 번호들이 액세스된다. 일반적으로, 블록에 대한 순차 번호들은 그 블록 내에 저장된다. 그러나, 순차 번호들이 블록 번호들과 관련된 순차 번호들의 테이블을 가진 스페어 블록과 같은 다른 어느곳에 저장될 수도 있다.
단계(1356)에서, 배드 블록과 관련된 순차 번호보다 낮은 순차 번호들을 가진 블록들이 리프레시 과정을 위한 후보들로 식별된다. 후보 블록들로 식별된 상기 블록들에 대해, 프로세스(800)의 단계(810)가 수행된다.
도 14는 리프레시 과정을 위한 후보 블록들을 식별하는데 사용되는 순차 번호들을 관리하는 프로세스(1400)의 일 실시예를 도시한다. 단계(1402)에서, 저장 디바이스(210)가 파워-온 된다. 저장 디바이스(210)는 개인용 내비게이션 디바이스와 같은 또 다른 디바이스 내에 통합될 수 있다는 것에 주목하여야한다. 이 예를 사용하면, 저장 디바이스(210)는 개인용 내비게이션 디바이스에 대해 전원이 사용가능할 때는 언제든지 전력을 가질 수 있다. 예를 들어, 사용자는 개인용 내비게이션 디바이스를 자동차의 "전자 라이터"와 같은 전원에 플러그-인 할 수 있다. 이 예에서, 저장 디바이스(210)는, 사용자가 개인용 내비게이션 디바이스를 스위치-오프했다하더라도, 사용자가 상기 디바이스를 라이터에 플러그-인함으로써 파워-온 될 수 있다.
단계(1404)에서, 메모리 어레이(200)의 블록들로부터 순차 번호가 판독된다. 몇몇 블록들은 순차 번호를 가지지 않을 수 있다. 예를 들어, 현재 유효 데이터를 저장하고 있지 않은 블록들은 순차 번호를 가지지 않을 것이다. 일 실시예에서, 셀당 단일 비트만을 저장하는 블록들은, 테스트를 필요로하지 않으므로 순차 번호를 가지지 않을 것이다. 저장 디바이스(210)가 파워온된 후 순차 번호들을 판독하기 전에 또 다른 동작들이 수행될 수 있음에 주목하여야한다.
단계(1406)에서, 최고의 순차 번호가 현재 순차 번호로서 기록된다. 현재 순차 번호는 랜덤 액세스 메모리 내에 기록될 수 있으며, 상기 랜덤 액세스 메모리는 저장 디바이스(210) 상에 있거나 디바이스(210) 외부에 있을 수 있다. 예를 들어, 디바이스(210)에 연결된 호스트는 사용가능한 랜덤 액세스 메모리를 가질 수 있다. 대안적으로, 현재 순차 번호가 비휘발성 메모리(예를 들어, 스페어 블록) 내에 기록될 수 있다.
단계(1408)에서, 메모리 어레이(200)에 하나 이상의 블록들을 기록하라는 요청이 수신된다. 단계(1410)에서, 현재 순차 번호가 증분된다. 단계(1412)에서, 현재 순차 번호(증분 후)는 기록되고 있는 블록에 저장된다. 만약 기록될 블록들이 더 있다면(단계(1414)), 제어는 단계(1410)으로 이동하여, 순차 번호를 증분시키고 그것을 기록되는 다음 블록에 저장한다.
도 15는 리프레시 과정(예를 들어, 프로세스(800)의 단계(810))을 위한 후보 블록들을 선택하는데 사용되는 타임 스탬프들을 관리하는 프로세스(1500)의 일 실시예를 도시한다. 프로세스(1500)는 단계(1502)에서 파워-온된 저장 디바이스(210)를 사용하여 개시된다.
단계(1504)에서, 서로 다른 블록들로부터 타임 스탬프들이 판독된다. 순차 번호들을 사용하는 실시예들에서와 같이, 모든 블록들이 타임 스템프들을 가지지는 않을 것이다. 앞서 논의된 바와 같이, 프로세스(1300)의 단계(1304)의 일 실시예에서, 타임 스탬프들은 테이블로부터 액세스된다. 선택적인 단계(1506)에서, 단계(1504)에서 판독된 타임 스탬프들이 그 타임 스탬프 테이블에 저장된다. 테이블은 RAM에 있거나 또는 테이블이 비휘발성 저장장치의 하나 이상의 블록들을 점유할 수 있다.
단계(1508)에서, 하나 이상의 블록들을 기록하라는 요청이 수신된다. 단계(1510)에서, 현재 시간이 결정된다. 몇몇 경우들에 있어서, 사용가능한 시간에 대한 정확도가 의심스러울 수 있다. 예를 들어, 저장 디바이스(210)에 결합된 호스트에게 쿼리하는 것에 의해 시간이 액세스될 수 있다. 그러나, 호스트는 부정확한을 제공할 수 있다. 예를 들어, 호스트의 클럭이 부정확하게 프로그램되어있을 수 있다. 시간의 정확도는 소스의 타입에 근거하거나(예를 들어, 개인용 컴퓨터는 신뢰되지 않음), 또는 전의 시간과 모순되는 시간(예를 들어, 거꾸로 가는 시간)에 근거한다. 시간 정보가 신뢰되지 않는다면, 시간 정보 대신에 더미 값이 사용될 수 있다. 대안적으로, 최근에 신뢰된 시간 정보(the last trusted time information)가 대신 저장될 수 있다. 만약 상기 최근에 신뢰된 시간 정보가 저장된다면, 이는 블록이 실제로 프로그래밍된것보다 먼저 프로그래밍되었다는 결론을 야기함에 주목하여야 한다. 따라서, 블록이 프로그래밍된 때에 근거하여 리프레시할 때를 결정하는 프로세스(1300)는 지나치게 포괄적(over inclusive)일 수 있다.
일부 실시예들에서, 저장 디바이스(210)는 매우 신뢰할 수 있는 것이라 여겨지는 시간 소스에 액세스한다. 예를 들어, 저장 디바이스(210)가 위성으로부터 정확한 시간을 수신하는 개인용 내비게이션 디바이스에 사용된다면, 상기 시간은 정확한것으로 여겨질 수 있다.
단계(1512)에서, 시간 스탬프는 기록되고 있는 블록(들)에 저장된다. 필요하다면, 기록되고 있는 각각의 블록에 대해 단계(1510)가 반복될 수 있다. 그러나, 기록 프로세스가 상당한 시간 기간 동안 방해받지 않는한, 주어진 기록 요청에서 기록되고 있는 모든 블록들에 대해 동일한 시간 스탬프가 사용될 수 있다. 선택적 단계(1514)에서, 타임 스탬프 테이블이 갱신된다.
블록들에 대해 타임 스탬프들 및 순서 번호들 모두가 저장될 수 있음에 주목하여야 한다. 앞서 논의된 바와 같이, 시간 정보가 신뢰되지 않는다면, 저장되는 타임 스탬프는 더미 값일 수 있다. 타임 스탬프들에 근거하여 리프레시할지 여부를 결정하는 프로세스(1300)를 수행할 때, 더미 값들 가진 블록들에 대해서는 리프레시 결정을 위해 타임 스탬프들 대신에 순서 번호들이 사용될 수 있다.
도 16은 데이터 리텐션 문제들을 경감시키기 위한 액션을 취할 것을 사용자에게 경고하는 프로세스(1600)의 일 실시예를 도시한다. 단계(1602)에서, 저장 디바이스(210)가 너무 자주 리프레시되고 있다는 것이 결정된다. 일 실시예에서, 관리 회로들이 이 결정을 내리지만, 상기 결정은 저장 디바이스(210) 외부에서 이루어질 수도 있다.
데이터가 너무 자주 리프레시되고 있는지 여부를 결정하기 위하여, 데이터 리프레시들에 관련된 기록이 유지될 수 있다. 상기 기록은 적어도 하나의 블록을 리프레시하게 하는 각각의 타임 프로세스(800)를 트래킹할 수 있다. 상기 기록은 또한, 언제 프로그램되었는지에 근거한 자동적인 리프레시에 근거하여, 얼마나 많은 전체 블록들이 리프레시되었는지, 실제 데이터 무결성 문제의 결정(예를 들어, 프로세스들(1000, 1030, 또는 1060) 중 하나 이상의 프로세스들에 의해 결정된 것과 같은)에 근거하여 얼마나 많이 리프레시되었는지에 대한 기록을 포함한다.
시간 정보가 사용가능하다면, 상기 기록은 또한 리프레시가 발생한 때를 표시할 수 있다. 일부 경우들에 있어서, 특정 데이터 리프레시의 시간은 알려지지 않을 것이나, 타임 윈도우는 결정될 수 있다. 예를 들어, 데이터 리프레시가 발생할 때, 저장 디바이스는 정확한(또는 신뢰되는) 시간을 제공하지 않는 호스트에 결합될 수 있다. 그러나, 저장 디바이스가 나중에 시간을 제공하는 호스트에 결합된다면, 리프레시의 시간은 타임 윈도우내로 국한될 수 있다(리프레시 전의 시간이 알려져있다고 가정). 임의의 시간 기간에 대해 얼마나 많은 데이터 리프레시들을 너무 빈번한 것으로 여길지에 대한 결정은 디바이스가 실험실에서 검증(qualify)된 때 익히게된 정보에 근거하여 이루어질 수 있다.
단계(1604)에서, 사용자에게 데이터 무결성 문제들을 경감시키기 위한 액션을 취할것을 경고하는 메시지가 디스플레이된다. 예를 들어, 상기 메시지는 사용자가 더 오랜 시간 기간 동안 저장 디바이스를 고온 환경에 남겨두지 않아야한다는 것을 표시한다.
앞에서 설명된 본 발명의 세부적인 설명은 예시 및 설명의 목적으로 제공된 것이다. 본 발명을 개시되는 이러한 형태에 정확히 한정시키려 하거나 이러한 형태만이 본 발명의 전부가 되도록 의도된 것이 아니다. 상기의 설명으로부터 많은 수정 및 변경이 가능하다. 상기 설명된 실시예들은 본 발명의 원리 및 그 실제 응용을 가장 잘 설명하기 위해서, 그러므로써 본 발명의 기술분야에서 숙련된 기술을 가진자들이 다양한 실시예 및 고려되는 특별한 사용에 적합한 다양한 수정을 통해 본 발명을 가장 잘 이용할 수 있도록 하기 위해서 선택되었다. 본 발명의 범위는 본 명세서에 첨부되는 특허청구범위에 의해 정의되도록 의도되었다.

Claims (15)

  1. 비휘발성 저장 디바이스를 동작시키기 위한 방법으로서,
    상기 디바이스 내의 제1 그룹의 비휘발성 저장 소자들에 저장된 데이터의 리프레시가 수행되어야함을, 상기 제1 그룹의 상기 비휘발성 저장 소자들 중 하나 이상의 상태(condition)에 근거하여 결정하는 단계(806);
    상기 디바이스 내의 제2 그룹의 비휘발성 저장 소자들이 리프레시 과정(refresh procedure)을 거쳐야함을, 상기 제1 그룹의 비휘발성 저장 소자들이 최종 프로그래밍된 때와 대비하여 상기 제2 그룹의 비휘발성 저장 소자들이 언제 최종 프로그래밍 되었는지에 근거하여 결정하는 단계(808);
    상기 제2 그룹의 비휘발성 저장 소자들에 대해 상기 리프레시 과정을 수행하는 단계(810); 및
    상기 제1 그룹을, 제1 드레시홀드 전압 분포 및 제2 드레시홀드 전압 분포를 포함하는 복수의 드레시홀드 전압 분포들로 프로그래밍하는 단계
    를 포함하며,
    상기 디바이스 내의 제1 그룹의 비휘발성 저장 소자들에 저장된 데이터의 리프레시가 수행되어야함을 결정하는 단계는,
    상기 제1 그룹의 비휘발성 메모리 셀들의 드레시홀드 분포를 결정하는 단계;
    상기 드레시홀드 분포에 대한 기준점(reference point)을 결정하는 단계; 및
    상기 기준점의 시프트에 근거하여 상기 제1 그룹에 저장된 데이터가 리프레시되어야 하는지 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  2. 제1 항에 있어서,
    상기 리프레시 과정을 수행하는 단계는,
    상기 제2 그룹의 비휘발성 저장 소자들 중 하나 이상의 상태에 근거하여, 상기 제2 그룹의 비휘발성 저장 소자들 내에 저장된 데이터를 리프레시할지 여부를 결정하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  3. 제1항 또는 2항에 있어서, 상기 디바이스 내의 제2 그룹의 비휘발성 저장 소자들이 리프레시 과정를 거쳐야함을 결정하는 단계는,
    상기 디바이스 내의 어떤 비휘발성 저장 소자들이 상기 제1 그룹의 비휘발성 저장 소자들보다 먼저 프로그래밍되었는지를 결정하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  4. 제1항에 있어서,
    상기 디바이스 내의 제2 그룹의 비휘발성 저장 소자들이 리프레시 과정를 거쳐야함을 결정하는 단계는,
    상기 제1 그룹의 비휘발성 저장 소자들과 관련(association)된 제1 타임 스탬프에 액세스하는 단계와, 상기 제1 타임 스탬프는 상기 제1 그룹의 비휘발성 저장 소자들이 최종 프로그래밍된 때를 표시하며;
    상기 디바이스 내의 비휘발성 저장 소자들의 블록들과 관련된 타임 스탬프들에 액세스하는 단계와, 상기 타임 스탬프들은 상기 비휘발성 저장 소자들의 블록들 각각이 최종 프로그래밍된 때를 표시하며; 그리고
    상기 블록들 중 어떤 불록들이 상기 제1 타임 스탬프보다 이른(earlier) 타임 스탬프들과 관련되어있는지를 결정하는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  5. 삭제
  6. 제1항에 있어서, 상기 드레시홀드 분포에 대한 기준점을 결정하는 단계는,
    상기 제1 그룹의 비휘발성 저장 소자들의 적어도 일부에 복수의 판독 기준 전압들을 인가하는 단계와, 상기 판독 기준 전압들은 상기 제1 드레시홀드 전압 분포 및 상기 제2 드레시홀드 전압 분포의 일부를 포함하는 전압 범위에 걸쳐 인가되며,
    상기 판독 기준 전압들을 인가한 것에 근거하여 상기 드레시홀드 분포 내의 밸리(valley)를 결정하는 단계를 포함하며, 상기 밸리는 상기 기준점인 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  7. 제6 항에 있어서, 상기 제1 그룹은 복수의 워드 라인들과 관련되고, 상기 방법은 상기 복수의 판독 기준 전압들을 인가하기 위하여 상기 워드 라인들 중 제1 워드 라인을 랜덤하게 선택하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  8. 제7 항에 있어서, 상기 디바이스 내의 제1 그룹의 비휘발성 저장 소자들에 저장된 데이터의 리프레시가 수행되어야함을 결정하는 단계는 또한 다른 워드 라인들(the other word lines)의 위치(position)에 대비되는 상기 제1 워드 라인의 위치에 근거한 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  9. 제8 항에 있어서, 상기 디바이스 내의 제1 그룹의 비휘발성 저장 소자들에 저장된 데이터의 리프레시가 수행되어야함을 결정하는 단계는 또한 상기 제1 그룹의 하나 이상의 비휘발성 저장 소자들이 프로그래밍된 횟수(number of times)에 근거한 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  10. 제1항에 있어서,
    상기 디바이스 내의 제2 그룹의 비휘발성 저장 소자들이 리프레시 과정을 거쳐야함을 결정하는 단계는,
    상기 디바이스 내의 비휘발성 소자들의 복수의 그룹들 각각에 대한 순서 번호(sequence number)에 액세스하는 단계와, 상기 순서 번호들은 상기 복수의 그룹들이 프로그래밍된 순서를 표시하고, 상기 순서 번호들은 상기 제1 그룹에 대한 제1 순서 번호와 상기 제2 그룹에 대한 제2 순서 번호를 포함하며; 그리고
    상기 제1 순서 번호보다 낮은 순서 번호를 가지는 그룹들에 저장된 데이터가 리프레시되어야함을 결정하는 단계를 포함하며, 상기 제2 순서 번호는 상기 제1 순서 번호보다 낮은 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  11. 제1 항에 있어서, 상기 리프레시 과정을 수행하는 단계는,
    상기 제2 그룹의 비휘발성 저장 소자들에 데이터 무결성 문제(data integrity problem)이 존재하는지 여부를 결정함이 없이 상기 제2 그룹의 비휘발성 저장 소자들에 저장된 데이터를 리프레시하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 디바이스를 동작시키기 위한 방법.
  12. 비휘발성 저장 디바이스로서,
    제1 그룹(블록 i) 및 제2 그룹(블록 i+n)을 포함하는 복수의 비휘발성 저장 소자들의 그룹들과; 그리고
    상기 복수의 비휘발성 저장 소자들의 그룹들과 통신하는 관리 회로(220, 230, 240, 242, 244)를 포함하며, 상기 관리 회로는 상기 제1 그룹의 비휘발성 저장 소자들에 중 하나 이상의 조건에 근거하여 상기 제1 그룹의 비휘발성 저장 소자들에 저장된 데이터의 리프레시가 수행되어야함을 결정하고, 상기 관리 회로는 상기 제1 그룹의 비휘발성 저장 소자들이 최종 프로그래밍된 때와 대비하여 상기 제2 그룹의 비휘발성 저장 소자들이 언제 최종 프로그래밍 되었는지에 근거하여, 상기 제2 그룹의 비휘발성 저장 소자들이 리프레시 과정(refresh procedure)를 거쳐야함을 결정하고, 상기 관리 회로는 상기 제2 그룹에 대해 리프레시 과정을 수행하며,
    상기 관리 회로는 상기 제1 그룹을 제1 드레시홀드 전압 분포 및 제2 드레시홀드 전압 분포를 포함하는 복수의 드레시홀드 전압 분포들로 프로그래밍하며, 상기 관리 회로는 상기 제1 그룹의 비휘발성 저장 소자들의 드레시홀드 분포를 결정하고, 상기 관리 회로는 상기 드레시홀드 분포 내의 밸리(valley)를 결정하고, 상기 관리 회로는 상기 밸리에서의 시프트에 근거하여 상기 제1 그룹의 비휘발성 저장 소자들에 저장된 데이터의 리프레시가 수행되어야하는지 여부를 결정하는 것을 특징으로 하는 비휘발성 저장 디바이스.
  13. 삭제
  14. 제12항에 있어서,
    상기 관리 회로는 상기 제1 그룹의 비휘발성 저장 소자들의 적어도 일부에 복수의 판독 기준 전압들을 인가함으로써 상기 밸리를 결정하고, 상기 관리 회로는 상기 제1 드레시홀드 전압 분포 및 상기 제2 드레시홀드 전압 분포의 일부를 포함하는 범위에 걸쳐 상기 기준 전압을 인가하는 것을 특징으로하는 비휘발성 저장 디바이스.
  15. 제12 항에 있어서, 상기 관리 회로는, 상기 제1 그룹이 최종 프로그래밍되기 전에 상기 제2 그룹이 최종 프로그래밍되었는지에 근거하여, 상기 제2 그룹의 비휘발성 저장 소자들이 리프레시 과정을 거쳐야하는지 여부를 결정하는 것을 특징으로 하는 비휘발성 저장 디바이스.
KR1020117016629A 2008-12-18 2009-09-30 비휘발성 저장장치를 위한 데이터 리프레시 KR101565564B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/338,879 US7859932B2 (en) 2008-12-18 2008-12-18 Data refresh for non-volatile storage
US12/338,879 2008-12-18

Publications (2)

Publication Number Publication Date
KR20110106378A KR20110106378A (ko) 2011-09-28
KR101565564B1 true KR101565564B1 (ko) 2015-11-03

Family

ID=41393629

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117016629A KR101565564B1 (ko) 2008-12-18 2009-09-30 비휘발성 저장장치를 위한 데이터 리프레시

Country Status (7)

Country Link
US (2) US7859932B2 (ko)
EP (1) EP2368251B1 (ko)
JP (1) JP5638537B2 (ko)
KR (1) KR101565564B1 (ko)
CN (1) CN102246241B (ko)
TW (1) TW201027541A (ko)
WO (1) WO2010080185A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194687B2 (en) 2019-01-02 2021-12-07 SK Hynix Inc. Controller and operation method thereof

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141477B2 (en) * 2007-10-12 2015-09-22 International Business Machines Corporation Data protection for variable length records by utilizing high performance block storage metadata
US8230317B2 (en) * 2008-04-09 2012-07-24 International Business Machines Corporation Data protection method for variable length records by utilizing high performance block storage metadata
US7859932B2 (en) * 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage
US8190832B2 (en) * 2009-01-29 2012-05-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
US20100199020A1 (en) * 2009-02-04 2010-08-05 Silicon Storage Technology, Inc. Non-volatile memory subsystem and a memory controller therefor
KR20100102925A (ko) * 2009-03-12 2010-09-27 삼성전자주식회사 리드 리클레임 신호를 발생하는 불휘발성 메모리 장치 및 이를 포함하는 메모리 시스템
US8806144B2 (en) 2009-05-12 2014-08-12 Stec, Inc. Flash storage device with read cache
US8370712B2 (en) * 2009-07-23 2013-02-05 International Business Machines Corporation Memory management in a non-volatile solid state memory device
US8467249B2 (en) * 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
JP2012048770A (ja) * 2010-08-24 2012-03-08 Toshiba Corp 不揮発性半導体記憶装置、及び、メモリシステム
US8484542B2 (en) * 2011-02-08 2013-07-09 Sandisk Technologies Inc. Data recovery using additional error correction coding data
US8892844B2 (en) 2011-03-07 2014-11-18 Micron Technology, Inc. Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers
US8756474B2 (en) * 2011-03-21 2014-06-17 Denso International America, Inc. Method for initiating a refresh operation in a solid-state nonvolatile memory device
US10838886B2 (en) 2011-04-19 2020-11-17 Micron Technology, Inc. Channel depth adjustment in memory systems
US8650353B2 (en) * 2011-07-01 2014-02-11 Intel Corporation Apparatus, system, and method for refreshing non-volatile memory
US8681547B2 (en) * 2011-08-23 2014-03-25 Micron Technology, Inc. Memory cell coupling compensation
US8406053B1 (en) 2011-09-21 2013-03-26 Sandisk Technologies Inc. On chip dynamic read for non-volatile storage
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
KR20130077401A (ko) * 2011-12-29 2013-07-09 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 구동 방법
US8934306B2 (en) * 2012-03-06 2015-01-13 Micron Technology, Inc. Memory and sense parameter determination methods
US20130311550A1 (en) * 2012-05-17 2013-11-21 Infinite Convergence Solutions, Inc Multi-site Server and Client Resynchronization Process and Devices
US9053808B2 (en) 2012-06-21 2015-06-09 Sandisk Technologies Inc. Flash memory with targeted read scrub algorithm
US9236110B2 (en) 2012-06-30 2016-01-12 Intel Corporation Row hammer refresh command
US9117544B2 (en) 2012-06-30 2015-08-25 Intel Corporation Row hammer refresh command
US8938573B2 (en) 2012-06-30 2015-01-20 Intel Corporation Row hammer condition monitoring
US9036417B2 (en) 2012-09-06 2015-05-19 Sandisk Technologies Inc. On chip dynamic read level scan and error detection for nonvolatile storage
US9466382B2 (en) 2012-11-14 2016-10-11 Sandisk Technologies Llc Compensation for sub-block erase
CN103839578B (zh) * 2012-11-27 2017-02-08 广东华晟数据固态存储有限公司 一种提高基于nand的固态存储器数据保持时间的方法
US9627085B2 (en) * 2012-11-29 2017-04-18 Silicon Motion Inc. Refresh method for flash memory and related memory controller thereof
US9384821B2 (en) 2012-11-30 2016-07-05 Intel Corporation Row hammer monitoring based on stored row hammer threshold value
US8717826B1 (en) * 2012-12-11 2014-05-06 Apple Inc. Estimation of memory cell wear level based on saturation current
US8988941B2 (en) 2012-12-18 2015-03-24 SanDisk Tehcnologies Inc. Select transistor tuning
US9230684B2 (en) * 2012-12-19 2016-01-05 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method
US9251885B2 (en) 2012-12-28 2016-02-02 Intel Corporation Throttling support for row-hammer counters
CN103927272A (zh) * 2013-01-16 2014-07-16 建兴电子科技股份有限公司 固态储存装置及其数据保存方法
EP2951832A4 (en) * 2013-01-31 2017-03-01 Hewlett-Packard Enterprise Development LP Ram refresh rate
US9218890B2 (en) 2013-06-03 2015-12-22 Sandisk Technologies Inc. Adaptive operation of three dimensional memory
KR102127416B1 (ko) 2013-06-27 2020-06-26 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 읽기 방법
TWI543189B (zh) * 2013-07-11 2016-07-21 威盛電子股份有限公司 資料儲存裝置以及快閃記憶體控制方法
CN103927128B (zh) 2013-07-11 2017-03-01 威盛电子股份有限公司 数据储存装置以及快闪存储器控制方法
TWI490870B (zh) * 2013-08-06 2015-07-01 Silicon Motion Inc 資料儲存裝置及其資料維護方法
CN104346236B (zh) 2013-08-06 2018-03-23 慧荣科技股份有限公司 数据储存装置及其数据维护方法
US9263158B2 (en) * 2013-08-16 2016-02-16 Seagate Technology Llc Determining data retention time in a solid-state non-volatile memory
US9142324B2 (en) 2013-09-03 2015-09-22 Sandisk Technologies Inc. Bad block reconfiguration in nonvolatile memory
US9263136B1 (en) * 2013-09-04 2016-02-16 Western Digital Technologies, Inc. Data retention flags in solid-state drives
US9281046B2 (en) * 2013-10-08 2016-03-08 Advanced Micro Devices, Inc. Data processor with memory controller for high reliability operation and method
US9424179B2 (en) 2013-10-17 2016-08-23 Seagate Technology Llc Systems and methods for latency based data recycling in a solid state memory system
US9208847B2 (en) 2013-10-30 2015-12-08 Taiwan Semiconductor Manufacturing Co., Ltd. Memory devices with improved refreshing operations
JP6430740B2 (ja) * 2013-11-05 2018-11-28 エルエスアイ コーポレーション ソリッドステートメモリシステムにおけるレイテンシーベースのデータ再利用のシステム及び方法
US9218886B2 (en) 2013-12-10 2015-12-22 SanDisk Technologies, Inc. String dependent parameter setup
KR102148389B1 (ko) 2014-06-11 2020-08-27 삼성전자주식회사 오버 라이트 동작을 갖는 메모리 시스템 및 그에 따른 동작 제어방법
KR102292172B1 (ko) 2014-06-23 2021-08-25 삼성전자주식회사 불휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법
KR102128406B1 (ko) 2014-09-26 2020-07-10 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102225618B1 (ko) * 2014-09-30 2021-03-12 한화테크윈 주식회사 실패 시나리오로부터 기록된 데이터의 시간 관련 메타데이터의 공간 효율적인 복구
US9996297B2 (en) 2014-11-14 2018-06-12 SK Hynix Inc. Hot-cold data separation method in flash translation layer
US9563504B2 (en) 2014-12-05 2017-02-07 Sandisk Technologies Llc Partial block erase for data refreshing and open-block programming
KR102250423B1 (ko) 2015-01-13 2021-05-12 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US9595342B2 (en) * 2015-01-20 2017-03-14 Sandisk Technologies Llc Method and apparatus for refresh programming of memory cells based on amount of threshold voltage downshift
US9472298B1 (en) 2015-05-13 2016-10-18 Sandisk Technologies Llc Dynamic read valley search in non-volatile memory
US9401216B1 (en) 2015-09-22 2016-07-26 Sandisk Technologies Llc Adaptive operation of 3D NAND memory
US9691473B2 (en) 2015-09-22 2017-06-27 Sandisk Technologies Llc Adaptive operation of 3D memory
KR102389259B1 (ko) * 2015-10-15 2022-04-22 에스케이하이닉스 주식회사 메모리 장치 및 메모리 장치의 동작 방법
US9910730B2 (en) 2015-10-21 2018-03-06 Sandisk Technologies Llc System for handling erratic word lines for non-volatile memory
US9857999B2 (en) * 2015-11-09 2018-01-02 Western Digital Technologies, Inc. Data retention charge loss sensor
TWI594248B (zh) * 2015-12-30 2017-08-01 華邦電子股份有限公司 記憶體裝置的刷新方法以及可調整刷新操作頻率的記憶體裝置
US10026488B2 (en) 2016-08-18 2018-07-17 Sandisk Technologies Llc Non-volatile memory with read disturb detection for open blocks
JP6674361B2 (ja) * 2016-09-29 2020-04-01 キオクシア株式会社 メモリシステム
CN107481764B (zh) * 2017-07-31 2020-06-12 深圳芯邦科技股份有限公司 一种3D Nand Flash扫描检测方法和系统
US10269442B1 (en) 2017-12-28 2019-04-23 Micron Technology, Inc. Drift mitigation with embedded refresh
US10446246B2 (en) * 2018-03-14 2019-10-15 Silicon Storage Technology, Inc. Method and apparatus for data refresh for analog non-volatile memory in deep learning neural network
TWI648739B (zh) 2018-03-20 2019-01-21 大陸商深圳大心電子科技有限公司 記憶體管理方法與儲存控制器
TWI650757B (zh) 2018-03-30 2019-02-11 大陸商深圳大心電子科技有限公司 解碼方法以及儲存控制器
CN110390976B (zh) * 2018-04-19 2021-06-08 华邦电子股份有限公司 存储器装置及其数据更新方法
TWI657456B (zh) 2018-05-14 2019-04-21 慧榮科技股份有限公司 用來於記憶裝置中藉助於機器學習來進行的記憶體存取管理之方法,記憶裝置及其控制器以及電子裝置
US10585625B2 (en) * 2018-07-12 2020-03-10 Micron Technology, Inc. Determination of data integrity based on sentinel cells
KR102567111B1 (ko) * 2018-08-02 2023-08-14 삼성전자주식회사 스토리지 디바이스 및 스토리지 디바이스의 동작 방법
JP2020038738A (ja) 2018-09-03 2020-03-12 キオクシア株式会社 不揮発性メモリ及びメモリシステム
JP2020047339A (ja) 2018-09-18 2020-03-26 キオクシア株式会社 メモリシステム
US11086529B2 (en) * 2018-09-26 2021-08-10 Western Digital Technologies, Inc. Data storage systems and methods for improved data relocation based on read-level voltages associated with error recovery
JP2020107376A (ja) 2018-12-27 2020-07-09 キオクシア株式会社 メモリシステム
TWI690928B (zh) * 2019-01-10 2020-04-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
US11056166B2 (en) * 2019-07-17 2021-07-06 Micron Technology, Inc. Performing a refresh operation based on a characteristic of a memory sub-system
JP7087013B2 (ja) * 2020-03-06 2022-06-20 キオクシア株式会社 メモリシステムおよび不揮発性メモリの制御方法
CN111798906A (zh) * 2020-06-29 2020-10-20 深圳市芯天下技术有限公司 提高非型闪存数据保持能力方法、系统、存储介质和终端
TWI782490B (zh) * 2020-07-02 2022-11-01 日商鎧俠股份有限公司 接收終端、通訊系統及程式
JP2022012874A (ja) 2020-07-02 2022-01-17 キオクシア株式会社 受信端末、通信システム、およびプログラム
KR20220060572A (ko) 2020-11-04 2022-05-12 삼성전자주식회사 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415352B1 (en) 1999-02-24 2002-07-02 Sanyo Electric Co., Ltd. One-chip microcomputer and method of refreshing its data
US7193919B2 (en) 2003-09-30 2007-03-20 Infineon Technologies Ag Selective bank refresh
JP2008090778A (ja) 2006-10-05 2008-04-17 Matsushita Electric Ind Co Ltd 不揮発性メモリ用メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、不揮発性メモリのメモリ制御方法
JP2008262614A (ja) 2007-04-10 2008-10-30 Mega Chips Corp 不揮発性半導体記憶装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715193A (en) * 1996-05-23 1998-02-03 Micron Quantum Devices, Inc. Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks
JP3596989B2 (ja) * 1996-10-03 2004-12-02 邦博 浅田 半導体記憶装置
US5852582A (en) * 1997-02-18 1998-12-22 Advanced Micro Devices, Inc. Non-volatile storage device refresh time detector
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US6226200B1 (en) * 1999-11-17 2001-05-01 Motorola Inc. In-circuit memory array bit cell threshold voltage distribution measurement
DE10040890C1 (de) * 2000-08-18 2002-01-31 Trw Automotive Electron & Comp System und Verfahren zum sicheren Hochtemperaturbetrieb eines Flash-Speichers
EP1233421B1 (en) * 2001-02-19 2007-07-11 STMicroelectronics S.r.l. Method for refreshing stored data in an electrically erasable and programmable non-volatile memory
JP3812933B2 (ja) * 2001-04-19 2006-08-23 シャープ株式会社 ファイルシステムおよびその制御方法
US6650587B2 (en) * 2001-11-19 2003-11-18 Micron Technology, Inc. Partial array self-refresh
US6751143B2 (en) * 2002-04-11 2004-06-15 Micron Technology, Inc. Method and system for low power refresh of dynamic random access memories
JP4078119B2 (ja) * 2002-04-15 2008-04-23 富士通株式会社 半導体メモリ
US7327619B2 (en) 2002-09-24 2008-02-05 Sandisk Corporation Reference sense amplifier for non-volatile memory
FR2851074B1 (fr) * 2003-02-10 2005-04-22 St Microelectronics Sa Memoire flash sectorisee comprenant des moyens de controle et de rafraichissement de cellules memoire
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
KR100542701B1 (ko) * 2003-11-18 2006-01-11 주식회사 하이닉스반도체 낸드 플래시 메모리 소자의 문턱전압 측정 방법
US7200062B2 (en) * 2004-08-31 2007-04-03 Micron Technology, Inc. Method and system for reducing the peak current in refreshing dynamic random access memory devices
JP4791912B2 (ja) * 2006-08-31 2011-10-12 株式会社東芝 不揮発性半導体記憶装置及び不揮発性記憶システム
KR100827695B1 (ko) * 2006-11-03 2008-05-07 삼성전자주식회사 연약 셀을 표식자로서 활용하는 불휘발성 반도체 메모리장치
JP4525816B2 (ja) * 2007-09-28 2010-08-18 株式会社デンソー 電子機器及びプログラム
JP4489127B2 (ja) * 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
US7859932B2 (en) * 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415352B1 (en) 1999-02-24 2002-07-02 Sanyo Electric Co., Ltd. One-chip microcomputer and method of refreshing its data
US7193919B2 (en) 2003-09-30 2007-03-20 Infineon Technologies Ag Selective bank refresh
JP2008090778A (ja) 2006-10-05 2008-04-17 Matsushita Electric Ind Co Ltd 不揮発性メモリ用メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、不揮発性メモリのメモリ制御方法
JP2008262614A (ja) 2007-04-10 2008-10-30 Mega Chips Corp 不揮発性半導体記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194687B2 (en) 2019-01-02 2021-12-07 SK Hynix Inc. Controller and operation method thereof

Also Published As

Publication number Publication date
US20110026353A1 (en) 2011-02-03
JP5638537B2 (ja) 2014-12-10
CN102246241B (zh) 2014-04-16
JP2012513072A (ja) 2012-06-07
US20100157671A1 (en) 2010-06-24
WO2010080185A1 (en) 2010-07-15
EP2368251B1 (en) 2014-09-10
US7859932B2 (en) 2010-12-28
TW201027541A (en) 2010-07-16
US8098537B2 (en) 2012-01-17
CN102246241A (zh) 2011-11-16
EP2368251A1 (en) 2011-09-28
KR20110106378A (ko) 2011-09-28

Similar Documents

Publication Publication Date Title
KR101565564B1 (ko) 비휘발성 저장장치를 위한 데이터 리프레시
KR101569862B1 (ko) 비휘발성 저장 소자를 위한 소거-검증 프로세스
KR101566460B1 (ko) 비휘발성 메모리 어레이 중 마지막 워드 라인의 데이터 보존 개선
KR101502104B1 (ko) 프로그래밍 동안에 간섭의 영향을 감소시키는 방법
EP2467854B1 (en) Selective memory cell program and erase
KR101163162B1 (ko) 비휘발성 저장소자를 위한 가변 프로그램
KR101564399B1 (ko) 비휘발성 메모리에서의 판독 디스터브 완화
KR101655352B1 (ko) 고유 임계 전압 분포 탐지에 의한 메모리의 프로그램 디스터브 예측
EP1991989B1 (en) Read operation for non-volatile storage with compensation for floating gate coupling
EP2417602B1 (en) Two pass erase for non-volatile storage
KR101904581B1 (ko) 고장난 워드 라인 스크린 및 데이터 복원을 갖는 비휘발성 저장장치
KR20120100912A (ko) 비휘발성 저장 소자 내에서 위험한 상태의 데이터를 식별하는 방법
TWI397075B (zh) 交替式讀取模式
KR20160026832A (ko) 3차원 메모리의 적응형 동작
WO2014137651A1 (en) Non-volatile storage with process that reduces read disturb on end wordlines
KR20120039562A (ko) 비휘발성 저장 소자에 대한 프로그래밍 완료의 검출
EP2948956B1 (en) Recovery of nearby data in programming of non-volatile multi-level multiple memory die
JP2009516318A (ja) タイミング情報による逆結合効果
US9047974B2 (en) Erased state reading

Legal Events

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