(57)【要約】【課題】不揮発性メモリ内のデータの正常化を効果的に図ることができるメモリ制御装置を提供する。【解決手段】携帯電話機は、ＮＡＮＤ型のＥＥＰＲＯＭ２０１と、ＥＥＰＲＯＭ２０１からデータの読み出すメモリコントローラ３０１と、読み出したデータに対してエラー訂正処理を行うＥＣＣ回路３０２と、ＥＣＣ回路３０２によりエラー訂正がなされた物理ブロック２０１ａ内の全データを正常なデータに書き換える書換え処理部１００ａとを備えている。【選択図】図３
2010277286.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに対してデータの読み出しおよび書き込みを行うメモリ制御装置において、
前記不揮発性メモリからデータを読み出す読出し部と、
読み出したデータに対してエラー訂正処理を行う訂正部と、
前記訂正部によりエラー訂正がなされた前記不揮発性メモリ内のデータを正常なデータに書き換える書換え部と、
を備えたことを特徴とするメモリ制御装置。
【請求項２】
請求項１に記載のメモリ制御装置において、
前記書換え部は、前記正常なデータとして前記訂正部により訂正されたデータを用いる、
ことを特徴とするメモリ制御装置。   
【請求項３】
請求項１に記載のメモリ制御装置において、
前記書換え部は、通信網を介して前記正常なデータを取得する処理を実行する、
ことを特徴とするメモリ制御装置。
【請求項４】
請求項２に記載のメモリ制御装置において、
前記書換え部は、前記訂正部により訂正されたデータを用いることができるか否かを判別し、訂正されたデータを用いることができれば、当該訂正されたデータを前記正常なデータとして用い、訂正されたデータを用いることができなければ、通信網を介して前記正常なデータを取得する処理を実行する、
ことを特徴とするメモリ制御装置。
【請求項５】
請求項１ないし４の何れか一項に記載のメモリ制御装置において、
前記不揮発性メモリから読み出されていない期間が所定の期間を超えるデータを検出するデータ検出部をさらに備え、
前記データ検出部によって検出されたデータに対し、前記読出し部、前記訂正部および前記書換え部による処理が実行される、
ことを特徴とするメモリ制御装置。
【請求項６】
請求項１ないし５の何れか一項に記載のメモリ制御装置と、
前記メモリ制御装置によりデータの読み出しおよび書き込みが行われる不揮発性メモリと、
を備えたことを特徴とする携帯端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに対してデータの読み出しおよび書き込みを行うメモリ制御装置、および当該メモリ制御装置を備えた携帯電話機、ＰＤＡ（Personal Digital Assistant）等の携帯端末装置に関する。
【背景技術】
【０００２】
携帯電話機等の携帯端末装置では、制御プログラムや他のデータを保持するために、不揮発性メモリが使用されている。不揮発性メモリに対するデータの読み出しおよび書き込みはメモリ制御装置によって実行される。
【０００３】
不揮発性メモリでは、長時間データの読み出しが行われない場合に、あるいは、読み出しおよび書き込み（リード・ライト）が繰り返されるうちに、メモリ内のデータが変化したり破損したりする惧れがある。
【０００４】
このため、メモリ制御装置においては、不揮発性メモリからデータを読み出した際にデータに誤り（リードエラー）があれば、ＥＣＣ機能（Error Correcting Code）によってエラー訂正を行い、データを修復するようにしている。しかし、この時点において、不揮発性メモリ内のデータの修復は行われない。
【０００５】
そこで、上記のようなメモリ制御装置では、予めデータのリード回数を設定し、そのリード回数になると、不揮発性メモリ内の対象となるデータを書き換える構成が取られ得る。この場合、リード回数に達したデータを不揮発性メモリから一旦削除し、正常なデータを再び書き込む制御が行われる（特許文献１参照）。これにより、不揮発性メモリ内のデータの正常化が図られるため、メモリ内でのエラーが拡大することによってＥＣＣ機能より訂正できないリードエラーが発生してしまう、ということが抑制され得る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−９９２００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記構成のように、リードエラーの発生状況によらずに、リード回数に応じて画一的にデータの書き換えを行う場合には、リード回数が設定回数に到達するまでに生じたエラーを適正に正常化することができない。
【０００８】
本発明は、かかる課題に鑑みてなされたものであり、不揮発性メモリ内のデータの正常化を効果的に図ることができるメモリ制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の態様は、不揮発性メモリに対してデータの読み出しおよび書き込みを行うメモリ制御装置に関する。本態様に係るメモリ制御装置は、前記不揮発性メモリからデータを読み出す読出し部と、読み出したデータに対してエラー訂正処理を行う訂正部と、前記訂正部によりエラー訂正がなされた前記不揮発性メモリ内のデータを正常なデータに書き換える書換え部とを備える。
【００１０】
本発明の第２の態様は、携帯端末装置に関する。本態様に係る携帯端末装置は、上記第１の態様に係るメモリ制御装置と、前記メモリ制御装置によりデータの読み出しおよび書き込みが行われる不揮発性メモリとを備える。
【発明の効果】
【００１１】
本発明によれば、不揮発性メモリ内のデータの正常化を効果的に図ることができるメモリ制御装置を提供することができる。
【００１２】
本発明の効果ないし意義は、以下に示す実施の形態の説明により更に明らかとなろう。ただし、以下の実施の形態は、あくまでも、本発明を実施化する際の一つの例示であって、本発明は、以下の実施の形態に記載されたものに何ら制限されるものではない。
【図面の簡単な説明】
【００１３】
【図１】実施の形態に係る携帯電話機の外観構成を示す。
【図２】実施の形態に係る携帯電話機の全体構成を示すブロック図である。
【図３】実施の形態に係る省電力制御のフローチャートである。
【図４】実施の形態に係るＣＰＵ、メモリおよびメモリ制御回路の構成を示す。
【図５】実施の形態に係るＥＥＰＲＯＭの構成を示す。
【図６】実施の形態に係るデータ書換え処理について説明するための図である。
【図７】実施の形態に係るデータ書換え処理の変更例を示すフローチャートである。
【図８】実施の形態に係るデータ書換え処理の変更例を示すフローチャートである。
【図９】実施の形態に係るデータ検出処理について説明するための図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、各図面を参照して説明する。図１は携帯電話機の外観構成を示す。同図（ａ）は、第２キャビネットが開放した状態の携帯電話機の正面図、同図（ｂ）は同じ状態での側面図である。また、同図（ｃ）は同図（ｂ）のＡ−Ａ´断面図である。
【００１５】
携帯電話機は、第１キャビネット１と第２キャビネット２を備えている。第１キャビネット１には、キー入力部３が配されている。キー入力部３は、機器への各種の操作入力を検出する。
【００１６】
第１キャビネット１の上面には、キー入力部３を構成する操作キー群３ａが配されている。操作キー群３ａは、４個のメインキー３１と、方向キー３２と、決定キー３３と、１２個のテンキー３４によって構成されている。なお、キー入力部３は、後述するキー入力回路３５、キーバックライト３６（図２参照）をさらに備えている。
【００１７】
メインキー３１は、各種機能モード（カメラ撮影モード、メール送受信モード、インターネットモード、ミュージックモードなど）のアプリケーションを起動するためのキーや電話による通話開始、終了を行うためのキーである。方向キー３２は、表示画面に表示された各種メニューから所望のメニューを選択する際に操作されるキーであり、決定キー３３は選択されたメニューの決定等を行うためのキーである。テンキー３４は、文字（ひらがな、カタカナ、アルファベット）や数字、記号の入力を行うためのキーである。なお、テンキー３４の一部を、ＱＷＥＲＴＹキー等で構成してもよい。
【００１８】
第２キャビネット２にはディスプレイ２１が配されている。ディスプレイ２１は、後述のように液晶パネルと液晶パネルを照明するパネルバックライトにより構成されている。なお、ディスプレイ２１は、有機ＥＬにより構成されてもよい。ディスプレイ２１の表示画面側には、タッチセンサ２２が配されている。タッチセンサ２２は透明なシート状を有しており、タッチセンサ２２を透してディスプレイ２１の表示画面を見ることができる。
【００１９】
タッチセンサ２２は、マトリクス状に配された第１透明電極と第２透明電極とを備え、これら透明電極間の静電容量の変化を検出することによって、ユーザに触られた表示画面上の位置を検出し、その位置に応じた位置信号を出力する。なお、タッチセンサ２２は、静電容量式のタッチセンサに限られず、抵抗膜方式、感圧式等のタッチセンサであってもよい。
【００２０】
第２キャビネット２は、スライド機構部４によって、第１キャビネット１に対し図１のＸ軸方向にスライド可能に連結されている。図１（ｃ）に示すように、スライド機構部４は、ガイド板４１とガイド溝４２によって構成されている。ガイド板４１は、第２キャビネット２の背面の左右両端部に設けられており、その下端に突条４１ａを有する。ガイド溝４２は、第１キャビネット１の側面に、スライド方向（図１のＸ軸方向）に沿って形成されている。ガイド板４１の突条４１ａは、ガイド溝４２に係合されている。
【００２１】
携帯電話機を閉じた状態では、図１（ｂ）に一点鎖線で示すように、第２キャビネット２が第１キャビネット１の上に略完全に重なっている。この状態（閉じた状態）では、第２キャビネット２の背後に操作キー群３ａの全てのキーが隠れた状態となる。第２キャビネット２は、ガイド板４１がガイド溝４２の終端位置に達するまでスライドする（開いた状態とする）ことができる。第２キャビネット２が完全に開くと、図１（ａ）に示すように、操作キー群３ａの全てのキーが外部に露出する。
【００２２】
全てのキーが隠れた状態において、携帯電話機への操作入力は、タッチパネル２２により行うことができる。このとき、ディスプレイ２１の表示画面上には、所定の位置にソフトキーの画像が表示される。
【００２３】
図２は、携帯電話機の全体構成を示すブロック図である。本実施の形態の携帯電話機は、上述した各構成要素の他、ＣＰＵ１００、メモリ２００、メモリ制御回路３００、カメラモジュール４０１、映像エンコーダ４０２、マイク４０３、音声エンコーダ４０４、キー入力回路３５、通信モジュール４０５、バックライト駆動回路４０６、キーバックライト３６、映像デコーダ４０７、音声デコーダ４０８、通話スピーカ４０９、外部スピーカ４１０を備えている。
【００２４】
カメラモジュール４０１は、ＣＣＤ等の撮像素子を有し、取り込んだ画像に応じた撮像信号を生成し、映像エンコーダ４０２へ出力する。映像エンコーダ４０２は、カメラモジュール４０１からの撮像信号を、ＣＰＵ１００が処理できるデジタルの撮像信号に変換してＣＰＵ１００へ出力する。
【００２５】
マイク４０３は、音声信号を電気信号に変換して音声エンコーダ４０４へ出力する。音声エンコーダ４０４は、マイク４０３からの音声信号を、ＣＰＵ１００が処理できるデジタルの音声信号に変換してＣＰＵ１００へ出力する。
【００２６】
キー入力回路３５は、操作キー群３ａの各キーが押されたときに、各キーに応じた入力信号をＣＰＵ１００へ出力する。
【００２７】
通信モジュール４０５は、ＣＰＵ１００からの音声信号や画像信号、テキスト信号などを無線信号に変換し、アンテナ４０５ａを介して基地局へ送信する。また、アンテナ４０５ａを介して受信した無線信号を音声信号や画像信号、テキスト信号などに変換してＣＰＵ１００へ出力する。
【００２８】
キーバックライト３６は、操作キー群３ａの個々のキーを照明する。ディスプレイ２１は、液晶パネル２１ａと、液晶パネル２１ａに光を供給するパネルバックライト２１ｂとを備えている。
【００２９】
バックライト駆動回路４０６は、ＣＰＵ１００からの制御信号に応じた電圧信号をキーバックライト３６およびパネルバックライト２１ｂに供給する。映像デコーダ４０７は、ＣＰＵ１００からの映像信号を液晶パネル２１ａで表示できるアナログの映像信号に変換し、液晶パネル２１ａに出力する。
【００３０】
音声デコーダ４０８は、ＣＰＵ１００からの音声信号を通話スピーカ４０９で出力できるアナログの音声信号に変換し、通話スピーカ４０９に出力する。また、音声デコーダ４０８は、ＣＰＵ１００からの着信音、アラーム音等の各種報知音の音信号を外部スピーカ４１０で出力できるアナログの音信号に変換し、外部スピーカ４１０へ出力する。通話スピーカ４０９は、音声デコーダ４０８からの音声信号を音声として再生する。外部スピーカ４１０は、音声デコーダ４０８からの着信音等を再生する。
【００３１】
メモリ２００には、ＣＰＵ１００に制御機能を付与するための制御プログラムが記憶されている。また、メモリ２００には、カメラモジュール４０１で撮影した画像データや通信モジュール４０５を介して外部から取り込んだ画像データ、テキストデータ（メールデータ）、音楽データなどが所定のファイル形式で保存される。
【００３２】
ＣＰＵ１００は、カメラモジュール４０１、マイク４０３、キー入力回路３５、タッチセンサ２２など各部からの入力信号に基づいて、通信モジュール４０５、映像デコーダ４０７、音声デコーダ４０８などの各部に制御信号を出力することにより、通話処理や各種機能モードのアプリケーションを実行する。また、ＣＰＵ１００には、メモリ２００に記憶された制御プログラムによって、後述するデータ書換え処理を実行するための書換え処理部１００ａの機能が付与される。
【００３３】
メモリ制御回路３００は、ＣＰＵ１００の指示に従って、メモリ２００に対するデータの読み込みおよび書き込みを行う。
【００３４】
図３は、ＣＰＵ１００、メモリ２００、メモリ制御回路３００の構成部分を示す。また、図４（ａ）、（ｂ）はＥＥＰＲＯＭ２０１のエリア構成を示し、図４（ｃ）は論理物理変換テーブルの構成を示す。
【００３５】
メモリ２００は、不揮発性メモリであるＮＡＮＤ型のＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）２０１とＲＡＭ（Random Access Memory）２０２とを備えている。
【００３６】
図４（ａ）に示すように、ＥＥＰＲＯＭ２０１のメモリ領域は、複数の物理ブロック２０１ａに区分けされている。ＥＥＰＲＯＭ２０１内のデータの消去は、物理ブロック２０１ａ単位で行われる。各物理ブロック２０１ａには、たとえば、ＣＰＵ１００の制御プログラム等のプログラムデータやカメラモジュール４０１で撮った写真データ、Ｗｅｂサイトからダウンロードした音楽データ等のユーザデータが保持される。また、物理ブロック２０１ａ内のデータを書き換える際に、データを一時的に保持するため、データが記憶されていない物理ブロック２０１ａ（スペアの物理ブロック）が用意されている。各物理ブロック２０１ａには、ブロック番号（ＢＮ）が付されている。
【００３７】
図４（ｂ）に示すように、各物理ブロック２０１ａは、複数のページから構成されている。ＥＥＰＲＯＭ２０１に対するデータの読み出しおよび書き込みは、ページ単位で行われる。ページのメモリ領域は、メイン領域とサブ領域とで構成されている。プログラムデータ等は、メイン領域に保持される。
【００３８】
メモリ制御回路３００は、ＣＰＵ１００とともに、本発明のメモリ制御装置を構成する。メモリ制御回路３００は、メモリコントローラ３０１と、ＥＣＣ回路３０２とを備えている。
【００３９】
メモリコントローラ３０１は、ＣＰＵ１００からの要求により、ＥＥＰＲＯＭ２０１に対するデータの読み出し、書き込みおよび消去を行う。データ書き込みの際には、ＥＣＣ回路３０２よるＥＣＣエンコード処理が行われ、データ読み出しの際には、ＥＣＣデコード処理が行われる。
【００４０】
データ書き込みの際、書き込まれるデータは、メモリコントローラ３０１からＥＣＣ回路３０２に供給される。ＥＣＣ回路３０２は、供給されたデータをエンコードして、ページ毎にパリティビットを生成する。生成されたパリティビットは、各ページのサブ領域に保持されるよう、ＥＥＰＲＯＭ２０１に書き込まれる。
【００４１】
データ読み出しの際、各ページのデータは、ＥＥＰＲＯＭ２０１からＥＣＣ回路３０２に供給される。ＥＣＣ回路３０２は、各ページのデータに対しそのページのパリティビットを用いて誤り訂正処理を行う。そして、データ誤りがなければ、読み出しされたデータをそのままメモリコントローラ３０１に出力し、さらに、誤りがないことを示す判定信号をメモリコントローラ３０１に出力する。他方、読み出されたデータに対して誤り訂正を行うと、ＥＣＣ回路３０２は、訂正されたデータをメモリコントローラ３０１に出力し、さらに、訂正が行われたことを示す判定信号をメモリコントローラ３０１に出力する。また、読み出されたデータに対し誤り訂正を行えなかった場合、ＥＣＣ回路３０２は、読み出されたデータをメモリコントローラ３０１に出力することなしに、読み出しができなかったことを示す判定信号をメモリコントローラ３０１に出力する。
【００４２】
本実施の形態では、ＥＣＣ回路３０２により、たとえば、１ビットのエラー訂正が可能である。エラー訂正としては、たとえば、ハフマン方式のエラー訂正を行うことができる。
【００４３】
メモリコントローラ３０１は、ＥＣＣ回路３０２からデータが入力された場合には、そのデータを判定信号とともにＣＰＵ１００に出力する。また、メモリコントローラ３０１は、ＥＣＣ回路３０２からデータが入力されなかった場合には、判定信号をＣＰＵ１００に出力する。
【００４４】
メモリコントローラ３０１、ＥＣＣ回路３０２、ＥＥＰＲＯＭ２０１の三者は、ＢＵＳ５０１により接続されている。また、メモリコントローラ３０１とＣＰＵ１００は、ＢＵＳ５０２により接続されている。さらに、ＣＰＵ１００とＲＡＭ２０は、ＢＵＳ５０３により接続されている。
【００４５】
こうして、携帯電話機が起動された際には、まず、ＣＰＵ１００からメモリコントローラ３０１への要求により、ＥＥＰＲＯＭ２０１の所定の物理ブロック２０１ａから、論理物理変換テーブルのデータが読み出される。読み出された論理物理変換テーブルのデータは、ＣＰＵ１００を経由してＲＡＭ２０２に転送され、ＲＡＭ２０２に保持される。ここで、論理物理変換テーブルは、図４（ｃ）に示すように、各物理ブロック２０１ａに保持されたデータ（プログラムデータやユーザデータ）とブロック番号（ＢＮ）の対応関係を示すテーブルである。
【００４６】
その後は、適宜の読み出しタイミングになると、ＣＰＵ１００からメモリコントローラ３０１への要求により、論理物理変換テーブルに従って、所定の物理ブロック２０１ａからプログラムデータやユーザデータが読み出され、ＣＰＵ１００を経由してＲＡＭ２０２に保持される。
【００４７】
ＮＡＮＤ型の不揮発性メモリは、安価に大容量化でき、書き込みや消去も高速であるとの利点を有するため、その需要が広がっている。しかし、その反面、長時間のデータ放置やリードおよびライトの繰り返しにより、物理ブロック２０１ａ内のデータが変化したり破損したりしやすいという欠点を有している。
【００４８】
このため、本実施の形態では、ＥＥＰＲＯＭ２０１からデータが読み出された際、読み出されたデータにエラーがあれば、ＥＣＣ回路３０２によって訂正され、正常化されたデータがＲＡＭ２０２に保持される。
【００４９】
このときのリードエラーは、読み出しもとの物理ブロック２０１ａのデータの変化や破損が原因である考えられる。このため、物理ブロック２０１ａのデータをこのまま放置しておくと、重なるデータの破損等によって、読み出し時にＥＣＣ回路３０２では訂正できないリードエラーが生じてしまう惧れがある。
【００５０】
そこで、本実施の形態では、以下に説明するデータ書換え処理が、ＣＰＵ１００の書換え処理部１００ａによって実行される。このデータ書換え処理において、読み出されたデータに対するエラー訂正結果が判定され、エラー訂正が実行されていれば、エラーがあったページを含む物理ブロック２０１ａの全ページのデータが、正常なデータに書き換えられる。
【００５１】
図５および図６は、本実施の形態に係るデータ書換え処理について説明するための図である。図５（ａ）は、データ書換え処理のフローチャートを示す。また、図５（ｂ）は、データ書換え処理に含まれる第１の書換え処理のフローチャートを示し、図５（ｃ）は、第１の書換え処理に用いられる書換え管理テーブルの構成を示す。さらに、図６は、データ書換え処理によって物理ブロック２０１ａのデータが書き換えられる際の流れについて説明するための図である。
【００５２】
以下、図５および図６を参照して処理内容を説明する。
【００５３】
図５（ａ）を参照して、書換え処理部１００ａは、所定のデータを読み出すタイミングがくると、論理物理変換テーブルに従って、対象となる物理ブロック２０１ａからデータを読み出し、読み出したデータをＲＡＭ２０２へ転送する（Ｓ１１）。
【００５４】
この際、書換え処理部１００ａは、メモリコントローラ３０１からの上記判定信号に基づいて、エラー訂正結果を判定する（Ｓ１２）。読み出されたデータにエラーがあり（図６の表示Ａ参照）、そのエラーが１ビットエラーであってＥＣＣ回路３０２によりエラーが訂正されれば、訂正ができた旨の判定信号がＣＰＵ１００に入力される。これにより、書換え処理部１００ａは、エラーが訂正できたと判定すると（Ｓ１２：訂正可）、第１のデータ書換え処理を実行し、対象となる物理ブロック２０１ａ（以下、「エラーブロック」という）の全ページのデータを正常なデータに書き換える（Ｓ１３）。なお、書換え処理部１００ａは、ステップＳ１２の判定結果において、読み出されたデータにエラーがないと判定した場合には（Ｓ１２：エラー無）、第１の書換え処理を実行しない。
【００５５】
所定の物理ブロック内２０１ａには、第１の書換え処理に用いるため、図５（ｃ）に示すような、書換え管理テーブルが構成されている。書換え管理テーブルには、書換え中フラグのフラグ情報を保持するためのメモリ領域と、書換え元ＢＮ、書換え先ＢＮを保持するメモリ領域と、状態フラグのフラグ情報を保持するためのメモリ領域とが用意されている。書換え中フラグは、第１の書換え処理が実行中であることを示すフラグである。書換え元ＢＮは、書き換えの対象となる物理ブロック２０１ａのブロック番号（ＢＮ）である。書換え先ＢＮは、第１の書換え処理の際に、データが移されるスペアの物理ブロック２０１ａのブロック番号（ＢＮ）である。状態フラグは、第１の書換え処理がどの状態まで完了したかを示すフラグである。書換え管理テーブル内のデータは、第１の書換え処理の実行中に電源供給が遮断された場合に、電源供給の回復後にその処理を再開するために用いられる。
【００５６】
図５（ｂ）を参照して、第１の書換え処理が開始されると、書換え処理部１００ａは、処理が実行中であることを示すべく、書換えフラグをオンの状態（「１」の状態）にする。また、エラーブロックのブロック番号（ＢＮ）を、書換え元ＢＮのメモリ領域に保持し、使用されるスペアの物理ブロック２０１ａ（以下、「スペアブロック」という）のブロック番号（ＢＮ）を、書換え先ＢＮのメモリ領域に保持する（Ｓ１０１）。
【００５７】
次に、書換え処理部１００ａは、ＲＡＭ２０２に保持された、エラー訂正後のデータ（正常なデータ）を含むエラーブロック内の全データを、ＲＡＭ２０２から読み出してスペアブロックに書き込む（Ｓ１０２；図６の表示Ｂ参照）。そして、論理物理変換テーブルのブロック番号（ＢＮ）を、エラーブロックのブロック番号からスペアブロックのブロック番号に変更する（Ｓ１０３；図６の表示Ｃ参照）。
【００５８】
次に、書換え処理部１００ａは、エラーブロックのデータを消去する（Ｓ１０４；図６の表示Ｄ参照）。そして、データが消去されたエラーブロックに、スペアブロックに書き込まれた全データを書き込む（Ｓ１０５；図６の表示Ｅ参照）。
【００５９】
次に、書換え処理部１００ａは、論理物理変換テーブルのブロック番号（ＢＮ）を、スペアブロックのブロック番号からエラーブロックのブロック番号に変更する（Ｓ１０６; 図６の表示Ｆ参照）そして、スペアブロックのデータを消去する（Ｓ１０７; 図６の表示Ｇ参照）。
【００６０】
なお、上記ステップＳ１０１からステップＳ１０７の処理が完了するたびに、状態フラグには、各処理に対応するフラグ情報（たとえば、「状態１」〜「状態７」）、が書き込まれる。こうして、データ書換え処理が進行するに従い、状態フラグのフラグ情報が、ステップＳ１０１に対応する「状態１」からステップＳ１０７に対応する「状態７」へと順番に変わっていく（図５（ｂ）参照）。
【００６１】
こうして、エラーブロックのデータ書き換えが完了すると、書換え処理部１００ａは、書換え中フラグをオフの状態（「０」の状態）とし（Ｓ１０８）、第１の書換え処理を終了する。
【００６２】
なお、第１の書換え処理の実行中に、何らかの原因によって電源供給が遮断された場合には、書換え処理が中断してしまう。この場合、電源供給が回復すると、書換え処理部１００ａは、書換え管理テーブルの書換えフラグがＯＮ状態であることにより、第１の書換え処理の実行中であることを認識し、さらに、書換え元ＢＮ、書換え先ＢＮを取得して、状態フラグに示された状態の続きから処理を再開する。こうして、本実施の形態では、第１の書換え処理の途中で電源供給が遮断しても、電源供給の回復後に第１の書換え処理を完了させることができる。
【００６３】
ところで、ＥＥＰＲＯＭ２０１の内部では、一度に大きなデータの変化や破損が起こりにくいため、１ビットを超えるリードエラーが発生する頻度は極めて低い。しかしながら、ごくまれではあるものの、読み出されたデータに１ビットを超えるエラーが生じる場合も想定され得る。この場合には、ＥＣＣ回路３０２によりエラー訂正ができないので、データの読み出しが行えない。よって、ＣＰＵ１００には、メモリコントローラ３０１から読み出しが行えなかった旨（読出しエラー）の判定信号が入力される。
【００６４】
この場合は、訂正されたデータを用いてエラーブロックのデータを書き換えられないため第１の書換え処理が行えない。よって、書換え処理部１００ａは、図５（ａ）のステップＳ１２において、データが読み出せなかったと判定すると（Ｓ１２：リード不可）、第１の書換え処理を行わず、エラーブロック内のデータを消去する（Ｓ１４）。
【００６５】
なお、読出しエラーがエラーブロック自身の破損に起因するものであれば、データが正常に消去できないので、メモリコントローラ３０１には、ＥＥＰＲＯＭ２０１からデータ消去ができない旨の情報が入力される。この場合、メモリコントローラ３０１は、そのエラーブロックを不良ブロックに設定する。不良ブロックに設定された物理ブロック２０１ａには、その後、データは保持されない。一方、読出しエラーが訂正できないビットエラーに起因し、エラーブロック自身の破損に起因するものでない場合には、データが正常に消去される。このときは、その物理ブロック２０１ａには、データが存在しない状態となる。
【００６６】
以上、本実施の形態によれば、ＥＥＰＲＯＭ２０１から読み出されたデータにエラーがあり、ＥＣＣ回路３０２によりエラー訂正されたことが検出されると、訂正されたデータを用いて、対象となる物理ブロック２０１ａ内の全データが書き換えられるので、物理ブロック２０１ａ内のデータの正常化を効果的に図ることができる。
【００６７】
即ち、本実施の形態によれば、実際にエラー訂正が行われたことに基づいて、エラー訂正がなされた不揮発性メモリ内のデータが正常なデータに書き換えられるので、不揮発性メモリ内のデータの正常化を効果的に図ることができる。
【００６８】
＜変更例＞
上記実施の形態では、読出しエラーが発生した場合には、対象となる物理ブロック２０１ａのデータが消去される。このため、上記実施の形態では、その物理ブロック２０１ａに保持されていたデータを二度と利用することができない。
【００６９】
そこで、本変更例では、通信事業者、または製造メーカのサーバーに、ＥＥＰＲＯＭ２０１の各物理ブロック２０１ａに保持されるべきプログラムデータを保管しておく。そして、本変更例では、ＥＥＰＲＯＭ２０１からデータが読み出せなかった場合に、第２の書換え処理または第３の書換え処理を実行し、サーバーから取得した正常なデータを用いて、物理ブロック２０１ａのデータを書き換える。
【００７０】
図７は、データ書換え処理の変更例を示すフローチャートである。図８（ａ）はデータ書換え処理に含まれる第２の書換え処理のフローチャートであり、図８（ｂ）はデータ書換え処理に含まれる第３の書換え処理のフローチャートである。
【００７１】
図７を参照して、書換え処理部１００ａは、データの読み出しが行えなかったと判定し（Ｓ１２：リード不可）、エラーブロックのデータを消去すると（Ｓ１４）、そのときに、メモリコントローラ３０１から消去エラー信号が入力されたか否かを判定する（Ｓ１５）。メモリコントローラ３０１は、エラーブロックを不良に設定すると、消去エラー信号をＣＰＵ１００に送るように構成されている。
【００７２】
書換え処理部１００ａは、消去エラー信号が入力されれば（Ｓ１５：ＹＥＳ）、第２の書換え処理を実行する。一方、エラー信号が入力されなければ（Ｓ１５：ＮＯ）、第３の書換え処理を実行する。
【００７３】
まず、図８（ａ）を参照して、第２の書換え処理について説明する。
【００７４】
書換え処理部１００ａは、処理が実行中であることを示すべく、書換えフラグをオンの状態にする。また、エラーブロックのブロック番号（ＢＮ）を、書換え元ＢＮのメモリ領域に保持し、スペアブロックのブロック番号（ＢＮ）を、書換え先ＢＮのメモリ領域に保持する（Ｓ２０１）。
【００７５】
次に、書換え処理部１００ａは、通信モジュール４０５を用いて、インターネット経由により、上記サーバーからエラーブロックに対応する正常なデータをダウンロードする（Ｓ２０２）。そして、ダウンロードしたデータをスペアブロックに書き込む（Ｓ２０３）。
【００７６】
その後は、第１の書換え処理と同様であり、書換え処理部１００ａは、論理物理変換テーブルのブロック番号（ＢＮ）を、エラーブロックのブロック番号からスペアブロックのブロック番号に変更し（Ｓ２０４）、エラーブロックのデータを消去する（Ｓ２０５）。そして、データが消去されたエラーブロックに、スペアブロックに書き込まれた全データを書き込む。（Ｓ２０６）。さらに、書換え処理部１００ａは、論理物理変換テーブルのブロック番号（ＢＮ）を、スペアブロックのブロック番号からエラーブロックのブロック番号に変更し（Ｓ２０７）、スペアブロックのデータを消去する（Ｓ２０８）。
【００７７】
なお、第２の書換え処理においても、状態フラグによって処理の状態が管理されている。このため、第２の書換え処理中に電源供給が遮断されることがあっても、電源供給の回復後に第２の書換え処理を完了することができる。
【００７８】
こうして、エラーブロックのデータ書き換えが完了すると、書換え処理部１００ａは、書換え中フラグをオフの状態とし（Ｓ２０９）、第２の書換え処理を終了する。
【００７９】
次に、図８（ｂ）を参照して、第３の書換え処理について説明する。
【００８０】
書換え処理部１００ａは、処理が実行中であることを示すべく、書換えフラグをオンの状態にする。また、エラーブロックのブロック番号（ＢＮ）を、書換え元ＢＮのメモリ領域に保持する。さらに、書換え処理部１００ａは、新たな物理ブロック２０１ａを設定し、この物理ブロック２０１ａ（以下、「新たなブロック」という）のブロック番号（ＢＮ）を、書換え先ＢＮのメモリ領域に保持する（Ｓ３０１）。
【００８１】
次に、書換え処理部１００ａは、第２の書換え処理と同様、サーバーからエラーブロックに対応する正常なデータをダウンロードする（Ｓ３０２）。そして、ダウンロードしたデータを新たなブロックに書き込む（Ｓ３０３）。
【００８２】
その後、書換え処理部１００ａは、論理物理変換テーブルのブロック番号（ＢＮ）を、エラーブロックのブロック番号から新たなブロックのブロック番号に変更する（Ｓ３０４）。
【００８３】
なお、第３の書換え処理においても、状態フラグによって処理の状態が管理されている。このため、第３の書換え処理中に電源供給が遮断されることがあっても、電源供給の回復後に第３の書換え処理を完了することができる。
【００８４】
こうして、新たなブロックへの正常なデータの書き込みが完了すると、書換え処理部１００ａは、書換え中フラグをオフの状態とし（Ｓ３０５）、第３の書換え処理を終了する。
【００８５】
このような構成とすれば、物理ブロック２０１ａからデータを読み出すことができない、即ち訂正したデータが用いられない場合においても、物理ブロック２０１ａ内のデータの正常化を行うことができる。
【００８６】
即ち、本実施の形態によれば、訂正されたデータを用いることができるか否かが判別され、訂正されたデータを用いることができれば、当該訂正されたデータが正常なデータとして用いられ、訂正されたデータを用いることができなければ、通信網を介して正常なデータを取得する処理が実行される。したがって、訂正されたデータを用いることができない場合であっても、不揮発性メモリ内のデータを正常化することができる。
【００８７】
なお、本変更例では、サーバーからダウンロードできるデータは、プログラムデータに限られない。エラーデータが、上記サーバーよりダウンロードした音楽データである場合には、その音楽データを再ダウンロードできるようにしてもよい。
【００８８】
また、本変更例では、携帯電話機で撮った写真データ等、予めサーバー側で用意できないデータは、ＥＥＰＲＯＭ２０１に保存されるとともにサーバーにも送られ、サーバーでも保管されるような構成とすることが望ましい。こうすれば、その写真データ等が読み出せなくなっても、サーバーからダウンロードすることが可能となる。
【００８９】
さらに、本変更例では、ステップＳ１４において、エラーブロックのデータを消去する前に、そのデータを他の物理ブロック２０１ａに書き込むようにしてもよい。このようにすれば、データの読み出しできなくなったページ以外のページのデータを残しておくことができ、そのデータがユーザデータである場合、特に有用となる。
【００９０】
また、本変更例では、データの訂正が行われた場合でも、第２の書換え処理を実行し、サーバーから取得した正常なデータ用いて、物理ブロック２０１ａ内のデータの書き換えを行うようにしてもよい。この場合、図７のステップＳ１３が第２の書換え処理に変更される。
【００９１】
＜他の変更例＞
上記実施の形態では、通常の処理においてデータが読み出されなければ、物理ブロック２０１ａ内のデータの書き換えが行われることがない。このため、物理ブロック２０１ａによっては、データの書き換えが行われずに長時間放置されるものも出てくる。これにより、物理ブロック２０１ａ内のデータの変化、破損が進行し、ＥＣＣ回路３０２で訂正不可能なリードエラーが生じてしまう惧れがある。
【００９２】
そこで、本変更例では、読み出されていない期間が所定の期間を超える物理ブロック２０１ａ（データ）を検出するデータ検出処理を実行することにより、通常の処理では読み出される頻度が少ない物理ブロック２０１ａのデータの書き換えが行われるようにしている。
【００９３】
図９（ａ）はデータ検出処理を示すフローチャートであり、図９（ｂ）は、データ検出処理に用いられるリード確認テーブルの構成を示す。
【００９４】
所定の物理ブロック２０１ａ内には、データ検出処理に用いられるリード確認テーブルが構成されている。リード確認テーブルには、各ブロック番号（ＢＮ）に対応付けてリードフラグが用意されている。リードフラグは、対応する物理ブロック２０１ａ内のデータが読み出されたか否かを示すフラグである。
【００９５】
図９（ａ）を参照して、処理が開始されると、ＣＰＵ１００は、リード確認テーブルの全てのリードフラグをリセットする（Ｓ２１）。そして、予め定められた検出時間のカウントを開始する（Ｓ２２）。検出時間は、たとえば、ＣＰＵ１００に配されたタイマー（図示せず）によりカウントされる。
【００９６】
次に、ＣＰＵ１００は、各物理ブロック２０１ａのデータが読み出されたかを判定し（Ｓ２３）、データが読み出されたと判定すると（Ｓ２３:ＹＥＳ）、その物理ブロック２０１ａに対応するリードフラグをオン状態とする（Ｓ２４）。こうして、上述したデータ書換え処理において、リード処理が行われる度に、データが読み出された物理ブロック２０１ａのリードフラグがオン状態となる。
【００９７】
その後、検出時間が経過すると（Ｓ２５：ＹＥＳ）、ＣＰＵ１００は、データが保持された全ての物理ブロック２０１ａについて、リードフラグを確認し、リードフラグがオフである物理ブロック２０１ａ、即ち検出時間より長い期間読み出しが行われていない物理ブロック２０１ａのデータを順番に読み出す。これらデータの読み出しは、上記実施の形態のデータ書換え処理（図５）あるいは変更例のデータ書換え処理（図７、図８）により行われる。これにより、読み出されたデータにエラーがあれば、対象となる物理ブロック２０１ａのデータが正常なデータに書き換えられる。
【００９８】
こうして、リードフラグがオフである全ての物理ブロック２０１ａのデータの読み出しが終わると、処理がステップＳ２１に戻る。以降、ＣＰＵ１００は、ステップＳ２１からＳ２６の処理を繰り返す。
【００９９】
このような構成とすれば、物理ブロック２０１ａ内にデータが書き換えられずに長時間放置されてしまうことを防止でき、物理ブロック２０１ａ内のデータの正常化をより効果的に図ることができる。
【０１００】
即ち、本実施の形態によれば、不揮発性メモリから読み出されていない期間が所定の期間を超えるデータが検出され、検出されたデータに対し、データ書換え処理が実行されるので、不揮発性メモリ内のデータの正常化をより効果的に図ることができる。
【０１０１】
なお、本変更例では、リード確認テーブルを用い、リードフラグが検出時間内にオン状態とならないことを検出することで、読み出されていない期間が所定の期間を超えるデータを検出するようにしている。しかし、これに限らず、物理ブロック２０１ａ毎にデータが読み出された時刻を保持する所定のテーブルを用意し、ＣＰＵ１００が、このテーブルを常に監視して、前回データが読み出された時刻から予め定めた一定時間が経過したか否かを判定することにより、読み出されていない期間が所定の期間を超えるデータを検出するようにしてもよい。
【０１０２】
＜その他＞
本発明の実施形態は、上記以外に種々の変更が可能である。たとえば、上記実施の形態では、不揮発性メモリとして、ＮＡＮＤ型の不揮発性メモリが用いられているが、これに限らず、可変抵抗素子型の不揮発性メモリ等、エラーデータの発生を抑制するために、メモリ内のデータの書き換えが必要とされ得る他の不揮発性メモリが用いられてもよい。
【０１０３】
また、上記実施の形態では、ＥＣＣ回路３０２によって１ビットのエラー訂正を行われるよう構成されている。しかしながら、これに限らず、リード・ソロモン方式等の訂正手法を用いることにより、ＥＣＣ回路３０２によって複数ビットのエラー訂正が行われるよう構成されてもよい。
【０１０４】
さらに、上記変更例では、訂正されたデータが書き換え用のデータとして用いられ得るか否かを判別するために、エラー訂正ができたか、エラー訂正ができなかったか（データが読み出せなかったか）を判別するようにしている。しかしながらこれに限らず、たとえば、上記のようにＥＣＣ回路３０２により複数ビットのエラー訂正が可能である場合には、書換え処理部１００ａが、訂正されたビット数に基づいて、訂正されたデータが書き換え用のデータとして用いられ得るか否かを判別するようにしてもよい。即ち、訂正されたビット数に応じて、ＥＣＣ回路３０２により訂正されたデータをエラーブロックに書き込むか、サーバーからのデータをエラーブロックに書き込むかが決定される構成とされてもよい。この場合、訂正されたビット数の情報がＣＰＵ１００へ送られるよう、メモリコントローラ３０１が構成される。
【０１０５】
たとえば、ＥＣＣ回路３０２により５ビットまでエラー訂正が可能であるとき、書換え処理部１００ａは、４ビットまでのエラー訂正が行われたとの情報を得た場合、確実に訂正が行えているので訂正データを用いることができると判断して、訂正したデータ用いてエラーブロックのデータの書き換えを行う。一方、５ビットのエラー訂正が行われた場合、実際には６ビット以上のエラーが発生しているのに、エラー検出等を誤って５ビットのエラー訂正が行われた可能性があり、これによって、誤った訂正データが作成された可能性がある。このため、書換え処理部１００ａは、５ビットのエラー訂正が行われたとの情報を得た場合、訂正データを用いることができないと判断し、サーバーからのデータを用いてエラーブロックのデータの書き換えを行う。
【０１０６】
また、上記実施の形態は、本発明のメモリ制御装置を、携帯電話機に適用したものであるが、これに限らず、本発明のメモリ制御装置を、ＰＤＡ（Personal Digital Assistant）等、他の携帯端末装置に適用することもできる。また、携帯端末装置に限らす、本発明のメモリ制御装置を、他の電気機器に適用することもできる。
【０１０７】
この他、本発明の実施の形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。
【符号の説明】
【０１０８】
１００      ＣＰＵ（データ検出部）
１００ａ    書換え処理部（書換え部）
２０１      ＥＥＰＲＯＭ（不揮発性メモリ）
３０１      メモリコントローラ（読出し部）
３０２      ＥＣＣ回路（訂正部）
【図１】
2010277286.tif 000003
【図２】
2010277286.tif 000004
【図３】
2010277286.tif 000005
【図４】
2010277286.tif 000006
【図５】
2010277286.tif 000007
【図６】
2010277286.tif 000008
【図７】
2010277286.tif 000009
【図８】
2010277286.tif 000010
【図９】
2010277286.tif 000011