KR101468432B1 - 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술 - Google Patents

제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술 Download PDF

Info

Publication number
KR101468432B1
KR101468432B1 KR1020097022455A KR20097022455A KR101468432B1 KR 101468432 B1 KR101468432 B1 KR 101468432B1 KR 1020097022455 A KR1020097022455 A KR 1020097022455A KR 20097022455 A KR20097022455 A KR 20097022455A KR 101468432 B1 KR101468432 B1 KR 101468432B1
Authority
KR
South Korea
Prior art keywords
data
pages
read
memory cells
block
Prior art date
Application number
KR1020097022455A
Other languages
English (en)
Other versions
KR20100028022A (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
Priority claimed from US11/692,840 external-priority patent/US7477547B2/en
Priority claimed from US11/692,829 external-priority patent/US7573773B2/en
Application filed by 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20100028022A publication Critical patent/KR20100028022A/ko
Application granted granted Critical
Publication of KR101468432B1 publication Critical patent/KR101468432B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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/5642Sensing or reading circuits; Data output circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Hardware Design (AREA)

Abstract

플래시 메모리 시스템의 메모리 셀의 개개의 블록들에 저장된 데이터 질은 호스트 또는 메모리 제어기로부터 판독된 명령에 응하여 한 블록의 전부 미만으로부터 데이터가 판독된 후에 수행되는, 블록의 소 부분만의 스크럽 판독에 의해 모니터된다. 소 부분은 명령된 부분 블록 데이터 판독의 결과로서 교란될 블록의 다른 부분들보다 더 큰 취약성 때문에 스크럽 판독을 위해 선택된다. 이것은 소량의 데이터를 판독한 결과로서, 블록의 데이터를 리프레시하는 것을 바람직하게 만드는 정도까지 데이터 판독 명령에 의해 블록 내 데이터의 적어도 일부가 교란되었는지를 판정한다.

Description

제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술{FLASH MEMORY REFRESH TECHNIQUES TRIGGERED BY CONTROLLED SCRUB DATA READS}
본 명세서에서 주제는, 일반적으로 재프로그램 가능한 비휘발성 메모리에 저장된 데이터를 리프레시하는 기술에 관한 것이고, 보다 구체적으로는 다른 데이터를 판독하여 일어날 수 있는 데이터의 잠재적인 교란에 반응하여 저장된 데이터를 수정 및 리프레시하는 것에 관한 것이다.
최근, 소형 폼 팩터(form factor) 카드 및 USB(Universal Serial Bus) 규격에 따른 인터페이스를 구비한 플래시 드라이브 형태의 상업용으로 성공적인 비휘발성 메모리 제품이 많이 사용되고 있다. 이들은 개개가, 하나 이상의 집적회로 칩들 상에 형성된 한 어레이의 플래시 EEPROM(Electrically Erasable and Programmable Read Only Memory) 셀을 채용한다. 일반적으로 반드시 별도의 집적회로 칩 상에 있지는 않지만 메모리 제어기는 카드가 착탈 가능하게 접속되어 카드 내 메모리 어레이의 작동을 제어하는 호스트와 인터페이스한다. 이러한 제어기는 전형적으로 마이크로 프로세서, 어떤 비휘발성 판독 전용 메모리(ROM), 휘발성 랜덤 액세스 메모리(RAM), 및 데이터의 프로그래밍 및 판독 동안 이들이 제어기를 통과할 때 데이터로부터 에러-수정-코드(ECC)를 계산하는 것과 같은 하나 이상의 특정 회로들을 포 함한다.
이러한 메모리 카드들의 예들로서는 콤팩트플래시TM(CF) 카드, 멀티미디어 카드(MMC), 보안 디지털(SD) 카드, miniSD 카드, 마이크로 SD 카드, TransFlash 카드 및 메모리 스틱 카드라는 등록상표들로, 본 양수인인 쌘디스크사에 의해 판매되는 것들이다. 몇몇의 서로 다른 USB 플래시 드라이브들이 Cruzer 등록상표로 쌘디스크로부터 구입될 수 있다. 호스트들은 개인용 컴퓨터들, 기록북 컴퓨터들, 개인용 디지털 보조장치들(PDA), 각종 데이터 통신 장치들, 디지털 카메라들, 휴대폰, 휴대용 오디오 플레이어들, 자동차 음성 시스템들, 및 유사한 유형의 장비를 포함한다. 메모리 카드 및 플래시 드라이브 포맷들 이외에, 이 유형의 메모리 시스템은 대안적으로 다양한 유형의 호스트 시스템들에 내장될 수 있다. 많은 유형들의 메모리 카드들 및 플래시 드라이브들은 애플리케이션 프로그램들을 단독으로, 또는 호스트와 함께 실행할 수 있다.
2개의 일반적인 메모리 셀 어레이 아키텍처들은 NOR 및 NAND에 상업적으로 적용되었다. 전형적인 NOR 어레이에서, 메모리 셀은 제어 게이트들이 셀의 행들을 따라 확장하는 워드 라인들에 접속되어, 컬럼 방향으로 확장하는 드레인 확산부와 이웃한 비트 라인 사이에 접속된다. 메모리 셀은 소스와 드레인 사이의 셀 채널 영역의 적어도 일부 상에 위치된 적어도 한 저장소자를 포함한다. 이에 따라 저장소자들 상에 전하의 프로그램되는 레벨은 셀의 작동 특성들을 제어하며, 이것은 어드레스된 메모리 셀에 적합한 전압들을 인가함으로써 판독될 수 있게 된다. 이러한 셀의 예들, 메모리 시스템들에서 이들의 사용들 및 이들을 제조하는 방법들이 미국 특허 5,070,032, 5,095,344, 5,313,421, 5,315,541, 5,343,063, 5,661,053 및 6,222,762에 주어져 있다.
NAND 어레이는 다수 컬럼들의 셀을 형성하기 위해 개개의 비트 라인들과 기준전위 사이에 하나 이상의 선택 트랜지스터들과 함께 접속되는, 16 또는 32와 같은 2개 이상의 메모리 셀로 된 직렬 스트링들을 이용한다. 워드 라인들은 상당 수의 이들 컬럼들 내에 셀을 가로질러 확장한다. 한 컬럼 내 개개의 한 셀은 스트링을 통해 흐르는 전류가 어드레스된 셀 내 저장된 전하 레벨에 따르도록 스트링 내 나머지 셀이 거의 턴 온 되지 않게 함으로써 프로그래밍 동안 판독되고 검증된다. 메모리 시스템의 부분으로서 NAND 아키텍처 어레이들 및 이들의 작동의 예들은 미국 특허 5,570,315, 5,774,397, 6,046,935, 및 6,522,580에서 볼 수 있다.
앞에서 참조된 특허들에서 다루어진 바와 같이, 현 플래시 EEPROM 어레이들의 전하 저장소자들은 전형적으로 도전되게 도핑된 폴리실리콘 물질로부터 형성된 대부분 일반적으로 전기적인 도전성 플로팅 게이트들이다. 플래시 EEPROM 시스템들에서 유용한 메모리 셀의 대안적 유형은 비휘발성으로 전하를 저장하기 위해 도전성 플로팅 게이트 대신 비도전성 유전물질을 이용한다. 셀은 셀 채널로부터 전자들이 유전체 내로 이동되게 함으로써 프로그램되는데, 이 경우 이들 전자들은 제한된 영역 내에 트랩되어 저장된다. 유전 저장소자들을 채용하는 몇몇의 특정의 셀 구조들 및 어레이들이 미국 특허 6,925,007에 기술되어 있다.
대부분의 모든 집적회로 적용들에서와 같이, 어떤 집적회로 기능을 구현하는 데 요구되는 실리콘 기판 영역을 줄여야 한다는 압력이 플래시 EEPROM 메모리 셀 어레이에서도 또한 존재한다. 소정 크기의 메모리 카드 및 다른 유형의 패키지들의 저장 용량을 증가시키거나, 용량을 증가시키고 크기는 감소시키기 위하여 실리콘 기판의 소정 영역에 저장될 수 있는 디지털 데이터의 양을 증가시키는 것이 계속해서 바람직하다. 데이터의 저장 밀도를 증가시키는 하나의 방법은 메모리 셀당 및/또는 저장단위 또는 요소당 1비트 이상의 데이터를 저장하는 것이다. 이는 저장 요소 전하 레벨 전압 범위의 윈도우를 2 이상의 상태들로 분할함으로써 달성된다. 4개의 이와 같은 상태들을 사용함으로써 각 셀은 2비트의 데이터를 저장하게 되고, 8 상태는 저장요소당 3비트의 데이터 등을 저장하게 된다. 플로팅 게이트들 및 이들의 작동을 사용하는 복수 상태 플래시 EEPROM 구조들은 예를 들면 미국 특허 5,043,940 및 5,172,338에 기술되어 있고, 언급한 미국 특허 6,925,007는 개개의 전하 저장영역들에 1비트 이상의 데이터를 저장하기 위해 복수 상태들로 작동될 수 있는 유전 전하 저장요소들을 사용하는 구조들을 기술한다. 복수-상태 메모리 셀 어레이의 선택된 부분들은 또한 미국 특허 5,930.167 및 6,456,528에 기술된 방식으로, 다양한 이유들로, 2개의 상태들(2진)로 작동될 수 있다.
전형적인 플래시 EEPROM 어레이의 메모리 셀은 함께 소거되는 셀의 이산 "블록들"로 분할된다. 즉, 블록은 동시에 소거될 수 있는 최소 수의 셀인 소거단위이다. 각각의 블록은 전형적으로 하나 이상의 페이지들의 데이터를 저장하며, 하나 이상의 페이지가 서로 다른 서브-어레이들 또는 플레인들에서 병렬로 프로그램 또는 판독될 수도 있지만, 페이지는 프로그래밍 및 판독의 최소 단위이다. 각각의 페 이지는 전형적으로 하나 이상의 데이터 섹터를 저장하는데, 상기 섹터의 크기는 호스트 시스템에 의해 규정된다. 일례의 섹터는 이들이 저장되는 사용자 데이터 및/또는 블록에 관한 어떤 수의 바이트의 오버헤드 정보와 더불어, 자기 디스크 드라이브들과 함께 설정되는 표준을 따르는 512 바이트의 사용자 데이터를 포함한다. 이와 같은 메모리들은 전형적으로, 각각의 블록 내에서 16, 32 또는 그 이상의 페이지들로 구성되며, 각각의 페이지는 하나 또는 단지 몇 개의 호스트 데이터 섹터들을 저장한다.
메모리 어레이 내로 사용자 데이터를 프로그래밍하고 이 어레이로부터 사용자 데이터를 판독하는 동안 병행도를 증가시키기 위하여, 어레이는 전형적으로는, 플레인들이라고 통상적으로 칭하는 서브-어레이들로 분할되는데, 이 서브-어레이들은 데이터 섹터들이 동시에 여러 또는 모든 플레인들 각각에 프로그래밍되거나 이 이로부터 판독되도록 병렬 작동이 가능하도록 자신의 데이터 레지스터들 및 다른 회로들을 내포한다. 단일 집적 회로 상의 한 어레이가 물리적으로 플레인들로 분할되거나, 각 플레인이 별도의 하나 이상의 집적 회로 칩들로부터 형성될 수 있다. 이와 같은 메모리 구현의 예들이 미국 특허 5,798,968 및 5,890,192에 기술되어 있다.
메모리를 더욱 효율적으로 관리하기 위하여, 물리 블록들은 논리적으로 함께 링크되어, 가상 블록들 또는 메타블록들을 형성할 수 있다. 즉, 각 메타블록은 각 플레인으로부터 하나의 블록을 포함하도록 규정된다. 메타블록의 사용이 미국 특허 6,763,424에 기술되어 있다. 메타블록은 호스트 논리 블록 어드레스에 의해, 데이 터를 프로그래밍하고 판독하기 위한 목적지로서 확인된다. 마찬가지로, 메타블록의 모든 블록들은 함께 소거된다. 이와 같은 큰 블록들 및/또는 메타블록들과 함께 작동되는 메모리 시스템 내 제어기는 호스트로부터 수신되는 논리 블록 어드레스들(LBA)과 메모리 셀 어레이 내의 물리 블록 번호들(PBN) 간의 변환을 비롯하여 다수의 기능들을 수행한다. 블록들 내의 개별적인 페이지들은 전형적으로 블록 어드레스 내의 오프셋들에 의해 확인된다. 어드레스 변환은 종종 논리 블록번호(LBN) 및 논리 페이지의 중간 항의 사용을 수반한다.
메타블록에 저장된 데이터는 가끔 업데이트되는데, 메타블록의 데이터 용량에 따라 업데이트들이 될 가능성이 증가한다. 한 논리 메타블록의 업데이트된 섹터들은 정상적으로는 또 다른 물리 메타블록에 기입된다. 변경되지 않은 섹터들은 일반적으로는 데이터를 모으기 위해서, 동일 프로그래밍 작동의 일부로서, 원래의 메타블록에서 새로운 물리 메타블록에 카피된다. 대안적으로, 변경되지 않은 데이터는 업데이트된 데이터를 나중에 단일의 메타블록에 모을 때까지 원래의 메타블록 내에 그대로 있을 수도 있다.
몇 개의 별도의 블록들을 소거된 블록 풀(pool) 내에 유지해 두고 큰 블록 또는 메타블록 시스템들을 운용하는 것이 일반적이다. 한 블록의 용량보다 적은 하나 이상의 페이지의 데이터 업데이트시, 업데이트된 페이지들을 풀로부터 한 소거된 블록에 기입하고, 이어서 원 블록으로부터의 변경되지 않은 페이지의 데이터를 소거 풀 블록에 카피하는 것이 전형적이다. 이 기술의 변형예들이 언급한 미국 특허 6,763,424에 기술되어 있다. 시간이 지남에 따라, 호스트 데이터 파일들이 재기 입되고 업데이트되는 결과로서, 많은 블록들은 비교적 적은 수의 페이지들이 유효 데이터를 담게 되고 나머지 페이지들은 더 이상 사용되지 않는 데이터를 담고 있게 된다. 어레이의 데이터 저장용량을 효율적으로 사용할 수 있기 위해서, 논리적으로 관계된 데이터 페이지들의 유효 데이터를 복수의 블록들 중에 단편들로부터 수시로 함께 모아 몇 개의 블록들 내에 함께 합쳐놓는다. 이 프로세스를 일반적으로 "가비지 수거(garbage collection)"라고 한다.
개개의 플래시 EEPROM 셀은 한 비트 이상의 데이터를 나타내는 한 전하 저장요소 또는 단위에 한 분량의 전하를 저장한다. 저장요소의 전하 레벨은 메모리 셀의 임계 전압(일반적으로 VT라 함)을 제어하는데, 이것은 셀의 저장상태를 판독하는 토대로서 사용된다. 임계 전압 윈도우는 일반적으로 메모리 셀의 2 이상의 저장상태들의 각각마다 하나씩, 다수의 범위들로 분할된다. 이들 범위들은 개개의 셀의 저장상태들을 판정할 수 있게 하는 공칭 감지 레벨을 포함하는 가드밴드들에 의해 분리된다. 이들 저장 레벨들은 전하가 이웃한 또는 다른 관계된 메모리 셀, 또는 페이지들, 또는 블록들에서 수행되는 프로그래밍, 또는 판독, 또는 소거를 교란하는 결과로서 옮겨진다. 예를 들면, 한 라인 또는 회로를 제 2 세트의 메모리 셀과 공유하는 한 세트의 메모리 셀의 프로그래밍이, 제 2 세트의 전하 레벨들을 교란시킬 수 있다. 이러한 기생적 교란의 종국의 결과는 저장 시스템 제어기의 부분에 대해 어떠한 정정 작업도 취해지지 않는다면 조작되지 않은 노출 영역 내 데이터가 변질될 수 있고, 극한의 경우엔 데이터와 함께 저장된 어떤 오류정정 코드들(ECC) 의 정정능력들을 넘어서 변질될 수 있다는 것이다. 이러한 데이터 변질은 사용자의 데이터가 유실되는 결과를 초래하여 저장 시스템을 신뢰할 수 없게 할 것이다. 한 특정의 메모리 셀 어레이 내에서 이러한 교란들의 정도 및 본성은 이의 특정의 아키텍처, 구조 및 작동에 따른다.
그러므로, 교란 작동들로 인해 상태 범위들이 이들의 규정 범위를 완전히 벗어나 옮겨지기 전에, 이 경우 오류 데이터가 판독되는데, 전하 레벨을 이들의 상태 범위들의 중심으로 수시로 다시 복구시키는 이점이 있다. 데이터 리프레시 또는 스크럽(scrup)이라고 하는 이러한 프로세스는 미국 특허 5,532,962, 5,909,449 및 7,012,835에 기술되어 있다. 이의 또 다른 면으로서, 오류 정정 코드(ECC)를 사용하는 메모리 시스템들에서, 메모리로부터 판독된 몇 개의 오류 데이터 비트들은 ECC를 사용하여 정정될 수 있고 정정된 데이터가 메모리의 이전에 소거된 부분에 다시 기입된다. 데이터 재기입은 데이터 프로그래밍이 일반적으로 저장된 전하를 조절하고 결과적인 메모리 셀 임계레벨을 판독-검증하는 것을 셀에 저장되는 데이터를 나타내는 바람직한 범위에 이를 때까지 번갈아 행하는 것을 수반하기 때문에, 기입된 메모리 셀 임계 레벨들 각각이 이의 지정된 상태범위 내에 있게 한다.
본 명세서에 기술된 기술은 주로 명령에 응하여 메모리 시스템 외부 또는 내부로부터, 일 그룹의 셀의 모든 메모리 셀보다 적은 셀이 판독되고 이 판독을 수행하는 것이 메모리 시스템의 물리적 구조 때문에 그룹의 저장된 데이터를 교란시킬 가능성이 있는 상황에 관한 것이다. 판독되지 않은 그룹의 메모리 셀에 저장된 데이터가 주로 이러한 교란들을 받지만 명령에 응하여 먼저 판독된 메모리 셀 내 저장된 데이터는 어떤 경우들에 있어선 다른 메모리 셀의 나중에 데이터 판독들에 의해 교란될 수도 있다.
일 그룹의 메모리 셀은 전형적으로 그룹의 임의의 메모리 셀에 데이터를 기입하기 전에 동시에 소거될 수 있는 한 블록의 상당 수의 메모리 셀이지만 반드시 그러한 것은 아니다. 블록은 전형적으로 한 페이지가 데이터를 프로그래밍 및 판독하기 위한 최소단위인 복수 페이지들의 메모리 셀로 분할되지만 반드시 그러한 것은 아니다. 하나 이상의 섹터들의 데이터가 전형적으로 각 메모리 페이지에 저장된다. 한 섹터의 데이터로부터 계산된 ECC는 일반적으로 그 섹터의 데이터와 함께 저장된다. 명령된 데이터 판독들은 정상적으로는 저장된 ECC를 사용하여 판독된 데이터의 질의 체크를 포함한다. 그러나, 한 블록의 모든 페이지보다 적은 페이지 판독시, 판독되지 않은 남은 페이지에 교란의 결과가 미치는 영향은 알지 못한다. 또한, 명령을 실행할 때 먼저 판독된 한 페이지의 데이터의 질은 후속 페이지들을 판독함으로써 교란될 수도 있고, 따라서 먼저 판독된 데이터에 대한 ECC 체크는 명령된 부분적 블록 판독이 완료된 후에 그 데이터의 질을 정확히 나타내지 못할 수도 있다. 그러므로, 이러한 데이터의 후속되는 스크럽 판독들이 종종 바람직하다.
이를테면 한 블록의 모든 페이지들보다 적게, 호스트 또는 다른 것에 의해 일 그룹의 모든 메모리 셀 미만으로부터 데이터가 판독되는 것에 응하여, 하나 또는 소수의 섹터와 같이 블록 내 메모리 셀의 소 부분에 스크럽 판독이 수행되고, 스크럽 판독된 데이터의 질은 데이터의 섹터들과 함께 저장된 ECC들을 사용하여 체크된다. 스크럽 판독은 대부분 일반적으로 그러나 항시는 아니지만, 명령에 응하여 판독되지 않았던 하나 이상의 페이지들에 저장된 데이터를 판독한다. 스크럽 판독된 데이터에 과도한 수의 오류들이 있다면, 전체 블록이 리프레시된다. 리프레시 작동은 블록으로부터 모든 데이터를 판독하고, ECC들을 사용하여 데이터 내 오류들을 정정하고, 소거된 또 다른 블록에 정정된 데이터를 재기입하는 것을 수반한다. 이 프로세스는 바람직하게는 저장된 데이터가 ECC들의 사용에 의해 더 이상 정정될 수 없는 정도까지 이 저장된 데이터가 교란되는 것을 피하는데 충분히 자주, 그러나 메모리 시스템의 성능이 과도하게 저하되게 될만큼은 아니게 수행된다. 스크럽 판독을 한 블록의 소량의 저장용량으로, 이를테면 단지 하나 또는 몇 개의 섹터들 또는 하나 또는 두 페이지들로 제한함으로써, 스크럽 과정에 의한 메모리 작동에 추가되는 오버헤드가 최소화된다. 스크럽 판독 및 임의의 결과적인 리프레시는 바람직하게는 메모리 시스템이 이에 데이터 판독 또는 기입 명령들에 응하지 않을 때, 백그라운드에서 수행된다.
바람직하게 스크럽 판독은 다른 페이지들의 블록보다는 특정 부분적 블록 명령에 의해 판독에 의해 교란되는 데이터를 갖는 더 취약한 블록의 페이지 또는 페이지들에 저장된 데이터를 판독한다. 이것이 가능할 때는 언제나 단일의 가장 취약한 섹터 또는 페이지를 확인하고 이로부터 데이터를 스크럽 판독하는 것이 바람직하다. 어는 것이든, 블록에 데이터의 양이 악조건인 상황은 스크럽 판독될 필요가 있는 소량의 데이터만으로 얻어진다. 따라서, 이러한 스크럽 판독들에 의한 메모리 시스템의 성능에 대한 영향은 최소화된다.
객관적 기준은 그룹의 다른 부분들보다 명령에 의해 판독에 의해 교란에 더 취약한 페이지와 같은 메모리 셀의 그룹 또는 블록의 부분을 확인하게 설정될 수도 있다. 기준의 적어도 일부는 메모리 어레이의 구조에 따른다. 예를 들면, NAND 어레이에서, 직렬 접속된 메모리 셀의 스트링들의 양 단부에 워드 라인들에 의해 형성된 페이지들은 이들 사이에 나머지 페이지들보다 블록의 다른 페이지의 프로그래밍으로부터 교란들을 더 받기 쉽다는 것이 인식된다. 이것은 스트링들의 단부에 있는 메모리 셀이 단부로부터 멀리 위치한 메모리 셀보다 다르게 행동하기 때문이다. 이들 페이지들 중 하나 또는 이들 페이지에 데이터가 명령에 응하여 판독되지 않았다면, 이들 페이지들 중 판독되지 않은 페이지의 데이터는 다른 판독되지 않은 페이지들에서보다 큰 정도로 교란될 수 있다. 이때 스크럽 판독은 이들 더 취약한 페이지들 중 판독되지 않은 한 페이지 또는 이들 페이지에 대해 수행된다.
더 취약한 페이지(들)을 선택하기 위한 기준의 또 다른 것은 명령에 응하여 그리고 어떤 순서로 블록의 어떤 페이지들이 판독되는가에 따라 수립될 수도 있다. 예를 들면, 위의 예에서, 블록의 극한 페이지들 중 하나 또는 둘 다가 명령에 응하여 판독되었을지라도, 이들 페이지들 중 하나는 명령의 실행으로 먼저 판독되었다면 바람직하게 스크럽 판독되고, 이어서 블록의 다른 페이지들의 후속 판독에 의해 교란된다. 이러한 경우에, 정규 명령에 의해 판독의 부분으로서 수행되는 ECC 체크는 후속 페이지들을 판독에 기인할 수도 있었을 잠재적 교란들 때문에 그 페이지에 데이터의 질을 더 이상 나타내지 않을 수 있다. 그러나, 이들 극한 페이지들 중 하나 또는 둘 다가 명령된 데이터 판독 과정의 끝에서 또는 끝을 향하여 명령에 응하여 판독된다면, 정규 데이터 판독의 부분으로서 일어나는 ECC 비트 오류 체크는 동일 페이지(들)의 또 다른 스크럽 판독이 일어날 필요가 없도록 이들 페이지(들)에서 데이터 질의 정보를 제공한다.
더 취약한 페이지를 확인하는 기준 중 보다 가능한 한 가지 기준은 명령에 응하여 판독되지 않으나, 이와 같이 판독된 페이지에 인접하여 물리적으로 위치된 페이지를 확인하는 것이다. NAND 메모리 스트링들의 극 단부들에 두 페이지들은 가능하게는 제외하고, 교란들은 블록 내 다른 페이지들보다 이 페이지에서 더 일어나기 쉽다. 이것은 메모리 셀 어레이의 특정 구조에 따를 것이다.
설정된 또 다른 기준은 블록의 페이지들에 저장된 데이터의 상대적 패턴들일 수 있다. 예를 들면, NAND 메모리 어레이에서, 이들의 가장 낮게 저장된 전하 레벨 또는 그 근처에서 메모리 셀의 전하 레벨들의 교란들은 이들의 가장 크게 저장된 전하 레벨 또는 그 근처에서 전하 레벨들을 가진 것들보다 더 할 것이다. 이것은 가장 낮은 전하 레벨을 가진 메모리 셀에 의해 경험되는 잠재 교란 전압들은 가장 큰 전하 레벨을 가진 메모리 셀의 잠재 교란 전압보다 더 크기 때문이다. 그러므로, 메모리 셀에 저장된 압도적으로 낮은 전하 레벨들에 의해 표현되는 데이터를 가진 페이지는 더 높은 저장된 전하 레벨들에 의해 주로 표현되는 데이터를 가진 페이지보다 더 교란들에 취약할 것이다. 따라서 이것은 스크럽 판독을 위한 후보로서 더 취약한 페이지를 선택하기 위해 사용될 수 있는 또 다른 팩터이다.
특정의 부분적으로 판독된 블록에 더 또는 가장 취약한 페이지를 확인하기 위한 규정된 기준을 적용한 결과로서, 이러한 페이지가 전혀 확인되지 않는다. 이 경우, 이 특정 블록에 어떠한 스크럽 판독도 일어나지 않는다. 이것은 명령에 응하여 판독되는 데이터의 ECC들의 사용에 의해 측정된 것보다 블록의 임의의 페이지들에 데이터의 질이 현저하게 떨어지지는 않을 것이다. 예를 들면, 위에 기술된 바와 같이, NAND 스트링 어레이의 극 페이지들 중 적어도 하나가 명령된 판독 과정의 끝 근처에서 판독된다면, 이 판독으로부터 얻어지는 ECC들은 이에 저장된 데이터의 질의 현재의 표시를 제공한다. 비트 오류 수가 제로 또는 어떤 규정된 임계값보다 작으면, 페이지에 데이터 질은 수락가능한 것으로 알려지고, 이것은 블록에 저장된 데이터의 최악의 질의 표시인 것으로 취해질 수 있다. 어떤 다른 페이지의 스크럽 판독은 불필요하다. 한편, 비트 오류 수가 규정된 임계값 또는 이상이라면, 블록 내 모든 데이터의 리프레시는 별도의 스크럽 판독을 행할 필요없이 표시된다.
본 발명의 추가의 면들, 잇점들 및 특징들은 이의 예들의 다음 설명에 포함되고, 이 설명은 첨부한 도면들에 관련하여 취해질 것이다.
여기 참조된 모든 특허들, 특허출원들, 기사들, 책자들, 명세서들, 그외 공보들, 문서들 및 등은 모든 목적을 위해 이들 전체를 참조로 여기 포함시킨다. 포함시킨 공보들, 문서들 등 중 임의의 것과 본 문서의 텍스트 사이에 용어의 정의 또는 사용에서 어떤 비일관성 또는 상충되는 부분에 대해서는, 본 문서에서 용어의 정의 또는 사용이 우선한다.
도 1a 및 도 1b는, 함께 작동하는 각각 비휘발성 메모리 및 호스트 시스템의 블록도.
도 2는, 도 1a의 메모리 어레이의 제 1 조직예를 도시한 도면.
도 3은, 도 1a의 메모리 어레이에 저장된 오버헤드 데이터를 가진 호스트 데이터 섹터의 예를 도시한 도면.
도 4는, 도 1a의 메모리 어레이의 제 2 조직예를 도시한 도면.
도 5는, 도 1a의 메모리 어레이의 제 3 조직예를 도시한 도면.
도 6은, 도 1a의 메모리 어레이의 제 3 조직예의 확장을 도시한 도면.
도 7은, 한 특정 구성을 가진 도 1a의 어레이의 일 그룹의 메모리 셀의 회로도.
도 8은, 일 그룹의 프로그램된 메모리 셀의 전압 임계 레벨들의 분포예의 곡선을 도시한 도면.
도 9a, 도 9b 및 도 9c는, 블록에 저장된 데이터를 리프레시하기 위해 도시한 단일 블록 내 서로 다른 메모리 작동 패턴들의 3가지 예를 도시한 도면.
도 10은, 메모리 스크럽 및 리프레시 작동에서 주 단계들의 제 1 예를 도시한 흐름도.
도 11은, 메모리 스크럽 및 리프레시 작동에서 주 단계들의 제 2 예를 도시한 흐름도.
메모리 아키텍처 및 이들의 작동
먼저 도 1a를 참조하면, 플래시 메모리는 메모리 셀 어레이 및 제어기를 포함한다. 도시된 예에서, 2개의 집적회로 장치들(칩들)(11, 13)은 메모리 셀 어레 이(15) 및 여러 논리회로들(17)을 포함한다. 논리회로들(17)은 데이터, 명령 및 상태회로들을 통해 별도의 칩 상에 제어기(19)와 인터페이스하며, 어드레싱, 데이터 전송 및 감지, 및 그외 지원을 어레이(13)에 제공한다. 다수의 메모리 어레이 칩들은 제공되는 저장용량에 따라, 하나 내지 다수일 수 있다. 대안적으로 제어 및 부분 또는 전체 어레이가 단일 집적회로 칩에 결합될 수 있지만 이것은 현재 경제적 대안은 아니다.
전형적인 제어기(19)는 마이크로프로세서(21), 주로 펌웨어를 저장하기 위한 판독전용 메모리(ROM)(23) 및 주로 메모리 칩들(11, 13)에 기입 또는 이들로부터 판독되는 사용자 데이터의 일시 저장을 위한 버퍼 메모리(RAM)(25)를 포함한다. 회로들(27)은 메모리 어레이 칩(들)과 인터페이스하며 회로들(29)은 접속들(31)을 통해 호스트와 인터페이스한다. 데이터의 무결성은 이 예에서는 코드 계산 전용의 회로들(33)을 사용하여 ECC를 계산함으로써 판정된다. 사용자 데이터가 저장을 위해 호스트에서 플래시 메모리 어레이로 전송되고 있을 때, 회로는 데이터로부터 ECC를 계산하고 코드가 메모리에 저장된다. 이 사용자 데이터가 추후 메모리로부터 판독될 때, 이들은 다시, 동일 알고리즘에 의해 ECC를 계산하고 이 코드를 데이터로 계산 및 저장된 것과 비교하는 회로(3)를 통과하게 된다. 이들 비교시, 데이터의 무결성이 확인된다. 이들이 다르다면, 이용되는 특정의 ECC 알고리즘에 따라, 알고리즘에 의해 지원되는 개수까지, 오류가 난 비트들이 확인되어 정정될 수 있다. 전형적으로, 512 바이트 섹터 내에 8비트까지 정정할 수 있는 ECC 알고리즘이 사용된다.
도 1a의 메모리의 접속들(31)은 호스트 시스템의 접속들(31')과 짝을 이루며, 이의 예가 도 1b에 주어진다. 데이터는 인터페이스 회로들(35)을 통해 도 1a의 호스트와 메모리간에 전송된다. 전형적인 호스트는 또한 마이크로프로세서(37), 펌웨어 코드를 저장하기 위한 ROM(39) 및 RAM(41)을 포함한다. 다른 회로들 및 서브시스템들(43)은 흔히 특정 호스트 시스템에 따라, 고용량 자기 데이터 저장 디스크 드라이브, 키보드, 모니터 등을 위한 인터페이스 회로들을 포함한다. 이러한 호스트들의 어떤 예들은 데스크탑 컴퓨터들, 랩탑 컴퓨터들, 휴대 컴퓨터들, 팜탑 컴퓨터들, PDA들, MP3 및 그외 오디오 플레이어들, 디지털 카메라들, 비디오 카메라들, 전자게임기들, 무선 및 유선 전화장치들, 자동응답기들, 음성 레코더들, 네트워크 라우터들, 등을 포함한다.
도 1a의 메모리는 제어기 및 이의 모든 메모리 어레이 회로 장비를 도 1b의 호스트에 착탈 가능하게 접속될 수 있는 형태로 내장하는 소형 엔클로즈 카드로서 구현될 수도 있다. 즉, 접속들(31, 31')이 짝을 이룸에 따라 카드는 분리되어 또 다른 호스트로 옮겨지거나, 또 다른 카드를 호스트에 연결함으로써 교체될 수 있다. 대안적으로, 메모리 어레이 장치들은 제어기 및 접속들(31)을 내장한 카드에 전기적으로 그리고 기계적으로 접속될 수 있는 별도의 카드 내에 내장될 수도 있다. 또 다른 대안으로서, 도 1a의 메모리는 도 1b의 호스트 내에 내장될 수도 있는데, 접속들(31, 31')은 영구적으로 접속된다. 이 경우, 메모리는 일반적으로 다른 성분들과 함께 호스트의 엔클로저 내에 내장된다.
이 설명에서 사용되는 어떤 용어들은 설명으로부터 득을 볼 수 있다. "섹터" 는 "섹터"는 호스트 판독 및 기입 작동들 동안 액세스되는 독립적으로 어드레스가능한 단위들의 데이터를 지칭한다. 한 섹터의 데이터는 전형적으로 크기가 512 바이트이다.
여기에서 사용되는 바와 같은 "메모리 시스템"은 하나 이상의 비휘발성 메모리 장치들 및 메모리에 및 이로부터 데이터를 저장 및 불러내기 위해 필요한 하드웨어 및/또는 소프트웨어로 구성된 시스템이다. 전체 메모리 시스템의 가변부분들은 완전히 데이터 저장 전용의 서브시스템 상에, 또는 호스트 시스템 자체에 기능적으로 구현될 수도 있다. 메모리 시스템은 매우 소형의 카드 형태와 같이, 호스트 시스템에 내장되거나, 착탈 가능할 수 있다. 착탈 가능 메모리 시스템의 부분들은 예로서 저장 매체 부분이 제어기 부분으로부터 착탈 가능하다면, 자체가 착탈 가능할 수 있다. 메모리 시스템 내 특정하게 데이터 저장 전용의 호스트 시스템의 임의의 부분은 메모리 시스템의 부분으로서 간주된다. 이러한 호스트 기능성은 호스트 시스템 상에 놓인 임의의 하드웨어 외에 특별화된 소프트웨어 라이브러리들, 드라이버들, 또는 애플리케이션들을 포함할 수 있다.
여기에서 사용되는 목적들을 위해서, "호스트 시스템"은 일반적으로 데이터 저장 이외의, 메모리 시스템에 착탈 가능하게 접속되거나 그 내부에 메모리 시스템이 내장된 시스템이다. 유일한 목적이 데이터 저장인 호스트 시스템들이 있을 수 있다.
여기 기술된 플래시 메모리에 저장된 데이터를 리프레시 및 스크럽하기 위한 다양한 기술들이 다양한 특정의 구성들을 갖는 시스템들에 구현될 수 있고, 이의 예들이 도 2 내지 도 6에 표시된다. 도 2는 메모리 셀의 블록들로 그룹으로 나뉘고, 각 블록 내 셀이 일반적으로 동시에, 단일 소거작동의 부분들로서 함께 소거 가능한, 메모리 어레이의 부분을 도시한 것이다. 물리적 블록은 소거의 최소단위이다.
도 2의 개개의 메모리 셀 블록들의 크기는 다양할 수 있으나 상업적으로 실현된 한 가지 형태는 한 개개의 블록에 단일 섹터의 데이터를 포함한다. 이러한 데이터 섹터의 내용들이 도 3에 도시되었다. 사용자 데이터(51)는 전형적으로 512 바이트의 데이터이다. 사용자 데이터(51) 외에도 사용자 데이터로부터 계산된 ECC(53), 섹터 데이터에 관계된 파라미터들(55) 및/또는 섹터가 프로그램되고 파라미터(55)로부터 계산된 ECC(57)를 포함하고 임의의 기타 오버헤드 데이터가 포함될 수 있는 블록을 포함하는 오버헤드 데이터이다. 파라미터들(55)은 블록에 의해 경험되는 프로그램/소거 사이클들의 수("핫 카운트들")에 관계된 량을 포함하고, 이 량은 각 사이클 또는 현재 수의 사이클들 후에 업데이트된다. 이 경험량의 1회 사용은 모든 블록들의 사용을 균등하게 하기 위해서(마모 레벨링) 서로 다른 물리적 블록 어드레스들에 논리 블록 어드레스들을 정규로 재 매핑하는 것이다. 경험량의 또 다른 사용은 서로 다른 섹터들에 의해 경험되는 사이클들의 수의 함수로서 전압들 및 이외에 프로그래밍, 판독 및/또는 소거의 파라미터들을 변경하는 것이다.
또한 파라미터들(55)은 메모리 셀의 "회전"이라고도 하는, 이들 메모리 셀의 저장상태들 각각에 할당되는 비트값들의 표시를 포함할 수 있다. 즉, 데이터의 논리상태들은 서로 다른 물리 저장상태들에 매핑된다. 또한, 이것은 마모 레벨링에서 이로운 효과가 있다. 상태 또는 상태들을 나타내는 파라미터들(55)에 하나 이상의 플래그들이 또한 포함될 수 있다. 블록을 프로그래밍 및/또는 소거하기 위해 사용될 전압 레벨들의 표시들은 파라미터들(55) 내에 저장될 수 있고, 이들 전압들은 블록 및 다른 요인들에 의해 경험되는 사이클들의 수가 변할 때 업데이트된다. 오버헤드 파라미터들(55)의 다른 예들은 블록 내 임의의 결함 셀의 식별, 이 물리블록에 매핑되는 데이터 블록의 논리 어드레스 및 주 블록이 결함이 있는 경우 임의의 대용 물리 블록의 어드레스를 포함한다. 임의의 메모리 시스템에서 사용되는 파라미터들(55)의 특정 조합은 설계에 따라 다를 것이다. 또한, 오버헤드 데이터의 일부 또는 전부는 사용자 데이터를 내포하는 블록에서보다는 이러한 기능에 전용되거나, 오버헤드 데이터가 관계되는 물리블록들에 저장될 수 있다.
도 4의 복수-섹터 물리블록은 도 2의 단일 데이터 섹터 블록과는 다르다. 여전히 소거의 최소단위인 예로서의 블록(59)은 4개의 페이지들 0-3을 내포하며, 그 각각은 최소단위의 프로그래밍이다. 데이터의 하나 이상의 호스트 섹터들은 적어도 섹터의 데이터로부터 계산된 ECC를 포함하는 오버헤드 데이터와 함께, 각 페이지에 저장되고, 도 3의 데이터 섹터 형태일 수 있다. 모든 페이지 미만의 데이터 업데이트시, 업데이트된 데이터는 전형적으로 소거된 블록 풀로부터 한 페이지의 소거된 블록에 저장되고 남아 있는 변경되지 않은 페이지들에 데이터는 원 블록으로부터 새로운 블록에 카피된다. 이어서 원 블록이 소거된다. 이 큰 블록 관리 기술의 변형들은 원 블록으로부터 데이터를 이동시키거나 이를 소거함이 없이 업데이트된 데이터를 한 페이지의 또 다른 블록에 기입하는 것을 포함한다. 이에 따라 복수 페이 지들은 동일 논리 어드레스를 갖게 된다. 가장 최근의 한 페이지의 데이터는 어떤 편리된 기술에 의해서 이를테면 섹터 또는 페이지 오버헤드 데이터에 필드로서 기록되는 프로그래밍시 확인된다.
또 다른 복수-섹터 물리 블록 배열이 도 5에 도시되었다. 여기에서, 총 메모리 셀 어레이는 물리적으로 2 이상의 플레인들로서로 분할되고, 4개의 플레인들 0-3이 도시되었다. 각 플레인은 그 자신의 데이터 레지스터들, 감지 증폭기들, 어드레싱 디코더들 등을 대부분 다른 플레인들에 관계없이 작동할 수 있기 위해서 구비하는 메모리 셀의 서브-어레이이다. 모든 플레인들은 단일 집적회로 장치 또는 복수의 장치들 상에 제공될 수 있고, 일예는 하나 이상의 구별되는 집적회로 장치들로부터 각 플레인을 형성하는 것이다. 도 5의 일예의 시스템에 각 블록은 16 페이지들 P0-P15를 내포하고, 각 페이지는 하나, 둘 또는 그 이상의 호스트 데이터 섹터들 및 어떤 오버헤드 데이터 용량을 갖는다.
또 다른 메모리 셀 배열이 도 6에 도시되었다. 각 물리 플레인은 상당 수의 블록들의 셀을 내포한다. 작동의 병행도를 증가시키기 위해서, 서로 다른 플레인들 내에 블록들은 논리적으로 연결되어 메타블록들을 형성한다. 하나의 이러한 메타블록이 플레인 0의 블록 3, 플레인 1의 블록 1, 플레인 2의 블록 1 및 플레인 3의 블록 2로 형성된 것으로서 도 6에 도시되었다. 각 메타블록은 논리적으로 어드레스될 수 있고 메모리 제어기는 개개의 메타블록들을 형성하는 블록들을 할당하고 이들을 관리한다. 호스트 시스템은 바람직하게는 개개의 메타블록들의 용량과 동일한 데이터 단위들로 메모리 시스템과 인터페이스한다. 예를 들면 도 6의 이러한 논리 데이 터 블록 61은 메타블록을 구성하는 블록들의 물리 블록 번호들(PBN)에 제어기에 의해 매핑되는 논리 블록 어드레스들(LBA)에 의해 확인된다. 메타블록의 모든 블록들은 함께 소거되며, 논리 메타블록 내 각 물리 블록으로부터의 개개의 페이지들은 바람직하게는 동시에 프로그램되고 판독된다.
도 2 ~ 6에 관하여 위에 기술된 메모리들을 구현하기 위해 채용될 수 있는 많은 서로 다른 메모리 어레이 아키텍처들, 구성들 및 특정의 셀 구조들이 있다. NAND 유형의 메모리 어레이의 한 블록이 도 7에 도시되었다. 상당수의 컬럼으로 직렬접속된 다수 스트링들의 메모리 셀은 전압 Vss의 공통 소스(65)와 비트 라인들 BL0-BLN 중 하나 사이에 접속되며 이들 비트 라인들은 어드레스 디코더들, 드라이버들, 판독 감지 증폭기들 등을 내포하는 회로들(67)에 접속된다. 구체적으로, 하나의 이러한 스트링은 스트링의 서로 대향하는 양단부에 선택 트랜지스터들(77, 79) 사이에 직렬로 접속된 전하 저장 트랜지스터들(70, 71.. 72, 74)을 내포한다. 이 예에서, 각각의 스트링은 16개의 저장 트랜지스터들을 내포하나 이외의 개수도 가능하다. 워드 라인들(WL0 - WLl5)은 개개가 각 스트링의 한 저장 트랜지스터를 횡단하여 어드레스 디코더들 및 워드 라인들의 전압원 드라이버들을 내포하는 회로들(81)에 접속된다. 라인들(83, 84) 상의 전압들은 전압원(65) 및/또는 이들의 선택 트랜지스터들을 통해 비트 라인들(BL0-BLN)에 함께 블록 내 모든 스트링들의 접속을 제어한다. 데이터 및 어드레스들은 메모리 제어기로부터 온다.
블록의 전하 저장 트랜지스터들(메모리 셀)의 각 행은 함께 프로그램되고 판독되는 페이지를 형성한다. 적합한 전압이 데이터를 프로그래밍 또는 판독하기 위 해 이러한 페이지의 워드 라인(WL)에 인가되고 이때 나머지 워드 라인들에 인가되는 전압은 이들의 각각의 저장 트랜지스터들을 도통되게 하도록 선택된다. 저장 트랜지스터들의 한 행을 프로그래밍 또는 판독(페이지)하는 과정에서, 비선택된 행들 상에 이전에 저장된 전하 레벨들은 모든 스트링들에 그리고 이들의 워드 라인들에 인가되는 전압들 때문에 교란될 수 있다.
4 상태에서 플래시 메모리 어레이 내 개개의 저장소자들을 작동시키는 예가 도 8에 도시되었다. 4개의 임계 전압(VT) 레벨 범위들의 각각 내에, 섹터 또는 페이지와 같은 한 단위의 메모리 셀 내 다수의 저장소자들의 분포가 도시되었다. 임계 전압 가드밴드들(155, 156, 157)은 임의의 셀로부터의 데이터가 없을 때 저장 상태 임계레벨 범위들 간에 유지된다. 이것은 한 단위의 셀의 상태들을 프로그래밍 및 검증한 직후에 존재하는 요망되는 프로그램된 상태이다. 그러나, 이어서 다른 단위들이 프로그램, 판독 및/또는 소거될 때, 이 데이터가 교란될 수 있다. 교란들은 일측으로 또는 다른 측으로 임계레벨들이 이웃 가드밴드들로 옮겨짐으로써 나타난다. 이것은 각 상태 분포 내에 얼마간의 셀에 대해 발생할 수 있거나 전체 분포가 교란들의 특성에 따라, 이웃 가드밴드들로 옮겨지거나 확산할 수 있다.
정상 판독에 있어서, 각각의 가드밴드들(155, 156, 157)의 거의 중간에 브레이크 포인트 레벨(159, 160, 161)이 사용된다. 즉, 판독되는 셀의 임계 레벨들은 이들 브레이크 포인트 레벨과 비교되어 이들의 저장 상태를 판정한다. 한 상태 내에 셀의 임계레벨들이 구분레벨을 지나 가드밴드를 거쳐 옮겨질 때 오류들이 일어 난다. 예를 들면, 상태 1에서 셀의 임계레벨들이 이들이 구분레벨 159 미만일 때까지 하측으로 옮겨질 때, 이들 셀은 상태 0에 있는 것으로 판독된다. 유사하게, 상태 1에 셀의 임계레벨들이 구분레벨 160 위까지 높게 옮겨진다면, 정상적으로 판독하였을 때 이들 셀은 상태 2에 있다고 할 것이다. 이러한 판독 데이터 오류들은 ECC 과정에 의해 확인된다.
그러나, 정정하기 위해 사용되는 특정의 ECC 알고리즘에 대해 너무 많은 이러한 오류들이 있을 때, 상태 사이에 서로 다른 구분 레벨들을 갖고 두 번째 판독이 행해질 수도 있다. 구분 레벨(159, 160, 161)은 교란들로부터 저장 임계레벨들의 예상된 시프트 방향으로 이들 각각의 가드밴드들 내에서 옮겨지므로, 옮겨진 레벨들은 이제 이들이 교란되기 전에 있었던 바와 가드밴드의 동일한 측 상에 있다. 이것이 여전히 ECC에 의해 정정될 수 있는 데이터를 판독하지 않는다면, 스크럽 작동은 실패된 것으로 결정될 것이며 정정 불가한 오류들이 존재하는 페이지 또는 메모리 블록은 배드(bad)로서 마킹된다. 이어서, 판독될 수 없는 데이터는 유실된다. 이들 데이터는 초기에 이들의 정정 임계 레벨 범위에 있는 것으로 원 프로그래밍의 부분으로서 검증되었기 때문에, 시간에 걸쳐 작동들을 교란시키는 이 축적 효과는 이러한 불리한 결과를 피하기에 충분하게 빈번히 스크럽하는 내구성을 나타낸다.
또한, 유효한 데이터도 판독되는 셀의 저장 레벨들을 더욱 체크하고 조절하는 것이 바람직할 수도 있다. 이것은 여러 상태들(도 8 참조)에 대해 규정된 레벨들이 정상적 판독 데이터 오류를 야기하는 구분레벨을 지나지 않았을지라도, 저장된 전하가 이들 레벨들 사이에 가드밴드로 이동한 임의의 셀을 확인하기 위해서, 초기 판독에서 사용된 것과는 다른 구분 레벨들로 데이터를 다시 판독하는 것을 수반한다. 예를 들면, 이 판독동안 사용된 구분레벨들은 도 8의 가드밴드들(155, 156, 157)의 에지들로 옮겨진다. 이 판독동안 사용되는 구분레벨들은 예를 들면 도 8의 가드밴드들(155, 156, 157)의 에지들로 옮겨진다. 이어서 판독 데이터에 오류들이 존재하는 것으로 ECC의 사용에 의해 판정된다면, 데이터의 오류 비트들은 메모리 셀 임계레벨들이 가드밴드들로 이동하게 하는 전하 레벨들의 이동을 나타낸다. 따라서, 이들 데이터를 정정 및 재기입하는 것이 바람직할 수 있고, 따라서 저장된 전하 레벨들은 도 8의 이들의 의도된 상태 분포들 이내로 가드밴드들로부터 옮겨질 것이다.
데이터 스크럽 리프레시
플래시 메모리 시스템에 포함된 특정 스크럽 작동은 동일 집적회로칩 상에 또 다른 일군의 메모리 셀 상에 수행되는 프로그래밍, 판독 또는 소거 작동들에 의해 야기되는 일군의 메모리 셀에 저장 레벨들의 교란들을 보상한다. 이러한 데이터 교란들에 대한 잠재성은 메모리 셀 어레이들의 크기가 축소됨에 따라 증가한다. 공간을 절약하기 위해서, 또 다른 그룹의 메모리 셀을 프로그래밍, 판독 또는 소거 동안 일 그룹이 전압들 및/또는 전류들에 잠재적으로 반복하여 노출을 경험하게 다수 그룹들의 메모리 셀 간에 여러 신호라인들이 공유되게 하는 경향이 있다. 조직적이고 연속적으로, 모든 그룹들의 메모리 셀에 저장된 데이터를 스크럽함으로써, 시간에 따라 저장된 데이터의 변질은 현저하게 감소된다. 또한, 증가된 수의 더 적 은 전압임계 상태 범위들을 가진 메모리 셀당 증가된 수의 비트들의 저장은 교란된 전하 레벨들이 조직적 방법으로 이들의 의도된 레벨들로 이들을 복구함으로써 정정될 때 실제적이 된다.
스크럽 작동은 잠재적으로 교란 신호들에 노출을 받은 영역들에 데이터를 판독하는 것과, 이 데이터가 교란된 것으로 판정된다면 어떤 정정작동을 수행하는 것을 수반한다. 교란들은 예를 들면 데이터를 판독하고 데이터의 ECC 체크의 결과를 얻음으로써, 데이터의 무결성을 체크함으로써 검출될 수도 있다. 정정작동은 동일 위치에 또는 다른 위치에 데이터를 재기입하는 것을 수반할 수 있고, 이것은 고 레벨 결함 또는 데이터 관리 작동을 수반할 수 있다.
스크럽 작동들은 바람직하게는 메모리 시스템이 데이터를 판독 또는 기입하고 있지 않을 때 백그라운드에서 수행된다. 메모리 시스템은 호스트가 데이터를 저장 또는 불러들일 것을 메모리에 언제 요청하지 않을 것인지를 표시하게 위해 호스트를 참조할 수 있고, 이동안 스크럽 작동이 수행될 수 있다.
하나 이상의 특정 오류들이 특정 스크럽 판독에서 검출될지라도, 시스템 수행을 유지하기 위해서, 데이터 판독시 ECC에 의해 오류(들)이 수정될 수 있다면 정정 작동을 취하지 않을 것으로 판정될 수도 있을 것이다. 개개의 섹터들의 사용자 데이터 및 오버헤드 데이터가 이들 자신의 ECC를 갖고 있을 때, 오버헤드 데이터에 데이터 오류들은 사용자 데이터에 오류들보다 정정되지 않게 될 가능성이 덜하게 된다.
많은 수의 호스트 데이터 섹터들을 개별적으로 저장하는 큰 블록들 또는 메 타블록들의 메모리 셀을 이용하는 메모리 시스템들에서, 스크럽 작동 동안 정정되는 제 1 물리적 블록의 섹터(들)의 데이터는 제 2 블록에 재기입될 수 있고 이 제 2 블록에는 위에 기술된 메모리 관리의 소거 풀링 방법과 일관되게, 제 1 블록의 나머지 데이터 섹터들이 카피된다. 대안적으로, 한 블록 또는 메타블록은 정정된 섹터(들)과 동일한 블록들 또는 메타블록들로부터 다른 데이터 섹터들이 어떤 다른 이유로 옮겨질 필요가 있을 때까지 스크럽 정정된 데이터 섹터들의 임시 저장에 전용될 수 있고, 이때 스크럽 정정된 데이터 섹터들은 동일 블록 또는 메타블록의 다른 데이터 섹터들과 재결합될 수 있다. 이것은 시스템 성능을 개선한다.
정정작동이 어떤 명시된 데이터에 취해질 필요가 있는 것으로 일단 판정되면, 이 작동은 이때 정정작동을 취함으로써 시스템 성능에 악영향을 미칠 수 있다면, 그리고, 필요하다면, 정정작동이 나중에 행해지기 전에 데이터가 정정작동없이 판독될 수 있다면, 미루어질 수도 있다.
지연시 결정된 모든 정정된 데이터, 어드레스들 및 다양한 파라미터들은 지연된 정정작동이 실행될 때 임시로 저장되고 나중에 불러들여진다. 메모리 셀의 큰 블록들 또는 메타블록들로 조직된 시스템들에서, 정정 스크럽 작동들은 주어진 블록 또는 메타블록으로부터 주어진 량의 데이터가 정정작동을 위해 스케쥴될 때까지 지연될 수 있고, 이 경우 주어진 블록 또는 메타블록의 모든 지연된 데이터 섹터들은 동시에 정정된다. 이것은 주어진 블록 또는 메타블록의 데이터 섹터들이 다시 함께 합체될 때 일어나는 카피 및 재기입 데이터량을 감소시킬 수 있다.
도 9a, 도 9b 및 도 9c는 블록의 모든 페이지들 미만이 판독될 때, 특히 하 나 또는 몇 개의 페이지가 복수 회 판독되고 나머지 페이지들의 블록은 판독되지 않을 때, 한 블록의 개개의 페이지들이 받을 수 있는 스트레스들의 3가지 예들을 도시한 것이다. 이들 예들에서, 블록은 32 페이지들 0-31을 내포한다.
도 9a의 제 1 예에서, 페이지 1은 블록의 다른 페이지들의 어느 것도 판독되지 않을 때의 기간 동안 10회 판독되었다. 최악의 경우의 시나리오는 도 9a에 의해 도시된 상황인 시스템이 반복하여 단일 페이지 판독을 수행할 때이다. 동일 블록에 다른 페이지들의 메모리 셀에 저장된 전하 레벨들은 단일 페이지가 판독될 때마다 잠재적으로 교란 전압들을 받을 수 있다. 이들 다른 페이지들에서 전하 레벨들에 시프들, 및 이에 따라 메모리 셀 임계 레벨들에서 시프트들은 검출되지 않는다. 도 9a의 페이지 1로부터 데이터의 복수의 판독들 각각마다, 이 데이터의 유효성은 이의 저장된 ECC의 사용에 의해 체크된다. 이에 따라 페이지 1에 저장된 데이터를 리프레시하는 어떤 필요성은 이에 따라 이의 데이터를 판독하는 정규 부분으로서 발견된다. 그러나, 다른 페이지들 0 및 2-31의 데이터에 어떠한 이러한 체크도 행해지지 않는다. 페이지들 0 및 2-31의 메모리 셀에 전하 레벨들은 값이 페이지 1을 판독한 결과로서 이들에 인가되는 전압들에 의해서 변경될 수 있다(교란된다). 이러한 교란들의 원들은 모든 페이지들을 지나는 비트 라인들 상에 전압들, 이들의 메모리 셀을 전도성이 있게 하는 비선택된 페이지들 0 및 2-31의 워드 라인들에 인가되는 전압들 등을 포함한다.
도 9a 예의 페이지 1이 판독될 때마다, 이들 전압들은 블록 내 나머지 페이지들의 메모리 셀에 스트레스를 야기한다. 이것은 논의 목적으로, 1의 판독 스트레 스인 것으로 간주될 수 있다. 그러므로, 도 9a에 나타낸 바와 같이, 페이지 1의 10회 판독들은 이 기간 동안 10의 스트레스를 블록의 다른 페이지들 0 및 2-31의 각각이 받게 한다. 개개의 페이지들 0 및 2-31에 미치는 이 스트레스의 영향은 교란들에 페이지들의 취약성에 달려있다. 여기 다른 어떤 곳에서 기술된 바와 같이, 페이지들 0 및 2-31의 특정의 한 페이지의 취약성은 많은 요인들에 좌우된다. 한 요인은 블록 내 이의 위치이다. 끝 페이지들 0 및 31은 이들에 가해지는 높은 전압들때문에 가장 취약하다. 이 취약성은 모두 2006년 12월 29일에 출원된 계류중의 미국 특허출원 11/618,482 및 11/618,498에 기술되어 있다. 또한, 페이지들 0 및 2는 이들이 수회 판독되고 있는 페이지 1에 이웃하기 때문에 페이지들 3-31보다 더 높은 취약 정도를 갖는다. 또 다른 취약 요인은 판독되지 않는 개개의 페이지에 저장된 데이터의 패턴이다. 페이지들 0 및 2-31이 다른 레벨들의 취약성을 가질 수도 있기 때문에, 판독 스트레스의 동일 레벨에 노출로부터 개별적으로 이들에 미치는 영향은 동일하지 않을 수도 있다.
도 9b의 예에서, 페이지들 0 및 1에 저장된 데이터는 페이지들 2-31에 데이터가 전혀 판독되고 있지 않을 때의 기간 동안, 각각 10회 판독된다. 이것은 판독되지 않은 페이지들 2-31의 각각에 20의 스트레스 레벨을 야기한다. 판독된 페이지들 0 및 1 각각은 페이지들 0 및 1 중 다른 것의 데이터가 판독될 때마다 한번에 10의 스트레스 레벨을 갖는다.
유사하게, 도 9c의 예에서, 블록의 나머지 페이지들 3-31이 전혀 판독되지 않을 동안 3개의 페이지들 0-3 각각으로부터 10회에 데이터가 판독된다. 페이지들 3-31 각각에 판독 스트레스는 페이지들 0-2에 총 30번의 판독들 각각에 한번으로, 30이 된다. 페이지들 0-2 각각은 다른 두 페이지들의 판독들 각각에 한번으로, 20 단위들의 스트레스를 받는다.
특정 판독 스크럽 프로세스 예
도 9a ~ 9c의 목적은 부분적으로 그리고 반복하여 판독된 블록의 페이지들이 받는 스트레스 레벨들을 시사하는 것이다. 이들 스트레스 레벨들은 모니터될 수도 있을 것이며, 블록에 페이지들의 서로 다른 취약성과 조합되었을 때, 이러한 복수의 판독들 후에 데이터가 교란될 수 있을 페이지를 확인하는데 사용될 수도 있을 것이다. 이것은 데이터 오류들을 내포할 수 있을 블록의 페이지이다. 이 페이지는 이에 저장된 데이터 질을 판정하기 위해 스크럽 판정될 것이다. 이러한 페이지에 데이터질이 양호하다면, 이에 따라 블록의 다른 페이지들에 저장된 데이터질은 더 좋게 된다. 그러므로 블록의 단지 한 페이지만이 모든 이의 페이지보다 적은 임의의 판독 회수 후에 스크럽 판독될 필요가 있다. 이것이 효율적 스크럽 프로세스이다.
그러나, 이 프로세스는 시스템에 각 블록의 모든 페이지보다 적은 판독 회수를 관리할 것과, 개개의 블록 내 한 페이지의 스트레스 레벨이 이것이 교란 취약성의 고유 레벨과 결합되어 이 페이지에 데이터를 스크럽 판독을 언제 정당화하는지의 판정을 행할 것을 요구한다. 여기 기술된 특정 스크럽 프로세스 예들에서 개개의 페이지들의 판독횟수를 관리해야 하는 것을 피해야 하는 것이 바람직하다. 실제 로, 스크럽 프로세스가 임의의 지난 작동 데이터를 관리할 것을 요구하지 않으며 그럼으로써 이 목적을 위한 메모리 시스템 자원들의 사용을 요구하지 않거나, 메모리 시스템의 성능을 저하시키지 않는 것이 바람직하다.
그러므로, 블록의 페이지들의 매우 적은 부분, 바람직하게는 단일 페이지이지만 전형적으로 단지 두 페이지인 이 부분에 데이터의 스크럽 판독은 블록의 모든 부분적 판독 후에 고려되고 이들 대부분 후에 실행된다. 즉, 메모리 시스템이 한 블록의 페이지들을 판독하기 위해 호스트 또는 메모리 시스템 제어기로부터 명령을 실행할 때, 호스트 또는 제어기가 데이터가 어떤 다른 블록으로부터 판독될 것을, 또는 어떤 다른 작동이 수행될 것을 명령할 때, 제 1 블록으로부터 데이터 판독이 완료되었음이 판정된다. 이어서, 블록의 모든 페이지들보다 적게 판독되었는지가 판정된다. 그러하다면, 몇몇의 제외하고, 한 페이지의 데이터가 전형적으로 그 블록으로부터 스크럽 판독된다.
도 10을 참조하면, 특정 예의 스크럽 알고리즘이 흐름도로 도시되었다. 제 1 단계 201에서, 바로 전 단락에 기술된 방식으로, 부분적 블록 판독이 있었는지가 판정된다. 예를 들면, 또 다른 블록으로부터 데이터를 판독할 것이 명령되는 즉시, 제 1 블록의 판독이 종료된 것이 알려진다. 이 제 1 블록의 모든 페이지 미만이 판독되었다면, 이 블록의 부분적 데이터 판독이 완료되었음이 알려진다.
다음 단계 203은 페이지들로부터 판독된 데이터의 임의의 비트 오류들이 소정의 임계값을 초과하는지를 고찰한다. 한 단위의 판독 데이터에 대해 다수의 수락가능한 비트 오류가 설정되고, 이 예에서는 수 N이다. 이것이, 허용될 수 있는, ECC가 계산되는 한 단위의 데이터로서, 이 예에서는 한 섹터의 데이터의 비트 오류 수이다. 수 N은 0일 수 있고, 이에 따라 어떠한 데이터 오류들도 허용될 수 없으나 빈번한 데이터 리프레시 작동들을 요구한다. 대안적으로, N이 사용되는 ECC 알고리즘이 정정할 수 있는 최대 비트수, 이를테면 8 비트로 설정된다면, 정정 불가한 데이터의 경험만이 블록의 리프레시를 트리거할 것이다. 후자의 경우에, 리프레시 작동은 위에 논한 바와 같이, 완화된 판독 임계값들을 가진 정정가능 비트 오류 수 이상을 갖는 섹터 또는 이외 데이터 단위를 판독해야 할 것이다. 그러므로, 이들 두 극한들 사이에 어떤 수 N이 임계값에 대해 선택된다. 예를 들면, ECC 알고리즘이 8비트까지 정정할 수 있다면, N은 이의 반으로 선택되고 또는 5 또는 6비트에서 더 높게 선택될 수도 있다. 임의의 섹터 또는 다른 단위의 판독 명령 데이터에 비트 오류 수가 이 임계값을 초과한다면, 프로세스는 단계 205로 즉시 진행하여 전체 블록에 데이터가 리프레시된다.
단계 203에서 명령된 데이터 판독에서 임의의 비트 오류 수가 임계값 미만인 것으로 판정된다면, 단일 페이지, 또는 대안적으로, 블록의 페이지들의 수의 매우 작은 부분이 단계 207에서 스크럽 판독을 위해 확인된다. 이것이, 완료된 부분적 블록 명령에 의해 판독의 결과로서 데이터가 교란될 가장 취약한 것으로 판정되는 블록의 페이지(들)이다. 가장 취약한 블록(들)을 확인하기 위해 단계 207에서 채용될 수 있는 여러 기준이 이제 기술될 것이다.
한 기준은 블록 내 페이지들의 물리적 위치이다. NAND 어레이에서, 도 9a ~ 9c의 페이지 0 및 31과 같은 첫 번째 페이지와 마지막 페이지는 블록의 다른 페이 지들이 판독될 때 이들의 저장된 전하를 변경되게 하기 위해서 이를테면 페이지 1 ~ 30 사이의 페이지가 될 것이다. 위에 논의한 바와 같이, 이것은, 블록의 한 페이지로부터 데이터를 판독할 때, 이들 극한 페이지들에 인가되는 전압이 이들 사이의 페이지들에 걸리는 전압보다 더 높기 때문이다. 그러므로, 블록에서 가장 취약한 페이지를 판정할 때, 이들 두 페이지들이 고찰된다.
또 다른 기준은 판독 명령을 받은 페이지(들)의 신원, 및 이들이 판독되었던 순서이다. 예를 들면, 데이터가 마지막 페이지의 판독 명령으로서 제 1 및 마지막 물리 페이지들 중 하나로부터 판독된다면, ECC에 사용에 의해 판독되는 데이터의 정규 질 체크가 진행될 것이며 이 페이지의 스크럽 판독은 불필요하다. 그러나, 이들 극한 페이지들 중 하나로부터 데이터가 판독 명령이고, 이에 이어 블록 내 다른 페이지들의 판독 명령이 이어진다면, 이들 다른 페이지들을 판독하는 것은 한 극한 페이지에 저장된 데이터를 교란시킬 수 있다. 판독 명령의 일부로서 ECC의 사용에 의해 결정된 이의 데이터 질 표시는 더 이상 현재가 아니다. 따라서, 블록의 더 이전의 판독된 극한 페이지는 블록의 다른 페이지(들)의 후속되는 판독으로부터 교란되기가 취약할 수 있다. 또한, 이것은 해당 블록의 페이지(들)이 판독 명령되었고 이와 같이 판독되지 않았음을 기록하는 것이 가장 취약한 페이지(들)을 확인하는데 사용되는 또 다른 기준임을 지적한다. 특정 페이지를 판독한 후에 판독 명령된 페이지들의 수는 특정 페이지가 블록 내 페이지들의 가장 취약한지를 판정하는데 고려될 수도 있다.
데이터를 판독하는 일반적인 과정에서 ECC에 의해 결정되는 바와 같이, 명령 에 응하여 여러 페이지로부터 판독된 데이터에 비트 오류들의 수는 가장 취약한 페이지(들)을 확인하기 위해 어떤 환경들에서 사용되는 기준일 수도 있다. 예를 들면, 블록의 극한 페이지 0 또는 31 중 하나로부터 판독 명령된 데이터에 비트 오류들의 수는 가장 취약한 페이지에 이 페이지가 후보인지를 판정하기 위해 사용될 수도 있다. 이것은 극한 페이지 후에 다른 페이지들이 판독 명령될 때의 경우이며, 이에 따라 극한 페이지에 데이터는 교란될 가능성을 받게 된다. 극한 페이지로부터 판독 명령된 데이터의 비트 오류 수가 제로 또는 낮다면, 블록에 다른 페이지들에 대한 후속의 판독 명령은 정정작동이 필요할 수도 있을 정도까지 극한 페이지에 데이터를 교란시키지 않을 것으로 결론내릴 수 있다. 한편, 8비트를 저장할 수 있는 ECC 알고리즘의 사용으로 비트 오류들의 수가 4 ~ 6과 같이 비교적 높다면, 이 극한 페이지는 블록의 다른 페이지들에서의 상황에 따라, 가장 취약한 페이지에 대한 후보일 수도 있다.
블록의 가장 취약한 페이지(들)를 확인하는 또 다른 기준은 명령 및 판독되었던 것들에 응하여 판독되지 않은 페이지들의 물리적 근접성이다. 예를 들면, 판독 명령되었던 페이지에 바로 인접한 미판독 페이지에 저장된 데이터는 하나 이상의 미판독 페이지들에 의해 판독 명령된 페이지로부터 분리된 페이지보다 더 교란되기 쉽다.
도 10의 단계 207의 판정 단계에 있어 포함될 수 있는 또 다른 기준은 블록의 페이지들에 저장된 데이터의 패턴이다. NAND 어레이들에서, 예를 들면, 저장상태를 나타내는 가장 낮은 레벨에 또는 그 근처에 메모리 셀에 저장된 전하 레벨들 의 교란들은 저장되는 전하의 더 높은 레벨들보다 교란되기가 더 취약하다. 따라서, 더 큰 전하 레벨들을 저장하고 있는 수에 대한, 가장 낮은 전하 레벨 상태가 저장된 주어진 페이지의 전하 저장 소자들 또는 메모리 셀의 수는, 블록의 가장 취약한 페이지(들)을 판정하는데 사용될 수 있는 기준이다.
도 10의 단계 207은 이를테면 페이지가 극한 페이지들 중 하나인지와 같이, 위에 논한 기준 중 단지 한 기준을 고려함으로써 수행될 수도 있다. 대안적으로, 이들 모든 기준 또는 그 미만의 어떤 수가 중요성의 상대적 레벨들을 각각에 할당함으로써 함께 사용될 수도 있다.
블록의 가장 취약한 페이지(들)이 일단 확인되면, 다음 단계 209는 확인된 페이지(들)이 스크럽 판독될 것인지 판정한다. 스크럽 판독은 블록의 부분적 판독 명령 후에 대부분의 모든 경우들에서 행해질 것이다. 그러나, 스크럽 판독이 행해질 필요가 없는 상황들이 있다. 예를 들면, 가장 취약한 것으로 확인된 페이지가 판독 명령의 끝에서 또는 끌으로 가면서 판독되었다면, 스크럽 판독되지 않을 것이다. 이것은 데이터량이 단계 203에서 양호한 것으로 이미 결정되었고, 데이터가 교란되게 할 것으로 보이는 어떠한 것도 일어나지 않았기 때문이다. 데이터가 단계 203에서 질이 낮은 것으로 판정된다면, 물론, 블록이 단계 205에 의해 리프레시되지 않기 때문에, 단계들 207 및 209는 일어나지 않는다.
다음 단계 211은 다른 페이지들에 비해 상대적으로 교란에 대해 취약성이 큰 것으로 단계 207에서 확인된, 또는 블록 내 모든 페이지들의 가장 취약한 것으로 확인된 페이지(들)을 스크럽 판독하는 것이다. 스크럽 판독된 데이터의 비트 오류들의 수는 다음 단계 213에서 결정된다. 이 수는 도 10의 실시예에서, 기설정된 수 M과 비교된다. 이 수 M는 단계 203에서 판독 명령된 데이터에 사용되는 임계수 N와 동일하거나 다를 수도 있다. 가장 취약한 페이지가 단계 207에서 확인되었다는 신뢰레벨은 전형적으로 신뢰레벨이 크다면, ECC가 정정할 수 있는 비트 수의 상한 근처로 M이 설정되었는지, 또는 더 신중하게 더 낮은 수로 설정되는지 판정할 것이다.
특정 수 M에 관계없이, 스크럽 판독되는 페이지(들) 내에 임의의 한 섹터, 또는 ECC가 기반으로 하는 다른 데이터 단위가 M을 넘은 비트 오류 수를 갖는다면, 프로세스는 스크럽 판독 페이지(들)이 위치된 전체 블록을 리프레시하기 위해 단계 205로 진행한다. 그러나, 스크럽 판독된 데이터에서 ECC에 의해 결정된 비트 오류수가 M보다 크다면, 해당 페이지들이 놓이는 블록이 단계 205에서 리프레시된다. 이것은 전형적으로 블록 내 모든 데이터 페이지들을 판독하고, ECC의 사용에 의해 판독된 데이터를 정정하고, 이어서 정정된 데이터를 시스템 소거된 블록 풀의 소거된 블록에 재기입하는 것을 포함한다. 제 1 블록은 소거되어 풀에 놓여진다. 판독된 페이지들 중 어느 것이 리프레시 작동의 일부로서, 정규 판독 기준 레벨들로 ECC의 사용에 의해 정정될 수 없다면, 이들 레벨들은 변경되고 데이터는 비트 오류 수를 감소시키기 위해서 서로 다른 기준 레벨들로 다시 판독될 수 있다. 이 데이터는 필요하다면, ECC에 의해 정정될 수도 있다.
도 11의 흐름도는 도 10의 흐름도의 대안적 알고리즘을 도시한 것이다. 그러나, 대부분의 단계들은 동일하며, 따라서, 이들에는 동일한 참조 번호가 주어진다. 상이한 것은 블록이 리프레시될 필요가 있는지를 스크럽 판독된 데이터에 비트 오류들의 수로부터 판정되는 방법이다. 도 10의 알고리즘의 단계 213은 도 11의 흐름도에서 단계들 215 및 217로 대체된다. 스크럽 판독된 비트오류들의 수를 고정된 임계값 M과 비교하는 대신에, 도 11의 방법은 동일 블록으로부터 판독 명령되었던 데이터에 존재하게 스크럽 판독된 비트 오류들의 수를 단계 203에서 판정된 비트 오류들의 수와 비교한다.
단계 215에서, 스크럽 판독된 데이터 비트 오류들의 수는 판독 명령된 데이터 비트 오류들의 수와 비교된다. 단계 217에서, 스크럽 판독 오류의 수가 명령에 의해 판독 오류의 수를 초과하는지의 여부가 판정된다. 이러한 경우, 명령에 의해 판독 및 스크럽 판독이 일어났던 블록은 단계 205에서 리프레시된다. 그러나, 스크럽 판독 오류들의 수가 명령에 의해 판독 오류들의 수와 같거나 그 미만이면, 블록의 어떠한 리프레시도 필요하지 않은 것으로 판정된다.
전형적으로 ECC들이 계산된 데이터의 복수의 섹터들 또는 다른 데이터 단위들이 전형적으로 함께 판독되기 때문에 이들 데이터 판독들 각각으로부터 기인한 복수 비트 오류량들이 있다. 그러므로 명령 및 스크럽 판독들 각각에 기인한 최대 수의 비트 오류들간에 비교하여 행해지는 것이 바람직하다.
비트 오류들의 크기들의 이러한 비교에 대한 대안으로서, 바람직하게는 각 판독에서 존재하는 ECC들로부터 결정된 최대 수의 오류일 수 있다. 명령에 의해 판독 및 스크럽 판독 비트 오류 수들로부터 비가 취해질 수 있으며, 이 비는 기정의된 수와 비교된다. 이 수가 1로 설정된다면, 블록의 리프레시는 명령에 의해 판독된 비트 오류들의 수에 대한 스크럽 판독 비트 오류들의 수와의 비가 1보다 클 때 블록의 리프레시가 일어날 것이다.
결론
본 발명의 여러 면들이 이들의 실시예들에 관하여 기술되었을지라도, 본 발명은 첨부한 청구항들의 전체 범위 내에 보호되게 한 것임이 이해될 것이다.
상술한 바와 같이, 본 발명은, 재프로그램 가능한 비휘발성 메모리에 저장된 데이터를 리프레시하는 기술을 제공하고, 보다 구체적으로는 다른 데이터를 판독하여 일어날 수 있는 데이터의 잠재적인 교란에 반응하여 저장된 데이터를 수정 및 리프레시하는 방법을 제공하는데 사용된다.

Claims (39)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 전하 저장 소자들이 복수의 스트링으로 직렬 연결되어 있는 한 어레이의 메모리 셀들을 구비하는 재프로그램 가능한 비휘발성 메모리 시스템에서, 상기 스트링은 이들의 제 1 및 제 2 단부에서 각각의 제 1 및 제 2 전압원에 개별적으로 접속될 수 있고, 데이터 저장 용량의 페이지를 개별 정의하기 위해 복수의 스트링을 가로질러 뻗어 있는 방향으로 연결된 제어 게이트를 가지며, 상기 스트링은 동시 소거 가능한 메모리 셀 스트링의 블록으로 더 그룹화되는, 상기 메모리 시스템을 작동시키는 방법으로서,
    명령에 응하여 주어진 블록의 하나 이상이지만 모든 페이지 미만으로부터 데이터가 판독된 시기를 인지하는 단계와,
    상기 주어진 블록의 다른 페이지보다 데이터 판독 명령에 의한 교란에 대해 더 높은 취약성을 갖는 상기 주어진 블록의 하나 이상의 페이지를 확인하는 단계와,
    상기 주어진 블록의 다른 페이지가 아니라, 상기 주어진 블록의 확인된 하나 이상의 페이지들에 저장된 데이터를 스크럽(scrub) 판독하는 단계와,
    적어도 상기 스크럽 판독된 데이터에 비트 오류 수를 측정하는 단계와,
    적어도 상기 스크럽 판독된 데이터의 리프레시가 필요한지 여부를 비트 오류 수로부터 판정하는 단계와,
    상기 스크럽 판독된 데이터의 리프레시가 필요한 것으로 판정되면, 상기 주어진 블록의 모든 페이지를 리프레시하는 단계를
    포함하는, 메모리 시스템의 작동 방법.
  18. 제 17항에 있어서, 상기 주어진 블록의 다른 페이지보다는 상기 판독된 데이터에 의한 교란에 대해 더 높은 취약성을 갖는 상기 주어진 블록의 하나 이상의 페이지를 확인하는 단계는, 상기 메모리 셀들의 단부에 복수의 스트링을 가로질러 뻗어 있는 방향으로 접속된 제어 게이트에 의해 규정되는 주어진 블록의 2개의 페이지 중 적어도 하나를 고려하는 단계를 포함하는, 메모리 시스템의 작동 방법.
  19. 제 17항에 있어서, 상기 주어진 블록의 다른 페이지보다는 상기 판독된 데이터에 의한 교란에 대해 더 높은 취약성을 갖는 상기 주어진 블록의 하나 이상의 페이지를 확인하는 단계는, 상기 주어진 블록의 페이지에 저장된 데이터의 상대적 패턴을 고려하는 단계를 포함하는, 메모리 시스템의 작동 방법.
  20. 제 17항에 있어서, 상기 주어진 블록의 하나 이상이지만 모든 페이지 미만으로부터 데이터가 판독된 시기를 인지하는 단계는 명령에 의해 판독된 페이지의 정체를 기록하는 단계를 포함하고,
    상기 주어진 블록의 다른 페이지보다 판독된 데이터에 의한 교란에 대해 더 높은 취약성을 갖는 상기 주어진 블록의 하나 이상의 페이지를 확인하는 단계는 명령에 의해 판독되어지도록 기록되어지지 않지만 데이터가 명령에 의해 판독되어지도록 기록되어진 하나 이상의 페이지들에 바로 인접한 상기 주어진 블록의 적어도 한 페이지를 고려하는 단계를 포함하는, 메모리 시스템의 작동 방법.
  21. 제 17항에 있어서, 상기 주어진 블록의 하나 이상이지만 모든 페이지 미만으로부터 데이터가 판독된 시기를 인지하는 단계는 명령에 의해 판독된 페이지의 정체를 기록하는 단계를 포함하고,
    상기 주어진 블록의 다른 페이지보다는 판독된 데이터에 의한 교란에 대해 더 높은 취약성을 갖는 주어진 블록의 하나 이상의 페이지를 확인하는 단계는 명령에 의해 판독되어지도록 기록된 페이지들의 위치와 이들 페이지의 데이터가 명령에 의해 판독되어진 순서를 고려하는 단계를 포함하는, 메모리 시스템의 작동 방법.
  22. 제 17항에 있어서, 상기 주어진 블록의 하나 이상이지만 모든 페이지 미만으로부터 데이터가 판독된 시기를 인지하는 단계는 명령에 의해 판독된 페이지의 정체를 기록하는 단계를 포함하고,
    상기 주어진 블록의 다른 페이지보다는 판독된 데이터에 의한 교란에 대해 더 높은 취약성을 갖는 상기 주어진 블록의 하나 이상의 페이지를 확인하는 단계는, 주어진 블록의 개개의 페이지가 명령에 의해 판독되는지 여부를 고려하는 단계를
    포함하는, 메모리 시스템의 작동 방법.
  23. 제 17항에 있어서, 블록 내 데이터가 리프레시되어야 하는지를 판정하는 단계는, 적어도 상기 스크럽 판독된 데이터의 비트 오류 수를 기설정된 임계값과 비교하는 단계를 포함하는, 메모리 시스템의 작동 방법.
  24. 제 17항에 있어서, 주어진 블록의 하나 이상의 페이지로부터 명령에 의해 판독된 데이터에 비트 오류 수를 측정하는 단계를 더 포함하고, 블록에 데이터가 리프레시되어야 하는지를 판정하는 단계는, 상기 스크럽 판독된 데이터에 비트 오류 수를 명령에 의해 판독된 데이터에 비트 오류 수와 비교하는 단계를 포함하는, 메모리 시스템의 작동 방법.
  25. 제 24항에 있어서, 데이터 비트 오류를 비교하는 단계는, 상기 스크럽 판독된 데이터에 비트 오류 수와 명령에 의해 판독된 데이터에 비트 오류 수의 비를 계산하고, 이어서 비를 기정의된 임계값과 비교하는 단계를 포함하는, 메모리 시스템의 작동 방법.
  26. 제 17항에 있어서, 주어진 블록의 하나 이상의 그러나 모든 페이지 미만으로부터 데이터를 판독하는 명령은 메모리 시스템의 외부로부터 수신되는, 메모리 시스템의 작동 방법.
  27. 제 17항에 있어서, 주어진 블록의 하나 이상의 그러나 모든 페이지 미만으로부터 데이터를 판독하는 명령은 메모리 시스템 내에서 발생되는, 메모리 시스템의 작동 방법.
  28. NAND 스트링들로 조직된 한 어레이의 메모리 셀 및 이에 접속된 시스템 제어기를 갖는 재프로그램 가능한 비휘발성 메모리 시스템에서, 메모리 셀은 개별적으로, 소스와 드레인을 구비하는 트랜지스터, 전하 저장소자, 및 제어 게이트를 포함하고, 각각의 NAND 스트링은 소스 단자와 드레인 단자를 구비하고 인접한 전하 저장 트랜지스터의 소스에 한 셀의 드레인에 의해 데이지 체인되는 일련의 전하 저장 트랜지스터에 의해 형성되며, 소스 선택 트랜지스터에 의해 소스 단부로 스위칭 가능하고 드레인 선택 트랜지스터에 의해 드레인 단부에 스위칭 가능한, 메모리 시스템을 작동시키는 방법으로서,
    NAND 스트링들의 메모리 셀이 제 1 그룹 또는 제 2 그룹에 있는지를 확인하는 단계로서, 제 2 그룹의 메모리 셀은 소스 선택 트랜지스터 또는 드레인 선택 트랜지스터에 인접하고 제 1 그룹의 메모리 셀은 제 2 그룹의 상보인, 단계와,
    명령에 응하여, 제 2 그룹의 적어도 일부는 아니고 제 1 그룹의 메모리 셀로부터 데이터가 판독된 시기를 인지하는 단계와,
    이러한 인지에 응하여, 제 2 그룹의 판독되지 않은 메모리 셀의 적어도 일부로부터 데이터를 스크럽 판독하는 단계와,
    그 후, 제 2 그룹의 메모리 셀로부터 판독된 데이터에 오류 수를 측정하는 단계와,
    그 후, 스크럽 판독된 데이터의 리프레시가 필요한지를 측정된 데이터 오류 수로부터 판정하는 단계와,
    이러한 경우, 제 1 및 제 2 그룹 모두에 메모리 셀의 데이터를 리프레시하는 단계를
    포함하는, 메모리 시스템의 작동 방법.
  29. 제 28항에 있어서, 상기 리프레싱은 복수의 NAND 스트링에 걸쳐 공통 워드 라인이 확장하는 한 페이지의 메모리 셀을 병렬로 프로그램하여 일어나는, 메모리 시스템의 작동 방법.
  30. 제 28항에 있어서, 상기 어레이는 메모리 셀이 이에 데이터를 프로그램하기 전에 동시 소거될 수 있는 복수의 NAND 스트링을 개별 포함하는 블록으로 분할되고, 제 1 및 제 2 그룹의 메모리 셀은 한 주어진 블록의 메모리 셀에 위치하는, 메모리 시스템의 작동 방법.
  31. 재프로그램 가능한 비휘발성 메모리 시스템에 있어서,
    복수의 직렬 접속된 메모리 셀을 개별 포함하는 복수의 스트링으로 접속된 복수의 전하 저장 메모리 셀로서, 상기 스트링은 각각의 제 1 및 제 2 전압원에 그 제 1 및 제 2 단부에서 개별적으로 접속 가능하고, 메모리 셀들의 페이지들을 개별적으로 한정하기 위해 상기 복수의 스트링을 가로지르는 방향으로 연장하는 워드 라인을 갖는, 상기 복수의 전하 저장 메모리 셀과,
    상기 전하 저장 메모리 셀과 접속된 제어기를
    포함하고,
    상기 제어기는,
    상기 스트링의 제 1 및 제 2 단부에 바로 인접한 메모리 셀의 적어도 이들 페이지를, 상기 스트링의 단부에 바로 인접하지 않은 메모리 셀들의 페이지들로부터 명령에 의해 판독된 데이터의 실행 동안 교란되는 것에 대해 취약성이 큰 것으로 표시하고,
    상기 스트링의 단부에 바로 인접하지 않은 메모리 셀들의 페이지들이 액세스되는 시기와 메모리 셀의 액세스된 페이지에 저장된 데이터가 명령에 응하여 판독되는 시기를 인지하며,
    이어서, 상기 스트링의 제 1 및 제 2 단부에 바로 인접한 메모리 셀들의 페이지들 중 적어도 일부로부터 데이터의 스크럽 판독(scrub read)을 개시하고,
    스크럽 판독된 데이터의 품질 레벨과 상기 스크럽 판독된 데이터의 품질 레벨이 일정 레벨을 초과하지 않는지를 판정하며,
    상기 판독된 데이터의 품질 레벨이 일정 레벨을 초과하는 것으로 판정되면, 상기 스트링의 제 1 및 제 2 단부에 바로 인접한 메모리 셀들의 페이지들 중 적어도 일부에 저장된 데이터를 리프레시(refresh)하는, 재프로그램 가능한 비휘발성 메모리 시스템.
  32. 제 31항에 있어서, 상기 복수의 스트링은 메모리 셀의 복수의 페이지를 개별 포함하는 메모리 셀의 그룹에 형성되고, 개별 그룹의 메모리 셀은 동시에 삭제 가능한, 재프로그램 가능한 비휘발성 메모리 시스템.
  33. 제 31항에 있어서, 상기 제어기는 상기 스크럽 판독된 데이터에 비트 오류 수를 판정함으로써 판독된 데이터의 품질 레벨을 판정하고, 비트 오류 수를 기설정된 임계값과 비교함으로써 스크럽 데이터의 품질 레벨을 판정하는, 재프로그램 가능한 비휘발성 메모리 시스템.
  34. 제 31항에 있어서, 상기 제어기는 명령에 의해 판독된 데이터의 적어도 일부에 제 1 비트 오류 수와 스크럽 판독된 데이터의 적어도 일부에 제 2 비트 오류 수를 판정함으로써 스크럽 판독된 데이터의 품질 레벨을 판정하고,
    제 1 및 제 2 비트 오류 수들을 비교함으로써 스크럽 판독된 데이터의 품질 레벨을 판정하게 작동하는, 재프로그램 가능한 비휘발성 메모리 시스템.
  35. 제 34항에 있어서, 상기 제어기는,
    제 1 비트 오류 수와 제 2 비트 오류 수와의 비를 계산함으로써 제 1 비트 오류 수와 제 2 비트 오류 수를 비교하고,
    비를 기정의된 임계값과 비교하게 작동하는, 재프로그램 가능한 비휘발성 메모리 시스템.
  36. 제 31항에 있어서, 상기 제어기는 명령 및 그룹의 메모리 셀이 액세스되는 순서에 응하여 액세스되는 그룹의 메모리 셀의 수를 고려함으로써 교란에 대해 더 큰 취약성을 갖는 그룹의 메모리 셀을 확인하게 더 작동하는, 재프로그램 가능한 비휘발성 메모리 시스템.
  37. 삭제
  38. 제 31항에 있어서, 상기 제어기는 상기 메모리 셀들의 페이지들의 상기 메모리 셀에 저장된 데이터의 패턴을 고려함으로써 교란에 대해 더 높은 취약성을 갖는 상기 메모리 셀들의 페이지들의 메모리 셀을 확인하게 더 작동하는, 재프로그램 가능한 비휘발성 메모리 시스템.
  39. 제 31항에 있어서, 상기 제어기는 명령에 따라 액세스된 메모리 셀과 상기 메모리 셀들의 페이지들의 다른 메모리 셀을 구별함으로써 교란에 대해 더 높은 취약성을 갖는 상기 메모리 셀들의 페이지들의 메모리 셀을 확인하게 더 작동하는, 재프로그램 가능한 비휘발성 메모리 시스템.
KR1020097022455A 2007-03-28 2008-03-19 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술 KR101468432B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/692,840 US7477547B2 (en) 2007-03-28 2007-03-28 Flash memory refresh techniques triggered by controlled scrub data reads
US11/692,829 2007-03-28
US11/692,829 US7573773B2 (en) 2007-03-28 2007-03-28 Flash memory with data refresh triggered by controlled scrub data reads
US11/692,840 2007-03-28

Publications (2)

Publication Number Publication Date
KR20100028022A KR20100028022A (ko) 2010-03-11
KR101468432B1 true KR101468432B1 (ko) 2014-12-04

Family

ID=39523379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097022455A KR101468432B1 (ko) 2007-03-28 2008-03-19 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술

Country Status (4)

Country Link
EP (1) EP2135251B1 (ko)
KR (1) KR101468432B1 (ko)
TW (1) TWI478162B (ko)
WO (1) WO2008118705A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11650752B2 (en) 2020-10-30 2023-05-16 SK Hynix Inc. Computing system and operating method thereof

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014065774A1 (en) 2012-10-22 2014-05-01 Hewlett-Packard Development Company, L.P. Refreshing a group of memory cells in response to presence of potential disturbance
US8869009B2 (en) * 2013-02-11 2014-10-21 Apple Inc. Read commands specifying error performance
US9563505B2 (en) 2015-05-26 2017-02-07 Winbond Electronics Corp. Methods and systems for nonvolatile memory data management
US9836349B2 (en) * 2015-05-29 2017-12-05 Winbond Electronics Corp. Methods and systems for detecting and correcting errors in nonvolatile memory
US10296416B2 (en) 2016-07-02 2019-05-21 Intel Corporation Read from memory instructions, processors, methods, and systems, that do not take exception on defective data
KR102634813B1 (ko) * 2016-10-10 2024-02-13 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10755793B2 (en) * 2017-10-31 2020-08-25 Micron Technology, Inc. SLC page read
WO2022058768A1 (en) * 2020-09-21 2022-03-24 Micron Technology, Inc Memory apparatus and method for operating the same

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715193A (en) * 1996-05-23 1998-02-03 Micron Quantum Devices, Inc. Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks
US20050073884A1 (en) * 2003-10-03 2005-04-07 Gonzalez Carlos J. Flash memory data correction and scrub techniques

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US6396744B1 (en) * 2000-04-25 2002-05-28 Multi Level Memory Technology Flash memory with dynamic refresh
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7489547B2 (en) 2006-12-29 2009-02-10 Sandisk Corporation Method of NAND flash memory cell array with adaptive memory state partitioning
US7489548B2 (en) 2006-12-29 2009-02-10 Sandisk Corporation NAND flash memory cell array with adaptive memory state partitioning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715193A (en) * 1996-05-23 1998-02-03 Micron Quantum Devices, Inc. Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks
US20050073884A1 (en) * 2003-10-03 2005-04-07 Gonzalez Carlos J. Flash memory data correction and scrub techniques
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11650752B2 (en) 2020-10-30 2023-05-16 SK Hynix Inc. Computing system and operating method thereof

Also Published As

Publication number Publication date
WO2008118705A1 (en) 2008-10-02
EP2135251B1 (en) 2017-06-14
TWI478162B (zh) 2015-03-21
TW200907965A (en) 2009-02-16
KR20100028022A (ko) 2010-03-11
EP2135251A1 (en) 2009-12-23

Similar Documents

Publication Publication Date Title
US7477547B2 (en) Flash memory refresh techniques triggered by controlled scrub data reads
US7573773B2 (en) Flash memory with data refresh triggered by controlled scrub data reads
JP4723504B2 (ja) フラッシュメモリのデータ修正およびスクラブ技術
JP4787266B2 (ja) スクラッチパッドブロック
US7379330B2 (en) Retargetable memory cell redundancy methods
US9229644B2 (en) Targeted copy of data relocation
KR101849440B1 (ko) 동적 판독에 사용하기 위한 스크럽 기술
KR101468432B1 (ko) 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술
US7173852B2 (en) Corrected data storage and handling methods
US7451264B2 (en) Cycle count storage methods
JP4362534B2 (ja) フラッシュメモリシステムにおけるハウスキーピング操作のスケジューリング
US8732391B2 (en) Obsolete block management for data retention in nonvolatile memory
US11315650B2 (en) Memory system, memory controller, and method of operating memory system
US11467903B2 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20171027

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee