KR20140065393A - 복수 워드라인의 동시적 감지 및 nand 고장의 검출 - Google Patents
복수 워드라인의 동시적 감지 및 nand 고장의 검출 Download PDFInfo
- Publication number
- KR20140065393A KR20140065393A KR1020147004270A KR20147004270A KR20140065393A KR 20140065393 A KR20140065393 A KR 20140065393A KR 1020147004270 A KR1020147004270 A KR 1020147004270A KR 20147004270 A KR20147004270 A KR 20147004270A KR 20140065393 A KR20140065393 A KR 20140065393A
- Authority
- KR
- South Korea
- Prior art keywords
- page
- memory
- data
- word lines
- read
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
- G11C29/50004—Marginal testing, e.g. race, voltage or current testing of threshold voltage
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
기입후 판독을 위한 기술들이 제시된다. 예시적 실시예에서, 복수의 워드라인들의 조합된 동시적 감지는 이들 워드라인들 중 하나 이상 내에 문제를 확인하기 위해 사용된다. 즉, 감지 전압들은 결과적인 도통이 동일 비트라인 상에서 측정되는 하나 이상의 메모리 셀의 제어 게이트들에 동시에 인가된다. 조합된 감지 결과는 복수의 워드라인들의 셀 전압 분포(CVD)의 어떤 통계를 측정하고 이를 예상되는 값에 비교하기 위해 사용된다. 측정된 통계가 예상된 것과 다른 경우에, 이것은 감지된 워드라인들 중 하나 이상이 고장을 나타낼 수 있고 한 그룹의 워드라인들의 더 철저한 검사가 수행될 수 있음을 나타낼 수 있다.
Description
본 출원은 반도체 플래시 메모리와 같은 재프로그램가능한 비휘발성 메모리 시스템의 동작에 관한 것으로, 특히 메모리 동작들에서 오류들의 취급 및 효율적 관리에 관한 것이다.
전하를 비휘발성으로 저장할 수 있는, 특히 소형 폼 팩터 카드로서 패키지되는 EEPROM 및 플래시 EEPROM 형태의 고체상태 메모리는 최근에 다양한 모바일 및 휴대 장치들, 특히 정보기기 및 소비자 전자제품들에서 선택되는 저장장치가 되었다. 고체상태 메모리이기도 한 RAM(random access momory)과는 달리, 플래시 메모리는 비휘발성이고 전원이 턴 오프 된 뒤라도 자신의 저장된 데이터를 보존한다. 또한, ROM(판독 전용 메모리)와는 달리, 플래시 메모리는 디스크 저장 장치와 유사하게 재기입할 수 있다. 높은 비용에도 불구하고 플래시 메모리는 점점 더 대량 저장응용들에서 사용되고 있다. 하드드라이브들 및 플로피 디스크들과 같은 회전하는 자기 매체에 기초한 종래의 대량 저장장치는 모바일 및 휴대 환경엔 적합하지 않다. 이것은 디스크 드라이브들이 부피가 커지기 쉽고, 기계적 고장이 나기 쉬우며 큰 레이턴시 및 큰 전력요건을 갖기 때문이다. 이들 바람직하지 못한 속성들로 인해서 디스크 기반의 저장장치는 대부분의 모바일 및 휴대 응용들에서 실현되지 못한다. 반면, 내장형이면서도 착탈가능한 카드 형태인 플래시 메모리는 이의 소형 크기, 저 전력 소비, 고속 및 고 신뢰도 특징으로 인해 모바일 및 휴대 환경에서 이상적으로 적합하다.
플래시 EEPROM은, 소거될 수 있고 새로운 데이터가 이들의 메모리 셀들에 기입 또는 "프로그램"되게 할 수 있는 점에서 EEPROM(전기적 소거가능 및 프로그램가능한 판독전용 메모리)과 유사하다. 이들은, 전계효과 트랜지스터 구조에서, 소스영역과 드레인 영역 사이에 있는 반도체 기판 내 채널영역 위에 배치된 플로팅(비접속된) 도전성 게이트를 이용한다. 이때 제어 게이트는 플로팅 게이트 위에 설치된다. 트랜지스터의 임계전압 특징은 플로팅 게이트 상에 보존되는 전하량에 의해 제어된다. 즉, 플로팅 게이트 상에 소정 레벨의 전하에 대해서, 소스영역과 드레인 영역간에 도통이 되게 트랜지스터가 턴 "온"이 되기 전에 제어 게이트에 인가되어야 하는 대응하는 전압(임계)이 있다. 특히, 플래시 EEPROM과 같은 플래시 메모리는 메모리 셀들의 전체 블록들이 동시에 소거될 수 있게 한다.
플로팅 게이트는 일 범위의 전하들을 보존할 수 있고 따라서 임계 전압 윈도우 내의 임의의 임계 전압 레벨에 프로그램될 수 있다. 임계 전압 윈도우의 크기는 장치의 최소 및 최대 임계 레벨들에 의해 그 범위가 정해지는데, 이는 플로팅 게이트에 프로그램될 수 있는 일 범위의 전하들에 대응한다. 임계 윈도우는 일반적으로 메모리 장치의 특징들, 동작조건들 및 이력에 따른다. 윈도우 내의 각각의 서로 구별되고 해상가능한 임계전압 레벨의 범위는 원리적으로 셀의 명확한 메모리 상태를 지정하는데 사용될 수 있다.
플래시 EEPROM 어레이의 각 저장 요소가 2진 모드에서 동작함으로써 단일 비트의 데이터를 저장하는 것이 현재 시판되는 제품들에서 일반적이며, 여기에서 저장 요소 트랜지스터들의 임계 레벨들의 두 범위들은 저장 레벨들로서 정의된다. 트랜지스터들의 임계 레벨들은 이들의 저장 요소들 상에 저장되는 전하 레벨들의 범위들에 대응한다. 메모리 어레이들의 크기를 축소시키는 것 외에, 경향은 한 비트 이상의 데이터를 각 저장 요소 트랜지스터에 저장함으로써 이러한 메모리 어레이들의 데이터 저장 밀도를 더욱 증가시키는 것이다. 이것은 각 저장 요소 트랜지스터에 대한 저장 상태들로서 2 이상의 임계 레벨들을 정의함으로써 달성되며, 현재는 이러한 4개의 상태들(저장 요소당 2 비트들의 데이터)이 상용 제품들에 포함되고 있다. 저장 요소당 16 상태들과 같은 더 많은 저장 상태들도 구현되고 있다. 각 저장 요소 메모리 트랜지스터는 실제로 동작될 수 있는 임계 전압들의 어떤 전체 범위(윈도우)를 가지며, 이 범위는 이를 위해 정의된 상태들의 수와 이에 상태들이 서로간에 명백하게 구별될 수 있게 하기 위한 상태들 사이에 마진들을 더한 것으로 분할된다. 명백히, 메모리 셀이 더 많은 비트들을 저장하게 구성될수록, 이것이 동작해야 하는 오류 마진은 더 작아지게 된다.
메모리 셀로서 작용하는 트랜지스터는 전형적으로 두 가지 메커니즘들 중 한 메커니즘에 의해 "프로그램된" 상태로 프로그램된다. "핫 전자 주입"에서, 드레인에 인가되는 높은(high) 전압은 기판 채널 영역을 지나는 전자들을 가속시킨다. 이와 동시에, 제어 게이트에 인가되는 높은 전압은 핫 전자들을 얇은 게이트 유전체를 통과해 플로팅 게이트로 가게 한다. "터널링 주입"에서는 높은 전압이 기판에 관하여 제어 게이트에 인가된다. 이렇게 하여, 기판으로부터 개재된 플로팅 게이트로 전자들이 가게 된다. 통상적으로 "프로그램"이라는 용어는 메모리 상태를 변경하기 위해 메모리 셀의 초기에 소거된 전하 저장 유닛에 전자들을 주입함으로써 메모리에 기입하는 것을 기술하기 위해 사용되었지만, 지금은 "기입" 또는 "기록"과 같은 보다 일반적인 용어들과 상호교환적으로 사용되었다.
메모리 장치는 많은 메커니즘들에 의해 소거될 수 있다. EEPROM에 있어서, 메모리 셀은 플로팅 게이트 내 전자들을 얇은 산화막을 통과하여 기판 채널 영역으로 터널링되게 하기 위해서(즉, 파울러-노다임 터널링) 제어 게이트에 관하여 기판에 높은 전압을 인가함으로써 전기적으로 소거될 수 있다. 통상적으로, EEPROM은 한 바이트씩 소거될 수 있다. 플래시 EEPROM에 있어서, 메모리는 한번에 전부 혹은 한번에 하나 이상의 최소 소거가능 블록들이 전기적으로 소거될 수 있는데, 여기서 최소 소거가능 블록은 하나 이상의 섹터들로 구성될 수 있고 각 섹터는 512 바이트 또는 그 이상의 바이트의 데이터를 저장할 수 있다.
메모리 장치는 전형적으로 카드 상에 실장될 수 있는 하나 이상의 메모리 칩들을 포함한다. 각 메모리 칩은 디코더들 및 소거, 기입 및 판독 회로들과 같은 주변 회로들에 의해 지원되는 메모리 셀들의 어레이를 포함한다. 더 정교한 메모리 장치들은 지능형의 고 레벨의 메모리 동작들 및 인터페이싱을 수행하는 제어기가 동반된다.
최근에 사용되는 많은 상업적으로 성공한 비휘발성 고체상태 메모리 장치들이 있다. 이들 메모리 장치들은 플래시 EEPROM일 수도 있고 혹은 서로 다른 유형들의 메모리 셀들을 채용할 수 있다. 플래시 메모리 및 시스템들 및 이들을 제조하는 방법들의 예들이 미국특허 5,070,032, 5,095,344, 5,315,541, 5,343,063, 5,661,053, 5,313,421, 6,222,762에 주어져 있다. 특히, NAND 스트링 구조들을 가진 플래시 메모리 장치가 미국특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다. 또한, 비휘발성 메모리 장치들은 전하를 저장하기 위한 유전층을 가진 메모리 셀들로부터 제조된다. 앞에서 기술된 도전성 플로팅 게이트 대신, 유전층이 사용된다. 유전 저장소자를 이용하는 이러한 메모리 장치들이, Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell" IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545에 기술되어 있다. ONO 유전층은 소스 확산영역과 드레인 확산영역 사이의 채널을 가로질러 확장하여 있다. 한 데이터 비트용의 전하는 드레인에 인접한 유전층에 모이고 다른 데이터 비트용의 전하는 소스에 인접한 유전층에 모인다. 예를 들면, 미국특허 5,768,192 및 6,011,725는 두 개의 이산화실리콘층들 사이에 개재된 트랩 유전층을 구비한 비휘발성 메모리 셀을 개시하고 있다. 복수 상태 데이터 저장은 유전층 내 공간적으로 분리된 전하 저장 영역들의 2진 상태들을 개별적으로 판독함으로써 구현된다.
판독 및 프로그램 성능을 개선하기 위해서, 어레이 내 복수의 전하 저장소자들 또는 메모리 트랜지스터들은 병렬로 판독 또는 프로그램된다. 이에 따라, 한 "페이지"의 메모리 소자들은 함께 판독 혹은 프로그램된다. 현존의 메모리 아키텍처들에서, 한 행은 전형적으로 몇개의 인터리빙된 페이지들을 내포하거나 한 페이지를 구성할 수도 있다. 한 페이지의 모든 메모리 소자들은 함께 판독 또는 프로그램될 것이다.
기입된 데이터 내 오류들
자기 디스크 저장 시스템들을 포함하여, 다른 것들만이 아니라, 본원에 기술된 메모리 시스템들의 유형들에서, 저장되는 데이터의 무결성은 오류 정정 기술을 사용하여 유지된다. 대부분 공통적으로, 한번에 저장되고 데이터와 함께 ECC가 저장되는 각 섹터 혹은 이외 다른 단위의 데이터에 대해 오류 정정 코드(ECC)가 계산된다. ECC는 대부분 공통적으로 ECC가 계산된 단위 그룹의 데이터와 함께 저장된다. 단위 그룹의 사용자 데이터는 섹터 또는 복수-섹터 페이지일 수 있다. 이 데이터가 메모리로부터 판독될 때, 판독되는 사용자 데이터의 무결성을 판정하기 위해 ECC가 사용된다. 단위 그룹의 데이터 내에 데이터의 오류 비트들은 흔히 ECC를 사용하여 정정될 수 있다.
경향은 시스템에 더 많은 메모리 셀들을 둘 수 있고 더 작은 호스트 장치들에 맞게 시스템을 가능한 한 작게 하기 위해서 메모리 시스템들의 크기를 감소시키는 것이다. 메모리 용량은 회로들의 고 집적과 더 많은 비트들의 데이터를 저장하게 각 메모리 셀을 구성하는 것을 겸함으로써 증가된다. 두 기술들은 증가하는 더 엄격한 오류 마진을 갖고 메모리가 동작할 것을 요구한다. 이에 따라 이것은 오류들을 정정할 것을 ECC에게 더 많이 요구한다.
ECC는 소정 수의 오류 비트들을 정정하게 설계될 수 있다. 더 많은 비트들을 정정해야 할수록, ECC는 더 복잡해지고 더 계산 집약적이 될 것이다. 질적인 보증을 위해서, 종래의 ECC들은 메모리 장치의 수명 말기에 예상되는 최악의 경우의 셀 오류율에 기초하여 설계된다. 이에 따라, 이들은 통계적 모집단의 오류율의 맨 끝까지 최대 수의 오류 비트들을 정정해야 한다.
플래시 메모리가 연수가 지남에 따라, 이의 오류율은 장치의 수명 말기에 급속히 증가한다. 이에 따라, 최악의 경우에 대해 설계된 강력한 ECC는 메모리 장치의 수명 말기에 오로지 이의 최대 용량을 적용해야 할 것이다.
최악의 경우의 수의 오류 비트들을 정정하기 위해 ECC를 사용하는 것은 상당량의 처리 시간을 소비할 것이다. 더 많은 비트들을 정정해야 할수록, 더 많은 계산시간이 요구된다. 메모리 성능은 저하될 것이다. 적합한 시간량 내에 ECC를 수행하기 위해 추가의 전용 하드웨어가 구현될 수도 있다. 이러한 전용 하드웨어는 제어기 ASIC 칩 상에 상당량의 공간을 차지할 수 있다. 또한, 장치의 대부분의 사용 시간 동안, ECC는 단지 미미하게 이용되므로, 이의 큰 오버헤드들이 낭비되고 실제적 이점들을 실현하지 못하게 된다.
따라서, 최악의 경우에 대해 설계된 것에 대해 자원 집약적 ECC에 대한 필요성이 없는 고 저장 용량의 비휘발성 메모리를 제공할 필요성이 있다.
제 1 세트의 측면들에서, 워드라인들 및 비트라인들을 따라 형성된 복수의 메모리 셀들을 포함하는 메모리 장치를 동작시키는 방법이 제시된다. 방법은 대응하는 복수의 선택된 워드라인들 및 하나 이상의 선택된 비트라인들을 따른 복수의 메모리 셀들의 프로그래밍을 포함하는 기입 동작을 수행하는 단계, 및 이어서, 복합 감지 동작을 수행하는 단계를 포함한다. 복합 감지 동작은 프로그래밍의 레벨들 간을 구별하기 위해 복수의 제 1 감지 전압들을 대응하는 복수의 선택된 워드라인들에 동시에 인가하는 단계; 및 하나 이상의 선택된 비트라인들 각각에 대해서, 복수의 선택된 워드라인들에 복수의 제 1 감지 전압들이 인가되는 동안에 복수의 선택된 워드라인들을 따른 대응하는 복수의 메모리 셀들의 제 1 조합된 감지 동작을 동시에 수행하는 단계를 포함한다. 제 1 조합된 감지 동작의 결과는 선택된 비트라인을 따른 복수의 메모리 셀들의 상태에 따른다.
다른 측면들은 한 블록의 플래시 메모리의 데이터 무결성을 체크하는 방법을 포함하며, 블록은 NAND-형 아키텍처를 가지며 각각이 하나 이상의 페이지들의 데이터를 저장하는 복수의 워드라인들을 포함한다. 방법은 복수의 N개의 제 1 기준 전압들을 발생하는 단계, 제 1 복수-페이지 감지 동작을 수행하는 단계, 및 제 1 복수-페이지 감지 동작의 결과에 기초하여 한 블록의 데이터의 데이터 무결성을 판정하는 단계를 포함한다. 모든 제 1 기준 전압들은 소정의 전압보다 작다. 제 1 복수-페이지 감지 동작은 제 1 기준 전압들의 각각을 블록의 동일한 한 세트의 NAND 스트링들에 대응하는 복수의 N개의 선택된 워드라인들 중 하나에 동시에 인가하는 단계, 및 선택된 워드라인들이 속하는 NAND 스트링들의 비선택된 워드라인들에 소정의 전압을 동시에 인가하는 단계를 포함한다.
본 발명의 여러 측면들, 잇점들, 특징들 및 실시예들은 이의 예시적 예들의 다음 설명에 포함되고 이의 설명은 동반된 도면들에 관련하여 취해질 것이다. 본원에서 참조되는 모든 특허들, 특허출원들, 논문들, 그외 공보, 문서 및 자료들은 모든 목적을 위해 이들 전부가 참조로서 본원에 포함된다. 포함시킨 공보, 문서 혹은 자료들의 어느 것과 본원 간에 용어들의 정의 혹은 사용에 있어 어떤 모순 혹은 상충되는 범위에 있어선 본원의 것들이 우선될 것이다.
도 1은 본 발명의 특징들이 구현되는 메모리 장치와 통신하는 호스트를 도시한 것이다.
도 2는 비휘발성 메모리 셀을 개요적으로 도시한 것이다.
도 3은 메모리 셀들의 NOR 어레이의 예를 도시한 것이다.
도 4는 예를 들면 NAND 구성으로 구성되고 병렬로 감지 또는 프로그램되는 한 페이지의 메모리 셀들을 도시한 것이다.
도 5a는 메모리 셀들의 어레이에 대해 한 뱅크의 p개의 감지 모듈들을 내포하는 도 1에 도시된 감지 모듈들을 상세히 도시한 것이다.
도 5b는 감지 증폭기을 포함하는 감지 모듈을 도시한 것이다.
도 6은 소거가능한 블록들로 구성되는 메모리 어레이의 예를 개요적으로 도시한 것이다.
도 7은 각 셀이 2개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 2진 메모리를 도시한 것이다.
도 8은 각 셀이 8개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 복수-상태 메모리를 도시한 것이다.
도 9는 ECC 필드를 내포하는 데이터 페이지를 개요적으로 도시한 것이다.
도 10a는 다양한 범위들의 표준편차들 σ에서 모집단의 백분률을 가진 오류율의 정규분포를 도시한 것이다.
도 10b는 표 형태로 도 10a의 분포를 도시한 것이다.
도 11은 플래시 메모리에 대한 오류들의 주 원인을 열거한 표이다.
도 12는 예시한 메모리 장치의 수명 초기 및 말기에 이 장치에 대한 추정된 총 오류들을 나타낸 표이다.
도 13은 종래의 ECC가 최악의 경우의 총 오류 ETOT를 정정하게 설계되어야 함을 예시한 표이다.
도 14a는 발명의 바람직한 실시예에 따라 두 부분들로 분할된 메모리 어레이를 도시한 것이다.
도 14b는 도 14a의 메모리 어레이의 제 1 부분에 데이터 페이지의 제 2 카피의 재기입을 도시한 것이다.
도 15는 도 14a 및 도 14b에 기술된 실시예에 따라 기입후 판독 및 적응형 재기입의 프로세스를 예시한 흐름도이다.
도 16a은 두 부분들로 분할된 메모리 어레이를 도시한 것이며, 발명의 바람직한 실시예에 따라 제 1 부분에는 캐시 섹션 및 재기입 섹션이 더 제공된다.
도 16b는 기입후 판독의 바람직한 실시예에 따른 페이지 비교 기술을 도시한 것이다.
도 16c는 기입후 판독이 제 2 부분에 데이터 페이지에 과도한 량의 오류를 판정한 후에 제 1 부분에의 재기입을 도시한 것이다.
도 17은 도 16a 내지 도 16c에 기술된 실시예에 따라 기입후 판독 및 적응형 재기입의 프로세스를 도시한 흐름도이다.
도 18은 소거 블록들로 구성된 메모리를 도시한 것이다.
도 19는 핫 카운트에 의해 판정되는 소정의 정도까지 메모리 장치의 연수가 지났을 때 활성화되는 오류 관리를 도시한 흐름도이다.
도 20a는 발명의 바람직한 실시예에 따라 두 부분들로 분할된 메모리 어레이를 도시한 것이다.
도 20b는 도 20a의 D3 블록이 기입후 판독 테스트에 실패한 다른 예를 도시한 것이다.
도 20c는 도 20b의 새로운 D3 블록이 기입후 판독 테스트에 다시 실패한 또 다른 예를 도시한 것이다.
도 21은 향상된 기입후 판독 오류 관리에 연관된 파라미터들의 예를 예시한 표이다. 표는 바람직하게는 메모리에 저장된 파일 시스템 구성 파일에 유지된다.
도 22a는 D1에서 D3으로의 폴딩을 갖는 메모리에 적용되는 EPWR 오류 관리의 바람직한 구현을 도시한 흐름도이다.
도 22b는 향상된 기입후 판독 오류 관리의 장치-연수에 종속적인 활성화 특징을 더 상세히 예시한 것이다.
도 22c는 향상된 기입후 판독 오류 관리의 바람직한 구현을 상세히 도시한 것이다.
도 23(0) ~ 도 23(3)은 바람직한 2-비트 논리 코드("LM" 코드)로 엔코딩되는 4-상태 메모리의 페이지별 프로그래밍을 예시한 것이다.
도 24a는 2-비트 LM 코드로 엔코딩되는 4-상태 메모리의 하위 비트를 구별하기 위해 요구되는 판독 동작을 도시한 것이다.
도 24b는 2-비트 LM 코드로 엔코딩되는 4-상태 메모리의 상위 비트를 구별하기 위해 요구되는 판독 동작을 도시한 것이다.
도 25(0) ~ 도 25(4)는 바람직한 3-비트 논리 코드("LM" 코드)로 엔코딩되는 8-상태 메모리의 프로그래밍을 도시한 것이다.
도 26a는 도 9에 도시된 것과 유사한 ECC 필드를 내포하는 ECC 페이지를 개요적으로 도시한 것이다.
도 26b는 데이터 페이지를 구성하는 복수의 ECC 페이지들을 도시한 것이다.
도 27은 가속화된 PWR의 일반적 실시예를 도시한 흐름도이다.
도 28은 도 27에 도시된 가속화된 PWR의 바람직한 실시예를 도시한 흐름도이다.
도 29는 워드라인 상에 일 그룹의 3-비트 메모리 셀들이 기입된 후에 기입후 판독을 위해 선택된 샘플을 도시한 것이다.
도 30은 3-비트 메모리에 데이터 상태들의 할당을 도시한 것이다.
도 31은 복수의 페이지들의 조합된 검증을 사용한 향상된 기입후 판독의 측면들을 도시한 예시적 흐름이다.
도 32는 도 30에 도시된 데이터 상태들의 맨 위에 페이지와 맨 아래 페이지를 XOR한 결과를 도시한 것이다.
도 33은 2진 포맷으로 기입된 데이터가 복수-상태 포맷으로 기입된 것과 동일한 데이터와 비교되는 기입후 검증 프로세스의 개요도이다.
도 34 ~ 도 36은 MLC 페이지 또는 페이지들이 대응하는 SLC 페이지들에 비교되는 EPWR의 일부 예시적 실시예들에 대한 흐름들이다.
도 37은 NAND형 어레이에서 표준 감지 동작의 개요도이다.
도 38은 동시적 복수의 워드라인 감지 동작의 예의 개요도이다.
도 39는 도 40 및 도 41에 도시된 실시예들에서 사용되는 전압 레벨들을 도시한 것이다.
도 40은 동시적 복수의 워드라인 감지 동작의 일실시예를 도시한 것이다.
도 41은 동시적 복수의 워드라인 감지 동작의 또 다른 실시예를 도시한 것이다.
도 2는 비휘발성 메모리 셀을 개요적으로 도시한 것이다.
도 3은 메모리 셀들의 NOR 어레이의 예를 도시한 것이다.
도 4는 예를 들면 NAND 구성으로 구성되고 병렬로 감지 또는 프로그램되는 한 페이지의 메모리 셀들을 도시한 것이다.
도 5a는 메모리 셀들의 어레이에 대해 한 뱅크의 p개의 감지 모듈들을 내포하는 도 1에 도시된 감지 모듈들을 상세히 도시한 것이다.
도 5b는 감지 증폭기을 포함하는 감지 모듈을 도시한 것이다.
도 6은 소거가능한 블록들로 구성되는 메모리 어레이의 예를 개요적으로 도시한 것이다.
도 7은 각 셀이 2개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 2진 메모리를 도시한 것이다.
도 8은 각 셀이 8개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 복수-상태 메모리를 도시한 것이다.
도 9는 ECC 필드를 내포하는 데이터 페이지를 개요적으로 도시한 것이다.
도 10a는 다양한 범위들의 표준편차들 σ에서 모집단의 백분률을 가진 오류율의 정규분포를 도시한 것이다.
도 10b는 표 형태로 도 10a의 분포를 도시한 것이다.
도 11은 플래시 메모리에 대한 오류들의 주 원인을 열거한 표이다.
도 12는 예시한 메모리 장치의 수명 초기 및 말기에 이 장치에 대한 추정된 총 오류들을 나타낸 표이다.
도 13은 종래의 ECC가 최악의 경우의 총 오류 ETOT를 정정하게 설계되어야 함을 예시한 표이다.
도 14a는 발명의 바람직한 실시예에 따라 두 부분들로 분할된 메모리 어레이를 도시한 것이다.
도 14b는 도 14a의 메모리 어레이의 제 1 부분에 데이터 페이지의 제 2 카피의 재기입을 도시한 것이다.
도 15는 도 14a 및 도 14b에 기술된 실시예에 따라 기입후 판독 및 적응형 재기입의 프로세스를 예시한 흐름도이다.
도 16a은 두 부분들로 분할된 메모리 어레이를 도시한 것이며, 발명의 바람직한 실시예에 따라 제 1 부분에는 캐시 섹션 및 재기입 섹션이 더 제공된다.
도 16b는 기입후 판독의 바람직한 실시예에 따른 페이지 비교 기술을 도시한 것이다.
도 16c는 기입후 판독이 제 2 부분에 데이터 페이지에 과도한 량의 오류를 판정한 후에 제 1 부분에의 재기입을 도시한 것이다.
도 17은 도 16a 내지 도 16c에 기술된 실시예에 따라 기입후 판독 및 적응형 재기입의 프로세스를 도시한 흐름도이다.
도 18은 소거 블록들로 구성된 메모리를 도시한 것이다.
도 19는 핫 카운트에 의해 판정되는 소정의 정도까지 메모리 장치의 연수가 지났을 때 활성화되는 오류 관리를 도시한 흐름도이다.
도 20a는 발명의 바람직한 실시예에 따라 두 부분들로 분할된 메모리 어레이를 도시한 것이다.
도 20b는 도 20a의 D3 블록이 기입후 판독 테스트에 실패한 다른 예를 도시한 것이다.
도 20c는 도 20b의 새로운 D3 블록이 기입후 판독 테스트에 다시 실패한 또 다른 예를 도시한 것이다.
도 21은 향상된 기입후 판독 오류 관리에 연관된 파라미터들의 예를 예시한 표이다. 표는 바람직하게는 메모리에 저장된 파일 시스템 구성 파일에 유지된다.
도 22a는 D1에서 D3으로의 폴딩을 갖는 메모리에 적용되는 EPWR 오류 관리의 바람직한 구현을 도시한 흐름도이다.
도 22b는 향상된 기입후 판독 오류 관리의 장치-연수에 종속적인 활성화 특징을 더 상세히 예시한 것이다.
도 22c는 향상된 기입후 판독 오류 관리의 바람직한 구현을 상세히 도시한 것이다.
도 23(0) ~ 도 23(3)은 바람직한 2-비트 논리 코드("LM" 코드)로 엔코딩되는 4-상태 메모리의 페이지별 프로그래밍을 예시한 것이다.
도 24a는 2-비트 LM 코드로 엔코딩되는 4-상태 메모리의 하위 비트를 구별하기 위해 요구되는 판독 동작을 도시한 것이다.
도 24b는 2-비트 LM 코드로 엔코딩되는 4-상태 메모리의 상위 비트를 구별하기 위해 요구되는 판독 동작을 도시한 것이다.
도 25(0) ~ 도 25(4)는 바람직한 3-비트 논리 코드("LM" 코드)로 엔코딩되는 8-상태 메모리의 프로그래밍을 도시한 것이다.
도 26a는 도 9에 도시된 것과 유사한 ECC 필드를 내포하는 ECC 페이지를 개요적으로 도시한 것이다.
도 26b는 데이터 페이지를 구성하는 복수의 ECC 페이지들을 도시한 것이다.
도 27은 가속화된 PWR의 일반적 실시예를 도시한 흐름도이다.
도 28은 도 27에 도시된 가속화된 PWR의 바람직한 실시예를 도시한 흐름도이다.
도 29는 워드라인 상에 일 그룹의 3-비트 메모리 셀들이 기입된 후에 기입후 판독을 위해 선택된 샘플을 도시한 것이다.
도 30은 3-비트 메모리에 데이터 상태들의 할당을 도시한 것이다.
도 31은 복수의 페이지들의 조합된 검증을 사용한 향상된 기입후 판독의 측면들을 도시한 예시적 흐름이다.
도 32는 도 30에 도시된 데이터 상태들의 맨 위에 페이지와 맨 아래 페이지를 XOR한 결과를 도시한 것이다.
도 33은 2진 포맷으로 기입된 데이터가 복수-상태 포맷으로 기입된 것과 동일한 데이터와 비교되는 기입후 검증 프로세스의 개요도이다.
도 34 ~ 도 36은 MLC 페이지 또는 페이지들이 대응하는 SLC 페이지들에 비교되는 EPWR의 일부 예시적 실시예들에 대한 흐름들이다.
도 37은 NAND형 어레이에서 표준 감지 동작의 개요도이다.
도 38은 동시적 복수의 워드라인 감지 동작의 예의 개요도이다.
도 39는 도 40 및 도 41에 도시된 실시예들에서 사용되는 전압 레벨들을 도시한 것이다.
도 40은 동시적 복수의 워드라인 감지 동작의 일실시예를 도시한 것이다.
도 41은 동시적 복수의 워드라인 감지 동작의 또 다른 실시예를 도시한 것이다.
메모리 시스템
도 1은 본 발명의 특징들이 구현되는 메모리 장치와 통신하는 호스트를 도시한 것이다. 호스트(80)는 전형적으로 메모리 장치(90)에 저장될 데이터를 보내거나 메모리 장치(90)를 판독함으로써 데이터를 인출한다. 메모리 장치(90)는 제어기(102)에 의해 관리되는 하나 이상의 메모리 칩(100)을 포함한다. 메모리 칩(100)은 각 셀이 복수 비트들의 데이터를 저장하기 위한 복수-레벨 셀("MLC")로서 구성될 수 있는 메모리 셀들의 메모리 어레이(200)를 포함한다. 또한, 메모리 칩은 감지 모듈들(480), 데이터 래치들(430) 및 I/O 회로들(440)과 같은 주변 회로들을 포함한다. 온-칩 제어 회로(110)는 각 칩의 저-레벨 메모리 동작들을 제어한다. 제어 회로(110)는 메모리 어레이(200) 상에서 메모리 동작들을 수행하기 위해 주변 회로들과 공조하는 온-칩 제어기이다. 제어 회로(110)는 전형적으로 메모리 동작들의 칩 레벨 제어를 제공하기 위해 상태머신(112)을 포함한다.
많은 구현들에서, 호스트(80)는 제어기(102)를 통해 메모리 칩(100)과 통신하며 상호작용한다. 제어기(102)는 메모리 칩과 공조하며 고 레벨 메모리 동작들을 제어하고 관리한다. 예를 들면, 호스트 기입에서, 호스트(10)는 호스트의 운영 시스템의 파일 시스템으로부터 할당된 논리 섹터들에 메모리 어레이(100)에 기입될 데이터를 보낸다. 제어기 내 구현된 메모리 블록 관리 시스템은 섹터들을 가져와 이들을 메모리 어레이의 물리 구조에 매핑하여 저장한다.
바람직한 블록 관리 시스템은 전체 개시된 바를 참조로 본원에 포함시키는 2010년 7월 8일에 공개된 미국특허출원 공개 2010/0172180 A1에 개시되어 있다.
펌웨어(60)는 제어기(102)의 기능들을 구현하기 위해 코드들을 제공한다. 오류 정정 코드("ECC") 프로세서(62)는 메모리 장치의 동작들 동안 ECC를 처리한다. 또 다른 실시예에서, 제어기(102)는 호스트 내에 구현된다.
물리 메모리 구조
도 2는 비휘발성 메모리 셀을 개요적으로 도시한 것이다. 메모리 셀(10)은 플로팅 게이트 또는 유전층과 같은 전하 저장 유닛(20)을 가진 전계-효과 트랜지스터에 의해 구현될 수 있다. 또한, 메모리 셀(10)은 소스(14), 드레인(16), 및 제어 게이트(30)를 포함한다.
최근에 사용되는 많은 상업적으로 성공한 비휘발성 고체상태 메모리 장치들이 있다. 이들 메모리 장치들은 서로 다른 유형들의 메모리 셀들을 채용할 수 있고, 그 각각의 유형은 하나 이상의 전하 저장 소자를 갖는다. 전형적인 비휘발성 메모리 셀들은 EEPROM 및 플래시 EEPROM을 포함한다. EEPROM 셀들 및 이들을 제조하는 방법들의 예들은 미국특허 5,595,924에 주어져 있다. 플래시 EEPROM 셀들의 예들, 메모리 시스템들에서 이들의 사용들 및 이들을 제조하는 방법들은 미국특허 5,070,032, 5,095,344, 5,315,541, 5,343,063, 5,661,053, 5,313,421, 6,222,762에 주어져 있다. 특히, NAND 셀 구조들을 가진 메모리 장치들의 예들은 미국특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다. 또한, 유전체 저장 요소를 이용하는 메모리 장치들의 예들은 Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell" IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545, 및 미국특허 5,768,192 및 6,011,725에 기술되어 있다.
실제로, 셀의 메모리 상태는 일반적으로 기준 전압이 제어 게이트에 인가될 때 셀의 소스 전극 및 드레인 전극을 지나는 도통 전류를 감지함으로써 판독된다. 따라서, 셀의 플로팅 게이트 상에 각각의 주어진 전하에 대해서, 고정된 기준 제어 게이트 전압에 관하여 대응하는 도통 전류가 검출될 수 있다. 반대로, 임계 전압은 주어진 전하로 셀을 턴 온 시킬 제어 게이트 상에 전압으로서 정의된다. 유사하게, 플로팅 게이트에 프로그램될 수 있는 한 범위의 전하는 대응하는 임계 전압 윈도우 또는 대응하는 도통 전류 윈도우를 정의한다.
대안적으로, 분할된 전류 윈도우 중에서 도통 전류를 검출하는 대신에, 제어 게이트에 테스트 하에 소정의 메모리 상태에 대해 임계 전압을 설정하고 도통 전류가 임계 전류보다 낮은지 아니면 높은지를 검출하는 것이 가능하다. 일 구현에서, 임계 전류에 관하여 도통 전류의 검출은 도통 전류가 비트라인의 정전용량 또는 기지의 커패시터를 통해 방전하는 율을 검사함으로써 달성된다.
위에 기술된 바로부터 알 수 있는 바와 같이, 메모리 셀에 저장할 상태들을 더 많게 할수록, 메모리 셀의 임계 윈도우는 더 미세하게 분할된다. 예를 들면, 메모리 장치는 -1.5V 내지 5V의 범위인 임계 윈도우를 갖는 메모리 셀들을 가질 수 있다. 이것은 6.5V의 최대 폭을 제공한다. 메모리 셀이 16 상태들을 저장하는 것이라면, 각각의 상태는 임계 윈도우에서 200mV 내지 300mV를 점유할 수 있다. 이것은 요구되는 분해능을 달성할 수 있기 위해서 프로그래밍 및 판독 동작들에서 더 높은 정밀도를 요구할 것이다.
메모리 어레이(200)는 전형적으로 행들 및 컬럼들로 배열된 메모리 셀들의 2차원 어레이로서 구성되고 워드라인들 및 비트라인들에 의해 어드레스될 수 있다. 어레이는 NOR 유형 또는 NAND 유형의 아키텍처에 따라 형성될 수 있다.
도 3은 메모리 셀들의 NOR 어레이의 예를 도시한 것이다. 메모리 어레이(200)에서, 메모리 셀들의 각 행은 이들의 소스들(14) 및 드레인들(16)에 의해 데이터 체인 형식으로 연결된다. 이 설계를 가상접지 설계라고도 한다. 행 내 셀들(10)은 이들의 제어 게이트들(30)이 워드라인(42)과 같은 워드라인에 연결되어 있다. 컬럼 내에 셀들은 이들의 소스들 및 드레인들이 비트라인들(34, 36)과 같은 선택된 비트라인들에 각각 연결된다.
도 4는 예를 들면 NAND 구성으로 구성되고 병렬로 감지 또는 프로그램되는 한 페이지의 메모리 셀들을 도시한 것이다. 도 4는 근본적으로 메모리 어레이(200) 내 한 뱅크의 NAND 스트링들(50)을 도시한 것이다. NAND 스트링(50)은 소스들 및 드레인들이 데이지-체인으로 연결된 직렬의 메모리 트랜지스터들(예를 들면, 4, 8, 16 또는 그 이상)로 구성된다. 한쌍의 선택 트랜지스터들(S1, S2)은 각각 NAND 스트링의 소스 단자 및 드레인 단자를 통해 외부에 메모리 트랜지스터 체인의 연결을 제어한다. 메모리 어레이에서, 소스 선택 트랜지스터(S1)가 턴 온 되었을 때, 소스 단자는 소스 라인(34)에 결합된다. 유사하게, 드레인 선택 트랜지스터(S2)가 턴 온 되었을 때, NAND 스트링의 드레인 단자는 메모리 어레이의 비트라인(36)에 결합된다. 체인에 각 메모리 트랜지스터(10)는 메모리 셀로서 작용한다. 이것은 의도된 메모리 상태를 나타내기 위해 소정량의 전하를 저장하기 위한 전하 저장 요소(20)를 갖는다. 각 메모리 트랜지스터의 제어 게이트는 판독 및 기입 동작들에 대해 제어할 수 있게 한다. 한 행의 NAND 스트링의 대응하는 메모리 트랜지스터들의 제어 게이트들은 모두 동일 워드라인(이를테면 WL0, WL1,...)에 연결된다. 유사하게, 선택 트랜지스터들(S1, S2)(각각 선택 라인들(SGS, SGD)에 의해 액세스되는) 각각의 제어 게이트는 각각 이의 소스 단자 및 드레인 단자를 통해 NAND 스트링에의 제어 액세스를 제공한다.
NAND 스트링 내에 어드레스된 메모리 트랜지스터(10)가 판독되거나 프로그램하는 동안 검증될 때, 이의 제어 게이트에는 공통의 워드라인을 통해 적합한 전압이 공급된다. 동시에, NAND 스트링(50)에 나머지 비-어드레스된 메모리 트랜지스터들은 이들의 제어 게이트들 상에 충분한 전압의 인가에 의해 완전히 턴 온 된다. 이렇게 하여, 도전성 경로가 개개의 메모리 트랜지스터의 소스로부터 NAND 스트링의 소스 단자로, 그리고 마찬가지로 개개의 메모리 트랜지스터의 드레인에 대해선 셀의 드레인 단자로 유효하게 생성된다. 이러한 NAND 스트링 구조들을 가진 메모리 장치들이 미국특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다.
페이지(70)과 같은 "페이지"는 병렬로 감지 또는 프로그램될 수 있는 일 그룹의 메모리 셀들이다. 이것은 대응하는 한 페이지의 감지 증폭기들에 의해 달성된다. 예를 들면, 페이지(70)는 행을 따라 있으며 워드라인(WL3)에 공통으로 연결되는 페이지의 셀들의 제어 게이트들에 인가되는 감지 전압에 의해 감지된다. 각 컬럼을 따라, 셀(10)과 같은 각 셀은 비트라인(36)을 통해 감지 증폭기에 의해 액세스될 수 있다. 위에 언급된 페이지는 각 셀이 저장하고 있는 경우에, 맥락에 따라, 물리 페이지 메모리 셀들 또는 감지 증폭기들이다.
감지 회로들 및 기술들
도 5a는 메모리 셀들의 어레이에 대해 한 뱅크의 p개의 감지 모듈들을 내포하는 도 1에 도시된 감지 모듈들을 상세히 도시한 것이다. 병렬로 동작하는 전체 한 뱅크의 p 감지 모듈들(480)은 한 행을 따른 한 그룹(또는 물리 페이지)의 p 셀들(10)이 병렬로 판독 또는 프로그램될 수 있게 한다. 근본적으로, 감지모듈1은 셀1에 전류(I1)을 감지할 것이며, 감지모듈2는 셀2에 전류(I2)을 감지할 것이며,...감지모듈 p는 셀p에 전류(Ip)를 감지할 것이다, 등등. 소스 라인(34)에서 결집 노드(CLSRC)로 그리고 이로부터 접지로 흘러나가는 페이지에 대한 총 셀 전류(iTOT)는 p 셀들 내 모든 전류들의 합이 될 것이다.
종래의 메모리 아키텍처에서, 한 공통의 워드라인을 가진 한 행의 메모리 셀들은 2 이상의 페이지들을 형성하는데, 여기서 한 페이지 내 메모리 셀들이 병렬로 판독 및 프로그램된다. 2개의 페이지들을 가진 한 행의 경우, 한 페이지는 짝수 비트라인들에 의해 액세스되고 다른 한 페이지는 홀수 비트라인들에 의해 액세스된다. 한 물리 페이지의 감지회로들은 언제든 짝수 비트라인들에 결합되거나 아니면 홀수 비트라인들에 결합된다.
현재 생산되는 칩들에서, 물리 페이지는 64k이거나 더 클 수 있다. 바람직한 실시예에서, 그룹은 연속한 전체 한 행의 셀들이다. 이것이, 페이지가 각각 인접 비트라인들에 결합된 한 행의 인접 메모리 셀들로부터 구성되는 소위 "전(all) 비트라인" 아키텍처이다.
도 5b는 감지 증폭기를 포함하는 감지 모듈을 도시한 것이다. 감지 증폭기(490)는 셀의 도통 전류가 기준 레벨 이상이거나 미만임을 검출한다. 감지된 결과들은 대응하는 한 세트의 래치들(430)(도 1 참조)에 래치된다.
소거 블록들
플래시 메모리와 다른 유형의 메모리 간에 한 중요한 차이는 셀이 소거된 상태로부터 프로그램되어야 한다는 것이다. 이것은 먼저 플로팅 게이트에 전하가 없어야 한다는 것이다. 이어서 프로그래밍은 요망되는 량의 전하를 다시 플로팅 게이트에 더한다. 이것은 더 프로그램된 상태에서 덜 프로그램된 상태로 가기 위해서 플로팅으로부터 전하의 부분을 제거하는 것을 지원하지 못한다. 이것은 업데이트 데이터가 현존의 데이터를 덮어쓸 수 없고 이전의 미기입된 위치에 기입되어야 함을 의미한다.
또한 소거는 플로팅 게이트로부터 모든 전하들을 비우는 것이며 일반적으로 상당히 시간이 걸린다. 이 이유로, 셀별로 혹은 심지어 페이지별로 소거하는 것은 번거롭고 매우 느릴 것이다. 실제로, 메모리 셀들의 어레이는 많은 수의 블록들의 메모리 셀들로 분할된다. 플래시 EEPROM 시스템들에 공통되는 바와 같이, 블록은 소거 단위이다. 즉, 각 블록은 함께 소거되는 최소 수의 메모리 셀들을 내포한다.
도 6은 소거가능한 블록들로 구성되는 메모리 어레이의 예를 개요적으로 도시한 것이다. 전하 저장 메모리 장치들의 프로그래밍은 이의 전하 저장 요소들에 전하를 더 추가하는 것만이 될 수 있다. 그러므로, 프로그램 동작에 앞서, 메모리 셀의 전하 저장 요소 내 현존한 전하는 제거(또는 소거)되어야 한다. 전체 어레의 셀들(200), 혹은 어레이의 상당 그룹들의 셀들이 전기적으로 함께 소거될 때(즉, 플래시로) EEPROM와 같은 비휘발성 메모리를 "플래시" EEPROM이라 한다. 일단 소거되면, 한 그룹의 셀들은 이어서 다시 프로그램될 수 있다. 함께 소거될 수 있는 일 그룹의 셀들은 하나 이상의 어드레스가능한 소거 유닛(300)으로 구성될 수 있다. 소거 유닛 또는 블록(300)은 전형적으로, 하나 이상의 페이지가 단일 동작으로 프로그램되거나 판독될 수 있을지라도, 하나 이상의 페이지들의 데이터를 -페이지는 프로그래밍 및 판독의 최소 단위- 저장한다. 각 페이지는 전형적으로 하나 이상의 섹터들의 데이터를 저장하며, 섹터의 크기는 호스트 시스템에 의해 정의된다. 예는 자기 디스크 드라이브들에 설정된 표준에 따라 한 섹터의 512 바이트의 사용자 데이터와, 이에 더하여 사용자 데이터 및/또는 이것이 저장되는 블록에 관한 몇 바이트의 오버헤드 정보이다.
도 6에 도시된 예에서, 메모리 어레이(200)에 개개의 메모리 셀들은 WL0 ~ WLy와 같은 워드라인들(42) 및 BL0 ~ BLx와 같은 비트라인들(36)에 의해 액세스될 수 있다. 메모리는 소거 블록들 0, 1,... m와 같은 소거 블록들로 구성된다. 도 5a 및 도 5b를 참조하면, NAND 스트링(50)이 16 메모리 셀들을 내포한다면, 어레이 내 제 1 뱅크의 NAND 스트링들은 WLO 내지 WL15와 같은 선택 라인들(44) 및 워드라인들(42)에 의해 액세스될 것이다. 소거 블록 0은 제 1 뱅크의 NAND 스트링들의 모든 메모리 셀들이 함께 소거되게 하도록 구성된다. 또 다른 메모리 아키텍처에서, 하나 이상의 뱅크의 NAND 스트링들은 함께 소거될 수 있다.
2진(SLC) 및 복수-상태(MLC) 메모리 분할의 예
앞에 기술된 바와 같이, 비휘발성 메모리의 예는 각각이 채널 영역과 제어 게이트 사이에 전하 저장층을 갖는 전계-효과 트랜지스터들의 어레이로부터 형성된다. 전하 저장층 또는 유닛은 한 범위의 전하들을 저장할 수 있어, 각각의 전계-효과 트랜지스터에 대해 한 범위의 임계 전압들을 생성한다. 가능한 임계 전압들의 범위는 임계 윈도우에 걸쳐 있다. 임계 윈도우가 임계 전압들의 다수의 부-범위들 또는 구역들로 분할될 때, 각각의 해상가능한 구역은 한 메모리 셀에 대해 서로 다른 메모리 상태들을 나타내기 위해 사용된다. 다수의 메모리 상태들은 하나 이상의 2진 비트들에 의해 부호화될 수 있다.
도 7은 각 셀이 2개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 2진 메모리를 도시한 것이다. 각 메모리 셀은 단일 구분 레벨에 의해 2개의 서로 구별되는 구역들로 구분되는 임계 윈도우를 갖는다. 도 7(0)에 도시된 바와 같이, 판독 동안, 하위 구역과 상위 구역 사이에 판독 구분 레벨(rV1)은 셀의 임계 레벨이 어느 구역에 놓여있는지를 판정하기 위해 사용된다. 셀은 이의 임계값이 하위 구역에 놓여 있다면 "소거된" 상태에 있으며, 임계값이 상위 구역에 놓여 있다면 "프로그램된" 상태에 있다. 도 7(1)은 메모리가 초기에 이의 모든 셀들이 "소거된" 상태에 있는 것을 도시한 것이다. 도 7(2)는 일부 셀들이 "프로그램된" 상태로 프로그램된 것을 도시한 것이다. 메모리 상태들을 부호화하기 위해 1-비트 또는 2진 코드가 사용된다. 예를 들면, 비트 값 "1"은 "소거된" 상태를 나타내며 "0"은 "프로그램된" 상태를 나타낸다. 전형적으로 프로그래밍은 하나 이상의 프로그래밍 전압 펄스의 인가에 의해 수행된다. 각 펄스 후에, 임계값이 검증 구분 레벨(vV1)을 넘어 이동하였는지를 검증하기 위해 셀이 감지된다. 이러한 메모리 셀 분할을 가진 메모리를 "2진" 메모리 또는 단일-레벨 셀("SLC") 메모리라고 한다. 2진 또는 SLC 메모리는 전체 임계 윈도우가 두 구역들에 의해서만 점유되기 때문에 넒은 오류 마진을 갖고 동작함을 알 것이다.
도 8은 각 셀이 8개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 복수-상태 메모리를 도시한 것이다. 각 메모리 셀은 적어도 7개의 구분 레벨에 의해 8개의 서로 구별되는 구역들로 분할되는 임계 윈도우를 갖는다. 도 8(0)에 도시된 바와 같이, 판독 동안, 판독 구분 레벨들(rV1 내지 rV7)은 셀의 임계 레벨이 어느 구역에 놓여있는지를 판정하기 위해 사용된다. 셀은 이의 임계값이 최하위 구역에 놓여 있다면 "소거된" 상태에 있으며, 임계값이 상위 구역에 놓여 있다면 복수의 "프로그램된" 상태들 중 한 상태에 있다. 도 8(1)은 메모리가 초기에 이의 모든 셀들이 "소거된" 상태에 있는 것을 도시한 것이다. 도 8(2)는 일부 셀들이 "프로그램된" 상태에 프로그램된 것을 도시한 것이다. 하위, 중위, 및 상위 비트를 갖는 3-비트 코드는 8개의 메모리 상태들 각각을 나타내기 위해 사용될 수 있다. 예를 들면, "0", "1", "2", "3", "4", "5", "6" 및 "7" 상태들은 각각 "111", "O11", "001", "101", "100", "000", "010" 및 "111"로 나타낸다. 전형적으로 프로그래밍은 하나 이상의 프로그래밍 전압 펄스들의 인가에 의해 수행된다. 각 펄스 후에, 임계값이 검증 구분 레벨들(vV1 내지 vV7) 중 하나인 기준을 넘어 이동하였는지를 검증하기 위해 셀이 감지된다. 이러한 메모리 셀 분할을 가진 메모리를 "복수-상태" 메모리 또는 복수-레벨 셀("MLC") 메모리라고 한다.
유사하게, 4비트 코드를 저장하는 메모리는(16) 상태 각각을 나타내는 것인, 하위, 제 1 중위, 제 2 중위, 및 상위 비트들을 가질 것이다. 임계 윈도우는 16개의 서로 구별되는 구역들로 적어도 15 구분 레벨들에 의해 구분될 것이다.
메모리의 유한 임계 윈도우가 더 많은 영역들로 분할됨에 따라, 프로그래밍 및 판독을 위한 분해능은 필연적으로 더 미세해질 것이다. 이에 따라, 복수-상태 또는 MLC 메모리는 필연적으로, 분할된 구역들을 덜 가진 메모리에 비해 더 좁은 오류 마진을 갖고 동작한다. 즉, 각 셀에 저장된 비트들의 수에 따라 오류율이 증가한다. 일반적으로, 오류율은 임계 윈도우 내 분할된 구역들의 수에 따라 증가한다.
오류 정정 코드("ECC")에 의한 정정
플래시 메모리는 오류들이 일어나기가 쉽다. 오류가 없는 데이터를 보증하기 위해서, 오류들을 정정하기 위해 오류 정정 코드("ECC")가 구현된다.
도 9는 ECC 필드를 내포하는 데이터 페이지를 개요적으로 도시한 것이다. 도 4 및 도 6a에 관련하여 기술된 바와 같이, 메모리 셀들의 물리 페이지는 병렬로 동작하는 대응하는 한 페이지의 감지 모듈들에 의해 병렬로 프로그램되고 판독된다. 각 메모리 셀이 복수 비트들의 데이터를 저장할 때, 각 물리 페이지에 연관된 복수의 데이터 페이지들이 있을 것이다. 데이터 페이지(70')는 사용자 부분(72') 및 시스템 부분(74')을 포함한다. 사용자 부분(72')은 사용자 데이터의 저장을 위한 것이다. 시스템 부분(74')은 일반적으로 시스템 데이터의 저장을 위해 메모리 시스템에 의해 사용된다. 시스템 데이터에는 ECC가 포함된다. ECC는 데이터 페이지에 대해 계산된다. 전형적으로, ECC는 제어기(102)(도 1 참조) 내 ECC 프로세서(62)에 의해 계산된다.
데이터가 호스트로부터 수신되었을 때, 한 페이지의 데이터가 제어기(102)에 놓여지고 이의 ECC(76')가 ECC 프로세서(62)에 의해 계산된다. 이어서 ECC를 포함한 데이터 페이지가 메모리 어레이(200)에 기입된다. 전형적으로, 데이터 페이지가 판독될 때, 데이터 페이지는 데이터 래치들(430)에 래치되고, I/O 회로들(440)로부터 제어기(102)로 옮겨진다. 제어기(102)에서, 데이터 페이지의 현재 ECC는 판독된 데이터에 관해 계산된 ECC의 제 2 버전과 비교된다. ECC는 전형적으로 데이터 페이지 내 임의의 오류의 신속한 검출을 위해 오류 검출 코드("EDC")를 포함한다. EDC가 판독된 데이터 페이지 내 임의의 오류의 존재를 나타낸다면, ECC를 실행시켜 판독된 데이터 페이지 내 오류 비트들을 정정한다.
ECC는 임의의 수의 오류 비트들을 정정하게 설계될 수 있다. 더 많은 비트들을 정정해야 할수록, ECC는 더 복잡해지고 계산 집약적이 될 것이다. 질적인 보증을 위해서, 종래의 ECC들은 메모리 장치의 수명 말기에 예상되는 최악의 경우의 셀 오류율에 기초하여 설계된다. 따라서, 이들은 통계적 오류 모집단의 맨 끝까지 최대 수의 오류 비트들을 정정해야 한다.
도 10a는 다양한 범위들의 표준편차들 σ 내에서 모집단의 백분률을 가진 오류율의 정규분포를 도시한 것이다. 예를 들면, 모집단의 2.1%만이 2σ 내지 3σ의 범위 내에 놓인다. 모집단의 0.1%만이 3σ 내지 4σ의 범위 내에 놓인다.
도 10b는 표 형태로 도 10a의 분포를 도시한 것이다. 10억 모집단에서 E-09 또는 1만이 4σ을 넘어서 놓여 있음을 알 수 있다. 표에서 마지막 컬럼은 최악의 경우에 메모리 장치의 예에 있어서 추정된 오류들을 나타낸다. 예를 들면, 모집단의 5%는 1 오류 비트를 가질 것이며, 모집단의 0.135%는 4 오류 비트들을 가질 것이며, 10억 모집단에서 1은 42 오류 비트들을 가질 것이다.
125 메모리 카드들의 샘플을 고찰한다. 각 카드는 각각이 2KB인 데이터 페이지들을 가진 16GB의 용량을 갖는다. 이것은 각각이 2KB인 10억 페이지들의 모집단이 된다. 125 메모리 카드들의 샘플의 단일 페이지가 카드의 수명 말기에 오류를 갖지 않게 하기 위해서는 42 비트들까지를 정정할 수 있는 ECC가 필요하게 될 것이다.
메모리의 수명 동안에 오류들
위에 기술된 바와 같이, ECC는 전형적으로 메모리의 유용한 수명동안 예상되는 임의의 오류들에 대해 정정하게 설계된다. 오류들은 다수의 원인들로부터 온다.
도 11은 플래시 메모리에 대한 오류들의 주 원인을 열거한 표이다. 도 11(a)는 페이지가 기입된 후에 존재하는 비트 오류들인 기입 이후에 오류의 제 1 원인 EPW(NCYC)을 나타낸 것이다. 플래시 메모리에서, "프로그래밍"은 소거된 상태에서 셀의 임계값을 증가시키는 프로세스를 말한다. 용어는 "기입"과 상호교환적으로 사용될 것이다. 오류율은 프로그램-소거 사이클링 횟수 NCYC에 따라 증가한다. 데이터가 셀에 기입된 후에, 검증 동작을 통과하였더라도, 데이터는 여전히 2가지 원인들로 오류가 발생될 수도 있을 것이다.
기입 후 오류의 첫 번째 원인은 검증 동작에 의해 검출되지 않는 과도(over)-프로그래밍에 기인한다. 과도-프로그래밍은 다수의 메모리 셀들이 동시에 프로그램될 때 발생할 수 있다. 이것은 메모리 셀들을 포함하는 반도체 장치들의 구조 및 동작이 미미하게 다름에 기인하여 메모리 셀의 특징들이 다르기 때문이며, 따라서 통상적으로 서로 다른 셀들의 프로그래밍 속도에 차이들이 발생할 것이다. 이에 따라 메모리 셀들은 다른 것들보다 더 빠르게 프로그램되는 메모리 셀들 및 일부 메모리 셀들이 의도된 것과는 다른 상태로 프로그램될 가능성이 나타나게 된다. 복수의 메모리 셀들이 더 빠르게 프로그래밍됨으로써 요망되는 임계 전압 레벨 범위들을 넘어설 수 있게 되어 저장되는 데이터에 오류들이 나타나게 된다.
전형적으로, 데이터가 프로그램되고 있을 때, 장치에 대한 프로그램-검증 프로세스는 메모리 셀의 프로그램된 임계 전압이 이웃한 덜 프로그램된 상태로부터 현재 상태를 구분짓는 기준 레벨보다 이상인지를 체크할 것이다. 그러나, 프로그램-검증은 프로그램된 임계 전압이 얼마나 많이 기준 레벨 이상인지를 알지 못한다. 따라서, 장치들은 전형적으로 임계 전압에 대한 상한을 보장하지 못한다. 일부 장치들은 소프트 프로그래밍 프로세스(이하 기술되는)가 임계 전압을 너무 높이 높였는지를 알기 위해 체크하는데, 그러나, 이들 장치들은 정규 프로그래밍 프로세스가 임계 전압을 너무 높였는지를 알기 위해 체크하지 않는다. 따라서, 요망되는 상태에 대한 범위를 넘어 임계 전압을 상승시키는 과도-프로그래밍은 통보됨이 없이 일어날 수 있다. 과도-프로그래밍은 메모리 셀이 다음 프로그램된 상태까지 더 갈 수 있어 이에 따라 부정확한 데이터를 저장한다. 이 오류는 후속되는 판독 동작들 동안 검출될 것이며, 셀의 프로그램된 임계값은 전형적으로 소정의 메모리 상태에 대한 임계 범위를 구분짓는 하한 및 상한 둘 다에 관하여 체크된다. 과도-프로그래밍에 관한 더 많은 정보는 미국특허 5,321,699; 5,386,422; 5,469,444; 5,602,789; 6,134,140; 6,914,823; 6,917,542에서 볼 수 있다.
기입 후 오류의 두 번째 원인은 저장 요소들 간에 필드 커플링에 기인한 저장된 전하 레벨들에 있어 외관상 이동들에 있다. 이 커플링의 정도는 집적회로 제조 기술들의 개선의 결과로서 나타나는 것인 메모리 셀 어레이들의 크기가 감소됨에 따라 필연적으로 증가한다. 문제는 서로 다른 시간들에 프로그램된 두 그룹들의 이웃한 셀들 간에 가장 확연하게 발생한다. 일 그룹의 셀들은 한 세트의 데이터에 대응하는 이들 셀들의 저장 요소들에 한 레벨의 전하를 추가하게 프로그램된다. 제 2 그룹의 셀들이 제 2 세트의 데이터로 프로그램된 후에, 제 1 그룹의 셀들의 저장 요소들로부터 판독된 전하 레벨들은 흔히 제 1 그룹에 용량적으로 결합되는 제 2 그룹의 저장 요소들에 미치는 전하의 영향에 기인하여 프로그램된 것과는 다르게 나타난다. 특히, 감지되었을 때, 메모리 셀은 덜 교란되었을 때보다 더 높은 임계 레벨을 갖는 것으로(혹은 더 프로그램된 것으로) 나타날 것이다. 이것은 유핀 효과로서 알려져 있으며, 전체를 참조로서 본원에 포함시키는 미국특허 5,867,429에 기술되어 있다. 이 특허는 두 그룹들의 저장 요소들을 서로 간에 물리적으로 격리시키거나, 제 1 그룹의 저장요소를 판독할 때 제 2 그룹의 저장요소들에 전하가 미치는 영역을 고려하는 것을 기술한다.
도 11(b)은 EOL에서 데이터 보유에 기인한 비트 오류들인 오류의 두 번째 원인 EDR(T, NCYC)을 나타낸 것이다. 오류율은 온도 T 및 프로그램-소거 사이클링 수 NCYC에 따라 증가한다. 데이터 오류는 장치의 이력에 기인한다. 이것은 전형적으로 환경, 예를 들면, 온도에의 메모리 장치 노출에 좌우되는 데이터 보유 문제에 관계된다. 시간이 지남에 따라, 실제 저장된 전하 레벨들은 서서히 누설될 수 있어, 프로그램된 임계값들이 감소되게 한다.
각 메모리 셀에 저장된 상태들의 수가 증가함에 따라, 저장 요소들 상에 프로그램된 전하 레벨에 임의의 이동들의 허용범위가 감소한다. 각 저장 상태에 대해 지정된 전하의 범위들은 필연적으로 좁아지게 되고 각 메모리 셀 저장 요소 상에 저장된 상태들의 수가 증가함에 따라 서로 더 가깝게 놓여지기 때문에, 프로그래밍은 정밀도를 증가시켜 수행되어야 하며, 실제적이든 혹은 외관상의 이동들이든, 용인될 수 있는 저장된 전하 레벨들에 임의의 프로그래밍 후 이동들의 정도는 감소된다. 한 셀에 저장되는 전하에 대한 실제 교란들은 이 셀을 프로그래밍 및 판독할 때, 그리고 이 셀에 어느 정도 전기적으로 커플링되는 다른 셀들, 이를테면 동일 컬럼 혹은 행 내의 셀들, 및 라인 또는 노드를 공유하는 셀들을 판독, 프로그래밍 및 소거할 때 야기될 수 있다.
도 11(c)는 판독 교란에 기인한 비트 오류들인 오류의 세 번째 원인 Erd(NR, NCYC)을 나타낸 것이다. 오류율은 판독 횟수 및 프로그램-소거 사이클링 횟수 NCYC에 따라 증가한다.
플래시 메모리에 대한 중요한 고찰은 이것이 사용과 함께 연수가 지남에 따라 내구성 문제를 갖는다는 것이다. 셀이 반복하여 프로그램되고 소거될 때, 유전체를 통과하는 터널링에 의해 전하들이 플로팅 게이트(20)(도 2 참조)를 드나든다. 얼마간의 전하들이 유전체에 트랩되었을 때마다 셀의 임계값을 수정할 것이다. 셀이 겪은 프로그램-소거 사이클들의 수는 사이클 수 NCYC("핫 카운트"라고도 알려진)에 의해 측정된다. 반복된 사이클링을 통해, 소정의 소거 블록에 대해 NCYC의 값이 증가하여, 블록 내 셀들에 대한 임계 윈도우가 계속해서 좁아지게 한다. 이에 따라, 유효 프로그램-소거 사이클링은 도 11에 열거된 오류의 모든 원인들에 현저히 영향을 미칠 것이다.
도 12는 예시한 메모리 장치의 수명 초기 및 말기에 이 장치에 대한 추정된 총 오류들을 나타낸 표이다. 도 12(a)는 도 11(a) 내지 도 11(c)에 열거된 3개의 원인들로부터 총 오류들이 ETOT(NCYC, NR) = EPW(NCYC) + EDR(T, NCYC) + ERD(NR, NCYC)임을 보인 것이다.
도 12(b)는 메모리가 비교적 새것이지만(낮은 NCYC)하지만 5 년동안 85℃에서 베이킹되었으며 106번 판독되었을 때 추정된 ETOT를 도시한 것이다. 여러 성분 오류들에 대한 추정값들은 EPW(1) ~ 3, EDR(85℃, 1) ~ 2, 및 ERD(1M, 1) ~ 0이다. 이들은 총 추정된 오류 ETOT(1, 1M) = 3 + 2 + 0 = 5 비트들을 야기한다.
도 12(c)는 메모리가 장치의 수명 말기("EOL")에 있을 때 추정된 ETOT를 나타낸 것이다. 도 12(b)와 유사한 다른 파라미터들을 가진 고 프로그램-소거 사이클링(NCYC = 10K)인 것이 특징이다. 여러 성분 오류들에 대한 추정값들은 EPW(10K) ~ 10, EDR(85℃, lOK) ~ 10, 및 ERD(1M, 10K) ~ 1이다. 이들은 총 추정된 오류 ETOT(10K, 1M) = 10 + 10 + 1 = 21 비트들을 야기한다.
도 11 및 도 12에 기술된 오류의 3가지 원인들 중에 일반적으로 판독 교란 ERD에 기인한 오류는 기입 EPW에 기인한 오류 및 데이터 보유 EDR에 기인한 오류만큼 현저하지 않다. 데이터 보유 오류들은 "판독 스크럽(scrub)" 동작에서 셀들의 임계 레벨들을 주기적으로 리프레시함으로써 완화될 수 있다.
메모리에서 일어날 수 있는 각종의 오류들, 특히 기입 후에 발생하는 오류를 정정하기 위해서, EEC(도 9에 관련하여 앞에서 기술된)가 채용된다. 그러나, 오류들을 정정하기 위해 ECC를 사용하는 것은 처리 시간을 소비할 것이며, 더 많은 비트들을 정정해야 할수록, 계산시간이 더 많이 요구된다. 메모리 성능은 많은 수의 오류 비트를 정정할 수 있는 강한 ECC를 채용함으로써 저하될 것이다. 적합한 시간량 내에 ECC를 수행하기 위해 추가의 전용 하드웨어가 구현될 수도 있다. 이러한 전용 하드웨어는 제어기 ASIC 칩 상에 상당량의 공간을 차지할 수 있다.
도 13은 종래의 ECC가 최악의 경우의 총 오류 ETOT를 정정하게 설계되어야 함을 예시한 표이다. 이것은 고 프로그램-소거 사이클 수 및 데이터 보유 명세를 가진 수명 말기에서의 장치일 것이다. 도 12(c)에 주어진 예에 있어서, ECC는 적어도 21 오류 비트들을 정정할 수 있어야 한다.
오류율을 제어하기 위해 고 밀도 메모리 부분에서 저 오류율 메모리 부분으로 적응형으로 데이터를 재기입
발명의 일반적인 면에 따라, 메모리 셀들의 어레이를 갖는 플래시 메모리는 제 1 부분 및 제 2 부분을 갖게 구성된다. 제 2 부분은 고 밀도로 데이터를 저장하나 제 1 부분에 비해 더 적은 오류 마진을 갖고 동작한다. 데이터는 효율적인 저장을 위해 제 2 부분에 기입된다. 이후에, 데이터는 과잉의 오류 비트들을 체크하기 위해 다시 판독된다. 오류 비트들이 소정의 량을 초과하였다면, 데이터는 덜 오류가 나기 쉬운 제 1 부분에 재기입된다. 이것은 데이터를 메모리에 기입함에 기인한 오류 비트들의 최대 수에 제한을 둔다. 오류율들의 통계적 분포에서, 제한은 분포의 맨 끝(더 큰 오류들을 가진)이 무시될 수 있도록 분포의 표준편차 수에 제한을 나타낸다. 이것은 더 작고 더 효율적인 오류 정정 코드("ECC")가 더 적은 수의 오류들 비트들을 정정하게 설계될 수 있게 하여, 성능을 개선하고 메모리의 비용을 감소시킨다.
도 14a는 발명의 바람직한 실시예에 따라 두 부분들로 분할된 메모리 어레이를 도시한 것이다. 메모리 셀들(200)의 어레이는 제 1 부분(410) 및 제 2 부분(420)으로 분할된다. 제 2 부분(420)은 각 셀이 복수 비트들의 데이터를 저장하는 고밀도 저장으로서 구성되는 메모리 셀들을 갖는다. 제 1 부분(410)은 각 셀이 제 2 부분보다 적은 수의 비트들을 저장하는 저밀도 저장으로서 구성되는 메모리 셀들을 갖는다. 예를 들면, 제 1 부분에 메모리 셀은 제 2 부분에 3 비트들의 데이터에 비해 1 비트의 데이터를 저장하게 구성된다. 앞에 논의에 비추어, 제 1 부분은 제 2 부분에 비해 훨씬 더 넓은 오류 마진을 갖고 동작할 것이다. 이에 따라, 제 1 부분에 메모리 동작들은 제 2 부분에 오류보다 적은 오류를 가질 것이다.
"Selective Operation of a Multi-state Non-volatile Memory System in a binary Mode" 명칭의 미국특허 6,456,528는 정규로 2 이상의 상태들로 동작하지만 2 상태 동작 동안 증가된 마진을 제공하기 위해서 선택된 메모리 셀들이 단지 2상태들에서만 동작하는 플래시 비휘발성 메모리를 개시한다. 이것은 복수-상태 동작이 제공하는 증가된 밀도의 데이터 저장보다 이들 이점들을 갖는 것이 더 바람직할 때 2 상태들에서 동작되어 프로그래밍을 더 빠르게 하고 메모리 셀들의 동작 수명이 더 길어지게 할 수 있다. 미국특허 6,456,528의 전체 개시된 바를 참조로 본원에 포함시킨다.
한 페이지의 인입 데이터가 메모리 어레이(200)에 기입되어야 할 때, 바람직하게 효율을 위해서 고밀도 제 2 부분에 저장된다. 이에 따라, 데이터 페이지의 제 1 카피가 제 2 부분에 기입된다.
나중에, 데이터 페이지의 제 1 카피는 어떤 오류들이 있는지 판정하기 위해 "기입후 판독"에서 다시 판독된다. 이것은 캐시될 수 있는 원 카피와의 비교에 의해서 혹은 ECC의 EDC 부분을 체크함으로써 달성된다.
판독 카피에 오류 비트들의 수가 소정의 량을 초과하였는지 판정이 행해진다. 오류 비트들의 수가 소정의 량을 초과하지 않는다면, 제 2 부분에 저장된 것으로 간주된 제 1 카피는 유효한 것으로 간주된다. 데이터 페이지의 후속되는 판독은 제 2 부분 내 제 1 카피로부터 될 것이며, 임의의 오류들은 제어기에서 ECC에 의해 정정될 것이다.
도 11에 관련하여 앞서 설명된 바와 같이, 프로그래밍 동안 검증 프로세스는 과도-프로그래밍이 아니라 과부족(under)-프로그래밍에 대해서만 체크한다. 이에 따라, 오류는 데이터 페이지가 프로그램-검증된 후에 여전히 존재할 수 있다. 데이터 페이지 내 임의의 오류를 검출하기 위해 모든 구분 레벨들(도 7 및 도 8 참조)에 대해 판독 동작을 취할 것이다. 또한, 이웃 셀들의 후속되는 프로그래밍의 유핀 효과는 관련 데이터 페이지를 교란하여 외관상의 감지된 결과를 이동시킬 수도 있을 것이다. 이에 따라, 다시 판독하는 것은 적어도 현재 데이터 페이지에 유의한 유핀 효과를 가질 수도 있을 모든 이웃한 셀들의 프로그래밍 후가 될 것이다. 또 다른 실시예에서, 다시 판독하는 것은 관련 데이터 페이지를 내포하는 블록 내 모든 셀들에 프로그래밍이 행해진 후이다.
"기입후 판독"은 미국특허 6,913,823, 6,917,542 및 7,009,889에 개시되어 있고 이들 전체 개시된 바를 참조로 본원에 포함시킨다.
도 14b는 도 14a의 메모리 어레이의 제 1 부분에 데이터 페이지의 제 2 카피의 재기입을 도시한 것이다. 기입후 판독이 데이터 페이지 내 오류 비트들의 수가 소정 량을 초과하였음을 검출한 후에, 데이터 페이지의 제 2 카피는 제 1 부분에 재기입된다. 제 2 카피는 캐시될 수 있는 원 데이터의 카피이거나, 또 다른 실시예에서는 제 1 카피를 인출하여 ECC로 오류 비트들을 정정함에 의한다.
제 2 카피가 제 1 부분에 기입된 후에, 제 2 부분 내 제 1 카피를 유효한 카피로서 대체할 것이다. 제 1 카피는 폐용(obsolete)이 될 것이며, 제어기(도 1 참조)의 펌웨어에 구현된 블록 관리 시스템에서 디렉토리는 후속되는 액세스를 제 2 카피에 보내기 위해 업데이트될 것이다.
바람직한 일실시예에서, 제 1 부분은 1 비트의 데이터를 저장하는 각 메모리 셀을 가지며 제 2 부분은 1 이상의 비트의 데이터를 저장하는 각 메모리 셀을 갖는다.
도 15는 도 14a 및 도 14b에 기술된 실시예에 따라 기입후 판독 및 적응형 재기입의 프로세스를 예시한 흐름도이다.
단계(500): 메모리를 제 1 부분 및 제 2 부분으로 구성하며, 제 1 부분은 제 2 부분보다 큰 오류 마진을 갖고 동작하는 메모리 셀들을 갖는다.
단계(510): 일 그룹의 입력 데이터의 제 1 카피를 제 2 부분에 프로그램한다.
단계(520): 기정의된 시간 후에 오류에 대해 체크하기 위해 제 2 부분으로부터 제 1 카피를 판독한다.
단계(530): 오류가 소정 수의 오류 비트들을 초과하였나? 그러하다면, 단계(540)로 진행한다. 그렇지 않다면, 단계(550)로 진행한다.
단계(540): 일 그룹의 입력 데이터의 제 2 카피를 제 1 부분에 프로그램한다.
단계(550): 마지막 기입된 카피를 후속 판독을 위해 유효한 데이터로서 확인한다.
단계(560): 일 그룹의 입력 데이터가 비휘발성 메모리에 저장이 행해졌다.
대안적 실시예에서, 제 1 부분은 인입 데이터를 위한 캐시로서 작용하며, 따라서 입력 데이터의 캐시 카피는 캐시에 프로그램된다. 이어서, 데이터의 제 1 카피는 제 2 부분에 프로그램된다.
기입후 판독이 제 1 카피에 과도한 량의 오류를 검출하지 않았다면, 제 1 카피는 유효한 것으로 간주될 것이며 후속되는 판독은 제 1 카피에 액세스하게 될 것이다.
한편, 기입후 판독이 제 1 카피에 과도한 량의 오류를 검출하였다면, 제 1 부분 내 캐시된 카피는 제 2 부분 내 제 1 카피를 유효 데이터로서 대체할 것이다. 제 1 카피는 폐용이 될 것이며, 제어기(도 1 참조)의 펌웨어에 구현되는 블록 관리 시스템에서 디렉토리는 후속 액세스를 캐시된 카피에 보내기 위해 업데이트될 것이다.
"Multi-state Non-volatile Flash Memory Capable of Being its Own Two State Write Cache" 명칭의 미국특허 5,930,167는 2 부분들을 갖는 플래시 메모리 어레이를 개시한다. 제 1 부분은 셀당 1 비트를 저장하게 구성되며, 제 2 부분은 셀당 1 이상의 비트를 저장하게 구성된다. 제 1 부분은 저밀도 기입 캐시로서 작용한다. 인입 데이터는 초기에는 제 1 부분에 캐시된다. 나중에, 백그라운드에서, 캐시된 데이터는 고 저장밀도를 가진 제 2 부분으로 이전된다. 미국특허 5,930,167의 전체 개시된 바를 참조로 본원에 포함시킨다.
바람직한 실시예에서, 제 1 부분에는 제 1 섹션 및 제 2 섹션이 더욱 제공된다. 인입 데이터는 제 1 부분의 제 1 섹션에 캐시되며, 데이터의 제 1 카피는 제 2 부분에 기입된다. 이후에, 제 2 부분에 제 1 카피는 과잉의 오류 비트들에 대해 체크하기 위해 다시 판독된다. 오류 비트들이 소정 량을 초과하였다면, 인입 데이터의 제 2 카피는 제 1 부분의 제 2 섹션에 기입된다.
도 16a은 두 부분들로 분할된 메모리 어레이를 도시한 것이며, 발명의 바람직한 실시예에 따라 제 1 부분에는 캐시 섹션 및 재기입 섹션이 더 제공된다. 도 14a에서처럼, 메모리 셀들(200)의 어레이는 제 1 부분(410) 및 제 2 부분(420)으로 분할된다. 제 2 부분(420)은 각 셀이 복수 비트들의 데이터를 저장하는 고 밀도 저장으로서 구성되는 메모리 셀들을 갖는다. 제 1 부분(410)은 각 셀이 제 2 부분보다 적은 수의 비트들을 저장하는 저 밀도 저장으로서 구성되는 메모리 셀들을 갖는다. 그러므로 제 1 부분은 제 2 부분보다 훨씬 넓은 오류 마진을 갖고 동작한다.
제 1 부분(410)에는 인입 데이터를 캐시하기 위한 제 1 섹션(411) 및 제 2 부분으로부터 재기입들을 저장하기 위한 제 2 섹션(412)이 더욱 제공된다.
한 페이지의 인입 데이터가 메모리 어레이(200)에 기입되어야 할 때, 캐시된 카피는 제 1 부분(410)의 제 1 섹션(411)에 캐시된다. 제 1 카피는 바람직하게 효율 및 고 용량을 위한 고 밀도 제 2 부분에 저장된다. 이에 따라, 데이터 페이지의 제 1 카피는 제 2 부분에 기입된다.
또 다른 바람직한 실시예에 따라, 메모리 어레이에는 집적회로 칩 상에 한 세트의 데이터 래치들이 제공되며, 제 1 카피 내 오류 비트들의 체크는 제 1 카피 및 캐시된 카피를 한 세트의 데이터 래치들에 로드하고 한 세트의 데이터 래치들에서 비교함으로써 달성된다.
제어기에서 비교하지 않음으로써, 데이터는 제어기에 토글 아웃(toggled out) 될 필요가 없어, 많은 시간이 절약될 수 있다. 도 1은 데이터 비교를 행하기 위한, 칩 상에 있는 데이터 래치들(430)을 도시한 것이다.
도 16b는 기입후 판독의 바람직한 실시예에 따른 페이지 비교 기술을 도시한 것이다. 제 2 부분에 데이터 페이지의 제 1 카피는 임의의 오류들이 있는지 판정하기 위해 "기입후 판독"에서 다시 판독된다. 이것은 캐시된 카피와 비교에 의해 달성된다.
오류 비트들의 수가 소정 량을 초과하지 않는다면, 제 2 부분에 저장된 제 1 카피는 유효한 것으로 간주된다. 캐시된 카피는 폐용이 될 것이며, 제어기(도 1 참조)의 펌웨어에 구현되는 블록 관리 시스템에서 디렉토리는 후속 액세스를 제 1 카피에 보내기 위해 업데이트될 것이다. 데이터 페이지의 후속 판독은 제 2 부분에 제 1 카피로부터 될 것이며, 임의의 오류들은 제어기에서 ECC에 의해 정정될 것이다.
도 16c는 기입후 판독이 제 2 부분에 데이터 페이지에 과도한 량의 오류를 판정한 후에 제 1 부분에의 재기입을 도시한 것이다. 기입후 판독이 제 1 카피의 데이터 페이지에 오류 비트들의 수가 소정의 량을 초과하였음을 검출한 후에, 데이터 페이지의 제 2 카피는 제 1 부분(410)의 제 2 섹션(412)에 재기입된다. 제 2 카피는 캐시된 카피로부터 취해진다.
제 2 카피가 제 1 부분의 제 2 섹션(412)에 기입된 후에, 제 1 카피를 제 2 부분에 대체할 것이다. 제 1 카피 및 캐시된 카피는 폐용이 될 것이며, 제어기(도 1 참조)의 펌웨어로 구현되는 블록 관리 시스템에 디렉토리는 후속 액세스를 제 2 카피에 보내기 위해 업데이트될 것이다.
도 17은 도 16a 내지 도 16c에 기술된 실시예에 따라 기입후 판독 및 적응형 재기입의 프로세스를 도시한 흐름도이다.
단계(600): 메모리를 제 1 부분 및 제 2 부분으로 구성하며, 제 1 부분은 제 2 부분보다 큰 오류 마진을 갖고 동작하는 메모리 셀들을 갖는다.
단계(602): 일 그룹의 입력 데이터의 캐시된 카피를 제 1 부분의 제 1 섹션에 프로그램한다.
단계(610): 일 그룹의 입력 데이터의 제 1 카피를 제 2 부분에 프로그램한다.
단계(620): 기정의된 시간 후에 오류에 대해 체크하기 위해 제 2 부분로부터 제 1 카피를 판독한다.
단계(630): 오류가 소정 수의 오류 비트들을 초과하였나? 그러하다면, 단계(632)로 진행한다. 그렇지 않다면, 단계(650)로 간다.
단계(632): 제 1 부분의 제 1 섹션으로부터 일 그룹의 입력 데이터의 캐시된 카피를 판독한다.
단계(642): 캐시된 카피를 제 1 부분의 제 2 섹션에 일 그룹의 입력 데이터의 제 2 카피로서 프로그램한다.
단계(650): 후속 판독을 위해 마지막 기입된 카피를 유효한 데이터로서 확인한다.
단계(660): 비휘발성 메모리에 일 그룹의 입력 데이터 저장이 행해졌다.
발명의 전술한 상세한 설명은 예시 및 설명 목적으로 제시되었다. 하나도 빠뜨리는 것이 없게 하려는 것이거나 개시된 정밀한 형태로 발명을 제한하려는 것은 아니다. 위에 교시된 바에 따라 많은 수정들 및 변형들이 가능하다. 기술된 실시예들은 발명의 원리 및 이의 실제 응용을 최상으로 설명하고 그럼으로써 다른 당업자들이 발명을 여러 실시예들에서 그리고 고찰되는 특정 용도에 적합한 다양한 수정을 가하여 최상으로 이용할 수 있게 하기 위해 선택되었다. 발명의 범위는 첨부된 청구항들에 의해 정의되게 하였다.
향상된 기입후 판독 오류 관리
발명의 또 다른 면에서, 향상된 기입후 판독 오류 관리가 구현된다. 기입후 판독은 메모리 장치의 수명 초기엔 활성화되지 않는다. 수명 초기에 메모리 장치의 오류율은 매우 낮고 기입후 판독을 동작시킬 필요성이 없다. 이것은 기입후 판독을 행하기 위한 시간을 낭비하는 것을 피하게 한다. 메모리 장치가 사용을 통해 연수가 지남에 따라, 발명의 향상된 기입후 판독 및 오류 관리는 장치의 소정의 연수에서 활성화된다.
바람직한 실시예에서, 메모리 장치의 연수는 메모리 셀들의 각 소거 블록에 대해 유지되는 핫 카운트에 의해 판정된다. 핫 카운트는 내구성 또는 소거 블록이 소거 및 프로그램 동작들을 통해 사이클링된 횟수를 추적한다. 소거 블록의 핫 카운트가 소정의 핫 카운트 임계값을 지났을 때는 언제나, 향상된 기입후 판독 오류 관리가 개시되고 메모리 장치의 수명 말기까지 동작할 것이다.
도 18은 소거 블록들로 구성된 메모리를 도시한 것이다. 앞에서 도 6에 관련하여 기술된 바와 같이, 각 소거 블록은 함께 소거되는 일 그룹의 메모리 셀들이다. 또한, 셀이 반복하여 프로그램되고 소거될 때, 유전체를 통과하는 터널링에 의해 전하들이 플로팅 게이트(20)(도 2 참조)를 드나든다는 것이 앞에서 기술되었다. 일부 전하들이 유전체 내에 트랩될 때마다 셀의 임계값을 수정할 것이다. 셀이 겪은 프로그램-사이클들의 수는 사이클 수 NCYC("핫 카운트"라고도 알려진)에 의해 측정된다. 반복된 사이클링을 통해, 소정의 소거 블록에 대해 NCYC의 값이 증가하여, 블록 내 셀들에 대한 임계 윈도우가 계속해서 좁아지게 한다. 도 18은 핫 카운트 NCYC(m)(302)가 각 소거 블록(m)에 유지되는 바람직한 실시예를 도시한 것이다. 프로그램가능 단위는 페이지이기 때문에, 각 블록에 대한 핫 카운트는 도 9에 도시된 데이터 페이지(70')의 시스템 데이터 영역에 저장될 수 있다. 대안적으로, 핫 카운트들은 메모리 내 마스터 리스트에 저장될 수도 있다. 블록이 소거될 때마다, 이의 핫 카운트는 1만큼 증분된다.
도 19는 핫 카운트에 의해 판정되는 소정의 정도까지 메모리 장치의 연수가 지났을 때 활성화되는 오류 관리를 도시한 흐름도이다.
단계(700): 메모리 셀들의 소거 블록들로 구성되는 비휘발성 메모리를 제공하며, 각 소거 블록의 메모리 셀들은 함께 소거되고 각 블록의 소거/프로그램 사이클링 수에 따라 연수가 지난다.
단계(710): 연수가 지난 메모리 장치에 연관된 오류들을 정정하기 위한 오류 관리를 제공한다. 바람직한 실시예에서, 오류 관리는 앞에 기술된 기입후 판독 오류 관리이다.
단계(720): 각 블록에 행해진 소거/프로그램 사이클링 수를 기록하는 핫 카운트를 유지함으로써 각 블록의 연수를 추적한다.
단계(730): 메모리 블록의 핫 카운트>소정의 핫 카운트 임계값인가? 바람직한 실시예에서, 소정의 핫 카운트 임계값은 메모리(도 21 참조)에 저장된 파일 시스템 구성 파일에 파라미터 Hot_count_threshold_EPWR에 의해 주어진다. 크다면, 단계(740)로 가고, 그렇지 않다면 단계(750)로 간다.
단계(740): 메모리의 나머지 수명동안 오류 관리를 활성화한다.
단계(750): 오류 관리를 아직 활성화하지 않는다.
발명의 또 다른 면의 바람직한 실시예에서, 메모리의 고밀도 저장 부분(D3)은 3 비트들의 데이터를 저장하는 각 메모리를 갖는다. 메모리의 덜 오류가 나기 쉬운 저밀도 저장 부분(D1)은 1 비트들의 데이터를 저장하는 각 메모리를 갖는다. 입력 데이터는 먼저 D1에 저장되고 이어서 D3에 폴딩된다. 향상된 기입후 판독 오류 관리가 활성화되었을 때, D3 내 현재 채워진 블록은 다시 판독되고, 오류율이 소정의 임계값을 초과한다면, 현재의 D3 블록은 거절되고 재시도가 행해져 데이터가 새로운 D3 블록에 다시 폴딩된다. 새로운 D3 블록은 다시 판독되고 과잉의 오류율에 대해 체크된다. 새로운 D3 블록이 통과한다면, 이것은 양호한 데이터를 갖는 것이며 D1 내 원 데이터를 폐용이 되게 한다. 새로운 D3 블록이 다시 과잉의 오류율을 보인다면, 새로운 D3 블록은 다시 폐기된다. 소정 회수의 재시도들 후에 과잉의 오류율이 지속된다면, 어떠한 더 이상의 재시도도 시도되지 않으며 D1에서 D3으로의 폴딩 동작은 그만두고 원 데이터는 D1에 유지된다. 이때 메모리 장치는 추가의 프로그래밍 동작들에 대해 너무 노후한 것으로 간주되고 메모리 장치에 저장된 현존의 데이터의 무결성을 보존하기 위해 판독만 되게 한다.
도 20a 내지 도 20c는 D1 부분 및 D3 부분으로 구성된 메모리에서 기입후 판독 오류 관리를 구현하기 위한 여러 예들을 도시한 것이다. D1 부분 및 D3 부분으로 구성된 메모리는 전체 개시된 바를 참조로서 본원에 포함시키는 본원과 동일자로 출원된 Gorobets 등의 "MAINTAINING UPDATES OF MULTI-LEVEL NON-VOLATILE MEMORY IN BINARY NON-VOLATILE MEMORY" 명칭의 미국특허출원에 개시되어 있다.
도 20a는 발명의 바람직한 실시예에 따라 두 부분들로 분할된 메모리 어레이를 도시한 것이다. 메모리 셀들의 어레이(200)(도 1 참조)는 제 1 부분(410) 및 제 2 부분(420)으로 분할된다. 제 2 부분(420)은 각 셀이 복수 비트들의 데이터를 저장하는 고밀도 저장으로서 구성되는 메모리 셀들을 갖는다. 제 1 부분(410)은 각 셀이 제 2 부분보다 적은 수의 비트들을 저장하는 저밀도 저장으로서 구성되는 메모리 셀들을 갖는다. 예를 들면, 제 1 부분에 메모리 셀은 제 2 부분에 3 비트들의 데이터에 비해 1 비트의 데이터를 저장하게 구성된다. 셀당 1 비트의 데이터를 저장하는 제 1 부분은 D1이라 할 것이며 셀당 3 비트의 데이터를 저장하는 제 2 부분은 D3이라 할 것이다. 앞에 논의에 비추어, 제 1 부분은 제 2 부분에 비해 훨씬 더 넓은 오류 마진을 갖고 동작할 것이다. 이에 따라, 제 1 부분에서 메모리 동작들은 제 2 부분에서보다는 덜 오류를 가질 것이다.
일실시예에서, 제 1 부분(410) 또는 D1은 제 1 섹션(411) 및 제 2 섹션(412)으로 더욱 분할된다.
단계 (1)에서, 호스트 기입 동안, 입력 데이터는 먼저 제 1 섹션(411)에 캐시되거나 제 2 섹션(412)에 곧바로 기입된다. 입력 데이터가 조각나 있다면, 먼저 제 1 섹션에 캐시된다. 입력 데이터가 실질적으로 연이어 있는 순차적인 데이터라면, 제 2 섹션(412)에 곧바로 페이지씩으로 기입된다.
단계 (2)에서, 어쨌든, 입력 데이터는 종국에는 기입된 페이지들이 블록들(m.1, m.2, m.3)과 같은 가상의 D1 블록들에 놓여지는 제 2 섹션(412)에 있게 된다. 각 블록이 명확한 일 그룹의 논리 어드레스들로부터 데이터를 내포하는 수법에서, 가상 블록은 물리 블록에 대응하지 않고 여전히 몇몇 물리 D1 블록들에 걸쳐 분산된 일 그룹의 논리 어드레스들을 가질 수 있다.
단계 (3)에서, 데이터가 D1에 의해 페이지씩으로 기입되고 있을 때, D1에 3개의 2진 페이지들이 있을 땐, D3에 단일의 3-비트 페이지에 카피될 수 있고 이는 D1에서 D3으로의 폴딩이라고도 한다.
향상된 기입후 판독 오류 관리("EPWR")를 구현함으로써, 메모리 수명의 어떤 지점에서 기입후 판독 오류 관리가 시작될 것이다.
단계 (4)에서, D3 블록(m)은 이에 가상의 D1 블록들(m.1, m.2, m.3)의 전체 페이지들이 폴딩된 후에 완료된다. 이후에, D3 블록 내 데이터가 다시 판독되어 ECC 오류들에 대해 체크되는 EPWR에 의해 처리될 수 있다. ECC 오류들의 수가 파일 시스템 구성 파일에 설정된 파라미터 E_w_check에 의해 주어진 것과 같은 소정의 임계값 미만이라면, D3 블록 내 데이터는 유효한 것으로 간주된다. 대응하는 D1 페이지들은 안전하게 대체되고 폐기될 수 있다.
도 20b는 도 20a의 D3 블록이 기입후 판독 테스트에 실패한 다른 예를 도시한 것이다. 단계 (1) 내지 단계 (3)은 도 20a와 동일하다.
단계 (4')에서, D3 블록 내 데이터가 다시 판독될 때, ECC 오류의 수는 E_w_check보다 큰 것으로 발견된다. 이것은 D3 내 데이터가 거의 중요하지 않아 사용될 수 없음을 의미한다.
단계 (5)에서, 현존의 D3 블록이 기입후 판독 테스트에 실패한 경우에, EPWR은 데이터를 새로운 D3 블록에 폴딩함으로써 재시도를 지시한다.
단계 (6)에서, 새로운 D3 블록 내 데이터에 또 다른 기입후 판독 테스트가 행해진다. 이것이 테스트를 통과한다면, 새로운 D3 블록 내 데이터는 유효한 것으로 간주된다. 대응하는 D1 페이지들은 안전하게 대체되고 폐기될 수 있다.
도 20c는 도 20b의 새로운 D3 블록이 기입후 판독 테스트에 다시 실패한 또 다른 예를 도시한 것이다. 단계 (1) 내지 단계 (5)은 도 20b와 동일하다.
단계 (6')에서, 새로운 D3 블록 내 데이터가 다시 판독될 때, ECC 오류들의 수가 E_w_check보다 큰 것으로 발견된다. 이것은 재시도된 D3 블록에 데이터가 여전히 양호하지 않고 사용될 수 없음을 의미한다.
EPWR 프로세스는 또 다른 D3 블록에 추가의 재시도를 지시할 수 있다. 재시도들의 횟수는 파일 시스템 구성 파일에 파라미터, EPWR_Retries에 의해 설정된다. 예를 들면, EPWR_Retries이 1이라면, 프로세스는 새로운 블록이 테스트에 실패한 후엔 종료할 것이다.
이 경우에, 단계 (7)에서, 새로운 D3 블록은 사용될 수 없고, 파일 시스템은 대신 D1에 있는 대응하는 데이터에 곧바로 액세스할 것이다.
도 21은 향상된 기입후 판독 오류 관리에 연관된 파라미터들의 예를 예시한 표이다. 표는 바람직하게는 메모리에 저장된 파일 시스템 구성 파일에 유지된다.
E_pw_check - ECC 비트 레벨의 어떤 #에서 D3 블록이 매우 위험한 것으로 간주되어 새로운 D3 블록으로, D1에서 D3으로의 폴딩의 재시작이 요구됨을 명시하기 위해 파일 시스템 구성 파일에 설정된 변수.
ECC_threshod_SLC - 변수는 EPWR을 계속할지 아니면 하지 않을지를 판단하기 위해서 비교하기 위해 SLC 임계값을 유지하기 위해 파일 시스템 구성 파일에서 필요하다.
EPWR_enable_flag - 파일 시스템 구성 파일에서 제어되는 것으로 0 = 셋 되지 않으며(디폴트); 1 = EPWR이 활성화되었을 때 셋 된다.
Hot_count_enable_flag - 0 = 활성화되지 않음; 1 = 활성화됨.
Hot_count_threshold EPWR - 어떤 핫 카운트 레벨에서 EPWR이 필요하게 되는지를 명시하기 위해 파일 시스템 구성 파일에 설정된 변수. 모든 D3 블록들의 핫 카운트<핫 카운트 임계값이고, EPWR 인에이블 플래그 조차도 온 되었다면, EPWR 프로세스는 트리거되지 않는다.
EPWR_verify_page_budget - 얼마나 많은 페이지들이 EPWR의 1 국면 동안 판독될 수 있는가를 명시하기 위해 파일 시스템 구성 파일에 설정된 변수.
EPWR_retries - 재시도 횟수들의 수를 한정하기 위한 파일 시스템 구성 파일 내 변수.
D3_Block_max_retries - 수명동안에 D3 블록에 대해 재시도 횟수들의 총 수를 제한하기 위한 파일 시스템 구성 파일에 변수.
도 22a는 D1에서 D3으로 폴딩을 갖는 메모리에 적용되는 EPWR 오류 관리의 바람직한 구현을 예시한 흐름도이다.
단계(800): 시작.
단계(810): 도 20a에 관련하여 기술된 바와 같이 D1의 3개의 2진 데이터 페이지들로부터 데이터가 D3의 한 제 3의 페이지에 프로그램되는 D1에서 D3으로의 폴딩.
단계(812): D3 블록가 완전히 채워졌나? 완전히 채워졌다면, 단계(820)으로 가고, 그렇지 않다면 단계(810)로 되돌아간다.
단계(820): 향상된 기입후 판독 오류 관리("EPWR")가 활성화되었나? 장치-연수에 따르는 활성화에 대한 더 상세한 것이 도 22b에 주어져 있다. EPWR이 활성화된다면, 단계(830)에서 EPWR을 처리한다. 그렇지 않다면, 기입된 D3 블록의 무결성은 알 수 없지만, 낙관적으로 양호한 것으로 가정된다. 단계(850))로 간다.
단계(830): EPWR을 처리한다. EPWR의 더 상세한 구현은 도 22c에 주어져 있다.
단계(840): 고 레벨에서, 필수적으로, EPWR은 D3 블록의 기입후 판독 및 ECC 오류들의 레이트의 테스트를 수행한다. 오류들이 E_w_check(도 21 참조)을 초과하지 않는다면, D3 블록은 양호하다. 단계(850)로 간다. 그렇지 않다면, D3 블록 내 데이터는 사용될 수 없고 새로운 D3 블록에 D1 데이터를 폴딩하는 재시도가 고려된다. 단계(860)로 간다.
단계(850): D3 블록은 양호한 것으로 간주되고 따라서 D1 내 데이터의 원 카피는 폐용시켜 폐기되게 할 수 있다.
단계(860): 도 22c에 상세히 나타낸 횟수 고찰들에 기초하여 새로운 D3 블록에 대해 재시도 여부를 판단한다. 재시도가 허용되지 않는다면, 단계(870)로 간다. 그렇지 않다면 단계(862)로 간다.
단계(862): D1에서 D3으로의 폴딩이 새로운 D3 블록에 대해 반복된다. 또 다른 블록을 처리하기 위해 되돌아 간다.
단계(870): D3 블록 내 데이터는 양호하지 않은 것으로 간주되고, 따라서 데이터는 D1 내 원 카피로부터 액세스되어야 한다.
단계(872): 이 단계는 D3 블록을 재기입하려는 시도에서 다수의 비성공적 재시도들 후에 도달되기 때문에, 메모리는 이의 수명 말기에 가까운 것으로 간주된다. 프로그래밍 동작들에 기인하여 임의의 데이터 변질을 방지하기 위해 판독전용 상태에 놓여진다. 단계(890)로 간다.
단계(890): 완료.
도 22b는 향상된 기입후 판독 오류 관리의 장치-연수에 따르는 활성화 특징을 더 상세히 예시한 것이다. 도 22a에 단계(820)는 다음을 더 포함하기 위해 도 22b에 도시되었다:
단계(822): EPWR_enable_flag(도 21 참조)가 활성화되었는지 체크한다. 활성화되지 않았다면, EPWR은 전혀 이행되지 않는다. 디폴트에 의해 D3 블록이 양호한 것으로 간주되는 단계(850)로 간다. 활성화된다면, 메모리 장치의 어떤 연수가 지난 후에 EPWR이 시작되어야 할지를 제어하기 위해 단계(824)로 간다.
단계(824): Hot_count_enable_flag(도 21 참조)가 활성화되었는지 체크한다. 활성화되지 않았다면, EPWR은 메모리 장치의 수명 초기부터 이행된다. EPWR를 처리하기 위해 단계(830)로 곧바로 간다. 플래그가 활성화되었다면, 언제 EPWR을 개시해야 할지를 제어하는 단계(826)로 간다.
단계(826): D3 블록들 중 어느 것이 Hot_count-threshod_EPWR에 값을 초과하는 핫 카운트를 갖는지를 체크한다. 초과하지 않았다면, 메모리 장치는 아직 초기이며 쉽게 과잉의 오류들이 발생하지 않으며 단계(850)로 진행하여 EPWR은 근본적으로 보류된다. 핫 카운트가 임계값을 초과하였다면, 메모리 장치는 오류들이 현저해졌을 때 연수에 도달된 것이며 EPWR 프로세스로부터 잇점을 얻을 것이다. 단계(830)로 진행하여 EPWR를 처리한다.
도 22c는 향상된 기입후 판독 오류 관리의 바람직한 구현을 상세히 도시한 것이다. 도 22a에서 단계(830)는 다음을 더 포함한 것으로 도 22c에 도시되었다:
단계(832): D3 블록의 기입후 판독 및 가능한 재시도들을 행하는데 사용할 수 있는 처리 시간이 있는지를 체크한다. 가용한 시간은 바람직하게는 전경(foreground)에서 호스트 지령의 실행 동안 미사용된 시간으로부터 취해진다. 필요하다면, 프로세스는 각 호스트 지령 동안 여분의 시간을 더 잘 이용하기 위해서 더 작은 청크들로 분할될 수 있다. 프로세스를 시작할 가용한 시간이 있다면, 단계(834)로 가고, 그렇지 않다면 단계(838)로 간다.
단계(834): 프로세스를 시작하거나, 아니면 프로세스가 이미 시작되었지만 그 사이에 중단되었다면 프로세스를 계속한다.
단계(836): D3로부터 한 페이지의 데이터를 판독하여 EDC(오류 검출 코드)를 체크하기 위해 제어기에 전송한다. 단계(838)로 간다.
단계(840): EPWR은 D3 블록의 기입후 판독 및 ECC 오류들의 레이트의 테스트를 수행한다. 오류들이 E_pw_check(도 21 참조)를 초과하지 않는다면, D3에 있는 테스트되는 페이지는 양호하다. 단계(842)로 간다. 페이지가 양호하지 않은 것으로 테스트된다면, D3 블록 내 데이터는 사용될 수 없고 새로운 D3 블록에 D1 데이터를 폴딩하는 재시도가 고려된다. 단계(864)로 간다.
단계(842): D3 블록 내 모든 페이지들이 테스트되었나? 그렇지 않다면, 단계(844)로 진행하여 다음 페이지를 처리한다. 전체 블록이 양호한 것으로 테스트되었다면, 단계(850)로 간다.
단계(844): D3 블록 내 다음 페이지를 선택한다. 단계(836)로 되돌아 간다.
단계(862): 재시도가 시도되기 전에, 재시도 횟수가 이미 설정된 한계값, EPWR_Retries(도 21 참조)을 초과하였는지 체크한다. 그렇지 않다면, 단계(866)로 진행함으로써 재시도가 시도된다. 재시도 횟수가 설정된 한계값을 초과하였다면, 메모리 장치는 이의 수명 말기에 있는 것으로 간주되고 제어는 단계(870)로 간다.
단계(866): 재시도를 시도하기 전에 또 다른 고려사항은 과잉의 오류들이 D1 내 데이터에 고유한 것이고 D1에서 D3으로 프로그래밍 오류들에 기인한 것이 아닌 것인지를 체크하는 것이다. D1 데이터는 먼저 과잉의 ECC 오류들에 대해 체크된다. 오류의 수가 ECC_threshold_SLC와 같은(도 21 참조) 소정의 임계값을 초과하였다면, 재시도할 필요가 없다. 단계(834)로 되돌아가서 다른 D3 블록을 처리한다.
그러나, 이하 기술된 바와 같은 선택적 특징이 구현된다면, 대신에 선택적 단계(868)로 진행한다. 한편, D1 데이터가 양호하다면, 단계(869)에서 다른 D3 블록의 재시도를 시도한다. 또 다른 실시예에서, 단계(866)은 단계(862) 전에 수행된다.
또한, 도 22c는 점선 박스들로 나타낸 바와 같은 선택적 특징들을 도시한 것이다. 한 선택은 블록이 이의 수명동안 너무 많은 재시도가 행해졌는지를 체크하기 위해 단계(864) 및 단계(865)에 의해 예시된다. 그러하다면, 블록의 물리적 무결성이 문제될 수 있고 다시 사용되지 않도록 블록을 폐기하는 것이 최선이다. 이 선택이 이행될 때, 단계(862)에서 '아니오'로부터 흐름은 단계(864)로 가게 될 것이다.
단계(864): D3 블록이 파라미터 Block_max_retires(도 21 참조)에 의해 정의된 바와 같은 임계값 이상으로 재시도들이 행해졌나? 그러하다면, 블록을 폐기하기 위해 단계(865)로 가고, 그렇지 않다면 추가의 재기입 판단을 위해 단계(866)로 간다.
단계(865): D3 블록은 확실한 것으로 간주되기에는 이의 수명동안 너무 많은 재시도들이 되었다. 이것은 폐기되고 순환이 정지된다. 이어서 제어는 D3 블록을 재기입하기 위해 곧바로 단계(869)로 간다.
이외 다른 선택은 D1 데이터가 매우 양호하지 않는 경우에, D3에 폴딩되기 전에 먼저 ECC에 의해 정정되고 D1에 다시 놓여지는 것이다. 이 선택이 구현되었을 때, 단계(866)에서 '예'로부터 흐름은 단계(834) 대신 단계(868)로 보내질 것이다.
단계(868): 문제가 되는 D1 데이터는 ECC에 의해 정정되고 D1에 다시 놓여진다. 단계(869)으로 간다.
가속화된 기입후 판독
앞에 단락들은 데이터들이 기입된 후에("프로그램된"이라고도 함) 실제로 이들을 다시 판독하는 기술들을 기술하였다. 이 기술을 "PWR"(기입후 판독)이라고 한다. 앞에 기술된 발명의 일면에 따라, PWR 기술은 향상된 것으로 "EPWR"(향상된 기입후 판독)이라 한다. 이 경우에, PWR 동작은 필요할 때만 턴 온 된다. 예를 들면, PWR은 메모리가 사용을 통해 더 많은 오류들을 나타내기 시작한 후에만 개시된다. 이것은 PWR에 연관된 오버헤드들의 일부를 완화시킬 것이다.
발명의 또 다른 면에 따라서, 어떤 것이 기입되었는지를 체크하기 위해 모든 메모리 셀들을 기입후 판독하는 것은 많은 시간 및 시스템 자원들을 소비할 수도 있을 것으로 이 대신에, 기입후 판독은 유사한 오류율을 가진 모집단의 메모리 셀들을 나타내는 작은 한 샘플의 메모리 셀들에만 수행된다. 샘플의 기입후 판독이 소정의 값 이내의 오류율을 나타낼 때, 모집단은 체크를 통과한 것으로 가정된다. 그렇지 않다면, 모집단의 셀들에 이전에 기입된 데이터는 너무 많은 오류를 가진 것으로 간주되고 동일 영역 내 다른 위치에 혹은 본시 낮은 오류율을 갖는 메모리의 다른 영역에 다시 재기입된다.
앞에 설명된 바와 같이, 기입후 판독 체크는 프로그램 동작의 일부인 통상적 프로그램 검증과는 다르다. 셀을 프로그램할 때 셀에는 프로그래밍 전압들이 펄스로 가해진다. 각각의 펄스 사이에서 셀의 프로그램된 임계값이 기준 판독 임계값과 비교된다. 일단 셀의 임계값이 기준 판독 임계값을 지나 프로그램된 것으로 검출되면, 셀은 이의 비트라인에 인가되는 프로그램 금지 전압에 의해 재차 프로그래밍되지 못하게 된다. 이에 따라, 프로그램-검증은 셀이 기준 임계값을 지나 프로그램되었는지만을 보장하나, 발생하였을 수도 있을 임의의 과도(over) 프로그래밍의 어떠한 표시도 주지 않는다. MLC 메모리에 대한 판독 동작은 실제로는 프로그램된 임계값이 한 쌍의 기준 임계값들 사이에 있는지를 체크한다.
MLC 메모리에서 각 셀은 한 비트 이상의 데이터를 저장한다. 예를 들면 D2 메모리에서, 각 셀은 2 비트의 데이터를 저장한다. 셀들에 의해 지원되는 임계값 윈도우는 기준 임계값에 의해 2등분으로 분할된다. 셀의 프로그램된 임계값이 제 1 반분에 놓여있을 때, 이것은 1 비트 값, 예를 들면, '1'을 가지며 제 2 반분에 있을 때, 이것은 다른 비트 값, 예를 들면, '0'을 갖는다. 유사하게, D3 메모리에서, 각 셀은 3 비트의 데이터를 저장하며 D4 메모리에서, 각 셀은 4 비트의 데이터를 저장한다. 일반적으로, Dm 메모리에 있어서, 각 셀은 m 비트들을 저장하며, 임계값 윈도우는 2m-l 기준 임계값들에 의해 2m 전압 대역들로 분할된다. 코딩 수법은 전압 대역들 각각에 m-비트 코드 워드를 할당하기 위해 사용된다.
2-비트 혹은 4-상태 메모리에 대한 예시적인 바람직한 "LM" 코딩
도 23(0) ~ 도 23(3)은 바람직한 2-비트 논리 코드("LM" 코드)로 엔코딩되는 4-상태 메모리의 페이지씩 프로그래밍을 예시한 것이다. 페이지의 각 메모리 셀로부터 2 코드 비트들은 2개의 논리 페이지들을 형성하며 각 페이지는 페이지의 모든 메모리 셀들로부터 구성된 한 코드 비트들로부터 형성된다. 프로그래밍은 하위 페이지에서 상위 페이지로 논리-페이지씩으로 수행될 수 있다. 이 코드는 내고장성(fault-tolerance)을 제공하며 BL-BL 플로팅-게이트 커플링(유핀) 효과를 완화시킨다.
도 23(0)은 4-상태 메모리 어레이의 임계 전압 분포들을 도시한 것이다. 각 메모리 셀의 가능한 임계 전압들은 4개의 가능한 메모리 상태들, "Gr", "A", "B" 및 "C"을 구분짓기 위해 4개의 영역들로 분할되는 임계값 윈도우에 걸쳐 있다. "Gr"은 엄밀한 분포 내의 소거된 상태인 그라운드(ground) 상태이며, "A", "B" 및 "C"은 3개의 점진적으로 프로그램된 상태들이다. 판독 동안, 4개의 상태들은 3개의 구분 기준 임계값들, DA, DB 및 DC에 의해 구분된다.
도 23(3)은 4개의 가능한 메모리 상태들을 나타내기 위한 바람직한 2-비트 LM 코딩을 도시한 것이다. 메모리 상태들(즉, "Gr", "A", "B", "C") 각각은 한 쌍의 "상위, 하위" 코드 비트들, 즉 각각 "11", "01", "00", "10"으로 표현된다. LM 코딩은 상위 및 하위 비트들이 상태들 "A" 및 "C"에 대해 반대로 되어 있는 점에서 종래의 그레이(Gray) 코드와는 다르다. "LM" 코드는 미국특허 6,657,891에 개시되어 있고, 전하들에 큰 변화를 요구하는 프로그램 동작들을 피하게 함으로써 이웃한 플로팅 게이트들 간에 전계-효과 커플링을 감소시키는데 잇점이 있다. 도 23(2) 및 도 23(3)에서 알게 되는 바와 같이, 각 프로그래밍 동작은 임계 전압들(VT)의 적절한 변화로부터 명백한 바와 같이 전하 저장 유닛에 전하들이 적절하게 변화되게 한다.
코딩은 2 코드 비트들인 "하위" 및 "상위" 비트들이 개별적으로 프로그램되고 판독될 수 있게 설계된다. 하위 비트를 프로그램할 때, 셀의 임계 레벨은 "소거된" 영역에 머물러 있거나 아니면 임계값 윈도우의 "하위 중간" 영역으로 이동된다. 상위 비트를 프로그램할 때, 이들 두 영역들 중 어느 한 영역에서 셀의 임계 레벨은 임계값 윈도우의 "하위 중간" 영역에서 약간 더 높은 레벨로 더 나아간다.
도 23(1) 및 도 23(2)은 2-비트 LM 코드를 사용한 하위 페이지 프로그래밍을 도시한 것이다. 내고장성(fault-tolerant) LM 코드는 임의의 중간 상태들을 거쳐가는 임의의 후속되는 상위 페이지 프로그래밍을 피하게 설계된다. 이에 따라, 제 1 회째에 하위 페이지 프로그래밍은 하위 비트가 "1"이면 셀이 "소거된" 또는 "Gr" 상태에 그대로 있게 하거나, 하위 비트가 "0"이면 셀이 "하위 중간" 상태로 프로그램되게 한다. 기본적으로, "Gr" 또는 "그라운드" 상태는 완전히 소거된 상태들을 명확한 일범위의 임계값들 이내로 프로그램되게 함으로써 엄밀한 분포를 가진 "소거된" 상태이다. "하위 중간" 상태들은 메모리 상태 "A"와 메모리 상태 "B" 사이에 걸쳐있는 넓은 분포의 임계 전압들을 가질 수 있다. 프로그래밍 동안, "하위 중간" 상태는 DA와 같은 개략적인 구분점을 기준으로 하여 검증된다.
도 23(2) 및 도 23(3)은 2-비트 LM 코드를 사용한 상위 페이지 프로그래밍을 도시한 것이다. 상위 페이지 프로그래밍은 제 1 회째의 하위 페이지 프로그래밍을 기초로 하여 수행된다. 주어진 상위 상위 비트는 하위 비트의 값에 따라 서로 다른 메모리 상태들을 나타낼 수 있다. 제 2 회째의 프로그래밍에서, 하위 비트가 "1"에 있는 상태에서 셀이 "1"로서 상위 비트를 갖는다면, 즉 (1,1)이라면, 이 셀에 대한 프로그래밍은 없으며 "Gr" 상태에 그대로 있는다. 하위 비트가 "1"에 있는 상태에서 셀이 "0이면, 셀은 "Gr" 상태에서 "A" 상태로 프로그래밍된다. "A"로 프로그래밍 하는 동안, 구분점 DVA에 관하여 검증한다. 한편, 셀이 하위 비트가 "0"에 있는 상태에서 "0"으로서 상위 비트를 갖는다면, 즉, (0,0)이라면, 셀은 "하위 중간" 상태에서 "B"로 프로그래밍된다. 구분점 DVB에 관하여 프로그램 검증된다. 유사하게, 셀이 하위 페이지가 "0"에 있는 상태에서 "1"로서 상위 비트를 갖는다면, 즉, (1,0)이라면, 셀은 "하위 중간" 상태에서 "C"로 프로그래밍된다. 프로그램 검증은 구분점 DVC에 관하여 한다. 상위 페이지 프로그래밍은 "Gr" 상태 또는 "하위 중간" 상태에서 다음 이웃한 메모리 상태로 프로그래밍하는 것만을 수반하기 때문에, 한 회에서 다른 회에 걸쳐 많은 량의 전하들이 바뀌지 않는다. 또한, "Gr"에서 개략적인 "하위 중간" 상태로 하위 페이지 프로그래밍은 시간을 절약하게 설계된다.
도 24a는 2-비트 LM 코드로 엔코딩되는 4-상태 메모리의 하위 비트를 구별하기 위해 요구되는 판독 동작을 도시한 것이다. 디코딩은 상위 페이지가 프로그램되었는지 여부에 따를 것이다. 상위 페이지가 프로그램되어 있다면, 하위 페이지를 판독하는 것은 구분 임계 전압(DB)에 관하여 readB의 한번의 판독 패스(pass)를 요구할 것이다. 반면, 상위 페이지가 프로그램되어 있지 않다면, 하위 페이지는 "중간" 상태(도 23(2) 참조)에 프로그램될 것이며 readB는 오류를 야기할 것이다. 오히려, 하위 페이지를 판독하는 것은 구분 임계 전압(DA)에 관하여 readA의 한번의 판독 패스를 요구할 것이다. 두 경우들을 구별하기 위해서, 상위 페이지가 프로그램되고 있을 때 상위 페이지에 플래그("LM" 플래그)가 기입된다(일반적으로 오버헤드 또는 시스템 영역에). 판독 동안, 상위 페이지가 프로그램되어져 있으며 따라서 readB 동작이 수행될 것으로 먼저 가정할 것이다. LM 플래그가 판독된다면, 가정은 맞는 것이며 판독 동작이 행해진다. 반면, 첫번째 판독이 플래그를 유발하지 않았다면, 상위 페이지는 프로그램되지 않았으며 따라서 하위 페이지는 readA 동작에 의해 판독되어야 할 것임을 나타낼 것이다.
도 24b는 2-비트 LM 코드로 엔코딩되는 4-상태 메모리의 상위 비트를 구별하기 위해 요구되는 판독 동작을 도시한 것이다. 도면으로부터 명백한 바와 같이, 상위 페이지는 각각 구분 임계 전압들(DA 및 DC)에 관하여 readA 및 readC의 2-패스 판독을 요구할 것이다. 유사하게, 상위 페이지의 디코딩은 상위 페이지가 아직 프로그램되지 않았다면 "중간" 상태에 의해 혼돈될 수도 있다. 다시 LM 플래그는 상위 페이지가 프로그램되었는지 여부를 나타낼 것이다. 상위 페이지가 프로그램되지 않았다면, 판독 데이터는 상위 페이지 데이터가 프로그램되지 않았음을 나타내는 "1"로 리셋될 것이다.
판독이 "풀-시퀀스" 판독 또는 "전(all)-비트" 판독에서처럼 구분된 상태들의 모든 시퀀스를 거쳐야 하는 것이라면, 판독은 메모리 기준 임계 전압들(DA, DB, DC)에 의해 각각 구분된 메모리 상태들 "Gr", "A", "B", 및 "C"에 관하여 수행된다. 모든 가능한 상태들은 풀-시퀀스 판독에 의해 구별되기 때문에, 어떠한 LM 플래그에 대해서도 체크할 필요성이 없다. 이 모드의 판독에서, 모든 비트들은 함께 판정된다.
3-비트 또는 8-상태 메모리에 대한 예시적인 바람직한 "LM" 코딩
2-비트 LM 코드에 대한 예는 유사하게 3-비트 혹은 그 이상의 수의 비트들로 확장될 수 있다.
도 25(0) ~ 도 25(4)는 바람직한 3-비트 논리 코드("LM" 코드)로 엔코딩되는 8-상태 메모리의 프로그래밍을 도시한 것이다. 페이지의 각 메모리 셀로부터 3 비트들은 3개의 논리 페이지들을 형성하며 프로그래밍은 논리-페이지씩으로 수행될 수 있다. 이 코드는 앞에서 기술된 2-비트 LM 코딩과 유사하며 8개의 가능한 메모리 상태들을 엔코딩하기 위한 3 비트들로의 확장이다. 도 25(0)은 8-상태 메모리 어레이의 임계 전압분포들을 도시한 것이다. 각 메모리 셀의 가능한 임계 전압들은 8개의 가능한 메모리 상태들, "Gr", "A", "B", "C", "D", "E", "F" 및 "G"을 구분하기 위해 8개의 영역들로 분할되는 임계값 윈도우에 걸쳐 있다. "Gr"은 그라운드 상태이며, 이것은 엄밀한 분포에서 소거된 상태이며 "A" ~ "G"는 7개의 점진적으로 프로그램된 상태들이다. 판독 동안에, 8개의 상태들은 8개의 구분 기준 임계값들, DA ~ DG에 의해 구분된다.
도 25(4)는 8개의 가능한 메모리 상태들을 나타내기 위한 바람직한 3-비트 LM 코딩을 도시한 것이다. 8개의 메모리 상태들 각각은 3가지의 "상위, 중위, 하위" 비트들, 즉 각각 "111", "O11", "001", "101", "100", "000", "010", "110"로 표현된다. 도 25(1) 및 도 25(4)에서 보는 바와 같이, 각 프로그래밍 동작은 임계 전압들(VT)에서 적절한 변화로부터 명백한 바와 같이 전하 저장 유닛에 전하들이 적절히 변화되게 한다.
코딩은 3 코드 비트들로서 "하위", "중위" 및 "상위" 비트들이 개별적으로 프로그램되고 판독될 수 있게 설계된다. 이에 따라, 제 1 회째의 하위 페이지 프로그래밍은 하위 비트가 "1"이라면 셀을 "소거된" 혹은 "Gr" 상태에 있게 하고 하위 비트가 "0"이면 "하위 중간" 상태로 프로그램되게 한다. 기본적으로, "Gr" 또는 "그라운드" 상태는 완전히 소거된 상태들을 명확한 일범위의 임계값들 이내로 프로그램되게 함으로써 엄밀한 분포를 가진 "소거된" 상태이다. "하위 중간" 상태들은 메모리 상태 "B"와 메모리 상태 "D" 사이에 걸쳐있는 넓은 분포의 임계 전압들을 가질 수 있다. 프로그래밍 동안, "하위 중간" 상태는 DB와 같은 개략적인 구분 기준 임계값을 기준으로 하여 검증될 수 있다. 중간 비트를 프로그램할 때, 셀의 임계 레벨은 하위 페이지 프로그래밍으로부터 비롯되는 두 영역들 중 한 영역부터 시작하여 4개의 가능한 영역들 중 한 영역으로 이동할 것이다. 상위 비트를 프로그램할 때, 셀의 임계 레벨은 중위 페이지 프로그래밍으로부터 비롯되는 4개의 가능한 영역들 중 한 영역부터 시작하여 8개의 가능한 메모리 상태들 중 한 상태로 이동할 것이다.
일반적으로, 한 페이지의 메모리 셀들은 각 메모리 셀이 3 비트들을 갖고, 병렬로 프로그램된다. 이에 따라, 한 페이지의 메모리 셀들은 3개의 논리 데이터 페이지들을 갖는 것으로서 간주될 수 있고 각 논리 데이터 페이지는 페이지의 모든 셀들의 한 코드 비트로부터 구성된다. 이에 따라, "하위 비트" 페이지는 페이지의 모든 메모리 셀들의 하위 비트로부터 형성되고, "중위 비트" 페이지는 모든 셀의 중간 비트로부터 형성되고, "상위 비트" 페이지는 페이지의 모든 셀의 상위 비트로부터 형성된다.
도 25(1) 및 도 25(2)는 3-비트 LM 코드를 사용한 하위 페이지 프로그래밍을 도시한 것이다. 내고장성 LM 코드는 임의의 중간 상태들을 거쳐가는 임의의 후속되는 상위 페이지 프로그래밍을 피하게 설계된다. 이에 따라, 제 1 회째의 하위 페이지 프로그래밍은 하위 비트가 "1"이라면 셀을 "소거된" 혹은 "Gr" 상태에 있게 하고 하위 비트가 "0", 즉 (x,x,O)이면 "하위 중간" 상태로 프로그램되게 한다. 기본적으로, "Gr" 또는 "그라운드" 상태는 완전히 소거된 상태들을 명확한 일범위의 임계값들 이내로 프로그램되게 함으로써 엄밀한 분포를 가진 "소거된" 상태이다. "하위 중간" 상태들은 메모리 상태 "B"와 메모리 상태 "D" 사이에 걸쳐있는 넓은 분포의 임계 전압들을 가질 수 있다. 프로그래밍 동안, "하위 중간" 상태는 DB와 같은 구분점에 관하여 검증된다.
도 25(2) 및 도 25(3)은 3-비트 LM 코드를 사용한 중위 페이지 프로그래밍을 도시한 것이다. 중위 페이지 프로그래밍은 제 1 회째의 하위 페이지 프로그래밍에 기초하여 수행된다. 주어진 중위 비트는 하위 비트에 따라 서로 다른 메모리 상태들을 나타낼 수 있다. 제 2회째의 프로그래밍에서, 셀이 하위 비트가 "1"에 있는 동안 중위 비트를 "1"로서 갖는다면, 즉, (x,1,1)이라면, 이 셀에 대한 프로그래밍은 없으며 "Gr" 상태에 그대로 있는다. 하위 비트가 "1"인 상태에서 중위 비트가 "0"이라면, 즉 (x,O,1)이라면, 셀은 "Gr" 상태에서 "A"와 "B" 사이에 걸쳐있는 제 1 "중위의 중간" 상태에 프로그램된다. 제 1 "중위의 중간" 상태에 프로그램하는 동안, DVA에 관하여 검증된다. 반면, 셀이 하위 비트가 "0"에 있는 동안 중위 비트를 "0"으로서 갖는다면, 즉, (x,O,O)이라면, 셀은 "하위 중간" 상태에서 "C"와 "D" 사이에 걸쳐있는 제 2의 중위의 중간" 상태에 프로그램된다. DVC에 관하여 프로그램 검증된다. 유사하게, 셀이 하위 페이지가 "0"에 있는 동안 중위 비트를 "1"로서 갖는다면, 즉, (x,1,O)이라면, 셀은 "하위 중간" 상태에서 "E"와 "F" 사이에 걸쳐있는 제 3의 "중위의 중간" 상태에 프로그램될 것이다. DVE에 관하여 프로그램 검증된다.
도 25(3) 및 도 25(4)는 3-비트 LM 코드를 사용한 상위 페이지 프로그래밍을 도시한 것이다. 상위 페이지 프로그래밍은 제 1 회째 및 제 2 회째, 즉 하위 및 중위 페이지 프로그래밍에 기초하여 수행된다. 주어진 상위 비트는 하위 및 중위 비트들에 따라 서로 다른 메모리 상태들을 나타낼 수 있다. 제 3회째의 프로그래밍에서, 셀이 하위 및 중위 비트가 "1"에 있는 동안 상위 비트를 "1"로서 갖는다면, 즉, (1,1,1)이라면, 이 셀에 대한 프로그래밍은 없으며 "Gr" 상태에 그대로 있는다. 반면, 하위 및 중위 비트가 "1"에 있는 동안 상위 비트가 "0"이라면, 즉, (0,1,1)이라면, 셀은 "Gr" 상태에서 "A" 상태에 프로그램된다. "A"로 프로그래밍하는 동안, 구분점(DVA)에 관하여 검증된다.
유사하게, 셀이 하위 비트 및 중위 비트들이 각각 "0" 및 "1"에 있는 동안 상위 비트를 "0"으로서 갖는다면, 즉 (0,0,1)이라면, 셀은 제 1의 "중위 중간" 상태에서 "B"에 프로그램된다. 구분점(DVB)에 관하여 프로그램 검증된다. 셀이 하위 비트 및 중위 비트들이 각각 "0" 및 "1"에 있는 동안 상위 비트를 "1"로서 갖는다면, 즉 (1,0,1)이라면, 셀은 제 1의 "중위 중간" 상태에서 "C"에 프로그램된다. 구분점(DVC)에 관하여 프로그램 검증된다.
유사하게, 셀이 하위 비트 및 중위 비트들이 각각 "0" 및 "0"에 있는 동안 상위 비트를 "1"로서 갖는다면, 즉 (1,0,0)이라면, 셀은 제 2의 "중위 중간" 상태에서 "D"에 프로그램된다. 구분점(DVD)에 관하여 프로그램 검증된다. 셀이 하위 비트 및 중위 비트들이 각각 "0" 및 "0"에 있는 동안 상위 비트를 "0"으로서 갖는다면, 즉 (0,0,0)이라면, 셀은 제 1의 "중위 중간" 상태에서 "E"에 프로그램된다. 구분점(DVE)에 관하여 프로그램 검증된다.
유사하게, 셀이 하위 비트 및 중위 비트들이 각각 "1" 및 "0"에 있는 동안 상위 비트를 "0"로서 갖는다면, 즉 (0,1,0)이라면, 셀은 제 3의 "중위 중간" 상태에서 "F"에 프로그램된다. 구분점(DVF)에 관하여 프로그램 검증된다. 셀이 하위 비트 및 중위 비트들이 각각 "0" 및 "0"에 있는 동안 상위 비트를 "1"로서 갖는다면, 즉 (1,1,0)이라면, 셀은 제 3의 "중위 중간" 상태에서 "G"에 프로그램된다. 구분점(DVG)에 관하여 프로그램 검증된다.
상위 페이지 프로그래밍은 "Gr" 상태 또는 "중위의 중간" 상태들 중 한 상태로부터 다음 이웃한 메모리 상태로의 프로그래밍만을 수반하기 때문에, 한 회에서 다른 회에 걸쳐 많은 량의 전하들이 바뀌지 않는다. 이것은 BL-BL 유핀 효과를 완화시키는데 도움을 준다.
이에 따라, Dm (m = 1, 2, 3,...) 메모리는 한번에 한 비트로 프로그램될 수 있고 한번에 한 비트를 판독할 수 있음을 알 것이다. 워드라인(WLn) 상에 일 그룹의 메모리 셀들이 병렬로 프로그램되거나 판독될 때, 그룹에 연관된 m 데이터 페이지들이 있을 것이며, 각 데이터 페이지는 그룹의 각 셀들로부터 한 비트에 대응한다. 점진적 판독 모드에서, 감지는 기준 임계값들의 일부에 대해 행해지고 각 감지에서 m 데이터 페이지들 중 하나만이 WLn으로부터 판독되어 제어기에 전송된다. 풀시퀀스 판독 모드에서, 감지는 모든 기준 임계값들에 대해 행해지고 모든 m 데이터 페이지들은 페이지씩 전송되기 전에 WLn으로부터 판독된다.
예를 들면, 도 4에 도시된 NAND 아키텍처를 가진 메모리의 경우에, 각 NAND 스트링은 데이터 체인의 n 메모리 셀을 갖는다. 일실시예에서, 한 행의 이러한 NAND 체인들은 도 6에 도시된 소거 블록(300)을 형성한다. 도 4에서, 한 페이지의 메모리 셀들, 이를테면 WL3 상의 페이지(70)는 병렬로 동작된다.
도 9는 워드라인(WLn) 상에 m-비트 메모리에 대한 m 데이터 페이지들 중 하나인 데이터 페이지(70')를 도시한 것이다. 앞에 기술된 바와 같이, 또 다른 바람직한 실시예에서, 점점 더 장치 집적도가 높아짐에 따라, ECC 필드를 공유하는 페이지 내 최적의 수보다 더 많은 메모리 셀들이 있을 때, 페이지(70)는 "ECC 페이지들"로 구성되는 더 작은 유닛들로 분할된다.
도 26a는 도 9에 도시된 것과 유사한 ECC 필드를 내포하는 ECC 페이지를 개요적으로 도시한 것이다. ECC 페이지(80)은 사용자 부분(82) 및 시스템 부분(84)을 포함한다. 사용자 부분(82)은 사용자 데이터의 저장을 위한 것이다. 시스템 부분(84)은 일반적으로 시스템 데이터의 저장을 위해 메모리 시스템에 의해 사용된다. 시스템 데이터에는 ECC가 포함된다. ECC는 ECC 페이지에 대해 계산된다. 전형적으로, ECC는 제어기(102)(도 1 참조) 내 ECC 프로세서(62)에 의해 계산된다. 도 26a와 도 9 간에 차이는 ECC 페이지(80)가 전체 데이터 페이지(70')을 점유하는 대신에 이것이 데이터 페이지를 구성하는 몇개 중에 하나라는 것이다.
도 26b는 데이터 페이지를 구성하는 복수의 ECC 페이지들을 도시한 것이다. 도 4에 도시된 데이터 페이지(70')와 같은 데이터 페이지는 WL 상에 한 페이지의 셀들의 각 셀로부터의 논리 비트로부터 구성된 한 세트의 데이터이다. 일반적으로 데이터 페이지를 구성하는 N개의 EEC 페이지들이 있다. 예를 들면, N=4이며, 이 경우엔 한 데이터 페이지(70')를 구성하는 4개의 EEC 페이지들(80)이 있다.
데이터가 호스트로부터 수신되었을 때, ECC 페이지의 데이터는 제어기(102) 내에 놓여지고 이의 ECC(86)가 ECC 프로세서(62)(도 1 참조)에 의해 계산된다. 자신의 ECC를 갖는 다수의 ECC 페이지들(80)은 데이터 페이지(70')로서 메모리 어레이(200)에 놓여져 기입된다. 전형적으로, 데이터 페이지(70')가 판독될 때, 데이터 페이지는 데이터 래치들(430)에 래치되고 I/O 회로들(440)에서 제어기(102)로 이동된다. 제어기(102)에서, 데이터 페이지들의 각 ECC 페이지들은 판독된 데이터에 대해 계산된 ECC의 제 2 버전에 비교되는 자신의 ECC(86)을 갖는다. ECC는 전형적으로 데이터 페이지 내 임의의 오류의 신속한 검출을 위한 오류 검출 코드("EDC")를 포함한다. 판독된 데이터 페이지 내 임의의 오류의 존재를 EDC가 나타낸다면, ECC를 실행시켜 판독된 데이터 페이지 내 오류 비트들을 정정한다. ECC는 소정의 최대 수의 오류들까지를 정정하게 설계된다. 실제로, 메모리의 수명 중 언제든, ECC는 소정의 최대 미만의 소정의 수의 오류들을 정정하기 위한 버짓을 가질 수 있다.
2-비트 메모리에 있어서, 각 셀은 2 비트들의 데이터를 저장하며, 도 4에 예에서 각 WL에 연관된 2 데이터 페이지들이 있을 것이다. 각 데이터 페이지가 4 ECC 페이지들을 갖는다면, WL에 프로그램되고 PWR 체크를 위해 판독될 총 8개의 ECC 페이지들이 있을 것이다.
유사하게 3-비트 메모리에 있어서, 각 셀은 3 비트들의 데이터를 저장하며 도 4에 예에서 각 WL에 연관된 3 데이터 페이지들이 있을 것이다. 각 데이터 페이지가 4 ECC 페이지들을 갖는다면, WL에 프로그램되고 PWR(기입후 판독) 체크를 위해 판독될 총 12개의 ECC 페이지들이 있을 것이다.
이에 따라, 모든 WL을 기입후 PWR 체크를 수행하는 것은 12 ECC 페이지들을 감지하고 이어서 ECC 체크를 위해 제어기에 전송시키는 것을 수반할 수 있음을 3-비트 메모리에 있어서 알 것이다. ECC 디코더가 12 ECC 페이지들 중 어느 하나가 소정의 오류 버짓을 초과하였음을 발견한다면, 이 WL에의 기입은 수락불가한 것으로 간주되고 다른 WL에서 재시도된다. 예를 들면, 기입은 동일 블록 내 혹은 오류들에 대해 더 높은 허용범위(tolerance)를 갖는 메모리의 한 부분, 이를테면 1-비트 셀들을 갖는 부분 내 또 다른 WL에 재기입된다.
3-비트 메모리 예에서, 감지될 3 데이터 페이지가 있다. 도 25에 관련하여 설명으로부터 알 수 있는 바와 같이, 이것은 3 판독 사이클들이 일어날 것이며 각각은 각각의 데이터 페이지에 대한 것이다. 각각의 판독 사이클은 하나 이상의 기준 임계값들에 관하여 감지할 것이며 그러므로 WL을 판독하는 것은 시간이 걸릴 것이다. 또한, 각각의 데이터 페이지는 4 ECC 페이지들을 가지며 총 12 ECC 페이지들은 제어기에 직렬로 전송될 필요가 있을 것이다. 감지 동작들보다 더 많은 시간은 아닐지라도, 전송 동작들도 시간이 걸릴 것이다.
전체 모집단 대신 샘플에 대한 PWR 체크
발명의 일반적 실시예에서, 기입된 것에 관한 기입후 판독(PWR) 체크는 기입된 것의 일부분만을 체크함으로써 가속화된다. 기입후 판독 체크는 기입되었던 것의 샘플만에 관해 수행된다.
도 27은 가속화된 PWR의 일반적 실시예를 도시한 흐름도이다.
단계(900): 복수의 그룹들의 메모리 셀들을 제공하며, 각 그룹 내 메모리 셀들은 병렬로 동작한다.
단계(902): 데이터의 복수의 서브세트들을 제 1 그룹의 메모리 셀들에 프로그램하며, 각 서브세트의 데이터에는 ECC가 제공된다.
단계(910): 제 1 그룹의 메모리 셀들에 프로그램된 데이터의 샘플을 선택하며, 샘플은 제 1 그룹에 프로그램된 상기 복수의 서브세트들의 데이터의 한 서브세트의 데이터로부터 선택된다.
단계(920): 상기 샘플을 판독한다.
단계(922): 오류들에 대해 상기 샘플을 체크한다.
단계(930): 샘플로부터 체크된 오류들이 소정의 수의 오류 비트들 이상일 때마다 제 2 그룹의 메모리 셀들에 상기 복수의 서브세트들의 데이터를 다시 프로그래밍한다.
일실시예에서, 체크될 샘플은 워드라인 상에 일 그룹의 셀에 기입되는 모든 ECC 페이지들의 서브세트이다. 특히, 서브세트는 가장 큰 오류율을 갖는 것으로 추정되는 모든 ECC 페이지들 중 하나이다.
도 28은 도 27에 도시된 가속화된 PWR의 바람직한 실시예를 도시한 흐름도이다. 프로세스는 단계(910)가 단계(910')로 대체되는 것을 제외하고, 도 27의 프로세스와 유사하다.
단계(910'): 제 1 그룹의 메모리 셀들에서 프로그램된 데이터의 샘플을 선택한다. 샘플은 제 1 그룹에 프로그램된 상기 복수의 서브세트들의 데이터의 한 서브세트의 데이터에서 선택되고 샘플은 제 1 그룹에 프로그램된 데이터의 상기 복수의 서브세트들 중에서 가장 큰 오류율을 갖는 것으로 추정된 한 서브세트의 데이터이다.
도 29는 워드라인 상에 일 그룹의 3-비트 메모리 셀들이 기입된 후에 기입후 판독을 위해 선택된 샘플을 도시한 것이다. 3-비트 메모리에서는 워드라인 WL(42)에 기입되는 3 데이터 페이지들, 즉, 하위, 중위 및 상위 페이지들이 있을 것이다. 메모리의 임계값 윈도우에 여러 전압 대역들을 구분짓는 기준 임계값들의 설계된 배치에 따라, 데이터 페이지들 중 하나는 다른 것보다 약간 더 높은 오류율을 가질 수도 있다. 예를 들면, 상위 데이터 페이지가 3개의 데이터 페이지들 중 추정된 가장 큰 데이터율을 갖는다면, 이것이 선택될 것이다. 선택된 데이터 페이지에서 모든 ECC 페이지들이 동일한 오류율을 갖는 것으로 추정된다면, 제어기로 이전될 첫 번째인 위치를 가진 ECC 페이지를 선택하는 것만으로 충분하다. 또한, 코딩 수법의 선택은 오류율에 영향을 미칠 수 있다. 예를 들면, 그레이(Grey) 코드는 프로그램된 임계값이 이동될 때 최소 비트 오류를 제공한다. 코딩의 선택에 따라, 동일 그룹의 메모리 셀들에 저장되는 여러 데이터 페이지들은 비슷한 혹은 서로 다른 오류율을 가질 수 있다.
실제로, 워드라인 상에 오류는 개방 회로 혹은 대단이 큰 저항을 가진 회로를 야기하는 크랙과 같은 물리적 결함에 기인할 수도 있을 것이다. 결함이 관련 셀과 WL 디코더 간에 발생한다면, 체크는 오류를 보일 것이다. 결함이 WL 디코더에서 멀리 있는 셀의 다른 측 상에서 발생한다면, 체크는 오류를 보이지 않을 수도 있다. 이에 따라, WL(42)을 따른 모든 ECC 페이지들 중에서, WL 디코더(40)에서 가장 먼 WL의 끝에 샘플 ECC 페이지(82)는 WL 상에 결함 위치에 상관없는 결함에 의해 영향을 받을 가능성이 있다.
이에 따라, 워드라인(WL)에 기입되는 복수의 데이터 페이지들이 있는 바람직한 실시예에서, WL에 기입되는 데이터를 체크하기 위해 사용되는 샘플은 먼저 가장 큰 추정된 오류율을 가진 데이터 페이지로부터 선택된다. 또한, 선택된 데이터 페이지에 복수의 ECC 페이지가 있다면, 워드라인 디코더에서 가장 멀리 위치된 ECC 페이지가 샘플용으로 선택된다.
또 다른 실시예에서, 체크될 샘플은 블록 내 일 그룹의 셀들에 기입되는 모든 ECC 페이지들의 부분이다. 블록은 이 내에 함께 소거될 수 있는 모든 셀들을 갖는다. 특히, 서브세트는 가장 큰 오류율을 갖는 것으로 추정된 모든 ECC 페이지들 중에 하나이다.
예를 들면, 도 4에 도시된 NAND 메모리에서, 소거 블록은 한 행의 NAND 체인들로부터 구성된다. 각 NAND 체인은 소스들 및 드레인들에 의해 데이터 체인식으로 연결되고 일단은 소스 단자에서 그리고 타단은 드레인 단자에서 종단을 이룬 16 메모리 셀들이다. 소스 단자 및 드레인 단자에 가장 가까이 있는 셀들은 더 오류가 나기 쉬운 것으로 알려져 있다. 이에 따라, 이러한 블록에 대해서, 워드라인들(WL1 또는 WL16)이 선택될 것이다. 이 경우, 바람직하게, 샘플은 워드라인 디코더에서 가장 멀리 있는 WL1의 끝에 있는 ECC 페이지이다.
한 세트의 워드라인들을 갖는 한 블록의 메모리 셀이 소거 단위로서 소거될 수 있고 이 세트의 각 워드라인에 기입되는 데이터가 체크되어야 하거나 아니면 전체 블록이 재기입되어야 하는 요건이 있는 또 다른 실시예에서, 가장 큰 오류율을 갖는 것으로 추정된 세트의 WL이 우선적으로 먼저 체크된다. 이렇게 하여, 발생할 수 있을 임의의 오류가 조기에 검출될 것이며 블록의 재기입은 지연없이 시작될 수 있다.
이에 따라, 도 4에 도시된 NAND 메모리에 있어서, 워드라인들(WL1 및 WL16)이 체크를 위해 먼저 선택되어야 한다.
각각이 1-비트 데이터를 저장하는 메모리 셀들을 갖는 제 1 부분 및 각각이 3-비트 데이터를 저장하는 메모리 셀들을 갖는 제 2 부분으로 분할되는 메모리에 대해 예가 주어졌을지라도, 발명은 예에 의해 한정되지 않는다.
동시적 복수-페이지 검증을 사용한
EPWR
위에 논의된 바와 같이, 메모리 시스템은 사용자 데이터 무결성을 보증하기 위해서, 그리고 끊어진 워드라인들, 제어 게이트 단락 회로들, 워드라인간에 단락들, 등과 같은 가려낼 수 없는 메모리 고장이 있는 가운데 메모리 신뢰도를 증가시키기 위해서, 향상된 기입후 판독(EPWR) 프로세스를 사용할 수 있다. 일반적으로 말하여, EPWR은 각 블록을 판독하고 이것이 카피의 소스를 소거하기에 앞서 신뢰성있게 저장된 것임을 검증함으로써 달성된다. 예시적 실시예들에서, 이것은 2진 메모리로부터 소스 카피를 소거하기 전에 복수-상태 기입을 검증하는 것이 될 것이다. 이러한 EPWR 방법들은 많은 시간을 요구하고 따라서 프로그래밍 스루풋을 현저하게 저하시킬 수 있기 때문에, 특히 복수-다이 제품에서, 단일 제어기가 복수의 다이들에 대해 EPWR을 수행하는 것에 연루되는 경우, 병목이 된다. 이 단락은 EPWR을 수행하는 더 빠른 방법들을 위해 복수-페이지들이 동시에 검증되는 기술들을 제시한다.
구체적인 예를 들어 셀당 3-비트 MLC(또는 D3) 실시예를 사용하여, 기본적인 기입후 판독 구현에 대한 문제를 더욱 재고찰하면, 제어기는 D3 블록의 프로그래밍 후에 그 전체를 판독하고, 모든 페이지들을 제어기에 전송하고 이들을 디코딩한다. 이것은 매우 큰 프로그래밍 스루풋 페널티를 초래한다. 예를 들면, 70MB/sec ECC 엔진을 가정하면, 4MB 블록에 대한 EPWR 시간은 단일의 다이에 대해서(ECC가 병목이라고 하면) 블록당 ~60ms가 걸릴 수 있다. 다이들의 수가 증가함에 따라, 복수의 다이들의 복수의 블록들로부터 기원하는 모든 데이터가 단일의 제어기에 전송되고 단일의 ECC 엔진에 의해 디코딩될 필요가 있기 때문에, 대응하여 페널티는 더 커지게 된다. 따라서 4 다이들에 있어서, EPWR 프로세스는 ~240ms가 걸릴 수 있고, 이것은 프로그래밍 스루풋을 현저하게 저하시킬 것이다. 각 블록 프로그래밍 동작 후에 이러한 종류의 매우 긴 EPWR 동작은 전체 프로그래밍 스루풋을 현저하게 느려지게 할 수 있다(예를 들면, 6MB/sec의 원초적인 프로그래밍 스루풋을 가정하면, 4 다이 구성에서 ~25% 저하).
앞에 단락들은 더 빠른 EPWR를 위한 다양한 방법들을 제시하였다. 이 단락은 한 블록 내 복수의 페이지들의 동시적 검증을 고찰하며, 여기에서 제어기는 각 페이지를 개별적으로 평가하는 대신, 복수의 페이지들의 조합된 기능을 평가한다. 판독된 데이터에 기초하여 복수의 페이지들의 이러한 조합된 검증은 제어기 연루를 현저하게 감소시켜, EPWR를 위한 요구되는 버스 및 ECC 대역폭을 낮추고 따라서 다이들의 수가 클 때 효율적인 EPWR이 될 수 있게 한다. 이 특별한 측면을 더욱 고찰하기 전에, 빠른 EPWR을 위한 몇가지 보완적 수법들이 일부 실시예들에서 조합될 것이기 때문에, 이들이 논의된다.
EPWR 프로세스 속도를 높는 한 방법은 판독되고 평가되는 데이터량을, 끊어진 워드라인들, 제어 게이트 단락 회로들, 워드라인간 단락들, 등등과 같은 가려낼 수 없는 문제들을 확인하기 위해 요구되는 최소, 또는 적어도 더 적은 량까지 감소시키는 것이다. (끊어진, 혹은 리디 워드라인들에 관한 더 많은 정보는 다음 미국특허 출원들에 주어져 있다: 2010년 7월 9일에 출원된 12/833,167; 2010년 7월 9일에 출원된 12/833,146; 2011년 1월 28일에 출원된 13/016,732; 및 2011년 5월 5일에 출원된 13/101,765).
판독 및 전송되는 데이터량은 어떤 페이지들만을 판독함으로써 감소될 수 있다. 예를 들면, 셀당 3-비트의 D3 NAND 실시예에서, 도 30에 도시된 바와 같은 매핑을 사용하여, 각 워드라인에서 하위 및 상위 페이지들만을, 혹은 워드라인들의 중위(Middle) 페이지만을 판독하는 것으로 충분할 수 있다. 이유는 위에 언급된 일종의 가려낼 수 없는 NAND 문제들이 하나 또는 두 페이지들을 관찰함으로써 확인될 수 있고, 따라서 워드라인의 모든 3 페이지들을 판독할 필요성이 없다는 것이다. 예를 들면, 하위 및 상위 페이지들을 판독하는 것은 프로그램 교란 문제들(소거된 상태와 가장 낮은 비-소거된 상태 간에 판독함에 기인하여), 소스 유기 누설 전압 문제들(또는 SILC, 이것은 가장 높은 상태들로부터 하측 꼬리(tail)를 초래한다), 혹은 셀 전압 분포들을 교란할 그외 어떤 다른 중대한 NAND 문제를 확인하는데 충분하다. 이것은 분포들 및 맨 밑에 걸쳐 표기한 소거(Er), A,..., G 상태로 보여진 상위, 중위 및 하위 페이지 값들과 함께 상태 분포들을 도시한 도 30을 참조함으로써 예시될 수 있다. Er 상태와 A 상태 사이에 하위 페이지 판독 임계치가 있기 때문에, 이것은 이 판독에서 나타날 프로그램 교란 문제들에 대해 체크하기 위해 사용될 수 있고; F 상태와 G 상태 사이에 상위 페이지 판독 임계치가 있기 때문에, 이 판독은 SILC에 관계된 오류를 나타내는 G 상태로부터 하측 꼬리를 포착할 수도 있을 것이다. 이하 논의되는 바와 같이, 이 단락의 예시적 실시예는 복수-페이지 검증을 수행하고 있는 워드라인 상에 최상위 및 최하위 페이지들만을 사용할 것이다.
또한, 판독 및 전송되는 데이터량은 페이지의 부분만의 유효성을 체크함으로써 감소될 수 있다. 이것의 예들은 비트라인들이 짝수 및 홀수 세트들로 분할되는, 혹은 아니면 컬럼들이 어레이에 걸쳐 그룹들로 분할될 수 있어 비트라인들의 부분만의 판독이 전체적으로 워드라인의 상황을 잘 나타낼 수 있는 메모리들이다. 이하 일부 실시예들에서 사용될 또 다른 예는 ECC와 함께 엔코딩되는 한 유닛의 데이터인 ECC 블록(또는 "Eblock")의 판독이다. 이러한 Eblock은 흔히 페이지의 부분일 뿐이지만, 그러나 워드라인의 임의의 부분 내 문제를 확인하기 위해 충분할 수 있다.
판독된 데이터에 기초하여 블록(또는 워드라인) 내 문제를 확인하기 위한 몇가지 방법들이 사용될 수 있다. 한 방법은 단지 데이터를 디코딩하고 오류들의 수를 카운트하는 것이며, 비교적 긴 시간이 걸리는 수법은 비교적 높은 파워 소비를 가지며 또한 완료하기 위한 가변 시간량이 걸릴 수 있다(특히 반복적 디코딩을 사용하여 ECC 시스템을 사용할 때, 그러나 BCH 시스템에서도).
또 다른 수법은 신드롬 가중치(즉 불만족 패리티 체크들의 수에 기초하는)에 기초하여 비트 오류율(BER)을 추정하는 것이다. 이 선택은 저밀도 패리티-체크 매트릭스를 갖는 ECC에 대해 적용할 수 있다. ECC 블록(Eblock)의 BER은 다음처럼 추정될 수 있다:
W는 불만족 패리티-체크들의 수이며, M은 패리티-체크들의 총 수이며, d는 각 패리티-체크(이것이 고정되었다고 가정하면)에 연루된 비트들의 수이다. 실제로, 이러한 계산들은 오프라인에서 행해질 수 있고 불만족 패리티-체크들의 수 W를 추정된 BER로 바꾸기 위해 룩업 테이블(LUT)이 사용된다. 완전 디코딩에 비해 이것의 잇점은 이것이 빠르고 확정적 시간 내에 완료한다는 것이다. 이것은 또한 작은 파워 소비를 갖는다.
또 다른 수법은, 예를 들면, 각 상태(혹은 선택된 상태들에서)에 셀들의 수를 카운트하고 이것을 예상값에 비교함으로써, 판독된 데이터의 통계를 측정하고 이것을 예상된 값에 비교하는 것이다. 시스템이 데이터 스크램블링을 사용한다고 가정하면, 셀당 3-비트 실시예에서 셀들의 1/8이 각 상태에 프로그램될 것으로 예상된다. 이 수법이 지금 논의된 두 방법들(BER을 측정/추정하는)보다 덜 확실할 수 있을지라도, 같은 량의 데이터를 취하는 것이, 셀 전압 분포(CVD)에 현저히 영향을 미칠 중대한 메모리 문제들을 여전히 잡아낼 수 있다.
다음 단락에서 전개되는 수법에서, BER은 소스 SLC 페이지와 목적지 MLC 페이지를 비교함으로써 측정된다. 이것은 플래시 내에서 내부적으로 행해질 수 있다.
앞에 단락들에서 언급된 다른 것들 뿐만 아니라 이들 여러 수법들은 이 단락의 주된 주안점인 블록 내 복수의 페이지들의 일종의 동시적 검증과 다양하게 조합될 수 있다. 판독된 데이터에 기초하여 복수의 페이지들의 조합된 검증은 제어기 연루(즉 EPWR을 위한 요구되는 버스 및 ECC 대역폭)를 현저하게 감소시키고 따라서 다이들의 수가 클 때 효율적인 EPWR이 되게 할 수 있다.
메모리 시스템은 페이지들 중 하나 이상 내에 문제를 확인하기 위해 복수의 페이지들의 조합된 기능을 평가한다. 이에 대한 동기는 훨씬 더 적은 량의 데이터가 검사될 필요가 있고 이것은 제어기 버스 및 이러한 평가에 연루된 ECC 엔진으로부터 대역폭 요건을 현저히 감소시킬 수 있다는 것이다. 이에 따라 이것은 상당 수의 다이들에 효율적인 동작이 될 수 있게 한다.
한 수법은 복수의 판독된 Eblock들의 합 모듈로(sum modulo) 2(즉 XOR)을 사용하는 것이다. 선형 ECC(LDPC, BCH 및 실제로 사용되는 대부분의 ECC 방법들이 그러하듯이)에 있어서, Eblock들의 XOR은 또한 유효한 Eblock이다. 따라서, 시스템이 n개의 판독된 Eblock들을 XOR한다면, 결과는 다음에 의해 주어지는 BER을 가진 Eblock이다.
이에 따라, 시스템이 XOR Eblock의 BER을 평가한다면(이를테면 위에 언급된 방법들에 의해), 시스템은 이의 구성하는 Eblock들에 대한 BER들의 합을 평가한다. 이로부터, 시스템은 Eblock들 중 하나 내에 문제를 확인할 수 있다. 예를 들면, 각 페이지로부터 한 Eblock인, n = 16 Eblock들을 XOR하는 것을 고찰한다. (페이지는 하나 또는 복수의 Eblock들을 가질 수도 있다). 또한, 프로그램한 후에 예상되는 BER이 0.1%이고 표준편차 σ=0.01%이라고 가정한다. 이때, 의 예상되는 값은 0.1% = 1.6%이고 표준편차 =0.04%이고; 따라서 가 1.6% + 3ㆍ=1.72%이라면, 이것은 페이지들 중 하나 내에서 문제가 존재할 수도 있다는 표시로서 사용될 것이다(정규 행동에서 임계치를 지날 확률이 ~1/1000임을 확실히 하기 위해서 3ㆍ 마진이 취해진다). 이 경우에, 페이지들 각각의 특정한 평가 또는 블록의 재-프로그래밍과 같은 다른 조치들이 취해질 수 있다. 정밀 조사 후에, 블록을 배드(bad)로서 혹은 앞에 단락들에 기술된 일부 다른 조치들로서 표시하는 것이 판단될 수도 있다.
프로그램한 후에 BER 통계(즉 예상되는 BER 및 이의 분산(variance))을 모르는 경우에, 추정을 사용할 때, 있을 수 있는 우려는 단일의 문제가 있는 페이지가 존재할 것이라는 것이며, 반면에 다른 페이지들은 매우 낮은 BER을 가져, 문제를 표시하기 위해 설정된 임계치를 지나지 않아 문제를 "잡아내지" 않게 될 것이라는 것이다. 예를 들면 추정된 = 1.6%에 대해서, 각각이 BER이 0.1%인 n = 16 페이지들이 있었는지; 혹은 BER이 0.01%인 15 페이지들과 BER이 1.45%인 한 페이지가 있다는 것(두 경우들에 있어서 BER들의 합은 1.6%이다)을 모를 것이다. 이 문제를 극복하기 위해서, 시스템은 페이지들 간에 분산이 작음을 확실히 해야 한다. 이것은 몇몇 그룹들의 파라미터들을 추적함으로써 행해질 수 있다. 예를 들면, 현재 그룹의 파라미터가 15ㆍ0.01% + 1.45% = 1.6%이지만 이전 그룹의 파라미터가 16ㆍ0.01% = 0.16%이었다면, 이것은 현재 그룹이 문제있는 페이지를 갖는다는 것을 나타낼 것이다.
시스템이 복합 함수 에 대해 함께 XOR하는 Eblock들의 수 n에 관하여, 몇개의 요인들이 나타난다. 한 제한은 n이 커짐에 따라 n Eblock들의 BER들에 대해 "평균하는" 효과는 더 유의해지고 이것은 앞에 단락에서 기술되는 해결책이 이 위험을 현저하게 감소시키기 위해 사용될 수 있을지라도, 문제있는 Eblock을 잡아내는 것을 놓칠 확률을 증가시킨다. 또 따른 제한은 을 평가하기 위해 사용되는 방법에 따른다. 시스템이 디코딩을 사용하여 을 추정하고 있다면, ECC의 오류 정정 능력에 근거하여 를 제한시킬 필요가 있는데, 예를 들면 시스템이 60 비트를 정정할 수 있는 BCH ECC를 사용한다면, 그리고 프로그램한 후에 예상되는 비트 오류들의 최대 수가 10비트이라면, 시스템은 n을 6으로 제한시켜야 한다. 시스템이 신드롬 가중치에 근거하여 BER 추정을 사용한다면, 이 추정은 어떤 오류율까지는 유효한데, 예를 들면, 어떤 LDPC 코드는 ~3%의 BER까지 양호한 BER 추정을 제공할 수 있고 이 오류율 이상에서, 추정 오류는 너무 커지게 될 수 있다. 이 경우에 프로그램한 후에 예상되는 최대 BER이 0.3%이라면, 함께 검증될 수 있는 페이지들 n의 최대 수는 10으로 제한되어야 한다.
마지막으로, 한편으로, 시스템이 을 평가하기 위해서 SLC 페이지들의 XOR과 D3 페이지들의 XOR 간에 비교를 사용한다면, 평가될 수 있는 최대 에 의해 제한되지 않는다. (이 수법은 다음 단락에서 논의된다). 다른 한편으로, 시스템은 SLC 페이지 및 MLC 페이지 둘 다의 오류들을 축적하여, 문제있는 페이지를 잘못 잡아낼 위험을 증가시킨다. 또한, 이 방법은 3 소스 SLC 블록들 및 목적지 D3 블록 모두를 판독하는 것을 요구하는데, 이것은 판독하는 시간에 있어 따라서 전체 EPWR 시간에 있어 단점이 된다.
이 단락의 수법에서, Eblock들을 XOR하는 것은 내부적으로 메모리 래치들 내에서 수행되고 따라서 훨씬 더 적은량의 데이터가 제어기에 보내져 ECC 코어에 의해 평가되기 때문에, 제어기 연루는 현저하게 감소될 수 있다. 이것은 EPWR의 판독 부분이 모든 다이들에서 동시에 행해지고 기본적으로 한 블록을 판독하는데 걸리는 시간에 의해 좌우되기 때문에, 단일의 다이 또는 2개의 다이들 또는 4개의 다이들 또는 그 이상에 대한 EPWR 시간이 기본적으로 동일함을 의미한다. 예를 들면, 각 워드라인 내 하위 및 상위 페이지들을 판독하고, n=16 페이지들을 XOR하고 이어서 XOR된 페이지 내 제 1 Eblock을 제어기 BER 추정(예를 들면, 신드롬 가중치에 기초하여)에 보냄으로써 EPWR을 수행하고자 하는 것으로 가정한다. 그러면, EPWR 프로세스는 다음과 같이 행해질 것인데, 여기에서 ADL는 (2진) 래치로서 이에 데이터가 초기에는 워드라인(WLi)으로부터 판독되며, XDL은 전송 데이터 래치로서 이로부터 데이터가 메모리 WL로부터 전송되며, NXOR은 NOT XOR에 대한 약칭이다:
WLO의 하위 페이지를 ADL 내로 판독(ADL = LowerO)
WLO의 상위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR UpperO)
WL1의 하위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR Lower1)
WL1의 상위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR Upper1)
WL7의 하위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR Lower7)
WL7의 상위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR Upper7)
ADL를 XDL에 전송(XDL = ADL)
XDL의 제 1 Eblock을 제어기에 전송
전송된 Eblock의 BER 추정을 수행
WL8의 하위 페이지를 ADL 내로 판독(ADL = Lower8)(2개의 이전의 스테이지들과 병렬로 행해질 수 있다)
WL8의 상위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR UpperO)
WL9의 하위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR Lower1)
WL9의 상위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR Upper1)
...
WL15의 하위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR Lower7)
WL15의 상위 페이지를 판독하고 이를 ADL과 NXOR(ADL = ADL NXOR Upper7)
ADL를 XDL에 전송(XDL = ADL)
XDL의 제 1 Eblock을 제어기에 전송
전송된 Eblock의 BER 추정을 수행
여기에서 적합하게 적용될 수 있는 래치 구조(ADL, XDL을 포함하는)에 대한 예시적 실시예에 관한 더 상세한 것은 예를 들면 미국특허 7,158,421 및 7,206,230에서 발견될 수 있다.
위에 기술된 EPWR 프로세스는 종래기술에서의 방법들보다 현저하게 빠르다. 제어기에의 전송 및 BER 추정 동작(매 n 페이지 판독 동작들마다 단지 1회 행해진다)이 다음 페이지 그룹의 판독과 병렬로 행해지는 파이프라인 동작을 가정하면, 블록에 대한 전체 EPWR 시간은 판독 시간과 같고, 이것은 몇 밀리초 정도이다. 또한, EPWR 시간은 상위 및 하위 페이지들의 판독 및 XOR하는 것이 모든 다이들에서 병렬로 행해질 수 있고 전송 및 BER 추정 동작들(매 n 페이지 판독들마다 1회 행해진다)이 제어기 및 버스로부터의 낮은 대역폭을 요구하기 때문에, 한 다이, 2개의 다이들 및 4개의 다이들에 대해 동일한 채로 있게 될 것이다.
일부 경우들에 있어서는 프로세스를 더 가속화하는 방법이 있을 수 있다. 지금 논의된 실시예는 하위 및 상위 페이지들의 XOR를 사용한다. 도 30을 참조하면, 8 분포들에 데이터의 3-비트에 대한 상태들의 할당은 특정한 그레이 매핑(Grey mapping)("2-3-2" 매핑)에 대응한다. 이 매핑을 사용하고 페이지씩의 판독을 수행할 때, 하위 페이지는 상태 Er과 상태 A 간에 제 1 감지를 수행하고 이어 상태 D와 상태 E 간에 제 2 감지를 수행함으로써 판독될 수 있다. 상위 페이지는 상태 B와 상태 C 간에 제 1 감지를 수행하고, 이어 상태 F와 상태 G 간에 제 2 감지를 수행함으로써 판독될 수 있다. 복수의 감지 동작들이 2 상태들 간에 초기 감지로 시작하고 증가하는 전압들에서 일련의 감지로 계속하는 것은 플래시 메모리 시스템들에선 공통이다. 이러한 설정에서 초기 감지 동작은 다음 감지 동작들 각각보다 더 많은 시간이 걸린다. 이것은 도 30에 도시된 매핑에 따라 하위 및 상위 페이지들을 판독하는 것은 전체 4 감지 동작들을 요구할 것이고 이들 중에서 2 감지 동작들(각 페이지 내에서 제 1 감지)이 더 길 것임을 의미한다. 그러나, EPWR 프로세스는 2 페이지들의 XOR만을 사용하기 때문에, 2 페이지들의 판독 시간을 감소시키는 것이 가능하다. 이것은 다음 일련의 감지 동작들을 수행함으로써 행해질 수 있다: Er와 A 간에, 이에 이어 B와 C 간에 감지, 이에 이어 D와 E 간에 감지, 이에 이어 F와 G 간에 감지. 이들 4 감지 동작들은 대안적 "1-2-4" 그레이 매핑들에 따라 상위 페이지의 판독을 적용함으로써 두 페이지들을 개별적으로 판독하는 것보다 더 빠르게 행해질 수 있는데, 여기에서 1-2-4 그레이 매핑의 상위 페이지는 2-3-2 그레이 매핑의 하위 및 상위 페이지들의 정확히 XOR이다. 결국, 1-2-4 그레이 매핑에서 상위 페이지에 대한 판독 지령은 2-3-2 그레이 매핑 -이를 사용하여 데이터가 단일의 지령으로 기입되었다- 의 하위 및 상위 페이지들의 요망되는 XOR를 생성하기 위해 사용될 수 있다. 이것이 가능하다면, 워드라인 당 판독 시간 및 전체 EPWR 판독 시간이 감소될 것이다. 또한, 각 워드라인에서 특정(또는, 더 일반적으로, 어떤 한) 중위 페이지만을 판독하는 것이 충분하다면, EPWR 시간은 더욱 감소될 것이다(-33%만큼).
도 31은 프로그래밍 프로세스에 통합될 수 있는 프로세스의 측면들을 도시한 흐름도이다. 1001에서, 메모리 시스템의 제어기는 호스트로부터 데이터를 수신한다. 제어기는 자신의 ECC 엔진을 사용하여 데이터의 각 Eblock에 대한 대응하는 ECC를 발생하고, 1003에서 이들을 페이지들에 형성하고, 이어 1005에서 버스 구조를 거쳐 메모리 장치에 전송한다. 특정한 한 세트의 데이터가 이어지게 될 한 세트의 서로 구별되는 프로세스들로서 도시되었을지라도, 그러나 실제 장치에서 단계들은, 앞에 단락에서 언급된 바와 같이 혹은 2011년 6월 9일에 출원된 미국가특허 출원번호 61/495,053에 더욱 기술된 바와 같이, 전형적으로 병렬로 진행될 것이다. 일단 데이터가 메모리 상에 래치되면, 1007에서 어레이에 기입된다. 예시적 기입 프로세스에서, 데이터는 먼저 2진 캐시에 기입되고, 이후에 복수상태 메모리 내에 폴딩된다. 흐름의 다음 부분들은 이 폴딩 프로세스 후에 일어나는 것으로서 기술되는데, 그러나 다른 경우들에 있어서 이들은 2진 메모리 내에 데이터에 대해, 혹은 복수상태 포맷으로 직접 기입된 데이터에 대해, 혹은 2진 메모리에 대해 실행될 수도 있을 것이다.
EPWR 부분은 1009에서 메모리 상에 저장된 페이지들, 혹은 페이지들의 부분들(예를 들면, Eblock)을 다시 판독하고 복합 데이터 구조를 형성함으로써(1011) 시작한다. 여기에서는 2개의 순차적인 동작들로서 도시되었을지라도, 위에 논의된 바와 같이, 예시적 실시예에서, 이것은 실제로는 선택된 페이지들이 순차적으로 판독되고 메모리 장치 상에 래치들에서 XOR되기 때문에 루프로 수행된다. 예시적 실시예에서, 이어서 복합 데이터 구조는 1013에서 제어기에 전송되고, 복합 데이터 구조가 형성되었던 데이터의 무결성에 대해 1015에서 평가된다. 다른 실시예들에서, 판정은 메모리 장치 자체에서 수행될 수도 있을 것이다.
1015의 판정은, 데이터에 대한 통계에 기초하여 ECC를 사용하거나 ECC 없이, 오류량을 판정함에 의해서든 아니면 오류량을 추정함에 의해서든, 여기에 기술된 여러 실시예들 중 어느 것에 따라 행해질 수 있다. 데이터가 열화된다면, 시스템은 요망된다면 1017에서 특정한 배드 페이지들을 판정할 수 있고, 위에 기술된 일종의 정정 조치들 중 어느 것을 취할 수도 있다.
이 프로세스는 이제 특정 실시예의 맥락에서 더욱 고찰될 것이다. 이 실시예는 각 워드라인 상에 최상위 및 최하위 페이지들만을 판독; 페이지당 제 1 Eblock만을 검사; n 페이지들로부터 기원하는, n Eblock들의 축적된 BER을 평가하기 위해 BER 추정 특징을 사용; 오류율에 있어 변동을 처리하기 위해 그룹들의 페이지들을 복합 확산 블록으로 형성; 적합한 기준의 선택을 포함한, 다수의 특징들을 갖는다. 이들 특징들은 이를테면 서로 다른 페이지들, Eblock들, 그룹들, 기준들, 등을 사용하는 것과 같이, 서로 다른 실시예들에서 상이할 것임이 이해될 것이다.
이들 특징들 중 제 1 특징에 관하여, 시스템은 각 워드라인 내 상위 및 하위 페이지만을 판독한다. (여기에서 실시예는 다시 셀당 3-비트를 가지지만, 그러나 더 일반적으로, 4-비트 배열에서와 같이, 최상위 및 최하위가 사용될 수 있다). 위에 논의된 바와 같이, 하위 및 상위 페이지들은 셀 전압 분포들을 불명료해지게 할 많은 문제들(프로그램 교란, SILC, 등등)을 확인하기에 충분하다. 이것은 대부분이 도 30과 동일하지만 현재는 맨 밑에 걸쳐 현재 맨 위에 페이지 및 맨 아래 페이지가 XOR된 도 32에 도시되었다.
예시적 시스템에서, WL의 하위 및 상위 페이지들의 개별적 판독이 수행될 수 있다. 대안적으로, 시스템은 변형예에서 실제로는 하위 및 상위 페이지들(그리고 개별적으로 각 페이지가 아닌)의 XOR만을 필요로 하기 때문에, 판독 시간은 단일의 판독 지령을 사용하여 더 짧은 시간 내에 하위상위 페이지를 생성하기 위해서, 4번의 감지 동작들(Er&A, B&C, D&E, F&G)을 가진 순차형 판독을 사용함으로써 더욱 감소될 수 있다. 이러한 판독은 위에 언급된 바와 같이, 1-2-4 그레이 매핑에서 상위 페이지의 페이지씩 판독을 사용함으로써 행해질 수 있다.
위에 논의된 바와 같이, 메모리 래치들과 어레이 간에 양호한 인터리빙이 있다면, 전체 워드라인에 걸쳐 확산된 셀들로부터 Eblock의 셀이 기원하기 때문에 페이지당 한 Eblock(여기에서는 제 1)만을 사용하는 것은 사용된다. 메모리 장치에 대한 예시적 실시예에서, 래치 구조(위에서 ADL 및 XDL 래치들)는 Eblock이 래치 구조의 연속된 세그먼트에 저장되도록 배열된다.
이 특정한 실시예는 페이지들 각각에서 제 1 Eblock인, n 페이지들로부터 기원하는, n Eblock들의 축적된 BER을 평가하기 위해 비트 오류율(BER) 추정(예를 들면 신드롬 가중치에 기초하거나 디코딩에 기초하여)을 사용한다. 모든 판독 페이지들은 메모리 회로 내에서 내부적으로 XOR될 수 있고, XOR된 페이지 내 제 1 Eblock은 제어기에 전송되고 이의 BER을 추정하기 위해 ECC 엔진이 사용된다.
서로 다른 페이지 그룹들 간에 오류율 균일성을 갖게 하기 위해서, 블록을 따른 워드라인들의 오류율에 있어 있을 수 있는 변동에 기인하여, 각 그룹은 블록을 따라 동등하게 확산되는 n 페이지들로 구성될 것이 바람직하다. 이것은 이러한 그룹이 존재한다면, 문제있는 그룹은 확산에 기인하여 거의 동일한 축적된 BER을 가질 것으로 예상되는 모든 다른 그룹들에 비해 현저하게 다른 축적된 BER을 가지게 될 것이기 때문에, 문제있는 그룹의 검출을 개선한다.
예를 들면 각 셀이 3 비트를 저장하는 X3 플래시 메모리 시스템에서 256 논리 페이지들을 포함하는 블록을 고찰한다. 이 경우에, 제 1 하위 페이지는 페이지 0일 것이며, 제 1 상위 페이지는 페이지 2일 것이며, 두 페이지들은 동일 워드라인(예를 들면 WLO)에 저장될 것이다. 제 2 하위 페이지는 페이지 3일 것이며 제 2 상위 페이지는 페이지 5일 것이며 둘 다는 WL1에 저장될 것이며, 등등이 될 것이다. 모든 워드라인들을 따라 확산되는 페이지 그룹들을 발생시키기 위해서, 복수의 하측 및 상위 페이지들은 페이지 그룹들에 인터리빙될 수 있다. 예를 들면 각 페이지 그룹이 9 논리 페이지들로 구성될 것이라면, 19 그룹들이 요구될 것이며 인터리빙은 다음과 같이 선택될 수 있다:
페이지 그룹 0: 0 29 57 86 114 143 171 200 228
페이지 그룹 1 : 2 30 59 87 116 144 173 201 230
페이지 그룹 2: 3 32 60 89 117 146 174 203 231
페이지 그룹 3 : 5 33 62 90 119 147 176 204 233
페이지 그룹 4: 6 35 63 92 120 149 177 206 234
페이지 그룹 5 : 8 36 65 93 122 150 179 207 236
페이지 그룹 6: 9 38 66 95 123 152 180 209 237
페이지 그룹 7: 11 39 68 96 125 153 182 210 239
페이지 그룹 8: 12 41 69 98 126 155 183 212 240
페이지 그룹 9: 14 42 71 99 128 156 185 213 242
페이지 그룹 10: 15 44 72 101 129 158 186 215 243
페이지 그룹 11 : 17 45 74 102 131 159 188 216 245
페이지 그룹 12: 18 47 75 104 132 161 189 218 246
페이지 그룹 13: 20 48 77 105 134 162 191 219 248
페이지 그룹 14: 21 50 78 107 135 164 192 221 249
페이지 그룹 15: 23 51 80 108 137 165 194 222 251
페이지 그룹 16: 24 53 81 110 138 167 195 224 252
페이지 그룹 17: 26 54 83 111 140 168 197 225 254
페이지 그룹 18: 27 56 84 113 141 170 198 227 255
페이지 그룹들을 발생하기 위한 체계적 방법은 표 1의 EPWR 절차 "유의 코드"에서 제공된다.
의심되는 블록에 대한 기준으로서, 일예는 프로그램한 직후에 BER>0.2%을 가진 하나 이상의 페이지들을 갖는 블록을 고찰하는 것이다. 따라서, 페이지당 BER 임계치는 BERTH = 0.2%로서 정의될 수 있다. 블록의 EPWR 절차는 19 BER 추정들을 발생할 것이다: w0, w1,..., w18(각 페이지 그룹에 대해 한 신드롬 가중치 수). 및 이라 놓는다. 의심되는 블록은 다음과 같다면 BERmax, BERmin에 기초하여 검출될 것이다.
위에 조건이 만족되는 경우에, wmax에 대응하는 페이지 그룹의 면밀한 검사는 그룹의 9 페이지들 각각 내에 제 1 Eblock을 판독하고 이에 BER 추정을 수행하여 추정 w을 생성함으로써 행해진다. 그룹 내 페이지들 중 하나 이상에 대해 w>BERTH이라면, 블록은 의심되는 것으로서 표시된다. 최악의 그룹의 이러한 검사는 블록에 대해 EPWR 시간의 10% 미만이 걸릴 것이다. 따라서, "오경보"의 페널티는 비교적 작다.
의심되는 블록이 검출되었을 때, 동작들의 여러 가지는 앞에 단락들에서 논의된 것들과 유사하다. 예를 들면, 블록의 데이터는 다른 블록(데이터가 위험에 있기 때문에)에 재프로그램될 수 있다. 또한, 블록이 이전에 의심되는 것으로서 표시되었다면(즉 이것이 문제가 블록에서 검출되는 두 번째인), 블록은 배드로서 표시될 수 있다.
이 예에서, 의심되는 블록에 대한 조건은 더 많은 수의 오경보들을 댓가로, 최악의 페이지 그룹(BERmax에 대응하는)의 면밀한 검사에 의해 골라내어질 오-검출들을 피하기 위해 보수적이도록 선택되었다. 오경보에 대한 페널티는 비교적 작은 것에 유의한다. 오경보의 경우에, 최악의 그룹 내 9 페이지들은 판독되어 이들의 제 1 Eblock에 기초하여 추정된 이들의 BER을 가질 필요가 있다. 이것은 블록에 대한 EPWR의 10% 미만이 걸린다.
의심되는 블록 조건 이면에 이유는 다음과 같다: 오-검출에 대한 가장 위험한 경우는 모든 다른 n-1 페이지들은 매우 양호한 반면 최악의 그룹이 한 "배드" 페이지를 포함하는 것이다. 이것을 잡아내기 위해서, 이 최악의 그룹 내 매우 양호한 페이지들은 최상의 그룹의 평균 BER과 동일한, 즉 양호한 페이지 = 의 BER과 동일한 BER를 갖는다고 가정한다. 그러면, 최상의 그룹 내 "배드" 페이지 n의 BER는 다음에 의해 주어진다:
오경보율이 높은 경우에, 위에 조건은 약간 변경될 수 있다. 약간 덜 보수적인 대안적 조건은 일 수 있고, 여기에서 BERavg은 최상의 k 그룹들의 BER 추정들의 평균이며, k는 최적화될 수 있다. 이런 식으로, 양호한 페이지의 대표적 BER은 양호한 페이지들만을 갖는 것으로 예상되는 그룹들의 평균 BER로서 결정된다. 이웃 페이지들이 서로 다른 페이지 그룹들 중에 확산됨에 기인하여, 배드 페이지를 가진 기껏해야 4 페이지 그룹들이 있을 것으로 예상된다. 끊어진 워드라인은 2개의 서로 다른 페이지 그룹들 내에 있게 될 2 배드 페이지들(하위 및 상위)에 기여할 것이다. 워드라인간 단락은 4개의 서로 다른 페이지 그룹들 내에 있게 될 4 배드 페이지들(이웃한 워드라인들로부터 2개의 하위 및 2개의 상위 페이지들)에 기여할 수 있다. 따라서, BERavg이 최상의 k 그룹들 -k는 16보다 작다- 의 평균 BER로서 계산된다면, 배드 페이지를 포함하지 않는 그룹들에 대한 평균이어야 한다. 예를 들면, k=10을 선택하는 것은 블록의 더 나은 절반에 대해 평균하는 것을 의미할 것이다.
이 단락의 여러 측면은 미국특허 출원번호 13/193,083에서 더욱 논의되어 있다.
EPWR 절차에 대한 의사 코드:
m = 0;
for i = 0 to 18
% EPWR for group i:
k = m;
Read page # k into ADL (ADL = page #k);
k = k + 29 - 0.5*mod(k,3) ;
for j = 1:8
Read page # k and NXOR it with ADL (ADL =ADL NXOR page #k);
k = k + 29 - 0.5*mod(k,3);
end
Transfer NOT ADL into XDL (XDL = NOT ADL);
Transfer first Eblock of XDL to the controller.
Perform BER estimation of the transfered Eblock using ECC decoder to generate a BER estimate wi,
Update wmax and wmin;
m = m + 2 - mod(i,2);
end
BERmax + 8ㆍ(BERmax - BERmin) > 9ㆍBERTH이라면, 블록은 의심되는 것이며, BERmax에 대응하는 페이지 그룹의 면밀한 검사가 요구된다.
표 1
소스 SLC 페이지와 목적지 MLC 페이지를 비교하는 EPWR
이 단락에서, 비트 오류율은 소스 SLC 페이지와 목적지 MLC 페이지를 비교함으로써 측정된다. 이것은 메모리 회로 내에서 내부적으로 행해질 수 있어 전체 EPWR 프로세싱이 플래시 다이 내에서 행해질 수 있게 하며, 이것은 단일의 제어기가 상당 수의 플래시 다이들에 작용하고 있는 경우에 특히 적합하다. 이 기술이 사용될 수 있는 SLC 및 MLC 비휘발성 메모리 섹션들 둘 다를 갖는 배열은 2진 캐시 배열 내에 있고, 이 경우 데이터는 초기엔 비휘발성 메모리 부분 내에 기입되고 이어 복수-상태 부분에 폴딩된다. 2진 캐시 구조들에 대한 더 상세한 것은 다음 미국특허 출원번호 또는 가출원번호들에 전개되어 있다: 12/348,819; 12/348,825; 12/348,891; 12/348,895; 12/348,899; 및 61/142,620, 이 모두는 2009년 1월 5일에 출원되었다. 폴딩 동작들에 관한 더 상세한 것은 2009년 6월 5일에 출원된 미국특허 출원번호 12/478,997, 및 2009년 12월 10일에 출원된 12/635,449에서 발견될 수 있다.
앞에 단락의 기술들에 관하여, 이 단락의 기술들이 더 효과적일 수 있는 상황들이 있다. 첫 번째는 BER 추정 능력들을 갖고 있지 않은 디코더가 사용될 때이며, 또한 오류가 난 허용된 비트의 수가 디코더의 정정능력에 비해 클 때이다. 또 다른 것은 다이들의 수가 크고 페이지의 모든 데이터가 제어기에 전송될 필요가 있고 BER 추정 시간이 증가할 때이며, 이 경우엔 플래시 다이 내에서 모든 프로세싱을 유지하는 잇점이 있다.
본 단락의 기술들로 돌아가면, BER은 소스 SLC 페이지와 목적지 MLC(이 예에선 D3) 페이지를 비교함으로써 제시된다. 예시적 실시예는 이것을, 대응하는 한 쌍의 SLC 및 MLC 페이지들을 XOR하고 XOR된 페이지 내 "1"들의 수를 카운트함으로써, -이들은 SLC과 MLC에 기입된 페이지 간에 오일치들을 나타내기 때문에- 행한다. 이 수법은 데이터가 D3에 저장될 때 플래시 관리 펌웨어가 2진 캐시(BC)를 사용할 때 이익이 되는데: 예를 들면, 모든 사용자 데이터는 먼저 BC (SLC 파티션) 내에 놓여지고 이어서 백그라운드 또는 세미-백그라운드 폴딩 동작(SLC에의 프로그래밍이 행해진 후에 호스트에 준비를 연기한다)에서 카피된다.
전체적인 아이디어가 도 33에 개요적으로 도시되었다. 프로그램하기 위한 데이터가 메모리 시스템(1100)에서 수신되었을 때, 이것은 먼저 "a"로 도시된 바와 같이, 제어기 회로(1101)에 수신된다. 이어 데이터는 메모리 칩들(1103) 중 하나에 전송되며, 여기에서 데이터는 초기에는 "b"로 도시된 바와 같이, 2진 캐시의 SLC 부분(1105)에 기입된다. 이어 데이터는 "c"로 도시된 바와 같이 SLC 섹션(1105)에서 MLC 섹션(1107)에 기입된다. 이어, 하나 이상의 페이지들(예를 들면, 한 블록 상당의)이 MLC 섹션(1107)으로부터 판독되고("d") SLC 섹션(1105)으로부터 판독된 것(역시 "d")과 동일한 페이지들과 비교되는데, 여기에서 비교를 위한 회로는 블록(1109)으로 나타내었다. 이하 논의되는 바와 같이, 이들 페이지들이 판독되고 비교되는 순서에 대해 많은 변형들이 가능하다. 비교에 기초하여, 결과는 제어기에 알려질 수 있고 "e"로 도시된 바와 같이 필요할 때 적합한 정정 조치가 취해질 수 있다.
SLC 페이지에 기입되는 데이터가 새로운 데이터("지금 금방 프로그램된")에 대해 예를 들면 -1E-5의 추정된 BER를 가져 비교적 신뢰성 있는 반면 블록이 배드라고 판정하기 위한 D3 신뢰도 임계치가 예를 들면 -1E-3 정도라고 가정하면, '1'의 수를 체크함으로써 SLC 대 D3 페이지를 비교하는 것은 X3 페이지의 신뢰도에 대해 정확한 추정을 제공한다. 예를 들면, X3 페이지가 -0.1%보다 크지 않은 BER를 제공할 것이라고 가정하면, 1KB(+패리터)의 데이터에 대해, 예상되는 오류 비트의 수는 ~9 비트를 초과하지 않아야 한다.
적은 수의 비트(예를 들면 16 비트)까지에 대해 비트 스캔을 사용하여 플래시 다이 내에서 1KB 타이어(tier)에 대해 '1'의 수를 카운트하는 것은 데이터를 제어기에 전송하고 제어기 내에서 카운트하는 것을 수행하기 위해 요구되는 시간에 비해 덜 시간이 걸릴 것이다. 따라서, "1"들의 수가 제어기 상에서 혹은 메모리 장치 상에서 카운트될 수 있을지라도, 마지막 단락의 방법과는 달리, 어떠한 데이터도 제어기에 전송될 필요가 없기 때문에 모든 플래시 다이들 내에서 카운트가 동시에 행해질 수 있기 때문에 플래시 내에서 내부적으로 카운트하는 것이(따라서 제어기 연루를 피하는 것이) 바람직하다. 카운터가 포화된 경우(아마도 드문)에, 시스템은 더 많은 수를 카운트하기 위해 제어기에 전송할 수 있다(이 경우 플래시 다이 내에 내부 비트 스캔 동작은 전송하고 제어기에서 카운트하는 것보다 더 느릴 것이다).
앞에 단락의 방법에 관하여, 이 방법은 3 SLC 소스 블록들(D3 예에 있어서)을 판독하는 것과 게다가 타겟 MLC 블록의 판독(대략 판독 시간을 2배가 되게 한다)을 요구하는 점에서 상대적 단점을 갖는다. 한편, 이 방법은 카운트하는 것이 메모리 섹션 내에서 내부적으로 행해진다면, 제어기 연루 없이 행해질 수도 있다. 이것은 다이들의 수가 크고 제어기가 병목이 될 때, 다이들의 EPWR 동작을 병렬화할 수 있게 할 것이기 때문에, 특히 잇점이 있을 수 있다. 제안된 방법의 또 다른 있을 수 있는 단점은 오류들이 MLC 블록에 카피되고 이어 SLC 페이지와 MLC 페이지 간에 XOR을 수행할 때 상쇄될 것이기 때문에 SLC 블록 내에서 일어난 문제들을 검출하지 않을 것이라는 것이다. 그러나, NAND 고장이 SLC 블록에서 일어날 확률은 MLC 블록에서 NAND 고장의 확률보다 훨씬 작기 때문에, 이 문제는 우려가 되지 않는다.
'1' 카운트를 행하는 시간을 더욱 감소시키기 위해서, 몇개의 SLC 및 MLC 페이지들은 비교가 행해지기 전에 함께 XOR될 수 있다. 비트 오류들의 수가 충분히 작다면, 단일의 래치에 10 페이지들의 MLC 및 10 페이지들의 SLC을 XOR한 후에, 오류들의 총 수는 카운트가 플래시 내부에서 신속하게 행해지기엔 여전히 충분히 작을 것이며, 플래시 내에 오류들에 대해 스캔하는 것이 바람직할 수 있다. 그러나, 비트 수가 커질 것이라면, 제어기로 결과를 추출하는 것이 가능하며, 카운트는 전송 자체 동안에 행해질 수 있다. 이것은 앞에 단락에서처럼 플래시에서 제어기로 비슷한 전송 시간을 갖고 나타날 것이지만; 그러나, 이것은 한편으로는 BER 추정 시간을 절약할 것이지만 그러나 다른 한편으로는 SLC 감지 시간을 추가할 것이다. MLC 데이터가 한 플레인(plane) 내에 있고 대응하는 SLC 데이터가 다른 플레인 내에 있게 데이터가 배열되는 경우들에 있어서, 일부 실시예들은 SLC 및 MLC 페이지가 동시에 감지되게 할 수 있다. (이것은 시스템이 플래시 다이에서 페이지 감지에 의해 SLC 감지 및 MLC 페이지를 지원할 것임을 의미한다).
이 단락의 방법과 앞에 단락의 방법을 비교하고 연루되는 상대적 시간들의 추정을 살펴보면, 마지막 단락에서 기술된 전체 EPWR 프로세스는 이것이 N SLC 블록을 판독하는데 걸리는 시간과 이에 더하여 MLC 블록을 판독하는 시간과 이에 더하여 모든 페이지들을 XOR하는 시간을 요구할 것이다. 이 EPWR 시간은 이것이 제어기로부터 요구되는 낮은 대역폭에 기인하여 모든 다이들에서 병렬로 행해질 수 있기 때문에, 한 다이, 두 개의 다이들 및 4개의 다이들에 대해서 기본적으로 동일한 채로 있게 될 것이다.
도 34 ~ 도 36은 EPWR의 일부 예시적 실시예들에 대한 흐름들이다. 이들 흐름 각각은, 페이지들이 SLC 메모리 섹션 및 MLC 메모리 섹션(즉, 도 33에서 "c" 후에)에 기입된 후에, EPWR 스테이지에서 기입 프로세스를 취한다. 전형적으로, 프로세스는 계속해서 모든 기입된 워드라인들의 누적 영향들이 고려될 수 있도록 한 완전한 MLC 블록이 기입된 후에 행해지지만; 그러나, 더 일반적으로 이것은 임의의 수의 MLC 페이지들이 기입된 후에 행해질 수도 있다. 예를 들면, 도 34에 의해 도시된 제 1 변형예에서, MLC 페이지와 2진으로부터 같은 페이지와의 개별적 비교(여기서는 XOR 연산)에 의해 시작한다.
이제 도 34로 가면, 이 프로세스는 모든 다이에 대해 동시에 수행될 수 있고, 예시적 실시예에서, 모든 MLC(여기에서는 D3) 블록이 프로그램된 후에 행해진다. 도면은 단일의 다이 또는 플레인 상에서의 흐름을 검토하며 선택된 MLC 블록이 프로그램되었다. 1201에서, 페이지는 메모리의 MLC 부분으로부터 감지되고, 1203에서 원(original) 2진 페이지로부터 감지된다. 이들 두 단계의 순서는 물론 반대가 될 수도 있을 것이며 혹은 심지어는 메모리 장치가 지원한다면 동시에 수행될 수도 있을 것이다. 1205에서, 두 개의 버전들이 예를 들면, 이들을 XOR함으로써 비교된다. 이 비교가 제어기 상에서 행해질 수도 있을지라도, 이 실시예의 잇점 대부분은 이것이 플래시 장치 자체에서 실행될 때 얻어진다. 페이지의 두 버전들 간에 임의의 불일치는 XOR되었을 때 "1"로서 나타날 것이기 때문에, "1"에 대한 결과의 비트 스캔은 1207에서 소정의 임계치(예를 들면 여기에서는 16)까지 모든 타이어(tier)(예를 들면 여기에서는 1KB 유닛)에 대해 수행된다. 1209에서 이 카운트가 이 예에서는 16(레이트 경우)를 초과한다면, 페이지는 1211에서 제어기에 전송되고, 이어 "1"들의 수는 예를 들면, 1213에서, 제어기의 플래시 인터페이스 모듈 내에서 카운트될 수 있다. '1'(오류들)의 수가 임계치(1215에서 "예")를 초과한다면, 제어기는 블록을 1217에서 이의 데이터 관리 구조에 의심되는 것으로서 표시한다. 1215에서 및 1209에서 임계치는 예를 들면 설정가능의 펌웨어 파라미터에 기초할 수 있다. "1"들의 수가 한도 내에 있다면(1209 또는 1215에서 "아니오"), 1219에서, 흐름은 체크할 더 많은 페이지들이 있다면 다음 페이지를 위해 1201으로 루프백하며, 혹은 그렇지 않다면 다음 프로세스(다음 블록에 대한 EPWR 또는 다른 동작일 수도 있을)으로 계속된다.
1219부터 루프백에 대한 판단(1215)의 관계에 관하여, 서로 다른 변형예들이 사용될 수 있다. 한 경우에, 1219의 프로세스는 1219부터 루프백에 대한 판단(1215)의 관계에 관하여, 서로 다른 변형예들이 사용될 수 있는한 병렬로 행해질 수 있다. 한 경우에, 1219의 프로세스는 1211, 1213, 1215과 병렬로 행해질 수 있는데; 대안적으로, 시스템은 1211, 1213, 1215를 행할 수 있고, 1219로 가기 전에 1215의 응답이 '아니오'이기를 기다린다. (이와 유사하게 도 35에서 경로들 1317 내지 1321에 그리고 도 36에서 1419 내지 1421에도 적용한다). 이들 중 첫 번째는 시스템이 응답을 기다림이 없이 계속될 수 있게 하여 효율적인 파이프라인 동작을 유지한다. 두 번째(1215에서 응답을 기다린다)는 흔히 펌웨어로 더 간단하게 구현될 것이지만, 그러나 일반적으로 판독들 및 전송들의 파이프라인 동작 면에서 덜 효율적이다.
여기에서 1217로 돌아가서, 페이지가 1215에서 임계치를 초과한다면, 블록은 1217에서 의심되는 것으로서 표시되고, 나머지 페이지들의 블록(또는 체크되는 다른 그룹의 페이지들)은 체크되지 않는다. 그러나, 다른 경우들에 있어서, 이들의 나머지는 블록 내 오류량을 더 잘 나타내기 위해 체크될 수 있다. 이 경우에, 흐름은 1217에서 1219로 갈 것이며, 1217 이후에 흐름은 대신에 모든 페이지들이 행해진 후에 행해질 것이다. 어쨌든, 예시적 실시예에서, 블록이 의심되는 것으로 발견되고 체크에 있어 첫 번째 통과(1221에서 판정된)이라면, 데이터는 루프백에 의해 도시된 바와 같이, 1223에서 재기입되고 다시 체크된다. '1'(오류들)의 수가 두 번째 통과에서 임계치를 초과하고, E-block들 중 어느 것이 '1'(오류들)의 수가 임계치를 초과한다면, 제어기는 대응하는 다이 내 블록을 배드로서 표시하고, 이전 단락에서 논의된 바와 같은 여러 가지 정정 조치들이 취해질 뿐만 아니라(1225), 이것을 걸코 다시 사용할 수 없다. 이 실시예에서, 1225의 조치들은 두 번째 통과에서만 이어지는데, 그러나 다른 경우들에 있어서, 이들은 1217에서 의심되는 것인 것으로서 단지 표시하는 대신에 첫 번째에서 행해질 수도 있을 것이며; 대안적으로, 하나 이상의 추가의 재기입들이 먼저 시도될 수도 있을 것이다.
도 35는 한번에 몇개의 페이지들에 대한 조합된 비교를 사용하는 또 다른 변형예를 도시한 것이다. 구체적으로, 이것은 그룹들의 페이지들에 대한 조합된 비교들을 형성하며 전체로서 그룹에 대해 단일의 체크를 수행하며, 여기에서 블록은 전형적으로 다수의 이러한 그룹들로 분할될 것이다. (이것은 마지막 단락의 복합들에 대해 행해진 것과 유사하다). 위에 도 34(및 밑에 도 36)에서와 같이, 이 흐름은 포함된 더 큰 프로그래밍 동작 내에서 EPWR 프로세스를 취하며, 다이들 각각 내에서 그리고 각 MLC 블록이 프로그램된 후에 동시에 행해질 수 있다.
1301에서 시작하여, 제 1 그룹의 페이지들의 MLC 페이지가 판독되고, 대응하는 원(original) 2진 페이지가 1303에서 판독된다. 이들은 이어, 1305에서, 다시 바람직하게는 메모리 칩 자체 상에서, XOR된다. 1307에서, 다음 MLC 페이지가 감지되고 1305의 결과를 유지하는 래치와 XOR된다. 이어 메모리는 1309에서 1307의 페이지에 대응하는 2진 원(original) 페이지를 감지하고 이를 1305의 결과를 유지하는 래치와 XOR한다. 이것은 그룹의 모든 페이지들에 대해 반복되고(1311부터 루프) 이후에 데이터는 제어기에 보내질 수 있는데(1313), 이 동안에 시스템은 스트림 내 "1"들의 수를 카운트할 수 있다(1315). "1"들(오류들)의 수가 임계치를 초과한다면(1317에서 체크된다), 블록을 의심되는 것으로서 표시한다(1319). 체크할 더 많은 페이지들이 있다면(1321), 프로세스는 이들에 대해 완료한다. 이 예에서, 위에 1321로 되돌아오는 비교단계(1317)로부터 "아니오" 경로가 도시되었는데, 그러나 1321로부터 루프는 이 판단에 앞서 시작하여 병렬로 계속될 수도 있을 것이다. 그리고 도 34에서와 같이, 일단 블록이 의심되는 것으로서 표시되면, 프로세스는 즉시 1323으로 갈 수 있거나, 블록의 나머지가 먼저 체크될 수 있다. 또한 도 34에서와 같이, 일단 블록이 의심되는 것으로서 표시되면, 이것은 재프로그램되고, 다시 체크되고, "1"들(오류들)의 E-block의 수 중 어느 것이 임계치를 초과한다면 그에 따라 처리될 수 있다(1323, 1325, 1327). 도 35의 흐름에서, 1301과 1303의 순서는 서로 바뀔 수 있음에 유의한다. 또한, 단계(1305)와 단계(1307)의 순서는 서로 바뀔 수 있다. 또한, 동일 세트 내에 임의의 SLC 및 MLC를 XOR하는 순서는 서로 바뀔 수 있는데: 예를 들면, 시스템은 모든 SLC 페이지들을 XOR하고 이어 모든 MLC 페이지들을 임의의 순서로 동일 래치로 XOR할 수 있다. 대안적으로, 시스템은 래치를 제로가 되게 하고 이어 각각이 동일 래치로의 XOR 동작들을 진행할 수 있다. 이 수법은 도 36의 변형예에서 나타내었다.
도 36은 전에는 암시적이었을지라도 여기에서는 1401에 포함된 후속 XOR 동작들을 위해 사용되는 래치를 제로가 되게 하는 것부터 시작한다. 1403에서 MLC 페이지가 감지되고 1405에서 래치로 XOR되고, 프로세스는 그룹의 모든 MLC 페이지들에 대해서 1407로부터 루프 동안 반복된다. 이어, SLC 페이지들이 판독되고(1409), 1413로부터 루프 내에서 그룹의 모든 대응하는 페이지에 대해 래치 내에 XOR된다(1411). 흐름에서, MLC 페이지들 및 대응하는 2진 페이지들이 판독되고 XOR되는 순서는 서로 바뀔 수 있다, 이어 도 36의 나머지는 도 35의 대응하는 요소들에서와 같이 이어진다.
이들 변형예들의 어느 것에 대해서, 블록이 배드인지에 대한 판단이 몇몇 통계적 행동에 따라 행해지는 실시예가 사용될 수 있다. 예를 들면, 블록의 페이지들은 그룹들로 분할될 수 있다. 각 그룹에 대해서, 블록을 의심되는 것으로서 표시하기에 앞서 흐름의 초기 부분들이 각 그룹에 대해 실행된다. 이어, 시스템은 모든 그룹들 상에 모든 "1"들의 합을 그룹들의 수로 나눈 것으로서 그룹당 "1"들의 평균 수를 계산할 수 있다. 이어 시스템은 최악의 그룹(최대 수의 "1"들을 가진) 상에 "1"들의 수가 평균의 함수인 어떤 임계치를 초과하는지를 체크하고, 이의 판단을 이 측정에 근거한다.
이 단락의 기술들은 2011년 10월 24일에 출원된 미국특허 출원번호 13/280,217에 더욱 전개되어 있다.
복수의 워드라인들의 조합된 감지
위에 논의된 바와 같이, 이를테면 무엇보다도 끊어진 워드라인들, 제어 게이트 단락 회로들, 및 워드라인간 단락들과 같은, 어떤 메모리 장치 고장은 생산 동안 쉽게 가려내지지 않는다. 사용자 데이터 무결성을 보증하고 이러한 가려낼 수 없는 메모리 장치 고장이 있는 중에도 메모리 신뢰도를 증가시키기 위해서, 메모리 블록을 프로그램한 후에 이들 고장을 검출하는 것이 요구된다. 이들 유형들의 고장은 미국특허 출원번호 12/833,167; 12/833,146; 13/016,732; 13/101,765; 및 13/193,148에 더욱 논의되어 있다. 이러한 고장은 위에 기술된 향상된 기입후 판독(EPWR) 절차를 사용하여 검출될 수 있다. 이 단락에서는 조합된 복수-워드라인 감지에 기초한 더 빠른 고장 검출 방법이 제시된다. 이것은 블록 검출이 통상의 블록 판독 시간보다 더 빨라질 수 있게 한다. 또한, 이 방법은 페이지 비트 오류율 (BER)이 영향을 받기 전에, 이들의 초기 스테이지들에서, 고장의 검출이 진행될 수 있게 한다.
블록 고장 검출 시간의 속도를 높이기 위해서, 이 단락은 이들 워드라인들 중 하나 이상에 내에 문제를 확인하기 위해 복수의 워드라인들의 조합된 동시적 감지를 수행하는 것을 기술한다. 즉, 감지 전압들은 결과적인 도통이 동일 비트라인 상에서 측정되는 하나 이상의 메모리 셀의 제어 게이트들에 동시에 인가된다. 예를 들면, NAND형 아키텍처에서, 이것은 동일 NAND 스트링 내 복수의 셀들이거나 NOR형 아키텍처에선 동일 컬럼 내 메모리 셀들이 될 것이다. 이들 감지 전압들은 기본적으로 판독 동작으로부터 비선택된 셀들을 제거하기 위해 NAND 스트링 내 이들 비선택된 메모리 셀들에 인가되는 일종의 더 높은 패스 전압과는 반대로, 프로그래밍의 서로 다른 레벨들 간을 구별하기 위해 사용되는 것들임에 유의한다. 조합된 감지 결과는 복수의 워드라인들의 셀 전압 분포(CVD)의 어떤 통계를 측정하고 이를 예상값과 비교하기 위해 사용될 것이다. 측정된 통계가 예상된 것과는 다른 경우에, 이것은 감지된 워드라인들 중 하나 이상이 고장을 나타낼 수 있어 일 그룹의 워드라인의 더 철저한 검사가 수행될 수 있음을 나타낼 수 있다. 이 기술은 기입 프로세스 후에 체크로서 그리고 의심되는 워드라인이 검출되었다면 취해지는 적합한 단계들과 함게 사용되는 앞에 단락들에서 기술된 것들과 유사하게 기입후 판독 프로세스에 포함될 수 있다.
조합된 복수의 워드라인 감지 프로세스를 더욱 기술하기 전에, NAND형 메모리에 대한 통상의 감지 프로세스가 간략히 고찰된다. 도 37은 워드라인 WL-2(1501)의 통상적인 감지를 도시한 것으로, 메모리는 감지 임계치 전압(Vcgr)을 WL-n의 게이트에 인가하며, 아울러 이외 모든 다른 워드라인들에는 패스 전압(Vread)을 인가한다(즉 메모리는 다른 워드라인들 내 모든 셀들을 "개방(open)"한다). 이 감지 동작의 결과는 Vth≤Vcgr, Vth는 셀의 임계치 전압을 만족시키는 WL2 내 셀들의 위치들에서 1들을 갖는 2진 벡터이다. 예를 들면, NAND 스트링(1511)을 따른 감지 증폭기 SA(1521)에 의해 판정되는 결과는 셀(1531)의 상태에 의해 판정되며, 1511을 따른 다른 셀들은 이들이 완전히 턴 온 되도록 레벨 Vread을 인가함으로써 기여으로부터 제거된다.
복수의 페이지들의 조합된 통계를 평가하기 위해서, 시스템은 메모리 페이지들의 조합된 감지를 사용할 수 있다. 예를 들면, 감지 동안에 도 38에 도시된 바와 같이 전압들의 설정을 고찰한다. 이제 각각 인가되는 감지 전압들(Vcgr4, Vcgr2)을 갖고, 조합된 감지 동작을 위해 WL2(1501) 뿐만 아니라 워드라인 WL4(1503)이 선택됨에 유의한다. 결국, NAND 스트링(1511)에 대해서, 감지 증폭기(1521)에 의해 판정되는 것은 두 셀들(1531, 1533)의 상태의 조합일 것이다. 이 감지 동작의 결과는 다음 조건: (WL2 셀은 Vth≤Vcgr2을 만족시킨다) AND (WL4 셀은 Vth≤Vcgr4을 만족시킨다)을 만족시키는 비트라인들에 대응하는 위치들에서 1들을 갖는 2진 벡터이다. 이에 따라, 메모리는 단일의 감지 동작을 사용하여 복수의 워드라인들의 조인트(joint) AND 조건을 검출할 수 있다. 이것은 복수의 워드라인들을 동시에 평가하고 결과를 예상되는 값과 비교함으로써 빠른 EPWR을 위해 사용될 수 있는데; 예를 들면, 데이터 스크램블이 사용된다면, 조합된 감지의 조인트 통계가 사용될 수 있다.
여기에서 논의되는 EPWR 응용 외에도, 서로 다른 워드라인들 상에 서로 다른 페이지들의 이러한 조합된 감지는 다른 목적들을 위해 더 일반적으로 적용될 수 있다. 예를 들면, "셀 전압 분포(CVD) 추적" 동작에서, 한 세트의 워드라인들에 속하는 워드라인의 판독을 위해 사용하기 위해서 최적의 판독 임계치들을 추적하기 위해 복수-WL 감지가 사용될 수도 있을 것이다. 최적의 판독 임계치들은 CVD(기본적으로 판독하기 위한 최적의 임계치들은 CVD가 최소 점들, 즉 상태 분포들 사이 내에 갖는 대략 임계치들이다)의 함수이며, 시스템은 복수-WL 감지를 사용하여 복수의 WL들의 CVD에 관하여 알 수 있다. 복수의 워드라인들의 동시적 감지가 사용될 수도 있을 또 다른 응용은, 복수의 워드라인들의 비트 오류율(BER)의 추정을 위한 것이다. BER은 CVD(예를 들면 CVD 로브들(lobes)이 넓을수록, CVD는 더 크게 겹치고 BER은 더 커진다)과 상관된다. 결국, 시스템은 감지된 워드라인들의 임의의 CVD에 관계된 파라미터들을 추정하기 위해 복수 워드라인 감지를 사용할 수 있다.
도 39는 도 30 및 도 32의 상태들을 다시 고찰하나, 본 논의를 위해 V1, V2, V3 및 V4로 표기되어 도시된 4개의 전압들을 사용하여 고찰한다. 또한, 도 40에 도시된 한 세트의 4개의 감지 동작들에서 인가되는 이들 4개의 전압들을 고찰한다. 여기에서, 제 1 감지 동작은 각각 전압들(V1, V2, V3, V4)을 워드라인들(WL0, WL2, WL4, WL6)에 인가한다. 제 1 감지 동작의 결과는 다음을 만족시키는 이들 비트라인들 내 '1'이다: (Vth0≤V1) AND (Vth2≤V2) AND (Vth4≤V3) AND (Vth6≤V4) (조건1). 여기에서, VthO, Vth2, Vth4 및 Vth6는 각각 WL0, WL2, WL4, 및 WL6 내 셀들의 임계치 전압들이다. 이어 4개의 감지 전압들은 제 2, 제 3 및 제 4 감지 동작들에 대해 도시된 바와 같이 순환되며, 여기에서 유사한 조건들이 제 2, 제 3 및 제 4 감지 동작들에 적용된다.
예상되는 결과가 무엇인가에 관하여, 각 감지 동작에 의해 발생된 2진 페이지 내 1들의 수에 대해서, 이것은 데이터가 스크램블되었다고 가정하면 대답이 될 수 있다. 스크램블된 데이터에서, 셀당 3비트 형태가 사용될 때 셀들의 1/8은 각 프로그래밍 레벨에 프로그램될 것으로 예상된다(즉, 셀당 n 상태들에 대해서, 스크램블링이 사용될 때 셀들의 1/n이 각 상태에 있게 될 것이다). 따라서, Pr(Vth0≤V1)=1/8, Pr(Vth2≤V2)=3/8, Pr(Vth4≤V3)=5/8 및 Pr(Vth6≤V4)=7/8이다. 이에 따라, Pr((VthO≤V1) AND (Vth2≤V2) AND (Vth4≤V3) AND (Vth6≤V4)) = 1/8ㆍ3/8ㆍ/8ㆍ7/8 = 105/4096 = 2.56%이다.
지금 기술된 일종의 조합된 감지 동작은 한 페이지의 데이터의 데이터 내용을 추출하기 위해 사용되는 정규 감지 동작에 비해 어레이 상에 바이어스 레벨들의 드문 조합을 가하기 때문에, 조합된 복수 페이지 감지는 감지 결과가 위에 조건1에 의해 예측되는 것과는 달라지게 할 수 있다(즉 조건에 의해 정의되는 바와 같은 "개방된(open)" 비트라인에 대한 조건들을 변경한다). 한 우려는 이웃 워드라인들로부터의 커플링이 감지 정확도에 영향을 미쳐 감지된 Vth를 이동시킬 수 있다는 것이다. (이 커플링 영향은 "룩어헤드(look ahead)"형 판독 프로세서로서 알려진 것을 수행하기 위해 이용되는 동일한 영향이며, 여기에서 이웃 워드의 상태의 영향은 판독에 요인이 된다). 그러나, 이 영향은 이웃하지 않은 워드라인들(바람직하게는, 하나 이상의 비선택된 워드라인에 의해 분리된) 상에서 조합된 감지를 수행함으로써 완화될 수 있다.
또 다른 우려는 셀의 Vth가 이의 제어 게이트에 인가되는 Vcgrv에 가까울 때 셀은 간신히 턴 온 된다는 것이다. 이것은 비트라인이 도통하기 위해서, NAND 체인을 따른 다른 셀들은 과잉 구동(over drive)되어야 함을 의미하는데; 즉, 이들의 제어 게이트에 인가되는 전압은 이들의 Vth(예를 들면 이 논의에서 예시적 값으로서 사용되는 것인 1.5V만큼)보다는 현저하게 커야 한다. NAND 스트링에 대한 통상적인 감지에서, Vread은 전형적으로 가장 높은 프로그램된 상태에서 비선택된 셀들을 -1.5V만큼 과잉 구동하며 소스측 조건들은 검증과 판독 사이에서 일관된다. 여기에 기술된 조합된 복수 페이지 감지에서는 이에 해당되지 않을 것이다. 더 구체적으로 도 40에 예를 고찰한다. 이 문제는 비트라인이 "온(on)"(그리고 '1'로서 판독)이 될 조건이 위에 언급된 조건1이 아니며 그보다는 다음 조건에 가까운 더 복잡한 조건임을 의미한다:
((Vth0≤V1) AND ( Vth2≤V2-1.5) AND (Vth4≤V3-1.5) AND (Vth6≤V4-1.5))
OR
((Vth0≤V1-1.5) AND (Vth2≤V2) AND (Vth4≤V3-1.5) AND (Vth6≤V4-1.5))
OR
((Vth0≤V1-1.5) AND (Vth2≤V2-1.5) AND (Vth4≤V3) AND (Vth6≤V4-1.5))
OR
((Vth0≤V1-1.5) AND (Vth2≤V2-l.5) AND (Vth4≤V3-1.5) AND (Vth6≤V4))
조건2이라 칭할 이 조건라도 과도하게 단순화될 수 있으나, 문제를 예시하기 위해 사용될 수 있다.
이들 문제들은 특히 목적이 데이터를 실제로 판독하는 것이라면, 이들이 예측불가한 Vth 이동들을 초래하기 때문에, 문제가 될 수 있다. 그러나, 이 단락에서 고찰되는 조합된 복수 페이지 감지의 주요 목적은 워드라인들 중 하나의 셀 전압 분포(CVD)가 교란되는지 체크하기 위해 EPWR의 부분으로서 사용되고 있는 점에서 다르다. 따라서, "온(on)"될 비트라인의 조건에 관계없이(조건1이든지, 조건2이든지 아니면 다른 것이든지 간에), 조합된 복수 페이지 감지가 한 세트의 양호한 워드라인들(정규 CVD을 갖는) 및 하나 이상의 교란된 워드라인들(비정규 CVD를 갖는 비정규 CVD)을 내포하는 한 세트의 워드라인들에 대해 상이한 "시그내처(signature)"를 갖게 한다면, 이것은 EPWR의 목적에 충분하다. 이러한 조합된 복수 페이지 감지는 복수의 워드라인들을 동시에 평가함으로써 빠른 EPWR 프로세스의 목적들을 위해 사용될 수 있다. 예를 들면, 단지 4 감지 동작들로 모든 4 워드라인들을 평가할 수 있고, 1의 카운터에 기초하여 검증하는 것은 예상되는 바와 같이 각 감지 동작에 의해 발생된 2진 페이지 내 1들의 수에 대응한다.
예시적 일실시예에서, 함께 감지되는, 즉 그룹 내 문제를 검출하기 위해 사용되는 일 그룹의 워드라인들의 "시그내처"는 각 감지 동작 결과인 2진 페이지 내 1들의 수를 각각이 나타내는 한 세트의 카운터들에 기초할 수 있다. 이들 카운트들은 정규 CVD를 취할 때 이들의 예상된 값에 비교될 수 있어, 예상된 값으로부터 큰 차이는 일 그룹의 WL들이 의심되며 문제가 있는 워드라인을 내포할 수 있음을 나타낸다. 또 다른 선택지는 각 감지 동작으로부터 얻어진 2진 페이지를 예상되는 페이지와 비교하는 것이다(단지 페이지 내 1들을 카운트하고 이를 1들의 예상되는 부분과 비교하는 대신에). 이 대안적 선택지는 페이지들 중 하나 내에 문제를 검출하는 능력 면에서는 더 확실할 수 있는데; 그러나, 이것은 한 세트의 실시예들에서 예상되는 페이지가 예를 들면 제어기 내 일부 하드웨어 엔진에 의해서 혹은 메모리 장치 내 일부 로직에 의해 계산될 수 있을지라도, 문제가 있을 수 있는 예상되는 페이지를 알 것을 요구하기 때문에 흔히 덜 바람직하다. 이 단락의 나머지는 1들의 카운트를 "시그내처"로서 사용하는데 중점을 둘 것이다.
의심되는 WL 그룹에 대한 양호한 기준을 제공하게, 카운트들에 기초하여 "시그내처"를 정의하기 위해 다양한 선택지들이 사용될 수 있다. 오 검출의 확률이 오경보들 댓가로 감소되게, 일 그룹의 워드라인들이 의심되는 것으로 판정하기 위한 보수적인 기준을 사용하는 것이 바람직할 것이다. 오경보에 대한 페널티는 이 경우에 의심되는 그룹 내 WL들을 더 주의깊게 체크하는 것만이 요구되기 때문에(즉 위에 예에서 4개의 WL들을 판독), 전형적으로 비교적 작다. 한 선택지는 모든 WL 그룹들의 통계로부터 가장 큰 일탈을 나타내는 WL 그룹을 항시 체크하는 것이다. 이 경우에, 복수 WL 감지는 다른 WL 그룹들에 비해 가장 다른 그룹의 WL들을 신속하게 확인할 수 있게 하는 빠르게 초기에 가려내기 위한 방법으로서 작용한다. 이 WL 그룹은 통상적인 방법으로 더 철저하게 체크된다. 이것은 통상적인 방법으로 모든 WL들을 체크하는 것보다 훨씬 더 빠를 것이다. 예를 들면, 한 블록의 워드라인들이 4 WL들의 22개의 그룹들로 분할되는 셀당 3비트 MLC 블록을 고찰한다. 이 경우엔 22 WL 그룹들이 있고, 각 그룹에 대해서 시스템은 4 감지 동작들을 사용하여 4개의 카운트들(CNT1, CNT2, CNT3, CNT4)을 발생한다. 전체 블록을 횡단함으로써 발생된 이들 22*4 = 88 카운트들은 다음처럼 각 카운트의 예상되는 값을 계산하기 위해 사용될 수 있다:
μ1 = 21 CNT1 수들의 평균
μ2 = 21 CNT2 수들의 평균
μ3= 21 CNT3 수들의 평균
μ4 = 21 CNT4 수들의 평균
이어서, 22 그룹들 각각에 대해서 다음처럼 정의된 "시그내처"를 계산한다:
시그내처=(CNT1-μ1)2 +(CNT2-μ2)2 +(CNT3-μ3)2 +(CNT4-μ4)2.
다른 실시예들은 시그내처를 위해 다른 메트릭들을 사용할 수 있다.
이어서, 가장 큰 시그내처(블록 통계로부터 가장 큰 일탈을 갖기 때문에)를 가진 그룹은 이의 4 워드라인들을 판독하고 이들을 체크함으로써 더 면밀하게 검사될 수 있다(예를 들면 ECC 디코딩 또는 이외 어떤 다른 방법을 통해 행해질 수 있는 비트 오류율 추정을 통해). 전체적으로, 이 "EPWR" 프로세스는 총 104 감지 동작들에 있어서, 그룹들에 대해 22*4 감지 동작들 + 가장 큰 시그내처를 가진 WL 그룹에 대해 4*4 감지 동작들을 취한다. 이것은 블록의 통상적인 판독에 의해 요구되는 감지 동작들의 수(88*4 = 352 감지 동작들이다)의 -30%이다. 또한, 데이터가 덜 제어기에 전송된다.
EPWR을 더욱 더 속도를 높이기 위해서, 조합된 복수 페이지 감지는 많은 수의 워드라인들에 대해 수행될 수 있다. 그러나, 조합된 감지가 더 많은 워드라인들로 형성되기 때문에, 결과적인 2진 페이지 내 '1'들의 부분(즉 "개방"될 BL들의 부분)은 감소될 것이다. 결국, 이떤 지점에서, 무시할만한 수의 비트라인들(또는 전혀 비트라인들이 없어도)가 도통하여 불충분한 통계를 제공할 것이기 때문에 함께 감지될 수 있는 WL들의 수에 제한이 있다. 최대 수의 워드라인들은 여전히 충분한 통계가 존재하는, 즉 1들의 카운트는 너무 낮지 않을 최대 수로서 결정될 수 있다. 실제로, 카운터들의 예상되는 값이 ~50가 되게(정규 CVD을 가정하고) 그룹당 워드라인들의 수를 설정하는 것이 요망될 수 있다. 이것은 통계적으로 충분한 안정될 것이다.
소량의 데이터만이 제어기에 전송되어(예를 들면 4 WL들당 4개의 카운트들) 복수-다이 동작이 더 효율적이 되고 제어기가 병목이 되지 않게, 카운트하는 것은 메모리 칩 내에서 내부적으로 행해질 것이 바람직하다(제어기와는 대조적으로). 일부 메모리 장치들은 내부적으로, 2진 페이지 내 1들(또는 0들)의 수의 이러한 카운트 동작들을 수행할 수 있다.
고찰될 필요가 있는 또 다른 문제는 선택된 워드라인들에 인가되는 Vcgrv 전압들(V1,V2,V3,V4)의 결정이다. 서로 다른 전압 조합들은 서로 다른 "시그내처" 질을 제공할 수 있는데; 즉, 이들은 의심되는 그룹을 더 쉽게 검출할 수 있게 할 더 유용한 결과를 제공할 수 있다. 인가되는 일련의 Vcgrv 전압들에 관련하여, 서로 다른 바이어스 전압들에 비해, 조합된 복수 페이지 감지 동안에 선택된 워드라인들 상에 동일 바이어스 전압을 구현하는 것이 설계 견지에서 더 쉬울 수 있다. 이에 따라, 도 40에 도시된 수법보다 도 41에 도시된 수법을 구현하는 것이 더 쉬울 수 있다. 도 41의 수법은 의심되는 WL 그룹을 검출하는 유사한 능력을 가져야 한다. 도 41의 수법의 있을 수 있는 결점은 이것이 모든 4 카운트들이 동일한 예상값을 갖는 도 40의 수법과는 대조적으로 서로 다른 예상되는 카운트들(CNT1, CNT2, CNT3, CNT4)을 제공한다는 것이다. 카운트들의 높은 동적범위(dynamic range)는 결점이 될 수 있다. 예를 들면, 일부 경우들에 있어서, 메모리 내에서 내부적으로 카운트하는 능력은 어떤 최대 카운트로 제한될 수도 있다. 적어도 가장 큰 카운터 값(V4의 가장 큰 레벨을 모든 4개의 선택된 WL들에 인가하는 도 41에 도시된 감지 #4에 의해 얻어지는)에 대해서, 카운트할 비트량이 흔히 너무 높아 전형적인 메모리 칩 내에서 내부적으로 행해지지 못할 것이기 때문에, 이것은 카운트하는 것이 제어기 내에서 구현될 필요가 있을 수 있음을 의미할 수 있다. 제어기 내에서 카운트하는 것은 제어기가 병목이 될 수 있기 때문에, 복수-다이 구성에선 덜 바람직하다.
이들 경우들 중 어느 것에 있어서, 일단 의심되는 그룹의 워드라인들이 발견되면, 개개의 워드라인들의 그룹은 더 철저하게 체크될 수 있다. 워드라인이 결함이 있는 것으로 발견되면, 앞에 단락들에서 기술된 다양한 종류의 정정 조치들이 채용될 수 있다.
결어
앞에 단락들의 기술들은 현저하게 더 빠른 EPWR 동작을 포함하여, 다수의 잇점들을 제공할 수 있다. 이들은 또한 제어기와 메모리 간에 버스의 대역폭을 덜 요구할 수 있다. 또한 이들은 제어기 하드웨어로부터 대역폭을 덜 요구할 수 있다. 여러 실시예들은 메모리 시스템에서 효율적인 복수-다이 EPWR 동작이 될 수 있게 한다. 또한, 앞에 단락에서 제시된 기술들은 일부 경우들에 있어서 NAND 고장이 비트 오류율에 영향을 미치기 전에 이들을 이들의 초기 스테이지들에서 진행 중에 검출할 수 있게 한다.
발명의 전술한 상세한 설명은 예시 및 설명 목적으로 제시되었다. 하나도 빠뜨리는 것이 없게 하려는 것이거나 개시된 정밀한 형태로 발명을 제한하려는 것은 아니다. 위에 교시된 바에 따라 많은 수정들 및 변형들이 가능하다. 기술된 실시예들은 발명의 원리 및 이의 실제 응용을 최상으로 설명하고 그럼으로써 다른 당업자들이 발명을 여러 실시예들에서 그리고 고찰되는 특정 용도에 적합한 다양한 수정을 가하여 최상으로 이용할 수 있게 하기 위해 선택되었다. 발명의 범위는 첨부된 청구항들에 의해 정의되게 하였다.
Claims (27)
- 워드라인들 및 비트라인들을 따라 형성된 복수의 메모리 셀들을 포함하는 메모리 장치 동작 방법에 있어서,
대응하는 복수의 선택된 워드라인들 및 하나 이상의 선택된 비트라인들을 따른 복수의 메모리 셀들의 프로그래밍을 포함하는 기입 동작을 수행하는 단계;
이어서, 복합 감지 동작을 수행하는 단계를 포함하며, 상기 복합 감지 동작을 수행하는 단계는
프로그래밍의 레벨들 간을 구별하기 위해 복수의 제 1 감지 전압들을 상기 대응하는 복수의 선택된 워드라인들에 동시에 인가하는 단계; 및
상기 하나 이상의 선택된 비트라인들 각각에 대해서, 상기 복수의 선택된 워드라인들에 상기 복수의 제 1 감지 전압들이 인가되는 동안에 상기 복수의 선택된 워드라인들을 따른 상기 대응하는 복수의 메모리 셀들의 제 1 조합된 감지 동작을 동시에 수행하는 단계로서, 상기 제 1 조합된 감지 동작의 결과는 상기 선택된 비트라인을 따른 상기 복수의 메모리 셀들의 상태에 따르는 상기 감지 동작을 동시에 수행하는 단계를 포함하고, 상기 메모리 장치 동작 방법은
상기 복합 감지 동작의 결과와 예상 결과와의 비교를 수행하는 단계; 및
상기 비교에 기초하여, 상기 감지된 메모리 셀의 무결성을 판정하는 단계를 포함하는, 메모리 장치 동작 방법. - 제 1 항에 있어서, 상기 복합 감지 동작은 상기 제 1 세트의 감지 전압들을 인가하고 동시에 제 1 조합된 감지 동작을 수행하는 단계에 이어서:
프로그래밍의 레벨들 간을 구별하기 위한 대응하는 복수의 제 2 감지 전압들을 상기 대응하는 복수의 선택된 워드라인들에 동시에 인가하는 단계로서, 상기 제 2 감지 전압들의 배열은 상기 제 1 감지 전압들의 배열과는 다른 상기 대응하는 복수의 선택된 워드라인들에 동시에 인가하는 단계;
상기 하나 이상의 선택된 비트라인들 각각에 대해서, 상기 복수의 선택된 워드라인들에 상기 복수의 제 2 감지 전압들이 인가되는 동안에 상기 복수의 선택된 워드라인들을 따른 상기 대응하는 복수의 메모리 셀들의 제 2 조합된 감지 동작을 동시에 수행하는 단계로서, 상기 제 2 조합된 감지 동작의 결과는 상기 선택된 비트라인을 따른 상기 복수의 메모리 셀들의 상태에 따르는 상기 대응하는 복수의 메모리 셀들의 제 2 조합된 감지 동작을 동시에 수행하는 단계를 더 포함하고,
상기 비교는 상기 제 1 및 제 2 조합된 감지 동작의 조합에 기초하는 것인, 메모리 장치 동작 방법. - 제 2 항에 있어서, 상기 제 1 감지 전압들은 복수의 서로 다른 레벨들을 포함하고, 제 2 감지 전압들은 상기 제 1 감지 전압들과 동일한 레벨들이지만 상기 선택된 워드라인들에 상이한 조합으로 인가되는, 메모리 장치 동작 방법.
- 제 2 항에 있어서, 상기 제 1 감지 전압들은 모두 제 1 레벨과 동일하며, 상기 제 2 감지 전압들은 모두 제 2 레벨과 동일하며, 상기 제 1 레벨 및 제 2 레벨은 서로 상이한, 메모리 장치 동작 방법.
- 제 2 항에 있어서, 상기 비교는 상기 조합된 감지 동작들 각각의 예상값으로부터의 차이의 함수인 메트릭을 계산하는 단계를 포함하고,
판정은 상기 계산된 메트릭의 상기 값에 기초하는, 메모리 장치 동작 방법. - 제 2 항에 있어서, 상기 기입 동작은 한 블록의 메모리 셀들을 프로그램하며, 상기 메모리 장치 동작 방법은 이어서,
하나 이상의 추가의 세트들의 선택된 워드라인들에 대해 복합 감지 동작을 수행하는 단계 및 상기 하나 이상의 추가의 세트들의 선택된 워드라인들에 대한 상기 복합 감지 동작의 결과를 대응하는 예상된 결과와 추가적인 비교를 수행하는 단계를 더 포함하고,
상기 판정은 상기 추가적인 비교들에 더 기초하는, 메모리 장치 동작 방법. - 제 6 항에 있어서, 상기 판정은 상기 비교 중 어느 것이 상기 복합 감지 동작과 상기 대응하는 예상된 결과 간에 가장 큰 차이를 나타내는지를 판정하는 단계를 포함하는, 메모리 장치 동작 방법.
- 제 7 항에 있어서, 상기 판정은 상기 복합 감지 동작과 상기 대응하는 예상된 값 간에 가장 큰 차이와의 상기 비교에 대해서, 상기 대응하는 선택된 워드라인들의 상기 워드라인들을 개별적으로 검사하는 단계를 더 포함하는, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 상기 복합 감지 동작, 비교 및 판정은 기입후(post-write) 검증 프로세스의 부분으로서 수행되는, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 상기 하나 이상의 선택된 비트라인들의 수는 한 페이지에 대응하는 비트라인들의 수인, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 상기 메모리 장치는 상기 메모리 셀들 각각 내 한 비트 이상의 데이터를 저장할 수 있는, 메모리 장치 동작 방법.
- 제 11 항에 있어서,상기 대응하는 복수의 선택된 워드라인들에 동시에 인가되는 상기 복수의 제 1 감지 전압들은 적어도 2개의 서로 구별되는 레벨들을 포함하는, 메모리 장치 동작 방법.
- 제 12 항에 있어서, 선택된 워드라인들의 수는 2보다 큰, 메모리 장치 동작 방법.
- 제 11 항에 있어서, 상기 대응하는 복수의 선택된 워드라인들에 동시에 인가되는 상기 복수의 제 1 감지 전압들은 동일한 적어도 2개의 레벨들을 포함하는, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 선택된 워드라인들의 수는 2보다 큰, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 상기 메모리 장치는 NAND-형 아키텍처에 따라 형성되고, 상기 선택된 비트라인들 각각에 따른 상기 감지된 메모리 셀들은 공통의 NAND 스트링으로부터 온 것이며, 상기 복합 감지 동작은 상기 공통의 NAND 스트링들의 상기 비선택된 워드라인들에 전압을 인가하는 단계를 더 포함하여, 상기 메모리 셀들은 상기 조합된 감지 동작의 결과에 기여하지 않는, 메모리 장치 동작 방법.
- 제 16 항에 있어서, 상기 비선택된 워드라인들에 인가되는 상기 전압은 상기 제 1 감지 전압들보다 큰, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 상기 제 1 감지 값들 중 하나 이상은 표준 판독 동작에서 사용되는 상기 감지 값들로부터 오프셋된, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 상기 예상된 결과는 상기 감지된 메모리 셀들에 이전에 기입된 상기 데이터에 기초하는, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 상기 예상된 결과는 상기 감지된 메모리 셀들에 기입된 상기 데이터의 예상된 통계적 분포에 기초하는, 메모리 장치 동작 방법.
- 제 1 항에 있어서, 상기 감지된 메모리 셀들이 불충분한 무결성을 갖는 것으로 발견한 상기 판정에 응하여, 정정 동작들을 수행하는 단계를 더 포함하는, 메모리 장치 동작 방법.
- 한 블록의 플래시 메모리의 데이터 무결성을 체크하는 방법으로서, 상기 블록은 NAND-형 아키텍처를 가지며 각각이 하나 이상의 페이지들의 데이터를 저장하는 복수의 워드라인들을 포함하고, 상기 방법은
복수의 N 제 1 기준 전압들을 발생하는 단계로서, 모든 상기 제 1 기준 전압들은 소정의 전압보다 작은, 상기 복수의 N 제 1 기준 전압들을 발생하는 단계;
상기 제 1 기준 전압들의 각각을 상기 블록의 동일한 한 세트의 NAND 스트링들에 대응하는 복수의 N개의 선택된 워드라인들 중 하나에 동시에 인가하는 것을 포함하는, 제 1 복수-페이지 감지 동작을 수행하는 단계; 및
상기 선택된 워드라인들이 속하는 상기 NAND 스트링들의 상기 비선택된 워드라인들에 상기 소정의 전압을 동시에 인가하는 단계; 및
상기 제 1 복수-페이지 감지 동작의 결과에 기초하여 상기 한 블록의 데이터의 상기 데이터 무결성을 판정하는 단계를 포함하는, 플래시 메모리 데이터 무결성 체크 방법. - 제 22 항에 있어서, 상기 제 1 기준 전압들은 동일한 값을 갖는, 플래시 메모리 데이터 무결성 체크 방법.
- 제 22 항에 있어서, 상기 제 1 기준 전압들을 발생하고 상기 제 1 복수-페이지 감지 동작을 수행하는 단계에 이어, 한 시간 이상의 시간들 동안, 복수의 N개의 추가의 기준 전압들을 발생하는 단계 및 각 복수의 추가의 기준 전압들에 대해 추가의 복수 페이지 감지 동작을 수행하는 단계를 더 포함하고, 상기 추가의 기준 전압들 모두는 상기 소정의 전압보다 작으며, 상기 추가의 복수 페이지 감지 동작들 각각은
상기 추가의 기준 전압들 각각을 동일한 한 세트의 상기 블록의 NAND 스트링들에 대응하는 상기 선택된 워드라인들 중 하나에 동시에 인가하는 단계; 및
상기 선택된 워드라인들이 속하는 상기 NAND 스트링들의 상기 비선택된 워드라인들에 상기 소정의 전압을 동시에 인가하는 단계를 포함하고,
상기 판정하는 단계는 상기 제 1 복수-페이지 감지 동작 및 상기 추가의 복수-페이지 감지 동작들의 결과에 기초하는, 플래시 메모리 데이터 무결성 체크 방법. - 제 24 항에 있어서, 상기 복수의 제 1 기준 전압들은 동일한 값을 가지며, 각 복수의 상기 하나 이상의 복수의 추가의 기준 전압들은 동일한 값을 갖는, 플래시 메모리 데이터 무결성 체크 방법.
- 제 22 항에 있어서, 상기 판정하는 단계는 상기 제 1 복수-페이지 감지 동작의 상기 결과의 가중치를 계산하는 단계; 및
상기 가중치의 함수로서 상기 데이터 무결성을 판정하는 단계를 포함하는, 플래시 메모리 데이터 무결성 체크 방법. - 제 26 항에 있어서, 상기 판정하는 단계는 상기 제 1 복수-페이지 감지 동작에 대한 기준 가중치를 제공하는 단계; 및
상기 기준 가중치로부터 상기 계산된 가중치의 일탈의 함수로서 상기 데이터 무결성을 판정하는 단계를 더 포함하는, 플래시 메모리 데이터 무결성 체크 방법.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161512749P | 2011-07-28 | 2011-07-28 | |
US13/193,083 | 2011-07-28 | ||
US13/193,083 US8726104B2 (en) | 2011-07-28 | 2011-07-28 | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages |
US61/512,749 | 2011-07-28 | ||
US13/332,780 | 2011-12-21 | ||
US13/332,780 US8750042B2 (en) | 2011-07-28 | 2011-12-21 | Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures |
PCT/US2012/048094 WO2013016401A1 (en) | 2011-07-28 | 2012-07-25 | Simultaneous sensing of multiple wordlines and detection of nand failures |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140065393A true KR20140065393A (ko) | 2014-05-29 |
KR101835174B1 KR101835174B1 (ko) | 2018-03-06 |
Family
ID=46604587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147004270A KR101835174B1 (ko) | 2011-07-28 | 2012-07-25 | 복수 워드라인의 동시적 감지 및 nand 고장의 검출 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8750042B2 (ko) |
EP (1) | EP2737487A1 (ko) |
KR (1) | KR101835174B1 (ko) |
WO (1) | WO2013016401A1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170092176A (ko) * | 2016-02-02 | 2017-08-11 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20170142714A (ko) * | 2016-06-20 | 2017-12-28 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20210000308A (ko) * | 2018-05-21 | 2021-01-04 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 셀 프로빙에 의한 고장 예측 |
KR20210080582A (ko) * | 2019-06-26 | 2021-06-30 | 샌디스크 테크놀로지스 엘엘씨 | 3d nand를 위한 소스측 프로그램, 방법 및 장치 |
Families Citing this family (105)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8724381B2 (en) * | 2008-03-11 | 2014-05-13 | Agere Systems Llc | Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding |
US8750042B2 (en) * | 2011-07-28 | 2014-06-10 | Sandisk Technologies Inc. | Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures |
US9047214B1 (en) | 2012-05-22 | 2015-06-02 | Pmc-Sierra, Inc. | System and method for tolerating a failed page in a flash device |
US9021336B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages |
US9176812B1 (en) | 2012-05-22 | 2015-11-03 | Pmc-Sierra, Inc. | Systems and methods for storing data in page stripes of a flash drive |
US9021333B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for recovering data from failed portions of a flash drive |
US9183085B1 (en) | 2012-05-22 | 2015-11-10 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency |
US9021337B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive |
KR20140005697A (ko) * | 2012-07-06 | 2014-01-15 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그의 동작 방법 |
US9490035B2 (en) | 2012-09-28 | 2016-11-08 | SanDisk Technologies, Inc. | Centralized variable rate serializer and deserializer for bad column management |
US8792279B2 (en) | 2012-11-09 | 2014-07-29 | Sandisk Technologies Inc. | Architectures for data analytics using computational NAND memory |
US8780634B2 (en) | 2012-11-09 | 2014-07-15 | Sandisk Technologies Inc. | CAM NAND with OR function and full chip search capability |
US8780632B2 (en) | 2012-11-09 | 2014-07-15 | Sandisk Technologies Inc. | De-duplication techniques using NAND flash based content addressable memory |
US9116796B2 (en) | 2012-11-09 | 2015-08-25 | Sandisk Technologies Inc. | Key-value addressed storage drive using NAND flash based content addressable memory |
US8773909B2 (en) | 2012-11-09 | 2014-07-08 | Sandisk Technologies Inc. | CAM NAND with or function and full chip search capability |
US8811085B2 (en) | 2012-11-09 | 2014-08-19 | Sandisk Technologies Inc. | On-device data analytics using NAND flash based intelligent memory |
US8780635B2 (en) | 2012-11-09 | 2014-07-15 | Sandisk Technologies Inc. | Use of bloom filter and improved program algorithm for increased data protection in CAM NAND memory |
US8817541B2 (en) | 2012-11-09 | 2014-08-26 | Sandisk Technologies Inc. | Data search using bloom filters and NAND based content addressable memory |
US8780633B2 (en) | 2012-11-09 | 2014-07-15 | SanDisk Technologies, Inc. | De-duplication system using NAND flash based content addressable memory |
US8634248B1 (en) | 2012-11-09 | 2014-01-21 | Sandisk Technologies Inc. | On-device data analytics using NAND flash based intelligent memory |
US9171620B2 (en) | 2012-11-29 | 2015-10-27 | Sandisk Technologies Inc. | Weighted read scrub for nonvolatile memory |
JP2014175022A (ja) * | 2013-03-06 | 2014-09-22 | Toshiba Corp | 半導体記憶装置及びそのデータ書き込み方法 |
US9075424B2 (en) | 2013-03-06 | 2015-07-07 | Sandisk Technologies Inc. | Compensation scheme to improve the stability of the operational amplifiers |
US9208018B1 (en) | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
US9081701B1 (en) | 2013-03-15 | 2015-07-14 | Pmc-Sierra, Inc. | Systems and methods for decoding data for solid-state memory |
US9026867B1 (en) * | 2013-03-15 | 2015-05-05 | Pmc-Sierra, Inc. | Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory |
US9053012B1 (en) | 2013-03-15 | 2015-06-09 | Pmc-Sierra, Inc. | Systems and methods for storing data for solid-state memory |
US9009565B1 (en) | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US20150006784A1 (en) | 2013-06-27 | 2015-01-01 | Sandisk Technologies Inc. | Efficient Post Write Read in Three Dimensional Nonvolatile Memory |
US8964480B2 (en) * | 2013-07-01 | 2015-02-24 | Sandisk Technologies Inc. | Detecting programmed word lines based on NAND string current |
TWI509624B (zh) * | 2013-07-01 | 2015-11-21 | Asolid Technology Co Ltd | 快閃記憶體裝置、記憶體控制器及快閃記憶體的控制方法 |
US9063671B2 (en) | 2013-07-02 | 2015-06-23 | Sandisk Technologies Inc. | Write operations with full sequence programming for defect management in nonvolatile memory |
US9218242B2 (en) | 2013-07-02 | 2015-12-22 | Sandisk Technologies Inc. | Write operations for defect management in nonvolatile memory |
US9459956B2 (en) | 2013-07-19 | 2016-10-04 | Seagate Technology Llc | Data decoder with trapping set flip bit mapper |
US9880926B1 (en) * | 2013-08-20 | 2018-01-30 | Seagate Technology Llc | Log structured reserved zone for a data storage device |
US9152497B2 (en) | 2013-08-23 | 2015-10-06 | Sandisk Technologies Inc. | Data recovery from blocks with gate shorts |
CN105531768B (zh) * | 2013-08-30 | 2019-12-31 | 英派尔科技开发有限公司 | 闪存中功率消耗的减小 |
US9165683B2 (en) | 2013-09-23 | 2015-10-20 | Sandisk Technologies Inc. | Multi-word line erratic programming detection |
US9235470B2 (en) | 2013-10-03 | 2016-01-12 | SanDisk Technologies, Inc. | Adaptive EPWR (enhanced post write read) scheduling |
US20150103593A1 (en) * | 2013-10-14 | 2015-04-16 | Skymedi Corporation | Method of Writing Data in Non-Volatile Memory and Non-Volatile Storage Device Using the Same |
US9501400B2 (en) | 2013-11-13 | 2016-11-22 | Sandisk Technologies Llc | Identification and operation of sub-prime blocks in nonvolatile memory |
US9043537B1 (en) | 2013-11-21 | 2015-05-26 | Sandisk Technologies Inc. | Update block programming order |
US9123414B2 (en) * | 2013-11-22 | 2015-09-01 | Micron Technology, Inc. | Memory systems and memory programming methods |
US9317361B2 (en) | 2013-11-27 | 2016-04-19 | Seagate Technology Llc | Bit-line defect detection using unsatisfied parity code checks |
US9058881B1 (en) | 2013-12-05 | 2015-06-16 | Sandisk Technologies Inc. | Systems and methods for partial page programming of multi level cells |
US9244631B2 (en) | 2013-12-06 | 2016-01-26 | Sandisk Technologies Inc. | Lower page only host burst writes |
US9336875B2 (en) | 2013-12-16 | 2016-05-10 | Micron Technology, Inc. | Memory systems and memory programming methods |
US9208023B2 (en) | 2013-12-23 | 2015-12-08 | Sandisk Technologies Inc. | Systems and methods for scheduling post-write read in nonvolatile memory |
US9269432B2 (en) * | 2014-01-09 | 2016-02-23 | Micron Technology, Inc. | Memory systems and memory programming methods |
US9230689B2 (en) | 2014-03-17 | 2016-01-05 | Sandisk Technologies Inc. | Finding read disturbs on non-volatile memories |
US9323607B2 (en) * | 2014-04-29 | 2016-04-26 | Seagate Technology Llc | Data recovery once ECC fails to correct the data |
US8902652B1 (en) | 2014-05-13 | 2014-12-02 | Sandisk Technologies Inc. | Systems and methods for lower page writes |
US8886877B1 (en) | 2014-05-15 | 2014-11-11 | Sandisk Technologies Inc. | In-situ block folding for nonvolatile memory |
US9443612B2 (en) | 2014-07-10 | 2016-09-13 | Sandisk Technologies Llc | Determination of bit line to low voltage signal shorts |
US9514835B2 (en) | 2014-07-10 | 2016-12-06 | Sandisk Technologies Llc | Determination of word line to word line shorts between adjacent blocks |
US9460809B2 (en) | 2014-07-10 | 2016-10-04 | Sandisk Technologies Llc | AC stress mode to screen out word line to word line shorts |
US9484086B2 (en) | 2014-07-10 | 2016-11-01 | Sandisk Technologies Llc | Determination of word line to local source line shorts |
US9804922B2 (en) | 2014-07-21 | 2017-10-31 | Sandisk Technologies Llc | Partial bad block detection and re-use using EPWR for block based architectures |
US9727459B2 (en) | 2014-08-22 | 2017-08-08 | Seagate Technology Llc | Non-volatile, solid-state memory configured to perform logical combination of two or more blocks sharing series-connected bit lines |
US9202593B1 (en) | 2014-09-02 | 2015-12-01 | Sandisk Technologies Inc. | Techniques for detecting broken word lines in non-volatile memories |
US9240249B1 (en) | 2014-09-02 | 2016-01-19 | Sandisk Technologies Inc. | AC stress methods to screen out bit line defects |
US9449694B2 (en) * | 2014-09-04 | 2016-09-20 | Sandisk Technologies Llc | Non-volatile memory with multi-word line select for defect detection operations |
US9411669B2 (en) * | 2014-09-11 | 2016-08-09 | Sandisk Technologies Llc | Selective sampling of data stored in nonvolatile memory |
US9558064B2 (en) * | 2015-01-28 | 2017-01-31 | Micron Technology, Inc. | Estimating an error rate associated with memory |
US10055267B2 (en) | 2015-03-04 | 2018-08-21 | Sandisk Technologies Llc | Block management scheme to handle cluster failures in non-volatile memory |
US9659666B2 (en) | 2015-08-31 | 2017-05-23 | Sandisk Technologies Llc | Dynamic memory recovery at the sub-block level |
US9858009B2 (en) | 2015-10-26 | 2018-01-02 | Sandisk Technologies Llc | Data folding in 3D nonvolatile memory |
US9569143B1 (en) * | 2015-12-11 | 2017-02-14 | Sandisk Technologies Llc | In block data folding for 3D non-volatile storage |
US9698676B1 (en) | 2016-03-11 | 2017-07-04 | Sandisk Technologies Llc | Charge pump based over-sampling with uniform step size for current detection |
TWI606333B (zh) * | 2016-04-15 | 2017-11-21 | 群聯電子股份有限公司 | 資料處理方法、記憶體儲存裝置及記憶體控制電路單元 |
US9711227B1 (en) * | 2016-04-28 | 2017-07-18 | Sandisk Technologies Llc | Non-volatile memory with in field failure prediction using leakage detection |
CN106126052A (zh) | 2016-06-23 | 2016-11-16 | 北京小米移动软件有限公司 | 文本选择方法及装置 |
US9703494B1 (en) * | 2016-09-26 | 2017-07-11 | Intel Corporation | Method and apparatus for protecting lower page data during programming in NAND flash |
TWI645290B (zh) * | 2016-10-11 | 2018-12-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料寫入方法 |
KR20180104263A (ko) * | 2017-03-10 | 2018-09-20 | 에스케이하이닉스 주식회사 | 전반적인 건강상태 파악을 위한 대표 페이지를 갖는 비휘발성 메모리 시스템 및 그 비휘발성 메모리 시스템에서의 건강 상태 파악 방법 |
US9996458B1 (en) * | 2017-07-12 | 2018-06-12 | Nxp Usa, Inc. | Memory sector retirement in a non-volatile memory |
US10249382B2 (en) * | 2017-08-22 | 2019-04-02 | Sandisk Technologies Llc | Determination of fast to program word lines in non-volatile memory |
US11068606B2 (en) * | 2017-09-20 | 2021-07-20 | Citrix Systems, Inc. | Secured encrypted shared cloud storage |
US12014770B2 (en) | 2017-10-17 | 2024-06-18 | R&D3 Llc | Memory device having variable impedance memory cells and time-to-transition sensing of data stored therein |
US10269413B1 (en) * | 2017-10-17 | 2019-04-23 | R&D 3 Llc | Memory device having variable impedance memory cells and time-to-transition sensing of data stored therein |
US11501826B2 (en) | 2017-10-17 | 2022-11-15 | R&D3 Llc | Memory device having variable impedance memory cells and time-to-transition sensing of data stored therein |
US10977186B2 (en) * | 2017-11-21 | 2021-04-13 | Micron Technology, Inc. | Last written page searching |
US10438656B2 (en) * | 2017-12-18 | 2019-10-08 | Intel Corporation | System and method for performing a concurrent multiple page read of a memory array |
US10698610B2 (en) * | 2018-02-23 | 2020-06-30 | Western Digital Technologies, Inc. | Storage system and method for performing high-speed read and write operations |
US10678636B2 (en) * | 2018-02-28 | 2020-06-09 | Intel Corporation | Techniques for detecting and correcting errors in data |
US10923462B2 (en) * | 2018-05-01 | 2021-02-16 | Western Digital Technologies, Inc. | Bifurcated memory die module semiconductor device |
WO2019212623A1 (en) * | 2018-05-01 | 2019-11-07 | Western Digital Technologies, Inc. | Bifurcated memory die module semiconductor device |
US11137916B2 (en) * | 2018-06-28 | 2021-10-05 | Intel Corporation | Selective background data refresh for SSDs |
US11189662B2 (en) | 2018-08-13 | 2021-11-30 | Micron Technology | Memory cell stack and via formation for a memory device |
US11216349B2 (en) | 2018-10-12 | 2022-01-04 | Micron Technology, Inc. | Reactive read based on metrics to screen defect prone memory blocks |
US10672469B1 (en) | 2018-11-30 | 2020-06-02 | Macronix International Co., Ltd. | In-memory convolution for machine learning |
US11061762B2 (en) * | 2019-02-04 | 2021-07-13 | Intel Corporation | Memory programming techniques |
US11393546B2 (en) * | 2019-07-19 | 2022-07-19 | Silicon Storage Technology, Inc. | Testing circuitry and methods for analog neural memory in artificial neural network |
US11449741B2 (en) | 2019-07-19 | 2022-09-20 | Silicon Storage Technology, Inc. | Testing circuitry and methods for analog neural memory in artificial neural network |
US11373695B2 (en) | 2019-12-18 | 2022-06-28 | Micron Technology, Inc. | Memory accessing with auto-precharge |
KR20210096425A (ko) | 2020-01-28 | 2021-08-05 | 삼성전자주식회사 | 비휘발성 메모리 장치 |
KR20210132784A (ko) | 2020-04-27 | 2021-11-05 | 삼성전자주식회사 | 메모리 장치 및 메모리 장치로부터 데이터를 읽는 방법 |
US10998041B1 (en) * | 2020-05-07 | 2021-05-04 | Western Digital Technologies, Inc. | Calibrating non-volatile memory read thresholds |
US11579968B2 (en) * | 2020-08-26 | 2023-02-14 | Micron Technology, Inc. | Efficient management of failed memory blocks in memory sub-systems |
TWI739598B (zh) * | 2020-09-15 | 2021-09-11 | 力旺電子股份有限公司 | 運用於多階型記憶胞陣列之編程與驗證方法 |
KR20220041574A (ko) | 2020-09-25 | 2022-04-01 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그 동작 방법 |
US11995320B2 (en) * | 2021-06-08 | 2024-05-28 | Micron Technology, Inc. | Scan fragmentation in memory devices |
US11816353B2 (en) | 2021-12-20 | 2023-11-14 | Western Digital Technologies, Inc. | Parity data for non-volatile storage |
US11972815B2 (en) | 2022-05-10 | 2024-04-30 | Sandisk Technologies, Llc | Post-write read techniques to improve programming reliability in a memory device |
US20240038311A1 (en) * | 2022-07-27 | 2024-02-01 | Micron Technology, Inc. | Reliability based data verification |
Family Cites Families (147)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5095344A (en) | 1988-06-08 | 1992-03-10 | Eliyahou Harari | Highly compact eprom and flash eeprom devices |
US5070032A (en) | 1989-03-15 | 1991-12-03 | Sundisk Corporation | Method of making dense flash eeprom semiconductor memory structures |
US5172338B1 (en) | 1989-04-13 | 1997-07-08 | Sandisk Corp | Multi-state eeprom read and write circuits and techniques |
US5343063A (en) | 1990-12-18 | 1994-08-30 | Sundisk Corporation | Dense vertical programmable read only memory cell structure and processes for making them |
KR960002006B1 (ko) | 1991-03-12 | 1996-02-09 | 가부시끼가이샤 도시바 | 2개의 기준 레벨을 사용하는 기록 검증 제어기를 갖는 전기적으로 소거 가능하고 프로그램 가능한 불휘발성 메모리 장치 |
US5602789A (en) | 1991-03-12 | 1997-02-11 | Kabushiki Kaisha Toshiba | Electrically erasable and programmable non-volatile and multi-level memory systemn with write-verify controller |
US5313421A (en) | 1992-01-14 | 1994-05-17 | Sundisk Corporation | EEPROM with split gate source side injection |
US6222762B1 (en) | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5657332A (en) | 1992-05-20 | 1997-08-12 | Sandisk Corporation | Soft errors handling in EEPROM devices |
US5315541A (en) | 1992-07-24 | 1994-05-24 | Sundisk Corporation | Segmented column memory array |
US5428621A (en) | 1992-09-21 | 1995-06-27 | Sundisk Corporation | Latent defect handling in EEPROM devices |
US5452251A (en) | 1992-12-03 | 1995-09-19 | Fujitsu Limited | Semiconductor memory device for selecting and deselecting blocks of word lines |
US5335198A (en) | 1993-05-06 | 1994-08-02 | Advanced Micro Devices, Inc. | Flash EEPROM array with high endurance |
KR0169267B1 (ko) | 1993-09-21 | 1999-02-01 | 사토 후미오 | 불휘발성 반도체 기억장치 |
US5436587A (en) | 1993-11-24 | 1995-07-25 | Sundisk Corporation | Charge pump circuit with exponetral multiplication |
US5661053A (en) | 1994-05-25 | 1997-08-26 | Sandisk Corporation | Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers |
US5822256A (en) | 1994-09-06 | 1998-10-13 | Intel Corporation | Method and circuitry for usage of partially functional nonvolatile memory |
EP0709782B1 (en) | 1994-10-25 | 1999-03-03 | Hewlett-Packard Company | Error detection system and method for mirrored memory between dual disk storage controllers |
US5671388A (en) | 1995-05-03 | 1997-09-23 | Intel Corporation | Method and apparatus for performing write operations in multi-level cell storage device |
JP3487690B2 (ja) * | 1995-06-20 | 2004-01-19 | シャープ株式会社 | 不揮発性半導体記憶装置 |
US5903495A (en) | 1996-03-18 | 1999-05-11 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
JP3200012B2 (ja) | 1996-04-19 | 2001-08-20 | 株式会社東芝 | 記憶システム |
US5768192A (en) | 1996-07-23 | 1998-06-16 | Saifun Semiconductors, Ltd. | Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping |
US6134148A (en) | 1997-09-30 | 2000-10-17 | Hitachi, Ltd. | Semiconductor integrated circuit and data processing system |
US6134140A (en) | 1997-05-14 | 2000-10-17 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory device with soft-programming to adjust erased state of memory cells |
US5930167A (en) | 1997-07-30 | 1999-07-27 | Sandisk Corporation | Multi-state non-volatile flash memory capable of being its own two state write cache |
US6768165B1 (en) | 1997-08-01 | 2004-07-27 | Saifun Semiconductors Ltd. | Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping |
US5867429A (en) | 1997-11-19 | 1999-02-02 | Sandisk Corporation | High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates |
US6208542B1 (en) | 1998-06-30 | 2001-03-27 | Sandisk Corporation | Techniques for storing digital data in an analog or multilevel memory |
US6185709B1 (en) | 1998-06-30 | 2001-02-06 | International Business Machines Corporation | Device for indicating the fixability of a logic circuit |
US6215697B1 (en) | 1999-01-14 | 2001-04-10 | Macronix International Co., Ltd. | Multi-level memory cell device and method for self-converged programming |
US6219286B1 (en) | 1999-06-04 | 2001-04-17 | Matsushita Electric Industrial Co., Ltd. | Semiconductor memory having reduced time for writing defective information |
US7333364B2 (en) | 2000-01-06 | 2008-02-19 | Super Talent Electronics, Inc. | Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory |
US6219276B1 (en) | 2000-02-25 | 2001-04-17 | Advanced Micro Devices, Inc. | Multilevel cell programming |
US6205055B1 (en) | 2000-02-25 | 2001-03-20 | Advanced Micro Devices, Inc. | Dynamic memory cell programming voltage |
US6483448B2 (en) | 2000-06-28 | 2002-11-19 | Texas Instruments Incorporated | System and method for reducing timing mismatch in sample and hold circuits using an FFT and decimation |
US6345001B1 (en) | 2000-09-14 | 2002-02-05 | Sandisk Corporation | Compressed event counting technique and application to a flash memory system |
JP4323707B2 (ja) | 2000-10-25 | 2009-09-02 | 富士通マイクロエレクトロニクス株式会社 | フラッシュメモリの欠陥管理方法 |
US6349056B1 (en) | 2000-12-28 | 2002-02-19 | Sandisk Corporation | Method and structure for efficient data verification operation for non-volatile memories |
ITMI20011619A1 (it) | 2001-07-26 | 2003-01-26 | Montefibre Spa | Procedimento per la preparazione di materiali in fibra acrilica idrorepellenti |
US7170802B2 (en) | 2003-12-31 | 2007-01-30 | Sandisk Corporation | Flexible and area efficient column redundancy for non-volatile memories |
US6456528B1 (en) | 2001-09-17 | 2002-09-24 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
KR100463197B1 (ko) | 2001-12-24 | 2004-12-23 | 삼성전자주식회사 | 멀티-페이지 프로그램 동작, 멀티-페이지 읽기 동작,그리고 멀티-블록 소거 동작을 갖는 낸드 플래시 메모리장치 |
US6751766B2 (en) | 2002-05-20 | 2004-06-15 | Sandisk Corporation | Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data |
US6781897B2 (en) | 2002-08-01 | 2004-08-24 | Infineon Technologies Flash Ltd. | Defects detection |
JP4063615B2 (ja) | 2002-08-30 | 2008-03-19 | Necエレクトロニクス株式会社 | 不揮発性メモリおよびその書き込み処理方法 |
US6861894B2 (en) | 2002-09-27 | 2005-03-01 | Sandisk Corporation | Charge pump with Fibonacci number multiplication |
US6657891B1 (en) | 2002-11-29 | 2003-12-02 | Kabushiki Kaisha Toshiba | Semiconductor memory device for storing multivalued data |
US7707621B2 (en) | 2002-12-02 | 2010-04-27 | Silverbrook Research Pty Ltd | Creation and usage of mutually exclusive messages |
US7073103B2 (en) | 2002-12-05 | 2006-07-04 | Sandisk Corporation | Smart verify for multi-state memories |
JP4593159B2 (ja) | 2003-05-28 | 2010-12-08 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US6914823B2 (en) | 2003-07-29 | 2005-07-05 | Sandisk Corporation | Detecting over programmed memory after further programming |
US6917542B2 (en) | 2003-07-29 | 2005-07-12 | Sandisk Corporation | Detecting over programmed memory |
US6922096B2 (en) | 2003-08-07 | 2005-07-26 | Sandisk Corporation | Area efficient charge pump |
JP2005108304A (ja) | 2003-09-29 | 2005-04-21 | Toshiba Corp | 半導体記憶装置及びその制御方法 |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
KR100719380B1 (ko) | 2006-03-31 | 2007-05-18 | 삼성전자주식회사 | 향상된 신뢰성 특성을 갖는 다치 플래시 메모리 장치 및그것을 포함한 메모리 시스템 |
US7020017B2 (en) | 2004-04-06 | 2006-03-28 | Sandisk Corporation | Variable programming of non-volatile memory |
WO2005104136A1 (ja) | 2004-04-21 | 2005-11-03 | Spansion Llc | 不揮発性半導体装置および不揮発性半導体装置の消去動作不良自動救済方法 |
US7030683B2 (en) | 2004-05-10 | 2006-04-18 | Sandisk Corporation | Four phase charge pump operable without phase overlap with improved efficiency |
US7009889B2 (en) | 2004-05-28 | 2006-03-07 | Sandisk Corporation | Comprehensive erase verification for non-volatile memory |
US7603528B2 (en) | 2004-10-08 | 2009-10-13 | International Business Machines Corporation | Memory device verification of multiple write operations |
US7050344B1 (en) | 2004-11-04 | 2006-05-23 | Promos Technologies Inc. | Failure test method for split gate flash memory |
JP4410188B2 (ja) | 2004-11-12 | 2010-02-03 | 株式会社東芝 | 半導体記憶装置のデータ書き込み方法 |
US7120051B2 (en) | 2004-12-14 | 2006-10-10 | Sandisk Corporation | Pipelined programming of non-volatile memories using early data |
US7158421B2 (en) | 2005-04-01 | 2007-01-02 | Sandisk Corporation | Use of data latches in multi-phase programming of non-volatile memories |
US20060140007A1 (en) | 2004-12-29 | 2006-06-29 | Raul-Adrian Cernea | Non-volatile memory and method with shared processing for an aggregate of read/write circuits |
JP4660243B2 (ja) | 2005-03-28 | 2011-03-30 | 株式会社東芝 | 半導体記憶装置 |
US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
US7187585B2 (en) | 2005-04-05 | 2007-03-06 | Sandisk Corporation | Read operation for non-volatile storage that includes compensation for coupling |
US7362616B2 (en) | 2005-07-28 | 2008-04-22 | Stmicroelectronics S.R.L. | NAND flash memory with erase verify based on shorter evaluation time |
KR101012129B1 (ko) | 2005-08-01 | 2011-02-07 | 샌디스크 코포레이션 | 자기 조정 최대 프로그램 루프에 의한 비휘발성 메모리의프로그래밍 |
WO2007023674A1 (ja) | 2005-08-22 | 2007-03-01 | Matsushita Electric Industrial Co., Ltd. | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 |
US20070126494A1 (en) | 2005-12-06 | 2007-06-07 | Sandisk Corporation | Charge pump having shunt diode for improved operating efficiency |
US20070139099A1 (en) | 2005-12-16 | 2007-06-21 | Sandisk Corporation | Charge pump regulation control for improved power efficiency |
US7355889B2 (en) | 2005-12-19 | 2008-04-08 | Sandisk Corporation | Method for programming non-volatile memory with reduced program disturb using modified pass voltages |
US7428180B2 (en) | 2006-01-25 | 2008-09-23 | Samsung Electronics Co., Ltd. | Semiconductor memory devices and methods of testing for failed bits of semiconductor memory devices |
US8582266B2 (en) | 2006-02-17 | 2013-11-12 | Broadcom Corporation | Current-monitoring apparatus |
US7304893B1 (en) | 2006-06-30 | 2007-12-04 | Sandisk Corporation | Method of partial page fail bit detection in flash memory devices |
US7554311B2 (en) | 2006-07-31 | 2009-06-30 | Sandisk Corporation | Hybrid charge pump regulation |
US7599223B2 (en) | 2006-09-12 | 2009-10-06 | Sandisk Corporation | Non-volatile memory with linear estimation of initial programming voltage |
US7368979B2 (en) | 2006-09-19 | 2008-05-06 | Sandisk Corporation | Implementation of output floating scheme for hv charge pumps |
JP2008077810A (ja) | 2006-09-25 | 2008-04-03 | Toshiba Corp | 不揮発性半導体記憶装置 |
US7716538B2 (en) | 2006-09-27 | 2010-05-11 | Sandisk Corporation | Memory with cell population distribution assisted read margining |
US7440319B2 (en) | 2006-11-27 | 2008-10-21 | Sandisk Corporation | Apparatus with segmented bitscan for verification of programming |
US7616499B2 (en) | 2006-12-28 | 2009-11-10 | Sandisk Corporation | Retention margin program verification |
US8122319B2 (en) | 2007-01-24 | 2012-02-21 | Charles I. Peddle | Page-based failure management for flash memory |
KR100873825B1 (ko) | 2007-05-02 | 2008-12-15 | 삼성전자주식회사 | 비휘발성 메모리의 멀티 비트 프로그래밍 장치 및 방법 |
US7446596B1 (en) | 2007-05-25 | 2008-11-04 | Atmel Corporation | Low voltage charge pump |
US9607408B2 (en) | 2007-06-08 | 2017-03-28 | Apple Inc. | Rendering semi-transparent user interface elements |
US7599225B2 (en) | 2007-07-13 | 2009-10-06 | Macronix International Co., Ltd. | Method of programming and erasing a non-volatile memory array |
US7532513B2 (en) | 2007-08-27 | 2009-05-12 | Macronix International Co., Ltd. | Apparatus and method for detecting word line leakage in memory devices |
US8044705B2 (en) | 2007-08-28 | 2011-10-25 | Sandisk Technologies Inc. | Bottom plate regulation of charge pumps |
US20090058507A1 (en) | 2007-08-28 | 2009-03-05 | Prajit Nandi | Bottom Plate Regulated Charge Pump |
KR101393622B1 (ko) | 2007-08-30 | 2014-05-13 | 삼성전자주식회사 | 멀티 비트 플래시 메모리 장치를 포함하는 시스템 및그것의 데이터 처리 방법 |
JP4510060B2 (ja) | 2007-09-14 | 2010-07-21 | 株式会社東芝 | 不揮発性半導体記憶装置の読み出し/書き込み制御方法 |
US7864588B2 (en) * | 2007-09-17 | 2011-01-04 | Spansion Israel Ltd. | Minimizing read disturb in an array flash cell |
US8527819B2 (en) | 2007-10-19 | 2013-09-03 | Apple Inc. | Data storage in analog memory cell arrays having erase failures |
US7945825B2 (en) | 2007-11-25 | 2011-05-17 | Spansion Isreal, Ltd | Recovery while programming non-volatile memory (NVM) |
WO2009072104A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith |
US7586362B2 (en) | 2007-12-12 | 2009-09-08 | Sandisk Corporation | Low voltage charge pump with regulation |
KR101378349B1 (ko) | 2008-01-30 | 2014-03-28 | 삼성전자주식회사 | 메모리 장치 및 메모리 데이터 읽기 방법 |
EP2595062B1 (en) | 2008-02-28 | 2016-12-28 | Fujitsu Limited | Storage device, storage control device, data transfer integrated circuit, and storage control method |
US7979626B2 (en) | 2008-05-13 | 2011-07-12 | Microsoft Corporation | Flash recovery employing transaction log |
JP5072718B2 (ja) | 2008-06-02 | 2012-11-14 | 株式会社東芝 | 信号受信装置 |
US7969235B2 (en) | 2008-06-09 | 2011-06-28 | Sandisk Corporation | Self-adaptive multi-stage charge pump |
KR101464255B1 (ko) | 2008-06-23 | 2014-11-25 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것을 포함한 시스템 |
US8710907B2 (en) | 2008-06-24 | 2014-04-29 | Sandisk Technologies Inc. | Clock generator circuit for a charge pump |
US7683700B2 (en) | 2008-06-25 | 2010-03-23 | Sandisk Corporation | Techniques of ripple reduction for charge pumps |
US7864578B2 (en) | 2008-06-30 | 2011-01-04 | Kabushiki Kaisha Toshiba | Semiconductor memory repairing a defective bit and semiconductor memory system |
KR20100012605A (ko) | 2008-07-29 | 2010-02-08 | 삼성전자주식회사 | Ecc를 이용하여 프로그램하는 불휘발성 메모리 장치 및그 프로그램 방법 |
JP2010055719A (ja) | 2008-08-29 | 2010-03-11 | Toshiba Corp | 抵抗変化メモリ装置 |
US8315825B2 (en) | 2008-09-18 | 2012-11-20 | Enraf B.V. | Method and apparatus for adaptively handling level measurements under unstable conditions |
US8069300B2 (en) | 2008-09-30 | 2011-11-29 | Micron Technology, Inc. | Solid state storage device controller with expansion mode |
US7768836B2 (en) | 2008-10-10 | 2010-08-03 | Sandisk Corporation | Nonvolatile memory and method with reduced program verify by ignoring fastest and/or slowest programming bits |
US7795952B2 (en) | 2008-12-17 | 2010-09-14 | Sandisk Corporation | Regulation of recovery rates in charge pumps |
US8244960B2 (en) | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8040744B2 (en) | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US8700840B2 (en) | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US20100174845A1 (en) | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8094500B2 (en) | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
EP2411982A2 (en) | 2009-03-24 | 2012-02-01 | Rambus Inc. | Pulse control for nonvolatile memory |
US8042011B2 (en) | 2009-04-28 | 2011-10-18 | Synopsys, Inc. | Runtime programmable BIST for testing a multi-port memory device |
US8027195B2 (en) | 2009-06-05 | 2011-09-27 | SanDisk Technologies, Inc. | Folding data stored in binary format into multi-state format within non-volatile memory devices |
US8102705B2 (en) | 2009-06-05 | 2012-01-24 | Sandisk Technologies Inc. | Structure and method for shuffling data within non-volatile memory devices |
KR101626548B1 (ko) | 2009-07-15 | 2016-06-01 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템, 및 그것의 프로그램 방법 |
US7973592B2 (en) | 2009-07-21 | 2011-07-05 | Sandisk Corporation | Charge pump with current based regulation |
KR101581857B1 (ko) | 2009-08-06 | 2015-12-31 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 인터리브 유닛 구성 방법 |
US8400854B2 (en) | 2009-09-11 | 2013-03-19 | Sandisk Technologies Inc. | Identifying at-risk data in non-volatile storage |
US8402217B2 (en) | 2009-09-15 | 2013-03-19 | Marvell International Ltd. | Implementing RAID in solid state memory |
US8634240B2 (en) | 2009-10-28 | 2014-01-21 | SanDisk Technologies, Inc. | Non-volatile memory and method with accelerated post-write read to manage errors |
US8214700B2 (en) | 2009-10-28 | 2012-07-03 | Sandisk Technologies Inc. | Non-volatile memory and method with post-write read and adaptive re-write to manage errors |
US8423866B2 (en) | 2009-10-28 | 2013-04-16 | SanDisk Technologies, Inc. | Non-volatile memory and method with post-write read and adaptive re-write to manage errors |
US8230255B2 (en) | 2009-12-15 | 2012-07-24 | International Business Machines Corporation | Blocking write acces to memory modules of a solid state drive |
US20110148509A1 (en) | 2009-12-17 | 2011-06-23 | Feng Pan | Techniques to Reduce Charge Pump Overshoot |
US8054684B2 (en) | 2009-12-18 | 2011-11-08 | Sandisk Technologies Inc. | Non-volatile memory and method with atomic program sequence and write abort detection |
US8725935B2 (en) | 2009-12-18 | 2014-05-13 | Sandisk Technologies Inc. | Balanced performance for on-chip folding of non-volatile memories |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8248850B2 (en) | 2010-01-28 | 2012-08-21 | Sandisk Technologies Inc. | Data recovery for non-volatile memory based on count of data state-specific fails |
US8305807B2 (en) | 2010-07-09 | 2012-11-06 | Sandisk Technologies Inc. | Detection of broken word-lines in memory arrays |
US8514630B2 (en) | 2010-07-09 | 2013-08-20 | Sandisk Technologies Inc. | Detection of word-line leakage in memory arrays: current based approach |
US8432732B2 (en) | 2010-07-09 | 2013-04-30 | Sandisk Technologies Inc. | Detection of word-line leakage in memory arrays |
KR101772020B1 (ko) | 2011-05-30 | 2017-08-29 | 삼성전자주식회사 | 불휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템 |
US20130031431A1 (en) * | 2011-07-28 | 2013-01-31 | Eran Sharon | Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats |
US8750042B2 (en) * | 2011-07-28 | 2014-06-10 | Sandisk Technologies Inc. | Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures |
US8726104B2 (en) * | 2011-07-28 | 2014-05-13 | Sandisk Technologies Inc. | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages |
US8775901B2 (en) * | 2011-07-28 | 2014-07-08 | SanDisk Technologies, Inc. | Data recovery for defective word lines during programming of non-volatile memory arrays |
-
2011
- 2011-12-21 US US13/332,780 patent/US8750042B2/en active Active
-
2012
- 2012-07-25 EP EP12743323.3A patent/EP2737487A1/en not_active Withdrawn
- 2012-07-25 KR KR1020147004270A patent/KR101835174B1/ko active IP Right Grant
- 2012-07-25 WO PCT/US2012/048094 patent/WO2013016401A1/en active Application Filing
-
2014
- 2014-04-21 US US14/257,211 patent/US8873288B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170092176A (ko) * | 2016-02-02 | 2017-08-11 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20170142714A (ko) * | 2016-06-20 | 2017-12-28 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20210000308A (ko) * | 2018-05-21 | 2021-01-04 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 셀 프로빙에 의한 고장 예측 |
KR20210080582A (ko) * | 2019-06-26 | 2021-06-30 | 샌디스크 테크놀로지스 엘엘씨 | 3d nand를 위한 소스측 프로그램, 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
WO2013016401A1 (en) | 2013-01-31 |
US8873288B2 (en) | 2014-10-28 |
EP2737487A1 (en) | 2014-06-04 |
US8750042B2 (en) | 2014-06-10 |
US20130028021A1 (en) | 2013-01-31 |
WO2013016401A4 (en) | 2013-03-21 |
KR101835174B1 (ko) | 2018-03-06 |
US20140254272A1 (en) | 2014-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101835174B1 (ko) | 복수 워드라인의 동시적 감지 및 nand 고장의 검출 | |
KR101838340B1 (ko) | 복수 페이지들의 조합된 검증을 사용한 가속화된 기입후 판독을 가진 비휘발성 메모리 및 방법 | |
KR101727349B1 (ko) | 비휘발성 메모리 및 오류들을 관리하기 위한 가속화된 기입후 판독을 사용한 방법 | |
KR20140064785A (ko) | 2진 포맷 및 복수-상태 포맷으로 기입된 데이터의 비교를 사용한 비휘발성 메모리들에서 기입후 판독 | |
US9165683B2 (en) | Multi-word line erratic programming detection | |
KR101621584B1 (ko) | 비휘발성 메모리 및 오류들을 관리하기 위한 기입후 판독 및 적응형 재기입을 사용한 방법 | |
JP5596791B2 (ja) | エラーを管理するための書き込み後読み出しおよび適応再書き込みを伴う不揮発性メモリおよび方法 | |
US8566671B1 (en) | Configurable accelerated post-write read to manage errors | |
US9213601B2 (en) | Adaptive data re-compaction after post-write read verification operations | |
US20130031429A1 (en) | Data Recovery for Defective Word Lines During Programming of Non-Volatile Memory Arrays |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right |