KR20150063125A - 메모리 장치 및 호스트 장치 - Google Patents

메모리 장치 및 호스트 장치 Download PDF

Info

Publication number
KR20150063125A
KR20150063125A KR1020157010904A KR20157010904A KR20150063125A KR 20150063125 A KR20150063125 A KR 20150063125A KR 1020157010904 A KR1020157010904 A KR 1020157010904A KR 20157010904 A KR20157010904 A KR 20157010904A KR 20150063125 A KR20150063125 A KR 20150063125A
Authority
KR
South Korea
Prior art keywords
area
write
data
command
overwrite
Prior art date
Application number
KR1020157010904A
Other languages
English (en)
Other versions
KR101674335B1 (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 KR20150063125A publication Critical patent/KR20150063125A/ko
Application granted granted Critical
Publication of KR101674335B1 publication Critical patent/KR101674335B1/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/0608Saving storage space on storage systems
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/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/17Embedded application
    • G06F2212/177Smart card
    • 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)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

일 실시예에 따라, 메모리 장치는 비휘발성 반도체 메모리, 관리 단위 및 제어부를 포함한다. 비휘발성 반도체 메모리는 외부로부터 액세스가능하고 복수의 관리 단위로 분할되는 유저 영역을 포함하는 복수의 물리적 저장 영역을 갖는다. 제어부는 비휘발성 반도체 메모리를 제어하도록 구성된다. 제어부는 순차적 기입 영역을 지정하는 제1 인수를 갖는 제어 명령 및 판독 명령 또는 제어 명령을 수신하고, 판독 명령 또는 기입 명령의 어드레스에 의해 나타내어진 관리 단위를 순차적 기입 영역으로서 할당하고, 유저 영역을 액세스하는 메모리 액세스 명령의 어드레스가, 그의 크기가 관리 단위와 동등한 순차적 기입 영역 내의 액세스를 표시하는지를 판정함으로써 메모리 액세스 제어를 변경한다.

Description

메모리 장치 및 호스트 장치{MEMORY DEVICE AND HOST DEVICE}
<관련 출원에 대한 상호 참조>
본 출원은 2012년 10월 30일에 출원된 일본 특허 출원 번호 제2012-238849호; 및 2013년 8월 9일에 출원된 제2013-166804호의 우선권의 이익에 기초하고 그를 주장하며, 그 전체 내용은 본원에 참조로서 포함된다.
본원에 개시된 실시예들은 일반적으로 메모리 장치 및 호스트 장치에 관련된다.
SD™ 카드와 같은 메모리 장치들은 메모리 장치의 성능과 호스트 장치에 의해 요구되는 성능 간의 매칭을 용이하게하도록 복수의 클래스로 분류된다. 스피드 클래스는 스피드 클래스 번호에 의해 메모리 장치들의 성능을 분류하고 메모리 장치들의 성능을 계산하는 방법을 제공한다.
스피드 클래스는 특정 명령들을 사용하여 기입 절차(write procedure)를 제어한다. 성능을 유지하면서 메모리 기입을 하기 위해서는, 메모리 장치의 물리적 메모리 영역인 할당 단위(allocation unit)(이후에 AU 또는 순차 기입 영역으로 지칭됨)로 순차적 기입이 수행된다. 데이터는 할당 단위의 선두로부터 기입될 필요가 있다. 이러한 이유로, 데이터가 도중까지 기입된 할당 단위는 데이터 기록에 사용될 수 없다. 따라서, 데이터가 도중까지 기입된 할당 단위를 이용할 수 있는 메모리 장치 및 호스트 장치를 제공하고 할당 단위들의 이용 효율을 개선하는 것을 제공하는 것이 요망된다.
도 1은 실시예가 적용되는 메모리 시스템의 예를 도시하는 블록도이다.
도 2는 NAND 플래시 메모리의 유저 영역 관리 단위를 도시하는 도면이다.
도 3은 멀티 파일 기록의 예를 도시하는 도면이다.
도 4는 본 실시 형태에 적용되는 명령 포맷의 예를 도시하는 도면이다.
도 5는 명령을 사용한 순차적 기입 영역의 설정의 예를 도시하는 도면이다.
도 6은 명령을 사용한 덮어쓰기(overwrite) 영역의 제어의 예를 도시하는 도면이다.
도 7은 명령을 사용하여 데이터 영역의 선두를 설정하는 제어의 예를 도시하는 도면이다.
도 8은 명령을 사용하여 카드 영역을 준비하는 제어의 예를 도시하는 흐름도이다.
도 9a는 할당 단위로 기입하는 예를 도시하는 도면이며, 도 9b는 셋업 시퀀스(setup sequence)의 예를 도시하는 흐름도이다.
도 10은 도 9b에 도시하는 셋업 시퀀스를 명령 시퀀스(command sequence)로서 나타낸 예를 도시하는 도면이다.
도 11은 카드를 초기화해서 루트 디렉토리 밑에 서브디렉토리(subdirectory)를 작성하고, 파일을 작성하는 예를 도시하는 도면이다.
도 12는 도 11의 동작을 구체적으로 도시하는 도면이다.
도 13은 도 11 및 도 12의 동작을 명령 시퀀스로서 나타낸 예를 도시하는 도면이다.
도 14는 도 3에 도시하는 동작을 명령 시퀀스로서 나타낸 예를 도시하는 도면이다.
도 15는 비디오 그레이드(video grade)의 성능 정보와 AU 크기 정보의 예를 도시하는 도면이다.
일반적으로, 일 실시예에 따라, 메모리 장치는 비휘발성 반도체 메모리 및 제어부를 포함한다. 비휘발성 반도체 메모리는 외부로부터 액세스가능하고 복수의 관리 단위로 분할되는 유저 영역을 포함하는 복수의 물리적 저장 영역을 갖는다. 제어부는 비휘발성 반도체 메모리를 제어하도록 구성된다. 제어부는 순차 기입 영역을 지정하는 제1 인수를 갖는 제어 명령와, 판독 명령 또는 기입 명령을 수신하고, 판독 명령 또는 기입 명령의 어드레스로 나타내어진 관리 단위를 순차 기입 영역으로서 할당하고, 유저 영역을 액세스하는 메모리 액세스 명령의 어드레스가, 크기가 관리 단위와 동등한 순차 기입 영역 내의 액세스를 나타내는지를 판정함으로써 메모리 액세스 제어를 변경한다.
이제 본 실시예는 첨부하는 도면들을 참조하여 설명될 것이다.
도 1은, 본 실시 형태에 관한 메모리 시스템을 개략적으로 나타내고 있다.
메모리 시스템은, SD 카드와 같은 메모리 장치(11)(이하, 카드라고도 지칭한다)와, 호스트 장치(20)를 포함한다.
호스트 장치(20)와 메모리 장치(11)는 SD 버스 인터페이스(26)에 의해 접속되어 명령을 이용하여 통신한다. 메모리 장치(11)는 호스트에 대해 SD 버스 인터페이스를 통해 비지(busy)를 나타낼 수 있다. 비지 표시는 카드가 무언가를 수행하고 있음을 의미하고 호스트가 다음 명령을 발행하는 것을 방지한다.
호스트 장치(20)에 접속된 경우, 메모리 장치(11)는 전력을 수신하고, 호스트 장치(20)로부터의 액세스에 대응하는 처리를 수행한다. 메모리 장치(11)는 제어기(11a)를 포함한다.
제어기(11a)는, 예를 들어, 호스트 인터페이스(I/F)(12), CPU(13), ROM(Read only Memory)(14), 휘발성 메모리로서의 기능하는 RAM(Random Access Memory)(15), 버퍼(16), 메모리 인터페이스(I/F)(17)를 포함한다. 이들은 버스에 의해 접속되고 있다. 메모리 인터페이스(17)는, 예를 들어, NAND 플래시 메모리(18)와, 확장 기능부로서 기능하는 I/O(19)에 접속되고 있다. 예를 들어, 무선 LAN 장치 등을 확장 기능부에 적용할 수 있다.
호스트 인터페이스(12)는 제어기(11a)와 호스트 장치(20) 사이의 인터페이스 처리를 수행한다. 호스트 인터페이스(12)는 레지스터(12a)를 포함한다. 레지스터(12a)는 후술되는 AU의 크기 등의 메모리 장치(11)에 대한 고유한 데이터를 저장한다. 레지스터(12a)는 또한 실행 동안의 상태를 저장한다. 디폴트 설정(default setting)이 NAND 플래시 메모리(18)로부터 판독되어 전원 투입(power-on)시에 레지스터(12a)에 설정된다. 레지스터(12a)의 내용은 명령에 의해 판독될 수 있는데, 예를 들어, 상태는 호스트 장치(20)에 의해 발행되는 CMD13에 의해 판독될 수 있다.
메모리 인터페이스(17)는 제어기(11a)와 NAND 플래시 메모리(18) 또는 I/O(19) 사이의 인터페이스 처리를 수행한다. CPU(13)에 의한 데이터 전송뿐만 아니라, 하드웨어의 DMA 전송에 의해, 호스트인터페이스(12), RAM(15), 버퍼(16) 등의 데이터를 전송할 수 있다.
CPU(13)는, 전체 메모리 장치(11)의 동작을 제어한다. CPU(13)는, ROM(14) 내에 저장된 펌웨어(제어 프로그램 등), 혹은, NAND 플래시 메모리(18)에 기록된 펌웨어를 RAM(15) 상으로 로드해서 미리결정된 처리를 실행한다. 즉, CPU(13)는, 각종 테이블 및, 예를 들어, 확장 레지스터를 RAM(15) 상에 작성하고, 호스트 장치(20)로부터 기입 명령, 판독 명령, 또는 소거 명령을 수신하면, NAND 플래시 메모리(18) 상의 영역을 액세스하거나, 버퍼(16)를 개재해서 데이터 전송 처리를 제어한다.
ROM(14)은, CPU(13)에 의해 사용되는 제어 프로그램 등의 펌웨어를 저장한다. 펌웨어의 일부 부분이 ROM(14)에 구현될 수 있는 반면, 펌웨어의 나머지 부분은 NAND 플래시 메모리(18)에 저장하고, RAM(15)에 추출하여 실행할 수 있다. RAM(15)은, CPU(13)의 작업 영역으로서 사용되어, 제어 프로그램, 각종 테이블 및 확장 레지스터를 저장한다.
버퍼(16)는, 호스트 장치(20)로부터 보내진 데이터를 NAND 플래시 메모리(18)에 기입할 때, 미리결정된 양의 데이터(예를 들어, 1페이지분의 데이터)을 일시적으로 저장하거나, NAND 플래시 메모리(18)로부터 판독된 데이터를 호스트 장치(20)에 보낼 때, 미리결정된 양의 데이터를 일시적으로 저장한다. 버퍼(16)를 개재함으로써, SD 버스인터페이스와 백-엔드(back-end)의 비동기 제어를 가능하게 한다.
NAND 플래시 메모리(18)는, 예를 들어, 적층 게이트 구조를 갖는 메모리 셀 또는 MONOS 구조를 갖는 메모리 셀을 포함한다.
I/O(19)는 디지털 카메라, PHS 등에 대한 주변 장치나 인터페이스로서의 기능을 갖고 있다. 예를 들어, I/O(19)로서 무선 LAN 장치를 적용하는 경우, 무선 통신 기능을 갖지 않는 디지털 카메라에서도 외부 서버나, 외부 PC(퍼스널 컴퓨터)와의 무선 데이터 통신을 수행할 수 있다.
호스트 장치(20)로서, 예를 들어 디지털 카메라나 PHS 등이 적용가능하다. 호스트 장치(20)는, 호스트 컨트롤러(21), CPU(22), ROM(23), RAM(24) 및, 예를 들어, 하드 디스크(25)(SSD를 포함함)를 포함한다. 이들은 버스에 의해 접속되고 있다.
CPU(22)는, 전체 호스트 장치(20)를 제어한다. ROM(23)은, CPU(22)의 동작에 필요한 펌웨어를 저장하고 있다. 저장소 장치(예를 들어, HDD(25))로부터 판독한 펌웨어를 RAM(24)에 저장하고, ROM(23)을 갖지 않는 시스템을 구성하는 것도 가능하다. RAM(24)은, 예를 들어 CPU(22)의 작업 영역으로서 사용된다. CPU(22)에 의해 실행가능한 프로그램이 또한 여기에 로드되어 실행된다. 하드 디스크(HDD)(25)는, 각종 데이터를 보유한다. 호스트 컨트롤러(21)는, 메모리 장치(11)가 접속된 상태에서, 메모리 장치(11)에 대한 인터페이스 처리를 수행한다. 호스트 컨트롤러(21)는 또한 CPU(22)로부터의 지시에 따라 후술하는 각종 명령을 발행한다.
또한, 호스트 장치(20)는, 예를 들어, 하드 디스크(25)에 저장되고, NAND 플래시 메모리(18)의 유저 영역을 포맷하는 파일 시스템을 인식하도록 구성된 메모리 관리 소프트웨어를 갖는다. 메모리 관리 소프트웨어는 데이터를 순차 기입 영역 또는 덮어쓰기 영역에 기입할지를 작성될 파일의 파일명 또는 데이터 길이에 기초하여 판정한다.
도 2는, NAND 플래시 메모리(18)의 영역 중에서 유저가 사용가능한 유저 영역(18a)의 관리 단위를 도시한다. 외부로부터 명령을 사용해서 액세스가능한 영역인 NAND 플래시 메모리(18)의 유저 영역(18a)은 복수의 AU로 분할되고 있다. AU1 내지 AUn의 각각의 크기는, NAND 플래시 메모리(18)의 물리적 경계에 기초하여 결정된다(경계들은 파일 시스템이 관리하는 유저 영역의 경계와 동등한 것이 아님). AU 크기의 n(정수)배가 유저 영역(18a)의 전체 메모리 용량이 된다.
선두의 AU1에는, 통상, FAT(file allocation table)와 같은 파일 시스템의 정보가 기록된다. 이로 인해, AU1에 대한 기입 성능은 보장되지 않는다. (AU2가 비어있는(free) AU라면) AU2 내지 AUn은, 성능이 보장된 기록 영역이며, 기록가능 영역(recordable area)으로서 나타내고 있다. 그러나, 디렉토리 엔트리(directory entry)나 덮어쓰기를 기록하기 위한 AU들은 성능 보장으로부터 제외된다. AU 크기가 작고, 예를 들어 AU1 내지 AUp에 파일 시스템의 정보가 기록되는 경우에는, AU(p+1) 내지 AUn이 성능 보장된 기록 영역이다.
또한, 각 AU는, 복수의 기록 단위(recording unit)(이하, RU라고 칭한다)로 분할되고 있다. 그의 어드레스가 RU 경계 상에 있고, 데이터 길이가 적어도 RU의 크기 이상인 데이터를 연속하여 기입하는 순차 기입(sequential write)에 대하여 성능이 보장된다. 그로 인해, 호스트 장치(20)는, RU의 정수배에 대응하는 단위로 멀티 블록 기입을 실행할 필요가 있다. 이것은 카드 내부의 파이프라인(pipeline) 동작의 효과가 성능에 나타나기 위해서는 특정 데이터 길이가 필요하기 때문이다.
도 2는, 1개의 AU가 m개의 RU로부터 형성되는 것을 나타내고 있다. RU의 크기를 SRU, AU의 크기를 SAU로 하면, 1개의 AU 내의 RU의 수 m = NRU가, SAU/SRU에 의해 주어진다.
임의의 AU에 대하여 순차 기입을 행한 경우의 평균 성능의 최악의 값(worst value)이, 메모리 장치의 기입 성능 정보 Pw에 의해 표현된다. AU 크기가 4MB를 초과하는 경우는, AU를 4-MB 영역으로 분할하여 획득된 4-MB 영역의 평균 성능의 최악 값으로서 Pw가 정의된다.
호스트 장치(20)는, Pw와 AU의 크기 SAU를, 예를 들어, 메모리 장치의 레지스터(12a)로부터 판독하여 성능 계산에 사용할 수 있다. RU 크기는 고정된 값으로서 정의된다.
(복수의 파일을 기입하는데 있어서의 성능 추정)
AU 어드레스와 AU 크기로 나타나는 영역에 대한 순차 기입의 평균 최저 성능(minimum average performance)은, Pw로부터 추정할 수 있다. 장치들 사이에서 Pw와 AU 크기의 값이 상이하기 때문에, 호스트 장치(20)는 메모리 장치의 레지스터(12a)로부터 Pw와 AU 크기를 판독하여 대응할 필요가 있다.
여기에서는, Pw = 10MB/초의 성능을 갖는 메모리 장치에 대한 성능 추정 방법의 예가 설명될 것이다. 장치의 메모리 액세스 시간을 타임 슬롯을 이용하여 관리할 경우, 이 장치는, 1초의 각 타임 슬롯에서 적어도 10MB의 데이터를 기입할 수 있다고 생각할 수 있다. 4MB/초의 평균 성능으로 기록을 수행하는 경우, 1초의 타임 슬롯의 어디에선가 4-MB 데이터를 기입할 필요가 있다.
3개의 파일을 시분할로 기입할 때, 1초의 타임 슬롯 내의 데이터 기입량을 조정함으로써, 각 파일의 기입 성능을 조정할 수 있다. 3개의 각 파일을 3MB/초로 기입하는 경우, 그들은 각각 1초의 타임 슬롯 내에 분할되어 3MB씩 기입된다. 타임 슬롯의 나머지 100ms은 호스트 장치 측의 제어를 위한 마진으로서, FAT를 갱신하기 위한 시간의 일부로서 할당할 수 있다. 즉, 할당될 타임 슬롯의 수를 결정해서 시분할로 기입을 수행함으로써, 호스트 장치가 복수의 파일의 기입 성능을 계산하고, 제어할 수 있다.
(멀티 파일 기록의 예)
도 3은, NAND 플래시 메모리(18)의 유저 영역(18a)에 대한 멀티 파일 기록의 예를 도시한다.
도 3을 참조하면, 덮어쓰기 영역(OverW-Area)은, 후술하는 명령(CMD20)의 "Set Over-Write Area"에 의해 할당된다. 또한, 순차 기입이 행하여지는 영역(이하, 순차 기입 영역이라고 지칭함)은, CMD20의 "Set Sequential-Write AU"에 의해 할당된다.
CMD20의 "Set Sequential-Write AU"에 의해, 1개의 순차 기입 영역을 할당할 수 있다. 호스트 장치(20)는 순차 기입 영역에 복수의 파일을 분할하여 기입할 수 있다.
도 3을 참조하면, 덮어쓰기 영역(OverW-Area)의 디렉토리 엔트리 DIR1에는, 3개의 파일 엔트리 FE1, FE2 및 FE3이 작성되고, 디렉토리 엔트리 DIR2에는, 파일 엔트리 FE4가 작성된다.
순차 기입 영역 SeqW-AU에서, File 1a은, File 1의 일부이며, RU 기반으로 RU 경계에 매칭시켜서 기입한다. 이로 인해, File 1a을 기입하는 경우, 적어도 성능 Pw가 보장된다.
File 2 및 File 3의 각각은, RU 이하의 크기를 갖고, RU보다 작은 데이터 크기로 기입된다. 데이터는, RU 경계보다 작은, 예를 들어, 64-KB의 경계상에 있다. File 2 및 File 3을 기입하는 경우, 데이터 길이가 RU 크기보다 작기 때문에 성능 Pw는 보장되지 않는다.
File 4를 적어도 성능 Pw가 보장되면서 기입할 필요가 있는 경우, 우선, File 3에 이어 패딩(padding)으로서 RU 경계까지 더미 데이터가 기입된다. 패딩은 호스트에 의해 행해지거나 카드에 의해 행해질 수 있다. 다음으로, File 4을 RU 경계에 매칭시켜서 기입한다. 즉, File 4의 데이터는, RU 기반으로 RU 경계에 매칭시켜서 기입되므로 성능 Pw가 보장된다.
File 1의 나머지 부분으로서의 File 1b가 File 4 다음에 기입된다. File 1b는, RU 기반으로 RU 경계에 매칭시켜서 기입하는 경우, 적어도 성능 Pw가 보장된다. 즉, 호스트 장치(20)는, 그들을 RU 단위의 배수로 분할함으로써, File 1 및 File 4의 기입 성능을 관리한다.
도시하고 있지 않지만, File 1을 닫기 위해서, FAT 갱신이 실행된다. FAT 영역이나 비트맵(도시하지 않음)이 갱신되고, DIR 영역의 파일 엔트리 1(FE1)을 포함하는 512 byte를 갱신함으로써, File 1의 도중까지의 기입 데이터를 파일 시스템으로서 결정할 수 있다. 따라서, 호스트는 파일 시스템 정보로부터 File 1의 기입된 데이터까지의 데이터를 판독할 수 있다.
도 4는 본 실시형태에 적용되는 명령 CMD20의 포맷의 예를 도시한다.
도 4에 도시하는 CMD20에서, "S"는, 명령의 시작 비트를 나타내고, "T"는 전송 방향을 나타내는 비트이고, "인덱스(index)"는, 명령 번호를 나타내며, 명령이 순차적 기입 등의 제어 명령인 것을 특정하기 위한 비트 열을 갖고 있다.
"SCC"는, 스피드 클래스 제어(Speed Class Control)을 나타내는 인수이며, 명령의 기능이나 동작을 지정하는 동작 지정 부분이다. "SCC"는, 복수 비트로 형성되어, "SCC"의 비트에 의해 CMD20의 각종 기능이 설정된다.
"OWAS" (Over Write Area Size)은, 덮어쓰기 영역의 크기를 지정하는 인수이다.
"CRC7"은, 순회 용장 검사(cyclic redundancy check) 코드를 나타내고 있다.
"E"는, 명령의 엔드 비트를 나타내고 있다.
전술한 바와 같이, CMD20에서, "SCC"의 비트에 의해, 예를 들어, "Start Recording", "Update DIR", "Update CI", "Set Sequential-Write AU", "Set Over-Write Area", "Set Top of Data Area", 및 "Arrange Area"가 설정된다.
(Set Sequential-Write AU)
CMD20 "Set Sequential-Write AU"은, 순차적 기입 영역을 할당하기 위한 명령이다. 이 CMD20" Set Sequential-Write AU"은, 후술하는 바와 같이, 판독 명령이나, 기입 명령와 조합하여 사용된다.
CMD20 "Set Sequential-Write AU"은, 예를 들어, 기록의 준비를 행하는 셋업 시퀀스에서 사용되는 경우, 이 명령의 처리 시간으로서, 예를 들어, 1초의 비지 시간이 허용된다. 이 명령이 데이터의 기록 동안에 사용될 경우, 비지의 허용 시간은, 예를 들어 10ms로 억제되고 있다.
(Set Over-Write Area)
CMD20 "Set Over-Write Area"은, 덮어쓰기 영역을 설정하기 위한 명령이다. 덮어쓰기 영역은, 판독 명령 또는 기입 명령과 조합하여 CMD20 "Set Over-Write Area" 및 어드레스를 사용해서 지정된다. CMD20 "Set Over-Write Area"에는, 예를 들어 100ms의 비지 기간이 설정되고 있다. 덮어쓰기 영역은 순차적 기입 영역에 할당될 수 없다.
CMD20과 기입 명령/ 판독 명령을 사용한 처리에서, 메모리 액세스 제어는, 예를 들어, 기입 명령을 처리 중인 것을 나타내는 비지 시간의 제어, 기입되지 않고 있는 부분의 데이터를 유지하는 제어, 또는 캐시 제어(직접 NAND 플래시 메모리에 데이터를 기입하는 대신에 버퍼에 데이터를 기입해 두고, 추후에 버퍼에 기입된 데이터를 정리해서 플래시 메모리에 기입하는 방식)일 수 있다는 것을 유의한다. 캐시를 사용하는 경우에, 기입 비지 시간은 각각의 액세스에 대해 상당히 변하며, 기입 성능은 비지 시간의 평균에 의해 추정된다.
(Set Top of Data Area)
CMD20 "Set Top of Data Area"은, 파일 시스템의 데이터 영역을 판독 명령과 조합하여 카드에 통지하는 명령이다. 카드는 파일 시스템을 분석할 필요가 없고, DIR 영역이나 비트맵의 위치를 예측할 수 있다. 데이터 영역의 선두 어드레스는 CMD20 "Set Top of Data Area"과 판독 명령에 의해 지정된다. CMD20 "Set Top of Data Area"에는, 예를 들어 100ms의 비지 기간이 설정되고 있다.
(Arrange Area)
CMD20 "Arrange Area"는, 특정한 시간 내에서 메모리 장치(11)가 영역을 준비하는 것을 허가하는 명령이며, CMD20의 비지를 해제함으로써, 준비의 완료를 나타낸다. CMD20 "Arrange Area"는, CMD20의 다른 기능과는 달리, 단독으로 사용된다. CMD20 "Arrange Area"는, 셋업 시퀀스에서 사용될 경우, 예를 들어, 1초의 비지 시간을 허용하고 있고, CMD20 "Arrange Area"가 데이터의 기록에서 사용될 경우, 비지의 허용 시간은, 예를 들어, 250ms로 억제된다.
("OWAS":Over-Write Area Size)
"OWAS"은, 덮어쓰기 영역의 크기를 지정하는 인수이다.
본 실시 형태에서, 덮어쓰기 영역의 크기 지정 방법은 2가지가 있다.
(1) CMD20의 "OWAS"을 "0000b"로 설정한 경우
이 경우, CMD20에 후속하는 CMD18의 판독 동작 범위, 또는 CMD25의 기입 동작 범위에 의해, 덮어쓰기 영역의 크기가 지정된다.
예를 들어, 디렉토리 엔트리 영역을 신규로 작성하는 경우, 초기화를 위해서 그 영역에 데이터 "0"을 기입할 필요가 있다. 호스트 장치(20)가 CMD20 "Set Over-Write Area" + CMD25를 발행하고, 데이터 "0"을 기입하는 경우, 작성한 디렉토리 엔트리 영역은, 덮어쓰기 영역으로서 할당할 수 있다. 그러나, FAT 파일 시스템에서는, 항상 모든 비트에 "0"을 기입할 필요는 없고, 현재 디렉토리를 나타내는 "."과, 부모 디렉토리를 나타내는 ".." 등의 파일 엔트리를, 이 명령으로 기입할 수도 있다.
(2) CMD20의 "OWAS"을 "0001b" 내지 "1111b"로 설정한 경우, 도 4에 도시하는 크기를 갖는 덮어쓰기 영역을 할당할 수 있다. 이 경우, 판독 크기(CMD18), 및 기입 크기(CMD25)는 "OWAS"의 설정값 이하일 필요가 있다.
본 실시 형태의 CMD20을 지원하는 메모리 장치는, 종래의 명령을 수신할 수 있고, 그것의 해석을 본 실시 형태의 명령으로 변환할 수 있다. 이에 의해, 호환성을 어느 정도 유지할 수 있다.
(Start Recording)
CMD20 "Start Recording"은, 최초에 순차적 기입 영역을 지정하는 명령이다. 이 "Start Recording"은, 그대로 "Set Sequential-Write AU"로서 다룰 수 있다. 이 CMD20은, 1초의 비지를 표시할 수 있다.
"Start Recording"은, 최초의 AU를 지정하는데 사용될 뿐, 후속하는 순차적 기입 영역의 지정에는 사용되지 않는다. 이로 인해, 다음의 조건을 만족하는 AU는, 순차적 기입 영역으로서 할당할 필요가 있다. 멀티-블록(multi-block) 기입 명령 CMD25가, 데이터 기입이 RU 기반으로 RU 경계와 매칭시켜 최후 영역까지 수행되는 것을 나타내는 경우, 그의 기입처는 할당된 순차적 기입 영역이고, 다음의 CMD25가, 데이터 기입이 다른 AU의 선두로부터 RU 기반으로 RU 경계와 일치하여 수행되는 것을 나타내는 경우, 새롭게 기입한 AU를 순차적 기입 영역으로서 할당한다.
(Update DIR)
"Update DIR"은, 디렉토리 엔트리의 일부인 512-byte를 갱신하는 CMD24/25 이전에 발행된다.
CMD24/25가 나타내는 어드레스로부터 512-byte의 영역이, 덮어쓰기 영역으로서 할당되어 있지 않은 경우, 적어도 CMD24/25가 나타내는 어드레스로부터 512-byte의 영역을 포함하는 영역을 덮어쓰기 영역으로서 할당한다.
CMD24/25가 나타내는 어드레스로부터 512-byte의 영역이, 이미 덮어쓰기 영역에 할당되어 있는 경우, 이 할당이 유지되어, CMD 20 "Update DIR"은 더 이상의 처리를 수행할 필요는 없다.
(Update CI)
"Update CI"는, 비디오 데이터 등의 스트림 데이터의 기입 동안에 작은 CI(Continuation Information) 데이터를 기입하는 경우에 사용된다. 이 경우, "Update CI"는, CI 데이터의 일부인, 예를 들어, 512-byte 데이터를 기입하는 CMD24/25 이전에 발행된다.
다음 "Update CI"는, 다음 512-byte 영역에 기입될 가능성이 높다. 따라서, CI 데이터용의 덮어쓰기 영역을 할당할 경우, 바람직하게는 비교적 큰 영역이 할당된다.
CMD24/25가 나타내는 어드레스로부터 512-byte의 영역이 덮어쓰기 영역으로서 할당되어 있지 않은 경우, 적어도 CMD24/25가 나타내는 어드레스로부터 512-byte의 영역을 포함하는 영역이 덮어쓰기 영역으로서 할당된다.
CMD24/25가 나타내는 어드레스로부터 512-byte의 영역이, 이미 덮어쓰기 영역으로 할당되어 있는 경우, 이 CMD20은 더 이상의 처리를 수행할 필요가 없다.
(CMD20의 구체적인 기능)
다음으로, CMD20의 "Set Sequential-Write AU", "Set Over-Write Area", "Set Top of Data Area", 및 "Arrange Area"의 기능에 대해서 구체적으로 설명한다.
(순차적 기입 영역의 설정:Set Sequential-Write AU)
종래에는, 그 사양때문에, 도중까지 데이터를 기입한 AU는 데이터의 기록에 사용할 수 없다. 이로 인해, 메모리 장치의 전원을 꺼버리면, 다음에 전원을 다시 넣었을 경우, 전회에서 도중까지 데이터를 기입한 AU 내의 비어있는 영역은 사용할 수 없었고, AU의 이용 효율이 저하되고 있었다.
본 실시 형태에서는, 초기화 시에 도중까지 사용한 AU를 순차적 기입 영역으로서 할당할 수 있다.
도중까지 사용한 AU를 사용가능하게 하는 지정 방법이 제공되는 경우, AU의 이용 효율이 향상될 수 있다.
카드의 영역 관리는 호스트 장치(20)에 의해 관리되기 때문에, 카드의 전원이 꺼져도, 카드는 할당된 정보를 유지할 필요가 없다. 이 방법에 따르면, 카드로의 전원이 제공된 후에도, 호스트 장치(20)는 전원이 꺼지기 전과 동등한 영역들을 재지정할 수 있다.
순차적 기입 영역은, 1개의 AU가 완전하게 기입될 때까지 유효하다.
종래에는, 랜덤 기입이 발행된 경우에, 순차적 기입은 종료되고, 그 AU에 추가 기입을 행할 수 없었다.
본 실시 형태에서는, 순차적 기입 영역으로 할당된 AU는, 다른 영역에 대한 랜덤 기입이 삽입되더라도 순차적 기입을 계속할 수 있다. 이로 인해, 순차적 기입 영역의 비어있는 영역에 추가 기입을 수행할 수 있고, AU의 이용 효율을 향상할 수 있다.
이하, 도 5를 참조하여, 순차적 기입 영역 SeqW-AU의 설정에 대해서, 구체적으로 설명한다.
순차적 기입 영역 SeqW-AU를 할당하는 명령 형식은 다음과 같다.
CMD20" Set Sequential-Write AU" + CMDxx
이러한 명령 형식에 의해, 1개의 순차적 기입 영역 SeqW-AU가 지정된다.
CMD20" Set Sequential-Write AU"와 CMDxx의 조합은, 다음과 같다.
CMDxx는, 예를 들어, 판독 명령(CMD17), 또는 멀티-블록 기입 명령(CMD25)의 2가지 상이한 명령 중 하나이고, CMDxx의 어드레스는 AU의 선두 또는 도중을 나타낸다. 이 결과, 4가지의 지정 방법이 사용가능하다.
(경우 1)
AU의 선두 어드레스로부터 512-byte를 CMD17에 의해 판독하는 경우, 그 AU가 순차적 기입 영역으로서 할당된다. 데이터는 순차적 기입 영역의 선두로부터 기입된다. 판독된 데이터는 의미없기 때문에 버려져야 한다.
(경우 2)
AU의 도중의 어드레스로부터 512-byte를 CMD17에 의해 판독하는 경우, 그 AU가 순차적 기입 영역으로서 할당된다. 데이터는 지정한 어드레스로부터 기입된다. 지정한 어드레스 이전의 영역에 기록된 데이터는 보존된다. 판독된 데이터는 의미없기 때문에 버려져야 한다.
(경우 3)
AU의 선두 어드레스로부터 CMD25에 의해 데이터가 기입되는 경우, 그 AU가 순차적 기입 영역으로서 할당된다. 데이터는 AU의 선두로부터 기입되고, 후속하는 데이터는, 기입된 데이터의 직후의 어드레스로부터 기입된다.
(경우 4)
AU의 도중의 어드레스로부터 CMD25에 의해 데이터가 기입되는 경우, 그 AU가 순차적 기입 영역으로서 할당된다. 데이터는 AU의 도중의 지정한 어드레스로부터 기입되고, 후속하는 데이터는 기입된 데이터의 직후의 어드레스로부터 기입된다. 지정한 어드레스 이전의 영역에 기록된 데이터는 보존된다.
(순차적 기입 영역의 유효성(validity))
순차적 기입 영역의 유효성은 다음 CMD20" Set Sequential-Write AU" + CMDxx에 의해 새로운 영역이 지정되면 해제된다.
할당된 순차적 기입 영역의 마지막까지 데이터가 기입된 경우, 할당이 해제된다.
메모리 장치(11)의 전원이 꺼진 경우, 순차적 기입 영역의 할당을 유지하고 있어도 되고 해제해도 된다. 심지어 순차적 기입 영역의 기입이 순차적이지 않다는 판정시에도 할당이 해제된다(덮어쓰기가 발생함). 할당은, 호스트가 다른 영역을 순차적 기입 영역으로 할당하면 또한 해제된다.
(덮어쓰기 영역의 설정:Set Over-Write Area)
전술한 바와 같이, CMD20 "Set Over-Write Area"은, 덮어쓰기 영역을 설정하는 명령이다. 랜덤 데이터는 캐시에 일시적으로 저장될 수 있다.
그러나, 유저 영역 전체가 랜덤 기입의 대상으로 될 수 있기 때문에, 캐시 플래시(cache flash)가 발생했을 때, 매우 긴 처리 시간이 걸릴 수 있다. 그로 인해, 메모리 장치(11)가 긴 비지(long busy)를 표시하고, "소규모 동결(petit freeze)"이라는 현상이 발생할 수 있다. 특히, 플래시 메모리의 블록 크기(AU 크기를 정하는 기본으로서 기능하는 물리적 데이터 길이)가 커질수록, 데이터를 관리하는 영역이 넓기 때문 비지 시간도 길어지는 경향이 있다. 이것은 큰 블록을 갖는 플래시 메모리에서는 특히 심각한 문제가 된다.
본 실시 형태에서는, 덮어쓰기 영역이 지정된다. 이것은 캐시 플래시의 영향을 감소시키고, 최악의 경우에서도, 처리 시간을 짧게 추정할 수 있고, 카드가 긴 비지를 표시하는 것을 방지하는 것을 가능하게 한다.
이로 인해, 본 실시 형태에서는, 복수의 덮어쓰기 영역이 할당될 수 있다. 또한, 비지 시간이 미리결정되고, 할당에 요구되는 시간이 보장된다.
덮어쓰기 영역은, CMD20 + 판독/기입 명령 및 어드레스를 사용해서 지정된다.
덮어쓰기 영역의 크기를 지정하기 위해, 예를 들어, 다음 2개의 방법을 사용하는 것이 가능하다.
(1) CMD20으로 크기를 지정하는 방법.
(2) 판독된/기입된 데이터 영역으로 크기를 지정하는 방법.
방법 (1)(CMD20의 인수 OWAS로서 설명)은, 큰 영역들을 함께 덮어쓰기 영역으로서 지정할 경우에 효과적이다. 디렉토리 엔트리를 처음으로 작성하는 경우, 초기화를 위해서, 할당된 영역에 데이터 "0"을 기입할 필요가 있다. 따라서, 이 경우에, 방법 (2)가 효과적이다.
미지정 영역에 데이터를 기입하는 경우, 기입 명령은 긴 비지를 나타낼 수 있다는 것에 유의한다. 예를 들어, 덮어쓰기 영역의 최대 비지 시간 250ms에 대하여, 미지정 영역에 대한 최대 비지 시간은 500ms로 설정된다. 이것은 덮어쓰기 영역에 대한 캐시 제어 방법과 미지정 영역에 대한 캐시 제어 방법이 상이한 것을 의미한다. 따라서, 메모리 장치는, AU를 액세스하는 명령의 어드레스가 덮어쓰기 영역에 대한 액세스를 나타내는 경우, 메모리 액세스 제어, 예를 들어 캐시의 제어를, 덮어쓰기 영역 이외의 영역들에 대한 제어와는 상이한 제어로 변경한다. 즉, 호스트 장치는, 순차적 기입 영역과 덮어쓰기 영역을 지정하고, 그 영역 내에 기입을 수행한다. 이것은 메모리 장치가 효율적 처리를 하게 하고, 총 성능을 개선하게 한다.
이하, 도 6을 참조하여, 덮어쓰기 영역의 지정 방법에 대해서 구체적으로 설명한다.
덮어쓰기 영역을 할당하는 명령 형식은 다음과 같다.
CMD20 "Set Over-Write Area" + CMDxx
이 형식에 의해, 1개의 덮어쓰기 영역이 지정된다. 예를 들어, 카드는 최대 8개의 덮어쓰기 영역을 할당할 수 있다. 8개 이상의 덮어쓰기 영역을 지정하는 경우, 최신의 8개의 영역이 덮어쓰기 영역으로서 유효하다.
CMD20과 CMDxx의 조합은 다음과 같다.
CMDxx는, 예를 들어, 멀티-블록 판독 명령 CMD18, 또는, 멀티-블록 기입 명령 CMD25이며, 2가지의 상이한 지정 방법이 있다(명령은 단일 기입 명령 CMD24 또는 단일 판독 명령 CMD17일 수 있다).
영역의 크기 지정을 위해, 후술하는 CMD20의 인수로 크기에 의해 지정하는 방법 또는 CMDxx에 의해 액세스된 영역에 의해 지정하는 방법을 이용할 수 있다.
(경우 1)
도 6에 도시한 바와 같이, AU의 도중의 어드레스로부터 CMD25에 의해 데이터를 기입하는 경우, 그 AU의 일부가 덮어쓰기 영역으로서 할당되고, 데이터는 지정한 어드레스로부터 기입된다. 덮어쓰기 영역은, CMD20의 인수 OWAS에 의해 나타나는 설정값, 또는 CMD25로 기입한 데이터 길이로 지정된다. 지정한 덮어쓰기 영역에서, 기입한 영역 이외의 영역의 데이터는 보존된다.
(경우 2)
도 6에 도시한 바와 같이, AU의 도중의 어드레스로부터 CMD18에 의해 512-byte의 데이터를 판독하는 경우, 그 AU의 일부가 덮어쓰기 영역으로서 할당되고, 데이터는 지정한 어드레스로부터 판독된다. 덮어쓰기 영역은, CMD20의 인수 OWAS에 의해 나타나는 설정값, 또는 CMD18에 의해 판독된 데이터 길이에 의해 지정된다. 지정한 덮어쓰기 영역의 데이터는 보존된다.
전술한 바와 같이, CMD20 "Set Over-Write Area" + CMDxx에 의해 덮어쓰기 영역이 추가되는 경우, 할당 카운트에 대한 상한이 설정되어 있으면, 가장 최근에 할당된 덮어쓰기 영역이 덮어쓰기 영역으로서 유지되고, 오래된 덮어쓰기 영역은 총 할당 카운트가 상한에 의해 제한되도록 할당으로부터 제거될 수 있다.
메모리 장치(11)의 전원이 꺼진 경우, 덮어쓰기 영역의 할당을 유지하고 있어도 되고, 해제해도 된다.
(셋업 시퀀스의 개선:Set Top of Data Area)
전술한 바와 같이, CMD20 "Set Top of Data Area"은, 파일 시스템의 데이터 영역을 카드에 통지하는 명령이다.
호스트 장치(20)는, 파일 시스템의 포맷을 나타내는 데이터 영역의 선두 위치를 카드에 통지한다. 따라서, 카드는, exFAT(확장 FAT)의 비트맵 영역과 FAT 영역을 특정할 수 있다.
SD 표준 파일 시스템에 준거한 exFAT의 경우, 호스트 장치(20)는, CMD20 "Set Top of Data Area"에 후속하는 판독 명령을 이용하여 비트맵을 RAM(24)으로 읽어내어 RAM(24)에 비트맵의 캐시를 형성할 수 있다.
종래에는, 기록 영역은, 기입 명령에 의해 정의된다. 따라서, 기록을 개시하지 않으면 기록 영역의 사전 준비를 행할 수 없었다.
본 실시 형태에서는, 판독 명령의 어드레스에 의해 기록 영역을 지정함으로써, 사전 준비를 가능하게 하고 있다.
전술한 바와 같이, 1개의 영역이 순차적 기입 영역으로서 할당가능하고, 복수의 영역이 덮어쓰기 영역으로서 할당가능하다.
호스트 장치(20)는, 메모리 장치(11)가 영역을 준비하는 것을 허가하는 명령을 발행한다. 메모리 장치(11)는, 명령에 따라서 준비하고 있는 동안 비지를 표시함으로써, 준비가 진행 중인 것을 호스트 장치(20)에 통지한다.
이하, 도 7을 참조하여, 데이터 영역의 선두 위치의 지정 방법에 대해서 구체적으로 설명한다.
도 7은, NAND 플래시 메모리(18)의 메모리 맵을 나타내고 있다. SD 표준 파일 시스템에 준거한 exFAT의 경우, NAND 플래시 메모리(18)의 유저 영역(18a)은, 데이터 영역의 선두 위치보다 이전에 FAT를 포함하는 파일 시스템 영역을 포함하고, 데이터 영역의 최초 4-MB 내에 비트맵 영역을 포함하고 있다.
호스트 장치(20)는, 메모리 장치(11)의 파일 시스템 포맷으로부터 데이터 영역의 선두 어드레스를 찾고, CMD20 "Set Top of Data Area" + CMD18에 의해, 데이터 영역의 선두 어드레스를 지정한다.
메모리 장치(11)는, CMD18에 의해 지정된 어드레스로부터, 파일 시스템 영역에 기록된 디렉토리 정보의 위치와, 데이터 영역의 최초 4-MB 내에 있는 비트맵 정보의 위치를 예측할 수 있다.
호스트 장치(20)는, 디렉토리 영역 및 비트맵 영역에 대해서, 이러한 영역들을 덮어쓰기 영역으로서 지정할 필요가 없고, 이러한 영역들을 보다 간단한 절차의 Set Top of Data Area에 따라 덮어쓰기 영역으로서 지정할 수 있다는 것을 유의한다. 이러한 영역들은 덮어쓰기 영역 할당(Overwrite Area assignment)의 카운트에 포함되지 않는다.
(영역 관리: 영역의 관리 방법)
데이터의 종류와 데이터 길이에 의해, 사용하는 영역이 구별된다. 즉, 파일명 또는 파일 속성의 확장자에 의해, 파일의 데이터 길이를 예측할 수 있다. 예를 들어, 비디오 파일은 긴 데이터로서 다루고, 텍스트 파일은, 재기입을 상정하는 짧은 데이터로서 다룰 수 있다. 파일명 또는 파일 속성의 확장자는, 데이터 길이가 일정하지 않은 경우에서도, 데이터 길이나 덮어 쓸 것인지 여부를 예측하는 수단으로서 사용할 수 있다.
파일 시스템과 연관된 데이터, 예를 들어, FAT, 비트맵, 또는 티렉토리 엔트리는, 짧은 데이터로서 다룰 수 있고, 덮어쓰기 영역에 기록된다.
재기입가능한 짧은 데이터는, 덮어쓰기 영역에 기록되고, 재기입가능한 긴 데이터는, 순차적 기입 영역에 기록된다.
반대로, 재기입을 상정하지 않는 긴 데이터, 또는, 짧은 데이터는, 순차적 기입 영역에 기록된다.
예를 들어, RU = 512 Kbyte 이상의 데이터는, 긴 데이터로서 다루어진다.
순차적 기입 영역의 최소 단위는, 64 Kbyte(페이지 크기에 의해 결정됨)로 설정되고, 64 Kbyte 미만의 데이터는, 짧은 데이터로서 다루어진다.
짧은 데이터의 순차적 기입은, RU 기반으로 한정되지 않는다(데이터 크기는 복수의 RU 크기이고 어드레스는 RU 경계 상에 있음).
데이터가 RU 기반으로 기입되는 경우, Pw 이상의 성능을 갖는다. 데이터가 RU보다 작은 단위로 기입될 수도 있지만, 성능은 Pw보다 낮아진다. "Pw가 낮아진다"는 것은, 메모리 장치가 표시하는 비지 시간이 길어지는 것을 의미한다. 순차적 기입 영역에서의 기입에 대하여, 메모리 장치는, 어드레스가 순차적인지, 기입 데이터가 RU 경계 상에 있는지를 확인하고, Pw의 성능을 생성하는 조건을 만족하고 있는지의 여부에 따라, 비지 시간을 제어한다. 영역이 순차적 기입 영역이 아닌 경우, 성능 Pw에 대한 제약이 없기 때문에 다른 비지 제어가 수행된다. 즉, 메모리 장치는, AU를 액세스하는 명령에 대하여, 그 어드레스가 순차적 기입 영역에 대한 액세스를 표시하는지 여부를 판정하여, 메모리 액세스 제어, 예를 들어, 비지 시간을 변경한다.
이하, 도 8을 참조하여, 영역 관리 방법에 대해서 구체적으로 설명한다.
전술한 바와 같이, CMD20 "Arrange Area"은, 다른 CMD20과는 달리, 단독으로 사용된다. 이 CMD20 "Arrange Area"은, 특정한 시간 내에서 메모리 장치(11)가 영역을 준비하는 것을 허가하는 명령이며, CMD20의 비지를 해제함으로써, 준비의 완료를 나타낸다.
CMD20 "Arrange Area"은, 예를 들어 셋업 시퀀스의 경우, 영역 지정의 마지막에서 발행된다.
도 8에 도시한 바와 같이, 셋업이 완료한 후, CMD20 "Set Over-Write Area" + CMD25, 또는 CMD18을 발행함으로써 임의의 시간에 덮어쓰기 영역을 지정할 수 있다(스텝 S11). 그 후에, CMD20 "Arrange Area"이 발행되어, 영역의 준비가 행하여진다(스텝 S12). 랜덤 기입에 의해 캐시된 데이터를 덮어쓰기 영역으로 정리하기 위해서 카드는 처리 시간이 필요하다. CMD20 "Arrange Area"에 의해 처리 시간이 보장되고, 설계가 용이해진다. 이 경우, 예를 들어, 호스트 장치에서 데이터 기록이 진행중일 수 있기 때문에, 비지의 허용 시간은 250ms으로 억제되고 있다.
전술한 바와 같이, CMD20과 기입 명령을 조합한 경우, 기입 데이터를 기입하는 것뿐만 아니라, 그 데이터를 포함하는 영역이 순차적 기입 영역, 또는, 덮어쓰기 영역으로서 할당하는 것이 수행된다는 것을 유의한다. 또한, CMD20의 각각의 기능에 대해 또는 명령이 발행되는 각각의 상황에 대해 비지 시간의 최대값이 설정되어, 호스트 장치가 기입 성능 예산을 추정할 수 있도록 하고 있다. CMD20을 사용하여 덮어쓰기 영역 또는 순차적 기입 영역을 지정하고, 복수회 기입을 행한 경우, 카드는, 각각의 기입의 평균 비지 시간이 지정된 영역 이외의 영역에 복수회 기입했을 때의 평균 비지 시간보다 짧도록 제어가능하다. 즉, CMD20을 사용한 기입의 평균 비지 시간은, CMD20을 사용하지 않는 기입의 평균 비지 시간보다 짧도록 제어가능하다.
(셋업 시퀀스)
도 9a 및 도 9b는, CMD20을 사용한 셋업 시퀀스의 일례를 도시한다. 도 10은, 도 9b에 나타내는 셋업 시퀀스를 명령 시퀀스로서 표현한 예를 도시한다. 이 예에서는, 1개의 순차적 기입 영역과, 3개의 덮어쓰기 영역이 지정된다.
보다 구체적으로, 우선, 메모리 장치(카드)가 초기화된다(스텝 S21). 그 후에, CMD20 "Set Top of Data Area" + CMD18에 의해, 데이터 영역의 선두 어드레스가 지정되고, 카드는 DIR 영역과 비트맵 영역을 덮어쓰기 영역으로서 할당한다(스텝 S22). 다음으로, CMD20 "Set Sequential-Write Area" + CMD17에 의해, 순차적 기입 영역이 지정된다(스텝 S23). 다음으로, CMD20 "Set Over-Write Area" + CMD18, CMD20 "Set Over-Write Area" + CMD25, 및 CMD20 "Set Over-Write Area" + CMD18에 의해, 덮어쓰기 영역이 지정된다(스텝들 S24, S25, S26). 마지막으로, CMD20 "Arrange Area"가 발행되고, CMD20 "Arrange Area"의 비지 표시 동안에, 메모리 장치(11) 내의 영역이 준비된다(스텝 S27).
전술한 동작에 의해, 1개의 순차적 기입 영역과, 3개의 덮어쓰기 영역이 할당된다.
CMD20과 기입 명령 또는 판독 명령의 조합은, 도 9b 및 도 10에 도시된 것들로 한정되는 것은 아니다. CMD20과 기입 명령 또는 판독 명령의 조합에 의해, 도 9a에 도시한 바와 같이, AU의 선두 또는 도중으로부터 필요한 영역을 설정하는 것이 가능하다.
(파일 작성의 예)
도 11은, 루트 디렉토리 밑에 서브디렉토리 DIR1이 있고, 서브디렉토리 DIR1에 파일 X1, X2, 및 X3이 이미 만들어져 있는 상태를 상정한다. 이 상태에서, 카드를 초기화하고, 루트 디렉토리 밑에 서브디렉토리 DIR2를 새롭게 작성하고, DIR1에 File 1, File 2를 작성하고, DIR2에 File 3을 작성하는 경우를 설명한다.
도 12는, 도 11에 도시하는 본 실시 형태에 따른 파일 작성의 예를 구체적으로 도시하는 도면이다. 도 13은, 도 12에 도시된 파일 작성을 명령 시퀀스로서 나타내고 있다. 도 12와 도 13에 걸쳐서, 동일한 참조 부호는 동일한 부분을 명기한다. 도 12에서, FAT, 비트맵과 루트 디렉토리는 예시되지 않고 있다는 것에 유의한다.
도 12 및 도 13은, 2개의 순차적 기입 영역 SeqW-AU1, SeqW-AU2와, 2개의 덮어쓰기 영역으로서 기능하는 DIR Entry 1, DIR Entry 2를 지정하고, 이러한 영역들에 데이터를 기입하는 예를 도시한다.
우선, 초기화 시퀀스가 실행되어, 메모리 장치(11)가 초기화된다(스텝 S41).
다음으로, 호스트 장치(20)는, 파일 시스템의 포맷을 분석하고, CMD20 "Set Top of Data Area" + CMD18을 발행하고, 포맷에 의해 지정된 데이터 영역의 선두 어드레스를 지정한다(스텝 S42). SD 표준 파일 시스템에 준거한 exFAT의 경우, CMD18에 의해 판독되는 데이터는 비트맵 영역을 포함할 수 있다. 호스트 장치(20)는, 판독된 비트맵을 시스템 메모리(RAM(24))에 캐시할 수 있다.
호스트 장치(20)는, CMD20 "Set Sequential-Write AU" + CMD18을 발행한다. 메모리 장치(11)는, 이 명령에 기초하여, NAND 플래시 메모리(18) 내에 순차적 기입 영역 SeqW-AU1을 할당한다(스텝 S43). CMD18에 의해 지정한 어드레스 위치로부터 AU의 마지막까지 데이터를 순차적으로 기입할 수 있다.
그 후에, 호스트 장치(20)는, 파일 시스템의 포맷을 분석하고, CMD20 "Set Over-Write Area" + CMD25를 발행한다(스텝 S44). 따라서, 이미 작성된 DIR Entry 1이, CMD18에 의해, 덮어쓰기 영역으로서 할당된다.
그리고 나서, 호스트 장치(20)는, CMD20 "Arrange Area"을 발행하여, 메모리 장치(11)가 영역을 준비하도록 지시한다(스텝 S45). 메모리 장치(11)는, 예를 들어, 영역 준비의 시간으로서 1초를 사용하도록 허가되고 있다.
그 후에, File 1의 파일 엔트리 FE1이 DIR Entry 1 내에 작성되어, File 1의 부분 데이터 File 1a가, 순차적 기입 영역 SeqW-AU1에 기입된다(스텝들 S46, S47). 이 예에서, 모든 파일 데이터는, RU 기반으로 RU 경계에 매칭시켜 기입된다.
다음으로, File 2의 파일 엔트리 FE2가 DIR Entry 1 내에 작성되어, File 2의 부분 데이터 File 2a가, 순차적 기입 영역 SeqW-AU1에 기입된다(스텝들 S48, S49).
다음으로, 호스트 장치(20)는, 파일 시스템의 포맷을 분석하고, CMD20 "Set Over-Write Area" + CMD25 및 CMD20 "Arrange Area"을 순차적으로 발행한다(스텝들 S50, S51). 따라서, DIR Entry 2가, CMD25에 의해, 덮어쓰기 영역으로서 새롭게 할당된다.
그 후에, File 3의 파일 엔트리 FE3이, DIR Entry 2 내에 작성되고(스텝 S52), File 3의 부분 데이터 File 3a가, 순차적 기입 영역 SeqW-AU1 내에 기입된다(스텝 S53).
다음으로, File 1의 후속하는 데이터 File 1b가 순차적 기입 영역 SeqW-AU1 내에 기입된다(스텝 S54).
File 3의 후속하는 데이터 File 3b가 순차적 기입 영역 SeqW-AU1 내에 기입된다(스텝 S55).
File 1의 후속하는 데이터 File 1c가 순차적 기입 영역 SeqW-AU1 내에 기입된다(스텝 S56).
File 2의 후속하는 데이터 File 2b가 순차적 기입 영역 SeqW-AU1 내에 기입된다(스텝 S57).
순차적 기입 영역 SeqW-AU1이 그의 용량까지 다 채워지면, 이 영역 SeqW-AU1은 순차적 영역으로부터 제외된다.
그 후에, 호스트 장치(20)는, CMD20 "Set Sequential-Write AU"을 발행한다. 메모리 장치(11)는, 이 명령에 기초하여, NAND 플래시 메모리(18) 내에 순차적 기입 영역 SeqW-AU2를 새롭게 할당한다(스텝 S58).
다음으로, 이 순차적 기입 영역 SeqW-AU2 내에, File 1의 후속하는 데이터 File 1d가 기입된다(스텝 S59). 스텝 S59의 최초의 CMD25는, 영역 SeqW-AU2의 선두 어드레스를 나타내고, 거기에서 데이터 File 1d가 기입된다. 이러한 논리적 어드레스(외부로부터 액세스되는 어드레스)가 순차적 기입 영역 SeqW-AU2에 할당된다.
전술한 실시 형태에 따르면, CMD20의 인수들 "Set Sequential-Write AU", "Set Over-Write Area", "Set Top of Data Area", 및 "Arrange Area"을 사용하여, 순차적 기입 영역 및 덮어쓰기 영역을 지정할 수 있고, 이들 영역에 데이터를 기입할 수 있다.
또한, 도중까지 기입한 AU를, 초기화 시에 순차적 기입 영역으로서 할당할 수 있다. 이로 인해, AU 내의 비어있는 영역을 사용할 수 있고, AU의 이용 효율을 향상시키는 것이 가능하다.
(파일 작성의 다른 예)
도 14는, 도 3에 도시된 파일 작성의 예를 명령 시퀀스로서 나타내고 있다.
도 14를 참조하면, 스텝 S61, S62, S63은, 도 13의 스텝 S41, S42, 및 S43과 마찬가지이다. 메모리 장치(11)가 초기화되고, 포맷에 의해 지정된 데이터 영역의 선두 어드레스가 지정되고, 순차적 기입 영역 SeqW-AU가 지정된다.
다음으로, 호스트 장치(20)가 CMD20 "Set Over-Write Area" + CMD18, CMD20 "Set Over-Write Area" + CMD18, 및 CMD20 "Arrange Area"을 발행하고, 이미 작성된 DIR Entry 1과, DIR Entry 2 각각이 덮어쓰기 영역으로서 지정된다(스텝들 S64, S65, S66).
그 후에, DIR Entry 1에, File 1의 파일 엔트리 FE1이 기입되고(스텝 S67), 순차적 기입 영역 SeqW-AU에, File 1의 부분 데이터 File 1a가 기입된다(스텝 S68).
그리고 나서, DIR Entry 1에, 파일 엔트리 FE2, FE3이 기입되고(스텝들 S69, S70), 순차적 기입 영역 SeqW-AU에, File 2, 및 File 3이 기입된다(스텝 S70). File2, File3의 기입시에 성능 Pw는 불필요하기 때문에, RU보다 작은 크기로 데이터가 기입된다.
다음으로, 후속하는 데이터를, 적어도 성능 Pw로 기입하기 위해서, File 3에 후속하는 영역 내에 RU 경계까지 패딩으로서 기능하는 더미 데이터가 기입된다(스텝 S73). 그러나, 패딩은 반드시 항상 필요한 처리인 것은 아니다. 메모리 장치(11)는 2개의 메모리 기입 명령의 어드레스와 데이터 길이를 분석함으로써, 자동으로 패딩을 수행하도록 구성될 수 있다. 메모리 장치(11)가, File 4의 기입 어드레스로부터 자동으로 순차적 기입 처리를 개시하는 것도 가능하다.
그리고 나서, DIR Entry 2에 파일 엔트리 FE4가 기입되고(스텝 S74), File 4가 순차적 기입 영역 SeqW-AU에 기입된다(스텝 S75).
다음으로, File 1의 후속하는 데이터 File 1b가, 순차적 기입 영역 SeqW-AU에 기입된다(스텝 S76). File 1의 데이터를 파일 시스템상에서 결정하기 위해서, FAT Update가 실행된다(스텝 S77). FAT Update에서, 최초 기입은 FAT를 갱신하는 것을 표시하고, 2번째의 기입은 비트맵을 갱신하는 것을 표시하고, 3번째의 기입은, 파일 엔트리 FE1을 갱신하는 것을 표시하고 있다. 도 14를 참조하면, 파일 엔트리 FE1을 포함하는 512-byte의 데이터를 기입하는 경우, 파일 엔트리 FE1이 갱신된다.
(비디오 그레이드(Video Grade)의 성능 정보)
도 15는, 새롭게 정의되는 비디오 그레이드의 성능 정보(VG4, VG6, VG10, VG30)와, 비디오 그레이드의 AU의 크기 정보를 나타내고 있다.
비디오 그레이드의 AU 크기는, 4 MB × 2n × 3m(n=0, 1, 2,..., 6; m=0, 1, 2)의 조합에 의해 표현된다. 호스트 장치가 용이하게 영역을 관리하게 하도록, 4 MB가 기본 단위로서 사용되고, AU 크기는 그의 배수로 지정된다. NAND 플래시 메모리(18)는, 1개의 메모리 셀에 2-bit의 데이터 또는 1개의 메모리 셀에 3-bit의 데이터를 저장한다. 2차원 구조를 갖는 메모리 셀 뿐만 아니라, 3차원 구조를 갖은 메모리 셀도 있다(멱승 n, m). 이로 인해, 전술한 수식에 의해, 필요한 AU 크기를 커버할 수 있다.
(전원 유지의 경우에는, 상태도 유지)
본 실시 형태에서, 장치가 파워 다운 모드(power down mode), 하이버네이트 모드(Hibernate Mode)에서는, 설정한 순차적 기입 영역 또는 덮어쓰기 영역의 정보가 유지된다.
이로 인해, 파워 다운 모드, 하이버네이트 모드로부터 복귀한 경우, 파워 다운 모드 또는 하이버네이트 모드의 직전에 지정하고 있었던 영역 정보는 유지되고, 그 영역을 다시 사용하는 것이 가능하다.
(기존의 스피드 클래스 명령의 변환)
본 실시 형태는, CMD20을 확장함으로써, "Set Sequential-Write AU", "Set Over-Write Area", "Set Top of Data Area" 및 "Arrange Area"의 새로운 기능을 정의하고 있다. 새로운 기능은, 종래의 기능을 포함하기 때문에, 기존의 스피드 클래스 명령을 수신한 메모리 장치는, 그의 기능을 새로운 기능으로 변환할 수 있다.
즉, CMD20의 새로운 기능들을 구현하는 메모리 장치(11)는, 기존의 명령 "Start Recording" "Update DIR" "Update CI"에 대한 변환 프로그램을 구현하는 것으로, 기존의 스피드 클래스 명령을 수신할 경우, 호환성을 유지한 처리가 가능하게 된다.
예를 들어, 메모리 장치(11)가 제어 명령 "Start Recording"을 수신하는 경우, "Set Sequential-Write AU"와 동일하게 관리된다. 그리고 나서, 다른 순차적 기입 영역이 후속하는 시퀀스에 의해 할당된다. 메모리 장치(11)는, 기입 명령의 기입이 RU 기반으로 수행되며 기입 경계에 매칭하고 있는 데이터 기입이며, 순차적 기입 영역의 마지막까지 데이터가 기입된 것을 확인한다. 다음 기입 명령이 다른 AU의 선두로부터 RU 기반으로 수행되며, 기입 경계에 매칭하는 기입인 것을 표시하면, 새롭게 기입한 유저 영역을 순차적 기입 영역으로서 할당한다.
메모리 장치(11)가, 파일 시스템의 위치를 나타내는 제어 명령 "Update DIR"을 수신하는 경우, 후속하는 기입 명령의 어드레스에 의해, 덮어쓰기 영역을 할당하고, 기입 명령에 의해 기입되는 영역을 포함하는 크기의 영역을 덮어쓰기 영역의 크기로서 할당하고, 그 영역이 이미 덮어쓰기 영역으로서 할당되어 있는 경우, 그 할당을 유지한다.
메모리 장치(11)는, 스트림 데이터의 기록 동안에, CI 데이터의 일부를 기입하기 위한 위치를 나타내는 제어 명령 "Update CI"을 수신하는 경우, 기입 명령에 의해 기입되는 영역의 크기(512 byte)를 포함하는, CI데이터를 기입하도록 예측되는 특정 크기의 영역을 덮어쓰기 영역으로서 할당하고, 그 영역이 이미 덮어쓰기 영역으로서 할당되어 있는 경우, 그 할당을 유지한다.
전술한 변환 프로그램들이 구현되어, 기존의 스피드 클래스 명령을 수신하는 경우, 메모리 장치는 그의 기능을 새로운 기능으로 변환할 수 있다.
특정 실시예들이 설명되었으나, 이러한 실시예들은 오직 예시로서 제시되었으며, 본 발명의 범주를 제한하려는 의도가 아니다. 또한, 본원에서 설명된 신규한 실시예들은 각종의 다른 형식으로 실시될 수 있다; 또한, 본원에 설명된 실시예들의 형식에 있어서 다양한 생략, 대체, 및 변경이 본 발명의 사상으로부터 벗어나지 않고 이루어질 수 있다. 첨부하는 특허청구범위 및 그들의 등가물들은 본 발명의 범주 및 사상 내에 들어오는 그러한 형식들 또는 변경들을 망라하도록 의도된다.
본 발명의 실시예는, 예를 들어, 메모리 카드에 사용된다.

Claims (20)

  1. 메모리 장치로서,
    외부로부터 액세스가능하고 복수의 관리 단위로 분할되는 유저 영역을 포함하는 복수의 물리적 저장 영역을 갖는 비휘발성 반도체 메모리; 및
    상기 비휘발성 반도체 메모리를 제어하도록 구성된 제어부
    를 포함하고,
    상기 제어부는, 순차적 기입 영역을 지정하는 제1 인수를 갖는 제어 명령과, 판독 명령 또는 기입 명령을 수신하고, 상기 판독 명령 또는 상기 기입 명령의 어드레스에 의해 나타내어진 관리 단위를 상기 순차적 기입 영역으로서 할당하고, 상기 유저 영역을 액세스하는 메모리 액세스 명령의 어드레스가, 그의 크기가 상기 관리 단위와 동등한 상기 순차적 기입 영역에서의 액세스를 표시하는지 여부를 판정함으로써 메모리 액세스 제어를 변경하는 메모리 장치.
  2. 제1항에 있어서,
    상기 제어부는, 상기 판독 명령의 어드레스 위치로부터 또는 상기 기입 명령에 의해 기입된 데이터 다음의 위치로부터 상기 관리 단위의 마지막까지의 상기 관리 단위 내의 영역을, 다음 데이터가 기입될 수 있는 영역으로서 설정하고, 상기 판독 명령 또는 상기 기입 명령에 의해 지정된 어드레스 이전의 영역에 저장된 데이터가 존재하는 경우, 그 데이터를 보존하는 메모리 장치.
  3. 제1항에 있어서,
    상기 순차적 기입 영역에 대한 최소 평균 기입 성능을 표시하는 성능 인덱스 및 관리 단위의 크기를 보유하도록 구성된 레지스터를 더 포함하고, 상기 레지스터는 외부로부터 판독될 수 있는 메모리 장치.
  4. 제1항에 있어서,
    관리 단위는 복수의 기록 단위로 분할되고, 상기 순차적 기입 영역에 대한 기입 명령의 어드레스가 덮어쓰기를 야기하지 않는 어드레스이고, 상기 기입 명령의 데이터 길이가 하나 또는 복수의 기록 단위와 동등하고, 데이터 위치가 기록 단위 경계 상에 있는 경우, 상기 메모리 액세스 제어는 평균 기입 성능이 성능 인덱스(Pw)보다 높게 되도록 비지 시간을 제어하고, 조건이 충족되지 않는 경우, 상기 메모리 액세스 제어는 상기 성능 인덱스를 충족하지 않는 비지 시간을 표시할 수 있는 메모리 장치.
  5. 제1항에 있어서,
    상기 제어부는 덮어쓰기 영역을 지정하는 제2 인수를 갖는 제어 명령, 상기 판독 명령 또는 상기 기입 명령을 수신하고, 선두 위치가 상기 판독 명령 또는 상기 기입 명령의 어드레스에 의해 나타내어지는 관리 단위의 일부 또는 전부를 상기 덮어쓰기 영역으로서 할당하고, 상기 유저 영역을 액세스하는 상기 메모리 액세스 명령과 관련하여, 상기 메모리 액세스 명령의 어드레스가 상기 덮어쓰기 영역에의 액세스를 표시하는지 여부를 판정함으로써 상기 메모리 액세스 제어를 변경하는 메모리 장치.
  6. 제5항에 있어서,
    상기 덮어쓰기 영역의 크기는, 상기 제어 명령의 제3 인수, 또는 상기 판독 명령 또는 상기 기입 명령에 의해 액세스되는 데이터 영역의 크기 중 하나에 의해 결정되는 메모리 장치.
  7. 제5항에 있어서,
    상기 제어부는, 지정된 덮어쓰기 영역 또는 순차적 기입 영역에의 기입 시의 최대 비지 시간보다, 미할당 영역에의 기입 시의 최대 비지 시간을 더 길게 설정하고, 상기 지정된 덮어쓰기 영역 또는 순차적 기입 영역에의 기입 시의 평균 비지 시간보다 상기 미할당 영역에의 기입 시의 평균 비지 시간이 더 길게 될 수 있도록 상이한 비지 시간들을 표시하는 상기 메모리 액세스 제어를 수행하는 메모리 장치.
  8. 제7항에 있어서,
    상기 메모리 장치의 전원이 유지되는 경우, 상기 지정된 순차적 기입 영역 및 덮어쓰기 영역의 할당 정보가 보유되는 메모리 장치.
  9. 제8항에 있어서,
    미리결정된 값보다 많지 않은 수의 복수의 덮어쓰기 영역이 할당될 수 있고, 상기 미리결정된 값보다 많은 수의 덮어쓰기 영역이 할당되는 경우, 상기 미리결정된 값과 동등한 수의 가장 최근의 덮어쓰기 영역들이 덮어쓰기 영역들로서 할당되는 메모리 장치.
  10. 제5항에 있어서,
    상기 제어부는, 파일 시스템의 데이터 영역을 지정하는 제4 인수를 갖는 제어 명령과, 어드레스가 상기 파일 시스템의 상기 데이터 영역의 선두 어드레스를 표시하는 판독 명령을 수신하고, 상기 유저 영역을 상기 판독 명령의 어드레스에 기초하여 덮어쓰기 영역으로서 할당하는 메모리 장치.
  11. 제5항에 있어서,
    상기 제어 명령은 먼저 상기 순차적 기입 영역을 지정하는 제5 인수를 갖고,
    상기 제어부는 상기 제5 인수를 갖는 제어 명령을 상기 제1 인수를 갖는 제어 명령으로서 처리하는 메모리 장치.
  12. 제11항에 있어서,
    상기 기입 명령의 기입이, 데이터 길이가 하나 또는 복수의 기록 단위와 동등하고 데이터 위치가 기록 단위 경계 상에 있는 것을 표시하고, 기입처가 상기 할당된 순차적 기입 영역의 마지막까지의 기입을 표시하고, 다음 기입 명령이, 다른 관리 단위의 선두로부터 수행되는 기입이고, 상기 기입 명령의 데이터 길이가 하나 또는 복수의 기록 단위와 동등하고 데이터 위치가 기록 단위 경계 상에 있는 것을 표시하는 경우, 상기 제어부는 새롭게 기입된 유저 영역을 상기 순차적 기입 영역으로서 할당하는 메모리 장치.
  13. 제11항에 있어서,
    파일 시스템의 디렉토리 엔트리의 위치를 표시하는 제어 명령을 수신하는 경우, 상기 제어부는 상기 제어 명령에 후속하는 기입 명령의 어드레스에 의해 덮어쓰기 영역의 선두 위치를 결정하고, 상기 기입 명령에 의해 기입되는 영역을 포함하는 크기의 영역을 상기 덮어쓰기 영역으로서 할당하고, 상기 영역이 이미 상기 덮어쓰기 영역으로서 할당되어 있는 경우, 상기 할당을 유지하는 메모리 장치.
  14. 제11항에 있어서,
    스트림 데이터의 기록 동안에 상기 스트림 데이터 이외의 작은 데이터의 부분을 기입하는 위치를 표시하는 제어 명령을 수신하는 경우, 상기 제어부는 상기 제어 명령에 후속하는 기입 명령의 어드레스에 의해 덮어쓰기 영역의 선두 위치를 결정하고, 상기 기입 명령에 의해 기입되는 영역을 포함하는 크기의 영역을 상기 덮어쓰기 영역으로서 할당하고, 상기 영역이 이미 상기 덮어쓰기 영역으로서 할당되어 있는 경우, 상기 할당을 유지하는 메모리 장치.
  15. 호스트 장치로서,
    메모리 장치를 포맷하는 파일 시스템을 인식하도록 구성된 메모리 관리 소프트웨어를 포함하고,
    상기 소프트웨어는,
    작성될 파일의 데이터 길이 또는 파일명의 확장자에 기초하여, 데이터를 순차적 기입 영역 또는 덮어쓰기 영역에 기입할지를 결정하는 기능;
    제1 명령을 이용하여 유저 영역을 순차적 기입 영역 및 덮어쓰기 영역으로 할당하는 기능 - 상기 유저 영역은 데이터를 기입하기 위한 영역임 - ;
    상기 순차적 기입 영역에 긴 데이터를 기록하는 기능;
    재기입되지 않는 것으로 상정된 짧은 데이터를 상기 순차적 기입 영역에 기록하는 기능;
    재기입되는 것으로 상정되는 짧은 데이터를 상기 덮어쓰기 영역에 기록하는 기능; 및
    상기 파일 시스템에 관련된 짧은 데이터를 상기 덮어쓰기 영역에 기록하는 기능
    을 포함하는 호스트 장치.
  16. 제15항에 있어서,
    상기 제어기는,
    크기가 적어도 512Kbyte 이상인 데이터를 긴 데이터로서 구별하는 기능, 및
    크기가 미리정해진 크기 미만인 데이터를 짧은 데이터로서 구별하는 기능
    을 포함하는 호스트 장치.
  17. 제16항에 있어서,
    상기 미리정해진 크기는 512Kbyte인 호스트 장치.
  18. 제15항에 있어서,
    상기 제1 명령은 제어 명령과 판독 명령의 조합이고, 상기 영역의 위치는 상기 판독 명령의 어드레스에 의해 특정되는 호스트 장치.
  19. 제15항에 있어서,
    상기 제1 명령은 제어 명령과 기입 명령의 조합이고, 상기 영역의 위치는 판독 명령의 어드레스에 의해 특정되는 호스트 장치.
  20. 제15항에 있어서,
    상기 파일명이 비디오 파일을 표시하는 경우, 상기 데이터를 상기 순차적 기입 영역 상에 기록하는 것을 더 포함하는 호스트 장치.
KR1020157010904A 2012-10-30 2013-09-10 메모리 장치 및 호스트 장치 KR101674335B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JPJP-P-2012-238849 2012-10-30
JP2012238849 2012-10-30
JPJP-P-2013-166804 2013-08-09
JP2013166804A JP5976608B2 (ja) 2012-10-30 2013-08-09 メモリデバイス
PCT/JP2013/074959 WO2014069115A1 (en) 2012-10-30 2013-09-10 Memory device and host device

Publications (2)

Publication Number Publication Date
KR20150063125A true KR20150063125A (ko) 2015-06-08
KR101674335B1 KR101674335B1 (ko) 2016-11-08

Family

ID=49474661

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157010904A KR101674335B1 (ko) 2012-10-30 2013-09-10 메모리 장치 및 호스트 장치

Country Status (7)

Country Link
US (5) US9983794B2 (ko)
EP (2) EP3518112B1 (ko)
JP (1) JP5976608B2 (ko)
KR (1) KR101674335B1 (ko)
CN (1) CN104798063B (ko)
TW (1) TWI512463B (ko)
WO (1) WO2014069115A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3021208B1 (en) * 2014-11-14 2019-01-09 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
CN105306282B (zh) * 2015-12-07 2019-09-24 联想(北京)有限公司 设备配置方法和设备配置装置
US10140055B2 (en) * 2015-12-21 2018-11-27 Memory Technologies Llc Ensuring that memory device actions are valid using reference values
JP2018022275A (ja) 2016-08-02 2018-02-08 東芝メモリ株式会社 半導体記憶装置
KR20180032391A (ko) 2016-09-22 2018-03-30 에스케이하이닉스 주식회사 반도체 메모리 장치
CN108008908B (zh) * 2016-10-31 2020-08-07 比亚迪股份有限公司 一种管控sd卡上数据的方法和装置
JP6889566B2 (ja) * 2017-02-13 2021-06-18 キヤノン株式会社 記録装置およびその制御方法
KR102446733B1 (ko) * 2017-11-30 2022-09-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치
TW202314512A (zh) * 2017-12-28 2023-04-01 慧榮科技股份有限公司 快閃記憶體控制器、安全數位卡、使用於快閃記憶體控制器的方法以及存取安全數位卡的主機
US10866746B2 (en) * 2017-12-28 2020-12-15 Silicon Motion Inc. Memory addressing methods and associated controller, memory device and host
JP2019191909A (ja) 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7252821B2 (ja) * 2019-04-17 2023-04-05 キヤノン株式会社 記録装置、記録方法、プログラム、及びメモリカード
US20230409470A1 (en) * 2022-06-15 2023-12-21 Western Digital Technologies, Inc. Scratchpad cache for gaming and iot hosts

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070043924A1 (en) * 2004-06-21 2007-02-22 Takafumi Ito Method for controlling memory card and method for controlling nonvolatile semiconductor memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040264A (ja) * 2004-06-21 2006-02-09 Toshiba Corp メモリカードの制御方法および不揮発性半導体メモリの制御方法
JP4874588B2 (ja) 2004-07-12 2012-02-15 株式会社東芝 記憶デバイスおよびホスト機器
JP2006085380A (ja) * 2004-09-15 2006-03-30 Toshiba Corp ファイルストレージデバイス、プログラム、及び不揮発性半導体メモリの書込方法
US7613874B2 (en) * 2004-10-14 2009-11-03 Lg Electronics, Inc. Recording medium, and a method and apparatus for overwriting data in the same
JP4817836B2 (ja) 2004-12-27 2011-11-16 株式会社東芝 カードおよびホスト機器
US7685389B2 (en) * 2005-10-21 2010-03-23 International Business Machines Corporation Apparatus, system, and method for setting protection states of protected partitions in storage media
KR100866625B1 (ko) * 2007-02-26 2008-11-03 삼성전자주식회사 Mmc 또는 sd 프로토콜을 사용하는 다수의 메모리장치들을 인터페이스하는 방법 및 시스템
JP5175703B2 (ja) * 2008-12-11 2013-04-03 株式会社東芝 メモリデバイス
JP2011175615A (ja) * 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス
JP5404483B2 (ja) 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
JP5066209B2 (ja) * 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
JP5728292B2 (ja) 2011-02-04 2015-06-03 株式会社東芝 メモリデバイス及びホストシステム
KR101856506B1 (ko) * 2011-09-22 2018-05-11 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 쓰기 방법
JP5832963B2 (ja) 2012-06-29 2015-12-16 株式会社東芝 メモリシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070043924A1 (en) * 2004-06-21 2007-02-22 Takafumi Ito Method for controlling memory card and method for controlling nonvolatile semiconductor memory

Also Published As

Publication number Publication date
JP5976608B2 (ja) 2016-08-23
US20190286334A1 (en) 2019-09-19
WO2014069115A1 (en) 2014-05-08
US20180232155A1 (en) 2018-08-16
US11573701B2 (en) 2023-02-07
EP3518112A1 (en) 2019-07-31
EP2915051A1 (en) 2015-09-09
US10353586B2 (en) 2019-07-16
US20230161475A1 (en) 2023-05-25
US9983794B2 (en) 2018-05-29
CN104798063A (zh) 2015-07-22
CN104798063B (zh) 2019-01-11
US20210191621A1 (en) 2021-06-24
US10976930B2 (en) 2021-04-13
US20150234598A1 (en) 2015-08-20
TWI512463B (zh) 2015-12-11
JP2014112351A (ja) 2014-06-19
EP3518112B1 (en) 2021-11-17
KR101674335B1 (ko) 2016-11-08
EP2915051B1 (en) 2019-11-27
TW201416858A (zh) 2014-05-01

Similar Documents

Publication Publication Date Title
KR101674335B1 (ko) 메모리 장치 및 호스트 장치
US10783071B2 (en) Data storage device and operating method thereof, wherein mapping table for valid data of source block that has not been copied to destination block has a higher priority than mapping information collected by reverse scanning from end of the destination block
US7543103B2 (en) Host apparatus
US8032724B1 (en) Demand-driven opportunistic garbage collection in memory components
JP4356782B2 (ja) メモリ装置、メモリ制御方法、およびプログラム
JP4356686B2 (ja) メモリ装置及びメモリ制御方法
RU2642349C1 (ru) Способ для сохранения данных посредством устройства хранения данных и устройство хранения данных
US20110179219A1 (en) Hybrid storage device
JP5481493B2 (ja) アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム
US7822931B2 (en) File storage device, host apparatus, method for formatting nonvolatile semiconductor memory, and method of writing data in nonvolatile semiconductor memory
JP2008242503A (ja) メモリ管理装置及び方法、並びにプログラム
JP4551328B2 (ja) 情報記録媒体におけるデータ領域管理方法、及びデータ領域管理方法を用いた情報処理装置
US11402999B2 (en) Adaptive wear leveling using multiple partitions
CN107015764B (zh) Nand flash的数据处理方法、装置和一种Nand flash
JP2006252137A (ja) 不揮発性記憶装置の最適化方法
JP2020135656A (ja) ファイル管理システム
JP2010257250A (ja) 電子機器、ファイルシステムの記憶領域割当法、および記憶領域割当プログラム
JP2011199377A (ja) 記録装置
JP2016015059A (ja) 記録装置
JP2015232858A (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