JP2014044490A - ホスト装置及びメモリデバイス - Google Patents

ホスト装置及びメモリデバイス Download PDF

Info

Publication number
JP2014044490A
JP2014044490A JP2012185127A JP2012185127A JP2014044490A JP 2014044490 A JP2014044490 A JP 2014044490A JP 2012185127 A JP2012185127 A JP 2012185127A JP 2012185127 A JP2012185127 A JP 2012185127A JP 2014044490 A JP2014044490 A JP 2014044490A
Authority
JP
Japan
Prior art keywords
data
file
file system
area
host device
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2012185127A
Other languages
English (en)
Inventor
Teruhisa Fujimoto
曜久 藤本
Hiroyuki Sakamoto
広幸 坂本
Shinichi Matsukawa
伸一 松川
Jun Sato
順 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012185127A priority Critical patent/JP2014044490A/ja
Priority to US13/782,268 priority patent/US20140059273A1/en
Publication of JP2014044490A publication Critical patent/JP2014044490A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0661Format or protocol conversion 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/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)

Abstract

【課題】動作速度を向上出来るホスト装置及びメモリデバイスを提供する。
【解決手段】実施形態のホスト装置は、アプリケーションソフトウェアと、専用ファイルシステムと、インターフェース回路とを備える。アプリケーションは、専用ファイルシステムに対してメモリデバイスのアクセス要求を発行する。専用ファイルシステムは、メモリデバイスに対するアクセス制御を行う。専用ファイルシステムは、メモリデバイスの論理アドレス空間を、所定の単位領域ごとに管理し、確保したいずれかの未使用の単位領域にデータをシーケンシャルに書き込み、単位領域に対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令で構成され、アプリケーションは、単位領域サイズを認識することなく、アクセス要求を専用ファイルシステムに発行する。
【選択図】図2

Description

本発明の実施形態はホスト装置及びメモリデバイスに関する。
記録メディアとして、NAND型フラッシュメモリを用いたメモリデバイスが広く普及している。
特開2006−178923号公報 国際公開WO2011/093517号
動作速度を向上出来るホスト装置及びメモリデバイスを提供する。
実施形態のホスト装置は、メモリデバイスにアクセスするホスト装置であって、ファイルシステムに対してアプリケーションインタフェース(API)によりメモリデバイスへのアクセス要求を発行するアプリケーションソフトウェアと、アクセス要求に応答して、前記メモリデバイスのメモリ領域をフラッシュメモリに適した方式で管理を行う専用ファイルシステムと、ホスト装置の専用ファイルシステムとメモリデバイス間の通信を可能にするインターフェース回路とを具備する。専用ファイルシステムは、メモリデバイスの論理アドレス空間を、所定の単位領域ごとに管理し、確保したいずれかの未使用の単位領域にデータをシーケンシャルに書き込み、単位領域に対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令で構成され、アプリケーションソフトウェアは、単位領域サイズを認識することなく、アクセス要求を専用ファイルシステムに発行する。
第1実施形態に係るホスト装置およびメモリカードのハードウェア構成を示すブロック図。 第1実施形態に係るホスト装置の機能ブロック図。 第1実施形態に係るメモリカード内のレジスタを示すブロック図。 第1実施形態に係るNAND型フラッシュメモリのブロック図。 第1実施形態に係るホスト装置の認識する記憶領域とメモリカードの記憶領域の概念図。 第1実施形態に係る記憶領域の概念図であり、ホスト装置によるデータ書き込み方法を示す図。 第1実施形態に係るデータ書き込み方法を示すフローチャート。 第1実施形態に係るコマンドの概念図。 第1実施形態に係るコマンドシーケンスを示すタイミングチャート。 第1実施形態に係るコマンドシーケンスを示すタイミングチャート。 第2実施形態に係るホスト装置の機能ブロック図。 第3実施形態に係るメモリ空間の概念図。 第3実施形態に係るFATの概念図。 第3実施形態に係るディレクトリエントリの概念図。 第3実施形態に係るデータ削除方法のフローチャート。 第3実施形態に係るデータ削除方法を示す模式図。 第3実施形態に係るデータ削除方法のフローチャート。 第3実施形態に係るデータ削除方法を示す模式図。 第3実施形態に係るデータ上書き方法のフローチャート。 第3実施形態に係るデータ上書き方法を示す模式図。 第3実施形態に係るデータ上書き方法のフローチャート。 第3実施形態に係るデータ上書き方法を示す模式図。 NAND型フラッシュメモリの閾値分布を示すグラフ。 第4実施形態に係るメモリカードの動作を示すフローチャート。 第4実施形態に係るホスト装置の動作を示すフローチャート。 第6実施形態に係るデータ書き込み方法を示すフローチャート。 第6実施形態に係るデータ書き込み方法を示す模式図。 第6実施形態に係るデータ書き込み方法を示すフローチャート。 第6実施形態に係るデータ書き込み方法を示すフローチャート。 第6実施形態に係るデータ書き込み方法を示す模式図。 第6実施形態に係るデータ書き込み方法を示すフローチャート。 第7実施形態に係るデータ書き込み方法を示すフローチャート。 メモリセルアレイのブロック図。 第1乃至第7実施形態に係る論理アドレス空間とブロックとの対応を示す概念図。 ディレクトリ構造の概念図。 第1乃至第7実施形態に係る論理アドレス空間の概念図。 ディレクトリ構造の概念図。 第1乃至第7実施形態に係る論理アドレス空間の概念図。 第1乃至第7実施形態に係るAUの概念図。
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
1.第1実施形態
第1実施形態に係るホスト装置について説明する。以下では、メモリカードと、このメモリカードにアクセスするホスト装置とを含むメモリシステムを例に挙げて説明する。なお本明細書では、メモリカードがSDメモリカードである場合を例に説明する。
1.1 構成について
まず、ホスト装置及びメモリカードの構成について、図1を用いて説明する。図1は、本実施形態に係るメモリシステムのハードウェア構成を示すブロック図である。
1.1.1 ホスト装置の構成について
まず、図1を参照してホスト装置の構成について説明する。図示するようにホスト装置1は、MPU(micro processing unit)11、SDインターフェース回路12、ROM(read only memory)14、及びRAM(random access memory)13等を備えている。
MPU11は、ホスト装置1全体の動作を司る。ホスト装置1が電源供給を受けた際、ROM14に格納されているファームウェア(制御プログラム(命令))がRAM13上に読み出される。そしてMPU11は、このファームウェア(命令)に従って所定の処理を実行する。またMPU11は、RAM13及びROM14に保持されるプログラム15を実行することにより、種々の機能を実現する。このプログラム15には、種々のアプリケーションソフトウェア、オペレーティングシステム、ファイルシステム等が含まれる。
SDインターフェース回路12は、メモリカード2との間の通信プロトコルを司る。SDインターフェース回路12は、ホスト装置1とメモリカード2とが通信するのに必要な様々な取り決めに従って動作し、後述のメモリカード2のSDインターフェース41と相互に認識可能な各種のコマンドの組を備えている。
図2は、上記MPU11及びSDインターフェース回路12によって実現されるホスト装置1の機能を示す機能ブロック図である。これらの機能の少なくとも一部は、例えばRAM13やROM14内のプログラム15を実行することによって実現される。図示するようにホスト装置1は、アプリケーション50、ファイル制御ユニット51、ファイルシステム52、ホストコントローラドライバ53、ホストコントローラ54、基本API(application program interface)55、57、拡張API56、ホストドライバインターフェース58、及びメモリバスインターフェース59を備える。
アプリケーション50は、MPU11によって実行されるアプリケーションソフトウェアである。そしてアプリケーション50は、ファイルオープン/クローズ、データの書き込み、読み出し、及び消去などの命令をファイル制御ユニット51に発行することにより、メモリカード2へアクセスする。
ファイル制御ユニット51及びファイルシステム52は、一体となって専用ファイルシステムとして機能する。ファイルシステム52は、専用ファイルシステムのファイルシステム本体であり、例えばFAT(file allocation table)ファイルシステムである。ファイルシステム52は、管理対象となる記憶媒体(メモリカード2)に記録されているファイルデータを管理するための仕組みであり、メモリカード2内に管理情報(FAT)を記録し、この管理情報を用いてファイルデータを管理する。ファイル制御ユニット51は、このファイルシステム52に基づいて、メモリカード2のメモリ空間をメモリの物理的境界を示すアロケーションユニット(AU:allocation unit)単位で管理し、またメモリカード2をそのスピードクラス(Speed Class)に基づいて制御する。AU及びスピードクラスについては後述する。
基本API55は、標準的なファイルシステムAPIであり、アプリケーション50とファイル制御ユニット51との間、及びファイル制御ユニット51とファイルシステム52との間で用いられる。拡張API56は、基本API55の機能を拡張したAPIである。拡張API56は、ファイル制御ユニット51によるメモリカード1の制御のために用意され、ファイル制御ユニット51とファイルシステム52との間で用いられる。基本API55及び拡張API56の詳細については、第5実施形態で説明する。
ホストコントローラドライバ53は、ホストドライバインターフェース58によってファイルシステム52と接続される。そして、専用ファイルシステムの命令に従って、ホストコントローラ54を制御する。
ホストコントローラ54は、図1のSDインターフェース回路12のことであり、半導体回路によって実現される。そしてホストコントローラ54は、ホストコントローラドライバ53のプログラムに従って、メモリカード2を制御する。ホストコントローラ54とメモリカード2との間は、メモリバスインターフェース59で接続される。そしてホストコントローラ54は、SDインターフェースで定義されたコマンドを用いて、メモリカード2に対する命令を発行する。
1.1.2 メモリカードの構成について
次に、図1に戻ってメモリカード2の構成について説明する。図示するようにメモリカード2は、NAND型フラッシュメモリ31及びコントローラ32を備える。
NAND型フラッシュメモリ31は、データを不揮発に記憶する。NAND型フラッシュメモリ31は、複数のメモリセルを含むページと呼ばれる単位でデータを書き込み、また読み出す。各ページには、固有の物理アドレスが割り当てられている。更にNAND型フラッシュメモリ31は、複数のページを含むブロックと呼ばれる単位でデータを消去する。なお、ブロック単位で物理アドレスが割り当てられていても良い。
コントローラ32は、ホスト装置1からの要求に応じて、NAND型フラッシュメモリ31に対してデータの書き込み、読み出し、及び消去を命令する。またコントローラ32は、NAND型フラッシュメモリ31によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(またはブロック)が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ(またはブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。
図1に示すようにコントローラ32は、SDインターフェース41、MPU42、RAM44、ROM43、及びNANDインターフェース45を備えている。
SDインターフェース41は、メモリカード2とホスト装置1との間の通信を司る。より具体的には、SDインターフェース41は、ホスト装置1のSDインターフェース12との間で、種々のコマンドやデータの授受を制御する。またSDインターフェース41はレジスタ46を備える。レジスタ46については後述する。
MPU42は、メモリカード2全体の動作を司る。メモリカード2が電源供給を受けた際にROM43に格納されているファームウェア(制御プログラム(命令))がRAM44上に読み出される。そして、MPU42は、このファームウェア(命令)に従って所定の処理を実行する。MPU42は、制御プログラムに従って各種のテーブル(後述)をRAM44上で作成したり、ホスト装置1から受けたコマンドに従ってNAND型フラッシュメモリ31に対する所定の処理を実行したりする。
ROM43は、MPU42により制御される制御プログラムなどを格納する。RAM44は、MPU42の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、ファイルシステム52によってデータに割り当てられた論理アドレスと、当該データを格納しているページの物理アドレスとの変換テーブル(論理アドレス/物理アドレス変換テーブル)が含まれる。NANDインターフェース45は、コントローラ32とNAND型フラッシュメモリ31との間のインターフェース処理を行う。
図3は、SDインターフェース内のレジスタ46の概念図である。図示するようにレジスタ46は、カードステータスレジスタ、CID、RCA、DSR、CSD、SCR、OCRの各種レジスタを有する。これらのレジスタは、エラー情報、メモリカード2の個体番号、相対カードアドレス、メモリカード2のバス駆動力、メモリカード2の特性パラメータ値、データ配置、メモリカード2の動作範囲電圧に制限のある場合の動作電圧等を格納している。
またレジスタ46(例えばCSD)は、メモリカード2のスピードクラス、データのコピーに要する時間、及びAUサイズ等を格納している。スピードクラスは、メモリカード2が保証する最低の書き込み速度によって規定されている。また、スピードクラスによって最高の書き込み速度が定められている。従ってホスト機器1は、レジスタ46からこれらの情報を読み出すことで、メモリカード2のスピードクラス及びAUサイズを知ることが出来る。なお、スピードクラスの詳細については、参照によって本明細書に組み込まれる特開2006−178923号公報において「性能クラス」として説明されている。
1.2 メモリシステムのメモリ空間について
次に、上記構成のメモリシステムのメモリ空間について説明する。図4は、NAND型フラッシュメモリ31のメモリ領域の概念図である。
図示するようにNAND型フラッシュメモリ31は、メモリセルアレイ48とページバッファ49とを備える。メモリセルアレイ48は、複数のブロックBLKを含んでいる。各ブロックBLKは複数のページPGを含み、各ページPGは複数のメモリセルトランジスタを含む。各ページPGのサイズは例えば2112バイトであり、各ブロックBLKは例えば128ページを含む。データの消去はブロックBLK単位で行われる。ページバッファ49は、NAND型フラッシュメモリ31へのデータ及びNAND型フラッシュメモリ31からのデータを一時的に保持する。ここに上げた数値はひとつの例であり、NAND型フラッシュメモリの種類によって数値は異なる。
このメモリ空間は、保存されるデータの種類に応じて、例えばシステムデータ領域、機密データ領域、保護データ領域、及びユーザデータ領域等を含んでいる。システムデータ領域は、コントローラ32の動作に必要なデータを保持する。機密データ領域は、暗号化に用いる鍵情報や認証時に使用する機密データを保持し、ホスト装置1はアクセスできない。保護データ領域は、重要なデータやセキュアなデータを保持する。ユーザデータ領域は、ホスト装置1が自由にアクセスおよび使用することが可能で、例えばAVコンテンツファイルや画像データ等のユーザデータを保持する。
図5は、ホスト装置1から見たメモリ空間と、メモリカード2の物理的なメモリ領域の様子を示す概念図である。前述の通り、メモリカード2のメモリ領域は、複数の物理的なブロックBLKを含み、各ブロックBLKは複数のページを含む。
ホスト装置1は、スピードクラスを用いる場合、アロケーションユニットAUとレコーディングユニット(RU:recording unit)の2つの単位でメモリ空間を管理する。RUは、ホスト装置1の発行する1回のマルチブロック書き込みコマンドでデータを書き込む最小単位に相当する。つまり、ホスト装置1はひとつ、または複数のRU単位でデータを書き込むことが出来る。するとコントローラ32は、この書き込みデータを適当なページに書き込む。RUのサイズは、例えばページサイズよりも大きく、ページサイズの整数倍である。従ってメモリカード2は、RUサイズの書き込みデータを、物理アドレスが連続する複数のページに書き込む。
AUは、連続する所定数のRUの集合である。ホスト装置1は、メモリカード2のメモリ空間をAU単位で管理する。そしてホスト装置1はデータを書き込む際、AU単位で領域を確保し、またAU単位でメモリカード2の空き容量を計算する。この動作に関しては下記に詳細に説明する。AUはまた、上記ユーザデータ領域における物理的な境界であり、例えば物理ブロックBLKのサイズの整数倍のサイズを有する。AUを指し示す論理アドレスと、物理ブロックを指し示す物理アドレスは、テーブルによって変換されるため、その対応関係は任意であり、制限されない。
従ってRUは、連続する複数のページを意味し、AUは、連続する複数のブロックを意味する。なお、ホスト装置1においてAUのサイズを認識しているのは専用ファイルシステムであり、アプリケーション50は認識していない。つまりアプリケーション50は、AUに基づくことなくデータの書き込み要求を専用ファイルシステムに発行し、メモリ空間をAU単位で管理する専用ファイルシステムは、この書き込み要求に従って適切にメモリカード2を制御する。
1.3 データの書き込み方法について
次に、ホスト装置1によるメモリカード2へのデータの書き込み方法について説明する。ホスト装置1から見たメモリ空間は、さらにファイルシステムでフォーマットされ、ファイルシステムの管理単位であるクラスタ単位に管理される。クラスタの大きさは、ファイルシステムの種類やメモリカード容量により異なる。前記RUのサイズは、例えばクラスタサイズよりも大きく、クラスタサイズの整数倍である。
1.3.1 書き込み方法の概念について
まず、本実施形態に係る書き込み方法の大まかな概念につき図6を用いて説明する。図6はAU-basedメモリマップと、使用中のAU及び空きAUの様子を示す概念図である。図示するように、各AUは複数のクラスタの集合である。また図6では、5つのクラスタにそれぞれデータDAT1〜DAT5を書き込む場合を例に、2種類のアルゴリズムによる書き方の違いを示している。
図6右の例は、本提案の専用ファイルシステムが採用するアルゴリズムで、本実施形態に係るホスト装置1はデータを書き込む際、図6のFree AU Write Algorithmに示すように、いずれかの空きAU(全てのクラスタが未使用であるAU)を選択して、このAUにデータを書き込む。そのため、必然的にデータDAT1〜DAT5はAU内の先頭アドレスからシーケンシャルに書き込まれる(シーケンシャルライト)。
これに対して図6左の例は、従来ファイルシステムが採用しているアルゴリズムで、図中のFragmented AU Write Algorithmは、空きAUだけでなく、一部のクラスタにデータが書き込み済みであるが、残りのクラスタが未使用であるAU(フラグメンテーション領域)をも選択する方法である。図6では、フラグメンテーション領域にデータDAT1〜DAT5が書き込まれる場合について示している。本方法であるとAUを有効利用できるが、データDAT1〜DAT5の書き込みだけでなく、書き込み済みデータのコピー動作も必要となり、NAND型フラッシュメモリに最適な書き込み方法とは言えない。これは、NAND型フラッシュメモリではデータの上書きが出来ないからである。ホスト装置1は、このようなFragmented AU Write Algorithmを用いることなく、Free AU Write Algorithmに従ってデータを書き込む。
1.3.2 書き込み方法の詳細について
次に、本実施形態に係る書き込み方法の詳細について、図7を用いて説明する。図7は、データの書き込み時におけるアプリケーション50、専用ファイルシステム、及びメモリカード2の動作を示すフローチャートである。
図示するように、いずれかのタイミングにおいて専用ファイルシステムは、メモリカード2からAUサイズ及びスピードクラス情報を読み出す。これは前述の通り、メモリカード2のレジスタ46から読み出すことが出来る。これにより専用ファイルシステムは、メモリカード2のAUサイズ及びスピードクラスを把握する。
アプリケーション50からのディレクトリ作成要求に応答して専用ファイルシステムは、ディレクトリエントリ作成用の空きAUを確保する(例えば図6のAU1)。専用ファイルシステムはこのAUを、ディレクトリエントリの作成用に用いる。後で複数のディレクトリが作成された場合も、各ディレクトリのディレクトリエントリをこの同じAUに割り当てていく。こうすることで、メモリカード2は、ディレクトリエントリに対するランダムアクセスをAU内で効率的に処理できるようになる。AUに空きがなくなった場合は、専用ファイルシステムは、別なAUをディレクトリエントリ用に確保する。
アプリケーション50からのファイルオープン要求に応答して専用ファイルシステムは、確保したディレクトリエントリの作成用AUにディレクトリエントリを作成する。SDインターフェース仕様で定義されたCMD20 Create DIRコマンド(図8を用いて後述する)により、ディレクトリエントリのクラスタ位置を指定する。引き続き専用ファイルシステムは、CMD20 Update DIR コマンドを用いて確保したディレクトリエントリ領域にファイルエントリデータをシーケンシャルに書き込む領域を指定する。これにより、メモリカード2は効率的にファイルエントリの書き込み管理を行うことができる。
そしてアプリケーション50は、専用ファイルシステムに対して、データの書き込み要求を発行する。書き込みデータは、図1のRAM13上に保存されている。この際アプリケーション50は、RAM13上のデータの場所と大きさを専用ファイルシステムに伝える。前述の通りアプリケーション50は、AUサイズ及びスピードクラスの情報を把握している必要は無い。MPU11は通常、ページ管理機能を持っているため、シーケンシャルに読み出せるように配置可能である。専用ファイルシステムは、データ書き込み用の空きAUを確保し、データをこのAUにシーケンシャルに書き込む。
アプリケーション50は、データの書き込みが完了すると、ファイルクローズ要求を発行する。専用ファイルシステムは、FATテーブルとファイルエントリを更新して、記録したデータを確定する。
1.3.3 CMD20とコマンドシーケンスについて
次に、上記コマンドCMD20と、データを書き込む際のコマンドシーケンスについて説明する。図8は、CMD20の構成を示す概念図である。
図示するようにCMD20は、少なくともインデックスフィールド、動作指定フィールドSCC、ストリーム番号フィールドSN、及びCRC(cyclic redundancy check)フィールドを含んでいる。なお、インデックスフィールドの前の“S”はスタートビットであり常時“0”である。また“T”はトランスミッタビットであり、“1”はホスト装置からのコマンドであり“0”はメモリカードからのレスポンスであることを示す。
インデックスフィールドは、コマンドがCMD20であることを特定するために、10進の20を16進数で表現した14h(6-bit)のビット列を有する。動作指定フィールドSCCは、CMD20が要求する動作の種類を特定するビット列を有する。動作指定フィールドSCC内の引数に応じて、CMD20は、書き込み(記録)開始(図8のStart Recording)、DIR(directory entry)作成(図8のCreate DIR)、DIR更新(File Entryの作成、図8のUpdate DIR)、新AU書き込み(図8のSet New AU)、書き込み(記録)終了(図8のEnd Recording)、CI更新(図8のUpdate CI)のいずれかを命令するコマンドとして振舞う。ストリーム番号フィールドSNは、CMD20が担う命令がストリーム1〜4のいずれに対するのかを特定する引数を含んでいる。各命令の意味は後述する。CRCフィールドは、CRC符号を有する。シングルストーム規格の場合は、SCC内の新AU書き込み、書き込み(記録)終了、ストリーム番号フィールドSNは非サポートである。ストリーム番号フィールドSNが“0000b”の場合は、シングルストリームとして動作する。
図9は、CMD20とその後にホスト装置1とメモリカード2との間で授受される信号を例示している。図示するように、SDインターフェース12、41において、少なくともコマンドライン(CMD)およびデータライン(DAT[0])が定義されている。ホスト装置1がCMD20をコマンドライン上で送ると、メモリカード2はコマンドライン上でレスポンスを送る。CMD20を認識しないメモリカードでこのCMD20が受け取られた場合、このメモリカードはレスポンスを送出しない。メモリカード2はレスポンスの送出とともに、データライン上でビジー信号をホスト装置1に送る。ビジー状態がタイムアウトと判断されるまでに経過する時間tbusy(max)は、CMD20の機能に応じて予め定められている(図8参照)。
ビジー状態の解除後、ホスト装置1は、コマンドライン上で書き込みコマンド(CMD24またはCMD25)をメモリカード2に送る。このようにホスト装置1は、CMD20を発行した後に、原則、書き込みコマンドを発行する。これにより、CMD20のSCCフィールドによって指定した処理が、それに続く書き込みコマンドの引数で指定されるメモリアドレスに対して処理が行われる。例えばDIR更新コマンドにより、それに続くライトコマンドは、ファイルエントリの書き込みであると分かる。メモリカード2は、書き込みコマンドに対するレスポンスをコマンドライン上でホスト装置1に送る。この後、正常なレスポンスを受信するとホスト装置1は、データラインを用いて書き込みデータをメモリカード2に送る。
次に、ホスト装置1によるメモリカード2へのデータの書き込みの具体例について、図10を用いて説明する。図10は、ホスト装置1からメモリカード1に発行されるコマンドを時系列に示すタイムチャートである。
前述の通り専用ファイルシステムは、スピードクラス書き込みの開始時に消去済みのAUを選択して、このAUにデータをシーケンシャルに書き込む。
以下の説明において、フィールドSCCで指定されるCMD20の機能を、この機能を持つコマンド名として引用する。すなわち、書き込み開始、DIR作成、DIR更新、新AU書き込み、書き込み終了、CI更新を命令するCMD20を、それぞれ書き込み開始コマンド、DIR作成コマンド、DIR更新コマンド、新AU書き込みコマンド、書き込み終了コマンド、CI更新コマンドと称する。また図10は、シングルストリームの例として、すべてのCMD20のフィールドSNは“0000b”に設定されていると想定する。
ホスト装置1において、アプリケーション50からディレクトリ作成要求を受信すると専用ファイルシステムは、DIR作成コマンド(Create DIR)を発行し、ディレクトリエントリの作成用に確保したAU(例えば図6のAU1)の空きクラスタに、新たにディレクトリエントリを割り当てる。このDIR作成コマンドは、フィールドSSCが“0101b”である。このDIR作成コマンド(Create DIR)により、メモリカード2は、ディレクトリエントリ領域の初期化(データをすべて0にする)を行う。この機能の詳細は後述する。続いて専用ファイルシステムは、親ディレクトリ(“..”)とカレントディレクトリを示す(“.”)ファイルエントリを書き込むために、シングルブロックライトコマンド(CMD24またはCMD25)を発行する(Write DIR)。すでにディレクトリエントリが作成されている場合は、DIR作成コマンドとWrite DIRは省略される。
次にアプリケーション50からファイルオープン要求を受信すると、専用ファイルシステムは、DIR更新コマンド(Update DIR)をメモリカード2に送る。続いてディレクトエントリの中の特定の512バイト領域の更新を行う書き込みコマンド(CMD24またはCMD25)を発行し、ファイルエントリの書き込みデータ(Write FILE)を送信する。これには、作成するファイルのファイル名、属性、日付などの情報を含む。メモリカード2は、本コマンドのメモリアドレスが示す512バイトのディレクトリエントリに対して複数回の更新が行われること想定する。これでファイルオープン要求に対する処理は完了する。
続いて専用ファイルシステムは、アプリケーション50からデータライト要求を受信する。データはRAM11に格納されていて、その場所と大きさが専用ファイルシステムに伝えられる。次に専用ファイルシステムは、ストリームデータを書き込むため、例えば、データ書き込み用の空きAU(例えば図6のAU2)を確保し、書き込み開始コマンド(Start Rec)をメモリカード2に送信する。書き込み開始コマンドは、フィールドSCCが“0000b”であるCMD20である。引き続き、専用ファイルシステムは書き込みコマンド(Write RU)を発行する。この書き込みコマンドはCMD25である。また、このコマンドは書き込み開始コマンド直後に位置するので、メモリカード2は、当該コマンドが、実データ(ストリームデータ)を書き込むためのデータ書き込みコマンドであることを認識する。この書き込みコマンドの引数には、確保されたAU2の先頭論理アドレスを含む。書き込みコマンドに続いてストリームデータがホスト装置1からメモリカード2に送信される。そしてこのストリームデータは、AU2にシーケンシャルに書き込まれる。すなわちメモリカード2は、空きAU2の最低位アドレスから高位アドレスに向かって、受信したデータをRU単位に順次書き込む。AU2がいっぱいになったら、次の空き領域(例えばAU3)を取得し書き込みを続ける。最後まで書き込んだAUは、順次論理アドレス/物理アドレス変換テーブルが更新される。
なお、シングルストリーム記録においては、データが順次メモリカードに送信され、当該データの書き込みが中断されることなく継続している場合、書き込み開始コマンドは(Start Rec)、一連の書き込みデータの最初に発行されるのみでも良い(図10では、書き込みコマンドが繰り返し発行される例を示している)。
全てのデータがメモリカード2に書き込まれると、アプリケーション50からのデータライト要求の処理は完了する。
続いて専用ファイルシステムは、アプリケーション50からファイルクローズ要求を受信する。この要求に応答して専用ファイルシステムは、書き込んだデータに対応するFATのデータチェーンを作成し、未使用から使用済み領域に更新する。また、ファイルエントリのデータサイズや更新時間などを更新する。これによりファイルクローズ要求の処理が完了する。
続いて別なファイルを同じディレクトリに書き込む場合、Update DIRで指定した領域に新たなファイルエントリを作成することができる。またデータ書き込み用に確保したAUがまだ空いていれば、前ファイルデータに続いて別なファイルデータを追記することができる。この場合、Start Recコマンドは発行しない。この様に複数のファイルを作成した場合でも、データAUはシーケンシャルライトが継続でき、無駄な領域が発生しない特徴がある。Update DIRで指定した領域に空きがなくなった場合は、次の512byte領域に対して再度Update DIRを発行し、新たなファイルエントリを作成する。
1.4 メモリカード2の空き容量計算方法について
次に、本実施形態に係るホスト装置1によるメモリカード2の空き容量計算方法について説明する。
上記のように、本実施形態に係るホスト装置1は、AU単位でメモリカード1を管理する。従って、FATやビットマップ情報から空き容量を計算することが困難であり、アプリケーション50は、基本API55によってメモリカード2の空き容量を取得することが困難な場合がある。そこでアプリケーション50は、拡張API56を用いてメモリカード2の空き容量を取得する。
そして専用ファイルシステムは、未使用のAUを検索して、その数に基づいて空き領域を算出して、アプリケーション50に通知する。より具体的には、AU全体に渡りFATが空きクラスタでマークされているAUを「空きAU」として(有効データを保持するクラスタ、不良クラスタマークのあるクラスタ、及び最終クラスタマークのあるクラスタが含まれるAUは除外される)、メモリカード2全体の空きAU数を算出して、その合計をメモリカード2の残り容量とする。データを書き込みが有効なAUで(追記が有効なAU)、まだ空きがあれば残り領域に加算しても良い。
クラスタが有効データを保持しているか、不良クラスタマークがあるか、また最終クラスタマークがあるかは、FATを参照することで知ることが出来る。
例えば図6において、使用中のAU(Used AU)は、少なくともいずれかのクラスタが使用中(Used Cluster)であるAUである。従って、未使用クラスタがあっても、ひとつでも使用済みクラスタが存在すれば、そのAUは使用済みAUであり、このAUは空き容量計算から除外される。空き容量計算時に空き容量に寄与するのは、あくまで未使用(全クラスタが未使用)のAUである。よって図6では、4つの空きAU1、AU3〜AU5に基づいて、メモリカード2の空き容量が算出される(AU5は最終AUと想定)。
1.5 本実施形態に係る効果
上記のように、本実施形態に係るホスト装置であると、アプリケーション開発の負荷を軽減すると共に、NAND型フラッシュメモリへの書き込み速度を向上出来る。本効果につき、以下説明する。
SDメモリカードでは、その書き込み速度に応じてスピードクラスが定められている。従って、メモリカードの機能を最大限に発揮するには、ホスト機器が各メモリカードに適したスピードクラス仕様に従った書き込み処理を行うことが望ましい。しかしながら、そのためにはホスト装置はスピードクラスに準拠した実装が必要であるが、そのための要求事項が多数あり、最適な実装が困難なこともりあり、スピードクラス普及の妨げになっている。
また、ホスト装置はファイルシステムでメモリカードを管理する。しかし、新たにAUサイズを認識してメモリ領域を管理することは、ホスト装置にとって大きな負担となっている。更に、AUサイズの管理をしなくても、性能は低下するが互換性には問題が生じないため、AUサイズを考慮したホスト装置の普及の妨げになっている。しかし、そのような実装であると、スピードクラスで規定されているSDメモリカードの最低性能を保証することが困難である。
また別な問題として、AUサイズを考慮したホスト実装であっても、ホスト装置は規定されたAUサイズの最大値までしか認識しない。従って、より大きなAUサイズが必要になった場合、現在のホスト装置との互換性を保つことが困難になる。
更に、従来のファイルシステムでは、フラグメントされた領域も積極的に使用して、メモリ領域を効率的に使用するアルゴリズムを採用している。しかしながら、このアルゴリズムであると、データの書き込みは必ずしもシーケンシャルとはならず、データのコピーが必要となり、データの書き込み速度を低下させる。
この点、本実施形態に係るホスト装置1はファイル制御ユニット51を備え、ファイル制御ユニット51とファイルシステム52とにより、専用ファイルシステムを構成している。そして、専用ファイルシステムがAUサイズ及びスピードクラスを把握して、これらの情報に応じてメモリカード2を制御する。従って、アプリケーション50はAUサイズ及びスピードクラスを把握する必要が無い。つまり、アプリケーション50はAUサイズでのメモリ領域の管理、及びスピードクラスに応じた書き込み制御を行う必要が無い。従って、アプリケーション50の開発負担を軽減することが出来る。
更に専用ファイルシステムは、データの書き込みに際しAU単位で空き領域を検索する。すなわち、フラグメントされた領域を使用しない。そして専用ファイルシステムは、空きAUに対して、常にシーケンシャルに書き込む。そのため、データのコピー動作が不要となり、メモリカード2の性能を最大限に発揮させることが可能となる。また本方式で使用したメモリカードは、従来ファイルシステムのホスト機器で使用できるため、互換性が維持できる特徴がある。
ディレクトリエントリは、ディレクトリ毎に作成され、小領域(例えば512Byte)単位で何度も更新される特徴がある。そのため専用ファイルシステムは、ディレクトリエントリ用のAUを確保しておき、複数のディレクトリエントリをひとつのAU上に作成することにより、メモリカードは、小領域に対する書き込みを容易に管理ができる特徴がある。
2.第2実施形態
次に、第2実施形態に係るホスト装置について説明する。本実施形態は、上記第1実施形態において、拡張API56を廃したものである。以下では、第1実施形態と異なる点についてのみ説明する。
2.1 ホスト装置1の構成について
図11は、本実施形態に係るホスト装置1の機能ブロック図である。図示するように、本実施形態に係るホスト装置1は、第1実施形態で説明した図2に対して以下の変形を行ったものである。すなわち、
(a) 拡張API56を廃する。
(b) 基本API55の引数と戻り値を拡張する。
すなわち本実施形態は、従来の基本APIを基に引数と戻り値を拡張することで、拡張APIと同様の機能を実現するものである。
例えば、APIにおける標準的な関数として、FileOpen関数がある。この場合、FileOpen関数の引数に、ファイルを書き込む際にAU境界に合わせる、または合わせない、という情報を、フラグとして追加する。当該フラグが“0”であれば、専用ファイルシステムは従来と同じ動作を行う。つまり、AU単位で空き領域を確保することなく、フラグメントされた領域をも使用してファイルを書き込む。他方、フラグが“1”であれば、専用フィルシステムは第1実施形態で説明したようにAU境界を単位にして、データをシーケンシャルに書き込む。
また、前記フラグを持たない場合、すべてのメモリライトに対して、専用フィルシステムは第1実施形態で説明したようにAU境界を単位にして、データをシーケンシャルに書き込む方法適用することもできる。この場合、フラグメントしたAUは使用されないため、メモリ使用効率は悪くなるが性能は向上する。
2.2 本実施形態に係る効果
本実施形態に係る構成であると、一つのAPIで、すでに開発済の従来アプリケーションと互換性を有しつつ、更に拡張機能を使用可能とすることが出来る。従って、より簡便な構成で、第1実施形態で説明した機能を実現出来る。
3.第3実施形態
次に、第3実施形態に係るホスト装置について説明する。本実施形態は、上記第1、第2実施形態において、データの削除及び上書きを行う際の動作の詳細を説明するものである。以下では、第1、第2実施形態と異なる点についてのみ説明する。
3.1 FATファイルシステムについて
まず、動作の詳細の説明の前に、FATファイルシステムについて簡単に説明する。
図12は、メモリカード2のメモリ空間を示すメモリマップである。メモリ空間は、大まかには管理領域60とユーザデータ領域61とに分けられる。各領域はクラスタという単位に分割されて管理される。
管理領域60は、NAND型フラッシュメモリ31に記録されているファイル(データ)を管理するために設けられており、ファイルの管理情報を保持する。このように、メモリに記録されているファイル(データ)を管理する方式をファイルシステムと呼ぶ。ファイルシステムにおいては、ファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。以下では、数字の先頭に付加した“0x”は、それに続く数字が16進数表示であることを示す。
管理領域60は、例えばブートセクタ、FAT1、FAT2、及びルートディレクトリエントリを含んでいる。ブートセクタはブート情報を記憶する領域である。FAT1及びFAT2は、データがいずれのクラスタに記憶されているかを記憶する。ルートディレクトリエントリは、ルートディレクトリ上にあるファイルの情報を記憶する。より具体的には、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、どのクラスタがファイルの先頭クラスタであるかを記憶する。先頭クラスタが分かれば、FATチェーンから、全データがアクセス可能となる。
ユーザデータ領域61は管理領域60以外の領域であり、メモリカードに格納することができる容量は、この領域の大きさで決まる。
次に、上記FAT1及びFAT2について説明する。以下ではFAT1、FAT2をまとめてFATと呼ぶ。両者が同じ値を保持しておくことで、一方が壊れた場合でもFATの復旧可能にしている。
メモリ空間は、クラスタと呼ばれるある一定のサイズの空間の集合である(クラスタの集合がRUであり、RUの集合がAUである)。そして、書き込まれるデータがクラスタサイズより大きい場合、クラスタ単位に分割されて記憶される。この際、データがどのクラスタに分割されて書き込まれたかをFATのチェーンを作成して管理する。
図13は、FATおよびルートディレクトリエントリ内のファイルエントリの一例を示している。例えばルートディレクトリに3つのファイル“FILE1.JPG”、“FILE2.JPG”、及び“FILE3.JPG”が含まれており、それぞれの先頭クラスタが“0002”、“0005”、“0007”であったと仮定する。
FATには、各クラスタの次に接続されるべきクラスタの番号が記載されている。例えば“FILE1.JPG”の場合、先頭のクラスタ“0002”のデータに続くデータを格納するクラスタはクラスタ“0003”で、クラスタ“0003”のデータに続くデータを格納するクラスタはクラスタ“0004”であることが分かる。そしてクラスタ“0002”、“0003”、“0004”のデータを接続することにより、“FILE1.JPG”のファイルが復元される。最後のファイルデータを格納するクラスタを示すFATには、“0xFFFF”がマークされている。また、未使用のクラスタかどうかは“0x0000”をマークすることで検出ができる。
次に、上記ルートディレクトリエントリについて説明する。図14はルートディレクトリエントリの構成を示す概念図であり、一例としてルートディレクトリにディレクトリ“DIR1”及び“DIR2”が作成され、更にファイル“FILE1.MOV”が作成された場合について示している。
図示するようにルートディレクトリエントリは、各々が32バイトの複数のエントリを備える。そして各エントリが、ルートディレクトリに含まれるファイルまたはディレクトリに関する情報を保持する。各エントリは、32バイトの先頭バイト位置から順に、ファイルまたはサブディレクトリの名前(DIR_Name、11バイト)、属性(DIR_Attr、1バイト)、予約(DIR_NTRes、1バイト)、作成時刻(DIR_CrtTimeTenth、1バイト)、作成時刻(DIR_CrtTime、2バイト)、作成日付(DIR_CrtDate、2バイト)、最終アクセス日付(DIR_LstAccDate、2バイト)、先頭クラスタの上位2バイト(DIR_FstClusHI)、書き込み時刻(DIR_WrtTime、2バイト)、書き込み日付(DIR_WrtDate、2バイト)、先頭クラスタの下位2バイト(DIR_FstClusLO)、及びファイルサイズ(DIR_FileSize、4バイト)を保持する。属性とは、読み取り専用か否か、ディレクトリであるか否か、システムファイルであるか否か、また隠しファイルであるか否か等を示す情報である。予約を示す1バイトのデータは全て“0x00”とされる。作成時刻(DIR_CrtTimeTenth)は、対応するファイルまたはディレクトリの作成時刻のうちのミリ秒の部分を示し、作成時刻(DIR_CrtTime)は時分を示す。また先頭クラスタ番号は、DIR_FstClusHIとDIR_FstClusLOの2つに分離されて、ルートディレクトリエントリに記録される。
例えば図14の例では、ルートディレクトリにはファイル“FILE1.MOV”が存在し、このファイルは読み取り専用であり、2009年12月10日12:00:15に作成され、そのファイルサイズは3.50MBであり、そのデータはクラスタ20を先頭に書き込まれていることが分かる。また図14ではエントリ0〜2までが使用されており、エントリ3以降は未使用である。そして未使用のエントリ内は全て“0x00”とされている。
なお、サブディレクトエントリの構造も、基本的にはルートディレクトリエントリと同じである。ルートディレクトリエントリと異なる点は、サブディレクトリエントリには、自分自身を示すドット(.)エントリと、親ディレクトリを示すドットドット(..)エントリが含まれる点である。そしてサブディレクトリエントリは、図12のユーザデータ領域61に設けられる。
3.2 具体例について
次に、データの消去及び上書き(更新)時の動作の詳細について、以下説明する。
3.2.1 データの削除(その1)
ファイルを削除した場合、その領域を再利用するとデータのフラグメント化が促進されてしまうため、専用ファイルシステムでは、削除された領域がすぐに再利用されない方法で管理する特徴がある。領域が不足したときなど、あるタイミングでガーベージコレクションを行い、未使用領域のうち、空きAUとして確保できるものを再利用する。
まず、データを削除する場合について、図15を用いて説明する。図15は、専用ファイルシステムの動作の流れを示すフローチャートである。
図示するように、専用ファイルシステムはアプリケーション50からファイル削除命令を受信する(ステップS10)。この命令の処理として、専用ファイルシステムは、ディレクトリエントリのファイル名またはディレクトリ名(図14の名前フィールド)の先頭バイト(0バイト目)を削除コード(例えば“0x5E”)に更新する(ステップS11)。次に削除ファイルが保持していたデータクラスタに対応するFATにはエラーコードをセットする(ステップS12)。この結果、削除対象とされたファイルデータを保持するクラスタは、以後、再利用が禁止される。
図16は、データを削除する際のクラスタ及びFATの具体例を示しており、クラスタと、それに対応するFATを示している。図中において、クラスタの斜線部分はデータを保持する領域を示し、FATの斜線部分はFATが更新されたことを示す。
図16左図に示すように、例えばクラスタ番号が“0x1000”〜“0x1005”のクラスタに、それぞれデータDAT1〜DAT6が保持されている。そして、FATによってこれらのDAT1〜DAT6が順次連結されて、1つのファイルが構成されている。
図16右図は、上記ファイルを削除した際の様子を示す。図示するように、削除対象となったデータDAT1〜DAT6を保持するクラスタに対応するFATは、全てエラーコードを示す“0xFFF8”に更新される。但し、データDAT1〜DAT6そのものは、削除されることなくクラスタ内に保持されたままである。
3.2.2 データの削除(その2)
次に、データの削除の別の例について、図17を用いて説明する。図17は、専用ファイルシステムの動作の流れを示すフローチャートである。
図示するように、ステップS10とS11は図15と同様であり、ステップS12の代わりにステップS22を実行する。すなわちステップS22において専用ファイルシステムは、削除対象データを、既存のジャンクファイルに連結する。より具体的には、既に存在するジャンクファイルに対応する最終クラスタのFATを“0xFFFF”から、削除ファイルデータの先頭クラスタ番号に更新する(ステップS22)。なお、ジャンクファイルは不要なファイルのことであり、アプリケーション50ではなく専用ファイルシステムによって作成されるファイルである。
図18は本例の具体例を示しており、クラスタと、それに対応するFATを示している。図中において、クラスタの斜線部分はデータを保持する領域を示し、FATの斜線部分はFATが更新されたことを示す。
図18左図に示すように、例えばクラスタ番号が“0x1000”〜“0x1005”のクラスタに、それぞれデータDAT1〜DAT6が保持されている。そして、FATによってこれらのDAT1〜DAT6が順次連結されて、1つのファイルが構成されている。また、例えばクラスタ番号が“0x2000”〜“0x2002”及び“0x2204”〜“0x2205”のクラスタに、それぞれジャンクデータJUNK1〜JUNK5が保持されている。そして、FATによってこれらのJUNK1〜JUNK5が順次連結されて、1つのジャンクファイルが構成されている。また、例えばクラスタ番号が“0x1000”からのクラスタ群と“0x2000”からのクラスタ群とは、互いに異なるAUに属する。
図18右図は、データDAT1〜DAT6で構成されるファイルを削除した際の様子を示す。図示するように、削除対象となったデータDAT1〜DAT6を保持するクラスタに対応するFATは書き換えられず、既存のジャンクファイルのデータJUNK5を保持するクラスタに対応するFATが、“0x1000”に更新される。この結果、データDAT1〜DAT6は、データJUNK5の後ろに連結される。これにより、データDAT1〜DAT6はジャンクファイルとしてメモリカード2に残ることになる。
3.2.3 データの上書き(その1)
データの上書きにおいても、専用ファイルシステムは、削除された領域がすぐに再利用されない方法で管理する特徴がある。
次に、データを上書き(更新)する場合について、図19を用いて説明する。図19は、専用ファイルシステムの動作の流れを示すフローチャートである。
図示するように、専用ファイルシステムはアプリケーション50からデータの上書き命令を受信する(ステップS30)。専用ファイルシステムは、データを上書きするのではなく、すでに書き込み済みのデータの後ろの空き領域に追記して書く。その書き込みアドレスを引数に設定したデータの書き込みコマンドをメモリカード2に発行する(ステップS31)。
この書き込みコマンドに応答して、メモリカード2はデータをシーケンシャルに書き込む。専用ファイルシステムは、ファイルデータのクラスタチェーンを上書きデータに置き換えるようにFATを更新する。(ステップS32)。上書き対象とされたデータを利用できなくするために、そのデータに対応するFATにエラーコードをセットする(ステップS33)。更に、なお、上書きによってすでに確保されているAUが使える場合は、残り容量は変わらないが、上書きデータを書く領域が不足する場合は、新たな空きAUを確保するため、残り容量は減少する。
図20は、データを上書きする際のクラスタ及びFATの具体例を示しており、クラスタと、それに対応するFATを示している。図中において、クラスタの斜線部分はデータを保持する領域を示し、FATの斜線部分はFATが更新されたことを示す。
図20左図に示すように、例えばクラスタ番号が“0x1000”〜“0x1005”のクラスタに、それぞれデータDAT1〜DAT6が保持されている。そして、FATによってこれらのDAT1〜DAT6が順次連結されて、1つのファイルが構成されている。
図20右図は、上記データのうち、DAT4及びDAT5をそれぞれDAT_A及びDAT_Bで上書きした際の様子を示す。図示するように、上書き対象となったデータDAT4及びDAT5を保持するクラスタに対応するFATは、全てエラーコードを示す“0xFFF8”に更新される。但し、データDAT4及びDAT5そのものは、削除されることなくクラスタ内に保持されたままである。また、DAT3に対応するDATは“0x1006”に更新され、DAT_A及びDAT_Bに対応するFATはそれぞれ“0x1007”及び“0x1005”がセットされる。その結果、DAT3とDAT_Aとが連結され、DAT_BとDAT6とが連結される。
3.2.4 データの上書き(その2)
次に、データを上書き(更新)する場合の別の例について、図21を用いて説明する。図21は、ホスト装置1及びメモリカード2の動作の流れを示すフローチャートである。
図示するように、図19で説明したステップS30〜S32の処理を実行する。次に専用ファイルシステムは、既に存在するジャンクファイルに対応する最終クラスタのFATを、最終クラスタ番号“0xFFFF”から、削除対象データに対応する先頭クラスタ番号に更新する(ステップS43)。そして、上書き対象データの最終クラスタのFATを、0xFFFFに更新する(ステップS44)。
図22は本例の具体例を示しており、クラスタと、それに対応するFATを示している。図中において、クラスタの斜線部分はデータを保持する領域を示し、FATの斜線部分はFATが更新されたことを示す。
図22左図は、データの上書き前の様子を示し、図18と同様である。この状態で、データDAT4及びDAT5がデータDAT_A及びDAT_Bで上書きされたとする。その様子を示すのが図22右図である。図示するように、データJUNK5は、上書き対象となったデータDAT4に連結され、データDAT5に対応するFATが“0xFFFF”に更新される。これにより、上書き対象データDAT4及びDAT5がジャンクファイルに連結される。
3.3 本実施形態の効果
本実施形態に係るデータの削除及び上書き方法によれば、実際には上書きすることなく、データ領域はフラッシュメモリに適したシーケンシャルライトを維持し、削除しないことにより、フラグメンテーション領域の発生を抑制することが出来る。本効果につき、以下説明する。
上記3.2.1で説明した方法によれば、アプリケーション50がデータの削除を要求した際、専用ファイルシステムは、データそのものをクラスタから削除することなく、対応するFATの値をエラーコードに書き換える。上記3.2.3で説明した方法も同様であり、専用ファイルシステムは、上書き対象となったデータをクラスタから削除することなく、対応するFATの値をエラーコードに書き換える。
すなわち本方法によれば、不要となったデータはクラスタに残り、当該クラスタは空き領域とはならない。その代わり、当該クラスタに対応するFATには、エラーコードが格納される。従って、不要となったデータに対応するクラスタが、新たなデータの書き込み領域として再度選択されることを抑制することが出来る。
また上記3.2.2で説明した方法によれば、専用ファイルシステムは、削除したデータをジャンクファイルとしてクラスタ内に残しておく。そして、既存のジャンクファイルがあれば、これに連結する(無ければ、もちろん連結せず、削除ファイルをそのままジャンクファイルとする)。上記3.2.4で説明した方法も同様であり、専用ファイルシステムは、上書き対象となったデータをジャンクファイルとして残しておく。
本方法によっても、不要となったデータに対応するクラスタが、新たなデータの書き込み領域として再度選択されることを抑制することが出来る。更に、不要データをジャンクファイルとして残すことで、次のような効果が得られる。アプリケーション50は、チェックディスクコマンド等、メモリ空間におけるエラーをチェック・修復する機能を有する場合がある。すると、そのようなコマンドによって、FATのエラーコードがクリアされて、当該クラスタが空きクラスタとして使用可能な状態になる可能性がある。しかし、ジャンクファイルとして残しておけば、このような事態が発生することを防止出来る。また、図18の例では、“0x2205”のクラスタを更新するだけで良く、図16の例のように削除対象クラスタの全てのFATを更新する、といった必要も無く、より簡便な手法と言うことが出来る。
いずれの方法によっても、フラグメンテーションの発生は抑制され、データをシーケンシャルに書き込むことが出来る。また、いずれの方法であっても、アプリケーション50がデータを削除してもメモリカード2の空き容量は増えない。従って、データの削除及び上書きを繰り返すと、メモリカード2の空き容量は僅かでありながら、そのほとんどが不要データ(FATがエラーコードのクラスタや、ジャンクファイル)である、といった事態が発生する可能性がある。このような場合には、例えば専用ファイルシステムがメモリカード2の使用状況を監視して、適切なタイミングにおいてガーベージコレクションを行っても良い。
すなわち、ガーベージコレクションを行うことで、NAND型フラッシュメモリ31内の複数の物理ブロックに点在する有効データを、ある物理ブロックにまとめてコピーし、コピー元の物理ブロックを消去することによって、新たに空きAUを生成する。このようなガーベージコレクションによってFATのエラーコードはクリアされ、複数のフラグメンテーション領域はシーケンシャルに書き込み可能な領域にまとめられる。もちろん、FATにエラーコードがセットされたクラスタは、メモリカード2をフォーマットすることによっても再利用可能となる。ジャンクファイルを用いた例では、再利用可能なクラスタを除いて、ジャンクファイルのデータチェーンを再構成する。
なお、ファイルはディレクトリエントリでその記録場所が示される。しかし、削除対象となったファイルのファイル名を“0xE5”に更新することで、当該エントリを無効化することが出来る。図18と図22で説明したジャンクファイルは、ホスト装置1のユーザに認識されないよう、隠しファイルとすることが望ましい。
また、上記の例では、ひとつのジャンクファイルにまとめたが、削除ファイルの名前を個々変えることにより、複数のジャンクファイルにして残す方法もある。
また、上記3.2.1及び3.2.3の方法では、不要データを保持するクラスタに対応するFATをエラーコード(例えば“0xFF8”)に更新する場合を例に説明したがFATチェーンの最終クラスタ番号(例えば“0xFFFF”)に更新しても良い。もちろん、ファイルシステムにおいて利用を禁止する意味を持つコードであれば、これらのコードに限定されるものではない。
4.第4実施形態
次に、第4実施形態に係るホスト装置について説明する。本実施形態は、上記第1乃至第3実施形態におけるディレクトリエントリ作成方法に関するものである。以下では、第1乃至第3実施形態と異なる点についてのみ説明する。
4.1 NAND型フラッシュメモリの特性とディレクトリエントリの初期化について
図23は、NAND型フラッシュメモリのメモリセルの閾値分布であり、一例として2値を保持可能なメモリセル(single level cell)の場合を示している。
図示するようにメモリセルは、その閾値が負の状態と閾値が正の状態との2つの状態を取ることが出来、本明細書ではそれぞれを“1”データ及び“0”データと定義する。メモリセルは、消去状態では“1”データを保持する状態にあり、データが書き込まれることで“0”データを保持する状態に遷移する。
図24は、ディレクトリエントリを新規に作成する際の従来ファイルシステムの動作を示すフローチャートである。図24に示すように、従来ファイルシステムはまず、アプリケーション50からディレクトリ作成要求を受ける(ステップS50)、この要求に対し、ファイルシステムは、親ディレクトリエントリに子ディレクトリのファイルエントリを作成し(ステップS51)、子ディレクトリエントリの領域を確保し(ステップS52)、確保したディレクトリ領域をデータ“0”で初期化する(ステップS53)。その後、ファイルシステムは、“..(ドットドット)”と“.(ドット)”に対するファイルエントリを作成する(ステップS54)。ただし、ステップS53とステップS54は、まとめてひとつのライトにすることは可能である。
このように、特にステップS53で、ファイルシステムは、「ディレクトリエントリの初期化」のために最初の1クラスタにすべて“0”のデータを書き込んでおく必要があった。各エントリの先頭バイト“0”はディレクトリエントリの空き領域を示すためである。ファイルシステムは初期化動作後に、ディレクトリエントリに対して上書き動作を行うため、ファイルエントリの書き込みは、フラッシュメモリに対して上書きとなってしまう問題があった。
4.2 ディレクトリエントリ作成の改善について
図25に専用ファイルシステムが行う、処理フローを示す。図24と異なる点は以下の通りである。
図示するように専用ファイルシステムは、ステップS50〜S52の後、カードがディレクトリ作成コマンド(Create DIR)をサポートしているかどうかを確認し(ステップS63)、サポートしている場合(ステップS64、YES)は、ディレクトリエントリの初期化を行わず、ディレクトリ作成コマンドを発行し(ステップS65)、続いて“..”と“.”を作成するシングルブロックライトコマンドを発行する(ステップS66)。この場合、カードは、初期化すべきクラスタサイズを別な手段で取得する。
カードがディレクトリ作成コマンドをサポートしていない場合(ステップS64、NO)は、“..”と“.”に対するファイルエントリと、他のDIR Entryデータを“0”に初期化するマルチブロックライトコマンドの発行する(ステップS67)。なお、カードにクラスタサイズを認識させる目的で、ステップS65の書き込みをシングルブロックライトではなく、クラスタサイズのデータ長によるマルチブロックライトを実行する方法もある。
カードが、ディレクトリ作成コマンドを受信すると、それに続くファイルエントリの書き込み(ステップS66)の前に、そのアドレス領域に対してカード内部で1クラスタ分の初期化を実行してから、ファイルエントリの書き込みを実行する。これにより、最初のファイルエントリの書き込みが、フラッシュメモリに対して上書きとならないような処理が可能となる。
ステップS67に対して、メモリカード20の処理方法として、下記に2つの例を挙げる。
4.2.1 メモリカード2の動作について(その1)
コントローラ32は、ホスト装置1の専用ファイルシステムからDIR作成コマンドを受信する。これらのコマンドは、第1実施形態で説明した図10の“Create DIR”に相当する。するとコントローラ32は、DIR作成コマンドで指定されたアドレスに、1クラスタのディレクトリエントリ用の領域を確保する。そしてコントローラ32は、確保した1クラスタの領域のデータが“0”になることを保証する。必ずしもコントローラ32がデータ“0”をライトする必要はない。この方法ではカードはクラスタ長を認識しなければならない。
4.2.2 メモリカード2の動作について(その2)
従来ファイルシステムでは、ディレクトリエントリをクラスタ単位に確保するが、本提案例では、AU単位にディレクトリエントリ領域を確保する。NAND型フラッシュメモリ31がサポートする消去コマンドを用いることで、データ“0”をライトするよりも、効率よくこの領域を初期化できる。ただし、消去コマンドで消去した結果は、NAND型フラッシュメモリでは、データが“1”のレベルとなる。そこで、ホストから“0”に見えるような工夫が必要となる。
コントローラ32は、ホスト装置2から受信したデータを反転してNAND型フラッシュメモリ31に書き込み、またNAND型フラッシュメモリ31から読み出したデータを反転してホスト装置2に送信する。こうすると、フラッシュメモリが消去状態で“1”データを保持する場合、コントローラ32は読み出し時にデータを反転させるため、ホスト装置2は、ディレクトリエントリは“0”データを保持していると認識する。この方法では、最初にディレクトリ作成コマンド(Create DIR)を受信した場合、カードのコントローラ32は、フラッシュメモリの消去コマンドを用いて、AUを“0”データで初期化する。したがってクラスタサイズを認識する必要がなく、フラッシュメモリの消去機能を利用して高速に消去が可能であり、上書きを回避することが簡単にできる点が(その1)の実装例と異なる点である。カードは、電源が切れても、この領域がディレクトリエントリであることを識別できるように情報を記憶しておく。以降専用ファイルシステムは、このAUをディレクトリエントリ用のAUとして確保することで、初期値が0として保証されているため、新たなディレクトリエントリを作成する場合でも初期化が不要となる。
4.3 本実施形態に係る効果
FATファイルシステムでは、ディレクトリエントリを作成した場合、そのクラスタは“0”データに初期化した後に使用可能とされる。従ってホスト装置は、確保したディレクトリエントリの1クラスタ領域を消去状態にするために“0”データを書き込む処理が必要であった。また、“0”でライトした後に、ファイルエントリを書くため上書きとなってしまう問題があった。上書きした場合、カードコントローラは、ある程度処理時間が必要となるので、初期化のための上書きはない方が好ましい。
しかし本実施形態に係る構成であると、ディレクトリエントリの初期化機能をメモリカード2に持たせている。従って、ホスト装置1は初期化動作を行う必要が無く、ホスト装置1の負荷を軽減出来る。また、メモリカード2が初期化機能を有するか否かは、レジスタ46を参照すること等によって認識出来る。そしてその結果に応じてホスト装置2は、ディレクトリエントリの初期化を行うか否かを決定出来る。
なお、上記4.2.2で説明した方法であると、メモリカード2はクラスタサイズを認識する必要が無く、フラッシュメモリの高速な消去機能を利用できる特徴がある。すなわち、従来、ディレクトリエントリはいずれかの空きクラスタに作成される。つまり1個のクラスタがディレクトリエントリとなる。従って、1個のディレクトリエントリの全領域を初期化するには、1個のクラスタのサイズを認識しておく必要がある。しかし4.2.2の方法では、専用ファイルシステムは、ディレクトリエントリ用にAUを確保し、メモリカード2はAU単位に初期化を行うので、クラスタサイズを認識する必要がない。
5.第5実施形態
次に、第5実施形態に係るホスト装置について説明する。本実施形態は、上記第1乃至第4実施形態におけるAPIに関するものである。以下では、第1乃至第4実施形態と異なる点についてのみ説明する。
5.1 基本API55、57について
まず、基本API55、57の備える機能について説明する。基本API55、57は、以下の機能を有している。
(a) GetDriveProperties:ターゲットドライブのプロパティを取得する機能である。例えば、マルチストリームに対応しているか否か、また対応している場合のサポートする最大ストリーム数等の情報を取得出来る。
(b) Open:ファイルをオープンし、そのファイルハンドルを取得する機能である。例えば、オープンする際の条件として、マルチストリーム機能を有効にしてファイルオープンするか否か等を選択出来る。
(c) Write:ファイルを書き込む機能である。ファイルをオープンした際にマルチストリーム機能が有効にされていれば、書き込みもマルチストリームで行われる。
(d) Read:データを読み込む機能である。
(e) Seek:ファイルポインタを移動させる機能である。
(f) Close:ファイルハンドルをクローズする機能である。
(g) MoveFile:ファイルを移動させ、また名称を変更する機能である。
(h) CopyFile:ファイルをコピーする機能である。
(i) DeleteFile:ファイルを削除する機能である。
(j) GetFileProperty:ファイルのプロパティを取得する機能である。
(k) CreateDir:ディレクトリを作成する機能である。
(l) DeleteDir:ディレクトリを削除する機能である。
(m) MoveDir:ディレクトリを移動させ、また名称を変更する機能である。
5.2 拡張API56について
次に、拡張API56の備える機能について説明する。拡張API56は、以下の機能の少なくともいずれかを有することが好ましい。
(n) ストリーム数の取得:これは、メモリカードがマルチストリームをサポートする場合の機能である。ストリーム数は、アプリケーション50が同時に録画可能なチャンネル数を決定する場合等に用いられる。
(o) 空きAUの取得:AU単位に空いている場所を探し、その先頭アドレスを返す。
(p) ディレクトリエントリの作成:ディレクトリエントリ管理用にAUを確保すると共に、そのAUの空きクラスタに新たにディレクトリエントリを作成する機能である。
(q) ディレクトリエントリの更新:ファイルエントリを書く領域を指定し、更新する機能である。更新は同じ領域に対して繰り返し書き込み可能である。
(r) データの書き込み:AUにデータをシーケンシャルに書き込む機能である。
(s) 開放しない領域の削除:汎用の削除APIでは、削除後の領域を開放してしまうが、拡張APIを用いた削除では未使用のままとする。具体的には、第3実施形態で説明した削除方法である。未使用領域の管理方法としては、2通りの実装例がある(第3実施形態で説明したように、特定コードでマークする方法とジャンクファイルを用いる方法)。
(t) フォーマット:フォーマット時に、特殊コードで未使用としているクラスタを空きクラスタとして開放する機能である。特殊コードで使用不可としているクラスタとは、例えば第3実施形態で説明したエラーコードで管理されているクラスタである。また、ジャングファイルを用いる場合は、ジャンクファイルを消去して、空き領域に開放する機能である。
(u) 残り容量の取得:AU単位に管理されるメモリで、空き容量もAU単位に計算する。フラグメント領域、前記未使用領域を含まない計算方法。
5.3 本実施形態に係る効果
本実施形態のように拡張APIを用いることで、従来の基本APIで処理出来ない情報を、アプリケーション50が実装出来る。
第1実施形態で説明した通り、アプリケーション50はAUサイズやスピードクラス等の情報を把握することなく、第1乃至第5実施形態が実施可能である。しかしながら、拡張APIによって、基本APIに無い機能をアプリケーション50に持たせることにより、アプリケーション50の開発の自由度を向上出来る。
6.第6実施形態
次に、第6実施形態に係るホスト装置について説明する。本実施形態は、上記第1乃至第5実施形態において、複数のファイルを同時にメモリカードに書き込む場合の動作に関するものである。以下では、第1乃至第5実施形態と異なる点についてのみ説明する。
6.1 シングルストリーム機能を用いた場合
まず、メモリカード2のシングルストリーム機能を用いた場合(あるいは、メモリカード2がマルチストリーム機能をサポートしない場合)について、図26を用いて説明する。図26は、専用ファイルシステムの動作を示すフローチャートである。
図示するように専用ファイルシステムは、同時に作成する複数ファイル(N個、Nは2以上の自然数)は同じディレクトリに作成することを想定し、同じディレクトリエントリが使用可能であると想定する。専用ファイルシステムは、Nに関係なくデータ書き込み用のAUをひとつ確保しておく(ステップS70)。そして専用ファイルシステムは、N個のファイルの書き込み命令をアプリケーション50から受信する(ステップS71)。次に専用ファイルシステムは、N個のファイルのそれぞれに対応するN個のファイルエントリを同一のディレクトリエントリに作成する(ステップS72)。引き続き専用ファイルシステムは、確保したデータ書き込み用AUに、N個のファイルデータを分割して書き込む(ステップS73)。各ファイルのデータの大きさは、例えば、各ファイルのビットレートで決定する。
図27は本実施形態のメモリマップを示し、ホスト装置1がメモリカード2に2つのファイルエントリ(File_Entry1, File_Entry2)を作成し、ファイルエントリ1にファイル1の情報(名前、属性など、データクラスタの開始位置など)を作成し、同様にファイルエントリ2にファイル2の情報を作成する様子を示している。
専用ファイルシステムは、同一のディレクトリエントリに、ファイルエントリ1(File_Entry1)とファイルエントリ2(File_Entry2)を作成する。
また専用ファイルシステムは、2つのファイル(File1, File2)のデータ格納用に、空きAU2を確保する。そして専用ファイルシステムは、確保したAU2に、File1及びFile2のデータをシーケンシャルに書き込む。図27では、データDAT1、DAT2、DAT3、…がFile1を構成するデータであり、データDAT_A、DAT_B、DAT_C、…がFile2を構成するデータである。専用ファイルシステムは、これらのデータを分割してメモリカード2に書き込む。この際、データを書き込む順番とデータの大きさは任意であるが、通常はビットレートなどを考慮して決定される。各AUへのデータの書き込み方法としては、先に挙げた特開2006−178923号公報に開示のリアルタイム記録方法を用いることが出来る。
図28は、2つのファイル(第1ファイル及び第2ファイル)を同時にメモリカード2に書き込む際の、専用ファイルシステムにより処理の流れをより具体的に示すフローチャートである。図28では、専用ファイルシステムが、第1ファイルの書き込み中に第2ファイルの書き込み命令を受信した場合を例に挙げている。
図示するように専用ファイルシステムは、DIR Entryとは別な、空きAUをひとつデータ書き込みAUとして確保する(ステップS80)。また専用ファイルシステムは、アプリケーション50から、例えば第1ファイルの作成とデータ書き込み要求を受信する(ステップS81)。専用ファイルシステムは、ディレクトリエントリに第1ファイル情報を登録し(ステップS82)、前記データ書き込みAUに第1ファイルのデータを書き始める(ステップS83)。続いてアプリケーション50から、例えば第2ファイルの作成とデータ書き込み要求を受信する(ステップS84)。専用ファイルシステムは、ディレクトリエントリに第2ファイル情報を登録し(ステップS85)、第1ファイルと第2ファイルのデータを分割して前記データ書き込みAUにシーケンシャルに書き込む(ステップS86)。分割した書き込みデータの順番とデータサイズは、ファイルデータの書き込みビットレートなどを参考に決定する。
6.2 マルチストリーム機能を用いた場合
次に、メモリカード2のマルチストリーム機能を用いた場合について、図29を用いて説明する。図29は、専用ファイルシステムの動作を示すフローチャートである。
図示するように専用ファイルシステムは、N個(Nは2以上の自然数)のファイルの書き込み命令をアプリケーション50から受信すると(ステップS90)、各ファイルのデータ書き込み用にN個の空きAUを確保する(ステップS91)。そして専用ファイルシステムは、同一のディレクトリエントリに、N個のファイルのそれぞれに対応するN個のファイルエントリを作成する(ステップS92)。また専用ファイルシステムは、取得したN個のAUのそれぞれに、N個のファイルについてのデータを分割して書き込む(ステップS93)。分割した書き込みデータの順番とデータ長は、各ファイルのビットレートなどにより決定される。
図30は本実施形態のメモリマップを示し、図27と同様に、ホスト装置1がメモリカード2の同一ディレクトリエントリに2つのファイルエントリ(File_Entry1, File_Entry2)を作成する。
更に専用ファイルシステムは、2つのファイル(File1, File2)のデータ格納用に、2つの空きAU2、AU3を確保する。そして専用ファイルシステムは、AU2にFile1のデータをシーケンシャルに書き込み、またAU3にFile2のデータをシーケンシャルに書き込む。AU2及びAU3へのデータの書き込みは分割して行われ、書き込む順番や1度に書き込むデータ単位も任意である。また、各AUへデータを書き込む際には、参照によって本明細書にその全てが組み込まれる国際公開公報WO2011/093517号に記載の構成及び書き込み方法を用いることが出来る。各ファイルデータは、ストリーム番号管理され、例えばFile1はストリーム1, File2はストリーム2に割り当てられる。ストリームとAUとの関連づけは、書き込み開始コマンドと新AU書き込みコマンドで行われる。CMD20の引数に設定されたストリーム番号と、両コマンドに続く書き込みコマンドのアドレスがAUを特定するアドレス情報で、両者が関連付けられる。AU2、AU3がいっぱいになると、新AU書き込みコマンドで、別な空きAUを指定する。
図31は、2つのファイル(第1ファイル及び第2ファイル)を同時にメモリカード2に書き込む際の、専用ファイルシステムにより処理の流れをより具体的に示すフローチャートである。図31は図28と同様に、専用ファイルシステムが、第1ファイルの書き込み中に第2ファイルの書き込み要求を受信した場合を例に挙げている。
図示するように専用ファイルシステムは、アプリケーション50から、例えば第1ファイルについての書き込み要求を受信する(ステップS100)と、ディレクトリエントリに第1ファイルのFile Entryを作成する(ステップS101)。更に専用ファイルシステムは、第1ストリームを選択した書き込み開始コマンドを発行し(CMD20 Start Rec Stream ID=1)(ステップS102)、空きAU2を取得し、その先頭アドレスを引数に設定したライトコマンドを発行する(ステップS103)。これにより、ストリーム1とAU2の関連付けが行われ、AU2に第1ファイルのデータをシーケンシャルに書き込みはじめる(ステップS104)。
引き続き専用ファイルシステムは、アプリケーション50から、第2ファイルについての書き込み要求を受信する(ステップS105)と、ディレクトリエントリに第2ファイルのFile Entryを作成する(ステップS106)。第2ストリームを選択した書き込み開始コマンドを発行し(CMD20 Start Rec Stream ID=2)(ステップS107)、空きAU3を取得し、その先頭アドレスを引数に設定したライトコマンドを発行する(ステップS108)。これにより、ストリーム2とAU3の関連付けが行われ、AU2に第1ファイルのデータを、AU3に第2ファイルのデータをシーケンシャルに分割して書き込む(ステップS109)。
6.3 本実施形態に係る効果
現在、音楽データや映像データの記録メディアとしてNAND型フラッシュが広く用いられている。記録メディアの使用形態も多様化しており、例えば2つのテレビ番組を平行して録画したり、あるいは動画を撮影している最中に静止画を撮影したり出来る要望がある。このような要望を従来のファイルシステムで実現しようとすると、NAND型フラッシュメモリ内においてデータのコピー動作が必要となり、書き込み速度が低下する。これは、NAND型フラッシュメモリではデータの上書きが出来ないことに起因する。
この点、本実施形態に係る構成であると、複数ファイルを同時にメモリカードに記録する場合であっても、データはシーケンシャルにAUに書き込まれる。従って、NAND型フラッシュメモリにおける最適な方法でデータを書き込むことが出来、メモリカード2の性能を最大限に発揮させることが出来る。
より具体的には、メモリカードのマルチストリーム機能を利用する場合には、専用ファイルシステムは、ストリーム毎にAUを確保し、各ストリームデータを、対応するAUにそれぞれシーケンシャルに書き込む。またシングルストリーム機能を利用する場合には、専用ファイルシステムは、複数の異なるファイルをひとつのファイルに統合し、これをAUにシーケンシャルに書き込む。
なお、マルチストリーム機能を利用する場合にも、複数の異なるファイルをひとつのファイルに統合しても良い。
7.第7実施形態
次に、第7実施形態に係るホスト装置について説明する。本実施形態は、第1、第2実施形態で説明した拡張API機能を有しないホスト装置によって第1、第3、第4実施形態で説明した動作を実現するものである。以下では、上記実施形態と異なる点についてのみ説明する。
7.1 ホスト装置1の構成について
本実施形態に係るホスト装置1は、第1実施形態で説明した図2において拡張API56を廃した構成を有する。
7.2 ホスト装置2の動作について
次に、本実施形態に係るホスト装置2の動作について、図32を用いて説明する。図32は、ホスト装置2の特に専用ファイルシステムの処理の流れを示すフローチャートである。
(1) ファイル作成要求
図32に示すようにまず、専用ファイルシステムは、アプリケーション50がメモリカード2へのファイル作成要求を受信する(ステップS110)。この要求は、例えば基本API55におけるFileOpen関数を用いて行われる。
(2) ファイル属性の判定
次に専用ファイルシステムは、データを書き込むための空き領域を取得する。データをどこに書くかは、空き領域情報(FATまたはビットマップ)を参照して決定される。この際、専用ファイルシステムは、アプリケーション50からのファイル作成要求に含まれるデータ属性がビデオデータであるか否かを判断して(ステップS111)、その結果に応じて空き領域の取得方法を変える。なおステップS111の判断は、ファイルエントリ内のファイル拡張子情報によって判断出来る。より具体的には、例えばファイルの拡張子で識別することが出来る。ファイルの拡張子が“MP4”や“MOV”などのビブオファイル属性であれば、当該ファイルはビデオデータであると判断出来る。あるいは、ビデオファイルであることを示す特別なビットをディレクトリエントリ内に設け、このビットによって判断しても良い。
書き込みデータがビデオデータである場合には(ステップS112、YES)、専用ファイルシステムは、上記第1乃至第6実施形態で説明してきたような、AU単位で領域を確保するアルゴリズムを選択する(具体的には、後述するステップS116)。すなわち専用ファイルシステムは、AUサイズを認識し、FAT(またはビットマップ)からAUサイズ単位で、全領域が空いている領域を探し、見つかったいずれかの領域を、ビデオデータの書き込み領域として選択する。このアルゴリズムは、図6で説明したFree AU write algorithmである。
他方で、書き込みデータがビデオデータでなければ(ステップS112、NO)、通常のファイルシステムで用いられる、データをフラグメントした領域に詰めて書き込むアルゴリズムを選択する(具体的には、後述するステップS121)。このアルゴリズムは、図6で説明したFragmented AU write algorithmである。
ビデオデータは一例として挙げたもので、大きなデータを持つ可能性のある拡張子であれば(例えばJPGファイルなど)、同様にAU単位で領域を確保するアルゴリズムを選択することができる。また、アプリケーションからファイルのトータルデータ長を取得することで、その大きさによってアルゴリズムを決定することもできる(ファイルエントリはすでに書き込んだデータ長を記録するので、トータルデータ長はここからは分からない)。データサイズが大きいか小さいかの判断は、例えば専用ファイルシステムが予め保持する閾値を基準にして判断することが出来る。データサイズが未定な場合は、ディレクトリエントリ内のファイルエントリ情報に基づいて、大きなデータを持つ可能性のあるファイル属性であるか否かを識別することも可能である。
(3)ファイルエントリの作成
次に専用ファイルシステムは、ファイルエントリを作成し、これをメモリカード2に書き込む(ステップS113)。
書き込みデータがビデオデータの場合(ステップS112、YES)、専用ファイルシステムはDIR更新コマンド(CMD20 Update DIR)を発行して、次の書き込みデータがファイルエントリであることをメモリカード2に通知し、その後、CMD25を発行して、ファイルエントリをメモリカード2に書き込む(ステップS113)。ファイルエントリには、図14で説明したように、ファイル名、拡張子、及びステップS113で取得したデータ記録位置情報(先頭アドレス)等が含まれる。
書き込みデータがビデオデータでない場合、CMD20は発行されない(ステップS120)。
(4) 空き領域の確保とデータの書き込み
次にデータのメモリカード2への書き込みが行われる。書き込みデータがビデオデータの場合(ステップS112、YES)、専用ファイルシステムは、アプリケーション50からデータライト要求を受信すると、書き込むべき空き領域があるかどうかをチェックする(ステップS114)。すでにデータ書き込み用AUが確保されている場合は、続きから追記を行う。データ書き込み用AUが確保されていないか、確保されているAUに空きがない場合、CMD20 Start Recまたは、CMD20 Set New AUを発行し(ステップS115)、空きAUを確保し(ステップS116)、そのAUにシーケンシャルに書き込む(ステップS117)。なお、書き込みが終了するまでステップS114に戻り(ステップS118)、AUの全領域にデータが書き込まれた際は、専用ファイルシステムはFree AU write algorithmに従って別の空きAUを確保し、この空きAUにデータをシーケンシャルに書き込む。書き込まれたデータの順番は、FATチェーンとして記録される。また、専用ファイルシステムにより、ある時間毎やある書き込み要領毎にFATを更新するサイクルが、データ書き込みの間に挿入される。
書き込みデータがビデオデータでなければ(ステップS112、NO)、ファイルに必要な空きクラスタを確保し(ステップS121)、CMD25でデータを書き込み、書き込まれたデータの順番は、FATチェーンとして記録し(ステップS122)、書き込みが終了するまで繰り返す(ステップS123)。ステップS120からステップS123で、CMD20は使用されない。
(5) 終了処理
専用ファイルシステムは、アプリケーション50から依頼されたクローズ処理においてファイルのクローズ処理を実行する(ステップS119)。それまでに記録したデータのサイズや更新日時等の情報をファイルエントリに記録する。データを継続して同ファイル書き込む場合は、Append Modeでこのファイルをオープンし直す。このとき、スピードクラス書き込みに影響を与えない制御とすることが前提である。
7.3 本実施形態に係る効果
本実施形態で説明した方法によれば、拡張API56を不要としつつ、上記第1乃至第6実施形態の動作が実行可能となる。そしてアプリケーション50は、メモリカード2のスピードクラスやAUサイズを認識する必要も無い。
8.変形例等
以上のように、上記第1乃至第7実施形態に係るホスト装置は、メモリデバイスにアクセスするホスト装置であって、アプリケーションソフトウェア(Application50 in FIG2)と、専用ファイルシステム(Unit51 and FileSystem52 in FIG2)と、インターフェース回路(I/F59 in FIG2)とを備える。アプリケーションソフトウェア50は、専用ファイルシステムに対して、メモリデバイスアクセス要求を発行する。アクセス要求は、ファイルオープン、ファイルデータ書き込み、ファイルクローズなどがある。専用ファイルシステム(51、52)は、アクセス要求に応答して、メモリデバイスに対するアクセス制御を行う。インターフェース回路59は、専用ファイルシステム(51、52)によるアクセス制御に従ってメモリデバイスにアクセスする。専用ファイルシステム(51、52)は、メモリデバイスの論理アドレス空間を、所定の単位領域AUごとに管理し、確保したいずれかの未使用の単位領域AUにデータをシーケンシャルに書き込む。単位領域AUに対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令(CMD25)で構成される。アプリケーションソフトウェア50は、単位領域AUサイズを認識することなく、アクセス要求を専用ファイルシステム(51、52)に発行する。
本構成によれば、専用ファイルシステムはメモリデバイス2をAU単位で管理し、データをシーケンシャルに書き込む。従って、アプリケーション50はAUサイズを認識することなく、高速な書き込み動作が可能となる。
なお、上記第1乃至第7の実施形態は種々の変形が可能である。本明細書におけるAU(allocation unit)とは、メモリデバイスの論理空間上の管理単位であり、SDメモリカードのスピードクラスに定義されている単位である。メモリカードのレジスタから値を読み出すことができる。そしてAU境界は、NAND型フラッシュメモリ31の物理ブロック境界と関連している。
図33は、NAND型フラッシュメモリ31のメモリセルアレイ48のブロック図である。図示するようにメモリセルアレイ48は、複数のブロック(物理ブロック)BLKを備えている。各ブロックは、2つの選択トランジスタST1、ST2の間に直列接続された複数のメモリセルMCを備えている。同一行のメモリセルMCは同一のワード線WLに接続され、同一のワード線WLに接続された複数のメモリセルMCによりページが構成される。そして、データの書き込みはページ単位で行われ、ソース線SLに近いメモリセルMCから順番に行われる。またデータの消去はブロックBLK単位で行われる。つまり、物理ブロックBLK内のデータは一括して消去される。そしてブロック(及びページ)には、物理アドレスが割り当てられている。ひとつ、または複数の物理ブロックでひとつのAUを構成する。
図34は、ホスト装置1からメモリカード2を見たときのメモリ空間(論理アドレス空間)と、それに対応する物理ブロックBLKを示す模式図である。図示するように、ホスト装置1の専用ファイルシステムは、論理アドレス空間を、例えば4Mバイト等のサイズを有するAU単位で管理する。個々のAUは、例えば4個のブロックBLKに対応付けられる。図34の例では、AU1はブロックBLK0〜BLK3に対応し、AU2はブロックBLK4〜BLK7に対応している。この対応関係は、例えばデータコピーを伴う動作等により時間と共に変化する。従って、この対応関係が、前述の論理アドレス/物理アドレス変換テーブルに記録されている。AUのサイズはブロックBLKサイズの4倍であり、AUの境界はブロックBLKの境界に一致している。言い換えれば、AUの先頭アドレス(論理アドレス)は、いずれかの物理ブロックBLKの先頭アドレス(物理アドレス)に対応し、当該AUの最終アドレス(論理アドレス)は、いずれかのブロックBLKの最終アドレス(物理アドレス)に対応する。なお図34の例では論理アドレスの値と物理アドレスの値とが一致しているが、書き込み性能が満足していれば、バウンダリ境界は異なっていても良いことは言うまでもない。
上記実施形態では、AUのサイズは物理ブロックサイズの整数倍である場合を例に説明したが、ブロックサイズと同一であっても良い(1倍)。またAUは、スピードクラスで定義された概念には限らず、ホスト装置1による論理アドレス空間の管理単位であれば限定されるものでは無い。通常書き込みであっても、AU境界を認識し、シーケンシャルライトすることで高速化することができる。
専用ファイルシステムは、1つのディレクトリエントリ用のAUに複数のディレクトリエントリを割り当てることが出来る。図35は、ディレクトリ構造の一例を示す概念図である。図示するように、ルートディレクトリに2つのサブディレクトリDIR1及びDIR2が形成され、DIR1及びDIR2の中にそれぞれファイル“FILE1A.mp4”及び“FILE2.mp4”が記録されている。
この場合の、ホスト機器1から見た論理アドレス空間を図36に示す。図示するように専用ファイルシステムは、ディレクトリエントリ用のAUとしてAU1を確保している。DIR1及びDIR2のディレクトリエントリ領域をそれぞれAU1に確保する。またDIR1内のデータ用に空きAU2を確保し、DIR2内のデータ用に空きAU3を確保する。従って、“FILE1A.mp4”はAU2の先頭アドレスからシーケンシャルに書き込まれ、“FILE2.mp4”はAU3の先頭アドレスからシーケンシャルに書き込まれる。
このような状況において、図37に示すように、アプリケーション50がDIR1にファイル“FILE1B.mp4”を記録するよう要求してきたとする。すると専用ファイルシステムは、図38に示すように、既にDIR1用として確保したAU2内の空き領域に追記するかたちで“FILE1B.mp4”を書き込む。“FILE1B.mp4”は、“FILE1A.mp4”が書き込まれた領域の最終アドレスに続いてシーケンシャルにAU2内に書き込まれる。もちろん、“FILE1B.mp4”を書き込むためにAU2の空き容量が足りなければ、専用ファイルシステムは別の空きAUを確保して、そこに引き続き“FILE1B.mp4”を書き込めば良い。
また専用ファイルシステムは、第3実施形態で詳細に説明したように、アプリケーション50からデータの削除要求や上書き要求を受信しても、不要となったデータそのものはクラスタ内に残しておく。そして専用ファイルシステムは、FATを更新することにより、当該クラスタの使用を禁止する。しかしながら専用ファイルシステムは、メモリカード2の残り容量が一定値を下回った際や、あるいはアプリケーション50の要求に応じてガーベージコレクションを行って、不要なデータを消去することが出来る。
図39は、ガーベージコレクションの一例を示す概念図である。例えば、AU1からAU4にフラグメントした状態でデータが保持されている様子を示している。図中において、「無効(不要)データを保持する領域」とは、第3実施形態で説明したジャンクファイルや、FATがエラーコードとされたファイルを保持する領域である。
すると専用ファイルシステムは、AU2〜AU4の有効データD2〜D4を、ある空きAU5にコピーする。そして、AU2〜AU4内のデータを全て消去する。また専用ファイルシステムは、AU5のFATテーブルに新たなD2〜D4のデータチェーンを記録し、AU2〜AU4のFATテーブルを空き領域に書き換える処理を行う。
以上の結果、AU2〜AU4は消去状態とされ、再びシーケンシャルにデータを書き込むことが可能な領域となる。
また、上記実施形態ではメモリデバイスとしてSDメモリカードを例に挙げて説明した。しかし、メモリデバイスはSDメモリカードに限らず、あらゆる記憶媒体であって良い。ファイルシステムもまたFATファイルシステムに限定されるものでは無い。
更に、上記実施形態は、適宜組み合わせて実施することが出来る。例えば上記実施形態では、CMD20を用いたスピードクラスライトとAU単位での管理の両方を実装するホスト装置を例に説明した。しかし、カードがCMD20をサポートしない場合は、各実施例に対してホストは CMD20を省略して同様な処理を行えば良い。CMD20を用いずに書き込みを行うホスト装置であっても、AU単位での管理を行うことでデータコピー動作の発生を抑制する効果が得られる。
なお、上記実施形態は以下の態様を含む。
[1]メモリデバイスにアクセスするホスト装置であって、
ファイルシステムに対してアプリケーションインタフェース(API)により前記メモリデバイスへのアクセス要求を発行するアプリケーションソフトウェア(Application50 in FIG2)と、
前記アクセス要求に応答して、前記メモリデバイスのメモリ領域をフラッシュメモリに適した方式で管理を行う専用ファイルシステム(Unit51, FileSystem52 in FIG2)と、
ホスト装置の前記専用ファイルシステムと前記メモリデバイス間の通信を可能にするインターフェース回路(I/F59 in FIG2)と
を具備し、前記専用ファイルシステムは、前記メモリデバイスの論理アドレス空間を、所定の単位領域(AU in FIG6)ごとに管理し、確保したいずれかの未使用の単位領域にデータをシーケンシャルに書き込み、前記単位領域に対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令(CMD24 or 25)で構成され、
前記アプリケーションソフトウェアは、前記単位領域サイズを認識することなく、前記アクセス要求を前記専用ファイルシステムに発行するホスト装置。
[2] DIR Entry管理、単位領域ベースの空き領域管理、削除データ管理
前記専用ファイルシステムは、
前記アプリケーションからディレクトリの作成要求があった場合、ディレクトリエントリ用の前記単位領域が確保されていなければ、空き単位領域をディレクトリエントリ用の単位領域として確保し、複数のディレクトリが作成された場合、それぞれのディレクトリエントリをこのAUの空き領域に確保し、
前記メモリデバイス内のデータを削除する場合、削除対象データを再利用できない方法でデータを管理し(step S20 in FIG17)、
全領域が未使用である前記単位領域の数に基づいて、前記メモリデバイス全体の空き領域を計算する、[1]のホスト装置。
[3]アルゴリズムの選択
前記専用ファイルシステムは、ファイルを前記メモリデバイスに書き込む際、前記アプリケーションソフトウェアからのファイルデータサイズ情報の大小を基づいて、小さなデータファイルである場合には、前記メモリデバイスの領域使用率を優先したアルゴリズム(Fragmented AU Write Algorithm in FIG6)を用いて前記メモリデバイスを管理し、
大きなデータを持つファイルの場合には、前記単位領域ごとにデータの書き込み領域を管理するアルゴリズム(Free AU Write Algorithm in FIG6) を用いて前記メモリデバイスを管理し、
前記ファイルデータサイズが未定な場合は、ディレクトリエントリ内の前記ファイルエントリ情報に基づいて、大きなデータを持つ可能性のあるファイル属性であるか否かを識別し(step S112 in FIG33)、前記アルゴリズムを切り替える、[1]のホスト装置。
[4] video dataの判断方法
前記専用ファイルシステムは、前記ディレクトリエントリ内の前記ファイルエントリに記録されているファイル拡張子情報、またはビデオファイルであるか否かを示す情報フィールドに基づいて、前記書き込みデータがビデオファイルであるか否かを識別する、[3]のホスト装置。
[5] junk fileを隠しfileに設定
前記専用ファイルシステムは、削除対象データを再利用できない方法として、隠しファイル属性を設定したジャンクファイルとして管理する、[1]のホスト装置。
[6] data削除方法でjunk fileにつなげない場合
前記専用ファイルシステムは、FATファイルシステムを含み、
前記メモリデバイスのメモリ空間は前記FATファイルシステムでフォーマットされた複数のクラスタの集合であり、
前記メモリデバイス内のデータをクラスタ単位で削除する場合、前記専用ファイルシステムは、削除対象データを再利用できない方法として、削除対象データを保持するクラスタのFATをエラーコードまたは最終セクタコードに書き換える(step S14 in FIG15)、[1]のホスト装置。
[7] data上書き方法でjunk fileにつなげない場合
前記専用ファイルシステムは、FATファイルシステムを含み、
前記メモリデバイスのメモリ空間は前記FATファイルシステムでフォーマットされた複数のクラスタの集合であり、
前記メモリデバイス内のデータの少なくとも一部をクラスタ単位で上書きする場合、前記専用ファイルシステムは、確保した前記単位領域に上書きデータをシーケンシャルに書き込み、FATのリンクを更新すると共に(step S32 in FIG19)、
削除対象データを再利用できない方法として、上書き対象データを保持するクラスタのFATを、エラーコードまたは最終セクタコードに書き換える(step S34 in FIG19)、[1]のホスト装置。
[8] data上書き方法でjunk fileにつなげる場合
前記専用ファイルシステムは、FATファイルシステムを含み、
前記メモリデバイスのメモリ空間は前記FATファイルシステムでフォーマットされた複数のクラスタの集合であり、
前記メモリデバイス内のデータの少なくとも一部をクラスタ単位で上書きする場合、前記専用ファイルシステムは、確保した前記単位領域に上書きデータをシーケンシャルに書き込み、FATのリンクを更新すると共に(step S32 in FIG19)、
削除対象データを再利用できない方法として、上書き対象データを対応するクラスタから消去することなく、ジャンクファイルとして残す(step S40 in FIG21)、[1]のホスト装置。
[9] single streamでの複数file同時書き込み
前記専用ファイルシステムは、前記アプリケーションソフトウェアによる要求に基づいて複数のファイルを同時に作成する際、ひとつの前記単位領域を確保し、前記複数のファイルが混在したデータを書き込む(FIG27-28)、[1]のホスト装置。
[10] multi-streamでの複数file同時書き込み
前記専用ファイルシステムは、前記アプリケーションソフトウェアによる要求に基づいてN個のファイルを同時に作成する際、空き状態のN個の前記単位領域を確保し、N個の単位領域に前記N個のファイルのファイルデータをそれぞれ書き込む(FIG30-31)、[1]のホスト装置。
[11] DIR entryの初期化をcardが自発的に行う
[1]記載のホスト装置によってアクセスされる前記メモリデバイスであって、
ディレクトリエントリ領域を確保するコマンドを前記ホスト装置から受信した場合、指定された領域が“0”で満たされるように初期化行い、前記ホスト装置が、そのディレクトリエントリ領域を初期化する必要がない、メモリデバイス。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1…ホスト装置、2…メモリカード、11…MPU、12…SDインターフェース、13…RAM、14…ROM、31…NAND型フラッシュメモリ、32…コントローラ、41…SDインターフェース、42…MPU、43…ROM、44…RAM、45…NANDインターフェース、46…レジスタ、50…アプリケーション、51…ファイル制御ユニット、52…ファイルシステム、53…ホストコントローラドライバ、54…ホストコントローラ、55、57…基本API、56…拡張API、58…ホストドライバインターフェース、59…メモリバスインターフェース

Claims (6)

  1. メモリデバイスにアクセスするホスト装置であって、
    ファイルシステムに対してアプリケーションインタフェースにより前記メモリデバイスへのアクセス要求を発行するアプリケーションソフトウェアと、
    前記アクセス要求に応答して、前記メモリデバイスのメモリ領域をフラッシュメモリに適した方式で管理を行う専用ファイルシステムと、
    ホスト装置の前記専用ファイルシステムと前記メモリデバイス間の通信を可能にするインターフェース回路と
    を具備し、前記専用ファイルシステムは、前記メモリデバイスの論理アドレス空間を、所定の単位領域ごとに管理し、確保したいずれかの未使用の単位領域にデータをシーケンシャルに書き込み、前記単位領域に対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令で構成され、
    前記アプリケーションソフトウェアは、前記単位領域サイズを認識することなく、前記アクセス要求を前記専用ファイルシステムに発行する
    ことを特徴とするホスト装置。
  2. 前記専用ファイルシステムは、
    前記アプリケーションからディレクトリの作成要求があった場合、ディレクトリエントリ用の前記単位領域が確保されていなければ、空き単位領域をディレクトリエントリ用の単位領域として確保し、複数のディレクトリが作成された場合、それぞれのディレクトリエントリをこのAUの空き領域に確保し、
    前記メモリデバイス内のデータを削除する場合、削除対象データを再利用できない方法でデータを管理し、
    全領域が未使用である前記単位領域の数に基づいて、前記メモリデバイス全体の空き領域を計算する
    ことを特徴とする請求項1のホスト装置。
  3. 前記専用ファイルシステムは、ファイルを前記メモリデバイスに書き込む際、前記アプリケーションソフトウェアからのファイルデータサイズ情報の大小を基づいて、小さなデータファイルである場合には、前記メモリデバイスの領域使用率を優先したアルゴリズムを用いて前記メモリデバイスを管理し、
    大きなデータを持つファイルの場合には、前記単位領域ごとにデータの書き込み領域を管理するアルゴリズムを用いて前記メモリデバイスを管理し、
    前記ファイルデータサイズが未定な場合は、ディレクトリエントリ内の前記ファイルエントリ情報に基づいて、大きなデータを持つ可能性のあるファイル属性であるか否かを識別し、前記アルゴリズムを切り替える
    ことを特徴とする請求項1記載のホスト装置。
  4. 前記専用ファイルシステムは、前記ディレクトリエントリ内の前記ファイルエントリに記録されているファイル拡張子情報、またはビデオファイルであるか否かを示す情報フィールドに基づいて、前記書き込みデータがビデオファイルであるか否かを識別する
    ことを特徴とする請求項3記載のホスト装置。
  5. 前記専用ファイルシステムは、削除対象データを再利用できない方法として、隠しファイル属性を設定したジャンクファイルとして管理する
    ことを特徴とする請求項1記載のホスト装置。
  6. 請求項1記載のホスト装置によってアクセスされる前記メモリデバイスであって、
    ディレクトリエントリ領域を確保するコマンドを前記ホスト装置から受信した場合、指定された領域が“0”で満たされるように初期化行い、前記ホスト装置が、そのディレクトリエントリ領域を初期化する必要がない
    ことを特徴とするメモリデバイス。
JP2012185127A 2012-08-24 2012-08-24 ホスト装置及びメモリデバイス Pending JP2014044490A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012185127A JP2014044490A (ja) 2012-08-24 2012-08-24 ホスト装置及びメモリデバイス
US13/782,268 US20140059273A1 (en) 2012-08-24 2013-03-01 Host apparatus and memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012185127A JP2014044490A (ja) 2012-08-24 2012-08-24 ホスト装置及びメモリデバイス

Publications (1)

Publication Number Publication Date
JP2014044490A true JP2014044490A (ja) 2014-03-13

Family

ID=50149070

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012185127A Pending JP2014044490A (ja) 2012-08-24 2012-08-24 ホスト装置及びメモリデバイス

Country Status (2)

Country Link
US (1) US20140059273A1 (ja)
JP (1) JP2014044490A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042648B2 (en) 2015-09-10 2018-08-07 Toshiba Memory Corporation Memory system, electric device, and information processing device
JP2019161506A (ja) * 2018-03-14 2019-09-19 キヤノン株式会社 記録装置及びその制御方法
JP2020113105A (ja) * 2019-01-15 2020-07-27 キヤノン株式会社 記録制御装置およびその制御方法
JP2021033615A (ja) * 2019-08-23 2021-03-01 キヤノン株式会社 制御装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
CN105247524A (zh) * 2013-05-31 2016-01-13 皇家飞利浦有限公司 用于自动上传、下载和更新诸如睡眠研究数据的数据的系统和方法
WO2015089488A1 (en) 2013-12-12 2015-06-18 Memory Technologies Llc Channel optimized storage modules
JP2015185103A (ja) * 2014-03-26 2015-10-22 ソニー株式会社 記憶装置、情報処理装置、データアクセス方法、およびプログラム
WO2019150847A1 (ja) * 2018-02-05 2019-08-08 パナソニックIpマネジメント株式会社 記録システム
US11372812B2 (en) * 2018-10-08 2022-06-28 Silicon Motion, Inc. Mobile device and method capable of earlier determining that a number of files in a directory of an external connected storage device is about to full
JP7252821B2 (ja) * 2019-04-17 2023-04-05 キヤノン株式会社 記録装置、記録方法、プログラム、及びメモリカード
CN111078159B (zh) * 2019-12-31 2023-11-03 深圳市思博慧数据科技有限公司 一种避免dvr存储卡写损坏的写入方法
CN111722874B (zh) * 2020-06-24 2024-04-02 中国平安财产保险股份有限公司 移动端代码的自动清理方法、装置、设备及存储介质
CN113553006B (zh) * 2021-07-12 2024-07-23 山东华芯半导体有限公司 一种实现向只读分区写数据的安全加密存储系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
JP2003006998A (ja) * 2001-06-22 2003-01-10 Hitachi Ltd ファイル記録装置およびファイル記録方法
JP2004139615A (ja) * 2003-12-01 2004-05-13 Sharp Corp ファイル管理方法及び装置
WO2005103903A1 (ja) * 2004-04-20 2005-11-03 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶システム
WO2006093220A1 (ja) * 2005-03-04 2006-09-08 Matsushita Electric Industrial Co., Ltd. データ処理装置
JP2007234028A (ja) * 2002-06-27 2007-09-13 Sony Corp 情報処理装置、情報処理方法および情報処理プログラム
JP2008059228A (ja) * 2006-08-31 2008-03-13 Sharp Corp ファイルシステム
WO2010103760A1 (ja) * 2009-03-13 2010-09-16 パナソニック株式会社 アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム
WO2011058700A1 (ja) * 2009-11-11 2011-05-19 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム
JP2011134348A (ja) * 2004-01-26 2011-07-07 Panasonic Corp 半導体メモリ装置
JP2011175615A (ja) * 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
CA2563277C (en) * 2004-07-12 2013-01-08 Kabushiki Kaisha Toshiba Storage device and host apparatus
JP2009015978A (ja) * 2007-07-05 2009-01-22 Toshiba Corp 半導体記憶装置及びメモリシステム
JP2010026933A (ja) * 2008-07-23 2010-02-04 Toshiba Corp メモリシステム、ホスト装置
JP4714291B2 (ja) * 2009-09-30 2011-06-29 株式会社東芝 情報記録装置、情報記録方法及び情報記録用プログラム
US8176220B2 (en) * 2009-10-01 2012-05-08 Oracle America, Inc. Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors
KR101739556B1 (ko) * 2010-11-15 2017-05-24 삼성전자주식회사 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
JP2003006998A (ja) * 2001-06-22 2003-01-10 Hitachi Ltd ファイル記録装置およびファイル記録方法
JP2007234028A (ja) * 2002-06-27 2007-09-13 Sony Corp 情報処理装置、情報処理方法および情報処理プログラム
JP2004139615A (ja) * 2003-12-01 2004-05-13 Sharp Corp ファイル管理方法及び装置
JP2011134348A (ja) * 2004-01-26 2011-07-07 Panasonic Corp 半導体メモリ装置
WO2005103903A1 (ja) * 2004-04-20 2005-11-03 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶システム
WO2006093220A1 (ja) * 2005-03-04 2006-09-08 Matsushita Electric Industrial Co., Ltd. データ処理装置
JP2008059228A (ja) * 2006-08-31 2008-03-13 Sharp Corp ファイルシステム
WO2010103760A1 (ja) * 2009-03-13 2010-09-16 パナソニック株式会社 アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム
WO2011058700A1 (ja) * 2009-11-11 2011-05-19 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム
JP2011175615A (ja) * 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042648B2 (en) 2015-09-10 2018-08-07 Toshiba Memory Corporation Memory system, electric device, and information processing device
JP2019161506A (ja) * 2018-03-14 2019-09-19 キヤノン株式会社 記録装置及びその制御方法
JP7129796B2 (ja) 2018-03-14 2022-09-02 キヤノン株式会社 記録装置及びその制御方法
JP2020113105A (ja) * 2019-01-15 2020-07-27 キヤノン株式会社 記録制御装置およびその制御方法
JP7263017B2 (ja) 2019-01-15 2023-04-24 キヤノン株式会社 記録制御装置およびその制御方法
JP2021033615A (ja) * 2019-08-23 2021-03-01 キヤノン株式会社 制御装置
JP7362349B2 (ja) 2019-08-23 2023-10-17 キヤノン株式会社 制御装置

Also Published As

Publication number Publication date
US20140059273A1 (en) 2014-02-27

Similar Documents

Publication Publication Date Title
JP2014044490A (ja) ホスト装置及びメモリデバイス
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US9021212B2 (en) Semiconductor memory system having a snapshot function
US8521949B2 (en) Data deleting method and apparatus
JP4238514B2 (ja) データ記憶装置
US8589617B2 (en) Write once recording device
US7702846B2 (en) Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method
TWI420305B (zh) 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法
JPWO2005103903A1 (ja) 不揮発性記憶システム
JP5976608B2 (ja) メモリデバイス
US20070043924A1 (en) Method for controlling memory card and method for controlling nonvolatile semiconductor memory
JP2018073040A (ja) メモリシステム
JP6677740B2 (ja) ストレージシステム
JP2010026933A (ja) メモリシステム、ホスト装置
CN105573666B (zh) 盘阵列设备、盘控制设备、固态驱动器、盘控制方法和记录介质
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
KR101893897B1 (ko) 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법
US9152641B2 (en) Method and system for providing storage device file location information
WO2010001606A1 (ja) コントローラ、情報記録装置、アクセス装置、情報記録システム、及び情報記録方法
JP4714291B2 (ja) 情報記録装置、情報記録方法及び情報記録用プログラム
US9762671B2 (en) Wireless access device and wireless access system
US20130036257A1 (en) Memory system which can avoid unavailability due to operation error by user
JP5161989B2 (ja) 情報記録装置、情報記録方法及び情報記録用プログラム
JP2007310533A (ja) 不揮発性記憶システム、不揮発性記憶装置、及びファイルデータ書き込み方法
JP2008134777A (ja) ファイル割当テーブルのキャッシュ方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150831

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160301