(57)【要約】【課題】特別なシステムを必要とすることなく、回復不可能とされていたＥＣＣエラーの発生を回避することが可能な不揮発性半導体記憶装置およびそのアクセス方法、プログラム、並びに電子機器を提供する。【解決手段】ＮＡＮＤ型フラッシュメモリ１０８は、データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値であるＮＯＰの仕様の制約がある。このために、ＮＡＮＤ型フラッシュメモリ１０８は、プロセッサ１１０の制御の下、生じる空セクタにバックアップのためのデータを書き込む。これにより、ＮＡＮＤ型フラッシュメモリ１０８およびプロセッサ１１０は、データ読み出しの際に生じるデバイスが検出可能である最大ｎビットのＥＣＣ（ビット化けエラー）エラーを回避するように構成されている。【選択図】図１
2009271993.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性フラッシュメモリと、
上記不揮発性フラッシュメモリのアクセスを制御する制御部と、を有し、
上記不揮発性フラッシュメモリは、
上記制御部の制御により、データの読み書きがセクタを最小単位として行われ、複数のセクタによりページが形成され、
データの書き込みを行う前に消去を行ってからデータの書き込みが行われ、
データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（ＮＯＰ）の仕様の制約を有し、
上記制御部は、
上記不揮発性フラッシュメモリにデータを書き込むに際し、データの書き込みにより生じる空セクタに、バックアップのためのデータを少なくとも一つ書き込む
不揮発性半導体記憶装置。
【請求項２】
上記制御部は、
ライトリクエストを受けて、書き込むべきオリジナルデータをコピーし、オリジナルデータが書き込まれるセクタに後続するセクタにバックアップのデータセクタを作成し、当該オリジナルデータおよびバックアップデータを上記不揮発性フラッシュメモリに転送してデータの書き込みを行う
請求項１記載の不揮発性半導体記憶装置。
【請求項３】
上記制御部は、
リードリクエストを受けて、上記オリジナルデータが書き込まれたセクタのデータを読み出し、当該読み出しにおいて回復不可能なエラーが発生したか否かを判定し、回復不可能なエラーが発生した場合は、上記バックアップデータが書き込まれたバックアップセクタのデータを読み出す
請求項２記載の不揮発性半導体記憶装置。
【請求項４】
上記制御部は、
バックアップセクタのデータを読み出した際に、回復不可能なエラーが発生したか否かを判定し、回復不可能なエラーが起きた際は、エラー情報を上位のアプリケーションへ通知する
請求項３記載の不揮発性半導体記憶装置。
【請求項５】
上記制御部は、
回復不可能なエラーが発生しなかった場合は、アクセスを正常終了する
請求項３記載の不揮発性半導体記憶装置。
【請求項６】
上記制御部は、
回復不可能なエラーが発生しなかった場合は、アクセスを正常終了する
請求項４記載の不揮発性半導体記憶装置。
【請求項７】
上記制御部は、
ライトリクエストを受けて、リクエストデータ内にバックアップ可能なセクタがあるか否かを判定し、バックアップが可能であると判定した場合は、バックアップデータ、およびオリジナルデータのセクタに後続するセクタにバックアップデータがあることを示す管理情報を作成し、オリジナルデータとバックアップデータと管理情報データを上記不揮発性フラッシュメモリに転送してデータの書き込みを行う
請求項１記載の不揮発性半導体記憶装置。
【請求項８】
上記制御部は、
バックアップ不可能であると判定した場合は、オリジナルデータデータを上記不揮発性フラッシュメモリに転送してデータの書き込みを行う
請求項７記載の不揮発性半導体記憶装置。
【請求項９】
上記制御部は、
リードリクエストを受けて、上記オリジナルデータが書き込まれたセクタのデータを読み出し、当該読み出しにおいて回復不可能なエラーが発生したか否かを判定し、回復不可能なエラーが発生した場合は、上記管理情報を読み出してバックアップがある領域であるか否かを判定し、バックアップがあると判定すると、上記バックアップデータが書き込まれたバックアップセクタのデータを読み出し、回復不可能なエラーが発生したか否かを再度判定し、回復可能なエラーが発生した場合、エラー情報を上位のアプリケーションへ通知する
請求項７記載の不揮発性半導体記憶装置。
【請求項１０】
上記制御部は、
回復不可能なエラーが発生しなかった場合は、アクセスを正常終了する
請求項９記載の不揮発性半導体記憶装置。
【請求項１１】
バックアップのために使用可能な領域の最大サイズは、単位ページサイズをＮＯＰで割った値からオリジナルデータサイズを減算した値である
請求項１から１０のいずれか一に記載の不揮発性半導体記憶装置。
【請求項１２】
上記制御部は、
バックアップのためのデータを、単位ページ内で複数個バックアップする
請求項１１記載の不揮発性半導体記憶装置。
【請求項１３】
データの読み書きがセクタを最小単位として行われ、複数のセクタによりページが形成され、
データの書き込みを行う前に消去を行ってからデータの書き込みが行われ、
データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（ＮＯＰ）の仕様の制約を有するし不揮発性フラッシュメモリにデータを書き込むに際し、
データの書き込みにより生じる空セクタに、バックアップのためのデータを少なくとも一つ書き込む
不揮発性半導体記憶装置のアクセス方法。
【請求項１４】
データの読み書きがセクタを最小単位として行われ、複数のセクタによりページが形成され、
データの書き込みを行う前に消去を行ってからデータの書き込みが行われ、
データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（ＮＯＰ）の仕様の制約を有する不揮発性フラッシュメモリにデータを書き込むに際し、
データの書き込みにより生じる空セクタに、バックアップのためのデータを少なくとも一つ書き込む処理をコンピュータに実行させるプログラム。
【請求項１５】
不揮発性フラッシュメモリと、
上記不揮発性フラッシュメモリのアクセスを制御するプロセッサと、を有し、
上記不揮発性フラッシュメモリは、
上記制御部の制御により、データの読み書きがセクタを最小単位として行われ、複数のセクタによりページが形成され、
データの書き込みを行う前に消去を行ってからデータの書き込みが行われ、
データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（ＮＯＰ）の仕様の制約を有し、
上記プロセッサは、
上記不揮発性フラッシュメモリにデータを書き込むに際し、データの書き込みにより生じる空セクタに、バックアップのためのデータを少なくとも一つ書き込む
電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤ型フラッシュメモリ等の不揮発性半導体記憶装置およびそのアクセス方法、プログラム、並びに電子機器に関するものである。
【背景技術】
【０００２】
半導体記憶装置の一つとして、電気的書き換えを可能としたフラッシュメモリが知られている。
なかでも、メモリセルを複数個直列接続してＮＡＮＤセル・ブロックを構成するＮＡＮＤ型フラッシュメモリは、高集積化ができるものとして注目されている。
【０００３】
ＮＡＮＤ型フラッシュメモリの１つのメモリセルは、半導体基板上に絶縁膜を介して浮遊ゲート（電荷蓄積層）と制御ゲートが積層されたＦＥＴＭＯＳ構造を有する。
そして、ＮＡＮＤ型フラッシュメモリにおいて、複数個のメモリセルが隣接するもの同士でソース・ドレインを共有する形で直列接続されてＮＡＮＤセルを構成する。このようなＮＡＮＤセルがマトリクス配列されてメモリセルアレイが構成される。
【０００４】
このようなＮＡＮＤ型等のフラッシュメモリは、たとえばデジタルカメラのプロセッサの記憶装置やコンピュータに接続可能なメモリカードの記憶装置等、各種電子機器の記憶装置として用いられている（たとえば特許文献１参照）。
【０００５】
また、特許文献１には、欠陥のあるフラッシュメモリセルから発生する誤りを訂正するための誤り訂正回路（ＥＣＣ回路）に関する技術が開示されている。
この特許文献１に開示された技術では、ＥＣＣエラー（ビットエラー）に対して、専用のエラー検出回路を搭載することにより、ＥＣＣエラーの検出および修正を行っている。
【特許文献１】特許第３２２６０４２号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上述した方法では、２ビット（bit）のＥＣＣエラー（以下、回復不可能なエラー）に関しては検出しか行えず、２ビットＥＣＣエラーを修正する場合はそれに必要なＥＣＣのビット数を増やす必要がある。
この問題は、チップの集積化の妨げになると同時に、コストの増加を招く。
【０００７】
そのため、現状のＮＡＮＤ型フラッシュメモリにおいては、１ビットＥＣＣエラー（以下、回復可能なエラー）のみを修正し、２ビットエラーに関してはエラー検出のみを行い修正は行わない、という実装になっているものがほとんどである。
【０００８】
本発明は、特別なシステムを必要とすることなく、回復不可能とされていたＥＣＣエラーの発生を回避することが可能な不揮発性半導体記憶装置およびそのアクセス方法、プログラム、並びに電子機器を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の第１の観点の不揮発性半導体記憶装置は、不揮発性フラッシュメモリと、上記不揮発性フラッシュメモリのアクセスを制御する制御部と、を有し、上記不揮発性フラッシュメモリは、上記制御部の制御により、データの読み書きがセクタを最小単位として行われ、複数のセクタによりページが形成され、データの書き込みを行う前に消去を行ってからデータの書き込みが行われ、データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（ＮＯＰ）の仕様の制約を有し、上記制御部は、上記不揮発性フラッシュメモリにデータを書き込むに際し、データの書き込みにより生じる空セクタに、バックアップのためのデータを少なくとも一つ書き込む。
【００１０】
好適には、上記制御部は、ライトリクエストを受けて、書き込むべきオリジナルデータをコピーし、オリジナルデータが書き込まれるセクタに後続するセクタにバックアップのデータセクタを作成し、当該オリジナルデータおよびバックアップデータを上記不揮発性フラッシュメモリに転送してデータの書き込みを行う。
【００１１】
好適には、上記制御部は、リードリクエストを受けて、上記オリジナルデータが書き込まれたセクタのデータを読み出し、当該読み出しにおいて回復不可能なエラーが発生したか否かを判定し、回復不可能なエラーが発生した場合は、上記バックアップデータが書き込まれたバックアップセクタのデータを読み出す。
【００１２】
好適には、上記制御部は、バックアップセクタのデータを読み出した際に、回復不可能なエラーが発生したか否かを判定し、回復不可能なエラーが起きた際は、エラー情報を上位のアプリケーションへ通知する。
【００１３】
好適には、上記制御部は、ライトリクエストを受けて、リクエストデータ内にバックアップ可能なセクタがあるか否かを判定し、バックアップが可能であると判定した場合は、バックアップデータ、およびオリジナルデータのセクタに後続するセクタにバックアップデータがあることを示す管理情報を作成し、オリジナルデータとバックアップデータと管理情報データを上記不揮発性フラッシュメモリに転送してデータの書き込みを行う。
【００１４】
好適には、上記制御部は、バックアップ不可能であると判定した場合は、オリジナルデータデータを上記不揮発性フラッシュメモリに転送してデータの書き込みを行う。
【００１５】
好適には、上記制御部は、リードリクエストを受けて、上記オリジナルデータが書き込まれたセクタのデータを読み出し、当該読み出しにおいて回復不可能なエラーが発生したか否かを判定し、回復不可能なエラーが発生した場合は、上記管理情報を読み出してバックアップがある領域であるか否かを判定し、バックアップがあると判定すると、上記バックアップデータが書き込まれたバックアップセクタのデータを読み出し、回復不可能なエラーが発生したか否かを再度判定し、回復可能なエラーが発生した場合、エラー情報を上位のアプリケーションへ通知する。
【００１６】
好適には、上記制御部は、回復不可能なエラーが発生しなかった場合は、アクセスを正常終了する。
【００１７】
好適には、バックアップのために使用可能な領域の最大サイズは、単位ページサイズをＮＯＰで割った値からオリジナルデータサイズを減算した値である。
【００１８】
好適には、上記制御部は、バックアップのためのデータを、単位ページ内で複数個バックアップする。
【００１９】
本発明の第２の観点の不揮発性半導体記憶装置のアクセス方法は、データの読み書きがセクタを最小単位として行われ、複数のセクタによりページが形成され、データの書き込みを行う前に消去を行ってからデータの書き込みが行われ、データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（ＮＯＰ）の仕様の制約を有するし不揮発性フラッシュメモリにデータを書き込むに際し、データの書き込みにより生じる空セクタに、バックアップのためのデータを少なくとも一つ書き込む。
【００２０】
本発明の第３の観点は、データの読み書きがセクタを最小単位として行われ、複数のセクタによりページが形成され、データの書き込みを行う前に消去を行ってからデータの書き込みが行われ、データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（ＮＯＰ）の仕様の制約を有する不揮発性フラッシュメモリにデータを書き込むに際し、データの書き込みにより生じる空セクタに、バックアップのためのデータを少なくとも一つ書き込む処理をコンピュータに実行させるプログラムである。
【００２１】
本発明の第４の観点の電子機器は、不揮発性フラッシュメモリと、上記不揮発性フラッシュメモリのアクセスを制御するプロセッサと、を有し、上記不揮発性フラッシュメモリは、上記制御部の制御により、データの読み書きがセクタを最小単位として行われ、複数のセクタによりページが形成され、データの書き込みを行う前に消去を行ってからデータの書き込みが行われ、データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（ＮＯＰ）の仕様の制約を有し、上記プロセッサは、上記不揮発性フラッシュメモリにデータを書き込むに際し、データの書き込みにより生じる空セクタに、バックアップのためのデータを少なくとも一つ書き込む。
【００２２】
本発明によれば、制御部は、不揮発性フラッシュメモリにオリジナルデータを書き込み、その際に生じる空セクタにバックアップのためのデータを書き込む。
【発明の効果】
【００２３】
本発明によれば、特別なシステムを必要とすることなく、回復不可能とされていたＥＣＣエラーの発生を回避することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施形態を図面に関連付けて説明する。
【００２５】
本実施形態においては、本発明の説明をするにあたり電子機器である撮像装置の一例として、一般的なデジタルビデオカメラあるいはデジタルスチルカメラのカメラシステムをとり上げる。
【００２６】
図１は、第１の実施形態に係る撮影装置（カメラ）の構成例を示すブロック図である。
【００２７】
本撮影装置１００は、光学レンズ系１０１、撮像素子１０２、カメラ信号処理回路１０３、ネットワークインタフェース１０４、キー操作部１０５、コーデック部（Ｃｏｄｅｃ）１０６、ＳＤＲＡＭ１０７、フラッシュメモリ１０８、およびＳＤＲＡＭ１０９を有する。
撮像装置１００は、制御部としてのプロセッサ１１０を有する。
さらに、撮像装置１００は、アナログフロントエンド部１１１、接続機器１１２、ディスプレイコントローラ１１３、ディスプレイデバイス１１４、ＵＳＢインタフェース１１５、および記録媒体１１６を有する。
【００２８】
光学レンズ系１０１は、たとえばズームレンズおよびフォーカスレンズを含み、被写体像を撮像素子１０２の撮像面に結像する。
【００２９】
撮像素子１０２は、たとえばＣＣＤやＣＭＯＳセンサを含み、光学レンズ系１０１による結像情報をアナログの電気信号に変換する。
また、撮像素子１０２は、たとえばアナログフロントエンド部の機能をも持ち合わせている。
このアナログフロントエンド部は、撮像素子１０２におけるアナログ出力を相関二重サンプリング処理（ＣＤＳ）、アナログ増幅処理、デジタル信号に変換するアナログ／デジタル（Ａ／Ｄ）変換処理や、撮像素子に画像読み出しのタイミング信号を供給する処理を行うデバイスである。
【００３０】
カメラ信号処理回路１０３は、撮影に先立って撮影のシャッタスピードを決める処理や撮影した画像の明るさや色を調整するための処理等の処理を行い、処理結果を制御部としてのプロセッサ１１０に供給する。
【００３１】
ネットワークインタフェース１０４は、プロセッサ１１０とネットワークとのインタフェース処理を行う。
【００３２】
キー操作部１０５は、カメラ操作にかかわる各種キーを含み、操作されたキー入力情報をプロセッサ１１０に供給する。
【００３３】
コーデック部１０６は、プロセッサ１１０の制御の下、ビデオやオーディオに関するコーデック処理を行う。
なおＳＤＲＡＭ１０７は、コーデック部１０６によりアクセス可能に構成されている。
【００３４】
フラッシュメモリ１０８は、ＮＡＮＤ型フラッシュメモリにより構成され、プロセッサ１１０の記憶装置として用いられる。
このフラッシュメモリ１０８と、フラッシュメモリ１０８をアクセスするプロセッサ１１０の特徴的な構成および機能については後で詳述する。
【００３５】
ＳＤＲＡＭ１０９は、撮影した画像の一時的な保存、カメラ信号処理で行われる演算の途中結果の一時的な保存など司るメモリである。
ＳＤＲＡＭ１０９は、プロセッサ１１０によりアクセスされる。
【００３６】
プロセッサ１１０は、カメラ信号処理で行われる演算や撮影した画像を記録媒体へ書き込むための制御を司り、カメラの信号処理全般の制御を司る。
このプロセッサ１１０とフラッシュメモリ１０８の特徴的な構成および機能については後で詳述する。
【００３７】
アナログフロントエンド部１１１は、オーディオ機器１１２ａ、ビデオ機器１１２ｂ、マイクロフォン（ＭＩＣ）１１２ｃ等の接続機器１１２が接続され、プロセッサ１１０の制御の下、プロセッサ１１０とこれらの接続機器１１２との情報授受の制御を行う。
【００３８】
ディスプレイコントローラ１１３は、プロセッサ１１０の制御の下、液晶表示装置（ＬＣＤ）等のディスプレイデバイス１１４の駆動制御を行う。
【００３９】
ＵＳＢ（Universal Serial Bus）インタフェース１１５は、たとえばＵＳＢメモリ等、ＵＳＢ機能を有する電子機器が接続される。
【００４０】
記録媒体１１６は、たとえば撮影した画像を長時間保存するためにプロセッサ１１０からアクセス可能に構成される。
記録媒体１１６としては、メモリカード等を構成するフラッシュメモリ１１６ａ、ＤＶＤ（Digital Versatile Disc）１１６ｂ、ハードディスクドライブ（ＨＤＤ）１１６ｃ等が適用される。
【００４１】
次に、本実施形態おけるＮＡＮＤ型フラッシュメモリ１０８と、フラッシュメモリ１０８をアクセス制御するプロセッサ１１０の特徴的な構成および機能については詳述する。
【００４２】
ＮＡＮＤ型フラッシュメモリは、計算機やビデオカメラやデジタルスチルカメラ、携帯オーディオプレーヤーなどのシステムの記憶媒体として用いられる。
本実施形態のＮＡＮＤ型フラッシュメモリ１０８は、カメラシステムに適用した場合を例示されている。
【００４３】
このＮＡＮＤ型フラッシュメモリ１０８は、データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値（以下ＮＯＰ： Number Of Partial program とする）の仕様の制約がある。
このために、本実施形態のＮＡＮＤ型フラッシュメモリ１０８は、プロセッサ１１０の制御の下、生じる空セクタにバックアップのためのデータを書き込む。
これにより、ＮＡＮＤ型フラッシュメモリ１０８およびプロセッサ１１０は、データ読み出しの際に生じるデバイスが検出可能である最大ｎビットのＥＣＣ（ビット化けエラー）エラーを回避するように構成されている。
後で述べるように、本実施形態において、バックアップのためのデータは単位ページ内で冗長に複数個バックアップすることも可能である。
本実施形態において、バックアップのために使用可能な領域の最大サイズ（最大バックアップ領域）ＭＢＵＡは、以下に示すように、単位ページサイズＵＰＳをＮＯＰで割った値からオリジナルデータサイズＯＤＳを減算した値である。
【００４４】
［数１］
ＭＢＵＡ＝（ＵＰＳ／ＮＯＰ）−ＯＤＳ
【００４５】
前述したように、ＮＡＮＤ型フラッシュメモリ１０８は、プロセッサ１１０により制御される。
【００４６】
図２は、本実施形態に係るプロセッサとＮＡＮＤ型フラッシュメモリ間のレイヤー構造を示す図である。なお、図２のレイヤー構造は一例として、ＵＮＩＸ（登録商標）システムのものを記載している。
また、ここで説明するシステムはファイルシステムを使用しないシステム構成を想定している。
【００４７】
図２において、プロセッサ１１０は、デバイスドライバ１１０１、ブロック／キャラクタデバイスインタフェース１１０２を含む。デバイスドライバ１１０１は、ブロック／キャラクタデバイスインタフェース１１０２を通してアプリケーション１１０３やミドルウェア１１０４との関連を有する。
また、図２のハードウェアデバイスが本実施形態のＮＡＮＤ型フラッシュメモリ１０８に相当する。
【００４８】
一般にＮＡＮＤ型フラッシュメモリ１０８に対してリード（read）/ライト（write）を行う際、アプリケーション１１０３より、リクエストコマンドＲＥＱが発行され、デバイスドライバ１１０１を介して、ハードウェアデバイス１０８にデータのリード、ライトが実行される。
リードを行う際一般に、ＥＣＣエラーが発生する可能性があり、この問題に対してＮＡＮＤ型フラッシュメモリ１０８にはエラー検出・修正回路が搭載されている。
【００４９】
＜ＮＡＮＤ型フラッシュに関する説明＞
図３は、ＮＡＮＤ型フラッシュメモリのページ構成の一例を示す図である。
【００５０】
１ページはメインエリアＭＮＡで４セクタＳＣＴ、スペアエリアＳＰＡで４セクタＳＣＴにより構成されている。
メインエリアＭＮＡはユーザーが使用可能なエリアであり、スペアエリアＳＰＡはデバイスドライバ１１０１が管理領域として使用するエリアである。
管理領域には、オリジナルデータのセクタに後続するセクタにバックアップデータがあることを示す管理情報等が書き込まれる。
【００５１】
ＮＡＮＤ型フラッシュメモリ１０８には，以下の仕様（制限）が存在する。
・リードライト（読書き）できる最小単位は１セクタ（512byte）単位である。１セクタＳＣＴは５１２バイトである。
・デバイスの種類ごとにＮＯＰが定められている。ここではＮＯＰ２回と仮定する。
・ＮＡＮＤ型フラッシュメモリ１０８はデータを書き込む前に必ず消去（イレーズ）を行ってからデータを書き込む（上書き禁止）という仕様である。
・初期状態およびイレーズ済みの領域は０ｘｆｆで初期化されている。
・５１２バイト以下のデータをライトする際、５１２バイトに満たない領域には０ｘｆｆがライトされる。
【００５２】
また、説明を行うに当たり以下の前提条件を追加する。
・ライト（書き込み）を行った際ページ内に書き込みが行われないセクタが存在する。
・データのライトは先頭のセクタから順に使用するものとする。
・オリジナルデータとバックアップデータは必ず隣接したセクタである必要がある。
【００５３】
図４は、本実施形態におけるライトの際のプロセッサ１１０とＮＡＮＤ型フラッシュメモリ１０８間のデータ転送のシステム構成を示す図である。
【００５４】
プロセッサ１１０のデバイスドライバ１１０１は、データ処理部１１０１１とバッファ１１０１２を含んで構成されている。
また、図３のＮＡＮＤ型フラッシュメモリ１０８は、データバッファ１０８１およびデータエリア（セルアレイエリア）１０８２を含んで構成されている。
【００５５】
ここでは、データ長は、５１２バイトである。
プロセッサ１１０がライトリクエストＷＲＥＱを受けると、データはデータ処理部１１０１１のバッファからバッファ１１０１２へコピーされる。
その際に、デバイスドライバ１１０１は、必要なセクタ数分のバックアップを作成する。
その後、バッファ１１０１２からＮＡＮＤ型フラッシュメモリ１０８側のデータバッファ１０８１へコピーもしくはＤＭＡ転送される。
最後に、データバッファ１０８１からデータエリア１０８２にデータ転送さ、フラッシュメモリにデータの書き込みが行われる。
なお、ここでいうデータエリアとは、ＮＡＮＤ型フラッシュメモリ内の メインエリアとスペアエリアＳＰＡを含む。
【００５６】
以上の前提条件の下に、より具体的な説明を行う。
【００５７】
＜一般的なリード / ライト＞
はじめにＮＡＮＤ型フラッシュのリード/ライト動作について説明する。
【００５８】
まず、ライトの場合について説明する。例として、ＮＯＰ２回で、書き込みデータのサイズが１セクタ以下のデータを記録する場合を考える。
図５は、データサイズが１セクタ以下の場合の書き込み例を示す図である。
【００５９】
ＮＡＮＤ型フラッシュメモリ１０８に１セクタずつ書き込みを行うと、１ページ内のデータ構成は図５に示すようなる。
ＮＯＰは２回であるため、第３セクタＳＣＴ３と第４セクタＳＣＴ４には書き込みを行うことができず、データの無い空セクタが発生する。この空領域を使用するのが本発明の特徴的な構成である。
【００６０】
次に、リードについて考える。
リードを行う際も１セクタ単位でＥＣＣエラーのチェックが行われる。
たとえば、セクタＳＣＴ１を読み出した際に回復可能なＥＣＣエラーが起きた場合は検出回路が検出し、自動修正され、データは正しくロードされる。
しかし、回復不可能なＥＣＣエラーが生じた際は検出回路が検出は行うが、セクタ内のどこで発生したかがわからないため修正が行うことができない。
そのため、エラーとして上位のアプリケーションに通知される。
本発明の実施形態では、この検出はできるが回復不可能なＥＣＣエラーを回避することを特徴としている。
【００６１】
＜書き込みデータサイズが常に１セクタ（512byte）以下の場合（ＮＯＰが２の場合）＞
図６は、データサイズが常に１セクタ以下の場合であってＮＯＰが２の場合の書き込み例を示す図である。
【００６２】
この場合、セクタＳＣＴ１１に１回目のデータＤＴ１の書き込みを行う際、バックアップとして次のセクタＳＣＴ１２にも同じデータＤＴ１を書き込む。
同様に、２回目のデータＤＴ２の書き込みをセクタＳＴ１３に行う際に、バックアップを次のセクタＳＣＴ１４に書き込む。
こうすることによりＮＯＰ２回の仕様を守った上で、新たな領域を必要とせずにデータのバックアップを作成できる。
【００６３】
図７は、図６におけるライト時のシーケンスを示すフローチャートである。
【００６４】
まず、ステップＳＴ１において、１セクタ単位でアプリケーション１１０３からライトリクエストＷＲＥＱが発行される。
その際、ステップＳＴ２においてデバイスドライバ１１０１でデータをコピーし、オリジナルデータの１つ後ろのセクタにバックアップのデータセクタを作成する。
そして、ステップＳＴ３において、たとえばこの２セクタを一度にまとめてＮＡＮＤ型フラッシュメモリ１０８にライトする。
【００６５】
図８は、図６におけるリード時のシーケンスを示すフローチャートである。
【００６６】
ステップＳＴ１１において、リードリクエストＲＲＥＱによりセクタＳＣＴ１をリードする。
ステップＳＴ２において、回復不可能なＥＣＣエラーが発生したか否かを判定する。ステップＳＴ２において回復不可能なＥＣＣエラーが発生しなかった場合は、ステップＳＴ１３の正常終了となる。
ステップＳＴ２において、回復不可能なＥＣＣエラーが発生した場合は、ステップＳＴ１４においてバックアップセクタをリードする。
これにより、回復不可能なＥＣＣエラーを回避できる。
ステップＳＴ１４においてバックアップセクタをリードした際にもステップＳＴ１５において回復不可能なＥＣＣエラーが発生したか否かを判定する。
ステップＳＴ１５において、で回復不可能なＥＣＣエラーが起きた際は、ステップＳＴ１６においてエラーを上位のアプリケーション１１０３へ通知する。
【００６７】
以上、ＮＯＰが２の場合について説明した。
次に、ＮＯＰが１の場合について説明する。
【００６８】
＜ＮＯＰが１の場合であって、バックアップが１個の場合＞
図９は、データサイズが常に１セクタ以上の場合であってＮＯＰが１の場合の書き込み例を示す図である。
【００６９】
この場合は、バックアップできるデータサイズが図９中、符号ＤＴＳ１，ＤＴＳ２で示すように２セクタになるため、最大１ｋバイトのデータまでの回復不可能なＥＣＣエラーを回避できるようになる。
このように、回復不可能なＥＣＣエラーを回避（バックアップ）可能なデータの最大サイズＭＢＵＡは、前述したように、単位ページサイズＵＰＳをＮＯＰで割った値からオリジナルデータサイズＯＤＳを減算した値となる(eq.1)。
【００７０】
［数２］
ＭＢＵＡ＝（ＵＰＳ／ＮＯＰ）−ＯＤＳ
【００７１】
＜バックアップが複数個の場合＞
図１０は、データサイズが常に１セクタ以下で、ＮＯＰが１の場合であってバックアップが複数個の場合の書き込み例を示す図である。
【００７２】
データの中でも管理情報など、特に重要なデータは、図１０に示すように、セクタＳＣＴ３１にオリジナルデータＯＤＴ１を書き込み、セクタＳＣＴ３２，ＳＣＴ３３，ＳＣＴ３４に冗長にバックアップデータＢＵＤＴ１〜ＢＵＤＴ３を取ることも可能である。
この場合は、バックアップの数が増加しているため、回復不可能なエラーを回避できる確率も増え、信頼性を向上させることができる。
【００７３】
＜書き込みデータサイズが未知の場合であってＮＯＰが１の場合＞
これまで述べてきた例は、書き込みデータのサイズが１セクタ以下のものしか来ないという前提であったが、書き込みデータサイズが未知で、様々なサイズのデータが混ざっていた場合を考える。
【００７４】
図１１は、データサイズが３セクタで、ＮＯＰが１でバックアップをとる場合の書き込み例を示す図である。
【００７５】
たとえば、３セクタにまたがるようなデータが存在した際、通常は図１１に示すように、セクタＳＣＴ４１とセクタＳＣＴ４２とセクタＳＣＴ４３にオリジナルデータＯＤＴを一度に書き込む。
しかし、セクタＳＣＴ４４に空領域が発生するため、セクタＳＣＴ４３に関してはバックアップをセクタＳＣＴ４４にとることが可能である。
【００７６】
図１２は、データサイズを限定しない場合のライト時のシーケンスを示すフローチャートである。
【００７７】
この場合、まず、ステップＳＴ２１でアプリケーション１１０３からライトリクエストＷＲＥＱが発行される。
次に、ステップＳＴ２２において、リクエストデータ内にバックアップ可能なセクタがあるか否かを判定する。
ステップＳＴ２３において、バックアップ不可能であると判定した場合は、ステップＳＴ２３においてデータを通常どおり書き込む。
ステップＳＴ２３においてバックアップが可能であると判定した場合は、ステップＳＴ２４においてデバイスドライバ１１０１でのバックアップ作成をする。
次に、ステップＳＴ２５においてオリジナルデータＯＤＴとバックアップデータＢＵＤＴと管理情報データ、この例では、このセクタはバックアップを一つ後ろのセクタに持っているというフラ）をセクタ３のスペアエリアＳＰＡに一度にライトする。
【００７８】
管理情報のフォーマットは、デバイスドライバ設計者が任意に決めた仕様でよい。たとえば、スペアエリアＳＰＡのある特定のビットを０か１で判断するなどである。
【００７９】
図１３は、データサイズを限定しない場合のリード時のシーケンスを示すフローチャートである。
【００８０】
この場合、ステップＳＴ３１において、アプリケーション１１０３からリードリクエストＲＲＥＱが発行され、ステップＳＴ３２において、リードリクエストＲＲＥＱによりセクタＳＣＴ１をリードする。
ステップＳＴ３３において、回復不可能なＥＣＣエラーが発生したか否かを判定する。ステップＳＴ３３おいて回復不可能なＥＣＣエラーが発生しなかった場合は、ステップＳＴ３４の正常終了となる。
ステップＳＴ３３において、回復不可能なＥＣＣエラーが発生した場合、ステップＳＴ３５において管理情報を読み出し、ステップＳＴ３６においてリードセクタがバックアップのあるセクタか否かの判別が行われる。
ステップＳＴ３６において、バックアップがある領域であると判別すると、ステップＳＴ３７においてバックアップセクタをリードする。
ステップＳＴ３７においてバックアップセクタをリードした際にもステップＳＴ３８において回復不可能なＥＣＣエラーが発生したか否かを判定する。
ステップＳＴ３８において、回復不可能なＥＣＣエラーが起きた際、あるいはステップＳＴ３６でバックアップ領域がないと判別した場合は、ステップＳＴ３９においてエラーを上位のアプリケーション１１０３へ通知する。
【００８１】
＜ＮＡＮＤ型フラッシュメモリがリムーバブルな場合＞
図１４は、ＮＡＮＤ型フラッシュメモリがリムーブバルである場合のＮＯＰ情報取得シーケンスを示すフローチャートである。
【００８２】
その他の変形例として、ＮＡＮＤ型フラッシュメモリが内蔵式ではなく、リムーバブルだった場合は、毎回初期化時に図１４のシーケンスを追加することで、デバイスの違いによるＮＯＰの変化に対応できる。
【００８３】
この場合、まず、ステップＳＴ４１においてシステムの電源がオンになる。
するとステップＳＴ４２において、ＮＡＮＤ型フラッシュメモリ１０８の初期化時にＮＡＮＤのデバイス情報を取得する。
次に、ステップＳＴ４３において、このデバイス情報によりＮＯＰを認識する。
【００８４】
ここでいうデバイス情報とは、デバイスのモデル番号などである。モデル番号とＮＯＰの対応は基本的に既知であるとすればリムーバブルなＮＡＮＤに対しても対応することが可能である。
【００８５】
以上説明したように、本実施形態によれば、ＮＡＮＤ型フラッシュメモリ１０８は、データを一度消去してから次にデータを消去するまでの間に、単位ページ内に書き込みが行える回数の上限値であるＮＯＰの仕様の制約がある。
このために、本実施形態のＮＡＮＤ型フラッシュメモリ１０８は、プロセッサ１１０の制御の下、生じる空セクタにバックアップのためのデータを書き込む。
これにより、ＮＡＮＤ型フラッシュメモリ１０８およびプロセッサ１１０は、データ読み出しの際に生じるデバイスが検出可能である最大ｎビットのＥＣＣ（ビット化けエラー）エラーを回避するように構成されている。
したがって、本実施形態によれば、以下の効果を得ることができる。
【００８６】
すなわち、本実施形態によれば、計算機やビデオカメラやデジタルスチルカメラ、携帯オーディオプレーヤーなどの記憶媒体であるＮＡＮＤ型フラッシュメモリにおいて、書き込みデータが非常に小さい場合に、ページ内の空いたセクタをそのバックアップとして使用することにより、これまで回復不可能であったＥＣＣエラーを回避することが可能である。
【００８７】
一般にＮＡＮＤ型フラッシュメモリにおいて、回復不可能なＥＣＣエラーが発生した場合はそのブロックをバッドブロックとして、他の正常なブロックと交換し、バッドブロックはその後使用しない。なお、バッドブロックとは、回復不可能な何らかのエラーは発生したため二度と使用されないエラーブロックをいう。
そのため、回復不可能なＥＣＣエラーが発生すると、ユーザエリアが１ブロック減少する。
しかし、本実施形態の手法では、回復不可能なＥＣＣエラーがオリジナルセクタとバックアップセクタの両方で起きない限りは、その領域をバッドブロックにする必要が無いため、回復不可能なＥＣＣエラーによるユーザー領域の減少を抑えることができる。
【００８８】
また、たとえばビデオカメラにおいて映像データや音声データをリアルタイムに記録する際、トータルの記録量は非常に大きいものになる。
しかし、リアルタイムに記録する際、ある単位時間当たりでは、１セクタ以下のデータを記録する場合が非常に多い。
つまり、本発明はビデオカメラの記録データなどをＮＡＮＤ型フラッシュメモリに記録する際に有効である。
また、本発明は管理データなどの書き込みなどにも有効と考えられる。その理由は、一般に管理データは画像データなどに比べて小さいためである。
【００８９】
なお、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【００９０】
【図１】第１の実施形態に係る撮影装置（カメラ）の構成例を示すブロック図である。
【図２】本実施形態に係るプロセッサとＮＡＮＤ型フラッシュメモリ間のレイヤー構造を示す図である。
【図３】ＮＡＮＤ型フラッシュメモリのページ構成の一例を示す図である。
【図４】本実施形態におけるライトの際のプロセッサ１１０とＮＡＮＤ型フラッシュメモリ１０８間のデータ転送のシステム構成を示す図である。
【図５】データサイズが１セクタ以下の場合の書き込み例を示す図である。
【図６】データサイズが常に１セクタ以下の場合であってＮＯＰが２の場合の書き込み例を示す図である。
【図７】図６におけるライト時のシーケンスを示すフローチャートである。
【図８】図６におけるリード時のシーケンスを示すフローチャートである。
【図９】データサイズが常に１セクタ以上の場合であってＮＯＰが１の場合の書き込み例を示す図である。
【図１０】データサイズが常に１セクタ以下で、ＮＯＰが１の場合であってバックアップが複数個の場合の書き込み例を示す図である。
【図１１】データサイズが３セクタで、ＮＯＰが１でバックアップをとる場合の書き込み例を示す図である。
【図１２】データサイズを限定しない場合のライト時のシーケンスを示すフローチャートである。
【図１３】データサイズを限定しない場合のリード時のシーケンスを示すフローチャートである。
【図１４】ＮＡＮＤ型フラッシュメモリがリムーブバルである場合のＮＯＰ情報取得シーケンスを示すフローチャートである。
【符号の説明】
【００９１】
１００・・・撮影装置（カメラ）、１０１・・・光学レンズ系、１０２・・・撮像素子、１０３・・・カメラ信号処理回路、１０４・・・ネットワークインタフェース、１０５・・・キー操作部、１０６・・・コーデック部（Ｃｏｄｅｃ）、１０７・・・ＳＤＲＡＭ、１０８・・・フラッシュメモリ、１０８１・・・データバッファ、１０８２・・・データエリア、１０９・・・ＳＤＲＡＭ、１１０・・・プロセッサ、１１０１・・・デバイスドライバ、１１０１１・・・データ処理部、１１０１２・・・バッファ、１１０３・・・アプリケーション、１１１・・・アナログフロントエンド部、１１２・・・接続機器、１１３・・・ディスプレイコントローラ、１１４・・・ディスプレイデバイス、１１５・・・ＵＳＢインタフェース、１１６・・・記録媒体。
【図１】
2009271993.tif 000003
【図２】
2009271993.tif 000004
【図３】
2009271993.tif 000005
【図４】
2009271993.tif 000006
【図５】
2009271993.tif 000007
【図６】
2009271993.tif 000008
【図７】
2009271993.tif 000009
【図８】
2009271993.tif 000010
【図９】
2009271993.tif 000011
【図１０】
2009271993.tif 000012
【図１１】
2009271993.tif 000013
【図１２】
2009271993.tif 000014
【図１３】
2009271993.tif 000015
【図１４】
2009271993.tif 000016