KR101621584B1 - 비휘발성 메모리 및 오류들을 관리하기 위한 기입후 판독 및 적응형 재기입을 사용한 방법 - Google Patents

비휘발성 메모리 및 오류들을 관리하기 위한 기입후 판독 및 적응형 재기입을 사용한 방법 Download PDF

Info

Publication number
KR101621584B1
KR101621584B1 KR1020127012395A KR20127012395A KR101621584B1 KR 101621584 B1 KR101621584 B1 KR 101621584B1 KR 1020127012395 A KR1020127012395 A KR 1020127012395A KR 20127012395 A KR20127012395 A KR 20127012395A KR 101621584 B1 KR101621584 B1 KR 101621584B1
Authority
KR
South Korea
Prior art keywords
copy
memory
data
error
programming
Prior art date
Application number
KR1020127012395A
Other languages
English (en)
Other versions
KR20120093289A (ko
Inventor
지안 첸
Original Assignee
샌디스크 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20120093289A publication Critical patent/KR20120093289A/ko
Application granted granted Critical
Publication of KR101621584B1 publication Critical patent/KR101621584B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Abstract

비휘발성 메모리에서 데이터 오류들은 사용에 따라 그리고 셀당 저장되는 고밀도의 비트들에 따라 불가피하게 증가한다. 수락가능한 질적 보장을 위해서, 종래의 오류 정정 코드들("ECC")은 통계적 모집단의 맨 끝까지 최대수의 오류 비트들을 정정해야 한다. 본 메모리는 오류가 덜 나지만 저밀도의 저장을 갖고 동작하는 제 1 부분, 및 고밀도이지만 덜 확실한 저장을 갖고 동작하는 제 2 부분을 갖게 구성된다. 일 그룹의 데이터를 제 2 부분에 기입한 후에 과잉의 오류 비트들(맨 끝에서)가 발생한다면, 데이터는 오류 비트들이 덜 일어나게 할 제 1 부분에 적응형으로 재기입된다. 바람직하게, 데이터는 초기에는 임의의 재기입들을 위한 소스 데이터를 제공하기 위해 제 1 부분에도 캐시에 기입된다. 이에 따라, 맨 끝에 대해 정정을 요구하지 않는 더 효율적인 ECC가 사용될 수 있다.

Description

비휘발성 메모리 및 오류들을 관리하기 위한 기입후 판독 및 적응형 재기입을 사용한 방법{NON-VOLATILE MEMORY AND METHOD WITH POST-WRITE READ AND ADAPTIVE RE-WRITE TO MANAGE ERRORS}
이 출원은 반도체 플래시 메모리와 같은 재프로그램가능 비휘발성 메모리 시스템들의 동작에 관한 것으로, 특히 메모리 동작들에서 오류들의 취급 및 효율적 관리에 관한 것이다.
전하를 비휘발성으로 저장할 수 있는, 특히 소형 폼 팩터 카드로서 패키지되는 EEPROM 및 플래시 EEPROM 형태의 고체상태 메모리는 최근에 다양한 모바일 및 휴대 장치들, 특히 정보기기 및 소비자 전자제품들에서 선택되는 저장장치가 되었다. 고체상태 메모리이기도 한 RAM(random access momory)과는 달리, 플래시 메모리는 비휘발성이고 전원이 턴 오프 된 뒤라도 자신의 저장된 데이터를 보존한다. 또한, ROM(판독 전용 메모리)와는 달리, 플래시 메모리는 디스크 저장 장치와 유사하게 재기입할 수 있다. 높은 비용에도 불구하고 플래시 메모리는 점점 더 대량 저장응용들에서 사용되고 있다. 하드드라이브들 및 플로피 디스크들과 같은 회전하는 자기 매체에 기초한 종래의 대량 저장장치는 모바일 및 휴대 환경엔 적합하지 않다. 이것은 디스크 드라이브들이 부피가 커지기 쉽고, 기계적 고장이 나기 쉬우며 큰 레이턴시 및 큰 전력요건을 갖기 때문이다. 이들 바람직하지 못한 속성들로 인해서 디스크 기반의 저장장치는 대부분의 모바일 및 휴대 응용들에서 실현되지 못한다. 반면, 내장형이면서도 착탈가능한 카드 형태인 플래시 메모리는 이의 소형 크기, 저 전력 소비, 고속 및 고 신뢰도 특징으로 인해 모바일 및 휴대 환경에서 이상적으로 적합하다.
플래시 EEPROM은 전기적으로 프로그램가능한 판독전용 메모리(EPROM)는 소거될 수 있고 새로운 데이터가 이들의 메모리 셀들에 기입 또는 "프로그램"되게 할 수 있는 점에서 EEPROM(전기적 소거가능 및 프로그램가능한 판독전용 메모리)과 유사하다. 이들은, 전계효과 트랜지스터 구조에서, 소스영역과 드레인 영역 사이에 있는 반도체 기판 내 채널영역 위에 배치된 플로팅(비접속된) 도전성 게이트를 이용한다. 이때 제어 게이트는 플로팅 게이트 위에 설치된다. 트랜지스터의 임계전압 특징은 플로팅 게이트 상에 보존되는 전하량에 의해 제어된다. 즉, 플로팅 게이트 상에 소정 레벨의 전하에 대해서, 소스영역과 드레인 영역간에 도통이 되게 트랜지스터가 턴 "온"이 되기 전에 제어 게이트에 인가되어야 하는 대응하는 전압(임계)이 있다. 특히, 플래시 EEPROM와 같은 플래시 메모리는 메모리 셀들의 전체 블록들이 동시에 소거될 수 있게 한다.
플로팅 게이트는 일 범위의 전하들을 보존할 수 있고 따라서 임계 전압 윈도우 내의 임의의 임계 전압 레벨로 프로그램될 수 있다. 임계 전압 윈도우의 크기는 장치의 최소 및 최대 임계 레벨들에 의해 그 범위가 정해지는데, 이는 플로팅 게이트에 프로그램될 수 있는 일 범위의 전하들에 대응한다. 임계 윈도우는 일반적으로 메모리 장치의 특징들, 동작조건들 및 이력에 따른다. 윈도우 내의 각각의 서로 구별되고 해상가능한 임계전압 레벨의 범위는 원칙적으로 셀의 명확한 메모리 상태를 지정하는데 사용될 수 있다.
플래시 EEPROM 어레이의 각 저장 요소가 바이너리 모드에서 동작함으로써 단일 비트의 데이터를 저장하는 것이 현재 시판되는 제품들에서 일반적이며, 여기에서 저장 요소 트랜지스터들의 임계 레벨들의 두 범위들은 저장 레벨들로서 정의된다. 트랜지스터들의 임계 레벨들은 이들의 저장 요소들 상에 저장되는 전하 레벨들의 범위들에 대응한다. 메모리 어레이들의 크기를 축소시키는 것 외에, 경향은 한 비트 이상의 데이터를 각 저장 요소 트랜지스터에 저장함으로써 이러한 메모리 어레이들의 데이터 저장 밀도를 더욱 증가시키는 것이다. 이것은 각 저장 요소 트랜지스터에 대한 저장 상태들로서 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는 두 개의 이산화실리콘층들 사이에 개재된 트랩 유전층을 구비한 비휘발성 메모리 셀을 개시하고 있다. 복수 상태 데이터 저장은 유전층 내 공간적으로 분리된 전하 저장 영역들의 바이너리 상태들을 개별적으로 판독함으로써 구현된다.
판독 및 프로그램 성능을 개선하기 위해서, 어레이 내 복수의 전하 저장소자들 또는 메모리 트랜지스터들은 병렬로 판독 또는 프로그램된다. 이에 따라, 한 "페이지"의 메모리 소자들은 함께 판독 혹은 프로그램된다. 현존의 메모리 아키텍처들에서, 한 행은 전형적으로 몇개의 인터리빙된 페이지들을 내포하거나 한 페이지를 구성할 수도 있다. 한 페이지의 모든 메모리 소자들은 함께 판독 또는 프로그램될 것이다.
기입된 데이터 내 오류들
자기 디스크 저장 시스템들을 포함하여, 다른 것들만이 아니라, 본원에 기술된 메모리 시스템들의 유형들에서, 저장되는 데이터의 무결성은 오류 정정 기술을 사용하여 유지된다. 대부분 공통적으로, 한번에 저장되고 데이터와 함께 ECC가 저장되는 각 섹터 혹은 이외 다른 단위의 데이터에 대해 오류 정정 코드(ECC)가 계산된다. ECC는 대부분 공통적으로 ECC가 계산된 단위 그룹의 데이터와 함께 저장된다. 단위 그룹의 사용자 데이터는 섹터 또는 복수-섹터 페이지일 수 있다. 이 데이터가 메모리로부터 판독될 때, 판독되는 사용자 데이터의 무결성을 판정하기 위해 ECC가 사용된다. 단위 그룹의 데이터 내에 데이터의 오류 비트들은 흔히 ECC를 사용하여 정정될 수 있다.
경향은 시스템에 더 많은 메모리 셀들을 둘 수 있고 더 작은 호스트 장치들에 맞게 시스템을 가능한 한 작게 하기 위해서 메모리 시스템들의 크기를 감소시키는 것이다. 메모리 용량은 회로들의 고 집적과 더 많은 비트들의 데이터를 저장하게 각 메모리 셀을 구성하는 것을 겸함으로써 증가된다. 두 기술들은 증가하는 더 엄격한 오류 마진을 갖고 메모리가 동작할 것을 요구한다. 이에 따라 이것은 오류들을 정정할 것을 ECC에게 더 많이 요구한다.
ECC는 소정 수의 오류 비트들을 정정하게 설계될 수 있다. 더 많은 비트들을 정정해야 할수록, ECC는 더 복잡해지고 더 계산 집약적이 될 것이다. 질적인 보증을 위해서, 종래의 ECC들은 메모리 장치의 수명 말기에 예상되는 최악의 경우의 셀 오류율에 기초하여 설계된다. 이에 따라, 이들은 통계적 모집단의 오류율의 맨 끝까지 최대 수의 오류 비트들을 정정해야 한다.
플래시 메모리가 연수가 지남에 따라, 이의 오류율은 장치의 수명 말기에 급속히 증가한다. 이에 따라, 최악의 경우에 대해 설계된 강력한 ECC는 메모리 장치의 수명 말기에 오로지 이의 최대 용량을 적용해야 할 것이다.
최악의 경우의 수의 오류 비트들을 정정하기 위해 ECC를 사용하는 것은 상당량의 처리 시간을 소비할 것이다. 더 많은 비트들을 정정해야 할수록, 더 많은 계산시간이 요구된다. 메모리 성능은 저하될 것이다. 적합한 시간량 내에 ECC를 수행하기 위해 추가의 전용 하드웨어가 구현될 수도 있다. 이러한 전용 하드웨어는 제어기 ASIC 칩 상에 상당량의 공간을 차지할 수 있다. 또한, 장치의 대부분의 사용 시간 동안, ECC는 단지 미미하게 이용되므로, 이의 큰 오버헤드들이 낭비되고 실제적 이점들을 실현하지 못하게 된다.
따라서, 최악의 경우에 대해 설계된 것에 대해 자원 집약적 ECC에 대한 필요성이 없는 고 저장 용량의 비휘발성 메모리를 제공할 필요성이 있다.
발명의 일반적인 면에 따라서, 메모리 셀들의 어레이를 갖는 플래시 메모리는 제 1 부분 및 제 2 부분을 갖게 구성된다. 제 2 부분은 고 밀도로 데이터를 저장하며 제 1 부분에 비해 더 작은 오류 마진을 갖고 동작한다. 데이터는 효율적 저장을 위해 제 2 부분에 기입된다. 이후에, 데이터는 과잉의 오류비트들에 대해 체크하기 위해 기입 후 판독 동작에서 다시 판독된다. 오류 비트들이 소정의 량을 초과하였다면, 데이터는 오류가 덜 나기 쉬운 제 1 부분에 재기입된다. 이것은 데이터를 메모리에 기입함에 기인한 오류 비트들의 최대 수에 제한을 둔다. 오류율들의 통계적 분포에서, 제한은 분포의 맨 끝(더 큰 오류들을 가진)이 무시될 수 있도록 분포의 표준편차 수(number standard derivations)에 제한을 나타낸다. 이것은 더 작고 더 효율적인 오류 정정 코드("ECC")가 더 적은 수의 오류들 비트들을 정정하게 설계될 수 있게 하여, 성능을 개선하고 메모리의 비용을 감소시킨다.
바람직한 일실시예에서, 제 1 부분은 1 비트의 데이터를 저장하는 각 메모리 셀을 가지며, 제 2 부분은 1 이상의 비트의 데이터를 저장하는 각 메모리 셀을 갖는다.
대안적 실시예에서, 제 1 부분은 인입 데이터를 위한 캐시로서 작용하며, 따라서 입력 데이터의 캐시 카피는 캐시에 프로그램된다. 이어서, 데이터의 제 1 카피는 제 2 부분에 프로그램된다. 기입후 판독이 제 1 카피에 과도한 량의 오류를 검출하지 않았다면, 제 1 카피는 유효한 것으로 간주될 것이며 후속되는 액세스는 제 1 카피에 액세스하게 될것이다. 한편, 기입후 판독이 제 1 카피에 과도한 량의 오류를 검출하였다면, 제 1 부분 내 캐시된 카피는 제 2 부분 내 제 1 카피를 유효 데이터로서 대체할 것이다. 제 1 카피는 폐용이 될 것이며, 후속 액세스는 캐시된 카피에 보내질 것이다.
바람직한 실시예에서, 제 1 부분에는 제 1 섹션 및 제 2 섹션이 더욱 제공된다. 인입 데이터는 제 1 부분의 제 1 섹션에 캐시되며, 데이터의 제 1 카피는 제 2 부분에 기입된다. 이후에, 제 2 부분에 제 1 카피는 과잉의 오류 비트들에 대해 체크하기 위해 다시 판독된다. 오류 비트들이 소정 량을 초과하였다면, 인입 데이터의 제 2 카피는 제 1 부분의 제 2 섹션에 기입된다.
또 다른 바람직한 실시예에 따라, 메모리 어레이에는 집적회로 칩 상에 한 세트의 데이터 래치들이 제공되며, 제 1 카피 내 오류 비트들의 체크는 제 1 카피 및 캐시된 카피를 한 세트의 데이터 래치들에 로드하고 한 세트의 데이터 래치들에서 비교함으로써 달성된다.
대안적 실시예에서, 기입후 판독이 제 1 카피에서 과도한 량의 오류를 검출한 후에, 제 1 부분에 캐시된 카피는 제 2 부분에 제 1 카피를 유효 데이터로서 대체할 것이다. 제 1 카피는 폐용이 될 것이며, 제어기(도 1 참조)의 펌웨어에 구현된 블록 관리 시스템에 디렉토리는 후속되는 액세스를 캐시된 카피에 보내기 위해 업데이트될 것이다.
이에 따라, 메모리의 고밀도 저장 부분에 기입할 때, 기입후 판독은 오류율이 규정된 제한 내에 있는지 체크한다. 그렇지 않다면, 데이터는 메모리의 오류가 덜 나기 쉬운 다른 부분에 재기입된다. 오류가 덜 나기 쉬운 부분은 전형적으로 고밀도 저장 부분에 비해 셀당 적은 수의 데이터 비트들을 저장하는 각 메모리 셀을 갖는다. 고밀도 메모리에의 기입후에 발생하는 오류들을 제어하고 제한시키는 메커니즘을 제공하고, 고밀도 메모리에서 카피가 과잉의 오류들을 갖는다면 오류를 덜 갖고 재기입 데이터에의 두 번째 기회를 제공함으로써 ECC가 정정할 필요가 있을 오류들 비트들의 수는 현저히 감소된다. 이점은 약간 추가의 기입후 판독을 대가로 그리고 저밀도 메모리 부분에 빈번하지 않은 추가의 재기입들로 얻어진다.
예를 들면, 메모리의 고밀도 저장 부분은 3 비트들의 데이터를 저장하는 각 메모리 셀을 갖는다. 오류가 덜 나기 쉬운 부분은 1 비트의 데이터를 저장하는 각 메모리 셀을 갖는다. 6σ의 종래의 최악의 경우의 수법 대신 오류율들을 3 표준편차들(3σ) 이내로 제한시킴으로써 ECC는 42 비트들 대신 4비트들만을 정정할 필요가 있는 것으로 추정된다. 3σ로 제한시키는 것은 모집단의 0.13%가 4 비트들을 초과하는 오류율들을 가질 것으로 예상된다는 것이다. 발생되는 비용은 4 이상의 오류 비트들(모집단의 0.13%)을 갖는 고밀도 저장에 기입되는 데이터는 오류 한계를 초과하는 것을 피하기 위해 간단히 저 밀도 저장에 데이터가 기입되게 할 것이라는 것이다. 비교하여, 종래의 수법에서, 기입 오류들에 대해 42 비트들을 정정하기 위해 최악의 경우에 대해 설계된 ECC는 이 시간의 대부분 동안 훨씬 더 적은 수의 비트들을 정정하기만 하면 될지라도, 항시 큰 오버헤드를 수반한다.
상술한 바와 같이 본 발명은 반도체 플래시 메모리와 같은 재프로그램가능 비휘발성 메모리 시스템들의 동작, 특히 메모리 동작들에서 효율적으로 오류를 관리할 수 있다.
도 1은 본 발명의 특징들이 구현되는 메모리 장치와 통신하는 호스트를 도시한 것이다.
도 2는 비휘발성 메모리 셀을 개요적으로 도시한 것이다.
도 3은 메모리 셀들의 NOR 어레이의 예를 도시한 것이다.
도 4는 예를 들면 NAND 구성으로 구성되고 병렬로 감지 또는 프로그램되는 한 페이지의 메모리 셀들을 도시한 것이다.
도 5a는 메모리 셀들의 어레이에 대해 한 뱅크의 p개의 감지 모듈들을 내포하는 도 1에 도시된 감지 모듈들을 상세히 도시한 것이다.
도 5b는 감지 증폭기을 포함하는 감지 모듈을 도시한 것이다.
도 6은 소거가능한 블록들로 구성되는 메모리 어레이의 예를 개요적으로 도시한 것이다.
도 7은 각 셀이 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에 기술된 실시예에 따라 기입후 판독 및 적응형 재기입의 프로세스를 도시한 흐름도이다.
메모리 시스템
도 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)에 기입될 데이터를 보낸다. 제어기 내 구현된 메모리 블록 관리 시스템은 섹터들을 가져와 이들을 메모리 어레이의 물리 구조에 매핑하여 저장한다.
바람직한 블록 관리 시스템은 전체 개시된 바를 참조로 본원에 포함시키는 2009년 1월 1일에 출원된 미국특허출원 12/348,891에 개시되어 있다.
펌웨어(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 상태들을 저장하는 것이라면, 각각의 상태는 임계 윈도우에서 200 mV 내지 300 mV를 점유할 수 있다. 이것은 요구되는 분해능을 달성할 수 있기 위해서 프로그래밍 및 판독 동작들에서 더 높은 정밀도를 요구할 것이다.
메모리 어레이(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 스트링들은 함께 소거될 수 있다.
바이너리( SLC ) 및 복수-상태( MLC ) 메모리 분할의 예
앞에 기술된 바와 같이, 비휘발성 메모리의 예는 각각이 채널 영역과 제어 게이트 사이에 전하 저장층을 갖는 전계-효과 트랜지스터들의 어레이로부터 형성된다. 전하 저장층 또는 유닛은 한 범위의 전하들을 저장할 수 있어, 각각의 전계-효과 트랜지스터에 대해 한 범위의 임계 전압들을 생성한다. 가능한 임계 전압들의 범위는 임계 윈도우에 걸쳐 있다. 임계 윈도우가 임계 전압들의 다수의 부-범위들 또는 구역들로 분할될 때, 각각의 해상가능한 구역은 한 메모리 셀에 대해 서로 다른 메모리 상태들을 나타내기 위해 사용된다. 다수의 메모리 상태들은 하나 이상의 바이너리 비트들에 의해 부호화될 수 있다.
도 7은 각 셀이 2개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 바이너리 메모리를 도시한 것이다. 각 메모리 셀은 단일 구분 레벨에 의해 2개의 서로 분할되는 구역들로 구분되는 임계 윈도우를 갖는다. 도 7(0)에 도시된 바와 같이, 판독 동안, 하위 구역과 상위 구역 사이에 판독 구분 레벨(rV1)은 셀의 임계 레벨이 어느 구역에 놓여있는지를 판정하기 위해 사용된다. 셀은 이의 임계값이 하위 구역에 놓여 있다면 "소거된" 상태에 있으며, 임계값이 상위 구역에 놓여 있다면 "프로그램된" 상태에 있다. 도 7(1)은 메모리가 초기에 이의 모든 셀들이 "소거된" 상태에 있는 것을 도시한 것이다. 도 7(2)는 일부 셀들이 "프로그램된" 상태로 프로그램된 것을 도시한 것이다. 메모리 상태들을 부호화하기 위해 1-비트 또는 바이너리 코드가 사용된다. 예를 들면, 비트 값 "1"은 "소거된" 상태를 나타내며 "0"은 "프로그램된" 상태를 나타낸다. 전형적으로 프로그래밍은 하나 이상의 프로그래밍 전압 펄스의 인가에 의해 수행된다. 각 펄스 후에, 임계값이 검증 구분 레벨(vV1)을 넘어 이동하였는지를 검증하기 위해 셀이 감지된다. 이러한 메모리 셀 분할을 가진 메모리를 "바이너리" 메모리 또는 단일-레벨 셀("SLC") 메모리라고 한다. 바이너리 또는 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인 데이터 페이지들을 가진 16 GB의 용량을 갖는다. 이것은 각각이 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 부분에 재기입된다. 이것은 데이터를 메모리에 기입함에 기인한 오류 비트들의 최대 수에 제한을 둔다. 오류율들의 통계적 분포에서, 제한은 분포의 맨 끝(더 큰 오류들을 가진)이 무시될 수 있도록 분포의 표준편차 수(number standard derivations)에 제한을 나타낸다. 이것은 더 작고 더 효율적인 오류 정정 코드("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 카피는 폐용이 될 것이며, 제어기(도 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): 비휘발성 메모리에 일 그룹의 입력 데이터 저장이 행해졌다.
발명의 전술한 상세한 설명은 예시 및 설명 목적으로 제시되었다. 하나도 빠뜨리는 것이 없게 하려는 것이거나 개시된 정밀한 형태로 발명을 제한하려는 것은 아니다. 위에 교시된 바에 따라 많은 수정들 및 변형들이 가능하다. 기술된 실시예들은 발명의 원리 및 이의 실제 응용을 최상으로 설명하고 그럼으로써 다른 당업자들이 발명을 여러 실시예들에서 그리고 고찰되는 특정 용도에 적합한 다양한 수정을 가하여 최상으로 이용할 수 있게 하기 위해 선택되었다. 발명의 범위는 첨부된 청구항들에 의해 정의되게 하였다.
60: 펌웨어 62: ECC 프로세서
80: 호스트 90: 플래시 메모리 장치
100: 메모리 칩 102: 제어기,
110: 온칩 제어 회로 112: 상태머신
200: 메모리 어레이 430: 데이터 래치
480: 감지 모듈 490: 감지 증폭기

Claims (20)

  1. 비휘발성 메모리를 동작시키는 방법에 있어서,
    상기 메모리를 제 1 부분 및 제 2 부분으로 구성하는 단계로서, 상기 제 1 부분은 상기 제 2 부분보다 더 큰 오류 마진을 갖고 동작하는 메모리 셀들을 갖는, 단계;
    일 그룹의 입력 데이터를 상기 제 2 부분에 제 1 카피로서 프로그래밍하는 단계;
    기정의된 시간 후에 오류에 대해 체크하기 위해 상기 제 2 부분으로부터 상기 제 1 카피를 판독하는 단계; 및
    상기 제 1 카피에서의 오류가 소정 수의 오류 비트들 미만이라면, 후속 판독 동작들에서 상기 제 1 카피를 유효 데이터로서 확인하는 단계; 그렇지 않다면
    상기 일 그룹의 입력 데이터를 상기 제 1 부분에 제2 카피로서 프로그래밍하고 후속 판독 동작들에서 상기 제 2 카피를 유효 데이터로서 확인하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제 1 부분에 제 1 섹션 및 제 2 섹션을 제공하는 단계로서, 상기 제 1 섹션은 상기 일 그룹의 입력 데이터를 캐시하기 위한 것이며 상기 제 2 섹션은 상기 제 1 카피에서의 오류가 상기 소정 수의 오류 비트들을 초과한 것으로 발견된 후에 상기 일 그룹의 입력 데이터의 상기 제 2 카피를 저장하기 위한 것인, 단계; 및
    상기 일 그룹의 입력 데이터를 상기 제 1 섹션에 캐시된 카피로서 프로그래밍하는 단계를 더 포함하고,
    상기 제 2 카피의 상기 프로그래밍은 상기 캐시된 카피에 기초하며 상기 제 1 부분의 상기 제 2 섹션 내에 행해지는 것인, 방법.
  3. 제2항에 있어서, 상기 메모리는 한 세트의 데이터 래치들을 가진 집적회로 칩 상에 형성되며;
    오류들에 대해 체크하기 위해 상기 제 1 카피를 판독하는 단계는
    상기 제 1 카피 및 상기 캐시된 카피를 상기 한 세트의 데이터 래치들로 판독하는 단계; 및
    상기 한 세트의 데이터 래치들에서 상기 제 1 카피 및 상기 캐시된 카피를 비교하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서, 상기 기정의된 시간은 상기 일 그룹의 입력 데이터를 교란하는 이웃 메모리 셀들의 프로그래밍의 완료인, 방법.
  5. 제1항에 있어서, 상기 메모리는 복수의 블록들의 메모리 셀들로 분할되고, 상기 기정의된 시간은 상기 일 그룹의 입력 데이터를 내포하는 상기 블록에 모든 메모리 셀들의 프로그래밍의 완료인, 방법.
  6. 제1항에 있어서, 적어도 상기 소정 수의 오류 비트들을 정정하기 위한 ECC를 제공하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서, 상기 소정 수의 오류 비트들보다 더 큰 오류 비트들의 수를 정정하기 위해 ECC를 제공하는 단계를 더 포함하는, 방법.
  8. 비휘발성 메모리를 동작시키는 방법에 있어서,
    상기 메모리를 제 1 부분 및 제 2 부분으로 구성하는 단계로서, 상기 제 1 부분은 상기 제 2 부분보다 더 큰 오류 마진을 갖고 동작하는 메모리 셀들을 가지며 입력 데이터를 캐시하기 위한 것인, 단계;
    일 그룹의 입력 데이터를 상기 제 1 부분에 캐시된 카피로서 프로그래밍하는 단계;
    상기 일 그룹의 입력 데이터를 상기 제 2 부분에 제 1 카피로서 프로그래밍하는 단계;
    기정의된 시간 후에 오류에 대해 체크하기 위해 상기 제 2 부분으로부터 상기 제 1 카피를 판독하는 단계; 및
    상기 제 1 카피에서의 오류가 소정 수의 오류 비트들 미만이라면, 후속 판독 동작들에서 상기 제 1 카피를 유효 데이터로서 확인하는 단계; 그렇지 않다면
    후속 판독 동작들에서 상기 캐시된 카피를 유효 데이터로서 확인하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 메모리는 한 세트의 데이터 래치들을 가진 집적회로 칩 상에 형성되며;
    오류들에 대해 체크하기 위해 상기 제 1 카피를 판독하는 단계는
    상기 제 1 카피 및 상기 캐시된 카피를 상기 한 세트의 데이터 래치들에 판독하는 단계; 및
    상기 한 세트의 데이터 래치들에서 상기 제 1 카피 및 상기 캐시된 카피를 비교하는 단계를 더 포함하는, 방법.
  10. 제8항에 있어서, 상기 기정의된 시간은 상기 일 그룹의 입력 데이터를 교란하는 이웃 메모리 셀들의 프로그래밍의 완료인, 방법.
  11. 메모리로서,
    제 1 부분 및 제 2 부분을 갖는 비휘발성 메모리 셀들의 어레이로서, 상기 제 1 부분은 상기 제 2 부분보다 더 큰 오류 마진을 갖고 동작하는 메모리 셀들을 갖는 것인, 어레이; 및
    상기 메모리의 동작들을 제어하기 위한 제어기를 포함하고, 상기 동작들은,
    일 그룹의 입력 데이터를 상기 제 2 부분에 제 1 카피로서 프로그래밍하는 동작;
    기정의된 시간 후에 오류에 대해 체크하기 위해 상기 제 2 부분으로부터 상기 제 1 카피를 판독하는 동작; 및
    상기 제 1 카피에서의 오류가 소정 수의 오류 비트들 미만이라면, 후속 판독 동작들에서 상기 제 1 카피를 유효 데이터로서 확인하는 동작; 그렇지 않다면
    상기 일 그룹의 입력 데이터를 상기 제 1 부분에 제 2 카피로서 프로그래밍하고, 후속 판독 동작들에서 상기 제 2 카피를 유효 데이터로서 확인하는 동작을 포함하는, 메모리.
  12. 제11항에 있어서, 상기 제 1 부분에 제 1 섹션 및 제 2 섹션을 더 포함하며, 상기 제 1 섹션은 상기 일 그룹의 입력 데이터를 캐시하기 위한 것이며 상기 제 2 섹션은 상기 제 1 카피에서의 오류가 상기 소정 수의 오류 비트들을 초과한 것으로 발견된 후에 상기 일 그룹의 입력 데이터의 상기 제 2 카피를 저장하기 위한 것이며; 상기 동작들은
    상기 일 그룹의 입력 데이터를 상기 제 1 섹션에 캐시된 카피로서 프로그래밍하는 동작을 더 포함하고,
    상기 제 2 카피의 상기 프로그래밍은 상기 캐시된 카피에 기초하며 상기 제 1 부분의 상기 제 2 섹션 내에 행해지는 것인, 메모리.
  13. 제12항에 있어서, 상기 메모리는 한 세트의 데이터 래치들을 가진 집적회로 칩 상에 형성되며;
    오류들에 대해 체크하기 위해 상기 제 1 카피를 판독하는 상기 동작은
    상기 제 1 카피 및 상기 캐시된 카피를 상기 한 세트의 데이터 래치들에 판독하는 동작; 및
    상기 한 세트의 데이터 래치들에서 상기 제 1 카피 및 상기 캐시된 카피를 비교하는 동작을 더 포함하는, 메모리.
  14. 제11항에 있어서, 상기 기정의된 시간은 상기 일 그룹의 입력 데이터를 교란하는 이웃 메모리 셀들의 프로그래밍의 완료인, 메모리.
  15. 제11항에 있어서, 상기 메모리는 복수의 블록들의 메모리 셀들로 분할되고, 상기 기정의된 시간은 상기 일 그룹의 입력 데이터를 내포하는 상기 블록에 모든 메모리 셀들의 프로그래밍의 완료인, 메모리.
  16. 제11항에 있어서, 적어도 상기 소정 수의 오류 비트들을 정정하기 위한 ECC를 더 포함하는, 메모리.
  17. 제11항에 있어서, 상기 소정 수의 오류 비트들보다 더 큰 오류 비트들의 수를 정정하기 위한 ECC를 더 포함하는, 메모리.
  18. 메모리로서,
    제 1 부분 및 제 2 부분을 갖는 비휘발성 메모리 셀들의 어레이로서, 상기 제 1 부분은 상기 제 2 부분보다 더 큰 오류 마진을 갖고 동작하는 메모리 셀들을 가지며 입력 데이터를 캐시하기 위한 것인, 어레이; 및
    상기 메모리의 동작들을 제어하기 위한 제어기를 포함하고, 상기 동작들은,
    일 그룹의 입력 데이터를 상기 제 1 부분에 캐시된 카피로서 프로그래밍하는 동작;
    상기 일 그룹의 입력 데이터를 상기 제 2 부분에 제 1 카피로서 프로그래밍하는 동작;
    기정의된 시간 후에 오류에 대해 체크하기 위해 상기 제 2 부분으로부터 상기 제 1 카피를 판독하는 동작; 및
    상기 제 1 카피에서의 오류가 소정 수의 오류 비트들 미만이라면, 후속 판독 동작들에서 상기 제 1 카피를 유효 데이터로서 확인하는 동작; 그렇지 않다면
    후속 판독 동작들에서 상기 캐시된 카피를 유효 데이터로서 확인하는 동작을 포함하는, 메모리.
  19. 제18항에 있어서, 상기 메모리는 한 세트의 데이터 래치들을 가진 집적회로 칩 상에 형성되며;
    오류들에 대해 체크하기 위해 상기 제 1 카피를 판독하는 상기 동작은
    상기 제 1 카피 및 상기 캐시된 카피를 상기 한 세트의 데이터 래치들에 판독하는 동작; 및
    상기 한 세트의 데이터 래치들에서 상기 제 1 카피 및 상기 캐시된 카피를 비교하는 동작을 더 포함하는, 메모리.
  20. 제18항에 있어서, 상기 기 정의된 시간은 상기 일 그룹의 입력 데이터를 교란하는 이웃 메모리 셀들의 프로그래밍의 완료인, 메모리.
KR1020127012395A 2009-10-28 2010-10-22 비휘발성 메모리 및 오류들을 관리하기 위한 기입후 판독 및 적응형 재기입을 사용한 방법 KR101621584B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/607,522 US8214700B2 (en) 2009-10-28 2009-10-28 Non-volatile memory and method with post-write read and adaptive re-write to manage errors
US12/607,522 2009-10-28

Publications (2)

Publication Number Publication Date
KR20120093289A KR20120093289A (ko) 2012-08-22
KR101621584B1 true KR101621584B1 (ko) 2016-05-16

Family

ID=43413777

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127012395A KR101621584B1 (ko) 2009-10-28 2010-10-22 비휘발성 메모리 및 오류들을 관리하기 위한 기입후 판독 및 적응형 재기입을 사용한 방법

Country Status (7)

Country Link
US (2) US8214700B2 (ko)
EP (1) EP2494552A1 (ko)
JP (1) JP5443612B2 (ko)
KR (1) KR101621584B1 (ko)
CN (1) CN102667944B (ko)
TW (1) TW201140605A (ko)
WO (1) WO2011056478A1 (ko)

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI389122B (zh) * 2008-10-30 2013-03-11 Silicon Motion Inc 用來存取一快閃記憶體之方法以及相關之記憶裝置及其控制器
JPWO2011013351A1 (ja) * 2009-07-30 2013-01-07 パナソニック株式会社 アクセス装置およびメモリコントローラ
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
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
US8305807B2 (en) 2010-07-09 2012-11-06 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8379454B2 (en) 2011-05-05 2013-02-19 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
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
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
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
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
US8645770B2 (en) 2012-01-18 2014-02-04 Apple Inc. Systems and methods for proactively refreshing nonvolatile memory
US8566671B1 (en) 2012-06-29 2013-10-22 Sandisk Technologies Inc. Configurable accelerated post-write read to manage errors
US8914696B2 (en) 2012-08-29 2014-12-16 Seagate Technology Llc Flash memory read scrub and channel tracking
US8832530B2 (en) 2012-09-26 2014-09-09 Intel Corporation Techniques associated with a read and write window budget for a two level memory system
US9810723B2 (en) 2012-09-27 2017-11-07 Sandisk Technologies Llc Charge pump based over-sampling ADC for current detection
US9164526B2 (en) 2012-09-27 2015-10-20 Sandisk Technologies Inc. Sigma delta over-sampling charge pump analog-to-digital converter
KR102025263B1 (ko) * 2012-10-05 2019-09-25 삼성전자주식회사 메모리 시스템 및 그것의 읽기 교정 방법
US9076530B2 (en) 2013-02-07 2015-07-07 Seagate Technology Llc Non-volatile write buffer data retention pending scheduled verification
US9349476B2 (en) 2013-02-21 2016-05-24 Sandisk Technologies Inc. Methods, systems, and computer readable media for early detection of potential flash failures using an adaptive system level algorithm based on flash program verify
US8972776B2 (en) 2013-03-06 2015-03-03 Seagate Technology, Llc Partial R-block recycling
US9767023B2 (en) * 2013-06-12 2017-09-19 Nec Corporation Method of controlling data writing to persistent storage device
US20150006784A1 (en) 2013-06-27 2015-01-01 Sandisk Technologies Inc. Efficient Post Write Read in Three Dimensional Nonvolatile Memory
US9218242B2 (en) 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in nonvolatile memory
US9063671B2 (en) 2013-07-02 2015-06-23 Sandisk Technologies Inc. Write operations with full sequence programming for defect management in nonvolatile memory
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
US9213601B2 (en) 2013-12-03 2015-12-15 Sandisk Technologies Inc. Adaptive data re-compaction after post-write read verification operations
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
US9280419B2 (en) * 2013-12-16 2016-03-08 International Business Machines Corporation Dynamic adjustment of data protection schemes in flash storage systems based on temperature, power off duration and flash age
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
US9082512B1 (en) * 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9437321B2 (en) 2014-10-28 2016-09-06 Sandisk Technologies Llc Error detection method
US9858009B2 (en) 2015-10-26 2018-01-02 Sandisk Technologies Llc Data folding in 3D nonvolatile memory
US9570160B1 (en) 2015-10-29 2017-02-14 Sandisk Technologies Llc Non-volatile storage system with defect detetction and early programming termination
US9698676B1 (en) 2016-03-11 2017-07-04 Sandisk Technologies Llc Charge pump based over-sampling with uniform step size for current detection
US9711227B1 (en) 2016-04-28 2017-07-18 Sandisk Technologies Llc Non-volatile memory with in field failure prediction using leakage detection
KR20180020706A (ko) 2016-08-19 2018-02-28 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US10622089B2 (en) * 2016-10-18 2020-04-14 Toshiba Memory Corporation Storage system having a host that manages physical data locations of storage device
CN106847341A (zh) * 2016-12-23 2017-06-13 鸿秦(北京)科技有限公司 一种纯电动汽车综合信息存储装置的存储体自检装置及方法
US10664402B2 (en) * 2017-01-27 2020-05-26 Hewlett-Packard Development Company, L.P. Read operation redirect
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10658056B2 (en) * 2017-12-22 2020-05-19 Intel Corporation Internal copy to handle NAND program fail
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
KR102495915B1 (ko) 2018-04-30 2023-02-03 삼성전자 주식회사 스토리지 장치 및 상기 스토리지 장치를 포함하는 서버
US11379155B2 (en) 2018-05-24 2022-07-05 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) * 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US10860420B2 (en) 2019-02-05 2020-12-08 Alibaba Group Holding Limited Method and system for mitigating read disturb impact on persistent memory
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10783035B1 (en) 2019-02-28 2020-09-22 Alibaba Group Holding Limited Method and system for improving throughput and reliability of storage media with high raw-error-rate
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
CN112698782A (zh) * 2019-10-22 2021-04-23 中电智能科技有限公司 基于存储器数据加载的实现装置及方法
US10997019B1 (en) 2019-10-31 2021-05-04 Alibaba Group Holding Limited System and method for facilitating high-capacity system memory adaptive to high-error-rate and low-endurance media
US11200159B2 (en) 2019-11-11 2021-12-14 Alibaba Group Holding Limited System and method for facilitating efficient utilization of NAND flash memory
US11119847B2 (en) 2019-11-13 2021-09-14 Alibaba Group Holding Limited System and method for improving efficiency and reducing system resource consumption in a data integrity check
CN110956994B (zh) * 2019-11-27 2021-10-22 西安紫光国芯半导体有限公司 编程结果检测电路、检测方法、快闪存储器及编程方法
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
KR20210109085A (ko) 2020-02-26 2021-09-06 삼성전자주식회사 메모리 장치에 대한 테스트 방법, 메모리 장치를 테스트하는 테스트 장치의 동작 방법, 및 셀프-테스트 기능을 구비한 메모리 장치
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US20230410898A1 (en) * 2020-10-19 2023-12-21 Rambus Inc. Flash memory device with photon assisted programming
US11342035B1 (en) 2020-11-24 2022-05-24 Sandisk Technologies Llc Memory apparatus and method of operation using one pulse smart verify
US11568943B2 (en) 2020-11-24 2023-01-31 Sandisk Technologies Llc Memory apparatus and method of operation using zero pulse smart verify
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US11816353B2 (en) 2021-12-20 2023-11-14 Western Digital Technologies, Inc. Parity data for non-volatile storage

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671338A (en) 1994-04-19 1997-09-23 Kabushiki Kaisha Toshiba Constraint evaluation system, expert system, and constraint evaluation method
US20070201274A1 (en) 2000-01-06 2007-08-30 Super Talent Electronics Inc. Cell-Downgrading and Reference-Voltage Adjustment for a Multi-Bit-Cell Flash Memory
US20070234183A1 (en) 2006-03-31 2007-10-04 Sang-Won Hwang Multi-bit memory device and memory system
US20080301532A1 (en) 2006-09-25 2008-12-04 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device

Family Cites Families (57)

* Cited by examiner, † Cited by third party
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
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
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
KR960002006B1 (ko) 1991-03-12 1996-02-09 가부시끼가이샤 도시바 2개의 기준 레벨을 사용하는 기록 검증 제어기를 갖는 전기적으로 소거 가능하고 프로그램 가능한 불휘발성 메모리 장치
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
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
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
US5671388A (en) 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
US5767429A (en) * 1995-11-09 1998-06-16 Milano; Lynn M. Automatic string instrument tuner
JPH09134313A (ja) * 1995-11-10 1997-05-20 Sony Corp メモリ装置
EP0788113B1 (en) * 1996-01-31 2005-08-24 STMicroelectronics S.r.l. Multilevel memory circuits and corresponding reading and writing methods
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
KR100323554B1 (ko) 1997-05-14 2002-03-08 니시무로 타이죠 불휘발성반도체메모리장치
JPH1131102A (ja) * 1997-07-14 1999-02-02 Toshiba Corp データ記憶システム及び同システムに適用するアクセス制御方法
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
US6141388A (en) 1998-03-11 2000-10-31 Ericsson Inc. Received signal quality determination method and systems for convolutionally encoded communication channels
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
JP2003022687A (ja) * 2001-07-09 2003-01-24 Mitsubishi Electric Corp 半導体記憶装置
ITMI20011619A1 (it) 2001-07-26 2003-01-26 Montefibre Spa Procedimento per la preparazione di materiali in fibra acrilica idrorepellenti
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6717847B2 (en) * 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US7554842B2 (en) * 2001-09-17 2009-06-30 Sandisk Corporation Multi-purpose non-volatile memory card
JP4063615B2 (ja) 2002-08-30 2008-03-19 Necエレクトロニクス株式会社 不揮発性メモリおよびその書き込み処理方法
US7196931B2 (en) 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
KR100543447B1 (ko) * 2003-04-03 2006-01-23 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
US6917542B2 (en) 2003-07-29 2005-07-12 Sandisk Corporation Detecting over programmed memory
US6914823B2 (en) 2003-07-29 2005-07-05 Sandisk Corporation Detecting over programmed memory after further programming
US7009889B2 (en) 2004-05-28 2006-03-07 Sandisk Corporation Comprehensive erase verification for non-volatile memory
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
JP4805696B2 (ja) * 2006-03-09 2011-11-02 株式会社東芝 半導体集積回路装置およびそのデータ記録方式
US7701797B2 (en) * 2006-05-15 2010-04-20 Apple Inc. Two levels of voltage regulation supplied for logic and data programming voltage of a memory device
KR100858241B1 (ko) * 2006-10-25 2008-09-12 삼성전자주식회사 하이브리드 플래시 메모리 장치 및 그것의 가용 블록 할당방법
US8122319B2 (en) 2007-01-24 2012-02-21 Charles I. Peddle Page-based failure management for flash memory
JP5059493B2 (ja) * 2007-06-15 2012-10-24 株式会社リコー アクセス制御装置、アクセス制御方法、アクセス制御プログラムおよび記録媒体
JP4510060B2 (ja) 2007-09-14 2010-07-21 株式会社東芝 不揮発性半導体記憶装置の読み出し/書き込み制御方法
US7945825B2 (en) 2007-11-25 2011-05-17 Spansion Isreal, Ltd Recovery while programming non-volatile memory (NVM)
WO2009072102A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
JP2009301194A (ja) * 2008-06-11 2009-12-24 Toshiba Corp 半導体記憶装置の制御システム
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US7864578B2 (en) 2008-06-30 2011-01-04 Kabushiki Kaisha Toshiba Semiconductor memory repairing a defective bit and semiconductor memory system
US7864587B2 (en) 2008-09-22 2011-01-04 Micron Technology, Inc. Programming a memory device to increase data reliability
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
KR101581857B1 (ko) 2009-08-06 2015-12-31 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 인터리브 유닛 구성 방법
US8464106B2 (en) 2009-08-24 2013-06-11 Ocz Technology Group, Inc. Computer system with backup function and method therefor
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
US8634240B2 (en) 2009-10-28 2014-01-21 SanDisk Technologies, Inc. Non-volatile memory and method with accelerated post-write read to manage errors
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
JP2011128984A (ja) * 2009-12-18 2011-06-30 Toshiba Corp メモリシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671338A (en) 1994-04-19 1997-09-23 Kabushiki Kaisha Toshiba Constraint evaluation system, expert system, and constraint evaluation method
US20070201274A1 (en) 2000-01-06 2007-08-30 Super Talent Electronics Inc. Cell-Downgrading and Reference-Voltage Adjustment for a Multi-Bit-Cell Flash Memory
US20070234183A1 (en) 2006-03-31 2007-10-04 Sang-Won Hwang Multi-bit memory device and memory system
US20080301532A1 (en) 2006-09-25 2008-12-04 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device

Also Published As

Publication number Publication date
WO2011056478A1 (en) 2011-05-12
EP2494552A1 (en) 2012-09-05
JP2013509667A (ja) 2013-03-14
TW201140605A (en) 2011-11-16
US8214700B2 (en) 2012-07-03
JP5443612B2 (ja) 2014-03-19
CN102667944B (zh) 2016-01-13
US20110099418A1 (en) 2011-04-28
US20120272120A1 (en) 2012-10-25
US8386861B2 (en) 2013-02-26
CN102667944A (zh) 2012-09-12
KR20120093289A (ko) 2012-08-22

Similar Documents

Publication Publication Date Title
KR101621584B1 (ko) 비휘발성 메모리 및 오류들을 관리하기 위한 기입후 판독 및 적응형 재기입을 사용한 방법
KR101727349B1 (ko) 비휘발성 메모리 및 오류들을 관리하기 위한 가속화된 기입후 판독을 사용한 방법
JP5596791B2 (ja) エラーを管理するための書き込み後読み出しおよび適応再書き込みを伴う不揮発性メモリおよび方法
KR101838340B1 (ko) 복수 페이지들의 조합된 검증을 사용한 가속화된 기입후 판독을 가진 비휘발성 메모리 및 방법
KR101835174B1 (ko) 복수 워드라인의 동시적 감지 및 nand 고장의 검출
US8713380B2 (en) Non-volatile memory and method having efficient on-chip block-copying with controlled error rate
US8971119B2 (en) Select transistor tuning
US8566671B1 (en) Configurable accelerated post-write read to manage errors
US9213601B2 (en) Adaptive data re-compaction after post-write read verification operations
KR20140064785A (ko) 2진 포맷 및 복수-상태 포맷으로 기입된 데이터의 비교를 사용한 비휘발성 메모리들에서 기입후 판독
KR20120120214A (ko) 비휘발성 메모리 및 원자 프로그램 순서와 기입 중단 검출을 가진 방법
WO2013016393A1 (en) Data recovery for defective word lines during programming of non-volatile memory arrays

Legal Events

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

Payment date: 20190417

Year of fee payment: 4