KR101584048B1 - 비휘발성 메모리에서 예비 블록 관리 방법 - Google Patents

비휘발성 메모리에서 예비 블록 관리 방법 Download PDF

Info

Publication number
KR101584048B1
KR101584048B1 KR1020117015517A KR20117015517A KR101584048B1 KR 101584048 B1 KR101584048 B1 KR 101584048B1 KR 1020117015517 A KR1020117015517 A KR 1020117015517A KR 20117015517 A KR20117015517 A KR 20117015517A KR 101584048 B1 KR101584048 B1 KR 101584048B1
Authority
KR
South Korea
Prior art keywords
block
volatile memory
section
spare
blocks
Prior art date
Application number
KR1020117015517A
Other languages
English (en)
Other versions
KR20110121678A (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 KR20110121678A publication Critical patent/KR20110121678A/ko
Application granted granted Critical
Publication of KR101584048B1 publication Critical patent/KR101584048B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • 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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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
    • 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
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Landscapes

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

Abstract

플래시 EEPROM 시스템과 같은 재프로그램 가능 비휘발성 메모리 시스템에서 예비 블록의 관리를 위한 기술들이 제시된다. 한 세트의 기술들에서, 한 섹션의 블록이 더 오류가 나기 쉬운 경향이 있는, 2개의 섹션들(예를 들면 바이너리 섹션 및 다중-상태 섹션)로 분할된 메모리에 있어서, 예비 블록은 더 오류가 나기 쉬운 경향이 있는 파티션에서 덜 오류가 나는 경향이 있는 파티션으로 이동될 수 있다. 두 개의 섹션으로 분할된 메모리를 위한 또 다른 한 세트의 기술에서, 더 오류가 나기 쉬운 경향이 있는 파티션 내 불능이 된 블록은 다른 파티션 내 예비 블록으로서 기능하게 이동된다. 보완적 한 세트의 기술들에서, 블록이 최근에 기록되었는지를 판정하기 위해 자유 블록에 대해 1-비트 시간 스탬프가 유지관리된다. 다른 기술은 호스트가 알고 있는 논리 어드레스 공간을 초과하는 논리 어드레스에 예비 블록을 할당함으로써 이들이 논리 대 물리 변환 테이블에 의해 관리될 수 있게 한다.

Description

비휘발성 메모리에서 예비 블록 관리 방법{SPARE BLOCK MANAGEMENT IN NON-VOLATILE MEMORIES}
이 발명은 일반적으로 비휘발성 플래시 메모리 시스템의 동작에 관한 것이고, 보다 구체적으로는, 특히 큰 메모리 셀 블록을 갖는 메모리 시스템에서, 메모리의 블록 또는 다른 부분의 사용을 관리하는 기술에 관한 것이다.
전하를 비휘발성으로 저장할 수 있는, 특히 소형 폼 팩터 카드로서 패키지되는 EEPROM 및 플래시 EEPROM 형태의 고체 상태 메모리는 최근에 다양한 모바일 및 휴대 장치, 특히 정보 기기 및 소비자 전자 제품에서 선택되는 저장 장치가 되었다. 고체 상태 메모리이기도 한 RAM(random access memory)과는 달리, 플래시 메모리는 비휘발성이고 전원이 턴 오프 된 뒤에도 자신의 저장된 데이터를 보존한다. 또한, ROM(판독 전용 메모리)와는 달리, 플래시 메모리는 디스크 저장 장치와 유사하게 재기록될 수 있다. 높은 비용에도 불구하고 플래시 메모리는 점점 더 대량 저장 응용에서 사용되고 있다. 하드드라이브 및 플로피 디스크와 같은 회전하는 자기 매체에 기초한 종래의 대량 저장 장치는 모바일 및 휴대 환경엔 적합하지 않다. 이것은 디스크 드라이브가 부피가 커지기 쉽고, 기계적 고장이 나기 쉬우며 큰 레이턴시 및 큰 전력 요건을 갖기 때문이다. 이들 바람직하지 못한 속성으로 인해서 디스크 기반의 저장 장치는 대부분의 모바일 및 휴대 응용에서 실현되지 못한다. 반면, 내장형이면서도 착탈 가능한 카드 형태인 플래시 메모리는 이의 소형 크기, 저 전력 소비, 고속 및 고 신뢰도 특징으로 인해 모바일 및 휴대 환경에서 이상적으로 적합하다.
플래시 EEPROM은, 소거될 수 있고 새로운 데이터를 이들의 메모리 셀에 기록 또는 "프로그램"시킬 수 있는 비휘발성 메모리인 점에서 EEPROM(전기적으로 소거 가능하고 프로그램 가능한 판독 전용 메모리)와 유사하다. 이들 둘 다는, 전계 효과 트랜지스터 구조에서, 소스 영역과 드레인 영역 사이에 있는 반도체 기판 내 채널 영역 위에 배치된 플로팅(비접속된) 도전성 게이트를 이용한다. 이때 제어 게이트는 플로팅 게이트 위에 설치된다. 트랜지스터의 임계 전압 특징은 플로팅 게이트 상에 보존되는 전하량에 의해 제어된다. 즉, 플로팅 게이트 상에 소정 레벨의 전하에 대해서, 소스 영역과 드레인 영역 사이에 도통이 되도록 트랜지스터가 턴 "온"이 되기 전에 제어 게이트에 인가되어야 하는 대응하는 전압(임계)이 있다. 특히, 플래시 EEPROM과 같은 플래시 메모리는 메모리 셀이 전체 블록이 동시에 소거될 수 있게 한다.
플로팅 게이트는 일 범위의 전하를 보존할 수 있고, 이에 따라 임계 전압 윈도우 내의 임의의 임계 전압 레벨까지 프로그램될 수 있다. 임계 전압 윈도우의 크기는 장치의 최소 및 최대 임계 레벨에 의해 그 범위가 정해지고, 이는 플로팅 게이트에 프로그램될 수 있는 일 범위의 전하에 대응한다. 임계 윈도우는 일반적으로 메모리 장치의 특징, 동작조건 및 이력에 따른다. 윈도우 내의 각각의 서로 구별되고 결정이 가능한 임계 전압 레벨의 범위는 원리적으로는 셀의 명확한 메모리 상태를 지정하는데 사용될 수 있다.
메모리 셀로 작용하는 트랜지스터는 전형적으로 두 가지 메커니즘 중 한 메커니즘에 의해 "프로그램된" 상태로 프로그램된다. "핫 전자 주입"에서, 드레인에 인가되는 하이(high) 전압은 기판 채널 영역을 지나는 전자를 가속시킨다. 이와 동시에, 제어 게이트에 인가되는 하이 전압은 핫 전자를 얇은 게이트 유전체를 거쳐 플로팅 게이트로 가게 한다. "터널링 주입"에서는 하이 전압이 기판에 관하여 제어 게이트에 인가된다. 이렇게 하여, 기판으로부터 전자가 개재된 플로팅 게이트로 가게 된다. "프로그램"이라는 용어는 통상적으로 메모리 상태를 변경하기 위해 메모리의 초기에 소거된 전하 저장 유닛에 전자를 주입함으로써 메모리에 기록하는 것을 서술하기 위해 사용되었지만, 이제는 "기록" 또는 "기록들"과 같은 보다 일반적인 용어와 상호교환적으로 사용되고 있다.
메모리 장치는 많은 메커니즘에 의해 소거될 수 있다. EEPROM에 있어서, 메모리 셀은 플로팅 게이트 내 전자를 얇은 산화막을 통과하여 기판 채널 영역으로 터널링되도록 하기 위해서(즉, 파울러-노다임 터널링) 제어 게이트에 관하여 기판에 하이 전압을 인가함으로써 전기적으로 소거될 수 있다. 통상적으로, EEPROM은 바이트 별로 소거될 수 있다. 플래시 EEPROM에 있어서, 메모리는 한 번에 전부 또는 한 번에 하나 이상의 블록으로 전기적으로 소거될 수 있는데, 여기서 한 블록은 메모리의 512 또는 그 이상의 바이트로 구성될 수 있다.
메모리 장치는 통상적으로, 카드 상에 실장될 수 있는 하나 또는 그 이상의 메모리 칩을 포함한다. 각 메모리 칩은 디코더 및 소거, 기록 판독 회로와 같은 주변 회로에 의해 지원되는 메모리 셀 어레이를 포함한다. 보다 정교한 메모리 장치는 지능형의 고 레벨의 메모리 동작 및 인터페이싱을 수행하는 외부 메모리 제어기에 의해 동작한다.
최근에 사용되는 많은 상업적으로 성공한 비휘발성 고체 상태 메모리 장치가 있다. 이들 메모리 장치는 플래시 EEPROM일 수도 있으며 또는 다른 유형의 비휘발성 메모리 셀을 채용할 수 있다. 플래시 메모리와 시스템 및 이들을 제조하는 방법의 예는, 미국 특허 5,070,032, 5,095,344, 5,315,541, 5,343,063, 및 5,661,053, 5,313,421 및 6,222,762에 주어져 있다. 특히, NAND 스트링 구조를 가진 플래시 메모리 장치는, 미국 특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다. 또한 비휘발성 메모리 장치는 전하를 저장하기 위한 유전층을 구비한 메모리 셀로부터도 제조된다. 앞서 기술된 도전성 플로팅 게이트 요소 대신에, 유전층이 사용된다. 유전성 저장 요소를 이용하는 이러한 메모리 장치는, Eitan 등의 "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell" IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545에 기재되어 있다. ONO 유전층은 소스 확산 영역과 드레인 확산 영역 사이의 채널을 가로질러 확장하여 있다. 한 데이터 비트용의 전하는 드레인에 인접한 유전층에 모이고 다른 데이터 비트용의 전하는 소스에 인접한 유전층에 모인다. 예를 들어, 미국 특허 5,768,192 및 6,011,725는 두 개의 이산화규소층 사이에 개재된 트랩 유전층을 구비한 비휘발성 메모리 셀을 개시하고 있다. 다중-상태 데이터 저장 장치는 유전층 내 공간적으로 분리된 전하 저장 영역의 바이너리 상태를 개별적으로 판독함으로써 구현된다.
판독 및 프로그램 성능을 개선하기 위해서, 어레이 내 복수의 전하 저장소자 또는 메모리 트랜지스터는 병렬로 판독 또는 프로그램된다. 이에 따라, 한 "페이지"의 메모리 소자들은 함께 판독 또는 프로그램된다. 현존의 메모리 아키텍처들에서, 한 행은 전형적으로 몇 개의 인터리빙된 페이지를 포함하거나 한 페이지를 구성할 수도 있다. 한 페이지의 모든 메모리 요소는 함께 판독 또는 프로그램될 것이다.
플래시 메모리 시스템에서, 소거 동작은 판독 및 프로그램 동작보다 한 자리수 크기만큼 더 길게 걸릴 수 있다. 따라서, 상당 크기의 소거 블록을 취하는 것이 바람직하다. 따라서, 소거 시간을 한 큰 집단의 메모리 셀이 부담한다.
플래시 메모리의 특성은 소거된 메모리 위치에 데이터가 기록되어야 한다는 속성을 갖고 있다. 호스트로부터 어떤 논리 어드레스의 데이터가 업데이트될 것이라면, 한 방법은 업데이트 데이터를 동일 물리 메모리 위치에 다시 기록하는 것이다. 즉, 논리 대 물리 어드레스 매핑은 변경되지 않는다. 그러나, 이것은 물리 위치가 먼저 소거되고 이어서 업데이트된 데이터로 재기록되어야 하는 것을 전체 소거 블록이 갖고 있음을 의미할 것이다. 이 업데이트 방법은, 특히 업데이트될 데이터가 소거 블록의 작은 부분만을 점유한다면, 전체 소거 블록이 소거되고 재기록될 것을 요구하기 때문에 비효율적이다. 또한, 이에 따라 메모리 블록의 소거 리사이클의 빈도를 높아지게 할 것이고, 이것은 이러한 유형의 메모리 장치의 한정된 내구성 면에서 바람직하지 못하다.
호스트 시스템, 메모리 시스템 및 그외 전자 시스템의 외부 인터페이스를 통해 통신되는 데이터는 어드레스되어 플래시 메모리 시스템의 물리 위치에 매핑된다. 전형적으로, 시스템에 의해 발생되거나 수신된 데이터 파일의 어드레스는 데이터의 논리적 블록에 관련하여 시스템을 위해 설정된 서로 구별되는 다수 범위의 연속한 논리 어드레스 공간에 매핑된다(이하, "LBA 인터페이스"). 어드레스 공간의 크기는 전형적으로 시스템이 취급할 수 있는 전체 범위의 어드레스를 다루기에 충분하다. 일예에서, 자기 디스크 저장 드라이브들은 이러한 논리 어드레스 공간을 통해 컴퓨터 또는 그외 호스트 시스템과 통신한다. 이 어드레스 공간은 디스크 드라이브의 전체 데이터 저장 용량을 어드레스하기에 충분한 크기를 갖는다.
플래시 메모리 시스템은 가장 일반적으로는 개인용 컴퓨터, 카메라, 등과 같은 다양한 호스트에 착탈 가능하게 연결되는 메모리 카드 또는 플래시 드라이브 형태로 제공되나, 이러한 호스트 시스템 내에 내장될 수도 있다. 데이터를 메모리에 기록할 때, 호스트는 전형적으로 메모리 시스템의 연속된 가상 어드레스 공간 내에 고유 논리 어드레스를 섹터, 클러스터 또는 그외 데이터 단위에 할당한다. 디스크 운영 시스템(DOS)처럼, 호스트는 메모리 시스템의 논리 어드레스 공간 내에 어드레스에 데이터를 기록하고 이들로부터 데이터를 판독한다. 메모리 시스템 내에 제어기는 호스트로부터 수신된 논리 어드레스를 메모리 어레이 내에 데이터가 실제로 저장되는 물리 어드레스들로 변환하며, 이어서 이들 어드레스 변환을 관리한다. 메모리 시스템의 데이터 저장 용량은 최소한, 메모리 시스템에 대해 정의된 전체 논리 어드레스 공간에 걸쳐 어드레스가 지정될 수 있는 데이터량만큼이다.
현재 시판되는 플래시 메모리 시스템에서, 소거 유닛의 크기는 복수 섹터들의 데이터를 저장한 만큼 충분한 메모리 셀의 블록까지 증가되었다. 실제로, 많은 페이지의 데이터가 한 블록에 저장되며, 페이지는 복수 섹터의 데이터를 저장할 수 있다. 또한, 2 이상의 블록은 흔히 메타블록으로서 함께 동작되며, 이러한 블록의 페이지는 메타페이지로서 함께 논리적으로 연결된다. 한 페이지 또는 한 메타페이지의 데이터는 함께 기록되고 판독되며, 이것은 많은 섹터의 데이터를 포함할 수 있는데, 이에 따라 동작의 병행도를 증가시킬 수 있다. 이러한 큰 용량으로 동작하는 유닛과 더불어 과제는 이들을 효율적으로 동작시키는 것이다.
용이한 설명을 위해서, 달리 명시되지 않는 한, 여기에서 사용되는 바와 같은 "블록"이라는 용어는 메타블록이 특정 시스템에서 사용되고 있는지에 따라, 소거의 블록 단위 또는 복수의 블록 "메타블록"을 지칭한다. 유사하게, 여기에서 "페이지"라는 언급은 시스템 구성에 따라, 단일 블록 내에 프로그래밍 단위, 또는 메타블록 내에 "메타페이지"를 지칭할 수 있다.
메모리 시스템에 대해 현재 주로 사용되는 LBA 인터페이스가 사용될 때, 메모리가 연결된 호스트에 의해 발생된 파일들에는 인터페이스의 논리 어드레스 공간 내에 고유 어드레스들이 할당된다. 그러면 메모리 시스템은 일반적으로 논리 어드레스 공간과 메모리의 물리 블록의 페이지 사이에 데이터를 매핑한다. 메모리 시스템은 논리 어드레스 공간이 물리 메모리에 어떻게 매핑되었는지를 관리하나 호스트는 이를 알지 못한다. 호스트는 논리 어드레스 공간 내에 자신의 데이터 파일들의 어드레스를 관리하나 메모리 시스템은 이 매핑에 대해 거의 또는 전혀 알지 못하고 동작한다.
플래시 메모리 시스템을 관리함에 있어 또 다른 문제는 시스템 제어 및 디렉토리 데이터에 관련이 있다. 데이터는 다양한 메모리 동작 과정 동안 생성되며 액세스된다. 이에 따라, 이의 효율적 취급 및 준비된 액세스는 성능에 직접적으로 영향을 미칠 것이다. 플래시 메모리는 저장을 위한 것이며 비휘발성이기 때문에 플래시 메모리에 이러한 유형의 데이터를 유지관리하는 것이 바람직할 것이다. 그러나, 제어기와 플래시 메모리 사이에 파일 관리 시스템이 개재되어 있어, 데이터는 직접적으로 액세스될 수 없다. 또한, 시스템 제어 및 디렉토리 데이터는 활성 및 단편화되는 경향이 있으며, 이것은 큰 크기의 블록 소거를 가진 시스템에 저장을 어렵게 한다. 통상적으로, 이러한 유형의 데이터는 제어기 RAM 내에 셋업되며, 그럼으로써 제어기에 의해 직접적으로 액세스될 수 있게 한다. 메모리 장치가 기동된 후에, 초기화 과정은 제어기 RAM 내에 넣어질 필요한 시스템 제어 및 디렉토리 정보를 컴파일하기 위해서 플래시 메모리가 스캔될 수 있게 한다. 이 과정은 시간이 걸리며 제어기 RAM 용량을 요구하며, 계속 증가하는 플래시 메모리 용량에 있어선 더욱 더 그러하다.
미국 특허 6,567,307는 스크래치 패드로서 작용하는 복수의 소거 블록으로 업데이트 데이터를 기록하고 종국에는 각종 블록 사이에 유효 섹터를 합체하고 이들을 논리적 순차적 순서로 재배열한 후에 섹터를 재기록하는 것을 포함한 큰 소거 블록 사이에 섹터 업데이트를 처리하는 방법을 개시한다. 이렇게 하여, 블록은 최소한의 업데이트마다 소거되어 재기록될 필요가 없다.
WO03/027828 및 WO00/49488 둘 다는 논리 섹터 어드레스를 구역으로 분할하는 것을 포함하여 큰 소거 블록 사이에 업데이트를 처리하는 메모리 시스템을 개시한다. 작은 구역의 논리 어드레스 범위는 사용자 데이터를 위한 다른 구역과는 분리하여 능동 시스템 제어 데이터용으로 유보되어 있다. 이렇게 하여, 시스템 제어 데이터를 자신의 구역 내에서 이의 조작은 다른 구역 내 연관된 사용자 데이터와 상호작용하지 않을 것이다. 업데이트는 논리 섹터 레벨에 있으며 기록 포인터는 기록될 블록 내 대응하는 물리 섹터를 가리킨다. 매핑 정보는 RAM 내에 버퍼되며 종국에는 주 메모리 내 섹터 할당 테이블에 저장된다. 논리 섹터의 가장 최근의 버전은 현존한 블록 중 이전의 버전 모두를 폐용시킬 것이며, 이것은 부분적으로 폐용이 된다. 부분적으로 폐용이 된 블록을 허용할 수 있는 수까지 유지하기 위해 가비지 수거가 수행된다.
종래 기술의 시스템은 업데이트 데이터를 많은 블록에 걸쳐 분산되도록 하는 경향이 있고, 또는 업데이트 데이터는 많은 현존한 블록을 부분적으로 폐용이 되도록 할 수 있다. 결과는 흔히 부분적으로 폐용이 된 블록에 필요한 상당량의 가비지 수거이며, 이것은 비효율적이며 메모리의 조기 노화를 야기한다. 또한, 비순차적 업데이트에 비해 순차적 업데이트를 처리할 체계적이며 효율적인 방법은 없다.
순차적 및 비순차적 업데이트 블록이 혼재된 블록 관리 시스템을 가진 플래시 메모리는 전체 개시된 바를 본 명세서에 참조로서 포함시키는 2005년 6월 30일자 미국 특허공개공보 US-2005-0144365-A1에 개시되어 있다.
제 1 세트의 면들에서, 비휘발성 메모리 시스템은 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로를 포함하며, 블록은 제 1 및 제 2 모드에서 동작하며, 제 1 동작 모드는 제 2 동작 모드보다 더 큰 내구성을 갖는다. 또한, 메모리 시스템은 메모리 회로와 상기 메모리 시스템이 부착된 호스트 사이의 데이터 전송과 상기 메모리 회로에 저장된 데이터의 관리를 제어하기 위해 상기 메모리 회로에 연결된 제어기 회로를 포함한다. 메모리는 제 1 모드에 따라 동작되는 제 1 섹션의 블록 및 제 2 모드에 따라 동작되는 제 2 섹션의 블록으로 분할되며, 제 2 섹션은 초기에는 제 2 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함한다. 제어기는 제 2 섹션으로부터 예비 블록을 제 1 섹션을 위한 예비 블록이 되도록 재할당할 수 있다.
제 2 세트의 실시예에서, 비휘발성 메모리 시스템은 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로를 포함하며, 블록은 제 1 및 제 2 모드에서 동작하며, 제 1 동작 모드는 제 2 동작 모드보다 더 큰 내구성을 갖는다. 또한, 메모리 시스템은 메모리 회로와 상기 메모리 시스템이 부착된 호스트 사이의 데이터 전송과 상기 메모리 회로에 저장된 데이터의 관리를 제어하기 위해 상기 메모리 회로에 연결된 제어기 회로를 포함한다. 메모리는 제 1 모드에 따라 동작되는 제 1 섹션의 블록 및 제 2 모드에 따라 동작되는 제 2 섹션의 블록으로 분할된다. 제 2 모드에서 동작될 때 제 2 파티션으로부터 블록이 결함이 있는 것으로 판정한 것에 응하여, 제어기는 제 1 섹션에서 결함 블록을 대체하기 위해 사용될 수 있고 제 1 모드에 따라 동작되는 예비 블록이 되도록 상기 판정된 블록을 제 1 파티션에 재할당할 수 있다.
또 다른 면들에서, 비휘발성 메모리 시스템은 비휘발성 메모리 회로는 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로를 포함하며, 메모리 블록은 데이터 저장 부분 및 오버헤드 저장 부분을 포함하며, 오버헤드는 1 비트 시간 스탬프를 포함한다. 또한, 메모리 시스템은 메모리 회로와 상기 메모리 시스템이 부착된 호스트 사이의 데이터의 전송을 제어하고 메모리 회로에 저장된 데이터를 관리하기 위한, 상기 메모리 회로에 연결된 제어기 회로를 포함하며, 제어기는 각각의 할당되지 않은 블록에 대한 1비트 시간 스탬프를 포함하는 할당되지 않은 블록에 대한 제어 구조를 유지관리한다. 주어진 블록의 오버헤드 내 시간 스탬프의 비트의 값은 블록이 소거 동작이 행해지는 것에 응하여 토글된다. 할당되지 않은 블록에 대한 제어 구조 내 시간 스탬프의 값은 할당되지 않은 블록에 대한 제어 구조에 상기 대응하는 블록이 넣어질 때 상기 대응하는 블록의 오버헤드에 시간 스탬프의 값으로 설정된다. 초기화 프로세스 동안에, 제어기는 할당되지 않은 블록의 오버헤드 내 시간 스탬프의 값을 각각의 할당되지 않은 블록에 대한 제어 구조 내 상기 대응하는 시간 스탬프의 값과 비교를 수행한다.
추가의 면들은 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로, 및 메모리 회로와 상기 메모리 시스템이 부착된 호스트 사이의 데이터의 전송을 제어하고 메모리 회로에 저장된 데이터를 관리하기 위한, 메모리 회로에 연결된 제어기 회로를 구비하는 비휘발성 메모리 시스템을 제시한다. 복수의 블록은 논리 어드레스에 의해 확인된 호스트 공급 데이터를 저장하고 시스템 데이터 및 제 1 복수의 블록 중 불능이 된 블록을 보상하기 위한 하나 이상의 예비 블록을 저장하기 위해 사용되는 제 1 복수의 블록을 포함한다. 제어 회로는 호스트 공급 데이터를 포함하는 블록에 대한 엔트리와 예비 블록에 대한 엔트리를 유지하는 논리 대 물리 어드레스 변환 테이블을 유지한다. 테이블 엔트리는 호스트 공급 데이터를 포함하는 블록에 호스트가 데이터를 확인하는 대응하는 논리 어드레스를 할당하고 예비 블록에 호스트가 알고 있는 논리 어드레스 공간을 초과하는 어드레스를 할당한다.
본 발명의 다양한 면, 이점, 특징 및 실시예는 이들의 예에 대한 다음 설명에 포함되며, 이 설명은 동반된 도면들에 관려하여 취해질 것이다. 본 명세서에 참조되는 모든 특허, 특허 출원, 논문, 기타 공보, 문서 및 자료는 모든 목적을 위해 이들 전부가 본 명세서에 참조로 포함된다. 포함된 공보, 문서 또는 자료의 어느 것과 본원 사이에 용어의 정의 또는 사용에 있어 어떤 모순 또는 상충되는 범위에 있어선 본원의 정의 또는 사용이 우선할 것이다.
본 발명의 여러 면 및 특징들은 다음 도면을 검토함으로써 더 잘 이해될 수 있다.
본 발명은, 특히 큰 메모리 셀 블록을 갖는 메모리 시스템에서, 메모리의 블록 또는 다른 부분의 사용을 관리하는 방법을 제공하는 효과를 갖는다.
도 1은 본 발명을 구현하는데 적합한 메모리 시스템의 주 하드웨어 성분들을 개략적으로 도시한 도면.
도 2는 비휘발성 메모리 셀을 개략적으로 도시한 도면.
도 3은 플로팅 게이트가 언제든 선택적으로 저장하고 있을 수 있는 4개의 서로 다른 전하(Q1 ~ Q4)에 대한 소스-드레인 전류(ID)와 제어 게이트 전압(VCG) 사이의 관계를 도시한 도면.
도 4a는 NAND 스트링으로 구성된 메모리 셀 스트링을 개략적으로 도시한 도면.
도 4b는 도 4a에 도시된 것과 같은 NAND 스트링(50)으로 구성된 NAND 어레이(200) 메모리 셀의 예를 도시한 도면.
도 5는 예를 들어 NAND 구성으로 구성된, 병렬로 감지 또는 프로그램되는 한 페이지의 메모리 셀을 도시한 도면.
도 6(0) ~ 도 6(2)은 모집단의 4-상태 메모리 셀을 프로그래밍하는 예를 도시한 도면.
도 7a ~ 도 7e는 주어진 2-비트 코드로 인코딩된 4-상태 메모리의 프로그래밍 및 판독을 도시한 도면.
도 8은 제어기 내에 있는 소프트웨어 성분인 메모리 관리자에 의해 메모리가 관리되는 것을 도시한 도면.
도 9는 백-엔드 시스템의 소프트웨어 모듈을 도시한 도면.
도 10a(i) ~ 도 10a(iii)는 논리 그룹과 메타블록 사이에 매핑을 개략적으로 도시한 도면.
도 10b는 논리 그룹들과 메타블록 사이에 매핑을 개략적으로 도시한 도면.
도 11은 호스트의 논리 어드레스 LBA와, 이들이 논리 그룹으로 그룹화와, 물리 블록의 그룹(즉, 메타블록)에의 매핑 사이에 관계를 나타낸 조직적 시스템의 추상적 레벨을 도시한 도면.
도 12는 물리 및 논리 메모리 아키텍처를 도시한 도면.
도 13은 복수의 뱅크에 걸친 물리 및 논리 메모리 아키텍처를 도시한 도면.
도 14a는 복수의 ECC 페이지로 구성된 데이터 페이지를 도시한 도면.
도 14b는 바이너리 데이터만을 저장하며 서브-페이지 내에 있는 ECC 페이지에 대한 형식의 예를 도시한 도면.
도 15는 시스템의 서로 다른 레벨에서 일련의 캐시를 통해 플래시 메모리 장치와 함께 동작하는 호스트를 도시한 도면.
도 16은 각 뱅크 내 메타블록이 바이너리 캐시 부분과 정규 메타블록 부분으로 분할된 것을 도시한 도면.
도 17은 미디어 관리 모듈 내에서 프로세스를 도시한 도면.
도 18은 메모리 물리 메모리에 호스트 논리 데이터의 매핑을 도시한 도면.
도 19 바이너리 캐시를 통해 호스트로부터 주 메모리의 메타블록으로의 가능한 데이터 경로 및 프로세스를 도시한 도면.
도 20은 다중-레벨 파티션으로부터 바이너리 파티션의 예비 블록 섹션에 한 블록의 재배치를 도시한 도면.
도 21은 다중-레벨 파티션으로부터 예비 블록을 바이너리 파티션에 재배치하는 흐름도.
도 22는 예비 블록에 대한 1비트 시간 스탬프의 사용 및 저장을 도시한 도면.
도 23은 확장된 논리 공간에 대한 액세스 테이블.
메모리 시스템
도 1은 본 발명을 구현하는데 적합한 메모리 시스템의 주 하드웨어 성분들을 개략적으로 도시한 것이다. 메모리 시스템(90)은 전형적으로 호스트 인터페이스를 통해 호스트(80)와 동작한다. 메모리 시스템은 전형적으로 메모리 카드 또는 내장된 메모리 시스템 형태이다. 메모리 시스템(90)은 동작들이 제어기(100)에 의해 제어되는 메모리(200)를 포함한다. 메모리(200)는 하나 이상의 집적회로 칩 상에 분포된 비휘발성 메모리 셀의 하나 이상의 어레이로 구성된다. 제어기(100)는 인터페이스(110), 프로세서(120), 선택적 코프로세서(121), ROM(122)(판독 전용 메모리), RAM(130)(랜덤 액세스 메모리) 및 선택적 프로그램 가능 비휘발성 메모리(124)를 포함한다. 인터페이스(110)는 제어기를 호스트에 인터페이스시키는 한 성분과 메모리(200)에 인터페이스시키는 또 다른 성분을 구비한다. 비휘발성 ROM(122) 및/또는 선택적 비휘발성 메모리(124)에 저장된 펌웨어는 프로세서(120)가 제어기(100)의 기능들을 구현하기 위한 코드들을 제공한다. 오류정정코드들은 프로세서(120) 또는 선택적 코프로세서(121)에 의해 처리될 수 있다. 대안 실시예에서, 제어기(100)는 상태 머신(도시되지 않음)에 의해 구현된다. 또 다른 실시예에서, 제어기(100)는 호스트 내에 구현된다.
물리적 메모리 구조
도 2는 비휘발성 메모리 셀을 개략적으로 도시한 것이다. 메모리 셀(10)은 플로팅 게이트 또는 유전층과 같은 전하 저장유닛(20)을 갖는 전계 효과 트랜지스터에 의해 구현될 수 있다. 또한, 메모리 셀(10)은 소스(14), 드레인(16), 및 제어 게이트(30)를 포함한다.
최근에 사용되는 상업적으로 성공한 많은 비휘발성 고체 상태 메모리 장치가 있다. 이들 메모리 장치는 각 유형이 하나 이상의 전하저장 소자를 구비하는 것인 서로 다른 유형들의 메모리 셀을 채용할 수 있다.
전형적인 비휘발성 메모리 셀은 EEPROM 및 플래시 EEPROM을 포함한다. EEPROM 셀 및 이들을 제조하는 방법의 예가 미국 특허 5,595,924에 주어져 있다. EEPROM 셀, 메모리 시스템에서 이들의 사용 및 이들을 제조하는 방법의 예는 미국 특허 5,070,032, 5,095,344, 5,315,541, 5,343,063, 5,661,053, 5,313,421, 6,222,762에 주어져 있다. 특히, NAND 셀 구조를 가진 메모리 장치의 예는 미국 특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다. 또한, 유전 저장소자를 이용하는 메모리 장치의 예는, Eitan et al, "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545, 및 미국 특허 5,768,192 및 6,011,725에 기술되어 있다.
실제로, 셀의 메모리 상태는 일반적으로 기준 전압이 제어 게이트에 인가될 때 셀의 소스 전극 및 드레인 전극을 지나는 도통 전류를 감지함으로써 판독된다. 이에 따라, 셀의 플로팅 게이트 상에 각각의 주어진 전하에 대해서, 고정된 기준 제어 게이트 전압에 관한 대응하는 도통 전류가 검출될 수 있다. 유사하게, 플로팅 게이트에 프로그램될 수 있는 전하의 범위는 대응하는 임계 전압 윈도우 또는 대응하는 도통 전류 윈도우를 정의한다.
대안적으로, 분할된 현 윈도우 중에서 도통 전류를 검출하는 대신에, 테스트되는 주어진 메모리 상태에 대한 임계 전압을 제어 게이트에 설정하고 도통 전류가 임계 전류보다 낮은지 아니면 높은지를 검출하는 것이 가능하다. 일 구현예에서 임계 전류에 대한 도통 전류의 검출은 도통 전류가 비트 라인의 커패시턴스를 통해 방전하는 방전률을 조사함으로써 달성된다.
도 3은 언제든 선택적으로 플로팅 게이트가 저장하고 있을 수 있는 4개의 서로 다른 전하(Q1 ~ Q4)에 대해 소스-드레인 전류(ID)와 제어 게이트 전압(VCG) 사이에 관계를 도시한 것이다. VCG에 대한 ID의 4개의 실선 곡선은 4개의 가능한 메모리 상태에 대응하여 각각 메모리 셀의 플로팅 게이트 상에 프로그램될 수 있는 4개의 가능한 전하 레벨을 나타낸다. 예로서, 한 집단의 셀의 임계 전압 윈도우는 0.5V 내지 3.5V의 범위일 수 있다. 각각 하나는 소거된 상태이고 6개는 프로그램된 상태를 나타내는 7개의 가능한 메모리 상태 "0", "1", "2", "3", "4", "5", "6"은 임계 윈도우를 각각 0.5의 간격으로 5개의 영역들로 분할함으로써 구별될 수 있다. 예를 들어, 기준 전류로서 2㎂의 IREF가 도시된 바와 같이 사용된다면, Q1으로 프로그램된 셀은 VCG = 0.5V 및 1.0V에 의해 구별되는 임계 윈도우의 영역에서 곡선이 IREF와 교차하기 때문에 메모리 상태 "1"에 있는 것으로 간주될 수 있다. 유사하게, Q4는 메모리 상태 "5"에 있다.
전술한 바로부터 알 수 있듯이, 메모리 셀에 더 많은 상태들이 저장되도록 할수록, 임계 윈도우는 더욱 미세하게 분할된다. 예를 들어, 메모리 장치는 -1.5V 내지 5V 범위의 임계 전압을 갖는 메모리 셀을 가질 수 있다. 이것은 6.5V의 최대폭을 제공한다. 메모리 셀이 16개의 상태를 저장한다면, 각 상태는 임계 윈도우에서 20O mV 내지 30O mV를 점유할 수 있다. 이것은 요구되는 분해능을 달성할 수 있기 위해서 프로그래밍 및 판독동작들에 있어 더 높은 정밀도를 요구할 것이다.
도 4a는 NAND 스트링으로 구성된 일렬의 메모리 셀을 개략적으로 도시한 것이다. NAND 스트링(50)은 소스 및 드레인이 데이지 체인으로 연결된 직렬의 메모리 트랜지스터(M1, M2,...Mn)(예를 들면, n= 4, 8, 16 또는 그 이상)로 구성된다. 한 쌍의 선택 트랜지스터(S1, S2)는 각각 NAND 스트링의 소스 단자(54) 및 드레인 단자(56)를 통해 메모리 트랜지스터의 체인이 외부에 연결되는 것을 제어한다. 메모리 어레이에서, 소스 선택 트랜지스터(S1)가 턴 온 되었을 때, 소스 단자는 소스 라인에 결합된다(도 5b 참조). 마찬가지로, 드레인 선택 트랜지스터(S2)가 턴 온 되었을 때, NAND 스트링의 드레인 단자는 메모리 어레이의 비트 라인에 결합된다. 체인 내 각 메모리 트랜지스터(10)는 메모리 셀로서 작용한다. 이것은 의도하는 메모리 상태를 나타내기 위해서 주어진 전하량을 저장하기 위해 전하 저장 요소(20)를 갖는다. 각각의 메모리 트랜지스터의 제어 게이트(30)는 판독 및 기록 동작에 대해 제어할 수 있게 한다. 도 4b에서 알게 되는 바와 같이, 한 행의 NAND 스트링의 대응하는 메모리 트랜지스터의 제어 게이트(30)는 모두 동일 워드 라인에 연결된다. 마찬가지로, 선택 트랜지스터(S1, S2) 각각의 제어 게이트(32)는 각각 이의 소스 단자(54) 및 드레인 단자(56)를 통해 NAND 스트링에 대한 제어 액세스를 제공한다. 마찬가지로, 한 행의 NAND 스트링의 대응하는 선택 트랜지스터의 제어 게이트(32)는 모두 동일 선택 라인에 연결된다.
NAND 스트링 내의 어드레스된 메모리 트랜지스터(10)가 프로그래밍 동안에 판독되거나 검증될 때, 이의 제어 게이트(30)에 적합한 전압이 공급된다. 동시에, NAND 스트링(50) 내의 어드레스 지정이 되지 않은 나머지 메모리 트랜지스터는 이들의 제어 게이트에 충분한 전압을 인가함으로써 완전히 턴 온 된다. 이에 따라, 개개의 메모리 트랜지스터의 소스에서 NAND 스트링의 소스 단자(54)로 그리고 마찬가지로 개개의 메모리 트랜지스터의 드레인에 대해서는 셀의 드레인 단자(56)로의 도통 경로가 유효하게 만들어진다. 이러한 NAND 셀 구조를 갖는 메모리 장치는 미국 특허 5,570,315, 5,903,495 및 6,046,935에 기재되어 있다.
도 4b는 도 5a에 도시된 것과 같은 NAND 스트링들(50)로부터 구성되는, NAND 어레이(200)의 메모리 셀의 예를 도시한 것이다. NAND 스트링의 각 열을 따라, 비트 라인(36)과 같은 비트 라인이 각 NAND 스트링의 드레인 단자(56)에 결합된다. 각 한 뱅크의 NAND 스트링을 따라, 소스 라인(34)과 같은 소스 라인이 각 NAND 스트링의 소스 단자(54)에 결합된다. 한 뱅크의 NAND 스트링 내에 한 행의 메모리 셀을 따라 제어 게이트 또한, 워드 라인(42)과 같은 워드 라인에 연결된다. 한 뱅크의 NAND 스트링 내에 한 행의 선택 트랜지스터를 따라 제어 게이트들은 선택 라인(44)과 같은 선택 라인에 연결된다. 한 뱅크의 NAND 스트링 내에 전체 한 행의 메모리 셀은 한 뱅크의 NAND 스트링들의 워드 라인 및 선택 라인에 적합한 전압에 의해 어드레스될 수 있다. NAND 스트링 내에 한 메모리 트랜지스터가 판독되고 있을 때, 그 스트링 내에 나머지 메모리 트랜지스터들은 이들의 연관된 워드 라인을 통해 확실히 거의 턴 온 되지 않으므로 스트링을 통하는 전류는 근본적으로 판독되는 셀 내 저장된 전하의 레벨에 의존한다.
도 5는 병렬로 감지 또는 프로그램되는, 예를 들면 NAND 구성으로 구성된 한 페이지의 메모리 셀을 도시한 것이다. 도 5는 근본적으로 도 4b의 메모리 어레이(210) 내 한 뱅크의 NAND 스트링(50)을 도시한 것으로, 각 NAND 스트링의 상세는 도 4a에서처럼 명료하게 도시되었다. 페이지(60)와 같은 "페이지"는 병렬로 감지 또는 프로그램될 수 있게 한 일 그룹의 메모리 셀이다. 이것은 대응하는 한 페이지의 감지 증폭기(212)에 의해 달성된다. 감지된 결과는 대응하는 한 세트의 래치(214)에 래치된다. 각각의 감지 증폭기는 비트 라인을 통해 NAND 스트링에 결합될 수 있다. 페이지는 워드 라인(42)에 공통으로 연결된 페이지의 셀의 제어 게이트에 의해 활성화되고 각각의 셀은 비트 라인(36)을 통해 액세스될 수 있는 감지 증폭기에 의해 액세스될 수 있다. 예로서, 각각 한 페이지 셀(60)을 감지 또는 프로그래밍할 때, 감지 전압 또는 프로그래밍 전압은 각각 비트 라인 상에 적합한 전압과 함께 공통의 워드 라인(WL3)에 인가된다.
메모리의 물리적 구성
플래시 메모리와 전형적 메모리 사이에 한 중요한 차이는 셀이 소거된 상태로부터 프로그램되어야 한다는 것이다. 즉, 먼저 플로팅 게이트에 전하가 비어있어야 한다. 이어서 프로그래밍은 요망되는 량의 전하를 다시 플로팅 게이트에 더한다. 더 프로그램된 상태에서 덜 프로그램된 상태로 가기 위해 플로팅으로부터 전하의 일부를 제거하는 것은 지원하지 못한다. 이것은 업데이트 데이터가 현존한 데이터를 덮어쓸 수 없고 이전에 기록되지 않은 위치에 기록되어야 함을 의미한다.
또한, 소거는 플로팅 게이트에서 모든 전하를 비우는 것이며 일반적으로 상당한 시간이 걸린다. 이러한 이유로, 이것은 성가실 것이며 셀별로 또는 심지어 페이지별로 소거하기는 매우 느릴 것이다. 실제로, 메모리 셀 어레이는 메모리 셀의 더 많은 블록으로 분할된다. 플래시 EEPROM 시스템에 있어 일반적인 바와 같이, 블록은 소거 단위이다. 즉, 각각의 블록은 함께 소거되는 최소 수의 메모리 셀을 포함한다. 병렬로 소거될 블록 내 많은 수의 셀을 하나로 모으는 것이 소거 성능을 개선하겠지만, 큰 크기의 블록은 많은 수의 업데이트 및 폐용 데이터를 처리해야 하는 것을 수반한다. 블록이 소거되기 바로 전에, 블록 내 비-폐용 데이터를 구제하기 위해서 가비지 수거가 요구된다.
각각의 블록은 전형적으로 다수의 페이지로 분할된다. 페이지는 프로그래밍 또는 판독 단위이다. 일 실시예에서, 개개의 페이지는 세그먼트로 분할될 수 있고 세그먼트는 기본 프로그래밍 동작으로서 한 번에 기록되는 몇 개의 셀을 포함할 수 있다. 하나 이상의 페이지의 데이터는 전형적으로 한 행의 메모리 셀에 저장된다. 페이지는 하나 이상의 섹터를 저장할 수 있다. 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 복수의 어레이들에 걸쳐 분산되어 있는 복수의 블록 및 페이지는 메타블록 및 메타페이지로서 함께 동작될 수 있다. 이들이 복수의 칩에 걸쳐 분산된다면, 이들은 메가블록 및 메가페이지로서 함께 동작될 수 있다.
다중-레벨 셀(" MLC ") 메모리 분할의 예
메모리 셀 각각이 복수의 비트의 데이터를 저장하는 비휘발성 메모리가 도 3에 관련하여 이미 기술되었다. 한 특별한 예는 각각이 채널 영역과 제어 게이트 사이에 전하 저장층을 갖는 전계-효과 트랜지스터의 어레이로부터 형성된 메모리이다. 전하 저장층 또는 유닛은 한 범위의 전하를 저장할 수 있어, 각각의 전계-효과 트랜지스터에 대해 한 범위의 임계 전압들을 생성한다. 가능한 임계 전압의 범위는 임계 윈도우에 걸쳐 있다. 임계 윈도우가 임계 전압의 다수의 부-범위 또는 구역으로 분할될 때, 각각의 결정가능한 구역은 한 메모리 셀에 대해 서로 다른 메모리 상태를 나타내기 위해 사용된다. 다수의 메모리 상태들은 하나 이상의 바이너리 비트들에 의해 부호화될 수 있다. 예를 들어, 4개의 구역들로 분할된 메모리 셀은 2-비트 데이터로서 부호화될 수 있는 4 상태를 지원할 수 있다. 유사하게, 8개의 구역들로 분할된 메모리 셀은 3-비트 데이터로서 부호화될 수 있는 8 메모리 상태를 지원할 수 있다, 등등.
전( All )-비트, 풀- 시퀀스 MLC 프로그래밍
도 6(0) ~ 도 6(2)는 모집단의 4-상태 메모리 셀을 프로그래밍하는 예를 도시한 것이다. 도 6(0)는 각각 메모리 상태 "0", "1", "2" 및 "3"을 나타내는 임계 전압의 4개의 서로 구별되는 분포로 프로그램될 수 있는 메모리 셀의 집단을 도시한 것이다. 도 6(1)는 소거된 메모리에 대해 "소거된" 임계 전압의 초기 분포를 도시한 것이다. 도 6(2)는 많은 메모리 셀이 프로그램된 후에 메모리의 예를 도시한 것이다. 근본적으로, 셀은 초기에는 "소거된" 임계 전압을 가지며 프로그래밍은 이를 검증 레벨 vV1, vV2 및 vV3으로 구분된 3개의 구역 중 하나로 더 높은 값으로 이동할 것이다. 이렇게 하여, 각각의 메모리 셀은 3개의 프로그램된 상태 "1", "2", 및 "3" 중 하나로 프로그램되거나 "소거된" 상태로 프로그램되지 않은 채로 있을 수 있다. 메모리가 더욱 프로그래밍 됨에 따라, 도 6(1)에 도시된 바와 같은 "소거된" 상태의 초기 분포는 더 좁아지게 될 것이며 소거된 상태는 "0" 상태로 나타난다.
하위 비트 및 상위 비트를 갖는 2-비트 코드는 4개의 메모리 상태 각각을 나타내기 위해 사용될 수 있다. 예를 들어, "0", "1", "2" 및 "3" 상태는 각각 "11", "01", "00" 및 "10"로 나타낸다. 2-비트 데이터는 각각 3번의 서브-패스들에서 판독 구분 임계값(rV1, rV2, rV3)에 관하여 감지함으로써 2 비트가 함께 감지되는 "풀-시퀀스" 모드에서 감지함으로써 메모리로부터 판독될 수 있다.
비트별 MLC 프로그래밍 및 판독
도 7a ~ 도 7e는 주어진 2-비트 코드로 인코딩된 4-상태 메모리의 프로그래밍 및 판독을 도시한 것이다. 도 7a는 각각의 메모리 셀이 2-비트 코드를 사용하여 2 비트의 데이터를 저장할 때 4-상태 메모리 어레이의 임계 전압 분포를 도시한 것이다. 이러한 2-비트 코드는, "NON-VOLATILE MEMORY AND CONTROL WITH IMPROVED PARTIAL PAGE PROGRAM CAPABILITY" 명칭의 Li 등에 의한 2004년 4월 24일에 출원된 미국 특허 출원번호 10/830,824에 개시되어 있다.
도 7b는 2-비트 코드를 사용한 2-패스 프로그래밍 수법에서 하위 페이지 프로그래밍(하위 비트)를 도시한 것이다. 고장방지(fault-tolerant) LM 신(New) 코드는 근본적으로 임의의 상위 페이지 프로그래밍이 임의의 중간 상태를 거쳐 이동하는 것을 피하게 한다. 이에 따라, 제 1 패스 하위 페이지 프로그래밍은 "비프로그램된" 메모리 상태 "0"를 DA보단 크지만 DC 미만인 프로그램된 임계 전압을 가진 (x, 0)로 나타낸 "중간" 상태로 프로그래밍함으로써 나타나는 어떤 중간 상태(x, 0)로 논리 상태(상위 비트, 하위 비트) = (1, 1)가 이동되도록 한다.
도 7c는 2-비트 코드를 사용한 2-패스 프로그래밍 수법에서 상위 페이지 프로그래밍(상위 비트)을 도시한 것이다. 상위 페이지 비트를 "0"으로 프로그래밍하는 제 2 패스에서, 하위 페이지 비트가 "1"에 있다면, 논리 상태 (1, 1)은 "비프로그램된" 메모리 상태 "0"를 "1"로 프로그래밍함으로써 나타나는 (0, 1)로 이동한다. 하위 페이지 비트가 "0"에 있다면, 논리 상태 (0, 0)는 "중간" 상태에서 "3"으로 프로그래밍함으로써 얻어진다. 유사하게, 하위 페이지가 "0"으로 프로그램되는 동안에, 상위 페이지가 "1"에 남아 있다면, "중간" 상태에서 "중간" 상태를 "2"로 프로그래밍함으로써 나타나는 (1, 0)로의 이동을 필요로 할 것이다.
도 7d는 2-비트 코드로 인코딩된 4-상태 메모리의 하위 비트를 식별하기 위해 요구되는 판독동작을 도시한 것이다. LM 플래그가 판독될 수 있는지 판정하기 위해서 먼저 판독B 동작이 수행된다. 판독될 수 있다면, 상위 페이지는 프로그램되었으며 판독B 동작은 정확히 하위 페이지 데이터를 얻게 될 것이다. 반면, 상위 페이지가 아직 프로그램되지 않았다면 하위 페이지 데이터는 판독A 동작에 의해 판독될 것이다.
도 7e는 2-비트 코드로 인코딩된 4-상태 메모리의 상위 비트를 판별하기 위해 요구되는 판독 동작을 도시한 것이다. 도면으로부터 명백한 바와 같이, 상위 페이지 판독은 각각 구분 임계 전압 DA, DB 및 DC에 대한 판독 A, 판독 B 및 판독 C의 3-패스 판독을 요구할 것이다.
2-비트 메모리에 대한 비트별 수법에서, 메모리 셀의 물리 페이지는 2개의 논리 데이터 페이지로서 하위 비트에 대응하는 하위 데이터 페이지와 상위 비트에 대응하는 상위 데이터 페이지를 저장할 것이다.
바이너리 및 MLC 메모리 분할
도 6 및 도 7은 2-비트("D2"라고도 함) 메모리의 예들을 도시한 것이다. 알 수 있는 바와 같이, D2 메모리는 4개의 영역들로 분할되어 4 상태를 지정하는 임계 범위 또는 윈도우를 갖는다. 유사하게, D3에서, 각각의 셀은 3 비트(하위, 중위 및 상위 비트)를 저장하며 8개의 영역이 있다. D4에는 4 비트 및 16 영역이 있다, 등등. 메모리의 유한한 임계 윈도우가 더 많은 영역으로 분할됨에 따라, 프로그래밍 및 판독을 위한 분해능은 반드시 더 미세해질 것이다. 메모리 셀이 더 많은 비트들을 저장하게 구성됨에 따라 2가지 문제들이 발생한다.
먼저, 프로그래밍 또는 판독은 셀의 임계값이 더 정확하게 프로그램 또는 판독되어야 하기 때문에 더 느려지게 될 것이다. 사실 실제로 감지 시간(프로그래밍 판독에 필요한)은 분할 레벨들의 수의 제곱에 따라 증가하는 경향이 있다.
두 번째로, 플래시 메모리는 사용에 의해 노후됨에 따라 내구성 문제를 갖는다. 셀이 반복하여 프로그램되고 소거될 때, 전하들은 유전체를 가로지른 터널링에 의해서 플로팅 게이트(20)(도 2 참조) 안팎으로 오가게 된다. 일부 전하가 유전체 내에 트랩될 때마다 셀의 임계값을 수정할 것이다. 사실 사용함에 따라 임계 윈도우는 점차적으로 협소해질 것이다. 이에 따라, MLC 메모리는 일반적으로 용량과 성능과 신뢰성 사이에 절충하여 설계된다.
반대로, 바이너리 메모리에 있어서 메모리의 임계 윈도우는 단지 두 개의 영역으로 분할됨을 알 것이다. 이것은 최대 마진의 오류를 허용할 것이다. 이에 따라, 저장 용량이 감소되는 반면 바이너리 분할은 최대 성능 및 신뢰성을 제공할 것이다.
도 7과 관련하여 기술된 복수-패스, 비트별 프로그래밍 및 판독 기술은 MLC와 바이너리 분할 사이에 원만한 이행을 제공한다. 이 경우에, 메모리가 단지 하위 비트만으로 프로그램된다면, 이것은 사실상 바이너리 분할 메모리이다. 이 방식이 단일-레벨 셀("SLC") 메모리의 경우와 같이 임계 윈도우의 범위를 최대로 최적화하지 않지만, MLC 메모리의 하위 비트의 동작에서와 동일한 구분 또는 감지 레벨을 사용하는 이점이 있다. 후술하는 바와 같이, 이 방식은 MLC 메모리를 바이너리 메모리로서 또는 바이너리 메모리를 MLC 메모리로 사용하는데 "전용"될 수 있게 한다. MLC 메모리는 사용에 있어 더 엄격한 명세를 갖는 경향이 있음을 알아야 한다.
바이너리 메모리 및 부분 페이지 프로그래밍
한 메모리 셀의 전하 저장 소자에 프로그램되는 전하는 이웃 메모리 셀의 전계를 교란시키는 전계를 야기한다. 이것은 근본적으로 전하 저장 소자를 갖는 전계 효과 트랜지스터인 이웃 메모리 셀의 특징에 영향을 미칠 것이다. 특히, 감지될 때 메모리 셀은 덜 교란될 때보다 더 높은 임계 레벨(또는 더 프로그램된)을 갖는 것처럼 보이게 될 것이다.
일반적으로, 메모리 셀이 제 1 전계 환경 하에서 프로그램-검증되고 나중에 이웃 셀이 이어서 다른 전하들로 프로그램됨에 기인하여 다른 전계 환경 하에서 다시 판독된다면, 판독 정확성은 "유핀 효과"이라하는 것에 의해 이웃 플로팅 게이트 사이에 결합에 기인하여 영향을 받을 수 있다. 반도체 메모리들에서 집적도가 더 높아짐에 따라, 메모리 셀 사이에 저장된 전하들에 기인한 전계의 교란(유핀 효과)은 셀간 간격이 줄어듦에 따라 현저히 증가하게 된다.
위에 도 7에 관련하여 기술된 비트별 프로그래밍 기술은 동일 워드 라인을 따라 셀로부터 프로그램 교란을 최소화하게 설계된다. 도 7b로부터 알 수 있는 바와 같이, 2개의 프로그래밍 패스 중 첫 번째 프로그래밍 패스에서, 셀의 임계값은 기껏해야 임계 윈도우 중간까지 이동된다. 마지막 패스는 제 1 패스의 효과를 앞지른다. 마지막 패스에서, 임계값은 거리의 1/4만 이동된다. 즉, D2에 있어서, 이웃 셀들간 전하 차이는 이의 최대의 1/4로 제한된다. D3에 있어서, 3번의 패스를 갖고, 마지막 패스는 전하 차이를 최대의 1/8로 제한할 것이다.
그러나, 비트별 복수-패스 프로그래밍 기술은 부분-페이지 프로그램에 의해 해결될 것이다. 페이지는 단위로서 함께 프로그램되는, 전형적으로 행 또는 워드 라인을 따라 있는 일 그룹의 메모리 셀이다. 복수의 프로그래밍 패스에 걸쳐 개별적으로 페이지의 비중첩 부분을 프로그램하는 것이 가능하다. 그러나, 페이지의 모든 셀이 마지막 패스에서 함께 프로그램되지 않는 것에 기인하여, 페이지가 프로그램된 후에 셀 사이에 프로그램된 전하들에 큰 차이를 야기할 수도 있을 것이다. 이에 따라, 부분-페이지 프로그래밍은 더 프로그램 교란을 초래할 것이며 감지 정확성에 대한 더 큰 마진을 요구할 것이다.
메모리가 바이너리 메모리로서 구성된 경우, 동작의 마진은 MLC보다 넓다. 바람직한 실시예에서, 바이너리 메모리는 페이지의 비중첩 부분들이 페이지에 대한 복수의 프로그래밍 패스 중 한 패스에서 개별적으로 프로그램될 수 있는 부분-페이지 프로그래밍을 지원하게 구성된다. 프로그래밍 및 판독 성능은 큰 크기의 페이지에 대해 동작함으로써 개선될 수 있다. 그러나, 페이지 크기가 호스트의 기록 단위(전형적으로 512-바이트 섹터)보다 훨씬 클 때, 이의 사용은 비효율적이 될 것이다. 페이지보다 더 미세한 입도로 동작하는 것은 이러한 페이지를 더욱 효율적으로 사용할 수 있게 한다.
주어진 예는 MLC에 대한 바이너리 사이에 예이다. 일반적으로 제 1 레벨 수를 가진 제 1 메모리와 제 1 메모리보다 많은 제 2 레벨 수를 가진 제 2 메모리 사이에 같은 원리가 적용됨을 알 것이다.
논리 및 물리 블록 구조
도 8은 제어기 내에 있는 소프트웨어 성분인 메모리 관리자에 의해 메모리가 관리되는 것을 도시한 것이다. 메모리(200)는 다수 블록으로 구성되며, 셀의 각각의 블록은 최소 소거 단위이다. 구현에 따라, 메모리 시스템은 블록을 "메타블록" 및 "메가블록"으로 집성함으로써 형성된 더 큰 소거 단위들로 동작할 수 있다. 편리상 설명에서는 일부 시스템들이 메타블록을 집성함으로써 형성된 "메가블록"과 같은 훨씬 더 큰 소거 단위로 동작함이 이해될지라도 메타블록으로서 소거 단위를 언급할 것이다.
호스트(80)는 파일 시스템 또는 운영 시스템 하에 애플리케이션이 실행될 때 메모리(200)에 액세스한다. 전형적으로, 호스트 시스템은 예를 들면 각각의 섹터가 512 바이트의 데이터를 포함할 수 있는 다수의 논리 섹터 단위들로 데이터에 어드레스한다. 또한, 각각의 클러스터는 하나 이상의 논리 섹터들로 구성된 것으로 다수의 논리 클러스터 단위로 호스트가 메모리 시스템에 기록 또는 판독하는 것이 일반적이다. 일부 호스트 시스템에서, 선택적 호스트-측 메모리 관리자는 호스트에서 저 레벨 메모리 관리를 수행하기 위해 존재할 수 있다. 판독 또는 기록 동작 동안 대부분의 경우에 호스트(80)는 필수적으로 인접 어드레스를 가진 한 스트링의 논리 섹터들의 데이터을 포함하는 세그먼트를 판독 또는 기록하라는 명령을 메모리 시스템(90)에 발행한다.
메모리-측 메모리 관리자(300)는 플래시 메모리(200)의 메타블록 중에 호스트 논리 섹터들의 데이터의 저장 및 인출을 관리하기 위해 메모리 시스템(90)의 제어기(100) 내에 구현된다. 메모리 관리자는 프론트-엔드 시스템(310) 및 백-엔드 시스템(320)을 포함한다. 프론트-엔드 시스템(310)는 호스트 인터페이스(312)를 포함한다. 백-엔드 시스템(320)은 메타블록의 소거 동작, 판독 동작 및기록 동작을 관리하기 위한 다수의 소프트웨어 모듈들을 포함한다. 또한, 메모리 관리자는 플래시 메모리(200)와 제어기 RAM(130) 중에 시스템 제어 데이터 및 이의 동작들에 연관된 디렉토리 데이터를 유지한다.
도 9는 백-엔드 시스템의 소프트웨어 모듈들을 도시한 것이다. 백-엔드 시스템은 주로 2개의 기능 모듈들로서 미디어 관리층(330)과, 데이터흐름 및 시퀀싱 층(340)을 포함한다.
미디어 관리층(330)은 플래시 메모리 메타-블록 구조 내에 논리 데이터 저장의 구성을 수행한다. 더 상세한 것은 "미디어 관리층" 단락에서 나중에 제공될 것이다.
데이터흐름 및 시퀀싱 층(340)은 데이터의 섹터를 순서화하고 프론트-엔드 시스템과 플래시 메모리 사이에 전송한다. 이 층은 명령 시퀀서(342), 저-레벨 시퀀서(344) 및 플래시 제어층(346)을 포함한다. 더 상세한 것은 "저 레벨 시스템 명세" 단락에서 나중에 제공될 것이다.
메모리 관리자(300)는 바람직하게는 제어기(100) 내에 구현된다. 이것은 호스트로부터 수신된 논리 어드레스를 메모리 어레이 내에 데이터가 실제로 저장되는 물리 어드레스로 전환하며, 이들 어드레스 전환을 관리한다.
도 10a(i) ~ 도 10a(iii)는 논리 그룹과 메타블록 사이에 매핑을 개략적으로 도시한 것이다. 물리 메모리의 메타블록은 논리 그룹의 N 논리 섹터들의 데이터를 저장하기 위한 N 물리 섹터를 갖는다. 도 10a(i)는 논리 그룹 LGi으로부터의 데이터를 도시한 것으로, 논리 섹터들은 논리 순서 0, 1,..., N-1로 인접하여 있다. 도 10a(ii)는 같은 데이터가 같은 논리 순서로 메타블록으로 저장된 것을 도시한 것이다. 이러한 식으로 저장될 때 메타블록은 "순차적"이다라고 한다. 일반적으로, 메타블록은 다른 순서로 저장된 데이터를 가질 수 있는데, 이 경우 메타블록은 "비순차적" 또는 "무질서"라고 한다.
논리 그룹의 최하위 어드레스와 이것에 매핑된 메타블록의 최하위 어드레스 사이에 오프셋이 있을 수 있다. 이 경우, 논리 섹터 어드레스는 메타블록 내에 논리 그룹의 맨 아래에서 다시 맨 위로의 루프로서 되돌아간다. 예를 들면, 도 10a(iii)에서, 메타블록은 논리 섹터 k의 데이터부터 시작하여 자신의 첫번째 위치에 저장한다. 마지막 논리 섹터 N-1에 도달되었을 때, 섹터 0으로 되돌아가고 마지막으로 논리 섹터 k-1에 연관된 데이터를 자신의 마지막 물리 섹터에 저장한다. 바람직한 실시예에서, 이를테면 메타블록의 첫번째 물리 섹터에 저장된 데이터의 시작 논리 섹터 어드레스를 확인하는 것과 같이, 임의의 오프셋을 확인하기 위해서 페이지 태그가 사용된다. 2개의 블록은 이들의 논리 섹터들이 페이지 태그만큼만 다를 때 유사한 순서로 이들이 저장되도록 할 것으로 여겨질 것이다.
도 10b는 논리 그룹들과 메타블록 사이에 매핑을 개략적으로 도시한 것이다. 각각의 논리 그룹(380)은 데이터가 현재 업데이트되고 있는 소수의 논리 그룹들을 제외하고, 고유 메타블록(370)에 매핑된다. 논리 그룹이 업데이트된 후에, 이것은 다른 메타블록에 매핑될 수 있다. 매핑 정보는 한 세트의 물리 디렉토리에 유지되는데, 이것은 나중에 더 상세히 기술될 것이다.
시스템 추상 모델
도 11은 호스트의 논리 어드레스 LBA와, 이들이 논리 그룹들로 그룹화되는 것과, 그룹화된 물리 블록(즉, 메타블록)에의 매핑 사이에 관계를 나타낸 조직적 시스템의 추상 레벨을 도시한 것이다. 메모리 관리자(300)(도 8 참조)의 프론트-엔드(310)와 백-엔드(320) 사이에 분산된 3개의 추상 레벨이 있다.
프론트-엔드(310)에서, 논리 레벨 구성에서, 파티션 관리자는 호스트로부터 논리 단위들(LBA)을 논리 그룹들로 그룹화한다. 각각의 논리 그룹(380)은 메모리의 메타블록(370)에 저장될 것이다.
백-엔드(320)에서, 물리 레벨에서, 메모리는 물리 블록으로 구성되는데, 각각의 물리 블록(360)은 최소 물리 소거 단위이다. 그러나, 성능을 개선하기 위해서, 집성된 블록들(메타블록)이 함께 소거되도록 논리적으로 그룹화되는 추상 레벨에서 더 큰 병행도가 달성된다.
도 12는 물리 및 논리 메모리 아키텍처를 도시한 것이다. 물리적으로, 메모리는 물리적으로 최소 소거 단위인 블록으로 구성된다. 전형적으로, 메모리 플레인은 한 페이지의 감지 회로들에 의해 관할되는 메모리 셀 어레이이다. 플레인은 복수의 블록을 포함한다. 각각의 블록(360)은 복수의 물리 페이지를 포함한다. 바이너리 메모리에 있어서, 각각의 물리 페이지(350)는 한 데이터 페이지를 저장한다. MLC에 있어서, 각각의 물리 페이지는 하나 이상의 데이터 페이지를 저장한다. 물리 페이지(350)는 서브-페이지로 더욱 분할된다. 바이너리 메모리에 있어서, 각각의 서브-페이지(352)는 하나의 데이터 ECC 페이지를 저장한다. 메타블록(370)은 메모리 관리자가 한 단위로서 소거하기 위해 복수의 플레인들에 걸쳐 소거 블록을 논리적으로 그룹화한 것이다. 유사하게, 메타페이지(372)는 메모리 관리자가 한 단위로서 프로그램 또는 판독하기 위해 복수의 플레인들에 걸쳐 페이지를 논리적으로 그룹화한 것이다. 논리 그룹은 메타블록에 저장할 호스트 논리 단위들을 그룹화한 것이다.
도 13은 복수의 뱅크들에 걸친 물리 및 논리 메모리 아키텍처를 도시한 것이다. 다양한 실체들이 뱅크들에 걸쳐 논리적으로 그룹화될 때 훨씬 더 많은 병행도가 달성된다. 집성된 실체 표기에 있어 앞에 "메가"를 넣어 각각을 표기하였다. 특히, 각종의 실체가 이하 정의된다.
도 14a는 복수의 ECC 페이지로 구성된 데이터 페이지를 도시한 것이다. 예를 들면, 데이터 페이지는 2, 4, 또는 8 ECC 페이지로 구성될 수 있다. 데이터 페이지는 물리 페이지(350) 내에 있다(도 13 참조). 유사하게, ECC 페이지는 서브-페이지(352)에 있다.
도 14b는 바이너리 데이터만을 저장하며 서브-페이지 내에 있는 ECC 페이지에 대한 형식의 예를 도시한 것이다. 3개의 필드들로서 14 바이트의 헤더와, 4개의 512-바이트 섹터들의 데이터 섹션과, N 바이트의 ECC + 예비 부분이 있다.
다음은 추상 모델에 대한 용어이다.
물리 NAND 층 용어
물리 페이지: 물리 블록에 동시에 판독 또는 프로그램될 수 있는 최대 한 세트의 NAND 메모리 셀. 물리 페이지는 하나(SLC/바이너리/D1) 또는 그 이상(MLC/D2, D3, D4))의 데이터 페이지를 저장할 수 있다.
데이터 페이지: 물리 블록에 동시에 판독 및 프로그램될 수 있는 최소량의 데이터. MLC 데이터 페이지는 프로그래밍 모드 및 순서에 따라 서로 다르다. D2에는 하위 및 상위 페이지들에 있고, D3에는 하위, 중위 및 상위 페이지들이 있다.
워드-라인(워드 라인): 물리 블록에 걸쳐 있는 한 행의 NAND 메모리 셀, 이 물리 블록은 보통 한 물리 페이지들(ABL 메모리들에서) 또는 2개의(우수 및 기수 페이지들이라 함) 물리 페이지로 구성된다.
물리 블록: 최소 물리 소거 단위. 블록은 고정된 개수의 물리 페이지 및 워드 라인으로 구성된다.
플레인: 블록이 플레인 사이에 고르게 분포된 다이 내 일부 물리 블록. 다이 내 각 플레인 상에 단일 블록에 대해 병렬 동작(기록, 판독, 또는 소거)이 가능하다.
다이: 다이는 하나 이상의 플레인들의 물리 블록 어레이이다. 각각의 다이는 다른 다이들에 관하여 비동기적 동작들을 지원한다.
칩: 칩은 하나 이상의 다이들이며, 칩-선택 라인이 칩을 정의한다.
복수-칩 패키지: 복수의 칩 선택 라인들을 가진 물리 패키지를 복수-칩 패키지라 한다.
채널: 칩 또는 일 그룹의 칩들에 액세스하기 위한 물리 경로. 카드 상에 채널들은 상호 배타적이다. 채널은 하나 이상의 메모리 뱅크들에 액세스할 수 있다.
추상 레벨 용어
데이터 페이지: 추상 모델 데이터 페이지는 물리 NAND 층 데이터 페이지에 매핑한다. 페이지는 메모리 기술 및 신뢰성 요건들에 따라 어떤 회수까지 프로그램될 수 있다. 전형적으로, 데이터 페이지는 MLC 모드에선 1회만 프로그램될 수 있고 바이너리 또는 하위-페이지-단독 모드들에선 4회만 프로그램될 수 있다.
섹터: 섹터는 논리 그룹 내 논리 그룹 번호 및 오프셋에 의해 식별되는 512 바이트의 호스트 데이터이다.
ECC 페이지: ECC 페이지 헤더에 의한 메모리 관리를 위한 이론적으로 최소 판독 및 프로그램 데이터 단위이며, 모든 데이터(BE5에(204)8 바이트, 또는 4 섹터 분량의 데이터)는 단일 ECC에 의해 보호되고, 모드 함께 저장된다. 한 데이터 페이지는 데이터 페이지 크기에 따라, 2, 4 또는 8 ECC 페이지를 매핑할 수 있다.
메타-페이지: 뱅크 내 최대 판독 및 프로그램 단위. 메타-페이지는 동시에 판독 및 프로그램될 수 있는 메타-블록에 걸쳐 있는 모든 데이터 페이지를 포함한다. 메타-페이지는 하나 이상의 다이-페이지로 구성된다.
다이-페이지: 다이 내 최대 판독 및 프로그램 단위. 다이-페이지는 다이에 걸쳐 있는 모든 데이터 페이지로 구성되며, 이들은 동시에 판독 및 프로그램될 수 있다. 다이- 페이지 하나 이상의 데이터 페이지로 구성된다.
메가-페이지: 복수-뱅크 제품 내 최대 판독 및 프로그램 단위. 메가-페이지는 동시에 판독 및 프로그램될 수 있는 메가-블록에 걸쳐 있는 모든 데이터 페이지로 구성된다. 메가-페이지는 하나 이상의 메타-페이지로 구성된다.
메타-블록: 메모리 관리 시스템에 의해 사용되는 최소 소거 가능 단위는 한 세트의 물리 블록을 포함한다. 일반적으로, 모든 메타-블록은 병렬로 연결되며 이들이 독립적으로 그리고 동시에 액세스될 수 있음을 의미한다. 메타-블록을 형성하는 물리 블록은 단일 칩 내에 플레인들에, 또는 복수의 칩들에 걸쳐 분포되어 있는 플레인 내 위치될 수 있고, 동일 채널로부터 액세스될 수 있다. 메타-블록이 일 그룹의 복수의 물리 블록들일 때, 이들은 칩, 다이, 플레인 및 페이지에대한 인터리빙 규칙들에 따라 구성되어야 하며, 메타-블록의 각각의 물리 블록은 동일 메타-블록 내 다른 블록에 병렬로 액세스될 수 있다.
뱅크: 메모리 관리 시스템에 의해 독립적으로 관리되는 메타-블록의 어레이. 뱅크는 한 메타-블록, 한 메타-페이지 크기이다. 플래시 기반 제품은 하나 이상의 뱅크들로 구성될 수 있다.
논리 레벨 용어
논리 섹터: 논리 섹터는 논리 파티션 내 LBA에 의해 식별되는 512 바이트의 호스트 데이터이다. 모든 논리 섹터는 추상 모델 섹터에 매핑되며, 것은 논리 그룹 내 논리 그룹 번호 및 오프셋에 의해 식별된다.
LBA: LBA 또는 논리 블록 어드레스는 논리적으로 인접한 파티션 내 논리 섹터에 대한 식별자이다.
논리 그룹: 한 메타-블록에 매핑되는 일 그룹의 인접한 논리 섹터. 논리 그룹의 용량은 메타-블록의 유형(D1, D2, D3, 또는 D4)에 따른다. 논리 그룹은 동일 용량의 일 그룹의 논리 섹터들에 대응하며, 이것은 파티션의 LBA 공간에서 논리적으로 인접할 수도 있고 인접하지 않을 수도 있다.
논리 메가-그룹: 복수의 메타-블록에 매핑되는 일 그룹의 인접한 논리 섹터. 논리 메가-그룹의 용량은 메타-블록의 유형(D1, D2, D3, 또는 D4)에 따른다. 논리 메타-그룹은 동일 용량의 일 그룹의 논리 섹터들에 대응하며, 이것은 파티션의 LBA 공간에서 논리적으로 인접할 수도 있고 인접하지 않을 수도 있다. 논리 메가-그룹은 서로 다른 뱅크들로부터의 하나 이상의 논리 그룹들로 구성된다.
주 및 바이너리 캐시 부분으로 분할된 메모리
발명의 일면에 따라서, 각각의 블록 내 셀이 함께 소거되며 복수의 블록으로 구성되는 메모리 셀 어레이를 구비하는 플래시 메모리에서, 플래시 메모리는 적어도 2개의 부분들로 분할된다. 제 1 부분은 주로 사용자 데이터를 저장하기 위한 주 메모리를 형성한다. 주 메모리 내 개개의 메모리 셀은 각 셀에 하나 이상의 비트의 데이터를 저장하게 구성된다. 제 2 부분은 주 메모리에 기록될 데이터를 위한 캐시를 형성한다. 바이너리 캐시에서 개개의 메모리 셀은 각 셀에 한 비트의 데이터를 저장하게 구성된다.
본 시스템의 바이너리 캐시는 다음의 특징 및 이점들을 갖는다: a) 이것은 장치에 버스트 기록 속도를 증가시킨다. b) 이것은 페이지 또는 메타-페이지에 정렬되지 않은 데이터가 효율적으로 기록될 수 있게 한다. c) 이것은 데이터가 메타-블록에 보관된 후에 메타-블록의 가지비 수거 동안에 재배치되어야 하는 데이터량을 최소화하기 위해, 논리 그룹용 데이터를 모아놓는다. d) 이것은 빈번히 반복되는 기록들이 일어나는 논리 그룹용 데이터를 메타-블록에 기록하는 것을 피하기 위해서 이 데이터를 저장한다. e) 이것은 호스트 데이터를 버퍼해 두어, 메타-블록의 가지비 수거를 복수의 호스트 비지 기간 중에 분산될 수 있게 한다.
종래 기술은 캐시를 사용하여 동작하며 MLC 모드와 SLC 모드가 혼재되어 동작하며 SLC 메모리를 전용 캐시로서 동작하게 하여 동작하는 플래시 메모리 시스템을 개시하였다. 그러나, 특징 a)와 아마도 특징 d)는 제외하고, 본 발명의 다른 특징들은 종래 기술에선 발견되지 않는다. 다음 공개문헌들은 이들 종래 기술의 예이다.
기록 캐시에서 RAM을 사용하는 것은 Lee 등의 미국 특허 5,930,167에 개시되었다.
메모리를 한 부분은 바이너리에서 동작하고 다른 한 부분은 MLC에서 동작하는 2개의 부분들로 분할하는 것은 Chen의 미국 특허 6,456,528에 개시되어 있고, 이의 전체 개시된 바는 참조로서 여기에 포함시킨다.
미국 특허공개번호: Lasser의 2007년 3월 15일자 공개번호 US-2007- 0061502-A1 및 2007년 12월 6일자 공개번호 US-2007-0283081-A1은 둘 다 MLC 모드 및 SLC 모드를 혼재하여 동작하는 플래시 메모리를 개시한다. 메모리의 특정 부분은 항시 SLC 모드에서 동작하고 전용 캐시로 사용되도록 할당된다.
도 15는 시스템의 서로 다른 레벨에서 일련의 캐시를 통해 플래시 메모리 장치와 함께 동작하는 호스트를 도시한 것이다. 캐시는 시스템의 고속 성분과 저속 성분 사이에 전달되는 데이터를 일시적으로 저장하기 위한 고속 저장 장치이다. 전형적으로 고속 휘발성 RAM은 메모리 제어기의 호스트 캐시(82) 및/또는 제어기 캐시(102)에서와 같이 캐시로서 채용된다. 비휘발성 메모리(200)는 2 부분들로 분할된다. 제 1 부분(202)은 MLC 또는 바이너리 모드에서 사용자 데이터를 위한 주 메모리로서 동작하는 메모리 셀을 갖는다. 제 2 부분(204)은 바이너리 모드.에서 캐시로서 동작하는 메모리 셀을 갖는다. 이에 따라 메모리(200)는 주 메모리(202) 및 바이너리 캐시로 분할된다.
도 16은 각 뱅크 내 메타블록이 바이너리 캐시 부분과 정규 메타블록 부분으로 분할된 것을 도시한 것이다. 후에 더 상세히 기술되는 바와 같이, 바이너리 캐시 부분은 바이너리 데이터를 저장하는 메모리를 가지며, 정규 메타블록 부분은 셀당 한 비트 이상의 데이터를 저장할 수 있는 MLC 메모리로서 구성된다. 또한, 도 16은 4-뱅크 메모리에서 뱅크들에 호스트 LBA 어드레스 공간 내 어드레스들의 매핑을 도시한 것이다. 메타-페이지 N 및 N+1은 완전히 서로 무관하게 4개의 뱅크에 걸쳐 인터리브된다. 위에 기술된 바와 같이, 각 뱅크 내 메모리 어레이는 논리 그룹이 매핑되는 메타블록으로 구성된다.
호스트 LBA 어드레스 공간은 메가-페이지 내에 순차적 LBA 어드레스를 포함하며, 메가-페이지는 프로그래밍 병행성 단위이며, 크기는 MLC 플래시에 요구되는 기록 속도에 의해 결정된다.
단일 뱅크를 위한 LBA 어드레스 공간은 메타-페이지 내에 순차적 LBA 어드레스 및 메타-블록 내에 순차적 메타-페이지를 포함한다. 4-뱅크 메모리에 있어서, 호스트 LBA 어드레스 공간 내에 매 4번째 메타-페이지는 한 뱅크를 위한 순차적 LBA 어드레스 공간 내 메타-페이지이며 뱅크 논리 공간을 4배 더 작아지게 한다. 뱅크를 위한 LBA 어드레스는 2개의 관계된 비트들이 생략된 호스트 LBA 어드레스를 포함한다.
미디어 관리층
미디어 관리층(MML)(330)(도 9 참조)은 백-엔드 시스템(320)이 생성하여 유지관리하는 플래시 메모리 메타-블록 구조 내에 논리 데이터 저장의 구성을 관리하기 위한 백-엔드 시스템(320)의 모듈이다. 특정한 특징들은 부분적 메타-페이지 프로그래밍의 처리, 비-순차적 및 반복적 업데이트, 논리 대 물리 어드레스 전환과 자유 블록 관리를 위해 사용되는 테이브 및 리스트들의 처리, 및 핫 카운트들에 기초한 마모 평준화를 포함한다.
도 17은 미디어 관리 모듈 내에 프로세스를 도시한 것이다. 초기화 후에, 호스트 데이터 액세스 관리는 데이터흐름 및 시퀀싱 모듈(340)(도 9 참조)과의 데이터 교환을 관리한다. 호스트 데이터가 수신되었을 때, 호스트 데이터를 직접 정규 MLC 부분에 보내거나 진행중에 메모리의 바이너리 캐시("BC") 부분에 보낸다. 정규 MLC 부분에 보내진다면, 데이터는 순차적 업데이트 블록 관리 모듈에 의해 관리될 것이다. 순차적 업데이트 블록 관리 모듈은 한 클러스터의 업데이트 블록 중 하나에 또는 새로이 할당된 업데이트 블록에 순차적으로 폐이지씩으로 데이터가 기록되도록 할 것이다. 바이너리 캐시("BC") 부분에 보내진다면, 데이터는 BC 관리 모듈에 의해 관리될 것이다. BC 관리 모듈은 ECC 페이지들의 단위들로 데이터가 하나 이상의 서브-페이지들에 기록되도록 할 것이다. 어느 경우이든, 새로운 블록은 할당될 필요가 있을 수 있고 또는 폐용 블록은 소거 (자유) 메타블록 관리 모듈와 공조하여 리사이클될 필요가 있을 수 있다. 다양한 블록 조작 및 블록에 데이터 저장 동안 한 세트의 제어 데이터가 생성되고 유지관리된다. 제어 데이터는 BC 인덱스, 소거된 메타블록 리스트, 그룹 어드레스 테이블("GAT")을 포함한다. 제어 데이터는 제어 데이터 업데이트 모듈 및 메타블록 링크 모듈뿐만 아니라 앞서 기술된 모듈들에 의해 관리된다. 논리 대 물리 어드레스들간 전환은 그룹 어드레스 테이블을 사용하여 동작하는 논리 대 물리 어드레스 전환 모듈에 의해 처리된다.
호스트 데이터 저장
도 18은 메모리 물리 메모리에 호스트 논리 데이터의 매핑을 도시한 것이다. 모든 파티션 내 모든 LBA는 논리 그룹, 즉 바이너리 또는 MLC 논리 그룹에 매핑되며, MLC 논리 그룹은 완전 MLC 모드(D2 또는 D3) 또는 하위-페이지 단독 모드에서 저장되는 것으로서 지정될 수 있다.
모든 논리 그룹은 온전한 블록에 매핑된다. 비-순차적으로 업데이트되었던 이들 논리 그룹은 하나 이상의 업데이트 블록에 저장된 일부 데이터를 가질 수 있다. 또한, 바이너리 캐시 블록은 이들이 업데이트 블록을 갖는지에 관계없이, 논리 그룹을 위한 프레그먼트를 포함할 수 있다.
캐시 또는 주 메모리에 호스트 기록
도 19는 바이너리 캐시를 통해 호스트로부터 주 메모리의 메타블록으로의 가능한 데이터 경로 및 프로세스를 도시한 것이다. 호스트 데이터가 주 메모리(202) 내 메타블록들용으로 선발된다. 조건에 따라, 데이터는 주 메모리(202)에 직접 기록되거나 바이너리 캐시(204)를 통해 간접적으로 기록된다. 다음은 도면에 도시된 다양한 경로에 대한 프로세스 및 관리 모듈들을 나열한 것이다.
(1) 호스트로부터 바이너리 캐시 기록
(2) 호스트로부터 메타-블록 기록
(3) 바이너리 캐시로부터 메타-블록 기록
(4) 바이너리 캐시 기록 관리
(5) 바이너리 캐시 블록 관리
(6) 메타-블록 기록 관리
(7) 메타-블록 관리
이들 기술은, Paley, Alexander 등에 의한 "NONVOLATILE MEMORY AND METHOD WITH WRITE CACHE PARTITION"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY WITH WRITE CACHE HAVING FLUSH/EVICTION METHODS"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY WITH WRITE CACHE PARTITION MANAGEMENT METHODS"; Gorobets, Sergey A.에 의한 가출원 "NONVOLATILE MEMORY AND METHOD WITH IMPROVED BLOCK MANAGEMENT SYSTEM"에 더 완전하게 기술되어 있고, 이들 모두는 본원과 동시에 출원되었다.
예비 블록 저장소 관리
비휘발성 메모리 시스템은 흔히 제조 공정 및 획득되거나 성장된 결함 둘 다로부터, 결함 저장소자들을 갖는다. 예를 들면, 플래시 메모리 셀의 응답성은 전형적으로 셀이 소거되고 재프로그램되는 횟수의 함수로서 시간에 따라 변한다. 이것은 각각의 소거 및/또는 재프로그래밍 동작 동안 저장소자 유전층 내에 소량의 전하가 트랩되고 시간에 따라 축적되는 결과인 것으로 생각된다. 이것은 일반적으로 메모리 셀이 신뢰성이 떨어지게 하여 메모리 셀이 노후됨에 따라 소거 및 프로그래밍을 위해 더 높은 전압들을 요구할 수 있다. 메모리 상태들이 프로그램될 수 있는 유효 임계 전압 윈도우는 전하 보유의 결과로서 감소할 수 있다. 이것은 예를 들면 미국 특허 5,268,870에 기술되어 있다. 결과는 메모리 셀의 제한된 유효 수명이며, 즉 메모리 셀은 결국에 올바르게 동작하지 못하게 되고 일반적으로 올바르게 프로그램 또는 소거할 수 없게 된다. 플래시 메모리 블록이 바람직하게 받을 수 있는 사이클 회수는 메모리 셀의 특정한 구조, 저장 상태들에 대해 사용되는 임계 윈도우의 크기에 따르며, 임계 윈도우의 크기는 일반적으로 각 셀의 저장 상태들의 수가 증가됨에 따라 증가한다. 이 및 그외 다른 요인들에 따라, 수명 사이클 회수는 10,000만큼 낮을 수 있고 100,000 또는 심지어 수십만 만큼 많을 수 있다. 이를 해결하기 위해서, 메모리 장치는 빈번히 결함 관리 절차를 채용하고 셀, 섹터, 블록, 또는 그외 다른 구조의 레벨에서 결함 소자들을 리매핑한다. 결함 관리의 면들은 미국 특허 5,297,148에 더 상세히 논의되어 있다.
이를 해결하기 위해서, 메모리 시스템은 흔히 장치 상에 임의의 초기의 또는 성장된 결함들을 가리기 위해서 어떤 기정의된 최소값 이상의 다수의 예비 또는 가외의 블록을 포함할 것이다. 더 일반적으로 적용할 수 있을지라도, 이러한 한 저장소의 예비 블록을 관리하는 다수의 면들은 바이너리 단락 및 다중-레벨(또는 MLC) 단락을 포함하는 앞 단락들에서 제시된 메모리 시스템의 맥락에서 기술될 수 있다. 다음 논의는 앞에서 언급된 더 일반적 상황과 함께 실시예로서, 위에 그리고 모두 본원과 동시에 출원된 다음 문헌들에 기술된 메모리 시스템들을 사용할 것이다: 미국 특허 출원: Gorobets, Sergey A. 등에 의한 "WEAR LEVELING FOR NON-VOLATILE MEMORIES: MAINTENANCE OF EXPERIENCE COUNT AND PASSIVE TECHNIQUES"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY AND METHOD WITH WRITE CACHE PARTIOTING"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY WITH WRITE CACHE HAVING FLUSH/EVICTION METHODS"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY WITH WRITE CACHE PARTITION MANAGEMENT METHODS"; Gorobets, Sergey A. 등에 의한 MAPPING ADDRESS TABLE MAINTENANCE IN A MEMORY DEVICE; Gorobets, Sergey A. 등에 의한 가출원 "NONVOLATILE MEMORY AND METHOD WITH IMPROVED BLOCK MANAGEMENT SYSTEM".
상기 예시적인 실시예에서, 예비 블록은 정상적으로 시스템 기능을 위해 필요한 최소값 이상의 자유 블록이며, 적어도 한 자유 블록은 합체 및 콤팩션을 수행하기 위해 사용된다. 또한, 최소 수는 어떤 성능 수준을 보증하기 위해서 바이너리 캐시 블록 및 업데이트 블록으로 사용될 수 있는 블록의 어떤 수를 포함할 수 있다. 일시적으로 닫힌 업데이트 블록이 되도록 할당된 일부 블록이 있을 수 있고, 따라서 시스템은 새로운 블록이 완전히 기록될 때마다 자유 블록 리스트(FBL) 및 그룹 액세스 테이블(GAT)을 업데이트할 필요가 없다. 자유 블록의 수가 최소값에 도달할 때, 시스템은 즉시 판독-전용 모드로 갈 수 있고, 아니면 업데이트 블록으로서 블록을 덜 사용하는 것이 가능하나, 이것은 점차로 성능에 영향을 미칠 것이다. 예비 블록은 기정의된 최소값 이상의 가외의 블록이며, 시스템이 완전하지 못하게 기능하기 전에, 예를 들면 시스템이 판독-전용 모드 또는 미국 특허 공개번호 US-2007-0266200-A1에 기술된 그외 다른 대책과 같이 "수명 말기" 유형의 시나리오로 가기 전에 블록 불능을 보상하기 위해 사용될 수 있는 블록으로서 기술될 수 있다.
파티션 사이에서 예비 블록의 이동
앞에 단락들은 바이너리 섹션 및 다중-레벨 (MLC) 섹션을 구비한 메모리 시스템의 예를 제시한 것이다. 바이너리/MLC 메모리 구성의 그외 상세는 미국 특허 6,456,528에 기술되어 있다. 이러한 구성에서, MLC 모드에서 동작하는 블록은 더 정밀한 프로그래밍을 요구하며, 이러한 블록은 전형적으로, 바이너리 모드에서 동작하는 것들보다 적은 사이클들을 위해 사용될 수 있다. 바이너리 모드는 더 빠르며 더 간격이 넓으며, 더 큰 내구성을 제공한다. 바이너리 캐시가 구성된 상태에서, 바이너리 블록은 MLC보다 더 많은 사이클들을 겪게 될 것이며, 시스템은 MLC 동작들의 수를 감소시키기 위해서 더 많은 바이너리 기록들을 행하게 설계된다. 예를 들면, 바이너리 내구성이 예를 들어 MLC보다 100 더 크면(예를 들면 최대 소거 회수 = MLC 모드에선 1K 소거 사이클에 대해 바이너리 모드에선 100 K), 시스템은 유효한 바이너리 블록 마모율을 MLC 마모보다 크게 함이 없이 MLC 기록들보다 100 더 많게 바이너리 기록들을 행하는 것까지도 할 수도 있을 것이다. 결국, 1회 MLC 소거를 10회 바이너리 소거들로 대치한다면 시스템에 대해 내구성 향상을 제공할 수도 있을 것이다. 그러나, 어째든, 초기에 불량 블록들뿐만 아니라, 바이너리 섹션 및 MLC 섹션 둘 다 결함성 블록을 증가시킬 수 있다.
결함 메모리 블록을 허용하기 위해, 2개의 서로 다른 부분을 가진 메모리는 다수의 서로 다른 구성으로 예비 블록을 포함할 수 있다. 예를 들면, 각각의 파티션은 자신의 별도의 예비 저장소로서 가외의 바이너리 블록 중 하나와 가외의 MLC 블록 중 하나를 유지할 수도 있을 것이지만, 그러나 이것은 저장소 중 어느 하나가 다른 저장소의 상태에 관계없이 최대로 사용될 때 장치가 수명말기 상황에 이르게 되는 것을 초래할 것이다. 또 다른 구성은 필요시 바이너리 파티션 또는 MLC 파티션에 의해 취해져 대응 모드에서 동작하게 되는 혼합 사용을 위해 한 저장소의 블록을 공유하는 것이 될 것이다. 공유 저장소 구성에서, 메모리는 공유된 저장소가 최대한 사용될 때 수명말기 상황에 도달할 것이다. 그러나, 결과적인 내구성은 공유된 저장소 내 블록에 대해 MLC 파티션 밖에서 빈번한 무작위 기록들이 더 이상 유지되지 않을 것이기 때문에 최적이 되지 않을 것이며, 이것은 MLC 블록에 영향을 야기하여, 어떤 내구성 이점들을 감소시킬 것이다.
본 명세서에 제시된 양상에 따라, 2개의 파티션은 별도의 예비 블록 저장소를 구비하지만, 예비 블록은 낮은 내구성의 MLC 파티션을 위한 저장소에서 더 높은 내구성의 바이너리 파티션을 위한 저장소로서 옮겨질 수 있다. 이것은 비교적 작은 저장소가 바이너리 파티션용으로 유지될 수 있게 하지만, 필요성이 발생한다면 블록이 MLC 블록 저장소로부터 넘어올 수 있게 한다. 예를 들면, 초기에는 매우 적은 수의 예비 바이너리 파티션 블록이 할당되어 있을 수도 있다. 예비 바이너리 블록의 이러한 초기 할당은 심지어 없을 수도 있을 것이지만 사실상 대개는 단일 불량에 의해 이동 메커니즘이 작동될 필요가 없게 바이너리에 할당된 몇 개의 블록, 또는 심지어는 단일 예비만이 있게 될 것이다. 바이너리 파티션용으로 임의의 추가의 예비 블록이 필요하게 된다면, MLC 예비들이 필요시 더 큰 MLC 예비 저장소로부터 이동될 수 있고, 임의의 이동된 블록은 새로운 파티션(즉, 바이너리)용으로 적합하게 동작된다. 일부 실시예가 더 큰 내구성 바이너리 저장소의 예비 저장소로부터 MLC 예비 저장소로 예비들이 이동될 수 있게 할 수도 있을지라도, 이것은 바이너리 셀이 후속하여 더 엄격한 MLC 모드에서 동작된다면 더 낮은 내구성에 이르게 할 수도 있을 더 간격이 넓은, 고속 모드에서 동작되기 때문에 일반적으로는 행해지지 않을 것이다.
이에 따라, 블록 저장소는 분리되어 있지만, 장치는 두 저장소들이 다 사용되었을 때 수명말기 모드로 가게 될 뿐이다. MLC 블록은 이전에 사용되었을 때라도 여전히, 더 간격이 넓은 바이너리 모드에서 사용될 수 있다. 그러므로, 초기에 바이너리 예비 블록으로서 할당된 아마도 하나 또는 몇 개의 블록은 제외하고, 시스템은 MLC 파티션 내에 모든 예비 블록을 유지하고, 사이클할 수 있고, 이들을 필요할 때 새로운 바이너리 예비들이 되도록 할 수 있다. 언급한 바와 같이, 바이너리 블록은 장치의 수명에서 상당히 앞서 최대 MLC 소거 회수에 도달할 것이기 때문에, 바이너리 블록이 더 빠른 속도로 마모된다고 할 때 바이너리 블록은 MLC 블록으로 사용될 수가 없을 수도 있으므로, 실시예는 역 이동을 사용하지 않는다.
개념이 도 20을 사용하여 개략적으로 예시될 수 있다. (도시된 구성은 단지 개념적이며 장치 상에 물리적 레이아웃은 모든 예비 블록을 함께 그룹화할 필요가 없으며, 등등을 이해할 것이다). 메모리는 2개의 섹션, 즉 바이너리 섹션(2001) 및 MLC 섹션(2003)으로 분할된다. 파티션은 고정된 하드 파티션이거나, 동적 또는 그외 소프트 파티션일 수 있다. 각각의 파티션은 2011 및 2013으로서 나타낸 예비 블록 저장소를 갖는다. 바이너리 예비 블록 저장소(2011)는 초기에는 예비 블록이 전혀 없이 내지는 몇 개가 할당되며 실시예로서 하나 또는 2개가 취해진다. MLC 예비 블록 저장소(2013)는 초기에는 많은 수의 블록이 할당된다. 이들 초기에 할당된 예비 중 일부는 테스트에서 없어질 수도 있어 제조공정으로부터 불량 블록을 가리기 위해 재할당된다. 어째든, 바이너리 섹션(2001)이 예를 들어 프로그램 실패에 기인하여 예비 블록을 필요로 할 때, 먼저 자신의 예비 블록 저장소(2011)를 체크하고 필요한 블록이 가용하다면 이를 사용할 것이다. 그렇지 않다면, 2015로 나타낸 바와 같이 MLC 예비 블록 저장소(2013)로부터 재할당될 블록을 요청할 것이며, 이것은 필요로 된 바이너리 예비 블록으로서 취급된다. 2013에 재할당될 가용한 예비들이 없다면, 장치는 수명 말기 모드로 간다.
MLC 저장소(3013)로부터 직접 기사용된 바이너리 블록으로 "되는대로" 블록 재배치는 시스템이 바이너리 테이블들에 사전에 참조함이 없이 최근에 소거되어 기록된 바이너리 블록을 갖는 상황을 야기할 수 있는데 이를 피하기 위해서 바이너리 자유 블록 리스트(2011)은 일반적으로 항시 적어도 한 예비 블록을 갖는 것이 바람직하다. 결국, 바이너리 저장소(2011)이 비어있게 될 때는 언제든, 실시예는 예비 바이너리 블록을 재할당할 것이다.
도 21은 예비 블록에 대한 재할당 프로세스를 예시한 흐름도이다. 2101에서 시작하여, 바이너리 파티션(2001)이 예비 블록을 필요로 할 때, 먼저, 자신의 예비 블록 저장소(2011)을 살펴보고 2103에서 예비가 가용한지 판정한다. 그러하다면, 예비는 요청시 메모리에 의해 사용되며, 그렇지 않다면 2107에서, 예비 블록은 MLC 예비 블록 저장소(2013)로부터 요청된다. MLC 저장소도 비어있다면, 장치는 2109에서 수명말기 모드에 진입하고, 예비가 가용하다면, 2111에서 이전되어(도 20에서 2015에 대응), 2113에서 바이너리 모드에서 사용된다.
바이너리 섹션 및 다중-상태 섹션으로 분할된 메모리의 맥락에서 여기에 제시되었을지라도, 메모리 소자들이 하나 이상의 모드에서 동작될 수 있는 다른 응용들에서도 사용될 수 있다. 이때 메모리는 서로 다른 모드들에 따라 동작되는 2개(또는 그 이상) 섹션들로 유사하게 분할될 수도 있을 것이다. 한 모드가 더 불능이 생길 경향이 있을 때(MLC에서처럼), 예비 블록의 더 큰 부분이 분할에 할당될 수 있고, 이것은 결함들이 덜 발생하는 경향이 있는 다른 모드(바이너리에서처럼)에서 동작된다. 오류가 덜 일어나는 경향이 있는 섹션이 예비 블록을 필요로 하지만 이것이 비교적 작게 할당되어 남은 가용한 블록이 없을 때, 이에 따라 예비 블록은 이전되어 동작된다. 또한, 본 예가 2개의 대응하는 모드들에서 동작하는 2개의 파티션들에 기초할지라도, 더 많은 파티션들로 확장될 수 있는데, 예를 들면, 바이너리/MLC 경우라도, 서로 다른 상태 밀도들에서 동작하는 하나 이상의 MLC 파티션이 있을 수도 있을 것이다. 이들 확장은 유사하게 도 20의 2017에 관계된 다음 논의에 적용한다.
바이너리-MLC 예를 더욱 넘어 일반화를 고찰하면, 언급된 바와 같이, 두 파티션은 둘 다 셀당 비트들을 복수로, 그러나 이를테면 오류가 덜 일어나는 경향이 있는 파티션에선 셀당 2-비트 및 다른 파티션, 또는 진정한 바이너리(즉, 바이너리로만 동작되고 바이너리에 맞게 최적화된) 모드 및 MLC의 하위-페이지 모드에선 셀당 3-비트들과 같이, 서로 다른 개수로 저장할 수도 있을 것이다. 또 다른 가능성은 예를 들면 둘 다 바이너리에서, 또는 다중-레벨 파티션이 하위 페이지 단독 모드에서 동작되는 전(all)-바이너리 모드에서처럼, 셀 당 동일한 수의 상태들로 동작하는 서로 다른 파티션들을 갖는 것이다. 이 경우에, 각 파티션 내 메모리 블록은 소거 사이클당 레이트 면에서 오류들이 일어나기 쉬운 경향은 동일할 수 있으나, 한 파티션 내 블록(이를테면 최근에 업데이트된 데이터를 저장하기 위해 사용되는 바이너리 캐시와 같은)은 다른 파티션, 또는 주 메모리 내 블록들보다 더 많은 사용율에 기인하여 오류들이 발생하기가 더 쉬어질 것이다. 결국, 어떤 경우에 있어서 오류 가능성은 메모리 동작 모드에 기인할 수 있고 이외 다른 경우에 있어서 사용 패턴/빈도수에 기인할 수 있다. 분할은 예를 들면 한 파티션은 시스템 데이터용이고 다른 파티션은 사용자 데이터용으로 논리 파티션 사이에 물리 파티션의 분할일 수 있는데, 이 경우 블록 소거의 상대적 빈도수는 시스템 데이터가 더 자주 업데이트될 것이라고 가정할 때, 파티션 내 일어날 업데이트 빈도에 의해 결정될 것이다.
또한, 이들 기술은 주 예비 저장소가 오류가 더 많은 또는 더 적게 일어나는 경향이 있는 메모리 파티션 내 있을 때라는 것으로 제한될 필요는 없다. 더 일반적으로, 주 예비 저장소는 복수의 파티션 중 하나에 있을 수 있으며, 이것은 시스템이 카드가 예비들을 다 소진하기 전에 그 파티션을 전부 사용할 수 있게 하므로 오류가 더 일어날 수 있을 파티션으로 제한될 필요가 없다. 예를 들면, 전(all)-바이너리 경우들에 있어서는 여전히 비휘발성 메모리의 바이너리 캐시 파티션이 있을 수도 있을 것이다. 결국, 분할 기준은 다음을 포함할 수 있다: 고/저 내구성(예를 들면, MLC 대 바이너리); 밀도, 속도, 데이터 보유에 차이들(예를 들면, 완전 MLC 대 하위 페이지 전용); 얼마나 오류가 일어나기 쉬운 경향이 있는가(이를테면 캐시 영역과 같은 파티션이 더 자주 업데이트되고 시스템이 평균 핫 카운트와 연장 시간 실패를 낮게 유지하기 위해서 이 파티션에 예비들을 사이클할 수 있을, 전(all) 바이너리 경우들에서와 같이); 한 파티션이 더 내구성이 있고 업데이트율이 더 큰 경우; 등등.
앞에 논의는 MLC 모드가 더 엄격한 동작 허용오차들을 갖고 있고 대개는 더 간격이 넓은 바이너리 모드보다도 결함들이 늘어나기가 쉬운 경향이 있는 점에서 얼마나 MLC 모드가 더 간격이 좁은지, 또는 덜 신뢰성 있는 모드가 되는 경향이 있는지를 언급하였다. 이 때문에, 다중-상태 모드에서 동작될 때 결함이 있는 것으로 간주될 수 있는 블록은 여전히 바이너리 모드에서 동작할 수 있는데, 예를 들면, 블록이 상위 페이지를 프로그래밍할 때 프로그램 실패가 일어날 수 있을지라도, 이것은 여전히 바이너리(예를 들면, 하위 페이지 전용) 형식으로 동작될 수 있다. 결국, MLC 블록으로서 결함이 있는 것으로 발견된 블록은 바이너리 파티션의 예비 블록 저장소에 재할당될 수 있다. 이것이 도 20에서 2017로 도시되었는데, 이 경우 MLC 예비 블록 저장소(2013) 밖에 있는 MLC 파티션(2003)으로부터의 한 블록은 바이너리 예비 블록 저장소(2011)로 이동된다. 이동은 즉각적일 필요는 없으며, 일종의 백그라운드 동작과 같이 시스템에서 편리할 때 수행될 수 있다. 이어서 MLC 파티션(2003)이 대체 블록을 필요로 한다면, 이것은 예비 저장소(2013)로부터 옮겨올 수 있다. (예비 블록이 모두 물리적으로 한쪽에 함께 몰려있는 도 20의 구성은 단지 개략적인 것임에 유의해야 한다).
예를 들어, 더 간격이 좁은 MLC 프로그래밍 모드의 기준을 충족할 수 없어 MLC 블록이 1K 사이클 후에 불량이 될지라도, 이 블록은 바이너리 모드에서, 프로그래밍이 더 간격이 넓고 블록 마모에 덜 민감하기 때문에, 예를 들면 100K 사이클 동안 여전히 사용될 수 있다. 이것은 일부 셀이 맞는 레벨로 프로그램할 수 없을 때 블록이 블록 마모에 기인하여, 그렇지만 워드 라인 단락 또는 기판 단락과 같은 중한 장애에 기인하지는 않고, MLC 모드에서 프로그램하지 못을 때의 경우이다. 일부 실시예에서, 이동된 블록은 이것이 바이너리 모드에서 올바르게 동작할 것인지를 판정하기 위해 체크될 수 있다. 블록을 더 단순하게 단지 이동시키고 초기에는 시스템이 오류들이 발생하였을 때 이들을 처리하게 설계되기 때문에 그 블록이 바이너리에서 적합히 동작할 것이라고 가정하는 것이 바람직할 수 있다. 또한, 테스트하지 않고도, 블록이 바이너리 형태로 사용될 수 있을지 여부를 알게하는 중요한 표시자는 장애 징후이다. 예를 들면, 제어기는 장애가 상위 페이지(하위 페이지보다 더 간격이 좁은 모드) 상에서 발생한다면 단락이 아니라 블록에 기인한 것으로 가정할 수 있다. 비프로그램된 비트의 수의 분석과 같이, 시스템이 발생된 것을 체크하는 많은 방법들이 있다.
예비 및 자유 블록 관리를 위한 1-비트 시간 스탬프의 사용
위에 언급된 바와 같이, 예비 블록은 정상적으로 시스템 기능을 위해 필요한 최소 이상의 자유 블록이다. 모드 본원과 동시에 출원된 미국 특허 출원: Gorobets, Sergey A. 등에 의한 "WEAR LEVELING FOR NON-VOLATILE MEMORIES: MAINTENANCE OF EXPERIENCE COUNT AND PASSIVE TECHNIQUES"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY AND METHOD WITH WRITE CACHE PARTITIONING"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY WITH WRITE CACHE HAVING FLUSH/EVICTION METHODS"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY WITH WRITE CACHE PARTITION MANAGEMENT METHODS"; Gorobets, Sergey A. 등에 의한 "MAPPING ADDRESS TABLE MAINTENANCE IN A MEMORY DEVICE"; 및 Gorobets, Sergey A. 등에 의한 가출원 "NONVOLATILE MEMORY AND METHOD WITH IMPROVED BLOCK MANAGEMENT SYSTEM"에 기술된 바와 같은, 실시예는 호스트 데이터를 위한 논리 어드레스에 현재 할당되지 않은 블록으로서, 그리고 캐시, 업데이트, 합체, 및 그외 관리 기능들을 위한 것인, 다수의 자유 블록이 있을 것이다. 예를 들면, 적어도 한 자유 블록은 합체 및 콤팩션을 수행하기 위해 유지된다. 일시적으로 닫힌 업데이트 블록이 되도록 할당된 몇몇 블록이 있을 수 있고, 따라서 시스템은 새로운 블록이 완전히 기록될 때마다 자유 블록 리스트(FBL) 및 그룹 액세스 테이블(GAT)을 업데이트할 필요가 없다. 예비 블록은 완전 보완 자유 블록을 포함하고 블록 장애를 보상하기 위해 사용될 수 있는 블록으로서 기술될 수 있는 기정의된 최소 이상의 가외의 블록이다. 일부 실시예에서, 예비 블록은 이외 어떤 다른 블록으로 사용될 수 있는데, 예를 들면 때때로 예비 블록 저장소의 멤버들을 자유 블록 리스트의 멤버들과 교환함으로써 자유 블록 저장소를 효과적으로 더 커지게 할 수 있다. 여기에 기술된 실시예에서, 시스템은 총 자유 블록의 수를 파악해 둠으로써 이것이 예비들을 갖고 있다는 것을 알뿐이다. 결국, 예비 블록 저장소의 멤버들은 사용된 상태로 격리해 둔 것이 아니라, 이미 사용된 상태에 있을 수 있다. 여기에서 제시된 또 다른 면에 따라서, 시스템은 블록이 소거된 상태에 유지되어 있지 않은 경우에 최근에 기록된 블록을 알려주는 블록의 속성으로서 1-비트 시간 스탬프 또는 플래그를 유지한다.
편리한 즉시 페용 콘텐트를 가진 블록을 소거하기보다는 폐용 블록이 프로그램될 바로전인 가능한 한 늦게 이들을 소거하는 것이 바람직할 수 있다. 이것은 장시간 소거된 상태에 유지되어 있어 블록이 축적할 수 있는 교란효과들을 제거하는데 도움을 줄 수 있다. 그러나, 이러한 방식은 초기화동안 복잡화를 야기할 수 있다. 자유 또는 예비 블록이 소거된 상태에 유지되어 있을 때, 예비 블록 저장소 및 자유 블록 리스트는 소거된 블록들만을 가질 것이므로, 초기화동안 시스템은 최근에 기록된 블록을 발견하기 위해 이들로부터 블록을 스캔하기만 하면 될 것이다. 이와 달리 블록을 소거된 상태에 있게 하지 않음으로써, 폐용된 블록, 자유 블록 및 새로운 데이터로 최근에 기록된 블록은 동일하게 보일 수 있기 때문에 스캔과 같은 것을 수행하는 것만으론 충분하지 않다. 예를 들어, 호스트가 되풀이하여 계속하여 동일 논리 그룹을 재기록하는 상황을 고찰하면, 메모리 시스템은 자유 블록 리스트 또는 예비 블록 저장소 내 어떤 블록이 이전의 데이터를 갖고 있는지 아니면 새로운 데이터로 지금 재기록되었는지를 알 수가 없을 수도 있을 것이다. 시스템이 소거하여 블록을 프로그래밍하기를 시작할 때 토글되는 1-비트 시간 스탬프를 이 목적을 위해 도입한다.
시간 스탬프 비트는 시스템이 소거하여 블록을 프로그램하기 시작할 때마다 토글된다. 이때, 시스템의 테이블들을 참조해 보면 이전의 시간 스탬프 값, 예를 들면 TS = 0을 가질 것이지만 블록은 이의 헤더들에 TS = 1을 가질 것이다. 이것은 테이블의 마지막 업데이트 이후에 시스템이 블록을 소거하고 이에 프로그래밍을 시작하였다는 것을 나타낼 것이다. 초기화에서, 시스템은 자유 블록 리스트 및 예비 블록 저장소 내 블록을 스캔할 수 있고, 예를 들어, 블록 내 시간 스탬프들이 자유 블록 리스트 내의 것과 일치하지 않는다면, 시스템은 마지막 업데이트 이후에, 블록을 최근에 기록된 것으로서 인식할 수 있다.
어드레스와 더울어 유지관리되는 블록의 경험 또는 핫 카운트에 대한 것인, 본원과 동시에 출원된 Gorobets, Sergey A. 등에 의한 미국 특허 출원 "WEAR LEVELING FOR NON-VOLATILE MEMORIES: MAINTENANCE OF EXPERIENCE COUNT AND PASSIVE TECHNIQUES"에 기술되어 있긴하지만, 본 시스템은 시간 스탬프를 속성으로서 유지관리할 수 있다. 이러한 방식하에, 시스템은 단지 이를 예비 블록, 자유 블록, 또는 둘 다를 위해 저장할 것이다. 또한, 이러한 방식하에, 시스템은 모든 자유/예비 블록을 위해 저장해 둘 필요가 없고 단지 비휘발성 메모리 내 유지된 자유 블록 리스트의 다음 어데이트 전에 사용할 가능성이 있는 자유/예비 블록에 대해서만 저장해 둘 필요가 있다. 다른 자유 블록에 있어서, 1-비트 시간 스탬프의 값은 마지막 업데이트 이후 변경되어 있지 않을 것이기 때문에, 이를 블록 자신들로부터 판독함으로써 판정될 수 있다. 또한, 모든 블록은 두 값 사이에 비교할 수 있게, 블록 자체 상에 어떤 곳, 이를테면 페이지 헤더에 시간 스탬프 비트를 저장해 둘 것이다. 도 20 및 도 21에 관련하여 위에 기술된 바와 같이 MLC 블록이 바이너리 파티션으로 이동된다면, 대응하는 참조는 시간 스탬프를 변경함이 없이, MLC 리스트 또는 저장소에서 바이너리 리스트 또는 저장소로 이동될 수 있다.
위에 언급된 바와 같이, 예비 블록이 기록되었는지 여부를 판정하기 위한 시간 스탬프는 예비 블록이 이전에 기록되어 있고 대체로 사용되기 전까지 다른 블록으로부터 격리된 상태에 있지 않을 수 있는 실시예에서만 유용할 것이다. 예를 들면, 실시예의 메모리 관리에서, 시스템은 예를 들면 마모 평준화 이유로 블록을 자유 블록 리스트와 예비 블록 저장소 사이에 때때로 교환할 수 있다.
이하에 그리고 본원과 동시에 출원된 Gorobets, Sergey A. 등에 의한 미국가특허 출원 "NONVOLATILE MEMORY AND METHOD WITH IMPROVED BLOCK MANAGEMENT SYSTEM"에 기술된 바와 같이, 마모 평준화 예를 더 상세히 고찰하면, 예비 블록은, GAT를 통상의 논리 대 물리 매핑을 넘어서 확장하며 블록 할당만을 위한 것이며 이출되는 논리 공간으로 사용되는, 그룹 액세스 테이블 또는 GAT의 한 부분에 엔트리들로서 유지될 수 있다. 시스템은 자유 블록 리스트 내 핫(매우 자주 사용되는) 블록을 GAT 또는 GAT의 예비 블록 부분으로부터 콜드(거의 사용되지 않는) 블록들과 교환할 수 있다. 이들 자유 블록 리스트, GAT, 및 GAT의 예비 블록 부분의 평균 핫 카운트에 대해 기록해 둘 수 있다. 이들은 교환을 언제 수행할지, 그리고 자유 블록을 예비 블록과 교환할지, 또는 콜드 GAT 블록으로부터 거의 기록되지 않은 데이터를 핫 자유 블록에 블록 카피를 수행하여 콜드 블록을 사용을 위해 비워둘지를 판정하기 위해 사용될 수 있다. 이러한 교환을 언제 수행할지를 판정하기 위해 사용되는 기준은, 자유 블록 리스트 내 블록의 평균 핫 카운트가 GAT 또는 예비 블록 GAT의 평균 핫 카운트 이상의 기정의된 수보다 크거나, 기정의된 수의 소거들이 수행되었나를 포함할 수도 있을 것이다.
이들과 같은 기준이 충족되고 예비 GAT의 평균 핫 카운트가 GAT의 평균 핫 카운트 미만이라면, 시스템 상에 마모 평준화 코드는 예비 GAT 교환 동작을 스케쥴링할 것이다. (예비 GAT 구성이 없는 다른 시스템에서는 적합한 예비 블록 관리 테이블 또는 데이터가 사용될 것이다). 이어서 마모 평준화 동작은 편리한 시간에 수행될 수 있다. 자유 블록 리스트와 교환되기에 적합한 예비 블록을 발견하기 위해서, 속성으로서 블록의 헤더에 유지되었든, 아니면 전용 테이블에 유지되었든간에, 예비 블록에 할당된 핫 카운트에 대해 체크가 행해질 수 있다. 가장 낮은 핫 카운트를 가진 예비 블록이 교환을 위해 사용될 것이다.
자유 블록 리스트에 대한 평균 핫 카운트가 예비 GAT의 평균 핫 카운트를 초과할 때 자유 및 예비 블록을 교환하기 위한 절차는 다음과 같을 수 있다: 얼마나 많은 블록이 자유 블록 리스트로부터 이동되어야 할지를 판정한다(예를 들면, 임계값 이상의 핫 카운트를 가진 모든 자유 블록). 동일한 수의 가장 콜드한 예비 블록은 이들의 핫 카운트들을 체크함으로써 발견된다. 이어서 교환이 행해지고 대응하는 평균핫 카운트들이 업데이트된다. 결국, 이것에 의한 것이든 아니면 다른 교환 메커니즘들에 의한 것이든, 이전에 이미 기록되어 있는 예비 블록이 있을 수 있다. 본 논의에 관계된 마모 평준화에대한 더 이상의 논의는 본원과 동시에 출원된 Gorobets, Sergey A. 등에 의한 미국 특허 출원 "WEAR LEVELING FOR NON-VOLATILE MEMORIES: MAINTENANCE OF EXPERIENCE COUNT AND PASSIVE TECHNIQUES"에 주어져 있다.
시간 스탬프의 논의로 돌아가서, 도 22는 시간 스탬프의 사용을 개략적으로 도시한 것이다. 블록(2201)이, 데이터 저장 부분(2203)과, 1-비트 시간 스탬프 TS(2207)를 포함하는 헤더 부분(2205)을 갖는 것으로서 도시되었다. 블록이 고정된 메타-블록으로 구성된다면, 단일 TS만이 메타-블록을 위해 유지할 필요가 있다. 도 22의 우측에는 자유 또는 예비 블록(2201)을 위한 엔트리를 가질, 이를테면 자유 블록 리스트 또는 예비 블록 저장소와 같은 것인 데이터 관리 구조(2211)가 있다. 블록(2201)은 2211에 2213으로 나타낸 자신의 엔트리를 갖는다. 이 표현에서, 엔트리(2213)는 블록의(또는, 블록이 고정된 메타-블록으로서 저장된다면, 메타-블록의) 물리 어드레스, 및 시간 스탬프 TS(2217)용으로 1 비트, 및 여기에서, 경험(또는 핫) 카운트 hc(2215)를 포함한, 연관된 속성을 가질 것이다. 더 일반적으로, TS 비트(2207)는 기본 물리 유닛(블록)이든 복합 가상 유닛(메타-블록)이든, 소거 유닛 상에 어떤 곳에 저장되며, 대응하는 TS 비트(2217)는 관리 데이터 중에 대응하는 할당되지 않은(자유 또는 예비) 소거 구조에 대한 속성으로서 데이터 관리 시스템에 의해 유지관리된다.
자유/예비 블록 테이블 내 TS(2217) 값은 자유 블록 리스트에 블록이 새로이 넣어졌을 때 설정되며 이의 시간 스탬프가 자신의 어드레스와 함께 추가된다. 다른 어떤 곳, 예를 들면 GAT에 의해 참조되기 위해 사용되는 블록이 비워졌을 때, 이것은 자신의 헤더 시간 스탬프(2207)로부터 카피된 "그대로" 카피된 시간 스탬프와 함께 자유 블록 리스트에 추가된다. 위에 기술된 바와 같이, 실시예에서, 시스템은 사실상 늦게 까지 폐용 블록을 비소거된 상태로 자유 및 예비 블록 저장소들에 유지한다. 블록 자체 상에 저장된 TS 값(2207)은 시스템이 블록을 소거하고 다음 소거 전에 이 블록에 프로그램할 때 토글될 것이다. 프로그램될 제 1 헤더에 프로그램되고 다른 헤더들에서도 계속될 수 있다. 자유 블록 리스트의 다음 업데이트에서, 더 이상 자유 또는 예비가 아니기 때문에 자유 블록 리스트로부터 제거될 수 있고, 그룹 액세스 테이블 또는 액세스 테이블을 위한 업데이트 정보와 같은 다른 어떤 곳에서 참조될 수 있다. 결국, 주어진 블록에 대해 이들 2개의 TS 비트(2207, 2217)의 비교는 블록이 테이블의 마지막 업데이트 이후에 소거되어 프로그램된 상태에 있는지를 나타낼 것이다. 폐용, 자유 블록 및 새로운 데이터로 최근에 기록된 블록이 동일하게 보일 수 있기 때문에, 이들 둘의 비교는 자유 블록 리스트 또는 예비 저장소 내 블록이 이전 데이터를 갖고 있는지 아니면 지금 새로운 데이터로 재기록되었는지를 알려줄 수 있다. 초기화에서, 시스템은 자유 및/또는 블록을 스캔할 수 있고, 블록 내 시간 스탬프가 제어 구조에 것과 일치하지 않는다면, 블록은 마지막 데이터 구조 업데이트 이후에, 최근에 기록된 것으로서 인식될 수 있다. 따라서, 시스템이 자유 블록 리스트를 스캔하고 무엇이 변경되었는지 발견하기 위해 시간 스탬프들을 체크할 수 있기 때문에, 시간 스탬프는 행해질 때마다 자유 블록 리스트를 업데이트할 필요없이 시스템이 자유 블록 리스트로부터 블록을 사용할 수 있게 한다.
언급된 바와 같이, 실시예에서, 모든 자유 및 예비 블록은 비소거된, 폐용 데이터(일단 이들이 처음 프로그램되었다면)를 갖는다. 자유 또는 예비 블록 리스트가 업데이트된 마지막 일자 이후 블록이 사용되었는지는 블록의 데이터로서 보는 것만에 의해선 판정될 수 없기 때문에, 시간 스탬프가 이러한 판정을 할 수 있게 한다. 일부 구성에서, 전역적인 절대적 시간은 자유 블록 리스트 뿐만 아니라 블록 자체들에 유지될 수도 있을 것이며, 이것은 블록이 자유 블록 리스트에 있는 것보다 더 새로운 전역적 시간 스탬프를 갖고 있는지를 알려주기 위해 사용될 수도 있을 것이다. 그러나, 이러한 절대 시간 스탬프는 블록이 마지막 업데이트이후 사용되었는지 여부를 알려주기 위해 단일 비트만을 필요로 하는 여기에서 제안된 1-비트 시간 스탬프와는 반대로, 저장하는데 더 많은 공간(아마도 32비트 정도)을 취할 것이다.
액세스 테이블에 예비 블록의 유지관리
위에서 언급된 바와 같이, 여기에서 제시된 또 다른 면에서, 예비 블록, 자유 블록, 또는 둘 다는 그룹 액세스 테이블에 의해 어드레스될 수 있다. 통상적으로, 여기에서 주로 기술된 파일 액세스 테이블(FAT) 또는 그룹 액세스 테이블(GAT)과 같은 액세스 테이블은 각각의 논리 어드레스에 대한 엔트리를 가진 룩업 테이블이며, 어드레스들은 시스템을 위한 적합한 수준의 입도, 즉 파일, 섹터, 블록, 또는 GAT에선 메타-블록으로 존재한다. 각각의 GAT 엔트리는 현재 저장된 논리 어드레스에 대해 대응하는 물리 위치를 저장한다. 실시예에 따라, 지금 기술된 1-비트 시간 스탬프 또는 본원과 동시에 출원된 Gorobets, Sergey A. 등에 의한 미국 특허 출원 "WEAR LEVELING FOR NON-VOLATILE MEMORIES: MAINTENANCE OF EXPERIENCE COUNT AND PASSIVE TECHNIQUES"의 경험 카운트와 같은, 어드레스의 각종 속성도 어드레스에 연관하여 저장될 수 있다. 여기에 제시된 특징은 호스트의 논리 어드레스에 연관되지 않은 엔트리를 포함하게 액세스 테이블을 확장하는데, 메모리가 자유 블록 리스트에 들어맞게 하기에는 너무 많은 예비 블록을 갖는다면, 시스템은 과잉의 예비 블록을 위한 플레이스홀더들로 사용될 추가의 GAT 엔트리들를 생성한다. 개략적으로 이것은 가외의 용량을 호스트가 사용할 수 있게 함이 없이 더 큰 논리 용량으로 장치를 형식화하는 것과 마찬가지이며, 가외의 논리 용량을 위해 사전에 할당되는 블록은 호스트가 이들을 사용하지 않을 것이기 때문에, 예비들로 사용될 것이다.
어드레스 전환 테이블들을 사용하는 시스템에 더 일반적으로 적용할 수 있을지라도, 여기에서 논의는 모두 본원과 동시에 출원된 것들로서, 미국 특허 출원: Gorobets, Sergey A. 등에 의한 "WEAR LEVLING FOR NON-VOLATILE MEMORIES: MAINTENANCE OF EXPERIENCE COUNT AND PASSIVE TECHNIQUES"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY AND METHOD WITH WRITE CACHE PARTITIONING"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY WITH WRITE CACHE HAVING FLUSH/EVICTION METHODS"; Paley, Alexander 등에 의한 "NONVOLATILE MEMORY WITH WRITE CACHE PARTITION MANAGEMENT METHODS"; 및 Gorobets, Sergey A. 등에 의한 "MAPPING ADDRESS TABLE MAINTENANCE IN A MEMORY DEVICE"; 및 Gorobets, Sergey A. 등에 의한 가특허 출원 "NONVOLATILE MEMORY AND METHOD WITH IMPROVED BLOCK MANAGEMENT SYSTEM"의 실시예에 기초할 것이다. 그룹 액세스 테이블(GAT)은 각 논리 그룹에 대해서, 호스트 데이터를 위한 논리 어드레스 및 호스트의 논리 어드레스들에 연관되지 않은 블록을위한 확장된 논리 어드레스 공간 둘 다의 엔트리를 가진 룩업 테이블이다. 각각의 GAT 엔트리는 엔트리에 대한 메타-블록 (물리) 어드레스, 및, 실시예에 따라, 핫 카운트, 1-비트 시간 스탬프, 및 등등을 포함할 수 있는 연관된 속성을 저장한다. GAT는 인접한 한 세트의 논리 그룹들에 대한 엔트리를 유지하는 GAT 페이지로 제어 블록 내 비휘발성 메모리에 저장된다. GAT의 부분들은 비휘발성 메모리에 대한 판독 횟수를 줄이기 위해서 제어기의 SRAM 메모리에 캐시될 수 있다. 각 논리 그룹에 대해 GAT에는 호스트에 연관된 논리 어드레스 및 예비 블록을 위한 확장된 논리 공간 둘 다의 한 엔트리가 있다. 예비 블록에 대해 이 확장된 부분을 예비 GAT 또는 SGAT이라 칭할 수 있다.
메모리 관리층은 확장된 SGAT 부분을 포함하여 GAT에 관계된 각종의 작업들을 처리할 것이다. GAT의 비확장 부분에 대해서, 이것은 비휘발성 메모리 상에 GAT 페이지들의 제어 및 관리와 같은 다양한 제어 및 매핑 동작, 그리고 GAT 사용에 관계된 여러 캐시 메커니즘들을 포함할 것이다. SGAT에 대해서, 이것은 GAT 엔트리를 형성하는 할당되지 않은 메타블록을 관리하는 것 및 위에 언급된 자유 블록 교환 루틴을 공급하는 것을 포함할 것이다. SGAT 페이지는 페이지 리스트 인덱스 내 표준 GAT 페이지 바로 다음에 위치될 수 있다. 앞에서 논의된 바와 같이, 자유 블록 교환 루틴은 필요한 할당되지 않은 메타-블록을 SGAT 페이지로부터 취하여 필요한 자유 블록으로 이들을 교체할 것이다. 전부 또는 부분, 이를테면 자유 블록의 어떤 최소를 넘는 임의의 과잉의 부분은 SGAT에서 유지관리될 수 있다.
도 23은 GAT 구조를 개략적으로 도시한 것이다. GAT(2301)는 여기에서는 일반적인 부분(2303)과 SGAT 부분(2305)으로서 구성된다. 각각의 엔트리는 논리 어드레스(2311), 연관된 물리 어드레스(2313), 및 연관된 속성들(2215)을 포함한다. 부분(2305) 내 엔트리는 호스트로부터 논리 어드레스들에 대응한다. SGAT 부분(2305) 내 엔트리는 호스트에 이출되지 않으며 호스트가 이용할 수 없는 논리 어드레스를 위한 것이 될 것이며, 대응하는 물리 어드레스 엔트리는 예비 블록의 물리 어드레스 엔트리들이다. SGAT 엔트리를 위한 논리 어드레스 공간은 메모리 시스템 밖으로부터 호스트에 의해 보여지는 어드레스 범위의 값 다음의 값부터 시작할 것이다. (호스트의) 논리 어드레스들에 기초하여 블록이 호스트 데이터에 할당 또는 할당이 해제될 때, 이들은 SGAT 섹션(2305) 전의 일반 부분(2303)에 넣어질 것이다. 결국, 이 구성은 특히 이들의 수가 자유 및/또는 예비 블록 리스트 내 할당된 저장 슬롯의 수를 초과할 때, 자유 블록에 대한 편리된 저장 메커니즘을 제공한다.
결론
발명이 특정 실시예에 관련하여 기술되었을지라도, 설명은 발명의 적용의 예일 뿐이며 제한으로서 취해지지 않아야 한다. 결국, 개시된 실시예의 특징의 다양한 변형예와 조합은 다음 청구항에 의해 포함되는 발명의 범위 내에 있다.

Claims (48)

  1. 비휘발성 메모리 시스템에 있어서,
    각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로와,
    상기 비휘발성 메모리 회로와 상기 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를
    포함하고,
    상기 복수의 소거 블록은 논리 어드레스에 의해 확인된 호스트 공급 데이터를 저장하고 시스템 데이터 및 제 1 복수의 블록 중 불능이 된 블록을 보상하기 위한 하나 이상의 예비 블록을 저장하기 위해 사용되는 제 1 복수의 블록을 포함하고, 상기 제어기 회로는 호스트 공급 데이터를 포함하는 블록에 대한 엔트리와 예비 블록에 대한 엔트리를 유지하는 논리 대 물리 어드레스 변환 테이블을 유지하고,
    상기 호스트 공급 데이터를 포함하는 블록에 대한 엔트리는 상기 호스트 공급 데이터를 포함하는 블록에 상기 호스트가 데이터를 확인하는 대응하는 논리 어드레스를 할당하고, 상기 예비 블록에 대한 엔트리는 예비 블록에 상기 호스트가 알고 있는 논리 어드레스 공간을 초과하는 논리 어드레스를 할당하는, 비휘발성 메모리 시스템.
  2. 제 1항에 있어서, 상기 호스트 공급 데이터를 포함하는 블록에 대한 엔트리는 상기 호스트 공급 데이터를 포함하는 블록에 연관된 속성을 더 유지하고, 상기 예비 블록에 대한 엔트리는 상기 예비 블록에 연관된 속성을 더 유지하는, 비휘발성 메모리 시스템.
  3. 제 2항에 있어서, 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록에 연관된 속성은 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록의 각각의 경험 카운트를 포함하는, 비휘발성 메모리 시스템.
  4. 제 2항에 있어서, 상기 예비 블록에 대한 연관된 속성은 1비트 시간 스탬프를 포함하는, 비휘발성 메모리 시스템.
  5. 제 1항에 있어서, 상기 제어기 회로는 메모리 블록을 복합 다중-블록 구조로 형성하고 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록에 대한 엔트리는 상기 복합 다중-블록 구조를 위한, 비휘발성 메모리 시스템.
  6. 제 1항에 있어서, 상기 예비 블록에 대한 엔트리는 상기 비휘발성 메모리 시스템 내 모든 상기 예비 블록 중 일부에 대한 것인, 비휘발성 메모리 시스템.
  7. 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로와, 상기 비휘발성 메모리 회로와 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를 갖는 비휘발성 메모리 시스템을 동작시키는 방법에 있어서,
    논리 어드레스에 의해 확인된 호스트 공급 데이터를 저장하고 시스템 데이터를 저장하기 위해 상기 복수의 소거 블록 중 제 1 복수의 블록을 사용하는 단계와,
    상기 제 1 복수의 블록 중 불능이 된 블록을 보상하기 위해 하나 이상의 예비 블록을 사용하는 단계와,
    호스트 공급 데이터를 포함하는 블록에 대한 엔트리와 예비 블록에 대한 엔트리를 유지하는 논리 대 물리 어드레스 변환 테이블을 상기 제어기 회로에 의해 유지하는 단계로서, 상기 유지하는 단계는,
    상기 호스트 공급 데이터를 포함하는 블록에 대한 엔트리에 상기 호스트가 데이터를 확인하는 대응하는 논리 어드레스를 할당하는 단계와,
    상기 호스트가 알고 있는 논리 어드레스 공간을 초과하는 논리 어드레스를 상기 예비 블록에 대한 엔트리에 할당하는 단계를
    포함하는, 상기 유지하는 단계를
    포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  8. 제 7항에 있어서, 상기 호스트 공급 데이터를 포함하는 블록에 대한 엔트리는 상기 호스트 공급 데이터를 포함하는 블록에 연관된 속성을 더 유지하고, 상기 예비 블록에 대한 엔트리는 상기 예비 블록에 연관된 속성을 더 유지하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  9. 제 7항에 있어서, 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록에 연관된 속성은 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록의 각각의 경험 카운트를 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  10. 제 8항에 있어서, 상기 예비 블록에 연관된 속성은 1 비트 시간 스탬프를 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  11. 제 7항에 있어서, 상기 제어기 회로는 메모리 블록을 복합 다중-블록 구조로 형성하고 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록에 대한 엔트리는 상기 복합 다중-블록 구조를 위한, 비휘발성 메모리 시스템을 동작시키는 방법.
  12. 제 7항에 있어서, 상기 예비 블록에 대한 엔트리는 상기 비휘발성 메모리 시스템 내 모든 상기 예비 블록 중 일부에 대한 것인, 비휘발성 메모리 시스템을 동작시키는 방법.
  13. 비휘발성 메모리 시스템에 있어서,
    각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로로서, 상기 소거 블록은 제 1 및 제 2 모드에서 동작하며, 상기 제 1 모드는 상기 제 2 모드보다 더 큰 내구성을 갖는, 비휘발성 메모리 회로와,
    상기 비휘발성 메모리 회로와 상기 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터의 전송 및 상기 비휘발성 메모리 회로에 저장된 데이터의 관리를 제어하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로로서, 상기 비휘발성 메모리 회로는 상기 제 1 모드에 따라 동작되는 제 1 섹션의 블록 및 상기 제 2 모드에 따라 동작되는 제 2 섹션의 블록으로 분할되고, 상기 제 2 섹션은 초기에는 상기 제 2 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하고, 상기 제어기 회로는 상기 제 2 섹션으로부터 예비 블록을 상기 제 1 섹션을 위한 예비 블록이 되도록 재할당할 수 있는, 상기 제어기 회로를
    포함하는, 비휘발성 메모리 시스템.
  14. 제 13항에 있어서, 상기 제 1 모드는 바이너리 모드에서 상기 메모리 셀을 동작시키고 상기 제 2 모드는 다중-레벨 모드에서 상기 메모리 셀을 동작시키는, 비휘발성 메모리 시스템.
  15. 제 13항에 있어서, 제 1 섹션으로 상기 비휘발성 메모리 회로의 비-예비 블록의 분할은 고정된, 비휘발성 메모리 시스템.
  16. 제 13항에 있어서, 제 1 섹션으로 상기 비휘발성 메모리 회로의 비-예비 블록의 분할은 가변적인, 비휘발성 메모리 시스템.
  17. 제 13항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 비휘발성 메모리 시스템.
  18. 제 17항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나의 예비 블록을 포함하는, 비휘발성 메모리 시스템.
  19. 제 13항에 있어서, 상기 제어기 회로는 상기 제 1 섹션을 위한 예비 블록이 되도록 상기 제 2 섹션으로부터 예비 블록을 재할당하는, 비휘발성 메모리 시스템.
  20. 제 13항에 있어서, 상기 제어기 회로는 상기 제 2 섹션을 위한 예비 블록이 되도록 상기 제 1 섹션으로부터 예비 블록을 재할당하지 않는, 비휘발성 메모리 시스템.
  21. 제 13항에 있어서, 상기 제 1 섹션은 사용자 데이터를 저장하기 위해 사용되고 상기 제 2 섹션은 시스템 데이터를 저장하기 위해 사용되는, 비휘발성 메모리 시스템.
  22. 제 13항에 있어서, 상기 제 2 섹션은 상기 제 1 섹션에 저장된 데이터를 위한 캐시 메모리로 사용되는, 비휘발성 메모리 시스템.
  23. 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로, 및 상기 비휘발성 메모리 회로와 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터 전송을 제어하며 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를 포함하는 비휘발성 메모리 시스템을 동작시키는 방법에 있어서,
    상기 비휘발성 메모리 회로를 제 1 섹션의 블록 및 제 2 섹션의 블록으로 분할하는 단계로서, 상기 제 2 섹션은 초기에는 상기 제 2 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 단계와,
    상기 제 1 섹션의 상기 블록을 제 1 모드에 따라 동작시키는 단계와,
    상기 제 2 섹션의 상기 블록을 제 2 모드에 따라 동작시키는 단계로서, 상기 제 1 모드는 상기 제 2 모드보다 큰 내구성을 갖는, 단계와,
    상기 제 2 섹션으로부터 예비 블록을 상기 제 1 섹션을 위한 예비 블록이 되도록 재할당하는 단계를
    포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  24. 제 23항에 있어서, 상기 제 1 모드는 상기 메모리 셀을 바이너리 모드에서 동작시키고, 상기 제 2 모드는 상기 메모리 셀을 다중-레벨 모드에서 동작시키는, 비휘발성 메모리 시스템을 동작시키는 방법.
  25. 제 23항에 있어서, 제 1 섹션으로 상기 비휘발성 메모리 회로의 비-예비 블록의 분할은 고정된, 비휘발성 메모리 시스템을 동작시키는 방법.
  26. 제 23항에 있어서, 제 1 섹션으로 상기 비휘발성 메모리 회로의 비-예비 블록의 분할은 가변적인, 비휘발성 메모리 시스템을 동작시키는 방법.
  27. 제 23항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  28. 제 27항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나의 예비 블록을 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  29. 제 23항에 있어서, 상기 제어기 회로는 상기 제 1 섹션을 위한 예비 블록이 되도록 상기 제 2 섹션으로부터 예비 블록을 재할당하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  30. 제 23항에 있어서, 상기 제어기 회로는 상기 제 2 섹션을 위한 예비 블록이 되도록 상기 제 1 섹션으로부터 예비 블록을 재할당하지 않는, 비휘발성 메모리 시스템을 동작시키는 방법.
  31. 제 23항에 있어서, 상기 제 1 섹션은 사용자 데이터를 저장하기 위해 사용되며 상기 제 2 섹션은 시스템 데이터를 저장하기 위해 사용되는, 비휘발성 메모리 시스템을 동작시키는 방법.
  32. 제 23항에 있어서, 상기 제 2 섹션은 상기 제 1 섹션에 저장된 데이터를 위한 캐시 메모리로 사용되는, 비휘발성 메모리 시스템을 동작시키는 방법.
  33. 비휘발성 메모리 시스템에 있어서,
    각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로로서, 상기 소거 블록은 제 1 및 제 2 모드에서 동작하고, 상기 제 1 모드는 상기 제 2 모드보다 더 큰 내구성을 갖는, 비휘발성 메모리 회로와,
    상기 비휘발성 메모리 회로와 상기 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터의 전송 및 상기 비휘발성 메모리 회로에 저장된 데이터의 관리를 제어하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로로서, 상기 비휘발성 메모리 회로는 상기 제 1 모드에 따라 동작되는 제 1 섹션의 블록 및 상기 제 2 모드에 따라 동작되는 제 2 섹션의 블록으로 분할되며, 상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정한 것에 응하여, 상기 제어기 회로는 상기 제 1 섹션에서 결함 블록을 대체하기 위해 사용될 수 있고 상기 제 1 모드에 따라 동작되는 예비 블록이 되도록 상기 판정된 블록을 상기 제 1 섹션에 재할당할 수 있는, 제어기 회로를
    포함하는, 비휘발성 메모리 시스템.
  34. 제 33항에 있어서, 상기 제 1 모드는 바이너리 모드에서 상기 메모리 셀을 동작시키고 상기 제 2 모드는 다중-레벨 모드에서 상기 메모리 셀을 동작시키는, 비휘발성 메모리 시스템.
  35. 제 33항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 비휘발성 메모리 시스템.
  36. 제 33항에 있어서, 상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정한 것에 이어서, 그리고 상기 판정된 블록을 예비 블록이 되도록 상기 제 1 섹션에 재할당하기 전에, 상기 제어기 회로는 상기 제 2 모드에서 동작될 때 결함이 있는 것으로 판정된 상기 블록도 상기 제 1 모드에서 동작될 때 결함이 있는지 판정하는, 비휘발성 메모리 시스템.
  37. 제 33항에 있어서, 상기 제어기 회로는 상기 판정된 블록을 상기 제 2 모드에서 동작될 때 장애 모드에 기초하여 재할당할지를 판정하는, 비휘발성 메모리 시스템.
  38. 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로, 및 상기 비휘발성 메모리 회로와 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를 포함하는 비휘발성 메모리 시스템을 동작시키는 방법에 있어서,
    상기 비휘발성 메모리 회로를 제 1 섹션의 블록 및 제 2 섹션의 블록으로 분할하는 단계와,
    상기 제 1 섹션의 상기 블록을 제 1 모드에 따라 동작시키는 단계와,
    상기 제 2 섹션의 상기 블록을 제 2 모드에 따라 동작시키는 단계로서, 상기 제 1 모드는 상기 제 2 모드보다 큰 내구성을 갖는, 단계와,
    상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정하는 단계와,
    상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정한 것에 응하여, 상기 제 1 섹션에서 결함 블록을 대체하기 위해 사용될 수 있고 상기 제 1 모드에 따라 동작되는 예비 블록이 되도록 상기 판정된 블록을 상기 제 1 섹션에 재할당하는 단계를
    포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  39. 제 38항에 있어서, 상기 제 1 모드는 바이너리 모드에서 상기 메모리 셀을 동작시키며 상기 제 2 모드는 다중-레벨 모드에서 상기 메모리 셀을 동작시키는, 비휘발성 메모리 시스템을 동작시키는 방법.
  40. 제 38항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  41. 제 38항에 있어서, 상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정한 것에 이어서, 그리고 상기 판정된 블록을 예비 블록이 되도록 상기 제 1 섹션에 재할당하기 전에, 상기 제 2 모드에서 동작될 때 결함이 있는 것으로 판정된 상기 블록도 상기 제 1 모드에서 동작될 때 결함이 있는지를 상기 제어기 회로에 의해 판정하는 단계를 더 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  42. 제 38항에 있어서, 상기 제어기 회로는 상기 판정된 블록을 상기 제 2 모드에서 동작될 때 장애 모드에 기초하여 재할당할지를 판정하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  43. 비휘발성 메모리 시스템에 있어서,
    각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로로서, 상기 비휘발성 메모리 회로는 데이터 저장 부분 및 오버헤드 저장 부분을 포함하고, 상기 오버헤드는 1 비트 시간 스탬프를 포함하는, 비휘발성 메모리 회로와,
    상기 비휘발성 메모리 회로와 상기 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터의 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로로서, 상기 제어기 회로는 각각의 할당되지 않은 블록에 대한 1비트 시간 스탬프를 포함하는 할당되지 않은 블록에 대한 제어 구조를 유지관리하는, 제어기 회로를
    포함하고,
    주어진 블록의 오버헤드 내 상기 시간 스탬프의 비트의 값은 상기 블록이 소거 동작이 행해지는 것에 응하여 토글(toggle)되고, 상기 할당되지 않은 블록에 대한 상기 제어 구조 내 상기 시간 스탬프의 상기 값은 할당되지 않은 블록에 대한 상기 제어 구조에 대응하는 블록이 넣어질 때 상기 대응하는 블록의 오버헤드에 상기 시간 스탬프의 값으로 설정되며,
    초기화 프로세스 동안에, 상기 제어기 회로는 상기 할당되지 않은 블록의 상기 오버헤드 내 상기 시간 스탬프의 값을 상기 각각의 할당되지 않은 블록에 대한 상기 제어 구조 내 대응하는 시간 스탬프의 값과 비교를 수행하는, 비휘발성 메모리 시스템.
  44. 제 43항에 있어서, 상기 제어기 회로는 상기 비휘발성 메모리 회로 내 상기 제어 구조의 카피를 유지하는, 비휘발성 메모리 시스템.
  45. 제 44항에 있어서, 상기 비교에 기초하여, 상기 제어기 회로는 상기 비휘발성 메모리 회로 내 유지된 상기 제어 구조의 카피의 마지막 업데이트 이후에 할당되지 않은 블록에 대한 상기 제어 구조에 넣어진 블록 중 어느 것이 기록되었는지를 판정하는, 비휘발성 메모리 시스템.
  46. 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로, 데이터 저장 부분과 오버헤드 저장 부분을 포함하는 메모리 블록, 및 상기 비휘발성 메모리 회로와 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터의 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를 갖는 비휘발성 메모리 시스템을 동작시키는 방법에 있어서,
    상기 메모리 블록의 상기 오버헤드에 1 비트 시간 스탬프를 유지하는 단계와,
    각각의 할당되지 않은 블록에 대한 1 비트 시간 스탬프를 포함하는 할당되지 않은 블록에 대한 제어 구조를 상기 제어기 회로에 의해 유지하는 단계와,
    상기 소거 블록이 소거 동작이 행해지는 것에 응하여, 주어진 블록의 오버헤드 내 상기 시간 스탬프의 비트의 값을 토글링하는 단계와,
    상기 할당되지 않은 블록에 대한 상기 제어 구조 내 상기 시간 스탬프의 상기 값을, 할당되지 않은 블록에 대한 상기 제어 구조에 대응하는 블록이 넣어질 때, 상기 대응하는 블록의 오버헤드에 상기 시간 스탬프의 값으로 설정하는 단계와,
    상기 제어기 회로가 상기 할당되지 않은 블록의 상기 오버헤드 내 상기 시간 스탬프의 값을 상기 각각의 할당되지 않은 블록에 대한 상기 제어 구조 내 대응하는 시간 스탬프의 값과 비교를 수행하는 것을 포함하는, 초기화 프로세스를 수행하는 단계를
    포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  47. 제 46항에 있어서, 상기 제어기 회로는 상기 제어 구조의 카피를 상기 비휘발성 메모리 회로 내 유지하는 단계를 더 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
  48. 제 47항에 있어서, 상기 비교에 기초하여, 상기 제어기 회로는 상기 비휘발성 메모리 회로 내 유지된 상기 제어 구조의 카피의 마지막 업데이트 이후에 할당되지 않은 블록에 대한 상기 제어 구조에 넣어진 블록 중 어느 것이 기록되는지를 판정하는 단계를 더 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
KR1020117015517A 2009-01-05 2010-01-04 비휘발성 메모리에서 예비 블록 관리 방법 KR101584048B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/348,825 US8040744B2 (en) 2009-01-05 2009-01-05 Spare block management of non-volatile memories
US12/348,825 2009-01-05

Publications (2)

Publication Number Publication Date
KR20110121678A KR20110121678A (ko) 2011-11-08
KR101584048B1 true KR101584048B1 (ko) 2016-01-13

Family

ID=41806273

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117015517A KR101584048B1 (ko) 2009-01-05 2010-01-04 비휘발성 메모리에서 예비 블록 관리 방법

Country Status (4)

Country Link
US (1) US8040744B2 (ko)
EP (1) EP2374134B1 (ko)
KR (1) KR101584048B1 (ko)
WO (1) WO2010078540A2 (ko)

Families Citing this family (263)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
CN103208309B (zh) 2006-05-12 2016-03-09 苹果公司 存储设备中的失真估计和消除
WO2007132456A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009063450A2 (en) 2007-11-13 2009-05-22 Anobit Technologies Optimized selection of memory units in multi-unit memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8453022B2 (en) 2007-12-05 2013-05-28 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8122179B2 (en) * 2007-12-14 2012-02-21 Silicon Motion, Inc. Memory apparatus and method of evenly using the blocks of a flash memory
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8493783B2 (en) 2008-03-18 2013-07-23 Apple Inc. Memory device readout using multiple sense times
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8891298B2 (en) * 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
IT1392921B1 (it) * 2009-02-11 2012-04-02 St Microelectronics Srl Regioni allocabili dinamicamente in memorie non volatili
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8102705B2 (en) * 2009-06-05 2012-01-24 Sandisk Technologies Inc. Structure and method for shuffling data within non-volatile memory devices
US8027195B2 (en) * 2009-06-05 2011-09-27 SanDisk Technologies, Inc. Folding data stored in binary format into multi-state format within non-volatile memory devices
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
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
US8724401B2 (en) * 2009-09-29 2014-05-13 Seagate Technology Llc Data stripes and addressing for flash memory devices
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
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
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
US8407434B2 (en) * 2009-11-13 2013-03-26 Microsoft Corporation Sequentially written journal in a data store
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US9092340B2 (en) * 2009-12-18 2015-07-28 Sandisk Technologies Inc. Method and system for achieving die parallelism through block interleaving
US8144512B2 (en) * 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8443153B1 (en) 2010-01-06 2013-05-14 Netapp, Inc. Dynamic balancing of performance with block sharing in a storage system
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US9021177B2 (en) * 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US9083708B2 (en) * 2010-05-17 2015-07-14 Microsoft Technology Licensing, Llc Asymmetric end host redundancy elimination for networks
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8468431B2 (en) 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8305807B2 (en) 2010-07-09 2012-11-06 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US8432732B2 (en) 2010-07-09 2013-04-30 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays
US8514630B2 (en) 2010-07-09 2013-08-20 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays: current based approach
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8397018B2 (en) * 2010-07-30 2013-03-12 Sandisk Technologies Inc. Systems and methods for implementing a programming sequence to enhance die interleave
KR20130110153A (ko) * 2010-07-30 2013-10-08 샌디스크 테크놀로지스, 인코포레이티드 다이 인터리브를 향상시키기 위해 프로그래밍 시퀀스를 구현하기 위한 시스템들 및 방법들
US8645794B1 (en) 2010-07-31 2014-02-04 Apple Inc. Data storage in analog memory cells using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8493781B1 (en) 2010-08-12 2013-07-23 Apple Inc. Interference mitigation using individual word line erasure operations
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
KR20120036123A (ko) * 2010-10-07 2012-04-17 삼성전자주식회사 비휘발성 메모리 장치
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US9003153B2 (en) 2010-11-08 2015-04-07 Greenliant Llc Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
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
US8472280B2 (en) 2010-12-21 2013-06-25 Sandisk Technologies Inc. Alternate page by page programming scheme
US8886990B2 (en) 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
US8631294B2 (en) * 2011-02-02 2014-01-14 Seagate Technology Llc Methods and devices to increase memory device data reliability
US8909850B2 (en) * 2011-03-10 2014-12-09 Deere & Company Memory life extension method and apparatus
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
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
US8732518B2 (en) * 2011-04-13 2014-05-20 Netapp, Inc. Reliability based data allocation and recovery in a storage system
US8379454B2 (en) 2011-05-05 2013-02-19 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
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
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US8886911B2 (en) * 2011-05-31 2014-11-11 Micron Technology, Inc. Dynamic memory cache size adjustment in a memory device
KR101792867B1 (ko) 2011-06-16 2017-11-02 삼성전자주식회사 멀티-레벨 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 동작 방법
US8432740B2 (en) 2011-07-21 2013-04-30 Sandisk Technologies Inc. Program algorithm with staircase waveform decomposed into multiple passes
US8750042B2 (en) 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US8726104B2 (en) 2011-07-28 2014-05-13 Sandisk Technologies Inc. Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
US8797806B2 (en) 2011-08-15 2014-08-05 Micron Technology, Inc. Apparatus and methods including source gates
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
CN103917964A (zh) * 2011-11-02 2014-07-09 国立大学法人东京大学 存储控制器和数据存储装置
US8593866B2 (en) * 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
KR101893145B1 (ko) 2011-12-06 2018-10-05 삼성전자주식회사 메모리 시스템들 및 그것들의 블록 복사 방법들
KR20130078973A (ko) * 2012-01-02 2013-07-10 삼성전자주식회사 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
US9239781B2 (en) * 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8730722B2 (en) 2012-03-02 2014-05-20 Sandisk Technologies Inc. Saving of data in cases of word-line to word-line short in memory arrays
US8842473B2 (en) 2012-03-15 2014-09-23 Sandisk Technologies Inc. Techniques for accessing column selecting shift register with skipped entries in non-volatile memories
US8995183B2 (en) 2012-04-23 2015-03-31 Sandisk Technologies Inc. Data retention in nonvolatile memory with multiple data storage formats
US8732391B2 (en) 2012-04-23 2014-05-20 Sandisk Technologies Inc. Obsolete block management for data retention in nonvolatile memory
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
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
US8953398B2 (en) 2012-06-19 2015-02-10 Sandisk Technologies Inc. Block level grading for reliability and yield improvement
KR102147359B1 (ko) * 2012-06-29 2020-08-24 삼성전자 주식회사 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
US10541029B2 (en) 2012-08-01 2020-01-21 Micron Technology, Inc. Partial block memory operations
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
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
US9164526B2 (en) 2012-09-27 2015-10-20 Sandisk Technologies Inc. Sigma delta over-sampling charge pump analog-to-digital converter
US9810723B2 (en) 2012-09-27 2017-11-07 Sandisk Technologies Llc Charge pump based over-sampling ADC for current detection
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
KR102025263B1 (ko) 2012-10-05 2019-09-25 삼성전자주식회사 메모리 시스템 및 그것의 읽기 교정 방법
US9318199B2 (en) * 2012-10-26 2016-04-19 Micron Technology, Inc. Partial page memory operations
US9754648B2 (en) 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9348746B2 (en) * 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8656255B1 (en) * 2013-03-15 2014-02-18 Avalanche Technology, Inc. Method for reducing effective raw bit error rate in multi-level cell NAND flash memory
US9734097B2 (en) 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
KR20140142035A (ko) * 2013-06-03 2014-12-11 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작방법
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
KR102054272B1 (ko) * 2013-06-18 2019-12-10 에스케이하이닉스 주식회사 칩 테스터, 그것을 포함하는 테스트 시스템, 그리고 그것의 테스트 방법
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9455048B2 (en) 2013-06-28 2016-09-27 Sandisk Technologies Llc NAND flash word line management using multiple fragment pools
US9483397B2 (en) * 2013-07-16 2016-11-01 Intel Corporation Erase management in memory systems
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
CN104346288B (zh) 2013-08-05 2017-07-28 慧荣科技股份有限公司 用来管理一记忆装置的方法以及记忆装置与控制器
TWI502591B (zh) * 2013-08-05 2015-10-01 Silicon Motion Inc 用來管理一記憶裝置之方法以及記憶裝置與控制器
CN104346292B (zh) 2013-08-05 2017-10-24 慧荣科技股份有限公司 用来管理一记忆装置的方法、记忆装置与控制器
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
US9965199B2 (en) * 2013-08-22 2018-05-08 Sandisk Technologies Llc Smart dynamic wear balancing between memory pools
US20150074489A1 (en) * 2013-09-06 2015-03-12 Kabushiki Kaisha Toshiba Semiconductor storage device and memory system
US9165683B2 (en) 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
US9336129B2 (en) 2013-10-02 2016-05-10 Sandisk Technologies Inc. System and method for bank logical data remapping
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
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9786388B1 (en) 2013-10-09 2017-10-10 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
KR102140512B1 (ko) 2013-10-16 2020-08-03 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
KR102116258B1 (ko) 2013-12-24 2020-06-05 삼성전자주식회사 메모리 시스템 및 그것을 포함하는 유저 장치
US9460815B2 (en) * 2013-12-30 2016-10-04 Sandisk Technologies Llc Reusing partial bad blocks in NAND memory
KR102067014B1 (ko) * 2014-01-06 2020-02-11 삼성전자주식회사 어드레스 리매핑이 가능한 메모리 시스템
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
US9582205B2 (en) * 2014-04-17 2017-02-28 Sandisk Technologies Llc Protection scheme with dual programming of a memory system
US10365835B2 (en) * 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9389973B2 (en) * 2014-05-30 2016-07-12 Oracle International Corporation Memory error propagation for faster error recovery
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9632712B2 (en) * 2014-07-02 2017-04-25 Sandisk Technologies Llc System and method of updating metablocks associated with multiple memory dies
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9514835B2 (en) 2014-07-10 2016-12-06 Sandisk Technologies Llc Determination of word line to word line shorts between adjacent blocks
US9443612B2 (en) 2014-07-10 2016-09-13 Sandisk Technologies Llc Determination of bit line to low voltage signal shorts
US9484086B2 (en) 2014-07-10 2016-11-01 Sandisk Technologies Llc Determination of word line to local source line shorts
US9460809B2 (en) 2014-07-10 2016-10-04 Sandisk Technologies Llc AC stress mode to screen out word line to word line shorts
US9240249B1 (en) 2014-09-02 2016-01-19 Sandisk Technologies Inc. AC stress methods to screen out bit line defects
US9202593B1 (en) 2014-09-02 2015-12-01 Sandisk Technologies Inc. Techniques for detecting broken word lines in non-volatile memories
US9449694B2 (en) 2014-09-04 2016-09-20 Sandisk Technologies Llc Non-volatile memory with multi-word line select for defect detection operations
US9542118B1 (en) * 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9582358B2 (en) * 2014-09-30 2017-02-28 Sandisk Technologies Llc Initialization scheme during dual programming of a memory system
CN104391804B (zh) * 2014-10-28 2017-11-28 陕西千山航空电子有限责任公司 一种nand flash数据存储方法
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
KR102250423B1 (ko) 2015-01-13 2021-05-12 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
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
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US10008250B2 (en) * 2015-03-27 2018-06-26 Intel Corporation Single level cell write buffering for multiple level cell non-volatile memory
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US10289327B2 (en) 2015-06-05 2019-05-14 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
US9875053B2 (en) 2015-06-05 2018-01-23 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
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
US9659666B2 (en) 2015-08-31 2017-05-23 Sandisk Technologies Llc Dynamic memory recovery at the sub-block level
US9570160B1 (en) * 2015-10-29 2017-02-14 Sandisk Technologies Llc Non-volatile storage system with defect detetction and early programming termination
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10002073B2 (en) * 2015-11-06 2018-06-19 SK Hynix Inc. Selective data recycling in non-volatile memory
US10296238B2 (en) 2015-12-18 2019-05-21 Intel Corporation Technologies for contemporaneous access of non-volatile and volatile memory in a memory device
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US9698676B1 (en) 2016-03-11 2017-07-04 Sandisk Technologies Llc Charge pump based over-sampling with uniform step size for current detection
KR102536945B1 (ko) 2016-08-30 2023-05-25 삼성전자주식회사 영상 표시 장치 및 그 동작방법
US20180095788A1 (en) * 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
US9767914B1 (en) 2016-10-10 2017-09-19 Wingyu Leung Durable maintenance of memory cell electric current sense window following program-erase operations to a non-volatile memory
CN106951186B (zh) * 2017-03-07 2020-02-07 合肥兆芯电子有限公司 数据程序化方法、存储器存储装置及存储器控制电路单元
US11475274B2 (en) * 2017-04-21 2022-10-18 International Business Machines Corporation Parameter criticality-aware resilience
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10977182B2 (en) * 2017-12-01 2021-04-13 Micron Technology, Inc. Logical block mapping based on an offset
US11436154B2 (en) 2017-12-01 2022-09-06 Micron Technology, Inc. Logical block mapping based on an offset
TWI722269B (zh) * 2018-01-26 2021-03-21 和碩聯合科技股份有限公司 韌體更新方法及使用此方法的電子裝置
US11055167B2 (en) * 2018-05-14 2021-07-06 Micron Technology, Inc. Channel-scope proximity disturb and defect remapping scheme for non-volatile memory
US10838831B2 (en) * 2018-05-14 2020-11-17 Micron Technology, Inc. Die-scope proximity disturb and defect remapping scheme for non-volatile memory
US10713158B2 (en) 2018-06-28 2020-07-14 Western Digital Technologies, Inc. Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring
CN110888593B (zh) 2018-09-07 2024-01-26 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110888591B (zh) * 2018-09-07 2023-05-30 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110888820B (zh) * 2018-09-07 2022-01-25 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
KR102653845B1 (ko) * 2018-12-03 2024-04-02 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10726936B2 (en) * 2018-12-20 2020-07-28 Micron Technology, Inc. Bad block management for memory sub-systems
TWI718516B (zh) * 2019-04-01 2021-02-11 慧榮科技股份有限公司 用於快閃記憶體中保護已抹除區塊的寫入管理機制
US10872678B1 (en) 2019-06-19 2020-12-22 Micron Technology, Inc. Speculative section selection within a memory device
US11182089B2 (en) 2019-07-01 2021-11-23 International Business Machines.Corporation Adapting memory block pool sizes using hybrid controllers
US11023150B2 (en) * 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
US10902929B1 (en) * 2019-08-29 2021-01-26 Micron Technology, Inc. Zone swapping for wear leveling memory
KR20220133003A (ko) * 2021-03-24 2022-10-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US20240256180A1 (en) * 2023-02-01 2024-08-01 Western Digital Technologies, Inc. Data Storage Device and Method for Host-Assisted Deferred Defragmentation and System Handling

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007517335A (ja) 2003-12-30 2007-06-28 サンディスク コーポレイション 不揮発性メモリおよびブロック管理システムを伴う方法
JP2007334852A (ja) 2005-11-30 2007-12-27 Sony Corp 記憶装置、コンピュータシステム、および記憶装置のアクセス方法
JP2009288150A (ja) 2008-05-30 2009-12-10 Otsuka Denshi Co Ltd 光学特性測定装置および光学特性測定方法

Family Cites Families (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59111370A (ja) 1982-12-16 1984-06-27 Seiko Instr & Electronics Ltd 不揮発性半導体メモリ
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
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
US5844842A (en) * 1989-02-06 1998-12-01 Hitachi, Ltd. Nonvolatile semiconductor memory device
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
EP0392895B1 (en) * 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
US5291440A (en) * 1990-07-30 1994-03-01 Nec Corporation Non-volatile programmable read only memory device having a plurality of memory cells each implemented by a memory transistor and a switching transistor stacked thereon
US5343063A (en) * 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5438573A (en) * 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5712180A (en) * 1992-01-14 1998-01-27 Sundisk Corporation EEPROM with split gate source side injection
US5313421A (en) * 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US5532962A (en) * 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) * 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JPH0750558B2 (ja) 1992-09-22 1995-05-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリ
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5555204A (en) * 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5640529A (en) * 1993-07-29 1997-06-17 Intel Corporation Method and system for performing clean-up of a solid state disk during host command execution
US5887145A (en) * 1993-09-01 1999-03-23 Sandisk Corporation Removable mother/daughter peripheral card
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
KR0140179B1 (ko) * 1994-12-19 1998-07-15 김광호 불휘발성 반도체 메모리
US5671388A (en) 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
JP3153730B2 (ja) * 1995-05-16 2001-04-09 株式会社東芝 不揮発性半導体記憶装置
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
US5930815A (en) * 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6081878A (en) * 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
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
KR100253868B1 (ko) 1995-11-13 2000-05-01 니시무로 타이죠 불휘발성 반도체기억장치
US5619448A (en) * 1996-03-14 1997-04-08 Myson Technology, Inc. Non-volatile memory device and apparatus for reading a non-volatile memory array
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
JP2833574B2 (ja) * 1996-03-28 1998-12-09 日本電気株式会社 不揮発性半導体記憶装置
JPH09330598A (ja) 1996-06-10 1997-12-22 Mitsubishi Electric Corp 記憶装置及びその特性劣化状態判定方法
US6335878B1 (en) * 1998-07-28 2002-01-01 Hitachi, Ltd. Non-volatile multi-level semiconductor flash memory device and method of driving same
US5768192A (en) * 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US5798968A (en) * 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5890192A (en) * 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5956473A (en) 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US6028794A (en) * 1997-01-17 2000-02-22 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device and erasing method of the same
US5928370A (en) * 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
KR100272037B1 (ko) 1997-02-27 2000-12-01 니시무로 타이죠 불휘발성 반도체 기억 장치
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US6768165B1 (en) * 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US5956743A (en) * 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
US5822251A (en) 1997-08-25 1998-10-13 Bit Microsystems, Inc. Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5851881A (en) 1997-10-06 1998-12-22 Taiwan Semiconductor Manufacturing Company, Ltd. Method of making monos flash memory for multi-level logic
US6034891A (en) 1997-12-01 2000-03-07 Micron Technology, Inc. Multi-state flash memory defect management
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6614070B1 (en) * 1998-04-16 2003-09-02 Cypress Semiconductor Corporation Semiconductor non-volatile memory device having a NAND cell structure
US6567302B2 (en) * 1998-12-29 2003-05-20 Micron Technology, Inc. Method and apparatus for programming multi-state cells in a memory device
US6281075B1 (en) * 1999-01-27 2001-08-28 Sandisk Corporation Method of controlling of floating gate oxide growth by use of an oxygen barrier
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6103573A (en) * 1999-06-30 2000-08-15 Sandisk Corporation Processing techniques for making a dual floating gate EEPROM cell array
US6151248A (en) 1999-06-30 2000-11-21 Sandisk Corporation Dual floating gate EEPROM cell array with steering gates shared by adjacent cells
JP3863330B2 (ja) * 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
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
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
US6345001B1 (en) * 2000-09-14 2002-02-05 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US7113432B2 (en) 2000-09-14 2006-09-26 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US6512263B1 (en) * 2000-09-22 2003-01-28 Sandisk Corporation Non-volatile memory cell array having discontinuous source and drain diffusions contacted by continuous bit line conductors and methods of forming
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
JP2002197878A (ja) * 2000-12-26 2002-07-12 Hitachi Ltd 半導体装置及びデータ処理システム
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP4282248B2 (ja) 2001-03-30 2009-06-17 株式会社東芝 半導体記憶装置
US7158517B2 (en) 2001-05-21 2007-01-02 Intel Corporation Method and apparatus for frame-based protocol processing
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash 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
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US6931480B2 (en) * 2001-08-30 2005-08-16 Micron Technology, Inc. Method and apparatus for refreshing memory to preserve data integrity
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6552932B1 (en) 2001-09-21 2003-04-22 Sandisk Corporation Segmented metal bitlines
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
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 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US6967872B2 (en) 2001-12-18 2005-11-22 Sandisk Corporation Method and system for programming and inhibiting multi-level, non-volatile memory cells
US6704228B2 (en) * 2001-12-28 2004-03-09 Samsung Electronics Co., Ltd Semiconductor memory device post-repair circuit and method
US6771536B2 (en) * 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US6781877B2 (en) * 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US7181611B2 (en) * 2002-10-28 2007-02-20 Sandisk Corporation Power management block for use in a non-volatile memory system
US7035967B2 (en) 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
CN100483552C (zh) 2002-10-28 2009-04-29 桑迪士克股份有限公司 在非易失性存储系统中执行自动磨损平衡的方法
US6829167B2 (en) 2002-12-12 2004-12-07 Sandisk Corporation Error recovery for nonvolatile memory
US6944063B2 (en) * 2003-01-28 2005-09-13 Sandisk Corporation Non-volatile semiconductor memory with large erase blocks storing cycle counts
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
WO2005029618A2 (en) * 2003-09-17 2005-03-31 Tiax Llc Electrochemical devices and components thereof
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
TW200523946A (en) * 2004-01-13 2005-07-16 Ali Corp Method for accessing a nonvolatile memory
US7057939B2 (en) * 2004-04-23 2006-06-06 Sandisk Corporation Non-volatile memory and control with improved partial page program capability
US20060053247A1 (en) * 2004-09-08 2006-03-09 Hugo Cheung Incremental erasing of flash memory to improve system performance
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7412560B2 (en) 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US7752382B2 (en) 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7400532B2 (en) * 2006-02-16 2008-07-15 Micron Technology, Inc. Programming method to reduce gate coupling interference for non-volatile memory
US7523013B2 (en) 2006-05-15 2009-04-21 Sandisk Corporation Methods of end of life calculation for non-volatile memories
US7711890B2 (en) 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
JP2008009527A (ja) * 2006-06-27 2008-01-17 Toshiba Corp メモリシステム
KR100858241B1 (ko) * 2006-10-25 2008-09-12 삼성전자주식회사 하이브리드 플래시 메모리 장치 및 그것의 가용 블록 할당방법
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
JP2008123330A (ja) * 2006-11-14 2008-05-29 Toshiba Corp 不揮発性半導体記憶装置
US7953954B2 (en) * 2007-01-26 2011-05-31 Micron Technology, Inc. Flash storage partial page caching
US7646636B2 (en) * 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
ITRM20070107A1 (it) * 2007-02-27 2008-08-28 Micron Technology Inc Sistema di inibizione di autoboost locale con linea di parole schermata
TW200841343A (en) 2007-04-02 2008-10-16 Apacer Technology Inc A data storage device consisting of NAND (Not-AND) flash memory and its data storing method
JP4746598B2 (ja) * 2007-09-28 2011-08-10 株式会社東芝 半導体記憶装置
US7813212B2 (en) * 2008-01-17 2010-10-12 Mosaid Technologies Incorporated Nonvolatile memory having non-power of two memory capacity
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8250333B2 (en) * 2009-01-05 2012-08-21 Sandisk Technologies Inc. Mapping address table maintenance in a memory device
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007517335A (ja) 2003-12-30 2007-06-28 サンディスク コーポレイション 不揮発性メモリおよびブロック管理システムを伴う方法
JP2007334852A (ja) 2005-11-30 2007-12-27 Sony Corp 記憶装置、コンピュータシステム、および記憶装置のアクセス方法
JP2009288150A (ja) 2008-05-30 2009-12-10 Otsuka Denshi Co Ltd 光学特性測定装置および光学特性測定方法

Also Published As

Publication number Publication date
WO2010078540A4 (en) 2010-10-14
US20100172179A1 (en) 2010-07-08
WO2010078540A2 (en) 2010-07-08
KR20110121678A (ko) 2011-11-08
EP2374134B1 (en) 2014-04-23
WO2010078540A3 (en) 2010-08-26
EP2374134A2 (en) 2011-10-12
US8040744B2 (en) 2011-10-18

Similar Documents

Publication Publication Date Title
KR101584048B1 (ko) 비휘발성 메모리에서 예비 블록 관리 방법
US8094500B2 (en) Non-volatile memory and method with write cache partitioning
US8244960B2 (en) Non-volatile memory and method with write cache partition management methods
US8700840B2 (en) Nonvolatile memory with write cache having flush/eviction methods
US8593866B2 (en) Systems and methods for operating multi-bank nonvolatile memory
JP4933269B2 (ja) 不揮発性メモリおよびメモリプレーン配列を伴う方法
EP2374063B1 (en) Non-volatile memory and method with write cache partitioning
US8543757B2 (en) Techniques of maintaining logical to physical mapping information in non-volatile memory systems
KR20140035916A (ko) 핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법
US9342446B2 (en) Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US20100318720A1 (en) Multi-Bank Non-Volatile Memory System with Satellite File System
US8995183B2 (en) Data retention in nonvolatile memory with multiple data storage formats

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
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: 20181226

Year of fee payment: 4