(57)【要約】【課題】本発明は不当命令処理方法及びプロセッサに関し、比較的簡単、且つ、安価な構成を用い、プログラムサイズの増大や複雑な判定処理を行うことなく、エラーが発生する直前までに実行していた処理との連続性を保ちつつシステムの利用効率を悪化させない不当命令処理方法及びプロセッサを提供することを目的とする。【解決手段】プログラムを実行するプロセッサにおける不当命令処理方法において、不当命令の実行が検出されると、不当命令の前の命令からリトライを行うように構成する。【選択図】　　　図１
2004062309.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令の実行を検出する検出ステップと、
該検出ステップにより不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライステップとを含むことを特徴とする、不当命令処理方法。
【請求項２】
プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令の実行を検出する検出ステップと、
該検出ステップにより不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライステップとを含むことを特徴とする、不当命令処理方法。
【請求項３】
プログラムを実行するプロセッサであって、
不当命令の実行を検出する検出手段と、
該検出手段により不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライ手段とを備えたことを特徴とする、プロセッサ。
【請求項４】
プログラムを実行するプロセッサであって、
不当命令の実行を検出する検出手段と、
該検出手段により不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライ手段とを備えたことを特徴とする、プロセッサ。
【請求項５】
プログラムを実行するプロセッサであって、
不当命令のリードを検出する検出手段と、
該検出手段により不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リード手段とを備えたことを特徴とする、プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は不当命令処理方法及びプロセッサに係り、特にプロセッサの不当命令（イリーガルインストラクション）を処理する不当命令処理方法及びそのような不当命令処理方法を採用するプロセッサに関する。
【０００２】
【従来の技術】
プロセッサは、クロック抜けや内部プログラムバスのクロストーク等の要因により、不当命令を実行することがある。不当命令は、パリティチェック、命令でコード時のオペレーションコードチェック、コードの全ビットが例えば００００ｈ又はＦＦＦＦｈと同一であるかのチェック等を行う不当命令検出回路により検出される。不当命令検出回路により不当命令が検出されると、プログラムの介在により、プロセッサの再起動、エラー発生時に実行していた一連の処理のリトライ等が行われる。
【０００３】
特願昭５５−８７２５１号公報には、２つのプロセッサを用いる不当命令処理方法が提案されている。この第１の提案方法では、通常は、メインプロセッサで命令を実行するが、エラーが発生してパリティチェック回路等により検出されると、サブプロセッサによりリトライを行う。リトライ時には、メインプロセッサのレジスタ内容をサブプロセッサにコピーし、エラーの発生した命令から再度実行し直す。
【０００４】
特願昭５７−６２４４６号公報には、退避用記憶装置を用いる不当命令処理方法が提案されている。この第２の提案方法では、エラーが発生すると、レジスタ内容を記憶装置へ退避して処理を中断すると共に、オペレータにエラー発生を報告する。エラーは、パリティチェック回路等により検出される。オペレータがエラーの原因を取り除いた後は、退避しておいたレジスタ内容に基づいて中断した処理を再開する。
【０００５】
特願昭５８−１５８７４７号公報には、チェックサムを用いる不当命令処理方法が提案されている。この第３の提案方法では、プログラムを実行し、実行後にチェックサムによりプログラムの正当性を評価する。チェックサムは真値と比較され、真値と異なる場合には、プログラムの実行前に予め退避させておいたデータに基づいてプログラムを再実行する。ノイズ等により突発的に発生したエラーの場合、この再実行によりエラーを救済できる可能性が高い。再実行を行ってもエラーが発生する場合には、エラー処理ルーチンへジャンプし、プロセッサを停止させる。
【０００６】
【発明が解決しようとする課題】
第１の提案方法は、２つのプロセッサを用いるので、ハードウェア構成及びプロセッサの切り替え制御が複雑になると共に、安価なシステムを構成することが難しいという問題があった。更に、リトライを行う場合には、処理の先頭を示すチェックポイントをプログラム上の随所に設定する必要があり、プログラムサイズを増大させると共に、複雑な判定処理が必要になるという問題もあった。
【０００７】
第２の提案方法は、オペレータがエラーの原因を取り除いた後に、退避しておいたレジスタ内容に基づいて中断した処理を再開するため、処理に時間がかかり、エラーが発生する直前までに実行していた処理との連続性が保てず、システムの利用効率が悪いという問題があった。
【０００８】
第３の提案方法は、チェックサムを真値と比較し、真値と異なる場合にプログラムの実行前に予め退避させておいたデータに基づいてプログラムを再実行するため、エラーが発生する直前までに実行していた処理との連続性が保てないと共に、システムの利用効率が悪いという問題があった。更に、リトライを行う場合には、処理の先頭を示すチェックポイントをプログラム上の随所に設定する必要があり、プログラムサイズを増大させると共に、複雑な判定処理が必要になるという問題もあった。
【０００９】
そこで、本発明は、比較的簡単、且つ、安価な構成を用い、プログラムサイズの増大や複雑な判定処理を行うことなく、エラーが発生する直前までに実行していた処理との連続性を保ちつつシステムの利用効率を悪化させない不当命令処理方法及びプロセッサを提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記の課題は、プログラムを実行するプロセッサにおける不当命令処理方法であって、不当命令の実行を検出する検出ステップと、該検出ステップにより不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライステップとを含むことを特徴とする不当命令処理方法によって達成できる。
【００１１】
上記の課題は、プログラムを実行するプロセッサにおける不当命令処理方法であって、不当命令の実行を検出する検出ステップと、該検出ステップにより不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライステップとを含むことを特徴とする不当命令処理方法によっても達成できる。
【００１２】
上記の課題は、プログラムを実行するプロセッサにおける不当命令処理方法であって、不当命令のリードを検出する検出ステップと、該検出ステップにより不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リードステップとを含むことを特徴とする不当命令処理方法によっても達成できる。
【００１３】
上記の課題は、プログラムを実行するプロセッサであって、不当命令の実行を検出する検出手段と、該検出手段により不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライ手段とを備えたことを特徴とするプロセッサによっても達成できる。
【００１４】
上記の課題は、プログラムを実行するプロセッサであって、不当命令の実行を検出する検出手段と、該検出手段により不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライ手段とを備えたことを特徴とするプロセッサによっても達成できる。
【００１５】
上記の課題は、プログラムを実行するプロセッサであって、不当命令のリードを検出する検出手段と、該検出手段により不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リード手段とを備えたことを特徴とするプロセッサによっても達成できる。
【００１６】
従って、本発明によれば、比較的簡単、且つ、安価な構成を用い、プログラムサイズの増大や複雑な判定処理を行うことなく、エラーが発生する直前までに実行していた処理との連続性を保ちつつシステムの利用効率を悪化させない不当命令処理方法及びプロセッサを実現することができる。
【００１７】
【発明の実施の形態】
本発明になる不当命令処理方法及び本発明になるプロセッサの実施例を、以下に図面と共に説明する。
【００１８】
【実施例】
図１は、本発明になるプロセッサの第１実施例の概略構成を示すブロック図である。プロセッサの第１実施例では、本発明がＣＰＵに適用され、本発明になる不当命令処理方法の第１実施例を採用する。
【００１９】
図１において、プロセッサ１１は、パイプライン処理部１２、ＡＬＵ１３、セレクタ１４，１５、レジスタ部１６−１、データバス１７及びアドレスバス１８からなる。パイプライン処理部１２は、命令を読み込み保存するリード部（Ｒｅａｄ）１２１、リード部１２１で読み込まれた命令を解読し、命令がサポートされているものか否かを、即ち、命令が正当か不当かを判断するデコード部（Ｄｅｃｏｄｅ）１２２、及びデコード部１２２で解読された命令を実行することによってプロセッサ１１内の各部へ制御信号を供給する実行部（Ｅｘｅｃｕｔｅ）１２３からなる。実行部１２３の出力する制御信号は、セレクタ１４，１５にも供給される。
【００２０】
レジスタ部１６−１は、現在のデータ用レジスタ（以下、現在レジスタと言う）１６０と、前回のデータ用レジスタ（以下、前回レジスタと言う）１６１とからなる。各レジスタ１６０，１６１は、ＡＬＵ１３の計算結果を保存するアキュムレータＡＣＣ、汎用レジスタｒ１，ｒ２、スタックのアドレスを示すスタックポインタＳＰ、割り込みステータスや割り込みイネーブル等を表す制御フラグＦｌａｇ及び次にどのアドレスの命令を読み込むかを記憶しているプログラムカウンタＰＣからなる。スタックポインタＳＰは、レジスタの値や割り込みの戻りアドレス等を記憶するメモリ領域のアドレスを示すポインタである。現在レジスタ１６０及び前回レジスタ１６１のどちらをデータバス１７及びアドレスバス１８に接続するかは、実行部１２３からセレクタ１４，１５に供給される制御信号により制御される。
【００２１】
図２は、本実施例の動作を説明するフローチャートである。同図中、ステップＳ１は、リード部１２１で読み込まれた命令を実行し、ステップＳ２は、読み込まれた命令をデコード部１２２で解読して実行した命令が不当であるか否かを判定する。ステップＳ２の判定結果がＮＯであると、ステップＳ３は実行部１２３で命令を実行し、ＡＬＵ１３の計算結果を現在レジスタ１６０のアキュムレータＡＣＣに保存する。又、ステップＳ４は、現在レジスタ１６０のプログラムカウンタＰＣの値を進めて、処理はステップＳ１へ戻る。
【００２２】
他方、読み込まれた命令をデコード部１２２で解読して実行した命令が不当であり、ステップＳ２の判定結果がＹＥＳであると、ステップＳ５は、セレクタ１４，１５を制御することで、現在レジスタ１６０のアキュムレータＡＣＣ、プログラムカウンタＰＣ等の内容を、前回レジスタ１６１のアキュムレータＡＣＣ、プログラムカウンタＰＣ等の内容と置き換え、処理はステップＳ１へ戻る。これにより、不当命令が発生すると、前回レジスタ１６１に保存されている前回の処理結果で現在レジスタ１６０のプログラムカウンタＰＣやアキュムレータＡＣＣ等の内容を置き換えて不当命令が発生した処理をやり直す。不当命令が発生した処理からリトライが行われるので、不当命令が発生したことによる中断を最小限に抑えることができる。
【００２３】
図３は、第１実施例の動作を説明する図である。又、図４は、第１実施例のレジスタ内容を説明する図である。
【００２４】
図３に示すように、現在レジスタ１６０のプログラムカウンタＰＣの値が「８００２」の時に不当命令が発生したとすると、本実施例では、前回レジスタ１６１のプログラムカウンタＰＣの「８００１」なる値に置き換えて、「８００１」なるプログラムカウンタＰＣの値からリトライを行う。
【００２５】
つまり、図４中、（ａ）に示すように現在レジスタ１６０のプログラムカウンタＰＣの値が「８０００」の場合及び（ｂ）に示すように現在レジスタ１６０のプログラムカウンタＰＣの値が「８００１」の場合には、通常通り処理が行われるが、（ｃ）に示すように現在レジスタ１６０のプログラムカウンタＰＣの値が「８００２」の場合に不当命令が発生したとする。この場合、同図（ｃ）に示す前回レジスタ１６１のプログラムカウンタＰＣの「８００１」なる値を、同図（ｄ）に示すように、現在レジスタ１６０のプログラムカウンタＰＣの値と置き換える。同様に、同図（ｃ）に示す現在レジスタ１６０のアキュムレータＡＣＣ、汎用レジスタｒ１，ｒ２及び制御フラグＦｌａｇも、同図（ｃ）に示す前回レジスタ１６１のアキュムレータＡＣＣ、汎用レジスタｒ１，ｒ２及び制御フラグＦｌａｇの値と置き換えられ、現在レジスタ１６０のレジスタ内容は同図（ｄ）に示すようになる。リトライは、同図（ｄ）に示すように現在レジスタ１６０のプログラムカウンタＰＣの値が「８００１」のところから行われ、リトライが成功すれば、現在レジスタ１６０のレジスタ内容は同図（ｅ）に示すようになり、以下同様に処理が継続される。
【００２６】
このように、本実施例では、不当命令が発生した場合でも、直ちにプログラムを中断せずに、数回リトライを行うことによって不当命令が解消されれば、プログラムを継続して実行できる。不当命令の発生は、プロセッサのパイプライン処理部１２に内臓されているデコーダ部１２２から出力される不当命令フラグにより検出することができる。従って、不当命令が発生したことによるエラーの検出からリトライまで、プログラムの介在を必要とせず、処理の連続性が保たれる。又、例えば上記第１の提案方法のように２つのプロセッサを用いる場合と比較すると、ハードウェア構成及び制御が簡単であり、安価にシステムを構成可能である。
【００２７】
図５は、本発明になるプロセッサの第２実施例の概略構成を示すブロック図である。プロセッサの第２実施例では、本発明がＣＰＵに適用され、本発明になる不当命令処理方法の第２実施例を採用する。
【００２８】
図５中、図１と同一部分には同一符号を付し、その説明は省略する。本実施例では、現在レジスタ１６０のみからなるレジスタ部１６−２が設けられている。
【００２９】
図６は、本実施例の動作を説明するフローチャートである。同図中、ステップＳ１１は、パイプライン処理部１２のデコード部１２２が不当命令を実行すると割り込みを発生する。ステップＳ１２は、レジスタ部１６−２の内部レジスタをスタック（Ｓｔａｃｋ）ｎにプッシュ（ｐｕｓｈ）する。ステップＳ１３は、割り込み処理を行い、ステップＳ１４は、不当命令による割り込みであるか否かを判定する。ステップＳ１４の判定結果がＮＯであると、ステップＳ１５は、スタックｎからポップ（ｐｏｐ）し、処理はステップＳ１１へ戻る。他方、ステップＳ１４の判定結果がＹＥＳであると、ステップＳ１６は、スタックｎ−１からポップし、処理はステップＳ１１へ戻る。
【００３０】
図７は、比較のために、従来例のレジスタ内容を説明する図である。従来例では、同図（ａ）に示すように、内部レジスタをスタックｎにプッシュ（ｐｕｓｈ）し、不当命令であると、同図（ｂ）に示すように、スタックｎからポップ（ｐｏｐ）する。
【００３１】
図８は、第２実施例のレジスタ内容を説明する図である。本実施例では、同図ａ）に示すように、内部レジスタをスタックｎにプッシュ（ｐｕｓｈ）し、不当命令であると、同図（ｂ）に示すように、スタックｎ−１からポップする。
【００３２】
このように、本実施例では、不当命令による割り込みから戻る（リターンする）際に、スタックポインタＳＰの示す命令よりも前にリターンすることにより、割り込みが発生する前の状態まで制御を戻してから不当命令を含むサブルーチンを再実行する。つまり、不当命令のサブルーチンより１つ前のサブルーチンからリトライを実行する。サブルーチンの再実行時には、スタックにセーブしていた割り込みステータス等の制御フラグＦｌａｇ、汎用レジスタｒ１，ｒ２、アキュムレータＡＣＣ等を用いる。この場合、プロセッサ２１の基本構成は既存のプロセッサと同じとし、不当命令発生時にリターンする場所を変更可能とする機能を付加するだけで良いので、上記第１実施例よりハードウェアの構成及び制御が簡単であり、システムを更に安価に構成可能である。又、上記第３の提案方法と比較すると、本実施例は不当命令が発生するとプログラムを最後まで実行する前にリトライを行うため、不当命令発生以降の実行価値のないプログラムを実行する時間を省略可能である。
【００３３】
図９は、本発明になるプロセッサの第３実施例の概略構成を示すブロック図である。プロセッサの第３実施例では、本発明がＣＰＵに適用され、本発明になる不当命令処理方法の第３実施例を採用する。
【００３４】
図９中、図１及び図５と同一部分には同一符号を付し、その説明は省略する。本実施例では、現在レジスタ１６０のみからなるレジスタ部１６−２が設けられている。
【００３５】
図１０は、本実施例の動作を説明するフローチャートである。同図中、ステップＳ２１は、パイプライン処理部１２のリード部１２１により命令を読み込み保存する。ステップＳ２２は、パイプライン処理部１２のデコード部１２２によりリード部１２１で読み込まれた命令を解読する。ステップＳ２３は、デコード部１２２により、解読された命令がサポートされているものか否かを、即ち、命令が正当か不当かを判定する。ステップＳ２３の判定結果がＮＯであると、ステップＳ２４は、パイプライン処理部１２の実行部１２３によりデコード部１２２で解読された命令を実行することによってプロセッサ１１内の各部へ制御信号を供給する。又、ステップＳ２５は、レジスタ部１６−２のプログラムカウンタＰＣの値を進めて、処理はステップＳ２１へ戻る。
【００３６】
他方、デコード部１２２により不当命令が検出されてステップＳ２３の判定結果がＹＥＳであると、ステップＳ２６は、不当命令を実行することなく、パイプライン処理部１２のフラッシュを行う。又、ステップＳ２７は、レジスタ部１６−２のプログラムカウンタＰＣの値を、不当命令となった命令を再度リードできるような値に、即ち、リード部１２１を構成する段数分プログラムカウンタＰＣの値を戻し、処理はステップＳ２１へ戻る。これにより、ステップＳ２１は、不当命令となった命令を再度リードし、上記と同様にステップＳ２２以降の処理が行われる。
【００３７】
図１１〜図１３は、第３実施例の具体的な動作を説明する図である。
【００３８】
図１１中、Ｃａｃｈｅはパイプライン処理部１２のリード部１２１によりリードされリード部１２１内のキャッシュメモリに格納された命令のコードを示し、Ｄｅｃｏｄｅはパイプライン処理部１２のデコード部１２２により解読された命令を示し、Ｅｘｅｃｕｔｅはパイプライン処理部１２の実行部１２３により実行された結果を示す。図１１（ａ）は、パイプライン処理部１２のデコード部１２２において不当命令「ＦＦＦＦ」が検出された状態を示し、図１０においてステップＳ２３の判定結果がＹＥＳの場合に対応する。図１１（ｂ）は、パイプライン処理部１２のフラッシュが行われた状態を示し、図１０においてステップＳ２６が行われた場合に対応する。又、図１１（ｃ）は、パイプライン処理部１２において不当命令となった命令を再度リードした状態を示し、図１０においてステップＳ２６の後にステップＳ２７及びステップＳ２１が行われた場合に対応する。図１１（ｃ）の状態の後に命令が実行されるので、同図のＥｘｅｃｕｔｅの欄にはまだ命令を実行した結果が示されていない。
【００３９】
図１２は、パイプライン処理部１２内の処理の流れを示す。同図中、リード部１２１は、ステップＳ３１で命令をフラッシュＲＯＭ等からなるインストラクションメモリ（図９では図示省略）からリードする。デコード部１２２は、ステップＳ３２でリードされた命令をデコード部１２２内のインストラクションＦＩＦＯ等に格納し、ステップＳ３２で格納された命令を解読する。ステップＳ３４は、解読された命令に応じてレジスタ部１６−２をアクセスしてインストラクションメモリからリードする命令のアドレスを指定する。実行部１２３は、ステップＳ３３で解読された命令を実行し、命令を実行した結果得られたデータが出力される。
【００４０】
図１３は、パイプライン処理部１２内のリード部１２１でリードされる命令、デコード部１２２で解読される命令及び実行部１２３で実行される命令を示す図である。同図中、Ｉ１〜Ｉ６は命令を示し、時間は左側の欄から右側の欄の方向へ進むものとする。説明の便宜上、同図では、３つの連続する時点に対応する欄が示されている。状態ＳＴ１〜ＳＴ４では、通常のパイプライン処理のリード、デコード及び実行が行われているが、状態ＳＴ４では、何らかの理由で命令Ｉ４が不当命令Ｉ４´に変化してしまい、不当命令Ｉ４´がリードされる。このため、状態ＳＴ５では、デコード部１２２が不当命令Ｉ４´を検出し、状態ＳＴ５〜状態ＳＴ７へ移る。つまり、状態ＳＴ６のように、実行部１２３が不当命令Ｉ４´を実行することはない。状態ＳＴ７では、状態ＳＴ５以降の命令のリードを停止し、不当命令Ｉ４´を実行することなく、パイプライン処理部１２に残っている命令をフラッシュする。状態ＳＴ８では、命令Ｉ４を再度リードし、この場合は命令Ｉ４が正常にリードされるので、状態ＳＴ９，ＳＴ１０では、通常のパイプライン処理のリード、デコード及び実行が行われる。
【００４１】
上記第１実施例では、不当命令を実行したことを検出すると、プログラムの介在なしに１つ前のステップからリトライを行い、上記第２実施例では、不当命令を実行したことを検出すると、プログラムの介在なしに１つ前のサブルーチンからリトライを行う。これに対し、本実施例では、不当命令がリードされたことを検出されると、プログラムの介在なしにリードした不当命令を実行せずに再度リードを行う。
【００４２】
尚、本発明は、以下に付記する発明をも包含するものである。
【００４３】
（付記１）　プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令の実行を検出する検出ステップと、
該検出ステップにより不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライステップとを含むことを特徴とする、不当命令処理方法。
【００４４】
（付記２）　前記リトライステップは、前記検出ステップにより不当命令の実行が検出されると、少なくともアキュムレータ、スタックポインタ及びプログラムカウンタを含む現在のレジスタ内容を前回のレジスタ内容に置き換えてからリトライを行うことを特徴とする、付記１記載の不当命令処理方法。
【００４５】
（付記３）　プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令の実行を検出する検出ステップと、
該検出ステップにより不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライステップとを含むことを特徴とする、不当命令処理方法。
【００４６】
（付記４）　前記リトライステップは、前記検出ステップにより不当命令の実行が検出されると、該不当命令による割り込みからリターンする際に、スタックポインタの示す命令よりも前にリターンすることにより、該割り込みが発生する前の状態まで制御を戻してから該不当命令を含むサブルーチンを再実行することを特徴とする、付記３記載の不当命令処理方法。
【００４７】
（付記５）　プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令のリードを検出する検出ステップと、
該検出ステップにより不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リードステップとを含むことを特徴とする、不当命令処理方法。
【００４８】
（付記６）　前記検出ステップは、リードされた命令をデコードすることで前記不当命令を検出することを特徴とする、付記５記載の不当命令処理方法。
【００４９】
（付記７）　前記再リードステップは、前記検出ステップにより不当命令のリードが検出されると、パイプライン処理部をフラッシュしてプログラムカウンタを調整するステップと、調整されたプログラムカウンタの値に基づいて不当命令として検出された命令を再度リードするステップとを含むことを特徴とする、付記５又は６記載の不当命令処理方法。
【００５０】
（付記８）　プログラムを実行するプロセッサであって、
不当命令の実行を検出する検出手段と、
該検出手段により不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライ手段とを備えたことを特徴とする、プロセッサ。
【００５１】
（付記９）　少なくともアキュムレータ、スタックポインタ及びプログラムカウンタを含む現在及び全快のレジスタ内容を格納するレジスタ部を更に備え、前記リトライ手段は、前記検出手段により不当命令の実行が検出されると、該レジスタ部の現在のレジスタ内容を前回のレジスタ内容に置き換えてからリトライを行うことを特徴とする、付記８記載のプロセッサ。
【００５２】
（付記１０）　プログラムを実行するプロセッサであって、
不当命令の実行を検出する検出手段と、
該検出手段により不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライ手段とを備えたことを特徴とする、プロセッサ。
【００５３】
（付記１１）　前記リトライ手段は、前記検出手段により不当命令の実行が検出されると、該不当命令による割り込みからリターンする際に、スタックポインタの示す命令よりも前にリターンすることにより、該割り込みが発生する前の状態まで制御を戻してから該不当命令を含むサブルーチンを再実行することを特徴とする、付記１０記載のプロセッサ。
【００５４】
（付記１２）　プログラムを実行するプロセッサであって、
不当命令のリードを検出する検出手段と、
該検出手段により不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リード手段とを備えたことを特徴とする、プロセッサ。
【００５５】
（付記１３）　前記検出手段は、リードされた命令をデコードすることで前記不当命令を検出することを特徴とする、付記１２記載のプロセッサ。
【００５６】
（付記１４）　リード部、デコード部及び実行部からなるパイプライン処理部を更に備え、
前記検出手段は、該リード部及び該デコード部により構成され、
前記再リード手段は、該検出手段により不当命令のリードが検出されると、該パイプライン処理部をフラッシュしてプログラムカウンタを調整する手段と、調整されたプログラムカウンタの値に基づいて不当命令として検出された命令を再度リードする手段を有することを特徴とする、付記１２又は１３記載のプロセッサ。
【００５７】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、種々の変形及び改良が可能であることは、言うまでもない。
【００５８】
【発明の効果】
本発明によれば、比較的簡単、且つ、安価な構成を用い、プログラムサイズの増大や複雑な判定処理を行うことなく、エラーが発生する直前までに実行していた処理との連続性を保ちつつシステムの利用効率を悪化させない不当命令処理方法及びプロセッサを実現することができる。
【図面の簡単な説明】
【図１】本発明になるプロセッサの第１実施例の概略構成を示すブロック図である。
【図２】第１実施例の動作を説明するフローチャートである。
【図３】第１実施例の動作を説明する図である。
【図４】第１実施例のレジスタ内容を説明する図である。
【図５】本発明になるプロセッサの第２実施例の概略構成を示すブロック図である。
【図６】第２実施例の動作を説明するフローチャートである。
【図７】従来例のレジスタ内容を説明する図である。
【図８】第２実施例のレジスタ内容を説明する図である。
【図９】本発明になるプロセッサの第３実施例の概略構成を示すブロック図である。
【図１０】第３実施例の動作を説明するフローチャートである。
【図１１】第３実施例の動作を説明する図である。
【図１２】第３実施例の動作を説明する図である。
【図１３】第３実施例の動作を説明する図である。
【符号の説明】
１１，２１，３１　　　プロセッサ
１２　　　パイプライン処理部
１３　　　ＡＬＵ
１４，１５　　　セレクタ
１６−１，１６−２　　　レジスタ部
１７　　　データバス
１８　　　アドレスバス
【図１】
2004062309.tif 000003
【図２】
2004062309.tif 000004
【図３】
2004062309.tif 000005
【図４】
2004062309.tif 000006
【図５】
2004062309.tif 000007
【図６】
2004062309.tif 000008
【図７】
2004062309.tif 000009
【図８】
2004062309.tif 000010
【図９】
2004062309.tif 000011
【図１０】
2004062309.tif 000012
【図１１】
2004062309.tif 000013
【図１２】
2004062309.tif 000014
【図１３】
2004062309.tif 000015