説明

記憶装置

【課題】迅速な処理でウェアレベリングを実現する記憶装置を提供すること。
【解決手段】不揮発性メモリ52は、アドレスが付されたブロックを複数有し、当該複数のブロックに当該ブロックの数よりも少ない数のユーザデータを記憶するユーザデータ領域52Aと、ユーザデータ領域52Aへのユーザデータの記憶を制御するデータを含む管理データを記憶する管理データ領域52Bとを備え、管理データ領域52Bは、制御部により最も新しく記憶されたユーザデータが記憶されているユーザデータ領域52Aのブロックに付されているアドレスを管理データとして記憶するアドレス記憶部521Bを有し、制御部は、新たにユーザデータを記憶させる場合、アドレス記憶部521Bに記憶されたアドレスより大きいアドレスが付されたユーザデータ領域52Aのブロックにユーザデータを記憶させた後、当該ブロックに付されたアドレスをアドレス記憶部521Bに記憶させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ユーザデータを記憶する記憶装置に関する。
【背景技術】
【0002】
近年、携帯電話等の電子機器には、データを記憶する記憶媒体としてフラッシュメモリが使用されることが多い。このフラッシュメモリは、アドレスが設けられているブロックを複数備えており、このブロックは、複数のページにより構成されている。また、ページは、複数のメモリセルにより構成される。
【0003】
ところで、フラッシュメモリは、このブロック単位でデータの書き込み及び消去を行うが、メモリセルの構造上、それぞれのブロックへのデータの書き込みが所定回数(例えば、10万回)に制限されている。このため、フラッシュメモリでは、特定のブロックへのデータの書き込みが集中しないように平準に書き込みを制御するウェアレベリングが行われている。
【0004】
例えば、特許文献1には、データが消去された回数を記憶するカウンタをブロックごとに設け、データの書き込みを行う際に、カウンタを参照して消去された回数が最も少ないブロックを選択する方法が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平9−97218号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に提案された方法では、消去された回数が最も少ないブロックを選択するために、ブロックごとに設けられたカウンタを全て参照する必要がある。このため、特許文献1に提案された方法では、データの書き込みに係る処理が開始されてから、実際にデータの書き込みをブロックに行うまでに、全てのカウンタを参照する時間が余分に掛かるという問題があった。
【0007】
本発明は、迅速な処理でウェアレベリングを実現することができる記憶装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係る記憶装置は、アドレスが付されたブロックを複数有し、当該複数のブロックに当該ブロックの数よりも少ない数のユーザデータを記憶するユーザデータ領域と、前記ユーザデータ領域への前記ユーザデータの記憶を制御するデータを含む管理データを記憶する管理データ領域と、前記管理データに基づいて、前記ユーザデータ領域の複数のブロックへの前記ユーザデータの記憶制御を行う制御部と、を備え、前記管理データ領域は、前記制御部により最も新しく記憶されたユーザデータが記憶されている前記ユーザデータ領域のブロックに付されているアドレスを前記管理データとして記憶するアドレス記憶部を有し、前記制御部は、新たにユーザデータを記憶させる場合、前記アドレス記憶部に記憶されたアドレスより大きいアドレスが付された前記ユーザデータ領域のブロックに前記ユーザデータを記憶させた後、当該ブロックに付されたアドレスを前記アドレス記憶部に記憶させることを特徴とする。
【0009】
また、上記記憶装置は、前記制御部は、新たにユーザデータを記憶させる場合、前記アドレス記憶部に記憶されたアドレスより1つ大きいアドレスが付された前記ユーザデータ領域のブロックに前記ユーザデータを記憶させた後、当該ブロックに付されたアドレスを前記アドレス記憶部に記憶させることが好ましい。
【0010】
また、上記記憶装置は、管理データ領域は、ブロックを複数有し、当該複数のブロックに前記管理データを記憶することが好ましい。
【0011】
また、上記記憶装置は、前記管理データ領域は、複数の前記ユーザデータそれぞれについて、当該ユーザデータのデータ名と、当該ユーザデータが記憶されているブロックのアドレスとを関連付けて、前記管理データとして記憶するデータマップ記憶部を有し、前記制御部は、新たにユーザデータを記憶させる場合、前記アドレス記憶部に記憶されたアドレスより1つ大きいアドレスが前記データマップ記憶部に記憶されていないときに、当該1つ大きいアドレスのブロックに当該ユーザデータを記憶させ、前記アドレス記憶部に記憶されたアドレスより1つ大きいアドレスが前記データマップ記憶部に記憶されているときに、前記データマップ記憶部に記憶されていないアドレスを特定するまで、当該1つ大きいアドレスに1つずつアドレスを加算し、アドレスが特定された場合に、当該特定されたアドレスのブロックに当該ユーザデータを記憶させることが好ましい。
【0012】
また、上記記憶装置は、前記制御部は、前記ユーザデータ領域に、前記アドレス記憶部に記憶されたアドレスより1つ大きいアドレスのブロックが存在しない場合、前記データマップ記憶部に記憶されていないアドレスを特定するまで、当該ユーザデータ領域の先頭アドレスに1つずつアドレスを加算し、アドレスが特定された場合に、当該特定されたアドレスのブロックに新たにユーザデータを記憶させることが好ましい。
【0013】
本発明に係る記憶装置は、アドレスが付されたブロックを複数有し、当該複数のブロックに当該ブロックの数よりも少ない数のユーザデータを記憶するユーザデータ領域と、前記ユーザデータ領域への前記ユーザデータの記憶を制御するデータを含む管理データを記憶する管理データ領域と、前記管理データに基づいて、前記ユーザデータ領域の複数のブロックへの前記ユーザデータの記憶制御を行う制御部と、を備え、前記管理データ領域は、前記制御部により最も新しく記憶されたユーザデータが記憶されている前記ユーザデータ領域のブロックに付されているアドレスを前記管理データとして記憶するアドレス記憶部を有し、前記制御部は、新たにユーザデータを記憶させる場合、前記アドレス記憶部に記憶されたアドレスより小さいアドレスが付された前記ユーザデータ領域のブロックに前記ユーザデータを記憶させた後、当該ブロックに付されたアドレスを前記アドレス記憶部に記憶させることを特徴とする。
【発明の効果】
【0014】
本発明によれば、迅速な処理でウェアレベリングを実現することができる。
【図面の簡単な説明】
【0015】
【図1】携帯電話装置の外観斜視図である。
【図2】携帯電話装置の機能を示す機能ブロック図である。
【図3】不揮発性メモリの構成を模式的に示す図である。
【図4】最も大きいシーケンス番号が記憶されているブロックを特定する処理を示すフローチャートである。
【図5】新たにユーザデータを記憶するブロックのアドレスを決定する処理を示すフローチャートである。
【図6】新たにユーザデータが記憶される様子を示す図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態について説明する。図1は、本発明に係る記憶装置を内蔵する携帯電話装置1の外観斜視図を示す。なお、図1は、いわゆる折り畳み型の携帯電話装置の形態を示しているが、本発明に係る携帯電話装置の形態としては、特にこれに限られない。例えば、両筺体を重ね合わせた状態から一方の筺体を一方向にスライドさせるようにしたスライド式や、重ね合わせ方向に沿う軸線を中心に一方の筺体を回転させるようにした回転式(ターンタイプ)や、操作部と表示部とが1つの筺体に配置され、連絡部を有さない形式(ストレートタイプ)でもよい。
【0017】
携帯電話装置1は、操作部側筺体部2と、表示部側筺体部3とを備えて構成される。操作部側筺体部2は、表面部10に、操作部11と、携帯電話装置1の使用者が通話時に発した音声が入力されるマイク12とを備えて構成される。操作部11は、各種設定や電話帳機能やメール機能等の各種機能を作動させるための機能設定操作キー13と、電話番号の数字やメール等の文字等を入力するための入力操作キー14と、各種操作における決定やスクロール等を行う決定操作キー15とから構成されている。
また、表示部側筺体部3は、表面部20に、各種情報を表示するためのLCD(Liquid Crystal Display)表示部21と、通話の相手側の音声を出力するスピーカ22とを備えて構成されている。
【0018】
また、操作部側筺体部2の上端部と表示部側筺体部3の下端部とは、ヒンジ機構4を介して連結されている。また、携帯電話装置1は、ヒンジ機構4を介して連結された操作部側筺体部2と表示部側筺体部3とを相対的に回転することにより、操作部側筺体部2と表示部側筺体部3とを互いに開いた状態(開放状態)にしたり、操作部側筺体部2と表示部側筺体部3とを折り畳んだ状態(折畳み状態)にしたりできる。
【0019】
また、図2は、携帯電話装置1の機能を示す機能ブロック図である。携帯電話装置1は、図2に示すように、操作部11と、マイク12と、メインアンテナ40と、RF回路部41と、LCD制御部42と、音声処理部43と、メモリ50と、制御部60とが操作部側筺体部2に備えられ、LCD表示部21と、スピーカ22と、LCDドライバ23とが表示部側筺体部3に備えられている。
【0020】
メインアンテナ40は、デュアルバンド対応構成であり、第1の使用周波数帯(例えば、800MHz)で基地局等と通信を行い、第2の使用周波数帯(例えば、1.5GHz)でGPS衛星と通信を行う。
【0021】
RF回路部41は、メインアンテナ40によって受信した信号を復調処理し、処理後の信号を制御部60に供給する。また、RF回路部41は、制御部60から供給された信号を変調処理し、メインアンテナ40を介して外部装置(基地局)に送信する。また、その一方で、RF回路部41は、メインアンテナ40によって受信する信号の強度を制御部60に通知する。
【0022】
LCD制御部42は、制御部60の制御にしたがって、所定の画像処理を行い、処理後の画像データをLCDドライバ23に出力する。LCDドライバ23は、フレームメモリを備えており、LCD制御部42から供給された画像データをフレームメモリに蓄える。そして、LCDドライバ23は、フレームメモリに蓄えられた画像データを所定のタイミングでLCD表示部21又はサブLCD表示部(図示省略)に出力する。
【0023】
音声処理部43は、制御部60の制御にしたがって、RF回路部41から供給された信号に対して所定の音声処理を行い、処理後の信号をスピーカ22に出力する。スピーカ22は、音声処理部43から供給された信号を外部に出力する。
また、音声処理部43は、制御部60の制御にしたがって、マイク12から入力された信号を処理し、処理後の信号をRF回路部41に出力する。RF回路部41は、音声処理部43から供給された信号に所定の処理を行い、処理後の信号をメインアンテナ40に出力する。
【0024】
メモリ50は、揮発性メモリ51(例えば、SDRAM(SynchronousDRAM))と、不揮発性メモリ52(例えば、NAND型フラッシュメモリ)とを備える。
揮発性メモリ51は、制御部60による演算処理に利用されるワーキングメモリとしての機能を有する。
【0025】
不揮発性メモリ52は、アドレスが設けられているブロックを複数備えており、このブロックは、複数のページにより構成される。このページは、1ビットの情報を記憶するメモリセルにより構成される。不揮発性メモリ52が、NAND型フラッシュメモリである場合、データの記憶は、ブロック単位で行われるが、メモリセルは、構造上、書き換え回数に制限がある。このため、不揮発性メモリ52は、ブロックへのデータの書き込みが所定回数に制限されている。
この不揮発性メモリ52は、複数のアプリケーションや当該アプリケーションが必要とする各種のテーブル等を記憶する。
【0026】
制御部60は、携帯電話装置1の全体を制御しており、中央処理装置(CPU)等を用いて構成される。
【0027】
本実施形態に係る携帯電話装置1では、不揮発性メモリ52の複数のブロックに対して、平準に書き込みを制御するウェアレベリング機能を有している。
携帯電話装置1は、制御部60とメモリ50との協調動作によって当該機能を発揮する。ここで、制御部60とメモリ50との詳細な構成及び動作について説明する。
【0028】
図3は、不揮発性メモリ52の構成を模式的に示す図である。
不揮発性メモリ52は、図3に示されるように、アドレスが設けられているブロックを複数備える。具体的には、不揮発性メモリ52は、複数のブロックA1〜Anにより構成されるユーザデータ領域52Aと、複数のブロックB1〜Bmにより構成される管理データ領域52Bとを備える。
【0029】
ユーザデータ領域52Aは、複数のブロックA1〜Anにユーザデータを当該ブロックの数よりも少なく記憶する。
管理データ領域52Bは、複数のブロックB1〜Bmにユーザデータ領域52Aへの前記ユーザデータの記憶するデータを含む管理データを記憶する。
【0030】
具体的には、図3に示すように、管理データ領域52Bは、複数のブロックB1〜Bmそれぞれに、制御部60により最も新しく記憶されたユーザデータが記憶されているユーザデータ領域52Aのブロックに付されているアドレスを管理データとして記憶するアドレス記憶部521Bを備える。
【0031】
制御部60は、管理データに基づいて、ユーザデータ領域52Aの複数のブロックA1〜Anへのユーザデータの記憶制御を行う。ここで、制御部60は、ユーザデータの記憶制御をブロック単位で行う。
具体的には、制御部60は、ユーザデータ領域52Aに対して、新たにユーザデータを記憶させる場合に、アドレス記憶部521Bに記憶されたアドレスより大きいアドレスが付されたユーザデータ領域52Aのブロックにユーザデータを記憶させる。その後、制御部60は、当該ブロックに付されたアドレスをアドレス記憶部521Bに記憶させる。
【0032】
このようにして、制御部60は、アドレス記憶部521Bに記憶されている最後に記憶されたアドレスより大きいアドレスを有するユーザデータ領域52Aのブロックに対して、新たにユーザデータを記憶させる。すなわち、制御部60は、アドレス記憶部521Bに記憶されているアドレスに基づいて、ユーザデータ領域52Aの複数のブロックそれぞれに対してアドレスが小さい順にユーザデータを記憶させることで、ユーザデータ領域52Aの複数のブロックの使用頻度を平準化することができる。
よって、ユーザデータ領域52Aの全ブロックのアドレスを参照することなく、迅速なウェアレベリングを実現することができる。
【0033】
また、制御部60は、ユーザデータ領域52Aに対して、新たにユーザデータを記憶させる場合に、アドレス記憶部521Bに記憶されたアドレスより1つ大きいアドレスが付されたユーザデータ領域52Aのブロックにユーザデータを記憶させる。その後、制御部60は、当該ブロックに付されたアドレスをアドレス記憶部521Bに記憶させる。
【0034】
このようにして、制御部60は、新たにユーザデータが記憶される場合に、アドレス記憶部521Bに記憶されている最後に記憶されたアドレスより1つ大きいアドレスを有するユーザデータ領域52Aのブロックに対して、新たにユーザデータを記憶させる。よって、制御部60は、ユーザデータ領域52Aの複数のブロックに対して、アドレス順にユーザデータを記憶させるので、ユーザデータ領域52Aの複数のブロックの使用頻度を平準化することができる。
【0035】
また、管理データ領域52Bは、図3に示すように、複数のブロックB1〜Bmそれぞれに、管理データとしてシーケンス番号を記憶するシーケンス番号記憶部522Bを備える。このシーケンス番号は、ブロックに記憶されている管理データが更新された順番を示すものである。
【0036】
また、管理データ領域52Bは、図3に示すように、複数のブロックB1〜Bmそれぞれに、複数のユーザデータそれぞれについて、ユーザデータのデータ名と、ユーザデータが記憶されているブロックのアドレスとを関連付けて、管理データとして記憶するデータマップ記憶部523Bを備える。
【0037】
また、制御部60は、新たにユーザデータを記憶させる場合、シーケンス番号記憶部522Bを参照して、複数のブロックB1〜Bmから、最も大きいシーケンス番号が記憶されているブロックのアドレス記憶部521Bを参照して、最後に記憶されたユーザデータ領域52Aのブロックのアドレスを特定する。
【0038】
続いて、制御部60は、特定されたユーザデータ領域52Aのブロックのアドレスより1つ大きいアドレスが、データマップ記憶部523Bに記憶されていない場合、この1つ大きいアドレスのブロックに、新たにユーザデータを記憶させる。
また、制御部60は、特定されたユーザデータ領域52Aのブロックのアドレスより1つ大きいアドレスが、データマップ記憶部523Bに記憶されている場合、データマップ記憶部523Bに記憶されていないアドレスを特定するまで、この1つ大きいアドレスに1つずつアドレスを加算し、アドレスが特定された場合に、この特定されたアドレスのブロックにユーザデータを記憶させる。
【0039】
続いて、制御部60は、最も大きいシーケンス番号が記憶されているブロックのアドレスより1つ大きいアドレスのブロックのアドレス記憶部521Bに、新たにユーザデータを記憶させるブロックのアドレスを記憶させる。また、制御部60は、最も大きいシーケンス番号が記憶されているブロックのデータマップ記憶部523Bのデータマップを抽出する。そして、制御部60は、このデータマップに、新たに記憶されたユーザデータが記憶されたブロックアドレスと、ユーザデータ名とを対応付けた情報を反映させて、最も大きいシーケンス番号が記憶されているブロックのアドレスより1つ大きいアドレスのブロックのデータマップ記憶部523Bに記憶させる。続いて、制御部60は、最も大きいシーケンス番号が記憶されているブロックのアドレスより1つ大きいアドレスのブロックのシーケンス番号記憶部522Bに、最も大きいシーケンス番号より1つ大きいシーケンス番号を記憶させる。
【0040】
このようにして、制御部60は、データマップ記憶部523Bに記憶されていないアドレスのブロックにユーザデータを記憶させる。よって、制御部60は、データマップに記憶されているユーザデータ、すなわち、比較的新しく記憶されているユーザデータを更新することなく、新たにユーザデータを記憶させることができる。
また、制御部60は、データマップ記憶部523Bを複数のブロックそれぞれに備えているので、管理データ領域52Bのブロック数mよりも、ユーザデータ領域52Aのブロック数nが大きい場合、最大で、n−m回前にユーザデータが記憶された状態まで、ユーザデータを戻すことが可能になる。
【0041】
また、管理データ領域52Bは、シーケンス番号記憶部522Bのシーケンス番号が大きいブロックから順に新しい管理データを記憶する。よって、制御部60は、シーケンス番号により管理データの新旧に係る情報を管理できる。
【0042】
また、制御部60は、データマップを管理データ領域52Bに記憶させてから、シーケンス番号の更新を行う。よって、制御部60は、ユーザデータ領域ユーザデータの更新中に電源断等により、管理データ領域52Bへの記憶が中断した場合であっても、最も大きいシーケンス番号が記憶されているブロックを参照することで、ユーザデータの整合性が取れているデータマップを参照することができる。
【0043】
また、制御部60は、ユーザデータ領域52Aに、アドレス記憶部521Bに記憶されたアドレスより1つ大きいアドレスのブロックが存在しない場合、データマップ記憶部523Bに記憶されていないアドレスを特定するまで、ユーザデータ領域52Aの先頭アドレスに1つずつアドレスを加算してブロックを検索し、アドレスが特定された場合に、この特定されたアドレスのブロックに新たにユーザデータを記憶させる。
【0044】
また、制御部60は、管理データ領域52Bに、最も大きいシーケンス番号が記憶されているブロックのアドレスより1つ大きいアドレスが存在しない場合、管理データ領域62Bの先頭アドレスのブロックのアドレス記憶部521Bに、新たにユーザデータを記憶させるブロックのアドレスを記憶させる。また、制御部60は、管理データ領域62Bの先頭アドレスのブロックのデータマップ記憶部523Bに、新たに記憶されたユーザデータ名と、このユーザデータが記憶されたブロックアドレスとを対応付けた情報を反映させたデータマップを記憶させる。続いて、制御部60は、管理データ領域62Bの先頭アドレスのブロックのシーケンス番号記憶部522Bに、最も大きいシーケンス番号より1つ大きいシーケンス番号を記憶させる。
【0045】
このようにして、制御部60は、新たにユーザデータが記憶される場合に、ユーザデータ領域52Aに循環的にユーザデータを記憶させるので、ユーザデータ領域52Aのブロックに複数回ユーザデータを記憶させる場合でも、これら複数のブロックの使用頻度を平準化することができる。
また、制御部60は、新たにユーザデータが記憶される場合に、管理データ領域52Bに循環的に管理データを記憶させるので、管理データ領域52Bのブロックに複数回管理データを記憶させる場合でも、これら複数のブロックの使用頻度を平準化することができる。
【0046】
続いて、携帯電話装置1により、最も大きいシーケンス番号が記憶されているブロックのアドレスを特定する処理について、図4に示すフローチャートを参照して説明する。
【0047】
ステップS1において、制御部60は、最大のシーケンス番号Y’を0とする。
ステップS2において、制御部60は、シーケンス番号記憶部522Bのシーケンス番号Yを読み込む。
【0048】
ステップS3において、制御部60は、読み込まれたシーケンス番号Yが最大のシーケンス番号Y’より大きいか否かを判定する。制御部60は、この判定がYESの場合、処理をステップS14に移し、NOの場合、ステップS14に続く、繰り返しの判定処理に処理を移す。
【0049】
ステップS4において、制御部60は、最大のシーケンス番号Y’を、シーケンス番号Yとする。
制御部60は、繰り返しの判定処理を実行する。具体的には、制御部60は、ステップS2からステップS4までの処理を、管理データ領域52Bの先頭ブロックから最後のブロックまで、繰り返し実行する。
【0050】
ステップS5において、制御部60は、シーケンス番号Y’のブロックを使用するブロックとする。具体的には、制御部60は、シーケンス番号Y’が記憶されている管理データ領域52Bのブロックを、最も大きいシーケンス番号が記憶されている管理データ領域52Bのブロックとする。
【0051】
続いて、携帯電話装置1により、新たにユーザデータを記憶するブロックのアドレスを決定する処理について、図5に示すフローチャートを参照して説明する。
ステップS11において、制御部60は、最も大きいシーケンス番号が記憶されている管理データ領域52Bのブロックを参照して、最後に記憶されたユーザデータ領域52AのブロックのアドレスXを特定する。そして、制御部60は、新たにユーザデータを記憶するブロックのアドレスの候補であるアドレスX’を、アドレスXに1加算したアドレスとする。
【0052】
ステップS12において、制御部60は、アドレスX’がユーザデータ領域52Aに対応するアドレスの範囲外か否かを判定する。制御部60は、この判定がYESの場合、処理をステップS13に移し、NOの場合、処理をステップS14に移す。
【0053】
ステップS13において、制御部60は、ユーザデータ領域52Aの先頭アドレスをアドレスX’とする。
【0054】
ステップS14において、制御部60は、最も大きいシーケンス番号が記憶されている管理データ領域52Bのブロックに記憶されているデータマップ記憶部523Bを参照して、アドレスX’がこのデータマップ記憶部523Bに存在するか否かを判定する。制御部60は、この判定がYESの場合、処理をステップS11に移し、NOの場合、処理をステップS15に移す。
【0055】
ステップS15において、制御部60は、新たにユーザデータを記憶するブロックのアドレスをアドレスX’に決定する。
【0056】
続いて、図6を用いて、新たにユーザデータが記憶される様子について説明する。
図6は、ユーザデータA、B、Cが既にユーザデータ領域52Aに記憶されている状態から、ユーザデータA、B、C、Aの順にデータが更新される場合におけるユーザデータ領域52Aと管理データ領域52Bの状態を示す図である。なお、図6のそれぞれの状態において、新た(最後)に記憶されたデータ、更新されたデータには、下線を付している。なお、本説明では、ユーザデータ領域52Aは、アドレスが「103」のブロックA1、アドレスが「104」のブロックA2、アドレスが「105」のブロックA3、アドレスが「106」のブロックA4、アドレスが「107」のブロックA5を備えるものとする。また、管理データ領域52Bは、アドレスが「100」のブロックB1、アドレスが「101」のブロックB2、アドレスが「102」のブロックB3を備えるものとする。
【0057】
図6において、状態1は、ユーザデータA、B、Cが既にユーザデータ領域52Aに記憶されている状態である。
状態1において、ユーザデータ領域52Aのアドレス「103」、「104」、「105」のブロックには、それぞれユーザデータA、B、Cが記憶されている。また、ユーザデータ領域52Aのアドレス「106」、「107」には、ユーザデータが記憶されていない。また、ユーザデータ領域52Aに最後に記憶されたユーザデータは、ユーザデータCである。
【0058】
状態1において、管理データ領域52Bのアドレス「100」、「101」、「102」のブロック内のシーケンス番号記憶部522Bには、それぞれシーケンス番号「1」、「2」、「3」、が記憶されている。つまり、最も大きいシーケンス番号が記憶されている管理データ領域52Bのブロックのアドレスは、「102」である。なお、図6では、アドレス「100」のブロックB1、アドレス「101」のブロックB2、アドレス「102」のブロックB3には、それぞれシーケンス番号のみ記載しているが、これらのブロックには、シーケンス番号以外の情報も記憶されている。
【0059】
アドレス「102」のブロックのアドレス記憶部521Bには、最も新しく記憶されたユーザデータが記憶されているユーザデータ領域52Aのブロックに付されているアドレスとして、「105」が記憶されている。
また、アドレス「102」のブロックのデータマップ記憶部523Bには、ユーザデータのデータ名と、ユーザデータが記憶されているブロックのアドレスとが関連付けて記憶されている。
【0060】
状態1において、ユーザデータAが更新等により新たに記憶される場合、制御部60は、最も大きいシーケンス番号が記憶されている管理データ領域52Bのアドレス「102」のブロックB3を参照して、最後に記憶されたユーザデータ領域52Aのブロックのアドレスが「105」であることを特定する。続いて、制御部60は、「105」に1加算したアドレス「106」を、新たにユーザデータを記憶するブロックのアドレスの候補であるアドレスX’とする。続いて、制御部60は、アドレスX’(106)がユーザデータ領域52Aに存在するか否かを判定する。本実施例では、アドレス「106」のブロックA4がユーザデータ領域52Aに存在するので、制御部60は、アドレスX’(106)がユーザデータ領域52Aに存在すると判定する。当該判定の後、制御部60は、アドレス「102」のブロックB3のデータマップ記憶部523BにアドレスX’(106)が存在しないか否かを判定する。本実施例では、ブロックB3内のデータマップ記憶部523Bには、アドレス「106」は記憶されていないので、制御部60は、アドレスX’(106)がデータマップ記憶部523Bに存在しないと判定する。続いて、制御部60は、新たにユーザデータAを記憶するブロックのアドレスをアドレスX’、すなわち、「106」に決定し、このアドレス「106」のブロックA4にユーザデータAを記憶させる。さらに、制御部60は、アドレス「100」のブロックB1のアドレス記憶部521Bに、アドレス「106」を記憶させるとともに、アドレス「100」のブロックB1のデータマップ記憶部523Bの情報を更新する。具体的には、制御部60は、ブロックB3のデータマップ記憶部523BのユーザデータAに係る情報をユーザデータAがアドレス「106」のブロックA4に記憶されているという情報に更新したデータマップを、ブロックB1のデータマップ記憶部523Bに記憶させる。続いて、制御部60は、アドレス「100」のブロックB1のシーケンス番号記憶部522Bに、アドレス「102」のブロックB3のシーケンス番号「3」よりも1つ大きいシーケンス番号「4」を記憶させる。このようにして、ユーザデータ領域51A及び管理データ領域52Bの状態は、状態2となる。
【0061】
状態2において、ユーザデータBが更新等により新たに記憶される場合、制御部60は、最も大きいシーケンス番号が記憶されている管理データ領域52Bのアドレス「100」のブロックB1を参照して、最後に記憶されたユーザデータ領域52Aのブロックのアドレスが「106」であることを特定する。続いて、制御部60は、「106」に1加算したアドレス「107」を、新たにユーザデータを記憶するブロックのアドレスの候補であるアドレスX’とする。続いて、制御部60は、アドレスX’(107)がユーザデータ領域52Aに存在するか否かを判定する。本実施例では、アドレス「107」のブロックA5がユーザデータ領域52Aに存在するので、制御部60は、アドレスX’(107)がユーザデータ領域52Aに存在すると判定する。当該判定の後、制御部60は、アドレス「100」のブロックB1のデータマップ記憶部523BにアドレスX’(107)が存在しないか否かを判定する。本実施例では、ブロックB1内のデータマップ記憶部523Bには、アドレス「107」は記憶されていないので、制御部60は、アドレスX’(107)がデータマップ記憶部523Bに存在しないと判定する。続いて、制御部60は、新たにユーザデータBを記憶するブロックのアドレスをアドレスX’、すなわち、「107」に決定し、このアドレス「107」のブロックA5にユーザデータBを記憶させる。さらに、制御部60は、アドレス「101」のブロックB2のアドレス記憶部521Bに、アドレス「107」を記憶させるとともに、アドレス「101」のブロックB2のデータマップ記憶部523Bの情報を更新する。具体的には、制御部60は、ブロックB1のデータマップ記憶部523BのユーザデータBに係る情報をユーザデータBがアドレス「107」のブロックA5に記憶されているという情報に更新したデータマップを、ブロックB2のデータマップ記憶部523Bに記憶させる。続いて、制御部60は、アドレス「101」のブロックB2のシーケンス番号記憶部522Bに、アドレス「100」のブロックB1のシーケンス番号「4」よりも1つ大きいシーケンス番号「5」を記憶させる。このようにして、ユーザデータ領域51A及び管理データ領域52Bの状態は、状態3となる。
【0062】
状態3において、ユーザデータCが更新等により新たに記憶される場合、制御部60は、最も大きいシーケンス番号が記憶されている管理データ領域52Bのアドレス「101」のブロックB2を参照して、最後に記憶されたユーザデータ領域52Aのブロックのアドレスが「107」であることを特定する。続いて、制御部60は、「107」に1加算したアドレス「108」を、新たにユーザデータを記憶するブロックのアドレスの候補であるアドレスX’とする。続いて、制御部60は、アドレスX’(108)がユーザデータ領域52Aに存在するか否かを判定する。本実施例では、アドレス「108」のブロックがユーザデータ領域52Aに存在しないので、制御部60は、アドレスX’(108)がユーザデータ領域52Aに存在しないと判定する。当該判定の後、制御部60は、アドレスX’をユーザデータ領域52Aの先頭アドレス「103」にする。続いて、制御部60は、アドレス「101」のブロックB2のデータマップ記憶部523BにアドレスX’(103)が存在しないか否かを判定する。本実施例では、ブロックB2内のデータマップ記憶部523Bには、アドレス「103」は記憶されていないので、制御部60は、アドレスX’(103)がデータマップ記憶部523Bに存在しないと判定する。続いて、制御部60は、新たにユーザデータCを記憶するブロックのアドレスをアドレスX’、すなわち、「103」に決定し、このアドレス「103」のブロックA1にユーザデータCを記憶させる。さらに、制御部60は、アドレス「102」のブロックB3のアドレス記憶部521Bに、アドレス「103」を記憶させるとともに、アドレス「102」のブロックB3のデータマップ記憶部523Bの情報を更新する。具体的には、制御部60は、ブロックB2のデータマップ記憶部523BのユーザデータCに係る情報をユーザデータCがアドレス「103」のブロックA1に記憶されているという情報に更新したデータマップを、ブロックB3のデータマップ記憶部523Bに記憶させる。続いて、制御部60は、アドレス「102」のブロックB3のシーケンス番号記憶部522Bに、アドレス「101」のブロックB2のシーケンス番号「5」よりも1つ大きいシーケンス番号「6」を記憶させる。このようにして、ユーザデータ領域51A及び管理データ領域52Bの状態は、状態4となる。
【0063】
状態4において、ユーザデータAが更新等により新たに記憶される場合、制御部60は、最も大きいシーケンス番号が記憶されている管理データ領域52Bのアドレス「102」のブロックB3を参照して、最後に記憶されたユーザデータ領域52Aのブロックのアドレスが「103」であることを特定する。続いて、制御部60は、「103」に1加算したアドレス「104」を、新たにユーザデータを記憶するブロックのアドレスの候補であるアドレスX’とする。続いて、制御部60は、アドレスX’(104)がユーザデータ領域52Aに存在するか否かを判定する。本実施例では、アドレス「104」のブロックA2がユーザデータ領域52Aに存在するので、制御部60は、アドレスX’(104)がユーザデータ領域52Aに存在すると判定する。当該判定の後、制御部60は、アドレス「102」のブロックB3のデータマップ記憶部523BにアドレスX’(104)が存在しないか否かを判定する。本実施例では、ブロックB3内のデータマップ記憶部523Bには、アドレス「104」は記憶されていないので、制御部60は、アドレスX’(104)がデータマップ記憶部523Bに存在しないと判定する。続いて、制御部60は、新たにユーザデータAを記憶するブロックのアドレスをアドレスX’、すなわち、「104」に決定し、このアドレス「104」のブロックA2にユーザデータAを記憶させる。さらに、制御部60は、アドレス「100」のブロックB1のアドレス記憶部521Bに、アドレス「104」を記憶させるとともに、アドレス「100」のブロックB1のデータマップ記憶部523Bの情報を更新する。具体的には、制御部60は、ブロックB3のデータマップ記憶部523BのユーザデータAに係る情報をユーザデータAがアドレス「104」のブロックA2に記憶されているという情報に更新したデータマップを、ブロックB1のデータマップ記憶部523Bに記憶させる。続いて、制御部60は、アドレス「100」のブロックB1のシーケンス番号記憶部522Bに、アドレス「102」のブロックB3のシーケンス番号「6」よりも1つ大きいシーケンス番号「7」を記憶させる。このようにして、ユーザデータ領域51A及び管理データ領域52Bの状態は、状態5となる。
【0064】
このようにして、制御部60は、新たにユーザデータが記憶される場合に、ユーザデータ領域52Aに循環的にユーザデータを記憶させるので、ユーザデータ領域52Aのブロックに複数回ユーザデータを記憶させる場合でも、これら複数のブロックの使用頻度を平準化することができる。
【0065】
以上、好適な実施形態について説明したが、本発明は前述した実施形態に限定されることなく種々の形態で実施することができる。また、前述の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、前述のものに限定されない。
【0066】
なお、本実施形態においては、制御部60は、新たにユーザデータをユーザデータ領域52Aに記憶させる場合、ユーザデータを、アドレス「103」、「104」、「105」・・・のように、アドレスが小さいブロックから大きくなる順に書き込むこととしているが、これに限らない。すなわち、制御部60は、新たにユーザデータをユーザデータ領域52Aに記憶させる場合、ユーザデータを、アドレス「105」、「104」、「103」・・・のように、アドレスが大きいブロックから小さくなる順に書き込むこととしてもよい。この場合、アドレスが小さいユーザデータ領域52Aのブロックから順に書き込む場合と同様の効果を得られることはいうまでもない。なお、アドレスが大きいブロックから小さくなる順に書き込む場合、新たにユーザデータを記憶するブロックのアドレスの候補であるアドレスX’の特定は、アドレス記憶部521Bに記憶されたアドレスより小さいアドレスのブロックのうち、大きいブロックから順に検索することにより実現される。
【符号の説明】
【0067】
1 携帯電話装置
52 不揮発性メモリ
52A ユーザデータ領域
52B 管理データ領域
521B アドレス記憶部
522B シーケンス番号記憶部
523B データマップ記憶部

【特許請求の範囲】
【請求項1】
アドレスが付されたブロックを複数有し、当該複数のブロックに当該ブロックの数よりも少ない数のユーザデータを記憶するユーザデータ領域と、
前記ユーザデータ領域への前記ユーザデータの記憶を制御するデータを含む管理データを記憶する管理データ領域と、
前記管理データに基づいて、前記ユーザデータ領域の複数のブロックへの前記ユーザデータの記憶制御を行う制御部と、を備え、
前記管理データ領域は、前記制御部により最も新しく記憶されたユーザデータが記憶されている前記ユーザデータ領域のブロックに付されているアドレスを前記管理データとして記憶するアドレス記憶部を有し、
前記制御部は、新たにユーザデータを記憶させる場合、前記アドレス記憶部に記憶されたアドレスより大きいアドレスが付された前記ユーザデータ領域のブロックに前記ユーザデータを記憶させた後、当該ブロックに付されたアドレスを前記アドレス記憶部に記憶させる記憶装置。
【請求項2】
請求項1に記載の記憶装置であって、
前記制御部は、新たにユーザデータを記憶させる場合、前記アドレス記憶部に記憶されたアドレスより1つ大きいアドレスが付された前記ユーザデータ領域のブロックに前記ユーザデータを記憶させた後、当該ブロックに付されたアドレスを前記アドレス記憶部に記憶させる記憶装置。
【請求項3】
請求項1又は2に記載の記憶装置であって、
前記管理データ領域は、ブロックを複数有し、当該複数のブロックに前記管理データを記憶する記憶装置。
【請求項4】
請求項2に記載の記憶装置であって、
前記管理データ領域は、複数の前記ユーザデータそれぞれについて、当該ユーザデータのデータ名と、当該ユーザデータが記憶されているブロックのアドレスとを関連付けて、前記管理データとして記憶するデータマップ記憶部を有し、
前記制御部は、新たにユーザデータを記憶させる場合、
前記アドレス記憶部に記憶されたアドレスより1つ大きいアドレスが前記データマップ記憶部に記憶されていないときに、当該1つ大きいアドレスのブロックに当該ユーザデータを記憶させ、
前記アドレス記憶部に記憶されたアドレスより1つ大きいアドレスが前記データマップ記憶部に記憶されているときに、前記データマップ記憶部に記憶されていないアドレスを特定するまで、当該1つ大きいアドレスに1つずつアドレスを加算し、アドレスが特定された場合に、当該特定されたアドレスのブロックに当該ユーザデータを記憶させる記憶装置。
【請求項5】
請求項4に記載の記憶装置であって、
前記制御部は、前記ユーザデータ領域に、前記アドレス記憶部に記憶されたアドレスより1つ大きいアドレスのブロックが存在しない場合、前記データマップ記憶部に記憶されていないアドレスを特定するまで、当該ユーザデータ領域の先頭アドレスに1つずつアドレスを加算し、アドレスが特定された場合に、当該特定されたアドレスのブロックに新たにユーザデータを記憶させる記憶装置。
【請求項6】
アドレスが付されたブロックを複数有し、当該複数のブロックに当該ブロックの数よりも少ない数のユーザデータを記憶するユーザデータ領域と、
前記ユーザデータ領域への前記ユーザデータの記憶を制御するデータを含む管理データを記憶する管理データ領域と、
前記管理データに基づいて、前記ユーザデータ領域の複数のブロックへの前記ユーザデータの記憶制御を行う制御部と、を備え、
前記管理データ領域は、前記制御部により最も新しく記憶されたユーザデータが記憶されている前記ユーザデータ領域のブロックに付されているアドレスを前記管理データとして記憶するアドレス記憶部を有し、
前記制御部は、新たにユーザデータを記憶させる場合、前記アドレス記憶部に記憶されたアドレスより小さいアドレスが付された前記ユーザデータ領域のブロックに前記ユーザデータを記憶させた後、当該ブロックに付されたアドレスを前記アドレス記憶部に記憶させる記憶装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate