(57)【要約】【課題】安価にノイズ耐性を向上する必要のあるマイクロプロセッサにおいて、ノイズにより記憶装置から読み込んだ命令列が誤っていた場合、安全にエラー処理を実行する。【解決手段】エラーを検出するとエラー処理を実行するマイクロプロセッサにおいて、命令実行時にエラーの内容によってエラーを検出する手段と、ノイズが収束するまでの時間を計測する手段と、エラーを検出してからノイズが収束するまでの期間は命令フェッチを停止する手段とを備え、ノイズによってエラー処理を記憶した記憶装置から正しい命令列が読み出せない期間の命令フェッチを抑制し、ノイズが収束してからエラー処理を実行する。【選択図】  図３
2010176361.tif 000002
【特許請求の範囲】
【請求項１】
通常処理命令列とエラー処理命令列を含む命令列およびデータが格納された記憶装置と、前記記憶装置に結合され、前記記憶装置に格納された前記命令列をフェッチする命令フェッチ装置と、前記命令フェッチ装置がフェッチした命令列を実行し、命令実行情報を出力する命令実行装置と、一定周期ごとにクリアされないことによってプログラムの暴走を検出し、暴走検出信号を出力するウォッチドックタイマと、前記命令実行装置の命令実行情報と前記ウォッチドックタイマの暴走検出信号から命令実行情報により命令実行時のエラーのみを検出するエラー検出装置と、前記エラー検出装置がエラーを検出すると任意の時間の経過を計測する時間計測装置と、前記エラー検出装置がエラーを検出すると命令フェッチ抑制信号を、また前記時間計測装置が前記任意の時間の経過を検出すると命令フェッチ再開信号を前記命令フェッチ装置に通知する命令フェッチ制御装置とを備え、
前記通常処理命令列の実行中に前記エラー検出装置が、ウォッチドックタイマからの暴走の検出を除く命令実行時のエラーを検出した場合、前記命令列のフェッチを任意の時間抑制することを特徴とするマイクロプロセッサ。
【請求項２】
前記エラー検出装置は、命令列に起因するエラーを検出した場合のみ命令実行エラーを出力し、エラー処理命令列は命令列記憶装置に格納された命令だけで構成することを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記エラー検出装置は、未定義命令によるエラーを検出した場合のみ命令実行エラーを出力することを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項４】
前記記憶装置は、前記命令列を格納した命令列記憶装置と、前記データを格納したデータ記憶装置から構成されることを特徴とする請求項１〜３のいずれか１項に記載のマイクロプロセッサ。
【請求項５】
前記エラー検出装置が、前記エラーを検出するとエラー処理に不要な回路に対して不要回路停止信号を出力する不要回路停止装置と、前記不要回路停止装置から不要回路停止信号を受理すると回路動作を停止するエラー処理不要回路を備え、
前記エラー検出装置がエラーを検出すると前記エラー処理中にエラー処理不要回路を停止することを特徴とする請求項１〜４のいずれか１項に記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノイズ耐性を向上したマイクロプロセッサに関するものである。
【背景技術】
【０００２】
近年、組み込み用マイクロプロセッサの分野において、動作周波数の向上と動作電圧の低下により、ノイズによって記憶装置から誤ったプログラムを読み出すことが課題となってきた。ただし、この課題に対する一般的な手法としてパリティチェックがあるが、メモリが高価なため組み込み用マイクロプロセッサには向かず、安価にノイズ耐性を向上する必要がある。
【０００３】
第１の従来のマイクロプロセッサは、プログラム実行時にエラーを検出すると即座にエラー処理を実行しようとするが（例えば、非特許文献１参照）、エラー処理を実行するときにノイズが収束していない場合、エラー処理が正しく実行できないことがあった。また、プログラムが暴走していた場合には、命令実行時にウォッチドックタイマが暴走を検出していたとき、プログラムの先頭から全ての処理を再実行していた。
【０００４】
そこで第２の従来のマイクロプロセッサは、プログラムのノイズ耐性を安価に向上する一方式として、マイクロプロセッサが命令実行時にエラーを検出すると、所定時間経過した後、次の処理を行うことによって、ノイズ耐性を向上するものも考えられていた（例えば、特許文献１参照）。
【０００５】
この方式によれば、命令実行時にエラーを検出すると、ノイズが収束するのに十分な時間経過した後、命令列を格納した記憶装置からプログラムを読み込むことにより、記憶装置から読み込む命令列のノイズ耐性を向上している。
【特許文献１】特開平８−１５３０５２号公報
【非特許文献１】Panasonic、MN103SFC6K LSI説明書（5.3.1 割込みの種類）、[online]、2006年7月出版、1.1版、[平成21年1月13日検索]、インターネット＜URL:https://www.semicon.panasonic.co.jp/cgi-bin/micom/manual/download/dwld_products.cgi?email=general&mode=general&lang=3&type=0&series=MN103S00＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、第２の従来のマイクロプロセッサは、エラーの内容に係わらずノイズの収束を待つため、エラー検出時に常に次の処理開始までの期間が長いという問題があった。
【０００７】
本発明は、前記従来技術の問題を解決するものであり、命令列実行によってエラーを検出し、エラーの内容によって処理を変えることで、第１の従来のマイクロプロセッサよりノイズ耐性が高く、第２の従来のマイクロプロセッサより迅速にエラー処理を行うマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００８】
前記の目的を達成するために、本発明に係る請求項１のマイクロプロセッサは、通常処理命令列とエラー処理命令列を含む命令列およびデータが格納された記憶装置と、前記記憶装置に結合され、前記記憶装置に格納された前記命令列をフェッチする命令フェッチ装置と、前記命令フェッチ装置がフェッチした命令列を実行し、命令実行情報を出力する命令実行装置と、一定周期ごとにクリアされないことによってプログラムの暴走を検出し、暴走検出信号を出力するウォッチドックタイマと、前記命令実行装置の命令実行情報と前記ウォッチドックタイマの暴走検出信号から命令実行情報により命令実行時のエラーのみを検出するエラー検出装置と、前記エラー検出装置がエラーを検出すると任意の時間の経過を計測する時間計測装置と、前記エラー検出装置がエラーを検出すると命令フェッチ抑制信号を、また前記時間計測装置が前記任意の時間の経過を検出すると命令フェッチ再開信号を前記命令フェッチ装置に通知する命令フェッチ制御装置とを備え、前記通常処理命令列の実行中に前記エラー検出装置が、ウォッチドックタイマからの暴走の検出を除く命令実行時のエラーを検出した場合、前記命令列のフェッチを任意の時間抑制することを特徴とする。
【０００９】
このような構成により、命令実行によるエラーを検出した場合はノイズが収束するのに十分な時間、命令フェッチを抑制するため正しくエラー処理を実行できる。また、ノイズによって命令列が変化しマイクロプロセッサが暴走したとしても、ウォッチドックタイマはマイクロプロセッサが暴走してから非常に長い期間が経過してから暴走を検出する。この期間はノイズの収束より十分に長いため、ウォッチドックタイマが暴走を検出した場合は時間計測装置による命令フェッチを抑制しないため、迅速にプログラムの先頭番地からの命令を再実行できる。また、第２の従来のマイクロプロセッサのエラー検出時、常に次の処理開始までの期間が長いという問題は、待つ必要のないウォッチドックタイマの暴走検出時には待つことなく次の処理を行うため、次の処理開始までの期間を必要最小限にできる。
【００１０】
また、請求項２の発明は、請求項１のマイクロプロセッサにおいて、前記エラー検出装置は、命令列に起因するエラーを検出した場合のみ命令実行エラーを出力し、エラー処理命令列は命令列記憶装置に格納された命令だけで構成することを特徴とする。
【００１１】
このような構成により、請求項１のマイクロプロセッサの特徴に加えて、エラー処理命令列を命令列記憶装置にのみ格納し、命令列記憶装置がノイズで変化したことを示す命令列に起因するエラーを検出した場合のみノイズの収束を待つため、エラー処理の実行を早く開始できる。
【００１２】
また、請求項３の発明は、請求項１，２のマイクロプロセッサにおいて、前記エラー検出装置は、未定義命令によるエラーを検出した場合のみ命令実行エラーを出力することを特徴とする。
【００１３】
このような構成により、請求項１のマイクロプロセッサの特徴に加えて、エラー処理を命令列かつ未定義命令以外のエラーが検出されることのない命令列で構成する場合、ノイズの収束を待つ要因が減るため、さらにエラー処理の実行を早く開始できる。
【００１４】
また、請求項４の発明は、請求項１〜３のマイクロプロセッサにおいて、前記記憶装置は、前記命令列を格納した命令列記憶装置と、前記データを格納したデータ記憶装置から構成されることを特徴とする。
【００１５】
このような構成により、命令列に起因するエラーを検出した場合は命令列が記憶された記憶装置がノイズの影響を受け、データによるエラーを検出した場合はデータが記憶された記憶装置がノイズの影響を受けているというように、どの記憶装置がノイズの影響を受けているかを明確にできる。
【００１６】
また、請求項５の発明は、請求項１〜４のマイクロプロセッサにおいて、前記エラー検出装置が、前記エラーを検出するとエラー処理に不要な回路に対して不要回路停止信号を出力する不要回路停止装置と、前記不要回路停止装置から不要回路停止信号を受理すると回路動作を停止するエラー処理不要回路を備え、前記エラー検出装置がエラーを検出すると前記エラー処理中にエラー処理不要回路を停止することを特徴とする。
【００１７】
このような構成により、エラー処理中に、エラー処理に不要な回路の動作を停止することでノイズ源となり得る要素を削減し、エラー処理を安全に実行できる。
【発明の効果】
【００１８】
本発明によれば、命令実行時のエラーを検出することで確実にプログラムのエラーを検出し、エラーの要因によって、次の処理の実行開始タイミングを変化させることで、第１の従来のマイクロプロセッサよりノイズ耐性を向上しつつ、第２の従来のマイクロプロセッサより速やかにエラー処理を実行することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明における実施の形態を詳細に説明する。
【００２０】
（第１の実施の形態）
図１は本発明の第１の実施の形態におけるマイクロプロセッサ（以下、プロセッサという）で、ＭＮ１０３０／ＭＮ１０３Ｓシリーズ（Panasonic(株)製）の一部の機械語命令とその動作を示す図であり、図２は命令実行時に検出するエラー要因の一例を示す図である。また、図３は本実施の形態におけるプロセッサの命令フェッチとエラー検出における機能的な構成例を示すブロック図である。
【００２１】
図１に示すＭＮ１０３０／ＭＮ１０３Ｓシリーズの疑似命令について説明する。
“ＥＸ１  ｅｑｕ  ｎｕｍ”は、ＥＸ１をｎｕｍという値に設定する。例えば“ＴＭ８＿ＲＥＧ  ｅｑｕ  １２３４”と設定した場合、機械語中で“ｍｏｖ  （ＴＭ８＿ＲＥＧ），Ｄ０”と記述すると“ｍｏｖ  （１２３４），Ｄ０”と同じ扱いとなる。
【００２２】
図１のＭＮ１０３０／ＭＮ１０３Ｓシリーズの機械語命令について説明する。
“ｍｏｖ  （ｓｒｃ），ｄｓｔ”は、ｓｒｃが指し示すアドレスの値をｄｓｔに転送する。例えば“ｍｏｖ  （１２３４），Ｄ０”と記述すると、記憶装置のアドレス１２３４の値をＤ０レジスタに転送する。
【００２３】
“ｍｏｖ  （ａｂｓ，ｓｒｃ），ｄｓｔ”は、ｓｒｃ＋ａｂｓが指し示すアドレスの値をｄｓｔに転送する。例えば“ｍｏｖ  （１２３４，Ａ０），Ｄ０”と記述すると、記憶装置のアドレス１２３４＋Ａ０レジスタの値の指し示すアドレスの値をＤ０レジスタに転送する。
【００２４】
“ｍｏｖ  ｓｒｃ，（ｄｓｔ）”は、ｓｒｃの値をｄｓｔが指し示すアドレスに転送する。例えば“ｍｏｖ  Ｄ０，（１２３４）”と記述すると、Ｄ０レジスタの値を記憶装置のアドレス１２３４に転送する。
【００２５】
“ｍｏｖ  ｓｒｃ，ｄｓｔ”は、ｓｒｃの値をｄｓｔに転送する。例えば“ｍｏｖ  Ｄ０，Ｄ１”と記述すると、Ｄ０レジスタの値をＤ１レジスタに転送する。
【００２６】
“ａｄｄ  ｓｒｃ，ｄｓｔ”は、ｓｒｃ＋ｄｓｔをｄｓｔに転送する。例えば“ａｄｄ  Ｄ０，Ｄ１”と記述すると、Ｄ０レジスタの値とＤ１レジスタの値を加算しＤ１に転送する。
【００２７】
“ｃｍｐ  ｓｒｃ，ｄｓｔ”は、ｄｓｔ−ｓｒｃの結果をフラグに反映する。例えばｄｓｔ−ｓｒｃの結果が０であればフラグに演算結果が０であることをフラグに反映する。
【００２８】
“ｂｎｅ  ｌａｂｅｌ”は、“ｃｍｐ  ｓｒｃ，ｄｓｔ”の結果が０であればｌａｂｅｌに分岐し、０でなければ何も行わない。例えば、Ｄ０レジスタとＤ１レジスタの値が異なる値の場合に“ｃｍｐ  Ｄ０，Ｄ１”，“ｂｎｅ  ｌｏｏｐ０”と記述すると、ｃｍｐによる演算結果が０以外のためｌｏｏｐ０のラベルに分岐する。
【００２９】
“ｊｍｐ  ｌａｂｅｌ”は、ｌａｂｅｌに分岐する。
【００３０】
次に、図２に示した命令実行時に検出するエラーについて説明する。
“暴走検出”によるエラーは、一定周期ごとにウォッチドックタイマのカウンタがクリアされない場合にエラーを検出する。例えば“ａｄｄ  １０，Ｄ０を１０回繰り返すプログラム”を記述しているとき、命令列が誤った値に変化し“ａｄｄ  １０，Ｄ０を１０００００回繰り返すプログラム”に変化し、一定周期ごとのウォッチドックタイマのクリアが実行できなかった場合に暴走を検出する。また、このエラーは暴走検出に分類される。
【００３１】
“未定義命令”によるエラーは、定義されていない命令列を実行した場合にエラーを検出する。例えば“ｍｏｖ  Ｄ０，Ｄ１”という命令が記憶装置に“８１（１６進）”として格納され、“ＦＦ（１６進）”は定義されていない機械語の場合、記憶装置から読み出す命令列が“８１（１６進）”から“ＦＦ（１６進）”に変化した場合、エラーを検出する。また、このようなエラーは命令列そのものが変化した場合に発生するため、エラー要因は命令列に分類される。
【００３２】
“拡張演算未実装”によるエラーは、定義されていない拡張演算命令を実行した場合にエラーを検出する。また拡張演算命令とは、通常の命令と異なりＬＳＩごとに実装していない場合のある命令列である。例えば、拡張演算命令の搭載されていないＬＳＩにおいて、記憶装置から読み出す命令列が拡張演算命令に変化した場合、エラーを検出する。また、このようなエラーは命令列そのものが変化した場合に発生するため、エラー要因は命令列に分類される。
【００３３】
“命令フェッチ禁止領域アクセス”は、命令フェッチ禁止の記憶装置のアドレスへ命令フェッチする命令を実行した場合に検出する。例えば、記憶装置の３０００番地が命令フェッチ禁止の記憶装置のアドレスの場合、“ｂｎｅ  ｌａｂｅｌ”の分岐先のｌａｂｅｌが３０００番地に変化した場合、ｌａｂｅｌに分岐して３０００番地の命令フェッチを行った場合、エラーを検出する。また、このようなエラーは命令列そのものが変化した場合に発生するため、エラー要因は命令列に分類される。
【００３４】
“ミスアライメント”によるエラーは、誤ったアライメントで記憶装置へアクセスする命令を実行した場合にエラーを検出する。例えば、“ｍｏｖ  （Ａ０），Ｄ０”のアドレスの下位２ビットは０でなくてはならないとき、Ａ０レジスタの値が３００１番地に変化していた場合、エラーを検出する。また、このようなエラーはエラーが発生するより前の記憶装置からレジスタに転送したデータが変化していた場合に発生するため、エラー要因はデータに分類される。ただし、“ｍｏｖ  （３００，Ａ０），Ｄ０”は“３００＋Ａ０”番地のデータをＤ０レジスタに転送する命令だが、“３００＋Ａ０”のように演算を含む命令でミスアライメントを検出した場合のエラー要因は命令列に分類される。
【００３５】
“データアクセス禁止領域アクセス”によるエラーは、誤ったアライメントで記憶装置へアクセスする命令を実行した場合にエラーを検出する。例えば、記憶装置の３０００番地がデータアクセス禁止の記憶装置のアドレスの場合、“ｍｏｖ  （Ａ０），Ｄ０”のＡ０レジスタの値が３０００に変化していた場合、エラーを検出する。また、このようなエラーはエラーが発生するより前の記憶装置からレジスタに転送したデータが変化していた場合に発生するため、エラー要因はデータに分類される。ただし、“ｍｏｖ  （３００，Ａ０），Ｄ０”は“３００＋Ａ０”番地のデータをＤ０レジスタに転送する命令だが、“３００＋Ａ０”のように演算を含む命令でデータアクセス禁止領域アクセスを検出した場合のエラー要因は命令列に分類される。
【００３６】
図３に示すように、プロセッサは、通常処理命令列とエラー処理命令列を含む命令列およびデータが格納された記憶装置１０と、この記憶装置１０に結合され、記憶装置１０に格納された命令列をフェッチする命令フェッチ装置２０５と、命令フェッチ装置２０５がフェッチした命令列を実行し、命令実行情報信号２１１を出力する命令実行装置２０１と、一定周期ごとにクリアされないことによってプログラムの暴走を検出し、暴走検出信号２２１を出力するウォッチドックタイマ２２０と、命令実行装置２０１の命令実行情報信号２１１とウォッチドックタイマ２２０の暴走検出信号２２１から命令実行情報信号２１１により命令実行時のエラーのみを検出するエラー検出装置２０２と、エラー検出装置２０２がエラーを検出すると任意の時間の経過を計測する時間計測装置２０３と、エラー検出装置２０２がエラーを検出すると命令フェッチ抑制信号２１４を、時間計測装置２０３が任意の時間の経過を検出すると命令フェッチ再開信号２１５を命令フェッチ装置２０５に通知する命令フェッチ制御装置２０４から構成される。
【００３７】
この構成によれば、命令実行装置２０１は命令フェッチ装置２０５からの命令列読み出し要求信号２１６１によって命令列記憶装置１０１から読み出された命令列を実行し、実行時のエラーを検出するために必要な実行した命令やオペランドなどの情報を命令実行情報信号２１１として出力する。また、ウォッチドックタイマ２２０は一定周期ごとにクリアが行われない場合、プログラムの暴走を示す暴走検出信号２２１を出力する。
【００３８】
エラー検出装置２０２は、暴走検出信号２２１と命令実行情報信号２１１から図２に記載のエラー要因に分類し、ウォッチドックタイマ２２０による暴走検出を除くエラーを検出した場合はエラー信号２１２を出力する。時間計測装置２０３は、エラー信号２１２を受けて、ノイズが収束するのに十分な時間を計測し計測が完了すると時間計測完了信号２１３を出力する。命令フェッチ制御装置２０４は、エラー信号２１２を受けて命令フェッチ抑制信号２１４を出力し、時間計測完了信号２１３を受けて命令フェッチ再開信号２１５を出力する。命令フェッチ装置２０５は、命令フェッチ抑制信号２１４を受けてから命令フェッチ再開信号２１５を受けるまでの期間、命令フェッチを停止する。また、時間計測が完了し命令フェッチ装置２０５が命令フェッチを再開すると、エラー処理命令列を実行する。
【００３９】
ウォッチドックタイマ２２０による暴走検出によるエラーを検出した場合、エラー信号２１２は出力されず、プロセッサは即座にプログラムの先頭から全ての処理を再実行する。
【００４０】
以上に説明した構成において、図２のエラー要因が命令列およびデータのエラーを検出（命令実行によってエラーを検出）した場合の動作例を図４および図５を用いて説明する。また、図４は命令実行によるエラー検出時のプログラムの一例を示す図であり、図５はエラー検出時のタイミングチャートを示す図である。
【００４１】
図４において、（１）“ａｄｄ  ２３，Ｄ０”は２３（１６進）＋Ｄ０をＤ０に格納する命令である。ここで、（１）“ａｄｄ  ２３，Ｄ０”を命令列記憶装置１０１から読み出す際に、ノイズの発生によって存在しない命令列に変化した場合、エラー検出装置２０２が未定義命令によるエラーを検出し、時間計測装置２０３でノイズが収束するのに十分な時間を計測し終えるまで、命令フェッチを停止することでエラー処理の開始を停止する。時間計測が完了するとエラー処理命令列の先頭で図４の（２）“ｍｏｖ ０，Ｄ０”へ分岐し、プログラムよるエラーリカバリー処理を行う。
【００４２】
この構成での動作例を説明する。図５において、タイミングｅ０で命令列記憶装置から読み出しデータ２１７１が誤った命令列である異常命令列に変化している場合、異常命令列を実行するタイミングｔ０で命令列に起因するエラーを検出し、ノイズが収束するのに十分な期間ｔ１経過してからタイミングｔ２でエラー処理を開始する。
【００４３】
以上の動作により、命令実行を停止するのは、ノイズが発生している可能性のある期間ｔ１のみのため、通常処理命令列実行時の処理速度の低下を防ぐことが可能であり、命令実行によってエラーを検出するため記憶装置１０からの読み込みデータが連続して誤った値に変化してもエラーを検出することができ、エラー検出時には、エラー処理命令列を実行するためプログラムによるエラーリカバリー処理を実行して、ノイズ耐性を第１の従来のプロセッサより向上することができる。
【００４４】
次に、前述した構成において、図２のエラー要因が暴走検出のエラーを検出（ウォッチドックタイマによって検出）した場合の動作例を図６および図７を用いて説明する。また、図６はウォッチドックタイマによる暴走検出時のプログラムの一例を示す図であり、図７は暴走検出時のタイミングチャートを示す図である。
【００４５】
図６に示すプログラムは、（２）“ａｄｄ  ２３，Ｄ０”から（３）“ｂｎｅ  ＬＯＯＰ”までを１０回繰り返すプログラムである。また、（１）“ｍｏｖ １０，Ｄ２”によりＤ２レジスタに１０を設定することで繰り返すループ回数を設定する。ここで、（１）“ｍｏｖ １０，Ｄ２”を命令列記憶装置１０１から読み出す際に、ノイズの発生によって“ｍｏｖ １００１０，Ｄ２”変化した場合、（２）“ａｄｄ  ２３，Ｄ０”から（３）“ｂｎｅ ＬＯＯＰ”までを１０回繰り返すはずが１００１０回繰り返すこととなり、一定周期ごとにクリアしなくてはならないウォッチドックタイマのカウンタをクリアが間に合わなかった場合、エラー検出装置２０２は暴走検出に起因するエラーを検出し、即座にプログラムの先頭から全ての処理を再実行する。
【００４６】
この構成における動作例を説明する。図７において、タイミングｔ０で誤った値に変化した異常命令列を実行することでｔ１の期間プログラムが暴走し、ウォッチドックタイマのカウンタが一定周期ごとにクリアされなかったためｔ２で暴走検出信号２２１が出力され、ｔ３でプログラムの先頭番地から再実行する。ウォッチドックタイマのカウンタをクリアするのに必要な一定周期は非常に長いため、ｔ３でプログラムの先頭番地から再実行する時点ではノイズは収束している。
【００４７】
以上の動作により、すでにノイズが収束していると考えられるウォッチドックタイマによる暴走検出に起因するエラーを検出した場合は、ノイズの収束を待たないため、プログラムの先頭番地からの再実行を第２の従来のプロセッサより迅速に実行することができる。
【００４８】
なお、時間計測装置２０３で計測する時間はプログラムで変更しても良い。この場合、制御中の周辺装置やセットの状況に応じて最適な待ち時間を設定できる。このときのモータ制御命令列の例を図８に示す。この図８において、リセット直後からモータ初期設定を終えるまではモータを動作させることはないため、もしノイズで記憶装置から読み出す値が誤った値に変化したとしても連続して長時間ノイズが発生することはない、このため（２）“ｍｏｖ  Ｄ０，(EMS_COUNT)”のように時間計測装置２０３に計測させる時間として、例えば短い期間の１０に設定する。
【００４９】
次に、モータを動作させると連続して長時間ノイズが発生することがあるため、モータ制御を開始する前に（５）“ｍｏｖ Ｄ０，(EMS_COUNT)”のように時間計測装置２０３に計測させる時間として、例えば長い期間の１０００００に設定する。
【００５０】
このようにして、周辺装置やセットの状況に応じて最適な時間を設定できる。また、時間計測装置２０３で計測する最適な時間は、実際にＬＳＩを使用する環境でＬＳＩ外部のノイズを計測して値を設定することが望ましい。
【００５１】
なお、図５のタイミングｔ０でエラーを検出すると同時にＬＳＩの周辺回路を停止することで、セットの周辺装置を強制停止することが可能であることは言うまでもない。
【００５２】
また、ウォッチドックタイマによる暴走検出時、プログラムの先頭から実行するのではなくエラー処理の先頭に分岐してエラーリカバリーを行うことが可能であることは言うまでもない。
【００５３】
（第２の実施の形態）
次に、ここまでに説明した第１の実施の形態のプロセッサと同等の機能を有し、図３のエラー検出装置２０２で検出するエラーの要因を図２の命令列のみに限定し、かつエラー処理を命令列記憶装置１０１の命令列のみで構成したプロセッサについて説明する。
【００５４】
本第２の実施の形態におけるプロセッサは、第１の実施の形態のプロセッサと比較して、エラー処理に必要な命令を全て命令列記憶装置１０１に格納し、命令列記憶装置１０１がノイズの影響を受けたと考えられるエラー要因が命令列によるものの場合のみ、時間計測装置２０３によりノイズの収束を待ってエラー処理を実行する点が異なる。
【００５５】
また、図９は本第２の実施の形態におけるエラー要因ごとのプロセッサの動作を示した図であり、図１０はエラー要因ごとのプロセッサの動作を示したフローチャートである。さらに、図１１は本第２の実施の形態におけるＭＮ１０３０／ＭＮ１０３Ｓシリーズの機械語命令を用いた命令列要因によるエラー検出時のプログラムの一例、図１２は命令列を起因とするエラーを検出した場合のタイミングチャートである。そして、図１３は本第２の実施の形態におけるＭＮ１０３０／ＭＮ１０３Ｓシリーズの機械語命令を用いたデータ要因によるエラー検出時のプログラムの一例、図１４はデータを起因とするエラーを検出した場合のタイミングチャートである。
【００５６】
図１０において、プロセッサは記憶装置から命令列を読み込み（Ｓ１）、エラーを検出する（Ｓ２）。エラーを検出しなかった場合は読み込んだ命令列を実行し（Ｓ３）、エラーを検出した場合はエラー要因を判定し（Ｓ４）、命令列に起因するエラーの場合は時間計測装置によりノイズが収束するまで待った後（Ｓ５）、エラー処理命令列（Ｓ６）に分岐し、また処理Ｓ４で、データに起因するエラーを検出した場合は即座にエラー処理命令列（Ｓ６）に分岐する。
【００５７】
以上の構成において、命令列に起因するエラーを検出した場合の動作例を図３および図１１を用いて説明する。
【００５８】
図１１において、（１）“ａｄｄ  ２３，Ｄ０”は２３（１６進）＋Ｄ０をＤ０に格納する命令である。ここで、（１）“ａｄｄ  ２３，Ｄ０”を命令列記憶装置１０１から読み出す際に、ノイズの発生によって存在しない命令列に変化した場合、エラー検出装置２０２が未定義命令によるエラーを検出し、時間計測装置２０３でノイズが収束するのに十分な時間を計測し終えるまで、命令フェッチを停止することでエラー処理の開始を停止する。
【００５９】
時間計測が完了するとエラー処理命令列の先頭で図１１の（２）“ｍｏｖ ０，Ｄ０”へ分岐し、プログラムよるエラーリカバリー処理を行う。
【００６０】
この構成における動作例を説明する。図１２において、タイミングｅ０で命令列記憶装置２０１からの読み出しデータ２１７１が誤った命令列である異常命令列に変化している場合、異常命令列を実行するタイミングｔ０で命令列に起因するエラーを検出し、ノイズが収束するのに十分な期間ｔ１経過してからタイミングｔ２でエラー処理を開始する。
【００６１】
以上の動作により、エラー処理に必要な命令列が格納されている命令列記憶装置１０１がノイズの影響を受けている場合、ノイズの収束を待ってからエラー処理命令列を実行するため、エラー処理のノイズ耐性を第１の従来のプロセッサより向上することができる。
【００６２】
また、以上の構成において、データに起因するエラーを検出した場合の動作例を説明する。
【００６３】
図１３において、（１）“ｍｏｖ (２０００)，Ａ０”でデータ記憶装置１０２から本来読み出すデータが４０００（１６進）であるとする。ここで、ノイズによって誤って４００１（１６進）に変化した場合、（２）“ｍｏｖ (Ａ０)，Ｄ０”実行時にミスアライメントによるエラーを検出するが、エラーの要因がデータに起因するため、命令フェッチを停止せず即座にエラー処理命令列の先頭で図１３の（３）“ｍｏｖ ０，Ｄ０”へ分岐し、プログラムよるエラーリカバリー処理を行う。また、（３）“ｍｏｖ ０，Ｄ０”以降のエラー処理命令列は命令列記憶装置１０１の命令列のみで構成しているため、データ記憶装置１０２がノイズの影響を受けていてもエラー処理の実行ができる。
【００６４】
この構成における動作例を説明する。図１４において、タイミングｅ０でデータ記憶装置１０２からの読み出しデータ２１７２が誤ったデータに変化している場合、このデータを使った命令を実行するタイミングｔ０でデータに起因するエラーを検出するが、エラー処理命令列ではデータ記憶装置１０２のデータを使用しないため、命令フェッチを停止せず、即座にタイミングｔ２からエラー処理を開始する。
【００６５】
以上の動作により、エラー処理に必要な命令列が格納されている命令列記憶装置１０１がノイズの影響を受けていない場合、ノイズの収束を待たずにエラー処理命令列を実行するため、エラー処理を第２の従来のプロセッサより迅速に実行することができる。
【００６６】
（第３の実施の形態）
次に、ここまでに説明した第１，２の実施の形態のプロセッサと同等の機能を有し、図３のエラー検出装置２０２で検出する命令列に起因するエラーを未定義命令のみに限定したプロセッサについて説明する。
【００６７】
本第３の実施の形態におけるプロセッサは、第１の実施の形態のプロセッサと比較して、命令列エラー検出装置２０２１が未定義命令以外のエラーを検出しない点が異なる。
【００６８】
これは、検出されるエラーのうち図２のエラー種別の中で未定義命令が支配的なプロセッサにおいて有効である。もし命令列記憶装置１０１がノイズで変化しているにも係わらず未定義命令以外のエラーが検出され、即座にエラー処理が実行された場合、プログラムが暴走してウォッチドックタイマが暴走を検出することはあるが、発生確率が非常に低いため無視することができる。
【００６９】
以上の構成により、図３のエラー検出装置２０２で検出する命令列に起因するエラーが未定義命令のみに限定できるため、命令実行時にさらにエラー処理の実行を早く開始できる。
【００７０】
（第４の実施の形態）
次に、ここまでに説明した第１〜３の実施の形態のプロセッサと同等の機能を有し、図３の命令列記憶装置１０１とデータ記憶装置１０２に格納する命令列とデータを明確にしたプロセッサについて説明する。
【００７１】
本第４の実施の形態におけるプロセッサは、第１〜３の実施の形態のプロセッサと比較して、命令列は命令列記憶装置１０１にデータはデータ記憶装置１０２にのみ格納する点が異なる。
【００７２】
例えば、“ｍｏｖ (１０），Ｄ０”という命令列があるとき、この命令列は記憶装置のアドレス１０（１６進）からデータを読み出す命令だが、命令列をデータ記憶装置１０２に格納し、かつノイズによって変化して命令列に起因するエラーを検出した場合、ノイズの影響を受けているのはデータ記憶装置１０２にもかかわらずノイズ収束を待つため、エラー処理の実行が遅くなる。
【００７３】
また、“ｍｏｖ(１０），Ｄ０”という命令列があるとき、アドレス１０（１６進）が命令列記憶装置１０１のアドレス、かつノイズによって変化してデータに起因するエラーを検出した場合、ノイズの影響を受けているのは命令列記憶装置１０１にもかかわらずノイズの収束を待たないため、エラー処理が正しく実行できない。
【００７４】
そこで、命令列は命令列記憶装置１０１に格納し、データはデータ記憶装置１０２に格納することで、以上のような課題を回避する。
【００７５】
以上の構成により、エラー検出装置２０２で検出したエラーが命令列記憶装置１０１によるものかデータ記憶装置１０２によるものかが明確になる。
【００７６】
（第５の実施の形態）
次に、ここまでに説明した第１〜４の実施の形態のプロセッサと同等の機能を有し、かつノイズ源の削減を行うプロセッサについて説明する。
【００７７】
本第５の実施の形態におけるプロセッサは、第１〜４の実施の形態のプロセッサと比較して、エラーを検出してからエラー処理が完了するまでの期間、エラー処理に必要のない回路の動作を停止する点が異なる。
【００７８】
図１５は第５の実施の形態におけるプロセッサの命令フェッチとエラー検出と周辺回路における機能的な構成の一例を示すブロック図である。図１６は第４の実施の形態においてノイズが一定期間連続して発生した場合のタイミングチャートである。
【００７９】
図１５において、第１〜４の実施の形態に加え、エラー検出装置２０２がエラーを検出すると、エラー処理に不要な回路に対して不要回路停止信号２１９を出力する不要回路停止装置２０７と、不要回路停止装置２０７から不要回路停止信号２１９を受けて回路動作を停止するエラー処理に不要な不要回路２０８から構成される。
【００８０】
この構成によれば、エラー検出装置２０２がエラーを検出すると、不要回路停止装置２０７がエラー処理に不要な不要回路２０８に不要回路停止信号２１９を出力し、不要回路２０８は動作を停止する。
【００８１】
この構成における動作例を説明する。図１６において、タイミングｔ０でエラーを検出すると同時に不要回路停止信号２１９によって不要回路２０８は動作を停止する。
【００８２】
以上の動作によりエラー処理中にエラー処理に不要な回路の動作を停止することで、ノイズ源となり得る要素を削減しエラー処理を安全に実行できる。
【００８３】
なお、不要回路２０８はＬＳＩ上の周辺回路でも良く、また複数の回路でも良い。
【００８４】
また、本発明は、各実施の形態で説明した実施例に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【００８５】
本発明にかかるマイクロプロセッサは、安価にノイズ耐性を向上する組み込み用マイクロプロセッサとして有用である。
【図面の簡単な説明】
【００８６】
【図１】第１の実施の形態におけるＭＮ１０３０／ＭＮ１０３Ｓシリーズの一部の機械語命令とその動作を示す図
【図２】第１の実施の形態における命令実行時に検出するエラー要因の一例を示す図
【図３】第１の実施の形態におけるプロセッサの命令フェッチとエラー検出の機能的な構成の一例を示すブロック図
【図４】第１の実施の形態における命令実行によるエラー検出時のプログラムの一例を示す図
【図５】第１の実施の形態における命令実行によるエラー検出時のタイミングチャート
【図６】第１の実施の形態におけるウォッチドックタイマによる暴走検出時のプログラムの一例を示す図
【図７】第１の実施の形態におけるウォッチドックタイマによる暴走検出時のタイミングチャート
【図８】第１の実施の形態におけるモータ制御命令列の一例を示す図
【図９】第２の実施の形態におけるエラー要因ごとのプロセッサの動作を示す図
【図１０】第２の実施の形態におけるエラー要因ごとのプロセッサの動作を示すフローチャート
【図１１】第２の実施の形態における命令列要因によるエラー検出時のプログラムの一例
【図１２】第２の実施の形態における命令列要因によるエラー検出時のタイミングチャート
【図１３】第２の実施の形態におけるデータ要因によるエラー検出時のプログラムの一例
【図１４】第２の実施の形態におけるデータ要因によるエラー検出時のタイミングチャート
【図１５】第５の実施の形態におけるプロセッサの命令フェッチとエラー検出の機能的な構成の一例を示すブロック図
【図１６】第５の実施の形態における命令列要因によるエラー検出時のタイミングチャート
【符号の説明】
【００８７】
１０  記憶装置
２０  ＣＰＵ
１０１  命令列記憶装置
１０２  データ記憶装置
２０１      命令実行装置
２０２  エラー検出装置
２０２１  命令列エラー検出装置
２０２２  データエラー検出装置
２０３  時間計測装置
２０４  命令フェッチ制御装置
２０５  命令フェッチ装置
２０６  命令起因エラー検出装置
２０７  不要回路停止装置
２０８  不要回路
２０９  データアクセス装置
２１１  命令実行情報信号
２１２  エラー信号
２１３  時間計測完了信号
２１４  命令フェッチ抑制信号
２１５  命令フェッチ再開信号
２１６１  命令列記憶装置の読み出し要求信号
２１６２  データ記憶装置の読み出し要求信号
２１７  読み出しデータ
２１７１  命令列記憶装置の読み出しデータ
２１７２  データ記憶装置の読み出しデータ
２１８１  命令列
２１８２  データ
２１９  不要回路停止信号
２２０  ウォッチドックタイマ
２２１  暴走検出信号
３０１  アドレス
３０２  記憶装置データ
３０３  一致信号
３０４  ラッチ回路
３０５  一致検出回路
【図１】
2010176361.tif 000003
【図２】
2010176361.tif 000004
【図３】
2010176361.tif 000005
【図４】
2010176361.tif 000006
【図５】
2010176361.tif 000007
【図６】
2010176361.tif 000008
【図７】
2010176361.tif 000009
【図８】
2010176361.tif 000010
【図９】
2010176361.tif 000011
【図１０】
2010176361.tif 000012
【図１１】
2010176361.tif 000013
【図１２】
2010176361.tif 000014
【図１３】
2010176361.tif 000015
【図１４】
2010176361.tif 000016
【図１５】
2010176361.tif 000017
【図１６】
2010176361.tif 000018