JP5485163B2 - アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム - Google Patents
アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム Download PDFInfo
- Publication number
- JP5485163B2 JP5485163B2 JP2010535157A JP2010535157A JP5485163B2 JP 5485163 B2 JP5485163 B2 JP 5485163B2 JP 2010535157 A JP2010535157 A JP 2010535157A JP 2010535157 A JP2010535157 A JP 2010535157A JP 5485163 B2 JP5485163 B2 JP 5485163B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- information
- file
- information recording
- area
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、データを不揮発性メモリに格納し、ファイルとして管理するアクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システムに関する。
音楽コンテンツや、映像データ等のデジタルデータを記録する記録媒体には、磁気ディスク、光ディスク、光磁気ディスク等、様々な種類が存在する。これら記録媒体の内、記録素子にFlashROM等の半導体メモリを使用したメモリカードは、記録媒体の小型化が図れることから、デジタルスチルカメラや携帯電話端末等、小型の携帯機器を中心に急速に普及している。更に最近では、FlashROM等の半導体メモリを機器に内蔵してハードディスクの代わりに使用する等、従来のメモリカードのような着脱可能なリムーバブルメディアとしての用途のみならず、機器内蔵ストレージとしての用途でも半導体メモリが使用されるようになってきた。
このようなメモリカードや機器内蔵ストレージには、主にNAND型フラッシュメモリと呼ばれる半導体素子が使用されている。NAND型フラッシュメモリは、既に記録されたデータを一旦消去した後、再度別のデータを記録することが可能な記録素子であり、従来のハードディスクと同様に、複数回書き換え可能な情報記録装置を構成することが可能である。
従来、メモリカードや機器内蔵ストレージに格納されたデータはファイルシステムにより管理されている。データをファイルシステムにより管理することで、同一のファイルシステムを解釈する機器間でデータをファイルとして共有することが可能となり、ユーザは自分の格納したデータを複数の機器間で容易に参照したり、コピーしたりすることが可能となる。
従来最も広く使用されているファイルシステムは、FATファイルシステムと呼ばれるものである。FATファイルシステムは、領域管理をファイルアロケーションテーブル(FAT)と呼ばれるテーブルで一元管理するという特徴を持っており、比較的構造がシンプルで実装が容易なことから、フロッピー(登録商標)ディスクやPCのハードディスク、メモリカード等のファイルシステムとして広く使用されている。
図2にFATファイルシステムの構成を示す。FATファイルシステムではファイルアロケーションテーブル内の管理単位のビット幅の違いにより、FAT12、FAT16、FAT32等の種類が存在するが、ファイルアロケーションテーブルによる領域管理方法はほぼ同じであり、以下ではFAT16を例に説明する。
同図に示すように、論理アドレス空間の先頭には、領域割り当て単位やファイルシステムが管理する領域の大きさ等、ファイルシステムの管理情報が格納される領域であるファイルシステム管理情報領域301が存在する。このファイルシステム管理情報領域301には、マスターブートレコード・パーティションテーブル(MBR)303、パーティションブートセクタ(PBS)304、FAT(305、306)、ルートディレクトリエントリ(RDE)307と呼ばれるファイルシステムの管理情報が含まれ、ユーザデータ領域302を管理するために必要な情報が各々格納されている。
マスターブートレコード・パーティションテーブル303は、ファイルシステムが管理する論理アドレス空間上の領域を複数のパーティションと呼ばれる領域に分割して管理するための情報が格納される領域である。パーティションブートセクタ304は、パーティション内の領域管理単位の大きさ等、1つのパーティション内の管理情報が格納される領域である。
FAT(305、306)は、ファイルに含まれるデータの格納位置に関する情報が格納される領域であり、通常、同じ情報を持つ2つのFAT(305、306)が存在し、一方のFAT(305、306)が破損したとしても他方のFAT(305、306)によりファイルにアクセスできるよう二重化されている。ルートディレクトリエントリ307は、ルートディレクトリ直下に存在するファイル、ディレクトリの情報(ディレクトリエントリ)が格納される領域である。
またFATファイルシステムでは、このファイルシステム管理情報領域301に引き続く領域にファイル本体のデータ等を格納するユーザデータ領域302が存在する。ユーザデータ領域302は、512バイトから32KB程度の大きさを持つクラスタと呼ばれる管理単位毎に分割管理されており、各クラスタにはファイルに含まれるデータが格納されている。多くのデータを格納するファイルは、複数のクラスタに跨ってデータを格納しており、各クラスタ間の繋がりは、FAT(305、306)に格納されたリンク情報により管理されている。また、ルートディレクトリ直下のディレクトリ内に存在するファイル、サブディレクトリの情報(ディレクトリエントリ)は、このユーザデータ領域302の一部を利用して格納される。
図3は、FAT16のディレクトリエントリの構成を示した図である。ディレクトリエントリ308は1つのファイル、ディレクトリ毎に32バイトのディレクトリエントリ308が割り当てられ、ファイル、ディレクトリに関する情報を格納している。すなわち、1つのファイルやディレクトリが追加される度に32バイトのディレクトリエントリ308の情報が新規に作成され、ルートディレクトリエントリ307の領域、あるいはユーザデータ領域302に記録される。
ディレクトリエントリ308の先頭8バイトにはファイルやディレクトリの名称が格納される。続く3バイトには拡張子が格納される。続く1バイトにはファイル・ディレクトリの種別を識別するフラグや、ファイル・ディレクトリがリードオンリーか否かを識別するフラグ等の属性情報が格納される。また、ファイル・ディレクトリの最終更新日時の情報や、ファイル・ディレクトリデータの実体が格納されているクラスタの開始位置を示す開始クラスタ番号、ファイルサイズのバイト数等が格納される。
このようにディレクトリエントリ308ではファイルの先頭データを格納したクラスタの位置に関する情報しか保持しないため、ファイルデータが複数クラスタに跨って格納される場合には、その位置情報はFAT(305、306)に保持される。すなわち、ファイルを更新する場合にはファイルデータを書き込むと共に、ディレクトリエントリ308、FAT(305、306)の情報も書き込む必要がある。
続いて、図4を用いて、FATファイルシステムにおけるファイルデータ書き込み処理手順について説明する。
(S401):
対象ファイルのディレクトリエントリ308を読み出す。
対象ファイルのディレクトリエントリ308を読み出す。
(S402):
読み出したディレクトリエントリ308に格納された開始クラスタ番号を取得し、ファイルデータの先頭位置を確認する。
読み出したディレクトリエントリ308に格納された開始クラスタ番号を取得し、ファイルデータの先頭位置を確認する。
(S403):
FAT(305、306)をアクセスモジュールのRAM上に読み出し、S402で取得したファイルデータの先頭位置から順にRAM上のFAT(305、306)内でリンクを辿り、書き込み位置のクラスタ番号を取得する。
FAT(305、306)をアクセスモジュールのRAM上に読み出し、S402で取得したファイルデータの先頭位置から順にRAM上のFAT(305、306)内でリンクを辿り、書き込み位置のクラスタ番号を取得する。
(S404):
ファイルデータ書き込みに際し、ファイルに新たに空き領域を割り当てる必要があるか判定する。空き領域の割り当てが必要な場合S405の処理に進む。空き領域の割り当てが不要な場合S408の処理に進む。
ファイルデータ書き込みに際し、ファイルに新たに空き領域を割り当てる必要があるか判定する。空き領域の割り当てが必要な場合S405の処理に進む。空き領域の割り当てが不要な場合S408の処理に進む。
(S405):
RAM上のFAT(305、306)内で空き領域を検索し、1クラスタの空き領域を取得する。FAT(305、306)では値が0x0000に設定されているFATエントリが空きクラスタを意味するため、空き領域を取得する処理は、FAT(305、306)上で0x0000の値を持つFATエントリを取得するという処理になる。具体的にはRAM上のFAT(305、306)内のFATエントリを順次参照し、値が0x0000に設定されているFATエントリを見つけ、該FATエントリの対応クラスタ番号の値を求める。FATエントリの検索処理は例えばFAT(305、306)の先頭から終端まで順に処理を実施しても良いし、前回空き領域を割り当てたFATエントリの次のFATエントリから処理を開始してFAT(305、306)の終端まで到達したらFAT(305、306)の先頭に折り返し、前回空き領域を割り当てたFATエントリまで処理を実施しても良い。このようにFATエントリの検索処理手順はFAT(305、306)領域の全面に対して空き領域を検索する処理を実現できるものであれば良く、特に限定はされない。
RAM上のFAT(305、306)内で空き領域を検索し、1クラスタの空き領域を取得する。FAT(305、306)では値が0x0000に設定されているFATエントリが空きクラスタを意味するため、空き領域を取得する処理は、FAT(305、306)上で0x0000の値を持つFATエントリを取得するという処理になる。具体的にはRAM上のFAT(305、306)内のFATエントリを順次参照し、値が0x0000に設定されているFATエントリを見つけ、該FATエントリの対応クラスタ番号の値を求める。FATエントリの検索処理は例えばFAT(305、306)の先頭から終端まで順に処理を実施しても良いし、前回空き領域を割り当てたFATエントリの次のFATエントリから処理を開始してFAT(305、306)の終端まで到達したらFAT(305、306)の先頭に折り返し、前回空き領域を割り当てたFATエントリまで処理を実施しても良い。このようにFATエントリの検索処理手順はFAT(305、306)領域の全面に対して空き領域を検索する処理を実現できるものであれば良く、特に限定はされない。
(S406):
S405で取得した空きクラスタの番号に対応するFATエントリの値を、リンク終端を意味する値に設定する。FAT(305、306)では値が0xFFFFに設定されているFATエントリがリンク終端を意味するため、S406では該当FATエントリの値をRAM上で0xFFFFに設定する処理を実施する。
S405で取得した空きクラスタの番号に対応するFATエントリの値を、リンク終端を意味する値に設定する。FAT(305、306)では値が0xFFFFに設定されているFATエントリがリンク終端を意味するため、S406では該当FATエントリの値をRAM上で0xFFFFに設定する処理を実施する。
(S407):
現在のリンク終端のクラスタ番号に対応するFATエントリの値を0xFFFFからS405で取得した空きクラスタの番号にRAM上で設定する。空き領域を取得する必要がある場合は、ファイル終端への追記を意味し、その場合S403でのリンクを辿る処理においてファイル終端までリンクが辿られている。そのため、現在のリンク終端のクラスタ番号に対応するFATエントリの値はリンク終端を意味する0xFFFFが設定されている。そのため、S407の処理により、S405で新たに取得した空きクラスタへリンクを接続することによりファイルのリンクが1クラスタ分長くなり、ファイルデータを追記することが可能となる。
現在のリンク終端のクラスタ番号に対応するFATエントリの値を0xFFFFからS405で取得した空きクラスタの番号にRAM上で設定する。空き領域を取得する必要がある場合は、ファイル終端への追記を意味し、その場合S403でのリンクを辿る処理においてファイル終端までリンクが辿られている。そのため、現在のリンク終端のクラスタ番号に対応するFATエントリの値はリンク終端を意味する0xFFFFが設定されている。そのため、S407の処理により、S405で新たに取得した空きクラスタへリンクを接続することによりファイルのリンクが1クラスタ分長くなり、ファイルデータを追記することが可能となる。
(S408):
現在参照している書き込み位置のクラスタ内にファイルデータを書き込む。S404で空き領域取得が必要と判断した場合は、現在参照している書き込み位置はS405で取得した空きクラスタとなる。またS404で空き領域取得が不要と判断した場合は、現在参照している書き込み位置はS403でリンクを辿った結果到達したクラスタとなる。
現在参照している書き込み位置のクラスタ内にファイルデータを書き込む。S404で空き領域取得が必要と判断した場合は、現在参照している書き込み位置はS405で取得した空きクラスタとなる。またS404で空き領域取得が不要と判断した場合は、現在参照している書き込み位置はS403でリンクを辿った結果到達したクラスタとなる。
(S409):
全ファイルデータの書き込みが完了したか判定する。まだファイルデータが残っている場合S404の処理に戻る。全ファイルデータの書き込みが完了した場合S410の処理に進む。
全ファイルデータの書き込みが完了したか判定する。まだファイルデータが残っている場合S404の処理に戻る。全ファイルデータの書き込みが完了した場合S410の処理に進む。
(S410):
ディレクトリエントリ308内に格納されたファイルサイズや最終更新日時等の情報を更新し、情報記録モジュールの不揮発性メモリ内に格納されたディレクトリエントリ308を上書きする。
ディレクトリエントリ308内に格納されたファイルサイズや最終更新日時等の情報を更新し、情報記録モジュールの不揮発性メモリ内に格納されたディレクトリエントリ308を上書きする。
(S411):
情報記録モジュールの不揮発性メモリ内に格納されたFAT(305、306)に、アクセスモジュールのRAM上のFAT(305、306)のデータを上書きし、処理を完了する。
情報記録モジュールの不揮発性メモリ内に格納されたFAT(305、306)に、アクセスモジュールのRAM上のFAT(305、306)のデータを上書きし、処理を完了する。
このファイルデータ書き込み処理により、図5に示された60000バイトのデータを持つFILE1.TXTに10000バイトのデータを追記した場合、図6に示されるような70000バイトのデータを持つファイルに変化する。すなわち、空きクラスタとしてクラスタ番号6のクラスタが取得されてファイルデータが追記され、FAT(305、306)上のリンクにクラスタ番号6が接続される。その結果、FILE1.TXTのリンクは、クラスタ番号2〜5の4クラスタからなる状態から、クラスタ番号2〜6の5クラスタからなる状態に更新される。
このようにFATファイルシステムでは、ファイルの管理情報がFAT(305、306)とディレクトリエントリ308の両方に格納されていることから、ファイルを更新する場合には、これらの情報も共に更新する必要がある。すなわち、アクセスモジュールが情報記録モジュールに格納されたファイルを更新する場合、図7に示すようにファイルデータ(DATA)、ディレクトリエントリ308(DIR)、FAT(305、306)(FAT1、FAT2)のような一連の書き込み処理を実施することになる。
一方、NAND型フラッシュメモリは、データを記録する前に一旦データを消去しなければならないという特徴を持つ。そのため、データ消去単位であるブロックの大きさ以下の書き込みを実施する場合、該当するブロックに直接上書きをすることができないため、別の未使用ブロックを取得してブロック内のデータを一旦消去し、そのブロックに対して新しいデータを書込む必要がある。この際、古いブロックに含まれている有効なデータを新しいブロックにコピーする必要があり、記録速度が低下する。このコピー量は、データ書き込みサイズが小さい程大きくなり、データ書き込みサイズがブロックサイズに近くなる程小さくなることから、一般にNAND型フラッシュメモリに対しては、ブロックサイズ単位でのデータ書き込みを実施した場合、記録速度が最速になることが知られている。
従来、NAND型フラッシュメモリに対する記録速度を高速化し、且つ上記コピー処理による記録速度の低下を防ぎ、動画コンテンツ等のリアルタイム記録を実現する方法が提案されている(例えば、特許文献1参照)。この方法では、フラッシュメモリ内の領域をブロック単位で区切った場合に、1ブロック内に含まれる空き領域(空きクラスタ)の数が多いブロックのみを取得して、動画コンテンツ等のデータを記録するようにしている。このようにすることで、1ブロック内のデータコピー量を削減し、記録速度の低下を防いでいる。
しかしながら、FAT(305、306)やディレクトリエントリ308等の更新をする際においては、記録アドレスが複数のブロック間に跨って移動する可能性があるため、上記の従来技術では速度低下を防ぐことができない。例えば、ムービー等の記録機器では、ファイルデータ記録中に電源断が生じ、ディレクトリエントリ308やFAT(305、306)を更新できなかった場合、それまで記録していたファイルデータが消失してしまうことから、数秒間隔等、定期的にディレクトリエントリ308やFAT(305、306)を更新するようにしている。このような機器では、図7のように1ファイルのデータ(DATA)、ディレクトリエントリ308(DIR)、FAT(305、306)(FAT1、FAT2)を記録する場合に、データ記録の合間にディレクトリエントリ308やFAT(305、306)の更新記録が発生するため、この時点で速度低下が生じることになる。
また、動画記録中に静止画ファイルを記録する場合等、複数のファイルを並行して記録する場合には、記録アドレスが複数のブロック間に跨って移動する可能性があり、同様に記録速度の低下を防ぐことができなくなる。例えば、図8のように、1つ目のファイルのデータ(DATA1)と、2つ目のファイルのデータ(DATA2)が記録された場合に記録アドレスが複数のブロック間に跨って移動する可能性がある。更にこの場合、各々のファイルのディレクトリエントリ308(DIR1、DIR2)も異なるアドレスに格納される場合があることから、同様に記録アドレスが複数のブロック間に跨って移動する可能性がある。
本発明では上記問題点に鑑み、複数のファイルを並行してNAND型フラッシュメモリに記録する場合等においても速度低下を防ぎ、リアルタイム記録を実現するアクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システムを提供することを目的とする。
本発明のアクセスモジュールは、データを格納する不揮発性メモリを有する情報記録モジュールにアクセスするアクセスモジュールであって、所定のデータ種別のデータを格納する領域の位置情報を前記情報記録モジュールに通知するアドレス管理情報設定処理部と、前記情報記録モジュールに記録するファイルデータにおける有効データが所定の記録処理単位サイズ未満であった場合に、任意のデータを付加して前記所定の記録処理単位サイズに変更し、前記情報記録モジュールにファイルデータを記録するデータ整形処理部とを備える。
また、複数ファイルのファイルデータを並行して前記情報記録モジュールに記録する場合には、所定の連続領域サイズ内で連続したアドレスになるよう、複数ファイルのファイルデータを任意の順番で並べながら前記情報記録モジュールに記録するようにすると効果的である。
また、前記所定のデータ種別は、記録対象ファイルの名前やファイルサイズ等の情報を含むファイルシステム管理情報であっても良い。
更に、前記所定のデータ種別は、記録対象ファイルの名前やファイルサイズ等の情報を含むファイルシステム管理情報であって、前記アドレス管理情報設定処理部は、該ファイルシステム管理情報を格納する領域の位置情報を複数前記情報記録モジュールに通知するようにしても良い。
また、前記情報記録モジュールに記録するファイルデータに任意のデータを付加した場合、該ファイルの名前やファイルサイズ等の情報を含むファイルシステム管理情報に、データ付加前の有効データの大きさをファイルサイズとして設定するようにすると良い。
また、前記所定の記録処理単位サイズは、前記情報記録モジュールに含まれる不揮発性メモリの物理的なデータ記録処理単位サイズの倍数長であると良い。
更に、前記所定の連続領域サイズは、前記情報記録モジュールに含まれる不揮発性メモリの物理的なデータ消去処理単位サイズの倍数長であると良い。
本発明の情報記録モジュールは、データを格納する不揮発性メモリと、外部のアクセスモジュールから指定される所定のデータ種別のデータを格納する領域の位置情報を格納するアドレス管理情報と、前記アドレス管理情報に基づき前記所定のデータ種別のデータが記録されると認識した場合には、前記不揮発性メモリ内の特定の領域にデータを格納するエントリ格納制御部とを備える。
また、前記所定のデータ種別は、記録対象ファイルの名前やファイルサイズ等の情報を含むファイルシステム管理情報であると良い。
更に、前記所定のデータ種別は、記録対象ファイルの名前やファイルサイズ等の情報を含むファイルシステム管理情報であって、前記アドレス管理情報は、該ファイルシステム管理情報を格納する領域の位置情報を複数保持するようにしても良い。
また、前記エントリ格納制御部は、前記アドレス管理情報に保持された、複数のファイルシステム管理情報を格納する領域の位置情報のそれぞれに特定の領域を割り当て、該ファイルシステム管理情報を格納するようにすると良い。
また、前記アドレス管理情報は、前記所定のデータ種別とは異なる第2のデータ種別のデータを格納する領域の位置情報を更に含み、前記エントリ格納制御部は、前記アドレス管理情報に基づき前記第2のデータ種別のデータが記録されると認識した場合には、前記不揮発性メモリ内の前記所定のデータ種別のデータを格納する領域とは異なる特定の領域にデータを格納する処理を更に含むようにすると効果的である。
また、前記第2のデータ種別は、ファイルシステムが使用する領域管理情報であると良い。
本発明のコントローラは、データを格納する不揮発性メモリを有する情報記録モジュールを制御するコントローラであって、外部のアクセスモジュールから指定される所定のデータ種別のデータを格納する領域の位置情報を格納するアドレス管理情報を参照し、前記所定のデータ種別のデータが記録されると認識した場合には、前記不揮発性メモリ内の特定の領域にデータを格納するエントリ格納制御部を備える。
本発明の情報記録システムは、情報記録モジュールと、前記情報記録モジュールにアクセスするアクセスモジュールとを備える情報記録システムであって、前記情報記録モジュールは、データを格納する不揮発性メモリと、前記アクセスモジュールから指定される所定のデータ種別のデータを格納する領域の位置情報を格納するアドレス管理情報と、前記アドレス管理情報に基づき前記所定のデータ種別のデータが記録されると認識した場合には、前記不揮発性メモリ内の特定の領域にデータを格納するエントリ格納制御部とを有し、前記アクセスモジュールは、前記所定のデータ種別のデータを格納する領域の位置情報を前記情報記録モジュールに通知するアドレス管理情報設定処理部と、前記情報記録モジュールに記録するファイルデータにおける有効データが所定の記録処理単位サイズ未満であった場合に、任意のデータを付加して前記所定の記録処理単位サイズに変更し、前記情報記録モジュールにファイルデータを記録するデータ整形処理部とを有する。
本発明によれば、複数のファイルを並行してNAND型フラッシュメモリに記録する場合等においても速度低下を防ぎ、リアルタイム記録を実現することが可能となる。
以下、本発明のアクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システムについて、図面を参照しつつ説明する。
[第1実施形態]
図1は、第1実施形態におけるアクセスモジュール1及び情報記録モジュール2の構成図である。
図1は、第1実施形態におけるアクセスモジュール1及び情報記録モジュール2の構成図である。
図1においてアクセスモジュール1は、CPU11、RAM12、情報記録モジュールインタフェース13、ROM14を含む。ROM14にはアクセスモジュール1を制御するプログラムが格納されており、このプログラムはRAM12を一時記憶領域として使用し、CPU11上で動作する。情報記録モジュールインタフェース13は、情報記録モジュール2とアクセスモジュール1との接続部であり、制御信号及びデータの送受信を行う。
ROM14は更に、アプリケーション制御部101、ファイルシステム制御部102、情報記録モジュールアクセス部103を含む。アプリケーション制御部101は、データの生成や電源の制御等、アクセスモジュール1全体の制御を行う。ファイルシステム制御部102は、FATファイルシステム等のファイルシステムによりデータをファイルとして管理するための制御を行う。情報記録モジュールアクセス部103は、ファイルシステム制御部102からデータと共にサイズとアドレスを渡され、指定されたサイズのデータを情報記録モジュール2の不揮発性メモリ内の指定された位置に記録する等、情報記録モジュール2に対するコマンドやデータの送受信を制御する。
ファイルシステム制御部102は更に、アドレス管理情報設定処理部104、データ整形処理部105を含む。アドレス管理情報設定処理部104は、ファイルにデータを記録する際に、該当ファイルのディレクトリエントリ308の位置に関する情報を情報記録モジュール2に通知する処理を行う処理部であり、従来のアクセスモジュールには存在しないものである。また、データ整形処理部105は、ファイルに記録するデータの大きさが情報記録モジュール2への記録単位の倍数長ではない場合に、データをパディングして情報記録モジュール2に記録する処理を行う処理部であり、アドレス管理情報設定処理部104と同様に従来のアクセスモジュールには存在しないものである。これら処理部の詳細については後述する。
一方、図1において情報記録モジュール2は、コントローラ21と不揮発性メモリ22を含む。
コントローラ21は、不揮発性メモリ22の制御全般を行うモジュールであり、CPU等を含むシステムLSIとして構成される。コントローラ21は更に、アクセスモジュールインタフェース211、CPU212、RAM213、ROM214、不揮発性メモリインタフェース215を含む。アクセスモジュールインタフェース211は、情報記録モジュール2とアクセスモジュール1との接続部であり、情報記録モジュールインタフェース13同様、制御信号及びデータを送受信するインタフェースである。ROM214には情報記録モジュール2を制御するプログラムが格納されており、このプログラムはRAM213を一時記憶領域として使用し、CPU212上で動作する。不揮発性メモリインタフェース215はコントローラ21と不揮発性メモリ22との接続部であり、不揮発性メモリ22に対するコマンドやデータの送受信を制御する。
ROM214は更に、エントリ格納制御部217、FAT格納制御部218、ユーザデータ格納制御部219を含む。エントリ格納制御部217は、アクセスモジュール1から情報記録モジュール2に発行されたデータ書き込み命令が、ディレクトリエントリに相当する特定のデータを書き込む処理であった場合に、データをエントリ格納領域221内に格納する処理を実施する制御部である。FAT格納制御部218は、FATに相当する特定のデータを書き込む処理であった場合に、データをFAT格納領域222内に格納する処理を実施する制御部である。ユーザデータ格納制御部219は、その他のデータを書き込む処理であった場合に、データをユーザデータ格納領域223内に格納する処理を実施する制御部である。
ユーザデータ格納制御部219の処理は、従来の情報記録モジュール2が含んでいた処理とほぼ同じであるが、エントリ格納制御部217とFAT格納制御部218の処理は従来の情報記録モジュール2には存在しないものである。これらの制御部の詳細については後述する。
また、RAM213は、エントリ格納制御部217、FAT格納制御部218、ユーザデータ格納制御部219が制御用の情報として使用するアドレス管理情報216を含む。
また、不揮発性メモリ22は、先に説明したエントリ格納領域221、FAT格納領域222、ユーザデータ格納領域223を含み、エントリ格納領域221は更に第1のエントリ格納領域224、第2のエントリ格納領域225を含む。
本実施形態における情報記録モジュール2は、データの種別により、不揮発性メモリ22内のエントリ格納領域221、FAT格納領域222、ユーザデータ格納領域223をデータ格納先として使い分ける。また、複数ファイルを並行して記録する場合には、複数ファイルのデータを所定の書き込み処理単位の倍数長にパディングしたデータをブロック単位で連続したアドレス領域に記録する。また、本実施形態におけるアクセスモジュール1は、情報記録モジュール2にディレクトリエントリ308の位置情報を通知するアドレス管理情報設定処理部104と、端数データをパディングして情報記録モジュール2に記録するデータ整形処理部105とを備える。これらアクセスモジュール1、情報記録モジュール2を組み合わせることにより、複数のファイルを並行して記録する場合においても、情報記録モジュール2内で生じる無駄なコピー処理を削減して記録速度の低下を防止し、高速に安定して情報記録モジュール2にデータを記録することが可能となる。
続いて図9を用いて、本実施形態における不揮発性メモリ22の構成について説明する。不揮発性メモリ22には、例えばNAND型フラッシュメモリ等が用いられる。不揮発性メモリ22は複数の物理ブロックから構成される。物理ブロックはデータを消去する単位であり、データを書き込む前にこの単位で一旦データを消去する必要がある。また物理ブロックは複数のページから構成される。ページはデータの書き込みを行う単位である。更にページはデータ部と冗長部を含む。データ部は論理アドレス空間としてアクセスモジュール1からアクセスが可能な領域であり、実際にファイルデータ等が格納される領域である。また冗長部は、不揮発性メモリ22の管理情報やECC等が格納される領域であり、アクセスモジュール1からアクセスできない領域である。データ部の大きさは例えば4KB、冗長部の大きさは128バイト程度となる。また、データ部にのみ着目した場合の物理ブロックの大きさは、例えば512KB程度となる。よって、不揮発性メモリ22の一例として、この大きさの物理ブロック2048個から構成された場合は、不揮発性メモリ22の容量は1GBとなる。
続いて図10を用いて、本実施形態における不揮発性メモリ22内の論理アドレスと物理アドレスの関係について説明する。不揮発性メモリ22内のアドレスには、論理アドレスと物理アドレスが存在する。論理アドレスは、アクセスモジュール1から情報記録モジュール2にアクセスする際に使用する仮想的なアドレスである。一方物理アドレスは、不揮発性メモリ22内の全物理ブロックに割り当てられた実アドレスを意味し、情報記録モジュール2内で不揮発性メモリ22にアクセスする際には、この物理アドレスが使用される。また、論理アドレスは物理アドレスに対応付けられており、その対応関係は情報記録モジュール2のRAM213内のアドレス管理情報216により管理されている。
図10は、不揮発性メモリ22内の論理アドレスと物理アドレスの対応関係の一例を示した図である。論理アドレス空間上にはマスターブートレコード・パーティションテーブル等のファイルシステム管理情報等が格納され、ファイルシステムが構築されている。物理アドレス空間内には、第1のエントリ格納領域224、第2のエントリ格納領域225、FAT格納領域222、ユーザデータ格納領域223等が存在する。
第1のエントリ格納領域224は、1つ目のファイルのディレクトリエントリ308(論理アドレス空間上の“ENTRY1”)が格納される専用の物理ブロックであり、図10の例では物理ブロック番号0x0000が割り当てられている。また、第2のエントリ格納領域225は、2つ目のファイルのディレクトリエントリ308(論理アドレス空間上の“ENTRY2”)が格納される専用の物理ブロックであり、図10の例では物理ブロック番号0x0001が割り当てられている。FAT格納領域222は、FAT(305、306)が格納される専用の物理ブロックであり、図10の例では物理ブロック番号0x0002が割り当てられている。ユーザデータ格納領域223は、その他のデータが格納される物理ブロックであり、図10の例では物理ブロック番号0x0003以降の領域が割り当てられている。ユーザデータ格納領域223は更に、ユーザデータ格納領域223におけるデータ更新時に一時的に使用する物理ブロックである一時ブロック領域226を含む。図10の例では一時ブロック領域には物理ブロック番号0xF000が割り当てられている。
本実施形態における情報記録モジュール2は、図10のようにディレクトリエントリ308、FAT(305、306)を専用の物理ブロックで管理し、特別な書き込み処理を行うことにより、データ記録時の速度低下を防止する。
次に図11を用いて、本実施形態におけるアドレス管理情報216について説明する。アドレス管理情報216はデータ種別情報401、一時ブロック情報402、アドレス変換情報403を含む。データ種別情報401は、第1のエントリ格納領域224を制御するために使用する管理情報である第1エントリ位置情報411と、第2のエントリ格納領域225を制御するために使用する管理情報である第2エントリ位置情報412と、FAT格納領域222を制御するために使用する管理情報であるFAT位置情報413とを含む。
第1エントリ位置情報411は、1つ目のディレクトリエントリ308の格納位置に関する情報であり、該当するディレクトリエントリ308が格納されている物理アドレス(物理ブロック番号)及び論理アドレス(論理ブロック番号、論理ページ番号)から構成される。この論理アドレスは、アクセスモジュール1のアドレス管理情報設定処理部104により情報記録モジュール2に通知されるものである。また、第2エントリ位置情報412は、2つ目のディレクトリエントリ308の格納位置に関する情報であり、内容は第1エントリ位置情報411と同じである。またFAT位置情報は、FAT(305、306)の格納位置に関する情報であり、同様に物理アドレスと論理アドレスから構成されている。但し、FAT(305、306)はディレクトリエントリ308よりもサイズが大きいため、本FAT位置情報413で管理されるアドレス情報も複数ページ分のアドレス情報となる。FAT(305、306)の論理アドレスは情報記録モジュール2のフォーマット時に決められ、以後固定の値となるため、このFAT位置情報413は、第1エントリ位置情報411同様、アクセスモジュール1のアドレス管理情報設定処理部104により情報記録モジュール2に通知されるようにしても良いし、情報記録モジュール2内で予め固定の論理アドレスを使用するようにしても良い。
一時ブロック情報402は、ユーザデータ格納領域223内の一時ブロック領域226の状態に関する情報であり、現在一時ブロック領域226として割り当てられている物理ブロックの物理アドレスと、その物理ブロックに対応付けられている論理アドレスの情報から構成されている。
アドレス変換情報403は、ユーザデータ格納領域223内の各物理ブロックの物理アドレスと、論理アドレスとの対応関係を示す情報である。この情報は、従来の情報記録モジュール2が持つ情報と同様であり、一般に“アドレス変換テーブル”や、“論物アドレス変換表”等と呼ばれる情報である。
本実施形態におけるエントリ格納制御部217、FAT格納制御部218、ユーザデータ格納制御部219は、これらのアドレス管理情報216を用いて不揮発性メモリ22内の記録領域を制御する。すなわち、ディレクトリエントリ308やFAT(305、306)を専用の物理ブロックを用いて特別な書き込み処理により格納することにより、データ記録時の速度低下を防止する。また、本実施形態では、複数ファイルを並行して記録する場合においてもデータ記録時の速度低下を防止する方法を提供する。
例えば図12のように動画ファイルを記録している最中に静止画データを記録するような場合には、動画データと連続したアドレスに静止画データを記録する。図12の例では書き込み処理単位を1クラスタ(=16KB)であると想定している。この場合、動画データを3クラスタ連続して記録した後に、続けて2クラスタの静止画データを記録する。この際、静止画ファイルのサイズはクラスタ倍数長であるとは限らないため、通常であれば、図12の無効データの部分には何もデータが記録されない。しかしながら、本実施形態では不揮発性メモリ22に高速にデータを記録するため、処理単位の倍数長単位で連続したアドレスにユーザデータを記録するようにする。そのため、クラスタ番号6に記録される静止画データ2は、アクセスモジュール1のデータ整形処理部105によりクラスタサイズの倍数長にパディングされ、1クラスタ分のデータとして情報記録モジュール2に記録される。このパディングサイズ分は、ディレクトリエントリ308を情報記録モジュール2に記録する際に調整されるが、この処理の詳細については後述する。更に静止画データを記録した後に、動画データの続きを記録する。
このように本実施形態では、複数のファイルを並行して記録する場合、処理単位の倍数長単位で連続したアドレスにデータを記録するようにする。更にファイル終端の端数サイズについては処理単位の倍数長にパディングして情報記録モジュール2に記録する。これにより、情報記録モジュール2に対しては、あたかも1つのファイルを連続して記録しているような処理となり、高速にデータを記録することが可能となる。
以降、本実施形態における詳細なデータ記録手順について説明する。
本実施形態におけるファイル書き込み処理手順について、図13、図14を用いて説明する。図13は本実施形態におけるファイル書き込み処理手順全体を示すフローチャートであり、図14はデータ書き込み処理を詳細化した処理手順を示すフローチャートである。以下の説明では、情報記録モジュール2に対する記録処理単位としてページサイズ単位の書き込みを実施する場合の例について説明する。
(S1301):
アクセスモジュール1のアドレス管理情報設定処理部104が、記録対象ファイルのディレクトリエントリ308の位置情報を情報記録モジュール2に通知する。通知された情報は、情報記録モジュール2のRAM213内のアドレス管理情報216における第1エントリ位置情報411、あるいは第2エントリ位置情報412に格納される。記録対象ファイルが1つ目であれば第1エントリ位置情報411に、2つ目であれば第2エントリ位置情報412に格納される。
アクセスモジュール1のアドレス管理情報設定処理部104が、記録対象ファイルのディレクトリエントリ308の位置情報を情報記録モジュール2に通知する。通知された情報は、情報記録モジュール2のRAM213内のアドレス管理情報216における第1エントリ位置情報411、あるいは第2エントリ位置情報412に格納される。記録対象ファイルが1つ目であれば第1エントリ位置情報411に、2つ目であれば第2エントリ位置情報412に格納される。
(S1302):
記録対象ファイルのデータを情報記録モジュール2に書き込む。この際、ファイル終端等で書き込み処理サイズが記録処理単位の倍数長にならない場合は、アクセスモジュール1のデータ整形処理部105が記録処理単位の倍数長にデータをパディングし、情報記録モジュール2にデータを書き込む。本処理の詳細内容については図14で説明する。
記録対象ファイルのデータを情報記録モジュール2に書き込む。この際、ファイル終端等で書き込み処理サイズが記録処理単位の倍数長にならない場合は、アクセスモジュール1のデータ整形処理部105が記録処理単位の倍数長にデータをパディングし、情報記録モジュール2にデータを書き込む。本処理の詳細内容については図14で説明する。
(S1303):
全ファイルデータの書き込みが完了したか判定する。まだファイルデータが残っている場合、S1302の処理に戻る。全ファイルデータの書き込みが完了した場合、S1304の処理に進む。
全ファイルデータの書き込みが完了したか判定する。まだファイルデータが残っている場合、S1302の処理に戻る。全ファイルデータの書き込みが完了した場合、S1304の処理に進む。
(S1304):
記録対象ファイルのディレクトリエントリ308を、ファイルサイズや最終更新日時等の情報を更新した上で、情報記録モジュール2に書き込む。この際、S1302の処理においてパディングを実施した場合、ファイルサイズには本来の半端な大きさのファイルサイズを設定する。これにより、S1302でファイルデータをパディングしたとしても本来のファイルサイズを持つファイルとして情報記録モジュール2に格納することができる。
記録対象ファイルのディレクトリエントリ308を、ファイルサイズや最終更新日時等の情報を更新した上で、情報記録モジュール2に書き込む。この際、S1302の処理においてパディングを実施した場合、ファイルサイズには本来の半端な大きさのファイルサイズを設定する。これにより、S1302でファイルデータをパディングしたとしても本来のファイルサイズを持つファイルとして情報記録モジュール2に格納することができる。
(S1305):
S1302で実施したデータ書き込み処理を元にFAT(305、306)内のリンク情報を更新し、情報記録モジュール2に書き込む。
S1302で実施したデータ書き込み処理を元にFAT(305、306)内のリンク情報を更新し、情報記録モジュール2に書き込む。
続いて、図14に示すデータ書き込み処理の詳細手順について説明する。
(S1401):
論理アドレス空間上におけるユーザデータ領域302内をブロック単位に分割した場合に、空き領域を含む空きブロックを取得済みであるか判定する。取得済みである場合はS1403の処理に進む。取得していない場合はS1402の処理に進む。本実施形態では、ユーザデータ領域302にファイルデータを記録する場合、ユーザデータ領域302内をブロック単位に分割した場合、ブロック内全ての領域が空き領域となっているブロックを選択し、そのブロック内に連続的にファイルデータをページ単位で書き込むことを想定する。そのため、「空きブロックを取得済みである」というのは、記録領域として任意の空きブロックを選択済みであり、そのブロックに対するファイルデータ書き込み処理を開始している状態を意味する。逆に「空きブロックを取得済みではない」というのは、既に任意の空きブロックの終端までファイルデータを書き込んだ直後で新たにデータを書き込む前に、任意の空きブロックを選択する必要がある状態を意味する。
論理アドレス空間上におけるユーザデータ領域302内をブロック単位に分割した場合に、空き領域を含む空きブロックを取得済みであるか判定する。取得済みである場合はS1403の処理に進む。取得していない場合はS1402の処理に進む。本実施形態では、ユーザデータ領域302にファイルデータを記録する場合、ユーザデータ領域302内をブロック単位に分割した場合、ブロック内全ての領域が空き領域となっているブロックを選択し、そのブロック内に連続的にファイルデータをページ単位で書き込むことを想定する。そのため、「空きブロックを取得済みである」というのは、記録領域として任意の空きブロックを選択済みであり、そのブロックに対するファイルデータ書き込み処理を開始している状態を意味する。逆に「空きブロックを取得済みではない」というのは、既に任意の空きブロックの終端までファイルデータを書き込んだ直後で新たにデータを書き込む前に、任意の空きブロックを選択する必要がある状態を意味する。
(S1402):
S1401の判定処理において、空きブロックを取得していないと判定した場合、空きブロックの取得を行う。具体的にはFAT(305、306)を参照し、任意のブロックの領域内全てが空き領域であるブロックを見つける処理を行う。
S1401の判定処理において、空きブロックを取得していないと判定した場合、空きブロックの取得を行う。具体的にはFAT(305、306)を参照し、任意のブロックの領域内全てが空き領域であるブロックを見つける処理を行う。
(S1403):
空きブロック内の空きページを取得する。空きブロック内へのデータ記録は領域先頭から連続して行うことを想定するため、対象ブロック内の先頭から探索した場合に最初に存在する空きページを記録対象の空きページとして取得する。また、ページと記載しているのは記録処理単位がページ単位であるためであり、記録処理単位をページサイズ以外で実施する場合には、本処理はその記録処理単位サイズの空き領域を取得する処理となる。
空きブロック内の空きページを取得する。空きブロック内へのデータ記録は領域先頭から連続して行うことを想定するため、対象ブロック内の先頭から探索した場合に最初に存在する空きページを記録対象の空きページとして取得する。また、ページと記載しているのは記録処理単位がページ単位であるためであり、記録処理単位をページサイズ以外で実施する場合には、本処理はその記録処理単位サイズの空き領域を取得する処理となる。
(S1404):
記録対象データの大きさがページサイズであるか判定する。ページサイズ以外の半端サイズである場合、S1404の処理に進む。また、ページサイズ丁度である場合はS1406の処理に進む。S1403同様、記録処理単位がページサイズではない場合、本処理も記録対象データの大きさと記録処理単位サイズとの比較処理となる。
記録対象データの大きさがページサイズであるか判定する。ページサイズ以外の半端サイズである場合、S1404の処理に進む。また、ページサイズ丁度である場合はS1406の処理に進む。S1403同様、記録処理単位がページサイズではない場合、本処理も記録対象データの大きさと記録処理単位サイズとの比較処理となる。
(S1405):
記録対象データの大きさがページサイズと同じになるよう、データ整形処理部105は記録対象データをパディングする。パディングデータは0x00や0xFF等の固定値であっても良いし、任意の値でも良い。
記録対象データの大きさがページサイズと同じになるよう、データ整形処理部105は記録対象データをパディングする。パディングデータは0x00や0xFF等の固定値であっても良いし、任意の値でも良い。
(S1406):
ページサイズのデータを情報記録モジュール2に書き込み、処理を終了する。
ページサイズのデータを情報記録モジュール2に書き込み、処理を終了する。
図14の説明で用いたブロックやページのサイズは、情報記録モジュール2からアクセスモジュール1が取得できるようにしても良いし、予め固定の値を決めておきアクセスモジュール1で使用するようにしても良い。
以上、図13、図14で説明したように、本実施形態では、複数のファイルを並行して記録する場合、処理単位の倍数長単位で連続したアドレスにデータを記録するようにする。更にファイル終端の端数サイズについては処理単位の倍数長にパディングして情報記録モジュール2に記録する。これにより、情報記録モジュール2に対しては、あたかも1つのファイルを連続して記録しているような処理となり、高速にデータを記録することが可能となる。また、ここではディレクトリエントリ308やFAT(305、306)の書き込みをファイル終端にまとめて実施する場合の例について説明したが、数秒間隔で定期的に更新する等、ファイルデータ記録の合間に実施しても良い。
図15は、本実施形態において複数のファイルを並行して書き込む場合の書き込みシーケンス例について示した図である。図15のFile1が1つ目のファイル、File2が2つ目のファイルを意味している。この例では1つ目のファイルのデータ記録中に2つ目のファイルを記録する場合を示しており、例えば動画ファイル記録中に静止画ファイルを記録する場合の処理等が該当する。この場合、図13で説明した処理手順に従い1つ目のファイルを記録している最中に2つ目のファイルの記録処理に切り替わり、2つ目のファイルの記録完了後に、また1つ目のファイルの記録処理に戻る。しかしながら、これら2つのファイルのデータは、図13、図14で説明した処理手順に従い、任意のブロック内の連続したアドレスに記録されるため、記録するファイルが切り替わっても記録速度が低下することなく、安定してデータを記録することができる。
続いて図16を用いて、本実施形態のエントリ格納制御部217におけるディレクトリエントリ書き込み処理手順について説明する。図16の説明では1つ目のファイルのディレクトリエントリ308に対する書き込み処理を中心に説明するが、2つ目のファイルのディレクトリエントリ308に対する書き込み処理手順もほぼ同じとなる。すなわち、以降の処理において“第1エントリ位置情報”を“第2エントリ位置情報”、“第1のエントリ格納領域”を“第2のエントリ格納領域”と読み替えると2つ目のファイルのディレクトリエントリ308に対する書き込み処理手順となる。
(S1601):
アクセスモジュール1から情報記録モジュール2に対して発行された書き込み命令を元に、書き込み先のアドレスを取得する。ここで書き込み先のアドレスとは、アクセスモジュール1が情報記録モジュール2に対する書き込みコマンドで指定する論理アドレスを意味する。
アクセスモジュール1から情報記録モジュール2に対して発行された書き込み命令を元に、書き込み先のアドレスを取得する。ここで書き込み先のアドレスとは、アクセスモジュール1が情報記録モジュール2に対する書き込みコマンドで指定する論理アドレスを意味する。
(S1602):
S1601で取得した書き込み先アドレスと第1エントリ位置情報411を比較し、値が一致するか判定する。値が一致する場合はS1604の処理に進む。値が一致しない場合はS1603の処理に進む。
S1601で取得した書き込み先アドレスと第1エントリ位置情報411を比較し、値が一致するか判定する。値が一致する場合はS1604の処理に進む。値が一致しない場合はS1603の処理に進む。
(S1603):
S1602の判定処理において値が一致しないと判定した場合、第1のエントリ格納領域224に対する書き込みではないため、ユーザデータ格納領域223に対する書き込み処理等、他の書き込み処理を実施して処理を終了する。
S1602の判定処理において値が一致しないと判定した場合、第1のエントリ格納領域224に対する書き込みではないため、ユーザデータ格納領域223に対する書き込み処理等、他の書き込み処理を実施して処理を終了する。
(S1604):
S1602の判定処理において値が一致すると判定した場合、第1のエントリ格納領域224内に未使用ページが存在するか判定する。未使用ページが存在する場合はS1606の処理に進む。未使用ページが存在しない場合はS1605の処理に進む。ここで未使用ページとは、データ消去済みのページで有効なデータを格納しておらず、データを書き込むことが可能なページであることを意味する。
S1602の判定処理において値が一致すると判定した場合、第1のエントリ格納領域224内に未使用ページが存在するか判定する。未使用ページが存在する場合はS1606の処理に進む。未使用ページが存在しない場合はS1605の処理に進む。ここで未使用ページとは、データ消去済みのページで有効なデータを格納しておらず、データを書き込むことが可能なページであることを意味する。
(S1605):
S1604の判定処理において未使用ページが存在しないと判定した場合、第1のエントリ格納領域224にデータを書き込むことができないため、一旦第1のエントリ格納領域224に格納されているデータを全て消去する。これにより、第1のエントリ格納領域224に未使用ページを生成する。
S1604の判定処理において未使用ページが存在しないと判定した場合、第1のエントリ格納領域224にデータを書き込むことができないため、一旦第1のエントリ格納領域224に格納されているデータを全て消去する。これにより、第1のエントリ格納領域224に未使用ページを生成する。
(S1606):
未使用ページの先頭にデータを書き込む。未使用ページへのデータ記録は領域先頭から連続して行うことを想定するため、第1のエントリ格納領域224の先頭から探索した場合に最初に存在する未使用ページを記録対象の未使用ページとする。
未使用ページの先頭にデータを書き込む。未使用ページへのデータ記録は領域先頭から連続して行うことを想定するため、第1のエントリ格納領域224の先頭から探索した場合に最初に存在する未使用ページを記録対象の未使用ページとする。
図17は、本実施形態における第1のエントリ格納領域224の状態の一例を示した図である。図17(a)では、第1のエントリ格納領域224の先頭ページにディレクトリエントリ308(ENTRY1_1)が格納されており、以降のページは全て消去済みの未使用ページとなっている。ここで、アクセスモジュール1がディレクトリエントリ308にENTRY1_2のデータを上書きする場合、図17(b)の状態に変化する。図17(b)では、ENTRY1_2のデータが、先頭の未使用ページであった2ページ目に格納されている。また、この状態においては灰色のENTRY1_2のデータが最新のデータであり、ENTRY1_1のデータは古いデータとして扱われる。すなわち、この状態でアクセスモジュール1がディレクトリエントリ308を読み出した場合、情報記録モジュール2はENTRY1_2のデータをアクセスモジュール1に出力する。同様にディレクトリエントリ308にデータを上書きし続けた場合、図17(c)、図17(d)と変化する。図17(d)の状態で更にアクセスモジュール1がディレクトリエントリ308(ENTRY1_9)を上書きした場合、S1605の処理により第1のエントリ格納領域224のデータが一旦消去され、先頭ページにENTRY1_9のデータが格納される。このように第1のエントリ格納領域224には常に1ページ分の有効なディレクトリエントリ308のデータが保持され、書き込み処理においては無駄なコピー処理が発生しない。
以上、図16、図17で説明したように、本実施形態のエントリ格納制御部217は、アクセスモジュール1のアドレス管理情報設定処理部104により通知された第1エントリ位置情報411、あるいは第2エントリ位置情報412を用いて、ディレクトリエントリ308を第1のエントリ格納領域224、あるいは第2のエントリ格納領域225に格納する。これによりディレクトリエントリ308の書き込み時における無駄なコピー処理の発生を防止し、高速にディレクトリエントリ308を書き込むことが可能となる。
続いて図18を用いて、本実施形態のFAT格納制御部218におけるFAT書き込み処理手順について説明する。図18の処理手順は図16の処理手順とほぼ同じであるため、詳細な説明は割愛する。図18が図16と異なる点は、“第1エントリ位置情報”が“FAT位置情報”、“第1のエントリ格納領域”が“FAT格納領域”である点と、書き込み処理単位が1ページ単位ではなく、複数ページとなっている点である。
図19は、本実施形態におけるFAT格納領域222の状態の一例を示した図である。図19(a)では、FAT格納領域222の先頭4ページにFAT(305、306)のデータが格納されている。すなわち、この例ではFAT(305、306)の大きさは4ページであり、各々FAT_A_1からFAT_D_1までのデータが格納されていることを意味する。また、FAT格納領域222の残り4ページは消去済みの未使用ページとなっている。ここで、アクセスモジュール1がFAT(305、306)にFAT_A_2からFAT_D_2までのデータを上書きする場合、図19(b)の状態に変化する。図19(b)では、FAT_A_2からFAT_D_2までのデータが、先頭の未使用ページであった5ページ目以降に格納されている。また、この状態においては灰色のFAT_A_2からFAT_D_2までのデータが最新のデータであり、FAT_A_1からFAT_D_1までのデータは古いデータとして扱われる。すなわち、この状態でアクセスモジュール1がFAT(305、306)を読み出した場合、情報記録モジュール2はFAT_A_2からFAT_D_2までのデータをアクセスモジュール1に出力する。更にFAT(305、306)にFAT_A_3からFAT_D_3までのデータを上書きした場合、S1805の処理によりFAT格納領域222のデータが一旦消去され、先頭ページよりFAT_A_3からFAT_D_3までのデータが格納される。このようにFAT格納領域222には常に必要サイズ分の有効なFATデータが保持され、書き込み処理においては無駄なコピー処理が発生しない。
以上、図18、図19で説明したように、本実施形態のFAT格納制御部218は、アクセスモジュール1のアドレス管理情報設定処理部104により通知された、あるいは予め固定の値として保持していたFAT位置情報413を用いて、FAT(305、306)をFAT格納領域222に格納する。これによりFAT(305、306)の書き込み時における無駄なコピー処理の発生を防止し、高速にFAT(305、306)を書き込むことが可能となる。
続いて図20、図21、図22を用いて、本実施形態のユーザデータ格納制御部219におけるユーザデータ書き込み処理手順について説明する。
図20は、本実施形態のユーザデータ格納制御部219におけるユーザデータ書き込み処理手順を示したフローチャートである。図21は、本実施形態のユーザデータ格納領域223の状態の一例を示した図である。同様に図22は、本実施形態のユーザデータ格納領域223の状態の別の一例を示した図である。
図21、図22において、点線で囲んだ中は一時ブロック領域226を示す。本実施形態においてユーザデータ格納領域223にデータを書き込む際には、一旦一時ブロック領域226にデータを書き込み、一時ブロック領域226全体にデータが書き込まれた時点で1ブロック分のデータが全て正式に書き込まれた状態となる。すなわち、一時ブロック領域226が割り当てられている論理アドレスについては、部分的に古いデータを含む物理ブロックと一時ブロック領域226の2つの物理ブロックが割り当てられることになる。例えば、図22(a)の物理ブロック番号0x0003(先頭ページのみ古いデータ)と、物理ブロック番号0xF000(先頭ページのみ新しいデータ)の2つの物理ブロックが同一の論理アドレスに割り当てられている。
(S2001):
アクセスモジュール1から情報記録モジュール2に対して発行された書き込み命令を元に、書き込み先のアドレスを取得する。ここで書き込み先のアドレスとは、アクセスモジュール1が情報記録モジュール2に対する書き込みコマンドで指定する論理アドレスを意味する。
アクセスモジュール1から情報記録モジュール2に対して発行された書き込み命令を元に、書き込み先のアドレスを取得する。ここで書き込み先のアドレスとは、アクセスモジュール1が情報記録モジュール2に対する書き込みコマンドで指定する論理アドレスを意味する。
(S2002):
S2001で取得した書き込み先アドレスと第1エントリ位置情報411、第2エントリ位置情報412、FAT位置情報413を比較し、ディレクトリエントリ308やFAT(305、306)の書き込みであるか判定する。ディレクトリエントリ308やFAT(305、306)の書き込みであると判定した場合、S2003の処理に進む。ディレクトリエントリ308やFAT(305、306)の書き込みではないと判定した場合、S2004の処理に進む。
S2001で取得した書き込み先アドレスと第1エントリ位置情報411、第2エントリ位置情報412、FAT位置情報413を比較し、ディレクトリエントリ308やFAT(305、306)の書き込みであるか判定する。ディレクトリエントリ308やFAT(305、306)の書き込みであると判定した場合、S2003の処理に進む。ディレクトリエントリ308やFAT(305、306)の書き込みではないと判定した場合、S2004の処理に進む。
(S2003):
S2002の判定処理においてディレクトリエントリ308やFAT(305、306)の書き込みであると判定した場合、ユーザデータ格納領域223に対する書き込みではないため、第1のエントリ格納領域224に対する書き込み処理等、他の書き込み処理を実施して処理を終了する。
S2002の判定処理においてディレクトリエントリ308やFAT(305、306)の書き込みであると判定した場合、ユーザデータ格納領域223に対する書き込みではないため、第1のエントリ格納領域224に対する書き込み処理等、他の書き込み処理を実施して処理を終了する。
(S2004):
S2002の判定処理においてディレクトリエントリ308やFAT(305、306)の書き込みではないと判定した場合、S2001で取得した書き込み先アドレスと一時ブロック情報402とを比較し、一時ブロック領域226に対する書き込み処理であるか判定する。一時ブロック領域226に対する書き込み処理であると判定した場合、S2005の処理に進む。一時ブロック領域226に対する書き込み処理ではないと判定した場合、S2006の処理に進む。
S2002の判定処理においてディレクトリエントリ308やFAT(305、306)の書き込みではないと判定した場合、S2001で取得した書き込み先アドレスと一時ブロック情報402とを比較し、一時ブロック領域226に対する書き込み処理であるか判定する。一時ブロック領域226に対する書き込み処理であると判定した場合、S2005の処理に進む。一時ブロック領域226に対する書き込み処理ではないと判定した場合、S2006の処理に進む。
(S2005):
S2004の判定処理において、一時ブロック領域226に対する書き込み処理であると判定した場合、一時ブロック領域226内でアドレスジャンプが発生するか判定する。アドレスジャンプが発生すると判定した場合、S2006の処理に進む。アドレスジャンプが発生しないと判定した場合、S2009の処理に進む。
S2004の判定処理において、一時ブロック領域226に対する書き込み処理であると判定した場合、一時ブロック領域226内でアドレスジャンプが発生するか判定する。アドレスジャンプが発生すると判定した場合、S2006の処理に進む。アドレスジャンプが発生しないと判定した場合、S2009の処理に進む。
ここでアドレスジャンプが発生するとは、一時ブロック領域226内に最後に書き込まれたユーザデータのアドレスと、S2001で取得した書き込み先アドレスが連続していない場合を意味する。例えば、図21(a)の状態では、一時ブロック領域226の1ページ目までユーザデータ(DATA1A_2)が書込まれている。この状態でDATA1A_2の論理アドレスの直後の論理アドレスから1ページ先にある論理アドレスに1ページ分のユーザデータをアクセスモジュール1が書き込もうとした場合、一時ブロック領域226の3ページ目に対する書き込み処理が発生することになり、アドレスジャンプが発生することになる。この場合、本実施形態では、一時ブロック領域226への書き込みは領域先頭から終端まで連続したアドレスにデータを書き込むことを想定しているため、S2006で示すように、ジャンプされた1ページ分のデータをコピーする処理が必要となる。
(S2006):
S2004の判定処理で書き込み先アドレスが一時ブロック情報402と一致しないと判定した場合や、S2005の判定処理でアドレスジャンプが発生すると判定した場合、データコピー処理を実施する。図22は、書き込み先アドレスが一時ブロック情報402と一致しない場合の例を示している。この場合、本データコピー処理の前後で、図22(b)の状態から図22(c)の状態に変化する。すなわち、図22(b)の状態では物理ブロック番号0x0003に対応する論理アドレス上の領域にアクセスモジュール1がユーザデータを書き込んだ場合を示しており、この状態から図22(c)では物理ブロック番号0x0004に対応する論理アドレス上の領域にアクセスモジュール1がユーザデータを書き込んだ場合を示している。この場合、物理ブロック番号0x0004に対応する論理アドレス上の領域への記録のために、一時ブロック領域226を再割り当てするため、一旦物理ブロック番号0x0003に対応する論理アドレス上の領域への記録を完了させる必要がある。そのため、物理ブロック番号0x0003に格納されているDATA1B_1からDATA2D_1の有効データを、一時ブロック領域226である物理ブロック番号0xF000の未使用ページにコピーする。
S2004の判定処理で書き込み先アドレスが一時ブロック情報402と一致しないと判定した場合や、S2005の判定処理でアドレスジャンプが発生すると判定した場合、データコピー処理を実施する。図22は、書き込み先アドレスが一時ブロック情報402と一致しない場合の例を示している。この場合、本データコピー処理の前後で、図22(b)の状態から図22(c)の状態に変化する。すなわち、図22(b)の状態では物理ブロック番号0x0003に対応する論理アドレス上の領域にアクセスモジュール1がユーザデータを書き込んだ場合を示しており、この状態から図22(c)では物理ブロック番号0x0004に対応する論理アドレス上の領域にアクセスモジュール1がユーザデータを書き込んだ場合を示している。この場合、物理ブロック番号0x0004に対応する論理アドレス上の領域への記録のために、一時ブロック領域226を再割り当てするため、一旦物理ブロック番号0x0003に対応する論理アドレス上の領域への記録を完了させる必要がある。そのため、物理ブロック番号0x0003に格納されているDATA1B_1からDATA2D_1の有効データを、一時ブロック領域226である物理ブロック番号0xF000の未使用ページにコピーする。
(S2007):
現在の一時ブロック領域226に割り当てられた物理ブロックに未使用ページが存在するか判定する。未使用ページが存在する場合はS2009の処理に進む。未使用ページが存在しない場合はS2008の処理に進む。例えば、S2006の処理により図22(c)のように物理ブロック0xF000にデータがコピーされ未使用ページがなくなると、一時ブロック領域226に未使用ページが存在しないと判定する。
現在の一時ブロック領域226に割り当てられた物理ブロックに未使用ページが存在するか判定する。未使用ページが存在する場合はS2009の処理に進む。未使用ページが存在しない場合はS2008の処理に進む。例えば、S2006の処理により図22(c)のように物理ブロック0xF000にデータがコピーされ未使用ページがなくなると、一時ブロック領域226に未使用ページが存在しないと判定する。
(S2008):
S2007の判定処理において、現在の一時ブロック領域226に割り当てられた物理ブロックに未使用ページが存在しないと判定した場合、旧データのみを格納した物理ブロックに含まれるデータを一旦消去し、この物理ブロックを新しい一時ブロック領域226とするよう、一時ブロック情報402を更新する。例えば、図22(c)の例の場合、旧データのみを格納した物理ブロックである物理ブロック番号0x0003の物理ブロックのデータが一旦消去され、この物理ブロックが新しい一時ブロック領域226となる。このように一時ブロック領域226は、逐次新しい物理ブロックに移動していくことになる。
S2007の判定処理において、現在の一時ブロック領域226に割り当てられた物理ブロックに未使用ページが存在しないと判定した場合、旧データのみを格納した物理ブロックに含まれるデータを一旦消去し、この物理ブロックを新しい一時ブロック領域226とするよう、一時ブロック情報402を更新する。例えば、図22(c)の例の場合、旧データのみを格納した物理ブロックである物理ブロック番号0x0003の物理ブロックのデータが一旦消去され、この物理ブロックが新しい一時ブロック領域226となる。このように一時ブロック領域226は、逐次新しい物理ブロックに移動していくことになる。
(S2009):
一時ブロック領域226内の未使用ページの先頭にユーザデータを書き込み、処理を終了する。未使用ページへのデータ記録は領域先頭から連続して行うことを想定するため、一時ブロック領域226の先頭から探索した場合に最初に存在する未使用ページを記録対象の未使用ページとする。
一時ブロック領域226内の未使用ページの先頭にユーザデータを書き込み、処理を終了する。未使用ページへのデータ記録は領域先頭から連続して行うことを想定するため、一時ブロック領域226の先頭から探索した場合に最初に存在する未使用ページを記録対象の未使用ページとする。
図20で説明した処理手順は、従来の情報記録モジュール2におけるユーザデータ書き込み処理手順とほぼ同じものである。しかしながら、本実施形態におけるアクセスモジュール1はユーザデータを記録する際に、複数ファイルを並行して記録する場合においても、半端サイズデータの場合はパディングしながら連続したアドレスに記録処理単位サイズの倍数長単位で記録を行う。そのため、実際には図22で示すようなコピー処理が発生することはなく、図21のように一時ブロック領域226の先頭から終端まで連続してユーザデータが格納されることになり、無駄なコピー処理は発生しない。
以上、図20、図21、図22で説明したように、本実施形態のユーザデータ格納制御部219は、一時ブロック領域226を用いてユーザデータ格納領域223に対するデータ書き込み処理を実施する。しかしながら、本実施形態のアクセスモジュール1の処理により、ユーザデータ書き込み時における無駄なコピー処理の発生を防止し、高速にユーザデータを書き込むことが可能となる。
以上のように、本実施形態のアクセスモジュール1と情報記録モジュール2を組み合わせて使用し、複数のファイルを並行して記録する場合において、情報記録モジュール2内で生じる無駄なコピー処理を削減して記録速度の低下を防止することにより、高速に安定して情報記録モジュール2にファイルデータを書き込むことが可能となる。
尚、本発明を上記の実施形態に基づいて説明してきたが、本発明は上記の実施形態に限定されないのは勿論である。本発明の趣旨を逸脱しない範囲で実施変更することができる。本実施形態で記載された数値は一例であり、他の値を使用しても良い。例えば、物理ブロックサイズやページサイズ等の値は全て一例であり、本実施形態で記載した値に限定されるものではない。
また、図1の説明において情報記録モジュール2のコントローラ21の構成を説明したが、その他の構成としても良い。例えば、コントローラ21内のCPU212やRAM213等をコントローラ21の外部に配置しても良いし、逆にその他の構成要素をコントローラ21内に含ませても良い。
また、本実施形態ではファイルシステムとしてFAT16を例として説明したが、その他のファイルシステムを用いても良い。
また、情報記録モジュール2に使用される不揮発性メモリ22の枚数は1枚である必要はなく、複数枚を組み合わせて使用しても良い。特に複数の不揮発性メモリ22に対して並列にデータ書き込みできるように構成した場合、更に書き込み処理を高速化することが可能となる。
また、データ整形処理部105で書き込みデータをパディングした場合、S1304の処理において、ディレクトリエントリ308上のファイルサイズを調整する方法について説明した。しかしながら、動画ファイルや静止画ファイルのファイルフォーマット上でパディングを入れる機能をサポートしている場合には、ディレクトリエントリ308上のファイルサイズはパディング後のサイズをそのまま格納するようにしても良い。
また、記録処理単位サイズがページサイズと同じである場合の例について説明したが、その他のサイズを記録処理単位サイズとして用いても良い。例えば、ファイルシステムのデータ管理単位サイズであるクラスタサイズの倍数長等を記録処理単位サイズとして使用しても良い。
また、本実施形態では2つのファイルを並行して書き込む場合の例について説明したが、3つ以上のファイルを並行して書き込めるようにしても良い。その場合は、エントリ格納領域の個数を並行して書き込むファイルの数に増やすことにより対応することが可能となる。
また、本実施形態では2つのファイルを並行して書き込む場合の例について説明したが、ファイルシステムにより、ファイルのメタデータをファイルデータとは別に格納する機能をサポートしている場合には、本発明の第2のエントリ格納領域を該当ファイルのメタデータ格納に使用しても良い。例えば、NTFSファイルシステムでは、ファイルデータとは別にそのファイルに関するメタデータとしてNamed Streamと呼ばれる拡張情報を格納することができる。そのため、例えば本発明の第2のエントリ格納領域を該当ファイルのNamed Streamの情報を格納するために使用することも可能である。これにより、このようなファイルのメタデータも高速に記録することが可能となる。
また、図13のS1301において、エントリ位置情報設定の処理をファイルデータ記録に先立ち予め実施する方法について説明したが、S1304の処理等、実際にディレクトリエントリを書き込む際にアクセスモジュール1から情報記録モジュール2にエントリ位置情報を通知するようにしても良い。
また、図14のデータ書き込み処理手順においては、ブロック内全てが空き領域であるブロックのみを取得して、書き込み対象のブロックとしていたが、特許文献1に開示されているように、所定の閾値以上の空き領域を含むブロックを書き込み対象のブロックとしても良い。
また、図19では、FAT(305、306)が4ページから構成され、更新時には全てのFAT(305、306)を一度に更新する場合の例について説明したが、必ずしもFAT(305、306)全体を更新する必要はなく、ファイルデータ書き込みに伴い変更された、FAT(305、306)上の一部の領域のみを更新するようにしても良い。
[他の実施形態]
なお、上記実施形態で説明したアクセスモジュール(アクセス装置)、情報記録モジュール(情報記録装置)において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
なお、上記実施形態で説明したアクセスモジュール(アクセス装置)、情報記録モジュール(情報記録装置)において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係るアクセスモジュール(アクセス装置)、情報記録モジュール(情報記録装置)をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
また、上記実施形態において、アクセスモジュール(アクセス装置)と情報記録モジュール(情報記録装置)とは、別装置(別モジュール)である場合について説明したが、これに限定されることはなく、アクセスモジュール(アクセス装置)と情報記録モジュール(情報記録装置)とは、1つの装置内に構成されるものであってもよい。
本発明に関わるアクセスモジュールは、ディレクトリエントリの格納位置に関する情報を情報記録モジュールに通知するアドレス管理情報設定処理部と、ファイル終端等の半端データを書き込む際にファイルデータをパディングして情報記録モジュールに書き込むデータ整形処理部とを含む。また、本発明の情報記録モジュールは、アクセスモジュールにより書き込みが指示されたデータの種別に応じて格納先、及び格納方法を変更するエントリ格納制御部、FAT格納制御部、及びユーザデータ格納制御部を含む。これらアクセスモジュールと情報記録モジュールとを組み合わせることにより、複数のファイルを並行して記録する場合において、情報記録モジュール内で生じる無駄なコピー処理を削減して記録速度の低下を防止し、高速に安定して情報記録モジュールにファイルデータを書き込むことが可能となる。このようなアクセスモジュールは、音楽や静止画、動画等のデジタルコンテンツを取り扱う機器、とりわけコンテンツデータをリアルタイムに情報記録モジュールに記録する必要がある機器、及び動画ファイルと静止画ファイル等の複数ファイルを同時に記録する機器に最適であり、PCアプリケーション、オーディオレコーダ、DVDレコーダ、HDDレコーダ、ムービー、デジタルスチルカメラ、携帯電話端末等として利用することができる。また、本発明の情報記録モジュールは、上記デジタルコンテンツ等を格納するメモリカード等のリムーバブルメディア、あるいは内蔵記録装置等として利用することができる。
1 アクセスモジュール
2 情報記録モジュール
11,212 CPU
12,213 RAM
13 情報記録モジュールインタフェース
14,214 ROM
21 コントローラ
22 不揮発性メモリ
101 アプリケーション制御部
102 ファイルシステム制御部
103 情報記録モジュールアクセス部
104 アドレス管理情報設定処理部
105 データ整形処理部
211 アクセスモジュールインタフェース
215 不揮発性メモリインタフェース
216 アドレス管理情報
217 エントリ格納制御部
218 FAT格納制御部
219 ユーザデータ格納制御部
221 エントリ格納領域
222 FAT格納領域
223 ユーザデータ格納領域
224 第1のエントリ格納領域
225 第2のエントリ格納領域
226 一時ブロック領域
301 ファイルシステム管理情報領域
302 ユーザデータ領域
303 マスターブートレコード・パーティションテーブル
304 パーティションブートセクタ
305,306 FAT
307 ルートディレクトリエントリ
308 ディレクトリエントリ
401 データ種別情報
402 一時ブロック情報
403 アドレス変換情報
411 第1エントリ位置情報
412 第2エントリ位置情報
413 FAT位置情報
2 情報記録モジュール
11,212 CPU
12,213 RAM
13 情報記録モジュールインタフェース
14,214 ROM
21 コントローラ
22 不揮発性メモリ
101 アプリケーション制御部
102 ファイルシステム制御部
103 情報記録モジュールアクセス部
104 アドレス管理情報設定処理部
105 データ整形処理部
211 アクセスモジュールインタフェース
215 不揮発性メモリインタフェース
216 アドレス管理情報
217 エントリ格納制御部
218 FAT格納制御部
219 ユーザデータ格納制御部
221 エントリ格納領域
222 FAT格納領域
223 ユーザデータ格納領域
224 第1のエントリ格納領域
225 第2のエントリ格納領域
226 一時ブロック領域
301 ファイルシステム管理情報領域
302 ユーザデータ領域
303 マスターブートレコード・パーティションテーブル
304 パーティションブートセクタ
305,306 FAT
307 ルートディレクトリエントリ
308 ディレクトリエントリ
401 データ種別情報
402 一時ブロック情報
403 アドレス変換情報
411 第1エントリ位置情報
412 第2エントリ位置情報
413 FAT位置情報
Claims (14)
- データを格納する不揮発性メモリを有する情報記録モジュールにアクセスするアクセスモジュールであって、
所定のデータ種別のデータが格納される論理空間領域の位置情報を予め前記情報記録モジュールに通知するアドレス管理情報設定処理部と、
前記情報記録モジュールに記録するファイルデータにおける有効データのサイズが記録処理単位の所定の倍数長未満であった場合に、該ファイルデータに任意のデータを付加して前記記録処理単位の所定の倍数長サイズのデータに変更し、前記情報記録モジュールにファイルデータを記録するデータ整形処理部と、
を備えるアクセスモジュール。 - 前記データ整形処理部は、
複数ファイルのファイルデータを並行して前記情報記録モジュールに記録する場合に、前記記録処理単位の所定の倍数長の連続領域サイズ内で連続したアドレスになるよう、前記複数ファイルのファイルデータを順番に並べながら前記情報記録モジュールに記録する、
請求項1記載のアクセスモジュール。 - 前記所定のデータ種別は、
記録対象ファイルデータの名前、ファイルサイズのいずれかの情報を含むファイルシステム管理情報である、
請求項1記載のアクセスモジュール。 - 前記所定のデータ種別は、
記録対象ファイルデータの名前、ファイルサイズのいずれかの情報を含むファイルシステム管理情報であり、
前記アドレス管理情報設定処理部は、複数個の前記ファイルシステム管理情報を格納する領域の位置情報を、予め前記情報記録モジュールに通知する、
請求項2記載のアクセスモジュール。 - 前記アクセスモジュールは、
前記情報記録モジュールに記録するファイルデータに任意のデータを付加した場合、前記ファイルサイズの情報を含むファイルシステム管理情報に、データ付加前の有効データの大きさをファイルサイズとして設定する、
請求項1記載のアクセスモジュール。 - 前記所定の連続領域サイズは、
前記情報記録モジュールに含まれる不揮発性メモリの物理的なデータ消去処理単位サイズの倍数長である、
請求項2記載のアクセスモジュール。 - データを格納する不揮発性メモリと、
外部のアクセスモジュールから予め指定される、所定のデータ種別のデータが格納される論理空間領域の位置情報を格納するアドレス管理情報と、
前記アドレス管理情報に基づき前記所定のデータ種別のデータが記録されると認識した場合に、前記不揮発性メモリ内の特定の領域に該データを格納するエントリ格納制御部と、
を備える情報記録モジュール。 - 前記所定のデータ種別は、
記録対象ファイルの名前、ファイルサイズの情報のいずれかを含むファイルシステム管理情報である、
請求項7記載の情報記録モジュール。 - 前記アドレス管理情報は、前記ファイルシステム管理情報を格納する領域の位置情報を複数保持する、
請求項8記載の情報記録モジュール。 - 前記エントリ格納制御部は、
前記アドレス管理情報に保持された、複数のファイルシステム管理情報を格納する領域の位置情報のそれぞれに特定の領域を割り当て、該ファイルシステム管理情報を格納する、
請求項9記載の情報記録モジュール。 - 前記アドレス管理情報は、
前記所定のデータ種別とは異なる第2のデータ種別のデータを格納する領域の位置情報を更に含み、
前記エントリ格納制御部は、
前記アドレス管理情報に基づき前記第2のデータ種別のデータが記録されると認識した場合に、前記不揮発性メモリ内の前記所定のデータ種別のデータを格納する領域とは異なる特定の領域にデータを格納する処理を更に含む、
請求項7記載の情報記録モジュール。 - 前記第2のデータ種別は、
ファイルシステムが使用する領域管理情報である、
請求項11記載の情報記録モジュール。 - データを格納する不揮発性メモリを有する情報記録モジュールを制御するコントローラであって、
外部のアクセスモジュールから予め指定される、所定のデータ種別のデータを格納する論理空間領域の位置情報を格納するアドレス管理情報を参照し、前記所定のデータ種別のデータが記録されると認識した場合に、前記不揮発性メモリ内の特定の領域に該データを格納するエントリ格納制御部、
を備えるコントローラ。 - 情報記録モジュールと、前記情報記録モジュールにアクセスするアクセスモジュールとを備える情報記録システムであって、
前記情報記録モジュールは、
データを格納する不揮発性メモリと、
前記アクセスモジュールから予め指定される、所定のデータ種別のデータを格納する論理空間領域の位置情報を格納するアドレス管理情報と、
前記アドレス管理情報に基づき前記所定のデータ種別のデータが記録されると認識した場合に、前記不揮発性メモリ内の特定の領域に該データを格納するエントリ格納制御部と、
を有し、
前記アクセスモジュールは、
前記所定のデータ種別のデータを格納する論理空間領域の位置情報を予め前記情報記録モジュールに通知するアドレス管理情報設定処理部と、
前記情報記録モジュールに記録するファイルデータにおける有効データのサイズが記録処理単位の所定の倍数長未満であった場合に、該ファイルデータに任意のデータを付加して前記記録処理単位の所定の倍数長サイズのデータに変更し、前記情報記録モジュールにファイルデータを記録するデータ整形処理部と、
を有する、
情報記録システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010535157A JP5485163B2 (ja) | 2009-03-13 | 2010-03-04 | アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009060695 | 2009-03-13 | ||
JP2009060695 | 2009-03-13 | ||
JP2010535157A JP5485163B2 (ja) | 2009-03-13 | 2010-03-04 | アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム |
PCT/JP2010/001510 WO2010103760A1 (ja) | 2009-03-13 | 2010-03-04 | アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2010103760A1 JPWO2010103760A1 (ja) | 2012-09-13 |
JP5485163B2 true JP5485163B2 (ja) | 2014-05-07 |
Family
ID=42728056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010535157A Active JP5485163B2 (ja) | 2009-03-13 | 2010-03-04 | アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110055297A1 (ja) |
JP (1) | JP5485163B2 (ja) |
WO (1) | WO2010103760A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102455975B (zh) * | 2010-10-15 | 2014-08-27 | 慧荣科技股份有限公司 | 用来进行数据整形的方法以及其记忆装置及控制器 |
JP5820973B2 (ja) | 2010-12-28 | 2015-11-24 | パナソニックIpマネジメント株式会社 | データ記録装置 |
US9093445B2 (en) * | 2011-08-26 | 2015-07-28 | International Business Machines Corporation | Packaging identical chips in a stacked structure |
JP2014044490A (ja) * | 2012-08-24 | 2014-03-13 | Toshiba Corp | ホスト装置及びメモリデバイス |
US9986696B2 (en) * | 2013-08-26 | 2018-06-05 | Et Water Systems, Inc. | Irrigation smart controllers with programming and firmware updating |
KR102247087B1 (ko) | 2014-07-08 | 2021-05-03 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9639275B2 (en) * | 2014-08-06 | 2017-05-02 | Seagate Technology Llc | Managing data within a storage device based on file system metadata |
KR101886176B1 (ko) * | 2016-10-25 | 2018-08-08 | 시큐리티플랫폼 주식회사 | 소유자만 기록 가능한 부트영역을 포함하는 저장장치 |
TWI631461B (zh) * | 2017-06-27 | 2018-08-01 | 晨星半導體股份有限公司 | 行車記錄器之儲存裝置的控制方法與儲存裝置控制系統 |
US11435922B2 (en) | 2017-06-27 | 2022-09-06 | Sigmastar Technology Ltd. | Control method for storage device of driving recorder and storage device control system |
CN108664577B (zh) * | 2018-05-03 | 2021-03-12 | 中北大学 | 一种基于flash空闲区的文件管理方法及*** |
CN112567327A (zh) * | 2018-08-21 | 2021-03-26 | 索尼公司 | 非易失性存储装置、主机装置和数据存储*** |
KR20200072639A (ko) | 2018-12-12 | 2020-06-23 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
CN113495681A (zh) * | 2020-04-07 | 2021-10-12 | 杭州萤石软件有限公司 | 一种nand flash文件数据存取方法、装置及存储介质 |
KR20220057355A (ko) * | 2020-10-29 | 2022-05-09 | 삼성전자주식회사 | 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법 |
CN112905112B (zh) * | 2021-02-09 | 2023-03-31 | 上海锐伟电子科技有限公司 | 一种嵌入式设备的数据处理方法及*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009503738A (ja) * | 2005-08-03 | 2009-01-29 | サンディスク コーポレイション | 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5717951A (en) * | 1995-08-07 | 1998-02-10 | Yabumoto; Kan W. | Method for storing and retrieving information on a magnetic storage medium via data blocks of variable sizes |
US6910038B1 (en) * | 2000-03-30 | 2005-06-21 | Sonic Solutions, Inc. | Methods for efficient host processing of data files selected for recording to an optical disc media |
WO2004097650A1 (ja) * | 2003-04-25 | 2004-11-11 | Matsushita Electric Industrial Co., Ltd. | データ記録装置 |
JP4228288B2 (ja) * | 2003-06-11 | 2009-02-25 | ソニー株式会社 | 記録制御装置および方法、プログラム、並びにデータ記録方法 |
WO2005055064A1 (ja) * | 2003-12-03 | 2005-06-16 | Matsushita Electric Industrial Co., Ltd. | 情報記録媒体のデータ処理装置及びデータ記録方法 |
US7669003B2 (en) * | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
US7558906B2 (en) * | 2005-08-03 | 2009-07-07 | Sandisk Corporation | Methods of managing blocks in nonvolatile memory |
US7949845B2 (en) * | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7480766B2 (en) * | 2005-08-03 | 2009-01-20 | Sandisk Corporation | Interfacing systems operating through a logical address space and on a direct data file basis |
US7552271B2 (en) * | 2005-08-03 | 2009-06-23 | Sandisk Corporation | Nonvolatile memory with block management |
US20070143566A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with data alignment in a directly mapped file storage system |
US8572307B2 (en) * | 2007-07-20 | 2013-10-29 | Panasonic Corporation | Memory controller, memory card, and nonvolatile memory system |
-
2010
- 2010-03-04 JP JP2010535157A patent/JP5485163B2/ja active Active
- 2010-03-04 WO PCT/JP2010/001510 patent/WO2010103760A1/ja active Application Filing
- 2010-03-04 US US12/921,829 patent/US20110055297A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009503738A (ja) * | 2005-08-03 | 2009-01-29 | サンディスク コーポレイション | 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2010103760A1 (ja) | 2012-09-13 |
WO2010103760A1 (ja) | 2010-09-16 |
US20110055297A1 (en) | 2011-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5485163B2 (ja) | アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム | |
JP5481493B2 (ja) | アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム | |
JP5577238B2 (ja) | アクセス装置、情報記録装置、コントローラ、及び情報記録システム | |
JP5129156B2 (ja) | アクセス装置、および、ライトワンス記録システム | |
JP5400875B2 (ja) | メモリコントローラ、不揮発性記憶装置、アクセス装置、不揮発性記憶システム、データ書き込み方法、および、プログラム | |
US20080288710A1 (en) | Semiconductor Memory Device and Its Control Method | |
US8019800B2 (en) | Access device, information recording device, information recording system, file management method, and program | |
JP4722704B2 (ja) | 情報記録媒体、情報記録媒体に対するアクセス装置及びアクセス方法 | |
US9778857B2 (en) | Recording device, access device, recording system, and recording method | |
JP4551328B2 (ja) | 情報記録媒体におけるデータ領域管理方法、及びデータ領域管理方法を用いた情報処理装置 | |
JP5362594B2 (ja) | アクセス装置、及び残容量算出方法 | |
JP4608434B2 (ja) | 情報記録媒体のデータ処理装置及びデータ記録方法 | |
JP4130808B2 (ja) | フォーマット方法 | |
JP2005202942A (ja) | 情報記録媒体、データ処理装置及びデータ処理方法 | |
WO2010001606A1 (ja) | コントローラ、情報記録装置、アクセス装置、情報記録システム、及び情報記録方法 | |
JP2006252137A (ja) | 不揮発性記憶装置の最適化方法 | |
JP2009205591A (ja) | アクセスモジュール、情報記録モジュール、及び情報記録システム | |
WO2018186455A1 (ja) | 不揮発性メモリにおける空き容量管理方法、及び不揮発性メモリを含む情報記録装置にデータを記録するアクセス装置、情報記録装置および情報記録システム | |
JP2009205590A (ja) | アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム | |
JP2011133947A (ja) | 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム | |
JP4881469B1 (ja) | 情報処理装置、及び情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130416 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130613 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140128 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140219 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |