KR20070087571A - 스크래치 패드 블록 - Google Patents

스크래치 패드 블록 Download PDF

Info

Publication number
KR20070087571A
KR20070087571A KR1020077012082A KR20077012082A KR20070087571A KR 20070087571 A KR20070087571 A KR 20070087571A KR 1020077012082 A KR1020077012082 A KR 1020077012082A KR 20077012082 A KR20077012082 A KR 20077012082A KR 20070087571 A KR20070087571 A KR 20070087571A
Authority
KR
South Korea
Prior art keywords
data
block
sector
page
addressable
Prior art date
Application number
KR1020077012082A
Other languages
English (en)
Other versions
KR100914263B1 (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 KR20070087571A publication Critical patent/KR20070087571A/ko
Application granted granted Critical
Publication of KR100914263B1 publication Critical patent/KR100914263B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Abstract

블록의 최소 소거 단위를 갖는 메모리 어레이에서, 스크래치 패드 블록은 또 다른 블록에 나중에 기록되는 데이터를 저장하는데 사용된다. 이 데이터는 낮은 병렬도로 스크래치 패드 블록에 기록되고 그 후에 높은 병렬도로 또 다른 위치에 기록됨으로써, 고밀도로 저장된다. 데이터는 그밖의 모든 곳에서 더욱 효율적으로 저장될 수 있을 때까지 스크래치 패드 블록에 일시적으로 저장될 수 있다. 무관련 데이터는 스크래치 패드 블록의 동일 페이지에 저장될 수 있다.
스크래치 패드 블록, 병렬도, 메모리 어레이, 페이지,

Description

스크래치 패드 블록{SCRATCH PAD BLOCK}
본 발명은 일반적으로 비휘발성 플래시 메모리 시스템들의 동작에 관한 것이며, 특히 비휘발성 플래시 메모리 내에서 데이터를 프로그램하는 더욱 효율적인 방법들에 관한 것이다.
하나 이상의 집적 회로 칩들 상에 형성되는 플래시 EEPROM(전기 소거가능하고 프로그램가능한 판독 전용 메모리) 셀들의 어레이를 사용하는 특히 작은 폼 팩터 카드들의 형태로 오늘날 사용되는 많은 상업적으로 성공가능한 비휘발성 메모리 제품들이 존재한다. 통상적으로 그러나 반드시 필요로 되지 않는 개별 집적 회로칩 상의 메모리 제어기는 카드가 제거가능하게 접속되는 호스트와 인터페이스하고 카드 내의 메모리 어레이의 동작을 제어한다. 이와 같은 제어기는 전형적으로 마이크로프로세서, 일부 비휘발성 판독 전용 메모리(ROM), 휘발성 랜덤-액세스-메모리(RAM) 및 데이터의 프로그래밍 및 판독 동안 제어기를 통과할 때 데이터로부터 에러 정정 코드(ECC)를 계산하는 회로와 같은 하나 이상의 특수 회로들을 포함한다. 상업적으로 입수가능한 카드들 중 일부는 CompactFlashTM(CF) 카드들, MultiMedia 카드들(MMC), 보안 디지털(SD) 카드들, 개인용 태그들(P-Tag) 및 메모 리 스틱 카드들이다. 호스트들은 개인용 컴퓨터들, 노트북 컴퓨터들, 개인 휴대 정보 단말기들(PDAs), 각종 데이터 통신 장치들, 디지털 카메라들, 셀룰러 전화들, 휴대용 오디오 플레이어들, 자동차 사운드 시스템들, 및 유사한 유형의 장비를 포함한다. 일부 시스템들에서, 제거가능한 카드는 제어기를 포함하지 않고 호스트는 카드내의 메모리 어레이의 동작을 제어한다. 이 유형의 메모리 시스템의 제어는 스마트 미디어 카드들 및 xD 카드들을 포함한다. 따라서, 메모리 어레이의 제어는 카드 내의 제어기 상의 소프트웨어에 의해 또는 호스트 내의 제어 소프트웨어에 의해 성취될 수 있다. 메모리 카드 구현방식 이외에, 이 유형의 메모리는 대안적으로 각종 유형들의 호스트 시스템들에 임베디드될 수 있다. 제거가능하고 임베디드된 애플리케이션들 둘 다에서, 호스트 데이터는 메모리 제어 소프트웨어에 의해 구현되는 저장 방식에 따라서 메모리 어레이에 저장될 수 있다.
2개의 일반적인 메모리 셀 어레이 아키텍쳐들은 상업적인 애플리케이션인 NOR 및 NAND이다. 전형적인 NOR 어레이에서, 메모리 셀들은 칼럼 방향으로 연장되는 인접 비트 라인 소스 및 드레인 확산들 간에 연결되는데, 제어 게이트들은 셀들의 열들(rows)을 따라서 연장되는 워드 라인들에 연결된다. 메모리 셀은 소스 및 드레인 간의 셀 채널 영역의 적어도 일부 위에 위치되는 적어도 하나의 저장 소자를 포함한다. 저장 소자들 상의 프로그램된 전하 레벨은 셀들의 동작 특성을 제어하는데, 이는 어드레스된 메모리 셀들에 적절한 전압들을 인가함으로써 판독될 수 있다. 이와 같은 셀들, 메모리 시스템들에서 이들의 용도들, 및 제조 방법들의 예들이 미국 특허 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층 유전체는 메모리 셀 채널 위의 반도전성 기판의 표면 및 도전성 제어 게이트 사이에 끼워넣게 된다. 이 셀은 셀 채널로부터 질화물로 전자들을 주입함으로써 프로그램되는데, 여기서 이들은 제한된 영역에 트랩되고 저장되고 핫 정공들을 질화물로 주입함으로써 소거된다. 유전체 저장 소자를 사용하는 여러 특정 셀 구조들 및 어레이들이 Harari 등에게 허여된 미국 특허 출 원 공개 번호 2003/0109093에 서술된다.
대부분의 모든 집적 회로 애플리케이션들에서 처럼, 어떤 집적 회로 기능을 구현하기 위하여 실리콘 기판 에어리어를 수축시키기 위한 압력은 또한 플래시 EEPROM 메모리 셀 어레이들에도 적용된다. 이는 소정 크기의 메모리 카드 또는 다른 유형들의 패키지들의 저장 용량을 증가시키기 위하여 또는 용량을 증가시키고 크기를 감소시키기 위하여, 실리콘 기판의 소정 에어리어에 저장될 수 있는 디지털 데이터의 량을 계속적으로 증가시키는데 바람직하다. 데이터의 저장 밀도를 증가시키기 위한 한 가지 방법은 메모리 셀 마다 및/또는 저장 단위 또는 요소마다 1비트 이상의 데이터를 저장하는 것이다. 이는 저장 요소 전하 레벨 전압 범위의 윈도우를 2가지 이상의 스테이트들(states)로 분할함으로써 성취된다. 4가지 이와 같은 상태들의 이용은 각 셀이 2비트의 데이터를 저장하도록 하며, 8개의 상태들은 저장 요소마다 3비트의 데이터를 저장하도록 하는 등등이다. 플로우팅 게이트들 및 이들의 동작을 이용하는 다중 상태 플래시 EEPROM 구조들은 미국 특허 5,043,940 및 5,172,238에 서술되어 있고, 유전체 플로우팅 게이트들을 이용하는 구조들이 미국 공개 번호 2003/0109093에 상술되어 있다. 다중 상태 메모리 셀 어레이의 선택된 부분들은 또한 미국 특허 5,903,167 및 6,456,528에 서술된 방식으로 각종 이유들로 2가지 상태들(2진)로 동작될 수 있는데, 모든 특허들 및 이 출원에 언급된 특허 출원과 함께 이 특허들이 본원에 참조되어 있다.
전형적인 플래시 EEPROM 어레이의 메모리 셀들은 모두 소거되는 셀들의 이산 블록(소거 블록)으로 분할된다. 즉, 소거 블록은 소거 단위, 동시에 소거가능한 셀 들의 최소수이다. 각 소거 블록은 전형적으로 하나 이상의 데이터를 저장하는데, 이 페이지는 프로그래밍 및 판독의 최소 단위이지만, 하나 이상의 페이지는 상이한 서브-어레이들 또는 플레인들(planes)에서 병렬로 프로그램되거나 판독될 수 있다. 각 페이지는 전형적으로 하나 이상의 데이터 섹터들을 저장하는데, 이 섹터의 크기는 호스트 시스템에 의해 규정된다. 섹터의 예는 자기 디스크 드라이브들로 설정된 표준에 따라서 512 바이트의 사용자 데이터 더하기 데이터가 저장되는 소거 블록 및/또는 사용자 데이터에 관한 어떤 바이트 수의 오버헤드 정보를 포함한다. 이와 같은 메모리들은 전형적으로 각 소거 블록 내에서 16, 32개 이상의 페이지들로 구성되고 각 페이지는 하나 또는 단지 몇개의 호스트 데이터 섹터를 저장한다.
메모리 어레이로 사용자 데이터를 프로그램하는 동안 병렬도를 증가시키고 이로부터 사용자 데이터를 판독하기 위하여, 어레이는 전형적으로 통상 플레인들이라 칭하는 서브-어레이들로 분할되는데, 이들 플레인들은 자신의 데이터 레지스터들 및 다른 회로들을 포함하여 데이터 섹터들이 여러개 중 각각에/로부터 또는 모든 플레인들에/로부터 동시에 프로그램 또는 판독될 수 있다. 단일 집적 회로 상의 어레이는 물리적으로 플레인들로 분할되거나, 각 플레인은 별개의 하나 이상의 집적 회로 칩들로부터 형성될 수 있다. 이와 같은 메모리 구현방식의 예들은 미국 특허 5,798,968 및 5,890,192에 서술된다.
메모리를 더욱 효율적으로 관리하기 위하여, 소거 블록들은 모두 링크되어 가상 블록들 또는 메타블록들(metablocks)을 형성한다. 즉, 각 메타블록은 각 플레인으로부터 하나의 소거 블록을 포함하도록 규정된다. 메타블록의 이용은 미국 특 허 6,763,424에 서술된다. 메타블록은 데이터를 프로그램하고 판독하기 위한 수신지로서 호스트 논리적 블록 어드레스에 의해 식별된다. 유사하게, 메타블록의 모든 소거 블록들은 모두 소거된다. 메타블록은 메타블록 내 각 소거 블록으로부터 한 페이지를 포함하는 메타페이지의 단위로 프로그램될 수 있다. 이와 같은 대형 블록들 및/또는 메타블록들로 동작되는 메모리 시스템 내의 제어기는 호스트로부터 수신된 논리적 블록 어드레스들(LBAs) 및 메모리 셀 어레이 내의 물리적 블록 수들(PBNs) 간의 변환을 포함한 다수의 기능들을 수행한다. 소거 블록들 내의 개별적인 페이지들은 전형적으로 블록 어드레스 내의 오프셋에 의해 식별된다. 어드레스 변환은 종종 논리적 블록 수(LBN) 및 논리적 페이지의 중간 텀즈(terms)를 이용하는 것을 포함한다. 메타블록들을 이용하는 메모리 시스템에서, 메타블록은 메모리 어레이의 유효 최소 소거 단위일 수 있다. 따라서, 최소 소거 단위(블록)은 메모리 아키텍쳐에 따라서 소거 블록 또는 메타블록 중 어느 하나일 수 있다. 용어 "블록"은 이 아키텍쳐에 따라서 소거 블록 또는 메타블록 중 어느 하나라 칭할 수 있다. 유사하게, 용어 "페이지"는 메모리 시스템의 최소 프로그래밍 단위라 칭할 수 있다. 이는 단일 소거 블록 내의 페이지이거나 메모리 시스템의 아케텍쳐에 따라서 여러 소거 블록들을 가로질러 신장되는 메타페이지일 수 있다.
메타블록에 저장된 데이터는 종종 갱신되며, 갱신들의 가능성은 메타블록의 데이터 용량이 증가함에 따라서 증가된다. 하나의 메타블록의 갱신된 섹터들은 통상적으로 또 다른 메타블록에 기록된다. 불변의 섹터들은 통상적으로 또한 동일한 프로그래밍 동작의 부분으로서 원본으로부터 새로운 메타블록으로 복제되어 데이터 를 통합한다. 대안적으로, 불변의 데이터는 단일 메타블록으로 갱신된 데이터를 또 다시 나중에 통합할 때까지 원래 메타블록에 남게될 수 있다. 현재 데이터를 새로운 블록으로 통합하고 폐 데이터(obsolete data)를 포함하는 블록을 소거하는 동작들을 일반적으로 "가비지 콜렉션(garbage collection)" 동작들이라 칭한다.
소거된 블록 풀에 유지되는 일부 과다한 블록들로 메타블록 시스템들 또는 대형 블록을 동작시키는 것이 보편적이다. 블록의 용량보다 적은 하나 이상의 데이터 페이지들이 갱신될 때, 갱신된 페이지들을 풀로부터 소거된 블록에 기록하고 나서 원래 블록으로부터 불변의 데이터 페이지를 소거 풀 블록으로 복제하는 것이 전형적이다. 이 기술의 변화들은 상술된 미국 특허 6,763,424에 서술되어 있다. 시간에 걸쳐서, 재기록되고 갱신되는 호스트 데이터 파일들의 결과로서, 많은 블록들은 유효 데이터를 포함하는 상대적으로 작은 수의 페이지들 및 더이상 존재하지 않는 데이터를 포함하는 남아있는 페이지들로 끝날 수 있다. 어레이의 데이터 저장 용량을 효율적으로 이용할 수 있도록 하기 위하여, 유효 데이터의 논리적으로 관련된 데이터 페이지들은 다수의 블록들중 프래그먼트들로부터 시간에 걸쳐서 모두 수집되고 몇개의 블록들로 모두 통합된다. 이 프로세스를 통상 "가비지 콜렉션"이라 칭한다.
일부 메모리 시스템들에서, 물리적 메모리 셀들은 또한 2개 이상의 존들로 그룹화된다. 존은 특정 범위의 논리적 블록 어드레스들이 맵핑되는 물리적 메모리 또는 메모리 시스템의 임의의 구획된 서브셋(subset)일 수 있다. 예를 들어, 64 메가바이트의 데이터를 저장할 수 있는 메모리 시스템은 존 마다 16메가바이트의 데 이터를 저장하는 4개의 존들로 구획될 수 있다. 그 후, 논리적 블록 어드레스들의 범위는 4개의 그룹들로 분할되는데, 한 그룹은 4개의 존들 각각의 물리적 블록들로 할당된다. 논리적 블록 어드레스들은 전형적인 구현방식으로 제한되어, 각 데이터는 결코 논리적 블록 어드레스들이 맵핑되는 단일 물리적 존 외부에 기록되지 않는다. 플레인들(서브-어레이들)로 분할되는 메모리 셀 어레이에서, 각각은 자신들의 어드레싱, 프로그래밍 및 판독 회로들을 가지며, 각 존은 바람직하게는 다수의 플레인들로부터 블록들, 전형적으로 각 플레인들로부터 동일한 블록들의 수를 포함한다. 존들은 주로 논리적-대-물리적 변환과 같은 어드레스 관리를 간단화하기 위하여 사용되어 더 작은 변환 테이블을 발생시키며, 이들 테이블들을 유지하는데 필요로 되는 RAM 메모리를 더 적게하고 메모리의 현재 활성 영역을 어드레스하기 위하여 액세스 시간을 더욱 빠르게하지만, 이들의 제한 특성 때문에 최적의 웨어 레벨링(wear leveling)보다 적게될 수 있다.
개별적인 플래시 EEPROM 셀들은 하나 이상의 데이터 비트들을 나타내는 전하 저장 소자 또는 유닛에 전하량을 저장한다. 저장 소자의 전하 레벨은 메모리 셀의 임계값(통상 VT라 칭함)을 제어하는데, 이 메모리 셀은 셀의 저장 상태를 판독하는 것을 토대로 사용된다. 임계값 윈도우는 통상 다수의 범위들, 메모리 셀의 2개 이상의 저장 상태들 각각에 대해 하나씩으로 분할된다. 이들 범위들은 개별적인 셀들의 저장 상태를 결정하는 것을 허용하는 공칭 감지 레벨을 포함하는 가드밴드들(guardbands)로 분리된다. 이들 저장 레벨들은 이웃하거나 다른 관련된 메모리 셀들, 페이지들 또는 블록들에서 수행되는 전하 외란 프로그래밍, 판독 또는 소거에 따라서 시프트된다. 그러므로, 에러 정정 코드들(ECCs)은 전형적으로 제어기에 의해 계산되고 데이터를 검증하고 필요한 경우 데이터 정정의 일부 레벨을 수행하기 위하여 판독 동안 프로그램되고 사용되는 호스트 데이터와 함께 저장된다. 또한, 시프트되는 전하 레벨들은 외란 동작들이 이들을 자신들의 규정된 범위 밖으로 완전히 시프트 시킴으로써 에러 데이터를 판독하도록 하기 전 시간에 걸쳐서 자신들의 상태 범위들의 중심들로 다시 복구될 수 있다. 데이터 리프레시 또는 스크러브(scrub)라 칭하는 이 프로세스는 미국 특허 5,532,962 및 5,909,449에 서술되어 있다.
일부 메모리 어레이들에서, 페이지는 다수의 데이터 섹터들을 유지할 수 있는 소거 블록의 일부를 구성한다. 페이지가 기록되면, 이미 기록된 데이터를 파손함이 없이 부가적인 기록이 없을 수 있다. 이와 같은 시스템을 이용하는 메모리 어레이들에 대해서, 페이지는 동일한 워드 라인에 연결되는 메모리 셀들의 세트에 의해 규정될 수 있다. 이와 같은 메모리 어레이들은 데이터가 페이지의 크기보다 작은 량이 수신되는 경우 비효율적으로 프로그램될 수 있다. 예를 들어, 데이터가 한번에 한 섹터로 수신되는 경우, 단지 하나의 섹터만이 페이지로 프로그램될 수 있다. 이미 저장된 데이터 섹터를 파손할 위험 없이 부가적인 데이터가 페이지에 프로그램될 수 없다. 때때로, 일련의 단일 섹터들이 이들 간의 일부 지연을 가진 체 수신될 수 있다. 이 경우에, 각 섹터는 메모리 어레이의 별도의 페이지로 기록된다. 따라서, 섹터들은 메모리 어레이 내 공간을 이용하는 방법으로 비효율적인 방 식으로 저장된다. 다중 레벨 논리가 사용되는 경우, 메모리 셀들은 특히 인접 셀들의 나중 프로그램들의 영향들에 민감하다. 게다가, 다중 레벨 셀들의 프로그래밍은 일반적으로 제1 데이터 페이지로 셀들의 그룹을 프로그램하고 제2 데이터 페이지로 셀들을 프로그램함으로써 행해진다. 제2 데이터 페이지의 프로그래밍은 어떤 경우들에 제1 데이터 페이지를 파손시킬 수 있다. 그러므로, 메모리 어레이가 페이지보다 적은 량의 데이터를 수신할 때 다중-섹터 페이지를 갖는 메모리 어레이에 데이터를 저장하도록 하는 더욱 효율적인 방식이 필요로 된다. 다중 레벨 셀들의 그룹을 프로그래밍할 때 다음 페이지의 프로그래밍 동안 제1 페이지의 데이터 파손을 방지하는 방법이 또한 필요로 된다.
소거 단위로서 블록을 가는 메모리 어레이에서, 하나 이상의 블록들은 스크래치 패드 블록들로서 지정되고 메모리 시스템의 성능을 개선시키는데 사용될 수 있다. 스크래치 패드 블록은 버퍼로서 동작됨으로써, 데이터는 저 병렬도로 스크래치 패드 블록에 기록되고 나서 고 병렬도의 메모리 어레이 내의 또 다른 위치로 복제된다. 데이터는 또 다른 위치로 더욱 효율적으로 기록될 때까지 스크래치 패드 블록에 누적될 수 있다. 멀티-섹터 페이지들을 갖는 메모리들에서, 섹터들은 전체 페이지가 시스템의 최대 병렬화를 이용하여 기록될 수 있을 때까지 누적될 수 있다. 다중-레벨 셀 메모리들에서, 하부 페이지는 상부 페이지가 이용될 수 있을 때까지 스크래치 패드 블록에 저장됨으로써, 상부 및 하부 페이지들을 모두 저장할 수 있다.
특정 프로그램 동작의 병렬도는 함께 프로그램되는 데이터 비트들의 수에 비례한다. 따라서, 많은 량의 데이터를 모두 프로그램하는 것은 고 병렬도로 기록하는 것으로 간주되는 반면에, 적은 량의 데이터를 모두 프로그램하는 것은 저 병렬도로 간주된다. 페이지보다 적은 병렬도가 사용되는 경우, 메모리 어레이 내 공간은 낭비될 수 있는데, 이 낭비된 공간은 가비지(garbage) 콜렉션이 더욱 자주 수행됨으로써 메모리 시스템의 효율에 악영향을 미친다는 것을 의미한다. 때때로, 작은 량의 데이터가 메모리 시스템에 저장되어야 한다. 이들 작은 기록들을 한 장소에 기록함으로써, 스크래치(scratch) 패드 블록 및 나중에 이들 모두를 고병렬도로 또 다른 장소에 기록함으로써, 메모리 시스템의 효율은 개선될 수 있다.
다수의 데이터 섹터로 이루어지는 페이지의 최소 프로그램 단위를 갖는 메모리 시스템에서, 1페이지 보다 적은 량으로 수신되는 데이터를 저장하는 방법이 개시된다. 스크래치 패드 블록으로서 지정된 블록은 완전한 페이지가 플래시 메모리 어레이에 기록될 수 있을 때까지 수신된 섹터들을 저장하도록 사용된다. 제1 섹터는 스크래치 패드 블록의 제1 페이지에 저장된다. 다음에 수신된 섹터들은 스크래치 패드 블록의 부가적인 페이지들에 저장될 수 있다. 개별적으로 수신된 섹터들 또는 섹터들의 그룹들은 이들이 수신될 때 스크래치 패드 블록의 새로운 페이지에 저장된다. 스크래치 패드 블록 내의 다른 페이지들로부터 사전 저장된 섹터들은 새로운 데이터와 함께 최근 페이지에 복제될 수 있다. 따라서, 데이터 섹터들은 스크래치 패드 블록의 페이지에 새로운 전체 데이터 페이지보다 적은 한 스크래치 패드 블록에 누적된다. 섹터들은 블록을 위하여 최대 이용가능한 병렬도보다 낮은 병렬도로 스크래치 패드 블록에 기록된다. 섹터들은 스크래치 패드 브록에 저장되는 동안 갱신될 수 있다. 프로그래밍을 위하여 이용될 수 있는 전체 데이터 페이지가 되는 새로운 데이터 섹터가 수신될 때, 새로운 섹터 및 스크래치 패드 블록에 사전 저장되는 섹터들은 모두 메모리 어레이의 또 다른 블록내 동일한 페이지에 프로그램될 수 있다. 이 페이지는 데이터로 완전히 파퓨레이트(populated)되고 최대 이용가능한 병렬도로 기록된다. 그 후, 스크래치 패드 블록에 저장되는 데이터는 쓸모없는 것으로서 표시될 수 있고 편리한 시간에 소거될 수 있다. 따라서, 플래시 메모리 내 공간은 더욱 효율적으로 사용되고 가비지 콜렉션 동작들의 빈도는 감소된다.
다중-레벨 셀들을 갖는 메모리들에서, 스크래치 패드 블록은 활성 블록에 또한 기록되는 데이터 페이지를 저장할 수 있다. 저장된 페이지는 또 다른 데이터 페이지가 수신될 때까지 스크래치 패드 블록에 유지됨으로써, 2개의 데이터 페이지들이 모두 활성 블록내 자신들의 수신지로 기록될 수 있다. 이들은 고 병렬도를 이용하여 그리고 이들이 별도로 기록되는 경우보다 데이터가 파손될 위험을 더 낯추면서 상부 및 하부 페이지로서 함께 기록될 수 있다. 스크래치 패드 블록은 또한 관련된 상부 페이지의 프로그램동안 사전 프로그램된 하부 페이지의 복제를 유지하도록 사용됨으로써, 전력 손실이 있는 경우 하부 페이지의 데이터는 스크래치 패드 블록으로부터 복구될 수 있다.
스크래치 패드 블록은 또 다른 장소에 기록될 데이터를 일시적으로 저장시킨다. 데이터는 블록의 데이터 섹터를 갱신하는 동안 스크래치 패드 블록에 저장될 수 있다. 블록 내 페이지가 상이한 파일들로부터 데이터 섹터들을 포함하는 경우, 이 페이지는 어느 한 블록이 갱신될 때 갱신된다. 이는 종래의 방법들을 이용하여 2개의 파일들로부터 갱신된 데이터를 저장하기 위하여 하나 이상의 블록을 필요로 할 수 있는데, 그 이유는 다중-파일 페이지의 2개의 복제들이 필요로될 수 있기 때문이다. 스크래치 패드 블록을 이용하면 페이지의 나머지(다른 파일로부터)가 이용될 수 있을 때까지 하나의 파일로부터의 페이지의 파트를 저장한다. 그 후, 완전 갱신된 페이지가 최대 병렬도를 이용하여 자신의 수신지로 프로그램된다.
스크래치 패드 블록은 무관련 데이터 섹터들을 포함할 수 있다. 호스트 데이터 섹터들 및 제어 데이터 섹터들 둘 다는 스크래치 패드 블록에 저장될 수 있다. 호스트 데이터 섹터들 및 제어 데이터 섹터들은 스크래치 패드 블록 내 동일한 페이지에 저장될 수 있다. 2개의 상이한 파일들로부터 또는 동일한 파일의 논리적으로 먼 부분들로부터의 섹터들은 스크래치 패드 블록의 동일한 페이지에 저장될 수 있다. 이는 최대 병렬도로 스크래치 패드 블록의 프로그래밍을 허용함으로써, 데이터가 수신될 때 고속을 유지하게 한다. 데이터가 저속으로 수신되는 경우, 페이지 내 부가적인 공간은 제어 데이터를 포함하는 섹터들에 의해 점유될 수 있다. 이는 제어 데이터 구조들을 덜 빈번하게 갱신시킴으로써, 가비지 콜렉션의 빈도를 감소시킨다.
스크래치 패드는 마킹 섹터에 의해 식별되어, 제어기가 이를 손십게 식별하도록 한다. 스크래치 패드 블록에 저장된 데이터의 인덱스는 그 자체가 스크래치 패드 블록에 저장되는 인덱스 섹터에 유지될 수 있다. 새로운 섹터들이 스크래치 패드 블록에 저장될 때, 인덱스 섹터는 구 인덱스 섹터를 새로운 인덱스 섹터로 대체함으로써 갱신된다. 유사하게, 스크래치 패드 블록 내 섹터들이 다른 장소들로 복제될 때, 인덱스 섹터는 스크래치 패드 블록이 쓸모 없다는(obsolete) 것을 나타내기 위하여 갱신될 수 있다.
도1A 및 도1B는 함께 동작하는 비휘발성 메모리 및 호스트 시스템 각각의 블록도.
도2는 도1A의 메모리 어레이의 제1 예 구성을 도시한 도면.
도3은 도1A의 메모리 어레이 내에 저장된 바와 같은 오버헤드 데이터를 갖는 예의 호스트 데이터 섹터를 도시한 도면.
도4는 도1A의 메모리 어레이의 제2 예의 구성을 도시한 도면.
도5는 도1A의 메모리 어레이의 제3 예의 구성을 도시한 도면.
도6은 도1A의 메모리 어레이의 제3 예의 구성의 확장을 도시한 도면.
도7은 하나의 특정 구성에서 도1A의 어레이의 메모리 셀들의 그룹의 회로도.
도9는 도1A의 메모리 어레이와 같은 메모리 어레이의 블록에 데이터 섹터들의 대안적인 저장을 도시한 도면.
도10A는 가비지 콜렉션 동작 동안 또 다른 블록으로 복제한 후 도8 또는 9의 데이터 섹터들을 도시한 도면.
도10B는 제2 제2 가비지 콜렉션 동작 동안 또 다른 블록에 복제한 후 도10A의 데이터 섹터들을 도시한 도면.
도10C는 더 많은 데이터 섹터들이 수신된 후 도10B의 블록을 도시한 도면.
도11A는 도10A 및 도10B의 데이터 섹터들을 저장하기 위하여 2개의 소거 블록들, 활성 블록 및 스크래치 패드 블록을 이용하는 대안적인 저장 배열을 도시한 도면.
도11B는 도10A 및 도10B의 데이터 섹터들을 저장하기 위하여 2개의 메타블록들, 활성 블록 및 스크래치 패드 블록을 이용하는 대안적인 저장 배열을 도시한 도면.
도12A는 가비지 콜렉션 동작을 트리거함이 없이 저장되는 동안 데이터 섹터들이 갱신될 수 있도록 데이터 섹터들을 저장하도록 사용되는 2개의 블록들, 활성 블록 및 스크래치 패드 블록을 도시한 도면.
도12B는 가비지 콜렉션을 트리거함이 없이 저장되는 동안 페이지의 모든 섹터들이 갱신되도록 하는 도12A의 시스템에 대안적인 저장 시스템을 도시한 도면.
도13은 다중-레벨 셀에 2개의 데이터 비트들을 저장하도록 사용되는 4개의 임계 전압 범위들을 도시한 도면.
도14는 활성 블록의 하부 페이지의 카피를 스크래치 패드 블록이 유지하는 경우 다중-레벨 셀들, 활성 블록 및 스크래치 패드 블록의 2개의 블록들을 도시한 도면.
도15는 메모리 어레이 내 공간의 하나 이상의 블록을 필요로 하는 2개의 파일들이 갱신될 때 데이터 섹터들의 다음 저장 및 블록에 저장된 2개의 파일들로부터의 데이터 섹터들을 도시한 도면.
도16은 스트래치 패드 블록들이 활성 블록에 복제되기 전 이 스크래치 패드 블록들이 일부 섹터들을 저장하는 경우 도15의 데이터 섹터들을 갱신하는 대안적인 시스템을 도시한 도면.
도17은 동일한 페이지의 무관련 데이터의 스크래치 패드 블록 저장 섹터들 및 상이한 장소들로의 이 데이터의 다음 복제를 도시한 도면.
도18은 다중 갱신들을 겪는 무관련 데이터의 스크래치 패드 블록 저장 섹터들을 도시한 도면.
도19는 마킹 섹터에 의해 식별되는 스크래치 패드 블록을 도시한 도면.
도20은 섹터들의 그룹 및 인덱스 섹터를 저장하는 도19의 스크래치 패드 블록을 도시한 도면.
도21은 섹터들의 제2 그룹 및 제1 인덱스 섹터를 대체하는 제2 인덱스 섹터를 저장하는 도20의 스크래치 패드 블록을 도시한 도면.
도22는 섹터들의 제3 그룹 및 제2 인덱스 섹터를 대체하는 제3 인덱스 섹터를 저장하는 도21의 스크래치 패드 블록을 도시한 도면.
도23은 그룹이 또 다른 블록으로 복제될 때 제3 인덱스 섹터를 대체하는 제4 인덱스 섹터를 갖는 도22의 스크래치 패드 블록을 도시한 도면.
메모리 아키텍쳐들 및 이들의 동작
우선 도1A를 참조하면, 플래시 메모리는 메모리 셀 어레이 및 제어기를 포함한다. 도시된 예에서, 2개의 집적 회로 장치들(칩들)(11 및 13)은 메모리 셀들의 어레이(15) 및 각종 논리 회로들(17)을 포함한다. 논리 회로들(17)은 데이터, 명령, 및 상태 회로들을 통해서 별도의 칩 상의 제어기(19)와 인터페이스하고 또한 어드레싱, 데이터 전달 및 감지 및 다른 서포트를 어레이(13)에 제공한다. 다수의 메모리 어레이 칩들은 제공된 저장 용량에 따라서 하나서부터 많은 개수까지 있을 수 있다. 제어기 및 부분 또는 전체 어레이는 대안적으로 단일 집적 회로 칩상으로 결합될 수 있지만 이는 현재 경제적인 대안이 아니다.
전형적인 제어기(19)는 마이크로프로세서(21), 펌웨어를 주로 저장하기 위한 판독 전용 메모리(ROM)(23), 및 메모리 칩들(11 및 13)에 기록되거나 이로부터 판독되는 사용자 데이터를 주로 일시적으로 저장하기 위한 버퍼 메모리(RAM)(25)를 포함한다. 회로들(27)은 메모리 칩(들)과 인터페이스하고 회로들(29)은 커넥션들(31)을 통해서 호스트와 인터페이스한다. 이 예에서, 데이터의 무결성은 코드를 계산하는데 전용되는 회로들(33)로 ECC를 계산함으로써 결정된다. 사용자 데이터는저장을 위하여 호스트로부터 플래시 메모리 어레이로 전달되는데, 이 회로는 데이터로부터 ECC를 계산하고 코드는 메모리에 저장된다. 사용자 데이터가 나중에 메모리로부터 판독될 때, 이들은 동일한 알고리즘에 의해 ECC를 계산하는 회로(33)를 다시 통과하고 이 코드를 계산되고 데이터가 저장된 것과 비교한다. 이들이 비교되면, 데이터의 무결성이 확인된다. 이들이 상이하면, 이용되는 특정 ECC 알고리즘에 따라서, 이들 에러 비트들은 알고리즘에 의해 지지되는 수까지 식별되고 정정될 수 있다.
도1A의 메모리의 커넥션들(31)은 호스트 시스템의 커넥션들(31')과 메이팅되 며, 이의 예는 도1B에 제공된다. 도1A의 호스트 및 메모리 간의 데이터 전달은 인터페이스 회로(35)를 통해서 된다. 전형적인 호스트는 또한 마이크로프로세서(37), 펌웨어 코드를 저장하기 위한 ROM(39) 및 RAM(41)을 포함한다. 다른 회로들 및 서브시스템들(43)은 종종 특정 호스트 시스템에 따라서 고용량 자기 데이터 저장 디스크 드라이브, 키보드용 인터페이스 회로들, 모니터 등을 포함한다. 이와 같은 호스트들의 일부 예들은 데스크 탑 컴퓨터들, 랩탑 컴퓨터들, 휴대용 컴퓨터들, 팜탑컴퓨터들, 개인 휴대 정보 단말기들(PDAs), MP3 및 다른 오디오 플레이어들, 디지털 카메라들, 비디오 카메라들, 전자 게임기들, 무선 및 유선 전화 장치들, 응답기들, 음성 기록기들, 네트워크 라우터들 기타등등을 포함한다.
도1A의 메모리는 도1B의 호스트와 제거가능하게 연결될 수 있는 형태의 모든 메모리 회로 장치들 및 제어기를 포함하는 소형 인클로우즈된 카드로서 구현될 수 있다. 즉, 메이팅 커넥션들(31 및 31')은 카드가 분리되도록 하고 또 다른 호스트로 이동되도록 하거나 또 다른 카드를 호스트에 연결함으로써 대체되도록 한다. 대안적으로, 메모리 어레이 장치들은 전기적으로 그리고 기계적으로 제어기 및 커넥션들(31)을 포함하는 카드와 연결될 수 있는 별도의 카드에 인클로우즈될 수 있다. 부가적인 대안으로서, 도1A의 메모리는 도1B의 호스트 내에 임베디드될 수 있는데, 여기서 커넥션들(31 및 31')은 영구적으로 이루어진다. 이 경우에, 메모리는 통상적으로 다른 구성요소들과 함께 호스트의 인클로우져 내에 포함된다.
도2는 메모리 어레이의 일부를 도시하는데, 여기서 메모리 셀들은 소거 블록들로 그룹화되며, 각 소거 블록 내의 셀들은 단일 소거 동장의 부분으로 통상적으 로 동시에 모두 소거될 수 있다. 소거 블록은 이 유형의 메모리에서 최소 소거 단위이다.
도2의 개별적인 메모리 셀 소거 블록들의 크기는 가변될 수 있지만, 한가지 상업적으로 실시되는 형태는 개별적인 소거 블록의 단일 데이터 섹터를 포함한다. 이와 같은 데이터 섹터의 콘텐트들은 도3에 도시되어 있다. 사용자 데이터(51)는 전형적으로 512 바이트들이다. 사용자 데이터 이외에도 사용자 데이터로부터 계산되는 ECC(53)를 포함하는 오버헤드 데이터, 섹터가 프로그램되는 소거 블록 및/또는 섹터 데이터에 관한 파라미터들(55) 및 파리미터들(55)로부터 계산되는 ECC(57) 및 포함될 수 있는 임의의 다른 오버헤드 데이터가 있다.
하나 이상의 플래그들은 또한 상태 또는 상태들을 나타내는 파라미터들(55)에 포함될 수 있다. 소거 블록을 프로그래밍 및/또는 소거하기 위하여 사용될 전압 레벨들의 표시들은 또한 파라미터들(55) 내에 저장될 수 있는데, 이들 전압들은 소거 블록 및 다른 팩터들 변화에 의해 겪는 사이클들의 수로서 갱신된다. 파라미터들(55)의 다른 예들은 소거 블록 내 임의의 결함 셀들의 식별, 이 물리적 소거 블록으로 맵핑되는 소거 블록의 논리적 어드레스 및 1차 소거 블록이 결함있는 경우에 임의의 대체 소거 블록의 어드레스를 포함한다. 임의의 메모리 시스템에 사용되는 파라미터들(5)의 특정 조합은 설계에 따라서 가변될 것이다. 또한, 오버헤드 데이터의 일부 또는 전부는 사용자 데이터를 포함하거나 오버헤드 데이터가 속하는 소거 블록에서가 아니라 이와 같은 기능에 전용되는 소거 블록들에 저장될 수 있다.
도2의 단일 데이터 섹터 소거 블록과 다른 도4의 다중-섹터 소거 블록이 있다. 여전히 최소 단위인 예의 소거 블록(59)은 4개의 페이지들 0-3을 포함하는데, 이 페이지 각각은 최소 프로그래밍 단위이다. 하나 이상의 호스트 데이터 섹터들은 통상적으로 도3의 데이터 섹터 형태일 수 있고 섹터의 데이터로부터 계산되는 적어도 ECC를 포함하는 오버헤드 데이터와 함께 각 페이지에 저장된다.
전체 블록의 데이터를 재기록하는 것은 통상적으로 새로운 데이터를 소거 블록 풀의 블록에 프로그램하는 것을 포함하며, 원래 블록은 소거되고 소거 풀에 배치된다. 모든 블록 페이지들보다 적은 데이터가 갱신될 때, 갱신된 데이터는 전형적으로 소거된 블록 풀로부터 블록의 페이지에 저장되고 남아있는 불면의 페이지들 내의 데이터는 원래 블록으로부터 새로운 블록으로 복제된다. 그 후, 원래 블록은 소거된다. 이 대형 블록 관리 기술의 변화들은 원래 블록으로부터 데이터를 이동함이 없이 또는 이를 소거함이 없이 갱신된 데이터를 또 다른 블록의 페이지로 기록하는 것을 포함한다. 이는 동일한 논리적 어드레스를 갖는 다수의 페이지들을 발생시킨다. 가장 최근의 데이터 페이지는 섹터내 필드 또는 페이지 오버헤드 데이터로서 기록되는 프로그래밍 시간과 같은 어떤 편리한 기술에 의해 식별된다.
부가적인 다중-섹터 블록 배열이 도5에 도시된다. 여기서, 총 메모리 셀 어레이는 물리적으로 2개 이상의 플레인들로 분리되는데, 4개의 플레인들 0-3이 도시되어 있다. 각 플레인은 다른 플레인들과 거의 관계없이 동작하기 위하여 자신의 데이터 레지스터들, 감지 증폭기들, 어드레싱 디코더들 등을 갖는 메모리 셀들의 서브-어레이이다. 모든 플레인들은 단일 집적 회로 장치 또는 다수의 장치들 상에 제공될 수 있으며, 예는 하나 이상의 별개의 집적 회로 장치들로부터 각 플레인을 형성하기 위한 것이다. 도5의 이 예 시스템의 각 블록은 16 페이지들 (P0-P15)를 포함하며, 각 페이지는 하나, 2개 이상의 호스트 데이터 섹터들 및 일부 오버헤드 데이터의 용량을 갖는다.
그러나, 또 다른 메모리 셀 배열이 도6에 도시된다. 각 플레인은 셀들의 많은 수의 소거 블록들을 포함한다. 동작 병렬도를 증가시키기 위하여, 상이한 플레인들 내의 소거 블록들은 논리적으로 링크되어 메타블록들을 형성한다. 하나의 이와 같은 메타블록은 플레인 0, 플레인 1의 소거 블록1, 플레인 2의 소거 블록1, 및 플레인 3의 소거 블록 2으로 형성되는 바와 같이 도6에 도시된다. 각 메타블록은 논리적으로 어드레스될 수 있고 메모리 제어기는 개별적인 메타블록들을 형성하는 소거 블록들의 트랙을 할당하고 유지한다. 호스트 시스템은 바람직하게는 개별적인 메타블록들의 용량과 동일한 데이터의 단위로 메모리 시스템과 인터페이스한다. 예를 들어 도5의 이와 같은 논리적 데이터 블록은 메타블록을 구성하는 블록들의 물리적 블록 수들(PNBs)으로 제어기에 의해 맵핑되는 논리적 블록 어드레스들(LBA)에 의해 식별된다. 메타블록의 모든 소거 블록들은 모두 소거되고 각 소거 블록으로부터의 페이지들은 바람직하게는 프로그램되고 동시에 판독된다. 메타블록은 소거 블록들이 이 방식으로 링크되는 시스템에서 소거 단위로 간주될 수 있다. 메타블록 아키텍쳐를 갖는 일부 메모리 어레이들에서, 페이지들은 단지 메타블록의 다른 페이지들과 병렬로 프로그램될 수 있다. 이들 메모리 어레이들에서, 메타페이지는 메타블록의 각 플레인으로부터 페이지를 구성하는 메타블록의 최소 프로그래밍 단위 이다.
도2-6과 관련하여 상술된 메모리들을 구현하기 위하여 사용될 수 있는 많은 다양한 메모리 어레이 아키텍쳐, 구성들 및 특정 셀 구조들이 존재한다. NAND 형의 메모리 어레이의 하나의 소거 블록이 도7에 도시된다. 직렬 연결된 메모리 셀들의 많은 수의 칼럼 지향된 스트링들은 전압(VSS)의 공통 소스(65) 및 어드레스 디코더들, 드라이버들, 판독 감지 증폭기들 등을 포함하는 회로들(67)과 차례로 연결되는 비트라인들 (BL0-BLN) 중 하나 사이에 연결된다. 특히, 하나의 이와 같은 스트링들은 스트링들의 대향측에서 선택 트랜지스터들(77 및 790) 간에 직렬로 연결되는 전하 저장 트랜지스터들(70, 71, ..., 72 및 74)을 포함한다. 이 예에서, 각 스트링은 16개의 저장 트랜지스터들을 포함하지만 다른 수들이 가능하다. 워드 라인들(WL0-WL15)은 각 스트링의 하나의 저장 트랜지스터를 가로질러 연장되고 워드 라인들의 전압 소스 드라이버들 및 어드레스 디코더들을 포함하는 회로들(81)에 연결된다. 라인들(83 및 84) 상의 전압들은 소거 블록 내의 모든 스트링들 모두를 자신들의 선택 트랜지스터들을 통해서 전압원(65) 및/또는 비트 라인들(BL0-BLN)중 어느 하나에 연결시키는 제어를 한다. 데이터 및 어드레스들은 메모리 제어기로부터 나온다.
소거 블록의 전하 저장 트랜지스터들(메모리 셀들)의 각 열(row)은 함께 프로그램되고 판독되는 페이지를 형성한다. 적절한 전압은 나머지 워드 라인들에 인가되는 전압이 자신들의 각 저장 트랜지스터들을 도전성이되도록 선택되는 동안 데 이터를 프로그램 또는 판독하기 위한 이와 같은 페이지의 워드 라인(WL)에 인가된다. 저장 트랜지스터들의 하나의 열(페이지)을 프로그램 또는 판독하는 중에, 선택되지 않은 열들 상에 사전 저장된 전하 레벨들은 모든 스트링들 양단에 그리고 자신들의 워드 라인들에 인가되는 전압때문에 외란될 수 있다. 이는 열 내의 다른 셀들이 프로그래밍된 후 특정 열의 셀들의 프로그래밍을 방지할 수 있다. 다중 상태 플래시 메모리들은 특히 외란에 민감하다. 논리 상태들의 증가된 수는 각 상태들에 대한 협 임계 전압 범위가 됨으로써, 전하 레벨의 작은 변화들이 논리 상태를 변화를 초래할 수 있다. 데이터 저장 밀도가 셀에서 증가된 논리 상태들의 수를 이용함으로써 증가됨에 따라서 외란에 대한 감도 또한 증가된다. 따라서, 프로그램될 셀 내의 데이터를 파손시킴이 없이 열이 프로그램되기 때문에 다른 셀들 다음의 열의 셀들로의 데이터를 프로그램할 수 없다. 따라서, 인접 셀들의 다음 프로그래밍으로부터의 외란은 페이지 크기를 규정할 수 있다. 열의 셀이 동일한 열의 다른 셀들을 프로그램한 다음에 프로그램될 수 없다면, 열은 최소 프로그래밍 단위를 규정한다. 따라서, 열의 셀들은 한 데이터 페이지를 포함할 수 있다. 이와 같은 메모리 어레이서, 열 내 셀들의 그룹이 프로그램되면, 이 열은 열 내 일부 셀들이 데이터를 포함하지 않는 경우 조차도 프로그램된 것으로 간주된다. 메모리 어레이에서 다음 프로그램될 수 없는 빈 셀들을 갖는 것이 효율적이지 않다.
프로그램된 페이지의 빈 셀들은 한번에 메모리 시스템에 의해 수신되는 작은 섹터들의 수로부터 발생될 수 있다. 예를 들어, 단일 섹터는 메모리 시스템으로의 호스트에 의해 전송될 수 있다. 이 섹터는 플래시 메모리 어레이의 페이지에 저장 된다. 이 섹터는 이 페이지로의 다음 기록을 방지한다. 페이지가 다수의 섹터들을 유지하는 메모리 시스템에서, 이는 비효율적일 수 있다. 예를 들어, 페이지가 4개의 데이터 섹터들을 포함하는 경우, 3개의 데이터 섹터들을 유지할 수 있는 메모리 셀의 일부는 단일 섹터가 페이지에 기록될 때 빈채로 있게 된다. 페이지 크기가 증가됨에 따라서, 이와 같은 부분적으로 채워진 페이지들로부터의 낭비된 공간이 증가된다. 메타페이지들은 많은 수의 섹터들을 포함함으로써, 메타블록들을 이용하는 메모리 어레이들에서 특히 저장이 비효율적으로 될 수 있다. 이 문제는 2개이상의 섹터들이 수신되는 경우와 유사하지만 수신된 섹터들의 수가 페이지 내 섹터들의 수보다 적게 된다. 이와 같은 부분적인 페이지들은 전체 데이터 페이지가 수신될 때까지 스크래치 패드 블록에 저장될 수 있다.
데이터의 부분적으로 채워진 페이지들을 기록한 다음에, 저장된 데이터의 통합은 부분적으로 채워진 페이지들로부터 채워진 페이지들로 결합시키도록 수행될 수 있다. 이는 주기적으로 수행된 가비지 콜렉션의 부분으로서 행해질 수 있다. 데이터의 이와 같은 통합은 부분적으로 채워진 페이지들로부터 상이한 소거 블록에 있는 전체 페이지들로 데이터를 복제한다. 그 후, 부분적으로 채워진 페이지들을 유지하는 소거 블록들은 쓸모없는 것으로서 마킹됨으로써, 이들은 소거되고 재사용될 수 있다. 이와 같은 동작은 다른 기능들에 사용될 수 있는 시스템 자원들을 취할 수 있다.
메모리로의 단일 섹터 기록들의 예
도8은 페이지가 4개의 데이터 섹터들로 이루어진 메모리 시스템에서 메모리 어레이의 소거 블록, 즉 지정된 활성 블록(800)을 도시한다. 페이지들 0-5는 수평 방향으로 각각 연장되는 것으로 도시된다. 각 페이지는 섹터 0, 섹터 1, 섹터 2, 및 섹터 3으로서 지정된 4개의 데이터 섹터들을 포함할 수 있다. 호스트는 단일 데이터 섹터들을 메모리 시스템으로 전송하는데, 이는 활성 블록(800)에 저장된다.
섹터 X는 페이지의 섹터0으로서 수신되고 저장된다. 이는 페이지 0의 다음 프로그래밍을 방지한다. 따라서, 페이지 0의 섹터들 1, 2, 및 3DMS 프로그램되지 않고 빈(소거된) 체로 유지된다. 페이지 0이 프로그램된 후, 섹터 X+1이 수신된다. 섹터 X+1은 페이지 1의 섹터 0으로서 저장된다. 페이지 1의 섹터들 1, 2 및 3은 빈 체로 유지된다. 섹터 X+1이 프로그램된 후, 섹터 X+2가 수신된다. 섹터 X+2는 페이지 2의 섹터 0으로서 저장된다. 페이지 2의 섹터들 1, 2 및 3은 빈 체로 유지된다. 섹터 X+2가 프로그램된 후, 섹터 X+3이 수신된다. 섹터 X+3은 페이지 3의 섹터 0으로서 저장된다. 페이지 3의 섹터들 1, 2 및 3은 빈 체로 유지된다.
도9는 소거 블록, 즉 지정된 활성 블록(900)에 섹터들을 저장하는 대안적인 방법을 도시한다. 여기서, 페이지 당 단지 하나의 섹터를 저장하는 대신에, 사전 저장된 섹터들은 더욱 최근에 수신된 섹터가 저장되는 동일한 소거 블록에서 새로운 페이지로 복제된다. 섹터 X는 전과 같이 페이지 0의 섹터 0로서 저장된다. 그 후, 섹터 X+1은 페이지 0으로부터 페이지 1의 섹터 0으로 복제되는 섹터 X가 페이지 1의 섹터 1로서 수신되어 저장된다. 따라서, 섹터 X 및 섹터 X+1 둘 다는 페이지 1에 저장된다. 다음에, 섹터 X+2는 페이지 2의 섹터 2로서 수신되고 저장된다. 섹터 X는 페이지 2의 섹터 0으로서 저장되고 섹터 X+1은 페이지 2의 섹터 1로서 저 장된다. 따라서, 섹터들 X, X+1, 및 X+2는 페이지에 모두 저장된다. 다음에, 섹터 X+3은 페이지 3의 섹터3로서 수신되고 저장된다. 섹터 X는 섹터0으로서 저장되며, 섹터 X+1은 섹터 1로서 저장되고 섹터 X+2는 페이지 3의 섹터 2로서 저장된다. 따라서, 4개의 데이터 섹터들은 페이지 3에 저장됨으로써, 페이지 3이 데이터로 완전히 파퓨레이트되도록 한다.
도8 또는 도9에 도시된 섹터들의 저장 다음에, 데이터는 통합될 수 있다. 도8 또는 도9 중 어느 하나의 섹터 X, X+1, X+2, 및 X+3은 새로운 소거 블록의 단일 페이지로 복제될 수 있다. 이는 편리할 때 한번에 가비지 콜렉션의 부분으로서 행해질 수 있다. 도10A는 지정된 활성 블록(1000)의 페이지 O에 저장된 섹터들 X, X+1, X+2 및 X+3을 도시한다. 소거 블록(1000)의 페이지 0에는 데이터가 충전된다. 활성 블록(110)의 페이지 0DMS 섹터들 X, X+1, X+2, 및 X+3으로 프로그램될 때, 섹터들 X, X+1, X+2 및 X+3은 복제되는 소거 블록으로부터 소거될 수 있다. 활성 블록들(800, 900)은 소거되고 이들의 콘텐트가 가비지 콜렉션 동안 통합될 때 새로운 데이터의 저장을 위하여 이용될 수 있다.
페이지 0의 프로그래밍 다음에, 섹터 X+4는 활성 블록(1000)의 페이지 1의 섹터0로서 수신되고 저장된다. 그 후, 섹터들 X+5, X+6, 및 X+7은 페이지2 , 3 및 4 각각에 개별적으로 수신되고 저장된다. 섹터들의 통합은 섹터들 X+4, X+5, X+6, 및 X+7을 단일 페이지로 통합하기 위하여 다시 필요로 될 수 있다. 이와 같은 섹터들의 통합은 시간이 걸리는데, 이 시간 동안 호스트 데이터가 기록될 수 없다. 또 다른 소거 블록으로의 데이터의 제2 통합 후, 이들이 복제되는 소거 블록(1000)은 쓸모 없는 것으로서 마킹되고 다음에 소거될 수 있다.
도10B는 제2 가비지 콜렉션 동작이 사전 활성 블록(1000)으로부터 데이터를 재위치시킨 후의 활성 블록(1010)을 도시한다. 섹터들 X+4 내지 X+7은 활성 블록(1010)의 단일 페이지(페이지 1)로 통합된다. 다음에, 더 많은 섹터들이 수신될 수 있고 활성 블록(1010)에 저장될 수 있다. 이와 같은 섹터들이 단일 섹터들의 형태로 수신되면, 단일 섹터는 전과 같이 페이지에 저장될 수 있다.
도10C는 페이지들 2 내지 5에 저장된 부가적인 섹터들 X+8 내지 X+11을 갖는 활성 블록(1010)을 도시한다. 또 다른 가비지 콜렉션 동작은 이때 섹터들 X+8 내지 X+11을 통합하는데 필요로 될 수 있다. 따라서, 단일 섹터들로서 호스트로부터 수신되는 섹터들을 효율적으로 저장하기 위하여, 이 방법은 하나의 소거 블록으로부터 또 다른 소거 블록으로 데이터를 전달하고 제1 소거 블록을 소거하는 것을 필요로 하는 다수의 가비지 콜렉션 동작들을 이용한다. 소거 블록들이 크면 클수록, 가비지 콜렉션 동작들의 수는 더욱 크게 된다. 메타블록들을 이용하는 메모리 시스템들에서, 소거 블록들의 그룹은 링크되어, 이들은 모두 소거되고 모두 프로그램된다. 데이터는 많은 섹터들을 포함하는 메타페이지들에서 프로그램될 수 있다. 그러므로, 단일 섹터들을 저장하는 것은 필요한 가비지 콜렉션 량 때문에 매우 비효율적으로 된다.
도11A는 데이터를 저장하는 대안적인 방법을 도시한다. 도11A는 메모리 어레이의 2개의 소거 블록들을 도시한다. 활성 블록(1110)은 데이터가 장기간 저장을 위하여 프로그램될 수 있는 소거 블록이다. 스크래치 패드 블록(1120)은 데이터가 단기간 저장을 위하여 프로그램될 수 있는 소거 블록이다. 작은 섹터들의 수가 수신될 때, 이들은 스크래치 패드 블록(1120)에 가장 먼저 저장된다.
섹터들은 데이터 페이지를 채우도록 충분한 섹터들이 수신될 때까지 스크래치 패드 블록(1120)에 지속적으로 저장된다. 그 후, 이들 섹터들은 활성 블록(1110)의 페이지에 복제된다.
섹터 X가 수신되어 이전과 같이 스크래치 패드 블록(1120)에서 페이지 0의 섹터 0으로서 프로그래밍된다. 그 후, 섹터 X+1이 수신되어 페이지 1의 섹터 0으로 복제된 섹터 X와 함께 스크래치 패드 블록(1120)의 페이지 1의 섹터 1로서 저장된다. 그 후, 섹터 X+2가 수신되어 페이지 2의 섹터 0 및 섹터 1로서 각각 저장되는 섹터들 X 및 X+1과 함께 스크래치 패드 블록(1120)의 페이지 2의 섹터 2로서 저장된다. 스크래치 패드 블록(1120)에 섹터 X+2를 저장한 후, 섹터 X+3이 수신된다. 이 지점에서, 섹터들 X, X+1, X+2 및 X+3은 활성 블록(1110)의 페이지 0으로 기록된다. 이들 4개의 섹터들은 전체 데이터 페이지를 형성한다. 따라서, 섹터들 X, X+1, X+2 및 X+3은 활성 블록(1110)의 페이지 0에 효율적으로 저장된다. 그 후, 섹터들 X+4, X+5, X+6 및 X+7이 개별적으로 수신된다. 섹터들 X+4, X+5, X+6 및 X+7은 스크래치 패드 블록(1120)의 페이지들 2, 4 및 5에 저장되고, 섹터 X+7이 수신될 때 활성 블록(1110)의 페이지 1의 섹터들 0, 1 및 2에 복제된다. 섹터 X+7은 활성 블록(1110)의 페이지 1의 섹터 3에 직접 프로그래밍된다. 이 지점에서, 스크래치 패드 블록(1120)은 데이터를 저장하는데 이용 가능한 페이지들을 가지지 않으며, 소거 준비가 된(쓸모없는) 것으로 지정될 수 있다. 새로운 소거 블록이 수신될 다음 섹터, 또는 섹터들의 그룹을 위한 스크래치 패드 블록으로서 지정될 수 있다. 이예가 단일 섹터들이 수신되는 것을 나타내지만, 이 방법은 또한 섹터들의 그룹들에 사용될 수 있고, 여기서 섹터들의 그룹은 페이지 내의 섹터들의 수보다 더 적은 섹터들을 갖는다. 또한, 상기 예들이 스크래치 패드 블록으로부터 활성 블록으로 데이터를 최대 병렬도(maximum parallelism)으로 기록하는 것을 나타내지만, 이와같은 기록은 최대가 아닌 병렬도로 행해질 수 있고, 효율 잇점을 제공할 수 있다. 따라서, 섹터들이 하나의 병렬도로 스크래치 패드 블록에 기록되고 나서, 더 높은 병렬도로 또 다른 블록에 기록되어, 데이터는 더 조밀하게 팩킹되고 필요한 가비지 콜렉션이 덜 빈번해진다.
스크래치 패드 블록은 또한 메타블록들을 사용하는 메모리 어레이들에서 사용될 수 있다. 예를 들어, 도11B는 2개의 메타블록들, 활성 블록(1130) 및 스크래치 패드 블록(1140)을 도시한다. 활성 블록(1130) 및 스크래치 패드 블록(1140) 둘 다는 플레인들 0-3으로 표시되는 4개의 플레인들을 갖는다. 각 플레인은 한 섹터 넓이여서, 4개의섹터들은 블록(1130 또는 1140)의 메타페이지에 저장된다. 블록들 둘 다는 메타페이지 0-5로 표시되는 6개의 베타페이지를 갖는다. 데이터를 효율적으로 저장하는 기술은 소거 블록들에 대해 상술된 것과 동일하다. 섹터들은 전체 데이터 메타페이지가 이용 가능할 때까지 스크래치 패드 블록(1140)에 축적되며, 이 시간에 전체 메타페이지가 활성 블록(1130)으로 프로그래밍된다. 예를 들어, 섹터 X+3이 수신될 때, 전체 메타페이지(섹터들 X, X+1, X+2 및 X+3)가 활성 블록(1130)의 메타페이지 0에 프로그래밍된다. 메타페이지들이 많은 플레인들을 가질 수 있고, 플레인들이 여러 페이지들의 넓이일 수 있기 때문에 메타페이지는 많은 수의 섹터들을 가질 수 있다. 상술된 기술은 그렇지 않았다면 낭비되는 메모리 어레이 내의 많은 공간 량으로 인해 이와 같은 큰 메타페이지들에 특히 유용하다. 도11A 및 11B에 대하여 도시된 바와 같이, 소거 블록 구조를 사용하는 예들에 대해 설명되는 본 발명의 양상은 또한 메타블록 구조에 적용될 수 있고, 그 역도 또한 가능하다. 용어 "블록"은 메모리 어레이의 구성에 따라 소거 블록 또는 메타블록 중 하나를 나타낼 수 있다. 어느 경우든, 블록은 그 구성에서 사용되는 소거 단위이다. 유사하게, 용어 "페이지"는 단일 소거 블록 내의 페이지 또는 메타블록의 메타페이지 중 하나를 나타낼 수 있다. 어느 경우든, 페이지는 그 구성을 프로그래밍하는 단위이다.
페이지 내의 섹터들의 수 이상을 갖는 섹터들의 그룹이 수신되는 경우에, 섹터들은 먼저 스크래치 패드 블록에 저장됨이 없이 메모리 어레이의 활성 블록에 직접 프로그래밍될 수 있다. 따라서, 전체 데이터 페이지들은 고 병렬도로 활성 블록에 직접 프로그래밍될 수 있는 반면, 부분적인 데이터 페이지들은 활성 블록의 전체-페이지 프로그램의 부분으로서 기록될 수 있을 때까지 더 낮은 병렬도로 스크래치 패드 블록에 프로그래밍된다. 제어기는 특정 섹터 또는 섹터들의 그룹에 대한 수신지를 결정할 수 있다. 섹터들의 그룹을 활성 블록에 기록하는 것이 부분적인-페이지 및 전체-페이지 기록 둘 다를 포함하는 경우에, 전체-페이지들은 활성 블록에 기록될 수 있고, 부분적인 페이지는 스크래치 패드 블록에 기록될 수 있다.
도12A는 호스트로부터의 섹터들이 스크래치 패드 블록에 저장되는 동안 갱신 되는 부가적인 예를 도시한다. 제1 섹터 X0가 수신되어 스크래치 패드 블록(1250)의 페이지 0에 저장된다. 이 예에서 페이지는 4개의 데이터 섹터를 저장한다. 그 후, X1로서 도시된 X0에 대한 대체물이 수신된다. 이 예에서 섹터들은 섹터가 갱신인지를 나타내고, 그러한 경우, 그 버전인 아래첨자와 함께 자신들의 논리적 어드레스에 따라 넘버링된다. 따라서, 섹터 X1은 논리적 어드레스 X를 갖는 섹터이고, 이 섹터의 갱신된 버전이다. 이 섹터는 X0과 동일한 논리적 어드레스를 갖지만 어떤 갱신된 정보를 반영하는 상이한 데이터를 포함할 수 있는 섹터이다. 섹터 X1은 스크래치 패드 블록(1250)의 페이지 1에 기록된다. 제어기는 어느 섹터들이 현재인지 어느 것이 쓸모없는지를 추적한다. 스크래치 패드 블록(1250)에서, 특정한 논리적 어드레스를 갖는 섹터의 가장 최근에 기록된 복제가 현재의 버전이다. 임의의 다른 버전은 쓸모없다. 따라서, X0는 X1이 프로그래밍될 때 쓸모없게 된다. 섹터 X1을 수신한 다음에, 섹터 (X+1)0이 수신된다. 이것은 논리적으로 섹터 X1 다음의 섹터이다. 섹터들 X1 및 (X+1)0 둘 다는 페이지 2에 기록된다. 그 후, 섹터 (X+1)0은 (X+1)1로 교체된다. 이것은 섹터 (X+1)0을 교체하는 섹터 (X+1)0의 갱신된 버전이다. 섹터 (X+1)1는 섹터 X1과 함께 페이지 3으로 기록된다. 그 후, 섹터 (X+2)0이 수신되어 페이지 4로 기록된다. 그 후, 섹터 (X+2)0은 섹터 (X+2)1로 교체되고 섹터들 X1 및 (X+1)1 함께 페이지 5에 기록된다. 그 후, 섹터 (X+3)0이 수신된다. 따라서, 데이터 페이지(섹터들 X1, (X+1)1, (X+2)1, 및 (X+3)0)가 이용 가능하다. 섹터들 X1, (X+1)1, (X+2)1, 및 (X+3)0은 활성 블록(1252)으로서 지정된 블록으로 기록된다. 섹터들 X1, (X+1)1, (X+2)1 및 (X+3)0은 전체 페이지 기록의 병렬도로 활성 블록(12522)에 기록된다. 이것이 이 경우에 최대 가능 병렬도이다. 따라서, 섹터들 X1, (X+1)1, (X+2)1, 및 (X+3)0이 저 병렬도로 스크래치 패드 블록(1250)으로 기록될지라도, 상기 섹터들은 그 후에 고 병렬도로 활성 블록(1252)에 기록된다. 이것은 섹터들 X1, (X+1)1, (X+2)1, 및 (X+3)0이 활성 블록에 더 효율적으로 저장된다는 것을 의미한다. 더 효율적인 저장에 의해 가비지 콜렉션이 덜 빈번하게 필요하게 되므로, 성능을 개선시킨다.
대안적인 예가 도12B에서 제공된다. 이 예는 도12A에 도시된 것과 유사하지만, 여기서 섹터 (X+3)0은 활성 블록(1252)으로 복제되기 전 스크래치 패드 블록(1250)에 저장된다. 이것은 섹터 (X+3)0이 활성 블록(1252)으로 기록되기 전에 갱신되도록 한다. 섹터 (X+3)0은 섹터 (X+3)1로 교체됨으로써 갱신되고 있는 것으로 도시되어 있다. 완전한 데이터 페이지(섹터들, X1, (X+1)1, (X+2)1, 및 (X+3)1)는 스크래치 패드 블록(1250)에서 수용되어 어떤 트리거링 이벤트까지 갱신될 준비가 된 다. 이 경우에, 트리거링 이벤트가 제공되면, 섹터 (X+4)0이 수신된다. 섹터들, X1, (X+1)1, (X+2)1 및 (X+3)1은 이 지점에서 최대 병렬도로 활성 블록(1252)에 기록된다. 섹터 (X+4)0이 스크래피 패드 블록(1250) 내의 다음의 이용 가능한 페이지에 기록된다.
도12C는 스크래치 패드 블록(1250)을 사용하여 데이터를 갱신하는 또 다른 예를 도시한다. 데이터 섹터들 X0내지 (X+15)0이 원래 블록(1254)에 저장된다. 섹터 (X+6)0과 동일한 논리적 어드레스를 갖는 갱신된 섹터인 섹터(X+6)1를 송신한다. 따라서, 섹터 (X+6)1은 (X+6)0을 교체해야 한다. (X+6)0을 교체하기 위하여. (섹터들 (X+4)0 내지 (X+7)0을 포함하는) 원래 블록(1254)의 페이지 1은 섹터 (X+6)1과 결합되고, 그 결합은 스크래치 패드 블록(1250)의 페이지 0에 기록된다. 이들 섹터들을 결합하는 것은 제어기 ram(25)과 같은 랜덤 액세스 메모리에서 발생하거나, 메모리 어레이에 접속되는 메모리 레지스터들에서 행해질 수 있다. 갱신된 데이터 페이지는 어떤 시간 동안 활성 블록에 기록됨이 없이 스크래치 패드 블록(1250)에서 유지될 수 있다. 그 후의 갱신된 섹터(X+5)1이 호스트로부터 수신되는 경우에, 데이터는 복제된 섹터들 (X+4)0, (X+6)1, 및 (X+7)0과 함께 섹터 (X+5)1을 스크래치 패드 블록(1250)의 또 다른 페이지(이 경우에는, 페이지 1)에 기록함으로써 스크래치 패드 블록(1250)에서 갱신될 수 있다. 스크래치 패드 블록(1250) 내의 데이터 페이지의 다중 갱신들은 이 방식으로 수행될 수 있다. 갱신은 갱신된 데이터 섹터 또는 섹터들을 교체하고 스크래치 패드 블록(1250)의 새로운 페이지에서 변화되지 않은 데이터 섹터들을 복제함으로써 수행된다. 복제된 섹터들은 동일한 플레인 내에서 복제되어 복제가 효율적으로 수행될 수 있다. 그 후, 갱신된 데이터 페이지가 메모리 어레이 내의 활성 블록(1252)에 복제될 수 있다. 혼란한 갱신 블록을 필요로 함이 없이 비-순차적인 갱신들이 이 방식으로 수행될 수 있다. 예를 들어, 갱신된 섹터들 (X+6)1 및 (X+5)1은 상기 예에서 비-순차적으로 수신되지만, 활성 블록(1252)은 순차적이다. 다수의 데이터 페이지들이 이 방식으로 스크래치 패드 블록에서 동시에 수용되고 갱신될 수 있다. 페이지는 상기 페이지가 갱신된다라고 더 이상 예측되지 않을 때 활성 블록으로 복제될 수 있다.
다중-레벨 셀 프로그래밍
어떤 종류들의 메모리들은 플로우팅 게이트 메모리 셀의 임계 전압 범위를 2개의 레벨들로 분할함으로써 메모리 어레이의 각 셀에 1비트 이상의 데이터를 저장할 수 있다. 도13은 이와 같은 다중-레벨 셀(MLC) 메모리들이 상이한 논리적 상태들을 나타내는 다수의 임계 전압들을 제공하도록 프로그래밍될 수 있는 방법을 도시한다. A, B, C 및 D로 라벨링된 4개의 상이한 임계 전압들이 도시되어 있다. 다수의 셀들은 각각의 전압으로 프로그래밍된다. 도13은 수직 축 상에 표현되는 셀들의 수로 셀 상태들의 분포를 나타낸다. 각각의 임계 전압 A, B, C 및 D는 상이한 논리적 상태를 나타낸다. 4개의 상태들은 데이터의 2비트들, 즉, 표시된 바와 같 이, 하부 데이터 페이지로부터의 1비트 및 상부 데이터 페이지로부터의 1비트를 나타낸다. 일부 예들에서, 하부 페이지가 먼저 프로그래밍될 수 있다. 하부 페이지의 프로그래밍 후, 셀은 상태 A 또는 B가 된다. 그 후, 상부 페이지가 프로그래밍되어, 셀이 (상부 비트 = 1인 경우에) 상태들 A 또는 B 중 하나로 머물거나 (상부 비트 = 0인 경우에) 상태들 C 또는 D로 수정될 수 있다. 이들 4개의 상태들 각각이 비교적 좁은 전압 윈도우들을 가지기 때문에, MLC 메모리들은 특히 임계 전압들의 비교적 작은 변화들에도 데이터의 파손을 받기 쉽다. 일부 예들에서, 하부 및 상부페이지 둘 다를 동시에 프로그래밍하는 것이 유용할 수 있다. 이것은 상부 페이지 데이터의 프로그래밍 동안 발생할 수 있는 바와 같은 인접한 셀들의 프로그래밍에 기인하는 셀 내의 데이터의 파손을 감소시키는 것을 도울 수 있다.
도14는 스크래치 패드 블록(1460)이 MLC 메모리들에서 데이터의 파손을 감소시키는데 사용될 수 있는 방법의 예를 도시한다. 도14는 MLC 메모리의 블록들로서 활성 블록(1462) 및 스크래치 패드 블록(1460) 둘 다를 도시한다. 양 블록들의 페이지들이 넘버링되고 "상부" 또는 "하부" 중 하나로서 제시되는데, 이에 따라 임계 전압 상태가 페이지의 데이터 비트들을 저장하는데 사용된다. 이 예에서, 메모리는 우선 섹터들 X 내지 X+3을 수신하여 이들 섹터들을 스크래치 패드 블록(1460)의 하부 페이지 0에 저장한다. 그 후, 메모리는 섹터들 X+4 내지 X+7을 수신한다. 이때, 하부 페이지(섹터들 X 내지 X+3) 및 상부 페이지(X+4 내지 X+7) 둘 다가 활성 블록(1462)에 동시에 기록된다. 이로 인해, 활성 블록(1462)의 상부 페이지 0의 프로그래밍 동안 활성 블록(1462)의 하부 페이지 0의 파손이 피해질 수 있다. 전형적으 로, 상부 및 하부 페이지들을 함께 프로그래밍하는데 필요한 시간은 상부 페이지만을 프로그래밍하는데 필요한 시간과 동일하여, 이 시스템은 시간 페널티를 지니지 않는다. 섹터들 X 내지 X+7로 하부 페이지 0 및 상부 페이지의 프로그래밍 후, 섹터들 X+8 내지 X+11이 수신되어 스크래치 패드 블록(1460)의 상부 페이지 0에 프로그래밍된다. 섹터들 X+12 내지 X+15가 수신될 때, 섹터들 X+8 내지 X+11 및 섹터들 X+12 내지 X+15는 활성 블록의 상부 페이지 1 및 하부 페이지 1에 병렬로 프로그래밍된다. 이 시스템은 도시된 바와 같이 그 다음 데이터 섹터들에 대해 지속된다. 따라서, 데이터 페이지가 스크래치 패드 블록(1460)으로 기록되고 나서, 이 페이지는 부가적인 페이지와 함께 동일한 그룹의 메모리 셀들의 상부 및 하부 페이지들로서 활성 블록(1462)에 기록된다. 스크래치 패드 블록(1460)으로의 프로그래밍은 페이지의 병렬도로 발생되지만, 활성 블록(1462)으로의 프로그래밍은 페이지의 병렬도의 두 배로 발생된다.
대안적인 실시예에서, 상부 및 하부 페이지들은 상이한 회수로 활성 블록에 기록될 수 있지만, 하부 페이지의 복제는 활성 블록 내의 하부 페이지가 상부 페이지의 프로그래밍 동안 파손되는 경우에 스크래치 패드 블록에서 유지된다. 도14에서, 섹터들 X 내지 X+3이 수신되어 활성 블록(1462)의 하부 페이지 0 및 스크래치 패드 블록(1460)의 하부 페이지 0 둘 다에 동시에 프로그래밍될 수 있다. 섹터들 X+4 내지 X+7은 스크래치 패드 블록(1460)에 저장되지 않는다. X+4 내지 X+7을 활성 블록(1462)의 상부 페이지 0로 프로그래밍하는 동안 (전력의 손실과 같은) 임의의 문제가 존재하는 경우, 활성 블록(1462)의 하부 페이지 0 내의 데이터는 파손될 수 있다. 즉, 프로그래밍되는 셀들의 임계 전압이 수정되어, 셀들이 더 이상 하부 페이지의 상태를 나타내는 데이터가 아니라, 상부 페이지의 상태를 나타내는 데이터로 완전히 프로그래밍되지 않도록 할 수 있다. 예를 들어, 도13의 상태 A로부터 상태 D로 프로그래밍되고 있는 셀은 프로그래밍이 중단되는 시간에 상태 B 또는 C에 있을 수 있다. 데이터가 이 방식으로 파손되면, 기록되고 있는 상부 데이터 페이지는 복제되고 있는 위치로부터 복구될 수 있다. 그러나, 많은 경우들에서, 하부 페이지의 다른 복제들이 존재하지 않는다. 여기서, 하부 페이지의 복제는 상부 페이지의 프로그래밍이 완료될 때까지 스크래치 패드 블록(1460)에서 유지된다. 따라서, 하부 페이지의 파손되지 않은 복제가 존재하고, 하부 페이지의 데이터를 복구하는데 사용될 수 있다.
다수의 파일들의 예들
하나 이상의 호스트 데이터 파일로부터의 데이터가 단일 블록에 저장될 수 있다. 파일들간의 파괴가 페이지 내에서 발생하여, 페이지의 일부는 한 파일로부터의 데이터를 포함하고 페이지의 일부는 또 다른 파일로부터의 데이터를 포함할 수 있다. 도15는 원래 블록(1570)의 페이지 0 내지 페이지 i-1이 제1 파일(파일 1)로부터의 데이터를 포함하고 페이지 i+1 내지 페이지 n-1이 제2 파일(파일 2)로부터의 데이터를 포함하는 예를 도시한다. 페이지 i는 파일 1로부터의 섹터들(i*4) 및 (i*4)+1 및 파일 2로부터의 섹터들 (i*4)+2 및 (i*4)+3을 포함한다. 파일 2의 섹터들은 2개의 파일들로부터의 섹터들이 존재한다는 것을 나타내기 위하여 음영으로 도시된다.
도15는 새로운 블록(1572)으로 갱신되는 파일 2을 도시한다. 새로운 블록(1572)의 제1 페이지(페이지 0)는 원래 블록(1570)의 페이지 i의 콘텐트들로 기록된다. 따라서, 새로운 불록(1572)의 페이지 0은 파일 2 및 파일 1 둘 다로부터의 섹터들을 포함한다. 파일 1로부터의 섹터들 (i*4) 및 (i*4)+1은 이 지점에서 갱신되는 것이 아니라, 전체 데이터 페이지를 프로그래밍하기 위하여 복제될 수 있다. 갱신된 파일 2의 나머지는 새로운 블록(1572)의 페이지 1 내지 i-1로 프로그래밍된다. 그 후, 파일 1이 갱신된다. 섹터 0 내지 섹터 (i*4)-1이 페이지 i 내지n-1에 저장된다. 그러나, 섹터들 (i*4) 및(i*4)+1은 또한 파일 1의 부분이며, 갱신되어야 한다. 새로운 블록(1572)이 이 지점에서 가득 채워졌기 때문에, 갱신된 섹터들 (i*4) 및(i*4)+1은 다른 블록으로 프로그래밍된다. 그 후, 섹터들 (i*4) 및(i*4)+1은 및 새로운 블록(1572) 내의 섹터들은 가비지 콜렉션 동작의 부분으로서 단일 블록으로 통합된다. 그러나, 이것은 시간 및 시스템 자원이 들어서 일반적으로 바람직하지 않다.
도16은 2개의 상이한 파일들로부터의 섹터들을 포함하는 도15의 원래 블록(1570)의 섹터들을 갱신하는 대안적인 기술을 도시한다. 이 기술은 갱신된 섹터들이 시스템의 최대 병렬도로 전체 갱신된 페이지의 부분으로서 기록될 수 있는 시간까지 갱신된 섹터들을 저장하기 위하여 스크래치 패드 블록(1674)을 사용한다. 파일 2가 갱신될 때, 갱신된 섹터들 (i*4)+2 및(i*4)+3은 스크래치 패드 블록(1674)에 기록된다. 여기서, 이 섹터들은 스크래치 패드 볼록(1674)의 페이지 0에 기록되며, 데이터는 페이지의 나머지에 기록되지 않아서 저 병렬도가 사용된다. 파일 2의 나머지 섹터들(섹터들 (i*4)+4 내지 N-1)이 새로운 블록(1676)의 페이지들 0 내지 n-i로 복제된다. 이들 섹터들은 최대 병렬화를 사용하여 전체-페이지 라이트(write)들에서 모두 기록된다. 그 후, 파일 1이 갱신된다. 섹터들 0 내지 (i*4)-1은 페이지들 n-i+1 내지n-2 내로 최대 병렬도로 프로그래밍된다. 그 후, 파일 1의 섹터들 (i*4) 및(i*4)+1이 새로운 블록(1676)의 페이지 n-1로의 섹터들 (i*4)+2 및(i*4)+3의 복제와 병행하여 기록된다. 따라서, 이전에 원래 블록(1570)에 수용되었던 모든 섹터들의 갱신된 복제가 이제 새로운 블록(1676)에서 수용되고, 쓸모없는 데이터는 새로운 블록(1676)에서 수용되지 않는다. 일반적으로 새로운 블록(1676)과 같은 블록을 가비지 콜렉팅할 필요가 없다. 새로운 블록(1676)의 각 페이지는 블록에서 데이터의 최대 밀도를 성취하기 위하여 최대 병렬도로 프로그래밍된다. 스크래치 패드 블록(1674) 내의 섹터들 (i*4)+2 및(i*4)+3은 이 지점에서 쓸모없는 것으로 마킹될 수 있다. 그러나, 스크래치 패드 블록(1674)은 자신이 현재 및 쓸모없는 데이터 둘 다를 일상적으로 포함하기 때문에 가비지 콜렉션 동작을 필요로 함이 없이 부가적인 동작들에 대해 사용될 수 있다.
비-순차적인 데이터 섹터들을 저장하는 예
이전 예들 중 일부에서, 데이터 섹터들은 완전한 페이지를 기록하는 것보다 적은 병렬도로 스크래치 패드 블록에 기록된다. 이와 같은 예들에서, 기록되고 있는 스크래치 패드 블록의 페이지 내의 나머지 공간은 이미-저장된 데이터를 교란함이 없이 프로그래밍되는 것이 불가능하기 때문에, 빈 체로 유지될 수 있다. 일부 경우들에서, 무관련 데이터를 동일한 페이지에 저장하기 위하여 이와 다른 빈 공간 및 이와 다른 사용되지 않은 프로그래밍 대역폭을 사용하는 것이 가능하다. 예를 들어, 메모리 시스템이 페이지보다 적은 단일 섹터들 또는 섹터들의 그룹들로 호스트 데이터를 수신하는 경우에, 호스트 데이터의 이들 섹터들은 또한 제어 데이터 섹터들 또는 무관련 호스트 데이터와 같은 무관련 데이터를 유지하는 페이지들로 스크래치 패드 블록에 저장될 수 있다. 유사하게, 전체 페이지의 부분으로서 나중에 저장하기 위해 스크래치 패드 블록에 저장되는 파일의 시작부로부터의 섹터들은 논리적으로 관련되지 않은 동일한 스크래치 패드 블록 페이지에 저장되는 부가적인 섹터들을 가질 수 있다.
도17은 섹터들, X, X+1 및 X+2가 이전 예들에서와 같이 스크래치 패드 블록(1780)에 저장되는 예를 도시한다. 그러나, 여기서, 섹터들 X, X+1 및 X+2를 유지하는 스크래치 패드 블록의 페이지들 내의 나머지 공간은 다른 데이터를 저장하는데 사용된다. 섹터들 Y, Y+1 및 Y+2는 페이지 0에 섹터 X와 함게 저장된다. 섹터들 Y, Y+1 및 Y+2는 섹터들 X, X+1 및 X+2와 논리적으로 무관할 수 있다. 이 섹터들은 또 다른 호스트 데이터 파일 또는 동일한 파일 내의 섹터들의 또 다른 클러스터에서 나올 수 있다. 섹터들 Y, Y+1 및 Y+2는 섹터들 X, X+1 및 X+2와 비순차적일 수 있고, 논리적 어드레스 공간에서 분리될 수 있다. 유사하게, 섹터들 Z 및 Z+1은 섹터들 X 및 X+1과 함께 페이지 1에 저장된다. 섹터들 Z 및 Z+1은 섹터들 X, X+1 및 X+2 및 섹터들 Y, Y+1 및 Y+2 둘 다와 논리적으로 무관할 수 있다. 섹터들 X, X+1, X+2 및 X+3은 섹터 X+3이 수신될 때 또 다른 블록의 페이지로 순차적으로 기록된다. 섹터들 Y, Y+1, Y+2 및 Y+3은 섹터 Y+3이 수신될 때, 또 다른 블록의 페이 지에 기록된다. 따라서, 무관련 데이터는 이용 가능한 자원들을 더 효율적으로 사용하기 위하여 스크래치 패드 블록의 동일한 페이지에 저장될 수 있다.
도18은 스크래치 패드 블록(1890)에 저장되는 무관련 데이터의 또 따른 예를 도시한다. 여기서, 섹터들 X, X+1 및 X+2는 이전과 같이 저장되고 갱신된다. 그러나, 여기서, 섹터 Y가 또한 병렬로 저장되고 갱신된다. 갱신된 섹터들은 어느 버전이 저장되는지를 나타내는 아래첨자에 의해 표시된다. 예를 들어, 섹터 X0은 섹터 X의 원래 버전인 반면, X1은 섹터 X의 제1 갱신된 버전이다. 섹터 Y는 자주 갱신되는 호스 데이터 섹터 또는 제어 데이터 섹터일 수 있다. 일부 시스템들에서, FAT 정보와 같은 제어 데이터는 호스트 데이터가 저장될 때 갱신된다. 적은 양들의 호스트 데이터가 수신되는 경우에, 스크래치 패드 블록(1890)에서 제어 데이터를 갱신하는 것이 유용할 수 있다. 이것은 단일 제어 데이터 섹터가 갱신되는 경우에 제어 구조를 갱신하는 것을 피할 수 있다. 나중에, 제어 데이터 구조들은 스크래치 패드 블록으로부터의 제어 데이터를 사용하여 갱신될 수 있다.
스크래치 패드 블록 관리
스크래치 패드 블록은 메모리 어레이 내의 지정된 블록일 수 있다. 고정된 물리적인 위치는 스크래치 패드 블록으로서 선택될 수 있다. 그러나, 이것은 편마모(uneven wear)를 초래할 수 있다. 대안적으로, 지정된 블록이 시간에 따라 변화되어, 스크래치 패드 블록이 쓸모없는 데이터로 채워질 때, 또 다른 소거 블록이 스크래치 패드 블록으로서 선택되도록 할 수 있다. 이 경우에, 메모리 제어기에 의 해 사용되는 데이터 구조들이 스크래치 패드 블록의 위치를 식별할 수 있거나, 지정된 스크래치 패드 블록이 마킹되어, 제어기가 메모리 어레이의 소거 블록들을 스캔하면, 어느 소거 블록이 스크래치 패드 블록인지가 결정될 수 있다. 스크래치 패드 블록은 섹터를 사용하여 마킹되어, 섹터를 스크래치 패드 블록으로서 식별할 수 있다. 예를 들어, 도19는 스크래치 패드 블록(2100)의 제1 섹터로서 마킹 섹터(2110)를 도시한다. 카드가 전력 온될 때, 메모리 어레이(또는 메모리 어레이의 일부)의 소거 블록들은 스캔되어 스크래치 패드 블록 스크래치 패드 블록들의 위치를 결정할 수 있다. 도19의 예에서, 각 소거 블록의 제1 섹터는 자신이 스크래치 패드 블록을 나타내는 마킹 섹터인지를 인식하기 위하여 판독된다.
데이터는 데이터 그룹으로서 스크래치 패드 블록에 기록될 수 있다. 데이터 그룹은 호스트로부터 수신되는 섹터들의 논리적으로 순차적인 그룹이다. 데이터 그룹이 스크래치 패드 블록에 저장될 때, 저장된 데이터 그룹에 관한 정보를 제공하는 인덱스 섹터가 또한 기록된다. 데이터 그룹의 섹터들의 위치들이 인덱스 섹터에 저장될 수 있다. 도19의 스크래치 패드 블록(2100)과 같은 스크래치 패드 블록이 다수의 데이터 그룹들을 저장하는데 사용될 수 있다. 도20은 하나의 데이터 그룹을 저장하는 스크래치 패드(2100)를 도시한다. 데이터 그룹 1은 2개의 섹터들(2220, 2221)로 구성된다. 이들 섹터들, 마킹 섹터(2110) 및 인덱스 섹터(2230)가 스크래치 패드(2100)에 저장된다. 인덱스 섹터(2230)는 그룹 1에 관한 정보를 저장한다.
도21은 2개의 섹터들(2340, 2341)로 구성된 데이터 그룹 2가 프로그래밍된 후의 도20의 스크래치 패드 블록(2100)을 도시한다. 인덱스 섹터(2350)는 그룹 1 및 그룹 2에 관한 정보를 저장하는 새로운 인덱스 섹터이다. 따라서, 인덱스 섹터(2230)는 인덱스 섹터(2350)가 그룹 1을 포함한 스크래치 패드 블록(2100)의 데이터 그룹들의 완전한 기록을 포함하기 때문에, 쓸모없다.
도22는 섹터들(2460, 2461 및 2462)로 구성된 데이터 그룹 3의 프로그래밍 후의 도21의 스크래치 패드 블록(2100)을 도시한다. 인덱스 섹터(2470)는 데이터 그룹들 1, 2 및 3에 관한 정보를 저장하는 새로운 인덱스 섹터이다. 인덱스 섹터(2470)는 스크래치 패드 블록(2100)의 데이터의 완전한 기록을 포함하므로, 인덱스 섹터(2350)를 쓸모없게 한다.
도23은 데이터 그룹 1 및 데이터 그룹 2가 스크래치 패드 블록(2100)으로부터 판독되고 메모리 어레이의 또 다른 블록에 단일 페이지로서 기록된 후의 도22의 스크래치 패드 블록(2100)을 도시한다. 인덱스 섹터(2560)는 데이터 그룹 3에 관한 정보를 저장한다. 스크래치 패드(2100)의 데이터 그룹 1 및 데이터 그룹 2은 쓸모없고 이들이 다른 장소에 저장되기 때문에 인덱싱을 필요로 하지 않는다. 따라서, 인덱스 섹터(2560)는 스크래치 패드 블록(2100) 내의 모든 현재 데이터의 완전한 기록을 포함한다.
호스트가 메모리 어레이로부터 데이터 섹터 또는 섹터들을 요청할 때, 제어기는 우선 요청된 섹터들이 스크래치 패드 블록 내에 있는지를 점검할 수 있다. 섹터들이 스크래치 패드 블록에 존재하지 않으면, 섹터들은 정기적으로 탐색될 수 있다. 따라서, 스크래치 패드는 메모리 어레이 내의 섹터들의 위치들을 추적하는데 사용되는 정기적인 매체 관리에 대한 변화를 필요로 하지 않는다.
본 발명이 다양한 예시적인 실시예들에 대하여 설명되었을지라도, 첨부된 청구항의 전체 범위 내에서 보호받을 수 있다는 것이 이해될 것이다.

Claims (22)

  1. 블록의 최소 소거 단위와 페이지의 최소 프로그램 단위를 갖는 비휘발성 메모리 어레이에 어드레스가능한 데이터 단위들을 저장하는 방법으로서, 페이지는 하나 이상의 어드레스가능한 데이터 단위들을 포함하며, 페이지는 블록보다 적은 데이터를 포함하는 비휘발성 메모리 어레이에 어드레스가능한 데이터 단위들을 저장하는 방법에 있어서,
    제1 병렬도로 제1 블록에 다수의 어드레스가능한 데이터 단위들을 기록하는 단계;
    상기 제1 병렬도보다 높은 제2 병렬도를 갖는 기록 동작에서 상기 다수의 어드레스가능한 데이터 단위들이 기록되는 제2 블록으로 상기 다수의 어드레스가능한 데이터 단위들을 복제하는 단계; 및,
    상기 제1 블록이 상기 다수의 어드레스가능한 데이터 단위들을 포함하는 상기 제1 블록에 부가적인 어드레스가능한 데이터 단위들을 기록하는 단계를 포함하는 비휘발성 메모리에 어드레스가능한 데이터 단위들을 저장하는 방법.
  2. 제1항에 있어서, 상기 제1 병렬도는 전체 데이터 페이지를 프로그래밍하는 병렬도보다 적고 제2 병렬도는 전체 데이터 페이지를 프로그래밍하는 병렬도인 비휘발성 메모리에 어드레스가능한 데이터 단위들을 저장하는 방법.
  3. 제1항에 있어서, 상기 다수의 어드레스가능한 데이터 단위들은 제1 파일의 일부를 형성하는데, 상기 부분은 한 페이지보다 적은 데이터를 포함하며, 상기 다수의 어드레스가능한 데이터 단위들을 복제하는 단계는 제2 파일의 일부의 프로그래밍과 병렬임으로 상기 제1 파일의 부분 및 상기 제2 파일의 부분은 상기 제2 블록에서 데이터 페이지를 형성하는 비휘발성 메모리에 어드레스가능한 데이터 단위들을 저장하는 방법.
  4. 제1항에 있어서, 상기 제2 블록은 다수의 다중 레벨 셀들을 포함하며, 상기 다수의 어드레스가능한 데이터 단위들은 상기 제1 블록에서 제1 페이지를 형성하고 상기 제2 블록으로 제2 데이터 페이지를 기록하는 것과 병렬로 상기 제2 블록에 복제됨으로써, 상기 제1 페이지 및 제2 페이지가 상기 다수의 멀티-레벨 셀들의 프로그래밍의 상부 및 하부 페이지들을 형성하도록 하는 비휘발성 메모리에 어드레스가능한 데이터 단위들을 저장하는 방법.
  5. 제1항에 있어서, 상기 다수의 어드레스가능한 데이터 단위들은 상기 제2 병렬로를 성취하기 위하여 부가적인 데이터와 병렬로 상기 제2 블록에 기록되는 비휘발성 메모리에 어드레스가능한 데이터 단위들을 저장하는 방법.
  6. 비휘발성 메모리 어레이에서 다중-레벨 셀들에 어드레스가능한 데이터 단위들을 기록하는 방법으로서, 상기 메모리 어레이는 블록의 소거 단위를 가지며, 2개 이상의 가능한 프로그램된 상태들을 갖는 다중-레벨 셀은 하나 이상의 데이터 비트에 대응하는, 다중-레벨 셀들에 어드레스가능한 데이터 단위들을 기록하는 방법에 있어서,
    호스트로부터 제1 어드레스가능한 데이터 단위 및 제2 어드레스가능한 데이터 단위를 수신하는 단계;
    제1 블록과 제2 블록의 다수의 다중-레벨 셀들에 상기 제1 어드레스가능한 데이터 단위를 프로그램하는 단계;
    상기 제1 어드레스가능한 데이터 단위가 상기 제1 블록에 상기 제2 어드레스가능한 데이터 단위를 프로그램함이 없이 상기 제1 블록에 유지되는 동안 상기 제2 유닛의 비트들에 따라서 상기 제2 블록의 상기 다수의 다중-레벨 셀들을 프로그램하는 단계;
    상기 제2 블록의 다수의 다중-레벨 셀들이 상기 제2 데이터 단위의 비트들을 반영하는 상태들로 완전히 프로그램된다는 것을 검증한 후에만 상기 제1 블록에서 상기 제1 어드레스가능한 데이터 단위가 쓸모 없는 것으로서 마킹하는 단계를 포함하는 다중-레벨 셀들에 어드레스가능한 데이터 단위들을 기록하는 방법.
  7. 제6항에 있어서, 제2 어드레스가능한 유닛의 비트들에 따라서 제2 블록의 상기 상기 다수의 다중-레벨 셀들을 프로그램하는 단계는 셀이 상기 제2 데이터 단위의 비트를 반영하는 상태에 도달하지 않지만 셀이 상기 제1 데이터 단위의 비트를 반영하는 상태로부터 수정되는 중간 스테이지에서 종료한 다음 상기 제1 블록으로 부터 상기 제1 데이터 단위의 비트들을 복구하는 단계를 포함하는 다중-레벨 셀들에 어드레스가능한 데이터 단위들을 기록하는 방법.
  8. 제6항에 있어서, 상기 제1 어드레스가능한 데이터 단위는 제1 시간에 상기 제1 블록으로 프로그램되며, 상기 제1 및 제2 어드레스가능한 데이터 단위들은 다음에 상기 제2 어드레스가능한 데이터 단위가 수신될 때 제2 시간에서 상기 제2 블록으로 프로그램되는 다중-레벨 셀들에 어드레스가능한 데이터 단위들을 기록하는 방법.
  9. 제6항에 있어서, 상기 제1 블록 내 모든 데이터가 쓸모 없는 것으로서 마킹될 때 상기 제1 블록을 소거하는 단계를 더 포함하는 다중-레벨 셀들에 어드레스가능한 데이터 단위들을 기록하는 방법.
  10. 블록의 최소 소거 유닛들 및 페이지의 최소 프로그래밍 유닛들을 갖는 비휘발성 메모리 어레이에 논리적으로 비순차적인 어드레스가능한 데이터 단위들을 저장하는 방법에 있어서,
    제1 블록의 제1 페이지에 제1의 적어도 하나의 어드레스가능한 데이터 단위를 저장하는 단계;
    상기 제1 블록의 제1 페이지에서 상기 제1 적어도 하나의 어드레스가능한 유닛과 병렬로 제2 적어도 하나의 어드레스가능한 유닛을 저장하는 단계로서, 상기 제2 적어도 하나의 어드레스가능한 데이터 단위는 상기 제1 적어도 하나의 어드레스가능한 데이터 단위과 논리적으로 순차적이 아닌, 저장 단계;
    상기 제1 적어도 하나의 어드레스가능한 데이터 단위를 제2 블록에 복제하고 상기 제2 적어도 하나의 어드레스가능한 데이터 단위를 제3 블록에 복제하는 단계; 및,
    상기 제1 블록이 상기 제1 적어도 하나의 어드레스가능한 데이터 단위 및 상기 제2 적어도 하나의 어드레스가능한 데이터 단위를 유지하는 동안 상기 제1 블록의 제3 적어도 하나의 어드레스가능한 데이터 단위를 저장하는 단계를 포함하는 비휘발성 메모리 어레이에 논리적으로 비순차적인 어드레스가능한 데이터 단위들을 저장하는 방법.
  11. 제10항에 있어서, 상기 제1 적어도 하나의 어드레스가능한 데이터 단위는 호스트 데이터를 포함하고 상기 제2 적어도 하나의 어드레스가능한 데이터 단위는 제어 데이터를 포함하는 비휘발성 메모리 어레이에 논리적으로 비순차적인 어드레스가능한 데이터 단위들을 저장하는 방법.
  12. 제10항에 있어서, 상기 제1 적어도 하나의 어드레스가능한 데이터 단위는 제1 파일의 다수의 논리적으로 순차적인 어드레스가능한 호스트 데이터 단위를 포함하고 상기 제2 적어도 하나의 어드레스가능한 데이터 단위는 제2 파일의 다수의 논리적으로 순차적인 어드레스가능한 유닛들을 포함하는 비휘발성 메모리 어레이에 논리적으로 비순차적인 어드레스가능한 데이터 단위들을 저장하는 방법.
  13. 제10항에 있어서, 상기 제3 적어도 하나의 어드레스가능한 데이터 단위는 상기 제1 블록의 제2 페이지에 저장되고, 상기 제3 적어도 하나의 어드레스가능한 데이터 단위는 상기 제1 및 제2 적어도 하나의 어드레스가능한 데이터 단위들과 논리적으로 비순차적인 비휘발성 메모리 어레이에 논리적으로 비순차적인 어드레스가능한 데이터 단위들을 저장하는 방법.
  14. 제13항에 있어서, 상기 제1 적어도 하나의 데이터 단위는 제1 파일로부터 데이터를 포함하며, 상기 제2 적어도 하나의 데이터 단위는 제2 파일로부터 데이터를 포함하고 상기 제3 적어도 하나의 데이터 단위는 제3 파일로부터 데이터를 포함하는 비휘발성 메모리 어레이에 논리적으로 비순차적인 어드레스가능한 데이터 단위들을 저장하는 방법.
  15. 소거 블록의 최소 소거 유닛들로 배열되는 메모리 셀들, 메타블록들을 형성하기 위하여 링크되는 소거 블록들의 그룹들, 메타블록의 프로그래밍 단위인 메타페이지를 갖는 비휘발성 메모리 어레이에 데이터를 저장하는 방법으로서,
    제1 메타블록의 제1 메타페이지에 제1 데이터 섹터를 저장하는 단계;
    상기 제1 메타블록의 적어도 제2 메타페이지에 적어도 제2 섹터를 저장하는단계;
    상기 제1 데이터 섹터, 상기 적어도 제2 데이터 섹터 및 제3 데이터 섹터 모두를 상기 제3 데이터 섹터가 수신될 때 제2 메타블록의 메타페이지에 기록하는 단계; 및,
    상기 제1 메타블록으로부터 상기 제1 데이터 섹터 및 상기 적어도 제2 데이터 섹터를 소거함이 없이 상기 제1 메타블록에 제4 데이터 섹터를 순차적으로 저장하는 단계를 포함하는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  16. 제15항에 있어서, 상기 제1 데이터 섹터, 상기 적어도 제2 데이터 섹터, 및 상기 제3 데이터 섹터가 결합되어 전체 데이터 메타페이지를 형성하는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  17. 제15항에 있어서, 상기 제1 데이터 섹터, 상기 적어도 제2 데이터 섹터 및 상기 제3 데이터 섹터 모두를 상기 제2 메타블록의 메타페이지에 기록한 다음에, 상기 제1 메타블록은 즉각적으로 쓸모 없는 것으로서 마킹되지 않는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  18. 제15항에 있어서, 상기 제1 데이터 섹터는 상기 제1 메타페이지로부터 상기 적어도 제2 메타페이지로 복제되는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  19. 제15항에 있어서, 상기 적어도 제2 섹터는 제2 섹터 및 부가적인 섹터로 이루어지며, 상기 제1 및 제2 섹터들은 상기 제1 메타블록의 제2 페이지에 저장되며, 상기 제1, 제2 및 부가적인 섹터들은 상기 제1 메타블록의 제3 메타페이지에 저장되는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  20. 제15항에 있어서, 상기 제1 데이터 섹터, 상기 적어도 제2 데이터 섹터 및 상기 제3 데이터 PRXJ는 상기 제2 메타블록의 메타페이지를 형성하는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  21. 소거 블록의 최소 소거 단위들로 배열되는 메모리 셀들을 갖는 비휘발성 메모리 어레이에 데이터를 저장하는 방법으로서, 페이지는 소거 블록의 최소 프로그래밍 단위인, 비휘발성 메모리 어레이에 데이터를 저장하는 방법에 있어서,
    제1 소거 블록의 제1 페이지에 제1 데이터 섹터를 저장하는 단계;
    상기 제1 소거 블록의 적어도 하나의 부가적인 페이지에 적어도 하나의 부가적인 섹터를 저장하는 단계;
    상기 제1 데이터 섹터, 상기 적어도 하나의 부가적인 데이터 섹터 및 최종 데이터 섹터 모두를 상기 최종 데이터 섹터가 수신될 때 제2 소거 블록의 페이지로 기록하는 단계; 및,
    상기 제1 데이터 섹터 및 상기 제1 소거 블록으로부터의 적어도 하나의 부가적인 섹터를 소거함이 없이 상기 제1 소거 블록에 제2 데이터 섹터를 저장하는 단 계를 포함하는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  22. 제21항에 있어서, 상기 제1 데이터 섹터, 상기 적어도 하나의 부가적인 데이터 섹터 및 상기 최종 데이터 섹터 모두가 상기 제2 소거 블록의 페이지를 완전히 채우는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
KR1020077012082A 2004-12-16 2005-12-01 스크래치 패드 블록 KR100914263B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/016,285 2004-12-16
US11/016,285 US7315916B2 (en) 2004-12-16 2004-12-16 Scratch pad block

Publications (2)

Publication Number Publication Date
KR20070087571A true KR20070087571A (ko) 2007-08-28
KR100914263B1 KR100914263B1 (ko) 2009-08-27

Family

ID=36190514

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077012082A KR100914263B1 (ko) 2004-12-16 2005-12-01 스크래치 패드 블록

Country Status (7)

Country Link
US (1) US7315916B2 (ko)
EP (1) EP1828906B1 (ko)
JP (1) JP4787266B2 (ko)
KR (1) KR100914263B1 (ko)
CN (4) CN101095121B (ko)
TW (1) TWI393140B (ko)
WO (1) WO2006065566A1 (ko)

Families Citing this family (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
JP4418439B2 (ja) * 2006-03-07 2010-02-17 パナソニック株式会社 不揮発性記憶装置およびそのデータ書込み方法
US20070300130A1 (en) * 2006-05-17 2007-12-27 Sandisk Corporation Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US7366017B2 (en) * 2006-08-22 2008-04-29 Micron Technology, Inc. Method for modifying data more than once in a multi-level cell memory location within a memory array
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
US8316206B2 (en) * 2007-02-12 2012-11-20 Marvell World Trade Ltd. Pilot placement for non-volatile memory
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
KR20090024971A (ko) * 2007-09-05 2009-03-10 삼성전자주식회사 섹터의 집합을 이용한 캐시 운용 방법 및 캐시 장치
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US8533562B2 (en) * 2007-09-12 2013-09-10 Sandisk Technologies Inc. Data protection after possible write abort or erase abort
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
WO2009072104A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US20090164745A1 (en) * 2007-12-21 2009-06-25 Alan Sinclair System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
CN101364444B (zh) 2008-02-05 2011-05-11 威盛电子股份有限公司 控制方法及运用该控制方法的存储器及处理系统
EP2592553B1 (en) 2008-03-11 2015-11-18 Agere Systems, Inc. Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
TWI413984B (zh) * 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
CN101740123B (zh) * 2008-11-10 2012-04-04 扬智科技股份有限公司 存储器的数据保护方法
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
US8458574B2 (en) * 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8832353B2 (en) * 2009-04-07 2014-09-09 Sandisk Technologies Inc. Host stop-transmission handling
US8085588B2 (en) * 2009-04-30 2011-12-27 Spansion Llc Semiconductor device and control method thereof
US8566510B2 (en) * 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8307241B2 (en) * 2009-06-16 2012-11-06 Sandisk Technologies Inc. Data recovery in multi-level cell nonvolatile memory
JP5209793B2 (ja) * 2009-08-21 2013-06-12 パナソニック株式会社 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
JP4956593B2 (ja) 2009-09-08 2012-06-20 株式会社東芝 メモリシステム
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
DE112010004667T5 (de) 2009-12-03 2013-01-17 Hitachi, Ltd. Speichervorrichtung und Speichersteuerung
US9037777B2 (en) * 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
TWI399644B (zh) * 2009-12-24 2013-06-21 Univ Nat Taiwan 非揮發記憶體區塊管理方法
WO2011096045A1 (ja) * 2010-02-02 2011-08-11 株式会社 東芝 ストレージ機能を持つ通信装置
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US8345482B2 (en) * 2010-12-15 2013-01-01 Micron Technology, Inc. Methods for segmented programming and memory devices
TWI479505B (zh) * 2010-12-16 2015-04-01 Phison Electronics Corp 資料管理方法、記憶體控制器與記憶體儲存裝置
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
CN103092771A (zh) * 2011-10-31 2013-05-08 建兴电子科技股份有限公司 固态储存装置及其高速缓存的控制方法
TWI470575B (zh) * 2011-11-24 2015-01-21 Mediatek Inc 用於緩衝裝置之讀取指標暫存的方法、緩衝控制器以及緩衝裝置
CN103138875B (zh) * 2011-11-28 2015-06-10 澜起科技(上海)有限公司 高速广播信道的校准方法
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
DE102012201978A1 (de) * 2012-02-10 2013-08-14 Robert Bosch Gmbh Verfahren zum Auslesen einer Lichtsensorsteuereinrichtung sowie Vorrichtung zum Auslesen einer Lichtsensorsteuereinrichtung
CN103258570B (zh) * 2012-02-15 2016-05-11 旺宏电子股份有限公司 一种记忆装置及产生程序化偏压脉冲的方法和集成电路
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
EP2842036B1 (en) * 2012-04-27 2019-07-03 Hewlett-Packard Enterprise Development LP Local checkpointing using a multi-level cell
JP2013229086A (ja) * 2012-04-27 2013-11-07 Sony Corp メモリ装置、メモリ制御装置、メモリ制御方法
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9053003B2 (en) * 2012-06-21 2015-06-09 Microsoft Technology Licensing, Llc Memory compaction mechanism for main memory databases
CN102831072B (zh) * 2012-08-10 2016-03-02 深圳市江波龙电子有限公司 闪存设备及其管理方法、数据读写方法及读写装置
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9384839B2 (en) 2013-03-07 2016-07-05 Sandisk Technologies Llc Write sequence providing write abort protection
US9189389B2 (en) * 2013-03-11 2015-11-17 Kabushiki Kaisha Toshiba Memory controller and memory system
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US9037902B2 (en) 2013-03-15 2015-05-19 Sandisk Technologies Inc. Flash memory techniques for recovering from write interrupt resulting from voltage fault
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US20150006784A1 (en) 2013-06-27 2015-01-01 Sandisk Technologies Inc. Efficient Post Write Read in Three Dimensional Nonvolatile Memory
US9063671B2 (en) 2013-07-02 2015-06-23 Sandisk Technologies Inc. Write operations with full sequence programming for defect management in nonvolatile memory
US9218242B2 (en) 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in nonvolatile memory
CN104423888B (zh) * 2013-08-23 2017-10-03 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器存储装置
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9043537B1 (en) 2013-11-21 2015-05-26 Sandisk Technologies Inc. Update block programming order
US9058881B1 (en) 2013-12-05 2015-06-16 Sandisk Technologies Inc. Systems and methods for partial page programming of multi level cells
US9244631B2 (en) 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
CN104731710B (zh) * 2013-12-18 2018-06-29 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器储存装置
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US8947817B1 (en) 2014-04-28 2015-02-03 Seagate Technology Llc Storage system with media scratch pad
US9443553B2 (en) 2014-04-28 2016-09-13 Seagate Technology Llc Storage system with multiple media scratch pads
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US9665296B2 (en) 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US8902652B1 (en) 2014-05-13 2014-12-02 Sandisk Technologies Inc. Systems and methods for lower page writes
US8886877B1 (en) 2014-05-15 2014-11-11 Sandisk Technologies Inc. In-situ block folding for nonvolatile memory
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US9928138B2 (en) * 2015-02-17 2018-03-27 Toshiba Memory Corporation Memory system
JP6412820B2 (ja) * 2015-03-31 2018-10-24 株式会社メガチップス 記憶システム、制御装置、メモリ制御装置、記憶装置、上位装置、制御プログラム及びデータ読み出し方法
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
CN105159601B (zh) * 2015-08-07 2018-12-07 杭州海兴电力科技股份有限公司 一种提高Flash擦写寿命的方法
US9858009B2 (en) 2015-10-26 2018-01-02 Sandisk Technologies Llc Data folding in 3D nonvolatile memory
KR102441284B1 (ko) * 2016-01-12 2022-09-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
JP7089505B2 (ja) * 2016-08-26 2022-06-22 サンライズ メモリー コーポレイション 3次元アレイにおける容量結合型不揮発性薄膜トランジスタストリング
CN106528441B (zh) * 2016-10-26 2020-08-04 珠海格力电器股份有限公司 仿真eeprom的数据处理方法、装置及电子设备
JP2018160189A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
CN109144414B (zh) * 2018-07-27 2020-07-07 阿里巴巴集团控股有限公司 区块链数据的多级存储方法和装置
CN109215171A (zh) * 2018-08-20 2019-01-15 深圳市长龙铁路电子工程有限公司 一种机车信号设备数据记录的存储方法
CN110888593B (zh) 2018-09-07 2024-01-26 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110888591B (zh) * 2018-09-07 2023-05-30 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110888820B (zh) 2018-09-07 2022-01-25 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
TWI718889B (zh) * 2019-01-10 2021-02-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
TWI690928B (zh) 2019-01-10 2020-04-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
CN111400302B (zh) * 2019-11-28 2023-09-19 杭州海康威视系统技术有限公司 连续存储数据的修改方法、装置和系统
TWI727842B (zh) 2020-02-20 2021-05-11 大陸商長江存儲科技有限責任公司 存儲器件及其編程方法
JP2022542990A (ja) * 2020-04-23 2022-10-07 長江存儲科技有限責任公司 メモリデバイスおよびそのプログラミング方法
CN114911426B (zh) * 2022-07-15 2022-10-18 北谷电子有限公司 一种数据存储方法、存储器件和高空车

Family Cites Families (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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 不揮発性多値メモリ装置
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US7190617B1 (en) * 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
JPH0664918B2 (ja) * 1989-05-25 1994-08-22 ローム株式会社 自己訂正機能を有する半導体記憶装置
US5258958A (en) 1989-06-12 1993-11-02 Kabushiki Kaisha Toshiba Semiconductor memory device
FR2650109B1 (fr) * 1989-07-20 1993-04-02 Gemplus Card Int Circuit integre mos a tension de seuil ajustable
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
US5122985A (en) * 1990-04-16 1992-06-16 Giovani Santin Circuit and method for erasing eeprom memory arrays to prevent over-erased cells
US5132935A (en) * 1990-04-16 1992-07-21 Ashmore Jr Benjamin H Erasure of 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 不揮発性半導体記憶装置
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5313421A (en) * 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
FR2689253B1 (fr) * 1992-03-24 1997-01-24 Souriau & Cie Dispositif de moulage comportant une contre-piece de guidage de broches pour le moulage de viroles de connecteurs de fibres optiques, et virole moulee au moyen d'un tel dispositif.
GB9208493D0 (en) * 1992-04-16 1992-06-03 Thomson Consumer Electronics Dual port video memory
US5327383A (en) * 1992-04-21 1994-07-05 Intel Corporation Method and circuitry for erasing a nonvolatile semiconductor memory incorporating row redundancy
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
US5315421A (en) 1992-04-28 1994-05-24 Matsushita Electric Industrial Co., Ltd. Rubbing apparatus including double refraction phase difference measuring means and manufacturing method for liquid crystal display device
US5532962A (en) * 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5657332A (en) * 1992-05-20 1997-08-12 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
JP2708333B2 (ja) * 1992-09-02 1998-02-04 株式会社東芝 レベルシフタ回路
JP3088866B2 (ja) * 1992-11-26 2000-09-18 大日本印刷株式会社 Icカード
US5365486A (en) 1992-12-16 1994-11-15 Texas Instruments Incorporated Method and circuitry for refreshing a flash electrically erasable, programmable read only memory
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
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
US5623620A (en) 1993-06-30 1997-04-22 Intel Corporation Special test modes for a page buffer shared resource in a memory device
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) * 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5523972A (en) * 1994-06-02 1996-06-04 Intel Corporation Method and apparatus for verifying the programming of multi-level flash EEPROM memory
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 株式会社東芝 半導体集積回路装置
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
US6125435A (en) * 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5696929A (en) 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
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
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
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
US5860091A (en) * 1996-06-28 1999-01-12 Symbios, Inc. Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications
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
US5745418A (en) * 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
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
JP3866818B2 (ja) * 1997-02-14 2007-01-10 三菱電機株式会社 半導体記憶装置
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 インターナショナル・ビジネス・マシーンズ・コーポレ−ション リフレッシュ間隔制御装置及び方法、並びにコンピュータ
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
EP1209568A1 (en) * 1999-02-22 2002-05-29 Hitachi, Ltd. Memory card, method for allotting logical address, and method for writing data
JP2000251483A (ja) * 1999-02-24 2000-09-14 Sanyo Electric Co Ltd 1チップマイクロコンピュータとそのデータリフレッシュ方法
EP1228510B1 (en) * 1999-04-01 2006-09-20 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
JP4141581B2 (ja) * 1999-04-05 2008-08-27 株式会社ルネサステクノロジ フラッシュメモリを搭載する記憶装置
JP3793868B2 (ja) * 1999-11-25 2006-07-05 カシオ計算機株式会社 フラッシュメモリ管理装置及び記録媒体
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
KR100818035B1 (ko) * 2000-05-04 2008-03-31 엔엑스피 비 브이 저장 매체 상의 데이터 관리 및 데이터 관리 시스템과 컴퓨터 판독가능한 저장 매체
JP3942807B2 (ja) * 2000-06-06 2007-07-11 株式会社ルネサステクノロジ ブロックアラインメント機能付き半導体記憶装置
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
US6345001B1 (en) * 2000-09-14 2002-02-05 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
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
JP3979486B2 (ja) * 2001-09-12 2007-09-19 株式会社ルネサステクノロジ 不揮発性記憶装置およびデータ格納方法
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
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
US6560152B1 (en) * 2001-11-02 2003-05-06 Sandisk Corporation Non-volatile memory with temperature-compensated data read
JP4491240B2 (ja) * 2002-01-17 2010-06-30 ザ ユニバーシティ オブ ブリティッシュ コロンビア Igfbp−2およびigfbp−5を阻害する二重特異性アンチセンスオリゴヌクレオチド、並びにこれらの使用方法
JP4206688B2 (ja) * 2002-04-15 2009-01-14 ソニー株式会社 データ処理装置及びデータ処理方法
KR100453053B1 (ko) * 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
US7196931B2 (en) * 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
JP4073799B2 (ja) * 2003-02-07 2008-04-09 株式会社ルネサステクノロジ メモリシステム
JP3928724B2 (ja) * 2003-02-20 2007-06-13 ソニー株式会社 記録媒体の記録制御方法および記録媒体の記録制御装置
US6928511B2 (en) * 2003-03-03 2005-08-09 High Tech Computer, Corp. Method and system for managing virtual memory
EP1489490A3 (en) * 2003-06-19 2005-09-14 Texas Instruments Incorporated Method for converting a cache to a scratch-pad memory
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
JP2005222201A (ja) * 2004-02-04 2005-08-18 Matsushita Electric Ind Co Ltd メモリアクセス装置、及び半導体メモリカード
JP4713867B2 (ja) * 2004-09-22 2011-06-29 株式会社東芝 メモリコントローラ,メモリ装置及びメモリコントローラの制御方法
JP2006139556A (ja) * 2004-11-12 2006-06-01 Toshiba Corp メモリカード及びそのカードコントローラ
US7437653B2 (en) * 2004-12-22 2008-10-14 Sandisk Corporation Erased sector detection mechanisms

Also Published As

Publication number Publication date
WO2006065566A1 (en) 2006-06-22
WO2006065566A9 (en) 2006-09-08
JP2008524705A (ja) 2008-07-10
CN101124554A (zh) 2008-02-13
CN101095121B (zh) 2010-05-05
CN101124555B (zh) 2012-05-09
US20060161722A1 (en) 2006-07-20
US7315916B2 (en) 2008-01-01
CN101095121A (zh) 2007-12-26
EP1828906A1 (en) 2007-09-05
EP1828906B1 (en) 2014-09-10
JP4787266B2 (ja) 2011-10-05
KR100914263B1 (ko) 2009-08-27
CN101124556A (zh) 2008-02-13
TW200632916A (en) 2006-09-16
CN100547565C (zh) 2009-10-07
CN101124555A (zh) 2008-02-13
TWI393140B (zh) 2013-04-11

Similar Documents

Publication Publication Date Title
KR100914263B1 (ko) 스크래치 패드 블록
US7386655B2 (en) Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7366826B2 (en) Non-volatile memory and method with multi-stream update tracking
US7412560B2 (en) Non-volatile memory and method with multi-stream updating
US7882299B2 (en) System and method for use of on-chip non-volatile memory write cache
US7433993B2 (en) Adaptive metablocks
US7395404B2 (en) Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US8296498B2 (en) Method and system for virtual fast access non-volatile RAM

Legal Events

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

Payment date: 20120802

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130801

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140808

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 10