KR20120052216A - 위성 파일 시스템을 구비한 멀티-뱅크 비휘발성 메모리 시스템 - Google Patents

위성 파일 시스템을 구비한 멀티-뱅크 비휘발성 메모리 시스템

Info

Publication number
KR20120052216A
KR20120052216A KR1020127000002A KR20127000002A KR20120052216A KR 20120052216 A KR20120052216 A KR 20120052216A KR 1020127000002 A KR1020127000002 A KR 1020127000002A KR 20127000002 A KR20127000002 A KR 20127000002A KR 20120052216 A KR20120052216 A KR 20120052216A
Authority
KR
South Korea
Prior art keywords
memory
file system
banks
bank
controller
Prior art date
Application number
KR1020127000002A
Other languages
English (en)
Inventor
사란얀 라자고팔란
찰스 엠. 쉬로터
Original Assignee
샌디스크 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20120052216A publication Critical patent/KR20120052216A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Read Only Memory (AREA)

Abstract

멀티-뱅크 비휘발성 메모리 시스템이 제공된다. 제1 뱅크들은 파일 시스템의 메인 카피를 가지며, 다른 뱅크들 각각은 파일 시스템의 위성 카피를 가진다. 제어기의 백 엔드 펌웨어는 각각의 뱅크들에 대하여 스레드를 실행한다. 부트 처리 이후에, 정상 메모리 동작들동안에, 각각의 스레드들은 파일 시스템에 액세스하기 위하여 다른 스레드들을 인터럽트하지 않고도 파일 시스템의 자체 카피를 사용하여 동작할 수 있다.

Description

위성 파일 시스템을 구비한 멀티-뱅크 비휘발성 메모리 시스템{MULTI-BANK NON-VOLATILE MEMORY SYSTEM WITH SATELLITE FILE SYSTEM}
본 발명은 반도체 플래시 메모리와 같은 재-프로그래밍 가능 비휘발성 메모리 시스템의 동작에 관한 것으로, 구체적으로는 다수 뱅크 구조를 사용한 이러한 시스템의 관리에 관한 것이다.
비휘발성 전하 저장이 가능한 고체 상태 메모리는, 특히 소형 팩터 카드로 패키지된 EEPROM과 플래시 EEPROM 형태에서, 다양한 이동 및 휴대용 장치들, 특히 정보 어플라이언스 및 소비자 전자 제품들의 선택을 최근에 저장하게 되었다. 또한 고체 상태 메모리인 RAM(랜덤 액세스 메모리)과는 달리, 플래시 메모리는 비휘발성이어서, 전력이 턴오프된 후에도 저장되어 있는 데이터를 유지하게 된다. 또한, ROM(판독 전용 메모리)과는 달리, 플래시 메모리는 디스크 저장 장치와 동일하게 재기록 가능하다. 높은 비용에도 불구하고, 플래시 메모리는 대용량 저장 어플리케이션들에 점차 사용되고 있다. 하드 드라이브들과 플로피 디스크들과 같은 회전형 자기 매체에 기초한 종래의 대용량 저장 장치는 이동 및 휴대용 환경에 부적절하다. 그 이유는 디스크 드라이브들은 부피가 큰 경향이 있고, 기계적 결함이 쉽게 발생하고, 높은 지연 시간과 높은 전력 요구들이 있기 때문이다. 이러한 바람직하지 않은 특성들로 디스크-계 저장 장치가 대부분의 이동 및 휴대용 어플리케이션들에 맞지 않다. 한편, 내장된 착탈 가능 카드 형태의 플래시 메모리는, 이상적으로 크기가 작고, 전력 소비가 낮고, 속도가 빠르고 신뢰성이 높기때문에 이동 및 휴대용 환경에서 적절하다.
플래시 EEPROM은, 소거될 수 있고 그것들의 메모리 셀들에 기록되거나 또는 "프로그래밍"된 새로운 데이터를 가지는 비휘발성 메모리라는 점에서 EEPROM(전기적으로 소거 가능하고 프로그램 가능한 판독 전용 메모리)과 동일하다. 양자는 전계 효과 트랜지스터 구조에서 소스와 드레인 영역들 사이에서 반도체 기판의 채널 영역 위에 배치되는 부동(비접속) 전도 게이트를 사용한다. 그리고, 제어 게이트는 부동 게이트 상에 제공된다. 트랜지스터의 임계 전압 특성은 부동 게이트에 유지되는 전하 양에 의해 제어된다. 즉, 부동 게이트의 소정 레벨의 전하에 대해, 그것의 소스 및 드레인 영역들 간의 도통을 허가하도록 트랜지스터가 턴 "온"되기 전에 제어 게이트에 대응 전압(임계)이 인가되어야 한다. 특히, 플래시 EEPROM과 같은 플래시 메모리는 메모리 셀들의 전체 블록들을 동시에 소거할 수 있다.
부동 게이트는 일정 범위의 전하를 가질 수 있어 임계 전압 윈도우 내의 임의 임계 전압 레벨로 프로그래밍될 수 있다. 임계 전압 윈도우의 크기는 장치의 최소 및 최대 임계 레벨들에 의해 범위가 정해지며, 이것은 결국 부동 게이트에서 프로그래밍될 수 있는 전하들 범위에 해당한다. 임계 윈도우는 통상적으로 메모리 장치의 특성들, 동작 조건들과 히스토리에 달려 있다. 윈도우 내에서의 각각의 다른 분해 가능 임계 전압 레벨 범위는 대체적으로 셀의 일정 메모리 상태를 지정하는데 사용될 수 있다.
메모리 셀로서 제공되는 트랜지스터는 통상적으로 2개 메커니즘들 중 하나에 의해 "프로그래밍된" 상태로 통상 프로그래밍된다. "핫 전자 주입"에서, 드레인에 인가된 고 전압은 기판 채널 영역 전체의 전자들을 가속화시킨다. 동시에 제어 게이트에 인가된 고전압은 부동 게이트 상의 박막 게이트 절연체를 통해 핫 전자들을 인입(pull)한다. "터널링 주입"에서, 고 전압은 기판에 관련된 제어 게이트에 인가된다. 이 방법에서, 전자들은 기판으로부터 개재된 부동 게이트로 인입된다. 용어 "프로그램"은 역사상 메모리 셀의 초기 소거된 전하 저장 유닛에 전자들을 주입하여 메모리 상태를 변경함으로써 메모리에 기록하는 것을 말하는 것으로 사용되었지만, 이제는 "기록" 또는 "레코드(record)"와 같은 보다 친숙한 용어들로 교체하여 사용될 수 있다.
메모리 장치는 수 많은 메커니즘에 의해 소거될 수 있다. EEPROM에 대하여, 메모리 셀은 기판 채널 영역에 박막 산화물을 관통하는 터널로 부동 게이트의 전자들을 유도하기 위해 제어 게이트에 관련된 기판에 고 전압을 인가함으로써 전기적으로 소거 가능하다(즉, Fowler-Nordheim tunneling). 통상적으로, 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 등의, "NORM: 새로운 국부화 트랩핑, 2-비트 비휘발성 메모리 셀", IEEE 전자 장치 문서, vol.21, 2000년 11월 11일, pp543~545를 통해 기술된다. ONO 절연체 층은 소스와 드레인 확산들 간의 채널을 가로질러 확장한다. 한 데이터 비트의 전하는 드레인에 인접한 절연체 층에 국한되고, 다른 데이터 비트의 전하는 소스에 인접한 절연체 층에 국한된다. 예를 들면, 미국 특허 제5,768,192호와 제6,011,725호는 2개 실리콘 이산화물 층들 사이에 배치된 트래핑 절연체를 가지는 비휘발성 메모리 셀을 개시하고 있다. 멀티-상태 데이터 저장은 절연체내의 공간적으로 이격되어 있는 전하 기억 영역들의 2진 상태들을 개별 판독함으로써 실행된다.
판독 및 프로그램 성능을 향상시키기 위해서, 어레이에서 다수 전하 기억 소자들 또는 메모리 트랜지스터들은 병렬 판독 또는 프로그래밍된다. 따라서, 메모리 소자들의 "페이지"는 함께 판독 또는 프로그래밍된다. 기존의 메모리 구조들에서, 통상적으로 열은 몇 개의 인터리브 페이지들을 포함하거나 또는 한 페이지로 구성된다. 한 페이지의 모든 메모리 소자들은 함께 판독되거나 또는 프로그래밍될 것이다.
플래시 메모리 시스템들에서, 소거 동작은 판독 및 프로그래밍 동작들보다 훨씬 더 시간이 걸린다. 따라서, 상당한 크기의 소거 블록을 가지는 것이 바람직하다. 이 방법에서, 소거 시간은 큰 집합체의 메모리 셀들에 걸쳐 나누어 진다.
플래시 메모리의 특징은 소거된 메모리 위치에 데이터가 기록되어야 한다는 것에 근거를 두고 있다. 호스트로부터의 임의 논리 데이터가 업데이트되는 경우, 한가지 방법은 동일한 물리 메모리 위치에 업데이트 데이터를 재기록하는 것이다. 즉, 논리 대 물리 어드레스 맵핑은 변경되지 않는다. 그러나, 물리 위치가 우선 소거되고 그런 다음 업데이트 데이터가 재기록되어야 한다는 것을 전체 소거 블록이 포함하고 있음을 의미한다. 이러한 업데이트 방법은, 특히 업데이트될 데이터가 소거 블록의 적은 부분만을 차지하는 경우, 전체 소거 블록이 소거되고 재기록되어야 하기 때문에 비효율적이다. 또한, 메모리 블록의 소거 리사이클링 주파수가 높아지게 되고, 이것은 이러한 형태의 메모리 장치의 한정된 내구성때문에 바람직하지 않다.
호스트 시스템들, 메모리 시스템들 그리고 다른 전자 시스템들의 외부 인터페이스를 통한 데이터 통신은 플래시 메모리 시스템의 물리 위치에서 처리되어 맵핑된다. 통상적으로, 그 시스템에 의해 생성되거나 또는 수신되는 데이터 파일들의 어드레스들은 데이터의 논리 블록들(이후 LBA 인터페이스라 칭해짐)에 관하여 시스템에 설정된 연속 논리 어드레스 공간의 특정 범위들에 맵핑된다. 어드레스 공간 범위는 통상적으로 시스템이 처리할 수 있는 어드레스들의 전체 범위를 커버하기에 충분하다. 한 일례에서, 자기 디스크 저장 드라이브는 컴퓨터들 또는 다른 호스트 시스템들과 이러한 논리 어드레스 공간을 통해 통신하다. 이러한 어드레스 공간은 디스크 드라이브의 전체 데이터 저장 용량을 처리하기에 충분한 범위를 가진다.
플래시 메모리 시스템들은 개인용 컴퓨터와 같은 다양한 호스트들과 착탈 가능하게 접속되는 메모리 카드 또는 플래시 드라이브의 형태로 보통 제공되지만, 이러한 호스트 시스템들 내에 삽입되기도 한다. 메모리에 데이터를 기록하는 경우, 호스트는 통상적으로 섹터들, 클러스터들 또는 다른 단위들의 데이터로 메모리 시스템의 연속 가상 어드레스 공간 내에 고유 논리 어드레스들을 할당한다. 디스크 운영 시스템과 같이, 호스트는 메모리 시스템의 논리 어드레스 공간내의 어드레스에 데이터를 기록하고, 그것으로부터 데이터를 판독한다. 메모리 시스템 내의 제어기는 호스트로부터 수신된 논리 어드레스를 메모리 어레이 내의 물리 어드레스들로 변환하며, 이 때 데이터는 사실상 저장되어, 이러한 어드레스 변환들의 트랙을 유지한다. 메모리 시스템의 데이터 저장 용량은 적어도 메모리 시스템의 정의된 전체 논리 어드레스 공간 전체에서 처리 가능한 데이터 양만큼 크다.
현재 판매되고 있는 플래시 메모리 시스템에서, 소거 단위 크기는 데이터의 다수 섹터들을 저장하기에 충분한 메모리 셀들의 블록까지 증가되었다. 사실상, 데이터의 많은 페이지들은 한 블록에 저장되고, 한 페이지는 데이터의 다수 섹터들을 저장한다. 또한, 2개 또는 그 이상의 블록들은 메타블록들로서 함께 종종 동작되고, 이러한 블록들의 페이지들은 메가페이지들로서 함께 논리적으로 결합된다. 데이터의 한 페이지 또는 메가페이지는 함께 기록되고 판독되며, 이것은 데이터의 많은 섹터들을 포함할 수 있고, 따라서 동작의 병렬성을 증가시킨다. 이러한 대용량 동작 유닛들에 따라서, 과제는 그것들을 효율적으로 동작하는 것이다.
설명의 용이함을 위해, 달리 기술되지 않는 한, 본 명세서에서 사용되는 용어 "블록"은 메타블록들이 특정 시스템에 사용되는 지에 따라, 소거 블록 단위 또는 다수 블록 "메타블록"을 언급한다. 마찬가지로, 본 명세서의 "페이지"에 관한 언급은 시스템 구성에 따라 단일 블록 내의 프로그래밍 단위를 또는 메타블록 내의 "메가페이지"를 말한다.
메모리 시스템에 현재 행해지고 있는 LBA 인터페이스가 사용되는 경우, 메모리가 접속되는 호스트에 의해 생성되는 파일들은 인터페이스의 논리 어드레스 공간 내에 고유 어드레스가 할당된다. 그 다음, 메모리 시스템은 메모리의 물리 블록들의 페이지들과 논리 어드레스 공간 사이에 데이터를 통상 매핑한다. 메모리 시스템은 논리 어드레스 공간이 물리 메모리에 맵핑되지만 호스트가 그것을 인식하지 못하는 방식으로 트랙을 유지한다. 호스트는 그것의 데이터 파일들의 어드레스들이 논리 어드레스 공간에 맵핑되지만 메모리 시스템은 이러한 맵핑을 거의 또는 전혀 알지 못하는 방식으로 트랙을 유지한다.
플래시 메모리 시스템을 관리하는데 있어서의 또 다른 문제점은 시스템 제어 및 디렉토리 데이터를 처리하는 것이다. 데이터는 다양한 메모리 동작들 과정 동안에 생성되고 액세스된다. 따라서, 그것의 효율적 처리 및 준비 액세스는 성능에 직접적으로 영향을 미친다. 플래시 메모리가 저장을 위한 것이고 비휘발성이기 때문에 플래시 메모리에 이러한 형태의 데이터를 유지하는 것이 바람직하다. 그러나, 제어기와 플래시 메모리 사이에 있는 파일 관리 시스템에 대하여, 데이터는 직접적으로 액세스될 수 없다. 또한, 시스템 제어 및 디렉토리 데이터는 능동적이고 분해되는 경향이 있으며, 이것은 큰 크기 블록 소거로 시스템에 저장하는 것에 도움이 되지 않는다. 통상적으로, 이러한 타입의 데이터는 제어기 RAM에 설정되어, 제어기에 의해 직접 액세스할 수 있게 된다. 메모리 장치가 가동된 후에, 초기화 처리는 제어기 RAM에 배치된 필요한 시스템 제어 및 디렉토리 정보를 컴파일링하기 위하여 플래시 메모리를 스캐닝할 수 있게 한다. 이러한 처리는 시간이 걸리고 제어기 RAM 용량을 필요로 하며, 그래서 이러한 모든 것들은 플래시 메모리 용량을 증가시키게 한다.
일반적으로, 비휘발성 메모리 시스템들의 용량 및 성능을 향상시키는 연구가 계속되고 있다. 특히, 이것은 메모리 시스템들의 병렬성의 양 및 효율을 증가시키는 방법들을 포함할 수 있다.
본 발명의 목적은 비휘발성 메모리 시스템들의 용량 및 성능을 향상시키기 위한 것이다. 특히, 본 발명의 목적은 메모리 시스템들의 병렬성의 양 및 효율을 증가시키는 방법들을 제공함에 있다.
본 발명의 일반적인 양상에 따르면, 다수의 독립형 동작 가능 뱅크들과 제어기 회로 및 비휘발성 메모리 회로를 구비한 비휘발성 메모리 시스템이 제공된다. 뱅크들 각각은 유저 데이터 및 시스템 데이터를 저장하기 위한 하나 또는 그 이상의 비휘발성 메모리 어레이들을 포함한다. 제어기 회로는 메모리 회로의 유저 데이터 저장을 관리하고, 다수의 인터페이스들을 포함하며, 이것은 제어기와 그에 대응하는 뱅크 사이에서 데이터를 전달하도록 뱅크들의 각각의 뱅크에 접속되어, 뱅크들 중 대응하는 뱅크를 각각 독립적으로 그리고 동시에 관리하는 다수의 스레드(thread)들을 실행하는 회로를 처리한다. 뱅크들 중 제1 뱅크는 파일 시스템을 포함하는 시스템 데이터를 저장하며, 그로 인해 대응하는 스레드가 그 제1 뱅크를 관리하고, 다른 뱅크들 각각은 파일 시스템의 일부 카피를 포함하는 시스템 데이터를 저장하며, 그로 인해 대응하는 스테드가 그 뱅크를 관리한다.
다른 양상들에서, 다수의 독립 동작 가능 뱅크들을 가지는 비휘발성 메모리 회로와, 그 메모리 회로상의 유저 저장을 관리하는 제어기 회로를 포함하는 비휘발성 메모리 시스템을 동작하는 대응 방법들이 제공된다. 그 방법은: 파일 시스템을 포함하는 시스템 데이터를 제1 뱅크의 비휘발성 메모리에 저장하는 단계와; 상기 파일 시스템 일부의 카피를 포함하는 시스템 데이터를 제2 뱅크들의 비휘발성 메모리에 저장하는 단계와; 상기 파일 시스템에 따라 상기 제1 뱅크를 관리하도록 제1 스레드를 상기 제어기에서 실행하는 단계와; 상기 스레드를 실행과 동시에, 상기 제1 뱅크에 저장된 파일 시스템과 상관없이 상기 파일 시스템의 카피에 따라 상기 제2 뱅크를 관리하도록 제2 스레드를 상기 제어기에서 실행하는 단계를 포함한다.
본 발명의 다양한 양상들, 이점들, 특징들 및 실시예들은 그것의 예시적 일례들에 관한 이하의 설명에 포함되며, 이러한 설명은 첨부 도면들과 함께 이루어진다. 본 명세서에서 참조된 모든 특허들, 특허 출원들, 조항들, 다른 공고들, 문서들 등은 모든 목적을 위해 참조함으로써 그 전부가 본원에 통합된다. 통합된 공고들, 문서들 등과 본 출원 사이에서 용어의 정의 또는 사용에 관한 불일치 또는 충돌이 있는 경우, 본 출원의 용어들이 우선한다.
상술한 바와 같이 본 발명은 비휘발성 메모리 시스템들의 용량 및 성능을 향상시키기고, 특히, 메모리 시스템들의 병렬성의 양 및 효율을 증가시킬 수 있다.
도 1은 본 발명을 실행하는데 적절한 메모리 시스템의 메인 하드웨어 구성 소자들을 개략적으로 도시한다.
도 2는 비휘발성 메모리 셀을 개략적으로 도시한다.
도 3는 부동 게이트가 어느 때나 선택적으로 저장하고 있는 4개의 전하들(Q1~Q4)에 대하여 소스-드레인 전류 ID와 제어 게이트 전압 VCG간의 관계를 도시한다.
도 4a는 NAND 스트링으로 구성된 메모리 셀들의 스트링을 개략적으로 도시한다.
도 4b는 도 4a에 도시된 바와 같이 NAND 스트링들(50)로 구성된 메모리 셀들의 NAND 어레이(210)의 일례를 도시한다.
도 5는 예를 들면 감지되거나 또는 병렬 프로그래밍되는 NAND 구성으로 구성된 메모리 셀들의 페이지를 도시한다.
도 6(0)~6(2)는 모집단의 4-상태 메모리 셀들을 프로그래밍하는 일례를 도시한다.
도 7a~7e는 소정의 2-비트 코드로 엔코딩된 4-상태 메모리의 프로그래밍 및 판독을 도시한다.
도 8은 제어기에 있는 소프트웨어 구성 소자인 메모리 관리기에 의해 관리되는 메모리를 도시한다.
도 9는 백-엔드 시스템의 소프트웨어 모듈들을 도시한다.
도 10a(ⅰ)~10a(ⅲ)는 논리 접지와 메타블록 간의 맵핑을 개략적으로 도시한다. 도 10b는 논리 접지들과 메타블록들간의 맵핑을 개략적으로 도시한다.
도 11은 위성 파일 시스템을 사용하는 멀티-뱅크 메모리 시스템에 관한 일례의 블록도이다.
도 12는 도 11의 실시예에서 메인과 위성 파일 시스템에 저장된 소자들의 상세를 제공한다.
도 1 내지 도 7은 본 발명의 다양한 양상들이 실행되거나 또는 설명되는 일례의 메모리 시스템을 제공한다.
도 8 내지 도 10은 본 발명의 다양한 양상들을 실행하는 바람직한 메모리와 블록 구조들을 도시한다.
도 11 및 도 12는 멀티-뱅크 시스템에의 위성 파일 시스템 사용을 도시한다.
도 1은 본 발명을 실행하는데 적절한 메모리 시스템의 메인 하드웨어 구성 소자들을 개략적으로 도시한다. 메모리 시스템(90)은 통상적으로 호스트 인터페이스를 통해 호스트(80)와 함께 동작한다. 메모리 시스템은 메모리 카드 또는 내장형 메모리 시스템 형태이다. 메모리 시스템(90)은 제어기(100)에 의해 그 동작들이 제어되는 메모리(200)를 포함한다. 메모리(200)는 하나 또는 그 이상의 집적 회로 칩 위에 분포되는 비휘발성 메모리 셀들의 하나 또는 그 이상의 어레이들로 구성된다. 제어기(100)는 인터페이스(110), 프로세서(120), 선택 코프로세서(121), ROM(122)(판독 전용 메모리), RAM(130)(랜덤 액세스 메모리) 및 선택적 프로그래밍 가능 비휘발성 메모리(124)를 포함한다. 인터페이스(110)는 호스트에 제어기를 인터페이싱하는 한 구성 소자와 메모리(200)에 인터페이싱하는 또다른 구성 소자를 포함한다. 비휘발성 ROM(122) 및/또는 선택적 프로그래밍 가능 비휘발성 메모리(124)에 저장된 펌웨어는 제어기(100)의 기능드을 실행하도록 프로세서(120)에 코드들을 제공한다. 에러 정정 코드들은 프로세서(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 등의, "NROM: 새로운 국부화 트랩핑, 2-비트 비휘발성 메모리 셀", IEEE 전자 장치 문서, vol. 21, 2000년 11월 11일, pp543~545와, 미국 특허 제5,768,192호와 제6,011,725호를 통해 기술된다.
실제로, 셀의 메모리 상태는 기준 전압이 제어 게이트에 인가될 때 셀의 소스와 드레인 전극들 양단의 도통 전류를 감지함으로써 보통 판독된다. 따라서, 한 셀의 부동 게이트의 각각의 소정의 전하에 대하여, 고정 기준 제어 게이트 전압에 관한 대응 도통 전류가 검출될 수 있다. 동일하게는, 부동 게이트에서 프로그래밍 가능한 전하 범위는 대응 임계 전압 윈도 또는 대응 도통 전류 윈도를 정의한다.
대안적으로, 분할된 전류 윈도우 사이에 도통 전류를 검출하는 것대신에, 제어 게이트에서의 테스트 하에 소정 메모리 상태에 대해 임계 전압을 설정하고, 도통 전류가 임계 전류보다 낮거나 또는 높은 지를 검출하는 것이 가능하다. 한 실행에서, 임계 전류에 관한 도통 전류의 검출은 도통 전류가 비트 라인의 커패시턴스를 통해 방전하고 있는 속도를 조사함으로써 달성된다.
도 3은 부동 게이트가 어느 때나 선택적으로 저장할 수 있는 4개의 상이한 전하들(Q1~Q4)에 대하여 소스-드레인 전류ID와 제어 게이트 전압VCG 간의 관계를 도시한다. 4개 고체 ID 대 VCG 곡선들은 4개의 가능 메모리 상태들에 각각 대응하는 메모리 셀의 부동 게이트에서 실행될 수 있는 4개 가능 전하 레벨들을 나타낸다. 일례로, 모집단 셀들의 임계 전압 윈도우는 0.5~3.5V 범위를 가진다. 하나의 소거된 상태와 6개의 프로그래밍된 상태를 각각 나타내는 7개 가능 메모리 상태들, "0", "1", "2", "3", "4", "5", "6"은, 각각의 0.5V 간격의 5개 영역들로 임계 윈도우를 분할함으로써 경계가 표시될 수 있다. 예를 들면, 기준 전류, 2μF의 IREF가 도시된 바와 같이 사용되는 경우, Q1으로 프로그래밍되는 셀은, 그것의 곡선이 VCG = 5V와 1.0V로 경계가 표시되는 임계 윈도우의 영역에서 IREF와 교차하기 때문에, 메모리 상태 "1"에 있는 것으로 간주될 수 있다. 마찬가지로, Q4는 메모리 상태 "5"에 있다.
전술된 것으로부터 알 수 있듯이, 메모리 셀이 저장해야 하는 상태들이 많아질수로, 그것의 임계 윈도우는 더 세분하여 나누어진다. 예를 들면, 메모리 장치는 -1.5~5V 범위의 임계 윈도우를 가지는 메모리 셀들을 구비한다. 이것은 6.5V의 최대 폭을 제공한다. 메모리 셀이 16 상태들을 저장해야 하는 경우, 각각의 상태는 임계 윈도우에서 200~300mV를 차지한다. 이것은 요구되는 분해도(resolution)를 달성할 수 있도록 동작들을 프로그래밍하고 판독하는데 있어 더 높은 정밀도를 요구하게 된다.
도 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 어레이(210)의 일례를 도시한다. NAND 스트링들의 각 행을 따라, 비트 라인, 예를 들면 비트 라인(36)은 각각의 NAND 스트링의 드레인 단자(56)에 결합된다. NAND 스트링들의 각 뱅크를 따라, 소스 라인, 예를 들면 소스 라인(34)은 각각의 NAND 스트링의 소스 단자(54)에 결합된다. 또한, NAND 스트링들의 뱅크에서 메모리 셀들 열을 따라 제어 게이트들은 선택 라인, 예를 들면 선택 라인(44)에 접속된다. NAND 스트링들의 뱅크에서 메모리 셀들의 전체 열은 NAND 스트링들의 뱅크의 워드 라인들과 선택 라인들의 적정 전압들에 의해 처리될 수 있다. NAND 스트링 내의 메모리 트랜지스터가 판독되는 경우, 스트링의 잔여 메모리 트랜지스터들은 스트링을 통과하여 흐르는 전류가 판독되는 셀에 저장된 전하 레벨에 근본적으로 의존하도록, 그것들의 관련 워드 라인들을 통해 하드(hard) 턴온된다.
도 5는 예를 들면, 감지되거나 또는 병렬 프로그래밍되는 NAND 구성으로 구성된 메모리 셀들의 한 페이지를 도시한다. 도 5는 도 4b의 메모리 어레이(210)에서 NAND 스트링들(50)의 뱅크를 근본적으로 도시하며, 각 NAND 스트링에 관한 상세는 도 4a에서와 같이 명백하게 도시된다. "페이지", 예를 들면 페이지(60)는 병렬로 감지되거나 또는 프로그래밍될 수 있게 되는 메모리 셀들의 그룹이다. 이것은 감지 증폭기(212)의 대응 페이지에 의해 달성된다. 감지된 결과들은 대응 세트의 래치들(214)에서 래치들이다. 각각의 감지 증폭기는 비트 라인을 통해 NAND 스트링에 결합될 수 있다. 페이지는 워드 라인(42)에 공통으로 접속되는 페이지의 셀들의 제어 게이트들에 의해 가동되고, 각각의 셀은 비트 라인(36)을 통해 액세스 가능한 감지 증폭기에 의해 액세스 가능하다. 일례로, 셀들(60)의 페이지를 각각 감지하거나 또는 프로그래밍할 경우, 감지 전압 또는 프로그래밍 전압은 각각 비트 라인들의 적정 전압들과 함게 공통 워드 라인 WL3에 각각 인가된다.
메모리의 물리적 구성
플래시 메모리와 메모리 형태의 중요한 차이는 셀이 소거된 상태로부터 프로그래밍되어야 한다는 것이다. 그것은 부동 게이트에 우선 전하가 없어야야 한다는 것이다. 그런 다음, 프로그래밍은 부동 게이트에 다시 원하는 양의 전하를 부가한다. 더 많은 프로그래밍된 상태에서 더 적은 상태로 진행하도록 부동으로부터 전하의 일부를 제거하는 것을 지원하지 않는다. 이것은 업데이트 데이터가 기존의 위치에 오버라이팅할 수 없고 이전의 기록되지 않은 위치에 반드시 기록되어야 함을 의미한다.
또한, 소거는 부동 게이트로부터의 모든 전하들을 비우는 것이며 통상적으로 상당한 시간이 걸린다. 이러한 이유로, 셀 단위로 소거하거나 또는 심지어 페이지 단위로 소거하는 것은 번거롭고 매우 느리다. 사실상, 메모리 셀들의 어레이는 메모리 셀들의 대다수의 블록들로 분할된다. 플래시 EEPROM 시스템에 통상적이므로, 블록은 소거 단위이다. 즉, 각각의 블록은 동시에 소거될 최소 개수의 메모리 셀들을 포함한다. 병렬로 소거될 블록에서 종합한 대다수의 셀들이 소거 성능을 향상시키는 반면에, 큰 크기의 블록은 또한 대다수의 업데이트와 쓸모 없는 데이터 처리를 수반한다. 블록이 소거되기 직전에, 가비지 콜렉션은 블록내의 쓸모 있는 데이터를 구조하는데 필요하다.
각각의 블록은 다수의 페이지들로 통상 분할된다. 한 페이지는 프로그래밍 또는 판독의 단위이다. 일 실시예에서, 개별 페이지들은 세그먼트들로 분할되고, 그 세그먼트들은 기본 프로그래밍 동작으로서 한번에 기록되는 최소 개수의 셀들을 포함한다. 데이터의 하나 또는 그 이상의 페이지들은 메모리 셀들의 한 열에 통상 저장된다. 한 페이지는 하나 또는 그 이상의 섹터들을 저장할 수 있다. 한 섹터는 유저 데이터 및 오버헤드 데이터를 포함한다. 다수 어레이들에 전반에 분포된 다수 블록들과 페이지들은 메타블록들과 메타페이지들로 함께 동작될 수 있다. 만일 그것들이 다수 칩들에 분포되어 있는 경우엔, 그것들은 메가블록들과 메가페이지들로서 함께 동작될 수 있다.
멀티-레벨 셀(" MCL ") 메모리 분할의 일례들
메모리 셀들이 다수 비트들의 데이터를 각각 저장하는 비휘발성 메모리는 도 3과 결합하여 이미 기술되었다. 특정 일례로 전계 효과 트랜지스터들의 어레이로 형성된 메모리가 있으며, 각각의 트랜지스터들은 그것의 채널 영역과 제어 게이트 사이에 전하 저장 층을 가진다. 전하 저장 층 또는 유닛은 일정 범위의 전하들을 저장할 수 있고, 각각의 전계 효과 트랜지스터에 대하여 일정한 임계 전압들을 생성한다. 가능한 임계 전압들의 범위는 임계 윈도우까지 확장한다. 임계 윈도우가 임계 전압들의 다수 부-범위들 또는 영역들로 분할되는 경우, 각각의 분해 가능 영역은 메모리 셀의 상이한 메모리 상태들을 나타내는데 사용된다. 다수 메모리 상태들은 하나 또는 그 이상의 2진 비트들로 코딩될 수 있다. 예를 들면, 4개 영역들로 분할된 메모리 셀은 2-비트 데이터로 코딩될 수 있는 4개 상태들을 지원할 수 있다. 동일하게는, 8개 영역들로 분할되는 메모리 셀은 3-비트 데이터 등으로 코딩될 수 있는 8개 메모리 상태들을 지원할 수 있다.
모든-비트, 풀- 시퀀스 MLC 프로그래밍
도 6(0)~6(2)는 모집단의 4-상태 메모리 셀들을 프로그래밍하는 일례를 도시한다. 도 6(0)은 메모리 상태들 "0", "1", "2", "3"을 각각 나타내는 임계 전압들의 별개의 분포들로 프로그래밍 가능한 모집단의 메모리 셀들을 도시한다. 도 6(1)은 소거된 메모리에 대한 "소거된" 임계 전압들의 초기 분포를 도시한다. 도 6(2)는 많은 메모리 셀들이 프로그래밍된 후 메모리의 일례를 도시한다. 본질적으로, 셀은 초기에 "소거" 임계 전압을 가지며, 프로그래밍은 검증 레벨들 vV1, vV2, vV3로 경계가 표시되는 3개 영역들 중 하나에서 그것을 더 높은 값으로 이동시킨다. 이 방법에서, 각각의 메모리 셀은 3개 프로그래밍된 상태 "1", "2", "3" 중 하나로 프로그래밍되거, 또는 "소거" 상태에서 프로그래밍되지 않은 상태를 유지할 수 있다. 메모리가 더 많은 프로그래밍을 할 경우, 도 6(1)에 도시되는 "소거" 상태의 초기 분포는 보다 좁아지게 되고, 소거 상태는 "0" 상태로 표시된다.
최저 비트와 최상 비트를 가지는 2-비트 코드는 4개 메모리 상태들 각각을 나타내는데 사용될 수 있다. 예를 들면, "0", "1", "2", "3" 상태들은 각각 "11", "01", "00", "10"으로 각각 표시된다. 2-비트 데이터는 3개의 서브-패스들 각각에서 판독 경계 표시 임계 값들 rV1, rV2, rV3에 관하여 감지함으로써 2비트들이 함께 감지되는 "풀-시퀀스" 모드를 감지함으로써 메모리로부터 감지될 수 있다.
비트 단위 MLC 프로그래밍 및 판독
도 7a~7e는 소정의 2-비트 코드로 엔코딩된 4-상태 메모리의 프로그래밍과 판독을 도시한다. 도 7a는 각각의 메모리 셀이 2-비트 코드를 사용하여 데이터의 2비트들을 저장할 경우 4-상태 메모리 어레이의 임계 전압 분호를 도시한다. 이러한 2-비트 코드는 미국 특허 제7,057,939호에 개시되어 있다.
도 7b는 2-비트 코드를 이용한 2-패스 프로그래밍 구성에서 최저 페이지 프로그래밍(최저 비트)을 도시한다. 내장애성(fault tolerance) LM 뉴 코드는 임의 중간 상태들을 통해 전이하도록 임의 최상 페이지 프로그래밍을 본질적으로 방지한다. 따라서, 제1 패스 최저 페이지 프로그래밍은 DA보다 더 크고 DC보다 작은 프로그래밍 임계 전압을 이용하여 (x, 0)으로 지정되는 "중간" 상태로 "프로그래밍되지 않은" 메모리 상태 "0"을 프로그래밍함으로써 나타내어지는 바와 같이 임의 중간 상태(x,0)로의 논리 상태(최상 비트, 최저 비트) 전이들을 가진다.
도 7c는 2비트 코드를 이용하는 2-패스 프로그래밍 구성에서 상부 페이지 프로그래밍(상부 비트)을 도시한다. 상부 페이지 비트를 "0"으로 프로그래밍하는 제2 패스에서, 최저 페이지 비트가 "1"인 경우, 논리 상태(1,1)는 "프로그래밍되지 않은" 메모리 상태 "0"에서 "1"로 프로그래밍함으로써 나타내어지는 (0,1)로 전이한다. 최저 페이지 비트가 "0"인 경우, 논리 상태(0,0)는 "중간" 상태에서 "3"으로 프로그래밍함으로써 얻어진다. 동일하게, 상부 페이지가 "1" 상태를 유지하는 경우, 최저 페이지가 "0"으로 프로그래밍되는 동안에, "중간" 상태에서 "2"로 프로그래밍됨으로써 나타내어지는 "중간" 상태를 "2"로 프로그래밍함으로써 나타내어지는 "중간" 상태에서 (1, 0)으로의 전이를 요구하게 된다.
도 7d는 2-비트 코드로 엔코딩된 4-상태 메모리의 최저 비트를 파악하는데 요구되는 판독 동작을 도시한다. LM 플래그가 판독될 수 있는 지를 판정하기 위해 판독 B 동작이 우선 실행된다. 만일 그런 경우에, 최상 페이지는 프로그래밍되고 판독 B 동작은 최저 페이지 데이터를 정확하게 생성하게 된다. 한편, 상부 페이지가 아직 프로그래밍되지 않은 경우엔, 최저 페이지 데이터는 판독 A 동작에 의해 판독되게 된다.
도 7e는 2-비트 코드를 이용하여 엔코딩되는 4-상태 메모리의 상부 비트를 파악하기 위하여 요구되는 판독 동작을 도시한다. 도면에서 알 수 있듯이, 상부 페이지 판독은 경계 표시 임계 전압들 DA, DB, DC에 관하여 판독A, 판독B, 판독C 각각을 요구한다.
2-비트 메모리에 대한 비트 단위 구성에서, 메모리 셀들의 물리 페이지는 2개의 논리 데이터 페이지들, 최저 비트에 해당하는 최저 데이터 페이지와 상부 비트에 해당하는 상부 데이터 페이지를 저장한다.
2진 및 MLC 메모리 분할
도 6 및 도 7은 2-비트("D2"로 칭해지기도 함) 메모리의 일례들을 도시한다. 도시된 바와 같이, D2 메모리는 4개 상태들을 지정하는 4개 영역들로 분할되는 그것의 임계 범위 또는 윈도우를 가진다. 동일하게는, D3에서, 각각이 셀은 3비트들(최저, 중간 그리고 상부 비트들)을 저장하며 8개 영역들이 있다. D4에서, 4비트들과 16개 영역들이 있다. 메모리의 한정된 임계 윈도가 더 많은 영역들로 분할되는 경우, 분해도는 그리고 프로그래밍 및 판독을 위해 당연히 섬세하게 된다. 메모리 셀이 더 많은 비트들을 저장하도록 구성되면 2가지 문제가 발생한다.
첫 번째로, 프로그래밍 또는 판독은 셀의 임계가 보다 정확하게 프로그래밍되거나 또는 판독되는 경우에 더 느려진다. 사실상, 감지 시간(프로그램 및 판독에 요구되는)은 분할 레벨들의 개수의 제곱에 따라 증가하는 경향이 있다.
두 번째로, 플래시 메모리는 사용 년수에 따른 내구성 문제를 가진다. 셀리 반복적으로 프로그래밍되고 소거되는 경우, 전하들은 절연체를 가로질러 터널링함으로써 부동 게이트(20) 내부와 외부로 왕복하게 된다(도 2 참조). 각각의 시간에, 임의 전하들은 절연체에서 트랩핑하게 되고 셀의 임계를 수정한다. 사실은, 남용할 경우, 임계 윈도가 점차 좁아지게 된다. 따라서, MLC 메모리는 통상적으로 용량, 성능 및 신뢰성 사이에서 절충하여 설계된다.
반대로, 2진 메모리에 대하여 메모리의 임계 윈도우가 2개 영역들로만 분할된다는 것을 알게 될 것이다. 이것은 최대 마진의 에러들을 허용한다. 따라서, 저장 용량에서 감소되는 2진 분할은 최대 성능 및 신뢰성을 제공한 것이다.
도 7과 결합하여 기술되는 멀티-패스, 비트 단위 프로그래밍 및 판독 기술은 MLC와 2진 분할 사이에 평탄한 전이를 제공한다. 이 경웨, 메모리가 최저 비트만으로 프로그래밍되는 경우, 그것은 실질적으로 2진 분할된 메모리이다. 이 방법이 단일 레벨 셀("SLC")의 경우에서처럼 임계 윈도우의 범위를 전적으로 최적화하지 못하는 반면에, 그것은 MLC 메모리의 최저 비트의 동작에서처럼 동일 경계선 또는 감지 레벨을 사용하는 이점을 가진다. 후술되는 바와 같이, 이러한 방법은 2진 메모리로서 사용하기 위해 MLC 메모리가 "수용"되는 것을 또는 그 반대도 허용한다. MLC 메모리가 더 엄중한 사용 규격을 가지는 경향이 있다는 것을 이해하게 된다.
2진 메모리와 부분 페이지 프로그래밍
한 메모리 셀의 전하 저장 소자에 프로그래밍되는 전하는 인접한 메모리 셀의 전계를 교란시키는 전계를 생성한다. 이것은 전하 저장 소자를 가지는 전계 효과 트랜지스터인 인접한 메모리 셀의 특정에 영향을 미치게 된다. 특히, 감지될 경우 메모리 셀은 적게 교란될 때보다 더 높은 임계 레벨(또는 더 많은 프로그래밍)을 가지는 것으로 나타난다.
일반적으로, 상이한 전하들로 나중에 프로그래밍되는 인접한 셀들로 인해, 메모리 셀이 제1 전계 분위기 하에서 프로그래밍 검증되고 후에 상이한 전계 분위기 하에서 다시 판독되는 경우, 판독 정확성은 인접하는 부동 게이트들 간의 결합으로 인해 영향을 받을 수 있으며, 이것은 "유핀 효과(Yupin effect)"라고 칭해진다. 반도체 메모리들에서 더 높은 통합에 관하여, 메모리 셀들간의 저장된 전하들로 인한 전계의 교란(유핀 효과)은 셀룰러 상호간의 간격 수축으로 두드러지게 증가하게 된다.
상기 도 7과 결합하여 기술되는 비트 단위 MLC 프로그래밍 기술은 동일 워드 라인을 따라 셀들로부터의 프로그램 교란을 최소화하도록 설계된다. 도 7b로부터 알 수 있듯이, 2개 프로그래밍 패스들 중 제1 패스에서, 셀들의 임계들은 기껏해야 임계 윈도우 절반까지 이동된다. 제1 패스의 효과는 최종 패스에 의해 추월된다. 최종 패스에서, 임계들은 그 길의 1/4까지만 이동된다. 다시 말하면, D2에 대하여, 인접한 셀들간의 전하 차이는 그것의 최대의 1/4로 제한된다. D3에 대하여, 3개 패스들에 있어서, 최종 패스는 그것의 최대의 1/8로 전하 차이를 제한할 것이다.
그러나, 비트 단위 멀티 패스 프로그래밍 기술은 부분 페이지 프로그래밍에 의해 절충된다. 한 페이지는 한 단위로서 함께 프로그래밍되는, 통상적으로 열 또는 워드 라인에 따른 메모리 셀들의 그룹이다. 다수 프로그래밍 패스들 각각을 통해 페이지의 넌오버랩핑 부분들을 프로그래밍하는 것이 가능하다. 그러나, 페이지의 셀들 모두가 최종 패스에서 함께 프로그래밍되지 않기 때문에, 페이지가 행해진후에 셀들 사이에서 프로그래밍된 전하들에서 큰 차이가 생성한다. 따라서, 부분-페이지 프로그래밍은 더 많은 프로그램 교란을 초래하게 되고 정확한 감지를 위해 보다 큰 마진을 요구하게 된다.
메모리가 2진 메모리로 구성되는 경우에, 동작 마진은 MLC 보다 더 광범위하다. 바람직한 실시예에서, 2진 메모리는 부분-페이지 프로그래밍을 지원하도록 구성되며, 이 때 페이지의 넌오버랩핑 부분들은 그 페이지의 다수 프로그래밍 패스들 중 하나에서 각각 프로그래밍될 수 있다. 프로그래밍과 판독 성능은 큰 크기의 페이지로 동작함으로써 향상될 수 있다. 그러나, 페이지 크기가 호스트의 기록 단위 보다 훨씬 큰 경우엔(통상적으로 512바이트 섹터), 그것의 사용은 비효율적이게 된다. 페이지보다 더 섬세한 세분성으로의 동작은 이러한 페이지의 보다 효율적인 사용을 가능하게 한다.
제공된 일례는 2진 대 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(ⅰ)~10a(ⅲ)는 논리 그룹과 메타블록 간의 맵핑을 개략적으로 도시한다. 물리 메모리의 메타블록은 논리 그룹의 데이터의 N개 논리 섹터들을 저장하는 N개 물리 섹터들을 가진다. 도10a(ⅰ)는 논리 그룹 LG로부터의데이터를 도시하며, 그 논리 섹터들은 인접한 논리 순서 0,1,...N-1로 되어 있다. 도 10a(ⅱ)는 동일한 논리 순서로 메타블록에 저장되는 동일 데이터를 도시한다. 이러한 방법으로 저장된 메타블록은 "순차적"이라고 한다. 통상적으로, 메타블록은 상이한 순서로 저장된 데이터를 가지며, 이 경우에 메타블록은 "비순차적" 또는 "무질서" 하고 한다.
논리 그룹의 최저 어드레스와 그것이 맵핑되는 메타블록의 최저 어드레스 사이에 오프셋이 있을 수 있다. 이 경우에, 논리 섹터 어드레스는 메타블록 내에서 논리 그룹의 저부에서 다시 상부로 루프처럼 순환한다. 예를 들면, 도 10a(ⅲ)에서, 메타블록은 논리 섹터 k의 데이터로 시작하는 그것의 제1 위치에 저장한다. 최종 논리 섹터(N-1)가 도달되는 경우, 그것은 섹터 0을 순환하고 마지막에 그것의 최종 물리 섹터에 논리 섹터(k-1)와 관련된 데이터를 저장한다. 바람직한 실시예에서, 페이지 태그는 임의 오프셋을 식별하는데, 예를 들면 메타블록의 제1 물리 섹터에 저장된 데이터의 개시 논리 섹터 어드레스를 식별하는데 사용된다. 2개 블록들은 그것들이 페이지 태그만큼만 다를 경우에 동일한 순서로 저장되는 그것들의 논리 섹터들을 가지는 것으로 여겨진다.
도 10b는 논리 그룹들과 메타블록들 간의 맵핑을 개략적으로 도시한다. 각각의 논리 그룹(380)은, 데이터가 현재 업데이트되고 있는 작은 개수의 논리 그룹들을 제외하고는 고유 메타블록(370)으로 맵핑된다. 논리 그룹이 업데이트된 후에, 상이한 메타블록들로 맵핑될 수 있다. 맵핑 정보는 논리 대 물리 디렉토리들의 세트로 유지되며, 이것은 더욱 상세하게 후에 기술될 것이다.
위성 파일 시스템
이 부문은 이중 메모리 뱅크들을 이용한 메모리 시스템들에의 위성 파일 시스템 사용을 제시한다. 성능을 향상시키기 위하여, 제어기는 뱅크들 각각에 백 엔드 스레드를 실행하고, 별도의 인터페이스를 통해 각각의 뱅크와 통신한다. 뱅크들 중 하나는 메모리를 관리하는 메인 파일 시스템을 가지지만, 임의 중요 파일들의 카피들은 위성 파일 시스템의 다른 뱅크에 저장된다. 위성 파일 시스템은 단지 메인 파일 시스템에 의존해야 하는 스레드들 없이 정규 시스템 동작들 동안에 요구되는 파일들의 카피들에 둘 다의 스레드들 액세스를 제공함으로써 성능을 향상시킨다. 이러한 뱅크들 각각은, 본 명세서에서 2개 메모리 뱅크들의 경우와, 제어기의 백 엔드에 대한 뱅크 엔드 스레드들의 대응하는 개수에 대하여 논의되고 있지만, 단일 칩에서 독립적으로 동작될 수 있는 하나 또는 그 이상의 칩들로 구성되거나 또는 반-독립 어레이들로 구성될 수 있다. 이하 논의는 또한 메모리 어레이들의 NAND형 구조를 사용하는 메모리 카드에 관한 문맥에서 제공되지만, 구조들 및 넌-카드 사용들, 예를 들면 내장된 시스템들, SSD 등까지 기꺼이 확장한다.
이하 논의가 구체적 일례들을 제공하는 다양한 예시적 실시예들에 기초하고 있지만, 기술들 및 구조들은 독립적으로 동작될 수 있는 제어기와 다수 뱅크들을 구비한 메모리 시스템에 공평하게 통상적으로 적용될 수 있으며, 여기서 뱅크들은 플래시든 또는 다른 다양한 것들이든간에 제어기가 메모리 시스템을 관리하는데 사용할 수 있는 시스템 데이터를 저장하는데 사용될 수 있는 소량의 비휘발성 메모리를 포함한다. 전술된 다른 참조 문헌에 추가하여, 이러한 것들은 이하의 미국 특허, 특허 공고 및 출원 번호들에 제공되는 다양한 메모리 시스템들을 포함할 수 있다; 제7,480,766호, US-2005-0154819-A1; US-2007-0061581-A1; US-2007-0061597-A1; US-2007-0113030-A1; US-2008-0155178-A1; US-2008-0155228-A1; US-2008-0155176-A1; US-2008-0155177-A1; US-2008-0155227-A1; US-2008-0155175-A1; 12/348,819; 12/348,825; 12/348,891; 12/348,895; 12/348,899; 61/142,620.
도 11은 위성 파일 시스템을 사용하는 예시적인 2개 뱅크 실시예의 관련 소자들의 일부를 도시한 블록도이다. 호스트(401)는 메모리 시스템(403)에 접속되며, 이것은 제어기 회로(411)와 메모리 뱅크들 BANK0(421-0)와 BANK1(421-1)을 구비한다. 제어기는 호스트 인터페이스(413)를 통해 호스트와 통신하고 대응하는 인터페이스 BANK INT(421)를 통해 뱅크들 각각에 통신한다. 펌웨어 제어에서, 제어기(411)는 각각의 뱅크에 대하여 프론트 엔드 부(415)와 백 엔드 스레드(417)를 실행한다. 예시적인 실시예에서, 싱글 호스트 인터페이스(413)가 있으며, 그래서 데이터를 전송하는 회로도 싱글이다. 프론트 엔드 스레드(413)의 논리는 백엔드 펌웨어 스레드들(417-0, 417-1)에 따라 제어기 회로를 작동시키고 백엔드 펌웨어 스레드들에 대한 작업을 할당한다. 프론트 엔드는 싱글 뱅크에 태스크들을 각각 할당하거나, 또는 그 뱅크들 사이에 태스크들을 분할한다. 예를 들면, 데이터의 대량 기록 코맨드 부분은 한 뱅크에 기록되고 다른 뱅크에 나머지 부분에 기록되어, 병렬성을 통해서 기록 성능을 증가시키게 된다. 도 11에 명확하게 도시되지는 않았지만, 제어기는 데이터 전송들에 사용되는 하나의 대용량 인접 버퍼를 통상적으로 가지며, 이것은 상이한 뱅크들에 대하여 논리적으로 분리된다. 데이터가 전송되는 경우, 특정 뱅크에 의도되는 데이터는 그것의 논리적으로 분리된 버퍼로 전송된다. 다른 실시예들은 물리적으로 별개의 버퍼들을 사용할 수 있다.
다수의 메모리 시스템들은 병렬성을 증가시키고 결국은 성능을 증가시키도록 메모리 회로에 다수 뱅크들을 사용하였다. 이것은 또한 도 11에 양자가 도시된 바와 같이, 다수 뱅크 인터페이스들을 포함함으로써 그리고 더 나아가서 각각의 뱅크에 백 엔드 스레드를 포함함으로써 증가될 수 있다. 도 11에 도시된 바와 같이, 이것은 한 뱅크에 유지되는 메인 파일 시스템과 다른 뱅크들에 유지는 위성 카피들과 함께, 파일 시스템의 커피를 뱅크에 제공함으로써 확장되어, 규치적인 메모리 동작동안에 각각의 백 엔드 스레드(417-0, 417-1)로 하여금 그 자신 카피(421-0, 421-1 각각)에 독립적으로 액세스할 수 있게 된다. (도 11이 펌웨어 제어를 나타내고 있지만, 하드웨어, 종래 기술과 동일하게, 소프트웨어, 펌웨어 또는 그것들의 다양한 결합으로 다양한 기능들이 실행될 수 있다는 것을 이해할 수 있다.)
통상적으로, 이전의 배열들은 파일 시스템의 단일 카피(또는 단일 능동 카피)만을 유지한다. 이중 뱅크 구조의 경우에 관하여 상기를 고려하고, 대응하는 소프트웨어 제어와 2개 하드웨어 뱅크들을 포함한다고 간주하면, 소프트웨어 제어는 병렬로 대부분 실행할 수 있다. 파일 시스템 정보 모두가 저장된 단일 카피만이 한 뱅크, BANK 0에 저장되는 경우, 단지 BANK 0만이 이 정보에 (직접) 액세스할 수 있다. 파일 시스템은 구성 정보, 펌웨어 마이크로코드 및 오버레이 코드와 같은 아이템들을 저장한다. 시스템의 다양한 모듈들은 그것들이 필요로 하는 정보를 검색하기 위해 파일 시스템에 액세스한다. 전술된 물리 링크 정보를 저장하는 오버레이 코드와 링크 테이블 정보가 없다면, 파일 시스템에 저장된 모든 정보는 카드 부트 업/ 파워 온/리셋 시간 동안에 판독된다. 이러한 시간동안에, 오직 BANK 0 스레드(417-0)는 능동적이며, 따라서 2개 블록 스레드들 사이에 경쟁, 성능 열화 또는 데드로크(deadlock)에 관한 문제가 없다; 그러나, 카드 동작의 다음 정상 과정동안에, 오버레이 및 링크 테이블 정보는 그것들의 개별 요구들에 기초하여 모든 뱅크들에 의해 액세스되어야 한다.
부트 다음에, 일단 모든 뱅크들이 작동하면, 파일 시스템 정보를 가지지 않는 임의 뱅크는 요구된 정보를 패치하기 위해서는 BANK 0을 인터럽트하고 BANK 0을 요청해야 한다. 이러한 배열은 시스템에 관하여 몇가지 리스크들을 가진다. 이러한 것들 중 첫번째는 파일 시스템으로부터 얻어진 정보가 연속 처리되고 한 번의 요청이 아니라는 것이다. 정기적으로 BANK 0을 인터럽트함으로써 시스템 성능을 위태롭게 한다. 나머지들은 호스트 요청들 중 일부 또는 모두가 양자(또는 통상적으로는 모두) 뱅크들에 의해 동시 실행되는 시스템의 결과이다. 태스크들이 뱅크들 사이에서 분할될 수 있지만, 뱅크들은 상호 독립적이고 태스크가 완성되기를 대기한다. BANK 0은 자유롭게 되기전에 BANK 1이 그것의 태스크를 종료하기를 대기할 수 있지만; BANK 1은 파일 시스템 정보에 액세스해서 BANK 0을 인터럽트하고 요청한다. 이것은 BANK 1이 호스트 동작을 완료시킬 때를 대기하고 있기 때문에 BANK 0이 요청을 처리할 수 없는 데드로크 상황이다.
결과적으로, 그것의 펌웨어가 비휘발성 제어 정보를 저장하는데 파일 시스템을 사용하는 메모리 시스템에 대하여 그리고 다수 채널들(또는 뱅크들)이 펌웨어에 액세스하는데 사용되는 경우, 이러한 파일 시스템의 단일 카피는 액세스 병목이 된다. 위성 파일 시스템의 소개는 이차적인 뱅크들에 의해 요구되는 파일 시스템의 중요 부분들의 판독 전용 카피를 생성함으로써 새로운 상기 문제점을 해결하는 길을 제공한다. 이것이 제어 데이터 한쪽에 설정되어야 하는 비휘발성 메모리의 양을 증가시키고, 그에 따라 사용자 데이터에 이용 가능한 양이 감소하며, 이러한 시스템들에 전류가 제공되고 용량을 계속해서 증가시키지만, 이것은 합성 성능 향상에 용인되는 가격 이상일 것이다.
따라서, 본 명세서에 제공되는 제1 양상은 이중- 또는 멀티-뱅크 시스템의 제2 또는 다른 추가 뱅크들에의 임의 파일들의 판독 전용 카피들 생성 및 저장이다. 위성 파일 시스템은 메인 파일 시스템의 서브셋이다. 예시적인 실시예에서, 위성 파일 시스템은 표준, 포스트-부트 동작들 과정에서 요구되는 파일 모두를 포함하고, 초기에 한 개 뱅크만이 이런 시간에 동작할 때 메인 시스템만이 카드 부트 업/파워 업/리셋 시간동안에만 사용되는 파일들의 카피들을 가진다. 스레드드이 파일들을 요청할 때, 파일 시스템 모듈은 뱅크에 기초하여 이러한 호출을 루팅할 수 있다.
다시 도 11을 참조하면, 위성 파일 시스템을 유지하는 것은, 정규 카드 동작동안에 뱅크들에 의해 요구되는 파일들의 뱅크들 모두에 대하여 카피들을 소개함으로서 상기 문제점들을 해결한다. 결국, BANK 1(421-1)은 부트 블록 및 사용자, 또는 호스트, 데이터에 추가하여 위성 파일 시스템을 포함한다. 부트 블록 및 사용자 데이터에 추가하여, BANK 0(421-0)은 메인 파일 시스템을 가진다. 다른 뱅크들의 특정 영역에 저장될수 있는 임의 중요한 파일들의 카피들과 이러한 카피들의 위치 정보는 메인 파일 시스템에 저장된다. 시스템 신뢰성을 높이기 위해서, 각각의 뱅크는 또한 메인 또는 위성(적절한 경우) 파일 시스템의 백업 카피를 통상적으로 유지한다. 각각의 백 엔드 스레드(417-0)(417-1)는 파일 시스템의 각각의 카피를 사용하는 대응 뱅크에 대하여 그것의 기능들(판독/동작들, 제어 동작들, 다양한 배경 및 저 레벨 동작들 등)을 실행한다.
바람직한 실시예에서, 저 레벨 카드 포맷동안에, 특정 위성 파일 시스템 영역은 파일 시스템의 메인 카피를 포함하지 않는 뱅크 또는 뱅크들에 생성된다. 메인 파일 시스템이 기록되자 마자, 요구되는 파일들은 식별되어 위성 파일 시스템들에 카피된다. 카피동안에, 위성 파일들의 위치 정보는 메인 파일 시스템 디렉토리에 저장된다. 이 파일 시스템 디렉토리는 카드 부트 업/파워 온/리셋 시간 동안에 판독되고 임의 뱅크에 의해 액세스될 수 있다.
BANK 1 스레드(417-1)가 특정 파일들 중 하나에 포함되는 파일 시스템 정보를 요청하는 경우, 파일 시스템은 그 요청을 인식하고, BANK 1(421-1)의 시스템 파일 시스템에 저장된 파일 카피로부터 정보를 패치할 수 있다. 그것은 BANK 0(421-0)을 인터럽트하지 않으며, 이러한 요구조차도 인식하지 못한다.
메인 파일 시스템과 같이, 위성 파일 시스템은 바람직하게는 내장애성을 제공하도록 그것이 포함하는 파일들 모두의 2개 카피들을 포함한다. 위성 파일 시스템에 저장된 정보가 고정되어 있고 카드의 생명 시간에 관하여 변화하지 않기 때문에, 위성 파일 시스템은 그것이 포함하는 파일들에 관한 임의 업데이트들을 허가하지 않는다.
도 12는 예시적인 실시예에 따른 BANK 0의 메인 파일 시스템과 BANK 1의 위성 파일 시스템의 소자들을 도시한다. 양자 뱅크들은 전술된 부문들 또는 인용된 참조 문헌들에서 논의되는 바와 같은 사용자 데이터 영역과 다양한 제어 날짜 뿐만 아니라 부트 블록을 가진다. 메인 및 위성 파일 시스템들 둘다는 링크 테이블 파일들과 다양한 오버레이 파일들과 같은 규치적인 동작들동안에 요구되는 파일들의 카피들을 가진다. BANK 0이 부트 처리동안에 능동인 초기 뱅크인 경우, 메인 파일 시스템은 펌웨어 파일, 오버레이 파일, 플래시 RISC 코드 파일을 포함하며, 그것에 의해 제어기는 메모리 뱅크들, 제어 RISC 코드 파일(이것은 데이터를 전송하기 위해 호스트와 인터페이싱하는 제어기에 대한 것이다), 링크 테이블 파일(메모리의 메타블록들이 논리적으로 결합되는 방법을 명시하고 있음) 그리고 다양한 구성 파일들과 상호 작용한다.
이러한 배치 하에, 제어기는 다수의 백엔드 펌웨어 스레드들(소프트웨어 스레드들)을 독립적으로 그리고 동시에 실행할 수 있으며, 이것들 각각은 그것이 할당되는 메모리 뱅크에서 일어나는 것들을 관리(판독/기록 동작들 등을 실행)하는 것에 책임이 있다. 예시적인 실시예에서, 각각의 백엔드 펌웨어 스레드는 전용 플래시 RISC 제어기(또다른 제어기 회로, 각각의 뱅크에 각각 하나씩)를 통해 그것의 메모리 뱅크에 인스트럭션들을 발행한다.
오버레이들에 관하여, 부트 업 동안에, 펌웨어 코드는 제어기 회로의 RAM 영역으로 로딩된다. 이 RAM이 통상 크기가 상대적으로 제한되는 경우, 시스템은 종종 이 RAM 영역에서 완전하게 수용될 수 없는 코드를 가진채 종종 종료한다. 이러한 문제를 해결하기 위하여, 코드는 종종 2 부분으로 쪼개진다; RAM에 항상 존재애해야 하는 메인 코드와, RAM 내부 및 외부에 요구에 따라 로딩될 수 있는 오버레이 코드. 메인 코드는 펌웨어 파일로 불리는 파일로 저장되고, 오버레이 코드는 오버레이 파일로 저장된다. 메인 코드는 RAM의 가용성으로 인해 부트 업동안에 단 한번만 로딩된다; 그런, 오버레이 코드 부문들은 카드의 정규 실행동안안 펌웨어 스레드들 중 임의 스레드에 의해 요구될 수 있고, 이러한 코드를 로딩하는 요구들은 특정 스레드이고, 양쪽 뱅크들에 오버레이 파일을 저장하는 선호도이다.
본 발명의 전술된 설명은 기술 및 설명을 목적으로 제공된다. 개시된 바로 그 형태에 본 발명을 총망라하거나 또는 한정하도록 의도되지 않는다. 많은 수정들 및 변경들은 상기 교시에 비추어 가능하다. 기술된 실시예들은 본 발명의 원리들과 그것의 실질적 어플리케이션을 가장 잘 설명하기 위해 선택되었으며, 그것에 의해 당업자들로 하여금 예기되는 특정 사용에 적합한 다양한 실시예들에 그리고 다양한 변경으로 본 발명을 가장 잘 이용할 수 있게 된다.
401 : 호스트
413: 호스트 인터페이스
415: 프론트 엔드
417-0 : 백 엔드 BANK 0 스레드, 판독/기록 동작들, 제어 동작들, 백그라운드 동작들, 저 레벨 제어
417-1 : 백 엔드 BANK 1 스레드, 판독/기록 동작들, 제어 동작들, 백그라운드 동작들, 저 레벨 제어
421-0 : 부트 블록 파일 시스템 호스트 데이터
421-1 : 부트 블록 위성 파일 시스템 호스트 데이터

Claims (21)

  1. 각각이 유저 데이터와 시스템 데이터를 저장하기 위해 하나 이상의 비휘발성 메모리 어레이들을 포함하는 다수의 독립 동작 가능 뱅크들을 가지는 비휘발성 메모리 회로; 및
    상기 메모리 회로에서 사용자의 저장을 관리하는 제어기 회로;를 포함하며,
    상기 제어기 회로는,
    상기 제어기와 대응하는 뱅크 사이에서 데이터를 전달하도록 상기 뱅크들 각각에 각각 접속되는 다수의 뱅크 인터페이스와,
    상기 뱅크들 중 대응 뱅크를 각각 독립적으로 그리고 동시에 관리하는 다수의 스레드(thread)들을 실행하는 처리 회로를 포함하며,
    상기 뱅크들 중 제1 뱅크는 파일 시스템을 포함하는 시스템 데이터를 저장하며, 상기 파일 시스템을 포함하는 시스템 데이터에 의해 상기 대응 스레드가 상기 제1 뱅크를 관리하고 상기 다른 뱅크들 각각은 상기 파일 시스템의 일부 카피를 포함한 시스템 데이터를 저장하며, 상기 파일 시스템의 일부 카피를 포함한 시스템 데이터로 인에 인해 상기 대응 스레드는 상기 뱅크를 관리하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  2. 청구항 1에 있어서, 상기 처리 회로는 상기 각각의 뱅크 인터페이스를 통해 인스트럭션들을 제공함으로써 상기 대응 뱅크를 관리하도록 각 스레드의 전용 제어기를 포함하는 것인 비휘발성 메모리 시스템.
  3. 청구항 1에 있어서, 상기 파일 시스템의 상기 일부 카피들은 판독 전용 카피들인 것인 비휘발성 메모리 시스템.
  4. 청구항 1에 있어서, 비휘발성 메모리 어레이들은 물리 소거 블록들로 형성되고, 상기 제어기는 복합 구조들로 논리적으로 연결된 다수 블록들의 구조들을 사용하여 상기 메모리를 관리하는데, 상기 파일 시스템과 상기 파일 시스템의 일부 모두는 상기 복합 구조들이 형성되는 상기 연결 정보를 포함하는 것인 비휘발성 메모리 시스템.
  5. 청구항 1에 있어서, 상기 파일 시스템과 상기 파일 시스템의 일부 모두는 상기 대응 뱅크들을 제어하는 하나 이상의 오버레이 파일들을 포함하는 것인 비휘발성 메모리 시스템.
  6. 청구항 1에 있어서, 상기 파일 시스템의 일부에 포함되지 않는 부트 업(boot up) 처리 동안에 사용되는 정보를 포함하는 것인 비휘발성 메모리 시스템.
  7. 청구항 6에 있어서, 상기 파일 시스템의 일부에 포함되지 않는 부트 업 처리 동안에 사용되는 상기 정보는 펌웨어 파일들을 포함하는 것인 비휘발성 메모리 시스템.
  8. 청구항 7에 있어서, 상기 파일 시스템의 일부에 포함되지 않는 부트 업 처리 동안에 사용되는 상기 정보는 상기 스레드들에 의해 뱅크들을 관리하고 그리고 상기 메모리 시스템이 부착되는 호스트에 인터페이싱하기 위한 코드 파일들을 더 포함하는 것인 비휘발성 메모리 시스템.
  9. 청구항 1에 있어서, 상기 제어기는 상기 메모리 시스템과 상기 메모리 시스템이 접속되는 호스트 사이에서 데이터를 전달하는 호스트 인터페이스를 더 포함하며, 상기 처리 회로는 상기 제어기와 상기 호스트 간의 상호 작용을 관리하는 프론트 엔드 스레드(front end thread)를 추가로 실행하는 것인 비휘발성 메모리 시스템.
  10. 청구항 9에 있어서, 상기 프론트 엔드 스레드는 상기 뱅크들을 관리하는 다수의 스레드들에 태스크들을 할당하는 것인 비휘발성 메모리 시스템.
  11. 청구항 1에 있어서, 상기 뱅크들 중 상기 제1 뱅크는 상기 파일 시스템의 다수 카피들을 저장하고, 다른 뱅크들 각각은 상기 파일 시스템 일부의 다수 카피들을 저장하는 것인 비휘발성 메모리 시스템.
  12. 다수의 독립 동작 가능 뱅크들을 가지는 비휘발성 메모리 회로와 상기 메모리 회로에서 사용자의 기억을 관리하는 제어기 회로를 포함하는 비휘발성 메모리 시스템 동작 방법으로서,
    파일 시스템을 포함하는 시스템 데이터를 상기 뱅크들 중 제1 뱅크의 비휘발성 메모리에 저장하는 단계와;
    상기 파일 시스템의 일부 카피를 포함하는 시스템 데이터를 상기 뱅크들 중 제2 뱅크의 비휘발성 메모리에 저장하는 단계와;
    상기 파일 시스템에 따라 상기 제1 뱅크를 관리하는 제1 스레드를 상기 제어기에서 실행하는 단계와;
    상기 제1 스레드를 실행하는 동시에, 상기 제1 뱅크에 저장된 상기 파일 시스템과 상관없이 상기 파일 시스템의 카피에 따라 상기 제2 뱅크를 관리하는 제2 스레드를 상기 제어기에서 실행하는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 청구항 12에 있어서, 상기 제1 및 제2 스레드들 각각은 각각의 전용 제어기에서 실행되고, 대응하는 뱅크 인터페이스를 통해 상기 제1 및 제2 뱅크들과 각각 통신하는 것인 방법.
  14. 청구항 12에 있어서, 상기 파일 시스템 일부의 상기 카피는 판독 전용 카피인 것인 방법.
  15. 청구항 12에 있어서, 상기 비휘발성 메모리 어레이는 물리 소거 블록들로 형성되고, 상기 제어기는 복합 구조들로 논리적으로 연결된 다수 블록들의 구조들을 사용하여 상기 메모리를 관리하며, 상기 파일 시스템과 상기 파일 시스템 일부 모두는 상기 복합 구조들이 형성되는 연결 정보를 포함하는 것인 방법.
  16. 청구항 12에 있어서, 상기 파일 시스템과 상기 파일 시스템의 일부는 상기 대응 뱅크들을 제어하는 하나 이상의 오버레이 파일들을 포함하는 것인 방법.
  17. 청구항 12에 있어서, 상기 제어기에서 상기 제2 스레드를 실행하기 이전에, 상기 파일 시스템의 일부에 포함되지 않는 상기 제1 뱅크에 저장된 상기 파일 시스템의 정보를 사용하여 상기 제1 스레드에 의해 실행되는 부트 업 처리를 실행하는 단계를 더 포함하는 것인 방법.
  18. 청구항 17에 있어서, 상기 파일 시스템의 일부에 포함되지 않는 상기 부트 업 처리동안에 사용되는 상기 정보는 펌웨어 파일들을 포함하는 것인 방법.
  19. 청구항 17에 있어서, 상기 파일 시스템의 일부에 포함되지 않는 상기 부트 업 처리동안에 사용되는 상기 정보는 상기 스레드들에 의해 뱅크들을 관리하고 상기 메모리 시스템이 부착되는 호스트에 인터페이싱하기 위한 코드 파일들을 더 포함하는 것인 방법.
  20. 청구항 12에 있어서, 상기 제어기는 상기 메모리 시스템과 상기 비휘발성 메모리 시스템이 접속되는 호스트 사이에서 데이터를 전달하는 호스트 인터페이스를 더 포함하며; 상기 방법은, 상기 제어기와 상기 호스트 간의 상호 작용들을 관리하는 프론트 엔드 스레드를 상기 제어기에서 실행하는 단계를 더 포함하는 것인 방법.
  21. 청구항 20에 있어서, 상기 프론트 엔드 스레드는 상기 뱅크들을 관리하는 다수의 스레드들에 태스크들을 할당하는 것인 방법.
KR1020127000002A 2009-06-16 2010-06-09 위성 파일 시스템을 구비한 멀티-뱅크 비휘발성 메모리 시스템 KR20120052216A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/485,500 2009-06-16
US12/485,500 US20100318720A1 (en) 2009-06-16 2009-06-16 Multi-Bank Non-Volatile Memory System with Satellite File System

Publications (1)

Publication Number Publication Date
KR20120052216A true KR20120052216A (ko) 2012-05-23

Family

ID=42556820

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127000002A KR20120052216A (ko) 2009-06-16 2010-06-09 위성 파일 시스템을 구비한 멀티-뱅크 비휘발성 메모리 시스템

Country Status (6)

Country Link
US (1) US20100318720A1 (ko)
EP (1) EP2443543B1 (ko)
KR (1) KR20120052216A (ko)
CN (1) CN102483685B (ko)
TW (1) TW201113883A (ko)
WO (1) WO2010147827A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8593866B2 (en) 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
WO2013095520A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Object-aware storage
TWI563383B (en) * 2012-04-25 2016-12-21 Phison Electronics Corp Memory formatting method, memory controller and memory storage apparatus
CN103389941B (zh) * 2012-05-07 2016-03-02 群联电子股份有限公司 存储器格式化方法、存储器控制器及存储器存储装置
US9141291B2 (en) 2013-11-26 2015-09-22 Sandisk Technologies Inc. Adaptive context disbursement for improved performance in non-volatile memory systems
US10719237B2 (en) 2016-01-11 2020-07-21 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory
TWI660269B (zh) 2018-01-26 2019-05-21 慧榮科技股份有限公司 用來於一記憶裝置中進行寫入管理之方法以及記憶裝置及其控制器
TWI709855B (zh) * 2018-01-26 2020-11-11 慧榮科技股份有限公司 用來於一記憶裝置中進行寫入管理之方法以及記憶裝置及其控制器

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US142620A (en) 1873-09-09 Improvement in combined water coolers and filters
US4818932A (en) * 1986-09-25 1989-04-04 Tektronix, Inc. Concurrent memory access system
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
US5343063A (en) * 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5313421A (en) * 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5315541A (en) * 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) * 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
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
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
US6006307A (en) * 1997-11-13 1999-12-21 Advanced Micro Devices, Inc. Computer system employing a mirrored memory system for providing prefetch bandwidth
US6161111A (en) * 1998-03-31 2000-12-12 Emc Corporation System and method for performing file-handling operations in a digital data processing system using an operating system-independent file map
US6070012A (en) * 1998-05-22 2000-05-30 Nortel Networks Corporation Method and apparatus for upgrading software subsystems without interrupting service
US6397313B1 (en) * 1999-10-19 2002-05-28 Advanced Micro Devices, Inc. Redundant dual bank architecture for a simultaneous operation flash memory
JP2001209543A (ja) * 2000-01-28 2001-08-03 Nec Ic Microcomput Syst Ltd フラッシュ・マイコンにおけるプログラム書き換え方法
US20090155175A1 (en) * 2001-09-30 2009-06-18 Eckhard Alt Simultaneous transluminal coronary sinus application of cells in conjunction with device resynchronization therapy
JP4157294B2 (ja) * 2001-11-08 2008-10-01 富士通株式会社 欠陥ファイルの修復を可能とするファイルシステム
JP3967121B2 (ja) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US20040225840A1 (en) * 2003-05-09 2004-11-11 O'connor Dennis M. Apparatus and method to provide multithreaded computer processing
US7401092B2 (en) * 2003-06-26 2008-07-15 Standbysoft Llc Method and apparatus for exchanging sub-hierarchical structures within a hierarchical file system
US7590807B2 (en) * 2003-11-03 2009-09-15 Netapp, Inc. System and method for record retention date in a write once read many storage system
US8001325B2 (en) * 2004-01-09 2011-08-16 Sandisk Corporation Memory card that supports file system interoperability
US7057939B2 (en) * 2004-04-23 2006-06-06 Sandisk Corporation Non-volatile memory and control with improved partial page program capability
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7934049B2 (en) * 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
JP4310709B2 (ja) * 2005-10-21 2009-08-12 コニカミノルタビジネステクノロジーズ株式会社 情報処理装置
US7624239B2 (en) * 2005-11-14 2009-11-24 Sandisk Corporation Methods for the management of erase operations in non-volatile memories
US20080109647A1 (en) * 2006-11-07 2008-05-08 Lee Merrill Gavens Memory controllers for performing resilient firmware upgrades to a functioning memory
US20080313364A1 (en) * 2006-12-06 2008-12-18 David Flynn Apparatus, system, and method for remote direct memory access to a solid-state storage device
US8762636B2 (en) * 2006-12-14 2014-06-24 Emc Corporation Data storage system having a global cache memory distributed among non-volatile memories within system disk drives
US7739444B2 (en) * 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US7917686B2 (en) * 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8046522B2 (en) 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US20080155175A1 (en) 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US8209461B2 (en) * 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
CN100504750C (zh) * 2007-03-23 2009-06-24 忆正存储技术(深圳)有限公司 闪存控制器
TW200917256A (en) * 2007-10-04 2009-04-16 Super Talent Electronics Inc Using various flash memory cells to build USB data flash cards with multiple partitions and autorun function
US8621137B2 (en) * 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
KR20090095955A (ko) * 2008-03-07 2009-09-10 삼성전자주식회사 불휘발성 메모리의 공유 구조에서 다이렉트 억세스 기능을제공하는 멀티포트 반도체 메모리 장치 및 그를 채용한멀티 프로세서 시스템
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device

Also Published As

Publication number Publication date
CN102483685A (zh) 2012-05-30
CN102483685B (zh) 2015-08-19
WO2010147827A1 (en) 2010-12-23
EP2443543A1 (en) 2012-04-25
TW201113883A (en) 2011-04-16
EP2443543B1 (en) 2014-12-17
US20100318720A1 (en) 2010-12-16

Similar Documents

Publication Publication Date Title
KR101619569B1 (ko) 온-칩 폴딩을 위한 데이터 전송
EP2374134B1 (en) Spare block management in non-volatile memories
US8468294B2 (en) Non-volatile memory with multi-gear control using on-chip folding of data
US8472280B2 (en) Alternate page by page programming scheme
US8593866B2 (en) Systems and methods for operating multi-bank nonvolatile memory
JP4643711B2 (ja) 状況依存メモリ性能
JP4787266B2 (ja) スクラッチパッドブロック
US8417876B2 (en) Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
US8543757B2 (en) Techniques of maintaining logical to physical mapping information in non-volatile memory systems
US20110153912A1 (en) Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US9342446B2 (en) Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
KR20140035916A (ko) 핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법
KR20140040137A (ko) 활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법
EP2443543B1 (en) Multi-bank non-volatile memory system with satellite file system
KR102287760B1 (ko) 메모리 시스템 및 상기 메모리 시스템의 동작 방법
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
US8732391B2 (en) Obsolete block management for data retention in nonvolatile memory

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application