(57)【要約】【課題】  不揮発性メモリ１４の書き換え寿命によりデータの書き換えが出来ない状態となっても、データが失われず処理を続けることが可能となり、ＩＣカードＣの寿命を延ばすことが可能になる。また、不揮発性メモリ１４上に書き換えが出来ないブロックが生じた時点で不揮発性メモリ１４上の未使用ブロックから代替領域を割り当てるため、予め代替領域を確保しておく必要がなく、メモリの利用効率が良い。【解決手段】  不揮発性メモリ１４に対するデータの書込み異常が発生した場合、データの書込み異常となった不揮発性メモリ１４上の記憶領域（ブロック）を放棄し、不揮発性メモリ１４上の空き領域（未使用ブロック）を代替領域として割り当て、以後、データの書込み異常となった不揮発性メモリ１４上の記憶領域については代替領域を使用するようにしたものである。【選択図】      図１
2006107363.tif 000002
【特許請求の範囲】
【請求項１】
データの書き換えが可能な不揮発性メモリと、
前記不揮発性メモリにおけるデータの書込み対象とする記憶領域のアドレスを指定する制御手段と、
この制御手段により指定されたアドレスの記憶領域へのデータの書込み異常が発生した場合、前記記憶領域のアドレスを前記記憶領域に対する代替領域のアドレスに変換するためのアドレス変換情報を設定する設定手段と、
この設定手段により設定されたアドレス変換情報に基づいて前記制御手段が指定するアドレスを変換するアドレス変換手段と、
を具備することを特徴とする携帯可能電子装置。
【請求項２】
さらに、前記制御手段により指定されたアドレスの記憶領域へのデータの書込み異常が発生した場合、前記不揮発性メモリ上における空き領域を検出する検出手段を有し、
前記設定手段は、前記データの書込み異常が発生した記憶領域のアドレスを前記検出手段により検出した空き領域のアドレスに変換するアドレス変換情報を設定する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
前記アドレス変換手段は、前記設定手段により設定されたアドレス変換情報に基づいて前記制御手段が指定するアドレスを演算処理し、その演算結果を出力する演算回路である、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項４】
前記演算回路は、前記設定手段により設定されたアドレス変換情報と前記制御手段が指定するアドレス信号との排他的論理和を算出するＸＯＲ回路である、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項５】
データの書き換えが可能な不揮発性メモリと、
前記不揮発性メモリに対してデータの書込み対象とする記憶領域のアドレスを指定してデータの書込処理を行う書込手段と、
この書込手段により前記不揮発性メモリにおけるデータの書込み対象の記憶領域にデータが正常に書き込まれたか否かを判断する判断手段と、
この判断手段により前記不揮発性メモリにおけるデータの書込み対象の記憶領域にデータが正常に書き込まれていないと判断した場合、前記データの書込み対象の記憶領域のアドレスを前記記憶領域に対する代替領域のアドレスに変換するためのアドレス変換情報を設定する設定手段と、
この設定手段により設定されたアドレス変換情報に基づいて指定されるアドレスを変換するアドレス変換手段と、
前記設定手段により設定されたアドレス変換情報に基づいて前記アドレス変換手段により変換されるアドレスの代替領域に前記データを書き込む処理手段と、
を具備することを特徴とする携帯可能電子装置。
【請求項６】
データの書き換えが可能な不揮発性メモリを有する携帯可能電子装置に用いられるメモリアクセス方法であって、
前記不揮発性メモリに対してデータの書込み対象とする記憶領域のアドレスを指定してデータの書込処理を行い、
前記書込処理により前記不揮発性メモリにおけるデータの書込み対象の記憶領域にデータが正常に書き込まれたか否かを判断し、
この判断により前記不揮発性メモリにおけるデータの書込み対象の記憶領域にデータが正常に書き込まれていないと判断した場合、前記データの書込み対象の記憶領域のアドレスを前記記憶領域に対する代替領域のアドレスに変換するためのアドレス変換情報を設定し、
この設定されたアドレス変換情報に基づいて指定されるアドレスを変換し、
前記設定されたアドレス変換情報に基づいて変換されるアドレスの代替領域に前記データを書き込む。
ことを特徴とする携帯可能電子装置に用いられるメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、キャッシュカードやクレジットカードなどの種々の用途に利用されるＩＣカードなどの不揮発性メモリを有する携帯可能電子装置とこのような携帯可能電子装置に用いられるメモリアクセス方法に関する。
【背景技術】
【０００２】
従来、キャッシュカードやクレジットカード等として利用される携帯可能電子装置としてのＩＣカードは、カード状の筐体内に、ＣＰＵ、不揮発性メモリ、プログラムメモリ、作業用メモリ、および有線若しくは無線通信による外部機器との通信部などの機能を実現するためのＬＳＩチップを有している。上記のようなＩＣカードに用いられる不揮発性メモリは、記憶素子としてＥＥＰＲＯＭやフラッシュメモリなどから構成されている。このような構成の不揮発性メモリでは、書き込み（書き換え）回数に数万回〜数十万回という制限（寿命）がある。
【０００３】
しかしながら、ＩＣカードの使用目的や使用頻度によっては、不揮発性メモリ上の特定のデータ（所定のメモリ領域に書き込まれるデータ）が頻繁に書き換えられることがある。このような場合、上記したような不揮発性メモリの書き換え回数に対する制限は、不揮発性メモリ上の頻繁に書き換えられる特定のデータに対しては十分に大きいものとは言い難い。さらに、ＩＣカードの不揮発性メモリ上において書き込みエラーが発生した場合、当該データが失われてＩＣカード自体が使用できなくなってしまうことがあるという問題がある。このような不揮発性メモリの寿命を延ばす技術としては、特開２００２−２７８８５０号公報（特許文献１）あるいは特開２００３−２０３０１６号公報（特許文献２）などが提案されている。
【０００４】
例えば、上記特許文献１では、書き換え回数に制限のある不揮発性メモリ上に複数のデータ書き込み領域を確保し、更にどの書き込み領域を使用しているかを示すポインタ領域を設け、データの書き換えが発生する毎にデータを実際に書き込む領域を変更（ローテーション）すると共にどの書き込み領域に書き込んだかをポインタ領域に記録することによって特定の不揮発性メモリ領域に対する書き換え回数を減らす技術について記載されている。
【０００５】
しかしながら、上記特許文献１に記載されている技術では、ポインタ領域がデータ書き込み領域と同じ不揮発性メモリ上にあるため、データ書き込み領域の書き換え回数が減ってもポインタ領域の書き換えはデータ書き換えの都度実行されるため、ポインタ領域の書き換え回数がデータ書き込み領域よりも先に制限回数に達してしまうという問題点がある。
【０００６】
また、上記特許文献２では、複数の単位領域（ブロック）を有するフラッシュメモリのデータを書き換える際、それまでのデータを上書きせず、未使用かつ書き換え回数が少ないブロックを選択してそこに新しいデータを書き込む技術について記載されている。
【０００７】
しかしながら、上記特許文献２に記載されている技術では、フラッシュメモリのブロック単位でデータ書き込みを管理しているために、使用されない無駄なメモリ領域が発生し易く、限られたメモリ容量しか持たないＩＣカード用のＬＳＩに設ける不揮発性メモリとしては不向きであるという問題点がある。
【０００８】
さらに、上記特許文献１及び上記特許文献２では両者ともに、データ更新の都度、ポインタ領域等への書き込みが新たに発生するために、書き込み速度の遅い不揮発性メモリでは処理時間が増大してしまうという問題点もある。
【特許文献１】特開２００２−２７８８５０号公報
【特許文献２】特開２００３−２０３０１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記のように、従来のＩＣカードでは、不揮発性メモリ上の同一の記憶領域へのデータの書き込み（書き換え）回数に寿命があり、頻繁に書き換えられるデータに対して、書き込みエラーが発生した場合は当該データが失われてＩＣカード自体が使用できなくなってしまうことがあるという問題点がある。さらに、従来の技術では、不揮発性メモリの寿命を延ばすために、データの書込処理ごとに通常の書込処理以外の余分なプログラム上の処理を行う必要があるため、不揮発性メモリへのデータの書込処理に要する処理時間が増えて処理自体が遅くなってしまうという問題点がある。
【００１０】
この発明は、上記のような問題点を解決するものであり、不揮発性メモリ上の一部の記憶領域においてデータの書込み異常が発生した場合であっても、そのデータを安全かつ効率的に保持することができる携帯可能電子装置と携帯可能電子装置に用いられるメモリアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
この発明の携帯可能電子装置は、データの書き換えが可能な不揮発性メモリと、前記不揮発性メモリにおけるデータの書込み対象とする記憶領域のアドレスを指定する制御する制御手段と、この制御手段により指定されたアドレスの記憶領域へのデータの書込み異常が発生した場合、前記記憶領域のアドレスを前記記憶領域に対する代替領域のアドレスに変換するためのアドレス変換情報を設定する設定手段と、この設定手段により設定されたアドレス変換情報に基づいて前記制御手段が指定するアドレスを変換するアドレス変換手段とを有する。
【００１２】
この発明の携帯可能電子装置は、データの書き換えが可能な不揮発性メモリと、前記不揮発性メモリに対してデータの書込み対象とする記憶領域のアドレスを指定してデータの書込処理を行う書込手段と、この書込手段により前記不揮発性メモリにおけるデータの書込み対象の記憶領域にデータが正常に書き込まれたか否かを判断する判断手段と、この判断手段により前記不揮発性メモリにおけるデータの書込み対象の記憶領域にデータが正常に書き込まれていないと判断した場合、前記データの書込み対象の記憶領域のアドレスを前記記憶領域に対する代替領域のアドレスに変換するためのアドレス変換情報を設定する設定手段と、この設定手段により設定されたアドレス変換情報に基づいて指定されるアドレスを変換するアドレス変換手段と、前記設定手段により設定されたアドレス変換情報に基づいて前記アドレス変換手段により変換されるアドレスの代替領域に前記データを書き込む処理手段とを有する。
【００１３】
この発明の携帯可能電子装置に用いられるメモリアクセス方法は、データの書き換えが可能な不揮発性メモリを有する携帯可能電子装置に用いられる方法であって、前記不揮発性メモリに対してデータの書込み対象とする記憶領域のアドレスを指定してデータの書込処理を行い、前記書込処理により前記不揮発性メモリにおけるデータの書込み対象の記憶領域にデータが正常に書き込まれたか否かを判断し、この判断により前記不揮発性メモリにおけるデータの書込み対象の記憶領域にデータが正常に書き込まれていないと判断した場合、前記データの書込み対象の記憶領域のアドレスを前記記憶領域に対する代替領域のアドレスに変換するためのアドレス変換情報を設定し、この設定されたアドレス変換情報に基づいて指定されるアドレスを変換し、前記設定されたアドレス変換情報に基づいて変換されるアドレスの代替領域に前記データを書き込む。
【発明の効果】
【００１４】
この発明によれば、不揮発性メモリ上の一部の記憶領域においてデータの書込み異常が発生した場合であっても、そのデータを安全かつ効率的に保持することができる携帯可能電子装置と携帯可能電子装置に用いられるメモリアクセス方法を提供できる。
【発明を実施するための最良の形態】
【００１５】
以下、この発明を実施するための最良の形態について図面を参照しつつ説明する。
【００１６】
図１は、この発明の実施の形態に係る携帯可能電子装置としてのＩＣカードＣの構成例を示すブロック図である。
【００１７】
上記ＩＣカードＣは、図１に示すようなＩＣカード処理装置１からの電源供給により動作可能な状態となり、上記ＩＣカード処理装置１からのコマンドに応じて動作するものである。上記ＩＣカード処理装置１は、ＩＣカードＣに対して種々の処理を要求するコマンドを供給するものであり、例えば、上記ＩＣカードＣがキャッシュカードやクレジットカードとして利用される運用形態においては、各種の取引処理を行う自動取引装置として機能する。
【００１８】
また、上記ＩＣカードＣは、上記ＩＣカード処理装置１と物理的に接触して通信を行う接触式の携帯可能電子装置（接触式ＩＣカード）であっても良いし、アンテナや無線通信部等により上記ＩＣカード処理装置１と非接触の状態で無線通信を行う非接触式の携帯可能電子装置（非接触式ＩＣカード）であっても良い。
【００１９】
なお、本実施の形態では、接触式ＩＣカードを想定して説明するが、接触式ＩＣカードと非接触式ＩＣカードとはＩＣカード処理装置１との通信方式が異なるだけである。このため、以下に説明する実施の形態は、非接触式ＩＣカードにも同様に適用できる。
【００２０】
図１に示すように、上記ＩＣカードＣは、カード状の筐体内に内蔵されるＣＰＵ１１、ＲＡＭ１２、ＲＯＭ１３、主不揮発性メモリ１４、通信インターフェース１５、アドレス制御回路１６、データバス１７およびアドレスバス１８などから構成される。これらの各部は、図示しないＬＳＩチップ上に構成され、当該ＩＣカードＣ本体内に埋設される。
【００２１】
また、上記ＣＰＵ１１、ＲＡＭ１２、ＲＯＭ１３、主不揮発性メモリ１４、通信インターフェース１５およびアドレス制御回路１６等は、データバスを介してデータの送受信を行うようになっている。また、上記主不揮発性メモリ１４は、上記アドレスバス１８及びアドレス制御回路１６を介して上記ＣＰＵ１１から与えられるアドレス信号によりアクセスが制御される。
【００２２】
上記ＣＰＵ１１は、ＩＣカードＣ全体の制御を司るものである。上記ＣＰＵ１１は、上記ＲＯＭ１３あるいは主不揮発性メモリ１４に記憶された制御プログラムに基づいて動作する。上記ＣＰＵ１１は、上記のような制御プログラムに基づいて各部の動作制御を実現している。例えば、上記ＣＰＵ１１は、上記主不揮発性メモリ１４へのデータの書き込み処理（書込手段）、上記主不揮発性メモリ１４からのデータの読み出し処理（読出手段）、あるいは種々の判断処理（判断手段）などを実行する機能を有している。また、上記ＣＰＵ１１は、アドレス制御回路１６にアドレス変換情報を書き込む処理（設定手段）を行う機能を有している。
【００２３】
上記ＲＡＭ１２は、ワーキングメモリとして機能する揮発性のメモリである。上記ＲＡＭ１２は、上記ＣＰＵ１１が処理中のデータなどを一時保管するバッファとして機能し、例えば、上記通信インターフェース１５による上位装置としてのＩＣカード処理装置１との通信データを一時保管するようになっている。
【００２４】
上記ＲＯＭ１３は、予め制御用のプログラムや制御データなどが記憶されている不揮発性のメモリである。上記ＲＯＭ１３は、製造段階でＩＣカードＣ内に組み込まれるものであり、上記ＲＯＭ１３に記憶されている制御プログラムは、予め当該ＩＣカードＣの仕様に応じて組み込まれる。
【００２５】
上記主不揮発性メモリ１４は、データの書き込みが可能な不揮発性のメモリである。上記不揮発性メモリ１４は、例えば、ＥＥＰＲＯＭあるいはフラッシュメモリなどにより構成される。上記不揮発性メモリ１４には、当該ＩＣカードＣの使用目的に応じて当該ＩＣカードＣを使用（運用）するために必要なプログラムファイルやデータファイルなどが定義され、それらのファイルにデータが書き込まれるようになっている。例えば、当該ＩＣカードＣの認証処理に用いる鍵データ等の設定情報や当該ＩＣカードＣを使用するごとに書き換えられる使用履歴情報などの情報は、上記主不揮発性メモリ１４に記録される。
【００２６】
上記アドレス制御回路１６は、上記主不揮発性メモリ１４にアクセスするアドレスを制御する回路である。上記ＣＰＵ１１、上記主不揮発性メモリ１４及び上記アドレス制御回路１６の関係については、後で詳細に説明する。
【００２７】
上記通信インターフェース１５は、上位機器としてのＩＣカード処理装置１とのデータ通信を行う通信インターフェースである。また、当該ＩＣカードＣは、上記通信インターフェース１５により上記ＩＣカード処理装置１から各部を動作させるための電源供給を受けるようになっている。上記通信インターフェース１５は、上記ＩＣカード処理装置１とのコンタクト部や通信を制御する通信制御部等により構成される。
【００２８】
なお、上記ＩＣカードＣを接触式ＩＣカードで実現する場合、上記通信インターフェース１５は、図示しないコンタクト部や通信制御部などにより構成される。この場合、ＩＣカードＣは、上記通信インターフェース１５を介してＩＣカード処理装置１から電源供給を受けてＩＣカードＣ内の各部を動作させ、当該ＩＣカード処理装置１とのデータの送受信を行う。
【００２９】
また、ＩＣカードＣを非接触式ＩＣカード（無線カード）で実現する場合、上記通信インターフェース１５は、無線通信の通信制御行う通信部と図示しない無線通信用のアンテナとから構成される。この場合、上記通信インターフェース１５は、上記無線通信用のアンテナを介してＩＣカード処理装置１とのデータの送受信を行う。また、ＩＣカードＣを非接触式ＩＣカードで実現する場合、当該ＩＣカードＣは、図示しない電源生成部により上記通信インターフェース１５が上記ＩＣカード処理装置１から受信した電波からＩＣカードＣ内の各部を動作させるための電源を生成する。
【００３０】
次に、上記のように構成されるＩＣカードＣにおける主不揮発性メモリ１４に対するアドレス制御について説明する。  
図２は、上記アドレス制御回路１６によるアドレス変換を説明するためのブロック図である。  
図２に示すように、上記ＣＰＵ１１から出力されるアドレス信号は、アドレス制御回路１６を介して主不揮発性メモリ１４に供給される。また、上記アドレス制御回路１６は、図２に示すように、副不揮発性メモリ２１と排他的論理和回路（ＸＯＲ回路）２２とを有している。
【００３１】
上記副不揮発性メモリ２１は、書き換え可能な不揮発性のメモリにより構成される。上記副不揮発性メモリ２１には、上記ＣＰＵ１１から出力されるアドレスに対応して当該アドレスを変換するための値（アドレス変換情報）が設定される。上記ＸＯＲ回路２２は、上記副不揮発性メモリ２１に設定されているアドレス変換情報と、上記ＣＰＵ１１から出力されるアドレスとの排他的論理和を算出し、その演算結果を主不揮発性メモリ１４へ出力する。
【００３２】
また、本実施の形態では、上記主不揮発性メモリ１４への書込みエラーが発生した場合に、上記主不揮発性メモリ１４の記憶領域をブロック単位で変更するものとする。このため、本実施の形態では、上記副不揮発性メモリ２１に設定されるアドレス変換情報、及び上記ＸＯＲ回路２２が排他的論理和を算出するアドレス信号は、上記ＣＰＵ１１が指定する全アドレス信号のうち上記主不揮発性メモリ１４のブロックを指定する信号部分であるものとする。
【００３３】
例えば、主不揮発性メモリ１４へのデータの書き込み単位である１ブロックのサイズを６４バイト、ブロック数が２５６で全容量が１６Ｋバイトとする。この場合、主不揮発性メモリ１４におけるアドレスを指定するアドレス信号は、１４本必要となる。また、アドレス信号の上位８ビット（Ａ１３〜Ａ６）は、主不揮発性メモリ１４におけるブロックを指定するために用いられ、アドレス信号の下位６ビット（Ａ５〜Ａ０）は、主不揮発性メモリにおける１つのブロック（上位８ビットで指定されるブロック）内のバイト指定に用いられる。
【００３４】
主不揮発性メモリ１４が上記のように構成される場合、上記アドレス制御回路１６の副不揮発性メモリ２１には、容量が８ビット×２５６バイトの不揮発性のメモリが用いられる。これにより、上記副不揮発性メモリ２１には、Ａ１３〜Ａ６に対応する信号（Ｄ７〜Ｄ０）としてのアドレス変換情報が記憶（設定）される。このアドレス変換情報は、上記ＣＰＵ１１により副不揮発性メモリに書き込まれる（設定される）情報である。なお、副不揮発性メモリ２１に記憶されるアドレス変換情報（Ｄ７〜Ｄ０）の初期値は、全て’０’とする。
【００３５】
上記アドレス制御回路１６のＸＯＲ回路２２は、上記副不揮発性メモリ２１に設定されているアドレス変換情報としての信号（Ｄ７〜Ｄ０）と、上記ＣＰＵ１１から与えられるアドレス信号の上位８ビット（Ａ１３〜Ａ６）とのビット毎の排他的論理和（Ａ１３’〜Ａ６’）を算出する。上記ＸＯＲ回路２２は、排他的論理和の演算結果としての信号（Ａ１３’〜Ａ６’）’を主不揮発性メモリ１４へアドレス信号の上位８ビット（Ａ１３〜Ａ６）として出力する。なお、上記ＸＯＲ回路２２による排他的論理和は、ソフトウエア的に演算することも可能であるが、本実施の形態ではハードウエア的に演算するものとする。
【００３６】
このような構成により、上記副不揮発性メモリ２１にアドレス変換のためのアドレス変換情報が書き込まれていない初期状態である場合（つまり、Ｄ７〜Ｄ０が全て’０’である場合）、上記ＣＰＵ１１から出力されるアドレス信号Ａ１３〜Ａ６と、上記ＸＯＲ回路２２から出力される信号Ａ１３’〜Ａ６’とは等しい値となる。従って、副不揮発性メモリ２１にアドレス変換のための情報が書き込まれていない状態では、上記ＣＰＵ１１がアクセスしたアドレスは、そのまま主不揮発性メモリ１４のアドレスとなる。
【００３７】
これに対して、上記副不揮発性メモリ２１にアドレス変換情報が書き込まれた場合（つまり、Ｄ７〜Ｄ０が全て’０’でない場合）、上記ＣＰＵ１１から出力されるアドレス信号Ａ１３〜Ａ６と、上記ＸＯＲ回路２２から出力される信号Ａ１３’〜Ａ６’とは異なる値となることがある。すなわち、上記副不揮発性メモリ２１に設定されたアドレス変換情報（初期値でない値）が書き込まれている状態では、上記ＣＰＵ１１がアクセスしたアドレスは、アドレス変換情報により変換された主不揮発性メモリ１４のアドレスとなる。
【００３８】
ここで、アドレス信号に対する制御の具体例について説明する。
【００３９】
まず、上記主不揮発性メモリ１４のアドレスがＡ１３〜Ａ６：‘００００１０００’のブロックに書き込み異常が発生した場合を想定する。この場合、上記ＣＰＵ１１は、上記主不揮発性メモリ１４の空き領域をチェックする。このチェックの結果として、上記ＣＰＵ１１が上記主不揮発性メモリ１４のアドレスＡ１３〜Ａ６：‘１０００００００’のブロックを、上記主不揮発性メモリ１４のアドレスＡ１３〜Ａ６：‘００００１０００’のブロックの代替領域として選択したものとする。
【００４０】
この場合、上記ＣＰＵ１１は、アドレス信号がＡ１３〜Ａ６：‘００００１０００’の場合に選択される副不揮発性メモリ２１のアドレス変換情報としてＤ７〜Ｄ０：‘１０００１０００’を書き込む。この状態において、上記ＣＰＵ１１がアドレスＡ１３〜Ａ６：‘００００１０００’を出力すると、実際に上記主不揮発性メモリ１４に与えられるアドレスは、‘００００１０００’と‘１０００１０００’との上記ＸＯＲ回路２２による排他的論理和であるＡ１３’〜Ａ６’：‘１０００００００’となる。  
これにより、上記ＣＰＵ１１が指定する主不揮発性メモリ１４のエラーブロック（書込み異常が発生した記憶領域）は、主不揮発性メモリ１４上の代替領域のアドレスに変換される。
【００４１】
一方、ＣＰＵ１１が他のブロックを指定するアドレス信号（Ａ１３〜Ａ６≠‘００００１０００’）を出力した場合、アドレス信号がＡ１３〜Ａ６≠‘００００１０００’の場合に選択される副不揮発性メモリ２１のアドレス変換情報は全て初期値（Ｄ７〜Ｄ０：‘００００００００’）である。
【００４２】
このため、上記ＣＰＵ１１が出力したアドレス信号（Ａ１３〜Ａ６≠‘００００１０００’）とＤ７〜Ｄ０：‘００００００００’との上記ＸＯＲ回路２２による排他的論理和は、上記ＣＰＵ１１が出力したアドレス信号（Ａ１３〜Ａ６≠‘００００１０００’）と同じ値になり、上記ＣＰＵ１１が出力したアドレス値と実際に主不揮発性メモリ１４に与えられるアドレス値とは変化しない。
【００４３】
次に、上記のような不揮発性メモリ１４を有するＩＣカードＣにおける書き込み処理について説明する。  
図３は、ＩＣカードＣの書き込み処理の動作例を説明するためのフローチャートである。  
まず、上記主不揮発性メモリ１４に書き込むべきデータを取得すると、上記ＣＰＵ１１は、当該データを書き込む上記主不揮発性メモリ１４上の記憶領域（ブロック）を決定する（ステップＳ１０）。これにより、データの書込み処理の対象とする上記主不揮発性メモリ１４上の記憶領域（ブロック）を決定すると、上記ＣＰＵ１１は、当該記憶領域のデータを読み出し、ＲＡＭ１２上にコピーする（ステップＳ１１）。
【００４４】
上記ＲＡＭ１２上にデータをコピーすると、上記ＣＰＵ１１は、さらに、上記主不揮発性メモリ１４に書き込むべきデータにより上記ＲＡＭ１２上のデータを更新する（ステップＳ１２）。これにより、ＲＡＭ１２上には、データの書込み処理の対象となる上記主不揮発性メモリ１４の記憶領域にデータが正常に書き込まれた状態（実際に書き込むデータ）が保持される。
【００４５】
上記ＲＡＭ１２上に実際に書き込むべきデータを保持すると、上記ＣＰＵ１１は、上記主不揮発性メモリ１４への当該データの書き込み処理に対するリトライカウンタを０にセット（リセット）する（ステップＳ１３）。このリトライカウンタは、例えば、当該データの書き込み処理を行う際に上記ＲＡＭ１２上に形成されるものであり、書き込み処理を再試行（リトライ）するごとに値がカウントアップされるデータ書込処理のリトライ回数のカウンタである。
【００４６】
上記リトライカウンタをセットすると、上記ＣＰＵ１１は、上記アドレスバス１８を介して上記ステップＳ１０で決定した上記主不揮発性メモリ１４上の記憶領域（ブロック）を指定するとともに、上記データバス１７を介してＲＡＭ１２上に保持しているデータを上記主不揮発性メモリ１４上の指定されている記憶領域に書き込む書込処理を行う（ステップＳ１４）。
【００４７】
なお、上記主不揮発性メモリ１４がＥＥＰＲＯＭで構成される場合、上記ＣＰＵ１１は、上記主不揮発性メモリ１４上の指定した記憶領域に当該データを上書きすることにより当該データの書込処理を実行する。また、上記主不揮発性メモリ１４がフラッシュメモリで構成される場合、上記ＣＰＵ１１は、上記主不揮発性メモリ１４上の指定した記憶領域をブロック単位ごとに一旦消去してから当該データを書き込むことにより当該データの書込処理を実行する。
【００４８】
上記主不揮発性メモリ１４上の指定した記憶領域へのデータの書込み処理を終了すると、上記ＣＰＵ１１は、上記主不揮発性メモリ１４上の書込み処理を行った記憶領域（指定した記憶領域）に記憶されているデータを読み出す（ステップＳ１５）。これは、データの書込み処理により上記主不揮発性メモリ１４上の指定した記憶領域にデータが正しく記録されているか否かを判定するための確認読取（ベリファイリード）である。
【００４９】
これにより、上記主不揮発性メモリ１４上の指定した記憶領域に記憶されているデータを読み出すと、上記ＣＰＵ１１は、上記記憶領域に書き込んだデータと実際に上記記憶領域から読み出したデータとが一致するか否かを判断する（ステップＳ１６）。この判断により両者のデータが一致すると判断した場合（ステップＳ１６、ＹＥＳ）、上記ＣＰＵ１１は、当該データの書き込みが正常に完了したのと判断して当該書込み処理を正常終了する。
【００５０】
また、上記判断により指定した記憶領域に書き込んだデータと指定した記憶領域から実際に読み出したデータとが一致しないと判断した場合（ステップＳ１６、ＮＯ）、上記ＣＰＵ１１は、リトライカウンタの値を加算することによりリトライカウンタをカウントアップする（ステップＳ１７）。
【００５１】
上記リトライカウンタをカウントアップすると、上記ＣＰＵ１１は、リトライカウンタの値（リトライ回数）が所定の制限回数以上であるか否かを判断する（ステップＳ１８）。この制限回数は、データの書込処理に対する制限回数として予め上記ＲＯＭ１３などに記録される値である。また、上記リトライ回数は、不揮発性メモリに記憶するようにすることにより任意に設定できるようにしても良い。
【００５２】
上記判断によりリトライ回数が所定の制限回数未満であると判断した場合（ステップＳ１８、ＹＥＳ）、上記ＣＰＵ１１は、上記ステップＳ１４へ戻り、上記主不揮発性メモリ１４上の指定した記憶領域へのデータの書き込みからの処理を再度実行（リトライ）する。
【００５３】
また、上記判断によりリトライ回数が所定の制限回数以上であると判断した場合（ステップＳ１８、ＮＯ）、上記ＣＰＵ１１は、上記主不揮発性メモリ１４上に当該書込み処理でデータを書き込むべきであった記憶領域の代替として使える空き領域が有るか否かを判断する（ステップＳ１９）。
【００５４】
ここでは、例えば、上記主不揮発性メモリ１４に空き領域（未使用領域）が存在し、かつ、その空き領域がデータを書き込むべき領域（ブロック）の代替えとして使用できるか否かにより代替として使える空き領域（代替領域）が有るか否かを判断する。
【００５５】
すなわち、本実施の形態では、予め主不揮発性メモリ１４上に記憶領域に対する代替領域を設定しておく必要がない。言い換えると、本実施の形態では、上記主不揮発性メモリ１４上に予め代替領域を設定しておかなくとも、主不揮発性メモリ１４上のある記憶領域（ブロック）へのデータの書込み異常が発生した時点で、空き領域を書込み異常が発生した領域（ブロック）の代替領域とすることが可能となる。この結果、上記主不揮発性メモリ１４の記憶領域を効率的に使用することができる。
【００５６】
上記判断により上記主不揮発性メモリ１４上に指定した記憶領域の代替として使用できる空き領域がないと判断した場合（ステップＳ１９、ＮＯ）、上記ＣＰＵ１１は、上記主不揮発性メモリ１４への当該データの書き込みが不可能であると判断し（ステップＳ２０）、当該データの書込処理を書込みエラーとして当該処理を終了する。
【００５７】
また、上記判断により上記主不揮発性メモリ１４上に指定した記憶領域の代替として使用できる空き領域があると判断した場合（ステップＳ１９、ＹＥＳ）、上記ＣＰＵ１１は、上記ステップＳ１０で指定した主不揮発性メモリ１４上の記憶領域（ブロック）のアドレスを、代替として使用できる空き領域（ブロック）のアドレスに変換するためのアドレス変換情報を上記アドレス制御回路１６の副不揮発性メモリ２１に書き込む（ステップＳ２１）。
【００５８】
上記アドレス変換情報を上記副不揮発性メモリ２１に書き込んだ後、上記ＣＰＵ１１は、再度、上記ステップＳ１３へ戻り、リトライカウンタのリセット、データの書込み処理、ベリファイリード等を行う。この際、上記ＣＰＵ１１では上記ステップＳ１０で決定したアドレスを再度指定するが、このアドレスは上記アドレス変換情報によって上記アドレス制御回路１６で代替として使用される領域（代替領域）のアドレスに変換される。
【００５９】
上記のような処理により、データの書込み異常により代替領域を設定した記憶領域（ブロック）のアドレスは、上記アドレス制御回路１６により代替領域（ブロック）のアドレスに変換される。つまり、上記ステップＳ２１にてアドレス変換情報を設定した後は、上記ＣＰＵ１１側の制御が同様であっても、上記ＣＰＵ１１が指定するアドレスは、上記アドレス制御回路１６でハードウエア的かつ自動的に変換される。これにより、データの書込み異常に伴って代替領域を設定した記憶領域（ブロック）へのアクセスは、代替領域へのアクセスとして実行される。
【００６０】
従って、上記ＣＰＵ１１側では、書込み異常が発生した記憶領域に対する代替領域の実際のアドレスを意識することなく、主不揮発性メモリ１４へのアクセス制御を行うことができる。この結果として、書込み異常が発生した記憶領域を代替領域に変更しても、上記ＣＰＵ１１が実行する制御には、変更を加える必要がない。さらに、アドレス変換は、アドレス制御回路１６によりハードウエア的に実行されるため、ＣＰＵ自身がアドレス変換等の処理を行う必要がなく、ＣＰＵ１１が主不揮発性メモリ１４にアクセスする際に余分な処理時間が発生することがない。
【００６１】
上記のように、本実施の形態では、主不揮発性メモリに対するデータの書込み異常が発生した場合、データの書込み異常となった主不揮発性メモリ上の記憶領域（ブロック）を放棄し、主不揮発性メモリ上の空き領域（未使用ブロック）を代替領域として割り当て、以後、データの書込み異常となった主不揮発性メモリ上の記憶領域（ブロック）については代替領域を使用するようにしたものである。  
これにより、主不揮発性メモリの書き換え寿命によりデータの書き換えが出来ない状態となっても、データが失われず処理を続けることが可能となり、ＩＣカードの寿命を延ばすことが可能になる。
【００６２】
また、主不揮発性メモリ上に書き換えが出来ないブロックが生じた時点で不揮発性メモリ上の未使用ブロックから代替領域を割り当てる。このため、予め代替領域を確保しておく必要がなく、メモリの利用効率が良い。
【００６３】
さらに、データの書込み異常となった主不揮発性メモリ上の記憶領域（ブロック）に代替領域を割り当てた場合、ＣＰＵがデータの書込み異常となった主不揮発性メモリ上の記憶領域（ブロック）のアドレスを指定してもアドレス制御回路がハードウェア的に代替領域のアドレスに変換し、主不揮発性メモリ上の代替領域にアクセスする。  
これにより、ＣＰＵが通常の主不揮発性メモリに対するアクセス処理において、メモリ管理のためのソフトウエアの変更やアドレス変換などの余分な処理や管理データの書き込みなどを行う必要なく、処理速度を低下させることがない。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施の形態に係るＩＣカードの構成例を示すブロック図。
【図２】アドレス制御回路によるアドレス変換を説明するためのブロック図である。
【図３】ＩＣカードの書き込み処理の動作例を説明するためのフローチャートである。
【符号の説明】
【００６５】
Ｃ…ＩＣカード（携帯可能電子装置）、１１…ＣＰＵ、１２…ＲＡＭ、１３…ＲＯＭ、１４…主不揮発性メモリ、１５…通信インターフェース、１６…アドレス制御回路、１７…データバス、１８…アドレスバス、２１…副不揮発性メモリ、２２…ＸＯＲ回路
【図１】
2006107363.tif 000003
【図２】
2006107363.tif 000004
【図３】
2006107363.tif 000005