(57)【特許請求の範囲】
【請求項１】
消去処理が完了している記録領域に対してデータ書き込みを行い、かつ、複数の記録領域からなる所定のブロック単位で一括してデ−タ消去を行う複数の記録媒体に対し、外部から書き込み要求されたデータを並列に書き込む記録装置において、
上記外部から書き込み要求された全データのサイズをｑ、上記記録媒体の数をｍ、上記ブロックのサイズをｐとし、上記外部から書き込み要求された全データのサイズｑを上記ブロックのサイズｐで除してｚｍ＋ｗ＋ｙ（ｚ：０≦ｚの整数，ｗ：０≦ｗ＜ｍの整数，ｙ：０≦ｙ＜１）なる商を得たとき、ｚｍブロック分のデータをｍ個の記録媒体に対して並列に書き込み、その後、（ｑ−ｚｍｐ）分のデータをｗ＋１（但し、ｙ＝０のときはｗ）個の記録媒体に対して書き込むように制御するアドレス管理制御部を備え、
上記アドレス管理制御部は、上記（ｑ−ｚｍｐ）分のデータを書き込むに際しては、ｙブロック分のデータを１個の記録媒体に書き込む処理をｗ＋１個の記録媒体に対して並列に実行し、その後、（１−ｙ）ブロック分のデータを１個の記録媒体に書き込む処理をｗ個の記録媒体に対して並列に実行するように制御することを特徴とする記録装置。
【請求項２】
上記アドレス管理制御部は、上記（ｑ−ｚｍｐ）分のデータを書き込むに際しては、ｗ＋１（但し、ｙ＝０のときはｗ）個の記録媒体に書き込む処理を、前記ｗ＋１個の記録媒体に対して直列に書き込むように制御する請求項１に記載の記録装置。
【請求項３】
上記アドレス管理制御部は、書き込み要求先となる記録領域が属するブロック内において、書き換えが必要でないデータが存在する場合は、この書き換えが必要でないデータと当該書き込み要求されたデータとの総和を上記（ｑ−ｚｍｐ）分のデータとみなして制御する請求項２に記載の記録装置。
【請求項４】
消去処理が完了している記録領域に対してデータ書き込みを行い、かつ、複数の記録領域からなる所定のブロック単位で一括してデ−タ消去を行う複数の記録媒体に対し、外部から書き込み要求されたデータを並列に書き込む記録装置に、
上記外部から書き込み要求された全データのサイズをｑ、上記記録媒体の数をｍ、上記ブロックのサイズをｐとし、上記外部から書き込み要求された全データのサイズｑを上記ブロックのサイズｐで除してｚｍ＋ｗ＋ｙ（ｚ：０≦ｚの整数，ｗ：０≦ｗ＜ｍの整数，ｙ：０≦ｙ＜１）なる商を得たとき、ｚｍブロック分のデータをｍ個の記録媒体に対して並列に書き込み、その後、（ｑ−ｚｍｐ）分のデータをｗ＋１（但し、ｙ＝０のときはｗ）個の記録媒体に対して書き込むように制御するアドレス管理制御処理を実行させ、
上記（ｑ−ｚｍｐ）分のデータを書き込むに際しては、ｙブロック分のデータを１個の記録媒体に書き込む処理をｗ＋１個の記録媒体に対して並列に実行し、その後、（１−ｙ）ブロック分のデータを１個の記録媒体に書き込む処理をｗ個の記録媒体に対して並列に実行するように制御することを特徴とするプログラム。
【請求項５】
上記（ｑ−ｚｍｐ）分のデータを書き込むに際しては、ｗ＋１（但し、ｙ＝０のときはｗ）個の記録媒体に書き込む処理を、前記ｗ＋１個の記録媒体に対して直列に書き込むように制御する請求項４に記載のプログラム。
【請求項６】
書き込み要求先となる記録領域が属するブロック内において、書き換えが必要でないデータが存在する場合は、この書き換えが必要でないデータと当該書き込み要求されたデータとの総和を上記（ｑ−ｚｍｐ）分のデータとみなして制御する請求項５に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する利用分野】
本発明は、データを記録するための記録装置に関し、特に、フラッシュメモリ等の記録媒体にデータを記録するための記録装置に関する。
【０００２】
【従来の技術】
音楽データや映像データを取り扱う携帯機器の記録装置では、▲１▼データの書き換えが可能である、▲２▼携帯性が高い、▲３▼電池等によるバックアップが必要ない等の理由から、フラッシュメモリ等の記録媒体を用いるのが一般的である。
【０００３】
しかしながら、現状のフラッシュメモリによると、データ書き込みの際に待ち時間が生じるという問題があった。その理由は、書き込み対象であるデータを記録装置内のバッファへ転送するのに必要な時間よりも、このようにバッファに転送されたデータを当該バッファからフラッシュメモリへ書き込むのに必要な時間の方が大幅に長いためである。
【０００４】
そこで、特開２０００−１３２９８２号公報には、複数のフラッシュメモリを備えた記録装置が開示されている。このような記録装置によれば、複数のフラッシュメモリに対して並列にデータ書き込みを行うことができるため、待ち時間が生じるという上記問題は発生しない。
【０００５】
【発明が解決しようとする課題】
ところで、一般に、フラッシュメモリへのデータ書き込み単位はセクタと呼ばれ、フラッシュメモリ上のデータ消去（後述する）単位はブロックと呼ばれる。すなわち、図９（ａ）に示すように、フラッシュメモリ内のデータは、３２個のセクタからなるブロックという単位で管理されている（以下、セクタのデータ長は５１２バイト、ブロックのデータ長は１６キロバイトとして説明する）。
【０００６】
また、フラッシュメモリには、一方向のデータ書き換えしかできない、すなわち、データの値を１から０へ（或いは０から１へ）書き換えることはできないという特徴がある。従って、データ書き込みを行うには、その書き込み先となる領域内のデータの値を全て１（或いは０）に変換しておく必要がある（以下、この変換処理を「消去処理」という。また、この消去処理が完了している領域を「消去済領域」、完了していない領域を「未消去領域」という）。
【０００７】
以上の事情から、図９（ｂ）に示すブロックＡ内のデータ０〜１５を書き換える場合は、まず、図９（ｃ）に示すように、書き換える必要のないデータ１６〜３１を一旦フラッシュメモリＦ１からバッファＢに読み出す。そして、このようにバッファＢに読み出したデータ１６〜３１を、図９（ｄ）に示すように別のフラッシュメモリＦ２の消去済領域Ｅに書き直した後、上記ブロックＡの領域について消去処理を行う。
【０００８】
上記一連の処理（すなわち、書き換える必要のないデータ１６〜３１が当該書き換え処理に巻き込まれないようにするための処理）は巻き込み退避処理と呼ばれ、フラッシュメモリへの書き込み速度を低下させる大きな要因となっている。なお、図９（ｄ）に示す書き換え後データ０〜１５は、外部から当該記録装置に渡されるようになっているが、この点については、ここでは詳しい説明を省略する。
【０００９】
ここで、上記したように、特開２０００−１３２９８２号公報に開示される記録装置によれば、複数のフラッシュメモリに対して並列にデータ書き込みを行うことができるため、待ち時間が生じるという上記問題は発生しない。しかしながら、このように複数のフラッシュメモリに対して並列にデータ書き込みを行うと、データ消去の際に巻き込み退避処理の発生する頻度が高くなるという課題があった。
【００１０】
すなわち、ある音楽データＭ１をフラッシュメモリに書き込む場合、そのデータサイズが（フラッシュメモリの１ブロックのサイズ）×（フラッシュメモリの個数）の整数倍でないときは、図１０に示すように、フラッシュメモリＦ１〜Ｆ４のそれぞれの最終ブロック（後述する）Ｂ１〜Ｂ４に空き領域が発生する。その後、当該フラッシュメモリＦ１〜Ｆ４に別の音楽データＭ２を書き込む場合、この音楽データＭ２は上記最終ブロックＢ１〜Ｂ４の空き領域から書き込まれることになる結果、別個の音楽データＭ１・Ｍ２が同一ブロック内に存在することになる。従って、この状態で音楽データＭ１の全部を消去する必要が生じた場合は、最終ブロックＢ１〜Ｂ４に書き込まれた音楽データＭ２を退避させなければならない。
【００１１】
なお、上記最終ブロックとは、書き込み対象であるデータが最後に書き込まれることになるブロックをいう。すなわち、図６に示すように、ｍ個のフラッシュメモリに対して並列にデータ書き込みを行うと、一点鎖線より左にハッチングで示すブロックには空き領域が発生しないが、一点鎖線より右にハッチングで示すブロックには空き領域が発生する可能性がある。このように、空き領域が発生する可能性のあるブロックは、書き込み対象であるデータが最後に書き込まれることになるブロックであることから、これらブロックを特に「最終ブロック」と呼ぶことにする。
【００１２】
本発明は、上記従来の事情に基づいて提案されたものであって、複数のフラッシュメモリに対して並列にデータ書き込みを行う記録装置において巻き込み退避処理の発生する頻度を低下させることを目的とする。
【００１３】
【課題を解決するための手段】
本発明は、上記目的を達成するために以下の手段を採用している。すなわち、本発明は、図１に示すように、消去処理が完了している記録領域に対してデータ書き込みを行い、かつ、複数の記録領域からなる所定のブロック単位で一括してデ−タ消去を行う複数の記録媒体２１・２２・２３・２４に対し、外部から書き込み要求されたデータを並列に書き込む記録装置１を前提としている。
【００１４】
ここで、上記外部から書き込み要求された全データのサイズをｑ、上記記録媒体の数をｍ、上記ブロックのサイズをｐとした場合、アドレス管理制御部４２は、まず、上記外部から書き込み要求された全データのサイズｑを上記ブロックのサイズｐで除してｚｍ＋ｗ＋ｙ（ｚ：０≦ｚの整数，ｗ：０≦ｗ＜ｍの整数，ｙ：０≦ｙ＜１）なる商を得る。そして、ｚｍブロック分のデータをｍ個の記録媒体に対して並列に書き込み、その後、（ｑ−ｚｍｐ）分のデータをｗ＋１（但し、ｙ＝０のときはｗ）個の記録媒体に対して書き込むように制御する。
【００１５】
例えば、アドレス管理制御部４２は、図８（ａ）に示すように、上記（ｑ−ｚｍｐ）分のデータをｗ＋１個の記録媒体に対して並列に書き込むように制御することができる。このようにすれば、空き領域の生じるブロックの数は、上記従来技術を適用した場合と比べて少なくなる。これによって、巻き込み退避処理の発生する頻度が低下することになるのはいうまでもない。
【００１６】
本発明では、図８（ｂ）に示すように、上記（ｑ−ｚｍｐ）分のデータを書き込むに際しては、ｙブロック分のデータを１個の記録媒体に書き込む処理をｗ＋１個の記録媒体に対して並列に実行し、その後、（１−ｙ）ブロック分のデータを１個の記録媒体に書き込む処理をｗ個の記録媒体に対して並列に実行するように制御する。このようにすれば、空き領域の生じるブロックは多くても１個となるため、巻き込み退避処理の発生する頻度が低下する。
【００１７】
あるいは、図８（ｃ）に示すように、上記（ｑ−ｚｍｐ）分のデータを書き込むに際しては、ｗ＋１（但し、ｙ＝０のときはｗ）個の記録媒体に書き込む処理を、前記ｗ＋１個の記録媒体に対して直列に書き込むように制御するようにしてもよい。この制御方法は、書き込み要求先となる記録領域が属するブロック内に「書き換えが必要でないデータ」が存在する場合、特に有効である。すなわち、このような場合、アドレス管理制御部４２は、上記書き換えが必要でないデータと当該書き込み要求されたデータとの総和を上記（ｑ−ｚｍｐ）分のデータとみなして制御するようになっている。
【００１８】
【発明の実施の形態】
図１は、本発明を適用した記録装置のブロック図であり、以下その構成を説明する。なお、以下の説明では、セクタのデータ長は５１２バイト、ブロックのデータ長は１６キロバイトであることを前提にする。
【００１９】
まず、入出力制御部４１は、データの書き込み・読み出し・消去等の処理要求を外部から受けると、当該処理の開始命令をアドレス管理制御部４２に出すとともに、以下のデータ入出力制御を行う。
【００２０】
すなわち、データの書き込み要求を受けた入出力制御部４１は、外部から入力されたデータを複数のバッファ３１・３２・３３・３４に５１２バイト単位で順次書き込む。一方、データの読み出しの要求を受けた入出力制御部４１は、複数のバッファ３１・３２・３３・３４から５１２バイト単位で順次データを読み出して外部に出力する。
【００２１】
また、アドレス管理制御部４２は、上記入出力制御部４１からの処理開始命令に応じ、複数のフラッシュメモリ２１・２２・２３・２４と複数のバッファ３１・３２・３３・３４との間でのデータ転送の制御と、複数のフラッシュメモリ２１・２２・２３・２４に対するデータ消去の制御と、複数のフラッシュメモリ２１・２２・２３・２４に書き込まれているデータの管理とを行う（詳細は後述する）。
【００２２】
更に、セレクタ４３は、上記アドレス管理制御部４２からの接続切り替え信号に応じ、複数のフラッシュメモリ２１・２２・２３・２４と複数のバッファ３１・３２・３３・３４との間のデータバスの接続を切り替える。
【００２３】
ここで、上記アドレス管理制御部４２が行うデータ書き込み制御方法は、以下の２パターンに大別される。すなわち、一つは、未だデータの書き込まれていない論理アドレス領域に対してデータ書き込み要求を受けた場合の制御方法（以下「第１のデータ書き込み制御方法」という）であり、もう一つは、既にデータの書き込まれている論理アドレス領域に対してデータ書き込み要求を受けた場合の制御方法（以下「第２のデータ書き込み制御方法」という）である。
【００２４】
以下、これらデータ書き込み制御方法を詳細に説明する。
〔第１のデータ書き込み制御方法〕
まず、データの書き込まれていない論理アドレス領域に対してデータ書き込み要求を受けた場合、上記従来と同様、４個のフラッシュメモリ２１・２２・２３・２４に対して並列にデータ書き込みを行っていく。ただし、本発明では、当該書き込み対象であるデータのサイズによって、図２（ａ）〜（ｃ）に示すように、フラッシュメモリ２１・２２・２３・２４それぞれの最終ブロックへの書き込み制御方法が異なる。
【００２５】
例えば、書き込み対象であるデータのサイズが６４キロバイトである場合は、このデータを４個のフラッシュメモリ２１・２２・２３・２４へ並列に書き込んでも、その最終ブロックＢ２１・Ｂ２２・Ｂ２３・Ｂ２４のいずれにも空き領域は生じない。これは、上記６４キロバイトのデータが４ブロックに相当し、最終ブロックＢ２１・Ｂ２２・Ｂ２３・Ｂ２４の総和と一致するからである。
【００２６】
従って、この場合のアドレス管理制御部４２は、図２（ａ）に示すように、４個の最終ブロックＢ２１・Ｂ２２・Ｂ２３・Ｂ２４に対してデータ０〜１２７を並列に書き込むように制御する（以下、この書き込み形態を「４ブロック書き込み」という）。
【００２７】
また、書き込み対象であるデータのサイズが３２キロバイトである場合は、このデータを４個のフラッシュメモリ２１・２２・２３・２４へ並列に書き込むと、その最終ブロックＢ２１・Ｂ２２・Ｂ２３・Ｂ２４それぞれに１／２ブロックの空き領域が発生する。これは、上記３２キロバイトのデータが２ブロックに相当し、最終ブロックＢ２１・Ｂ２２・Ｂ２３・Ｂ２４の総和の１／２倍に一致するからである。
【００２８】
従って、この場合のアドレス管理制御部４２は、図２（ｂ）に示すように、２個の最終ブロックＢ２１・Ｂ２２に対してのみデータ０〜６３を並列に書き込むように制御する。すなわち、空き領域が生じることを防止する関係上、最終ブロックＢ２１・Ｂ２２・Ｂ２３・Ｂ２４への書き込みについては並列度を４から２に制限するようになっている（以下、この書き込み形態を「２ブロック書き込み」という）。
【００２９】
ここで、書き込み対象であるデータのサイズが２４キロバイトである場合は、上記３２キロバイトの場合のように並列度を制限しても、最終ブロックに空き領域が生じることを防止できない。これは、上記２４キロバイトのデータが１．５ブロックに相当し、ブロックの整数倍に一致しないからである。
【００３０】
従って、この場合のアドレス管理制御部４２は、図２（ｃ）に示すように、空き領域の生じる最終ブロックが１個だけになるように、また、可能な限り並列書き込みとなるようにデータ０〜４７を制御する。
【００３１】
すなわち、１ブロック分のデータ０〜３１を２個の最終ブロックＢ２１・Ｂ２２に対して並列に書き込んだ後、残り０．５ブロック分の端数データ３２〜４７を１個の最終ブロックＢ２１に対して単一に書き込むようになっている（以下、この書き込み形態を「１．５ブロック書き込み」という）。なお、「単一に書き込む」とは、並列書き込みを並列度１で行うことをいう。
【００３２】
以上のように、アドレス管理制御部４２は、書き込み対象であるデータのサイズに応じた制御方法を判別するようになっており、以下、その判別手法について説明する。
【００３３】
まず、書き込み要求された全データのサイズをｑ、フラッシュメモリの数をｍ、ブロックのサイズをｐとした場合、この全データのサイズｑを上記ブロックのサイズｐで除して、ｚｍ＋ｗ＋ｙ（ｚ：０≦ｚの整数，ｗ：０≦ｗ＜ｍの整数，ｙ：０≦ｙ＜１）なる商を得る。
【００３４】
ここで、上記ｚｍは、並列度がｍのブロック数を意味し、上記ｗ＋ｙは、並列度がｍに至らないブロック数を意味する。すなわち、図６を用いて説明すると、一点鎖線より左にハッチングで示すブロックの数が上記ｚｍに相当し、一点鎖線より右にハッチングで示すブロックの数が上記ｗ＋ｙに相当する（なお、ｗはブロックＢ１ に対応し、ｙはブロックＢ２ に対応する）。
【００３５】
従って、アドレス管理制御部４２は、ｚｍブロック分のデータをｍ個のフラッシュメモリに対して並列に書き込み、その後、ｑ−ｚｍｐブロック分のデータをｗ＋１（但し、ｙ＝０のときはｗ）個のフラッシュメモリに対して書き込むように制御する。ただし、この（ｑ−ｚｍｐ）分のデータを書き込むに際しては、ｙブロック分のデータを１個のフラッシュメモリに書き込む処理をｗ＋１個のフラッシュメモリに対して並列に実行し、その後、（１−ｙ）ブロック分のデータを１個のフラッシュメモリに書き込む処理をｗ個のフラッシュメモリに対して並列に実行するようになっている。
【００３６】
以下、上記判別手法の具体例として、１ブロックが１６キロバイトである状況下、４個のフラッシュメモリに対して１５２キロバイトのデータを書き込む場合（ｐ＝１６、ｍ＝４、ｑ＝１５２の場合）の制御手順について説明する。
【００３７】
まず、ｑ÷ｐ＝ｚｍ＋ｗ＋ｙは１５２÷１６＝２×４＋１＋０．５であることから、ｚは２、ｗは１、ｙは０．５であることが判る。
【００３８】
従って、８ブロック分のデータを４個のフラッシュメモリに対して並列に書き込み、その後、１．５ブロック分のデータを２個のフラッシュメモリに対して書き込む。ただし、この１．５ブロック分のデータを書き込むに際しては、０．５ブロック分のデータを１個のフラッシュメモリに書き込む処理を２個のフラッシュメモリに対して並列に実行し、その後、（１−０．５）ブロック分のデータを１個のフラッシュメモリに書き込む処理を１個のフラッシュメモリに対して並列に実行する。すなわち、図６でいうと、ブロックＢ１ とＢ２ それぞれに対して０．５ブロック分のデータを並列に書き込み、その後、ブロックＢ１ に対してのみ０．５ブロック分のデータを単一に書き込むことになる。
【００３９】
なお、ここでは、書き込み要求された全データのサイズｐを１５２キロバイト、また、ブロックのサイズｑを１６キロバイトとして説明したが、このサイズｐ及びｑの単位はバイトに限定されるものではない。例えば、書き込み要求された全データのサイズｐを３０４セクタ、また、ブロックのサイズｑを３２セクタとしても上記と同様の効果が得られる。
【００４０】
以上説明したように、本発明によれば、空き領域の生じるブロックは多くても１個となる。これによって、巻き込み退避処理の発生する頻度が低下する結果、トータルでみると、フラッシュメモリへの書き込みパフォーマンスを向上させることが可能である。
【００４１】
もっとも、本発明によると並列度が制限される場合もあり、この点では書き込み速度の低下を招く。しかしながら、並列度が制限されるのは最終ブロックについてのみであり、また、この最終ブロックについても可能な限り並列書き込みを行うようにしているので、上記のように並列度が制限されたとしても、その書き込み速度への影響は極めて小さい。
【００４２】
なお、上記の説明では、フラッシュメモリ２１→２２→２３→２４→２１→・・・の順に並列書き込みを行う動作について説明したが、本発明はこれに限定されるものではない。すなわち、個々のフラッシュメモリのハードウェア性能にはバラツキがあるため、それぞれの書き込み処理に要する時間にもバラツキがある。従って、上記のように並列書き込みを行うのではなく、書き込み処理が早く終了したフラッシュメモリから順に、次のデータを書き込むように制御するのが好ましい。
【００４３】
また、図２（ｂ）（ｃ）に示したように、書き込み対象であるデータのサイズが３２キロバイトや２４キロバイトである場合は、並列度が２に制限されている期間、すなわち、２個のフラッシュメモリ２１・２２に対してのみ並列書き込み処理が行われている期間が存在する。従って、残り２個のフラッシュメモリ２３・２４内に未消去領域が存在する場合は、この領域の消去処理を、上記フラッシュメモリ２１・２２に対する書き込み処理と並行して行うのが好ましい。
【００４４】
更に、上記の説明では、（ｑ−ｚｍｐ）分のデータを書き込むに際しては、ｙブロック分のデータを１個のフラッシュメモリに書き込む処理をｗ＋１個のフラッシュメモリに対して並列に実行し、その後、（１−ｙ）ブロック分のデータを１個のフラッシュメモリに書き込む処理をｗ個のフラッシュメモリに対して並列に実行することとしているが、図８（ａ）に示すように、上記（ｑ−ｚｍｐ）分のデータをｗ＋１個のフラッシュメモリに対して並列に書き込むようにすることもできる。
【００４５】
もっとも、このようにすると、空き領域の生じるブロックの数は２個以上になる場合がある。しかしながら、その数は、上記従来技術を適用した場合と比べると少なくなるのはいうまでもない。
【００４６】
ところで、上記のように並列に書き込んだデータを読み出したり書き換えたりするためには、当該フラッシュメモリ２１・２２・２３・２４におけるデータ書き込み状態をアドレス管理制御部４２が統括して管理しておかなければならない。すなわち、アドレス管理制御部４２は、外部からアクセス要求される論理アドレスブロック毎に、以下のフィールドを備えたブロック管理テーブル（図３参照）を生成するようになっている。
【００４７】
まず、並列度フィールドとは、幾つのフラッシュメモリに対して並列にデータが書き込まれたかを示すフィールドをいう。すなわち、上記のように４ブロック書き込みされた論理アドレスブロックの並列度フィールドには、図３（ａ）に示すように「４」を設定する。一方、上記のように２ブロック書き込み及び１．５ブロック書き込みされた論理アドレスブロックの並列度フィールドには、図３（ｂ）（ｃ）に示すように「２」を設定する。なお、未書き込み領域である論理アドレスブロックの並列度フィールドには「０」を設定しておく。
【００４８】
次に、非並列セクタ数フィールドとは、当該論理アドレスブロックに含まれる３２個のセクタのうち、並列書き込みが行われていないセクタの数を示すフィールドをいう。すなわち、上記のように４ブロック書き込み及び２ブロック書き込みされた論理アドレスブロックの非並列セクタ数フィールドには、図３（ａ）（ｂ）に示すように「０」を設定する。一方、上記のように１．５ブロック書き込みされた論理アドレスブロックの非並列セクタ数フィールドには、図３（ｃ）に示すように「１６」を設定する。
【００４９】
次に、フラッシュメモリ指定フィールドとは、当該論理アドレスブロックが存在するフラッシュメモリを示すフィールドをいう。例えば、上記フラッシュメモリ２１内に存在する論理アドレスブロックのフラッシュメモリ指定フィールドには「０」を設定し、上記フラッシュメモリ２２内に存在する論理アドレスブロックのフラッシュメモリ指定フィールドには「１」を設定する。また、上記フラッシュメモリ２３内に存在する論理アドレスブロックのフラッシュメモリ指定フィールドには「２」を設定し、上記フラッシュメモリ２４内に存在する論理アドレスブロックのフラッシュメモリ指定フィールドには「３」を設定する。
【００５０】
次に、物理アドレスフィールドとは、当該論理アドレスブロックに対応する物理アドレスを示すフィールドをいう。もちろん、このフィールドに設定する物理アドレスは、上記フラッシュメモリ指定フィールドに示されるフラッシュメモリ内の物理アドレスである。
【００５１】
次に、セクタ列管理情報フィールドとは、並列書き込みの順番をセクタ単位で表したフィールドをいう。例えば、フラッシュメモリ２１→２２→２３→２４→２１→・・・の順に並列書き込みを行った場合は、図３（ａ）に示すように、論理アドレスａに対応するセクタ列管理情報として「０」が、論理アドレスａ＋１に対応するセクタ列管理情報として「１」が、論理アドレスａ＋２に対応するセクタ列管理情報として「２」が、論理アドレスａ＋３に対応するセクタ列管理情報として「３」が、それぞれ並ぶことになる。
〔第２のデータ書き込み制御方法〕
ところで、フラッシュメモリに書き込むデータは、一連の画像データや音楽データ（１画像ファイルや１音楽ファイル）であるのが通常である。従って、フラッシュメモリに書き込まれたデータを消去する場合も、一連の画像データや音楽データ（すなわち、連続して書き込まれたデータ）を一括して消去する可能性が高い。そこで、上記第１のデータ書き込み制御では、書き込み速度を低下させない観点から、可能な限り並列書き込みを行うこととしている。
【００５２】
しかしながら、上記第１のデータ書き込み制御方法のように可能な限り並列書き込みを行うよりも、単一に書き込んだ方が、トータルでみるとフラッシュメモリへの書き込みパフォーマンスが向上する場面もある。
【００５３】
例えば、フラッシュメモリに書き込んだ音楽データの編集作業においては、連続して書き込まれたデータの一部を書き換えたい場合がある。この場合、書き換え対象であるデータは、図７（ａ）にハッチング領域として示すように複数のブロックにわたって書き込まれているよりも、図７（ｂ）にハッチング領域として示すように１個のブロックに書き込まれている方がよい。なぜなら、図７（ａ）に示す場面では、４個のブロックについて巻き込み退避処理をする必要があるのに対し、図７（ｂ）に示す場面では、１個のブロックについて巻き込み退避処理をすればよいためである。
【００５４】
このようなことから、上記第１のデータ書き込み制御方法によって複数のフラッシュメモリへ連続データを並列に書き込んだ後、万一、この連続データの一部を書き換える必要が生じた場合は、以下の制御方法を採用するのが好ましい。
【００５５】
まず、データ書き込み要求を受けたアドレス管理制御部４２は、上記ブロック管理テーブルの内容を参照することによって、このデータ書き込み要求が、連続データの一部を書き換えるための要求（以下「データ書き換え要求」という場合がある）、あるいは、新規に連続データを書き込むための要求（以下「新規データ書き込み要求」という場合がある）のいずれであるかを判断する。すなわち、既にデータの書き込まれている論理アドレス領域に対するデータ書き込み要求であれば、当該データ書き込み要求はデータ書き換え要求であると判断し、一方、未だデータの書き込まれていない論理アドレス領域に対するデータ書き込み要求であれば、当該データ書き込み要求は新規データ書き込み要求であると判断するようになっている。
【００５６】
そして、当該データ書き込み要求は新規データ書き込み要求であると判断したアドレス管理制御部４２は、上記第１のデータ書き込み制御方法を採用するようになっている。一方、当該データ書き込み要求はデータ書き換え要求であると判断したアドレス管理制御部４２は、更に、書き換え対象であるデータが属するブロック内において、書き換えが必要でないデータが存在するか否かを判断する。
【００５７】
例えば、図４に示すように、データ０〜４７がフラッシュメモリ２１・２２に１．５ブロック書き込みされている状況下、データ３２〜４７を書き換えるための要求があった場合は、データ３２〜４７が属するブロック内において、書き換えが必要でないデータ０〜３１（但し、奇数を除く）が存在する。従って、この場合のアドレス管理制御部４２は「書き換えが必要でないデータが存在する」と判断することになり、以下の制御を行う。
【００５８】
まず、アドレス管理制御部４２は、書き換えが必要でないデータ０〜３１（３２個のセクタデータ）と、当該書き込み要求されたデータ３２〜４７（１６個のセクタデータ）との総和である１．５ブロック分のデータを上記（ｑ−ｚｍｐ）分のデータとみなす。このとき、ｗは１であり、またｙは０．５であることはいうまでもない。
【００５９】
そして、アドレス管理制御部４２は、この（ｑ−ｚｍｐ）分のデータをｗ＋１個のフラッシュメモリ２３・２４に割り当てた状態で、各フラッシュメモリ２３・２４が持つ順番（ここでは２３→２４の順番）で書き込むように制御する。すなわち、２個のブロックに対して並列に書き込まれているデータ０〜３１を一旦バッファ３３に読み出した後、フラッシュメモリ２３の消去済領域へ単一に書き直し、次いでデータ３２〜４７をフラッシュメモリ２４の消去済領域へ単一に書き込むように制御するようになっている。なお、このデータ３２〜４７は、外部から入出力制御部４１・バッファ３４を介してアドレス管理制御部４２に渡されるようになっている。
【００６０】
以上のように、第２のデータ書き込み制御によれば、フラッシュメモリ２３・２４上のブロックには可能な限り連続データが並ぶことになる。このようにしておけば、データ０〜３１或いはデータ３２〜４７を再度書き換える必要が生じた場合、巻き込み退避処理は発生しない。
【００６１】
なお、上記では、「書き換えが必要でないデータが存在する」とアドレス管理制御部４２が判断した場合の動作についてのみ説明した。すなわち、「書き換えが必要でないデータが存在しない」とアドレス管理制御部４２が判断した場合の動作については言及していないが、このように判断した場合のアドレス管理制御部４２は、上記第１のデータ書き込み制御方法を採用するようになっている。
【００６２】
その理由は、「書き換えが必要でないデータが存在しない」とは、データの全部を書き換えることを意味するからである。例えば、１．５ブロックの領域に対して２ブロック分のデータ書き込み要求があるということは、以前の１．５ブロック分のデータが不用であることを意味する。従って、このようなデータ書き込み要求は、新規に連続データを書き込むための要求であると考えるのが妥当である。
【００６３】
最後に、上記した第２のデータ書き込み制御例によってブロック管理テーブルの内容がどのように遷移するかを図５に示す。なお、フィールド構成や設定情報については、上記第１のデータ書き込み制御と同じであるため、ここでは説明を省略する。
【図面の簡単な説明】
【図１】  本発明を適用した記録装置のブロック図
【図２】  第１のデータ書き込み制御方法の説明図
【図３】  第１のデータ書き込み制御時におけるブロック管理テーブルの状態図
【図４】  第２のデータ書き込み制御方法の説明図
【図５】  第２のデータ書き込み制御時におけるブロック管理テーブルの状態図
【図６】  データ書き込み制御方法の判別手法の説明図
【図７】  データ書き換えの説明図
【図８】  （ｑ−ｚｍｐ）分のデータの書き込み態様を示す図
【図９】  ブロック・セクタ・巻き込み退避処理の説明図
【図１０】  別個のデータが存在するブロックの説明図
【符号の説明】
１ 記録装置
２１ フラッシュメモリ
２２ フラッシュメモリ
２３ フラッシュメモリ
２４ フラッシュメモリ
３１ バッファ
３２ バッファ
３３ バッファ
３４ バッファ
４１ 入出力制御部
４２ アドレス管理制御部
４３ セレクタ
【図１】
0003992960.tif 000002
【図２】
0003992960.tif 000003
【図３】
0003992960.tif 000004
【図４】
0003992960.tif 000005
【図５】
0003992960.tif 000006
【図６】
0003992960.tif 000007
【図７】
0003992960.tif 000008
【図８】
0003992960.tif 000009
【図９】
0003992960.tif 000010
【図１０】
0003992960.tif 000011