以下、本発明の実施の形態について、図面を参照して説明する。
(実施の形態1)
はじめに、図1を参照し、本発明の一実施形態にかかるデータ記録装置および半導体メモリパック装置の構成について説明する。図1において、110はデータの記録を指示するデータ記録装置、120はデータが記録される半導体メモリパック装置である。データ記録装置110は、半導体メモリパック装置120にデータを記録する装置であって、例えば、パーソナルコンピュータ、ビデオカメラ、ディスクレコーダ、または、ディジタルカメラ等であるが、これらにのみ限定されない。データ記録装置110は、ハードウェアとしては、CPU111、主記憶112、カードコネクタ113などを備えている。CPU111は、演算処理や装置全体の動作制御を行う。主記憶112は、半導体メモリパック装置120に記録するデータや、データ記録装置110の動作を制御するソフトウエア、CPU111による演算処理結果を一時的に記憶する。カードコネクタ113は、データ記録装置110と半導体メモリパック装置120とを接続するためのコネクタである。
次に、図13を用いて、本実施形態のデータ記録装置110の機能的な構成について説明する。図13は、データ記録装置110の機能的な内部構成を示すブロック図である。図13において、1102は制御部、1103はメモリ、1104は入力データI/F、1105はエンコーダ制御部、1106はエンコーダ、1107はバッファ制御部、1108はバッファ、1109はファイル管理部、1110はメディアI/Fを表している。
制御部1102は、図1のCPU111に対応し、図1の主記憶112に対応するメモリ1103を用いて、データ記録装置110の全体の制御を行う。メディアI/F1110は、半導体メモリパック装置120とのインタフェースであり、図1のカードコネクタ113に対応している。
入力データI/F1104は、外部から入力されたデータを受け取る。エンコーダ制御部1105は、入力データI/F1104から入力されたデータを受け取り、エンコーダ1106を制御してそのデータのエンコード処理を行い、バッファ制御部1107にエンコードされたデータを送る。また、エンコーダ制御部1105は、エンコーダ1106からの情報を取得して、制御部1102に伝えることもできる。エンコーダ1106からの情報とは、例えばビデオデータをMPEG(Moving Pictures coding Experts Group)にエンコードする場合、1GOP(Group Of Pictures)のエンコードを完了したという情報などである。
バッファ制御部1107は、エンコーダ制御部1105から受け取った、エンコードされたデータを、データの種類毎にバッファ1108内の別の領域に格納する。また、バッファ制御部1107は、バッファ1108に蓄えられたデータの量を監視しており、所定量に達した時には制御部1102に通知する。制御部1102はその通知を受け取ると、ファイル管理部1109にデータ記録要求を出す。
ファイル管理部1109は、一般的にはオペレーティングシステムの機能の一つとして「ファイルシステム」と称されているものであり、半導体メモリパック装置120に記録されているファイルの管理を行う。ファイル管理部1109は、半導体メモリパック装置120からメディアI/F1110を介して、ファイルシステム管理情報を読み込み、メモリ1103に格納する。制御部1102からのデータ記録要求を受けると、ファイル管理部1109は、ファイルシステム管理情報を参照して空き領域を探し、見つかればその領域にデータを記録するように、半導体メモリパック装置120に記録コマンドを発行する。またこの処理と同時に、ファイル管理部1109は、記録位置やデータ量などの記録したデータの情報を、メモリ1103に格納されているファイルシステム管理情報に書き込む。
半導体メモリパック装置120は、フラッシュメモリを用いた半導体メモリカード123〜126と、これら4枚の半導体メモリカード123〜126を制御するマルチカードアクセス制御部121と、メモリカード123〜126へ記録するデータを一時記憶するワークメモリ122とを備えている。なお、半導体メモリカード123〜126には、番号♯1〜♯4がそれぞれ割り当てられている。
次に、図3を用いて、本実施形態のデータ記録装置110によるデータ記録動作を説明する。図3は、半導体メモリパック装置120の連続する論理アドレスに、4枚の半導体メモリカード123〜126の論理アドレスをマッピングした状態、および、半導体メモリパック装置120の連続する論理アドレスに対して、ファイル管理部1109のデータ管理単位であるクラスタを割り当てた状態について図示している。
半導体メモリカード123〜126の論理アドレスのマッピング方法は、次のとおりである。つまり、半導体メモリパック装置120に内蔵される4枚の半導体メモリカード123〜126を、消去ブロックのサイズ(16KB)毎にインターリーブし、半導体メモリカード123〜126の番号#1〜#4の順番に並べたものに、半導体メモリパック装置120の連続の論理アドレスをマッピングする。半導体メモリパック装置120に内蔵される4枚の半導体メモリカード123〜126は、並列に同時記録動作するので、16KB×4=64KBの連続アドレスが、半導体メモリパック装置120へのデータ記録単位となる。データ記録装置110のファイル管理部1109のデータ管理単位であるクラスタ305の大きさは、前記データ記録単位と一致する。すなわち、1クラスタは、半導体メモリパック装置120の連続する64KBの論理アドレスに割り当てられる。以下、クラスタサイズを64KBと定めた場合のデータ記録装置110の記録動作について説明する。
データ記録装置110において、ファイル管理部1109は、CPU111の動作を制御するソフトウエアにより実現される。ファイル管理部1109は、半導体メモリパック装置120に記録すべきデータを、データ管理単位であるクラスタと同じサイズ(ここでは64KB)に分割する。ファイル管理部1109は、さらに、半導体メモリパック装置120のメモリ空間から1クラスタ分の空き領域を検索して、見つかった空き領域の論理アドレスと記録すべきデータを、記録コマンドと共に半導体メモリパック装置120に引き渡す。
半導体メモリパック装置120は、データ記録装置110から記録コマンドを受け取ると、記録コマンドと共に、記録すべき1クラスタ分のデータを、ワークメモリ122に一時記憶する。また、半導体メモリパック装置120において、マルチカードアクセス制御部121が、記録コマンドと一緒に指示された半導体メモリパック装置120の論理アドレスを、図3で示したとおり、半導体メモリカード123〜126の個別の論理アドレスに変換する。マルチカードアクセス制御部121は、さらに、この変換によって得られた半導体メモリカード123〜126の個別の論理アドレスに対して、ワークメモリ122に一時記憶された1クラスタ分のデータを分散して、並列に同時記録する。
以上、本実施形態によれば、データ記録装置110のファイル管理部1109がデータを管理する最小単位である1クラスタを、半導体メモリパック装置120に内蔵される4枚の半導体メモリカードの消去ブロックの合計サイズ(64KB)と一致させることにより、従来から高速記録の障害となってきたリード・モディファイ・ライトの発生を防止し、結果として、半導体メモリカードの書き換え回数を低減することが可能になる。また、半導体メモリパック装置120は、内蔵する4枚の半導体メモリカード123〜126に対して並列に同時記録するため、半導体メモリカードが1枚だけの場合に比べて、4倍高速にデータを記録することができる。
なお、実施の形態1においては、並列動作する半導体メモリカードを4枚内蔵するタイプの半導体メモリパック装置を例に説明したが、本発明のデータ記録装置において半導体メモリパック装置に内蔵される半導体メモリカードの枚数は4枚に限定されない。また、内蔵する半導体メモリカードのすべてが並列動作する必要は無い。例えば、4枚の半導体メモリカードを内蔵して、そのうち2枚ずつが並列動作する構成としてもよい。また、実施の形態1においては、4つの消去ブロックを1つのクラスタに割り当てる例を説明したが、半導体メモリパック装置に内蔵する半導体メモリカードの消去ブロック合計の整数倍であれば、4つでなくてもよいし、消去ブロックのサイズが16KBに限定されるものでもない。内蔵する半導体メモリの形状はカード状に限定されず、半導体メモリがチップの形状で実装されるものも、本発明の技術的範囲に含まれる。
さらに、実施の形態1においては、半導体メモリパック装置内で複数の半導体メモリカードが並列動作する構成を例に説明したが、例えば、半導体メモリカード内の複数のフラッシュメモリが並列動作する構成についても本発明を適用できる。すなわち、並列動作する複数のフラッシュメモリの消去ブロックの合計サイズを、ファイル管理部1109がデータを管理する最小単位である1クラスタのサイズと一致させれば良い。
(実施の形態2)
本発明の他の実施形態について、図1および図4を参照しながら説明する。なお、実施の形態1で説明した構成と同様の機能を有する構成については、実施の形態1と同じ番号を付記し、その詳細な説明を省略する。
図4は、半導体メモリパック装置120の連続する論理アドレスに、内蔵する4枚の半導体メモリカード123〜126の論理アドレスをマッピングした状態、および半導体メモリパック装置120の連続する論理アドレスに対して、ファイル管理部1109のデータ管理単位であるクラスタを割り当てた状態を図示している。半導体メモリパック装置120に内蔵される4枚の半導体メモリカード123〜126を消去ブロックのサイズ(16KB)毎にインターリーブして半導体メモリカードの番号#1〜#4の順番に並べたものに、半導体メモリパック装置120の連続の論理アドレスをマッピングする。さらに半導体メモリパック装置120に内蔵される4枚の半導体メモリカード123〜126は並列に同時記録動作するので、16KB×4=64KBの連続アドレスをデータ記録単位とする。なお、本実施形態では、データ記録装置110のファイル管理部1109のデータ管理単位であるクラスタのサイズと、前記データ記録単位とは、公倍数の関係になるように選ばれる。ここでは、1クラスタのサイズを16KBとしている。以下、クラスタサイズを16KBと定めた場合の動作について説明する。
データ記録装置110において、ファイル管理部1109は、CPU111の動作を制御するソフトウエアにより実現される。ファイル管理部1109は、半導体メモリパック装置120へ記録すべきデータを、データ管理単位であるクラスタのサイズ(16KB)に分割する。ここまでは従来のデータ記録方法と同様であるが、本実施形態では、ファイル管理部1109が、半導体メモリパック装置120の中からデータ記録単位(64KB)=4クラスタ分(16KB×4)の空き領域を検索して、見つかった空き領域の論理アドレスと4クラスタ分のデータを、記録コマンドとともに半導体メモリパック装置120に引き渡す。
半導体メモリパック装置120は、データ記録装置110から記録コマンドを受け取ると、4クラスタのデータをワークメモリ122に一時記憶する。これと共に、マルチカードアクセス制御部121は、記録コマンドと一緒に指示された半導体メモリパック装置120の論理アドレスを、図4で示したとおり、半導体メモリパック装置120に内蔵する4枚の半導体メモリカード123〜126の個別の論理アドレスに変換する。さらに、ワークメモリ122に一時記憶されたクラスタのデータを4つに分割し、上記の変換で得られた半導体メモリカード123〜126それぞれの論理アドレスに対して、並列に同時記録する。
以上、本実施形態では、データ記録装置110のファイル管理部1109がデータを管理する最小単位である1クラスタ(16KB)単位に記録を行わず、半導体メモリパック装置120に内蔵される4枚の半導体メモリカード123〜126の消去ブロックの合計サイズ(64KB)と1クラスタ(16KB)の公倍数となる4クラスタ(64KB)単位に記録する。これにより、従来から高速記録の障害となってきたリード・モディファイ・ライトの発生を防止し、結果として半導体メモリカードの書き換え回数を低減することが可能になる。また、半導体メモリパック装置120は、内蔵する4枚の半導体メモリカードに対して並列に同時記録するため、半導体メモリカードが1枚だけの場合に比べて、4倍高速にデータを記録することができる。
なお、実施の形態2において、半導体メモリカードを4枚内蔵するタイプの半導体メモリパック装置を例に説明したが、本発明において半導体メモリパック装置に内蔵される半導体メモリカードの枚数は4枚に限定されず、複数枚の半導体メモリカードを内蔵する構成に同様に適用できる。内蔵する半導体メモリカードのすべてが並列動作する必要は無く、例えば、4枚の半導体メモリカードを内蔵して、そのうち2枚ずつが並列動作するのでもよい。また、実施の形態2においては、4つの消去ブロックを4つのクラスタに割り当てる例を説明したが、半導体メモリパック装置に内蔵する半導体メモリカードの消去ブロックの合計サイズとクラスタサイズとの公倍数をデータ記録単位として、一つのデータ記録単位内には同一ファイルのデータのみを記録するようにすれば、同様の効果を得ることができる。また、消去ブロックのサイズが16KBに限定されるものでもない。内蔵する半導体メモリはカード形状に限定されず、チップの形状で実装されるものも本発明の技術的範囲に含まれる。さらに、実施の形態2においては、半導体メモリパック装置内で複数の半導体メモリカードが並列動作する構成を例に説明したが、例えば、半導体メモリカード内の複数のフラッシュメモリが並列動作する構成についても本発明を適用できる。すなわち、並列動作する複数のフラッシュメモリの消去ブロックの合計サイズとクラスタサイズとの公倍数を、ファイル管理部1109のデータ記録単位とすれば良い。
(実施の形態3)
続いて、図1および図5を用いて、本発明のさらに他の実施形態について説明する。図5は、半導体メモリパック装置120の連続する論理アドレスと、この論理アドレスにマッピングされた4枚の半導体メモリカード123〜126の消去ブロック(16KB)との関係と共に、半導体メモリカード123〜126の消去ブロックの合計サイズ(16KB×4=64K)とファイル管理部1109のデータ管理単位=クラスタサイズ(16KB)の公倍数である4クラスタ(64KB)をデータ記録単位とした場合のクラスタ割り当てを示す。
従来のファイルシステムにおいては、データの管理単位であるクラスタ単位に空き領域を検索し、1クラスタ分でも空き領域があれば、その論理アドレスに1クラスタ分のデータを記録する。しかしながら、本実施形態のデータ記録装置110のファイル管理部1109は、4クラスタをデータ記録単位とするため、少なくとも4クラスタ分の連続した空き領域が無ければデータを記録しない。図5において、半導体メモリパック装置120のデータ記録単位501は、連続する4クラスタすべてが空き領域であるので、データを記録することが可能であると判断されるが、データ記録単位502には記録済みのクラスタがひとつ存在するため、残りの3クラスタも合わせて記録には使用されない。
以上、本実施形態では、データ記録単位(64KB)で空き領域を検索することで、4クラスタをまとめて記録する論理アドレスのアライメントが常に64KBの境界と一致するように記録することができる。これにより4枚の半導体メモリカードの消去ブロック境界とデータ記録単位の境界とがミスマッチすることない。この結果、従来から高速記録の障害となってきたリード・モディファイ・ライトの発生を防止し、結果として半導体メモリカードの書き換え回数を低減することが可能になる。
なお、実施の形態3では、半導体メモリカードを4枚内蔵するタイプの半導体メモリパック装置を例に説明したが、本発明の半導体メモリパック装置に内蔵する半導体メモリカードの枚数は4枚に限定されない。本発明は、複数枚の半導体メモリカードを内蔵する構成であれば、同様に適用することができる。また、内蔵する半導体メモリカードのすべてが並列動作する必要は無く、例えば、4枚の半導体メモリカードを内蔵して、そのうち2枚ずつが並列動作するのでもよい。また、実施の形態3においては4つの消去ブロックを4つのクラスタに割り当てる例を説明したが、半導体メモリパック装置に内蔵する半導体メモリカードの消去ブロックの合計サイズとクラスタサイズの公倍数をデータ記録単位として、データ記録単位で空き領域を検索するように動作すれば、同様の効果を得ることができる。さらに、消去ブロックのサイズが16KBに限定されるものでもない。内蔵する半導体メモリはカード形状に限定されず、チップ形状で実装されるものも本発明の技術的範囲に含まれる。
(実施の形態4)
図1および図6、図7を参照し、本発明のさらに他の実施形態を説明する。図6および図7は半導体メモリパック装置120の連続する論理アドレスにマッピングされた4枚の半導体メモリカード123〜126の消去ブロック(16KB)の関係を示すとともに、4並列に動作する半導体メモリカード123〜126の消去ブロックの合計サイズ(16KB×4=64K)とファイル管理部1109のデータ管理単位=クラスタサイズ(16KB)の公倍数である4クラスタ(64KB)をデータ記録単位とした場合のクラスタ割り当てを図示している。
図6は、従来のファイルシステムによって1クラスタ単位にファイルが割り当てられた例を示している。従来のファイルシステムにおいては、クラスタがデータ管理の最小単位であり、図6のように記録してもファイルとして矛盾を生じることはない。しかしながら、半導体メモリパック装置120のデータ記録単位よりも小さなクラスタサイズで別々のファイルとして記録した場合、4枚の半導体メモリカード123〜126を並列に動作させても1枚の半導体メモリカードの4倍の速度で読み出すことは不可能である。図6の例であれば、ファイル#1のデータは半導体メモリパック装置120に内蔵された半導体メモリカード#1にのみ存在し、4枚ある半導体メモリカード123〜126を並列に動作させて読み出すことができないからである。
一方、図7の例は、クラスタサイズは図6と同一であるが、半導体メモリパック装置120のデータ記録単位の内部は、同一ファイルのデータのみが記録されている。図7のように記録することにより、例えばファイル#1のデータを読み出す際には、4枚の半導体メモリカード123〜126が並列に動作することが可能となり、半導体メモリカードが1枚だけの場合に比較して、4倍速でデータを読み出すことが可能になる。
そこで、本実施形態では、図6のように半導体メモリパック装置120のデータ記録単位よりも小さなクラスタサイズで記録されたファイルのデータを、図7のように半導体メモリパック装置120のデータ記録単位内は同一ファイルのデータのみとなるように並べ替えることで、半導体メモリパック装置120の並列動作による効果を最大限に引き出すように記録する。この記録動作は、クラスタ単位のデータの並べ替えのみで実行することができ、記録されたファイルは、高速に読み出すことができる。
図14は、前記並べ替えを実行する方法の一例を示している。並べ替え前の状態では、半導体メモリパック装置120の記録単位には、ファイル#1〜#4がクラスタ毎に記録されている。この状態では、半導体メモリパック装置120の並列動作を利用した高速読み出しを行うことができない。そこで個々のクラスタを一時バッファに読み出して、同一ファイルのクラスタを選別し、半導体メモリパック装置120の同一の記録単位に記録し直すことで、並べ替えを実行する。なお、一時バッファとしては、データ記録装置110の主記憶112または半導体メモリパック装置120のワークメモリ122などを利用することができる。一時バッファの容量は、最低でも、半導体メモリパック装置120の記録単位分だけあれば、並べ替え処理を実行することが可能である。このような並べ替えを行った後は、半導体メモリパック装置120の並列動作を利用して、ファイルを高速に読み書きすることが可能となる。
なお、上述の記録データの並べ替えは、例えば、半導体メモリパック装置120をデータ記録装置110に接続したとき、あるいは、データ記録装置110が特定の動作を実行したときなど、所定のタイミングで自動的に行うようにしても良い。前記特定の動作の例としては、例えば、データ記録装置110がディジタルカメラやビデオカメラである場合、撮影を終了した都度などが考えられる。
なお、実施の形態4において半導体メモリカードを4枚内蔵するタイプの半導体メモリパック装置を例に説明したが、本発明の半導体メモリパック装置に内蔵する半導体メモリカードの枚数は4枚に限定されない。本発明は、複数枚の半導体メモリカードを内蔵する構成であれば、同様に適用することができる。内蔵する半導体メモリカードのすべてが並列動作する必要は無く、例えば、4枚の半導体メモリカードを内蔵して、そのうち2枚ずつが並列動作するのでもよい。また、実施の形態4においては4つの消去ブロックを4つのクラスタに割り当てる例を説明したが、半導体メモリパック装置に内蔵する半導体メモリカードの消去ブロックの合計サイズとクラスタサイズの公倍数をデータ記録単位として、データ記録単位の内部は同一ファイルのデータのみになるように並べ替えることで同様の効果を得ることができるし、消去ブロックのサイズが16KBに限定されるものでもない。内蔵する半導体メモリは、カード形状に限定されず、チップ形状で実装されるものも本発明の技術的範囲に含まれる。
(実施の形態5)
続いて、図8〜図10を参照し、本発明のさらに他の実施形態を説明する。まずFATファイルシステムの構成について、図8および図9を用いて説明する。
通常、ISO/IEC9292に規定されたFATファイルシステムでは、ファイルシステムの管理情報とユーザデータ領域は、記憶媒体の論理ボリューム上で図9に示したように配置されている。図9において、図の最上部は論理セクタ0番を表している。
論理セクタ0番には、ブートセクタが記録されている。ブートセクタには、ボリューム全体に関する情報と、ユーザデータ領域に書かれたファイルを読み出すために必要となるFATや、ルートエントリといった管理情報の所在に関する情報が記録されている。FATファイルシステムの一具体例であるFAT16ファイルシステムにおいて、ブートセクタに記述されるべき情報としてISO/IEC9293で定められたものを図12に示す。
ユーザデータ領域におけるファイルの配置情報を記述するFATとブートセクタとの間には、予約領域を設けられていることがある。予約領域のセクタ数は、ブートセクタに記述される。
また、FATファイルシステムにおいては、しばしば複数のFATを記録することが許されているが、FATの数とFATひとつ当たりのセクタ数は、ブートセクタに記述されている。
ひとつあるいは複数のFATの直後のセクタ以降には、ルートディレクトリに記録されたファイルに関する情報が列挙される。ファイルに関する情報はファイルエントリと呼ばれ、32バイト単位で管理される。ファイルエントリの中には、ファイル名、ファイル作成時刻、ファイルサイズ、ファイル長、ファイルが保存されている最初のクラスタ番号が記録されている。ルートディレクトリに置かれるファイルエントリの最大数(ルートディレクトリ項目数)はブートセクタに記述されており、その値に従ったサイズを持つ領域がルートディレクトリエントリとしてあらかじめ確保されている。ルートディレクトリ項目数は、ブートセクタに記述されている。
ルートディレクトリエントリの直後のセクタ以降が、ユーザデータ領域となる。ユーザデータ領域は、ひとつもしくは複数の連続したセクタをまとめた、クラスタと呼ばれる単位で管理され、全てのクラスタには先頭から順に通し番号が振られている。
FATの中には、それぞれのクラスタに対応したFATエントリが用意されている。以下に、ユーザデータ領域へファイルを記録する方法を、図10を用いて説明する。
記録するファイル1001がユーザデータ領域で4クラスタ分に相当するサイズを持っている例を考える。この場合、ファイルシステムは、FATのエントリの中から、未割り当てを表す特殊なビット列(FAT16ファイルシステムの場合は0x00)が記録されているものを4つ探し出す。仮にA番目、B番目、C番目、D番目の4つのクラスタに対応するFATエントリ(1002〜1005)に未割り当てを表すビット列が記録されているのが見つかった場合、ファイルシステムは、ファイルをユーザデータ領域のA番目〜D番目の4クラスタに分割して記録する。さらに、4クラスタの関係を記録するために、FATのクラスタAに対応するエントリ1002内には、ファイルが記録されている次のクラスタの番号、すなわち番号Bを記録する。同様にして、クラスタBに対応するFATエントリ1003には番号Cを記録し、クラスタCに対応するFATエントリ1004には番号Dを記録する。ファイルが記録された最後のクラスタ(本例ではクラスタD)に対応するFATエントリ1005には、ファイル終端を表す特殊なビット列(FAT16ファイルシステムでは0xFF)を記録する。ユーザデータ領域からファイルを読み出す場合は、このクラスタの繋がりをたどることによって、ファイル終端まで到達することができる。FATエントリひとつ当たりに12ビット使用するファイルシステムをFAT12ファイルシステム、16ビット使用するものをFAT16ファイルシステム、32ビット使用するものをFAT32ファイルシステムと呼ぶ。
また、FAT全体に割かれるスペースのサイズSFは、前記ブートセクタの23〜24ビットに記述されている(図12)。さらに、本スペース中に含まれる有効なFATエントリの数FEは、ブートセクタの33〜36ビットに記述された全セクタ数TSを用いて以下の数式[数1]から計算される。
[数1]でRSCは予約セクタ数、SFはFATあたりのセクタ数、RDEはルートディレクトリの項目数、SSはセクタのデータフィールドのバイト数、SCはクラスタ当たりのセクタ数をあらわしている。関数ip(x)は、xの整数部をあらわし、関数ceil(x)はxより大きい最小の整数をあらわす。[数1]においてceil(32×RDE/SS)は、ルートディレクトリのために確保されるセクタ数を計算している。よって、(TS−RSC−SF−ceil(32×RDE/SS))は全セクタ数から管理領域のセクタ数を引いた値、すなわちユーザデータ領域のセクタ数となる。これをSCで割ったものの整数部をとることにより、ユーザデータ領域で確保可能なクラスタ数が計算できる。さらに2を足しているのは、管理領域に関する特別なFATエントリ確保のためである。
FATファイルシステムは広く用いられているファイルシステムであるが、オペレーティングシステムによっては、[数1]で計算される有効クラスタ数の下限値を定めているものがある。これにより、ある容量以下の記録媒体、すなわち或る値以下の総セクタ数TSしか持たない記憶媒体をFATファイルシステムで用いたい場合は、クラスタサイズを小さくして総クラスタ数を多くする手段を取らざるを得ない。しかしながら、記憶媒体が半導体メモリパック装置の場合、クラスタサイズを半導体メモリパック装置の消去ブロックと一致させたいという要望から、クラスタサイズの変更が容易でないことがある。したがって、クラスタサイズ制限を持った小容量記憶媒体は、クラスタ数下限を持ったオペレーティングシステムでは使用できないことになる。
そこで、本実施形態では、オペレーティングシステムのサポート範囲以下のクラスタ数しか確保できない小容量記憶媒体をFATファイルシステムで利用する場合に、ブートセクタの総セクタ数TSに、実際に存在するセクタ数よりも大きな値を記述することにより、前記問題を回避する。すなわち、小容量記憶媒体のフォーマット時に、総セクタ数TSを以下の数式[数2]で計算される値よりも大きい値に設定することにより、制限付きオペレーティングシステムで小容量記憶媒体を扱えるようにする。ここでLSはオペレーティングシステムが定めるクラスタ数の下限である。
[数2]は、[数1]の解をLSとおいて、TSについて解くことにより導かれる。
[数2]から得られる総セクタ数をブートセクタに設定することにより、FAT内のFATエントリには、実際に存在するクラスタと関連付け可能なものと、実在するクラスタとは関連付け不可能なものが生じる。図8では、ユーザデータ領域に実在するクラスタ数をN、総クラスタ数TSによって計算される有効クラスタ数をMとしている。FATエントリの1番からN番までが実在するクラスタと関連付け可能なFATエントリ801であり、N+1番からM番までが実在するクラスタと関連付け不可能なFATエントリ802となる。
本実施形態では、小容量記憶媒体をFATファイルシステムでフォーマットするときに、実在するクラスタと関連付けできないFATエントリ802の全てに、ファイル終端を示す全ビット1の値をあらかじめ記述しておく。これは、総セクタ数を水増しして記述したFATファイルシステムに対してファイルの書き込みをおこなう場合、実在するクラスタと関連付けできないFATエントリ802に未割り当てを示すビット列を記述しておくと、ファイルシステムが実在しないクラスタにデータを書き込もうとしてエラーを生じる可能性があるためである。実在するクラスタと関連付けできないFATエントリ802が指す先のクラスタにはすでにデータが割り当て済みであると見せかけることで、ファイルシステムがファイルを書き込むためにボリューム上の空き領域をサーチする場合、実在しないクラスタを書き込み対象とすることがなくなる。
また、FAT12、FAT16ファイルシステムでは、多くのオペレーティングシステムが、ユーザに提供する記録媒体の空き容量情報を未割り当てビット列が記述されたFATエントリを数えることによって計算する。従って、本実施形態に従えば、正確な空き容量情報をユーザに提供できる。また、FAT32ファイルシステムでは、論理ボリューム上で得られる空きクラスタの数が予約セクタ内に記述されており、オペレーティングシステムの多くは、本情報をもとにユーザへディスクの空き容量情報を提供する。本実施形態では、記憶媒体をFATファイルシステムでフォーマットするときに、総セクタ数TSから計算される総クラスタ数から実在するクラスタと関連付け不可能なFATエントリ802の数を引いたものを空きクラスタ数として予約セクタ内に記述することにより、正確な空き容量情報を提供する。
以上の方法でFATファイルシステムを構築することにより、FATエントリの下限値を持ったオペレーティングシステムにおいてもクラスタサイズに制限を持った小容量記憶媒体を読み書きすることが可能になり、また、ユーザに対して正確な空き容量情報を提供することも可能になる。なお、実施の形態5では実在するクラスタと関連付け不可能なFATエントリ802に入れるビット列を、ファイル終端を示すビット列としたが、不良セクタを示すビット列等、未割り当てを示すビット列以外であれば何を用いても構わない。
(実施の形態6)
最後に、図11を用いて、本発明のさらに他の実施形態について説明する。
図11は、実施の形態6のデータ記録装置の構成を表したブロック図である。図11において、1101はデータ記録装置、1102は制御部、1103はメモリ、1104は入力データI/F、1105はエンコーダ制御部、1106はエンコーダ、1107はバッファ制御部、1108はバッファ、1109はファイル管理部、1110はメディアI/F、1111はメディアを表している。なお、メディア1111は、実施の形態1等で説明した半導体メモリパック装置120である。
制御部1102は、メモリ1103を用いて、データ記録装置1101の全体の制御を行う。入力データI/F1104は、外部から入力されたデータを受け取る。
エンコーダ制御部1105は、入力データI/F1104から入力されたデータを受け取り、エンコーダ1106を制御してそのデータのエンコード処理を行い、バッファ制御部1107にエンコードされたデータを送る。また、エンコーダ制御部1105は、エンコーダ1106からの情報を取得して、制御部1102に伝えることもできる。エンコーダ1106からの情報とは、例えばビデオデータをMPEG(Moving Pictures coding Experts Group)にエンコードする場合、1GOP(Group Of Pictures)のエンコードを完了したという情報などである。
バッファ制御部1107は、エンコーダ制御部1105から受け取った、エンコードされたデータを、データの種類毎にバッファ1108内の別の領域に格納する。また、バッファ制御部1107は、バッファ1108に蓄えられたデータの量を監視しており、所定量に達した時には制御部1102に通知する。制御部1102はその通知を受け取ると、ファイル管理部1109にデータ記録要求を出す。
ファイル管理部1109は、メディア1111に記録されているファイルの管理を行う。ファイル管理部1109は、メディア1111からメディアI/F1110を介して、ファイルシステム管理情報を読み込み、メモリ1103に格納する。制御部1102からのデータ記録要求を受けると、ファイル管理部1109はファイルシステム管理情報を参照して空き領域を探し、見つかればその領域にデータを記録するようにメディア1111にコマンドを発行する。またこの処理と同時に、ファイル管理部1109は、記録位置やデータ量などの記録したデータの情報を、メモリ1103に格納されているファイルシステム管理情報に書き込む。
メモリ1103に格納されているファイルシステム管理情報は、定期的にメディア1111に書き戻さなければならない。それは、記録装置1101の電源が落ちるなど、不測の事態が起こる可能性があるからである。ファイルシステム管理情報がメディア1111に書き戻されないと、それまで記録したデータの記録位置やデータ量などを知るすべがなく、記録されていない状態と同じになってしまう。
逆に、ファイルシステム管理情報を頻繁にメディア1111に書き戻すようにすると、書き換え回数の上限があるメディアだと、すぐに書き換え回数を超えてしまう可能性がある。また、ファイルシステム管理情報の書き換え処理のために、メディア1111のアクセス効率が低下してしまう。よって、ファイルシステム管理情報を適切なタイミングでメディア1111に書き戻すことが重要になる。
以下、ファイルシステム管理情報を書き戻すタイミングについて、音声データと映像データを別々のファイルで同時に記録する場合と、音声データと映像データを1つのファイルで記録する場合の2つの例で説明する。
まず、音声データと映像データを別々のファイルで同時に記録する場合について述べる。
音声データと映像データを別々のファイルで記録する場合、同時に記録装置1101に入力されても、メディア1111には同時に記録されない。それは、映像データのビットレートが音声データのビットレートより高いため、バッファ1108に蓄えられる映像データが音声データより早く所定量に達して、映像データが先に記録されるからである。
音声データと映像データはセットでクリップを構成するため、映像データだけをメディア1111に記録しても、通常その映像データは意味のないものになってしまう。
よって、本実施形態では、音声データと映像データを別々のファイルで同時に記録する場合、音声データをメディア1111に記録する毎に、ファイルシステム管理情報もメディア1111に書き戻すようにする。つまり、ビットレートの最も低いデータの記録を、ファイルシステム管理情報を書き戻すトリガにする。
先述したように、バッファ制御部1107は、バッファ1108をデータの種類毎に監視しており、データが所定量に達した時に制御部1102に通知する。制御部1102は、現在記録処理を行っているデータの中で最もビットレートが低いデータを知っている。この例では、音声データが最もビットレートが低いデータである。バッファ1108に蓄積された音声データが所定量に達したことを通知されると、制御部1102はファイル管理部1109に、音声データの記録要求とファイルシステム管理情報更新要求を出す。なお、上記の「所定量」とは、メディア1111(半導体メモリパック120)において並列動作する半導体メモリカード123〜126の消去ブロックの合計サイズと、ファイル管理部1109のデータ管理サイズとの公倍数をデータ記録単位とした場合、そのデータ記録単位の整数倍である。
以上のように、音声データと映像データを別々のファイルで同時に記録する場合、ビットレートの低い音声データの記録にあわせてファイルシステム管理情報をメディアに書き戻すようにすると、メディアの書き換え回数を無駄に増やすことなく、記録装置の電源断対策を図ることができる。
次に、音声データと映像データをMPEGシステムストリームとして1つのファイルに記録する場合について説明する。
MPEGシステムストリームを記録する場合、データは1GOPの単位で完結するフレーム間圧縮が施されており、1GOPよりも短い単位でデータが記録されても正常にデコードして再生することができない。しがたって、1GOP以内のデータを記録した段階でファイルシステムの管理情報をメディアに書き戻してもほとんどの場合に意味を成さない。そこで本実施形態では、MPEGシステムストリームを1つのファイルとしてメディアに記録する場合、1GOPの整数倍だけデータを記録した段階でファイルシステムの管理情報を更新するように動作する。これによって必要以上にファイルシステムの管理情報を書き換えることが防止され、メディアの書き換え寿命を延ばすことが可能になる。