(57)【要約】【課題】ＮＡＮＤメモリのメモリ管理方法において、代替領域の無駄を軽減しつつ、不良ブロックへの対応を可能とし、かつ本来の代替領域の一部を有効利用する。【解決手段】ＮＡＮＤメモリ１５ｂ内の管理領域内に記憶する管理情報として、少なくとも、ＮＡＮＤメモリ１５ｂ内の代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶する。不良ブロックの利用時に対応情報に基づいて当該不良ブロックに代えて代替領域のブロックを用いる。このような構成において、初期不良ブロック数をチェックし、不良ブロックを代替するための複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定し、決定された代替領域のブロック数と予定された最大の代替領域のブロック数との差分を求め、この求めた差分に相当するブロック数の代替領域の少なくとも一部をユーザデータ領域の一部として管理する。【選択図】図１０
2009134672.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位に書き込みが行われる不揮発性メモリの管理方法であって、
初期不良ブロック数をチェックし、不良ブロックを代替するための複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定し、決定された代替領域のブロック数と予定された最大の代替領域のブロック数との差分を求め、この求めた差分に相当するブロック数の代替領域の少なくとも一部をユーザデータ領域の一部として管理することを特徴とするメモリ管理方法。
【請求項２】
ブロック単位に書き込みが行われる不揮発性メモリと、
前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも１個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのプログラム領域と、不良ブロックを代替するための複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも１個のブロックからなる干渉領域と、ユーザデータ領域とに割り当てて利用する制御手段とを備え、
前記制御手段は、初期不良ブロック数をチェックし、不良ブロックを代替するための複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定し、決定された代替領域のブロック数と予定された最大の代替領域のブロック数との差分を求め、この求めた差分に相当するブロック数の代替領域の少なくとも一部をユーザデータ領域の一部として管理する
ことを特徴とする携帯端末装置。
【請求項３】
前記制御手段は、前記求めた差分に相当するブロック数の代替領域の少なくとも一部のデータ量に基づいて前記ユーザデータ領域の開始アドレスを設定する請求項２に記載の携帯端末装置。
【請求項４】
前記不揮発性メモリとは異なる、前記初期不良ブロック数を不揮発的に保存する記録デバイスを備えた請求項２に記載の携帯端末装置。
【請求項５】
前記制御手段は、前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いることを特徴とする請求項２に記載の携帯端末装置。
【請求項６】
前記プログラムコードを記憶可能なＲＡＭを備え、
前記制御手段は、前記不揮発性メモリ内のプログラムコードの実行に先だち、当該プログラムコードをブロック単位に前記ＲＡＭ上に転送して前記ＲＡＭ上で実行する請求項２に記載の携帯端末装置。
【請求項７】
前記制御手段は、前記不揮発性メモリのプログラム領域内のいずれかのブロックにアクセスする際、前記管理情報を確認し、当該ブロックに対して前記代替領域のブロックが割り当てられているときには、当該ブロックに代えて前記代替領域のブロックを利用する請求項２に記載の携帯端末装置。
【請求項８】
前記管理情報は、さらに、前記代替領域の使用済のブロック数または未使用のブロック数を含む請求項２に記載の携帯端末装置。
【請求項９】
前記管理情報は、さらに、前記管理領域および／または前記代替領域の不良ブロックの情報を含む請求項２または８に記載の携帯端末装置。
【請求項１０】
前記管理領域はそれぞれ管理情報を格納する少なくとも２個のブロックを用い、前記管理情報にはその世代を表す世代情報を含む請求項２に記載の携帯端末装置。
【請求項１１】
前記制御手段は、前記管理領域のブロックが不良となった場合、メモリアドレス上、前記代替領域内の前記干渉領域に近い側のブロックへ前記干渉領域をずらし、元の干渉領域の１ブロックを新たな管理領域とする請求項２または１０に記載の携帯端末装置。
【請求項１２】
前記制御手段は、前記代替領域のブロックを、メモリアドレス上、前記干渉領域から遠い側から使用していく請求項２に記載の携帯端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック単位に書き込みが行われる不揮発性メモリに関し、特にそのメモリ管理方法およびこれを用いた携帯端末装置に関する。
【背景技術】
【０００２】
携帯電話機をはじめとする携帯端末装置（単に携帯端末ともいう）には、再書込可能な不揮発性の半導体メモリとして、フラッシュメモリが利用されている。フラッシュメモリには、ＮＡＮＤ型とＮＯＲ型がある。ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリともいう）は、大容量化に適し、単位容量当たりのコストが安価であるが、一定サイズのブロック単位での読み書きしかできず、ランダムアクセスが遅い、という特徴を有する。一方、ＮＯＲ型フラッシュメモリは、読み出し速度が高速でランダムアクセスが可能であるが、高集積化に向かず、書込に大電流が必要である、という特徴を有する。
【０００３】
そこで、コスト、高集積化、消費電力の面で有利なＮＡＮＤメモリを携帯端末のプログラムの記憶に利用し、ＮＡＮＤメモリからブート（Ｂｏｏｔ：起動）を行うような場合、一旦、ＮＡＮＤメモリからＲＡＭにプログラム領域が転送されて、プログラムはＲＡＭ上で実行される。この為、プログラム本体はＮＡＮＤメモリ上に存在することになる。
【０００４】
ＮＡＮＤメモリには、出荷時に予め不良ブロックが含まれるのは通常となっている。また、ＮＡＮＤメモリは使用年月とともに劣化が発生し、初期の時点では良品であったブロックが不良になることを考慮する必要がある。
【０００５】
不良ブロックの状況に応じて確保された未割り当て代替領域をどのように利用するのかについて、特許文献１には、ＮＡＮＤ型のメモリであるフラッシュＥＥＰＲＯＭにデータ領域と予備領域とを設け、データ領域の不良部分の代替のために予備領域を利用する技術が開示されている。この技術において、ベリファイ回路による検証結果に基づいてデータ領域のブロックに不良が発生したことが検出されると、その不良ブロックを指定するアドレスが代替アドレステーブルに登録されて代替領域が使用される。
【特許文献１】特開平７−２９３９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、本願出願人は、特願２００６−２１２７５１号において、ソフトウェア更新について提案をおこなった。この出願ではＮＡＮＤメモリに不良ブロックがあった場合でもメモリアドレス空間を連続に見せることができる手法として、代替領域と管理領域と干渉領域の各ブロック群を用いる新規な構成およびその管理方法を示している。
【０００７】
本願発明者らは、携帯電話機の特定の機種において、代替領域と管理領域と干渉領域の総ブロック数を４８ブロックとして実装を行った。しかし、殆どのＮＡＮＤメモリでは初期不良ブロックはゼロであり、代替領域の対象はプログラム領域の書き換え領域を対象としている為、初期不良ブロックがゼロのＮＡＮＤメモリに対しては、代替領域の大部分が使用されないことになる、という不都合に想到した。
【０００８】
本願発明はこのような背景においてなされたものであり、ＮＡＮＤメモリのメモリ管理方法において、代替領域の無駄を軽減しつつ、不良ブロックへの対応を可能とし、かつ本来の代替領域の一部を有効利用することを企図している。
【課題を解決するための手段】
【０００９】
本発明によるメモリ管理方法は、ブロック単位に書き込みが行われる不揮発性メモリの管理方法であって、初期不良ブロック数をチェックし、不良ブロックを代替するための複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定し、決定された代替領域のブロック数と予定された最大の代替領域のブロック数との差分を求め、この求めた差分に相当するブロック数の代替領域の少なくとも一部をユーザデータ領域の一部として管理することを特徴とする。
【００１０】
代替領域のブロック数の決定の際には、例えば、初期不良ブロック数が小さければ、事後的な不良発生も少ないと予測され、初期不良ブロック数が大きい場合に比べて代替領域のブロック数を小さく設定する。
【００１１】
より具体的には、前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも１個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのプログラム領域と、前記代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも１個のブロックからなる干渉領域とに割り当て、前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いる。
【００１２】
本発明による携帯端末装置は、ブロック単位に書き込みが行われる不揮発性メモリと、前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも１個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのプログラム領域と、不良ブロックを代替するための複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも１個のブロックからなる干渉領域と、ユーザデータ領域とに割り当てて利用する制御手段とを備える。この制御手段は、初期不良ブロック数をチェックし、不良ブロックを代替するための複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定し、決定された代替領域のブロック数と予定された最大の代替領域のブロック数との差分を求め、この求めた差分に相当するブロック数の代替領域の少なくとも一部をユーザデータ領域の一部として管理する。
【発明の効果】
【００１３】
本発明によれば、代替領域のブロック数を初期不良ブロック数に応じて決定することにより、不揮発性メモリに設けられた代替領域の無駄を軽減しつつ、不良ブロックへの対応が可能となる。その結果、不揮発性メモリの全ブロックの有効利用が可能になる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の好適な実施の形態について図面を参照しながら詳細に説明する。
【００１５】
図１は、本発明による実施の形態に係る携帯端末１０の概略のハードウェア構成を示している。ここでは携帯電話機を例に挙げているが、本発明は、その他、携帯情報端末、小型ＰＣ、ゲーム機、等、任意の携帯型の端末装置に適用することができる。
【００１６】
携帯端末１０は、制御部１１、音声処理部１２、マイク１３、スピーカ１４、記憶部１５、通信部１６、デュプレクサ１７、アンテナ１７ａ、操作部１８、表示部１９、および記録デバイス２５を備える。
【００１７】
制御部１１は、ＣＰＵ(Central Processing Unit)やＤＳＰ(Digital Signal Processor)などのプロセッサを有し、携帯端末１０の処理および各部の制御を司る。本実施の形態では符号分割多重接続ＣＤＭＡ（Code Division Multiple Access）に必要な機能を実現する。
【００１８】
音声処理部１２は制御部１１の制御下で通話や音楽再生等の音声処理を行い、マイク１３からの音声入力、スピーカ１４への音声出力を行う。
【００１９】
記憶部１５は、プログラムやデータを記憶する部位であり、本実施の形態ではＳＤＲＡＭ(Synchronous Dynamic Random Access Memory)等のＲＡＭ１５ａ、およびＮＡＮＤメモリ１５ｂを有する。
【００２０】
ＮＡＮＤメモリ１５ｂは、制御部１１が実行するプログラムを格納する再書込可能な不揮発性メモリである。ＮＡＮＤメモリ１５ｂには、ブートプログラムを格納するブート領域２１、不良ブロックの代替用の代替領域２２、プログラム本体のコード（プログラムコード）を格納するプログラム領域２３と、その他必要なデータやプログラムを格納するためのストレージ（Ｓｔｏｒａｇｅ）領域２４が存在する。ストレージ領域２４は、ユーザデータを格納するユーザデータ領域として利用でき、プログラムの他、例えば、電話帳、電子メール、ウェブコンテンツ、音楽、画像、等の各種のデータを格納することができる。本実施の形態ではこのストレージ領域２４をファイルシステムのための記憶領域として利用する。ファイルシステムとは、データの書き込みや読み出しなどの操作をファイル単位で行う既知のデータの管理方式である。
【００２１】
プログラム領域２３は、ブートプログラムによるブート時にＲＡＭ１５ａへ展開され、プログラムはＲＡＭ１５ａ上で実行される。より具体的には、制御部１１および記憶部１５に電源が供給されると、制御部１１の組み込みロジックによってＮＡＮＤメモリ１５ｂのブート領域の内容が制御部内蔵のメモリ領域に読み込まれて実行される。このプログラムには本発明で定める不良ブロック管理方法が組み込まれており、このプログラムによって実行対象プログラムコードがＮＡＮＤメモリ１５ｂからＲＡＭ１５ａへと展開され、プログラム２７がＲＡＭ１５ａ上で実行される。
【００２２】
また、本発明ではＮＡＮＤメモリ上の連続領域に管理領域を設け、ここに管理情報を記憶して不良ブロックの管理および後述するブロック代替管理を行う。なお、本明細書における「ブロック」とはメモリデバイス毎に定められる特定サイズのまとまった単位領域のことをいう。
【００２３】
通信部１６は、制御部１１の制御下で、アンテナ１７ａを介して基地局（図示せず）と無線による送受信を行う部位である。デュプレクサ１７はアンテナ共用機である。すなわち、送信信号と受信信号で１本のアンテナを共用し、アンテナからの受信信号を受信部に送り、送信部からの送信信号をアンテナへ送出する機能を備えたフィルタ回路により構成される。
【００２４】
操作部１８は、テンキーや各種の制御キー等を有し、ユーザによる指示や情報を制御部１１に入力する機能を有する。
【００２５】
表示部１９は、例えばＬＣＤ、有機ＥＬ等の表示デバイスを有し、ユーザに対してテキスト、画像（静止画、動画）等の可視情報を表示する機能を有する。
【００２６】
記録デバイス２５は、不揮発的にデータを記録することができ、ごく小さい記憶容量で足りるので、電源ＩＣ（図示せず）の様に、バックアップ領域をもったものを利用してもよい。勿論、記憶部１５の一部の領域を利用してもよい。
【００２７】
ソフトローダ２６は、所定のインタフェース（ここではＵＳＢＩ／Ｆ）を介して制御部１１に接続され、必要なソフトウェア（プログラム等）をＮＡＮＤメモリにロードする機能を有し、例えばＰＣにより構成される。
【００２８】
上述したように、ＮＡＮＤメモリ１５ｂからブート処理を起動する場合、プログラムはＮＡＮＤメモリ１５ｂからＲＡＭ１５ａ上へ展開され、プログラムはＲＡＭ１５ａ上で実行される。図２（ａ）ではＮＡＮＤメモリ１５ｂの「Ｂｌｏｃｋ３」からこれ以降のブロックにプログラム２７を格納している例を示している。ＮＡＮＤメモリ１５ｂに対してプログラム２７を書き込む際に、図２（ｂ）に示すように、ある「ＢｌｏｃｋＮ」が不良であった場合、その不良ブロックは使用せず、次の正常な「ＢｌｏｃｋＮ＋１」にプログラムを書き込む。プログラムはＮＡＮＤメモリ１５ｂからＲＡＭ１５ａへ展開されて、ＲＡＭ１５ａ上で実行されるのでこれで足りる。
【００２９】
ＮＡＮＤメモリ１５ｂの「ＢｌｏｃｋＮ」で不良が検出された場合、プログラムはＢｌｏｃｋＮを飛ばして、「ＢｌｏｃｋＮ＋１」へ格納される。この方式は、プログラム全体を更新するものである。しかしながらこの方式は、更新用ファイル（差分ファイル）を使用したソフト更新を行う際には不都合を生じる。
【００３０】
更新用ファイルは、更新前プログラムと更新後プログラムとを比較して、差分ファイルとして生成される。通常、この更新用ファイルは、更新後プログラムに比べてサイズ（データ量）が小さく、更新後プログラム全体に比べて、ダウンロードや更新処理に要する時間が短縮されるという利点がある。なお、更新用ファイルは事前に、携帯端末１０の外部で専用ＴＯＯＬで作成され、通信部１６を介して、専用サーバからダウンロードされ、ストレージ領域２４に格納される。
【００３１】
ソフト更新実行時、この更新用ファイルに基づいて、ＮＡＮＤメモリ１５ｂのプログラム領域２３に格納されている更新前プログラムに対して、ソフト更新エンジンが更新処理を行い、ＮＡＮＤメモリ上に更新後プログラムを生成する。ソフト更新エンジンは、例えば、ＮＡＮＤメモリ１５ｂ内に格納されており、更新処理時、更新エンジンを、一旦、ＲＡＭ１５ａに展開（コピー）し、このＲＡＭ１５ａ内のソフト更新エンジンを実行することによりソフト更新を実現することができる。
【００３２】
プログラムはＮＡＮＤメモリに格納される為、従来方式ではＮＡＮＤメモリの全ブロックが正常の場合は問題ないが、後発的に不良ブロックＮが発生した場合は、更新前プログラムのアドレス連続性が損なわれ、更新用ファイルとの整合性が取れなくなり、プログラム更新が実施できなくなったり、できたとしても、当該不良ブロック以降のブロックについてプログラムをずらして記憶させるために、本来必要でないブロックの書込が必要となる。
【００３３】
本実施の形態では予め、ＮＡＮＤメモリの不良ブロックに対応付け可能な代替ブロックを準備し、不良ブロックと代替ブロックの物理アドレスを論理アドレスで管理することにより、ＮＡＮＤメモリのアドレス連続性を確保することができ、連続アドレスを前提として作成された、ソフト更新前と更新後の更新用ファイル（差分ファイル）を用いて、ＮＡＮＤメモリに不良ブロックが後発した場合でもソフト更新を実行することが可能になる。
【００３４】
以下、更新前プログラムを格納したＮＡＮＤメモリに後発不良ブロックが発生した場合でもソフト更新を可能にする手法について説明する。
【００３５】
まず、本発明の前提とする特願２００６−２１２７５１号に記載されたＮＡＮＤメモリ１５ｂの構成を説明する。
【００３６】
図３は、ＮＡＮＤメモリ１５ｂのメモリ空間としての内部構成例を示している。ＮＡＮＤメモリ１５ｂは複数の単位データ量に対応するブロックに分割され、各ブロックは図示のようにその機能が割り当てられる。図３の機能の割当状態は初期の割当状態であり、後述するように、この状態は変化しうる。
【００３７】
ＮＡＮＤメモリ１５ｂの先頭ブロック（Ｂｌｏｃｋ０）にはブートコードが配置される。Ｂｌｏｃｋ１以降のブロックを使用して本実施の形態の動作が行われる。
【００３８】
図示の例では、Ｂｌｏｃｋ０に続くＢｌｏｃｋ１，Ｂｌｏｃｋ２の二つのブロックを「管理領域１」および「管理領域２」として用いている。「管理領域」はＮＡＮＤメモリの不良ブロックおよび代替ブロックを管理するための管理情報を記憶する領域である。管理情報の詳細については後述する。管理領域はＮＡＮＤメモリの書込時の電源断などによる管理情報の消失（破損）の対策として、複数組用意している。携帯端末では通常、電源として電池を利用しており、電池の残量減や端末落下等による電池パックの脱落などの要因により、据え置き型の装置に比べて処理中に電源断が生じる可能性が高い。
【００３９】
「管理領域２」に続いて「干渉領域１」および「干渉領域２」がそれぞれＢｌｏｃｋ３，４に設けられている。「干渉領域」は、管理領域と代替領域の境界を識別する為に使用する領域である。
【００４０】
「干渉領域２」のＢｌｏｃｋ４に続いて、Ｂｌｏｃｋ５〜Ｂｌｏｃｋ１４までを代替領域としている。代替領域は不良ブロックを代替するための領域として確保されている。図の例では代替領域として１０個のブロックを確保しているが、このブロック数は後述するように所定の値に決定される。
【００４１】
代替領域の次のブロック（Ｂｌｏｃｋ１５）から以降のブロックは、実際のプログラムが格納してあるプログラム領域が続く。
【００４２】
「管理領域」「干渉領域」「代替領域」のすべてのブロックは、後述するように本明細書では「代替エリア」と呼ぶ。
【００４３】
ここで、図４により、本実施の形態における管理領域の内部構成およびその記憶情報について説明する。管理領域の１つのブロック１５０には、次のような情報が記憶される。
（１）チェックデジット１５１：  １つの管理領域（ブロック）内のデータの破損等をチェックするためのチェックサム等のチェック用データである。これにより、データ書込中に電源断となったような場合のブロック内の不完全な書込状態を判別することができる。
（２）世代数１５２：  管理領域（ブロック）内の管理情報が更新されていく際の世代を表す世代情報であり、例えば次第に増加していく番号である。
（３）代替領域の使用数１５３：  代替領域として用意された複数のブロックのうち使用済のブロックの個数である。これに代えて、未使用のブロックの個数を用いてもよい。代替領域の当初のブロック数は既知の値なので、使用済のブロック数と未使用のブロック数とはいずれか一方が分かれば他方が分かる。なお、後述するように代替領域のブロックが不良となる場合もあり、このような不良ブロックは「使用済」に該当する。
（４）代替先の対応情報１５４：  代替領域の正常な未使用ブロックが特定のブロックの代替先として割り当てられた場合、その対応関係を表す情報であり、ここでは、不良ブロックのブロック番号と代替領域のブロック番号とを対応づけて記憶している。図３の例では、最大１０個の対応情報を格納可能である。
（５）代替エリア（Block1-14）内の不良ブロック情報１５５：  管理領域、干渉領域、および代替領域（図３の例ではＢｌｏｃｋ１〜１４）は管理用領域であり、これらのいずれかのブロックが不良となった場合に記録されるその不良ブロックを特定する情報（ここではブロック番号）である。ある代替エリアのブロックを利用しようとして、そのブロックが不良として記録されていた場合には、そのブロックを飛ばして次のブロックを利用する。
【００４４】
図５により、ブロック書込実行時（ソフト更新時）に、後発的な不良ブロックが検出された場合の動作を説明する。今、ＢｌｏｃｋＮ＋３に不良が検出され書込が不可であることが判明したとする。このＢｌｏｃｋＮ＋３は不良（Ｂａｄ）ブロックとしてマーキングされ、以後使用は禁止される。ＢｌｏｃｋＮ＋３に書込を行う予定であったＣｏｄｅは、次のＢｌｏｃｋＮ＋４ではなく、「代替領域１０」に代替して書き込まれる。この代替情報は「管理領域１」に記憶する。この例では、「代替領域１０」がＢｌｏｃｋＮ＋３を代替するような代替情報を記憶する。
【００４５】
このように管理情報で不良ブロックと代替ブロックの管理を行うことにより、実際の物理アドレスを論理アドレスに対応づけ、論理アドレスを物理アドレスへ変換するアドレス変換を行うことが可能になる。また、論理アドレスを参照することによりメモリアドレスの連続性を確保することができる。このような不揮発性メモリの少なくとも１ブロック内の管理領域に記憶された代替情報による論理アドレスの物理アドレスによる変換によれば、外部に既知のメモリ管理ユニット（ＭＭＵ）等の特別なアドレス変換手段を設ける必要がなくなる。
【００４６】
次に図６により、管理領域が不良ブロックになった場合の動作を説明する。本実施の形態では、上述のように、管理領域は「管理領域１」と「管理領域２」により、正・副の２面管理される。「管理領域１」と「管理領域２」は交互に利用され、利用される側が「正」となり、他方が「副」となる。管理領域への情報の格納は、１つのブロックに１世代分の管理情報を格納する方法と、１つのブロックに複数世代の管理情報を追記して行き、正領域への追記が不可能になった場合に「正」「副」の切り替えを行う方法とがある。ここでは、説明の簡便のために、前者の方法について説明する。
【００４７】
管理領域を２面用意する理由は次のとおりである。本発明を適用するメモリの特性上、既に情報が記入されている場所に新たに情報を記録する場合、一度、そのブロックの消去操作を行い、記録されている情報を削除する必要がある。仮に、１面のみで管理領域を更新する場合、管理領域を消去した際に電源断などの何らかの障害が発生した場合に現在の管理情報が失われてしまうことになる。このような不具合を防止するため、最新の情報を保持するブロックと、消去操作を行い新たに更新された管理情報を書込ブロックとを分離する。具体的な管理領域の更新動作では、管理領域の更新が必要となった場合、「副」領域を消去し、「正」領域から読み出した情報を更新し「副」領域に新しい世代数で書き込む。この書込終了時点で、正・副の領域の交換が完了し、旧「副」領域が「正」領域へ、旧「正」領域が「副」領域へと変更されることになる。このように、管理領域としてそれぞれ管理情報を格納する少なくとも２個のブロックを用いることにより、管理情報を外部にバックアップする必要がなくなる。
【００４８】
なお、管理情報の書込は、事前にＲＡＭ上へ読み出していた「正」の管理領域のコピーを更新し、それまで「副」であった管理領域に書き込むことにより行われる（更新の手法としては、管理領域の更新が必要になった時点で「正」領域からメモリへのコピーを作成する方法もありうるが、本実施の形態では実行時の効率を考慮して、予め最新の管理情報のコピーがメモリ上に読み出されて常駐しているものとする）。また、管理情報の正・副の区別は、管理情報に付けられた世代数（１５２）の比較を行い、より最近に記録された領域を「正」として扱う。
【００４９】
図６（ａ）の状態でＲＡＭ上で更新した新しい管理情報を「副」領域に書き込もうとした際に、図６（ｂ）に示すようにＢｌｏｃｋ２が不良ブロックとなった場合、図６（ｃ）に示すように、Ｂｌｏｃｋ３の干渉領域を新たな「管理領域２」として確保する。元の「管理領域２」は不良としてＲＡＭ上の管理情報に記録され、Ｂｌｏｃｋ２が不良であると更新された管理情報が新たに確保された「管理領域２」へと書き込まれる。これにより、元の「管理領域１」が「副」となり、新たに書き込まれた「管理領域２」が「正」となる。
【００５０】
Ｂｌｏｃｋ３が管理領域となった結果、干渉領域１，２を１ブロック分ずらして、Ｂｌｏｃｋ４，５に移動させる。干渉領域には予め０ｘＡＡ等の所定のデータで書込を行っておき、プログラム領域２３と管理領域の境界を明示するための領域とする。
【００５１】
なお、本実施の形態では、代替領域の未使用ブロックも干渉領域と同じ所定のデータを書き込んであり、このような場合には、ブロック内のデータ上は干渉領域と代替領域とは区別が付かず、「干渉領域１，２を１ブロック分ずら」すといっても、管理情報が変わるのみで、特に代替領域の１ブロックを新たな干渉領域とするために当該代替領域ブロックに特別な書き込み処理等を行う必要はない。
【００５２】
上述したように、代替領域はプログラム領域の不良ブロックを代替するのみならず、図６に示したように、管理領域の代替にも利用することができる。但し、管理領域の代替の仕方はプログラム領域の不良ブロックの代替とは異なり、干渉領域をずらすことにより行う。このように、ＮＡＮＤメモリ１５ｂ内のメモリ空間において管理領域と代替領域との間に干渉領域を挟み込む形式で各ブロックの機能の割当を行うことにより、代替領域を有効に利用することができる。
【００５３】
本実施の形態では、代替領域を動的に管理領域とプログラム領域のいずれにも利用できる形態としたので、不良ブロックの発生時には代替領域のすべてのブロックを無駄なく有効に利用することができる。すなわち、管理領域に後発不良ブロックが発生した場合でも干渉領域を代替領域側へずらして元の干渉領域を新たな管理領域として利用することにより、実質的に代替領域のブロックを管理領域とプログラム領域の両方が利用することができる。つまり、不良ブロックが発生した場合には、代替領域の一定個数のブロックの用途を限ることなく、代替領域のすべてのブロックを有効に利用することが可能となる。
【００５４】
この構成では、代替処理は干渉領域が２面（２ブロック）分とれなくなる時点まで代替処理を継続できる。代替領域１まで使用後、次の代替領域は干渉領域であることを検出して、代替動作を停止する。これにより、管理領域と代替領域がオーバーラップすることが防止される。
【００５５】
なお、図６等において、領域の割当の変更時に各領域の番号を１から付け直すようにリナンバリングを行っているが、これは説明の便宜上であり、各領域に付した番号は特に重要ではない。
【００５６】
図５に示したとおり、代替領域によるプログラム領域の不良ブロックの代替は干渉領域から最も遠い代替領域のブロックから利用されていく。
【００５７】
図７は、このようにしてプログラム領域の不良ブロックが代替領域に代替されていき、代替領域が残り１ブロックとなり、かつ、その時点でプログラム領域内のＢｌｏｃｋＬ（図示省略）に不良が発生し、代替領域を使い切った状態を示している。すなわち、干渉領域２に隣接した代替領域１まで「使用済」となっている。また、同図のＢｌｏｃｋ１１に示すように、代替領域内のブロックが不良となる場合もある。この場合には、このブロックを利用しないように、管理用領域内の不良ブロック情報１５５（図４）に記憶されて管理される。
【００５８】
以上の構成により、管理領域にて論理アドレスを管理することにより、ＮＡＮＤメモリ内のプログラムのアドレスの連続性を保つことが実現される。このためＮＡＮＤメモリに不良ブロックがあった場合でも、ソフト更新エンジンが管理領域を参照することにより更新用ファイルをベースにソフト更新を行うことが可能になる。
【００５９】
上記のような構成において、以下、代替領域の個数ひいては代替エリアのサイズを動的に可変設定することができる本発明の実施の形態について説明する。
【００６０】
本願発明者らは、携帯電話機の特定の機種の実装段階において、ＮＡＮＤメモリの初期不良ブロック数のチェックを８００台に対して実施した。その結果を図８に示す。図８の結果から分かるように、当該機種で使用したＮＡＮＤメモリ（２５６Ｍｂｙｔｅ）では初期不良ブロックがゼロまたは１つのものが全体の約９０％弱を占めることになる。ＮＡＮＤメモリはその特性上、書き込み操作に対する制限があり、通常１０万回以上である程度破壊が始まる傾向がある。ＮＡＮＤメモリをストレージ領域として使用する場合は、複数の書き込み操作を実施することを想定する必要があるが、上述した先願の代替領域はプログラム領域に対する予備エリアであるため、書き込みの回数は多くても数回程度になるのが現実である。このため、初期不良が０または１つのＮＡＮＤメモリに対しては代替領域を仮に４４ブロック準備した場合、その殆どが使用されないことが予想される。例えば、スモールページ（ｓｍａｌｌ  ｐａｇｅ）のＮＡＮＤメモリを使用した場合、１ブロック＝１６Ｋｂｙｔｅであるため、代替エリアに使用されるメモリ領域は１６Ｋｂｙｔｅ＊４４＝７０４Ｋｂｙｔｅとなり、これはそれなりのサイズとなるため、看過できない。
【００６１】
そこで本実施の形態では、メモリチェック実行時に初期不良ブロック数を取得し、代替領域の構築を実施する。そのときに、代替領域で必要なＮＡＮＤブロック数を考慮して新たに確保できたブロック数ＡＮの値が把握できる為、不揮発的に保存する。プログラムロードならびにＢｏｏｔは現行のまま実施し、プログラム実行時に予め機知となっているデフォルトのストレージ領域総ブロック数ＳＤとＡＮを加算し、（ＳＤ＋ＡＮ）ブロックを管理するファイルシステムの構築を実施する。ファイルシステムの構築が完了後、通常よりもＡＮブロック領域が増えたストレージ領域を提供することが可能となる。
【００６２】
ストレージ領域はファイルシステム管理となるため、通常上記アプリケーションはストレージ領域が動的に変動したことを意識することなく、従来と同様の手順でストレージ領域にアクセスすることが可能である。また物理的にファイルシステムを経由しないでストレージ情報にアクセスしたい場合でもａｄｄｒｅｓｓＳＮの値が機知になっていることからメモリ上のアドレスを取得することができ、直接ＮＡＮＤメモリにアクセスが可能となる。
【００６３】
図１２に、本実施の形態における各種段階での処理のフローチャートを示す。
【００６４】
図１２（ａ）は、プログラムロードに先立って行われるメモリチェックの実行時の処理を示している。まず、ＮＡＮＤメモリの初期不良ブロックチェックとして、ＮＡＮＤメモリに問題がないかを調べるメモリチェックが実施される（Ｓ１１）。このメモリチェックは、チェック用の独立のプログラムがＲＡＭ１５ａ上に展開され、全てのＮＡＮＤメモリブロックに対して実行される。この実行の結果、初期不良ブロックの数が確認され、不揮発的に記録される（Ｓ１２）。ついで、新たに確保できたブロック数ＡＮも不揮発的に記録される（Ｓ１３）。
【００６５】
本実施の形態は、メモリチェックによる不良ブロックの結果に応じて代替領域の個数（ブロック数）を決めるようにするものである。メモリチェックは全ＮＡＮＤブロックに対して実施される為、ＮＡＮＤメモリとは異なるメモリエリアとしての記録デバイス２５（図１）に初期不良ブロック数を一時保存する必要がある。このメモリエリアとしては、ＳＲＡＭなどがあればそこに保存することもできるし、電源ＩＣ等のデバイス等にデータバックアップ用レジスタがあればそれを利用してもよい。
【００６６】
次にソフト（プログラム）ロードを実行する。この処理では、図１２（ｂ）に示すように、保存された処理不良ブロック数をまず読み出して代替領域の構成を把握する（Ｓ２１）。すなわち、初期不良ブロック数に応じて決定された代替領域ブロック数を確保し、その代替領域の後に続くブロックのアドレスをＮＡＮＤメモリへのプログラムロードアドレスとして決定する（Ｓ２２）。本実施の形態では、図１１に示す様に、ＮＡＮＤメモリ初期不良ブロック数に応じて代替領域のブロック数を決めている。具体的には、初期不良ブロック数が大きくなるにつれて、予め用意する代替領域ブロック数を１０〜４４の範囲内で段階的に大きくしていっている。図１１に示す関係データは、代替領域の構成を把握する処理を行うプログラム内に条件式として組み込まれるか、それらのプログラムが参照できる記憶部１５または他の記憶装置の所定の領域にデータテーブルとして格納される。
【００６７】
その後、このプログラムロードアドレスからのアドレス空間ヘプログラムをロードする（Ｓ２３）。
【００６８】
図９（ａ）は、初期不良ブロック＝１の場合、代替領域のブロック数が１０、すなわち代替エリアのブロック数が１０＋４＝１４の場合のＮＡＮＤメモリ上のプログラムロード位置を示している。図９（ｂ）は、初期不良ブロック＝２０の場合、代替領域のブロック数が４４、代替エリアのブロック数が４４＋４＝４８の場合のＮＡＮＤメモリ上のプログラムロード位置を示している。図９および後述する図１０では、便宜上、＜代替領域＋管理領域＋干渉領域＞を「代替エリア」と表記している。
【００６９】
上述したように、代替領域の運用に管理領域ならびに干渉領域をそれぞれ２ブロックずつ用いる為、代替領域ブロック数が１０個の場合は、１０＋２＋２＝１４ブロックの代替エリア以降の領域がプログラム領域となる。このように、初期不良ブロックの数に応じてプログラム領域の先頭アドレス「ａｄｄｒｅｓｓＰ」は動的に変動する。代替領域のブロック数が１０個の場合と４４個（予定された最大の代替領域のブロック数）の場合とを比較すると、代替領域が１０個の場合にスモールページＮＡＮＤメモリの例では４４−１０＝３４ブロックを新たな空き領域として創出することができ、３４＊１６ＫＢ＝５４４ＫＢのエリアを確保することが可能となる。このようなエリアを図９（ａ）では「確保エリア」として示している。
【００７０】
本実施の形態ではこの確保したエリアをストレージ領域に追加してストレージ領域の一部として使用する方法を提案する。ストレージ領域とはカメラで撮影した画像やダウンロードしたコンテンツを格納するユーザ使用領域であるが通常はＮＡＮＤメモリ上の固定アドレスから配置されている。このストレージ領域に今回確保できたエリアを結合させ、ストレージ領域を拡張する方法を以下に説明する。
【００７１】
デフォルトのストレージ領域の開始アドレス（ａｄｄｒｅｓｓＳＤ）は従来方式では予め、固定値として設定されている。これに対して、本実施の形態では、代替エリアの構成が判明した時点で代替エリアのブロック数を参照し、図１０に示すように、新しいストレージ領域の開始アドレス「ＡｄｄｒｅｓｓＳＮ」を定義することが可能となる。これはＡｄｄｒｅｓｓＳＤから、１ブロック数１６ＫＢ（スモールページ）であると仮定すると、新たに確保できたブロック数をＡＮとした場合左記で計算が出来る。
ａｄｄｒｅｓｓＳＮ＝（ａｄｄｒｅｓｓＳＤ−１６ＫＢ＊ＡＮ）
【００７２】
ストレージ領域は通常ファイルシステム管理対象となるため、どのようにファイルシステム上でダイナミックな領域が設定可能かについて簡単に説明する。現行方式でファイルシステムを構築する場合、ファイルシステムで管理するブロック数を算出し、これを固定値として定義することでファイルシステムの構成を決める。すなわち、ＮＡＮＤメモリ上の総ブロック数が分かればファイルシステムを構築することが可能となる。
【００７３】
本実施の形態ではａｄｄｒｅｓｓＳＤから定義されるファイルシステムが管理するＮＡＮＤブロック数をＳＤ個と仮定すると、代替領域を減少させることで確保したＡＮを加算した（ＳＤ＋ＡＮ）ブロックが新規にファイルシステムが管理しなければならないブロック数となり、この値は固定値で設定した状態と同じ様に扱うことが出来る。この状態を図１０に示す。
【００７４】
ストレージ領域のブロック数としての（ＳＤ＋ＡＮ）値、およびストレージ領域の開始アドレスを不揮発的に（例えば記録デバイス２５に）保存することにより、ファイルシステムは以後、当該開始アドレスから（ＳＤ＋ＡＮ）個のブロックを参照し、新しいファイルシステムを構築することが可能となる。
【００７５】
また、通常ファイルシステムでは後発不良ブロックの最大値を定義しており、後発不良ブロック数が最大値を上回った場合、ＮＡＮＤメモリ不良と判断してシステムを起動させないようにする場合もある。後発不良ブロックの最大値に関しても、新たに確保できたブロック数に応じて、調整することも可能である。
【００７６】
ＡＮ…代替領域で必要なＮＡＮＤブロック数を考慮して新たに確保できたブロック数
ＳＤ…デフォルトのストレージ領域の総ブロック数
ＳＤ＋ＡＮ…代替領域の変動に伴う新たなストレージ領域の総ブロック数
ａｄｄｒｅｓｓＳＤ…デフォルトのストレージ領域開始アドレス
ａｄｄｒｅｓｓＳＮ…代替領域の数により変動する新たなストレージ領域開始アドレス
【００７７】
図１２（ｃ）に示すように、ブート時においては同様に保存された初期不良ブロック数からＮＡＮＤメモリのプログラム格納アドレスを計算し（Ｓ３１）、転送元のＮＡＮＤメモリのプログラム格納アドレスとしてのＮＡＮＤアドレスを決定する（Ｓ３２）。この結果、プログラム領域はブート時に正しくＲＡＭへ展開され（Ｓ３３）、プログラムの実行が可能になる。この状態を図９（ａ）（ｂ）に示す。図９（ａ）に示すように、初期不良ブロック１の場合、ブート時には、ＮＡＮＤメモリにおける代替エリアの開始アドレスＮからＮ＋１４×１６Ｋｂｙｔｅ分の代替エリア以降がプログラム領域となり、ここからＲＡＭへプログラムが展開される。同様に、図９（ｂ）に示すように、初期不良ブロック２０の場合、ブート時には、ＮＡＮＤメモリにおける代替エリアの開始アドレスＮからＮ＋４８×１６Ｋｂｙｔｅ分の代替エリア以降がプログラム領域となり、ここからＲＡＭへプログラムが展開される。代替領域の管理はプログラム実行後に実施されることになるが、図１２（ｄ）に示すように、プログラム実行に先だって、上記と同様に予め記録された初期不良ブロック数を参照することにより代替領域の構成を把握し（Ｓ４１）、（ＳＤ＋ＡＮ）個のブロックを管理するファイルシステムを構築する（Ｓ４２）。その後、通常のプログラム起動を行う（Ｓ４３）。なお、ステップＳ４１，Ｓ４２の処理は初期化処理時に一度実行すれば足りる。
【００７８】
本発明の実施の形態によれば、代替領域の個数（ブロック数）をＮＡＮＤメモリの初期不良ブロック数に応じてダイナミックに設定することにより、ＮＡＮＤメモリの有効利用が可能になる。たとえば初期不良ブロック０のＮＡＮＤメモリに対しては１６Ｋｂｙｔｅ＊（１０＋２＋２）＝２２４Ｋｂｙｔｅの代替エリアを確保すれば、動作上問題なく動作が保証できると考えられる（書き換え回数が少ない為、ＮＡＮＤメモリとして書き換えによる後発不良の発生は殆どないと仮定できる）。この場合、固定値として代替エリアを４８ブロック確保した場合に比較して、１６Ｋｂｙｔｅ＊（４８−１４）＝５４４Ｋｂｙｔｅものメモリ容量が削減できることになる。ただし、当然ながら、初期不良ブロック数が比較的大きなＮＡＮＤメモリに対しては、代替エリアに確保すべきメモリ容量の削減は期待できない。
【００７９】
削減されたメモリ容量の使用方法に関しては、上述の如くストレージ領域の拡張等に使用することが可能である。
【００８０】
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも種々の変形、変更を行うことが可能である。
【図面の簡単な説明】
【００８１】
【図１】本発明による実施の形態に係る携帯端末の概略のハードウェア構成を示す図である。
【図２】図１内に示したＮＡＮＤメモリの特定のブロックからこれ以降のブロックにプログラム領域を格納している例を示す図である。
【図３】図１内に示したＮＡＮＤメモリのメモリ空間としての内部構成例を示す図である。
【図４】本発明の実施の形態における管理領域の内部構成およびその記憶情報について説明するための図である。
【図５】本発明の実施の形態におけるブロック書込実行時（ソフト更新時）に、後発的な不良ブロックが検出された場合の動作を説明するための図である。
【図６】本発明の実施の形態において管理領域が不良ブロックになった場合の動作を説明するための図である。
【図７】本発明の実施の形態において代替領域を使い切った状態を示す図である。
【図８】携帯電話機の特定の機種の実装段階において、ＮＡＮＤメモリの初期不良ブロック数をチェックした結果を示す図である。
【図９】本発明の実施の形態において代替領域のブロック数が所定数の場合のプログラムのロード開始位置を示す図である。
【図１０】本発明の実施の形態におけるブート時の動作の説明図である。
【図１１】本発明の実施の形態におけるＮＡＮＤメモリ初期不良ブロック数と代替領域のブロック数との対応関係を示す図である。
【図１２】本発明の実施の形態における各種段階での処理のフローチャートである。
【符号の説明】
【００８２】
１０…携帯端末、１１…制御部、１５…記憶部、１５ｂ…メモリ、１８…操作部、１９…表示部、２０…初期不良ブロック、２１…ブート領域、２２…代替領域、２３…プログラム領域、２４…ストレージ領域、２５…記録デバイス、２６…ソフトローダ、２７…プログラム、１５１…チェックデジット、１５２…世代数、１５３…使用数、１５４…対応情報、１５５…不良ブロック情報
【図１】
2009134672.tif 000003
【図２】
2009134672.tif 000004
【図３】
2009134672.tif 000005
【図４】
2009134672.tif 000006
【図５】
2009134672.tif 000007
【図６】
2009134672.tif 000008
【図７】
2009134672.tif 000009
【図８】
2009134672.tif 000010
【図９】
2009134672.tif 000011
【図１０】
2009134672.tif 000012
【図１１】
2009134672.tif 000013
【図１２】
2009134672.tif 000014