KR20120106801A - 온-칩 폴딩을 위한 데이터 전송 - Google Patents
온-칩 폴딩을 위한 데이터 전송 Download PDFInfo
- Publication number
- KR20120106801A KR20120106801A KR1020127018052A KR20127018052A KR20120106801A KR 20120106801 A KR20120106801 A KR 20120106801A KR 1020127018052 A KR1020127018052 A KR 1020127018052A KR 20127018052 A KR20127018052 A KR 20127018052A KR 20120106801 A KR20120106801 A KR 20120106801A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory
- folding
- write
- host
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- 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
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1042—Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
-
- 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
- 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
-
- 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/5643—Multilevel memory comprising cache storage devices
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)
- Read Only Memory (AREA)
Abstract
메모리 시스템 및 이의 동작 방법들이 제시된다. 메모리 시스템은 휘발성 버퍼 메모리 및 비휘발성 메모리 회로를 포함하며, 비휘발성 메모리 회로는 데이터가 바이너리 포맷으로 저장되는 제 1 구역, 및 데이터가 복수-상태 포맷으로 저장되는 제 2 구역을 갖는다. 비휘발성 메모리에 데이터를 기입할 때, 데이터는 호스트로부터 수신되고, 버퍼 메모리에 저장되며, 버퍼 메모리로부터 비휘발성 메모리 회로의 판독/기입 레지스터들에 전송되고, 이어서, 바이너리 기입 동작을 사용하여 판독/기입 레지스터들로부터 비휘발성 메모리 회로의 제 1 구역에 기입된다. 이어서 데이터의 부분들이 비휘발성 메모리의 제 1 구역으로부터 비휘발성 메모리의 제 2 구역으로 폴딩되며, 폴딩 동작은 제 1 구역 내 복수의 위치들로부터 데이터의 부분들을 판독/기입 레지스터들에 읽어들이는 단계, 및 판독/기입 레지스터들로부터 데이터의 부분들을 비휘발성 메모리의 제 2 구역 내 위치에 복수-상태 프로그래밍 동작을 수행하는 단계를 포함한다. 복수-상태 프로그래밍 동작들은 제 1 국면 및 제 2 국면을 포함하며, 바이너리 기입 동작들 중 하나 이상은 복수-상태 프로그래밍 동작들의 국면들 사이에 수행된다.
Description
이 출원은 반도체 플래시 메모리와 같은 재-프로그램가능한 비휘발성 메모리 시스템들의 동작에 관한 것으로, 특히 호스트 장치와 메모리 간에 인터페이스의 관리에 관한 것이다.
전하를 비휘발성으로 저장할 수 있는, 특히 소형 폼 팩터 카드로서 패키지되는 EEPROM 및 플래시 EEPROM 형태의 고체상태 메모리는 최근에 다양한 모바일 및 휴대 장치들, 특히 정보기기 및 소비자 전자제품들에서 선택되는 저장장치가 되었다. 고체상태 메모리이기도 한 RAM(random access momory)과는 달리, 플래시 메모리는 비휘발성이고 전원이 턴 오프 된 뒤에도 자신의 저장된 데이터를 보존한다. 또한, 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 내에 버퍼되며 종국에는 주 메모리 내 섹터 할당 테이블에 저장된다. 논리 섹터의 가장 최근의 버전은 현존한 블록들 중 이전의 버전들 모두를 폐용(obsolete)시켜, 부분적으로 폐용이 된다. 부분적으로 폐용이 된 블록들을 허용할 수 있는 수준까지 유지하기 위해 가비지 수거(garbage collection)가 수행된다.
종래 기술의 시스템들은 업데이트 데이터를 많은 블록들에 걸쳐 분포되게 하는 경향이 있고, 또는 업데이트 데이터는 많은 현존의 블록들을 부분적으로 폐용이 되게 한다. 결과는 종종 부분적으로 폐용이 된 블록들에 대해 필요한 많은 량의 가비지 수거이며, 이것은 비효율적이며 메모리의 조기 노후를 야기한다. 또한, 비순차적 업데이트에 비해 순차적 업데이트를 취급할 체계적이고 효율적인 방법이 없다.
순차적 및 무질서한 업데이트 블록들의 혼재를 채용하는 블록 관리 시스템을 갖춘 플래시 메모리는 전체 개시된 바를 참조로 본원에 포함시키는 2005년 6월 30일자의 미국특허공개번호 US-2005-0144365-A1에 개시되어 있다.
종래 기술은 캐시를 갖고 동작하고 혼합된 MLC(복수-레벨 셀) 및 SLC(단일-레벨 셀) 모드들에서 동작하며 SLC 메모리를 전용 캐시로서 동작하게 하는 플래시 메모리 시스템들을 개시하였다. 그러나, 개시된 캐시는 주로 고속 호스트와 저속 MLC 메모리 간에 데이터를 버퍼하고 블록에 기입하기 위해 축적해 두기 위한 것이다. 이들 시스템들은 대부분이 고 레벨에 캐시 메모리를 저장장치로서 취급하고 블록 구조 및 이의 업데이트 수법의 근저의 저 레벨의 동작 고려사항들을 무시한다. 다음 공보들은 이들 종래 기술의 예들이다.
플래시 메모리와 동작하는 기입 캐시 내 RAM을 사용하는 것이 Harari 등의 미국특허 5,936,971에 개시되었다.
메모리를 하나는 바이너리로 동작하고 다른 하나는 MLC에서 동작하는 두 부분들로 분할하는 것이 Lee 등의 미국특허 5,930,167와 Chen의 미국특허 6,456,528에 개시되어 있고 이들의 전체 개시된 바를 참조로서 포함시킨다.
미국특허공개번호: 공개번호: Lasser에 의한 2007년 3월 15일자 US-2007-0061502-A1 2007년 12월 6일자 US-2007-0283081-A1 둘 다는 혼합된 MLC 및 SLC 모드들에서 동작하는 플래시 메모리를 개시한다. 메모리의 특정 부분은 SLC 모드에서 동작하게 그리고 전용 캐시로서 사용되게 항시 할당된다.
그러므로 고 용량 및 고 성능 비휘발성 메모리에 대한 일반적인 필요성이 있다. 특히, 전술한 문제들이 없이 큰 블록들에서 메모리 동작들을 수행할 수 있는 고 용량 비휘발성 메모리를 구비할 필요성이 있다.
발명의 일반적인 면에 따라서, 메모리 시스템을 동작시키는 방법이 제공된다. 메모리 시스템은 휘발성 버퍼 메모리 및 비휘발성 메모리 회로를 포함하며, 비휘발성 메모리 회로는 데이터가 바이너리 포맷으로 저장되는 제 1 구역, 및 데이터가 복수-상태 포맷으로 저장되는 제 2 구역을 갖는다. 방법은 호스트로부터 데이터를 수신하는 단계; 상기 수신된 데이터를 버퍼 메모리에 저장하는 단계를 포함한다. 데이터는 버퍼 메모리로부터 비휘발성 메모리 회로의 판독/기입 레지스터들에 전송되며, 판독/기입 레지스터들로부터 비휘발성 메모리의 제 1 구역으로 데이터의 바이너리 기입 동작이 수행된다. 이어서, 방법은 비휘발성 메모리의 제 1 구역으로부터 데이터의 부분들을 비휘발성 메모리의 제 2 구역에 폴딩하며, 폴딩 동작은 제 1 구역 내 복수의 위치들로부터 데이터의 부분들을 판독/기입 레지스터들에 읽어들이는 단계; 및 판독/기입 레지스터들로부터 데이터의 부분들을 비휘발성 메모리의 제 2 구역의 위치로 복수-상태 프로그래밍 동작을 수행하는 단계를 포함한다. 복수-상태 프로그래밍 동작들은 제 1 국면 및 제 2 국면을 포함하며, 하나 이상의 바이너리 기입 동작들은 복수-상태 프로그래밍 동작들의 국면들 사이에서 수행된다.
본 발명의 다양한 면들, 잇점들, 특징들 및 실시예들은 이들의 예들에 대한 다음 설명에 포함되며, 이 설명은 동반된 도면들에 관려하여 취해질 것이다. 본원에서 참조되는 모든 특허들, 특허출원들, 논문들, 그외 공보, 문서 및 자료들은 모든 목적을 위해 이들 전부가 참조로서 본원에 포함된다. 포함시킨 공보, 문서 혹은 자료들의 어느 것과 본원 간에 용어들의 정의 혹은 사용에 있어 어떤 모순 혹은 상충되는 범위에 있어선 본원의 정의 혹은 사용이 우선할 것이다.
본 발명은 큰 블록들에서 메모리 동작들을 수행할 수 있는 고 용량 비휘발성 메모리를 제공할 수 있다.
도 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-상태 메모리의 프로그래밍 및 판독을 도시한 것이다.
도 7f는 주어진 3-비트 코드로 엔코딩된 8-상태 메모리에 대한 연무-미세 프로그래밍을 도시한 것이다.
도 8은 제어기 내에 있는 소프트웨어 성분인 메모리 관리자에 의해 메모리가 관리되는 것을 도시한 것이다.
도 9는 백-엔드 시스템의 소프트웨어 모듈들을 도시한 것이다.
도 10a(i) ~ 도 10a(iii)는 논리 그룹과 메타블록 간에 매핑을 개요적으로 도시한 것이다.
도 10b는 논리 그룹들과 메타블록들 간에 매핑을 개요적으로 도시한 것이다.
도 11은 시스템의 서로 다른 레벨들에서 일련의 캐시들을 통해 플래시 메모리 장치와 동작하는 호스트를 도시한 것이다.
도 12는 바이너리 포맷으로 기입된 복수의 워드라인들로부터 데이터가 복수-상태 포맷으로 재기입되는 메모리 상에서의 폴딩 프로세스를 개괄한 것이다.
도 13은 폴딩 프로세스의 특징들을 더 상세히 도시한 것이다.
도 14는 바이너리 부분 및 복수-상태 메모리 부분 둘 다를 포함하는 비휘발성 메모리의 또 다른 예를 도시한 것이다.
도 15 내지 도 18은 가상 업데이트 블록의 사용을 도시한 것이다.
도 19는 바이너리 부분 및 복수-상태 메모리 부분 둘 다를 포함하는 비휘발성 메모리의 또 다른 예를 도시한 것이다.
도 20은 온-칩 폴딩을 위한 데이터 전송 흐름을 예시하기 위해 메모리 시스템을 간단히 도시한 것이다.
도 21은 예시적인 단일 다이 데이터 전송 흐름에 대한 타이밍을 도시한 것이다.
도 22a 및 도 22b는 예시적 복수-다이 데이터 전송 흐름에 대한 타이밍을 도시한 것이다.
도 23 내지 도 27은 메모리의 바이너리 부분에의 기입들과 데이터 폴딩 동작을 결합하는 방법의 예들을 제공한다.
도 28은 온-칩 데이터 폴딩 동작들을 포함하는 메모리 동작의 모드들 간을 천이하는 개요도이다.
도 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-상태 메모리의 프로그래밍 및 판독을 도시한 것이다.
도 7f는 주어진 3-비트 코드로 엔코딩된 8-상태 메모리에 대한 연무-미세 프로그래밍을 도시한 것이다.
도 8은 제어기 내에 있는 소프트웨어 성분인 메모리 관리자에 의해 메모리가 관리되는 것을 도시한 것이다.
도 9는 백-엔드 시스템의 소프트웨어 모듈들을 도시한 것이다.
도 10a(i) ~ 도 10a(iii)는 논리 그룹과 메타블록 간에 매핑을 개요적으로 도시한 것이다.
도 10b는 논리 그룹들과 메타블록들 간에 매핑을 개요적으로 도시한 것이다.
도 11은 시스템의 서로 다른 레벨들에서 일련의 캐시들을 통해 플래시 메모리 장치와 동작하는 호스트를 도시한 것이다.
도 12는 바이너리 포맷으로 기입된 복수의 워드라인들로부터 데이터가 복수-상태 포맷으로 재기입되는 메모리 상에서의 폴딩 프로세스를 개괄한 것이다.
도 13은 폴딩 프로세스의 특징들을 더 상세히 도시한 것이다.
도 14는 바이너리 부분 및 복수-상태 메모리 부분 둘 다를 포함하는 비휘발성 메모리의 또 다른 예를 도시한 것이다.
도 15 내지 도 18은 가상 업데이트 블록의 사용을 도시한 것이다.
도 19는 바이너리 부분 및 복수-상태 메모리 부분 둘 다를 포함하는 비휘발성 메모리의 또 다른 예를 도시한 것이다.
도 20은 온-칩 폴딩을 위한 데이터 전송 흐름을 예시하기 위해 메모리 시스템을 간단히 도시한 것이다.
도 21은 예시적인 단일 다이 데이터 전송 흐름에 대한 타이밍을 도시한 것이다.
도 22a 및 도 22b는 예시적 복수-다이 데이터 전송 흐름에 대한 타이밍을 도시한 것이다.
도 23 내지 도 27은 메모리의 바이너리 부분에의 기입들과 데이터 폴딩 동작을 결합하는 방법의 예들을 제공한다.
도 28은 온-칩 데이터 폴딩 동작들을 포함하는 메모리 동작의 모드들 간을 천이하는 개요도이다.
메모리 시스템
도 1 내지 도 7은 본 발명의 여러 특징들이 구현 또는 예시될 수 있는 메모리 시스템들의 예를 제공한다.
도 8 내지 도 13은 본 발명의 여러 특징들을 구현하기 위한 한 메모리 및 블록 아키텍처를 도시한 것이다.
도 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)가 턴 온 되었을 때, 소스 단자는 소스 라인에 결합된다(도 4b 참조). 마찬가지로, 드레인 선택 트랜지스터(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는 도 4a에 도시된 것과 같은 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번의 서브-패스들(sub-pass)에서 판독 구분 임계값들(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 플래그가 판독될 수 있는지 판정하기 위해서 먼저 readB 동작이 수행된다. 판독될 수 있다면, 상위 페이지는 프로그램되었으며 readB 동작은 정확히 하위 페이지 데이터를 얻게 될 것이다. 반면, 상위 페이지가 아직 프로그램되지 않았다면 하위 페이지 데이터는 readA 동작에 의해 판독될 것이다.
도 7e는 2-비트 코드로 엔코딩된 4-상태 메모리의 상위 비트를 판별하기 위해 요구되는 판독 동작을 도시한 것이다. 도면으로부터 명백한 바와 같이, 상위 페이지 판독은 각각 구분 임계 전압들 DA, DB 및 DC에 대한 readA, readB 및 readC의 3-패스 판독을 요구할 것이다.
2-비트 메모리에 대한 비트별 수법에서, 메모리 셀들의 물리 페이지는 2개의 논리 데이터 페이지들로서 하위 비트에 대응하는 하위 데이터 페이지와 상위 비트에 대응하는 상위 데이터 페이지를 저장할 것이다.
연무-미세(
foggy
-
fine
) 프로그래밍
복수-상태 프로그래밍에 관한 또 다른 변형은 3-비트 메모리 예에 대해 도 7f에 도시된 바와 같이 연무-미세 알고리즘을 채용한다. 이에 도시된 바와 같이, 이것은 또 다른 복수-국면 프로그래밍 동작이다. 첫번째 프로그래밍 동작은 맨 위에 도시된 바와 같이 수행되고, 이어 연무 프로그래밍 스테이지가 이어진다. 연무 국면은 모든 8개의 최종 상태들을 사용한 제 1 국면으로부터의 완전한 3-비트 프로그래밍 동작이다. 그렇지만, 연무 끝에서, 이들 상태들에 데이터는 8 상태들 각각에 대해 명확하게 정의되는 분포들로 아직도 완전하게 해상되지 않아(이에 따라서, "연무"라 명명되었다) 쉽게 추출될 수 없다.
그러나 각 셀이 이의 종국의 목표 상태에 가까이까지 프로그램됨에 따라, 미국특허 6,870,768에 기술된 것과 같은 류의 이웃 셀간 커플링들 또는 "유핀(Yupin)" 효과가 이들의 영향의 대부분을 나타낸다. 이 때문에, 미세 프로그램 국면(맨 아래에 도시된)이 실행될 때, 대체로 이들 커플링들이 이 최종 국면에 한 요인으로 포함되므로 셀 분포들은 이들의 목표 범위들로 더 정확하게 해상된다. 이들 주제들에 관한 더 상세한 것은 미국특허번호 6,870,768 및 6,657,891와 대리인 문서번호가 0084567-667US0이고 본원과 동시에 출원중에 있는 "대각" 첫회(first)-연무-미세 방법을 제시하는 Gorobets 등의 "Atomic Program Sequence and Write Abort Detection" 명칭의 미국특허출원에 주어져 있다.
바이너리 및
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)에 매핑된다. 논리 그룹이 업데이트된 후에, 이것은 다른 메타블록에 매핑될 수 있다. 매핑 정보는 한 세트의 논리 대 물리 디렉토리들에 유지되는데, 이것은 나중에 더 상세히 기술될 것이다.
복수 레벨 및 바이너리 부분들을 가진 메모리들
주 부분과 바이너리 캐시 부분으로 분할된 메모리
비휘발성 메모리가 바이너리 및 복수-레벨 구역들 둘 다를 포함하는 다수의 메모리 시스템 배열들이 이제 기술될 것이다. 이들 중 첫번째에서, 복수의 블록들로 구성되는 메모리 셀들의 어레이를 갖는 플래시 메모리에서, 각 블록 내 셀들은 함께 소거되는 것으로서, 플래시 메모리는 적어도 2개의 부분들로 분할된다. 제 1 부분은 주로 사용자 데이터를 저장하기 위한 주 메모리를 형성한다. 주 메모리 내 개개의 메모리 셀들은 각 셀에 하나 이상의 비트들의 데이터를 저장하게 구성된다. 제 2 부분은 주 메모리에 기입될 데이터를 위한 캐시를 형성한다. 캐시 부분 내 메모리 셀들은 주 메모리보다 각 셀 내 더 적은 수의 비트들의 데이터를 저장하게 구성된다. 캐시 부분 및 주 메모리 부분 둘 다는 캐시 동작이 최적화되는 블록 관리 시스템 하에 동작한다. 이 내용의 더 상세한 설명은 다음 미국출원 또는 가출원번호들에 나타나 있다: 12/348,819; 12/348,825; 12/348,891; 12/348,895; 12/348,899; 61/142,620, 모두 2009년 1월 5일에 출원되었다.
바람직한 실시예에서, 캐시 부분 내 개개의 셀들은 각각 한 비트의 데이터를 저장하게 구성되고 반면 주 메모리 부분 내 셀들은 각각 하나 이상의 비트의 데이터를 저장한다. 캐시 부분은 더 빠르고 더 확실한 기입 및 판독 성능들을 갖고 바이너리 캐시로서 동작한다.
바람직한 실시예에서, 캐시 부분은 주 메모리 부분에 대한 것보다 더 미세한 입도로 기입들을 할 수 있게 구성된다. 더 미세한 입도는 호스트 기입으로부터 논리 데이터 유닛들의 입도와 더욱 호환될 수 있다. 주 메모리의 블록들에 논리 데이터 유닛들을 순차로 저장해야 하는 요건에 기인하여, 일련의 호스트 기입들로부터 논리적 유닛들의 더 작고 무질서한 단편들이 캐시 부분에 버퍼되고 나중에 주 메모리 부분에 블록들에 순차적 순서로 재조립할 수 있다.
발명의 일면에서, 블록 관리 시스템이 주 부분 또는 캐시 부분에 직접 데이터를 기입하는 판단은 다수의 기정의된 조건들에 따른다. 기정의된 조건들은 기입될 데이터의 속성들 및 특징들, 주 메모리 부분 내 블록들의 상태, 및 캐시 부분 내 블록들의 상태를 포함한다.
본 시스템의 바이너리 캐시는 다음의 특징들 및 잇점들을 갖는다: a) 이것은 장치에의 버스트 기입 속도를 증가시킨다; b) 이것은 페이지들 또는 메타-페이지들로 정렬되지 않은 데이터가 효율적으로 기입될 수 있게 한다; c) 이것은 데이터가 메타-블록에 보관된 후에 메타-블록의 가비지 수건 동안 재배치되어야 하는 데이터량을 최소화하기 위해, 논리 그룹에 대한 데이터를 축적한다; d) 이것은 논리 그룹에 대한 데이터를 메타-블록에 기입하는 것을 피하기 위해서, 빈번히 반복되는 기입들이 발생하는 이 논리 그룹에 대한 데이터를 저장한다; e) 이것은 복수의 호스트 비지 기간들 사이에에 메타-블록의 가비지 수거가 분산되게 하기 위해서, 호스트 데이터를 버퍼한다.
도 11은 시스템의 서로 다른 레벨들에서 일련의 캐시들을 통해 플래시 메모리 장치와 동작하는 호스트를 도시한 것이다. 캐시는 시스템의 고속 성분과 저속 성분간에 전달되는 데이터를 일시적으로 저장하기 위한 고속 저장장치이다. 전형적으로 고속 휘발성 RAM은 호스트 캐시(82) 및/또는 메모리 제어기의 제어기 캐시(102)에서와 같이 캐시로서 채용된다. 비휘발성 메모리(200)는 두 부분들로 분할된다. 제 1 부분(202)은 MLC 또는 바이너리 모드에서 사용자 데이터를 위한 주 메모리로서 동작하는 메모리 셀들을 갖는다. 제 2 부분(204)은 바이너리 모드에서 캐시로서 동작하는 메모리 셀들을 갖는다. 이에 따라, 메모리(200)는 주 메모리(202) 및 바이너리 캐시로 분할된다.
메모리 상에서 복수-상태 포맷으로 데이터의
폴딩
위에 기술된 다양한 종류들의 비휘발성 메모리들은 바이너리 형태들 및 복수-상태(혹은 복수-레벨) 형태들 둘 다로 동작될 수 있다. 일부 메모리 시스템들은 바이너리 및 복수-상태 둘 다의 포맷들로 데이터를 저장하는데; 예를 들면, 데이터는 전형적으로 더 신속히 그리고 바이너리 형태로 덜 엄격한 공차들을 갖고 기입될 수 있기 때문에 메모리는 호스트로부터 수신될 때 데이터를 바이너리 형태로 초기에 기입할 수 있고 나중에 이 데이터를 더 큰 저장 밀도를 위해 복수-상태 포맷으로 다시 기입할 수 있다. 이러한 메모리들에서, 일부 셀들은 복수-상태 포맷으로 사용되는 다른 것들과 함께 바이너리 포맷으로 사용될 수 있으며 또는 동일 셀들은 서로 다른 수의 비트들을 저장하게 동작될 수 있다. 이러한 시스템들의 예들은 미국특허 6,456,528; 미국특허 공개번호 2009/0089481; 및 다음 미국특허출원번호들: 61/142,620; 12/348,819; 12/348,825; 12/348,891; 12/348,895; 12/348,899에 더 상세히 다루어져 있다. 이 단락에서 기술되는 기술들은 재-포맷화 하기 위해 데이터를 제어기에 다시 전송해야 할 필요없이, 메모리 장치 자체에서 실행되는 "폴딩(folding)" 프로세스에서 데이터를 바이너리 포맷으로부터 복수-상태 포맷으로 재기입하는 것에 관한 것이다. 메모리 상에서 폴딩 프로세스는 가장 발생가능한 오류들이 이웃 상태들 간에 천이들인 것을 생각할 때 복수-상태 형태로 저장되었을 때에 메모리 셀 내 데이터의 상대적 상태가 고려되는 경우 오류정정 코드(ECC)를 관리하는 특별한 방법으로 사용될 수도 있다. (소위 "강(strong) ECC" 또는 "SECC"로서, 이 주제에 관한 추가의 배경 상세는 다음 미국특허들, 특허공개들, 특허출원번호들에서 찾아볼 수 있다: 2009/0094482; 7,502,254; 2007/0268745; 2007/0283081; 7,310,347; 7,493,457; 7,426,623; 2007/0220197; 2007/0065119; 2007/0061502; 2007/0091677; 2007/0180346; 2008/0181000; 2007/0260808; 2005/0213393; 6,510,488; 7,058,818; 2008/0244338; 2008/0244367; 2008/0250300; 2008/0104312). 시스템은 상태 정보를 고려하지 않고 단일의 페이지 정보에 기초하여 ECC를 관리하는 ECC 관리를 사용할 수 있다.
보다 구체적으로, 일실시예에서, 데이터가 제어기에서 메모리로 전송될 때, 이것은 바이너리 포맷으로 메모리 어레이의 워드라인들을 따라 기입된다. 이어서, 데이터는 어레이에 연관된 레지스터들에 읽혀지고, 여기에서 복수-상태 형태로 어레이에 다시 기입될 수 있도록 재배열된다. 예를 들어, 셀당 3비트들의 경우를 취하면, 3개의 워드라인들의 내용은 각각이 레지스터 구조들에 읽혀지고, 각 셀에 저장될 3개의 비트들에 대응하게 재배열되고, 이어서 셀당 3-비트 포맷으로 어레이의 단일의 워드라인에 다시 재기입될 것이다. 여기에 기술된 구성에서, 단일의 워드라인의 바이너리 데이터 내용은 셀당 N-비트 포맷으로 워드라인의 1/N번째에 저장하게 된다. 데이터의 종국의 N-비트 저장이 셀과의 복수-상태들의 관계를 이용하는 오류정정 코드(ECC)를 사용하는 경우에 있어서, 이 ECC는 제어기에서 결정되고 대응하는 데이터와 함께 전송되어 데이터(및 대응하는 ECC)가 복수-상태 포맷으로 재기입되기 전에 바이너리 포맷으로 저장될 수 있다.
데이터를 바이너리에서 복수-상태, 또는 MLC, 포맷으로 폴딩한다는 생각은 셀당 3-비트라는 한 특별한 예에 대해 도 12로 예시될 수 있다. 화살표로 나타낸 바와 같이, 데이터는 제어기(또는 호스트)로부터 수신되어 메모리의 블록(611)에 바이너리 포맷으로 기입된다. 블록(611)의 3개의 기입된 워드라인들(613, 615, 617)이 분명하게 도시되었다. 이어서, 이들 3개의 워드라인들의 내용은 블록(621)의 단일의 워드라인(623)을 따라 셀당 3-비트 포맷으로 재기입되어 "폴딩" 프로세스가 메모리 자체에서 달성된다. 보다 일반적으로, 데이터가 셀당 N-비트 포맷으로 621을 따라 기입된다면, 바이너리 내용의 N-워드라인들의 내용은 이러한 식으로 폴딩될 것이다. 구체적으로 이 블록(611)은 바이너리 모드만으로 동작되게 할당될 수 있거나, 예를 들면 물리 페이지 상에 저장될 수 있는 복수의 논리 페이지들 중 단지 최하위 페이지만에 의해 MLC 모드로 동작가능하는 블록일 수도 있다. 유사하게, 블록(621)은 복수-상태 동작만을 위해 할당될 수 있고, 또는 바이너리 모드에서도 동작할 수도 있다.
일실시예가 데이터를 복수의 바이너리 포맷 워드라인들으로부터 단일의 워드라인으로 폴딩하는 방법에 관한 몇가지 상세가 도 14에 도시되었다. 도 13의 위에는 3개의 워드라인들(613, 615, 617)이 있는데, 이들 각각은 비트라인들(여기에서는 인접한 것으로 취해졌다) 중 대응하는 1/3을 따라 셀들의 1/3씩의 3개의 부분들인 a, b, c로 분할된다. 워드라인(623) 상에서, 제 1 워드라인(613a-c)의 3개의 1/3들은 워드라인의 첫 번째 1/3에 배열되며, 마찬가지로, 제 2 바이너리 워드라인(615)은 폴딩되어 623의 중간 1/3에 기입되며, 바이너리 블록(617)로부터 세번째 워드라인은 623의 마지막 1/3에 기입된다.
도 13에 도시된 프로세스는 다수의 방법들로 일반화된다. 이들 중 첫 번째는 복수-상태 포맷으로 셀당 저장되는 상태들의 수에 있다. 도 12 및 도 13이 3 페이지들의 데이터가 3개의 물리 페이지들에서 단일의 물리 페이지 상에 복수-상태 포맷으로 재기입되는 경우를 도시하고 있을지라도, 다른 개수들의 저장 밀도들이 사용될 수 있다. (예를 들면, 특히 레지스터 구조에 관계된 다음 논의를 간단하게 하기 위해서, 셀당 2-비트의 경우가 자주 실시예로서 사용될 것이다). 또한, 전체 워드라인들(여기에서는 각각이 페이지에 대응한다)이 도시될지라도, 부분 페이지 동작을 허용하는 시스템에서는 부분 페이지들이 사용될 수도 있다. 또한, 도 13이 워드라인을 따른 셀들이 폴딩을 위해 인접한 비트라인들을 따라 다수 그룹들로 분할되는 경우를 도시할지라도, 다른 배열들이 사용될 수 있다. 다음 단락들에서, "폴딩"은 데이터가 바이너리 구역 내 몇개의 위치들로부터 데이터 판독/기입 레지스터들에 읽혀지고 이어서 MLC 메모리 구역에 복수-상태 형태로 재기입되며 가장 쉽게는 N 바이너리 워드라인들을 판독하고 이들을 셀당 N-비트 포맷으로 단일 워드라인 상에 재기입하는 예로 생각해 볼 수 있을 종류의 프로세스를 일반적으로 지칭할 것이며, 폴딩이 도 13에 관련하여 예시된 일종의 온-칩 천이들을 수반할 수 있을지라도, 더 일반적으로 이것은 더 간단한 직접 카피 유형의 폴딩일 수도 있다.
위에 언급된 바와 같이, 폴딩 프로세스는 메모리 자체에서 수행되며, 따라서 일단 데이터가 제어기(또는 호스트)로부터 전송되어 바이너리 포맷으로 재기입되면, 이것은 메모리 밖으로 전송함이 없이 어레이 내 재기입된다. 실시예들은 이것을 복수의 바이너리 워드라인들(예를 들면, 613, 615, 617)의 데이터를 어레이에 연관된 대응하는 레지스터들(또는 래치들)에 읽어들이고 이들 레지스터들을 복수-상태 프로그래밍을 위해 필요한 형태로 재배열하고 이어서 복수-상태 블록의 단일의 워드라인(예를 들면, 623)에 재기입함으로써 달성한다. 이에 따라, 도 13의 배열 하에, 동일 워드라인 상에 있지만 서로 다른 비트라인들을 따라 있는 몇개의(여기에서는 3) 셀들의 바이너리 내용은 연관된 데이터 레지스터들 내로 읽혀지고, 이어서 대응하는 단일의 비트라인으로부터 기입될 수 있는 이 비트라인 상에 단일의 셀의 복수-비트들에 대응하게 재배열된다.
이러한 폴딩이 여기에서는 N 물리 페이지들의 바이너리 메모리로부터 셀당 N-비트의 한 물리 페이지의 메모리에 N 논리 페이지들의 데이터를 폴딩하는 것으로서 기술되었을지라도(여기에서는, 물리 페이지가 전체 워드라인으로서 취해진다), 더 일반적으로, 논리 데이터가 물리 페이지들 간에 임의의 형태로 분산될 수 있다. 이러한 면에서, 이것은 직접적인 3-페이지 대 단일 페이지 매핑이 아니라 오히려 3 대 1 비를 가진 매핑이다. 온-칩 데이터 폴딩에 관한 더 상세한 것은 2009년 6월 5일에 출원된 미국특허출원번호 12/478,997에 주어져 있다. 폴딩을 위해 유용한 더 많은 상세 및 구조들은 2009년 6월 5일에 출원된 미국특허출원번호 12/478,997에 주어져 있다.
폴딩을
사용한 바이너리/복수-상태 메모리
도 14는 바이너리 부분 및 복수-상태 메모리 부분 둘 다를 포함하는 비휘발성 메모리의 또 다른 예를 도시한 것이다. 메모리의 바이너리 부분인 D1 블록들(301)은 모두 상주 바이너리 구역(311) 및 바이너리 캐시 영역(313)에 파일 액세스 테이블들(FAT)과 같은 제어 데이터를 포함한다. 이 논의를 위해서, 이들 영역들은 위에 바이너리 캐시 단락과 그에 인용된 참조문헌들에서 위에 기술된 것들과 유사한 것으로 취해질 수 있다. 이들 영역들은 업데이트되며 자신들 내에서 압축되며 이 구역에 더 이상 넣어지지 않는다. 또한, 메모리는 D3 블록들(303)의 복수-상태(이 예에선 3-비트) 메모리 부분을 포함한다. D1 블록(301) 및 D3 블록(303)은 다양한 반-자율적 어레이들(즉, 다이들 또는 다이 내 플레인들(planes))에 걸쳐 분산될 수 있다. (더 일반적으로, 업데이트들이 메모리에 저장되는 것과 "벌크" 저장장치에 저장될 수 있는 경우 간에 구별은 바이너리 대 복수-레벨에 근거할 필요가 없거나, 적어도 이에 관해서 특징지워질 필요는 없으나, 저속 대 고속, 비교적 고 내구성 대 저 내구성, 소 블록 구조 대 큰 블록, 또는 그외 질적인 특성은 그러할 수도 있을 것이다).
예시적인 실시예에서, 데이터는 먼저 바이너리 블록(301)에 기입되고 이어서 D3 블록들에 폴딩된다. 예를 들면, 일단 3개의 페이지들이 바이너리 메모리에 기입되면, D3 메모리(303) 내 단일 페이지에 폴딩될 수 있고, 또는 대리인 문서번호가 0084567-667US0이고 본원과 동시에 출원 중인 Gorobets 등에 의한 "Atomic Program Sequence and Write Abort Detection"에 기술된 것과 같은 류의 대각 하위-연무-미세 프로그래밍 방법에 따를 수 있다. 온-칩 폴딩 실시예에서, 바이너리 부분 및 MLC 부분은 동일 비트라인들을 따라 형성된 서로 다른 블록들로부터 온 것일 것이다. 보다 일반적으로, 그외 다른 재기입 기술들이 사용될 수 있다. 일부 실시예들에서 복수-상태 메모리에 직접 기입될 수 있을지라도, 본원에서 논의되는 이러한 배열 하에서 사용자 데이터는 먼저 휘발성 RAM으로부터 바이너리 메모리에 기입되고 이어서 이를테면 논리 그룹들 X, X+l 및 X+2을 위한 315 내와 같이 "트리플렛"(D3 예의 경우에)의 페이지들에 기입되며 이들은 결합되어 "새로운 온전한" 물리 페이지(331)로서 복수-상태 포맷으로 저장되며, 이것은 이외 이러한 이전에 기입된 "원래" 페이지들(333)과 함께 저장된다. D3 블록에 저장된 페이지들 중 한 페이지의 데이터가 업데이트될 때, 업데이트된 데이터를 D3 블록에 저장하는 것이 아니라, 이것은 적어도 초기에는 다음 단락에 기술되는 바와 같이 바이너리 블록 업데이트 블록 또는 UB(317)에 저장될 수 있다.
가상
업데이트
블록들
D3 메모리에 이미 저장된 몇몇 데이터에 대해 데이터를 업데이트할 때, 이 데이터가 D3에서 업데이트된다면, 이것은 예를 들면 예시적인 대각 첫회-연무-미세 방법을 사용하여 복수-상태 재기입을 요구할 것이다. 이러한 프로그래밍은 업데이트될 데이터와 동일 워드라인 상에 MLC 형태로 저장된 업데이트되지 않은 구(old) 데이터도 아마도 포함하여 데이터가 완전히 기입될 때까지 3 이상의 워드라인들에 대한 데이터의 버퍼링을 요구할 수 있다. 속도 고찰과 메모리 마모 외에도, 이것은 파워 상실 또는 파워 사이클의 경우에, 부분적으로 프로그램된 워드라인들에 대한 모든 데이터가 유실될 수 있음을 야기할 수 있다. 본원에 제시된 특징들에서, 업데이트된 데이터는 초기에는 MLC 메모리 구역 내 대응하는 페이지의 데이터에 논리적으로 연관된 업데이트 블록(UB)으로서 바이너리 메모리에 기입된다. 업데이트된 데이터는 또 다른 바이너리 블록에서 스스로 더욱 업데이트될 수 있다(업데이트 블록의 업데이트(UoUB). 필요하다면, 업데이트들은 합체되어 D3 블록에 폴딩될 수 있다. "가상 업데이트 블록" 또는 "VUB"는 3개의 완전한 업데이트 블록들(혹은, 더 일반적으로는, 시스템에서 사용되는 구조에 따라 큰 논리 그룹 상에)로 구성될 것이다. 이러한 VUB는 D3 블록을 위한 업데이트 블록이 될 것이며, 여기에서 "가상"이라는 것은 이것이 3개의 업데이트 블록들로 구성된 것을 지칭한다.
한 세트의 바람직한 실시예들에서, 아키텍처는 3개의 D1/바이너리 블록들로 구성된 업데이트 블록들을 특징으로 하는데 여기에서 예를 들면, 연무-미세 프로그래밍 동작을 사용하여 D1 블록들에서 D3 블록으로 데이터를 카피하는 폴딩 동작에 앞서 D3 블록에 프로그램될 모든 데이터의 전체적인 이미지가 생성된다. 다시 도 14를 참조하면, 이것은 시스템에서 데이터 흐름을 예시한 것으로, 이에 관련하여 예시적 실시예가 이제 더 상세히 기술된다.
D3 블록들은 단일의, 완전히 기입된 폐(closed) 가상 업데이트 블록, 또는 각자가 논리 그룹 트리플렛에 대한 데이터를 내포하는 한 세트의 3개의 D1 블록들로부터 전체 논리 그룹 트리플렛, 또는 한 세트의 3개의 이웃한 논리 그룹들을 폴딩 또는 카피하는 동작에 의해 기입된다. 즉, 트리플렛 내 모든 논리 그룹들은 D3 메모리(303)에 폴딩하기 전에 D1 메모리(301) 내 가상 업데이트 블록들에 완전히 합체될 것이다. (다른 실시예들에서, D3 블록들은 D1에 가상 업데이트 블록에 기입됨에 없이 새로운 데이터로 프로그램될 수 있지만, 이것은 파워 상실의 경우에 데이터가 변질될 수 있을 큰 데이터 버퍼를 요구하기 때문에 여기에서는 바람직하지 않다).
논리 그룹은 플래시 소스들로부터 판독시 ECC 체크 및 필요하다면 ECC 정정과 함께 마지막 업데이트 블록에 함께 합체될 필요가 있다. D1 업데이트 블록들은 위에 "주 부분 및 바이너리 캐시 부분으로 분할된 메모리" 단락에서 위에서 인용된 참조문헌들에서 업데이트 블록들이 사용되는 바와 거의 동일한 방식으로 할당되어 사용되어 각기 한 논리 그룹에 대한 데이터를 저장할 수 있다. 도 15는 한 업데이트 블록과 함께 업데이트 그룹을 도시한 것이다. 여기에서는 "중간" 블록인 D3 블록(401) 내 논리 그룹들 중 한 그룹에 대해서, 업데이트된 데이터가 인입되어 D1 블록(403)에 저장된다. 빗금친 부분(405)은 이 업데이트된 데이터에 대응하며 407은 미사용된 부분에 대응한다. 업데이트된 데이터가 업데이트 블록(403)에 저장되기에 앞서, 이 블록(403)은 사전에 D3 블록(401)에 연관될 필요가 없고, 필요시 할당되어 논리적으로 연관된다.
이렇게 하여, D1 메타-블록들은 업데이트 그룹들(UGs)에 할당될 수 있다. 복수의 D1 메타블록들은 도 16에 도시된 업데이트의 업데이트 메커니즘에 따라 UG에 할당될 수 있다. D1 블록(403)에 저장되는 데이터의 초기 업데이트에 이어, 데이터 세트의 추가의 업데이트가 호스트로부터 인입된다. 이러한 업데이트의 업데이터를 위해서 또 다른 D1 블록(409)이 할당되는데, 이러한 업데이트는 첫번째 업데이트에서 업데이트되지 않았던 이 논리 그룹의 부분들을 위한 것뿐만 아니라 앞선 업데이트(405)에 대해 업데이트된 데이터를 포함할 수 있다.
401과 같은 공통 D3 메타블록에 저장될 3개의 논리 그룹들(여기에서는 LG X, LG X+1, LG X+1로서 표기되었다)을 여기에서는 논리 그룹 트리플렛이라 한다. 폴딩하기에 앞서 논리 그룹 트리플렛을 위한 모든 관계된 UG들은 도 17에 도시된 바와 같이, 각각 단일 UB에 합체될 것이며, UB(403) 및 UB(409)는 LG X+1을 위해 합체된다. LG X 및 LG X+2을 위한 원래의 블록(401)으로부터의 데이터는 새로운 블록(401')에 폴딩되기 위해 사용된다.
D3 블록 상에 논리적 그룹들 중 하나 이상이 도 18에 도시된 바와 같이 이러한 식으로 업데이트될 수 있다. 이에 도시된 바와 같이, 물리 D3 블록 내 논리 블록들 상에 전부는 종국에 D3 블록(401')에 폴딩되기 전에 D1 블록(409, 411, 413)에 업데이트되었거나, 또는 업데이트의 업데이트가 되었다.
D1 업데이트 블록들은 요구만 있으면 동적으로 할당할 수 있다. 이것은 물리적 스크램블과 같은 동작들을 지원하는데 요구되는 카피 오버헤드량을 감소시킬 수 있게 하며 업데이트의 업데이트 메커니즘을 지원하기 위해 D1 블록들을 더욱 효율적으로 사용할 수 있게 한다. 온-칩 데이터 폴딩을 사용하는 실시예와 같은 실시예들에 있어서, 논리 그룹을 위한 업데이트 그룹에 할당된 모든 D1 블록들은 동일 다이 내에 위치된다. 복수-다이 구성에서, 블록 선택 알고리즘은 바람직하게는 모든 다이들 내 가상 업데이트 블록들을 균등하게 개방하려고 시도한다. 일단 개방된 가상 업데이트 블록이 다이 X에서 생성되면, 모든 다른 다이는 바람직하게는 다음 개방된 가상 업데이트 블록이 다이 X에서 생성되기 전에 한 개방된 가상 업데이트 블록이 생성되게 한다. 이 규칙에 대한 한계는 다른 다이들에 자유 블록들을 모두 소진하였을 때일 수 있다. 모든 블록들 간에 소거/재기입 횟수들을 평준화하는 것 외에도, 마모 평준화 알고리즘은 바람직하게는 모든 다이 간에 자유 블록들의 수에 균형을 맞추려고 할 것이다.
도 19는 대안적 실시예를 도시한 것이다. 앞에서와 같이, 가상 업데이트 블록(VUB)은 폴딩 전에 전체 D3 블록을 위한 데이터를 내포하기 때문에, 3개의 UB들로 구성된다. 대안적 실시예는 VUB가 한 D3-블록-크기의 논리 그룹(LG)에 대한 데이터를 갖는 반면 주 실시예는 3개의 D1-블록-크기의 논리 그룹들에 대한 데이터를 갖는 점에서 서로 다르다. 더 작은 논리 그룹들이 트리플렛으로 결합되기 때문에, 동작은 서로 유사한데, 폴딩이 필요하다면, 시스템은 폴딩 전에 완전한 VUB이 되게 하기 위해 3개의 D1 블록들을 모을 것을 필요로 할 것이다. 차이는 어드레싱 방법(LG당 하나의 GAT 엔트리, GAT 엔트리는 메타-블록 어드레스 및 페이지 태그값을 갖는다)에 있어서, 작은 LG들에 경우, 시스템은 개개의 LG들이 이들 자신의 페이지 태그 오프셋을 가질 수 있게 하며, 트리플렛 및 D1 업데이트 블록들 내 2 또는 3개의 LG들에 대한 호스트 업데이트가 서로 다른 페이지 태그들을 갖는 경우엔 카피의 량을 최소화할 수 있다는 것이다. 이 경우에, 시스템은 페이지 태그가 동일하게 되게 하기 위해 카피 없이 이들 UB들을 VUB에 결합할 수 있다.
이러한 배열은 또한 대리인 문서번호가 10519/1131이고 본원과 동시에 출원 중인 "Method and System for Achieving Die Parallelism Through Block Interleaving" 명칭의 미국특허출원에 기술된 바와 같이, 폴딩 동작들로부터 분리되는 가상 업데이트 블록 합체를 지원하기 때문에 더 높은 성능의 병렬 폴딩 모드도 지원할 수 있다. 자주 업데이트되는 업데이트 블록들은 D1 블록 풀(pool)에 있고 D3 블록 풀은 바람직하게는 온전한 블록들에 대해서만 사용되기 때문에, 시스템은 고 내구성을 나타낼 것이다. 업데이트 블록들을 바이너리로 유지하고 온전한 블록들에 대해선 MLC 메모리에만 기입함으로써, 이것은 물리 데이터 스크램블을 지원하는 온-칩 데이터 폴딩도 할 수 있게 한다.
온-칩
폴딩을
위한 데이터 전송 흐름
앞에 단락들은 메모리의 바이너리 구역이 다시 패키지되어 복수-상태 포맷으로 기입되는 온-칩 데이터 폴딩의 개념을 사용하였다. 지금까지 이 프로세스는 개개의 다수 세트들의 데이터가 폴딩되는 것만이 고찰된 의미에서, 별개로만 고찰되었다. 어떻게 데이터가 바이너리로 기입되고 이어 복수-레벨로 기입되는가와 이들 서브(sub)-프로세스들의 관계 및 타이밍이 어떻게 서로 관계를 맺는가에 대한 전체적 흐름은 고찰되지 않았다. 이것이 이번 단락과 다음 단락에서 고찰된다. 이 단락은 이를테면 논리적으로 연속한 페이지들의 데이터가 전송될 때 행해지게 되는 것과 같이, 폴딩 동작을 통해 호스트로부터 바이너리로 그리고 이어 복수-레벨 메모리로 데이터의 일종의 균형 흐름을 고찰한다. 다음 단락은 바로 전 단락의 업데이트들과 같은 비순차적 전송들의 경우도 고찰할 것이다.
도 20은 이 프로세스를 예시하는데 도움을 줄 수 있는 것으로서, 위에 논의된 메모리 시스템의 많은 구성요소들을 도시하고 있으나 이 논의의 목적상 단순화되었다. 데이터는 호스트(501)에서 메모리(503)로 전송되는데, 이것은 초기에는 전형적으로 제어기의 일부인 휘발성 버퍼 메모리 RAM(511)에 저장된다. RAM(511)으로부터 데이터는 비휘발성 메모리(513)에 기입되고, 먼저 바이너리 구역 D1(515)에 그리고 이어서 MLC 구역 D3(517)에 기입된다. D1에서 D3으로의 온-칩 폴딩 동작에서, 초기 D1 기입 동작 및 폴딩 동작 둘 다를 위해서 동일한 판독 기입 레지스터들 및 그외 주변 회로가 사용된다. 결국, 이들 동작들은 동시에 행해질 수 없다. 간단히 하기 위해서, 호스트가 상당량의 논리적으로 연속된 데이터를 전송하는 예를 고찰한다. 휘발성 RAM(511)은 비교적 작기 때문에, 데이터는 바이너리 D1 메모리(515)에 규칙적으로 기입될 필요가 있을 것이며, D1은 종국에는 가득 채우기 시작할 것이기 때문에, 데이터는 비교적 저속의 복수-상태 기입 동작에서 D3 메모리(517)에 폴딩될 필요가 있을 것이다. 성능을 최적화하는 것은 이들 동작들 간에 균형을 요구한다.
다음에서는, 호스트로부터 수신되고 이어 바이너리 또는 D1 메모리에 기입되며 각 물리 페이지는 단일 논리 페이지의 데이터를 저장할 수 있는 논리 페이지들의 데이터에 관하여 주로 논의될 것이다. 폴딩 프로세스에서, MLC 메모리는 물리 페이지당 N 논리 페이지들을 저장하는 것으로서 기술될 것이다. 그러나, 더 일반적으로, 부분 페이지 동작들이 있을 수도 있다. 또한, 논리 데이터는 물리 페이지들 간에 더 복잡한 형태로 분산될 수 있고, 따라서 폴딩은 다이렉트 3-페이지(D1에서 D3로의 예에 경우) 대 단일 페이지 매핑이 아니고 오히려 3-대-1 비를 가진 매핑일 수도 있다. 유사하게, 물리 페이지(동시에 기입될 수 있는 단위)가 일반적으로 전체 워드라인에 연관될지라도, 다른 일반적 배열들이 사용될 수도 있다.
다음에서 논의는 복수-상태 프로그래밍 알고리즘을 위한 연무-미세 방법 맥락에서 기입/폴딩 동작들, 판독 동작들, 및 카피 동작들을 포함한 데이터 전송 흐름을 고찰할 것이다. 위에 언급된 바와 같이, 도 7f에 관련한 논의에서, 데이터 내용은 연무 프로그래밍 국면의 끝에서 쉽게 추출될 수 없다. 전처럼, 실시예는 다시 여기에서 D3 메모리라 칭하는 것인 셀 당 3-비트들을 저장하는 MLC 메모리에 기초할 것이다.
"원자(atomic) 기입"은 첫회, 연무 및 미세 프로그래밍 국면들을 함께 결합하는 내부 폴딩 동작을 지칭하기 위해 사용될 것이다. 도 7f를 참조하면, 워드라인에 D3 기입에 있어서, 첫번째 프로그래밍이 완료되거나 첫회 국면 및 연무 페이지만이 프로그램된다면, 데이터는 올바르게 판독될 수 없다. 연관된 미세 페이지가 3개의 페이지들이 올바르게 판독될 수 있는 이 워드라인에 프로그램되는 것은 단 한 번뿐이다. 결국, 첫회 또는 연무 기입 국면들 후에, 그러나 미세 국면을 완료하기 전에 파워 사이클 또는 어떤 종류의 프로그램 실패가 있다면, 메모리 시스템은 데이터를 변질시켰들 수도 있다. 이 상황은 Gorobets 등에 의한 명칭 "Atomic Program Sequence and Write Abort Detection"에서 더욱 고찰되어 있다.
바이너리 기입들 및 폴딩 동작들 모두가 수반되는 데이터 전송 흐름에서, 프로그래밍 국면들(이를테면 첫회, 연무 및 미세) 사이에 바이너리 블록에 호스트 데이터 기입이 없는 경우 이들 프로그래밍 국면들 모두를 단일 동작으로서 그룹화하는 수행은, 이제 기술되는 바와 같이, 프로그래밍 동작이 분할되는 만큼 좋은 것은 아니다. 실시예는 프로그래밍 시퀀스의 국면들을 두 부분들로서 1) 첫회 및 연무; 2) 미세로 나눈다. 새로운 호스트 데이터가 이제 두 국면들 사이에 올 수 있게 된다. 이것은 이에 대한 결점으로서, 기입되는 데이터가 기입 중단(abort) 검출 문제를 야기시킬 수도 있게 하는 "연무" 상황에 여전히 있는 시간을 증가시키는 결점이 있을지라도, 성능이 개선될 수 있게 한다.
기입 중단 검출 문제를 피하는 한 방법은 호스트가 파워 다운 명령을 보낼 때 메모리 시스템이 호스트 명령을 검출하고 미세 스테이지를 마칠 때까지 장치를 비지(busy) 상태로 유지하는 것이다. 마지막 기입 국면 실행이 미세 국면이었다면, 메모리 시스템은 특별히 아무 것도 할 필요가 없고, 반면 마지막 기입이 연무 국면이라면, 메모리 시스템은 미세 프로그래밍을 첨부할 수 있고 이어 일단 미세 국면이 완료되면 호스트에 준비(ready)로서 장치 해제한다.
도 20으로 돌아가서 호스트(501)로부터 비휘발성 메모리의 D3 부분(517)에 데이터의 전송 흐름을 고찰하면, 흐름은 (1) 호스트에서 RAM(511)으로; (2) 휘발성 RAM(511)에서 비휘발성 D1 메모리(515)로 전송되며; (3) D1(515)에서 D3(517)로 폴딩된다. 이 한 세트의 전송들은 일반적으로 3가지 각종의 호스트 데이터 흐름들로 배열될 수 있다.
정상상태, 이 상태에서는 D1에 입력되는 량이 D1에서 D3으로 폴딩되는 량보다 더 많게 또는 더 적게 되도록 균형을 맞춘다. 이 배열은 확장된 순차 전송들에 대해 더 나은 성능을 제공한다.
D1에서 D3으로 폴딩보다 더 많은 D1 기입. D1 기입들은 폴딩 동작들보다 더 빠르기 때문에, 이 상태는 정상상태 경우보다는, 그렇지만 어떤 시점에선 지속불가능하게 될 수도 있을 D1 메모리 블록들을 사용하는 댓가로 더 나은 수행을 준다.
D1 기입보다 더 많은 D1에서 D3으로의 폴딩. 이 상태에서 수행은 정상상태 경우보다는 느리지만, 다음 단락에서 논의되는 바와 같이, 이것은 "긴급" 모드에서 더 많은 D1 블록들을 해방시키기 위해 사용될 수 있다.
지속된 수행을 얻기 위해서, 시스템은 D1 호스트 기입 및 D1에서 D3으로의 폴딩 간에 일종의 균형에 이를 필요가 있을 것이다. 이 단락은 폴딩 기입과 바이너리 기입이 인터리브된 "균형" 모드의 데이터 전송을 기술한다. 실시예는 이것을 D1 메모리에의 기입들을 폴딩 프로세스에서 사용되는 복수-레벨 프로그래밍의 연무 국면과 미세 국면 사이에(그리고 미세와 연무 사이에) 배치함으로써 행한다.
도 21의 전송 흐름은 반-자율적 메모리 어레이(즉, 단일 다이 또는 플레인)에 대한 실시예를 도시한 것이다. 균형 모드에서 단일 논리 그룹 폴딩에 있어서는 2가지 기본 상황들이 있다. 첫번째 상황에서, 데이터는 (첫회 + 연무 + 미세)의 원자 기입을 사용하여 폴딩되고, D1으로 데이터의 호스트 전송들은 이들 완전한 복수-상태 프로그램 사이에 행해진다. 도 21은 D1 데이터 기입들이 삽입될 때의 경우를 도시한 것으로, 따라서 원자 기입은 이제 (호스트 데이터의 첫회 + 연무 + D1 기입, 호스트 데이터의 미세 + D1 기입)이 된다.
도 21의 맨 아래를 참조하면, 이것은 D1에서 D3으로의 폴딩 프로세스의 스테이지들을 도시한 것이다. (도 21이 정확히 척도에 맞게 도시되지 않았을지라도, 여러 요소들의 크기들은 연루된 상대적 시간척도의 적합한 근사치를 준다). 실시예에서, 3개의 D1 블록들은 한 D3 블록으로의 폴딩을 위해 사용가능하며, 따라서 이들 D1 데이터 페이지들 모두는 D3으로의 폴딩을 위해 사용가능하다. 제 1, 연무, 및 미세 스테이지들에 있어서는 D1 블록들로부터 3개의 워드라인들(이들을 x, y, z라 함)이 사용된다. 폴딩 프로세스에서, 페이지 x는 판독/기입 데이터 래치들(701)에 읽혀지고 이어서 제 1 프로그래밍 단계(703)에서 D3 워드라인에 기입된다. 연무 단계에 있어서, x, y, 및 z가 필요해지고 래치들(705)에 읽혀지며 메모리는 D3 워드라인에 연무 기입(707)을 실행한다. 이어서 미세 국면이 이어지고, 다시 워드라인들 x, y, 및 z이 판독/기입 래치들(709)에 로드되며 미세 기입(711)을 위해 D3 워드라인에 프로그램된다. 이것은 제 1, 연무, 미세 스테이지들을 완료하며 데이터가 판독될 수 있다. (연무-미세 프로그래밍 알고리즘은 도 7f에 관련하여 위에서 더 상세히 다루어져 있다)
그러나, 미세 국면에서 D3 워드라인의 프로그래밍을 완료하기 위해 연무 국면부터 곧바로 진행하기보다는, 이들 국면들은 분할되고 D1에의 기입이 실행된다. D1 기입은 먼저 제어기의 RAM으로부터 데이터 세트를 메모리 회로에 전송하는 것을 수반하며(721에서 RAM에서 NAND로) 데이터는 데이터 래치들에 로드되고 이어 D1 메모리에 기입된다(723에서 호스트 D1 기입). 이어 유사한 다음 폴딩 동작을 시작하기 전에 미세 국면 후에 D1 기입이 수행된다.
이것은 여기에서는 호스트로부터 순차적인 데이터의 지속된 기입을 위해 바람직한 것으로 균형이 D1 기입들과 D1에서 D3으로의 폴딩 사이에서 달성될 수 있게 한다. (707, 711에서 폴딩되는 데이터는 723에서 기입되는 동일한 한 세트의 데이터가 아니며 D1에 이전의 기입으로부터의 한 세트의 데이터임에 유의해야 한다). 데이터가 721에서 RAM으로부터 전송되었기 때문에, 이것은 호스트로부터 더 많은 데이터를 수신하기 위해 비교적 한정된 용량인 RAM을 개방하였으며, 호스트에서 RAM으로의 전송은 비휘발성 메모리 회로를 수반하거나 이의 래치들을 사용하지 않기 때문에, 이들 호스트에서 RAM으로의 전송은 복수-레벨 메모리 기입의 여러 국면들 뒤로 가려질 수 있어 수행을 더욱 개선한다. 이에 따라, 735 및 737에서 전송들은 721에서 RAM으로부터 그뒤에 전송된 데이터를 제공하였던 초기 국면들(701 ~ 707) 뒤로 가려진 731 및 733에서의 전송들과 같이, 미세 프로그래밍 국면과 파이프라인 된다. (다시 도 20을 참조하면, (1)로 표시한 전송들은 (2)로 표시한 전송들 뒤로 유효하게 가려질 수 있다. 이 프로세스는 전송이 완료될 때까지 이러한 식으로 계속된다).
특정 실시예를 위해 더 상세히 도 12의 프로세스를 고찰하면, 미세 또는 연무 국면들 중 어느 하나 다음에, D1에서 D3으로의 폴딩의 국면들 사이에서 D1 메모리에 기입되는 데이터량은 RAM 메모리의 크기에 관계된다. 값들이 도 21에 도시된 실시예에 있어서, 데이터 전송을 위한 RAM 크기는 32KB로 설정되며, 따라서, 도 21(및 다음에 논의되는 도 22)에서 보는 바와 같이, 16KB의 D1 데이터의 전송이 있다. 이론적으로, RAM은 폴딩 프로세스 동안에 32KB의 호스트 데이터(2 x l6KB)로 채워된다. 반드시 아직은 프로그램되지는 것은 아니지만 일단 16KB가 D1 메모리로 전송되면(721에서), 16KB 데이터를 유지하고 있었던 RAM의 부분은 새로운 데이터를 받아들이기 위해 해방될 수 있다.
증가된 성능을 위해서, 이 프로세스는 복수의 다이들에 걸쳐 병렬로 실행될 수도 있다. 도 22a는 3-다이 예를 도시한 것이다. 여기에서, 모든 다이는 병렬로 폴딩 동작들의 국면들을 실행한다. 연무 국면 및 미세 국면 둘 다 후에, 데이터는 다시 RAM에서 비휘발성 메모리로 전송되고, 이것은 D1에 기입된다. 이 예에서, RAM 메모리의 사용을 최대화하기 위해 2 x 16KB의 D1 데이터가 함께 전송된다. RAM으로부터 D1 전송들은 다이들 중 어느 하나로의 전송일 수 있는데, 예를 들면 순서대로 이들을 거쳐 순환하고, 이들을 모든 3개의 다이들은 병렬로 이들의 폴딩 국면들을 실행한다. (이러한 전송들에 관한 더 상세한 것은 대리인 문서번호가 10519/1131인 "Method and System for Achieving Die Parallelism Through Block Interleaving"에 주어져 있다).
유사하게, 도 22b는 4-다이 병행도의 예를 제공한다. 4-다이 동작이 예로부터, 2 x 32KB의 데이터가 폴딩 국면들 사이에서 D1에 기입되고, 그럼으로써 더 나은 성능을 달성한다. 여기에서 제시되고 다음 단락에서 더욱 논의되는 일종의 균형 폴딩에 있어서, 폴딩 량(output)은 D1 기입량(입력)보다 더 빠를 것이 바람직하다. 이유는 시스템 D1 자원들을 더 낫게 준비하기 위해서 시스템이 새로운 호스트 데이터를 받아들이는 것보다 'D1에서 D3으로'에서 데이터를 더 빠르게 비울 수 있기 위한 것이다. 호스트 D1 기입 레이트가 D1에서 D3으로의 폴딩 레이트보다 크다면, 시스템은 더 많은 호스트 데이터를 받아들이는 것으로부터 얼마간 D1 메모리가 다소 동결상태(freeze)가 될 것을 필요로 하는 재귀 상태(recursive condition)로 진입할 수도 있을 것이다. 이것은 어떤 응용들을 위한 기입 타임아웃 제한을 위배할 수도 있을 것이다. 이러한 이유로, D1 기입들 대 D1에서 D3으로의 폴딩의 상대적 비에 대한 균형 모드이더라도, 일반적으로 양은 D1 기입들의 양보다 더 많을 것이 바람직하다. 이들 우려가 다음 단락에서 더욱 고찰된다.
복수-기어(
Multi
-
Gear
) 데이터
폴딩
바이너리 데이터 기입들을 폴딩 동작과 결합하는 균형 모드는 호스트 데이터가 D3 메모리에 폴딩과 함께 D1 메모리에 기입되는 레이트들을 대체로 균등화하기 때문에 많은 논리적으로 연속된 데이터를 기입하는데 적합하다. 이외의 상황들에 있어서는, 서로 다른 비들로 이들 동작들을 결합하는 것이 바람직할 수 있다. 예를 들면, 전송될 데이터량이 비교적 작다면, D1 메모리의 가용한 용량을 초과하지 않을 것이기 때문에, 폴딩 동작들이 유예되고 모든 데이터가 바이너리 형태로 기입된다면 데이터는 더 신속하게 기입된다. 반대로, D1 블록들의 공급이 부족하게 된다면, D1 메모리를 해방시키기 위해 가외의 폴딩 동작들이 필요할 수도 있다.
예를 들면, 호스트는 메모리에 많은 비-순차적 데이터를 보낼 수 있다. 이것은 가상 업데이트 블록 단락에서 위에 기술된 바와 같이, 다수의 서로 다른 블록들에 대한 업데이트된 데이터일 수도 있을 것이다. 상당수의 블록들에 대한 업데이트들이 있을 수 있지만 이 경우 각 업데이트는 비교적 소량의 데이터에 대한 것이다. 이 데이터의 총량이 비교적 신속하게 호스트로부터 전송될 것이지만, 상당 수의 D1 메모리 블록들에 기입되어, 가용한 수의 D1 블록들은 균형 모드의 폴딩 동작이 새로운 D1 블록들을 해제하는 것보다 더 빠르게 소진되게 할 것이다. 이러한 상황을 처리하기 위해서, 이 단락은 많은 수의 폴딩 동작들이 실행되는 "긴급 모드"를 도입한다. 또한, 이 긴급은 이를테면 가외의 폴딩 동작들을 위한 시간이 추가될 수 있게 하는 것으로서 명령이 인식될 때와 같은 다른 상황들에서 작동될 수도 있다. 균형 및 긴급 모드들, 또는 기어들(gears) 외에 실시예는 백그라운드 모드도 가능하게 한다.
지금까지 기술된 기술들에서, 메모리 시스템이 호스트 전송들을 기다리기 때문에 메모리 시스템에선 데드 타임이 있을 수 있고, 따라서 순차적 기입 수행이 최적화되지 않는다. 또한, 기본적인 온-칩 폴딩 방법은 인입되는 데이터량과 폴딩되는 데이터량을 고려하지 않으며 이들 동작들의 상대적 레이트들의 속도와 제어를 전환하는 메커니즘이 없다. 이를 해결하기 위해서, 본 단락은 복수-기어 폴딩 제어를 도입하며 이것은 실시예에서 3가지 모드들로서, 1) 순차적 수행을 위해 폴딩 및 호스트 전송의 인터리브를 최적화하는 균형 폴딩 모드; 2) 카피 및 이외 내부 취급 동작들을 취급할 수 있는 긴급 모드, 및 3) 메모리가 호스트에 의해 능동적으로 연루되고 있지 않을 때 폴딩, 카피, 및 그외 내부 취급 동작들을 취급하는 백그라운드 또는 아이들 시간 모드를 갖는다. 이렇게 하여, RAM의 사용이 최적화된다. 시스템 성능은 균형 폴딩의 프로그래밍 동작들 뒤로 가려질 수 있는 호스트-대-RAM 전송의 량을 증가시킴으로써 개선된다. 긴급 및 폴딩 모드들 외에 백그라운드 모드를 포함시킴으로써, 시스템 성능이 더욱 향상된다.
균형 모드 폴딩은 지속적인 순차적 기입 수행을 유지하기 위해 펌웨어 또는 시스템 알고리즘을 사용한다. 위에 기술된 아키텍처에서, 호스트 데이터는 먼저 D1 블록들로 가고, 이어 D3 블록에 폴딩되어야 한다. 소정의 기간에 걸쳐, 지속적인 시스템 기입 수행을 유지하기 위해서, D1에 기입되는 데이터량은 D1에서 D3로부터 폴딩되는 데이터량과 필수적으로 동일해야 한다. 이것을 위한 한 배열은 바로 전 단락에서 제시되었다. (더 일반적으로, 균형 모드는 바로 전 단락에서 기술된 바와 같이, 폴딩의 연무 및 미세 국면들 사이에 D1을 삽입하거나 삽입없이 될 수 있다). 이 균형을 유지하기 위해서, 가비지 수거는 없어야 하고 인입되는 호스트 데이터는 순차적 순서로 되어 있어 바이너리 캐시가 아니라 D1 업데이트 블록들에 보내져야 한다. 예를 들면, 폴딩보다 D1 기입들이 더 많은 것과 같이 D1 기입 및 D1에서 D3으로의 폴딩의 량이 균형이 맞지 않으면, 이 기간 동안 더 큰 버스트 수행이 있게 될 것이다. 반대로, D1 기입량이 폴딩량 미만이라면, 수행은 결코 지속적 수행이 안 된다.
긴급 모드 폴딩에서, 펌웨어/시스템 알고리즘은 D1 기입들에 비해 폴딩 동작들의 수를 증가시킨다. 예를 들면, 호스트 전송들의 수는 호스트에 의해 허용되는 정도까지 감소될 수 있어 가외의 폴딩에 집중하는데 사용할 수 있다. 이것은 업데이트 자원을 해방시키거나 시스템이 판독 스크럽, 마모 평준화, 프로그램 실패 처리, 등과 같은 일부 내부 클린 업 동작들 또는 실패 처리를 행하게 할 수 있다. 긴급 모드 폴딩에 있어서, 시퀀스는 폴딩에 앞서, 도 18에 도시된 것과 같이, 3개의 가상 업데이트 블록들을 셋업하기 위한 준비 스테이지를 포함할 수도 있을 것이다. 이 경우에, (D3 판독 + D1 기입) 또는 (D1 판독 + D1 기입)와 같은 내부 카피 동작들만이 있다. 가상 업데이트 블록들이 셋업된 후에, 주로 D1에서 D3으로의 폴딩이 실행되는 긴급 폴딩 모드가 사용될 수 있다. 또한, 기입 타임아웃 제한을 가진 경우들에 있어서, 시스템은 카피 동작들 및 폴딩 동작들을 국면들로 분리할 수 있고, 각 국면은 메모리 회로에 한 섹터의 호스트 데이터 기입이 기입 시간 예산을 충족하게 허용된다.
도 23은 제어기가 데이터 전송을 위해 32KB의 RAM 크기를 갖는다고 가정하고, 순차적 기입 경우를 위한 데이터 전송 흐름의 실시예를 도시한 것이다. 도 23은 도 21과 유사하게 도시되고, 또한 이의 좌측 부분 상에 균형 모드 폴딩 및 호스트 데이터 기입을 도시하고 있지만 이 예에 있어서는 폴딩 동작에서 사용되는 복수-상태 기입의 국면들 사이에 D1 기입이 삽입된다. (이것은 복수-상태 프로그래밍 동작이 연무-미세 종류인 것인 실시예에 대한 것이지만 전처럼 다른 복수-국면 프로그래밍 동작들이 사용될 수도 있을 것이다). 메타 블록 기입에 있어서, 동작들의 두 부분들로서 1) 폴딩 및 호스트 기입의 인터리브; 및 2) D1에만 호스트 기입이 있다.
이들 부분들 중 첫 번째 부분에 있어서, 시스템은 일련으로 폴딩의 첫회, 연무 및 미세 국면들 각각을 통해 한 메타 페이지를 폴딩할 것이며, 폴딩되는 총 데이터는 48KB이다. 동시에 32KB의 호스트 데이터가 RAM에 전송되며, 호스트 전송 시간은 호스트 전송이 48KB 폴딩보다 빠르기 때문에 첫회/연무/미세 프로그래밍 동안 완전히 가려진다. 미세 국면이 프로그래밍을 완료한 후에, RAM에 저장되는 32KB 호스트 데이터는 메모리에 전송되고 2개의 D1 메타 페이지들에 프로그램된다. 그러므로, 각각의 첫회 + 연무 + 미세 폴딩(48KB)에 이어 2 바이너리 페이지들 기입(32KB)이 이어진다. 이러한 속도와 균형으로, 바이너리 블록이 2/3 채워졌을 때, 전체 MLC 블록은 D1에서 D3으로의 폴딩을 완료하였다. 나머지 1/3 바이너리 블록에 대해서, 도 23의 우측에 기술된 나머지 바이너리 블록을 완료하기 위해 연속된 호스트 기입이 있다. 수행에 관하여, 폴딩 및 호스트 기입의 인터리브는 지속 수행보다 낮은 버스트 수행이 되게 하는데, 호스트가 D1 단독 모드로 기입한다면, 이것은 지속적 수행보다 높은 버스트 수행이 되게 하며, 이것은 MLC 메타-블록 단위로 유지된다.
도 24 및 도 25는 전송 부-요소들의 서로 다른 조합들을 갖는 (균형 모드 폴딩 + 호스트 전송)의 2가지 변형예들을 도시한 것이다. 도 24 및 도 25은 단일 다이를 사용하나, 현재는 거의 바로 전 단락에 기술된 바와 같이 폴딩의 복수-상태 프로그래밍 동작의 연무 및 미세 국면들 사이에 D1 기입들을 삽입하고 있다. 이들 도면들은 이 삽입 동안 실행되는 D1 기입량이 다르다.
메모리 시스템이 업데이트 블록 자원을 해방시키거나 이를테면 무엇보다도 프로그램 실패 복구, 기입후 판독 복구(이를테면 대리인 문서번호가 0084567-640US1이고 본원과 동시에 출원 중인 Dusija 등의 "Non-Volatile Memory and Method with Post-Write Read and Adaptive Re-Write to Manage Errors" 명칭의 미국특허출원에 개시된 바와 같은), 판독 스크럽, 또는 마모 평준화과 같은 몇몇 내부 데이터 관리 동작들을 수행할 필요가 있는 상황들이 있을 수 있다. 시스템은 카피 및 폴딩을 수반하는 가비지 수거를 위해 긴급 모드에 진입할 수도 있다. 이에 폴딩 제어의 제 2 모드 또는 기어(gear)가 고려된다. 예를 들면, 긴급 모드 동안 동작들은 D1에서 D1으로 카피, D3에서 D1으로 카피, 또는 D1에서 D3으로 긴급 폴딩을 포함할 수도 있을 것이다. 메모리 시스템이 사용되는 제품 응용에 따라, 메타-블록 카피 및 긴급 폴딩은 단일 호스트 명령에 대해 일련으로 실행될 수 있고 가비지 수거 동안엔 호스트 전송은 없다. 타임아웃 제한(이를테면 SD 카드들, 이 경우 250ms 기입 타임아웃 제한이 있다)이 있는 응용들에 있어서는 요구될 수도 있는 스케쥴된 국면 가비지 수거와 같은 동작들을 위해 긴급 모드에서 과잉의 시간이 사용될 수 있는데, 예를 들면, 단일 섹터 호스트 기입이 있을 수가 있는데, 이때 특정 알고리즘에 따라, x 량의 카피 단계들이 수행되거나, y 량의 긴급 D1에서 D3으로의 폴딩이 수행된다.
사용 모델로부터 전원을 넣고 비교적 많은 량의 아이들 시간을 갖는 응용들에 있어서, 그리고 이들 응용들이 메모리 시스템 동작들을 위한 충분한 파워 예산을 허용한다면, 펌웨어는 시스템 성능을 향상시키기 위해 백그라운드 기입/판독/카피/폴딩 동작들을 실행하기 위해 시간을 사용한다. 펌웨어는 성능을 향상시키기 위해 차후에 기입 명령들에 대비하거나, 마모 평준화, 판독 스크럽, 프로그램 오류 취급 또는 향상된 기입후 동작들과 같은 내부 동작들을 수행하기 위해 업데이트 블록 자원을 해방시키는 것을 선택할 수 있다.
폴딩 동작, 동안 프로그래밍 시간들을 균형을 맞추는데 도움을 주기 위해서, 폴딩 단계는 여기에서는 1) 첫회 및 연무 프로그래밍 동작, 또는 2) 미세 프로그래밍 동작 중 어느 하나로서 정의된다. 균형 폴딩 모드에서, 시스템의 펌웨어는 폴딩 단계들의 수 및 각각의 작업을 위한 호스트 기입들의 수를 제어하는 폴딩 제어 파라미터들을 갖는다. 폴딩 단계들의 수 및 호스트 데이터 기입들의 수는 제품 성능 및 파워 요건들에 기초하여 달라질 수 있다. 시스템 펌웨어는 폴딩을 완료함으로써 업데이트 블록들을 해방시켜야 할 긴급 필요성이 있고, 이것이 긴급 모드 폴딩 제어 스레드(thread)에 속할 것이라면, 작업 기간당 폴딩 단계들의 수를 동적으로 증가시킬 수 있다.
제어기의 펌웨어가 기입 명령의 끝에 다가가고 있음을 인식할 때, 이것은 작업 기간당 폴딩 단계들의 특정된 수를 초과할지라도, 미세 프로그래밍 단계에서 끝내기 위해 폴딩 작업에 계속할 것을 알리는 폴딩 제어 플래그를 셋 할 수 있다. 이것은 폴딩 작업이 미세 프로그래밍 국면에서 끝나고 명령들 사이에 파워 사이클이 있다면 중단되었던 곳부터 폴딩 프로세스가 재개할 수 있음을 보증할 것이다.
백그라운드/아이들 시간 동작들에 있어서, 제어기의 펌웨어는 자원들을 해방시키거나 그외 하우스 키핑(house keeping) 동작들을 취급하기 위해서 폴딩량을 최대로 하기로 선택할 수 있다. 펌웨어가 백그라운드 폴딩에 연루된 동안 발행되는 호스트 명령이 있음을 인식할 때, 호스트 명령에 응답하기 위해서 신속하게 폴딩에서 나올 필요가 있다. 폴딩 프로세스가 D3 블록의 끝에서 완료된다면, 펌웨어는 폴딩 프로세스가 재개될 수 있음을 보증하는 미세 프로그래밍을 사용하여 아이들 시간 폴딩에서 나오기로 선택할 수 있다. 대안적으로, 펌웨어는 첫회, 연무 또는 미세 프로그래밍인지 관계없이 프로그래밍이 완료된 후에 아이들 시간 폴딩에서 나와, 필요시 새로운 D3 블록에 동일 가상 업데이트 블록의 폴딩 프로세스를 재개할 수 있다.
전환 모드에 관련한 제어 메커니즘이 도 28에 개요적으로 도시되었다. 균형 모드(801)는 긴급 모드(803)로 천이하고 이로부터 원래로 천이할 수 있다. 바로 전 단락에 기술된 바와 같이, 이들 모드들 중 어느 하나는 815 및 817에 나타낸 바와 같이, 백그라운드로 들어가고 어느 한 모드로 다시 천이할 수 있다.
균형 모드(803)는 대체로 데이터의 꾸준한 흐름을 갖는 순차적 기입들 및 유사한 이러한 동작들을 위해 사용된다. 제어기는 순차적 데이터의 도착을 판정한 것에 응하여 긴급 모드(813) 또는 백그라운드(815)로부터 이 모드로 전환할 수 있다. 또한, 이 모드는 시스템이 먼저 데이터를 수신하기 위해 호스트와 상호작용할 때 사용되는 초기 모드로서 사용될 수 있다.
긴급으로의 천이(811)는 이를테면 비-순차적 데이터를 수신하거나 또는 가용한 D1 메모리의 량이 낮은 그외의 상황들과 같은 위에 논의된 다양한 메커니즘들에 기초할 수 있다. 가외의 폴딩 동작들에 더 많은 시간을 허용하기 위해서, 메모리는 데이터 전송의 레이트를 늦추라는 지시를 호스트에 보낼 수 있는데, 다른 시스템들에서는 최소 전송 레이트가 지속되어야 하는 반면, 어떤 경우들에 있어서 전송은 유예될 수도 있을 것이다. 또한, 천이는 어떤 명령들 또는 유형들의 명령들에 응답한다. 예를 들면, 명령이 수행에 결정적이 아니라면, 적정하게 가능한 한 신속하게 행해질 필요는 없고 수행 요건을 위한 어떤 소정의 시간 배당으로 완료되기만 하면 되기 때문에, D1 자원들을 해방시키기 위해 긴급 모드에서 임의의 과잉의 시간이 사용될 수 있다. 이것은 파일 액세스 테이블(FAT) 업데이트들과 같은 제어 또는 데이터 관리 데이터의 전송들에 대한 경우일 수도 있을 것이다. 다른 변형예들에서, 이를테면 시스템 제어 데이터가 유지되는 경우와 같은 특정한 어드레스들에 어드레스되는 기입들이 긴급 모드를 시작하게 할 수도 있을 것이다. 또 다른 예들은 기입 또는 그외 실패들을 포함하며 이의 복구로부터 현저한 량의 데이터 재-기입이 수반될 수도 있을 것이다.
"복수-기어" 폴딩 제어의 이러한 수법은 서로 다른 병행도들에도 적용될 수 있다. 도 26 및 도 27은 더 나은 순차적 기입 수행을 달성하기 위해 균형 모드에 대한 2-다이 병렬 폴딩의 예를 도시한 것이다. 전처럼, D1 기입들은 도 27에 도시된 바와 같이, 연무 국면과 미세 국면 사이에 삽입될 수 있다.
결어
발명의 전술한 상세한 설명은 예시 및 설명의 목적으로 제시되었다. 전부 다이거나 개시된 정밀한 형태로 발명을 한정하는 것이 아니다. 많은 수정예들 및 변형들이 위에 교시된 바에 비추어 가능하다. 기술된 실시예들은 발명의 원리 및 이의 실제 응용을 최상으로 설명하기 위해 선택되었으며, 그럼으로써 당업자들이 여러 실시예들에서 그리고 고찰되는 특정한 사용에 적합한 다양한 수정예들을 사용하여 발명을 최상으로 이용할 수 있게 한 것이다. 발명의 범위는 이에 첨부된 청구항들에 의해 정의되게 한 것이다.
80: 호스트
90: 메모리 시스템
100: 제어기
110: 인터페이스
120: 프로세서,
121: 선택적 코프로세서
124: 선택적 프로그램가능 비휘발성 메모리
200: 플래시 메모리
90: 메모리 시스템
100: 제어기
110: 인터페이스
120: 프로세서,
121: 선택적 코프로세서
124: 선택적 프로그램가능 비휘발성 메모리
200: 플래시 메모리
Claims (11)
- 휘발성 버퍼 메모리 및 비휘발성 메모리 회로를 포함하는 메모리 시스템을 동작시키는 방법으로서, 상기 비휘발성 메모리 회로는 데이터가 바이너리 포맷으로 저장되는 제 1 구역, 및 데이터가 복수-상태 포맷으로 저장되는 제 2 구역을 갖는 것으로, 상기 방법은
호스트로부터 데이터를 수신하는 단계;
상기 수신된 데이터를 상기 버퍼 메모리에 저장하는 단계;
상기 버퍼 메모리로부터 상기 데이터를 상기 비휘발성 메모리 회로의 판독/기입 레지스터들에 전송하는 단계;
상기 판독/기입 레지스터들로부터 상기 데이터를 상기 비휘발성 메모리의 상기 제 1 구역에 바이너리 기입 동작을 수행하는 단계; 및
이에 이어, 상기 비휘발성 메모리의 상기 제 1 구역으로부터 상기 데이터의 부분들을 상기 비휘발성 메모리의 상기 제 2 구역에 폴딩하는 단계를 포함하고, 폴딩 동작은
상기 제 1 구역 내 복수의 위치들로부터 상기 데이터의 부분들을 상기 판독/기입 레지스터들에 읽어들이는 단계; 및
상기 판독/기입 레지스터들로부터 상기 데이터의 부분들을 상기 비휘발성 메모리의 상기 제 2 구역의 위치로 복수-상태 프로그래밍 동작을 수행하는 단계를 포함하고,
상기 복수-상태 프로그래밍 동작들은 제 1 국면 및 제 2 국면을 포함하며, 하나 이상의 바이너리 기입 동작들은 상기 복수-상태 프로그래밍 동작들의 상기 국면들 사이에서 수행되는 것인, 방법. - 제 1 항에 있어서, 상기 제 2 구역은 셀당 N-비트 포맷으로 데이터를 저장하며,
상기 호스트로부터 수신된 상기 데이터는 복수의 논리 페이지들의 데이터에 대응하며, 상기 바이너리 기입 동작은 상기 판독/기입 레지스터들로부터 상기 데이터의 논리 페이지들 각각을 상기 비휘발성 메모리 회로의 상기 제 1 구역에 물리 페이지에 저장하며,
상기 폴딩 동작은
상기 제 1 구역 내 대응하는 N개의 물리 페이지들로부터 N 논리 페이지들을 상기 데이터 판독/기입 레지스터들에 읽어들이는 단계; 및
상기 판독/기입 레지스터들로부터 상기 N 논리 페이지들의 데이터를 상기 비휘발성 메모리의 상기 제 2 구역의 물리 페이지에 상기 복수-상태 프로그래밍 동작을 수행하는 단계를 포함하는, 방법. - 제 1 항에 있어서, 하나 이상의 바이너리 기입 동작들은 상기 제 1 국면들 중 하나에 이어서 그리고 다음 제 2 국면 전에 수행되는, 방법.
- 제 1 항에 있어서, 하나 이상의 바이너리 기입 동작들은 상기 제 2 국면들 중 하나에 이어서 그리고 다음 제 1 국면 전에 수행되는, 방법.
- 제 1 항에 있어서, 상기 호스트에서 상기 버퍼 메모리로 데이터의 전송들은 복수-상태 프로그래밍 동작들과 동시에 수행되는, 방법.
- 제 1 항에 있어서, 상기 메모리 시스템은 상기 비휘발성 메모리 회로의 데이터의 저장 및 상기 메모리 시스템과 호스트 시스템 간에 데이터의 전송을 관리하는 제어기 회로를 더 포함하며, 상기 버퍼 메모리는 상기 제어기 회로의 부분인, 방법.
- 제 1 항에 있어서, 상기 비휘발성 메모리 회로는 복수의 소거 블록들로서 형성된 복수의 워드라인들과 복수의 비트라인들을 따라 형성된 복수의 비후발성 메모리 셀들을 포함하며, 상기 제 1 및 제 2 구역들의 상기 물리 페이지들은 공통의 한 세트의 비트라인들을 공유하는 서로 다른 소거 블록들에 속하는 것인, 방법.
- 제 1 항에 있어서, 상기 복수-상태 프로그래밍 동작은 연무-미세 프로그래밍 알고리즘을 사용하며, 상기 제 1 국면은 복수-상태들에서 명확히 정의된 분포들로 완전히 해상되지 않는 연무 프로그래밍 동작을 포함하고, 상기 제 2 국면은 미세 프로그래밍 동작인, 방법.
- 제 8 항에 있어서, 상기 제 1 국면은 상기 연무 프로그래밍 동작에 앞서 초기 프로그래밍 동작을 더 포함하는, 방법.
- 제 1 항에 있어서, 상기 호스트에서 상기 버퍼 메모리로 데이터의 전송들은 복수-상태 프로그래밍 동작들의 상기 제 1 및 제 2 국면들과 동시에 수행되는, 방법.
- 제 1 항에 있어서, 상기 메모리 시스템은 복수의 플레인들을 포함하며, 바이너리 기입 동작들 및 페이지들의 폴딩은 복수의 플레인들 상에서 병렬로 수행되는, 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/642,649 | 2009-12-18 | ||
US12/642,649 US8144512B2 (en) | 2009-12-18 | 2009-12-18 | Data transfer flows for on-chip folding |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120106801A true KR20120106801A (ko) | 2012-09-26 |
KR101619569B1 KR101619569B1 (ko) | 2016-05-10 |
Family
ID=43543665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127018052A KR101619569B1 (ko) | 2009-12-18 | 2010-12-16 | 온-칩 폴딩을 위한 데이터 전송 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8144512B2 (ko) |
EP (1) | EP2513907B1 (ko) |
KR (1) | KR101619569B1 (ko) |
TW (1) | TW201135732A (ko) |
WO (1) | WO2011075597A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015047962A1 (en) * | 2013-09-30 | 2015-04-02 | Micron Technology, Inc. | Volatile memory architecture in no-volatile memory devices and related controllers |
KR20220095087A (ko) * | 2020-12-29 | 2022-07-06 | 샌디스크 테크놀로지스 엘엘씨 | 비휘발성 메모리 구조물들에 대한 3-값 프로그래밍 메커니즘 |
Families Citing this family (137)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7848144B2 (en) * | 2008-06-16 | 2010-12-07 | Sandisk Corporation | Reverse order page writing in flash memories |
US8102705B2 (en) | 2009-06-05 | 2012-01-24 | Sandisk Technologies Inc. | Structure and method for shuffling data 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 |
JP4956593B2 (ja) * | 2009-09-08 | 2012-06-20 | 株式会社東芝 | メモリシステム |
US8725935B2 (en) | 2009-12-18 | 2014-05-13 | Sandisk Technologies Inc. | Balanced performance for on-chip folding of non-volatile memories |
US8468294B2 (en) * | 2009-12-18 | 2013-06-18 | Sandisk Technologies Inc. | Non-volatile memory with multi-gear control using on-chip folding of data |
US20110153912A1 (en) * | 2009-12-18 | 2011-06-23 | Sergey Anatolievich Gorobets | Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory |
US8355280B2 (en) * | 2010-03-09 | 2013-01-15 | Samsung Electronics Co., Ltd. | Data storage system having multi-bit memory device and operating method thereof |
US8898374B2 (en) * | 2010-07-21 | 2014-11-25 | Silicon Motion, Inc. | Flash memory device and method for managing flash memory device |
US8310870B2 (en) | 2010-08-03 | 2012-11-13 | Sandisk Technologies Inc. | Natural threshold voltage distribution compaction in non-volatile memory |
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 |
KR101785007B1 (ko) | 2011-06-14 | 2017-11-07 | 삼성전자주식회사 | 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 온-칩 버퍼 프로그램 방법 |
US8681548B2 (en) | 2012-05-03 | 2014-03-25 | Sandisk Technologies Inc. | Column redundancy circuitry for non-volatile memory |
US8953398B2 (en) | 2012-06-19 | 2015-02-10 | Sandisk Technologies Inc. | Block level grading for reliability and yield improvement |
US9430322B2 (en) | 2012-08-02 | 2016-08-30 | Sandisk Technologies Llc | Device based wear leveling using intrinsic endurance |
US8885410B2 (en) | 2012-08-29 | 2014-11-11 | Sandisk Technologies Inc. | Direct multi-level cell programming |
US9036417B2 (en) | 2012-09-06 | 2015-05-19 | Sandisk Technologies Inc. | On chip dynamic read level scan and error detection for nonvolatile storage |
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 |
US8897080B2 (en) | 2012-09-28 | 2014-11-25 | Sandisk Technologies Inc. | Variable rate serial to parallel shift register |
US9076506B2 (en) | 2012-09-28 | 2015-07-07 | Sandisk Technologies Inc. | Variable rate parallel to serial shift register |
US9490035B2 (en) | 2012-09-28 | 2016-11-08 | SanDisk Technologies, Inc. | Centralized variable rate serializer and deserializer for bad column management |
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 |
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 |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9195587B2 (en) * | 2013-03-07 | 2015-11-24 | Sandisk Technologies Inc. | Enhanced dynamic read process with single-level cell segmentation |
US20150006784A1 (en) | 2013-06-27 | 2015-01-01 | Sandisk Technologies Inc. | Efficient Post Write Read in Three Dimensional Nonvolatile Memory |
US9063671B2 (en) | 2013-07-02 | 2015-06-23 | Sandisk Technologies Inc. | Write operations with full sequence programming for defect management in nonvolatile memory |
US9218242B2 (en) | 2013-07-02 | 2015-12-22 | Sandisk Technologies Inc. | Write operations for defect management in nonvolatile memory |
US9007841B1 (en) * | 2013-10-24 | 2015-04-14 | Western Digital Technologies, Inc. | Programming scheme for improved voltage distribution in solid-state memory |
US9043537B1 (en) | 2013-11-21 | 2015-05-26 | Sandisk Technologies Inc. | Update block programming order |
US9058881B1 (en) | 2013-12-05 | 2015-06-16 | Sandisk Technologies Inc. | Systems and methods for partial page programming of multi level cells |
US9244631B2 (en) | 2013-12-06 | 2016-01-26 | Sandisk Technologies Inc. | Lower page only host burst writes |
US9542344B2 (en) | 2014-02-19 | 2017-01-10 | Sandisk Technologies Llc | Datapath management in a memory controller |
JP6262063B2 (ja) | 2014-03-18 | 2018-01-17 | 東芝メモリ株式会社 | 不揮発性メモリおよび書き込み方法 |
KR102272228B1 (ko) * | 2014-05-13 | 2021-07-06 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법 |
US8902652B1 (en) | 2014-05-13 | 2014-12-02 | Sandisk Technologies Inc. | Systems and methods for lower page writes |
US8886877B1 (en) | 2014-05-15 | 2014-11-11 | Sandisk Technologies Inc. | In-situ block folding for nonvolatile memory |
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 |
US9224502B1 (en) | 2015-01-14 | 2015-12-29 | Sandisk Technologies Inc. | Techniques for detection and treating memory hole to local interconnect marginality defects |
US20160225459A1 (en) * | 2015-01-30 | 2016-08-04 | Micron Technology, Inc. | Apparatuses operable in multiple power modes and methods of operating the same |
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 |
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 |
US9514814B1 (en) * | 2015-08-13 | 2016-12-06 | Arm Ltd. | Memory write driver, method and system |
US9858009B2 (en) | 2015-10-26 | 2018-01-02 | Sandisk Technologies Llc | Data folding in 3D nonvolatile memory |
US9711211B2 (en) | 2015-10-29 | 2017-07-18 | Sandisk Technologies Llc | Dynamic threshold voltage compaction for non-volatile memory |
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 |
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 |
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 |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
TWI574161B (zh) * | 2015-11-05 | 2017-03-11 | 凌陽科技股份有限公司 | 資料傳收系統 |
CN106708754B (zh) * | 2015-11-13 | 2020-04-07 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
TWI672706B (zh) * | 2015-12-14 | 2019-09-21 | 南韓商愛思開海力士有限公司 | 記憶體儲存裝置及其操作方法 |
JP6502880B2 (ja) | 2016-03-10 | 2019-04-17 | 東芝メモリ株式会社 | 半導体記憶装置 |
US9698676B1 (en) | 2016-03-11 | 2017-07-04 | Sandisk Technologies Llc | Charge pump based over-sampling with uniform step size for current detection |
US10275170B2 (en) * | 2017-04-10 | 2019-04-30 | Sandisk Technologies Llc | Folding operations in memory systems with single address updates |
US10884926B2 (en) | 2017-06-16 | 2021-01-05 | Alibaba Group Holding Limited | Method and system for distributed storage using client-side global persistent cache |
KR20190006680A (ko) * | 2017-07-11 | 2019-01-21 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
JP2019057352A (ja) | 2017-09-21 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステム |
JP7030463B2 (ja) * | 2017-09-22 | 2022-03-07 | キオクシア株式会社 | メモリシステム |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
KR20190063054A (ko) | 2017-11-29 | 2019-06-07 | 삼성전자주식회사 | 메모리 시스템 및 이의 동작 방법 |
JP6967959B2 (ja) * | 2017-12-08 | 2021-11-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10891239B2 (en) | 2018-02-07 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for operating NAND flash physical space to extend memory capacity |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10831404B2 (en) | 2018-02-08 | 2020-11-10 | Alibaba Group Holding Limited | Method and system for facilitating high-capacity shared memory using DIMM from retired servers |
US10331555B1 (en) * | 2018-03-06 | 2019-06-25 | Western Digital Technologies, Inc. | Dynamic memory compaction |
US10552259B2 (en) | 2018-03-15 | 2020-02-04 | Western Digital Technologies, Inc. | Recovery combining hard decoding, soft decoding and artificial codeword generation |
US10642746B2 (en) | 2018-03-22 | 2020-05-05 | Western Digital Technologies, Inc. | Controlling cached/non-cached memory access decisions based on memory access queue fill levels |
JP7051546B2 (ja) | 2018-04-16 | 2022-04-11 | キオクシア株式会社 | メモリシステムおよび制御方法 |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
WO2020000136A1 (en) | 2018-06-25 | 2020-01-02 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of i/o requests |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US10871921B2 (en) | 2018-07-30 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for facilitating atomicity assurance on metadata and data bundled storage |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US20200042223A1 (en) * | 2018-08-02 | 2020-02-06 | Alibaba Group Holding Limited | System and method for facilitating a high-density storage device with improved performance and endurance |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10852948B2 (en) | 2018-10-19 | 2020-12-01 | Alibaba Group Holding | System and method for data organization in shingled magnetic recording drive |
US10795586B2 (en) | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
US10769018B2 (en) | 2018-12-04 | 2020-09-08 | Alibaba Group Holding Limited | System and method for handling uncorrectable data errors in high-capacity storage |
KR102694842B1 (ko) | 2018-12-12 | 2024-08-14 | 삼성전자주식회사 | 비휘발성 메모리 장치의 동작 방법, 스토리지 장치의 동작 방법 및 스토리지 장치 |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US10970212B2 (en) | 2019-02-15 | 2021-04-06 | Alibaba Group Holding Limited | Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones |
US11061834B2 (en) | 2019-02-26 | 2021-07-13 | Alibaba Group Holding Limited | Method and system for facilitating an improved storage system by decoupling the controller from the storage medium |
US10891065B2 (en) | 2019-04-01 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11074124B2 (en) | 2019-07-23 | 2021-07-27 | Alibaba Group Holding Limited | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
KR20210079104A (ko) * | 2019-12-19 | 2021-06-29 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US10923156B1 (en) | 2020-02-19 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive |
US10872622B1 (en) | 2020-02-19 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for deploying mixed storage products on a uniform storage infrastructure |
US11144250B2 (en) | 2020-03-13 | 2021-10-12 | Alibaba Group Holding Limited | Method and system for facilitating a persistent memory-centric system |
US11137944B1 (en) * | 2020-03-13 | 2021-10-05 | Western Digital Technologies, Inc. | Combined QLC programming method |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11321167B2 (en) | 2020-05-09 | 2022-05-03 | Western Digital Technologies, Inc. | Adaptive folding for integrated memory assembly |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11301321B2 (en) | 2020-05-28 | 2022-04-12 | Western Digital Technologies, Inc. | Data shaping for integrated memory assembly |
US11170870B1 (en) | 2020-05-28 | 2021-11-09 | Western Digital Technologies, Inc. | On-chip-copy for integrated memory assembly |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11211119B1 (en) * | 2020-06-11 | 2021-12-28 | Western Digital Technologies, Inc. | QLC programming method with staging of fine data |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11138071B1 (en) | 2020-06-22 | 2021-10-05 | Western Digital Technologies, Inc. | On-chip parity buffer management for storage block combining in non-volatile memory |
US11488682B2 (en) | 2020-06-24 | 2022-11-01 | Sandisk Technologies Llc | Calibration for integrated memory assembly |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11392327B2 (en) | 2020-09-09 | 2022-07-19 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
US11650932B2 (en) | 2020-10-25 | 2023-05-16 | Western Digital Technologies, Inc. | Integrated non-volatile memory assembly with address translation |
US11568938B2 (en) | 2020-11-03 | 2023-01-31 | Western Digital Technologies, Inc. | QLC data programming |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11481154B2 (en) | 2021-01-15 | 2022-10-25 | Sandisk Technologies Llc | Non-volatile memory with memory array between circuits |
US11861195B2 (en) | 2021-03-15 | 2024-01-02 | Western Digital Technologies, Inc. | TLC data programming with hybrid parity |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11978507B2 (en) | 2022-03-08 | 2024-05-07 | Western Digital Technologies, Inc. | Non-volatile memory with intentional overprogramming to improve short term data retention issue |
Family Cites Families (135)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1268283A (en) | 1970-04-02 | 1972-03-29 | Ibm | Connect module |
US3895360A (en) | 1974-01-29 | 1975-07-15 | Westinghouse Electric Corp | Block oriented random access memory |
IT1224062B (it) | 1979-09-28 | 1990-09-26 | Ates Componenti Elettron | Metodo di programmazione per una memoria a semiconduttore non volatile elettricamente alterabile |
US4426688A (en) | 1981-08-03 | 1984-01-17 | Ncr Corporation | Memory system having an alternate memory |
JPS61265798A (ja) | 1985-05-20 | 1986-11-25 | Fujitsu Ltd | 半導体記憶装置 |
JPS61292747A (ja) | 1985-06-20 | 1986-12-23 | Nec Corp | バツフアレジスタ |
JPS62287497A (ja) | 1986-06-06 | 1987-12-14 | Fujitsu Ltd | 半導体記憶装置 |
US5268870A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US5095344A (en) | 1988-06-08 | 1992-03-10 | Eliyahou Harari | Highly compact eprom and flash eeprom devices |
US5070032A (en) | 1989-03-15 | 1991-12-03 | Sundisk Corporation | Method of making dense flash eeprom semiconductor memory structures |
DE69033438T2 (de) | 1989-04-13 | 2000-07-06 | Sandisk Corp., Santa Clara | Austausch von fehlerhaften Speicherzellen einer EEprommatritze |
US5172338B1 (en) | 1989-04-13 | 1997-07-08 | Sandisk Corp | Multi-state eeprom read and write circuits and techniques |
US5200959A (en) | 1989-10-17 | 1993-04-06 | Sundisk Corporation | Device and method for defect handling in semi-conductor memory |
US5343063A (en) | 1990-12-18 | 1994-08-30 | Sundisk Corporation | Dense vertical programmable read only memory cell structure and processes for making them |
JPH0831279B2 (ja) | 1990-12-20 | 1996-03-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 冗長システム |
US5270979A (en) | 1991-03-15 | 1993-12-14 | Sundisk Corporation | Method for optimum erasing of EEPROM |
US5663901A (en) | 1991-04-11 | 1997-09-02 | Sandisk Corporation | Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems |
US5430859A (en) | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US5313421A (en) | 1992-01-14 | 1994-05-17 | Sundisk Corporation | EEPROM with split gate source side injection |
US5712180A (en) | 1992-01-14 | 1998-01-27 | Sundisk Corporation | EEPROM with split gate source side injection |
US6222762B1 (en) | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
JP2554816B2 (ja) | 1992-02-20 | 1996-11-20 | 株式会社東芝 | 半導体記憶装置 |
JP2741825B2 (ja) | 1992-04-28 | 1998-04-22 | 三菱電機株式会社 | 半導体記憶装置 |
US5657332A (en) | 1992-05-20 | 1997-08-12 | Sandisk Corporation | Soft errors handling in EEPROM devices |
JPH0620494A (ja) | 1992-06-30 | 1994-01-28 | Hitachi Ltd | 半導体記憶装置 |
US5315541A (en) | 1992-07-24 | 1994-05-24 | Sundisk Corporation | Segmented column memory array |
US5428621A (en) | 1992-09-21 | 1995-06-27 | Sundisk Corporation | Latent defect handling in EEPROM devices |
US5555204A (en) | 1993-06-29 | 1996-09-10 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
KR0169267B1 (ko) | 1993-09-21 | 1999-02-01 | 사토 후미오 | 불휘발성 반도체 기억장치 |
US5442748A (en) | 1993-10-29 | 1995-08-15 | Sun Microsystems, Inc. | Architecture of output switching circuitry for frame buffer |
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 |
KR100566464B1 (ko) | 1995-01-31 | 2006-03-31 | 가부시끼가이샤 히다치 세이사꾸쇼 | 반도체 메모리 장치 |
US5783958A (en) | 1996-01-19 | 1998-07-21 | Sgs-Thomson Microelectronics, Inc. | Switching master slave circuit |
US5903495A (en) | 1996-03-18 | 1999-05-11 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
US5768192A (en) | 1996-07-23 | 1998-06-16 | Saifun Semiconductors, Ltd. | Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping |
US6134148A (en) | 1997-09-30 | 2000-10-17 | Hitachi, Ltd. | Semiconductor integrated circuit and data processing system |
US6091666A (en) | 1996-10-04 | 2000-07-18 | Sony Corporation | Nonvolatile flash memory with fast data programming operation |
KR100205006B1 (ko) | 1996-10-08 | 1999-06-15 | 윤종용 | 자동 결함 블럭 맵핑 기능을 갖는 반도체 메모리 장치 |
US5890192A (en) | 1996-11-05 | 1999-03-30 | Sandisk Corporation | Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM |
US5822245A (en) | 1997-03-26 | 1998-10-13 | Atmel Corporation | Dual buffer flash memory architecture with multiple operating modes |
JP3317187B2 (ja) | 1997-04-25 | 2002-08-26 | 日本電気株式会社 | 半導体記憶装置 |
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 |
US6021463A (en) | 1997-09-02 | 2000-02-01 | International Business Machines Corporation | Method and means for efficiently managing update writes and fault tolerance in redundancy groups of addressable ECC-coded sectors in a DASD storage subsystem |
JPH11203191A (ja) | 1997-11-13 | 1999-07-30 | Seiko Epson Corp | 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体 |
US6295231B1 (en) | 1998-07-17 | 2001-09-25 | Kabushiki Kaisha Toshiba | High-speed cycle clock-synchronous memory device |
JP3730423B2 (ja) | 1998-11-24 | 2006-01-05 | 富士通株式会社 | 半導体記憶装置 |
GB9903490D0 (en) | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
US6151248A (en) | 1999-06-30 | 2000-11-21 | Sandisk Corporation | Dual floating gate EEPROM cell array with steering gates shared by adjacent cells |
US7953931B2 (en) | 1999-08-04 | 2011-05-31 | Super Talent Electronics, Inc. | High endurance non-volatile memory devices |
US6462985B2 (en) | 1999-12-10 | 2002-10-08 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory for storing initially-setting data |
JP4282197B2 (ja) | 2000-01-24 | 2009-06-17 | 株式会社ルネサステクノロジ | 不揮発性半導体記憶装置 |
US6426893B1 (en) | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US6567307B1 (en) | 2000-07-21 | 2003-05-20 | Lexar Media, Inc. | Block management for mass storage |
US6266273B1 (en) | 2000-08-21 | 2001-07-24 | Sandisk Corporation | Method and structure for reliable data copy operation for non-volatile memories |
US6581142B1 (en) | 2000-09-01 | 2003-06-17 | International Business Machines Corporation | Computer program product and method for partial paging and eviction of microprocessor instructions in an embedded computer |
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 |
JP4413406B2 (ja) | 2000-10-03 | 2010-02-10 | 株式会社東芝 | 不揮発性半導体メモリ及びそのテスト方法 |
US6510488B2 (en) | 2001-02-05 | 2003-01-21 | M-Systems Flash Disk Pioneers Ltd. | Method for fast wake-up of a flash memory system |
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 |
JP4812192B2 (ja) | 2001-07-27 | 2011-11-09 | パナソニック株式会社 | フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法 |
US6594177B2 (en) | 2001-08-02 | 2003-07-15 | Stmicroelectronics, Inc. | Redundancy circuit and method for replacing defective memory cells in a flash memory device |
US7170802B2 (en) | 2003-12-31 | 2007-01-30 | Sandisk Corporation | Flexible and area efficient column redundancy for non-volatile memories |
US6560146B2 (en) | 2001-09-17 | 2003-05-06 | Sandisk Corporation | Dynamic column block selection |
US6456528B1 (en) | 2001-09-17 | 2002-09-24 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
KR100437461B1 (ko) | 2002-01-12 | 2004-06-23 | 삼성전자주식회사 | 낸드 플래시 메모리 장치 및 그것의 소거, 프로그램,그리고 카피백 프로그램 방법 |
US6771536B2 (en) | 2002-02-27 | 2004-08-03 | Sandisk Corporation | Operating techniques for reducing program and read disturbs of a non-volatile memory |
US7072910B2 (en) | 2002-03-22 | 2006-07-04 | Network Appliance, Inc. | File folding technique |
CN102737180A (zh) | 2002-08-08 | 2012-10-17 | 晟碟以色列有限公司 | 用于数字权利管理的集成电路 |
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 |
JP4175852B2 (ja) | 2002-09-13 | 2008-11-05 | スパンション エルエルシー | 冗長セルアレイへの置き換えを正常に行う半導体メモリ |
US6891753B2 (en) | 2002-09-24 | 2005-05-10 | Sandisk Corporation | Highly compact non-volatile memory and method therefor with internal serial buses |
US6983428B2 (en) | 2002-09-24 | 2006-01-03 | Sandisk Corporation | Highly compact non-volatile memory and method thereof |
US7196931B2 (en) | 2002-09-24 | 2007-03-27 | Sandisk Corporation | Non-volatile memory and method with reduced source line bias errors |
US6657891B1 (en) | 2002-11-29 | 2003-12-02 | Kabushiki Kaisha Toshiba | Semiconductor memory device for storing multivalued data |
JP4314057B2 (ja) | 2003-04-18 | 2009-08-12 | サンディスク コーポレイション | 不揮発性半導体記憶装置および電子装置 |
CN1311366C (zh) | 2003-05-22 | 2007-04-18 | 群联电子股份有限公司 | 快闪存储器的平行双轨使用方法 |
US7076611B2 (en) | 2003-08-01 | 2006-07-11 | Microsoft Corporation | System and method for managing objects stored in a cache |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7299314B2 (en) | 2003-12-31 | 2007-11-20 | Sandisk Corporation | Flash storage system with write/erase abort detection mechanism |
US7310347B2 (en) | 2004-03-14 | 2007-12-18 | Sandisk, Il Ltd. | States encoding in multi-bit flash cells |
US20050213393A1 (en) | 2004-03-14 | 2005-09-29 | M-Systems Flash Disk Pioneers, Ltd. | States encoding in multi-bit flash cells for optimizing error rate |
US7057339B2 (en) | 2004-04-08 | 2006-06-06 | Eastman Kodak Company | OLED with color change media |
KR100530930B1 (ko) | 2004-05-11 | 2005-11-23 | 주식회사 하이닉스반도체 | 낸드 플래시 메모리 장치의 멀티-i/o 리페어 방법 및그의 낸드 플래시 메모리 장치 |
US7490283B2 (en) | 2004-05-13 | 2009-02-10 | Sandisk Corporation | Pipelined data relocation and improved chip architectures |
JP4102338B2 (ja) | 2004-07-20 | 2008-06-18 | 株式会社東芝 | 半導体記憶装置 |
US7360035B2 (en) | 2004-09-01 | 2008-04-15 | International Business Machines Corporation | Atomic read/write support in a multi-module memory configuration |
US7493457B2 (en) | 2004-11-08 | 2009-02-17 | Sandisk Il. Ltd | States encoding in multi-bit flash cells for optimizing error rate |
US7158421B2 (en) | 2005-04-01 | 2007-01-02 | Sandisk Corporation | Use of data latches in multi-phase programming of non-volatile memories |
US7420847B2 (en) | 2004-12-14 | 2008-09-02 | Sandisk Corporation | Multi-state memory having data recovery after program fail |
US7120051B2 (en) | 2004-12-14 | 2006-10-10 | Sandisk Corporation | Pipelined programming of non-volatile memories using early data |
US7882299B2 (en) | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
US7212440B2 (en) | 2004-12-30 | 2007-05-01 | Sandisk Corporation | On-chip data grouping and alignment |
US7426623B2 (en) | 2005-01-14 | 2008-09-16 | Sandisk Il Ltd | System and method for configuring flash memory partitions as super-units |
US8341371B2 (en) | 2005-01-31 | 2012-12-25 | Sandisk Il Ltd | Method of managing copy operations in flash memories |
US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
US7913004B2 (en) | 2005-09-06 | 2011-03-22 | Sandisk Il Ltd | Portable selective memory data exchange device |
US7752382B2 (en) | 2005-09-09 | 2010-07-06 | Sandisk Il Ltd | Flash memory storage system and method |
US20070086244A1 (en) | 2005-10-17 | 2007-04-19 | Msystems Ltd. | Data restoration in case of page-programming failure |
US7954037B2 (en) | 2005-10-25 | 2011-05-31 | Sandisk Il Ltd | Method for recovering from errors in flash memory |
US7447066B2 (en) | 2005-11-08 | 2008-11-04 | Sandisk Corporation | Memory with retargetable memory cell redundancy |
JP4522358B2 (ja) * | 2005-11-30 | 2010-08-11 | キヤノン株式会社 | データ処理装置及びデータ処理方法及びプログラム |
US8020060B2 (en) | 2006-01-18 | 2011-09-13 | Sandisk Il Ltd | Method of arranging data in a multi-level cell memory device |
JP4805696B2 (ja) | 2006-03-09 | 2011-11-02 | 株式会社東芝 | 半導体集積回路装置およびそのデータ記録方式 |
US7224605B1 (en) | 2006-03-24 | 2007-05-29 | Sandisk Corporation | Non-volatile memory with redundancy data buffered in data latches for defective locations |
US7324389B2 (en) | 2006-03-24 | 2008-01-29 | Sandisk Corporation | Non-volatile memory with redundancy data buffered in remote buffer circuits |
US7502254B2 (en) | 2006-04-11 | 2009-03-10 | Sandisk Il Ltd | Method for generating soft bits in flash memories |
US8330878B2 (en) | 2006-05-08 | 2012-12-11 | Sandisk Il Ltd. | Remotely controllable media distribution device |
JP2007305210A (ja) | 2006-05-10 | 2007-11-22 | Toshiba Corp | 半導体記憶装置 |
US8239735B2 (en) | 2006-05-12 | 2012-08-07 | Apple Inc. | Memory Device with adaptive capacity |
US7583545B2 (en) | 2006-05-21 | 2009-09-01 | Sandisk Il Ltd | Method of storing data in a multi-bit-cell flash memory |
US7711890B2 (en) | 2006-06-06 | 2010-05-04 | Sandisk Il Ltd | Cache control in a non-volatile memory device |
US7561482B2 (en) | 2006-09-07 | 2009-07-14 | Sandisk Corporation | Defective block isolation in a non-volatile memory system |
US7885112B2 (en) | 2007-09-07 | 2011-02-08 | Sandisk Corporation | Nonvolatile memory and method for on-chip pseudo-randomization of data within a page and between pages |
JP2008077810A (ja) | 2006-09-25 | 2008-04-03 | Toshiba Corp | 不揮発性半導体記憶装置 |
US20080290112A1 (en) | 2006-12-11 | 2008-11-27 | John Morris Lynn | Soap dispenser and method for helping assure clean hands |
US7852654B2 (en) | 2006-12-28 | 2010-12-14 | Hynix Semiconductor Inc. | Semiconductor memory device, and multi-chip package and method of operating the same |
US7660166B2 (en) | 2007-01-31 | 2010-02-09 | Sandisk Il Ltd. | Method of improving programming precision in flash memory |
US7904793B2 (en) | 2007-03-29 | 2011-03-08 | Sandisk Corporation | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads |
US7975209B2 (en) | 2007-03-31 | 2011-07-05 | Sandisk Technologies Inc. | Non-volatile memory with guided simulated annealing error correction control |
US7966550B2 (en) | 2007-03-31 | 2011-06-21 | Sandisk Technologies Inc. | Soft bit data transmission for error correction control in non-volatile memory |
US20080250220A1 (en) | 2007-04-06 | 2008-10-09 | Takafumi Ito | Memory system |
US9607664B2 (en) | 2007-09-27 | 2017-03-28 | Sandisk Technologies Llc | Leveraging portable system power to enhance memory management and enable application level features |
US8065490B2 (en) | 2007-09-28 | 2011-11-22 | Intel Corporation | Hardware acceleration of strongly atomic software transactional memory |
US8443260B2 (en) | 2007-12-27 | 2013-05-14 | Sandisk Il Ltd. | Error correction in copy back memory operations |
US7996736B2 (en) | 2008-10-26 | 2011-08-09 | Sandisk 3D Llc | Bad page marking strategy for fast readout in memory |
US8040744B2 (en) | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US20100174845A1 (en) | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
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 |
US8094500B2 (en) | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
JP4991811B2 (ja) | 2009-09-16 | 2012-08-01 | 株式会社東芝 | 不揮発性半導体記憶装置及びその試験方法 |
US8423866B2 (en) | 2009-10-28 | 2013-04-16 | SanDisk Technologies, Inc. | Non-volatile memory and method with post-write read and adaptive re-write to manage errors |
-
2009
- 2009-12-18 US US12/642,649 patent/US8144512B2/en active Active
-
2010
- 2010-12-16 WO PCT/US2010/060855 patent/WO2011075597A1/en active Application Filing
- 2010-12-16 EP EP10803314.3A patent/EP2513907B1/en active Active
- 2010-12-16 KR KR1020127018052A patent/KR101619569B1/ko active IP Right Grant
- 2010-12-17 TW TW099144566A patent/TW201135732A/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015047962A1 (en) * | 2013-09-30 | 2015-04-02 | Micron Technology, Inc. | Volatile memory architecture in no-volatile memory devices and related controllers |
KR20220095087A (ko) * | 2020-12-29 | 2022-07-06 | 샌디스크 테크놀로지스 엘엘씨 | 비휘발성 메모리 구조물들에 대한 3-값 프로그래밍 메커니즘 |
Also Published As
Publication number | Publication date |
---|---|
WO2011075597A1 (en) | 2011-06-23 |
US8144512B2 (en) | 2012-03-27 |
EP2513907A1 (en) | 2012-10-24 |
US20110149650A1 (en) | 2011-06-23 |
TW201135732A (en) | 2011-10-16 |
KR101619569B1 (ko) | 2016-05-10 |
EP2513907B1 (en) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101619569B1 (ko) | 온-칩 폴딩을 위한 데이터 전송 | |
US8468294B2 (en) | Non-volatile memory with multi-gear control using on-chip folding of data | |
US8725935B2 (en) | Balanced performance for on-chip folding of non-volatile memories | |
US10303370B2 (en) | Flash memory system | |
US20110153912A1 (en) | Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory | |
US8472280B2 (en) | Alternate page by page programming scheme | |
US8417876B2 (en) | Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems | |
KR101584048B1 (ko) | 비휘발성 메모리에서 예비 블록 관리 방법 | |
US8543757B2 (en) | Techniques of maintaining logical to physical mapping information in non-volatile memory systems | |
US8464135B2 (en) | Adaptive flash interface | |
US8593866B2 (en) | Systems and methods for operating multi-bank nonvolatile memory | |
US9342446B2 (en) | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache | |
US10055267B2 (en) | Block management scheme to handle cluster failures in non-volatile memory | |
EP2443543B1 (en) | Multi-bank non-volatile memory system with satellite file system | |
US8995183B2 (en) | Data retention in nonvolatile memory with multiple data storage formats | |
US9141291B2 (en) | Adaptive context disbursement for improved performance in non-volatile memory systems | |
US20130282958A1 (en) | Obsolete Block Management for Data Retention in Nonvolatile Memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190328 Year of fee payment: 4 |