(57)【要約】【課題】回路規模の増大を抑制しつつ、不揮発性メモリより転送されたデータを保持するレジスタ群のデータ異常を検出できる半導体装置を提供する。【解決手段】複数のレジスタ群４には、データ転送回路３によって、不揮発性メモリ２に記憶されているデータが転送されて格納される。そして、データ監視回路６は、レジスタ群４に格納されているデータのうち、少なくとも何れか１ビットのデータ値が転送された直後から変化したか否かを監視し、変化があれば異常検出信号を出力する。【選択図】図１
2014215618.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ（２）と、
この不揮発性メモリに記憶されているデータが転送されて格納される複数のレジスタからなるレジスタ群（４）と、
不揮発性メモリから前記レジスタ群へのデータ転送を行うデータ転送回路（３，２２）と、
前記レジスタ群に格納されているデータのうち、少なくとも何れか１ビットのデータ値が転送された直後から変化したか否かを監視し、変化があれば異常検出信号を出力するデータ監視回路（６，３２，６１）とを備えたことを特徴とする半導体装置。
【請求項２】
前記データ監視回路（６）は、前記データの監視を、パリティを用いて行うように構成されていることを特徴とする請求項１記載の半導体装置。
【請求項３】
前記データ監視回路は、前記レジスタ群に格納されている監視範囲対象とするデータについて、排他的論理和をとるＥＸＯＲゲート（７〜１０）を複数段用いて、最終的に１つのＥＸＯＲゲート（最終ゲートと称す；９）に信号をまとめるように構成され、
入力端子の一方が前記最終ゲートの出力端子に直接接続され、入力端子の他方が前記最終ゲートの出力端子に遅延回路（１１）を介して接続されることで前記異常検出信号を出力する信号出力用ゲート（１０）を備えることを特徴とする請求項２記載の半導体装置。
【請求項４】
前記データ転送回路は、前記異常検出信号が出力されると、当該異常が検知されたレジスタのデータを、前記不揮発性メモリから再転送することを特徴とする請求項１記載の半導体装置。
【請求項５】
前記データ転送回路は、前記異常検出信号が出力されると、当該異常が検知されたレジスタのデータを、前記不揮発性メモリから再転送することを特徴とする請求項２又は３記載の半導体装置。
【請求項６】
前記データ転送回路が、前記不揮発性メモリからデータを転送した際に生成されるパリティを、前記転送の複数回分について保持するパリティデータ保持回路（６２，６３）を備え、
前記データ監視回路（６１）は、前記パリティデータ保持回路により保持されている複数回分のパリティデータの値の何れか１つに変化が生じると、前記異常検出信号を出力することを特徴とする請求項５記載の半導体装置。
【請求項７】
前記複数のレジスタ群に対して、前記データ監視回路を１つだけ備え、
前記複数のレジスタ群に格納されているデータを切り換えて、前記データ監視回路に出力するマルチプレクサ（３２）を備え、
前記データ監視回路は、前記マルチプレクサの切り換え制御を行うことでデータの監視を行うことを特徴とする請求項１から６の何れか一項に記載の半導体装置。
【請求項８】
前記データ監視回路は、前記複数のレジスタ群に格納されているデータの重要度に応じて、前記マルチプレクサを介して監視する各データの監視頻度に差を設けることを特徴とする請求項７項に記載の半導体装置。
【請求項９】
不揮発性メモリ（２）と、
この不揮発性メモリに記憶されているデータが転送されて格納される複数のレジスタからなるレジスタ群（４４，５２，５４，５６）と、
不揮発性メモリから前記レジスタ群へのデータ転送を行うＣＰＵ（４２）とを備え、
前記ＣＰＵは、前記レジスタ群へのデータ転送を最初に行った際に、当該データについて誤り検出を行うための演算（誤り検出演算と称す）を行うと、その演算結果データを記憶手段（４ＰＡ，４ＰＢ，４ＰＰ）に記憶させ、
以降に前記レジスタ群からデータを読み出すと、当該データについて前記誤り検出演算を行い、その演算結果データが記憶手段に記憶させた演算結果データと異なれば、異常を検出することを特徴とする半導体装置。
【請求項１０】
前記ＣＰＵは、前記誤り検出演算の演算結果データを、複数箇所（４ＰＡ，４ＰＢ）に記憶させ、
前記複数箇所に記憶させた演算結果データを照合し、両者が一致すれば、前記演算結果データを、対応するレジスタ群から読み出したデータの誤り検出演算結果と照合することを特徴とする請求項９記載の半導体装置。
【請求項１１】
前記ＣＰＵは、前記レジスタ群へのデータ転送を最初に行った際に、当該データについて前記誤り検出演算を行うと、
その演算結果データについても前記誤り検出演算を行い、その演算結果データを前記記憶手段（４ＰＰ）に記憶させ、
以降に前記レジスタ群からデータを読み出した際に行った誤り検出演算の演算結果データについても、前記記憶手段に記憶させた演算結果データと比較して異常を検出することを特徴とする請求項９又は１０記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに記憶されているデータの誤りを検出する機能を有する半導体装置に関する。
【背景技術】
【０００２】
不揮発性メモリに記憶されているデータを、例えばクロック信号や動作電圧を生成するための内部回路について、調整値として用いるＩＣがある。このようなＩＣでは、電源が投入された際に不揮発性メモリよりデータを読み出して、レジスタに格納することで内部回路の調整に使用する。しかしながら、レジスタに格納されたデータについては、ノイズや宇宙線等によるソフトエラーにより変化することがある。内部回路の調整値が変化すると、ＩＣの誤動作に繋がるため、例えば所定時間毎に不揮発性メモリからデータを読み出してレジスタに再度格納するリフレッシュ動作を行うなどしている。
【０００３】
ところが、レジスタに格納されているデータが実際に変化したか否かに関わらず、周期的リフレッシュ動作を行うと、余分な処理負荷や消費電力が発生することになる。また、不揮発性メモリからの読み出しを繰り返すことで、リードディスターブの発生が問題となる。
【０００４】
上記のようなデータの変化に対応するため、例えば特許文献１には、不揮発性メモリより読み出したデータを誤り訂正符号に符号化し、符号化したデータをラッチに格納しておき、復号化回路が誤り訂正符号を復号してデータの誤りを検出した場合に、不揮発性メモリよりデータを再ロードする技術が開示されている。また、特許文献２には、同じデータを３つのラッチに並行して格納し、それらの多数決により誤りを検出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３８９８６８２号公報
【特許文献２】特開２０１０−１３４９９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１，２に開示されている技術では、実際にデータが変化する確率はそれ程高くないにもかかわらず、誤り訂正符号を格納するラッチや、同一のデータを並行して保持するラッチ等を設けており、回路規模が大きくなるという問題がある。
【０００７】
本発明は上記事情に鑑みてなされたものであり、その目的は、回路規模の増大を抑制しつつ、不揮発性メモリより転送されたデータを保持するレジスタ群のデータ異常を検出できる半導体装置を提供することにある。
【課題を解決するための手段】
【０００８】
請求項１記載の半導体装置によれば、レジスタ群には、データ転送回路によって、不揮発性メモリに記憶されているデータが転送されて格納される。そして、データ監視回路は、レジスタ群に格納されているデータのうち、少なくとも何れか１ビットのデータ値が転送された直後から変化したか否かを監視し、変化があれば異常検出信号を出力する。したがって、極めて簡単な異常検出原理に基いた簡単な構成の回路により、レジスタ群に格納されているデータを常時監視してデータの異常を検出できる。
【０００９】
請求項２記載の半導体装置によれば、データ監視回路は、パリティを用いてデータの監視を行う。すなわち、パリティを用いれば複数のデータの１ビットが変化したことを検出できるので、データ監視回路の構成が極めて簡単になる。
【００１０】
請求項３記載の半導体装置によれば、データ監視回路は、レジスタ群に格納されている監視範囲対象とするデータについて、排他的論理和をとるＥＸＯＲゲートを複数段用いて、最終的に１つのＥＸＯＲゲート（最終ゲート）に信号をまとめる。そして、信号出力用ゲートの入力端子の一方を最終ゲートの出力端子に直接接続し、入力端子の他方を最終ゲートの出力端子に遅延回路を介して接続する。
【００１１】
ここで、信号出力用ゲートを例えばＥＸＯＲゲートとすると、監視範囲対象とするデータの何れか１ビットの値が変化すれば、最終ゲートの出力信号のレベルが変化する。そして、遅延回路を介して出力される信号のレベルは、遅延時間が経過した後に変化するので、両者のレベル変化の時間差に相当する期間だけ、信号出力用ゲートの出力信号はハイレベルを示す。したがって、パリティにより何れか１ビットのデータ値が変化したことを検出できる。
【００１２】
請求項９記載の半導体装置によれば、ＣＰＵは、不揮発性メモリからレジスタ群へのデータ転送を最初に行った際に、当該データについて誤り検出を行うための演算を行うと、その演算結果データを記憶手段に記憶させる。そして、以降にレジスタ群からデータを読み出すと、当該データについて誤り検出演算を行い、その演算結果データが記憶手段に記憶させた演算結果データと異なれば異常を検出する。すなわち、ＣＰＵが誤り訂正回路としての動作をソフトウェアにより実行するので、誤り訂正回路を別途設けずともレジスタ群のデータ異常を検出できる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態であり、メモリシステムの構成を示す図
【図２】データ監視回路の構成例を示す図
【図３】データ監視回路の動作を示すタイミングチャート
【図４】第２実施形態を示す図１相当図
【図５】第３実施形態を示す図１相当図
【図６】第４実施形態を示す図１相当図
【図７】第５実施形態を示す図１相当図
【図８】メインルーチンのフローチャート
【図９】サブルーチン（不揮発性メモリからのデータロード）のフローチャート
【図１０】サブルーチン（異常発生監視用データの生成）のフローチャート
【図１１】割り込みルーチン（レジスタ値の異常判定とリフレッシュ）のフローチャート
【図１２】第６実施形態を示す図７相当図
【図１３】図１０相当図
【図１４】図１１相当図
【図１５】第７実施形態を示す図７相当図
【図１６】図１０相当図
【図１７】図１１相当図
【図１８】第８実施形態を示す図７相当図
【図１９】図１０相当図
【図２０】図１１相当図
【図２１】第９実施形態を示す図２相当図
【図２２】図３相当図
【発明を実施するための形態】
【００１４】
（第１実施形態）
図１に示すように、メモリシステム１（半導体装置）は、例えばフラッシュメモリからなる不揮発性メモリ２，データ転送回路３，レジスタ群４，制御回路５，データ監視回路６で構成されている。データ転送回路３は、外部からの転送トリガ信号が与えられると、不揮発性メモリ２からデータを読み出してレジスタ群４に格納する。レジスタ群４は、ここでは１ビットごとのレジスタ４（１）〜（８），…の集合である。レジスタ群４に格納されたデータは、例えば４ビット毎に配置されている制御回路５に入力される。制御回路５は、入力されたデータ値に基づいて、例えばクロック信号の発振周波数を制御したり、動作電源電圧を制御したりといった、図示しない内部回路の調整を行う。
【００１５】
データ監視回路６も、４ビットごとに配置されている。データ監視回路６は、レジスタ群４に格納されている４ビットデータが変化したか否かを監視する回路であり、４ビットのうち何れか１ビットのデータ値が変化すると、異常検出信号を外部に出力する。尚、この監視動作は、外部より入力されるイネーブル信号がアクティブである期間に行われる。上記異常検出信号が出力されると、例えば、メモリシステム１を含む上位のシステムをリセットしたり、上位システムを管理しているＣＰＵに割り込みを発生させるなどする。
【００１６】
図２に示すように、データ監視回路６は、例えば４つのＥＸＯＲゲート７〜１０と、遅延回路１１と、ＡＮＤゲート１２とで構成されている。２つのＥＸＯＲゲート７，８は初段に配置され、これらの入力端子には４ビットデータが入力される。ＥＸＯＲゲート７，８の出力端子は、次段のＥＸＯＲゲート９（最終ゲート）の入力端子に接続されており、ＥＸＯＲゲート９の出力端子は、次段のＥＸＯＲゲート１０（信号出力用ゲート）の入力端子の一方に直接、他方に遅延回路１１を介して接続されている。ＥＸＯＲゲート１０の出力端子は、ＡＮＤゲート１２の入力端子の一方に接続されており、入力端子の他方には監視イネーブル信号が与えられている。
【００１７】
データ監視回路６は、いわゆるパリティを用いてデータの監視を行う。最終段のＥＸＯＲゲート１０が出力する信号のレベルは、４ビットデータに変化がない限りローである。図３に示すように、例えば４ビットの各データの初期値が何れも「０」であるとして、ある時点で、それらのうち第３ビットのデータ値が「１」に変化したとする。すると、ＥＸＯＲゲート１０の出力端子レベルは、遅延回路１１が付与する遅延時間の間だけハイレベルに変化する。これにより、各データ値が変化したか否かを監視する。
尚、データ転送回路３が最初に不揮発性メモリ２からレジスタ群４にデータ転送を行う際には、データ監視回路６の監視動作をディスエーブルするため、データ転送回路３がデータ転送を行う期間に併せて監視イネーブル信号をローレベルにし、ＡＮＤゲート１２により異常検出信号の出力を阻止する。
【００１８】
以上のように本実施形態によれば、レジスタ群４には、データ転送回路３によって、不揮発性メモリ２に記憶されているデータが転送されて格納される。そして、データ監視回路６は、レジスタ群４に格納されているデータのうち、少なくとも何れか１ビットのデータ値が転送された直後から変化したか否かを監視し、変化があれば異常検出信号を出力する。したがって、極めて簡単な検出原理に基づいた簡単な構成の回路で、レジスタ群４に格納されているデータを常時監視してデータの異常を検出できる。
【００１９】
この場合、データ監視回路６は、パリティを用いてデータの監視を行う。具体的には、４ビットのデータに対してＥＸＯＲゲート７〜９を用い、最終的にＥＸＯＲゲート９に信号をまとめる。そして、ＥＸＯＲゲート１０の入力端子の一方をＥＸＯＲゲート９の出力端子に直接接続し、入力端子の他方は遅延回路１１を介して接続する。これにより、４ビットデータの何れか１ビットのデータ値が変化すれば、ＥＸＯＲゲート１０の出力信号は、遅延回路１１により付与される遅延時間だけハイレベルを示す。したがって、パリティにより何れか１ビットのデータ値が変化したことを検出でき、データ監視回路６の構成が極めて簡単になる。
【００２０】
（第２実施形態）
以下、第１実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。図４に示すように、第２実施形態のメモリシステム２１は、第１実施形態の構成にリフレッシュ制御回路２２（データ転送回路）を追加したものである。リフレッシュ制御回路２２には、データ監視回路６Ａ，６Ｂからの異常検出信号が入力されており、何れかの異常検出信号がアクティブになると、データ転送回路３に転送指令信号を出力する。すると、データ転送回路３は、不揮発性メモリ２よりデータを読み出してレジスタ群４に格納し、再転送（リフレッシュ）を行う。
尚、上記転送指令信号がアクティブになる期間も、データ監視回路６による監視動作をディスエーブルするように制御する。また、データの再転送は、少なくとも異常が検出されたレジスタ群４について行えば良い。
【００２１】
以上のように第２実施形態によれば、データ転送回路３は、異常検出信号が出力されると、リフレッシュ制御回路２２からの転送指令を受けて異常が検知されたレジスタ群４のデータを不揮発性メモリ２から再転送するので、レジスタ群４のデータを正常な状態に復帰させることができる。そして、正常なデータを維持するために不要な再転送を繰り返す必要がないので、リードディスターブの発生を抑制する共に、消費電力の増加も抑制できる。
【００２２】
（第３実施形態）
図５に示すように、第３実施形態のメモリシステム３１は、８ビットのデータに対して１つのデータ監視回路６を配置し、データ監視回路６に入力する４ビットデータをセレクタ３２（マルチプレクサ，データ監視回路）により選択して切り替える。すなわち、制御回路５Ａに対応する４つのレジスタ４（１）〜４（４）をレジスタ群４Ａ，制御回路５Ｂに対応する４つのレジスタ４（５）〜４（８）をレジスタ群４Ｂとすると、セレクタ３２の入力端子Ａ，Ｂには、それぞれレジスタ群４Ａ，４Ｂの４ビットデータが与えられている。
【００２３】
セレクタ３２は、内蔵されているタイマ（図示せず）により切り替え周期を計時しており、切り替え周期ごとに入力端子Ａ側，Ｂ側を交互に選択してデータ監視回路６に出力する。したがって、データ監視回路６は、レジスタ群４Ａ，４Ｂのデータ監視を交互に行う。ただし、監視対象とするレジスタ群を切り替える際には、入力データの切替えに伴う異常検出をマスクするため、監視を所定期間だけディスエーブルする必要がある。尚、データ監視回路６が３つ以上のレジスタ群を監視対象としても良いことは言うまでもない。
【００２４】
また、監視対象データの重要度に応じて、監視時間比率や監視頻度を変化させても良い（例えば、システムクロックの周波数を設定するためのデータは、異常があるとシステムの挙動に大きな影響を及ぼすため、重要度が高い）。例えば、重要度が高いデータは１秒毎に監視し、重要度が低いデータは１０秒毎に監視するなどしても良い。
【００２５】
以上のように第３実施形態によれば、複数のレジスタ群４Ａ，４Ｂに対して、データ監視回路６を１つだけ備え、セレクタ３２によりレジスタ群４Ａ，４Ｂに格納されているデータを切り換えてデータ監視回路６に出力する。そして、データ監視回路６は、セレクタ３２が切り換え制御を行うことでレジスタ群４Ａ，４Ｂに格納されているデータの監視を交互に行う。したがって、監視対象とするレジスタ群の数が多い場合に、データ監視回路６の数を削減してメモリシステム３１を小型に構成できる。
【００２６】
（第４実施形態）
図６に示すように、第４実施形態のメモリシステム３３は、第３実施形態のメモリシステム３１に第２実施形態のリフレッシュ制御回路２２を組み合わせたもので、リフレッシュ制御回路２２は、データ監視回路６からの異常検出信号がアクティブになると、データ転送回路３に転送指令信号を出力して、データ転送回路３に不揮発性メモリ２からレジスタ群４にデータを再転送させる。
【００２７】
尚、この場合、セレクタ２２が内部で使用している切り替え制御信号を、破線で示すように、リフレッシュ制御回路２２又はデータ転送回路３に入力することで、異常が検出されたレジスタ群についてのみデータの再転送を行うようにしても良い。以上のように構成される第４実施形態によれば、第２及び第３実施形態と同様の効果が得られる。
【００２８】
（第５実施形態）
図７に示すように、第５実施形態のメモリシステム４１は、ＣＰＵ４２，ＲＯＭ４３を備えており、これらと不揮発性メモリ２及びレジスタ群４４とはアドレスバス及びデータバス４５により相互に接続されている。また、レジスタ群４４においては、データ４ビット毎に、パリティデータ格納用のレジスタ４ＰＡ，４ＰＢ，…（記憶手段）が配置されている。そして、データ監視回路６は設けられておらず、それに替えてＣＰＵ４２が、ソフトウェア動作によってデータ監視を行う。
【００２９】
次に、第５実施形態の作用について説明する。図８において、ＣＰＵ４２は、不揮発性メモリ２からレジスタ群４４にデータのロードを行うと（Ｓ１）、そのロードしたデータに基づいて異常発生監視用データ（パリティデータ）の生成を行う（Ｓ２）。それからタイマを初期化して（Ｓ３）タイマ割り込み要求をクリアすると（Ｓ４）、タイマ割り込みを許可する（Ｓ５）。ここまでが初期設定であり、以降にメインルーチンを実行する（Ｓ６）。
【００３０】
ステップＳ１における不揮発性メモリ２からのデータロードは、図９に示すように、先ずポインタｎに「１」をセットして（Ｓ１１）、不揮発性メモリ２からｎ番目のレジスタ群４に対応するデータを読み出す（Ｓ１２）。そして、読み出したデータをｎ番目のレジスタ群４に書き込む（Ｓ１３）。続いて、ポインタｎの値がレジスタ群の総数Ｎに等しいか否かを判断し（Ｓ１４）、等しくなければ（ＮＯ）ポインタｎをインクリメントして（Ｓ１５）ステップＳ１２に移行する。一方、ポインタｎの値がＮに等しければ（Ｓ１４：ＹＥＳ）サブルーチンを終了する。
【００３１】
ステップＳ２における異常発生監視用データの生成は、図１０に示すように、ポインタｎに「１」をセットして（Ｓ２１）、ｎ番目のレジスタ群４からデータを読み出す（Ｓ２２）。そして、読み出したデータに基づいてパリティを計算すると（Ｓ２３，誤り検出演算）、計算したパリティデータをｎ番目のレジスタ群４に対応するパリティデータ格納用のレジスタ４Ｐに書き込む（Ｓ２４）。続くステップＳ２５，Ｓ２６は、ステップＳ１４，Ｓ１５と同等である。
【００３２】
タイマ割り込みが発生すると、図１１に示すように、ＣＰＵ４２は、先ず割り込み要求をクリアする（Ｓ３１）。次に、ポインタｎに「１」をセットすると（Ｓ３２）、ｎ番目のレジスタ群４４からデータ及び対応するパリティデータを読み出し（Ｓ３３）、データより演算したパリティ値と読み出したパリティデータ値とを比較（確認）する（Ｓ３４）。両者が一致して異常がなければ（Ｓ３５：ＹＥＳ）、ステップＳ３６，Ｓ３７（Ｓ１４，Ｓ１５と同じ）を実行する。
【００３３】
一方、データより演算したパリティ値と読み出したパリティデータ値とが不一致であれば（Ｓ３５：ＮＯ）、続くステップＳ３８〜Ｓ４１において、ステップＳ１２，Ｓ１３，Ｓ２３，Ｓ２４と同じ処理を実行する。つまり、異常が検出されたレジスタ群のデータをリフレッシュする。それから、ステップＳ３６に移行する。
【００３４】
以上のように第５実施形態によれば、ＣＰＵ４２は、不揮発性メモリ２よりレジスタ群４４へのデータ転送を最初に行った際に、当該データについて誤り検出を行うためのパリティ演算を行うと、その演算結果データをレジスタ４Ｐに記憶させ、以降にレジスタ群４４からデータを読み出すと、当該データについてパリティ演算を行い、その演算結果データがレジスタ４Ｐに記憶させたパリティデータと異なれば異常を検出する。すなわち、ＣＰＵ４２が誤り訂正回路としての動作をソフトウェアにより実行するので、誤り訂正回路を別途設けずともレジスタ群４４のデータ異常を検出できる。
【００３５】
（第６実施形態）
図１２に示すように、第６実施形態のメモリシステム５１では、レジスタ群５２の使用形態が異なっている。レジスタ群５２には、レジスタ４（１），４（５）に格納されている２ビットデータについての排他的論理和（ＸＯＲ＝ＥＸＯＲ）値，つまりパリティ値がレジスタ４Ｐ（１）に格納され、レジスタ４（２），４（６）に格納されている２ビットデータについての排他的論理和値がレジスタ４Ｐ（２）に格納される。
【００３６】
次に、第６実施形態の作用について説明する。図１３に示すように、ＣＰＵ４２は、ステップＳ２１，Ｓ２２を実行すると、ポインタｎが「１」か否かを判断し（Ｓ２７）、「１」であれば（ＹＥＳ）、１番目のレジスタ群４ＡのデータをＸＯＲ値格納レジスタ群４Ｐに格納する（Ｓ２８）。それから、ステップＳ２６に移行する。
【００３７】
一方、ポインタｎが「１」でなければ（Ｓ２７：ＮＯ）、ここで、ｎ＝２とすると、レジスタ群４Ｂのデータと、ＸＯＲ値格納レジスタ群４Ｐに格納されているレジスタ群４ＡのデータとＸＯＲ値を求め（Ｓ２９，誤り検出演算）、それらのＸＯＲ値をＸＯＲ値格納レジスタ群４Ｐに書き戻す（Ｓ３０）。それから、ステップＳ２５に移行する。
【００３８】
タイマ割り込みが発生すると、図１４に示すように、ＣＰＵ４２は、ステップＳ３１を実行し、次に、ＸＯＲ値格納レジスタ群４Ｐに格納されているデータを読み出して、図示しないＲＡＭに一時保存する（Ｓ４２）。続いてステップＳ３２を実行し、ｎ番目のレジスタ群４からデータを読み出す（Ｓ４３）。そして、読み出したデータとＲＡＭに一時保存したデータとでＸＯＲ演算を行い（Ｓ４４）、その演算結果をＲＡＭに上書きする（Ｓ４５）。続いてステップＳ３６，Ｓ３７を実行する。
【００３９】
ステップＳ３６で「ＹＥＳ」と判断すると、その時点で、ステップＳ４５で書き込んだＲＡＭ上の演算結果が全て「０」であるか否かを判断する（Ｓ４６）。全て「０」であれば（ＹＥＳ）レジスタ群５２に格納されているデータに異常はないので割り込みルーチンを終了する。一方、ＲＡＭ上の演算結果が全て「０」でなければ（Ｓ４６：ＮＯ）、レジスタ群５２に格納されているデータに異常があるので、不揮発性メモリ２からレジスタ群５２にデータをロードして（Ｓ４７）、異常発生監視用データを生成する（Ｓ４８）。すなわち、図１３に示す処理を実行する。
【００４０】
以上のように第６実施形態によれば、ＣＰＵ４２は、レジスタ４（１），４（５）に格納されている２ビットデータ，レジスタ４（２），４（６）に格納されている２ビットデータについてのＸＯＲ値をそれぞれ求め、求めたＸＯＲ値をレジスタ群５２のレジスタ４Ｐに格納し、そのＸＯＲ値を用いてデータの異常検出を行う。したがって、第５実施形態と同様の効果が得られる。
【００４１】
（第７実施形態）
図１５に示すように、第７実施形態のメモリシステム５３では、レジスタ群５４において、第６実施形態におけるＸＯＲ値格納レジスタ群４Ｐをレジスタ群４ＰＡとすると、レジスタ群４ＰＡに格納されているデータのコピー（バックアップ）を、レジスタ群４ＰＢに格納して保持している。
【００４２】
次に、第７実施形態の作用について説明する。図１６に示すように、ステップＳ２７〜Ｓ３０Ａまでの処理は、実質的に第６実施形態と同様に行われる。そして、ステップＳ２５で「ＹＥＳ」と判断すると、レジスタ群４ＰＡに格納されているデータを読み出して、レジスタ群４ＰＢに格納してコピーする（Ｓ５１）。
【００４３】
また、図１７に示すように、ステップＳ３１を実行すると、レジスタ群４ＰＡ，４ＰＢに格納されているデータをそれぞれ読み出して比較し（Ｓ５２）、両者のデータ値が一致すれば（Ｓ５３：ＹＥＳ）、レジスタ群４ＰＡのデータをＲＡＭに一時保存し、以降は第６実施形態と同様に処理を実行する。一方、両者のデータ値が一致しなければ（Ｓ５３：ＮＯ）、ステップＳ４７に移行する。
【００４４】
以上のように第７実施形態によれば、ＣＰＵ４２は、誤り検出演算の演算結果データであるＸＯＲ値を、レジスタ群４ＰＡ，４ＰＢの複数箇所に記憶させ、これらのレジスタ群４ＰＡ，４ＰＢに記憶させたＸＯＲ値を照合して両者が一致すれば、そのＸＯＲ値を、対応するレジスタ群４Ａから読み出したデータより得られたＸＯＲ値と照合する。したがって、レジスタ群４Ｐに格納したＸＯＲ値についてバックアップをとることで、データの異常検出をより確実に行うことができる。
【００４５】
（第８実施形態）
図１８に示すように、第８実施形態のメモリシステム５５では、レジスタ群５６において、レジスタ群４Ｐに格納されている４ビットのＸＯＲ値について求めたパリティデータがレジスタ４ＰＰに格納されている。続いて、第８実施形態の作用について説明する。図１９に示すように、ステップＳ２７〜Ｓ３０までの処理は第６実施形態と同様に行われる。そして、ステップＳ２５で「ＹＥＳ」と判断すると、レジスタ群４Ｐに格納されているデータを読み出してパリティ値を計算し（Ｓ５４）、そのパリティ値をレジスタ４ＰＰに格納する（Ｓ５５）。
【００４６】
また、図２０に示すように、ステップＳ３１を実行すると、レジスタ群４Ｐに格納されているデータを読み出してパリティ値を計算し、レジスタ４ＰＰに格納されているパリティ値と一致するか確認する（Ｓ５６）。そして、両者のデータ値が一致すれば（Ｓ５７：ＹＥＳ）ステップＳ４２に移行し、一致しなければステップＳ４７に移行する。
【００４７】
以上のように第８実施形態によれば、ＣＰＵ４２は、レジスタ群４Ｐに格納されている４ビットのＸＯＲ値について求めたパリティデータをレジスタ４ＰＰに格納し、レジスタ群４Ａ，４Ｂについて異常検出を行う場合には、レジスタ群４Ｐに格納されているＸＯＲ値より求めたパリティ値と、レジスタ４ＰＰに格納されているパリティ値とが一致すれば、前記ＸＯＲ値を異常検出に使用する。したがって、第８実施形態の場合も、レジスタ群４Ｐに格納されているＸＯＲ値が正しいことを確認した上で、データの異常検出をより確実に行うことができる。
【００４８】
（第９実施形態）
第９実施形態は、データ監視回路の異なる構成例を示す。図２１に示すように、データ監視回路６１は、ＥＸＯＲゲート９，１０の間に、遅延回路に替えて、直列に接続されるＤフリップフロップ６２及び６３（パリティデータ保持回路）を配置している。ＥＸＯＲゲート１０の入力端子は、Ｄフリップフロップ６２，６３の出力端子Ｑにそれぞれ接続されている。
【００４９】
Ｄフリップフロップ６２，６３のクロック端子ＣＫには、共通のシフトクロック信号が与えられる。このシフトクロック信号は、データ転送回路３が不揮発性メモリ２からレジスタ群４へのデータ転送が実行される毎に入力される。ただし、初回の転送（ロード）時のみシフトクロックパルスを２回入力して、ＥＸＯＲゲート９の出力データを、Ｄフリップフロップ６３の出力端子Ｑに伝達させる。尚、Ｄフリップフロップ６３を「遅延回路」として見ることもできる。
【００５０】
次に、第９実施形態の作用について説明する。図２２に示すように、レジスタ群４に最初にデータがロードされ、Ｄフリップフロップ６２，６３にシフトクロックパルスを２回入力した後にデータの異常検出が可能になる。図２２（ａ）に示すように、レジスタ群４に格納されたデータに異常がなければ、２回目以降にデータをロードしてパリティデータをＤフリップフロップ６２，６３に順次格納しても、そのデータ値は変わらない。
【００５１】
一方、図２２（ｂ）に示すように、例えば、２回目にデータをロードした際にレジスタ群４に格納されたデータに変化があると、ＥＸＯＲゲート９が出力するデータ値が変化する。すると、ＥＸＯＲゲート１０の２つの入力端子に与えられるデータ値が異なり、出力信号がハイレベルに変化する（異常検出信号）。したがって、レジスタ群４に格納されたデータの異常を検出できる。
【００５２】
以上のように第９実施形態によれば、データ転送回路３が、不揮発性メモリ２からデータを転送した際に生成されるパリティを、転送の２回分について保持するＤフリップフロップ６２及び６３を備え、データ監視回路６１は、Ｄフリップフロップ６２及び６３により保持されている、２回分のパリティデータの値の何れかに変化が生じると異常検出信号を出力する。したがって、小規模な回路でデータの異常を検出できる。
【００５３】
本発明は上記した、又は図面に記載した実施形態にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
異常発生用監視用データについては、パリティに限ることなく、チェックサムやＣＲＣ（Cyclic Redundancy Check）符号，ハミング符号，拡大ハミング符号などを用いても良い。尚、８ビットデータについて、ハミング符号は４ビット，拡大ハミング符号は５ビットが必要となる。また、監視対象となるデータの重要度に応じて、複数種類の監視用データを同時に使用しても良いし、監視対象データそのものを監視用データとしても良い（すなわち、データの二重化）。
１つのデータ監視回路により、５ビット以上のデータについて変化を監視しても良い。
第９実施形態において、フリップフロップを３直列以上接続しても良い。
【符号の説明】
【００５４】
図面中、１はメモリシステム（半導体装置）、２は不揮発性メモリ、３はデータ転送回路、４はレジスタ群、６はデータ監視回路、７〜１０はＥＸＯＲゲート、１１は遅延回路を示す。
【図１】
2014215618.tif 000003
【図２】
2014215618.tif 000004
【図３】
2014215618.tif 000005
【図４】
2014215618.tif 000006
【図５】
2014215618.tif 000007
【図６】
2014215618.tif 000008
【図７】
2014215618.tif 000009
【図８】
2014215618.tif 000010
【図９】
2014215618.tif 000011
【図１０】
2014215618.tif 000012
【図１１】
2014215618.tif 000013
【図１２】
2014215618.tif 000014
【図１３】
2014215618.tif 000015
【図１４】
2014215618.tif 000016
【図１５】
2014215618.tif 000017
【図１６】
2014215618.tif 000018
【図１７】
2014215618.tif 000019
【図１８】
2014215618.tif 000020
【図１９】
2014215618.tif 000021
【図２０】
2014215618.tif 000022
【図２１】
2014215618.tif 000023
【図２２】
2014215618.tif 000024