KR101089150B1 - 스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리 - Google Patents

스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리 Download PDF

Info

Publication number
KR101089150B1
KR101089150B1 KR1020087005059A KR20087005059A KR101089150B1 KR 101089150 B1 KR101089150 B1 KR 101089150B1 KR 1020087005059 A KR1020087005059 A KR 1020087005059A KR 20087005059 A KR20087005059 A KR 20087005059A KR 101089150 B1 KR101089150 B1 KR 101089150B1
Authority
KR
South Korea
Prior art keywords
data
host
memory
blocks
block
Prior art date
Application number
KR1020087005059A
Other languages
English (en)
Other versions
KR20080042851A (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
Priority claimed from US11/259,423 external-priority patent/US7409489B2/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20080042851A publication Critical patent/KR20080042851A/ko
Application granted granted Critical
Publication of KR101089150B1 publication Critical patent/KR101089150B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable

Abstract

비휘발성 메모리 어레이에서, 소거된 블록들의 부족이 초래되기 전 발생할 리클레임 작동들의 스케쥴링은 시간 제한을 초과할 수 있는 리클레임의 연장된 기간들을 피한다. 메모리 제어기는 메모리 어레이에 저장된 데이터에 관한 정보를 이용하여 프로그램될 수 있는 부가적인 호스트 데이터와 수행될 리클레임 작동들을 추정하고 메모리가 채워질 때까지 기록 작동들 간에 균일하게 분산되도록 리클레임 작동들을 스케쥴링 한다.
비휘발성 메모리 어레이, 리클레임 작동, 호스트 데이터, 기록 작동, 스케쥴링

Description

스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리{NON-VOLATILE MEMORY WITH SCHEDULED RECLAIM OPERATIONS}
본 출원은 반도체 플래시 메모리와 같은 재프로그램가능한 비휘발성 메모리 시스템들의 작동에 관한 것이며, 특히 이와 같은 메모리들 내에서 이용가능한 공간의 관리에 관한 것이다. 본원에 참조된 모든 특허들, 특허 출원들, 논문들 및 다른 공개들, 문서들은 모든 목적들을 위하여 전반적으로 본원에 참조되어 있다.
초창기 상업용 플래시 메모리 시스템들에서, 메모리 셀들의 직사각형 어레이는 표준 디스크 드라이브 섹터의 데이터 양, 즉 512 바이트들을 각각 저장하는 많은 수의 셀들의 그룹들로 분할된다. 16 바이트들과 같은 부가적인 데이터 양은 또한 통상적으로 각 그룹에 포함되어 사용자 데이터 및/또는 이를 저장하는 메모리 셀 그룹에 관한 가능한 다른 오버헤드 데이터 및 에러 보정 코드(ECC)를 저장한다. 각 이와 같은 그룹 내 메모리 셀들은 함께 소거가능한 최소수의 메모리 셀들이다. 즉, 이와 같은 메모리 시스템들에서, 소거 유닛은 유효하게는, 포함된 임의의 오버헤드 데이터 및 하나의 데이터 섹터를 저장하는 메모리 셀들의 수이다. 이 유형의 메모리 시스템의 예들은 미국 특허 5,602,987 및 6,426,893에 기재되어 있다. 플래시 메모리의 특성은 메모리 셀들이 데이터로 재프로그래밍하기 전 소거되어야만 한다는 것이다.
플래시 메모리 시스템들은 가장 보편적으로 개인용 컴퓨터, 카메라 등과 같은 다양한 호스들과 탈착가능하게 연결된 메모리 카드 또는 플래시 드라이브 형태로 제공되지만, 또한 이와 같은 호스트 시스템들 내에서 내장될(embedded) 수 있다. 데이터를 메모리에 기록할 때, 호스트는 전형적으로 특정 논리적 어드레스들을 메모리 시스템의 연속적인 가상 어드레스 공간 내에서 데이터의 섹터들, 클러스터들 또는 다른 유닛들로 할당한다. 디스크 운영 시스템(DOS)처럼, 호스트는 메모리 시스템의 논리적 어드레스 공간 내의 어드레스들에 데이터를 기록하고 이 어드레스들로부터 데이터를 판독한다. 메모리 시스템 내의 제어기는 데이터가 실제로 저장되는 호스트로부터 수신된 논리적 어드레스들을 메모리 어레이 내의 물리적 어드레스들로 번역(translate)하고, 그 다음, 이들 어드레스 번역들을 추적한다. 메모리 시스템의 데이터 저장 용량은 메모리 시스템에 대해서 규정된 전체 논리적 어드레스 공간에 걸쳐서 어드레스가능한 데이터 양만큼 적어도 크다.
다음 세대의 플래시 메모리 시스템들에서, 소거 유닛의 크기는 충분한 메모리 셀들의 블록까지 증가되어 데이터의 다수의 섹터들을 저장한다. 메모리 시스템들이 연결되는 호스트 시스템들이 섹터들과 같이 소규모 최소 단위들로 데이터를 프로그램 및 판독할 수 있을지라도, 많은 수의 섹터들이 플래시 메모리의 단일 소거 유닛에 저장된다. 블록 내의 데이터의 일부 섹터들이 호스트가 갱신되거나 데이터의 논리적 섹터들을 대체하기 때문에 무용인(obsolete) 것이 통상적이다. 블록에 저장된 임의의 데이터가 중복기록(overwritten)될 수 있기 전 전체 블록이 소거되 어야만 하기 때문에, 새로운 또는 갱신된 데이터는 전형적으로 소거되고 데이터를 위한 잔여 용량을 갖는 또 다른 블록에 저장된다. 이 프로세스는 메모리 내에 귀중한 공간을 취하는 무용(obsolete) 데이터를 갖는 원래 블록을 남겨둔다. 그러나, 이 블록은 그 내에 남아있는 임의의 유효 데이터가 존재하면 소거될 수 없다.
그러므로, 메모리의 저장 용량을 더욱 양호하게 이용하기 위하여, 데이터를 소거된 블록으로 카피함으로써 데이터의 유효 부분 블록 양들을 통합하거나 수집함으로써, 이들 데이터가 카피되는 블록(들)이 소거되고 전체 이들 전체 저장 용량이 재사용되도록 한다. 이 방식으로, 유효 데이터를 포함하지 않는 메모리 내 공간은 리클레임됨으로써, 이 공간은 데이터를 저장하도록 사용될 수 있게 된다. 논리적인 어드레스들의 순서로 블록 내 데이터 섹터들을 그룹화하기 위하여 데이터를 카피하는 것이 바람직한데, 그 이유는 이것이 데이터의 판독 및 판독 데이터를 호스트로 전달하는 속도를 증가시키기 때문이다. 이와 같은 데이터 카피가 너무 빈번하게 발생되면, 메모리 시스템의 작동 성능은 저하될 수 있다. 특히, 이는 전형적인 경우 메모리의 저장 용량이 시스템의 논리적 어드레스 공간을 통해서 호스트에 의해 어드레스가능한 데이터 양보다 약간 많은 메모리 시스템들의 작동에 영향을 미친다. 이 경우에, 데이터 콘솔리데이션(consolidation) 또는 콜렉션(collection)은 호스트 프로그래밍 명령이 실행될 수 있기 전에 필요로 될 수 있다. 그 후, 이 프로그래밍 시간은 증가된다.
블록들의 크기들은 이어진 세대들의 메모리 시스템들에서 증가시켜 소정 반도체 에어리어에 저장될 수 있는 데이터 비트들의 수를 증가시킨다. 256개의 데이 터 섹터들 이상을 저장하는 블록들은 보편적이 되고 있다. 게다가, 상이한 어레이들 또는 서브-어레이들의 2개, 4개 이상의 블록들은 종종 메타블록들에 함께 논리적으로 링크되어 데이터 프로그래밍 및 판독시 병렬화 정도를 증가시킨다. 이와 같은 대용량 작동 유닛들과 더불어 이들을 효율적으로 작동시에 문제가 된다.
그러므로, 비휘발성 메모리에 저장된 데이터의 관리를 개선시킬 필요가 있다. 유효 데이터를 포함하는 것이 아니라 새로운 유효 데이터의 저장에 현재 이용될 수 없는 효율적으로 리클레임하는 메모리 공간의 시스템이 필요로 된다. 또한, 호스트 데이터의 프로그래밍과 같은 다른 메모리 작동들에 거의 또는 전혀 나쁜 영향을 미치지 않는 방식으로 리클레임 작동들을 실행하는 시스템이 필요로 된다.
메모리가 소거된 블록들 중에서 실행되기 전 메모리 어레이 내 리클레임하는 공간은 시간 제한을 초과할 수 있는 호스트 데이터를 프로그래밍 시 심각한 지연의 위험을 피할 수 있다. 메모리 어레이 내 공간은 채워질 때까지 메모리가 소거된 블록들에서 실행되지 않도록 보장하는 방식으로 호스트 데이터로 채워지기 때문에 리클레임된다. 리클레임은 소거된 블록들이 부족하기 전 리클레임을 길게 시작하는 스케쥴에 따라서 수행될 수 있다. 이 리클레임 작동들은 인터리브 비(interleave ratio)에 따라서 호스트 데이터의 기록과 인터리빙되도록 함으로써, 리클레임 작동들이 긴 연속적인 버스트에서 행해지는 대신에 연장된 기간에 걸쳐서 확산되도록 한다. 인터리브 비는 모든 나머지 호스트 기록들 대 모든 나머지 리클레임 기록들의 비가 되도록 계산된다.
파일-기반으로 한 호스트 인터페이스가 메모리를 호스트에 연결하는 경우, 메모리 제어기는 메모리 어레이에 저장된 데이터에 관한 정확한 최근 정보를 가질 수 있고 메모리가 채워지기 전 메모리에 기록될 수 있는 부가적인 호스트 데이터 량 및 메모리가 채워지기 전 필요로 되는 리클레임의 양으로부터 적절한 인터리브 비를 추정할 수 있다. 나머지 시간 전체에 걸쳐서 리클레임 작동들을 균일하게 확산시킴으로써, 호스트 데이터의 프로그래밍의 일정한 레이트가 성취된다. 섹터-기반으로 한 또는 다른 인터페이스들을 갖는 메모리들에서, 정보는 이와 같은 추정들이 행해지도록 호스트에 의해 제공될 수 있음으로써, 인터리브 비가 유사하게 계산될 수 있도록 한다.
인터리브 비는 때때로 또는 호스트에 의해 일부 저장된 데이터의 삭제와 같은 트리거링 이벤트가 있을 경우에 계산될 수 있다. 따라서, 인터리브 비는 적절하게 갱신됨으로써, 이 비는 변화하는 환경들에 적응되도록 한다.
리클레임은 상이한 모드들로 상이하게 관리될 수 있다. 기록될 호스트 데이터 및 행해질 리클레임 작동들의 추정들을 토대로 한 적응형 리클레임 이외에도, 최소 리클레임 모드가 존재할 수 있는데, 이 모드에서 공간은 어떤 낮은 (또는 제로) 레이트에서 리클레임 된다. 전형적으로, 최소 리클레임 모드는 리클레임가능한 공간과 비교하여 적절한 소거된 블록들이 존재하는 경우에 적용된다. 또한 최대 리클레임 모드가 있을 수 있는데, 이 모드에서 공간은 어떤 최대 레이트에서 인터리브된 방식으로 리클레임된다. 전형적으로, 최대 리클레임 모드는 몇 개의 소거된 블록들이 존재하는 경우에, 즉 메모리가 거의 채워질 때 일반적으로 발생되는 상황이 존재하는 경우에 적용된다. 게다가, 리클레임은 호스트 명령에 응답하여 연속적인 방식으로(인터리빙되지 않음) 행해질 수 있다. 리클레임은 또한 호스트 명령에 응답하여 금지될 수 있다.
도1은 현재 구현되는 바에 따라서 호스트 및 연결된 비휘발성 메모리 시스템을 개요적으로 도시한 도면.
도2는 도1의 비휘발성 메모리로서 사용하기 위한 예의 플래시 메모리 시스템의 블록도.
도3은 도2의 시스템에 사용될 수 있는 메모리 셀 어레이의 대표적인 회로도.
도4는 도2의 시스템의 예의 물리적 메모리 조직을 도시한 도면.
도5는 도4의 물리적 메모리의 일부의 확대도.
도6은 도4 및 도5의 물리적 메모리의 일부의 더욱 확대된 도면.
도7은 호스트 및 재프로그램가능한 메모리 시스템 간의 공통 논리적 어드레스 인터페이스를 도시한 도면.
도8A 및 도8B는 비휘발성 메모리에서 가비지 콜렉션의 예를 도시한 도면.
도9A 및 도9B는 비휘발성 메모리에서 가비지 콜렉션의 또 다른 예를 도시한 도면.
도10A 및 도10B는 비휘발성 메모리에서 콤팩트화(compaction)의 예를 도시한 도면.
도11A 및 도11B는 비휘발성 메모리에서 콘솔리데이션의 예를 도시한 도면.
도12는 파일이 도7의 인터페이스를 이용하여 비휘발성 메모리에 저장된 호스트 애플리케이션에 의한 파일의 삭제를 도시한 도면.
도13은 비휘발성 메모리 내 공간이 어떻게 관리되는지의 예를 도시한 도면.
도14는 비휘발성 메모리 내 공간이 어떻게 관리될 수 있는지의 또 다른 예를 도시한 도면.
도15는 인터리빙된 호스트 기록 작동들 및 가비지 콜렉션 작동들을 도시한 도면.
도16은 호스트로의 파일 기반으로 한 인터페이스를 갖는 비휘발성 메모리를 도시한 도면.
도17은 파일이 도16의 인터페이스를 이용하여 비휘발성 메모리에 저장된 경우에 호스트 애플리케이션에 의한 파일의 삭제를 도시한 도면.
도18은 파일-기반으로 한 인터페이스를 갖는 비휘발성 메모리에서 공간 관리의 예를 도시한 도면.
도19는 파일-기반으로 한 인터페이스를 갖는 비휘발성 메모리에서 공간 관리의 또 다른 예를 도시한 것으로써, 이 예는 메모리 어레이가 채워질 때까지 호스트 데이터의 프로그램의 일정한 레이트를 제공하는 것을 도시한 도면.
도20은 파일 삭제에 응답하여 적응하는 리클레임의 적응형 스케쥴링을 갖는 파일-기반으로 한 인터페이스를 갖는 비휘발성 메모리에서 공간 관리의 또 다른 예를 도시한 도면.
도21은 3개의 모드들로 파일-기반으로 한 인터페이스를 갖는 비휘발성 메모 리에서 공간 관리의 또 다른 예를 도시한 것으로써, 초기 모드는 최소 리클레임 레이트를 가지며, 적응형 모드는 적응적으로 스케쥴링된 리클레임 레이트를 가지고 최종 모드는 최대 리클레임 레이트를 갖는 것을 도시한 도면.
도22는 각종 조건들에서 메모리 어레이의 부분들을 포함하는 파일-기반으로 한 인터페이스를 갖는 비휘발성 메모리에서 공간 관리 및 이들 조건들 간의 가능한 데이터 전이들의 상세한 도면.
도23A 내지 도23D는 도22의 전이들에 대응하는 전이들을 겪는 데이터를 포함하는 메모리 어레이의 블록들을 도시한 도면.
현재 플래시 메모리 시스템 및 호스트 장치들의 전형적인 작동은 도1 내지 8과 관련하여 설명된다. 이와 같은 시스템에서 본 발명의 각종 양상들이 구현될 수 있다. 도1의 호스트 시스템(1)은 플래시 메모리(2)로 데이터를 저장하고 이 메모리로부터 데이터를 검색한다. 플래시 메모리가 호스트 내에서 내장될 수 있지만, 메모리(2)는 기계적 및 전기적 커넥터의 메이팅 파트들(3 및 4)를 통해서 호스트에 탈착가능하게 연결되는 카드의 더욱 대중적인 형태가 되도록 도시된다. 상업적으로 이용가능한 현재 많은 상이한 플래시 메모리 카드들이 존재하는데, 예를 들어 CompactFlash(CF), the MultiMediaCard(MMC), Secure Digital(SD), miniSD, Memory Stick, SmartMedia 및 TransFlash 카드들을 들 수 있다. 이들 카드들 각각이 표준화된 사양들에 따라서 특정 기계적 및/또는 전기적 인터페이스를 갖지만, 각각에 포함되는 플래시 메모리는 매우 유사하다. 이들 카드들은 모두 본 출원인의 양수인 인 SanDisk Corporation으로부터 모두 입수될 수 있다. SanDisk는 또한 Cruzer 상표의 플래시 드라이브들의 라인을 제공하는데, 이는 호스트의 USB 리셉터클로 플러깅됨으로써 호스트와 연결되기 위한 유니버셜 시리얼 버스(USB) 플러그를 갖는 소규모 패키지들의 휴대용 메모리 시스템들이다. 이들 메모리 카드들 및 플래시 드라이브들 각각은 이들 내에서 플래시 메모리의 호스트 및 제어 작동과 인터페이스하는 제어기들을 포함한다.
이와 같은 메모리 카드들 및 플래시 드라이브들을 사용하는 호스트 시스템들은 많고 변화된다. 이들은 개인용 컴퓨터들(PCs), 랩톱 및 다른 휴대용 컴퓨터들, 셀룰러 전화들, 개인 디지털 어시스턴트들(PDAs), 디지털 스틸 카메라들, 디지털 영화 카메라들 및 휴대용 오디오 플레이어들을 포함한다. 이 호스트는 전형적으로 한 가지 이상의 유형들의 메모리 카드들 또는 플래시 드라이브들을 위한 내장 리셉터클을 포함하지만 일부는 메모리 카드가 플러그링되는 어댑터들을 필요로 한다.
도1의 호스트 시스템은 메모리 (2)와 관련되는 한 회로 및 소프트웨어의 조합으로 이루어진 2개의 주요 파트들을 갖는 것으로써 간주될 수 있다. 이들은 메모리(2)와 인터페이스하는 애플리케이션 부(5) 및 드라이버 부(6)이다. 예를 들어, 개인용 컴퓨터에서, 애플리케이션 부(5)는 워드 프로세싱, 그래픽들, 제어 또는 다른 대중적인 애플리케이션 소프트웨어를 실행하는 프로세서를 포함할 수 있다. 기능들의 단일 세트를 수행하는데 주로 전용되는 카메라, 셀룰러 전화 또는 다른 호스트 시스템에서, 애플리케이션 부(5)는 카메라가 사진들을 찍고 저장하도록 하는 작동, 셀룰러 전화가 호출들을 행하고 수신하도록 하는 작동, 등을 하도록 하는 소 프트웨어를 포함한다.
도1의 메모리 시스템(2)은 데이터를 앞 뒤로 통과시키도록 카드가 연결되는 호스트와 인터페이스하고 메모리(7)를 제어하는 플래시 메모리(7) 및 회로들(8)을 포함한다. 제어기(8)는 데이터 프로그래밍 및 판독 동안 호스트(1)에 의해 사용되는 데이터의 논리적 어드레스들 및 메모리(7)의 물리적 어드레스들 간에서 전형적으로 변환한다.
도2를 참조하면, 도1의 비휘발성 메모리(2)로서 사용될 수 있는 전형적인 플래시 메모리 시스템의 회로가 설명된다. 이 시스템 제어기는 통상적으로 도2에 도시된 메모리 칩(15)과 같은 단일의 시스템 버스(13)를 통해서 하나 이상의 집적 회로 메모리 칩들과 병렬로 연결되는 단일 집적 회로 칩(11) 상에 구현된다. 도시된 특정 버스(13)는 데이터를 캐리(carry)하기 위한 별도의 세트 또는 컨덕터들(17), 메모리 어드레스들을 위한 세트(19) 및 제어 및 상태 신호들을 위한 세트(21)를 포함한다. 대안적으로, 컨덕터들의 단일 세트는 이들 3개의 기능들 간에 시간 공유될 수 있다. 게다가, 발명의 명칭이 "Ring Bus Structure and Its Use in Flash Memory Systems"인 2004년 8월 9일에 출원된 미국 특허 출원 일련 번호 10/915,039에 설명된 링 버스와 같은 시스템 버스들의 다른 구성들이 사용될 수 있다.
전형적인 제어기 칩(11)은 인터페이스 회로들(25)을 통해서 시스템 버스(13)와 인터페이스하는 자체 내부 버스(23)를 갖는다. 버스에 통상적으로 연결되는 1차 기능들은 프로세서(27)(가령 마이크로프로세서 또는 마이크로제어기), 시스템을 초기화("부트")하기 위한 코드를 포함하는 판독 전용 메모리(ROM)(29), 메모리 및 호 스트 간에 전달되는 데이터를 버퍼링하기 위하여 1차적으로 사용되는 랜덤 액세스 메모리(RAM)(31) 및 메모리 및 호스트 간의 제어기를 통과하는 데이터를 위한 에러 보정 코드(ECC)를 계산하고 검사하는 회로(33)들이다. 제어기 버스(23)는 회로들(35)을 통해서 호스트 시스템과 인터페이스하는데, 이는 메모리 카드 내에 포함되는 도2의 시스템의 경우에 커넥터(4)의 부분인 카드의 외부 접촉부들(37)을 통해서 행해진다. 클럭(39)은 제어기(11)의 다른 구성요소들 각각과 연결되고 이에 의해 사용된다.
메모리 칩(15) 뿐만 아니라 시스템 버스(13)와 연결되는 어떤 다른 것은 전형적으로 다수의 서브-어레이들 또는 플레인들로 조직되는 메모리 셀들의 어레이를 포함하는데, 2개의 이와 같은 플레인들(41 및 43)은 간결성을 위하여 도시되었지만 그 이상 가령 4개 또는 8개의 이와 같은 플레인들이 대신 사용될 수 있다. 대안적으로, 칩(15)의 메모리 셀 어레이는 플레인들로 분할될 수 없다. 그라나, 이와 같이 분할될 때, 각 플레인은 서로 관계없이 작동될 수 있는 자체 칼럼 제어 회로들(45 및 47)를 갖는다. 이 회로들(45 및 47)은 시스템 버스(13)의 어드레스 부(19)로부터 각 메모리 셀 어레이의 어드레스들을 수신하고 이들을 디코딩하여 각 비트 라인들(49 및 51)중 특정 하나 이상의 라인들을 어드레스한다. 워드 라인들(53)은 어드레스 버스(19) 상에 수신되는 어드레스들에 응답하여 로우(row) 제어 회로들(55)을 통해서 어드레스된다. 소스 전압 제어 회로들(57 및 59)은 또한, p-웰 전압 제어 회로들(61 및 63)인 것처럼 각 플레인들과 연결된다. 메모리 칩(15)이 메모리 셀들의 단일 어레이를 갖고 2개 이상의 이와 같은 칩들이 시스템에 존재 하면, 각 칩의 어레이는 상술된 다중-플레인 칩 내의 플레인 또는 서브-어레이와 유사하게 작동될 수 있다.
데이터는 시스템 버스(13)의 데이터 부(17)와 연결되는 각 데이터 입력/출력 회로들(65 및 67)을 통해서 플레인들(41 및 43)내로 그리고 밖으로 전달된다. 회로들(65 및 67)은 각 칼럼 제어 회로들(45 및 47)을 통해서 플레인들에 연결되는 라인들(69 및 71)을 통해서 메모리 셀들로 데이터를 프로그램하고 각 플레인들의 메모리 셀들로부터 데이터를 판독하기 위하여 제공된다.
제어기(11)가 데이터를 프로그램하며, 데이터를 판독하고 소거하여, 각종 하우스키핑 문제들(housekeeping matters)에 주의를 기울이도록 메모리 칩(15)의 작동을 제어하지만, 각 메모리 칩은 또한 이와 같은 기능들을 수행하도록 제어기(11)로부터 명령들을 실행하는 일부 제어 회로를 포함한다. 인터페이스 회로들(73)은 시스템 버스(13)의 제어 및 상태부(21)에 연결된다. 제어기로부터의 명령들은 상태기계(75)에 제공되며, 그 후 이 상태 기계는 이들 명령들을 실행하도록 다른 회로들의 특정 제어를 제공한다. 제어 라인들(77-81)은 도2에 도시된 바와 같이 상태 기계(75)를 이들 다른 회로들과 연결한다. 상태 기계(75)로부터의 상태 정보는 버스 부(21)를 통해서 제어기(11)로 전송하기 위하여 라인들(83)을 통해서 인터페이스(73)에 통신된다.
메모리 셀 어레이들(41 및 43)의 NAND 아키텍쳐는 현재 보편적이지만, NOR과 같은 다른 아키텍쳐들이 대신 사용될 수 있다. 메모리 시스템의 부분으로서 NAND 플래시 메모리들 및 이들의 작동의 예들은 미국 특허 5,570,315, 5,774,397, 6,046,935, 6,373,746, 6,456,528, 6,522,580, 6,771,536, 및 6,781,877, 및 미국 특허 출원 공개 2003/0147278에 참조되어 있다.
NAND 어레이의 예는 도3의 회로도로 도시되어 있는데, 이 도면은 도2의 메모리 시스템의 메모리 셀 어레이(41)의 일부이다. 많은 수의 글로벌 비트 라인들이 제공되어 있는데, 단지 4개의 이와 같은 라인들(91-94)만이 설명의 간결성을 위하여 도2에 도시되어 있다. 다수의 직렬 연결된 메모리 셀 스트링들(97-104)는 이들 비트 라인들 중 하나와 기준 전위 간에 연결된다. 대표적인 것으로써 메모리 셀 스트링(99)을 이용하면, 다수의 전하 저장 메모리 셀들(107-110)은 스트링의 양단에서 선택 트랜지스터들(111 및 112)와 직렬로 연결된다. 스트링의 선택 트랜지스터들이 도통된 것으로 간주될 때, 이 스트링은 자신의 비트 라인 및 기준 전위 간에 연결된다. 그 후, 이 스트링 내의 하나의 메모리 셀은 한 번에 프로그램되거나 판독된다.
도3의 워드 라인들(115-118) 각각은 메모리 셀들의 다수의 스트링들 각각에 하나의 메모리 셀의 전하 저장 소자에 걸쳐서 개별적으로 연장하고, 게이트들(119 및 120)은 스트링들의 각 단부에서 선택 트랜지스터들의 상태들을 제어한다. 공통 워드 및 제어 게이트 라인들(115-120)을 공유하는 메모리 셀 스트링들은 함께 소거되는 메모리 셀들의 블록(123)을 형성하도록 행해진다. 이 셀들의 블록은 물리적으로 한번에 소거될 수 있는 최소 수의 셀들을 포함한다. 워드 라인들(115-118) 중 하나를 따른 메모리 셀들의 한 로우는 한번에 프로그램된다. 전형적으로, NAND 어레이의 로우들은 규정된 순서로 프로그램되는데, 이 경우에 이 순서는 접지 또는 또 다른 공통 전위로 연결되는 스트링들의 단부에 가장 가까운 워드 라인(118)을 따른 로우로 시작한다. 워드 라인(117)을 따른 메모리 셀들의 로우는 블록(123)에 걸쳐서, 다음에 프로그램된다. 워드 라인(115)을 따른 로우는 마지막으로 프로그램된다.
제2 블록(125)은 유사하며, 메모리 셀들의 이의 스트링들은 제1 블록(123) 내의 스트링들과 동일한 글로벌 비트 라인들에 연결되지만 상이한 워드 및 제어 게이트 라인들의 세트를 갖는다. 워드 및 제어 게이트 라인들은 로우 제어 회로들(55)에 의해 적절한 작동 전압들로 구동된다. 도2의 플레인들(1 및 2)와 같이 시스템 내에 하나 이상의 플레인 또는 서브-어레이가 존재하는 경우, 하나의 메모리 아키텍쳐는 이들 간에 연장되는 공통 워드 라인들을 이용한다. 대안적으로, 공통 워드 라인들을 공유하는 2개 이상의 플레인들 또는 서브-어레이들이 존재할 수 있다. 다른 메모리 아키텍쳐에서, 개별 플레인들 또는 서브-어레이들의 워드 라인들은 개별적으로 구동된다.
상기 참조된 여러 NAND 특허들 및 공개된 출원에 서술된 바와 같이, 메모리 시스템은 각 전하 저장 소자 또는 영역 내 2개 이상의 검출가능한 전하 레벨들을 저장하도록 작동됨으로써, 각각에 하나 이상의 데이터 비트를 저장한다. 메모리 셀들의 전하 저장 소자들은 가장 보편적인 도전성 플로우팅 게이트들이지만 대안적으로 미국 특허 출원 공개 번호 2003/0109093에 서술된 바와 같은 비도전성 유전 전하 트랩핑 재료일 수 있다.
도4는 이하의 부가 설명들에서 예로써 사용되는 플래시 메모리 셀 어레 이(7)(도1)의 조직을 개념적으로 도시한다. 메모리 셀들의 4개의 플레인들 또는 서브-어레이들(131-134)은 단일 집적 메모리 셀 칩 상에, 2개의 칩들(각 칩상의 플레인들 중 2개) 또는 4개의 개별적인 칩들 상에 있을 수 있다. 특정 배열은 이하의 설명에 중요하지 않다. 물론, 1, 2, 8, 16 이상과 같은 다른 수들의 플레인들이 시스템에 존재할 수 있다. 이 플레인들은 각 플레인들(131-134)에 위치되는 블록들(137, 138, 139 및 140)와 같은 직사각형들에 의해 도4에 도시된 메모리 셀들의 블록들로 개별적으로 분할된다. 수십 또는 수백 개의 블록들이 각 플레인에 있을 수 있다. 상술된 바와 같이, 메모리 셀들의 블록은 소거 유닛, 즉 함께 물리적으로 소거될 수 있는 최소 수의 메모리 셀들이다. 그러나, 증가된 병렬화를 위하여, 블록들은 더 많은 메타블록 유닛들에서 작동된다. 각 플레인으로부터 하나의 블록은 함께 논리적으로 링크되어 메타블록을 형성한다. 4개의 블록들(137-140)은 하나의 메타블록(141)을 형성하도록 도시된다. 메타블록 내의 셀들 모두는 전형적으로 함께 소거된다. 메타블록을 형성하기 위하여 사용되는 블록들은 블록들(145-148)로 구성되는 제2 메타블록(143)에 도시된 바와 같이 각 플레인들 내의 동일한 상대적인 위치들로 제한될 필요가 없다. 높은 시스템 성능을 위하여, 통상적으로 모든 플레인들에 걸쳐서 메타블록들을 연장하는 것이 바람직하지만, 메모리 시스템은 상이한 플레인들에서 하나, 둘 또는 세개의 블록들의 임의의 블록 또는 모든 블록의 메타블록들을 동적으로 형성하기 위한 능력을 가진 채 작동될 수 있다. 이는 메타블록의 크기가 하나의 프로그래밍 작동에 저장에 이용될 수 있는 데이터 량과 더욱 밀접하게 정합되도록 한다.
개별적인 블록들은 도5에 도시된 바와 같이 메모리 셀들의 페이지들로 작동 목적을 위하여 차례로 나뉘어진다. 예를 들어, 블록들(131-134) 각각의 메모리 셀들은 8개의 페이지들(P0-P7)로 각각 나뉘어진다. 대안적으로, 각 블록 내에 메모리 셀들의 16, 32 이상의 페이지들이 존재할 수 있다. 이 페이지는 한번에 프로그램되는 최소 데이터 량을 포함하는 블록 내에서 프로그래밍 및 판독하는 데이터 단위이다. 도3의 NAND 아키텍쳐에서, 페이지는 블록 내에 워드 라인을 따라서 메모리 셀들로 형성된다. 그러나, 메모리 시스템 작동 병렬화를 증가시키기 위하여, 2개 이상의 블록들 내의 이와 같은 페이지들은 메타페이지들로 논리적으로 링크된다. 4개의 블록들(131-134) 각각으로부터 하나의 물리적 페이지로 형성되는 메타페이지(151)가 도5에 도시된다. 예를 들어, 메타페이지(151)는 4개의 블록들 각각에 페이지(P2)를 포함하지만 메타페이지의 페이지들은 블록들 각각 내에서 동일한 상대적인 위치를 반드시 가질 필요는 없다. 고 시스템 성능을 위하여 모든 4개의 플레인들에 걸쳐서 병렬로 최대 데이터 량을 프로그램하고 판독하는 것이 바람직하지만, 이 메모리 시스템은 또한 상이한 플레인들에서 개별적인 블록들 내의 하나, 둘, 또는 세 개의 페이지들의 임의의 페이지 또는 모든 페이지의 메타페이지들을 형성하도록 작동될 수 있다. 이는 프로그래밍 및 판독 작동들이 병렬로 간편하게 취급될 수 있는 데이터 량을 적응적으로 정합시키고 메타페이지의 파트가 데이터로 프로그램되지 않은 채로 있을 때의 경우들을 감소시킨다.
도5에 도시된 바와 같은 다수의 플레인들의 물리적 페이지들로 형성된 메타페이지는 이들 다수의 플레인들의 워드 라인 로우들을 따라서 메모리 셀들을 포함 한다. 동시에 하나의 워드 라인 로우에서 셀들 모두를 프로그래밍하는 것보다는 오히려, 이들은 2개 이상의 인터리빙된 그룹들에서 더욱 보편적으로 교호적으로 프로그램되는데, 각 그룹은 데이터 페이지(단일 블록에) 또는 데이터의 메타페이지(다수의 블록들에 걸쳐서) 저장한다. 한번에 교호적인 메모리 셀들을 프로그래밍함으로써, 데이터 레지스터들 및 감지 증폭기를 포함하는 주변 회로들의 유닛은 각 비트 라인에 대해서 제공될 필요가 있는 것이 아니라 인접 비트 라인들 간에서 시간 공유된다. 이는 주변 회로들에 필요로 되는 기판 공간의 량을 절약하고 메모리 셀들이 로우들을 따라서 증가된 밀도로 패킹되도록 한다. 그렇치 않다면, 주어진 메모리 시스템으로부터 이용될 수 있는 병렬화를 최대화하기 위하여 로우를 따라 모든 셀을 동시에 프로그램하도록 하는 것이 바람직하다. 대부분의 데이터 관리 목적을 위하여, 메타블록들 및 메타페이지들은 블록들과 페이지들과 동일한 방식으로 처리될 수 있다. 메타블록들 및 메타페이지들과 관련하여 이 애플리케이션에서 제공된 예들은 일반적으로 또한 소거 및 프로그래밍 단위들 각각으로 블록들 및 페이지들을 이용하여 메모리들에 적용될 수 있다. 유사하게, 블록들 및 페이지들과 관련하여 제공된 예들은 일반적으로 또한 메타블록들 및 메타페이지들을 이용하여 메모리들에 적용될 수 있다.
매우 큰 소거 블록들을 갖는 메모리 어레이들의 작동을 효율적으로 제어하기 위한 한 가지 문제는 메모리의 블록들의 용량 및 경계들과 소정 기록 작동 동안 저장되는 데이터 섹터들의 수를 정합 및 정렬시키는 것이다. 한 가지 방법은 전체 메타블록을 채우는 량보다 적은 데이터 량을 저장할 필요에 따라서 최대 수의 블록들 보다 적은 호스트로부터 새로운 데이터를 저장하도록 사용되는 메타블록을 구성하기 위한 것이다. 적응형 메타블록들의 이용은 2003년 12월 30일에 출원된 발명의 명칭 "Adaptive Metablocks"인 미국 특허 출원 일련 번호 10/749,189에 기재되어 있다. 메타블록들 간의 데이터 및 물리적 경계들 간의 경계들의 피팅(fitting)은 2004년 5월 7일에 출원된 미국 특허 출원 번호 10/841,118 및 발명의 명칭이 "Data Run Programming"인 2004년 12월 16일에 출원된 일련 번호 11/016,271에 기재되어 있다.
도3을 참조하면, 로우를 따라서 하나 걸러서(every other) 메모리 셀로 데이터의 동시 프로그래밍은 도시된 단일 로우 대신에 NAND 스트링들의 적어도 한 단부를 따라서 2개의 로우들의 선택 트랜지스터들(도시되지 않음)을 제공함으로써 가장 편리하게 성취된다. 그 후, 한 로우의 선택 트랜지스터들은 하나의 제어 신호에 응답하여 블록 내의 하나 걸른 스트링을 자신들의 각 비트 라인들에 접속시키고 다른 한 로우의 선택 트랜지스터들은 또 다른 제어 신호에 응답하여 인터리빙하는 하나 걸른 스트링을 자신들의 각 비트 라인들에 접속시킨다. 그러므로, 데이터의 2 페이지들은 메모리 셀들의 각각의 로우로 기록된다.
각 논리적 페이지 내의 데이터 량은 전형적으로 데이터의 하나 이상의 섹터들의 정수이며, 각 섹터는 종래대로 데이터의 512 바이트들을 포함한다. 도6은 페이지 또는 메타 페이지의 데이터의 2개의 섹터들(153 및 155)의 논리적 데이터 페이지를 도시한다. 각 섹터는 통상적으로 저장되는 사용자 또는 시스템 데이터의 512 바이트들 중 일부(157) 및 저장되는 블록 또는 물리적 페이지에 또는 이 부 분(157) 내의 데이터 중 어느 하나에 관련된 오버헤드 데이터를 위한 또 다른 수의 바이트들(159)을 포함한다. 오버헤드 데이터의 바이트들의 수는 전형적으로 16 바이트들이며, 섹터들(153 및 155) 각각을 위한 총 528 바이트들을 만든다. 오버헤드 부분(159)은 프로그래밍 동안 데이터 부분(157)으로부터 계산된 ECC, 이의 논리적 어드레스, 블록이 소거되고 재프로그램되는 횟수의 경험 카운트, 하나 이상의 제어 플래그들, 작동 전압 레벨들, 및/또는 등과 더불어 이와 같은 오버헤드 데이터(159)로부터 계산된 ECC를 포함할 수 있다. 대안적으로, 오버헤드 데이터(159) 또는 이의 일부는 다른 블록들 내의 여러 페이지들에 저장될 수 있다.
메모리들의 병렬화가 증가됨에 따라서, 메타블록의 데이터 저장 용량은 증가되고 데이터 페이지와 메타페이지의 크기는 또한 이에 따라서 증가된다. 그 후, 데이터 페이지는 데이터의 2개 이상의 섹터들을 포함할 수 있다. 데이터 페이지 내 2개의 섹터와 메타페이지 당 2개의 데이터 페이지들로 인해, 메타페이지에 4개의 섹터들이 존재한다. 따라서, 각 메타페이지는 데이터의 2048 바이트들을 저장한다. 이는 고도의 병렬화이고 로우들 내의 메모리 셀들의 수가 증가됨에 따라서 더욱 더 증가될 수 있다. 이 때문에, 플래시 메모리들의 폭은 페이지 및 메타페이지 내 데이터량을 증가시키도록 확장된다. 상술된 플래시 드라이브들 및 물리적으로 작은 재프로그램가능한 비휘발성 메모리 카드들은 512 메가바이트들(MB), 1 기가바이트(GB), 2GB 및 4GB의 데이터 저장 용량을 갖거나 이보다 더 높게 상업적으로 이용될 수 있다.
도7은 호스트 및 이와 같은 대량 메모리 시스템 간의 공통 인터페이스를 도 시한다. 호스트에 의해 실행되는 응용 프로그램 또는 펌웨어 프로그램들에 의해 생성되거나 이용되는 데이터 파일들을 이 호스트는 취급한다. 워드 프로세싱 데이터 파일은 예이고 CAD(Computer Aided Design) 소프트웨어의 드로잉 파일은 또 다른 예인데, PCs, 랩탑 컴퓨터들 등과 같은 일반적인 컴퓨터 호스트들에서 주로 발견된다. PDF 포맷의 문서는 또한 이와 같은 파일이다. 정지 디지털 비디오 카메라는 메모리 카드상에 저장되는 각 픽쳐를 위한 데이터 파일을 생성시킨다. 셀룰러 전화는 전화 디렉토리와 같은 내부 메모리 카드 상의 파일들로부터 데이터를 이용한다. PDA는 어드레스 파일, 캘린더 파일, 등과 같은 여러 상이한 파일들을 저장하고 이용한다. 임의의 이와 같은 애플리케이션에서, 메모리 카드는 또한 호스트를 작동시키는 소프트웨어를 포함할 수 있다.
도7에서, 연속적인 논리적 어드레스 공간(161)은 메모리 시스템에 저장될 수 있는 모든 데이터를 위한 어드레스들을 제공할 정도로 충분히 크다. 전형적으로, 논리적 어드레스 공간은 메모리 어레이의 물리적 어드레스 공간보다 다소 작게됨으로써, 메모리 어레이 내에 일부 부가적인 공간이 존재하도록 한다. 호스트 논리적 어드레스 공간은 전형적으로 데이터 클러스터들의 증분으로 분할된다. 각 클러스터는 전형적인 4 및 64 섹터들 간의 어느 곳에서 다수의 데이터 섹터들을 포함하도록 주어진 호스트 시스템에서 설계될 수 있다. 표준 섹터는 데이터의 512 바이트들을 포함한다.
3개의 파일들 1, 2 및 3은 도7의 예에 도시된다. 호스트 시스템 상에서 실행되는 응용 프로그램은 순서화된 데이터 세트로써 각 파일을 생성하고 특정 명칭 또 는 다른 레퍼런스에 의해 이를 식별한다. 다른 파일들에 이미 할당되지 않는 충분히 이용가능한 논리적 어드레스 공간은 호스트에 의해 파일 1에 할당된다. 파일 1은 이용가능한 논리적 어드레스들의 인접한(contiguous) 범위를 할당받는 것이 도시되어 있다. 호스트 운영 소프트웨어를 위한 특정 범위와 같은 어드레스들의 범위들은 또한 특정 용도들을 위하여 공통적으로 할당되는데, 그 후 이는 이들 어드레스들이 호스트가 논리적 어드레스들을 데이터에 할당할 때 이용되지 않는 경우조차도 데이터를 저장하기 위하여 회피된다.
파일 2가 호스트에 의해 나중에 생성될 때, 호스트는 도7에 도시된 바와 같이 논리적 어드레스 공간(161) 내의 인접한 어드레스들의 2개의 상이한 범위들을 유사하게 할당한다. 파일은 인접한 논리적 어드레스들을 할당받을 필요가 있는 것이 아니라 오히려 다른 파일들에 이미 할당된 어드레스 범위들 간에서 어드레스들의 프래그먼트들일 수 있다. 그 후, 이 예는 호스트에 의해 생성된 또 다른 파일 3이 파일들 1 및 2 및 다른 데이터에 사전에 할당되지 않은 호스트 어드레스 공간의 다른 부분들에 할당받는다는 것을 도시한다.
호스트는 파일 할당 테이블(FAT)을 유지함으로써 메모리 논리적 어드레스 공간을 추적하는데, 여기서 호스트가 각종 호스트 파일들에 할당하는 논리적 어드레스들이 유지된다. FAT 테이블은 전형적으로 비휘발성 메모리에 뿐만 아니라 호스트 메모리에 저장되고 새로운 파일들이 저장되며, 다른 파일들이 삭제되며, 파일들이 수정될 때 호스트에 의해 빈번하게 갱신된다. 예를 들어, 호스트 파일이 삭제될 때, 호스트들은 이들이 현재 다른 데이터 파일들에 사용하도록 이용될 수 있다는 것을 보여주기 위하여 FAT 테이블을 갱신함으로써 삭제된 파일에 사전에 할당된 논리적 어드레스들을 할당해제 한다.
호스트는 메모리 시스템 제어기가 파일들을 저장하도록 선택하는 물리적 위치들에 관련되지 않는다. 전형적인 호스트는 논리적 어드레스 공간 및 이것이 각종 파일들에 할당되는 논리적 어드레스들만을 안다. 다른 한편으로, 전형적인 호스트/카드 인터페이스를 통한 메모리 시스템은 데이터가 기록되는 논리적 어드레스 공간의 부분들만을 알지만 특정 호스트 파일들에 할당된 논리적 어드레스들을 알지 못하거나 심지어 호스트 파일들의 수를 알지 못한다. 메모리 시스템 제어기는 데이터의 저장 또는 검색을 위한 호스트에 의해 제공되는 논리적 어드레스들을 호스트 데이터가 저장되는 플래시 메모리 셀 어레이 내에 특정 물리적 어드레스들로 변환시킨다. 블록(163)은 메모리 시스템 제어기에 의해 유지되는 이들 논리적 대 물리적 어드레스 변환들의 작업 테이블을 나타낸다.
메모리 시스템 제어기는 고 레벨로 시스템의 성능을 유지하도록 하는 방식으로 메모리 어레이(165) 의 블록들 및 메타블록들 내에 데이터 파일들을 저장하도록 프로그램된다. 4개의 플레인들 또는 서브-어레이들은 이 도시에 사용된다. 데이터는 시스템이 플레인들 각각으로부터 블록으로 형성된 전체 메타블록에 걸쳐서 시스템이 허용하는 최대 병렬도로 프로그램되고 판독되는 것이 바람직하다. 적어도 하나의 메타블록(167)은 통상적으로 메모리 제어기에 의해 사용되는 운영 펌웨어 및 데이터를 저장하기 위한 예약된 블록으로서 할당된다. 또 다른 메타블록(169) 또는 다수의 메타블록들은 호스트 운영 소프트웨어, 호스트 FAT 테이블 등의 저장을 위 하여 할당될 수 있다. 대부분의 물리적 저장 공간은 데이터 파일들의 저장을 위하여 남아 있다. 그러나, 메모리 제어기는 수신된 데이터가 각종 파일 오브젝트들 중에서 호스트에 의해 할당되는 방법을 알지 못한다. 모든 메모리 제어기는 호스트와의 상호작용으로부터 전형적으로 특정 논리적 어드레스들에 호스트에 의해 기록되는 데이터가 제어기의 논리적 대 물리적 어드레스 테이블(163)에 의해 유지되는 것으로서 대응하는 물리적 어드레스들에 저장된다는 것을 안다.
전형적인 메모리 시스템에서, 어드레스 공간(161) 내에 데이터 량을 저장하는데 필요로 되는 것보다 저장 용량의 몇 개의 엑스트라 블록들이 제공된다. 이들 엑스트라 블록들 중 하나 이상은 메모리의 수명(lifetime) 동안 결함이 있을 수 있는 다른 블록들을 대체하기 위한 용장 블록들로서 제공될 수 있다. 개별적인 메타블록들 내에 포함되는 블록들의 논리적 그룹화는 통상적으로, 메타블록에 원래 할당되는 결함 블록을 위한 용장 블록의 대체를 포함한 각종 이유들로 변경될 수 있다. 메타블록(171)과 같은 하나 이상의 부가적인 블록들은 전형적으로 소거된 블록 풀 내에 유지된다. 호스트가 데이터를 메모리 시스템에 기록할 때, 제어기는 호스트에 의해 할당되는 논리적 어드레스들을 소거된 블록 풀 내의 메타블록 내의 물리적 어드레스들로 변환시킨다. 그 후, 논리적 어드레스 공간(161) 내에 데이터를 저장하도록 사용되지 않는 다른 메타블록들은 소거되고 다음 데이터 기록 작동 동안 사용을 위한 소거된 풀 블록들로서 지정된다.
특정 호스트 논리적 어드레스들에 저장된 데이터는 원래 저장된 데이터가 무용일(obsolete) 때 새로운 데이터로서 빈번하게 대체된다. 메모리 시스템 제어기 는 응답시 소거된 블록에 새로운 데이터를 기록하고 나서 이들 논리적 어드레스들을 위한 논리적-대-물리적 어드레스 테이블를 변경시켜 이들 논리적 어드레스들에서의 데이터가 저장되는 새로운 물리적 블록을 식별한다. 그 후, 이들 논리적 어드레스들에 원래 데이터를 포함하는 블록들은 소거되고 새로운 데이터의 저장을 위하여 이용될 수 있다. 기록 시작에서 소거된 블록 풀로부터 사전소거된 블록에서 충분한 저장 용량이 존재하지 않는 경우 이와 같은 소거는 종종 현재 데이터 기록 작동이 완료되기 전 발생되어야 한다. 이는 시스템 데이터 프로그래밍 속도에 나쁜 영향을 미칠 수 있다. 메모리 제어기는 전형적으로 소정 논리적 어드레스에서의 데이터가 호스트가 새로운 데이터를 자신들의 동일한 논리적 어드레스로 기록할 때에만 호스트에 의해 무용인(obsolete) 것으로 간주된다는 것을 안다. 그러므로, 이 메모리의 많은 블록들은 당분간 이와 같은 무효 데이터를 저장할 수 있다.
블록들 및 메타블록들의 크기들은 집적 회로 메모리 칩의 에어리어를 효율적으로 이용하도록 증가한다. 이는 메타블록의 저장 용량보다 적고 많은 경우들에 블록의 저장용량보다 훨씬 적은 데이터 량을 저장하는 큰 비율의 개별적인 데이터 기록들을 발생시킨다. 메모리 시스템 제어기가 통상적으로, 소거된 블록 풀로부터 새로운 데이터를 메타블록으로 지향하기 때문에, 이는 충족되지 않는 메타블록들의 부분들을 발생시킬 수 있다. 새로운 데이터가 또 다른 메타블록에 저장되는 일부 데이터를 갱신시키면, 새로운 데이터 메타페이지들의 어드레스들과 인접한 논리적 어드레스들을 갖는 다른 메타블록으로부터의 데이터의 나머지 유효 메타페이지들이 또한 논리적 어드레스 순서로 새로운 메타블록으로 바람직하게 카피된다. 구 메타 블록은 다른 유효 데이터 페이지들로 남게될 수 있다. 이는 무용 및 무효한 것으로 간주되는 개별적인 메타블록의 특정 메타페이지들의 데이터를 시간에 걸쳐서 발생하고 상이한 메타블록으로 기록되는 동일한 논리적 어드레스로 새로운 데이터에 의해 대체된다.
전체 논리적 어드레스 공간(161)에 걸쳐서 데이터를 저장하기 위하여 충분한 물리적 메모리 공간을 유지시키도록, 무용(obsolete) 데이터에 의해 점유되는 메모리의 부분들은 가비지 콜렉션 작동에서 리클레임될 수 있다. 소거된 공간이 유효 데이터를 포함하는 블록들에 있는 콘솔리데이션 및 몇 개의 블록들 내의 유효 데이터가 블록들이 소거된 블록 풀에 부가되도록 하는 콘솔리데이팅에 의해 리클레임될 수 있다. 그러므로, 블록들은 재사용을 위하여 메모리 공간을 리클레임하도록 가비지 콜렉션 또는 콘솔리데이션을 겪는다. 실제만큼 논리적 어드레스들과 동일한 순서로 메타블록들 내에 데이터 섹터들을 유지시키는 것이 바람직한데, 그 이유는 이는 인접한 논리적 어드레스들에 판독되는 데이터를 더욱 효율적이 되게 하기 때문이다. 그래서 데이터 콘솔리데이션 및 가비지 콜렉션은 전형적으로 이 부가적인 목표로 수행된다. 부분적인 블록 데이터를 수신할 때 메모리를 관리하는 일부 양상들은 갱신되고 메타블록들의 이용은 미국 특허 6,763,424에 기재된다. 가비지 콜렉션 및 콘솔리데이션은 이 출원에서 총괄하여 "리클레임"이라 칭하고 가비지 콜렉션 또는 콘솔리데이션의 부분으로서 수행되는 작동들을 "리클레임 작동"이라 칭한다.
리클레임 예들
가비지 콜렉션 동안, 인접 또는 가까운 인접 논리적 어드레스 범위들을 갖는 유효 데이터의 페이지들은 무용 데이터를 포함하는 하나 이상의 소스 블록들로부터 수집되어 목적지 블록으로 재기록된다. 목적지 블록은 소거된 블록 풀로부터 나올 수 있거나 일부 유효 데이터를 포함할 수 있다. 모든 유효 데이터 페이지들이 하나 이상의 소스 블록들로부터 카피될 때, 이들은 장차 사용을 위하여 소거될 수 있다. 도8A 및 도8B는 예시적인 가비지 콜렉션 작동을 도시한다. 도8A는 블록(1) 내지 블록(3)으로 카피되는 블록(1)의 페이지들(0-2)로부터 유효 데이터 (X, X+1, 및 X+2) 및 블록(2)의 페이지 1로부터 블록 3으로 카피되는 유효 데이터 (X+3)를 도시한다. 데이터 (X, X+1, X+2 및 Y) 가 블록(3)으로 카피된 후, 블록 1 및 2는 즉각 소거를 위하여 준비되고 일반적으로 차후에 바로 소거되는 블록들의 풀에 부가될 수 있다. 도8B는 소거된 블록들(1 및 2) 및 데이터가 채워진 블록(3)을 갖는 가비지 콜렉션 후의 상황을 도시한다. 이 가비지 콜렉션 작동의 결과로써, 소거된 블록 풀은 한 블록씩 증가되는데, 그 이유는 블록들(1 및 2)가 소거된 블록 풀에 부가되지만 블록(3)이 더이상 소거된 블록 풀에 있지 않기 때문이다. 이를 성취하기 위하여, 데이터 (X, X+1, X+2, 및 X+3)이 카피된다. 이 예의 데이터 유닛들은 페이지 내용과 동일하고 하나 이상의 데이터 섹터들을 포함할 수 있다. 대안적으로, 데이터는 논리적 섹터들의 유닛들에 있지 않을 수 있음으로, 페이지의 내용은 균일한 크기의 별개의 어드레스가능한 유닛들을 가질 수 없다. 유사하게, 리클레임 작동들의 다른 예들은 논리적으로 어드레스가능한 섹터들의 유닛들에 있거나 어떤 다른 포맷의 유닛에 있는 데이터에 적용될 수 있다. 이 예에서, 데이터 (X, X+1, X+2, 및 X+3)은 카피되어, 이들은 블록 (3)에 순차적으로 저장된다. 다른 예들에서, 데 이터는 이들이 비순차적으로 저장되는 블록으로 카피될 수 있다.
도9A 및 도9B는 가비지 콜렉션의 또 다른 예를 도시한다. 여기서, 유효 데이터 (Y)는 페이지들 (0 및 2)에 무용 데이터를 포함하는 블록(2)으로부터 카피되고, 단지 유효 데이터만을 포함하는 블록(1)으로 카피된다. 데이터 (Y)가 카피된 후, 단지 무용 데이터만이 블록 (2)에 남아있음으로, 블록(2)는 소거된다. 도9B는 블록(1)의 사전 소거된 페이지(3)에 저장된 데이터 (Y)와 소거된 블록(2)을 갖는 가비지 콜렉션 후의 상황을 도시한다. 따라서, 이 예에서, 소거된 블록 풀로부터의 블록이 필요로 되지 않는다. 데이터(Y)가 메모리 어레이의 한 페이지를 채우는 데이터 양인 경우, 단지 한 페이지만이 카피되고 하나의 블록이 이 작동에서 소거됨으로써, 소거된 블록 풀에 부가되는 부가적인 소거 블록을 발생시킨다. 이 예에서, 데이터(Y)는 논리적으로 데이터 (X, X+1, X+2) 에 관련되지 않는다. 다른 예들에서, 데이터는 논리적으로 관련되는 데이터를 포함하는 블록들에 카피될 수 있다.
데이터 컴팩션은 전형적으로 블록으로부터 모든 유효한 데이터 페이지들을 판독하고 이들을 새로운 블록 또는 블록들에 기록하는 것을 포함하여, 이 프로세스에서 무효 데이터를 갖는 페이지들을 무시하는 것이다. 유효 데이터를 갖는 페이지들은 또한 바람직하게는 이들에 저장된 데이터의 논리적 어드레스 순서에 정합하는 물리적 어드레스 순서로 배열되는 것이 바람직하다. 데이터 컴팩션은 비순차적인(케이오틱) 포맷으로 저장되는 데이터를 갖는 블록 상에서 수행됨으로써, 컴팩션 후 데이터가 순차적인 포맷으로 저장되도록 한다. 새로운 블록에 점유되는 페이지들의 수는 구 블록에 점유되는 것보다 적게 되는데, 그 이유는 무용 데이터를 포함 하는 페이지들이 새로운 블록으로 카피되지 않기 때문이다. 그 후, 구 블록은 소거되고 새로운 데이터를 저장하도록 이용될 수 있다. 그 후, 콘솔리데이션에 의해 얻어진 용량의 부가적인 페이지들은 다른 데이터를 저장하도록 사용될 수 있다.
도10A 및 도10B는 데이터 컴팩션의 예를 도시한다. 도10A는 무용한(obsolete) 일부 데이터 및 유효한 일부 데이터가 채워진 블록(1)을 도시한다. 블록(1)에 저장된 데이터는 순차적인 순서가 아니다. 블록(1)은 미국 특허 출원 10/750,155에 서술된 것과 같은 일부 메모리 디자인들에 사용되는 케이오틱 갱신 블록의 전형이다. 블록(1)의 페이지들 (2 및 3)은 데이터 (Z+1 및 Z+2)의 유효 카피들을 포함하지만, 페이지들 0 및 1은 이들 데이터의 무용 카피들을 포함한다. 케이오틱 갱신 블록이 제한된 논리적 어드레스 범위로 맵핑되는 경우, 이 블록은 꽉 채워질 때마다 컴팩트화되어, 부가적인 갱신들이 블록의 논리적 어드레스 범위 내에서 가능하도록 한다. 도10B는 컴팩션 후 상황을 도시한다. 블록(1)의 페이지들 (2 및 3)의 유효 데이터 (Z+1 및 Z+2)는 블록(2)으로 카피되고 순차적으로 저장되도록 배열된다. 데이터를 순차적으로 저장하는 한 가지 이점은 상이한 섹터들의 위치들의 인덱스를 유지할 필요가 없어, 이와 같은 인덱스를 유지하는 것과 관련된 오버헤드를 감소시킨다. 블록(2)은 부가적인 데이터를 저장하는데 이용가능한 페이지들 (2 및 3)에서 소거된 공간을 포함한다. 블록(1)은 모든 유효 데이터가 블록(2)에 카피되고 블록 (1)이 소거된 후에 도시된다. 컴팩션의 결과로써, 소거된 블록 풀은 여전히 동일한 수의 소거된 블록들을 갖지만, 사전에 이용될 수 없는 블록(2)에 데이터를 기록하는데 이용될 수 있는 공간이 존재한다. 2개의 페이지들로 부터의 데이터는 카피되어 이 컴팩션을 성취한다.
데이터 콘솔리데이션은 데이터를 저장하는데 이용될 수 있는 공간을 만들도록 사용될 수 있다. 일부 메모리 시스템들에서, 메모리 내 소거된 공간은 모두 이용될 수 없는데, 그 이유는 이는 유효 데이터를 또한 포함하는 블록들에 분포되는 작은 부분들에 있기 때문이다. 데이터를 프로그램하기 위한 충분한 공간을 갖는 임의의 블록에 저장된 데이터와 논리적으로 관련되지 않는 새로운 데이터가 수신될 때, 부분적으로 꽉 찬 블록이 아니라 소거된 블록에 이를 프로그램하는 것이 바람직하다. 이미 저장된 데이터와 논리적으로 관련되지 않는 이와 같은 새로운 데이터는 일반적으로 소거된 블록 풀로부터 소거된 블록에 저장된다. 얼마의 시간 후, 논리적으로 관련되지 않은 새로운 데이터에 이용될 수 없는 소거된 공간을 갖는 다수의 블록들이 존재할 수 있다. 이는 공간을 낭비시킨다. 이와 같이 부분적으로 기록된 블록들로부터의 유효 데이터는 결합될 수 있다. 예를 들어, 소거된 공간을 포함하는 2개의 블록들로부터의 유효 데이터는 결합되어, 결합된 소거 공간이 소거된 블록을 형성하도록 한다.
도11A는 페이지들(0-2)에 데이터(X, X+1, X+2)를 포함하는 블록(1)을 도시하지만, 블록(2)은 페이지(0) 내의 데이터(Y)를 포함한다. 데이터(Y)는 논리적으로 데이터(X, X+1, 및 X+2)와 관련되지 않는다. 블록들(1 및 2)은 얼마 동안 소거된 공간을 갖는 상태로 유지되어, 블록(1)을 위한 데이터(X+2)에 순차적이거나 블록(2)를 위한 데이터(Y)에 순차적인 부가적인 데이터가 수신되는지를 알 수 있다. 부가적인 순차 데이터가 어떤 임계 시간 또는 일부 다른 조건이 부합된 후 수신되 면, 블록들(1 및 2)은 콘솔리데이션을 위하여 마킹될 수 있다. 리스트는 콘솔리데이션을 위하여 준비되는 블록들로 유지될 수 있고 이 블록들은 이들이 포함하는 유효 데이터 량에 따라서 리스트로부터 선택됨으로써 결합될 때 이들 유효 데이터가 블록을 채우거나 거의 블록을 채우도록 한다. 도11B는 콘솔리데이션 후 블록들(1 및 2)을 도시한다. 데이터(Y)는 블록(1)으로 카피되고 블록(2)은 소거된다. 이 콘솔리데이션은 단지 소거된 블록 풀에 블록을 부가하도록 한 페이지(블록(2)의 페이지(0)으로부터의 데이터(Y))로부터의 데이터의 카피를 필요로 한다. 일반적으로 적은 카피를 필요로 하는 방식으로 통합하는 것이 바람직하며, 이로 인해 데이터(Y)는 데이터(X, X+1, 및 X+2)를 블록(2)에 카피하는 대신에 블록(1)에 카피된다.
데이터 콘솔리데이션 및 가비지 콜렉션은 시간이 걸리고 특히 데이터 콘솔리데이션 또는 가비지 콜렉션이 호스트로부터의 명령이 실행될 수 있기 전 발생할 필요가 있다면 메모리 시스템의 성능에 영향을 미칠 수 있다. 이와 같은 리클레임 작동들은 메모리 시스템 제어기에 의해 정상적으로 스케쥴링되어 가능한 많은 배경에서 발생되지만 이는 항상 가능하지는 않다. 호스트 명령의 실행이 지연되는 예는 호스트가 메모리에 기록하길 원하고 데이터 콘솔리데이션 및 가비지 콜렉션이 후에 소거될 수 있는 유효 데이터의 하나 이상의 메타블록들을 먼저 클리어하도록 할 필요가 있는 모든 데이터를 저장하도록 소거된 블록 풀에서 충분히 사전 소거된 메타블록들이 존재하지 않는 경우이다. 그러므로, 이와 같은 디스럽션들(disruptions)을 최소화하기 위하여 메모리의 제어를 관리하는 것에 관심을 두어 왔다. 많은 이와 같은 기술들은 다음 미국 특허 출원들: 2003년 12월 30일에 출원된 발명의 명칭 이 "Management of Non-Volatile Memory Systems Having Large Erase Blocks"인 10/749,831; 2003년 12월 30일에 출원된 "Non-Volatile Memory and Method with Block Management System"인 10/750,155; 2004년 8월 13일에 출원된 발명의 명칭이 "Non-Volatile Memory and Method with Memory Planes Alignment" 인 10/917,888; 2004년 8월 13일에 출원된 10/917,867; 2004년 8월 13일에 출원된 발명의 명칭이 "Non-Volatile Memory and Method with Phased Program Failure Handling"인 10/917,889; 및 2004년 8월 13일에 출원된 발명의 명칭이 "Non-Volatile Memory and Method with Control Data Management"인 10/917,725이다.
메모리 제어기는 또한 비휘발성 메모리에 호스트에 의해 저장되는 FAT 테이블로부터의 데이터를 이용하여 메모리 시스템을 더욱 효율적으로 작동시킨다. 한 가지 이와 같은 이용은 데이터가 자신들의 논리적 어드레스들을 할당해제함으써 무용화될 호스트에 의해 식별될 때를 알게 하기 위한 것이다. 이를 알면 메모리 제어기는 새로운 데이터를 이들 논리적 어드레스들에 기록하는 호스트에 의해 이를 정상적으로 알도록 하기 전 이와 같은 무효 데이터를 포함하는 블록들의 소거를 스케쥴링하도록 한다. 이는 2004년 7월 21일에 출원된 발명의 명칭이 "Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems" 인 미국 특허 출원 10/897,049 에 기재되어 있다. 다른 기술들은 소정 기록 작동이 단일 파일인지 여부, 또는, 다수 파일들인지, 이들 파일들 간의 경계들이 존재하는 곳을 추론하기 위하여 메모리에 새로운 데이터를 기록하는 호스트 패턴들을 모니터하는 것을 포함한다. 2004년 12월 23일에 출원된 발명의 명칭이 "FAT Analysis for Optimized Sequential Cluster Management" 인 미국 특허 출원 11/022,369는 이 유형의 기술들의 이용을 기술한다.
메모리 시스템을 효율적으로 작동시키기 위하여, 제어기가 할 수 있는 만큼 개별적인 파일들의 데이터로 호스트에 의해 할당되는 논리적 어드레스들에 관한 것을 알도록 하는 것이 바람직하다. 그 후, 데이터 파일들은 파일 경계들을 알지 못할 때 많은 수의 메타블록들 중에서 분산되는 것이 아니라 단일 메타블록 또는 메타블록들의 그룹 내에서 제어기에 의해 저장될 수 있다. 이 결과는 데이터 콘솔리데이션 및 가비지 콜렉션 작동들의 수 및 복잡도가 감소된다는 것이다. 메모리 시스템의 성능은 그 결과 개선된다. 그러나, 메모리 제어기는 상술된 바와 같이 호스트/메모리 인터페이스가 논리적 어드레스 공간(161)(도7)을 포함할 때 호스트 데이터 파일 구조에 관해서 충분히 아는 것은 어렵다.
논리적 어드레스 기반으로 한 인터페이스를 갖는 리클레임
도12는 파일이 삭제될 때 도7의 호스트/메모리 인터페이스의 작동을 도시한다. 호스트 시스템상에서 실행되는 애플리케이션(201)은 파일(2)이 메모리에서 삭제되어야만 하는지를 결정한다. 예를 들어, PC 상에서 실행되는 애플리케이션(201)은 파일(2)이 사용자 입력을 토대로 또는 다른 이유들로 더 이상 필요로 되지 않는다는 것을 결정한다. 그 결과, 애플리케이션은 호스트의 드라이버 부로 파일 (2) 삭제 명령을 전송한다. 이 경우에, 데이터의 저장은 FAT를 이용하여 관리되어 메모리에 저장된 각 파일을 위하여 사용되는 논리적 어드레스들을 나타낸다. 예를 들어, 2개의 개별적인 논리적 어드레스 범위들(203 및 205)을 갖는 파일(2)이 도시된 다. 각 논리적 어드레스 범위(203 및 205)는 다수의 순차적인 클러스터들을 포함할 수 있다. 파일(2)이 단지 2개의 개별적인 논리적 어드레스 범위들(203 및 205)을 갖는 것으로 도시되었지만, 파일들은 인터비닝 논리적 어드레스들에 맵핑되는 다른 파일들 갖는 많은 논리적 어드레스 범위들로 빈번하게 나뉘어진다. 파일(2) 삭제 명령은 수정된 FAT를 발생시켜, 파일(2)에 할당되는 논리적 어드레스 범위들(203 및 205)의 클러스터들이 할당해제되도록 하고 호스트에 의해 다음 할당에 이용될 수 있도록 한다. 그러나, 호스트의 FAT에서 이들 클러스터들의 할당해제는 일반적으로 메모리 제어기에 의해 사용되는 메모리 관리 구조들에 대해서 어떠한 수정도 하지 않는다. 논리적-대-물리적 어드레스 번역(163)은 데이터 클러스터들이 저장되는 물리적 어드레스들을 기록하는 메모리 제어기에 의해 유지되는 테이블을 포함한다. 어드레스 범위들(203 및 205)은 물리적 어드레스 범위들(209 및 211) 각각에 맵핑된다. 이 기록은 애플리케이션으로부터 '파일 2 삭제" 명령의 결과로써 변경되지 않는다. 따라서 테이블은 논리적 어드레스 범위들(203 및 205)을 위한 엔트리들을 유지한다. 또한, 대응하는 물리적 장소들(209 및 207)은 이 데이터가 애플리케이션에 의해 더이상 필요로 되지 않을지라도 데이터로 채워진 채로 남아있게 된다. 일반적으로, 메모리 제어기는 새로운 데이터가 이들 어드레스들을 갖는 호스트에 의해 전송될 때 논리적 어드레스 범위들(203 및 205)를 위한 논리적-대-물리적 어드레스 번역을 오직 변경시킨다. 메모리 제어기가 클러스터가 할당해제될 때를 알지 못하기 때문에, 이는 일반적으로 각 논리적 어드레스를 위한 적어도 하나의 엔트리를 유지하고 또한 점유된 바와 같은 전체 논리적 어드레스 범위를 알게 된다. 일반적으로, 메모리의 논리적 어드레스 범위보다 더 많은 물리적 공간이 존재함으로, 명백하게 유효한 데이터가 채워진 전체 논리적 어드레스 범위에서조차도, 소거된 공간이나 무용 데이터에 의해 점유될 수 있는 부가적인 공간이 존재한다.
도13은 호스트 데이터가 메모리에 기록될 때 메모리 어레이 내 물리적 공간이 관리될 수 있는 방법의 예를 도시한다. 물리적 공간은 전체 논리적 어드레스 범위에 대응하는 유효 데이터로 대부분 채워진 것처럼 취급된다. 메모리 내 나머지 공간은 소거된 공간 및 무용 데이터에 의해 점유된 공간으로 구성된다. 호스트 데이터가 메모리 어레이에 프로그램될 때, 무용 데이터에 의해 점유된 공간 양은 도시된 바와 같이 증가된다. 이는 특정 논리적 어드레스를 갖는 새로운 섹터가 수신될 때, 논리적-대-물리적 번역(163)에 기록되는 새로운 물리적 위치에 저장되기 때문이다. 이는 동일한 논리적 어드레스로 이전 저장된 섹터를 대체한다. 그 후, 이전 저장된 섹터는 무용화되고 이전 저장된 섹터의 물리적 장소는 무용 데이터를 포함하는 것으로써 기록된다. 소거된 공간은 무용 데이터의 량이 증가됨에 따라서 감소한다. 어떤 지점에서, 호스트 데이터를 계속 프로그램할 정도의 충분한 소거된 공간이 존재하지 않게 된다. 도13은 시간 (t1)에서 메모리에 소거된 공간이 남아 있지 않는 것을 도시한다. 그래서 시간 (t1)에서, 메모리 어레이로 프로그램될 수 있는 부가적인 호스트 데이터는 없다. 다른 예들에서, 프로그래밍은 일부 최소량의 소거된 공간이 메모리 어레이에 남게 될 때 중지할 수 있다. 시간(t1)에서, 가비지 콜렉션 작동은 무용 데이터에 의해 점유되는 공간을 리클레임하기 시작된다. 이 작동은 모든 무용 공간이 리클레임되고 소거된 공간일 때 시간(t2)에서 끝난다. 다른 예들에서, 가비지 콜렉션 작동은 모든 가능한 공간이 리클레임되기 전 종료될 수 있는데, 예를 들어, 정확하게 충분한 공간이 호스트 데이터의 프로그래밍을 계속하도록 리클레임될 때 끝날 수 있다. 시간(t2)에서, 호스트 데이터의 프로그래밍은 다시 시작되고 시간 (t3)에서 호스트 데이터의 기록은 중단되고 또 다른 가비지 콜렉션 작동이 시작된다. 도13에 도시된 뷰(view)는 메모리 내 데이터의 조건의 메모리 제어기의 뷰이고 항상 호스트의 뷰와 동일한 것은 아니다. 메모리 제어기가 꽉 찬 것으로써 논리적 공간을 보지만, 호스트는 거의 자유로운 것으로써 동일한 공간을 볼 수 있다.
도13에 도시된 방식으로 메모리를 관리하는 것은 시간(t1 및 t2) 간에는 메모리가 호스트에 이용될 수 없다라는 단점을 갖는다. 그러므로, 호스트 데이터는 t1 내지 t2의 시간 기간에서 기록되지 않는다. t1 내지 t2의 시간은 상당한 길이일 수 있는데, 그 이유는 많은 수의 페이지들을 카피될 수 있기 때문이다. 어떤 경우들에, 이 시간은 너무 커서, 호스트가 타임 아웃하도록 한다. 즉, 호스트는 데이터의 일부를 기록하기 위한 최대 시간을 갖고 불충분한 소거 공간이 존재할 때 새로운 데이터를 기록하도록 하는데 필요한 가비지 콜렉션이 이 최대 시간을 초과할 수 있다.
도14는 호스트 데이터를 기록할 정도로 여전히 충분한 소거된 공간이 존재하는 동안 가비지 콜렉션이 수행되는 메모리를 관리하는 대안적인 방법을 도시한다. 이 예에서, 가비지 콜렉션은 그것이 절대적으로 필요로 되기 전에 실행된다. 가비지 콜렉션은 미국 특허 출원 11/040,325에 서술된 바와 같은 인터리빙된 방식으로 호스트 데이터의 기록 간에서 행해질 수 있다. 이와 같은 인터리빙된 가비지 콜렉션을 시작하기 위한 트리거는 소거된 블록들의 수가 어떤 임계값에 도달될 수 있다는 것이다. 인터리빙된 가비지 콜렉션 작동들은 메모리에 호스트 데이터를 프로그램하는 것을 느리게 한다. 그러나, 가비지 콜렉션 작동들은 호스트 데이터가 더 이상 기록될 수 없는 지점까지 소거된 블록들의 수가 감소하는 것을 방지할 수 있다. 따라서, 호스트가 프로그램을 타임 아웃하거나 중단하게 하는 위험은 감소되거나 제거된다. 인터리빙된 가비지 콜렉션은 충분한 소거된 블록들이 이용될 수 있을 때 중지함으로써 프로그래밍 속도는 불필요하게 영향받지 않게 된다. 따라서, 소거된 공간 량은 인터리빙된 가비지 콜렉션이 턴온 또는 오프되거나 인터리빙된 가비지 콜렉션의 레이트가 변화됨에 따라서 변화된다.
도15는 호스트 데이터의 기록과 인터리빙되는 가비지 콜렉션의 타이밍 도를 도시한다. 호스트 데이터의 N3 페이지들이 기록되고 나서, 데이터의 N4 페이지들은 기록되거나 x 블록들은 가비지 콜렉션 작동의 부분으로써 소거된다. 이 사이클은 반복된다. 이 방식으로, 가비지 콜렉션과 관련된 오버헤드는 한번에 집중되는 대신에 시간에 걸쳐서 확산되는데, 이는 타임 아웃을 초래할 수 있다. 콘솔리데이션, 다른 리클레임 작동들, 또는 다른 하우스키핑 작동들은 또한 이 방식으로 인터리빙될 수 있다. 이 문맥에서 하우스키핑 작동들은 메모리 어레이에 데이터를 유지시키도록 메모리 제어기에 의해 초기화되는 작동들이라 칭한다. 이와 같은 작동들은 웨어 레벨링(wear levelling) 및 데이터 스크럽 작동들(data scrub operations)을 포함할 수 있다.
파일 기반으로 한 인터페이스에 의한 리클레임
일부 메모리 인터페이스들에 따르면, 부가적인 정보는 더욱 효율적인 리클레임을 허용하기 위하여 메모리 제어기에 이용될 수 있다. 이와 같은 메모리 인터페이스들의 예들은 다음 미국 특허 출원들: 발명의 명칭이 "Direct Data File Storage in Flash Memories" 인 11/060,249; 발명의 명칭이 "Direct File Data Programming and Deletion in Flash Memories"인 11/060,174; 발명의 명칭이 "Direct Data File Storage Implementation Techniques in Flash Memories"인 11/060,248, 이들 모두는 2005년 2월 16일에 출원됨: 2005년 8월 3일에 출원된 발명의 명칭이 "Direct Data File Storage in Flash Memories" 인 가특허 출원 60/705,388에 기재되어 있다. 파일들은 메모리에 지정된 논리적 어드레스 범위의 논리적 어드레스들로 맵핑됨이 없이 호스트로부터 메모리로 전송된다. 이와 같은 메모리는 파일-기반으로 한 인터페이스를 갖는 것으로 간주된다. 메모리에서, 파일은 주로 이 파일에 전용되는 메타블록에 저장된다. 파일이 저장되는 장소들은 파일 식별자 및 오프셋들을 이용하여 기록된다. 도16은 이와 같은 직접 데이터 파일 저장을 이용하는 메모리 인터페이스를 도시하는데, 이 파일들은 메모리로 전송되고 파일/오프셋-대-물리적 어드레스 번역(173)은 메모리에서 발생된다. 이와 같은 메모리들은 프래그멘테이션을 감소시키는 방식으로 파일들을 유지함으로써, 대부분의 메타블록들이 단지 하나의 파일로부터의 데이터를 포함하도록 한다. 이와 같은 메모리들에서, 메모리 제어기는 저장되는 데이터에 관해서 이용될 수 있는 더 많은 정보를 포함한다. 특히, 메모리 제어기가 파일마다 데이터를 식별하기 때문에, 이 는 파일-기반으로 한 방식으로 파일들을 저장할 수 있다.
도17은 애플리케이션이 도16의 인터페이스들을 이용하여 메모리 시스템에 저장되는 파일을 삭제할 때 발생되는 것을 도시한 것이다. 애플리케이션(225)은 파일(2)이 삭제되어야 한다는 것을 표시하는 명령을 전송한다. 이 명령은 논리적 섹터 어드레스에 의해 파일을 식별할 필요 없이 호스트로부터 메모리로 전송된다. 파일 식별자는 호스트에 의해 사용되어 파일을 식별할 수 있다. 파일(2)은 블록들(a, b 및 c)로 맵핑되고 이 맵핑은 파일/오프셋-대-물리적 번역(173)에 의해 기록된다. 명령은 파일(2)이 삭제되는 것을 반영하도록 파일/오프셋-대-물리적 번역(173)이 갱신되도록 한다. 그 결과, 블록들(a, b 및 c)은 가비지 콜렉션을 위하여 스케쥴링됨으로써, 이들은 새로운 데이터를 위하여 재사용될 수 있다. 따라서, 가비지 콜렉션은 논리적 섹터 어드레스들을 이용하는 메모리들에 대한 경우처럼 대체 데이터가 메모리 어레이에 저장될 때까지 대기하는 대신에 애플리케이션에 의해 파일의 삭제에 의해 초기화될 수 있다. 메모리 제어기는 이 경우에 항상 전체 논리적 어드레스 공간을 보는 것은 아니다. 대신, 메모리 제어기는 메모리에 저장된 데이터의 유효성에 관한 정확한 정보를 갖는다. 때때로, 메모리 제어기는 메모리 어레이가 유효 데이트를 거의 또는 전혀 포함하지 않는다는 것을 인식한다. 다른 때에, 메모리 제어기는 메모리 어레이가 유효 데이터로 채워지거나 거의 채워진 것처럼 볼 수 있다. 메모리 어레이에서 유효 및 무용 데이터에 관한 이러한 정보로, 리클레임은 이전보다 더욱 효과적인 방식으로 관리될 수 있다.
도18은 직접 데이터 파일 인터페이스를 이용하는 메모리에 상에서 작동하는 메모리 리클레임 시스템의 한 예를 도시한 것이다. 도18은 호스트 데이터가 기록될 때 시간에 걸쳐서 메모리 어레이의 조건을 도시한 것이다. 도시된 뷰는 제어기의 뷰를 나타내는데, 이 경우에 이는 호스트의 뷰와 일치한다. 여기서, 메모리의 상대적으로 작은 파트만이 유효 데이터를 포함하는 것으로써 간주되는데, 나머지 메모리는 소거된 블록들 및 리클레임가능한 공간으로 이루어진다. 리클레임가능한 공간은 무용 데이터에 의해 점유되는 공간 및 소거된 공간으로 이루어지지지만 소거된 블록들내에 존재하지 않는다. 일부 메모리들에서, 소거된 공간의 이와 같은 분산된 부분들은 부가적인 데이터를 저장하도록 사용될 수 있지만, 다른 시스템들에서 이와 같은 소거된 공간은 소거된 블록들로 통합되는데, 그 후 이는 데이터를 저장하도록 사용된다. 도18은 시간(t5) 때까지 유효 데이터의 량의 꾸준한 증가를 도시한다. 이 시간 동안, 리클레임가능한 공간의 량은 일정하게 유지되는데 그 이유는 리클레임 작동이 수행되지 않기 때문이다. 소거된 블록들에서 공간은 유효 데이터가 이 기간 동안 소거된 블록들에 기록됨에 따라서 감소된다. 시간(t5)에서, 하나 이상의 파일들은 삭제되고 메모리 어레이에 저장된 이들 파일들로부터의 데이터는 무용화된다. 따라서, 유효 데이터에 의해 점유되는 공간 량은 감소되고 리클레임가능한 공간 량은 이에 따라서 증가된다. 그 후, 시간 (t5 내지 t6)까지, 더 많은 데이터는 메모리 어레이로 프로그램되어, 유효 데이터 량을 또다시 증가시키고 소거된 블록들에서 공간을 감소시킨다. 시간(t6)에서, 메모리는 리클레임 작동이 부가적인 데이터의 프로그래밍을 허용하는데 필요한 것으로 간주되는 지점에 도달한다. 이 지점은 소거된 블록들 내 공간이 어떤 임계값에 도달하거나 일부 다른 기준들을 기반으로 할 수 있을 때 도달될 수 있다. 시간 (t6)로부터 (t7)까지, 리클레임 작동들은 일부 리클레임가능한 공간을 소거된 블록들로 변환시키도록 수행된다. 이들 리클레임 작동들 동안, 새로운 데이터는 메모리 어레이에 기록되지 않음으로써, 유효 데이터에 의해 점유되는 공간량은 일정한 채로 유지된다. 시간(t7)에서, 리클레임 작동들은 중단되고 새로운 데이터의 프로그래밍은 다시 시작된다. 이 시스템은 상술된 시스템들과 유사한데, 여기서 리클레임 작동들은 필요한 경우에만 수행된다. 이와 같은 시스템의 한 가지 단점은 t6로부터 t7 까지의 시간이 시간 제한을 초과함으로써, 호스트가 기록 작동을 중단한다는 것이다. 필요할 때에만 리클레임 작동들을 수행하는 대신에, 이들은 호스트 기록 작동들에 큰 영향을 미치지 않는 방식으로 필요로 되기전 리클레임 작동들을 수행할 수 있다. 특히, 직접 데이터 파일 저장 시스템을 이용하는 것들과 같은 메모리 어레이에 저장된 무용 데이터의 량에 관한 더욱 완전한 정보를 갖는 메모리들에서, 이들은 거의 호스트 기록 작동들에 영향을 미치지 않도록 하는 지능적인 방식으로 리클레임 작동들을 스케쥴링할 수 있다.
도19는 공간이 메모리 어레이에서 관리될 수 있는 방법의 모델을 도시한 것이다. 유효 데이터는 메모리 어레이가 유효 데이터로 채워질 때까지 일정한 레이트로 증가된다. 동시에, 리클레임 가능한 공간은 리클레임 작동들이 리클레임 공간을 소거된 블록들로 변환시킬 때 감소된다. 이 방식으로 메모리 어레이 내 공간을 관리하기 위한 시스템은 스케쥴에 따라서 리클레임 작동들을 수행함으로써, 개별적인 리클레임 작동들은 호스트 데이터를 기록하는 일정 속도를 제공하도록 개별적인 호 스트 기록 작동들 간에 분포된다. 이를 행하기 위하여, 제어기는 메모리 어레이를 채우고 메모리가 채워지기 전 필요로 되는 리클레임 작동들의 수를 추정하도록 하는데 걸리는 부가적인 유효 데이터 량을 추정할 수 있다. 그 후, 리클레임 작동들은 나머지 시간에 걸쳐서 균일하게 리클레임 작동들을 확산시키는 레이트로 스케쥴링된다. 이는 메모리가 소거된 블록들을 조기에 다 쓰지 않도록 한다. 리클레임 작동들은 전과 같이 새로운 데이터를 메모리 어레이에 프로그램하는 작동들 간에서 인터리빙될 수 있다. 리클레임 작동들은 한 블록에서 또 다른 블록으로의 데이터의 부분들을 카피하는 것과 유효 데이터를 포함하지 않는 블록들을 소거하는 것을 포함한다. 공간을 리클레임하는 레이트는 인터리브 비에 의해 결정될 수 있으며, 다수의 리클레임 작동들 대 다수의 호스트 기록 작동들의 비에 의해 결정될 수 있다. 어떤 경우들에, 블록 소거 작동들은 이 비를 계산하기 위하여 무시되는데, 그 이유는 소거 작동들 보다 더 많은 카피 작동들이 존재하기 때문이다. 그 후, 이 비는 리클레임을 위한 기록 작동들 대 새로운 데이터를 위한 기록 작동들의 비가 된다.
도20은 하나 이상의 파일들이 시간(t10)에서 삭제될 때 이와 같은 시스템에서 발생되는 것을 도시한다. t10 전, 유효 데이터에 의해 점유되는 공간은 증가하고 리클레임가능한 공간 및 소거된 블록들에서 공간 둘 다는 유효 데이터 량이 증가함에 따라서 감소된다. 리클레임가능한 공간이 메모리가 파선들로 도시된 바와 같이 채워질 때 모든 리클레임가능한 공간이 리클레임되도록 하는 레이트로 리클레임된다. 시간 (t10)에서, 하나 이상의 파일은 삭제됨으로써, 유효 데이터에 의해 사전에 점유되는 공간은 무용 데이터에 의해 점유됨으로써, 리클레임가능한 공간이 된다. t10후, 메모리 어레이는 더 많은 유효 데이터를 저장할 수 있지만 이와 같이 행하도록 부가적인 리클레임 작동들을 필요로 한다. 그러므로, 제어기는 리클레임 작동들이 수행되어야 하는 레이트를 재계산한다. 이는 메모리 어레이에 저장되는 데이터 상태의 변화들에 응답하는 적응형 스케쥴링 시스템을 제공한다. 리클레이밍 레이트는 그 결과 수정되고 유효 데이터를 프로그래밍하는 레이트는 또한 변경되는데, 그 이유는 리클레이밍 레이트가 유효 데이터를 프로그래밍하는 레이트에 영향을 미치기 때문이다. 적응형 리클레이밍 스케쥴링 시스템은 주기적으로 또는 호스트 명령에 의해 트리거되거나 일부 다른 이벤트에 의해 트리거될 때 인터리브 비를 재계산할 수 있다.
도21은 리클레임의 세 개의 다른 모드가 있는 메모리 관리의 다른 예를 도시한다. 제1 모드에서, t12전에, 어떠한 리클레임 작동도 호스트 데이터의 기록 동안 수행되지 않는다. 유효 데이터의 수는 삭제되는 블록에서 공간의 양이 감소하는 동일한 레이트로 증가된다. 리클레임가능한 공간의 양은 이런 시간 동안 어떠한 데이터도 무용하게 만들어지지 않기 때문에 거의 동일하게 남는다. 일부 블록은 삭제되어 사용되지 않는 블록의 일부를 남기는 방법으로 저장된 유효 데이터를 가질 수 있다. 이러한 소거된 부분은 유효 데이터를 콘솔리데이팅함으로써 리클레이밍될 수 있어서, 소거된 공간은 하나 이상의 소거된 블록에서 콘솔리데이팅된다. 그러므로 어떠한 데이터도 무용하게 되지 않는 이런 모드에서조차 리클레임가능한 공간에서 어떠한 증가가 있을 수 있다. 일부 예에서, 리클레임의 최소 레이트는 이런 제1 모드에서 유지될 수 있어서, 리클레이밍 레이트가 결코 0이 아니다. 리클레임 레이트 가 낮거나 0이기 때문에, 호스트 데이터를 프로그래밍하는 레이트는 이런 제1 모드에서 높다.
제2 모드에서, t12 내지 t13에서, 리클래임 작동들은 도19 및 도20에서 도시된 바와 같은 적응형 스케쥴에 따라 수행된다. 그러므로 리클레임의 레이트는 계산되고, 리클레임 작동은 새로운 데이터의 프로그래밍 사이에서 인터리브되어, 리클레임가능한 공간은 메모리가 채워짐에 따라 줄어든다. 새로운 데이터를 프로그래밍하는 레이트는 인터리빙된 리클레임 작동으로 인해 제1 모드에서보다 제2 모드에서 약간(slightly) 낮다. 제2 모드는 메모리에서 유효 데이터가 임계값을 초과할 때, 소거된 블록에서 공간이 임계값 아래로 떨어지거나, 일부 다른 기준에 기초하여 떨어질 때 시작될 수 있다.
제3 모드에서, t13 이후에, 리클레임 작동들은 최대 레이트로 수행되어 새로운 데이터를 기록할 수 있는 소거된 블록이 존재한다. 리클레임 작동 레이트의 증가는 호스트 데이터의 프로그래밍 레이트를 감소시킨다. 제3 모드는 유효 데이터의 수가 임계값을 초과할 때 또는 소거된 블록에서 공간의 양이 임계값 아래로 떨어지거나 일부 다른 기준에 기초하여 떨어질 때 시작될 수 있다.
적응형 스케쥴링 -상세한 예
이제 메모리가 직접적인 데이터 파일 저장 인터페이스를 갖는 예를 사용하여 적응형 스케쥴링 시스템에 따라 리클레임 작동을 수행하기 위해서 비휘발성 메모리를 관리하는 반면, 호스트 데이터의 프로그래밍의 일정한 레이트를 유지하는 것이 상세히 설명될 것이다. 이러한 예는 적합한 인터리브 비율이 메모리 제어기에 의해 모니터되는 파라미터로부터 계산될 수 있는 방법을 도시한다. 이러한 메모리에 대해서 시간에 걸친 메모리 공간의 페이지의 다른 조건이 도22에서 상세히 도시된다. 또한, 메모리 어레이에서 블록 또는 페이지에 대한 가능한 다수의 전이가 도시된다. 메모리 어레이는 블록들이 포함되는데, 각각의 블록은 다수의 페이지를 포함한다. "블록" 및 "페이지"라는 용어는 이런 예에서 사용될 것이지만, 예는 또한 유닛의 삭제로 인한 메타블록 및 메타페이지를 가지며 개별적으로 프로그래밍하는 메모리에서 작동한다. 블록은 언제든 세 개의 조건들 중 하나에서 처리되고, 이러한 블록들 내의 페이지는 다섯 개의 조건들 중 하나에서 처리된다. 시간에 걸친 이러한 다섯 개의 조건들 각각에서의 페이지의 수는 도22에서 나타내진다.
데이터 저장을 위한 블록 분류
파일 블록: 파일 블록은 호스트 데이터로 채워지고 어떠한 무용 데이터도 포함하지 않는다. 실제 문제로써, 파일 블록은 예2에 대해서, 최소의 프로그래밍되지 않은 페이지들의 수를 포함하도록 허용될 수 있다.
부분적인 블록: 부분적인 블록은 일부 호스트 데이터 및 또한 일부 소거된 페이지들 및/또는 무용 페이지들을 포함한다.
소거된 블록: 소거된 블록 풀에서 완전히 소거된 블록.
이러한 세 개의 카테고리 외에도, 일부 블록들이 무용 데이터로 채워질 수 있다. 예를 들어, 파일이 호스트에 의해 지워지거나 삭제되도록 나타내지자마자, 파일을 포함하는 블록은 가비지 콜렉션에 대해 스케쥴링된다. 일부 이러한 블록들이 데이터로 채워진다. 그러나 이런 블록은 다수의 자원을 필요로 하지 않고 신속 하게 소거되기 때문에, 이러한 블록은 현재 계산의 목적으로 고려되지 않는다.
데이터 저장을 위한 페이지 분류
다음은 페이지 및 동일한 블록에서 다른 페이지들의 조건에 따라 메모리 어레이의 페이지들을 분류하는데 사용되는 용어 리스트이다.
파일 블록 페이지( FBP ): 이는 파일 블록에 포함된 유효 호스트 데이터의 페이지 수이다.
데이터 페이지( DP ): 이는 부분적인 블록에 포함된 유효 호스트 데이터의 페이지 수이다.
무용 페이지( OP ): 이는 부분적인 블록에 포함된 무용 호스트 데이터의 페이지 수이다.
소거된 페이지( EP ): 이는 부분적인 블록에 포함된 소거된 페이지의 수이다. 무용 페이지(OP) 및 소거된 페이지(EP)는 함께 메모리 어레이에서 리클레임가능한 공간을 형성하도록 고려될 수 있다.
소거된 블록 페이지( EBP ): 이는 소거된 블록에 포함된 소거된 페이지의 수이다.
단지 무용 데이터만을 포함하는 블록에서 존재할 수 있는 페이지는 이런 페이지가 오래 존재하지 않고, 그들을 리클레임하도록 필요한 가비지 콜렉션에 상당한 부담이 존재하지 않기 때문에, 이 리스트에서 무시된다.
상기 목록화된 다섯 개의 상호 배타적인 카테고리 외에도, 메모리 어레이에서 페이지에 관련된 다른 두 개는 총 페이지들 및 총 데이터 페이지들이다. 이러한 용어는 상기 카테고리에 있는 페이지를 설명한다. 이러한 개수는 메모리 제어기에 의해 탐지된다.
총 페이지( TP ): 이는 데이터 저장에 사용 가능한 장치에서 페이지의 총 수이고, 장치의 데이터 용량을 나타낸다.
총 데이터 페이지( TDP ): 이는 언제든지 유효 호스트 데이터를 포함하는 페이지의 수이다. 데이터 페이지는 파일 블록이거나 부분적인 블록일 수 있다.
데이터 카피 작동의 위상: 두 개의 데이터 카피 작동의 위상이 있지만, 이들은 아래의 적응형 스케쥴링의 분석에서 별도로 고려될 필요가 없다.
(1) 가비지 콜렉션 위상: 무용 페이지는 장치에 존재하고, 가비지 콜렉션 작동은 그들을 제거하도록 수행된다.
(2) 블록 콘솔리데이션 위상: 블록 콘솔리데이션 작동은 부분적인 블록에서 연합된(tied up) 소거된 용량을 회복하도록 수행된다.
일반적으로, 가비지 콜렉션을 우선 행하고, 호스트가 유효 데이터로써 동일한 파일에 데이터를 기록한다면 단지 유효하고 소거된 공간을 포함하는 블록이 콘솔리데이션없이 여전히 사용될 수 있기 때문에 블록 콘솔리데이션을 연기하는 것이 바람직하다. 파일이 닫히는 곳에서조차, 파일은 재오픈될 수 있고, 데이터는 프로그램 블록에 기록된다. 무용 데이터를 갖는 블록은 다시 사용될 수 있기 전에 가비지 콜렉팅되어야만 해서, 이러한 가비지 콜렉션을 연기하는 이점이 없다.
장치 작동으로 인한 페이지 전이
다음 페이지 전이는 도22에서 도시된다:
소거된 블록 페이지(1)로의 무용 페이지: 유효 데이터 페이지가 그것으로부터 카피된 후에 무용 페이지를 포함하는 블록이 소거될 때 발생한다.
데이터 페이지(2)로의 데이터 페이지: 소스 블록으로부터 목적 블록으로 카피되는 데이터 페이지에 관한 것이다.
소거된 블록 페이지(3)로의 소거된 페이지: 모든 유효 데이터 페이지가 소스 블록으로부터 목적 블록으로 카피된 후에, 목적 블록에서 프로그래밍되는 소거된 페이지는 소스 블록이 삭제될 때 효율적으로 소스 블록에서 소거된 블록 페이지가 된다.
소거된 페이지(4)로의 소거된 블록 페이지: 유효 데이터 페이지가 소스 블록으로부터 소거된 블록으로 카피된 후에, 소거된 블록에서 나머지 소거된 블록 페이지가 소거된 페이지가 된다.
파일 블록 페이지(5)로의 데이터 페이지: 블록이 채워질 때 부분적인 블록에서 유효한 데이터 페이지가 파일 블록 페이지가 된다.
파일 블록 페이지(6)로의 소거된 블록 페이지: 블록이 호스트에 의해 기록된 데이터로 채워질 때 소거된 블록 페이지는 파일 블록 페이지가 된다.
도23은 이러한 전이들이 메모리 어레이의 블록에서 발생하는 방법의 예를 도시한다. 도23A는 메모리 어레이에서 네 개의 블록(A-D)을 도시하는데, 다른 블록은 다른 조건의 다른 양의 데이터를 갖는다. 블록(A)은 페이지(0-3) 각각이 유효 데이터(어둡게 나타내짐)를 포함하기 때문에 유효 데이터로 채워진다. 그러므로 블록(A)은 파일 블록이도록 고려된다. 블록(B)은 유효 데이터(데이터 X)를 포함하는 페이지(0), 무용 데이터(사선으로 나타내짐)를 포함하는 페이지(1,2) 및 소거된 상태인 페이지(3)를 포함한다. 블록(B)이 일부 유효 데이터를 포함하지만, 유효 데이터로 채워지지 않기 때문에, 블록(B)은 부분적인 블록으로 고려된다. 블록(C)은 유효 데이터로 채워진 페이지(0,1) 및 소거된 상태의 페이지(2,3)를 갖는다. 블록(C)은 또한 일부 유효 데이터를 포함하지만 유효 데이터로 채워지지 않기 때문에 부분적인 블록이도록 고려된다. 블록(D)은 완전히 소거되고, 어떠한 데이터도 포함하지 않으며, 그러므로 소거된 블록이라 고려된다.
도23A의 블록이 단지 파일 블록이기 때문에, 파일 블록 페이지(FBP)의 수는 블록(A)에서 페이지 수와 동일한데, 즉 네 개이다. 데이터 페이지(DP)의 수는 블록(B,C)에서 유효 페이지의 수이고, 그러므로 세 개이다. 무용 페이지(OP)의 수는 블록(B,C)에서 무용 데이터로 채워진 페이지 수이고, 두 개이다. 소거된 페이지(EP)의 수는 블록(B,C)에서 소거된 상태의 페이지 수이고, 세 개이다. 블록(D)은 단지 소거된 블록이기 때문에, 소거된 블록 페이지(EBP)의 수는 블록(D)에서 페이지 수이고, 네 개이다. 이런 예에서 총 페이지(TP)는 간단히 모든 블록에서 페이지의 총 수이고, 여기서는 열여섯 개의 페이지이다. 총 데이터 페이지(TDP)는 유효 데이터를 포함하는 페이지 수이고, 여기서 일곱 개의 페이지이다.
도23A는 카피된 블록(B)의 페이지(0)로부터 블록(C)의 페이지(2)로의 유효 데이터(X)를 도시한다. 이는 유형(2) DP에서 DP로의 전이의 예이다. 결과적으로, 도23B에서, 단지 무용 데이터가 블록(B)에 남아서, 블록(B)은 이런 시점에서 소거를 위해 일렬로 놓일 수 있다. 새로운 유효 데이터(Y)는 도면(23B)에서 블록(D)에 기록되어 블록(D)의 페이지(0)가 데이터 페이지가 된다. 블록(D)의 페이지(1-3)는 유형 (4) 전이에서 소거된 블록 페이지에서 소거된 페이지로 변한다. 도23C는 블록(B)이 소거된 후에 블록(A-D)을 도시한다. 페이지(0-2)는 유형 (1) 전이에서 무용 페이지로부터 소거된 블록 페이지로 변환된다. 블록(B)의 페이지(3)는 도23C에서 부분적인 블록에서 소거된 페이지로부터 소거된 블록의 소거된 블록 페이지로 변한다. 이는 유형 (3) 전이의 예이다. 또한, 도23C에서, 유효 데이터(Y)는 블록(D)의 페이지(0)로부터 블록(C)의 페이지(3)로 카피되어, 도23D에서 도시된 바와 같이 유효 데이터로 채워지는 블록(C)의 결과를 가져온다. 그러므로 도23D의 블록(C)은 파일 블록으로 고려된다. 이전에 데이터 페이지였던 블록(C)의 페이지(0-2)는 블록(C)이 유형 (5) 변이에서 파일 블록이 될 때 파일 블록 페이지가 된다. 또한, 도23D에서, 블록(B)은 블록(B)을 채우는 유효 데이터와 함께 프로그래밍된다. 블록(B)의 페이지가 유형 (6) 전이에서 소거된 블록 페이지에서 파일 블록 페이지로 변한다.
당면한 적응형 스케쥴링 방식의 한 가지 목적은 호스트 기록 및 리클레임 작동을 인터리브하여, 호스트 데이터를 프로그래밍하는 일정한 레이트를 제공하는 것이다. 그러므로 총 데이터 페이지(TDP)의 증가 레이트는 총 데이터 페이지(TDP)가 총 페이지(TP)와 동일할 때까지 즉, 메모리가 꽉 찰 때까지 일정하다. 임의의 근사값은 현재 예에서 여러 파라미터를 계산하여 만들어진다. 그러나 다른 예가 다른 가정에 기초할 수 있거나 다른 방법으로 계산을 수행할 수 있다. 현재 계산에서, 카피된 데이터의 데이터 그룹 구조는 무시된다. 그러므로 데이터 그룹은 카피될 때, 나눠질(split) 수 있다. 데이터 페이지는 소스 블록으로부터 카피되어 목적 블록의 사용 가능한 소거된 페이지를 채울 수 있어서, 나머지(remainder)는 별도의 목적 블록에 카피될 수 있다.
제어기는 리클레임 작동 및 새로운 데이터 기록 사이의 적합한 인터리브 비율을 계산하는데 사용되는 임의의 파라미터 값을 유지한다. 여기서 나타내지는 계산은 계산을 위한 데이터의 기본적인 유닛으로써 페이지를 사용하지만, 블록 또는 메타블록과 같은 다른 유닛이 또한 사용될 수 있다. 인터리브 비율은 후술되는 바와 같이 제어기, 총 페이지(TP), 총 데이터 페이지(TDP), 부분적인 블록 페이지(PBP) 및 소거된 블록 페이지(EBP)에 의해 유지되는 파라미터 값만을 사용하여 계산될 수 있다.
(호스트 데이터):(카피 데이터) 인터리브 비율의 도출
장치가 채워지기 전에 장치에 기록될 수 있는 호스트 데이터의 부가적인 페이지 수는 수학식에 의해 제공된다.
기록될 호스트 데이터 = TP-TDP
소거된 페이지(EP) 및 데이터 페이지(DP)의 수는 또한 다음과 같이 제어기에 의해 모니터되는 파라미터를 사용하여 기록될 수 있다.
소거된 페이지(EP) = TP-TDP-OP-EBP
데이터 페이지(DP) = PBP-EP-OP
= PBP-(TP-TDP-OP-EBP)-OP
= TDP+PBP+EBP-TP
카피되어야만 하는 유효 데이터의 양은 모든 부분적인 블록이 동일한 수의 유효 데이터 페이지를 포함한다는 근사치에 기초하여 결정된다. N은 블록에서 페이지의 총수이고, 부분적인 블록에서 유효 페이지의 평균 수는 N*DP/PBP이다.
단지 부분적인 블록에 존재하는 데이터 페이지 조각이 카피될 필요가 있다. 나머지는 데이터가 카피되는 목적 블록이 되는 부분적인 블록에 존재한다. 부분적인 블록이 모든 카피를 위해 목적 블록으로서 사용되고 소거된 블록이 사용되어야만 하지 않는다고 가정된다. 데이터가 카피되어야만 하는 블록의 수는 소거되는 각각의 부분적인 블록이 그로부터 우선 카피되는 유효 데이터를 가진 때부터 생성될 소거된 블록의 수와 동일하다. 생성되는 소거된 블록의 수는 (PBP-DP)/N이다.
그러므로 블록당 유효 페이지의 평균 수만큼 삭제될 블록의 수를 승산하는(multiply) 것은 메모리 어레이에서 모든 리클레임가능한 공간을 리클레임하도록 카피될 데이터의 양에 대한 근사값을 제공한다.
카피될 데이터 = {N*DP/PDP}*{(PBP-DP)/N}
= DP*(PBP-DP)/PBP
= (TDP+PBP+EBP-TP)*(PBP-TDP-PBP-EBP+TP)/PBP
= (TDP+PBP+EBP-TP)*(TP-TDP-EBP)/PBP
카피 작동을 위한 소스 블록이 가장 적은 수의 카피될 유효 데이터를 갖는 블록으로써 실제로 선택됨에 따라, 카피될 데이터의 수가 과대 평가된다는 것을 주의하자. 그러므로 모든 부분적인 블록이 동일한 비율의 데이터 페이지를 포함하는 간략화에 기초하여 데이터를 카피하는 레이트가 필요한 것보다 약간 더 높을 것이 다.
(호스트 데이터):(카피 데이터) 인터리브 비율
=(기록될 호스트 데이터)/(카피될 데이터)
=(TP-TDP)*PBP/(TDP+PBP+EBP-TP)/(TP-TDP-EBP)
이는 호스트 데이터의 프로그래밍이 메모리가 찰 때까지 일정한 레이트로 계속되도록 인터리브 비율을 제공한다. 비율은 주기적으로 업데이트될 수 있거나 일부 트리거링 이벤트에 응답하여 업데이트될 수 있다. 이런 비율은 호스트 데이터 프로그래밍의 일정한 레이트를 허용하기 위해서 리클레임 작동을 스케쥴링하는데 사용될 수 있는 공식의 일례이다. 다른 공식이 또한 사용될 수 있다. 인터리브 비율을 계산하기 위한 공식은 상술된 바와 동일한 계산에 기초할 수 있거나, 실제 메모리에서의 경험에 기초할 수 있다. 공식은 계산에서 무시하기 위한 어떤 팩터에 대한 부가적인 가정을 행함으로써 간략화될 수 있다. 대안적으로, 더 복잡한 공식이 블록을 삭제함으로써 취해지는 시간과 동일한 부가적인 팩터를 고려할 수 있거나, 소거된 블록이 가비지 콜렉션에 대한 목적 블록으로써 필요로 될 수 있다는 가능성을 고려할 수 있다.
상기 예의 메모리가 파일 기반 호스트 인터페이스인 반면, 본 발명의 양상은 섹터 기반 호스트 인터페이스 또는 일부 다른 호스트 인터페이스를 사용하는 메모리에 적용될 수 있다. 섹터 기반 인터페이스를 갖는 일부 메모리는 설명된 기술을 적용하는 것으로부터 많은 이득을 가져오는 충분한 정보를 필요로 할 수 있는 반면, 수행시 일부 개선이 성취될 수 있다. 게다가, 섹터 기반 인터페이스를 갖는 일 부 메모리는 FAT를 해석할 수 있거나, 그렇지 않으면 저장된 데이터의 조건에 대한 부가적인 정보를 획득한다. 일부 호스트는 저장된 데이터에 관한 제어기로 정보를 제공하도록 부가적인 명령어를 사용할 수 있다. 이러한 정보는 다른 점에서 가능한 것보다 이전 시간에 리클레임을 스케쥴링하는데 사용될 수 있다.
호스트 작동
일부 예에서, 비휘발성 메모리에서 리클레임 작동은 여러 모드에서 다르게 관리될 수 있다. 상술된 바와 같이, 리클레임 작동은 제1 모드에서 (일부 예에서 0을 포함하는) 일부 최소 레이트에서 작동할 수 있고, 제2 모드에서 적응형 방법으로 작동할 수 있으며, 제3 모드에서 최대 레이트로 작동할 수 있다. 리클레임 모드는 소정의 기준에 따라 메모리 제어기에 의해 선택될 수 있다. 리클레임 모드는 또한 일부 예에서 호스트에 의해 제어될 수 있다. 호스트는 세 개의 설명된 모드들 중 어떤 것이 선택되는지 결정할 수 있다. 게다가, 호스트는 현재 호스트 활동 또는 기대되는 호스트 활동에 기초하여 적절한 리클레임 모드를 선택하기 위한 명령어를 가질 수 있다. 호스트 시스템은 도1에 도시된 바와 같은 메모리 시스템으로부터 물리적으로 분리될 수 있다. 대안적으로, 온-카드 애플리케이션을 수행하는 메모리 카드 내의 프로세서는 호스트로써 고려될 수 있다. 이런 구조는 미국 가출원 제 60/705,388호에서 설명된다.
메모리의 리클레임 모드에 관한 제1 호스트 명령어는 인터리브 작동 대신 연속적인 리클레임 작동을 허용하는 "리클레임_온(Reclaim_on)" 명령어이다. 이런 방법으로 행해지는 리클레임 작동은 이들이 호스트 명령의 실행에 임의의 지연을 야 기하지 않기 때문에 배경 작동이 고려되고, 호스트에 투명하다. "리클레임_온"은 호스트가 어떤 시간 동안 부가적인 명령어를 전송하지 않을 것이라고 메모리에게 말하는 "유휴" 명령어와 동일하다. 일부 시스템에서, 동일한 명령어가 존재할 수 있다. 결과적인 리클레임_온 모드는 다른 호스트 명령어가 수신될 때마다 종료한다.
"리클레임_노멀(Reclaim_normal)" 명령어는 메모리가 디폴트 리클레임 모드에서 작동하도록 한다. 이는 적응형 스케쥴에 따라 리클레이밍하는 것을 의미할 수 있거나, 일부 소정의 기준에 기초하여 리클레임 모드를 선택하는 메모리 제어기에 리클레임 모드 선택 제어를 제공하는 것을 의미한다. 메모리는 종료하기 위해서 리클레임_온 모드를 야기하는 호스트 명령어가 수신될 때 이런 모드에 디폴트할 수 있다.
"리클레임_오프(Reclaim_off)" 명령어는 제지될 리클레임 작동 및 단지 수행될 호스트 작동을 야기한다. 이런 모드는 최대 호스트 데이터 기록 수행을 제공하도록 선택될 수 있다. 이런 모드는 리클레임_온 또는 리클레임_노멀 명령어에 의해서 종료된다.
리클레임 레이트의 내림 차수에서 가능한 리클레임 모드의 계층은:
리클레임 _온: 장치는 다른 명령어가 수신될 때까지 리클레임 작동을 계속한다.
최대 인터리브: 리클레임 작동은 정해진 최대 인터리브 비율로 호스트 데이터 기록 작동과 함께 인터리브된다. 이는 적응형 인터리브 비율에 대한 상위 제한 이다.
적응형 인터리브: 리클레임 작동은 적응형 인터리브 비율에 따른 호스트 데이터 기록 작동과 함께 인터리브된다.
최소 인터리브: 리클레임 작동은 정해진 최소 인터리브 비율로 호스트 데이터 기록 작동과 함께 인터리브된다.
리클레임 _ 오프: 리클레임 작동이 제지되고, 단지 호스트 데이터 기록 작동이 수행된다.
상기 설명은 일정한 레이트에서 호스트 데이터를 기록하는 것에 관한 것이라는 것이 주의되어야만 한다. 인터리빙된 리클레이밍에 의해 제공되는 일정한 레이트는 다수의 사이클을 통해 발견된다. 개별적인 사이클의 레벨에서 발견될 때, 호스트 데이터의 기록은 리클레임 작동의 버스트와 함께 변화를 주는 호스트 기록 작동의 주기적인 버스트에서 행해진다. 그러나 사이클당 호스트 데이터 기록 레이트 또는 다수의 사이클을 통한 호스트 데이터 기록 레이트가 추정되는 레이트에서 일정하게 남을 수 있어서, 메모리 어레이가 찰 때까지 유지될 수 있다.
상기 설명에서, 리클레임가능한 공간이 메모리 어레이에서 소거된 블록으로 변환되는 레이트가 일정한 것으로 도시된다. 그러나 사이클당, 또는 시간 유닛당 리클레임 작동 수가 일정할 수 있을지라고, 소거된 블록이 리클레임 작동에 의해 생성되는 레이트가 일정하지 않을 수 있다. 이는 리클레임될 블록이 선택될 수 있기 때문인 것이라서, 리클레임되기 쉬운 블록이 우선 리클레이밍된다. 그러므로 적응형 리클레임이 시작될 때, 블록은 리클레임되는 블록이 유효 데이터의 R 개의 페 이지를 갖기 때문에 카피되는 데이터의 모든 R 개의 페이지에 대해 리클레임될 수 있다. 이후에, 유효 데이터의 2R 개의 페이지를 갖는 블록이 리클레임될 수 있어서, 생성되는 모든 소거된 블록에 대해서 2R 카피 작동이 취해진다. 그러므로 소거된 블록이 리클레임의 의해 생성되는 레이트가 이전 레이터의 반으로 감소된다. 다른 예에서, 소거된 블록이 생성되는 레이트는 블록이 리클레임되는 순서에 따라 다른 방법으로 바뀔 수 있다. 블록이 그들에게 포함된 유효 데이터의 양에 대한 관련없이 리클레임된다면, 소거된 블록이 리클레임에 의해 생성되는 레이트가 상당히 일정할 것이다.
본 발명의 여러 양상은 그의 예시적인 실시예에 관하여 설명될지라도, 본 발명은 첨부된 청구항의 전체 범위 내에서 보호하기 위해서 권리를 부여받는다.

Claims (21)

  1. 블록의 소거 단위를 가진 비휘발성 메모리 내의 공간을 관리하는 방법으로서, 상기 비휘발성 메모리는 유효 데이터로 부분적으로 채워진 블록들을 가지며, 상기 방법은,
    (a) 호스트로부터 수신된 호스트 데이터를 상기 비휘발성 메모리에 프로그래밍하는 것과 (b) 이전에 저장된 유효 데이터를 유효 데이터로 부분적으로 채워진 블록들로부터 다른 블록들에 카피하는 것을 인터리빙하는 단계를 포함하는데, 상기 인터리빙은, 상기 호스트로부터 수신된 데이터를 상기 비휘발성 메모리에 기록하는 모든 남아있는 호스트 기록(all remaining host writes) 대 상기 비휘발성 메모리 내의 공간을 리클레임하기 위해 이전에 저장된 유효 데이터를 카피하는 모든 남아있는 리클레임 기록(all remaining reclaim writes)의 비율로부터 계산되는 인터리브 비율에 따라서 수행되는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  2. 제1항에 있어서, 상기 인터리브 비율은 상기 호스트로부터 수신된 호스트 데이터를 상기 비휘발성 메모리에 일정한 레이트(constant rate)로 프로그래밍하는 것을 제공하도록 계산되는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  3. 제2항에 있어서, 상기 인터리브 비율은 상기 비휘발성 메모리가 유효 데이터로 가득 채워질 때까지 상기 일정한 레이트로 프로그래밍하는 것을 계속하도록 계산되는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  4. 제1항에 있어서, 상기 인터리브 비율은 호스트 명령에 응답하여 재계산되는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  5. 제1항에 있어서, 상기 인터리브 비율은 상기 비휘발성 메모리에 저장될 수 있는 추가 데이터의 추정으로부터 도출되는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  6. 제5항에 있어서, 상기 비휘발성 메모리에 저장될 수 있는 추가 데이터의 추정은 호스트 파일이 무용(obsolete)함을 나타내는 호스트로부터 수신된 정보로부터 도출되는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  7. 제1항에 있어서, 상기 인터리빙은, 이전에 저장된 데이터의 카피를 금지하는 리클레임 오프 모드와 호스트 데이터를 프로그래밍하지 않고 이전에 저장된 데이터의 카피를 허용하는 리클레임 온 모드로부터 인터리빙 모드를 선택하는 호스트 명령에 응답하여 발생하는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  8. 페이지의 프로그래밍하는 동작 단위와 블록의 소거하는 동작 단위를 가진 비휘발성 메모리 어레이 내의 공간을 리클레임하는 방법으로서, 하나의 블록은 두 개 이상의 페이지를 포함하고, 상기 메모리 어레이는 각 블록이 유효 데이터로 부분적으로 채워진 복수의 블록을 포함하며, 상기 방법은,
    상기 복수의 블록에 저장된 유효 데이터의 양에 의거한 레이트로 상기 복수의 블록에 저장된 유효 데이터를 카피하는 단계; 및
    상기 복수의 블록의 개개의 블록 내의 모든 유효 데이터가 카피된 후에, 상기 복수의 블록의 개개의 블록을 소거하는 단계;
    를 포함하고,
    상기 카피하는 단계는 호스트 기록 동작들과 인터리빙되고, 상기 레이트는 호스트 기록 동작에 허용된 시간 내에 카피된 유효 데이터의 양에 의해 설정되고,
    상기 레이트는, 반복 사이클의 단일 발생에서 기록된 호스트 데이터의 페이지 수에 대한 카피된 유효 데이터의 페이지 수의 비율에 의해 설정되고,
    상기 비율은 등식 r=x/y으로부터 계산되고, 상기 등식에서 x는 상기 복수의 블록 내의 공간을 리클레임하기 위해 카피되어야 하는 상기 복수의 블록에 포함된 유효 데이터 양의 추정이고, y는 상기 메모리 어레이가 가득 채워지기 전에 상기 메모리 어레이에 저장될 수 있는 추가 호스트 데이터의 양인 것을 특징으로 하는 비휘발성 메모리 어레이 내의 공간을 리클레임하는 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 제8항에 있어서, 상기 레이트는, 상기 메모리 어레이가 상기 호스트 기록 동작들에 의해 채워지게 되는 동안 유효 데이터를 카피하는 것을 상기 호스트 기록 동작들 간에 균일하게 분배하도록 계산되는 것을 특징으로 하는 비휘발성 메모리 어레이 내의 공간을 리클레임하는 방법.
  13. 제8항에 있어서, 상기 복수의 블록은, 대체 데이터를 제공하지 않고 무용 데이터를 식별하는 호스트 명령에 의해 무용하다고 식별되는 무용 데이터를 포함하는 것을 특징으로 하는 비휘발성 메모리 어레이 내의 공간을 리클레임하는 방법.
  14. 블록의 소거 단위를 가진 비휘발성 메모리 내의 공간을 관리하는 방법에 있어서, 상기 방법은,
    (a) 호스트로부터 수신된 호스트 데이터를 상기 비휘발성 메모리에 프로그래밍하는 것과 (b) 이전에 저장된 유효 데이터를 한 블록으로부터 다른 블록으로 카피하는 것을 인터리빙하는 단계를 포함하는데, 상기 인터리빙은, 상기 비휘발성 메모리가 호스트 데이터로 채워지는 동안 상기 호스트 데이터가 복수의 사이클에 걸쳐 일정한 레이트로 프로그램되도록, 상기 호스트로부터 수신된 데이터를 상기 비휘발성 메모리에 기록하는 모든 남아있는 호스트 기록 대 상기 비휘발성 메모리 내의 공간을 리클레임하기 위해 이전에 저장된 유효 데이터를 카피하는 모든 남아있는 리클레임 기록의 비율로부터 계산되는 인터리브 비율에 따라서 반복 사이클에서 수행되는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  15. 제14항에 있어서, 상기 인터리브 비율은, 상기 메모리 어레이에 프로그래밍될 수 있는 추가 호스트 데이터 총량의 추정과 상기 메모리 어레이 내의 모든 리클레임 가능 공간을 리클레임하기 위해 한 블록으로부터 다른 블록으로 카피되어야 하는 이전에 저장된 유효 데이터 총량의 추정으로부터 계산되는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  16. 제15항에 있어서, 상기 카피되어야 하는 이전에 저장된 유효 데이터 총량의 추정은, 유효 데이터로 부분적으로 채워지는 블록들에 걸쳐 유효 데이터가 균등하게 분배된다고 가정함으로써 얻어지는 것을 특징으로 하는 비휘발성 메모리 내의 공간을 관리하는 방법.
  17. 메모리 시스템에 있어서, 상기 메모리 시스템은,
    각 블록이 최소 소거 단위인 복수의 블록을 포함하는 비휘발성 메모리 어레이; 및
    상기 메모리 어레이에 저장된 호스트 데이터에 대한 물리-논리 맵핑의 기록을 유지하는 메모리 제어기;
    를 포함하고,
    상기 기록은 복수의 엔트리를 갖는데, 개개의 엔트리는 고유 파일 식별자(unique file identifier)와 오프셋(offset)에 의해 논리 어드레스를 나타내고,
    상기 메모리 제어기는 저장된 데이터가 유효한지 또는 무효한지 여부를 호스트에 의해 제공되는 정보에 따라서 결정하고,
    상기 메모리는 제어기는, 남아있는 리클레임 가능 공간을 리클레임하기 위해 카피되는 데이터의 양과 상기 메모리 어레이가 가득 채워지기 전에 기록될 수 있는 추가 호스트 데이터의 총량에 의거한 레이트로 유효 데이터를 카피하고, 상기 카피는 호스트 기록 동작들과 인터리빙되는 것을 특징으로 하는 메모리 시스템.
  18. 제17항에 있어서, 상기 레이트는 호스트 명령에 응답하여 재계산되는 것을 특징으로 하는 메모리 시스템.
  19. 제17항에 있어서, 상기 레이트는, 상기 메모리 어레이가 유효한 호스트 데이터로 가득 채워질 때까지, 호스트 데이터를 일정한 레이트로 프로그래밍하는 것을 제공하도록 계산되는 것을 특징으로 메모리 시스템.
  20. 제17항에 있어서, 상기 메모리 시스템은 표준 인터페이스를 통해 상기 호스트와 통신하는 제거 가능한 메모리 카드에서 구현되는 것을 특징으로 하는 메모리 시스템.
  21. 제17항에 있어서, 상기 호스트는 호스트 파일들을 참조하기 위해 고유 파일 식별자들을 사용하여 호스트 파일들에 관한 정보를 제공하는 것을 특징으로 하는 메모리 시스템.
KR1020087005059A 2005-08-03 2006-08-01 스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리 KR101089150B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US70538805P 2005-08-03 2005-08-03
US60/705,388 2005-08-03
US11/259,423 US7409489B2 (en) 2005-08-03 2005-10-25 Scheduling of reclaim operations in non-volatile memory
US11/259,439 2005-10-25
US11/259,439 US7984084B2 (en) 2005-08-03 2005-10-25 Non-volatile memory with scheduled reclaim operations
US11/259,423 2005-10-25
PCT/US2006/030166 WO2007019198A2 (en) 2005-08-03 2006-08-01 Non-volatile memory with scheduled reclaim operations

Publications (2)

Publication Number Publication Date
KR20080042851A KR20080042851A (ko) 2008-05-15
KR101089150B1 true KR101089150B1 (ko) 2011-12-02

Family

ID=38083567

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087005059A KR101089150B1 (ko) 2005-08-03 2006-08-01 스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리

Country Status (4)

Country Link
EP (1) EP1910928A2 (ko)
JP (1) JP4977703B2 (ko)
KR (1) KR101089150B1 (ko)
WO (1) WO2007019198A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
JP4461187B1 (ja) 2008-12-24 2010-05-12 株式会社東芝 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
US8239614B2 (en) * 2009-03-04 2012-08-07 Micron Technology, Inc. Memory super block allocation
JP2011192260A (ja) 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
US8341372B2 (en) * 2010-04-29 2012-12-25 Freescale Semiconductor, Inc. Emulated electrically erasable (EEE) memory and method of operation
TW201140315A (en) * 2010-05-11 2011-11-16 Jmicron Technology Corp Method for estimating capacity usage status of storage unit, and associated memory device and controller thereof
EP3353627B1 (en) * 2015-09-25 2022-01-19 Hitachi Vantara LLC Adaptive storage reclamation
CN106897022B (zh) * 2015-12-17 2019-05-31 腾讯科技(深圳)有限公司 一种管理存储设备的方法及装置
KR102611638B1 (ko) * 2016-09-27 2023-12-08 삼성전자주식회사 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템
US11099760B2 (en) * 2017-12-14 2021-08-24 Intel Corporation Background data refresh using a system timestamp in storage devices
CN111090595B (zh) * 2019-11-19 2022-12-20 中国航空工业集团公司西安航空计算技术研究所 一种nand flash垃圾回收均衡优化方法
WO2023082252A1 (zh) * 2021-11-15 2023-05-19 华为技术有限公司 一种垃圾回收方法、存储器和存储器管理装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000060469A1 (en) * 1999-03-31 2000-10-12 Koninklijke Philips Electronics N.V. A method of scheduling garbage collection
US20040073748A1 (en) * 2002-10-09 2004-04-15 Rudelic John C. Queued copy command
US20050149686A1 (en) 2004-01-05 2005-07-07 International Business Machines Corporation Method and apparatus for dynamic incremental defragmentation of memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63231643A (ja) * 1987-03-20 1988-09-27 Fujitsu Ltd 実時間ガ−ベジコレクシヨン方式
JP4017178B2 (ja) * 2003-02-28 2007-12-05 スパンション エルエルシー フラッシュメモリ及びメモリ制御方法
US7437557B2 (en) * 2003-06-03 2008-10-14 Lg Electronics Inc. Garbage collection system and method for a mobile communication terminal

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000060469A1 (en) * 1999-03-31 2000-10-12 Koninklijke Philips Electronics N.V. A method of scheduling garbage collection
US20040073748A1 (en) * 2002-10-09 2004-04-15 Rudelic John C. Queued copy command
US20050149686A1 (en) 2004-01-05 2005-07-07 International Business Machines Corporation Method and apparatus for dynamic incremental defragmentation of memory

Also Published As

Publication number Publication date
WO2007019198A3 (en) 2007-06-21
JP2009503744A (ja) 2009-01-29
KR20080042851A (ko) 2008-05-15
EP1910928A2 (en) 2008-04-16
WO2007019198A2 (en) 2007-02-15
JP4977703B2 (ja) 2012-07-18

Similar Documents

Publication Publication Date Title
KR101089150B1 (ko) 스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리
US7984084B2 (en) Non-volatile memory with scheduled reclaim operations
US7877540B2 (en) Logically-addressed file storage methods
US7877539B2 (en) Direct data file storage in flash memories
US8214583B2 (en) Direct file data programming and deletion in flash memories
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7984233B2 (en) Direct data file storage implementation techniques in flash memories
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
JP5350371B2 (ja) 記憶装置のためのストレージアドレス再マッピングのための方法およびシステム
US20070143560A1 (en) Non-volatile memories with memory allocation for a directly mapped file storage system
US20090182791A1 (en) Non-Volatile Memories And Method With Adaptive File Handling In A Directly Mapped File Storage System
US20070136553A1 (en) Logically-addressed file storage systems
JP2011519095A (ja) マルチバンク記憶装置のためのストレージアドレス再マッピングのための方法およびシステム
US20090164745A1 (en) System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
KR101464199B1 (ko) 연속 논리 주소 공간 인터페이스를 구비한 다이렉트 데이터 파일 시스템을 사용하는 방법
EP1960863A2 (en) Logically-addressed file storage
KR20080038368A (ko) 데이터 파일을 직접 저장하는 재프로그램가능 비휘발성메모리에 파일 데이터의 인덱싱
KR20090108695A (ko) 다이렉트 데이터 파일 메모리 시스템에서 lba 인터페이스를 관리하는 방법

Legal Events

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

Payment date: 20141103

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee