(57)【要約】【課題】不定確率で記憶セルにエラーが発生するＮＡＮＤ型フラッシュメモリ等の記憶媒体へ、複数のページに跨る連続したデータをスムーズに書き込むことを目的とする。【解決手段】データ書込部４０は、所定のブロックにおける先頭のページから順にデータを書き込む。ブロック特定部５０は、データ書込部４０がデータを書き込んだページでエラーが発生した場合、所定のブロックに代わる代替ブロックを特定する。データ書込部４０は、データを書き込んだページでエラーが発生した場合、ブロック特定部５０が特定した代替ブロックにおけるエラーが発生したページのページ番号が示すページから順に続きのデータを書き込む。【選択図】図４
2013257699.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域を複数に区切ったブロック単位でデータが管理され、各ブロックを複数に区切ったページ単位でデータの書き込みが行われる記憶装置への複数のページに跨るデータの書き込み制御を行うデータ記録装置であり、
所定のブロックを対応ブロックとして、前記対応ブロックにおける先頭のページから順にデータを書き込むデータ書込部と、
前記データ書込部がデータを書き込んだページでエラーが発生した場合、前記対応ブロックに代わる代替ブロックを特定するブロック特定部と、
を備え、
前記データ書込部は、前記エラーが発生したページのページ番号が示すページであって、前記ブロック特定部が特定した代替ブロックにおけるページから順に、エラーが発生したデータ以降のデータを書き込む
ことを特徴とするデータ記録装置。
【請求項２】
前記データ記録装置は、さらに、
前記対応ブロックの物理ブロック番号と、エラーが発生したページのページ番号と、前記ブロック特定部が特定した代替ブロックの物理ブロック番号とを関連付けて記憶する関連情報記憶部
を備えることを特徴とする請求項１に記載のデータ記録装置。
【請求項３】
前記データ記録装置は、さらに、
物理ブロック番号とページ番号との組を１つのエントリとして、１つの論理ブロック番号に対して、複数のエントリを対応付けて記憶するブロック変換テーブル
を備え、
前記データ書込部は、前記ブロック変換テーブルで所定の論理ブロック番号に対応付けて記憶された１つ目のエントリにおける物理ブロック番号が示す前記記憶装置のブロックを対応ブロックとし、
前記関連情報記憶部は、エラーが発生したページのページ番号を前記１つ目のエントリのページ番号とし、前記代替ブロックの物理ブロック番号を２つ目のエントリの物理ブロック番号として、前記ブロック変換テーブルに記憶する
ことを特徴とする請求項２に記載のデータ記録装置。
【請求項４】
前記データ記録装置は、さらに、
物理ブロック番号と、そのブロックにおけるエラーが発生したページのページ番号とを関連付けて記憶するエラーブロック管理テーブル
を備え、
前記関連情報記憶部は、前記対応ブロックの物理ブロック番号と、エラーが発生したページのページ番号とを関連付けて前記エラーブロック管理テーブルに記憶するとともに、前記代替ブロックの物理ブロック番号を前記エラーブロック管理テーブルに記憶し、前記対応ブロックの物理ブロック番号を記憶したレコードと、前記代替ブロックの物理ブロック番号を記憶したレコードとを関連付ける
ことを特徴とする請求項２に記載のデータ記録装置。
【請求項５】
前記データ記録装置は、さらに、
データを書込み可能なブロックの物理ブロック番号を記憶した書込ブロック管理テーブル
を備え、
前記ブロック特定部は、前記データ書込部がデータを書き込んだページでエラーが発生した場合、前記書込ブロック管理テーブルから物理ブロック番号を前記代替ブロックの物理ブロック番号として取得することにより、前記代替ブロックを特定する
ことを特徴とする請求項１から４までのいずれかに記載のデータ記録装置。
【請求項６】
前記記憶装置は、前記ブロック単位でデータの消去が行われ、前記ページ単位でデータの書き込みが行われ、データが書き込まれた記憶領域には、書き込まれたデータを消去しなければ書込みが行えない
ことを特徴とする請求項１から５までのいずれかに記載のデータ記録装置。
【請求項７】
記憶領域を複数に区切ったブロック単位でデータが管理され、各ブロックを複数に区切ったページ単位でデータの書き込みが行われる記憶装置への複数のページに跨るデータの書き込み制御を行うデータ記録方法であり、
処理装置が、所定のブロックを対応ブロックとして、前記対応ブロックにおける先頭のページから順にデータを書き込むデータ書込工程と、
処理装置が、前記データ書込工程でデータを書き込んだページでエラーが発生した場合、前記対応ブロックに代わる代替ブロックを特定するブロック特定工程と、
を備え、
前記データ書込工程では、前記エラーが発生したページのページ番号が示すページであって、前記ブロック特定工程で特定した代替ブロックにおけるページから順に、エラーが発生したデータ以降のデータを書き込む
ことを特徴とするデータ記録方法。
【請求項８】
記憶領域を複数に区切ったブロック単位でデータが管理され、各ブロックを複数に区切ったページ単位でデータの書き込みが行われる記憶装置への複数のページに跨るデータの書き込み制御を行うデータ記録プログラムであり、
所定のブロックを対応ブロックとして、前記対応ブロックにおける先頭のページから順にデータを書き込むデータ書込処理と、
前記データ書込処理でデータを書き込んだページでエラーが発生した場合、前記対応ブロックに代わる代替ブロックを特定するブロック特定処理と、
をコンピュータに実行させ、
前記データ書込処理では、前記エラーが発生したページのページ番号が示すページであって、前記ブロック特定処理で特定した代替ブロックにおけるページから順に、エラーが発生したデータ以降のデータを書き込む
ことを特徴とするデータ記録プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、不定確率で記憶セルにエラーが発生するＮＡＮＤ型フラッシュメモリ等の記憶媒体へのデータの書き込み制御技術に関する。
【背景技術】
【０００２】
例えば、人工衛星では、地上局と通信できない範囲（例えば、地上局の位置に対して地球の裏側）を飛行中は、カメラやセンサ等の観測機器が観測した観測データを、人工衛星内に保持しておく必要がある。そのため、人工衛星は、データ記録装置を搭載している。
観測機器は、観測データを内部に蓄える機能を有していないため、データ記録装置との間でデータ伝送のためのフロー制御を実現することは困難である。また、観測機器の高精細化に伴い、データ記録装置に入力される観測データは、サイズが大きくなり、単位時間当たりにデータ記録装置が記憶しなければならないデータ量が多くなってきている。
しかし、宇宙環境で正常動作可能なメモリが限られているために巨大なバッファメモリを保持できないという事情や、宇宙空間は真空であるため放出手段が乏しく、電子機器を高速動作させられないという事情が、データ記録装置にはある。
このため、観測機器で観測されたサイズの大きい観測データを、スムーズにデータ記録装置に記憶させるデータの書き込み制御が必要となる。
【０００３】
人工衛星等で使用されるデータ記録装置では、観測機器からの観測データのサイズが大きくなったことに伴い、ＮＡＮＤ型フラッシュメモリのような大容量かつ低消費電力の不揮発メモリが搭載されつつある。ＮＡＮＤ型フラッシュメモリは、不定確率で記憶セルにエラーが発生する特性を持つ記憶媒体であるため、特別なデータの書き込み制御が必要となる。
特許文献１には、ＮＡＮＤ型フラッシュメモリへのデータの書き込み制御について記載されている。特許文献１では、データを書き込む際、エラーのあるブロックを管理するエラー管理テーブルを参照して、書き込み先のブロックにエラーがあるか判断する。そして、書き込み先のブロックにエラーがなければ、そのブロックにデータを書き込み、書き込み先のブロックにエラーがあれば、改めて他のブロックを書き込み先のブロックとしてエラーがあるか判断する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１４８９６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された書き込み制御では、データの書き込みをする度に、エラー管理テーブルを参照する必要がある。これは、複数のページに跨る連続したデータを書き込む場合に特に大きなオーバヘッドとなり、場合によってはデータの書き込みが間に合わず、データの欠損が発生する恐れがある。
この発明は、不定確率で記憶セルにエラーが発生するＮＡＮＤ型フラッシュメモリ等の記憶媒体へ、複数のページに跨る連続したデータをスムーズに書き込むことを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るデータ記録装置は、
記憶領域を複数に区切ったブロック単位でデータが管理され、各ブロックを複数に区切ったページ単位でデータの書き込みが行われる記憶装置への複数のページに跨るデータの書き込み制御を行うデータ記録装置であり、
所定のブロックを対応ブロックとして、前記対応ブロックにおける先頭のページから順にデータを書き込むデータ書込部と、
前記データ書込部がデータを書き込んだページでエラーが発生した場合、前記対応ブロックに代わる代替ブロックを特定するブロック特定部と、
を備え、
前記データ書込部は、前記エラーが発生したページのページ番号が示すページであって、前記ブロック特定部が特定した代替ブロックにおけるページから順に、エラーが発生したデータ以降のデータを書き込む
ことを特徴とする。
【発明の効果】
【０００７】
この発明に係る書込制御装置では、書き込みの度にエラー管理テーブルを参照することがない。また、エラーが発生した場合に、それまでに書き込んだデータを他のブロックへコピーすることがない。そのため、エラー発生時の処理に時間がかからず、データの欠損が発生することを防止できる。
【図面の簡単な説明】
【０００８】
【図１】ＮＡＮＤ型フラッシュメモリの基本的な構成を示す図。
【図２】ＮＡＮＤ型フラッシュメモリの基本的な管理テーブルを示す図。
【図３】実施の形態１に係るデータ記録装置１００の構成図。
【図４】実施の形態１に係るアドレス変換テーブル１０の構成図。
【図５】実施の形態１に係るデータ記録装置１００の動作を示すフローチャート。
【図６】実施の形態１に係るデータ記録装置１００の動作例を示す図。
【図７】実施の形態２に係るアドレス変換テーブル１０と、エラーブロック管理テーブル３０との構成図。
【図８】実施の形態２に係るデータ記録装置１００の動作を示すフローチャート。
【図９】実施の形態２に係るデータ記録装置１００の動作例を示す図。
【図１０】実施の形態３に係るデータ記録装置１００の構成図。
【図１１】実施の形態３に係る書込ブロック管理テーブル７０の構成図。
【図１２】実施の形態３に係る代替ブロック特定処理を示すフローチャート。
【図１３】実施の形態３に係るデータ記録装置１００の動作例を示す図。
【図１４】データ記録装置１００のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
まず、ＮＡＮＤ型フラッシュメモリの基本的な構成及び管理方法について説明する。
【００１０】
図１は、ＮＡＮＤ型フラッシュメモリの基本的な構成を示す図である。
ＮＡＮＤ型フラッシュメモリは、記憶領域を複数に区切ったブロックと、各ブロックをさらに複数に区切ったページとから構成される。図１では、ＮＡＮＤ型フラッシュメモリがｎ個のブロックから構成され、各ブロックがｋ個のページから構成されている。
ＮＡＮＤ型フラッシュメモリは、既にデータが記憶されている領域に新しいデータを記憶する場合、事前に既に記憶されたデータを消去しなければならないという特性がある。このデータの消去は、ブロック単位で行わなければならない。一方、データのリード（読み出し）及びライト（書き込み）は、ページ単位で行うことができる。
なお、一般に、ブロックは６４〜２５６キロバイトであり、ページは１〜４キロバイトの記憶容量を持つ。
【００１１】
図２は、ＮＡＮＤ型フラッシュメモリの基本的な管理テーブルを示す図である。図２（ａ）は、アドレス変換テーブル１０（ブロック変換テーブル）の構成図であり、図２（ｂ）は、物理ブロック管理テーブル２０の構成図であり、図２（ｃ）は、エラーブロック管理テーブル３０の構成図である。
【００１２】
アドレス変換テーブル１０は、論理アドレス（論理ブロック番号に等しい）と物理アドレス（物理ブロック番号に等しい）とが対応付けて記憶される。記憶セルエラーの発生により使用不可となった物理ブロックがあると、物理アドレスが不連続となり、利用勝手が低下する恐れがある。これを防ぐため、アドレス変換テーブル１０は、アドレスの連続性を保証する論理アドレスを利用者へ提供するものである。図２においては、論理ブロック番号（３）へのアクセス（Ｒｅａｄ  ｏｒ  Ｗｒｉｔｅ）が要求された場合、データ記録装置では物理ブロック番号（ｎ−１）のブロックへアクセスさせる。
【００１３】
物理ブロック管理テーブル２０は、物理ブロック毎にエントリを持ち、各エントリには、対応するブロックの状態が記憶される。具体的には、各エントリには、対応するブロックへのデータ記録状態（記録中、記録済、消去済、エラー発生等）やそのブロックに対して行われた消去回数が記憶される。
【００１４】
エラーブロック管理テーブル３０は、記憶セルエラーが発生したブロックの物理ブロック番号が記憶される。記憶セルエラーが発生したブロックは物理ブロック管理テーブル２０にて管理可能ではあるが、参照頻度が高いため、エラーブロック管理テーブル３０は一般に独立した管理テーブルとして設けられる。
【００１５】
なお、ＮＡＮＤ型フラッシュメモリは、一般に同一のブロックに対する消去回数に上限が設けられている。この上限の消去回数以内に不定確率で発生する記憶セルエラーによるエラーブロックの発生は、全ブロック数の数パーセント以内に抑えられている。そのため、エラーブロック管理テーブルのエントリ数は、ブロック数の数パーセント程度だけ必要となる。
【００１６】
図３は、実施の形態１に係るデータ記録装置１００の構成図である。
データ記録装置１００は、アドレス変換テーブル１０、物理ブロック管理テーブル２０、エラーブロック管理テーブル３０、データ書込部４０、ブロック特定部５０、関連情報記憶部６０を備える。
アドレス変換テーブル１０は、以下で詳しく構成を説明する。物理ブロック管理テーブル２０、エラーブロック管理テーブル３０は、図２に基づき説明した通りである。データ書込部４０は、データをＮＡＮＤ型フラッシュメモリに書き込む。ブロック特定部５０は、データ書込部４０がデータを書き込むブロックを特定する。関連情報記憶部６０は、上記各テーブルへデータを書き込む。
【００１７】
図４は、実施の形態１に係るアドレス変換テーブル１０の構成図である。
アドレス変換テーブル１０は、１つの論理ブロック番号に対して複数のエントリを持つ。各エントリには、エラーが発生したページのページ番号および物理ブロック番号が記憶される。
アドレス変換テーブル１０において、ページ番号欄に“−”が記憶されている場合、対応するブロックでは記憶セルエラーが発生していないことを示す。また、物理ブロック番号欄に“−”が記憶されている場合は、対応するブロックが割り当てられていないことを示す。具体的には、エントリ０における物理ブロック番号欄に“−”が記憶されている場合は、その論理ブロック番号にはブロックが割り当てられていないことを示す。つまり、その論理ブロック番号へのデータの書込みは行われていないことを示す。また、エントリ１における物理ブロック番号欄に“−”が記憶されている場合は、エントリ０に記憶された物理ブロック番号が示すブロックにてエラーが発生していないか、その論理ブロック番号へのデータ書込みが行われていないことを示す。
【００１８】
図５は、実施の形態１に係るデータ記録装置１００の動作を示すフローチャートである。データのライト命令を受けると、以下の処理が実行される。
まず、変数Ｅと変数Ｐとが０に初期化される（Ｓ１０１）。次に、データ書込部４０は、アドレス変換テーブル１０におけるライト命令で指定された論理ブロック番号（以下、指定論理ブロック番号）に対応するエントリ（Ｅ）から、物理ブロック番号を読み出す（Ｓ１０２）。そして、データ書込部４０は、Ｓ１０２で読み出した物理ブロック番号が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（Ｐ）へデータを書き込む（Ｓ１０３）。
ページ（Ｐ）へのデータの書き込みの際、データ書込部４０は、記憶セルエラーが発生したか否かを判定する（Ｓ１０４）。記憶セルエラーが発生しなかった場合（Ｓ１０４でエラーなし）、データ書込部４０は、書き込みが済んでいないデータが残っていれば変数Ｐに１加算して処理をＳ１０３へ戻し（Ｓ１０６）、残っていなければ処理を終了する（Ｓ１０５）。
一方、記憶セルエラーが発生した場合（Ｓ１０４でエラーあり）、ブロック特定部５０は、物理ブロック管理テーブル２０を参照して、状態が“消去済”となっている空きブロック（代替ブロック）を特定する（Ｓ１０７）。そして、関連情報記憶部６０は、指定論理ブロック番号に対応するエントリ（Ｅ）のページ番号欄に変数Ｐの値を書き込む（Ｓ１０８）。また、関連情報記憶部６０は、Ｓ１０２で読み出した物理ブロック番号をエラーブロック管理テーブル３０に書き込む（Ｓ１０９）。また、関連情報記憶部６０は、物理ブロック管理テーブル２０の情報を更新する（Ｓ１１０）。さらに、関連情報記憶部６０は、関連情報記憶部６０は、Ｓ１０７で特定されたブロックの物理ブロック番号を、指定論理ブロック番号に対応するエントリ（Ｅ＋１）の物理ブロック番号欄に書き込む（Ｓ１１１）。そして、データ書込部４０は、変数Ｅに１加算して処理をＳ１０２へ戻す（Ｓ１１２）。
【００１９】
図６は、実施の形態１に係るデータ記録装置１００の動作例を示す図である。
図６に示す例では、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックにデータを書き込み中に、ページ（２）で記憶セルエラーが発生した場合を示す。
論理ブロック番号（２）が指定されたライト命令を受けて処理が開始される。まず、変数Ｅ，Ｐが０に初期化される（Ｓ１０１）。次に、論理ブロック番号（２）に対応するエントリ（０）の物理ブロック番号（Ｘ）が読み出される（Ｓ１０２）。そして、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（０）にデータが書き込まれる（Ｓ１０３）。ここでは、記憶セルエラーは発生せず（Ｓ１０４でエラーなし）、書き込みが済んでいないデータが残っているため、変数Ｐに１（＝０＋１）が設定され、処理がＳ１０３へ戻される（Ｓ１０５）。
続いて、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（１）にデータが書き込まれ、変数Ｐに２（＝１＋１）が設定され、処理がＳ１０３へ戻される（Ｓ１０３−Ｓ１０５）。
続いて、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（２）にデータの書き込みが行われる（Ｓ１０３）。この際、記憶セルエラーが発生する（Ｓ１０４でエラーあり）。そのため、空きブロック（物理ブロック番号（Ｙ））が特定される（Ｓ１０７）。そして、論理ブロック番号（２）に対応するエントリ（０）のページ番号欄に変数Ｐの値（２）が書き込まれ（Ｓ１０８）、物理ブロック番号（Ｘ）がエラーブロック管理テーブル３０に書き込まれ（Ｓ１０９）、物理ブロック管理テーブル２０の物理ブロック番号（Ｘ）（Ｙ）の欄が更新される（Ｓ１１０）。また、論理ブロック番号（２）に対応するエントリ（１）の物理ブロック番号欄に物理ブロック番号（Ｙ）が書き込まれる。そして、変数Ｅに１を設定され、処理がＳ１０２に戻される。
すると、論理ブロック番号（２）に対応するエントリ（１）の物理ブロック番号（Ｙ）が読み出され（Ｓ１０２）、物理ブロック番号（Ｙ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（２）にデータが書き込まれる（Ｓ１０３）。その後、順次、物理ブロック番号（Ｙ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（３）以降にデータが書き込まれる。
【００２０】
以上のように、実施の形態１に係るデータ記録装置１００では、データを記録する度にエラーブロック管理テーブル３０を参照することはない。したがって、複数のページに跨る連続したデータを書き込む場合におけるオーバヘッドが小さい。
また、実施の形態１に係るデータ記録装置１００では、記憶セルエラーが発生した場合に、記憶セルエラーが発生したブロックに既に書き込んだデータを新たなブロックへコピーすることがない。したがって、記憶セルエラーが発生した場合の処理に係る時間が短い。
【００２１】
なお、上記説明では、Ｓ１０２でエントリ（Ｅ）に物理ブロック番号が記憶されていることを前提とした。しかし、処理の開始直後においてはＳ１０２で読み出すエントリ（Ｅ）に物理ブロック番号が記憶されていないことも考えられる。この場合、Ｓ１０５と同様に、ブロック特定部５０は、物理ブロック管理テーブル２０を参照して、状態が“消去済”となっている空きブロックを特定し、そのエントリ（Ｅ）に書き込めばよい。
【００２２】
また、現在典型的なＮＡＮＤ型フラッシュメモリでは６４〜１２８ページ／ブロックであるため、アドレス変換テーブル１０におけるエラーが発生したページ番号の格納領域は、８ビットあれば十分に表現可能である。また、現在典型的なＮＡＮＤ型フラッシュメモリでは３２７６８〜１３１０７２ブロック／チップであるため、アドレス変換テーブル１０における物理ブロック番号の格納領域は、２４ビットあれば十分に表現可能である。
したがって、アドレス変換テーブル１０における各エントリは、従来のアドレス変換テーブル１０のエントリサイズである４バイトと同じ領域サイズで表現できる。
【００２３】
実施の形態２．
実施の形態１では、アドレス変換テーブル１０の構成を変えることにより、記憶セルエラーが発生したページ番号と、代替ブロックの物理ブロック番号とを管理した。実施の形態２では、エラーブロック管理テーブル３０の構成を変えることにより、エラーが発生したページ番号と、代替ブロックの物理ブロック番号とを管理する。
【００２４】
実施の形態２に係るデータ記録装置１００の構成は、図３に示す実施の形態１に係るデータ記録装置１００の構成と同じである。
アドレス変換テーブル１０、エラーブロック管理テーブル３０は、以下で詳しく構成を説明する。物理ブロック管理テーブル２０は、図２に基づき説明した通りである。データ書込部４０、ブロック特定部５０、関連情報記憶部６０は、基本的な動作は実施の形態１と同じである。但し、関連情報記憶部６０のデータの書き込み先等が異なる。
【００２５】
図７は、実施の形態２に係るアドレス変換テーブル１０と、エラーブロック管理テーブル３０との構成図である。
アドレス変換テーブル１０は、論理ブロック番号に対して、代替の有無を示すフラグと、物理ブロック番号とが記憶される。物理ブロック番号には、ブロックで記憶セルエラーが発生していない場合は対応する物理ブロック番号がそのまま格納される。一方、ブロックで記憶セルエラーが発生した場合は、エラーブロック管理テーブル３０のインデックス番号が格納される。
エラーブロック管理テーブル３０は、各エントリに、エラーが発生したページ番号及び物理ブロック番号と、代替ブロックの物理ブロック番号が格納されているエラーブロック管理テーブル３０内の位置を示すポインタとが格納される。
エラーブロック管理テーブル３０において、エラーが発生したページ番号欄に“−”が記憶されている場合、対応する物理ブロック内に記憶セルエラーが発生していないことを示す。物理ブロック番号欄に“−”が記憶されている場合、そのエントリは未使用であることを示す。また、代替ブロックへのＰＴＲ欄に“−”が記憶されている場合、対応する物理ブロックに対して代替ブロックが割り当てられていないことを示す。つまり、物理ブロック内でエラーが発生していないことを示す。
図７では、論理ブロック番号（２）への入力データをブロック（Ｘ）へ書込んでいる途中、ページ（２）でエラーが発生し、代替ブロック（Ｙ）へ継続して記録している状態を示している。
【００２６】
図８は、実施の形態２に係るデータ記録装置１００の動作を示すフローチャートである。データのライト命令を受けると、以下の処理が実行される。
まず、変数Ｐが０に初期化される（Ｓ２０１）。次に、データ書込部４０は、アドレス変換テーブル１０における、指定論理ブロック番号に対応するエントリから、物理ブロック番号を読み出す（Ｓ２０２）。そして、データ書込部４０は、Ｓ２０２で読み出した物理ブロック番号が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（Ｐ）へデータを書き込む（Ｓ２０３）。
ページ（Ｐ）へのデータの書き込みの際、データ書込部４０は、記憶セルエラーが発生したか否かを判定する（Ｓ２０４）。記憶セルエラーが発生しなかった場合（Ｓ２０４でエラーなし）、データ書込部４０は、書き込みが済んでいないデータが残っていれば変数Ｐに１加算して処理をＳ２０３へ戻し（Ｓ２０６）、残っていなければ処理を終了する（Ｓ２０５）。
一方、記憶セルエラーが発生した場合（Ｓ２０４でエラーあり）、ブロック特定部５０は、物理ブロック管理テーブル２０を参照して、状態が“消去済”となっている空きブロック（代替ブロック）を特定する（Ｓ２０７）。そして、関連情報記憶部６０は、Ｓ２０２で読み出した物理ブロック番号と、Ｓ２０７で特定した代替ブロックの物理ブロック番号とをエラーブロック管理テーブル３０へ書き込む（Ｓ２０８）。また、関連情報記憶部６０は、エラーブロック管理テーブル３０におけるＳ２０２で読み出した物理ブロック番号を書き込んだエントリのページ番号欄に、変数Ｐの値を書き込むとともに、そのエントリのポインタ欄に、Ｓ２０７で特定した代替ブロックの物理ブロック番号を書き込んだエントリの位置を示すポインタを書き込む（Ｓ２０９）。また、関連情報記憶部６０は、アドレス変換テーブル１０における指定論理ブロック番号に対応するエントリのフラグを１（記憶セルエラーあり）に更新するとともに、そのエントリの物理ブロック番号欄を、エラーブロック管理テーブル３０におけるＳ２０２で読み出した物理ブロック番号を書き込んだエントリの位置を示すポインタに更新する（Ｓ２１０）。
そして、データ書込部４０は、Ｓ２０２で読み出した物理ブロック番号を、Ｓ２０７で特定した代替ブロックの物理ブロック番号に読み変えて、処理をＳ２０３へ戻す（Ｓ２１１）。
【００２７】
図９は、実施の形態２に係るデータ記録装置１００の動作例を示す図である。
図９に示す例では、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックにデータを書き込み中に、ページ（２）で記憶セルエラーが発生した場合を示す。
論理ブロック番号（２）が指定されたライト命令を受けて処理が開始される。まず、変数Ｐが０に初期化される（Ｓ２０１）。次に、論理ブロック番号（２）に対応するエントリの物理ブロック番号（Ｘ）が読み出される（Ｓ２０２）。そして、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（０）にデータが書き込まれる（Ｓ２０３）。ここでは、記憶セルエラーは発生せず（Ｓ２０４でエラーなし）、書き込みが済んでいないデータが残っているため、変数Ｐに１（＝０＋１）が設定され、処理がＳ２０３へ戻される（Ｓ２０５）。
続いて、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（１）にデータが書き込まれ、変数Ｐに２（＝１＋１）が設定され、処理がＳ２０３へ戻される（Ｓ２０３−Ｓ２０５）。
続いて、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（２）にデータの書き込みが行われる（Ｓ２０３）。この際、記憶セルエラーが発生する（Ｓ２０４でエラーあり）。そのため、空きブロック（物理ブロック番号（Ｙ））が特定される（Ｓ２０７）。そして、エラーブロック管理テーブル３０のエントリ（０）に物理ブロック番号（Ｘ）が書き込まれ、エラーブロック管理テーブル３０のエントリ（１）に物理ブロック番号（Ｙ）が書き込まれる（Ｓ２０８）。また、エラーブロック管理テーブル３０におけるエントリ（０）のページ番号欄に変数Ｐの値（２）が書き込まれ、エントリ（０）のポインタ欄にエントリ（１）の位置を示すポインタが書き込まれる（Ｓ２０９）。また、アドレス変換テーブル１０における論理ブロック番号（２）に対応するエントリのフラグが１に更新され、そのエントリの物理ブロック番号欄がエラーブロック管理テーブル３０のエントリ（１）の位置を示すポインタに更新される（Ｓ２１０）。
すると、物理ブロック番号（Ｙ）に読み変えられ（Ｓ２１１）、物理ブロック番号（Ｙ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（２）にデータが書き込まれる（Ｓ２０３）。その後、順次、物理ブロック番号（Ｙ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（３）以降にデータが書き込まれる。
【００２８】
以上のように、実施の形態２に係るデータ記録装置１００では、実施の形態１と同様に、データを記録する度にエラーブロック管理テーブル３０を参照することはない。また、エラーが発生した場合に、エラーが発生したブロックに既に書き込んだデータを新たなブロックへコピーすることがない。したがって、実施の形態１と同様の効果を得ることができる。
【００２９】
なお、Ｓ１０２で読み出すエントリ（Ｅ）に物理ブロック番号が記憶されていない場合の処理は、実施の形態１と同様に行うことができる。
【００３０】
また、現在典型的なＮＡＮＤ型フラッシュメモリでは６４〜１２８ページ／ブロックであるため、エラーブロック管理テーブル３０におけるエラーが発生したページ番号の格納領域は、８ビットあれば十分に表現可能である。また、現在典型的なＮＡＮＤ型フラッシュメモリでは３２７６８〜１３１０７２ブロック／チップであるため、エラーブロック管理テーブル３０における物理ブロック番号の格納領域は、２４ビットあれば十分に表現可能である。
したがって、エラーブロック管理テーブル３０における各エントリは、従来のエラーブロック管理テーブル３０のエントリサイズである４バイトと同じ領域サイズで表現できる。
【００３１】
実施の形態３．
実施の形態１，２では、記憶セルエラーが発生した場合に、代替ブロックを特定した。実施の形態３では、代替ブロックを高速に特定する方法について説明する。
【００３２】
図１０は、実施の形態３に係るデータ記録装置１００の構成図である。
データ記録装置１００は、実施の形態１又２に係るデータ記録装置１００の機能に加え、書込ブロック管理テーブル７０を備える。
アドレス変換テーブル１０、物理ブロック管理テーブル２０、エラーブロック管理テーブル３０、データ書込部４０、ブロック特定部５０は、実施の形態１又２で説明した通りである。関連情報記憶部６０は、原則として実施の形態１又２で説明した通りであるが、代替ブロックの特定方法のみ異なる。書込ブロック管理テーブル７０は、以下で詳しく構成を説明する。
【００３３】
図１１は、実施の形態３に係る書込ブロック管理テーブル７０の構成図である。
書込ブロック管理テーブル７０は、状態が“消去済”となっている空きブロックの物理ブロック番号が記憶される。書込ブロック管理テーブル７０に登録された順に、データの書き込み先のブロックとして選択される。
また、書込ブロック管理テーブル７０は、次にデータの書き込み先のブロックとして選択される物理ブロック番号が記憶されたエントリを示す書込ブロックポインタが設定されている。
【００３４】
図１２は、実施の形態３に係る代替ブロック特定処理を示すフローチャートである。つまり、図１２は、図５に示す実施の形態１におけるＳ１０７の処理、及び、図８に示す実施の形態２におけるＳ２０７の処理を示すフローチャートである。
関連情報記憶部６０は、書込ブロックポインタが設定されている書込ブロック管理テーブル７０におけるエントリから物理ブロック番号を読み出し、その物理ブロック番号が示すブロックを代替ブロックとする（Ｓ３０１）。そして、関連情報記憶部６０は、書込ブロックポインタを書込ブロック管理テーブル７０における次のエントリに進める（Ｓ３０２）。
【００３５】
なお、データ書込部４０が、Ｓ３０１で特定された代替ブロックへ続きのデータの書き込みを開始した後、関連情報記憶部６０は、物理ブロック管理テーブル２０を参照して、状態が“消去済”となっている空きブロックを特定し、書込ブロック管理テーブル７０に追加する。
【００３６】
図１３は、実施の形態３に係るデータ記録装置１００の動作例を示す図である。
図１３に示す例では、物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックにデータを書き込み中に、ページ（２）で記憶セルエラーが発生した場合を示す。
物理ブロック番号（Ｘ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（２）にデータの書き込みが行われると（Ｓ１０３又はＳ２０３）、記憶セルエラーありと判定される（Ｓ１０４又はＳ２０４でエラーあり）。すると、Ｓ１０７又はＳ２０７が実行される。
Ｓ１０７又はＳ２０７では、まず、書込ブロックポインタが設定されている書込ブロック管理テーブル７０におけるエントリから物理ブロック番号（Ｙ）が読みだされる（Ｓ３０１）。そして、書込ブロックポインタが次のエントリに進められる（Ｓ３０２）。
すると、物理ブロック番号（Ｙ）が示すＮＡＮＤ型フラッシュメモリにおけるブロックのページ（２）から順次データが書き込まれる。これと並行して、状態が“消去済”となっている空きブロックが特定され、書込ブロック管理テーブル７０に追加される。
【００３７】
以上のように、実施の形態３に係るデータ記録装置１００では、高速に代替ブロックを特定することができる。そのため、実施の形態１，２において代替ブロックの特定に使われていた時間も、データの書き込みに充てることができる。
【００３８】
なお、実施の形態３においては、書込ブロック管理テーブル７０および書込みブロックポインタの保持、および書込みブロックポインタを更新する機能は、ＮＡＮＤ型フラッシュメモリへデータを書き込むハードウェアで実現することが望ましい。
【００３９】
次に、実施の形態におけるデータ記録装置１００のハードウェア構成について説明する。
図１４は、データ記録装置１００のハードウェア構成の一例を示す図である。
図１４に示すように、データ記録装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、ＬＣＤ９０１（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、通信ボード９１５、ＮＡＮＤ型フラッシュメモリ９２０と接続され、これらのハードウェアデバイスを制御する。
【００４０】
ＲＯＭ９１３などには、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００４１】
プログラム群９２３には、上記の説明において「データ書込部４０」、「ブロック特定部５０」、「関連情報記憶部６０」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、上記の説明において「アドレス変換テーブル１０」、「物理ブロック管理テーブル２０」、「エラーブロック管理テーブル３０」、「書込ブロック管理テーブル７０」等に記憶される情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００４２】
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、その他光ディスク等の記録媒体やＩＣチップに記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ９１３等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【符号の説明】
【００４３】
１０  アドレス変換テーブル、２０  物理ブロック管理テーブル、３０  エラーブロック管理テーブル、４０  データ書込部、５０  ブロック特定部、６０  関連情報記憶部、７０  書込ブロック管理テーブル、１００  データ記録装置。
【図１】
2013257699.tif 000003
【図２】
2013257699.tif 000004
【図３】
2013257699.tif 000005
【図４】
2013257699.tif 000006
【図５】
2013257699.tif 000007
【図６】
2013257699.tif 000008
【図７】
2013257699.tif 000009
【図８】
2013257699.tif 000010
【図９】
2013257699.tif 000011
【図１０】
2013257699.tif 000012
【図１１】
2013257699.tif 000013
【図１２】
2013257699.tif 000014
【図１３】
2013257699.tif 000015
【図１４】
2013257699.tif 000016