以下、本発明の各実施の形態について、図面を参照しながら説明する。
(実施の形態1)
<1.1:不揮発性記憶システムの構成>
図1は、本発明の実施の形態1における不揮発性記憶システム1000の概略構成図である。図1に示すように、不揮発性記憶システム1000は、不揮発性記憶装置1と、不揮発性記憶装置1が装着されるアクセス装置2とを含んで構成される。不揮発性記憶装置1と、アクセス装置2とは、バスB1により接続されて、双方向に通信を行うことができ、不揮発性記憶装置1は、アクセス装置2からの指示に応じてデータの読み出し及び/又は書き込みを行う。不揮発性記憶装置1は、例えば、半導体メモリカードである。アクセス装置2は、例えば、半導体メモリカードに動画コンテンツを記録するビデオレコーダである。
(1.1.1:アクセス装置の構成)
アクセス装置2は、図1に示すように、CPU(Central Processing Unit)21と、RAM(Random Access Memory)22と、ROM(Read-Only Memory)23と、不揮発性記憶装置インタフェース(IF)部24と、AV(Audio Visual)入力部25と、符号処理部26と、暗号処理部27と、を含む。アクセス装置2の各機能部は、図1に示すように、バスBA1を介して接続されている。なお、アクセス装置2は、アクセス装置2の機能部の全部又は一部が直接接続される構成であってもよい。
CPU21は、RAM22及びROM23を用いて、アクセス装置2の各種制御を行う。
RAM22は、所定のアドレスに対して、各種データの読み出し/書き込み処理を実行することができる。そして、RAM22に保持されているデータ等は、CPU21やアクセス装置2の各機能部からアクセスすることができる。
ROM23には、アクセス装置2を制御するプログラムが格納されている。このプログラムは、RAM22にロードされ、CPU21により実行される。
不揮発性記憶装置IF部24は、不揮発性記憶装置1とアクセス装置2との接続部である。制御信号及びデータは、不揮発性記憶装置IF部24を介して、アクセス装置2と不揮発性記憶装置1との間で、送受信される。
AV入力部25は、外部から放送波などのAV入力データ(映像や音声のデータ、及びこれらに関連する制御データ)を受信する。AV入力部25により受信されたAV入力データは、ROM23に格納されたプログラムによる処理や、符号処理部26による符号処理や、暗号処理部27による暗号処理が施され、コンテンツデータが、コンテンツファイル及びコンテンツ管理情報ファイルとして不揮発性記憶装置1に格納される。
ここで、コンテンツデータは、コンテンツを格納するコンテンツファイルと、コンテンツに付随する関連情報(例えば、名称、サムネイル画像、タイムサーチテーブル、ビットレート、再生時間、暗号化情報など)を格納する複数のコンテンツ管理情報ファイルとに分割して不揮発性記憶装置1に格納されるデータである。
符号処理部26は、AV入力部25により受信されたAV入力データに対して、所定の符号方式による符号処理を実行する。
暗号処理部27は、AV入力部25により受信されたAV入力データ(例えば、暗号化が指示されているAV入力データ)、あるいは、符号処理部26により符号処理が実行されたAV入力データに対して、所定の暗号方式による暗号処理を行う。
ROM23は、図1に示すように、アプリケーション部201と、ファイルシステム部202と、不揮発性記憶装置アクセスドライバ部203と、を含む。なお、本実施の形態では、アプリケーション部201、ファイルシステム部202、及び、不揮発性記憶装置アクセスドライバ部203は、ROM23上において、ソフトウェアにより実現されるものを想定しているが、これに限定されることはなく、例えば、アプリケーション部201、ファイルシステム部202、及び、不揮発性記憶装置アクセスドライバ部203の全部又は一部は、ハードウェアで実現されるものであってもよい。
アプリケーション部201は、データの生成や電源の制御などアクセス装置2全体の制御を行う。さらに、本実施の形態におけるアプリケーション部201は、帯域管理部204を備えている。帯域管理部204は、複数のコンテンツデータを時分割多重により不揮発性記憶装置1に書き込む場合、コンテンツデータ毎に所定単位時間で不揮発性記憶装置1へのアクセス時間を割り当てる。
具体的には、帯域管理部204は、複数のコンテンツファイル及びコンテンツ管理情報ファイルを不揮発性記憶装置1に時分割多重で並列的に書き込む際に、各々の書き込みに許容される帯域として、不揮発性記憶装置1に対するアクセス時間を管理する。帯域管理部204は、帯域の管理を行うために、RAM22内に帯域管理テーブルを生成し、これを使用する。
図2は、RAM22内に記憶される帯域管理テーブルの一例を示している。帯域管理テーブルは、不揮発性記憶装置1に最大4つのAV入力データを並列的に書き込むことを想定している。帯域管理テーブルは、各々のAV入力データに対して、以下の6つの情報を格納している。
・AV入力データを識別する「コンテンツ番号」
・該AV入力データに関するコンテンツファイル及びコンテンツ管理情報ファイルを不揮発性記憶装置1に書き込む際に使用する「チャネル番号」
・該AV入力データを書き込むために現在割り当てられている「帯域情報」
・該AV入力データの「記録レート」
・該AV入力データのコンテンツファイルの入力(書き込み)が完了したか否かを示す「コンテンツ終了フラグ」
・該AV入力データのコンテンツ管理情報ファイルの書き込み中にチャネル休止コマンド(後述)を発行したか否かを示す「休止フラグ」
図2に示す例では、コンテンツ番号=C001のAV入力データ(コンテンツデータ)のコンテンツファイル及びコンテンツ管理情報ファイルと、コンテンツ番号=C002のAV入力データのコンテンツファイル及びコンテンツ管理情報ファイルとが時分割多重で並列的に書き込まれる場合、時間分割された最初の期間において、C001のコンテンツファイル及びコンテンツ管理情報ファイルが、チャネル番号0(Ch.0)を使用して書き込まれる。
このときの帯域情報(所定単位時間に対する当該データの書き込みに許容されるアクセス時間の割合)として、1秒/3秒が設定され、この場合の記録レートは2MB/秒である。また、コンテンツ終了フラグがONであるから、このコンテンツデータの入力が完了し、休止フラグがONであるから、該コンテンツデータのコンテンツ管理情報ファイルの書き込み中にチャネル休止コマンドが発行されている。
また、時間分割された残りの期間において、コンテンツ番号=C002のコンテンツファイル及びコンテンツ管理情報ファイルが、チャネル番号1(Ch.1)を使用して書き込まれる。
このときの帯域情報として、2秒/3秒が設定され、この場合の記録レートは4MB/秒である。また、コンテンツ終了フラグがOFFであるから、このコンテンツデータの入力は完了しておらず、休止フラグがOFFであるから、このコンテンツデータのコンテンツ管理情報ファイルの書き込み中にチャネル休止コマンドは発行されていない。
上記のように、本実施の形態では、時分割多重により複数のチャネルを用いて複数のデータを並列的に書き込む場合、帯域情報として、所定単位時間に対する各データの書き込みに許容されるアクセス時間の割合がチャネル毎に設定され、設定されたアクセス時間ごとにデータが切り替えられながら、各データが順次書き込まれ、複数のデータが擬似的に並列に書き込まれる。
再び、図1を参照して、ファイルシステム部202は、FATファイルシステム等のファイルシステムによりデータをファイルとして管理するための制御を行う。
不揮発性記憶装置アクセスドライバ部203は、ファイルシステム部202からデータと共に、データのサイズ及びアドレスを渡され、指定されたサイズのデータを不揮発性記憶装置1の記憶領域内における指定された位置に記録するなど、不揮発性記憶装置1に対するコマンドやデータの送受信を制御する。
また、アプリケーション部201、ファイルシステム部202及び不揮発性記憶装置アクセスドライバ部203は、書き込み部として機能し、帯域管理部204により割り当てられたアクセス時間の範囲内で、コンテンツファイルの書き込みと、コンテンツ管理情報ファイルの書き込みとを行う。ここで、アプリケーション部201及びファイルシステム部202が書き込み部の一例に相当し、帯域管理部204が割り当て部の一例に相当する。
(1.1.2:不揮発性記憶装置の構成)
図1に示すように、不揮発性記憶装置1は、メモリコントローラ11と、データを記憶する不揮発性メモリ12と、を含む。メモリコントローラ11と、不揮発性メモリ12とは、バスB2により接続されており、メモリコントローラ11は、不揮発性メモリ12と、バスB2を介して、データの送受信(データの読み出し/書き込みや、コマンド送信やレスポンスの受信等)を行い、不揮発性メモリ12の制御を行うことができる。
メモリコントローラ11は、不揮発性記憶装置1の制御全般を行うモジュールであり、例えば、CPUなどを含むLSI(Large Scale Integration)として構成される。不揮発性メモリ12は、例えば、1つ以上のNAND型フラッシュメモリで構成される。
メモリコントローラ11は、図1に示すように、CPU101と、RAM102と、ROM103と、アクセス装置インタフェース(IF)部104と、不揮発性メモリインタフェース(IF)部105と、を含む。メモリコントローラ11の各機能部は、図1に示すように、バスBC1を介して接続されている。なお、メモリコントローラ11は、メモリコントローラ11の機能部の全部又は一部が直接接続される構成であってもよい。
また、メモリコントローラ11は、アクセス装置2からデータの書き込みを行っている期間中に、アクセス装置2から書き込みを休止するチャネル休止コマンド(休止指示)を受付け、アクセス装置2から受信したデータを所定時間内に不揮発性メモリ12に書き込み後、書き込みを休止し、アクセス装置2からの新たなデータの読み出し及び/又は書き込みを受付ける。
アクセス装置IF部104は、不揮発性記憶装置1とアクセス装置2との接続部である。不揮発性記憶装置IF部24と同様に、制御信号及びデータは、アクセス装置IF部104を介して、アクセス装置2と不揮発性記憶装置1との間で、送受信される。
不揮発性メモリIF部105は、メモリコントローラ11と不揮発性メモリ12との接続部である。不揮発性メモリ12に対するコマンドやデータは、不揮発性メモリIF部105を介して、メモリコントローラ11と不揮発性メモリ12との間で、送受信される。
ROM103には、不揮発性記憶装置1を制御するプログラムが格納されている。このプログラムは、RAM102にロードされ、CPU101により実行される。
具体的には、ROM103は、図1に示すように、コマンド処理部106と、アドレス管理部107と、チャネル管理部108と、を含む。なお、本実施の形態では、コマンド処理部106、アドレス管理部107、及び、チャネル管理部108は、ROM103上において、ソフトウェアにより実現されるものを想定しているが、これに限定されることはなく、例えば、コマンド処理部106、アドレス管理部107、及び、チャネル管理部108の全部又は一部は、ハードウェアで実現されるものであってもよい。
コマンド処理部106は、アクセス装置IF部104を介して、アクセス装置2から受信したコマンド及びコマンドに関するパラメータを解釈し、コマンドの処理を実行する機能部である。
アドレス管理部107は、不揮発性メモリ12のアドレス管理全般を行う。アドレス管理部107は、アクセス装置2からアクセス可能なアドレス空間として不揮発性記憶装置1が提供する論理アドレス空間における論理アドレスと、不揮発性メモリ12の物理アドレスとの対応付けを管理する。アドレス管理部107は、有効なデータが格納されておらず、データ書き込みに再利用可能なブロックであるフリーブロックの物理アドレスや、データ書き込みに利用不可能な不良ブロックの物理アドレスや、論理アドレスと物理アドレスとの変換テーブルが格納されたブロックの物理アドレスなども管理する。
チャネル管理部108は、アクセス装置2がデータ書き込み時に指定するチャネル番号毎に書き込み先の物理ブロックを割り当て、その書き込み状態を管理する。これにより、アクセス装置2が異なるチャネル番号の書き込みを並列的に行った場合であっても、書き込み性能の低下を防止する。
さらに、本実施の形態におけるチャネル管理部108は、休止制御部109を備えている。休止制御部109は、チャネル番号を指定した書き込みを緊急休止するための処理や、休止状態から復帰するための処理を行う。このような休止・復帰の処理を行うために、休止制御部109は、RAM102内に休止管理テーブルを生成して使用する。
不揮発性メモリ12は、本実施の形態における休止制御部109が書き込みデータの退避先として使用する退避領域122と、それ以外のアクセス装置2から書き込まれたデータや不揮発性記憶装置1が内部的に使用するシステム情報などを格納する部分である記録領域121とを含む。メモリコントローラ11の休止制御部109は、アクセス装置2からデータの書き込みを行う書き込みコマンド(書き込み指示)を受け付けると、書き込みを行う前に、不揮発性メモリ12の一部を退避領域122として確保し、退避領域122を構成する物理ブロックを予め消去する。
図3は、RAM102内に記憶される休止管理テーブルの一例を示している。休止管理テーブルは、不揮発性記憶装置1が最大4つのチャネル番号を管理することを想定している。休止管理テーブル、各々のチャネル番号に対して、以下の6つの情報を格納している。
・該チャネル番号における書き込みデータを退避領域122に退避させているか否かを示す「退避フラグ」
・該チャネル番号に割り当てられた退避領域122の物理位置を示す「物理ブロックアドレス」
・該物理ブロックが消去済みか否かを示す「消去済フラグ」
・退避フラグがONの場合、退避させている書き込みデータの論理アドレスを示す「退避データアドレス」
・退避フラグがONの場合、退避させている書き込みデータのサイズを示す「退避データサイズ」
図3に示す例では、チャネル番号0(Ch.0)の場合、退避フラグがONであるから、チャネル番号0を割り当てられた書き込みデータが、退避領域122に退避されており、この退避領域122の物理ブロックのアドレスが0x4A00であり、退避させている書き込みデータの論理アドレスが0x00F200であり、この書き込みデータのサイズが0x02である。また、消去済フラグがOFFであるから、この退避領域122の物理ブロック内のデータが消去されていない。
一方、チャネル番号1(Ch.1)の場合、退避フラグがOFFであるから、チャネル番号1を割り当てられた書き込みデータは、退避領域122に退避されていないが、この退避領域122の物理ブロックアドレスが0x4A10である。また、消去済フラグがONであるから、この退避領域122の物理ブロック内のデータは消去されている。
(1.1.3:ディレクトリ及びファイル構成)
アクセス装置2は、不揮発性記憶装置1が提供するデータの記憶領域の管理をファイルシステムによって行う。本実施の形態では、半導体メモリカードで一般的に用いられているFATファイルシステム(FAT12、FAT16、FAT32、exFAT等)を使用するものとするが、UDF(User Datagram Protocol)や独自のファイルシステム等の他のファイルシステムを使用してもよい。
図4は、アクセス装置2のアプリケーション部201が不揮発性記憶装置1にAVコンテンツを格納(記録)する際のディレクトリ及びファイル構成の一例を示している。
本実施の形態においては、ルートディレクトリの直下に「VIDEO」ディレクトリが生成され、「VIDEO」ディレクトリの直下に、「PRG1」、「PRG2」といった個々のAVコンテンツを格納するディレクトリが生成される。さらに、「PRG1」には映像・音声のストリームデータ本体であるコンテンツファイルの「ST1」ファイルと、前記コンテンツファイルのメタデータ等を格納したコンテンツ管理情報ファイルである「INFO1」、「INFO2」、…、「INFON」ファイルというN個のファイルとが生成される。「PRG2」ディレクトリにも、「PRG1」と同様のファイル群が生成される。
さらに、「VIDEO」ディレクトリの直下には、「MNG」という全てのAVコンテンツデータに関するメタデータ等(例えば、AVコンテンツデータの総数、総再生時間、プレイリスト等)を格納するディレクトリが生成される。「MNG」ディレクトリの直下には、コンテンツ管理情報ファイルである「MNG1」、「MNG2」、…、「MNGM」ファイルというM個のファイルが生成される。
従って、アクセス装置2は、1つのAVコンテンツを記録する際に、コンテンツファイル以外にも、複数のコンテンツ管理情報ファイル(例えば、上記の「INFO1」や「MNG1」等に相当するファイル)の書き込みが必要である。一般的に、異なるファイルのデータは、異なる論理アドレスに格納されるため、これら複数のコンテンツ管理情報ファイルの更新は、ランダムでアドレスが連続しない複数の論理アドレスに対する小サイズのデータ書き込みとなる。
一般的に、このようなランダムな書き込みは、書き込み性能を低下させる。これを防止するために、コンテンツ管理情報ファイル毎にチャネル番号を割り当てて書き込むならば、多くのチャネル番号が必要となり、上述の課題が生じる。そこで、本実施の形態では、AVコンテンツのリアルタイム記録中にこのようなランダム書き込みを行ったとしても、リアルタイム記録が破綻しないようにするために、以下のような処理により適切な帯域制御を行っている。
<1.2:不揮発性記憶システムの動作>
次に、不揮発性記憶システム1000の動作について説明する。不揮発性記憶装置1は、アクセス装置2に装着され、アクセス装置2が発行するコマンドに応じた処理を実施する。アクセス装置2は、AVコンテンツを不揮発性記憶装置1に格納するために必要なコマンドを不揮発性記憶装置1に発行する。
(1.2.1:不揮発性記憶装置の動作)
まず、不揮発性記憶装置1の動作を説明する。
<<チャネル休止コマンド処理>>
図5は、不揮発性記憶装置1のチャネル休止コマンド処理の手順を示すフローチャートである。チャネル休止コマンドは、直前の書き込みコマンドがランダムなアドレスに対するものなどで比較的長い処理時間がかかっている場合に、該書き込みコマンド処理を一時的に休止させるために、アクセス装置2によって発行される。
まず、ステップS101における処理を説明する。コマンド処理部106は、アクセス装置IF部104を介してアクセス装置2からのチャネル休止コマンドを受信すると、直前の書き込みコマンドで受信したデータの書き込み状態を確認する。このとき、コマンド処理部106は、必要に応じて、チャネル管理部108やアドレス管理部107の情報を参照する。そして、書き込み状態が、(1)既に完了している、もしくは、(2)比較的短い所定の時間T内に完了する見込みであるならば、ステップS102の処理へ進む。一方、書き込み状態が、(3)上述の所定の時間T内に完了しない見込みであるならば、ステップS103の処理に進む。
次に、ステップS102における処理を説明する。コマンド処理部106は、直前の書き込みコマンドで受信したデータの書き込みを(所定の時間T内に)完了させ、処理を終了する。
次に、ステップS103における処理を説明する。コマンド処理部106が、直前の書き込みコマンドで受信したデータの書き込みを所定の時間T内に完了できないと判断した場合、休止制御部109は、RAM102内に記憶されている休止管理テーブルを参照し、直前の書き込みコマンドでアクセス装置2から指定されたチャネル番号の「消去済フラグ」を確認する。消去済みフラグがONであれば、ステップS105の処理へ、OFFであれば、ステップS104の処理に進む。
次に、ステップS104における処理を説明する。休止制御部109は、休止管理テーブルを参照し、「消去済フラグ」がOFFとなっている物理ブロックのアドレスを参照し、不揮発性メモリIF部105を介して該物理ブロックを物理消去し、「消去済フラグ」をONする。
本実施の形態では、データの記録処理中にアクセス装置2の電源遮断や不揮発性記憶装置1の抜去が発生した場合などの異常系においてのみ、消去済フラグがOFFとなる可能性があり、このような場合に、ステップS104の処理が実行される。
次に、ステップS105における処理を説明する。休止制御部109は、休止管理テーブルにおいて、直前の書き込みコマンドでアクセス装置2から指定されたチャネル番号の「消去済フラグ」をONからOFFに更新する。
次に、ステップS106における処理を説明する。休止制御部109は、直前の書き込みコマンドで受信したデータのうち、記録領域121に未書き込みのデータを退避領域122に書き込む。さらに、休止制御部109は、退避領域122への書き込みに応じて、休止管理テーブルの「退避データアドレス」及び「退避データサイズ」を更新する。
次に、ステップS107における処理を説明する。休止制御部109は、休止管理テーブルにおいて、直前の書き込みコマンドでアクセス装置2から指定されたチャネル番号の「退避フラグ」をOFFからONに更新し、処理を終了する。
なお、上述の所定の時間Tは、ステップS103〜S107の処理に要する時間を考慮して決定することが望ましい。ステップS103〜S107の処理は、直前の書き込みコマンドの処理を“時間が足りないので”一時的に休止させるための処理であり、これに要する時間よりも、書き込みを完了させるステップS102の処理時間の方が短いのであれば、休止させずに書き込みを完了させた方が効率的だからである。
所定の時間Tの具体的な値として、例えば、不揮発性メモリ12を構成するNANDフラッシュの書き込み単位である物理ページを数ページ書き込むのに要する時間程度(〜20ms程度)を設定してもよい。
<<チャネル復帰コマンド処理>>
図6は、不揮発性記憶装置1のチャネル復帰コマンド処理の手順を示すフローチャートである。チャネル復帰コマンドは、チャネル休止コマンドによって一時的に休止していた処理を再開させるために、アクセス装置2によって発行される。
まず、ステップS201における処理を説明する。コマンド処理部106は、アクセス装置IF部104を介してアクセス装置2からのチャネル復帰コマンドを受信すると、チャネル復帰コマンドを休止制御部109に通知する。休止制御部109は、休止管理テーブルを参照し、チャネル復帰コマンドで指定されたチャネル番号の退避フラグを参照する。退避フラグがONの場合は、ステップS202の処理に進み、OFFの場合は、何も処理をせずに終了する。
次に、ステップS202における処理を説明する。休止制御部109は、アクセス装置2からデータの書き込みを行っている期間中にチャネル休止コマンド(休止指示)を受付けて書き込みを休止した後、アクセス装置2からの指示により休止から復帰するチャネル復帰コマンド(復帰指示)を受付けると、休止管理テーブルを参照し、退避領域122に格納していたデータを読み出し、該データを記録領域121に書き込む。ここで、読み出し元(退避領域122)のデータの物理位置は、休止管理テーブルの「物理ブロックアドレス」を使用する。書き込み先(記録領域121)の判定には、休止管理テーブルの「退避データアドレス」及び「退避データサイズ」を使用する。
次に、ステップS203における処理を説明する。休止制御部109は、チャネル復帰コマンドで指定されたチャネル番号の退避フラグをONからOFFに更新する。
次に、ステップS204における処理を説明する。休止制御部109は、チャネル復帰コマンドで指定されたチャネル番号に紐付けられた退避領域122の物理ブロックを物理消去する。
次に、ステップS205における処理を説明する。休止制御部109は、チャネル復帰コマンドで指定されたチャネル番号の消去済フラグをOFFからONに更新し、処理を終了する。
なお、ステップS204及びS205において、退避領域122の物理ブロックを物理消去し、消去済フラグをOFFからONに更新することにより、チャネル休止コマンド処理のステップS104を省略することができ、速やかに休止状態に遷移することが可能となる。
<<チャネル状態取得コマンド処理>>
図7は、不揮発性記憶装置1のチャネル状態取得コマンド処理の手順を示すフローチャートである。チャネル状態取得コマンドは、不揮発性記憶装置1がアクセス装置2に装着された直後などに、各チャネルの状態を確認するために、アクセス装置2によって発行される。
まず、ステップS301における処理を説明する。コマンド処理部106は、アクセス装置IF部104を介してアクセス装置2からのチャネル状態取得コマンドを受信すると、チャネル状態取得コマンドを休止制御部109に通知する。休止制御部109は、休止管理テーブルを参照し、アクセス装置2に出力するための情報、すなわち、アクセス装置2からデータの書き込みを行っている期間中にチャネル休止コマンド(休止指示)を受付けて書き込みを休止した状態であるか否かをアクセス装置2が判断するための情報を生成する。例えば、休止制御部109は、チャネル番号毎の休止状態の判定結果を生成する。退避フラグONなら休止状態であり、退避フラグOFFなら休止状態ではないと判断とする判定結果が生成される。
次に、ステップS302における処理を説明する。休止制御部109は、ステップS301で生成した情報をアクセス装置IF部104経由でアクセス装置2に出力し、処理を終了する。
<<読み出しコマンド処理>>
図8は、不揮発性記憶装置1の読み出しコマンド処理の手順を示すフローチャートである。読み出しの基本的なルールとして、不揮発性記憶装置1は、退避領域122のデータを優先的に読み出す。これは、本実施の形態において、退避領域122に存在するデータは、常に記録領域121に存在するデータよりも新しいためである。
まず、ステップS401における処理を説明する。コマンド処理部106は、アクセス装置IF部104を介してアクセス装置2からの読み出しコマンドを受信すると、読み出しコマンドを休止制御部109に通知する。休止制御部109は、休止管理テーブルを参照し、すべてのチャネル番号に対して退避フラグがONであるものが1つでも存在するか否かを判定する。存在する場合は、ステップS402の処理へ、存在しない場合は、ステップS404の処理に進む。
次に、ステップS402における処理を説明する。休止制御部109は、休止管理テーブルを参照し、アクセス装置2が指定する読み出しアドレスが退避領域122に格納されているデータのアドレスと重複するか否かを判定する。この判定には「退避データアドレス」及び「退避データサイズ」を使用する。アドレスが重複する場合は、ステップS403の処理へ、重複しない場合は、ステップS404の処理に進む。
次に、ステップS403における処理を説明する。この場合、アクセス装置2が指定する読み出しアドレスの最新データは、退避領域122に存在するため、休止制御部109は、休止管理テーブルを参照して、アクセス装置2が指定したアドレスのデータを退避領域122から読み出し、アクセス装置IF部104経由でデータをアクセス装置2に出力し、処理を終了する。
次に、ステップS404における処理を説明する。この場合、アクセス装置2が指定する読み出しアドレスの最新データは、記録領域121に存在するため、アドレス管理部107は、アクセス装置2が指定したアドレスのデータを記録領域121から読み出し、アクセス装置IF部104経由でデータをアクセス装置2に出力し、処理を終了する。
<<書き込みコマンド処理>>
図9は、不揮発性記憶装置1の書き込みコマンド処理の手順を示すフローチャートである。本実施の形態においては、処理を簡素化するために退避領域122に存在するデータと、アドレスが重複するデータとの書き込みは、禁止する。アドレスが重複する場合には、チャネル復帰コマンドによって退避領域122のデータを記録領域121に反映させてから退避領域122のデータを削除し、その後改めて書き込みコマンドを発行するものとする。
まず、ステップS501における処理を説明する。コマンド処理部106は、アクセス装置IF部104を介してアクセス装置2からの書き込みコマンド(書き込み指示)を受信すると、書き込みコマンドを休止制御部109に通知する。休止制御部109は、アクセス装置2からの書き込みコマンドをコマンド処理部106から受け付けると、書き込みを行う前に、不揮発性メモリ12の一部を退避領域122として確保し、退避領域122を構成する物理ブロックを予め消去する。また、休止制御部109は、休止管理テーブルを参照し、すべてのチャネル番号に対して退避フラグがONであるものが1つでも存在するか否かを判定する。存在する場合は、ステップS502の処理へ、存在しない場合は、ステップS504の処理に進む。
次に、ステップS502における処理を説明する。休止制御部109は、休止管理テーブルを参照し、アクセス装置2が指定する書き込みアドレスが退避領域122に格納されているデータのアドレスと重複するか否かを判定する。この判定には「退避データアドレス」及び「退避データサイズ」を使用する。ステップS501の処理で複数の退避フラグがONであった場合には、休止制御部109は、全ての退避領域122に対して上記の判定を行い、いずれかのアドレスが重複する場合はステップS503の処理へ、全く重複しない場合はステップS504の処理に進む。
次に、ステップS503における処理を説明する。この場合、アクセス装置2が指定する書き込みアドレスのデータは、退避領域122に存在するため、休止制御部109は、アクセス装置IF部104経由でアクセス装置2にエラー通知し、処理を終了する。
次に、ステップS504における処理を説明する。この場合、アクセス装置2が指定する書き込みアドレスは、退避領域122に存在しないため、コマンド処理部106は、書き込み処理が継続可能と判断し、アクセス装置2から受信した書き込みデータを、不揮発性メモリIF部105を介して記録領域121に書き込む。このとき、コマンド処理部106は、必要に応じて、チャネル管理部108やアドレス管理部107の情報を参照する。書き込み完了後、処理を終了する。
(1.2.2:アクセス装置の動作)
次に、アクセス装置2の動作を説明する。
<<準備処理>>
不揮発性記憶装置1がアクセス装置2に装着されると、アクセス装置2は、不揮発性記憶装置1に対する記録処理や再生処理等を実施するための準備処理を開始する。図10は、本実施の形態における準備処理の手順を示すフローチャートである。
まず、ステップS601における処理を説明する。アクセス装置2の不揮発性記憶装置IF部24は、不揮発性記憶装置1が装着されたことを検出し、検出結果を不揮発性記憶装置アクセスドライバ部203に通知する。
このとき、不揮発性記憶装置アクセスドライバ部203は、不揮発性記憶装置1に対するドライバレベルでの初期化処理を行う。より具体的には、不揮発性記憶装置アクセスドライバ部203は、不揮発性記憶装置IF部24を介して、電源(電力)やクロックの供給を開始し、初期化を指示するコマンドを発行する。さらに、不揮発性記憶装置アクセスドライバ部203は、不揮発性記憶装置1に関する情報(例えば、記憶容量や対応バージョン番号など)を不揮発性記憶装置1から取得し、ファイルシステム部202に通知する。
次に、ステップS602における処理を説明する。ファイルシステム部202は、不揮発性記憶装置1が提供する記録領域121に格納されたファイルシステム管理情報(マスターブートレコード、パーティションテーブルなど)を読み出し、ファイルシステム部202が記録領域121を管理するために必要な情報をRAM22上に取得する。すなわち、ファイルシステムレベルでの初期化処理が実施される。
次に、ステップS603における処理を説明する。アプリケーション部201は、ファイルシステム部202を介して、不揮発性記憶装置1に格納されたコンテンツ管理情報ファイルを読み出し、アプリケーション部201が必要とする情報をRAM22上に取得する。すなわち、アプリケーションレベルでの初期化処理が実施される。
次に、ステップS604における処理を説明する。アプリケーション部201は、帯域管理部204に初期化処理を指示する。帯域管理部204は、不揮発性記憶装置IF部24経由で不揮発性記憶装置1に対してチャネル状態取得コマンドを発行し、休止制御部109からチャネル番号毎の休止状態の判定結果を取得する。
次に、ステップS605における判定を説明する。帯域管理部204は、チャネル番号毎の休止状態の判定結果から、休止状態のチャネルが1つでも存在するか否かを判定する。休止状態のチャネルが1つでも存在する場合(YESの場合)には、ステップS606の処理に進み、休止状態のチャネルが全く存在しない場合(NOの場合)には、処理を終了する。
次に、ステップS606における処理を説明する。帯域管理部204は、休止状態のチャネル番号を指定してチャネル復帰コマンドを発行し、チャネルの休止状態を解消する。その後、ステップS605の判定に戻る。
なお、後述する記録処理が正常に終了した場合には、ステップS605において、休止状態のチャネルは存在しない。記録処理中の電源遮断や不揮発性記憶装置1の抜去が発生した場合には、休止状態のチャネルが存在する可能性がある。この場合、準備処理にて退避領域122に書き込まれた各コンテンツ管理情報ファイルの更新データを記録領域121に反映させることで、電源遮断や不揮発性記憶装置1の抜去という異常状態からの復帰が可能となる。
<<記録処理>>
上記の準備処理後、アプリケーション部201は、記録処理を実施する。記録処理の開始のトリガーは様々である。一例として、ユーザから指定されたタイミングや、コンテンツデータ(AV入力データ)の記録が予定されていた時刻よりも一定時間だけ前となったタイミングなどがある。なお、記録処理中に新たなコンテンツデータの記録開始や記録終了を行うこともある。
図11は、本実施の形態における記録処理の手順を示すフローチャートである。まず、ステップS701の処理を説明する。アクセス装置2のアプリケーション部201は、記録予約情報やユーザからの入力情報などを参照して、新たなコンテンツデータの記録開始が必要であるか否かを判定する。記録開始が必要である場合(YESの場合)にはステップS702の処理へ、不要である場合(NOの場合)はステップS703の処理に進む。
次に、ステップS702の処理を説明する。アプリケーション部201は、新たなコンテンツデータを受信するための準備処理を行う。例えば、アプリケーション部201は、RAM22上に受信したコンテンツデータを格納するためのバッファを確保したり、符号処理部26及び暗号処理部27の初期設定をしたりする。
さらに、帯域管理部204は、新たなコンテンツデータを書き込むために帯域管理テーブルを更新する。具体的には、帯域管理部204は、新たなコンテンツデータに対するコンテンツ番号の登録、チャネル番号の割り当て、記録レートの設定、帯域情報の設定、コンテンツ終了フラグの設定(初期値はOFF)、休止フラグの設定(初期値はOFF)、などの処理を行う。
ここで、帯域情報の設定に関しては、記録中の全てのコンテンツデータに関して再設定を行う。例えば、記録処理中のコンテンツデータが1つも存在しない場合であれば、これから記録するコンテンツデータ(例えば、コンテンツ番号=C001)に対して全ての帯域を割り当てる。このとき、帯域管理テーブルにおける帯域情報は「3秒中3秒を割り当て」を意味する(3秒/3秒)に設定する。
この状態で、さらに新たなコンテンツデータ(例えば、コンテンツ番号=C002)を記録開始が必要となった場合には、同時に記録するコンテンツデータの記録レートの比率によって帯域情報を再設定する。このとき、記録レートが高いコンテンツデータには、より多くの帯域を割り当てるようにする。
ここで、帯域管理部204は、後述するように、コンテンツデータの記録終了後にも帯域情報を再設定しており、コンテンツデータの記録開始及び/又は記録終了の度にアクセス時間を再設定することが好ましい。この場合、記録すべきコンテンツデータの数に応じて適切なアクセス時間を設定することができ、複数のコンテンツデータを並列的に且つ高速に記録することができる。
また、上記の帯域情報の設定時に、帯域管理部204は、コンテンツデータの記録レートが高いほどアクセス時間が長くなるように、コンテンツデータ毎にアクセス時間を割り当てることが好ましい。この場合、各コンテンツデータの記録レートに応じて複数のコンテンツデータを並列的に且つ高速に記録することができる。
例えば、第1のコンテンツデータ(コンテンツ番号=C001)の記録レートが2MB/秒、第2のコンテンツデータ(コンテンツ番号=C002)の記録レートが4MB/秒ならば、前者の帯域情報を、「3秒中1秒を割り当て」を意味する「1秒/3秒」に設定し、後者の帯域情報を、「3秒中2秒を割り当て」を意味する「2秒/3秒」に設定する。この場合、所定単位時間を3秒とした場合、記録レートに応じて3秒を1秒と2秒とに時間分割し、第1のコンテンツデータ(コンテンツ番号=C001)が1秒間記録された後に、第2のコンテンツデータ(コンテンツ番号=C002)が2秒間記録され、これらの記録処理が単位時間毎に繰り返されることにより、2つのデータが時間分割多重されて並列的に記録される。
上記の新たなコンテンツデータを書き込むための準備処理が完了したら、ステップS703の処理に進む。
次に、ステップS703の処理を説明する。帯域管理部204は、帯域管理テーブルの「帯域情報」に基づき、不揮発性記憶装置1へのアクセス時間を時分割して各コンテンツデータの記録に割り当てる。帯域管理部204は、不揮発性記憶装置1に対して、今アクセス時間が割り当てられているコンテンツデータの「コンテンツ終了フラグ」を参照し、コンテンツ終了フラグがOFFであれば、ステップS704の処理へ、ONであれば、ステップS707の処理に進む。
次に、ステップS704の処理を説明する。アプリケーション部201は、今アクセス時間が割り当てられているコンテンツデータのコンテンツファイル書き込みが終了したか否かを判定する。書き込みが終了している場合(YESの場合)、ステップS706の処理に進み、終了していない場合(NOの場合)、ステップS705の処理に進む。
次に、ステップS705の処理を説明する。アプリケーション部201は、今アクセス時間が割り当てられているコンテンツデータに関して、RAM22上のバッファに蓄積されたコンテンツデータを、ファイルシステム部202を介してコンテンツファイルとして不揮発性記憶装置1に書き込む。書き込み時は、帯域管理テーブルで指定されたチャネル番号を使用する。その後、ステップS701の処理に戻る。
次に、ステップS706の処理を説明する。帯域管理部204は、今アクセス時間が割り当てられているコンテンツデータのコンテンツファイル書き込みが終了していることを、帯域管理テーブルに反映する。具体的には、帯域管理部204は、対応するコンテンツ終了フラグをONに設定する。その後、ステップS701の処理に戻る。
次に、ステップS707の処理を説明する。アプリケーション部201は、今アクセス時間が割り当てられているコンテンツデータに関する全てのコンテンツ管理情報ファイルの書き込みが完了したか否かを判定する。コンテンツ管理情報ファイルの書き込みが終了している場合(YESの場合)は、ステップS709の処理に進み、終了していない場合(NOの場合)は、ステップS708の処理に進む。
次に、ステップS708の処理を説明する。アプリケーション部201は、今アクセス時間が割り当てられているコンテンツデータに関するコンテンツ管理情報ファイルの書き込みを実施する。但し、書き込みに許容される時間(アクセス時間)は、帯域管理テーブルの「帯域情報」に依存する。例えば、帯域管理テーブルが図2の状態であり、コンテンツ番号=C001のコンテンツ管理情報ファイルの書き込みを行う場合には、ステップS708の処理で許容される帯域(書き込みに許容される時間)は1秒となる。コンテンツ管理情報ファイルの書き込みの手順の詳細は後述する。その後、ステップS701の処理に戻る。
次に、ステップS709の処理を説明する。アプリケーション部201は、今アクセス時間が割り当てられているコンテンツデータのコンテンツファイル及びコンテンツ管理情報ファイルの更新が完了したと判断し、該コンテンツデータの記録終了処理を行う。例えば、アプリケーション部201は、RAM22上に確保していた受信したコンテンツデータを格納するためのバッファを解放する。
さらに、帯域管理部204は、帯域管理テーブルから記録済みのコンテンツデータに関する情報を削除する。また、帯域情報の設定に関しては、記録中の全てのコンテンツデータに関して再設定を行う(ステップS702の処理と同様)。その後、ステップS710の処理に進む。
次に、ステップS710の処理を説明する。アプリケーション部201は、全てのコンテンツデータの記録が終了したか否かを判定する。記録が終了している場合(YESの場合)、記録処理を終了する。終了していない場合(NOの場合)、ステップS701の処理に戻る。
<<コンテンツ管理情報ファイル書き込み>>
次に、S708の処理の詳細について説明する。図12は、アクセス装置2のコンテンツ管理情報ファイル書き込みの手順を示すフローチャートである。
まず、ステップS801の処理を説明する。帯域管理部204は、帯域管理テーブルを参照し、今アクセス時間が割り当てられているコンテンツデータが休止状態であるか否かを判断する。帯域管理部204は、休止フラグがONである場合(YESの場合)、休止状態であると判断し、ステップS802の処理に進む。一方、休止フラグがOFFである場合(NOの場合)、帯域管理部204は、休止状態ではないと判断し、ステップS803の処理に進む。
次に、ステップS802の処理を説明する。帯域管理部204は、チャネルが休止状態であるため、不揮発性記憶装置IF部24を介して不揮発性記憶装置1にチャネル復帰コマンドを発行する。不揮発性記憶装置1がチャネル復帰コマンド処理を行うことで、該チャネルは休止状態から復帰する。その後、ステップS803の処理に進む。
次に、ステップS803の処理を説明する。帯域管理部204は、今割り当てられているアクセス時間が経過したか否かを判定することにより、帯域が終了したか否かを判定する。アクセス時間が経過した場合(YESの場合)は、帯域終了のための処理を行うためにステップS806に進み、経過していない場合(NOの場合)は、ステップS804の処理に進む。
次に、ステップS804の処理を説明する。アプリケーション部201は、未書き込みのコンテンツ管理情報ファイルのデータが存在するかどうかを判断する。当該データが存在する場合(YESの場合)は、ステップS805の処理に進み、存在しない場合(NOの場合)は、処理を終了する。
次に、ステップS805の処理を説明する。アプリケーション部201は、未書き込みのコンテンツ管理情報ファイルのデータをファイルシステム部202経由で不揮発性記憶装置1に書き込む。その後、ステップS803に戻る。書き込み中に帯域が終了した場合には、書き込み中のまま直ちにステップS803の処理に戻る。
次に、ステップS806の処理を説明する。アプリケーション部201は、コンテンツ管理情報ファイルのデータを書き込み中であるか否かを判断する。当該データが書き込み中である場合(YESの場合)、S807の処理に進み、書き込み中でない場合(NOの場合)、処理を終了する。
次に、ステップS807の処理を説明する。コンテンツ管理情報ファイルのデータを書き込み中である場合、帯域管理部204は、不揮発性記憶装置IF部24を介して不揮発性記憶装置1にチャネル休止コマンドを発行する。不揮発性記憶装置1がチャネル休止コマンド処理を行うことで、書き込み中の処理は、速やかに(所定の時間T以内に)休止状態となる。帯域管理部204は、帯域管理テーブルを更新し、休止させたチャネル番号の休止フラグをONに設定する。その後、処理を終了する。
<<記録処理における帯域の割り当て>>
図13は、本実施の形態に使用される記録処理における帯域の割り当ての一例を示した説明図である。
図13の例では、チャネル番号0(Ch.0)を使ったコンテンツファイルの書き込み(CD#0)後、これに関する1つ以上のコンテンツ管理情報ファイルの書き込み(MI#0)を行っている。また、チャネル番号0による書き込みと平行して、チャネル番号1(Ch.1)を使ったコンテンツファイルの書き込み(CD#1)後、これに関する1つ以上のコンテンツ管理情報ファイルの書き込み(MI#1)を行っている。
帯域管理テーブルにおいて、CD#0及びCD#1の書き込みに割り当てられた帯域情報はそれぞれ、(T0/(T0+T1))と(T1/(T0+T1))であるとする。すなわち、CD#0の書き込みは「(T0+T1)秒中(T0)秒割り当て」、CD#1の書き込みは「(T0+T1)秒中(T1)秒割り当て」である。
その後、CD#0の記録が終了した場合は、帯域管理テーブルにおいてCD#0に関するコンテンツ終了フラグがONに設定され、MI#0の書き込みが開始する。このとき、MI#0及びCD#1の書き込みに割り当てられた帯域情報はそれぞれ、(T0/(T0+T1))及び(T1/(T0+T1))のままである。従って、MI#0の書き込みが開始されても、CD#1を書き込むための帯域は、同じ大きさにて継続して確保されるため、CD#1のリアルタイム記録を継続することが可能となる。このとき、本実施の形態では、MI#0の書き込み時間を帯域(T0)に収めるために、図12のステップS807でチャネル休止コマンドを発行し、速やかに書き込みを休止する仕組みを導入している。
<1.3:まとめ>
以上のように、不揮発性記憶システム1000では、アクセス装置2が時分割多重により複数のコンテンツデータを不揮発性記憶装置1にリアルタイム記録する際に、コンテンツファイルの書き込みのために割り当てた帯域を利用して該コンテンツファイルに関連するコンテンツ管理情報ファイルの書き込みも行う。不揮発性記憶装置1が該コンテンツ管理情報ファイルの書き込みに長い時間を要する場合には、アクセス装置2がチャネル休止コマンドを発行することによって書き込みを休止し、帯域を制御する。
この結果、本実施の形態では、コンテンツ管理情報ファイル毎にチャネル番号を割り当てる必要がないため、使用するチャネル番号の増加を抑制しつつ、コンテンツファイル及び複数のコンテンツ管理情報ファイルを、書き込み性能の低下が発生しないように並列的に書き込むことが可能な、不揮発性記憶装置1、アクセス装置2、及び不揮発性記憶システム1000を提供することが可能となる。
なお、上記実施の形態で記載された数値は一例であり、他の値を使用してもよい。例えば、管理するチャネル番号の数などの値はすべて一例であり、上記実施の形態に記載した値に限定されるものではない。
(実施の形態2)
<2.1:不揮発性記憶システムの構成>
図14は、本発明の実施の形態2における不揮発性記憶システム1001の概略構成図である。図14に示すように、不揮発性記憶システム1001は、不揮発性記憶装置1aと、不揮発性記憶装置1aが装着されるアクセス装置2aとを含んで構成される。不揮発性記憶装置1aと、アクセス装置2aとは、バスB1により接続されて、双方向に通信を行うことができ、不揮発性記憶装置1aは、アクセス装置2aからの指示に応じてデータの読み出し及び/又は書き込みを行う。不揮発性記憶装置1aは、例えば、半導体メモリカードである。アクセス装置2aは、例えば、半導体メモリカードに動画コンテンツを記録するビデオレコーダである。
(2.1.1:アクセス装置の構成)
アクセス装置2aは、図14に示すように、CPU21と、RAM22と、ROM23と、不揮発性記憶装置インタフェース(IF)部24と、AV入力部25と、符号処理部26と、暗号処理部27と、を含む。アクセス装置2aの各機能部は、図14に示すように、バスBA1を介して接続されている。なお、アクセス装置2aは、アクセス装置2aの機能部の全部又は一部が直接接続される構成であってもよい。
CPU21は、RAM22及びROM23を用いて、アクセス装置2aの各種制御を行う。
RAM22は、所定のアドレスに対して、各種データの読み出し/書き込み処理を実行することができる。そして、RAM22に保持されているデータ等は、CPU21やアクセス装置2aの各機能部からアクセスすることができる。また、RAM22は、キャッシュ管理テーブル221を含む。
ROM23には、アクセス装置2aを制御するプログラムが格納されている。このプログラムは、RAM22にロードされ、CPU21により実行される。
不揮発性記憶装置IF部24は、不揮発性記憶装置1aとアクセス装置2aとの接続部である。制御信号及びデータは、不揮発性記憶装置IF部24を介して、アクセス装置2aと不揮発性記憶装置1aとの間で、送受信される。
AV入力部25は、外部から放送波などのAV入力データ(映像や音声のデータ、及びこれらに関連する制御データ)を受信する。AV入力部25により受信されたAV入力データは、ROM23に格納されたプログラムによる処理や、符号処理部26による符号処理や、暗号処理部27による暗号処理が施され、コンテンツデータが、コンテンツファイル及びコンテンツ管理情報ファイルとして不揮発性記憶装置1aに格納される。
ここで、コンテンツデータは、コンテンツを格納するコンテンツファイルと、コンテンツに付随する関連情報(例えば、名称、サムネイル画像、タイムサーチテーブル、ビットレート、再生時間、暗号化情報など)を格納する複数のコンテンツ管理情報ファイルとに分割して不揮発性記憶装置1aに格納されるデータである。
符号処理部26は、AV入力部25により受信されたAV入力データに対して、所定の符号方式による符号処理を実行する。
暗号処理部27は、AV入力部25により受信されたAV入力データ(例えば、暗号化が指示されているAV入力データ)、あるいは、符号処理部26により符号処理が実行されたAV入力データに対して、所定の暗号方式による暗号処理を行う。
ROM23は、図14に示すように、アプリケーション部201と、ファイルシステム部202と、不揮発性記憶装置アクセスドライバ部203と、を含む。なお、本実施の形態では、アプリケーション部201、ファイルシステム部202、及び、不揮発性記憶装置アクセスドライバ部203は、ROM23上において、ソフトウェアにより実現されるものを想定しているが、これに限定されることはなく、例えば、アプリケーション部201、ファイルシステム部202、及び、不揮発性記憶装置アクセスドライバ部203の全部又は一部は、ハードウェアで実現されるものであってもよい。
アプリケーション部201は、データの生成や電源の制御などアクセス装置2a全体の制御を行う。
ファイルシステム部202は、FATファイルシステム等のファイルシステムによりデータをファイルとして管理するための制御を行う。さらに、本実施の形態におけるファイルシステム部202は、キャッシュファイル管理部205を備えている。キャッシュファイル管理部205は、不揮発性記憶装置1aにコンテンツ管理情報ファイルを書き込む際に作成する管理情報キャッシュファイル(以降、MICFと呼称する)の管理、すなわち作成、更新、削除、参照などを行う。キャッシュファイル管理部205は、MICFの管理を行うために、RAM22内のキャッシュ管理テーブル221を使用する。
不揮発性記憶装置アクセスドライバ部203は、ファイルシステム部202からデータと共にサイズとアドレスとを渡され、指定されたサイズのデータを不揮発性記憶装置1aの記憶領域内における指定された位置に記録するなど、不揮発性記憶装置1aに対するコマンドやデータの送受信を制御する。
また、アプリケーション部201、ファイルシステム部202及び不揮発性記憶装置アクセスドライバ部203は、書き込み部として機能し、コンテンツファイルを不揮発性記憶装置1aに書き込む。ここで、アプリケーション部201及びファイルシステム部202が書き込み部の一例に相当し、キャッシュファイル管理部205が管理部の一例に相当する。
(2.1.2:不揮発性記憶装置の構成)
図14に示すように、不揮発性記憶装置1aは、メモリコントローラ11と、データを記憶する不揮発性メモリ12と、を含む。メモリコントローラ11と、不揮発性メモリ12とは、バスB2により接続されており、メモリコントローラ11は、不揮発性メモリ12と、バスB2を介して、データの送受信(データの読み出し/書き込みや、コマンド送信やレスポンスの受信等)を行い、不揮発性メモリ12の制御を行うことができる。
メモリコントローラ11は、不揮発性記憶装置1aの制御全般を行うモジュールであり、例えば、CPUなどを含むLSIとして構成される。不揮発性メモリ12は、例えば、1つ以上のNAND型フラッシュメモリで構成される。
メモリコントローラ11は、図14に示すように、CPU101と、RAM102と、ROM103と、アクセス装置IF部104と、不揮発性メモリIF部105と、を含む。メモリコントローラ11の各機能部は、図14に示すように、バスBC1を介して接続されている。なお、メモリコントローラ11は、メモリコントローラ11の機能部の全部又は一部が直接接続される構成であってもよい。
アクセス装置IF部104は、不揮発性記憶装置1aとアクセス装置2aとの接続部である。不揮発性記憶装置IF部24と同様に、制御信号及びデータは、アクセス装置IF部104を介して、アクセス装置2aと不揮発性記憶装置1aとの間で、送受信される。
ROM103には、不揮発性記憶装置1aを制御するプログラムが格納されている。このプログラムは、RAM102にロードされ、CPU101により実行される。
不揮発性メモリIF部105は、メモリコントローラ11と不揮発性メモリ12との接続部である。不揮発性メモリ12に対するコマンドやデータは、不揮発性メモリIF部105を介して、メモリコントローラ11と不揮発性メモリ12との間で、送受信される。
具体的には、ROM103は、図14に示すように、コマンド処理部106と、アドレス管理部107と、チャネル管理部108と、を含む。なお、本実施の形態では、コマンド処理部106、アドレス管理部107、及び、チャネル管理部108は、ROM103上において、ソフトウェアにより実現されるものを想定しているが、これに限定されることはなく、例えば、コマンド処理部106、アドレス管理部107、及び、チャネル管理部108の全部又は一部は、ハードウェアで実現されるものであってもよい。
コマンド処理部106は、アクセス装置IF部104を介して、アクセス装置2aから受信したコマンド及びコマンドに関するパラメータを解釈し、コマンドの処理を実行する機能部である。
アドレス管理部107は、不揮発性メモリ12のアドレス管理全般を行う。アドレス管理部107は、アクセス装置2aからアクセス可能なアドレス空間として不揮発性記憶装置1aが提供する論理アドレス空間における論理アドレスと物理アドレスとの対応付けを管理する。アドレス管理部107は、有効なデータが格納されておらずデータ書き込みに再利用可能なブロックであるフリーブロックの物理アドレスや、データ書き込みに利用不可能な不良ブロックの物理アドレスや、論理アドレスと物理アドレスとの変換テーブルが格納されたブロックの物理アドレスなども管理する。
チャネル管理部108は、アクセス装置2aがデータ書き込み時に指定するチャネル番号毎に書き込み先の物理ブロックを割り当て、その書き込み状態を管理する。これにより、アクセス装置2aが異なるチャネル番号の書き込みを並列的に行った場合であっても、書き込み性能の低下を防止する。
不揮発性メモリ12は、アクセス装置2aから書き込まれたデータや不揮発性記憶装置1aが内部的に使用するシステム情報などを格納する部分である。
(2.1.3:ディレクトリ及びファイル構成)
アクセス装置2aは、不揮発性記憶装置1aが提供するデータの記憶領域の管理をファイルシステムによって行う。本実施の形態では、半導体メモリカードで一般的に用いられているFATファイルシステム(FAT12、FAT16、FAT32、exFAT等)を使用するものとするが、UDFや独自のファイルシステム等の他のファイルシステムを使用してもよい。
図15は、アクセス装置2aのアプリケーション部201が不揮発性記憶装置1aにAVコンテンツを格納(記録)する際のディレクトリ及びファイル構成の一例を示している。
本実施の形態においては、ルートディレクトリの直下に「VIDEO」ディレクトリが生成され、「VIDEO」ディレクトリの直下に、「PRG1」、「PRG2」といった個々のAVコンテンツを格納するディレクトリが生成される。さらに、「PRG1」には映像・音声のストリームデータ本体であるコンテンツファイルの「ST1」ファイルと、前記コンテンツファイルのメタデータ等を格納したコンテンツ管理情報ファイルである「INFO1」、「INFO2」、…、「INFON」ファイルというN個のファイルとが生成される。「PRG2」ディレクトリにも「PRG1」と同様のファイル群が生成される。
さらに、「VIDEO」ディレクトリの直下には、「MNG」という全てのAVコンテンツデータに関するメタデータ等(例えば、AVコンテンツデータの総数、総再生時間、プレイリスト等)を格納するディレクトリが生成される。「MNG」ディレクトリの直下には、コンテンツ管理情報ファイルである「MNG1」、「MNG2」、…、「MNGM」ファイルというM個のファイルが生成される。
従って、アクセス装置2aは、1つのAVコンテンツを記録する際に、コンテンツファイル以外にも複数のコンテンツ管理情報ファイル(例えば、上記の「INFO1」や「MNG1」等に相当するファイル)の書き込みが必要である。一般的に、異なるファイルのデータは、異なる論理アドレスに格納されるため、これら複数のコンテンツ管理情報ファイルの更新は、ランダムでアドレスが連続しない複数の論理アドレスに対する小サイズのデータ書き込みとなる。
一般的に、このようなランダムな書き込みは、書き込み性能を低下させる。これを防止するために、コンテンツ管理情報ファイル毎にチャネル番号を割り当てて書き込むならば、多くのチャネル番号が必要となり、上述の課題が生じる。そこで、本実施の形態では、AVコンテンツのリアルタイム記録中にこのようなランダム書き込みを行わないようにするために、複数のコンテンツ管理情報ファイルの更新情報を一時的に格納するためのファイルであるMICFをルートディレクトリの直下に生成し、これを利用する。
(2.1.4:MICFのデータフォーマット)
図16は、MICFのデータフォーマットの一例を示している。本実施の形態では、MICFは、固定長のエントリと呼ばれる更新単位の集合で構成される。各エントリのサイズは、不揮発性記憶装置1aの不揮発性メモリ12を構成するNANDフラッシュの書き込み単位である物理ページに格納可能な、(アクセス装置2aから書き込む)データのサイズ、又はその整数倍とする。具体的には、エントリのサイズは、8kBとか、16kBとか、256kBといったサイズとする。
また、MICFのサイズは、NANDフラッシュの消去単位である物理ブロックに格納可能な、(アクセス装置2aから書き込む)データのサイズ、又はその整数倍とする。具体的には、MICFのサイズは、1MBとか4MBとか64MBといったサイズとする。
各エントリは、エントリ情報、キャッシュアロケーションテーブル(以降、CATと呼称する)、キャッシュデータ領域で構成される。キャッシュデータ領域は、コンテンツ管理情報ファイルの更新情報を格納する領域である。エントリ情報は、該エントリに関する情報を格納する領域である。エントリ情報は、少なくとも該エントリのキャッシュデータが書き込み済みであるか否かを判断するための情報である「書き込み済フラグ」を含んでいるものとする。
CATは、MICFに書き込まれたコンテンツ管理情報ファイルの更新情報を検索するためのテーブルである。CATは、複数のレコードで構成される。各レコードは、MICFに格納されたキャッシュデータの「論理セクタアドレス」(以降、LSAと呼称する)と、格納先エントリの「エントリ番号」とで構成される。各レコードのLSAは、重複しないものとする。
<2.2:キャッシュファイル管理部の動作>
続いて、MICFの管理を行うキャッシュファイル管理部205の動作を説明する。
(2.2.1:MICF作成処理)
図17は、本実施の形態におけるMICF作成処理の手順を示すフローチャートである。
まず、ステップS151における処理を説明する。キャッシュファイル管理部205は、作成するMICFのサイズを決定する。MICFのサイズは、アクセス装置2aの仕様等によって予め決められた固定サイズとしてもよい。また、不揮発性記憶装置1aの記憶容量などを参考にして決定してもよい。
そして、キャッシュファイル管理部205は、不揮発性記憶装置1aから読み出したファイルシステム管理情報からMICFを作成するための空き領域を検索する。空き領域は、不揮発性記憶装置1aの不揮発性メモリ12を構成するNANDフラッシュの消去単位である物理ブロックの単位、又はその整数倍の単位で連続アドレスとなる領域とし、且つその開始アドレスは、前記単位でアライメントされたアドレスとなるようにする。すなわち、キャッシュファイル管理部205は、コンテンツファイルの書き込み開始前に、MICFのファイルデータを書き込む領域として、固定領域且つ連続なアドレス空間を確保する。
例えば、物理ブロックが4MB単位(セクタ数が2000h:16進数)の場合に、キャッシュファイル管理部205は、セクタアドレス10000h(16進数)からセクタアドレス1FFFFh(16進数)までの32MBの領域を空き領域として確保する。
このような領域を確保するのは、MICFのデータを先頭から順に連続的に書き込んだときに、不揮発性記憶装置1aにおいて、書き込みデータが物理ブロックに対して連続的に書き込まれるようにするためである。なぜなら、物理ブロックへの書き込みは、先頭から順に連続的に書き込んだときに最も効率的になるからである。
次に、ステップS152の処理を説明する。キャッシュファイル管理部205は、ステップS151で検索した空き領域をファイルデータの格納領域とするMICFを作成する。具体的には、キャッシュファイル管理部205は、MICFのファイルシステム管理情報(FAT、Bitmap、ファイルエントリ情報など)を不揮発性記憶装置1aに書き込む。
最後に、ステップS153の処理を説明する。キャッシュファイル管理部205は、MICFの先頭から順に連続的にMICFの初期データを書き込む。初期データとしては、各エントリの書き込み済フラグを全てOFF(未書き込み)に設定する。それ以外の領域には、無効なデータを書き込む。図18は、MICF作成処理後のMICFの状態の一例を示す図である。
例えば、1番目のエントリ(エントリ♯1)では、書き込み済フラグがOFFに設定され、1番目のレコード(レコード♯1)のLSA及びエントリ番号には、無効なデータが書き込まれ、以下同様に、すべてのレコードのLSA及びエントリ番号にも、無効なデータが書き込まれ、また、キャッシュデータに、無効なデータが書き込まれている。2番目のエントリ(エントリ♯2)以降も上記と同様である。
なお、本実施の形態におけるMICF作成処理で作成したMICFは、以降の処理でサイズ変更されないものとする。MICFのサイズ変更を行うと、MICFに関するファイルシステム管理情報(FAT、Bitmap、ファイルエントリ情報など)の更新が発生し、不揮発性記憶装置1aに対してランダムなアドレスの書き込みが必要となるためである。
(2.2.2:管理情報書き込み処理)
まず、MICFへの書き込みの基本的なルールとして、MICFの先頭から順にエントリ単位で書き込みを行うものとする。この書き込み方法と、上記のMICF作成処理時のファイルデータ格納領域の確保方法との組合せにより、不揮発性記憶装置1aにおいて書き込みデータが物理ブロックに対して連続的に書き込まれることになる。
各エントリの書き込み済フラグは、MICF作成処理の直後では、全てOFF(未書き込み)となっており、新たなエントリが書き込まれる度に、先頭エントリから順にON(書き込み済)となっていく。また、エントリのCATは、エントリの書き込みの度に最新情報に差し替えていく。従って、最後に書き込まれたエントリ、すなわち、先頭から検索して最後に書き込み済フラグがON(書き込み済)となっているエントリのCATが、最新情報となる。書き込み済フラグが全てOFF(未書き込み)の場合には、CATの最新情報は、初期値(有効なレコードが1つも存在しない状態)となる。
図19は、本実施の形態におけるMICFを利用した管理情報書き込み処理の手順を示すフローチャートである。管理情報書き込み処理は、本フローチャートに従って1セクタ単位で実行される。本処理の実行前に、ファイルシステム部202は、コンテンツ管理情報ファイルのファイルシステム管理情報を参照するなどして、書き込み対象の論理セクタアドレス(LSA_W)及びデータを保持しているものとする。
まず、ステップS251の処理を説明する。ファイルシステム部202は、アプリケーション部201からの指示に基づき、MICFを使用した書き込みを行うか否かを判定する。アプリケーション部201は、コンテンツデータのリアルタイム記録中などの書き込み時間に関する制約が厳しい条件下では、MICFを使用した書き込みを指定する。MICFを使用しない場合(NOの場合)は、ステップS252の処理を行い、その後、処理を終了する。MICFを使用する場合(YESの場合)は、ステップS253〜S255の処理を行い、その後、処理を終了する。
次に、ステップS252の処理を説明する。MICFを使用しない場合、ファイルシステム部202は、不揮発性記憶装置1aに対してデータを書き込む。ファイルシステム部202は、書き込み先アドレスとして、論理セクタアドレス(LSA_W)そのものを指定する。
次に、ステップS253の処理を説明する。MICFを使用する場合、ファイルシステム部202は、書き込み対象の論理セクタアドレス(LSA_W)及びデータをキャッシュファイル管理部205に通知する。
キャッシュファイル管理部205は、不揮発性記憶装置1aに格納されたMICFの最新のCATをキャッシュ管理テーブル221に読み出す。既にキャッシュ管理テーブル221に最新のCATが存在している場合は、この読み出し処理をスキップしてもよい。
次に、ステップS254の処理を説明する。キャッシュファイル管理部205は、キャッシュ管理テーブル221のCATを、書き込み対象にあわせて更新する。具体的には、キャッシュファイル管理部205は、キャッシュ管理テーブル221のCATの各レコードを参照して、同じLSA(LSA_W)が存在するか否かを判定する。同じLSAがなければ、無効なレコードの1つを選択し、LSAをLSA_W、エントリ番号をこれから書き込むエントリ(すなわち、先頭の未書き込みエントリ)の番号に更新する。同じLSAがあれば、そのレコードのエントリ番号をこれから書き込むエントリ(すなわち、先頭の未書き込みエントリ)の番号に更新する。この処理で、CATに同じLSAが重複して登録されないことになる。
最後に、ステップS255の処理を説明する。キャッシュファイル管理部205は、不揮発性記憶装置1aのMICFの先頭未書き込みエントリの書き込みを行う。このとき、書き込み済フラグはON、CATはステップS254で更新した値、キャッシュデータは書き込み対象のデータとなる。なお、エントリの書き込みは、エントリの先頭から順に連続に書き込むものとする。
図20は、本実施の形態におけるMICF作成処理後に管理情報書き込み処理を1回実施した後のMICFの状態の一例を示す図である。1番目のエントリでは、書き込み済フラグがONに設定され、CATの1番目のレコードのLSAに32が書き込まれ、エントリ番号に1が書き込まれ、LAS32用の管理情報(コンテンツ管理情報ファイルのデータ)がキャッシュデータとして書き込まれている。
図21は、本実施の形態におけるMICF作成処理後に管理情報書き込み処理を2回実施した後のMICFの状態の一例を示す図である。2番目のエントリでは、書き込み済フラグがONに設定され、CATの2番目のレコードのLSAに24が書き込まれ、エントリ番号に2が書き込まれ、LAS24用の管理情報がキャッシュデータとして書き込まれている。このとき、1番目のエントリのキャッシュデータも、引続きCATに登録されている。
図22は、本実施の形態におけるMICF作成処理後に管理情報書き込み処理を3回実施した後のMICFの状態の一例を示す図である。3番目のエントリでは、書き込み済フラグがONに設定され、CATの1番目のレコードのLSAに32が書き込まれ、エントリ番号に3が書き込まれ、LAS32用の管理情報がキャッシュデータとして書き込まれている。このとき、1番目のエントリのキャッシュデータは、CATから削除されており、3番目のエントリで差し替えられた状態となっている。また、2番目のエントリのキャッシュデータは、引続きCATに登録されている。
(2.2.3:管理情報読み出し処理)
まず、管理情報読み出しの基本的なルールとして、MICFのデータを優先的に読み出す。これは、以下の理由による。
MICFは、コンテンツデータのリアルタイム記録中などの書き込み時間に関する制約が厳しい条件下において、一時的に不揮発性記憶装置1aにコンテンツ管理情報ファイルを書き込む手段として使用されることを想定している。そのため、MICFに書き込まれた管理情報は、リアルタイム記録の終了後などの時間的制約が緩和された時点で、最終的に本来のコンテンツ管理情報ファイルに反映(コピー)され、その後、削除される。従って、MICFには、本来のコンテンツ管理情報ファイルよりも新しいもしくは同一データが、常に格納されていることになる。読み出しでは、常に新しいデータを出力するために、MICFのデータを優先的に読み出すものとする。
図23は、本実施の形態におけるMICFを利用した管理情報読み出し処理の手順を示すフローチャートである。管理情報読み出し処理は、本フローチャートに従って1セクタ単位で実行される。本処理の実行前に、ファイルシステム部202は、コンテンツ管理情報ファイルのファイルシステム管理情報を参照するなどして、読み出し対象の論理セクタアドレス(LSA_R)及びデータを保持しているものとする。
まず、ステップS351の処理を説明する。ファイルシステム部202は、読み出し対象の論理セクタアドレス(LSA_R)をキャッシュファイル管理部205に通知する。キャッシュファイル管理部205は、不揮発性記憶装置1aに格納されたMICFの最新のCATをキャッシュ管理テーブル221に読み出す。既にキャッシュ管理テーブル221に最新のCATが存在している場合は、この読み出し処理をスキップしてもよい。
次に、ステップS352の処理を説明する。キャッシュファイル管理部205は、キャッシュ管理テーブル221のCATを参照し、読み出し対象の論理セクタアドレス(LSA_R)が登録されているか否かを判定する。読み出し対象の論理セクタアドレスの登録がなければ(NOの場合)、ステップS353の処理を行い、その後、処理を終了する。登録があれば(YESの場合)、ステップS354、S355の処理を行い、その後、処理を終了する。
次に、ステップS353の処理を説明する。読み出し対象の論理セクタアドレスの登録がない場合、キャッシュファイル管理部205は、ファイルシステム部202に対してMICF上に読み出し対象が存在しないことを通知する。ファイルシステム部202は、読み出し対象の論理セクタアドレス(LSA_R)を直接指定して不揮発性記憶装置1aからデータを読み出す。
次に、ステップS354の処理を説明する。読み出し対象の論理セクタアドレスの登録がある場合、キャッシュファイル管理部205は、キャッシュ管理テーブル221のCATを参照し、読み出し対象の論理セクタアドレスのエントリ番号を取得する。
最後に、ステップS355の処理を説明する。キャッシュファイル管理部205は、上記のエントリ番号のエントリのキャッシュデータを読み出して、ファイルシステム部202に通知する。
(2.2.4:キャッシュ管理テーブルに格納する情報)
本実施の形態において、上記の各処理により、キャッシュ管理テーブル221には、少なくともMICFに関する最新のCATが格納されている。これにより、管理情報の書き込みや読み出しの度に、不揮発性記憶装置1aからの読み出しを行う必要がなくなるので処理を高速化することが可能である。同様の理由から、キャッシュ管理テーブル221には、MICFの次書き込みエントリの位置に関する情報(エントリ番号など)を格納し、MICFへの書き込み毎に更新するものとする。
<2.3:アクセス装置の動作>
続いて、アクセス装置2aの全体的な動作を説明する。
(2.3.1:準備処理)
不揮発性記憶装置1aがアクセス装置2aに装着されると、アクセス装置2aは、不揮発性記憶装置1aに対する記録処理や再生処理等を実施するための準備処理を開始する。図24は、本実施の形態における準備処理の手順を示すフローチャートである。
まず、ステップS451の処理を説明する。アクセス装置2aの不揮発性記憶装置IF部24は、不揮発性記憶装置1aが装着されたことを検出し、検出結果を不揮発性記憶装置アクセスドライバ部203に通知する。
このとき、不揮発性記憶装置アクセスドライバ部203は、不揮発性記憶装置1aに対するドライバレベルでの初期化処理を行う。より具体的には、不揮発性記憶装置アクセスドライバ部203は、不揮発性記憶装置IF部24を介して、電源(電力)やクロックの供給を開始し、初期化を指示するコマンドを発行する。さらに、不揮発性記憶装置アクセスドライバ部203は、不揮発性記憶装置1aに関する情報(例えば、記憶容量や対応バージョン番号など)を不揮発性記憶装置1aから取得し、ファイルシステム部202に通知する。
次に、ステップS452の処理を説明する。ファイルシステム部202は、不揮発性記憶装置1aが提供する記憶領域に格納されたファイルシステム管理情報(マスターブートレコード、パーティションテーブルなど)を読み出し、ファイルシステム部202が記憶領域を管理するために必要な情報をRAM22上に取得する。すなわち、ファイルシステムレベルでの初期化処理が実施される。
次に、ステップS453の処理を説明する。ファイルシステム部202は、キャッシュファイル管理部205に初期化処理を指示する。キャッシュファイル管理部205は、MICFが不揮発性記憶装置1aに存在するか否かを判定する。MICFが存在しなければ(NOの場合)、ステップS456の処理に移る。MICFが存在すれば(YESの場合)、ステップS454、S455の処理を行い、S456の処理に移る。
次に、ステップS454の処理を説明する。MICFが存在する場合、キャッシュファイル管理部205は、不揮発性記憶装置1aに格納されたMICFの最新のCATをキャッシュ管理テーブル221に読み出す。そして、キャッシュファイル管理部205は、該CATに登録されているレコードを参照し、有効なLSAが格納されているならば、該レコードのエントリ番号で指定されるエントリのキャッシュデータを、該LSAのデータとして不揮発性記憶装置1aに書き込む。キャッシュファイル管理部205は、これを全てのレコードに対して実施する。本処理によって、MICFに格納されていたデータは、コンテンツ管理情報ファイルにコピーされることになる。
次に、ステップS455の処理を説明する。キャッシュファイル管理部205は、MICFを削除する。
最後に、ステップS456の処理を説明する。アプリケーション部201は、ファイルシステム部202を介して、不揮発性記憶装置1aに格納されたコンテンツ管理情報ファイルを読み出し、アプリケーション部201が必要とする情報をRAM22上に取得する。すなわち、アプリケーションレベルでの初期化処理が実施され、その後、処理が完了する。
なお、後述する記録処理が正常に終了した場合には、ステップS453において、MICFは存在しない。記録処理中の電源遮断や不揮発性記憶装置1aの抜去が発生した場合には、MICFが存在する可能性がある。
この場合、上記の準備処理により、キャッシュファイル管理部205は、不揮発性記憶装置1aの装着後に、MICFが存在するか否かを確認し、MICFが存在する場合には、MICFに書き込まれた更新データを複数のコンテンツ管理情報ファイルにコピーする。従って、MICFに書き込まれた各コンテンツ管理情報ファイルの更新データを各コンテンツ管理情報ファイルに反映させることができるので、電源遮断や不揮発性記憶装置1aの抜去という異常状態からの復帰が可能となる。
(2.3.2:記録処理)
上記の準備処理後、アプリケーション部201は、記録処理を実施する。記録処理の開始のトリガーは様々である。一例として、ユーザから指定されたタイミングや、コンテンツデータ(AV入力データ)の記録が予定されていた時刻よりも一定時間だけ前となったタイミングなどがある。なお、記録処理中に新たなコンテンツデータの記録開始や記録終了を行うこともある。
図25は、本実施の形態における記録処理の手順を示すフローチャートである。まず、ステップS551の処理を説明する。アクセス装置2aのアプリケーション部201は、ファイルシステム部202を介して、キャッシュファイル管理部205にMICFの新規作成を指示する。キャッシュファイル管理部205は、図17で示したフローチャートに従い、MICF作成処理を実施する。
次に、ステップS552の処理を説明する。ファイルシステム部202は、キャッシュファイル管理部205が新規作成したMICFを不揮発性記憶装置1aに書き込むためのチャネル番号を割り当てる。
次に、ステップS553の処理を説明する。アプリケーション部201は、記録すべき新たなコンテンツデータが発生したか否かを判定する。該データが発生した場合(YESの場合)には、ステップS554の処理後、ステップS555の判定に移り、発生していない場合(NOの場合)は、ステップS555の判定に移る。
次に、ステップS554の処理を説明する。アプリケーション部201は、新たなコンテンツデータを受信するための準備を行う。例えば、アプリケーション部201は、RAM22上に受信したコンテンツデータを一時的に保持するためのバッファを確保する。さらに、アプリケーション部201は、該コンテンツデータをコンテンツファイルとして不揮発性記憶装置1aに書き込むためのチャネル番号の割り当てをファイルシステム部202に指示する。その後、アプリケーション部201は、AV入力部25や符号処理部26や暗号処理部27を制御して、コンテンツファイルのデータをRAM22上のバッファに格納する処理を開始する。
次に、ステップS555の処理を説明する。アプリケーション部201は、RAM22上のバッファに所定量のコンテンツデータが格納されたか否かを判定することにより、コンテンツデータの受信が完了したか否かを判定する。所定量のコンテンツデータが格納されていれば(YESの場合)、ステップS556の処理後、ステップS557の判定に移り、そうでなければ(NOの場合)、ステップS557の判定に移る。
次に、ステップS556の処理を説明する。アクセス装置2aは、不揮発性記憶装置1aに対して、RAM22上のバッファに格納されたコンテンツファイルのデータを書き込む。書き込みは、ステップS554で割り当てたチャネル番号を指定し、連続的なアドレスに対して実施する。これにより、コンテンツファイルを連続アドレスで不揮発性記憶装置1aに書き込むことができるので、他のコンテンツファイルのデータやMICFのデータと並列的に書き込んだとしても書き込み性能が低下することを防止する。
次に、ステップS557の処理を説明する。アプリケーション部201は、記録中のコンテンツデータが終了したか否かを判定する。該データが終了した場合には(YESの場合)、ステップS558の処理に移り、終了していない場合(NOの場合)は、ステップS553の判定に移る。
次に、ステップS558の処理を説明する。アプリケーション部201は、記録が終了したコンテンツデータに関して各コンテンツ管理情報ファイルの更新データをRAM22上に生成する。
次に、ステップS559の処理を説明する。アプリケーション部201は、ファイルシステム部202及びキャッシュファイル管理部205を介して、図19で示したフローチャートに従って、各コンテンツ管理情報ファイルの更新データをMICFに書き込む。書き込みは、ステップS552で割り当てたチャネル番号を指定し、図19で説明した書き込み手順で実施する。これにより、各コンテンツ管理情報ファイルの更新データを連続アドレスでMICFに書き込むことができるので、他のコンテンツファイルのデータと並列的に書き込んだとしても、書き込み性能が低下することを防止する。
次に、ステップS560の処理を説明する。アプリケーション部201は、記録中の全てのコンテンツデータが終了したか否かを判定する。全てのコンテンツデータが終了した場合(YESの場合)には、ステップS561の処理に移り、終了していない場合(NOの場合)は、ステップS553の判定に移る。
次に、ステップS561の処理を説明する。全てのコンテンツデータが終了した場合、アプリケーション部201からの指示により、キャッシュファイル管理部205は、不揮発性記憶装置1aに格納されたMICFの最新のCATをキャッシュ管理テーブル221に読み出す。既にキャッシュ管理テーブル221に最新のCATが存在している場合は、この読み出し処理をスキップしてもよい。
次に、キャッシュファイル管理部205は、キャッシュ管理テーブル221のCATに登録されているレコードを参照し、有効なLSAが格納されているならば、そのレコードのエントリ番号で指定されるエントリのキャッシュデータを、該LSAのデータとして不揮発性記憶装置1aに書き込む。この書き込みは、ステップS552で割り当てたチャネル番号を指定し、これを全てのレコードに対して実施する。
本処理によって、MICFに格納されていたデータは、各コンテンツ管理情報ファイルにコピーされることになる。本処理では、ランダムな論理アドレスに対する書き込みが発生するために、書き込み性能が低下するが、全てのコンテンツデータの記録が既に終了しているため、本処理によるリアルタイム記録への影響はない。
最後に、ステップS562の処理を説明する。キャッシュファイル管理部205は、MICFを削除し、アプリケーション部201は、記録処理を終了する。
<2.4:まとめ>
以上のように、不揮発性記憶システム1001では、アクセス装置2aが時分割多重により複数のコンテンツデータを不揮発性記憶装置1aにリアルタイム記録する際に、全てのコンテンツ管理情報ファイルの更新データをMICFに書き込む。そして、全てのコンテンツデータのリアルタイム記録が終了した後、MICFに格納した内容を各コンテンツ管理情報ファイルに反映させて、MICFを削除する。
この結果、本実施の形態では、コンテンツ管理情報ファイル毎にチャネル番号を割り当てる必要がないため、使用するチャネル番号の増加を抑制しつつ、コンテンツファイル及び複数のコンテンツ管理情報ファイルを、書き込み性能の低下が発生しないように並列的に書き込むことが可能な、不揮発性記憶装置1a、アクセス装置2a、及び不揮発性記憶システム1001を提供することが可能となる。
なお、上記実施の形態で記載された数値は一例であり、他の値を使用してもよい。例えば、エントリのサイズなどの値はすべて一例であり、上記実施の形態に記載した値に限定されるものではない。また、以下のように変更することも可能である。
(1)上記実施の形態では、図16に示すようなデータフォーマットを使用し、各エントリに1つのキャッシュデータを格納できるものとしたが、各エントリに複数のキャッシュデータを格納できるようにしてもよい。
例えば、図26に示すようなデータフォーマットとしてもよい。図26では、1つのエントリに対して複数のキャッシュデータ(#1から#NまでのN個)を格納可能であり、CATの各レコードには、LSAに対するキャッシュデータの位置を特定するために、エントリ番号に加えてキャッシュ番号(#1から#Nまでの何れか)を追加している。この結果、一つのエントリに、異なるLSAに対する複数の更新データを書き込むことができる。
これにより、複数のコンテンツ管理情報ファイルの更新データを1つのエントリ書き込みで実施することができるため、不揮発性記憶システム1001の実装によっては、MICFの書き込み効率を向上することができる。また、複数のコンテンツ管理情報ファイルの更新を一括して有効にするか、無効にするかの何れかの状態にしたい場合にも有効である。
(2)上記実施の形態では、図16に示すようなデータフォーマットを使用し、エントリ情報として、書き込み済フラグを格納できるものとしたが、図27に示すように、エントリ情報として、一連のエントリ書き込みにおける最後のエントリに、該エントリよりも前のアドレスに格納されたエントリを一括して有効化するための「整合性フラグ」を格納できるようにしてもよい。
この場合、図25に示す記録処理において、ステップS559では、MICFに複数のエントリを書き込む場合には、一連のエントリ書き込みにおける最後のエントリ書き込みのみ「整合性フラグ」をONとして書き込み、それ以外はOFFとして書き込むものとする。
そして、図24に示す準備処理において、ステップS454の処理では、キャッシュファイル管理部205は、「書き込み済フラグ」及び「整合性フラグ」が共にONであるエントリのうち最も後方に存在するエントリのCATを該MICFの最新のCATとして読み出すものとする。例えば、MICFが図28に示す状態であれば、7番目のエントリのCATを読み出し、図29に示す状態であれば、2番目のエントリのCATを読み出す。
上記のように、整合性フラグを使用することで、複数のコンテンツ管理情報ファイルの更新を一括して有効にするか、無効にするかの何れかの状態にすることが可能である。
(3)上記実施の形態では、図16に示すようなデータフォーマットを使用し、各エントリを固定長としたが、図30に示すように、各エントリを可変長としてもよい。この場合、エントリ情報に該エントリのサイズを格納することで、各エントリの開始位置を検索することが可能となる。また、固定長では、検索が容易となり、可変長では、エントリ内の領域の利用効率を高めるというメリットがあるため、不揮発性記憶装置1aの要件に応じて、固定長又は可変長を選択することが望ましい。
(4)上記実施の形態では、MICFをファイルシステム部202に含まれるキャッシュファイル管理部205が管理するものとしたが、キャッシュファイル管理部205をアプリケーション部201に含まれるように構成してもよい。
このとき、CATのレコードは、図16に示すような「LSA」と「エントリ番号」との組で構成するのではなく、図31に示すように、「各管理情報ファイルに含まれる管理情報を識別するID(識別情報)(管理情報ID)」と「エントリ番号」との組で構成するようにする。そして、各エントリのキャッシュデータ領域には、「管理情報ID」に対応する「管理情報データ」が格納される。このような構成でも、上記実施の形態と同様の効果が期待できる。
(5)上記実施の形態では、記録処理においてMICFを用いて管理情報書き込み処理を実施するタイミングをコンテンツデータの記録が終了したタイミングとしていたが、これに限定されない。
例えば、記録中のコンテンツデータに対する暫定的な管理情報書き込み処理を実施してもよい。これにより、管理情報書き込み処理の回数は増加するが、電源遮断や不揮発性記憶装置1aの抜去が発生したときに、アクセス装置2aが記録中のコンテンツデータを認識することが可能となる。
(他の実施の形態)
なお、本発明について、上記の各実施の形態に基づいて説明してきたが、本発明は上記の各実施の形態に限定されないのはもちろんである。本発明の趣旨を逸脱しない範囲で実施変更することができる。また、以下のように変更することも可能である。
(1)上記の各実施の形態における、アクセス装置、不揮発性記憶装置、コントローラ、及び不揮発性記憶システムにおいて、各機能ブロックは、LSIなどの半導体装置により個別に1チップ化されてもよいし、一部又は全部を含むように1チップ化されてもよい。
なお、ここでは、LSIとしたが、集積度の違いにより、IC(Integrated Circuit)、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法は、LSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。また、LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサ(Reconfigurable Processor)を利用してもよい。
さらには、半導体技術の進歩又は派生する別技術により、LSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。例えば、バイオ技術の適用等が可能性としてありえる。
(2)上記の各実施の形態における各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェア及びハードウェアの混在処理により実現してもよい。なお、上記の各実施の形態に係るアクセス装置、不揮発性記憶装置、及び不揮発性記憶システムをハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記の各実施の形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
また、上記の各実施の形態における処理方法の実行順序は、必ずしも、上記の各実施の形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
(3)上記の各実施の形態における不揮発性記憶装置は、半導体メモリカードのような着脱可能な記憶装置として説明したが、アクセス装置の基板に組み込みできる形式の情報記憶モジュールとして実現してもよい。