JP2009009390A - メモリ管理方法および携帯端末装置 - Google Patents
メモリ管理方法および携帯端末装置 Download PDFInfo
- Publication number
- JP2009009390A JP2009009390A JP2007170664A JP2007170664A JP2009009390A JP 2009009390 A JP2009009390 A JP 2009009390A JP 2007170664 A JP2007170664 A JP 2007170664A JP 2007170664 A JP2007170664 A JP 2007170664A JP 2009009390 A JP2009009390 A JP 2009009390A
- Authority
- JP
- Japan
- Prior art keywords
- area
- block
- blocks
- management
- defective
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】NANDメモリのメモリ管理方法において、代替領域の無駄を軽減しつつ、不良ブロックへの対応を可能とする。
【解決手段】不揮発性メモリの複数のブロックを、管理領域とプログラム領域と代替領域と、干渉領域とに割り当てる。管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶する。不良ブロックの利用時に対応情報に基づいて当該不良ブロックに代えて代替領域のブロックを用いる。このような構成において、初期不良ブロック数をチェックし、不良ブロックを代替する複数のブロックからなる代替領域のブロック数を、初期不良ブロック数に応じて決定する。
【選択図】図11
【解決手段】不揮発性メモリの複数のブロックを、管理領域とプログラム領域と代替領域と、干渉領域とに割り当てる。管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶する。不良ブロックの利用時に対応情報に基づいて当該不良ブロックに代えて代替領域のブロックを用いる。このような構成において、初期不良ブロック数をチェックし、不良ブロックを代替する複数のブロックからなる代替領域のブロック数を、初期不良ブロック数に応じて決定する。
【選択図】図11
Description
本発明は、ブロック単位に書き込みが行われる不揮発性メモリに関し、特にそのメモリ管理方法およびこれを用いた携帯端末装置に関する。
携帯電話機をはじめとする携帯端末装置(単に携帯端末ともいう)には、再書込可能な不揮発性の半導体メモリとして、フラッシュメモリが利用されている。フラッシュメモリには、NAND型とNOR型がある。NAND型フラッシュメモリ(以下、NANDメモリともいう)は、大容量化に適し、単位容量当たりのコストが安価であるが、一定サイズのブロック単位での読み書きしかできず、ランダムアクセスが遅い、という特徴を有する。一方、NOR型フラッシュメモリは、読み出し速度が高速でランダムアクセスが可能であるが、高集積化に向かず、書込に大電流が必要である、という特徴を有する。
そこで、コスト、高集積化、消費電力の面で有利なNANDメモリを携帯端末のプログラムの記憶に利用し、NANDメモリからブート(Boot:起動)を行うような場合、一旦、NANDメモリからRAMにプログラム領域が転送されて、プログラムはRAM上で実行される。この為、プログラム本体はNANDメモリ上に存在することになる。
NANDメモリには、出荷時に予め不良ブロックが含まれるのは通常となっている。また、NANDメモリは使用年月とともに劣化が発生し、初期の時点では良品であったブロックが不良になることを考慮する必要がある。
不良ブロックの状況に応じて確保された未割り当て代替領域をどのように利用するのかについて、特許文献1には、NAND型のメモリであるフラッシュEEPROMにデータ領域と予備領域とを設け、データ領域の不良部分の代替のために予備領域を利用する技術が開示されている。この技術において、ベリファイ回路による検証結果に基づいてデータ領域のブロックに不良が発生したことが検出されると、その不良ブロックを指定するアドレスが代替アドレステーブルに登録されて代替領域が使用される。
特開平7−29392号公報
ところで、本願出願人は、特願2006−212751号において、ソフトウェア更新について提案をおこなった。この出願ではNANDメモリに不良ブロックがあった場合でもメモリアドレス空間を連続に見せることができる手法として、代替領域と管理領域と干渉領域の各ブロック群を用いる新規な構成およびその管理方法を示している。
出願人は、携帯電話機の特定の機種において、代替領域と管理領域と干渉領域の総ブロック数を48ブロックとして実装を行った。しかし、殆どのNANDメモリでは初期不良ブロックはゼロであり、代替領域の対象はプログラムエリアの書き換え領域を対象としている為、初期不良ブロックがゼロのNANDメモリに対しては、代替領域の大部分が使用されないことになる、という不都合が生じた。
本願発明はこのような背景においてなされたものであり、NANDメモリのメモリ管理方法において、代替領域の無駄を軽減しつつ、不良ブロックへの対応を可能とすることを企図している。
本発明によるメモリ管理方法は、ブロック単位に書き込みが行われる不揮発性メモリの管理方法であって、初期不良ブロック数をチェックし、不良ブロックを代替する複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定することを特徴とする。
例えば、初期不良ブロック数が小さければ、事後的な不良発生も少ないと予測され、初期不良ブロック数が大きい場合に比べて代替領域のブロック数を小さく設定する。
より具体的には、前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも1個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのプログラム領域と、前記代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも1個のブロックからなる干渉領域とに割り当て、前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いることを特徴とする。
本発明による携帯端末装置は、ブロック単位に書き込みが行われる不揮発性メモリと、前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも1個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのプログラム領域と、不良ブロックを代替する複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも1個のブロックからなる干渉領域とに割り当てて利用する制御手段とを備え、前記制御手段は、初期不良ブロック数をチェックし、不良ブロックを代替する複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定することを特徴とする。
本発明によれば、代替領域のブロック数を初期不良ブロック数に応じて決定することにより、不揮発性メモリに設けられた代替領域の無駄を軽減しつつ、不良ブロックへの対応が可能となる。その結果、不揮発性メモリの全ブロックの有効利用が可能になる。
以下、本発明の好適な実施の形態について図面を参照しながら詳細に説明する。
図1は、本発明による実施の形態に係る携帯端末10の概略のハードウェア構成を示している。ここでは携帯電話機を例に挙げているが、本発明は、その他、携帯情報端末、小型PC、ゲーム機、等、任意の携帯型の端末装置に適用することができる。
携帯端末10は、制御部11、音声処理部12、マイク13、スピーカ14、記憶部15、通信部16、デュプレクサ17、アンテナ17a、操作部18、表示部19、不良ブロック数記録デバイス25、ソフトローダ26を備える。
制御部11は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサを有し、携帯端末10の処理および各部の制御を司る。
音声処理部12は制御部11の制御下で通話や音楽再生等の音声処理を行い、マイク13からの音声入力、スピーカ14への音声出力を行う。
記憶部15は、プログラムやデータを記憶する部位であり、本実施の形態ではSDRAM(Synchronous Dynamic Random Access Memory)等のRAM15a、およびNANDメモリ15bを有する。
NANDメモリ15bは、制御部11が実行するプログラムを格納する再書込可能な不揮発性メモリである。NANDメモリ15bには、ブートプログラムを格納するブート領域21、不良ブロックの代替用の代替領域22、プログラム本体のコード(プログラムコード)を格納するプログラム領域23と、その他必要なデータやプログラムを格納するためのストレージ(Storage)領域24が存在する。ストレージ領域24には、プログラムの他、例えば、電話帳、電子メール、ウェブコンテンツ、音楽、画像、等の各種のデータを格納することができる。
プログラム領域23は、ブートプログラムによるブート時にRAM15aへ展開され、プログラムはRAM15a上で実行される。より具体的には、制御部11および記憶部15に電源が供給されると、制御部11の組み込みロジックによってNANDメモリ15bのブート領域の内容が制御部内蔵のメモリ領域に読み込まれて実行される。このプログラムには本発明で定める不良ブロック管理方法が組み込まれており、このプログラムによって実行対象プログラムコードがNANDメモリ15bからRAM15aへと展開され、プログラム27がRAM15a上で実行される。
また、本発明ではNANDメモリ上の連続領域に管理領域を設け、ここに管理情報を記憶して不良ブロックの管理および後述するブロック代替管理を行う。なお、本明細書における「ブロック」とはメモリデバイス毎に定められる特定サイズのまとまった単位領域のことをいう。
通信部16は、制御部11の制御下で、アンテナ17aを介して基地局(図示せず)と無線による送受信を行う部位である。デュプレクサ17はアンテナ共用機である。すなわち、送信信号と受信信号で1本のアンテナを共用し、アンテナからの受信信号を受信部に送り、送信部からの送信信号をアンテナへ送出する機能を備えたフィルタ回路により構成される。
操作部18は、テンキーや各種の制御キー等を有し、ユーザによる指示や情報を制御部11に入力する機能を有する。
表示部19は、例えばLCD、有機EL等の表示デバイスを有し、ユーザに対してテキスト、画像(静止画、動画)等の可視情報を表示する機能を有する。
不良ブロック数記録デバイス25は、ごく小さい記憶容量で足りるので、電源IC(図示せず)の様に、バックアップ領域をもったものを利用してもよい。勿論、記憶部15の一部の領域を利用してもよい。
ソフトローダ26は、所定のインタフェース(ここではUSBI/F)を介して制御部11に接続され、必要なソフトウェア(プログラム等)をNANDメモリにロードする機能を有する。
上述したように、NANDメモリ15bからブート処理を起動する場合、プログラムはNANDメモリ15bからRAM15a上へ展開され、プログラムはRAM15a上で実行される。図2(a)ではNANDメモリ15bのBlock3からこれ以降のブロックにプログラム27を格納している例を示している。NANDメモリ15bに対してプログラム27を書き込む際に、図2(b)に示すように、ある「ブロックN」が不良であった場合、その不良ブロックは使用せず、次の正常な「ブロックN+1」にプログラムを書き込む。プログラムはNANDメモリ15bからRAM15aへ展開されて、RAM15a上で実行されるのでこれで足りる。
NANDメモリ15bのBlockNで不良が検出された場合、プログラムはBlockNを飛ばして、BlockN+1へ格納される。この方式は、プログラム全体を更新するものである。しかしながらこの方式は、更新用ファイル(差分ファイル)を使用したソフト更新を行う際には不都合を生じる。
更新用ファイルは、更新前プログラムと更新後プログラムとを比較して、差分ファイルとして生成される。通常、この更新用ファイルは、更新後プログラムに比べてサイズ(データ量)が小さく、更新後プログラム全体に比べて、ダウンロードや更新処理に要する時間が短縮されるという利点がある。なお、更新用ファイルは事前に、携帯端末10の外部で専用TOOLで作成され、通信部16を介して、専用サーバからダウンロードされ、ストレージ領域24に格納される。
ソフト更新実行時、この更新用ファイルに基づいて、NANDメモリ15bのプログラム領域23に格納されている更新前プログラムに対して、ソフト更新エンジンが更新処理を行い、NANDメモリ上に更新後プログラムを生成する。ソフト更新エンジンは、例えば、NANDメモリ15b内に格納されており、更新処理時、更新エンジンを、一旦、RAM15aに展開(コピー)し、このRAM15a内のソフト更新エンジンを実行することによりソフト更新を実現することができる。
プログラムはNANDメモリに格納される為、従来方式ではNANDメモリの全ブロックが正常の場合は問題ないが、後発的に不良ブロックNが発生した場合は、更新前プログラムのアドレス連続性が損なわれ、更新用ファイルとの整合性が取れなくなり、プログラム更新が実施できなくなったり、できたとしても、当該不良ブロック以降のブロックについてプログラムをずらして記憶させるために、本来必要でないブロックの書込が必要となる。
本実施の形態では予め、NANDメモリの不良ブロックに対応付け可能な代替ブロックを準備し、不良ブロックと代替ブロックの物理アドレスを論理アドレスで管理することにより、NANDメモリのアドレス連続性を確保することができ、連続アドレスを前提として作成された、ソフト更新前と更新後の更新用ファイル(差分ファイル)を用いて、NANDメモリに不良ブロックが後発した場合でもソフト更新を実行することが可能になる。
以下、更新前プログラムを格納したNANDメモリに後発不良ブロックが発生した場合でもソフト更新を可能にする手法について説明する。
まず、本発明の前提とする特願2006−212751号に記載されたNANDメモリ15bの構成を説明する。
図3は、NANDメモリ15bのメモリ空間としての内部構成例を示している。NANDメモリ15bは複数の単位データ量に対応するブロックに分割され、各ブロックは図示のようにその機能が割り当てられる。図3の機能の割当状態は初期の割当状態であり、後述するように、この状態は変化しうる。
NANDメモリ15bの先頭ブロック(Block0)にはブートコードが配置される。Block1以降のブロックを使用して本実施の形態の動作が行われる。
図示の例では、Block0に続くBlock1,Block2の二つのブロックを「管理領域1」および「管理領域2」として用いている。「管理領域」はNANDメモリの不良ブロックおよび代替ブロックを管理するための管理情報を記憶する領域である。管理情報の詳細については後述する。管理領域はNANDメモリの書込時の電源断などによる管理情報の消失(破損)の対策として、複数組用意している。携帯端末では通常、電源として電池を利用しており、電池の残量減や端末落下等による電池パックの脱落などの要因により、据え置き型の装置に比べて処理中に電源断が生じる可能性が高い。
「管理領域2」に続いて「干渉領域1」および「干渉領域2」がそれぞれBlock3,4に設けられている。「干渉領域」は、管理領域と代替領域の境界を識別する為に使用する領域である。
「干渉領域2」のBlock4に続いてBlock5〜Block14までを代替領域としている。代替領域は不良ブロックを代替するための領域として確保されている。図の例では代替領域として10個のブロックを確保しているが、このブロック数は使用するNANDメモリの容量を考慮して最適な値に調整される。
代替領域の次のブロック(Block15)から以降のブロックは、実際のプログラムが格納してあるプログラム領域が続く。
「管理領域」「干渉領域」「代替領域」のすべてのブロックは、後述するように本明細書では「代替エリア」と呼ぶ。
ここで、図4により、本実施の形態における管理領域の内部構成およびその記憶情報について説明する。管理領域の1つのブロック150には、次のような情報が記憶される。
(1)チェックデジット151: 1つの管理領域(ブロック)内のデータの破損等をチェックするためのチェックサム等のチェック用データである。これにより、データ書込中に電源断となったような場合のブロック内の不完全な書込状態を判別することができる。
(2)世代数152: 管理領域(ブロック)内の管理情報が更新されていく際の世代を表す世代情報であり、例えば次第に増加していく番号である。
(3)代替領域の使用数153: 代替領域として用意された複数のブロックのうち使用済のブロックの個数である。これに代えて、未使用のブロックの個数を用いてもよい。代替領域の当初のブロック数は既知の値なので、使用済のブロック数と未使用のブロック数とはいずれか一方が分かれば他方が分かる。なお、後述するように代替領域のブロックが不良となる場合もあり、このような不良ブロックは「使用済」に該当する。
(4)代替先の対応情報154: 代替領域の正常な未使用ブロックが特定のブロックの代替先として割り当てられた場合、その対応関係を表す情報であり、ここでは、不良ブロックのブロック番号と代替領域のブロック番号とを対応づけて記憶している。図3の例では、最大10個の対応情報を格納可能である。
(5)代替エリア(Block1-14)内の不良ブロック情報155: 管理領域、干渉領域、および代替領域(図3の例ではBlock1〜14)は管理用領域であり、これらのいずれかのブロックが不良となった場合に記録されるその不良ブロックを特定する情報(ここではブロック番号)である。ある代替エリアのブロックを利用しようとして、そのブロックが不良として記録されていた場合には、そのブロックを飛ばして次のブロックを利用する。
(1)チェックデジット151: 1つの管理領域(ブロック)内のデータの破損等をチェックするためのチェックサム等のチェック用データである。これにより、データ書込中に電源断となったような場合のブロック内の不完全な書込状態を判別することができる。
(2)世代数152: 管理領域(ブロック)内の管理情報が更新されていく際の世代を表す世代情報であり、例えば次第に増加していく番号である。
(3)代替領域の使用数153: 代替領域として用意された複数のブロックのうち使用済のブロックの個数である。これに代えて、未使用のブロックの個数を用いてもよい。代替領域の当初のブロック数は既知の値なので、使用済のブロック数と未使用のブロック数とはいずれか一方が分かれば他方が分かる。なお、後述するように代替領域のブロックが不良となる場合もあり、このような不良ブロックは「使用済」に該当する。
(4)代替先の対応情報154: 代替領域の正常な未使用ブロックが特定のブロックの代替先として割り当てられた場合、その対応関係を表す情報であり、ここでは、不良ブロックのブロック番号と代替領域のブロック番号とを対応づけて記憶している。図3の例では、最大10個の対応情報を格納可能である。
(5)代替エリア(Block1-14)内の不良ブロック情報155: 管理領域、干渉領域、および代替領域(図3の例ではBlock1〜14)は管理用領域であり、これらのいずれかのブロックが不良となった場合に記録されるその不良ブロックを特定する情報(ここではブロック番号)である。ある代替エリアのブロックを利用しようとして、そのブロックが不良として記録されていた場合には、そのブロックを飛ばして次のブロックを利用する。
図5により、ブロック書込実行時(ソフト更新時)に、後発的な不良ブロックが検出された場合の動作を説明する。今、BlockN+3に不良が検出され書込が不可であることが判明したとする。このBlockN+3は不良(Bad)ブロックとしてマーキングされ、以後使用は禁止される。BlockN+3に書込を行う予定であったCodeは、次のBlockN+4ではなく、代替領域10に代替して書き込まれる。この代替情報は「管理領域1」に記憶する。この例では、代替領域10がBlockN+3を代替するような代替情報を記憶する。
このように管理情報で不良ブロックと代替ブロックの管理を行うことにより、実際の物理アドレスを論理アドレスに対応づけ、論理アドレスを物理アドレスへ変換するアドレス変換を行うことが可能になる。また、論理アドレスを参照することによりメモリアドレスの連続性を確保することができる。このような不揮発性メモリの少なくとも1ブロック内の管理領域に記憶された代替情報による論理アドレスの物理アドレスによる変換によれば、外部に既知のメモリ管理ユニット(MMU)等の特別なアドレス変換手段を設ける必要がなくなる。
次に図6により、管理領域が不良ブロックになった場合の動作を説明する。本実施の形態では、上述のように、管理領域は「管理領域1」と「管理領域2」により、正・副の2面管理される。「管理領域1」と「管理領域2」は交互に利用され、利用される側が「正」となり、他方が「副」となる。管理領域への情報の格納は、1つのブロックに1世代分の管理情報を格納する方法と、1つのブロックに複数世代の管理情報を追記して行き、正領域への追記が不可能になった場合に「正」「副」の切り替えを行う方法とがある。ここでは、説明の簡便のために、前者の方法について説明する。
管理領域を2面用意する理由は次のとおりである。本発明を適用するメモリの特性上、既に情報が記入されている場所に新たに情報を記録する場合、一度、そのブロックの消去操作を行い、記録されている情報を削除する必要がある。仮に、1面のみで管理領域を更新する場合、管理領域を消去した際に電源断などの何らかの障害が発生した場合に現在の管理情報が失われてしまうことになる。このような不具合を防止するため、最新の情報を保持するブロックと、消去操作を行い新たに更新された管理情報を書込ブロックとを分離する。具体的な管理領域の更新動作では、管理領域の更新が必要となった場合、「副」領域を消去し、「正」領域から読み出した情報を更新し「副」領域に新しい世代数で書き込む。この書込終了時点で、正・副の領域の交換が完了し、旧「副」領域が「正」領域へ、旧「正」領域が「副」領域へと変更されることになる。このように、管理領域としてそれぞれ管理情報を格納する少なくとも2個のブロックを用いることにより、管理情報を外部にバックアップする必要がなくなる。
なお、管理情報の書込は、事前にRAM上へ読み出していた「正」の管理領域のコピーを更新し、それまで「副」であった管理領域に書き込むことにより行われる(更新の手法としては、管理領域の更新が必要になった時点で「正」領域からメモリへのコピーを作成する方法もありうるが、本実施の形態では実行時の効率を考慮して、予め最新の管理情報のコピーがメモリ上に読み出されて常駐しているものとする)。また、管理情報の正・副の区別は、管理情報に付けられた世代数(152)の比較を行い、より最近に記録された領域を「正」として扱う。
図6(a)の状態でRAM上で更新した新しい管理情報を「副」領域に書き込もうとした際に、図6(b)に示すようにBlock2が不良ブロックとなった場合、図6(c)に示すように、Block3の干渉領域を新たな「管理領域2」として確保する。元の「管理領域2」は不良としてRAM上の管理情報に記録され、Block2が不良であると更新された管理情報が新たに確保された「管理領域2」へと書き込まれる。これにより、元の「管理領域1」が「副」となり、新たに書き込まれた「管理領域2」が「正」となる。
Block3が管理領域となった結果、干渉領域1,2を1ブロック分ずらして、Block4,5に移動させる。干渉領域には予め0xAA等の所定のデータで書込を行っておき、プログラム領域23と管理領域の境界を明示するための領域とする。なお、本実施の形態では、代替領域の未使用ブロックも干渉領域と同じ所定のデータを書き込んであり、このような場合には、ブロック内のデータ上は干渉領域と代替領域とは区別が付かず、「干渉領域1,2を1ブロック分ずら」すといっても、管理情報が変わるのみで、特に代替領域の1ブロックを新たな干渉領域とするために当該代替領域ブロックに特別な書き込み処理等を行う必要はない。
上述したように、代替領域はプログラム領域の不良ブロックを代替するのみならず、図6に示したように、管理領域の代替にも利用することができる。但し、管理領域の代替の仕方はプログラム領域の不良ブロックの代替とは異なり、干渉領域をずらすことにより行う。このように、NANDメモリ15b内のメモリ空間において管理領域と代替領域との間に干渉領域を挟み込む形式で各ブロックの機能の割当を行うことにより、代替領域を有効に利用することができる。
この代わりに、管理領域に専用の固定数の代替領域と、プログラム領域に専用の固定数の代替領域を設ける実装形態も考えられるが、管理領域とプログラム領域の不良ブロックの発生具合によって、一方の代替領域が無駄となる場合がありうる。これに対して、本実施の形態のように、代替領域を動的に管理領域とプログラム領域のいずれにも利用できる形態としたので、不良ブロックの発生時には代替領域のすべてのブロックを無駄なく有効に利用することができる。すなわち、管理領域に後発不良ブロックが発生した場合でも干渉領域を代替領域側へずらして元の干渉領域を新たな管理領域として利用することにより、実質的に代替領域のブロックを管理領域とプログラム領域の両方が利用することができる。つまり、不良ブロックが発生した場合には、代替領域の一定個数のブロックの用途を限ることなく、代替領域のすべてのブロックを有効に利用することが可能となる。
この構成では、代替処理は干渉領域が2面(2ブロック)分とれなくなる時点まで代替処理を継続できる。代替領域1まで使用後、次の代替領域は干渉領域であることを検出して、代替動作を停止する。これにより、管理領域と代替領域がオーバーラップすることが防止される。
なお、図6等において、領域の割当の変更時に各領域の番号を1から付け直すようにリナンバリングを行っているが、これは説明の便宜上であり、各領域に付した番号は特に重要ではない。
図5に示したとおり、代替領域によるプログラム領域の不良ブロックの代替は干渉領域から最も遠い代替領域のブロックから利用されていく。
図7は、このようにしてプログラム領域の不良ブロックが代替領域に代替されていき、代替領域が残り1ブロックとなり、かつ、その時点でプログラム領域内のBlockL(図示省略)に不良が発生し、代替領域を使い切った状態を示している。すなわち、干渉領域2に隣接した代替領域1まで「使用済」となっている。また、同図のBlock11に示すように、代替領域内のブロックが不良となる場合もある。この場合には、このブロックを利用しないように、管理用領域内の不良ブロック情報155(図4)に記憶されて管理される。
以上の構成により、管理領域にて論理アドレスを管理することにより、NANDメモリ内のプログラムのアドレスの連続性を保つことが実現される。このためNANDメモリに不良ブロックがあった場合でも、ソフト更新エンジンが管理領域を参照することにより更新用ファイルをベースにソフト更新を行うことが可能になる。
上記のような構成において、以下、代替領域の個数ひいては代替エリアのサイズを動的に可変設定することができる本発明の実施の形態について説明する。
本願発明者らは、携帯電話機の特定の機種の実装段階において、NANDメモリの初期不良ブロック数のチェックを800台に対して実施した。その結果を図8に示す。図8の結果から分かるように、当該機種で使用したNANDメモリ(256Mbyte)では初期不良ブロックがゼロまたは1つのものが全体の約90%弱を占めることになる。NANDメモリはその特性上、書き込み操作に対する制限があり、通常10万回以上である程度破壊が始まる傾向がある。NANDメモリをストレージエリアとして使用する場合は、複数の書き込み操作を実施することを想定する必要があるが、上述した先願の代替領域はプログラム領域に対するエリアであるため、書き込みの回数は多くても数回程度になるのが現実である。このため、初期不良が0または1つのNANDメモリに対しては代替領域を仮に44ブロック準備した場合、その殆どが使用されないことが予想される。例えば、スモールページ(small page)のNANDメモリを使用した場合、1ブロック=16Kbyteであるため、代替エリアに使用されるメモリ領域は16Kbyte*44=704Kbyteとなり、これはそれなりのサイズとなるため、看過できない。
図12に、本実施の形態における各種段階での処理のフローチャートを示す。
図12(a)は、プログラムロードに先立って行われるメモリチェックの実行時の処理を示している。まず、NANDメモリの初期不良ブロックチェックとして、NANDメモリに問題がないかを調べるメモリチェックが実施される(S11)。このメモリチェックは、チェック用の独立のプログラムがRAM15a上に展開され、全てのNANDメモリブロックに対して実行される。この実行の結果、初期不良ブロックの数が確認され、記録される(S12)。
本実施の形態は、メモリチェックによる不良ブロックの結果に応じて代替領域の個数(ブロック数)を決めるようにするものである。メモリチェックは全NANDブロックに対して実施される為、NANDメモリとは異なるメモリエリアとしての不良ブロック数記録デバイス25(図1)に初期不良ブロック数を一時保存する必要がある。このメモリエリアとしては、SRAMなどがあればそこに保存することもできるし、電源IC等のデバイス等にデータバックアップ用レジスタがあればそれを利用してもよい。
次にソフトロードを実行する。この処理では、図12(b)に示すように、保存された処理不良ブロック数をまず読み出して代替領域の構成を把握する(S21)。すなわち、初期不良ブロック数に応じて決定された代替領域ブロック数を確保し、その代替領域の後に続くブロックのアドレスをNANDメモリへのプログラムロードアドレスとして決定する(S22)。本実施の形態では、図11に示す様に、NANDメモリ初期不良ブロック数に応じて代替領域のブロック数を決めている。具体的には、初期不良ブロック数が大きくなるにつれて、予め用意する代替領域ブロック数を10〜44の範囲内で段階的に大きくしていっている。図11に示す関係データは、代替領域の構成を把握する処理を行うプログラム内に条件式として組み込まれるか、それらのプログラムが参照できる記憶部15または他の記憶装置の所定の領域にデータテーブルとして格納される。
その後、このプログラムロードアドレスからのアドレス空間ヘプログラムエリアをロードする(S23)。
図9(a)は、初期不良ブロック=1の場合、代替領域のブロック数が10、すなわち代替エリアのブロック数が10+4=14の場合のNANDメモリ上のプログラムロード位置を示している。図9(b)は、初期不良ブロック=20の場合、代替領域のブロック数が44、代替エリアのブロック数が44+4=48の場合のNANDメモリ上のプログラムロード位置を示している。図9および後述する図10では、便宜上、<代替領域+管理領域+干渉領域>を「代替エリア」と表記している。
上述したように、代替領域の運用に管理領域ならびに干渉領域をそれぞれ2ブロックずつ用いる為、代替領域ブロック数が10個の場合は、10+2+2=14ブロックの代替エリア以降の領域がプログラム領域となる。
図12(c)に示すように、ブート時においては同様に保存された初期不良ブロック数からNANDメモリのプログラム格納アドレスを計算し、転送元のNANDメモリのプログラム格納アドレスとしてのNANDアドレスを決定する(S32)。この結果、プログラム領域はブート時に正しくRAMへ展開され(S33)、プログラムの実行が可能になる。この状態を図10(a)(b)に示す。図10(a)に示すように、初期不良ブロック1の場合、ブート時には、NANDメモリにおける代替エリアの開始アドレスNからN+14×16Kbyte分の代替エリア以降がプログラム領域となり、ここからRAMへプログラムが展開される。同様に、図10(b)に示すように、初期不良ブロック20の場合、ブート時には、NANDメモリにおける代替エリアの開始アドレスNからN+48×16Kbyte分の代替エリア以降がプログラム領域となり、ここからRAMへプログラムが展開される。代替領域の管理はプログラム実行後に実施されることになるが、図12(d)に示すように、プログラム実行中、上記と同様に予め記録された初期不良ブロック数を参照することにより代替領域の構成を把握し(S41)、代替領域の管理を実行することができる(S42)。
本発明の実施の形態によれば、代替領域の個数(ブロック数)をNANDメモリの初期不良ブロック数に応じてダイナミックに設定することにより、NANDメモリの有効利用が可能になる。たとえば初期不良ブロック0のNANDメモリに対しては16Kbyte*(10+2+2)=224Kbyteの代替エリアを確保すれば、動作上問題なく動作が保証できると考えられる(書き換え回数が少ない為、NANDメモリとして書き換えによる後発不良の発生は殆どないと仮定できる)。この場合、固定値として代替エリアを48ブロック確保した場合に比較して、16Kbyte*(48−14)=544Kbyteものメモリ容量が削減できることになる。ただし、当然ながら、初期不良ブロック数が比較的大きなNANDメモリに対しては、代替エリアに確保すべきメモリ容量の削減は期待できない。
削減されたメモリ容量の使用方法に関してはここでは特に言及しないが、ストレージエリアの拡張等に使用することが可能である。
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも種々の変形、変更を行うことが可能である。
10…携帯端末、11…制御部、15…記憶部、15a…RAM、15b…NANDメモリ、16…通信部、21…ブート領域、22…代替領域、23…プログラム領域、24…ストレージ領域、25…不良ブロック数記録デバイス、26…ソフトローダ、27…プログラム、151…チェックデジット、152…世代数、153…代替領域の使用数、154…代替先の対応情報、155…不良ブロック情報
Claims (16)
- ブロック単位に書き込みが行われる不揮発性メモリの管理方法であって、
初期不良ブロック数をチェックし、不良ブロックを代替する複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定することを特徴とするメモリ管理方法。 - 前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも1個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのプログラム領域と、前記代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも1個のブロックからなる干渉領域とに割り当て、
前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、
前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いる
ことを特徴とする請求項1に記載のメモリ管理方法。 - 前記管理情報は、さらに、前記代替領域の使用済のブロック数または未使用のブロック数を含む請求項2に記載のメモリ管理方法。
- 前記管理情報は、さらに、前記管理領域および/または前記代替領域の不良ブロックの情報を含む請求項2または3に記載のメモリ管理方法。
- 前記管理領域はそれぞれ管理情報を格納する少なくとも2個のブロックを用い、前記管理情報にはその世代を表す世代情報を含む請求項2に記載のメモリ管理方法。
- 前記管理領域のブロックが不良となった場合、メモリアドレス上、前記代替領域内の前記干渉領域に近い側のブロックへ前記干渉領域をずらし、元の干渉領域の1ブロックを新たな管理領域とする請求項2または5に記載のメモリ管理方法。
- 前記代替領域のブロックはメモリアドレス上、前記干渉領域から遠い側から使用していく請求項2に記載のメモリ管理方法。
- ブロック単位に書き込みが行われる不揮発性メモリと、
前記不揮発性メモリの複数のブロックを、管理情報を格納する少なくとも1個のブロックからなる管理領域と、プログラムコードを書き込む複数のブロックのプログラム領域と、不良ブロックを代替する複数のブロックからなる代替領域と、前記管理領域と前記代替領域との間に設けられる少なくとも1個のブロックからなる干渉領域とに割り当てて利用する制御手段とを備え、
前記制御手段は、初期不良ブロック数をチェックし、不良ブロックを代替する複数のブロックからなる代替領域のブロック数を、前記初期不良ブロック数に応じて決定する
ことを特徴とする携帯端末装置。 - 前記制御手段は、前記管理領域内の管理情報として、少なくとも、前記代替領域のブロックとその代替先の不良ブロックとの対応情報を記憶し、前記不良ブロックの利用時に前記対応情報に基づいて前記不良ブロックに代えて前記代替領域のブロックを用いることを特徴とする請求項8に記載の携帯端末装置。
- 前記プログラムコードを記憶可能なRAMを備え、
前記制御手段は、前記不揮発性メモリ内のプログラムコードの実行に先だち、当該プログラムコードをブロック単位に前記RAM上に転送して前記RAM上で実行する請求項9に記載の携帯端末装置。 - 前記制御手段は、前記不揮発性メモリのプログラム領域内のいずれかのブロックにアクセスする際、前記管理情報を確認し、当該ブロックに対して前記代替領域のブロックが割り当てられているときには、当該ブロックに代えて前記代替領域のブロックを利用する請求項9に記載の携帯端末装置。
- 前記管理情報は、さらに、前記代替領域の使用済のブロック数または未使用のブロック数を含む請求項9に記載の携帯端末装置。
- 前記管理情報は、さらに、前記管理領域および/または前記代替領域の不良ブロックの情報を含む請求項9または12に記載の携帯端末装置。
- 前記管理領域はそれぞれ管理情報を格納する少なくとも2個のブロックを用い、前記管理情報にはその世代を表す世代情報を含む請求項9に記載の携帯端末装置。
- 前記制御手段は、前記管理領域のブロックが不良となった場合、メモリアドレス上、前記代替領域内の前記干渉領域に近い側のブロックへ前記干渉領域をずらし、元の干渉領域の1ブロックを新たな管理領域とする請求項9または14に記載の携帯端末装置。
- 前記制御手段は、前記代替領域のブロックを、メモリアドレス上、前記干渉領域から遠い側から使用していく請求項9に記載の携帯端末装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007170664A JP2009009390A (ja) | 2007-06-28 | 2007-06-28 | メモリ管理方法および携帯端末装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007170664A JP2009009390A (ja) | 2007-06-28 | 2007-06-28 | メモリ管理方法および携帯端末装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009009390A true JP2009009390A (ja) | 2009-01-15 |
Family
ID=40324401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007170664A Withdrawn JP2009009390A (ja) | 2007-06-28 | 2007-06-28 | メモリ管理方法および携帯端末装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009009390A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015146788A1 (ja) * | 2014-03-28 | 2015-10-01 | 京セラドキュメントソリューションズ株式会社 | 電子機器 |
-
2007
- 2007-06-28 JP JP2007170664A patent/JP2009009390A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015146788A1 (ja) * | 2014-03-28 | 2015-10-01 | 京セラドキュメントソリューションズ株式会社 | 電子機器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5019567B2 (ja) | メモリ管理方法および携帯端末装置 | |
US8954649B2 (en) | Garbage collection in storage devices based on flash memories | |
US7882301B2 (en) | Wear leveling in storage devices based on flash memories and related circuit, system, and method | |
US20060069849A1 (en) | Methods and apparatus to update information in a memory | |
CN101026848A (zh) | 移动终端和软件更新方法 | |
KR20030021631A (ko) | 휴대 단말기의 메모리 장치 및 그 제어방법 | |
JP5874525B2 (ja) | 制御装置、記憶装置、記憶制御方法 | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
JP2000222292A (ja) | フラッシュメモリを利用したデータ管理方法 | |
JP4586469B2 (ja) | メモリ制御装置、メモリ制御方法、プログラム | |
US20070005929A1 (en) | Method, system, and article of manufacture for sector mapping in a flash device | |
KR100456736B1 (ko) | 플래시 메모리를 구비한 디지털 기기의 부팅 시간 단축 방법 | |
JP2009134672A (ja) | メモリ管理方法および携帯端末装置 | |
JP2004326165A (ja) | メモリ制御装置およびメモリ制御方法 | |
US7472309B2 (en) | Methods and apparatus to write a file to a nonvolatile memory | |
JP2009009390A (ja) | メモリ管理方法および携帯端末装置 | |
US8706954B2 (en) | Memory management apparatus and memory management method | |
KR100319254B1 (ko) | 플레쉬 메모리를 이용한 비휘발성 데이터 영역 복구 방법 | |
KR100514756B1 (ko) | 플래쉬 메모리를 파일 시스템으로 라이트하기 위한캐쉬처리 방법 | |
JP5521437B2 (ja) | 携帯端末装置、ソフトウェア更新方法及びプログラム | |
JP2004296014A (ja) | 不揮発性メモリの消去回数平準化方法 | |
JP2005174468A (ja) | フラッシュメモリのアクセス制御方法 | |
JP2008191855A (ja) | 半導体記憶装置及びメモリ制御方法 | |
JP2011175428A (ja) | 記憶装置 | |
JP2006099419A (ja) | 不揮発性メモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20100907 |