(57)【要約】【課題】不揮発性半導体メモリの診断を高速に行う。【解決手段】メモリセルアレイ６１の各行Ｘ１−Ｘ１６から１つの読み出し単位のデータを読み出しエラーの有無を調べる（Ａ）。エラーが検出されたデータに対応する行Ｘ１６についてはすべての読み出し単位のデータを読み出す（Ｂ）。これにより、不揮発性半導体メモリ６０の診断に要する時間を短くすることができる。【選択図】図６
2008071490.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリと、
前記不揮発性半導体メモリを診断する検査回路とを備え、
前記不揮発性半導体メモリは、
行および列に複数の読み出し単位に分割されたメモリセルアレイと、
前記複数の読み出し単位の各々に書き込むべきデータのエラー訂正符号化を行い、前記複数の読み出し単位の各々から読み出されたデータのエラー検出およびエラー訂正を行うエラー訂正回路とを含み、
前記検査回路は、
前記メモリセルアレイの各行から一の読み出し単位のデータを読み出すように指示する第１の指示を前記不揮発性半導体メモリに与え、
前記第１の指示に従って読み出されたデータのエラーが前記エラー訂正回路によって検出されると、当該エラーが検出されたデータに対応する行のすべての読み出し単位のデータを読み出すように指示する第２の指示を前記不揮発性半導体メモリに与える
ことを特徴とする半導体集積回路装置。
【請求項２】
請求項１に記載の半導体集積回路装置において、
前記検査回路は、
前記第２の指示に従って読み出されたデータのうち前記エラー訂正回路によってエラーが検出されなかったデータがあるとき、前記第２の指示に従って読み出されたデータのうち前記エラー訂正回路によってエラーが検出されたデータを再書き込みするように指示する第３の指示を前記不揮発性半導体メモリに与える
ことを特徴とする半導体集積回路装置。
【請求項３】
請求項１に記載の半導体集積回路装置において、
前記検査回路は、
前記第２の指示に従って読み出されたデータのすべてにおいて前記エラー訂正回路によってエラーが検出されたとき、異常を示す信号を出力する
ことを特徴とする半導体集積回路装置。
【請求項４】
請求項１に記載の半導体集積回路装置において、
前記検査回路は、
前記メモリセルアレイの領域のうち不良発生頻度が高いと予想される領域の読み出し単位のデータを読み出すように前記第１の指示を与える
ことを特徴とする半導体集積回路装置。
【請求項５】
請求項１に記載の半導体集積回路装置において、
前記検査回路は、
行ごとに異なる列に対応する読み出し単位のデータを読み出すように前記第１の指示を与える
ことを特徴とする半導体集積回路装置。
【請求項６】
請求項１に記載の半導体集積回路装置において、
前記検査回路は、
前記メモリセルアレイの一の列に対応する読み出し単位のデータを読み出すように前記第１の指示を与え、
前記一の列は、前記第１の指示が与えられるたびに異なる
ことを特徴とする半導体集積回路装置。
【請求項７】
請求項１に記載の半導体集積回路装置において、
ＣＰＵをさらに備え、
前記検査回路は、
前記不揮発性半導体メモリの診断が終了した後に、前記ＣＰＵを起動させるための信号を前記ＣＰＵに与える
ことを特徴とする半導体集積回路装置。
【請求項８】
請求項７に記載の半導体集積回路装置において、
前記検査回路は、
前記第２の指示に従って読み出されたデータのすべてにおいて前記エラー訂正回路によってエラーが検出されたとき、異常を示す信号を前記ＣＰＵに与える
ことを特徴とする半導体集積回路装置。
【請求項９】
請求項８に記載の半導体集積回路装置において、
前記ＣＰＵは、
前記検査回路からの異常を示す信号に応答して起動を停止する
ことを特徴とする半導体集積回路。
【請求項１０】
請求項１から請求項９のいずれか１つに記載の半導体集積回路装置を備える
ことを特徴とするＩＣカード。
【請求項１１】
不揮発性半導体メモリを診断する検査装置であって、
前記不揮発性半導体メモリは、
行および列に複数の読み出し単位に分割されたメモリセルアレイと、
前記複数の読み出し単位の各々に書き込むべきデータのエラー訂正符号化を行い、前記複数の読み出し単位の各々から読み出されたデータのエラー検出およびエラー訂正を行うエラー訂正回路とを含み、
前記検査装置は、
前記メモリセルアレイの各行から一の読み出し単位のデータを読み出すように指示する第１の指示を前記不揮発性半導体メモリに与え、
前記第１の指示に従って読み出されたデータのエラーが前記エラー訂正回路によって検出されると、当該エラーが検出されたデータに対応する行のすべての読み出し単位のデータを読み出すように指示する第２の指示を前記不揮発性半導体メモリに与える
ことを特徴とする検査装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は半導体集積回路装置、ＩＣカードおよび検査装置に関する。さらに詳しくは、不揮発性半導体メモリと当該不揮発性半導体メモリを診断する検査回路とを有する半導体集積回路装置、不揮発性半導体メモリとキャッシュメモリとを有する半導体集積回路装置、当該半導体集積回路装置を備えたＩＣカードおよび不揮発性半導体メモリを診断する検査装置に関する。
【背景技術】
【０００２】
近年、不揮発性半導体メモリを内蔵したＩＣカードが金融分野・交通分野などで普及しつつある。このような分野で利用されるＩＣカードは正常な状態で長期間使用できることが望ましい。ところが、不揮発性半導体メモリへの書き込み動作時にリーダライタからＩＣカードが引き抜かれたり、不揮発性半導体メモリへの書き込み回数が多くなること等の原因でＩＣカードが故障することがある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この発明の目的は、不揮発性半導体メモリを正常な状態で長期間使用することができる半導体集積回路装置を提供することである。
【課題を解決するための手段および発明の効果】
【０００４】
この発明の１つの局面に従うと、半導体集積回路装置は、不揮発性半導体メモリと、検査回路とを備える。不揮発性半導体メモリは、メモリセルアレイと、エラー訂正回路とを含む。メモリセルアレイは、行および列に複数の読み出し単位に分割される。エラー訂正回路は、複数の読み出し単位の各々に書き込むべきデータのエラー訂正符号化を行い、複数の読み出し単位の各々から読み出されたデータのエラー検出およびエラー訂正を行う。検査回路は、不揮発性半導体メモリを診断する。検査回路は、メモリセルアレイの各行から一の読み出し単位のデータを読み出すように指示する第１の指示を不揮発性半導体メモリに与える。第１の指示に従って読み出されたデータのエラーがエラー訂正回路によって検出されると検査回路は、当該エラーが検出されたデータに対応する行のすべての読み出し単位のデータを読み出すように指示する第２の指示を不揮発性半導体メモリに与える。
【０００５】
上記半導体集積回路装置では、検査回路によって不揮発性半導体メモリの診断が行われる。不揮発性半導体メモリの診断では、まず第１の指示が検査回路から不揮発性半導体メモリに与えられる。第１の指示に応答して不揮発性半導体メモリは、メモリセルアレイのある行から１つの読み出し単位のデータを読み出す。そしてメモリセルアレイから読み出されたデータのエラー検出およびエラー訂正処理がエラー訂正回路によって行われる。エラーが検出されなかったときは別の行から１つの読み出し単位のデータが読み出される。通常、不揮発性半導体メモリへの書き込みは行単位で行われる。したがって、書き込み時にエラーが発生した場合には同一の行にあるすべてのメモリセルにエラーが発生している可能性が高い。ゆえに上記半導体集積回路装置では、エラーが検出されなかったときは当該行にあるメモリセルには正しくデータが書き込まれていると判断し、続いて別の行から１つの読み出し単位のデータを読み出すようにしている。一方、エラーが検出されたときは第２の指示が検査回路から不揮発性半導体メモリに与えられる。第２の指示に応答して不揮発性半導体メモリは、当該エラーが検出されたデータに対応する行のすべての読み出し単位のデータを読み出す。このような処理を不揮発性半導体メモリのメモリセルアレイのすべての行に対して行う。
【０００６】
以上のように上記半導体集積回路装置では検査回路を設けているため、不揮発性半導体メモリが正常な状態であるか否かを判定することができる。これにより、不揮発性半導体メモリが故障した状態のままで使用され続けるような状況を防ぐことができる。この結果、不揮発性半導体メモリが正常な状態で長期間使用されることになる。
【０００７】
また、メモリセルアレイの行ごとに１つの読み出し単位のデータを読み出し、エラーが検出されたデータに対応する行についてはすべての読み出し単位のデータを読み出すため、不揮発性半導体メモリの診断に要する時間を短くすることができる。
【０００８】
好ましくは、上記検査回路は、第２の指示に従って読み出されたデータのうちエラー訂正回路によってエラーが検出されなかったデータがあるとき、第２の指示に従って読み出されたデータのうちエラー訂正回路によってエラーが検出されたデータを再書き込みするように指示する第３の指示を不揮発性半導体メモリに与える。
【０００９】
上記エラー訂正回路によって検出されるエラーには以下に示す（ａ），（ｂ）のような種類がある。
（ａ）同一の行にあるメモリセルのうちの一部のメモリセルについてだけ発生するようなエラー
このようなエラーの原因としては、
・メモリセルのデータ保持特性不良により記録データが変化してしまった
・以前のデータがメモリセルに残留していたため正しく書き込めなかった
などが考えられる。このようなエラーは、再度同じデータを書き込むことによって修復することができる。
（ｂ）同一の行にあるすべてのメモリセルについて発生するエラー
このようなエラーの原因としては、
・書き込み時の電源ダウンにより所望のデータが記録できていなかった
などが考えられる。
【００１０】
上記半導体集積回路装置では、第２の指示に従って読み出されたデータのうちエラー訂正回路によってエラーが検出されなかったデータがあるとき、すなわち第２の指示に従って読み出されたデータのうちの一部についてだけエラーが検出されたときは、当該エラーは上述の（ａ）のようなエラーであると判断される。また、当該エラーが検出されたデータについては、データを正しくは読み出せなかったけれどもエラー訂正処理によって正しいデータに訂正されたと判断される。そして第３の指示が検査回路から不揮発性半導体メモリに与えられる。第３の指示に応答して不揮発性半導体メモリは、当該エラーが検出されたデータを再書き込みする。これによりエラーが修復される。
【００１１】
好ましくは、上記検査回路は、第２の指示に従って読み出されたデータのすべてにおいてエラー訂正回路によってエラーが検出されたとき、異常を示す信号を出力する。
【００１２】
上記半導体集積回路装置では、第２の指示に従って読み出されたデータのすべてにおいてエラー訂正回路によってエラーが検出されたとき、当該エラーは上述の（ｂ）のようなエラーであると判断される。また、当該エラーが検出されたデータに対応する行にあるメモリセルのデータは破壊されている、すなわち修復不能であると判断される。そして異常を示す信号が出力される。これにより、メモリセルのデータが破壊された状態のままで不揮発性半導体メモリが使用され続けるような状況を防ぐことができる。
【００１３】
好ましくは、上記検査回路は、メモリセルアレイの領域のうち不良発生頻度が高いと予想される領域の読み出し単位のデータを読み出すように第１の指示を与える。
【００１４】
上述の（ｂ）のようなエラーに対しては、メモリセルアレイの各行から１つの読み出し単位のデータを読み出すことによって十分な診断を行うことができる。しかし上述の（ａ）のようなエラーの場合、当該エラーが存在する読み出し単位以外の読み出し単位のデータが第１の指示に従って読み出されることがあるため十分な診断を行うことができない。
【００１５】
不揮発性半導体メモリのメモリセルの特性不良にはプロセス的な要因が少なからず影響していると考えられるため、メモリセルアレイの領域のうち特性不良の発生頻度が高い領域を統計的に予想できる場合がある。上記半導体集積回路装置では、検査回路からの第１の指示に応答して不揮発性半導体メモリのメモリセルアレイの各行から不良発生頻度が高いと予想される領域にある一の読み出し単位のデータが読み出される。したがって、上述の（ａ）のようなエラーに対して効率的な診断を行うことができる。
【００１６】
好ましくは、上記検査回路は、行ごとに異なる列に対応する読み出し単位のデータを読み出すように第１の指示を与える。
【００１７】
偶発的な要因によって生じる特性不良については、それがメモリセルアレイのどの領域で発生するかを予測するのは困難である。上記半導体集積回路装置によれば、第１の指示に従って読み出される読み出し単位がメモリセルアレイの特定の領域に偏らないようにすることができる。これにより、上述の（ａ）のようなエラーに対して効率的な診断を行うことができる。
【００１８】
好ましくは、上記検査回路は、メモリセルアレイの一の列に対応する読み出し単位のデータを読み出すように第１の指示を与える。上記一の列は、第１の指示が与えられるたびに異なる。
【００１９】
上記半導体集積回路装置では、ある診断動作においてはメモリセルアレイの第１の列に対応する一の読み出し単位のデータが第１の指示に応答して各行から読み出される。そして次の診断動作においてはメモリセルアレイの第２の列に対応する一の読み出し単位のデータが第１の指示に応答して各行から読み出される。このように、診断動作のたびに異なる列に対応する一の読み出し単位のデータが第１の指示に応答して各行から読み出される。これにより、特性不良のメモリセルがランダムに存在したとしても、診断動作を所定の回数行う間にすべての特性不良を検知することができる。
【００２０】
好ましくは、上記半導体集積回路装置はさらにＣＰＵを備える。上記検査回路は、不揮発性半導体メモリの診断が終了した後に、ＣＰＵを起動させるための信号をＣＰＵに与える。
【００２１】
診断プログラムがＲＯＭに格納されており、ＣＰＵが起動した後に当該診断プログラムをＲＯＭから読み出して不揮発性半導体メモリの診断を行うような場合、ＣＰＵの動作を解析することによって不揮発性半導体メモリへのアクセス手順が解析される可能性がある。しかし上記半導体集積回路装置では、ＣＰＵが動作を停止している間に検査回路によって不揮発性半導体メモリの診断が行われる。したがって不揮発性半導体メモリへのアクセス手順が解析されにくい。また、診断に要する時間が短いため、不揮発性半導体メモリの診断を行っているということ自体も解析されにくい。
【００２２】
好ましくは、上記検査回路は、第２の指示に従って読み出されたデータのすべてにおいてエラー訂正回路によってエラーが検出されたとき、異常を示す信号をＣＰＵに与える。
【００２３】
上記半導体集積回路装置では、第２の指示に従って読み出されたデータのすべてにおいてエラー訂正回路によってエラーが検出されたとき、当該エラーは上述の（ｂ）のようなエラーであると判断される。また、当該エラーが検出されたデータに対応する行にあるメモリセルのデータは破壊されている、すなわち修復不能であると判断される。そして異常を示す信号が検査回路からＣＰＵに与えられる。これによりＣＰＵは、不揮発性半導体メモリが故障しているということを、起動して処理を始める前の段階で認識することができる。
【００２４】
好ましくは、上記ＣＰＵは、検査回路からの異常を示す信号に応答して起動を停止する。
【００２５】
上記半導体集積回路装置によれば、不揮発性半導体メモリが故障した状態のままでＣＰＵが処理を進めるという状況を防ぐことができる。
【００２６】
この発明のもう１つの局面に従うと、ＩＣカードは上記半導体集積回路装置を備える。
【００２７】
この発明のさらにもう１つの局面に従うと、検査装置は、不揮発性半導体メモリを診断する装置である。上記不揮発性半導体メモリは、メモリセルアレイと、エラー訂正回路とを含む。メモリセルアレイは、行および列に複数の読み出し単位に分割される。エラー訂正回路は、複数の読み出し単位の各々に書き込むべきデータのエラー訂正符号化を行い、複数の読み出し単位の各々から読み出されたデータのエラー検出およびエラー訂正を行う。上記検査装置は、メモリセルアレイの各行から一の読み出し単位のデータを読み出すように指示する第１の指示を不揮発性半導体メモリに与える。第１の指示に従って読み出されたデータのエラーがエラー訂正回路によって検出されると上記検査装置は、当該エラーが検出されたデータに対応する行のすべての読み出し単位のデータを読み出すように指示する第２の指示を不揮発性半導体メモリに与える。
【００２８】
この発明のさらにもう１つの局面に従うと、半導体集積回路装置は、不揮発性半導体メモリと、キャッシュメモリと、アドレス記憶部と、アクセス制御部とを備える。アドレス記憶部は、不揮発性半導体メモリのアドレスを少なくとも１つ記憶する。アクセス制御部は、不揮発性半導体メモリへの書き込みアドレスとアドレス記憶部に記憶されたアドレスのいずれか１つとが一致するとき、当該書き込みアドレスに対応する書き込みデータをキャッシュメモリに書き込む。
【００２９】
通常、不揮発性半導体メモリには書き込み回数に上限がある。書き込み回数がこの上限に近づくと書き込みエラーなどの故障が生じる可能性が高くなる。上記半導体集積回路装置では、不揮発性半導体メモリの所定のアドレスがアドレス記憶部にあらかじめ格納される。そして不揮発性半導体メモリへの書き込みアクセスがあると、書き込みアドレスとアドレス記憶部に記憶されたアドレスとが比較される。アドレス記憶部に記憶されたアドレスのうちいずれか１つと書き込みアドレスとが一致するとき、当該書き込みアドレスに対応する書き込みデータはキャッシュメモリに書き込まれる。これにより、不揮発性半導体メモリへの書き込み回数を少なくすることができる。この結果、不揮発性半導体メモリが正常な状態で長期間使用されることになる。
【００３０】
また一般に、キャッシュにヒットしやすいアドレス（たとえば最新のアドレスや何回もアクセスがあったアドレスなど）をプログラム実行中に精度よく抽出する（アドレス置換メカニズム）ためにはキャッシュメモリの資源を大量に必要とする。上記半導体集積回路装置ではアドレス記憶部を設けたため、キャッシュにヒットしやすいアドレスをあらかじめアドレス記憶部に記憶させておくことができる。これにより、アドレス記憶部を設けない場合に比べて少ない資源で不揮発性半導体メモリへの書き込み回数を少なくすることができる。
【００３１】
好ましくは、上記アクセス制御部は、アドレス記憶部に記憶されるアドレスを不揮発性半導体メモリへの書き込みアクセスの状況に応じて変更する。
【００３２】
好ましくは、上記アドレス記憶部は、上記不揮発性半導体メモリのアドレスを記憶する第１および第２の領域を含む。上記アクセス制御部は、アドレス記憶部の第２の領域に記憶されるアドレスを不揮発性半導体メモリへの書き込みアクセスの状況に応じて変更する。
【００３３】
好ましくは、上記アクセス制御部は、アドレス記憶部に記憶されたアドレスをキャッシュメモリへ書き込む。そして上記アクセス制御部は、不揮発性半導体メモリへの書き込みアドレスとキャッシュメモリに記憶されたアドレスのいずれか１つとが一致するとき、当該書き込みアドレスに対応する書き込みデータをキャッシュメモリに書き込む。
【００３４】
好ましくは、上記アクセス制御部は、キャッシュメモリに記憶されるアドレスを不揮発性半導体メモリへの書き込みアクセスの状況に応じて変更し、変更後のアドレスをアドレス記憶部に書き込む。
【００３５】
好ましくは、上記アドレス記憶部は、上記不揮発性半導体メモリのアドレスを記憶する第１および第２の領域を含む。上記キャッシュメモリは、第３の領域と第４の領域とを含む。上記アクセス制御部は、アドレス記憶部の第１の領域に記憶されたアドレスをキャッシュメモリの第３の領域へ書き込み、アドレス記憶部の第２の領域に記憶されたアドレスをキャッシュメモリの第４の領域へ書き込む。そして上記アクセス制御部は、キャッシュメモリの第４の領域に記憶されるアドレスを不揮発性半導体メモリへの書き込みアクセスの状況に応じて変更し、変更後のアドレスをアドレス記憶部の第２の領域に書き込む。
【００３６】
この発明のさらにもう１つの局面に従うと、ＩＣカードは上記半導体集積回路装置を備える。
【発明を実施するための最良の形態】
【００３７】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
【００３８】
（第１の実施形態）
＜ＩＣカードの構成＞
図１は、この発明の第１の実施形態によるＩＣカードの構成を示すブロック図である。図１に示すＩＣカードは非接触型のＩＣカードであって、アンテナコイル１０と、ＬＳＩチップ１とを備える。
【００３９】
アンテナコイル１０は、リーダライタ（図示せず）との間でデータの送受信を非接触で行いかつリーダライタから非接触で電力の供給を受ける。
【００４０】
ＬＳＩチップ１は、インターフェース回路２０と、検査回路３０と、ＣＰＵ４０と、セレクタ５０と、不揮発性半導体メモリ６０とを含む。
【００４１】
インターフェース回路２０は、アンテナコイル１０によって受信された電力を各部に供給する。またインターフェース回路２０は、動作の基準となるクロックを各部に供給する。またインターフェース回路２０は、リーダライタへ送信すべきデータをアンテナコイル１０に伝送し、アンテナコイル１０によって受信されたデータを所定の回路に伝送する。またインターフェース回路２０は、アンテナコイル１０によって受信された電力に応じたリセット信号ＲＳＴ１を検査回路３０に与える。アンテナコイル１０によって受信された電力が所定のレベルよりも少ないときインターフェース回路２０はＬレベル（論理ローレベル）のリセット信号ＲＳＴ１を検査回路３０に与える。アンテナコイル１０によって受信された電力が所定のレベル以上のときインターフェース回路２０はＨレベル（論理ハイレベル）のリセット信号ＲＳＴ１を検査回路３０に与える。
【００４２】
検査回路３０は不揮発性半導体メモリ６０を診断する。検査回路３０は、制御部３１と、データ処理部３２と、アドレス発生部３３とを含む。制御部３１は、インターフェース回路２０からのリセット信号ＲＳＴ１がＬレベルからＨレベルへ切り替わるのに応答してデータ処理部３２およびアドレス発生部３３に不揮発性半導体メモリ６０の診断の開始を指示する。不揮発性半導体メモリ６０の診断動作において制御部３１はデータ処理部３２およびアドレス発生部３３を制御する。制御部３１は、不揮発性半導体メモリ６０からのエラー訂正情報に応じた指示をデータ処理部３２およびアドレス発生部３３に与える。また制御部３１は、データの読み出し／書き込みを指示する制御信号をセレクタ５０を介して不揮発性半導体メモリ６０に与える。不揮発性半導体メモリ６０の診断が終了すると制御部３１はＨレベルのリセット信号ＲＳＴ２をＣＰＵ４０およびセレクタ５０に与え、不揮発性半導体メモリ６０の診断結果をＣＰＵ４０に与える。データ処理部３２は、セレクタ５０を介して不揮発性半導体メモリ６０との間でデータのやりとりをする。アドレス発生部３３は、読み出し／書き込みアドレスをセレクタ５０を介して不揮発性半導体メモリ６０に与える。
【００４３】
ＣＰＵ４０は、検査回路３０の制御部３１からのリセット信号ＲＳＴ２がＬレベルからＨレベルに切り替わるのに応答して起動する。ＣＰＵ４０は、制御部３１からの診断結果に応じた処理を行う。ＣＰＵ４０は、制御信号およびアドレスをセレクタ５０を介して不揮発性半導体メモリ６０に与え、セレクタ５０を介して不揮発性半導体メモリ６０との間でデータをやりとりする。
【００４４】
セレクタ５０は、検査回路３０の制御部３１からのリセット信号ＲＳＴ２に応じて検査回路３０と不揮発性半導体メモリ６０との間またはＣＰＵ４０と不揮発性半導体メモリ６０との間で制御信号・アドレス・データのやりとりができるようにパスを切り替える。リセット信号ＲＳＴ２がＬレベルのときセレクタ５０は検査回路３０と不揮発性半導体メモリ６０との間で制御信号・アドレス・データのやりとりができるようにパスを形成する。リセット信号ＲＳＴ２がＨレベルのときセレクタ５０はＣＰＵ４０と不揮発性半導体メモリ６０との間で制御信号・アドレス・データのやりとりができるようにパスを形成する。
【００４５】
不揮発性半導体メモリ６０はエラー訂正機能を有し、読み出し単位ごとのエラーの有無を示すエラー訂正情報を検査回路３０の制御部３１に与える。不揮発性半導体メモリ６０としては、ＥＥＰＲＯＭ・フラッシュメモリ・ＦｅＲＡＭなどを用いることができる。
【００４６】
＜不揮発性半導体メモリ６０の構成＞
図２は、図１に示した不揮発性半導体メモリ６０の内部構成を示すブロック図である。図２を参照して、不揮発性半導体メモリ６０は、メモリセルアレイ６１と、アドレスデコーダ６２と、行デコーダ６３と、列デコーダ６４と、エラー訂正回路６５と、入出力バッファ６６とを含む。
【００４７】
メモリセルアレイ６１は、行（Ｘ１−Ｘ１６）および列（Ｙ１−Ｙ１６）に複数（１６×１６個）の読み出し単位に分割される。各読み出し単位にはデータ（３２ビット）およびエラー訂正用データ（６ビット）が格納される。なお、図２のメモリセルアレイ６１において各読み出し単位を表すブロックの中の数字（１６進表示）は、当該読み出し単位を指定するためにアドレスデコーダ６２に与えられるアドレスを示している。
【００４８】
アドレスデコーダ６２は、セレクタ５０からの制御信号およびアドレスに従った読み出し単位を指定するための行アドレスおよび列アドレスを行デコーダ６３および列デコーダ６４に与える。行デコーダ６３は、アドレスデコーダ６２からの行アドレスに応答して対応する行を選択する。列デコーダ６４は、アドレスデコーダ６２からの列アドレスに応答して対応する列を選択する。
【００４９】
入出力バッファ６６は、書き込みデータおよび読み出しデータを一時的に蓄積する。
【００５０】
エラー訂正回路６５は、行デコーダ６３および列デコーダ６４によって指定された読み出し単位の各々への書き込みデータ（３２ビット）にエラー訂正用ビット（６ビット）を付加する。エラー訂正用ビットが付加された書き込みデータが各読み出し単位に書き込まれる。１つの行に対応するすべての読み出し単位（１６個）に同時に書き込みが行われる（１ライン同時書き込み）。読み出し動作時には、行デコーダ６３および列デコーダ６４によって指定された読み出し単位からデータ（３２ビット）およびエラー訂正用ビット（６ビット）が読み出される。エラー訂正回路６５は、図３に示すように、読み出されたデータ（３２ビット）に対してエラー訂正用ビットを用いてエラー訂正処理を行う。ただし通常、エラーを訂正することができるビット数には限度があり、この限度を越えてエラーが発生した場合には訂正処理後のデータの正しさは保証されない。エラー訂正回路６５は、エラー訂正処理後のデータ（３２ビット）とエラー訂正処理前のデータ（３２ビット）とが一致するときはＬレベルのエラー訂正情報を出力し、一致しないときはＨレベルのエラー訂正情報を出力する。Ｈレベルのエラー訂正情報は、読み出されたデータにエラーが検出されたことを示す。Ｌレベルのエラー訂正情報は、読み出されたデータにエラーが検出されなかったことを示す。
【００５１】
＜不揮発性半導体メモリ６０の診断＞
次に、図１に示したＩＣカードの動作について図４を参照しつつ説明する。
【００５２】
時刻ｔ１以前においてはＩＣカードとリーダライタとの距離が離れているためリーダライタからＩＣカードに十分な電力が供給されない。このときインターフェース回路２０から検査回路３０に与えられるリセット信号ＲＳＴ１はＬレベルのままである。リセット信号ＲＳＴ１がＬレベルのとき検査回路３０は動作停止状態（リセット状態）となる。またＣＰＵ４０およびセレクタ５０に与えられるリセット信号ＲＳＴ２もＬレベルのままである。リセット信号ＲＳＴ２がＬレベルのときＣＰＵ４０は動作停止状態（リセット状態）となる。
【００５３】
リーダライタにＩＣカードが近づけられ、リーダライタからＩＣカードに供給される電力が時刻ｔ１において所定のレベルに達する。これに応答してインターフェース回路２０はリセット信号ＲＳＴ１をＬレベルからＨレベルに切り替える。リセット信号ＲＳＴ１がＬレベルからＨレベルに切り替わると検査回路３０は不揮発性半導体メモリ６０の診断を開始する。一方、リセット信号ＲＳＴ２はＬレベルのままでありＣＰＵ４０は動作停止状態（リセット状態）のままである。以下、検査回路３０による不揮発性半導体メモリ６０の診断動作について図５を参照しつつ説明する。
【００５４】
［ステップＳＴ５０１］
まず、検査回路３０の制御部３１は、メモリセルアレイ６１の列Ｙ１−Ｙ１６のうちいずれか１つを選択する。図６（ａ）に示すように、ここでは列Ｙ２が選択されるものとする。次に制御部３１は、メモリセルアレイ６１の各行Ｘ１−Ｘ１６の列Ｙ２に対応する読み出し単位を指定するアドレスを与えるようにアドレス発生部３３に指示する。そしてステップＳＴ５０２にすすむ。
【００５５】
［ステップＳＴ５０２］
図６（ｂ）に示すように、制御部３１からの指示に応答してアドレス発生部３３は、メモリセルアレイ６１の行Ｘ１および列Ｙ２に対応する読み出し単位を指定するアドレス４（１６進数）を出力する。制御部３１は、読み出しを指示する制御信号を出力する。制御部３１からの制御信号およびアドレス発生部３３からのアドレス４は、セレクタ５０を介して不揮発性半導体メモリ６０のアドレスデコーダ６２に与えられる。これに応答してアドレスデコーダ６１は、行Ｘ１に対応する行アドレスを行デコーダ６３に与え、列Ｙ２に対応する列アドレスを列デコーダ６４に与える。アドレスデコーダ６１からの行アドレスに応答して行デコーダ６３はメモリセル６１の行Ｘ１を選択する。アドレスデコーダ６１からの列アドレスに応答して列デコーダ６４は列Ｙ２を選択する。そして図６（ｂ）に示すように、行Ｘ１および列Ｙ２に対応する読み出し単位のデータＤ（４）が読み出される。そしてステップＳＴ５０３にすすむ。
【００５６】
［ステップＳＴ５０３］
エラー訂正回路６５は、ステップＳＴ５０２において読み出されたデータＤ（４）のエラー検出およびエラー訂正処理を行う。読み出しデータＤ（４）にエラーが検出されなかったときエラー訂正回路６５はＬレベルのエラー訂正情報を出力する。読み出しデータＤ（４）にエラーが検出されたときエラー訂正回路６５はＨレベルのエラー訂正情報を出力する。制御部３１は、エラー訂正回路６５からのエラー訂正情報がＨレベルであるかＬレベルであるかを判断する。Ｈレベルであると判断されたときはステップＳＴ５０７にすすみ、Ｌレベルであると判断されたときはステップＳＴ５０４にすすむ。ここでは読み出しデータＤ（４）にエラーが検出されなかったものとする。エラー訂正回路６５は、図６（ｂ）に示すようにＬレベルのエラー訂正情報を検査回路３０の制御部３１に出力する。そしてステップＳＴ５０４にすすむ。
【００５７】
［ステップＳＴ５０４］
アドレス発生部３３は、前回のアドレス４に４０（１６進数）を加算する。加算の結果得られるアドレス４４は、図６（ａ）に示すように、メモリセルアレイ６１の前回の行Ｘ１の次の行Ｘ２の列Ｙ２に対応する読み出し単位を指定するアドレスである。そしてステップＳＴ５０５にすすむ。
【００５８】
［ステップＳＴ５０５］
制御部３１は、ステップＳＴ５０４において得られたアドレスが最終アドレス（ここでは３ＦＣ）を超えているか否かを判断する。超えていると判断されたときはステップＳＴ５０６にすすみ、超えていないと判断されたときはステップＳＴ５０２にもどる。ここでは、ステップＳＴ５０４において得られたアドレス４４は最終アドレス３ＦＣを超えていないためステップＳＴ５０２にもどる。そしてステップＳＴ５０２においてアドレス発生部３３は、メモリセル６１の行Ｘ２および列Ｙ２に対応する読み出し単位を指定するアドレス４４を出力する。制御部３１は、読み出しを指示する制御信号を出力する。
【００５９】
通常、不揮発性半導体メモリ６０への書き込みは行単位で行われる。したがって、書き込み時にエラーが発生した場合には行Ｘ１にあるすべてのメモリセルにエラーが発生している可能性が高い。ゆえに、エラー訂正回路６５によってエラーが検出されなかったとき、すなわちエラー訂正情報がＬレベルのときは、読み出しデータＤ（４）に対応する行Ｘ１のすべてのメモリセルに正しくデータが書き込まれていると判断し、次の行Ｘ２から１つの読み出し単位のデータを読み出すようにしている。そして、行Ｘ２および列Ｙ２に対応する読み出し単位からの読み出しデータＤ（４４）に対して同様にエラー検出およびエラー訂正処理が行われる。
【００６０】
これ以降、エラー訂正情報がＨレベルであると判断されるまでステップＳＴ５０２−ＳＴ５０５における処理が繰り返される（図５および図６の符号Ａ）。すなわち、メモリセルアレイ６１の各行Ｘ２−Ｘ１６から列Ｙ２に対応する読み出し単位のデータが読み出され、エラー検出およびエラー訂正処理が行われる。
【００６１】
ここでは図６（ｂ）に示すように、行Ｘ１６および列Ｙ２に対応する読み出し単位からの読み出しデータＤ（３Ｃ４）においてエラーが検出され、Ｈレベルのエラー訂正情報が出力される。そしてステップＳＴ５０７にすすむ。
【００６２】
［ステップＳＴ５０７］
検査回路３０の制御部３１は、行Ｘ１６および列Ｙ２に対応する読み出し単位からのエラー訂正処理後の読み出しデータＤ（３Ｃ４）、当該読み出し単位に対応する列Ｙ２を示すアドレス４、および当該読み出し単位に対応するエラー訂正情報Ｈを記憶するようにデータ処理部３２に指示を与える。制御部３１からの指示に応答してデータ処理部３２はこれらを記憶する。
【００６３】
アドレス発生部３３は、前回のアドレス３Ｃ４に４を加算する。加算の結果得られるアドレス３Ｃ８は、図６（ａ）に示すように、エラーが検出された読み出し単位に対応する行Ｘ１６上の当該読み出し単位に対応する列Ｙ２の次の列Ｙ３に対応する読み出し単位を指定するアドレスである。そしてステップＳＴ５０８にすすむ。
【００６４】
［ステップＳＴ５０８］
アドレス発生部３３は、メモリセルアレイ６１の行Ｘ１６および列Ｙ３に対応する読み出し単位を指定するアドレス３Ｃ８を出力する。制御部３１は、読み出しを指示する制御信号を出力する。制御部３１からの制御信号およびアドレス発生部３３からのアドレス３Ｃ８は、セレクタ５０を介して不揮発性半導体メモリ６０のアドレスデコーダ６２に与えられる。これに応答してアドレスデコーダ６１は、行Ｘ１６に対応する行アドレスを行デコーダ６３に与え、列Ｙ３に対応する列アドレスを列デコーダ６４に与える。アドレスデコーダ６１からの行アドレスに応答して行デコーダ６３はメモリセル６１の行Ｘ１６を選択する。アドレスデコーダ６１からの列アドレスに応答して列デコーダ６４は列Ｙ３を選択する。そして図６（ｂ）に示すように、行Ｘ１６および列Ｙ３に対応する読み出し単位のデータＤ（３Ｃ８）が読み出される。エラー訂正回路６５は、読み出されたデータＤ（３Ｃ８）のエラー検出およびエラー訂正処理を行う。そしてステップＳＴ５０９にすすむ。
【００６５】
［ステップＳＴ５０９］
検査回路３０の制御部３１は、行Ｘ１６および列Ｙ３に対応する読み出し単位からのエラー訂正処理後の読み出しデータＤ（３Ｃ８）、当該読み出し単位に対応する列Ｙ３を示すアドレス８、および当該読み出し単位に対応するエラー訂正情報を記憶するようにデータ処理部３２に指示を与える。制御部３１からの指示に応答してデータ処理部３２はこれらを記憶する。そしてステップＳＴ５０７にもどる。これ以降、ステップＳＴ５０７−ＳＴ５０９における処理が１５回繰り返される（図５および図６の符号Ｂ）。この結果、ステップＳＴ５０３においてエラーが検出された行Ｘ１６にあるすべての読み出し単位のデータＤ（３Ｃ０）−Ｄ（３ＦＣ）が読み出される。読み出されたデータＤ（３Ｃ０）−Ｄ（３ＦＣ）は、図７に示すように、対応する列Ｙ１−Ｙ１６を示すアドレス０−３Ｃおよび対応するエラー訂正情報と関連づけられてデータ処理部３２に記憶される。
【００６６】
［ステップＳＴ５１０］
検査回路３０の制御部３１は、データ処理部３２に記憶されたエラー訂正情報のすべてがＨレベルであるか否かを判断する。エラー訂正情報のすべてがＨレベルであるときはステップＳＴ５１７にすすむ。それ以外のとき、すなわち一部のエラー訂正情報がＬレベルであるときはステップＳＴ５１１にすすむ。
【００６７】
上述のとおり不揮発性半導体メモリ６０への書き込みは行単位で行われるため、エラー訂正回路６５によって検出されるエラーには以下の（ａ）および（ｂ）に示すような種類がある。
（ａ）同一の行にあるメモリセルのうちの一部のメモリセルについてだけ発生するようなエラー
このようなエラーの原因としては、
・メモリセルのデータ保持特性不良により記録データが変化してしまった
・以前のデータがメモリセルに残留していたため正しく書き込めなかった
などが考えられる。このようなエラーは、再度同じデータを書き込むことによって修復することができる。データ処理部３２に記憶されたエラー訂正情報のうちの一部がＬレベルであるときは、ステップＳＴ５０３において検出されたエラーは（ａ）のようなエラーであると判断される。また、当該エラーが検出されたデータについては、データを正しくは読み出せなかったけれどもエラー訂正処理によって正しいデータに訂正されたと判断される。そして修復処理を行うためにステップＳＴ５１１にすすむ。
（ｂ）同一の行にあるすべてのメモリセルについて発生するエラー
このようなエラーの原因としては、
・書き込み時の電源ダウンにより所望のデータが記録できていなかった
などが考えられる。ＩＣカードでは、不揮発性半導体メモリへの書き込み動作中にリーダライタからＩＣカードが引き離されることが起こりうる。このため、（ｂ）のようなエラーが起こりうる。データ処理部３２に記憶されたエラー訂正情報のすべてがＨレベルであるときは、ステップＳＴ５０３において検出されたエラーは（ｂ）のようなエラーであると判断される。また、当該エラーが検出されたデータに対応する行にあるメモリセルのデータは破壊されている、すなわち修復不能であると判断される。そしてステップＳＴ５１７にすすみ、検査回路３０による不揮発性半導体メモリ６０の診断が終了する。制御部３１は、図４の時刻ｔ２に示すように、リセット信号ＲＳＴ２をＬレベルからＨレベルに切り替え、診断結果「異常有り」をＣＰＵ４０に通知する。
【００６８】
ここでは図７に示すように一部のエラー訂正情報がＬレベルであるためステップＳＴ５１１にすすむ。
【００６９】
［ステップＳＴ５１１］
検査回路３０の制御部３１は、データ処理部３２に記憶されたデータの再書き込みをデータ処理部３２およびアドレス発生部３３に指示する。図８に示すように、アドレス発生部３３は、データ処理部３２に記憶されたアドレス０を出力する。データ処理部３２は、アドレス０に対応づけられたデータＤ（３Ｃ０）を出力する。制御部３１は、データのラッチを指示する制御信号を出力する。不揮発性半導体メモリ６０の入出力バッファ６６は、アドレス発生部３２からのアドレス０が示す列Ｙ１に対応づけてデータ処理部３２からのデータＤ（３Ｃ０）を一時的に蓄積（ラッチ）する。以下同様にして、アドレス発生部３２からのアドレス４−３Ｃが示す列Ｙ２−Ｙ１６に対応づけてデータ処理部３２からのデータＤ（３Ｃ４）−Ｄ（３ＦＣ）が入出力バッファ６６にラッチされる。
【００７０】
［ステップＳＴ５１２］
図８に示すように、アドレス発生部３３は、メモリセルアレイ６１の行Ｘ１６を示すアドレスを出力する。行Ｘ１６は、ステップＳＴ５０３においてエラーが検出されたデータＤ（３Ｃ４）に対応する行である。
【００７１】
［ステップＳＴ５１３］
制御部３１は、書き込みを指示する制御信号を出力する。そして、入出力バッファ６６にラッチされたデータＤ（３Ｃ０）−Ｄ（３ＦＣ）が、行Ｘ１６および列Ｙ１−Ｙ１６に対応する読み出し単位に書き込まれる（１ライン同時書き込み）。
【００７２】
［ステップＳＴ５１４］
再書き込みが終了すると検査回路３０のアドレス発生部３３は、図８に示すように、ステップＳＴ５０３においてエラーが検出された読み出し単位を指定するアドレス３Ｃ４（行Ｘ１６，列Ｙ２）を出力する。
【００７３】
［ステップＳＴ５１５］
制御部３１は、読み出しを指示する制御信号を出力する。これに応答して、メモリセルアレイ６１の行Ｘ１６および列Ｙ２に対応する読み出し単位からデータＤ（３Ｃ４）が読み出される。エラー訂正回路６５は、読み出されたデータＤ（３Ｃ４）に対してエラー検出およびエラー訂正処理を行う。
【００７４】
［ステップＳＴ５１６］
検査回路３０の制御部３１は、ステップＳＴ５１５において読み出されたデータについてのエラー訂正情報がＨレベルであるかＬレベルであるかを判断する。Ｈレベルであるときは、再書き込みによってはエラーが修復されなかったと判断されてステップＳＴ５１７にすすむ。Ｌレベルであるときは、再書き込みによってエラーが修復されたと判断されてステップＳＴ５０４にもどる。ここでは図８に示すようにエラー訂正情報がＬレベルであるのでステップＳＴ５０４にもどる。そしてステップＳＴ５０５において最終アドレスを越えたと判断されてステップＳＴ５０６にすすみ、検査回路３０による不揮発性半導体メモリ６０の診断が終了する。制御部３１は、図４の時刻ｔ２に示すように、リセット信号ＲＳＴ２をＬレベルからＨレベルに切り替え、診断結果「修復済み」をＣＰＵ４０に通知する。なお、ステップＳＴ５０３においてエラーが全く検出されなかったときは診断結果「異常なし」をＣＰＵ４０に通知する。
【００７５】
以上のようにして検査回路３０は不揮発性半導体メモリ６０を診断する。診断が終了すると検査回路３０の制御部３１はリセット信号ＲＳＴ２をＬレベルからＨレベルに切り替え、診断結果をＣＰＵ４０に通知する。ＣＰＵ４０に通知される診断結果には、
・「異常なし」（ステップＳＴ５０３においてエラーが全く検出されなかった場合）
・「修復済み」（ステップＳＴ５０３においてエラーが検出されたけれども再書き込みによって修復することができた場合）
・「異常あり」（ステップＳＴ５０３において検出されたエラーを修復することができなかった場合、ステップＳＴ５０３においてエラーが検出された行のすべての読み出し単位のデータにエラーが検出された場合）
の３種類がある。
【００７６】
図４に示すように、リセット信号ＲＳＴ２のＬレベルからＨレベルへの切り替わりに応答して検査回路３０は動作停止状態になりＣＰＵ４０は動作状態になる。すなわちＣＰＵ４０が起動する。ＣＰＵ４０は、動作開始（起動）と同時に診断結果の内容を判断し、その内容によって起動方法を変更する。たとえば診断結果が「異常なし」または「修復済み」であるときは通常起動する。一方、診断結果が「異常あり」であるときは起動を停止し、システム異常のステータスをインターフェース回路２０およびアンテナコイル１０を介して外部に送信するなどの処理を行う。
【００７７】
＜効果＞
以上のように、第１の実施形態によるＩＣカードでは検査回路３０を設けているため、不揮発性半導体メモリ６０が正常な状態であるか否かをＩＣカードが使用されるたびに判定することができる。これにより、不揮発性半導体メモリ６０が故障した状態のままでＩＣカードが使用され続けるような状況を防ぐことができる。この結果、正常な状態で長期間ＩＣカードが使用されることになる。
【００７８】
また、検査回路３０による不揮発性半導体メモリ６０の診断においては、メモリセルアレイ６１の行Ｘ１−Ｘ１６ごとに１つの読み出し単位のデータを読み出し、エラーが検出されたデータに対応する行についてはすべての読み出し単位のデータを読み出す。これにより、不揮発性半導体メモリ６０の診断に要する時間を短くすることができる。
【００７９】
診断プログラムがＲＯＭに格納されており、ＣＰＵが起動した後に当該診断プログラムをＲＯＭから読み出して不揮発性半導体メモリの診断を行うようなＩＣカードの場合、ＣＰＵの動作を解析することによって不揮発性半導体メモリへのアクセス手順が解析される可能性がある。しかし第１の実施形態によるＩＣカードでは、ＣＰＵ４０が動作を停止している間に検査回路３０によって不揮発性半導体メモリ６０の診断が行われる。したがって不揮発性半導体メモリ６０へのアクセス手順が解析されにくい。また、診断に要する時間が短いため、不揮発性半導体メモリ６０の診断を行っているということ自体も解析されにくい。
【００８０】
また、検査回路３０は不揮発性半導体メモリ６０の診断結果をＣＰＵ４０に通知する。これによりＣＰＵ４０は、不揮発性半導体メモリ６０が故障しているということを起動直後に認識することができる。したがって、異常が検知された場合にはＣＰＵ４０が適切な処理を行うことによってシステムのハングアップ等のトラブルを未然に防ぐことができる。
【００８１】
なお、ここでは非接触型のＩＣカードについて説明したがこれを接触型のＩＣカードとしてもよい。
【００８２】
＜変形例１＞
上述の（ｂ）のようなエラーに対しては、メモリセルアレイ６１の行Ｘ１−Ｘ１６の各々から１つの読み出し単位のデータを読み出すことによって十分な診断を行うことができる。しかし上述の（ａ）のようなエラーの場合、当該エラーが存在する読み出し単位以外の読み出し単位のデータが読み出されることがあるため十分な診断を行うことができない。
【００８３】
不揮発性半導体メモリ６０のメモリセルの特性不良にはプロセス的な要因が少なからず影響していると考えられるため、メモリセルアレイ６１の領域のうち特性不良の発生頻度が高い領域を統計的に予想できる場合がある。このような場合にはステップＳＴ５０１において検査回路３０の制御部３１は、図９（ａ）に示すように、メモリセルアレイ６１の列Ｙ１−Ｙ１６のうち不良発生頻度が高いと予想される領域にある列Ｙ１６を選択する。これにより、上述の（ａ）のようなエラーに対して効率的な診断を行うことができる。
【００８４】
＜変形例２＞
偶発的な要因によって生じる特性不良については、それがメモリセルアレイ６１のどの領域で発生するかを予測するのは困難である。そこでステップＳＴ５０１およびＳＴ５０４において、図９（ｂ）に示すように、行Ｘ１−Ｘ１６ごとに異なる列Ｙ１−Ｙ１６に対応する読み出し単位を指定するアドレス（０，４４，８８，・・・，３Ｂ８，３ＦＣ）が出力されるように検査回路３０のアドレス発生部３３を制御する。これにより、行Ｘ１−Ｘ１６の各々から読み出される読み出し単位がメモリセルアレイ６１の特定の領域に偏らないようにすることができる。この結果、上述の（ａ）のようなエラーに対して効率的な診断を行うことができる。
【００８５】
＜変形例３＞
診断動作のたびにステップＳＴ５０１において異なる列Ｙ１−Ｙ１６が検査回路３０の制御部３１によって選択されるようにしてもよい。たとえば図９（ｃ）に示すように、１回目の診断動作の際は列Ｙ１、２回目の診断動作の際は列Ｙ２、・・・、１６回目の診断動作の際は列Ｙ１６がステップＳＴ５０１において選択されるようにする。これにより、特性不良のメモリセルがランダムに存在したとしても、診断動作を一定の回数（ここでは１６回）行う間にすべての特性不良を検知することができる。
【００８６】
（第２の実施形態）
＜ＩＣカードの構成＞
図１０は、この発明の第２の実施形態によるＩＣカードの構成を示すブロック図である。図１０に示すＩＣカードは非接触型のＩＣカードであって、アンテナコイル１０と、ＬＳＩチップ１００とを備える。ＬＳＩチップ１００は、インターフェース回路２０と、ＣＰＵ４０と、不揮発性半導体メモリ６０と、キャッシュメモリ１１０と、アクセス制御部１２０とを含む。
【００８７】
このＩＣカードでは不揮発性半導体メモリ６０のメモリセルアレイ６１内にアドレス記憶部が設けられている。ここでは図１１に示すように、メモリセルアレイ６１の行Ｘ１６に対応する領域をアドレス記憶部としている。不揮発性半導体メモリ６０への書き込みアクセス頻度の高いアドレスがあらかじめ想定できる場合（たとえばＩＣカードに搭載されるプログラムがあらかじめ分かっている場合など）には、不揮発性半導体メモリ６０の検査工程においてメモリテスタ等によって当該アドレスがアドレス記憶部に書き込まれる。ここでは図１１に示すようにアドレス００，８０，２Ｃ０がアドレス記憶部に記憶されている。アドレス００，８０，２Ｃ０はメモリセルアレイ６１の行Ｘ１，Ｘ３，Ｘ１２を示すアドレスである。このようにアドレス記憶部には不揮発性半導体メモリ６０への書き込みアクセス頻度の高いアドレスがあらかじめ記憶されている。
【００８８】
アクセス制御部１２０は、不揮発性半導体メモリ６０への書き込みアドレスとアドレス記憶部に記憶されたアドレスのいずれか１つとが一致するとき、当該書き込みアドレスに対応する書き込みデータをキャッシュメモリ１１０に書き込む。
【００８９】
＜ＩＣカードの動作＞
次に、以上のように構成されたＩＣカードの動作について図１２を参照しつつ説明する。
【００９０】
［ステップＳＴ１２０１］
リーダライタにＩＣカードが近づけられ、リーダライタからＩＣカードに供給される電力が所定のレベルに達すると、インターフェース回路２０はリセット信号ＲＳＴ１をＬレベルからＨレベルに切り替える。
【００９１】
［ステップＳＴ１２０２］
リセット信号ＲＳＴ１がＬレベルからＨレベルに切り替わるとアクセス制御部１２０は、不揮発性半導体メモリ６０のメモリセルアレイ６１内のアドレス記憶部に記憶されたアドレス００，８０，２Ｃ０を読み出しこれをキャッシュメモリ１１０に書き込む。図１３（ａ）に示すように、キャッシュメモリ１１０内部にはスロット番号ごとにアドレス記憶領域およびデータ記憶領域が設けられており、アドレス００，８０，２Ｃ０はスロット番号１，２，３のアドレス記憶領域に記憶される。このようにキャッシュメモリ１１０内部ではスロット番号１−３に対応づけてアドレス００，８０，２Ｃ０が記憶される。
【００９２】
［ステップＳＴ１２０３］
次にアクセス制御部１２０は、キャッシュメモリ１１０に書き込まれたアドレス００，８０，２Ｃ０に対応するデータすなわちメモリセルアレイ６１の行Ｘ１，Ｘ３，Ｘ１２に対応するデータを不揮発性半導体メモリ６０から読み出しキャッシュメモリ１１０に書き込む。図１３（ｂ）に示すように、アドレス００，８０，２Ｃ０に対応するデータすなわちメモリセルアレイ６１の行Ｘ１，Ｘ３，Ｘ１２に対応するデータＤ（０）−Ｄ（３Ｃ），Ｄ（８０）−Ｄ（ＢＣ），Ｄ（２Ｃ０）−Ｄ（２ＦＣ）はスロット番号１，２，３のデータ記憶領域に記憶される。このようにキャッシュメモリ１１０内部では、アドレス００，８０，２Ｃ０に対応するデータＤ（０）−Ｄ（３Ｃ），Ｄ（８０）−Ｄ（ＢＣ），Ｄ（２Ｃ０）−Ｄ（２ＦＣ）はスロット番号１，２，３に対応づけて記憶される。
【００９３】
［ステップＳＴ１２０４］
次にアクセス制御部１２０は、ＣＰＵ４０に与えるリセット信号ＲＳＴ２をＬレベルからＨレベルに切り替える。リセット信号ＲＳＴ２のＬレベルからＨレベルへの切り替わりに応答してＣＰＵ４０が起動し、ＩＣカードに搭載されたアプリケーションプログラムが実行される。
【００９４】
［ステップＳＴ１２０５］
アクセス制御部１２０は、ＣＰＵ４０からのシステム終了信号の有無を判断する。システム終了信号は、アプリケーションプログラムの一連の処理が終了するとＣＰＵ４０からアクセス制御部１２０に与えられる制御信号である。ＣＰＵ４０からアクセス制御部１２０にシステム終了信号が与えられるとステップＳＴ１２１１にすすむ。そうでないときはステップＳＴ１２０６にすすむ。
【００９５】
［ステップＳＴ１２０６］
アクセス制御部１２０は、ＣＰＵ４０から不揮発性半導体メモリ６０への書き込みアクセスの有無を判断する。書き込みアクセスがあるとステップＳＴ１２０７にすすむ。そうでないときはステップＳＴ１２０５にもどる。
【００９６】
［ステップＳＴ１２０７］
不揮発性半導体メモリ６０への書き込みを指示する制御信号・書き込みアドレス・書き込みデータがＣＰＵ４０からアクセス制御部１２０に与えられるとアクセス制御部１２０は、ＣＰＵ４０からの書き込みアドレスとキャッシュメモリ１１０に記憶されているアドレスとを比較する。アクセス制御部１２０は、ＣＰＵ４０からの書き込みアドレスとキャッシュメモリ１１０に記憶されているアドレスとを下位４ビットを無視して比較する。たとえばメモリセルアレイ６１のアドレス８４（行Ｘ３および列Ｙ２）に３２ビットのデータＤ（８４ｗ）を書き込むように指示する書き込みアクセスがあった場合には、図１４に示すようにアクセス制御部１２０は書き込みアドレス８４の下位４ビットを無視した値８とキャッシュメモリ１１０に記憶されたアドレス００，８０，２Ｃ０の下位４ビットを無視した値０，８，２Ｃとを比較する。
【００９７】
［ステップＳＴ１２０８］
ステップＳＴ１２０７における比較の結果、ＣＰＵ４０からの書き込みアドレスとキャッシュメモリ１１０に記憶されているアドレスのいずれか１つとが一致するときはステップＳＴ１２０９にすすむ。ＣＰＵ４０からの書き込みアドレスがキャッシュメモリ１１０に記憶されているアドレスのいずれとも一致しないときはステップＳＴ１２１０にすすむ。たとえばメモリセルアレイ６１のアドレス８４（行Ｘ３および列Ｙ２）にデータＤ（８４ｗ）を書き込むように指示する書き込みアクセスがあった場合には、書き込みアドレス８４の下位４ビットを無視した値８とキャッシュメモリ１１０に記憶されたアドレス８０の下位４ビットを無視した値８とが一致するためステップＳＴ１２０９にすすむ。
【００９８】
［ステップＳＴ１２０９］
ＣＰＵ４０からの書き込みアドレスとキャッシュメモリ１１０に記憶されているアドレスのいずれか１つとが一致するとき、アクセス制御部１２０は書き込みデータをキャッシュメモリ１１０に書き込む。アクセス制御部１２０は、キャッシュメモリ１１０に記憶されているデータのうち当該書き込みアドレスに対応するデータに当該書き込みデータを上書きする。たとえばメモリセルアレイ６１のアドレス８４（行Ｘ３および列Ｙ２）にデータＤ（８４ｗ）を書き込むように指示する書き込みアクセスがあった場合には、図１３（ｃ）に示すように、キャッシュメモリ１１０に記憶されているデータのうち書き込みアドレス８４に対応するデータすなわち行Ｘ３および列Ｙ２に対応するデータＤ（８４）に書き込みデータＤ（８４ｗ）が上書きされる。キャッシュメモリ１１０への書き込みが終了するとステップＳＴ１２０５にもどる。
【００９９】
［ステップＳＴ１２１０］
ＣＰＵ４０からの書き込みアドレスがキャッシュメモリ１１０に記憶されているアドレスのいずれとも一致しないとき、アクセス制御部１２０は書き込みデータを不揮発性半導体メモリ６０に書き込む。そしてステップＳＴ１２０５にもどる。
【０１００】
［ステップＳＴ１２１１］
アプリケーションプログラムの一連の処理が終了するとＣＰＵ４０からアクセス制御部１２０にシステム終了信号が与えられる（ＳＴ１２０５）。システム終了信号を受けるとアクセス制御部１２０は、キャッシュメモリ１１０に記憶されているデータをすべて読み出し、メモリセルアレイ６１の対応するアドレスに書き込む。
【０１０１】
＜効果＞
通常、不揮発性半導体メモリには書き込み回数に上限がある。書き込み回数がこの上限に近づくと書き込みエラーなどの故障が生じる可能性が高くなる。第２の実施形態によるＩＣカードでは、不揮発性半導体メモリ６０のメモリセルアレイ６１内にアドレス記憶部を設け、書き込みアクセス頻度の高いアドレスをあらかじめアドレス記憶部に記憶する。そして不揮発性半導体メモリ６０への書き込みアドレスとアドレス記憶部に記憶されたアドレスのうちいずれか１つとが一致するときは当該書き込みアドレスに対応する書き込みデータをキャッシュメモリ１１０に書き込む。これにより、不揮発性半導体メモリ６０への書き込み回数を少なくすることができる。この結果、不揮発性半導体メモリ６０が正常な状態で長期間使用されることになる。
【０１０２】
また一般に、キャッシュにヒットしやすいアドレス（たとえば最近にアクセスがあったアドレスや何回もアクセスがあったアドレスなど）をプログラム実行中に精度よく抽出する（アドレス置換メカニズム）ためにはキャッシュメモリの資源を大量に必要とする。第２の実施形態によるＩＣカードではアドレス記憶部を設け、キャッシュにヒットしやすいアドレスをあらかじめアドレス記憶部に記憶させている。したがって、アドレス記憶部を設けない場合に比べて少ない資源で不揮発性半導体メモリ６０への書き込み回数を少なくすることができる。
【０１０３】
また、不揮発性半導体メモリのメモリセルアレイの行ごとに書き込み回数を管理する技術に比べて管理に必要な容量を少なくすることができる。たとえば容量３２Ｋバイトの不揮発性半導体メモリ（５１２ビット／１ワード線×５１２本）の場合、各行について約６万回までの書き込み回数を管理するためには１ワード線ごとに１６ビット、すなわち３２Ｋバイトの不揮発性半導体メモリのうち１Ｋバイトを書き込み回数を管理するために消費することになる。一方、ワード線５１２本分を示すためには９ビットのアドレスが必要であり、１０個のアドレスを記憶したとしてもアドレス記憶部に必要な容量は９０ビットにすぎない。
【０１０４】
＜変形例＞
なお、ここでは不揮発性半導体メモリ６０のメモリセルアレイ６１内にアドレス記憶部を設けた。これに代えて、ＬＳＩチップ１００の製造工程においてＲＯＭ（図示せず）の内部に直接アドレスを記憶させたり、キャッシュメモリ１１０の内部にアドレス記憶部を回路的に作りこんだりしてもよい。
【０１０５】
また、ここではキャッシュメモリ１１０に記憶されたデータを不揮発性半導体メモリ６０へ書き込むタイミングを、アプリケーションプログラムの一連の処理が終了した後とした。これに代えて、不揮発性半導体メモリ６０への書き込みアクセスが所定の回数（たとえば１０回）行われるごとにしてもよい。
【０１０６】
また、ここでは非接触型のＩＣカードについて説明したがこれを接触型のＩＣカードとしてもよい。
【０１０７】
（第３の実施形態）
＜ＩＣカードの構成および動作＞
不揮発性半導体メモリを内蔵したＩＣカードには、所望のアプリケーションを不揮発性半導体メモリにダウンロードできるものや複数のアプリケーションを不揮発性半導体メモリに搭載できるものがある。このようなＩＣカードでは、利用する人・利用するアプリケーションによって不揮発性半導体メモリへの書き込みアクセスの状況が異なる。第３の実施形態によるＩＣカードは、図１０に示したＩＣカードにおいてアドレス記憶部に記憶されるアドレスを不揮発性半導体メモリ６０への書き込みアクセスの状況に応じて動的に変えるようにした点を特徴とする。以下、第３の実施形態によるＩＣカードの動作について図１５を参照しつつ説明する。ここでは、図１２に示したフローチャートと異なるステップＳＴ１５０９−ＳＴ１５１３について説明する。
【０１０８】
［ステップＳＴ１５０９］
ＣＰＵ４０からの書き込みアドレスとキャッシュメモリ１１０に記憶されているアドレスのいずれか１つとが一致するとき、アクセス制御部１２０は書き込みデータをキャッシュメモリ１１０に書き込む。具体的には、キャッシュメモリ１１０に記憶されているデータのうち当該書き込みアドレスに対応するデータに当該書き込みデータが上書きされる。たとえばアドレス００，８０，２Ｃ０に対応するデータＤ（０）−Ｄ（３Ｃ），Ｄ（８０）−Ｄ（ＢＣ），Ｄ（２Ｃ０）−Ｄ（２ＦＣ）がスロット番号１，２，３に対応づけて記憶されている場合においてメモリセルアレイ６１のアドレス８４（行Ｘ３および列Ｙ２）にデータＤ（８４ｗ）を書き込むように指示する書き込みアクセスがあったときには、図１６（ａ）に示すように、キャッシュメモリ１１０に記憶されているデータのうち書き込みアドレス８４に対応するデータすなわち行Ｘ３および列Ｙ２に対応するデータＤ（８４）に書き込みデータＤ（８４ｗ）が上書きされる。
【０１０９】
次にアクセス制御部１２０は、キャッシュメモリ１１０内のスロット番号を付け替える。具体的には、書き込みデータが書き込まれたスロットのスロット番号を１とし、残りのスロットについてはスロット番号の小さい順に２，３，・・・に付け替える。たとえば図１６（ａ）に示したような書き込みが行われた場合には、図１６（ｂ）に示すように、アドレス８０およびデータＤ（８０）−Ｄ（ＢＣ）に対応するスロット番号を１、アドレス００およびデータＤ（０）−Ｄ（３Ｃ）に対応するスロット番号を２、アドレス２Ｃ０およびデータＤ（２Ｃ０）−Ｄ（２ＦＣ）に対応するスロット番号を３に付け替える。このようにスロット番号を付け替えることにより、最近に書き込みアクセスがあったアドレスほど小さいスロット番号が対応づけられることになる。スロット番号の付け替えが終了するとステップＳＴ１２０５にもどる。
【０１１０】
［ステップＳＴ１５１０］
ＣＰＵ４０からの書き込みアドレスがキャッシュメモリ１１０に記憶されているアドレスのいずれとも一致しないとき、アクセス制御部１２０は、キャッシュメモリ１１０内に空スロットが有るか否かを判断する。ここで空スロットとは、アドレスおよびデータが対応づけられていないスロット番号のことをいう。キャッシュメモリ１１０内に空スロットがあるときはステップＳＴ１５１１にすすみ、空スロットがないときはステップＳＴ１５１２にすすむ。たとえば図１７（ａ）に示すように、アドレス００，８０に対応するデータＤ（０）−Ｄ（３Ｃ），Ｄ（８０）−Ｄ（ＢＣ）がスロット番号１，２に対応づけて記憶されておりかつスロット番号３が空スロットである場合において、メモリセルアレイ６１のアドレス４４（行Ｘ２および列Ｙ２）にデータＤ（４４ｗ）を書き込むように指示する書き込みアクセスがあったときには、アクセス制御部１２０はキャッシュメモリ１１０内に空スロットが有ると判断しステップＳＴ１５１１にすすむ。
【０１１１】
［ステップＳＴ１５１１］
キャッシュメモリ１１０内に空スロットがあるとき、アクセス制御部１２０は、書き込みアドレスに対応する行のすべてのデータ（５１２ビット＝３２ビット×１６データ）を不揮発性半導体メモリ６０から読み出し、空スロットのデータ記憶領域に書き込む。またアクセス制御部１２０は、書き込みアドレスに対応する行を示すアドレスを空スロットのアドレス記憶領域に書き込む。たとえば図１７（ａ）に示した状況においてメモリセルアレイ６１のアドレス４４（行Ｘ２および列Ｙ２）にデータＤ（４４ｗ）を書き込むように指示する書き込みアクセスがあったときには、図１７（ｂ）に示すように、書き込みアドレス４４に対応する行Ｘ２のすべてのデータＤ（４０）−Ｄ（７Ｃ）が不揮発性半導体メモリ６０から読み出され、スロット番号３（空スロット）のデータ記憶領域に書き込まれる。また、書き込みアドレス４４に対応する行Ｘ２を示すアドレス４０がスロット番号３（空スロット）のアドレス記憶領域に書き込まれる。
【０１１２】
次に、アクセス制御部１２０は書き込みデータをキャッシュメモリ１１０に書き込む。具体的には、空スロットに書き込んだデータのうち書き込みアドレスに対応するデータに書き込みデータを上書きする。たとえば図１７（ｂ）に示した状況においては、図１７（ｃ）に示すようにスロット番号３のデータ記憶領域に書き込まれたデータＤ（４０）−Ｄ（７Ｃ）のうち書き込みアドレス４４に対応するデータすなわち行Ｘ２および列Ｙ２に対応するデータＤ（４４）に書き込みデータＤ（４４ｗ）が上書きされる。
【０１１３】
次にアクセス制御部１２０は、キャッシュメモリ１１０内のスロット番号を付け替える。上述と同様に、最近に書き込みアクセスがあったアドレスほど小さいスロット番号が対応づけられるようにスロット番号を付け替える。たとえば図１７（ｃ）に示したような書き込みが行われた場合には、図１７（ｄ）に示すように、アドレス４０およびデータＤ（４０）−Ｄ（７Ｃ）に対応するスロット番号を１、アドレス００およびデータＤ（０）−Ｄ（３Ｃ）に対応するスロット番号を２、アドレス８０およびデータＤ（８０）−Ｄ（ＢＣ）に対応するスロット番号を３に付け替える。スロット番号の付け替えが終了するとステップＳＴ１２０５にもどる。
【０１１４】
［ステップＳＴ１５１２］
キャッシュメモリ１１０内に空スロットがないとき、アクセス制御部１２０は、キャッシュメモリ１１０内の最も大きいスロット番号のデータ記憶領域に記憶されているすべてのデータを読み出し、不揮発性半導体メモリ６０の対応する行に書き込む。たとえば図１８（ａ）に示すようにアドレス００，８０，２Ｃ０に対応するデータＤ（０）−Ｄ（３Ｃ），Ｄ（８０）−Ｄ（ＢＣ），Ｄ（２Ｃ０）−Ｄ（２ＦＣ）がスロット番号１，２，３に対応づけて記憶されている場合においてメモリセルアレイ６１のアドレス４４（行Ｘ２および列Ｙ２）にデータＤ（４４ｗ）を書き込むように指示する書き込みアクセスがあったときを考える。このときアクセス制御部１２０は、最も大きいスロット番号３のデータ記憶領域に記憶されているデータＤ（２Ｃ０）−Ｄ（２ＦＣ）を読み出し、不揮発性半導体メモリ６０の対応する行Ｘ１２に書き込む。
【０１１５】
次にアクセス制御部１２０は、書き込みアドレスに対応する行のすべてのデータ（５１２ビット＝３２ビット×１６データ）を不揮発性半導体メモリ６０から読み出し、最も大きいスロット番号のデータ記憶領域に書き込む。またアクセス制御部１２０は、書き込みアドレスに対応する行を示すアドレスを最も大きいスロット番号のアドレス記憶領域に書き込む。たとえば図１８（ａ）に示した状況においては、図１８（ｂ）に示すように書き込みアドレス４４に対応する行Ｘ２のすべてのデータＤ（４０）−Ｄ（７Ｃ）が不揮発性半導体メモリ６０から読み出され、スロット番号３（最も大きいスロット番号）のデータ記憶領域に書き込まれる。また、書き込みアドレス４４に対応する行Ｘ２を示すアドレス４０がスロット番号３（最も大きいスロット番号）のアドレス記憶領域に書き込まれる。
【０１１６】
次に、アクセス制御部１２０は書き込みデータをキャッシュメモリ１１０に書き込む。具体的には、最も大きいスロット番号のデータ記憶領域に書き込んだデータのうち書き込みアドレスに対応するデータに書き込みデータを上書きする。たとえば図１８（ｂ）に示した状況においては、図１８（ｃ）に示すようにスロット番号３のデータ記憶領域に書き込まれたデータＤ（４０）−Ｄ（７Ｃ）のうち書き込みアドレス４４に対応するデータすなわち行Ｘ２および列Ｙ２に対応するデータＤ（４４）に書き込みデータＤ（４４ｗ）が上書きされる。
【０１１７】
次にアクセス制御部１２０は、キャッシュメモリ１１０内のスロット番号を付け替える。上述と同様に、最近に書き込みアクセスがあったアドレスほど小さいスロット番号が対応づけられるようにスロット番号を付け替える。たとえば図１８（ｃ）に示したような書き込みが行われた場合には、図１８（ｄ）に示すように、アドレス４０およびデータＤ（４０）−Ｄ（７Ｃ）に対応するスロット番号を１、アドレス００およびデータＤ（０）−Ｄ（３Ｃ）に対応するスロット番号を２、アドレス８０およびデータＤ（８０）−Ｄ（ＢＣ）に対応するスロット番号を３に付け替える。スロット番号の付け替えが終了するとステップＳＴ１２０５にもどる。
【０１１８】
［ステップＳＴ１５１３］
アプリケーションプログラムの一連の処理が終了するとＣＰＵ４０からアクセス制御部１２０にシステム終了信号が与えられる（ＳＴ１２０５）。システム終了信号を受けるとアクセス制御部１２０は、キャッシュメモリ１１０に記憶されているデータをすべて読み出し、メモリセルアレイ６１の対応するアドレスに書き込む（ＳＴ１２１１）。またアクセス制御部１２０は、キャッシュメモリ１１０に記憶されているアドレスをすべて読み出し、不揮発性半導体メモリ６０のアドレス記憶部に書き込む（書き替える）。これにより、最近に書き込みアクセスがあったアドレスにアドレス記憶部の内容が更新される。すなわち、最近に書き込みアクセスがあったアドレスが常にアドレス記憶部に記憶される。更新後のアドレス記憶部のアドレスは次回の処理において利用される。
【０１１９】
＜効果＞
以上のように第３の実施形態によるＩＣカードによれば、アドレス記憶部に記憶されるアドレス（キャッシュにヒットしやすいアドレス）を動的に変えることができる。したがって、利用する人・利用するアプリケーションによって不揮発性半導体メモリ６０への書き込みアクセスの状況が異なる場合にも不揮発性半導体メモリ６０への書き込み回数を少なくすることができる。
【０１２０】
また、キャッシュメモリ１１０のアドレス置換メカニズムによって抽出されたアドレスをアドレス記憶部に記憶させ次回の処理に利用するため、ＩＣカードのような小さな資源の場合であっても、よくヒットするアドレスを精度よく抽出することができる。
【０１２１】
なお、ここでは最近に書き込みアクセスがあったアドレスがアドレス記憶部に動的に記憶される場合について説明した。これに代えて書き込みアクセス頻度が高いアドレスがアドレス記憶部に動的に記憶されるようにしてもよい。
【０１２２】
また、アドレス記憶部は不揮発性半導体メモリ６０に内蔵されているため、アドレスの書き換えが頻繁に起こると不揮発性半導体メモリ６０の信頼性が低下する可能性がある。したがって、書き込みアクセス頻度の高いアドレスが比較的決まっているシステムで使用されることが望ましい。
【０１２３】
（第４の実施形態）
＜ＩＣカードの構成＞
この発明の第４の実施形態によるＩＣカードの全体構成は図１０に示したＩＣカードと同様である。しかし第４の実施形態によるＩＣカードでは、図１９（ａ）に示すように、不揮発性半導体メモリ６０のメモリセルアレイ６１内のアドレス記憶部は固定アドレス記憶領域と動的アドレス記憶領域とを含む。ここではメモリセルアレイ６１の行Ｘ１５に対応する領域を固定アドレス記憶領域、行Ｘ１６に対応する領域を動的アドレス記憶領域としている。
【０１２４】
ＩＣカードに搭載される各アプリケーションプログラムには、すべてのアプリケーションにおいて共通するプログラムの部分とアプリケーションごとに異なるプログラムの部分とが存在する。すべてのアプリケーションにおいて共通するプログラムの部分については、不揮発性半導体メモリ６０への書き込みアクセス頻度の高いアドレスをあらかじめ想定することができる。このようなアドレスは、アドレス記憶部の固定アドレス記憶領域にあらかじめ書き込まれる。一方、アプリケーションごとに異なるプログラムの部分については、利用する人・利用するアプリケーションによって不揮発性半導体メモリ６０への書き込みアクセスの状況が異なる。このような部分については、アドレス記憶部の動的アドレス記憶領域に記憶されるアドレス（キャッシュにヒットしやすいアドレス）を不揮発性半導体メモリ６０への書き込みアクセスの状況に応じて動的に変える。
【０１２５】
また、第４の実施形態によるＩＣカードでは、図１９（ｂ）に示すように、キャッシュメモリ１１０内部に固定アドレス領域と動的アドレス領域とが設けられている。ここではスロット番号１−３のアドレス記憶領域およびデータ記憶領域を固定アドレス領域、スロット番号４−５のアドレス記憶領域およびデータ記憶領域を動的アドレス領域としている。
【０１２６】
＜ＩＣカードの動作＞
次に、第４の実施形態によるＩＣカードの動作について図２０を参照しつつ説明する。ここでは、図１２に示したフローチャートと異なるステップＳＴ２００２，ＳＴ２００９−ＳＴ２０１５について説明する。
【０１２７】
［ステップＳＴ２００２］
アクセス制御部１２０は、不揮発性半導体メモリ６０のアドレス記憶部の固定アドレス記憶領域に記憶されたアドレスを読み出しこれをキャッシュメモリ１１０の固定アドレス領域に書き込み、アドレス記憶部の動的アドレス記憶領域に記憶されたアドレスを読み出しこれをキャッシュメモリ１１０の動的アドレス領域に書き込む。
【０１２８】
［ステップＳＴ２００９］
ＣＰＵ４０からの書き込みアドレスとキャッシュメモリ１１０に記憶されているアドレスのいずれか１つとが一致するとき、アクセス制御部１２０は当該アドレスがキャッシュメモリ１１０の固定アドレス領域に記憶されているアドレスか否かを判断する。固定アドレス領域に記憶されているアドレスであるときはステップＳＴ２０１０にすすみ、そうでないとき、すなわちキャッシュメモリ１１０の動的アドレス領域に記憶されているアドレスであるときはステップＳＴ２０１１にすすむ。
【０１２９】
［ステップＳＴ２０１０］
アクセス制御部１２０は書き込みデータをキャッシュメモリ１１０の固定アドレス領域に書き込む。具体的には、キャッシュメモリ１１０の固定アドレス領域に記憶されているデータのうち当該書き込みアドレスに対応するデータに当該書き込みデータを上書きする。書き込みが終了するとステップＳＴ１２０５にもどる。
【０１３０】
［ステップＳＴ２０１１］
アクセス制御部１２０は書き込みデータをキャッシュメモリ１１０の動的アドレス領域に書き込む。具体的には、キャッシュメモリ１１０の動的アドレス領域に記憶されているデータのうち当該書き込みアドレスに対応するデータに当該書き込みデータが上書きされる。
【０１３１】
次にアクセス制御部１２０は、キャッシュメモリ１１０の動的アドレス領域内のスロット番号を付け替える。具体的には、書き込みデータが書き込まれたスロットのスロット番号を動的アドレス領域内で最も小さいスロット番号に付け替え、残りのスロットについてはスロット番号の小さい順に、動的アドレス領域内で２番目に小さいスロット番号，３番目に小さいスロット番号，・・・に付け替える。このようにスロット番号を付け替えることにより動的アドレス領域内では、最近に書き込みアクセスがあったアドレスほど小さいスロット番号が対応づけられることになる。スロット番号の付け替えが終了するとステップＳＴ１２０５にもどる。
【０１３２】
［ステップＳＴ２０１２］
ＣＰＵ４０からの書き込みアドレスがキャッシュメモリ１１０に記憶されているアドレスのいずれとも一致しないとき、アクセス制御部１２０はキャッシュメモリ１１０の動的アドレス領域に空スロットが有るか否かを判断する。キャッシュメモリ１１０の動的アドレス領域に空スロットがあるときはステップＳＴ２０１３にすすみ、空スロットがないときはステップＳＴ２０１４にすすむ。
【０１３３】
［ステップＳＴ２０１３］
キャッシュメモリ１１０の動的アドレス領域に空スロットがあるとき、アクセス制御部１２０は、書き込みアドレスに対応する行のすべてのデータ（５１２ビット＝３２ビット×１６データ）を不揮発性半導体メモリ６０から読み出し、空スロットのデータ記憶領域に書き込む。またアクセス制御部１２０は、書き込みアドレスに対応する行を示すアドレスを空スロットのアドレス記憶領域に書き込む。
【０１３４】
次に、アクセス制御部１２０は書き込みデータをキャッシュメモリ１１０に書き込む。具体的には、空スロットに書き込んだデータのうち書き込みアドレスに対応するデータに書き込みデータを上書きする。
【０１３５】
次にアクセス制御部１２０は、キャッシュメモリ１１０の動的アドレス領域内のスロット番号を付け替える。上述と同様に、最近に書き込みアクセスがあったアドレスほど小さいスロット番号が対応づけられるようにスロット番号を付け替える。スロット番号の付け替えが終了するとステップＳＴ１２０５にもどる。
【０１３６】
［ステップＳＴ２０１４］
キャッシュメモリ１１０の動的アドレス領域に空スロットがないとき、アクセス制御部１２０は、キャッシュメモリ１１０の動的アドレス領域内の最も大きいスロット番号のデータ記憶領域に記憶されているすべてのデータを読み出し、不揮発性半導体メモリ６０の対応する行に書き込む。
【０１３７】
次にアクセス制御部１２０は、書き込みアドレスに対応する行のすべてのデータ（５１２ビット＝３２ビット×１６データ）を不揮発性半導体メモリ６０から読み出し、キャッシュメモリ１１０の動的アドレス領域内の最も大きいスロット番号のデータ記憶領域に書き込む。またアクセス制御部１２０は、書き込みアドレスに対応する行を示すアドレスを、キャッシュメモリ１１０の動的アドレス領域内の最も大きいスロット番号のアドレス記憶領域に書き込む。
【０１３８】
次に、アクセス制御部１２０は書き込みデータをキャッシュメモリ１１０に書き込む。具体的には、動的アドレス領域内の最も大きいスロット番号のデータ記憶領域に書き込んだデータのうち書き込みアドレスに対応するデータに書き込みデータを上書きする。
【０１３９】
次にアクセス制御部１２０は、キャッシュメモリ１１０の動的アドレス領域内のスロット番号を付け替える。上述と同様に、最近に書き込みアクセスがあったアドレスほど小さいスロット番号が対応づけられるようにスロット番号を付け替える。スロット番号の付け替えが終了するとステップＳＴ１２０５にもどる。
【０１４０】
［ステップＳＴ２０１５］
アプリケーションプログラムの一連の処理が終了するとＣＰＵ４０からアクセス制御部１２０にシステム終了信号が与えられる（ＳＴ１２０５）。システム終了信号を受けるとアクセス制御部１２０は、キャッシュメモリ１１０に記憶されているデータをすべて読み出し、メモリセルアレイ６１の対応するアドレスに書き込む（ＳＴ１２１１）。またアクセス制御部１２０は、キャッシュメモリ１１０の動的アドレス領域に記憶されているアドレスをすべて読み出し、不揮発性半導体メモリ６０のアドレス記憶部の動的アドレス記憶領域に書き込む（書き替える）。これにより、アドレス記憶部の動的アドレス記憶領域の内容が最近に書き込みアクセスがあったアドレスに更新される。すなわち、最近に書き込みアクセスがあったアドレスが常にアドレス記憶部の動的アドレス記憶領域に記憶される。更新後の動的アドレス記憶領域のアドレスは次回の処理において利用される。
【０１４１】
＜処理の流れの例＞
図２１に示す太線のルートを通った場合の処理の流れを図２２−図２４に示す。なお、図２１に示すフローチャートは図２０に示したフローチャートと同じである。ここではあらかじめアドレス記憶部の固定アドレス記憶領域にアドレス００，８０，２Ｃ０が記憶され、動的アドレス記憶領域に１００，４０が記憶されているものとする。
【０１４２】
（１）（ＳＴ２００２）
アドレス記憶部に記憶されているアドレスが読み出され、キャッシュメモリ１１０に書き込まれる。このとき、固定アドレス記憶領域に記憶されているアドレス００，８０，２Ｃ０はキャッシュメモリ１１０の固定アドレス領域に書き込まれ、動的アドレス記憶領域に記憶されているアドレス１００，４０はキャッシュメモリ１１０の動的アドレス領域に書き込まれる。
【０１４３】
（２）（ＳＴ１２０３）
キャッシュメモリ１１０に書き込まれたアドレス００，８０，２Ｃ０，１００，４０に対応する行のデータが不揮発性半導体メモリ６０から読み出され、キャッシュメモリ１１０に書き込まれる。
【０１４４】
（３）（ＳＴ１２０７）
「アドレス４４にデータ１２３４５６７８を書け！」という書き込みアクセスが発生する。アクセス制御部１２０は、書き込みアドレス４４とキャッシュメモリ１１０に記憶されているアドレスとを比較する。ここでは下位４ビットを無視して比較する。したがってキャッシュメモリ１１０の動的アドレス領域に記憶されているアドレス４０と書き込みアドレス４４とが一致する。
【０１４５】
（４）（ＳＴ２０１１）
書き込みデータ１２３４５６７８がキャッシュメモリ１１０に書き込まれる。
【０１４６】
（５）（ＳＴ２０１１）
動的アドレス領域のスロット番号が付け替えられる。データが書き込まれたスロットのスロット番号が４（動的アドレス領域内でもっとも小さいスロット番号）に、アドレス１００に対応するスロットのスロット番号が５に付け替えられる。
【０１４７】
（６）（ＳＴ１２１１）
キャッシュメモリ１１０に記憶されているデータが読み出され、不揮発性半導体メモリ６０に書き込まれる。
【０１４８】
（７）（ＳＴ２０１５）
キャッシュメモリ１１０に記憶されているアドレスがアドレス記憶部に書き込まれる。固定アドレス領域に記憶されているアドレス００，８０，２Ｃ０はアドレス記憶部の固定アドレス記憶領域に書き込まれ、動的アドレス領域に記憶されているアドレス４０，１００はアドレス記憶部の動的アドレス記憶領域に記憶される。
【図面の簡単な説明】
【０１４９】
【図１】この発明の第１の実施形態によるＩＣカードの構成を示すブロック図である。
【図２】図１に示した不揮発性半導体メモリの内部構成を示すブロック図である。
【図３】図２に示したエラー訂正回路によるエラー検出およびエラー訂正処理を説明するための図である。
【図４】図１に示したＩＣカードの動作を説明するためのタイミングチャートである。
【図５】不揮発性半導体メモリの診断手順を示すフローチャートである。
【図６】（ａ）は、不揮発性メモリの診断におけるデータの読み出し順序を示す図である。（ｂ）は、不揮発性メモリの診断動作を説明するためのタイミングチャートである。
【図７】検査回路のデータ処理部に記憶されるアドレス・データ・エラー訂正情報の一例を示す図である。
【図８】修復動作を説明するためのタイミングチャートである。
【図９】（ａ）−（ｃ）は、この発明の第１の実施形態の変形例におけるデータの読み出し順序を示す図である。
【図１０】この発明の第２の実施形態によるＩＣカードの構成を示すブロック図である。
【図１１】図１０に示した不揮発性半導体メモリのメモリセルアレイを示す図である。
【図１２】図１０に示したＩＣカードの動作を説明するためのフローチャートである。
【図１３】（ａ）−（ｃ）は、キャッシュメモリに記憶されるアドレスおよびデータの対応関係を示す図である。
【図１４】書き込みアドレスとキャッシュメモリに記憶されたアドレスとの比較の一例を示す図である。
【図１５】この発明の第３の実施形態によるＩＣカードの動作を説明するためのフローチャートである。
【図１６】（ａ）−（ｂ）は、キャッシュメモリに記憶されるアドレスおよびデータの対応関係を示す図である。
【図１７】（ａ）−（ｄ）は、キャッシュメモリに記憶されるアドレスおよびデータの対応関係を示す図である。
【図１８】（ａ）−（ｄ）は、キャッシュメモリに記憶されるアドレスおよびデータの対応関係を示す図である。
【図１９】（ａ）は、アドレス記憶部の固定アドレス記憶領域および動的アドレス記憶領域を示す図である。（ｂ）は、キャッシュメモリ内の固定アドレス領域および動的アドレス領域を示す図である。
【図２０】この発明の第４の実施形態によるＩＣカードの動作を説明するためのフローチャートである。
【図２１】処理の流れの一例を説明するための図である。
【図２２】処理の流れの一例を説明するための図である。
【図２３】処理の流れの一例を説明するための図である。
【図２４】処理の流れの一例を説明するための図である。
【符号の説明】
【０１５０】
１，１００  ＬＳＩチップ（半導体集積回路装置）
３０  検査回路
４０  ＣＰＵ
６０  不揮発性半導体メモリ
１１０  キャッシュメモリ
１２０  アクセス制御部。
【図１】
2008071490.tif 000003
【図２】
2008071490.tif 000004
【図３】
2008071490.tif 000005
【図４】
2008071490.tif 000006
【図５】
2008071490.tif 000007
【図６】
2008071490.tif 000008
【図７】
2008071490.tif 000009
【図８】
2008071490.tif 000010
【図９】
2008071490.tif 000011
【図１０】
2008071490.tif 000012
【図１１】
2008071490.tif 000013
【図１２】
2008071490.tif 000014
【図１３】
2008071490.tif 000015
【図１４】
2008071490.tif 000016
【図１５】
2008071490.tif 000017
【図１６】
2008071490.tif 000018
【図１７】
2008071490.tif 000019
【図１８】
2008071490.tif 000020
【図１９】
2008071490.tif 000021
【図２０】
2008071490.tif 000022
【図２１】
2008071490.tif 000023
【図２２】
2008071490.tif 000024
【図２３】
2008071490.tif 000025
【図２４】
2008071490.tif 000026