(57)【要約】【課題】  データの信頼性及び耐タンパー性をある程度確保しつつ、誤り検出処理の処理手順及び回路構成を複雑化することなく上書き処理の実行が可能な不揮発性メモリの誤り検出制御システムを提供する。【解決手段】  １アドレス毎に主データ領域と冗長データ領域で構成されたデータ領域を複数アドレス分備える不揮発性メモリ１０と、不揮発性メモリ１０に対し、データ領域群単位での一括消去処理、データ領域単位での読み出し処理、データ領域単位での書き込み処理及びビット単位での上書き処理の制御を行うメモリ制御手段２０と、読み出しデータに対し、対応する冗長データに基づいて誤り検出処理を実行する誤り検出手段３０と、上書き処理の実行対象であるか否かで分類されるデータ種別、または、上書き処理を実行したか否かを示す記憶状態に基づいて、誤り検出処理の実行の可否を制御する誤り検出制御手段５０を備える。【選択図】        図２
2008257476.tif 000002
【特許請求の範囲】
【請求項１】
１アドレス毎に所定のデータを記憶するための主データ領域と前記データの誤り検出処理のための冗長データを記憶する冗長データ領域で構成されたデータ領域を複数アドレス分備える不揮発性メモリと、
前記不揮発性メモリに対し、所定アドレス数の前記データ領域からなるデータ領域群単位での一括消去処理、前記データ領域単位での読み出し処理、前記データ領域単位での書き込み処理、及び、前記書き込み処理後の前記主データ領域に対する前記主データ領域を構成するビット単位での上書き処理の制御を行うメモリ制御手段と、
前記読み出し処理によって読み出された読み出しデータに対し、対応する前記冗長データに基づいて前記誤り検出処理を実行する誤り検出手段と、を備えた誤り検出制御システムであって、
前記上書き処理の実行対象であるか否かで分類されるデータ種別、または、前記上書き処理を実行したか否かを示す記憶状態に基づいて、前記誤り検出手段における前記読み出しデータに対する前記誤り検出処理の実行の可否を制御する誤り検出制御手段を備えることを特徴とする誤り検出制御システム。
【請求項２】
前記不揮発性メモリは、前記データ領域夫々が、前記誤り検出処理の実行が禁止された前記データを記憶する誤り検出処理禁止データ領域と、前記誤り検出処理の実行が許可された前記データを記憶する誤り検出処理許可データ領域の何れかに設定されており、
前記誤り検出制御手段は、前記読み出し処理時に、前記読み出し処理の対象となる前記データ領域である読み出し対象データ領域が前記誤り検出処理禁止データ領域である場合に、前記誤り検出手段における前記誤り検出処理の実行を禁止し、前記読み出し対象データ領域が前記誤り検出処理許可データ領域である場合に、前記誤り検出手段における前記誤り検出処理の実行を許可することを特徴とする請求項１に記載の誤り検出制御システム。
【請求項３】
前記メモリ制御手段は、前記読み出し処理時に、前記誤り検出制御手段に対し、当該読み出し処理における前記読み出しデータの前記データ種別に応じた誤り検出制御信号を出力し、
前記誤り検出制御手段は、前記読み出し処理時に、前記誤り検出制御信号に基づいて、前記読み出しデータの前記データ種別が前記上書き処理を実行され得る前記データ種別であるか否かを判定し、前記上書き処理を実行され得ない前記データ種別である場合に、前記誤り検出手段における前記誤り検出処理を許可し、前記上書き処理を実行され得る前記データ種別である場合に、前記誤り検出手段における前記誤り検出処理を禁止し、
前記誤り検出手段は、前記誤り検出制御手段により前記読み出しデータに対する前記誤り検出処理の実行が許可されている場合に、対応する前記冗長データを用いて前記読み出しデータに対する前記誤り検出処理を実行することを特徴とする請求項１に記載の誤り検出制御システム。
【請求項４】
前記誤り検出制御手段は、前記誤り検出制御信号が、前記読み出しデータが命令データであることを示す信号である場合に、前記誤り検出処理の実行を許可し、前記誤り検出制御信号が、前記読み出しデータがプログラムカウンタ値であることを示す信号である場合に、前記誤り検出処理の実行を禁止することを特徴とする請求項３に記載の誤り検出制御システム。
【請求項５】
前記不揮発性メモリは、前記データ領域毎に、前記誤り検出処理の実行の可否を記憶するフラグ領域を備えてなり、
前記誤り検出制御手段は、前記メモリ制御手段による前記上書き処理時に、前記上書き処理の対象となる前記データ領域に対応する前記フラグ領域に、前記誤り検出処理の実行禁止フラグを設定することを特徴とする請求項１に記載の誤り検出制御システム。
【請求項６】
前記データ領域毎に前記誤り検出処理の実行の可否を記憶可能なレジスタを前記不揮発性メモリ外に備えてなり、
前記誤り検出制御手段は、前記メモリ制御手段による前記上書き処理時に、前記レジスタに、前記上書き処理の対象となる前記データ領域に対する前記誤り検出処理の実行禁止フラグを設定することを特徴とする請求項１に記載の誤り検出制御システム。
【請求項７】
前記メモリ制御手段は、前記誤り検出処理の実行が禁止された誤り検出禁止データに対する前記読み出し処理の実行後、更に、所定回数の前記誤り検出禁止データに対する前記読み出し処理を実行し、
前記誤り検出制御手段は、前記読み出し処理により読み出された読み出しデータの夫々を比較処理して、前記読み出しデータの正誤を判定することを特徴とする請求項１〜６の何れか１項に記載の誤り検出制御システム。
【請求項８】
前記冗長データは、前記誤り検出処理に加え、誤り訂正処理で利用可能に構成され、
前記誤り検出手段は、前記読み出しデータに対し、対応する前記冗長データに基づいて、前記誤り検出処理及び前記誤り訂正処理を実行し、
前記誤り検出制御手段は、前記誤り検出処理の実行を禁止する場合に、前記誤り訂正処理を禁止することを特徴とする請求項１〜７の何れか１項に記載の誤り検出制御システム。
【請求項９】
請求項１〜８の何れか１項に記載の誤り検出制御システムを搭載したＩＣチップを供えることを特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを備えた半導体装置の誤り検出制御システム、特に、１アドレス毎に主データ領域と冗長データ領域で構成されたデータ領域を複数アドレス分備える不揮発性メモリと、不揮発性メモリに対し、データ領域群単位での一括消去処理、データ領域単位での読み出し処理、データ領域単位での書き込み処理、及び、ビット単位での上書き処理の制御を行うメモリ制御手段と、読み出しデータに対し、対応する冗長データに基づいて誤り検出処理を実行する誤り検出手段と、を備える誤り検出制御システムに関する。
【背景技術】
【０００２】
従来、例えば、フラッシュメモリ等の不揮発性メモリを搭載した半導体装置では、データの信頼性や、電子証明情報やパスワード等の秘密情報の読み取り等のために行われる不正なデータ改ざん等に対する耐タンパー性を確保するために、様々な技術が提案されている。
【０００３】
データの信頼性や耐タンパー性を確保するための技術には、例えば、データの各ビット構成に基づいてパリティ符号やチェックサム等の誤り検出符号を生成し、誤り検出符号を用いて謝り検出処理を行う誤り検出技術や、ハミング符号等の誤り検出訂正符号を生成し、誤り検出訂正符号を用いて誤り検出処理及び誤り訂正処理を行う誤り検出訂正技術がある。
【０００４】
具体的には、誤り検出符号を用いた誤り検出技術では、例えば、フラッシュメモリを、１アドレス毎に所定のデータを記憶するための主データ領域と前記データの誤り検出処理のための冗長データを記憶する冗長データ領域で構成されたデータ領域を複数アドレス分備えるように構成する。そして、書き込み処理時に、書き込みデータの各ビット構成に基づいて誤り検出符号を生成し、主データ領域に書き込みデータを書き込むと共に、冗長データ領域に必要な情報を書き込む。更に、読み出し処理時に、フラッシュメモリから読み出しデータと共に対応する冗長データを読み出し、該冗長データを用いて、読み出しデータのエラー検出のための誤り検出処理を行う。尚、誤り検出訂正符号を用いた誤り検出訂正技術では、書き込み処理時に、書き込みデータの各ビット構成に基づいて誤り検出訂正符号を生成し、読み出し処理時に、誤り検出処理において誤りが検出されたときに、誤り訂正処理を行う。
【０００５】
尚、誤り検出技術における誤り検出処理は、例えば、電源にノイズを印加する等して、フラッシュメモリから読み出した読み出しデータを不正に改ざんされた場合に、該データの改ざんを検出して、耐タンパー性を確保するのに有用である。また、誤り検出訂正技術における誤り訂正処理では、例えば、長期間メモリ内に保持されているデータが経年劣化して読み取り不良等が生じた場合等に、データを修正することができるため、データの信頼性の確保に有用である。
【０００６】
ところで、フラッシュメモリでは、原理上、書き込み処理において、ビット単位で値を消去状態である‘１’から書き込み状態である‘０’に書き換えるが、ビット単位で値を書き込み状態‘０’から消去状態‘１’にすることはできない。より具体的には、書き込み状態‘０’から消去状態‘１’にする場合、消去処理を行うが、消去処理は、例えば、所定アドレス数のデータ領域からなるメモリブロック単位で一括して行われる。つまり、消去処理では、消去対象のメモリブロック内の全てのビットの値が‘０’から‘１’に消去されることとなり、ビット単位で値を‘０’から‘１’にすることはできない。
【０００７】
このため、データが命令データ（命令コード）等である場合には、一度データが書き込まれると、次の命令コードを書き込む書き込み処理の前に、必ず消去処理が実行されることとなる。これに対し、データがプログラムカウンタ等の順次変化するデータである場合には、処理速度の高速化の観点から、データの書き込み処理毎に消去処理を実行するのではなく、書き込み処理の後にデータ領域の内の主データ領域の値をビット単位で‘１’から‘０’に書き換える上書き処理を一定回数繰り返してから消去処理を実行するように構成されている場合がある。
【０００８】
尚、誤り検出符号や誤り検出訂正符号等のための冗長データを付加する構成の場合、誤り検出符号や誤り検出訂正符号は主データ領域に記憶されたデータのビット構成に応じて作成されるため、主データ領域に対するビット単位での上書き処理を実行すると、冗長データを書き換える必要が生じる。しかし、上述したように、フラッシュメモリでは、ビット単位での‘０’から‘１’への書き換えができないため、データに対する上書き処理を実行すると、冗長データを正しく書き換えることが不可能な場合が生じる。このため、フラッシュメモリを備える従来の半導体装置では、データの信頼性や耐タンパー性の観点から有効な誤り検出処理と、処理速度の高速化の観点から有効な上書き処理を同時に備えることはできなかった。
【０００９】
誤り検出処理と上書き処理を同時に備えるための技術としては、例えば、フラッシュメモリの各データ領域を、主データ領域と冗長データを記憶するための冗長データ領域とステータス領域で構成し、データ領域全体の消去処理、及び、主データ領域及び冗長データ領域への書き込み処理が実行された後、所謂上書き処理として、ステータス領域に対し、主データ領域及び冗長データ領域に対する変更が必要ないデータを書き込むエラー検出技術がある（例えば、特許文献１参照）。
【００１０】
ここで、図１１は、特許文献１に記載のエラー検出技術によるデータ領域の値の遷移例を示している。ここでのデータ領域は、４ビットのステータス領域ＷＳ、４ビットの主データ領域ＷＭ、４ビットの冗長データ領域ＷＰで構成されており、冗長データ領域ＷＰには、ステータス領域ＷＳ及び主データ領域ＷＭからなる８ビットの領域ＷＦに対する誤り検出訂正符号のためのデータが記憶される。
【００１１】
具体的には、図１１（ａ）は、消去処理後のデータ領域を示しており、データ領域中の全てのビットの値が‘１’となっている。図１１（ｂ）は、消去処理後の最初の書き込み処理を実行した後のデータ領域の値を示している。この書き込み処理の例では、主データ領域ＷＭに値‘１０１０’が、冗長データ領域ＷＰに値‘１００１’が書き込まれる。上述したように、冗長データ領域ＷＰに書き込まれた値‘１００１’は、８ビットの領域ＷＦの値‘１１１１１０１０’に対する誤り検出訂正符号となっている。
【００１２】
図１１（ｃ）は、所謂上書き処理後（単一ビット変更後）のデータ領域の値を示している。この所謂上書き処理では、ステータス領域ＷＳに値‘０００１’が書き込まれる。ここで、８ビットの領域ＷＦの値は‘０００１１０１０’となり、これに対する誤り検出訂正符号の値は‘１００１’である。これは、冗長データ領域ＷＰの値‘１００１’と等しいので、所謂上書き処理後において、冗長データ領域ＷＰに記憶された冗長データ‘１００１’を用いて、所謂上書き処理後のステータス領域ＷＳ及び主データ領域ＷＭからなる８ビットの領域ＷＦに記憶されたデータ‘０００１１０１０’に対する誤り検出処理が可能であることが分かる。
【００１３】
【特許文献１】特表２００４−５２４６３６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、上記特許文献１に記載のエラー検出技術では、既に書き込まれた主データ領域ＷＭ及び冗長データ領域ＷＰの値と整合性のあるデータをステータス領域ＷＳに書き込む必要があるため、ステータス領域ＷＳに書き込むことができるデータの値が限られることとなる。具体的には、図１１に示す例では、ステータス領域ＷＳに書き込むことができる値は、上述した値‘０００１’の他、値‘０１００’だけである。このため、例えば、モバイル通信においてコンテンツデータをダウンロードし、このコンテンツが無効になった時に、ステータス領域ＷＳに該データが無効であることを示す無効マーク‘０００１’を書き込む場合等、ステータス領域ＷＳの用途は著しく限定される。更に、上記特許文献１に記載のエラー検出技術では、ステータス領域ＷＳに書き込める値が限られており、所謂上書き処理を複数回実行することは困難であることから、上述したプログラムカウンタのように、複数の上書き処理が実行できることが望ましいデータに適用するには不向きである。
【００１５】
また、上記特許文献１に記載のエラー検出技術では、上述したように、既に書き込まれた主データ領域ＷＭ及び冗長データ領域ＷＰの値と整合性のあるデータをステータス領域ＷＳに書き込む必要があるため、ステータス領域ＷＳに書き込む値の作成に係る回路は、回路構成が複雑になる。
【００１６】
また、上記特許文献１に記載のエラー検出技術では、主データ領域ＷＭのビット数に応じたビット数のステータス領域ＷＳを備える必要があり、更に、このステータス領域ＷＳも含めて冗長データを作成するため、冗長データを記憶する冗長データ領域ＷＰのビット数も多くなる。つまり、これらの領域の増加に伴って、必要なデータ領域のデータ量が増加し、フラッシュメモリの記憶領域を相当量増加させる必要が生じる。
【００１７】
本発明は上記の問題に鑑みてなされたものであり、その目的は、データの信頼性及び耐タンパー性をある程度確保しつつ、誤り検出処理の処理手順及び回路構成を複雑化することなく、データの特性や状態に応じて上書き処理の実行を可能にする不揮発性メモリの誤り検出制御システムを提供する点にある。
【課題を解決するための手段】
【００１８】
上記目的を達成するための本発明に係る誤り検出制御システムは、１アドレス毎に所定のデータを記憶するための主データ領域と前記データの誤り検出処理のための冗長データを記憶する冗長データ領域で構成されたデータ領域を複数アドレス分備える不揮発性メモリと、前記不揮発性メモリに対し、所定アドレス数の前記データ領域からなるデータ領域群単位での一括消去処理、前記データ領域単位での読み出し処理、前記データ領域単位での書き込み処理、及び、前記書き込み処理後の前記主データ領域に対する前記主データ領域を構成するビット単位での上書き処理の制御を行うメモリ制御手段と、前記読み出し処理によって読み出された読み出しデータに対し、対応する前記冗長データに基づいて前記誤り検出処理を実行する誤り検出手段と、を備えた誤り検出制御システムであって、前記上書き処理の実行対象であるか否かで分類されるデータ種別、または、前記上書き処理を実行したか否かを示す記憶状態に基づいて、前記誤り検出手段における前記読み出しデータに対する前記誤り検出処理の実行の可否を制御する誤り検出制御手段を備えることを第１の特徴とする。
【００１９】
上記特徴の本発明に係る誤り検出制御システムは、前記不揮発性メモリは、前記データ領域夫々が、前記誤り検出処理の実行が禁止された前記データを記憶する誤り検出処理禁止データ領域と、前記誤り検出処理の実行が許可された前記データを記憶する誤り検出処理許可データ領域の何れかに設定されており、前記誤り検出制御手段は、前記読み出し処理時に、前記読み出し処理の対象となる前記データ領域である読み出し対象データ領域が前記誤り検出処理禁止データ領域である場合に、前記誤り検出手段における前記誤り検出処理の実行を禁止し、前記読み出し対象データ領域が前記誤り検出処理許可データ領域である場合に、前記誤り検出手段における前記誤り検出処理の実行を許可することを第２の特徴とする。
【００２０】
上記第１の特徴の本発明に係る誤り検出制御システムは、前記メモリ制御手段は、前記読み出し処理時に、前記誤り検出制御手段に対し、当該読み出し処理における前記読み出しデータの前記データ種別に応じた誤り検出制御信号を出力し、前記誤り検出制御手段は、前記読み出し処理時に、前記誤り検出制御信号に基づいて、前記読み出しデータの前記データ種別が前記上書き処理を実行され得る前記データ種別であるか否かを判定し、前記上書き処理を実行され得ない前記データ種別である場合に、前記誤り検出手段における前記誤り検出処理を許可し、前記上書き処理を実行され得る前記データ種別である場合に、前記誤り検出手段における前記誤り検出処理を禁止し、前記誤り検出手段は、前記誤り検出制御手段により前記読み出しデータに対する前記誤り検出処理の実行が許可されている場合に、対応する前記冗長データを用いて前記読み出しデータに対する前記誤り検出処理を実行することを第３の特徴とする。
【００２１】
上記特徴の本発明に係る誤り検出制御システムは、前記誤り検出制御手段は、前記誤り検出制御信号が、前記読み出しデータが命令データであることを示す信号である場合に、前記誤り検出処理の実行を許可し、前記誤り検出制御信号が、前記読み出しデータがプログラムカウンタ値であることを示す信号である場合に、前記誤り検出処理の実行を禁止することを第４の特徴とする。
【００２２】
上記第１の特徴の本発明に係る誤り検出制御システムは、前記不揮発性メモリは、前記データ領域毎に、前記誤り検出処理の実行の可否を記憶するフラグ領域を備えてなり、前記誤り検出制御手段は、前記メモリ制御手段による前記上書き処理時に、前記上書き処理の対象となる前記データ領域に対応する前記フラグ領域に、前記誤り検出処理の実行禁止フラグを設定することを第５の特徴とする。
【００２３】
上記第１の特徴の本発明に係る誤り検出制御システムは、前記データ領域毎に前記誤り検出処理の実行の可否を記憶可能なレジスタを前記不揮発性メモリ外に備えてなり、前記誤り検出制御手段は、前記メモリ制御手段による前記上書き処理時に、前記レジスタに、前記上書き処理の対象となる前記データ領域に対する前記誤り検出処理の実行禁止フラグを設定することを第６の特徴とする。
【００２４】
上記何れかの特徴の本発明に係る誤り検出制御システムは、前記メモリ制御手段は、前記誤り検出処理の実行が禁止された誤り検出禁止データに対する前記読み出し処理の実行後、更に、所定回数の前記誤り検出禁止データに対する前記読み出し処理を実行し、前記誤り検出制御手段は、前記読み出し処理により読み出された読み出しデータの夫々を比較処理して、前記読み出しデータの正誤を判定することを第７の特徴とする。
【００２５】
上記何れかの特徴の本発明に係る誤り検出制御システムは、前記冗長データは、前記誤り検出処理に加え、誤り訂正処理で利用可能に構成され、前記誤り検出手段は、前記読み出しデータに対し、対応する前記冗長データに基づいて、前記誤り検出処理及び前記誤り訂正処理を実行し、前記誤り検出制御手段は、前記誤り検出処理の実行を禁止する場合に、前記誤り訂正処理を禁止することを第８の特徴とする。
【００２６】
上記目的を達成するための本発明に係るＩＣカードは、上記何れかの特徴の誤り検出制御システムを搭載したＩＣチップを供えることを特徴とする。
【発明の効果】
【００２７】
上記特徴の誤り検出制御システムによれば、上書き処理の実行対象であるか否かで分類されるデータ種別、または、上書き処理を実行したか否かを示す記憶状態に基づいて、誤り検出処理の可否を制御する誤り検出制御手段を備えることにより、上書き処理を行わないまたは上書き処理を実施していない読み出しデータについては、誤り検出処理を実行してデータの信頼性及び耐タンパー性を維持することが可能になると共に、上書き処理の実行が望ましいまたは上書き処理を実施した読み出しデータについては、上書き処理の実行が可能になり、データ処理の高速化を図ることが可能になる。即ち、上記特徴の誤り検出制御システムによれば、不揮発性メモリを備える半導体装置において、データの信頼性や耐タンパー性の観点から有効な誤り検出処理と、処理速度の高速化の観点から有効な上書き処理を同時に備え、且つ、データ種別や記憶状態に応じて自動的に最適な処理を実行することが可能になる。
【００２８】
また、上記第２の特徴の誤り検出制御システムによれば、不揮発性メモリのデータ領域を誤り検出処理禁止データ領域と誤り検出処理許可データ領域の何れかに設定することで上書き処理の可否を制御するように構成したので、上書き処理の可否の設定に係る処理手順及び回路構成を複雑化することなく、簡単な構成で上記第２の特徴の誤り検出制御システムを実現できる。また、上記第２の特徴の誤り検出制御システムの書き込み処理の処理手順は、従来の書き込み処理の処理手順からの変更量を小さく抑えることができるので、上記第２の特徴の誤り検出制御システムの作成を容易にすることが可能になる。
【００２９】
上記第３の特徴の誤り検出制御システムによれば、誤り検出制御手段が、メモリ制御手段から出力される誤り検出制御信号に基づいて、読み出しデータのデータ種別を判定するように構成したので、データ種別の判定を簡単な構成で実現でき、簡単な構成で上記第３の特徴の誤り検出制御システムを実現できる。
【００３０】
更に、上記第４の特徴の誤り検出制御システムによれば、上書き処理の実行対象とはならない命令データについて誤り検出処理の実行を許可するように構成したので、不正手段等によるデータ改ざんや長期保持によるデータ劣化が秘密情報の漏洩やシステムの暴走に直結する可能性が高い命令データに対するデータの信頼性や耐タンパー性を確保でき、秘密情報の漏洩やシステムの暴走を効果的に防止できる。更に、上記第４の特徴の誤り検出制御システムによれば、上書き処理が望ましいプログラムカウンタについて誤り検出処理の実行を禁止するように構成したので、プログラムカウンタに対する処理速度の高速化を図ることができる。
【００３１】
上記第５の特徴の誤り検出制御システムによれば、不揮発性メモリ内にデータ領域夫々に対応するフラグ領域を設け、上書き処理時に、フラグ領域に誤り検出処理の禁止フラグを設定するように構成したので、主データ領域に記憶されたデータに対する誤り検出処理の可否の判定を容易にすることができ、簡単な構成で誤り検出制御手段における誤り検出処理の可否を判定することが可能になる。また、上記第５の特徴の誤り検出制御システムによれば、上書き処理時に、フラグ領域に誤り検出処理の禁止フラグを設定するので、上書き処理により、冗長データ領域に記憶された冗長データが主データ領域に記憶されたデータの誤り検出処理に用いることが適切ではなくなった場合に、誤り検出処理を禁止することができる。
【００３２】
上記第６の特徴の誤り検出制御システムによれば、不揮発性メモリとは別に、データ領域毎に誤り検出処理の実行の可否を記憶することが可能なレジスタを設け、上書き処理時に、上書き処理の対象となるデータ領域に対する誤り検出処理の実行禁止フラグを設定するように構成したので、主データ領域に記憶されたデータに対する誤り検出処理の可否の判定を容易にすることができ、簡単な構成で誤り検出制御手段における誤り検出処理の可否を判定することが可能になる。また、上記第６の特徴の誤り検出制御システムによれば、上書き処理時に、レジスタに誤り検出処理の禁止フラグを設定するので、上書き処理により、冗長データ領域に記憶された冗長データが主データ領域に記憶されたデータの誤り検出処理に用いることが適切ではなくなった場合に、誤り検出処理を禁止することができる。
【００３３】
上記第７の特徴の誤り検出制御システムによれば、誤り検出処理を実行しないデータに対し、読み出し処理を複数回実行し、読み出しデータを夫々比較処理して正誤を判定するように構成したので、冗長データによる誤り検出処理を実行しないデータについても、データの信頼性及び耐タンパー性を確保することが可能になる。
【００３４】
上記第８の特徴の誤り検出制御システムによれば、冗長データが、ハミングコード等の誤り訂正処理に用いることが可能なデータである場合に、誤り検出処理の禁止時に、誤り訂正処理を同時に禁止するように構成したので、誤り検出処理だけでなく誤り訂正処理が可能な冗長データを備える場合にも本発明に係る誤り検出制御システムを適用することが可能になる。
【００３５】
上記特徴のＩＣカードによれば、上記第１〜第８の何れかの特徴の誤り検出制御システムを備えるので、上記第１の特徴の誤り検出制御システムにおける作用効果を全て奏することができる。即ち、上記特徴のＩＣカードによれば、上書き処理を行わないまたは上書き処理を実施していない読み出しデータに対しては、データの信頼性や耐タンパー性の観点から有効な誤り検出処理を実行可能になり、上書き処理の実行が望ましいまたは上書き処理を実施した読み出しデータに対しては、処理速度の高速化の観点から有効な上書き処理を実行可能になり、データ種別や記憶状態に応じて自動的に最適な処理を実行することが可能になる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明に係る誤り検出制御システム（以下、適宜「本発明システム」と略称する）及びＩＣカードの実施形態を図面に基づいて説明する。
【００３７】
〈第１実施形態〉
本発明システムの第１実施形態について図１〜図６を基に説明する。尚、本実施形態では、本発明システムがＩＣカードに搭載されている場合を想定して説明する。
【００３８】
先ず、本実施形態の本発明システム及びＩＣカードの構成について図１〜図５を基に説明する。ここで、図１は、本発明システム１を搭載したＩＣカード１００の概略構成例を、図２は、本実施形態の本発明システム１の概略構成例を示している。
【００３９】
本実施形態の本発明システム１は、図１に示すように、ＩＣカード１００に搭載されており、ＩＣカード１００は、本発明システム１を構成するフラッシュメモリ１０、ＣＰＵ（中央処理装置）２０、誤り検出回路３０、冗長データ生成回路４０及び誤り検出制御回路５０に加え、ＩＣカード１００駆動用プログラムや、パスワード、電子証明情報等の秘密情報等を格納したＲＯＭ（読み出し専用メモリ）６０、各種データを一時的に格納するＲＡＭ（ランダムアクセスメモリ）７０、外部装置とのデータ通信のためのＩ／Ｏ（入出力インターフェース）８０を備えて構成されている。また、図１に示す用に、ＣＰＵ２０と、ＲＯＭ６０、ＲＡＭ７０及びＩ／Ｏ８０は、夫々、アドレス信号Ａ［ａ：０］を伝送するアドレスバス、データ信号Ｄ［ａ：０］を伝送するデータバスで接続されている。また、ＣＰＵ２０から、ＲＯＭ６０にメモリ制御信号Ｓｍ１が、ＲＡＭ７０にメモリ制御信号Ｓｍ２が、Ｉ／Ｏ８０に制御信号Ｓｍ３が入力されるように構成されている。
【００４０】
本発明システム１は、図２に示すように、１アドレス毎に所定のデータを記憶するための主データ領域とデータの誤り検出処理のための冗長データを記憶する冗長データ領域で構成されたデータ領域を複数アドレス分備える不揮発性メモリの一例としてのフラッシュメモリ１０と、フラッシュメモリ１０に対し、所定アドレス数のデータ領域からなるデータ領域群単位（ブロック単位）での一括消去処理、データ領域単位での読み出し処理、データ領域単位での書き込み処理、及び、書き込み処理後の主データ領域に対する主データ領域を構成するビット単位での上書き処理の制御を行うＣＰＵ２０（メモリ制御手段に相当）と、読み出し処理によって読み出された読み出しデータに対し、対応する冗長データに基づいて誤り検出処理を実行する誤り検出回路３０と、上書き処理の実行対象であるか否かで分類されるデータ種別に基づいて、誤り検出回路３０における読み出しデータに対する誤り検出処理の実行の可否を制御する誤り検出制御回路５０（誤り検出制御手段に相当）を備えている。本実施形態の本発明システム１は、更に、書き込み処理において書き込み対象となる書き込みデータについて、冗長データを生成する冗長データ生成回路４０を備えている。
【００４１】
尚、本実施形態では、例えば、命令コードや秘密情報等を、上書き処理の実行対象となり得ない誤り検出処理を行うデータ種別とし、プログラムカウンタ等の逐次変化するデータを、上書き処理の実行対象となり得る誤り検出処理を行わないデータ種別とする。また、本実施形態の冗長データは、誤り検出処理を実行可能に構成されており、ここでは、パリティ符号（例えば、奇数パリティ）による１ビットデータである場合を想定して説明する。
【００４２】
フラッシュメモリ１０は、本実施形態では、ＩＣカード１００の機能を実現するためのプログラムの実行において、命令データ（命令コード）やプログラムカウンタ等のデータを記憶する。フラッシュメモリ１０は、本実施形態では、データ領域の夫々が、誤り検出処理の実行が禁止されたデータを記憶する誤り検出処理禁止データ領域と、誤り検出処理の実行が許可されたデータを記憶する誤り検出処理許可データ領域の何れかに設定されている。
【００４３】
ここで、図３（ａ）は、本実施形態におけるフラッシュメモリ１０の一概略構成例を示すアドレスマップを、図３（ｂ）は、データ領域ＷＤの一構成例を示している。具体的には、図３（ａ）に示すように、フラッシュメモリ１０は、アドレス‘００００’〜‘ｚｚｚｚ’までのデータ領域ＷＤを備えている。アドレス‘００００’〜‘ｘｘｘｘ’は、命令コードのためのデータ領域ＷＤであり、上書き処理の実行対象となり得ないため、誤り検出処理許可データ領域に設定されている。アドレス‘ｘｘｘ（ｘ＋１）’〜‘ｙｙｙｙ’は、プログラムカウンタのためのデータ領域ＷＤであり、上書き処理の実行対象となり得るため、誤り検出処理禁止データ領域に設定されている。アドレス‘ｙｙｙ（ｙ＋１）’〜‘ｚｚｚｚ’は、命令の実行で用いられる画像データ等の演算用データのためのデータ領域ＷＤであり、上書き処理の実行対象ではないため、誤り検出処理許可データ領域に設定されている。各データ領域ＷＤは、図３（ｂ）に示すように、命令コードやプログラムカウンタ、演算用データ等のデータを格納する主データ領域ＷＭと、冗長データを記憶する冗長データ領域ＷＰを備えて構成されている。
【００４４】
ＣＰＵ２０は、本発明システム１が組み込まれたＩＣカード１００の各機能を実現するために、ＩＣカード１００内に設けられた各回路の制御を行う。また、本実施形態のＣＰＵ２０は、本発明システム１に係る機能として、後述する誤り検出制御回路５０に対し誤り検出処理の可否の設定で用いるデータの出力、及び、フラッシュメモリ１０に対する一括消去処理、読み出し処理、書き込み処理及び上書き処理の制御を行う。
【００４５】
ＣＰＵ２０は、本実施形態では、図２に示すように、後述する誤り検出制御回路５０に対し、誤り検出処理の可否の設定のためのデータとして、フラッシュメモリ１０に入力するアドレス信号Ａ［ａ：０］（ａはアドレス信号Ａの最上位ビットの値）と、チップイネーブル信号ＣＥ、書き込みイネーブル信号ＷＥ及び出力イネーブル信号ＯＥ等で構成されるメモリ制御信号Ｓｍを出力するように構成されている。尚、本実施形態では、誤り検出処理の可否の設定のためのデータとして、フラッシュメモリ１０を制御するアドレス信号Ａ［ａ：０］及びメモリ制御信号Ｓｍを利用するように構成したが、これに限るものではなく、他のデータを利用しても良いし、専用のデータを用いるように構成しても良い。
【００４６】
ＣＰＵ２０は、フラッシュメモリ１０に対する制御において、例えば、一括消去処理では、フラッシュメモリ１０内のコマンド用内部レジスタにブロック消去コマンドを書き込むことにより、ブロック単位での消去処理を行う。また、例えば、書き込み処理及び上書き処理では、チップイネーブル信号ＣＥ及び書き込みイネーブル信号ＷＥを活性状態にし、書き込み対象のデータ領域ＷＤのアドレスを示すアドレス信号Ａ［ａ：０］をフラッシュメモリ１０に出力し、書き込みデータのデータ信号Ｄｗ［ｄ：０］（ｄはデータ信号の最上位ビットの値）を後述する冗長データ生成回路４０に出力する。更に、例えば、読み出し処理では、チップイネーブル信号ＣＥ及び出力イネーブル信号ＯＥを活性状態にし、読み出し対象のデータ領域ＷＤのアドレスを示すアドレス信号Ａ［ａ：０］を出力し、誤り検出回路３０から読み出しデータのデータ信号Ｄｒ［ｄ：０］と誤り検出信号Ｓｅを受け付ける。尚、各信号は、フラッシュメモリ１０の仕様に応じたタイミングで出力する。
【００４７】
図４は、ＣＰＵ２０によるＩＣカード１００駆動用プログラムの実行において、フラッシュメモリ１０に対する一連の読み出し処理で読み出される読み出しデータの例を示している。ここでは、各データ領域ＷＤの主データ領域ＷＭのデータ長が８ｂｉｔであり、データ長１６ｂｉｔの命令コードが２つのデータ領域ＷＤを用いて格納されている場合を想定して説明する。同様に、プログラムカウンタのデータ長が１６ｂｉｔ、演算用データのデータ長が８ｂｉｔまたは１６ｂｉｔである場合を想定して説明する。
【００４８】
図４に示すように、ＣＰＵ２０は、先ず、命令コードが格納されているデータ領域ＷＤのアドレスを取得するために、フラッシュメモリ１０に対する読み出し処理を実行して、Ｄｒ１［ｄ：０］及びＤｒ２［ｄ：０］で構成されるプログラムカウンタを取得する。Ｄｒ１［ｄ：０］及びＤｒ２［ｄ：０］は、一方がプログラムカウンタの上位８ビット、他方が下位８ビットに対応している。
【００４９】
続いて、ＣＰＵ２０は、プログラムカウンタが示すアドレスのデータ領域ＷＤ及び次のアドレスのデータ領域ＷＤから、Ｄｒ３［ｄ：０］及びＤｒ４［ｄ：０］で構成される命令コードを読み出す。Ｄｒ３［ｄ：０］及びＤｒ４［ｄ：０］は、一方が命令コードの上位８ビット、他方が下位８ビットに対応している。命令コードを読み出した後、ＣＰＵ２０は、プログラムカウンタが示すアドレスの値を増加する（ここでは、ＣＰＵ２０がデータ長１６ｂｉｔの命令コードを実行する場合を想定しているため、アドレスの値を２増加させる）ように、フラッシュメモリ１０のプログラムカウンタのデータ領域ＷＤを上書き処理して更新する。
【００５０】
引き続き、ＣＰＵ２０は、読み出した命令コードを解読し、命令の実行で用いられる演算用データを読み出すための読み出し処理を実行し、Ｄｒ５［ｄ：０］及びＤｒ６［ｄ：０］で構成される演算用データを取得する。Ｄｒ５［ｄ：０］及びＤｒ６［ｄ：０］は、一方が演算用データの上位８ビット、他方が下位８ビットに対応している。ＣＰＵ２０は、Ｄｒ５［ｄ：０］及びＤｒ６［ｄ：０］で構成される演算用データを用いて命令を実行し、その結果をフラッシュメモリ１０の所定のデータ領域ＷＤに書き込む。同様にして、ＣＰＵ２０は、順次、プログラム実行を制御する。
【００５１】
尚、本実施形態では、本発明システム１は、図４に示す一連の読み出し処理で読み出される読み出しデータの内、プログラムカウンタの値であるＤｒ１［ｄ：０］及びＤｒ２［ｄ：０］については、誤り検出処理の実行を禁止し、命令コードであるＤｒ３［ｄ：０］及びＤｒ４［ｄ：０］、演算用データであるＤｒ５［ｄ：０］及びＤｒ６［ｄ：０］については、誤り検出処理の実行を許可するように構成されている。
【００５２】
ここで、図５は、フラッシュメモリ１０に記憶されたプログラムカウンタの値の変化の一例を示している。尚、図５では、説明のために、各データ領域ＷＤの主データ領域ＷＭのデータ長が８ｂｉｔ、プログラムカウンタのデータ長が１６ｂｉｔの場合において、下位８ビットに対応するデータ領域ＷＤについて示している。
【００５３】
本実施形態では、図５（ａ）に示すように、プログラムカウンタ用のデータ領域ＷＤの各ビットの値は、消去処理後、全て‘１’となる。プログラム実行により、図５に示すプログラムカウンタの更新要求が発生すると、ＣＰＵ２０は、プログラムカウンタの主データ領域ＷＭに書き込みデータ‘１１１１  １１１０’を書き込む書き込み処理を実行する。更に、書き込み処理後の主データ領域ＷＭに記憶されたデータ‘１１１１  １１１０’に対応する冗長データ‘０’（奇数パリティ）が後述する冗長データ生成回路４０によって生成され、プログラムカウンタのデータ領域ＷＤにおける冗長データ領域ＷＰに冗長データ‘０’が書き込まれる。
【００５４】
プログラム実行により、更に、プログラムカウンタの更新要求が発生すると、ＣＰＵ２０は、プログラムカウンタの主データ領域ＷＭの内の１ビットの値を‘１’から‘０’にする上書き処理を実行する。詳細には、図５（ｂ）に示す主データ領域ＷＭのデータ‘１１１１  １１１０’に、データ‘１１１１  １１０１’またはデータ‘１１１１  １１００’を上書きする。この上書き処理により、プログラムカウンタの主データ領域ＷＭは、図５（ｃ）に示すように、‘１１１１  １１００’となる。尚、図５（ｃ）に示す主データ領域ＷＭのデータ‘１１１１  １１００’に対応する冗長データは‘１’であるが、フラッシュメモリ１０の原理上、ビット単位での‘０’から‘１’への書き込み処理は実行できないため、上書き処理後の冗長データは‘０’となる。これは、上書き処理後のプログラムカウンタ及びその冗長データについては、正しく誤り検出処理が実行できないことを意味している。
【００５５】
同様にして、更に、プログラムカウンタの更新要求が発生すると、ＣＰＵ２０は、プログラムカウンタの主データ領域ＷＭの内の１ビットの値を‘１’から‘０’にする上書き処理を実行する。詳細には、図５（ｃ）に示す主データ領域ＷＭのデータ‘１１１１  １１００’に、データ‘１１１１  １０１１’、データ‘１１１１  １００１’またはデータ‘１１１１  １０００’を上書きする。この上書き処理により、プログラムカウンタの主データ領域ＷＭは、図５（ｄ）に示すように、‘１１１１  １０００’となる。
【００５６】
更に、本実施形態のＣＰＵ２０は、誤り検出制御回路５０における誤り検出処理の実行が禁止された誤り検出禁止データに対する正誤判定のために、誤り検出禁止データに対する読み出し処理の実行後、更に、所定回数の誤り検出禁止データに対する読み出し処理を実行するように構成されている。
【００５７】
誤り検出回路３０は、ＣＰＵ２０による読み出し処理時、後述する誤り検出制御回路５０によって読み出しデータに対する誤り検出処理が許可されている場合に、読み出しデータに対し、対応する冗長データに基づいて誤り検出処理を実行する。
【００５８】
具体的には、誤り検出回路３０は、本実施形態では、冗長データとして、パリティチェックのための１ビットデータ（奇数パリティ）を想定しているので、フラッシュメモリ１０から出力されるデータ信号Ｄｒｐ［ｄ＋ｐ：０］（ｐは冗長データのビット数、ここでは１）について、主データ領域ＷＭ及び冗長データ領域ＷＰを含むデータ領域ＷＤ全体で‘１’の数が奇数である場合、即ち、データ信号Ｄｒｐ［ｄ＋１：０］に含まれる‘１’の数が奇数である場合に、読み出しデータが正しいと判定する。
【００５９】
更に、誤り検出回路３０は、読み出しデータに対する誤り検出処理が許可されている場合は、読み出しデータに対する誤り検出処理の実行後、読み出しデータに対する誤り検出処理が禁止されている場合は、読み出しデータが読み出された後、読み出しデータＤｒｐ［ｄ＋ｐ：０］の内の主データ領域ＷＭのデータ信号Ｄｒ［ｄ：０］と、誤り検出信号Ｓｅを出力する。尚、ここでの誤り検出信号Ｓｅは、誤り検出処理において読み出しデータが正しくないと判定した場合に‘１’を設定し、その他の場合は‘０’を設定する。
【００６０】
誤り検出制御回路５０は、ＣＰＵ２０による読み出し処理時に、読み出し処理の対象となるデータ領域ＷＤである読み出し対象データ領域が誤り検出処理禁止データ領域である場合に、誤り検出回路３０における誤り検出処理の実行を禁止し、読み出し対象データ領域が誤り検出処理許可データ領域である場合に、誤り検出回路３０における誤り検出処理の実行を許可する。更に、誤り検出制御回路５０は、誤り検出処理の可否を示す可否設定信号Ｓａを誤り検出回路３０に出力する。
【００６１】
本実施形態では、誤り検出制御回路５０は、具体的には、ＣＰＵ２０から出力されるアドレス信号Ａ［ａ：０］の値と図３に示すアドレスマップに基づいて、読み出し対象データ領域が誤り検出処理禁止データ領域と誤り検出処理許可データ領域の何れであるかを判定する。アドレス信号Ａ［ａ：０］が、アドレス‘００００’〜‘ｘｘｘｘ’または‘ｙｙｙ（ｙ＋１）’〜‘ｚｚｚｚ’を示す場合は、誤り検出処理許可データ領域と判定し、アドレス‘ｘｘｘ（ｘ＋１）’〜‘ｙｙｙｙ’を示す場合は、誤り検出処理禁止データ領域と判定する。読み出し対象データ領域が誤り検出処理許可データ領域の場合は、可否設定信号Ｓａの値を‘０’に設定し、誤り検出処理禁止データ領域の場合は、可否設定信号Ｓａの値を‘１’に設定する。
【００６２】
更に、本実施形態の誤り検出制御回路５０は、誤り検出処理の実行が禁止された誤り検出禁止データに対する正誤判定を行う。具体的には、ＣＰＵ２０により読み出された所定数の誤り検出禁止データを夫々比較処理して、読み出しデータの正誤を判定する。
【００６３】
冗長データ生成回路４０は、ＣＰＵ２０による書き込み処理時に、ＣＰＵ２０から書き込みデータＤｗ［ｄ：０］を受け付け、書き込みデータＤｗ［ｄ：０］に基づいて冗長データを生成し、書き込みデータＤｗ［ｄ：０］に冗長データを付加したデータＤｗｐ［ｄ＋ｐ：０］を、フラッシュメモリ１０に対して出力する。具体的には、本実施形態では、冗長データは、パリティチェックのための１ビットデータ（奇数パリティ）であり、データ領域ＷＤ全体で‘１’の数が奇数となるように値が設定される。
【００６４】
次に、本実施形態の本発明システム１の処理動作の内、誤り検出処理の制御に係る処理動作の概要について、図６を基に簡単に説明する。
【００６５】
ＣＰＵ２０によるプログラムの実行において、フラッシュメモリ１０に対する読み出し要求が発生すると（ステップ＃１０１）、誤り検出制御回路５０は、誤り検出処理の可否を設定する（ステップ＃１０２）。具体的には、誤り検出制御回路５０は、チップイネーブル信号ＣＥ及び出力イネーブル信号ＯＥが共に活性状態となったときに読み出し処理の実行が開始されたと判断し、このときにＣＰＵ２０から出力されるアドレス信号Ａ［ａ：０］の値と図３に示すアドレスマップに基づいて、読み出し対象データ領域が誤り検出処理禁止データ領域と誤り検出処理許可データ領域の何れであるかを判定し、誤り検出処理の可否を決定し、誤り検出回路３０に対し可否設定信号Ｓａを出力する。
【００６６】
誤り検出回路３０は、誤り検出制御回路５０から出力される可否設定信号Ｓａを受け付け（ステップ＃１０２）、フラッシュメモリ１０から読み出されるデータＤｒｐ［ｄ＋ｐ：０］を受け付けると（ステップ＃１０３）、可否設定信号Ｓａに基づいて誤り検出処理が許可されているか禁止されているかを判断する（ステップ＃１０４）。
【００６７】
ステップ＃１０４において、本実施形態では、誤り検出回路３０は、可否設定信号Ｓａが‘０’の場合に誤り検出処理が許可されていると判断し（ステップ＃１０４で“許可”分岐）、データＤｒｐ［ｄ＋ｐ：０］に対する誤り検出処理を実行する（ステップ＃１０５）。ここでの誤り検出処理は、パリティチェックであり、データＤｒｐ［ｄ＋ｐ：０］全体で、値が‘１’のビット数が奇数の場合に、データＤｒｐ［ｄ＋ｐ：０］は正しいと判断する。データＤｒｐ［ｄ＋ｐ：０］が正しいと判断したときは、誤り検出信号Ｓｅの値を‘０’に設定し、正しくないと判定したときは、誤り検出信号Ｓｅの値を‘０’に設定する。誤り検出回路３０は、データＤｒｐ［ｄ＋ｐ：０］から冗長データを除いたデータＤｒ［ｄ：０］と共に誤り検出信号ＳｅをＣＰＵ２０に対して出力する（ステップ＃１０６）。
【００６８】
ステップ＃１０４において、誤り検出回路３０は、可否設定信号Ｓａが‘１’である場合に誤り検出処理が禁止されていると判断し（ステップ＃１０４で“禁止”分岐）、誤り検出処理は実施せずに、データＤｒｐ［ｄ＋ｐ：０］から冗長データを除いたデータＤｒ［ｄ：０］をＣＰＵ２０に対して出力する（ステップ＃１０７）。尚、このときの誤り検出信号Ｓｅの値は‘０’に設定する。更にこのとき、誤り検出制御回路５０は、データＤｒｐ［ｄ＋ｐ：０］に対する正誤判定を実行する（ステップ＃１０８）。本実施形態では、ＣＰＵ２０は、誤り検出禁止データに対する正誤判定のために、再度、同じ誤り検出禁止データをフラッシュメモリ１０から読み出す読み出し処理を実行する（ステップ＃１０９）。誤り検出制御回路５０は、２回の読み出し処理による２つの誤り検出禁止データを比較し、２つのデータが等しい場合に誤り検出禁止データＤｒｐ［ｄ＋ｐ：０］が正しいと判定し、２つのデータが異なる場合は、誤り検出禁止データＤｒｐ［ｄ＋ｐ：０］が正しくないと判定する（ステップ＃１１０）。更に、誤り検出制御回路５０は、誤り検出禁止データに対する正誤判定の結果を判定結果通知信号ＳｂによりＣＰＵ２０に対して通知する（ステップ＃１１１）。
【００６９】
ＣＰＵ２０は、誤り検出回路３０において誤り検出処理により読み出しデータＤｒ［ｄ：０］が正しくないと判断された場合、または、誤り検出制御回路５０において正誤判定により誤り検出禁止データＤｒ［ｄ：０］が正しくないと判定された場合、データＤｒ［ｄ：０］を破棄する。更に、本実施形態では、ＣＰＵ２０は、データＤｒ［ｄ：０］が一定回数以上続けて正しくないと判断された場合等、不正操作等が行われたと判断される場合には、ＩＣカード１００のシステムリセットを行う。
【００７０】
尚、本実施形態では、誤り検出処理が禁止されている誤り検出禁止データに対し、ステップ＃１０８の正誤判定を実施したが、ステップ＃１０８の正誤判定は任意処理である。従って、例えば、誤り検出禁止データの重要度が低い場合等には、正誤判定を実行せずに、データＤｒｐ［ｄ＋ｐ：０］から冗長データを除いたデータＤｒ［ｄ：０］をＣＰＵ２０に対して出力するように構成しても良い。
【００７１】
〈第２実施形態〉
本発明システム１の第２実施形態について図７を基に説明する。尚、本実施形態では、上記第１実施形態とは、読み出しデータのデータ種別の判定方法が異なる場合について説明する。詳細には、上記第１実施形態では、フラッシュメモリ１０のアドレスマップに基づいてデータ種別を判定したが、本実施形態では、ＣＰＵ２０からの誤り検出制御信号Ｓｃに基づいてデータ種別を判定する。
【００７２】
本実施形態の本発明システム１の構成について、図７を基に説明する。本実施形態の本発明システム１は図７に示すように、フラッシュメモリ１０、ＣＰＵ２０、誤り検出回路３０、冗長データ生成回路４０及び誤り検出制御回路５０を備えて構成されており、フラッシュメモリ１０、誤り検出回路３０及び冗長データ生成回路４０の構成は、上記第１実施形態と同じである。
【００７３】
本実施形態のＣＰＵ２０は、図７に示すように、読み出し処理時に、誤り検出制御回路５０に対し、当該読み出し処理における読み出しデータのデータ種別に応じた誤り検出制御信号Ｓｃを出力するように構成されている。ここでの誤り検出制御信号Ｓｃは、命令フェッチのためのタイミングを示す命令フェッチ信号を用いて生成される。
【００７４】
本実施形態の誤り検出制御回路５０は、読み出し処理時に、誤り検出制御信号Ｓｃに基づいて、読み出しデータのデータ種別が上書き処理を実行され得るデータ種別であるか否かを判定し、上書き処理を実行され得ないデータ種別である場合に、誤り検出回路３０における誤り検出処理を許可し、上書き処理を実行され得るデータ種別である場合に、誤り検出回路３０における誤り検出処理を禁止する。具体的には、本実施形態では、誤り検出制御信号Ｓｃ（命令フェッチ信号）が活性状態の場合は、上書き処理の実行対象となり得ない命令コードの読み出しであると判定して、誤り検出回路３０における誤り検出処理を許可する。また、誤り検出制御信号Ｓｃが非活性状態の場合は、上書き処理の実行対象となり得る誤り検出禁止データであると判定して、誤り検出回路３０における誤り検出処理を禁止する。
【００７５】
尚、本実施形態では、誤り検出制御信号Ｓｃが、命令フェッチ信号である場合を想定したが、データリード信号であっても良い。この場合には、誤り検出制御回路５０は、データリード信号が活性状態の場合に、誤り検出回路３０における誤り検出処理を禁止し、データリード信号が非活性状態の場合に、誤り検出回路３０における誤り検出処理を許可する。また、誤り検出制御信号Ｓｃは、命令フェッチ信号やデータリード信号を組み合わせたものであっても良い。この場合、誤り検出制御回路５０は、誤り検出制御信号Ｓｃが、読み出しデータが命令コードであることを示す信号である場合に、誤り検出処理の実行を許可し、誤り検出制御信号Ｓｃが、読み出しデータがプログラムカウンタ値であることを示す信号である場合に、誤り検出処理の実行を禁止するように構成されていれば良い。
【００７６】
〈第３実施形態〉
本発明システム１の第３実施形態について図８を基に説明する。尚、本実施形態では、上記第１及び第２実施形態とは、誤り検出処理の可否の設定方法が異なる場合について説明する。詳細には、上記第１及び第２実施形態では、読み出しデータのデータ種別に基づいて誤り検出処理の実行の可否を設定したが、本実施形態では、上書き処理を実行したか否かを示す記憶状態に基づいて誤り検出処理の実行の可否を設定する。
【００７７】
本実施形態の本発明システム１の構成について、図８を基に説明する。本実施形態の本発明システム１は図８に示すように、フラッシュメモリ１０、ＣＰＵ２０、誤り検出回路３０、冗長データ生成回路４０及び誤り検出制御回路５０を備えて構成されており、誤り検出回路３０及び冗長データ生成回路４０の構成は、上記第１実施形態と同じである。
【００７８】
フラッシュメモリ１０は、本実施形態では、図８に示すように、データ領域ＷＤ毎に、誤り検出処理の実行の可否を記憶するフラグ領域を備えている。フラッシュメモリ１０は、ブロック単位での一括消去処理の実行時に、自動的に対応するフラグ領域を初期化して値を‘１’にする。即ち、フラグ領域が初期状態‘１’の場合、上書き処理が実行されていないと判定でき、フラグ領域が‘０’の場合、上書き処理が実行されたと判定できる。更に、本実施形態のフラッシュメモリ１０は、読み出し処理の実行時に、読み出し処理の対象となるデータ領域ＷＤに対応するフラグ領域の値を示すフラグ信号Ｆを誤り検出制御信号Ｓｃとして誤り検出制御回路５０に出力するように構成されている。
【００７９】
本実施形態の誤り検出制御回路５０は、上書き処理を実行したか否かを示す記憶状態に基づいて、誤り検出回路３０における読み出しデータに対する誤り検出処理の実行の可否を制御するように構成されている。具体的には、誤り検出制御回路５０は、読み出し処理時に、フラグ信号Ｆが‘１’の場合は、上書き処理が実行されていないとして、誤り検出回路３０における誤り検出処理の実行を許可し、‘０’の場合は、上書き処理が実行されているとして、誤り検出回路３０における誤り検出処理の実行を禁止する。
【００８０】
誤り検出制御回路５０は、ＣＰＵ２０による上書き処理時に、上書き処理の対象となるデータ領域ＷＤに対応するフラグ領域に、誤り検出処理の実行禁止フラグを設定する。具体的には、誤り検出制御回路５０は、上書き処理時に、アドレス信号Ａ［ａ：０］が示すデータ領域ＷＤに対応するフラグ領域に‘０’を書き込む。
【００８１】
〈第４実施形態〉
本発明システム１の第４実施形態について図９を基に説明する。尚、本実施形態では、上記第３実施形態とは、読み出しデータの記憶状態の判定方法が異なる場合について説明する。詳細には、上記第３実施形態では、フラッシュメモリ１０内のフラグ領域を利用して記憶状態を判定したが、本実施形態では、本発明システム１にフラッシュメモリ１０とは別に設けられた制御レジスタ９０を利用して記憶状態の判定を行う。
【００８２】
本実施形態の本発明システム１の構成について、図９を基に説明する。本実施形態の本発明システム１は図７に示すように、フラッシュメモリ１０、ＣＰＵ２０、誤り検出回路３０、冗長データ生成回路４０及び誤り検出制御回路５０を備えて構成されており、フラッシュメモリ１０、誤り検出回路３０及び冗長データ生成回路４０の構成は、上記第１実施形態と同じである。
【００８３】
本発明システム１は、データ領域ＷＤ毎に誤り検出処理の実行の可否を記憶可能な制御レジスタ９０を備えている。本実施形態では、制御レジスタ９０は、データ領域ＷＤ毎の実行禁止フラグ設定領域を備えており、上書き処理が実行されていない場合（初期状態）は、実行禁止フラグ設定領域の値が‘１’に設定され、上書き処理が実行された場合は、実行禁止フラグ設定領域の値が‘０’に設定される。
【００８４】
本実施形態の誤り検出制御回路５０は、上書き処理を実行したか否かを示す記憶状態に基づいて、誤り検出回路３０における読み出しデータに対する誤り検出処理の実行の可否を制御するように構成されている。具体的には、本実施形態の誤り検出制御回路５０は、読み出し処理時に、制御レジスタ９０を参照し、読み出し処理の対象となるデータ領域ＷＤに実行禁止フラグが設定されていない場合、即ち、対応する実行禁止フラグ設定領域の値が‘１’の場合に誤り検出回路３０における誤り検出処理の実行を許可する。また、読み出し処理の対象となるデータ領域ＷＤに実行禁止フラグが設定されている場合、即ち、対応する実行禁止フラグ設定領域の値が‘０’の場合に誤り検出回路３０における誤り検出処理の実行を禁止する。
【００８５】
更に、本実施形態の誤り検出制御回路５０は、ＣＰＵ２０による上書き処理時に、制御レジスタ９０に、上書き処理の対象となるデータ領域ＷＤに対する誤り検出処理の実行禁止フラグを設定する。具体的には、誤り検出制御回路５０は、制御レジスタ９０の対応する実行禁止フラグ設定領域に‘０’を書き込む。
【００８６】
〈別実施形態〉
〈１〉上記第１〜第４実施形態では、フラッシュメモリ１０を備える場合について説明したが、これに限るものではない。例えば、原理上、ビット単位で書き込み状態から消去状態にすることができない不揮発性メモリを備える場合において、本発明システム１は有用である。ＣＰＵ２０による一括消去処理、読み出し処理、書き込み処理及び上書き処理は、不揮発性メモリの仕様に応じて、各信号を制御して行う。
【００８７】
〈２〉上記第１〜第４実施形態では、冗長データが、誤り検出処理を実行可能なパリティチェックのための１ビットデータである場合について説明したが、これに限るものではない。例えば、チェックサム等の誤り検出処理を実行可能な他の誤り検出符号であっても良いし、ハミングコード等の誤り検出処理と共に誤り訂正処理を実行可能な誤り検出訂正符号であっても良い。
【００８８】
ここで、図１０は、誤り検出回路３０において誤り検出処理と共に誤り訂正処理を実行可能な場合の本発明システム１の概略部分構成を示している。この場合には、誤り検出制御回路５０は、誤り検出処理の実行を禁止する場合に、誤り訂正処理を禁止する。誤り検出回路３０は、誤り検出制御回路５０によって誤り検出処理及び誤り訂正処理が許可されている場合に、読み出しデータに対し、対応する冗長データに基づいて誤り検出処理及び誤り訂正処理を実行する。
【００８９】
〈３〉上記第１〜第４実施形態では、誤り検出処理が禁止されている誤り検出禁止データに対する正誤判定として、誤り検出禁止データに対する再度の読み出し処理を実行して、２つの誤り検出禁止データを比較処理する構成としたが、これに限るものではない。例えば、２つの誤り検出禁止データが異なる場合に、任意の回数、誤り検出禁止データを読み出して比較処理するように構成しても良い。また、複数回の読み出し処理において一致しないデータの数が一定の判定比率を超えた場合、若しくは、一致するデータの数が一定の判定比率以下の場合に誤り検出禁止データが正しくないと判定するように構成しても良い。読み出し処理の回数や、データの判定比率は、誤り検出禁止データの重要度に応じて設定する。
【００９０】
また、上記第１〜第４実施形態では、誤り検出禁止データに対する正誤判定として、複数回の読み出し処理による比較処理を実行したが、その他の方法を用いても良いし、誤り検出禁止データの重要度に応じて複数の方法を組み合わせて用いても良い。更に、誤り検出禁止データ以外の読み出しデータに対しても、重要度が大きい場合には、複数回の読み出し処理による比較処理を実行するように構成しても良い。
【図面の簡単な説明】
【００９１】
【図１】本発明に係る誤り検出制御システムを搭載したＩＣカードの部分概略構成を示す概略ブロック図
【図２】本発明に係る誤り検出制御システムの第１実施形態における部分概略構成を示す概略ブロック図
【図３】本発明に係る誤り検出制御システムの第１実施形態における不揮発性メモリの記憶領域の構成を示す概念図
【図４】本発明に係る誤り検出制御システムのプログラム実行における読み出しデータの例を示す概念図
【図５】本発明に係る誤り検出制御システムのプログラムカウンタの値の一遷移例を示す概略概念図
【図６】本発明に係る誤り検出制御システムの第１実施形態における処理手順を示すフローチャート
【図７】本発明に係る誤り検出制御システムの第２実施形態における部分概略構成を示す概略ブロック図
【図８】本発明に係る誤り検出制御システムの第３実施形態における部分概略構成を示す概略ブロック図
【図９】本発明に係る誤り検出制御システムの第４実施形態における部分概略構成を示す概略ブロック図
【図１０】本発明に係る誤り検出制御システムの別実施形態における部分概略構成を示す概略ブロック図
【図１１】従来技術に係る誤り検出制御システムにおけるデータ領域の値の遷移例を示す説明図
【符号の説明】
【００９２】
１      本発明に係る誤り検出制御システム
１０    フラッシュメモリ（不揮発性メモリ）
２０    ＣＰＵ（メモリ制御手段）
３０    誤り検出回路（誤り検出手段）
４０    冗長データ生成回路
５０    誤り検出制御回路（誤り検出制御手段）
６０    ＲＯＭ
７０    ＲＡＭ
８０    Ｉ／Ｏ
９０    制御レジスタ
１００  本発明に係るＩＣカード
Ｓａ    可否設定信号
Ｓｂ    判定結果通知信号
Ｓｃ    誤り検出制御信号
Ｆ      フラグ信号
Ｓｍ    メモリ制御信号
Ｓｍ１  メモリ制御信号
Ｓｍ２  メモリ制御信号
Ｓｍ    制御信号
Ｓｍｐ  メモリ制御信号
Ｓｅ    誤り検出信号
ＷＦ    領域
ＷＤ    データ領域
ＷＭ    主データ領域
ＷＰ    冗長データ領域
ＷＳ    ステータス領域
【図１】
2008257476.tif 000003
【図２】
2008257476.tif 000004
【図３】
2008257476.tif 000005
【図４】
2008257476.tif 000006
【図５】
2008257476.tif 000007
【図６】
2008257476.tif 000008
【図７】
2008257476.tif 000009
【図８】
2008257476.tif 000010
【図９】
2008257476.tif 000011
【図１０】
2008257476.tif 000012
【図１１】
2008257476.tif 000013