KR100389241B1 - 비휘발성 메모리에서의 가변 크기 데이터의 효율적인관리를 위한 동적 할당 - Google Patents

비휘발성 메모리에서의 가변 크기 데이터의 효율적인관리를 위한 동적 할당 Download PDF

Info

Publication number
KR100389241B1
KR100389241B1 KR10-2000-7011692A KR20007011692A KR100389241B1 KR 100389241 B1 KR100389241 B1 KR 100389241B1 KR 20007011692 A KR20007011692 A KR 20007011692A KR 100389241 B1 KR100389241 B1 KR 100389241B1
Authority
KR
South Korea
Prior art keywords
data
sequence table
fragment
memory
instance
Prior art date
Application number
KR10-2000-7011692A
Other languages
English (en)
Other versions
KR20010042905A (ko
Inventor
시데보라엘.
하스번로버트엔.
던랩제프리에이.
델포조필립제이.써드
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20010042905A publication Critical patent/KR20010042905A/ko
Application granted granted Critical
Publication of KR100389241B1 publication Critical patent/KR100389241B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

수신된 데이터를 저장하는 방법이 개시된다. 기억 구조가 최소 수의 인스턴스(m), 최대 단일 인스턴스 크기(s*g) 및 할당 입도(g)를 포함하는 복수의 임계치에 대해 데이터의 상대적 크기(z)에 따라 데이터에 대해 선택된다. 만일 z가 제1 임계치 미만이면(920), 다중 인스턴스 오브젝트 구조(922) 내에 데이터가 저장된다. 만일 z가 제2 임계치 미만이면(930),단일 인스턴스 오브젝트로서 데이터가 저장된다(단계 932). 만일 z가 제2 임계치를 초과하면, 데이터가 프래그먼트되어, 비휘발성 메모리의 복수의 블록들 중에 저장된다(942). 만일 프래그먼트의 수가 최대 시퀀스 테이블 크기 미만이면, 이때 데이터 프래그먼트의 순서와 위치를 가리키는 시퀀스 테이블이 비휘발성 메모리에 저장된다. 만일 데이터 프래그먼트의 수가 최대 시퀀스 테이블 크기를 초과하면(940), 이때 시퀀스 테이블 프래그먼트의 순서와 위치를 가리키는 복수의 시퀀스 테이블 프래그먼트 및 그룹 테이블이 비휘발성 메모리에 기억된다(944).

Description

비휘발성 메모리에서의 가변 크기 데이터의 효율적인 관리를 위한 동적 할당{DYNAMIC ALLOCATION FOR EFFICIENT MANAGEMENT OF VARIABLE SIZED DATA WITHIN A NONVOLATILE MEMORY}
셀룰러 전화 및 페이저와 같은 통신은 데이터 및 코드 모두를 저장하는 능력을 필요로 하고 있다. 또한, 이들 통신 장치는 전형적으로 몇 가지 종류의 작업 메모리를 필요로 한다.
이들 통신 장치는 일반적으로 비휘발성 메모리에 코드 및 적어도 일부의 데이터를 저장하는 것을 필요로 한다. 예를 들어, 일련 번호, 인증 코드, 자주 거는 번호 등이 비휘발성 메모리에 저장될 수 있는 데이터의 예이다. 코드 및 데이터가 서로 다른 주파수로 갱신되었다고 가정할 때, 통신 장치는 흔히 데이터 및 코드를 저장하기 위한 서로 다른 유형의 비휘발성 메모리를 사용하였다. 결국, 종래의 통신 장치는 전형적으로 코드 기억용의 한 종류의 비휘발성 메모리, 데이터 기억용의 다른 종류의 비휘발성 메모리, 및 작용 메모리용의 정적 랜덤 액세스 메모리와 같은 랜덤 액세스 메모리를 포함하였다.
한 종류의 비휘발성 메모리는 플래시 전기적으로 소거가능 프로그램 가능 판독 전용 메모리(플래시 EEPROM)이다. 플래시 EEPROM(이하, "플래시 메모리"라 함)은 전형적으로 단일 트랜지스터 메모리 셀의 블록으로서 정렬되어 있다. 비록 플래시 메모리가 재기록가능하지만, 메모리 셀이 먼저 소거되지 않는 한 재프로그램될 수 없다. 더우기, 셀들은 블록으로만 소거 가능하다. 따라서 하나의 셀을 소거하기 위해서는, 셀의 전체 블록이 소거되어야만 한다. 플래시 메모리를 갱신하는 것은 몇 가지 형태의 매체 관리자가 블록으로부터 유효 정보를 복사하고, 블록을 소거하고, 동일하거나 다른 블록으로 갱신 정보는 물론 유효 정보를 기록하는 처리를 할 필요가 있다. 소거, 기록 등의 처리는 비교적 시간이 많이 걸린다.
다른 종류의 비휘발성 메모리는 두 개의 트랜지스터 메모리 셀을 갖는 전기적으로 소거가능 프로그램가능 판독 전용 메모리(EEPROM)이다. 비록 EEPROM이 플래시 메모리와 유사한 소거 가능한 블록으로 정렬될 수 있지만, 두 개의 트랜지스터 EEPROM은 상대적으로 갱신하기 쉽고, 플래시 메모리가 갱신을 필요로 하는 첨단 매체 관리를 필요로 하지 않는다. 그러나, 값을 두 트랜지스터 EEPROM 셀에 기록하는 것은 소거된 단일 트랜지스터 플래시 메모리 셀의 프로그램을 수행하는 것보다 상당히 많은 시간을 필요로 한다.
한 가지 종래 기술의 통신 장치 메모리 구조는 코드 기억용 플래시 메모리,데이터 기억용 EEPROM, 및 작용 메모리용의 랜덤 액세스 메모리를 포함하다.
다양한 비휘발성 메모리의 사용은 설계 및 제조 비용은 물론 폼 팩터(form factor) 크기를 증가시키는 경향이 있다. 페이저와 셀룰러 전화기와 같은 퍼스널 통신 장치는 흔히 그 크기, 특징, 비용 및 전력 소비율에 기초하여 차별화되고 있다.
더우기, 새로운 특징들이 끊임없이 부가됨에 따라 데이터에 대한 코드의 비율이 변할 필요가 있을 수 있다. 두 가지 종류 모두의 비휘발성 메모리에 대해 잉여의 기억공간을 제공하는 것은, 코드 및 데이터 모두에 대한 기억 조건이 성장하는 것으로 예상되지 않는 한은 장치의 비용을 증가시킬 뿐만 아니라 소비적이다. 코드 및 데이터를 서로 다른 종류의 비휘발성 메모리에 기억함으로써, 코드에 사용되는 비휘발성 메모리 내의 잉여의 기억 용량을 데이터를 저장하는데 이용할 수 없다. 유사하게, 데이터에 사용되는 비휘발성 메모리 내의 잉여의 기억 용량은 코드를 기억하는데 이용할 수 없다. 따라서 설계는 코드에 할당된 비휘발성 메모리 대 데이터에 할당된 메모리의 비율의 변화를 용이하게 수용할 수 없다.
본 발명은 컴퓨터 메모리 기억 시스템 분야에 관한 것이다. 보다 상세하게는, 본 발명은 비휘발성 메모리에서의 가변 크기 데이터(variable sized data)의 효율적인 관리를 위한 동적 할당에 관한 것이다.
본 발명은 예시로서 설명된 것이며 유사한 참조번호가 유사한 구성요소를 지칭하는 첨부하는 도면의 특징에 제한되어 있지 않다.
도 1은 동일한 모놀리식 비휘발성 메모리 장치 내의 코드 및 데이터의 저장을 도시한 도면.
도 2는 비휘발성 메모리의 블록에의 오브젝트(objects)의 저장을 도시한 도면.
도 3은 오브젝트 헤더 구조도.
도 4는 다중 인스턴스(instance) 기억 구조도.
도 5는 시퀀스 테이블 엔트리 및 상태 값을 도시한 도면.
도 6은 연관된 데이터 프래그먼트의 순서와 위치를 식별하기 위한 시퀀스 테이블의 사용을 도시한 도면.
도 7은 연관된 시퀀스 테이블 프래그먼트의 순서와 위치를 식별하기 위한 그룹 테이블의 사용을 도시한 도면.
도 8은 데이터 룩업 테이블을 생성하는 방법을 도시한 도면.
도 9는 최소의 인스턴스 수 (m), 할당 입도(allocation granularity)(g), 최대 단일 인스턴스 크기(s*g), 및 최대 시퀀스 테이블을 포함하는 복수의 임계치에 대한 데이터의 크기(z)에 따라 기억 구조를 선택하는 방법을 도시한 도면.
도 10은 단일 인스턴스 오브젝트를 기록하는 방법을 도시한 도면.
도 11 및 12는 복수의 인스턴스 오브젝트를 기록하는 방법을 도시한 도면.
도 13 내지 도 15는 복수의 데이터 프그래먼트로서 오브젝트를 저장하는 방법을 도시한 도면.
도 16은 효율적인 공간이 최종 시퀀스 테이블 프래그먼트에 이용 가능할 때 프래그먼트된 오브젝트에 부가하는 방법을 도시한 도면.
도 17 내지 도 19는 프래그먼트된 오브젝트의 선택된 프래그먼트를 교체하는 방법을 도시한 도면.
도 20은 비휘발성 메모리 내의 공간을 교체하는 방법을 도시한 도면.
발명의 요약
공지된 시스템 및 방법에 비추어, 비휘발성 메모리 내의 크고 작은 데이터의 효율적인 관리를 위한 복수의 기억 구조가 제공된다. 비휘발성 메모리에 데이터를 기억하는 방법은 저장될 데이터를 수신하는 단계를 포함한다. 기억 구조는 최소의 인스턴스 수(m), 최대 단일 인스턴스 크기(s*g), 및 할당 입도(allocation granularity)(g)를 포함하는 복수의 임계치에 대한 데이터의 상대적 크기(z)에 따라 데이터를 위해 선택된다. 이때 이 데이터는 비휘발성 메모리 내의 선택된 구조에 저장된다.
한 실시예에서, 만일 z가 제1 임계치 미만이면, 이 데이터는 복수의 인스턴스 오브젝트 구조에 저장된다. 만일 z가 제2 임계치 미만이면, 이 데이터는 단일 인스턴스 오브젝트로서 기억된다.
한 실시예에서, 이 데이터는 만일 z가 제2 임계치를 초과하면 프래그먼트된다. 다음에, 이 프래그먼트된 데이터는 복수 블록의 비휘발성 메모리들 중에 기억될 수 있다.
만일 프래그먼트의 수가 최대 시퀀스 테이블 크기 미만이면, 이때 데이터 프래그먼트의 순서와 위치를 표시하는 시퀀스 테이블이 비휘발성 메모리에 기억된다.
만일 데이터 프래그먼트의 수가 최대 시퀀스 테이블 크기를 초과하면, 이때 복수의 시퀀스 테이블 프래그먼트 및 그룹 테이블이 비휘발성 메모리에 기억된다. 이 그룹 테이블은 비휘발성 메모리 내의 데이터 프래그먼트의 순서와 위치를 번갈아 가리키는 시퀀스 테이블 프래그먼트의 순서와 위치를 표시한다.
본 발명의 다른 특징 및 장점은 이하의 첨부하는 도면 및 상세한 설명으로부터 명확할 것이다.
도 1은 모놀리식 비휘발성 메모리 장치(110) 내의 코드 및 데이터 모두의 저장을 도시한 도면이다. 한 실시예에서, 비휘발성 메모리는 개별적으로 소거가능한 복수의 블록을 구비한다. 데이터 및 코드부에 할당된 공간의 양은, 데이터 및 코드부가 동일한 블록을 공유하지 않는 한 하나 이상의 블록에 걸칠 수 있다.
비휘발성 메모리 장치(110)는 부트 코드(112)부, 데이터 기억(114)부, 잉여 블록(116), 및 코드 기억(118)부를 갖는다. 잉여 블록(116)은 비휘발성 메모리 장치의 실제의 물리적 블록이다. 이하에 설명하는 바와 같이, 잉여 블록이 데이터부(114) 내의 임의의 물리적 블록일 수 있도록 논리적 블록 수가 사용된다.
잉여 블록(116)은 다른 블록을 소거하여 무효한 내용에 의해 사용되는 공간을 없애기 전에 다른 블록의 유효한 내용을 복구하는 재회수 처리 동안에 사용된다. 플래시 메모리의 특성 및 블록을 소거하는데 필요한 상대적으로 긴 시간으로인해, 대체 데이터가 비휘발성 메모리 내의 새로운 위치에 기록된다. 블록 내의 임의의 유효 데이터를 잉여 블록에 복사한 후에 블록을 소거함으로써 오래된 버전의 데이터가 무효화되고, 무효 데이터에 연관된 공간이 재회수될 수 있다. 소거 후에, 소거된 블록은 새로운 잉여 블록이 된다.
도 2는 데이터가 어떻게 식별되고 도 1의 데이터 기억(114)부에 할당된 개별적인 블록중의 하나에 어떻게 저장되는 지를 도시한 도면이다. 할당될 수 있는 최소의 공간 양을 단위 입도(unit granularity) 또는 간단히 입도라고 한다. 저장된 데이터는 하나 이상의 입도 단위에 걸쳐있는 개별적인 영역에 할당된다. 이들 영역의 각각을 오브젝트라고 한다. 예를 들어, 블록(210)은 오브젝트 1, 2 및 3을 포함한다. 블록 내의 각각의 오브젝트는 오브젝트 헤더에 의해 식별된다. 따라서 예를 들어, 헤더 1(212)은 오브젝트 1(222)을 식별하고, 헤더 2(214)는 오브젝트 2(224)를 식별하고, 헤더 3(216)은 오브젝트 3(226)을 식별한다.
헤더는 블록의 첫 번째 끝에서 블록의 두 번째 끝까지 연속해서 처리하는 선택된 블록에 기록된다. 각각의 헤더에 연관된 오브젝트는 블록의 첫 번째 끝에서 블록의 두 번째 끝까지 연속해서 처리하는 블록에 기록된다. 따라서 헤더 및 오브젝트극 부수적인 오브젝트 및 헤더가 블록(210)에 기억됨에 따라 서로를 향해 "성장(grow)"한다.
각각의 블록(210)은 또한 블록 정보 구조(240)를 갖는다. 블록 정보 구조(240)는 논리적 블록 수(244)를 유지하고, 블록(220)에 대한 회수 상태(242)를 추적한다. 논리적 블록 수의 사용은 정보가 실제의 물리적 블록 연속성 없이 논리적으로 연속해서 저장되는 것을 가능하게 한다.
회수 동안, 회수하기로 예정되어 있는 블록의 유효 내용은, 회수하기로 예정되어 있는 블록이 삭제될 수 있기 전에 다른 블록으로 복사되어야만 한다. 한 실시예에서, 블록 정보 구조는 회수 동안 복사되는 물리적 블록을 가리키는 물리적 복사(246)를 포함한다. 이는 예를 들어, 전원이 나가 복사가 중단될 때 복구 처리에 유용하다. 또한, 물리적 복사(246) 필드는 예를 들어, 전원이 나가 삭제동작이 중단된 경우에 삭제 처리에 있을 수 있는 임의의 블록을 식별하는데 도움이 된다.
블록 정보 구조(240)는 또한 무결성 필드(248)를 포함한다. 무결성 필드(integrity field)는 블록 정보 구조(210) 자체의 무결성을 보장하는데 사용된다.
도 3은 오브젝트 데이터 구조(300)의 한 실시예를 도시한다. 헤더 데이터 구조는 식별자(302), 상태(304), 종류(306), 크기(308), 및 오프셋(310) 필드를 포함한다. 식별자(302) 필드는 연관된 오브젝트를 식별한다. 예를 들어, 식별자는 데이터에 대한 이름 또는 번호(즉, 파라메타 "X" 또는 "5631")일 수 있다.
상태(304) 필드는 헤더와 오브젝트의 상태를 추적하는데 사용된다. 헤더와 오브젝트의 상태는, 저손실 복구를 수행할 때는 물론 이하에 설명하는 RAM 룩업 테이블을 구축할 때 사용된다. 테이블(320)은 상태 필드에 대한 상태 할당의 한 실시예를 가리킨다.
크기(308)는 다수의 할당 단위로의 오브젝트의 크기를 가리킨다. 따라서 만일 최소 할당 단위(즉, 입도)가 4Kb이면, 8의 크기는 오브젝트의 크기가 32Kb이라는 것을 가리킨다.
오프셋(310)은 블록 내의 오브젝트의 위치를 식별하는데 사용된다. 한 실시예에서, 오프셋(310)은 오브젝트의 오프셋을 입도 단위의 블록의 바닥에서부터 측정된 것으로서 가리키는 개척자이다.
타입(306)은 오브젝트의 종류 및 구조를 가리키는데 사용된다. 한 실시예에서, 종류(306)의 제1 부분은 선정된 오브젝트 구조를 식별하는데 사용된다. 종류(306)의 제2 부분은 선정된 오브젝트 구조의 내용(즉, 해당 구조 내에 저장된 데이터의 종류)을 식별한다. 선정된 데이터 구조는 오브젝트의 예상되는 휘발성의 편차는 물론 오브젝트 크기의 범위를 수용하도록 설계되어 있다.
데이터의 종류는 일반적으로 어플리케이션에 특정하다. 한 실시예에서, 비휘발성 메모리 장치는 셀룰러 전화기 또는 페이저와 같은 무선 통신 장치를 지원한다. 통신 어플리케이션을 위한 데이터 종류의 예는 데이터 파라메타(즉, 발신지, 목적지, 및 통신 길이를 추적하기 위한), 데이터 스트림, 전화 번호, 팩시밀리 번호 등 또는 다른 사용자 정의 종류를 포함한다.
테이블 번호(312)는 프래그먼트된 데이터의 위치를 추적하는데 사용되는 테이블에 프래그먼트된 데이터를 연관시키는데 사용된다. 테이블 번호(312)의 사용은 이하에 설명되는 바와 같이 프래그먼트된 오브젝트를 변경할 때 발생하여야만 하는 갱신의 양을 최소화하는데 사용된다.
한 실시예에서, 선정된 오브젝트 구조는 다중 인스턴스 오브젝트, 단일 인스턴스 오브젝트, 데이터 프래그먼트, 시퀀스 테이블, 시퀀스 테이블 프래그먼트, 및그룹 테이블을 포함한다.
단일 인스턴스 오브젝트는 블록 내에 완전히 맞을 수 있다. 단일 인스턴스 오브젝트는 복수의 할당 입도로 할당된다. 단일 인스턴스 오브젝트는 블록에 걸쳐있는 것이 허용되지 않는다. 단일 인스턴스 오브젝트로서 저장된 데이터를 검색하기 위해서는 단일 인스턴스 오브젝트의 위치를 결정하기 위해 헤더를 조사한 다음, 단일 인스턴스 오브젝트 자체를 검색하는 것을 필요로 한다.
다중 인스턴스 단위는 오브젝트를 저장하기 위해 본래 할당된 동일한 공간을 사용하여 수회 갱신될 수 있는 비교적 작은 크기의 데이터를 저장하도록 설계되어 있다.
도 4는 복수의 인스턴스 오브젝트(400)의 구조를 도시한다. 동일한 할당 공간 내에 복수의 인스턴스를 제공하는 것은 작은 데이터 파라메타를 관리하는 오버헤드를 줄이고, 갱신의 성능을 개선한다.
복수의 인스턴스 오브젝트(400)는 다중 인스턴스 오브젝트 내의 인스턴스의 수 및 각 인스턴스의 크기를 가리키는 인스턴스 정보(410)를 포함한다. 인스턴스 정보(400) 다음에는 복수의 상태 필드(422, 432, 442 및 452)가 온다. 각각의 상태 필드는 오브젝트의 인스턴스와 연관되어 있다. 따라서, 예를 들어 상태(422)가 인스턴스(420)에 인가된다. 상태(432)는 인스턴스(430)에 인가되고, 상태(442)는 인스턴스(440)에 인가되고, 상태(452)는 인스턴스(450)에 인가된다. 다양한 상태 조건에 대한 상태 할당의 한 실시예가 테이블(460)에 개시되어 있다.
다른 오브젝트 구조는 데이터 프래그먼트이다. 일부 오브젝트는 복수의 블록의 이용 가능한 공간 내에 저장될 수 있도록 프래그먼트되어야만 한다. 이는 예를 들어, 오브젝트가 블록보다 클 때 필요할 수 있다. 선택적으로, 만일 오브젝트가 소정의 블록 내에 남아 있는 공간보다 클 때 프래그먼트화가 필요할 수 있다. 따라서, 물리적 블록 경계에 걸쳐있는 임의의 데이터는 복수의 데이터 프래그먼트로 프래그먼트될 것이다. 이들 각각의 프래그먼트를 데이터 프래그먼트 오브젝트라고 한다. 데이터 프래그먼트 오브젝트는 본래의 데이터의 프래그먼트를 포함하지만, 어떠한 다른 오브젝트 정보도 포함하지 않는다. 데이터 프래그먼트의 순서화된 리스트를 포함하는 시퀀스 테이블은 복수의 데이터 프래그먼트로부터 본래의 데이터를 재조립하는데 사용된다.
도 5는 각 엔트리의 시퀀스 테이블 프래그먼트 및 상태 값의 구조를 도시한 도면이다. 엔트리는 논리적 블록 번호(512), 엔트리 상태(514), 인스턴스(516), 데이터 프래그먼트 크기(518), 적용 가능한 데이터 프래그먼트의 구 버전의 크기(520) 및 물리적 인덱스(522)에 대한 필드를 포함한다. 엔트리 상태에 사용되는 상태 값이 테이블(560)에 도시되어 있다. 인스턴스 값은 오브젝트가 동일한 블록에 저장된 하나의 데이터 프래그먼트 이상을 가질 때 특정 데이터 프래그먼트를 식별하는데 사용된다.
도 6은 시퀀스 테이블과 연관된 모든 데이터 프래그먼트를 조립하기 위한 처리는 물론 시퀀스 테이블(616)을 도시한다. 따라서 예를 들어, 파라메타 X는 물리적 블록(610 및 620)에 위치되어 있는 복수의 데이터 프래그먼트(614,626 및 628)로 프래그먼트되어 있다. 대응하는 헤더(612,622 및 624)는 시퀀스 테이블(616)을식별하도록 설정된 그들 각각의 테이블 번호(312)를 가지고 있다.
시퀀스 테이블(616)은 완전한 파라메타 X를 재조립하는데 사용되는 논리적 블록 번호 및 데이터 프래그먼트 인스턴스를 열거한다. 동일한 블록 내의 복수의 파라메타 X 데이터 프래그먼트는 연관되어 있는 특정 시퀀스 테이블은 물론 해당 블록 내의 인스턴스 또는 발생에 의해 구별된다. 시퀀스 테이블 내의 엔트리의 순서는, 완전한 파라메타 X를 형성하기 위해 데이터 프래그먼트가 조립되어야만 하는 순서를 가리킨다.
예를 들어, 파라메타 X 오브젝트를 재조립하기 위해서는, 파라메타 X 시퀀스 테이블 헤더에 대해 검색이 수행된다(단계①로 표시). 한 실시예에서, 파라메타 X 시퀀스 테이블 헤더의 위치는 파라메타의 검색을 빠르게 하기 위해 데이터 룩업 테이블에 기억된다. 이 경우에, 데이터 룩업 테이블은, 파라메타 X 시퀀스 테이블 헤더가 논리적 블록 0(610)에 위치한다는 것을 가리킨다.
파라메타 X 시퀀스 테이블 헤더를 위치시키기 위해 논리적 블록 0이 스캔된다. 파라메타 X 시퀀스 테이블 헤더는 파라메타 X 시퀀스 테이블(616)의 위치를 식별한다(단계 ②에 의해 표시). 시퀀스 테이블(616)의 각각의 엔트리는 파라메타 X를 재구성하는데 필요한 시퀀스 테이블에 연관된 데이터 프래그먼트의 논리적 블록과 인스턴스를 식별한다.
시퀀스 테이블(616)은, 첫 번째 데이터 프래그먼트가 논리적 블록 0에 위치한 시퀀스 테이블(616)에 연관된 파라메타 X 데이터 프래그먼트의 첫 번째 인스턴스이다. 따라서, 논리적 블록 0(610) 내의 616의 테이블 번호를 갖는 파라메타 X데이터 프래그먼트를 식별하는 첫 번째 헤더를 검색함으로써 첫 번째 데이터 프래그먼트를 찾을 수 있다(단계③에 의해 표시). 이 경우에, 논리적 블록 0 내의 시퀀스 테이블(616)과 연관된 파라메타 X 데이터 프래그먼트를 식별하는 첫 번째 헤더는 파라메타 X 데이터 프래그먼트(614)를 찾는데 사용된다(단계 ④에 의해 표시).
시퀀스 테이블(616)을 참조하면, 다음 파라메타 X 데이터 프래그먼트는 논리적 블록 1 내의 두 번째 파라메타 X 데이터 프래그먼트인 것으로 판정된다. 따라서 논리적 블록 1은 파라메타 X 데이터 프래그먼트 헤더의 두 번째 발생을 찾도록 검색될 수 있다(단계⑤로 표시). 헤더(624)는 단계⑥으로 표시된 바와 같이 파라메타 X 데이터 프래그먼트(626)의 위치를 식별한다.
최종 파라메타 X 데이터 프래그먼트는 논리적 블록 1(620) 내의 첫 번째 파라메타 X 데이터 프래그먼트인 것으로 판정된다. 따라서 논리적 블록 1이 파라메타 X 데이터 프래그먼트 헤더의 첫 번째 발생을 찾기 위해 검색된다. 본 예에서, 파라메타 X 데이터 프래그먼트 헤더의 첫 번째 발생은 단계⑦로 표시한 바와 같이 헤더(622)이다. 파라메타 X 데이터 프래그먼트 헤더(622)는 단계 ⑧로 표시한 바와 같이 세 번째 및 최종 파라메타 X 데이터 프래그먼트(628)의 위치를 식별한다.
만일 파라메타가 많은 수의 데이터 프래그먼트를 갖는다면, 시퀀스 테이블은 물리적 블록 경계에 걸칠 필요가 있다. 선택적으로, 데이터 프래그먼트의 수는 선정된 임계치를 초과하는 시퀀스 테이블 크기를 필요로 할 수 있다. 다수의 논리적 또는 물리적 블록에 걸쳐 연속성을 유지하거나 또는 시퀀스 테이블이 선정된 임계치를 벗어나 커지는 것을 허용하는 시도보다는, 다른 시퀀스 테이블이 생성된다. 한 실시예에서, 이와 같이 선정된 임계치는 단일 인스턴스 오브젝트에 허용된 최대 크기이다. 시퀀스 테이블의 크기가 커짐에 따라, 블록을 갱신할 때 시퀀스 테이블을 복사하는데 필요한 시간 양도 커진다.
그룹 테이블은 시퀀스 테이블이 데이트 프래그먼트를 추적하는데 사용되는 것과 훨씬 동일한 방식으로 개별적인 시퀀스 테이블을 추적하는데 사용된다. 그룹 테이블 및 다수의 시퀀스 테이블의 사용은 또한 시퀀스 테이블의 복사를 관리하는데 필요한 시간을 감소시키는 경향이 있다. 그룹 테이블은 큰 시퀀스 테이블을 복수의 보다 작은 시퀀스 테이블 프래그먼트로 효율적으로 프래그먼트한다. 복수의 시퀀스 테이블이 그룹 테이블과 결합하여 사용될 때, 개별적인 시퀀스 테이블이 시퀀스 테이블 프래그먼트로서 식별된다.
도 7은 시퀀스 테이블 프래그먼트와 결합한 그룹 테이블(716)의 사용을 도시한다. 그룹 테이블(716)이 시퀀스 테이블 구조와 유사하지만, 식별된 프래그먼트는 오브젝트에 연관된 데이터 프래그먼트의 위치와 순서를 스스로 식별하는 시퀀스 테이블 프래그먼트이다. 이와 같이 그룹 테이블(716)의 각각의 엔트리는 데이터 프래그먼트의 그룹을 간접적으로 식별한다.
파라메타 X를 검색하기 위해, 파라메타의 그룹 테이블 헤더를 먼저 찾는다. 이 경우에, 논리적 블록 0(710)에서 파라메타 X 그룹 테이블 헤더를 구한다. 그룹 테이블 헤더(712)는 그룹 테이블(716)을 식별한다. 그룹 테이블(716)의 각각의 엔트리는 시퀀스 테이블 프래그먼트의 위치와 인스턴스를 식별한다.
그룹 테이블(716)은, 첫 번째 시퀀스 테이블 프래그먼트가 논리적 블록 0에 위치된 파라메타 X 시퀀스 테이블 프래그먼트의 첫 번째 인스턴스이라는 것을 가리킨다. 이는 논리적 블록 0(710) 내의 파라메타 X 시퀀스 테이블 프래그먼트를 식별하는 첫 번째 헤더를 검색함으로써 찾을 수 있다. 이 경우에, 논리적 블록 0 내의 파라메타 X 시퀀스 테이블 프래그먼트를 식별하는 첫 번째 헤더는 헤더(718)이다. 헤더(718)는 이때 파라메타 X 시퀀스 프래그먼트(714)를 찾는데 사용될 수 있다.
시퀀스 테이블 프래그먼트(714)는 첫 번째 데이터 프래그먼트가 논리적 블록 1(720)에 위치한 시퀀스 테이블 프래그먼트(714)에 연관된 파라메타 X 데이터 프래그먼트의 첫 번째 인스턴스라는 것을 가리킨다. 따라서 논리적 블록(720)은 시퀀스 테이블(714)을 가리키도록 설정된 테이블 번호를 갖는 파라메타 X 데이터 프래그먼트 헤더(724)의 첫 번째 인스턴스를 찾기 위해 검색된다. 찾아진 헤더는 파라메타 X 데이터 프래그먼트(730)의 위치를 가리킨다. 시퀀스 테이블(714)에 연관된 두 번째 및 세 번째 데이터 프래그먼트는 도시되어 있지 않다.
그룹 테이블에 표시된 두 번째 및 세 번째 시퀀스 테이블 프래그먼트도 이와 유사하게 그룹 테이블에 의해 가리켜진 순서로 헤더(726,722)를 찾은 다음, 헤더를 사용하여 각각의 두 번째(726) 및 세 번째(732) 시퀀스 테이블 프래그먼트를 찾음으로써 찾을 수 있다. 소정 시퀀스 테이블 내의 엔트리는 소정의 동일한 시퀀스 테이블을 식별하는 헤더를 갖는 데이터 프래그먼트 인스턴스만을 참조한다. 따라서, 예를 들어, 서로 다른 시퀀스 테이블에 연관된 많은 데이터 프래그먼트를 동일한 블록에서 찾을 수 있다. 그러나, 오브젝트를 재조립하기 위해 시퀀스 테이블을 가로지를 때, 동일한 시퀀스 테이블 프래그먼트를 공유하는 것 이외의 인스턴스는 무시된다.
한 실시예에서, 데이터 룩업 테이블은 비휘발성 메모리 장치를 액세스하는 성능을 개선하는데 사용된다. 컴퓨터 시스템에 구현될 때, 룩업 테이블은 비휘발성 메모리 내에 저장된 데이터를 액세스하는 것을 용이하게 할 수 있다. 데이터 룩업 테이블은 컴퓨터 시스템의 초기화 동안 RAM에 구축되어, 기록 및 소거 동작 동안 적절히 갱신된다. 데이터 룩업 테이블은 특정 식별자를 갖는 데이터에 대한 선택된 헤더와 연관된 블록 및 오프셋에 대한 포인터를 제공한다.
한 실시예에서, 데이터 룩업 테이블은 데이터에 대한 인덱스로서 식별자를 사용한다. 대체 실시예에서, 데이터 룩업 테이블은 데이터에 대한 인덱스로서 식별자와 종류 모두를 사용한다. 후자의 실시예는 식별자 및 종류의 조합이 독특하는 한 독특하지 않은 식별자를 사용하는 것을 허용한다. 더우기, 후자의 실시예는 데이터의 식별자보다는 데이터의 종류에 기초한 신속한 검색을 가능하게 한다.
데이터 룩업 테이블을 구축하는 처리의 한 실시예가 도 8에 도시되어 있다. 초기화는 단계(810)에서 시작한다. 단계(820)에서 유효한 단일 인스턴스 헤더, 시퀀스 테이블 헤더, 다수 인스턴스 헤더 및 그룹 테이블 헤더에 대해 물리적 블록들이 스캔된다. 데이터 프래그먼트는 무시된다. 유사하게, 시퀀스 테이블 프래그먼트도 무시된다.
만일 단일 인스턴스 헤더, 시퀀스 테이블 헤더, 다중 인스턴스 헤더 또는 그룹 테이블 헤더가 발견되면(단계 830), 이때 헤더(즉, 논리적 블록 0, 파라메타 X)에 연관된 데이터에 대한 종류는 물론 논리적 블록 번호가 단계(840)에서 룩업 테이블에 저장된다. 한 실시예에서, 식별자는 룩업 테이블에 명시적으로 저장된 값보다는 룩업 테이블 내의 위치에 대응하는 숫자이다. 결국, 식별자는 룩업 테이블 내의 엔트리 위치를 계산하는데 사용된다. 다음에 해당 식별자에 대한 논리적 블록 번호 및 종류가 계산 위치에 있는 룩업 테이블에 기억된다. 다른 실시예에서, 데이터 룩업 테이블에 종류는 기억되지 않는다. 선택적으로, 데이터 룩업 테이블은 헤더에 연관된 데이터에 대한 식별자, 논리적 블록 번호, 및 종류를 명시적으로 저장할 수 있다. 이와 같은 어떠한 헤더도 발견되지 않을 때까지 스캔 처리가 계속되고, 다음에 처리는 단계(890)에 종료된다.
데이터 룩업 테이블은 그룹 테이블 오브젝트, 시퀀스 테이블 오브젝트, 다중 인스턴스 오브젝트, 및 단일 인스턴스 오브젝트에 대한 헤더를 식별한다. 파라메타 X를 검색하기 위해, 비휘발성 메모리 내의 모든 블록의 헤더를 스캔하는 대신에 데이터 룩업 테이블을 참조할 수 있다. 개별적인 데이터 프래그먼트 및 시퀀스 테이블 프래그먼트는 룩업 테이블에 목록화되지 않는다.
블록 내의 이용 가능한 공간의 신속한 판정이 용이하도록 하기 위해, 논리적 블록 테이블이 RAM에 유지된다. 논리적 블록 테이블은 논리적 대 물리적 블록 변환맵을 제공하며, 초기화동안 생성된다. 초기화 동안, 각각의 물리적 블록을 스캔하여 이용 가능한 공간의 양과 무효 공간(즉, 무효 오브젝트와 헤더에 의해 사용되는 공간)의 양을 판정한다. 이 정보는 비휘발성 메모리 장치 내의 각각의 블록에대해 수집되어, RAM 내의 논리적 블록 상태 테이블에 저장된다. 다음에 비휘발성 메모리 장치에 대한 후속하는 동작을 위해 논리적 블록 테이블이 갱신된다.
한 실시예에서, 기록되는 데이터에 대한 기억 구조가 자동적으로 선택된다. 비휘발성 메모리 내에 할당될 수 있는 공간의 최소 양을 단위 입도라고 한다. 이용 가능한 가장 큰 공간을 갖는 블록이 새로운 오브젝트를 기록하기 위한 후보로서 선택된다. 저장된 데이터에 대한 기억 구조의 선택은 많은 임계치 및 후보 블록 내의 이용 가능한 공간에 대해 데이터의 크기(z)에 기초하여 선택된다.
만일 수반하는 오버헤드를 갖는 선정된 최소 수의 다중 인스턴스(m)가 하나의 입도 단위(g)가 맞는다면 다중 인스턴스 구조가 선택된다. m*z+오버헤드g인 한, 다중 인스턴스 데이터 구조가 선택될 수 있다. 따라서 만일 z이면, 다중 인스턴스 데이터 구조가 선택될 것이다.
도 4에 도시된 한 실시예에서, 오버헤드는 1 바이트 인스턴스 크기, 1 바이트 인스턴스 수, 각각의 인스턴스에 대한 1/2 바이트를 포함한다. g=120 바이트 및 m=3인 경우, z가=== 41.5 바이트 미만인 한 다중 인스턴스 단위 구조가 선택될 수 있다. 따라서 예를 들어 40 바이트 크기 데이터가 다중 인스턴스 구조에 저장될 수 있다.
다중 인스턴스 구조 내의 인스턴스의 수는 m에 한정되지 않는다. 일단 다중 인스턴스 구조가 선택되면, 인스턴스 크기(402)는 z이고, 인스턴스(404)(k)의 수는int〔〕 미만인 값인데, 여기서 "int"는 "int(x)"가 x의 정수 성분을 반환하도록 정수 함수를 나타낸다.
이 경우에, 상태 필드로 인해, 오버헤드는 인스턴스 k의 수의 함수이다. 결국, k는 int〔〕이고, 여기서 f는 인스턴스의 수에 무관하게 오버헤드의 고정부를 나타내고, v는 각 인스턴스에 대해 부가된 오버헤드의 양을 나타낸다. 다중 인스턴스 오버헤드의 고정부는 2 바이트이고, 단위 인스턴스 오버헤드는 .5 바이트이다. 따라서, 본 예에서, 7 바이트 파라메타가 다중 인스턴스 구조에서 16 인스턴스까지 가질 수 있다.
만일 다중 인스턴스 구조를 무시할 수 없다면, 최대 단일 인스턴스 크기가 초과되지 않는 한 데이터가 단일 인스턴스 오브젝트로서 저장될 수 있다. 한 실시예에서, 최대 단일 인스턴스 크기는 많은 최소의 할당 단위로서 표현된다. 따라서, 만일 단위 입도 (g)가 128 바이트이면, 4 단위/프래그먼트의 최대 단일 인스턴스 크기 (s)는, 데이터의 크기가 512 바이트를 초과하면 데이터가 프래그먼트되어야 한다는 것을 가리킨다. 데이터는 또한 데이터의 크기가 후보 블록 내의 이용 가능한 공간(z)의 양 미만일 때 프래그먼트되어야 한다. 만일 데이터 크기(z)가 512 바이트 미만이면, 이때 충분한 공간이 이용가능한 데이터는 단일 인스턴스 단위로 저장될 수 있다. 수학적으로 표현해서, zmin(s*g,z)(여기서, 만일 ab 또는 b이면 min(a,b)=a)인 한 단일 인스턴스 오브젝트 구조가 선택될 수 있다.
만일 데이터의 크기가 최대 단일 인스턴스 크기보다 크면, 이때 데이터가 프래그먼트 되어야 한다. 가능하다면, 데이터 프래그먼트는 최대 단일 인스턴스 크기일 것이다. 결과로 나타나는 시퀀스 테이블의 크기가 최대 시퀀스 테이블 크기를 초과하지 않는 한 데이터 프래그먼트와 시퀀스 테이블을 사용하여 데이터가 저장된다. 그렇지 않으면, 데이터는 데이터 프래그먼트, 시퀀스 테이블 프래그먼트, 및 그룹 테이블을 사용하여 저장된다. 한 실시예에서, 어떤 데이터 구조가 사용되는 지에 대한 판정이 자동화된다. 초기에 비휘발성 메모리에 데이터를 저장하기 위해 어떤 오브젝트 구조를 사용할지를 판정하기 위한 프로세스를 도시한다. 데이터를 기록하는 요청이 단계(910)에서 수신된다. 전형적으로, 비휘발성 메모리는 복수의 블록을 구비한다. 기억 시스템의 사용동안, 블록은 서로 다른 이용 가능한 공간 크기를 가질 수 있다. 새로운 데이터 오브젝트를 저장할 때, 이용 가능한 가장 큰 공간 크기를 갖는 블록이 단계(912)에서 선택된다.
단계(920)에서 결정된 바와 같이, 만일 z 이면, 이때 단계(922)에서 기억 구조로서 다중 인스턴스 구조가 선택된다. 그렇지 않으면 처리는 단계(930)로 계속한다.
만일 단계(930)에서 결정된 바와 같이 z최대 단일 인스턴스 크기이면, 이때 단계(932)에서 단일 인스턴스 구조가 선택된다. 단일 인스턴스 구조에는 zs*g최대 단일 인스턴스 크기이도록 입도 단위(g)의 최소 정수(s)가 할당된다. 만일 z가 최대 단일 인스턴스 크기를 초과하면, 이때 데이터가 프래그먼트되어야 한다. 단계(934)는 데이터를 기억하는데 필요한 프래그먼트의 수를 결정한다.
만일 필요한 프래그먼트의 수가 단계(940)에서 결정된 바와 같이 시퀀스 테이블에 대한 최대 크기를 초과하면, 이때 데이터가 프래그먼트되어, 단계(942)에 표시한 바와 같이 그룹 테이블과 시퀀스 테이블을 사용하여 저장된다. 그렇지 않으면, 단계(944)에 표시한 바와 같이 시퀀스 테이블을 사용하여 데이터가 저장된다. 대체 실시예에서, 개별적인 시퀀스 테이블이 존재하지 않으며, 따라서 z가 최대 단일 인스턴스 크기를 초과할 때마다 그룹 테이블과 시퀀스 테이블 프래그먼트가 사용된다. 다른 말로 표현하면, 점선(946)으로 표시한 바와 같이, 일단 단계(930)가 z> 최대 단일 인스턴스 크기라고 판정하면, 처리는 단계(942)로 진행하여 그룹 테이블, 시퀀스 테이블 프래그먼트 및 데이터 프래그먼트를 사용하여 데이터를 저장한다.
단일 인스턴스 오브젝트를 기록하는 처리가 단계(1010)에서 시작하여 도 10에 도시된다. 단계(1020)에서, 이용 가능한 가장 큰 자유 공간 크기를 갖는 블록을 구한다. 단계(1030)에서, 오브젝트에 대한 헤더가 "할당"의 상태로 기록된다. 헤더가 성공적으로 기록된 후에, 이 상태는 단계(1032)에서 "기록된 헤더"로 변경된다.
오브젝트를 기록하는 처리가 단계(1040)에서 개시된다. 만일 오브젝트의 일부만이 기록되면, 이 부분은 기존에 존재하는 오브젝트 버전 내의 대응하는 부분을 교체하는 것으로 취급된다. 교체되지 않은 임의의 부분은 기존에 존재하는 유효 버전 내의 부분과 동일하여야 한다. 이와 같이 오브젝트의 새로운 버전을 기록하는 것은 교체되지 않은 오브젝트의 기존에 존재하는 유효 버전의 임의의 부분을 복사하는 것을 필요로 한다. 오브젝트의 새로운 버전의 헤더 상태는, 오브젝트가 단계(1024)에서 기록되었다는 것을 가리키는 "할당된"으로 변경된다.
이때 오브젝트의 기존에 존재하는 "유효" 버전이 단계(1050)에서 무효화된다. 단계(106)에서, 기록되고 있는 오브젝트에 대한 상태가 "유효"로 변경된다. 마지막으로, 데이터 룩업 테이블이 단계(1070)에서 갱신된다.
다중 인스턴스 오브젝트를 기록하는 처리는 단계(1110)에서 시작하는 도 11 및 도 12에 도시한 것과 유사하다. 단계(1112)는 동일한 식별자를 갖는 기존에 존재하는 다중 인스턴스 오브젝트가 존재하는 지의 여부를 판정한다. 만일 그렇다면, 이때 프로세스는 기존에 존재하는 다중 인스턴스 오브젝트 내의 이용 가능한 엔트리를 이용할 수 있다.
만일 동일한 명칭을 갖는 기존에 존재하는 다중 인스턴스가 존재하면, 처리는 단계(1112)로 진행한다. 단계(1114)는 1) z각각의 인스턴스에 이용 가능한 최대 공간 크기, 및 2) 만일 적어도 하나의 엔트리가 기록될 오브젝트에 대해 남아있는지의 여부를 판정한다. 만일 두 조건이 참이면, 이때 이 기록 동작은 이용 가능한 다중 인스턴스 오브젝트 엔트리를 이용할 수 있다. 그렇지 않으면, 단계(1120-1132)에서 새로운 다중 인스턴스 오브젝트가 기록되어야만 한다.
단계(1120)에서 다중 인스턴스 오브젝트를 저장하기에 충분한 공간을 갖는 블록을 검색함으로써 새로운 다중 인스턴스 오브젝트의 처리가 시작한다. 대체 실시예에서, 가장 큰 자유 공간을 갖는 블록이 선택된다.
단계(1122)에서 다중 인스턴스 오브젝트 헤더는 "할당"의 상태를 갖는 것으로 기록된다. 헤더가 성공적으로 기록되었다는 것을 가리키는 단계(1124)에서 이 상태가 변경된다. 단계(1130)는 다중 인스턴스 데이터 구조를 기록하는 것을 개시한다.
단계(1140)에서, 다중 인스턴스 오브젝트를 저장하기 위해 다중 인스턴스 구조 내의 첫 번째 이용 가능한 엔트리가 선택된다. 도 12를 참조하면, 선택된 엔트리의 상태가 단계(1210)에서 "할당"으로 바뀐다. 단계(1220)는 선택된 엔트리에 오브젝트를 기록하는 것을 개시한다. 다음에 단계(1222)에서 선택된 엔트리의 상태가 "유효"로 바뀐다.
이제 오브젝트의 인스턴스가 저장되었다. 단계(1230)는, 이용 가능한 엔트리가 현재의 다중 인스턴스 오브젝트 구조에서 최초의 엔트리이었는지를 판정한다. 만일 그렇지 않다면, 처리는 다중 인스턴스 오브젝트 내의 이전의 엔트리를 무효화하는 단계(1232)로 진행한다. 다음에, 다중 인스턴스 오브젝트를 갱신하는 처리가 단계(129)에서 종료된다.
만일 선택된 엔트리가 다중 인스턴스 오브젝트 내의 첫 번째 엔트리이면, 이때 새로운 다중 인스턴스 오브젝트를 무효화하는 것은 물론, 동일한 식별자를 갖는 기존에 존재하는 오브젝트를 무효화하기 위해 단계(1240-1270)에서 부수적인 조치가 취해진다. 다중 인스턴스 오브젝트 상태는 단계(1240)에서 "할당된" 상태를 가리키도록 변경된다. 동일한 식별자를 갖는 임의의 기존에 존재하는 오브젝트가 단계(1250)에서 무효화(상태="무효")된다. 새로운 다중 인스턴스 오브젝트의 생성은 단계(1270)에서 룩업 테이블을 갱신하는 것을 필요로 한다. 다음에 다중 인스턴스 오브젝트를 저장하는 처리가 단계(1290)에서 종료된다.
도 13 내지 도 15는 기록될 데이터의 크기 z가 임의의 프래그먼트에 할당 가능한 최대 크기 s*g를 초과할 때 복수의 데이터 프래그먼트로서 오브젝트를 기록하는 처리를 도시한다. 한 실시예에서, s는 다수의 입도로서 표현된 최대 단일 인스턴스 오브젝트 크기이다. 단계(1310)에서 처리가 시작한다.
단계(1320)에서 그룹 테이블에 기록하기에 충분한 자유 공간을 갖는 블록이 선택된다. 한 실시예에서, 어떠한 오브젝트도 최대 크기, s*g를 초과하는 것이 허용되지 않으므로, 크기 s*g의 오브젝트를 저장할 수 있는 임의의 블록이 그룹 테이블을 저장하기 위한 블록으로서 선택될 수 있다. 한 실시예에서, 이용 가능한 가장 큰 자유 공간 크기를 갖는 블록이 선택된다.
단계(1322)에서, "할당"의 상태를 갖는 그룹 테이블 헤더가 기록된다. 그룹 테이블 헤더를 기록한 후에, 단계(1324)에서 상태는 "기록된 헤더"로 변경된다.
단계(1330)는, 시퀀스 테이블 프래그먼트를 생성하기에 현재의 블록에 충분한 공간이 있는지의 여부를 판정한다. 현재의 블록은 만일 이것이 오브젝트를 위한 첫 번째 시퀀스 테이블 프래그먼트이면 그룹 테이블이 생성되는 것과 동일한 블록이다. 그렇지 않으면, 현재의 블록은 마지막 데이터 프래그먼트가 기록되었던 블록이다.
만일 현재의 블록에 불충분한 공간이 존재하면, 단계(1332)에서 가장 이용 가능한 공간을 갖는 블록이 다음 시퀀스 테이블 프래그먼트를 기록하기 위한 시퀀스 테이블 블록으로서 선택된다. 그렇지 않으면, 단계(1334)에서 현재의 블록이다음 시퀀스 테이블 프래그먼트를 기록하기 위한 시퀀스 테이블 블록으로서 선택된다.
일단 시퀀스 테이블 블록이 선택되면, 단계(1340)에서 "할당"의 상태를 갖는 시퀀스 테이블 프래그먼트 헤더가 기록된다. 헤더를 성공적으로 기록한 후에, 단계(1342)에서 상태가 "헤더 기록"으로 변경된다.
도 14는 각각의 데이터 프래그먼트를 기록하는 처리를 도시한다. 한 실시예에서, 데이터는 오브젝트가 완전히 저장될 때까지 가능한 한 큰 프래그먼트를 선택함으로서 저장된다. 세 가지 가능성: zg, g<zs*g 또는 z>s*g가 존재한다.
단계(1410)는 나머지 데이터로부터 크기 k (여기서, k는 1) 최대 프래그먼트 크기 s*g의 또는 2) 저장되기 위해 남아있는 데이터의 양 z 보다 작음)의 프래그먼트를 선택한다.
단계(1420)는 마지막 데이터 프래그먼트가 기록된 블록에 충분한 공간이 존재하는 지의 여부를 판정한다. 만일 저장되기 위해 남아 있는 데이터의 양이 최소 프래그먼트 크기(즉, 한 입도 단위, g) 미만이면, 이때 데이터 프래그먼트는 zg이더라도 저장하기 위한 하나의 입도 단위를 필요로 할 것이다. 만일 g<zs*g이면 이때 저장하는데 이용 가능한 적어도 j 입도 단위이어야 한다(여기서, j는 zj*gs*g이도록 정수임). 만일 z>s*g이면, 이때 s*g의 데이터 프래그먼트를 저장하기에 이용 가능한 충분한 공간이 존재하여야 한다.
그렇다면, 이때 마지막 데이터 프래그먼트가 기록되었던 블록이 단계(1422)에서 다음 데이터 프래그먼트를 기록하기 위해 선택된다. (만일 이것이 소정의 오브젝트에 대한 마지막 데이터 프래그먼트이면, 이때 시퀀스 테이블 프래그먼트가 위치한 블록이, "최종 데이터 프래그먼트가 기록되었던" 블록인 것으로 간주된다. 그렇지 않으면, 다음 데이터 프래그먼트를 기록하기 위한 충분한 공간을 갖는 다른 블록이 단계(1424)에서 선택된다.
단계(1430)에서 "할당"의 상태를 갖는 데이터 프래그먼트 헤더가 기록된다. 이 상태는 단계(1432)에서 "헤더 기록"으로 변경된다. 단계(1440)는 데이터 프래그먼트의 기록을 개시한다. 데이터 프래그먼트가 기록된 후에, 데이터 프래그먼트의 상태는 단계(1442)에서 "할당된"으로 변경된다. 다음에 "유효"의 상태를 갖는 데이터 프래그먼트에 대한 시퀀스 테이블 엔트리가 기록된다. 다음에 처리는 도 15로 진행한다.
도 15를 참조하면, 단계(1510)는 임의의 데이터가 저장되기 위에 남아있는 지의 여부를 판정한다. 만일 그렇다면, 처리는 단계(1520)로 진행하여, 다른 엔트리가 현재의 시퀀스 테이블 프래그먼트에 부가될 수 있는 지의 여부를 판정한다. 만일 현재의 시퀀스 테이블 프래그먼트가 차있지 않으면, 처리는 도 14의 단계(1410)로 진행하여 프래그먼트와 데이터의 저장을 계속한다. 만일 현재의 시퀀스 테이블 프래그먼트에 더 이상의 공간이 없으면, 다음에 단계(1570)에서 현재의 시퀀스 테이블 프래그먼트 헤더 상태가 "할당된"으로 변경된다. 다음에, 새로운 시퀀스 테이블 프래그먼트를 생성하는 도 13의 단계(1330)로 복귀한 후에 처리는 프래그먼트와 데이터 프래그먼트의 저장을 계속한다.
만일 단계(1510)에서 어떠한 데이터도 저장되도록 남아있지 않으면, 단계(1530)에서 현재의 시퀀스 테이블 프래그먼트 헤더 상태가 "할당된"으로 변경된다. 이때, 모든 오브젝트의 데이터 프래그먼트가 저장되고, 그룹 테이블 및 시퀀스 테이블 프래그먼트에 의해 찾을 수 있다. 단계(1532)는 오브젝트의 그룹 테이블에 연관된 모든 데이터 프래그먼트의 상태를 "유효"로 변경한다.
다음에 단계(1540)에서 오브젝트의 임의의 기존에 존재하는 "유효" 버전이 무효화된다. 단계(1542)에서 오브젝트의 현재의 버전에 연관된 모든 시퀀스 테이블 프래그먼트는 그 상태가 "유효"로 변경된다. 이때 오브젝트의 현재 버전에 대한 그룹 테이블의 상태는 단계(1550)에서 "유효"로 변경된다. 다음에 단계(1560)에서 룩업 테이블(즉, 데이터 룩업 테이블)이 갱신된다. 다음에 단계(1590)에서 복수의 데이터 프래그먼트로서 오브젝트를 기록하는 처리가 완료된다.
도 10의 단계(1050), 도 12의 단계(1250) 및 도 15의 단계(1540)에 설명한 바와 같이 오브젝트의 유효한 이전 버전을 무효화하는 처리는 오브젝트 구조에 따라 다르다. 유효한 이전 버전을 유효하게 하기 위해, 오브젝트의 헤더는 "유효"의 상태, 및 적어도 기록되는 데이터의 식별자와 동일한 식별자를 가져야만 한다. 만일 두개 버전의 오브젝트가 서로 다른 오브젝트 구조를 가지면, 이전 버전은 그 전체가 무효화되어야만 한다.
다중 인스턴스 오브젝트 또는 단일 인스턴스 오브젝트를 무효화하는 것은 단지 이들 오브젝트에 대한 상태를 "무효"로 바꾸는 것을 필요로 한다. 그러나, 프래그먼트된 오브젝트를 무효화하는 것은 각각의 데이터 프래그먼트, 각각의 시퀀스테이블 프래그먼트 엔트리, 각각의 시퀀스 테이블 프래그먼트, 및 최종적으로 그룹 테이블을 무효화하는 것을 필요로 한다.
단일 인스턴스 오브젝트 및 다중 인스턴스 오브젝트를 생성하고 갱신하는 것은 일반적으로, 오브젝트의 임의의 이전 버전을 교체하는 것을 필요로 한다. 따라서, 예를 들어, 단일 인스턴스 오브젝트에 대한 수정은 단일 인스턴스 오브젝트의 이전 버전을 무효화하고 새로운 오브젝트를 기록하는 결과가 될 것이다. 다중 인스턴스 오브젝트에 대한 수정은 새로운 오브젝트 버전을 기록하기 위해 이전의 다중 인스턴스 오브젝트 구조 또는 이전의 엔트리중의 하나를 무효화하는 결과가 될 것이다. 따라서 단일 인스턴스 오브젝트 또는 다중 인스턴스 오브젝트중의 선택된 인스턴스의 수정은 전형적으로 이전 인스턴스 또는 적당한 오브젝트의 인스턴스를 파괴하는 결과가 된다.
프래그먼트된 오브젝트에 대한 수정은, 특정 데이터 프래그먼트만 또는 몇몇 데이터 프래그먼트만에 영향을 미칠 수 있다. 그러나, 영향을 받은 시퀀스 테이블 프래그먼트 및 그룹 테이블에 변화가 캐스캐이드 되어야만 한다. 그러나, 플래시 메모리의 이와 같은 특징으로 인해, 시퀀스 테이블 프래그먼트 및 그룹 테이블이 제대로 수정될 수 없다.
이 목표를 달성하는 하나의 방법은 매번 오브젝트를 재기록하는 것이다. 그러나, 이와 같은 기술은 데이터의 작은 양만이 갱신될 필요가 있을 때에는 비효율적일 것이다. 플래시 메모리의 특징은 시간 소비 소거 및 복사를 피하기 위해 가능한 적게 갱신을 촉진하는 경향이 있다. 한 실시예에서, 영향을 받은 시퀀스테이블 프래그먼트, 그룹 테이블 및 데이터 프래그먼트만이 교체된다.
오브젝트에 대한 전형적인 수정은 오브젝트의 끝에 첨부하거나 또는 오브젝트의 일부를 교체하는 것을 포함할 수 있다. 도 16은 마지막 시퀀스 테이블 프래그먼트가 보다 많은 데이터 프래그먼트를 수용하기에 충분한 엔트리 공간을 갖는 경우 오브젝트의 끝에 첨부하는 처리를 도시한다.
단계(1610)에서 오브젝트의 마지막 데이터 프래그먼트를 찾는다. 단계(1612)에서 첨부될 나머지 데이터(z)중에서 크기 k의 프래그먼트가 선택된다. 단계(1620)에서, 프래그먼트를 수용하기에 충분한 기억 공간을 갖는 블록을 찾는다. 도 14의 단계(1410) 및 1424)와 동일한 제한에 따라 단계(1612 및 1620)가 수행된다.
단계(1622)에서, 첨부된 시퀀스 테이블에 연관된 선택된 블록 내의 유효 프래그먼트의 수가 카운트된다. 다음에, 시퀀스 테이블 엔트리가 "할당"의 상태를 갖는 것으로 단계(1630)에서 기록된다. 다음에 시퀀스 테이블 엔트리는 단계(1622)에서 "엔트리 기록"으로 변경된다.
단계(1634)에서 데이터 프래그먼트 상태가 "할당"이라는 것을 가리키는 데이터 프래그먼트 헤더가 기록된다. 단계(1636)에서 이 상태는 "헤더 기록"으로 변경된다. 단계(1640)는 데이터 프래그먼트 자체를 기록하는 것을 개시한다.
데이터 프래그먼트가 기록된 후에, 단계(1642)에서 데이터 프래그먼트 상태가 "할당된"으로 변경된다. 다음에 단계(1644)에서 데이터 프래그먼트 상태가 "유효"로 변경된다.
단계(1650)는 첨부되기 위해 임의의 데이터가 남아있는 지의 여부를 판정한다. 만일 그렇다면, 첨부될 어떠한 데이터도 남아있지 않을 때까지 단계(1612-1642)가 반복된다. 데이터가 저장된 후에, 단계(1670)에서 새로운 시퀀스 테이블 엔트리의 상태가 "유효"로 변경된다. 충분한 공간이 현재의 시퀀스 테이블에 존재할 때 첨부하는 처리가 단계(1690)에서 종료된다.
도 17 및 도 18은 1-대-1 프래그먼트에 기초하여(즉, 하나의 다른 프래그먼트에 의해 프래그먼트가 교체됨) 프래그먼트된 오브젝트의 일부를 교체하는 처리를 도시한다. 일반적으로, 임의의 교체된 데이터 프래그먼트는 무효화될 것이다. 그 연관된 시퀀스 테이블 프래그먼트는 교체 데이터 프래그먼트의 위치를 갖고 재기록되어야 한다. 유사하게, 그룹 테이블은 시퀀스 테이블 프래그먼트의 새로운 위치를 반영하도록 재기록되어야 한다.
단계(1710)에서 교체될 데이터 프래그먼트 및 그 대응하는 시퀀스 테이블 프래그먼트를 구한다. 단계(1712)에서 새로운 그룹 테이블을 저장하기에 충분한 공간을 갖는 블록을 구한다. 새로운 그룹 테이블 헤더가 "할당"의 상태를 가지고 단계(1714)에서 기록된다. 단계(1716)에서 새로운 그룹 테이블의 상태가 "헤더 기록"으로 변경된다.
단계(1720)는 시퀀스 테이블 프래그먼트에 대한 인스턴스 정보 없이, 오래된 그룹 테이블에서 새로운 그룹 테이블까지의 영향받지 않은 그룹 테이블 엔트리를 복사한다. 영향받지 않은 그룹 테이블 엔트리는 변하지 않는 시퀀스 테이블 프래그먼트의 위치를 식별한다. 동일한 오브젝트에 대한 하나 이상의 시퀀스 테이블프래그먼트가 동일한 블록에서 발견되면, 교체 처리 동안 시퀀스 테이블 프래그먼트중의 한 프래그먼트의 삭제는 필연적으로 동일한 블록에 위치한 모든 오브젝트의 다음 시퀀스 테이블 프래그먼트에 대한 인스턴스 정보(즉, "카운트")를 변경시킨다. 따라서 단계(1722)는 변경되지 않은 시퀀스 테이블 프래그먼트를 식별하는 달리 변경되지 않은 그룹 테이블에 대한 인스턴스 정보를 갱신한다.
단계(1730 내지 1844)는 교체되고 있는 각각의 시퀀스 테이블에 적용된다. 단계(1730)는 선택된 오래된 시퀀스 테이블 프래그먼트에 대한 새로운 시퀀스 테이블 프래그먼트를 기록하기 위한 충분한 공간을 갖는 블록을 찾는다. 단계(1732)에서 새로운 시퀀스 테이블 프래그먼트 헤더가 "할당"의 상태를 갖는 것으로 기록된다. 단계(1734)에서 새로운 시퀀스 테이블 프래그먼트 상태가 "헤더 기록"으로 변경된다. 단계(1736)에서, 변경되지 않은 데이터 프래그먼트를 식별하는 오래된 시퀀스 테이블의 엔트리가 (인스턴스 정보 없이) 새로운 시퀀스 테이블로 복사된다. 다음에 이들 엔트리는 단계(1738)에서 갱신된 그 인스턴스 정보를 갖는다. 개별적인 시퀀스 테이블에 대한 인스턴스 정보의 갱신은, 변경되지 않은 데이터 프래그먼트에 대한 인스턴스 정보를 계산할 때 교체되는 데이터 프래그먼트를 카운트하지 않는다.
처리는 단계(1810)에서의 교체 데이터 프래그먼트중의 하나를 선택하므로써 도 18에서 계속한다. 단계(1812)에서 교체 데이터 프래그먼트중의 하나를 기록하기에 충분한 공간을 갖는 블록이 선택된다. 단계(1814)에서 데이터 프래그먼트 헤더는 "할당"의 상태로 기록된다. 데이터 프래그먼트와 새로운 시퀀스 테이블 프래그먼트를 연관시키는 테이블 번호(312)는 또한 단계(814)에서 헤더의 일부로서 기록된다. 단계(1816)에서 데이터 프래그먼트 상태가 "기록된 헤더"로 변경된다.
단계(1820)는 교체 데이터 프래그먼트의 기록을 시작한다. 이 데이터 프래그먼트를 단계(1824)에서 식별하는 시퀀스 테이블 엔트리에 인스턴스 정보를 기록하기 전에 단계(1822)에서 이 프래그먼트에 대한 인스턴스 수가 계산된다.
단계(1830)는 저장된 부수적인 데이터 프래그먼트가 존재하는지의 여부를 판정한다. 만일 그렇게 선택된 시퀀스 테이블 프래그먼트가 차있으면(1840), 처리는 단계(1810)로 복귀하여, 선택된 시퀀스 테이블 프래그먼트와 연관된 데이터 프래그먼트를 계속 교체한다. 만일 시퀀스 테이블 프래그먼트가 차있으면(1840), 이때 새로운 시퀀스 테이블 프래그먼트 상태가 "할당"으로 변경되고(1842), 새로운 시퀀스 테이블 프래그먼트를 생성하는 단계(1740)로 복귀하기 전에 단계(1844)에서 이 시퀀스 테이블 프래그먼트에 대한 정보를 갖는 새로운 그룹 테이블이 갱신된다.
만일 저장된 어떠한 데이터 프래그먼트도 존재하지 않으면, 이때 도 19의 단계(1910)에서 새로운 시퀀스 테이블 프래그먼트 상태가 "할당"으로 변경되고, 단계(1920)에서 이 시퀀스 테이블 프래그먼트에 대한 정보를 갖는 새로운 그룹 테이블이 갱신된다. 다음에 단계(1930)에서 모든 교체된 데이터 프래그먼트, 시퀀스 테이블 프래그먼트, 및 오래된 그룹 테이블의 상태가 "무효"로 변경된다. 단계(1990)에서 처리를 완료하기 전에 새로운 데이터 프래그먼트, 시퀀스 테이블 프래그먼트, 및 그룹 테이블의 상태가 "유효"로 변경된다
상술한 데이터를 기록하고 수정하는 실시예는 기록 또는 수정 동작 동안 전력 손실의 경우에 이전 상태로 복귀할 수 있도록 상태 값의 수를 사용한다. 시퀀스 테이블의 각 엔트리의 상태, 시퀀스 테이블 자체, 시퀀스 테이블에서 식별된 모든 데이터 프래그먼트 및 그룹 테이블이 기록 및 수정 처리 동안에 특정 지점에서 변경된다. 다중 인스턴스 값은 처리중의 하나가 중단되었는지 그리고 어떤 점에서 중단되었는 지의 여부를 판정하게 한다. 만일 기록 또는 수정 처리가 완료되지 않으면, 비휘발성 메모리가 공지된 상태로 복귀할 수 있다. 만일 전력 손실 복구가 필요하면, 중간 단계가 추적될 필요가 없다.
궁극적으로, 비휘발성 메모리는 무효 데이터의 양에 대응하는 선정된 임계치에 도달할 것이다. 한 실시예에서, 이 임계치는 소정의 블록 내의 무효 데이터 양에 기초하고 있다. 선택적으로, 이 임계치는 비휘발성 메모리 내의 전체 무효 데이터 양에 기초할 수 있다.
무효 데이터에 의해 사용되는 공간은 복구될 수 있고 "회수"라고 하는 처리를 통해 저장하는데 이용 가능하게 될 수 있다. 도 20은 회수 처리를 도시한다. 한 실시예에서, 일단 이용 가능한 공간의 크기가 선정된 임계치 이하이면, 회수 동작이 트리거된다(단계 2020). 그렇지 않으면 단계(2022)에 도시한 바와 같이 회수가 트리거되지 않는다.
한 실시예에서, 회수 처리는 무효 데이터를 포함하는 블록의 세트로부터 가장 많은 무효 데이터 양을 갖는 블록(들)을 선택함으로써 복구하기 위한 블록에 우선 순위를 부여한다. 단계(2032)에서 선택된 블록 내의 모든 유효 오브젝트가 선택된 블록에서 잉여 블록(116)으로 복사된다.
유효 오브젝트를 복사할 떼, 무효 오브젝트에 의해 이전에 사용되는 공간이 콤팩트하게 되어, 유효 오브젝트의 헤더들이 연속하며, 오브젝트 자체가 도 2에 도시한 바와 같이 상호 연속해서 위치되게 된다. 따라서, 무효 오브젝트(및 그 대응하는 헤더)에 의해 이전에 사용되는 공간의 양이 복구되게 되어, 영역(230)의 크기를 증가시키는 결과가 된다.
잉여 블록(116)을 위한 블록 정보 구조(240)는 단계(204)에서 선택된 블록의 논리적 블록 수에 따라 갱신된다. 다음에 선택된 블록이 삭제되고 단계(2042)에서 다른 블록을 회수할 때 사용될 새로운 잉여 블록이 되게 된다.
한 실시예에서, 회수 처리는 단계(2010)에 의해 표시된 바와 같이 기록 또는 수정 명령에 응답해서만 트리거된다. 단계(2020)에서 일단 트리거되면, 단계(2050)에서 결정된 바와 같이 요청된 동작을 수행하기에 충분한 자유 공간이 존재할 때까지 회수 처리는 단계(2030 내지 2050)를 반복한다.
선행하는 상세한 설명에서, 본 발명이 특정 예시적인 실시예를 참조하여 설명되었다. 그러나, 특허청구범위에 개진된 바와 같이 본 발명의 정신과 범위를 벗어나지 않고 본 발명이 다양하게 수정되고 변경될 수 있다. 따라서, 명세서 및 도면은 제한하는 의미라기 보다는 예시적인 것으로 간주되어야 한다.

Claims (24)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 메모리를 위한 방법에 있어서,
    데이터를 저장하기 위한 복수의 형태의 데이터 구조 중에서 하나의 데이터 구조를 선택하는 단계 - 여기서, 상기 데이터 구조는 상기 데이터와 관련된 하나 또는 그 이상의 파라미터에 근거하여 선택되고, 데이터 구조를 선택하는 상기 단계는, 단일 인스턴스(instance) 데이터 오브젝트의 크기 파라미터가 상기 단일 인스턴스 데이터 오브젝트에 관련된 최대 크기 파라미터 보다 더 크지 않은 경우에, 상기 단일 인스턴스 데이터 오브젝트를 저장하기 위해 단일 인스턴스 데이터 구조를 선택하는 단계를 포함함 - ; 및
    상기 선택된 데이터 구조가 상기 하나 또는 그 이상의 파리미터를 충족시키도록 상기 선택된 데이터 구조로 상기 데이터를 저장하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 단일 인스턴스 데이터 구조를 선택하는 상기 단계는,
    상기 단일 데이터 오브젝트의 크기 파라미터가 상기 단일 인스턴스 데이터 오브젝트에 관련된 최대 크기 파라미터 보다 더 큰 경우에, 상기 단일 인스턴스 데이터 오브젝트를 프래그먼트하는 단계; 및
    상기 프래그먼트된 단일 인스턴스 데이터 오브젝트를 저장하기 위해 복수의 단일 인스턴스 데이터 구조를 선택하는 단계를 포함하는
    방법.
  13. 제12항에 있어서,
    상기 단일 인스턴스 데이터 오브젝트에 대한 최대 크기 파라미터는 상기 메모리의 한 블록의 크기인
    방법.
  14. 제11항에 있어서,
    하나의 데이터 구조를 선택하는 상기 단계는 다중 인스턴스 데이터 오브젝트를 포함하는 데이터를 저장하기 위해 다중 인스턴스 데이터 구조를 선택하는 단계를 포함하고,
    여기서, 상기 다중 인스턴스 데이터 오브젝트는 다수의 데이터 단위(units)를 포함하는
    방법.
  15. 제14항에 있어서,
    다중 인스턴스 데이터 구조를 선택하는 상기 단계는,
    상기 다수의 데이터 단위에 관련된 크기 파라미터가 이용가능한 메모리의 양 보다 더 크지 않은 경우에, 상기 다중 인스턴스 데이터 구조를 선택하는 단계를 포함하는
    방법.
  16. 제11항에 있어서,
    상기 데이터를 저장하는 상기 단계는,
    상기 데이터를 비휘발성 메모리에 저장하는 단계를 포함하는
    방법.
  17. 제16항에 있어서,
    상기 데이터를 비휘발성 메모리에 저장하는 상기 단계는,
    상기 데이터를 비휘발성 플래시 메모리에 저장하는 단계를 포함하는
    방법.
  18. 메모리 관리 시스템에 있어서,
    복수의 형태의 데이터 구조 중에서 하나 또는 그 이상의 데이터 구조를 포함하기 위한 메모리 - 여기서, 상기 데이터 구조는 데이터를 저장하기 위한 것임 - ; 및
    상기 데이터와 관련된 하나 또는 그 이상의 파라미터에 근거하여 하나의 데이터 구조를 선택하고, 단일 인스턴스 데이터 오브젝트의 크기 파라미터가 상기 단일 인스턴스 데이터 오브젝트에 관련된 최대 크기 파라미터 보다 더 크지 않은 경우에, 상기 단일 인스턴스 데이터 오브젝트를 저장하기 위해 단일 인스턴스 데이터 구조를 선택하고, 상기 선택된 데이터 구조가 상기 하나 또는 그 이상의 파리미터를 충족시키도록 상기 선택된 데이터 구조로 상기 데이터를 저장하기 위한 메모리 관리자
    를 포함하는 메모리 관리 시스템.
  19. 제18항에 있어서,
    상기 메모리 관리자는, 상기 단일 데이터 오브젝트의 크기 파라미터가 상기 단일 인스턴스 데이터 오브젝트에 관련된 최대 크기 파라미터 보다 더 큰 경우에, 상기 단일 인스턴스 데이터 오브젝트를 프래그먼트하고, 상기 프래그먼트된 단일 인스턴스 데이터 오브젝트를 저장하기 위해 복수의 단일 인스턴스 데이터 구조를 선택하는
    메모리 관리 시스템.
  20. 제19항에 있어서,
    상기 단일 인스턴스 데이터 오브젝트에 대한 최대 크기 파라미터는 상기 메모리의 한 블록의 크기인
    메모리 관리 시스템.
  21. 제18항에 있어서,
    상기 메모리 관리자는 상기 데이터 및 다중 인스턴스 데이터 오브젝트를 저장하기 위해 다중 인스턴스 데이터 구조를 선택하고,
    여기서, 상기 다중 인스턴스 데이터 오브젝트는 다수의 데이터 단위를 포함하는
    메모리 관리 시스템.
  22. 제21항에 있어서,
    상기 메모리 관리자는, 상기 다수의 데이터 단위에 관련된 크기 파라미터가 이용가능한 메모리의 양 보다 더 크지 않은 경우에, 상기 다중 인스턴스 데이터 구조를 선택하는
    메모리 관리 시스템.
  23. 제18항에 있어서,
    상기 메모리는 비휘발성 메모리이고, 상기 메모리 관리자는 상기 비휘발성 메모리에 상기 데이터를 저장하는
    메모리 관리 시스템.
  24. 제23항에 있어서,
    상기 비휘발성 메모리는 비휘발성 플래시 메모리이고, 상기 메모리 관리자는 상기 비휘발성 플래시 메모리에 상기 데이터를 저장하는
    메모리 관리 시스템.
KR10-2000-7011692A 1998-04-21 1999-04-20 비휘발성 메모리에서의 가변 크기 데이터의 효율적인관리를 위한 동적 할당 KR100389241B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/063,954 US6226728B1 (en) 1998-04-21 1998-04-21 Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US09/063,954 1998-04-21

Publications (2)

Publication Number Publication Date
KR20010042905A KR20010042905A (ko) 2001-05-25
KR100389241B1 true KR100389241B1 (ko) 2003-06-27

Family

ID=22052575

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-7011692A KR100389241B1 (ko) 1998-04-21 1999-04-20 비휘발성 메모리에서의 가변 크기 데이터의 효율적인관리를 위한 동적 할당

Country Status (7)

Country Link
US (2) US6226728B1 (ko)
EP (2) EP1071996A4 (ko)
KR (1) KR100389241B1 (ko)
AU (1) AU3864399A (ko)
MY (1) MY122440A (ko)
TW (1) TW440762B (ko)
WO (1) WO1999054824A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100703753B1 (ko) 2005-04-14 2007-04-06 삼성전자주식회사 파일 시스템 관리 장치 및 방법

Families Citing this family (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3345628B2 (ja) * 1997-07-11 2002-11-18 アネックスシステムズ株式会社 データ格納及び検索方法
US6008739A (en) * 1998-03-09 1999-12-28 Motorola, Inc. Increasing the size of memory available for storing messages in response to the user reading advertisements in a selective call receiver
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US7099898B1 (en) * 1999-08-12 2006-08-29 International Business Machines Corporation Data access system
KR100586031B1 (ko) * 1999-12-23 2006-06-01 브이케이 주식회사 비휘발성 메모리를 이용한 실시간 데이터베이스 운용방법
FR2812736B1 (fr) * 2000-08-04 2003-12-19 Near Technologies Systeme de stockage virtuel
JP3726663B2 (ja) * 2000-09-07 2005-12-14 日産自動車株式会社 電子制御装置の制御データ記憶装置
US7111141B2 (en) * 2000-10-17 2006-09-19 Igt Dynamic NV-RAM
US6804763B1 (en) * 2000-10-17 2004-10-12 Igt High performance battery backed ram interface
US8550922B2 (en) * 2006-03-03 2013-10-08 Igt Game removal with game history
FR2818770A1 (fr) * 2000-12-21 2002-06-28 Bull Cp8 Procede de gestion optimisee de l'allocation de memoire d'un systeme embarque et systeme embarque correspondant
US6954765B2 (en) * 2000-12-30 2005-10-11 Intel Corporation Updating a file in a fragmented file system
US8009667B1 (en) * 2001-01-16 2011-08-30 Wi—LAN, Inc. Packing source data packets into transporting packets with fragmentation
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6571326B2 (en) * 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
EP1313020A1 (fr) 2001-11-19 2003-05-21 EM Microelectronic-Marin SA Architecture d'un circuit intégré pour carte à puce et procédé d'allocation mémoire associé
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
KR100439507B1 (ko) * 2002-03-18 2004-07-09 삼성전기주식회사 고 용량 플래시 메모리 카드 시스템에서의 데이터 운영 방법
US7035987B2 (en) * 2002-07-02 2006-04-25 Intel Corporation Managing storage in processor-based systems
AUPS333502A0 (en) 2002-07-03 2002-07-25 Aristocrat Technologies Australia Pty Limited Gaming machine power fail enhancement
US6928531B2 (en) * 2002-08-29 2005-08-09 Micron Technology, Inc. Linear and non-linear object management
US6970969B2 (en) * 2002-08-29 2005-11-29 Micron Technology, Inc. Multiple segment data object management
US6895486B2 (en) 2002-08-29 2005-05-17 Micron Technology, Inc. Linear object management for a range of flash memory
US6968439B2 (en) * 2002-08-29 2005-11-22 Micron Technology, Inc. Single segment data object management
US7130979B2 (en) * 2002-08-29 2006-10-31 Micron Technology, Inc. Dynamic volume management
US20040078521A1 (en) * 2002-10-17 2004-04-22 International Business Machines Corporation Method, apparatus and computer program product for emulating an iSCSI device on a logical volume manager
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US20040186975A1 (en) * 2003-03-20 2004-09-23 Texas Instruments Incorporated Flash memory data structure and methods of accessing thereof
US7185029B1 (en) * 2003-06-27 2007-02-27 Unisys Corporation Method and apparatus for maintaining, and updating in-memory copies of the first and second pointers to reference the new versions of the first and second control structures that indicate available and allocated portions of usable space in the data file
CN1571415A (zh) * 2003-07-17 2005-01-26 华为技术有限公司 一种封装数据流的方法
US7181672B2 (en) * 2003-09-25 2007-02-20 Intel Corporation Method, system, and apparatus for supporting power loss recovery in ECC enabled memory devices
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7383375B2 (en) * 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US8019928B2 (en) * 2004-02-15 2011-09-13 Sandisk Il Ltd. Method of managing a multi-bit-cell flash memory
US7716413B2 (en) * 2004-02-15 2010-05-11 Sandisk Il Ltd. Method of making a multi-bit-cell flash memory
US20050254071A1 (en) * 2004-05-13 2005-11-17 Jun He Image rescaling method
US9535624B1 (en) * 2004-09-13 2017-01-03 EMC IP Holding Company LLC Duplicate management
US20060101192A1 (en) * 2004-11-09 2006-05-11 Zilavy Daniel V Systems and methods of nonvolatile memory management
US7472309B2 (en) * 2004-12-22 2008-12-30 Intel Corporation Methods and apparatus to write a file to a nonvolatile memory
US8443162B2 (en) 2005-01-21 2013-05-14 Qualcomm Incorporated Methods and apparatus for dynamically managing banked memory
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage 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
US20060179210A1 (en) * 2005-02-04 2006-08-10 Texas Instruments Incorporated Flash memory data structure, a flash memory manager and a flash memory containing the data structure
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
JP4748708B2 (ja) * 2005-03-18 2011-08-17 ルネサスエレクトロニクス株式会社 半導体装置
KR20060108431A (ko) * 2005-04-13 2006-10-18 삼성전자주식회사 가변적인 동적 메모리 관리 방법 및 이를 포함하는임베디드 시스템
US8645313B1 (en) * 2005-05-27 2014-02-04 Microstrategy, Inc. Systems and methods for enhanced SQL indices for duplicate row entries
WO2006133597A1 (en) * 2005-06-15 2006-12-21 Intel Corporation Using transacted writes and caching mechanism to improve write performance in multi-level cell flash memoty
US20070011214A1 (en) * 2005-07-06 2007-01-11 Venkateswararao Jujjuri Oject level adaptive allocation technique
US7627733B2 (en) * 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
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
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
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
ATE548694T1 (de) * 2005-10-13 2012-03-15 Research In Motion Ltd Verfahren und systeme zur datenspeicherung für eine mobile vorrichtung
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
US7958300B2 (en) * 2005-10-13 2011-06-07 Research In Motion Limited Data storage methods and systems for use on a mobile device
US7814262B2 (en) * 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US20070136671A1 (en) * 2005-12-12 2007-06-14 Buhrke Eric R Method and system for directing attention during a conversation
US7747837B2 (en) * 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
CN101346702B (zh) * 2005-12-21 2012-09-05 Nxp股份有限公司 具有可块擦除单元的存储器
US7769978B2 (en) 2005-12-21 2010-08-03 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
US7594087B2 (en) * 2006-01-19 2009-09-22 Sigmatel, Inc. System and method for writing data to and erasing data from non-volatile memory
JP2007199905A (ja) * 2006-01-25 2007-08-09 Toshiba Corp 半導体記憶装置の制御方法
KR100706808B1 (ko) * 2006-02-03 2007-04-12 삼성전자주식회사 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법
US7951008B2 (en) * 2006-03-03 2011-05-31 Igt Non-volatile memory management technique implemented in a gaming machine
US9588809B2 (en) * 2006-10-10 2017-03-07 Invistasking LLC Resource-based scheduler
US8239869B2 (en) * 2006-06-19 2012-08-07 Condusiv Technologies Corporation Method, system and apparatus for scheduling computer micro-jobs to execute at non-disruptive times and modifying a minimum wait time between the utilization windows for monitoring the resources
US8056083B2 (en) * 2006-10-10 2011-11-08 Diskeeper Corporation Dividing a computer job into micro-jobs for execution
GB2439577B (en) * 2006-06-30 2011-12-14 Data Equation Ltd Data processing
US8745315B2 (en) * 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
US7710972B2 (en) * 2006-12-21 2010-05-04 Intel Corporation Discrete table descriptor for unified table management
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
US8209461B2 (en) * 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US7917686B2 (en) * 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
CN102203717A (zh) * 2007-10-05 2011-09-28 帝斯科匹尔公司 固态驱动器优化器
US8108638B2 (en) 2009-02-06 2012-01-31 International Business Machines Corporation Backup of deduplicated data
US8799572B2 (en) 2009-04-20 2014-08-05 Microsoft Corporation Sliding-window multi-class striping
US9396104B1 (en) * 2010-03-22 2016-07-19 Seagate Technology, Llc Accessing compressed data of varying-sized quanta in non-volatile memory
US10114746B2 (en) 2010-10-14 2018-10-30 Micron Technology, Inc. Nonvolatile storage using low latency and high latency memory
US9747363B1 (en) * 2012-03-01 2017-08-29 Attivio, Inc. Efficient storage and retrieval of sparse arrays of identifier-value pairs
US9690642B2 (en) 2012-12-18 2017-06-27 Western Digital Technologies, Inc. Salvaging event trace information in power loss interruption scenarios
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US9552382B2 (en) 2013-04-23 2017-01-24 Exablox Corporation Reference counter integrity checking
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
WO2014201270A1 (en) 2013-06-12 2014-12-18 Exablox Corporation Hybrid garbage collection
US9934242B2 (en) 2013-07-10 2018-04-03 Exablox Corporation Replication of data between mirrored data sites
CN104516792A (zh) * 2013-10-08 2015-04-15 杰发科技(合肥)有限公司 一种数据备份方法及装置
US10248556B2 (en) * 2013-10-16 2019-04-02 Exablox Corporation Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session
US9985829B2 (en) 2013-12-12 2018-05-29 Exablox Corporation Management and provisioning of cloud connected devices
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US10168937B2 (en) 2014-09-25 2019-01-01 Hewlett Packard Enterprise Development Lp Storage space allocation
US9652179B2 (en) * 2014-12-01 2017-05-16 Macronix International Co., Ltd. Memory system and a data managing method thereof
US20160179399A1 (en) * 2014-12-23 2016-06-23 Sandisk Technologies Inc. System and Method for Selecting Blocks for Garbage Collection Based on Block Health
JP6613568B2 (ja) * 2015-01-19 2019-12-04 富士通株式会社 処理プログラム、処理装置および処理方法
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
CN108509353A (zh) * 2018-03-14 2018-09-07 清华大学 基于裸闪存的对象存储构建方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998014879A1 (en) * 1996-09-30 1998-04-09 Intel Corporation Method for performing a continuous over-write of a file in a nonvolatile memory

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61169941A (ja) 1985-01-22 1986-07-31 Sony Corp 記憶装置
EP0376285B1 (en) 1988-12-27 1994-03-09 Nec Corporation Microcomputer having electrically erasable and programmable nonvolatile memory
US4965828A (en) 1989-04-05 1990-10-23 Quadri Corporation Non-volatile semiconductor memory with SCRAM hold cycle prior to SCRAM-to-E2 PROM backup transfer
DE69033438T2 (de) 1989-04-13 2000-07-06 Sandisk Corp Austausch von fehlerhaften Speicherzellen einer EEprommatritze
JPH04221496A (ja) 1990-03-29 1992-08-11 Intel Corp 単一基板上に設けられるコンピュータメモリ回路およびコンピュータメモリを消去するためのシーケンスを終らせる方法
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
JP3408552B2 (ja) 1991-02-11 2003-05-19 インテル・コーポレーション 不揮発性半導体メモリをプログラム及び消去する回路とその方法
US5355464A (en) 1991-02-11 1994-10-11 Intel Corporation Circuitry and method for suspending the automated erasure of a non-volatile semiconductor memory
US5255314A (en) 1991-03-29 1993-10-19 At&T Bell Laboratories Switch adjunct integration arrangement
GB2265734A (en) * 1992-03-27 1993-10-06 Ibm Free memory cell management system
JPH0750558B2 (ja) 1992-09-22 1995-05-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリ
JP2816062B2 (ja) 1992-10-05 1998-10-27 株式会社東芝 メモリセルの情報の消去方法
US5351216A (en) 1993-03-05 1994-09-27 Microchip Technology Incorporated Premature termination of microcontroller EEPROM write
US5353256A (en) 1993-06-30 1994-10-04 Intel Corporation Block specific status information in a memory device
US5424992A (en) 1993-08-25 1995-06-13 Texas Instruments Incorporated, A Delaware Corporation Method and device for detecting and controlling an array source signal discharge for a memory erase operation
JP3301047B2 (ja) 1993-09-16 2002-07-15 株式会社日立製作所 半導体メモリシステム
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5424993A (en) 1993-11-15 1995-06-13 Micron Technology, Inc. Programming method for the selective healing of over-erased cells on a flash erasable programmable read-only memory device
JPH07153286A (ja) 1993-11-30 1995-06-16 Sony Corp 半導体不揮発性記憶装置
FR2713803B1 (fr) 1993-12-07 1996-01-12 Gemplus Card Int Carte à mémoire et procédé de fonctionnement.
JPH07226097A (ja) 1994-02-15 1995-08-22 Mitsubishi Electric Corp 不揮発性半導体記憶装置
JP3507132B2 (ja) 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5623654A (en) * 1994-08-31 1997-04-22 Texas Instruments Incorporated Fast fragmentation free memory manager using multiple free block size access table for a free list
US5742787A (en) 1995-04-10 1998-04-21 Intel Corporation Hardware reset of a write state machine for flash memory
US5568644A (en) 1995-05-05 1996-10-22 Apple Computer, Inc. Method and apparatus using a tree structure for the dispatching of interrupts
DE29513792U1 (de) 1995-08-28 1995-10-12 Siemens AG, 80333 München Prozessoreinheit
GB2291990A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system
US5805929A (en) 1996-01-29 1998-09-08 International Business Machines Corporation Multiple independent I/O functions on a PCMCIA card share a single interrupt request signal using an AND gate for triggering a delayed RESET signal
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US5687121A (en) 1996-03-29 1997-11-11 Aplus Integrated Circuits, Inc. Flash EEPROM worldline decoder
JPH09306189A (ja) 1996-05-10 1997-11-28 Mitsubishi Electric Corp 不揮発性半導体記憶装置
JPH1049360A (ja) * 1996-08-06 1998-02-20 Nec Eng Ltd フラッシュメモリへの書き込み方式
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
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
US6401160B1 (en) 1999-03-31 2002-06-04 Intel Corporation Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory
US6571326B2 (en) * 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998014879A1 (en) * 1996-09-30 1998-04-09 Intel Corporation Method for performing a continuous over-write of a file in a nonvolatile memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100703753B1 (ko) 2005-04-14 2007-04-06 삼성전자주식회사 파일 시스템 관리 장치 및 방법

Also Published As

Publication number Publication date
US6839823B1 (en) 2005-01-04
US6226728B1 (en) 2001-05-01
KR20010042905A (ko) 2001-05-25
TW440762B (en) 2001-06-16
EP1619585A2 (en) 2006-01-25
WO1999054824A1 (en) 1999-10-28
MY122440A (en) 2006-04-29
EP1071996A1 (en) 2001-01-31
EP1619585A3 (en) 2008-02-13
EP1071996A4 (en) 2003-03-05
AU3864399A (en) 1999-11-08

Similar Documents

Publication Publication Date Title
KR100389241B1 (ko) 비휘발성 메모리에서의 가변 크기 데이터의 효율적인관리를 위한 동적 할당
US6401160B1 (en) Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory
US6571326B2 (en) Space allocation for data in a nonvolatile memory
US20060168392A1 (en) Flash memory file system
EP0852765B1 (en) Memory management
US6282605B1 (en) File system for non-volatile computer memory
US8060718B2 (en) Updating a memory to maintain even wear
KR100324028B1 (ko) 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법
US7162606B2 (en) Multiple segment data object management
US8745316B2 (en) System and method of managing indexation of flash memory
KR100526188B1 (ko) 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
US7139896B2 (en) Linear and non-linear object management
US7130979B2 (en) Dynamic volume management
US20020112116A1 (en) Methods, systems, and computer program products for storing data in collections of tagged data pieces
US20010054129A1 (en) Method, system and computer program
GB2298063A (en) Semiconductor disk device
KR100703680B1 (ko) 플래시 파일 시스템
KR100638638B1 (ko) 플래시 메모리의 제어 방법
JP3801176B2 (ja) メモリ制御方法、記憶装置、制御プログラムおよび可読記録媒体
JP3904182B2 (ja) データ管理システムおよびそれを用いたデータ管理方法
JP2004355559A (ja) 不揮発性メモリのデータ書き換え方法

Legal Events

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

Payment date: 20130603

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140603

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20150529

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20160527

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20170601

Year of fee payment: 15

LAPS Lapse due to unpaid annual fee