KR101700720B1 - 호스트에 연결될 수 있는 통신 디바이스에 의해 포함된 대용량 스토리지를 위한 플래시 메모리를 제어하기 위한 방법, 및 상기 방법을 수행하기 위한 컴퓨터 프로그램 물건 - Google Patents

호스트에 연결될 수 있는 통신 디바이스에 의해 포함된 대용량 스토리지를 위한 플래시 메모리를 제어하기 위한 방법, 및 상기 방법을 수행하기 위한 컴퓨터 프로그램 물건 Download PDF

Info

Publication number
KR101700720B1
KR101700720B1 KR1020157016424A KR20157016424A KR101700720B1 KR 101700720 B1 KR101700720 B1 KR 101700720B1 KR 1020157016424 A KR1020157016424 A KR 1020157016424A KR 20157016424 A KR20157016424 A KR 20157016424A KR 101700720 B1 KR101700720 B1 KR 101700720B1
Authority
KR
South Korea
Prior art keywords
flash memory
data
written
managing
memory
Prior art date
Application number
KR1020157016424A
Other languages
English (en)
Other versions
KR20150089042A (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 KR20150089042A publication Critical patent/KR20150089042A/ko
Application granted granted Critical
Publication of KR101700720B1 publication Critical patent/KR101700720B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Landscapes

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

Abstract

본 발명은 호스트(1)에 연결될 수 있는 통신 디바이스(2)의 보조 유닛에 의해 구성되고, 대용량 스토리지를 위하여 데이터(SS1, SSN, SS1N, SA, BE, S1N, S1ML)가 기록될 수 있는 플래시 메모리(9)를 제어하기 위한 방법에 관한 것이다. 본 발명에 따라, 플래시 메모리(9)는 블록들(10)로 하위분할되고 블록들(100) 각각은 스토리지 유닛들(S1-SN)을 포함하고, 기록된 스토리지 유닛(SS1)은 스토리지 유닛(SS!)에 기록하기 전에, 기록될 스토리지 유닛(SS1)의 블록(100)의 모든 스토리지 유닛들(S1, S2, SS1, SN)이 소거되는 경우에만 다시 기록될 수 있다. 플래시 메모리(9)는, 기록되기 전과 비교하여 기록된 후 변화되지 않는 기록될 적어도 몇몇의 스토리지 유닛들(S1-SN) 및 상기 유닛들의 데이터(SG, SS1N, SAI, BEI, S1MLG)가 소거도 기록도 되지 않고, 기록되기 전과 비교하여 기록된 후 변화되는 기록될 적어도 몇몇의 소거된 스토리지 유닛들(S, SG, SDG, SMG) 및 상기 유닛들의 데이터(SG)에 다시 소거됨이 없이 저장될 데이터(SS1N, BEI, S1NI)가 기록되는 방식으로 제어된다.

Description

호스트에 연결될 수 있는 통신 디바이스에 의해 포함된 대용량 스토리지를 위한 플래시 메모리를 제어하기 위한 방법, 및 상기 방법을 수행하기 위한 컴퓨터 프로그램 물건{METHOD FOR CONTROLLING A FLASH MEMORY FOR MASS STORAGE, WHICH IS COMPRISED BY A COMMUNICATIONS DEVICE THAT CAN BE CONNECTED TO A HOST, AND COMPUTER PROGRAM PRODUCT FOR CARRYING OUT SAID METHOD}
본 발명은 호스트(host)에 연결될 수 있는 통신 디바이스(communication device)에 의해 포함되고 저장될 데이터(data)가 대용량 스토리지(storage)를 위해 기록되는 플래시 메모리(flash memory)를 관리하기 위한 방법에 관한 것이다. 본 발명은 추가로 그런 방법을 실행하기 위한 컴퓨터 프로그램 물건(computer program product)에 관한 것이다.
대용량 스토리지 디바이스들은 USB 메모리 스틱(memory stick)(USB: Universal Serial Bus), 예를 들어, 디지털 카메라(digital camera)들, 모바일 전화(mobile telephone)들, 또는 멀티-미디어 재생 디바이스(multi-media playback device)들을 위한 메모리 카드(memory card)들, 또는 SSD(SSD: Solid State Disk) 형태일 수 있다. 대용량 스토리지 디바이스는 메모리 제어기 및 하나 또는 그 초과의 비-휘발성 메모리 칩(chip)들의 기능을 가진 유닛을 포함한다. 메모리 칩들은 저장된 정보를 유지하기 위하여 전력 공급을 필요로 하지 않는 소위 플래시 EEPROM(전기 소거 가능 프로그램 가능 판독 전용 메모리) 반도체 메모리들일 수 있다. 선택된 아키텍처(architecture) 및 메모리 방법에 따라 상이한 다양한 플래시 타입(type)들이 있다. 이후 아키텍처는 메모리 칩 내 스토리지 셀(storage cell)들의 어레인지먼트(arrangement)를 의미하는 것으로 이해된다. 이후 선택된 메모리 방법은 스토리지 셀 내에 스토리지를 위해 사용된 다수의 전압 레벨들을 의미하는 것으로 이해된다. 플래시 타입들의 예들은 NOR 플래시, NAND SLC(단일-레벨 셀), 또는 NAND MLC(다중-레벨 셀)이다.
또한 플래시 메모리로서 알려진 플래시 메모리 칩들에 데이터를 기록하기 위하여, 기록될 스토리지 유닛(storage unit)들은 먼저 소거되어야 한다. 개별 스토리지 유닛들의 소거(개별 스토리지 유닛들 각각은 논리 값 "0" 또는 "1"을 가질 수 있는 1 비트를 저장하기 위하여 적어도 하나의 스토리지 셀을 포함함)는 기록된 영역들보다 큰 영역들, 소위 블록(block)들, 또한 소위 소거 블록들에서만 가능하다. 이후 블록은 단지 하나의 유닛(unit)으로서 소거될 수 있는 플래시 메모리 상 바이트들 단위의 가장 작은 볼륨(volume)으로서 정의된다. 하나의 블록은 2z 바이트들(z>13)을 포함한다. 킬로바이트들(kbytes) 단위의 데이터를 저장하기 위한 통상적인 블록 크기들은 8, 16, 32, 64, 128 또는 256 kb이다. 또한 기록 유닛 또는 페이지(page)로 불리는 블록보다 작은, 플래시 메모리의 스토리지 셀들에 기록하거나 스토리지 셀들 상에 기록하기 위한 유닛은 단지 하나의 유닛으로서 기록될 수 있는, 플래시 메모리 상 바이트(byte)들 단위의 가장 작은 볼륨으로서 정의된다. 또한 소거 유닛들로 불리는 블록들, 및 기록 유닛들의 크기는 플래시 EEPROM의 타입 및 크기에 따른다. NOR 플래시는 8 kb 내지 256 kb, 통상적으로 64 kb의 블록 크기들을 가지며, 여기서 기록 유닛은 1 바이트이다. 보다 작은 NANO 플래시 메모리들은 512 바이트들을 가진 하나의 페이지의 기록 유닛에 대해 16 kb의 블록 크기로 이용 가능하다. 128, 512 또는 2048 kb 블록 크기들을 가진 보다 큰 NAND 플래시 메모리들은 2, 4, 또는 8 kb의 (페이지) 크기를 가진 페이지들을 사용한다. 유닛 당 최대 가능한 소거 및 기록 동작들의 수는 기술적 요소들에 따르고 플래시 메모리의 타입에 좌우되어 제한된다. 소거는 메모리 칩 내 개별 비트들을 "1"의 값으로 세팅하는 반면, 기록은 비트들을 "0"의 값으로 세팅한다. 개별 메모리 위치들의 균일한 "내구성(wear)" 및 수명들을 달성하기 위하여, 모든 비트들은 소거 전에 "0"의 값으로 프로그래밍되어, 모든 비트들은 그 다음 소거가 발생할 때 "1"의 값으로 세팅될 수 있다. 따라서, 보다 작은 NAND 플래시 메모리들은, 단지 16,384 바이트들(16 kb)의 블록들에서만 소거되는 동안, 기록 유닛들에 512 바이트들이 기록된다. 기록할 때 호스트 또는 호스트 시스템에 의해 사용된 가장 작은 데이터 볼륨은 섹터(sector)의 크기에 따르고, 섹터는 호스트의 또는 호스트 시스템의 파일 시스템에서 동시에 프로세싱되는 가장 작은 유닛으로서 정의된다. 작업 메모리 및/또는 플래시 메모리는 적어도 원칙적으로, 이런 섹터의 가장 작은 유닛의 서브-영역을 프로세싱할 수 있다. 섹터들은 2z 바이트들의 메모리 크기들(이때 z>3), 통상적으로 512 바이트들을 포함한다. 만약 플래시 메모리들을 가진 USB 대용량 스토리지 디바이스, 이를 테면 USB 메모리 스틱을 가지길 원하면, 소거 및 기록에 대한 비대칭 메모리 크기들의 상기된 문제에 직면하는데, 그 이유는 FAT(File Allocation Table: 파일 할당 테이블), FAT32 등 같은 공통 파일 시스템들이 보다 작은 NAND 플래시 메모리에서의 기록 유닛의 크기에 대응하는 512 바이트 크기를 가진 섹터들을 사용하기 때문이다.
모든 블록들에 걸쳐 소거 및 기록 동작들의 균일한 분배를 위하여, 값비싼 메모리 제어기들은 필요한 소거 및 기록 동작들을 제어하기 위한 제어 능력들만을 가지지 않는다. 대신, 이들 메모리 제어기들은 메모리 칩 내 모든 블록들에 걸쳐 소거 및 기록 동작들의 균일한 분배(소위 내구성 레벨링)를 위해, 결함 블록들을 관리하기 위한 에러 정정 및 그리고 필요하면 저장된 데이터를 "리프레싱(refreshing)"하기 위한 방법을 포함하여, 데이터를 이들 데이터에 적당한 유닛들로 판독, 소거, 및 기록하기 위한 제어 능력들을 가진다. 이 경우, 상기된 프로세스들을 구현하기 위하여, 메모리 제어기는 플래시 메모리에 사용된 물리적 유닛들 및 메모리 제어기의 인터페이스(interface)를 사용하여 호스트에 어드레싱(address)되는 논리적 유닛들을 관리 및 링크하기 위하여 사용하는 테이블(table)을 필요로 한다. 보다 복잡한 메모리 제어기들에서, OSI 7-계층 모델(Open Systems Interconnection Reference Model)에 따른 상위 계층들 ― 예를 들어 호스트에 사용된 파일 시스템(file system) ― 로부터의 부가적인 정보는 메모리 제어기를 관리하기 위하여 사용된다. 예로서, 호스트는 특정 커맨드(command)(TRIM 커맨드, WO 2012/062233 참조)를 사용하여 논리적 데이터 블록들의 가능한 소거에 관하여 메모리 제어기에게 알린다.
저장될 데이터의 볼륨 및 업데이트 빈도가, 대용량 스토리지 디바이스들의 주 애플리케이션(application)들에 대한 경우(예를 들어 플래시 메모리가 데이터의 대용량 스토리지를 위하여 호스트에 연결될 수 있는 통신 디바이스에 대한 보조 시스템으로서 사용될 때)보다 작은 한, 대용량 메모리 기능은 어려움 없이 구현될 수 있다. 이 경우, 상기된 값비싼 제어 방법을 사용하는 대용량 스토리지 디바이스의 별도의 메모리 제어기 및 호스트에 대한 인터페이스상에 어드레스된 논리적 유닛들을 플래시 메모리에 사용된 물리적 유닛들과 링크(link)하기 위하여 사용된 테이블은 생략될 수 있다.
도 1은 호스트(1)에 연결되고 대용량 스토리지 디바이스로서 플래시 메모리(9)가 주 데이터 스토리지 시스템으로서가 아닌 보조 시스템으로서 사용되는 통신 디바이스(2)를 도시한다. 통신 디바이스는 키보드(keyboard)(3)의 형태의 오퍼레이터 터미널(operator terminal)을 가지며, 여기서 통신 디바이스(2)의 표시된 동작 상태들은 디스플레이(4) 상에서 사용자에게 디스플레이된다. 키보드 및/또는 다른 동작 엘리먼트들을 통한 커맨드들의 입력들뿐 아니라 디스플레이(4) 상에 통신 디바이스(2)의 동작 상태의 디스플레이들은 통신 디바이스(2)의 주 기능을 표현한다. 플래시 메모리(9)는 예를 들어 디스플레이(display)(4) 상에 디스플레이될 구성 데이터 및/또는 음성-의존 텍스트를 저장하기 위하여, 통신 디바이스(2) 상에서 사용된다. 예를 들어, 대응하는 출력 텍스트에 대하여 상이한 언어들, 예를 들어, 독일어, 영어, 불어 등의 디스플레이 텍스트는 플래시 메모리(9) 내에 배치될 수 있고, 여기서 사용자는 통신 디바이스(2)를 구성할 때 독일어 같은 특정 언어를 선택한다. 그 다음 독일어 외의 언어들의 디스플레이 텍스트들은, 비록 상기 디스플레이 텍스트들이 해당 구성에 사용되지 않더라도, 대용량 스토리지 디바이스로서 플래시 메모리(9) 상에 저장된다.
도 2는 대용량 스토리지 디바이스들의 기능의 간략화된 구현을 도시한다. "NOR 플래시" 플래시 메모리(9)는 그 자신의 메모리 제어기를 가지지 않지만, 대신 또한 CPU(중앙 프로세싱 유닛)라 불리는 메인 프로세서(6)를 통해 관리된다. 메인 프로세서(6)는 호스트(1)로부터 플래시 메모리(9)에 대하여 의도된 커맨드들을 수신하고 판독, 기록, 또는 소거 동작들을 수행한다. 메인 프로세서(6)의 기능성을 확립하기 위하여, 메인 프로세서(6)는 프로그램 메모리(8) 및 작업 메모리(7), 예를 들어 RAM(Random Access Memory)에 연결된다. 디스플레이(4) 및 키보드(3)는 메인 프로세서(main processor)(6)에 연결된다. 호스트(1)는 호스트 인터페이스(5)를 통해 메인 프로세서(6)에 연결되고, 호스트 인터페이스(5)는, 도 2에 도시된 통신 디바이스(2)의 경우, 통신 디바이스(2) 내에 위치된다. 호스트(1)에 의해 어드레싱되는 플래시 메모리(9) 상의 스토리지 유닛들 및/또는 메모리 영역들/메모리 섹터들은 논리적 유닛들을 물리적 유닛들로 변환함이 없이 플래시 메모리(9) 상에 직접 어드레싱된다.
별도의 메모리 제어기를 사용하여 호스트(1) 상의 논리적 유닛들을 플래시 메모리(9) 상의 물리적 유닛들로 어드레싱할 때 변환이 없기 때문에, 호스트(1) 상의 파일 시스템의 섹터들, 즉 플래시 메모리(9) 내에 기록되어야 하는 호스트(1) 상의 섹터들은 플래시 메모리(9) 내의 포지션들에 기록되고 여기서 호스트(1)는 이들 섹터들이 기록되게 제공되었다.
호스트(1)로부터의 데이터를 플래시 메모리(9)에 저장하기 위한 간단한 방법은 도 3에서 "t"로 표기된 화살표의 방향으로 다양한 시점들로 도시된다. 플래시 메모리(9)의 블록(10)에서, 메모리 섹터들(S1 내지 SN) 형태의 스토리지 유닛들이 있고, 스토리지 유닛들 각각에서 하나의 섹터(1 내지 N)는 시점(t1)에서 저장된다. 호스트(1)로부터의 새로운 섹터(SS1)를 블록들(10)에 기록하기 위하여, 스토리지 유닛들(S1 내지 SN)에 저장된 블록(10)으로부터의 섹터들(1 내지 N)은 작업 메모리(7)에 카피(copy)된다(11). 시점(t1)에서 블록(10)에 저장된 섹터들(1 내지 N)은 시점(t2)에서 작업 메모리(7)에 저장된다. 저장될 새로운 섹터(SS1)가 위치되는 블록(10)은 이 섹터(SS1)가 기록되기 전에 소거되어야 한다. 이것이 발생할 때, 기록될 블록(10)에 기록함으로써 영향을 받지 않는 스토리지 유닛들로부터의 데이터는 변화되지 않고 저장된 채로 있어야 한다. 이를 위해, 완전한 블록(10)으로부터의 섹터들(1 내지 10) 형태의 데이터는 작업 메모리(7)에 로딩된다(11). 그 다음 작업 메모리(7)는 새로운 섹터(SS1)가 작업 메모리에 기록되게 함으로써 시점(t4)에서 변화된다(13). 섹터들(1 내지 N)이 작업 메모리(7)에 카피된 후, 블록(10)은 시점(t3)에서 소거된다(12). 단계(12)에서 블록들(10)이 소거된 후, 소거된 스토리지 셀들(SG)을 가진 소거된 스토리지 유닛들만 블록에 남아 있는다. 시점(t5)에서, 완전히 소거된 블록(10)은 새로운 섹터(SS1)를 포함하여, 작업 메모리(7)에 저장된 데이터로 프로그래밍된다(14). 따라서, 시점(t5)에서, 블록(10)은 섹터들(1 내지 N)로부터의 데이터 콘텐츠(content)로 프로그래밍되고, 여기서 섹터들 중 하나는 새로운 섹터(SS1)에 의해 대체된다. 하나의 섹터를 플래시 메모리(9)에 기록하기 위하여, 블록(10)은 완전히 소거되어야 하고 플래시 메모리(9) 내 N개의 섹터들은 프로그래밍되고, 여기서 N은 블록(10)에서 최종 섹터뿐 아니라 프로그래밍될 블록(10) 당 스토리지 유닛들(S1 내지 SN) 내 섹터들의 수를 표현한다. "섹터들(1 내지 N)을 작업 메모리(7)에 카피(11)"하고 "작업 메모리(7)에 새로운 섹터(SS1)를 프로그래밍(13)"하는 동작들은 "블록(10)을 소거(12)"하고 "블록(10) 내 섹터들(1 내지 N)을 프로그래밍(14)"하는 동작들에 필요한 시간의 일부만 걸린다. 해당하는 모두의 리스팅이 호스트(1)로부터의 데이터를 플래시 메모리(9)에 저장하는데 포함될 때, 이에 따라 동작들(11 및 13)은 생략될 수 있다.
도 3에서 단지 하나의 섹터(SS1)가 플래시 메모리(9)에 기록되지만, 도 4a 및 도 4b는, 다수의 섹터들(SS2, SS3)이 호스트(1)에 의해 플래시 메모리(9)의 블록(10)에 기록되는 경우를 도시한다. 도 4a에서, 블록(10)의 상태는 도 3에 따라 시점(t5)의 상태인 것으로 가정된다. 섹터(SS2)가 블록(10)에 기록될 때, 섹터들(1 내지 N)은 블록(10)으로부터 작업 메모리(7)로 재카피되고(11), 따라서 시점(t6)에서 작업 메모리(7) 내 메모리 상태는 도 3에 따른 시점(t4)에 대응한다. 다음, 블록(10)은 시점(t7)에서 다시 소거되어, 스토리지 유닛들 모두는 블록(10)에서 소거된 스토리지 유닛들(SG)로서 존재한다. 새로운 섹터(SS2)가 작업 메모리(7) 내 새로운 섹터(SS1) 다음에 프로그래밍되고(13), 여기서 작업 메모리(7)의 시점(t8)에서, 새로운 섹터들(SS1 및 SS2)은 저장되고 섹터들(1 내지 N)의 이전에 저장된 섹터들을 대체한다. 다음, 새로운 섹터들(SS1 및 SS2)을 포함하는 섹터들(1 내지 N)은 소거된 블록(10)에 프로그래밍되어(14, 15), 시점(t9)에서 블록(10)은 섹터들(1 내지 N)과 함께 새로운 섹터들(SS1 및 SS2)을 포함한다(도 4b 참조). 그 다음, 블록(10)의 총 콘텐츠는 작업 메모리(7)에 다시 카피되고(11), 그 후 블록(10)은 시점(t11)에서 완전히 소거된다. 새로운 섹터들(SS1 및 SS2)을 포함하는, 시점(t10)에서의 작업 메모리(7)의 저장된 콘텐츠는, 새로운 섹터(SS3)가 시점(t12)에서 저장될 때 증가된다. 섹터(1 내지 N)에 더하여, 시점(t12)에서 이들 섹터들 중 3개는 새로운 섹터들(SS1 내지 SS3)에 의해 대체된다. 작업 메모리(7)의 스토리지 콘텐츠는 소거된 블록(10)에 업데이트된 섹터들(1 내지 N)을 프로그래밍함으로써 프로그래밍되고(14, 15), 여기서 블록(10)에서 섹터들(1 내지 10)은 프로그래밍되어, 섹터들(1 내지 N) 중 3 개의 섹터들 대신 새로운 섹터들(SS1 내지 SS3)을 포함한다. 호스트(1)가 다수의 섹터들(1 내지 N)을 플래시 메모리(9)에 기록하기를 원하면, 도 3에 도시된 단계들은 기록될 섹터들(SS1, SS2, SS3) 각각에 대해 반복되어야 한다. 단계들 또는 동작들(11, 12, 13 및 14)의 이런 반복은, 메인 프로세서(6)와 같은 플래시 메모리(9)가 개별 섹터들의 논리적 이용 지식을 가지지 않고, 그러므로 스토리지 유닛들(S1 내지 SN) 내 모든 섹터들(1 내지 N)이 동일한 방식으로 핸들링 되어야 하기 때문에 필요하다.
호스트(1)가 특정 수의 섹터들(M)을 플래시 메모리(9)에 기록하기를 원하면, 플래시 메모리(9) 내 블록(10)은 M 회 소거되어야 하고 N개의 섹터들은 플래시 메모리(9)에 M 회 프로그래밍이 되어야 한다. 만약 스토리지 유닛들(S1 내지 SN)의 각각의 크기가 섹터들(1 내지 N)의 각각의 크기와 매칭하면, 512 바이트들의 섹터 크기 및 16 kb의 블록 크기에 대해 다음 수들이 스토리지를 위하여 요구된 동작들을 위해 발생한다:
- 8 개의 섹터들을 의미하는 4-kb 파일은 블록 8회 소거(12), 및 8×32=256 섹터들 프로그래밍(14)을 의미하고,
- 20 개의 섹터들을 의미하는 10-kb 파일은 블록 20회 소거(12), 및 20×32=640 섹터들 프로그래밍(14)을 의미하고
- 32 개의 섹터들을 의미하는 16-kb 파일은 블록 32회 평균 소거(12), 및 32×32=1024 섹터들 프로그래밍(14)을 의미함.
호스트(1)가 예를 들어 호스트(1)의 파일 시스템에 대한 파일 할당 테이블(FAT)을 플래시 메모리(9)에 기록하고, 이 테이블이 예를 들어 30 개의 섹터들을 포함하면, 하나의 블록은 30 회 소거되어야 하고 30×32=960 섹터들이 프로그래밍된다. 대응하여, 호스트(1)가 이전 예에서처럼 30 섹터들을 사용하여, 파일 시스템의 파일 할당 테이블(FAT)에 부가하고 재기록하면, 블록(10)은 다시 30회 소거되고 30×32=960 섹터들이 프로그래밍된다. 데이터가 완전한 블록으로부터 작업 메모리에 로딩되고, 기록될 스토리지 유닛들이 변화되고, 완전한 블록이 소거되고 그 다음 작업 메모리에 임시로 저장된 데이터가 새롭게 기록되는 도 3, 도 4a 및 도 4b에 설명된 방법은 예를 들어 Microchip 회사로부터의 마이크로제어기(PIC, PIC24, PIC32, 등)가 공급된 대용량 스토리지 디바이스의 구현으로 제공된다.
도 3, 도 4, 및 도 4a에 예시된 방법과 연관된 블록들 및 프로그램 섹터들을 소거하기 위하여 요구된 높은 노력 양을 감소시키기 위하여, 중간 메모리들(캐시들)이 사용될 수 있고, 기록될 데이터는, 그들이 추후에 플래시에 메모리에 기록될 때까지, 상기 중간 메모리들(캐시들)에 먼저 저장된다. 만약, 플래시 드라이브의 스토리지와 기록 사이의 중간 기간에, 동일한 블록에 대해 기록될 부가적인 데이터가 중간 메모리에 도달하면, 이들 데이터는 일시적으로 저장된 데이터와 결합될 수 있고, 영향을 받은 블록만이 일단 소거 및 기록되어야 한다.
도 4a 및 도 4b에 도시된 바와 같은 다수의 블록 소거들 및 섹터 프로그래밍 절차들을 방지하기 위한 다른 대안은 TFFS(True Flash File System: 진실 플래시 파일 시스템) 같은 복합 파일 시스템들의 사용에 있다. TFFS를 사용하여, 데이터는, 영향받은 블록이 데이터를 포함하지 않을 때까지, 즉 사용중이지 않을 때까지, 소거 및 재기록이 필요하지 않도록 플래시 메모리에 분배된다. 그러나, 이 경우 본래의 파일 시스템, 예를 들어 (FAT, FAT32)을 플래시 메모리 상에 사용된 파일 시스템으로 "번역"하는 것이 필요하다. 만약 그런 변화된 데이터가 플래시 메모리에 기록되면, 이들 데이터는 플래시 파일 시스템에 의해 빈, 즉 이미 소거된 블록에 기록되고, 이전 데이터는 이전 위치에서 "만료"로서 마킹된다. 플래시 메모리 내 실제 물리적 스토리지 위치에 데이터의 논리적 할당은 번역 테이블들을 사용하여 달성된다. 블록은, 블록 내 모두 10 개의 데이터가 "만료된"으로서 마킹될 때까지 소거될 수 없다. 그 다음, 만약 번역 테이블을 포함하고 동작시키는 메모리 제어기가 판독, 소거, 및 기록 동작들에 의해 비지(busy)하지 않으면, 소거가 발생한다.
작업 메모리에 기록될 데이터가 중간 메모리에 일시적으로 저장되는 동안, 플래시 메모리에 데이터의 직접 기록은, 모든 누적된 데이터가 플래시 메모리에 함께 프로그래밍되기 전에 부가적인 데이터가 누적될 수 있도록 지연된다. 플래시 파일 시스템(TFFS)은 데이터를 플래시 메모리에 직접 기록하지만 소거를 지연한다. 호스트의 인터페이스에 어드레싱된 논리적 유닛들을 플래시 메모리에 사용된 물리적 유닛들과 링크하기 위한 번역 테이블을 요구하는, 중간 메모리 또는 별도의 메모리 제어기를 가짐으로 인하여 높은 기술적 경비가 제공되면, 보다 이전 해결책은 물론, 블록 소거들 및 섹터 프로그래밍을 위한 부가적인 비용의 부가적인 노력과 함께, 중간 메모리 또는 별도의 메모리 제어기를 생략하는 것이다.
본 발명의 목적은 호스트로부터의 데이터가 플래시 메모리에 쉽고 효율적으로 저장될 수 있는, 플래시 메모리를 관리하기 위한 방법을 제공하는 것이다. 특히, 스토리지를 위하여 요구된 소거 및 기록 동작들의 수는 번역 테이블을 가진 중간 메모리 및/또는 별도의 메모리 제어기를 사용할 필요 없이 감소되어야 한다. 스토리지를 위하여 요구된 소거 및 기록 동작들의 수가 쉽게 감소되는, 플래시 메모리를 관리하기 위한 방법을 제공하고, 그리고 그런 방법을 실행하기 위한 컴퓨터 프로그램 물건을 제공함으로써, 플래시 메모리에 데이터를 저장할 때 응답 시간들은 감소되고 플래시 메모리의 수명은 길어진다.
호스트에 연결될 수 있는 통신 디바이스에 의해 포함되고 저장될 데이터가 대용량 스토리지를 위해 기록되는 플래시 메모리를 관리하기 위한 본 발명의 방법에 따라, 플래시 메모리는 스토리지 유닛들을 포함하는 블록들로 분할된다. 기록된 스토리지 유닛은, 스토리지 유닛에 기록되기 전에, 기록될 스토리지 유닛의 블록 내 모든 스토리지 유닛들이 소거되는 경우에만 재기록될 수 있다. 플래시 메모리는, 기록 후에도 기록 전과에도 동일한 데이터를 가진 기록될 스토리지 유닛들 중 적어도 몇몇이 소거되지도 기록되지도 않고, 그리고 기록 전과 비교하여 기록 후 상이한 데이터를 가진, 소거되고 기록된 스토리지 유닛들 중 적어도 몇몇에는 재소거 없이 저장될 데이터가 기록되는 방식으로 관리된다. 플래시 메모리의 그런 관리는 통신 디바이스의 보조 시스템으로서 플래시 메모리를 사용함으로써 가능하게 되고, 여기서 별도의 메모리 제어기는 필요하지 않다. 본 발명의 방법의 실행은 또한 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는다. 그러므로 플래시 메모리의 관리는 비트 레벨과 다른 기록될 호스트의 데이터의 논리적 콘텐츠에 관한 임의의 정보를 요구하지 않고, 여기서 개별 데이터 비트들은 값 "0" 또는 "1"을 가진 콘텐츠를 가질 수 있다. 1 바이트는 8개의 비트들로 이루어진다. 각각의 비트는 "0" 또는 "1"의 값을 가질 수 있다. 모든 소거된 바이트의 8개의 비트들은 "1"의 값을 가져서, 바이트는 "11111111"의 이진 값을 가진다. 이 값은 이진 표기법에서 값 "0b11111111"에 대응하거나 16진 표기법에서 값 "0xFF"에 대응한다. 그러므로, 플래시 메모리의 관리가 단순히, 기록될 데이터가 "0xFF"와 동일하지 않은 값을 가진 바이트들을 가지는지 여부에 기초되는 것은 가능하다. 이 정보는 개별 비트들의 레벨, 즉 비트 레벨에서 값들의 분석으로부터 발생할 수 있다. 대안적으로 또는 부가적으로, 이 정보는 개별 바이트들의 레벨, 즉, 바이트 레벨에서 발생할 수 있다. 바이트가 16진 값 "0xFF"를 가지면, 바이트 내 비트들 모두는 "0"의 값을 가진다. 플래시 메모리 상의 데이터의 값들을 기록될 데이터의 값들과 비교하기 위하여, 데이터의 콘텐츠가 바이트 레벨 또는 그 아래, 즉, 비트 레벨에서 분석되는 것이 충분하다. 소거되었고 소거 후 재기록되지 않은 플래시 메모리의 영역들이 항상 값 "0xFF"를 가지기 때문에, 바이트 레벨에서의 값 정보는 소거된 영역의 모두 또는 일부가 기록될 데이터의 개별 바이트들에 대해 다른 값들로 겹쳐 쓰여 질지를 결정하기에 부적당하다. 그러므로 플래시 메모리 관리는 단순히, 기록될 데이터의 각각의 바이트의 값이 소거되고 기록될 스토리지 유닛들의 각각의 바이트의 값과 상이한지를 구별하는 것에 기초하여야 한다. 기록될 데이터가 소거된 스토리지 유닛들 내 데이터의 개별 바이트들의 값들과 상이하면, 스토리지 유닛들의 재소거는 제거될 수 있고 데이터는 기록될 스토리지 유닛들에 기록될 수 있다. 그러나, 기록될 데이터가 기록될 스토리지 유닛들 내 데이터와 상이하지 않으면, 기록될 스토리지 유닛들 내 스토리지가 생략될 수 있는데, 그 이유는 기록될 스토리지 유닛들의 개별 바이트들의 값들이 스토리지 유닛들에 기록될 데이터의 개별 바이트들의 값들과 동일하기 때문이다. 이런 방식으로, 바이트 레벨에서 기록될 스토리지 유닛들의 콘텐츠와 기록될 데이터의 콘텐츠의 대응을 단순 비교함으로써, 불필요한 소거가 제거되고 그 다음 기록될 스토리지 유닛들은, 기록될 스토리지 유닛들의 콘텐츠와 상이한 기록될 데이터의 콘텐츠에 기초하여 기록이 필요한 경우에만 기록된다. 기록될 데이터의 콘텐츠를 기록될 스토리지 유닛들의 콘텐츠와 비교하는 것은 데이터가 기록될 스토리지 유닛들 중 적어도 몇몇에 저장되기 바로 전에 중간 단계 없이 행해질 수 있다.
플래시 메모리는 예를 들어 플래시 EEPROM 반도체 메모리일 수 있다. NOR 플래시, NAND-SLC, 또는 NAND-MLC 같은 플래시 메모리 타입들은 플래시 메모리들로서 사용될 수 있다. 통신 디바이스는 컴퓨터, 모바일 전화, 테블릿 PC, PDA(퍼스널 디지털 어시스탄트), 스마트 폰, 또는 플래시 메모리를 포함하는 다른 통신 디바이스일 수 있다. 플래시 메모리는 보조 시스템으로서 사용될 수 있어서, 이에 의해 예를 들어 도 1 및 도 2에 도시된 통신 디바이스에서 처럼, 중간 메모리 또는 메모리 제어기를 제거하거나, 통신 디바이스의 메인 시스템으로서 사용될 수 있고, 여기서 이용 가능한 중간 메모리 및/또는 메모리 제어기는 별도의 어셈블리로서 포함된다.
통신 디바이스는 터미널일 수는 없지만, 오히려 통신 터미널 자체는 예를 들어 데스크톱 PC 또는 랩톱 형태의 서버로서 동작할 수 있다. 기록 후에도 기록 전과 동일한 데이터에 대해, 기록될 스토리지 유닛들에 소거도 기록도 발생하지 않고, 소거되고 기록될 스토리지 유닛들의 모두 또는 일부에 대해, 재소거가 제거되고 소거된 스토리지 유닛들 중 모두 또는 일부에 대한 데이터와 상이한 데이터만이 기록되기 때문에, 불필요한 소거 및/또는 기록 동작들은 제거된다. 이런 방식으로 플래시 메모리에 데이터를 저장하기 위하여 요구된 소거 및 기록/프로그래밍 동작들의 수가 감소되고, 이는 플래시 메모리의 스토리지에 대한 보다 적은 반응 시간 및 증가된 수명으로 표현된다. 소거 및/또는 기록 동작들의 임의의 지연이 개별 바이트 레벨에서 기록될 데이터의 콘텐츠를 기록될 스토리지 유닛들의 콘텐츠와 비교하는 것으로 제한되고, 통신 디바이스의 메인 프로세서로부터 분리된 중간 메모리 및/또는 메모리 제어기가 제거될 수 있기 때문에, 데이터를 저장하기 위한 응답 시간이 감소되고, 플래시 메모리의 전체 성능이 최대화된다.
일 실시예에서, 통신 디바이스는 인터페이스를 통해 호스트에 연결되고 호스트로부터 플래시 메모리로 전달될 데이터의 볼륨에 관한 정보는 통신 디바이스에 의해 인터페이스로부터 호출되고 플래시 메모리를 관리하기 위하여 사용된다. 중간 메모리 또는 메모리 제어기 없이도, 호스트의 인터페이스는 호스트로부터 플래시 메모리로 전달될 데이터의 볼륨에 관한 정보를 가진다. 이들 데이터는 인터페이스로부터 호출되고 플래시 메모리를 관리하기 위하여 사용되고, 여기서 플래시 메모리 내 블록의 소거 후, 기록 프로세스에서 스토리지 유닛들에 기록될 새로운 데이터를 갖지 않을 스토리지 유닛들은 스토리지 유닛에 저장된 데이터로 재기록되는 것이 아니라, 오히려 새로운 데이터가 추후 기록 프로세스에서 스토리지 유닛들에 기록될 때까지 소거된 상태로 남겨질 것이다. 그 다음 저장될 데이터의 볼륨에 관한 인터페이스에 포함된 정보를 사용하여, 기록 프로세스에 의해, 새로운 데이터의 도달을 위해 소거된 스토리지 유닛들을 예비하는 것이 가능하고, 따라서 스토리지 유닛들은 스토리지 유닛 내에 이미 저장된 데이터로 겹쳐 쓰이지 않는다.
바람직하게, 호스트로부터 플래시 메모리로 전달될 데이터에 관한 정보는 대용량 스토리지 프로토콜(protocol), 특히 USB 대용량 스토리지 프로토콜이다. 대용량 스토리지 프로토콜은 예를 들어 플래시 메모리 내 호스트의 섹터들 중 얼마나 많은 호스트의 섹터가 기록될 필요가 있는지에 관한 정보를 가진다. 이 정보는 플래시 메모리의 기록 기능에 전달된다. 그 다음 기록 기능은 방금-소거된 스토리지 유닛들이 차후 기록 프로세스에서 겹쳐 쓰일 데이터로 기록되는 것을 방지한다. 따라서 이들 스토리지 유닛들은 소거된 상태로 남아 있고, 따라서 새로운 데이터가 플래시 메모리에 기록되기 전에 프로그래밍될 스토리지 유닛들을 재소거함이 없이, 단지 새로운 데이터만이 플래시 메모리에 프로그래밍된다. 호스트로부터 플래시 메모리로 전달될 데이터에 관한 정보는 특히 USB 대용량 스토리지 프로토콜이다. 그러므로 정보는 임의의 중간 메모리 또는 메모리 제어기와 무관하게 호스트의 인터페이스 내에 있다.
다른 실시예에서, 전달될 데이터가 기록되는, 기록될 연속적인 스토리지 유닛들의 수에 관한 정보는 인터페이스에 의해 제공된다. 연속하여 기록될 스토리지 유닛들의 수에 관한 정보를 사용하여, 새로운 데이터로 기록될 플래시 메모리 상 블록의 인접한 영역들은 연속적인 기록 동작들 동안 유지될 수 있거나 예비될 수 있다. 호스트에 속하는 섹터의 데이터 콘텐츠의 크기가 데이터를 전달하기 위한 인터페이스에 알려져야 하기 때문에, 연속적으로 기록될 스토리지 유닛들의 수는 플래시 메모리에 기록될 섹터들의 볼륨으로부터만 계산될 수 있다.
다른 실시예에서, 기록될 제 1 스토리지 유닛의 콘텐츠에 더하여, 제 1 스토리지 유닛 다음 스토리지 유닛들의 수에 관한 부가적인 정보는 인터페이스에 의해 제공된다. 따라서, 호스트가, 스토리지 유닛 내 특정 수의 스토리지 셀들의 크기에 대응하는 크기를 가진 특정 수의 섹터들을 플래시 메모리에 기록하기를 원하면, 호스트는 기록될 M 개의 섹터들이 있을 때, M-1 개의 섹터들이 기록 후 남아 있는 부가적인 정보와 함께 플래시 메모리 내 제 1 섹터에 기록할 커맨드를 인터페이스를 통해 플래시 메모리에 제공한다. 제 1 섹터가 블록의 스토리지 유닛 내 스토리지 셀들의 일부에 기록되는 플래시 메모리의 블록은 섹터가 기록되기 전에 소거되어야 하는데, 그 이유는 단지 완전한 블록들만이 소거될 수 있기 때문이다. 이 블록에서 기록 프로세스의 일부로서 기록에 의해 영향을 받지 않는 스토리지 유닛들로부터의 데이터는 기록 프로세스 동안 변화되지 않아야 하고 저장된 채로 있어야 한다. 이렇게 하기 위해, 전체 블록으로부터의 데이터는 예를 들어 통신 디바이스의 작업 메모리에 일시적으로 저장되고, 기록될 데이터는 일시적으로 저장된 데이터의 일부를 대체함으로써 일시적으로 저장된 데이터에 부착되고, 플래시 메모리 내 전체 블록이 소거되고 기록될 데이터를 포함하는 일시적으로 저장된 데이터로 재프로그래밍된다. 여기서 변화되지 않고 있어야 하는 데이터만이, 즉 제 1 섹터(S) 이전 섹터들뿐 아니라 섹터(S+M)에서 시작하는 섹터들만이 플래시 메모리에 프로그래밍되고, 여기서 이미 새로운 데이터를 포함하는 제 1 섹터(S) 자체는 또한 프로그래밍된다. 차후 섹터들(S+1 내지 S+M-1)이 호스트에 의해 전달될 때, 이들 섹터들은 플래시 메모리 내 이미-소거된 이용 가능한 영역들에 프로그래밍된다. 이런 방식으로, 기록 후에도 기록 전과 동일한 데이터를 가진 기록될 플래시 메모리의 이들 영역들은 소거되지도 기록되지 않고, 오히려 새로운 데이터로 이들 영역들을 기록하기 위하여 사용될 이들 기록 프로세스들을 위하여 예비된다. 플래시 메모리에 기록될 데이터의 콘텐츠에 관한 정보 없이, 기록될 데이터의 볼륨에 관한 정보만으로 저장된 데이터를 손실함이 없이 소거 및 기록 프로세스들을 저장하는 것이 가능하다.
하나의 유리한 실시예에서, 호스트에 의해 플래시 메모리 내 블록의 적어도 하나의 스토리지 유닛으로 전달되는 기록될 데이터는 적어도 하나의 스토리지 유닛에 기록되기 전에 인버팅(invert)된다. 이런 방식으로, 미사용된 스토리지 유닛들에 대해 16진 값 "0x00"을 사용하는 파일 시스템들에서, 값 "0xFF"는 인버션에 의해 생성될 수 있고, 이는 플래시 메모리에서 소거되고, 기록되지 않은 스토리지 유닛들의 값에 대응한다. 인버션은 "0"의 값을 가진 모든 각각의 비트가 "1"의 값으로 변환되게 하고 그 반대도 가능하다. 이런 방식으로, 값 "0x00"을 가진 시스템의 미사용된 영역들은 값 "0xFF"을 가진 영역들이 된다. 플래시 메모리 내 바이트의 값 "0xFF"가 소거되고, 기록되지 않은 상태에 대응하기 때문에, 파일 시스템의 미사용된 영역들은 인버션 이후 더 이상 프로그래밍되지 않아야 한다. 이 영역에서 파일 시스템의 콘텐츠가 변화되고 "0x00"과 다른 값들을 포함하는 때만이 인버션 이후 플래시에서 이 영역을 또한 프로그램되게 한다. 그러나, 그 다음, 프로그래밍 이전에 어떤 소거도 필요하지 않은데, 그 이유는 소거된 영역이 여전히 값 "0xFF"을 가진 소거된 바이트들을 포함하고 사전 소거 없이 겹쳐 쓸 수 있을 수 있기 때문이다. 값 "0"은 16진 값 "0x00"에 대응하고, 여기서, 예를 들어, 파일 할당 테이블(FAT)의 카피들 둘 다는 미사용된 위치들에서 값 "0"을 가진다. 파일 시스템의 미사용된 부분들은 종종 변화됨이 없이 기록된다. 플래시 메모리에서 각각의 기록 프로세스 동안, 기록은 스토리지 유닛들의 소거 및 새로운 프로그래밍을 의미한다. 파일 시스템의 미사용된 영역들을 인버팅함으로써, 이들 영역들의 값은 플래시 메모리의 소거되고, 미기록된 영역들의 값으로 인버팅된다. 파일 시스템의 미사용된 영역들의 값들의, 소거된 스토리지 유닛들의 값들로의 이런 적응으로 인해, 이들 영역들의 프로그래밍은 더 이상 필요하지 않다. 그러므로 이런 예시적인 실시예는 소거 및/또는 기록 동작들의 부가적인 감소를 포함한다.
다른 실시예에서, 전달될 데이터가 기록되는, 기록될 다수의 스토리지 유닛들에 대해, 모든 스토리지 유닛들에 대한 데이터는 인버팅된다. 이 실시예는, 물론, 값 "0x00"을 갖지 않는 파일 시스템의 사용된 영역들에 대해, 플래시 메모리로부터 판독할 때 이들 데이터를 사용할 수 있기 위하여 인버팅하여야 한다는 단점을 가진다. 그러나, 예시적인 실시예는 플래시 메모리가 저장될 데이터의 논리적 콘텐츠에 관한 어떤 정보도 요구하지 않는 장점을 가진다. "섹터들 1 내지 N 카피"(11)(도 3, 도 4a 및 도 4b 참조) 및 작업 메모리에 새로운 섹터들 프로그래밍"(13)(도 3, 도 4a, 및 도 4b 참조) 동작들 같은 "데이터 인버션" 동작은 생략되는데, 그 이유는 상기 동작들이 블록(12)을 소거하고 블록(14)을 프로그래밍하기 위하여 필요한 시간 부분만을 요구하기 때문이다.
대응하여, 추가 실시예에서, 플래시 드라이브에 기록될 호스트의 데이터의 미사용된 바이트들은 인터페이스에 배치될 때 16진 값 0x00을 가지며, 인버션 이후 플래시 메모리에 소거된 바이트의 16진 값 0xFF를 가지며, 그리고 16진 값 0xFF를 소거된 스토리지 유닛에 기록하는 대신, 소거된 스토리지 유닛은 재소거 없이 그 소거된 상태에서 유지된다.
플래시 메모리를 관리하기 위한 방법에 더하여, 본 발명은 또한 그런 방법을 실행하기 위한 컴퓨터 프로그램 물건을 포함한다. 컴퓨터 프로그램 물건은 예를 들어 소프트웨어로 이루어질 수 있다. 컴퓨터 프로그램 물건은 플로피 디스크, DVD, CD-ROM, 또는 메모리 카드상에 이진 데이터로서 저장될 수 있다. 컴퓨터 프로그램 물건은 또한 인쇄된 소스 코드로 이루어질 수 있다.
본 발명은 또한 컴퓨터 프로그램 물건이 인스톨되는 통신 디바이스를 포함한다. 통신 디바이스는 플래시 메모리를 관리하기 위한 본 발명의 방법의 대응하는 기능들 및 장점들을 가지며 데스크톱 PC, 랩톱, 서버, 일반 전화, 모바일 전화, 스마트 폰, 또는 테블릿 PC일 수 있다. 통신 디바이스가 연결될 수 있는 호스트는 서버 또는 다른 호스트일 수 있다. 게다가, 호스트는 호스트 시스템의 형태로 네트워크 가능 컴퓨터들의 그룹 및/또는 네트워크일 수 있다. 호스트는 또한 인터넷 또는 이더넷일 수 있다.
본 발명의 부가적인 예시적인 실시예들 및 또한 장점들은 도 5 내지 도 8을 참조하여 아래에 설명될 것이다. 보다 나은 예시를 위하여, 스케일 또는 실제 비례적 표현은 도면들에서 사용되지 않는다. 특정하게 다르게 언급되지 않으면, 도면들에서 동일한 참조 번호들은 이미 논의된 도 1 내지 도 4b에 언급된 참조들과 동일한 의미를 가진 동일한 컴포넌트들을 나타낸다.
도 1은 플래시 메모리(9)를 포함하는 통상적인 통신 디바이스이다.
도 2는 도 1에 도시된 통상적인 통신 디바이스이고, 여기서 플래시 메모리는 인터페이스를 통해 호스트에 연결된 메인 프로세서에 의해 관리된다.
도 3은 플래시 드라이브에 섹터를 저장하기 위한 통상적인 방법이다.
도 4a 및 도 4b는 플래시 메모리에 다수의 섹터들을 저장하기 위한 통상적인 방법이다.
도 5a 및 도 5b는 플래시 메모리에 다수의 연속적인 섹터들을 저장하기 위한 본 발명의 방법의 제 1 실시예이다.
도 6a 및 도 6b는 플래시 메모리에 호스트의 특정 섹터들을 저장하기 위한 본 발명의 방법의 다른 실시예이다.
도 7a 및 도 7b는 인버션에 의해 플래시 메모리에 호스트의 특정 섹터들을 재기록하기 위한 본 발명의 방법의 다른 예시적인 실시예이다.
도 8a 및 도 8b는 소거 동작들의 수를 참조하고(도 8a) 프로그래밍 동작들의 수를 참조하는(도 8b) 도 4 내지 도 7에 예시된 방법들을 비교하기 위한 테이블을 각각 도시한다.
도 5a 및 도 5b는 다수의 연속적인 섹터들(SSN, SS1N, SSMN)이 플래시 메모리(9)의 블록(10)에 저장되는 제 1 실시예에서 본 발명의 방법을 도시한다. 시점(t1)에서, 섹터들(1 내지 N)은 블록(10)의 스토리지 유닛들(S1 내지 SN)에 저장된다. 그 후, 섹터들(1 내지 N)은 작업 메모리(7)에 카피되어(11), 시점(t2)에서, 섹터들(1 내지 N)은 작업 메모리(7)에 저장된다. 시점(t3)에서, 블록(10)은 완전히 소거되어, 스토리지 유닛들(S1 내지 SN)의 각각은 소거된 상태(SG)이다. 시점(t1 내지 t3)으로부터의 방법 단계들은 도 3에 도시된 단계들과 동일하다. M 개의 섹터들은 호스트(1)에 의해 플래시 메모리(9)에 프로그래밍될 것이다. 이들 M 개의 섹터들은 섹터 S 새로운(new)(SSN), 섹터 S+1 새로운(SS1N), 부가적인 섹터들, 및 섹터 S+M-1 새로운(SSMN)로 분할되고, 여기서 M은 정수이다. 도 3에 도시된 바와 같이, 시점(t4)에서, 인터페이스(5)를 통해 기록될 제 1 섹터(SSN)만을 작업 메모리에 기록하는 대신, 기록될 제 1 섹터(SSN) 및 정보(IN1)의 부분은 통신 디바이스(2)에 전송되고, 플래시 메모리(9)에 기록될 M-1 개의 섹터들이 여전히 온다는 것을 표시한다. 시점(t20)에서, 제 1 섹터(SSN)만이 작업 메모리(7)에 저장되고(21), 여기서 작업 메모리(7)의 전체 콘텐츠는 시점(t20)에서 소거된 블록(10)으로 프로그래밍되지 않는다. 대신, 섹터들(1 내지 S-1), 새로운 섹터(SSN)로서 S, 및 섹터들(S+M 내지 N)이 프로그래밍된다(22). 시점(t21)에서, 섹터(SSN)와 섹터(S+M) 사이에 위치된 스토리지 유닛들이 소거된다. 블록(10)의 이런 소거된 영역(SSG)은 호스트로부터의 새로운 데이터를 블록(10)에 기록하기 위하여 사용된 차후 기록 동작들 및/또는 기록 프로세스들에 이용 가능하다. 이에 의해 플래시 메모리(9)의 통신 디바이스(2) 또는 제어기는, 플래시 메모리(9)의 블록(10)에 아직 기록되지 않은 섹터들(SS1N 내지 SSMN)이 블록(10)에서 소거된 영역(SSG)으로서 예비되는 방식으로, M-1 개의 섹터들이 플래시 메모리(9)에 기록되도록 남은 정보(IN1)의 부분을 블록(10)에 기록하기 위하여 사용한다. 시점(t22)에서, 작업 메모리(7)에는 기록될 다음 섹터 S+1 새로운(SS1N)이 기록되고, 여기서 인터페이스(5)를 통하여, 기록될 다음 섹터(SS1N)와 함께, M-2 개의 섹터들이 블록(10)에 기록되도록 남아있음을 표시하는 정보(IN2)의 부분은 통신 디바이스(2)에 전송되었다. 정보(IN2)의 부분은 도 2에 도시된 통신 디바이스(2) 내 메인 프로세서(6)에 의해 관리되는, 플래시 메모리(9)의 제어기에 전송된다. 그러므로, 단지 새로운 섹터 S+1 새로운(SS1N)만이 블록(10)에 프로그래밍되어(24), 블록(10)은 시점(t23)에서 제 1 새로운 섹터(SSN)와 함께 제 2 새로운 섹터(SS1N)를 저장하였다. 시간에 대해 t로 라벨링된 아래를 향하는 화살표로서 도 3, 도 4a, 도 4b, 도 5a, 도 5b, 도 6a, 도 6b, 도 7a 및 도 7b에 표현된 시간 순서에 따라, 개별 새로운 섹터들을 저장하기 위한 방법은 도 5a의 표시 "등" 및 화살표(25)에 의해 도시된 바와 같이, 인터페이스(5)로부터 작업 메모리(7)로 그리고 작업 메모리(7)로부터 블록(10)으로 계속된다. 저장될 최종 섹터(SSMN)가 블록에 기록될 수 있자마자, 이 섹터는 작업 메모리(7)에 저장되고(21), 그리고 플래시 메모리(9)에 저장될 최종 새로운 섹터 S+M-1 새로운(SSMN)은 소거된 유닛들(SSG)의 영역에서 소거된 상태(SG)로 있는 최종 나머지 스토리지 유닛에 저장된다. 연속하여 저장될 M 개의 섹터들의 마지막에서, 어떠한 부가적인 정보도 인터페이스로부터 플래시 메모리(9)의 제어기로 전송되지 않는데, 그 이유는 어떠한 그런 정보도 필요하지 않기 때문이다. 플래시 메모리(9)의 블록(10)에 M-1 개의 섹터들이 기록되는 제 1 통지(IN1)에 기초하여, 예비된 소거된 영역(SSG)은 이런 소거된 영역이 블록(10)에 기록될 M 개의 섹터들 모두에 대해 충분한 방식으로 할당된다. 이에 관하여, 다른 실시예에서, M-1 개의 섹터들이 메모리에 기록되게 남아 있다는 정보(IN1) 부분만을 전송하는 것이 필요하지만, M-2 개의 섹터들이 플래시 메모리(9)에 기록될 것을 표시하는 정보(IN2)의 부분은 생략될 수 있다.
호스트(1)가 특정 수의 연속적인 섹터들(M)을 플래시 메모리(9)에 기록하고, 기록될 이들 섹터들 모두가 블록(10)의 스토리지 유닛들에 기록되는 것이 원해지면, 플래시 메모리(9) 내 블록(10)은 일단 소거되어야 하고 N 개의 스토리지 유닛들은 플래시 메모리(9)에 프로그래밍되어야 한다. 수들(S 및 M)의 합이 블록 내 스토리지 유닛들의 수(N)보다 큰 경우와 마찬가지로, 연속적인 섹터들이 다수의 블록들에 분배되면, 스토리지에 사용될 모든 블록들(B)은 일단 소거되어야 하고, B×N 섹터들은 플래시 메모리(9)에 프로그래밍될 것이다. 이에 관하여 하나의 스토리지 유닛의 데이터 볼륨이 하나의 섹터의 데이터 볼륨에 대응하는 것이 가정된다.
512 바이트들의 섹터 크기 및 16 kb의 블록 크기에서, 다음 동작들은 플래시 메모리(9)에 기록하기 위하여 필요하다:
- (하나의 블록 내) 8 개의 섹터들을 의미하는 4-kb 파일은 블록 1회 소거 및 32 섹터들 프로그래밍을 의미하고,
- (두 개의 블록들 내) 8 개의 섹터들을 의미하는 4-kb 파일은 블록 2회 소거 및 2×32=64 섹터들 프로그래밍을 의미하고,
- (두 개의 블록들 내) 20 개의 섹터들을 의미하는 10-kb 파일은 2회 블록 소거, 및 2×32=64 섹터들 프로그래밍을 의미하고,
- (두 개의 블록들 내) 32 개의 섹터들을 의미하는 16-kb 파일은 블록 2회 소거 및 2×32=64 섹터들 프로그래밍을 의미함.
만약, 예를 들어, 호스트(1)가 파일 시스템의 파일 할당 테이블(FAT)을 기록하고 이것이 30 개의 섹터들로 이루어지고, 그 다음 최대치로서, 30 개의 섹터들이 2개의 블록들에 분배되면, 블록은 2회 소거되어야 하고 2×32=64 섹터들이 프로그래밍되어야 한다. 이전 예에서와 같이, 호스트가 파일 시스템의 FAT를 확장하고 이를 30 개의 섹터들로 재기록하면, 다시 블록은 2회 소거되어야 하고 2×32=64 섹터들이 플래시 메모리(9)에 프로그래밍될 것이다. 도 6a 및 도 6b는 추가 실시예에서 인버팅된 방법을 도시하고, 여기서 호스트(1)의 특정 섹터들은 플래시 메모리(9)에 기록될 것이다. 도 3 및 도 5a에 예시된 바와 같이, 시점(t1)에서 스토리지 유닛들(S1 내지 SN) 내 섹터들(1 내지 N)을 포함하는 블록(10)은 작업 메모리(7)에 전부가 카피되고(11), 그 다음 블록(10)이 시점(t3)에서 전부가 소거되어, 그 다음 블록(10) 내 모든 스토리지 유닛들(S1 내지 SN)은 소거된 상태(SG)로 있는다. 호스트(1)는 M 개의 섹터들을 사용하여 플래시 메모리(9)에 FAT 또는 리스트를 기록하기를 원한다. 호스트는 M-1 개의 섹터들이 저장되도록 남아 있다는 것을 표시하는 부가적인 정보(IN1)를 사용하여, 제 1 서브-영역(SA) 및 제 2 서브-영역(U)을 포함하는 M 개의 섹터들 중 제 1 섹터를 블록(10)에 기록하도록 인터페이스(5)를 통하여 플래시 메모리(9)의 제어기로 커맨드를 발행한다. 기록될 제 1 섹터의 서브-영역들(SA 및 U)에 부가된 정보(IN1) 부분은 얼마나 많은 섹터들이 기록되는지에 대한 호스트(1)로부터의 정보를 사용하여 인터페이스(5)에 의해 발생된다. 도 5a 및 도 5b에 따른 본 발명의 방법의 제 1 실시예와 대조하여, 저장될 제 1 섹터의, 저장될 서브-영역들(SA 및 U)에 포함된 데이터는 인버팅된다(31). 여기서 기록될 제 1 섹터의 제 1 서브-영역(SA)은 제 1 서브-영역(SAI)으로 인버팅되고, 여기서 16진 값 0x00을 포함하는, 저장될 제 1 섹터(U)의 미사용된 제 2 서브-영역은 기록될 제 1 섹터의 제 2 서브-영역(G)으로 인버팅하고, 제 2 서브-영역(G)은 인버션 이후 16진 값 0xFF을 가진다. 그 다음 이런 방식으로 인버팅된 기록될 제 1 섹터는 시점(t30)에서 인버팅된 제 1 서브-영역(SAI) 및 제 2 인버팅된 서브-영역(G)으로서 작업 메모리(7)에 프로그래밍된다. 다음, 도 5a의 프로그램 단계(22)에 대응하여, 섹터들(1 내지 S-1), 서브-영역들(SAI 및 G)이 기록될 인버팅된 섹터(S) 및 섹터들(S+M 내지 N)은 블록(10)에 프로그래밍된다(32). 이 경우, 변화되지 않고 남아야 하는 데이터만이 플래시 메모리(9)에 프로그래밍되고, 이는 섹터(S)를 선행하는 모든 섹터들, 섹터(S+M)를 뒤따르는 섹터들뿐 아니라 새로운 인버팅된 데이터를 포함하는 자체 기록될 제 1 섹터를 포함한다. 시점(t31)에서, 변화되지 않은 섹터들(1 내지 S-1 및 S+M 내지 N)을 포함하는 블록(10)에는 저장될 호스트의 부가적인 섹터들에 대해 이용 가능한 소거된 영역(SMG)이 있다. 저장될 제 1 섹터에 관하여, 블록(10)의 스토리지 유닛들 내 소거된 데이터에 대한 값 0xFF와 상이한 데이터만이 블록(10)에 저장된다. 그 다음 저장될 제 1 섹터의 제 1 서브-영역(SAI)만이 블록(10)에 저장되고, 저장될 제 1 섹터의 제 2 인버팅된 서브-영역(G)은 블록(10)에 프로그래밍되지 않는데, 그 이유는 제 2 인버팅된 서브-영역(G)의 값이 소거된 스토리지 유닛들 0xFF의 콘텐츠와 매칭하기 때문이다. 기록될 제 1 섹터를 뒤따르는 제 2 섹터(S1L)는 소위 "빈" 섹터인데, 그 이유는 이 섹터 내 데이터는 0x00의 16진 값에 대응하는 0의 값을 가진 미사용된 바이트들을 포함하기 때문이다. 작업 메모리(7)에 기록될 제 1 섹터의 스토리지에 관해서, 섹터(S1L)는 인버팅되고(31) 인버팅된 섹터(S1L1)로서 작업 메모리(7)에 저장된다. 부가적으로, 인터페이스는 M-2 개의 섹터들이 플래시 메모리(9)에 저장되게 남아 있다는 것을 표시하는 정보(IN2)의 부분을, 플래시 메모리(9)의 제어기에 전송한다. 인버션 이후 기록될 제 2 섹터(S1L1)가 소거된 영역(SMG)의 소거된 상태(SG)의 스토리지 유닛들의 콘텐츠와 매칭하는 16진 값 0xFF만을 가지기 때문에, 이 섹터는 블록(10)에 프로그래밍되지 않는다(34). 대신, 블록은 시점(t33)에서 시점(t31)에서와 동일한 상태에 있다. 소거된 스토리지 유닛들의 콘텐츠가 기록될 제 2 섹터(S1L1)의 콘텐츠와 매칭하기 때문에, 어떤 데이터 콘텐츠도 기록될 인버팅된 제 2 섹터(S1L1)를 프로그래밍함이 없이 손실되지 않는다.
차후 섹터들이 호스트(1)로부터 인터페이스(5)로 전달되면, 차후 섹터들은 이들이 0x00의 16진 값에 대응하는 0의 값을 가진 미사용된 데이터와 상이한 데이터를 포함하는 경우만 플래시 메모리(9) 내 이미 소거된 영역(SMG)에 프로그래밍된다. 이들 섹터들이 "비는 한", 즉 단지 0x00을 가진 바이트들만을 포함하는 한, 인버션으로 인해 이들 영역들은, 모든 바이트들이 플래시 메모리의 소거된 영역(SMG) 내 소거된 스토리지 유닛들의 콘텐츠에 대응하는 0xFF의 값을 포함하는 영역들이 된다. 그러므로, 이들 "빈" 섹터들은 플래시 메모리에 프로그래밍되지 않는다. 도 6b의 예시에 따라, 저장될 최종 섹터(S1ML)는 또한 0의 값을 가진 미사용된 바이트들만을 포함하는 섹터이다. 인버션 이후, 이 섹터는 시점(t34)에서 작업 메모리(7)에 값 0xFF를 가진 인버팅된 섹터(S1MLI)이다. 기록될 인버팅된 최종 섹터(S1MLI)가 블록(10) 내 소거된 영역(SMG)과 동일한 데이터 콘텐츠를 가지기 때문에, 섹터(S1MLI)를 블록(10)에 기록하기 위한 프로그래밍 단계(36)는 없다. 대신, 소거된 영역(SMG)의 소거된 스토리지 범위(S1MLI)는 기록될 최종 인버팅된 섹터(S1MLI)의 데이터 콘텐츠와 매칭한다. 미사용된 데이터를 포함하는 기록될 섹터들로부터 데이터를 인버팅함으로써, 프로그래밍 단계는 본 발명에 따라 생략되는데, 그 이유는 소거된 스토리지 유닛들 내 데이터 및 미사용된 데이터를 가진 섹터들로부터 인버팅된 데이터가 서로 매칭하기 때문이다. 물론, 인버팅된 저장된 데이터를 사용하기 위하여, 다른 인버션인 리버스 인버션이 필요하지만, 인버션을 위한 시간 및 계산 노력은 프로그래밍을 위한 시간 및 계산 노력과 비교하여 무시할 정도이고 고려되지 않을 수 있다.
도 7a 및 도 7b는 인버팅된 방법의 다른 실시예를 예시하고, 여기서 호스트(1)의 특정 섹터들은 플래시 메모리(9)에 반복적으로 기록된다. 도 7a에서, 블록(10)의 초기 상태는 도 6a 및 도 6b에 도시된 바와 같은 시점(t33)의 상태일 것으로 가정된다. 모든 섹터들(1 내지 N)이 도 6b의 시점(t34)에 대응하는 시점(t34)에서 작업 메모리(7)에 카피된 후, M 개의 섹터들은 플래시 메모리(9)에 다시 기록될 것이다. 기록될 제 1 섹터는 제 1 서브-영역(SA) 및 제 2 서브-영역(BE)뿐 아니라, 기록될 제 2 섹터(S1N)를 포함한다. 기록될 부가적인 섹터들은 미사용된 데이터만을 포함하는 소위 "빈" 섹터들이다. 기록될 최종 "빈" 섹터는 섹터 S+M-1(S1ML)이다. 인터페이스(5)에 기록될 섹터들을 전송한 후(37), 인터페이스는 서브 영역들(SA 및 BE)이 기록될 제 1 섹터뿐 아니라 M-1 개의 섹터들이 기록되게 남아 있다는 것을 표시하는 정보(IN1)의 부분을, 플래시 메모리의 제어기에 전송한다. 그 다음 서브-영역들(SA 및 BE)이 저장될 제 1 섹터는 인버팅되고 시점(t35)에서 인버팅된 서브-영역들(SAI 및 BEI)로서 작업 메모리(7)에 저장된다. 다음, 제 1 서브-영역(SAI)이 블록(10)에 이미 프로그래밍 되었기 때문에, 제 2 서브-영역(BEI)만이 기록될 제 1 섹터(S)의 나머지로서 블록(10)에 프로그래밍되고, 여기서 블록(10)의 스토리지 유닛들의 어떠한 소거도 필요하지 않다(39). 따라서, 시점(t36)에서, 블록(10)에서 이전에 소거된 영역(STG)은 제 1 섹터의 인버팅된 제 2 서브-영역에 의해 기록된 BEI이도록 대체된다. 다음, 기록될 제 2 섹터(S1N)는 호스트(1)의 파일 시스템으로부터 판독되고(40) M-2 개의 섹터들이 저장되게 남아 있다는 것을 표시하는 정보(IN2)의 부분과 함께, 인터페이스(5)에 의해 플래시 메모리의 제어기에 전송된다. 섹터(S1N)로부터의 데이터의 인버션 이후(31), 이 섹터는 시점(t37)에서 작업 메모리(7)에 인버팅된 섹터(S1NI)로서 저장된다. 다음, 저장될 제 2 섹터는 블록(10)의 이전에 소거된 영역(SMB)에 인버팅된 형태(S1NI)로 프로그래밍된다. 따라서, 시점(t38)에서, 기록될 제 1 섹터의 인버팅된 서브-영역들(SAI, BEI) 및 기록될 인버팅된 제 2 섹터(S1NI)는 블록(10)에 프로그래밍된다. 얼마나 많은 섹터들이 저장된 채로 있는지, 인버션, 작업 메모리에 스토리지, 및 미사용된 데이터, 즉 페이로드 데이터에 의해 점유된 인버팅된 섹터들을 플래시 블록(10)에 프로그래밍에 대한 정보로 프로그래밍될 개별 섹터들을 판독하기 위한 방법은, 기록될 최종 섹터가 프로그래밍될 준비가 될 때까지 계속된다. 도 7b에서, 이런 최종 섹터(S1ML)는 소위 "빈" 섹터이고, 인버션(31) 이후, "빈" 섹터는 시점(t38)에서 인버팅된 섹터(S1MLI)로서 작업 메모리에 프로그래밍된다. 인버팅된 섹터(S1MLI)가 블록(10) 내 소거된 스토리지 유닛(S1MLG)의 콘텐츠와 매칭하는 값 0xFF를 가진 데이터만을 가지기 때문에, 인버팅된 섹터(S1MLI)는 블록(10)에 프로그래밍되지 않는다(36). 따라서, 시점(t33)과 비교할 때 시점(t39)에서, 블록(10)은 기록될 제 1 섹터의 인버팅된 제 2 서브-영역(BEI) 및 기록될 인버팅된 제 2 섹터(S1NI)만을 부가적으로 포함한다. 도 7a 및 도 7b에 도시된 예시적인 실시예는 기존 데이터를 가진 부분들이 변화되지 않고 남아 있고 부가적인 데이터가 사전에 소거된 영역들에 부가되는 방식으로 호스트가 FAT 또는 리스트를 업데이트하기를 원하는 경우를 예시한다. 변화되지 않고 남은 블록(10)의 영역들은 섹터들(1 내지 S-1 및 S+M 내지 N)에 의해 점유된다. 부가적인 데이터에 의해 점유될 소거된 영역은 영역(SMG)이다. 플래시 메모리(9) 내에 이미 위치된 데이터가 부분적으로 변화되지 않고, 그러나 대신 이전에 소거된 영역들만이 새로운 데이터가 기록되기 때문에, 플래시 메모리(9)의 블록(10)은 기록 전에 전체가 소거될 필요가 없다. 전체 블록(10)으로부터의 데이터는 작업 메모리(7)에 로딩되고, 호스트에 의해 기록될 섹터들을 위해 전달된 데이터는 인버션 이후 작업 메모리(7)에 놓이고 기록될 섹터들이 플래시 메모리의 소거된 영역들과 상이하지 않으면 플래시 메모리(9)에 프로그래밍되지 않는다. 도 7a 및 도 7b로부터의 예시적인 실시예에서, 이것은 기록될 제 2 섹터로서 기록될 제 1 섹터(BE)의 제 2 부분 및 섹터(S1N)에 적용된다. 그 다음 호스트(1)에 의해 전달된 차후 섹터들은 이들이 미사용된 데이터와 상이한 데이터를 포함하는 경우만 플래시 메모리(9) 내 대응하는 이미 소거된 영역(SMG)에 프로그래밍된다. 이들 섹터들이 "비어 있는 한", 즉 값 0x00을 가진 바이트들만을 포함하는 한, 인버션으로 인해 이들 영역들은, 모든 바이트들이 0xFF의 값, 즉 플래시 메모리의 소거된 영역들(SMG)의 콘텐츠와 매칭하는 값을 포함하는 영역들이 된다. 그러므로 이들 "빈" 섹터들은 플래시 메모리에 프로그래밍되지 않는다. 도 6 및 도 7에 설명된 방법에서, FAT, 리스트, 또는 데이터 범위 사이에 구별이 없지만, 오히려 인버션은 기록될 모든 섹터들에 대해 동일한 방식으로 발생한다. 물론, 이 시스템은 미사용된 값들과 상이한 사용된 값들을 포함하는 섹터들이 "불필요하게" 인버팅되는 단점을 가지지만, 플래시 메모리의 제어기가 기록될 섹터들의 논리적 콘텐츠에 관한 어떤 정보도 요구하지 않는 장점을 가진다. 메모리 제어기가 다양한 섹터들의 논리적 콘텐츠에 관한 정보 부분을 가지면, 기록될 모든 섹터들의 동일한 인버션은 생략될 수 있고 0x00의 16진 값과 매칭하는 0의 미사용된 값들을 가진 데이터를 가진 섹터들만이 인버팅된다.
다음 예들은 도 6 및 도 7로부터의 예시적인 실시예들에 기초한다: 512 바이트들의 섹터 크기 및 16 kb의 블록 크기에서, 블록당 32 개의 스토리지 유닛들(32 개의 스토리지 유닛들 각각이 하나의 섹터를 저장할 수 있음)을 가정하여, 다음 동작들은 기록을 위하여 필요하다:
- (하나의 블록에서) 8 개의 섹터들을 의미하는 4-kb 파일은 1회 블록 소거 및 32 섹터들 프로그래밍을 의미하고,
- (두 개의 블록들에서) 8 개의 섹터들을 의미하는 4-kb 파일은 2회 블록 소거 및 2×32=64 섹터들 프로그래밍을 의미하고,
- (두 개의 블록들) 20 개의 섹터들을 의미하는 10-kb 파일은 2회 블록 소거 및 2×32=64 섹터들 프로그래밍을 의미하고,
- (두 개의 블록들) 32 개의 섹터들을 의미하는 16-kb 파일은 2회 블록 소거 및 2×32=64 섹터들 프로그래밍을 의미함.
예를 들어, 호스트(1)가 파일 시스템의 파일 할당 테이블(FAT)을 기록하고 그것이 30 개의 섹터들(예를 들어, 이들 섹터들 중 20개는 데이터 없음(즉, "빈")을 포함함)로 이루어지고, 최대치로서, 만약 30 개의 섹터들이 2 개의 블록들에 분배되면, 블록은 2회 소거되어야 하고 2×32-20=44 섹터들이 프로그래밍 되어야 한다. 호스트(1)가 호스트(1)의 파일 시스템의 FAT를 확장하고 30 개의 섹터들(여기서 단지 16 개의 섹터들만이 미사용된 데이터, 즉 "빈" 데이터를 포함함)로 재기록하면, 어떤 블록들도 소거될 필요가 없고 20-16=4 섹터들이 프로그래밍될 필요가 있다.
도 8a는 도 4 내지 도 7에서 실행된 바와 같은 방법(51)에 대한 소거 동작들(50)의 수의 테이블 형태의 개요를 도시한다. 하나의 블록이 각각 하나의 섹터를 저장할 수 있는 32 개의 스토리지 유닛들을 가짐이 가정된다. 그러므로, 32 개의 섹터들이 하나의 블록에 저장될 수 있다는 것이 가정된다. 8 섹터들을 의미하고 2 개의 블록들에 저장된 4-kb 파일에 대해(52)도 4에 실행된 바와 같은 일반적 방법은 4 내지 8 개의 소거 동작들(12)을 포함하고, 상기 소거 동작들 각각에서 하나의 블록 전체가 소거될 것이다. 이것에 대한 이유는, 블록에 단지 하나의 개별 섹터를 프로그래밍할 때에도, 먼저 전체 블록이 소거되어야 하기 때문이다. 도 4에 도시된 것과 대조하여, 도 5 내지 도 7에서와 같은 인버팅된 방법을 실행할 때, 데이터가 기록될 블록은 단지 한 번 소거된다. 8 개의 섹터들이 2 개의 블록들에 기록될 것이기 때문에, 8 개의 소거들(53)과 비교된 바와 같이 전체 블록들 중 단지 2 개의 소거들(54, 56)만이 요구된다. 이것은 본 발명의 방법을 사용하여 8 개의 섹터들을 2 개의 블록들에 기록하기 위한 소거 동작들(52)의 수가 일반적 방법으로 요구된 전체 블록 소거 동작들의 단지 25% 이라는 것을 의미한다. 30 개의 섹터들을 가진 파일 할당 테이블(FAT)을 2 개의 블록들에 기록하는 예에서(여기서 도 4에서와 같은 일반적 방법으로 기록될 30 개의 섹터들 중 20 개의 섹터들은 미사용된 데이터에 의해 점유되고, 즉 "비어 있고"(58)), 전체 블록들의 소거는 30 회 요구된다. 다른 한편, 도 5 내지 도 7에 도시된 본 발명의 실시예에서, 전체 블록의 소거는 단지 2회 요구되는데, 그 이유는 30 개의 섹터들은 2 개의 상이한 블록들에 기록되기 때문이다. 30 개의 섹터들을 2 개의 블록들에 기록하는 예에서처럼 플래시 메모리의 상태에서 시작하여(여기서 20 개의 섹터들은 미사용된 데이터를 포함함(58)), FAT가 30 개의 섹터들로 확장되면(30 개의 섹터들 중 16 개는 미사용된 데이터를 포함함, 즉 "비어 있음"(59)), 다시 도 4에서처럼 일반적 방법을 사용하여, 전체 블록들은 30 회 소거되어야 한다. 다른 한편, 도 5에 예시된 본 발명의 방법에 따라, 기록될 데이터의 인버션 없이, 전체 블록들의 소거는 2회(61) 필요하고, 이는 도 4에서와 같은 일반적 방법을 사용하여 소거들의 수의 6.66%(62)이다. 기록될 데이터가 플래시 메모리에 프로그래밍 전에 인버팅되는 도 6 및 도 7과 같은 본 발명의 방법을 사용하여, 단지 4 개의 섹터들이 페이로드 데이터를 포함하는 플래시 메모리에 저장되기 때문에, 기록될 데이터의 인버션을 사용하여, 기존 블록들의 어떠한 소거도 필요하지 않다(0).
도 8b는 도 4 내지 도 7에서 실행된 바와 같은 방법(51)을 사용하여, 플래시 메모리(9)의 블록(10) 내 작업 메모리(7)에 데이터를 프로그래밍할 동작들 수(65)의 테이블 형태의 개요를 도시한다. 여기서 프로그래밍 동작은 도 4a 및 도 4b의 단계(14) 및 도 5a 및 도 5b의 단계들(22, 24, 26)에 대응한다. 프로그래밍 동작들은 추가로 도 6a의 단계(32) 및 도 7a의 단계들(38, 41)에 대응한다. 2 개의 블록들에 기록될, 8 섹터들을 의미하는 4-kb 파일(52)의 도 8a에 논의된 관련 예에서, 32 개의 섹터들이 도 8a에 도시된 바와 같이 하나의 블록에 기록될 수 있다는 것을 가정하여, 결과는 도 4에서와 같은 일반적 방법에 대해 256 프로그래밍 동작들(66)이다. 일반적 방법이, 모두 32 개의 스토리지 유닛들이 모든 각각의 섹터에 대해 소거되어야 하는 것을 요구하기 때문에, 8×32=256 프로그래밍 동작들이 필요하다. 대조하여, 도 5 내지 도 7에서처럼 본 발명의 방법을 사용하여, 단지 64 개의 프로그래밍 동작들(67, 69)이 필요한데, 그 이유는 기록될 2 개의 블록들 각각이 전체적으로 1회, 즉 32 회 프로그래밍되어야 하기 때문이다. 소거 동작들의 수에 관해서, 프로그래밍 동작들의 수에 대한 결과는 도 5 내지 도 7에서와 같은 본 발명의 방법과 도 4에서와 같은 일반적 방법 사이에 4배 차(25%)(70)가 있다. 30 개의 섹터들을 가진 파일 할당 테이블(FAT)을 2 개의 블록들에 기록하는 경우(여기서 30 개의 섹터들 중 20 개의 섹터들이 미사용된 데이터를 포함함(71)), 도 4에서와 같은 일반적인 방법을 사용한 결과는 960 개의 프로그래밍 동작들(32 개의 섹터들 각각이 30회 프로그래밍되어야 함)이다. 일반적 방법과 대조하여, 도 5에서와 같고 기록될 데이터를 인버팅함이 없는 본 발명의 방법을 사용하여, 단지 64 개의 프로그래밍 동작들이 요구된다(그 전체가 프로그래밍되어야 하는 기록될 2 개의 블록들의 각각에 대해, 즉 자신의 32 개의 섹터들 각각에 대해). 기록될 데이터가 블록(10)에 저장되기 전에 인버팅되는 도 6 및 도 7에서와 같은 본 발명의 방법을 사용하여, 소거된 스토리지 유닛들과 동일한 값들을 포함하는 데이터가 프로그래밍 되지 않기 때문에, 이 경우 단지 40 개의 프로그래밍 동작들(64-20=44)은 도 5의 방법에서와 같은 64 개의 프로그래밍 동작들 대신 요구된다. 이제 플래시 메모리의 상태가 2 개의 블록들에 30 개의 섹터들이 기록된 파일 할당 테이블을 가지는 것에서 시작하여(여기서 30 개의 섹터들 중 20 개의 섹터들이 미사용된 데이터를 포함함), 이 파일 할당 테이블이 30 개의 섹터들로 확장되면(30 개의 섹터들 중 16 개가 미사용된 데이터를 포함함(72)), 다시 도 4에서와 같은 일반적 방법을 사용하여, 960 개의 프로그래밍 동작들(73)이 요구된다. 데이터를 인버팅 없이 그리고 도 5에서와 같은 본 발명의 방법을 사용하여, 64 개의 프로그래밍 동작들이 필요하다(74). 도 4의 방법에서와 같은 960 개의 프로그래밍 동작들에 비하여 64 개의 프로그래밍 동작들은 6.66%의 비율에 대응한다(75). 심지어 프로그래밍 동작들의 보다 큰 감소는 도 6 및 도 7로부터의 본 발명의 방법과 도 4에 도시된 일반적 방법을 비교함으로부터 발생한다. 기록될 30 개의 섹터들 중 16 개의 섹터들이 미사용된 데이터를 포함하고 블록(10) 내 20 개의 섹터들이 소거된 스토리지 유닛들로서 존재하기 때문에(20 개의 섹터들 중 16 개가 파일 할당 테이블의 확장 후 소거된 스토리지 유닛들로서 남음), 미사용된 데이터와 상이한 소거된 스토리지 유닛들의 단지 4개가 프로그래밍 되어야 한다(76). 이것은 일반적 방법과 비교하여 요구된 프로그래밍 동작들의 0.42%의 비율에 대응한다.
도 6a, 도 6b, 도 7a, 및 도 7b에서 기록될 데이터의 인버션(31) 또는 도 7a에서 스토리지 유닛 내 섹터의 단지 한 부분의 프로그래밍(38) 같은, 도시된 실시예들을 참조하여 설명된 본 발명의 피처들은, 예를 들어 다르게 언급될 때 또는 기술적 이유들로 인해 불가능할 때를 제외하고, 도 5a 및/또는 도 5b에 도시된 바와 같이, 본 발명의 다른 실시예들에 또한 존재할 수 있다.
요약하여, 본 발명의 방법 및 본 발명의 방법을 실행하기 위한 컴퓨터 프로그램 물건에 의해, 플래시 메모리를 관리하기 위한 메모리 제어기가 없음에도, 정보는 플래시 메모리에 기록될 데이터의 볼륨에 관한 정보를 이용 가능하다. 기록될 데이터의 볼륨에 대한 정보를 사용하여, 데이터를 기록하기 위하여 요구된 스토리지 유닛들은 데이터가 기록될 때까지 소거된 유닛들로서 예비될 수 있어서, 전체-블록 소거 동작들은 제거될 수 있다. 게다가, 본 발명의 방법을 사용하여, 기존 파일 시스템들(FAT/FAT32)은, 미사용된 영역들의 값들의 인버션 이후 블록 내 소거되어 미기록된 스토리지 셀들의 값에 대응하는 동일한 값이 기록될 섹터들의 미사용된 영역들을 가질 수 있다. 그러므로, 미사용된 데이터를 포함하는 섹터들을 기록할 때, 섹터들이 인버팅된 후 이들 미사용된 데이터를 플래시 메모리에 프로그래밍할 필요가 없다. 이런 방식으로, 요구된 소거 및 프로그래밍 동작들의 수는 감소되고, 플래시 메모리에 데이터를 기록하는 속도뿐 아니라 플래시 메모리의 수명은 증가된다.

Claims (44)

  1. 호스트(host)(1)에 연결될 수 있는 사용자의 통신 디바이스(communication device)(2)에 의해 포함되고 대용량 스토리지(storage)를 위하여 저장될 데이터(data)(SS1, SSN, SS1N, SA, BE, S1N, S1ML)가 기록되는 플래시 메모리(flash memory)(9)를 관리하기 위한 방법으로서,
    상기 플래시 메모리(9)는 블록(block)들(10)로 분할되고, 각각의 블록들은 스토리지 유닛(storage unit)들(S1-SN)을 포함하고,
    기록된 스토리지 유닛(SS1)은, 상기 스토리지 유닛(SS1)이 기록되기 전에, 기록될 스토리지 유닛(SS1)의 블록(10) 내 모든 스토리지 유닛들(S1, S2, SS1, SN)이 소거되는 경우에 재기록될 수 있으며,
    상기 통신 디바이스(2)는 인터페이스(interface)(5)를 통하여 상기 호스트(1)에 연결되고, 전달될 데이터(SS1N, SSMN, S1L, S1N, S1ML)가 기록되는, 기록될 연속 스토리지 유닛들의 수에 관한 정보(IN1, IN2)는 상기 호스트(1)로부터 상기 플래시 메모리(9)로 전달될 데이터의 볼륨(volume)에 관한 정보로서 상기 통신 디바이스(2)에 의해 상기 인터페이스(5)로부터 호출되고(called up) 상기 플래시 메모리(9)를 관리하기 위하여 평가되고,
    상기 플래시 메모리(9)의 블록(10)의 적어도 하나의 스토리지 유닛(S1-SN)에 기록될 상기 호스트(1)로부터 전달될 데이터의 일부(SA, BE, S1ML)가 인버팅(invert)되며,
    상기 플래시 메모리(9)는, 기록 후에도 기록 전과 동일한 데이터(SG, SS1N, SAI, BEI, S1MLG)를 가진, 기록될 스토리지 유닛들(S1-SN) 중 적어도 몇몇이 소거도 기록도 되지 않는 방식으로 관리되고,
    기록 전과 비교하여 기록 후 상이한 데이터(SG)를 가진, 소거된 상태의 기록될 스토리지 유닛들(SSG, STG, SMG) 중 적어도 몇몇에는, 재-소거 없이 저장될 데이터(SS1N, BEI, S1NI)가 기록되며,
    상기 플래시 메모리(9)를 관리하기 위한 메모리 제어기가 없음에도, 기록될 연속 스토리지 유닛들의 수에 관한 정보(IN1, IN2)를 사용하여, 데이터(SS1N, SSMN, S1L, S1N, S1ML)를 기록하기 위하여 요구되는 스토리지 유닛들은 데이터(SS1N, SSMN, S1L, S1N, S1ML)가 기록될 때까지 소거된 유닛들(SSG, SMG)로서 예비될 수 있어서, 전체-블록(10) 소거 동작들은 제거되고,
    상기 플래시 메모리(9)는 저장될 데이터의 논리적 콘텐츠에 관한 어떤 정보도 요구하지 않으며,
    상기 플래시 메모리(9)는 상기 통신 디바이스(2)의 보조 시스템으로서 사용되고,
    상기 호스트(1)에 의해 어드레싱되는 상기 플래시 메모리(9) 상의 스토리지 유닛들은 논리적 유닛들을 물리적 유닛들로 변환함이 없이 상기 플래시 메모리(9) 상에 직접 어드레싱되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 플래시 메모리(9) 상의 데이터의 값들을 기록될 데이터(SSN, SS1N, SSMN, SA, S1L, S1N, S1ML)의 값들과 비교하기 위하여, 데이터(SSN, SS1N, SSMN, SA, S1L, S1N, S1ML)의 콘텐츠(content)가 바이트 레벨 또는 비트 레벨에서 분석되는 것이 충분한,
    플래시 메모리(9)를 관리하기 위한 방법.
  3. 제 2 항에 있어서,
    상기 플래시 메모리(9)의 관리가 단순히, 기록될 데이터(SSN, SS1N, SSMN, SA, S1L, S1N, S1ML)가 각각 "0xFF"와 동일하지 않은 값을 갖는 바이트들을 가지는지 여부에 기초되고, 이 정보는 비트 레벨 및/또는 바이트 레벨에서 값들의 분석으로부터 발생하는,
    플래시 메모리(9)를 관리하기 위한 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 호스트(1)로부터 상기 플래시 메모리(9)로 전달될 데이터(SS1N, SSMN, S1L, S1N, S1ML)에 관한 정보(IN1, IN2)는 대용량 스토리지 프로토콜(protocol) 내에 있는,
    플래시 메모리(9)를 관리하기 위한 방법.
  5. 제 4 항에 있어서,
    상기 정보(IN1, IN2)는 중간 메모리 또는 메모리 제어기와 무관하게 호스트(1)의 인터페이스(5) 내에 있는,
    플래시 메모리(9)를 관리하기 위한 방법.
  6. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 호스트(1)에 속하는 섹터의 데이터 콘텐츠의 크기가 데이터를 전달하기 위한 상기 인터페이스(5)에 알려져 있어서, 상기 기록될 연속 스토리지 유닛들의 수는 상기 플래시 메모리(9)에 기록될 섹터들의 볼륨으로서 스토리지 유닛들의 수로부터만 계산되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  7. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    기록될 제 1 스토리지 유닛의 콘텐츠(SSN, SS1N)에 더하여, 상기 제 1 스토리지 유닛(SSN, SS1N) 다음의 스토리지 유닛들의 수에 관한 부가적인 정보로서 상기 정보(IN1, IN2)가 상기 인터페이스(5)에 의해 제공되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  8. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 스토리지 유닛(S1-SN)에 기록될 데이터의 일부(SA, BE, S1ML)는 상기 적어도 하나의 스토리지 유닛(S1, SN)이 기록되기 전에 인버팅되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  9. 제 8 항에 있어서,
    상기 전달될 데이터의 일부(SA, BE, S1ML)가 기록되는, 기록될 다수의 스토리지 유닛(SMG)에 대해, 모든 스토리지 유닛들(SMG)에 대한 데이터(SA, BE, S1ML)는 인버팅되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  10. 제 9 항에 있어서,
    값 "0x00"을 갖지 않는 파일 시스템의 기록될 영역들은 플래시 메모리로부터 판독할 때 이들 영역의 데이터를 사용할 수 있기 위하여 인버팅되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  11. 제 8 항에 있어서,
    상기 플래시 메모리(9)에 기록될 상기 호스트(1)로부터의 미사용된 데이터의 바이트들(bytes)(U, S1ML)은 상기 인터페이스(5)에 놓여질 때 16진 값 0x00을 가지며, 인버션(inversion) 이후 상기 플래시 메모리(9)에서 소거된 바이트의 16진 값 0xFF를 가지며, 그리고, 16진 값 0xFF를 소거된 스토리지 유닛(STG, S1MLG)에 기록하는 대신, 상기 소거된 스토리지 유닛(STG, S1MLG)은 재소거 없이 그 소거된 상태(SG)에서 유지되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  12. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  13. 제 1 항 내지 제 3 항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램(computer program)을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  14. 제 13 항에 따른 컴퓨터 프로그램이 인스톨(install)되는 통신 디바이스(2).
  15. 제 14 항에 있어서,
    상기 통신 디바이스(2)는 모바일 전화(mobile telephone), 테블릿 PC, PDA 또는 스마트 폰 형태의 터미널로서, 혹은 데스크톱 PC 또는 랩톱 형태의 서버로서 구현되는,
    통신 디바이스(2).
  16. 제 4 항에 있어서,
    상기 대용량 스토리지 프로토콜은 USB 대용량 스토리지 프로토콜인,
    플래시 메모리(9)를 관리하기 위한 방법.
  17. 제 4 항에 있어서,
    상기 호스트(1)에 속하는 섹터의 데이터 콘텐츠의 크기가 데이터를 전달하기 위한 상기 인터페이스(5)에 알려져 있어서, 상기 기록될 연속 스토리지 유닛들의 수는 상기 플래시 메모리(9)에 기록될 섹터들의 볼륨으로서 스토리지 유닛들의 수로부터만 계산되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  18. 제 5 항에 있어서,
    상기 호스트(1)에 속하는 섹터의 데이터 콘텐츠의 크기가 데이터를 전달하기 위한 상기 인터페이스(5)에 알려져 있어서, 상기 기록될 연속 스토리지 유닛들의 수는 상기 플래시 메모리(9)에 기록될 섹터들의 볼륨으로서 스토리지 유닛들의 수로부터만 계산되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  19. 제 4 항에 있어서,
    기록될 제 1 스토리지 유닛의 콘텐츠(SSN, SS1N)에 더하여, 상기 제 1 스토리지 유닛(SSN, SS1N) 다음의 스토리지 유닛들의 수에 관한 부가적인 정보로서 상기 정보(IN1, IN2)가 상기 인터페이스(5)에 의해 제공되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  20. 제 5 항에 있어서,
    기록될 제 1 스토리지 유닛의 콘텐츠(SSN, SS1N)에 더하여, 상기 제 1 스토리지 유닛(SSN, SS1N) 다음의 스토리지 유닛들의 수에 관한 부가적인 정보로서 상기 정보(IN1, IN2)가 상기 인터페이스(5)에 의해 제공되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  21. 제 6 항에 있어서,
    기록될 제 1 스토리지 유닛의 콘텐츠(SSN, SS1N)에 더하여, 상기 제 1 스토리지 유닛(SSN, SS1N) 다음의 스토리지 유닛들의 수에 관한 부가적인 정보로서 상기 정보(IN1, IN2)가 상기 인터페이스(5)에 의해 제공되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  22. 제 4 항에 있어서,
    상기 적어도 하나의 스토리지 유닛(S1-SN)에 기록될 데이터의 일부(SA, BE, S1ML)는 상기 적어도 하나의 스토리지 유닛(S1, SN)이 기록되기 전에 인버팅되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  23. 제 5 항에 있어서,
    상기 적어도 하나의 스토리지 유닛(S1-SN)에 기록될 데이터의 일부(SA, BE, S1ML)는 상기 적어도 하나의 스토리지 유닛(S1, SN)이 기록되기 전에 인버팅되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  24. 제 6 항에 있어서,
    상기 적어도 하나의 스토리지 유닛(S1-SN)에 기록될 데이터의 일부(SA, BE, S1ML)는 상기 적어도 하나의 스토리지 유닛(S1, SN)이 기록되기 전에 인버팅되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  25. 제 7 항에 있어서,
    상기 적어도 하나의 스토리지 유닛(S1-SN)에 기록될 데이터의 일부(SA, BE, S1ML)는 상기 적어도 하나의 스토리지 유닛(S1, SN)이 기록되기 전에 인버팅되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  26. 제 9 항에 있어서,
    상기 플래시 메모리(9)에 기록될 상기 호스트(1)로부터의 미사용된 데이터의 바이트들(U, S1ML)은 상기 인터페이스(5)에 놓여 질 때 16진 값 0x00을 가지며, 인버션 이후 상기 플래시 메모리(9)에서 소거된 바이트의 16진 값 0xFF를 가지며, 그리고, 16진 값 0xFF를 소거된 스토리지 유닛(STG, S1MLG)에 기록하는 대신, 상기 소거된 스토리지 유닛(STG, S1MLG)은 재소거 없이 그 소거된 상태(SG)에서 유지되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  27. 제 10 항에 있어서,
    상기 플래시 메모리(9)에 기록될 상기 호스트(1)로부터의 미사용된 데이터의 바이트들(U, S1ML)은 상기 인터페이스(5)에 놓여 질 때 16진 값 0x00을 가지며, 인버션 이후 상기 플래시 메모리(9)에서 소거된 바이트의 16진 값 0xFF를 가지며, 그리고, 16진 값 0xFF를 소거된 스토리지 유닛(STG, S1MLG)에 기록하는 대신, 상기 소거된 스토리지 유닛(STG, S1MLG)은 재소거 없이 그 소거된 상태(SG)에서 유지되는,
    플래시 메모리(9)를 관리하기 위한 방법.
  28. 제 4 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  29. 제 5 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  30. 제 6 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  31. 제 7 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  32. 제 8 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  33. 제 9 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  34. 제 10 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  35. 제 11 항에 있어서,
    상기 플래시 메모리(9)는 번역 테이블을 가진 중간 메모리 및/또는 메모리 제어기를 요구하지 않는,
    플래시 메모리(9)를 관리하기 위한 방법.
  36. 제 4 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  37. 제 5 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  38. 제 6 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  39. 제 7 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  40. 제 8 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  41. 제 9 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  42. 제 10 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  43. 제 11 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
  44. 제 12 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 포함하는,
    컴퓨터 판독가능한 스토리지 매체.
KR1020157016424A 2012-11-21 2013-11-15 호스트에 연결될 수 있는 통신 디바이스에 의해 포함된 대용량 스토리지를 위한 플래시 메모리를 제어하기 위한 방법, 및 상기 방법을 수행하기 위한 컴퓨터 프로그램 물건 KR101700720B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102012022728.0 2012-11-21
DE102012022728.0A DE102012022728A1 (de) 2012-11-21 2012-11-21 Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens
PCT/EP2013/003447 WO2014079550A1 (de) 2012-11-21 2013-11-15 VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS

Publications (2)

Publication Number Publication Date
KR20150089042A KR20150089042A (ko) 2015-08-04
KR101700720B1 true KR101700720B1 (ko) 2017-01-31

Family

ID=49680967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157016424A KR101700720B1 (ko) 2012-11-21 2013-11-15 호스트에 연결될 수 있는 통신 디바이스에 의해 포함된 대용량 스토리지를 위한 플래시 메모리를 제어하기 위한 방법, 및 상기 방법을 수행하기 위한 컴퓨터 프로그램 물건

Country Status (6)

Country Link
US (2) US20150277786A1 (ko)
EP (1) EP2923261B1 (ko)
KR (1) KR101700720B1 (ko)
CN (1) CN104995595B (ko)
DE (1) DE102012022728A1 (ko)
WO (1) WO2014079550A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI562158B (en) 2014-10-13 2016-12-11 Silicon Motion Inc Non-volatile memory device and controller
JP5804584B1 (ja) * 2014-10-30 2015-11-04 ウィンボンド エレクトロニクス コーポレーション Nand型フラッシュメモリのプログラム方法
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
JP6875808B2 (ja) * 2016-09-09 2021-05-26 キヤノン株式会社 情報処理装置
CN106161657A (zh) * 2016-09-18 2016-11-23 深圳震有科技股份有限公司 一种基于智能手机的短信批量智能收发实现方法及系统
TWI621021B (zh) * 2017-08-25 2018-04-11 慧榮科技股份有限公司 用以優化資料儲存裝置之資料儲存方法及其資料儲存裝置
US11194789B2 (en) * 2019-06-07 2021-12-07 Sap Se Content agnostic memory pageable storage model
CN110647507B (zh) * 2019-09-12 2022-05-24 苏州浪潮智能科技有限公司 一种文件系统写状态确定方法、装置、电子设备及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100645540B1 (ko) * 2005-08-22 2006-11-14 삼성전자주식회사 플래시메모리의 데이터 관리 장치 및 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
FR2711831B1 (fr) * 1993-10-26 1997-09-26 Intel Corp Procédé et circuit de mémorisation et de hiérarchisation d'ordres d'effacement dans un dispositif de mémoire.
US5559988A (en) * 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US7644211B2 (en) * 2004-12-07 2010-01-05 Cisco Technology, Inc. Method and system for controlling transmission of USB messages over a data network between a USB device and a plurality of host computers
US7606966B2 (en) * 2006-09-08 2009-10-20 Sandisk Corporation Methods in a pseudo random and command driven bit compensation for the cycling effects in flash memory
KR100857252B1 (ko) * 2007-12-27 2008-09-05 (주)인디링스 마모도를 비트 수준에서 평준화하는 플래시 메모리 장치 및플래시 메모리 프로그래밍 방법
DE112010005870B4 (de) 2010-11-08 2019-10-10 Hyperstone Gmbh Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien
US8391086B2 (en) * 2011-03-04 2013-03-05 Elpida Memory, Inc. Mask-write apparatus for a SRAM cell

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100645540B1 (ko) * 2005-08-22 2006-11-14 삼성전자주식회사 플래시메모리의 데이터 관리 장치 및 방법

Also Published As

Publication number Publication date
EP2923261B1 (de) 2023-03-08
DE102012022728A1 (de) 2014-05-22
KR20150089042A (ko) 2015-08-04
US20150277786A1 (en) 2015-10-01
CN104995595A (zh) 2015-10-21
EP2923261A1 (de) 2015-09-30
WO2014079550A1 (de) 2014-05-30
CN104995595B (zh) 2019-03-08
US10509570B2 (en) 2019-12-17
US20170336992A1 (en) 2017-11-23

Similar Documents

Publication Publication Date Title
KR101700720B1 (ko) 호스트에 연결될 수 있는 통신 디바이스에 의해 포함된 대용량 스토리지를 위한 플래시 메모리를 제어하기 위한 방법, 및 상기 방법을 수행하기 위한 컴퓨터 프로그램 물건
JP7366795B2 (ja) メモリシステムおよび制御方法
US8566504B2 (en) Dynamic metablocks
EP3686728A1 (en) Data writing method and storage device
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
US6678785B2 (en) Flash management system using only sequential write
US8452940B2 (en) Optimized memory management for random and sequential data writing
CN110806985B (zh) 用来管理一记忆装置的方法以及其相关的记忆装置
US6968439B2 (en) Single segment data object management
KR20210108107A (ko) 메모리 시스템 및 그것의 동작방법
JP5418808B2 (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
CN111459844B (zh) 数据储存装置及用于存取逻辑至物理地址映射表的方法
WO2001008015A1 (fr) Systeme d'enregistrement, dispositif d'enregistrement de donnees, dispositif a memoire et procede d'enregistrement de donnees
JPWO2005103903A1 (ja) 不揮発性記憶システム
US8341375B2 (en) Methods for conversion of update blocks based on association with host file management data structures
US20080235489A1 (en) Systems for forcing an update block to remain sequential
JP2009503735A (ja) フラッシュメモリシステムのデータ記憶容量の解放
US20200073591A1 (en) Flash memory controller and associated accessing method and electronic device
US8745312B2 (en) Storage device and method of mapping a nonvolatile memory based on a map history
CN106445401B (zh) 表格更新方法、存储器储存装置及存储器控制电路单元
JP2009503743A (ja) データファイルを直接記憶するメモリブロックの管理
US10712970B2 (en) Flash memory controller and associated accessing method and electronic device
US7904670B2 (en) Methods for conversion of update blocks based on comparison with a threshold size
US20080235465A1 (en) Systems for conversion of update blocks based on association with host file management data structures

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200114

Year of fee payment: 4