(57)【要約】【課題】  メモリの利用効率を向上させることが可能な端末装置を提供する。【解決手段】  端末装置（１）は、少なくともＮＡＮＤデバイスからなる不揮発メモリ［不揮発メモリ（＃１）１３］と、不揮発メモリのデータのエラーの訂正を行うＥＣＣ訂正回路（１４）と、ＥＣＣ訂正回路で訂正を行ったエラービット数とＮＡＮＤデバイスのリード回数とを記録する記録用テーブル［揮発メモリ１２］と、記録用テーブルに記録されたエラービット数及びリード回数が、エラービット数及びリード回数が不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定手段（ＣＰＵ１１）と、判定手段の判定結果に基づいて不揮発メモリのデータの書込み先でありかつＮＡＮＤデバイスのイレース最小単位を示すブロックを決定する決定手段（ＣＰＵ１１）とを有する。【選択図】      図１
2011059907.tif 000002
【特許請求の範囲】
【請求項１】
少なくともＮＡＮＤデバイスからなる不揮発メモリと、
前記不揮発メモリのデータのエラーの訂正を行うＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）訂正回路と、
前記ＥＣＣ訂正回路で訂正を行ったエラービット数と前記ＮＡＮＤデバイスのリード回数とを記録する記録用テーブルと、
前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定手段と、
前記判定手段の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記ＮＡＮＤデバイスのイレース最小単位を示すブロックを決定する決定手段と
を有することを特徴とする端末装置。
【請求項２】
前記データの用途別に当該データの重要度を示す管理レベルを格納するデータ用途別の管理レベル設定テーブルを前記不揮発メモリに保管することを特徴とする請求項１記載の端末装置。
【請求項３】
前記データ用途別の管理レベル設定テーブルで用いた管理レベルの具体的な判定条件と前記リード回数の制限条件とを示す管理レベル定義情報テーブルを前記不揮発メモリに保管することを特徴とする請求項２記載の端末装置。
【請求項４】
前記管理レベルの具体的な判定条件は、前記データの用途別の判定リード回数と判定ブロック内訂正数とからなる定義情報を示し、
前記リード回数の制限条件は、前記データの用途別にリードしてよい回数の定義情報を示すことを特徴とする請求項３記載の端末装置。
【請求項５】
前記判定手段は、前記ＮＡＮＤデバイスのリードを行う際に前記記録用テーブルに記録された前記エラービット数及び前記リード回数が前記管理レベルを満たすか否かを判定し、
その判定結果を前記記録用テーブルの判定管理レベルに記録することを特徴とする請求項１から請求項４のいずれか記載の端末装置。
【請求項６】
前記決定手段は、前記前記ＮＡＮＤデバイスのプログラム動作を行う場合に前記判定管理レベルを参照し、当該プログラムを行うデータの要求管理レベル以上になるように書込み先のブロックを決定することを特徴とする請求項５記載の端末装置。
【請求項７】
前記記録用テーブルを揮発メモリに配置し、
前記記録用テーブルに、プログラムの最小単位を示すページ単位で前記エラービット数を記録するとともに、前記ブロック単位で前記ＮＡＮＤデバイスのリード回数を記録することを特徴とする請求項１から請求項６のいずれか記載の端末装置。
【請求項８】
前記記録用テーブルの記録内容は、電源断の場合に前記不揮発メモリに退避し、電源が投入された場合に前記不揮発メモリから前記揮発メモリに読み戻すことを特徴とする請求項７記載の端末装置。
【請求項９】
前記記録用テーブルを、ビット毎の書き換えが可能なＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）に配置したことを特徴とする請求項１から請求項６のいずれか記載の端末装置。
【請求項１０】
少なくともＮＡＮＤデバイスからなる不揮発メモリと、前記不揮発メモリのデータのエラーの訂正を行うＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）訂正回路とを含む端末装置に用いる不揮発メモリ管理方法であって、
前記端末装置に、前記ＥＣＣ訂正回路で訂正を行ったエラービット数と前記ＮＡＮＤデバイスのリード回数とを記録する記録用テーブルを設け、
前記端末装置が、前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定処理と、前記判定処理の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記ＮＡＮＤデバイスのイレース最小単位を示すブロックを決定する決定処理とを実行することを特徴とする不揮発メモリ管理方法。
【請求項１１】
前記データの用途別に当該データの重要度を示す管理レベルを格納するデータ用途別の管理レベル設定テーブルを前記不揮発メモリに保管することを特徴とする請求項１０記載の不揮発メモリ管理方法。
【請求項１２】
前記データ用途別の管理レベル設定テーブルで用いた管理レベルの具体的な判定条件と前記リード回数の制限条件とを示す管理レベル定義情報テーブルを前記不揮発メモリに保管することを特徴とする請求項１１記載の不揮発メモリ管理方法。
【請求項１３】
前記管理レベルの具体的な判定条件は、前記データの用途別の判定リード回数と判定ブロック内訂正数とからなる定義情報を示し、
前記リード回数の制限条件は、前記データの用途別にリードしてよい回数の定義情報を示すことを特徴とする請求項１２記載の不揮発メモリ管理方法。
【請求項１４】
前記判定処理において、前記ＮＡＮＤデバイスのリードを行う際に前記記録用テーブルに記録された前記エラービット数及び前記リード回数が前記管理レベルを満たすか否かを判定し、
その判定結果を前記記録用テーブルの判定管理レベルに記録することを特徴とする請求項１０から請求項１３のいずれか記載の不揮発メモリ管理方法。
【請求項１５】
前記決定処理において、前記前記ＮＡＮＤデバイスのプログラム動作を行う場合に前記判定管理レベルを参照し、当該プログラムを行うデータの要求管理レベル以上になるように書込み先のブロックを決定することを特徴とする請求項１４記載の不揮発メモリ管理方法。
【請求項１６】
前記記録用テーブルを揮発メモリに配置し、
前記記録用テーブルに、プログラムの最小単位を示すページ単位で前記エラービット数を記録するとともに、前記ブロック単位で前記ＮＡＮＤデバイスのリード回数を記録することを特徴とする請求項１０から請求項１５のいずれか記載の不揮発メモリ管理方法。
【請求項１７】
前記記録用テーブルの記録内容は、電源断の場合に前記不揮発メモリに退避し、電源が投入された場合に前記不揮発メモリから前記揮発メモリに読み戻すことを特徴とする請求項１６記載の不揮発メモリ管理方法。
【請求項１８】
前記記録用テーブルを、ビット毎の書き換えが可能なＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）に配置したことを特徴とする請求項１０から請求項１５のいずれか記載の不揮発メモリ管理方法。
【請求項１９】
少なくともＮＡＮＤデバイスからなる不揮発メモリと、前記不揮発メモリのデータのエラーの訂正を行うＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）訂正回路とを含む端末装置内の中央処理装置に実行させるプログラムであって、
前記端末装置に、前記ＥＣＣ訂正回路で訂正を行ったエラービット数と前記ＮＡＮＤデバイスのリード回数とを記録する記録用テーブルを設け、
前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定処理と、前記判定処理の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記ＮＡＮＤデバイスのイレース最小単位を示すブロックを決定する決定処理とを含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラムに関し、特に大容量なＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）−ＮＡＮＤ（否定論理積）デバイス等の比較的信頼性の低い不揮発メモリの管理方法に関する。
【背景技術】
【０００２】
携帯端末装置や情報端末装置等においては、大容量なＭＬＣ−ＮＡＮＤデバイス等の比較的信頼性の低い不揮発メモリを使用する場合がある。このような不揮発メモリで、リード時のビット化けが発生した場合は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）訂正回路で、ＮＡＮＤデバイスの冗長セルに記録されたパリティービットを用いて、正しいデータに訂正する方法が一般的である。
【０００３】
ＥＣＣ訂正回路としては、例えば、下記の特許文献１に開示されたエラー訂正回路がある。
【０００４】
しかしながら、ＮＡＮＤデバイスは、リード動作を繰り返すことで、リードディスターブ現象により、ビット化けが増加し続けるという特徴がある。ここで、リードディスターブ現象とは、任意のページを数多くリードすると、同一ブロックの他のページのデータに影響がでる現象のことである。リードディスターブ現象は、下記の非特許文献１に示すＮＡＮＤデバイスを用いた製品ＳＳＤ（ソリッド・ステート・ドライブ）の論文中にあるように、ＮＡＮＤデバイスの特徴の一つである。
【０００５】
近年のＮＡＮＤデバイスの製造プロセスの微細化では、本リードディスターブ現象によるビット化けの発生が顕在化してきている。また、ＮＡＮＤセルの製造ばらつきに起因し、同じデバイス内でも、リードディスターブ耐性の強いブロックと弱いブロックとが存在している。
【０００６】
上記の端末装置を動作させる上で必要なプログラムデータ部分では、ビット化けが多発し、ＥＣＣ訂正回路で正しいデータに訂正することができなくなると、端末装置の異常動作を引き起こすことになる。また、高いセキュリティ確保が必要なデータ部分で（例えば、課金情報等）、ビット化けが多発し、ＥＣＣ訂正回路で正しいデータに訂正することができなくなると、セキュリティ上の重大な問題を引き起こすことになる。
【０００７】
従来、携帯端末装置や情報端末装置等で、大容量なＭＬＣ−ＮＡＮＤデバイスを使用する場合に、ビット化けが多発し、ＥＣＣ訂正回路で正しいデータに訂正することができなくなることを想定し、プログラムデータや高いセキュリティ確保が必要データは、同じデータを複数のＮＡＮＤブロックへ多重化して記録する等の方法をとっている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−２４２７９７号公報
【特許文献２】特開２００８−０９７４０３号公報
【非特許文献】
【０００９】
【非特許文献１】「小型・軽量・高信頼性のモバイルノートＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）用多値ＮＡＮＤ型ソリッドステートドライブ」（塚澤  寿夫，東芝レビュー  Ｖｏｌ．６３  Ｎｏ．７（２００８），Ｐ．５４  ｈｔｔｐ：／／ｗｗｗ．ｔｏｓｈｉｂａ．ｃｏ．ｊｐ／ｔｅｃｈ／ｒｅｖｉｅｗ／２００８／０７／６３＿０７ｐｄｆ／ｆ０３．ｐｄｆ）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記の端末装置では、仮に、ビット化けが多発し、ＥＣＣ訂正回路で正しいデータに訂正することができなくなると、多重化された他のブロックのデータを代用することになる。
【００１１】
上記の端末装置では、信頼性を向上させるため、このＮＡＮＤデータの多重化を多用すると、ＮＡＮＤデバイスの記録容量を重複して消費することになり、メモリの利用効率が悪くなるという欠点がある。そのため、上記の端末装置では、リードディスターブ現象に対する信頼性を確保する他の手段を考案し、多重化率を下げ、メモリ利用効率を向上する必要がある。
【００１２】
そこで、本発明の目的は上記の問題点を解消し、メモリの利用効率を向上させることができる端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明による端末装置は、少なくともＮＡＮＤデバイスからなる不揮発メモリと、
前記不揮発メモリのデータのエラーの訂正を行うＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）訂正回路と、
前記ＥＣＣ訂正回路で訂正を行ったエラービット数と前記ＮＡＮＤデバイスのリード回数とを記録する記録用テーブルと、
前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定手段と、
前記判定手段の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記ＮＡＮＤデバイスのイレース最小単位を示すブロックを決定する決定手段とを備えている。
【００１４】
本発明による不揮発メモリ管理方法は、少なくともＮＡＮＤデバイスからなる不揮発メモリと、前記不揮発メモリのデータのエラーの訂正を行うＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）訂正回路とを含む端末装置に用いる不揮発メモリ管理方法であって、
前記端末装置に、前記ＥＣＣ訂正回路で訂正を行ったエラービット数と前記ＮＡＮＤデバイスのリード回数とを記録する記録用テーブルを設け、
前記端末装置が、前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定処理と、前記判定処理の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記ＮＡＮＤデバイスのイレース最小単位を示すブロックを決定する決定処理とを実行している。
【００１５】
本発明によるプログラムは、少なくともＮＡＮＤデバイスからなる不揮発メモリと、前記不揮発メモリのデータのエラーの訂正を行うＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）訂正回路とを含む端末装置内の中央処理装置に実行させるプログラムであって、
前記端末装置に、前記ＥＣＣ訂正回路で訂正を行ったエラービット数と前記ＮＡＮＤデバイスのリード回数とを記録する記録用テーブルを設け、
前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定処理と、前記判定処理の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記ＮＡＮＤデバイスのイレース最小単位を示すブロックを決定する決定処理とを含むことを特徴とする。
【発明の効果】
【００１６】
本発明は、上記のような構成及び動作とすることで、メモリの利用効率を向上させることができるという効果が得られる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施の形態による端末装置の構成例を示すブロック図である。
【図２】本発明の第１の実施の形態で用いるデータ用途別の管理レベル設定テーブルを示す図である。
【図３】本発明の第１の実施の形態に用いる管理レベル定義情報テーブルを示す図である。
【図４】本発明の第１の実施の形態に用いる記録用テーブルを示す図である。
【図５】本発明の第１の実施の形態におけるリード時の動作を示すフローチャートである。
【図６】本発明の第１の実施の形態におけるプログラム時の動作を示すフローチャートである。
【図７】本発明の第１の実施の形態におけるイレース時の動作を示すフローチャートである。
【図８】本発明の第１の実施の形態におけるブロック・リプレース時の動作を示すフローチャートである。
【発明を実施するための形態】
【００１８】
次に、本発明の実施の形態について図面を参照して説明する。まず、本発明による携帯端末装置に用いる不揮発メモリの管理方法の概要について説明する。
【００１９】
本発明による端末装置に用いる不揮発メモリの管理方法では、端末装置で信頼性の低いＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）−ＮＡＮＤ（否定論理積）デバイスを使用する場合、端末装置を動作させる上で必要なプログラムデータや高いセキュリティ確保が必要なデータを、リードディスターブ耐性のあるＮＡＮＤブロックに動的に割り当てることで、システムの信頼性を高めることを特徴としている。
【００２０】
本発明による不揮発メモリ管理方法では、ＮＡＮＤのリード動作の回数をブロック毎にカウントしながら、リード時に発生したビットエラー数［ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）訂正回路でのビット訂正情報］をＮＡＮＤの読出し単位（ページ）で記録しておく。
【００２１】
このリード回数及びページ毎のビットエラー情報は、揮発メモリに設けた記録用テーブルに格納しておく。この記録用テーブルは、電源ＯＦＦ時に不揮発メモリにバックアップが行われる。また、データの用途別に決めてある管理レベル（データの用途別にリード回数とページ毎のエラー数とが定義されている）を満たさない場合は、ブロック・リプレースを行う。
【００２２】
ここで、ブロック・リプレースとは、あるブロックのデータを他のブロックへコピーすることである。一般的なＮＡＮＤデバイスでは、Ｃｏｐｙ  Ｂａｃｋ  Ｐｒｏｇｒａｍというコマンドでその機能が提供されているものもある。ＮＡＮＤデバイスでは、ビット化けに対応するため、ビット化けが発生したブロックの内容を他のブロックへコピーする必要があるため、デバイスの機能としてサポートされているものもある。
【００２３】
新たに行うプログラム動作やブロック・リプレース動作を行う場合は、記録用テーブルに過去のリードで発生したビットエラー情報から判定したブロック毎の信頼性情報となる判定管理レベルを用いて、データの管理レベルに応じて、最適な書込み先のブロックを決定する。
【００２４】
これによって、重要なデータは、ビットエラーに対する信頼性の高いブロックへの書込みを行うことができる。この結果、従来、ＮＡＮＤデータの信頼性を確保するために、データの多重化を行っているが、本発明によりデータ多重化数を減らすことができ、メモリの利用効率を向上させることができる。
【００２５】
図１は本発明の第１の実施の形態による端末装置の構成例を示すブロック図である。図１においては、携帯端末装置や情報端末装置等の端末装置１の構成を示している。
【００２６】
端末装置１は、ＣＰＵ（中央処理装置）１１と、揮発メモリ（ＤＲＡＭ：Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２と、不揮発メモリ（＃１）（大容量のＭＬＣ−ＮＡＮＤメモリ）１３と、ＥＣＣ訂正回路１４と、不揮発メモリ（＃２）１５と、周辺回路１６とから構成されている。
【００２７】
揮発メモリ（ＤＲＡＭ）１２は、アプリケーションを動作させるためのメモリであり、不揮発メモリ（＃１）１３は、プログラムコードやデータを格納するメモリであり、不揮発メモリ（＃２）１５は、信頼性の高い小容量のメモリである。
【００２８】
ＥＣＣ訂正回路１４は、不揮発メモリ（＃１）１３の読出しデータのビット訂正を行う。周辺回路１６は、各種センサ、無線回路、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、キー入出力装置等の回路である。
【００２９】
端末装置１のブート時、ＣＰＵ１１は、不揮発メモリ（＃１）１３に格納してあるプログラムコードやアプリケーションプログラム等を、ＥＣＣ訂正回路１４を通して読出しデータのビット訂正を行いながら、揮発メモリ１２に展開する。不揮発メモリ（＃１）１３の読出しは、読出し単位（ページ）毎に、データとパリティーデータとをＥＣＣ訂正回路１４に送り、ＥＣＣ訂正回路１４でこれらを演算し、訂正したデータを読出し単位（ページ）で、揮発メモリ１２に展開する。
【００３０】
次に、ＣＰＵ１１は、ＥＣＣ訂正回路１４が訂正したビット数を読出し、訂正したビット数を揮発メモリ１２に記録していく。ＣＰＵ１１は、揮発メモリ１２に展開されたプログラムコードやアプリケーションプログラムを用い、プログラムを実行する仕組みになっている。プログラムコードやアプリケーションプログラムが必要とするデータも、同様に不揮発メモリ（＃１）１３からＥＣＣ訂正回路１４を通して読出され、ＣＰＵ１１で使用される。
【００３１】
プログラムコードやアプリケーションプログラムで、データを保存する場合は、不揮発メモリ（＃１）１３の書込み単位（ページ）毎に、データ部とビット訂正に必要なパリティーデータとを不揮発メモリ（＃１）１３に書込む。ＣＰＵ１１は、プログラムコードやアプリケーションプログラムの記述に従って、様々な周辺回路１６を制御することにより、端末装置１に求められる機能を実現している。
【００３２】
例えば、端末装置で行われる通話の動作は以下のように実現される。ユーザが通話の操作のために、周辺回路１６のダイヤルキーと通話ボタンとを押下すると、周辺回路１６の中のキー入力でその操作を検知し、ＣＰＵ１１が通話に必要なアプリケーションプログラムを、不揮発メモリ（＃１）１３からＥＣＣ訂正回路１４を通して揮発メモリ１２に展開する。ＥＣＣ訂正回路１４で訂正したビット数は、揮発メモリ１２に記録される。
【００３３】
次に、ＣＰＵ１１は、そのアプリケーションプログラムで、周辺回路１６の無線回路を制御し、基地局（図示せず）との無線通信が行われる。ＣＰＵ１１は、その無線通信の通話履歴を不揮発メモリ（＃１）１３に書込むため、通話履歴のデータ部とそのデータのパリティーデータとを不揮発メモリ（＃１）１３に書込む。
【００３４】
図２は本発明の第１の実施の形態で用いるデータ用途別の管理レベル設定テーブルを示す図である。図２において、データ用途別の管理レベル設定テーブル１５０は、端末装置１の不揮発メモリ（＃１）１３に書込まれているプログラムコードやデータを用途別に分類したものであり、信頼性の高い、小容量の不揮発メモリ（＃２）１５に格納されている。
【００３５】
本実施の形態では、用途として、「プログラムデータ」、「セキュリティデータ（課金情報等）」、「メールデータ」、「動画像データ」の４つを示す。また、それぞれの用途別に、ＮＡＮＤのリード時のビット化けをどの程度まで許容するかの管理レベルを設定してある。「Ｌｅｖｅｌ１」がビット化けに対して、最も高い信頼性が必要なものであり、「Ｌｅｖｅｌ３」は、通常レベルである。「Ｌｅｖｅｌ２」は、「Ｌｅｖｅｌ１」と「Ｌｅｖｅｌ３」との間の信頼性を必要とするものである。
【００３６】
上記のように、本実施の形態では、端末装１の不揮発メモリ（＃１）１３に書込まれているプログラムコードやデータを用途別に分類し、高い信頼性を必要とするものと、そうでないものとを区別しておく。そして、この分類に基づき、重要なデータは、ビットエラーに対する信頼性の高いブロックへ書込むようにする。
【００３７】
本実施の形態では、不揮発メモリ（＃１）１３の読出し時に、ＥＣＣ訂正回路１４で訂正したビット数をページ毎にＣＰＵ１１で読出し、所定回数のリード時に達した場合に、どの程度のビット数が発生するブロックであるかを判別して記録する。そして、本実施の形態は、高い信頼性を求められるデータをプログラム、またはブロック・リプレースする場合に、そのデータの重要度から最適なブロックを選択することを特徴としている。
【００３８】
図３は本発明の第１の実施の形態に用いる管理レベル定義情報テーブルを示す図である。図３において、管理レベル定義情報テーブル１５１は、データ用途別の管理レベル設定テーブル１５０で用いた管理レベル（「Ｌｅｖｅｌ１」、「Ｌｅｖｅｌ２」、「Ｌｅｖｅｌ３」）に対する具体的な定義情報である。
【００３９】
判定リード回数１５２は、ある管理レベルのブロックの判定を行うリード回数を示している。判定ブロック内訂正数１５３は、ある管理レベルのブロックが判定リード回数１５２で満たすべきＥＣＣ訂正回路１４でのＥｒｒｏｒ訂正回数を示している。また、制限リード回数１５４は、ある管理レベルのブロックで許されるリード回数を示している。
【００４０】
本実施の形態では、管理レベル「Ｌｅｖｅｌ１」は、ブロックあたり１０ｋ回のリードが行われる間に、ＥＣＣ訂正回路１４でのＥｒｒｏｒ訂正が１０箇所以下であることを要求している。また、管理レベル「Ｌｅｖｅｌ１」のブロックは、リード回数を１００Ｋ回に制限することを示している。
【００４１】
管理レベル「Ｌｅｖｅｌ２」は、ブロックあたり１０ｋ回のリードが行われる間に、ＥＣＣ訂正回路１４でのＥｒｒｏｒ訂正が５０箇所以下であることを要求している。また、管理レベル「Ｌｅｖｅｌ２」のブロックは、リード回数を１００Ｋ回に制限することを示している。
【００４２】
管理レベル「Ｌｅｖｅｌ３は、ＥＣＣ訂正回路１４でのＥｒｒｏｒ訂正数に制限はないが、リード回数を１００Ｋ回に制限することを示している。
【００４３】
それぞれの管理レベルの要求を満たさなくなったブロックは、他のブロックへブロック・リプレースが行われることになる。例えば、「Ｌｅｖｅｌ３」でリード回数の制限を越えたリードが行われた場合や、「Ｌｅｖｅｌ１」で１０Ｋ回以下のリードの間に、１０箇所を超えたＥＣＣ訂正回路１４でのＥｒｒｏｒ訂正が行われた場合は、ブロック・リプレースが行われることになる。管理レベル定義情報テーブル１５１は、信頼性の高い、小容量の不揮発メモリ（＃２）１５に格納されている。
【００４４】
図４は本発明の第１の実施の形態に用いる記録用テーブルを示す図である。図４において、記録用テーブル１２１は、不揮発メモリ（＃１）１３のＭＬＣ−ＮＡＮＤの使用状況をブロック単位で示したテーブルであり、揮発メモリ１２に置かれている。
【００４５】
本実施の形態では、ＭＬＣ−ＮＡＮＤが４０９６個のブロック（ブロック番号０〜ブロック番号４０９５）をもち、１ブロックあたり１２８ページ（ページ番号０〜ページ番号１２７）である８Ｇｂｉｔ  ＭＬＣ  ＮＡＮＤデバイスを用いた場合を記述してある。ブロックとは、ＭＬＣ−ＮＡＮＤのイレース動作の最小単位であり、ページとは、ＭＬＣ−ＮＡＮＤのリード動作及びプログラム動作の最小単位である。
【００４６】
記録用テーブル１２１には、ブロック毎に、
・ページ毎のＥＣＣ訂正数（１２２）・・・ＥＣＣ訂正回路１４で訂正されたビット数（例えば、４ｂｉｔＥＣＣ訂正回路であれば、４以下の値がライトされる
・ブロック内訂正数（１２３）・・・上記のページ毎のＥＣＣ訂正数（１２２）の総和
・リード回数（１２４）・・・あるブロックがリードされた回数を示す
・要求管理レベル（１２５）・・・ブロックに要求される管理レベルを示す
・判定管理レベル（１２６）・・・過去の判定結果でブロックの信頼性の程度を示し、初期状態は未判定を示す「Ｌｅｖｅｌ０」とする
・イレースフラグ（１２７）・・・‘１’の場合、イレース済みを示し、‘０’の場合、プログラムが行われたことを示す
という６種類の情報が記録してある。
【００４７】
ページ毎のＥＣＣ訂正数（１２２）は、不揮発メモリ（＃１）１３のＭＬＣ−ＮＡＮＤをリードする時に、ＥＣＣ訂正回路１４から訂正した数をＣＰＵ１１が読出し、記録用テーブル１２１内のそのブロック番号とページ番号とに相当する部分に書込む。また、ブロックがイレースされた場合、そのブロックのページ毎のＥＣＣ訂正数（１２２）は０にリセットされる。
【００４８】
ブロック内訂正数（１２３）は、上記ページ毎のＥＣＣ訂正数（１２２）の総和であり、ＭＬＣ−ＮＡＮＤをリードする時に、ＣＰＵ１１で演算してその値を書込む。
【００４９】
リード回数（１２４）は、不揮発メモリ（＃１）１３のＭＬＣ−ＮＡＮＤをリードする時にＣＰＵ１１で演算し、＋１する。また、ブロックがイレースされた場合には、０にリセットされる。
【００５０】
要求管理レベル（１２５）は、ブロック・リプレースやプログラムを行う場合に、そのブロックのデータがどの程度の信頼性を必要としているかを示すものであり、ブロック・リプレースやプログラムを行う場合に書込む。
【００５１】
判定管理レベル（１２６）は、要求管理レベル（１２５）で決められた判定リード回数１５２に達した時点で判定される。具体的には、リード回数（１２４）が判定リード回数１５２になった場合、判定管理レベルの条件である判定ブロック内訂正数１５３を満たしているかどうかを、ブロック内訂正数（１２３）で判定し、その結果でブロックの判定管理レベル（１２６）を書込む。初期状態では、判定がなされていないので、判定管理レベル（１２６）に未判定を示す「Ｌｅｖｅｌ０」が書込まれている。
【００５２】
イレースフラグ（１２７）は、ブロックがイレースされた場合に‘１’にセットされ、ブロックにプログラムが行われた場合に‘０’にリセットされる。イレースフラグ（１２７）は、リプレース動作やプログラム動作時、プログラム先のブロックを素早く探すために必要である。すなわち、要求にあった管理レベルのブロックを探す場合には、イレースフラグ（１２７）が‘１’にセットされたブロックだけを確認する。
【００５３】
図５は本発明の第１の実施の形態におけるリード時の動作を示すフローチャートであり、図６は本発明の第１の実施の形態におけるプログラム時の動作を示すフローチャートであり、図７は本発明の第１の実施の形態におけるイレース時の動作を示すフローチャートであり、図８は本発明の第１の実施の形態におけるブロック・リプレース時の動作を示すフローチャートである。これら図１〜図８を参照して本発明の第１の実施の形態による端末装置１の動作について説明する。
【００５４】
端末装置１は、ブート時、不揮発メモリ（＃１）１３に格納してあるプログラムコードやアプリケーションプログラム等を、ＥＣＣ訂正回路１４を通して揮発メモリ１２に展開し、揮発メモリ１２に展開されたプログラムコードやアプリケーションプログラムで、ＣＰＵ１１はプログラムを実行する。
【００５５】
不揮発メモリ（＃２）１５には、予めデータ用途別の管理レベル設定テーブル１５０、管理レベル定義情報テーブル１５１が保管され、揮発メモリ１２には、記録用テーブル１２１が保管されている。
【００５６】
初期状態で、管理レベル設定テーブル１５０及び管理レベル定義情報テーブル１５１は、各用途別に不揮発メモリ（＃１）１３の信頼性や、予想した読出し頻度により必要な管理レベル及び判定条件が設定されている。
【００５７】
また、記録用テーブル１２１は、初期状態では過去の記録がないため、ページ毎のＥＣＣ訂正数（１２２）、ブロック内訂正数（１２３）、リード回数（１２４）は、０にリセットされている。
【００５８】
ブロックの判定管理レベル（１２６）は、未判定を示す「Ｌｅｖｅｌ０」がセットされている。ブロックの要求管理レベル（１２５）は、不揮発メモリ（＃１）１３に格納してあるデータの用途にあわせて、各ブロックの判定Ｌｅｖｅｌを設定してある。
【００５９】
イレースフラグ（１２７）は、不揮発メモリ（＃１）１３の利用状況にあわせて、イレースされたブロックであれば‘１’が、プログラム済みのブロックであれば‘０’が設定されている。
【００６０】
次に、不揮発メモリ（＃１）１３にアクセスが発生した場合の動作について説明する。動作としては、４つあり、「リード動作」、「プログラム動作」、「イレース動作」、「ブロック・リプレース動作」である。これらの動作について順次説明する。
【００６１】
まず、図５を参照して「リード動作」について説明する。
【００６２】
ＣＰＵ１１は、不揮発メモリ（＃１）１３のデータをリードする場合、リードしたいメモリのブロック番号（ｂｌ）とページ番号（ｐ）とを指定し、読出し単位（ページ）毎に、データとパリティーデータとをＥＣＣ訂正回路１４に送る（図５ステップＳ１）。
【００６３】
ＣＰＵ１１は、ＥＣＣ訂正回路１４でこれらを演算し、訂正したデータを読出し単位（ページ）で、揮発メモリ１２に展開する。また、ＣＰＵ１１は、ＥＣＣ訂正回路１４の訂正したビット数（ｅｒｒ）を読出す（図５ステップＳ２）。
【００６４】
ＣＰＵ１１は、記録用テーブル１２１のブロック（ｂｌ）のページ毎のＥＣＣ訂正数（１２２）のページ（ｐ）の値を読出す。ＣＰＵ１１は、読出した値を訂正数（ｅｒｒ）と比較し、訂正数（ｅｒｒ）の方が大きい場合、ｅｒｒ値をブロック（ｂｌ）、ページ（ｐ）の値として書込む（図５ステップＳ３）。訂正数（ｅｒｒ）の方が小さい場合は、そのままの値を維持する。
【００６５】
ＣＰＵ１１は、記録用テーブル１２１のブロック（ｂｌ）のリード回数（１２４）の値を読出し、＋１してブロック（ｂｌ）のリード回数（１２４）に書込む（図５ステップＳ４）。
【００６６】
ＣＰＵ１１は、記録用テーブル１２１のブロック（ｂｌ）のページ毎のＥＣＣ訂正数（１２２）の総和であるブロック内訂正数（１２３）を更新し、要求管理レベル（１２５）の判定条件を管理レベル定義情報テーブル１５１から求める。
【００６７】
ＣＰＵ１１は、ブロック（ｂｌ）のリード回数（１２４）の値が、判定リード回数（１５２）と等しい場合（図５ステップＳ５）、ブロック内訂正数（４１０）がどの管理レベルに相当するブロックであるかを判定し、ブロックの判定管理レベル（４１３）にその判定結果を書き込む（図５ステップＳ８）。
【００６８】
ＣＰＵ１１は、ブロック（ｂｌ）のリード回数（１２４）の値が、レベルに応じた判定リード回数（１５２）以下で、ブロック内訂正数（１２３）がブロック内訂正数（１５３）よりも大きい場合、要求レベルを満たせないと判断し（図５ステップＳ６）、ブロック・リプレース処理を行う（図５ステップＳ９）。
【００６９】
ＣＰＵ１１は、ブロック（ｂｌ）のリード回数（１２４）の値が、制限リード回数（１５４）に達した場合（図５ステップＳ７）、ブロック・リプレース処理を行う（図５ステップＳ９）。
【００７０】
次に、図６を参照して「プログラム動作」について説明する。
【００７１】
ＣＰＵ１１は、不揮発メモリ（＃１）１３にデータをプログラムする場合、プログラムしたいデータの用途から、データ用途別の管理レベル設定テーブル１５０を参照し、管理レベルを求める（図６ステップＳ１１）。
【００７２】
ＣＰＵ１１は、記録用テーブル１２１のイレースフラグ（１２７）が‘１’であるブロック番号の中から、要求レベルを満たすブロックを探し、プログラム対象ブロック（ｂｌ）を決定する（図６ステップＳ１２）。
【００７３】
ＣＰＵ１１は、記録用テーブル１２１のプログラム対象ブロック（ｂｌ）の要求レベルを書込み（図６ステップＳ１３）、記録用テーブル１２１のプログラム対象ブロック（ｂｌ）のイレースフラグ（１２７）を‘０’にする（図６ステップＳ１４）。
【００７４】
ＣＰＵ１１は、プログラムしたいメモリのブロック番号（ｂｌ）とページ番号（ｐ）とを指定し、プログラム単位（ページ）毎に、データとパリティーデータとを不揮発メモリ（＃１）１３に転送する（図６ステップＳ１５）。
【００７５】
続いて、図７を参照して「イレース動作」について説明する。
【００７６】
ＣＰＵ１１は、不揮発メモリ（＃１）１３のデータをイレースする場合、ＮＡＮＤのメモリのイレースの最小単位であるブロック番号（ｂｌ）を指定する（図７ステップＳ２１）。
【００７７】
ＣＰＵ１１は、記録用テーブル１２１のイレースフラグ（１２７）にイレース済みであることを示す‘１’を書き込む（図７ステップＳ２２）。
【００７８】
ＣＰＵ１１は、記録用テーブル１２１のリード回数（１２４）とブロック内訂正数（１２３）とから管理レベル定義情報テーブル１５１を参照し、どの管理レベルに相当するブロックであるのかを判定し、ブロックの判定管理レベル（１２６）にそのレベルを書込む（図７ステップＳ２３）。
【００７９】
ＣＰＵ１１は、記録用テーブル１２１のブロック番号（ｂｌ）について、ページ毎のＥＣＣ訂正数（１２２）、ブロック内訂正数（１２３）、リード回数（１２４）を０にリセットする（図７ステップＳ２４）。
【００８０】
さらに、図８を参照して「ブロック・リプレース動作」について説明する。図８において、記号ｂｌ＿ｓはリプレース元ブロック（Ｓｏｕｒｃｅ  Ｂｌｏｃｋ）を、記号ｂｌ＿ｄはリプレース先ブロック（Ｄｅｓｔｉｎａｔｉｏｎ  Ｂｌｏｃｋ）をそれぞれ表している。
【００８１】
ＣＰＵ１１は、不揮発メモリ（＃１）１３のリプレース元ブロック（ｂｌ＿ｓ）からリプレース先にデータをリプレースする場合、記録用テーブル１２１のイレースフラグ（１２７）が‘１’であるブロック番号の中から、リプレース元ブロック（ｂｌ＿ｓ）のデータの要求管理レベルを満たすブロックを探し、リプレース先ブロック（ｂｌ＿ｄ）を決定する（図８ステップＳ３１）。
【００８２】
ＣＰＵ１１は、記録用テーブル１２１のリプレース先のブロック（ｂｌ＿ｄ）の要求管理レベルに、リプレース元ブロック（ｂｌ＿ｓ）の要求管理レベルを書込む（図８ステップＳ３２）。ＣＰＵ１１は、記録用テーブル１２１のリプレース先のブロック（ｂｌ＿ｄ）のイレースフラグ（１２７）を‘０’にする（図８ステップＳ３３）。
【００８３】
ＣＰＵ１１は、リプレース元ブロック（ｂｌ＿ｓ）からリプレース先ブロック（ｂｌ＿ｄ）へデータを転送する（図８ステップＳ３４）。ＣＰＵ１１は、リプレース元ブロック（ｂｌ＿ｓ）のイレース処理を行う（図８ステップＳ３５）。
【００８４】
また、端末装置１の電源ＯＦＦ時は、不揮発メモリ（＃２）１５へ揮発メモリ１２にある記録用テーブル１２１を退避（バックアップ）する。端末装置１の電源ＯＮ時は、逆に不揮発メモリ（＃２）１５へ退避した記録用テーブル１２１を揮発メモリ１２へ読戻し、処理を再開する。
【００８５】
上記のように、不揮発メモリ（＃１）１３への４つの動作（「リード動作」、「プログラム動作」、「イレース動作」、「ブロック・リプレース動作」）が繰り返し行われる。不揮発メモリ（＃１）１３の読出し時に、ＥＣＣ訂正回路１４で訂正した数を記録し続けることで、どの程度の訂正数が発生するブロックであるかが次第に明らかになり、ブロック毎に判定管理レベルが記録されることから、高い信頼性を求められるデータをプログラム、またはブロック・リプレースの時に、そのデータの重要度から最適なブロックを選択することができる。
【００８６】
従来、携帯端末装置や情報端末装置等で、大容量なＭＬＣ−ＮＡＮＤデバイスを使用する場合に、ＥＣＣ訂正回路で正しいデータに訂正することができなくなることを想定し、プログラムデータや高いセキュリティ確保が必要データは、同じデータを複数のＮＡＮＤブロックへ多重化して記録する等の方法がとられている。ＮＡＮＤデータの多重化を多用すると、ＮＡＮＤデバイスの記録容量を重複して消費することになり、メモリの利用効率が悪くなる。
【００８７】
そこで、本実施の形態では、ブロック毎の信頼性情報となる判定管理レベルを用いて、必要な信頼性の確保に最適な書込み先のブロックを決定することができるから、重要なデータをビットエラーに対する信頼性の高いブロックに書込みを行うことによって、従来、ＮＡＮＤデータの信頼性を確保するためのデータの多重化率を減らすことができる。この結果、本実施の形態では、メモリの利用効率を向上させることができる。
【００８８】
例えば、図２に示すデータ用途別の管理レベル設定テーブル１５０にあるように、重要なデータ（管理レベル「Ｌｅｖｅｌ１」）であるプログラムデータ、セキュリティデータがＮＡＮＤデバイスの容量に対して５％のデータ量、中程度の重要なデータ（管理レベル「Ｌｅｖｅｌ２」）のメールデータ他が５％のデータ量とし、「Ｌｅｖｅｌ１」、「Ｌｅｖｅｌ２」のデータ多重化率をそれぞれ４倍、３倍とした場合、従来方式であると、ＮＡＮＤ容量全体の３５％（＝５％×４＋５％×３）の容量を消費することになる。
【００８９】
本実施の形態では、重要なデータほどビットエラーに対する信頼性の高いブロックに書込む方式であるから、多重化率を下げて、２倍にしたとすると、ＮＡＮＤ容量全体の２０％（＝５％×２＋５％×２）となる。この結果、本実施の形態では、１５％（＝３５％−２０％）分、メモリの利用効率をあげることができる。
【００９０】
また、多重化を行わない場合は、ＮＡＮＤ容量全体の１０％（＝５％×１＋５％×１）となる。この場合、本実施の形態では、２５％（＝３５％−１０％）分、メモリの利用効率をあげることができる。
【００９１】
本発明は、上記の実施の形態のように、記録用テーブル１２１を揮発メモリ１２に格納し、不揮発メモリ（＃１）１３の読出し時に、ＥＣＣ訂正回路１４で訂正したビット数を記録しつづける方式であるので、端末装置１の電源ＯＦＦ時に不揮発メモリ（＃２）１５へ記録用テーブル１２１を退避（パックアップ）する必要がある。
【００９２】
本発明は、上記の実施の形態と異なり、記録用テーブル１２１を不揮発性メモリ（＃２）１５に格納したまま、不揮発メモリ（＃１）１３の読出し時に、ＥＣＣ訂正回路１４で訂正した数を記録しつづけることも可能である。不揮発性メモリ（＃２）１５は、ＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）等のビット毎の書き換えが可能で、書き換え回数の多いデバイスを用いる例である。この場合、端末の電源ＯＦＦ時もデータ退避（バックアップ）が不用になる利点がある。
【符号の説明】
【００９３】
１  端末装置
１１  ＣＰＵ
１２  揮発メモリ
１３  不揮発メモリ（＃１）
１４  ＥＣＣ訂正回路
１５  不揮発性メモリ（＃２）
１６  周辺回路
１２１  記録用テーブル
１２２  ページ毎のＥＣＣ訂正数
１２３  ブロック内訂正数
１２４  リード回数
１２５  要求管理レベル
１２６  判定管理レベル
１２７  イレースフラグ
１５０  管理レベル設定テーブル
１５１  管理レベル定義情報テーブル
１５２  判定リード回数
１５３  判定ブロック内訂正数
１５４  制限リード回数
【図１】
2011059907.tif 000003
【図２】
2011059907.tif 000004
【図３】
2011059907.tif 000005
【図４】
2011059907.tif 000006
【図５】
2011059907.tif 000007
【図６】
2011059907.tif 000008
【図７】
2011059907.tif 000009
【図８】
2011059907.tif 000010