KR101849440B1 - 동적 판독에 사용하기 위한 스크럽 기술 - Google Patents

동적 판독에 사용하기 위한 스크럽 기술 Download PDF

Info

Publication number
KR101849440B1
KR101849440B1 KR1020147012998A KR20147012998A KR101849440B1 KR 101849440 B1 KR101849440 B1 KR 101849440B1 KR 1020147012998 A KR1020147012998 A KR 1020147012998A KR 20147012998 A KR20147012998 A KR 20147012998A KR 101849440 B1 KR101849440 B1 KR 101849440B1
Authority
KR
South Korea
Prior art keywords
read
data
memory
scrub
block
Prior art date
Application number
KR1020147012998A
Other languages
English (en)
Other versions
KR20140096059A (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 KR20140096059A publication Critical patent/KR20140096059A/ko
Application granted granted Critical
Publication of KR101849440B1 publication Critical patent/KR101849440B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/563Multilevel memory reading aspects
    • G11C2211/5634Reference cells

Abstract

동적 판독을 사용하는 메모리 시스템에 있어서, 메모리 시스템이 호스트 판독이 아니라, 스크럽될 필요가 있는 메모리 블록들 대해 스캐닝하면서 판독들을 수행할 때, 동적 판독은 비활성화된다. 활성 호스트 판독을 수행할 때, 정정가능한 오류량이 임계를 초과한다면, 블록은 나중에 다시 체크하기 위해 플래그되고, 이때에 동적 판독은 비활성화된다. 다른 실시예들에서, 메모리 블록을 리프레시할지 아니면 폐기할지의 판단은 사용되는 한 세트의 동적 판독 값들에 기초한다. 동적 판독 값들의 테이블을 사용하는 메모리 시스템에서, 테이블은 서로 다른 동적 판독 케이스들에 대한 판독 파라미터들 외에도, 판독 오류(폐기, 리프레시)를 어떻게 취급할 것인가를 포함하게 구성된다. 개선에서, 리프레시 또는 폐기하기 위해 선택된 블록들을 우선순위화하기 위해 판독 케이스 번호가 사용될 수 있다. 판독 스크럽을 더 정밀하게 행하는 경우들 있어서는 복수의 동적 판독 케이스들이 적용될 수 있다. 또한, 어느 케이스들이 적용될 것인가는 지능형으로 선택될 수 있다.

Description

동적 판독에 사용하기 위한 스크럽 기술{SCRUB TECHNIQUES FOR USE WITH DYNAMIC READ}
본 발명은 일반적으로 비휘발성 플래시 메모리 시스템들의 동작에 관한 것으로, 특히 이에 저장된, 특히 매우 큰 메모리 셀 블록들을 갖는 메모리 시스템들에 저장된 데이터를 리프레시(refresh) 및 정정하는 기술들에 관한 것이다.
하나 이상의 집적회로 칩들 상에 형성되는 한 어레이의 플래시 EEPROM(Electrically Erasable and Programmable Read Only Memory) 셀들을 채용하는, 특히 소형 폼 팩터 카드들 형태로 최근에 사용되는 많은 상업적으로 성공한 비휘발성 메모리 제품들이 있다. 일반적으로 반드시 별도의 집적회로 칩 상에 있는 것은 아닌 메모리 제어기는 카드가 착탈가능하게 연결되는 호스트와 인터페이스하며 카드 내에 메모리 어레이의 동작을 제공한다. 이러한 제어기는 전형적으로 마이크로프로세서, 몇몇 비휘발성 판독-전용-메모리(ROM), 휘발성 랜덤-액세스-메모리(RAM) 및 데이터의 프로그래밍 및 판독 동안 이들이 제어기를 통과할 때 데이터로부터 오류-정정-코드(ECC)를 계산하는 것과 같은 하나 이상의 특별한 회로들을 포함한다. 시판되는 카드들 중 일부는 콤팩트플래시™(CF) 카드들, 멀티미디어 카드들(MMC), 시큐어 디지털(SD) 카드들, 스마트 미디어 카드들, 개인용 태그들(P-Tag) 및 메모리 스틱 카드들이다. 호스트들은 개인용 컴퓨터들, 노트북 컴퓨터들, 개인용 디지털 보조장치(PDAs), 각종 데이터 통신 장치들, 디지털 카메라들, 셀룰라 전화들, 휴대 오디오 플레이어들, 자동차 사운드 시스템들, 및 유사한 유형들의 장비를 포함한다. 메모리 카드 구현 외에도, 이 유형의 메모리는 대안적으로 각종 유형들의 호스트 시스템들 내에 내장될 수 있다.
두 가지 일반적인 메모리 셀 어레이 아키텍처들인 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 시스템들에서 유용한 대안적 유형의 메모리 셀은 비휘발성 방식으로 전하를 저장하기 위해 도전성 플로팅 게이트 대신에 비-도전성 유전체 물질을 이용한다. 실리콘 산화물, 실리콘 질화물 및 실리콘 산화물(ONO)로 형성되는 3중층의 유전체는 도전성 제어 게이트와 메모리 셀 채널 위에 반-도체성 기판의 표면 사이에 개재된다. 셀은 셀 채널로부터 전자들을 질화물 내에 주입함으로써 프로그램되는데, 이들 전자들은 제한된 지역 내에 트랩되어 저장되고, 핫 정공들을 질화물 내에 주입함으로써 소거된다. 유전체 저장 요소들을 채용하는 몇몇 특정한 셀 구조들 및 어레이들이 미국공개된 특허 출원번호 2003/0109093에 기술되어 있다.
대부분의 모든 집적회로 응용들에서와 같이, 일부 집적회로 기능을 구현하기 위해 요구되는 실리콘 기판 영역을 축소하려는 압력은 플래시 EEPROM 메모리 셀 어레이들에서도 존재한다. 주어진 크기의 메모리 카드 및 다른 유형들의 패키지들의 저장 용량을 증가시키기 위해서, 혹은 용량을 증가시킴과 아울러 크기를 감소시키기 위해서, 실리콘 기판의 주어진 영역 내 저장될 수 있는 디지털 데이터량을 증가시키는 것이 지속적으로 요망된다. 데이터의 저장 밀도를 증가시키는 한 방법은 메모리 셀당 및/또는 저장 유닛 또는 요소당 한 비트 이상의 데이터를 저장하는 것이다. 이것은 저장 요소 전하 레벨 전압 범위의 윈도우를 2 이상의 상태들로 분할함으로써 달성된다. 4개의 이러한 상태들의 사용은 각 셀이 2 비트의 데이터를 저장할 수 있게 하며, 8 상태들은 저장 요소당 3 비트의 데이터를 저장한다, 등등. 플로팅 게이트들 및 이들의 동작을 사용하는 복수 상태 플래시 EEPROM 구조들은 미국특허 5,043,940 및 5,172,338에 기술되어 있고, 유전체 플로팅 게이트들을 사용하는 구조들에 대해선 위에 언급된 미국출원번호 10/280,352에 기술되어 있다. 복수-상태 메모리 셀 어레이의 선택된 부분들은 미국특허 5,930,167 및 6,456,528에 기술된 방식으로, 여러 이유들로 두 상태들(2진)에서 동작될 수도 있다.
전형적인 플래시 EEPROM 어레이의 메모리 셀들은 함께 소거되는 개별적 블록들의 셀들로 분할된다. 즉, 블록은 소거 유닛인, 동시에 소거될 수 있는 최소 수의 셀들이다. 각 블록은 전형적으로 하나 이상의 페이지들의 데이터를 저장하는데, 페이지는 하나 이상의 페이지가 서로 다른 부(sub)-어레이들 또는 플레인(plane)들로 병렬로 프로그램 또는 판독될 수 있을지라도, 최소 유닛의 프로그래밍 및 판독이다. 각 페이지는 전형적으로 하나 이상의 섹터들의 데이터를 저장하며, 섹터의 크기는 호스트 시스템에 의해 정의된다. 예시적 섹터는 자기 디스크 드라이버들에 확립된 규격에 따라 512 바이트의 사용자 데이터와, 이에 더하여 사용자 데이터 및/또는 이들의 저장되는 블록에 관한 몇 바이트의 오버헤드 정보를 포함한다. 이러한 메모리들은 전형적으로 각 블록 내에 16, 32 또는 그 이상의 페이지들로 구성되고, 각 페이지는 하나 또는 단지 몇개의 호스트 섹터들의 데이터를 저장한다.
사용자 데이터를 메모리 어레이에 프로그램하고 이로부터 사용자 데이터를 판독하는 동안 병행도를 증가시키기 위해서, 전형적으로 어레이는 일반적으로 플레인들이라 하는 부-어레이들로 분할되는데, 이들은 섹터들의 데이터가 동시에 몇몇 혹은 모든 플레인들 각각에 프로그램되고 이로부터 판독될 수 있게 병렬 동작이 될 수 있게 하는 이들 자신의 데이터 레지스터들 및 그외 다른 회로들을 내포한다. 단일 집적회로 상에 어레이는 플레인들로 물리적으로 분할될 수 있고, 혹은 각 플레인은 별도의 하나 이상의 집적회로 칩들로부터 형성될 수 있다. 이러한 메모리 구현의 예들은 미국특허 5,798,968 및 5,890,192에 기술되어 있다.
메모리를 더 효율적으로 관리하기 위해서, 물리적 블록들은 가상 블록들 혹은 메타블록들을 형성하기 위해 논리적으로 함께 링크될 수 있다. 즉, 각 메타블록은 각 플레인으로부터 한 블록을 포함하게 정의된다. 메타블록의 사용은 국제특허출원 공개번호 WO 02/058074에 기술되어 있다. 메타블록은 데이터를 프로그래밍 및 판독하기 위한 목적지로서 호스트 논리 블록 어드레스에 의해 식별된다. 유사하게, 모든 블록들의 메타블록은 함께 소거된다. 이러한 큰 블록들 및/또는 메타블록들을 갖고 동작되는 메모리 시스템 내 제어기는 호스트로부터 수신된 논리 블록 어드레스들(LBAs)과 메모리 셀 어레이 내 물리적 블록 번호들(PBNs) 간에 전환을 포함한 다수의 기능들을 수행한다. 블록들 내 개개의 페이지들은 전형적으로, 블록 어드레스 내 오프셋들에 의해 식별된다. 어드레스 전환은 종종 논리 블록 번호(LBN) 및 논리 페이지의 중간 텀들(terms)의 사용을 수반한다.
메타블록 내 저장된 데이터는 자주 업데이트되는데, 메타블록의 데이터 용량이 증가함에 따라 업데이트할 가능성은 증가한다. 한 논리 메타블록의 업데이트된 섹터들은 정규적으로 다른 물리적 메타블록에 기입된다. 변경되지 않은 섹터들 또한 일반적으로 데이터를 합체하기 위해서 동일 프로그래밍 동작의 부분으로서 원본에서 새로운 물리적 메타블록에 카피된다. 대안적으로, 변경되지 않은 데이터는 업데이트된 데이터와 함께 단일 메타블록 내에 나중에 합체할 때까지 원 메타블록 내에 남아 있을 수도 있다.
소거된 블록 풀(pool) 내에 가외의 몇몇 블록들이 유지된 채로 큰 블록 또는 메타블록 시스템들을 동작시키는 일반적이다. 블록의 용량 미만의 하나 이상의 페이지들의 데이터가 업데이트되고 있을 때, 풀로부터 소거된 블록에 업데이트된 페이지들을 기입하고 이어 원 블록으로부터 변경되지 않은 페이지들의 데이터를 소거 풀 블록에 카피하는 것이 전형적이다. 이 기술의 변형예들이 앞에 언급된 공개된 국제출원번호 WO 02/058074에 기술되어 있다. 시간이 지남에 따라, 호스트 데이터 파일들이 재기입되고 업데이트된 결과로서, 많은 블록들은 결국 비교적 적은 수의 페이지들이 유효 데이터를 내포하고 나머지 페이지들은 더 이상 통용되지 않는 데이터를 내포하게 된다. 어레이의 데이터 저장 용량을 효율적으로 사용할 수 있기 위해서, 논리적으로 관계된 데이터 페이지들의 유효 데이터를 종종 복수 블록들 중에 단편들로부터 모아 몇개의 블록들로 함께 합체된다. 이 프로세스를 일반적으로 "가비지 수거"라고 한다.
개개의 플래시 EEPROM 셀들은 하나 이상의 비트들의 데이터를 나타내는 전하 저장 요소 또는 유닛 내에 전하량을 저장한다. 저장 요소의 전하 레벨은 셀의 저장 상태를 판독하는 토대로서 사용되는 자신의 메모리 셀의 임계 전압(일반적으로 VT로서 언급된다)을 제어한다. 임계 전압 윈도우는 일반적으로 메모리 셀의 2 이상의 저장 상태들에 대해 하나씩인 다수의 범위들로 분할된다. 이들 범위들은 개개의 셀들의 저장 상태들을 판정할 수 있게 하는 명목상의 감지 레벨을 포함하는 가드 대역들에 의해 분리된다. 이들 저장 레벨들은 전하가 이웃한 혹은 다른 관계된 메모리 셀들, 페이지들 혹은 블록들에서 수행되는 프로그래밍, 판독 또는 소거 동작들을 교란(disturb)하는 결과로서 옮겨진다. 예를 들면, 라인 또는 회로를 제 2 세트의 메모리 셀들과 공유하는 한 세트의 메모리 셀들의 프로그래밍은 제 2 세트의 전하 레벨들을 교란할 수 있다. 이 기생적 교란의 최종 결과는 저장 시스템 제어기의 부분에 어떠한 정정 동작도 취해지지 않는다면, 작업되지 않은 노출된 영역들 내 데이터는 변질될 수 있고, 극단적인 경우엔, 데이터와 함께 저장된 임의의 오류 정정 코드들(ECCs)의 정정 능력들을 넘어 변질될 수 있다는 것이다. 그러면 이러한 데이터 변질은 사용자에게 데이터의 유실을 초래할 것이며 이에 따라 저장 시스템을 신뢰할 수 없게 만들 것이다. 특정한 메모리 셀 어레이 내 이러한 교란들의 정도 및 성질은 이의 특정한 아키텍처, 구조 및 동작에 좌우된다.
그러므로, 교란 동작들이 전하 레벨들을 완전히 이들의 정의된 범위들 밖으로 옮기기 전에 -그러면 이 경우엔 오류 데이터가 판독된다-, 가끔 전하 레벨들을 이들의 상태의 중앙들로 다시 옮겨 회복시키는 것이 이익이 된다. 데이터 리프레시 또는 스크럽이라 하는 이러한 프로세스는 미국특허 5,532,962 및 5,909,449에 기술되어 있다. 이것의 또 다른 측면으로서, 오류 정정 코드들(ECCs)을 사용하는 메모리 시스템들에서, 메모리로부터 판독된 몇개의 오류 데이터 비트들은 ECC의 사용에 의해 정정될 수 있고 이어 정정된 데이터는 메모리의 이전에 소거된 부분에 재기입된다. 데이터 프로그래밍은 일반적으로 교번하여, 저장된 전하를 조절하고 이것이 셀 내 저장된 데이터를 나타내는 요망되는 범위에 도달할 때까지 결과적인 메모리 셀 임계 레벨을 판독-검증하는 것을 수반하기 때문에, 데이터를 재기입하는 것은 기입된 메모리 셀 임계 레벨들 각각이 이의 지정된 상태 범위 이내가 되게 한다.
비휘발성 메모리 시스템을 동작시키는 방법이 제시된다. 메모리는 내정된 판독 케이스(default read case) 및 복수의 서로 구별되는 옮겨진 판독 케이스들에 대해 한 세트의 판독 파라미터들을 유지한다. 메모리의 하나 이상의 블록들의 각 물리적 분할에 대해서, 메모리는 또한 물리적 유닛을 판독할 때 사용하기 위해 물리적 유닛과 판독 케이스 간에 상응을 유지한다. 메모리는 페이지가 속하는 물리적 유닛에 대해 상기 대응하는 판독 케이스를 사용하여 한 페이지의 데이터에 대한 판독 동작을 수행하고, 판독 동작이 성공적이었는지 아니면 실패 결과를 가져왔는지를 판정하며, 판독 동작이 실패 결과를 가져온 것에 응하여, 페이지가 판독될 수 있는 옮겨진 판독 케이스를 선택한다. 옮겨진 선택된 판독 케이스에 기초하여, 메모리는 페이지가 속하는 블록을 리프레시 할지 여부를 판정한다.
전술한 특징들은 특정 응용에 따라, 개별적으로 혹은 다양한 조합들로 함께 구현될 수 있다. 본원에 스크럽 시스템의 추가의 측면들, 잇점들, 특징들은 이들의 예시적 예들에 대한 다음 설명에 포함되며, 이 설명은 동반된 도면들에 관련하여 취해질 것이다. 본원에서 참조되는 모든 특허들, 특허출원들, 논문들, 그외 공보들은 모든 목적을 위해 이들 전부가 참조로서 본원에 포함된다.
도 1a 및 도 1b는 각각 함께 동작하는 비휘발성 메모리 및 호스트 시스템의 블록도들이다.
도 2는 도 1a의 메모리 어레이의 제 1 예시적 구성을 도시한 것이다.
도 3은 도 1a의 메모리 어레이에 저장된 오버헤드 데이터와 함께 예시적 호스트 데이터 섹터를 도시한 것이다.
도 4는 도 1a의 메모리 어레이의 제 2 예시적 구성을 도시한 것이다.
도 5는 도 1a의 메모리 어레이의 제 3 예시적 구성을 도시한 것이다.
도 6은 도 1a의 메모리 어레이의 제 3 예시적 구성의 확장을 도시한 것이다.
도 7은 한 특정한 구성을 가진 도 1a의 어레이의 일 그룹의 메모리 셀들의 회로도이다.
도 8은 데이터 스크럽 동작에서 주요 단계들을 도시한 흐름도이다.
도 9는 스크럽 동작의 더 구체적 예의 흐름도이다.
도 10은 프로그램된 일 그룹의 메모리 셀들의 전압 임계 레벨들의 분포들을 도시한 것이다.
도 11은 동적 판독 케이스에 대해 리프레시 판단에 기초하는 예시적 실시예의 일부 측면들을 도시한 흐름도이다.
메모리 아키텍처들 및 이들의 동작
먼저 도 1a을 참조하면, 플래시 메모리는 메모리 셀 어레이 및 제어기를 포함한다. 도시된 예에서, 2개의 집적회로 장치들(칩들)(11, 13)은 메모리 셀들의 어레이(15) 및 각종 로직 회로들(17)을 포함한다. 로직 회로들(17)은 데이터, 지령 및 상황(status) 회로들을 통해 별도의 칩 상에 제어기(19)와 인터페이스하며, 또한 어레이(13)에 어드레싱, 데이터 전송 및 감지, 및 그외 다른 지원을 제공한다. 다수의 메모리 어레이 칩들은 제공되는 저장 용량에 따라, 1 내지 다수일 수 있다. 대안적으로 제어기 및 어레이 부분 또는 전체가 단일 집적회로 칩 상에 조합될 수 있지만 그러나 이것은 현재 경제적인 대안은 아니다.
전형적인 제어기(19)는 마이크로프로세서(21), 주로 펌웨어를 저장하기 위한 판독-전용-메모리(ROM)(23) 및 주로 메모리 칩들(11, 13)에 기입되거나 이로부터 판독되는 사용자 데이터의 임시 저장을 위한 버퍼 메모리(RAM)(25)를 포함한다. 회로들(27)은 메모리 어레이 칩(들)과 인터페이스하고 회로들(29)은 연결들(31)를 통해 호스트와 인터페이스한다. 데이터의 무결성은 이 예에서는 코드를 계산하는데 전용되는 회로들(33)로 ECC를 계산함으로써 판정된다. 사용자 데이터가 저장을 위해 호스트에서 플래시 메모리 어레이로 전송되고 있을 때, 회로는 데이터로부터 ECC를 계산하며 코드는 메모리에 저장된다. 이 사용자 데이터가 나중에 메모리로부터 판독될 때, 이들은 다시, 같은 알고리즘에 의해 ECC를 계산하고 이 코드를 계산되어 데이터와 함께 저장된 것과 비교하는 회로(33)를 거친다. 이들이 비교한다면, 데이터의 무결성은 확증된다. 이들이 다르다면, 이용되는 특정 ECC 알고리즘에 따라, 알고리즘에 의해 지원되는 개수까지, 오류 비트들이 식별되어 정정될 수 있다.
도 1a의 메모리의 연결들(31)은 호스트 시스템의 연결들(31')과 짝을 이루며, 이의 예가 도 1b에 주어졌다. 데이터는 인터페이스 회로들(35)을 통해 도 1a의 호스트와 메모리 간에 전송한다. 또한, 전형적인 호스트는 마이크로프로세서(37), 펌웨어 코드를 저장하기 위한 ROM(39) 및 RAM(41)을 포함한다. 그외 다른 회로들 및 부-시스템들(43) 종종 특정 호스트 시스템에 따라, 고 용량 자기 데이터 저장 디스크 드라이브, 키보드, 모니터 등을 위한 인터페이스 회로들을 포함한다. 이러한 호스트들의 몇가지 예들은 데스크탑 컴퓨터들, 랩탑 컴퓨터들, 휴대 컴퓨터들, 팜탑 컴퓨터들, 개인용 디지털 보조장치(PDAs), 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)은 블록("핫 카운트들")이 경험한 프로그램/소거 사이클들의 횟수에 관계된 수량을 포함할 수 있고, 이 수량은 각 사이클 또는 기정설된 횟수의 사이클들 후에 업데이트된다. 이 경험 수량의 한 용도는 모든 블록들의 사용(마모 평준화)을 고르게 하기 위해서 논리 블록 어드레스들을 서로 다른 물리적 블록 어드레스들에 규칙적으로 재 매핑하는 것이다. 경험 수량의 또 다른 용도는 서로 다른 섹터들이 경험하는 사이클들의 수의 함수로서 프로그래밍, 판독 및/또는 소거의 전압들 및 그외 다른 파라미터들을 변경하는 것이다. 스크럽될 블록들을 식별하는 프로세스에서 경험 수량들의 추가적인 용도들이 이하 기술된다.
또한, 파라미터들(55)은 일반적으로 "회전(rotation)"이라 지칭되는, 메모리 셀들의 저장 상태들 각각에 할당되는 비트값들의 표시를 포함할 수 있다. 즉, 데이터의 논리 상태들은 서로 다른 물리적 저장 상태들에 매핑된다. 또한, 이것은 마모 평준화에서 잇점이 있는 효과를 갖는다. 또한, 상황 또는 상태들을 나타내는 파라미터들(55) 내에 하나 이상의 플래그들이 포함될 수도 있다. 또한, 블록을 프로그래밍 및/또는 소거하기 위해 사용될 전압 레벨들의 표시들이 파라미터들(55) 내에 저장될 수 있고, 이들 전압들은 블록이 경험하는 사이클들의 수 및 이외 다른 인자들이 변할 때 업데이트된다. 오버헤드 파라미터들(55)의 다른 예들은 블록 내에 임의의 결함이 있는 셀들의 식별, 이 물리적 블록에 매핑되는 데이터 블록의 논리 어드레스 및 주 블록이 결함이 있는 경우에 임의의 대용 물리적 블록의 어드레스를 포함한다. 임의의 메모리 시스템에서 사용되는 파라미터들(55)의 특정한 조합은 설계에 따라 달라질 것이다. 또한, 오버헤드 데이터 일부 또는 전부는 사용자 데이터를 내포하는 또는 오버헤드 데이터가 관계된 블록이 아니라, 이러한 기능에 전용되는 물리적 블록들 내에 저장될 수 있다.
도 4의 복수-섹터 물리적 블록은 도 2의 단일 데이터 섹터 블록과는 다르다. 여전히 최소 소거 유닛인 예시적 블록(59)은 4개의 페이지들 0 ~ 3을 내포하며, 이 각각은 최소 프로그래밍 유닛이다. 하나 이상의 호스트 섹터들의 데이터는 일반적으로 섹터의 데이터로부터 계산된 적어도 ECC를 포함하는 오버헤드 데이터와 함께 각 페이지 내에 저장되며, 도 3의 데이터 섹터 형태일 수 있다. 모든 페이지들 미만의 데이터가 업데이트될 때, 업데이트된 데이터는 전형적으로 소거된 블록 풀(pool)로부터 한 페이지의 소거된 블록 내에 저장되고, 나머지 변경되지 않은 페이지들 내 데이터는 원 블록에서 새로운 블록으로 카피된다. 이어, 원 블록이 소거된다. 이 큰 블록 관리 기술의 변형예들은 원 블록으로부터 데이터를 이동하거나 이를 소거함이 없이 업데이트된 데이터를 한 페이지의 다른 블록에 기입하는 것을 포함한다. 이것은 복수의 페이지들이 동일한 논리 어드레스를 갖게 한다. 가장 최근의 한 페이지의 데이터는 섹터 내 필드 또는 페이지 오버헤드 데이터로서 기록되는 프로그래밍 시간과 같은 어떤 편리한 기술에 의해 식별된다.
또 다른 복수-섹터 물리적 블록 배열이 도 5에 도시되었다. 여기에서, 총 메모리 셀 어레이는 물리적으로 2 이상의 플레인들로 분할되고, 4개의 플레인들 0 ~ 3이 도시되었다. 각 플레인은 대체로 다른 플레인들에 무관하게 동작할 수 있기 위해서 자기 자신의 데이터 레지스터들, 감지 증폭기들, 어드레싱 디코더들, 등을 갖는 메모리 셀들의 부-어레이이다. 모든 플레인들은 단일의 집적회로 장치 또는 복수의 장치들 상에 제공될 수 있는데, 예로서는 하나 이상의 서로 구별되는 집적회로 장치들로부터 각 플레인을 형성하는 것이다. 도 5에 시스템 내 각 블록은 16 페이지들 P0 ~ P15를 내포하며, 각 페이지는 하나, 둘 혹은 그 이상의 호스트 데이터 섹터들 및 몇몇 오버헤드 데이터의 용량을 갖는다.
또 다른 메모리 셀 배열이 도 6에 도시되었다. 각 물리적 플레인은 많은 수의 블록들의 셀들을 내포한다. 동작의 병행도를 증가시키기 위해서, 서로 다른 플레인들 내에 블록들은 메타블록들을 형성하기 위해 논리적으로 링크된다. 한 이러한 메타블록이 플레인 0의 블록 3, 플레인 1의 블록 1, 플레인 2의 블록 1 및 플레인 3의 블록 2로 형성된 것으로서 도 6에 도시되었다. 각 메타블록은 논리적으로 어드레스가능할 수 있고 메모리 제어기는 개개의 메타블록들을 형성하는 블록들을 할당하고 추적한다. 호스트 시스템은 바람직하게는 개개의 메타블록들의 용량과 동일한 유닛들의 데이터로 메모리 시스템과 인터페이스한다. 예를 들면, 도 6의 이러한 논리적 데이터 블록(61)은 메타블록을 구성하는 블록들의 물리적 블록 번호들(PBNs)에 제어기에 의해 매핑되는 논리 블록 어드레스들(LBA)에 의해 식별된다. 메타블록의 모든 블록들은 함께 소거되고, 각 블록으로부터 페이지들은 바람직하게 동시에 프로그램되고 판독된다.
도 2 ~ 도 6에 관하여 위에 기술된 메모리들을 구현하기 위해 채용될 수 있는 많은 서로 다른 메모리 어레이 아키텍처들, 구성들 및 특정한 셀 구조들이 있다. 교란 메커니즘들 중 몇개를 예시하기 위해 NAND 유형의 메모리 어레이의 한 블록이 도 7에 도시되었다. 직렬 연결된 메모리 셀들의 많은 수의 컬럼 방위로 놓인 스트링들은 전압(VSS)의 공통 소스(65)와 비트라인들(BL0 ~ BLN) -이들은 어드레스 디코더들, 드라이버들, 판독 감지 증폭기들, 등을 내포하는 회로들(67)에 연결된다- 중 하나에 연결된다. 구체적으로, 한 이러한 스트링은 스트링들의 서로 대향하는 양단에 선택 트랜지스터들(77, 79) 사이에 직렬로 연결된 전하 저장 트랜지스터들(70, 71..72, 74)을 내포한다. 이 예에서, 각 스트링은 16 저장 트랜지스터들을 내포하나 다른 개수들이 가능하다. 워드라인들(WLO ~ WL15)은 각 스트링의 한 저장 트랜지스터를 가로질러 확장하며, 어드레스 디코더들 및 워드라인들의 전압 소스 드라이버들을 내포하는 회로들(81)에 연결된다. 라인들(83, 84) 상에 전압들은 전압 소스(65) 및/또는 비트라인들(BL0 ~ BLN)에 이들의 선택 트랜지스터들을 통해 블록 내 함께 모든 스트링들의 연결을 제어한다. 데이터 및 어드레스들은 메모리 제어기로부터 온다.
블록의 각 한 행의 전하 저장 트랜지스터들(메모리 셀들)은 함께 프로그램 및 판독되는 페이지를 형성한다. 데이터를 프로그래밍 또는 판독하기 위해 이러한 한 페이지의 워드라인(WL)에 적합한 전압이 인가되고 아울러 나머지 워드라인들에 인가되는 전압들은 이들의 각각의 저장 트랜지스터들을 도통이 되게 하기 위해 선택된다. 한 행(페이지)의 저장 트랜지스터들을 프로그래밍 또는 판독하는 동안, 선택되지 않은 행들 상에 이전에 저장된 전하 레벨들은 모든 스트링들에 걸쳐 인가되고 이들의 워드라인들에 인가되는 전압들 때문에 교란될 수 있다.
스크럽 프로세스의 여러 측면들
스크럽의 2가지 주요 국면들로서 판독 국면 및 정정 동작 국면이 있다. 스크럽 판독은 특정 호스트 동작의 완료에도 혹은 마모 평준화와 같은 다수의 다른 시스템 동작들 중 어느 하나와도 직접 관계되지 않는 메모리 시스템의 영역들 내 데이터의 선택 및 판독을 일반적으로 수반하는 점에서 다른 시스템 판독들과는 구별된다. 스크럽 판독의 또 다른 구별되는 특징은 데이터 판독으로부터 시스템에 의해 어떠한 유용한 정보도 수집되지 않지만 그러나 대신에 데이터 무결성 체크의 결과가 동작의 목적이라는 것이다. 시스템의 부분 상에 후속되는 행위는 특히 데이터 자체에 의해서가 아니라 무결성 체크의 결과에 의해서 안내된다. 이어, 시스템은 데이터가 무결성 체크에 실패하고 정정 동작이 요구된다면, 데이터 판독으로부터 오버헤드 데이터와 같은 일부 정보의 사용을 요구할 수 있다. 특정 호스트 동작을 완료하지 않고 메모리로부터 어떠한 유용한 데이터도 얻지 않는 이들 특징들은 스크럽 판독들과 시스템에 의해 수행되는 다른 데이터 판독들 간에 본질적 차이들이다.
스크럽 판독할 특정 영역들의 선택은 일반적으로 메모리 장치의 물리적 특성들의 맥락에서 시스템 동작의 정규 과정 중에 수행되는 판독, 기입 및 소거 동작들의 위치 및 수에 의해 안내된다. 일반적으로, 스크럽 판독들은 다른 영역들에서 동작들의 결과로서 전압들, 전류들 또는 크로스토크에 노출되었던 메모리 어레이의 영역들에 대해 수행될 것이다. 대안적으로, 스크럽 판독 위치들은 다른 메모리 동작들로부터 분리되고, 확정적인 혹은 랜덤한 시퀀스에 따르게 할 수 있다. 그러나, 이것은 더 교란된 영역들의 같은 량의 커버리지를 얻기 위해 더 많은 판독들이 수행되어야 할 것이기 때문에, 시스템 수행의 상실을 초래할 수 있다.
스크럽 판독들의 추가적인 측면은 스크럽 판독 동작을 언제 수행할지의 선택이다. 일반적으로, 스크럽 동작은 이를테면 호스트 동작들이 수, 물리적 판독, 기입 및/또는 소거 동작들의 수, 기간, 호스트의 사용 특성들, 혹은 몇몇 랜덤하거나 의사-랜덤한 시퀀스 -이들의 발생 및 체크가 위에 것들 중 임의의 것에 결부될 수 있다- 와 같은 임의의 수의 인자들에 응하여 개시될 수 있다.
스크럽 기입은 이것이 일반적으로 스크럽 판독 동안 판독된 데이터의 실패된 무결성 체크의 결과로서 수행되는 점에서 다른 시스템 기입들로부터 구별된다. 스크럽 기입은 스크럽 판독의 맥락에서만 유일무이하다. 스크럽 기입들과 유사한 메커니즘들을 갖지만 이 특정한 목적을 위해 수행되지 않는 다른 기입 동작들이 수행될 수도 있다. 일 예에서, 기입 동작들은 정규 메모리 시스템 동작 중에 수행되는 판독 또는 기입 동작들 후에 실패된 무결성 체크들로부터 기인할 수 있다. 또 다른 예에서, 데이터 무결성 체크에 기초하지 않고 대신에 어떤 다른 인자에 기초하여 기입할 판단으로, 스크럽 판독들 없이 리프레시 목적들을 위해 데이터가 판독 및 재기입될 수도 있다. 한 이러한 인자는 높은 사용 또는 노출을 갖는 어레이의 영역의 존재일 수 있는데, 이 경우에 영역 내 데이터는 재기입 또는 이동되어져 있을 수 있다. 데이터의 연속된 이동 또는 리프레시는 확정적인 혹은 랜덤한 방식으로 행해질 수도 있다. 데이터는 마모 평준화의 의도된 목적을 갖고 판독 및 재기입될 수도 있지만, 교란 문제들이 극복되게 데이터를 리프레시하는 의도되지 않은 이익을 갖는다.
사실, 한 유닛의 데이터의 상대적 신규성은 이 데이터의 스크럽을 이를 행하기 위한 다른 기준들을 충족할 때 개시할지 여부를 판정하기 위해 사용될 수 있다. 즉, 한 유닛의 데이터가 마모 평준화, 데이터 합체(가비지 수거), 이전의 스크럽 또는 다른 동작의 부분으로서 최근에 재-프로그램되어졌다면, 이들 데이터가 최근에 리프레시되어졌기 때문에, 현재 스크럽은 생략될 수 있다. 여러 유닛들의 데이터의 상대적 신규성은 예를 들어, 이를테면 블록들의 오버헤드 데이터의 부분에, 유닛들의 데이터와 함께 저장된 경험 카운트들("핫 카운트들") 또는 시간 스탬프들을 사용하여 유지될 수 있다. 대안적으로, 물리적 블록들은 이들에 저장된 데이터의 신규성에 따라 그룹화될 수 있고, 블록이 속한 그룹은 블록의 오버헤드 데이터로서 저장된다. 이외 스크럽에 대한 후보들이 되는 블록들의 상대적 신규성은 실제로 스크럽되는 것들을 선택함에 있어 인자로서 사용될 수 있다. 시스템 수행은 저장된 전하 레벨들이 주의를 요구하기에 충분히 교란되어져 있을 수도 있을 정도로 충분히 오랫동안 저장되어진 유닛들의 데이터로 스크럽 동작들을 제한함으로써 개선된다.
저장된 데이터의 상대적 신규성을 모니터하기 위해서, 논리적인 혹은 물리적 블록들은 블록이 최근에 어떻게 재-프로그램되어졌는가에 기초하여 세트들로 효과적으로 그룹화될 수 있다. 전체 메모리 어레이 내에 모든 블록들, 혹은 대안적으로, 어레이의 플레인, 구역 또는 다른 부분 내에 블록들에는 초기 상대적 핫 카운트 값이 주어질 수 있고, 블록이 재프로그램될 때마다, 상대적 핫 카운트은 가장 최근에 이동된 세트 혹은 그룹의 값으로 업데이트될 수 있다. 일단 어떤 수의 블록들이 가장 최근에 재프로그램된 그룹 내에 있다면, 가장 최근에 재프로그램된 그룹 값은 증분될 수 있고, 후속하여 재프로그램된 임의의 블록들은 새로운 그룹 값으로 업데이트될 수 있다. 결국, 가장 최근에 재프로그램된 블록과 최근에 최소로 재프로그램된 블록들 간에 상대적으로 명확한 구별을 가진 서로 구별되는 그룹들이 생성될 수 있다. 일반적으로, 블록의 상대적 핫 카운트 값은 상대적으로 적은 수의 필드들이 사용될 수 있게 롤 오버(roll over)할 수 있게 한다.
상대적 핫 카운트들이 이용될 때, 실질적으로 모든 블록들은 구체적 예에서, 예를 들면, '0' 내지 '7'의 값들인 8개의 가능한 값들이 있을 때 '0'의 기초 값에서 시작할 수 있다. 8개의 값들 중 7개가 사용될 수 있고 한 값은 가장 오래된 데이터를 내포하는 블록들을 식별하는 값으로부터 가장 최근에 프로그램된 블록들을 나타내는 값 간에 갭을 제공하기 위해 유보된다. 이 예에서, 기입되는 블록들은 이들이 가장 최근에 프로그램되었음을 나타내기 위해 '1'의 새로운 값을 받는다. 일단 어떤 수의 블록들이 '1'의 새로운 값으로 업데이트되어졌으면, 후속하여 프로그램되는 블록들은 '2'의 새로운 값을 받을 수 있다. 일단 어떤 수의 블록들에 '2'의 값이 할당되어졌으면, 새로이 재프로그램된 블록들에는 종국에 '3'의 값이 할당될 수 있다. 어떤 시점에서, 최소로 최근에 사용된 블록들이 '2'의 값을 갖고, 가장 최근에 프로그램된 블록들이 '0'의 값을 갖고, '1'의 값이 가장 오래된 그리고 가장 새로운 데이터를 가진 블록들의 값들이 명확히 식별되게 둘 사이의 갭을 제공하게, 카운트는 롤 오버(roll over)할 것이다. 결국, 가장 오래된 빈(bin) 내에 모든 블록들은 호스트 기입, 스크럽, 마모-평준화 또는 이외 다른 메커니즘을 통해 재기입될 것이다. 위의 예에서, 이어 빈(bin) '2'는 비워질 것이며, 이 값은 갭으로서 작용할 수 있고, 반면 빈(bin) '1'은 가장 최근에 기입된 블록들을 식별하기 위해 사용될 수 있다. 블록이 다른 기준들을 토대로 하여 스크럽 동작에 대한 후보가 되었을 때, 이의 스크럽은 이의 상대적 핫 카운트가 이를 더 최근에 재프로그램된 블록들의 그룹들 중 하나 내에 놓는다면 생략될 수 있다.
대안적으로, 논리적 및 물리적 블록들 중 어느 하나, 혹은 둘 다에 대해 절대 핫 카운트들이 유지될 수 있는데, 이 경우에 시스템은 스크럽 판단을 하기 위해 바람직하게 이러한 핫 카운트들을 사용할 수 있다. 즉, 블록이 재프로그램될 때 이의 절대 핫 카운트는 블록이 재프로그램되어진 총 횟수의 표시를 제공하기 위해 증분, 감소 또는 아니면 유지된다. 많은 수의 재프로그래밍 동작들을 표시하는 절대 핫 카운트들을 가진 블록들은 전형적으로 적은 수의 재프로그래밍 동작들을 표시하는 절대 핫 카운트들을 가진 블록들보다 더 최근에 재프로그램되어졌다. 이에 따라, 상대적으로 많은 수의 재프로그래밍 동작들을 가진 블록들 내 저장된 데이터를 스크럽하는 것은 데이터가 현저히 교란되지 않았을 수도 있기 때문에 생략될 수 있다.
대안적으로 수행될 수 있는 많은 특정한 스크럽 알고리즘들 및 관계된 메모리 동작들이 있다. 스크럽은 메모리 시스템 제어기에 의해서, 혹은 대안적으로, 메모리 셀 집적회로 장치들(칩들) 각각에 대해 제어될 수 있고, 혹은 심지어 호스트에 의해 부분적으로 혹은 전체적으로 제어될 수 있다. 메모리 시스템은 호스트에 착탈가능하게 연결될 수도 있고, 혹은 대안적으로, 호스트 내에 내장될 수 있다.
스크럽 동작의 판독 국면은 다수의 서로 다른 방법들로 수행될 수 있다. 스크럽 레이트들은 데이터 무결성의 특정한 레벨을 유지하면서도 수행을 최적화하기 위해 조율될 수 있다. 예를 들면 스크럽 동작들이 수행되는 레이트들 및 한번에 판독되는 데이터 섹터들 수 둘 다가 조율될 수 있다. 이러한 조율은 스크럽 알고리즘의 부분으로서 자동적으로 행해질 수 있다. 예를 들면, 스크럽의 레이트들 및 위치들은 메모리의 서로 다른 영역들에서 고르지 않은 교란 노출 레이트들에 부합될 수 있다. 또한, 스크럽 판독들은 시스템 수행을 최적화하기 위해서, 혹은 특정할 실시간 요구들을 충족시키기 위해 연기될 수도 있다.
또한, 스크럽 판독이 수행되는 방식에 다양한 대안들이 있다. 예를 들면, 한 세트의 데이터는 명목상의 기준 레벨들 및 마진을 둔 기준 레벨들 둘 다를 갖고 판독될 수 있다. 마진 량은 직면되는 특정한 교란 메커니즘들을 표적으로 삼을 수 있다. 판독 데이터가 예를 들면, ECC에 의해 정정될 수 없다면, 더 넓은 마진들을 가진 판독은 데이터를 복구할 수도 있다. 데이터가 임의의 오류들 없이 정규로 판독된다면, 더 좁은 마진들을 가진 판독은 데이터의 수량 정보를 제공할 수 있다.
스크럽 판독 후에 정정 동작에 참여할지 여부가 판단된다. 이러한 판단이 기초할 수 있는 인자들 중에는 검출되었던 오류 비트들의 수 및/또는 패턴에 기초한 활동의 레벨을 포함한다.
정정 동작은 대부분 일반적으로 판독 데이터를 메모리 내 동일한 혹은 상이한 위치에 재기입하는 것을 포함한다. 이러한 스크럽 기입들은 시스템 수행을 최적화하기 위해서, 혹은 특정할 실시간 요구들을 충족시키기 위해서 연기될 수 있다. 또한, 정정 동작은 스크럽 기입 동작 동안 데이터의 회전을 포함할 수 있는데, 즉, 특정한 저장된 데이터를 나타내는 메모리 셀 상태들은 이것이 있었던 상태로부터 변경된다. 또한, 정정 동작은 교란받기 쉬울 것으로 간주되는 셀들, 컬럼들 또는 다른 구조들을 시스템으로부터 매핑하는 것을 포함할 수 있다.
대다수의 호스트 프로토콜들은 메모리가 일반적으로 논리적 블록 어드레스 번호(LBA)에 의해 호스트에 의해 어드레스되게 메모리 시스템에 대한 앱스트랙트(abstract) 인터페이스를 갖는다. ATA 호스트 프로토콜에는 실린더-헤드-섹터와 같은 대안적인 동등한 어드레싱 모드들이 존재하지만, 기본 개념은 메모리 시스템이 주어진 호스트 데이터 섹터를 저장한 물리적 위치를 호스트가 모른다는 것이다. 호스트 시스템은 이에 가용한, 데이터 섹터들을 저장하고 인출할 선형으로 인접한 한 세트의 독립적 논리적 블록 어드레스들을 갖는다. 이들 앱스트랙트 호스트 프로토콜들은 일반적으로 메모리 동작들을 제어하고, 매핑 기능, 데이터 관리, 오류 복구, 등을 수행하기 위해서 메모리 시스템 상에 제어기가 있을 것을 요구한다. 이들 앱스트랙트 호스트 프로토콜들로 동작하는 메모리 시스템들은 호스트가 일반적으로 메모리 시스템의 물리적 측면들을 모르기 때문에, 바람직하게는 스크럽 동작들을 수행하기 위해 메모리 시스템 내 제어기에 의존한다.
한편, 일부 호스트 프로토콜들은 호스트 자체에 메모리 관리 기능들을 수행하는 인터페이스를 갖는다. 이들 프로토콜들에 준수하는 메모리 시스템들은 전형적으로, 만약 있다하더라도, 최소 제어기 기능을 갖는다. 호스트 시스템이 아니라 메모리 시스템에 의해 수행될 수 있는 이를테면 ECC 생성, ECC 체크, 또는 ECC 정정과 같은 -그러나 이들로 제한되지 않는다- 기능의 다양한 부분들이 있을 수 있다. 이들 호스트 메모리로 관리되는 프로토콜들로 동작하는 메모리 시스템들은 일반적으로 메모리 시스템이 전형적으로 스크럽 동작들을 수행하기엔 충분하지 않은 로직을 갖고 있기 때문에, 스크럽 동작들을 수행하기 위해 호스트에 의존할 것이다.
일부 메모리 시스템들은 목적이 메모리 장치를 동작시키고 메모리 관리 기능을 수행하는 것인 전용 제어기를 갖는다. 그외 다른 메모리 시스템들은 전용 메모리 제어기들을 갖지 않고 대신에 메모리 관리 동작들을 수행하기 위해 호스트 기반구조의 부분들에 의존한다. 예로서, 비휘발성 메모리 장치는 호스트 시스템 내 범용 마이크로프로세서에 직접 연결될 수 있고, 메모리 관리 기능은 소프트웨어에 의해 수행된다. 제어기들이 없는 이러한 메모리 시스템들에서, 메모리 관리 동작들을 맡고 있는 동일 부-시스템은 바람직하게는 스크럽 기능도 수행한다.
제어기가 없는 메모리 시스템들 중에서, 제어기 기능이 비휘발성 메모리 장치(집적회로 칩) 자체에 집적되는 것이 가능하다. 극단적인 예에서, 전체 제어기가 메모리 장치 상에 집적될 수 있다.
메모리 시스템은 호스트 시스템에 내장될 수 있고, 다양한 정도로, 범용이거나 다른 기능을 갖는 호스트 부-시스템들에 통합된 기능을 갖는다. 이러한 내장된 메모리 시스템들에서는 동일 호스트 프로토콜들에 따르지만 반드시 그런 것은 아니다. 그러나, 대개는 메모리 시스템을 동작시키기 위해 동일한 한 세트의 기능이 요구된다.
메모리 시스템은 전형적으로 앱스트랙트 호스트 프로토콜의 경우에 스크럽 동작들을 수행하나, 호스트 시스템이 특별한 지령 또는 그외 다른 기정의된 인터페이스 트랜잭션의 사용을 통해 이러한 시스템들에서 스크럽 동작들을 개시할 수 있는 것이 가능하다. 이 기능을 구현하는 한 이유는 데이터를 저장하거나 인출하기 위해 메모리 시스템이 액세스되지 않을 동안의 기간들을 호스트 시스템이 대부분 알고 있고 이러한 기간들 동안 스크럽 동작을 개시할 기회를 호스트 시스템이 취할 수 있다는 것이다. 이에 따라, 시스템의 전체 신뢰도는 수행에 최소의 영향으로 증가될 수 있다. 스크럽 동작을 개시하기 위해 사용되는 메커니즘은 구체적으로 스크럽 목적을 위한 것일 수 있고, 혹은 하우스키핑 동작들을 위해 시간이 가용함을 메모리 시스템에 통보하기 위한 범용 메커니즘일 수도 있다. 후자의 경우에, 스크럽 동작들은 이러한 기간들 동안 메모리 시스템에 의해 수행되는 몇가지 동작들 중 하나일 수 있다.
주어진 메모리 동작에 기인한 노출의 지역은 일반적으로 광범위하여, 동작이 수행될 때마다 전체 노출된 지역을 스크럽하는 것은 현실적이지 않다. 일반적으로, 노출된 영역의 부분만이 스크럽을 위해 선택될 것이며, 스크럽의 레이트는 오류 비트들의 수와 옮겨진 셀들의 레벨이 메모리 시스템 상에서 가용한 임의의 복구 수법들을 초과하기 전에 가장 교란된 영역들을 스크럽 동작이 검출하게 설정되어야 한다.
스크럽 동작들이 수행되는 레이트는 데이터 무결성 및 메모리 시스템 수행 둘 다에 영향을 미치는 중요한 파라미터이다. 스크럽의 레이트가 높을수록, 오류 비트들의 수와 옮겨진 셀들의 레벨이 메모리 시스템 상에서 가용한 임의의 복구 수법들을 초과하기 전에 한 블록의 데이터 내 교란된 셀들을 검출할 가능성은 더 높아진다. 그러나, 스크럽 레이트가 높을수록, 메모리 및 제어기 시간의 증가한 량들이 이 동작에 전용됨에 따라 메모리 시스템의 수행에 저하가 더 커진다. 가능한 한 약간의 수행을 희생하면서 데이터 무결성의 요망되는 레벨을 보증하는 끝까지, 스크럽 레이트는 적합한 것으로 간주되는 어떤 가드 대역이든, 요구되는 최소한으로 최적화된다. 스크럽 동작들이 수행될 수 있는 레이트는 1) 스크럽 동작을 수행할 시간의 선택, 및 2) 한번에 스크럽 판독을 하기 위한 섹터들의 수의 선택인 두 방법들에서 다를 수 있다.
데이터 무결성을 유지하기 위해 요구되는 스크럽의 레이트는 제품의 수명 동안에 변경하는 것이 가능하다. 예를 들면, 셀들이 더 많이 사이클됨에 따라 교란 레이트는 증가하거나 감소할 수 있다. 스크럽의 고정된 레이트가 제조시에 설정되었다면, 메모리 시스템의 수명 동안에 메모리 시스템 무결성을 유지하기 위해서, 메모리 시스템의 수명 동안에 요구되는 가장 높은 레이트가 사용되어야 할 것이다. 이것은 낮은 레이트만으로 충분할 때 스크럽의 레이트를 더 많아지게 하여, 메모리 시스템 수명에 어떤 시간들에서 필요하였을 것보다 메모리 시스템 수행의 희생이 더 커지게 할 것이다. 메모리 시스템의 수명 동안에 스크럽 레이트들을 조율하기 위한 몇가지 접근법들이 있다.
메모리 시스템을 제조할 때에 스크럽의 가변 레이트를 설정하는 것이 가능하다. 이와 같이 행하는 한 방법은 교란 레이트에 영향을 미치는 메트릭이 무엇이든 간에 서로 다른 스크럽 레이트를 설정하는 레이트 값들의 테이블을 제공하는 것이다. 예로서는 메모리 어레이의 여러 부분들이 경험하는 상이한 프로그램/소거 사이클 카운트들에 대해 스크럽 레이트들을 내포하는 테이블이다. 메모리 시스템이 사이클 카운트들을 유지한다면, 스크럽 레이트 파라미터는 어레이의 주어진 지역의 최악의 경우 혹은 평균 사이클 카운트에 기초하여 테이블로부터 선택될 것이다.
또 다른 접근법은 이전의 스크럽 동작들의 결과들에 기초하여 스크럽의 레이트를 메모리 시스템이 자체-조절할 수 있게 하는 것이다. 예를 들면, 메모리 시스템이 스크럽 동작들의 로그(log)를 유지하고 스크럽 동작들의 매우 낮은 백분률로 정정 동작을 요구한다고 판정한다면, 스크럽 판독들을 수행하는 레이트를 낮게 조절할 수 있다. 반면, 스크럽 동작들의 매우 높은 백분률로 정정 동작을 요구하는 것으로 판정된다면, 스크럽 판독들을 수행하는 레이트를 낮게 조절할 수 있다. 메모리 시스템이 스크럽 레이트를 조절하게 하는 또 다른 메트릭은 이전의 스크럽 동작들 동안 개개의 저장 요소들에서 검출되는 옮겨진 량, 또는 오류 비트들의 수이다. 위의 경우들 중 어느 것에서든, 시스템은 스크럽 레이트 파라미터들을 각 새로운 결과로 적응적으로 조절할 수 있고, 혹은 주기적 조절을 위한 정보를 로그할 수 있다.
스크럽 동작을 언제 수행할지를 선택하기 위해 사용될 수 있는 몇가지 기술들이 있는데, 이들 중 몇가지 예들은 1) 랜덤 또는 의사 랜덤하거나, 2) 호스트 동작들의 수에 기초하거나, 3) 메모리 장치 상에 동작들의 수에 기초하거나, 4) 시간간격에 기초한다. 스크럽 동작들이 수행되는 레이트를 조율하기 위해 위에 기술된 방법들 중 어느 것을 사용하는 것이 가능하다. 이하 가정은 스크럽 판단을 위해 요구되는 임의의 파라미터들이 제조시에 제공된다는 것이다. 판독, 기입 및 소거 동작들 각각이 서로 다른 레이트들로 메모리를 교란할 수 있기 때문에, 이들에 대해 서로 다른 레이트 파라미터들이 있을 수 있다.
스크럽 동작들의 빈도수를 판정하기 위해 난수들(RN) 또는 의사-난수들(PRN)이 시스템에 가용하거나 시스템에 의해 발생된다면 이들을 사용하는 것이 가능하다. 스크럽 동작을 수행할지 여부를 판단하기 위해 RN 또는 PRN 시퀀스를 사용하기 위한 다수의 방법들이 이하 기술된다. 모든 이하의 방법들은 RN이 어떤 규칙적인 간격으로 체크되고 있다고 가정하며, 스크럽을 수행할지 판단은 RN 값의 어떤 테스트에 기초한다.
스크럽 레이트를 판정하기 위해 난수를 사용하는 한 방법은 값 1에 설정된 몇개의 비트들과 제로에 설정된 나머지를 내포하는 마스크 파라미터로 RN 또는 PRN의 논리 AND를 수행하는 것이다. 스크럽을 수행할지의 판단은 AND 연산이 제로 또는 비-제로 값이 되게 하였는지 여부에 기초할 것이다. 더 많은 1들을 가진 마스크 파라미터는 더 많은 제로들을 가진 마스크 값보다 덜 빈번하게 제로 값이 되게 한다. 밑에 테이블은 제로 AND 결과가 스크럽 동작을 야기한다고 가정하고, 서로 다른 8-비트 마스크 값들과 함께 스크럽의 근사적 레이트들을 보여준다. 실로 랜덤한 시퀀스로, 1의 값을 가진 비트들의 수만이 값 자체는 아니고 레이트에 영향을 미치며, 따라서 테이블 내 값들은 단지 예시적 값들임에 유의한다.
마스크 값(hex) 마스크 값(빈) 스크럽 레이트
0x00 00000000 1/1
0x01 00000001 1/2
0x03 00000011 1/4
0x07 00000111 1/8
OxOF 00001111 1/16
OxlF 00011111 1/32
0x3F 00111111 1/64
0x7F 01111111 1/128
OxFF 11111111 1/256
또 다른 관계된 방법은 스크럽 동작을 수행할지 여부를 판정하기 위해 값 1의 RN에서 비트들의 수를 카운트하는 것이다. 다시, RN 내 비트들의 수는 마스크 또는 임계를 나타내는 값과 비교될 수도 있을 것이다. 또 다른 방법은 RN의 값을 스크럽 레이트 파라미터의 값과 비교하는 것을 수반한다. 스크럽을 수행할지의 판단은 RN이 수치적으로 임계 값을 초과하였는지 여부에 기초할 것이다. 예를 들면, 5의 임계 값에 대해서, RN은 시간의 더 높은 5/256이 될 것이다.
대안적으로, 스크럽의 레이트는 수행되는 호스트 동작들의 수에 결부될 수 있다. 예를 들면, 스크럽 동작은 매 N 호스트 판독, 기입 및/또는 소거 동작들마다 수행될 수 있고, N은 스크럽의 레이트를 설정하는 레이트 파라미터이다. 또한, 스크럽의 레이트는 수행되는 메모리 동작들의 수에 결부될 수 있다. 예를 들면, 스크럽 동작은 매 NR 판독들, NW 기입 및/또는 NE 소거 동작들마다 수행될 수 있고, NR, NW 및 NE은 스크럽의 레이트를 설정하는 레이트 파라미터들이다. 또 다른 대안으로서, 메모리 시스템이 시간간격들을 측정하는 방법을 포함하는 경우, 스크럽들은 얼마간의 규칙적인 시간간격 T로 수행될 수 있고, T는 스크럽의 레이트를 설정하기 위해 제공되는 파라미터이다.
스크럽 판독을 수행하기 위한 판단이 행해진 후에라도 메모리 시스템의 수행을 유지하기 위해서 스크럽 판독을 연기하는 것이 바람직할 수도 있다. 이와 같이 행하는 이유들은 실시간 고찰들을 포함할 수 있다. 예를 들면 호스트는 어떤 데이터 전송을 요구할 수 있고, 어떤 시간들에서 스크럽하기 위한 자원들을 전용하는 것은 보증된 데이터 레이트를 충족시키기 위해 메모리 시스템의 능력에 영향을 미칠 수도 있을 것이다. 이러한 목적을 위해서, 메모리 시스템은 스크럽을 수행하는 것이 호스트에 수행에게 영향을 미치지 않을 시간에, 나중에 처리를 위해 스크럽 동작 파라미터들을 큐잉(queue)할 수 있다. 스크럽 동작들은 호스트 지령 처리에서 얼마 후까지, 혹은 지령 처리 후에 언제까지, 혹은 나중에 호스트 지령까지 연기될 수 있다. 이러한 경우에, 판단된 스크럽 동작 파라미터들은 저장되고 호스트에게 가장 편리할 때인 나중 시간에 처리된다.
메모리 어레이의 노출된 지역의 부분만이 주어진 시간에 스크럽될 수 있기 때문에, 적합한 커버리지를 달성하는 한 중요한 측면은 일단 스크럽을 수행하기 위한 판단이 행해졌으면 스크럽할 곳의 선택이다. 스크럽할 곳의 선택은 일반적으로 메모리 장치에 판독, 기입 및/또는 소거 동작들의 위치에 관계된다. 선택에는 주어진 메모리 동작이 다른 저장 요소들을 교란할 지역의 지식이 포함된다. 스크럽할 영역을 동작이 가해지는 영역에 관계시키는 것은 교란되어 있지 않았을 메모리의 영역들 상엔 스크럽 동작들이 수행되지 않는 점에서, 스크럽 동작들을 가장 효율적이 되게 한다.
스크럽할 위치를 선택하는 한 방법은 주어진 동작의 노출의 영역 내로부터 위치를 선택하기 위해 RN 또는 PRN을 사용하는 것을 수반한다. 평균적으로, 가장 많은 노출을 경험하는 영역들은 스크럽을 위해 선택될 가장 많은 기회들을 가질 것이다. 일부 영역들이 다른 것들보다 더 자주 선택되고 단지 평균적으로만 고른 커버리지가 있을 것이라고 한다면, 스크럽의 레이트는 예상되는 최악의 경우의 난수 커버리지를 감안하기 위해 조절될 것이다.
스크럽할 위치를 선택하는 또 다른 방법은 노출된 지역을 통해 확정적으로 이동하는 것을 수반한다. 그러나, 이 방법은 완전한 커버리지를 보증하기 위해 메모리 동작들을 로그하는 것과 스크럽 동작들을 로그하는 것 둘 다를 요구할 것이다.
메모리에 대한 활동이 로그된다면, 주어진 영역이 잠재적으로 교란 동작들에 대해 받는 노출량의 측정을 얻는 것이 가능하다. 이러한 정보가 주어지면, 메모리 시스템은 가장 많은 노출을 받은 영역들에 대해 로그를 통해 탐색하고, 이들 영역들에 대한 스크럽 동작을 제한할 수 있다. 이 방법은 레이트 및 스크럽할 위치들을 판정함에 있어 위에 방법들 중 어느 것을 안내하기 위해 사용될 수 있다. 일반적으로 프로그램/소거 사이클들은 사이클 카운트 정보의 유지를 통해 추적될 수 있다. 그러나, 판독 활동을 로그하는 것은 일반적으로 비현실적이며, 따라서 이 방법은 판독 노출을 추적하기 위해 사용되지 않을 것이다.
대안적으로, 정정 동작들의 위치들은 로그되어, 다른 곳들보다 더 교란되기 쉬울 수 있거나 다른 곳들보다 더 큰 노출을 받는 영역들에 대한 안내로서 사용될 수 있다. 메모리 시스템은 특히 다른 곳들보다 더 빈번히 정정 동작을 요구하였던 영역들에 대해, 스크럽할 영역들의 선택에 비중을 두기 위해 이 정보를 사용할 수 있다.
교란 노출의 잠재적 지역들의 지식이 유지되지 않는 시스템들에서, 이러한 지식에 무관하게 랜덤하거나 확정적인 방법들이 사용될 수 있다. 이 경우에, 스크럽들은 호스트 활동이 메모리 시스템 내 동작들을 어디에서 일어나게 할지에 관계없이 메모리 시스템 전체에 걸쳐 수행된다. 그러나, 스크럽의 레이트는 충분한 커버리지를 보증하기에 충분히 높게 조절된다. 일반적으로 이것은 메모리 시스템의 일부 영역들이 다른 곳들보다 훨씬 더 노출을 경험할 것이며 바람직하게는 스크럽 동작들의 진원의 주된 영역들이기 때문에 자원들의 큰 낭비이다.
스크럽 동작의 목적은 오류 비트들의 수 및 옮겨진 셀들의 레벨이 메모리 시스템 상에 가용한 임의의 복구 수법들을 초과하기 전에 교란된 저장 요소들을 검출하는 것이다. 이 때문에, 일반적으로 가능한 한 조기에 그리고 주어진 전압 임계 레벨에 대한 가드 대역 대부분이 교란되어 상실되기 전에 교란을 검출하는 것이 일반적으로 바람직하다.
배경기술에서 위에 기술된 바와 같이, 플래시 메모리들은 일반적으로 데이터를 개별적 상태들로, 혹은 전하 저장 레벨들의 범위들로 저장하며, 그 각각은 얼마간의 가드 대역만큼 다른 상태들로부터 분리된다. 일반적으로 저장 요소가 한 상태에 있는 것으로 간주되는 각 상태 이상과 저장 요소가 또 다른 상태에 있는 것으로 간주되는 각 상태 미만 간에 판별의 명목상의 감지 레벨이 존재한다. 주어진 저장 요소가 교란되었을 때, 주어진 저장 요소가 프로그램되거나 소거되었던 레벨은 옮겨지기가 시작될 수 있다. 저장 요소의 레벨이 판별의 감지 레벨에 다가가거나 이를 넘어간다면, 저장 요소가 프로그램되거나 소거되었던 것과는 다른 상태에 데이터를 준다. 오류는 일반적으로 데이터 내에 하나 이상의 오류 비트들로서 드러날 것이며, 일반적으로 데이터 필드를 커버하는 ECC의 사용을 통해 검출될 것이다.
판별의 감지 레벨이 한 상태 또는 다른 상태쪽으로 더욱 옮겨지게 판독 조건들을 마진을 두거나 바이어스하는 것은 옮겨진 량이 명목상의 판독 조건들 하에서 오류를 야기하지 않을지라도 교란된 저장 요소들이 틀린 상태에서 감지되게 할 것이다. 이것은 정규 메모리 시스템 동작 동안 오류들을 야기할 지점에 다가가기 전에, 옮겨진 것을 시스템이 검출할 수 있게 할 것이다.
특정한 방식으로 데이터 저장 레벨들에 영향을 미치는 교란 메커니즘들을 알게 된다면, 예상되는 레벨의 옮겨진 쪽으로 판독 조건들에 마진을 둠으로써 이들 특정한 교란 메커니즘들의 검출을 표적으로 삼는 것이 가능하다. 이상적 상황은 단일의 한 세트의 마진 조건들 하에서, 단일의 판독 동작으로 예상되는 교란 메커니즘들을 표적으로 삼는 것이겠지만, 이것은 일반적으로 가능하지 않을 수 있다. 서로 다른 조건들 하에서 복수의 판독 동작들을 수행하는 것이 필요할 수 있다. 예를 들면, 메모리에 있는 서로 다른 교란 메커니즘들이 저장 요소들을 더 프로그램되거나 더 소거되게 하는 것이 가능하다. 판별 레벨 이상 및 미만 둘 다에 있는 저장 요소들은 이 레벨쪽으로 옮겨질 수 있는데, 이 경우에 한 상태로부터 이어 다른 다른 상태로부터 판별 레벨쪽으로 저장 레벨들의 옮겨짐에 대해 먼저 체크하는 것이 필요할 수 있다.
정정 동작이 취해져야 할지를 판정하기 위해 임계들로서 사용될 수 있는 데이터 질의 두 가지 개별적 측정들이 있다: 1) ECC의 사용을 통해 데이터 오류들의 검출, 및 2) 거의 또는 전혀 데이터 오류들이 검출되지 않을지라도, 전하 저장 레벨들에 옮겨짐은 이들이 데이터 판독 오류들을 야기하기 전에 검출될 수 있다.
위에서 논의된 바와 같이, 스크럽 판독 조건들은 어떤 예상되는 교란 메커니즘들을 표적으로 삼거나, 저장된 레벨들 내 충분한 마진에 대해 간단히 체크하기 위해서 마진을 둘 수 있다. 데이터가 명목상의 혹은 마진을 둔 조건들 하에서 판독되었을 때, 정정 동작을 취할지 판단은 스크럽 판독 동작 동안 검출된 오류 비트들의 수에 기초할 수 있다. 예를 들면, 오류 비트들의 수가 시스템의 ECC 정정 능력들 미만이라면, 시스템은 정정 동작을 연기하거나, 오류를 전적으로 무시하기로 결정할 수 있다.
정정 동작을 개시하는 임계로서 오류 비트들의 수를 사용하는 것에 더하여, 시스템은 오류 비트들의 패턴과 같은 다른 인자들에 기초하여 정정하는 판단을 행할 수 있다. 예를 들면, ECC 정정 능력들은 비트 오류 패턴에 민감할 수 있고, 혹은 비트 오류 패턴들은 비휘발성 메모리에서 특정한 알려진 교란 메커니즘을 나타낼 수 있다. 임계를 비트 오류 패턴들에 근거하는 다른 이유들이 있을 수 있다. 비트 오류 패턴은 일반적으로 ECC 정정 동작 동안 드러난다.
정정 동작이 요구되는 것으로 판정되었을지라도 수행 목적들이 스크럽 정정 동작을 연기하는 것이 바람직할 수도 있다. 이와 같이 행하는 이유들은 실시간 고찰들을 포함할 수 있다. 예를 들면 호스트는 어떤 데이터 전송을 요구할 수 있고, 어떤 시간들에서 스크럽하기 위한 자원들을 전용하는 것은 보증된 데이터 레이트를 충족시키기 위해 메모리 시스템의 능력에 영향을 미칠 수도 있을 것이다. 이러한 목적을 위해서, 메모리 시스템은 스크럽을 수행하는 것이 호스트에 수행에 영향을 미치지 않을 시간에, 나중에 처리를 위해 스크럽 동작 파라미터들을 큐잉할 수 있다. 스크럽 정정 행위 동작들은 호스트 지령 처리에서 얼마 후까지, 혹은 지령 처리 후에 언제까지, 혹은 나중에 호스트 지령까지 연기될 수 있다. 주 요점은 스크럽 동작 파라미터들이 저장되고 호스트에게 가장 편리할 때인 나중 시간에 처리된다는 것이다.
메모리 아키텍처들의 두 가지 현저하게 구별되는 극단들이 있는데, 그 각각은 호스트 데이터를 메모리 장치 상에 물리적 위치들에 매핑하며 일단 프로그램되었으면 데이터를 관리하고 이에 액세스하는 서로 다른 방법들에 이르게 한다. 두 아키텍처들 간에 근본적 차이는 최소 소거 유닛의 크기 및 이것이 호스트 프로토콜 데이터 섹터의 크기에 대한 관계에 관계한다.
최소 소거 유닛의 크기가 호스트 데이터 섹터의 크기에 근사하다면, 주어진 호스트 데이터 섹터가 일반적으로 호스트에 의해 기입된 것과 동일한 물리적 위치에 매핑되는 다이렉트 어드레싱 수법을 구현하는 것이 가능하다. 이러한 수법에서, 이전의 콘텐트들은 일반적으로 대체하는 데이터가 그의 자리에 기입되기 전에 물리적 위치로부터 소거된다. 이 재기입은 최소 소거 유닛의 크기가 호스트 섹터의 크기보다 크다면 판독-수정-기입을 수반할 수 있다. 이 어드레싱 수법에서는 호스트 섹터들이 저장 시스템 내 대안적 위치들에 재 매핑되는 것이 가능하나, 그러나 이것은 일반적으로 결함 관리 동작의 부분으로서 섹터 재할당 동안에, 혹은 어떤 다른 시스템 신뢰도 목적을 위해서만 행해진다. 이러한 매핑 후에, 호스트 섹터는 일반적으로 어떤 다른 재할당 이벤트까지 새로운 물리적 위치에 매핑된 채로 있게 될 것이다. 이러한 다이렉트 어드레스 매핑 수법에서, 교란에 기인한 정정 동작은 일반적으로 교란된 것으로 판정된 물리적 위치로부터 콘텐트들을 소거하고 이들을 동일 위치에 재기입하는 것을 수반한다. 기입 동안 임의의 오류들은 재-소거 및 재기입, 재할당, 소거 또는 기입 파라미터들의 변경, 등등을 포함하여 -그러나 이들로 제한되지 않는다-, 시스템에 의해 채용되는 일반적인 예외적 취급과 일관된 방식으로 취급될 것이다.
반면, 최소 소거 유닛의 크기가 호스트 섹터들의 크기보다 훨씬 크다면, 소거-풀링(pooling) 어드레스싱 수법을 구현하는 것이 일반적이다. 또한, 이러한 어드레싱 수법은 작은 최소 소거 유닛도 갖는 메모리들에 구현될 수 있다. 소거-풀링 수법에서, 호스트 섹터들은 정규로 논리 블록들로 그룹화되고 이어 이들은 물리적 소거 유닛들에 매핑된다. 주어진 호스트 데이터 섹터는 소거 유닛 내에 다른 호스트 데이터 섹터들에 의해 둘러싸여진다. 호스트가 주어진 데이터 섹터를 기입할 때, 표적 섹터를 둘러싸는 모든 섹터들을 판독하고, 블록을 소거하고, 이어 한 호스트 섹터가 새로운 데이터를 내포하여, 모든 섹터들을 다시 소거 유닛에 기입하는 것은 비현실적일 것이다. 이러한 과도한 오버헤드 동작들을 피하기 위해, 소거-풀링 수법은 일반적으로 기입된 데이터의 새로운 버전들을 보유할 목적으로 얼마간의 소거 유닛들을 소거된 상태로 유지한다. 섹터들은 일반적으로 데이터 관리 목적들을 위해 논리 그룹들로 함께 그룹화되고, 일반적으로 시스템은 동일한 논리 그룹 내에 섹터들의 물리적 근접을 유지하려고 할 것이다. 정규로 기입 병행도를 높일 수 있게 할 목적으로, 메타블록, 또는 가상 블록이라 하는 논리적 구조를 형성하기 위해 몇개의 소거 유닛들이 조합될 수 있다. 일반적으로, 호스트로부터 새로운 데이터가 소거된 위치에 기입될 것이다. 어떤 시점에서, 새로운 데이터로 대체되지 않은 동일 논리 그룹으로부터 다른 섹터들은 동일 메타블록 내에 카피되거나, 또 다른 메타블록 내에 새로이 기입된 데이터와 함께 카피된다. 나중에, 일단 주어진 메타블록 또는 소거 유닛 내 모든 데이터가 대체되거나 다른 어떤 곳에 카피되었다면, 메타블록 또는 소거 유닛은 소거될 것이며 소거된 소거 유닛들의 풀의 부분으로서 간주될 것이다. 이러한 소거-풀링 어드레싱 수법에서, 교란에 기인한 정정 동작은 일반적으로 정규 메모리 시스템 행동을 위해 시스템에 의해 요구되는 임의의 데이터 합체와 더불어, 영향받은 데이터를 메모리 시스템 상에 다른 위치에 카피하는 것을 수반한다.
그러나, 스크럽 동작 동안 정정 동작을 요구하는 데이터가 호스트 활동 또는 일반적인 데이터 관리에 기인하여 기입 동작들과는 다르게 취급되는 것이 가능하다. 시스템이 데이터를 논리적으로 인접한 데이터와 합체하는 것이 편리할 때까지 짧은 시간량 동안 데이터를 보유하기 위해 유보된 특별한 위치에 이러한 데이터를 기입하는 것이 가능하며, 상기 영역은 예비로 보유되거나, 요구시 할당된다. 또한, 어떤 상황들 하에서는 시스템이 단순히 소거하고 데이터를 동일 위치에 재기입하는 것이 가능하다. 예를 들면, 거의 또는 전혀 다른 데이터가 물리적 블록 내에 거주하지 않는다면, 다른 데이터는 다른 어떤 곳에 영구히 이동되거나, 소거 동안 임시로 다른 어떤 곳, 아마도 휘발성 메모리에 저장되고, 정정 동작을 요구하는 데이터와 함께 다시 기입될 수도 있을 것이다. 데이터 기입 동안 임의의 오류들은 재기입, 재할당, 새로운 위치에 기입, 소거 또는 기입 파라미터들의 변경, 데이터 극성의 강제된 회전, 등등을 포함하여 -그러나 이들로 제한되는 것은 아니다-, 시스템에 의해 채용되는 일반적인 예외적 취급과 일관된 방식으로 취급될 것이다.
일부 개별적 저장 요소들, 그룹들의 저장 요소들, 혹은 그외 다른 구조들은 다른 것들보다 더 교란되기 쉬울 수 있다. 가능한 이러한 구조들 또는 그룹화들의 예로서, 플래시 메모리 저장 요소들은 공통 드레인, 소스, 또는 게이트 라인을 공유하게 배열될 수 있고, 프로세스에 변동에 기인하여, 한 이러한 한 세트의 연결된 저장 요소들이 잠재적으로 교란 신호들에 평균보다 더 강한 노출을 경험하는 것이 가능하다. 마찬가지로, 개별적 저장 요소들은 어레이를 형성하기 위해 사용되는 프로세스에 변동에 기인하여 다른 것들보다 더 쉬울 수 있다. 저장 시스템은 교란되기가 쉬울 것으로 간주되는 이들 영역들을 영속적으로 맵 아웃(map out) 또는 재할당하게 설계될 수 있다. 극단적인 경우에, 임의의 저장 요소들 또는 다른 구조들은 스크럽 정정 동작이 처음 행해질 때 재 매핑될 수 있다. 예를 들면, ECC 정정을 요구하는 비트들을 내포하는 이들 저장 요소들은 용장성 저장 요소들이 가용하다면 맵 아웃될 수 있다. 다른 실시예들에서, 정정 동작들의 위치들은 로그되고 저장 요소들을 재 매핑하거나 나중 시간에 그룹화할 목적으로 나중에 분석될 수 있다. 분석은 주어진 그룹화가 정정 동작을 요구하였던 횟수의 임계를 수반할 수 있다. 일부 경우들에 있어서, 로그된 데이터는 연결된 저장 요소들과 같은 예상되는 물리적 구조들의 존재를 검출하기 위해서 메모리 장치의 물리적 측면들을 알고 분석될 필요가 있을 수 있다. 저장 요소들 또는 저장 요소들의 그룹화가 재매핑되는 방식은 메모리 시스템의 구현에 따른다. 예를 들면, 논리 섹터를 내포하는 물리적 영역은 맵 아웃되는 저장 요소들을 대체할 목적으로 용장성 저장 요소들을 내포할 수 있다. 또 다른 예에서, 전체 섹터 또는 그룹의 섹터들은 정정 동작을 요구하였다면 맵 아웃될 수 있다.
스크럽 동작들은 호스트 동작들의 배경에서, 혹은 호스트 동작들 사이 내에서 수행될 수 있다. 호스트가 요청한 동작의 유형에 따라 스크럽 동작의 행동을 변경하는 것이 바람직할 수 있다. 예를 들면, 호스트 판독 지령의 실행 동안에 스크럽 정정 동작 행해지는 것이 편리하지 않을 수 있고, 이 경우에 정정 동작은 메모리 시스템에 더 편리한 시간까지 연기될 수 있다.
교란 회피에 대한 대안적 접근법은 데이터가 오류인지를 판정하기 위해 먼저 체크함이 없이 잠재적으로 교란 노출을 받은 데이터를 이동시키는 것이다. 이동할 데이터의 빈도 및 위치를 선택하는 많은 접근법들이 있고, 이들 중 대부분은 위에 기술되었다.
스크럽의 일반적인 실시예
도 8의 흐름도는 예시적 플래시 메모리 스크럽 알고리즘에서 주요 단계들을 개괄한다. 제 1 단계(91)는 스크럽 동작의 착수 이벤트가 언제 일어났는지를 판정하기 위해 메모리 시스템의 활동을 모니터한다. 이러한 착수 이벤트는 다음 중 하나 이상일 수 있다.
1. 데이터 판독, 데이터 기입 또는 소거 동작이 다른 유닛들의 전하 레벨들을 교란할 수 있을 주어진 블록 또는 어레이의 다른 유닛 내에서 일어날 때. 동작의 강도 및/또는 지속기간은 어레이가 교란들을 받을 용이성뿐만 아니라(이를테면 메모리가 개개의 상태들을 정의하는 좁은 전하 레벨 범위들을 가진 복수-상태에서 동작하고 있을 때), 스크럽 동작을 착수할지 여부를 판정함에 있어 중요할 수 있다.
2. 주어진 유닛의 정규 시스템 판독 동작이 적어도 하나 또는 기설정된 수의 비트 오류들을 갖고 데이터를 판독할 때.
3. 어떠한 비트 오류들도 존재하지 않을지라도, 프로그램된 셀들의 임계 레벨들이 최적이 아님을 마진 판독들(정규 판독보다 좁은 프로그램된 분포를 판독 하게 설정된 기준 레벨들을 가진)이 나타낼 때.
4. 마지막 스크럽 동작 이후에 기정의된 시간간격이 지난 후.
5. 호스트가 스크럽 동작을 개시할 때.
전체 목적은 교란된 데이터가 너무 많아 메모리 시스템에서 가용할 수 있는 임의의 복구 수법들(ECC, 등)을 초과하게 되기 전에 교란된 데이터를 검출하기에 종종 충분히 스크럽 동작을 실시하는 것이다.
일단 스크럽 착수 이벤트가 검출되면, 다음 단계(93)는 스크럽 동작을 수행하기 위해 메모리 어레이 내에 위치들을 판정한다. 예시적 후보들은 다음과 같이 판정될 수 있다.
1. 판독, 기입 또는 소거 동작 동안에 전압들 또는 전류들이 인가되는 비트라인들 워드라인들 또는 이외 다른 신호 라인들을 주어진 유닛과 공유하는 주어진 유닛 밖에 블록들 또는 다른 유닛(들).
2. 주어진 유닛과 주어진 유닛 밖에 다른 유닛(들) 간에 크로스토크가 존재하게 주어진 유닛의 것들에 결합되는 신호 라인 필드를 갖는 주어진 유닛 밖에 다른 유닛(들).
3. 이러한 다른 유닛(들)이 프로그램되는지 아니만 소거되는지 여부는 이들이 주어진 유닛 상에 동작에 의해 잠재적으로 영향받는지 여부를 결정할 수 있다.
4. 잠재적으로 영향받는 유닛(들)은 동작이 판독, 기입 또는 소거인지 여부에 달려있을 수 있다.
5. 판독 데이터 내 오류(들)을 발견하는 주어진 유닛의 정규 시스템 판독에 의해 착수된다면, 주어진 유닛은 스크럽 동작을 위해 식별된다.
6. 후보 블록들 내 데이터의 상대적 신규성은 더 최근에 재기입되어져 있을 수 있는 것들을 제거하기 위해 사용될 수 있다.
스크럽을 위한 후보들로서 메모리 블록(들) 또는 다른 유닛(들)의 식별에 이어 반드시 스크럽이 수행되는 것은 아니다. 다음 단계(95)에 의해 나타낸 바와 같이, 스크럽 동작의 개시는 어떤 상황들 하에선 연기될 수 있는데, 이들의 예들은 다음과 같다:
1. 스크럽 판독들은 시스템 수행을 최적화하기 위해서 혹은 메모리 시스템의 특정 실시간 동작 요구들을 충족시키 위해서 연기될 수 있다.
2. 자체-조율 스크럽: 스크럽 동작들이 수행되는 레이트는 수행 및 데이터 무결성을 유지하는 것을 최적으로 균형잡기 위해 동적으로 조절될 수 있다.
3. 스크럽 동작을 수행하는 긴급은 잠재적으로 영향받은 것으로서 식별되는 유닛들의, 이를테면 이들의 경험 레벨(프로그래밍/소거 사이클들 횟수), 및 스크럽 동작이 착수되게 하는 이벤트의 유형과 같은, 특성들로부터 부분적으로 판정될 수도 있다.
4. 스크럽 착수 이벤트는 확정적이거나, 랜덤하거나 의사 랜덤한 방식으로 일어나게 더욱 제한될 수도 있다:
(a) 특정된 수의 호스트 동작들 후;
(b) 특정된 수의 물리적 판독, 기입 및/또는 소거 동작들 후;
(c) 특정된 기간 후;
(d) 호스트의 사용 특성들에 기초하여; 혹은
(e) 랜덤하거나 의사-랜덤한 시퀀스, 이의 발생 및 체크는 위에 것들 중 어느 것에 결부될 수 있다.
다음 단계(97)에서, 스크럽을 위한 후보들로서 단계(93)에서 식별된 모든 혹은 단지 일부의 메모리 혹은 다른 유닛(들)이 스크럽 동작을 위해 선택된다. 선택 기준들은 다음을 포함한다:
1. 임의의 한 동작으로 스크럽을 위해 식별될 판정된 유닛들의 수는 시스템 수행시 스크럽을 위해 걸리는 시간의 영향과 데이터 무결성을 유지할 필요성을 균형잡게 선택될 수 있다.
2. 이 균형이 유지되는 방식은 메모리의 년수에 따르는 현재 스크럽 동작을 위한 다수의 유닛들, 식별된 유닛들이 경험한 프로그램/소거 사이클들의 수, 스크럽 동작을 착수하였던 이벤트의 유형, 및 식별된 유닛들 내 데이터에 반드시 취해지는 정정 동작의 이력을 식별하는 것일 수 있다.
3. 스크럽 동작에 포함된 유닛들의 수는 메모리의 년수, 주어진 유닛들이 경험하는 프로그램/소거 사이클들의 횟수, 및 스크럽 동작을 착수하였던 이벤트의 유형에 따를 수 있다.
4. 대안적으로, 정규 사용에 관계되지 않게 되도록 확정적이거나, 랜덤하거나 의사-랜덤한 시퀀스에 따름으로써 스크럽을 위해 모든 식별된 유닛들 미만이 선택될 수 있다.
다음에, 단계(99)에 의해 나타낸 바와 같이, 선택된 유닛들(스크럽 판독)로부터 다음에 따라 데이터가 판독된다:
1. 스크럽 판독은 임의의 특정한 호스트 동작의 완료에, 혹은 마모 평준화와 같은 다른 시스템 동작들에 직접 관계되지 않고, 일반적으로 정규 데이터 판독들과 동일한 방식으로 실행된다.
2. 특정 상황들에서 마진 판독들(정규 데이터 판독들의 것들과는 다른 기준 레벨들을 갖고 판독들)가 수행될 수도 있다:
(a) ECC에 의해 정정되기엔 너무 많은 오류들을 갖는 데이터의 제 2 판독으로서, 이 경우 제 2 판독에서 기준 레벨들은 정규 판독보다 더 넓은 프로그램된 분포를 판독하게 완화된다(혹은 대안적으로, 이하 논의되는 데이터 정정 단계(107)에서 수행될 수도 있다); 또는
(b) 착수 이벤트에 의해 야기될 것으로 예상되는 특정 교란 메커니즘이 프로그램된 레벨들을 현저하게 옮길 것으로 보일 때, 초기 판독은 더 넓은 기준 레벨들을 가진 마진 판독일 수도 있을 것이다; 또는
(c) 최적 레벨들로부터 멀리 옮겨진 전하 레벨들로서 저장된 데이터를 식별하기 위해서 ECC에 의해 정정될 수 있는 전혀 비트 오류들이 전혀 없거나 혹은 몇개를 가진 데이터의 제 2 판독으로서, 이 경우 이 제 2 판독의 기준 레벨들은 정규 판독보다 좁은 분포를 판독하게 엄밀해진다. (마진 스크럽 판독들은 도 10에 관련하여 나중에 더욱 논의된다).
3. 블록의 데이터를 판독하는 부분으로서, 오버헤드 데이터 또한 판독된다. 데이터의 상대적 신규성이 헤더에 저장된다면, 이것은 스크럽될 필요가 없는 신규하게 재기입된 블록들을 식별하기 위해 사용될 수 있다.
다음 단계(101)는 판독 데이터의 무결성을 평가한다. 스크럽 판독의 부분으로서, ECC는 메모리 유닛(들)로부터 판독된 사용자 데이터로부터 계산되고 프로그래밍 동안 사용자 데이터와 함께 먼저 계산되어 저장되었던 ECC와 비교될 수 있다. ECC에 의해 정정될 수 있는 비트 오류들이 없거나 몇개의 오류들이 있는 한, 위에 기술된 바와 같이, 완화된 기준 레벨들을 가진 제 2 마진을 둔 판독은 행해질 필요가 없다.
선택적으로 행해질 수 있는 추가의 판독이 메모리 어레이 내 제공된다면, 이들의 저장된 값들이 변경되었는지를 알기 위해, 셀들을 추적하는 레벨들을 갖는다. 메모리 셀들을 추적하는 것은 종종 메모리 셀들을 판독하기 위해 사용되는 기준 레벨들을 확립하기 위해 포함된다.
일단 데이터가 판독되고 판독 데이터의 오류들(만약 있다면)의 수를 알게되면, 다음 단계(103)는 정정 동작이 필요하고 요망되는지를 판정한다. 몇가지 고찰들은 다음과 같다:
1. 한 접근법은 임의의 수의 비트 오류들을 가진 데이터를 정정하여 이에 따라 스크럽이 메모리 시스템 수행에 가장 현저하게 영향을 미치게 하는 것이다.
2. 또 다른 접근법은 데이터 비트 오류들의 수가 유닛 판독당 어떤 임계 N을 초과하지 않는다면 데이터를 정정하는 것에 선행하여, 이에 따라 스크럽이 수행에 미치는 영향을 감소시키는 것이다.
3. ECC들의 비교에 의해 판정되는 바와 같이, 오류 데이터 비트들의 패턴은 또한 데이터의 정정이 바람직한지를 판정하기 위해 사용될 수 있다.
4. 최근에 재기입(상대적으로 높은 정도의 신규성)되었던 데이터는 바람직하게는 스크럽되지 않는다. 일반적으로, 스크럽 동작을 완료하는 것이 수행에 미치는 영향 및 현재 및 미래에 데이터 무결성에 대한 오류들의 심각성은 오류 데이터를 정정할지 여부를 판정할 때 바람직하게 균형이 잡혀진다.
다음 단계(105)에서, 스크럽 정정 동작을 수행할지 아니면 나중 시간까지 이를 연기할지 여부가 판정된다. 이 판단을 행함에 있어 고찰들 중 하나는 단계(95)에서와 같은데, 즉 이때에 메모리 시스템의 특정 실시간 동작 요구들을 충족시키기 위해 연기하는 것이다. 일반적으로, 스크럽 동작의 완료는 바람직하게는 이의 나중에 완료가 현재 시간에 이와 같이 행하는 것보다 시스템 수행에 미치는 영향을 덜 야기할 것이라면 연기된다. 특히 스크럽 동작이 ECC에 의해 정정될 많은 수의 오류들, 데이터를 합체할 필요성, 등 때문에 보통보다 더 많은 시간이 걸리게 될 때, 스크럽을 수행하기 위해 제어기에 의해 정규 처리를 중단시키는 것은 일반적으로 바람직하지 못하다. 연기되었을 때, 스크럽 판독에 의해 판독된 데이터, 이들의 어드레스들, ECC 분석에 의해 판정된 임의의 오류들, 및 선행 단계들에서 전개된 스크럽 동작의 다른 파라미터들은 임시로 저장된다. 이어, 이들 데이터 및 파라미터들은 나중에 판독되고 스크럽 동작은 시스템 수행에 미치는 영향이 덜 할 때의 시간에 완료된다.
스크럽 동작이 완료될 때, 데이터는 다음 단계(107)에서 정정된다. 데이터는 이 경우에 ECC의 사용에 의해 정정된다. 위에 단계(99)의 부분으로서 수행되지 않는다면, 하나 이상의 마진 판독들(이전 판독동안에 사용된 것보다 더 넓은 프로그램된 분포를 판독하기 위해 기준 레벨들은 완화된다)은 정규 또는 스크럽 판독이 사용되는 ECC에 의해 정정될 수 있는 더 많은 오류 비트들을 야기한다면 데이터를 복구하기 위해 요구될 수 있다. 이어, 단계(109)에서, 적합한 정정 동작이 취해진다. 이것은 정정된 데이터를 판독되었던 동일 위치에 재기입하는 것을 포함할 수 있다. 물론, 이것은 먼저 데이터가 재기입되는 블록을 소거하는 것을 요구하는데, 이것은 각 정정된 데이터 섹터가 메모리 셀 블록을 채우는 도 2의 메모리 배열에선 실제적일 수 있다. 그러나 이것은 블록을 채우거나 거의 채우기 위해 논리적으로 연이어진 어드레스들로 재기입될 필요가 있는 정정되어진 충분한 정정된 데이터 섹터들이 없다면 도 5 및 도 6의 큰 블록 메모리 배열들에 행하는 것은 효율적이지 않다.
대안적으로, 정정된 데이터는 스크럽 동작에서 먼저 판독되었던 다른 위치에 재기입될 수 있다. 메모리 배열이 도 5 및 도 6에 도시된 것과 같은 큰 저장 블록들을 이용할 때, 앞서 기술된 소거 풀 또는 다른 큰 블록 관리 기술들은 재기입될 데이터가 블록의 용량 미만일 때 채용될 수 있다. 예를 들면, 하나 또는 두 페이지들 내 데이터만이 16, 32 또는 그 이상의 페이지들을 내포하는 블록으로부터 정정되는 것은 흔히 있다. 이러한 경우들에 있어서, 블록은 하나 또는 몇개의 페이지들의 정정된 데이터의 임시 저장을 위해 어레이의 하나 이상의 플레인들에 전용될 수 있다. 이어, 이를테면 메모리의 정규 동작 동안 다른 인자들에 의해 개시되는 데이터 합체(가비지 수거) 동안과 같이 행하기가 편리할 때, 재기입된 데이터는 원 블록의 페이지들 내 저장된 정정되지 않은 데이터와 조합된다. 대안적으로, 이러한 합체는 이 전용 블록이 완전히 채워지게 됨에 의해서 혹은 주체의 페이지들의 데이터가 전용 블록 내에 기입된 후 기설정된 시간량이 지난 후에, 아니면 시스템 동작에게 편리할 때 개시될 수 있다.
이외 많은 다른 블록들의 페이지들로부터 데이터의 스크럽 재기입들을 임시로 저장하고 이어 재기입된 페이지들의 데이터를 이들의 원 블록들의 다른 페이지들로부터의 데이터와 나중에 합체하기 위해 공통의 지정된 물리적 블록 혹은 블록들을 이용하는 것이 편리할 수 있다. 예를 들면, 블록들 1 및 2로부터 페이지들의 스크럽 재기입들은 임시 블록 3내에 임시로 저장된다. 나중에, 블록 1의 스크럽 재기입들은 블록 3에서 소거된 블록 4에 카피되고, 블록 1의 나머지 변경되지 않은 페이지들 또한 물리적 블록 1에 매핑된 데이터를 합체하기 위해 블록 3에 카피된다. 이어 똑같이 또 다른 소거된 블록 5에서 행해지는데, 여기에서 블록 3에 저장된 블록 2의 스크럽 재기입 및 블록 2로부터 변경되지 않은 데이터 페이지들이 합체된다.
메타블록들을 이용하는 도 6의 시스템에서, 각 플레인 내 다른 블록들로부터 재기입된 데이터를 저장하기 위해 이 플레인 내 한 이러한 전용 블록이 있을 수 있거나, 임의의 플레인 내 모든 페이지들로부터 정정된 데이터가 기입되는 전체 시스템 내에 단일 전용 블록이 있을 수 있다. 선택되는 특정 동작은 개개의 블록들 내 페이지들의 수, 전체 메모리 어레이 내 페이지들의 수, 및 스크럽 프로세스에 의해 정정될 데이터를 가진 페이지들의 예상되는 수 및 빈도의 예측에 따른다. 교란들을 받기 쉬워지게 만드는 구조 및/또는 동작을 갖는 메모리 어레이는 그렇지 않은 것보다 더 많은 전용 블록들을 필요로 할 것이다. 스크럽 판독이 데이터 오류들이 없음을 드러내지만 스크럽 동작이 옮겨져 저장된 전하 레벨들을 다시 이들의 상태 범위들의 중간으로 이동하기 위해서 수행되고 있다면, 어떠한 정정도 명백히 필요하하지 않기 때문에, 판독 데이터는 단순히 재기입된다.
일부 메모리 시스템들이 사용되는 방식은 거의 교란들을 야기하지 않는다. 그러면, 스크럽 프로세스는 인식될 몇개의 착수 이벤트들이 있기 때문에 드물게 수행된다. 또한, 스크럽되는 데이터가 원래 거주하였던 물리적 블록들에 관계없이, 하나 이상의 지정된 물리적 블록들에 비교적 소량의 재기입된 데이터를 함께 영속적으로 저장하는 것이 실제적이다. 이 경우에, 페이지들의 스크럽된 데이터는 스크럽 프로세스에 단계로서 다른 논리적으로 인접한 데이터 페이지들과 물리적 블록들 내에 재조합되지 않는다. 정정 동작의 또 다른 요소는 원래 기입되었 것들과는 다른 회전으로 정정된 데이터를 재기입하는 것이다. 예를 들면, 4 상태 시스템의 4개의 아날로그 저장 상태 범위들은 각각 00, 01, 10 및 11을 나타내기 위해 원래 지정되고, 재기입시엔 11, 10, 01 및 00을 나타내기 위해 지정될 수 있다. 오버헤드 데이터의 부분으로서 혹은 다른 것으로 유지되는 특정한 회전의 데이터를 사용하여, 데이터가 판독될 때 메모리 제어기에 의해 변환이 행해진다. 데이터 회전은 정정된 데이터 및 정정을 필요로 하지 않았던 데이터 모두의 재기입들에, 잇점이 있게 적용된다.
포함될 수 있는 정정 동작의 또 다른 요소는 평균보다 훨씬 더 교란들에 의해 영향을 받은 이력을 쌓아가는 페이지들 또는 블록들의 메모리를 맵 아웃하는 것이다. 이것은 어레이의 여러 페이지들, 블록들, 플레인들 및/또는 다른 정의된 지역들 내 데이터 오류들의 수를 모니터함으로써 검출된다. 물론, 이를테면 블록이 평균보다는 더 혹은 다르게 사용되고 있기 때문에, 교란들을 받을 더 큰 용이성 이외의 이유들로 데이터 오류들을 경험하는 페이지들 또는 블록들을 맵 아웃하는 것을 방지하기 위해 주의해야 한다.
스크럽 알고리즘은 메모리 제어기에 의해 제어되지만, 그러나 대안적으로, 호스트에 의해 제어될 수도 있을 것이다. 메모리 제어기에 의해 제어될 때, 알고리즘은 메모리의 동작 동안에 제어기 RAM(25)으로부터 마이크로프로세서(21)(도 1a)에 의해 전형적으로 실행되는 메모리 시스템 펌웨어 내에 코딩된다.
이용되는 특정한 스크럽 알고리즘은 메모리 시스템, 특히 메모리 장치들(11, 13)(도 1a)의 어떤 특성들에 의존한다. 예시적 특성들은 다음과 같다:
(a) 프로그래밍 메모리 유닛(일반적으로 페이지)에 저장되는 호스트 데이터 섹터들의 수;
(b) 메모리 셀들의 저장 상태들의 수 및 각 저장 상태에 대해 지정된 임계 범위의 정도;
(c) 프로그래밍 유닛(일반적으로 페이지)이 단일 혹은 복수의 호스트 데이터 섹터들을 포함하는지 여부;
(d) 소거 유닛(일반적으로 블록) 내 프로그래밍 유닛들(일반적으로 페이지)의 수; 및
(e) 메모리 셀들의 밀도 및 한 유닛 내 동작이 다른 유닛에서 데이터 교란들을 야기하는 정도 및 구체적 경향.
스크럽의 구체적 실시예
스크럽 알고리즘의 더 구체적인 실시예가 도 9의 흐름도로 도시되었다. 일반적으로, 앞서 기술된 된 바와 동일한 처리 단계들이 이용되나 4 상태 시스템 예(각 물리적 전하 저장 유닛에 저장된 2 비트들)에 대해 도 10에 관련하여 기술된 마진 스크럽 판독들 포함하여, 더 상세히 도시되었다. 스크럽 착수 이벤트가 검출될 때인 115, 그리고 연기된 스크럽들을 실행하라는 지령이 수신될 때인 117인, 처리에의 두 진입 지점들이 도 9에 도시되었다.
단계(115)에서, 도 8의 단계(91)에 대해 위에서 논의된 바와 같이, 스크럽 착수 이벤트에 대해 메모리가 모니터된다. 유사하게, 단계(119)에서, 도 8의 단계(93)에 대해 기술된 바와 동일하게, 스크럽에 대해 후보 메모리 셀 유닛(들)이 판정된다. 이어, 단계(95)와 유사하게, 도 9의 단계(121)는 한번에 수행될 필요가 있는 다른 시스템 동작들 때문에 후보 유닛들 중 어느 것에 스크럽이 연기되어야 하는지를 판정한다. 그러하다면, 123에 나타낸 바와 같이, 후보 셀 유닛들의 어드레스들 및 다른 필요한 데이터가 임시로 저장되고, 프로세스는 다시 재개하기 위해 더 높은 우선도 시스템 동작을 완료하는 것을 기다린다. 대안적으로, 스크럽 동작의 완료는 후자의 특별한 지령이 호스트로부터 수신되거나, 프로세스에서 나중에 연기될 때의 경우와 같이, 단계(117)에서 메모리 제어기에 의해 발생될 때까지 연기될 수 있다. 연기된 스크럽을 위한 데이터가 단계(123)에서 저장된 후에, 단계(124)에 의해 판정되는 바와 같이, 스크럽할 더 많은 유닛들이 없다면, 실행되는 특정 스크럽 동작은 종료된다. 스크럽할 더 많은 유닛들이 있다면, 처리는 단계(119)로 되돌아간다.
다음 단계(125)는 도 8의 단계(97)와 동일한 기능, 즉 스크럽될 후보 메모리 셀 유닛들의 선택을 수행한다. 도 9의 후속 단계들은 선택된 유닛들 중 하나에 대해 한번에 수행된다. 다음 단계(126)는 판독 구획 레벨들 및 다른 판독 조건들이 초기에 정규 판독 레벨들에 설정되게 한다. 이어, 단계(127)는 도 8의 단계(99)에 대응하여, 메모리 셀 유닛들 중 첫 번째에 대해, 설정된 조건들 하에, 스크럽 판독을 수행한다. 이 동일한 한 유닛에 대해 후속 단계들이 수행되며, 루프(129)는 모두 스크럽될 때까지 선택된 유닛들 중 다음에 대해 단계(127)로 되돌아간다. 물론, 특정 동작에서 스크럽하기 위해 단지 한 유닛만이 선택된다면, 루프 백(129)은 없다.
단계(126)에서 설정된 판독 마진들로 단계(127)의 스크럽 판독 후에, 단계(131)는 도 8의 단계(101)와 유사하게, 임으의 데이터 오류들이 있는지를 판정한다. 오류들이 존재한다면, 다음 단계(133)는 오류들이 정정될 수 있는지를 판정한다. 데이터의 무결성을 알아내기 위해 ECC가 사용될 때, 이 단계(133)는 데이터의 판독 유닛 내 배드(bad) 비트들의 수가 사용되고 있는 특정 ECC 알고리즘의 정정 능력들 이내인지를 판정한다. 오류들이 정정될 수 있다면, 다음 단계(135)는 도 8의 단계(103)에 대응하여, 정정이 필요함과 아울러 요망되는지를 판정한다. 단계(135)는 오류이지만 정정가능한 비트들의 수가 1의 임계 또는 아주 적은 수 미만인지를 판정하는 것만큼 간단할 수 있는데, 이 경우 이것은 정정 동작을 취하지 않을 것으로 판정될 수 있다.
또한, 단계(135)에서 판단은 데이터 및 이들의 ECC가 사용자 데이터인지 아니면 오버헤드 데이터인지 여부에 의해서 영향을 받을 수 있다. 도 3에 관련하여 기술된 바와 같이, 오버헤드 데이터는 이 자신의 ECC를 가질 수 있다. 이 경우일 때, 사용자 및 오버헤드 데이터의 무결성은 단계(131) 및 단계(133)에서 개별적으로 체크될 수 있고, 사용자 데이터 및 이들의 ECC 을 한 유닛으로서 그리고 오버헤드 데이터 및 이들의 ECC를 또 다른 한 유닛의 데이터로서 간주함으로써, -이들이 동일 페이지에 저장될 수 있을지라도- 복귀(129)를 가진 완전한 루프를 통해 심지어 한번에 하나씩 처리될 수도 있다. 각각의 오버헤드 및 사용자 데이터 ECC들의 사용이 일반적으로 동일하게 될지라도, 프로세스는 오버헤드 데이터의 무결성을 더 엄밀하게 유지하게 동작할 수 있다. 이것은 과도한 스크럽 동작들이 감소하는 것인 시스템 수행을 유지하는 것과, 스크럽이 달성되게 설계되는 저장된 데이터의 무결성을 장기간 동안 유지하는 것 간에 균형의 예이다.
단계(135)에서 판단이 해당 데이터 유닛 내 정정가능한 오류들의 정정이 행해져야하는 것이라면, 다음 단계(137)는 데이터의 정정이 연기되어야 할지를 묻는다. 스크럽은 판독 데이터 내 너무 많은 배드(bad) 비트들이 있어 이들의 정정이 이 단계에서 가용한 것보다 더 많은 시간이 걸릴 것이라면 바람직하게 연기된다. 연기되지 않는다면, 오류들은 도 8의 단계(107)와 유사하게, 단계(139)에서 정정된다. 이어, 다음 단계(140)는 정정 동작이 연기되어야 할지를 묻는다. 스크럽은 데이터를 재기입하는 것 또한 가용한 것보다 더 많은 시간이 걸릴 필요한 합체에 기인하여 다른 데이터의 이동을 수반한다면 전형적으로 연기된다. 연기가 없다면, 정정된 데이터는 도 8의 일반적인 실시예가 기술되었을 때 위에 기술된 재기입 선택지들 중 하나에 따라 단계(141)에서 재기입된다. 데이터의 정정된 유닛의 성공적 재기입 후에, 스크럽을 위해 단계(125)에서 선택되었던 임의의 다른 메모리 셀 유닛들이 있는지가 단계(143)에서 판정된다. 그러하다면, 단계(145)는 다음 유닛으로 순서대로 증분하고 처리는 이 새로운 유닛에 대해 루프(129)를 통해 단계(127)로 복귀한다.
지금까지 도 9의 흐름도의 주요 경로가 기술되었다. 그러나, 질문들의 일부의 해결이 위에 기술된 것들과는 다를 때 경로를 따라 진입될 수 있는 많은 몇가지 분기들이 있다. 기술될 이러한 제 1 분기는 ECC에 의해 정정될 수 없는 너무 많은 데이터 비트 오류들이 주체의 유닛 내에 존재할 때 단계(133)로부터 취해진다. 단계(151)에 의해 나타낸 바와 같이, 단계(127)에서 스크럽 판독을 위해 사용되는 레벨들과는 다르게 되게 판독 임계 레벨들이 설정되고, 이어 단계(153)에서 유닛의 데이터는 이들 서로 다른 임계 레벨들을 사용하여 다시 판독된다. 이러한 마진을 둔 판독이 도 10에 도시되었다.
4 상태들에서 플래시 메모리 어레이 내 개개의 저장 요소들을 동작시키는 예가 도 10에 도시되었다. 4 임계 전압 레벨 범위들 각각에서, 교란들 없이, 한 유닛의 메모리 셀들 내에 다수의 저장 요소들의 분포가 도시되었다. 임계 전압 가드 대역들(155, 156, 157)이 이 내에 임의의 셀들로부터도 데이터 없이 저장 상태 임계 레벨 범위들 사이에 유지된다. 이것은 한 유닛의 셀들의 상태들을 프로그램하고 검증한 직후에 존재하는 요망되는 프로그램된 조건이다. 그러나, 이어 다른 유닛들이 프로그램되고, 판독 및/또는 소거됨에 따라, 이 데이터는 교란될 수 있다. 교란들은 임계 레벨들을 일측 또는 다른 측으로 이웃 가드 대역들 내로 옮김으로써 나타난다. 이것은 각 상태 분포 내에 셀들의 작은 부분에 대해 일어날 수 있거나, 혹은 전체 분포가 교란들의 성질에 따라 이웃 가드 대역들 내로 옮겨지거나 퍼질 수 있다.
정규 판독에 있어서, 각각의 가드 대역들(155, 156, 157)의 대략 중간에 구획 레벨들(159, 160, 161)이 사용된다. 즉, 판독되는 셀들의 임계 레벨들은 이들의 저장 상태들을 판정하기 위해 이들 구획 레벨들과 비교된다. 한 상태 내에 셀들의 임계 레벨들이 구획 레벨을 가로질러 가드 대역을 통과해 옮겨질 때 오류들이 일어난다. 예를 들면, 상태 1에 셀들의 임계 레벨들이 이들이 구획 레벨(159) 밑에 있게 될 때까지 낮은 쪽으로 옮겨갈 때, 이들 셀들은 상태 0에 있는 것으로 판독된다. 유사하게, 상태 1에 셀들의 임계 레벨들이 구획 레벨(160) 이상이 될 때까지 높은 쪽으로 옮겨간다면, 정규 판독은 이들 셀들이 상태 2에 있다고 말할 것이다. 그러면, 이러한 판독 데이터 오류들은 ECC 프로세스에 의해 식별된다. 그러나, ECC가 정정하기엔 너무 많은 이러한 오류들이 있을 땐, 상태들 사이에 서로 다른 구획 레벨들을 가진 제 2 판독이 단계(151) 및 단계(153)(도 9)에 의해 행해진다. 구획 레벨들(159, 160, 161)은 교란들로부터 저장 임계 레벨들의 예상되는 옮겨지는 방향으로 이들 각각의 가드 대역들 이내로 옮겨지고, 따라서 옮겨진 레벨들은 이제 이들이 교란되기 전에 있었던 것과 가드 대역의 동일한 측 상에 있게 된다.
이와 같이 데이터를 재-판독한 후에, 단계(165)에서 임의의 데이터 오류들이 남아 있는지 여부가 ECC의 사용에 의해 판정된다. 그렇지 않다면, 처리는 이어 데이터 정정 및 재기입이 연기되어야 할지를 판정하는 것을 포함하여, 주 처리 경로의 단계(135)로 진행한다. 데이터 오류들이 존재하는 것으로 단계(165)에 의해 발견된다면, 다음 단계(167)는 이들이 ECC에 의해 정정될 수 있는지를 판정한다. 그러하다면, 처리는 이어 주 처리 경로의 단계(135)로 도약한다.
그러나, 데이터 오류들이 단계(167)에 의해 정정불가한 것으로 발견된다면, 심지어 서로 다른 구획 레벨들을 가진 추가의 판독이 포함될 수 있다. 단계(169)에서, 임의의 남이 있는 시도되지 않은 완화된 판독 조건들이 있는지가 판정된다. 그러하다면, 단계(170)에 의해 재시도 조건들이 증분되고 처리는 이러한 새로운 조건들을 갖고 데이터를 판독하기 위해 단계(151) 및 단계(153)로 되돌아간다. 그러나, 제공되는 더 많은 서로 다른 판독 조건들이 없다면, 주체 어레이 유닛 내 데이터는 이의 정정불가한 오류들을 가진채로 남아있어야 한다. 그러면, 이 유닛에 대한 스크럽 동작은 실패한 것으로 판정된다. 이것의 한 결과는 모든 유효한 데이터를 새로운 메모리 시스템에 카피하고 이어 현 메모리를 폐기하는 것일 수도 있을 것이다. 또 다른 결과는 이 유닛을 오버헤드 데이터에 저장된 플래그에 의해 배드(bad)로서 단순히 표시하는 것이거나, 아니면, 다른 어레이 유닛들의 스크럽을 계속하기 위해 단계(143)로 진행하는 것이다. 그러면, 이 유닛 내 데이터는 유실된다. 이들 데이터는 초기에 이들의 정정 임계 레벨 범위 내에 있게 원 프로그래밍의 부분으로서 검증되었기 때문에, 시간이 지남에 따라 교란 동작들의 누적의 이 가능한 결과는 이러한 불리한 결과에 대해 충분히 빈번하게 스크럽의 바람직함을 나타낸다.
단계(135)로 되돌아 가서, 이어 데이터의 정정이 필요하지도 바람직하지도 않은 것으로 판정된다면, 처리는 식별된 유닛들의 임의의 추가와 함께 계속 스크럽하기 위해 단계(143)로 도약한다. 또한 단계들(137, 140)로 되돌아가서, 데이터의 정정 또는 재기입이 연기되어야 하는 것으로 판정된다면, 판독 데이터, 이들의 어드레스들, ECC 및 오류 비트들과 이전의 다른 판정된 데이터의 임의의 식별은 단계(171)에서 저장되고 이어 처리는 단계(143)로 도약한다. 이어, 이들 데이터는 이하 기술된 바와 같이, 연기된 행위들이 완료를 위해 도달될 때 판독된다.
단계(131)로 되돌아가서, 데이터 오류들이 없는 것으로 판정한 후에 다음 행위는 단계(143)로 도약함으로써 현재 유닛의 데이터에 더 이상 아무 것도 하지 않는 것일 수도 있을 것이다. 그러나, 심지어 유효한 데이터가 판독되는 셀들의 저장 레벨들을 더욱 체크하여 조절하는 것이 바람직할 수도 있다. 이것은 여러 상태들(도 10 참조)에 대해 정의된 레벨들이 정규 판독 데이터 오류를 야기하게 구획 레벨을 지나지 않았을지라도, 이들 레벨들 사이에 가드 대역 내로 저장된 전하가 이동된 임의의 셀들을 식별하기 위해서, 초기 판독에서 사용된 것과는 다른 구획 레벨들로 데이터를 재-판독하는 것을 수반한다. 단계(172))에 의해서, 이미 시도된 적이 없는 임의의 이러한 판독 조건들이 존재하는지가 판정된다. 그러하다면, 단계(173)는 새로운 구획 레벨들 및/또는 다른 스크럽 판독 조건들이 선택되게 한다. 이어 처리는 단계(126)로 되돌아가서 이들 판독 조건들이 설정되고 이어 이들 조건들로 단계(127)에서 데이터가 판독된다. 판독 동안에 사용되는 구획 레벨들은, 예를 들면, 도 10의 가드 대역들(155, 156, 157)의 끝들까지 옮겨진다. 단계(131)에서, 데이터 오류들이 존재하는 것으로 ECC의 사용에 의해 판정된다면, 데이터의 오류 비트들은 가드 대역들 이내까지 전하 레벨들이 옮겨졌음을 나타낸다. 따라서, 이들 데이터를 정정 및 재기입하는 것이 연기되어야할지를 먼저 판정한 후에, 이러한 행위를 행하는 것이 바람직하고, 따라서 저장된 전하 레벨들은 가드 대역들 밖으로 도 10의 이들의 의도된 상태 분포들 이내로 옮겨질 것이다.
단계(131)에서 더 제약적인 마진들을 갖고 판독된 데이터 내에 오류들이 전혀 없는 것으로 판정된다면, 현재 유닛의 데이터에 대한 한 처리는 종료된다. 이어, 이 유닛의 데이터에 아직 시도되지 않은 더 정의된 스크럽 판독 조건들이 있는지 여부가 단계(172))에 의해 판정된다. 그러하다면, 데이터는 훨씬 더 엄밀한 구획 레벨들로 다시 판독될 수 있다. 즉, 데이터는 구획 레벨들이 이들의 각각의 가드 대역들을 따른 거리의 부분만 옮겨져 단계(172)에서 가용한 제 1 세트의 대안적 판독 조건들을 갖고 두 번째 판독되고, 이어 필요하다면, 전하 저장 레벨들의 더욱 미세한 조절을 위해 가드 대역 끝들 쪽으로 훨씬 더 이동된 단계(172)에 의해 선택된 제 2 세트의 대안적 판독 조건들의 구획 레벨들을 갖고 세 번째로 반복될 수 있다. 실제적인만큼 많은 이러한 추가의 스크럽 판독 조건들이 제공될 수 있다.
단계(135)로 돌아가서, 정정없이 어떤 레벨의 데이터 오류들을 수락하는 것으로 판정될 수 있는 경우, 이것은 지금 기술되어진 어떠한 오류들도 내포하지 않는 저장된 데이터에 대해 단계(172) 및 단계(173)의 분기에 의해 행해진 조절들의 정밀성과는 상반됨에 유의해아 할 것이다. 그러므로, 이 처리 분기가 이용된다면, 단계(135)는 아마도 정정없이는 오류 데이터의 수락을 허용하지 않을 것이다.
스크럽을 위해 현재 식별된 모든 데이터 유닛들이 사실상 스크럽되어진 것으로 단계(143)에서 판정된 후에, 교란된 자신의 데이터를 갖는 보드 드문 성향을 보인 이들 데이터 유닛들 중 어느 것이든 선택적으로 시스템으로부터 맵 아웃될 수 있다. 단계(185)는 시스템으로부터 제거되어야 할 임의의 이러한 물리적 메모리 유닛들이 있는지 판정하고, 그러하다면 이들은 단계(187)에 의해 맵 아웃된다. 이어, 스크럽 동작은 완료된다.
그러나, 데이터 정정들 및/또는 재-기입들이 연기되어졌다면, 메모리 시스템 제어기 또는 호스트 시스템은 이것을 알아 두게 해야 할 것이다. 적합한 시간에, 미정의 더 높은 우선도 메모리 동작들이 없을 때, 부분적으로 스크럽된 유닛들의 스크럽은 단계(117)로 시작하여 완료될 수 있다. 단계(171)에 의해 한 유닛에 대해 저장된 데이터, ECC 및 다른 정보는 단계(191)에 의해 판독된다. 이 유닛으로부터 데이터가 정정을 필요로 한다면, 이것은 단계(193)에서 행해진다. 단계(195)에서, 정정 데이터는 재기입된다. 완료될 필요가 있는 다른 부분적으로 완료된 스크럽 동작들이 없다면 이것은 단계(197)에서 판정되고 단계(185)이 실행되거나 처리가 종료된다. 완료될 다른 유닛들이 있다면, 처리는 단계(199)에서 다음 유닛으로 증분하고, 이어 단계들(191, 193, 195)은 이들 유닛들로부터 데이터에 대해 반복된다.
단계(123)에서 후보 메모리 셀 유닛들의 어드레스들이 연기된 스크럽에 대해 저장되는 경우에, 처리는 제어기가 이행할 더 높은 우선도 행위들을 갖고 있지 않을 때에, 연기된 유닛들 중 하나에 대해 스크럽 동작을 계속하기 위해 자동으로 복귀할 수 있다. 연기 단계(121)는 도 9의 처리에서 너무 이르기 때문에, 연기된 유닛에의 복귀는 단계(125)로 시작하는 처리의 재개를 초래하며 위에 기술된 바와 같이, 이 경로를 따라 계속한다. 이러한 유닛의 정정 및/또는 재기입이 단계(137) 또는 단계(140) 중 하나에서 다시 연기되는 것이 가능하다.
스크럽 기술들의 위에 측면들에 대한 더 상세한 것은 미국특허 8,050,095에서, 또한 관계된 미국특허 공개 번호 2006-0039196-A1에서도 발견될 수 있다.
동적 판독을 사용한 판독 스크럽
이 단락은 동적 판독을 사용하는 메모리 시스템들에서 스크럽 동작들의 사용을 고찰한다. 도 10에 관련하여 위에 기술된 바와 같이, 플래시 저장 시스템들에 저장된 데이터는 이웃한 물리적 지역들 내 데이터 셀들에 대해 수행되는 판독, 프로그램 및 소거 시퀀스들에 기인하여 변질되기 쉬울 수 있다. 이들 이유로, 그리고 시간이 지남에 따른 일반적인 전하 유실에 기인하여, 임계들의 분포는 열악해지는 경향이 있다. 이러한 경우들에 있어서, 데이터 콘텐트를 성공적으로 추출할 수 있기 위해서, 메모리 시스템은 동적 판독 프로세스의 부분으로서 마진을 둔 기준 레벨들을 사용하여 판독 지점들을 옮길 수 있다. 이것은 다양한 방법들로 행해질 수 있는데, 예를 들면, 미국특허 5,532,962는 ECC를 사용하여, 데이터가 추출될 수 있을 때까지 판독 레벨들이 옮겨지는 프로세스를 제시하며, 미국특허 7,886,204에서는 판독 지점들을 확립하기 위해 임계 분포들의 특성들이 판정된다. 미국특허 7,876,621은 동적 판독에 관한 더 상세한 것을 제시하는데 이것은 다음 논의에 적용될 수 있다. 동적 판독을 위해 사용되는 옮겨진 판독 레벨들은 동작 중에 제어기에 의해 결정되거나 이 목적을 위해 장치에 이미 로딩된 한 세트의 값들에 기초할 수 있다. 또한, 이들 레벨들은 이를테면 종종 "히로익(heroic) 복구"라고도 알려진 프로세스에서 데이터가 달리 판독될 수 없을 때만(혹은 높은 오류 레이트를 가질 때만) 사용되거나, 혹은 필요할 때 정규 판독 동작들을 위해 사용되는 것과 같은, 다수의 방법들에서 사용될 수 있다.
다음 논의를 위해서, 동적 판독의 예시적 실시예는 초기 또는 내정된 한 세트의 판독 파라미터들, 및 서로로부터 그리고 내정된 케이스(case)로부터 오프셋된 다수의 서로 다른 세트들의 동적 판독 레벨들을 가질 것이다. 이들 케이스들은 바이어스 레벨들(이를테면 워드라인 또는 비트라인 레벨들)에서 혹은 비교 점들(이를테면 전압, 전류, 또는 방전시간)에 대해서 서로로부터 다를 수 있다. 서로 다른 동적 판독 케이스들의 파라미터들은 비휘발성 메모리에 유지되는 테이블에 저장될 수 있다. 이들 파라미터들은 실험적 테스트에 기초하여 혹은 기술된 미국특허 7,876,621과 같은 방법들에 의해 사전에 로딩될 수도 있을 것이다. 메모리의 서로 다른 물리적 유닛들에 대해서, 테이블은 사용되는 현재 판독 게이스에 대해 유지될 수 있다. 구현에 따라, 이것은 블록, 플레인, 다이, 혹은 메모리에 대한 그외 다른 물리적 분할에 관하여 분해의 여러 레벨들에서 행해질 수 있는데, 이 경우 더 작은 유닛들(이를테면 블록 레벨)은 더 큰 정확성을, 그러나 더 많은 오버헤드를 대가로 하여, 제공한다. 이 (물리적 유닛, 판독 케이스) 상응은 요망될 때 업데이트될 수 있는 카피를 비휘발성 메모리에 유지하여 제어기 상에 유지될 수 있으며, 대안적으로, 시동시 시스템은 내정된 케이스들로 시작하고 시스템이 동작함에 따라 업데이트할 수 있다. 다른 실시예들에서, 모든 판정은 메모리 칩 상에서 행해질 수도 있을 것이다. 판독 요청이 들어올 때, 대응하는 판독 케이스가 판정되고, 이어 이 케이스를 위해 판독 파라미터들이 설정된다.
정규 판독 프로세스 동안에 오류의 량이 임계를 초과할 때, 메모리는 한 세트의 판독 파라미터들을 다음 세트로 옮길 것이며, 이 경우 모든 메모리에 대해 동일한 한 세트의 판독 파라미터들이 사용된다. 예를 들면, 내정된 판독 파라미터들을 사용하여 동작하는 동안 오류의 량이 임계 레벨에 도달한다면, 시스템은 제 1 동적 판독 케이스로 갈 수도 있을 것이며, 이것은 장차 모든 판독들에 대해 사용할 것이다. 일단 이 제 1 동적 판독 케이스에 대해 판독 오류의 량이 임계에 도달하면, 시스템은 제 2 동적 판독 케이스로 전환하고 장치 이것을 사용한다, 등등. 변형예에서, 시스템이 어느 동적 판독 케이스로 전환할 것인가는 오류의 량에 기초할 수도 있을 것이며, 오류의 량이 충분히 크다면 하나 이상의 중간 케이스들을 생략할 수도 있을 것이다.
앞에 단락들에서 논의된 바와 같이, 메모리 시스템은 데이터를 새로운 위치에 카피함으로써 데이터를 리프레시하고자 하기 위해 종종 판독 스크럽을 사용할 것이다. 이러한 알고리즘들은 일반적으로 데이터 저장 공간의 부분을 무작위로 혹은 체계적으로 스캐닝하는(하우스키핑) 것에, 혹은 실제 호스트 판독 위치(활성 판독)에 의존한다. 이러한 판독 동작들 동안에, 종종 시스템은 한 세트의 데이터에 대해 리프레시가 요구되는지를 판정하기 위해 ECC 정정 레벨보다 낮은 임계를 설정할 것이다. 그러므로, 이 프로세스를 위해 사용되는 판독의 무결성이 신뢰성있다는 것은 중요하다. 그러나, 시스템이 동적 판독을 사용하고 어레이 전체에 걸쳐 동일한 판독 케이스를 적용할 때, 판독 결과의 무결성은 동적 판독이 어떻게 사용사용되는가에 달려있다. 예를 들면, 하나 또는 몇개의 블록들이 확장된 기간동안 아이들(idle)인 것에 기인하여, 이들 블록들은 임계 분포들이 더 악화되고 데이터 보유(retention)가 더 커지는 문제들을 갖게 되어 한 특정한 판독 케이스를 사용하게 될 것이지만, 그러나, 방금 프로그램된(그리고, 결국 약간의 데이터 악화를 갖는) 블록에 이 동일한 한 세트의 판독 파라미터들이 적용될 때, 이들 파라미터들은 최적이 되지 않아, 이 블록에 대한 상태 분포들이 여전히 상당히 명확할지라도 비교적 높은 ECC 실패 레이트를 초래할 것이다. 이 때문에, 결과적인 판독 스크럽 카피 판단은 맞지 않을 수 있다.
동적 판독을 사용하는 시스템들에 대해 판독 스크럽이 정확한 판독 결과들에 기초하도록, 이들 단락은 몇가지 선택지들을 제시한다. 제 1 세트의 실시예들에서, 스크럽을 위한 판독을 수행할 때, 메모리 시스템은 현 한 세트의 동적 판독 값이 아니라 내정된 판독된 값들을, 이들이 서로 다르다면, 사용한다. 이것은 메모리 시스템이 동적 판독을 사용하고 초기에 판독의 결과에 기인하여 내정된 값들로부터 판독 파라미터들을 옮겼을 때의 상황이 될 것이다. 메모리 시스템이 하우스키핑을 위해 판독 스크럽 스캔을 수행할 때, 동적 판독을 비활성화하고 대신 내정된 값들을 사용할 것이다. 이것은 도 9의 단계(126)에 관련하여, 그러나 동적 판독의 맥락에서 위에 기술된 프로세스와 유사하다. 대신, 메모리 시스템이 활성 호스트 판독을 수행하고 있고 정정가능한 ECC가 어떤 임계를 초과한다면, 이 데이터(페이지 혹은 대응하는 블록)가 나중에 다시 체크될 필요가 있음을 나타내는 플래그가 설정될 것이다. 이어, 시스템은 페이지를 다시 체크하거나, 나머지 블록이 데이터 보유(retention)에 관하여 중요하지 않을 수 있기 때문에, 대응하는 블록의 전체를 체크하기로 선택할 수 있다. (예를 들면, 특정 페이지가 다시 체크될 때, 이것이 통과할 수 있을지라도, 블록 내 다른 페이지들은 그렇지 않을 수 있다). 이 다시 체크하는 것이 수행될 때, 동적 판독은 비활성화되고 내정된 판독 파라미터들이 사용될 것이다. 동적 판독을 비활성화하는 이 배열은 판독을 다시 기준선 내정된 값들에 참조함으로써 양호한 판독 결과들을 제공한다.
변형예에서, 현재 동적 판독 레벨들에서 기준선 값으로 다시 가기보다는, 중간 값(또는, 값들)이 채용될 수도 있을 것이다. 예를 들면, 시스템이 각각이 내정된 값으로부터 점진적으로 멀어지는 10개의 동적 판독 케이스들을 사용하고 판독들이 이들 값들 중 6번째를 사용하여 실행되고 있다면, 예를 들면, 내정된 케이스로 다시 가는 것이 아니라, 중간 동적 판독 케이스(이를테면 세 번째)가 사용될 수도 있을 것이다.
제 2 세트의 실시예들에 따라, 스크럽 프로세스는 메모리 블록이 리프레시됨이 없이 계속하여 사용될 것인지, 아니면 리프레시될 것인지, 아니면 폐기될 것인지를 판정하기 위해 동적 판독 프로세스의 측면들을 사용한다. 전처럼, 리프레시는 스크럽 프로세스에서 블록으로부터의 데이터가 새로운 블록에 (일반적으로) 재기입될 때, 데이터가 왔던 블록을 미래에 사용을 위해 시스템 자원에 되돌려 보냄을 의미한다. 폐기된다면, 대신에 소스 블록은 결함이 있는 것으로서 취급되고 미래에 사용을 위해 풀(pool)로 되돌려 보내지 않는다. 이들 실시예들에서, 블록이 리프레시될 것인지 아니면 폐기될 것인지의 판정은 어떤 동적 판독 케이스 번호가 사용되고 있는지에 기초한다. 이 제 2 세트의 실시예들은 블록의 페이지의 데이터 콘텐트를 추출하기 위해 사용되는 특정한 동적 판독 케이스에 의해 착수되는 실패 유형(리프레시, 폐기, 또는 단지 그대로 두는 것; 우선순위화)을 표적으로 삼음으로써 시스템이 블록에 대한 스크럽에 대해 신속히 판단할 수 있게 한다.
위에 언급된 바와 같이, 서로 다른 동적 판독 케이스들을 위한 판독 파라미터들은 테이블 내에 저장될 수 있다. 시스템이 특정한 동적 판독 케이스 번호로 옮길 때, 판독된 값들이 테이블에서 검색될 수 있다. 이 한 세트의 실시예들의 측면들에 따라서, 동적 판독 테이블은 시스템의 실패의 유형과, 이것이 어떻게 취급될 것인지, 즉 블록을 그대로 계속하여 사용할 것인지, 블록을 리프세스할 것인지, 아니면 블록을 폐기할 것인지에 대응한다. 이 접근법은 ECC 임계와의 비교에 의존하지 않는데, 즉 ECC는 몇몇 임계 값 또는 값들과 비교될 오류의 량을 계산하기 위해 사용되지 않음에 유의한다. 대신에, 내정된 판독 값들 또는 근처의 동적 판독 케이스들이 사용될 때, 블록은 리프레시되지 않을 것이며 계속하여 그래도 사용될 것이지만, 그러나, 동적 판독 케이스 번호에 대한 값들에 이동이 내정된 것으로부터 점진적으로 더 멀어질 때, 블록들을 어느 케이스 번호가 사용되는가에 기초하여 리프레시되고 폐기될 것이다.
이 접근법을 더 확장하면, 시스템은 동적 판독 케이스에 기초하여 블록들의 취급 또는 리프레시 및 폐기를 우선순위화할 수 있다. 예를 들면, 몇몇 동적 판독 케이스 번호들이 리프레시에 대응할지라도, 이들 번호들은, 이 판독된 케이스 번호에 기초하여, 어느 블록들이 가장 리프레시를 필요로 하는지를 판정하기 위해 사용될 수도 있을 것이다. 메모리 시스템들에서, 예를 들면 8과 같은 어떤 최대 길이를 갖게 판독 스크럽 큐(queue)가 정의될 수 있다. 시스템은 동적 판독 케이스 번호를 사용하여 큐에 대해 블록들을 추가하고 우선순위화하여, 더 긴급한 케이스들을 라인 앞쪽에 두고, 낮은 우선도 블록들은 밑으로 이동시킬 수 있다(혹은 심지어는 최대 길이를 초과하게 된다면 큐로부터 제거할 수도 있다). 또한, 필요하다면 블록들의 폐기를 우선순위화할 수 있는데, 예를 들면, 장치의 경년에 따라 예비 블록들의 수가 모자라기 시작하면, 이들이 미미함을 나타내는 판독 케이스를 가진 블록들은 즉시 폐기되지 않고 사용을 위해 보존될 수 있다.
다른 변형들에서, 스크럽을 더 정밀하게 수행할지 여부에 대해 판단하는 것이 요망된다면, 시스템은 블록을 어떻게 취급할지 아니면 우선도를 할당할지에 대해 판정하기 전에 어느 것이 최적의 케이스 번호(예를 들면, 가장 낮은 정정가능한 ECC 임계의 측면에서)인지를 찾기 위해 복수의 혹은 심지어 모든 동적 판독 케이스들을 적용할 수 있다. 최적의 동적 판독 케이스에 대해 탐색할 때 오버헤드 시간을 최소화하기 위해, 제어기는 더 지능형으로 착수할 수 있다. 시스템은 단순한 순차적 케이스 순서가 아니라, 체크할 다음 케이스를 판정하기 위해 가장 최근에 사용된 케이스들을 살펴볼 수 있다. 예를 들면, 현재 동적 판독 케이스 번호가 4이라면, 순차적으로 케이스 5로 그리고 케이스 6으로, 등등으로 진행하기보다는, 시스템은 현재 케이스(여기에서는 4)를 시도하고, 이어 마지막 사용된 케이스(예를 들면 0)으로, 이어 이에 앞서 사용된 케이스(예를 들면 케이스 7)로, 등등으로 갈 수 있다. 연루되는 오버헤드 시간은 시도되었던 케이스들의 수에 대해 판단함으로써 더욱 개선될 수 있다(예를 들면, 시도된 케이스들의 수를 예를 들면 최대 3으로 제한함으로써) 이어 스크럽 판정을 하기 위해 블록이 다른 것들과 어떻게 "다른지"를 판정하기 위해 사용된 케이스들을 사용한다.
도 11은 이 프로세스의 측면들을 예시하는데 도움을 주기 위한 흐름도이다. 201에 언급된 바와 같이 판독 지령이 수신된다. 판독될 하나 이상의 페이지들에 대해, 이의 대응하는 물리적 위치에 기초하여, 연관된 현재 동적 판독 케이스가 203에서 판독된다. 205에서, 메모리는 이 케이스에 대한 판독 파라미터들을 설정하고 판독 동작을 수행한다. 207에서, 판독이 성공적인 것으로 간주되면, 판독 프로세스가 완료된다(209). (구현에 따라, 데이터 콘텐트가 추출되는 점에서 판독이 성공적일지라도, 오류의 레벨이 너무 높아, 판독 케이스는 변경될 수 있는데, 이것은 215에서 스크럽 또는 폐기에 대응할 수도 있을 것이다). 대신에 판독이 실패이면, 211에서 판독 케이스는 옮겨지고 새로운 판독이 대응하는 판독 파라미터들을 갖고 수행된다. 213에서, 옮겨진 판독 케이스를 사용한 판독이 다시 실패이면, 프로세스는 211로 다시 루프하고 판독 케이스는 다시 옮겨지고 판독이 다시 수행된다(제한이 재시도 횟수에 설정되지 않고 이것에 도달되지 않는다면, 혹은 파라미터들이 옮겨질 수 있는 정도가 고갈된다면). 대신에, 판독이 213에서 판독 케이스에 기초하여 성공적이면, 215에서 메모리는 위에 기술된 바와 같이 리프레시할지, 폐기할지, 아니면 계속하여 그대로 블록을 사용할지 여부에 대해 판단한다. 리프레시, 폐기, 혹은 둘 다에 대해 표시된 블록들은 판독 케이스에 기초하여 우선순위화할 수 있다.
결어
본 발명의 여러 측면들이 이의 예시적 실시예들에 관련하여 기술되었을지라도, 본 발명은 첨부된 청구항들의 전체 범위 내에서 보호되게 한 것임이 이해될 것이다.

Claims (21)

  1. 비휘발성 메모리 시스템을 동작시키는 방법으로서 - 상기 메모리 시스템은 제어기 회로 및, 하나 이상의 블록들의 복수의 물리적 유닛들을 갖는 하나 이상의 비휘발성 메모리 회로를 포함함 -,
    상기 메모리 회로의 메모리 셀들의 판독 동작에 이용하기 위한 한 세트의 판독 파라미터들을 유지하는 단계 - 상기 한 세트의 판독 파라미터들은 내정된 판독 케이스(case)에 대한 판독 파라미터들 및 복수의 서로 구별되는 옮겨진 판독 케이스들에 대한 판독 파라미터들을 포함함 -;
    상기 물리적 유닛들의 각각에 대해서, 상기 물리적 유닛을 판독할 때 사용하기 위해 상기 물리적 유닛과 상기 판독 케이스들 중 어느 것 간에 대응을 유지하는 단계;
    페이지가 속하는 상기 물리적 유닛에 대해 상기 대응하는 판독 케이스를 사용하여 한 페이지의 데이터에 대한 판독 동작을 수행하는 단계;
    상기 판독 동작이 성공적이었는지 또는 실패 결과를 가져왔는지를 판정하는 단계;
    판독 동작이 실패 결과를 가져온 것에 응답하여, 상기 페이지가 판독될 수 있는 옮겨진 판독 케이스를 선택하는 단계; 및
    상기 옮겨진 선택된 판독 케이스에 기초하여, 상기 페이지가 속하는 상기 블록을 리프레시 할지 여부를 판정하는 단계
    를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  2. 제 1 항에 있어서, 상기 물리적 유닛은 블록인, 비휘발성 메모리 시스템 동작 방법.
  3. 제 1 항에 있어서, 상기 물리적 유닛은 다이인, 비휘발성 메모리 시스템 동작 방법.
  4. 제 1 항에 있어서, 상기 물리적 유닛은 플레인(plane)인, 비휘발성 메모리 시스템 동작 방법.
  5. 제 1 항에 있어서, 상기 판독 케이스들은 상기 판독 동작을 위해 선택된 메모리 셀들에 대해 사용되는 바이어스 레벨들이 서로 다른, 비휘발성 메모리 시스템 동작 방법.
  6. 제 1 항에 있어서, 상기 판독 케이스들은 상기 판독 동작을 위해 사용되는 비교 레벨들이 서로 다른, 비휘발성 메모리 시스템 동작 방법.
  7. 제 1 항에 있어서, 상기 판독 동작이 성공적이었는지 또는 실패 결과를 가져왔는지를 판정하는 단계는 상기 페이지의 데이터 콘텐트가 성공적으로 추출되었는지를 판정하는 것을 포함하는, 비휘발성 메모리 시스템 동작 방법.
  8. 제 1 항에 있어서, 상기 판독 동작이 실패 결과를 가져왔는지를 판정하는 단계는 상기 판독이 한도를 초과한 오류의 량을 초래하였는지를 판정하는 것을 포함하는, 비휘발성 메모리 시스템 동작 방법.
  9. 제 1 항에 있어서, 복수의 상기 판독 케이스들은 리프레시하는 것(refreshing)에 대응하며, 상기 방법은
    상기 페이지가 속하는 상기 블록을 리프레시하기로 판정한 것에 응답하여, 선택된 상기 옮겨진 판독 케이스에 기초하여, 리프레시하기로 예정된 다른 블록들에 비해 상기 페이지가 속하는 상기 블록의 상기 리프레시를 우선순위화하는 단계를 더 포함하는, 비휘발성 메모리 시스템 동작 방법.
  10. 제 1 항에 있어서, 선택된 상기 옮겨진 판독 케이스에 기초하여, 상기 페이지가 속하는 상기 블록을 폐기할지 여부를 판정하는 단계를 더 포함하는, 비휘발성 메모리 시스템 동작 방법.
  11. 제 10 항에 있어서, 복수의 상기 판독 케이스들은 폐기에 대응하며, 상기 방법은
    상기 페이지가 속하는 상기 블록을 폐기하기로 판정한 것에 응답하여, 선택된 상기 옮겨진 판독 케이스에 기초하여, 폐기하기로 예정된 다른 블록들에 비해 상기 페이지가 속하는 상기 블록의 상기 폐기를 우선순위화하는 단계를 더 포함하는, 비휘발성 메모리 시스템 동작 방법.
  12. 제 1 항에 있어서, 상기 페이지가 판독될 수 있는 옮겨진 판독 케이스를 선택하는 단계는
    상기 대응하는 판독 케이스를 다른 판독 케이스로 옮기는 단계; 및
    상기 옮겨진 판독 케이스를 사용한 상기 판독 동작이 성공적이었는지 또는 실패 결과를 가져왔는지를 판정하는 단계의 하나 이상의 반복들을 포함하는, 비휘발성 메모리 시스템 동작 방법.
  13. 제 12 항에 있어서, 상기 대응하는 판독 케이스는 상기 대응하는 판독 케이스에 인접한 한 세트의 판독 파라미터들을 갖는 판독 케이스로 옮겨지는, 비휘발성 메모리 시스템 동작 방법.
  14. 제 1 항에 있어서, 상기 페이지가 판독될 수 있는 옮겨진 판독 케이스를 선택하는 단계는 복수의 옮겨진 판독 케이스들 중에서 가장 낮은 오류량을 가진 옮겨진 판독 케이스를 판정하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  15. 제 1 항에 있어서, 리프레시될 블록들의 큐(queue)를 유지하는 단계; 및
    상기 페이지가 속하는 상기 블록을 리프레시하기로 판정한 것에 응답하여, 상기 페이지가 속하는 상기 블록을 상기 큐에 추가하는 단계를 더 포함하는, 비휘발성 메모리 시스템 동작 방법.
  16. 제 15 항에 있어서, 블록들이 속하는 상기 대응하는 판독 케이스에 기초하여 상기 큐를 우선순위화하는 단계를 더 포함하는, 비휘발성 메모리 시스템 동작 방법.
  17. 제 16 항에 있어서, 상기 큐는 최대 길이를 가지며, 상기 방법은 상기 페이지가 속하는 상기 블록을 상기 큐에 추가한 것에 응답하여, 상기 큐의 길이를 최대값을 초과하게 하여, 상기 큐로부터 가장 낮은 우선도를 갖는 블록을 축출하는 단계를 더 포함하는, 비휘발성 메모리 시스템 동작 방법.
  18. 제 1 항에 있어서, 상기 메모리 시스템은 제어기 회로 및 비휘발성 메모리 회로를 포함하며, 상기 제어기는 상기 제어기 상에 휘발성 메모리에 상기 물리적 유닛을 판독할 때 사용하기 위해 상기 물리적 유닛과 상기 판독 케이스 간에 상기 대응의 카피를 유지하는, 비휘발성 메모리 시스템 동작 방법.
  19. 제 18 항에 있어서, 상기 제어기는 비휘발성 휘발성 메모리에 상기 물리적 유닛을 판독할 때 사용하기 위해 상기 물리적 유닛과 상기 판독 케이스 간에 상기 대응의 카피를 더 유지하는, 비휘발성 메모리 시스템 동작 방법.
  20. 제 1 항에 있어서, 상기 옮겨진 판독 케이스를 선택하는 단계는, 상기 대응하는 판독 케이스에 바로 전에 사용된 판독 케이스를 선택하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  21. 제 20 항에 있어서, 상기 옮겨진 판독 케이스를 선택하는 단계는, 상기 대응하는 판독 케이스에 바로 전에 사용된 판독 케이스를 사용한 상기 판독 동작이 성공적이었는지 아니면 실패 결과를 가져왔는지를 판정하는 단계; 및
    실패 결과를 가져온 것에 응답하여, 후속적으로 상기 대응하는 판독 케이스에 바로 전에 사용된 판독 케이스를 사용한 상기 판독 동작의 결과를 상기 대응하는 판독 케이스의 결과와 비교한 것에 기초하여 더 옮겨진 판독 케이스를 결정하는 단계를 더 포함하는, 비휘발성 메모리 시스템 동작 방법.
KR1020147012998A 2011-11-21 2012-10-24 동적 판독에 사용하기 위한 스크럽 기술 KR101849440B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161562080P 2011-11-21 2011-11-21
US61/562,080 2011-11-21
US13/435,476 US8687421B2 (en) 2011-11-21 2012-03-30 Scrub techniques for use with dynamic read
US13/435,476 2012-03-30
PCT/US2012/061617 WO2013077962A1 (en) 2011-11-21 2012-10-24 Scrub techniques for use with dynamic read

Publications (2)

Publication Number Publication Date
KR20140096059A KR20140096059A (ko) 2014-08-04
KR101849440B1 true KR101849440B1 (ko) 2018-04-16

Family

ID=48426809

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147012998A KR101849440B1 (ko) 2011-11-21 2012-10-24 동적 판독에 사용하기 위한 스크럽 기술

Country Status (5)

Country Link
US (1) US8687421B2 (ko)
KR (1) KR101849440B1 (ko)
CN (1) CN103946805A (ko)
TW (1) TWI570560B (ko)
WO (1) WO2013077962A1 (ko)

Families Citing this family (241)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US11018133B2 (en) 2009-10-12 2021-05-25 Monolithic 3D Inc. 3D integrated circuit
US11374118B2 (en) 2009-10-12 2022-06-28 Monolithic 3D Inc. Method to form a 3D integrated circuit
US10910364B2 (en) 2009-10-12 2021-02-02 Monolitaic 3D Inc. 3D semiconductor device
US10366970B2 (en) 2009-10-12 2019-07-30 Monolithic 3D Inc. 3D semiconductor device and structure
US10043781B2 (en) 2009-10-12 2018-08-07 Monolithic 3D Inc. 3D semiconductor device and structure
US10354995B2 (en) 2009-10-12 2019-07-16 Monolithic 3D Inc. Semiconductor memory device and structure
US10388863B2 (en) 2009-10-12 2019-08-20 Monolithic 3D Inc. 3D memory device and structure
US10157909B2 (en) 2009-10-12 2018-12-18 Monolithic 3D Inc. 3D semiconductor device and structure
US10217667B2 (en) 2011-06-28 2019-02-26 Monolithic 3D Inc. 3D semiconductor device, fabrication method and system
US11482440B2 (en) 2010-12-16 2022-10-25 Monolithic 3D Inc. 3D semiconductor device and structure with a built-in test circuit for repairing faulty circuits
US10497713B2 (en) 2010-11-18 2019-12-03 Monolithic 3D Inc. 3D semiconductor memory device and structure
US11227897B2 (en) 2010-10-11 2022-01-18 Monolithic 3D Inc. Method for producing a 3D semiconductor memory device and structure
US11600667B1 (en) 2010-10-11 2023-03-07 Monolithic 3D Inc. Method to produce 3D semiconductor devices and structures with memory
US11257867B1 (en) 2010-10-11 2022-02-22 Monolithic 3D Inc. 3D semiconductor device and structure with oxide bonds
US11018191B1 (en) 2010-10-11 2021-05-25 Monolithic 3D Inc. 3D semiconductor device and structure
US11158674B2 (en) 2010-10-11 2021-10-26 Monolithic 3D Inc. Method to produce a 3D semiconductor device and structure
US10896931B1 (en) 2010-10-11 2021-01-19 Monolithic 3D Inc. 3D semiconductor device and structure
US10290682B2 (en) 2010-10-11 2019-05-14 Monolithic 3D Inc. 3D IC semiconductor device and structure with stacked memory
US11024673B1 (en) 2010-10-11 2021-06-01 Monolithic 3D Inc. 3D semiconductor device and structure
US11315980B1 (en) 2010-10-11 2022-04-26 Monolithic 3D Inc. 3D semiconductor device and structure with transistors
US11469271B2 (en) 2010-10-11 2022-10-11 Monolithic 3D Inc. Method to produce 3D semiconductor devices and structures with memory
US11133344B2 (en) 2010-10-13 2021-09-28 Monolithic 3D Inc. Multilevel semiconductor device and structure with image sensors
US10833108B2 (en) 2010-10-13 2020-11-10 Monolithic 3D Inc. 3D microdisplay device and structure
US11404466B2 (en) 2010-10-13 2022-08-02 Monolithic 3D Inc. Multilevel semiconductor device and structure with image sensors
US11855114B2 (en) 2010-10-13 2023-12-26 Monolithic 3D Inc. Multilevel semiconductor device and structure with image sensors and wafer bonding
US10978501B1 (en) 2010-10-13 2021-04-13 Monolithic 3D Inc. Multilevel semiconductor device and structure with waveguides
US11869915B2 (en) 2010-10-13 2024-01-09 Monolithic 3D Inc. Multilevel semiconductor device and structure with image sensors and wafer bonding
US10998374B1 (en) 2010-10-13 2021-05-04 Monolithic 3D Inc. Multilevel semiconductor device and structure
US11164898B2 (en) 2010-10-13 2021-11-02 Monolithic 3D Inc. Multilevel semiconductor device and structure
US11063071B1 (en) 2010-10-13 2021-07-13 Monolithic 3D Inc. Multilevel semiconductor device and structure with waveguides
US11163112B2 (en) 2010-10-13 2021-11-02 Monolithic 3D Inc. Multilevel semiconductor device and structure with electromagnetic modulators
US11855100B2 (en) 2010-10-13 2023-12-26 Monolithic 3D Inc. Multilevel semiconductor device and structure with oxide bonding
US11437368B2 (en) 2010-10-13 2022-09-06 Monolithic 3D Inc. Multilevel semiconductor device and structure with oxide bonding
US10679977B2 (en) 2010-10-13 2020-06-09 Monolithic 3D Inc. 3D microdisplay device and structure
US11605663B2 (en) 2010-10-13 2023-03-14 Monolithic 3D Inc. Multilevel semiconductor device and structure with image sensors and wafer bonding
US11327227B2 (en) 2010-10-13 2022-05-10 Monolithic 3D Inc. Multilevel semiconductor device and structure with electromagnetic modulators
US10943934B2 (en) 2010-10-13 2021-03-09 Monolithic 3D Inc. Multilevel semiconductor device and structure
US11043523B1 (en) 2010-10-13 2021-06-22 Monolithic 3D Inc. Multilevel semiconductor device and structure with image sensors
US11694922B2 (en) 2010-10-13 2023-07-04 Monolithic 3D Inc. Multilevel semiconductor device and structure with oxide bonding
US11929372B2 (en) 2010-10-13 2024-03-12 Monolithic 3D Inc. Multilevel semiconductor device and structure with image sensors and wafer bonding
US11735462B2 (en) 2010-11-18 2023-08-22 Monolithic 3D Inc. 3D semiconductor device and structure with single-crystal layers
US11482438B2 (en) 2010-11-18 2022-10-25 Monolithic 3D Inc. Methods for producing a 3D semiconductor memory device and structure
US11804396B2 (en) 2010-11-18 2023-10-31 Monolithic 3D Inc. Methods for producing a 3D semiconductor device and structure with memory cells and multiple metal layers
US11901210B2 (en) 2010-11-18 2024-02-13 Monolithic 3D Inc. 3D semiconductor device and structure with memory
US11854857B1 (en) 2010-11-18 2023-12-26 Monolithic 3D Inc. Methods for producing a 3D semiconductor device and structure with memory cells and multiple metal layers
US11355381B2 (en) 2010-11-18 2022-06-07 Monolithic 3D Inc. 3D semiconductor memory device and structure
US11862503B2 (en) 2010-11-18 2024-01-02 Monolithic 3D Inc. Method for producing a 3D semiconductor device and structure with memory cells and multiple metal layers
US11443971B2 (en) 2010-11-18 2022-09-13 Monolithic 3D Inc. 3D semiconductor device and structure with memory
US11521888B2 (en) 2010-11-18 2022-12-06 Monolithic 3D Inc. 3D semiconductor device and structure with high-k metal gate transistors
US11923230B1 (en) 2010-11-18 2024-03-05 Monolithic 3D Inc. 3D semiconductor device and structure with bonding
US11610802B2 (en) 2010-11-18 2023-03-21 Monolithic 3D Inc. Method for producing a 3D semiconductor device and structure with single crystal transistors and metal gate electrodes
US11211279B2 (en) 2010-11-18 2021-12-28 Monolithic 3D Inc. Method for processing a 3D integrated circuit and structure
US11107721B2 (en) 2010-11-18 2021-08-31 Monolithic 3D Inc. 3D semiconductor device and structure with NAND logic
US11121021B2 (en) 2010-11-18 2021-09-14 Monolithic 3D Inc. 3D semiconductor device and structure
US11495484B2 (en) 2010-11-18 2022-11-08 Monolithic 3D Inc. 3D semiconductor devices and structures with at least two single-crystal layers
US11482439B2 (en) 2010-11-18 2022-10-25 Monolithic 3D Inc. Methods for producing a 3D semiconductor memory device comprising charge trap junction-less transistors
US11018042B1 (en) 2010-11-18 2021-05-25 Monolithic 3D Inc. 3D semiconductor memory device and structure
US11615977B2 (en) 2010-11-18 2023-03-28 Monolithic 3D Inc. 3D semiconductor memory device and structure
US11164770B1 (en) 2010-11-18 2021-11-02 Monolithic 3D Inc. Method for producing a 3D semiconductor memory device and structure
US11784082B2 (en) 2010-11-18 2023-10-10 Monolithic 3D Inc. 3D semiconductor device and structure with bonding
US11508605B2 (en) 2010-11-18 2022-11-22 Monolithic 3D Inc. 3D semiconductor memory device and structure
US11094576B1 (en) 2010-11-18 2021-08-17 Monolithic 3D Inc. Methods for producing a 3D semiconductor memory device and structure
US11031275B2 (en) 2010-11-18 2021-06-08 Monolithic 3D Inc. 3D semiconductor device and structure with memory
US11355380B2 (en) 2010-11-18 2022-06-07 Monolithic 3D Inc. Methods for producing 3D semiconductor memory device and structure utilizing alignment marks
US11004719B1 (en) 2010-11-18 2021-05-11 Monolithic 3D Inc. Methods for producing a 3D semiconductor memory device and structure
US11569117B2 (en) 2010-11-18 2023-01-31 Monolithic 3D Inc. 3D semiconductor device and structure with single-crystal layers
JP5377526B2 (ja) 2011-01-13 2013-12-25 株式会社東芝 不揮発性半導体記憶装置
US9007836B2 (en) * 2011-01-13 2015-04-14 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR101756111B1 (ko) * 2011-04-15 2017-07-10 삼성전자 주식회사 메모리 컨트롤러 구동방법, 메모리 컨트롤러, 메모리 장치 및 메모리 시스템
US10388568B2 (en) 2011-06-28 2019-08-20 Monolithic 3D Inc. 3D semiconductor device and system
US9058289B2 (en) 2011-11-07 2015-06-16 Sandisk Enterprise Ip Llc Soft information generation for memory systems
US11735501B1 (en) 2012-04-09 2023-08-22 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers and a connective path
US11694944B1 (en) 2012-04-09 2023-07-04 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers and a connective path
US11881443B2 (en) 2012-04-09 2024-01-23 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers and a connective path
US11164811B2 (en) 2012-04-09 2021-11-02 Monolithic 3D Inc. 3D semiconductor device with isolation layers and oxide-to-oxide bonding
US11476181B1 (en) 2012-04-09 2022-10-18 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers
US11594473B2 (en) 2012-04-09 2023-02-28 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers and a connective path
US11616004B1 (en) 2012-04-09 2023-03-28 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers and a connective path
US10600888B2 (en) 2012-04-09 2020-03-24 Monolithic 3D Inc. 3D semiconductor device
US11088050B2 (en) 2012-04-09 2021-08-10 Monolithic 3D Inc. 3D semiconductor device with isolation layers
US11410912B2 (en) 2012-04-09 2022-08-09 Monolithic 3D Inc. 3D semiconductor device with vias and isolation layers
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US8966343B2 (en) * 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
WO2014074496A2 (en) 2012-11-09 2014-05-15 Sandisk Technologies Inc. Cam nand with or function and full chip search capability
US9171620B2 (en) 2012-11-29 2015-10-27 Sandisk Technologies Inc. Weighted read scrub for nonvolatile memory
US11018116B2 (en) 2012-12-22 2021-05-25 Monolithic 3D Inc. Method to form a 3D semiconductor device and structure
US11784169B2 (en) 2012-12-22 2023-10-10 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers
US11916045B2 (en) 2012-12-22 2024-02-27 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers
US11967583B2 (en) 2012-12-22 2024-04-23 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers
US11961827B1 (en) 2012-12-22 2024-04-16 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers
US11063024B1 (en) 2012-12-22 2021-07-13 Monlithic 3D Inc. Method to form a 3D semiconductor device and structure
US11217565B2 (en) 2012-12-22 2022-01-04 Monolithic 3D Inc. Method to form a 3D semiconductor device and structure
US11309292B2 (en) 2012-12-22 2022-04-19 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US10600657B2 (en) 2012-12-29 2020-03-24 Monolithic 3D Inc 3D semiconductor device and structure
US10892169B2 (en) 2012-12-29 2021-01-12 Monolithic 3D Inc. 3D semiconductor device and structure
US10903089B1 (en) 2012-12-29 2021-01-26 Monolithic 3D Inc. 3D semiconductor device and structure
US11087995B1 (en) 2012-12-29 2021-08-10 Monolithic 3D Inc. 3D semiconductor device and structure
US11430668B2 (en) 2012-12-29 2022-08-30 Monolithic 3D Inc. 3D semiconductor device and structure with bonding
US11430667B2 (en) 2012-12-29 2022-08-30 Monolithic 3D Inc. 3D semiconductor device and structure with bonding
US10651054B2 (en) 2012-12-29 2020-05-12 Monolithic 3D Inc. 3D semiconductor device and structure
US10115663B2 (en) 2012-12-29 2018-10-30 Monolithic 3D Inc. 3D semiconductor device and structure
US11177140B2 (en) 2012-12-29 2021-11-16 Monolithic 3D Inc. 3D semiconductor device and structure
US11004694B1 (en) 2012-12-29 2021-05-11 Monolithic 3D Inc. 3D semiconductor device and structure
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US10325651B2 (en) * 2013-03-11 2019-06-18 Monolithic 3D Inc. 3D semiconductor device with stacked memory
US8902663B1 (en) 2013-03-11 2014-12-02 Monolithic 3D Inc. Method of maintaining a memory state
US11869965B2 (en) 2013-03-11 2024-01-09 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers and memory cells
US11935949B1 (en) 2013-03-11 2024-03-19 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers and memory cells
US10840239B2 (en) 2014-08-26 2020-11-17 Monolithic 3D Inc. 3D semiconductor device and structure
US11088130B2 (en) 2014-01-28 2021-08-10 Monolithic 3D Inc. 3D semiconductor device and structure
US11398569B2 (en) 2013-03-12 2022-07-26 Monolithic 3D Inc. 3D semiconductor device and structure
US11923374B2 (en) 2013-03-12 2024-03-05 Monolithic 3D Inc. 3D semiconductor device and structure with metal layers
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US10224279B2 (en) 2013-03-15 2019-03-05 Monolithic 3D Inc. Semiconductor device and structure
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US11574109B1 (en) 2013-04-15 2023-02-07 Monolithic 3D Inc Automation methods for 3D integrated circuits and devices
US11270055B1 (en) 2013-04-15 2022-03-08 Monolithic 3D Inc. Automation for monolithic 3D devices
US11030371B2 (en) 2013-04-15 2021-06-08 Monolithic 3D Inc. Automation for monolithic 3D devices
US11341309B1 (en) 2013-04-15 2022-05-24 Monolithic 3D Inc. Automation for monolithic 3D devices
US11720736B2 (en) 2013-04-15 2023-08-08 Monolithic 3D Inc. Automation methods for 3D integrated circuits and devices
US11487928B2 (en) 2013-04-15 2022-11-01 Monolithic 3D Inc. Automation for monolithic 3D devices
US9021414B1 (en) 2013-04-15 2015-04-28 Monolithic 3D Inc. Automation for monolithic 3D devices
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9727413B2 (en) * 2013-06-28 2017-08-08 International Business Machines Corporation Flash memory scrub management
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9298534B2 (en) * 2013-09-05 2016-03-29 Kabushiki Kaisha Toshiba Memory system and constructing method of logical block
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) * 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
GB201322075D0 (en) 2013-12-13 2014-01-29 Ibm Device for selecting a level for at least one read voltage
US11107808B1 (en) 2014-01-28 2021-08-31 Monolithic 3D Inc. 3D semiconductor device and structure
US10297586B2 (en) 2015-03-09 2019-05-21 Monolithic 3D Inc. Methods for processing a 3D semiconductor device
US11031394B1 (en) 2014-01-28 2021-06-08 Monolithic 3D Inc. 3D semiconductor device and structure
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9230689B2 (en) 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
CN106463179B (zh) * 2014-04-16 2019-11-19 英特尔公司 利用存储器控制器处理数据错误事件的方法、装置和系统
US9501222B2 (en) * 2014-05-09 2016-11-22 Micron Technology, Inc. Protection zones in virtualized physical addresses for reconfigurable memory systems using a memory abstraction
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
KR102190241B1 (ko) 2014-07-31 2020-12-14 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
DE102014115885B4 (de) * 2014-10-31 2018-03-08 Infineon Technologies Ag Funktionstüchtigkeitszustand von nicht-flüchtigem Speicher
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10339048B2 (en) 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US9933950B2 (en) * 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US9928138B2 (en) 2015-02-17 2018-03-27 Toshiba Memory Corporation Memory system
WO2016144724A1 (en) 2015-03-10 2016-09-15 Micron Technology, Inc. Apparatuses and methods for shift decisions
US11056468B1 (en) 2015-04-19 2021-07-06 Monolithic 3D Inc. 3D semiconductor device and structure
US10825779B2 (en) 2015-04-19 2020-11-03 Monolithic 3D Inc. 3D semiconductor device and structure
US11011507B1 (en) 2015-04-19 2021-05-18 Monolithic 3D Inc. 3D semiconductor device and structure
US10381328B2 (en) 2015-04-19 2019-08-13 Monolithic 3D Inc. Semiconductor device and structure
KR20160146332A (ko) * 2015-06-12 2016-12-21 에스케이하이닉스 주식회사 복수의 저장 영역들을 포함하는 메모리 시스템 및 그것의 동작 방법
TWI563509B (en) * 2015-07-07 2016-12-21 Phison Electronics Corp Wear leveling method, memory storage device and memory control circuit unit
US9864653B2 (en) 2015-07-30 2018-01-09 International Business Machines Corporation Memory scrubbing in a mirrored memory system to reduce system power consumption
US9766814B2 (en) * 2015-08-10 2017-09-19 Intel Corporation Method and apparatus for defect management in a non-volatile memory device
US11956952B2 (en) 2015-08-23 2024-04-09 Monolithic 3D Inc. Semiconductor memory device and structure
WO2017053329A1 (en) 2015-09-21 2017-03-30 Monolithic 3D Inc 3d semiconductor device and structure
US10522225B1 (en) 2015-10-02 2019-12-31 Monolithic 3D Inc. Semiconductor device with non-volatile memory
US10418369B2 (en) 2015-10-24 2019-09-17 Monolithic 3D Inc. Multi-level semiconductor memory device and structure
US10847540B2 (en) 2015-10-24 2020-11-24 Monolithic 3D Inc. 3D semiconductor memory device and structure
US11296115B1 (en) 2015-10-24 2022-04-05 Monolithic 3D Inc. 3D semiconductor device and structure
US11114464B2 (en) 2015-10-24 2021-09-07 Monolithic 3D Inc. 3D semiconductor device and structure
US11114427B2 (en) 2015-11-07 2021-09-07 Monolithic 3D Inc. 3D semiconductor processor and memory device and structure
US11937422B2 (en) 2015-11-07 2024-03-19 Monolithic 3D Inc. Semiconductor memory device and structure
FR3044818B1 (fr) 2015-12-02 2018-03-30 Stmicroelectronics (Rousset) Sas Procede de gestion d'une ligne defectueuse du plan memoire d'une memoire non volatile et dispositif de memoire correspondant
US10564900B2 (en) 2016-03-04 2020-02-18 Western Digital Technologies, Inc. Temperature variation compensation
US9996281B2 (en) 2016-03-04 2018-06-12 Western Digital Technologies, Inc. Temperature variation compensation
US10446242B2 (en) 2016-05-27 2019-10-15 Western Digital Technologies, Inc. Temperature variation compensation
US9715937B1 (en) 2016-06-15 2017-07-25 Sandisk Technologies Llc Dynamic tuning of first read countermeasures
US9711231B1 (en) 2016-06-24 2017-07-18 Sandisk Technologies Llc System solution for first read issue using time dependent read voltages
US10241860B2 (en) * 2016-08-15 2019-03-26 Samsung Electronics Co., Ltd. Method of executing data scrubbing inside a smart storage device
KR102559530B1 (ko) * 2016-09-19 2023-07-27 에스케이하이닉스 주식회사 저항성 메모리 장치, 이를 위한 디스터번스 방지 회로 및 방법
US11869591B2 (en) 2016-10-10 2024-01-09 Monolithic 3D Inc. 3D memory devices and structures with control circuits
US11251149B2 (en) 2016-10-10 2022-02-15 Monolithic 3D Inc. 3D memory device and structure
US11812620B2 (en) 2016-10-10 2023-11-07 Monolithic 3D Inc. 3D DRAM memory devices and structures with control circuits
US11930648B1 (en) 2016-10-10 2024-03-12 Monolithic 3D Inc. 3D memory devices and structures with metal layers
US11329059B1 (en) 2016-10-10 2022-05-10 Monolithic 3D Inc. 3D memory devices and structures with thinned single crystal substrates
US11711928B2 (en) 2016-10-10 2023-07-25 Monolithic 3D Inc. 3D memory devices and structures with control circuits
US10558381B2 (en) * 2016-12-16 2020-02-11 Sandisk Technologies Llc Dynamic read table generation
US10025661B1 (en) 2016-12-27 2018-07-17 Sandisk Technologies Llc Adaptive hard and soft bit decoding
US10304559B2 (en) 2016-12-30 2019-05-28 Western Digital Technologies, Inc. Memory write verification using temperature compensation
US10553301B2 (en) 2017-06-03 2020-02-04 Sandisk Technologies Llc Dynamic read table block filter
TWI621018B (zh) * 2017-07-24 2018-04-11 大陸商深圳大心電子科技有限公司 資料備份方法、資料恢復方法以及儲存控制器
CN109324921A (zh) * 2017-07-31 2019-02-12 大心电子(英属维京群岛)股份有限公司 数据备份方法、数据恢复方法以及存储控制器
US10387281B2 (en) 2017-08-30 2019-08-20 Micron Technology, Inc. Flash memory block retirement policy
US10522229B2 (en) 2017-08-30 2019-12-31 Micron Technology, Inc. Secure erase for data corruption
US10347315B2 (en) 2017-10-31 2019-07-09 Sandisk Technologies Llc Group read refresh
US10734084B2 (en) * 2018-05-31 2020-08-04 Western Digital Technologies, Inc. Scheme to reduce read disturb for high read intensive blocks in non-volatile memory
US11119850B2 (en) * 2018-06-29 2021-09-14 International Business Machines Corporation Determining when to perform error checking of a storage unit by using a machine learning module
US11099743B2 (en) 2018-06-29 2021-08-24 International Business Machines Corporation Determining when to replace a storage device using a machine learning module
US11119662B2 (en) 2018-06-29 2021-09-14 International Business Machines Corporation Determining when to perform a data integrity check of copies of a data set using a machine learning module
US10877880B2 (en) 2018-10-11 2020-12-29 Micron Technology, Inc. Unretiring memory device blocks
US10892016B1 (en) 2019-04-08 2021-01-12 Monolithic 3D Inc. 3D memory semiconductor devices and structures
US11296106B2 (en) 2019-04-08 2022-04-05 Monolithic 3D Inc. 3D memory semiconductor devices and structures
US11158652B1 (en) 2019-04-08 2021-10-26 Monolithic 3D Inc. 3D memory semiconductor devices and structures
US11018156B2 (en) 2019-04-08 2021-05-25 Monolithic 3D Inc. 3D memory semiconductor devices and structures
US11763864B2 (en) 2019-04-08 2023-09-19 Monolithic 3D Inc. 3D memory semiconductor devices and structures with bit-line pillars
US10734079B1 (en) * 2019-05-17 2020-08-04 Western Digital Technologies, Inc. Sub block mode read scrub design for non-volatile memory
US11347884B2 (en) 2019-07-02 2022-05-31 Bank Of America Corporation Data security tool
US10922012B1 (en) * 2019-09-03 2021-02-16 Dropbox, Inc. Fair data scrubbing in a data storage system
US11475974B2 (en) * 2020-08-27 2022-10-18 Micron Technology, Inc. Memory device virtual blocks using half good blocks
WO2022066178A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Adaptive internal memory error scrubbing and error handling
KR20220049397A (ko) 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US11579772B2 (en) * 2020-11-25 2023-02-14 Micron Technology, Inc. Managing page retirement for non-volatile memory
US11467737B2 (en) * 2020-12-04 2022-10-11 Micron Technology, Inc. Reducing probabilistic data integrity scan collisions
US11609857B2 (en) 2020-12-04 2023-03-21 Micron Technology, Inc. Identification and caching of frequent read disturb aggressors
US11699498B2 (en) 2020-12-04 2023-07-11 Micron Technology, Inc. Managing probabilistic data integrity scan intervals
US11409599B2 (en) 2020-12-04 2022-08-09 Micron Technology, Inc. Managing probabilistic data integrity scans in workloads with localized read patterns
US20230409239A1 (en) * 2022-06-21 2023-12-21 Micron Technology, Inc. Efficient command fetching in a memory sub-system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090003058A1 (en) 2007-06-28 2009-01-01 Samsung Electronics Co., Ltd. Flash memory device and method for adjusting read voltage of flash memory device
WO2011024015A1 (en) 2009-08-25 2011-03-03 Sandisk Il Ltd. Restoring data into a flash storage device

Family Cites Families (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US531342A (en) 1894-12-25 Excelsior-cutting machine
US4139911A (en) 1978-03-13 1979-02-13 Westinghouse Electric Corp. High speed sense circuit for semiconductor memories
US4218764A (en) 1978-10-03 1980-08-19 Matsushita Electric Industrial Co., Ltd. Non-volatile memory refresh control circuit
US4253059A (en) 1979-05-14 1981-02-24 Fairchild Camera & Instrument Corp. EPROM Reliability test circuit
JPS58139399A (ja) 1982-02-15 1983-08-18 Hitachi Ltd 半導体記憶装置
US4460982A (en) 1982-05-20 1984-07-17 Intel Corporation Intelligent electrically programmable and electrically erasable ROM
US4612630A (en) 1984-07-27 1986-09-16 Harris Corporation EEPROM margin testing design
JPS6134793A (ja) 1984-07-27 1986-02-19 Hitachi Ltd ダイナミツクメモリ装置における診断及びエラ−訂正装置
JPS6148197A (ja) 1984-08-13 1986-03-08 Fujitsu Ltd チヤ−ジアツプ回路
JPS61172300A (ja) 1985-01-26 1986-08-02 Toshiba Corp 半導体記憶装置
EP0198935A1 (de) 1985-04-23 1986-10-29 Deutsche ITT Industries GmbH Elektrisch umprogrammierbarer Halbleiterspeicher mit Redundanz
US4962322A (en) 1988-12-05 1990-10-09 Texas Instruments Incorporated Nonvolatible capacitor random access memory
JPS62114200A (ja) 1985-11-13 1987-05-25 Mitsubishi Electric Corp 半導体メモリ装置
US5157629A (en) 1985-11-22 1992-10-20 Hitachi, Ltd. Selective application of voltages for testing storage cells in semiconductor memory arrangements
US4763305A (en) 1985-11-27 1988-08-09 Motorola, Inc. Intelligent write in an EEPROM with data and erase check
JPH0715799B2 (ja) 1987-06-30 1995-02-22 日本電気株式会社 半導体記憶装置
FR2618579B1 (fr) 1987-07-21 1989-11-10 Thomson Semiconducteurs Circuit integre a memoire comportant un dispositif anti-fraude
JPS6476596A (en) 1987-09-18 1989-03-22 Oki Electric Ind Co Ltd Error of eeprom detecting device
US4809231A (en) 1987-11-12 1989-02-28 Motorola, Inc. Method and apparatus for post-packaging testing of one-time programmable memories
FR2630573B1 (fr) 1988-04-26 1990-07-13 Sgs Thomson Microelectronics Memoire programmable electriquement avec plusieurs bits d'information par cellule
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
JPH07105146B2 (ja) 1988-07-29 1995-11-13 三菱電機株式会社 不揮発性記憶装置
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
JPH02260298A (ja) 1989-03-31 1990-10-23 Oki Electric Ind Co Ltd 不揮発性多値メモリ装置
US4980859A (en) 1989-04-07 1990-12-25 Xicor, Inc. NOVRAM cell using two differential decouplable nonvolatile memory elements
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
JPH0664918B2 (ja) 1989-05-25 1994-08-22 ローム株式会社 自己訂正機能を有する半導体記憶装置
JPH07114077B2 (ja) 1989-06-01 1995-12-06 三菱電機株式会社 不揮発性半導体記憶装置
DE69031276T2 (de) 1989-06-12 1998-01-15 Toshiba Kawasaki Kk Halbleiterspeicheranordnung
FR2650109B1 (fr) 1989-07-20 1993-04-02 Gemplus Card Int Circuit integre mos a tension de seuil ajustable
JPH03162800A (ja) 1989-08-29 1991-07-12 Mitsubishi Electric Corp 半導体メモリ装置
US5065364A (en) 1989-09-15 1991-11-12 Intel Corporation Apparatus for providing block erasing in a flash EPROM
US5200959A (en) 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5270551A (en) 1990-02-14 1993-12-14 Hitachi, Ltd. Method of and apparatus for protecting electronic circuit against radiation
US4975883A (en) 1990-03-29 1990-12-04 Intel Corporation Method and apparatus for preventing the erasure and programming of a nonvolatile memory
US5132935A (en) 1990-04-16 1992-07-21 Ashmore Jr Benjamin H Erasure of eeprom memory arrays to prevent over-erased cells
US5122985A (en) 1990-04-16 1992-06-16 Giovani Santin Circuit and method for erasing eeprom memory arrays to prevent over-erased cells
US5200922A (en) 1990-10-24 1993-04-06 Rao Kameswara K Redundancy circuit for high speed EPROM and flash memory devices
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5239505A (en) 1990-12-28 1993-08-24 Intel Corporation Floating gate non-volatile memory with blocks and memory refresh
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5504760A (en) 1991-03-15 1996-04-02 Sandisk Corporation Mixed data encoding EEPROM system
US5263032A (en) 1991-06-27 1993-11-16 Digital Equipment Corporation Computer system operation with corrected read data function
US5313427A (en) 1991-09-20 1994-05-17 Texas Instruments Incorporated EEPROM array with narrow margin of voltage thresholds after erase
JPH05109292A (ja) 1991-10-14 1993-04-30 Toshiba Corp 不揮発性半導体記憶装置
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
US5347489A (en) 1992-04-21 1994-09-13 Intel Corporation Method and circuitry for preconditioning shorted rows in a nonvolatile semiconductor memory incorporating row redundancy
US5327383A (en) 1992-04-21 1994-07-05 Intel Corporation Method and circuitry for erasing a nonvolatile semiconductor memory incorporating row redundancy
US5657332A (en) 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
JPH065823A (ja) 1992-06-19 1994-01-14 Toshiba Corp 不揮発性半導体記憶装置及びその使用方法
US5550394A (en) 1993-06-18 1996-08-27 Texas Instruments Incorporated Semiconductor memory device and defective memory cell correction circuit
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JP2708333B2 (ja) 1992-09-02 1998-02-04 株式会社東芝 レベルシフタ回路
US5365486A (en) 1992-12-16 1994-11-15 Texas Instruments Incorporated Method and circuitry for refreshing a flash electrically erasable, programmable read only memory
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5335198A (en) 1993-05-06 1994-08-02 Advanced Micro Devices, Inc. Flash EEPROM array with high endurance
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
JP3999822B2 (ja) 1993-12-28 2007-10-31 株式会社東芝 記憶システム
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
GB2289779B (en) 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
US5523972A (en) 1994-06-02 1996-06-04 Intel Corporation Method and apparatus for verifying the programming of multi-level flash EEPROM memory
US5450363A (en) 1994-06-02 1995-09-12 Intel Corporation Gray coding for a multilevel cell memory system
JP3563452B2 (ja) 1994-08-10 2004-09-08 株式会社東芝 セル閾値分布検知回路およびセル閾値分布検知方法
FR2728380A1 (fr) 1994-12-20 1996-06-21 Sgs Thomson Microelectronics Procede d'ecriture de donnees dans une memoire et memoire electriquement programmable correspondante
US5475693A (en) 1994-12-27 1995-12-12 Intel Corporation Error management processes for flash EEPROM memory arrays
JP3274306B2 (ja) 1995-01-20 2002-04-15 株式会社東芝 半導体集積回路装置
WO1996024138A1 (fr) 1995-01-31 1996-08-08 Hitachi, Ltd. Dispositif de memoire remanente et procede de regeneration
US5530705A (en) 1995-02-08 1996-06-25 International Business Machines Corporation Soft error recovery system and method
US5513144A (en) 1995-02-13 1996-04-30 Micron Technology, Inc. On-chip memory redundancy circuitry for programmable non-volatile memories, and methods for programming same
US5699297A (en) 1995-05-30 1997-12-16 Kabushiki Kaisha Toshiba Method of rewriting data in a microprocessor additionally provided with a flash memory
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5687114A (en) 1995-10-06 1997-11-11 Agate Semiconductor, Inc. Integrated circuit for storage and retrieval of multiple digital bits per nonvolatile memory cell
US5703506A (en) 1995-12-26 1997-12-30 Motorola Signal processing method
FR2745114B1 (fr) 1996-02-20 1998-04-17 Sgs Thomson Microelectronics Memoire non volatile multiniveau modifiable electriquement avec rafraichissement autonome
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5712815A (en) 1996-04-22 1998-01-27 Advanced Micro Devices, Inc. Multiple bits per-cell flash EEPROM capable of concurrently programming and verifying memory cells and reference cells
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
US5675537A (en) 1996-08-22 1997-10-07 Advanced Micro Devices, Inc. Erase method for page mode multiple bits-per-cell flash EEPROM
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5717632A (en) 1996-11-27 1998-02-10 Advanced Micro Devices, Inc. Apparatus and method for multiple-level storage in non-volatile memories
US5835413A (en) 1996-12-20 1998-11-10 Intel Corporation Method for improved data retention in a nonvolatile writeable memory by sensing and reprogramming cell voltage levels
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
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
JP3177207B2 (ja) 1998-01-27 2001-06-18 インターナショナル・ビジネス・マシーンズ・コーポレ−ション リフレッシュ間隔制御装置及び方法、並びにコンピュータ
JP2000187992A (ja) 1998-12-17 2000-07-04 Mitsubishi Electric Corp 電気的書換可能な不揮発性メモリのリフレッシュ制御回路
US6215697B1 (en) 1999-01-14 2001-04-10 Macronix International Co., Ltd. Multi-level memory cell device and method for self-converged programming
JP2000251483A (ja) 1999-02-24 2000-09-14 Sanyo Electric Co Ltd 1チップマイクロコンピュータとそのデータリフレッシュ方法
WO2001022232A1 (fr) * 1999-09-17 2001-03-29 Hitachi, Ltd. Memoire dans laquelle le nombre de corrections d'erreurs est enregistre
US6222768B1 (en) 2000-01-28 2001-04-24 Advanced Micro Devices, Inc. Auto adjusting window placement scheme for an NROM virtual ground array
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US6772274B1 (en) 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
JP4323707B2 (ja) 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP3812933B2 (ja) 2001-04-19 2006-08-23 シャープ株式会社 ファイルシステムおよびその制御方法
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
JP4059472B2 (ja) 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6678785B2 (en) 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
US6678192B2 (en) 2001-11-02 2004-01-13 Sandisk Corporation Error management for writable tracking storage units
US6560152B1 (en) 2001-11-02 2003-05-06 Sandisk Corporation Non-volatile memory with temperature-compensated data read
JP2003242789A (ja) 2002-02-14 2003-08-29 Mitsubishi Electric Corp 不揮発性半導体記憶装置
JP2003257192A (ja) 2002-03-06 2003-09-12 Mitsubishi Electric Corp 半導体記憶装置および不揮発性半導体記憶装置
US6963505B2 (en) 2002-10-29 2005-11-08 Aifun Semiconductors Ltd. Method circuit and system for determining a reference voltage
US6912160B2 (en) 2003-03-11 2005-06-28 Fujitsu Limited Nonvolatile semiconductor memory device
US6839281B2 (en) 2003-04-14 2005-01-04 Jian Chen Read and erase verify methods and circuits suitable for low voltage non-volatile memories
US7076598B2 (en) 2003-09-09 2006-07-11 Solid State System Co., Ltd. Pipeline accessing method to a large block memory
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP4063239B2 (ja) 2004-04-16 2008-03-19 ソニー株式会社 データ読出し回路及びこの回路を有する半導体装置
JP4083147B2 (ja) 2004-07-02 2008-04-30 シャープ株式会社 半導体記憶装置
US7257025B2 (en) 2004-12-09 2007-08-14 Saifun Semiconductors Ltd Method for reading non-volatile memory cells
US7242618B2 (en) 2004-12-09 2007-07-10 Saifun Semiconductors Ltd. Method for reading non-volatile memory cells
US7206230B2 (en) 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
US7187585B2 (en) * 2005-04-05 2007-03-06 Sandisk Corporation Read operation for non-volatile storage that includes compensation for coupling
US7339834B2 (en) 2005-06-03 2008-03-04 Sandisk Corporation Starting program voltage shift with cycling of non-volatile memory
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
JP4660353B2 (ja) 2005-11-01 2011-03-30 株式会社東芝 記憶媒体再生装置
US7254071B2 (en) 2006-01-12 2007-08-07 Sandisk Corporation Flash memory devices with trimmed analog voltages
US7286412B1 (en) 2006-05-09 2007-10-23 Macronix International Co., Ltd. Method and apparatus to improve nonvolatile memory data retention
US7613043B2 (en) 2006-05-15 2009-11-03 Apple Inc. Shifting reference values to account for voltage sag
US7952922B2 (en) 2006-06-06 2011-05-31 Micron Technology, Inc. Method for programming a non-volatile memory device to reduce floating-gate-to-floating-gate coupling effect
US7489549B2 (en) 2006-06-22 2009-02-10 Sandisk Corporation System for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US7330376B1 (en) 2006-07-27 2008-02-12 Macronix International Co., Ltd. Method for memory data storage by partition into narrower threshold voltage distribution regions
US7450425B2 (en) 2006-08-30 2008-11-11 Micron Technology, Inc. Non-volatile memory cell read failure reduction
US8050901B2 (en) 2006-09-14 2011-11-01 Taiwan Semiconductor Manufacturing Company, Ltd. Prediction and control of NBTI of integrated circuits
US7886204B2 (en) 2006-09-27 2011-02-08 Sandisk Corporation Methods of cell population distribution assisted read margining
US7716538B2 (en) 2006-09-27 2010-05-11 Sandisk Corporation Memory with cell population distribution assisted read margining
US7558109B2 (en) 2006-11-03 2009-07-07 Sandisk Corporation Nonvolatile memory with variable read threshold
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
US7876621B2 (en) 2007-04-23 2011-01-25 Sandisk Il Ltd. Adaptive dynamic reading of flash memories
KR100882841B1 (ko) * 2007-06-19 2009-02-10 삼성전자주식회사 읽기 디스터번스로 인한 비트 에러를 검출할 수 있는메모리 시스템 및 그것의 읽기 방법
KR100838292B1 (ko) 2007-06-20 2008-06-17 삼성전자주식회사 메모리 셀의 읽기 레벨 제어 장치 및 그 방법
TWI352354B (en) * 2007-12-31 2011-11-11 Phison Electronics Corp Method for preventing read-disturb happened in non
KR101378349B1 (ko) * 2008-01-30 2014-03-28 삼성전자주식회사 메모리 장치 및 메모리 데이터 읽기 방법
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US20090327837A1 (en) * 2008-06-30 2009-12-31 Robert Royer NAND error management
KR101434404B1 (ko) * 2008-07-30 2014-08-29 삼성전자주식회사 파라미터를 추출하는 불휘발성 메모리 장치 및 그것을포함하는 불휘발성 메모리 시스템
US7859932B2 (en) * 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage
US8259506B1 (en) * 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
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
US8634240B2 (en) * 2009-10-28 2014-01-21 SanDisk Technologies, Inc. Non-volatile memory and method with accelerated post-write read to manage errors
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
TWI594256B (zh) * 2010-04-19 2017-08-01 慧榮科技股份有限公司 用來進行記憶體存取管理之方法以及記憶裝置及其控制器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090003058A1 (en) 2007-06-28 2009-01-01 Samsung Electronics Co., Ltd. Flash memory device and method for adjusting read voltage of flash memory device
WO2011024015A1 (en) 2009-08-25 2011-03-03 Sandisk Il Ltd. Restoring data into a flash storage device

Also Published As

Publication number Publication date
US8687421B2 (en) 2014-04-01
TWI570560B (zh) 2017-02-11
CN103946805A (zh) 2014-07-23
US20130128666A1 (en) 2013-05-23
TW201337559A (zh) 2013-09-16
WO2013077962A1 (en) 2013-05-30
KR20140096059A (ko) 2014-08-04

Similar Documents

Publication Publication Date Title
KR101849440B1 (ko) 동적 판독에 사용하기 위한 스크럽 기술
KR101127882B1 (ko) 플래쉬 메모리 데이터 정정 및 스크럽 기법
US7173852B2 (en) Corrected data storage and handling methods
US7573773B2 (en) Flash memory with data refresh triggered by controlled scrub data reads
US7477547B2 (en) Flash memory refresh techniques triggered by controlled scrub data reads
US9715939B2 (en) Low read data storage management
US9229644B2 (en) Targeted copy of data relocation
EP2135251B1 (en) Flash memory refresh techniques triggered by controlled scrub data reads
EP1946326A1 (en) Memory with retargetable memory cell redundancy

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