(57)【要約】【課題】フラッシュメモリに対するデータ書き込み処理についての中断判定のための準備となる処理が効率的なものとなるようにする。【解決手段】データ消去最小単位であるブロックの交替処理を含むデータ更新処理を実行するごとに、次回のブロック交替処理において更新データを書き込むブロックを示す予約ブロックアドレスの情報を、フラッシュメモリの管理情報内に格納して書き込む。中断判定は、予約ブロックアドレスが示すブロックのデータが消去済みか否かを判別することで行う。この予約ブロックアドレスは、その内容が持つ性質上、１回のブロック交替処理に伴って１回のみ記録するだけでよい。【選択図】図１１
2006085342.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の上記消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手段と、
上記単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において上記書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域を特定するための領域特定情報を生成する情報生成手段と、
上記単位領域交替処理が終了した後において、上記情報生成手段により生成された領域特定情報を、上記メモリに対して物理的に書き込むための処理を実行する情報書込手段と、
上記メモリに書き込まれているとされる上記領域特定情報により特定した消去単位領域を、上記データ更新手段が実行する今回の単位領域交替処理において使用すべき上記書込対象消去単位領域として決定する領域決定手段と、
最後の上記単位領域交替処理の開始から上記情報書込手段の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在の上記メモリに書き込まれている上記領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手段と、
を備えることを特徴とするメモリ制御装置。
【請求項２】
上記記憶領域においては、少なくとも、上記記憶領域におけるデータ書き込み状態を上記消去単位領域により管理するための管理情報が書き込まれており、
上記情報書込手段は、上記管理情報における所定位置に対して上記領域特定情報を格納させて書き込むようにされていることを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の上記消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手順と、
上記単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において上記書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域を特定するための領域特定情報を生成する情報生成手順と、
上記単位領域交替処理が終了した後において、上記情報生成手順により生成された領域特定情報を、上記メモリに対して物理的に書き込むための処理を実行する情報書込手順と、
上記メモリに書き込まれているとされる上記領域特定情報により特定した消去単位領域を、上記データ更新手順が実行する今回の単位領域交替処理において使用すべき上記書込対象消去単位領域として決定する領域決定手順と、
最後の上記単位領域交替処理の開始から上記情報書込手順の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在の上記メモリに書き込まれている上記領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手順と、
を実行することを特徴とするメモリ制御方法。
【請求項４】
データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の上記消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手順と、
上記単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において上記書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域を特定するための領域特定情報を生成する情報生成手順と、
上記単位領域交替処理が終了した後において、上記情報生成手順により生成された領域特定情報を、上記メモリに対して物理的に書き込むための処理を実行する情報書込手順と、
上記メモリに書き込まれているとされる上記領域特定情報により特定した消去単位領域を、上記データ更新手順が実行する今回の単位領域交替処理において使用すべき上記書込対象消去単位領域として決定する領域決定手順と、
最後の上記単位領域交替処理の開始から上記情報書込手順の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在の上記メモリに書き込まれている上記領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手順と、
をメモリ制御装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばフラッシュメモリなどの不揮発性のメモリ素子に対するデータ書き込み／読み出しなどについての制御を行うメモリ制御装置、及びその方法と、このようなメモリ制御装置が実行すべきプログラムに関するものである。
【背景技術】
【０００２】
近年、リムーバブルメディアとして、例えばフラッシュメモリなどの不揮発性の半導体記憶素子を備えて、各種のデータの書き込み／読み出しが可能とされた小型の記憶装置（半導体記憶装置）が知られている。
【０００３】
このような半導体記憶装置に備えられるフラッシュメモリは、特性として、データの上書きは不可であり、消去されている状態から書き込みを行うべきことが知られている。また、データの消去は、フラッシュメモリとしての記憶領域を所定サイズに分割したブロックといわれる物理的な記憶領域単位を最小単位として行われ、データの書き込みは、ブロックをさらに所定サイズに分割したページといわれる記憶領域単位を最小単位として行われる。そのうえで、フラッシュメモリは、消去の繰り返し回数に寿命がある。このために、データの書き込み（更新）は次のようにして行われる。
【０００４】
例えばユーザデータの書き込みとして更新を行うときには、更新対象のデータが書き込み済みとなっているブロックからデータを読み出して、この読み出したデータと更新のための追加データなどを利用して更新されたデータを生成する。そして、この段階で消去済みとなっている他の特定ブロックに対して、この更新されたデータを書き込むようにされる。そのうえで、上記更新対象のデータが書き込まれていたブロックについては、データを消去するようにされる。
つまり、データを更新するときには、更新前のデータが書き込まれていたブロックに再度書き込むことはせずに、他の消去状態にあるブロックを選択して書き込みを行うようにされる（ブロック交替処理）。これにより、１つのブロックに対してデータの消去／書き込みが集中しないようにして、フラッシュメモリ全体としての寿命をのばすことが可能となる。
【０００５】
そして、ファイルシステムとしては、上記したデータの更新に対応して、効率的にデータ管理が行われるように、ブロック管理のために論理アドレスと物理アドレスという概念を導入し、この論理アドレスと物理アドレスとを利用して、記憶装置に対するブロック単位でのデータの書き込み／読み出しを実行するようにされる。このために、ファイルシステムでは、フラッシュメモリに対するデータの書き込み状態を管理する管理情報として、上記論理アドレスと物理アドレスとの対応を示すテーブル（以降、論理−物理アドレス変換テーブル）を備えている。この論理−物理アドレス変換テーブルを参照することで、例えばファイルシステムの上位のＦＡＴ(File Allocation Table)については、これまでと同様の仕組みにより、フラッシュメモリにアクセスすることが可能となる。
先に説明したようにして、データの更新が行われた後には、実際のブロックに対するデータの書き込み／消去の結果が反映されるようにして、論理−物理アドレス変換テーブルの更新を行うようにされる。
【０００６】
【特許文献１】特開２００３−３６２０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、上記したフラッシュメモリに対するデータの更新などのデータ書き込み処理を実行している最中において、例えば、電源が遮断したり、ドライブから半導体記憶装置が取り外されるなどして、データの書き込み処理が中断されてしまう場合のあることは当然想定される。
このような場合、例えば、次の半導体記憶装置の起動時においては、実際のフラッシュメモリ上での物理的なデータの記憶状態と、上記論理−物理アドレス変換テーブルなどの管理情報の内容とに不整合が生じていることになる。このままでは、以降において、フラッシュメモリに対する正常なデータの管理、アクセスが保証できなくなる。
【０００８】
そこで、実際には、データ書き込み処理において、上記したようなデータの書き込み処理の中断の有無を、次回の起動時において判定できるようにするための所定の手順を含むようにされる。そして、次回の起動時においては、最後のデータ書き込み処理が中断されたか否かについての判定（中断判定）を行うようにされる。そして、中断判定の結果として、実際にデータ書き込み処理が中断されたことを判定したした場合には、例えばフラッシュメモリにおける実際のデータの書き込み状態を検証していって、管理情報を再構築するようにされる。
【０００９】
上記のようにして、半導体記憶装置の起動時においては、先ず、中断判定を行うようにされ、このためには、データ書き込み処理の実行時において、中断判定に対応した準備的処理手順（中断判定準備処理）が実行されることになる。
ここで、この中断判定準備処理としては、データ書き込み処理が実行されるごとに必ず行われるべきものとなるから、できるだけ効率的に行われることが求められる。
【課題を解決するための手段】
【００１０】
そこで本発明は上記した課題を考慮して、メモリ制御装置として次のように構成することとした。
つまり、データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手段を備える。
また、単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域を特定するための領域特定情報を生成する情報生成手段と、単位領域交替処理が終了した後において、情報生成手段により生成された領域特定情報を、メモリに対して物理的に書き込むための処理を実行する情報書込手段と、メモリに書き込まれているとされる領域特定情報により特定した消去単位領域を、上記データ更新手段が実行する今回の単位領域交替処理において使用すべき上記書込対象消去単位領域として決定する領域決定手段とを備える。
また、最後の単位領域交替処理の開始から情報書込手段の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在のメモリに書き込まれている領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手段を備える。
【００１１】
また、データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手順を実行するようにされる。
また、単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において上記書込対象消去単位領域として決定されるべき、消去済み状態の消去単位領域を特定するための領域特定情報を生成する情報生成手順と、単位領域交替処理が終了した後において、情報生成手順により生成された領域特定情報をメモリに対して物理的に書き込むための処理を実行する情報書込手順と、メモリに書き込まれているとされる領域特定情報により特定した消去単位領域を、データ更新手順が実行する今回の単位領域交替処理において使用すべき書込対象消去単位領域として決定する領域決定手順を実行する。
また、最後の単位領域交替処理の開始から情報書込手順の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在のメモリに書き込まれている領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手順とを実行するように構成することとした。
【００１２】
また、上記手順をメモリ制御装置に実行させるプログラムを構成することとした。
【００１３】
上記各構成によれば、データ消去の最小単位となる消去単位領域により分割される記憶領域を有するメモリに対するメモリ制御として、データ更新については、単位領域交替処理を伴って実行することができるようになっている。そのうえで、本発明においては、中断判定準備処理として、次回の単位領域交替処理において書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域（予約ブロック）を特定するための情報である領域特定情報を生成して、この領域特定情報をメモリに書き込んでおくこととしている。この領域特定情報のメモリへの書き込みは、上記単位領域交替処理としてのデータ更新が終了した後となるシーケンスで実行されるようになっている。
このような構成の場合において、例えば最後の単位領域交替処理から領域特定情報のメモリ書き込み処理までのシーケンスが正常に終了した場合、領域特定情報もメモリに対して正常に記録されることになる。このときにメモリに記録された領域特定情報の内容は、適正に、次回の単位領域交替処理において更新データの書き込みに使用されるべき消去済みの消去単位領域を特定するものであることになる。
これに対して、最後の単位領域交替処理から領域特定情報のメモリ書き込み処理までのシーケンスの間で中断が生じた場合には、メモリへの領域特定情報の書き込みが完了していないことで、例えば最後の単位領域交替処理において更新データを書き込んだ書込対象消去単位領域を特定する内容のままであることになる。しかしながら、単位領域交替処理が開始されてからの中断であるから、何らかのデータは、この書込対象消去単位領域に書き込まれた状態となっている。
このことから、中断判定手段（手順）としては、現在の領域特定情報により特定される消去単位領域について、消去済みであるか否かを判別することで、中断判定が行えることになる。
このようにして本発明における中断判定は、メモリに書き込んで記憶させた領域特定情報を利用するのであるが、この領域特定情報のメモリへの書き込みは、１回の単位領域交替処理に対応して１回のみしか行われないようになっている。
【発明の効果】
【００１４】
このようにして本発明としては、１回あたりの単位領域交替処理に対応する中断判定準備処理となるメモリへの情報の書き込み回数について、最小の１回としていることで、これを複数回行うものとした場合と比較して、メモリに対するデータ書き込み回数が削減されることになる。
これにより、或るデータサイズのデータの更新（書き込み）に要する時間は、メモリへのアクセス回数が少なくなる分、短縮されることになる。
また、上記した単位領域交替処理を行う目的が、消去回数により寿命が決まる特性のメモリの寿命の延長を目的とするものである場合には、メモリへの書き込み回数が少なくなることにより、上記した消去単位領域の消去頻度も低くなる。つまり、メモリの長寿命化を図ることも可能となる。
このようにして本発明では、中断判定準備処理について、メモリに対するデータ処理速度やメモリの寿命の点などに関して、効率化が図られているものである。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施するための最良の形態（以下、実施の形態ともいう）について説明していく。本実施の形態としては、半導体記憶素子としてフラッシュメモリを備える半導体記憶装置を例に挙げることとする。
この半導体記憶装置は、１つの独立したリムーバブルメディアとしての形態を採り、外形形状としては、例えば小型の板状となっている。
なお、以降の説明は次の順序で行う。
１．半導体記憶装置の構成。
２．フラッシュメモリの物理フォーマット。
３．物理アドレス及び論理アドレスの概念。
４．論理−物理アドレス変換テーブル。
５．ＢＭＡＰの構造（第１例）。
６．ＢＭＡＰの構造（第２例）。
７．ＳＭＡＰ。
８．データの書き込み（更新）処理手順。
８−１．ユーザデータの書き込み。
８−２．管理情報（ＳＭＡＰ、ＢＭＡＰ）の書き込み。
９．処理動作。
９−１．データ書込処理。
９−２．中断判定処理。
９−３．ＢＭＡＰ再構築処理。
１０．他の中断判定のための構成。
【００１６】
１．半導体記憶装置の構成。
図１は、本実施の形態の半導体記憶装置１の内部構成例を示している。
この図に示すようにして、半導体記憶装置１は、フラッシュメモリ２、データ処理部３、及びホスト間通信処理部４を備えて成る。
【００１７】
フラッシュメモリ２は、周知のようにして、半導体による不揮発性の記憶素子の１つであり、この場合には、所定の記憶容量を有するものが備えられる。
【００１８】
データ処理部３は、半導体記憶装置１におけるデータ処理として、フラッシュメモリ２に対するデータの書き込み（消去）／読み出しについての制御、処理を実行する。このために、データ処理部３は、フラッシュメモリに記憶されている、データ書き込み／読み出しのための所要の情報により形成される管理情報を利用する。また、データ処理部３は、この管理情報についての更新などをはじめとする、管理情報についての管理も行うようにされる。また、データ処理部３は、ホストシステム１０との通信を行うために通信処理部４に対する通信制御も実行する。
なお、データ処理部３としては、例えばＣＰＵ、ＲＯＭ及びＲＡＭなどを備えるマイクロコンピュータとして構成される。
【００１９】
通信処理部４は、ホストシステム１０とデータ処理部３との間で、所定の通信方式による通信を行うためのハードウェアデバイスなどを備えて成る。
通信処理部４では、所定の通信方式によりホストシステム１０から送信されてきたコマンド（レスポンス）、データなどの情報を受信、デコードし、半導体記憶装置１内部のデータ通信方式に従った形式のデータに変換してデータ処理部３に対して転送する。データ処理部３は、通信処理部４から転送されてきたコマンド、データなどを受信したのに応じて、コマンドに応答した処理や、フラッシュメモリ２へのデータ書き込みなどの処理を実行する。
また、例えばデータ処理部３が、コマンド（レスポンス）を送信したり、フラッシュメモリ２から読み出したデータをホストシステム１０に転送する場合には、データ処理部３は、これらのコマンド、データなどを通信処理部４に転送して、ホストシステム１０に対して送信するように指示を行う。これに応じて通信処理部４は、データ処理部３から転送されてきたコマンド、データを、ホストシステム１０との通信方式に従った形式に変換してホストシステム１０に送信する。
【００２０】
ホストシステム１０は、例えば所定の機能を備える電子機器であり、リムーバブルメディアである半導体記憶装置１を装脱するためのスロット部位を備えている。そして、このスロットに装填された半導体記憶装置１に対して、データの書き込み／読み出しを行うことが可能とされている。
この場合のホストシステム１０がどのような機器であるのかについては、ここでは特に限定されるべきものではないが、例えばパーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオレコーダ、携帯電話などを挙げることができる。例えばデジタルスチルカメラを例にとると、撮影操作に応じて生成された写真としての画像データを半導体記憶装置１に対して転送して、フラッシュメモリ２に記憶させるようにする。また、例えば半導体記憶装置１（フラッシュメモリ２）から写真の画像データを読み出して取り込み、液晶ディスプレイパネルなどの表示部に表示出力させることなどが行われる。
【００２１】
２．フラッシュメモリの物理フォーマット。
続いて、図２を参照して、フラッシュメモリ２の物理フォーマットについて説明する。  フラッシュメモリとしての記憶領域全体は、図２（ａ）に示すようにして、先ず、所定の固定長によるセグメント単位で分割される。
また、１セグメントは、図２（ｂ）に示すようにして、所定の固定長によるブロック（消去単位領域）０〜ｎにより分割される。周知のようにして、フラッシュメモリは、データの上書きはできないことになっており、データの書き込みは、消去済みの領域に対して行われる。そして、このブロックは、データを消去するときの最小単位となる。
本実施の形態に対応するフォーマットでは、原則として、１セグメントは５１２ブロックにより分割されて成る。この場合、図２（ｂ）に示される最終のブロック番号ｎは５１１となる。また、図２（ａ）において示されるセグメント０〜Ｍで表されるＭ＋１個のセグメントは、それぞれ５１２ブロックごとの単位で分割されることになる。
【００２２】
この図２（ａ）にはフラッシュメモリの領域に対応してブロックアドレス（物理アドレス）が示されている。このブロックアドレスとセグメント０〜Ｍの対応としては、セグメント０がブロックアドレス０〜５１１となり、セグメント１がブロックアドレス５１２〜１０２３、セグメント２がブロックアドレス１０２４〜１５３５となる。つまり、セグメント番号が１つ増加するごとに、５１２ブロック分オフセットが与えられたブロックアドレスの値をとっていくことになる。
そして、１つのフラッシュメモリ内におけるデータ用セグメントの数（Ｍ）は１以上であることが規定されるが、これについてはフラッシュメモリの容量に応じて異なってくることになる。
また、図２（ａ）においては、セグメント０内の先頭においてシステム用セグメントが記されているが、これについては、後述する。
【００２３】
そして、図２（ｂ）に示したブロックの各々は、図２（ｃ）に示すようにして、ページ０〜ｍにより分割される。
１ページは固定長であり、図２（ｄ）に示すように、所定サイズのデータ部と冗長部より成る。データ部にはデータを格納する領域であり、冗長部は、各種の所要の管理情報などが格納される領域となる。
データ書き込みについては、このページが最小単位となる。つまり、フラッシュメモリ２は、データの消去はブロック単位で行われ、データの書き込みはページ単位で行われるべきものとなっており、データ消去単位とデータ書込単位のデータサイズが相互に異なるものとなっている。なお、ブロック内におけるページ数は、固定的に規定されているものではなく、例えばこれまでにおいては、１６（ｍ＝１５），３２（ｍ＝３１），６４（ｍ＝６３）などのページ数の構造とすることが行われている。
【００２４】
３．物理アドレス及び論理アドレスの概念。
上述したフラッシュメモリの物理フォーマットを踏まえたうえで、フラッシュメモリのファイル管理において定義される物理アドレスと論理アドレスの概念について、図３を参照して説明する。図３は、データの更新手順を示している。
図３（ａ）は、データ更新処理前の状態として、或るセグメント内から４つのブロックを抜き出して、これを模式的に示している。
フラッシュメモリにおいて物理的に存在する各ブロック（物理ブロック）に対しては物理アドレスが付される。この物理アドレスはメモリにおける物理ブロックの物理的な配列順に従って決まるもので、或る物理ブロックとこれに対応付けされた物理アドレスとの関係は不変となる。図２（ａ）において示されていたブロックアドレスは、この物理アドレスとなる。
ここでは、図３（ａ）に示す４つのブロックに対して、上から順に物理アドレスの値として、１０５，１０６，１０７，１０８が付されている。なお、実際の物理アドレスは例えば２バイトにより表現される。
【００２５】
ここで、図３（ａ）に示すように、物理アドレス１０５，１０６で示されるブロックがデータの記憶されている書込済ブロックで、物理アドレス１０７，１０８で示されるブロックがデータが消去（即ち、未記録領域である）された消去済ブロックとなっている状態であるとする。
【００２６】
そして、論理アドレスであるが、この論理アドレスは、ブロックに対して書き込まれたデータに付随するようにして割り振られるアドレスとされる。そして、この論理アドレスが、ファイルシステムとして、論理アドレス、物理アドレス管理層の上層に位置するとされる、ＦＡＴ(File Allocation Table)ファイルシステムが利用するアドレスとされている。
図３（ａ）では、４つの各ブロックに対して、上から順に論理アドレスの値として、１０２，１０３，１０４，１０５が付されている状態が示されている。なお、論理アドレスも実際には２バイトにより表現されるものである。
【００２７】
ここで、上記図３（ａ）に示す状態から、例えば物理アドレス１０５に格納されているデータの更新として、内容の書き換え、追加、又は一部消去を行うとする。
このような場合、フラッシュメモリのファイルシステムでは、同じブロックに対して更新したデータを再度書き込むことはせずに、消去済ブロックに対してその更新したデータを書き込むようにされる。
つまり、例えば図３において処理１となる図３（ａ）から図３（ｂ）の遷移として示すようにして、物理アドレス１０５のブロックに書き込まれていたデータについての更新データは、これまで未使用ブロックであった物理アドレス１０７で示されるブロックに書き込むようにされる。そして、物理アドレス１０５のブロックのデータについては消去するようにされる。
【００２８】
続いては、処理２として示すように、データ更新前（図３（ａ））の状態では物理アドレス１０５に対応していた論理アドレス１０２が、更新されたデータが書き込まれたブロックの物理アドレス１０７に対応するように、論理アドレスと物理アドレスとの対応関係についての変更を行う。これに伴って、データ更新前は物理アドレス１０７に対応していた論理アドレス１０４については、物理アドレス１０５に対応するように変更されている。
【００２９】
つまり、物理アドレスはブロックに対して固有に付されるアドレスであり、論理アドレスは、一旦ブロックに対して書き込まれたデータに付随するようにしてついて回る、ブロック単位の書き込みデータに固有となるアドレスであるとみることができる。
【００３０】
周知のようにして、フラッシュメモリとしての半導体素子には寿命があり、この寿命は、データの消去回数により示される。そこで、上記したようなデータの書き込み（更新）手順とすることで、或る同一の記憶領域（ブロック）に対して繰り返し集中的にアクセスされることが無くなり、フラッシュメモリの寿命を延ばすことが可能となる。
そして、この際に論理アドレスを上記処理２のようにして扱うことで、更新前と更新後のデータとで書き込まれるブロックの交替があるようにされても、ＦＡＴは論理アドレスによりファイル管理を行っているために、ＦＡＴ側からは同一のアドレスが見えることになり、以降のアクセスを適正に実行することができるものである。
なお、後述する論理−物理アドレス変換テーブル上での更新のための管理を簡略にすることなどを目的として、上記したようなデータ書き込み対象とするブロックの交替は、１セグメント内で完結するものとして規定されており、セグメント間で跨るようにしては行われない。
【００３１】
４．論理−物理アドレス変換テーブル。
上記図３に示したようにしてブロックの交替を伴ってデータの書き込みが行われることで、物理アドレスと論理アドレスの対応は変化する。従って、フラッシュメモリに対するデータの書き込み及び読み出しのためのアクセスを実現するには、物理アドレスと論理アドレスとの対応が示される論理−物理アドレス変換テーブルが必要となる。つまり、論理−物理アドレス変換テーブルをＦＡＴが参照することで、ＦＡＴが指定した論理アドレスに対応する物理アドレスが特定され、この特定された物理アドレスにより示されるブロックにアクセスすることが可能になるものである。逆に言えば、論理−物理アドレス変換テーブルが無ければ、ＦＡＴによるフラッシュメモリへのアクセスが不可能となる。
【００３２】
図４は、論理−物理アドレス変換テーブルの概念を示している。
この図に示すようにして、論理−物理アドレス変換テーブルとしては、例えば、先ず論理アドレスを昇順に整列させることことしている。そして、各論理アドレスごとに、対応させるべき物理アドレスを格納するようにしてテーブル情報を構築する。
なお、先に図３により説明したデータ書き込み時におけるブロックの変更はセグメントの範囲内で行われるので、上記図４に示した構造概念の論理−物理アドレス変換テーブルは、セグメントごとに設けられるものとなる。
【００３３】
図５は、フラッシュメモリ２において複数のセグメント（データ用セグメント）が設定されている場合の物理ブロック（物理アドレス）と、論理アドレスの割り当て例を示している。
この図においては、各５１２ブロックの容量のセグメント０〜３の４セグメントが設定された例が示されている。そのうえで、この場合において、フラッシュメモリにおいて先頭となるセグメント０については、物理ブロックのアドレス、つまり、物理アドレスとしては、０〜５１１までの範囲が割与えられることになる。また、次のセグメント１の物理アドレスは５１２〜１０２３の範囲が割与えられ、さらに、セグメント２は、１０２４〜１５３５、セグメント３は、１５３６〜２０４７の物理アドレス範囲が割り振られることになる。
【００３４】
このような物理アドレス範囲の割り当てに対して、論理アドレス範囲の割り当ては例えば次のようになる。つまり、この場合には、１セグメントあたりの論理アドレスとしては、４９０個を割り当てることとしている。そして、セグメント０には論理アドレス０〜４８９の範囲を割り当て、以降、セグメント１には論理アドレス４９０〜９７９、セグメント２には論理アドレス９８０〜１４６９、セグメント３には論理アドレス１４７０〜１９５９の範囲を割り当てる。
【００３５】
従って、セグメント０の論理−物理アドレス変換テーブルとしては、論理アドレス０〜４８９のそれぞれに対して、物理アドレス０〜５１１のいずれかを対応させることになる。
また、セグメント１の論理−物理アドレス変換テーブルは、論理アドレス４９０〜９７９のそれぞれに対して、物理アドレス５１２〜１０２３の何れかを対応させ、セグメント２の論理−物理アドレス変換テーブルは、論理アドレス９８０〜１４６９のそれぞれに対して、物理アドレス１０２４〜１５３５の何れかを対応させ、セグメント３の論理−物理アドレス変換テーブルは、論理アドレス１４７０〜１９５９のそれぞれに対して、物理アドレス１５３６〜２０４７の何れかを対応させることになる。
【００３６】
ところで、図５によると、１セグメントは物理的に５１２ブロックに分割されるのに対して、１セグメントあたりの論理アドレス数は４９０となっており物理ブロック数よりも２２少ない。これは、１セグメント内において、例えば余剰ブロックといわれる通常のデータ書き込みには使用しない特殊用途のブロックが所定数存在することが規定されていることや、或るブロック数までのディフェクト（不良：使用不可領域）が許可されており、現実には、相当数の不良（ディフェクト）ブロックが存在することに依る。このことに基づいたうえで、フラッシュメモリ２の実際の仕様などを考慮すると、この場合においては、書き込み／消去が有効なブロックを管理するのに、１セグメントあたり、４９０ブロックを管理できるように構成しておけば充分であるとしているものである。なお、このセグメントごとの論理アドレス範囲数は適宜変更されてよいものであり、必ずしも、４９０に限定される必要はない。
また、論理−物理アドレス変換テーブルは、実際には、管理情報であるＢＭＡＰに対して格納されるものであり、その具体的な構造については、ＢＭＡＰの構造とともに次に説明する。
【００３７】
５．ＢＭＡＰの構造（第１例）。
フラッシュメモリにおいては、セグメントごとにブロック単位の管理を行うための管理情報として、ＢＭＡＰといわれるテーブル情報を備えることとしている。このＢＭＡＰ内に、論理−物理アドレス変換テーブルが含められる。そして、このＢＭＡＰは、フラッシュメモリ上のセグメントごとに、或るブロック内に対して書き込まれるようにして記憶される。
以下、このＢＭＡＰの構造について図６及び図７を参照して説明する。
なお、この説明にあたっても、単純に、フラッシュメモリについては、５１２ブロック単位のセグメントで分割した基本的なフォーマットをとっていることを前提とする。また、図６及び図７には、フラッシュメモリの記憶領域において物理的に先頭となるセグメント０に対応した場合の構造を示すこととする。
【００３８】
ＢＭＡＰ全体としては、図６（ａ）に示す構造を有する。
ＢＭＡＰは、１ページ分の情報であり、従って、図２（ｄ）にても説明したように、データ部と冗長部とから成るものとされる。そして、本実施の形態としては、図６（ａ）に示すようにして、データ部については２０４８バイト、冗長部については、６４バイトであることとしている。つまり、この場合のページ単位は、２１１２バイトの固定長となる。
【００３９】
そして、この図６（ａ）に示すＢＭＡＰとしてのページ構造において、２０４８バイトのデータ部については、２バイト（１６ビット）単位の列による構造をとることとする。従って、データ部としては、第０列〜第１０２３列までの１０２４列の２バイトの単位領域が配列されていることになる。
そして、論理−物理アドレス変換テーブルは、データ部の第０列〜第４８９列における、下位９ビットの領域を使用する。
この論理−物理アドレス変換テーブルとしての領域は、９ビットの単位領域が４９０個配列された構造となる。そして、この領域について、図６（ｂ）に示すようにして第０列〜第４８９列の各列ごとに対応させて、論理アドレス０〜４９０を割り当てるものとする。そして、この９ビットの領域に対して、図６（ｃ）に示すようにして、各論理アドレスに対応する物理アドレスを格納するようにされる。つまり、本実施の形態では、物理アドレスは９ビットにより表現される。
このようにして、実際の論理−物理アドレス変換テーブルの構造としても、図４にて説明したように、論理アドレスを昇順に整列させたうえで、これらの論理アドレスごとに物理アドレスを対応させる構造となっている。
【００４０】
また、ＢＭＡＰにおいては、図６（ａ）に示すデータ部の第０列〜第５１１列における上位７ビットから成る領域により、図６（ｄ）に示すようにして、物理ブロック管理情報をアロケーションテーブル形式で構築する。
【００４１】
この図６（ｄ）に示す物理ブロック管理情報は、７ビットの単位領域が５１２個配列された構造となる。そして、これら５１２個の７ビットの単位領域について、第０列〜第５１１列ごとに対応させて、そのセグメント内のブロックの物理アドレス０〜５１１を割り当てるようにする。これにより、物理アドレス０〜５１１により示されるブロックごとについて、図６（ｅ）に示すようにして、７ビットの情報領域（ブロック情報領域）が形成されたことになる。
そして、本実施の形態としては、この７ビットのブロック情報領域について、図６（ｅ）に示すように、少なくとも、書込済みフラグと、不良フラグの領域を設けることを規定する。この場合、書込済みフラグ及び不良フラグは共に１ビットとされ、書込済みフラグを第１ビットに配置し、不良フラグを第２ビットに配置することとしている。もちろん、このフォーマットは一例であり、書込済みフラグ及び不良フラグのビット数及びブロック情報領域におけるビット位置などは変更されてよい。
【００４２】
書込済みフラグは、０、１の値により、現ブロック情報領域に対応する物理アドレスが示すブロックについてデータが書込済みの状態であるか、消去済みの状態であるかを示す。
不良フラグは、０、１の値により、現ブロック情報領域に対応する物理アドレスが示すブロックが、不良（ディフェクト）ブロックであるか否かを示す。
【００４３】
また、先に述べたように、フラッシュメモリに対するデータ書き込みの実行中に、電源の遮断や、半導体記憶装置がドライブから取り外されたなどの要因で、データの書き込みが中断されてしまった場合には、実際のブロックに対するデータの書き込み状態と、ＢＭＡＰ上での管理内容とに不整合が生じることになって、以降のデータ管理、アクセスなどが正常に行われなくなる可能性がある。
このような場合には、ＢＭＡＰなどの管理情報の再構築を行うことで、以降の正常なデータ管理、アクセス等が可能となるのであるが、このためには、例えば半導体記憶装置１の起動時などにおいて、最後のデータ書き込み処理が中断されたか否かについての判定（中断判定）が行えるように構成する必要がある。
【００４４】
このために、本実施の形態としては、ＢＭＡＰの構造において、図６（ｆ）に示すようにして、予約ブロックアドレスを定義することとしている。
予約ブロックアドレスは、次回のデータ書き込み時にデータ書き込み対象とするブロックの物理アドレスを格納する領域とされ、ここでも、物理アドレスのビット数に対応させて９ビットのデータサイズを割り当てている。
また、この予約ブロックアドレスの格納位置としては、データ部における第４９０列以降における所定の列の下位９ビットとするようにされる。
あるいは、冗長部における所定の９ビットの領域を割与えるようにしてもよい。図においては、冗長部の先頭９ビットを割り当てるようにして記載されているが、実際の格納位置としては、冗長部に格納される他の情報との兼ね合いにより適切とされる９ビット範囲の領域が規定されればよい。
なお、予約ブロックアドレスの領域を、中断判定のためにどのようにして使用するのかについては後述する。
【００４５】
また、セグメント１以降のＢＭＡＰについては、図６（ｂ）に示す９ビットの単位領域に対応付ける論理アドレスや、図６（ｄ）に示す７ビットの単位領域に対応付ける物理アドレスは、図６に記載したセグメント０に対応するに対して、そのセグメントに応じて、オフセットを与えればよい。つまり、論理アドレスは４９０×Ｍ、物理アドレスは５１２×Ｍ（Ｍはセグメント番号に対応する自然数）によるオフセットを与えた（加算した）値とすることになる。つまり、図５に示した論理アドレス範囲、物理ブロック範囲による値となる。例えばセグメント０に続くセグメント１では、図６（ｂ）に示す論理アドレスは、４９０〜９７９となり、図６（ｄ）に示す物理アドレスは５１２〜１０２３となる。
【００４６】
６．ＢＭＡＰの構造（第２例）。
ＢＭＡＰの構造としては、上記図６に示したものに限定されるべきではない。そこで、ＢＭＡＰの構造の他の例を図７に示しておく。
先ず、この図７（ａ）に示すＢＭＡＰとしてのページ構造において、データ部は、第０バイト〜第２０４７バイトまでの１バイト単位の列による構造としている。そのうえで、論理−物理アドレス変換テーブルは、データ部の第０バイト〜第５５１バイトまでの５５２バイトの領域を使用して、図２（ｂ）に示すようにして構築する。
つまり、上記バイト０〜５５１までの５５２バイトの領域について、９ビット単位で区切っていくようにする。すると、この９ビット単位の領域を４９０個つくることができる。そして、これら４９０個の９ビット単位の領域について、先頭から論理アドレス０〜４８９をそれぞれ対応付ける。つまり、論理アドレス０〜４８９の昇順に従って、９ビットの領域が存在するようにしている。
そして、この９ビットの領域に対して、図７（ｃ）に示すようにして、各論理アドレスに対応する物理アドレスを格納するようにされる。このようにして、図７に示す論理−物理アドレス変換テーブルの構造としても、論理アドレスを昇順に整列させたうえで、これらの論理アドレスごとに物理アドレスを対応させる構造となっているものである。
【００４７】
また、物理ブロック管理情報は、図７（ｄ）（ｅ）に示す不良ブロックビットマップと、書込済みブロックビットマップとにより、それぞれビットマップ形式の情報領域として形成することとしている。
【００４８】
図７（ｄ）に示す不良ブロックビットマップは、図７（ａ）に示されるＢＭＡＰのデータ部における第５５２バイト〜第６１５バイトまでの６４バイト（５１２ビット）の領域となる。
この不良ブロックビットマップを形成する５１２ビットに対しては、先頭のビット位置から順に、１ビットごとに、物理アドレス０〜５１１を対応させる。つまり、不良ブロックビットマップを形成する５１２ビットの先頭ビットから最終ビットまでの各ビットが、物理アドレス０〜５１１により示されるブロックに対応するようにされる。そして、各ビットに対して０，１を格納することで、そのビット位置に対応する物理アドレスが示すブロックが不良であるか否かを示すことになる。
【００４９】
また、図７（ｅ）に示す書込済みブロックビットマップは、図７（ａ）に示されるＢＭＡＰのデータ部において、不良ブロックビットマップの領域に続く、第６１６バイト〜第６７９バイトまでの６４バイト（５１２ビット）の領域となる。
このようにして５１２ビットとなる書込済みブロックビットマップとしても、先頭のビット位置から順に、１ビットごとに物理アドレス０〜５１１を対応させ、各ビットに対して０，１を格納することで、そのビット位置に対応する物理アドレスが示すブロックについて、データが書き込み済みの状態と消去済みの状態の何れであるのかを示すようにされる。
【００５０】
また、図７（ｆ）に示す予約ブロックアドレスは、データ部における第６８０バイト以降の所定のバイト列において、所定のビット位置から始まる９ビットの領域として規定するようにされる。
あるいは、図６の場合と同様にして、冗長部における所定の９ビットの領域を割与えるようにする。
【００５１】
なお、図７のＢＭＡＰとしても、図６の場合と同様にして、図７（ｂ）に示す９ビットの単位領域に対応付ける論理アドレス、図７（ｄ）（ｅ）に示す不良ブロックビットマップ及び書込済みブロックビットマップの５１２ビットに対応付ける物理アドレスは、そのセグメントに応じて、オフセットを与えた値とすればよい。
また、ＢＭＡＰの構造は、上記図６及び図７に示したものに限定されるべきものではなく、例えば各セグメントのＢＭＡＰのアドレス、セグメント内の不良ブロック、書込済みブロック、及び予約ブロックアドレスなどについての管理が可能とされる構造であれば、適宜変更されてよいものである。
【００５２】
７．ＳＭＡＰ。
ここで、確認のために述べておくと、ＢＭＡＰが格納されるブロックについても、ブロック単位でのデータ更新が必要となった場合には、例外なく、先に図３にて説明したブロックの交替が行われる。従って、セグメント内においてＢＭＡＰが格納されるブロックは不定である。
このために、ファイルシステムがＢＭＡＰを参照するなど、ＢＭＡＰを利用するためには、ＢＭＡＰを格納するブロックのアドレスを取得可能とするための仕組みを構成する必要があることになる。
【００５３】
ＢＭＡＰのアドレスを取得する仕組みとして、先ず考えられるのは、各セグメントの物理ブロックを、例えば物理アドレス順に順次読み出していき、ＢＭＡＰが格納されたページを探索していくという手順を実行することである。ＢＭＡＰとなるページの冗長部には、現ページがＢＭＡＰであることを示す情報を格納すべきこととしているので、ＢＭＡＰの所在は、この情報を参照することで認識できる。
しかしながら、このような手順では、ＢＭＡＰの格納位置がセグメント内において後ろ側に位置するほど探索時間が長くなるという不都合が生じる。
そこで、本実施の形態としては、ＢＭＡＰを管理するための管理情報である、システム管理情報（ＳＭＡＰ）を設けることとする。
【００５４】
このＳＭＡＰを設けるのにあたって、本実施の形態としては、先ず、フラッシュメモリ上のセグメントとして、所定容量のシステム用セグメントを定義し、例えば図２（ａ）に示すようにして、このシステム用セグメントの領域を、フラッシュメモリにおける先頭領域に対して割り当てるようにする。
そして、このシステム用セグメント内に対してＳＭＡＰを格納するようにされる。なお、後述するようにして、本実施の形態において規定するＳＭＡＰは、１ページ単位のデータとなる。
なお、本実施の形態のようにしてシステム用セグメントを規定した場合、他の通常のセグメントについてはデータ用セグメントともいうことにして、システム用セグメントと区別する。
【００５５】
ここで、上記システム用セグメントの容量は、ブロックアドレス０〜７１までの７２ブロック分となっており、原則として規定されるセグメントの容量である５１２ブロックに対して相当に少ないが、これは次のような理由による。
先ず、ＳＭＡＰについても、ＢＭＡＰと同様にして、ブロック単位での更新が必要となったときにはブロック交替が行われるので、システム用セグメント内においてＳＭＡＰを格納するブロックは不定である。
ＢＭＡＰについては、後述する説明から分かるようにＳＭＡＰを参照することでＢＭＡＰのアドレスが特定されるので、検索時間が高速で安定したものとなる。しかしながら、ＢＭＡＰの上層の管理情報となるＳＭＡＰについては、例えば起動時などにおいて、ブロック単位での読み出しを行って検索していく必要がある。この場合において、システム用セグメントについても原則通りに、５１２ブロックにより形成したとすると、ＳＭＡＰの格納位置によっては、検索に多くの時間を要することとなってしまう。
そこで、本実施の形態のようにして、システム用セグメントとしては、５１２ブロックよりも少ない適切なブロック数を設定することとすれば、ＳＭＡＰの検索時間としては短縮されることになる。
なお、ここでは、システム用セグメントを７２ブロック分としているが、これはあくまでも一例である。システム用セグメントについては、上記した検索時間のほかに、システム用セグメントに格納すべき情報量と、これらの情報の更新頻度と、消去回数制限（寿命）とのバランス、その他考慮して、適切なブロック数を規定すればよい。
【００５６】
また、図２（ａ）に示すようにして、７２ブロックによるシステム用セグメントを設けた場合においては、データ用セグメントとして物理的に最初に配置されるデータ用セグメント０については、ブロックアドレス７２〜５１１までの４４０ブロックとなる。
つまり、システム用セグメントは、本来は、フラッシュメモリ２において物理的に先頭となる、ブロックアドレス０〜５１１までの５１２ブロック分のデータ用セグメント０から、前半７２ブロックを割り当てて形成するものとしている。なお、残るデータ用セグメント１〜Ｍについては、原則通り５１２ブロック単位となる。
本実施の形態が対応するフラッシュメモリ全体は、セグメント容量が５１２ブロック単位であることに応じて、５１２ブロック×ｎ（ｎは自然数）に相当する記憶容量とすることが通常である。そこで、上記のようにして、システム用セグメントとデータ用セグメント０とによって５１２ブロックのサイズとすることで、フラッシュメモリ全体において、システム用セグメント及びデータ用セグメントが効率よく収まるようにしている。
【００５７】
なお、このようにして５１２バイト単位の領域を、システム用セグメントとデータ用セグメント０とで分割した場合、例えばセグメント０のＢＭＡＰとしては、これに応じて、図６又は図７に示すＢＭＡＰの管理形態について変更することになる。例として、図６の場合であれば、図６（ｄ）に示される物理ブロック管理情報は７ビットの情報領域を全て用いるのではなく、例えば物理アドレス７２〜５１１までの領域を使用するようにされる。また、論理アドレスの範囲も、例えば７２〜４８９までの範囲を使用するなど、０〜４８９より小さな範囲を設定することができる。
【００５８】
そして、システム用セグメントに格納されるＳＭＡＰは、例えば図８に示す構造を有する。
図８（ａ）に示すようにして、ＳＭＡＰとしてもＢＭＡＰと同様にして１ページ分の情報とされ、例えば２０４８バイトのデータ部と６４バイトの冗長部とを有する。そして、この図８（ａ）に示すＳＭＡＰとしてのページ構造において、データ部は、第０バイト〜第２０４７バイトまでの１バイト単位の列による構造としている。
そして、データ部の第０バイトから、必要なデータ容量に応じたバイト位置までの領域を、図８（ｂ）に示すＢＭＡＰ物理アドレステーブルとして使用する。
【００５９】
図８（ｂ）に示されるＢＭＡＰ物理アドレステーブルは、３２ビット単位の列を、セグメント（データ用セグメント）数Ｍにより集めて配列するようにして形成される。そして、この３２ビット単位の列ごとに、上位から順に、セグメント０〜Ｍまでのセグメント番号を割り当てるようにされる。つまり、これらの３２ビットの単位の列の各々は、セグメントに対応付けられている。そして、図８（ｃ）に示すようにして、３２ビットの単位の列に対しては、対応付けられた番号のセグメントにおいてＢＭＡＰが格納されているブロックの物理アドレスを格納するようにされる。
このような構造を有するＢＭＡＰ物理アドレステーブルを参照することで、例えばファイルシステムとしては、物理アドレスにより、各セグメント（データ用セグメント）においてＢＭＡＰが格納されるブロックを特定することが可能となる。
【００６０】
また、この場合のＳＭＡＰにおいては、システム用セグメントを成す物理アドレス０〜７２の７２ブロックについて管理する物理ブロック管理情報が設けられる。この場合の物理ブロック管理情報としては、図８（ｄ）に示す不良ブロックビットマップと、図８（ｅ）に示す書込済みブロックビットマップとの、２つのビットマップ形式の情報領域を設けることとしている。
【００６１】
図８（ｄ）に示す不良ブロックビットマップは、図８（ａ）に示されるＢＭＡＰのデータ部において、ＢＭＡＰ物理アドレスに続く９バイト（７２ビット）の領域となる。
この不良ブロックビットマップを形成する７２ビットに対しては、先頭のビット位置から順に、１ビットごとに、物理アドレス０〜７１を対応させる。つまり、不良ブロックビットマップを形成する７２ビットの先頭ビットから最終ビットまでの各ビットが、物理アドレス０〜７２により示される物理ブロックに対応するようにされる。そして、各ビットに対して０，１を格納することで、そのビット位置に対応する物理アドレスが示すブロックが不良であるか否かを示すようにされる。
【００６２】
また、図８（ｅ）に示す書込済みブロックビットマップは、図８（ａ）に示されるＢＭＡＰのデータ部において、不良ブロックビットマップの領域に続く９バイト（７２ビット）の領域となる。
このようにして５１２ビットとなる書込済みブロックビットマップとしても、先頭のビット位置から順に、１ビットごとに物理アドレス０〜７１を対応させ、各ビットに対して０，１を格納することで、そのビット位置に対応する物理アドレスが示すブロックについて、データが書き込み済みの状態であるか否かを示すようにされる。
なお、システム管理情報テーブルとしては、各セグメントのＢＭＡＰを管理するためのものとされるので、予約ブロックアドレスを設ける必要はない。
また、このＳＭＡＰの構造としても、ＢＭＡＰと同様にして、図示したものに限定されるべきものではなく、例えば各セグメントのＢＭＡＰのアドレス、システム用セグメント内の不良ブロック、及び書込済みブロックなどが管理可能とされる構造であれば、適宜変更されてよい。
【００６３】
８．データの書き込み（更新）処理手順。
８−１．ユーザデータの書き込み。
また、本実施の形態では、上記したＳＭＡＰ、ＢＭＡＰなどのページ単位の管理情報と、ユーザデータとしてのデータとで、異なるデータ書き込み（更新）の処理手順をとるようにされる。
先ず、ユーザデータの書き込み処理としては、先に図３により説明したブロック交替を伴ったものとなるのであるが、この書き込み処理についての具体的な手順例を図９により説明する。
【００６４】
図９（ａ）〜（ｄ）の左側には、更新対象となるデータが書込済みになっているブロック（更新対象ブロック）が示されている。また、同じ図９（ａ）〜（ｄ）の右側には、更新データを実際に書き込むものとして消去済みブロックのうちから新規に選択されたブロック（新規ブロック（書込対象ブロック））が示されている。
ここで、図９（ａ）は、更新処理前において、新規ブロックが決定された状態例を模式的に示している。ここでの更新対象ブロックとして示すように、更新前のデータとしては、Page0、Page1、Page nの３つのページ位置のデータから成るものとされる。また、この段階では、新規ブロックは消去済みの状態となっている。なお、上記更新前のデータを形成するPage1は、あくまでもPage0及びPage n以外の、更新前データを成すページ位置としての一例を示しているものであり、実際には、他のページのうちで、更新対象のページ以外の位置のページも更新前のデータ要素となり得るものである。
【００６５】
この状態から更新処理を実行したとすると、先ず、図９（ｂ）に示すようにして、更新対象ブロックから、Page0、Page1のページ位置のデータを、新規ブロックにコピーするようにして書き込みを行う。このとき、更新対象ブロックのPage0、Page1のページ位置のデータは、新規ブロックに対しても、Page0、Page1のページ位置に対してそれぞれ書き込むようにされる。これらPage0、Page1のページ位置のデータは、次に説明する新規書込データを書き込むべきページ位置に対して前となるページ位置のデータ（前ページデータ）である。
【００６６】
そして、上記のようにして前ページデータを新規ブロックに対して書き込んだ後においては、図９（ｃ）のPage a，Page bのページ位置のデータとして示すようにして、新規に追加して書き込むべきページデータである新規書込データを、Page１より下位の所要のページ位置に対して書き込むようにされる。
【００６７】
上記のようにして、新規書込データを書き込んだ後は、この新規書込データを書き込んだページ位置より下位のページ位置にコピーすべきページデータを、更新対象ブロックから新規ブロックにコピーするようにして書き込む。つまり、図９（ｄ）に示すようにして、更新対象ブロックの最後のページ位置となるPage nのデータを、新規ブロックのPage nの位置に対して書き込むようにされる。
【００６８】
このような更新の手順は、新規ブロックに対する更新データの書き込み順としては、ページ番号の若いものから適宜順に行っているものとみることができる。従って、例えば実際の更新前のデータと新規書き込みデータの状態によっては、更新対象ブロックから新規ブロックへのページデータのコピー手順と、新規ブロックへの新規書込データの書き込み手順とが所要回数繰り返されることになるものである。
【００６９】
そして、図９の場合には、新規ブロックが図９（ｄ）に示す状態となった段階で、新規ブロックに対する更新データの書き込みが完了したことになる。そして、この図９には示していないが、更新データの書き込みが終了した後の所定のタイミングで、図９の左側に示されている更新対象ブロックに書き込まれているデータについての消去が行われる。つまり、データ書き込みに伴うブロック交替が行われる。
【００７０】
上記のようにしてブロック交替が行われるのに応じては、図６又は図７に示したＢＭＡＰの内容についての更新が行われることになる。先ず、新規ブロックに対して更新データが書き込まれるのに応じて、論理−物理アドレス変換テーブル（図６（ｂ）、図７（ｂ））において、この更新データに対応する論理アドレスに対応する物理アドレスが、上記新規アドレスを示すようにして内容が変更される。
また、今回のブロック交替によって、上記更新対象ブロックについては、書込済みの状態から消去済みの状態に変化し、上記新規ブロックについては、消去済みの状態から書込済みの状態に変化したので、これに応じて、物理ブロック管理情報についても更新を行うようにされる。
図６の場合であれば、上記更新対象ブロックを示す物理アドレスのブロック情報領域（図６（ｅ））の書込済みフラグについて、書込済みを示す値から消去済みを示す値に書き換えを行う。また、上記新規ブロックを示す物理アドレスのブロック情報領域の書込済みフラグについては、消去済みを示す値から書込済みを示す値に書き換えを行う。
また、図７の場合であれば、図７（ｅ）に示す書込済ブロックビットマップを書き換えることになる。つまり、上記更新対象ブロックを示す物理アドレスのビット位置については、書込済みから消去済みを示すビット値に変更し、上記新規ブロックを示す物理アドレスのビット位置については、消去済みから書込済みを示す値に変更する。
【００７１】
また、本実施の形態としては、ブロック交替に伴い、図６（ｆ）、図７（ｆ）に示す予約ブロックアドレスについても変更すべきことになるのであるが、このことについては後述する。
【００７２】
８−２．管理情報（ＳＭＡＰ、ＢＭＡＰ）の書き込み。
続いては、ＳＭＡＰ、ＢＭＡＰなどの管理情報の書き込み（更新）処理手順について、図１０を参照して説明する。
これまでにも述べてきたように、フラッシュメモリは、データの消去単位はブロック単位であるが、書き込み単位はページ単位である。また、先に図６、図７、図８により説明しているように、ＳＭＡＰ、ＢＭＡＰは１ページ単位のデータとしている。このことをふまえて、図１０について説明する。また、図１０の説明にあたっては、ＢＭＡＰを更新する場合を例に挙げることとする。ＳＭＡＰに関しても、ブロックに対する更新処理の手順そのものは、ＢＭＡＰと同様である。
【００７３】
図１０（ａ）には、更新前のブロックのデータ書き込み状態として、Page0，Page1の各ページ位置に対してデータが書き込み済みとされた状態が示される。これらのPage0，Page1のページ位置に書き込まれたデータは、それぞれ１つのＢＭＡＰとしての内容を有しており、このブロック内においては、Page0に書き込まれたデータが最も過去のＢＭＡＰとなっている。そして、次のページ位置であるPage1に書き込まれたデータがPage0のＢＭＡＰを交信した内容を有するＢＭＡＰとされ、この場合には、このPage1のＢＭＡＰが最新で有効なものとなっている。
【００７４】
そして、例えばユーザデータの更新が行われてブロック交替が行われることなどに応じて、ＢＭＡＰを更新すべきときには、図１０（ｂ）に示すようにして、更新した内容のＢＭＡＰを、Page1に続く、Page2に対して新規に書き込んで記憶させる。
つまり、本実施の形態におけるＢＭＡＰの更新にあたっては、１つのブロックに対して、ページ番号の昇順に従って、順次、更新されたＢＭＡＰを１ページ単位で追記して埋めていくようにして書き込みを行っていくようにされる。このようにして更新を行っていくことによっては、例えばブロック内のページ数分の回数によるＢＭＡＰの書き込みを行った段階で、ブロックにおける全ページが書込済みの状態となる。この状態において、ＢＭＡＰの更新が必要となったときに、ブロック交替を伴う更新が行われる。つまり、新規のブロックを用意して、この新規ブロックのPage0のページ位置に対して、更新されたＢＭＡＰを書き込むようにされる。また、更新前のＢＭＡＰが書き込まれていたブロックにつについてはデータを消去する。
【００７５】
このような更新処理とすることで、ＳＭＡＰ、ＢＭＡＰについては、更新に伴うブロック交替は、ブロック内のページ数をＭとすると、更新回数をＭ回行うごとに１回の頻度で行えばよいということになる。つまり、ＳＭＡＰ、ＢＭＡＰを更新するのにあたり、ブロックに対するデータ消去は、Ｍ回の更新に対して１回しか実行されないので、それだけ、フラッシュメモリの寿命を長くすることができる。これまでの説明から理解されるように、管理情報であるＳＭＡＰ、ＢＭＡＰの更新頻度は高く、特にＢＭＡＰは、ユーザデータの更新が行われるたびに更新されるので、ユーザデータの平均的な更新頻度に対してこれら管理情報（特にＢＭＡＰ）は頻繁に更新される。従って、上記のようにして、更新回数に対してブロック内データの消去回数が少ないことは、長寿命化について非常に有利となる。
【００７６】
また、図１０に示した管理情報の更新処理手順とすることによっては、上記していることではあるが、管理情報のうちでも、ＳＭＡＰに関しては、ＢＭＡＰよりもさらに更新頻度そのものを少なくすることができる。
つまり、ＳＭＡＰにおいては、図８（ｂ）（ｃ）に示されるＢＭＡＰ物理アドレステーブルによりＢＭＡＰの所在を管理しているが、物理アドレスによりＢＭＡＰの所在を示していることから理解されるように、ＢＭＡＰ物理アドレステーブルでは、ＢＭＡＰを格納しているブロックを示すのみにとどまっており、ページ単位までの管理を行っていない。これにより、ＳＭＡＰにおけるＢＭＡＰ物理アドレステーブルの更新は、ブロック交替を伴うＢＭＡＰの更新が行われるときにのみ対応して行われることになる。このことから、ＳＭＡＰそのものの更新頻度としては、ＢＭＡＰよりもはるかに少ないものとなることが分かる。
【００７７】
また、上記のようにして、ＳＭＡＰにおけるＢＭＡＰの管理がブロック単位であるとしても、ＢＭＡＰにアクセスするのにあたっては、短時間で済むようになっている。
つまり、ＢＭＡＰにアクセスする手順としては、先ず、ＳＭＡＰのＢＭＡＰ物理アドレステーブルを参照して、最新の有効なＢＭＡＰが格納されているブロックを特定し、このブロックにアクセスする。
そして、先に図１０により説明した管理情報の更新手順であれば、ブロック内における最新の有効なＢＭＡＰは、ブロック内において消去状態となっていない、データが書込済みとされたページのうち、必然的に最後のページ（データ最終書き込みページ）であることになる。そこで、ＢＭＡＰを格納するブロックにアクセスした後は、そのブロック内の先頭ページからページ順に従って読み出しを行っていけば、最後には、データ最終書き込みページにアクセスできることとなり、有効なＢＭＡＰを取得することができる。規定によれば、ブロック内のページ数は、例えば多くても６４程度であり、１ページは、例えば２１１２バイトなので、１セグメント（５１２のブロック）を対象として検索することと比較すればはるかに短時間で済み、また、処理負担も軽い。
【００７８】
９．処理動作。
９−１．データ書込処理。
続いては、本実施の形態の半導体記憶装置１が実行するデータ（ユーザデータ）の書込処理について、データ処理部３が実行すべき処理として、図１１に示すフローチャートにより説明する。先に図１において説明したように、データ処理部３は、マイクロコンピュータとして構成されるものであり、従って、図１１に示す処理は、データ処理部３としてのマイクロコンピュータにおいて、ＣＰＵがＲＯＭなどに記憶されたプログラムを実行することで実行されるものとなる。この点については、後述する図１２、図１３に示される処理についても同様である。
また、図１１に示す処理を実行するのにあたって必要なＢＭＡＰは、半導体記憶装置１のフラッシュメモリ２に対するアクセスを完了しており、例えばデータ処理部３の内部ＲＡＭに保持している状態にあるものとされる。
【００７９】
先ず、データ処理部３が、或るブロックのデータを更新するときには、ステップＳ１０１の処理として示すようにして、例えば上記内部ＲＡＭに保持されているＢＭＡＰの論理−物理アドレス変換テーブル（図６（ｂ）、図７（ｂ））を参照することで、現在更新対象となっているブロックの物理アドレスを取得するようにされる。
また、次のステップＳ１０２により、同じＢＭＡＰから、予約ブロックアドレス（図６（ｆ）、図７（ｆ））を読み出して取得する。
【００８０】
予約ブロックアドレスは、後の中断判定のために使用される管理情報項目であって、次回のデータの更新におけるブロック交替にあたり、新規ブロック（図９参照）として使用すべきブロックを物理アドレスにより示す。
上記ステップＳ１０２の処理によりＢＭＡＰから取得された予約ブロックアドレスの値は、今回のデータ更新の前となる、最後のデータ更新のときに設定されたものである。従って、ステップＳ１０２の処理により取得した予約ブロックアドレスが示すブロックが、今回の更新における新規ブロックであることになる。そこで、ステップＳ１０３においては、この予約ブロックアドレスが示す物理アドレスを、今回の新規ブロックの物理アドレスとして決定するようにされる。
【００８１】
また、次のステップＳ１０４においては、例えば内部ＲＡＭ上のＢＭＡＰにおける物理ブロック管理情報を利用するなどして、現在消去済み状態であるブロックのうちから、所定規則に従って新規の予約ブロックを決定する。
例えば図６のＢＭＡＰの場合であれば、図６（ｄ）に示す物理ブロック管理テーブルにおいて、物理アドレスごとに対応する９ビット列単位の情報から書込済みフラグ（図６（ｅ））を参照することで、現在消去済み状態のブロックを特定できる。そして、これらの消去済み状態のブロックのうちから所定規則に従って新規の予約ブロックを決定するようにされる。
また、図７の場合であれば、図７（ｅ）に示す書込済ブロックビットマップを参照することで、上記と同様にして現在消去済み状態のブロックを特定して、所定規則に従って新規の予約ブロックを決定することができる。
そして、次のステップＳ１０５では、上記ステップＳ１０４での決定結果が反映されるようにして、新規の予約ブロックアドレスを設定する。具体的には、内部ＲＡＭに保持したＢＭＡＰの構造における予約ブロックアドレスの領域に対して、上記ステップＳ１０４により決定された新規の予約ブロックの物理アドレスを上書きするようにして書き込むようにされる。
なお、確認のために述べておくと、この段階では、フラッシュメモリ側のＢＭＡＰにおいては、新規の予約ブロックアドレスについての設定（書き込み）は未だ行われていない。
【００８２】
次のステップＳ１０６においては、更新対象ブロックに書き込まれているページデータのうちから、図９（ｂ）にて説明したように、前ページデータを新規ブロックに対してコピーするようにして書き込むための処理を実行する。
また、続くステップＳ１０７においては、図９（ｃ）にて説明したように、新規書き込みデータをページ単位で新規ブロックに書き込むための処理を実行する。
また、続くステップＳ１０８においては、図９（ｄ）にて説明したように、更新対象ブロックに書き込まれている後ページデータを、新規ブロックに対してコピーするようにし書き込むための処理を実行する。
なお、上記ステップＳ１０６〜Ｓ１０８の処理は、説明を分かりやすいものとするために、図９に対応させた具体的な処理の流れに対応させている。しかしながら、実際における新規ブロックに対するデータ書き込み処理としては、ページ番号の若い順に、適宜、更新対象ブロックからのページデータのコピーによる書き込みと、新規書込データとしてのページデータの書き込みとを実行するようにされており、実際の処理動作としても、このようなページデータ単位での書き込みが実行されるようにプログラムが構成される。
【００８３】
そして、上記ステップＳ１０８までの処理によって、新規ブロックに対して更新データの書き込みが終了したとされると、次のステップＳ１０９により、これまで更新対象ブロックとして扱われていたブロックに書き込まれていたデータを消去するための処理を実行する。この段階で、フラッシュメモリ２上における、データ更新に伴う物理的なブロック交替については完了したことになる。
【００８４】
次のステップＳ１１０においては、上記したデータ更新結果が反映されるようにして、内部ＲＡＭ上に保持されているＢＭＡＰについての内容の更新を行う。つまり、図９の説明にあたって述べたようにして、論理−物理アドレス変換テーブル、及び物理ブロック管理情報について、今回のデータ更新に伴うブロック交替の結果などが示されるようにして内容を変更する。また、このときの内部ＲＡＭ上のＢＭＡＰにおける予約ブロックアドレスの領域には、先のステップＳ１０５の処理によって、既に次回のデータ更新のときに参照されるべき予約ブロックの物理アドレスが格納された状態にある。
【００８５】
そして、次のステップＳ１１１において、上記ステップＳ１１０の処理によって更新された内部ＲＡＭのＢＭＡＰのデータを、フラッシュメモリ２に転送して書き込むための制御処理を実行する。このときには、フラッシュメモリ２に対しては、図１０により説明した処理手順によるＢＭＡＰの書き込み（更新）が実行されることになる。
このステップＳ１１１による処理が完了した段階で、フラッシュメモリ２におけるＢＭＡＰは、そのセグメントにおける現在の物理的なデータ書き込み状態と整合した内容に更新された状態で保存されたことになる。
【００８６】
ここで、上記図１１に示したデータ書き込み処理においては、ステップＳ１０４、Ｓ１０５の処理により新規の予約ブロックアドレスを選択設定している。また、ステップＳ１１１においてＢＭＡＰをフラッシュメモリ２に書き込んで保存する処理は、中断判定に使用する情報である上記予約ブロックアドレスをフラッシュメモリ２に書き込んで記憶させている処理であるとみることもできる。つまり、これらの処理は、本明細書でいう、中断判定準備処理となるものである。
【００８７】
９−２．中断判定処理。
続いては、本実施の形態における中断判定処理について図１２を参照して説明する。ここでいう中断判定とは、先にも説明したように、フラッシュメモリ２に対する最後のデータ書き込み処理が中断されたか否かについての判定を行うことであり、本実施の形態の半導体記憶装置１の起動時において実行される。
なお、半導体記憶装置１が起動するときとは、例えば、電源が投入されて動作中にあるホストシステム１０に対して半導体記憶装置１が装填された場合を挙げることができる。また、動作停止中のホストシステム１０に対して半導体記憶装置１が装填された状態において、ホストシステム１０に対する電源が供給されるなどして動作を開始した場合にも、これに応じて、半導体記憶装置１が起動することになる。
【００８８】
この中断判定のための処理としては、先ず、ステップＳ２０１に示すようにして、ＢＭＡＰのアドレスを取得するようにされる。このためには、先ず、フラッシュメモリ２のシステム用セグメントに対してアクセスしてＳＭＡＰを検索する。そして、検索したＳＭＡＰをフラッシュメモリ２から読み出して、内部ＲＡＭに書き込んで保持するようにされる。そして、この内部ＲＡＭに保持したＳＭＡＰのＢＭＡＰ物理アドレステーブルを参照して、中断判定対象のセグメントについてのＢＭＡＰが格納されるブロックの物理アドレスを取得するようにされる。
【００８９】
次のステップＳ２０２においては、上記ステップＳ２０１により取得したＢＭＡＰの物理アドレスが示すフラッシュメモリ２上のブロックにおける、最終書き込みページに対してアクセスする。これにより、最新の有効なＢＭＡＰのページにアクセスできたことになる。ＢＭＡＰを格納するブロックにおいては、最終書き込みページが最新の有効なＢＭＡＰを格納していることは、図１０にて説明したとおりである。
そして、次のステップＳ２０３においては、上記ステップＳ２０２によりアクセスしたＢＭＡＰをフラッシュメモリ２から読み出して、例えば内部ＲＡＭに書き込んで保持する。
【００９０】
ステップ２０４では、上記ステップＳ２０３により内部ＲＡＭに保持されたＢＭＡＰの構造のなかから予約ブロックアドレスを取得する。そして、続くステップＳ２０５により、この取得した予約ブロックアドレスが示すフラッシュメモリ上のブロック（物理ブロック）に対してアクセスし、さらに次のステップＳ２０６により、このアクセスしたブロックに対する読み込みを行って、現在におけるこのブロックのデータ内容を認識する。
【００９１】
そして、次のステップＳ２０７においては、上記ステップＳ２０６の認識結果に従って、このアクセスした予約ブロックのデータ書き込み状態が消去済みの状態であるか否かについて判別する。
【００９２】
例えば、今回の起動時までにおいて最後となる過去のデータ書き込み（更新）処理について、特に中断されることなく正常に終了した場合、つまり、図１１に示した処理を正常に実行してデータ書き込み処理を終了した場合のことを考えてみる。この場合には、図１１のステップＳ１１１の処理が遂行されたことで、フラッシュメモリ２のＢＭＡＰの予約ブロックアドレスには、消去済みのブロックとして登録されているブロックのうちから選択した１つのブロックの物理アドレスが格納されていることになる。従って、フラッシュメモリ２のＢＭＡＰの予約ブロックアドレスが示すブロックは、消去済みであるべきことになる。このことから、上記ステップＳ２０７において、アクセスした予約ブロックのデータが消去済みの状態であるとして肯定の判別結果が得られた場合には、最後のデータ書き込み（更新）は正常に終了していると判断してよいことになる。つまり、フラッシュメモリ２に記憶されているＢＭＡＰは、そのセグメントのデータ記録状態と整合しており正常であるということになる。この場合には、図１２に示す中断判定の処理を抜け、例えば他の所要の起動処理などを実行するようにすればよい。
【００９３】
これに対して、例えば図１１のステップＳ１０６以降の、実際に新規ブロックに対してデータを書き込む処理を開始した後において、データ書き込み処理が中断されたものとする。
この場合、ステップＳ１１１による、フラッシュメモリ上のＢＭＡＰの更新は行われない、あるいは行われていたとしても不完全であるので、フラッシュメモリ２のＢＭＡＰは、このデータ書き込みの１つ前のデータ書き込みに対応した内容が残っている状態であると考えてよい。従って、このＢＭＡＰの予約ブロックアドレスが示すブロックは、最後の中断されデータ書き込み処理のときに、新規ブロックとして選択されて、不完全なかたちで更新データが書き込まれている状態のブロックであることになる。
このことから、ステップＳ２０７において、アクセスした予約ブロックのデータが消去済みではなく、何らかのデータが書込済みの状態であるとして否定の判別結果が得られた場合には、最後のデータ書き込み処理は中断されたと判定してよいことになる。そこで、この場合には、ステップＳ２０８に進んで、このＢＭＡＰの再構築の処理を実行してから、この図に示す処理を終了するようにされる。
なお、フラッシュメモリ２において複数のセグメント（データ用セグメント）が存在する場合において、例えば起動時に、これら複数のセグメントごとに対応する中断判定を全て行うとする場合は、例えばステップＳ２０１において、各セグメントごとのＢＭＡＰのアドレスを取得したうえで、以降は、セグメントごとに、ステップＳ２０２〜Ｓ２０８により説明した処理を繰り返し実行するようにすればよい。
【００９４】
９−３．ＢＭＡＰ再構築処理。
図１３のフローチャートは、上記図１２のステップＳ２０８の処理となる、ＢＭＡＰの再構築処理を示している。
ＢＭＡＰの再構築処理としては、先ず、ステップＳ３０１により現在において内部ＲＡＭに保持しているＢＭＡＰを破棄し、次のステップＳ３０２の処理によって、現在の処理対象セグメント（現セグメント）内の全ブロックが消去済み状態であることを示す内容のＢＭＡＰを生成する。
そして、次のステップＳ３０３においては、現セグメント内のブロックの物理アドレス範囲の値をとる変数ｎについて初期値を設定する。ここでの初期値は、上記物理アドレス範囲のなかで最も小さい物理アドレスの値とする。例えば、図５に示したセグメント構成のもとで、現セグメントがセグメント０であるとすればｎ＝０となり、セグメント１であるとすればｎ＝５１２となる。
【００９５】
続くステップＳ３０４においては、フラッシュメモリ２から、物理アドレスｎにより示されるブロックにアクセスして、このブロックに対する読み出しを実行する。
ここで、ブロックを形成するページの冗長部によっては、所定構造により、そのブロックについての各種の状態などを示す管理情報（ブロック内管理情報）が形成される。ステップＳ３０５においては、上記ステップＳ３０４により読み出したブロックからブロック内管理情報を取得するための処理を実行する。
【００９６】
ステップＳ３０６においては、上記ステップＳ２０５により取得したブロック内管理情報の内容から、このブロックについての状態について判別する。
判別結果として、不良ブロックであることが判別された場合には、ステップＳ３０７の処理により、このブロックを不良ブロックとしてＢＭＡＰの物理ブロック管理情報（図６（ｄ）（ｅ）、図７（ｄ））に登録する。
また、ブロック内管理情報の内容から消去済みであることが判別された場合、あるいはブロック内管理情報の内容からでは状態判定が不可能である結果、不明として判定された場合には、ステップＳ３０８の処理により、このブロックを消去済みブロックとしてＢＭＡＰの物理ブロック管理情報（図６（ｄ）（ｅ）、図７（ｅ））に登録する。
また、書込済みであることが判別された場合には、ステップＳ３０９の処理により、このブロックを論理−物理アドレス変換テーブル（図６（ｂ）、図７（ｂ））に対して登録する。
ここで、ブロック内管理情報には、現物理ブロックに対応付けられる論理アドレスの情報も含まれている。このステップＳ３０９の登録処理にあたっては、このブロック内管理情報において示される論理アドレスの情報を使用する。つまり、論理−物理アドレス変換テーブルにおいて、ブロック内管理情報において示される論理アドレスが対応付けられた９ビットの領域に対して、現在の物理アドレスｎの値を格納する。
【００９７】
上記ステップＳ３０７，Ｓ３０８，Ｓ３０９の処理を終了した後は、ステップＳ３１０において、現在設定されている変数ｎが最大値であるか否かについて判別する。例えば現セグメントが、図５のセグメント０であれば、変数ｎの最大値は、セグメント０における最後の物理アドレスである５１１となり、セグメント１であれば、変数ｎの最大値は、１０２３となる。
このステップＳ３１０において、変数ｎは最大値ではないとして否定の判定結果が得られた場合には、ステップＳ３１１において変数ｎについて１インクリメントしたうえで、ステップＳ３０４の処理に戻るようにされる。これにより、上記もしているように、現セグメント内の全ブロックの各々について、ステップＳ３０４〜ステップＳ３１０の処理を実行するようにされる。
【００９８】
また、例えば何らかのエラーなどの原因によって、ステップＳ３０４〜ステップＳ３１０の処理を繰り返し実行している過程において、ステップＳ３０６→Ｓ３０９の処理を実行することとなったときに、論理−物理アドレス変換テーブルにおいて、現在の処理対象ブロックのブロック内管理情報が示す論理アドレスに対して、既に、物理アドレスが登録されている状況となる場合がある。
このような場合には、これらの重複したブロック間で、所定規則に従ったマージ処理、あるいはブロックの選択処理を実行することで整合をとるようにされる。このマージ処理又はブロック選択処理の結果、論理−物理アドレス変換テーブルの登録から外すべきこととなったブロックについては、データの消去を実行したうえで、消去済みブロックとして登録するようにされる。
【００９９】
そして、現セグメント内における全てのブロックについての処理を終了したことで、ステップＳ３１０において肯定の判別結果が得られたとされると、ステップＳ３１２に進んで、予約ブロックを決定したうえで、内部ＲＡＭ上のＢＭＡＰに対して予約ブロックアドレスを登録するようにされる。この処理を終了した段階で、内部ＲＡＭ上のＢＭＡＰについては、実際のセグメント内でのブロックのデータ書き込み状態に応じて整合がとれているとともに、予約ブロックアドレスも適正に格納された正常な内容に復帰していることになる。つまり、ＢＭＡＰの再構築処理のシーケンスにおいても、上記ステップＳ３１２及びＳ３１３により、中断判定準備処理を行うようにされている。
【０１００】
そして、ステップＳ３１３の処理により、上記のようにして内容復帰されたＲＡＭ上のＢＭＡＰを、フラッシュメモリ２における該当セグメント内の所要のブロックに書き込むことで保存を行うようにされる。
例えば、ブロック内管理情報としては、現ブロックがＢＭＡＰであれば、このことを示す情報が格納されている。従って、現セグメントにおける全ブロックについてステップＳ３０４〜ステップＳ３０９の処理を終了させた段階では、どのアドレスのブロックがＢＭＡＰであるのかを認識できていることになる。そこで、ステップＳ３１３としては、このＢＭＡＰが格納されているブロックを対象として、例えば先に図１０により説明したようにして更新処理を実行するようにされる。
【０１０１】
１０．他の中断判定のための構成。
ここで、本実施の形態との比較として、本実施の形態以前において採られていた中断判定の構成の一例を、図１４により説明しておく。
図１４のフローチャートは、本実施の形態以外の他の中断判定に対応する、データ書き込み（更新）のための処理の流れを示している。
この場合には、先ず、ステップＳ４０１として示すように、内部ＲＡＭ上に保持されるＢＭＡＰから更新対象ブロックの物理アドレスを取得する。この処理は、図１１のステップＳ１０１と同様となる。また、次のステップＳ４０２においては、同じ内部ＲＡＭ上に保持されるＢＭＡＰを参照して、このＢＭＡＰが管理する消去済みブロックのうちから新規ブロックを選択する。
【０１０２】
この場合のＢＭＡＰとしては、新規ブロックについての状態として、少なくとも、書込済み、若しくは書き込み中であるのかを示す状態フラグを格納する領域を所定位置に設けることが定義されている。
ステップＳ４０３では、以降において新規ブロックに対してデータを書き込むのに応じて、上記状態フラグについて、先に、書き込み中を示す値を設定するようにされる。そして、この場合には、ステップＳ４０４により、いったん、内部ＲＡＭ上に保持しているＢＭＡＰを、フラッシュメモリ２に転送して書き込んで（更新して）保存する。この保存処理は、フラッシュメモリ２が不揮発性であることを利用して、データ書き込みが中断されたとしても、ステップＳ４０３にて設定した書き込み中の状態フラグが残り、正しい中断判定結果が得られるようにすることを目的として行われる。
【０１０３】
そして、次のステップＳ４０５及びステップＳ４０６により、例えば先に図９などにより説明した新規ブロックへのデータ書き込み手順と、更新対象ブロックのデータ消去の手順を含む、ブロック交替を伴うデータの書き込み（更新）処理を実行するようにされる。
次のステップＳ４０７では、上記ステップＳ４０５及びＳ４０６のデータ更新結果が反映されるようにして、内部ＲＡＭ上のＢＭＡＰについての更新を行う。また、この場合には、このステップＳ４０７によるＢＭＡＰの更新にあたり、書き込み中が設定されていた上記状態フラグについて、書込済みを示す値に変更設定する。
そのうえで、ステップＳ４０８により、この内部ＲＡＭ上のＢＭＡＰのデータをフラッシュメモリ２に転送して書き込んで保存させるための制御を実行する。
【０１０４】
この場合の中断判定としては、例えば起動時において、フラッシュメモリのＢＭＡＰに保存されている新規ブロックの状態フラグを参照するようにされる。
例えば上記図１４に示した手順であれば、最後のデータの書き込みが正常に終了していた場合には、上記状態フラグは、書込済みであることを示していることになる。従って、状態フラグを参照した結果、状態フラグが書込済みであることを示していれば、最後のデータ書き込みは正常に実行されたと判定することができる。これに対して、ステップＳ４０５以降の処理を開始して、ステップＳ４０８のＢＭＡＰの保存処理が終了するまでの間に、データ書き込み処理が中断されたとすると、ステップＳ４０８の処理が正常に完了しなかったのであるから、上記のようにして参照した状態フラグは、書き込み中（あるいは書き込み済みでもない不明の状態もあり得る）を示していることとなる。これにより、最後のデータ書き込み処理は中断されたと判定することができる。
【０１０５】
このようにして、図１４に示す処理手順を含む構成によっても、中断判定は可能である。しかしながら図１４に示す処理手順では、データ書き込み処理が中断したときには、フラッシュメモリ２のＢＭＡＰ上で、状態フラグが書き込み中を示していることができるようにすることを目的として、データの更新前において、ステップＳ４０４により、ＢＭＡＰを一時保存している。このために、図１４に示すデータ更新処理全体としては、フラッシュメモリ２に対するＢＭＡＰの保存を、上記ステップＳ４０４による暫定保存と、ステップＳ４０８による本登録保存との２回行う必要がある。
【０１０６】
これに対して、本実施の形態の中断判定のための情報（予約ブロックアドレス）は、上記のようにして新規ブロックに対するデータ書き込みの現在状態を示すものではなく、次回のデータ書き込み処理において新規ブロックとして使用すべき消去済みブロックを示す機能を持つものである。このために、本実施の形態としては、データ書き込み処理全体における、フラッシュメモリ２への中断判定のための情報の保存、つまり、予約ブロックアドレスを格納するＢＭＡＰの保存は、同じ図１１に示すようにして、本登録保存となるステップＳ１１１の１回のみとなる。
【０１０７】
このようにして、データ書き込み処理にあたってのフラッシュメモリ２に対する管理情報（ＢＭＡＰ）の保存回数が削減されることで、先ずは、１ブロックあたりのデータ書き込み処理におけるフラッシュメモリに対するアクセス回数も削減されることとなって、その分、データ書き込み処理の開始から終了までの時間が短縮される。つまり、見かけ上のデータ書き込み速度が高速化されることになる。
また、これまでの説明から理解されるように、フラッシュメモリ２に対するデータ書き込み回数が少なくなるのに応じては、その分、フラッシュメモリ２の寿命を延ばすことにも成る。そして、特にＢＭＡＰなどは更新頻度が高いデータの範疇であるから、フラッシュメモリ２の長寿命化に関しては特に効果が高い。
このようにして、本実施の形態による中断判定の構成としては、データ書き込み処理の速度や半導体メモリ素子の寿命などの点で、これまでよりも効率的になっているものである。
【０１０８】
なお、本発明としては、上記した構成に限定されるべきものではない。
例えば本実施の形態における領域特定情報としては、予約ブロックとしての物理アドレスを直接示す内容となっている、しかしながら、例えば、ＢＭＡＰの構造その他の事情に応じては、領域特定情報によっては、予約ブロックの物理アドレスを直接的に示すものではなく、先ず、他の所定の情報項目であったり、他のアドレスなどを示し、この示された対象から辿っていくことで、予約ブロックが特定されるような仕組みとしてもよいものである。
また、これまでにも述べてきているように、各図に示したフラッシュメモリの物理フォーマット及びＢＭＡＰ、ＳＭＡＰなどのデータ構造などは適宜変更されてよい。
また、本実施の形態の半導体記憶装置としては、内部の半導体メモリ素子としてフラッシュメモリを備えているが、例えばフラッシュメモリにおけるブロックのようにデータ消去単位に対応する物理的メモリ領域の交替を伴ってデータ書き込みが行われる半導体メモリ素子であれば、フラッシュメモリ以外を備える構成としてもかまわない。
【図面の簡単な説明】
【０１０９】
【図１】本発明の実施の形態としての半導体記憶装置の内部構成例を示すブロック図である。
【図２】実施の形態の半導体記憶装置が備えるフラッシュメモリの物理構造を示す図である。
【図３】実施の形態のフラッシュメモリに対するデータ更新処理（ブロック交替処理）と、論理アドレス及び物理アドレスの概念を示す図である。
【図４】論理−物理アドレス変換テーブルの構造を概念的に示す図である。
【図５】フラッシュメモリが複数のセグメントにより分割される場合の物理ブロック（物理アドレス）の範囲と論理アドレス範囲との対応関係を示す図である。
【図６】論理−物理アドレス変換テーブルを含む管理情報（ＢＭＡＰ）のデータ構造例を示す図である。
【図７】ＢＭＡＰのデータ構造の他の例を示す図である。
【図８】ＢＭＡＰを管理するシステム管理情報テーブル（ＳＭＡＰ）のデータ構造例を示す図である。
【図９】ブロック交替を伴うデータ更新例を模式的に示す図である。
【図１０】ブロックに対する管理情報（ＳＭＡＰ，ＢＭＡＰ）の更新例を示す図である。
【図１１】実施の形態のデータ書き込み（更新）のための処理動作を示すフローチャートである。
【図１２】本実施の形態の中断判定処理を示すフローチャートである。
【図１３】中断判定後のＢＭＡＰの再構築処理を示すフローチャートである。
【図１４】実施の形態以外のデータ書き込み（更新）のための処理手順を示すフローチャートである。
【符号の説明】
【０１１０】
１  半導体記憶装置、２  フラッシュメモリ、３  データ処理部、４  通信処理部、１０  ホストシステム
【図１】
2006085342.tif 000003
【図２】
2006085342.tif 000004
【図３】
2006085342.tif 000005
【図４】
2006085342.tif 000006
【図５】
2006085342.tif 000007
【図６】
2006085342.tif 000008
【図７】
2006085342.tif 000009
【図８】
2006085342.tif 000010
【図９】
2006085342.tif 000011
【図１０】
2006085342.tif 000012
【図１１】
2006085342.tif 000013
【図１２】
2006085342.tif 000014
【図１３】
2006085342.tif 000015
【図１４】
2006085342.tif 000016