KR101584048B1 - 비휘발성 메모리에서 예비 블록 관리 방법 - Google Patents
비휘발성 메모리에서 예비 블록 관리 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel 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
이 발명은 일반적으로 비휘발성 플래시 메모리 시스템의 동작에 관한 것이고, 보다 구체적으로는, 특히 큰 메모리 셀 블록을 갖는 메모리 시스템에서, 메모리의 블록 또는 다른 부분의 사용을 관리하는 기술에 관한 것이다.
전하를 비휘발성으로 저장할 수 있는, 특히 소형 폼 팩터 카드로서 패키지되는 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은 확장된 논리 공간에 대한 액세스 테이블.
도 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항에 있어서, 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록에 연관된 속성은 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록의 각각의 경험 카운트를 포함하는, 비휘발성 메모리 시스템.
- 제 2항에 있어서, 상기 예비 블록에 대한 연관된 속성은 1비트 시간 스탬프를 포함하는, 비휘발성 메모리 시스템.
- 제 1항에 있어서, 상기 제어기 회로는 메모리 블록을 복합 다중-블록 구조로 형성하고 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록에 대한 엔트리는 상기 복합 다중-블록 구조를 위한, 비휘발성 메모리 시스템.
- 제 1항에 있어서, 상기 예비 블록에 대한 엔트리는 상기 비휘발성 메모리 시스템 내 모든 상기 예비 블록 중 일부에 대한 것인, 비휘발성 메모리 시스템.
- 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로와, 상기 비휘발성 메모리 회로와 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를 갖는 비휘발성 메모리 시스템을 동작시키는 방법에 있어서,
논리 어드레스에 의해 확인된 호스트 공급 데이터를 저장하고 시스템 데이터를 저장하기 위해 상기 복수의 소거 블록 중 제 1 복수의 블록을 사용하는 단계와,
상기 제 1 복수의 블록 중 불능이 된 블록을 보상하기 위해 하나 이상의 예비 블록을 사용하는 단계와,
호스트 공급 데이터를 포함하는 블록에 대한 엔트리와 예비 블록에 대한 엔트리를 유지하는 논리 대 물리 어드레스 변환 테이블을 상기 제어기 회로에 의해 유지하는 단계로서, 상기 유지하는 단계는,
상기 호스트 공급 데이터를 포함하는 블록에 대한 엔트리에 상기 호스트가 데이터를 확인하는 대응하는 논리 어드레스를 할당하는 단계와,
상기 호스트가 알고 있는 논리 어드레스 공간을 초과하는 논리 어드레스를 상기 예비 블록에 대한 엔트리에 할당하는 단계를
포함하는, 상기 유지하는 단계를
포함하는, 비휘발성 메모리 시스템을 동작시키는 방법. - 제 7항에 있어서, 상기 호스트 공급 데이터를 포함하는 블록에 대한 엔트리는 상기 호스트 공급 데이터를 포함하는 블록에 연관된 속성을 더 유지하고, 상기 예비 블록에 대한 엔트리는 상기 예비 블록에 연관된 속성을 더 유지하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 7항에 있어서, 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록에 연관된 속성은 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록의 각각의 경험 카운트를 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 8항에 있어서, 상기 예비 블록에 연관된 속성은 1 비트 시간 스탬프를 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 7항에 있어서, 상기 제어기 회로는 메모리 블록을 복합 다중-블록 구조로 형성하고 상기 호스트 공급 데이터를 포함하는 블록 및 예비 블록에 대한 엔트리는 상기 복합 다중-블록 구조를 위한, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 7항에 있어서, 상기 예비 블록에 대한 엔트리는 상기 비휘발성 메모리 시스템 내 모든 상기 예비 블록 중 일부에 대한 것인, 비휘발성 메모리 시스템을 동작시키는 방법.
- 비휘발성 메모리 시스템에 있어서,
각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로로서, 상기 소거 블록은 제 1 및 제 2 모드에서 동작하며, 상기 제 1 모드는 상기 제 2 모드보다 더 큰 내구성을 갖는, 비휘발성 메모리 회로와,
상기 비휘발성 메모리 회로와 상기 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터의 전송 및 상기 비휘발성 메모리 회로에 저장된 데이터의 관리를 제어하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로로서, 상기 비휘발성 메모리 회로는 상기 제 1 모드에 따라 동작되는 제 1 섹션의 블록 및 상기 제 2 모드에 따라 동작되는 제 2 섹션의 블록으로 분할되고, 상기 제 2 섹션은 초기에는 상기 제 2 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하고, 상기 제어기 회로는 상기 제 2 섹션으로부터 예비 블록을 상기 제 1 섹션을 위한 예비 블록이 되도록 재할당할 수 있는, 상기 제어기 회로를
포함하는, 비휘발성 메모리 시스템. - 제 13항에 있어서, 상기 제 1 모드는 바이너리 모드에서 상기 메모리 셀을 동작시키고 상기 제 2 모드는 다중-레벨 모드에서 상기 메모리 셀을 동작시키는, 비휘발성 메모리 시스템.
- 제 13항에 있어서, 제 1 섹션으로 상기 비휘발성 메모리 회로의 비-예비 블록의 분할은 고정된, 비휘발성 메모리 시스템.
- 제 13항에 있어서, 제 1 섹션으로 상기 비휘발성 메모리 회로의 비-예비 블록의 분할은 가변적인, 비휘발성 메모리 시스템.
- 제 13항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 비휘발성 메모리 시스템.
- 제 17항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나의 예비 블록을 포함하는, 비휘발성 메모리 시스템.
- 제 13항에 있어서, 상기 제어기 회로는 상기 제 1 섹션을 위한 예비 블록이 되도록 상기 제 2 섹션으로부터 예비 블록을 재할당하는, 비휘발성 메모리 시스템.
- 제 13항에 있어서, 상기 제어기 회로는 상기 제 2 섹션을 위한 예비 블록이 되도록 상기 제 1 섹션으로부터 예비 블록을 재할당하지 않는, 비휘발성 메모리 시스템.
- 제 13항에 있어서, 상기 제 1 섹션은 사용자 데이터를 저장하기 위해 사용되고 상기 제 2 섹션은 시스템 데이터를 저장하기 위해 사용되는, 비휘발성 메모리 시스템.
- 제 13항에 있어서, 상기 제 2 섹션은 상기 제 1 섹션에 저장된 데이터를 위한 캐시 메모리로 사용되는, 비휘발성 메모리 시스템.
- 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로, 및 상기 비휘발성 메모리 회로와 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터 전송을 제어하며 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를 포함하는 비휘발성 메모리 시스템을 동작시키는 방법에 있어서,
상기 비휘발성 메모리 회로를 제 1 섹션의 블록 및 제 2 섹션의 블록으로 분할하는 단계로서, 상기 제 2 섹션은 초기에는 상기 제 2 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 단계와,
상기 제 1 섹션의 상기 블록을 제 1 모드에 따라 동작시키는 단계와,
상기 제 2 섹션의 상기 블록을 제 2 모드에 따라 동작시키는 단계로서, 상기 제 1 모드는 상기 제 2 모드보다 큰 내구성을 갖는, 단계와,
상기 제 2 섹션으로부터 예비 블록을 상기 제 1 섹션을 위한 예비 블록이 되도록 재할당하는 단계를
포함하는, 비휘발성 메모리 시스템을 동작시키는 방법. - 제 23항에 있어서, 상기 제 1 모드는 상기 메모리 셀을 바이너리 모드에서 동작시키고, 상기 제 2 모드는 상기 메모리 셀을 다중-레벨 모드에서 동작시키는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 23항에 있어서, 제 1 섹션으로 상기 비휘발성 메모리 회로의 비-예비 블록의 분할은 고정된, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 23항에 있어서, 제 1 섹션으로 상기 비휘발성 메모리 회로의 비-예비 블록의 분할은 가변적인, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 23항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 27항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나의 예비 블록을 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 23항에 있어서, 상기 제어기 회로는 상기 제 1 섹션을 위한 예비 블록이 되도록 상기 제 2 섹션으로부터 예비 블록을 재할당하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 23항에 있어서, 상기 제어기 회로는 상기 제 2 섹션을 위한 예비 블록이 되도록 상기 제 1 섹션으로부터 예비 블록을 재할당하지 않는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 23항에 있어서, 상기 제 1 섹션은 사용자 데이터를 저장하기 위해 사용되며 상기 제 2 섹션은 시스템 데이터를 저장하기 위해 사용되는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 23항에 있어서, 상기 제 2 섹션은 상기 제 1 섹션에 저장된 데이터를 위한 캐시 메모리로 사용되는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 비휘발성 메모리 시스템에 있어서,
각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로로서, 상기 소거 블록은 제 1 및 제 2 모드에서 동작하고, 상기 제 1 모드는 상기 제 2 모드보다 더 큰 내구성을 갖는, 비휘발성 메모리 회로와,
상기 비휘발성 메모리 회로와 상기 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터의 전송 및 상기 비휘발성 메모리 회로에 저장된 데이터의 관리를 제어하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로로서, 상기 비휘발성 메모리 회로는 상기 제 1 모드에 따라 동작되는 제 1 섹션의 블록 및 상기 제 2 모드에 따라 동작되는 제 2 섹션의 블록으로 분할되며, 상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정한 것에 응하여, 상기 제어기 회로는 상기 제 1 섹션에서 결함 블록을 대체하기 위해 사용될 수 있고 상기 제 1 모드에 따라 동작되는 예비 블록이 되도록 상기 판정된 블록을 상기 제 1 섹션에 재할당할 수 있는, 제어기 회로를
포함하는, 비휘발성 메모리 시스템. - 제 33항에 있어서, 상기 제 1 모드는 바이너리 모드에서 상기 메모리 셀을 동작시키고 상기 제 2 모드는 다중-레벨 모드에서 상기 메모리 셀을 동작시키는, 비휘발성 메모리 시스템.
- 제 33항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 비휘발성 메모리 시스템.
- 제 33항에 있어서, 상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정한 것에 이어서, 그리고 상기 판정된 블록을 예비 블록이 되도록 상기 제 1 섹션에 재할당하기 전에, 상기 제어기 회로는 상기 제 2 모드에서 동작될 때 결함이 있는 것으로 판정된 상기 블록도 상기 제 1 모드에서 동작될 때 결함이 있는지 판정하는, 비휘발성 메모리 시스템.
- 제 33항에 있어서, 상기 제어기 회로는 상기 판정된 블록을 상기 제 2 모드에서 동작될 때 장애 모드에 기초하여 재할당할지를 판정하는, 비휘발성 메모리 시스템.
- 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로, 및 상기 비휘발성 메모리 회로와 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를 포함하는 비휘발성 메모리 시스템을 동작시키는 방법에 있어서,
상기 비휘발성 메모리 회로를 제 1 섹션의 블록 및 제 2 섹션의 블록으로 분할하는 단계와,
상기 제 1 섹션의 상기 블록을 제 1 모드에 따라 동작시키는 단계와,
상기 제 2 섹션의 상기 블록을 제 2 모드에 따라 동작시키는 단계로서, 상기 제 1 모드는 상기 제 2 모드보다 큰 내구성을 갖는, 단계와,
상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정하는 단계와,
상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정한 것에 응하여, 상기 제 1 섹션에서 결함 블록을 대체하기 위해 사용될 수 있고 상기 제 1 모드에 따라 동작되는 예비 블록이 되도록 상기 판정된 블록을 상기 제 1 섹션에 재할당하는 단계를
포함하는, 비휘발성 메모리 시스템을 동작시키는 방법. - 제 38항에 있어서, 상기 제 1 모드는 바이너리 모드에서 상기 메모리 셀을 동작시키며 상기 제 2 모드는 다중-레벨 모드에서 상기 메모리 셀을 동작시키는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 38항에 있어서, 상기 제 1 섹션은 초기에는 상기 제 1 섹션 내 결함 블록을 대체하기 위해 사용되도록 할당된 하나 이상의 예비 블록을 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 38항에 있어서, 상기 제 2 모드에서 동작될 때 상기 제 2 섹션으로부터 한 블록이 결함이 있는 것으로 판정한 것에 이어서, 그리고 상기 판정된 블록을 예비 블록이 되도록 상기 제 1 섹션에 재할당하기 전에, 상기 제 2 모드에서 동작될 때 결함이 있는 것으로 판정된 상기 블록도 상기 제 1 모드에서 동작될 때 결함이 있는지를 상기 제어기 회로에 의해 판정하는 단계를 더 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 38항에 있어서, 상기 제어기 회로는 상기 판정된 블록을 상기 제 2 모드에서 동작될 때 장애 모드에 기초하여 재할당할지를 판정하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 비휘발성 메모리 시스템에 있어서,
각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로로서, 상기 비휘발성 메모리 회로는 데이터 저장 부분 및 오버헤드 저장 부분을 포함하고, 상기 오버헤드는 1 비트 시간 스탬프를 포함하는, 비휘발성 메모리 회로와,
상기 비휘발성 메모리 회로와 상기 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터의 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로로서, 상기 제어기 회로는 각각의 할당되지 않은 블록에 대한 1비트 시간 스탬프를 포함하는 할당되지 않은 블록에 대한 제어 구조를 유지관리하는, 제어기 회로를
포함하고,
주어진 블록의 오버헤드 내 상기 시간 스탬프의 비트의 값은 상기 블록이 소거 동작이 행해지는 것에 응하여 토글(toggle)되고, 상기 할당되지 않은 블록에 대한 상기 제어 구조 내 상기 시간 스탬프의 상기 값은 할당되지 않은 블록에 대한 상기 제어 구조에 대응하는 블록이 넣어질 때 상기 대응하는 블록의 오버헤드에 상기 시간 스탬프의 값으로 설정되며,
초기화 프로세스 동안에, 상기 제어기 회로는 상기 할당되지 않은 블록의 상기 오버헤드 내 상기 시간 스탬프의 값을 상기 각각의 할당되지 않은 블록에 대한 상기 제어 구조 내 대응하는 시간 스탬프의 값과 비교를 수행하는, 비휘발성 메모리 시스템. - 제 43항에 있어서, 상기 제어기 회로는 상기 비휘발성 메모리 회로 내 상기 제어 구조의 카피를 유지하는, 비휘발성 메모리 시스템.
- 제 44항에 있어서, 상기 비교에 기초하여, 상기 제어기 회로는 상기 비휘발성 메모리 회로 내 유지된 상기 제어 구조의 카피의 마지막 업데이트 이후에 할당되지 않은 블록에 대한 상기 제어 구조에 넣어진 블록 중 어느 것이 기록되었는지를 판정하는, 비휘발성 메모리 시스템.
- 각각이 복수의 비휘발성 메모리 셀로 형성된 복수의 소거 블록을 갖는 비휘발성 메모리 회로, 데이터 저장 부분과 오버헤드 저장 부분을 포함하는 메모리 블록, 및 상기 비휘발성 메모리 회로와 비휘발성 메모리 시스템이 부착된 호스트 사이의 데이터의 전송을 제어하고 상기 비휘발성 메모리 회로에 저장된 데이터를 관리하기 위해 상기 비휘발성 메모리 회로에 연결된 제어기 회로를 갖는 비휘발성 메모리 시스템을 동작시키는 방법에 있어서,
상기 메모리 블록의 상기 오버헤드에 1 비트 시간 스탬프를 유지하는 단계와,
각각의 할당되지 않은 블록에 대한 1 비트 시간 스탬프를 포함하는 할당되지 않은 블록에 대한 제어 구조를 상기 제어기 회로에 의해 유지하는 단계와,
상기 소거 블록이 소거 동작이 행해지는 것에 응하여, 주어진 블록의 오버헤드 내 상기 시간 스탬프의 비트의 값을 토글링하는 단계와,
상기 할당되지 않은 블록에 대한 상기 제어 구조 내 상기 시간 스탬프의 상기 값을, 할당되지 않은 블록에 대한 상기 제어 구조에 대응하는 블록이 넣어질 때, 상기 대응하는 블록의 오버헤드에 상기 시간 스탬프의 값으로 설정하는 단계와,
상기 제어기 회로가 상기 할당되지 않은 블록의 상기 오버헤드 내 상기 시간 스탬프의 값을 상기 각각의 할당되지 않은 블록에 대한 상기 제어 구조 내 대응하는 시간 스탬프의 값과 비교를 수행하는 것을 포함하는, 초기화 프로세스를 수행하는 단계를
포함하는, 비휘발성 메모리 시스템을 동작시키는 방법. - 제 46항에 있어서, 상기 제어기 회로는 상기 제어 구조의 카피를 상기 비휘발성 메모리 회로 내 유지하는 단계를 더 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
- 제 47항에 있어서, 상기 비교에 기초하여, 상기 제어기 회로는 상기 비휘발성 메모리 회로 내 유지된 상기 제어 구조의 카피의 마지막 업데이트 이후에 할당되지 않은 블록에 대한 상기 제어 구조에 넣어진 블록 중 어느 것이 기록되는지를 판정하는 단계를 더 포함하는, 비휘발성 메모리 시스템을 동작시키는 방법.
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)
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)
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)
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 |
-
2009
- 2009-01-05 US US12/348,825 patent/US8040744B2/en active Active
-
2010
- 2010-01-04 EP EP10700606.6A patent/EP2374134B1/en not_active Not-in-force
- 2010-01-04 WO PCT/US2010/020014 patent/WO2010078540A2/en active Application Filing
- 2010-01-04 KR KR1020117015517A patent/KR101584048B1/ko active IP Right Grant
Patent Citations (3)
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 |