KR20080038364A - 직접적인 데이터 파일 저장소를 이용하는 플래시 메모리들에서의 데이터 작동들 - Google Patents
직접적인 데이터 파일 저장소를 이용하는 플래시 메모리들에서의 데이터 작동들 Download PDFInfo
- Publication number
- KR20080038364A KR20080038364A KR1020087004671A KR20087004671A KR20080038364A KR 20080038364 A KR20080038364 A KR 20080038364A KR 1020087004671 A KR1020087004671 A KR 1020087004671A KR 20087004671 A KR20087004671 A KR 20087004671A KR 20080038364 A KR20080038364 A KR 20080038364A
- Authority
- KR
- South Korea
- Prior art keywords
- file
- data
- block
- blocks
- fit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
Abstract
호스트 시스템 데이터 파일들은 파일 내의 데이터의 오프셋들 및 각각의 파일의 특정 아이덴티피케이션을 갖지만, 메모리에 대한 가상 어드레스 공간 또는 임의의 중간 논리적 어드레스를 사용하지 않는 큰 소거 블록 플래시 메모리 시스템으로 직접 기록된다. 파일들이 메모리에 저장되는 디렉토리 정보는 호스트에 의해서라기보다는 오히려, 메모리 시스템의 제어기에 의해 메모리 시스템 내에서 유지된다.
호스트, 데이터, 어드레스 공간, 디렉토리 정보, 메모리 시스템.
Description
본 출원은 일반적으로 호스트 장치 및 메모리 시스템 사이의 인터페이스의 관리를 포함한, 반도체 플래시 메모리와 같은 재프로그래밍 가능한 비휘발성 메모리 시스템들의 작동에 관한 것이며, 특히 공통 대형 메모리 논리적 어드레스 공간(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. 파일 그룹의 나머지가 기록되는, 나중에 프로그램 블록으로 지정되는 소거된 블록.
파일 인덱싱(
도10
A 참조)
파일은 자신이 호스트에 의해 생성될 때, 직접적인 데이터 파일 장치에 의해 할당되는 파일ID에 의해 식별된다.
플랫 디렉토리는 각각의 파일ID에 대한 파일 데이터 포인터 및 파일 정보 포인터를 지정한다.
파일 데이터 포인터는 파일 인덱스 테이블에서 엔트리들의 세트를 식별하며, 상기 각각의 엔트리는 세트가 관련되는 파일에 대한 데이터 그룹을 지정한다.
파일 정보 포인터는 정보 테이블에서 파일에 대한 정보의 스트링을 식별한다:
파일_정보는 호스트에 의해 기록되고 직접적인 데이터 파일 장치에 의해 해석되지 않는다.
파일_정보는 파일이름, 페어런트 디렉토리, 차일드 디렉토리들, 속성들, 권리 정보, 및 파일에 대한 파일 어소시에이션을 포함할 수 있다.
파일 인덱싱 - 인덱싱 구조들
도10B 참조
파일 인덱싱 - 파인 인덱스 테이블(
FIT
) -
도10
D 참조
FIT는 플래시 메모리 내의 파일들에 대한 모든 유효 데이터 그룹들에 대한 엔트리들을 포함한다. 쓸모없는 데이터 그룹들은 FIT에 의해 인덱싱되지 않는다.
FIT는 각각이 물리적 블록으로 맵핑되는 논리적 범위들로 분할된다.
FIT 파일은 파일 오프셋 어드레스 순서의, 파일에 대한 연속적인 엔트리들의 세트이다.
FIT 파일은 물리적 블록 및 논리적 파일 번호를 규정하는 FIT 파일 포인터에 의해 식별된다.
파일 인덱싱 - 파일 인덱스들 갱신(
도10
F 및 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 (14)
- 데이터가 내부에 기록되기 전에 개별적으로 소거되며 개별적인 파일들 내의 오프셋들 및 특정 파일 식별자들의 논리적 어드레스들을 갖는 데이터를 수신하는 메모리 셀들의 다수의 블록들을 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템을 작동시키는 방법에 있어서,제1 파일의 데이터가 적어도 제1 블록 및 제2 블록들에 저장될 때, 상기 제2 블록은 제1 파일의 데이터로 단지 부분적으로 채워지며 제2 블록의 나머지 부분은 소거되며,제1 블록으로부터 재배치되는 제1 파일의 데이터에 응답하여, 제1 파일의 유효 데이터를 제1 블록으로부터 제2 블록의 소거된 부분 내로 카피하는 단계를 포함하며, 상기 유효 데이터는 완전히 소거된 블록 내로는 카피되지 않는 재프로그래밍 가능한 비휘발성 메모리 시스템을 작동시키는 방법.
- 제1항에 있어서, 제2 파일의 데이터는 또한 제1 블록으로부터의 제1 파일의 데이터를 카피하기 전에 제1 블록에 저장되는 재프로그래밍 가능한 비휘발성 메모리 시스템을 작동시키는 방법.
- 제1항에 있어서, 제1 파일의 데이터는 그룹 내에서 데이터의 인접한 논리적 오프셋 어드레스들 및 인접한 물리적 어드레스들 둘 모두를 개별적으로 갖는 다수 의 데이터 그룹들로서 저장되는 재프로그래밍 가능한 비휘발성 메모리 시스템을 작동시키는 방법.
- 데이터가 내부에 기록되기 전에 개별적으로 소거되며 파일 내의 데이터의 오프셋들 및 특정 파일 식별자의 논리적 어드레스들을 갖는 데이터를 파일들로서 수신하는 메모리 셀들의 다수의 블록들을 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법에 있어서,하나 이상의 소거된 블록들의 연속적인 페이지들로 파일의 데이터를 기록하는 단계, 및파일의 데이터가 하나 이상의 소거된 블록들 중 하나의 페이지들 중 일부에만 기록되고 나서, 클로우즈되는 경우에, 또한 하나의 블록에 저장된 파일의 데이터 중 적어도 일부가 쓸모없는 경우에만, 파일을 클로우즈하도록 하는 명령을 수신하는 것에 응답하여 하나의 블록에 대해 가비지 수집 작동이 수행되는 단계를 포함하는 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법.
- 제4항에 있어서, 파일의 데이터를 기록하는 상기 단계는 그룹 내에서 데이터의 인접한 논리적 오프셋 어드레스들 및 인접한 물리적 어드레스들 둘 모두를 개별적으로 갖는 다수의 데이터 그룹들을 기록하는 단계를 포함하는 재프로그래밍 가능한 비휘발성 메모리 시스템의 작동 방법.
- 데이터가 내부에 기록되기 전에 개별적으로 소거되며 개별적인 파일들 내의 오프셋들 및 특정 파일 식별자들의 논리적 어드레스들을 갖는 데이터를 수신하는 메모리 셀들의 다수의 블록들을 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템을 작동시키는 방법에 있어서,소정 파일의 데이터를 제1 블록에 저장하는 단계,소정 파일의 새롭게 수신된 데이터를 제2 블록에 기록하는 단계, 및소정 파일의 데이터를 제1 블록으로부터 제2 블록 내로 카피함으로써 소정 파일의 가비지 수집을 수행하는 단계를 포함하는 재프로그래밍 가능한 비휘발성 메모리 시스템을 작동시키는 방법.
- 제6항에 있어서, 소정 파일의 저장 위치들의 레코드를 그룹 내에서 데이터의 인접한 논리적 오프셋 어드레스들 및 인접한 물리적 어드레스 둘 모두를 개별적으로 갖는 다수의 데이터 그룹들로서 메모리 시스템에서 유지하는 단계를 더 포함하는 프로그래밍 가능한 비휘발성 메모리 시스템을 작동시키는 방법.
- 데이터가 내부에 기록되기 전에 개별적으로 소거되는 메모리 셀들의 다수의 블록들을 갖는 재프로그래밍 가능한 비휘발성 메모리 시스템에 있어서:개별적인 파일들 내의 오프셋들 및 특정 파일 식별자들의 논리적 어드레스들을 갖는 데이터가 수용되고,제1 파일의 데이터가 적어도 제1 및 제2 블록에 저장되는데, 상기 제2 블록 은 제1 파일의 데이터로 단지 부분적으로 채워지며 제2 블록의 나머지 부분은 소거되며,제1 블록으로부터 재배치되는 제1 파일의 데이터에 응답하여, 제1 파일의 유효 데이터가 제1 블록으로부터 제2 블록의 소거된 부분 내로 카피되며, 상기 유효 데이터는 완전히 소거된 블록 내로는 카피되지 않는 재프로그래밍 가능한 비휘발성 메모리 시스템.
- 제8항에 있어서, 제2 파일의 데이터는 또한 제1 블록으로부터 제1 파일의 데이터를 카피하기 전에 제1 블록에 저장되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
- 제8항에 있어서, 제1 파일의 데이터는 그룹 내에서 데이터의 인접한 논리적 오프셋 어드레스들 및 인접한 물리적 어드레스 둘 모두를 개별적으로 갖는 다수의 데이터 그룹들로서 저장되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
- 파일 내의 데이터의 오프셋들 및 특정 파일 식별자의 논리적 어드레스들을 갖는 데이터를 파일들로서 수신할 수 있는 재프로그래밍 가능한 비휘발성 메모리 시스템에 있어서:상기 메모리 시스템은 데이터가 내부에 기록되기 전에 개별적으로 소거되는 메모리 셀들의 다수의 블록들을 포함하고,파일의 데이터가 소거 상태에 있을 때 하나 이상의 블록들의 연속적인 페이지들로 기록되며,파일의 데이터가 하나의 블록 중 하나의 페이지들 중 일부만에 기록되고 나서, 클로우즈되는 경우, 및 하나의 블록에 저장된 파일의 데이터 중 적어도 일부가 쓸모없게 된 경우에만, 파일을 클로우즈하도록 하는 명령을 수신하는 것에 응답하여 하나 이상의 블록들 중 적어도 하나에 기록된 데이터에 대해 가비지 수집 작동이 수행되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
- 제11항에 있어서, 파일의 데이터는 그룹 내에서 인접한 논리적 오프셋 어드레스들 및 인접한 물리적 어드레스들 둘 모두를 개별적으로 갖는 다수의 데이터 그룹들의 형태로 기록되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
- 개별적인 파일들 내의 오프셋들 및 특정 파일 식별자들의 논리적 어드레스들을 갖는 데이터를 수신하는 재프로그래밍 가능한 비휘발성 메모리 시스템에 있어서:상기 메모리 시스템은 데이터가 내부에 기록되기 전에 개별적으로 소거되는 메모리 셀들의 다수의 블록들을 포함하고,소정 파일의 데이터가 제1 블록에 저장되며,소정 파일의 새롭게 수신된 데이터가 제2 블록에 기록되고,소정 파일의 데이터를 제1 블록으로부터 제2 블록 내로 카피함으로써 소정 파일의 가비지 수집이 수행되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
- 제13항에 있어서, 소정 파일의 데이터는 그룹 내에서 인접한 논리적 오프셋 어드레스들 및 인접한 물리적 어드레스들 둘 모두를 개별적으로 갖는 다수의 데이터 그룹들의 형태로 기록되는 재프로그래밍 가능한 비휘발성 메모리 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US70538805P | 2005-08-03 | 2005-08-03 | |
US60/705,388 | 2005-08-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20080038364A true KR20080038364A (ko) | 2008-05-06 |
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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087004662A KR101377147B1 (ko) | 2005-08-03 | 2008-02-27 | 직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및가비지 수집 |
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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101121698B1 (ko) * | 2008-12-22 | 2012-02-28 | 가부시끼가이샤 도시바 | 반도체 기억 장치 및 기억 제어 방법 |
Families Citing this family (538)
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 | キヤノン株式会社 | 画像形成装置、画像形成装置の制御方法及びコンピュータプログラム |
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 |
US11650742B2 (en) * | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
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 |
KR20210044564A (ko) | 2019-10-15 | 2021-04-23 | 삼성전자주식회사 | 스토리지 장치 및 그것의 가비지 컬렉션 방법 |
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)
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 |
-
2005
- 2005-10-25 US US11/259,439 patent/US7984084B2/en active Active
- 2005-10-25 US US11/259,423 patent/US7409489B2/en active Active
- 2005-12-21 US US11/316,577 patent/US20070033326A1/en not_active Abandoned
- 2005-12-21 US US11/316,578 patent/US8291151B2/en active Active
-
2006
- 2006-05-08 US US11/382,228 patent/US7581057B2/en active Active
- 2006-05-08 US US11/382,235 patent/US7558905B2/en active Active
- 2006-05-08 US US11/382,224 patent/US8055832B2/en active Active
- 2006-05-08 US US11/382,232 patent/US7450420B2/en active Active
- 2006-08-01 EP EP06789293A patent/EP1920337A2/en not_active Withdrawn
- 2006-08-01 CN CNA2006800283184A patent/CN101233499A/zh active Pending
- 2006-08-01 CN CN200680028197.3A patent/CN101233498B/zh not_active Expired - Fee Related
- 2006-08-01 KR KR1020087004671A patent/KR20080038364A/ko not_active Application Discontinuation
- 2006-08-01 CN CN200680028003XA patent/CN101233479B/zh not_active Expired - Fee Related
- 2006-08-01 CN CN2006800348564A patent/CN101288045B/zh active Active
- 2006-08-01 WO PCT/US2006/030093 patent/WO2007019174A2/en active Application Filing
- 2006-08-01 CN CN2006800284045A patent/CN101258473B/zh not_active Expired - Fee Related
- 2006-08-01 CN CN2006800281668A patent/CN101233480B/zh not_active Expired - Fee Related
- 2006-08-01 JP JP2008525181A patent/JP4537482B2/ja not_active Expired - Fee Related
- 2006-08-01 WO PCT/US2006/030242 patent/WO2007019220A2/en active Application Filing
- 2006-08-01 JP JP2008525155A patent/JP4537481B2/ja not_active Expired - Fee Related
- 2006-08-01 EP EP06789194A patent/EP1920336A2/en not_active Withdrawn
- 2006-08-01 CN CN2006800360852A patent/CN101278267B/zh active Active
- 2006-08-02 US US11/462,001 patent/US7562181B2/en active Active
- 2006-08-02 US US11/462,013 patent/US7590795B2/en active Active
- 2006-08-02 US US11/462,007 patent/US7590794B2/en active Active
- 2006-08-02 US US11/461,997 patent/US7610437B2/en active Active
- 2006-08-03 TW TW095128507A patent/TW200805134A/zh unknown
- 2006-08-03 TW TW095128508A patent/TW200731065A/zh unknown
- 2006-08-03 TW TW095128497A patent/TW200741526A/zh unknown
- 2006-08-03 TW TW095128517A patent/TW200745930A/zh unknown
- 2006-08-03 TW TW095128505A patent/TWI421684B/zh not_active IP Right Cessation
- 2006-08-03 TW TW095128512A patent/TW200745929A/zh unknown
-
2008
- 2008-02-27 KR KR1020087004662A patent/KR101377147B1/ko not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101121698B1 (ko) * | 2008-12-22 | 2012-02-28 | 가부시끼가이샤 도시바 | 반도체 기억 장치 및 기억 제어 방법 |
Also Published As
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 | |
US7774392B2 (en) | Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order | |
US7779056B2 (en) | Managing a pool of update memory blocks based on each block's activity and data order | |
US20080091871A1 (en) | Non-volatile memory with worst-case control data management | |
KR20070060070A (ko) | 최적화된 순차적인 클러스터 관리용 에프에이티 분석 | |
KR101430097B1 (ko) | 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법 | |
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 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |