KR20060130081A - 대형 소거 블록을 갖는 비휘발성 메모리 시스템의 관리 - Google Patents

대형 소거 블록을 갖는 비휘발성 메모리 시스템의 관리 Download PDF

Info

Publication number
KR20060130081A
KR20060130081A KR1020067012947A KR20067012947A KR20060130081A KR 20060130081 A KR20060130081 A KR 20060130081A KR 1020067012947 A KR1020067012947 A KR 1020067012947A KR 20067012947 A KR20067012947 A KR 20067012947A KR 20060130081 A KR20060130081 A KR 20060130081A
Authority
KR
South Korea
Prior art keywords
data
block
pages
blocks
group
Prior art date
Application number
KR1020067012947A
Other languages
English (en)
Other versions
KR101118507B1 (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 KR20060130081A publication Critical patent/KR20060130081A/ko
Application granted granted Critical
Publication of KR101118507B1 publication Critical patent/KR101118507B1/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본원은 모두 소거되는 메모리 셀의 블록을 갖고 블록 당 많은 수의 페이지의 유닛에서 소거된 상태로부터 프로그램가능한 유형의 비휘발성 메모리 시스템에 관한 것이다. 블록의 불과 몇 페이지의 데이터가 갱신되는 경우, 이 갱신된 페이지는 이 목적을 위하여 제공되는 또 다른 블록으로 기록된다. 다수의 블록으로부터 갱신된 페이지는 자신의 원래 어드레스 오프셋들과 반드시 대응하지 않는 순서로 다른 블록으로 프로그램된다. 그 후, 이와 같이 행하는 것이 메모리의 성능에 영향을 미치지 않을 때 이 유효한 원래 및 갱신된 데이터는 나중에 결합된다. 블록의 많은 수의 페이지의 데이터가 갱신되는 경우, 이 갱신된 페이지는 비사용된 소거 블록에 기록되고 불변의 페이지는 또한 상기 비사용된 블록에 기록된다. 소수의 페이지의 갱신을 상이하게 처리함으로써, 메모리 성능은 작은 갱신이 행해질 때 개선된다. 메모리 제어기는 메모리 시스템의 호스트에 의한 갱신에 응답하여 이들 다른 블록을 동적으로 생성하고 동작시킬 수 있다.
플래시 메모리 어레이, 제어기, 상태 레지스터, 데이터 레지스터, 어드레스 레지스터

Description

대형 소거 블록을 갖는 비휘발성 메모리 시스템의 관리{MANAGEMENT OF NON-VOLATILE MEMORY SYSTEMS HAVING LARGE ERASE BLOCKS}
본 발명은 일반적으로 플래시 메모리와 같은 반도체 비휘발성 메모리 시스템의 동작에 관한 것이며, 특히 초대형 소거가능 메모리 셀 블록을 갖고 데이터를 프로그래밍 및 판독하기 위한 초소형 유닛의 블록에 액세스하는 이와 같은 메모리 시스템의 동작에 관한 것이다.
오늘날 이용되는 많은 상업적으로 성공한 비휘발성 메모리 제품이 특히 하나 이상의 집적 회로 칩 상에 형성되는 플래시 EEPROM(전기적으로 소거가능하고 프로그램가능한 판독 전용 메모리)의 어레이를 이용하는 소형 폼 팩터 카드의 형태로 존재한다. 각 집적 회로 칩 상의 메모리 제어기(통상적으로 그러나 반드시 필요로 하지 않는다)는 카드가 탈착가능하게 접속되고 이 카드 내의 메모리 어레이 동작을 제어하는 호스트와 인터페이스한다. 이와 같은 제어기는 전형적으로, 마이크로프로세서, 일부 비휘발성 판독 전용 메모리(ROM), 휘발성 랜덤 액세스 메모리(RAM) 및 데이터의 프로그래밍 및 판독 동안 데이터가 제어기를 통과할 때 데이터로부터 에러 정정 코드(ECC)를 계산하는 하나 이상의 특수용 회로를 포함한다. 일부 상업적 으로 이용가능한 카드는 CompactFlashTM(CF) 카드, 멀티미디어 카드(MMC), 보안 디지털(SD) 카드, 스마트 미디어 카드, 개인용 태그(P-Tag) 및 메모리 스틱 카드이다. 호스트는 컴퓨터, 노트북 컴퓨터, 개인 휴대 정보 단말기(PDAs), 각종 데이터 통신 장치, 디지털 카메라, 셀룰러 전화, 휴대용 오디오 플레이어, 자동차 사운드 시스템 및 유사한 유형의 장비를 포함한다. 메모리 카드 이외에도, 이 유형의 메모리는 대안적으로 각종 유형의 호스트 시스템에 임베드될 수 있다.
2개의 일반적인 메모리 셀 어레이 아키텍쳐는 NOR 및 NAND로 시장에서 발견된다. 전형적인 NOR 어레이에서, 메모리 셀은 칼럼 방향으로 신장하는 인접 비트 라인 소스 및 드레인 확산과 셀의 로우를 따라서 신장하는 워드 라인에 접속되는 제어 게이트 간에 접속된다. 메모리 셀은 소스 및 드레인 간의 셀 채널 영역의 일부분 위에 위치되는 적어도 하나의 저장 소자를 포함한다. 따라서, 저장 소자 상의 프로그램된 전하 레벨은 적절한 전압을 어드레스된 메모리 셀에 인가함으로써 판독되는 셀의 동작 특성을 제어한다. 이와 같은 셀, 메모리 시스템에서 이들 셀의 이용 및 이들 셀을 제조하는 방법의 예들이 미국 특허 5,070,032, 5,095,344, 5,313,421, 5,315,541, 5,343,063, 5,661,053, 및 6,222,762에 제공된다.
NAND 어레이는 각 비트 라인 간의 하나 이상의 선택 트랜지스터를 따라서 접속되는 16 또는 32와 같은 2개 이상의 메모리 셀의 일련의 스트링 및 기준 전위를 이용하여 셀의 칼럼을 형성한다. 워드 라인은 많은 수의 이들 칼럼 내에서 셀을 가로질러 신장한다. 칼럼 내의 각 셀은 스트링 내의 나머지 셀을 턴온시킴으로써 프 로그래밍 동안 판독되고 검증되어, 스트링을 통해서 흐르는 전류가 어드레스된 셀에 저장된 전하 레벨을 따르도록 한다. NAND 아키텍쳐 어레이 및 메모리 시스템의 부분으로서 이의 동작의 예들은 미국 특허 5,570,315, 5,774,397, 6,046,935, 6,522,580에서 알 수 있다.
상술된 특허에 논의된 바와 같은 현재 플래시 EEPROM 어레이의 전하 저장소자는 가장 보편적으로, 통상 도전적으로 도핑된 폴리실리콘 재료로 형성되는 도전성 플로우팅 게이트이다. 플래시 메모리 시스템에 유용한 대안적인 유형의 메모리 셀은 도전성 플로우팅 게이트 대신에 비도전성 유전 재료를 이용하여 비휘발성 방식으로 전하를 저장한다. 이산화 실리콘, 질화 실리콘 및 이산화 실리콘(ONO)로 형성된 삼중층 유전체는 메모리 셀 채널 위의 반도체 기판의 표면 및 도전성 제어 게이트 간에 샌드위치된다. 이 셀은 셀 채널로부터 질화물 내로 전자를 주입함으로써 프로그램되는데, 이들 전자는 이 질화물에서 트랩되어 제한된 영역에 저장되고 핫 정공을 이 질화물 내로 주입함으로써 소거된다. 유전 저장 소자를 이용하는 여러 특정 셀 구조 및 어레이는 Harari 등의 미국 특허 출원 2003/0109093호에 기재되어 있다.
대부분의 모든 집적 회로 애플리케이션에서처럼, 집적 회로를 구현하는데 요구되는 실리콘 기판 면적을 축소하고자 하는 압박감은 마찬가지로 플래시 EEPROM 메모리 셀 어레이에도 존재한다. 소정 크기의 메모리 카드 및 이외 다른 유형의 패키지의 저장 용량을 증가시키거나 용량 증가 및 크기 감소 둘 다를 위하여, 실리콘 기판의 소정 에어리어에 저장될 수 있는 디지털 데이터의 량을 증가시키는 것이 여 전히 바람직하다. 데이터의 저장 밀도를 증가시키는 한 가지 방법은 메모리 셀 당 데이터의 1 비트 및/또는 저장 유닛 또는 소자당 1비트 이상을 저장하도록 하는 것이다. 이는 저장 소자 충전 레벨 전압 범위의 윈도우를 2가지 이상의 상태로 분할함으로써 성취된다. 4가지 이와 같은 상태를 이용하면, 각 셀이 데이터의 2비트를 저장하도록 하며, 8가지 상태를 이용하면 저장 소자당 데이터의 3비트를 저장하도록 하는, 등등이다. 저장 소자의 충전 레벨은 자신의 메모리 셀의 임계 전압(통상 VT라 칭함)을 제어하는데, 이는 셀의 저장 상태를 판독의 기초로서 이용된다. 임계 전압 윈도우는 통상적으로 다수의 범위로 분할되는데, 한 범위는 메모리 셀의 2가지 이상의 저장 상태 각각을 위한 것이다. 이들 범위는 각 셀의 저장 상태를 판독하기 위한 공칭 감지 기준 레벨을 각각 포함하는 가드 밴드(guard bands)에 의해 분리된다.
플로우팅 게이트 및 이의 동작을 이용하는 다중 상태 플래시 EEPROM 구조는 미국 특허 5,043,940 및 5,172,238에 서술되고, 상술된 미국 출원 일련 번호 10/280,352의 유전체 플로우팅 게이트를 이용하는 구조를 위한 것이다. 다중 상태 메모리 셀 어레이의 선택된 부분은 또한, 미국 특허 5,930,167 및 6,456,528에 기재된 방식으로 여러 가지 이유들 때문에 2가지 상태(2진)로 동작될 수 있다.
전형적인 플래시 EEPROM 어레이의 메모리 셀은 모두 소거되는 셀의 이산 블록로 분할된다. 즉, 이 블록은 소거 유닛, 즉 동시에 소거될 수 있는 최소수의 셀이다. 각 블록은 전형적으로, 하나 이상의 데이터 페이지를 저장하는데, 하나 이상의 페이지가 상이한 서브-어레이 또는 플레인에서 병렬로 프로그램 또는 판독될 수 있지만, 이 페이지는 프로그래밍 및 판독의 최소 유닛이다. 각 페이지는 전형적으로, 하나 이상의 데이터 섹터를 저장하며, 이 섹터의 크기는 호스트 시스템에 의해 규정된다. 일 예의 섹터는 자기 디스크 드라이브에 설정된 표준을 따른 사용자 데이터의 512 바이트 더하기 사용자 데이터 및/또는 이들을 저장하는 블록에 관한 오버헤드 정보의 일부 바이트의 수를 포함한다. 이와 같은 메모리는 전형적으로 각 블록 내의 16, 32개 이상의 페이지로 구성되고, 각 페이지는 데이터의 하나 또는 극소수의 호스트 섹터를 저장한다.
사용자 데이터를 메모리 어레이에 프로그램하고 이로부터 사용자 데이터를 판독하는 동안 병렬화 정도를 증가시키기 위하여, 이 어레이는 전형적으로, 통상 플레인이라 칭하는 서브-어레이로 분할되는데, 이 플레인은 데이터 레지스터 및 이외 다른 회로를 포함하여 데이터 섹터가 여러 또는 모든 플레인 각각에 또는 이들로부터 동시에 프로그램 또는 판독되도록 병렬 동작을 허용한다. 단일 집적 회로 상의 어레이는 물리적으로 플레인으로 분할되거나, 각 플레인은 분리된 하나 이상의 집적 회로 칩으로부터 형성될 수 있다. 이와 같은 메모리 구현방식의 예들이 미국 특허 5,798,968 및 5,890,192에 서술되어 있다.
메모리를 더욱 효율적으로 관리하기 위하여, 블록은 가상 블록 또는 메타블록에 모두 링크될 수 있다. 즉, 각 메타블록은 여러 또는 모든 플레인 각각으로부터의 한 블록을 포함하도록 규정된다. 메타블록의 이용은 미국 특허 출원 공개 번호 2002-0099904에 서술되어 있다. 메타블록은 데이터를 프로그래밍 및 판독하기 위한 수신지로서 호스트 논리 블록 어드레스에 의해 식별된다. 유사하게, 메타블록 의 모든 블록은 모두 소거된다. 이와 같은 대형 블록 및/또는 메타블록으로 동작되는 메모리 시스템 내의 제어기는 호스트로부터 수신되는 논리 블록 어드레스(LBAs) 및 메모리 셀 어레이 내의 물리적 블록 수(PBNs) 간의 트랜스레이션을 포함한 다수의 기능을 수행한다. 중간 량의 논리적 블록 수(LBNs)가 또한 이용될 수 있는데, 한 LBN은 전형적으로 하나 이상의 메모리 어레이 블록 또는 메타블록의 저장 용량과 동일한 데이터 량을 포함하는 LBAs의 범위를 지정한다. 블록 내의 각 페이지는 전형적으로 블록 어드레스 내의 오프셋에 의해 식별된다. 어드레스 트랜스레이션은 종종 논리적 블록 수(LBNs) 및 논리적 페이지를 이용하는 것을 수반한다.
이상적인 경우에, 블록의 모든 페이지 내의 데이터 모두는 비할당된 소거 블록 내의 페이지에 갱신된 데이터를 기록함으로써 갱신되고 나서, 논리적 대 물리적 블록 수 테이블은 새로운 어드레스로 갱신된다. 그 후, 원래 블록은 소거되도록 이용될 수 있고 장차의 이용을 위하여 소거된 블록 풀(pool)에 배치된다. 그러나, 소정 블록 내의 모든 페이지보다 작은 페이지 수에 저장된 데이터는 갱신되어야 만 하는 것이 더욱 일반적이다. 소정 블록의 나머지 페이지에 저장된 데이터는 불변인 채로 유지된다. 이것의 발생 확률은, 블록 당 저장된 데이터의 페이지 수가 더 높게되는 시스템에 더 높게 된다. 현재, 이와 같은 부분적인 블록 갱신을 성취하기 위하여 이용되는 한 가지 기술은 소거된 블록의 대응하는 페이지 수로 갱신될 페이지의 데이터를 기록하고 나서, 원래 블록으로부터의 불변의 페이지를 새로운 블록의 페이지로 복제하는 것이다. 그 후, 원래 블록은 소거되어 소거된 블록 풀에 부가된다. 시간에 걸쳐서, 재기록되고 갱신된 호스트 데이터 파일에 따라서, 많은 블 록은 유효 데이터를 포함하는 상대적으로 소수의 페이지 및 더 이상 현재가 아닌 데이터를 포함하는 나머지 페이지로 종료될 수 있다. 어레이의 데이터 저장 용량을 효율적으로 이용할 수 있기 위하여, 유효 데이터의 논리적으로 관련된 데이터 페이지는 다수의 블록들 중 프래그먼트(fragments)로부터 모두 전체 시간에 걸쳐서 수집되고 더욱 적은 수의 블록으로 모두 통합된다. 이 공정을 통상 "가비지 콜렉션(garbage collection)"이라 칭한다.
대안적인 기술은 갱신된 페이지를 원래 데이터를 포함한 블록과 다른 블록에 유사하게 기록하지만, 동일한 논리 어드레스에 의해 식별되는 교체된 데이터와 갱신된 데이터를 구별하도록 데이터를 적절하게 마킹함으로써 데이터의 다른 페이지를 새로운 블록으로 복제할 필요성을 제거한다. 이는 상술된 미국 특허 출원 2002-0099904에 논의된 요지이다. 그 후, 데이터가 판독될 때, 새로운 블록의 페이지로부터 판독된 갱신된 데이터는 현재 남아 있는 원래 블록의 페이지로부터 판독되는 불변의 데이터와 결합되고, 무효 교체된 데이터는 무시된다.
메모리 시스템 제어기는 자신의 구조 및 제어 펌웨어를 이용하여 호스트에 의해 부여되는 다양한 조건하에서 데이터를 프로그램하고 판독할 수 있도록 하는 것이 바람직하다. 한 가지 극단적인 경우에서, 오디오, 비디오 또는 다른 스트리밍 데이터는 높은 레이트의 속도로 수신될 수 있고, 이 메모리 시스템은 실시간으로 데이터를 저장하도록 요구받는다. 또 다른 극단적인 경우에, 호스트는 메모리 시스템으로 하여금 한번에 데이터의 한 섹터를 간헐적으로 프로그램하도록 하고 비순차적인 논리적 어드레스를 갖는 여러 개의 단일 데이터 섹터 모두를 프로그램하도록 할 수 있다. 이 데이터 섹터는 또한 빈번하게 갱신될 수 있다. 이와 같은 단일 섹터 프로그래밍은 예를 들어 어레이에 저장된 파일 할당 테이블(FAT)이 기록 또는 갱신될 때 발생될 수 있다. 대형 소거 블록 메모리에 대한 이와 같은 동작으로 인한 문제는 메모리의 저장 용량을 효율적으로 이용하기 위하여 빈번한 가비지 콜렉션이 필요로 된다는 것이다. 이 제어기는 가비지 콜렉션을 수행하기 위하여 메모리 내로 그리고 밖으로 데이터를 전송하는 1차적인 기능을 중단할 필요가 있는데, 이로 인해 시스템 성능에 악영향을 미친다.
따라서, 메모리 시스템의 전체 수행성능을 증가시키기 위하여, 호스트로부터 수신된 기록 명령의 특성에 따라서 데이터를 프로그램하는데 적어도 2개의 상이한 메커니즘이 유지된다. 일반적으로, 비순차적으로 어드레스된 데이터의 저장은 동작 유형에 따라서 메모리 시스템 수행성능을 최적화하는 방식면에서 순차적으로 어드레스된 데이터의 저장과 다르게 취급된다.
일 예에서, 데이터의 단일 호스트 유닛을 프로그램하기 위한 호스트 명령(섹터는 명령 예이다), 순차적인 논리적 어드레스를 갖는 소수의 유닛 또는 비순차적인 논리적 어드레스를 갖는 데이터 유닛은 각 논리적 블록 또는 메타블록의 저장 용량에 비해서 대형이고 순차적인 논리적 어드레스를 갖는 다수의 데이터 유닛을 프로그램하기 위하여 호스트 명령과 다르게 취급된다. 단일의 소수의 순차적인 데이터 유닛 또는 비순차적인 데이터 유닛은 제1 유형의 지정된 논리적 블록 또는 메타블록에 기록되는 반면, 많은 수의 순차적인 데이터 유닛은 지정된 논리적 블록 또는 메타블록의 제2 유형에 기록된다. 제1 유형의 지정된 블록 또는 메타블록(본원에서 E1이라 칭함)은 광범위의 논리적 어드레스에 걸쳐서 확산되는 데이터의 갱신을 수신하는 반면에, 제2 유형의 지정된 블록 또는 메타블록(본원에서 E2라 칭함)은 단일 블록으로 제한되는 논리적 어드레스의 범위에 저장되는 데이터의 갱신을 수신한다. 게다가, 단일 또는 비순차적 데이터 유닛은 논리적 어드레스를 둘러싸면서 다른 데이터 유닛보다 더욱 빈번하게 갱신되면, 이 갱신은 이들 유닛(본원에서 E1이라 칭함)의 논리적 어드레스 범위에 전용되는 제1 유형의 지정된 논리적 블록 또는 메타블록에 저장될 수 있다.
이들 지정된 블록의 주요 결과는 블록에 저장될 수 있는 더 적은 데이터가 갱신될 때 현재 필요로 되는 데이터 통합(data consolidation)의 량을 감소시킨다. 갱신된 데이터는 단일 물리적 블록에서 동일한 논리적 블록의 불변의 데이터와 즉각 재결합될 필요가 없음으로, 시스템 수행성능을 개선시킨다. 이와 같은 재결합은 메모리 시스템의 데이터 획득 및 저장과 덜 간섭되는 시간까지 연기될 수 있다. 게다가, 각종 지정된 블록은 동적으로 형성되어 수신되는 프로그래밍 명령을 수용하여, 광범위의 다양한 데이터 저장 애플리케이션에서 고 수행성능 동작을 위한 메모리 시스템을 적응시킨다.
본 발명의 부가적인 양상들, 특징들 및 장점들은 첨부 도면들과 관련한 이하의 예시적인 실시예에 포함되어 있다. 본원 목적을 위한 모든 특허들, 특허 출원들, 물품 공개들 및 이외 다른 문서들은 본원에 참조되어 있다.
도1은 메모리 셀 어레이, 제어 논리 및 데이터와 어드레스 레지스터를 지닌 전형적인 기존 EEPROM 메모리 장치의 블록도.
도2는 시스템 제어기를 갖는 도1의 여러 메모리 장치를 이용하는 아키텍쳐를 도시한 도면.
도3은 도1의 메모리 어레이의 예로서 2개의 플레인에서 블록의 배열을 개요적으로 도시한 도면.
도4는 다수의 페이지(0-15)를 저장하는 도3의 한 블록의 예를 도시한 도면.
도5는 도3 및 도4의 블록의 페이지에 저장된 데이터 섹터를 도시한 도면.
도6은 다중-페이징된 블록의 전체 페이지보다 적은 데이터를 갱신하는 기존 공정을 도시한 도면.
도7A 및 도7B는 도6의 원래 및 새로운 블록 각각을 위한 대응하는 논리적 및 물리적 페이지 어드레스의 테이블.
도8은 도3의 어레이의 한 플레인 내에서 통합 블록(E1 및 E2)의 지정의 일 예를 도시한 도면.
도9는 또 다른 블록의 몇 개의 페이지에서 데이터를 갱신하기 위하여 도8의 통합 블록(E1)의 이용 예를 도시한 도면.
도10은 도9의 페이지에 저장된 데이터 섹터 내에 데이터 필드의 예를 도시한 도면.
도11A 및 도11B는 블록(E2)를 이용하지만 도8의 블록 E1을 이용하지 않는 소정 데이터 블록의 갱신된 데이터 페이지를 통합하는 순차적인 동작의 일 예를 도시 한 도면.
도12A, 12B 및 12C는 도8의 블록 E1 및 E2 둘 다를 이용하는 소정 데이터 블록의 갱신된 데이터 페이지를 통합하는 순차적인 동작의 일 예를 도시한 도면.
도13A, 13B, 및 13C는 도8의 블록 E1 및 E2 둘 다를 이용하는 소정 블록의 몇개의 데이터 페이지를 갱신하기 위하여 순차적인 동작의 또 다른 예를 도시한 도면.
도14는 도3의 어레이의 유닛 내에서 통합 블록(E1 및 E2)의 지정의 또 다른 예를 도시한 도면.
도15A 및 도15B는 도14의 통합 블록(E1 및 E2) 둘 다를 이용하는 소정 블록의 몇 개의 데이터 페이지를 갱신하기 위하여 순차적인 동작의 예를 도시한 도면.
도16은 메타블록에 데이터를 저장하는 메모리 아키텍쳐의 유형에서 블록(E1 및 E2)의 이용을 도시한 도면.
도17은 메타블록인 E1과 함께 도16의 메모리 아키텍쳐의 수정을 도시한 도면.
도18은 E1, dE1(전용의 E1) 및 E2 블록의 세트로 논리적 어드레스를 맵핑하는 예를 도시한 도면.
도19는 통합 블록(E1, dE1 및 E2)을 이용하는 호스트 기록 명령에 응답하여 도1-5의 메모리 시스템의 동작을 도시한 흐름도.
도20은 임의의 E1, dE1 또는 E2 블록을 할당하기 위하여 도18의 공정에서 취해진 단계들을 도시한 흐름도.
도1은 전형적인 플래시 메모리 장치 내부 아키텍쳐를 도시한 것이다. 이 도면의 주요 특징들은 외부 제어기, 즉 메모리 제어 회로(450)와 인터페이스하는 입력/출력(I/O) 버스(411) 및 제어 신호들(412)을 포함하여, 명령, 어드레스 및 상태 신호들용 레지스터로 내부 메모리 동작을 제어한다. 플래시 EEPROM 셀의 하나 이상의 어레이들(400)이 포함되는데, 각 어레이는 자체 로우 디코더(XDEC)(401) 및 칼럼 디코더(YDEC)(402), 감지 증폭기 및 프로그램 제어 회로(SA/PROG)(454)의 그룹, 및 데이터 레지스터(404)를 갖는다. 현재, 메모리 셀은 통상적으로 저장 소자로서 하나 이상의 도전성 플로우팅 게이트를 포함하지만, 이 대신에 전하 트랩핑 유전체를 포함한 이외 다른 다른 장기간 전자 전하 저장 소자가 이용될 수 있다. 메모리 셀 어레이는 각 저장 소자를 위하여 규정된 2개의 전하 레벨로 동작되어 각 소자에 데이터의 1비트를 저장한다. 대안적으로, 2가지 이상의 저장 상태는 각 저장 소자를 위하여 규정될 수 있는데, 이 경우에 1비트 이상의 데이터는 각 저장 소자에 저장된다.
바람직한 경우, X 디코더들, Y 디코더들, 프로그램/검증된 회로, 데이터 레지스터 등을 갖는 다수의 어레이들(400) 각각은 예를 들어 본 출원의 양수인인 Sandisk Corporation에게 양도되어 본원에 전반적으로 참조된 1999년 3월 30일에 허여된 미국 특허 5,890,192호에 의해 개시된 바와 같이 제공된다. 관련된 메모리 시스템 특징들은 본원에 전반적으로 참조된 Kevin Conely 등이 2000년 2월 17일에 출원한 공동 계류중인 특허 출원 일련 번호 09/505, 555에 서술되어 있다.
외부 인터페이스 I/O 버스(411) 및 제어 신호들(412)은 다음을 포함할 수 있다.
CS-칩 선택: 플래시 메모리 인터페이스를 작동시키기 위하여 이용됨.
RS-판독 스트로브: I/O버스가 메모리 어레이로부터 데이터를 전송하기 위하여 이용된다는 것을 나타내기 위하여 이용됨.
WS-기록 스트로브: I/O버스가 메모리 어레이에 데이터를 전송하기 위하여 이용된다는 것을 나타내기 위하여 이용됨.
AS-어드레스 스트로브: I/O 버스가 어드레스 정보를 전송하기 위하여 이용된다는 것을 표시.
AD[7:0]-어드레스 데이터 버스: 이 I/O 버스는 메모리 제어(450)의 플래시 메모리 명령, 어드레스 및 데이터 레지스터 및 제어기 간에 데이터를 전송하기 위하여 이용됨.
이 인터페이스는 동일한 기능을 제공하는 다른 신호 구성이 대신 이용될 때의 예로서만 제공된다. 도1은 관련된 요소를 갖는 단지 하나의 플래시 메모리 어레이(400)만을 도시하지만, 다수의 이와 같은 어레이는 공통 인터페이스 및 메모리 제어 회로를 공유하지만, 이 어레이들 간에서 병렬 판독 및 프로그램 동작을 허용하도록 각 XDEC, YDEC, SA/PROG, 및 DATA REG 회로를 갖는 단일 플래시 메모리 칩 상에 존재할 수 있다.
데이터는 데이터 레지스터(404)를 통해서 메모리 어레이 및 I/O버스 AD[7:0](411)에 데이터 레지스터의 커플링을 통해서 외부 제어기 간에 전송된다. 데이터 레지스터(404)는 또한 감지 증폭기/프로그래밍 회로(454)에 결합된다. 각 감지 증폭기/프로그래밍 회로 소자에 결합되는 데이터 레지스터의 소자의 수는 메모리 셀의 각 저장 소자에 저장되는 비트의 수에 좌우될 수 있다. 한 가지 대중적인 형태로, 플래시 EEPROM 셀 각각은 전하 저장 소자로서 하나 이상의 플로우팅 게이트를 포함한다. 메모리 셀이 다상 모드로 동작되는 경우, 각 전하 저장 소자는 2 또는 4와 같은 다수의 비트를 저장할 수 있다. 대안적으로, 메모리 셀은 저장 소자 당 데이터의 한 비트를 저장하도록 2진 모드로 동작될 수 있다.
로우 디코더(401)는 액세스될 물리적 페이지를 선택하도록 어레이(400)를 위한 로우 어드레스를 디코딩한다. 로우 디코더(401)는 메모리 제어 논리(450)로부터 내부 로우 어드레스 라인들(419)을 통해서 로우 어드레스를 수신한다. 칼럼 디코더(402)는 메모리 제어 논리(450)로부터 내부 칼럼 어드레스 라인들(429)을 통해서 칼럼 어드레스를 수신한다.
도2는 전형적인 비휘발성 데이터 저장 시스템의 아키텍쳐를 도시하는데, 이 경우에 한 아키텍쳐는 저장 매체로서 플래시 메모리 셀을 이용한다. 한 가지 형태에서, 이 시스템은 호스트의 전기 리셉터클 내로 삽입될 때 호스트 인터페이스를 제공하도록 한 변을 따라서 신장하는 전기 커넥터를 갖는 탈착가능한 카드 내에서 캡슐화된다. 대안적으로, 도2의 시스템은 영구 설치되어 임베드된 회로의 형태 또는 이와 다른 형태로 호스트 시스템에 임베드될 수 있다. 이 시스템은 고레벨 호스트 및 메모리 제어 기능을 수행하는 단일 제어기(301)를 이용한다. 플래시 메모리 매체는 하나 이상의 플래시 메모리 장치로 구성되는데, 이와 같은 장치 각각은 종 종 자신의 집적 회로 칩 상에 형성된다. 이 시스템 제어기 및 플래시 메모리는 제어기(301)가 명령, 어드레스를 로딩하도록 하고 데이터를 플래시 메모리 어레이에 그리고 이로부터 전송하도록 하는 버스(302)에 의해 연결된다. 이 제어기(301)는 호스트 시스템(도시되지 않음)과 인터페이스하는데, 이 시스템에 의해 사용자 데이터는 플래시 메모리 어레이로 그리고 이로부터 전송된다. 도2의 시스템이 카드에 포함되는 경우에, 호스트 인터페이스는 카드 및 호스트 장비 상에 메이팅 플러그 및 소켓 어셈블리(도시되지 않음)을 포함한다. 제어기(301)는 호스트로부터 명령을 수신하여 특정 논리적 어드레스에서 시작하는 사용자 데이터의 하나 이상의 섹터를 판독 또는 기록한다. 이 어드레스는 메모리 셀의 물리적 블록의 경계와 정렬하거나 하지 않을 수 있다.
플래시 메모리 어레이(400)는 통상, 본원에서 플레인이라 칭하는 2개 이상의 서브 어레이로 분할되는데, 이와 같은 2개의 플레인(400a 및 400b)이 도3에 도시되어 있다. 4개 또는 8개와 같은 많은 수의 플레인이 또한 메모리 어레이(4000에 포함될 수 있다. 각 플레인은 도시를 간단히 하기 위하여 16개의 물리적 블록(0-15)을 갖는 것으로 도시되었지만, 실제 플레인은 전형적으로 더 많은 블록을 포함할 것이다. 이 블록은 한 번에, 즉 소거 유닛으로 소거될 수 있는 최소수의 메모리 셀을 포함한다. 각 플레인은 자신의 데이터 레지스터들(404a 및 404b) 및 프로그래밍 회로들(454a 및 454b) 각각을 갖는다. 이는 플레인들(400a 및 400b) 각각의 메모리 셀 블록으로 데이터를 동시에 프로그램하도록 한다. 각 플레인은 다른 플레인들과 다소 독립적으로 서브-어레이로서 동작될 수 있다.
도4는 도시를 간편하게 하기 위하여 데이터의 16개 페이지들(0-15)을 포함하는 도3의 블록들 중 한 블록을 도시하는데, 그 이유는 각 블록이 더 많은 페이지를 포함할 것이기 때문이다. 페이지는 한 프로그래밍 동작으로, 즉 프로그램가능 유닛으로 모두 프로그램될 수 있는 최소수의 메모리 셀을 포함한다. 각 페이지는 메모리 제어기에 의해 발생되는 일부 오버헤드 데이터가 통상적으로 부가되는 호스트로부터의 데이터의 하나 이상의 섹터를 저장한다. 페이지에 저장된 데이터 섹터의 예가 도5에 도시되는데, 이는 사용자 데이터(441)의 정보 및/또는 데이터 섹터가 저장되는 물리적 블록의 정보를 포함하는 오버헤드 데이터(443)와 더불어 호스트로부터 얻어진 사용자 데이터(441)를 포함한다. 섹터 내의 사용자 데이터(441)의 양은 간편하게는 데이터의 512 바이트들일 수 있다. 이 저장 유닛은 특히 메모리 시스템이 데이터 섹터의 유닛으로 메모리에 그리고 이 메모리부터 데이터를 전송하는 호스트에 이용될 때 유용하다. 오버헤드 데이터는 사용자 데이터의 각 512 바이트를 위한 16 바이트 정도일 수 있다.
메모리 시스템이 데이터의 1 비트가 각 메모리 셀 저장 소자에 저장되는 2진 상태로 동작되면, 사용자 데이터와 함께 오버헤드 데이터의 한 섹터는 528개의 메모리 셀을 차지한다. 메모리 셀이 4가지 상태로 동작되어 셀 당 데이터의 2비트를 저장하면, 단지 1/2 만큼 많은 셀이 단일 데이터 섹터를 저장하는데 필요로 되거나 동일한 수의 셀이 2개의 데이터 섹터를 저장할 수 있는데, 가령 각 셀은 2개의 데이터 섹터 각각으로부터 하나의 비트를 저장한다. 저장 소자 당 더 높은 수의 상태로의 동작은 어레이의 데이터 저장 밀도를 더욱 증가시킨다.
상술된 바와 같은 다수의 페이지로 분할되는 대용량 메모리 셀 블록을 갖는 종래 기술의 시스템에서, 갱신되지 않는 블록 내의 페이지의 데이터는 원래 블록으로부터 호스트에 의해 기록되는 새로운 갱신된 데이터를 또한 포함하는 새로운 블록으로 복제될 필요가 있다. 이 기술은 도6에 도시되는데, 여기서 도3의 플레인들 중 한 플레인의 블록들 중 2개의 블록은 예를 들어 플레인 0의 블록(3 및 13)으로 도시된다. 원래 블록(3)의 페이지들(7-10) 내의 데이터는 도시된 갱신된 데이터의 4개의 페이지 만큼 갱신된다. 새로운 데이터는 비사용된 소거 블록(13)의 대응하는 페이지들(7-10)로 기록된다. 그 후, 원래 블록(13) 내의 페이지들(0-6 및 11-15)로부터의 불변의 사용자 데이터는 새로운 블록(13)의 대응 페이지로 복제된다. 새로운 블록(13)의 모든 페이지는 프로그래밍 동작의 단일 시퀀스에서 프로그램되는 것이 바람직하다. 블록(13)이 완전히 프로그램된 후, 원래 블록(3)은 소거되어 나중 이용을 위하여 소거된 블록 풀에 배치된다. 원래 블록에서 하나 이상의 페이지로부터 데이터를 판독한 다음 새롭게 할당된 블록에서 페이지로 이 데이터를 프로그래밍하는 것을 포함한 블록(3 및 13) 간의 데이터 복제는 메모리 어레이의 기록 수행성능 및 이용가능한 수명에 악영향을 미친다.
도7A 및 도7B를 참조하면, 부분적인 테이블은 도6과 관련하여 방금 설명된 데이터의 갱신 전(도7A) 및 후(도7B)에 논리적 블록을 원래 그리고 새로운 물리적 블록(3 및 13)의 맵핑을 도시한다. 데이터 갱신 전, 원래 블록(3)은 이 예에서, PBN3의 대응 페이지들(0-15)에서 LBN3의 페이지들(0-15)을 저장한다. 도6을 따라서 데이터 갱신 후, 새로운 블록(13)은 PBN13의 각 페이지들(0-15)에 LBN3의 페이지 들(0-15)을 저장한다. 어드레스 변환 테이블은 이 방식으로 갱신되어 도7B에 도시되어 있다. 그 후, LBN 3으로부터 데이터를 판독하기 위하여 호스트로부터의 요청 수신은 원래 물리적 블록(3)(PBN3) 대신에 물리적 블록3(PBN 13)으로 향한다.
각 페이지 내의 LBN은 어떤 상업용 플래시 메모리 제품에서 행해지는 것 처럼 이 페이지에 오버헤드 데이터로서 저장될 수 있다. 그 후, 제어기는 이들 페이지의 물리적 페이지 및 PBNs으로부터 판독되는 LBN 필드로부터 도7A 및 도7B에 도시된 형태의 테이블을 구성한다. 전체 시스템을 위하여 완전한 테이블의 일부만이 언제라도 저장될 필요가 있지만, 이 테이블은 액세스를 용이하게 하기 위하여 제어기의 휘발성 메모리에 저장될 수 있다. 이 테이블의 일부는 테이블 부분에 포함되는 블록을 포함하는 판독 또는 프로그래밍 동작에 바로 앞서 형성될 수 있다.
도6과 관련하여 서술된 것과 다르게 동작하는 다른 종래 기술의 시스템에서, 구/신 플래그는 교체된 데이터를 포함하는 페이지로부터 새로운 데이터를 포함하는 페이지를 구별하기 위하여 페이지 각각에 사용자 데이터와 함께 저장되는 오버헤드로서 포함된다. 단지 새로운 데이터만이 새롭게 할당된 블록에 기록된다. 갱신되지 않는 원래 블록의 페이지들 내의 데이터는 새로운 블록으로 복제될 필요가 없다. 그 후, 하나의 논리적 블록의 데이터는 2개의 물리적 블록들 간에서 분리되고 부분적으로 복제된다. 이는 더 많은 메모리 블록이 소정 메모리 용량을 갖는 시스템에 이용될 수 있도록 하는데 필요로 된다. 이는 또한, 우선적으로 이들 페이지를 소거할 필요 없이 구 페이지에 플래그를 기록하도록 하는 메모리를 이용할 필요가 있다.
각종 플래그는 전형적으로 LBN 및 ECC 필드와 같은 다른 관련된 오버헤드 데이터와 동일한 물리적 페이지에 오버헤드로서 저장된다. 따라서, 데이터가 교체된 페이지들 내의 구/신 플래그를 프로그램하기 위하여, 페이지가 다수의 프로그래밍 사이클을 지원할 필요가 있다. 즉, 메모리 어레이는 소거들 간의 적어도 2개의 스테이지에서 프로그램되도록 각 페이지를 위한 캐퍼빌러티를 가져여야 한다. 게다가, 블록은 더 높은 오프셋들 또는 어드레스를 갖는 블록 내의 다른 페이지가 이미 프로그램될 때 페이지를 프로그램하는 성능을 지원하여야 한다. 그러나, 일부 플래시 메모리의 제한은 블록 내의 페이지가 물리적으로 순차적인 방식으로 프로그램될 수 있다는 것을 규정함으로써 이와 같은 플래그의 이용을 방지한다. 게다가, 이와 같은 플래시 메모리에서, 페이지는 유한 수의 프로그램 사이클을 지원하고 어떤 경우에 프로그램된 페이지의 부가적인 프로그래밍이 허용되지 않는다. 많은 상이한 유형의 플래시 EEPROM이 존재하는데, 이각각은 소량의 통합된 회로 에어리어 상에 형성된 고 수행성능 메모리 시스템을 동작시키도록 작동되어야만 하는 제약을 제공한다.
필요로 되는 것은 호스트 이용 데이터 패턴을 토대로 데이터를 최적으로 관리하는 메커니즘이다.
본 발명의 예시적인 실시예의 설명
플래시 EEPROM, 시스템의 개발 경향은 각 블록에서 메모리 셀의 수를 크게 증가시켜 저장된 데이터의 량을 증가시켜, 집적된 메모리 회로 칩을 제조하는 비용을 감소시키는 것이다. 데이터의 512 또는 1024 섹터(528 바이트 각각)와 같은 블 록 크기가 고려되어, 사용자 및 오버헤드 데이터의 270,336 또는 540,672 바이트의 각 용량을 갖는다. 단지 하나의 섹터가 페이지 내에 포함되면, 동일한 수의 페이지가 존재하지만 2개 또는 아마도 그 이상의 데이터 섹터를 각 페이지에 포함시킴으로써 하나의 프로그래밍 동작의 부분으로서 프로그램되는 데이터 량을 증가시키는데, 이 경우에 소정수의 데이터 섹터를 저장하는 블록 내의 페이지 수는 감소된다. 그러나, 임의의 특정 구현방식의 상세사항과 관계없이, 블록 내 데이터의 일부만을 갱신하는 상술된 기존 기술은 각 블록의 데이터 저장 용량이 크게될 때 메모리 수행성능 및/또는 용량 이용율에 대한 악영향을 증가시킨다.
블록의 528 정도의 페이지들 중 또는 극소수의 페이지에서 데이터가 갱신되면, 도6과 관련하여 서술된 기존 기술은 구(old)로부터 신 블록까지 통상적으로 한번에 한 페이지씩 나머지 불변의 페이지를 복제하는데 필요로 되는 시간 량과 관련하여 상당히 증가된 오버헤드를 갖는 것을 알 수 있다. 이는 현재 실시간 데이터 저장 애플리케이션에서 이용시 더욱 더 작은 블록 크기로 인해 문제가 될 수 있지만, 이는 블록 크기가 증가될 때 더욱 나빠진다. 원래 블록에서 구 데이터 페이지를 태그하는 또 다른 기술이 이용되면, 갱신된 데이터의 몇몇 페이지는 새로운 블록에 남아있는 페이지가 비사용된채로 유지되는 확률로 또 다른 대형 블록에 기록된다.
그러므로, 본 발명의 한 양상을 따르면, 적어도 하나의 블록은 플레인에서 다른 블록들 중 일부 또는 전부의 데이터로 갱신되는 소량의 데이터를 수신하기 위하여 메모리의 각 플레인에 제공된다. 도8에 도시된 메모리 플레인에서, 본원에서 E1 블록으로 식별되는 한 가지 유형의 블록(10)이 지정된다. 후술되는 바와 같이 다르게 동작하는 각 메모리 플레인을 위하여 지정되는 적어도 한 가지 유형의 블록(E2 블록이라 칭함)이 존재한다. 플레인 내의 임의의 비사용된 블록은 E1 또는 E2 블록으로 지정될 수 있는데, 이 지정은 메모리의 동작 동안 전체 시간에 걸쳐서 변경될 수 있다. E1 및 E2 블록의 지정은 호스트의 프로그래밍 패턴에 좌우된다.
도9와 관련하여, E1 블록의 이용이 서술된다. 이 예에서, 블록3의 페이지들(7-10) 내의 데이터는 도6과 관련하여 상술된 예에서 처럼 갱신된다. 그러나, 갱신된 데이터를 새로운 블록 내의 동일한 페이지들 범위에 기록하는 대신에, 이들은 통상적으로 다음 순서로임의의 간편한 비사용된 소거 페이지들 내의 E1 블록에 기록된다. 도9에서, E1 블록은 자신의 페이지들(0-2)에 논리적 블록(7)의 3개의 페이지로부터의 갱신된 데이터를 저장하고 자신의 페이지들(3 및 4)에 논리적 블록(2)로부터의 갱신된 데이터를 저장하는 것으로 도시되어 있다. 논리적 블록(3)으로부터의 갱신된 데이터의 현재 페이지들(7-10)을 저장하기 위한 가장 간편한 장소는 다음 페이지들(5-8) 각각, 즉 순서대로 다음 4개의 페이지들 내이다. E1 블록의 나머지 소거 페이지들(9-15)은 다른 블록의 페이지로부터 갱신된 데이터를 저장하도록 이용될 수 있다.
갱신된 데이터를 저장할 때, 블록(3)의 페이지들(7-10) 내의 원래 데이터는 이 예에서 구식으로 된다. 블록(3)의 데이터를 판독할 때, 메모리 시스템 제어기는 E1 블록으로부터 갱신된 페이지들(7-10)을 식별하고 원래 블록 내의 페이지들(7-10)의 데이터 대신에 이들 데이터를 이용한다. 어드레스 맵은 이 목적을 위하여 제 어기의 고속 휘발성 메모리에 유지된다. 어드레스 맵을 위한 데이터는 시스템의 적어도 일부분 내의 페이지의 오버헤드 데이터 또는 E1 블록에 데이터를 포함한 비휘발성 메모리에 저장된 다른 데이터로부터 시스템의 초기화시 얻어진다. 이 데이터는 각 페이지의 오버헤드 데이터의 부분으로서 통상적으로 포함되는 각 페이지의 LBN을 포함한다.페이지가 임의의 특정 순서로 E1 블록에 기록되도록 제한되지 않기 때문에, 각 데이터 페이지의 오버헤드는 블록 내에서 자신의 논리적 페이지 오프셋을 포함한다. 그 후, 어드레스 맵의 데이터는 E1 블록에서 변경되는 임의의 데이터 페이지의 오버헤드 필드로부터 갱신된다.
지금까지는 E1 블록 내의 임의의 소정 페이지의 단지 하나의 갱신이 존재한다라고 가정하였다. 이는 일부 애플리케이션에서 그러하지만 다른 애플리케이션에선 그러하지 않다. 도9의 예에서, 예를 들어, 원래 블록(3)의 페이지(8)는 갱신된 제2 시간일 수 있고, 이 제2 갱신은 또한 상기 E1 블록, 즉 이용가능한 소거 페이지의 또 다른 블록에 저장된다. 블록(3)에 저장된 데이터를 판독할 때, 제어기는 또한, 제어기 메모리 내에 유지되는 테이블 또는 페이지들 그들 자신들로부터 E1 블록 내의 페이지의 헤더들(오버헤드 데이터)로부터 데이터를 판독한다. E1 블록 내의 프로그램된 페이지의 헤더는 도9의 예에서 최고 프로그램된 페이지 8 내지 페이지 0까지 매 시간마다 동일한 방향에서 판독된다. 페이지가 순서대로 기록되는 메모리의 유형에서 부닺치는 복제 갱신된 페이지의 경우에, 제어기는 역 순서로 판독되는 첫번째 페이지가 가장 최근 것이고 그 후 동일한 LBN 및 페이지 오프셋을 갖는 E1 블록 내의 모든 다른 페이지는 무시한다는 것을 인지한다. E1 블록 내의 페이지의 헤더는 또한 완전한 맵을 유지하기 위하여 메모리의 초기화 동안 판독될 수 있다.
동일한 LBN 및 페이지 오프셋을 갖는 2개의 페이지의 가장 최근의 것을 식별하는 더욱 일반적인 또 다른 방법으로서, 각 페이지의 오버헤드는 동일한 논리적 어드레스를 갖는 다른 페이지가 프로그램되는 적어도 시간에 대해서 프로그래밍 시간의 표시를 더 포함할 수 있다. 이는 제어기가 메모리의 특정 블록으로부터 데이터를 판독할 때 동일한 논리적 어드레스를 할당받는 데이터의 페이지의 상대적인 에이지(ages)를 결정하도록 한다. 이 기술은 갱신된 페이지가 이를 허용하는 메모리 시스템에 임의의 순서로 E1 블록에 기록되도록 한다. 이는 또한 단일 플레인 내의 하나 이상의 E1 블록을 갖는 메모리 시스템을 더욱 용이하게 동작시킨다. 현재 데이터로부터 구 데이터를 구별하는 이 방법은 상술된 미국 특허 출원 공개 2002-0099904에 더욱 자세하게 설명되어 있다.
타임 스탬프가 각 페이지에 기록될 수 있는 여러 가지 방법들이 존재한다. 가장 직접적인 방법은 자신과 관련된 페이지의 데이터가 프로그램될 때 시스템에 실시간 클록의 출력을 기록하는 것이다. 그 후, 동일한 논리적 어드레스를 갖는 프로그램된 페이지는 나중 시간에 기록된다. 그러나, 이와 같은 실시간 클록이 시스템에서 이용될 수 없을 때, 다른 기술들이 이용될 수 있다. 한 가지 특정 기술은 타임 스탬프로서 모듈로-N 카운터의 출력을 저장하는 것이다. 이 카운터의 범위는 동일한 논리적 페이지 수로 저장되도록 고려되는 페이지들 수 보다 하나 더 많아야 한다. 도9의 원래 블록(3)에서 특정 페이지의 데이터를 갱신할 때, 예를 들어, 제 어기는 데이터가 갱신되는 페이지의 오버헤드에 저장되는 카운트를 우선 판독하며, 이 카운트를 어떤 량, 가령 1만큼 증가시키고 나서 이 증가된 카운트를 E1 블록에 저장되는 새로운 갱신된 페이지에 기록한다. 이 카운트가 제어기 메모리에 유지되는 테이블에 포함되면, 이 제어기는 이 테이블로부터 이를 판독한다. 그렇치 않다면, 이 제어기는 갱신되는 페이지의 헤더로부터 카운트를 판독한다. 카운터는 N의 카운트에 도달할 때 0으로 롤 오버(roll over)한다. 동일한 LBN을 갖는 블록의 수는 N보다 작게되어 저장된 카운트의 값에서 불연속 점이 존재하도록 한다. 이는 시스템 카운터가 저 카운트 값을 갖는 LBN이 더 높은 카운트 값을 갖는 LBN보다 더욱 최근인 경우를 검출하도록 한다.
데이터를 판독하도록 요청받을 때, 이 제어기는 동일한 LBA 및 페이지 오프셋을 갖는 페이지의 오버헤드에서 타임 스탬프 카운트를 비교함으로써 새롭고 교체된 페이지의 데이터간을 구별한다. 가장 최근의 데이터 파일 버전을 판독할 필요성에 응답하여, 식별된 새로운 페이지로부터의 데이터는 갱신되지 않는 원래 페이지들과 함께 가장 최근 버전의 데이터 파일내로 어셈블된다.
도9의 각 페이지에 저장되는 데이터의 단일 섹터의 구조의 예가 도10에 도시된다. 최대 파트는 사용자 데이터(45)이다. 사용자 데이터로부터 계산된 에러 정정 코드(ECC)(47)는 또한 페이지에 저장된다. LBN 및 페이지 태그(논리적 페이지 오프셋)을 저장하는 필드(41), 타임 스탬프(43) 및 오버헤드 데이터로부터 계산되는 ECC(50)를 포함한 오버헤드 데이터(49)는 또한 페이지에 저장된다. 사용자 데이터 ECC(47)로부터 분리되는 오버헤드 데이터를 커버하는 ECC(50)를 가짐으로써, 오버 헤드(49)는 사용자 데이터로부터 개별적으로 판독되고 페이지에 저장된 모든 데이터를 전송할 필요 없이 유효한 것으로서 평가될 수 있다. 그러나, 대안적으로, 오버헤드 데이터(49)의 분리 판독이 빈번한 이벤트가 아닌 경우, 페이지 내 모든 데이터는 단일 ECC에 의해 커버되어 페이지 내 ECC의 총 비트수를 감소시킨다. ECC를 이용하는 대안으로서, 다른 공지된 리던던시 기술들이 대신 이용될 수 있다. 동일한 데이터 페이지의 다수의 버전을 추적하기 위한 부가적인 기술 설명은 상술된 미국 특허 출원 공개 2002-0099904에 포함되어 있다.
E1 블록은 예를 들어 단일 호스트 명령에 의해 갱신되는 페이지 수가 각 블록 내에 총 페이지의 수와 비교하여 작을 때 갱신을 위하여 이용된다. 충분히 큰 비율의 블록의 페이지가 갱신될 때, 도6과 관련하여 서술된 기존 기술을 이용하는 것이 더욱 효율적인데, 여기서 갱신되고 불변의 페이지는 유지되는 원래 페이지 순서로 새로운 블록에 직접 기록된다. 한 가지 공정 또는 다른 공정은 한번에 갱신되는 블록의 절대 페이지 수 및/또는 비율 및 갱신이 발생될 때 아마도 메모리의 동작의 다른 팩터에 따라서 제어기에 의해 선택된다. 한 가지 이와 같은 다른 팩터는 E2 블록으로서 지정될 수 있는 새로운 블록(13)에 페이지를 통합하도록 하는 것이 불편할 때 있을 수 있는데, 이 경우에 갱신된 데이터는 블록(E1)에 일시적으로 저장된다.
기동하는 2개의 갱신 기술들 간의 판정 기준으로서 작용하는 갱신된 페이지의 최적의 비율 또는 수는 다양한 방법으로 구성 및/또는 동작되는 메모리 시스템 간에서 상이할 수 있다. 그러나, 고정된 기준을 갖는 것이 구현하는데 가장 간편하 다. 예를 들어, 갱신되는 페이지의 수가 블록에서 페이지의 총 수의 50% 보다 작지만 적어도 하나의 페이지가 갱신되면, 도9의 새로운 기술이 이용된다. 이 비율이 50%와 같거나 크지만 적어도 한 페이지가 갱신되지 않으면, 도6의 기존 기술은 또는 이와 유사한 것이 이용된다. 판정 수는 예를 들어 어떤 시스템에서 75% 만큼 높거나 다른 시스템에선 25%만큼 낮을 수 있다. 판정 수를 선택하는 기준은 예를 들어 메모리 시스템의 수행성능(가령 핸들링 프로그래밍 동작 속도)을 최적화하는 기준일 수 있다. 이 수는 시스템 최적화를 위하여 제품 구성 동안 수정될 수 있도록 시스템 파라미터로서 저장될 수 있다. 알고리즘은 또한 제어기 동작에 포함되어 가비지 콜렉션 활동도를 포함하는 현재 호스트 동작의 히스토리를 토대로 판정 수를 갱신하여 최적화 한다.
판정이 인입하는 데이터를 E1 블록으로 향하도록 제어기에 의해 행해지면, 프로그래밍 동작 특성은 E2 블록으로 더욱 양호하게 지향되도록 하나 이상의 페이지를 E1 블록으로 기록한 후 검출될 수 있다. 일예의 상황은 순차적인 기록 명령이 단일 블록에 순차적인 페이지들, 즉 한번에 하나 또는 몇개의 페이지를 기록한다라는 것이 발견되었을 때이다. 이는 몇개의 이와 같은 페이지가 E1 블록으로 기록된 후 제어기에 의해 통지될 수 있고, 그 후 E1 블록으로의 부가적인 기록은 중단되고 나머지 순차적인 기록은 대신 E2 블록으로 향한다. 그 후, E1 블록으로 이미 기록된 이들 페이지는 E2 블록으로 전송된다. 이 절차는 이 프로그래밍 동작에 따라서 블록 E1의 페이지를 통합할 확률을 감소시킨다. 대안적으로, 순차적인 페이지 기록이 소거된 E1 블록에서 시작하는 경우에, 이 블록은 E2 블록으로 변환될 수 있다.
도11A는 갱신되는 페이지의 수는 소정 판정 레벨보다 높게 될 때 E2 블록(13)(도8)의 이용을 도시한 것이다. 이 상황에서, E1 블록(10)은 이용되지 않는다. 오히려, 원래 블록(3)에 저장된 페이지(P2-P11)의 갱신된 데이터 섹터는 이예로서 E2 블록(13)의 동일한 페이지(P1-P11)에 직접 기록되는데, 이 블록은 사전에 소거된다. 그 후, 불변의 원래 블록(3)의 나머지 페이지(P1, P2 및 P12-P15)의 데이터 섹터는 동일한 페이지 번호로 E2 블록(13)으로 복제된다. 대부분의 경우에, 하나 이상의 데이터 섹터가 페이지에 저장되는 경우, 페이지의 모든 데이터 섹터는 동시에 복제되는 것이 바람직하다. 도11B에 도시된 바와 같은 다음 단계는 원래 블록(3)을 소거하기 위한 것이고 이를 장차의 동작을 위하여 새로운 E2 블록으로서 지정한다. 도7A 및 7B에 도시된 유형의 변환 테이블은 동일한 LBN을 위한 변경된 PBN을 도시하기 위하여 갱신된다.
상술된 바와 같이, 한 블록의 데이터의 갱신된 페이지는 원래 블록에서와 같이 동일한 오프셋을 갖는 E2 블록의 페이지에 저장되는 것이 바람직하다. 그러나, 일부 애플리케이션을 위하여 대안적으로, 시스템 제어기는 원래 블록 내에서 이의 오프셋에 관계없이 E2 블록에 페이지를 저장할 수 있다. 이 페이지는 이 대안에서 E2 블록의 페이지(P0)로 시작하는 순서로 저장될 수 있다. 이는 통상적인 블록과 다른 E1 블록의 한 가지 특성을 채택하지만 E2 블록에 저장될 임의의 데이터 페이지의 하나 이상의 복제를 여전히 허용하지 않을 것이다. 이 대안적인 유형의 E2 블록이 이용될 때, E2 블록 내의 순서를 벗어난 페이지가 원래 블록의 페이지 오프셋을 갖는 또 다른 블록의 페이지로 전송될 수 있기 때문에 데이터 통합은 더욱 복잡 하게 되어, 원래 블록의 불변의 페이지들과 이들 갱신된 페이지를 결합시킨다.
E1 블록으로서 작용하기 위하여 제외되는 시스템에서 블록의 수를 제한할 수 있도록 하기 위하여, 작은 부분적 블록 갱신을 위한 예측된 요구를 충족하도록 이용될 수 있는 적절한 수의 소거된 E1 블록 페이지가 존재하도록 효율적으로 이용되는 것이 바람직하다. 그러므로, 간헐적인 통합은 1차적인 물리적 블록 및 E1 블록에 저장되는 논리적 블록의 데이터 페이지를 발생시킨다. 이는 논리적 블록에 속하는 E1 블록으로부터 갱신된 데이터 페이지들 중 적어도 일부를 제거하여, 장차 이용을 위하여 이들 페이지를 이용할 수 있게 한다. 이들은 단일 물리적 블록으로 통합된다.
이와 같은 소거 통합 동작(가비지 콜렉션)의 예는 도12A, 도12B 및 도12C의 시간 순차적인 블록도로 제공된다. 이들 도면각각에서, 상부도는 제일 먼저 (도12A) 특정 논리 블록의 데이터를 저장하는 1차적인 블록인 도8의 메모리 어레이 플레인의 블록(3)의 페이지의 이용을 나타낸다. 블록(3)의 페이지들(P7-P10)으로부터의 데이터는 갱신되지만, 데이터의 이들 페이지는 지정된 E1 블록(10)(도12A의 중간도)의 페이지들(P5-P10)에 저장된다. 블록(3)의 나머지 페이지들(P0-P6)은 유효 데이터를 포함한다. E1 블록(10)의 다른 페이지들(P0-P4)는 도8의 블록(3)과 다른 블록으로부터의 갱신된 데이터를 포함한다.
E1 블록의 페이지의 일부를 더욱 자유롭게하기 위하여 소거 통합 동작에서 제1 단계로서, 블록(10)의 4개의 페이지들(P5-P8)로부터의 데이터는 지정된 E2 블록(3)(도12A의 하부도)의 페이지들(P7-P10)으로 복제된다. 블록(13)이 먼저 소거된 다. 이들 데이터는 현재 데이터가 갱신되기 전 블록(3)에서 원해 행해지는 것과 동일한 어드레스 오프셋을 갖는 블록(13)의 페이지에 저장된다. 그 후, 다음 단계는 도12B에 도시된 바와 같이 블록(3)으로부터의 유효 데이터 페이지들(P0-P6 및 P11-P15)을 E2 블록(13)의 페이지로 복제한다. 그 후, 블록(13)은 원래 블록(3)으로부터의 모든 데이터 페이지를 포함하는데, 이 페이지(P6-P10) 내의 데이터는 단일 물리적 블록(13)에서 갱신된다. 그 후, 블록(3)은 소거되고 도8의 메모리 플레인을 위한 새로운 E2 블록으로서 지정된다. 많은 이들 단계는 병렬로 실행될 수 있다.
E1 블록(10)의 페이지들(P5-P8) 내의 데이터가 더 이상 필요로 되지 않지만(도12B), E1 블록의 페이지들(P0-P4) 내의 데이터는 여전히 유효하며, 또 다른 물리적 블록의 페이지의 갱신된 데이터가 된다. 그 후, 이들 데이터는 도12C에 도시된 바와 같이 소거된 블록(3)의 페이지들(P0-P4)로 복제된다. 그 후, 블록(3)은 E1 블록으로서 제어기에 의해 재지정되어, 장차 이용을 위하여 소거된 페이지들(P5-P15)을 남겨두어 상술된 바와 동일한 방식으로 갱시된 데이터의 페이지를 일시적으로 저장한다. 그 후, 블록(10)은 소거되고 E2 블록으로서 제어기에 의해 지정된다. 데이터의 오래된 교체된 페이지는 모두 프로세스의 파트에 따라서 삭제된다.
도12A 내지 도12C에 대해서 상술된 소거 통합 동작을 초기화하기 위하여 메모리 시스템 제어기에 의해 이용될 수 있는 여러 트리거링 이벤트가 존재한다. 가장 보편적인 이벤트는 그 순간에서 E1 블록으로서 지정되는 블록이 갱신된 데이터의 페이지들 전체의 특정 비율을 가질 때이다. 소거된 페이지의 특정 수는 E1 블록에서 계속해서 이용될 필요가 있는데, 이수는 갱신을 위하여 각 E1 블록을 이용하 는 블록의 수와 같은 팩터의 수를 따른다. E1 블록에서 가장 오래된 데이터 페이지를 갖는 블록을 통합하도록 하는데 E1 블록이 가장 유용하다. 그 후, 단일 소거 통합 동작은 E1 블록으로부터 최대 수의 불필요한 페이지를 클리어한다. 블록(E1)에서 이와 같은 블록의 데이터 페이지(들)의 데이터에서 에러의 검출과 같이 통합되어야 하는 블록(E1)에서 데이터 페이지를 갖는 블록을 선택하도록 이용될 수 있는 다른 기준들이 존재한다. 이것이 블록(E1)에서 임의의 다음 에러의 발생이 자신의 ECC를 스웜프(swamp)할 기회를 최소화할 것이다.
도12A 내지 도12C의 소거 통합을 트리거하기 위하여 이용될 수 있는 또 다른 이벤트는 메모리의 수행성능이 지정된 E1 블록에서 불충분한 공간으로 인해 저하될 때 일 수 있다. 블록의 특정 수의 페이지가 갱신되고 E1 블록 내에 너무 적은 소거된 페이지로 인해 갱신되는 페이지의 수를 저장하지 못할 때, 이 제어기는 E2 또는 갱신되는 원래 데이터 페이지들과 동일한 페이지 오프셋을 지닌 다른 소거된 블록 내로 갱신된 페이지를 기록하는 것이 바람직하다. 갱신되는 페이지의 수가 E1 블록의 이용을 위하여 통상적으로 요구되는 소정수보다 작을지라도 반드시 발생된다. 그 후, 유효 또는 오래되지 않은 데이터 페이지는 원래 블록으로부터 동일한 E2 또는 다른 소거된 블록 내로 복제되어, 논리적 블록을 위한 모든 현재 데이터를 단일 물리적 블록에 결합시킨다. 이는 지정된 E1 블록이 이용되는 경우 보다 더 많은 시간이 걸릴 것이고, 이에 따라서 시스템 수행성능에 악영향을 미친다. 그러므로, 이 발생이 소정 횟수 검출된 후, 도12A 내지 도12C의 통합 동작은 E1 블록에서 더 많은 페이지를 더욱 자유롭게 하도록 수행된다. 그렇치 않다면, E1 블록을 갖고 이 를 이용하는 전체 이점은 상실된다. 소정 회수는 사전설정된 파라미터일 수 있거나 메모리 제어기에 의해 적응적으로 최적화될 수 있다.
또한, E1 블록에서 갱신된 데이터 페이지를 갖는 데이터 블록이 리프레시될 필요가 있을 때, 이 데이터 리프레시가 메모리 동작의 부분인 경우, 이 리프레싱은 도12A 내지 도12C의 소거 통합 동작을 포함할 수 있다. 이는 또한 다른 오버헤드 동작 부분으로서 포함될 수 있는데, 그 이유는 이것이 종종 그 때에 그와 같이 행해지기 때문이다. 게다가, 또 다른 트리거링 이벤트로서, 제어기가 이외 달리 통합 동작을 수행하는데 충분한 시간 동안 점유 또는 점유되도록 스케쥴링되지 않을 때 소거 통합은 행해질 수 있다. 상술된 팩터들 중 임의의 하나, 여러개 또는 전부는 도12A 내지 도12C의 소거 통합 동작을 초기화하도록 이용될 수 있다. 게다가, 소거 통합 동작이 단일 블록을 위한 데이터 페이지를 통합하도록 설명되지만, 이 프로세스는 E1 블록에서 더 많은 페이지를 더욱 자유롭게 하도록 2개 이상의 블록에 대해서 반복될 수 있다. 또한, 데이터 페이지는 메타블록의 페이지들과 통합될 수 있다. 이는 제어기가 E1 블록을 포함하는 다수의 소거 통합 동작을 행하도록 하는데 충분한 시간 동안 다른 기능을 수행하도록 요구되지 않을 때 간편하게 행해진다.
도12A 내지 도12C에 대해서 서술된 통합 동작은 한번에 갱신되는 페이지의 수가 블록 E1을 이용하기 위하여 설정될 수 있는 기준들 중 한 기준인 E1 블록에서 페이지의 수의 1/2과 같은 현재 수보다 작기 때문에 E1 블록에서 이용가능한 소거된 페이지를 이용한다. 이들 수보다 많은 페이지가 갱신되면, 이 갱신된 데이터는 도11A 및 도11B에 대해서 상술된 바와 같은 E2 블록 내로 직접 기록된다. 한번에 갱신되는 논리적 블록의 페이지의 수가 소정수를 초과할 때 상이한 통합 동작이 발생되고, 블록 E1을 이용하기 위한 다른 설정된 기준들이 존재하지 않지만, 논리적 블록의 하나 이상의 갱신된 페이지는 사전에 E1 블록에 기록된다. 이 경우에, 갱신된 블록은 E2 블록으로 직접 기록된다. 이 상황을 취급하는 메모리 시스템 제어기의 동작은 도13A-도13C에 대해서 서술된다.
도13A의 예에서, 블록(3)(상부도)에 저장된 데이터의 페이지들(P2-P11)은 한 번에 갱신된다. 데이터 페이지들(P12-P13)은 사전에 갱신되는데, 이 갱신된 데이터는 도8의 메모리 플레인의 지정된 E1 블록(10)(도13A의 중간도)의 페이지들(P5-P6)에 저장된다. 데이터 페이지들(P2-P11)을 갱신하는 제1 단계로서, 갱신된 데이터는 지정된 E2 블록(13)(도13A의 하부도)의 대응하는 페이지들(P2-P11) 내로 직접 기록된다. 사전 갱신된 페이지들(P12-P13)은 또한 E1 블록의 페이지들(P5-P6)에서 자신의 위치로부터 E2 블록의 페이지들(P12-P13)로 복제된다.
도13B에 도시된 다음 단계는 블록(3)의 페이지들(P1-P2 및 P4-P15) 내의 불변의 데이터가 블록(13)의 대응하는 페이지 위치로 복제되도록 한다. 그 후, 블록 13은 현재 갱신된 데이터의 모든 페이지를 저장한다. 그 후, 블록(3)은 소거되어 E2 블록로서 지정된다. E1 블록(10)의 유효 데이터 페이지들(P1-P5)에 저장된 블록(13)이외의 일부 블록으로부터의 나머지 갱신된 데이터는 도13C에 도시된 바와 같은 블록(3)의 대응하는 페이지로 복제된다. 그 후, 블록(3)은 E1 블록으로서 지정된다. 그 후, 블록(10)은 소거되고 이를 이용하는데 필요로 되는 임의의 장차의 동작을 위한 블록(3)이 된다. 오래된 교체된 데이터 페이지들 모두는 이 프로세스 에서 삭제된다.
도13A 내지 도13C로 도시된 소거 통합 동작은 E2 블록(도13A)에 기록되는 갱신된 데이터 페이지에 응답하여 바람직하게 초기화된다. 이 응답은 메모리 플레인 내에서 장차 이용을 위하여 E2 블록 우측으로 더욱 자유롭게 되도록 순간적으로 될 수 있거나, 대안적으로, 이 통합은 어떤 지연 후 초기화될 수 있다. 하나 또는 몇 개의 부가적인 프로그래밍 사이클들이 E2 블록에서 갱신된 데이터 페이지를 기록한 후 발생하도록 하는 지연은 물리적인 블록(3)에 초기에 저장되는 논리적인 블록의 데이터에 대한 임의의 부가적인 갱신이 통합 동작에 포함되도록 한다. 이는 동일한 데이터 블록을 위한 밀접한 연속에서 이와 같은 통합을 2회 수행하도록 세이브된다.
도12A 내지 도12C 및 도13A 내지 도13C에 대해서 설명된 바와 같은 E1 블록을 포함한 소거 통합 동작은 일반적으로 개인용 컴퓨터들, 컴퓨터 서버들, 개인 휴대 정보 단말기들, 사운드 및 비디오 처리 장치들 등에 이용되는 메모리 시스템에 적용된다. 많은 이들 애플리케이션에서, 메모리의 하나 또는 극소수의 블록들 중 하나 또는 극소수의 데이터 페이지는 빈번한 간격으로 한번에 갱신된다. 예는 파일 할당 테이블(FAT), 많은 컴퓨터 시스템의 공통 요소의 유지보수이다. FAT는 종종 메모리의 단일 플레인의 단지 하나 또는 몇개의 블록에 저장된다. FAT 테이블의 일부를 저장하는 적어도 하나의 페이지는 통상적으로, 데이터가 호스트에 의해 메모리에 기록될 때마다 각 소거 통합 동작의 부분으로서 그리고 제어기에 의해 지정되는 물리적 메모리 블록에 호스트 지정된 논리적 블록의 할당이 변경될 때마다 갱신 된다. 빈번한 데이터 갱신의 또 다른 예는 메모리 동작의 부분으로서 유지되는 오버헤드 데이터를 위한 것이다. 예를 들어, 각 메모리 블록의 상용 또는 특성에 관한 특정 정보는 또 다른 블록에서 모두 유지된다. 이 데이터는 메모리가 이용될 때 거의 연속적으로 갱신된다.
상당량의 데이터의 이와 같은 빈번한 갱신이 한번에 소량 발생되는 시스템에 대해서, 메모리 시스템의 수행성능은 이들 빈번한 갱신을 겪는 메모리의 영역에 대한 하나 이상의 E1 블록을 지정함으로써 개선된다. 호스트가 주로 또는 단지 이와 같이 빈번하게 갱신된 데이터를 저장하는 LABs의 범위에 대해서, E1 블록 또는 메타블록은 심지어 단지 이 블록에만 이용하기 위하여 전용될 수 있다. 이는 결과적인 개선된 수행성능이 부가적인 또는 전용의 E1(dE1) 블록으로서 작용하도록 하기 위하여 일반적인 서비스로부터 하나 이상의 부가적인 블록을 제거하도록 하는 비용을 치를 가치가 있을 때 행해진다. 이는 종종 FAT 테이블, 블록 오버헤드 데이터 등을 저장하는 블록을 위한 경우이다. 부가적인 또는 전용의 E1 블록의 지정이 도12A 내지 도12C의 소거 통합 동작이 수행되어야 하는 빈도를 실질적으로 감소시킬 수 있다.
도14는 도8의 시간과 상이한 시간의 한 순간에서 하나의 메모리 플레인에서 블록 할당을 도시한 것이다. 메모리 플레인을 위한 일반적인 E1 블록으로서 메모리 제어기에 의해 지정되는 블록(10)이외에도, 블록(2)은 블록(1)으로부터만 갱신하기 위한 E1 블록으로서 지정된다. 블록(1)에 맵핑되는 LBN의 페이지의 데이터가 갱신되고 블록(E1)으로 기록하기 위한 조건이 존재할 때마다(블록(E2)에 대한 것이 아 니라), 갱신된 데이터 페이지는 dE1 블록(2)의 이용가능한 소거 페이지로 기록된다. 갱신된 데이터를 수신하는 dE1 블록(2) 내의 페이지는 이와 같은 순서로 각 블록으로 기록되는 페이지를 필요로 하는 유형의 메모리에 순서대로 다음 페이지가 될 것이다. 유사하게, 블록(4)은 블록(3)에 맵핑되는 LBN의 갱신된 데이터를 수신하도록 전용되는 dE1 블록으로서 지정되고, 블록(6)은 블록(5)의 LBNs에 전용되는 dE1 블록이다. 플레인 내의 3개의 전용의 E1 블록의 이용은 일부 애플리케이션에서 제공되거나 플레인에서 블록 1/2까지는 이와 같이 지정될 수 있다. 블록(13)은 도14의 예의 플레인을 위한 E2 블록으로서 지정된다.
전용의 E1 블록을 연속적으로 이용하면 이것을 결국 채워진다. E1 블록이 전용되는 데이터 블록의 어떤 페이지는 E1 블록이 채워지기 전 다수회 재기록될 수 있다. 각 페이지는 이 예에서 E1 블록의 다음 이용가능한 소거 페이지로 기록되고 블록을 위한 오버헤드 데이터의 부분으로서 저장되는 원래 데이터 블록 내에서 페이지 오프셋된다. 임의의 전용 E1 블록이 채워지기 직전 또는 그 시간에서, 통합 동작은 E1 블록으로부터 대부분의 현재 페이지들 및 임의의 불변의 데이터 페이지를 포함하도록 데이터 블록을 재기록하도록 발생된다. 이것의 예는 도15A 및 도15B에 제공된다.
도15A에서, 도14의 블록(3) 및 이의 블록(4)로부터의 데이터 페이지를 E2 블록(13)으로의 통합이 도시된다. 이 예에서, 페이지들(P0-P1, P5-P9 및 P13-P14)의 데이터는 불변된다. 나머지 페이지들(P2-P4 및 P10- P12 및 P15)는 이 예에서 갱신되는데, 가장 최근의 갱신된 페이지는 각 페이지들(P7, P2, P11, P13, P10, P8 및 P12)로 갱신된다. 통합 공정은 이 도시된 예에서 시작되는데, 그 이유는 dE1 블록(4) 페이지들 모두는 최고 2개의 페이지들(P14 및 P15)를 제외한채 프로그램되고 dE1 블록은 공간을 거의 소진하기 때문이다. 그 후, 원래 데이터 블록(3) 에서 불변의 페이지들 및 dE1 블록에서 가장 최근 갱신된 페이지는 E2 블록(13)으로의 프로그래밍 동작에 의해 어셈블된다. 각 이와 같은 페이지는 페이지의 물리적 오프셋을 갖는 E2 블록 페이지로 기록된다. 즉, 갱신된 페이지가 각 물리적 페이지 위치에서라기 보다 오히려 갱신되는 순서로 dE1 블록에 일시적으로 저장되지만, 원레 데이터 블록(3)으로부터의 페이지의 가장 최근의 갱신은 이의 어드레스된 오프셋에 대응하는 위치를 갖는 E2 블록(13)의 페이지로 복제된다. 도15B에 도시된 바와 같이, 블록(3 및 4)은 소거되는데, 하나는 새로운 데이터 블록으로 전용되는 E1 블록으로서 지정되고 다른 하나는 메모리 플레인을 위한 E2 블록이 된다.
그러나, E2 블록(13) 내의 데이터 페이지는 갱신되거나 복제되는 페이지들과 동일한 어드레스 오프셋을 갖는 것을 필요로 하지 않는다. 이들은 동일한 상대 순서로 유지되는 것으로 충분하다. 예를 들어, 제1 데이터 페이지(P0)는 최좌측 물리적 페이지 대신에 좌측으로부터 제3 물리적 페이지에서 도15A의 E2 블록(13)에 저장될 수 있다. 그 후, 나머지 데이터 페이지는 블록(13) 내의 이의 논리적 어드레스의 순서로 위치되어, E2 블록(13)의 최좌측 2개의 페이지에 저장되는 최종 페이지(P14 및 P15)의 주위를 랩핑한다. 이와 같은 페이지 시프팅이 이용될 때, 이용자 데이터 오베헤드의 페이지 태그(41)(도10)는 E2 블록 내의 데이터 페이지의 오프셋을 추적하도록 이용될 수 있다.
도14의 메모리 플레인에서 부가적인 E1 블록의 지정 및 이용은 다수개이지만 플레인으로 맵핑되는 모든 LBNs 보다 적은 수로 동작하도록 전용되는 부가적인 E1 블록을 갖도록 하는 것이 바람직할 때 발생하도록 메모리 시스템 제어기 펌웨어로 프로그램될 수 있다. 각각 관련된 E1 블록을 갖도록 선택되는 LBNs은 호스트가 데이터를 빈번하게 갱신하도록 예측되는 LBNs이다. 대안적으로, 제어기 펌웨어는 메모리가 실제로 이용되는 방식에 응답하여 단지 하나의 다른 LBN과 각각 관련되는 dE1 블록을 동적으로 지정할 수 있다. 예를 들어, 데이터가 단지 하나의 섹터에서 또는 호스트 명령당 정상적인 섹터 수보다 적은 섹터에서 호스트에 의해 LBN에 기록될 때, 이 LBN은 자신의 dE1 블록에서 할당될 수 있다. 게다가, dE1 블록은 데이터가 연속적으로 중복기록되는 이들 LBNs에 할당될 수 있다. dE1 블록의 이용은 일반적인 플레인 블록(E1) 밖의 데이터 페이지의 빈번한 충돌을 감소시킨다.
dE1 블록에 대한 필요성이 존재할 때의 또 다른 예로서, 다른 블록에 의해서 보다 데이터의 특정 블록에 의해 도12A 내지 도12C의 통합 공정을 훨씬 더 이용하면, 플레인의 비사용된 블록이 빈번하게 갱신된 데이터의 LBN으로 동작하도록 전용되는 E1 블록으로서 지정되도록 할 수 있다. 최적화 수행성능을 위하여, 블록 dE1이 빈번하게 통합되는 블록에 전용하는 것이 바람직하다. E1 블록이 dE1 블록으로서 소정의 LBN에 전용될 때를 결정하기 위한 제어기 펌웨어를 위한 공정의 예는 (1) E1 블록에 기록시키는 소정 블록에 기록을 위한 호스트 명령의 수, (2) 소정 블록으로의 기록 동작의 총수 및/또는 (3) E1 블록에 기록되는 동일한 논리적 어드레스를 갖는 섹터의 수의 카운트를 유지시키는 것이다. 이들 카운트의 비가 소정값 을 초과할 때, 전용 블록 dE1이 설정된다. 그 후, 도15A 및 도15B의 통합 동작은 이와 같은 데이터를 포함하는 각 논리적 블록과 관련된 E1 블록을 유지하는 것이다.
dE1 블록을 동적으로 설정하는 또 다른 예로서, 메모리 제어기는 덜 빈번하게 갱신된 데이터 유형으로부터 빈번하게 갱신된 데이터 유형을 구별하도록 프로그램될 수 있고 이와 같은 데이터를 적절한 블록으로 향하게 한다. 예를 들어, 메모리 제어기는, 이와 같이 빈번하게 갱신되지 않는 전형적인 사용자 데이터의 단일 명령으로 데이터의 다수의 섹터를 전송하는 호스트와 비교하여, 빈번하게 갱신되는 FAT 테이블을 위한 전형적인 엔트리의 각 명령으로 호스트에 의해 데이터의 단일 섹터가 전송될 때를 인지한다. 데이터의 단일 섹터가 수신될 때, 이들은 dE1 블록이 전용되는 물리적 블록(들)에 맵핑된다. 데이터의 다수의 섹터가 유닛으로서 메모리 시스템에 의해 수신될 때, 이들은 다른 데이터 블록과 E1 블록을 공유하는 데이터 블록으로 전송된다. 이 비전용된 E1 블록은 다수의 LBNs으로부터 데이터를 포함한다.
본 발명의 기술들은 또한 존으로 논리적으로 분할되는 하나 또는 다수의 플레인을 갖는 메모리 아키텍쳐에 적용될 수 있지만, 존의 이용은 본 발명을 구현하는데 필요로 되지 않는다. 다수의 플레인의 경우에, 각 존은 플레인을 가로질로 신장된다. 메타블록은 이용될 수 있거나 이용될 수 없다. 다수의 플레인을 가로지른 논리적인 존을 규정하는 메모리 시스템의 예가 도16에 개요적으로 도시되어 있다. 4개의 플레인들(0-3)이 도시되었지만, 더 적거나 많은 플레인이 메모리 시스템에 포함될 수 있다. 각 플레인은 많은 수의 블록을 포함하는데, 이들 블록의 일부는 도16에서 직사각형으로 표시된다. 각 블록은 다른 메모리 시스템을 위하여 상술된 바와 같은 블록들(61) 중 한 블록을 위하여 표시된 바와 같은 다수의 데이터 페이지를 포함한다. 여기서 차이는 플레인이 존으로 더욱 분할된다는 것이며, 각 존은 2개 이상의 플레인각각으로부터 소정수의 블록을 포함한다. 예를 들어, 도16과 관련하여, 존0은 플레인들 (0-4) 각각으로부터 다수의 블록을 포함하며, 존1은 플레인각각으로부터 블록의 또 다른 그룹을 포함하는 등등이다. 존 내의 각 플레인에서 블록은 통상적으로 물리적 블록 어드레스의 동일한 연속적인 세트를 점유하지만 이는 필요로되는 것은 아니다. 호스트 논리 어드레스의 특정 범위는 각 존으로 맵핑된다.
도16의 메모리 시스템의 동작 유닛은 바람직하게는 메타블록이다. 메타블록은 이 예에서 상기 메타블록을 형성하기 위하여 모두 논리적으로 접속되는 각 플레인으로부터 한 블록을 포함한다. 이 경우에, 각 메타블록은 단일 존 내에 형성된다. 한 메타블록은 도16에 도시된, 예로서 블록(63, 64, 65 및 66)으로 형성된 존 1 내에 도시된다. 메타블록의 특징적인 동작은 메타블록 내에서 모든 블록의 동시 소거 및 메타블록의 각 블록으로부터 하나 이상의 페이지를 동시 프로그래밍 및 판독을 포함한다. 이 증가된 병렬화는 메모리 시스템의 성능을 크게 증가시킨다. 각종 메타블록 내의 각 블록의 아이덴터티는 시스템 내의 임의의 간편한 위치에서 고정되거나 동적 링크된 리스트, 어레이 테이블 등으로서 유지될 수 있다. 통상적으로, 각 페이지의 사용자 데이터와 함께 오버헤드 데이터는 페이지가 상주하는 플레 인, 존 및 블록을 식별하는데 충분한 논리적 및/또는 물리적 어드레스를 포함할 뿐만 아니라 이 블록 내에서 페이지의 오프셋을 포함할 것이다. 그 후, 어드레스 맵은 페이지 오버헤드 데이터의 이들 어드레스 필드를 판독하는 제어기에 의해 제어기의 메모리 내에서 생성된다. 이는 통상적으로, 메모리의 이 부분으로 향하는 프로그래밍, 판독 또는 소거 동작에 앞서 한번에 메모리의 부분을 위하여 행해진다. 존으로 분할되지 않는 시스템의 경우에, 각 메타블록은 다수의 플레인의 전체 이용가능한 물리적 어드레스 공간에 걸쳐서 블록으로부터 형성될 수 있다.
각 존 내의 하나 이상의 블록은 존 내의 다른 블록을 위하여 블록(들)(E1) 및 블록(들)(E2)로서 이용하기 위하여 할당될 수 있다. 도16에 도시된 예에서, 존(1)에는 한 블록(E1)이 제공된다. 그 후, 존(1) 내의 메타블록들 중 임의의 메타블록에 데이터의 부분적인 블록의 기록은 이 기록 동작이 블록(E1)의 이용을 위한 기준을 총족할 때 블록(69)으로 지향될 것이다. 하나 이상의 블록 E1은 통상적으로, 존의 크기에 따라서 각 존을 위하여 필요로 된다. 실제로, 하나 이상의 메타블록은 도17에 도시된 바와 같이 E1 기능을 위한 각 존에 할당되는데, 여기서 플레인들(0-3) 각각으로부터 하나인 블록(E1a, E1b, E1c, 및 E1d)은 존(1) 내에서 메타블록을 형성한다. 도16 또는 도17의 경우들 중 어느 한 경우에서, 하나 이상의 메타블록(E2)은 각 존을 위하여 할당된다. 대안적으로, 메타블록의 풀은 시스템 내의 어느곳에도 제공되어 가령 이들을 단일 존에서 그룹화함으로써 모든 존을 위한 E1 및 E2 블록 기능을 작용시킨다. 메타블록(E1)은 또한 빈번한 기록을 수신하는 단일의 다른 메타블록에 전용될 수 있다. 실제로, 도12 및 도13의 통합과 같은 단일 블 록(E1)을 위한 상기 설명은 대안적으로 메타블록(E1)으로 구현될 수 있다. 블록 유닛의 크기는 기본 프로세스를 변경시키지 않는다. E2s를 위한 메타블록의 이용은 통상적으로, 단일 블록에 바람직하지만, E1s을 위한 단일 블록의 이용은 효율성을 위하여 메타블록에 바람직하게 될 수 있다. 다수의 존 어레이의 단일 존에서 메타블록의 이용을 포함한 설명은 전체 어레이가 단지 하나의 존만을 포함할 때 적용된다는 점에 유의하여야 한다.
논리적 블록 어드레스의 이산 범위들 내에서 갱신되 데이터 페이지를 수신하는 물리적 블록(E1, dE1 및 E2)의 전형적인 할당에서, 다수의 이와 같은 블록은 시스템이 상술된 존으로 조직되는 블록 또는 메타블록을 가질 때 전형적으로 발생되는 바와 같은 연속적인 논리적 블록 어드레스의 2개 이상의 비중첩하는 세트 각각에 이용하기 위하여 할당된다. 그 후, 이 규칙은 할당된 E1, dE1 및 E2 블록 또는 메타블록이 이용될 때 및 방법에 대한 논리적 블록 어드레스의 각 세트에 가장 간편하게 적용된다.
그러나, 임의의 또는 모든 물리적 E1, dE1, 및 E2 블록의 이용이 이와 같은 제약을 따르지 않는다. 예를 들어, 이들 특수 블록이 이용될 때 및 방법의 규칙은 또 다른 범위를 위한 범위와 논리적 블록 어드레스를 위한 한 범위와 다르게될 수 있다. 이는 호스트 논리적 어드레스의 상이한 범위에서 저장되는 데이터 유형들 또는 상이한 전형적인 호스트 이용 패턴을 인식하게 한다. 게다가, E1, dE1, 및 E2 블록의 특정 세트가 전용되는 논리적 블록 어드레스의 범위는 전체적으로 연속적일 필요는 없다. 논리적 블록 어드레스의 한 범위는 심지어 또 다른 범위와 중첩하도 록 이루어질 수 있는데, E1, dE1 및 E2 블록을 이용하는 규칙은 상이한 각 중첩 범위에 전용된다. 후자의 경우에, 중첩하는 범위들 내의 논리적 블록 어드레스를 갖는 데이터의 호스트에 의한 프로그래밍은 어느 규칙의 세트가 호스트 동작에 의해 충족되는지에 따라서 물리적 E1, dE1 및 E2 블록의 2개 이상의 세트들 중 하나에 저장하는데 적합하게 된다. 이 규칙은 중첩하는 논리적 어드레스 범위에서 임의의 한 가지 프로그래밍 동작이 E1, dE1 또는 E2 블록들 중 단지 한 블록에서 저장하는데 적합하게 되도록 설정되는 것이 바람직하다.
도18은 물리적 E1, dE1 및 E2 블록을 논리적 블록 어드레스에 할당하는 예를 도시한 것이다. 도시된 순차적인 논리적 어드레스를 갖는 4개의 논리적 블록 LBN{x] 내지 LBN{x+3} 중에서, LBN{x], LBN{x+1} 및 LBN{x+2}는 E1 블록의 이용을 위한 기준을 충족시키는 갱신된 데이터를 저장하기 위한 공통 E1 블록을 공유하는 반면에, 이들은 E2 블록의 이용을 위한 기준을 충족하는 갱신된 데이터를 저장하기 위한 각 E2 블록으로 각각 맵핑된다. 특정 E1 및 E2 블록을 이용하기 위하여 지정된 논리적 블록 어드레스의 범위는 동일할 수 있으며, 일부 중첩되어 다르게 되거나 상호 배타적일 수 있다. 그 후, 메모리는 호스트 용도에 적응될 수 있다. 예를 들어, 빈번한 단일 데이터 섹터 갱신을 수신하는 논리적 어드레스 범위의 경우에, 이들은 E1 또는 dE1 블록으로 맵핑될 수 있지만, E2 블록에 맵핑되지 않는데, 그 이유는 E2 블록을 유용하게 만들기 위하여 한번에 충분한 데이터를 갱신하지 못하기 때문이다.
일부가 부가 갱신될 때 E2 블록에 저장된 데이터는 동일한 데이터 논리적 어 드레스를 위하여 지정된 E1 블록에 저장된다. 물론, E2 블록을 위하여 지정된 논리적 어드레스를 갖는 갱신된 데이터는 우선적으로 E2 블록 내에 논리적 어드레스의 데이터를 저장함이 없이 E1 블록에 저장될 수 있다. 갱신된 데이터를 저장하기 위한 E1 또는 E2 블록의 선택은 상술된 기준에 좌우된다.
도19의 흐름도는 메모리 시스템의 수행성능을 최적화하기 위하여 호스트 동작의 패턴에 동적으로 응답하는 방식으로 상술된 블록 E1, dE1 및 E2를 이용하는 플래시 메모리 시스템의 예시적인 동작을 도시한 것이다. 이 프로세스는 메모리 시스템이 (101)로 도시된 바와 같이 접속되는 호스트 시스템으로부터 기록 명령을 수신할 때마다 시작된다. 기록 명령은 데이터의 LBN, 기록될 데이터의 섹터의 수 등을 포함한다. LBN은 프로그램되는 특정 메모리 어레이의 구조 및 동작에 따라서 데이터가 메모리 플레인의 블록 내로 맵핑되도록 하거나 다수 플레인을 가로질러 신장하는 메타블록으로 맵핑되도록 한다. 제1 단계(103)는 수신된 LBN과 관련된 기존 E2 블록 또는 메타블록이 프로그램되는 데이터 섹터의 수를 위한 룸(room)을 갖고 있는지를 검사한다. 만일 그렇다면, 다음 단계(105)는 현재 기록 동작의 데이터 섹터가 순차적인 어드레스로 사전 기록 동작의 연속인지를 결정한다. 만일 그렇다면, 데이터는 단계(107)에 나타난 바와 같이 기존 E2 블록으로 프로그램된다.
그러나, 단계(105)에서 새로운 기록이 섹터의 이전 시퀀스의 연속인 섹터가 아니라고 결정하면, 단계(109)에서 논리적 섹터 어드레스의 갭이 하나 또는 극소수와 같은 작은 수의 섹터를 포함하는지를 결정한다. 일부 사전설정된 섹터의 수보다 작다면, 이들 불변의 데이터 섹터는 단계(111)로 나타낸 바와 같이 순서대로 E2 블 록으로 복제되고 새로운 데이터 섹터는 단계(107) 마다 E2 블록에 기록된다. 기존 E2 블록으로의 불변의 데이터의 몇개의 섹터의 복제는 작은 수의 섹터의 갭 때문에 이전 기록으로부터 전체적으로 분리되는 바와 같은 다음 기록으 취급하는 것이 아니라 최적화될 수 있다.
그러나, 논리적 어드레스 갭이 사전설정된 프리셋의 수보다 크다면, 다음 단계(113)는 새로운 E2 블록이 계류중인 기록 동작을 포함하는 LBN 범위를 위하여 생성되어야 하는지를 고려한다. 고려된 통계는 저장되거나 최근의 기록 트랜잭션의 분석을 포함하거나 현재 기록 동작의 섹터의 수가 고정되거나 동적으로 결정된 임계 수보다 크거나 크지 않는지를 결정하는 만큼 간단화될 수 있다. 이 임계 수는 예를 들어 블록에 저장된 데이터 섹터의 수보다 작지만 블록의 용량의 1/2 또는 3/4보다 더 많을 수 있다. 이것이 새로운 E2 블록을 생성하기 위한 규정된 통계로부터 결정되면, 이는 단계(115)에서 행해지고 나서 계류중인 기록 데이터는 단계(107)에서 새로운 E2 블록으로 프로그램된다. 새로운 E2 블록을 할당하는 공정은 도20의 순서도에 대해서 후술된다.
이 논의는 계류중인 기록 동작의 데이터 섹터의 수를 위한 기존 E2 블록에서 룸이 있다라고 단계(103)에서 행해진 결정을 따른다. 그러나, 충분한 룸이 없다면, 이 프로세싱은 단계(113)로 점프하여 새로운 E2 블록이 생성되어야 하는지를 결정한다.
새로운 E2 블록이 계류중인 기록 동작의 데이터를 위하여 생성되지 않아야 한다라고 단계(113)에서 결정되면, 섹터의 수가 단계(113)에서 이용되는 사전설정 된 임계 수보다 작게(또는 같게)되어 E1 블록에 더욱 적합하게 기록되기 때문일 수 있다. 그러므로, 다음 단계(117)에서, 기존 dE1 블록이 현재 데이터 섹터가 상주하는 LBA 범위를 위하여 존재하는지가 결정된다. 만을 그렇다면, 이들 데이터 섹터는 단계(119)에서 dE1 블록으로 프로그램된다. 그러나, 그렇치 않다면, 단계(121)에서 새로운 dE1 블록이 생성되어야 하는지가 결정된다. 이 결정은 저장된 동작들, 논리적 또는 물리적 분석을 토대로할 수 있거나 순시 동작을 토대로 할 수 있다. 고려된 통계는 가비지 콜렉션 동작의 발생, 생성된 E1 블록의 수 또는 소정 LBA 범위 내의 비순차적인 단일 섹터 기록 동작의 수를 포함할 수 있다. dE1 블록은 이 특정 블록 내의 데이터의 갱신의 수 및 빈도가 시스템 내의 다수의 블록을 위해 전형적인 것보다 훨씬 더 많게될 때 특정 블록을 위하여 전용된다. dE1이 이에 따라서 할당되면, 이는 도20의 순서도에 따라서 단계(123)에서 행해진다.
그러나, 기존의 dE1 블록에 룸이 존재하지 않고 또 다른 것을 할당하지 않는다라고 결정하면, 계류중인 기록 동작의 LBA와 관련된 기존 E1 블록 내의 룸이 단계(125)에서 구해진다. E1 블록은 개별적으로 특정 범위의 LBAs의 데이터 섹터를 저장하도록 제한되어 상술된 바와 같은 각 플레인에서 하나를 제공하는 것과 같이 이들을 관리하기 더 쉽게 한다. 대안적으로, E1 블록은 어레이 내의 어느곳에서부터 LBAs를 갖는 데이터를 저장할 수 있다. 이 데이터를 위한 충분한 공간이 존재하면, 다음 단계(127)에서, 이 데이터는 데이터의 LBA와 관련된 E1 블록 내로 기록된다.
다른 한편으로, 데이터의 LBA와 관련된 E1 블록이 룸을 갖지 않는다면, 단 계(129)로 나타낸 바와 같이 공간은 또한 E1 블록에서 구해진다. 이와 같은 공간이 존재하면, 다른 E1 블록에 의해 취급되는 LBAs의 범위를 현재 데이터의 LBA를 포함하도록 확장시킬 지에 대한 결정이 행해진다. 호스트의 이용 패턴에 따라서, 시스템 내 E1 블록의 여러중 임의의 블록 또는 모든 블록에 임의의 LBAs를 지닌 데이터를 저장하도록 하거나, 각 E1 블록을 LBAs의 설정된 범위로 엄격하게 제한하는 것이 더욱 양호할 수 있다. 이 데이터를 또 다른 E1 블록을 기록한다라고 결정하면, 이는 단계(127)에서 행해진다. 그러나, 데이터를 또 다른 E1 블록에 기록하지 않는다라고 결정하면, 새로운 E1 블록이 단계(131) 마다 할당되고 데이터는 단계(127)에서 이에 기록된다.
단계들(115, 123 또는 131) 중 임의의 단계에서 새로운 블록을 할당하는 루틴은 도20의 순서도로 도시된다. 초기 단계(133)에서 메모리 블록이 소거되고 비사용된 블록의 풀에서 이용될 수 있다라고 결정하면, 이와 같은 블록은 도 9의 각 단계들(115, 123 또는 131)중 어느 단계가 실해되는지에 따라서 단계(135)에서 E2, dE1 또는 E1 블록이 되도록 할당된다. 그러나, 이와 같은 블록이 이용될 수 없다면, 기존의 E1, dE1 또는 E2 블록은 할당해제되고 새로운 역할이 재할당된다. 도20의 나머지 단계는 이 목적을 위하여 할당해제되는 E1, dE1 또는 E2 블록인지를 결정한다. 이 예에서 적용되는 원리는 최소 이용되고 유용한 블록을 할당해제한다.
새로운 E1 블록이 생성되면, 도19의 프로세싱이 단계(131)에 있을 때, 도20의 단계(139)에서 최대수의 E1 블록이 이미 존재하는지가 결정된다. 이 수는 설정될 수 있거나 바람직하게는 변경되어, 이들 블록의 유형들 중 모두 3가지의 이용을 최적화한다. 지정된 E1, dE1 및 E2 블록의 총수는 일반적으로 전체 논리적 어드레스 공간에 응답하도록 필요로 된 것에 비해서 시스템에 제공되는 여분의 블록의 수만큼 제한된다. E1 블록의 최대 수가 생성된다라고 결정되면, 다음 단계(141)는 기존 E1 블록을 할당 해제하고 단계(135)에서 이 블록은 새로운 E1 블록으로서 지정된다. 그러나, 단계(139)에서 E1 블록의 최대수가 생성되지 않는다라고 결정하면, 새로운 E1 블록을 위한 dE1 블록 또는 E2 블록을 할당해제할 지를 나중 단계에서 결정한다. 새로운 E1 블록은 LBAs의 특정 범위에 이용하기 위하여 제한될 수 있거나 전체 메모리 어레이를 커버할 수 있다.
단계(143)에 의해 결정된 바와 같이 새로운 E1 블록이 E1 블록 대신에 생성되면(도19의 단계(123)), 단계(145)에서 해결되는 문제는 dE1 블록의 최대 허용가능한 수가 이미 존재하는지이다. 만일 그렇다면, 이들 중 하나는 단계(147)에서 할당해제되고 단계(135)에서 새로운 dE1 블록으로서 할당된다. 그렇치 않다면, 단계(149)에 도달되고, 이 단계에서 이용 패턴 통계가 기존 dE1 블록이 할당해제되는지를 결정하기 위하여 이용된다. 이 통계들으 기존 dE1 블록이 오래된 것인지를 측정하는 것을 포함할 수 있다.
단계(149)는 또한 새로운 dE1도 새로운 E1 블록도 생성되지 않을 때 단계(143)로부터 도달되고 E1 블록의 최대수가 생성되지 않을 때 단계(139)로부터 도달된다. 단계(149)에서 dE1 블록을 할당해제 한다라고 결정하면, 이는 단계(147)에서 행해지고 블록은 생성되는 새로운 E1 또는 dE1 블록들 중 한 블록으로서 단계(135)에서 재할당된다. 그러나, 기존의 dE1 블록이 할당해제 되지 않는다라고 결 정하면, 새로운 E1 또는 dE1 블록으로서 블록을 할당하는 것에 앞서 E2 블록이 할당해제되는 단계(151)에 도달된다. dE1 블록으로서 할당될 때, 단일의 다른 물리적 블록의 범위를 초과하는 LBN 범위를 할당받을 수 있다.
본 발명이 각종 전형적인 실시예들과 관련하여 서술되었지만, 본 발명은 첨부된 청구범위 내에서 보호된다는 것을 이해할 것이다.

Claims (25)

  1. 동시에 소거가능하고 소정 수의 데이터의 호스트 유닛을 개별적으로 저장하는 메모리 셀의 블록을 갖는 유형의 재프로그램가능한 비휘발성 메모리 시스템으로 데이터를 프로그램하는 방법에 있어서,
    순차적인 논리적 어드레스를 갖는 호스트 프로그래밍 명령에 의해 규정된 데이터의 호스트 유닛 수에 따라서 적어도 부분적으로 2개의 지정된 블록들 중 하나에서 데이터를 프로그램함으로써 호스트 프로그래밍 명령에 응답하는 단계를 포함하는 데이터 프로그램하는 방법.
  2. 동시에 소거가능하고 소정 수의 데이터의 호스트 유닛을 개별적으로 저장하는 메모리 셀의 블록을 갖는 유형의 비휘발성 메모리 시스템으로 데이터를 기록하는 방법에 있어서,
    제1 지정된 블록으로 순차적인 물리적 어드레스를 갖는 데이터를 기록함으로써 비순차적인 논리적 어드레스를 갖는 데이터 유닛을 기록하기 위하여 호스트 명령에 응답하는 단계; 및,
    상기 데이터를 제2 지정된 블록으로 기록함으로써 상기 소정수의 소정 비율과 같거나 초과하는 순차적인 논리적 어드레스를 갖는 데이터 유닛을 기록하기 위하여 호스트 명령에 응답하는 단계를 포함하는 데이터 기록 방법.
  3. 제2항에 있어서, 상기 제1 지정된 블록에 데이터를 기록하는 단계는 상기 소정수보다 적은 순차적인 논리적 어드레스를 갖는 상기 제1 지정된 블록으로 다수의 데이터의 호스트 유닛을 기록하는 단계를 포함하는 데이터 기록 방법.
  4. 제2항에 있어서, 상기 비휘발성 메모리 셀은 다수의 서브-어레이로 조직되고 메모리 셀의 상기 블록은 2개 이상의 서브-어레이의 메모리 셀을 포함하는 데이터 기록 방법.
  5. 동시에 소거가능하고 특정된 페이지 수로 소정 수의 데이터 페이지를 저장하는 최소수의 셀의 하나 이상의 블록의 다수의 그룹에 조직된 메모리 셀을 갖는 비휘발성 메모리에서, 블록의 제1 프로그램된 그룹의 소정수보다 적은 페이지에서 데이터를 갱신하는 방법에 있어서,
    상기 제1 프로그램된 블록 그룹의 소정수보다 적은 페이지에서 갱신된 데이터를 수신하도록 적어도 제1 및 제2 블록을 지정하는 단계;
    소정수 보다 적은 다수의 순차적인 논리적 어드레스를 갖는 하나 이상의 페이지의 데이터를 상기 제1 지정된 블록의 페이지에 기록하는 단계;
    상기 소정수의 페이지와 같거나 초과하는 다수의 순차적인 논리적 어드레스를 갖는 다수의 페이지의 데이터를 상기 제2 지정된 블록에 기록하는 단계를 포함하는 데이터 갱신 방법.
  6. 제5항에 있어서, 제2 프로그램된 블록 그룹의 소정수 보다 적은 페이지에서 데이터를 갱신하는 단계는:
    상기 소정수 보다 적은 다수의 순차적인 논리적 어드레스를 갖는 하나 이상의 페이지의 데이터를 상기 제1 블록의 페이지에 기록하는 단계를 포함하는 데이터 갱신 방법.
  7. 제5항에 있어서, 상기 제1 프로그램된 블록 그룹에서 소정수 보다 적은 페이지를 갱신하는 레벨에 응답하여, 상기 제1 지정된 블록은 상기 제1 프로그램된 블록 그룹만을 위하여 갱신된 데이터를 수신하도록 전용되는 데이터 갱신 방법.
  8. 동시에 소거가능하고 소정수의 데이터 페이지가 블록 그룹들 중 개별적인 그룹으로 프로그램되는 최소수의 셀의 하나 이상의 블록의 그룹으로 조직되는 메모리 셀을 갖는 비휘발성 메모리에서, 하나 이상의 블록의 소정 그룹의 전체보다 적은 페이지에서 데이터를 갱신하는 방법에 있어서,
    데이터 갱신의 적어도 하나의 사전규정된 조건이 충족되는지를 결정하는 단계;
    상기 조건이 충촉된다라고 결정되면, 데이터의 갱신된 페이지를 갱신되는 소정 블록의 그룹 내의 데이터 페이지의 페이지 수와 관계없이 선택된 페이지 수를 갖는 하나 이상의 블록의 제1의 다른 그룹의 페이지로 기록하는 단계, 또는
    상기 조건이 충족되지 않는다라고 결정하면, 상기 데이터의 갱신된 페이지를 하나 이상의 블록의 제2의 다른 그룹의 대응하는 번호가 매겨진 페이지로 기록하는 단계를 포함하는 데이터 갱신 방법.
  9. 제8항에 있어서, 상기 조건이 충족되지 않으면, 갱신되지 않는 소정의 블록 그룹의 페이지로부터의 데이터는 공통의 블록 그룹의 다른 페이지에서 갱신된 데이터를 갖는 대응적으로 번호가 매겨진 페이지에서 블록의 그룹들 중 공통의 한 그룹에 결합되는 데이터 갱신 방법.
  10. 제8항에 있어서, 상기 조건은 상기 소정의 블록의 그룹에서 상기 소정수의 페이지의 소정 비율보다 작게 갱신되는 페이지의 수를 포함하는 데이터 갱신 방법.
  11. 제8항에 있어서, 상기 블록의 제1의 다른 그룹은 상기 소정 블록을 포함한 다수의 상기 개별적인 블록의 그룹의 갱신된 버전의 페이지를 저장하는데 이용되는 데이터 갱신 방법.
  12. 제8항에 있어서, 상기 제1 다른 블록은 단지 상기 소정의 블록 그룹의 갱신된 버전의 그룹을 저장하도록 이용되는 데이터 갱신 방법.
  13. 제8항에 있어서, 갱신되지 않은 소정의 블록 그룹으로부터의 페이지들 및 상기 소정의 블록 그룹의 위치에 대응하는 페이지 번호 위치에서 사전에 소거된 블 록의 그룹으로 상기 소정의 블록의 그룹의 갱신된 버전의 데이터 페이지들인 제1의 다른 블록의 그룹으로부터 페이지들 둘 다를 복제함으로써 데이터를 통합하는 단계를 더 포함하는 데이터 갱신 방법.
  14. 제13항에 있어서, 상기 데이터 통합은 상기 소정의 블록 그룹의 전체보다 작은 페이지에서 데이터 갱신이 다수회 발생된 후 이따금 반복적으로 발생되도록 하는 데이터 갱신 방법.
  15. 제13항에 있어서, 데이터를 통합한 후 상기 제1의 또 다른 블록으로부터 데이터를 소거하는 단계를 더 포함하는 데이터 갱신 방법.
  16. 제8항에 있어서, 노우트되는 적어도 하나의 데이터 기록 패턴의 존재에 응답하여 단지 상기 소정의 블록 그룹만의 갱신된 버전의 페이지를 저장하기 위하여 상기 제1의 다른 블록의 그룹을 지정하는 단계를 더 포함하는 데이터 갱신 방법.
  17. 제16항에 있어서, 상기 적어도 하나의 데이터 기록 패턴은 상기 소정의 블록 그룹의 하나 이상의 페이지에 대해 반복적인 기록 동작을 포함하는 데이터 갱신 방법.
  18. 제16항에 있어서, 상기 적어도 하나의 데이터 기록 패턴은 다수의 기록 동작 동안 기록된 것보다 적은 개별적인 기록 동작 동안 하나 또는 몇개의 데이터 페이지를 반복적으로 기록하는 것을 포함하는 데이터 갱신 방법.
  19. 제16항에 있어서, 상기 적어도 하나의 데이터 기록 패턴은 다수의 블록 그룹의 다른 블록의 오버헤드 데이터를 저장하도록 소정 블록 그룹을 지정하는 것을 포함하는 데이터 갱신 방법.
  20. 동시에 소거가능하고 소정수의 호스트 유닛의 데이터가 하나 이상의 블록의 그룹들 중 개별적인 그룹으로 프로그램되는 최소수의 셀의 하나 이상의 블록의 그룹으로 조직되는 메모리 셀을 갖는 비휘발성 메모리에서, 호스트 명령에 응답하여 하나 이상의 블록의 소정 그룹에 저장된 전체 데이터보다 적게 갱신하는 방법에 있어서,
    이와 같은 데이터의 논리적 어드레스가 순차적인지 여부에 관계없이 논리적 어드레스의 제1 범위 내에서 호스트 유닛의 데이터를 순차적인 물리적 블록 위치에 저장하기 위하여 적어도 하나 이상의 블록의 제1 그룹을 지정하는 단계; 및,
    제로이상의 어드레스 오프셋을 지닌 순차적인 물리적 위치를 위하여 지정된 순차적인 논리적 어드레스를 갖는 논리적 어드레스의 제2 범위 내에서 호스트 유닛의 데이터를 저장하도록 하나 이상의 블록의 적어도 제2 그룹을 지정하는 단계를 포함하는 갱신 방법.
  21. 제20항에 있어서, 상기 블록의 제1 그룹은 공통 논리적 어드레스를 갖는 제2 블록의 그룹 내에 포함되는 데이터의 갱신을 포함할 수 있는 갱신 방법.
  22. 제20항에 있어서, 상기 블록의 제1 그룹은 블록의 제2 그룹에서 데이터로 표시되지 않는 논리적 어드레스를 갖는 데이터를 포함할 수 있는 갱신 방법.
  23. 제20항에 있어서, 상기 논리적 어드레스의 제1 및 제2 범위는 논리적 블록의 공통 어드레스를 포함하는 갱신 방법.
  24. 제20항에 있어서, 상기 논리적 어드레스의 제1 및 제2 범위는 논리적 범위의의 공통 어드레스를 포함하지 않는 갱신 방법.
  25. 메모리 시스템으로서,
    어드레싱, 프로그래밍 및 판독 회로를 개별적으로 포함하는 다수의 서브-어레이로 조직되는 비휘발성 메모리 셀의 어레이로서, 상기 서브-어레이는 모두 소거되는 메모리 셀의 유닛으로 분할되며, 상기 소거 유닛은 모두 프로그램되는 셀 유닛으로 또한 분할되며, 상기 프로그래밍 유닛은 자신의 소거 유닛내에서 프로그래밍 유닛 오프셋 어드레스로 식별되는, 어레이;
    상기 메모리 셀 어레이의 동작을 제어하는 제어기;
    제로 이상의 어드레스 오프셋을 갖고 상기 소거 유닛들 중 적어도 하나의 다 른 유닛 내의 프로그래밍 유닛과 동일한 어드레스 순서를 갖는 프로그래밍 유닛에서 상기 서브-어레이들 중 개별적인 어레이 내에서 상기 소거 유닛들 중 하나 이상의 다른 유닛의 제1 그룹의 순차적으로 어드레스된 프로그래밍 유닛의 갱신된 데이터를 저장하도록 제어기에 의해 지정되는 서브-어레이들 중 개별적인 서브-어레이 내의 적어도 하나의 소거 유닛;
    갱신되는 상기 프로그래밍 유닛 데이터의 프로그래밍 유닛 오프셋 또는 어드레스 오프셋과 관계없이 소정 시퀀스에 따라서 페이지 내에 서브-어레이들 중 개별적인 서브-어레인 내에 소거 유닛들 중 하나 이상의 유닛의 제2 그룹의 프로그래밍 유닛의 갱신된 데이터를 저장하기 위하여 제어기에 의해 지정되는 서브-어레이들 중 개별적인 서브 어레이 내의 적어도 또 다른 소거 유닛을 포함하는 메모리 시스템.
KR1020067012947A 2003-12-30 2004-12-15 대형 소거 블록을 갖는 비휘발성 메모리 시스템의 관리 KR101118507B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/749,831 2003-12-30
US10/749,831 US8504798B2 (en) 2003-12-30 2003-12-30 Management of non-volatile memory systems having large erase blocks
PCT/US2004/042644 WO2005066790A1 (en) 2003-12-30 2004-12-15 Management of non-volatile memory systems having large erase blocks

Publications (2)

Publication Number Publication Date
KR20060130081A true KR20060130081A (ko) 2006-12-18
KR101118507B1 KR101118507B1 (ko) 2012-03-12

Family

ID=34701110

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067012947A KR101118507B1 (ko) 2003-12-30 2004-12-15 대형 소거 블록을 갖는 비휘발성 메모리 시스템의 관리

Country Status (7)

Country Link
US (3) US8504798B2 (ko)
EP (1) EP1700219B1 (ko)
JP (1) JP4933267B2 (ko)
KR (1) KR101118507B1 (ko)
CN (1) CN1902599B (ko)
TW (1) TWI287191B (ko)
WO (1) WO2005066790A1 (ko)

Families Citing this family (195)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
TWI240861B (en) * 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
TWI232466B (en) * 2003-10-28 2005-05-11 Prolific Technology Inc Method for updating data of non-volatile memory
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
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
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US20070084375A1 (en) * 2005-08-10 2007-04-19 Smith Kyle S High density cartridge and method for reloading
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
DE602006014299D1 (de) * 2005-11-22 2010-06-24 Sandisk Corp Verfahren und speichersystem für legacy-hosts
US7747927B2 (en) * 2005-11-22 2010-06-29 Sandisk Corporation Method for adapting a memory system to operate with a legacy host originally designed to operate with a different memory system
US7739472B2 (en) * 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143378A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with adaptive file handling in a directly mapped file storage system
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143561A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7913003B2 (en) * 2006-02-24 2011-03-22 Intel Corporation Reclaim algorithm for fast edits in a nonvolatile file system
JP4898252B2 (ja) * 2006-03-15 2012-03-14 パナソニック株式会社 不揮発性記憶装置及びそのデータ管理方法
US7979624B2 (en) * 2006-03-31 2011-07-12 Intel Corporation Techniques to truncate data files in nonvolatile memory
JP2007280108A (ja) * 2006-04-07 2007-10-25 Sony Corp 記憶媒体制御装置、記憶媒体制御方法、プログラム
KR100784007B1 (ko) * 2006-10-31 2007-12-10 주식회사 하이닉스반도체 비휘발성 메모리 장치 및 그 소거 방법
US8151060B2 (en) 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
KR20090102789A (ko) 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
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
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
KR100885181B1 (ko) * 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
US7804718B2 (en) * 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
US7904670B2 (en) * 2007-03-19 2011-03-08 Sandisk Corporation Methods for conversion of update blocks based on comparison with a threshold size
US8341375B2 (en) * 2007-03-19 2012-12-25 Sandisk Technologies Inc. Methods for conversion of update blocks based on association with host file management data structures
US8275953B2 (en) * 2007-03-19 2012-09-25 Sandisk Technologies Inc. Methods for forcing an update block to remain sequential
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
US20080307156A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US8566504B2 (en) * 2007-09-28 2013-10-22 Sandisk Technologies Inc. Dynamic metablocks
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US8775717B2 (en) 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
JP4519923B2 (ja) * 2008-02-29 2010-08-04 株式会社東芝 メモリシステム
US9773557B2 (en) 2008-09-03 2017-09-26 Marvell World Trade Ltd. Multi-plane data order
US8438325B2 (en) * 2008-10-09 2013-05-07 Cadence Design Systems, Inc. Method and apparatus for improving small write performance in a non-volatile memory
US9141475B2 (en) * 2008-11-23 2015-09-22 Sandisk Technologies Methods for tag-grouping of blocks in storage devices
JP5400875B2 (ja) * 2009-05-21 2014-01-29 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、アクセス装置、不揮発性記憶システム、データ書き込み方法、および、プログラム
CN102237130B (zh) * 2010-04-20 2014-01-29 深圳市江波龙电子有限公司 一种寻找多层单元闪存中最低有效位页的方法及系统
US8543757B2 (en) * 2010-06-23 2013-09-24 Sandisk Technologies Inc. Techniques of maintaining logical to physical mapping information in non-volatile memory systems
US8819503B2 (en) * 2010-07-02 2014-08-26 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8737141B2 (en) 2010-07-07 2014-05-27 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8737136B2 (en) 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
KR20120029239A (ko) * 2010-09-16 2012-03-26 삼성전자주식회사 Pram을 이용하는 데이터 기록 시스템 및 그 방법
KR20130019407A (ko) 2010-09-24 2013-02-26 큐엔엑스 소프트웨어 시스템즈 리미티드 휴대용 전자 디바이스 및 그 제어 방법
WO2012037688A1 (en) 2010-09-24 2012-03-29 Research In Motion Limited Transitional view on a portable electronic device
US9141256B2 (en) 2010-09-24 2015-09-22 2236008 Ontario Inc. Portable electronic device and method therefor
CN102446071B (zh) * 2010-09-30 2014-10-08 环鸿科技股份有限公司 取得一存储器状态资讯的接取方法、电子装置及程序产品
TWI463495B (zh) * 2010-12-10 2014-12-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與儲存裝置
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8856470B2 (en) * 2011-01-25 2014-10-07 International Business Machines Corporation Data integrity protection in storage volumes
US9047955B2 (en) 2011-03-30 2015-06-02 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
EP2715510B1 (en) * 2011-05-24 2018-05-02 Marvell World Trade Ltd. Method for storage devices to achieve low write amplification with low over provision
US9465755B2 (en) 2011-07-18 2016-10-11 Hewlett Packard Enterprise Development Lp Security parameter zeroization
KR101824068B1 (ko) * 2011-07-28 2018-03-15 삼성전자주식회사 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치
WO2013030866A1 (en) * 2011-08-29 2013-03-07 Hitachi, Ltd. Semiconductor storage device comprising electrically rewritable nonvolatile semiconductor memory
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
JP5907739B2 (ja) * 2012-01-26 2016-04-26 株式会社日立製作所 不揮発性記憶装置
US9195586B2 (en) 2012-02-23 2015-11-24 Hgst Technologies Santa Ana, Inc. Determining bias information for offsetting operating variations in memory cells based on wordline address
TWI456391B (zh) * 2012-03-14 2014-10-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103324580B (zh) * 2012-03-23 2016-03-16 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
TWI605458B (zh) 2012-04-25 2017-11-11 Sony Corp Non-volatile memory devices, non-volatile memory control devices, and non-volatile memory control methods
US9128822B2 (en) 2012-06-22 2015-09-08 Winbond Electronics Corporation On-chip bad block management for NAND flash memory
TWI486767B (zh) * 2012-06-22 2015-06-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
TWI479313B (zh) * 2012-07-11 2015-04-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103577344B (zh) * 2012-07-20 2017-03-01 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
CN104583989A (zh) * 2012-08-28 2015-04-29 惠普发展公司,有限责任合伙企业 高性能持久性存储器
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
KR20140056657A (ko) 2012-10-30 2014-05-12 삼성전자주식회사 메인 메모리를 구비한 컴퓨터 시스템 및 그것의 제어 방법
TWI501249B (zh) * 2012-11-14 2015-09-21 Winbond Electronics Corp 晶片上之反及閘快閃記憶體及其損壞區塊管理方法
CN103871447B (zh) * 2012-12-14 2017-03-01 华邦电子股份有限公司 与非门快闪存储器阵列及芯片及其存取、读取及管理方法
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
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9324450B2 (en) 2013-03-13 2016-04-26 Winbond Electronics Corporation NAND flash memory
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
KR102147988B1 (ko) 2013-04-09 2020-08-26 삼성전자주식회사 불휘발성 저장 장치 및 그것의 데이터 저장 방법
US9349450B2 (en) 2013-06-10 2016-05-24 Micron Technology, Inc. Memory devices and memory operational methods including single erase operation of conductive bridge memory cells
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US9483397B2 (en) * 2013-07-16 2016-11-01 Intel Corporation Erase management in memory systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation 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
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9501400B2 (en) 2013-11-13 2016-11-22 Sandisk Technologies Llc Identification and operation of sub-prime blocks in nonvolatile memory
KR101821439B1 (ko) * 2013-11-15 2018-03-08 엘에스산전 주식회사 한류기
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
US9218891B2 (en) * 2013-11-27 2015-12-22 Silicon Motion, Inc. Data storage device and flash memory control method
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
US9329992B2 (en) 2013-12-04 2016-05-03 Silicon Motion, Inc. Data storage device and flash memory control method
KR102182368B1 (ko) * 2013-12-19 2020-11-24 에스케이하이닉스 주식회사 어드레스 검출회로 및 이를 포함하는 메모리
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
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
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
KR20150116352A (ko) 2014-04-07 2015-10-15 삼성전자주식회사 메모리 제어 방법 및 시스템
US9582205B2 (en) * 2014-04-17 2017-02-28 Sandisk Technologies Llc Protection scheme with dual programming of a memory system
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
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
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
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
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
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
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
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9442798B2 (en) 2014-07-31 2016-09-13 Winbond Electronics Corporation NAND flash memory having an enhanced buffer read capability and method of operation thereof
US9367392B2 (en) 2014-08-01 2016-06-14 Winbond Electronics Corporation NAND flash memory having internal ECC processing and method of operation thereof
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US10331551B2 (en) 2014-12-29 2019-06-25 Toshiba Memory Corporation Information processing device and non-transitory computer readable recording medium for excluding data from garbage collection
TWI557744B (zh) * 2015-01-27 2016-11-11 緯創資通股份有限公司 資料儲存方法及嵌入式系統
TWI571881B (zh) * 2015-10-23 2017-02-21 群聯電子股份有限公司 有效資料合併方法、記憶體控制器與記憶體儲存裝置
JP6448570B2 (ja) * 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
KR102452994B1 (ko) * 2016-09-06 2022-10-12 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
CN106448735B (zh) * 2016-09-13 2019-09-13 天津大学 用于大容量非易失性存储器的数据快速擦除方法
TWI653533B (zh) * 2017-03-07 2019-03-11 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US10565115B2 (en) 2017-03-30 2020-02-18 Western Digital Technologies, Inc. Calculating the optimal number of LBNS to prefetch per CPU
CN108710579A (zh) * 2018-04-27 2018-10-26 江苏华存电子科技有限公司 一种超过寻址空间大容量的管理方法
US11379155B2 (en) 2018-05-24 2022-07-05 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10956318B2 (en) * 2018-06-19 2021-03-23 Macronix International Co., Ltd. Overlapping ranges of pages in memory systems
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
CN109062822B (zh) * 2018-07-18 2021-09-07 北京世纪东方通讯设备有限公司 一种机车无线通信数据的存储方法及装置
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
US10665303B1 (en) * 2019-05-10 2020-05-26 Macronix International Co., Ltd. Erasing blocks with few programmed pages
US10990316B2 (en) * 2019-06-28 2021-04-27 Western Digital Technologies, Inc. Log-based storage for different data types in non-volatile memory
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11294827B2 (en) 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
US11194515B2 (en) * 2019-09-16 2021-12-07 Macronix International Co., Ltd. Memory system, method of operating memory, and non-transitory computer readable storage medium
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11042307B1 (en) * 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
TWI727842B (zh) * 2020-02-20 2021-05-11 大陸商長江存儲科技有限責任公司 存儲器件及其編程方法
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
CN114171092A (zh) 2020-04-23 2022-03-11 长江存储科技有限责任公司 存储器件及其编程方法
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US11894060B2 (en) 2022-03-25 2024-02-06 Western Digital Technologies, Inc. Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability
TWI808010B (zh) * 2022-09-26 2023-07-01 慧榮科技股份有限公司 資料處理方法及對應之資料儲存裝置

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3502001C1 (de) 1985-01-22 1986-07-17 HFH Herbst Förder- und Hebetechnik, 3300 Braunschweig Knickgelenktes,allradgetriebenes Stapelfahrzeug
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
IL96808A (en) 1990-04-18 1996-03-31 Rambus Inc Introductory / Origin Circuit Agreed Using High-Performance Brokerage
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
JP2618149B2 (ja) 1991-04-22 1997-06-11 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ内のデータ記憶スペースを管理する方法及びキャッシュ内でページ置換を行う装置
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
JPH05233426A (ja) 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
US5687345A (en) * 1992-03-17 1997-11-11 Hitachi, Ltd. Microcomputer having CPU and built-in flash memory that is rewritable under control of the CPU analyzing a command supplied from an external device
US5341489A (en) 1992-04-14 1994-08-23 Eastman Kodak Company Memory card with programmable interleaving
JP3299564B2 (ja) 1992-05-11 2002-07-08 松下電器産業株式会社 メモリ装置
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JP3105092B2 (ja) 1992-10-06 2000-10-30 株式会社東芝 半導体メモリ装置
US5341330A (en) 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5649200A (en) 1993-01-08 1997-07-15 Atria Software, Inc. Dynamic rule-based version control system
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
JPH06266596A (ja) 1993-03-11 1994-09-22 Hitachi Ltd フラッシュメモリファイル記憶装置および情報処理装置
US5519843A (en) 1993-03-15 1996-05-21 M-Systems Flash memory system providing both BIOS and user storage capability
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
JP3215237B2 (ja) 1993-10-01 2001-10-02 富士通株式会社 記憶装置および記憶装置の書き込み/消去方法
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
US5541886A (en) 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
JPH08263361A (ja) 1995-03-23 1996-10-11 Mitsubishi Electric Corp フラッシュメモリカード
US6978342B1 (en) * 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
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
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
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
US5860090A (en) 1995-10-20 1999-01-12 Informix Software, Inc. Append-only storage in a disk array using striping and parity caching
FR2742893B1 (fr) 1995-12-20 1998-01-16 Schlumberger Ind Sa Procede d'inscription d'une donnee dans une memoire reinscriptible
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5896393A (en) 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
JP3489708B2 (ja) * 1996-10-23 2004-01-26 シャープ株式会社 不揮発性半導体記憶装置
US6047352A (en) 1996-10-29 2000-04-04 Micron Technology, Inc. Memory system, method and predecoding circuit operable in different modes for selectively accessing multiple blocks of memory cells for simultaneous writing or erasure
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
JPH10177797A (ja) 1996-12-17 1998-06-30 Toshiba Corp 半導体記憶装置
US6122195A (en) 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US6034897A (en) 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US5999947A (en) 1997-05-27 1999-12-07 Arkona, Llc Distributing database differences corresponding to database change events made to a database table located on a server computer
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
JP3588231B2 (ja) 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
JP2914360B2 (ja) 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
JP3119214B2 (ja) 1997-09-30 2000-12-18 ソニー株式会社 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法
US6040997A (en) 1998-03-25 2000-03-21 Lexar Media, Inc. Flash memory leveling architecture having no external latch
JP2000122923A (ja) 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
JP4046877B2 (ja) 1998-12-14 2008-02-13 株式会社ルネサステクノロジ 一括消去型不揮発性メモリおよび携帯電話
JP2000181784A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 書き換え可能な不揮発性記憶装置
US6150838A (en) 1999-02-25 2000-11-21 Xilinx, Inc. FPGA configurable logic block with multi-purpose logic/memory circuit
JP2000285017A (ja) 1999-03-31 2000-10-13 Seiko Epson Corp 記憶装置
US6449625B1 (en) 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
KR100618298B1 (ko) 1999-07-28 2006-09-01 소니 가부시끼 가이샤 기록 시스템, 데이터 기록 장치, 메모리 장치 및 데이터기록 방법
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
US6775423B2 (en) * 2000-05-03 2004-08-10 Microsoft Corporation Systems and methods for incrementally updating an image in flash memory
US6721843B1 (en) 2000-07-07 2004-04-13 Lexar Media, Inc. Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US6834331B1 (en) 2000-10-24 2004-12-21 Starfish Software, Inc. System and method for improving flash memory data integrity
US7062630B2 (en) 2000-10-26 2006-06-13 Matsushita Electric Industrial Co., Ltd. Storing device for writing data onto a plurality of installed storing mediums, storing control method for the storing device, and program thereof
JP3992960B2 (ja) 2000-10-26 2007-10-17 松下電器産業株式会社 記録装置及びプログラム
US7020739B2 (en) 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
IT1315566B1 (it) 2000-12-12 2003-02-18 Federico Renier Metodo per la certificazione dell'invio,della ricezione edell'autenticita' di documenti elettronici ed unita' di rete
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
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
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP3967121B2 (ja) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US7328301B2 (en) 2003-04-07 2008-02-05 Intel Corporation Dynamically mapping block-alterable memories
US7107388B2 (en) 2003-04-25 2006-09-12 Intel Corporation Method for read once memory
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics

Also Published As

Publication number Publication date
US20090216938A1 (en) 2009-08-27
US20050144358A1 (en) 2005-06-30
US8117380B2 (en) 2012-02-14
US8504798B2 (en) 2013-08-06
EP1700219B1 (en) 2014-04-02
TWI287191B (en) 2007-09-21
JP2007517319A (ja) 2007-06-28
KR101118507B1 (ko) 2012-03-12
WO2005066790A1 (en) 2005-07-21
CN1902599A (zh) 2007-01-24
TW200601040A (en) 2006-01-01
JP4933267B2 (ja) 2012-05-16
CN1902599B (zh) 2011-12-21
EP1700219A1 (en) 2006-09-13
US20130339585A1 (en) 2013-12-19
US8745322B2 (en) 2014-06-03

Similar Documents

Publication Publication Date Title
KR101118507B1 (ko) 대형 소거 블록을 갖는 비휘발성 메모리 시스템의 관리
US7631138B2 (en) Adaptive mode switching of flash memory address mapping based on host usage characteristics
US8364883B2 (en) Scheduling of housekeeping operations in flash memory systems
US7395404B2 (en) Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7467253B2 (en) Cycle count storage systems
KR101040961B1 (ko) 온-칩 비휘발성 메모리 기록 캐쉬를 사용하기 위한 시스템및 방법
US20060161724A1 (en) Scheduling of housekeeping operations in flash memory systems
US20080294814A1 (en) Flash Memory System with Management of Housekeeping Operations
US20080294813A1 (en) Managing Housekeeping Operations in Flash Memory
US20070245068A1 (en) Cycle count storage methods
WO2008147752A1 (en) Managing housekeeping operations in flash memory

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: 20150119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 9