KR20020009564A - 메모리 시스템 - Google Patents

메모리 시스템 Download PDF

Info

Publication number
KR20020009564A
KR20020009564A KR1020017010492A KR20017010492A KR20020009564A KR 20020009564 A KR20020009564 A KR 20020009564A KR 1020017010492 A KR1020017010492 A KR 1020017010492A KR 20017010492 A KR20017010492 A KR 20017010492A KR 20020009564 A KR20020009564 A KR 20020009564A
Authority
KR
South Korea
Prior art keywords
block
sector
memory
controller
data
Prior art date
Application number
KR1020017010492A
Other languages
English (en)
Other versions
KR100644805B1 (ko
Inventor
싱클레어알랜월시
오우스펜스카이아나탈리아빅토로브나
테일러리차드미쉘
고로베츠세르게이아날톨리비치
Original Assignee
데이비드 존 새비쥐, 알란 웰시 싱클레어
토리돈 피엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 데이비드 존 새비쥐, 알란 웰시 싱클레어, 토리돈 피엘씨 filed Critical 데이비드 존 새비쥐, 알란 웰시 싱클레어
Publication of KR20020009564A publication Critical patent/KR20020009564A/ko
Application granted granted Critical
Publication of KR100644805B1 publication Critical patent/KR100644805B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

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

Abstract

메모리 시스템은 소거가능한 블럭에 배열된 개별 어드레싱이 가능한 메모리 섹터(1)를 구비한 반도체 메모리(6)와, 상기 섹터로 기입 및 독출하고 상기 블록을 "소거" 및 "비소거" 블럭으로 분류하기 위한 콘트롤러(8)를 포함한다. 콘트롤러는 논리-물리 어드레스 변환을 수행하고, 데이터가 호스트 프로세서로부터 기입될 물리섹터 어드레스를 지정하기 위한 기입 포인터(WP)를 구비한다. 각 물리 어드레스에 대한 논리어드레스의 섹터할당테이블(SAT)은 메모리에 저장되고 콘트롤러는 호스트 프로세서로부터의 데이터가 기입될 섹터보다 덜 자주 SAT를 업데이트시킨다. 메모리는 단일칩 또는 복수개의 칩이다. 개별섹터(1)에 데이터를 배열하기 위한 새로운 시스템이 역시 청구된다.

Description

메모리 시스템{MEMORY SYSTEM}
플래쉬 이이피롬(FLASH EEPROM, 전기적으로 소거 및 프로그램이 가능한 독출 전용 메모리)소자는 보통 불휘발성 데이터저장용 전자산업에 사용된다. 낸드타입(NAND type) 메모리셀, 앤드타입(AND type) 메모리셀 또는 노아타입(NOR type) 메모리셀에 근거한 소자를 포함하는 다양한 타입의 플래쉬 메모리소자가 있다. 그러한 메모리소자는 호스트 프로세서 시스템와의 인터페이스를 위해 설계된 다른 타입의 인터페이스를 구비한다 예를 들어 그들은 (보통 많은 낸드 및 앤드타입 소자에 사용되는) 시리얼 억세스타입 인터페이스 또는 (약간의 노아타입 소자에 사용되는) 랜덤억세스타입 인터페이스를 사용한다. 본 발명은 적어도 약간의 서로 다른 타입의 메모리소자 그리고 바람직하게는 모든 서로 다른 타입의 메모리소자에 전용으로 적용가능하도록 하는 데 목적이 있다.
컴퓨터 시스템에서 자기디스크저장장치를 에뮬레이트하기 위하여 반도체 메모리시스템을 사용하는 것은 잘알려져 있다. 자기 디스크저장을 보다 잘 에뮬레이트하기 위하여 반도체 메모리의 처리속도를 증가시키는 것이 산업의 목적이다.
본 발명은 데이터저장 및 검색용 반도체 메모리시스템 및 반도체 메모리시스템의 불휘발성 메모리의 억세스를 콘트롤하기 위한 메모리 콘트롤러에 관한 것이다. 특히, 본 발명은 플래쉬 메모리시스템 및 플래쉬 메모리용 콘트롤러에 관한 것이다.
본 발명의 바람직한 실시예는 단지 예와 도면을 참조하여 설명하면 다음과 같다:
도 1은 낸드타입 플래쉬 메모리의 3섹터중 한 블록의 개략적 예시이다;
도 2는 플래쉬 칩을 구비한 메모리 시스템과 콘트롤러 칩의 블록도이다;
도 3은 낸드 또는 앤드타입 플래쉬 메모리의 1페이지 데이터의 개략적 예시이다;
도 4는 도 3의 페이지의 헤더필드의 구조를 도시한다;
도 5는 페이지의 물리적 어드레스(PA)의 포맷을 도시한다;
도 6은 콘트롤블럭(CB) 엔트리를 도시한다;
도 7은 테이블 블록리스트(TBL)에서의 한 엔트리를 도시한다;
도 8은 MAP 엔트리의 포맷을 도시한다;
도 9는 ASB 리스트(ASBL)에서의 엔트리 포맷을 도시한다;
도 10은 Current Obsolete Block(COB) 구조의 포맷을 도시한다;
도 11은 본 발명의 일실시예에 따른 멀티플 플래쉬 칩메모리의 가상블럭에 기입되는 섹터의 오더를 설명하는 테이블이다;
도 12는 가상 어드레스(VA)의 포맷을 도시한다;
도 13은 PA가 VA로 부터 얻어지는 것을 도시한다;
도 14는 본 발명에 따른 멀티플 플래쉬 칩메모리에 멀티플섹터를 기입하는 동안의 동작 타이밍이다;
도 15는 콘트롤러칩의 블록도이다;
도 16은 본 발명의 메모리시스템을 위한 할당된 메모리 용량을 보여주는 테이블이다;
도 17은 어드레스변환과정을 보여주는 흐름도이다;
도 18은 도 17의 박스(58)에서 실행되는 스텝의 흐름도이다;
도 19은 4플래쉬칩과 하나의 콘트롤러를 구비한 멀티플 블럭도이다;
도 20은 도 17에 도시된 박스(56)에서 실행되는 스텝의 흐름도이다;
도 21은 도 17에 도시된 박스(44)에서 실행되는 스텝의 흐름도이다;
도 22는 섹터 독출동작의 흐름도이다;
도 23은 섹터 기입동작의 흐름도이다;
도 24는 도 23의 박스(161)에서 실행되는 스텝의 흐름도이다;
도 25는 도 24의 박스(207)에서 실행되는 스텝의 흐름도이다;
도 26은 도 23의 박스(160)에서 실행되는 스텝의 흐름도이다;
도 27은 섹터 삭제동작의 흐름도이다;
도 28은 낸드 또는 앤드 타입 플래쉬 메모리에서 헌 페이지의 물리적인 분할을 도시한다;
도 29은 도 28의 플래쉬 페이지에서 데이터를 배열하는 다른 방법의 예시도이다;
도 30은 도 28에서 플래쉬 페이지에서 데이터를 배열하는 또 다른 방법의 예시도이다;
도 31(a)는 섹터 기입동작전에 메모리 콘트롤러의 버퍼 메모리의 데이터를 도시한다;
도 31(b)는 도 30의 실시예에 따라 데이터가 배열된, 기입동작완료후 플래쉬 페이지의 데이터를 도시한다;
도 32는 도 31(a)와 (b)의 기입동작동안 콘트롤러 버퍼로부터 플래쉬 메모리로의 데이터전송에 사용된 콘트롤러 커맨드의 테이블이다;
도 33은 기입동작후 콘트롤러의 버퍼 메모리의 데이터를 도시한다;
도 34은 도 33의 독출동작동안 플래쉬 메모리로부터 콘트롤러 버퍼로의 데이터 전송에 사용된 콘트롤러 커맨드의 테이블이다;
도 35는 3섹터를 구비한 노아타입 플래쉬 메모리의 소거블럭의 개략적 블록도이다.
본 발명의 첫 번째 관점에 따르면, 본 발명은 개별적으로 어드레스가 가능하고 각각 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하는 반도체 메모리와;
메모리에 데이터구조를 기입 및 독출하고, 소거된 것으로 간주되는 블록과 소거되지 않은 것으로 간주되는 블록으로 각 섹터의 블럭을 분류하는 콘트롤러를 포함하며,
상기 콘트롤러는 호스트 프로세서로부터 수신된 논리어드레스를 메모리의 상기 메모리섹터의 물리어드레스로 변환하는 수단과;
호스트 프로세서로부터 기입될 데이터에 대한 섹터의 물리어드레스를 지정하고, 콘트롤러에 의해 콘트롤되어 소거된 것으로 간주되는 블록의 메모리섹터의 물리어드레스를 통해 소정오더로 이동하며, 상기 블록이 채워졌을 때 다른 소거된 블록으로 이동하는 기입 포인터(여기서 기입포인터(WP)로 칭해짐)를 구비하며,
상기 콘트롤러는 호스트 컴퓨터로부터 섹터기입 커맨드가 수신될 때, 호스트 컴퓨터로부터의 수신된 논리 어드레스를 논리어드레스를 현재 기입포인터(WP)가 가리키는 물리어드레스로 할당함으로써 데이터가 기입된 물리어드레스로 변환하도록 구성되며, 상기 콘트롤러는 상기 콘트롤러에 의해 할당된 각각의 물리어드레스에 대하여 논리어드레스의 테이블(여기서 섹터할당테이블(SAT)이라 칭함)을 컴파일하도록 구성되며; 상기 콘트롤러는 호스트 프로세서로부터 데이터가 메모리섹터에 기입되는 것보다는 덜 자주 SAT를 업데이트하는 호스트프로세서와의 연결용 메모리 시스템을 제공한다.
호스트 프로세서로부터 데이터가 메모리에 기입될 때마다 SAT를 업데이트를 하지 않고 덜 자주 업데이트함으로써, 즉 본 발명은 예를 들어 플래쉬 메모리인 반도체 메모리의 아주 높은 처리속도를 제공하여 자기 디스크 메모리의 양호한 에뮬레이션을 인에이블시킨다.
SAT의 물리섹터 어드레스는 바람직하게 논리섹터어드레스에 의해 오더되어, N번째 엔트리가 논리 어드레스 N을 갖는 데이터가 기입된 섹터의 물리어드레스를 포함한다. 호스트 프로세서로부터 섹터기입커맨드가 수신될 때, 콘트롤러가 이전에 상기 논리 섹터어드레스에 할당한 물리어드레스섹터를 얻기 위하여 호스트 프로세서로부터 수신된 로직 섹터어드레스를 SAT에 룩업시킨다. SAT는 바람직하게 여기서 SAT 블록으로 칭해지는 SAT의 임의 부분을 포함하는, 상기 반도체 메모리의 메모리섹터의 하나 또는 그이상의 상기 블록에 저장된다. 바람직하게는 SAT는 SAT의 하나 또는 그이상의 블록을 재기입함으로써 업데이트된다. SAT 섹터의 전블럭을 한 번에 업데이트시킴으로써, 메모리 시스템의 동작속도를 상당히 상승시킬 수 있다.
상기 SAT블럭의 개별섹터의 변경된 버전을 포함하는, 적어도 하나의 섹터의블록(여기서 추가 SAT 블록(ASB)이라 칭해짐)이 제공된다. 상기 ASB 블록의 각 섹터는 바람직하게 콘트롤러가 업데이트시키는 SAT 블록의 섹터의 물리어드레스와 상기 SAT 섹터의 변경된 버전을 포함한다. ASB 의 목적은 SAT 블록의 재기입수를 감소시키기 위하여 SAT의 변경된 섹터를 반도체 메모리에 개별적으로 캐쉬하는 것이다. 상기 ASB 블록의 모든 섹터가 SAT 섹터의 변경된 버전으로 기입될 때, 각 SAT 블록은 ASB 블럭의 모든 변경된 버전을 포함하도록 재기입되며 ASB 블록은 소거된다.
본 발명의 메모리 시스템에서, 호스트 프로세서로부터 수신되는 임의 주어진 논리어드레스에 할당된 물리어드레스는 논리어드레스 자체에 의존하는 것은 아님을 알 수 있다. 콘트롤러는 단지 기입포인터가 현재 가리키는 물리섹터 어드레스를 할당한다.
상기한 바와같이, 콘트롤러는 기입포인터(WP)가 다른 블록으로 이동하기전에 소거된 블록으로 간주되는 상기 하나의 블록을 채워준다. 콘트롤러는 소거된 블록으로 간주되는 블럭을 통해 소정순서로 기입포인터(WP)를 이동시키도록 간단히 구성된다.
콘트롤러는 각각 기입된 데이터로 채워지는 소거된 블록을 통해 물리어드레스의 상승수치오더(ascending numerical order)로 순차적으로 이동하도록 기입포인터(WP)를 콘트롤한다. 기입포인터(WP)의 콘트롤은 일단 고차블럭의 섹터가 물리어드레스오더에 따라 데이터로 채워지면, 콘트롤러에 의해 현재 소거된 것으로 간주되는 모든 블록중 수적으로 가장 낮은 물리블럭 어드레스를 갖는 섹터의 블럭에 대해 감싸도록 WP가 콘트롤러에 의해 콘트롤된다는 점에서 순환하는 것이다.
한편, 콘트롤러는 데이터를 메모리섹터에 기입하기 위한 다른 소정의 오더를 사용한다. 예를 들어, 콘트롤러는 소거된 블록으로 간주된 블럭을 통해 물리어드레스에 따라 기입포인트(WP)가 하강수치오더(descending numerical order)로 순차적으로 이동하도록 콘트롤한다. 다른 가능성은 물리섹터어드레스를 통해 비순차오더로 이동시키는 것이다. 예를 들어, WP는 소거된 블록으로 간주된 각 블록의 물리섹터 어드레스를 통해 하강수치오더로 순차적으로 이동하고, 블록에서 블록으로 소정오더, 예를 들어 상기 각 블록의 제1섹터의 물리어드레스에 대해 상승수치오더로 이동한다.
소거된 블록으로 간주된 블록의 섹터에 데이터의 기입을 가능하게 하는 많은 다른 소정의 오더가 있음을 알 수 있다. 게다가, 콘트롤러는 정해질 필요가 없는 임의 다른 오더로 또는 부분적으로만 정해진 임의 다른 오더로 소거된 블록을 사용할 수 있다. 통상적으로 바람직한 것은 아니지만, 소거된 블록은 랜덤 오더로도 사용될 수 있다.
섹터의 상기 각 블록의 메모리 섹터는 바람직하게 유니트로서 함께 소거가 가능하다. 섹터는 모두 개별적으로 소거가 가능하다(예를 들어 반도체 메모리소자가 앤드타입 메모리인 경우). 콘트롤러는 바람직하게 메모리섹터의 전블럭을 소거만하도록 메모리의 소거동작을 콘트롤하도록 구성된다. 섹터의 한블럭은 그 블록내의 모든 메모리섹터가 소거된 섹터라면 콘트롤러에 의해 소거된 블록으로 간주될 것이다. 블록이 하나 또는 그이상의 불량(defective) 섹터를 포함하는 경우, 콘트롤러는 전블럭을 불량으로 정의하고 그블럭을 소거되지 않은 블록으로 간주하여 그곳에 데이터가 기입되지 않도록 한다. 한편, 블록이 하나 또는 그이상의 불량섹터를 포함하는 경우, 콘트롤러를 그블럭을 소거된 블록으로 간주하여 콘트롤러는 데이터저장을 위하여 그블럭의 양호한 섹터를 여전히 사용한다. 후자의 경우, 하지만, 메모리 시스템은 바람직하게 불량섹터를 확인하는 테이블을 포함하고, 콘트롤러는 기입포인터(WP)가 이동될 그 다음 섹터 어드레스가 불량섹터의 어드레스인가를 체크하여, 그것이 불량섹터의 어드레스이면 기입포인터가 이불량섹터를 스킵하도록 콘트롤하며 섹터가 기입될 소정오더에 따라 다음 섹터어드레스로 이동하도록 구성된다.
의심을 피하기 위하여, 이미 기입된 임의 양호한 (불량이 아닌) 섹터를 포함하는 임의 블록은 콘트롤러에 의해 소거되지 않은 블록으로 간주될 것이다. 게다가, 용어 "소거된" 섹터는 소거된 섹터를 포함할 뿐만 아니라 아직 기입되지 않아 소거되지 않았던 섹터를 포함할 것이다. 즉, 아직 기입되지 않았던 섹터의 블록은 콘트롤러에 의해 소거된 블록으로 간주된다.
섹터의 각블럭은 바람직하게 메모리의 물리위치를 정의하는 물리블럭 어드레스를 갖는다. 상기 각 메모리섹터의 물리어드레스는 바람직하게 블록이 위치해 있는 블록의 물리블럭 어드레스를 포함한다. 콘트롤러는 기입될 섹터의 다음 블럭을 빠르게 확인하기 위하여 콘트롤러에 의해 사용되는, 소거된 것으로 간주되는 섹터의 적어도 몇몇 블럭의 물리블럭 어드레스의 리스트를 컴파일하도록 구성되는 것이 좋다. 소거된 블록의 이 어드레스 리스트는 바람직하게 메모리 시스템에 제공되고 콘트롤러의 마이크로 프로세서에서 SRAM인 임시 메모리에 콘트롤러에 의해 저장되고, 섹터의 각블럭의 소거된 블록을 확인하는 콘트롤러에 의해 반도체 메모리에 이미 저장된 정보로부터 생성된다. (이 정보는 바람직하게 각 블록이 소거된 블록 또는 소거되지 않은 블록으로 기록되는 반도체 메모리에 비트맵의 형태로 유지될 것이다.)
상기 콘트롤러는 다른 섹터에 이미 기입된 비사용데이타를 제공하는 섹터기입커맨드가 호스트 프로세서로부터 콘트롤러에 의해 수신될 때, 상기 콘트롤러는 현재 비사용 데이터를 포함하는 섹터의 어드레스를 임시메모리로 저장하도록 단순히 구성된다. 이 임시 메모리는 단순히 콘트롤러의 마이크로 프로세서에 제공된 SRAM 또는 SRAM이다. 사용자에 의해 생성된 섹터삭제커맨드가 콘트롤러에 의해 호스트 프로세서로부터 수신되는 경우, 상기 콘트롤러는 삭제될 섹터를 (섹터를 물리적으로 소거하지 않고) 비사용으로 마크한다. 콘트롤러는 언제라도 여기서 현재비사용블럭(COB)로 칭해지는 하나의 블럭만이 기입포인터(WP)에 의해 기입된 비사용 데이터를 포함하는 하나 또는 그이상의 섹터를 포함하도록 허용하고, COB의 모든 섹터를 비사용 데이터를 포함할 때 COB는 즉시 소거된다. 이것은 다음블럭으로 이동하기전에 기입포인터가 소거된 블록으로 간주되는 각 블록의 메모리 섹터 어드레스를 통해 순차적으로 이동하는 경우에 특히 접합한 구조이다. 그런 구조에서, (재기입된 사용자데이타파일의 일부분을 포함하는) 삭제될 일련의 비사용 섹터는 대부분 모두 동일한 블록내에 있을 것이다. 일련의 섹터가 이전에 섹터가 기입된 오더와는 다른 오더로 재기입될 때, 이것은 하나이상의 블록에서 비사용섹터를 생성한다. COB와는 다른 블록의 섹터가 비사용 데이터를 포함하여야 하는 경우, 콘트롤러는 바람직하게 COB의 유효(비사용이 아닌) 섹터의 데이터를 기입포인터(WP)가 현재 가리키는 블록인 다른 블록에 재배치하고 그 다름 상기 COB를 소거한다. COB와는다른블록의 상기 섹터는 비사용으로 마크되고, 이 다른 블록은 새로운 COB이다. 기입포인터의 현재 위치에 유효데이타를 기입하기 위하여, 상기 메모리 시스템은 여기서 재배치 포인터(WP)라 칭해지는, 그러한 재배치된 데이터가 기입될 섹터의 물리 어드레스를 가리키기 위한 제2기입포인터를 포함하며, 재배치 포인터(RP)는 항상 상기 기입포인터(WP)와는 다른 블록에 있다. 이것은 재배치된 데이터가 호스트 프로세서에 의해 기입되도록, 즉 기입 포틴터(WP)에 의해 기입되도록 직접 오더된 데이터구조와 혼합되는 것을 방지하는데 유리하다.
일반적으로, 오로지 2타입의 데이터가 호스트 프로세서로부터 반도체 메모리에 기입된다. 이들은 파일데이타와 시스템 데이터이다. 게다가 재배치 및 소거의 수를 감소시키기 위하여, 메모리 시스템은 여기서 시스템 기입 포인터(SWP)라 칭해지는, 상기 시스템 데이타가 호스트로부터 기입될 섹터의 물리 어드레스를 가리키기 위한 제3기입포인터를 더 포함하며, 시스템 포인터(SWP)는 항상 상기 기입포인터(WP)와는 다른 블록에 있다 (그리고 거기에 하나가 있다면 재배치 포인터와 다른 블록에 있다). 시스템 데이터는 바람직하게 시스템의 초기화동안 확인될 것이며 동작시 필요할 때 업데이트될 것이다.
시스템 포인터(WP)와 시스템 기입 포인터(SWP) 모두가 제공되는 경우, 파일 데이터는 이 경우 항상 기입포인터(WP)에 의해 지정되는 어드레스에 기입된다. 재배치 포인터(RP)와 시스템기입 포인터(SWP) 모두가 바람직하게 기입포인터(WP)와 유사한 방법으로 소거된 블록으로 간주되는 상기 블록의 메모리섹터의 물리어드레스를 통해 이동하도록 콘트롤된다. 즉, 모두 (양호한) 섹터가 재배치된 데이터 또는 시스템 데이터로 채워질 때, 재배치 포인터(RP)와 시스템 기입포인터(SWP)중 각 하나는 소거된 것으로 간주되는 블록의 모든 섹터의 물리어드레스로부터 사용되도록 상기 콘트롤러에 의해 정의된 다음 블록으로 이동한다.
시스템 기입포인터(SWP)가 제공되는 경우, 상기 콘트롤러는 바람직하게 언제라도 하나 또는 그이상의 비사용섹터를 포함하는 적어도 2블럭이 존재하도록 허용하는데, 하나의 블록은 COB이며 다른 블록은 하나 또는 그이상의 비사용 시스템 데이터섹터를 포함하는 현재비사용 시스템블럭(COSB)이다. 시스템 데이터섹터가 COSB가 소거되도록 하기 위하여 재배치될 필요가 있는 경우, 재배치된 시스템 데이터는 바람직하게 시스템 기입포인터(SWP)가 현재 가리키는 어드레스로 전송된다.
사실, 한 번 비사용 데이터를 포함하는 2개이상의 블록(COB와 COSB)가 임시적으로 존재한다. 예들 들어 COB블럭이 소거될 필요가 있을 때 (비사용 데이터는 다른 블록에서 바로 생성된다), 상기 기입포인터(WP, RP, SWP, SRP)중 하나가 지정한다 즉, WP는 여전히 현재 COB인 블록에 대한 기입이다. 이것이 POB의 모든 소거된 블록이 채워지고 기입포인터가 사용될 다음 소거된 블록으로 이동할 때까지, 상기 콘트롤러가 바람직하게 새로운 COB를 먼저 생성하고 여기서 펜딩비사용블럭(POB)로 칭해지는 이전 COB의 소거를 연기하는 경우이다. 이때, POB의 유효 (비사용이 아닌) 데이터가 재배치되고 POB는 소거된다.
호스트 프로세서로부터 메모리로 데이터구조를 기입하는 것외에, 콘트롤러는 역시 콘트롤러 정보에 의해 지정된 메모리 데이터를 생성하고 기입한다. 콘트롤러는 바람직하게 호스트 프로세서로부터 수신된 데이터구조가 기입된 블록과는 별도의 메모리섹터의 블록중 한 블록에 그런 콘트롤 정보를 기입한다. 여기서 콘트롤블럭(CB)이라 칭해지는 그러한 콘트롤정보를 저장하기 위한 블록은 콘트롤러에 의해 주기적으로 업데이트될 것이며 메모리 시스템의 초기화동안 그리고 때때로 동작동안 억세스될 것이다.
콘트롤러는 바람직하게 SAT가 마지막으로 업데이트된 이후, 기입포인터에 의해 기입된 데이터구조의 논리어드레스의 리스트를 (콘트롤러의 마이크로 프로세서에서 SRAM 또는 DRAM으로 간단히 구현되거나 또는 메모리 시스템에서 제공된 RAM인) 임시 메모리에 저장한다. SRAM에 저장된 이 리스트는 여기서 기입섹터리스트(WSL)라 칭해진다. WSL의 논리어드레스는 그들이 메모리의 불휘발성 섹터에 기입되는 순서로 간단히 저장된다. 편리하게 연속적으로 기입된 그룹의 경우, 그러므로 WSL 엔트리는 제1섹터논리어드레스와 섹터그룹길이 죽 기입된 섹터의 수로서 기입된다. 각 섹터그룹은 섹터의 한블럭이상을 스팬(span)하지 않도록 정의된다.
콘트롤러는 SAT의 최종 업데이트이후 데이터를 기입하기 위하여 기입포인터(WP)에 의해 사용된 블록의 순서를 상기 임시 메모리에 역시 간단하게 저장한다. 이것은 어드레스가 WSL 에 유지되는 업데이트된 섹타가 위치하는 블록의 블록어드레스의 리스트형태로 저장된다. 이 블록어드레스 리스튼 여기서 기입블럭리스트(WBL)로 칭해진다. WSL과 WBL 에 의해 메모리 시스템은 연속적으로 기입된 섹터의 상기 그룹의 제1논리어드레스로 할당된 물리메모리의 위치지식을 포함하기 때문에, 콘트롤러는 WSL과 WBL을 사용하여 SAT의 최종업데이트이후 기입된 연속적으로 기입된 섹터의 그룹의 각 논리섹터어드레스로 정정물리섹터를 항상 억세스할 수 있다. WSL은 바람직하게 소정 사이즈를 갖으며, WSL이 일단 채워지면 하나 또는 그이상의 SAT 블록 (및/또는 ASB)은 업데이트되고, 상기 WSL과 WBL은 비워진다.
바람직하게, 시작물리 섹터어드레스와 SAT 의 최종업데이트 이후 콘트롤러에 의해 데이터가 기입된 섹터를 포함하는 블록사이의 링크는 역시 반도체 메모리의 상기 콘트롤블럭에 저장한다. 섹터자체의 각 섹터 예를 들어, 섹터에 제공된 헤더필드에 저장된 사용자 데이터용 논리섹터 어드레스를 저장함으로써, WSL과 WBL은 반도체 메모리를 통해 스캐닝하고 채워지지 않은 블록에 도달할 때까지 SAT의 최종업데이트이후 기입된 섹터의 논리어드레스를 독출함으로써, 시스템의 파워제거 및 복원에 이어 용이하게 재생성될 수 있다. 이것은 메모리 시스템의 예상치않은 파워제거시 높은 데이터 안정성을 제공한다.
재배치 포인터와 시스템 기입포인터가 메모리시스템에 포함되는 경우, 콘트롤러는 바람직하게 여기서 재배치섹터리스트(RSL)와 가입시스템 섹터리스(WSSL)로 각각 칭해지는, 각각 재배치데이타 또는 시스템데이타가 기입된 섹터에 대응하는 논리섹터어드레스의 유사한 리스트를 상기 임시메모리(즉, 콘트롤러 마이크로 프로세서의 SRAM 또는 DRAM)에 저장한다. 콘트롤러는 기입블럭리스트와 유사한 RP와 SWP에 의해 사용된 블록의 오더리스트를 해당하는 상기 임시메모리에 저장하고, 이들 두 리스트는 여기서 재배치블럭리스트(RBL)와 기입 시스템블럭 리스트(WSBL)라 칭해진다. 게다가, 시작물리 섹터어드레스와 SAT 의 최종업데이트 이후 재배치된 데이터 또는 시스템 데이터가 기입된 섹터를 포함하는 블록사이의 링크는 역시 반도체 메모리의 적어도 하나의 상기 콘트롤블럭에 저장하고, RSL과 WSSL은 단순히 메모리를 스캐닝하고 SAT의 최종업데이트이후 각각 RP와 SWP에 의해 기입된 섹터의 논리어드레스를 독출함으로써, 호스트 프로세서의 파워제거 및 복원에 이어 재생성될 수 있다.
상기한 바와같은 실시예중 어느 실시예에서 상기 각 섹터는 메모리의 단일 "페이지" 즉, 메모리섹터의 상기 블록의 메모리셀의 하나의 열로 구성된다. 그러나, 본 발명은 그러한 섹터포맷에 배타적으로 제한되는 것은 아니며, 어떤 경우 (예를 들어 랜덤 억세스 노아 타입 메모리를 사용할 때) 상기 각 섹터는 한 페이지보다 작거나 또는 클 수 있다. 게다가, 후자의 경우 모든 섹터가 동일한 사이즈일 필요는 없다. 예를 들어, 이전의 우리의 국제특허출원 제PCT/GB/00188호에서 설명한 바와같이 데이터구성구조는 반도체 메모리에 존재하는 (서브섹터사이즈의) 개별불량을 피하기 위하여 적절한 사이즈의 섹터를 형성하도록 콘트롤러에 의해 사용될 수 있다.
상기한 각 섹터는 개별적으로 어드레스가 가능하다. 각 섹터는 각각 개별적으로 어드레스가 가능한 복수개의 섹터부분을 포함하고, 콘트롤러는 개별적으로 각섹터부분에 기입하거나 또는 독출한다. 가장작은 가능한 섹터부분사이즈는 메모리의 최소어드레스가 가능한 유니트이다. 노아타입 메모리에서, 예를 들어, 메모리의 최소어드레스가능한 유니트는 보통 1바이트이다.
콘트롤러는 바람직하게 균일한 사이즈의 데이터 세그먼트로 메모리섹터에 데이터를 기입하고 독출한다. 모든 메모리 섹터가 동일한 사이즈인 경우, 상기 각 데이터 세그먼트는 바람직하게 상기 메모리 섹터의 사이즈와 동일한 크기이다. 각 데이터 세그먼트는 호스트 프로세서로부터 데이터구조(즉 파일 또는 시스템 데이터) 및/또는 콘트롤러에 의해 발생된 데이터를 포함한다.
반도체 메모리가 낸드타입 소자에 근거한 경우, 콘트롤러는 바람직하게 불량섹터를 포함하는 불휘발성 메모리의 블록의 블록어드레스의 리스트(여기서 불량블랙리스트(BB)로 칭해짐)를 하나 또는 그이상의 상기 콘트롤블럭에 저장하고, 콘트롤러는 그런 블록을 "소거되지 않은" 블록으로 간주하여 임시메모리에 저장된 소거된 블록의 리스트에는 없으며, 콘트롤러는 그 블록에 데이터를 기입하지 않는다.
메모리가 앤드타입 소자에 근거한 경우, 콘트롤러는 바람직하게 불량섹터의 어드레스의 리스트를 하나 또는 그이상의 상기 콘트롤블럭에 저장하고, 콘트롤러는 상기 기입포인터(WP)가 적어도 하나의 블량섹터를 포함하는 블록의 양호한 블록은 사용하고 불량섹터는 스킵하도록 콘트롤한다. 후자의 경우 하나 또는 그이상의 불량섹터를 포함하는 블록은 소거될 것이고, 블록의 양호한 섹터는 모두 블록소거동작동안 개별적으로 소거된다.
콘트롤러는 바람직하게 상기 하나 또는 그이상의 콘트롤블럭에 모든 SAT 블록의 블록어드레스의 리스트를 저장한다. 이 리스트는 바람직하게 복수개의 리스트부분의 형태이고 각 부분은 여기서 테이블 블록 리스트(TBL)로 칭해지며, 각 부분은 논리적으로 연속하는 SAT블럭과 해당하는 ASB의 블록어드레스를 포함한다.
콘트롤러는 바람직하게 여기서 부트블럭(BB)으로 칭해지는 메모리의 전용블럭에 하나 또는 그이상의 상기 콘트롤블럭의 블록어드레스를 저장한다. 다른 데이터안전을 위하여 필요한 중요한 정보, 예를 들어 불량블럭 (또는 불량섹터)의 리스트를 역시 부트블럭에 저장한다. 바람직하게, 불량섹터를 포함하지 않은 메모리의 섹터의 제1블럭은 부트블럭(BB)으로 지정된다.
바람직하게, 콘트롤러는 SAT 블록, 콘트롤블럭, ASB 블록 또는 BB로서 모든 양호한 섹터를 포함하는 블록만을 사용할 것이다. 캐쉬는 (콘트롤러에 의해) SAT로부터 가장 최근에 억세스된 SAT 엔트리를 포함하는 연속적인 SAT 그룹을 콘트롤러가 저장하는, (예를 들어 콘트롤러 마이크로 프로세서의 SRAM 또는 DRAM과 같은 메모리시스템의 RAM)의 임시메모리로 제공된다. 이것은 어드레스변환속도를 보다더 향상시킨다. 게다가, 어드레스변환속도의 증가는 상기 SAT 메모리에 그들과 연관된 (여기서 ASB 리스트 또는 ASBL이라 칭해지는), SAT 섹터의 기입동작이 수행될 때마다 업데이트되는 모든 ASB 블록과 SAT 블록의 물리어드레스의 리스트를 생성함으로써 얻어진다. 마찬가지로, 콘트롤블럭의 TBL의 위치는 역시 고속 논리-물리섹터어드레스변환을 허용하기 위하여 상기 임시메모리에 저장된다.
반도체 메모리는 단일메모리칩 형태의 단일 메모리 어레이를 포함하거나 또는 복수의 메모리칩 형태로 형성된 메모리 어레이를 포함한다. 메모리가 복수개의 메모리칩 형태의 복수개의 메모리어레이를 포함하는 경우, 상기 콘트롤러는 복수의 메모리칩의 메모리섹터를, 각각 상기 메모리칩으로부터의 메모리섹터의 하나의 소거가능한 블록을 포함하는 배수의 가상블럭으로 형성하고, 콘트롤러는 바람직하게 상기 가상블럭을 소거된 것으로 간주된 블록과 소거되지 않은 블록으로 분류한다.콘트롤러는 바람직하게 소거된 것으로 간주되는 가상블럭의 리스트를 컴파일하고콘트롤러의 마이크로 프로세서의 SRAM인 메모리 시스템의 임시메모리에 이것을 저장한다. 콘트롤러는 바람직하게 상기 기입포인터(WP) ( 및 제공된 RP와 SWP)를 연속적인 섹터기입동작시 하나의 칩으로부터 다른 칩으로 이동하는 것을 콘트롤하며, 상기 기입포인터는 상기 가상블럭의 하나의 소거가능한 블록의 하나의 섹터에서 시작하여 하나의 섹터가 가상블럭의 각 소거가능한 블록에 기입될 때까지 상기 가상블럭의 다른 소거가능한 블록 각각의 하나의 섹터에 연속적으로 이동하며 그 다음 제1섹터가 기입된 칩으로 거꾸로 이동하고 이와같이 가상블럭의 각 소거가능한 블록의 또 다른 섹터를 채워주는 방식으로 가상블럭이 데이터로 채워질 때까지 계속한다. 기입포인터(WP)는 소거된 블록으로 간주되는 가상블럭의 상기 리스트에서 그 다음 블록으로 이동하여 상기한 방식으로 상기 그 다음 가상블럭을 채워준다. 콘트롤러는 바람직하게 n이 메모리시스템의 반도체 메모리칩의 수보다 작거나 동일한 경우 연속적인 n 섹터기입동작동안 콘트롤러가 실행하고, 상기 콘트롤러는 각 n 칩의 하나의 섹터에 실제적으로 동시에 기입한다. 콘트롤러는 상기 가상블럭의 모든 소거가능한 블록을 연속적으로 소거함으로써 가상블럭의 소거를 수행한다.
메모리 시스템은 콘트롤러소자로서 회로적으로 실제로 구현하지만, 바람직하게 적어도 부분적으로 콘트롤러소자의 메모리에 홀드된 펌웨어로 구현할 수 있음을 알 수 있다. 콘트롤러는 반도체 메모리와 같은 동일칩에 집적시켜 형성한다.
본 발명의 두 번째 관점에 따르면, 본 발명은 개별적으로 어드레스가 가능하고 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하고, 상기 각 섹터는 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 반도체 메모리와;
메모리에 데이터구조를 기입하고 메모리로부터 데이터구조를 독출하기 위한 콘트롤러를 포함하며,
상기 콘트롤러는 상기 소거가능한 블록을 각각의 메모리칩으로부터 소거가능한 블록을 각각 포함하는 가상블럭으로 형성하고, 콘트롤러는 가상블럭을 소거된 것으로 간주되는 블록과 소거되지 않은 것으로 간주되는 블록으로 분류하며, 상기 콘트롤러는 채워질 그다음 블록으로 이동하기전에 하나의 가상블럭을 데이터로 채우고, 각 가상블럭은 콘트롤러가 하나씩 가상블럭의 각 소거가능한 블록의 하나의 메모리섹터에 기입하는 반복시퀀스로 그의 메모리섹터에 기입함으로써 채워져서, 연속적으로 기입된 섹터는 서로 다른 칩에 있는 호스트 프로세서와의 연결용 메모리 시스템을 제공한다.
바람직하게, 상기 콘트롤러는 n이 메모리 시스템의 반도체 메모리칩의 수보다 작거나 동일한 경우 모든 연속적인 n 섹터기입동작동안 호스트프로세서로부터 멀티플섹터 기입커맨드를 실행하도록 구성되고, 상기 콘트롤러는 각 n 칩의 하나의 섹터에 실제적으로 동시에 기입한다.
본 발명의 세 번째 관점에 따르면, 개별적으로 어드레스가 가능하고 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하는 반도체 메모리로 데이터구조를 기입하고 상기 반도체 메모리로부터 데이터구조를 독출하는 콘트롤러에 있어서,
상기 콘트롤러는 상기 콘트롤러가 사용되는 메모리 시스템의 호스트 프로세서로부터 수신된 논리어드레스를 상기 메모리의 상기 메모리섹터의 물리어드레스로변환하고, 섹터의 블록을 소거된 블록과 소거되지 않은 블록으로 분류하기 위한 수단과;
호스트 프로세서로부터 기입될 섹터의 물리어드레스를 지정하고, 콘트롤러에 의해 콘트롤되어 소거된 것으로 간주되는 블록의 메모리섹터의 물리어드레스를 통해 소정오더로 이동하며, 상기 블록이 채워졌을 때 다른 소거된 블록으로 이동하는 기입 포인터(WP)를 구비하며,
상기 콘트롤러에 의해 호스트 프로세서로부터 섹터기입커맨드가 수신될 때, 상기 콘트롤러는 호스트 프로세서로부터 수신된 논리섹터어드레스를 상기 기입포인터(WP)가 현재 지정하고 있는 물리어드레스로 상기 논리어드레스를 할당하므로써 데이터가 기입될 물리어드레스로 변환하며;
상기 콘트롤러는 논리어드레스의 테이블(SAT)을 상기 콘트롤러에 의해 할당된 각 물리어드레스로 컴파일하고 호스트 프로세서로부터 데이터가 기입되는 메모리섹터보다 덜 자주 SAT를 업데이트하도록 구성되는 콘트롤러를 제공한다.
본 발명의 네 번째 관점에 따르면, 본 발명은 개별적으로 어드레스가 가능하고 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하는 반도체 메모리로의 데이터구조의 기입 및 상기 반도체 메모리로부터의 데이터구조의 독출을 콘트롤하는 방법에 있어서,
섹터의 블록을 소거된 블록과 소거되지 않은 블록으로 분류하는 스텝과;
기입될 섹터의 물리어드레스를 지정하기 위한 기입포인트(WP)를 제공하고,소거된 것으로 간주되는 블록의 메모리섹터의 물리어드레스를 통해 소정오더로 이동하도록 적어도 하나의 상기 기입포인터(WP)를 콘트롤하며, 블록이 채워질 때 다른 소거된 블록으로 이동하도록 콘트롤하는 스텝과;
호스트 프로세서로부터 섹터기입커맨드가 수신될 때 호스트 프로세서로부터 수신된 논리어드레스를 상기 논리어드레스를 상기 기입포인터가 현재 가리키는 물리어드레스로 할당함으로써 데이터가 기입되는 물리어드레스로 변환하는 스텝과;
논리어드레스의 테이블(SAT)을 상기 콘트롤러에 의해 할당된 각 물리어드레스로 상기 불활성 반도체 메모리에 저장하는 스텝과;
상기 호스트 컴퓨터로부터 데이터가 기입되는 메모리섹터보다 덜 자주 SAT를 업데이트하는 스텝을 포함하는 콘트롤방법을 제공한다.
도 1은 낸드타입 메모리셀에 근거한 플래쉬 메모리 어레이의 한 블록(4)에 있어서 물리적 페이지구조를 개략적으로 도시한 것이다. 도 1은 블록(4)의 3개의 페이지(1), (2), (3)을 보여준다. 물리적 용어(term)의 페이지(1)은 메모리의 한 블록의 하나의 열에 배열된 메모리셀들을 포함하는데, 상기 메모리는 각각 복수열의 메모리셀(즉, 복수의 페이지)을 구비한 다수의 블록을 포함한다. 각 페이지(1), (2), (3)는 후술될 플래쉬 메모리 시스템에서 물리적 메모리공간의 하나의 섹터로서 취급되며 528 바이트이다. 메모리의 각 페이지(1)는 개별적으로 어드레스가 가능하고(기입/독출 및 삭제동작시), 페이지는 블록에서 소거가능하다. 그러한 메모리 어레이와 결합된 메모리 시스템을 설명하면 다음과 같다. 추가로 앤드 또는 노아타입 플래쉬 메모리에 근거한 메모리 시스템을 후술한다.
도 2는 플래쉬 메모리 칩(5)과 콘트롤러 칩(8)과 결합한 메모리 시스템(10)을 도시한 것이다. 플래쉬 메모리 칩(5)은 플래쉬 메모리(6)와 콘트롤러 칩(8)의 콘트롤러 버퍼(9)와 인터페이스되는 독출/기입 버퍼(7)을 포함한다. 콘트롤러 칩(8)은 콘트롤러 마이크로 프로세서(11)와 에러정정코드(ECC) 발생기 및 검사기 (checker)(12)를 더 포함한다. 콘트롤러 버퍼(9)는 콘트롤러 칩(8)의 출력(O/P)를 통해 메모리 시스템에 연결된 호스트 마이크로 프로세서(도시되지 않음)와 인터페이스된다. 콘트롤러 버퍼(8) (이하 "콘트롤러" 라 칭함)는 메모리 어레이(6)의 기입 및 독출 데이타구조를 콘트롤한다. 메모리 시스템(10)에 연결된 호스트 프로세서(2)는 콘트롤러(8)에 기입 및 독출 커맨드를 전송한다. 데이터는 호스트에서 512 바이트부분 또는 각각 로직섹터 어드레스(LA)를 구비한 "호스트 데이터 섹터"로 억세스될 수 있다. 콘트롤로(8)는 호스트 프로세스로부터 LA 받아 후술하는 바와같이 물리 어드레스로 변환한다. 본 발명의 경우(낸드 타입 메모리), 각 물리 어드레스는 어레이6에서 플래쉬 메모리의 페이지의 물리적 위치를 정의한다. 각 LA는 하나의 24비트 필드형태이다. LA를 사용하여 PA를 억세스하는 것은 어드레스 변환이라 하며 모든 독출/기입 억세스에 필요한 가장 흔한 동작이다. 콘트롤러(8)는 528 바이트폭의 데이터 세그먼트로 메모리 어레이(6)로 데이터를 기입한다. 호스트(즉, 사용자 파일 또는 시스템 데이타)로부터 인가된 512 바이트의 데이터의 경우, 콘트롤러는 마이크로 프로세서(11)에 의해 발생된 4바이트 헤더(header) 및 ECC 발생기 및 검사기(12)에서 생성된 12 바이트 ECC 를 포함한 16바이트 데이타를 발생한다. 콘트롤러는 이 데이터를 플래쉬 버퍼(7)를 통해 메모리 어레이(6)의 한 페이지에 쓰여진 528 바이트 데이터 세그먼트로 구성한다. 호스트 데이터 섹터의 논리 어드레스(LA)는 호스트 데이터가 쓰여지는 플래쉬 섹터 1에 4비트 헤더로 저장된다. 독출동작시, 플래쉬 메모리 어레이의 해당 섹터에 저장된 데이터는 플래쉬 독출/기입 버퍼(7)를 통해 어레이(6)로부터 독출되어 콘트롤러 버퍼(9)로 (동시에 데이터의 에러를 체크하기 위하여 ECC 발생기 및 발생기(12)로 제공된다. 호스트 컴퓨터가 콘트롤러 버퍼(9)로부터 데이터가 독출하는 것을 허용하기 전에, 콘트롤러는 저장된 LA가 호스트 컴퓨터에 의해 요구된 LA 와 매치되는가를 체크하기 위하여 4비트 헤더를 독출한다.
콘트롤러(8)는 개별섹터를 근거로 메모리(6)에 쓰여진 데이터의 물리적 위치를 관리한다. 좀더 상세히 후술하게될 콘트롤러는 메모리(6)에 소거된 블록의 비트맵(BtMap, iMAP)을 저장하고, 소거블럭이 기입될 블록물리 어드레스의 상승순서로 적어도 몇몇 소거블럭의 리스트(다음 소거블럭(NEB) 리스트)를 편집한다. 호스트 데이터가 쓰여진 물리적 페이지위치는 호스트로부터 수신된 논리어드레스에 의존하지 않는다. 각 호스트 데이터 섹터는 순환 기입 포인터에 의해 정의된 어드레스에 쓰여진다. 특정기입 포인터가 다른 타입의 기입동작에 사용된다; 호스트 파일데이타는 데이터 기입 포인터(WP)에 의해 지정된 어드레스에 기입되고, 호스트 시스템 데이터는 시스템 기입 포인터(SWP)에 의해 지정된 어드레스에 기입된다. 재배치 포인터(RP)는 호스트에 의해 직접 오더되지 않은 섹터를 기입하는 데 사용된다: 각 포인터는 블록의 페이지를 통해 순차적으로 이동하고, 이어서 다음소거된 블록(NEB) 리스트의 다음 소거된 블록의 제1페이지로 이동한다. 소거되지 않은 파일을 포함하는 블록은 "비소거" 블록으로 처리되고, 포인터가 한 블록에서 다른 블록으로 이동할 때 생략된다(NEB 에 전혀 포함되지 않는다).
섹터 재배치 알고리즘
섹터의 블록 4가 소거될 때, 비사용 데이터(obsolete data)를 포함하는 섹터 스페이스를 회복시키기 위하여, 섹터는 블록이 소거되는 것을 허용하기 위하여 유효 및 비사용섹터의 결합을 포함하는 블록으로부터 재배치되어야 한다. 원칙적으로, 콘트롤러(8)는 특정 기입포인터에 대응하는 오직 하나의 블록만이 언제라도 비사용 데이터섹터를 포함할 것을 허용한다. 호스트에 의해 기입될 섹터가 제2블럭내의 비사용섹터를 생성할 때, 유효섹터의 재배치후, 존재하는 블록은 제일 먼저 소거되어야 한다.
그러므로, 대부분의 블록이 유효 및 비사용 섹터를 모두 포함할 때 섹터의 수많은 소거 및 확장 재배치는 피할 수 없다. 이것은 파일의 일부분이 섹터들이 이전에 쓰여진 순서와는 다를 때만 발생한다. 이것은 대부분의 응용에서 노말한 경우는 아니다. 그러나, 노말파일의 기입동작시의 경우에서도, 비관련데이타의 재배치는 파일의 "헤드(head)" 및 "테일(tail)" 을 포함하는 블록으로부터 수행되어져야 한다.
그러므로 재배치의 총수와 소거시스템을 감소시키기 위하여, 데이터는 확인되고, 시스템 기입 포인터(SWP)의 어드레스에 항상 쓰여지거나 재배치된다. 시스템 데이터의 정보는 초기화과정동안 얻어지고 마이크로 프로세서 SRAM(13)에 저장된다. 데이터 파일이 호스트 컴퓨터 프로세서의 파일 시스템에 의해 플래쉬 메모리에 기입된다. 파일 데이터는 파일 시스템에 의해 클러스터(cluster)로 분할되는데, 각 클러스터는 (전형적으로) 512 바이트의 인접하는 호스트 데이터 섹터그룹이다. 파일 시스템은 각 파일을 형성하는 클러스터의 배치와 메모리에 저장된 파일의 속성에 관련된 테이블 및 데이터구조를 유지한다.이들 테이블 및 구조는 플래쉬 메모리에 (시스템 데이터로서) 저장되고 파일 데이터가 기입될 때마다 파일 시스템에 의해 업데이트된다. 파일 데이터가 메모리에 기입될 때 (즉, 디렉토리 및 파일배치 테이블을 위한) 파일에 관련된 시스템 데이터가 수반된다. 통상적으로 메모리에 기입된 시스템 데이터는 각 엔트리가 특정 클러스터인 루트 디렉토리(RootDirectory)에 관련되는 하나 또는 2카피의 파일배치테이블인 BIOS 패러미터 구조정보와 서브 디렉토리정보를 구비한다. 콘트롤러는 호스트 시스템 데이터 섹터를 기입하는 동작을 인식하도록 구성되어, 이 호스트 시스템 데이터 섹터가 파일 데이터의 호스트 데이터섹터와 다르게 처리도록 인에이블시킨다. 단독으로 또는 함께 시스템 섹터기입을 인식하는데 사용되는 많은 방법은 다음과 같다.
1. 시스템 데이터는 단일 섹터기입 커맨드에 의해 쓰여지지만 파일 데이터는 멀티플 섹터기입 커맨드에 의해 쓰여진다.
2. 파일 시스템 루트 디렉토리의 최종 섹터 어드레스이하의 LA 를 갖는 모든 섹터는 시스템 섹터이다. 이 어드레스는 호스트 파일시스템에 의해 메모리에 저장된 BIOS 패러미터 블록에 홀드된 정보로부터 결정될 수 있다.
3. 서브 디렉토리내의 모든 모든 섹터는 시스템 섹터이다. 서브디렉토리 어드레스와 사이즈는 모든 루트 디렉토리와 서브디렉토리 엔트리를 독출함으로써 확인할 수 있다.
4. 시스템 섹터는 때때로 그들이 재기입되기전에 파일 시스템에 의해 즉시 독출되어진다.
동일한 목적을 위하여, 재배치될 파일데이타섹터는 재배치 포인터(RP)에 의해 정의된 어드레스에 기입되므로, 호스트에 의해 쓰여진 섹터와 혼합되지 않는다.
본 발명의 변경 실시예에서, 추가 기입 포인터가 재배치 시스템 데이터가 기입될 위치를 지정하기 위하여 제공될 수도 있다. 이 추가 포인터는 시스템 재배치 포인터(SRP)로 칭해지고, 항상 WP 및 SP 에 다른 블록으로 위치한다.
블록소거 알고리즘
소거되거나 또는 백그라운드(background) 소거가 예정된 블록의 독단적인 선택은 본 발명에서 수행되지 않는다. 비사용섹터를 포함한 블록의 분류된(listed) 소거는 비사용섹터가 수행중인 호스트섹터 기입커맨드에 의해 발생할 때 정상적으로 즉시 수행된다. 이와 마찬가지로, 콘트롤블럭의 재기입의 결과로서 블록이 비사용 콘트롤 데이터구조를 전적으로 포함할 때 그 블록은 즉시 소거된다. (콘트롤블럭은 콘트롤러(8)가 어떤 데이터 콘트롤을 기입하는 블록으로, 좀더 상세히 후술될 것이다).
그러므로, 정상적으로 재배치는 비사용 데이터를 생성할 수 없기 때문에, ??사용 데이터를 포함하는 2이상의 블록은 존재할 수 없다; 데이터 기입포인트(WP)에 대응하고 비사용데이타를 포함하는 현재비사용블럭(Current Obsolete Block, COB)와 시스템 기입포인터(SWP)에 대응하고 비사용 시스템 데이터를 포함하는 현재비사용 시스템블럭(Current Obsolete System Block, COSB). 그러나, 각 타입의 비사용블럭이 하나이상 일시적으로 존재할 수도 있다. 이때, 소거될 블록이 (비사용데이타가 다른 블록에서 막 생성될 때) 임의 타입의 기입 포인터를 역시 포함할 때, 이것은 발생할 것이다. 이 경우 이 블록에서의 소거된 페이지가 사용될 때까지 그러한 블록(펜딩비사용블럭(Pending Obsolete Block, POB)로 지정됨)의 소거는 연기되어야 하고, 모든 기입 포인터는 다른 블록으로 이동할 것이다. 이때, 수행중인 비사용블럭은 즉시 소거된다.
상기한 바와같이, 소거된 블록이름(identity)는 대부분 플래쉬 블록 어드레스 스페이스를 채우는 비트맵(MAP)에 유지되는데, 비트맵에는 각 블록의 소거상태가 기록된다. 소거된 블록은 블록어드레스순서대로 순차적으로 섹터 또는 콘트롤 데이터 기입을 위해 소멸된다. 백그라운드소거가 수행되지 않는다. 하나 또는 그이상의 불량섹터를 포함하는 임의 블록은 불량블럭으로 취급되고 콘트롤러에 의해 "소거되지 않은(not erased)" 블록으로 취급된다.
웨어 레벨링(Wear Levelling)
순환 기입포인터와 단일섹터 기입관리의사용은 플래쉬 메모리의 본래의 웨어 레벨링을 생성한다. 그러나, 소거블럭들이 비사용 또는 삭제된 데이터로 채워지자마자 소거블럭의 알고리즘은 섹터기입동작의 시퀀스의 함수인 웨어 레벨링특성을 생성한다. 웨어레벨링이 보다 더 필요하다면 이들블럭이 소거되는 것을 허용하도록 랜덤블럭내의 임시(occasional) 재배치와 같은 별도의 추가기술이 결합될 것이다.
어드레스변환 원리(Address Translation Principles)
주요 어드레스변환수단은 기본적으로 논리어드레스에 의해 오더된, 섹터의 물리어드레스의 리스트인 섹터어드레스 테이블(SAT)이이다. 즉 N 번째 SAT 엔트리는 정상적으로 논리 어드레스 N의 섹터용 물리 어드레스를 포함한다. SAT 는 독립적인 블록(SAT 블록)의 수로서 조직되고 SAT 블록의 개별 페이지를 재기입함으로써 업데이트된다. SAT 블록은 SAT 블록의 개별 페이지의 변경을 허용하도록 SAT 블록과 연결된 전용의 추가 SAT 블록(ASB)를 구비할 수도 있다. SAT 페이지는 각 섹터가 기입된 후 때때로 섹터기입수행시 충돌을 최소화하기 위하여 재기입되지 않는다.
그러므로, SAT가 마지막으로 업데이트될 때까지 기입된 섹터용 정정 물리어드레스를 포함하지 않는다. 그러한 섹터의 논리 어드레스는 기입섹터리스트(WSL), 재배치 섹터리스트(RSL) 및 기입시스템 섹터리스트(WSSL)로 불리는 리스트로 SRAM(13)에 프로세서에 의해 저장된다. 이들 리스트는 소거전에 정확하게 호스트에 의해 기입되거나 또는 블록으로부터 재배치되는 섹터자체의 순서에 매칭된다. 연속적으로 기입된 섹터의 경우, WSL 및 RSL 엔트리는 제1섹터논리어드레스와 섹터그룹길이를 정의한다. 섹터그룹은 하나의 블록에서 다른 블록으로 점프하지 않는다. 마이크로 프로세서(11)는 플래쉬 메모리에 일련의 섹터의 시작점과 블록이 섹터기입에 사용되는 순서역시 인식하며(상기 설명한 것들에 상보하고(complimentary) 프로세서 SRAM 에서 생성되는 특정 리스트, 즉 기입블럭리스트(WBL), 기입시스템 블록리스트(WSBL) 및 재배치 블록리스트(RBL)가 이정보를 저장하는 데 사용되고, 좀더 상세하게 후술될 것이다), 섹터의 물리적 위치를 계산할 수 있다.
WSL, RSL 및 WSSLL(과 그들에 상보하는 리스트: WBL, WSBL 및 RBL)은 최종 SAT가 재기입된 후 기입된 일련의 섹터의 헤더로 논리어드레스를 독출함으로써 메모리 시스템(10)에 파워의 제거 및 복귀후 마이크로 프로레서(11)에 의해 다시 생성될 수 있다. 일련의 섹터어드레스의 시작 및 일련의 섹터를 포함하는 블록간의 링크는 플래쉬 메모리의 콘트롤블럭(CB)이라 불리우는 특정 데이터구조의 엔트리로부터 마이크로 프로세서에 의해 얻어진다. (콘트롤블럭(CB)은 후에 좀더 상세하게 설명되어질 것이다.) 이 방법은 카드로부터 예상치않은 파워제거시 확고한 데이터의 안전을 제공한다.
상기한 바와같이 시스템 재배치 포인터(SRP)이 구비되는 시스템 재배치 섹터리스트(SRSL)와 상보형 시스템 재배치 블록리스트(SRBL)은 다시 생성되어 각각 WSL, RSL 및 WSSL 그리고 WBL, RBL 및 WSBL 에 대한 상기한 바와같은 방법로 사용됨을 알 수 있다.
본 발명의 실시예에 따른, 데이터가 콘트롤러(8)에 의해 기입되는 플래쉬 섹터(즉 페이지) 1의 데이터구성은 도 3에 도시되었다. 섹터1 은 순서대로 예를 들면 호스트 데이터섹터로 구성될 512 바이트의 정보부분(1a), 4바이트의 헤더부분(1b) 및 12 바이트의 ECC(1c)를 구비한다. 도 4를 참조하면, 헤더부분은 데이터구조타입 부분(20)과 헤더패러미터(22) (즉, 정보부분(1a)에 기입될 호스트 데이터섹터의 논리섹터 어드레스(LA)를 포함하는) 를 포함한다. 데이터구조타입은 다음중 어느하나를 나타내는 값을 갖을 수있다; 섹터어드레스테이블(SAT) 페이지; 추가 SAT 블록(ASB) 페이지; 콘트롤블럭(CB) 페이지; 및 부트블럭(BB) 페이지.
삭제된 데이터 섹터(Deleted Data SEctor)
삭제된 데이터는 비사용 또는 삭제된 섹터 데이터 즉, COB 또는 COSB를 포함하는 것이 허용된 블록내의 플래쉬 메모리내에 물리적으로 일시적으로 존재한다. 헤더 또는 적합한 다른 수단으로 데이터구조타입 필드의 "모두 제로"상태로 확인되어진다.
섹터 어드레스 테이블(Sector Address Table, SAT)
SAT는 논리섹터의 물리어드레스를 포함하는 일련의 엔트리이다. 엔트리 N은 논리섹터 N의 물리어드레스를 포함한다. 한 페이지내의 엔트리는 그 페이지에 저장된 데이터의 512 바이트의 정보부분(1a)을 차지한다. SAT 페이지는 단일동작으로 기입되므로, ECC 필드는 완전한 페이지를 보호하는 데 사용될 수 있으며 SAT 페이지의 각 엔트리용 별도의 ECC 필드는 필요하지 않다.
SAT는 실제로 각각 64 SAT 페이지를 포함하는 일련의 블록으로 저장된다. 테이블블럭리스트(TBL)은 모든 SAT 블록의 블록 어드레스를 정의를 정의하기 위하여 콘트롤블럭(후술됨)에 유지된다. 각 SAT 엔트리는 섹터의 물리어드레스를 정의하고 3바이트를 차지하며 도 5에 도시된 바와같이 칩번호(Chip Number), 블록번호(Block Number) 및 섹터번호(Sector Number)를 포함한다.
상기 칩번호는 5비트이며 32칩이 어드레스되는 것을 허용한다.
상기 블록번호는 13비트이며 칩당 8192블럭을 허용한다.
상기 섹터번호는 6비트이며 블록당 64섹터까지 허용한다.
SAT 페이지 데이터구조상의 헤더 패러미터필드는 SAT 블록과 페이지번호를 포함한다.
8MB 및 8VB 블록의 용량을 갖는 플래쉬카드는 대략 16K 섹터를 저장할 수 있으므로 그의 SAT 는 대략 16K 엔트리를 갖을 것이다. 하나의 SAT 내의 512바이트 페이지는 170엔트리를 포함하고 그 SAT 는 6블럭을 차지하는 96페이지를 차지할 것이다. 대용량 플래쉬메모리카드(2GB, 8VB 블록)는 1543 블록을 차지한다.
추가 SAT 블록(Additional SAT Block, ASB)
추가 SAT 블록(ASB)는 특정SAT 블록에 연결되는 전용블럭으로서 SAT 블록의 단일 페이지가 변경(즉 재기입)되는 것을 허용한다. 거기에는 각각 그것이 연결되는 SAT 블록에 대한 확장으로 작용하는 몇 개의 ASB이 있을 수도 있다. SAT 블록이 변경될 때 단지 작은 수의 페이지의 변경 데이터를 포함한다. ASB는 이들 변경된 데이터만이 재기입되는 것을 허용한다. 이것을 모든 페이지의 기입과 SAT 블록을 재기입하는데 필요한 비사용블럭의 소거보다 상당히 빠른 동작이다. ASB 페이지의 헤더 패러미터부분은 그것이 연결되는 SAT 블록과 그것이 대체하는 블록내의 SAT 페이지번호를 포함한다. ASB 페이지에 저장된 데이터의 정보부분(1a)의 포맷은 SAT 페이지의 포맷과 동일하다.
콘트롤블럭(Control Blocks, CBs)
콘트롤러(8)는 하나 또는 그이상의 콘트롤블럭(CBs)에 몇몇 콘트로 및 어드레스정보를 저장한다. 콘트롤블럭(CBs)은 주기적으로 콘트롤러(8)에 의해 업데이트되고 동작동안 때때로 또는 메모리시스템(10)의 초기화동안 억세스되어야 한다. 정보는 독립적으로 기입될 수 있는 고정된 사이즈의 엔트리로 CB내에 저장된다. 각 CB에 페이지당 9엔트리가 있다. 엔트리 자체의 CB 헤더필드에 의해 확인되는 하기의 데이터 타입 리스트중 하나에 관련된다:
·테이블 블록리스트(TBL)
·파일데이타 기입동작에 대응하는 엔트리의 몇몇필드의 블럭맵(WMAP)
·시스템 데이터 기입동작에 대응하는 블록맵(SAMP)
·재배치된 섹터동작에 대응하는 블록맵(RMAP)
새로운 데이터가 CB에 추가될 때, 적합한 타입의 추가가 최종유효엔트리에 이어 즉시 추가된다. 대용량 카드의 경우 CB는 하나이상의 블록을 차지할 것이다.모든 CB 블록의 어드레스는 플래쉬 메모리(6)의 부트블럭(BB)에 저장된다.
데이터안전을 위하여 CB (와 BB도 역시)의 각 블록의 제1페이지(헤더페이지로 지칭됨)는 엔트리를 갖지 않으며 도 3에서와 같은 풀페이지포맷을 갖는다. 이 페이지의 헤더 16의 헤더 패러미터 필드는 CB를 확인하는 부호(signature)와 그의 블록번호(콘트롤블럭세트내의 블록의 일련번호)로 구성된다.
제1CB블럭의 헤더페이지의 정보필드는 블록링크정보데이타가 차지한다, 블록링크 정보데이타는 시스템이 CB 기입동작에 이어 초기화될 때 WBL, WSBL 및 RBL 을 복귀하는데 필요한 모든 정보를 제공한다. 최종 SAT 페이지 기입동작이 실행된 후 기입된 모든 MAP(WMAP, SMAP 및 RMAP)으로부터 수집(collect)된 링크필드를 포함하며, 재입동작동안 새로운 CB 의 제1블럭의 헤더페이지에 기입되어져야 한다. 블록링크정보는 4바이트 엔트리의 타이밍 순서리스트로서, 각각 기입포인터중 하나가 방문(visit)하는 블록의 블록어드레스와 그 포인터를 확인하는 플래그를 구비한다. 메모리스페이스내의 최대블럭수는 CB를 허용하고 이것이 모두 채워질 때 액티브 엔트리가 NEB(즉 그것은 영역압축(compaction)되고 해당하는 헤더페이지가 추가됨)로부터 다음 이용가능한 소거블럭에 재기입되고 이전 CB는 모두 소거된다. (이때, 해당하는 엔트리는 부트블럭에 추가되어야 한다.) CB 페이지의 정보필드는 동일길이의 9엔트리를 포함한다. CB 페이지의 ECC 필드는 사용되지 않거나 또는 다른 목적으로 사용될 수 있다.
CB의 엔트리는 56바이트폭이고 도 6에 도시된 포맷을 갖으며 엔트리, 정보필드(26) 및 ECCC 필드(28)의 데이터타입을 확인하는 헤더(24)를 포함한다. ECC는풀페이지용으로 사용되므로 동일한 형태이다.
테이블 블록 리스트(Table Block List, TBL)
CB는 테이블 블록리스트(TBL)을 포함한다. TBL은 SAT의 연속적인 블록그룹의 어드레스와 해당하는 ASB 를 구비한다. 다수의 TBL이 모든 필요한 SAT 블록 어드레스를 정의하기 위하여 정상적으로 필요하다. 적절한 TBL이 SAT 블록기입동작 또는 새로운 ASB의 배치후 즉시 기입되어 변경된 SAT 또는 ASB 블록 위치를 기록한다. TBL 은 역시 SAT 페이지 기입동작이 실행되는 순간에 기입포인터위치를 기록하는데 사용되는 필드를 포함한다. 그러므로 TBL 은 역시 SAT 페이지 기입동작이 수행될 때마다 기입된다. TBL 엔트리의 첫 번째 1바이트는 TBL 엔트리의 순서번호인 No이다. 각 TBL 엔트리는 8 SAT-ASB 블록쌍의 값을 유지하는데 다시 말하면 각 TBL 엔트리는 N부터 N+7(N은 No*8)까지의 SAT 블록용 값을 유지한다.
WP 는 기입포인터 페이지필드이고, RP 는 재배치포인트 필드이며, SWP는 시스템 기입 포틴터필드이다. 이들 필드는 WSL, RSL 및 SSL 해재동작후 블럭내의 WP, RP 및 SWP 의 위치를 결정한다. WP, RP 및 SWP는 WSL, RSL 또는 SSL 해제동작이 완료될 때만 (즉 최종 SAT 기입동작에서만) 유효하다. 이조건은 엔트리헤더의 플래그비트로 설정된다. Flag=1은 WSL 또는 RSL 헤제동안 기입된 최정엔트리를 의미하며 그래서 WP필드는 유효하다.
3 반전된 바이트(reversed byte)는 가능한 또다른 추가를 위하여 남아있다.
SAT-ASB 쌍은 반전된 필드를 허용하고, 이것은 8엔트리의 어레이로서 각각 SAT 와 ASB블럭어드레스로 구성된다.
SATN은 N번째의 수이고, ASBN은 SATN에 연결된 ASB의 수이다. SAT 또는 ASB가 존재하지 않으면, 이필드의 값은 0으로 서로 동일하다.
새로운 TBL 엔트리는 SAT 블록이 재배치되거나 또는 새로운 ASB가 SAT 블록에 연결될 때마다 CB에 추가되어야 한다.
MAP(WMAP, SMAP 및 RMAP)
CB는 다양한 MAP 엔트리를 구비한다. 각각 다른 다입의 기입동작에 대응하는 3개의 다른 타입의 MAP 엔트리가 있다; WMAP-필드데이타필드 기입 또는 삭제동작, SMAP-시스템 데이터기입, RMAPP-섹터재배치 동작에 대응한다.
모든 MAP 엔트리의 정보필드는 동이한 포맷을 갖는다. 이것은 연속적인 블록의 그룹의 소거상태를 정의하는 비트(BitMAp)을 포함한다. 256블럭의 소거상태는 MAP의 32바이트필드에 의해 정의된다. 정보필드는 관련된 블록그룹을 확인하는 레인지필드를 포함한다. 다른 필드는 블록간의 기입포인터의 변환용 지정블럭(destination)을 정의한다. MAP은 역시 비사용 데이터를 포함하는 플래쉬 메모리에서 블록위치를 확인하는 필드를 포함한다; ObsC는 COB(또는 COSB) 용으로 사용되고, ObsP는 실행중인 비사용블럭용으로 사용된다. 비사용블럭이 존재하지 않는 경우, 해당하는 필드는 0으로 설정된다. EB 필드는 현재 기입 또는 삭제섹터동작에 의해 소거가 행해지는 블록의 어드레스를 포함한다. 그런 블록이 없다면 EB 블록은 0으로 설정된다. 이 맵 엔트리포맷은 도 8에 도시되었다.
기입 포인터중 하나가 하나의 블록으로부터 다른 블록으로 이동할 때, 해당하는 맵 엔트리는 소거된 블록의 사용을 보여주고 (비트맵 필드가 업데이트된다) 블록간의 링크를 기록하기 위하여 (링크필드가 업데이트된다) 추가되어야 한다. 기입(또는 삭제섹터) 동작이 새로운 블록에서 비사용(또는 삭제된 데이터)를 생성할 때, 해당하는 맵은 역시 새로운 비사용블럭위치를 기록하고 (ObsC 또는/및 ObsP 필드는 업데이트 된다), 그 블록이 소거된다는 것을 나타내며(EB 블록이 업데이트된다), 새로운 블록이 나타날 것이라는 것을 보여주기 위하여(비트맵 필드가 업데이트된다), 해당하는 맵이 추가될 수 있다. 그러므로, 정상적으로, 맵의 적어도 2필드가 동시에 기입되고 이것은 단일 페이지 기입동작에서 얻어질 수 있다.
부트블럭(Boot Block, BB)
부트블럭의 기능은 예상치못하는 파워가카드로부터 제거될 때 그리고 초기화과정에서 확장 스캐닝을 피할 때, 데이터의 높은 안전을 제공한다. 대용량 카드의 경우, BB는 하나이상의 블록을 포함한다. BB는 항상 카드에서 제1불량효블럭을 차지한다. 데이타 안전을 위하여, 카드의 다음 비불량블럭을 차자하는 BB의 카피(copy)가 있다. BB와 그의 카피는 재기입후 동일장소에 놓여져야 한다.
BB 는 콘트롤블럭과 동일한 구조를 갖으며, 다음과 같은 엔트리를 포함한다.
·부호(signature)
·인터리이빙 인에이블(interleaving enable)
·불량블럭 리스트
·콘트롤블럭 포인터 테이블(CBPT)
새로운 데이터가 BB에 추가되어야 하는 경우, 적합한타입의 추가 엔트리가최종유효엔트리에 이어 즉시 추가된다. 부호와 BBL 엔트리는 상기한 바와같은 아주 동일한 포맷을 갖는다 (물론, 부호엔트리의 부호필드는 다르고 유일하다). 콘트롤블럭 포인터테이블 엔트리는 CB 의 모든 블록에 대한 포인터를 포함하며 CB 가 기입된 후 즉시 업데이트되어야 한다.
이전 링크(Previous Link, PL)
CB 는 역시 이전링크(PL)를 포함한다. 이전링크(PL)의 목적은 시스템이 CB 재기입동작에 이어서 초기화되면 WBL(후술됨)를 복귀하기 위하여 필요한 모든 정보를 제공하는 것이다. 이것은 최종 SAT 페이지 기입동작이 수행된 후 기입됨 모든 맵으로부터 수집된 링크필드를 포함한다. PL 은 그의 재기입동작동안 새로운 CB 에만 쓰여져야 한다.
콘트롤러의 SRAM에 저장된 데이타구조
하기와 같은 다양한 데이터 구조가 마이크로 프로세서의 SRAM(13)에 저장되어 있다;
기입 섹터리스트(WSL) (또는 "휘슬(whistle"))
기입 섹터리스트는 최종 SAT 기입후 기입된 섹터의 논리어드레스를 기록한다. 이 목적은 그러한 섹터의 현재 논리 어드레스의 물리 어드레스로의 변환을 허용한다. WSL 은 길이 4바이트의 128 엔트리의 용량을 갖으며, 각 엔트리는 연속적으로 기입된 섹터의 그룹의 제1섹터의 논리 어드레스와 그룹길이를 저장한다. 섹터그룹은 하나의 블록으로부터 다른 블록으로 점프하지 않는다. WSL은 SAT 기입후 즉시 비워진다.
WSL 의 논리 섹터 어드레스의 순서는 정확하게 그들이 기입되는 순서와 일치한다. 그러므로 플래쉬 메모리의 WSL 의 불활성 카피는 자동적으로 SAT가 최종 기입되는 시간에 기입 포인터(WP)에 의해 정의된 위치에서 시작하는 연속적인 위치에 기입된 실제 섹터의 헤더에 의해 제공된다. 그러므로, 플래쉬 메모리(6)로 WSL의 카피를 함축적으로 만들필요가 없다. 필요하다면, 이들 섹터는 그 다음 MPA엔트리로부터의 링크필드와 함께 SAT 가 마지막으로 기입되는 시점에서 기입 포인터(WP)의 위치를 포함하는 콘트롤블럭필드에 정의된 시작 어드레스로부터 스캔될 수 있다.
WSL의 검색은 논리섹터용 최종 엔트리만이 유효하므로, 역순서대로 수행된다. 복제된 초기엔트리는 섹터 재비치 및 블록소거가 수행되었으므로 플래쉬 메모리에 위치한 해당하는 비사용섹터를 갖지 않을 수 있다. 바람직하게, 콘트롤러는 WSL로부터 복재된 엔트리를 간단히 제거할 수 있도록 구성된다.
2개의 유사한 리스트, 재배치 섹터리스트(RSL)와 시스템 섹터리스트(SSL)은 역시 최종 SAT 기입이래 기입된 재배치된 섹터의 논리 어드레스와 시스템 데이터 섹터(각각 SP와 SWP에 의해 지정된 어드레스에 기입된)를 기족하는 마이크로 프로세서 SRAM(13)에서 역시 편집된다.
ASB 및/또는 SAT 블록은 WSL, RSL 또는 SSL 블록은 WSL, RLS 또는 SSL이 각각 채워질 때마다 WSL, RSL 또는 SSL 엔트리로 보충된다(supplement). 이과정은 WSL, RSL 또는 SSL 해제라 불리운다. 이 해제는 필요하다면 ASB 해제를 초래할 수 있다. ASB 해제는 ASB가 채워질 때 발생한다. ASB가 채워지면, 각 SAT 블록은 재입되고 ASB는 소거된다. 모든 ASB에서 기입된 페이지에 대한 정보는 빈번한 ASB 스캐닝을 피하기 위하여 RAM에 저장되어야 한다. 이목적을 위한 ASB 리스트(ASBL)는 SRAM(13)에 저장된다.
ASB는 SAT 블록과 현재 연결된 모든 ASB 블록의 리스트로서, 각 ASB용 ASBL에 하나의 엔트리가 있다. 도 9는 ASBL의 하나의 포맷을 도시한 것이다; LWP=이 ASB 블록에서의 최종기입된 페이지의 수, NVP=ASB 블록-1의 수이다. ASB 페이지 0, ..., ASB 페이지 n=어레이, 인덱스는 ASB 페이지수, 값은 대응하는 SAT 페이지수이다. N=블럭당 페이지.
기입블럭리스트(Write Block List, WBL)
기입플럭리스트는 기입섹터리스트에 상보된다(complimentary)되고, WSL의 섹터가 위치하는 블랙을 정의하기 위하여 마이크로프로세서 SRAM(13)에서 생성된다. WBL은 WSL이 해재된 후 즉시 비워진다.
WSL 및 WBL은 메모리 시스템의 초기화동안 스캐닝공정에 의해 재생성된다. 이러한 방식으로 생성되는 SRAM의 리스트는 정확하게 파워가 마지막으로 제거되기전에 존재하는 리스트와 일치한다.
재배치블럭 리스트(RBL)과 시스템블럭 리스트(SBL)이라 불리우는 WBL의 2개의 유사한 리스트는 역시 편집되어 SRAM(13)에 저장되는데, 이러한 리스트는 RSL과 SSL에 각각 상보된다. RBL과 SBL은 각각 RSL과 SSL의 섹터가 물리적으로 위치하는 블록을 정의하고 WBL의 포맷과 유시하다.
현재 비사용블럭(Current Obsolete Block, COB)
기입 포인터(WP)에 의해 기입된 비사용 또는 삭제된 섹터데이타를 ??함하는 오직 하나의 블록만이 존재할 것을 허용한다. 이것은 현재비사용블럭(COB)이다. 비사용 또는 삭제된 데이터가 다른 블록에서 생성될 때, 소거동작은 COB로서 정의된 블록에서 즉시 수행되어야 한다. COB의 현재블럭 어드레스와 이 블록에서 비사용되거나 또는 삭제된 섹터의 리스트 역시 후에 COB 구조로서 칭해지는 데이터 구조로서 마이크로프로세서 SRAM(13)에 저장된다. COB구조는 최종 MAP 엔트리로부터 비사용 불록어드레스를 포함하는 필드를 카피하고, 이어서 재구성된 WSL과 WBL이 분석된 후 비사용 섹터어드레스를 추가하며 이 블록으로부터 삭제된 섹터어드레스를 독출함으로써 초기화동안 구성된다. COB 구조는 새로운 삭제 섹터동작이 수행되거나 또는 새로운 비사용섹터가 생성될 때마다 업데이트되고, 새로운 블록에서 비사용 데이터가 생성될 때마다 CB의 현재 MAP 엔트리에 카피된다.
현재비사용 시스템블럭(COSB)이라 불리우는, SWP에 기입된 비사용 또는 삭제된 섹터데이타를 포함하는 하나의 블록이 존재하는 것을 허용한다. COSB구조는 COB 구조와 유사한 방식으로 SRAM(13)에 저장된다. COB와 COSB는 각각 도 10에 도시된 바와같은 포맷 즉, 4바이트 블록넘버필드(28) (이것은 COB 또는 COSB의 블록어드레스이다)와 이블럭내의 비사용 또는 삭제된 섹터에 대응하는 위치중 해당하는 위치를 포함하는 비트맵인 32바이트 비사용 또는 삭제된 섹터마스크(30)를 갖는다. 256 페이지를 포함하는 블록의 경우 이 마스크(30)는 32바이트를 갖는다.
다음 소거된 블록 리스트(Next Erased Block List, NEB)
다음 소거된 블록리스트는 블록간의 WP, SWP 및 RP를 증가시킬 때 다음 이용가능한 소거된 블록의 첫 번째 확인을 제공하기 위하여 마이크로 프로세서 SRAM(13)에서 생성된다. 이용가능한 소거블럭은 그들의 물리어드레스의 상승순서대로 사용된다. NEB는 M 소거된 블록 어드레스 (즉 M=8)을 포함한다. NEB 리스트는 이용을 위하여 재배치될 최종소거된블럭의 어드레스보다 높고 가장 근접한 블록 어드레스를 갖는 소거블럭으로 시작하는 다음이용가능한소거블럭의 리스트이다. 즉, NEB의 엔트리의 수가 제한되지만(즉 8까지), NEB 자체는 다음 8개 소거블럭보다 큰 브럭에 대한 정보를 포함할 것이다.
다음 소거블럭리스트는 기입포인터에 의해 억세스되는 플래쉬메모리 어드레스공간영역에 적합한 맵엔트리(CB에 저장된)로부터 유래된다. 이것은 그것에 의해 정의된 모든 소거된 블록이 적합한 MAP 엔트리로부터 생성되는 위치에서 사용될 때까지 액티브 NEB로서 SRAM에 남아있을 것이다. CB는 플래쉬메모리에서 모든 블록의 소거상태를 정의하기 위하여 충분한 MAP 엔트리를 포함한다. NEB와 해당하는 MAP 엔트리는 메모리시스템의 동작동안 블록의 추가 및 제거에 의해 업데이트된다. 소거된 블록이 섹터 또는 콘트롤 데이터저장을 위해 배치될 때 엔트리는 NEB로 부터 제거된다. 엔트리가 소거된 블록이 NEB의 다른 블록에 의해 채워진 레인지내에 있는 블록어드레스에 생성될 때 NEB에 추가된다 (NEB가 이미 채워지 있지 않는한).
단일 NEB 엔트리는 연속적인 어드레스에서 그룹소거된 블록을 정의하고, 블록스타트 어드레스(연속적인 블록그룹의 제1블럭어드레스)와 그룹길이(그룹의 연속적인 블록의 수)를 정의한다.
TBL 포인터(TBLP)
TBL 포인터는 CB의 TBL 엔트리의 위치를 확인한다. 그들은 마이크로 프로세서 SRAM에 역시 저장되고 고속섹터어드레스변환을 제공하기 위하여 사용된다. TBLP는 콘트롤블럭의 초기스캐닝동안 생성되고 이어서 CB에서 새로운 TBL엔트리가 생성될 때마다 업데이트된다.
ASB 리스트(ASBL)
상기한 바와같이, ASBL은 SRAM(13)에서 생성되어 고속 어드레스변환을 지원한다. 이것은 모든 ASB 블록과 그들이 연관된 SAT 블록의 물리어드레스를 확인한다. 이것은 초기화동안 생성되어 SAT 페이지기입동작이 실행될 때마다 업데이트되어야 한다. ASBL 엔트리는 이전 억세스의 순서대로 리스트된다 즉, 엔트리가 억세스될 때 리스트의 상부로 진행된다. 현재 연관된 ASB 를 갖지않는 SAT 블록이 억세스될 때, ASB 가 배치되고 그를 위한 엔트리가 ASBL의 상부에 추가된다. 최종 현재억세스된 ASB를 나타내는 ASBL 의 하부 엔트리는 제거된다.
SAT 캐쉬(cache)
캐쉬는 플래쉬 메모리의 SAT로부터 가장 최근 억세스된 엔트리와 결합된 32연속적인 SAT 엔트리를 위해 SRAM(13)에 유지된다.
용량 맵(Capacity Map)
메모리 시스템(10)의 종 플래쉬 메모리용량은 하기와 같은 데이터와 콘트롤구조로 배치된다.
1. 논리섹터
용량은 카드의 선언된 논리용량내에 각 논리 어드레스용 유효데이타섹터의저장을 위해 할당된다. 이러한 선언된 용량은 이용가능한 물리용량-하기의 항목 2부터 8까지이고, 카드제조동안 포맷터(formatter)에 의해 정의된다.
2. 부트블럭
적어도 하나의 블록은 부트블럭에 할당된다. 바람직하게는, 제2블럭은 부트블럭의 다은 카피를 저장하기 위해 할당된다.
3. 콘트롤블럭
이것은 다수의 콘트롤블럭 엔트리(부호, BBL, TBL 및 MAP)의 저장에 할당된다. 완전히 영역압축된 콘트롤블럭은 대부분의 경우에 한 블록이하를 차지한다. 추가블럭은 영역압축 및 재기입동작사이에 기입된 엔트리용 콘트롤블럭에 할당된다.
4. 섹터어드레스 테이블
이것은 SAT 블록의 저장에 할당된다. 이것은 카드의 논리용량에 비례한다.
5. 추가 SAT 블록
일정수의 블록이 정의된 SAT 블록에 연관될 ASB에 할당된다.
6. 비사용 섹터
하나의 블록이 COB에 할당된다. 다른 블록은 COSB에 할당되고 또 다른 블록은 POB에 할당된다 (COSB와 POB의 존재를 허용하는 실시예의 경우). 그러므로, 허용된 비사용 데이터섹터의 최대수는 블록의 페이지수에 의해 설정된다.
7. 소거된 블럭(Erased Buffer)
이것은 시스템의 정확한 동작을 위해 할당되어야 하는 소거된 블럭의 버퍼이다. 적어도 하나의 소거된 블록은 데이터 섹터 재배치에 할당되어야 하며 하나의소거된 블록은 동시에 발생할 콘트롤 구조 재배치에 할당된다.
8. 스페어블럭(Spare Block)
스페어블럭은 동작라이프동안 페일발생시 선언된 논리용량을 유지하기 위하여 사용된다. 스페어블럭의 수는 카드제작동안 포맷터에 의해 결정된다.
목적을 설명하는 8MB 카드, 64MB 카드 및 512MB 카드(플래쉬카드)용 용량할당테이블(Capacity Allocation Table), 예를 들어 상기 항목 1-8에 할당된 용량은 도 16에 도시된다 (이것은 비사용섹터 즉, COB용으로 할당된 하나의 블록만을 도시하였지만, 많은 블록이 메모리 시스템의 COSB 및/또는 POB용으로 규정된 비사용섹터로 할당될 것이다).
SAT 기입동작(SAT WRITE OPERATIONS)
SAT 는 WSL, WBL, SSL, RSL 또는 RBL이 채워질 때 재기입되고, 대부분의 경우 한 페이지의 세분성(granularity)으로 행하여진다 즉 변경된 섹터 어드레스를 포함하는 오직 하나의 SAT 페이지만이 재기입된다. 그러나, 소수의 경우, 재기입되는 풀 SAT 블록이 필요하다("SAT 블록기입"으로 칭하여짐). SAT 재기입이 필요한 때, 필요한 페이지만이 기입되는 추가 SAT 블록(ASB)이 생성된다("SAT 페이지기입"으로 칭하여짐). 특정 SAT 블록의 전용으로 하나의 ASB만이 존재하고, 전적으로 ASB 의 제한된 수 N이 존재할 것이다. N의 값은 기입실행과 용량오버해드(예를 들면 N=8)사이의 적합한 타협으로서 선택될 것이다.
각 ASB 는 관련된 SAT 블록에서 "SAT 블록기입"이 실행될 때까지 존재한다. ASB가 채워진 SAT 블록에 SAT 기입페이지가 필요하거나 또는 ASB가 할당될 때 SAT블록기입이 실행된다. SAT 페이지 기입이 필요하고 해당하는 SAT 블록이 관련된 ASB 를 갖지 않으며 모든 N ASB가 이미 할당된 경우, 존재하는 ASB중 하나는 새로운 ASB의 할당전에 할당되어야 한다. 할당될 ASB는 장시간동안 기입되지 않은 하나로 선택된다. ASB의 할당해제는 SAT 불럭의 기입과 비사용 SAT 블록과 ASB 모두의 소거를 필요로 할 때 시간소멸과정이다.
인터리이브된 칩억세스(Interleaved Chip Access)
상기 설명한 동작과 데이터 구조는 본래 인터리이브된 기입동작이 다수의 플래쉬칩(5)에서 실행되는 것을 허용하고 이것은 성능을 충분히 향상기킨다. 콘트롤러칩은 복수개의 플래쉬칩(5) 예를 들어 메모리 시스템과 결합한 4개의 플래쉬 칩의 어레이를 콘트롤한다. 4개의 플래쉬칩의 스페이스공간은 가상블럭세트로서 콘트롤러에 의해 구성되는데, 각각 4개의 블록으로 구성되고 각 4개의 칩(5)으로부터 하나의 블록을 구성한다. 각 가상블럭의 4블럭은 칩내의 동일블럭어드레스를 갖는 블록이다. 이 구성은 가상블럭을 형성하는 링크된 블록이 하나의 큰 블록으로 취급되므로 섹터의 개별소거가능한 블록대신에 가상블럭을 사용하는 단일 플래쉬 메모리(10)용으로 이전에 설명한 바와같이, 동일하게 설명된 알고리즘과 데이터구조 모두를 사용하는 것이 허용된다. 페이지 기입동작은 모든 인터리이브된 칩을 통해 동시에 수행된다. 기입포인터(WP)와 RP 및 SWP 각각은 페이지 어드레스를 통해 순차적으로 이동하고 콘트롤러(8)에 제공된 하드웨어 칩인에이블 디코더에 인가된 어드레스 비트의 순서는 링크된 블록의 페이지가 도 11에 도시된 순서대로 순차적으로 억세스되는 것을 확실히한다 즉 각 포인터 WP, SWP, RP 는 하나의 PA가 다른 PA로이동할 때 한 칩으로부터 다른 칩으로 이동한다. 이것은 가상어드레스의 사용으로 얻어진다. 유일한 가상어드레스는 모든 칩의 각 물리섹터에 할당된다 (즉, 상기한 낸드타입의 메모리시스템에서 VA는 각 페이지에 할당된다). 가상어드레스가 할당되어 1만큼 VA를 증가시키는 것은 기입포인터를 한칩으로부터 다른 칩으로 이동시킴으로써 도 11에 도시된 바와같은 반복적인 패턴으로 각 가상블럭의 링크된 블록을 통해 칩에서 칩으로 가상어드레스를 증가시킨다.
효과적으로 콘트롤러는 메모리 칩의 어레이를 가상블럭의 하나의 칼럼으로서 취급한다. 섹터의 가상어드레스는 도 12에 도시된 포맷을 갖는다. 이것은 칩하이부분(ChipHigh)을 포함하는 가상블럭부분과 6비트 페이지 어드레스와 칩로우(ChipLow)부분을 포함하는 가상페이지부분으로 구성된다. 칩하이부분은 (물리어드레스의) 5비트 칩번호(도 5참조)의 Chigh이고, 칩로우부분은 5비트 칩번호의 Clow이다:
Chigh= 칩 어레이의 칩의 칼럼수;
Chigh= 칩어레이의 칩의 로우수.
가상어드레스(VA)로부터 물리어드레스를 얻기위하여, 콘트롤러는 도 13에 도시된 바와같이 칩하이부분과 칩로우부분사이에 칩로우부분을 거꾸로 이동시키도록 VA 를 간단히 재구성한다. 즉, 어느섹터의 단일칩메모리시스템에서 VA 가 PA와 같은 것이 바람직하다.
단순화를 위해, 2의 배수의 칩수만이 예를 들면 2 또는 4만이 인터리이브된다. 가상블럭의 소거동작은 인터리이브된 칩의 모든 링크된 블록의 동시소거로서 수행된다. 칩의 블록이 불량블럭이면 콘트롤러는 다른블럭내의 동등한 블록어드레스를 갖는 모든 블록들을 불량블럭으로 처리한다.
인터리이빙은 플래쉬메모리가 포맷될 때 메모리시스템의 제조업자에 의해 인에이블상태 또는 디스에이블 스태터스로 설정된 부트블럭의 콘트롤바이트의 스태터스에 따라서 인에이블 또는 디스에이블된다.
블록어드레스 또는 PA가 상기한 바와같이 단일칩 낸드타입 플래쉬 실시예에 이미 사용되는 것에, 각각 가상블럭어드레스와 VA 를 사용한다. 호스트 데이터 섹터기입 커맨드의 수신시 콘트롤러는 입력된 ?? LA를 적절한 기입포인터가 지적하는 PA를 할당함으로써 PA로 변환한다. 콘트롤러는 효과적으로 소거된 가상블럭의 섹터의 가상어드레스(VA)를 통해 순차적으로 이동하도록 PA를 통해 기입포인터가 각각 이동하도록 콘트롤한다 (소거된 가상블럭은 NEB에서 확인된다).
도 14는 인터리이브된 칩에 멀티플터기입에 관련된 다양한 동작의 타이밍을 도시한 것이다. 도 14는 도 15와 도19를 참조하여 설명될 것이다. 도 15는 메모리 시스템의 콘트롤러칩(8)을 상세히 도시하는 블록도이다. (도 2의 콘트롤러칩(8)은 도 15에 도시된 형태이고 도 2 및 도 15 모두 동일한 부분은 동일한 번호를 부여한다). 도 19는 콘트롤러칩(8')과 각각 자신의 독출/기입버퍼(71', 72', 73', 74')와 함께 4개의 플래쉬칩(1', 2', 3', 4')을 포함하는 메모리 시스템(10)의 개략도이다.
도 15는 콘트롤러칩(8')을 도시한 것으로, 콘트롤러칩(8')은 호스트 컴퓨터로의 연결용 입출력포트 O/P 즉, PC 카드 ATA 포트, 캠팩트 플래쉬 또는 IDE 포트; O/P에 연결된 호스트 인터페이스 & 레지스터(80) 및 이에 연결된 듀얼포트 SRAM 섹터버퍼(9); 데이터패스 콘트롤러(82), ECC 발생기 & 검사기(12) 및 플래쉬 메모리 인터페이스(FMI) (84), 섹터버퍼(9)에 연결된 모든 것, 플래쉬 메모리포트(86)에 연결된 FMI를 포함한다. 콘트롤러(8)는 마이크로 프로세서(11) (RISC 프로세서의 형태로); 프로세서 SRAM(13); 프로세서 마스크롬(88); 및 외부 프로그램 RAM 또는 ROM(92)을 포함한다. 선택적 디버그포트(94)는 RISC 프로세서(11)에 역시 제공된다. 데이터 및 커맨드는 마이크로버스(91)를 통해 콘트롤러(8')의 다양한 성분(섹터버(9)를 제외)사이를 통신한다.
도 14에 도시된 바와같이, 멀티플 기입커맨드 (이 경우 호스트 데이터섹터(1, 2, 3 및 4)를 포함하는 4-섹터기입) 가 ATA 포트 O/P에 수신될 때, 섹터 1은 듀얼포트 섹터버퍼(9)의 버퍼 1 에 쓰여진다. 이것은 콘트롤러 데이터관리동작에 이용가능한 섹터버퍼(9)의 버퍼 2를 남겨둔다(leave). 섹터2가 수신될 때, 이것은 버퍼 2에 직접 기입되고 동시에 섹터 1은 버퍼 1로부터 이것이 기입되는 4개의 칩중 하나(1')의 독출/기입퍼버(71')로 기입되는 플래쉬 메모리포트(86)로 이동한다. 그 다음 섹터 2는 버퍼2로부토 플래쉬포트(86)으로 전송되고 또한 4개의 플래쉬칩중 하나(2')의 독출/기입버퍼(72')에 전송된다. 이것이 발생될 때, 섹터 3은 칩(3')의 독출/기입버퍼(73')에 기입되고 섹터 4는 섹터버퍼(9)의 버퍼 2로 수신되어 칩(4)의 버퍼(74')에 기입된다. 그 다음 섹터 1, 2, 3 및 4는 각각 칩(1', 2', 3', 4')의 메모리 어레이(61', 62', 63', 64')에 적절한 할당물리섹터로 기입된다. 도 14는 모든 의지와 목적을 위하여 실제로 이전동작후 짧은 시간에 시작하는 각각의 섹터기입동작을 도시한 것이지만, 이것은 4 섹터 1, 2, 3 및 4가 플래쉬칩(1'-4')에 동시에 순차적으로 기입되는 것이 바람직하다. 게다가, 호스트데이타섹터 1-4가 기입되는 섹터의 물리어드레스가 적절한 기이포인터의 위치를 결정하는 상기 설명한 알고리즘에 의해 결정하는 것이 바람직하다(즉 가상어드레스의 순차적사용).
4 섹터상의 멀티플-섹터 기입커맨드가 호스트 프로세서로부터 콘트롤러로 전송되는 곳에서, 콘트롤러는 멀티플-섹터 기입을 각각 도 14를 참조하여 상기 설명한 바와같이 인터리이브된 기입순서로 플래쉬 메모리에 기입될 그룹인 4 섹터의 그룹(4메모리칩을 사용하는 본 발명의 실시예의 경우)으로 분할함을 알 수 있다.
어드레스변환(Address Translation)
LA에서 VA로의 어드레스변환과정은 독출 및 기입동작을 참조하여 보다 상세히 설명될 것이다.
어드레스변환은 하기의 3값중 하나로 복귀하는 섹터의 논리어드레스로 실행되는 동작이다.
·유효섹터물리어드레스
·논리섹터가 삭제되는 (또는 다시 기입되지 않는) 정보
·에러조건이 발생되는 정보
도 17은 어드레스변환과정을 설명하는 흐름도이다. 이 과정은 모든 독출동작마다 실행된다. 변환될 논리섹터어드레스(LA)가 호스트 프로세서로부터 콘트롤러(8')에 의해 수신될 때, 알고리즘은 SAT 엔트리가 최종적으로 기입된 후 논리 어드레스가변환될 섹터가 이미 기입되었는가 또는 삭제되었는가를 확인하기 위하여 박스 40을 실행한다. 섹터가 이미 기입되지 않았거나 또는 삭제되지 않은 결론은 100 확실해야 한다; 섹터가 이미 기입되었거나 또는 삭제된 결론은 정확하게 높은 가능성을 갖는다. 이것은 섹터의 연속적인 순서의 시작 및 종료어드레스를 나타내는 제한된 수의 수치쌍을 유지하고 변환될 어드레스가 이들레인지내에 있는가를 확인한다. 이들 레인지는 실제적으로 섹터가 이미 기입되거나 또는 삭제었다는 결론에 불확실성을 유도하는 비연속적이다. LA가 그 레인지내에 있다면 "반복이 가능한가" (도 17의 박스 42)에 대해 YES 가 된다. LA가 그 레인지내에 없다면 NO 로 되어 SAT 또는 SAT 캐쉬는 VA를 찾는다 (박스 44). 이로부터 물리섹터가 불량(46) 또는 삭제되었는가(50)를 결정한다. LA가 기입되지 않은 섹터에 대응하면, 박스 50에서 VA=삭제된(58)을 발생한다. 박스 42에서 YES 이면 WSL 또는 SSL 을 검색한다(52) (LA가 파일 또는 시스템 데이터에 대응하는가에 따라서). 만약 박스 54에서, LA가 발견되면(YES), VA 는 56에서 계산되고 헤더 1b에 저장된 논리어드레스는 콘트롤러 마이크로프로세서에 의해 독출된 물리섹터의 어드레스이다 (58). LA=LA1 이면(박스 60), 계산된 VA 는 정확하다. LA가 54에서 발견되지 않으면 RSL 에서 그것을 서치하고(62), RSL이 발견되지 않으면 SAT 또는 SAT 캐쉬로 가서 VA를얻는다(44). SAT 또는 SAT 캐쉬에서 발견된 VA가 불량이 아니거나(46) 또는 삭제되지 않았으면, VA로부터 LA1를 구하고(58) 상기한 바와같이 LA=LA1인가를 체크한다.
도 17의 박스 56(VA 계산)에서 실행되는 처리스텝은 도 20의 흐름도에서 상세히 설명된다. 도 20은 2개의 기입포인터만을 사용하는 메모리시스템에서 WSL 또는 RSL에서 발견된 LA의 VA를 얻기위하여 실행되는 스텝이다. 이 흐름도는 시스템 기입포인터(SWP)와 결합된 메모리시스템에서 SSL에서 발견된 LA용 VA를 하용하도록 확장되는 것을 알수 있다. 처리는 NumFrommEnd(NFE)를 설정하는 박스 100에서 시작하는데, NumFromEnd=WSL(또는 RSL)의 끝으로부터 시작하여 주어진 섹터(WSL 또는 RSL에서 발견된) 까지 기입된 섹터의 수이다. LA가 WSL에서 발견되면 P=WP로 설정하고 LA가 RSL에서 발견되면 P=꼐를 설정한다; 그 다음 PG=P.Page로 설정하는데, P.Page는 P값에 의해 지시된 기입포인터의 페이지이다 (박스 102 참조). 104에서 PG>NFE 이면 (즉 LA는 최종기입블럭이다) VA=P-NFE-1 즉, 적절한 기입포인터의 위치로부터 떨어진 NFE-1섹터가 된다. PG<NFE 이면 106에서 P==0 즉, 최종 WBL/RBL 엔트리에 대응하는 블록이 완전히 기입되었는가를 결정한다. 그렇다면 (즉, P==0) NotLast=0 을 설정하고 그렇지 않다면 NotLast=1을 설정한다. 그다음 108에서 최종블럭과 주어진 섹터가 존재하는 블록간의 블록수, N블럭을 하기의 알고리즘을 사용하여 계산한다:
Nsect는 최종기입블럭페이지 0과 주어진 섹터사이의 섹터수;
Nsect=NumFromEnd-PG;
Nblock=Nsect/Blocksize+NotLast.
100에서 블록의 페이지수, PageNum 을 계산하는데, PageNum=Blocksize-Nsect%Blocksize이다. 하기를 이용하여, LA가 WSL에 있으면 112에서 WSL 로부터 블록어드레스(BLAddr)을 구하고, LA가 RSL에 있으면 114에서 RBL로부터 블록어드레스(BLAddr)을 구하는데, 블록어드레스는 주어진 섹터를 포함하는 블록의 가상어드레스이다:
LA가 I WSL 이면 BlAddr=RBL[LBL-NBlock], 여기서 LBL은 WBL의 최종엔트리의 인덱스이다;
LA가 RSL 이면 BlAddr=RBL[LRBL+NBlock], 여기서 LRBL은 RBL의 최종엔트리의 인덱스이다.
그 다음 116에서 VA=Page0+PageNum을 이용하여 VA를 계산하는데, 여기서 Page0=주어진 섹터를 포함하는 블록의 페이지 0의가상어드레스이다.
도 21은 SAT 또는 SAT 캐쉬로부터 VA를 구하는데 사용된 프로세스의 흐름도이다(도 17의 박스 44). 도 21은 전적으로 자명하지만, 하기와 같이 특별히 라벨된 박스에 관하여 하기와 같이 좀더 설명한다.
박스 120(SAT 캐쉬에 LA가 있는가): LA>=FirtstCacheEntry이면 LA는 SAT Cache에 있다. LA<=LA<FirstCacheEntry.LA+CacheSize, 여기서 FirstCacheEntry.LA=Cache의 제1SAT 엔트리에 대응하는 LA 그리고 (글로벌) CacheSize=SAT Cache의 엔트리수;
박스 122(SAT의 블록과 페이지를 계산하라): SBNum을 계산하는데, SBNum은 주어진 LA의 SAT 블록수이고 Spage는 주어진 LA의 SAT 페이지수이다;
박스 124(TBL 엔트리의 수를 계산하라): TBLNum은 필요한 TBL 엔트리의 수인데, 여기서 TBLNum=SBNum/8; 및
박스 126(캐쉬의 SAT 페이지의 일부분을 저장하라); 가능하다면 억세스된 최종엔트리로 시각하는 32엔트리가 캐쉬된다. 엔트리가 충분하지 않다면 페이지의 최종엔트리에서 종료되고 최정섹터억세스를 포함하는 32엔트리그룹이 캐쉬된다.
도 18은 도 17의 박스58(VA로부터 LA1을 구하라)의 프로세스 스텝을 설명하기 위한 흐름도이다. 페이지 헤더에 저장된 헤더파라미터(HP)는 1만큼 증가된 논리어드레스의 값이 된다는 것을 알 수 있다. 이것은 삭제된 섹터가 그들헤더의 모든비트를 0(제로)로 설정함으로써 마크되기 때문이다. 이 LA=0은 헤더에 저장될 수 없다. 그러므로 LA1=HP-1로 설정한다.
독출동작(Read Operation)
도 22는 물리섹터로부터 호스트데이타섹터를 독출하기 위하여 수행되는 스텝의 시퀀스를 설명하기 위한 흐름도이다. 콘트롤러는 (호스트로부터 수신된) LA를 VA로 변환함으로써 시작한다 (박스 130). 이것은 이미 설명한 도 17의 흐름도에서 설명되어진 프로세스를 실행함으로써 행하여진다. LA가 VA로 변환되면 어드레스 LA를 갖는 물리섹터의 내용은 콘트롤러의 버퍼(9)에서 독출된다. 그 다음 콘트롤러는 섹터 (즉 섹터의 내용)이 삭제되거나 또는 불량인가를 결정한다(박스 132). 만약 섹터가 삭제되거나 불량이 아닌 경우, 콘트롤러는 호스트 프로세서의 데이터버퍼의 모든 바이트를 0xFF로 설정한다 (박스 134). 섹터가 삭제되지 않은 경우 (박스 136) 콘트롤러는 에러상태를 호스트로 복귀시킨다 (박스 138). 섹터가 삭제된 섹터이면 콘트롤러는 유효스태터스를 호스트로 복귀시킨다 (박스 137). 박스 132에서 콘트롤러가 섹터가 삭제되지 않았거나 불량이 아니라고 결정하면 콘트롤러는 바로 박스 137로 간다 즉, 유효스태터스를 호스트로 복귀시킨다.
기입동작(Wrtite operaion)
도 23은 호스트데이타섹터를 물리섹터에 기입하기 위하여 실행되는 스텝의 시퀀스를 설명하기 위한 흐름도이다. 도 23은 호스트파일 데이터의 기입동작만을 처리하며 이것은 기입포인터(WP)에 의해 기입되지만 도 23의 동작은 메모리시스템이 시스템 데이터 (즉, SWP)용 별도의 기입포인터를 사용하는 별도의 시스템데이타기입을 처리하도록 적절하게 확장될 수도 있다. 콘트롤러는 (호스트에서 수신된) LA를 VA로 변환함으로써 시작된다 (박스 150). 이것은 이미 설명된 도 17의 흐름도에서 설명되는 프로세스를 실행함으로써 행해진다. 152에서 섹터가 불량이면 콘트롤러는 154에서 에러스태터스를 호스트로 복귀시킨다. 섹터가 불량이 아니면 156에서 섹터가 삭제되었는가를 체크하고 삭제되었다면 158 에서 WP가 유효한가 비유효한가를 체크한다. 블록이 완전히 기입될 때 WP는 유효하고 (WP==0), WP는 소거된 블록으로 이동하여야 한다. WP가 유효하지 않으면 WP를 160에서 새로운 (유효) 물리섹터 어드레스로 설정한다. WP가 유효할 때, 162에서 LA를 WSL에 가산하고 필요한 WSL 또는 RSL 해제 그리고/또는 CB 와 CBPT 영역압축을 실행한다. 그 다음 164에서 평가반복확률알고리즘(도 17의 박스 40)으로부터 레인지를 업데이트하고 섹터를 콘트롤러버퍼로부터 WP 어드레스까지 기입하며 168에서 유효스태터스값을 호스트로 복귀시킨다. 박스 156에서 섹터가 삭제되지 않았는가를 발견하여 157에서 VA가 COB에 있는가를 체크한다 (VA가 VB에 일치하면 VA는 COB에 있다. 여기서 VB는 SRAM(13)에 저장된 COB구조에서의 가상블럭넘버필드 (이것은 가상블럭어드레스이다 - 도 12참조)). VA가 COB에 있으면 159에서 VA를 콘트롤러 SRAM(13)에 저장된 COB 구조에 비사용으로 기록하고 (이것은 SRAM(13)의 COB구조의 BitMask 필드에 해당하는 비트를 1로 설정함으로써 해하여진다.) 박스 158(WP가 유효한가)로 간다. VA가 COB에 있지 않으면 161에서 COB를 변경하고 159(VA를 비사용으로 기록하라)로 이동한다.
도 24는 도 23의 박스 161(COB를 변경하라)에서 실행되는 스텝의 흐름도이다. 도 24는 전반적으로 자명하지만 하기의 주석(note)와 결합하여 독출되어야 한다.
박스 200(VA.B1, VB): VA.B1은 VA의 가상블럭필드이고 VB는 상기 설명한 바와같다;
박스 202(COB가 유효한가): VB=0이면 COB는 유효하고 VB가 0(제로)와 같으면 이것은 그순간에 거기에 비사용데이타가 없다는 것을 나타낸다.
박스 203, 204 (MaxRel을 계산하라): MaxRel은 COB로부터 재배치될 섹터의 최대수이다. MaxRel=P.Page-1, 여기서 P.Page는 WP 또는 꼐의 페이지필드(어드레스)이다;
박스 205, 206(더미 엔트리를 WSL에 추가하라): 재배치될 블록이 아직 완전히 기입되지 않았다면, 해당하는 "dummy"섹터 LA는 최종 WSL(RSL)엔트리에 추가되어야 한다.
박스 207 (섹터를 재배치하라): 도 25참조;
박스 208 (WMAP 를 기입하다): EB+VB 인 CB에 WMAP을 기입하고 BitMap의 해당하는 비트를 1로 설정한다. 필요하다면 CB 재기입을 실행하라.
박스 209 (리스트를 업데이트하라): VB와 같은 WRBArray 엔트리를 찾고 그것과 비유효로서 WRBArrat의 동일한 VB의 다른 엔트리를 기록하라. WRBArray는 사실 스타트카운팅시 WBL 엔트리와 종료카운팅시 RBL 엔트리를 갖는 메모리의 동일여역에 실제로 저장된 엔트WBL 과 WSL 리스트이다. 2개의 라인이 중간에서 만날 때 WRBArray는 채워진다.
박스 210 (COB를 설정하라): SRAM의 COB 구조를 업데이트하고 VB필드를 VA.VB1으로 설정하고, VA.Page에 대응하는 Obs 및 Del 마크를 1로 설정하며, 모든 다른 비트를 0으로 설정하라.
도 25는 도 24의 박스 207(섹터를 재배치하라)에서 실행되는 스텝을 도시한 것이다. 이것은 하기의 주석과 결합하여 독출되어야 한다:
박스 220,222 및 230 : SRAM의 COB 구조의 Obs 및 Del 마크필드로 가는 루프를 실행하라;
박스 223 (섹터가 유효한가): ODMask[i]=0이면 섹터는 유효하다; COB Obs 및 Del 마크의 0 값은 이 페이지가 유효섹터를 포함하는 것을 나타낸다;
박스 224와 225 : RP에 의해 지적된 블록이 이미 완전히 채워졌다면 RP=0이다;
박스 226(페이지 헤더로부터 LA를 저장하라): 페이지헤더로부터 얻어진 LA는RSL의 ADD 엔트리로 사용되도록 일시적으로 저장된다;
박스 225 (RP=0): RSL에 엔트리를 추가하라. 필요하다면 WSL/RSL 해제를 실행하라.
도 26은 도 23의 박스 160에서 기입포인터(WP)를 설정하기 위하여 실행되는 스텝을 도시한 것이다. 유사한 프로세스가 도 25의 박스 227에 RP를 설정하는데 사용된다. 도 26은 하기의 코멘트와 결합하여 독출되어야 한다:
박스 240 (WRArray 가 완전히 채워지지 않았는가): Last<LastRE-1이면 WRArray는 완전히 채워지지 않았는데, 여기서 Last(글로벌)은 최종 WSL 엔트리의 인덱스티고, LastRE-1은 최종 RSL 엔트리의 인덱스이다;
박스 242 (WRBArray가 완전히 채워졌는가): LBL<LRBL-1이면 WRBArray는 완전히 채워지지 않았는데, 여기서 LBL과 LRBL은 도 20에서 이미 정의된바와같다;
박스 244 (해제를 리스트하라): 필요하다면 SAT 페이지 기입동작, SAT 블록기입 및 CB 재기입을 실행하라;
박스 246 (NEB를 채워라): CB에 저장된 MAP으로부터 다음 N(N=NeBSize) 소거된 블록을 선택하라;
박스 248 (WMAP을 기입하라): ErBlock 에 설정된 링크필드와 0으로 설정된 해당하는 비트로 WMAP을 기입하라. 필요하다면 CB 재기입을 실행하라.
도 27은 섹제섹터동작에서 수행되는 프로세스 스텝의 흐름도이다. 이것은 기입동작과 유사하게 초기스텝에 있다 (도 23참조): LA는 250에서 VA로 변환된다. 252에서, 섹터가 삭제되면 254에서 에러스태터스를 호스트로 복귀한다. 섹터가 삭제되지 않았으면 VA가 COB에 있는가를 체크하고 261에서 그것이 COB에 있지 않다면 261에서 COB를 변경한다. VA가 COB에 있다면 269에서 삭제된 것으로 COB에 VA를 기록하고 271에서 (콘트롤러의) 듀얼포트 SRAM(9)의 버퍼중 하나를 채우고 그 다음 이것을 버퍼부터 삭제될 섹터까지 "모두 0" 페이지로 기입한다 (그러므로 섹터를 삭제한다). 275에서 호스트로 유효스태터스를 복귀한다 (그래서 섹터가 삭제되었는가를 확인한다).
초기화
초기화과정 및 파워손실회복과정을 설명할 것이다. 간단히, 이것들은 단일 포인터 시스템 (즉 WP만)에 관하여 설명되지만 과정들은 멀티플기입포인트 시스템(WP, SWP, RP)의 전용으로서 이미 확장될 것이라는 것을 알 수 있다.
모든 데이터 및 콘트롤구조는 초기화동안 일반화된 스캐닝을 피하기 위하여 특별히 구성된다. 대부분의 콘트롤구조(WSL과 WBL을 제외)는 정상적으로 CB에 저장된 해당하는 정보로부터 유래한다. 카드의 초기화동안, 하기의 동작을 수행하는 것이 필요하다.
1. 부트블럭으로부터 최종 콘트롤블럭포인터 테이블 엔트리를 독출하여 CB블럭의 위치를 확인한다.
2. CB를 스캐닝하여 TBLP를 재구성한다.
3. 최종 SAT 재기입이후 섹터를 확인하고 WSL과 WBL을 구성하기 위하여 콘트롤블럭의 최종 TBL엔트리에 정의된 기입포인터위치에 이서 순차적으로 페이지의 헤더/ECC 필드를 스캔한다.
4. CB의 해당하는 MAP엔트리로부터 NEB를 구성한다.
5. COB와 ASBL을 구성한다.
6. 최종 MAP의 ErB 필드에 언급된 블록이 실제로 소거되었는가를 체크한다. 그렇지 않다면 소거동작을 완료하다.
WSL과 WBL의 구성
카드의 초기화동안, 저장될 기입포인터(WP)의 최종값은 CB의 최종 TBL 엔트리로부터 독출되고, 그위치로부터의 연속적인 페이지에서 페이지헤더의 스캔은 SRAM에 WSL과 WBL을 재구성하기 위하여 실행된다. 소거된 위치가 되면 최종 SAT 제기입이래 기입된 섹터의 시퀀스가 종료된다.
이 섹터스캔은 기입포인터(WP)가 한블럭의 끝에서 이웃하지 않은 블록의 처음까지 점프되지 않는다는 사실을 고려하여야 한다. WP에 의한 모든 블록전이는 CB의 MAP엔트리의 링크필드에 기록된다.
COB와 ASBL의 구성
이구조는 CB로부터 해당하는 엔트리를 카피함으로써 재구성될 수 있다. 게다가, COB 구조를 구성하기 위하여 (그것내의 삭제된 섹터를 확인하기 위하여) CB의 최종 MAP MAP 엔트리의 Obs 필드에서 그의 어드레스가 정의된 이들 섹터를 포함하는 현재블럭을 스캥할 필요가 있다. 이블럭에서 비사용섹터를 확인하기 위하여 WSL과 WBL을 역시 스캔할 필요가 있다. ASBL 어드레스를 기록하기 위하여 TBL로붙터 ASB어드레스를 확인하여 그들의 헤더/ECC 필드를 스캔하여야 한다.
파워-손실회복(Power-Loss Recovery)
메모리시스템에서는 파워가 제거된 상황에서도 파워가 복원되면 정상적으로 동작하도록 인에이블되어야 하고 저장된 데이터가 손실되지 말아야하는 필요조건이 있다. 그러나, 파워온후 메모리시스템이 오로지 정상적으로 동작하는 것을 허용하기 위하여 메모리 시스템이 즉시 완전한 정상상태로 복원할 필요는 없다. 정상상태는 비정상상태가 제거될 때마다 예외없이 후에 복원된다.
메모리 시스템의 정상상태는 하기의 동작이 수행되는 동안 공급전압이 제거된다면 열화된다.
1. 호스트로부터 데이터섹터의 기입
2. 재배치되는 데이터섹터의 기입
3. 콘트롤블럭(CB 또는 BB)에 대한 엔트리의 기입
4. 콘트롤 데이터블럭(SAT 또는 CB)에 대한 페이지의 기입
5. 비사용섹터 또는 콘트롤 데이터로 임의 블록의 소거
호스트로부터 데이터섹터의 기입동안의 파워손실
이 경우, 기입될 데이터는 손실되지만 호스트는 기입커맨드가 종료되고 다시 섹터를 기입하도록 통보되지 않는다. 불완전하게 기입된 섹터가 부분적인 기입동작의 결과로서 플래쉬 메모리에 존재하게 된다. 이것은 CB의 최종링크 파라미터에 의해 정의된 블록의 페이지 헤더를 독출함으로써 기입포인트의 값이 설정될 때 초기화동안 삭제된다. 마지막으로 삭제된 섹터는 그의 ECC를 체크하기 위하여 완전히 독출되어야 하고 다음 페이지는 완전히 소거되는가를 체크하기 위하여 독출되어야 한다. 만약 부분적으로 기입된 섹터가 삭제된다면 다른 모든 섹터는 다음 소거된블록의 처음에 새로운 기입포인터를 재배치하여 블록이 소거되도록 하여야 한다.
재배치되는 데이터섹터의 기입동안의 파워손실
이것은 상기한 초기화동안 기입포인터를 설정하는 과정동안 삭제된다. 섹터를 재배치하고 블록을 소거하는 동일한 동작이 행해진다. 게다가, 불완전한 재배치동작은 CB의 Obs 파라미터에 의해 정의된 블록의 비사용섹터와 기입포인터를 즉시 우선하는 논리섹터어드레스와 비교함으로써 삭제된다. 진행중인 섹터재배치는 초기화동안 완료되어야 한다.
콘트롤 데이터블럭(CB 또는 BB)에 대한 엔트리의 기입동안의 파워손실
이상태는 CB 및 BB의 엔트리가 독출되어 그들의 ECC가 체크될 때 초기화동안 삭제되어진다. 엔트리는 그의 ECC가 에러를 표시하는 경우 무시되어야 한다. CB 또는 BB엔트리 기입동작을 초기화시키는 초기동작은 정확하게 완료되지 않으며 엔트리는 후에 이동작이 정상동작동안 반복되면 완전히 기입될 것이다.
콘트롤데이타블럭(ASB)에 대한 페이지기입동안의 파워손실
이상태는 ASB의 페이지가 독출되어 그들의 ECC가 체크될 때 정상초기화동안 삭제되어진다. 이페이지는 ECC가 에러를 표시할 때 무시되어야 한다. ASB 페이지 기입동작을 초기화시키는 초기동작은 정확하게 종료되지 않으며 이 페이지는 후에 이동작이 정상동작동안 반복될 때 정확하게 기입된다.
완전콘트롤데이타블럭(SAT 또는 CB)의 기입동안의 파워손실
이것은 다른 데이터구조에 의해 그것을 참조함없이 플래쉬메모리에 존재하는 불완전한 데이터블럭을 발생할 것이다. 이조건은 초기화동안 삭제될 필요가 없으며블록은 "손실된 블록"으로 존재하는 것이 허용된다. 블록기입동작을 초기화시키는 초기동작은 불완전하게 종료하고 블록은 후에 이동작이 정상동작시 반복될 때 정확하게 기입될 것이다. 정상동작의 후속단계에서, 손실된 블록은 MAP상태와의 불일치 또는 시스템의 소거블럭의 수의 불일치발견에 의해 삭제될 것이다 (도 16의 Capacity Map 참조). 예외루틴은 필요하다면 완전풀래쉬메모리스캐닝에 의해 블록을 확인하여 소거하게 된다.
비사용섹터 또는 콘트롤데이타로의 블록소거동안의 파워손실
이것은 플래쉬메모리에 존재하는 불완전한 소거블럭을 발생할 것이다. 이조건은 CB의 마지막 MAP 엔트리의 ErB필드라 언급된 블록상태가 체크될 때 초기화동안 삭제된다. 이블럭의 재소거가 필요하다면 실행된다.
또 다른 실시예
상기한 바와같은 실시예의 다양한 변경이 본 발명의 범위를 벗어남없이 가능하다. 예를 들면, 소거동작을 조정하는 다른 방법은 항상 두 COB ( 및 2 COSB)가 존재하도록 허용하는 것이다: 이것의 장점은 메모리용량을 최상으로 사용하도록 한다. 상기한 실시예에서 하나의 COB만을 고려하였으나, COB를 만들고자하는 블록에 기입포인터가 있는 경우 POB가 임시적으로 존재하는 것을 허용할 수 있다. 이것은 POB를 구비하여야 하는 경우 POB를 할당하기 위한 소거메모리용량이 충분하여야 한다는 것을 의미한다. 그러므로, 이메모리용량을 최상으로 사용하도록 유도하고 이것을 확실히 하는 하나의 방법은 항상 2개의 COB가 존재하도록 하여 POB의 필요성을 제거하는 것이다 (제2COB가 필요할 때 POB로서 작용할 수 있다). 2COB 시스템에서 새로운 COB를 발생할 필요가 있을 때 2개의COB중 상위COB를 소거한다 (하위 COB를 소거하는 경우 그것에 기입포인트를 갖지 않는 한).
도 3과 메모리시스템의 각 플래쉬 페이지의 데이터배열의 설명을 참조하면, 한 페이지내에 데이터를 저장하는 다른 방법을 제안한다. 도 28는 전형적인 528 바이트 낸드 또는 앤드타입 플래쉬메모리페이지(1)의 물리적인 분할을 보여준다. 페이지는 512 바이트의 "데이타영역" (300)와 16바이트의 "스페어영역" (302)을 포함한다. 도 3을 참조하면 상기한 바와같은 실시예에서, 콘트롤러(8)는 데이터영역(300)에 512바이트의 정보(1a)를 저장하고 스페어영역(302)에 헤더(1b)와 ECC(1c) (이후 오버헤드 데이터(OD)라 칭함)를 저장한다. 그러나, 페이지(1)내에 데이터의다른 배열도 가능하다. 예를 들면 도 29에 도시된 바와같이, 헤더(1b)와 ECC(1c)는 데이터영역(300)의 제1부분에 동일하게 저장되고 정보(1a)는 스페어영역(302)과 데이터영역(300)의 나머지부분을 구성하는 부분(304)에 저장된다.
도 30에 도시된 다른 가능성은 플래쉬 페이지의 시작으로부터 오프셋위치에 헤더(1b)와 ECC(1c)를 기입하고, 헤더와 ECC의 일측에 남아있는 공간에 호스트데이타섹터("사용자 데이터로 칭하여짐)를 기입하는 것이다. 얼마나 많은 OD(오프셋 S)가 각 기능에 의해 결정되어진다: (a) 페이지 1의 물리 어드레스; 또는 (b) 페이지 1에 기입된 사용자 데이터의 제1바이트내의 하나 또는 그 이상의 비트 (즉 호스트 데이터섹터). 도 31(a)는 섹터기입동작의 시작전 콘트롤러버퍼(320)의 데이터 배열을 도시한 것으로서, 데이터는 사용자 데이터의 제1부분(322)와 헤더 데이터의 제2부분(324)로서 배열된다. 도 31(b)는 사용자 데이터의 제1바이트내의 하나 또는 그이상의 비트에 의해 오프셋 S가 결정되는 기입동작의 완료에 이어서 (상기 옵션(b)), 플래쉬메모리 페이지의 데이터배열을 도시한 것이다. 데이터는 사용자 데이터의 제1부분(326)으로 저장되고, 이어서 사용자 데이터의 제2부분(328), 헤더(1b) 및 ECC(1c)가 저장된다. 위치(326)+위치(328)의 길이는 위치(326)내의 데이터에 의존한다. 위치(326)의 길이는 최소오프셋보다 작거나 또는 같게 정의되고 위치(328)의 길이는 위치(326)내의 데이터를 근거로 하여 계산되어 정정오프셋(S)로 제공된다. 사용자 데이터의 제1 및 제2부분(326), (328)은 개별적으로 확인되어 제1부분(326)은 하나의 동작시 콘트롤러에 의해 플래쉬 메모리로부터 독출되고 그 다음동작시 콘트롤러에 의해 독출되어야 하는 제2부분(328)의 길이를 결정하기 위하여 콘트롤러에 의해 계산된다. 도 32는 기입동작동안 콘트롤러버퍼로부터 플래쉬메모리로 데이터를 전송하는 데 사용되는 콘트롤러 커맨드의 시퀀스를 열거하는 테이블이다.
그러므로, 사용자 데이터의 하나 또는 그 이상의 비트의 함수가 되도록 오프셋(S)를 선택하는 하나의 장점은 오버헤드 데이터가 모든 섹터의 528 바이트 데이터 세그먼트에서 동일한 위치에 삽입되지 않는다. 이것은 메모리 어레이 컬럼불량과 같은 플래쉬 메모리에서의 시스템불량발생시 상당수의 섹터에서 상당한 오버헤드데이타가 동시에 손실되는 것을 보호한다.
도 33은 도 31(b)의 플래쉬 메모리페이지의 독출동작완료후 콘트롤러버퍼의 데이타 배열을 도시한 것이다. 도 33으로부터 버퍼의 데이터는 사용자 데이터의 제1부분(323), 헤더데이타의 제2부분(324) 그리고 ECC의 제3 및 마지막부분(325)에거꾸로 배열된다. 도 34는 독출동작동안 플래쉬메모리로부터 콘트롤러버퍼로의 데이터전송에 사용되는 콘트롤러 커맨드의 시퀀스를 열거하는 테이블이다.
추가적으로 멀티플 플래쉬칩 메모리시스템을 참조하여 이미 설명한 바와같이, 멀티플 플래쉬칩의 인터리이브된 기입동작을 참조하면, 복수개의 칩에 실제로 동시에 기입하는 기술은 물리적 페이지사이즈가 콘트롤러에 의해 섹터기입의 멀티플사이즈인 즉, 메모리의 각 페이지가 콘트롤러가 균일한 사이즈의 세그먼트에 데이터를 기입하는 콘트롤러에 의해 쓰여진 (사용자+오버헤드) 데이터의 세그먼트사이즈의 4배인 단일메모리칩에 데이터를 기입하는데 사용하는 것을 제안한다.
게다가 본 발명은 낸드타입 메모리 뿐만 아니라 앤드 또는 노아타입의 메모리와 같은 다른 타입의 메모리에도 작용할 수 있음을 알 수 있을 것이다. 앤드타입 플래쉬메모리에서, 한 블록의 각 페이지1 은 도 28의 낸드페이지 포맷과 동일한 포맷을 갖으며, 상기 설명한 바와같은 페이지내 가능한 데이터배열을 사용할 수 있다. 불량섹터를 포함하는 블록에서 소거될 블록의 개별적으로 양호한 섹터가 개졀적으로 소거될 것이지만, 여전히 메모리를 섹터의 블록으로 소거하도록 콘트롤러를 설계한다. 즉, 콘트롤러는 불량섹터를 포함하는 블록을 불량블럭으로 취급하지 않지만, 대신 그들을 양호안(소거가 가능한)블럭으로 취급하여 이들블럭내의 양호한 섹터를 사용한다.
앤드타입 플래쉬메모리가 사용되고 메모리시스템은 상기한 바와같은 인터리이브된 칩기입동작을 이용한 멀티플 플래쉬칩시스테이며, 가상블럭중 하나의 섹터의 임의 블록(페이지)이 불량섹터를 포함하는 경우, 콘트롤러는 기입포인터가 이섹터를 건너뛰도록(skip) 하여 블록의 다음의 양호한 섹터로 간다 즉 4개 섹터의 기입버스트가 c3s5, c4s5, c1s6, c2s6이면 c=칩 그리고 s=섹터이고 c1s6이 불량섹터이면 시퀀스는 c3s5, c4s5, c2s6, c3s으로 된다. 이것은 가상블럭내의 한 블록이 하나 또는 그 이상의 불량섹터를 포함하면 콘트롤러가 그 블록을 불량블럭으로 처리하고 전체가상블럭을 불량가상블럭으로 간주하는 낸드 타입메모리에 근거한 실시예와는 대조적이다.
노아타입의 플래쉬메모리를 사용하는 경우 바람직한 실시예는 528 바이프폭의 균일한 크기를 갖는 섹터의 메모리의 독출 및 기입데이타구조로 메모리시스템의 콘트롤러를 설계하는 것이다. 도 35는 노아 메모리의 블록 4'의 3섹터 1, 2, 3을 개략적으로 도시한 것이다. 노아블럭의 메모리의 하나의 열(row)가 단자 512바이트폭을 갖는다는 사실에 기인하여, 노아블럭의 각 섹터는 하나의 로우를 채우고 그다음 로우의 일부분을 채우도록 감싸진다. 그럼에도 불구하고, 다른 방식으로 노아메모리의 섹터를 정의할 수 있으며, 528바이트보다 작거나 큰사이즈의 섹터사용을 선할 수 있으며, 하나의 블록은 한 사이즈이상의 섹터를 포함할 수 있다. 콘트롤러는 이미설명한 바와같이 낸드타입 및 앤드타입 메모리 페이지를 참조하여 설명한 다양한 방법으로 사용자 및 헤더 데이터를 포함하는 각 섹터내의 데이터를 배열한다.
메모리시스템이 낸드, 앤드 또는 노아타입 메모리 어레이에 근거하든지간에, 메모리 시스템의 물리섹터는 메모리 어레이 자체의 물리구조에 특별한 관계를 가질필요는 없다, 예를 들면 하나의 섹터는 어레이의 하나의 로우(페이지)에 대응할 필요가 없으며 물리적 특징이 하나의 섹터와 이웃하는 섹터사이의 경계를 확인하기 위하여 존재할 필요가 없다. 섹터는 유니트로서 콘트롤러에 의해 항상 처리되는 메모리셀의 그룹으로 설명되어질 수 있다. 다른 섹터들이 동일한 크기일 필요는 없다. 게다가, 섹터의 물리구조는 그 섹터에 저장되는 데이터에 의존하지 않는다. 역시, 메모리셀의 하나의 로우(페이지)내의 결함영역(defective region)이 묵인되어 물리섹터의기입시 단순히 콘트롤러에 의해 스킵되어지는 실시에도 가능하다.
SAT를 참조하면, 상기한 바와같이 SAT가 바람직하게 메모리 어레이(6)의 하나 또는 그이상의 블록에 저장되는 반면, 별도의 메모리 콘트롤러가 SAT를 저장하는 콘트롤러에 억세스할 수 있는 별도의 비휘발성 메모리를 제공할 수도 있다.
마지막으로, 상기 실시예의 변경안으로, 상기한 바와같이 항상 블록의 물리어드레스의 상승순서로 이용가능한 소거블럭을 이용하는 대신에, 콘트롤러는 다른 순서로 소거블럭을 이용한다. 이변경실시예서, NEB리스트는 현재이용가능한 소거블럭 모두의 선택된 서브세트를 포함하고, NEB리스트에서 제1블럭어드레스는 사용될 다음 소거블럭이고 이 제1블럭어드레스는 데이터저장용으로 할당될 때 NEB리스트에서 제거된다. 생성되는 (즉 호스트로부터의 삭제커맨드에 이은 비사용데이타의 발생에 기인한) 임의 새로운 소거블럭은 NEB리스트의 하부에 추가된다. 이것은 콘트롤러가 NEB 의 엔트리를 현재이용가능한 소거블럭의 새로운 서브세트로 대체함으로써 재컴파일하는 주기의 종료에서, (예를 들면 호스트로부터 섹터기입커맨드의 소정수인) 콘트롤러에 의해 결정되는 주기동안 연속된다. 간편하게, 모든 소거블럭의전체적인 서브세트는 물리블럭어드레스의 상승순으로 순차적으로 사용된다. 이러한 변경은 모든 블록의 소거상태를 모니터링하고 저장에 연결되는 메모리스페이스 필요성을 감소시키는 장점이 있다.

Claims (57)

  1. 개별적으로 어드레스가 가능하고 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하고, 상기 각 섹터는 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 반도체 메모리와;
    메모리에 데이터구조를 기입하거나 독출하고, 소거된 것으로 간주되는 블록과 소거되지 않은 것으로 간주되는 블록으로 각 섹터의 블럭을 분류하는 콘트롤러를 포함하며,
    상기 콘트롤러는 호스트 프로세서로부터 수신된 논리어드레스를 메모리의 상기 메모리섹터의 물리어드레스로 변환하는 수단과;
    호스트 프로세서로부터 기입될 데이터에 대한 섹터의 물리어드레스를 지정하고, 콘트롤러에 의해 콘트롤되어 소거된 것으로 간주되는 블록의 메모리섹터의 물리어드레스를 통해 소정오더로 이동하며, 상기 블록이 채워졌을 때 다른 소거된 블록으로 이동하는 기입 포인터(WP)를 구비하며,
    상기 콘트롤러는 호스트 컴퓨터로부터 섹터기입 커맨드가 수신될 때, 호스트 컴퓨터로부터의 수신된 논리 어드레스를 논리어드레스를 현재 기입포인터(WP)가 가리키는 물리어드레스로 할당함으로써 데이터가 기입된 물리어드레스로 변환하도록 구성되며, 상기 콘트롤러는 상기 콘트롤러에 의해 할당된 각각의 물리어드레스에 대하여 논리어드레스의 섹터할당테이블(SAT)을 컴파일하도록 구성되며; 상기 콘트롤러는 호스트 프로세서로부터 데이터가 메모리섹터에 기입되는 것보다는 덜 자주SAT를 업데이트하도록 구성되는 것을 특징으로 하는 호스트프로세서와의 연결용 메모리 시스템.
  2. 제 1 항에 있어서, 상기 기입포인터(WP)는 콘트롤러에 의해 콘트롤되어 소거된 것으로 간주되는 블록들을 통해 소정오더로 이동하는 것을 특징으로 하는 메모리 시스템.
  3. 제 1 항 또는 제 2 항에 있어서, SAT의 물리섹터어드레스는 논리섹터어드레스(LSA)에 의해 오더되며, 그에 따라 N번째 SAT엔트리는 논리어드레스 N을 갖는 데이터가 기입된 섹터의 물리어드레스를 포함하는 것을 특징으로 하는 메모리 시스템.
  4. 제 3 항에 있어서, 상기 콘트롤러는 섹터독출커맨드가 호스트 프로세서로부터 수신될 때 콘트롤러가 이전에 논리 섹터어드레스(LSA)에 할당한 물리어드레스섹터를 얻기 위하여 호스트 프로세서로부터 수신된 상기 로직섹터어드레스를 SAT에 룩업시키도록 구성되는 것을 특징으로 하는 메모리 시스템.
  5. 이전의 어느 항에 있어서, 상기 SAT는 상기 반도체 메모리의 메모리섹터의 상기 블록중 적어도 하나에 저장되는 것을 특징으로 메모리 시스템.
  6. 제 5 항에 있어서, 상기 콘트롤러는 전체블럭에 SAT 를 재기입함으로써 SAT를 업데이트시키도록 구성되는 것을 특징으로 하는 메모리 시스템.
  7. 제 5 항 또는 제 6 항에 있어서, SAT 블록의 개별섹터의 변경된 버전을 포함하는 섹터의 적어도 하나의 블록이 제공되는 것을 특징으로 하는 메모리 시스템.
  8. 제 7 항에 있어서, 상기 ASB 블록의 각 섹터는 그것이 업데이트시키는 SAT 블록의 섹터의 물리어드레스와 SAT 블록의 상기 섹터의 변경된 버전을 포함하는 것을 특징으로 하는 메모리 시스템.
  9. 제 7 항 또는 제 8 항에 있어서, 상기 ASB 블록의 모든 섹터가 SAT 섹터의 변경된 버전으로 기입될 때, 각 SAT 블록은 ASB 블럭의 모든 변경된 버전을 포함하도록 재기입되며 ASB 블록은 소거되는 것을 특징으로 하는 메모리 시스템.
  10. 이전의 어느 항에 있어서, 콘트롤러는 각 블록이 기입된 데이터로 채워질 때 소거된 블록을 통해 물리어드레스의 상승수치오더로 순차적으로 이동하도록 기입포인터(WP)를 콘트롤하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  11. 제 10 항에 있어서, 기입포인터의 콘트롤은 고차블럭의 섹터가 물리어드레스오더에 따라 데이터로 채워지면 콘트롤러에 의해 현재 소거된 것으로 간주되는 모든 블록중 수적으로 가장 낮은 물리블럭 어드레스를 갖는 섹터의 블럭에 대해 감싸도록 WP가 콘트롤러에 의해 콘트롤된다는 점에서 순환하는 것을 특징으로 하는 메모리 시스템.
  12. 제 1 항 내지 제 9 항중 어느 항에 있어서, 콘트롤러는 물리어드레스오더에 따라 소거된 블록을 통해 기입포인트(WP)가 비순차적으로 이동하도록 콘트롤하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  13. 제 1 항 내지 제12 항중 어느 항에 있어서, 상기 각 메모리섹터(1)는 데이터영역(300)과 스페어영역(302)으로 물리적으로 분할되고, 콘트롤러는 섹터의 데이터영역(300)의 시작부터 오프셋되는 섹터의 위치에서의 헤더데이타와 에러정정코드데이타(ECC)를 포함하는 오버헤드 데이터(OD)를 기입하고 오버헤드 데이터(OD)의 각 사이드에서 각 섹터에 남아있는 스페이스에서 호스트 프로세서로부터 수신된 사용자 데이터를 기입하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  14. 제 13 항에 있어서, 상기 오버헤드 데이터(OD)가 섹터에 기입될 사용자 데이터의 적어도 하나의 비트에 의해 결정되는 양에 의해 오프셋되는 것을 것을 특징으로 하는 메모리 시스템.
  15. 이전의 어느 항에 있어서, 섹터의 상기 각 블록의 메모리섹터는 유니트로서함께 소거가 가능한 것을 특징으로 하는 메모리 시스템.
  16. 제 16 항에 있어서, 섹터의 상기 각 블록의 상기 메모리 섹터는 모두 개별적으로 소거가 가능한 것을 특징으로 하는 메모리 시스템.
  17. 이전의 어느항에 있어서, 상기 콘트롤러는 메모리섹터의 전블럭을 소거만하도록 메모리의 소거동작을 콘트롤하도록 구성되고, 상기 섹터의 한블럭은 섹터의 모든 메모리섹터가 소거된 섹터라면 콘트롤러에 의해 소거된 블록으로 간주되는 것을 특징으로 하는 메모리 시스템.
  18. 제 17 항에 있어서, 블록이 하나 또는 그이상의 불량섹터를 포함하는 경우, 콘트롤러는 전블럭을 불량으로 정의하고 그블럭을 소거되지 않은 블록으로 간주하여 그곳에 데이터가 기입되지 않도록 하는 것을 특징으로 하는 메모리 시스템.
  19. 제 16 항에 있어서, 블록이 하나 또는 그이상의 불량섹터를 포함하는 경우 콘트롤러를 그블럭을 소거된 블록으로 간주하여 콘트롤러는 데이터저장을 위하여 그블럭의 양호한 섹터를 여전히 사용하며, 메모리 시스템은 불량섹터를 확인하는 테이블을 포함하고 콘트롤러는 기입포인터(WP)가 이동될 그 다음 섹터 어드레스가 불량섹터의 어드레스인가를 체크하여, 그것이 불량섹터의 어드레스이면 기입포인터가 이불량섹터를 스킵하도록 콘트롤하며 섹터가 기입되는 소정오더에 따라 다음 섹터어드레스로 이동하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  20. 이전의 어느 항에 있어서, 섹터의 각블럭은 메모리의 물리위치를 정의하는 물리블럭어드레스를 갖으며 상기 각 메모리섹터의 물리어드레스는 블록이 위치해있는 블록의 물리블럭어드레스를 포함하며, 콘트롤러는 WP가 블록을 통해 이동하는 오더대로 분류되고 기입될 섹터의 다음블럭을 빠르게 확인하기 위하여 콘트롤러에 의해 사용되는 소거된 것으로 간주되는, 섹터의 적어도 몇블럭의 물리블럭어드레스의 리스트를 컴파일하도록 구성되고, 메모리 시스템은 상기 리스트가 콘트롤러에 의해 저장되는 임시 메모리수단을 더 포함는 것을 특징으로 하는 메모리 시스템.
  21. 이전의 어느 항에 있어서, 다른 섹터에 이미 기입된 비사용데이타를 제공하는 섹터기입커맨드가 호스트 프로세서로부터 콘트롤러에 의해 수신될 때, 상기 콘트롤러는 현재 비사용 데이터를 포함하는 섹터의 어드레스를 메모리시스템의 임시메모리에 저장하는 것을 특징으로 하는 메모리 시스템.
  22. 제 21 항에 있어서, 사용자에 의해 생성된 섹터삭제커맨드가 콘트롤러에 의해 호스트 프로세서로부터 수신되는 경우, 상기 콘트롤러는 삭제될 비사용섹터로서 마크하고 상기 임시메모리에 섹터의 어드레스를 저장하도록 더 구성하는 것을 특징으로 하는 메모리 시스템.
  23. 제 21 항 또는 제 22 항에 있어서, 상기 콘트롤러는 언제라도 여기서 현재비사용블럭(COB)라 칭해지는 일정수의 블록만을 허용하고 기입포인터(WP)에 의해 기입된 비사용데이타를 포함하는 하나 또는 그이상의 섹터를 포함하며, COB내의 모든 섹터가 비사용 데이터를 포함할 때 상기 COB가 즉시 소거되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  24. 제 23 항에 있어서, 상기 콘트롤러는 상기 COB와는 다른 블록의 섹터가 비사용데이타를 포함하는 경우 상기 COB의 유효(비사용이 아닌)섹터의 데이터를 다른 블록에 재배치하고 상기 COB를 소거하며; COB와는 다른 상기 블록에 상기 섹터를 비사용으로 마크하고; 상기 다른 블록을 새로운 COB로 지정하도록 상기 콘트롤러가 구성되는 것을 특징으로 하는 시스템 메모리.
  25. 제 23 항 또는 제 24 항에 있어서, 상기 일정수의 COB는 하나인 것을 특징으로 하는 메모리 시스템.
  26. 제 24 항에 있어서, 콘트롤러가 상기 유효데이타를 재배치하는 상기 블록은 WP가 현재 위치하는 블록인 것을 특징으로 하는 메모리 시스템.
  27. 제 24 항에 있어서, 상기 메모리 시스템은 여기서 재배치 포인터(RP)라 칭해지는, 상기 유효데이타가 재배치될 섹터의 물리 어드레스를 가리키기 위한 기입포인터를 더 포함하며, 상기 재배치 포인터(RP)는 항상 상기 기입포인터(WP)와는 다른 블록에 있는 것을 특징으로 하는 메모리 시스템.
  28. 제 27 항에 있어서, 상기 메모리 시스템은 여기서 시스템 기입 포인터(SWP)라 칭해지는, 상기 시스템 데이타가 호스트로부터 기입될 섹터의 물리 어드레스를 가리키기 위한 기입포인터를 더 포함하며, 상기 시스템 기입 포인터(SPW)는 항상 상기 기입포인터(WP)와는 다른 블록에 있는 것을 특징으로 하는 메모리 시스템.
  29. 제 28 항에 있어서, 상기 콘트롤러는 언제라도 하나 또는 그이상의 비사용섹터를 포함하는 적어도 2블럭, 하나의 블록은 COB이며 다른 블록은 하나 또는 그이상의 비사용 시스템 데이터섹터를 포함하는 현재비사용 시스템블럭(COSB)이 존재하도록 하고, 시스템 데이터섹터가 COSB가 소거되도록 하기 위하여 재배치될 필요가 있는 경우 재배치된 시스템 데이터는 시스템 기입포인터(SWP)가 현재 가리키는 어드레스로 전송되는 것을 특징으로 하는 메모리 시스템.
  30. 제 28 항에 있어서, 메모리 시스템은 여기서 시스템 재배치 포인터(SRP)라 칭해지는, 유효 시스템데이터가 재배치될 섹터의 물리어드레스를 가리키기 위한 다른 기입포인터를 더 포함하며, 상기 SRP는 항상 기입포인터(WP)와 시스템기입포인터(SWP)와 다른 섹터의 블록에 있는 것을 특징으로 하는 메모리 시스템.
  31. 제 28 내지 제 30 항중 어느 항에 있어서, 비사용데이타가 다른 블록에서 바로 생성되기 때문에 콘트롤러가 상기 COB블럭을 소거할 필요가 있을 때에 COB 가 상기 기입포인터(WP, RP, SWP, SRP)중 하나를 포함하는 경우, POB의 유효 (비사용이 아닌) 데이터가 콘트롤러에 의해 재배치되고 POB가 소거되는 때에 콘트롤러에 의해 정의된 바와같이 POB의 모든 소거된 블록이 채워지고 상기 포인터가 사용될 다음 소거된 블록으로 이동할 때까지 상기 콘트롤러는 새로운 COB를 먼저 생성하고 여기서 펜딩비사용블럭(POB)로 칭해지는 이전 COB의 소거를 연기하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  32. 제 29 항에 있어서, 상기 콘트롤러는 SAT 가 업데이트된 이후 재배치된 데이터가 RP(여기서 재배치섹터리스트 RSL로 칭해짐), SWP(여기서 기입시스템섹터리스트 WSSL 이라 칭해짐) 및 SRP(여기서 시스템 재배치섹터 리스트 SRSL이라 칭해짐)에 의해 기입된 메모리의 섹터에 해당하는 논리섹터 어드레스의 각 리스트를 메모리 시스템의 임시메모리에 저장하도록 구성되며, 상기 콘트롤러는 RP, SWP 및 SRP(여기서 재배치블럭리스트(RBL), 기입 시스템블럭 리스트(WSBL) 및 시스템 재배치블럭리스트(SRBL)이라 칭해짐)에 의해 사용된 블록오더의 리스트를 해당하는 상기 임시메모리에 저장하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  33. 이전의 어느 항에 있어서, 호스트 프로세서로부터 메모리로의 데이타구조기입외에 상기 콘트롤러는 지정된 메모리 데이터를 생성하고 콘트롤정보로서 기입하며, 상기 콘트롤러는 호스트 프로세서로부터 수신된 데이터가 기입되는 블록과는 다른 메모리섹터의 블록의 하나 또는 그이상의 블록(콘트롤블럭 CB)에 그런 콘트롤 정보를 기입하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  34. 제 33 항에 있어서, 상기 콘트롤러는 모든 SAT블럭의 블록 어드레스의 리스트를 적어도 하나의 상기 콘트롤블럭에 저장하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  35. 제 33 항 또는 제 34 항에 있어서, 상기 콘트롤러는 불량섹터를 포함하지 않는 메모리의 섹터의 제1블릭인, 메모리의 전용블럭(부트블럭 BB)에 상기 하나 또는 그이상의 콘트롤블럭의 블록어드레스를 저장하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  36. 제 34 항에 있어서, 청구항 7, 8 또는 9항에 종속됨으로써, 모든 SAT블럭의 상기 리스트는 복수개의 리스트부분(테이블 블록 리스트TBL)의 형태이고 상기 각 부분은 논리적으로 연속하는 SAT 블록의 그룹과 그에 해당하는 ASB의 블록어드레스를 포함하는 것을 특징으로 하는 메모리 시스템.
  37. 제 7 항 내지 제 9 항중 어느 항에 있어서, 상기 콘트롤러는 SAT 가 마지막으로 업데이트된 이후 기입포인터(WP)에 의해 기입된 데이터구조의 논리섹터 어드레스의 리스트(기입섹터 리스트 WSL)을 메모리 시스템의 임시 메모리에 저장하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  38. 제 37 항에 있어서, 상기 콘트롤러는 SAT의 최종 업데이트이후 WSL에 어드레스가 홀드된 업데이트된 섹터가 위치하는 블록의 블록어드레스의 리스트(기입블럭리스트WBL)의 형태로 저장되는 오더인, 데이터를 기입하기 위해 기입포인터(WP)에 의해 사용된 블록의 오더를 역시 저장하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  39. 제 38 항에 있어서, 상기 WSL은 소정의 사이즈를 갖으며, WSL이 일단 채워지면 적어도 하나의 SAT 블록 또는 ASB 블록은 업데이트되고, 상기 WSL과 WBL은 비워지는 것을 특징으로 하는 메모리 시스템.
  40. 제 38 항에 있어서, 상기 콘트롤러는 시작물리 섹터어드레스와 SAT 의 최종업데이트 이후 콘트롤러에 의해 데이터가 기입된 섹터를 포함하는 블록사이의 링크를 상기 반도체 메모리의 상기 콘트롤블럭에 저장하는 것을 특징으로 하는 메모리 시스템.
  41. 이전의 어느 항에 있어서, 상기 각 섹터는 메모리의 단일 "페이지" 즉 메모리섹터의 상기 블록의 메모리셀의 하나의 열로 구성되는 것을 특징으로 하는 메모리 시스템.
  42. 이전의 어느 항에 있어서, 상기 콘트롤러는 데이터가 균일한 사이즈의 데이터 세크먼트로 메모리섹터에 기입 또는 독출되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  43. 제 42 항에 있어서, 모든 메모리 섹터는 동일한 크기이며, 각 데이터 세그먼트는 상기 메모리 섹터의 사이즈와 동일한 크기를 갖는 것을 특징으로 하는 메모리 시스템.
  44. 이전의 어느 항에 있어서, 콘트롤러가 콘트롤러에 의해 SAT로부터 가장 최근에 억세스된 SAT엔트리를 포함하는 연속하는 SAT 엔트리의 그룹을 저장하도록 구성된 임시캐쉬메모리를 더 포함하는 것을 특징으로 하는 메모리 시스템.
  45. 제 43 항에 있어서, 청구항 8에 종속될 때, 상기 콘트롤러는 SAT 섹터기입동작이 실행될 때마다 업데이트되는, 모든 ASB 블록과 그들과 연관되는 SAT 블록의 물리어드레스의 리스트(ASBL)를 상기 임시캐쉬메모리에 생성하도록 구성되는 것을 특징으로 하는 메모리시스템.
  46. 이전의 어느 항에 있어서, 상기 반도체 메모리는 단일메모리칩 형태의 단일메모리 어레이를 포함하는 것을 특징으로 하는 메모리 시스템.
  47. 제 1 항 내지 제 45 항중 어느 항에 있어서, 반도체 메모리는 복수의 메모리칩 형태로 형성된 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 시스템.
  48. 제 1 항 내지 제 45 항중 어느 항에 있어서, 반도체 메모리는 복수개의 메모리칩 형태의 복수개의 메모리어레이를 포함하며, 상기 콘트롤러는 복수의 메모리칩의 메모리섹터를, 각각 상기 메모리칩으로부터의 메모리섹터의 하나의 소거가능한 블록을 포함하는 배수의 가상블럭으로 형성하고 상기 가상블럭을 소거된 것으로 간주된 블록과 소거되지 않은 블록으로 분류하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  49. 제 48 항에 있어서, 상기 콘트롤러는 소거된 가상블럭의 리스트를 컴파일하고 메모리 시스템의 임시메모리에 이것을 저장하도록 구성되고, 상기 기입포인터(WP)를 연속적인 섹터기입동작시 하나의 칩으로부터 다른 칩으로 이동하는 것을 콘트롤하며, 상기 기입포인터는 상기 가상블럭의 하나의 소거가능한 블록의 하나의 섹터에서 시작하여 하나의 섹터가 가상블럭의 각 소거가능한 블록에 기입될 때까지 상기 가상블럭의 다른 소거가능한 블록 각각의 하나의 섹터에 연속적으로 이동하며 그 다음 제1섹터가 기입된 칩으로 거꾸로 이동하고 이와같이 가상블럭의 각 소거가능한 블록의 또 다른 섹터를 채워주는 방식으로 가상블럭이 데이터로 채워질 때까지 계속하며, 소거된 블록으로 간주되는 가상블럭의 상기 리스트에서 그 다음 블록으로 이동하여 상기한 방식으로 상기 그 다음 가상블럭을 채워주는 것을 특징으로 하는 메모리 시스템.
  50. 제 49 항에 있어서, 상기 콘트롤러는 n이 메모리 시스템의 반도체 메모리칩의 수보다 작거나 동일한 경우 모든 연속적인 n 섹터기입동작동안 호스트프로세서로부터 멀티플섹터기입커맨드를 실행하도록 구성되고, 상기 콘트롤러는 각 n 칩의 하나의 섹터에 실제적으로 동시에 기입하는 것을 특징으로 하는 메모리 시스템.
  51. 제 49 항 또는 제 50 항에 있어서, 상기 콘트롤러는 상기 가상블럭의 모든 소거가능한 블록을 연속적으로 소거함으로써 가상블럭의 소거를 수행하도록 구성되는 것을 특징으로 하는 메모리 시스템.
  52. 개별적으로 어드레스가 가능하고 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하고, 상기 각 섹터는 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 반도체 메모리와;
    메모리에 데이터구조를 기입하고 메모리로부터 데이터구조를 독출하기 위한 콘트롤러를 포함하며,
    상기 콘트롤러는 상기 소거가능한 블록을 각각의 메모리칩으로부터 소거가능한 블록을 각각 포함하는 가상블럭으로 형성하고, 콘트롤러는 가상블럭을 소거된것으로 간주되는 블록과 소거되지 않은 것으로 간주되는 블록으로 분류하며, 상기 콘트롤러는 채워질 그다음 블록으로 이동하기전에 하나의 가상블럭을 데이터로 채우고, 각 가상블럭은 콘트롤러가 하나씩 가상블럭의 각 소거가능한 블록의 하나의 메모리섹터에 기입하는 반복시퀀스로 그의 메모리섹터에 기입함으로써 채워져서, 연속적으로 기입된 섹터는 서로 다른 칩에 있는 것을 특징으로 하는 호스트 프로세서와의 연결용 메모리 시스템.
  53. 제 52 항에 있어서, 상기 콘트롤러는 n이 메모리 시스템의 반도체 메모리칩의 수보다 작거나 동일한 경우 모든 연속적인 n 섹터기입동작동안 호스트프로세서로부터 멀티플섹터 기입커맨드를 실행하도록 구성되고, 상기 콘트롤러는 각 n 칩의 하나의 섹터에 실제적으로 동시에 기입하는 것을 특징으로 하는 메모리 시스템.
  54. 개별적으로 어드레스가 가능하고 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하는 반도체 메모리로 데이터구조를 기입하고 상기 반도체 메모리로부터 데이터구조를 독출하는 콘트롤러에 있어서,
    상기 콘트롤러는 상기 콘트롤러가 사용되는 메모리 시스템의 호스트 프로세서로부터 수신된 논리어드레스를 상기 메모리의 상기 메모리섹터의 물리어드레스로 변환하고, 섹터의 블록을 소거된 블록과 소거되지 않은 블록으로 분류하기 위한 수단과;
    호스트 프로세서로부터 기입될 섹터의 물리어드레스를 지정하고, 콘트롤러에 의해 콘트롤되어 소거된 것으로 간주되는 블록의 메모리섹터의 물리어드레스를 통해 소정오더로 이동하며, 상기 블록이 채워졌을 때 다른 소거된 블록으로 이동하는 기입 포인터를 구비하며,
    상기 콘트롤러에 의해 호스트 프로세서로부터 섹터기입커맨드가 수신될 때, 상기 콘트롤러는 호스트 프로세서로부터 수신된 논리섹터어드레스를 상기 기입포인터(WP)가 현재 지정하고 있는 물리어드레스로 상기 논리어드레스를 할당하므로써 데이터가 기입될 물리어드레스로 변환하도록 구성되며;
    상기 콘트롤러는 논리어드레스의 테이블(SAT)을 상기 콘트롤러에 의해 할당된 각 물리어드레스로 컴파일하고 호스트 프로세서로부터 데이터가 기입되는 메모리섹터보다 덜 자주 SAT를 업데이트하도록 구성되는 것을 특징으로 하는 콘트롤러.
  55. 개별적으로 어드레스가 가능하고 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하는 반도체 메모리로의 데이터구조의 기입 및 상기 반도체 메모리로부터의 데이터구조의 독출을 콘트롤하는 방법에 있어서,
    섹터의 블록을 소거된 것으로 간주되는 블록과 소거되지 않은 것으로 간주되는 블록으로 분류하는 스텝과;
    기입될 섹터의 물리어드레스를 지정하기 위한 기입포인트(WP)를 제공하고, 소거된 것으로 간주되는 블록의 메모리섹터의 물리어드레스를 통해 소정오더로 이동하도록 적어도 하나의 상기 기입포인터(WP)를 콘트롤하며, 블록이 채워져 다른 소거된 블록으로 이동하고, 호스트 프로세서로부터 섹터기입커맨드가 수신될 때 호스트 프로세서로부터 수신된 논리어드레스를 상기 논리어드레스를 상기 기입포인터가 현재 가리키는 물리어드레스로 할당함으로써 데이터가 기입되는 물리어드레스로 변환하는 스텝과;
    논리어드레스의 테이블(SAT)을 상기 콘트롤러에 의해 할당된 각 물리어드레스로 상기 불활성 반도체 메모리에 저장하고 상기 호스트 컴퓨터로부터 데이터가 기입되는 메모리섹터보다 덜 자주 SAT를 업데이트하는 스텝을 포함하는 것을 특징으로 하는 콘트롤방법.
  56. 개별적으로 어드레스가 가능하고 섹터들의 소거가능한 블럭에 배열된 불활성 메모리섹터를 구비하고, 상기 각 섹터는 메모리의 물리위치를 정의하는 물리어드레스를 구비하는 반도체 메모리와;
    상기 메모리에 데이터구조를 기입하고 상기 메모리로부터 데이터구조를 독출하는 콘트롤러를 포함하며,
    상기 콘트롤러는 호스트 프로세서로부터 수신된 논리어드레스를 메모리의 상기 메모리섹터의 물리어드레스로 변환하는 수단을 포함하며;
    상기 메모리섹터(1)는 데이터영역(300)과 스페어영역(302)으로 물리적으로 분할되고, 콘트롤러는 섹터의 데이터영역(300)의 시작부터 오프셋되는 섹터의 위치에서의 헤더데이타와 에러정정코드데이타(ECC)를 포함하는 오버헤드 데이터(OD)를기입하고 오버헤드 데이터(OD)의 각 사이드에서 각 섹터에 남아있는 스페이스에 호스트 프로세서로부터 수신된 사용자 데이터를 기입하도록 구성되는 것을 특징으로 하는 호스트프로세서와의 연결용 메모리 시스템.
  57. 제 56 항에 있어서, 상기 오버헤드데이타(OD)는 섹터에 기입될 사용자 데이터의 적어도 하나의 비트에 의해 결정되는 양에 의해 오프셋되는 것을 특징으로 하는 메모리 시스템.
KR1020017010492A 1999-02-17 2000-02-17 메모리 시스템 KR100644805B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9903490.2 1999-02-17
GBGB9903490.2A GB9903490D0 (en) 1999-02-17 1999-02-17 Memory system

Publications (2)

Publication Number Publication Date
KR20020009564A true KR20020009564A (ko) 2002-02-01
KR100644805B1 KR100644805B1 (ko) 2006-11-13

Family

ID=10847858

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017010492A KR100644805B1 (ko) 1999-02-17 2000-02-17 메모리 시스템

Country Status (8)

Country Link
US (1) US6725321B1 (ko)
EP (1) EP1157328B1 (ko)
JP (1) JP5011498B2 (ko)
KR (1) KR100644805B1 (ko)
DE (1) DE60019903T2 (ko)
GB (1) GB9903490D0 (ko)
TW (1) TWI244092B (ko)
WO (1) WO2000049488A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100776112B1 (ko) * 2006-02-15 2007-11-15 삼성전자주식회사 휴대단말기의 부팅 시간 단축방법
KR101038167B1 (ko) * 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
KR101172071B1 (ko) * 2004-11-18 2012-08-10 소니 주식회사 통신 시스템, 기억 장치 및 제어 장치
KR101446832B1 (ko) * 2008-02-04 2014-10-07 애플 인크. 메모리 맵핑 기술

Families Citing this family (247)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
JP3524428B2 (ja) * 1999-04-20 2004-05-10 東京エレクトロンデバイス株式会社 記憶装置、記憶システム、メモリ管理方法及び記録媒体
KR100544175B1 (ko) * 1999-05-08 2006-01-23 삼성전자주식회사 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법
US7702831B2 (en) * 2000-01-06 2010-04-20 Super Talent Electronics, Inc. Flash memory controller for electronic data flash card
US7966462B2 (en) * 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
US7934074B2 (en) * 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
MXPA02004748A (es) * 1999-11-10 2004-01-19 Thomson Licensing Sa Un metodo para la recuperacion de desastre para un medio de disco de re-escritrua.
US20060161725A1 (en) * 2005-01-20 2006-07-20 Lee Charles C Multiple function flash memory system
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
US6654847B1 (en) * 2000-06-30 2003-11-25 Micron Technology, Inc. Top/bottom symmetrical protection scheme for flash
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US7072981B1 (en) * 2000-12-21 2006-07-04 Cisco Technology, Inc. Preallocation of client network address translation addresses for client-server networks
US7089328B1 (en) * 2000-12-29 2006-08-08 Cisco Technology, Inc. Method allocation scheme for maintaining server load balancers services in a high throughput environment
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123410D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
GB0123421D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
JP3981268B2 (ja) * 2001-12-28 2007-09-26 日本電産サンキョー株式会社 不揮発性メモリ及びそのデータ更新方法
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US6901499B2 (en) 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7065531B2 (en) * 2002-03-12 2006-06-20 Hewlett-Packard Development Company, L.P. Combining computer programs
DE10227255B4 (de) * 2002-06-19 2008-06-26 Hyperstone Gmbh Verfahren zur Wiederherstellung von Verwaltungsdatensätzen eines blockweise löschbaren Speichers
DE10256509B4 (de) * 2002-06-19 2008-06-12 Hyperstone Gmbh Verfahren zum Adressieren von blockweise löschbaren Speichern
EP1523711A1 (en) * 2002-06-19 2005-04-20 Tokyo Electron Device Limited Memory device, memory managing method and program
EP1514189A1 (en) * 2002-06-20 2005-03-16 Tokyo Electron Device Limited Memory device, memory managing method and program
US6968439B2 (en) 2002-08-29 2005-11-22 Micron Technology, Inc. Single segment data object management
US7130979B2 (en) * 2002-08-29 2006-10-31 Micron Technology, Inc. Dynamic volume management
US6970969B2 (en) * 2002-08-29 2005-11-29 Micron Technology, Inc. Multiple segment data object management
US20040049628A1 (en) * 2002-09-10 2004-03-11 Fong-Long Lin Multi-tasking non-volatile memory subsystem
US20040128414A1 (en) * 2002-12-30 2004-07-01 Rudelic John C. Using system memory as a write buffer for a non-volatile memory
US20040128464A1 (en) * 2002-12-30 2004-07-01 Lee Micheil J. Memory reclamation
FI117489B (fi) 2003-02-07 2006-10-31 Nokia Corp Menetelmä muistikortin osoittamiseksi, muistikorttia käyttävä järjestelmä, ja muistikortti
JP2004265162A (ja) * 2003-03-03 2004-09-24 Renesas Technology Corp 記憶装置およびアドレス管理方法
TWI220474B (en) * 2003-03-12 2004-08-21 Glovic Electronics Corp Physical page allocation method of flash memory
DE10319271A1 (de) * 2003-04-29 2004-11-25 Infineon Technologies Ag Speicher-Schaltungsanordnung und Verfahren zur Herstellung
US7664987B2 (en) * 2003-05-25 2010-02-16 Sandisk Il Ltd. Flash memory device with fast reading rate
KR100546348B1 (ko) * 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
US7752380B2 (en) * 2003-07-31 2010-07-06 Sandisk Il Ltd SDRAM memory device with an embedded NAND flash controller
JP2005085011A (ja) * 2003-09-09 2005-03-31 Renesas Technology Corp 不揮発性メモリ制御装置
JP2005108304A (ja) * 2003-09-29 2005-04-21 Toshiba Corp 半導体記憶装置及びその制御方法
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7073016B2 (en) * 2003-10-09 2006-07-04 Micron Technology, Inc. Random access interface in a serial memory device
DE10349595B3 (de) 2003-10-24 2004-12-09 Hyperstone Ag Verfahren zum Schreiben von Speichersektoren in einem blockweise löschbaren Speicher
JP4567966B2 (ja) 2003-12-22 2010-10-27 株式会社東芝 エミュレーションシステムおよびエミュレーション方法
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
EP1758027B1 (en) 2003-12-30 2010-07-14 SanDisk Corporation Non-volatile memory and method with control data management
US7484070B1 (en) 2004-01-09 2009-01-27 Conexant Systems, Inc. Selective memory block remapping
WO2005081891A2 (en) * 2004-02-23 2005-09-09 Lexar Media, Inc. Secure compact flash
US20080147964A1 (en) * 2004-02-26 2008-06-19 Chow David Q Using various flash memory cells to build usb data flash cards with multiple partitions and autorun function
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7370166B1 (en) * 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US7194596B2 (en) * 2004-06-09 2007-03-20 Simpletech Global Limited Method of efficient data management with flash storage system
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US7464306B1 (en) * 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
WO2006024328A1 (de) * 2004-09-02 2006-03-09 Hyperstone Ag Verfahren zur verwaltung von speicherinformationen
US7509526B2 (en) * 2004-09-24 2009-03-24 Seiko Epson Corporation Method of correcting NAND memory blocks and to a printing device employing the method
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
JP2008033379A (ja) * 2004-11-10 2008-02-14 Matsushita Electric Ind Co Ltd 不揮発性記憶装置
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7386655B2 (en) * 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
KR100876084B1 (ko) * 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US7849381B2 (en) 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US7409473B2 (en) 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
US8667249B2 (en) * 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
WO2006067853A1 (ja) * 2004-12-24 2006-06-29 Spansion Llc 記憶装置のバイアス印加方法、および記憶装置
US7212440B2 (en) 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
US7315917B2 (en) 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
JP2008530683A (ja) * 2005-02-11 2008-08-07 サンディスク アイエル リミテッド Nandフラッシュメモリ・システム・アーキテクチャ
US7627712B2 (en) * 2005-03-22 2009-12-01 Sigmatel, Inc. Method and system for managing multi-plane memory devices
KR100666174B1 (ko) * 2005-04-27 2007-01-09 삼성전자주식회사 3-레벨 불휘발성 반도체 메모리 장치 및 이에 대한구동방법
US7788555B2 (en) * 2005-07-22 2010-08-31 Broadcom Corporation Using fractional sectors for mapping defects in disk drives
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
TWI295771B (en) * 2005-08-08 2008-04-11 Rdc Semiconductor Co Ltd Faulty storage area self markup access control method and system
KR100739722B1 (ko) * 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7512864B2 (en) * 2005-09-30 2009-03-31 Josef Zeevi System and method of accessing non-volatile computer memory
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
JP2007164929A (ja) * 2005-12-16 2007-06-28 Fujitsu Ltd 記憶媒体管理装置、記憶媒体管理プログラム、記憶媒体管理方法
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143567A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US20070143560A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
JP2009521045A (ja) * 2005-12-21 2009-05-28 エヌエックスピー ビー ヴィ ブロック消去可能なメモリ場所を有する不揮発性メモリ
WO2007073536A2 (en) * 2005-12-21 2007-06-28 Sandisk Corporation Non-volatile memories and methods with memory allocation for a directly mapped file storage system
CN101346704B (zh) * 2005-12-22 2011-10-05 Nxp股份有限公司 具有可擦除块单元的存储器和定位具有指针信息地块的联结指针链
US7543116B2 (en) * 2006-01-30 2009-06-02 International Business Machines Corporation Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains
JP2007241539A (ja) * 2006-03-07 2007-09-20 Hitachi Systems & Services Ltd 半導体フラッシュメモリにおけるデータ管理及び制御システムと半導体フラッシュメモリ収容装置
US7562180B2 (en) * 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
TWM304711U (en) * 2006-04-26 2007-01-11 Genesys Logic Inc Flash memory data access reliability enhancing device
US8060718B2 (en) * 2006-06-20 2011-11-15 International Business Machines Updating a memory to maintain even wear
JP2008004196A (ja) * 2006-06-23 2008-01-10 Toppan Printing Co Ltd 半導体メモリ装置
KR100758301B1 (ko) * 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
KR20080017982A (ko) * 2006-08-23 2008-02-27 삼성전자주식회사 플래시 메모리 시스템 및 그 프로그램 방법
US7774392B2 (en) 2006-09-15 2010-08-10 Sandisk Corporation Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order
US7779056B2 (en) 2006-09-15 2010-08-17 Sandisk Corporation Managing a pool of update memory blocks based on each block's activity and data order
US7949846B2 (en) * 2006-11-30 2011-05-24 Teradata Us, Inc. Map shuffle-allocation map protection without extra I/O'S using minimal extra disk space
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
KR20090102789A (ko) 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US7515500B2 (en) * 2006-12-20 2009-04-07 Nokia Corporation Memory device performance enhancement through pre-erase mechanism
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
KR100869675B1 (ko) * 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
US7716230B2 (en) * 2007-02-07 2010-05-11 International Business Machines Corporation Multi-dimensional serial containment process
US8370715B2 (en) * 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
EP2000913A1 (en) 2007-06-08 2008-12-10 Axalto SA Method of managing flash memory allocation in an electronic token
US7630246B2 (en) * 2007-06-18 2009-12-08 Micron Technology, Inc. Programming rate identification and control in a solid state memory
TWI578330B (zh) * 2007-10-09 2017-04-11 A-Data Technology Co Ltd Solid state semiconductor storage device with temperature control function and control method thereof
KR101391881B1 (ko) * 2007-10-23 2014-05-07 삼성전자주식회사 멀티-비트 플래시 메모리 장치 및 그것의 프로그램 및 읽기방법
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
JP4729062B2 (ja) * 2008-03-07 2011-07-20 株式会社東芝 メモリシステム
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
US8140739B2 (en) 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
TWI380310B (en) * 2008-09-17 2012-12-21 Incomm Technologies Co Ltd Operating method of memory card
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
WO2010043245A1 (de) * 2008-10-13 2010-04-22 Hyperstone Gmbh Verfahren zur sicherung eines ankerblocks in flashspeichern
TWI413984B (zh) * 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
US9063874B2 (en) 2008-11-10 2015-06-23 SanDisk Technologies, Inc. Apparatus, system, and method for wear management
US9170897B2 (en) 2012-05-29 2015-10-27 SanDisk Technologies, Inc. Apparatus, system, and method for managing solid-state storage reliability
US8516343B2 (en) * 2008-11-10 2013-08-20 Fusion-Io, Inc. Apparatus, system, and method for retiring storage regions
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
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
KR101760144B1 (ko) 2009-01-05 2017-07-31 샌디스크 테크놀로지스 엘엘씨 비휘발성 메모리 및 기록 캐시를 분할하는 방법
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US8924661B1 (en) * 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
JP5384965B2 (ja) * 2009-02-23 2014-01-08 サトーホールディングス株式会社 プリンタ装置
TWI419169B (zh) * 2009-04-10 2013-12-11 Phison Electronics Corp 用於快閃記憶體的資料存取方法及其儲存系統與控制器
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
WO2011005665A1 (en) * 2009-07-10 2011-01-13 Aplus Flash Technology, Inc. Novel high speed high density nand-based 2t-nor flash memory design
TWI421871B (zh) * 2009-11-27 2014-01-01 Macronix Int Co Ltd 定址一記憶積體電路之方法與裝置
US8176234B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
US8176235B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US8144512B2 (en) 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8468294B2 (en) 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
FR2954572B1 (fr) * 2009-12-23 2020-04-17 Thales Procede de gestion de donnees tournantes.
FR2954538B1 (fr) * 2009-12-23 2020-04-17 Thales Securisation de l'effacement d'une memoire de type flashprom.
US8429391B2 (en) 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
US8543757B2 (en) 2010-06-23 2013-09-24 Sandisk Technologies Inc. Techniques of maintaining logical to physical mapping information in non-volatile memory systems
US8417876B2 (en) 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
US20120008414A1 (en) * 2010-07-06 2012-01-12 Michael Katz Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8832507B2 (en) * 2010-08-23 2014-09-09 Apple Inc. Systems and methods for generating dynamic super blocks
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
JP5221699B2 (ja) * 2011-03-23 2013-06-26 株式会社東芝 半導体記憶装置
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
US9406346B2 (en) 2011-06-30 2016-08-02 Sandisk Technologies Llc Smart bridge for memory core
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
US9009436B2 (en) 2011-08-09 2015-04-14 SanDisk Technologies, Inc. Flushed data alignment with physical structures
CN102298555B (zh) * 2011-08-22 2016-04-27 宜兴市华星特种陶瓷科技有限公司 基于nand技术的模块化闪存管理系统
US8874935B2 (en) 2011-08-30 2014-10-28 Microsoft Corporation Sector map-based rapid data encryption policy compliance
US9208070B2 (en) 2011-12-20 2015-12-08 Sandisk Technologies Inc. Wear leveling of multiple memory devices
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US8842473B2 (en) 2012-03-15 2014-09-23 Sandisk Technologies Inc. Techniques for accessing column selecting shift register with skipped entries in non-volatile memories
US9792192B1 (en) 2012-03-29 2017-10-17 Amazon Technologies, Inc. Client-side, variable drive health determination
US8972799B1 (en) 2012-03-29 2015-03-03 Amazon Technologies, Inc. Variable drive diagnostics
US8719320B1 (en) 2012-03-29 2014-05-06 Amazon Technologies, Inc. Server-side, variable drive health determination
US9037921B1 (en) * 2012-03-29 2015-05-19 Amazon Technologies, Inc. Variable drive health determination and data placement
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
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
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling 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
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim 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
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
CN103197943A (zh) * 2013-04-11 2013-07-10 航天科工深圳(集团)有限公司 一种单片机在线升级方法和系统
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US20140344570A1 (en) 2013-05-20 2014-11-20 Microsoft Corporation Data Protection For Organizations On Computing Devices
US9235470B2 (en) 2013-10-03 2016-01-12 SanDisk Technologies, Inc. Adaptive EPWR (enhanced post write read) scheduling
US9436823B1 (en) * 2013-12-17 2016-09-06 Google Inc. System and method for detecting malicious code
US10615967B2 (en) 2014-03-20 2020-04-07 Microsoft Technology Licensing, Llc Rapid data protection for storage devices
US9804922B2 (en) 2014-07-21 2017-10-31 Sandisk Technologies Llc Partial bad block detection and re-use using EPWR for block based architectures
US9825945B2 (en) 2014-09-09 2017-11-21 Microsoft Technology Licensing, Llc Preserving data protection with policy
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9853812B2 (en) 2014-09-17 2017-12-26 Microsoft Technology Licensing, Llc Secure key management for roaming protected content
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
US9900295B2 (en) 2014-11-05 2018-02-20 Microsoft Technology Licensing, Llc Roaming content wipe actions across devices
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US10884945B2 (en) 2015-06-30 2021-01-05 International Business Machines Corporation Memory state indicator check operations
US10248418B2 (en) 2015-06-30 2019-04-02 International Business Machines Corporation Cleared memory indicator
US9853820B2 (en) 2015-06-30 2017-12-26 Microsoft Technology Licensing, Llc Intelligent deletion of revoked data
US10635307B2 (en) 2015-06-30 2020-04-28 International Business Machines Corporation Memory state indicator
US9900325B2 (en) 2015-10-09 2018-02-20 Microsoft Technology Licensing, Llc Passive encryption of organization data
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
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
US20170344262A1 (en) * 2016-05-25 2017-11-30 SK Hynix Inc. Data processing system and method for operating the same
US10120583B2 (en) * 2016-06-07 2018-11-06 Facebook, Inc. Performance penalty avoidance for solid state drive
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
KR102270103B1 (ko) * 2017-07-11 2021-06-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10416899B2 (en) * 2018-02-13 2019-09-17 Tesla, Inc. Systems and methods for low latency hardware memory management
US11372812B2 (en) * 2018-10-08 2022-06-28 Silicon Motion, Inc. Mobile device and method capable of earlier determining that a number of files in a directory of an external connected storage device is about to full
CN111414248B (zh) * 2019-01-04 2023-03-21 阿里巴巴集团控股有限公司 内存管理方法、装置及计算设备
US11847333B2 (en) * 2019-07-31 2023-12-19 EMC IP Holding Company, LLC System and method for sub-block deduplication with search for identical sectors inside a candidate block
FR3101974B1 (fr) * 2019-10-15 2021-09-10 Continental Automotive Procédé d’aide à l’identification de secteurs vierges d’une mémoire non-volatile d’un microcontrôleur
CN111061649B (zh) * 2019-10-28 2023-09-29 宁波三星智能电气有限公司 一种存储器的存储空间自适应分配方法
US11403020B2 (en) * 2019-10-31 2022-08-02 Hewlett Packard Enterprise Development Lp Increasing sizes of buckets of a fingerprint index
US11922011B2 (en) * 2021-09-01 2024-03-05 Micron Technology, Inc. Virtual management unit scheme for two-pass programming in a memory sub-system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0617363B1 (en) * 1989-04-13 2000-01-26 SanDisk Corporation Defective cell substitution in EEprom array
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
JP2582487B2 (ja) * 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
JP3407317B2 (ja) * 1991-11-28 2003-05-19 株式会社日立製作所 フラッシュメモリを使用した記憶装置
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JPH08137634A (ja) * 1994-11-09 1996-05-31 Mitsubishi Electric Corp フラッシュディスクカード
JP3706167B2 (ja) * 1995-02-16 2005-10-12 株式会社ルネサステクノロジ 半導体ディスク装置
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
GB2291990A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system
JPH09212411A (ja) * 1996-02-06 1997-08-15 Tokyo Electron Ltd メモリシステム
GB9606928D0 (en) * 1996-04-02 1996-06-05 Memory Corp Plc Memory devices
US5896393A (en) * 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
US5745418A (en) * 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
JP3072722B2 (ja) * 1997-06-20 2000-08-07 ソニー株式会社 フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体
JPH11212873A (ja) * 1998-01-27 1999-08-06 Seiko Epson Corp コンピューターシステムの操作方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101172071B1 (ko) * 2004-11-18 2012-08-10 소니 주식회사 통신 시스템, 기억 장치 및 제어 장치
KR100776112B1 (ko) * 2006-02-15 2007-11-15 삼성전자주식회사 휴대단말기의 부팅 시간 단축방법
US7836270B2 (en) 2006-02-15 2010-11-16 Samsung Electronics Co., Ltd Method of improving the detection of opening and method for reducing the booting time of a wireless terminal
KR101446832B1 (ko) * 2008-02-04 2014-10-07 애플 인크. 메모리 맵핑 기술
KR101038167B1 (ko) * 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법

Also Published As

Publication number Publication date
DE60019903T2 (de) 2006-03-30
JP2002537596A (ja) 2002-11-05
EP1157328A1 (en) 2001-11-28
DE60019903D1 (de) 2005-06-09
KR100644805B1 (ko) 2006-11-13
TWI244092B (en) 2005-11-21
EP1157328B1 (en) 2005-05-04
WO2000049488A1 (en) 2000-08-24
JP5011498B2 (ja) 2012-08-29
GB9903490D0 (en) 1999-04-07
US6725321B1 (en) 2004-04-20

Similar Documents

Publication Publication Date Title
US6725321B1 (en) Memory system
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US9489301B2 (en) Memory systems
KR101076830B1 (ko) 비휘발성 메모리에 부분적 블럭 데이터 프로그래밍 및 판독작동
US7783845B2 (en) Structures for the management of erase operations in non-volatile memories
US7624239B2 (en) Methods for the management of erase operations in non-volatile memories
KR960004738B1 (ko) 불휘발성 반도체 메모리 장치
KR101573370B1 (ko) 비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템
US6906961B2 (en) Erase block data splitting
US8041884B2 (en) Controller for non-volatile memories and methods of operating the memory controller
JP4933269B2 (ja) 不揮発性メモリおよびメモリプレーン配列を伴う方法
WO2001061703A2 (en) Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP2007520842A (ja) マルチブロック単位へのブロックの適応決定論的グループ化
US20100306447A1 (en) Data updating and recovering methods for a non-volatile memory array
JP4460967B2 (ja) メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
KR100932801B1 (ko) 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체
WO2006093304A1 (en) Storage device, memory block managing method, and program

Legal Events

Date Code Title Description
N231 Notification of change of applicant
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120928

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131022

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141021

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20191023

Year of fee payment: 14