KR20080038363A - 직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및가비지 수집 - Google Patents

직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및가비지 수집 Download PDF

Info

Publication number
KR20080038363A
KR20080038363A KR1020087004662A KR20087004662A KR20080038363A KR 20080038363 A KR20080038363 A KR 20080038363A KR 1020087004662 A KR1020087004662 A KR 1020087004662A KR 20087004662 A KR20087004662 A KR 20087004662A KR 20080038363 A KR20080038363 A KR 20080038363A
Authority
KR
South Korea
Prior art keywords
file
data
block
blocks
erased
Prior art date
Application number
KR1020087004662A
Other languages
English (en)
Other versions
KR101377147B1 (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 KR20080038363A publication Critical patent/KR20080038363A/ko
Application granted granted Critical
Publication of KR101377147B1 publication Critical patent/KR101377147B1/ko

Links

Images

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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/7202Allocation control and policies
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Abstract

호스트 시스템 데이터 파일들은 파일 내의 데이터의 오프셋들 및 각각의 파일의 특정 아이덴티피케이션을 갖지만, 메모리에 대한 가상 어드레스 공간 또는 임의의 중간 논리적 어드레스를 사용하지 않는 큰 소거 블록 플래시 메모리 시스템으로 직접 기록된다. 파일들이 메모리에 저장되는 디렉토리 정보는 호스트에 의해서라기보다는 오히려, 메모리 시스템의 제어기에 의해 메모리 시스템 내에서 유지된다.
Figure P1020087004662
호스트, 데이터, 어드레스 공간, 디렉토리 정보, 메모리 시스템.

Description

직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및 가비지 수집{DATA CONSOLIDATION AND GARBAGE COLLECTION IN DIRECT DATA FILE STORAGE MEMORIES}
본 출원은 일반적으로 호스트 장치 및 메모리 시스템 사이의 인터페이스의 관리를 포함한, 반도체 플래시 메모리와 같은 재프로그래밍 가능한 비휘발성 메모리 시스템들의 작동에 관한 것이며, 특히 공통 대형 메모리 논리적 어드레스 공간(LBA) 인터페이스보다는 오히려, 데이터 파일 인터페이스의 효율적인 사용에 관한 것이다.
Alan W. Sinclair 단독 명의, 또는 Peter J. Smith와 공동 명의의 모두 2005년 2월 16일자로 출원된 계류중인 미국 특허 출원 번호 11/060,174, 11/060,248 및 11/060,249(이하에서, "종래의 출원들"로서 칭해짐)에서 설명되는 플래시 메모리의 다양한 작동들에서의 개선점들이 본원에 설명되어 있다.
추가적인 개선점들은 Alan W. Sinclair 및 Barry Wright의 관련된 미국 특허 출원들, 즉 모두 2006년 5월 8일자로 출원된 비-가출원 번호 11/382,224와 11/382,232, 및 가출원 번호 60/746,740과 60/746,742, 및 모두 2006년 7월 21일자로 출원된 명칭이 "Indexing Of File Data In Reprogrammable Non-Volatile Memories That Directly Store Data Files", "Reprogrammable Non-Volatile Memory Systems With Indexing of Directly Stored Data Files", "Methods of Managing Blocks in NonVolatile Memory" 및 "NonVolatile Memory With Block Management"인 비-가출원들에서 설명되어 있다.
본원에 인용된 모든 특허들, 특허 출원들, 아티클들 및 다른 간행물들, 문서들 및 사물들(things)은 모든 목적들을 위해 전체적으로 본원에 참조되어 있다. 포함된 간행물들, 문서들 또는 사물들 중 어느 하나 및 본 출원 사이에서 용어들의 정의 또는 이용에서 임의의 불일치 또는 상충이 존재하면, 본 출원의 용어들의 정의 또는 이용이 지배적이다.
데이터 통합은 본원에서 가비지 수집과 상이하게 취급되며, 적어도 부분적으로 상이한 알고리즘들에 의해 2개의 프로세스들이 구현된다. 파일 또는 메모리 블록이 쓸모없는 데이터를 포함할 때, 파일 또는 블록의 유효 데이터를 하나 이상의 다른 블록들로 이동시키기 위하여 가비지 수집 작동이 이용된다. 이것은 유효 데이터를 더 적은 수의 블록들 내로 모으므로, 일단 원래 소스 블록(들)이 소거되면 쓸모없는 데이터에 의해 차지된 용량을 자유롭게 한다. 데이터 통합에서, 새로운 파일을 기록하는 결과로서 통상적으로 생성되는 바와 같은, 하나의 부분적으로 채워진 블록의 유효 데이터는 또 다른 부분적으로 채워진 블록의 유효 데이터와 결합된다. 그 후, 지금 쓸모없는 복제 데이터를 포함하는, 데이터의 소스였던 원래 블록들 중 하나 또는 둘 모두는 가비지 수집이 스케줄링(sheduling)된다. 쓸모없는 데이터에 의해 차지된 메모리 저장 용량을 회복하기 위하여 개별적인 가비지 수집 작동들을 스케줄링하기 위해 큐(queue)들이 제공될지라도, 가비지 수집이 스케줄링되지 않고 조건들이 통합에 만족스러울 때, 바람직하게는 데이터 통합이 발생한다.
파일이 클로우즈(close)된 직후에 새롭게 기록된 파일의 데이터 통합을 스케줄링하기보다는 오히려, 새롭게 기록된 파일의 데이터는 자신들이 호스트로부터의 수신 이후에 프로그래밍되었던 원래 블록들에서 유지된다. 이것은 가장 통상적으로 새로운 데이터로 부분적으로 채워지는 블록을 포함한다. 데이터 파일이 쓸모없는 데이터를 생성하는 방식으로 삭제(delete)되거나 갱신되는 것이 통상적이기 때문에, 부분적으로 채워진 블록의 데이터의 통합은 파일이 클로우즈된 후에 가능한 한 길게 연기된다. 파일은 임의의 데이터를 재배치할 필요 없이 삭제될 수 있다. 따라서, 이와 같은 통합이 필요로 되기 전에 파일이 삭제되거나 갱신되는 경우, 통합은 피해진다. 이와 같은 통합은 메모리가 가득 찰 때, 메모리가 새로운 데이터의 추가적인 프로그래밍을 위해 충분히 소거된 블록들이 되도록 하기 위하여 필요로 될 수 있다. 그러나, 논리적 인터페이스가 사용되는 경우와 대조적으로, 파일 기반으로 한 메모리가 호스트에 의해 삭제되었던 데이터 파일을 보유하지 않기 때문에, 메모리는 통상적으로 통합이 지연될지라도 충분한 수의 소거된 블록들을 가질 것이다. 따라서, 생략된 통합에 의해 드는 시간이 절약되며, 결과적으로 메모리의 성능이 개선된다.
후술되는, 직접적인 파일 저장에서의 여러 다른 개선점들이 존재하며, 다음과 같이 요약될 수 있다:
1. 일단 파일이 클로우즈되면, 파일은 자신이 쓸모없는 데이터를 포함하지 않는다면 파일 가비지 수집 큐에 추가되지 않는다.
2. 파일의 가비지 수집은 또 다른 파일로부터의 데이터를 포함하는 공통 블록을 생성하지 않는다. 가비지 수집 동안 카피되어야 하는 파일에 대한 데이터는 파일에 대한 현재 프로그램 블록으로 프로그래밍된다. 프로그램 블록은 가비지 수집의 종점에서 부분적으로 프로그래밍된 채로 유지된다.
3. 파일의 삭제에 의해 쓸모없게 되는 블록 내의 파일 그룹의 결과로서 데이터가 공통 블록으로부터 재배치되어야 할 때, 나머지 유효 데이터는 프로그램 블록의 이용 가능한 공간 내로 재배치된다.
4. 프로그램 블록의 전체 또는 일부 내로 직접 기록된 호스트 데이터의 이동이 피해진다.
5. 파일의 가비지 수집 동안, 데이터는 파일에 대한 프로그램 블록에 재배치된다. 전용된 중간 카피 블록은 존재하지 않는다.
6. 데이터의 완전한 섹터들 내의 메모리 셀 어레이 및 메모리 시스템 제어기 버퍼 메모리 사이에서 데이터가 전달된다. 이것은 프로그래밍 동안 ECC의 발생 및 데이터 판독 동안 ECC의 검사를 허용한다.
7. 공통 블록 내의 데이터 그룹 또는 파일 그룹의 스타트(start)는 메타페이지의 스타트와 정렬된다. 결과적으로, 블록 통합을 위해 온-칩 카피가 사용될 수 있다. 프로그램 블록들 내의 데이터 그룹들은 물리적 구조들에 대한 특정한 정렬을 갖지 않는다.
8. 플래시 메모리 내의 스왑 블록(swap block)은 활성이 아닌 오픈 파일(open file)에 대한 휘발성 제어기 버퍼 메모리에 수용되는 데이터의 보안 카피(security copy)를 만드는데; 즉, 가장 최근의 기록 명령이 상이한 파일과 관련될 때, 사용된다. 이것은 또한 이용 가능한 버퍼 메모리 용량이 더 많은 수의 오픈 파일들을 이들 사이의 스왑 작동들의 사용을 통하여 지원하도록 하기 위하여 가상 버퍼 구조의 부분으로서 사용될 수 있다.
9. FIT 파일이 자신의 현재 범위가 가득 차서 또 다른 FIT 범위로 이동할 때, 디렉토리 내의 파일 데이터 포인터는 새로운 FIT 범위를 반영하도록 갱신된다.
10. FIT 범위에 대한 FIT 갱신 블록 내의 데이터는 FIT 갱신 블록 내에서의 범위에 대한 데이터의 량이 임계값을 초과할 때 그 범위에 대한 FIT 블록 내의 데이터와 통합된다. 이는 새로운 파일에 대한 데이터가 FIT 블록에 통합되도록 한다.
11. FIT 갱신 블록의 압축 동안, 클로우즈된 파일에 대한 FIT 파일은 충분한 소거된 공간이 존재하는 경우, 자신의 범위에 대해 FIT 블록에 재배치된다. 그렇지 않은 경우, 상기 파일은 압축된 FIT 갱신 블록에 재배치된다.
12. 호스트는 세트 내의 모든 파일들이 동일한 크기를 갖고 메타블록의 크기와 동일하도록 제어하기 위하여 기록_포인터 및 판독-포인터 명령들을 사용할 수 있고, 파일이 클로우즈된 직후에 세트 내의 파일이 단일 메타블록내로 통합되도록 하기 위하여 클로우즈 및 유휴(idle) 명령들을 사용할 수 있다.
13. 호스트 명령들의 세트는 명령된 데이터 기록 또는 판독이 시작되어야 하는 메모리 어드레스들을 제공하는 기록_포인터 및 판독-포인터의 값들에 대한 짝 명령(companion command)들을 포함하는 지정된 파일ID에 대한 판독 및 기록 명령들을 포함한다.
다음의 목록화된 도면들은 본 출원의 부분으로서 포함되며 이하의 설명들에서 참조된다.
도1A는 직접적인 데이터 파일 플랫폼을 갖는 메모리 카드를 도시한 도면.
도1B는 직접적인 데이터 파일 플랫폼 컴포넌트들을 도시한 도면.
도2A는 파일 명령들을 도시한 도면.
도2B는 데이터 명령들을 도시한 도면.
도2C는 정보 명령들을 도시한 도면.
도2D는 스트림 명령들을 도시한 도면.
도2E는 상태 명령들을 도시한 도면.
도2F는 장치 명령들을 도시한 도면.
도3A는 플레인 파일(plain file)의 포맷을 도시한 도면.
도3B는 공통 파일의 포맷을 도시한 도면.
도3C는 편집된 플레인 파일에 대한 포맷을 도시한 도면.
도3D는 편집된 공통 파일의 포맷을 도시한 도면.
도4A는 장치 작동들에 대한 흐름도.
도5A는 파일 데이터를 프로그래밍하는 것에 대한 흐름도.
도6A는 파일 데이터를 판독하는 것에 대한 흐름도.
도7A는 파일을 삭제하는 것에 대한 흐름도.
도8A는 포어그라운드 가비지 수집(foreground garbage collection)에 대한 인터리빙된 작동들을 도시한 도면.
도8B는 가비지 수집의 적응형 스케줄링에 대한 작동의 원리를 도시한 도면.
도8C는 가비지 수집 선택에 대한 흐름도.
도8D는 파일 가비지 수집에 대한 흐름도.
도8E는 공통 블록 가비지 수집에 대한 흐름도.
도8F는 블록 통합에 대한 흐름도.
도8G1 내지 8G4는 4개의 시간 순차적인 단계들을 나타낸, 공통 블록 가비지 수집 예를 도시한 도면.
도9A는 연속적인 호스트 데이터 프로그래밍을 도시한 도면.
도9B는 중단된 호스트 데이터 프로그래밍을 도시한 도면.
도9C는 버퍼 플러시 프로그래밍을 도시한 도면.
도9D는 버퍼 스왑-아웃 프로그래밍을 도시한 도면.
도9E는 버퍼 플러시 이후의 호스트 데이터 프로그래밍을 도시한 도면.
도9F는 스왑-인 데이터 판독을 도시한 도면.
도9G는 버퍼 스왑-인 이후의 호스트 데이터 프로그래밍을 도시한 도면.
도9H는 버퍼에 대한 정렬된 데이터 판독을 도시한 도면.
도9I는 버퍼로부터의 정렬된 데이터 프로그래밍을 도시한 도면.
도9J는 버퍼에 대한 비-정렬된 데이터 판독을 도시한 도면.
도9K는 버퍼로부터의 비-정렬된 데이터 프로그래밍을 도시한 도면.
도9L은 버퍼에 대한 비-정렬된 비-순차적인 데이터 판독을 도시한 도면.
도9M은 버퍼로부터의 비정렬된 비-순차적인 데이터 프로그래밍을 도시한 도면.
도10A은 파일 인덱싱을 도시한 도면.
도10B는 파일 인덱싱 구조들을 도시한 도면.
도10C은 디렉토리 블록 포맷을 도시한 도면.
도10D는 파일 인덱스 테이블(FIT) 논리적 구조를 도시한 도면.
도10E는 FIT 페이지 포맷을 도시한 도면.
도10F은 물리적 FIT 블록들을 도시한 도면.
도10G은 FIT 파일 갱신 작동들의 예들을 도시한 도면.
도11A는 블록 상태도.
도12A는 제어 블록 포맷을 도시한 도면.
도12B는 공통 블록 로그 포맷을 도시한 도면.
도13A는 (함께 도시되어야 하는 부분들(13A1 및 13A2)에서) 정적 파일과 함께 사용되는 명령 세트를 도시한 도면.
1. 직접적인 데이터 파일 플랫폼
1.1 요약
직접적인 데이터 파일 플랫폼을 갖는 메모리 카드가 도1A에 도시되어 있다. 직접적인 데이터 파일 플랫폼은 데이터가 파일이름 및 파일 오프셋 어드레스에 의해 식별되는 파일-유기적 데이터 저장 장치이다. 상기 직접적인 데이터 파일 플랫폼은 데이터 저장 이외의 기능들을 포함할 수 있는 메모리 카드에서 저장 플랫폼의 역할을 한다. 파일 데이터는 외부 파일 인터페이스 채널에 의해 플랫폼에서 액세스된다.
저장 장치는 논리적 어드레스들을 갖지 않는다. 각각의 파일에 대하여 독립적인 어드레스 공간들이 존재하고, 메모리 관리 알고리즘들이 데이터의 파일 구조에 따라 데이터 저장소를 구성한다. 직접적인 데이터 파일 플랫폼에서 사용되는 데이터 저장소 구성은 종래의 논리적으로 차단되는 메모리 관리를 갖는 종래의 파일 시스템을 포함하는 파일 저장 장치에 비하여, 작동 특성의 상당한 개선점을 발생시킨다.
1.2 플랫폼 컴포넌트들
직접적인 데이터 파일 플랫폼은 도1B에 도시된 바와 같이 기능의 층들로 구성된 다음의 컴포넌트들을 갖는다.
직접적인 데이터 파일 인터페이스: 카드 내의 다른 기능적 블록들로부터 파일이름 및 파일 오프셋 어드레스에 의해 식별되는 데이터로의 액세스를 제공하는 파일 API.
파일-대-플래시 맵핑 알고리즘: 파일 단편화(file fragmentation)를 제거하고 최대 성능 및 인듀어런스(endurance)을 제공하는 파일-유기적 데이터 저장을 위한 방식.
파일 데이터 프로그래밍: 파일-대-플래시 맵핑 알고리즘에 따라 파일 데이터 프로그래밍.
파일 데이터 판독: 플래시 메모리로부터의 오프셋 어드레스에 의해 지정된 데이터 판독.
파일 삭제: 삭제된 파일에 대한 데이터를 포함하는 블록들을 식별하고 이를 가비지 수집 큐들에 추가.
가비지 수집: 쓸모없는 데이터에 의해 차지된 메모리 용량을 복구하기 위하여 수행된 작동들. 이들은 블록을 소거하기 위하여 유효 데이터를 또 다른 위치에 카피하는 것을 수반할 수 있다.
파일 인덱싱: 파일 인덱싱은 파일에 대한 유효 데이터 그룹들의 위치들이 오프셋 어드레스 순서로 식별되도록 한다.
데이터 버퍼링 및 프로그래밍: 프로그래밍될 데이터에 대한 버퍼 메모리의 사용, 및 프로그램 블록들에서 파일 데이터를 프로그래밍하는 시퀀스.
소거된 블록 관리: 파일 데이터 또는 제어 정보의 저장을 위한 할당에 이용 가능한 장치 내의 소거된 블록들의 풀(pool)의 관리.
블록 상태 관리: 파일 데이터의 저장을 위한 블록들이 분류될 수 있는 8개의 상태들 사이의 트랜지션(transition)들.
제어 데이터 구조들: 그 목적에 전용된 플래시 블록들에 저장된 제어 데이터 구조들.
2. 직접적인 데이터 파일 인터페이스
직접적인 데이터 파일 인터페이스는 플래시 대량 데이터 저장소를 포함하는 장치 내에서 플래시 메모리 관리를 위한 백-엔드 시스템(back-end system)을 형성하는, 직접적인 데이터 파일 플랫폼으로의 API이다.
2.1 명령 세트
다음 단락은 다수의 소스들과 파일-기반으로 한 인터페이싱을 지원하기 위한 일반적인 명령 세트를 규정한다. 명령들은 6개의 등급들로 규정된다.
1. 파일 명령들
2. 데이터 명령들
3. 파일 정보 명령들
4. (모델링만을 위한) 스트림 명령들
5. 상태 명령들
6. 장치 명령들
2.1.1 파일 명령들(도2A 참조)
파일은 파일ID에 의해 장치 내에서 독립적으로 식별되는 오브젝트이다. 파일은 호스트에 의해 생성된 데이터의 세트를 포함하거나, 데이터를 갖지 않을 수 있고, 이 경우에, 파일은 디렉토리 또는 폴더를 나타낸다.
2.1.1.1 생성(Create)
생성 명령은 장치의 디렉토리 내에서 <파일ID>에 의해 식별되는 엔트리를 생성한다. <파일ID> 파라미터가 생략되면, 장치는 이용 가능한 값을 파일에 할당하고, 이를 호스트에 리턴시킨다. 이것은 파일을 생성하는 통상적인 방법이다.
호스트는 대안적으로 <파일ID> 값을 파일에 할당할 수 있다. 이 방법은 파일ID의 특정 값이 호스트 인터페이스 프로토콜 내에서 특정 유형의 파일을 나타내는 경우에 사용될 수 있다. 예를 들어, 루트 디렉토리는 호스트에 의해 특정 파일ID를 할당받을 수 있다.
2.1.1.2 오픈(Open)
이 명령은 <파일ID>에 의해 지정된 파일에 대한 후속 데이터 명령들의 실행을 인에이블시킨다. 파일이 존재하지 않는 경우, 에러 메시지가 리턴된다. 파일에 대한 기록_포인터가 파일의 종점으로 설정되고, 파일에 대한 판독_포인터가 파일의 시작점으로 설정된다. 파일_정보에 대한 정보_기록 포인터가 파일_정보의 종점으로 설정되고, 파일에 대한 정보_판독_포인터가 파일_정보의 시작점으로 설정된다. 동시에 오픈될 수 있는 최대 수의 파일들이 존재한다. 이 수가 초과되는 경우, 명령이 실행되지 않고 에러 메시지가 리턴된다. 동시 오픈 파일들의 최대 수는 예를 들어, 8일 수 있다.
지정된 파일로의 기록을 위한 장치 내의 자원들은 단지 후속 기록, 삽입 또는 제거(remove) 명령의 수신 이후에만 이용 가능해진다.
2.1.1.3 클로우즈(Close)
이 명령은 지정된 파일에 대한 후속 데이터 명령들의 실행을 디스에이블시킨다. 파일에 대한 기록_포인터, 판독_포인터, 정보_기록_포인터 및 정보_판독_포인터 값들이 무효해진다.
2.1.1.4 삭제(Delete)
삭제 명령은 <파일ID>에 의해 지정되는 파일에 대한 정보 테이블 엔트리들과 파일 인덱스 테이블, 디렉토리가 삭제되어야 한다는 것을 나타낸다. 파일들에 대한 데이터가 소거될 수 있다. 삭제된 파일은 나중에 액세스될 수 없다.
2.1.1.5. 소거(Erase)
소거 명령은 <파일ID>에 의해 지정되는 파일에 대한 정보 테이블 엔트리들과 파일 인덱스 테이블, 디렉토리가 삭제되어야 한다는 것을 나타낸다. 파일 데이터는 임의의 다른 명령이 실행되기 전에 소거되어야 한다. 소거된 파일은 나중에 액세스될 수 없다.
2.1.1.6 리스트_파일(List_files)
디렉토리 내의 모든 파일들에 대한 파일ID 값들은 리스트-파일 명령의 수신 다음에 수치적인 순서로 장치로부터 스트리밍될 수 있다. 파일ID 스트리밍은 최종 파일이 도달될 때 종료되고, 이 조건은 상태 명령에 의하여 호스트에 의해 식별된다. 리스트_파일 명령은 임의의 다른 명령의 수신에 의해 종료된다.
2.1.2. 데이터 명령들(도2B 참조)
데이터 명령들은 지정된 파일에 대한 데이터 입력 및 출력 작동들을 개시하고 파일 내에서 오프셋 어드레스 값을 규정하는데 사용된다. 지정된 파일은 호스트에 의해 오픈되어야 한다. 지정된 파일이 호스트에 의해 오픈되지 않는다면, 에러가 리턴된다. <파일ID>는 파일이 최종 오픈될 때 호스트에 리턴되는 파일 핸들(file handle)이다.
2.1.2.1 기록(Write)
기록 명령의 수신 다음에 장치로 스트리밍되는 데이터는 기록_포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일에서 겹쳐쓰기된다. 기록 명령은 파일에 대한 새로운 데이터를 기록하고, 데이터를 파일에 추가하고, 파일 내에서 데이터를 갱신하는데 사용된다. 기록 명령은 다른 임의의 명령의 수신에 의해 종료된다.
2.1.2.2 삽입(Insert)
삽입 명령의 수신 다음에 장치에 스트리밍되는 데이터는 기록_포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일에서 삽입된다. 파일 크기는 삽입된 데이터의 길이만큼 증가된다. 삽입 명령은 임의의 다른 명령의 수신에 의해 종료된다.
2.1.2.3 제거(Remove)
제거 명령은 기록_포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일로부터 <길이>에 의해 규정된 순차적인 데이터를 삭제한다. 파일 크기는 <길이>만큼 감소된다.
2.1.2.4 판독(Read)
판독_포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일 내의 데이터는 판독 명령의 수신 다음에 장치로부터 스트리밍될 수 있다.
데이터 스트리밍은 파일의 종점에 도달할 때 종료되고, 이 조건은 상태 명령에 의하여 호스트에 의해 식별될 수 있다. 판독 명령은 임의의 다른 명령의 수신에 의해 종료된다.
2.1.2.5 저장_버퍼(Save_buffer)
장치 버퍼에 포함되고 플래시 메모리로 아직 프로그래밍되지 않은 지정된 파일에 대한 데이터는 플래시 메모리 내의 일시적인 위치에 저장된다.
데이터는 후속 기록 또는 삽입 명령이 수신될 때 버퍼로 복귀되며, 명령과 관련된 데이터와 함께 플래시에 프로그래밍된다.
2.1.2.6 기록_포인터(Write_pointer)
기록_포인터 명령은 지정된 파일에 대한 기록_포인터를 지정된 오프셋 어드레스로 설정한다. 기록_포인터는 기록 또는 삽입 명령 다음에 데이터가 장치에 스트리밍될 때 장치에 의해 증분된다.
2.1.2.7 판독_포인터(Read_pointer)
판독_포인터 명령은 지정된 파일에 대한 판독_포인터를 지정된 오프셋 어드레스로 설정한다. 판독_포인터는 판독 명령 다음에 데이터가 장치로부터 스트리밍될 때 장치에 의해 증분된다.
2.1.3 정보 명령들(도2C 참조)
파일_정보는 파일과 관련되는 호스트에 의해 발생된 정보이다. 파일_정보의 특성 및 내용은 호스트에 의해 결정되며, 장치에 의해 해석되지 않는다. 정보 명령들은 지정된 파일에 대한 파일_정보 입력 및 출력 작동들을 개시하고 파일_정보 내의 오프셋 어드레스 값들을 규정하는데 사용된다.
2.1.3.1 기록_정보(Write_info)
기록_정보 명령의 수신 다음에 장치에 스트리밍된 파일_정보는 정보_기록_포 인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일에 대해 파일_정보를 겹쳐쓰기한다. 지정된 파일에 대한 파일_정보의 내용 및 길이는 호스트에 의해 결정된다. 기록_정보 명령은 임의의 다른 명령의 수신에 의해 종료된다.
2.1.3.2 판독_정보(Read_info)
정보_판독_포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일에 대한 파일_정보는 판독_정보 명령의 수신 다음에 장치로부터 스트리밍될 수 있다. 파일_정보 스트리밍은 파일_정보의 종점에 도달할 때 종료되며, 이 조건은 상태 명령에 의하여 호스트에 의해 식별된다. 판독_정보 명령은 임의의 다른 명령의 수신에 의해 종료된다.
2.1.3.3 정보_기록_포인터(Info-write_pointer)
정보_기록_포인터 명령은 지정된 파일에 대한 정보_기록_포인터를 지정된 오프셋 어드레스로 설정한다. 정보_기록_포인터는 기록_정보 명령 다음에 파일_정보가 장치로 스트리밍될 때 장치에 의해 증분된다.
2.1.3.4 정보_판독_포인터(Info_read_pointer)
정보_판독_포인터 명령은 지정된 파일에 대한 정보_판독_포인터를 지정된 오프셋 어드레스로 설정한다. 정보_판독_포인터는 판독_정보 명령 다음에 파일_정보가 장치로부터 스트리밍될 때 장치에 의해 증분된다.
2.1.4 스트림 명령들(도2D 참조)
스트림 명령들은 직접적인 데이터 파일 플랫폼의 작동 모델(behavioural model)로만 사용된다. 이들의 목적은 데이터 명령들과 관련하여, 호스트로 그리고 호스트로부터 스트리밍 데이터를 에뮬리이팅하는 것이다.
2.1.4.1 스트림(Stream)
스트림 명령은 플랫폼으로 또는 상기 플랫폼으로부터 호스트에 의하여 전달되어야 하는 <길이>에 의해 규정된 데이터의 인터럽트되지 않은 스트림을 에뮬레이팅한다. 스트림의 나머지 길이를 나타내는 변수는 데이터가 버퍼 메모리로부터 추가되거나 제거될 때 플랫폼의 모델만큼 감소된다.
2.1.4.2 중단(Pause)
중단 명령은 직접적인 데이터 파일 모델의 작동을 제어하고 있는 명령 리스트 내의 다음 명령의 실행 이전에 삽입되는 길이 <시간>의 지연을 삽입한다. <시간>은 마이크로초로 규정된다.
2.1.5 상태 명령들(도 2F 참조)
상태 명령들은 장치의 상태를 제어한다.
2.1.5.1 유휴(Idle)
유휴 명령은 호스트가 직접적인 데이터 파일 장치를 상기 장치가 내부 하우스키핑 작동들을 수행할 수 있는 유휴 상태로 이르게 한다는 것을 나타낸다. 호스트는 유휴 상태에서 상기 장치로부터 전력을 고의로 제거하지는 않을 것이다. 유휴 상태는 상기 장치가 내부 작동으로 작동중(busy)이든지 아니든지 간에, 호스트에 의한 임의의 다른 명령의 전송에 의해 종료될 수 있다. 이와 같은 다른 명령의 수신 시에, 상기 장치에서 진행중인 임의의 내부 작동은 지정된 시간 내에 중단되거나 종료되어야 한다. 이 시간의 일례는 10 밀리초 또는 그 이하이다.
2.1.5.2 대기(Standby)
대기 명령은 호스트가 직접적인 데이터 파일 장치를 상기 장치가 내부 하우스키핑 작동들을 수행할 수 없는 대기 상태에 이르게 한다는 것을 나타낸다. 호스트는 대기 상태에서 상기 장치로부터 전력을 고의로 제거하지는 않을 것이다. 대기 상태는 호스트에 의한 임의의 다른 명령의 전송의 의해 종료될 수 있다.
2.1.5.3 셧다운(Shutdown)
셧다운 명령은 장치가 다음에 작동중인 상태가 아닐 때 전력이 호스트에 의해 장치로부터 제거될 것이라는 것을 나타낸다. 모든 오픈 파일들은 셧다운 명령에 응답하여 장치에 의해 클로우즈된다.
2.1.6 장치 명령들(도2F 참조)
장치 명령들은 호스트가 장치에 질문하도록 한다.
2.1.6.1 용량(Capacity)
용량 명령에 응답하여, 장치는 장치에 저장된 파일 데이터의 용량, 및 새로운 파일 데이터에 이용 가능한 용량을 보고한다.
2.1.6.2 상태(Status)
상태 명령에 응답하여, 장치는 장치의 현재 상태를 보고한다.
상태는 3가지 유형의 작동중인 상태를 포함한다:
1. 장치는 데이터를 기록 또는 판독하기 위하여 포어그라운드(foreground) 작동을 수행하면서 작동중이다.
2. 장치는 자신이 유휴 상태에 있었던 동안에 개시된 백그라운드 작동을 수 행하면서 작동중이다.
3. 버퍼 메모리가 작동중이고, 데이터를 기록 또는 판독하기 위하여 호스트에 이용 가능하지 않다.
2.1.7 명령 파라미터들
다음 파라미터들은 아래에 규정된 바와 같은 명령들과 함께 사용된다.
2.1.7.1 파일 ID
이것은 장치의 디렉토리 내에서 파일을 식별하는데 사용되는 파일 식별자이다.
2.1.7.2 오프셋
오프셋은 파일 또는 파일_정보의 시작과 관련된, 바이트 단위의, 파일 또는 파일_정보 내의 논리적 어드레스이다.
2.1.7.3 길이
이것은 순차적인 오프셋 어드레스들을 갖는 파일에 대한 데이터의 실행의 바이트 단위의 길이이다.
2.1.7.4 시간
이것은 마이크로초 단위의 시간이다.
3. 파일-대-플래시 맵핑 알고리즘
직접적인 데이터 파일 플랫폼에 의해 채용된 파일-대-플래시 맵핑 알고리즘은 호스트가 파일-기반으로 한 인터페이스를 통하여 파일 데이터 기록 및 파일 삭제 작동들을 수행할 때, 최대 시스템 성능 및 최대 메모리 인듀어런스를 제공하기 위하여 규정되었던 파일-유기적 데이터 저장을 위한 새로운 방식이다. 상기 맵핑 알고리즘은 플래시 메모리 내의 블록들 사이에서 파일 데이터를 카피하는 것을 최소화하도록 디자인되었다. 이것은 하나 이상의 파일에 대한 데이터를 포함하는 블록들의 가능한 최소 인시던스(incidence)를 성취하는 방식으로 플래시 블록들에 파일 데이터를 맵핑함으로써 성취된다.
3.1 파일-대-플래시 맵핑 원리들
3.1.1 파일들
파일은 호스트에 의해 생성되고 유지되는 데이터의 세트이다. 데이터는 파일이름에 의해 호스트에 의해 식별되고, 파일의 시작점으로부터 자신의 오프셋 위치에 의해 액세스될 수 있다. 파일 오프셋 어드레스는 호스트에 의해 설정될 수 있고, 장치에 의해 기록 포인터로서 증분될 수 있다.
3.1.2 물리적 메모리 구조들
직접적인 데이터 파일 플랫폼은 파일들에 대한 모든 데이터를 고정된-크기의 메타블록들에 저장한다. 메타블록을 포함하는 플래시 소거 블록들의 실제 수, 즉, 소거 블록 병렬성(erase block parallelism)은 제품들 사이에서 가변될 수 있다. 본 명세서 전체에 걸쳐서, 용어 "블록"은 "메타블록"을 나타내는데 사용된다.
용어 "메타블록"은 메타블록의 전체 병렬성으로 페이지를 나타내는데 사용된다. 메타블록은 프로그래밍의 최대 단위이다.
용어 "페이지"는 메모리의 플레인 내에서, 즉 플래시 소거 블록 내에서 페이지를 나타내는데 사용된다. 페이지는 프로그래밍의 최소 단위이다.
용어 "섹터"는 ECC가 관련되는 저장된 데이터의 단위를 나타내는데 사용된다. 섹터는 플래시 메모리로의 그리고 플래시 메모리로부터의 데이터 전달의 최소 단위이다.
파일에 대한 오프셋 어드레스들 및 물리적 플래시 메모리 구조들 사이에서 유지되는 지정된 정렬이 존재하지 않는다.
3.1.3 데이터 그룹들
데이터 그룹은 단일 메모리 블록 내의 인접한 물리적 어드레스들에서 프로그래밍된, 파일 내의 인접한 오프셋 어드레스들을 갖는 파일 데이터의 세트이다. 파일은 통상적으로 다수의 데이터 그룹들로서 프로그래밍될 것이다. 데이터 그룹은 한 바이트 및 한 블록 사이에 임의의 길이를 가질 수 있다. 각각의 데이터 그룹은 교차 상관 목적들을 위한 파일 식별자 정보를 포함한 헤더와 함께 프로그래밍된다. 파일에 대한 데이터는 자신이 포함되는 데이터 그룹에 따라 물리적 메모리에서 인덱싱된다. 파일 인덱스 테이블은 파일의 각각의 데이터 그룹에 대한 파일 오프셋 어드레스 및 물리적 어드레스 정보를 제공한다.
3.1.4 프로그램 블록들
파일은 파일 데이터가 프로그래밍되도록 하기 위하여 호스트에 의해 오픈되어야 한다. 각각의 오픈 파일은 프로그램 블록으로서 할당되는 전용 블록을 가지며, 그 파일에 대한 데이터는 프로그램 블록 내에서 프로그램 포인터에 의해 규정된 위치에서 프로그래밍된다. 파일이 호스트에 의해 오픈될 때, 파일에 대한 프로그램 블록은 이미 존재하지 않는다면 오픈된다. 프로그램 포인터는 프로그램 블록 의 시작점으로 설정된다. 프로그램 블록이 호스트에 의해 오픈되는 파일에 대해 이미 존재한다면, 상기 프로그램 블록은 파일에 대한 데이터를 프로그래밍하는데 지속적으로 사용된다.
파일 데이터는 파일 내의 자신의 오프셋 어드레스 또는 그 오프셋 어드레스에 대한 데이터가 이전에 프로그래밍되었었는지 여부에 관계없이, 자신이 호스트로부터 수신되는 순서로 프로그램 블록에서 프로그래밍된다. 프로그램 블록이 가득 찰 때, 상기 프로그램 블록은 파일 블록으로서 인식되고, 소거된 블록 풀(pool)로부터의 소거된 블록이 새로운 프로그램 블록으로서 오픈된다. 파일에 대한 데이터를 저장하는 블록들 사이에 물리적 어드레스 관계가 존재하지 않는다.
3.1.5 공통 블록들
공통 블록은 하나 이상의 파일에 대한 데이터 그룹들을 포함한다. 동일한 파일에 대한 다수의 데이터 그룹들이 공통 블록에서 존재한다면, 상기 다수의 데이터 그룹들은 인접하여 위치되고, 인접한 유닛이 파일 그룹으로서 인식된다. 데이터는 블록 통합 작동 또는 공통 블록 가비지 수집 작동 동안에만 공통 블록으로 프로그래밍된다.
공통 블록 내에서의 개별적인 데이터 그룹 또는 파일 그룹의 시작점은 메타페이지의 시작점과 정렬되어야 한다.
파일 그룹 내의 데이터 그룹들은 개재 공간(intervening space)을 갖지 않는다. 이와 같은 데이터 그룹들 사이의 경계는 페이지 내에서 발생할 수 있다. 파일은 단지 단일 공통 블록 내의 데이터를 가져야 한다(이에 대한 예외에 대해선 8.3.4 참조).
3.2 파일 유형들
3.2.1 플레인 파일(Plain File)
플레인 파일은 임의의 수의 완전한 파일 블록들 및 하나의 부분적으로 프로그래밍된 프로그램 블록을 포함한다. 플레인 파일은 통상적으로 순차적인 오프셋 어드레스 순서로, 호스트로부터의 파일에 대한 데이터의 프로그래밍에 의하여, 또는 편집된 파일의 가비지 수집에 의하여 생성될 수 있다. 예시적인 플레인 파일이 도3A에 도시되어 있다. 플레인 파일은 오픈 파일 또는 클로우즈 파일 중 하나일 수 있다.
파일에 대한 추가적인 데이터는 프로그램 블록 내의 프로그램 포인터에서 프로그래밍될 수 있다. 파일이 호스트에 의해 삭제된 경우, 파일의 데이터를 포함하는 블록들은 데이터를 이와 같은 블록들로부터 플래시 메모리 내의 또 다른 위치로 카피할 필요 없이 즉시 소거될 수 있다. 따라서, 플레인 파일 포맷은 매우 유효하며, 파일들을 가능한 한 길게 이 포맷으로 유지하는데 있어서 장점이 존재한다.
3.2.2 공통 파일
공통 파일은 임의의 수의 완전한 파일 블록들 및 다른 관련되지 않은 파일들에 대한 데이터와 함께 그 파일에 대한 데이터를 포함하는 하나의 공통 블록을 포함한다. 예들이 도3B에 도시되어 있다. 공통 파일은 가비지 수집 작동 동안 또는 프로그램 블록들의 통합에 의하여 플레인 파일로부터 생성될 수 있다.
공통 파일은 통상적으로 클로우즈된 파일이며, 관련된 기록 포인터를 갖지 않는다. 호스트가 공통 파일을 오픈하는 경우, 프로그램 블록이 오픈되고 프로그램 포인터는 프로그램 블록의 시작점으로 설정된다. 파일이 호스트에 의해 삭제되는 경우, 이의 파일 블록들은 즉시 소거될 수 있지만, 관련되지 않은 파일 또는 관련되지 않은 파일들에 대한 데이터는 공통 블록이 소거되기 전에, 가비지 수집 작동에서 공통 블록으로부터 플래시 메모리 내의 또 다른 위치로 카피되어야 한다.
3.2.3 편집된 플레인 파일
플레인 파일은 그 파일에 대한 이전에-프로그래밍된 오프셋 어드레스들에 대한 갱신된 데이터를 기록하는 호스트에 의해 언제라도 편집될 수 있다. 예들이 도3C에서 제공된다. 이와 같은 갱신된 데이터는 프로그램 블록 내의 프로그램 포인터에서 통상적인 방식으로 프로그래밍되며, 결과적인 편집된 플레인 파일은 하나 이상의 쓸모없는 파일 블록들 또는 프로그램 블록들 자체에서 쓸모없는 데이터를 포함할 것이다.
편집된 플레인 파일은 그 파일에 대한 가비지 수집 작동에서 플레인 파일로 복구될 수 있다. 이와 같은 가비지 수집 동안, 임의의 유효 파일 데이터가 각각의 쓸모없는 파일 블록으로부터 그 파일에 대한 프로그램 포인터로 카피되고, 결과적인 완전히-쓸모없는 블록들은 소거된다. 가능하다면, 가비지 수집은 파일이 호스트에 의해 클로우즈될 때까지 수행되지 않는다.
3.2.4 편집된 공통 파일
오픈 공통 파일은 그 파일에 대한 이전에-프로그래밍된 오프셋 어드레스들에 대한 갱신된 데이터를 기록하는 호스트에 의해 언제라도 편집될 수 있다. 예들이 도3D에 도시되어 있다. 이와 같은 갱신된 데이터는 프로그램 블록 내의 프로그램 포인터에서 통상적인 방식으로 프로그래밍되며, 결과적인 편집된 공통 파일은 하나 이상의 쓸모없는 파일 블록들, 공통 블록 또는 프로그램 블록들 자체에서 쓸모없는 데이터를 포함할 것이다.
편집된 공통 파일은 그 파일에 대한 가비지 수집 작동에서 플레인 파일 포맷으로 복구될 수 있다. 이와 같은 가비지 수집 동안, 임의의 유효 파일 데이터가 각각의 쓸모없는 파일 블록 및 공통 블록으로부터 그 파일에 대한 프로그램 포인터로 카피된다. 결과적인 완전히-쓸모없는 블록들은 소거되고, 쓸모없는 공통 블록은 별도의 후속 가비지 수집 작동을 위해 로깅(logging)된다.
3.3 가비지 수집 및 블록 통합
3.3.1 가비지 수집
가비지 수집 작동들은 쓸모없는 데이터에 의해 차지된 메모리 용량을 복구하기 위하여 수행된다. 이 작동들은 블록을 소거하기 위하여 유효 데이터를 또 다른 위치에 카피하는 것을 수반할 수 있다. 가비지 수집은 쓸모없는 데이터의 생성에 응답하여 즉시 수행될 필요가 없다. 진행중인 가비지 수집 작동들은 가비지 수집 큐들에서 로깅되고 나서, 스케줄링 알고리즘들에 따라 최적의 레이트로 수행된다.
직접적인 데이터 파일 플랫폼들은 호스트 명령에 의해 개시될 수 있는 백그라운드 가비지 수집 작동들을 지원한다. 이것은 호스트가 파일들이 나중에 호스트에 의해 기록될 때 더 높은 성능을 인에이블시키는 내부 하우스키핑 작동들에 대한 휴지 시간(quiescent time)을 장치에 할당하도록 한다.
충분한 백그라운드 시간이 호스트에 의해 이용 가능하지 않게 되는 경우, 장치는 포어그라운드 작동으로서 가비지 수집을 수행한다. 가비지 수집 작동들의 버스트들(bursts)은 호스트로부터의 파일 데이터를 프로그래밍하는 버스트들과 인터리빙된다. 인터리브 듀티 사이클은 백로그(backlog)가 구성되지 않도록 하면서, 최소의 가비지 수집 레이트를 유지하도록 적응형으로 제어될 수 있다.
3.3.2 블록 통합
장치 내의 각각의 플레인 파일은 불완전하게 채워진 프로그램 블록을 포함하며, 소거된 용량의 상당한 볼륨이 이와 같은 프로그램 블록들에서 록킹 업(locking up)될 수 있다. 공통 블록들은 또한 소거된 용량을 포함할 수 있다. 따라서, 클로우즈된 파일에 대한 프로그램 블록들 및 공통 블록들을 통합하는 진행중인 프로세스는 록킹된 소거된 용량을 제어하도록 구현된다. 블록 통합은 가비지 수집 기능의 부분으로서 취급되며, 동일한 스케줄링 알고리즘에 의해 관리된다.
프로그램 블록 또는 공통 블록 내의 데이터는 또 다른 공통 블록 또는 프로그램 블록으로부터의 이와 같은 관련되지 않은 데이터를 카피함으로써 하나 이상의 관련되지 않은 파일들에 대한 데이터와 통합된다. 원래 블록이 프로그램 블록이었다면, 상기 원래 블록이 공통 블록이 된다. 프로그램 블록을 또 다른 프로그램 블록보다는 오히려, 쓸모없는 공통 블록과 통합하는 것이 바람직하다. 쓸모없는 공통 블록은 쓸모없는 데이터를 포함하므로, 유효 데이터를 상기 블록으로부터 또 다른 위치로 재배치시키는 것을 불가피하다. 그러나, 프로그램 블록은 쓸모없는 데이터를 포함하지 않고, 데이터를 상기 블록으로부터 또 다른 위치로 카피하는 것은 바 람직하지 않은 오버헤드(overhead)이다.
3.3.3 평형 상태
파일 데이터가 장치 용량의 높은 퍼센티지를 차지할 때, 호스트는 새로운 파일들을 기록하기 위한 용량을 생성하기 위하여 파일들에 대한 삭제 작동을 수행해야 한다. 이 상태에서, 장치 내의 대부분의 파일들은 플레인 파일 포맷의 파일들에 대한 프로그램 블록들에서 소거된 공간에 이용 가능한 용량이 거의 없기 때문에, 공통 파일 포맷을 가질 것이다.
공통 파일의 삭제는 관련되지 않은 파일들에 대한 유효 데이터가 가비지 수집 동안 자신의 공통 블록으로부터 재배치되는 것을 필요로 한다. 이와 같은 파일 그룹들에 대한 데이터는 클로우즈된 파일에 대한 하나 이상의 프로그램 블록들 내의 이용 가능한 용량에 가장 통상적으로 재배치된다. 호스트에 의해 최근에 기록되고 나서 클로우즈된 파일들에 대한 프로그램 블록들 내의 이용 가능한 사용하지 않은 용량 및 파일들이 호스트에 의해 삭제되는 결과로서 공통 블록들로부터 파일 데이터를 재배치하는데 필요로 되는 용량 사이에 자주 평형이 존재한다. 이 일반적인 평형 상태는 프로그램 블록으로부터 파일 데이터를 재배치할 필요성을 감소시키며, 파일-대-플래시 맵핑 알고리즘의 효율에 기여한다.
4. 장치 작동
4.1 장치 작동들의 실행
장치의 작동 시퀀스는 호스트에 의해 공급되는 명령들의 흐름에 의해 결정된다. 호스트 명령이 수신될 때, 현재 장치 작동은 인터럽트되고, 상기 명령이 통상 적으로 해석된다. 일부 명령들은 다음과 같이 4개의 주요 장치 작동들 중 하나를 실행하도록 할 것이다:
1. 데이터 판독;
2. 데이터 프로그래밍;
3. 파일 삭제; 또는
4. 가비지 수집.
장치 작동은 다음 조건들 중 하나에 도달할 때까지 지속된다:
1. 작동이 완료된다;
2. 또 다른 호스트 명령이 수신된다; 또는
3. 포어그라운드 가비지 수집 모드에서 인터리빙된 버스트의 종점에 도달한다.
우선순위 가비지 수집 작동(priority garbage collection operation)들이 실행을 위해 큐잉되는 경우, 이 작동들은 임의의 새로운 명령이 해석되기 전에 완료된다.
장치 작동들을 나타낸 전체 흐름도가 도4A에 도시되어 있다.
5. 파일 데이터 프로그래밍
5.1 파일 데이터를 프로그래밍하는 원리들
파일에 대한 데이터는 호스트로부터의 기록 또는 삽입 명령 다음에 호스트로부터 장치에 스트리밍될 때 플래시 메모리로 프로그래밍된다. 충분한 데이터가 다음 프로그램 작동을 위해 버퍼 메모리에 축적될 때, 상기 데이터는 파일에 대한 프 로그램 블록에서 프로그래밍된다. 이 작동의 설명에 대해서는 9장을 참조하라.
프로그램 블록이 가득 찰 때, 상기 프로그램 블록은 파일 블록으로서 지정되고, 소거된 블록 풀로부터의 소거된 블록이 프로그램 블록으로서 할당된다. 게다가, 쓸모없는 블록들 및 공통 블록들에 대한 파일 인덱스 테이블 및 가비지 수집 큐들이 갱신된다.
파일 데이터 프로그래밍 절차는 가비지 수집 스케줄링 알고리즘(8.4절 참조)에 의해 설정되는 인터리브 파라미터(N1)에 따라, 포어그라운드 가비지 수집의 버스트들을 개시한다. 인터리브 프로그램 카운터는 메타페이지 프로그램 작동이 플래시 메모리에서 개시될 때마다 증분되고, 포어그라운드 모드에서의 가비지 수집 작동은 이 카운터가 값(N1)을 초과할 때 개시된다.
파일 데이터 프로그래밍은 호스트가 또 다른 명령을 전송할 때까지 하나의 메타페이지 단위들로 지속된다.
파일 데이터를 프로그래밍하는 일례를 나타낸 흐름도가 도5A에 도시되어 있다.
6. 파일 데이터 판독
6.1 파일 데이터를 판독하는 원리들
호스트로부터의 판독 명령에 응답하여, 판독_포인터에 의해 지정되는 것에서 시작하는 파일 오프셋 어드레스들에 대한 데이터는 파일의 종점에 도달할 때까지, 플래시 메모리로부터 판독되고 순차적으로 호스트에 리턴된다. 파일 인덱스 테이블(FIT)이 판독되고, 파일에 대한 FIT 엔트리들이 판독_포인터에 대응하는 위치를 식별하기 위하여 평가된다. 후속 FIT 엔트리들은 파일에 대한 데이터 그룹들의 위치들을 지정한다.
파일 데이터는 파일의 종점에 도달할 때까지 또는 호스트가 또 다른 명령을 전송할 때까지, 하나의 메타페이지 단위들로 판독된다.
파일 데이터를 판독하는 예시적인 프로세스가 도6A에서 제공된다.
7. 파일 삭제
7.1 파일을 삭제하는 원리들
호스트로부터의 파일에 대한 삭제 명령에 응답하여, 파일에 대한 데이터를 포함하는 블록들이 식별되고, 후속 가비지 수집 작동들을 위해 가비지 수집 큐들에 추가된다. 파일을 삭제하는 절차는 이러한 가비지 수집 작동들을 개시하지 않으므로, 파일에 대한 데이터는 즉시 소거되지 않는다.
파일에 대한 FIT 엔트리들은 최초에 파일에 대한 데이터를 포함할 수 있는 공통 블록을 식별하기 위하여 평가된다. 그 후, 파일에 대한 FIT 엔트리들은 오프셋 어드레스 순서로 평가되고, 데이터 그룹들이 위치되는 데이터 블록들이 후속 가비지 수집을 위해, 공통 블록 큐 또는 쓸모없는 블록 큐 중 하나에 추가된다. 그 후, 파일에 대한 엔트리들을 제거하기 위하여, 파일 디렉토리 및 파일 인덱스 테이블이 갱신된다.
7.2 파일 소거
호스트로부터의 파일에 대한 소거 명령에 응답하여, 삭제 명령에 대한 것과 동일한 절차가 뒤따라야 하지만, 파일에 대한 데이터를 포함하는 블록들이 가비지 수집을 위해 우선순위 공통 블록 큐(priority common block queue) 및 우선순위 쓸모없는 블록 큐(priority obsolete block queue)에 추가된다.
그 후, 주요 장치 작동 시퀀스는 이러한 블록들에 대한 가비지 수집 작동들이 임의의 다른 호스트 명령이 실행되기 전에 수행되는 것을 보장한다. 이것은 소거 명령에 의해 식별된 파일에 대한 데이터가 즉시 소거되는 것을 보장한다.
파일 삭제 프로세스의 흐름도가 도7A에 도시되어 있다.
8. 가비지 수집
8.1 가비지 수집에 대한 원리들
가비지 수집은 쓸모없는 파일 데이터에 의해 차지된 플래시 메모리 용량을 복구하기 위하여 수행되어야 하는 작동이다. 가비지 수집은 파일의 삭제 또는 파일의 데이터에 대한 편집들의 결과로서 필요할 수 있다.
블록 통합은 관련되지 않은 파일들을 저장하는데 이들이 사용될 수 있도록 하기 위하여, 파일 데이터로 불완전하게 채워지는 블록들에서 소거된 용량을 복구하기 위하여 수행되는 가비지 수집의 형태이다. 통합은 프로그램 블록들을 공통 블록들로 변환하기 위하여 플레인 파일들에서의 프로그램 블록들 상에서 수행되거나, 이들의 수를 감소시키기 위하여 공통 블록들 상에서 수행될 수 있다.
가비지 수집 및 블록 통합의 프로세스들은 소스 블록이 소거되도록 하기 위하여, 파일-대-플래시 맵핑 알고리즘에 의해 언급된 바와 같이, 유효 파일 데이터를 소스 플래시 블록으로부터 하나 이상의 목적지 블록들로 재배치시킨다.
진행중인 가비지 수집 작동들은 즉시 수행되는 것이 아니라, 단계적 실행을 위한 스케줄링 알고리즘에 따라 수행된다. 가비지 수집을 필요로 하는 오브젝트들에 대한 엔트리들은 장치의 작동 동안 때때로 3개의 가비지 수집 큐들에 추가된다. 파일들, 쓸모없는 블록들, 및 공통 블록들을 위한 별도의 큐들이 존재한다. 오브젝트들은 미리 규정된 우선순위 순서로 다음 가비지 수집 작동을 위해 큐들로부터 선택된다. 큐들이 비어 있는 경우, 블록 통합이 수행될 수 있다.
가비지 수집 작동들은 2개의 방식으로 스케줄링될 수 있다. 백그라운드 작동들은 호스트가 장치로의 판독 또는 기록 액세스를 행하고 있지 않을 때 호스트에 의해 개시될 수 있고, 호스트가 또 다른 액세스를 행할 때까지 장치에 의해 지속적으로 실행된다. 포어그라운드 작동들은 장치가 호스트에 의해 액세스되고 있는 동안 장치에 의해 스케줄링될 수 있고, 호스트로부터 수신된 파일 데이터에 대한 프로그램 작동들의 버스트들과 인터리빙된 버스트들에서 실행된다. 인터리빙된 버스트들의 길이들은 가비지 수집 레이트를 항상 필요로 되는 최소값으로 유지하도록 적응형으로 제어될 수 있다.
8.2 가비지 수집 큐들
가비지 수집 큐들은 진행중인 가비지 수집 작동이 존재하는 오브젝트들에 대한 엔트리들을 포함한다. 3개의 큐들 각각은 쓸모없는 블록들, 공통 블록들 및 파일들 각각에 대한 엔트리들을 포함한다. 2개의 추가적인 큐들은 이러한 3개의 큐들보다 더 높은 우선순위를 제공받고, 쓸모없는 블록들 및 공통 블록들 각각에 대한 엔트리들을 포함한다. 5개의 가비지 수집 큐들이 플래시 메모리 내의 제어 블록에서 제어 로그에 저장된다.
8.2.1 우선순위 쓸모없는 블록 큐
이 큐는 호스트로부터의 소거 명령의 결과로서 완전히 쓸모없게 된 블록들에 대한 엔트리들을 포함한다. 이 큐는 가장 높은 우선순위 가비지 수집 큐이다. 큐에서 식별된 모든 블록들에 대한 가비지 수집 작동들은 임의의 다른 명령이 호스트로부터 수용되기 전에, 또는 가비지 수집 작동들이 임의의 다른 큐로부터의 오프젝트들에 대해 개시되기 전에 완료되어야 한다.
8.2.2 우선순위 공통 블록 큐
이 큐는 포스트로부터의 소거 명령의 결과로서 부분적으로 쓸모없게 된 공통 블록들에 대한 엔트리들을 포함한다. 이 큐는 두 번째로 높은 우선순위 가비지 수집 큐이다. 큐에서 식별된 모든 공통 블록들에 대한 가비지 수집 작동들은 임의의 다른 명령이 호스트로부터 수용되기 전에, 또는 가비지 수집 작동들이 더 낮은 우선순위 큐로부터의 오브젝트들에 대해 개시되기 전에 완료되어야 한다.
8.2.3 쓸모없는 블록 큐
이 큐는 호스트로부터의 삭제 명령, 또는 파일의 데이터에 대한 편집들의 결과로서 완전히 쓸모없게 된 블록들에 대한 엔트리들을 포함한다. 이 큐는 세번째로 높은 우선순위 가비지 수집 큐이다. 큐에서 식별된 모든 블록들에 대한 가비지 수집 작동들은 더 낮은 우선순위 큐로부터의 오브젝트들에 대해 작동들이 개시되기 전에 완료되어야 한다.
8.2.4 공통 블록 큐
이 큐는 호스트로부터의 삭제 명령, 또는 파일의 데이터에 대한 편집들의 결 과로서 부분적으로 쓸모없게 된 공통 블록들에 대한 엔트리들을 포함한다. 이 큐는 네 번째로 높은 우선순위 가비지 수집 큐이다. 큐에서 식별된 모든 블록들에 대한 가비지 수집 작동들은 더 낮은 우선순위 큐로부터의 오브젝트들에 대해 작동들이 개시되기 전에 완료되어야 한다.
8.2.5 파일 큐
이 큐는 파일의 데이터의 편집들의 결과로서 쓸모없는 데이터를 갖는 파일들에 대한 엔트리들을 포함한다. 이 큐는 가장 낮은 우선순위 가비지 수집 큐이다. 파일이 호스트에 의해 클로우즈될 때, 이에 대한 엔트리는 파일이 플레인 파일이 아니라면, 파일 큐에 추가된다. 따라서, 파일이 플레인 파일인지 또는 편집된 파일(플레인 또는 공통)인지를 결정하기 위하여, 파일이 호스트에 의해 클로우즈되는 시간에 파일에 대한 FIT 엔트리들에 대한 분석을 수행하는 것이 필요하다.
이 분석에 대한 절차는 다음과 같다:
1. 관련된 FIT 파일에서의 FIT 엔트리들이 오프셋 어드레스 순서로 평가된다.
2. 데이터 그룹들 및 데이터 그룹 헤더들에 대한 누적 용량이 결정된다.
3. 파일 데이터에 의해 차지된 물리적 용량이 결정된다. 이것은 파일에 대한 데이터를 포함하는 프로그램 블록 이외의 블록들의 수, 더하기 프로그램 블록에서의 사용된 용량이다.
4. 데이터 그룹 용량이 물리적 용량의 X%를 초과하는 경우, 파일은 플레인 파일이다라고 결정된다. X의 값의 일례는 98%이다. X%는 버퍼 플러시 작동(buffer flush operation)에 기인한 프로그래밍되지 않은 공간이 플레인 파일에서 존속하도록 하기 위하여 100%보다 적다.
8.3 가비지 수집 작동들
8.3.1 쓸모없는 블록
쓸모없는 블록은 쓸모없는 데이터만을 포함하며, 데이터를 또 다른 블록으로 재배치할 필요 없이 소거될 수 있다.
8.3.2 공통 블록
공통 블록은 소스 블록이며, 하나 이상의 파일들에 대한 하나 이상의 부분적이거나 완전히 쓸모없는 데이터 그룹들을 포함한다. 유효 데이터는 이 소스 블록으로부터 하나 이상의 목적지 블록들로 재배치되어야 한다.
데이터는 완전한 파일 그룹의 단위들로 재배치되며, 여기서 파일 그룹은 공통 블록 내에서 동일한 파일들에 대한 하나 이상의 데이터 그룹들을 포함한다. 각각의 파일 그룹은 목적지 블록으로 그대로 재배치되지만, 상이한 파일 그룹들은 상이한 블록들에 재배치될 수 있다.
목적지 블록으로서 공통 블록이 우선적으로 선택되고, 적절한 공통 블록이 이용 가능하지 않은 경우 프로그램 블록이 그 다음에 선택되며, 적절한 프로그램 블록이 이용 가능하지 않은 경우 소거된 블록이 그 다음에 선택된다.
가비지 수집 작동은 다음 조건들: 작동이 종료되는 것, 호스트가 명령을 전송하는 것, 또는 포어그라운드 모드에서 인터리빙된 버스트의 종점에 도달하는 것 중 하나의 발생까지 지속될 수 있다.
공통 블록 가비지 수집 작동에 대한 흐름도가 도8E에 도시되어 있다.
8.3.3 파일 가비지 수집
파일 가비지 수집은 파일에 대한 쓸모없는 데이터에 의해 차지된 용량을 복구하기 위하여 수행된다. 파일 가비지 수집은 편집된 플레인 파일 상태 또는 편집된 공통 파일 상태의 파일을 플레인 파일 상태로 복구한다. 제1 단계는 쓸모없는 파일 블록들 및 데이터 그룹들이 가비지 수집 동안 카피되어야 하는 공통 블록을 식별하기 위하여, 이의 FIT 파일 내의 FIT 엔트리들에 대한 분석을 수행하는 것이다. 이 분석에 대한 절차는 다음과 같다:
1. 관련된 FIT 파일 내의 FIT 엔트리들은 오프셋 어드레스 순서로 평가된다.
2. 데이터 그룹 리스트는 데이터 그룹들을 물리적 블록들과 관련시키도록 구성된다. 프로그램 블록 내의 데이터 그룹들은 이 리스트로부터 배제된다.
3. 리스트에서 참조된 각각의 블록들에서 데이터 그룹들 및 데이터 그룹 헤더들에 의해 차지된 물리적 용량이 결정된다.
4. 데이터 그룹 용량이 블록의 용량의 X%를 초과하는 경우, 블록은 파일 블록이다라고 결정된다. X의 값의 일례는 98%이다. X%는 버퍼 플러시 작동에 기인한 프로그래밍되지 않은 공간이 파일 블록에서 존속하도록 하기 위하여 100%보다 적다.
5. 파일 블록들인 것으로 결정되는 블록들 내의 데이터 그룹들이 상기 구성된 데이터 그룹 리스트로부터 제거된다.
개정된 데이터 그룹 리스트에서 참조된 데이터 그룹들은 쓸모없는 파일 블록 들 또는 공통 블록에 포함되고, 파일 가비지 수집 작동 동안 프로그램 블록으로 카피된다. 파일의 데이터 그룹 구조는 파일 가비지 수집 작동의 결과로서 변경될 수 있는데, 즉, 재배치된 데이터 그룹이 블록 경계에 의해 둘로 나누어지거나, 인접한 데이터 그룹과 병합될 수 있다. 파일에 대한 프로그램 블록은 목적지 블록으로서 사용된다. 이 프로그램 블록이 채워질 때, 또 다른 프로그램 블록이 오픈된다.
가비지 수집 작동은 다음 조건들: 작동이 종료되는 것, 호스트가 명령을 전송하는 것, 또는 포어그라운드 모드에서 인터리빙된 버스트의 종점에 도달하는 것 중 하나의 발생까지 지속될 수 있다.
파일 가비지 수집 작동에 대한 흐름도가 도8D에 도시되어 있다.
8.3.4 블록 통합
블록 통합은 불완전하게 프로그래밍되었던 공통 블록들 및 프로그램 블록들에서 소거된 용량을 복구하고 상기 용량을 다른 파일들에 대한 데이터를 저장하는데 이용 가능하도록 하기 위하여 수행된다.
통합에 대한 소스 블록은 블록이 가능한 최소의 데이터 재배치 이후에 소거되도록 하기 위하여, 최저 프로그래밍된 용량을 갖는 공통 블록 로그 또는 프로그램 블록 로그 내의 블록으로서 선택된다. 데이터는 완전한 파일 그룹의 단위들로 재배치되고, 여기서 파일 그룹은 프로그램 블록 또는 공통 블록 내에서 동일한 파일들에 대한 하나 이상의 데이터 그룹들을 포함한다. 각각의 파일 그룹은 목적지 블록에 그대로 재배치되지만, 상이한 파일 그룹들은 상이한 블록들에 재배치될 수 있다.
목적지 블록으로서 공통 블록이 우선적으로 선택되며, 적절한 공통 블록이 이용 가능하지 않은 경우 프로그램 블록이 그 다음에 선택된다. 목적지 블록이 이용 가능하지 않은 드문 경우에, 파일 그룹은 단일 이상의 목적지 블록에 재배치되도록 분할될 수 있다.
블록 통합 작동은 다음 조건들: 작동이 종료되는 것, 호스트가 명령을 전송하는 것, 또는 포어그라운드 모드에서 인터리빙된 버스트의 종점에 도달하는 것 중 하나의 발생까지 지속될 수 있다.
블록 통합 작동에 대한 흐름도가 도8F에 도시되어 있다.
8.4 가비지 수집 작동들의 스케줄링
가비지 수집은 바람직하게는 호스트 장치가 카드에 액세스하고 있는 기간들 동안 백그라운드 태스크로서 수행된다. 호스트에 의해 개시되는 백그라운드 가비지 수집은 직접적인 데이터 파일 플랫폼에서 지원된다.
그러나, 호스트가 장치에 데이터를 기록하고 있는 동안, 포어그라운드 태스크로서 가비지 수집을 수행하는 것이 또한 필요할 수 있다. 이 모드에서, 완전한 가비지 수집 작동은 단일 이벤트로서 완료될 필요가 없다. 가비지 수집의 버스트들은 호스트로부터의 데이터를 프로그래밍하는 버스트들과 인터리빙되어, 가비지 수집 작동이 다수의 별도의 단계들에서 종료될 수 있도록 할 수 있고, 호스트에 대한 장치의 유용성에 대해 제한된 인터럽션(interruption)이 존재하도록 한다.
8.4.1 백그라운드 작동
백그라운드 가비지 수집은 호스트가 장치에 유휴 명령을 전송할 때 개시된 다. 이것은 호스트가 장치로부터 고의로 전력을 제거하지 않을 것이며, 즉시 장치에 액세스하고자 하지는 않는다는 것을 의미한다. 그러나, 호스트는 또 다른 명령을 전송함으로써 언제라도 유휴 상태를 종료시킬 수 있다.
유휴 상태에서, 장치는 다음 조건들: 호스트가 또 다른 명령을 전송하는 것, 또는 모든 가비지 수집 큐들이 비어 있는 것 및 블록 통합 작동들이 불가능한 것 중 하나의 발생까지 연속적인 가비지 수집 작동들을 수행한다.
8.4.2 인터리빙된 작동
인터리빙된 가비지 수집 작동들은 파일 데이터를 프로그래밍하는 직접적인 데이터 파일 프로세스에 의해 개시된다. 인터리빙된 작동은 도8A에 도시되어 있다. 호스트 인터페이스가 활성이고 플래시 메모리에 대해 N1 프로그램 작동들이 행해지는 호스트 데이터 기록 단계 이후에, 장치는 가비지 수집 단계로 전환한다. 이 단계에서, 하나 이상의 가비지 수집 작동들 중 일부가 플래시 메모리에 대한 N2 프로그램 작동이 완료될 때까지 수행된다.
진행중인 가비지 수집 작동은 가비지 수집 단계의 끝까지 중지되고, 다음의 이와 같은 단계에서 재개될 수 있다. N1 및 N2의 값들은 적응형 스케줄링 알고리즘에 의해 결정된다.
8.4.3 적응형 스케줄링
적응형 스케줄링 방법은 가비지 수집 및 호스트 데이터 프로그래밍의 인터리빙된 버스트들의 상대적인 길이들을 제어하여, 가비지 수집 작동들에 의한 호스트 데이터 기록 작동들에 대한 인터럽션이 최소로 유지될 수 있도록 하는데 사용된다. 이것은 나중에 성능의 감소를 초래할 수 있는 진행중인 가비지 수집의 백로그가 구성되지 않는다는 것을 보장하면서 성취된다.
8.4.3.1 작동의 원리
언제라도, 장치 상태는 이전에 기록된 호스트 데이터에 의해 차지된 용량, 소거된 블록 풀 내의 블록들에서의 소거된 용량, 및 가비지 수집 작동들에 의해 추가적인 호스트 데이터를 기록하는데 이용 가능해질 수 있는 복구 가능한 용량을 포함한다. 이 복구 가능한 용량은 이전에 기록된 호스트 데이터와 공유된 프로그램 블록들, 공통 블록들, 또는 쓸모없는 파일 블록들, 또는 완전히 쓸모없는 블록들에서 존재할 수 있다. 용량 이용의 이러한 유형들이 도8B에 도시되어 있다.
가비지 수집의 적응형 스케줄링은 증분 호스트 데이터를 프로그래밍하고 이전에 기록된 호스트 데이터를 재배치하는 인터리브 비율을 제어하여, 상기 비율이 모든 복구 가능한 용량이 호스트 데이터에 이용 가능해질 수 있는 적응형 기간에 걸쳐 일정하게 유지되도록 할 수 있다. 호스트가 파일들을 삭제하는 경우(이는 이전에 기록된 호스트 데이터를 복구 가능한 용량으로 변환한다), 인터리브 비율은 이에 따라 변화되고, 새로운 적응형 기간이 시작된다.
최적의 인터리브 비율은 다음과 같이 결정될 수 있다:
If
소거된 블록 풀 내의 소거된 블록의 수 = 소거된_블록들;
프로그램 및 공통 블록들의 결합된 수 = 데이터_블록들;
프로그램 및 공통 블록들 내의 유효 데이터 페이지들의 총 수 = 데이 터_페이지들;
쓸모없는 블록들의 수 = 쓸모없는_블록들; 및
블록 내의 페이지들의 수 = 블록__페이지들,
Then
가비지 수집에 의해 생성될 수 있는 소거된 블록들의 수가 데이터_블록들 - (데이터_페이지들/블록__페이지들)에 의해 제공된다;
가비지 수집 이후에 소거된 블록의 총수는 소거된_블록들 + 쓸모없는_블록들 + 데이터_블록들 - (데이터_페이지들/블록__페이지들)에 의해 제공된다;
기록될 수 있는 증분 데이터 메타페이지들의 수는 블록__페이지들 * (소거된_블록들 + 쓸모없는_블록들 + 데이터_블록들) - 데이터_페이지들에 의해 제공된다.
If
유효 데이터가 프로그램 및 공통 블록들에 걸쳐 고르게 분포된다라고 가정된다(낮은 데이터 페이지 카운트들을 갖는 블록들이 블록 통합 작동들에 대한 소스 블록으로서 선택되기 때문에, 비관적인 가정)
Then
가비지 수집 동안 재배치된 메타페이지들의 수는 데이터_페이지들 * (데이터_블록들 - 데이터_페이지들/블록__페이지들)/데이터_블록들에 의해 제공된다.
최적의 인터리브 비율(N1:N2)은 가비지 수집 동안 재배치되어야 하는 메타페 이지들의 수에 기록될 수 있는 증분 데이터 메타페이지들의 수의 비율이다. 따라서,
N1:N2 = (블록__페이지들 * (소거된_블록들 + 쓸모없는_블록들 + 데이터_블록들) - 데이터_페이지들)/(데이터_페이지들 * (데이터_블록들 - 데이터_페이지들/블록__페이지들)/데이터_블록들)
쓸모없는 파일 블록들에서의 쓸모없는 용량의 복구가 적응형 스케줄링 알고리즘에 포함되지 않았다는 점에 주의하라. 이와 같은 용량은 단지 파일들의 편집에 기인하며, 통상적인 사항이 아니다. 쓸모없는 파일 블록들에서 상당한 용량이 존재하는 경우, 적응형으로 결정된 인터리브 비율은 최적이 아닐 수 있지만, (8.4.3.2에 설명된) 최소 비율을 갖는 작동으로의 스위칭이 이와 같은 블록들의 효율적인 가비지 수집을 보장할 것이다.
8.4.3.2 인터리브 제어
인터리브 비율(N1:N2)은 다음과 같이 3개의 대역들에서 규정된다.
1) 최대: 인터리브 비율에 대한 최대 한도는 가비지 수집이 결코 완전히 금지되지는 않도록 하기 위하여 설정된다. 이 최대 한도에 대한 일례는 10:1이다.
2) 적응형: 적응형 대역에서, 인터리브 비율은 공통 블록들 및 쓸모없는 블록들의 진행중인 가비지 수집, 및 프로그램 블록들 및 공통 블록들의 통합에 대해 최적이도록 제어된다. 이것은 다음 관계에 의해 규정되며,
N1:N2 = (블록__페이지들 * (소거된_블록들 + 쓸모없는_블록들 + 데이터_블록들) - 데이터_페이지들)/(데이터_페이지들 * (데이터_블록들 - 데이터_페이지 들/블록__페이지들)/데이터_블록들)
여기서 N1 및 N2는 페이지 프로그램 작동들의 수로서 규정된다. 가비지 수집의 버스트의 바람직한 지속기간을 나타내는 N2의 값이 규정된다. 이 값의 일례는 16이다.
3) 최소: 소거된 블록 풀 내의 블록들의 수가 규정된 최소값 아래로 떨어지는 경우, 인터리브 비율은 적응형으로 규정되는 것이 아니라, 고정된 최소 한도로 설정된다. 이 최소 한도의 일례는 1:10이다.
8.4.3.3 제어 파라미터들
다음 파라미터들은 적응형 스케줄링의 제어를 위하여, 플래시 메모리 내의 제어 블록에서의 제어 로그에서 유지된다.
소거된 블록 카운트: 소거된 블록 풀 내의 블록들의 수의 카운트가 유지된다. 이것은 블록들이 소거된 블록 풀로 추가되고 상기 소거된 블록 풀로부터 제거될 때 갱신된다.
프로그램 및 공통 블록 카운트: 프로그램 블록들 및 공통 블록들의 결합된 수의 카운트가 유지된다. 공통 블록들은 쓸모없는 데이터를 포함할 수 있다. 상기 카운트는 블록들이 프로그램 블록 로그 및 공통 블록 로그에 추가되고 상기 프로그램 블록 로그 및 공통 블록 로그로부터 제거될 때 갱신된다.
프로그램 및 공통 블록 페이지 카운트: 프로그램 블록들 및 공통 블록들 내의 유효 데이터 페이지들의 수의 카운트가 유지된다. 상기 카운트는 블록들이 프로그램 블록 로그 및 공통 블록 로그에 추가되고 상기 프로그램 블록 로그 및 공통 블록 로그로부터 제거될 때 갱신된다.
쓸모없는 블록 카운트: 가비지 수집을 대기하는 완전히 쓸모없는 블록들의 수의 카운트가 유지된다. 상기 카운트는 블록들이 쓸모없는 블록 가비지 수집 큐에 추가되고 상기 쓸모없는 블록 가비지 큐로부터 제거될 때 갱신된다.
8.5 가비지 수집에 대한 흐름도들
여러 특정 가비지 수집 작동들 중 하나를 선택하는 특정 알고리즘의 흐름도가 도8C에 제공되어 있다. 도8D는 도8C의 "파일 가비지 수집" 블록에 대한 흐름도이다. 도8C의 "공통 블록 가비지 수집" 블록에 대한 흐름도는 도8E의 주제이다. 도8C의 "블록 통합" 기능은 도8F의 흐름도에 의해 도시되어 있다.
4개의 도면들(8G1 내지 8G4)은 도8E의 프로세스에 기인할 수 있는 공통 블록의 예시적인 가비지 수집을 도시한다. 도8G1은 최초 조건을 도시하는 반면, 도8G2 내지 8G3는 가비지 수집 프로세스에서의 3개의 단계들을 도시한다. 화살표들은 쓸모없는 블록들로부터 가득 차지 않은 파일 블록들 내로의 유효 데이터의 전달을 도시하며, 이러한 목적지 파일 블록들은 그 후에 공통 블록들이 된다.
9. 데이터 버퍼링 및 프로그래밍
이 단락에서 설명된 데이터 버퍼링 및 프로그래밍 방법은 현재 제품들에서 사용되는 동일한 플래시 인터페이스 및 에러 수정 코드(ECC) 구조들을 사용하도록 억제된다. 새로운 플래시 인터페이스 및 ECC 구조들이 소개되면, 대안적인 최적화된 방법들이 미래에 채용될 수 있다.
9.1 데이터 버퍼들
버퍼 메모리는 플래시 메모리로 프로그래밍되고 플래시 메모리로부터 판독되는 데이터의 일시적인 저장을 위해, 제어기 내의 SRAM(종래 애플리케이션들의 RAM 31)에 존재한다. 버퍼 메모리의 할당된 영역은 전체 메타페이지가 플래시 메모리에서의 단일 작동으로 프로그래밍되도록 파일에 대한 충분한 데이터를 축적하는데 사용된다. 버퍼 메모리에서의 파일에 대한 데이터의 오프셋 어드레스는 중요하지 않다. 버퍼 메모리는 다수의 파일들에 대한 데이터를 저장할 수 있다.
호스트에 의한 기록 및 판독 작동들 둘 모두의 파이프라이닝(pipelining)을 허용하기 위하여, 2개의 메타페이지들의 용량을 갖는 버퍼 메모리 공간은 버퍼링되는 각각의 파일에 대해 이용 가능해야 한다. 버퍼 메모리는 한 세트의 섹터 버퍼들을 포함한다. 개별적인 섹터 버퍼들은 단일 파일에 대한 데이터의 일시적인 저장을 위해 할당될 수 있고, 데이터가 자신의 최종 목적지에 전달될 때, 할당해제될 수 있다. 섹터 버퍼들은 섹터 버퍼 번호(0 내지 N-1)에 의해 식별된다. 섹터 버퍼들의 수(N)의 일례는 64이다.
이용 가능한 섹터 버퍼들은 자신의 섹터 버퍼 번호 순으로 순환적으로 할당된다. 각각의 섹터 버퍼는 파일 라벨 및 자신의 포함된 데이터의 시작점 및 종점을 규정하는 2개의 관련 포인터들을 갖는다. 섹터 버퍼 내의 데이터에서의 파일 오프셋 어드레스 범위들이 또한 기록된다. 섹터 버퍼들 및 이들과 관련된 제어 정보 둘 모두는 제어기 내의 휘발성 메모리 내에서만 존재한다.
9.2 데이터 프로세싱
9.2.1 메타페이지
메타페이지는 플래시 메모리에서 프로그래밍의 최대 단위이다. 데이터는 최대 성능을 위하여, 가능할 때마다 메타페이지의 단위들로 프로그래밍되어야 한다.
9.2.2 페이지
페이지는 메타페이지의 서브셋이며, 플래시 메모리에서 프로그래밍의 최소 단위이다.
9.2.3 섹터
섹터는 제어기 및 플래시 메모리 사이에서 데이터 전달의 최소 단위이다. 섹터는 통상적으로 512 바이트의 파일 데이터를 포함한다. ECC는 (종래 애플리케이션들의 도2의 제어기 ECC 회로(33)와 같은) 각각의 섹터에 대한 제어기에 의해 발생되고, 섹터의 종점에 첨부된 플래시에 전달된다. 데이터가 플래시로부터 판독될 때, 데이터는 ECC가 검사되도록 하기 위하여, 다수의 완전한 섹터로 제어기에 전달되어야 한다.
9.3 버퍼 플러시
파일에 대한 데이터는 통상적으로 충분한 데이터가 플래시 메모리에서 완전한 메타페이지를 프로그래밍하는데 이용 가능할 때까지 섹터 버퍼들에서 축적된다. 호스트가 파일에 대한 데이터를 스트리밍하는 것을 중단할 때, 하나 이상의 섹터 버퍼들은 메타페이지의 부분에 대한 파일 데이터와 함께 유지된다. 이 데이터는 호스트가 파일에 대한 추가적인 데이터를 기록하도록 하기 위하여 버퍼 메모리에서 유지된다. 그러나, 어떤 상황들 하에서, 버퍼 메모리 내의 데이터는 버퍼 플러시로서 공지된 작동에서 플래시 메모리로 커미팅(committing)되어야 한다. 버퍼 플러시 작동은 섹터 버퍼들에 수용되는 파일에 대한 모든 데이터가 메타페이지 내의 하나 이상의 페이지들에서 프로그래밍되도록 한다.
버퍼 플러시 작동은 다음 2가지 이벤트들에서 수행된다:
1) 파일이 호스트에 의해 클로우즈되는 이벤트, 또는
2) 셧-다운 명령이 호스트에 의해 수신되는 이벤트
호스트에 의해 클로우즈되는 파일에 대한 데이터가 스왑 블록으로 스왑-아웃되었다면, 상기 데이터는 버퍼 메모리로 복구되어야 하고, 버퍼 플러시가 수행되어야 한다. 전력 제거 다음에 장치의 초기화 동안 스왑 블록 내에 있는 데이터는 버퍼 메모리로 복구되어야 하고, 버퍼 플러시가 수행되어야 한다.
9.4 버퍼 스왑
버퍼 스왑은 호스트가 파일에 대한 데이터를 지속적으로 기록할 때 하나 이상의 섹터 버퍼들 내의 파일에 대한 데이터가 나중에 버퍼 메모리로 복구되도록 하기 위하여 스왑 블록으로서 인식된 일시적인 위치에서 프로그래밍되는 작동이다.
9.4.1 스왑 블록의 포맷
스왑 블록은 섹터 버퍼들로부터 스왑-아웃되었던 파일들에 대한 데이터를 저장하는 전용 블록이다. 파일에 대한 데이터는 스왑 블록 내의 그 파일에 전용된 하나 이상의 페이지들에서 인접하게 저장된다. 데이터가 나중에 다시 버퍼 메모리로 스왑-인될 때, 상기 데이터는 스왑 블록에서 쓸모없어진다.
스왑 블록이 가득 차게 될 때, 상기 블록 내의 유효 데이터는 나중에 스왑 블록이 되는 소거된 블록으로 압축된 형태로 기록된다. 이 압축된 형태는 상이한 파일들에 대한 데이터가 동일한 페이지 내에서 존재하도록 한다. 바람직하게는, 단일 스왑 블록만이 존재한다.
9.4.2 스왑 블록에서 저장된 데이터 인덱싱
스왑 블록 내의 각각의 파일에 대해 버퍼 메모리 내의 파일에 대해 이전에 기록된 정보의 카피를 포함하는 스왑 블록 인덱스가 플래시 메모리에서 유지된다(9.1 참조).
9.4.3 스왑 블록으로 데이터 이동(스왑-아웃)
스왑-아웃 작동은 불충분한 섹터 버퍼들이 호스트에 의해 오픈되었던 파일, 또는 호스트로부터의 파일에 대한 기록 명령의 결과로서 스왑 블록으로부터 스왑-인되어야 하는 파일에 할당되는데 이용 가능할 때, 발생한다. 스왑-아웃을 위해 선택된 파일은 버퍼들이 버퍼 메모리에 존재하는 것들 중 가장 적은 최근에 기록된 파일이어야 한다.
선택적으로, 전력의 스케줄링되지 않은 제거의 이벤트에서 데이터의 안전성을 개선시키기 위하여, 호스트로부터의 가장 최근의 기록 명령과 관련되지 않은 버퍼 메모리 내의 임의의 파일에 대하여 스왑-아웃이 수행될 수 있다. 이 경우에, 파일에 대한 데이터는 버퍼 메모리에서 유지될 수 있고, 후속 스왑-인 작동은 전력의 제거가 존재하지 않는다면 필요로 되지 않는다.
9.4.4 스왑 블록으로부터의 데이터 복구(스왑-인)
파일에 대한 완전한 데이터는 스왑 블록으로부터 하나 이상의 섹터 버퍼들로 판독된다. 파일 데이터는 자신이 스왑-아웃되기 이전과 같이, 섹터 버퍼와 정확히 동일하게 정렬될 필요가 없다. 정렬은 스왑 블록의 압축(compaction)의 결과로서 변화될 수 있다. 스왑 블록에 있는 파일에 대한 데이터는 쓸모없어진다.
9.5 호스트로부터의 파일 데이터 프로그래밍
이 단락에서 제공된 예들은 메타페이지 당 2개의 페이지들, 및 페이지당 2개의 섹터들을 갖는 플래시 메모리 구성과 관련된다.
9.5.1 호스트로부터의 연속적인 데이터 프로그래밍
파일에 대한 데이터는 호스트로부터 스트리밍되고, 연속적으로 할당된 섹터 버퍼들에서 축적된다. 충분한 섹터 버퍼들이 채워졌을 때, 이들의 데이터는 각각의 섹터에 대한 ECC와 함께 플래시 메모리에 전달되고, 파일에 대한 프로그램 블록 내의 목적지 메타페이지가 프로그래밍된다. 연속적인 호스트 데이터 프로그래밍의 일례가 도9A에 도시되어 있다.
9.5.2 호스트로부터의 인터럽트된 데이터 프로그래밍
파일에 대한 데이터는 호스트로부터 스트리밍되고, 연속적으로 할당된 섹터 버퍼들에서 축적된다. 도9B는 인터럽트되었던 호스트 데이터 프로그래밍의 일례를 도시한다. 스트림은 데이터 세그먼트(2A) 후에 인터럽트되는 반면, 상이한 파일에 대한 기록 작동이 실행된다. 파일에 대한 추가적인 기록 명령이 수신될 때, 데이터 세그먼트(2B)에서 시작하는, 호스트로부터 스트리밍된 데이터는 이전과 동일한 섹터 버퍼에서 축적된다. 충분한 섹터 버퍼들이 채워졌을 때, 이들의 데이터는 각각의 섹터에 대한 ECC와 함께 플래시 메모리에 전달되고, 파일에 대한 프로그램 블록 내의 목적지 메타페이지가 프로그래밍된다.
9.5.3 버퍼로부터 플러시되는 데이터 프로그래밍
파일에 대한 데이터는 호스트로부터 스트리밍되고, 연속적으로 할당된 섹터 버퍼들에서 축적된다. 그러나, 완전한 메타페이지에서 프로그래밍되는데 충분하지 않은 데이터가 존재한다. 일례가 도9C에서 제공된다. 패딩 세그먼트(2B)와 함께, 데이터 세그먼트들(1 및 2A)은 각각의 섹터에 대한 ECC와 함께 플래시 메모리에 전달되며, 파일에 대한 프로그램 블록 내의 목적지 페이지가 프로그래밍된다.
9.5.4 버퍼로부터 스왑-아웃되는 데이터 프로그래밍
이 작동은 목적지 페이지가 파일에 대한 프로그램 블록 대신에, 스왑 블록에서 다음에 이용 가능하다는 것을 제외하면, 버퍼 플러시 프로그래밍에 대한 것과 동일하다. 도9D는 이것을 도시한다.
9.5.5 버퍼로부터의 플러시 다음의 호스트로부터의 데이터 프로그래밍
파일에 대한 버퍼 플러시 작동 다음에 호스트에 의해 공급되는 파일 데이터는 버퍼 메모리로부터 플러시되는 데이터와 별도로 프로그래밍된다. 따라서, 프로그래밍은 파일에 대한 프로그램 블록 내의 다음에 이용 가능한 페이지에서 시작되어야 한다. 현재 메타페이지를 완성시키는데 충분한 데이터가 축적되고, 이 데이터는 ECC와 함께 전달되며, 도9E의 섹터들(3 및 4)에 대해 도시된 바와 같이 프로그래밍된다.
9.5.6 버퍼로의 스왑-인 다음의 호스트로부터의 데이터 프로그래밍
버퍼 메모리로부터 스왑-아웃되었던 파일에 대한 추가적인 데이터가 수신될 때, 이 추가적인 데이터는 버퍼 메모리에서 할당된 섹터 버퍼들에 축적된다. 스왑- 아웃된 데이터는 또한 스왑 블록으로부터 버퍼 메모리로 복구된다. 충분한 데이터가 축적될 때, 전체 메타페이지가 단일 작동으로 프로그래밍된다.
도9F에 도시된 바와 같이, 패딩 세그먼트(2B)와 함께, 데이터 세그먼트들(1 및 2A)는 스왑 블록으로부터 판독되고, 2개의 섹터 버퍼들에서 복구된다. ECC가 섹터들 둘 모두에 대해 검사된다.
도9G의 예에서 도시된 바와 같이, 호스트로부터의 파일 데이터는 버퍼 섹터들에서 축적된다. 데이터 세그먼트들(1, 2A/2B, 3A/3B 및 4A/4B)은 각 섹터에 대한 ECC와 함께 플래시 메모리에 전달되고, 섹터들(1, 2, 3 및 4)로서 프로그래밍된다.
9.6 플래시로부터 카피된 데이터 프로그래밍
9.6.1 정렬된 메타페이지로부터의 데이터 카피
소스 및 목적지 메타페이지들은 도9H에 도시된 바와 같이, 전체 목적지 메테페이지에 카피될 데이터가 단일의 전체 소스 메타페이지를 차지할 때 정렬된다고 한다. 데이터 섹터들(1, 2, 3 및 4)은 소스 메타페이지로부터 4개의 섹터 퍼버들로 판독되고, 각각의 섹터에 대하여 ECC가 검사된다.
9.6.1.1 버퍼로부터의 라이트-백(Write-back)
데이터는 도9I에 도시된 바와 같이, 4개의 섹터 버퍼로부터 목적지 메타페이지로 프로그래밍된다. 섹터들(1, 2, 3 및 4)에 대하여 ECC가 발생되고 저장된다.
9.6.1.2 온-칩 카피
카피될 데이터의 메타페이지 정렬이 소스 및 목적지 메타페이지들에서 동일할 때, 카피 작동의 속도를 증가시키기 위하여 플래시 칩 내의 온-칩 카피가 사용 될 수 있다. 데이터는 ECC 검사가 에러가 없다는 것을 나타내는 경우에 목적지 메타페이지로 프로그래밍된다.
9.6.1.3 공통 블록 내에서의 메타페이지 정렬
공통 블록 내에서의 각각의 파일 그룹의 시작점은 메타페이지의 시작점과 정렬되어야 한다. 프로그램 블록 내의 데이터 그룹들은 또한 블록 내에 제1 메타페이지의 시작점과 정렬된다. 따라서, 프로그램 블록들을 공통 블록 내로 통합하는 것 및 파일 그룹들을 하나의 공통 블록으로부터 프로그램 블록 또는 또 다른 공통 블록으로 카피하는 것과 같은 공통 블록에 대한 모든 데이터 카피 작동들은 정렬된 메타페이지들 사이의 데이터 카피와 함께 작동할 것이다. 플래시 칩 내의 온-칩 카피는 카피 작동의 속도를 증가시키기 위하여 데이터를 공통 블록에 또는 공통 블록으로부터 카피할 때 사용되어야 한다.
9.6.2 비-정렬된 순차적인 메타페이지들로부터의 데이터 카피
소스 및 목적지 메타페이지들은 전체 목적 메타페이지에 카피될 데이터가 인접하지만, 2개의 순차적인 소스 메타페이지들을 차지할 때 비-정렬된다고 한다. 소스 메타페이지를 판독하는 일례가 도9J에 도시되어 있다. 데이터 섹터들(1A/1B, 2, 및 3)은 제1 소스 메타페이지로부터 3개의 섹터 버퍼들로 판독되고, 데이터 섹터들(4 및 5A/5B)은 제2 소스 메타페이지로부터 추가적인 2개의 섹터 버퍼들로 판독된다. 각각의 섹터에 대하여 ECC가 검사된다.
데이터 부분들(1A/1B, 2A/2B, 3A/3B, 및 4A/4B)은 도9K에 도시된 바와 같이 섹터 버퍼들로부터 목적지 메타페이지 내의 섹터들(1, 2, 3 및 4)로 프로그래밍된 다. 섹터들(1, 2, 3 및 4)에 대하여 ECC가 발생되고 저장된다.
카피되는 메타페이지 데이터가 연속적인 데이터의 보다 큰 런(run)의 부분일 때, 카피는 부분적으로 파이프라이닝될 수 있다. 데이터는 소스 위치로부터 전체 메타페이지들 내의 버퍼 메모리로 판독된다. N개의 목적지 메타페이지들을 프로그래밍하기 위하여 N+1개의 소스 메타페이지들이 판독되어야 한다.
9.6.3 비-정렬된 비-순차적인 메타페이지들로부터의 데이터 카피
소스 및 목적지 메타페이지들은 전체 목적지 메타페이지에 카피될 데이터가 인접하지 않고, 2개 이상의 비-순차적인 소스 메타페이지들을 차지할 때 비-정렬되고 비-순차적이라고 한다. 이 경우는 파일 내의 2개 이상의 비-순차적인 데이터 그룹들 중 일부를 단일 목적지 메타페이지에 카피하는 것을 나타낸다. 도9L에 도시된 바와 같이, 데이터 섹터들(1A/1B, 2, 및 3A/3B)은 제1 소스 메타페이지로부터 3개의 섹터 버퍼들로 판독되고, 데이터 섹터들(4A/4B 및 5A/5B)은 제2 소스 메타페이지로부터 추가적인 2개의 섹터 버퍼들로 판독된다. 각각의 섹터에 대해 ECC가 검사된다.
그 후, 데이터 부분들(1A/1B, 2A/2B, 3A/3B, 및 4A/4B)이 도9M에 도시된 바와 같이, 섹터 버퍼들로부터 목적지 메타페이지 내의 섹터들(1, 2, 3 및 4)로 프로그래밍된다. 섹터들(1, 2, 3 및 4)에 대해 ECC가 발생되고 저장된다.
10. 파일 인덱싱
10.1 파일 인덱싱의 원리들
파일 인덱싱은 도10A에 일반적으로 도시되어 있다. 파일에 대한 데이터는 파 일 오프셋 어드레스 공간 및 물리적 어드레스 공간 둘 모두에서 인접한 어드레스들의 런을 각각 스패닝(spanning)하는, 데이터 그룹들의 세트로서 저장된다. 파일에 대한 세트 내의 데이터 그룹들은 서로 임의의 특정한 물리적 어드레스 관계를 가질 필요가 없다. 파일 인덱스 테이블(FIT)은 파일에 대한 유효 데이터 그룹들의 위치들이 오프셋 어드레스 순서로 식별되도록 한다. 파일에 대한 FIT 엔트리들의 세트는 파일 데이터 포인터에 의해 식별된다.
호스트에 의해 발생되는 파일과 관련된 정보는 정보 테이블(IT) 내에 파일_정보로서 저장된다. 파일_정보의 특성 및 내용은 호스트에 의해 결정되며, 장치에 의해 해석되지 않는다. 파일_정보는 파일이름, 페어런트 디렉토리, 차일드 드렉토리들, 속성들, 권리 정보, 및 파일에 대한 파일 어소시에이션(file association)을 포함할 수 있다. IT 내의 파일에 대한 파일_정보는 파일 정보 포인터에 의해 식별된다.
디렉토리는 장치 내의 모든 유효 파일에 대한 파일 데이터 포인터 및 파일 정보 포인터를 포함한다. 파일에 대한 이러한 디렉토리 엔트리들은 수치적인 값이 파일ID에 의해 식별된다.
10.2 파일 인덱싱 구조들
도10B는 파일 인덱싱 구조들의 일례를 도시한다.
10.3 디렉토리
10.3.1 파일ID
파일ID는 직접적인 데이터 파일 플랫폼 내에 존재하는 파일에 대한 수치적인 식별자이다. 이 파일 ID는 생성 명령에 응답하여 직접적인 데이터 파일 플랫폼에 의해 할당되고, 생성 명령을 갖는 파라미터로서 지정될 수 있다.
파일ID 값이 장치에 의해 할당될 때, 디렉토리 내의 엔트리들에 대한 순환적인 포인터가 다음에 이용 가능한 파일ID를 위치시키기 위해 사용된다. 파일이 삭제되거나 소거될 때, 파일의 파일ID에 의해 식별된 디렉토리 엔트리는 이용 가능한 것으로 마킹된다.
파일ID 값은 파일에 대한 파일 데이터 포인터 및 파일 정보 포인터를 위한 필드들을 포함하는 디렉토리 내의 엔트리를 규정한다.
장치에 저장될 수 있는 파일들의 최대 수는 파일ID에 대해 할당된 비트들의 수에 의해 결정된다.
10.3.2 파일 데이터 포인터
파일 데이터 포인터는 제어 로그 내에서, FIT 블록 리스트, 및 아마도 또한 FIT 갱신 블록 리스트 내의 파일에 대한 엔트리에 대한 논리적 포인터이다.
파일 데이터 포인터는 2개의 필드들을 갖는다:
1) FIT 범위, 및
2) FIT 파일 번호
파일에 대한 파일 데이터 포인터는 파일이 제로의 길이를 가질 때에도 존재한다.
10.3.2.1 FIT 범위
FIT 범위는 FIT의 서브셋이다. 각각의 FIT 범위는 별도의 물리적 FIT 블록에 맵핑된다. FIT 범위는 하나의 FIT 파일 및 예를 들어, 512일 수 있는 FIT 파일들의 최대 수 사이를 포함할 수 있다.
10.3.2.2 FIT 파일 번호
FIT 파일 번호는 FIT 내에서 FIT 파일을 식별하는데 사용되는 논리적 수이다.
10.3.3 파일 정보 포인터
파일 정보 포인터는 제어 로그 내에서, 정보 블록 리스트, 및 아마도 또한 정보 갱신 블록 리스트 내의 파일에 대한 엔트리에 대한 논리적 포인터이다.
파일 정보 포인터는 2개의 필드들을 갖는다:
1) 정보 범위; 및
2) 정보 번호
10.3.3.1 정보 범위
정보 범위는 정보 테이블의 서브셋이다. 각각의 정보 범위는 별도의 물리적 정보 블록에 맵핑된다. 정보 범위는 하나의 파일_정보 세트 및 예를 들어, 512일 수 있는 최대 수의 파일-정보 세트들 사이를 포함할 수 있다.
10.3.3.2 파일 번호
파일 번호는 정보 블록 내에서 파일_정보 세트를 식별하는데 사용되는 논리적인 수이다.
10.3.4 디렉토리 구조
디렉토리는 그 목적에 전용된 플래시 블록에 저장된다. 도10C은 예시적인 디 렉토리 블록 포맷을 도시한다. 디렉토리는 페이지들의 세트로서 구성되며, 이들 각각 내에는 연속적인 파일ID 값들을 갖는 파일들에 대하여 엔트리들의 세트가 존재한다. 엔트리들의 이 세트는 디렉토리 범위라 칭해진다.
디렉토리는 제어 포인터에 의해 규정된 다음의 소거된 페이지 위치에서 디렉토리 페이지의 개정된 버전을 기록함으로써 갱신된다. 다수의 페이지들은 자신들을 메타페이지 내의 상이한 페이지들에 프로그래밍함으로써, 필요하다면 동시에 갱신될 수 있다.
디렉토리 범위에 대한 현재 페이지 위치들은 디렉토리 블록 내의 최종적인 기록된 페이지에서의 범위 포인터들에 의해 식별된다.
10.4 블록 리스트들
파일 인덱스 테이블 및 정보 테이블 둘 모두는 일련의 논리적 범위들을 포함하며, 여기서 범위는 물리적 플래시 블록과의 상관성을 갖는다. 블록 리스트들은 파일 데이터 포인터 또는 파일 정보 포인터에서 규정된 범위 및 물리적 블록 사이, 및 파일 데이터 포인터 또는 파일 정보 포인터에서 규정된 논리적 번호 및 파일 인덱스 테이블 및 정보 테이블 내의 물리적 블록들에서 사용되는 논리적 번호 사이의 상관성들을 기록하기 위하여 제어 로그에서 유지된다.
10.4.1 FIT 블록 리스트들
FIT 블록 리스트는 파일에 대한 FIT 내의 엔트리들에 대해 FIT 파일 포인터를 할당하는 제어 로그 내의 리스트이다. FIT 파일 포인터는 파일 데이터 포인터에서 규정되는 동일한 FIT 파일 번호, 및 파일 데이터 포인터에서 규정된 범위에 할 당되는 물리적 플래시 블록의 어드레스를 포함한다. FIT 블록 리스트 내의 엔트리는 단일 필드, 블록 물리적 어드레스를 포함한다.
FIT 갱신 블록 리스트는 갱신되고 있는 FIT 내의 파일에 대한 엔트리들에 대해 FIT 파일 포인터를 할당하는 제어 로그 내의 리스트이다. FIT 파일 포인터는 FIT 갱신 블록 내에서 갱신되는 FIT 파일에 할당되는 FIT 갱신 파일 번호, 및 현재 FIT 갱신 블록 엔트리로서 할당되는 물리적 플래시 블록의 어드레스를 포함한다. FIT 갱신 블록 리스트 내의 엔트리는 3개의 필드들을 포함한다:
1) FIT 범위,
2) FIT 파일 번호, 및
3) FIT 갱신 파일 번호.
파일 데이터 포인터에 대응하는 FIT 파일 포인터가 FIT 블록 리스트로부터 결정되어야 할 때, 파일 데이터와 관련된 엔트리가 존재하는지를 결정하기 위하여 FIT 갱신 블록 리스트가 탐색된다. 존재하지 않는 경우, FIT 블록 리스트 내의 파일 데이터 포인터와 관련된 엔트리는 유효하다.
10.4.2 정보 블록 리스트들
호스트에 의해 기록된 파일_정보는 정보 테이블 내에 직접 저장되고 파일 정보 포인터에 의해 식별된다. 정보 블록 리스트는 정보 포인터를 정보 테에블 내의 파일_정보에 할당하기 위하여 존재한다. 이러한 정보 블록 리스트들에 대한 인덱싱 메커니즘들은 FIT 블록 리스트들에 대해 상술된 것과 완전히 유사하다.
정보 블록 리스트 내의 엔트리는 단일 필드: 블록 물리적 어드레스를 포함한 다.
정보 갱신 블록 리스트 내의 엔트리는 3개의 필드들을 포함한다:
1) 정보 범위,
2) 정보 번호, 및
3) 갱신 정보 번호.
10.5 파일 인덱스 테이블
파일 인덱스 테이블(FIT)은 FIT 엔트리들의 스트링을 포함하며, 여기서 각각의 FIT 엔트리는 데이터 그룹의 플래시 메모리에서 파일 오프셋 어드레스 및 물리적 위치를 식별한다. FIT는 장치에 저장된 파일들에 대한 모든 유효 데이터 그룹들에 대한 엔트리들을 포함한다. 쓸모없는 데이터 그룹들은 FIT에 의해 인덱싱되지 않는다. 예시적인 FIT 논리적 구조가 도10D에 제공된다.
파일 내의 데이터 그룹들에 대한 FIT 엔트리들의 세트는 파일 오프셋 어드레스 순서로 연속적인 엔트리들로서 유지된다. 엔트리들의 세트는 FIT 파일로서 인식된다. FIT는 일련의 FIT 범위들로서 유지되고, 각각의 FIT 범위는 물리적 플래시 블록과의 상관성을 갖는다. FIT 범위들의 수는 장치 내의 데이터 그룹들의 수에 따라 가변될 것이다. 새로운 FIT 범위들이 생성될 것이며, 장치의 작동 동안 FIT 범위들이 제거될 것이다. FIT 블록 리스트들은 FIT 내의 위치가 식별될 수 있는 FIT 파일 포인터를 파일 데이터 포인터로부터 생성하는데 사용된다.
10.5.1 FIT 파일
FIT 파일은 파일 내의 데이터 그룹들에 대한 인접한 FIT 엔트리들의 세트이 다. 상기 세트의 엔트리들은 파일 오프셋 어드레스들의 순서이다. FIT 파일 내의 FIT 엔트리들은 연속적이며, 단일 FIT 범위 내에서 포함되거나, 하나의 FIT 범위로부터 다른 연속적인 FIT 범위로 오버플로우(overflow)된다.
10.5.2 FIT 헤더
FIT 파일 내의 제1 엔트리는 FIT 헤더이다. 이것은 3개의 필드들을 포함한다:
1) 파일ID,
2) 프로그램 블록, 및
3) 프로그램 포인터.
FIT 헤더는 FIT 엔트리의 정수(integral number)와 동일한 고정된 길이를 갖는다. 이 수는 1일수 있다.
10.5.2.1 파일ID
파일ID는 디렉토리 내의 파일에 대한 엔트리를 식별한다.
10.5.2.2 프로그램 블록
파일에 대한 프로그램 블록의 현재 물리적 위치는 FIT 파일의 갱신된 버전이 FIT에서 기록될 때마다 FIT 헤더에 레코딩된다. 이것은 파일이 호스트에 의해 재오픈될 때, 파일에 대한 프로그램 블록을 위치시키는데 사용된다. 이것은 또한 프로그램 블록 통합을 위해 선택되었던 파일에 대한 프로그램 블록 및 FIT 파일 사이의 대응성(correspondence)을 검증하는데 사용될 수 있다.
10.5.2.3 프로그램 포인터
파일에 대한 프로그램 블록 내의 프로그램 포인터의 현재 값은 FIT 파일의 갱신된 버전이 FIT에서 기록될 때마다 FIT 헤더에 레코딩된다. 이것은 파일이 호스트에 의해 재오픈될 때, 또는 프로그램 블록이 프로그램 블록 통합을 위해 선택되었을 때, 파일에 대한 프로그램 블록 내에서 데이터를 프로그래밍하는 위치를 규정하는데 사용된다.
10.5.3 FIT 엔트리
FIT 엔트리는 데이터 그룹을 지정한다. 이것은 4개의 필드들을 갖는다:
1) 오프셋 어드레스,
2) 길이,
3) 포인터, 및
4) EOF 플래그.
10.5.3.1 오프셋 어드레스
오프셋 어드레스는 데이터 그룹의 제1 바이트와 관련된 파일 내에서의 바이트 단위의 오프셋이다.
10.5.3.2 길이
이것은 데이터 그룹 내의 파일 데이터의 바이트 단위의 길이이다. 완전한 데이터 그룹의 길이는 이 값보다 데이터 그룹 헤더의 길이만큼 더 길다.
10.5.3.3 포인터
이것은 데이터 그룹의 시작점의 플래시 블록 내의 위치에 대한 포인터이다. 이 포인터는 2개의 필드들을 갖는다:
1) 데이터 그룹을 포함하는 물리적 블록을 규정하는 블록 어드레스, 및
2) 데이터 그룹의 시작점의 블록 내에서의 바이트 오프셋을 규정하는 바이트 어드레스. 이 어드레스는 데이터 그룹 헤더를 포함한다.
10.5.3.4 EOF 플래그
EOF 플래그는 파일의 종점인 것으로 데이터 그룹을 식별하는 단일 비트이다.
10.5.4 FIT 블록 포맷
FIT 범위는 FIT 블록으로서 인식되는 단일 물리적 블록에 맵핑된다. 이러한 블록들 내의 데이터의 갱신된 버전들은 FIT 갱신 블록으로서 인식되는 공통 갱신 블록에서 프로그래밍된다. 데이터는 한 페이지의 단위로 갱신된다. 메타페이지 내의 다수의 페이지들은 필요하다면, 병렬로 갱신될 수 있다.
10.5.4.1 간접적인 어드레싱
FIT 파일은 FIT 파일 포인터에 의해 식별된다. 이 포인터 내의 FIT 파일 번호 필드는 FIT 파일에 대한 데이터가 인덱싱을 위해 사용되는 물리적 구조들 내에서 이동될 때 일정하게 유지되는 논리적 포인터이다. 물리적 페이지 구조들 내의 포인터 필드들은 논리적 대 물리적 포인터 번역을 제공한다.
10.5.4.2 페이지 포맷
FIT 블록들 및 FIT 갱신 블록들에서 사용된 페이지 포맷들은 동일하다.
페이지는 2개의 에어리어들, 즉, FIT 엔트리들에 대한 제1 에어리어 및 파일 포인터들에 대한 제2 에어리어로 세분된다. 일례가 도10E에 제공된다.
제1 에어리어는 데이터 그룹을 각각 지정하거나 FIT 파일에 대한 FIT 헤더를 각각 포함하는 FIT 엔터리들을 포함한다. FIT 페이지 내의 FIT 엔트리들의 수의 일례는 512이다. FIT 파일은 하나의 FIT 페이지 또는 중첩하는 2개 이상의 FIT 페이지들 내에서, FIT 엔트리들의 인접한 세트에 의해 지정된다. FIT 헤더를 포함하는, FIT 파일의 제1 엔트리는 제2 에어리어 내의 파일 포인터에 의해 식별된다.
제2 에어리어는 단지 가장 최근에 프로그래밍되었던 FIT 페이지 내의 유효 파일 포인터들을 포함한다. 모든 다른 페이지들의 제2 에어리어는 쓸모없고, 사용되지 않는다. 파일 포인터 에어리어는 FIT 블록에 포함될 수 있는 각각의 FIT 파일에 대해 하나의 엔트리를 포함하는데, 즉, 파일 포인터 엔트리들의 수는 FIT 블록에 존재할 수 있는 FIT 파일들의 최대 수와 동일하다. 파일 포인터 엔트리들은 FIT 파일 번호에 따라 순차적으로 저장된다. N번째 파일 포인터 엔트리는 FIT 블록 내의 FIT 파일(N)에 대한 포인터를 포함한다. 이것은 2개의 필드들을 갖는다:
1) FIT 블록 내에서의 물리적 페이지를 지정하는 페이지 번호, 및
2) 물리적 페이지 내에서의 FIT 엔트리를 지정하는 엔트리 번호.
파일 포인터 엔트리는 FIT 블록 내의 논리적 FIT 파일 번호를 블록 내의 물리적 위치로 번역하는 메커니즘을 제공한다. 파일 포인터들의 완전한 세트는 모든 FIT 페이지가 프로그래밍될 때 갱신되지만, 단지 가장 최근에 프로그래밍된 페이지에서만 유효하다. FIT 파일이 FIT 갱신 블록에서 갱신될 때, FIT 블록 또는 FIT 갱신 블록 중 하나에서의 FIT 파일의 이전 위치는 쓸모없게 되고, 더 이상 파일 포인터에 의해 참조되지 않는다.
10.5.5 FIT 갱신 블록들
FIT 블록 내의 FIT 파일들에 대한 변화는 모든 FIT 블록들 사이에서 공유되는 단일 FIT 갱신 블록에서 행해진다. 물리적 FIT 블록들의 일례가 도10F에 도시되어 있다.
파일 데이터 포인터는 FIT 파일에 대한 논리적 포인터이다. 이것의 FIT 범위 필드는 이 FIT 범위에 맵핑되는 FIT 블록의 물리적 어드레스를 식별하기 위하여 FIT 블록 리스트에 어드레스하는데 사용된다. 그 후, FIT 파일 포인터의 FIT 파일 번호 필드는 FIT 블록에서 타겟 FIT 파일에 대한 정확한 파일 포인터를 선택한다.
파일 데이터 포인터의 FIT 범위 필드 및 FIT 파일 번호 필드 둘 모두는 타겟 FIT 파일이 갱신되었는지를 식별하기 위하여 FIT 갱신 블록 리스트에 어드레스하는데 사용된다. 엔트리가 이 리스트에서 발견되는 경우, 이 엔트리는 FIT 파일의 갱신된 버전의 갱신 블록 내에서 FIT 파일 번호 및 FIT 갱신 블록의 물리적 블록 어드레스를 제공한다. 이것은 FIT 블록에서 FIT 파일에 대해 사용된 FIT 파일 번호와 상이할 수 있다. FIT 갱신 블록은 FIT 파일의 유효 버전을 포함하며, FIT 블록 내의 버전은 쓸모없다.
10.5.6 갱신 작동들
FIT 블록은 통합 작동 동안에만 프로그래밍된다. 이로 인해, FIT 파일들이 블록 내에서 밀접하게 패킹된다. FIT 갱신 블록은 FIT 엔트리들이 변경되거나, 추가되거나 제거될 때, 및 압축 작동 동안 갱신된다. 도10G은 FIT 파일들에 대한 갱신 작동의 예들을 도시한다.
FIT 파일들은 통합 작동의 결과로서 FIT 블록에서 밀접하게 패킹된다. FIT 블록은 자신 내에 존재할 수 있는 FIT 파일들의 최대 수가 존재하기 때문에, 완전히 채워지지 않을 수 있다. FIT 파일들은 하나의 페이지로부터 다음 페이지로 오버플로우될 수 있다. FIT 블록 내의 FIT 파일은 자신이 갱신되고 FIT 갱신 블록에서 재기록될 때 쓸모없게 된다.
FIT 파일은 갱신될 때, FIT 갱신 블록 내의 다음의 이용 가능한 페이지에서 완전히 재기록된다. FIT 파일을 갱신하는 것은 기존의 FIT 엔트리들의 내용을 변화시키는 것, 또는 FIT 엔트리들의 수를 변화시키는 것 중 하나로 이루어질 수 있다. FIT 파일들은 하나의 페이지로부터 다음 페이지로 오버플로우될 수 있다. FIT 갱신 블록 내의 FIT 파일들은 모두 동일한 FIT 범위와 관련될 필요는 없다.
10.5.7 FIT 범위의 생성
FIT 파일들에 대한 추가적인 저장 공간을 수용하기 위하여 새로운 FIT 범위가 생성되어야 할 때, FIT 블록은 즉시 생성되지는 않는다. 이 범위 내의 새로운 데이터는 최초에 FIT 갱신 블록에 기록된다. 그 후에 , FIT 블록은 범위에 대해 통합 작동이 수행될 때 생성된다.
10.5.8 압축 및 통합
10.5.8.1 디렉토리 갱신 블록 또는 FIT 갱신 블록의 압축
FIT 갱신 블록이 채워질 때, 이의 유효 FIT 파일 데이터는 나중에 갱신 블록이 되는 소거된 블록에 압축된 형태로 프로그래밍될 수 있다. 갱신이 몇 개의 파일들에만 관련되는 경우, 프로그래밍될 적은 한 페이지의 압축된 유효 데이터가 존재할 수 있다.
압축 작동에서 재배치될 FIT 파일이 클로우즈된 파일과 관련되고, 그 범위에 대한 FIT 블록이 충분한 프로그래밍되지 않은 페이지들을 포함하는 경우, FIT 파일은 압축된 갱신 블록보다는 오히려, FIT 블록에 재배치될 수 있다.
10.5.8.2 디렉토리 블록 또는 FIT 블록의 통합
FIT 엔트리들이 갱신될 대, FIT 블록 내의 원래 FIT 파일은 쓸모없게 된다. 이와 같은 FIT 블록들은 쓸모없는 공간을 복구하기 위하여 주기적으로 가비지 수집을 겪어야 한다. 이것은 통합 작동에 의해 성취된다. 게다가, 새로운 파일들이 범위내에서 생성될 수 있고, 갱신 블록 내의 엔트리를 가질 수 있지만, FIT 블록 내의 대응하는 쓸모없는 엔트리들은 존재하지 않을 수 있다. 이와 같은 FIT 파일들은 FIT 블록에 주기적으로 재배치되어야 한다.
갱신 블록 내의 FIT 파일들은 관련 범위에 대한 FIT 블록 내로 통합될 수 있으므로, 갱신 블록으로부터 제거될 수 있는 반면, 다른 FIT 파일들은 갱신 블록에서 유지된다.
FIT 파일 내의 FIT 엔트리들의 수가 갱신 프로세스 동안 증가하고, FIT 범위에 대한 유효 데이터가 단일 소거된 블록 내로 통합될 수 없는 경우, 그 FIT 범위에 원래 할당된 일부 FIT 파일들은 또 다른 FIT 범위에 할당될 수 있고, 통합은 별도의 작동들로 2개의 블록들 내로 수행될 수 있다. FIT 파일의 이와 같은 재배치의 경우에, 디렉토리 내의 파일 데이터 포인터는 새로운 FIT 범위를 반영하기 위하여 갱신되어야 한다.
범위에 대한 통합 작동은 FIT 갱신 블록 내의 그 범위에 대한 유효 데이터의 용량이 규정된 임계값에 도달할 때 수행되어야 한다. 이 임계값의 일례는 50%이다.
압축은 여전히 오픈되어 있고 호스트가 지속적으로 액세스할 수 있는 파일들과 관련된 활성 FIT 파일들에 대해 통합에 우선하여 수행되어야 한다.
10.6 정보 테이블
정보 테이블은 10.5 장의 파일 인덱스 테이블에 대해 규정되는 것과 동일한 구조들, 인덱싱 메커니즘들 및 갱신 기술들을 사용한다. 그러나, 파일에 대한 파일_정보는 직접적인 데이터 파일 플랫폼 내에서 해석되지 않는 정보의 단일 스트링을 포함한다.
10.7 데이터 그룹들
데이터 그룹은 단일 메모리 블록 내의 인접한 물리적 어드레스들에서 프로그래밍되는, 파일에 대한 인접한 오프셋 어드레스들을 갖는 파일 데이터의 세트이다. 파일은 통상적으로 다수의 데이터 그룹들로서 프로그래밍될 것이다. 데이터 그룹은 하나의 바이트 및 하나의 블록 사이의 임의의 길이를 가질 수 있다.
10.7.1 데이터 그룹 헤더
각각의 데이터 그룹은 교차 상관 목적들을 위한 파일 식별자 정보를 포함하는 헤더와 함께 프로그래밍된다. 헤더는 이의 데이터 그룹이 부분을 형성하는 파일에 대한 FIT 파일 포인터를 포함한다.
11. 블록 상태 관리
11.1 블록 상태들
파일 데이터의 저장에 대한 블록들은 도11A의 상태도에 도시된 바와 같이, 다음의 8개의 상태들로 분류될 수 있다.
11.1.1 소거된 블록
소거된 블록은 소거된 블록 풀 내의 소거된 상태에 있다. 이 상태로부터의 가능한 트랜지션은 다음과 같다:
(a) 소거된 블록 대 프로그램 블록
단일 파일에 대한 데이터는 자신이 호스트로부터 공급될 때, 또는 자신이 파일에 대한 가비지 수집 동안 카피될 때, 소거된 블록으로 프로그래밍된다.
11.1.2 프로그램 블록
프로그램 블록은 부분적으로 단일 파일에 대한 유효 데이터로 프로그래밍되며, 일부 소거된 용량을 포함한다. 파일은 오픈되거나 클로우즈될 수 있다. 파일에 대한 추가적인 데이터는 호스트에 의해 공급될 때, 또는 파일의 가비지 수집 동안 카피될 때, 블록으로 프로그래밍되어야 한다.
이 상태로부터의 가능한 트랜지션들은 다음과 같다:
(b) 프로그램 블록 대 프로그램 블록
단일 파일에 대한 데이터는 자신이 호스트로부터 공급될 때, 또는 자신의 파일에 대한 가비지 수집 동안 카피될 때 그 파일에 대한 프로그램 블록에 프로그래밍된다.
(c) 프로그램 블록 대 파일 블록
호스트로부터의 단일 파일에 대한 데이터는 그 파일에 대한 프로그램 블록을 채우기 위하여 프로그래밍된다.
(f) 프로그램 블록 대 쓸모없는 블록
프로그램 블록 내의 파일에 대한 모든 데이터는 가비지 수집 동안 또 다른 블록으로 카피되는 유효 데이터, 또는 호스트에 의해 삭제되는 파일의 모두 또는 일부의 결과로서, 쓸모없게 된다.
(h) 프로그램 블록 대 쓸모없는 프로그램 블록
프로그램 블록 내의 데이터의 일부는 동일한 프로그램 블록에서 호스트에 의해 기록되는 데이터의 갱신된 버전, 또는 호스트에 의해 삭제되는 파일의 일부의 결과로서 쓸모없게 된다.
(l) 프로그램 블록 대 공통 블록
파일에 대한 나머지 데이터는 파일 또는 공통 블록의 가비지 수집 동안, 또는 프로그램 블록들의 통합 동안 상이한 클로우즈된 파일에 대한 프로그램 블록으로 프로그래밍된다.
11.1.3 파일 블록
파일 블록은 단일 파일에 대한 완전히 유효한 데이터로 채워진다.
이 상태로부터의 가능한 트랜지션들은 다음과 같다:
(d) 파일 블록 대 쓸모없는 파일 블록
파일 블록 내의 데이터의 일부는 파일에 대한 프로그램 블록에서 호스트에 의해 프로그래밍되는 데이터의 갱신된 버전의 결과로서 쓸모없게 된다.
(g) 파일 블록 대 쓸모없는 블록
파일 블록 내의 모든 데이터는 파일에 대한 프로그램 블록에서 호스트에 의 해 프로그래밍되는 블록 내의 데이터의 갱신된 버전, 또는 호스트에 의해 삭제되는 파일의 모두 또는 일부의 결과로서 쓸모없게 된다.
11.1.4 쓸모없는 파일 블록
쓸모없는 파일 블록은 단일 파일에 대한 유효 데이터 및 쓸모없는 데이터의 임의의 조합으로 채워진다.
이 상태로부터의 가능한 트랜지션들은 다음과 같다:
(e) 쓸모없는 파일 블록 대 쓸모없는 블록
쓸모없는 파일 블록 내의 모든 데이터는 파일에 대한 프로그램 블록에서 호스트에 의해 프로그래밍되는 블록 내의 유효 데이터의 갱신된 버전, 가비지 수집 동안 또 다른 블록으로 카피되는 유효 데이터, 또는 호스트에 의해 삭제되는 파일의 모두 또는 일부의 결과로서 쓸모없게 된다.
11.1.5 쓸모없는 프로그램 블록
쓸모없는 프로그램 블록은 부분적으로 단일 파일에 대한 유효 데이터 및 쓸모없는 데이터의 임의의 조합으로 프로그래밍되며, 일부의 소거된 용량을 포함한다. 파일에 대한 추가적인 데이터는 호스트에 의해 공급될 때 블록으로 프로그래밍되어야 한다. 그러나, 가비지 수집 동안, 파일에 대한 데이터는 블록으로 카피되지 않아야 하며, 새로운 프로그램 블록이 오픈되어야 한다.
이 상태로부터의 가능한 트랜지션들은 다음과 같다:
(i) 쓸모없는 프로그램 블록 대 쓸모없는 프로그램 블록
단일 파일에 대한 데이터는 자신이 호스트로부터 공급될 때, 그 파일에 대한 쓸모없는 프로그램 블록에 프로그래밍된다.
(j) 쓸모없는 프로그램 블록 대 쓸모없는 블록
쓸모없는 프로그램 블록 내의 파일에 대한 모든 데이터는 가비지 수집 동안 또 다른 블록으로 카피되는 유효 데이터, 또는 호스트에 의해 삭제되는 파일의 모두 또는 일부의 결과로서 쓸모없게 된다.
(k) 쓸모없는 프로그램 블록 대 쓸모없는 파일 블록
단일 파일에 대한 데이터는 자신이 호스트로부터 공급될 때, 그 파일에 대한 쓸모없는 프로그램 블록을 채우기 위하여 프로그래밍된다.
11.1.6 공통 블록
공통 블록은 2개 이상의 파일들에 대한 유효 데이터로 프로그래밍되고, 통상적으로 일부의 소거된 용량을 포함한다. 임의의 파일에 대한 나머지 데이터는 가비지 수집 또는 프로그램 블록들의 통합 동안 이 블록에 프로그래밍될 수 있다.
이 상태로부터의 가능한 트랜지션들은 다음과 같다:
(m) 공통 블록 대 공통 블록
파일에 대한 나머지 데이터는 파일 또는 공통 블록의 가비지 수집 동안, 또는 프로그램 블록들의 통합 동안 공통 블록에 프로그래밍된다.
(n) 공통 블록 대 쓸모없는 공통 블록
공통 블록 내의 하나의 파일에 대한 데이터의 일부 또는 모두는 파일에 대한 프로그램 블록에서 호스트에 의해 프로그래밍되는 데이터의 갱신된 버전, 파일의 가비지 수집 동안 또 다른 블록에 카피되는 데이터, 또는 호스트에 의해 삭제되는 파일의 모두 또는 일부의 결과로서 쓸모없게 된다.
11.1.7 쓸모없는 공통 블록
쓸모없는 공통 블록은 2개 이상의 파일들에 대한 유효 데이터 및 쓸모없는 데이터의 임의의 조합으로 프로그래밍되며, 통상적으로 일부의 소거된 용량을 포함한다. 추가적인 데이터는 블록으로 프로그래밍되지 않아도 된다.
이 상태로부터의 가능한 트랜지션들은 다음과 같다:
(o) 쓸모없는 공통 블록 대 쓸모없는 블록
쓸모없는 공통 블록 내의 모든 파일들에 대한 데이터는 파일에 대한 프로그램 블록에서 호스트에 의해 프로그래밍되는 하나의 파일에 대한 데이터의 갱신된 버전, 파일의 가비지 수집 동안 또 다른 블록으로 카피되는 하나의 파일에 대한 데이터, 또는 호스트에 의해 삭제되는 하나의 파일의 모두 또는 일부의 결과로서 쓸모없게 된다.
11.1.8 쓸모없는 블록
쓸모없는 블록은 쓸모없는 데이터만을 포함하지만, 아직 소거되지 않았다.
이 상태로부터의 가능한 트랜지션은 다음과 같다:
(p) 쓸모없는 블록 대 소거된 블록
쓸모없는 블록은 가비지 수집 동안 소거되며, 다시 소거된 블록 풀에 추가된다.
12. 소거된 블록 관리
12.1 메타블록 링킹(Metablock Linking)
소거 블록들을 메타블록들 내로 링킹하는 방법은 이전의 제3세대 LBA 시스템에 대해 규정된 것으로부터 변화되지 않는다.
12.2 소거된 블록 풀
소거된 블록 풀은 파일 데이터 또는 제어 정보의 저장을 위한 할당에 이용 가능한 장치 내의 소거된 블록들의 풀이다. 풀 내의 각각의 소거된 블록은 메타블록이며, 모든 메타블록들은 동일한 고정된 병렬성을 갖는다.
풀 내의 소거된 블록들은 제어 블록 내의 소거된 블록 로그 내의 엔트리들로서 기록된다. 엔트리들은 블록들의 소거 순서에 따라 로그 내에서 순서가 매겨진다. 할당을 위한 소거된 블록은 로그의 헤드에서 엔트리로서 선택된다. 엔트리는 블록이 소거될 때 로그의 테일(tail)에 추가된다.
13. 제어 데이터 구조들
제어 데이터 구조들은 그 목적에 전용된 플래시 블록들에 저장된다. 블록들의 3개의 등급들은 다음과 같이 규정된다:
1) 파일 디렉토리 블록,
2) 파일 인덱스 테이블 블록, 및
3) 제어 블록.
13.1 파일 디렉토리 블록
파일 디렉토리 블록의 구조는 상술되었다.
13.2 파일 인덱스 테이블 블록
파일 인덱스 테이블 블록들의 구조는 상술되었다.
13.3 제어 블록
제어 블록은 4개의 독립적인 로그들에 제어 정보를 저장한다. 로그들 각각에 대해 별도의 페이지가 할당된다. 이것은 필요하다면, 로그 당 다수의 페이지들로 확장될 수 있다. 제어 블록의 예시적인 포맷이 도13A에 도시되어 있다.
로그는 제어 포인터에 의해 규정된 다음의 소거된 페이지 위치에서 완전한 로그의 개정된 버전을 기록함으로써 갱신된다. 다수의 로그들은 상기 로그들을 메타페이지 내의 다른 페이지들로 프로그래밍함으로써, 필요하다면, 동시에 갱신될 수 있다. 4개의 로그들 각각의 유효 버전들의 페이지 위치들은 제어 블록 내의 최종 기록된 페이지에서의 로그 포인터들에 의해 식별된다.
13.3.1 공통 블록 로그
공통 블록 로그는 장치에 존재하는 모든 공통 블록에 관한 정보를 레코딩한다. 공통 블록 로그 내의 로그 엔트리들은 도12B에 도시된 바와 같이, 2개의 에어리어들, 즉 블록 엔트리들에 대한 제1 에어리어 및 데이터 그룹 엔트리들에 대한 제2 에어리어로 세분된다. 각각의 블록 엔트리는 공통 블록의 물리적 위치를 레코딩한다. 엔트리들은 고정된 크기를 가지며, 공통 블록 로그에서 고정된 수가 존재한다. 각각의 엔트리는 다음 필드들을 갖는다:
1) 블록 물리적 어드레스,
2) 프로그래밍을 위한 공통 블록 내의 다음의 이용 가능한 페이지에 대한 포인터,
3) 블록에 대한 데이터 그룹 엔트리들 중 제1 데이터 그룹 엔트리에 대한 포 인터, 및
4) 데이터 그룹 엔트리들의 수
데이터 그룹 엔트리는 공통 블록 내의 데이터 그룹에 관한 정보를 기록한다. 인접한 데이터 그룹 엔트리들의 세트는 공통 블록 내의 모든 데이터 그룹들을 규정한다. 공통 블록에는 가변하는 수의 데이터 그룹들이 존재한다. 각각의 엔트리는 바람직하게는 다음 필드들을 갖는다:
1) 공통 블록 내의 바이트 어드레스, 및
2) FIT 파일 포인터.
13.3.2 프로그램 블록 로그
프로그램 블록 로그는 클로우즈된 파일들에 대해 장치 내에 존재하는 모든 프로그램 블록에 관한 정보를 레코딩한다. 각각의 프로그램 블록에 대해 하나의 엔트리가 존재하며, 상기 하나의 엔트리는 다음의 필드들을 갖는다:
1) 블록 물리적 어드레스,
2) 프로그래밍을 위한 프로그램 블록 내의 다음의 이용 가능한 페이지에 대한 포인터, 및
3) FIT 파일 포인터.
13.3.3 소거된 블록 로그
소거된 블록 로그는 장치에 존재하는 모든 소거된 블록의 아이덴티티를 레코딩한다. 각각의 소거된 블록에 대해 하나의 엔트리가 존재한다. 엔트리들은 블록들의 소거 순서에 따라 로그에서 순서가 매겨진다. 할당을 위한 소거된 블록은 로그 의 헤드에서 엔트리로서 선택된다. 엔트리는 블록이 소거될 때 로그의 테일에 추가된다. 엔트리는 단일 필드: 블록 물리적 어드레스를 갖는다.
13.3.4 제어 로그
제어 로그는 다음 필드들에서 다양한 제어 정보를 레코딩한다:
13.3.4.1 오픈 파일 리스트
이 필드는 다음과 같은 현재 오픈 파일들 각각에 관한 정보를 포함한다:
1) 경로이름,
2) 파일이름,
3) FIT 파일 포인터, 및
4) 프로그램 블록 물리적 어드레스.
오픈 파일들에 대한 프로그램 블록들은 프로그램 블록 로그에 포함되지 않는다.
13.3.4.2 공통 블록 카운트
이 필드는 공통 블록 로그에서 레코딩된 공통 블록들의 총 수를 포함한다.
13.3.4.3 프로그램 블록 카운트
이 필드는 프로그램 블록 로그에서 레코딩된 프로그램 블록들의 총수를 포함한다. 카운트는 블록들이 프로그램 블록 로그에 추가되고 상기 프로그램 블록 로그로부터 제거될 때 갱신된다.
13.3.4.4 소거된 블록 카운트
이 필드는 소거된 블록 로그에서 레코딩된 소거된 블록의 총수를 포함한다. 카운트는 블록들이 소거된 블록 로그에 추가되고 상기 소거된 블록 로그로부터 제거될 때 갱신된다.
13.3.4.5 프로그램/공통 블록 페이지 카운트
이 필드는 프로그램 블록들 및 공통 블록들 내의 유효 데이터 페이지들의 수의 카운트를 포함한다. 카운트는 블록들이 프로그램 블록 로그 및 공통 블록 로그에 추가되고 상기 프로그램 블록 로그 및 공통 블록 로그로부터 제거될 때 갱신된다.
13.3.4.6 쓸모없는 블록 카운트
이 필드는 가비지 수집을 대기하는 완전히 쓸모없는 블록들의 수의 카운트를 포함한다. 카운트는 블록들이 쓸모없는 블록 가비지 수집 큐에 추가되고 상기 쓸모없는 블록 가비지 수집 큐로부터 제거될 때 갱신된다.
13.3.4.7 FIT 블록 리스트
이 필드는 FIT 범위를 FIT 블록에 맵핑하기 위한 정보를 포함한다. 이 필드는 각각의 FIT 범위에 대한 FIT 블록 물리적 어드레스를 규정하는 엔트리를 포함한다.
13.3.4.8 FIT 갱신 블록 리스트
이 필드는 FIT 범위 및 FIT 파일 번호를 FIT 갱신 파일 번호에 맵핑하기 위한 정보를 포함한다. 이 필드는 갱신 블록에 존재하는 각각의 유효 FIT 파일에 대한 엔트리를 포함한다. 엔트리는 다음의 3개의 필드들을 갖는다:
1) FIT 범위,
2) FIT 파일 번호, 및
3) FIT 갱신 파일 번호.
13.3.4.9 디렉토리 블록 리스트
이 필드는 디렉토리 범위를 디렉토리 블록에 맵핑하기 위한 정보를 포함한다. 이 필드는 각각의 디렉토리 범위에 대한 디렉토리 블록 물리적 어드레스를 규정하는 엔트리를 포함한다.
13.3.4.10. 디렉토리 갱신 블록 리스트
이 필드는 디렉토리 범위 및 서브디렉토리 번호를 갱신 서브디렉토리 번호에 맵핑하기 위한 정보를 포함한다. 이 필드는 갱신 블록에 존재하는 각각의 유효 서브디렉토리에 대한 엔트리를 포함한다. 엔트리는 다음의 3개의 필드를 갖는다:
1) 디렉토리 범위,
2) 서브디렉토리 번호, 및
3) 갱신 서브디렉토리 번호.
13.3.4.11 버퍼 스왑 블록 인덱스
이 필드는 스왑 블록 내의 유효 데이터 그룹들에 대한 인덱스를 포함한다. 각각의 데이터 그룹에 대한 인덱스는 다음 필드들을 포함한다:
1) FIT 파일 포인터,
2) 스왑 블록 내의 바이트 어드레스, 및
3) 길이.
13.3.4.12 우선순위 쓸모없는 블록 큐
이 필드는 가비지 수집에 대한 우선순위 쓸모없는 블록 큐 내의 모든 블록들의 블록 어드레스들을 포함한다.
13.3.4.13 우선순위 공통 블록 큐
이 필드는 가비지 수집에 대한 우선순위 공통 블록 큐 내의 모든 블록들의 블록 어드레스들을 포함한다.
13.3.4.14 쓸모없는 블록 큐
이 필드는 가비지 수집에 대한 쓸모없는 블록 큐 내의 모든 블록들의 블록 어드레스들을 포함한다.
13.3.4.15 공통 블록 큐
이 필드는 가비지 수집에 대한 공통 블록 큐 내의 모든 블록들의 블록 어드레스들을 포함한다.
13.3.4.16 파일 큐
이 필드는 가비지 수집에 대한 파일 큐 내의 모든 파일들의 FIT 파일 포인터들을 포함한다.
14. 정적 파일들
14.1 정적 파일들
일부의 호스트들은 동일한 크기들을 갖는 파일들의 세트를 생성하고 상기 세트의 파일들 내에서 데이터를 주기적으로 갱신함으로써 직접적인 데이터 파일 장치에 데이터를 저장할 수 있다. 이와 같은 세트의 부분인 파일은 정적 파일이라 칭해진다. 호스트는 메모리 카드와 무관하거나, 온-카드 애플리케이션(on-card application)을 실행시키고 있는 메모리 카드 내의 프로세서일 수 있다.
정적 파일들의 사용의 예시적인 애플리케이션은 본원과 동시에 출원된 명칭이 "Interfacing systems Operating Through A Logical Address Space and on a Direct Data File Basis"인 Sergey Anatolievich Gorobets의 특허 출원에 설명되어 있다. 그 출원에서, 호스트의 논리적 어드레스 공간은 메모리 제어기에 의하여 이와 같은 정적 파일들로 분할된다.
직접적인 데이터 파일 장치는 임의의 다른 파일에 대한 것과 정확히 동일한 방식으로 정적 파일의 저장을 관리한다. 그러나, 호스트는 정적 파일들로 장치의 성능 및 작동을 최적화하는 방식으로 직접적인 데이터 파일 명령 세트 내의 명령들을 사용할 수 있다.
14.1.1 정적 파일 구획(Static File Partition)
정적 파일들은 장치 내의 전용된 구획에 세트로서 저장된다. 구획 내의 모든 정적 파일들은 동일한 파일 크기를 갖는다.
14.1.2 정적 파일 크기
파일 크기는 파일에 기록된 오프셋 어드레스들의 범위를 통하여, 호스트에 의해 규정된다. 정적 파일들은 메타블록의 크기와 동일한 크기를 갖는다.
호스트는 기록_포인터 및 판독_포인터에 의해 표현된 파일 오프셋 값들을 관리하여, 상기 값들을 항상 정적 파일에 대해 허용되는 값들의 범위 내에서 유지하도록 한다.
14.1.3 정적 파일들 삭제
직접적인 데이터 파일 장치에서의 다른 파일들과 달리, 호스트는 정상적인 작동 동안 정적 파일을 삭제하지 않는다. 정적 파일은 호스트에 의해 생성되고 나서, 장치에서 지속적으로 존재한다. 임의의 시간에 파일에 기록된 데이터는 기존 파일 데이터에 겹쳐쓰기된다.
그러나, 호스트는 예를 들어, 장치를 리포맷시키거나 장치에서 정적 파일들에 대한 구획의 크기를 감소시키기 위한 호스트에 의한 작동 동안, 항상 정적 파일을 삭제하는 능력을 갖는다.
14.2 정적 파일들과 함께 사용된 명령 세트
도13A은 정적 파일들에 필요한 모든 작동들을 지원하는 정적 파일들과 함께 사용하기 위한 명령 세트, 도2A 내지 2F에 도시된 이의 서브세트를 제공한다.
14.3 정적 파일들 생성(Creating Static Files)
정적 파일은 호스트로부터의 생성 명령의 사용에 의하여 장치에서 생성된다. 호스트는 통상적으로 자신이 파일을 식별하기를 희망하는 파일ID를 지정할 것이다.
호스트는 자신이 장치에서 어느 파일들을 생성하였는지를 추적하거나, 자신이 그 파일ID가 장치에 이미 존재하지 않는 파일을 오픈하도록 시도한 이후에 장치로부터 에러 메시지에 응답하여 파일을 생성할 수 있다.
14.4 정적 파일들 오픈(Opening Static Files)
호스트는 파일에 대한 파일ID를 파라미터로서 사용하여 오픈 명령을 전송함으로써 정적 파일을 오픈한다.
호스트는 자신이 장치에서 동시에 오픈되는 파일들의 수 또는 장치에서 동시 에 오픈되는 호스트에 의해 규정된 특정 유형의 파일들의 수를 제어하는 방식으로 장치 내의 정적 파일들의 세트와 함께 작동할 수 있다. 따라서, 호스트는 또 다른 정적 파일을 오픈하기 전에 하나 이상의 정적 파일들을 클로우즈할 수 있다.
14.5 정적 파일들로의 기록(Writing to Static Files)
정적 파일이 처음 기록될 때, 상기 정적 파일은 파일 크기가 플래시 메모리 내의 메타블록의 크기와 정확히 동일한 것으로 호스트에 의해 규정되기 때문에, 장치에서 단일의 완전한 파일 블록을 차지한다. 따라서, 파일에 대한 오프셋 어드레스 범위는 플래시 메모리 내의 메타블록의 크기와 정확히 동일하다.
정적 파일로의 후속 기록들은 데이터가 이 오프셋 어드레스 범위 내에서 갱신되도록 한다. 호스트는 기록_포인터 명령에 의하여 파일에 대한 기록-포인터 값을 제어함으로써 데이터가 갱신되고 있는 파일 오프셋 어드레스를 제어한다. 호스트는 기록_포인터 값이 정적 파일의 크기와 관련된 오프셋 어드레스 범위의 끝을 초과하지 않도록 한다. 유사하게, 호스트는 기록_포인터 값을 이 범위 내에서 억제한다.
파일이 오픈된 이후에 정적 필드 내의 기존 데이터가 갱신될 때, 갱신된 데이터가 프로그래밍되는 프로그램 블록이 오픈된다. 파일 블록 내의 대응하는 오프셋 어드레스를 갖는 데이터는 쓸모없어진다. 완전한 정적 파일이 갱신되는 경우, 프로그램 블록 내의 모든 데이터는 유효하고, 프로그램 블록은 파일에 대한 파일 블록이 된다. 파일에 대한 이전 파일 블록 내의 모든 데이터는 쓸모없어지고, 이 블록은 쓸모없는 블록 가비지 수집 큐에 추가된다. 소거된 블록은 파일에 대한 추 가적인 갱신된 데이터가 수신되는 경우, 프로그램 블록으로서 할당된다.
정적 파일에 대한 프로그램 블록이 가득 차지만, 상기 블록이 파일에 대한 모든 유효 데이터를 포함하지 않는 경우에, 프로그램 블록 내의 데이터의 일부는 동일한 오프셋 어드레스에 대해 다수의 갱신들이 행해지기 때문에, 쓸모없다. 이 경우에, 프로그램 블록은 파일 블록이 될 수 없고, 또 다른 빈 프로그램 블록은 파일에 대한 추가적인 데이터가 수신될 때, 오픈되지 않는다. 프로그램 블록으로부터의 유효 데이터가 카피되는 소거된 블록이 할당되고(프로그램 블록이 압축됨) 나서, 부분적으로 채워진 블록이 파일에 대한 프로그램 블록이 된다. 파일에 대한 이전의 프로그램 블록 내의 모든 데이터는 이제 쓸모없고, 블록은 쓸모없는 블록 가비지 수집 큐에 추가된다.
호스트가 다음 단락 14.6에서 설명된 바와 같이, 파일을 클로우즈함으로써, 파일에 대한 어떤 유효 데이터를 각각 포함하는 파일 블록 및 프로그램 블록의 통합을 강요할 수 있다. 호스트는 파일에 대한 추가적인 데이터가 수신될 때 직접적인 데이터 파일 장치가 프로그램 블록을 압축하도록 하기보다는 오히려, 부분적으로 쓸모없는 프로그램 블록이 가득 찰 때, 파일을 일시적으로 클로우즈하는 것을 택할 수 있다.
14.6 정적 파일들 클로우즈(Closing Static Files)
호스트는 파일에 대한 파일ID를 파라미터로서 사용하여 클로우즈 명령을 전송함으로써 정적 파일을 클로우즈한다.
정적 파일의 클로우저(closure)는 파일에 대한 데이터의 일부만이 갱신되었 던 경우에, 파일이 파일 가비지 수집 큐에 놓이도록 한다. 이것은 다음 단락 14.7에서 설명된 바와 같이, 파일에 대한 후속 가비지 수집 작동을 허용한다. 그러나, 호스트는 또한 단락 14.7에 설명된 바와 같이, 파일에 대한 즉각적인 가비지 수집 작동을 강요할 수 있다.
14.7 정적 파일들의 가비지 수집(Garbage Collection of Static Files)
파일 가비지 수집 큐 내의 엔트리를 갖는 정적 파일은 파일 내의 데이터의 일부의 갱신 다음에 클로우즈된다. 파일에 대한 파일 블록은 일부의 유효 데이터 및 일부의 쓸모없는 데이터를 포함하며, 프로그램 블록은 일부의 유효 데이터, 아마도 일부의 쓸모없는 데이터, 및 아마도 일부의 소거된 용량을 포함한다.
파일 가비지 수집 작동은 파일에 대한 모든 유효 데이터를 단일 블록에 통합시킨다. 프로그램 블록이 쓸모없는 데이터를 포함하지 않는 경우, 유효 데이터는 파일 블록으로부터 프로그램 블록으로 카피되고, 파일 블록은 소거된다. 프로그램 블록이 쓸모없는 데이터를 포함하는 경우, 파일 블록 및 프로그램 블록 둘 모두로부터의 모든 유효 데이터가 소거된 블록으로 카피되고, 파일 블록 및 프로그램 블록 둘 모두는 소거된다.
파일 가비지 수집은 가비지 수집-스케줄링 알고리즘에 의해 결정된 시간에서, 엔트리가 큐의 헤드에 도달할 때 수행된다. 그러나, 호스트는 자신이 파일을 클로우즈할 때 파일에 대한 즉각적인 가비지 수집 작동을 강요할 수 있다. 호스트는 파일에 대한 클로우즈 명령 직후에 유휴 명령을 전송함으로써 이를 행하며, 이 명령은 또 다른 명령이 수신될 때까지, 장치가 가비지 수집 또는 블록 통합 작동들 을 연속적으로 수행하도록 한다. 호스트는 또 다른 명령을 전송하기 이전에, 장치가 내부 작동들을 수행하는데 있어서 더 이상 작동중이지 않다는 것을 자신이 검출할 때까지, 장치의 내부 작동중인 상태들을 모니터한다. 이 메커니즘에 의하여, 파일이 클로우즈된 직후의 파일에 대한 프로그램 블록들 및 파일의 통합이 호스트에 의해 보장될 수 있다.
상술된 설명에 따른 예시적인 메모리 시스템의 개요
직접적인 데이터 파일 플랫폼
직접적인 데이터 파일 플랫폼은 플래시 메모리에서 데이터 저장소를 관리하기 위한 보편적인 백-엔드 시스템으로서 작동한다.
직접적인 데이터 파일 인터페이스는 데이터의 다수의 소스들을 지원하는 내부 파일 저장 인터페이스이다.
미리 규정된 길이 없이 파일 데이터의 랜덤 판독/기록 액세스를 갖는 파일 액세스 인터페이스.
미리 규정된 길이를 갖는 완전한 파일 오브젝트들의 전달을 갖는 오브젝트 인터페이스.
파일 시스템을 통합한 종래의 호스트들로의 LBA 인터페이스. 논리적 블록들은 논리적 파일들로서 저장된다.
파일 내의 데이터로의 랜덤 액세스를 갖는 내장된 응용 프로그램.
직접적인 데이터 파일 저장소는 파일마다 데이터 저장소를 구성하는 백-엔드 시스템이다.
저장 장치에 대한 논리적 어드레스 공간이 없음.
파일 시스템이 없음.
직접적인 데이터 파일 대 종래의 시스템들
직접적인 데이터 파일 플랫폼은 종래 시스템들에 비하여 이점들을 제공한다:
높은 데이터 기록 속도:
파일 단편화로 인한 점진적인 속도 감소가 제거된다;
호스트에 의해 삭제된 파일들이 백그라운드 작동에서 소거될 때 피크 데이터 기록 속도가 증가될 수 있다.
데이터 기록 속도의 균일성:
가비지 수집이 백그라운드 또는 호스트 데이터의 기록과 인터리빙된 버스트들에서 수행될 때, 데이터를 스트리밍하는 일관된 기록 속도가 개선될 수 있다.
이점들(benefits)은 직접적인 데이터 파일 플랫폼에서 사용된 알고리즘들의 특성들의 결과이다:
제한된 파일 단편화
제한된 파일 및 블록 통합
정확한 파일 삭제
최적의 파일 데이터 인덱싱
효율적인 가비지 수집
직접적인 데이터 파일 인터페이스-바람직한 특성들
직접적인 데이터 파일 인터페이스는 호스트 내의 운영 시스템과 무관해야 한 다:
수치적인 식별자를 갖는 파일들은 플랫 계층구조(flat hierachy)에서 관리된다;
파일과 관련된 데이터는 인터페이스 위의 레벨에서 계층적 디렉토리의 구성 및 유지보수를 허용하기 위하여 저장될 수 있다.
직접적인 데이터 파일 인터페이스는 바람직하게는 파일 데이터 전달의 다양한 포맷들을 지원한다:
데이터가 스트리밍될 수 있는 자신의 크기가 규정되지 않은 파일들;
기록되기 전에 자신의 크기가 규정되는 파일들;
자신의 크기가 고정되고 영구적으로 존재하는 파일들.
직접적인 데이터 파일 인터페이스 - 구현예
파일 내의 데이터는 1 바이트의 단위로, 랜덤 기록 및 판독 액세스를 갖는다.
데이터는 파일에 대한 기존 데이터에 겹쳐쓰기되거나 상기 기존 데이터 내에 삽입되도록 추가될 수 있다.
기록되거나 판독되는 파일 데이터는 미리 규정된 길이 없이 장치로 또는 상기 장치로부터 스트리밍된다.
현재 작동은 또 다른 명령의 수신에 의하여 종료된다.
파일들은 데이터 기록을 위해 오픈되고 파일의 종점에서, 또는 파일이 비활성일 때 클로우즈된다.
파일 핸들은 호스트에 의해 지정된 파일들에 대해 장치에 의하여 리턴된다.
계층적 디렉토리가 지원되지만 유지되지 않는다.
파일에 대한 관련된 정보가 저장될 수 있다.
장치가 백그라운드에서 내부 작동들을 수행할 수 있는 상태는 호스트에 의해 개시될 수 있다.
직접적인 데이터 파일 인터페이스 - 명령 세트
파일 명령들:
파일 오브젝트들을 제어하기 위한 명령들,
생성, 오픈, 클로우즈, 삭제, 소거, 리스트_파일
데이터 명령들:
파일 데이터를 기록 및 판독하기 위한 명령들,
기록, 삽입, 제거, 판독, 저장_버퍼, 기록_포인터, 판독_포인터.
정보 명령들:
파일과 관련된 정보를 기록 및 판독하기 위한 명령들,
기록_정보, 판독_정보, 정보_기록_포인터, 정보_판독_포인터.
상태 명령들:
장치의 상태를 제어하기 위한 명령들,
유휴, 대기, 셧-다운.
장치 명령들:
장치에 질문하기 위한 명령들,
용량, 상태.
파일-대-플래시 맵핑 알고리즘
데이터 구조들:
파일들
데이터 그룹들
블록 유형들:
프로그램 블록들
파일 블록들
공통 블록들
파일 유형들:
플레인 파일
공통 파일
편집된 파일
메모리 복구:
가비지 수집
블록 통합
파일-대-플래시 맵핑 알고리즘 - 데이터 구조들
파일들:
파일은 호스트에 의해 생성되고 유지되는 데이터의 세트이다;
호스트는 외부 호스트이거나 메모리 카드 내의 응용 프로그램일 수 있다;
파일은 호스트에 의해 생성된 파일이름, 또는 직접적인 데이터 파일 플랫폼에 의해 생성된 파일 핸들에 의해 식별된다;
파일 내의 데이터는 파일 오프셋 어드레스들에 의해 식별된다;
상이한 파일들에 대한 오프셋 어드레스들의 세트들은 장치 내에서 독립적인 논리적 어드레스 공간들로서 작동한다. 장치 자체에 대한 논리적 어드레스 공간은 존재하지 않는다.
데이터 그룹들;
데이터 그룹은 파일 내의 인접한 오프셋 어드레스들을 갖는 단일 파일에 대한 데이터의 세트이다;
데이터 그룹은 단일 블록 내의 인접한 물리적 어드레스들에서 저장된다;
데이터 그룹은 한 바이트 및 한 블록 사이의 임의의 길이를 가질 수 있다:
데이터 그룹은 논리적 파일 어드레스를 물리적 플래시 어드레스로 맵핑하기 위한 기본 단위이다.
파일-대-플래시 맵핑 알고리즘 - 블록 유형들
프로그램 블록들:
호스트에 의해 기록된 모든 데이터는 프로그램 블록에서 프로그래밍된다;
프로그램 블록은 단일 파일에 대한 데이터에 전용된다;
프로그램 블록 내의 파일 데이터는 파일 오프셋 어드레스의 임의의 순서일 수 있고, 프로그램 블록은 파일에 대한 다수의 데이터 그룹들을 포함할 수 있다;
각각의 오픈 파일, 및 지정되지 않은 수의 클로우즈된 파일들에 대하여 별도 의 프로그램 블록들이 존재한다.
파일 블록들:
프로그램 블록은 자신의 최종 위치가 프로그래밍될 때 파일 블록이 된다.
공통 블록들:
공통 블록은 하나 이상의 파일에 대한 데이터 그룹들을 포함한다.
공통 블록은 공통 블록의 가비지 수집 동안, 또는 블록 통합 작동 동안 관련되지 않은 파일들에 대한 데이터 그룹들을 프로그램 블록에 프로그래밍함으로써 생성된다;
데이터 그룹들은 또 다른 공통 블록의 가비지 수집 동안, 또는 블록 통합 작동 동안 공통 블록에 기록될 수 있다.
파일-대-플래시 맵핑 알고리즘 - 파일 유형들
플레인 파일(도3A 참조):
플레인 파일은 임의의 수의 완전한 파일 블록들 및 하나의 부분적으로 기록된 프로그램 블록을 포함한다.
플레인 파일은 자신의 소거 이전에 임의의 블록으로부터 데이터를 재배치할 필요 없이 삭제될 수 있다.
공통 파일(도3B 참조):
공통 파일은 임의의 수의 완전한 파일 블록들 및 다른 관련되지 않은 파일들에 대한 데이터와 함께 그 파일에 대한 데이터를 포함하는 하나의 공통 블록을 포함한다.
파일이 삭제된 후에, 공통 블록에 대해서만 가비지 수집 작동이 수행되어야 한다.
편집된 파일(도3C 및 3D 참조)
편집된 파일은 겹쳐쓰기된 기존의 오프셋 어드레스에서의 데이터의 결과로서, 자신의 블록들 중 하나 이상에서 쓸모없는 데이터를 포함한다.
쓸모없는 데이터에 의해 차지된 메모리 용량은 파일 가비지 수집 작동에 의해 복구될 수 있다.
파일 가비지 수집 작동은 편집된 파일을 플레인 파일 포맷으로 복구시킨다.
파일-대-플래시 맵핑 알고리즘 - 메모리 복구
가비지 수집:
가비지 수집 작동은 쓸모없는 데이터에 의해 차지된 메모리 용량을 복구하기 위하여 수행된다.
진행중인 작동들은 가비지 수집 큐들에서 로깅되고, 그 후에 스케줄링 알고리즘들에 따라 최적의 레이트로 수행된다.
가비지 수집은 호스트 인터페이스가 휴지인 동안, 호스트 명령에 의해 개시되고 백그라운드에서 수행될 수 있다. 작동들은 임의의 다른 호스트 명령의 수신 시에 중지된다.
가비지 수집은 또한 호스트 데이터 기록 작동들과 인터리빙된 버스트들에서, 포어그라운드 작동들로서 수행될 수 있다.
블록 통합:
블록 통합의 진행중인 프로세스는 프로그램 블록들 및 공통 블록들에서 록업되는 소거된 용량을 복구하기 위하여 구현될 수 있다.
프로그램 블록들 내의 파일 데이터의 용량들 및 공통 블록 내의 삭제된 파일들에 대한 쓸모없는 데이터의 용량들의 분포들이 불균형인 경우에만 필요로 된다.
다수의 프로그램 또는 공통 블록들 내의 데이터는 하나 이상의 블록들을 소거하도록 하기 위하여 통합된다.
파일 데이터 프로그래밍
파일 핸들러에 의해 식별된 파일에 대한 데이터는 삽입 또는 기록 명령 다음에 자신이 호스트로부터 스트리밍될 때, 플래시 메모리에 프로그래밍된다.
데이터의 최초 파일 오프셋 어드레스는 그 값이 호스트에 의해 설정될 수 있는 기록 포인터에 의해 규정된다.
충분한 데이터가 버퍼 메모리에서 축적되었을 때, 메타페이지가 파일에 대한 프로그램 블록에서 프로그래밍된다.
프로그램 블록은 가득 찰 때, 파일 블록으로서 지정되고, 소거된 블록은 파일에 대한 새로운 프로그램 블록으로서 할당된다.
데이터 그룹 인덱싱 구조들은 프로그램 블록이 가득 찰 때마다, 또는 또 다른 호스트 명령이 수신될 때마다 플래시 메모리에서 갱신된다.
파일 데이터 프로그래밍 절차는 적응형 스케줄링 알고리즘에 의해 결정되는 호스트 데이터 스트림에서 간격을 두고 포어그라운드 가비지 수집의 버스트들을 개시한다.
파일 데이터 프로그래밍 절차는 또 다른 호스트 명령이 수신될 때 종료된다.
파일 데이터 판독
파일 핸들에 의해 식별된 파일에 대한 데이터는 판독 명령 다음에, 플래시 메모리로부터 판독되고 호스트로 스트리밍된다.
데이터의 최초 파일 오프셋 어드레스는 그 값이 호스트에 의해 설정될 수 있는 판독 포인터에 의해 규정된다.
파일 데이터는 파일의 종점에 도달될 때까지, 또는 또 다른 호스트 명령이 수신될 때까지 하나의 메타페이지의 단위들로 판독된다.
데이터는 파일 오프셋 어드레스 순서로 호스트에 전달된다.
파일에 대해 판독될 데이터 그룹의 위치는 파일 인덱싱 구조들에 의해 규정된다.
파일 데이터 판독 절차는 또 다른 호스트 명령이 수신될 때 종료된다.
파일 삭제
파일에 대한 삭제 명령에 응답하여, 파일에 대한 데이터를 포함하는 블록들이 식별되고 후속 가비지 수집 작동들을 위해 가비지 수집 큐들에 추가된다.
파일에 대한 엔트리들을 제거하기 위하여, 파일 디렉토리 및 파일 인덱스 테이블이 갱신된다.
파일을 삭제하기 위한 절차는 가비지 수집 작동들을 개시하지 않고, 파일에 대한 데이터는 즉시 소거되지 않는다.
파일에 대한 소거 명령에 응답하여, 삭제 명령에 대해 동일한 절차가 뒤따르 지만, 임의의 다른 호스트 명령이 실행되기 전에 가비지 수집 작동들이 개시되고 완료된다.
가비지 수집
가비지 수집은 쓸모없는 데이터에 의해 차지된 플래시 용량을 복구하기 위한 작동이다.
오브젝트들은 후속 가비지 수집 작동들을 규정하기 위하여 장치의 작동 동안 때때로 3개의 가비지 수집 큐들에 추가된다:
쓸모없는 블록 큐 - 블록이 파일 데이터의 갱신 또는 파일의 삭제의 결과로서 완전히 쓸모없게 될 때, 상기 블록은 이 큐에 추가된다.
공통 블록 큐 - 다수의 파일들에 대한 데이터를 포함하는 블록의 일부의 데이터가 파일 데이터 갱신, 파일의 삭제, 또는 파일의 가비지 수집의 결과로서 쓸모없게 될 때, 상기 데이터는 이 큐에 추가된다.
파일 큐 - 파일이 호스트에 의해 클로우즈될 때, 상기 파일은 이 큐에 추가된다. 오브젝트들은 우선순위 가비지 수집에 대해 지정될 수 있다.
가비지 수집 작동들은 2개의 방식들로 스케줄링될 수 있다:
백그라운드 작동들은 호스트가 장치로의 판독 또는 기록 액세스를 행하고 있지 않을 때, 호스트에 의해 개시될 수 있다.
포어그라운드 작동들은 직접적인 데이터 파일 플랫폼이 호스트에 의해 액세스되고 있을 때 직접적인 데이터 파일 플랫폼에 의해 개시될 수 있다.
가비지 수집 - 스케줄링
백그라운드 가비지 수집은 호스트에 의해 개시된다. 장치가 내부 작동들을 수행하도록 허용받는 유휴 상태는 직접적인 데이터 파일 인터페이스에서 특정 명령을 통하여 호스트에 의해 개시된다. 가비지 수집 큐들로부터의 오브젝트들의 가비지 수집은 유휴 상태가 지속되는 동안 계속된다. 가비지 수집은 임의의 명령이 호스트로부터 수신될 때 중지된다. 호스트는 다음 명령을 전송하기 전에 가비지 수집 작동들이 완료되도록 하기 위하여 선택적으로 장치의 작동중인 상태를 모니터할 수 있다.
포어그라운드 가비지 수집은 호스트가 백그라운드 작동들을 개시하지 않았을 때, 직접적인 데이터 파일 플랫폼에 의해 개시된다. 가비지 수집은 적응형 알고리즘에 따라 스케줄링된다. 현재 가비지 수집 작동을 위한 프로그램 및 소거 작동들의 버스트들은 호스트로부터 수신된 파일 데이터에 대한 프로그램 작동들의 버스트들과 인터리빙된다. 버스트들의 길이들은 인터리빙된 가비지 수집의 듀티 사이틀을 규정하기 위하여 적응형으로 제어될 수 있다.
가비지 수집 - 적응형 스케줄링( 도8 B참조)
플래시 메모리는 통상적으로 프로그램 블록들, 공통 블록들 및 쓸모없는 파일 블록들에 포함된 추가적인 호스트 데이터를 기록하는데 필요로 되는 복구 가능한 용량을 갖는다.
적응형 가비지 수집은 추가적인 호스트 데이터를 프로그래밍하고 이전에 기록된 호스트 데이터를 재배치하는 인터리브 비율을 제어한다. 복구 가능한 용량은 이를 소거된 용량으로 변환함으로써 새로운 호스트 데이터에 이용 가능하게 된다. 가비지 수집 레이트는 적응형 기간에 걸쳐 일정하게 유지된다.
가비지 수집 - 작동들의 우선순위
스케줄링된 가비지 수집을 위한 작동은 다음의 우선순위 순서에 따라 가비지 수집 큐들로부터 선택된다:
1. 쓸모없는 블록 우선순위 가비지 수집:
파일 소거 명령의 결과로서 생성된 쓸모없는 블록에 대한 다음 엔트리가 선택된다.
2. 공통 블록 우선순위 가비지 수집:
파일 소거 명령의 결과로서 생성된 부분적으로 쓸모없는 공통 블록에 대한 다음 엔트리가 선택된다.
3. 쓸모없는 블록 가비지 수집:
쓸모없는 블록에 대한 다음 엔트리가 선택된다.
4. 공통 블록 가비지 수집:
부분적으로-쓸모없는 공통 블록에 대한 다음 엔트리가 선택된다.
5. 파일 가비지 수집:
부분적으로 쓸모없는 파일에 대한 다음 엔트리가 선택된다.
6. 블록 통합:
가비지 수집 큐들에서 엔트리들이 존재하지 않을 때, 블록 통합 작동을 위해 소스 블록 및 목적지 블록이 선택된다.
가비지 수집 - 공통 블록 가비지 수집
유효 파일들은 프로그램 블록 또는 공통 블록 중 하나에서 어떤 데이터를 포함한다.
파일이 삭제될 때, 파일에 대한 쓸모없는 데이터를 포함하는 임의의 공통 블록은 공통 블록 가비지 수집 작동을 겪는다.
관련되지 않은 파일들에 대한 데이터 그룹은 또 다른 공통 블록 또는 프로그램 블록에 재배치된다(도8G1 내지 8G4 참조).
공통 블록 가비지 수집 작동 동안, 유효 파일 그룹들이 소스 공통 블록으로부터 하나 이상의 선택된 목적지 블록들로 재배치된다.
목적지 블록은 각각의 파일 그룹에 대해 개별적으로 선택된다.
목적지 블록의 선택에 대한 우선순위들은 다음과 같다:
1. 소스 파일 그룹이 재배치되는데 가장 적합한 이용 가능한 소거된 용량을 갖는 공통 블록;
2. 소스 파일 그룹이 재배치되는데 가장 적합한 이용 가능한 소거된 용량을 갖는 프로그램 블록; 및
3. 나중에 프로그램 블록으로 지정되는 소거된 블록.
가비지 수집 - 파일 가비지 수집
파일 가비지 수집은 파일에 대한 쓸모없는 데이터에 의해 차지된 용량을 복구하기 위하여, 파일이 클로우즈된 후에 수행된다. 이것은 파일에 대한 데이터가 편집 동안 겹쳐쓰기되었던 경우에만 필요하다.
편집된 플레인 파일 상태 또는 편집된 공통 파일 상태의 파일은 (단일 프로 그램 블록을 포함하고 공통 블록을 포함하지 않는) 플레인 파일 상태로 복구된다.
파일 가비지 수집은 유효 데이터 그룹들을 쓸모없는 데이터를 포함하는 블록으로부터 파일에 대한 프로그램 블록으로 카피함으로써 수행된다.
데이터 그룹들은 파일의 종점에서의 랩-어라운드(wrap-around)와 함께, 최초 프로그램 포인터 다음에 오프셋 어드레스로부터 순차적인 순서로 카피된다.
가비지 수집 - 블록 통합
블록 통합 작동 동안, 유효 파일 그룹들은 선택된 소스 블록으로부터 하나 이상의 선택된 목적지 블록들로 재배치된다.
소스 블록은 데이터의 최저 용량을 갖는 공통 블록 또는 프로그램 블록으로서 선택된다.
목적지 블록은 각각의 파일 그룹에 대해 개별적으로 선택된다.
목적지 블록의 선택에 대한 우선순위들은 다음과 같다:
1. 소스 파일 그룹이 재배치되는데 가장 적합한 이용 가능한 소거된 용량을 갖는 공통 블록.
2. 소스 파일 그룹이 재배치되는데 가장 적합한 이용 가능한 소거된 용량을 갖는 프로그램 블록.
3. 파일 그룹의 일부가 기록되는 최고의 이용 가능한 소거된 용량을 갖는 프로그램 블록 또는 공통 블록. 이 상황에서, 파일이 다른 관련되지 않은 파일들과 2개의 블록들을 공유하는 것이 허용 가능하다.
4. 파일 그룹의 나머지가 기록되는, 소스 파일 그룹의 나머지에 가장 적합한 이용 가능한 소거된 용량을 갖는 제2 프로그램 블록 또는 공통 블록.
5. 파일 그룹의 나머지가 기록되는, 나중에 프로그램 블록으로 지정되는 소거된 블록.
파일 인덱싱( 도10A 참조)
파일은 자신이 호스트에 의해 생성될 때, 직접적인 데이터 파일 장치에 의해 할당되는 파일ID에 의해 식별된다.
플랫 디렉토리는 각각의 파일ID에 대한 파일 데이터 포인터 및 파일 정보 포인터를 지정한다.
파일 데이터 포인터는 파일 인덱스 테이블에서 엔트리들의 세트를 식별하며, 상기 각각의 엔트리는 세트가 관련되는 파일에 대한 데이터 그룹을 지정한다.
파일 정보 포인터는 정보 테이블에서 파일에 대한 정보의 스트링을 식별한다:
파일_정보는 호스트에 의해 기록되고 직접적인 데이터 파일 장치에 의해 해석되지 않는다.
파일_정보는 파일이름, 페어런트 디렉토리, 차일드 디렉토리들, 속성들, 권리 정보, 및 파일에 대한 파일 어소시에이션을 포함할 수 있다.
파일 인덱싱 - 인덱싱 구조들
도10B 참조
파일 인덱싱 - 파인 인덱스 테이블( FIT ) - 도10D 참조
FIT는 플래시 메모리 내의 파일들에 대한 모든 유효 데이터 그룹들에 대한 엔트리들을 포함한다. 쓸모없는 데이터 그룹들은 FIT에 의해 인덱싱되지 않는다.
FIT는 각각이 물리적 블록으로 맵핑되는 논리적 범위들로 분할된다.
FIT 파일은 파일 오프셋 어드레스 순서의, 파일에 대한 연속적인 엔트리들의 세트이다.
FIT 파일은 물리적 블록 및 논리적 파일 번호를 규정하는 FIT 파일 포인터에 의해 식별된다.
파일 인덱싱 - 파일 인덱스들 갱신( 도10F 및 10G 참조)
파일 인덱스 테이블 및 정보 테이블에 대해 동일한 구조가 사용된다.
블록 리스트는 논리적 파일 데이터 포인터를 물리적 FIT 블록 또는 FIT 갱신 블록 내의 FIT 파일들과 관련시키는데 사용된다.
FIT 파일들은 압축된 포맷으로 FIT 블록에 저장된다.
FIT 파일들의 갱신된 버전들은 페이지 내의 단일 FIT 파일과 함께, 공유된 FIT 갱신 블록에 저장된다.
FIT 갱신 블록의 압축 및 FIT 블록 내의 FIT 파일들의 압축은 때때로 수행된다.
파일 인덱싱 - 인덱스 페이지 포맷( 도10 E 참조)
FIT 블록, FIT 갱신 블록, 정보 블록, 및 정보 갱신 블록에 대해 동일한 구조가 사용된다.
정보는 한 페이지의 단위들로 프로그래밍된다.
페이지는 2개의 에어리어들, 즉, FIT 엔트리들에 대한 에어리어 및 파일 포 인터에 대한 에어리어로 세분된다.
파일 포인터는 범위 내의 논리적 파일 번호를 대응하는 FIT 파일의 시작점에 대한 엔트리 번호 및 페이지 번호로 번역한다.
FIT 파일은 물리적으로 연속적인 FIT 엔트리들을 포함한다.
데이터 버퍼링 및 프로그래밍
호스트에 의해 기록되거나 플래시 메모리에 재배치되는 데이터는 한 세트의 섹터 버퍼들에서 버퍼링된다.
데이터 그룹 경계들의 레졸루션(resolution)은 1 바이트이지만, 데이터는 ECC 발생 및 검사를 위해, 한 섹터의 집합들로서 플래시로 그리고 상기 플래시로부터 전달된다.
버퍼로부터의 데이터는 가능한 경우, 메타페이지의 단위들로 플래시에서 프로그래밍된다.
버퍼 플러시 작동은 파일이 클로우즈되거나 셧다운이 진행중일 때, 페이지의 일부만을 프로그래밍한다. 파일 인덱싱 기술들은 페이지의 프로그래밍되지 않은 부분이 존속하도록 한다.
버퍼 스왑-아웃 작동은 버퍼 내의 파일 데이터가 버퍼 내의 데이터의 백-업 및 버퍼 공간의 관리를 위해, 일시적으로 공통 스왑 블록에 저장되도록 한다.
프로그램 블록 또는 공통 블록 내의 파일 그룹의 시작점은 메타페이지의 시작점과 정렬된다.
플래시에서 대부분의 데이터 재배치를 위해 온-칩 카피가 사용될 수 있다.
블록 상태 관리
직접적인 데이터 파일 시스템은 데이터의 저장과 관련된 블록들에 대해 8개의 상태들을 유지한다(도11A 참조).
소거된 블록 관리
직접적인 데이터 파일은 파일들에 대한 모든 데이터 및 모든 제어 정보를 고정된 크기의 메타블록들에 저장한다. (용어 "블록"은 종종 "메타블록"을 나타내는데 사용된다.).
소거된 블록들을 블록들 내로 링킹하는 방법은 다음의 계류중인 미국 특허 출원들: 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; 2005년 7월 27일자로 출원되고 명칭이 "Non-Volatile Memory and Method with Multi-Stream Update Tracking"인 일련 번호 11/192,200; 2005년 7월 27일자로 출원되고 명칭이 "Non-Volatile Memory and Method with Improved Indexing for Scratch Pad and Update Blocks"인 일련 번호 11/192,386; 및 2005년 7월 27일자로 출원되고 명칭이 "Non-Volatile Memory and Method with Multi-Stream Updating"인 일련 번호 11/191,686에 설명되어 있는 논리적 어드레스 공간(LBA)을 갖는 시스템에서 사용되는 것으로부터 변화되지 않는다.
데이터 및 제어 정보를 저장하기 위한 할당에 이용 가능한 소거된 블록들은 소거된 블록 풀에 수용된다.
소거된 블록들은 소거된 블록 로그 내의 엔트리들로서 레코딩된다.
할당을 위한 소거된 블록은 로그의 헤드에서 엔트리로서 선택된다.
엔트리는 블록이 소거될 때, 로그의 테일에서 추가된다.
제어 데이터 구조들
제어 데이터 구조들은 전용된 제어 블록에 저장된다.
제어 정보는 4개의 독립적인 로그들에 저장된다. 각각의 로그는 제어 블록에서 하나 이상의 페이지들을 차지한다. 유효 로그 페이지들은 기록된 최종 페이지에서 로그 포인터들에 의해 추적된다.
공통 블록 로그는 이들이 포함하는 이용 가능한 소거된 용량의 순서로, 플래시 메모리에 존재하는 모든 공통 블록들에 대한 엔트리들을 포함한다.
프로그램 블록 로그는 이들이 포함하는 이용 가능한 소거된 용량의 순서로, 플래시 메모리에 존재하는 모든 프로그램 블록들에 대한 엔트리들을 포함한다.
소거된 블록 로그는 이들의 소거의 시퀀스의 순서로, 플래시 메모리에 존재하는 모든 소거된 블록들에 대한 엔트리들을 포함한다.
제어 로그는 제어 파라미터들, 카운트들 및 리스트들에 대한 미리 규정된 필드들을 포함한다.
로그는 제어 블록 내의 다음의 소거된 페이지 위치에서 완전한 로그의 갱신된 버전을 기록함으로써 갱신된다.

Claims (16)

  1. 데이터가 내부에 기록되기 전에 개별적으로 소거되며, 내부에 데이터를 저장할 준비가 된 소거된 블록들의 최소 수의 목록(inventory)으로 작동하는 메모리 셀들의 다수의 블록들을 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템에 대한 작동 방법에 있어서:
    파일들 내의 오프셋들 및 특정 파일 식별자들에 의해 논리적으로 어드레스되는 데이터를 수신하는 단계,
    소거된 블록들 중 하나만을 부분적으로 채움으로써, 부분적으로 채워진 블록 내에서 소거된 데이터 저장 용량을 남겨두는 제1 파일의 수신된 데이터를 소거된 블록들 중 하나 이상에 페이지들로서 저장하는 단계, 및
    적어도 소거된 블록들의 수의 목록이 최소 수를 유지하는데 불충분하다라고 간주될 때까지, 제2 파일의 유효 데이터를 갖는 부분적으로 채워진 블록으로부터의 유효 데이터를 소거된 블록들 중 또 다른 소거된 블록으로 통합하는 것을 연기하는 단계를 포함하는 재프로그래밍 가능한 비휘발성 메모리 시스템에 대한 작동 방법.
  2. 제1항에 있어서, 또 다른 소거된 블록을 제공할 필요성에 응답하여, 제1 파일 및 제2 파일로부터의 유효 데이터를 소거된 블록들 중 또 다른 소거된 블록으로 통합하고 나서, 적어도 부분적으로 채워진 블록을 소거함으로써, 또 다른 소거된 블록을 목록에 추가하는 단계를 더 포함하는 재프로그래밍 가능한 비휘발성 메모리 시스템에 대한 작동 방법.
  3. 제1항에 있어서, 제1 파일을 삭제하도록 하는 명령을 수신하는 것에 응답하여, 적어도 부분적으로 채워진 블록 내의 제1 파일의 모든 데이터를 쓸모없는 것으로 마킹함으로써, 적어도 부분적으로 채워진 블록 내의 제1 파일로부터의 임의의 유효 데이터를 제거하는 단계를 더 포함하며, 상기 부분적으로 채워진 블록 내의 제1 파일의 데이터의 통합은 필요로 되지 않는 재프로그래밍 가능한 비휘발성 메모리 시스템에 대한 작동 방법.
  4. 제1항에 있어서, 제1 파일을 마킹 업(marking up)하는 가변 량들의 데이터의 그룹들을 식별하는 다수의 레코드들을 유지하는 단계를 더 포함하며, 개별적인 그룹들은 그룹 내에서 데이터의 인접한 논리적 오프셋 어드레스들 및 인접한 물리적 어드레스들 둘 모두를 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템에 대한 작동 방법.
  5. 데이터가 내부에 기록되기 전에 개별적으로 소거되며, 개별적인 파일들 내에서의 오프셋들 및 특정 파일 식별자들의 논리적 어드레스들을 갖는 데이터를 수신하는 메모리 셀들의 다수의 블록들을 가진 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법에 있어서:
    2개 이상의 파일들의 데이터로 부분적으로 프로그래밍된 2개 이상의 블록의 제1 그룹으로부터의 유효 데이터가 종종 또 다른 블록으로 통합되고,
    쓸모없는 데이터를 또한 포함하는 하나 이상의 블록들의 제2 그룹으로부터의 유효 데이터를 포함하는 블록들이 종종 가비지 수집되며,
    한번에 데이터 통합 또는 가비지 수집 중 하나만이 수행되며,
    데이터 통합에 비하여 가비지 수집에 우선순위가 제공되는 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법.
  6. 데이터가 내부에 기록되기 전에 개별적으로 소거되며, 개별적인 파일들 내에서의 오프셋들 및 특정 파일 식별자들의 논리적 어드레스들을 갖는 데이터를 수신하는 메모리 셀들의 다수의 블록들을 가진 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법에 있어서:
    개별적인 파일들의 수신된 데이터가 적어도 제1 파일의 데이터가 단지 제1 블록을 부분적으로 채움으로써, 제1 블록 내의 소거된 저장 용량을 남겨두도록 하는 방식으로 하나 이상의 소거된 블록들 내로 프로그래밍되고,
    메모리 시스템 내의 데이터에 대한 후속 작동들이 제2 블록에 저장된 제2 파일의 데이터의 적어도 일부가 쓸모없어지도록 하며,
    제2 블록 내의 제2 파일의 데이터의 적어도 일부가 쓸모없어지는 것에 응답하여, 제2 블록 내의 임의의 나머지 유효 데이터가 제3 블록 내로 카피되고,
    소거된 저장 용량을 갖는 제1 블록에 응답하여, 유효 데이터가 제1 블록으로부터 제4 블록 내로 카피되며,
    제1 블록으로부터 제4 블록 내로의 유효 데이터의 상술된 카피에 비하여, 제2 블록으로부터 제3 블록 내로의 유효 데이터의 상술된 카피에 우선순위가 제공되는 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법.
  7. 제6항에 있어서, 제3 또는 제4 블록들 중 적어도 하나는 카피된 데이터가 기록되는 소거된 블록인 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법.
  8. 제6항에 있어서, 제3 또는 제4 블록들 중 적어도 하나는 카피된 데이터가 내부에 기록되는 시간에 제3 파일의 데이터를 포함하는 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법.
  9. 제6항에 있어서, 개별적인 파일들을 마킹 업하는 가변 량들의 데이터의 그룹들을 식별하는 다수의 레코드들이 유지되고, 상기 그룹들은 개별적으로 그룹 내에서 인접한 논리적 오프셋 어드레스들 및 인접한 물리적 어드레스들 둘 모두를 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법.
  10. 데이터가 내부에 기록되기 전에 개별적으로 소거되는 메모리 셀들의 다수의 블록들을 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템에 있어서:
    내부에 데이터를 저장할 준비가 된 소거된 블록들의 최소 수의 목록이 유지되고,
    파일들 내의 오프셋들 및 특정 파일 식별자들에 의해 논리적으로 어드레스되는 파일들의 데이터가 소거된 블록들 중 하나만을 부분적으로 채움으로써, 부분적으로 채워진 블록 내에서 소거된 데이터 저장 용량을 남기는 제1 파일의 수신된 데이터를 소거된 블록들 중 하나 이상에 페이지들로서 저장함으로써 메모리 블록들 내에 저장되며,
    제2 파일의 유효 데이터를 갖는 부분적으로 채워진 블록으로부터의 유효 데이터의 소거된 블록들 중 또 다른 소거된 블록으로의 통합은 적어도 소거된 블록들의 수의 목록이 최소 수를 유지하는데 불충분하다고 간주될 때까지 연기되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
  11. 제10항에 있어서, 제1 파일 및 제2 파일로부터의 유효 데이터는 또 다른 소거된 블록을 제공할 필요성에 응답하여 소거된 블록들 중 또 다른 소거된 블록에 통합되고 나서, 적어도 하나의 부분적으로 채워진 블록이 소거됨으로써, 또 다른 소거된 블록을 목록에 추가하는 재프로그래밍 가능한 비휘발성 메모리 시스템.
  12. 제10항에 있어서, 적어도 부분적으로 채워진 블록 내의 제1 파일의 모든 데이터는 제1 파일을 삭제하도록 하는 명령을 수신하는 것에 응답하여 쓸모없는 것으로 마킹됨으로써, 적어도 부분적으로 채워진 블록 내의 제1 파일로부터 모든 유효 데이터를 제거하며, 상기 부분적으로 채워진 블록 내의 제1 파일의 데이터의 통합은 필요하지 않은 재프로그래밍 가능한 비휘발성 메모리 시스템.
  13. 데이터가 내부에 기록되기 전에 개별적으로 소거되는 메모리 셀들의 다수의 블록들을 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템에 있어서:
    개별적인 파일들 내의 오프셋들 및 특정 파일 식별자들의 논리적 어드레스들을 갖는 데이터가 수용되고,
    2개 이상의 파일들의 데이터로 부분적으로 프로그래밍된 2개 이상의 블록들의 제1 그룹으로부터의 유효 데이터가 종종 또 다른 블록 내로 통합되며,
    쓸모없는 데이터를 또한 포함하는 하나 이상의 블록들의 제2 그룹으로부터의 유효 데이터를 포함하는 블록들이 종종 가비지 수집되며,
    한번에 데이터 통합 또는 가비지 수집 중 하나만이 수행되고,
    데이터 통합에 비하여 가비지 수집에 우선순위가 제공되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
  14. 데이터가 내부에 기록되기 전에 개별적으로 소거되는 메모리 셀들의 다수의 블록들을 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템에 있어서:
    개별적인 파일들 내의 오프셋들 및 특정 파일 식별자들의 논리적 어드레스들을 갖는 데이터가 수용되고,
    개별적인 파일들의 수신된 데이터가 적어도 제1 파일의 데이터가 단지 제1 블록을 부분적으로 채움으로써, 제1 블록 내의 소거된 저장 용량을 남겨두도록 하는 방식으로 하나 이상의 소거된 블록들 내로 프로그래밍되고,
    메모리 시스템 내의 데이터에 대한 후속 작동들이 제2 블록에 저장된 제2 파일의 데이터의 적어도 일부가 쓸모없어지도록 하며,
    제2 블록 내의 제2 파일의 데이터의 적어도 일부가 쓸모없어지는 것에 응답하여, 제2 블록 내의 임의의 나머지 유효 데이터가 제3 블록 내로 카피되고,
    소거된 저장 용량을 갖는 제1 블록에 응답하여, 유효 데이터가 제1 블록으로부터 제4 블록 내로 카피되며,
    제1 블록으로부터 제4 블록 내로의 유효 데이터의 상술된 카피에 비하여, 제2 블록으로부터 제3 블록 내로의 유효 데이터의 상술된 카피에 우선순위가 제공되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
  15. 제14항에 있어서, 카피된 데이터는 소거될 블록일 때 제3 또는 제4 블록들 중 적어도 하나 내로 기록되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
  16. 제14항에 있어서, 카피된 데이터가 내부에 기록되는 시간에 제3 파일의 데이터는 제3 또는 제4 블록들 중 적어도 하나에 포함되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
KR1020087004662A 2005-08-03 2008-02-27 직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및가비지 수집 KR101377147B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US70538805P 2005-08-03 2005-08-03
US60/705,388 2005-08-03
PCT/US2006/030242 WO2007019220A2 (en) 2005-08-03 2006-08-01 Data consolidation and garbage collection in direct data file storage memories

Publications (2)

Publication Number Publication Date
KR20080038363A true KR20080038363A (ko) 2008-05-06
KR101377147B1 KR101377147B1 (ko) 2014-03-24

Family

ID=37402587

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087004671A KR20080038364A (ko) 2005-08-03 2006-08-01 직접적인 데이터 파일 저장소를 이용하는 플래시 메모리들에서의 데이터 작동들
KR1020087004662A KR101377147B1 (ko) 2005-08-03 2008-02-27 직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및가비지 수집

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020087004671A KR20080038364A (ko) 2005-08-03 2006-08-01 직접적인 데이터 파일 저장소를 이용하는 플래시 메모리들에서의 데이터 작동들

Country Status (7)

Country Link
US (12) US7984084B2 (ko)
EP (2) EP1920337A2 (ko)
JP (2) JP4537482B2 (ko)
KR (2) KR20080038364A (ko)
CN (7) CN101233499A (ko)
TW (6) TW200805134A (ko)
WO (2) WO2007019174A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114402282A (zh) * 2019-09-17 2022-04-26 美光科技公司 存取存储的元数据以识别存储数据的存储器装置
US11860777B2 (en) 2019-10-15 2024-01-02 Samsung Electronics Co., Ltd. Storage device and a garbage collection method thereof

Families Citing this family (537)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7934064B1 (en) * 2004-12-21 2011-04-26 Acronis Inc. System and method for consolidation of backups
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
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
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
JP2006350476A (ja) * 2005-06-13 2006-12-28 Sony Computer Entertainment Inc コンテンツ配信装置およびシステム
US8321953B2 (en) * 2005-07-14 2012-11-27 Imation Corp. Secure storage device with offline code entry
US8335920B2 (en) * 2005-07-14 2012-12-18 Imation Corp. Recovery of data access for a locked secure storage device
US8015606B1 (en) 2005-07-14 2011-09-06 Ironkey, Inc. Storage device with website trust indication
US8438647B2 (en) * 2005-07-14 2013-05-07 Imation Corp. Recovery of encrypted data from a secure storage device
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7627733B2 (en) * 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
JP4394047B2 (ja) * 2005-08-05 2010-01-06 信越ポリマー株式会社 キーフレームおよび押釦スイッチ用カバー部材
US20070067620A1 (en) * 2005-09-06 2007-03-22 Ironkey, Inc. Systems and methods for third-party authentication
US8938591B2 (en) * 2005-09-30 2015-01-20 Cleversafe, Inc. Dispersed storage processing unit and methods with data aggregation for use in a dispersed storage system
US7814262B2 (en) * 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US20070094445A1 (en) * 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks
US20070116023A1 (en) * 2005-11-23 2007-05-24 Broadcom Corporation Method and apparatus for dynamically configuring a generic processing module
US20070136671A1 (en) * 2005-12-12 2007-06-14 Buhrke Eric R Method and system for directing attention during a conversation
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070136553A1 (en) * 2005-12-13 2007-06-14 Sinclair Alan W Logically-addressed file storage systems
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US8266378B1 (en) 2005-12-22 2012-09-11 Imation Corp. Storage device with accessible partitions
US8639873B1 (en) 2005-12-22 2014-01-28 Imation Corp. Detachable storage device with RAM cache
US7818726B2 (en) * 2006-01-25 2010-10-19 Microsoft Corporation Script-based object adaptation
US7454587B1 (en) * 2006-02-06 2008-11-18 Xilinx, Inc. Method and apparatus for memory management in an integrated circuit
CN100485681C (zh) * 2006-03-23 2009-05-06 北京握奇数据系统有限公司 智能卡存储系统及该系统中文件创建管理的方法
US20070233752A1 (en) * 2006-03-30 2007-10-04 Kiran Bangalore Method and apparatus to reclaim nonvolatile memory space
US7469329B2 (en) 2006-03-30 2008-12-23 International Business Machines Corporation Methods for dynamically resizing memory pools
JP4135747B2 (ja) * 2006-04-06 2008-08-20 ソニー株式会社 データ処理装置及びフラッシュメモリへのアクセス方法
US8176249B2 (en) * 2006-05-21 2012-05-08 Amiram Grynberg Methods for embedding session secrets, within application instances
DE102006025133A1 (de) * 2006-05-30 2007-12-06 Infineon Technologies Ag Speicher- und Speicherkommunikationssystem
US20070300031A1 (en) * 2006-06-22 2007-12-27 Ironkey, Inc. Memory data shredder
US8429242B1 (en) * 2006-06-26 2013-04-23 Emc Corporation Methods and apparatus for providing content
JP2008009803A (ja) * 2006-06-30 2008-01-17 Sony Corp 情報記憶装置、および、情報転送方法、情報転送システム、プログラム、並びに、記録媒体
US20080010323A1 (en) * 2006-07-06 2008-01-10 An Chen Computer Co., Ltd. Method for duplicating data
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
KR100758301B1 (ko) * 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
US7444461B2 (en) * 2006-08-04 2008-10-28 Sandisk Corporation Methods for phased garbage collection
US7444462B2 (en) * 2006-09-28 2008-10-28 Sandisk Corporation Methods for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US8949555B1 (en) * 2007-08-30 2015-02-03 Virident Systems, Inc. Methods for sustained read and write performance with non-volatile memory
US7441071B2 (en) * 2006-09-28 2008-10-21 Sandisk Corporation Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US7464216B2 (en) * 2006-09-29 2008-12-09 Sandisk Corporation Method for phased garbage collection with state indicators
US7444463B2 (en) * 2006-09-29 2008-10-28 Sandisk Corporation System for phased garbage collection with state indicators
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
WO2008057557A2 (en) * 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
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
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
WO2008070802A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for an in-server storage area network
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
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8209605B2 (en) * 2006-12-13 2012-06-26 Pado Metaware Ab Method and system for facilitating the examination of documents
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
KR101464199B1 (ko) 2006-12-26 2014-11-21 샌디스크 테크놀로지스, 인코포레이티드 연속 논리 주소 공간 인터페이스를 구비한 다이렉트 데이터 파일 시스템을 사용하는 방법
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US20080177782A1 (en) * 2007-01-10 2008-07-24 Pado Metaware Ab Method and system for facilitating the production of documents
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
KR100869675B1 (ko) * 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
KR100825802B1 (ko) * 2007-02-13 2008-04-29 삼성전자주식회사 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법
US7639540B2 (en) * 2007-02-16 2009-12-29 Mosaid Technologies Incorporated Non-volatile semiconductor memory having multiple external power supplies
KR100875294B1 (ko) * 2007-03-16 2008-12-23 삼성전자주식회사 프로그래밍시 블럭단위의 상태 레지스터를 확인하는 플래시메모리와 그 방법
US7987332B2 (en) * 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
US20080235480A1 (en) * 2007-03-21 2008-09-25 Shai Traister Systems for storing memory operations in a queue
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
DE102007015535A1 (de) * 2007-03-30 2008-10-02 Siemens Ag Verfahren zur digitalen Speicherung von Daten auf einem Datenspeicher mit beschränktem verfügbarem Speicherplatz
US8768898B1 (en) * 2007-04-26 2014-07-01 Netapp, Inc. Performing direct data manipulation on a storage device
US9785549B2 (en) * 2007-04-27 2017-10-10 Microsoft Technology Licensing, Llc Managing object lifetime for native/managed peers
US8041883B2 (en) 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US7991942B2 (en) 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US8041847B1 (en) 2007-05-10 2011-10-18 Marvell International Ltd. Periodic and conditional execution of DMA operations
US8010507B2 (en) * 2007-05-24 2011-08-30 Pado Metaware Ab Method and system for harmonization of variants of a sequential file
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
US20080307156A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
WO2009001514A1 (ja) * 2007-06-22 2008-12-31 Panasonic Corporation メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
TWI369633B (en) * 2007-06-27 2012-08-01 Sandisk Corp Phased garbage collection and house keeping operations in a flash memory system
US20090006506A1 (en) * 2007-06-28 2009-01-01 Nokia Corportion Method and system for garbage collection of native resources
US7822791B2 (en) * 2007-06-28 2010-10-26 Intel Corporation Method and apparatus for flash memory reclaim
US8201188B2 (en) * 2007-09-20 2012-06-12 Microsoft Corporation Device-hosted services over media transfer protocol
US7805632B1 (en) * 2007-09-24 2010-09-28 Net App, Inc. Storage system and method for rapidly recovering from a system failure
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
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8316277B2 (en) 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US9032154B2 (en) * 2007-12-13 2015-05-12 Sandisk Technologies Inc. Integration of secure data transfer applications for generic IO devices
CA2708669A1 (en) * 2007-12-13 2009-06-18 Redknee Inc. Method and system for storage
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US20090164745A1 (en) * 2007-12-21 2009-06-25 Alan Sinclair System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US20090228716A1 (en) * 2008-02-08 2009-09-10 Pado Metawsre Ab Method and system for distributed coordination of access to digital files
US9060046B2 (en) * 2008-02-18 2015-06-16 Google Technology Holdings LLC Method and apparatus for transferring media data between devices
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
KR101477047B1 (ko) * 2008-02-29 2014-12-30 삼성전자주식회사 메모리 시스템 및 그것의 블록 병합 방법
TWI385520B (zh) * 2008-02-29 2013-02-11 Via Tech Inc 儲存單元管理方法及系統
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
WO2009109877A1 (en) * 2008-03-04 2009-09-11 Nxp B.V. Mobile communication device and method for implementing mifare memory multiple sectors mechanisms
CN101251788A (zh) * 2008-03-07 2008-08-27 威盛电子股份有限公司 储存单元管理方法及系统
JP2009230205A (ja) * 2008-03-19 2009-10-08 Toshiba Corp メモリシステム
US8484432B2 (en) 2008-03-11 2013-07-09 Kabushiki Kaisha Toshiba Memory system
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
WO2009135196A1 (en) * 2008-05-02 2009-11-05 Ironkey, Inc. Enterprise device policy management
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
MX2010014374A (es) * 2008-06-24 2011-03-01 Nxp Bv Metodo para accesar aplicaciones en un ambiente movil seguro.
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20090327581A1 (en) * 2008-06-30 2009-12-31 Coulson Richard L Nand memory
KR100954039B1 (ko) 2008-08-11 2010-04-20 (주)인디링스 플래시 메모리 제어 방법 및 제어 장치
US8281062B2 (en) * 2008-08-27 2012-10-02 Sandisk Il Ltd. Portable storage device supporting file segmentation and multiple transfer rates
TWI399651B (zh) * 2008-09-12 2013-06-21 Communication protocol method and system for input / output device
US20100070544A1 (en) * 2008-09-12 2010-03-18 Microsoft Corporation Virtual block-level storage over a file system
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
CN101676882B (zh) * 2008-09-16 2013-01-16 美光科技公司 存储器装置的内嵌映射信息
US7953774B2 (en) * 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
CN101685381B (zh) 2008-09-26 2013-07-24 美光科技公司 固态大容量存储装置的数据串流
US8205203B2 (en) * 2008-10-16 2012-06-19 International Business Machines Corporation Scheduling for real-time garbage collection
US8429658B2 (en) * 2008-10-16 2013-04-23 International Business Machines Corporation Lock deferral for real-time garbage collection
CN101727398B (zh) * 2008-10-31 2012-07-11 西安奇维测控科技有限公司 经信息序列化实现闪存控制器管理数据存储与还原的方法
JP5364340B2 (ja) * 2008-11-07 2013-12-11 株式会社ケーヒン バックアップ方法及び装置並びに車両用電子制御装置
US8341311B1 (en) 2008-11-18 2012-12-25 Entorian Technologies, Inc System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface
KR101469771B1 (ko) * 2008-12-03 2014-12-08 삼성전자주식회사 플래시 메모리를 포함하는 반도체 장치 및 이의 어드레스 사상 방법
US9104686B2 (en) * 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US20120173593A1 (en) * 2008-12-16 2012-07-05 Fabrice Jogand-Coulomb System and Method for Managing Discardable Objects
US8849856B2 (en) * 2008-12-16 2014-09-30 Sandisk Il Ltd. Discardable files
JP5268617B2 (ja) * 2008-12-17 2013-08-21 キヤノン株式会社 画像形成装置、画像形成装置の制御方法及びコンピュータプログラム
JP4551958B2 (ja) * 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
US8327040B2 (en) 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
US8386723B2 (en) * 2009-02-11 2013-02-26 Sandisk Il Ltd. System and method of host request mapping
US20100235605A1 (en) * 2009-02-13 2010-09-16 Nir Perry Enhancement of storage life expectancy by bad block management
US9098396B2 (en) * 2009-02-13 2015-08-04 Sandisk Il Ltd. Enhancement of efficiency in power failure handling in flash memory
KR20100094241A (ko) * 2009-02-18 2010-08-26 삼성전자주식회사 예비 블록을 포함하지 않는 불휘발성 메모리 장치
US20100228906A1 (en) * 2009-03-06 2010-09-09 Arunprasad Ramiya Mothilal Managing Data in a Non-Volatile Memory System
JP5485163B2 (ja) * 2009-03-13 2014-05-07 パナソニック株式会社 アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
KR101574540B1 (ko) * 2009-04-15 2015-12-07 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
WO2010125574A1 (en) 2009-04-27 2010-11-04 Kamlesh Gandhi Description
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8504759B2 (en) * 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
TWI455133B (zh) * 2009-05-26 2014-10-01 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
KR20140059102A (ko) * 2009-06-10 2014-05-15 마이크론 테크놀로지, 인크. 메모리 어레이들에서 감소된 읽기 지연시간에 대한 메모리 작업들의 서스펜션
WO2010144587A2 (en) * 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
US20110004718A1 (en) 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US9792074B2 (en) * 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
JP5254141B2 (ja) * 2009-07-14 2013-08-07 富士通株式会社 アーカイブ装置、データ格納プログラムおよびデータ格納方法
WO2011013125A1 (en) 2009-07-27 2011-02-03 Storwize Ltd. Method and system for transformation of logical data objects for storage
US8683088B2 (en) * 2009-08-06 2014-03-25 Imation Corp. Peripheral device data integrity
US8745365B2 (en) * 2009-08-06 2014-06-03 Imation Corp. Method and system for secure booting a computer by booting a first operating system from a secure peripheral device and launching a second operating system stored a secure area in the secure peripheral device on the first operating system
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
CN102597910B (zh) 2009-09-09 2015-03-25 弗森-艾奥公司 存储设备中用于功率减小管理的装置、系统及方法
WO2011031903A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8838877B2 (en) * 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
US8234250B1 (en) * 2009-09-17 2012-07-31 Netapp. Inc. Processing data of a file using multiple threads during a deduplication gathering phase
TWI506422B (zh) * 2009-09-23 2015-11-01 Silicon Motion Inc 用來管理具有多通道、多途徑的記憶裝置之方法以及相關之記憶裝置及其控制器
US8745353B2 (en) * 2009-10-23 2014-06-03 Seagate Technology Llc Block boundary resolution for mismatched logical and physical block sizes
US8364929B2 (en) * 2009-10-23 2013-01-29 Seagate Technology Llc Enabling spanning for a storage device
US8635422B1 (en) * 2009-10-29 2014-01-21 Symantec Corporation Systems and methods for reclaiming storage space from deleted volumes on thin-provisioned disks
US8549223B1 (en) 2009-10-29 2013-10-01 Symantec Corporation Systems and methods for reclaiming storage space on striped volumes
US8140740B2 (en) * 2009-10-29 2012-03-20 Hewlett-Packard Development Company, L.P. Data defragmentation of solid-state memory
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
JP5593682B2 (ja) * 2009-11-17 2014-09-24 セイコーエプソン株式会社 プリンター、プリンターの制御方法、及び、プログラム
TWI423024B (zh) * 2009-11-23 2014-01-11 Phison Electronics Corp 用於快閃記憶體的資料儲存方法及其控制器與儲存系統
DE112010004667T5 (de) * 2009-12-03 2013-01-17 Hitachi, Ltd. Speichervorrichtung und Speichersteuerung
US8176235B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
US8176234B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
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
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
TWI409633B (zh) * 2010-02-04 2013-09-21 Phison Electronics Corp 快閃記憶體儲存裝置、其控制器與資料寫入方法
CN101799820B (zh) * 2010-02-08 2013-03-20 深圳市同洲电子股份有限公司 闪存、文件系统挂载方法及装置、数据管理方法及装置
JP2011192260A (ja) 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US8108447B2 (en) * 2010-03-11 2012-01-31 Symantec Corporation Systems and methods for garbage collection in deduplicated data systems
JP2011192240A (ja) * 2010-03-17 2011-09-29 Sony Corp 記憶装置および記憶システム
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
JP2011209973A (ja) * 2010-03-30 2011-10-20 Hitachi Ltd ディスクアレイ構成プログラム、計算機、計算機システム
US10013252B2 (en) * 2010-04-16 2018-07-03 Oracle International Corporation Software development compliance system
US8782327B1 (en) * 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
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
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US8683148B2 (en) * 2010-06-30 2014-03-25 Sandisk Il Ltd. Status indication when a maintenance operation is to be performed at a memory device
US9141538B2 (en) * 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US8369156B2 (en) 2010-07-13 2013-02-05 Sandisk Technologies Inc. Fast random access to non-volatile storage
CN101901263A (zh) * 2010-07-22 2010-12-01 华为终端有限公司 文件系统的访问方法及装置
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
EP2598996B1 (en) 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
US20120036301A1 (en) * 2010-08-03 2012-02-09 Caspole Eric R Processor support for filling memory regions
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
JP5569936B2 (ja) * 2010-08-11 2014-08-13 国立大学法人 東京大学 制御装置およびデータ記憶装置
US8468007B1 (en) * 2010-08-13 2013-06-18 Google Inc. Emulating a peripheral mass storage device with a portable device
US8667248B1 (en) * 2010-08-31 2014-03-04 Western Digital Technologies, Inc. Data storage device using metadata and mapping table to identify valid user data on non-volatile media
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
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
CN102455973A (zh) * 2010-10-19 2012-05-16 厦门华侨电子股份有限公司 一种利用Flash芯片剩余空间设置数据区擦写数据的方法
CN102004697B (zh) * 2010-10-21 2012-09-19 北京握奇数据系统有限公司 一种Flash的回收方法和装置
CN102467522B (zh) * 2010-11-10 2013-09-11 中兴通讯股份有限公司 一种基于nand闪存的文件系统的自编程方法及装置
CN103262054B (zh) 2010-12-13 2015-11-25 桑迪士克科技股份有限公司 用于自动提交存储器的装置、系统和方法
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
KR20120088454A (ko) * 2011-01-31 2012-08-08 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 장치와, 이를 위한 프로그램 방법
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9575842B2 (en) * 2011-02-24 2017-02-21 Ca, Inc. Multiplex backup using next relative addressing
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8621328B2 (en) 2011-03-04 2013-12-31 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
US8972696B2 (en) 2011-03-07 2015-03-03 Microsoft Technology Licensing, Llc Pagefile reservations
FR2965079A1 (fr) * 2011-03-15 2012-03-23 Continental Automotive France Procede de gestion d'une memoire non volatile
US8661221B2 (en) * 2011-03-16 2014-02-25 International Business Machines Corporation Leasing fragmented storage between processes
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
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
US9311229B2 (en) * 2011-03-29 2016-04-12 Blackberry Limited System and method for managing flash memory
CN102736985B (zh) * 2011-03-30 2015-10-14 群联电子股份有限公司 数据合并方法、控制器与储存装置
US9009438B2 (en) 2011-06-01 2015-04-14 International Business Machines Corporation Space reclamation in multi-layered and thin provisioned storage systems
US9449692B2 (en) 2011-08-03 2016-09-20 Micron Technology, Inc. Functional data programming and reading in a memory
JP4988054B2 (ja) * 2011-08-12 2012-08-01 株式会社東芝 メモリシステム
CN102508784B (zh) * 2011-11-02 2015-01-07 杭州海康威视数字技术股份有限公司 视频监控设备中闪存卡的数据存储方法及其系统
KR101298191B1 (ko) 2011-11-04 2013-08-20 에스케이하이닉스 주식회사 반도체 메모리 장치, 이를 위한 연속 프로그램 제어 회로 및 프로그램 방법
US8832411B2 (en) 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US9274945B2 (en) * 2011-12-15 2016-03-01 International Business Machines Corporation Processing unit reclaiming requests in a solid state memory device
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
KR20130075018A (ko) * 2011-12-27 2013-07-05 한국전자통신연구원 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법
EP2798500A1 (en) 2011-12-29 2014-11-05 Memory Technologies LLC Method for erasing data entity in memory module
KR20130078973A (ko) * 2012-01-02 2013-07-10 삼성전자주식회사 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US8868978B2 (en) 2012-02-14 2014-10-21 International Business Machines Corporation Reclaiming discarded solid state devices
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
DE102012006046A1 (de) * 2012-03-27 2013-10-02 Heidelberger Druckmaschinen Ag Adaptives Remote-Service-Protokoll
CN104272273A (zh) * 2012-04-25 2015-01-07 惠普发展公司,有限责任合伙企业 动态存储器分配
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
TWI477966B (zh) * 2012-05-31 2015-03-21 Silicon Motion Inc 資料儲存裝置與快閃記憶體操作方法
US9846641B2 (en) 2012-06-18 2017-12-19 International Business Machines Corporation Variability aware wear leveling
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US8799561B2 (en) * 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US9201784B2 (en) 2012-09-07 2015-12-01 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling nonvolatile semiconductor memory
US10282286B2 (en) * 2012-09-14 2019-05-07 Micron Technology, Inc. Address mapping using a data unit type that is variable
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
TWI479492B (zh) * 2012-11-20 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
US9411718B2 (en) * 2012-12-21 2016-08-09 Seagate Technology Llc Method to apply fine grain wear leveling and garbage collection
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
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
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9734050B2 (en) * 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
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
JP5619198B2 (ja) * 2013-02-04 2014-11-05 株式会社フィックスターズ 情報処理装置、情報処理方法、およびプログラム
US9361040B1 (en) * 2013-02-27 2016-06-07 Marvell International Ltd. Systems and methods for data storage management
US9383924B1 (en) * 2013-02-27 2016-07-05 Netapp, Inc. Storage space reclamation on volumes with thin provisioning capability
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US8656255B1 (en) * 2013-03-15 2014-02-18 Avalanche Technology, Inc. Method for reducing effective raw bit error rate in multi-level cell NAND flash memory
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9632926B1 (en) * 2013-05-16 2017-04-25 Western Digital Technologies, Inc. Memory unit assignment and selection for internal memory operations in data storage systems
CN103268291B (zh) * 2013-05-23 2016-02-24 清华大学 在闪存存储系统中延迟持久化索引元数据的方法
US9256371B2 (en) 2013-05-28 2016-02-09 Globalfoundries Inc. Implementing reinforcement learning based flash control
US9349450B2 (en) 2013-06-10 2016-05-24 Micron Technology, Inc. Memory devices and memory operational methods including single erase operation of conductive bridge memory cells
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
US9690837B1 (en) * 2013-06-28 2017-06-27 EMC IP Holding Company LLC Techniques for preserving redundant copies of metadata in a data storage system employing de-duplication
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US9477484B2 (en) 2013-07-23 2016-10-25 Samsung Electronics Co., Ltd. System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9639463B1 (en) * 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
JP6271939B2 (ja) * 2013-10-11 2018-01-31 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US9569447B2 (en) * 2013-11-08 2017-02-14 Texas Instruments Incorporated File access method and system thereof
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
CN104699688A (zh) * 2013-12-04 2015-06-10 杭州鹰湾科技有限公司 一种搜索文件的方法和电子设备
KR20150068747A (ko) 2013-12-12 2015-06-22 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 모바일 장치 및 비휘발성 메모리 시스템의 동작방법
US9766823B2 (en) 2013-12-12 2017-09-19 Memory Technologies Llc Channel optimized storage modules
CN104731710B (zh) * 2013-12-18 2018-06-29 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器储存装置
US20150186257A1 (en) * 2013-12-26 2015-07-02 Anand S. Ramalingam Managing a transfer buffer for a non-volatile memory
CA2881206A1 (en) * 2014-02-07 2015-08-07 Andrew WARFIELD Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US11537290B2 (en) 2014-03-20 2022-12-27 International Business Machines Corporation Managing high performance storage systems with hybrid storage technologies
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
KR102164617B1 (ko) 2014-03-24 2020-10-12 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9996303B2 (en) * 2014-05-08 2018-06-12 Kabushiki Kaisha Toshiba Hybrid-HDD that gives up old NAND data at the last moment
KR102211709B1 (ko) 2014-05-19 2021-02-02 삼성전자주식회사 신호 송수신 특성을 향상한 불휘발성 메모리 시스템, 호스트 장치, 불휘발성 메모리 시스템 및 호스트의 동작방법
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
KR102148389B1 (ko) 2014-06-11 2020-08-27 삼성전자주식회사 오버 라이트 동작을 갖는 메모리 시스템 및 그에 따른 동작 제어방법
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
TWI554944B (zh) * 2014-06-20 2016-10-21 慧榮科技股份有限公司 快閃記憶體控制裝置、快閃記憶體控制系統以及快閃記憶體控制方法
JP6119682B2 (ja) * 2014-06-27 2017-04-26 株式会社デンソー 電子制御装置
US9710326B2 (en) 2014-07-28 2017-07-18 SK Hynix Inc. Encoder by-pass with scrambler
TWI524180B (zh) * 2014-08-15 2016-03-01 財團法人資訊工業策進會 位元組定址儲存系統
US9600409B2 (en) * 2014-08-29 2017-03-21 EMC IP Holding Company LLC Method and system for garbage collection in a storage system based on longevity of stored data
US9652382B1 (en) * 2014-09-04 2017-05-16 Sk Hynix Memory Solutions Inc. Look-ahead garbage collection for NAND flash based storage
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
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
US9658966B2 (en) 2014-11-24 2017-05-23 Sandisk Technologies Llc Systems and methods of write cache flushing
US20160188495A1 (en) * 2014-12-26 2016-06-30 Intel Corporation Event triggered erasure for data security
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
KR102277521B1 (ko) 2015-01-23 2021-07-16 삼성전자주식회사 저장 장치 및 그것의 리드 리클레임 및 읽기 방법
CN105988935B (zh) * 2015-02-04 2019-04-23 群联电子股份有限公司 智能卡管理方法、存储器存储装置及存储器控制电路单元
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US9811462B2 (en) 2015-04-30 2017-11-07 Toshiba Memory Corporation Memory system executing garbage collection
KR102402783B1 (ko) * 2015-05-11 2022-05-27 삼성전자 주식회사 전자 장치 및 이의 페이지 병합 방법
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
US9875053B2 (en) 2015-06-05 2018-01-23 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
US10289327B2 (en) 2015-06-05 2019-05-14 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
US10635307B2 (en) 2015-06-30 2020-04-28 International Business Machines Corporation Memory state indicator
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
CN106326136A (zh) * 2015-07-02 2017-01-11 广明光电股份有限公司 固态硬盘搜集垃圾区块的方法
CN106325764B (zh) * 2015-07-08 2021-02-26 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US10268400B2 (en) * 2015-09-03 2019-04-23 Sandisk Technologies Llc System and method for file detection and usage during compaction
JP2016026345A (ja) * 2015-09-03 2016-02-12 マイクロン テクノロジー, インク. メモリアレイにおける読み出し待ち時間を短縮するためのメモリ操作の一時停止
KR102387956B1 (ko) 2015-09-09 2022-04-19 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템
KR102501751B1 (ko) * 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
US11188229B2 (en) * 2015-09-25 2021-11-30 Hitachi Vantara Llc Adaptive storage reclamation
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
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
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10102119B2 (en) * 2015-10-30 2018-10-16 Sandisk Technologies Llc Garbage collection based on queued and/or selected write commands
KR102468992B1 (ko) * 2015-11-06 2022-11-22 에스케이하이닉스 주식회사 메모리 장치 및 이의 동작 방법
US10303371B2 (en) 2015-12-02 2019-05-28 Toshiba Memory Corporation Data storage device that stabilizes write latency
TWI609323B (zh) * 2016-01-29 2017-12-21 捷鼎國際股份有限公司 資料儲存方法及其系統
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10739996B1 (en) 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US10481830B2 (en) * 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
KR20180014975A (ko) * 2016-08-02 2018-02-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
KR102618699B1 (ko) 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR20180053027A (ko) 2016-11-11 2018-05-21 삼성전자주식회사 스토리지 장치 및 그 동작 방법
CN106598508A (zh) * 2016-12-30 2017-04-26 郑州云海信息技术有限公司 一种固态硬盘及其写入仲裁方法、系统
US10255179B2 (en) * 2016-12-30 2019-04-09 Western Digital Technologies, Inc. Garbage collection read throttling
US10838634B1 (en) * 2016-12-30 2020-11-17 EMC IP Holding Company LLC Managing storage capacity in version families having both writable and read-only data objects
CN108509349B (zh) * 2017-02-27 2022-10-14 得一微电子股份有限公司 一种nand flash的数据源区块回收方法及固态硬盘
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
CN108572887A (zh) * 2017-03-14 2018-09-25 上海骐宏电驱动科技有限公司 数据检验校正方法
CN107015764B (zh) * 2017-03-17 2020-03-27 深圳市江波龙电子股份有限公司 Nand flash的数据处理方法、装置和一种Nand flash
US11893265B2 (en) * 2017-05-02 2024-02-06 Google Llc Garbage collection for data storage
US10379765B2 (en) * 2017-06-27 2019-08-13 Western Digital Technologies, Inc. Geometry-aware command scheduling
US10521106B2 (en) 2017-06-27 2019-12-31 International Business Machines Corporation Smart element filtering method via gestures
KR102430791B1 (ko) * 2017-07-19 2022-08-10 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
CN107678684B (zh) * 2017-08-22 2020-11-10 深圳市硅格半导体有限公司 存储器的无效数据清除方法、装置和存储器
US11100996B2 (en) * 2017-08-30 2021-08-24 Micron Technology, Inc. Log data storage for flash memory
US11126546B2 (en) * 2017-10-09 2021-09-21 Huawei Technologies Co., Ltd. Garbage data scrubbing method, and device
KR20190052368A (ko) * 2017-11-08 2019-05-16 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN108021630B (zh) * 2017-11-21 2021-03-30 深圳市雷鸟网络传媒有限公司 垃圾文件清理方法、智能终端及计算机可读存储介质
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
US10642602B2 (en) * 2017-12-12 2020-05-05 Nxp Usa, Inc. NVM architecture with OTA support
US11099760B2 (en) * 2017-12-14 2021-08-24 Intel Corporation Background data refresh using a system timestamp in storage devices
TWI644207B (zh) * 2017-12-29 2018-12-11 國科美國研究實驗室 Method for garbage collection of data storage device
CN114035749B (zh) * 2018-01-12 2023-02-28 珠海极海半导体有限公司 电子设备和Flash存储器
CN110109868B (zh) * 2018-01-18 2023-07-18 伊姆西Ip控股有限责任公司 用于索引文件的方法、装置和计算机程序产品
JP6443571B1 (ja) * 2018-02-02 2018-12-26 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
KR20190102790A (ko) * 2018-02-27 2019-09-04 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템
US10884916B2 (en) * 2018-03-29 2021-01-05 Intel Corporation Non-volatile file update media
CN108536614A (zh) * 2018-03-30 2018-09-14 天津麒麟信息技术有限公司 一种Flash直接随机写实现方法、装置及存储介质
KR20190120966A (ko) * 2018-04-17 2019-10-25 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102603916B1 (ko) * 2018-04-25 2023-11-21 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치
US11301376B2 (en) 2018-06-11 2022-04-12 Seagate Technology Llc Data storage device with wear range optimization
CN110633225B (zh) 2018-06-25 2022-11-15 慧荣科技股份有限公司 实体存储对照表产生装置及方法
KR20200016075A (ko) * 2018-08-06 2020-02-14 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
US10891224B2 (en) 2018-09-06 2021-01-12 Micron Technology, Inc. Maintaining data consistency in a memory sub system that uses hybrid wear leveling operations
TWI703438B (zh) 2018-09-11 2020-09-01 慧榮科技股份有限公司 映射表更新方法
US11175802B2 (en) * 2018-09-21 2021-11-16 Sap Se Configuration object deletion manager
KR102645142B1 (ko) * 2018-10-25 2024-03-07 삼성전자주식회사 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들
TWI709042B (zh) * 2018-11-08 2020-11-01 慧榮科技股份有限公司 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統
EP3866016A4 (en) * 2018-11-20 2021-11-10 Huawei Technologies Co., Ltd. METHOD AND APPARATUS FOR DELETING INDEX ENTRY IN MEMORY
KR20200067035A (ko) * 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR20200073017A (ko) * 2018-12-13 2020-06-23 에스케이하이닉스 주식회사 데이터 저장 장치와, 그것의 동작 방법
JP7435470B2 (ja) * 2018-12-19 2024-02-21 ソニーグループ株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
US11288185B2 (en) 2019-01-03 2022-03-29 Silicon Motion, Inc. Method and computer program product for performing data writes into a flash memory
CN111399750B (zh) * 2019-01-03 2023-05-26 慧荣科技股份有限公司 闪存数据写入方法及计算机可读取存储介质
US10976950B1 (en) * 2019-01-15 2021-04-13 Twitter, Inc. Distributed dataset modification, retention, and replication
US11113270B2 (en) 2019-01-24 2021-09-07 EMC IP Holding Company LLC Storing a non-ordered associative array of pairs using an append-only storage medium
US11327809B2 (en) 2019-06-19 2022-05-10 International Business Machines Corporation Virtual machine memory removal increment selection
CN112544038A (zh) * 2019-07-22 2021-03-23 华为技术有限公司 存储系统数据压缩的方法、装置、设备及可读存储介质
US11508021B2 (en) * 2019-07-22 2022-11-22 Vmware, Inc. Processes and systems that determine sustainability of a virtual infrastructure of a distributed computing system
KR20210012329A (ko) * 2019-07-24 2021-02-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI688956B (zh) * 2019-08-28 2020-03-21 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN112486404A (zh) * 2019-09-12 2021-03-12 伊姆西Ip控股有限责任公司 用于管理存储块的方法、设备和计算机程序产品
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11762569B2 (en) * 2019-10-29 2023-09-19 International Business Machines Corporation Workload based relief valve activation for hybrid controller architectures
KR20210051873A (ko) * 2019-10-31 2021-05-10 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템
CN111049729A (zh) * 2019-11-29 2020-04-21 苏州浪潮智能科技有限公司 一种持久化消息传输方法与装置
US11157179B2 (en) 2019-12-03 2021-10-26 Pure Storage, Inc. Dynamic allocation of blocks of a storage device based on power loss protection
JP2021099642A (ja) * 2019-12-20 2021-07-01 キヤノン株式会社 情報処理装置および情報処理装置の制御方法
KR20210100265A (ko) 2020-02-06 2021-08-17 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US11748277B2 (en) 2020-03-05 2023-09-05 Seagate Technology, Llc Client input/output (I/O) access rate variation compensation
US11704035B2 (en) 2020-03-30 2023-07-18 Pure Storage, Inc. Unified storage on block containers
CN113495681A (zh) * 2020-04-07 2021-10-12 杭州萤石软件有限公司 一种nand flash文件数据存取方法、装置及存储介质
US11604759B2 (en) 2020-05-01 2023-03-14 EMC IP Holding Company LLC Retention management for data streams
US11599546B2 (en) 2020-05-01 2023-03-07 EMC IP Holding Company LLC Stream browser for data streams
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
KR20210138996A (ko) 2020-05-13 2021-11-22 삼성전자주식회사 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US11599420B2 (en) 2020-07-30 2023-03-07 EMC IP Holding Company LLC Ordered event stream event retention
US11567665B2 (en) * 2020-08-31 2023-01-31 Micron Technology, Inc. Data dispersion-based memory management
US11513871B2 (en) 2020-09-30 2022-11-29 EMC IP Holding Company LLC Employing triggered retention in an ordered event stream storage system
US11755555B2 (en) 2020-10-06 2023-09-12 EMC IP Holding Company LLC Storing an ordered associative array of pairs using an append-only storage medium
KR20220048864A (ko) * 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11599293B2 (en) 2020-10-14 2023-03-07 EMC IP Holding Company LLC Consistent data stream replication and reconstruction in a streaming data storage platform
KR20220060385A (ko) * 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11494111B2 (en) * 2020-12-17 2022-11-08 Micron Technology, Inc. Data operation based on valid memory unit count
US11556270B2 (en) * 2021-01-07 2023-01-17 EMC IP Holding Company LLC Leveraging garbage collection for raid transformation
US11816065B2 (en) 2021-01-11 2023-11-14 EMC IP Holding Company LLC Event level retention management for data streams
US20220222008A1 (en) * 2021-01-14 2022-07-14 Silicon Motion, Inc. Method for managing flash memory module and associated flash memory controller and memory device
CN114780014A (zh) * 2021-01-22 2022-07-22 伊姆西Ip控股有限责任公司 管理元数据存储单元的方法、电子设备和计算机程序产品
TWI766582B (zh) * 2021-02-17 2022-06-01 群聯電子股份有限公司 有效資料合併方法、記憶體儲存裝置及記憶體控制電路單元
US20220291858A1 (en) * 2021-03-15 2022-09-15 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11775197B2 (en) * 2021-03-25 2023-10-03 Kyocera Document Solutions Inc. Single command for reading then clearing dynamic random access memory
US11740828B2 (en) * 2021-04-06 2023-08-29 EMC IP Holding Company LLC Data expiration for stream storages
US11740821B2 (en) * 2021-04-12 2023-08-29 EMC IP Holding Company LLC Cost-aware garbage collection for cloud storage
US11500578B2 (en) * 2021-04-19 2022-11-15 Micron Technology, Inc. Memory access threshold based memory management
US11954537B2 (en) 2021-04-22 2024-04-09 EMC IP Holding Company LLC Information-unit based scaling of an ordered event stream
US11681460B2 (en) 2021-06-03 2023-06-20 EMC IP Holding Company LLC Scaling of an ordered event stream based on a writer group characteristic
US11513720B1 (en) * 2021-06-11 2022-11-29 Western Digital Technologies, Inc. Data storage device having predictive analytics
US11543993B1 (en) * 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
US11735282B2 (en) 2021-07-22 2023-08-22 EMC IP Holding Company LLC Test data verification for an ordered event stream storage system
US11733893B2 (en) * 2021-07-28 2023-08-22 International Business Machines Corporation Management of flash storage media
US11907564B2 (en) * 2021-08-03 2024-02-20 Yadro International Ltd. Method of and system for initiating garbage collection requests
US11922047B2 (en) * 2021-09-16 2024-03-05 EMC IP Holding Company LLC Using RPO as an optimization target for DataDomain garbage collection
JP2023044330A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリシステムおよび制御方法
US11847334B2 (en) * 2021-09-23 2023-12-19 EMC IP Holding Company LLC Method or apparatus to integrate physical file verification and garbage collection (GC) by tracking special segments
US11971850B2 (en) 2021-10-15 2024-04-30 EMC IP Holding Company LLC Demoted data retention via a tiered ordered event stream data storage system
US20230195351A1 (en) * 2021-12-17 2023-06-22 Samsung Electronics Co., Ltd. Automatic deletion in a persistent storage device
US11822813B2 (en) 2021-12-28 2023-11-21 Samsung Electronics Co., Ltd. Storage device, operation method of storage device, and storage system using the same
US20230280926A1 (en) * 2022-03-03 2023-09-07 Western Digital Technologies, Inc. Data Relocation With Protection For Open Relocation Destination Blocks
US11886735B2 (en) * 2022-03-22 2024-01-30 Micron Technology, Inc. Data movement based on address table activity
US11934656B2 (en) * 2022-04-11 2024-03-19 Netapp, Inc. Garbage collection and bin synchronization for distributed storage architecture
US11941297B2 (en) 2022-04-11 2024-03-26 Netapp, Inc. Garbage collection and bin synchronization for distributed storage architecture
US11947452B2 (en) * 2022-06-01 2024-04-02 Micron Technology, Inc. Controlling variation of valid data counts in garbage collection source blocks
US20240012579A1 (en) * 2022-07-06 2024-01-11 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for data placement in a storage device
US11977758B2 (en) * 2022-08-12 2024-05-07 Micron Technology, Inc. Assigning blocks of memory systems
CN115292247B (zh) * 2022-09-28 2022-12-06 北京鼎轩科技有限责任公司 一种文件读取方法、装置、电子设备和存储介质
US11960742B1 (en) * 2022-10-14 2024-04-16 Oracle International Corporation High-performance, block-level fail atomicity on byte-level non-volatile media
CN116610596B (zh) * 2023-07-19 2023-10-03 合肥康芯威存储技术有限公司 一种存储器件及其数据处理方法
CN116610597B (zh) * 2023-07-20 2023-10-17 合肥康芯威存储技术有限公司 一种存储器件及其垃圾回收的控制方法
CN117632039B (zh) * 2024-01-25 2024-05-03 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元

Family Cites Families (212)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US614509A (en) * 1898-11-22 Hose-coupling
US5774A (en) * 1848-09-19 Steam-hammer
US676632A (en) * 1901-01-30 1901-06-18 Frederick G Rogers Boiler.
US4369754A (en) * 1980-11-04 1983-01-25 Bob Lofman Vacuum responsive injection system for engines
US4800520A (en) * 1985-10-29 1989-01-24 Kabushiki Kaisha Toshiba Portable electronic device with garbage collection function
US4802117A (en) * 1985-12-16 1989-01-31 Pitney Bowes Inc. Method of preserving data storage in a postal meter
US4864511A (en) 1987-01-27 1989-09-05 Storage Technology Corporation Automated cartridge system
GB2204973A (en) 1987-05-19 1988-11-23 Gen Electric Co Plc Data processing system
JP3015377B2 (ja) 1988-08-26 2000-03-06 株式会社東芝 Icカード
DE69024086T2 (de) 1989-04-13 1996-06-20 Sundisk Corp EEprom-System mit Blocklöschung
US5388086A (en) * 1989-06-13 1995-02-07 Kabushiki Kaisha Toshiba Electro-magnetic actuator for driving an objective lens
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
JPH05233426A (ja) 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
US5628014A (en) * 1992-03-20 1997-05-06 Paranode, Inc. Methods and apparatus for node caching at the file level
JP3017892B2 (ja) * 1992-09-30 2000-03-13 株式会社東芝 ファイル管理装置
US5341339A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
US5479633A (en) 1992-10-30 1995-12-26 Intel Corporation Method of controlling clean-up of a solid state memory disk storing floating sector data
US5454103A (en) * 1993-02-01 1995-09-26 Lsc, Inc. Method and apparatus for file storage allocation for secondary storage using large and small file blocks
US5581723A (en) 1993-02-19 1996-12-03 Intel Corporation Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5619690A (en) * 1993-06-21 1997-04-08 Hitachi, Ltd. Computer system including a computer which requests an access to a logical address in a secondary storage system with specification of a local address in the secondary storage system
US5555204A (en) * 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5353256A (en) * 1993-06-30 1994-10-04 Intel Corporation Block specific status information in a memory device
US5640529A (en) * 1993-07-29 1997-06-17 Intel Corporation Method and system for performing clean-up of a solid state disk during host command execution
US7137011B1 (en) 1993-09-01 2006-11-14 Sandisk Corporation Removable mother/daughter peripheral card
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5553261A (en) * 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
JP3507132B2 (ja) 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5809558A (en) 1994-09-29 1998-09-15 Intel Corporation Method and data storage system for storing data in blocks without file reallocation before erasure
US5754817A (en) 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
EP0704803B1 (de) * 1994-09-30 1997-03-05 Alcatel SEL Aktiengesellschaft Verfahren zur Speicherverwaltung eines Flash-Speichers
JP2669365B2 (ja) * 1994-11-24 1997-10-27 日本電気株式会社 書換え可能なromファイル装置
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
GB2291990A (en) 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system
GB2291991A (en) 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5933847A (en) * 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
FR2740237B1 (fr) 1995-10-18 1997-11-14 Schlumberger Ind Sa Composant electronique a memoire synchronisee
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
US5875477A (en) * 1995-12-22 1999-02-23 Intel Corporation Method and apparatus for error management in a solid state disk drive using primary and secondary logical sector numbers
US5799168A (en) * 1996-01-05 1998-08-25 M-Systems Flash Disk Pioneers Ltd. Standardized flash controller
US5867341A (en) 1996-01-30 1999-02-02 Seagate Technology, Inc. Disc drive system using multiple pairs of embedded servo bursts
US6038571A (en) * 1996-01-31 2000-03-14 Kabushiki Kaisha Toshiba Resource management method and apparatus for information processing system of multitasking facility
US5787445A (en) 1996-03-07 1998-07-28 Norris Communications Corporation Operating system including improved file management for use in devices utilizing flash memory as main memory
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
GB9606927D0 (en) 1996-04-02 1996-06-05 Memory Corp Plc Data storage devices
US5896393A (en) * 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
US5996047A (en) 1996-07-01 1999-11-30 Sun Microsystems, Inc. Method and apparatus for caching file control information corresponding to a second file block in a first file block
FR2752072B1 (fr) * 1996-08-01 1999-01-29 Solaic Sa Carte a circuit integre comportant des fichiers classes selon une arborescence
DE19633648A1 (de) * 1996-08-21 1998-02-26 Grundig Ag Verfahren und Schaltungsanordnung zur Speicherung von Diktaten bei einem digitalen Diktiergerät
US5761536A (en) 1996-08-21 1998-06-02 International Business Machines Corporation System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis
JPH1069420A (ja) * 1996-08-29 1998-03-10 Sony Corp 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法
US5907854A (en) * 1996-09-27 1999-05-25 Alcatel Usa Sourcing, L.P. Flash memory file system for writing data files without rewriting an entire volume
US6681239B1 (en) 1996-12-23 2004-01-20 International Business Machines Corporation Computer system having shared address space among multiple virtual address spaces
US6279069B1 (en) * 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US6182188B1 (en) * 1997-04-06 2001-01-30 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
FR2759795B1 (fr) * 1997-02-14 1999-05-07 Francois Charles Oberthur Fidu Procede de stockage de donnees dans une memoire reinscriptible de carte a puce
US5966047A (en) 1997-03-27 1999-10-12 Motorola, Inc. Programmable analog array and method
US6088759A (en) 1997-04-06 2000-07-11 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US5832493A (en) * 1997-04-24 1998-11-03 Trimble Navigation Limited Flash file management system
JPH10326227A (ja) 1997-05-23 1998-12-08 Nec Corp フラッシュメモリを記憶媒体とする記憶装置の管理方式
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6021415A (en) * 1997-10-29 2000-02-01 International Business Machines Corporation Storage management system with file aggregation and space reclamation within aggregated files
US5928347A (en) * 1997-11-18 1999-07-27 Shuttle Technology Group Ltd. Universal memory card interface apparatus
US6029168A (en) * 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6493811B1 (en) 1998-01-26 2002-12-10 Computer Associated Think, Inc. Intelligent controller accessed through addressable virtual space
JP3714969B2 (ja) 1998-03-02 2005-11-09 レクサー・メディア・インコーポレイテッド 改良されたオペレーティングモード検出機能を備えたフラッシュメモリーカード及びユーザフレンドリなインターフェーシングシステム
KR100319598B1 (ko) * 1998-03-18 2002-04-06 김영환 플래시메모리어레이액세스방법및장치
US6226728B1 (en) 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US6151666A (en) * 1998-05-27 2000-11-21 Storage Technology Corporation Method for reclaiming fragmented space on a physical data storage cartridge
US6901457B1 (en) * 1998-11-04 2005-05-31 Sandisk Corporation Multiple mode communications system
US6490649B2 (en) 1998-11-10 2002-12-03 Lexar Media, Inc. Memory device
JP2000148546A (ja) * 1998-11-10 2000-05-30 Nec Corp データ入出力装置およびデータ入出力方法、並びに記録媒体
US6256690B1 (en) 1999-01-15 2001-07-03 Todd Carper System and method for facilitating multiple applications on a smart card
US6480935B1 (en) 1999-01-15 2002-11-12 Todd Carper Smart card memory management system and method
US6145069A (en) 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
JP2000227871A (ja) * 1999-02-05 2000-08-15 Seiko Epson Corp 不揮発性記憶装置、その制御方法、および、情報記録媒体
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6725322B1 (en) * 1999-02-22 2004-04-20 Renesas Technology Corp. Memory card, method for allotting logical address, and method for writing data
KR100704998B1 (ko) 1999-02-26 2007-04-09 소니 가부시끼 가이샤 기록방법, 관리방법 및 기록장치
JP4779183B2 (ja) * 1999-03-26 2011-09-28 ソニー株式会社 再生装置および再生方法
US6401160B1 (en) * 1999-03-31 2002-06-04 Intel Corporation Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory
GB9907280D0 (en) 1999-03-31 1999-05-26 Philips Electronics Nv A method of scheduling garbage collection
US6148354A (en) * 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6467015B1 (en) 1999-04-15 2002-10-15 Dell Products, L.P. High speed bus interface for non-volatile integrated circuit memory supporting continuous transfer
US6535949B1 (en) * 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
US6449625B1 (en) * 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
JP3524428B2 (ja) * 1999-04-20 2004-05-10 東京エレクトロンデバイス株式会社 記憶装置、記憶システム、メモリ管理方法及び記録媒体
US6547150B1 (en) * 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
JP3863330B2 (ja) 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
ATE247296T1 (de) 1999-10-25 2003-08-15 Sun Microsystems Inc Speichersystem mit unterstützung von dateistufenzugriffen und blockstufenzugriffen
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6567307B1 (en) * 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
JP3726663B2 (ja) 2000-09-07 2005-12-14 日産自動車株式会社 電子制御装置の制御データ記憶装置
US6865650B1 (en) 2000-09-29 2005-03-08 Emc Corporation System and method for hierarchical data storage
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6834331B1 (en) 2000-10-24 2004-12-21 Starfish Software, Inc. System and method for improving flash memory data integrity
US20020112116A1 (en) 2000-11-17 2002-08-15 Nelson Mark Edward Methods, systems, and computer program products for storing data in collections of tagged data pieces
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
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6591358B2 (en) 2001-01-26 2003-07-08 Syed Kamal H. Jaffrey Computer system with operating system functions distributed among plural microcontrollers for managing device resources and CPU
JP3631463B2 (ja) * 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
JP2002251310A (ja) 2001-02-21 2002-09-06 Ricoh Co Ltd フラッシュメモリのファイルシステム作成方式
US6571326B2 (en) 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
CN1284356C (zh) 2001-04-06 2006-11-08 索尼公司 数字摄像机和数据传送方法
US6779063B2 (en) * 2001-04-09 2004-08-17 Hitachi, Ltd. Direct access storage system having plural interfaces which permit receipt of block and file I/O requests
JP2002333384A (ja) * 2001-05-10 2002-11-22 Fujikura Ltd 定偏波光ファイバの偏波面の角度ずれ推定方法及び定偏波光ファイバの接続方法
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US20020188592A1 (en) 2001-06-11 2002-12-12 Storage Technology Corporation Outboard data storage management system and method
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
JP4812192B2 (ja) * 2001-07-27 2011-11-09 パナソニック株式会社 フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
GB0123412D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
US6823417B2 (en) 2001-10-01 2004-11-23 Hewlett-Packard Development Company, L.P. Memory controller for memory card manages file allocation table
JP3641230B2 (ja) * 2001-10-22 2005-04-20 株式会社東芝 メモリカードを制御するための装置および方法
US6859856B2 (en) * 2001-10-23 2005-02-22 Flex P Industries Sdn. Bhd Method and system for a compact flash memory controller
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
US6668336B2 (en) * 2001-11-08 2003-12-23 M-Systems Flash Disk Pioneers Ltd. Ruggedized block device driver
US6883114B2 (en) * 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
US20040049627A1 (en) * 2001-11-09 2004-03-11 Flex-P Industries Method and system for controlling compact flash memory
TWI240861B (en) 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
JP2003208352A (ja) 2002-01-17 2003-07-25 Fujitsu Ltd 書き込み回数の制限とウエアレベリングを可能にしたフラッシュメモリ
US6542407B1 (en) 2002-01-18 2003-04-01 Sandisk Corporation Techniques of recovering data from memory cells affected by field coupling with adjacent memory cells
JP2003215495A (ja) 2002-01-28 2003-07-30 Fuji Photo Optical Co Ltd プロジェクタ用光学系およびこれを用いたプロジェクタ装置
US6771536B2 (en) 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
EP1355268B1 (en) * 2002-02-28 2006-04-05 Matsushita Electric Industrial Co., Ltd. Memory card
JP4206688B2 (ja) 2002-04-15 2009-01-14 ソニー株式会社 データ処理装置及びデータ処理方法
US6766432B2 (en) * 2002-05-24 2004-07-20 Sun Microsystems, Inc. Memory management system supporting object deletion in non-volatile memory
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
JP4059711B2 (ja) 2002-06-04 2008-03-12 株式会社日立グローバルストレージテクノロジーズ 多重書き込み型記憶装置
US6865659B2 (en) 2002-06-07 2005-03-08 Sun Microsystems, Inc. Using short references to access program elements in a large address space
KR100453053B1 (ko) 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
KR100541366B1 (ko) * 2002-07-19 2006-01-16 주식회사 하이닉스반도체 고속 데이터 억세스를 위한 디램
TWI246064B (en) * 2002-07-29 2005-12-21 Milsys Ltd Data storage and processing device, electronic appliance, electronic system and method of operating an appliance that responds to a plurality of commands
DE10234971B4 (de) 2002-07-31 2006-08-10 Giesecke & Devrient Gmbh Verfahren und Datenträger zum Erzeugen und Korrigieren von Programmcode
US6979481B2 (en) * 2002-08-19 2005-12-27 Mohawk Paper Mills, Inc. Microporous photo glossy inkjet recording media
US6781877B2 (en) 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US7093071B2 (en) * 2002-10-09 2006-08-15 Intel Corporation Queued copy command
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US7103732B1 (en) * 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US7254668B1 (en) 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US7526599B2 (en) 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US7039788B1 (en) 2002-10-28 2006-05-02 Sandisk Corporation Method and apparatus for splitting a logical block
AU2003274764A1 (en) 2002-10-30 2004-05-25 Matsushita Electric Industrial Co., Ltd. Recording method and recording apparatus
CN1260642C (zh) 2002-11-18 2006-06-21 深圳市朗科科技有限公司 一种向移动存储装置发送命令和数据的方法
EP1435576B1 (en) * 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Method and apparatus for block-oriented memory management provided in smart card controllers
US7433712B2 (en) * 2003-02-06 2008-10-07 Modu Ltd. Multi-access solid state memory devices and a telephone utilizing such
JP4017178B2 (ja) 2003-02-28 2007-12-05 スパンション エルエルシー フラッシュメモリ及びメモリ制御方法
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
JP4245959B2 (ja) 2003-04-09 2009-04-02 日本電信電話株式会社 Icカードにおけるメモリ管理方法、及びicカード
US6865122B2 (en) * 2003-04-11 2005-03-08 Intel Corporation Reclaiming blocks in a block-alterable memory
US7437557B2 (en) * 2003-06-03 2008-10-14 Lg Electronics Inc. Garbage collection system and method for a mobile communication terminal
US7760232B2 (en) * 2003-06-27 2010-07-20 Panasonic Corporation Slave device and communication setting method
JP4318075B2 (ja) * 2003-08-29 2009-08-19 富士フイルム株式会社 Usbファンクション装置
TWI240863B (en) * 2003-09-05 2005-10-01 Megawin Technology Co Ltd Method for efficiently controlling flash memory read/write
JP2005122439A (ja) 2003-10-16 2005-05-12 Sharp Corp デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
EP1704484A2 (en) * 2003-12-30 2006-09-27 SanDisk Corporation Non-volatile memory and method with non-sequential update block management
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
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
US7519639B2 (en) * 2004-01-05 2009-04-14 International Business Machines Corporation Method and apparatus for dynamic incremental defragmentation of memory
US20060004950A1 (en) 2004-06-30 2006-01-05 Jeffrey Wang Flash memory file system having reduced headers
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US8375146B2 (en) * 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
KR100631765B1 (ko) 2004-10-18 2006-10-09 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
US20060101084A1 (en) * 2004-10-25 2006-05-11 International Business Machines Corporation Policy based data migration in a hierarchical data storage system
US7287145B1 (en) * 2004-12-13 2007-10-23 Nvidia Corporation System, apparatus and method for reclaiming memory holes in memory composed of identically-sized memory devices
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
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
US7412560B2 (en) 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US20060161724A1 (en) 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
KR100706242B1 (ko) 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US7849253B2 (en) * 2005-04-04 2010-12-07 Standard Microsystems Corporation Method for fast access to flash-memory media
US20080162782A1 (en) 2005-06-15 2008-07-03 Nagarajan Suresh Using Transacted Writes and Caching Mechanism to Improve Write Performance in Multi-Level Cell Flash Memory
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7627733B2 (en) * 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
EP1910928A2 (en) 2005-08-03 2008-04-16 SanDisk Corporation Non-volatile memory with scheduled reclaim operations
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
JP2009503743A (ja) 2005-08-03 2009-01-29 サンディスク コーポレイション データファイルを直接記憶するメモリブロックの管理
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
WO2007019155A1 (en) 2005-08-03 2007-02-15 Sandisk Corporation Reclaiming data storage capacity in flash memory systems
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7814262B2 (en) * 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070136553A1 (en) * 2005-12-13 2007-06-14 Sinclair Alan W Logically-addressed file storage systems
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7426606B2 (en) * 2006-03-31 2008-09-16 Intel Corporation Method, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system
KR100806343B1 (ko) 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
US7739444B2 (en) * 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114402282A (zh) * 2019-09-17 2022-04-26 美光科技公司 存取存储的元数据以识别存储数据的存储器装置
CN114402282B (zh) * 2019-09-17 2024-04-09 美光科技公司 存取存储的元数据以识别存储数据的存储器装置
US11860777B2 (en) 2019-10-15 2024-01-02 Samsung Electronics Co., Ltd. Storage device and a garbage collection method thereof

Also Published As

Publication number Publication date
CN101233498A (zh) 2008-07-30
US20070033378A1 (en) 2007-02-08
CN101233499A (zh) 2008-07-30
EP1920337A2 (en) 2008-05-14
US20070033330A1 (en) 2007-02-08
TWI421684B (zh) 2014-01-01
TW200745929A (en) 2007-12-16
CN101278267B (zh) 2012-08-22
CN101258473B (zh) 2012-05-30
US7581057B2 (en) 2009-08-25
US20070033376A1 (en) 2007-02-08
CN101233498B (zh) 2014-03-12
US20070033377A1 (en) 2007-02-08
US7590795B2 (en) 2009-09-15
TW200728977A (en) 2007-08-01
US8291151B2 (en) 2012-10-16
CN101288045B (zh) 2012-08-29
CN101258473A (zh) 2008-09-03
US20070033328A1 (en) 2007-02-08
KR20080038364A (ko) 2008-05-06
US7590794B2 (en) 2009-09-15
WO2007019174A2 (en) 2007-02-15
KR101377147B1 (ko) 2014-03-24
WO2007019220A3 (en) 2007-06-07
TW200741526A (en) 2007-11-01
CN101233480B (zh) 2012-08-29
TW200745930A (en) 2007-12-16
EP1920336A2 (en) 2008-05-14
US20070186032A1 (en) 2007-08-09
US7409489B2 (en) 2008-08-05
US20070033325A1 (en) 2007-02-08
US7984084B2 (en) 2011-07-19
JP2009503746A (ja) 2009-01-29
US7450420B2 (en) 2008-11-11
CN101233479B (zh) 2012-09-05
JP4537481B2 (ja) 2010-09-01
WO2007019174A3 (en) 2007-07-19
CN101278267A (zh) 2008-10-01
CN101233479A (zh) 2008-07-30
US20070030734A1 (en) 2007-02-08
US7610437B2 (en) 2009-10-27
JP2009503738A (ja) 2009-01-29
TW200805134A (en) 2008-01-16
US20070033329A1 (en) 2007-02-08
JP4537482B2 (ja) 2010-09-01
US20070033324A1 (en) 2007-02-08
US20070033326A1 (en) 2007-02-08
CN101233480A (zh) 2008-07-30
US20070033327A1 (en) 2007-02-08
US7558905B2 (en) 2009-07-07
US8055832B2 (en) 2011-11-08
CN101288045A (zh) 2008-10-15
TW200731065A (en) 2007-08-16
US7562181B2 (en) 2009-07-14
WO2007019220A2 (en) 2007-02-15

Similar Documents

Publication Publication Date Title
KR101377147B1 (ko) 직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및가비지 수집
US7877539B2 (en) Direct data file storage in flash memories
US8214583B2 (en) Direct file data programming and deletion in flash memories
US7984233B2 (en) Direct data file storage implementation techniques in flash memories
US7610434B2 (en) File recording apparatus
US7774392B2 (en) Non-volatile memory with management of a pool of update memory blocks based on each block&#39;s activity and data order
US7779056B2 (en) Managing a pool of update memory blocks based on each block&#39;s activity and data order
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
KR101430097B1 (ko) 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
US20080091871A1 (en) Non-volatile memory with worst-case control data management
US20080091901A1 (en) Method for non-volatile memory with worst-case control data management
TW200844999A (en) Non-volatile memory with worst-case control data management and methods therefor
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee