(57)【要約】【課題】プログラムデータを補完する機能を備えた安価なマイクロコンピュータを提供すること。プログラムデータを補完する汎用的な機能を備えたマイクロコンピュータを提供すること。【解決手段】命令コードデータがＣＰＵ１の実行できない未定義データであると判定された場合、マイクロコンピュータは、その未定義データを、補完データメモリ１１に格納されている補完データで置き換え、プログラムデータメモリ９にその補完データを書き込むことにより、プログラムデータメモリ９に格納されているプログラムデータを修復する。一般に、コンパイラは、コンパイルの際にコンパイラのアルゴリズムに依存して同じコードを生成するという特性を有する。補完データは、このコンパイラのアルゴリズムに依存して生成される特定の命令コードデータであり、プログラムデータのうちの一部の命令コードデータである。【選択図】図１
2009301479.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵにより実行される命令コードデータを格納する第１メモリと、
前記第１メモリに格納される前記命令コードデータの一部のデータからなる補完データを格納する第２メモリと、
前記第１メモリから読み出された未定義データを、前記第２メモリに格納されている前記補完データで置き換え可能であるか否かを判定する第１判定手段と、
前記第１判定手段の判定結果に基づいて前記第１メモリに前記補完データを書き込む書き込み手段と、
を備えることを特徴とするマイクロコンピュータ。
【請求項２】
前記補完データは、コンパイラによって前記命令コードデータが生成される際に前記コンパイラのアルゴリズムに依存して生成されるデータであることを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項３】
前記書き込み手段による前記補完データの書き込み機能の有効および無効を切り替える切り替え手段、をさらに備えることを特徴とする請求項１または２に記載のマイクロコンピュータ。
【請求項４】
前記第１メモリから前記未定義データが読み出されたときの前記ＣＰＵによる処理の実行状態を保持する保持手段、をさらに備え、
前記書き込み手段により前記第１メモリへの前記補完データの書き込みが終了したときに、前記保持手段に保持されている実行状態を復元して前記ＣＰＵによる処理を継続することを特徴とする請求項１〜３のいずれか一つに記載のマイクロコンピュータ。
【請求項５】
前記第２メモリは、前記補完データとともに、前記補完データの直前に前記ＣＰＵにより実行されるべき命令コードデータおよび前記補完データの次に前記ＣＰＵにより実行されるべき命令コードデータを格納しており、
前記第１判定手段は、前記未定義データの前後の命令コードデータの組み合わせと前記補完データの前後の命令コードデータの組み合わせを比較して前記補完データの置き換えの可否を判定することを特徴とする請求項１〜４のいずれか一つに記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラムデータの一部を補完する機能を備えたマイクロコンピュータに関する。
【背景技術】
【０００２】
従来、障害から回復するための手段を備えたコンピュータ・システムが提案されている。このコンピュータ・システムは、プロセッサと、前記プロセッサに結合された主メモリ・サブシステムとから成り、該主メモリ・サブシステムが、データを書き込み、データを読み出す基本メモリ素子と、前記基本メモリ素子に結合され、前記プロセッサには透過的な態様で、前記基本メモリ素子から読み出されたデータを捕獲し格納するリード・バッファと、チェックポイント間のいずれかの間隔内で変更されたデータ全ての予備変更バージョンが、同一間隔の間に前記リード・バッファに捕獲されることを保証する手段と、前記リード・バッファからの前記データを前記基本メモリ素子にコピーし、障害に続いて、データ保全性またはプログラム連続性を損なうことなく、処理を再開することができる一貫したチェックポイント状態に、前記主メモリ・サブシステムが戻ることを可能にする手段と、を含む（例えば、特許文献１参照。）。
【０００３】
また、マイクロコンピュータの異常動作によるメモリデータ破壊を防ぐメモリ保護装置が提案されている。このメモリ保護装置は、ＣＰＵと、メインメモリと、前記ＣＰＵとデータのやり取りを行う前記メインメモリとの間にＣＰＵからの書き込みデータを一時保管するキャッシュ機能を備えたサブメモリと、マイクロコンピュータの暴走を検出するウォッチドックタイマのクリア信号により、前記サブメモリに前記メインメモリの書き換えデータとして一時保管されたデータをメインメモリへ書き換え処理制御を行うと共にデータ更新要求である更新リクエスト信号を発生するデータ更新制御手段を備えることにより、ＣＰＵからメモリへのデータ書き込みに対しては、メインメモリへ書き込みを行わずキャッシュメモリに書き込み、ウォッチドックタイマのクリア信号が出力されるとデータ更新制御手段がメインメモリにデータの書き込みを行う（例えば、特許文献２参照。）。
【０００４】
また、マイクロコンピュータのノイズ対策に関する提案がある。このマイクロコンピュータは、ＲＡＭ上のスタック領域に設けた１個以上のプログラムの命令実行番地の格納および取り出しを行うスタック管理部と、前記スタック領域に格納されているプログラムの命令実行番地のうち少なくとも１つが格納された時点から取り出されるまでの間にプログラム以外の要因で変更された場合に、前記スタック領域が破壊されたと判定するスタック領域検査部と、スタック領域検査部が前記スタック領域が破壊されたと判定した場合、スタックデータ破壊時の処理が記述されているプログラムを実行する演算処理部とを備える（例えば、特許文献３参照。）。
【０００５】
【特許文献１】特表２００１−５１５６１５号公報
【特許文献２】特開２００１−２９０７１２号公報
【特許文献３】特開平８−１２３６８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、プログラムデータを補完するために、プログラムデータを格納するメインメモリと同じ記憶容量のサブメモリを用意し、このサブメモリにプログラムデータの複製を格納しておく必要がある。そのため、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メインメモリおよびサブメモリを含むＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の面積が増大し、高価になるという問題点がある。また、通常、システムごとにプログラムデータが異なるため、システムごとにサブメモリに異なるプログラムデータの複製を格納する必要がある。そのため、従来の技術には、汎用的でないという問題点がある。
【０００７】
この発明は、上述した従来技術による問題点を解消するため、プログラムデータを補完する機能を備えたマイクロコンピュータを安価に提供することを目的とする。また、この発明は、プログラムデータを補完する汎用的な機能を備えたマイクロコンピュータを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、このマイクロコンピュータは、ＣＰＵ、第１のメモリ、第２のメモリ、判定手段および書き込み手段を備える。第１メモリには、命令コードデータからなるプログラムデータが格納されている。第２メモリには、プログラムデータの一部が補完データとして格納されている。補完データは、コンパイラによって命令コードデータが生成される際にそのコンパイラのアルゴリズムに依存して生成されるデータである。ＣＰＵは、第１メモリに格納されている命令コードデータを実行する。判定手段は、第１メモリから読み出されたデータが、ＣＰＵが実行することのできない未定義のコードデータであるとされた場合に、その未定義データが補完データで置き換え可能であるか否かを判定する。書き込み手段は、未定義データが補完データで置き換え可能であるときに、その未定義データを補完データで置き換え、第１メモリにその補完データを書き込む。
【０００９】
このマイクロコンピュータによれば、第１メモリから読み出された未定義データが補完データで上書きされるので、第１メモリに格納されているプログラムデータが修復される。また、補完データがプログラムデータの一部の命令コードデータであるので、第２メモリの容量が第１メモリの容量よりも少なくて済む。さらに、補完データがコンパイラのアルゴリズムに依存して生成されるので、プログラムデータに依存せずにＣＰＵの命令コードに依存した補完データが得られる。つまり、プログラムデータを補完する機能として、プログラムに依存しない、汎用的な機能が得られる。
【発明の効果】
【００１０】
このマイクロコンピュータによれば、プログラムデータを補完する機能を備えた安価なマイクロコンピュータが得られる。また、このマイクロコンピュータによれば、プログラムデータを補完する汎用的な機能を備えたマイクロコンピュータが得られる。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、このマイクロコンピュータの好適な実施の形態を詳細に説明する。
【００１２】
（マイクロコンピュータの構成）
図１は、実施の形態にかかるマイクロコンピュータの構成を示すブロック図である。図１に示すように、マイクロコンピュータは、プログラムデータメモリ９から読み出された命令コードデータが、命令判定部４および未定義判定部５により、ＣＰＵ１の実行できない未定義データであると判定された場合、補完データ取得部７により、補完データメモリ１１に格納されている補完データを取得する。そして、マイクロコンピュータは、未定義データを補完データで置き換えて、書き込み部８により、プログラムデータメモリ９に補完データを書き込むことにより、プログラムデータメモリ９に格納されているプログラムデータを修復する。
【００１３】
一般に、コンパイラは、Ｃ言語などの高級言語をマイクロコンピュータの解釈する言語に変換する際に、コンパイラのアルゴリズムに依存して同じコードを生成するという特性を有する。補完データは、このコンパイラのアルゴリズムに依存して生成される特定の命令コードデータであり、プログラムデータのうちの一部の命令コードデータである。
【００１４】
図２は、プログラムデータメモリに格納されたプログラムデータの一例を示す説明図である。図２に示すように、例えば、あるコンパイラを用いて高級言語をコンパイルすると、ロード命令（ＬＤＩ）、比較命令（ＣＭＰ）およびジャンプ命令（ＢＮＥ、ＢＧＥ、ＢＬＥ）というパターンの命令群２１，２２，２３，２４が出現する。
【００１５】
図３は、未定義データを含む命令群の一例を示す説明図である。図３に示すように、命令群２５において、例えば真ん中の比較命令のコードデータが解読されずに未定義データであると判定されたとする。この場合、上述したようにロード命令、比較命令およびジャンプ命令というパターンの命令群２１，２２，２３，２４が頻繁に出現することを考慮すると、未定義データの前後にロード命令とジャンプ命令があれば、未定義データが比較命令のコードデータであると推測することが可能である。このように、真ん中の命令コードデータを解読できなくても、その直前の命令コードデータ（以下、直前命令コードデータとする）と次の命令コードデータ（以下、次命令コードデータとする）がわかれば、真ん中の命令コードデータを推測することができる。
【００１６】
そこで、補完データメモリ１１には、このような特定のパターンを有する命令群のうち、真ん中の命令コードデータが補完データとして格納されている。また、直前命令コードデータと次命令コードデータの組み合わせは、補完データを推測する際の比較用データとして、図１に示す比較データメモリ１０に格納されている。
【００１７】
図４は、比較データメモリのデータ構造を示す説明図である。図４に示すように、比較データメモリ１０には、例えば１個以上の比較用データと、各比較用データに対応する補完データのアドレスを示す補完データポインタが格納されている。図４に示す例では、例えば「ＬＤＩ  ＃ｘｘ，Ｒ１」と「ＢＮＥ３２  ｘｘ，Ｒ１２」の組み合わせからなる比較用データと、それに対する補完データポインタとして「ＴＢＬ＿１」が格納されている。また、例えば「ＬＤＩ  ＃ｘｘ，Ｒ１」と「ＢＬＥ３２  ｘｘｘ，Ｒ１２」の組み合わせからなる比較用データと、それに対する補完データポインタとして「ＴＢＬ＿２」が格納されている。ここで、「ｘｘ」や「ｘｘｘ」は、任意の値である。
【００１８】
図５は、補完データメモリのデータ構造を示す説明図である。図５に示すように、補完データメモリ１１には、例えば１個以上の補完データが格納されている。各補完データは、比較データメモリ１０において補完データポインタにより指定されたアドレスに格納されている。図５に示す例では、例えば、「ＴＢＬ＿０」のアドレスに「ＡＮＤ  Ｒ１，Ｒ０」が格納されており、「ＴＢＬ＿１」のアドレスに「ＣＭＰ  Ｒ１，Ｒ０」が格納されている。
【００１９】
ここで、プログラムデータメモリ９は、フラッシュメモリや強誘電体メモリ（ＦＲＡＭ）などの書き換え可能な不揮発性メモリで構成されている。比較データメモリ１０および補完データメモリ１１は、例えばマスクＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの読み出し専用メモリで構成されている。
【００２０】
図１に戻り、ＣＰＵ１は、データバス１７を介してプログラムデータメモリ９から読み出される命令コードデータを実行する。プログラムデータメモリ９における命令コードデータのアドレスは、アドレスバス１８を介してプログラムカウンタ３により与えられる。プログラムカウンタ３の更新に伴って、プログラムデータメモリ９から命令コードデータが順次読み出される。プログラムデータメモリ９から読み出された命令コードデータは、ノイズやその他の原因によって破壊されることがある。破壊されたデータは、本来のデータと異なる未定義データとなってしまう。
【００２１】
命令判定部４は、プログラムデータメモリ９から読み出された命令コードデータの命令内容を判定する。未定義判定部５は、プログラムデータメモリ９から読み出された命令コードデータが未定義データであるか否かを判定し、未定義データである場合にベクタ割り込み信号を出力する。
【００２２】
プログラムカウンタバッファ１３は、今回実行する命令コードデータのアドレス（現在アドレス（異常検出アドレス））、その直前に実行された命令コードデータのアドレス（直前命令アドレス）、および次に実行される予定の命令コードデータのアドレス（次命令アドレス）を格納する３段のアドレスバッファで構成されている。プログラムカウンタバッファ１３は、命令処理の実行時に、毎回、直前命令アドレス、現在アドレスおよび次命令アドレスを格納する。次命令アドレスは、現在のプログラムカウンタ３の値、すなわち現在アドレスを用いて求められる。
【００２３】
命令バッファ１４は、命令処理の実行時に、毎回、直前命令コードデータおよび次命令コードデータを保存する。次命令コードデータは、プログラムカウンタバッファ１３に格納される次命令アドレスに基づいてプログラムデータメモリ９から読み出される。スタックポインタバッファ１５は、命令判定部４および未定義判定部５により命令コードデータが未定義データであると判定されたときに、その直前のスタックポインタ２の値および次のスタックポインタ２の値を保存する。
【００２４】
比較部６には、未定義判定部５から出力されたベクタ割り込み信号が異常信号として入力する。比較部６は、異常信号の入力によって、命令バッファ１４に保存されている直前命令コードデータおよび次命令コードデータと、比較データメモリ１０に格納されている比較用データを比較し、一致する組み合わせがあるか否かを判定する。比較の結果、一致する比較用データがある場合、比較部６は、検出信号と、一致した比較用データの補完データポインタを出力する。一致する比較用データがない場合、比較部６は、エラー信号を出力する。
【００２５】
補完データ取得部７は、検出信号の入力によって、比較部６から補完データポインタを受け取り、補完データメモリ１１の該当するアドレスから補完データを取得する。補完データ取得部７は、補完信号と補完データを出力する。万一、補完データメモリ１１の該当するアドレスから補完データを取得できない場合には、補完データ取得部７は、エラー信号を出力する。補完信号はステータスレジスタ部１９へも出力され、ステータスレジスタ部１９によって実行の状態（ステータス）を確認できる。
【００２６】
書き込み部８は、補完信号の入力によって、プログラムデータメモリ９の、未定義データと判定された命令コードデータが格納されている領域のデータを消去する。また、書き込み部８は、データ消去後、補完データ取得部７から補完データを受け取り、プログラムデータメモリ９の、データ消去領域に補完データを書き込む。その際、データの消去や書き込みは、プログラムデータメモリ９のデータ消去単位ごとに行われる。書き込み部８は、作業用メモリ１２を用いて、データの一時保管やデータの書き換えを行う。作業用メモリ１２は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成されている。
【００２７】
また、マイクロコンピュータは、切り替え部１６を備えている。切り替え部１６は、ユーザープログラムによって上述したプログラムデータ補完機能を有効にするか無効にするかを切り替えることのできるスイッチで構成される。プログラムデータ補完機能が有効にされている場合、未定義判定部５からベクタ割り込み信号が出力されると、切り替え部１６は、異常信号を出力する。異常信号が出力されると、ＣＰＵ１は、命令実行処理を停止し、実行待機ステートに移行する。また、スタックポインタバッファ１５にスタックポインタ２の値が保存される。
【００２８】
プログラムデータ補完機能が有効にされている場合に比較部６または補完データ取得部７からエラー信号が出力されると、ＣＰＵ１に処理の中止またはリセットが要求される。一方、プログラムデータ補完機能が無効にされている場合、未定義判定部５からベクタ割り込み信号が出力されると、ＣＰＵ１に処理の中止またはリセットが要求される。
【００２９】
上述した構成において、プログラムデータメモリ９は、第１メモリとしての機能を有する。比較データメモリ１０および補完データメモリ１１は、第２メモリとしての機能を有する。比較部６および補完データ取得部７は、第１判定手段としての機能を有する。命令判定部４および未定義判定部５は、第２判定手段としての機能を有する。書き込み部８は、書き込み手段としての機能を有する。プログラムカウンタバッファ１３およびスタックポインタバッファ１５は、保持手段としての機能を有する。切り替え部１６は、切り替え手段としての機能を有する。
【００３０】
なお、比較データメモリ１０と補完データメモリ１１は、別々のメモリに設けられていてもよいし、同じメモリに設けられていてもよい。また、比較データメモリ１０および補完データメモリ１１は、書き換え可能な不揮発性メモリで構成されていてもよい。その場合、比較データメモリ１０および補完データメモリ１１の一方または両方がプログラムデータメモリ９と同じメモリに設けられていてもよい。
【００３１】
（マイクロコンピュータの動作）
図６は、実施の形態にかかるマイクロコンピュータの動作を示すフローチャートの一部であり、図７は、図６の続きを示すフローチャートである。図６に示すように、命令判定処理では、まず、今回の命令処理の実行を開始する前に、直前の命令処理の実行終了時に、プログラムカウンタバッファ１３および命令バッファ１４にそれぞれプログラムカウンタ３の値と命令コードデータを保存する（ステップＳ１、ステップＳ２）。これによって、直前に実行した命令コードデータのアドレスと、直前に実行した命令コードデータが保存される。その後、今回の命令処理の実行を開始する（ステップＳ３）。
【００３２】
今回の命令処理の実行を開始したら、プログラムカウンタバッファ１３および命令バッファ１４にそれぞれプログラムカウンタ３の値と命令コードデータを保存する（ステップＳ４、ステップＳ５）。これによって、今回実行する命令コードデータのアドレスと命令コードデータが保存される。次いで、今回実行する命令コードデータをデコードする（ステップＳ６）。そして、命令判定部４および未定義判定部５により、デコードしたデータが未定義データであるか否かを判定する（ステップＳ７）。
【００３３】
判定の結果、未定義データでなければ（ステップＳ７：Ｎｏ）、命令判定部４により、今回実行する命令がどのような命令であるかを判定する（ステップＳ８）。そして、ＣＰＵ１は、その命令の実行処理を行う（ステップＳ９）。プログラムデータメモリ９から読み出された命令コードデータに異常がなければ、このように通常の処理が行われる。
【００３４】
一方、今回実行する命令コードデータをデコードして未定義データであるか否かを判定した結果、未定義データである場合には（ステップＳ７：Ｙｅｓ）、図７に示すように、未定義判定部５により、ベクタ割り込み信号を出力する（ステップＳ１０）。ここでは、切り替え部１６が、プログラムデータ補完機能を有効にする側に切り替えられているので、切り替え部１６から異常信号が出力される（ステップＳ１１）。それによって、ＣＰＵ１は、命令実行処理を停止して実行待機ステートに移行し（ステップＳ１２）、同時に、スタックポインタバッファ１５にスタックポインタ２の値を退避する（ステップＳ１３）。
【００３５】
次いで、命令バッファ１４から直前命令コードデータと次命令コードデータを取り出す（ステップＳ１４、ステップＳ１５）。次いで、比較部６により、直前命令コードデータおよび次命令コードデータの組み合わせを、比較データメモリ１０に格納されている比較用データと比較し、一致する組み合わせがあるか否かを判定する（ステップＳ１６）。比較の結果、一致する比較用データがある場合（ステップＳ１６：Ｙｅｓ）、比較部６により、その一致した比較用データの補完データポインタを取得する（ステップＳ１７）。例えば、直前命令コードデータおよび次命令コードデータがそれぞれ「ＬＤＩ  ＃ｘｘ，Ｒ１」および「ＢＮＥ３２  ｘｘ，Ｒ１２」である場合、図４に示す例では、補完データポインタとして「ＴＢＬ＿１」を取得する。
【００３６】
次いで、補完データ取得部７により、取得した補完データポインタに基づいて、補完データメモリ１１の該当するアドレスに補完データがあるか否かを判定する（ステップＳ１８）。その結果、補完データがある場合（ステップＳ１８：Ｙｅｓ）、補完データメモリ１１から該当する補完データを読み出す（ステップＳ１９）。例えば、補完データポインタが「ＴＢＬ＿１」である場合、図５に示す例では、「ＣＭＰ  Ｒ１，Ｒ０」を取得する。
【００３７】
次いで、書き込み部８により、プログラムデータメモリ９の、未定義データであると判定された命令コードデータが格納されている領域のデータを消去する（ステップＳ２０）。そして、書き込み部８により、プログラムデータメモリ９の、そのデータ消去領域に補完データを書き込む（ステップＳ２１）。
【００３８】
その後、スタックポインタバッファ１５から退避中のスタックポインタと、プログラムカウンタバッファ１３から退避中のプログラムカウンタを復帰する（ステップＳ２２、ステップＳ２３）。そして、ＣＰＵ１の実行待機ステートを解除し、ＣＰＵ１を命令処理実行ステートへ復帰させることで処理を再開する。処理が再開されると、ステップＳ１に戻り、次の命令判定処理が開始される。一方、ステップＳ１６で、一致する比較用データがない場合（ステップＳ１６：Ｎｏ）、またはステップＳ１８で、該当する補完データがない場合（ステップＳ１８：Ｎｏ）には、ベクタ割り込み信号としてエラー信号を出力する（ステップＳ２４）。それによって、ＣＰＵ１に処理の中止またはリセットが要求される。
【００３９】
以上説明したように、本実施の形態によれば、プログラムデータメモリ９から読み出された命令コードデータが未定義データであると判定された場合、その未定義データであると判定された命令コードデータが補完データで上書きされるので、プログラムデータメモリ９に格納されているプログラムデータを修復することができる。また、補完データがプログラムデータの一部の命令コードデータであるので、比較データメモリ１０の容量と補完データメモリ１１の容量の合計がプログラムデータメモリ９の容量よりも少なくて済む。従って、プログラムデータを補完する機能を備えた安価なマイクロコンピュータが得られる。さらに、補完データがコンパイラのアルゴリズムに依存して生成されるので、プログラムデータに依存せずにＣＰＵ１の命令コードに依存した補完データが得られる。従って、プログラムデータを補完する機能として、プログラムに依存しない、汎用的な機能が得られる。
【００４０】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００４１】
（付記１）ＣＰＵと、前記ＣＰＵにより実行される命令コードデータを格納する第１メモリと、前記第１メモリに格納される前記命令コードデータの一部のデータからなる補完データを格納する第２メモリと、前記第１メモリから読み出された未定義データを、前記第２メモリに格納されている前記補完データで置き換え可能であるか否かを判定する第１判定手段と、前記第１判定手段の判定結果に基づいて前記第１メモリに前記補完データを書き込む書き込み手段と、を備えることを特徴とするマイクロコンピュータ。
【００４２】
（付記２）前記補完データは、コンパイラによって前記命令コードデータが生成される際に前記コンパイラのアルゴリズムに依存して生成されるデータであることを特徴とする付記１に記載のマイクロコンピュータ。
【００４３】
（付記３）前記第２メモリは、不揮発性のメモリであることを特徴とする付記１または２に記載のマイクロコンピュータ。
【００４４】
（付記４）前記第２メモリは、読み出し専用メモリであることを特徴とする付記１または２に記載のマイクロコンピュータ。
【００４５】
（付記５）前記第１メモリから読み出されたデータが未定義データであるか否かを判定する第２判定手段、をさらに備え、前記第１判定手段は、前記第２判定手段の判定結果に基づいて前記補完データの置き換えの可否を判定することを特徴とする付記１〜４のいずれか一つに記載のマイクロコンピュータ。
【００４６】
（付記６）前記書き込み手段による前記補完データの書き込み機能の有効および無効を切り替える切り替え手段、をさらに備えることを特徴とする付記１〜５のいずれか一つに記載のマイクロコンピュータ。
【００４７】
（付記７）前記第１メモリから前記未定義データが読み出されたときの前記ＣＰＵによる処理の実行状態を保持する保持手段、をさらに備え、前記書き込み手段により前記第１メモリへの前記補完データの書き込みが終了したときに、前記保持手段に保持されている実行状態を復元して前記ＣＰＵによる処理を継続することを特徴とする付記１〜６のいずれか一つに記載のマイクロコンピュータ。
【００４８】
（付記８）前記第１判定手段は、前記補完データの置き換え不可であると判定するときに前記ＣＰＵによる処理の実行を中止することを特徴とする付記１〜７のいずれか一つに記載のマイクロコンピュータ。
【００４９】
（付記９）前記第２メモリは、前記補完データとともに、前記補完データの直前に前記ＣＰＵにより実行されるべき命令コードデータおよび前記補完データの次に前記ＣＰＵにより実行されるべき命令コードデータを格納しており、前記第１判定手段は、前記未定義データの前後の命令コードデータの組み合わせと前記補完データの前後の命令コードデータの組み合わせを比較して前記補完データの置き換えの可否を判定することを特徴とする付記１〜８のいずれか一つに記載のマイクロコンピュータ。
【００５０】
（付記１０）前記第１判定手段は、前記未定義データの前後１行以上の命令コードデータの組み合わせと前記補完データの前後の命令コードデータの組み合わせを比較することを特徴とする付記９に記載のマイクロコンピュータ。
【図面の簡単な説明】
【００５１】
【図１】実施の形態にかかるマイクロコンピュータの構成を示すブロック図である。
【図２】プログラムデータメモリに格納されたプログラムデータの一例を示す説明図である。
【図３】未定義データを含む命令群の一例を示す説明図である。
【図４】比較データメモリのデータ構造を示す説明図である。
【図５】補完データメモリのデータ構造を示す説明図である。
【図６】実施の形態にかかるマイクロコンピュータの動作を示すフローチャートである。
【図７】図６の続きを示すフローチャートである。
【符号の説明】
【００５２】
１  ＣＰＵ
４，５  第２判定手段
６，７  第１判定手段
８  書き込み手段
９  第１メモリ
１０，１１  第２メモリ
１３，１５  保持手段
１６  切り替え手段
【図１】
2009301479.tif 000003
【図２】
2009301479.tif 000004
【図３】
2009301479.tif 000005
【図４】
2009301479.tif 000006
【図５】
2009301479.tif 000007
【図６】
2009301479.tif 000008
【図７】
2009301479.tif 000009