KR101247574B1 - 메모리 기기 상의 데이터 저장 방법, 기기 및 데이터 구조 - Google Patents

메모리 기기 상의 데이터 저장 방법, 기기 및 데이터 구조 Download PDF

Info

Publication number
KR101247574B1
KR101247574B1 KR1020107015328A KR20107015328A KR101247574B1 KR 101247574 B1 KR101247574 B1 KR 101247574B1 KR 1020107015328 A KR1020107015328 A KR 1020107015328A KR 20107015328 A KR20107015328 A KR 20107015328A KR 101247574 B1 KR101247574 B1 KR 101247574B1
Authority
KR
South Korea
Prior art keywords
data
unit
erasable
units
size
Prior art date
Application number
KR1020107015328A
Other languages
English (en)
Other versions
KR20100090306A (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 KR20100090306A publication Critical patent/KR20100090306A/ko
Application granted granted Critical
Publication of KR101247574B1 publication Critical patent/KR101247574B1/ko

Links

Images

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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/1004Compatibility, e.g. with legacy hardware
    • 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/1016Performance 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
    • 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/7206Reconfiguration of flash memory system
    • 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/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Electroluminescent Light Sources (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

제1 정수값의 정수배의 크기를 갖는 복수의 소거가능 유닛들을 포함하는 메모리 기기들 상에 데이터를 저장하는 방법이 제공되며, 상기 방법은 각각이 데이터 유닛 헤더를 포함하는 복수의 데이터 유닛들[여기서 상기 데이터 유닛들의 크기는 상기 제1 정수값과 같음], 각 데이터 유닛 내의 복수의 데이터 아이템들 및 대응되는 데이터 아이템 헤더들을 포함하는 데이터 구조를 제공하는 단계, 각 소거가능 유닛에 적어도 하나의 데이터 유닛을 연관시키는 단계, 상기 데이터 아이템들 내에 상기 데이터를 저장하고 상기 대응되는 데이터 아이템 헤더들 내에 데이터 아이템 상태 정보를 저장하는 단계, 및 상기 데이터 유닛 헤더들 내에 데이터 유닛 상태 정보를 저장하는 단계를 포함한다.

Description

메모리 기기 상의 데이터 저장 방법, 기기 및 데이터 구조{Method, device and data structure for data storage on memory devices}
본 발명은 비휘발성 메모리 기기 상에 데이터를 저장하는 방법 및 기기에 관한 것이다. 그것은 또한 그 비휘발성 메모리 기기를 포함하는 전자 기기의 제조(manufacture) 중에 이러한 메모리 기기의 초기 프로그래밍을 향상시키기 위한 데이터 구조에 관한 것이다.
몇 가지 엠베디드 소프트웨어를 구비한 소비자 제품들은 또한 통상적으로 엔드 유저(end user)를 위한 어떤 콘텐트를 포함한다. 이 콘텐트는 음악, 사진, 어플리케이션, 엔드 유저 도움 메모(help note) 또는 더 나아가서는 엔드 유저가 제품을 사용하는 것을 돕는 미리 인스톨된 세팅들(settings)까지도 포함할 수 있다. 그것은 또한 그 제품 자체에 의해 사용되는 일정 데이터일 수도 있다. 이 콘텐트 및 엠베디드 소프트웨어는 통상적으로 엔드 유저에게 그 제품을 발송하기 전에 제조 중에 그 제품의 비휘발성 메모리에 프로그램된다.
콘텐트는 많은 경우들에 있어서 제품을 위한 엠베디드 소프트웨어로서 별도의 메모리에 아니면 동일한 비휘발성 메모리에 저장된다. 만약 엔드 유저가 비휘발성 메모리에 개인적인 콘텐트를 저장할 수 있는 경우에 통상적으로는 플래시 파일 시스템(flash file system)이 필요하게 된다. 읽기전용(read-only) 콘텐트의 경우에도 또한 읽기-전용 플래시 파일 시스템이 사용될 수 있다. 특정 플래시 파일 시스템 솔루션에 무관하게 이 콘텐트는 제조 시간이 너무 많이 증가되지 않도록 제조 중에 가능한한 빨리 비휘발성 메모리에 프로그램되어야 할 필요가 있는데, 왜냐하면 그 제조 시간은 제품의 가격 및 대량 제조 능력에 영향을 미치기 때문이다.
소비자 제품들에서 보통 사용되는 비휘발성 메모리 기술들은 예를 들어 NAND, NOR, 및 상 변화(Phase Change) 메모리들을 포함한다. NAND 및 NOR 메모리 기술은 플래시 파일 시스템을 통한 전용 핸들링을 요구하는데 왜냐하면 메모리 셀들이 단지 논리적 1에서 0으로 프로그램되기 때문이다. 만약 논리적 0이 논리적 1로 다시 변경되는 것이 필요한 경우 먼저 소거 작업(erase operation)이 요구된다. 소거 작업은 각 워드(16 비트) 또는 바이트(8 비트)가 개별적으로 소거될 수 없게 메모리 기기에서 구현된다. 대신에 소거가능 유닛(erasable unit)은 더 많은 데이터 량, 통상적으로 8 킬로바이트(Kilobyte = 1024 바이트, kB)의 배수(예: 8 kB, 16 kB, 32 kB, 64 kB, 128 kB, 256 kB 또는 512 kB)를 포함한다.
즉, 최악의 경우 시나리오에서 단일 워드 또는 바이트(예: 8 비트)를 덮어쓰기(overwriting)하는 것은 8 kB의 소거가능 유닛의 삭제를 요구할 것이다. 당연히 이는 사용자가 경험하게 되는 쓰기 속도를 매우 악화시킨다. 더 작은 데이터 아이템들(data items)의 덮어쓰기를 허용하면서도 적합한 쓰기 속도를 제공할 수 있도록 하기 위해, 이전에 언급된 메모리 타입들을 지원하기 위한 상이한 종류의 플래시 파일 시스템 구현들이 존재한다. 이들 파일 시스템들에서는 소거 작업이 최소로 유지되도록 데이터가 배열되어, 쓰기 성능을 향상시켜 준다.
매우 단순한 예에서 그 파일 시스템은 먼저 플래시 메모리의 쓰여지지 않은 부분들(unwritten portions)에 관하여 계속 추적하여 그 쓰여지지 않은 부분들에 대한 쓰기 작업을 수행할 것이다. 쓰여지지 않은 부분들 어느 것도 남겨져 있지 않은 경우에만 그 파일 시스템은 몇몇 부분들을 다시 쓰기가능하게 만들기 위해 소거 작업을 수행할 것이다. 일반적으로 말해서 그 파일 시스템은 소거가능 유닛들이 다시 지워지기 전에 먼저, 소거된/쓰여지지 않은 부분들을 최대한 채우려고 시도한다.
그러나, 데이터가 플래시 메모리에 쓰여져야 하는 방식에 기인하여 이러한 파일 시스템 구현은 메모리 하드웨어의 내부 구성에 상당히 의존한다. 이것은 단일 작업에서 소거될 수 있는 최소 부분의 크기, 즉 소거가능 유닛의 크기를 포함한다. 그 소거가능 유닛의 크기가 미리 알려져 있는 경우에만 이전의 단순한 예에서의 파일 시스템이 쓰기 및 소거 작업들을 적절하게 관리할 수 있다. 그러므로, 데이터를 쓰는 어플리케이션과 실제 물리적 쓰기 작업 간에 변환(conversion)이 필요로 되어서, 상당한 양의 프로세싱이 필요하게 된다. 필요로 되는 변환에 기인하여 그 쓰기 작업은 미리 구성된 데이터 이미지(data image)들을 사용하여 데이터를 쓰는 것과 비교할 때 상당히 속도가 느려진다.
따라서, 제품, 예를 들어 모바일 전화기나 다른 전자 기기의 제조 중에, 플래시 메모리 내에 엠베디드 소프트웨어 및/또는 미리 프로그램된 콘텐트를 프로그램하는 것은 제조 시간에 상당히 영향을 미친다. 제조 시간은, 대량 제조에 요구되는 처리량(throughput)을 높이기 위해, 그리고 또한 제품의 가격을 합리적인 수준으로 유지시키기 위해, 짧게 유지되어야 할 것이다. 그러므로, 앞에서 기술된 바와 같은 기존의 플래시 파일 시스템 접근법의 사용은 제조 속도의 관점에서 볼 때 대량 제조에 적합하지 않다.
제조 속도를 높이기 위해, 기생성된 데이터 이미지들이 비휘발성 메모리 내에 엠베디드 소프트웨어 및/또는 콘텐트를 프로그램하는데 사용된다. 이는 저속의 플래시 파일 시스템의 사용을 회피시킨다. 그러나, 이러한 데이터 이미지들의 사용은, 소거가능 유닛 크기를 포함하여 플래시 메모리의 특정 하드웨어 구성에 맞게 이루어질 수 있다.
여러가지 타입의 비휘발성 메모리 하드웨어가 일정 제품에서 사용되어야 하는 경우가 있을 수 있다. 이는 예를 들어, 메모리의 제조업자 변경, 여러가지 하드웨어 타입의 비휘발성 메모리 사용 또는 다른 이유들에 따른 것일 수 있다. 여러가지 타입의 메모리, 예를 들어 Not AND(NAND), Not OR(NOR), 상 변화(Phase Change) 또는 NROM(Nitrided Read Only Memory) 메모리들뿐만 아니라 동일 타입이지만(예: NAND) 상이한 제조자들이나 상이한 제조 배치(manufacture batch)들에서 나온 메모리들은 상이한 크기의 소거가능 유닛들을 가질 수 있다. 기존의 플래시 파일 시스템들의 경우에 소거가능 유닛의 크기는 미리 알려져 있어야 하고, 이에 따라 전자 기기의 제조자의 유연성(flexibility)을 상당히 감소시켰다. 그러므로 동일한 소거가능 유닛 크기를 가지는 메모리 타입들만이 사용될 수 있거나, 아니면 제조자가 다른 소거가능 유닛 크기를 가진 각각의 메모리에 맞추어 구성되는 새로운 데이터 이미지들을 생성하여야 한다.
프로그램하기 전에, 제조 중 데이터 이미지들을 (해당 플래시 메모리 기기에 대해 특정한(specific)) 요구되는 포맷으로 변환하는 개인용 컴퓨터(PC) 도구들을 사용하는 것이 알려져 있다. 이는 그 변환을 하기 전에 플래시 기기 타입이 탐지되는 것을 필요로 한다. 이는 또한 PC 컨버터 소프트웨어(converter software)를 사용되는 플래시 파일 시스템 버전에 얽매이게 하여서 이에 따라 모든 버전들은 그 PC 컨버터 소프트웨어에 의해 지원되어야 한다. 제조 환경에서의 제품에서 그 사용되는 플래시 파일 시스템 및 플래시 메모리 기기에 관한 요구되는 정보를 얻기 위해, 그 제품을 시동(start-up)시키는 것이 요구되고 이는 추가 시간을 소비하는 것이다.
상이한 메모리 타입들(다중 레벨 셀(Multi Level Cell; MLC) 및 단일 레벨 셀(Single Level Cell; SLC)) 및/또는 상이한 프로세스들(110 nm vs. 90 nm vs. 65 nm)로부터의 메모리들은 상이한 크기로 된 소거가능 유닛들과 같은 상이한 명세사항들(specifications)을 가질 수 있다. 이는 보통 플래시 파일 시스템이 소거가능 유닛 크기에 기초하여 그 자신의 기능을 핸들링하기 때문에 기생성된 플래시 메모리들이 사용될 수 없어서 대량 제조를 난해하게 만든다. 만약 수개의 소거가능 유닛 크기들이 동일 제품 내에서 지원될 필요가 있는 경우, 이는 제조를 위해 수개의 플래시 이미지들(제품 콘텐트)을 가져야 할 필요성을 수반하거나 또는 플래시 파일 시스템을 통해 모든 쓰기 작업이 이루어져야 한다. 제조 시에 플래시 파일 시스템을 사용하는 것은 준비된 플래시 이미지들을 사용하는 것보다 더 느리다. 만약 개개의 이미지가 각 플래시 타입 제품에 대하여 생성된다면, 소프트웨어 배포 및 유지보수가 너무 복잡하게 된다.
알려져 있는 플래시 파일 시스템들은 전자 제품들의 제조자들에게는 불리한 것임이 명백한데, 왜냐하면 그것들은 제품을 위한 메모리 타입들의 가능한 선택범위를 감소시키거나 아니면 시간 소모적이고 비싸게 제조를 수행하게 하기 때문이다.
본 발명은 비휘발성 메모리 기기 상에 데이터를 저장하는 방법 및 기기를 제공하기 위한 것으로서, 비휘발성 메모리 기기를 포함하는 전자 기기의 제조 중에 이러한 메모리 기기의 초기 프로그래밍을 향상시키기 위한 데이터 구조를 제공하기 위한 것이다.
본 발명의 제1 측면에 따르면, 제1 정수값의 정수배의 크기를 갖는 복수의 소거가능 유닛들을 포함하는 메모리 기기들 상에 데이터를 저장하는 방법이 제공되고, 상기 방법은,
- 데이터 구조를 제공하는 단계로서,
- 데이터 유닛 헤더(data unit header)를 포함하는 복수의 데이터 유닛들(data units) [상기 데이터 유닛들의 크기는 상기 제1 정수값과 같음];
- 각 데이터 유닛 내의 복수의 데이터 아이템들 및 대응되는 데이터 아이템 헤더들;
을 포함하는 데이터 구조를 제공하는 단계;
- 적어도 하나의 데이터 유닛을 각 소거가능 유닛에 연관시키는 단계;
- 상기 데이터 아이템들 내에 상기 데이터를 저장하고 상기 대응되는 데이터 아이템 헤더들 내에 데이터 아이템 상태 정보를 저장하는 단계; 및
- 상기 데이터 유닛 헤더들 내에 데이터 유닛 상태 정보를 저장하는 단계;를 포함한다.
본 발명의 일 실시예에 따른 데이터 저장 방법은 상이한 크기로 된 소거가능 유닛들을 가진 메모리 기기들을 프로그램하기 위한 단일 데이터 이미지들을 생성하는 것을 가능하게 해 준다. 본 발명에 의해 제안되는 데이터 구조는 하나 이상의 데이터 유닛들이 단일 소거가능 유닛 내로 결합되는 것을 가능하게 하고, 여기서 각 데이터 유닛은 데이터 유닛 상태 정보를 저장하기 위한 자신의 고유의 데이터 유닛 헤더를 구비한다. 이 정보는 피소거 유닛(erase unit) 내 모든 데이터 유닛들에 대하여 유효할 것이다. 그러므로 이 데이터 구조를 사용하는 파일 시스템 이미지들이, 제1 값에서부터 그것의 더 높은 배수들에까지 이르는 크기들을 가진 소거가능 유닛들을 갖는 메모리 기기들에 대하여 - 어떠한 변경 또는 재생성 필요도 없이 - 사용될 수 있다.
가장 단순한 경우에서 소거가능 유닛 크기는 제1 정수값과 같다. 그 경우 단지 하나의 데이터 유닛만이 각 소거가능 유닛 내에 포함된다. 다른 예들에서 소거가능 유닛 크기는 제1 값의 2배와 같다. 이 경우에 2개의 데이터 유닛들이 각 소거가능 유닛 내로 결합된다. 이 결합에 기인하여 앞에서의 것과 같은 동일 파일 시스템 이미지가 사용될 수 있다.
그러므로 본 발명은 상이한 소거가능 유닛 크기들을 가진 메모리 기기들을 포함하는 전자 기기들의 제조자들에 대하여 유연성을 증대시켜 주는데, 왜냐하면 동일 파일 시스템 이미지(예: 엠베디드 소프트웨어, 운영 시스템, 미리 프로그램된 콘텐트 등을 포함)가 사용될 수 있기 때문이다. 만약 동일 모델/타입의 전자 기기 (또는 일반적으로 제품)에서, 예컨대 메모리 기기들의 제조업자 변경에 기인하여, 초기 생산 배치(production batch)에서 사용되는 것과는 다른 타입의 메모리 기기가 사용되어야 한다면, 이는 새로운 파일 시스템 이미지의 생성을 필요로 함이 없이 가능하다. 이는 시간을 절약하는데, 즉 이는 제조 라인의 처리량을 증대시키고, 제조자에게 일정 제품에서 사용되는 메모리 기기들의 선택에 있어서의 제약을 훨씬 더 적게 해 준다.
하나의 바람직한 실시예에 따르면 상기 메모리 기기들은 최소의 쓰기가능 유닛(writable unit)을 가지며 그리고 상기 데이터 아이템 헤더들의 크기는 상기 최소의 쓰기가능 유닛의 정수배이다.
하나의 바람직한 실시예에 따르면,
- 상기 소거가능 유닛들의 크기는 적어도 상기 제1 값의 2배이고;
- 적어도 2개의 데이터 유닛들이 각 소거가능 유닛에 연관되며; 그리고
- 각 소거가능 유닛 내의 단일 데이터 유닛 헤더가 그 동일한 소거가능 유닛 내의 모든 데이터 유닛들의 상태 정보를 저장하기 위해 사용된다.
이 단일 데이터 유닛 헤더는 (메모리 주소에 관하여) 첫 번째 또는 마지막, 또는 제2, 제3 데이터 유닛 헤더 등과 같은 임의의 다른 지정된 데이터 유닛 헤더일 수 있다. 이 데이터 유닛 헤더는 본 발명의 실시예들에 따른 데이터 저장 방법 및 데이터 구조를 사용하여 기기의 (예: 첫 번째) 시동 중에 선택될 것이다. 단지 이 선택된 데이터 유닛 헤더만이 그 기기의 추가 작업 동안 사용될/업데이트될 것이다. 그 데이터 구조를 사용하는 데이터 이미지의 생성 동안에 모든 데이터 유닛 헤더들은 각자의 상태 정보를 가지는데, 왜냐하면 이 단계에서는 그 선택된 데이터 유닛 헤더가 어떤 것일지가 알려져 있지 않기 때문이다.
그러나, 본 발명의 다른 실시예들에서 소거가능 유닛의 모든 데이터 유닛 헤더들이나 모든 데이터 유닛 헤더들의 부분집합이 또한 선택된 단일 데이터 유닛 헤더 대신에 사용될 수 있다는 것이 유념되어야 할 것이다.
하나의 바람직한 실시예에 따르면 상기 방법은,
- 상기 메모리 기기들 중 하나의 초기 프로그래밍 동안 상기 데이터 구조를 사용하는 단계;
- 모든 데이터 유닛 헤더들의 상태 정보를 독출하는 단계; 및
- 상기 소거가능 유닛 내의 모든 데이터 유닛들의 상태 정보를 상기 소거가능 유닛 내의 단일 데이터 유닛 헤더 내에 저장하는 단계;를 포함한다.
이 바람직한 실시예에서 소거가능 유닛 당 단지 하나의 데이터 유닛 헤더만이 상태 정보를 저장하는데 사용된다. 다른 데이터 유닛 헤더들은 사용되거나 업데이트되지 않는다. 즉, 초기 파일 시스템 이미지에서 모든 데이터 유닛 헤더들은 유효한 상태 정보를 포함한다. 메모리 기기의 최초 "정상"(normal) 액세스에 따른 초기 프로그래밍 후에 그리고 나중에 단지 하나의 단일 데이터 유닛 헤더만이, 예컨대 하나의 소거가능 유닛 내의 "마지막" 또는 "첫 번째" 데이터 유닛 헤더만이 현재 상태 정보에 관련하여 사용된다/업데이트된다.
본 발명의 제2 측면에 따르면 컴퓨터 프로그램 제품이 제공되는데, 상기 컴퓨터 프로그램 제품은 상기 컴퓨터 프로그램 제품이 실행되는 기기에게 상기에서 기술된 방법을 수행하도록 지시하기 위한 프로그램 코드를 포함한다. 하나의 바람직한 실시예에서 상기 프로그램 코드는 컴퓨터 판독가능 매체 상에 저장된다.
본 발명의 제3 측면에 따르면, 제1 정수값의 정수배인 크기를 갖는 복수의 소거가능 유닛들을 포함하는 메모리 기기들 상에 데이터를 저장하기 위한 데이터 구조가 제공되는데, 여기서 상기 데이터 구조는,
- 상기 제1 정수값과 같은 크기를 갖는, 데이터 유닛 헤더를 포함하는 복수의 데이터 유닛들;
- 각 데이터 유닛 내의 복수의 데이터 아이템들 및 대응되는 데이터 아이템 헤더들;을 포함하고,
여기서 적어도 하나의 데이터 유닛이 각 소거가능 유닛에 제공되고, 상기 데이터 아이템들은 페이로드 데이터(payload data)를 저장하도록 구성되고, 상기 데이터 아이템 헤더들은 데이터 아이템 상태 정보를 저장하도록 구성되며, 그리고 상기 데이터 유닛 헤더들은 데이터 유닛 상태 정보를 저장하도록 구성된다.
하나의 바람직한 실시예에 따르면 상기 메모리 기기들은 허용된 최소의 쓰기가능 유닛을 가지며, 여기서 상기 데이터 아이템 헤더들의 크기는 상기 최소의 쓰기가능 유닛의 정수배이다.
본 발명의 제4 측면에 따르면 상기에서 기술된 데이터 구조를 포함하는 메모리 기기가 제공된다. 본 발명의 제5 측면에 따르면 적어도 하나의 이러한 메모리 기기를 포함하는 전자 기기가 제공된다.
본 발명의 제6 측면에 따르면 본 발명의 데이터 구조는 소거가능 유닛들을 포함하는 적어도 2개의 상이한 메모리 기기들을 프로그램하기 위해 사용되고, 여기서 각 메모리 기기의 소거가능 유닛들의 크기는 제1 정수값의 정수배이며, 그리고 상기 메모리 기기들 중 한 메모리 기기의 소거가능 유닛들의 크기는 상기 메모리 기기들 중 다른 한 메모리 기기의 소거가능 유닛들의 크기와 다르다.
본 발명은, 도면들과 함께 해석될 때, 단지 대표적으로만 제공되고 본 발명을 이하에서 예시되는 임의의 특정 실시예로 제한하려는 것이 아닌 바람직한 실시예들에 관한 다음의 상세한 설명에 의해 더 충분하게 이해될 수 있다. 도면들에 있어서,
도 1은 본 발명의 방법의 일 실시예에 관한 흐름도를 보여주고 있고;
도 2는 본 발명의 데이터 구조의 일 실시예를 보여주고 있으며; 그리고
도 3은 본 발명의 전자 기기 및 메모리 기기의 일 실시예를 보여주고 있다.
이하의 설명에서는 본 발명이 적용될 수 있는 비휘발성 메모리 기기들의 일례로서 플래시 메모리 기기들에 주로 초점을 맞출 것임을 유념하여야 할 것이다. 그러나, 본 발명은 NOR, NAND, NROM 및 상 변화 메모리들을 포함하지만 이에 제한되지 않는 플래시 메모리들에 관련된 사용에 제한되는 것은 아니고, 하드웨어 또는 논리적 소거가능 유닛들의 사용에 기반한 임의의 비휘발성 메모리 기술에 대하여 사용될 수 있다.
본 발명은 하드웨어 소거가능 유닛들을 구비하진 않지만 유사한 논리 기능으로 구현되는 메모리들에 적용될 수 있다. 예를 들어 레거시(legacy) 문제 즉 역 호환성(backwards compatibility)에 기인하여, 소거가능 유닛들의 사용을 요구하지 않는 메모리들이라도 그것들이 소거가능 유닛들을 구비한 것처럼 논리적으로 구현될 수 있다. 이는 예를 들어 소거 기능 및/또는 소거 명령들이 하드웨어 소거가능 유닛들을 구비한 메모리들에서와 동일한 방식으로 사용된다는 것을 의미한다. 본 발명의 실시예들에 따른 데이터 구조는 이러한 메모리들에도 마찬가지로 적용될 수 있다. 즉, 본 발명은 하드웨어 소거가능 유닛들의 존재를 요구하지 않을 뿐만 아니라, 또한 논리적 소거가능 유닛들로써 구성되어진 메모리들에 대하여도 사용될 수 있다.
또한 가능한 실시예들의 설명에서 사용된 특정 값들은 단지 대표적으로만 사용된 것이며, 본 발명은 언급된 특정 값들 중 어느 것에도 제한되지 않는다.
본 발명의 바람직한 실시예들에 따르면, 기존의 플래시 파일 시스템은 제조 중에 최종 생산품(end product)들의 메모리 기기들의 프로그래밍 동안 사용되지 않고, 이는 프로그래밍 작업의 속도를 실질적으로 감소시킬 것이다. 대신에, 본 발명은 바람직한 실시예들에 따라, 메모리 기기에 플래시가능 이미지를 플래싱(flashing)(즉 프로그래밍)하기 전에 그 이미지가 생성될 수 있게 해 주는 데이터 구조를 제공한다. 단순한 프래그래밍 명령들이 데이터를 플래시 기기 내에 최적으로 프로그램하는데 사용된다.
이 이미지는 데이터 구조 및 데이터 유닛 헤더들의 상부에서 사용될 파일 시스템의 데이터 아이템 헤더들을 이미 포함하고 있고, 따라서 이 작업은 기존의 플래시 파일 시스템을 더 이상 필요로 하지 않는다. 연속적인 주소들이 메모리 기기를 프로그래밍하는데 사용될 수 있기 때문에 프로그래밍이 더 빠르다. 플래시 기기 내의 프로그래밍 버퍼들은 (만일 있다면), 프로그래밍 버퍼가 데이터 유닛의 크기와 매치되지 않을지라도 사용될 수 있다.
초기 프로그래밍 이후에, 예컨대 메모리 기기를 포함하는 최종 생산품의 최초 시동 시에, 정상 작업 동안, 만약 데이터 아이템이 쓰여져야 할 것이라면, 그 데이터 아이템이 먼저 쓰여지고 그리고 나서 대응되는 데이터 아이템 헤더가 그 이후에 쓰여진다. 그 데이터 아이템 헤더는 상이한 위치에 위치되는데, 왜냐하면 데이터 아이템 헤더는 데이터 아이템 내에 포함되어 있지 않기 때문이고, 따라서 동일 프로그래밍 버퍼가 활용될 수 없다. 또한 이 정상 작업은 속도에 대하여 최적화될 수 있고, 몇몇 데이터 아이템들이 단일 작업 내에서 쓰여질 수 있으며, 몇몇 데이터 아이템 헤더들이 단일 프로그래밍 작업에서 업데이트될 수 있다. 이는 플래시 메모리 기기가 더 큰 프로그래밍 버퍼를 구비하는 경우에 이점을 제공한다.
바람직한 실시예들에 따르면, 본 발명은, 비휘발성 메모리 기기들의 실제 물리적 레이아웃(layout)이 전자 기기들의 제조에서 프로그래밍을 위해 사용되는 파일 시스템 이미지들에 대하여 어떠한 효과도 나타내지 못하거나 단지 약간의 효과만을 나타낼 수 있도록 데이터 구조를 제공한다. 본 발명의 실시예들에 따르면 비휘발성 메모리 기기들에 대한 데이터 구조의 기본 데이터 유닛들은 플래시 메모리들이나 기타 등등의 소거가능 유닛들에 결합될 수 있다. 파일 시스템 및/또는 그 파일 시스템에 의해 사용되는 소프트웨어 드라이브는 소거가능 유닛 크기를 인식하고 그것을 지원할 수 있어야 한다.
각각의 데이터 유닛은 몇몇 데이터 아이템들 및 그것들의 헤더들을 포함한다. 데이터 아이템들은 실제 데이터 페이로드를 저장하도록 제공되는데, 여기서 그 데이터 페이로드는 임의의 종류의 데이터, 예를 들어 운영 시스템 데이터, 멀티미디어 콘텐트 및 기타 등등일 수 있다. 데이터 아이템 헤더들은 데이터 아이템들의 유효성(validity)에 관한 정보를 포함하는 상태 정보를 포함한다.
이는 파일 시스템의 종류에 의존할 수 있고 또는 데이터베이스가 소프트웨어 드라이버에 더하여 사용된다. 바람직한 실시예들에서 데이터 아이템 헤더들은 적어도 자신이 속한 데이터 아이템의 데이터 아이템 넘버 및 유효성 정보를 포함할 것이다. 바람직한 실시예들에서 데이터 유닛 헤더들은, 메모리 기기의 특정 데이터 유닛 및/또는 피소거 유닛에 대한 잘못된 작업이 있었는지를 표시하는 특별 마커(marker) 및 데이터 유닛 유효성 정보를 포함하고 있다. 이러한 작업은 예컨대 인터럽트된 소거 작업일 수 있다.
실제 파일 시스템의 사용 없이 전자 기기 내에 페이로드 데이터를 저장하기 위한 프로그래밍 이미지를 제공하는데 사용되는 초기 데이터 구조에서, 각각의 데이터 유닛은 자신 고유의 헤더를 포함한다. 각 데이터 유닛 헤더는 유효한 상태 정보를 포함한다. 그러나, 하나의 바람직한 실시예에서, 초기 프로그래밍 후에 단지 하나의 데이터 유닛 헤더, 예를 들어 마지막/첫 번째 데이터 유닛만이 소거가능 유닛에서 유효한 헤더 정보를 보유한다. 이 실시예는 본 발명의 데이터 구조의 상부에서 사용되는 파일 시스템에 의해 다른 데이터 유닛 헤더들이 무시되는 것을 수반하고, 특히 그것을 포함하는 기기가 처음으로 시동하고 있을 때 또는 최초 시동 후 정상 동작 하에 있을 때 그러하다. 상태 정보는, 모든 데이터 유닛 헤더들 중 첫 번째/마지막 또는 임의의 다른 특정 데이터 유닛 헤더일 수 있는, 이 단일 데이터 유닛 헤더에만 쓰여진다/업데이트된다.
그러나, 다른 실시예들에서 소거가능 유닛의 모든 데이터 유닛 헤더들을 사용/업데이트하는 것 또한 가능하다는 것이 유념되어야 할 것이다.
본 발명의 데이터 구조의 상부에서 사용되는 파일 시스템은 임의의 특정 타입으로 한정되지는 않는다. 그러나, 그것은 데이터 구조에 의해 제공되는 데이터 아이템들을 사용할 수 있어야 한다. 데이터 아이템들의 크기는 데이터 구조에 의해 정의된다. 원칙적으로 데이터 아이템들의 크기는 단지 기초적 구성요소를 이루는 비휘발성 하드웨어 메모리의 최소의 쓰기가능 유닛 크기에 의해서만 제한된다. 만약 물리적 메모리가 이러한 최소의 쓰기 유닛을 가지고 있다면, 데이터 아이템들은 그것의 임의의 정수배일 수 있다.
본 발명의 데이터 구조는 실제 파일 정보를 보유하지 않는다. 이는 데이터 구조가 데이터 아이템 헤더들 내에 데이터 아이템들의 유효성 정보를 포함하지만 파일 시스템 그 자체가 파일 정보를 보유한다는 것을 의미한다. 즉, 파일 시스템은 어느 데이터 아이템들이 동일 파일에 속하는지를 추적한다. 또한 하나의 데이터 아이템에 적합할 소형 데이터 레코드들이 저장될 수 있다.
도 1은 본 발명의 방법의 일 실시예의 단계들을 보여준다. 단계(102)에서 소거가능 유닛들을 포함하는 메모리 기기에 대한 데이터 구조가 제공된다. 메모리 기기는 예를 들어 플래시 메모리일 수 있다. 소거가능 유닛들은 제1 값의 정수배인 크기를 가진다. 도 2에 도시된 실시예에서 이 제1 값은 64 kB이고, 소거가능 유닛들의 크기는 4 × 64 kB = 256 kB이다. 그러나, 이들은 단지 대표적인 값들이고, 다른 값들 및 정수 배수들이 마찬가지로 가능하다.
단계(104)에서 그 데이터 구조는 해당 데이터 유닛 헤더를 포함하는 복수의 데이터 유닛들을 구비하여 제공된다. 데이터 유닛들의 크기 또한 제1 값의 정수배이다. 그러나, 데이터 유닛 크기는 소거가능 유닛 크기와는 다른, 제1 값의 정수배일 수 있고, 여기서 그 데이터 유닛 크기의 정수배는 1 (즉, 그 경우 데이터 유닛 크기는 1 × 제1 값과 같음)에서부터 소거가능 유닛 크기의 정수배까지의 간격(interval) 내에 있다. 도 2에 도시된 예에서, 데이터 유닛 크기의 정수배는 1 × 64 kB = 64 kB이다. 만약 소거가능 유닛 크기가 256 kB이면, 2 × 64 kB = 128 kB 및 4 × 64 kB = 256 kB와 같은 정수 배수들이, 가능한 데이터 유닛 크기 값들일 것이다.
데이터 유닛 헤더들은 데이터 유닛의 부분이다. 도 2의 예에서 데이터 유닛 헤더들의 크기는 16 바이트이다. 그러나, 이것은 단지 예시적 값일 뿐이다. 다른 값들 및/또는 그것의 배수들이 또한 가능하다.
그 데이터 구조는, 단계(106)에서, 복수의 데이터 아이템들 및 대응되는 데이터 아이템 헤더들을 구비하는데 또한 제공된다. 데이터 아이템들은 실제 페이로드 데이터를 저장하는데 제공되고, 동시에 그들 각자의 헤더들은 해당 데이터 아이템의 상태를 표시한다. 도 2의 예에서, 데이터 아이템 크기는 512 바이트이다. 그러나, 다른 값들 및 배수들이 마찬가지로 가능하다. 이 예에서 각 데이터 아이템의 데이터 아이템 헤더의 크기는 8 바이트이다. 이 경우에 데이터 유닛 당 데이터 아이템들의 개수는 126이다. 만약 기초적 구성요소를 이루는 플래시 메모리들이 최소의 쓰기가능 유닛을 가진다면, 데이터 아이템 헤더들의 크기는 그 최소의 쓰기가능 유닛의 정수배이어야 한다. 일반적으로 그러한 경우 본 발명의 데이터 구조에서 사용되는 모든 유닛들은 그 최소의 쓰기가능 유닛의 정수배이어야 한다.
단계(108)에서 적어도 하나의 데이터 유닛이 각각의 소거가능 유닛에 연관된다. 다시 도 2의 예를 참조하면, 이 경우에, 4개의 데이터 유닛들(64 kB)이 각 소거가능 유닛(256 kB)에 연관된다. 각 데이터 유닛은 자신의 고유 데이터 유닛 헤더를 가진다는 것, 즉 이 경우에 각 소거가능 유닛 내에 총 4개의 데이터 유닛 헤더들이 존재한다는 것이 유념되어야 할 것이다.
단계(110)에서, 제공된 데이터 아이템들 내에 페이로드 데이터가 저장되고, 동시에 대응되는 상태 정보가 각자의 데이터 아이템 헤더들 내에 저장된다. 즉, 페이로드 데이터가 데이터 아이템들의 크기의 부분들로 분할되고 그리고 나서 거기에 저장된다. 그 데이터 구조 자체는 그 데이터 구조에 액세스하는 개체(entity)가 그 분할된 데이터를 병합시키거나 복구하는 것을 가능하게 하는 정보를 보유하지 않는다. 이 처리업무는 파일들에 대한 데이터 아이템들의 연관사항들(associations)을 계속 추적하는 상층부의 파일 시스템에 의해 이루어져야 한다.
그 데이터 구조 자체는 데이터 아이템들에 대한 유효성 정보(validity information)를 보유한다. 단계(112)에서 그 유효성 정보를 포함하는 데이터 유닛 상태 정보가 데이터 유닛 헤더들에 저장된다.
이러한 식으로 제공되는 데이터 구조는, 소거가능 유닛 크기가 제1 값의 정수배라면, 상이한 유형의 메모리 기기들을 프로그램하기 위한 이미지로서 바로 사용될 수 있다. 기초적 구성요소를 이루는 메모리가 최소의 쓰기 유닛을 가지는 경우에, 이것도 마찬가지로 고려되어야 한다. 도 2의 예를 다시 참조하면, 제공된 데이터 구조는 64 kB, 128 kB, 256 kB 또는 64 kB의 임의의 더 높은 배수의 소거가능 유닛 크기들을 가진 플래시 메모리들을 프로그램하는데 사용된다. 플래시 이미지는 단지 한 번만 생성되어야 하고 그리고 나서 재생성 필요 없이 이러한 상이한 메모리들을 프로그램하는데 사용될 수 있다.
데이터 유닛 크기 및 소거가능 유닛 크기의 비에 따라서, 소거가능 유닛 당 1개보다 많은 데이터 유닛 헤더가 존재할 수 있다는 것이 유념되어야 할 것이다. 이러한 경우에, 초기 프로그래밍이 행해진 후에, 본 발명의 실시예들에 따라 단지 하나의 단일 데이터 유닛 헤더만이 소거가능 유닛 전체에 관한 상태 정보를 저장하는데 사용될 수 있다. 본 발명의 데이터 구조를 가진 메모리 기기를 포함하는 기기의 최초 시동 시에 이들 실시예들에서는 다른 데이터 유닛 헤더들이 무시된다. 오직 선택된 단일 데이터 유닛 헤더만이 메모리 기기의 추후 사용 동안에 사용 및/또는 업데이트된다. 이 단일 데이터 유닛 헤더는 예를 들어 (메모리 주소에 관하여) 마지막이나 첫 번째 데이터 유닛 헤더이거나 또는 임의의 다른 지정된 데이터 유닛 헤더(2번째, 3번째 등)일 수 있다.
다른 실시예들에서 단일 데이터 유닛 헤더 뿐만 아니라 소거가능 유닛의 모든 데이터 유닛 헤더들을 사용할 수 있다는 것이 유념되어야 할 것이다. 소거가능 유닛의 모든 데이터 유닛 헤더들의 부분집합 즉 2개나 3개의 그러나 전부는 아닌 데이터 유닛 헤더들을 사용하는 것이 본 발명에 포함된다.
단계(112)에서는 데이터 구조의 제공 단계를 완료한다. 데이터 구조를 통하여, 제품이 콘텐트로써 미리 프로그램될 수 있게 해 주는 플래시 이미지가 생성될 수 있다. 이 도면에서 묘사된 추가 단계들은 본 발명의 일부 실시예들에서 임의적 선택가능 사항임을 유념하여야 할 것이다. 그러므로 이들 단계들은 다른 바람직한 실시예들에 존재하지 않을 수 있다.
단계(114)에서 소거가능 유닛 상태 정보를 저장하기 위한 데이터 유닛 헤더가 선택된다. 이 단계는 예컨대, 그 데이터 구조를 가진 메모리 기기를 갖춘 제품의 최초 시동 시에 수행된다. 예를 들어, (메모리 주소에 관하여) 마지막 데이터 유닛 헤더가 선택된다. 그리고 나서, 제품에 관한 추가 작업에서 소거가능 유닛 내의 모든 데이터 유닛들의 - 즉 그 소거가능 유닛 그 자체의 - 상태 정보가 그 선택된 데이터 유닛 헤더 내에 저장되고 (단계 116), 반면에 그 소거가능 유닛 내의 다른 데이터 유닛 헤더들은 더 이상 사용되지 않는다.
본 발명의 추가적 실시예들에서 단계(114)에서의 소거가능 유닛 상태 정보 저장을 위한 데이터 유닛 헤더의 선택이 나중에 반복될 수 있고, 상이한 데이터 유닛 헤더가 선택된다. 이는 데이터 유닛 헤더들에 관한 일종의 마모-균등화(wear-levelling)을 제공하는데에 유리할 수 있다. 그 재선택은 예를 들어, 관련된 소거가능 유닛에 관한 일정 횟수의 소거 작업들 후에 또는 특정 데이터 유닛 헤더에 대한 일정 횟수의 쓰기 작업들 후에 수행될 수 있다. 이러한 식으로 하드웨어 플래시 메모리의 마모가 모든 데이터 유닛 헤더들 간에 분산될 수 있다.
다른 바람직한 실시예들에서 1개보다 많은 데이터 유닛 헤더가 데이터 유닛 상태 정보를 저장하기 위해 선택된다. 또 다른 실시예들에서는 어떠한 선택도 전혀 행해지지 않는데, 이는 소거가능 유닛의 모든 데이터 유닛 헤더들이 소거가능 유닛/데이터 유닛 상태 정보를 저장하는데 사용됨을 의미한다.
본 발명에 의해 제안되는 데이터 구조 예는 도 2에서 볼 수 있다. 그 도면은 명료성을 향상시키기 위해, 일정한 척도에 따르지 않을 수 있다는 것이 유념되어야 할 것이다. 그것은 단지 예시적인 일례로서 이해되어야 할 것이다. 이것은 특히 데이터 아이템들의 개수가 데이터 아이템 헤더들의 개수와 일치하지 않을 수 있다는 점, 그리고 데이터 아이템들과 데이터 아이템 헤더들의 개수들은 데이터 유닛들과 소거가능 유닛들의 대표적인 크기 값들과 일치하지 않을 수 있다는 점을 내포하고 있다. 그 도면에서의 숫자들 및 치수들은 본 발명을 제한하는 것으로서 해석되어서는 안될 것이다.
만약 플래시 메모리가 256 kB의 소거가능 유닛들을 구비한다고 가정하면, 여기서 보여진 바람직한 실시예는 각 소거가능 유닛 내에 4개의 64 kB(즉, 64 × 1024 = 65536 바이트) 데이터 유닛들 #1, #2, #3 및 #4를 포함할 수 있다. 각 데이터 유닛은 512 바이트의 126 개의 데이터 아이템들을 구비한다. 각각의 데이터 아이템은 각자의 데이터 아이템의 상태 정보를 보유하는 8 바이트 데이터 아이템 헤더를 구비한다. 데이터 유닛 상태 정보를 위해 사용되는 16 바이트들이 남겨지는데, 즉 데이터 유닛 헤더는 16 바이트의 크기를 가진다. 다른 실시예들에서는 이들 대표적인 크기들이 이 예의 다른 배수들일 수 있음을 이해하여야 할 것이다.
각각의 데이터 유닛 헤더는 소거가능 유닛 사용에 관한 정보(소거가능 유닛 쓰기/소거 카운터(counter)), 소거가능 유닛/데이터 유닛 유효성에 관한 정보(그 유닛이 적절히 소거되는가, 그것이 삭제될 수 있는가 등)를 보유한다. 제품 또는 전자 기기의 소프트웨어에 의해 사용되는 경우, 이 유효성은 피소거 유닛 유효성을을 말한다.
기초적 구성요소를 이루는 하드웨어 플래시 메모리가 소규모의 쓰기 작업들을 하는 것에 관한 제한사항을 가진다면, 즉 가장 작은 값과 같은 부분들에서만 데이터가 쓰여질 수 있다면, 데이터 아이템 헤더 크기는 이에 따라 조절될 수 있다. 이러한 조절 또는 정의는 플래시 이미지 내에 포함될 데이터 및 그 플래시 이미지 그 자체를 생성하기 전에 행해져야 한다. 예를 들어 데이터 구조의 상부에서 사용될 실제 파일 시스템은 데이터 아이템 및 데이터 아이템 헤더 크기에 따라 선택/적응되어야 한다.
훨씬 더 소규모의 쓰기 작업들을 가능하게 해 주는 소프트웨어 또는 파일 시스템이 사용될 수 있는데, 여기서 이 소프트웨어 또는 파일 시스템은 이들 더 소규모의 쓰기 작업들을 그것들을 메모리 기기에 실제로 쓰기 전에 RAM(Random Access Memory) 내에 미리 버퍼링한다.
도 2에서 설명된 것과 동일한 구조가, 플래시 이미지를 변경함이 없이, 128 kB 소거가능 유닛들을 가진 플래시 메모리를 갖춘 제품에서도 여전히 사용될 수 있다. 그 경우에 단지 2개의 데이터 유닛들만이 각 소거가능 유닛 내에 저장될/각 소거가능 유닛과 연관될 것이다. 예를 들어, 어떤 제안된 플래시 메모리 기기들에서 소거가능 유닛 크기는 128 kB 또는 그것의 배수일 것임이 시사된다. 이것은 128 KB 또는 256 kB의 소거가능 유닛들을 포함할 수도 있지만, 512 kB의 소거가능 유닛들이나 임의의 다른 배수를 갖는 기기들도 마찬가지로 가능하다.
하나의 바람직한 실시예에서 128 kB 소거가능 유닛들을 갖는 이러한 환경에서 각 128 kB 소거가능 유닛에 2개의 데이터 유닛들이 제공될 것이다. 그 데이터 유닛들 내부에는 데이터 아이템들(예: 섹터(sector)들, 이것은 512 바이트 또는 512 바이트의 배수일 수 있음)이 위치해 있다. 이들 데이터 아이템들은 몇몇 소거가능 유닛들을 포함하는 부분들을 가진 데이터 구조 내부의 어느 곳에라도 위치할 수 있다.
쓰기 작업에 기인하여 요구되는 매 소거 작업이 플래시 메모리의 마모를 유발할 것이기 때문에 , 일종의 소위 마모 균등화가 수행되는 것이 바람직하다. 그것은 바람직하게는 메모리 기기가 더 균일하게 마모되도록 그 메모리 기기의 상이한 부분들에 데이터를 쓰는 것을 의미한다. 그러므로 동일 데이터 아이템이 또한 몇몇 위치들에서 동일 데이터 유닛 내에 존재할 수 있고, 여기서 단지 마지막 데이터 아이템/최신 데이터 아이템만이 유효하다.
본 발명의 바람직한 실시예들에 따르면 모든 데이터 유닛들은 그들 고유의 데이터 유닛 헤더를 가진다. 그러나, 데이터 구조의 이용 동안에 그 특정 플래시 메모리에서의 마지막 데이터 유닛 (또는 첫 번째 또는 다른 어떤 지정된 데이터 유닛)만이, 그 메모리에 액세스하는 시스템에 의해 사용/업데이트된다. 도 2의 예에서 데이터 유닛 헤더 #1 또는 데이터 유닛 헤더 #4가 사용될 수 있다. 그 사용을 위해 특정된, 데이터 유닛 내의 상이한 종류의 영역들이 있을 수 있는데, 즉 페이로드 데이터를 위한 데이터 아이템들, 대응되는 상태 정보를 위한 데이터 아이템 헤더들, 및 데이터 유닛/피소거 유닛 상태 정보를 위한 데이터 유닛 헤더들이 있을 수 있다.
물리적 블록 내의 데이터 유닛 헤더는 블록 상태 정보를 포함한다. 그 데이터는 또한 그 물리적 블록 내의 다른 데이터 유닛 헤더들에 존재하지만 그것은 나중에 즉 초기 프로그래밍 후에 업데이트되지는 않고, 그것은 메모리 기기의 추후 사용 중에 더 이상 필요로 되지 않는다. 몇 가지 상태들이 각 데이터 유닛 헤더 내에 저장되고 이에 따라 몇 가지 쓰기 작업들이 필요하게 된다. 그러므로 메모리 기기는 데이터 유닛 헤더 영역에 대한 쓰기 작업들을 지원하여야 하거나, 또는 그렇지 않으면 이들 몇몇 쓰기 작업들은 (휘발성 RAM 메모리와 같은) 다른 어떤 메모리에 미리 버퍼링되어서 나중에 그 영역에 쓰여져야 한다.
메모리가 256 kB의 소거가능 유닛들을 가진 그리고 데이터 유닛 크기가 64 kB인 하나의 예에서, 소거가능 유닛 당 총 4개의 데이터 유닛 헤더들이 존재할 것이다. 그들 중 3개(예: 메모리 주소에 관하여 첫 번째 3개의 것들)는, 비록 프로그래밍 이미지에서 그 3개의 데이터 유닛 헤더들에 데이터가 초기에 존재하였을지라도, 초기 프로그래밍 이후에는 더 이상 사용되지 않는다.
플래시 메모리 사용의 관점에서 볼 때 만약 데이터 유닛 크기 및 소거가능 유닛 크기가 같다면 그것은 특정 플래시 기기에 대하여 바람직할 것이다. 그러나, 이렇게 만드는 것은 각각의 특정 하드웨어 플래시 메모리 타입에 대하여 서로 다른 이미지들을 갖기 위해서는 그 플래시 메모리를 포함하는 최종 생산품들의 대량 제조에 너무 많은 시간과 노력을 필요로 한다.
따라서, 최종 생산품의 관점에서 볼 때, 소거가능 유닛에서 사용되지 않는 부가적 데이터 유닛 헤더들의 공간이 실제 낭비된다고 할지라도, 본 발명의 데이터 구조가 비용에 있어 더 효과적이다. 그러나, 이러한 낭비는 예컨대 128 kB의 크기를 가진 소거가능 유닛 당 4, 8, 16 또는 32 바이트들 (또는 그 소거가능 유닛의 크기에 따라서, 배수들) 정도의 공간들에 관한 것이다. 그러므로 이러한 공간 낭비는 무시될 수 있다.
실질적으로 유사한 제품들이지만 상이한 타입의 플래시 메모리들 - 예컨대 상이한 제조업자들 및/또는 제조 배치(batch)들로부터의 플래시 메모리들 및/또는 NOR나 NAND 등과 같은 완전히 상이한 기술들을 이용한 플래시 메모리들 - 을 갖춘 최종 생산품들에 대하여 (재)사용될 수 있는 단일 플래시 이미지를 사용함으로써 유연성 증대 효과를 얻는다.
도 3은 본 발명의 2개의 추가적인 실시예들을 보여주고 있다. 전자 기기(1), 예를 들어 모바일 전화기는 내부 플래시 메모리 기기(2)를 포함한다. 이 플래시 메모리(2)는 소거가능 유닛들에 기반하며, 그리고 본 발명의 일 실시예에 따라 예를 들어 도 2에 묘사된 것과 유사한 데이터 구조를 포함한다. 그러므로 이 모바일 전화기(1)는 그 데이터 구조에 기반한 플래시 이미지를 사용하여 초기에 프로그램될 수 있다. 동일 플래시 이미지가, 유사한 모바일 전화기들 - 즉 동일 모델/타입의 모바일 전화기들이지만 상이한 크기의 소거가능 유닛들을 가진 다른 타입/제품 배치(batch) 등의 플래시 메모리를 갖춘 모바일 전화기들 - 에서 사용될 수 있다.
그 도면은 또한 본 발명의 다른 실시예를 보여주고 있다. 착탈가능 매체(removable media, 4) - 이는 본 발명의 일 실시예에 따른 메모리 기기의 일례임 - 는 소거가능 유닛들에 기반한다. 착탈가능 매체(4)는 또한 본 발명의 일 실시예의 데이터 구조, 예를 들어 도 2에서와 같은 데이터 구조를 포함한다. 그 데이터 구조를 사용하여, 미리 프로그램된 콘텐트로써 이러한 메모리 카드들을 프로그램하기 위한 플래시 이미지들을 생성하는 것이 가능하다. 이러한 콘텐트는 백업 소프트웨어, 멀티미디어 콘텐트, 착탈가능 매체(4) 상에 저장될 개인 데이터를 보호하기 위한 암호화 소프트웨어 또는 기타 등등일 수 있다. 동일 플래시 이미지를 통해, 제조자는 비록 기초적 구성요소를 이루는 메모리 기기들이 상이한 소거가능 유닛 크기들을 가질지라도 상이한 타입의 착탈가능 매체를 프로그램할 수 있다.
이러한 착탈가능 매체(4)는 예를 들어 여기에서 묘사되는 모바일 전화기(1)에서 사용될 수 있는데, 여기서 그 모바일 전화기는 대응되는 미디어 리더(6)를 구비한다. 착탈가능 매체(4)는 또한 그 착탈가능 매체(4)로부터의 읽기 및/또는 그 착탈가능 매체(4)로의 쓰기에 적합하게 구성된 임의의 다른 전자 기기에서 사용될 수 있다.
특별히 중요한 것으로 여긴 본 발명의 기술특징들에 대한 관심을 끌기 위해 전술한 명세내용이 제공되었지만, 도면들에 도시된 그리고/또는 도면들에 대해 언급된 임의의 특허가능한 기술특징 또는 기술특징들의 조합에 대하여, 그에 관해 특별히 강조를 하였든 아니든 간에, 보호를 청구하고 있음이 이해되어야 할 것이다. 관련 기술분야에서 숙련된 자들은 본 개시내용을 고려할 때 여기에서의 방법 및 기기에 대한 변형 및/또는 개선을 할 수 있고 이는 여전히 첨부된 특허청구범위의 청구항들에서 밝힌 본 발명의 범위 내에 있음을 인식하여야 할 것이다.

Claims (11)

  1. 복수의 소거가능 유닛(erasable unit)들을 포함하는 메모리 기기들 상에 데이터를 저장하는 방법에 있어서,
    상기 방법은,
    - 각각의 데이터 아이템이 데이터 아이템 헤더(data item header)를 포함하는 복수의 데이터 아이템들로서, 각각의 데이터 아이템의 크기가 제1 정수값인, 복수의 데이터 아이템들; 및
    - 각각의 데이터 유닛이 데이터 유닛 헤더(data unit header) 및 적어도 하나의 데이터 아이템을 포함하는 복수의 데이터 유닛들로서, 각각의 데이터 유닛의 크기가 상기 제1 정수값의 배수인 제3 정수값인, 복수의 데이터 유닛들;
    을 포함하는 데이터 구조를 제공하는 것을 포함하고,
    상기 방법은,
    - 적어도 하나의 데이터 유닛을 각각의 소거가능 유닛에 연관시키는 것을 포함하며, 각각의 소거가능 유닛의 크기가 상기 제1 정수값의 배수이고 상기 제3 정수값으로 나눠질 수 있는 제2 정수값이고, 각각의 소거가능 유닛에 연관된 적어도 하나의 데이터 유닛의 개수가 상기 제2 및 제3 정수값들에 기반하여 결정되고,
    상기 방법은,
    - 상기 데이터 아이템들 내에 상기 데이터를 저장하고 상기 대응되는 데이터 아이템 헤더들 내에 데이터 아이템 상태 정보를 저장하는 것을 포함하며,
    상기 방법은,
    - 상기 데이터 유닛 헤더들 내에 데이터 유닛 상태 정보를 저장하는 것을 포함하는, 방법.
  2. 제1항에 있어서, 데이터 유닛 헤더들 중 적어도 하나는 상기 연관된 소거가능 유닛 내의 모든 데이터 유닛들의 상태 정보를 저장하는데 사용되는, 방법.
  3. 제1항에 있어서,
    상기 메모리 기기들은 허용된 최소의 쓰기가능 유닛(writable unit)을 가지며,
    상기 데이터 아이템 헤더들의 크기는 상기 최소의 쓰기가능 유닛의 정수배인, 방법.
  4. 제1항에 있어서,
    상기 소거가능 유닛들의 크기는 적어도 상기 제1 정수값의 2배이고,
    적어도 2개의 데이터 유닛들이 각각의 소거가능 유닛에 연관되며, 그리고
    각각의 소거가능 유닛 내의 단일 데이터 유닛 헤더가, 동일한 상기 소거가능 유닛에 연관된 모든 데이터 유닛들의 상태 정보를 저장하기 위해 사용되는, 방법.
  5. 제4항에 있어서, 상기 방법은, 추가로,
    - 상기 메모리 기기들 중 하나의 메모리 기기의 초기 프로그래밍 동안 상기 데이터 구조를 사용하고;
    - 모든 데이터 유닛 헤더들의 상태 정보를 독출하며; 그리고
    - 동일한 상기 소거가능 유닛에 연관된 모든 데이터 유닛들의 상태 정보를 상기 소거가능 유닛 내의 단일 데이터 유닛 헤더 내에 저장하는, 방법.
  6. 컴퓨터 프로그램이 수록된 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 프로그램은, 상기 컴퓨터 프로그램이 실행되는 기기에 제1항 내지 제5항 중 어느 한 항에 따른 방법을 수행하도록 지시하기 위한 프로그램 코드를 포함하는, 컴퓨터 판독가능 저장 매체.
  7. 복수의 소거가능 유닛들을 포함하는 메모리 기기들 상에 데이터를 저장하기 위한 데이터 구조가 구성요소로서 구비된 메모리 기기에 있어서,
    상기 데이터 구조는,
    - 각각의 데이터 아이템이 데이터 아이템 헤더(data item header)를 포함하는 복수의 데이터 아이템들로서, 각각의 데이터 아이템의 크기가 제1 정수값인, 복수의 데이터 아이템들; 및
    - 각각의 데이터 유닛이 데이터 유닛 헤더(data unit header) 및 적어도 하나의 데이터 아이템을 포함하는 복수의 데이터 유닛들로서, 각각의 데이터 유닛의 크기가 상기 제1 정수값의 배수인 제3 정수값인, 복수의 데이터 유닛들;
    을 포함하며,
    각각의 소거가능 유닛에는 적어도 하나의 데이터 유닛이 제공되고, 각각의 소거가능 유닛의 크기가 상기 제1 정수값의 배수이고 상기 제3 정수값으로 나눠질 수 있는 제2 정수 값이며, 각각의 소거가능 유닛에 제공된 적어도 하나의 데이터 유닛의 개수가 상기 제2 및 제3 정수값들에 기반하여 결정되고,
    상기 데이터 아이템들은 페이로드 데이터(payload data)를 저장하도록 구성되며,
    상기 데이터 아이템 헤더들은 데이터 아이템 상태 정보를 저장하도록 구성되고, 그리고
    상기 데이터 유닛 헤더들은 데이터 유닛 상태 정보를 저장하도록 구성되는, 메모리 기기.
  8. 제7항에 있어서,
    상기 메모리 기기들은 허용된 최소의 쓰기가능 유닛을 가지며,
    상기 데이터 아이템 헤더들의 크기는 상기 허용된 최소의 쓰기가능 유닛의 정수배인, 메모리 기기.
  9. 제7항에 있어서, 데이터 유닛 헤더들 중 적어도 하나는 소거가능 유닛의 상태 정보를 저장하도록 구성되는, 메모리 기기.
  10. 제7항 내지 제9항 중 어느 한 항에 따른 메모리 기기를 포함하는 전자 기기.
  11. 소거가능 유닛들을 포함하는 적어도 2개의 메모리 기기들을 프로그램하도록 제7항에 따른 데이터 구조를 사용하는 방법으로서, 각각의 메모리 기기의 소거가능 유닛들의 크기는 제1 정수값의 정수배이고, 상기 메모리 기기들 중 하나의 메모리 기기의 소거가능 유닛들의 크기는 상기 메모리 기기들 중 다른 하나의 메모리 기기의 소거가능 유닛들의 크기와 다른, 방법.
KR1020107015328A 2007-12-24 2007-12-24 메모리 기기 상의 데이터 저장 방법, 기기 및 데이터 구조 KR101247574B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2007/004083 WO2009081224A1 (en) 2007-12-24 2007-12-24 Method, device and data structure for data storage on memory devices

Publications (2)

Publication Number Publication Date
KR20100090306A KR20100090306A (ko) 2010-08-13
KR101247574B1 true KR101247574B1 (ko) 2013-03-26

Family

ID=40800757

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020107016378A KR20100133359A (ko) 2007-12-24 2007-12-21 이리듐 착물, 이를 포함하는 유기전기발광소자
KR1020107015328A KR101247574B1 (ko) 2007-12-24 2007-12-24 메모리 기기 상의 데이터 저장 방법, 기기 및 데이터 구조

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020107016378A KR20100133359A (ko) 2007-12-24 2007-12-21 이리듐 착물, 이를 포함하는 유기전기발광소자

Country Status (5)

Country Link
US (1) US9043532B2 (ko)
EP (1) EP2225644A4 (ko)
KR (2) KR20100133359A (ko)
CN (1) CN101911021A (ko)
WO (1) WO2009081224A1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0165949A1 (de) * 1983-12-14 1986-01-02 Schotte Werner Zerstäuberpumpe mit behälteranschluss.
WO2005022393A1 (ja) 2003-08-29 2005-03-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びその書込み方法
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US20070260812A1 (en) 2006-05-04 2007-11-08 Westell Technologies, Inc. Programming method for write buffer and double word flash programming

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5943692A (en) * 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
JP2001101071A (ja) * 1999-09-29 2001-04-13 Victor Co Of Japan Ltd フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法
US6591330B2 (en) 2001-06-18 2003-07-08 M-Systems Flash Disk Pioneers Ltd. System and method for flexible flash file
JP2003296177A (ja) 2002-04-03 2003-10-17 Sony Corp 記録装置および方法、記録媒体、並びにプログラム
JP5063897B2 (ja) 2006-01-18 2012-10-31 三桜工業株式会社 組電池の接続板
KR100622113B1 (ko) * 2006-03-03 2006-09-18 주식회사 퓨전소프트 데이터베이스 시스템을 위한 플래쉬 메모리 저장 시스템 및그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0165949A1 (de) * 1983-12-14 1986-01-02 Schotte Werner Zerstäuberpumpe mit behälteranschluss.
WO2005022393A1 (ja) 2003-08-29 2005-03-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びその書込み方法
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US20070260812A1 (en) 2006-05-04 2007-11-08 Westell Technologies, Inc. Programming method for write buffer and double word flash programming

Also Published As

Publication number Publication date
US20100312951A1 (en) 2010-12-09
WO2009081224A1 (en) 2009-07-02
KR20100090306A (ko) 2010-08-13
EP2225644A4 (en) 2011-08-10
CN101911021A (zh) 2010-12-08
EP2225644A1 (en) 2010-09-08
KR20100133359A (ko) 2010-12-21
US9043532B2 (en) 2015-05-26

Similar Documents

Publication Publication Date Title
US8086787B2 (en) Wear leveling method, and storage system and controller using the same
US10657047B2 (en) Data storage device and method of performing partial garbage collection
US9842030B2 (en) Data storage device and flash memory control method
US6968439B2 (en) Single segment data object management
US8250286B2 (en) Block management method, and storage system and controller using the same
TWI775122B (zh) 用來存取至少一非揮發性記憶體元件的處理單元
US10037153B2 (en) Memory device, electronic system, and methods associated with modifying data and a file of a memory device
US20100077135A1 (en) Memory wear leveling method, system and device
EP1909184A2 (en) Mapping information managing apparatus and method for non-volatile memory supporting different cell types
US20090089484A1 (en) Data protection method for power failure and controller using the same
US20080282024A1 (en) Management of erase operations in storage devices based on flash memories
US8386697B2 (en) Memory managing method for non-volatile memory and controller using the same
TW200917031A (en) Methods and apparatus for file management using partitioned file metadata
US7702845B2 (en) Method and apparatus for managing blocks according to update type of data in block-type memory
WO2007058624A1 (en) A controller for non-volatile memories, and methods of operating the memory controller
US10089225B2 (en) Improving garbage collection efficiency by reducing page table lookups
JP5721901B2 (ja) ウェアレベリングを有するメモリ装置の暗号化
KR101247574B1 (ko) 메모리 기기 상의 데이터 저장 방법, 기기 및 데이터 구조
JP4888333B2 (ja) フラッシュディスク装置
JP2000330850A (ja) フラッシュメモリ制御方法
JP5255389B2 (ja) 記憶装置およびメモリ制御方法
JP2004126945A (ja) 記憶装置及びその制御方法
CN104156319A (zh) 数据处理方法和装置
JP2007164391A (ja) メモリカードおよびその制御方法

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee