JP2004062309A - 不当命令処理方法及びプロセッサ - Google Patents
不当命令処理方法及びプロセッサ Download PDFInfo
- Publication number
- JP2004062309A JP2004062309A JP2002216601A JP2002216601A JP2004062309A JP 2004062309 A JP2004062309 A JP 2004062309A JP 2002216601 A JP2002216601 A JP 2002216601A JP 2002216601 A JP2002216601 A JP 2002216601A JP 2004062309 A JP2004062309 A JP 2004062309A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- illegal instruction
- illegal
- processor
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title abstract description 37
- 238000003672 processing method Methods 0.000 claims description 20
- 238000001514 detection method Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 abstract description 18
- 230000006866 deterioration Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 19
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【解決手段】プログラムを実行するプロセッサにおける不当命令処理方法において、不当命令の実行が検出されると、不当命令の前の命令からリトライを行うように構成する。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は不当命令処理方法及びプロセッサに係り、特にプロセッサの不当命令(イリーガルインストラクション)を処理する不当命令処理方法及びそのような不当命令処理方法を採用するプロセッサに関する。
【0002】
【従来の技術】
プロセッサは、クロック抜けや内部プログラムバスのクロストーク等の要因により、不当命令を実行することがある。不当命令は、パリティチェック、命令でコード時のオペレーションコードチェック、コードの全ビットが例えば0000h又はFFFFhと同一であるかのチェック等を行う不当命令検出回路により検出される。不当命令検出回路により不当命令が検出されると、プログラムの介在により、プロセッサの再起動、エラー発生時に実行していた一連の処理のリトライ等が行われる。
【0003】
特願昭55−87251号公報には、2つのプロセッサを用いる不当命令処理方法が提案されている。この第1の提案方法では、通常は、メインプロセッサで命令を実行するが、エラーが発生してパリティチェック回路等により検出されると、サブプロセッサによりリトライを行う。リトライ時には、メインプロセッサのレジスタ内容をサブプロセッサにコピーし、エラーの発生した命令から再度実行し直す。
【0004】
特願昭57−62446号公報には、退避用記憶装置を用いる不当命令処理方法が提案されている。この第2の提案方法では、エラーが発生すると、レジスタ内容を記憶装置へ退避して処理を中断すると共に、オペレータにエラー発生を報告する。エラーは、パリティチェック回路等により検出される。オペレータがエラーの原因を取り除いた後は、退避しておいたレジスタ内容に基づいて中断した処理を再開する。
【0005】
特願昭58−158747号公報には、チェックサムを用いる不当命令処理方法が提案されている。この第3の提案方法では、プログラムを実行し、実行後にチェックサムによりプログラムの正当性を評価する。チェックサムは真値と比較され、真値と異なる場合には、プログラムの実行前に予め退避させておいたデータに基づいてプログラムを再実行する。ノイズ等により突発的に発生したエラーの場合、この再実行によりエラーを救済できる可能性が高い。再実行を行ってもエラーが発生する場合には、エラー処理ルーチンへジャンプし、プロセッサを停止させる。
【0006】
【発明が解決しようとする課題】
第1の提案方法は、2つのプロセッサを用いるので、ハードウェア構成及びプロセッサの切り替え制御が複雑になると共に、安価なシステムを構成することが難しいという問題があった。更に、リトライを行う場合には、処理の先頭を示すチェックポイントをプログラム上の随所に設定する必要があり、プログラムサイズを増大させると共に、複雑な判定処理が必要になるという問題もあった。
【0007】
第2の提案方法は、オペレータがエラーの原因を取り除いた後に、退避しておいたレジスタ内容に基づいて中断した処理を再開するため、処理に時間がかかり、エラーが発生する直前までに実行していた処理との連続性が保てず、システムの利用効率が悪いという問題があった。
【0008】
第3の提案方法は、チェックサムを真値と比較し、真値と異なる場合にプログラムの実行前に予め退避させておいたデータに基づいてプログラムを再実行するため、エラーが発生する直前までに実行していた処理との連続性が保てないと共に、システムの利用効率が悪いという問題があった。更に、リトライを行う場合には、処理の先頭を示すチェックポイントをプログラム上の随所に設定する必要があり、プログラムサイズを増大させると共に、複雑な判定処理が必要になるという問題もあった。
【0009】
そこで、本発明は、比較的簡単、且つ、安価な構成を用い、プログラムサイズの増大や複雑な判定処理を行うことなく、エラーが発生する直前までに実行していた処理との連続性を保ちつつシステムの利用効率を悪化させない不当命令処理方法及びプロセッサを提供することを目的とする。
【0010】
【課題を解決するための手段】
上記の課題は、プログラムを実行するプロセッサにおける不当命令処理方法であって、不当命令の実行を検出する検出ステップと、該検出ステップにより不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライステップとを含むことを特徴とする不当命令処理方法によって達成できる。
【0011】
上記の課題は、プログラムを実行するプロセッサにおける不当命令処理方法であって、不当命令の実行を検出する検出ステップと、該検出ステップにより不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライステップとを含むことを特徴とする不当命令処理方法によっても達成できる。
【0012】
上記の課題は、プログラムを実行するプロセッサにおける不当命令処理方法であって、不当命令のリードを検出する検出ステップと、該検出ステップにより不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リードステップとを含むことを特徴とする不当命令処理方法によっても達成できる。
【0013】
上記の課題は、プログラムを実行するプロセッサであって、不当命令の実行を検出する検出手段と、該検出手段により不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライ手段とを備えたことを特徴とするプロセッサによっても達成できる。
【0014】
上記の課題は、プログラムを実行するプロセッサであって、不当命令の実行を検出する検出手段と、該検出手段により不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライ手段とを備えたことを特徴とするプロセッサによっても達成できる。
【0015】
上記の課題は、プログラムを実行するプロセッサであって、不当命令のリードを検出する検出手段と、該検出手段により不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リード手段とを備えたことを特徴とするプロセッサによっても達成できる。
【0016】
従って、本発明によれば、比較的簡単、且つ、安価な構成を用い、プログラムサイズの増大や複雑な判定処理を行うことなく、エラーが発生する直前までに実行していた処理との連続性を保ちつつシステムの利用効率を悪化させない不当命令処理方法及びプロセッサを実現することができる。
【0017】
【発明の実施の形態】
本発明になる不当命令処理方法及び本発明になるプロセッサの実施例を、以下に図面と共に説明する。
【0018】
【実施例】
図1は、本発明になるプロセッサの第1実施例の概略構成を示すブロック図である。プロセッサの第1実施例では、本発明がCPUに適用され、本発明になる不当命令処理方法の第1実施例を採用する。
【0019】
図1において、プロセッサ11は、パイプライン処理部12、ALU13、セレクタ14,15、レジスタ部16−1、データバス17及びアドレスバス18からなる。パイプライン処理部12は、命令を読み込み保存するリード部(Read)121、リード部121で読み込まれた命令を解読し、命令がサポートされているものか否かを、即ち、命令が正当か不当かを判断するデコード部(Decode)122、及びデコード部122で解読された命令を実行することによってプロセッサ11内の各部へ制御信号を供給する実行部(Execute)123からなる。実行部123の出力する制御信号は、セレクタ14,15にも供給される。
【0020】
レジスタ部16−1は、現在のデータ用レジスタ(以下、現在レジスタと言う)160と、前回のデータ用レジスタ(以下、前回レジスタと言う)161とからなる。各レジスタ160,161は、ALU13の計算結果を保存するアキュムレータACC、汎用レジスタr1,r2、スタックのアドレスを示すスタックポインタSP、割り込みステータスや割り込みイネーブル等を表す制御フラグFlag及び次にどのアドレスの命令を読み込むかを記憶しているプログラムカウンタPCからなる。スタックポインタSPは、レジスタの値や割り込みの戻りアドレス等を記憶するメモリ領域のアドレスを示すポインタである。現在レジスタ160及び前回レジスタ161のどちらをデータバス17及びアドレスバス18に接続するかは、実行部123からセレクタ14,15に供給される制御信号により制御される。
【0021】
図2は、本実施例の動作を説明するフローチャートである。同図中、ステップS1は、リード部121で読み込まれた命令を実行し、ステップS2は、読み込まれた命令をデコード部122で解読して実行した命令が不当であるか否かを判定する。ステップS2の判定結果がNOであると、ステップS3は実行部123で命令を実行し、ALU13の計算結果を現在レジスタ160のアキュムレータACCに保存する。又、ステップS4は、現在レジスタ160のプログラムカウンタPCの値を進めて、処理はステップS1へ戻る。
【0022】
他方、読み込まれた命令をデコード部122で解読して実行した命令が不当であり、ステップS2の判定結果がYESであると、ステップS5は、セレクタ14,15を制御することで、現在レジスタ160のアキュムレータACC、プログラムカウンタPC等の内容を、前回レジスタ161のアキュムレータACC、プログラムカウンタPC等の内容と置き換え、処理はステップS1へ戻る。これにより、不当命令が発生すると、前回レジスタ161に保存されている前回の処理結果で現在レジスタ160のプログラムカウンタPCやアキュムレータACC等の内容を置き換えて不当命令が発生した処理をやり直す。不当命令が発生した処理からリトライが行われるので、不当命令が発生したことによる中断を最小限に抑えることができる。
【0023】
図3は、第1実施例の動作を説明する図である。又、図4は、第1実施例のレジスタ内容を説明する図である。
【0024】
図3に示すように、現在レジスタ160のプログラムカウンタPCの値が「8002」の時に不当命令が発生したとすると、本実施例では、前回レジスタ161のプログラムカウンタPCの「8001」なる値に置き換えて、「8001」なるプログラムカウンタPCの値からリトライを行う。
【0025】
つまり、図4中、(a)に示すように現在レジスタ160のプログラムカウンタPCの値が「8000」の場合及び(b)に示すように現在レジスタ160のプログラムカウンタPCの値が「8001」の場合には、通常通り処理が行われるが、(c)に示すように現在レジスタ160のプログラムカウンタPCの値が「8002」の場合に不当命令が発生したとする。この場合、同図(c)に示す前回レジスタ161のプログラムカウンタPCの「8001」なる値を、同図(d)に示すように、現在レジスタ160のプログラムカウンタPCの値と置き換える。同様に、同図(c)に示す現在レジスタ160のアキュムレータACC、汎用レジスタr1,r2及び制御フラグFlagも、同図(c)に示す前回レジスタ161のアキュムレータACC、汎用レジスタr1,r2及び制御フラグFlagの値と置き換えられ、現在レジスタ160のレジスタ内容は同図(d)に示すようになる。リトライは、同図(d)に示すように現在レジスタ160のプログラムカウンタPCの値が「8001」のところから行われ、リトライが成功すれば、現在レジスタ160のレジスタ内容は同図(e)に示すようになり、以下同様に処理が継続される。
【0026】
このように、本実施例では、不当命令が発生した場合でも、直ちにプログラムを中断せずに、数回リトライを行うことによって不当命令が解消されれば、プログラムを継続して実行できる。不当命令の発生は、プロセッサのパイプライン処理部12に内臓されているデコーダ部122から出力される不当命令フラグにより検出することができる。従って、不当命令が発生したことによるエラーの検出からリトライまで、プログラムの介在を必要とせず、処理の連続性が保たれる。又、例えば上記第1の提案方法のように2つのプロセッサを用いる場合と比較すると、ハードウェア構成及び制御が簡単であり、安価にシステムを構成可能である。
【0027】
図5は、本発明になるプロセッサの第2実施例の概略構成を示すブロック図である。プロセッサの第2実施例では、本発明がCPUに適用され、本発明になる不当命令処理方法の第2実施例を採用する。
【0028】
図5中、図1と同一部分には同一符号を付し、その説明は省略する。本実施例では、現在レジスタ160のみからなるレジスタ部16−2が設けられている。
【0029】
図6は、本実施例の動作を説明するフローチャートである。同図中、ステップS11は、パイプライン処理部12のデコード部122が不当命令を実行すると割り込みを発生する。ステップS12は、レジスタ部16−2の内部レジスタをスタック(Stack)nにプッシュ(push)する。ステップS13は、割り込み処理を行い、ステップS14は、不当命令による割り込みであるか否かを判定する。ステップS14の判定結果がNOであると、ステップS15は、スタックnからポップ(pop)し、処理はステップS11へ戻る。他方、ステップS14の判定結果がYESであると、ステップS16は、スタックn−1からポップし、処理はステップS11へ戻る。
【0030】
図7は、比較のために、従来例のレジスタ内容を説明する図である。従来例では、同図(a)に示すように、内部レジスタをスタックnにプッシュ(push)し、不当命令であると、同図(b)に示すように、スタックnからポップ(pop)する。
【0031】
図8は、第2実施例のレジスタ内容を説明する図である。本実施例では、同図a)に示すように、内部レジスタをスタックnにプッシュ(push)し、不当命令であると、同図(b)に示すように、スタックn−1からポップする。
【0032】
このように、本実施例では、不当命令による割り込みから戻る(リターンする)際に、スタックポインタSPの示す命令よりも前にリターンすることにより、割り込みが発生する前の状態まで制御を戻してから不当命令を含むサブルーチンを再実行する。つまり、不当命令のサブルーチンより1つ前のサブルーチンからリトライを実行する。サブルーチンの再実行時には、スタックにセーブしていた割り込みステータス等の制御フラグFlag、汎用レジスタr1,r2、アキュムレータACC等を用いる。この場合、プロセッサ21の基本構成は既存のプロセッサと同じとし、不当命令発生時にリターンする場所を変更可能とする機能を付加するだけで良いので、上記第1実施例よりハードウェアの構成及び制御が簡単であり、システムを更に安価に構成可能である。又、上記第3の提案方法と比較すると、本実施例は不当命令が発生するとプログラムを最後まで実行する前にリトライを行うため、不当命令発生以降の実行価値のないプログラムを実行する時間を省略可能である。
【0033】
図9は、本発明になるプロセッサの第3実施例の概略構成を示すブロック図である。プロセッサの第3実施例では、本発明がCPUに適用され、本発明になる不当命令処理方法の第3実施例を採用する。
【0034】
図9中、図1及び図5と同一部分には同一符号を付し、その説明は省略する。本実施例では、現在レジスタ160のみからなるレジスタ部16−2が設けられている。
【0035】
図10は、本実施例の動作を説明するフローチャートである。同図中、ステップS21は、パイプライン処理部12のリード部121により命令を読み込み保存する。ステップS22は、パイプライン処理部12のデコード部122によりリード部121で読み込まれた命令を解読する。ステップS23は、デコード部122により、解読された命令がサポートされているものか否かを、即ち、命令が正当か不当かを判定する。ステップS23の判定結果がNOであると、ステップS24は、パイプライン処理部12の実行部123によりデコード部122で解読された命令を実行することによってプロセッサ11内の各部へ制御信号を供給する。又、ステップS25は、レジスタ部16−2のプログラムカウンタPCの値を進めて、処理はステップS21へ戻る。
【0036】
他方、デコード部122により不当命令が検出されてステップS23の判定結果がYESであると、ステップS26は、不当命令を実行することなく、パイプライン処理部12のフラッシュを行う。又、ステップS27は、レジスタ部16−2のプログラムカウンタPCの値を、不当命令となった命令を再度リードできるような値に、即ち、リード部121を構成する段数分プログラムカウンタPCの値を戻し、処理はステップS21へ戻る。これにより、ステップS21は、不当命令となった命令を再度リードし、上記と同様にステップS22以降の処理が行われる。
【0037】
図11〜図13は、第3実施例の具体的な動作を説明する図である。
【0038】
図11中、Cacheはパイプライン処理部12のリード部121によりリードされリード部121内のキャッシュメモリに格納された命令のコードを示し、Decodeはパイプライン処理部12のデコード部122により解読された命令を示し、Executeはパイプライン処理部12の実行部123により実行された結果を示す。図11(a)は、パイプライン処理部12のデコード部122において不当命令「FFFF」が検出された状態を示し、図10においてステップS23の判定結果がYESの場合に対応する。図11(b)は、パイプライン処理部12のフラッシュが行われた状態を示し、図10においてステップS26が行われた場合に対応する。又、図11(c)は、パイプライン処理部12において不当命令となった命令を再度リードした状態を示し、図10においてステップS26の後にステップS27及びステップS21が行われた場合に対応する。図11(c)の状態の後に命令が実行されるので、同図のExecuteの欄にはまだ命令を実行した結果が示されていない。
【0039】
図12は、パイプライン処理部12内の処理の流れを示す。同図中、リード部121は、ステップS31で命令をフラッシュROM等からなるインストラクションメモリ(図9では図示省略)からリードする。デコード部122は、ステップS32でリードされた命令をデコード部122内のインストラクションFIFO等に格納し、ステップS32で格納された命令を解読する。ステップS34は、解読された命令に応じてレジスタ部16−2をアクセスしてインストラクションメモリからリードする命令のアドレスを指定する。実行部123は、ステップS33で解読された命令を実行し、命令を実行した結果得られたデータが出力される。
【0040】
図13は、パイプライン処理部12内のリード部121でリードされる命令、デコード部122で解読される命令及び実行部123で実行される命令を示す図である。同図中、I1〜I6は命令を示し、時間は左側の欄から右側の欄の方向へ進むものとする。説明の便宜上、同図では、3つの連続する時点に対応する欄が示されている。状態ST1〜ST4では、通常のパイプライン処理のリード、デコード及び実行が行われているが、状態ST4では、何らかの理由で命令I4が不当命令I4´に変化してしまい、不当命令I4´がリードされる。このため、状態ST5では、デコード部122が不当命令I4´を検出し、状態ST5〜状態ST7へ移る。つまり、状態ST6のように、実行部123が不当命令I4´を実行することはない。状態ST7では、状態ST5以降の命令のリードを停止し、不当命令I4´を実行することなく、パイプライン処理部12に残っている命令をフラッシュする。状態ST8では、命令I4を再度リードし、この場合は命令I4が正常にリードされるので、状態ST9,ST10では、通常のパイプライン処理のリード、デコード及び実行が行われる。
【0041】
上記第1実施例では、不当命令を実行したことを検出すると、プログラムの介在なしに1つ前のステップからリトライを行い、上記第2実施例では、不当命令を実行したことを検出すると、プログラムの介在なしに1つ前のサブルーチンからリトライを行う。これに対し、本実施例では、不当命令がリードされたことを検出されると、プログラムの介在なしにリードした不当命令を実行せずに再度リードを行う。
【0042】
尚、本発明は、以下に付記する発明をも包含するものである。
【0043】
(付記1) プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令の実行を検出する検出ステップと、
該検出ステップにより不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライステップとを含むことを特徴とする、不当命令処理方法。
【0044】
(付記2) 前記リトライステップは、前記検出ステップにより不当命令の実行が検出されると、少なくともアキュムレータ、スタックポインタ及びプログラムカウンタを含む現在のレジスタ内容を前回のレジスタ内容に置き換えてからリトライを行うことを特徴とする、付記1記載の不当命令処理方法。
【0045】
(付記3) プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令の実行を検出する検出ステップと、
該検出ステップにより不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライステップとを含むことを特徴とする、不当命令処理方法。
【0046】
(付記4) 前記リトライステップは、前記検出ステップにより不当命令の実行が検出されると、該不当命令による割り込みからリターンする際に、スタックポインタの示す命令よりも前にリターンすることにより、該割り込みが発生する前の状態まで制御を戻してから該不当命令を含むサブルーチンを再実行することを特徴とする、付記3記載の不当命令処理方法。
【0047】
(付記5) プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令のリードを検出する検出ステップと、
該検出ステップにより不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リードステップとを含むことを特徴とする、不当命令処理方法。
【0048】
(付記6) 前記検出ステップは、リードされた命令をデコードすることで前記不当命令を検出することを特徴とする、付記5記載の不当命令処理方法。
【0049】
(付記7) 前記再リードステップは、前記検出ステップにより不当命令のリードが検出されると、パイプライン処理部をフラッシュしてプログラムカウンタを調整するステップと、調整されたプログラムカウンタの値に基づいて不当命令として検出された命令を再度リードするステップとを含むことを特徴とする、付記5又は6記載の不当命令処理方法。
【0050】
(付記8) プログラムを実行するプロセッサであって、
不当命令の実行を検出する検出手段と、
該検出手段により不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライ手段とを備えたことを特徴とする、プロセッサ。
【0051】
(付記9) 少なくともアキュムレータ、スタックポインタ及びプログラムカウンタを含む現在及び全快のレジスタ内容を格納するレジスタ部を更に備え、前記リトライ手段は、前記検出手段により不当命令の実行が検出されると、該レジスタ部の現在のレジスタ内容を前回のレジスタ内容に置き換えてからリトライを行うことを特徴とする、付記8記載のプロセッサ。
【0052】
(付記10) プログラムを実行するプロセッサであって、
不当命令の実行を検出する検出手段と、
該検出手段により不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライ手段とを備えたことを特徴とする、プロセッサ。
【0053】
(付記11) 前記リトライ手段は、前記検出手段により不当命令の実行が検出されると、該不当命令による割り込みからリターンする際に、スタックポインタの示す命令よりも前にリターンすることにより、該割り込みが発生する前の状態まで制御を戻してから該不当命令を含むサブルーチンを再実行することを特徴とする、付記10記載のプロセッサ。
【0054】
(付記12) プログラムを実行するプロセッサであって、
不当命令のリードを検出する検出手段と、
該検出手段により不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リード手段とを備えたことを特徴とする、プロセッサ。
【0055】
(付記13) 前記検出手段は、リードされた命令をデコードすることで前記不当命令を検出することを特徴とする、付記12記載のプロセッサ。
【0056】
(付記14) リード部、デコード部及び実行部からなるパイプライン処理部を更に備え、
前記検出手段は、該リード部及び該デコード部により構成され、
前記再リード手段は、該検出手段により不当命令のリードが検出されると、該パイプライン処理部をフラッシュしてプログラムカウンタを調整する手段と、調整されたプログラムカウンタの値に基づいて不当命令として検出された命令を再度リードする手段を有することを特徴とする、付記12又は13記載のプロセッサ。
【0057】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、種々の変形及び改良が可能であることは、言うまでもない。
【0058】
【発明の効果】
本発明によれば、比較的簡単、且つ、安価な構成を用い、プログラムサイズの増大や複雑な判定処理を行うことなく、エラーが発生する直前までに実行していた処理との連続性を保ちつつシステムの利用効率を悪化させない不当命令処理方法及びプロセッサを実現することができる。
【図面の簡単な説明】
【図1】本発明になるプロセッサの第1実施例の概略構成を示すブロック図である。
【図2】第1実施例の動作を説明するフローチャートである。
【図3】第1実施例の動作を説明する図である。
【図4】第1実施例のレジスタ内容を説明する図である。
【図5】本発明になるプロセッサの第2実施例の概略構成を示すブロック図である。
【図6】第2実施例の動作を説明するフローチャートである。
【図7】従来例のレジスタ内容を説明する図である。
【図8】第2実施例のレジスタ内容を説明する図である。
【図9】本発明になるプロセッサの第3実施例の概略構成を示すブロック図である。
【図10】第3実施例の動作を説明するフローチャートである。
【図11】第3実施例の動作を説明する図である。
【図12】第3実施例の動作を説明する図である。
【図13】第3実施例の動作を説明する図である。
【符号の説明】
11,21,31 プロセッサ
12 パイプライン処理部
13 ALU
14,15 セレクタ
16−1,16−2 レジスタ部
17 データバス
18 アドレスバス
Claims (5)
- プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令の実行を検出する検出ステップと、
該検出ステップにより不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライステップとを含むことを特徴とする、不当命令処理方法。 - プログラムを実行するプロセッサにおける不当命令処理方法であって、
不当命令の実行を検出する検出ステップと、
該検出ステップにより不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライステップとを含むことを特徴とする、不当命令処理方法。 - プログラムを実行するプロセッサであって、
不当命令の実行を検出する検出手段と、
該検出手段により不当命令の実行が検出されると、該不当命令の前の命令からリトライを行うリトライ手段とを備えたことを特徴とする、プロセッサ。 - プログラムを実行するプロセッサであって、
不当命令の実行を検出する検出手段と、
該検出手段により不当命令の実行が検出されると、該不当命令のサブルーチンの前のサブルーチンからリトライを行うリトライ手段とを備えたことを特徴とする、プロセッサ。 - プログラムを実行するプロセッサであって、
不当命令のリードを検出する検出手段と、
該検出手段により不当命令のリードが検出されると、不当命令を実行することなく、再度命令をリードする再リード手段とを備えたことを特徴とする、プロセッサ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002216601A JP2004062309A (ja) | 2002-07-25 | 2002-07-25 | 不当命令処理方法及びプロセッサ |
US10/306,076 US20040019773A1 (en) | 2002-07-25 | 2002-11-27 | Illegal instruction processing method and processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002216601A JP2004062309A (ja) | 2002-07-25 | 2002-07-25 | 不当命令処理方法及びプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004062309A true JP2004062309A (ja) | 2004-02-26 |
Family
ID=30767958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002216601A Pending JP2004062309A (ja) | 2002-07-25 | 2002-07-25 | 不当命令処理方法及びプロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040019773A1 (ja) |
JP (1) | JP2004062309A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095825B2 (en) | 2006-01-16 | 2012-01-10 | Renesas Electronics Corporation | Error correction method with instruction level rollback |
JP2016110502A (ja) * | 2014-12-09 | 2016-06-20 | 株式会社デンソー | 電子制御装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006171952A (ja) * | 2004-12-14 | 2006-06-29 | Renesas Technology Corp | 半導体集積回路装置 |
US8151093B2 (en) * | 2006-09-08 | 2012-04-03 | Mips Technologies, Inc. | Software programmable hardware state machines |
GB2482701C (en) * | 2010-08-11 | 2018-12-26 | Advanced Risc Mach Ltd | Illegal mode change handling |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3533082A (en) * | 1968-01-15 | 1970-10-06 | Ibm | Instruction retry apparatus including means for restoring the original contents of altered source operands |
US3795800A (en) * | 1972-09-13 | 1974-03-05 | Honeywell Inf Systems | Watchdog reload initializer |
US4044337A (en) * | 1975-12-23 | 1977-08-23 | International Business Machines Corporation | Instruction retry mechanism for a data processing system |
US4498145A (en) * | 1982-06-30 | 1985-02-05 | International Business Machines Corporation | Method for assuring atomicity of multi-row update operations in a database system |
US4912707A (en) * | 1988-08-23 | 1990-03-27 | International Business Machines Corporation | Checkpoint retry mechanism |
US5651122A (en) * | 1991-05-13 | 1997-07-22 | Motorola, Inc. | Pipelined data processor that detects an illegal instruction by detecting legal instruction operation codes |
US5269017A (en) * | 1991-08-29 | 1993-12-07 | International Business Machines Corporation | Type 1, 2 and 3 retry and checkpointing |
AU681604B2 (en) * | 1992-10-19 | 1997-09-04 | Siemens Industrial Automation, Inc | High speed programmable logic controller |
US5566298A (en) * | 1994-03-01 | 1996-10-15 | Intel Corporation | Method for state recovery during assist and restart in a decoder having an alias mechanism |
US6112019A (en) * | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
US6625756B1 (en) * | 1997-12-19 | 2003-09-23 | Intel Corporation | Replay mechanism for soft error recovery |
US6216222B1 (en) * | 1998-05-14 | 2001-04-10 | Arm Limited | Handling exceptions in a pipelined data processing apparatus |
US6247118B1 (en) * | 1998-06-05 | 2001-06-12 | Mcdonnell Douglas Corporation | Systems and methods for transient error recovery in reduced instruction set computer processors via instruction retry |
US6898696B1 (en) * | 1999-06-14 | 2005-05-24 | International Business Machines Corporation | Method and system for efficiently restoring a processor's execution state following an interrupt caused by an interruptible instruction |
US6851074B2 (en) * | 2001-04-30 | 2005-02-01 | Hewlett-Packard Development Company | System and method for recovering from memory failures in computer systems |
US6952764B2 (en) * | 2001-12-31 | 2005-10-04 | Intel Corporation | Stopping replay tornadoes |
US6912648B2 (en) * | 2001-12-31 | 2005-06-28 | Intel Corporation | Stick and spoke replay with selectable delays |
-
2002
- 2002-07-25 JP JP2002216601A patent/JP2004062309A/ja active Pending
- 2002-11-27 US US10/306,076 patent/US20040019773A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095825B2 (en) | 2006-01-16 | 2012-01-10 | Renesas Electronics Corporation | Error correction method with instruction level rollback |
JP2016110502A (ja) * | 2014-12-09 | 2016-06-20 | 株式会社デンソー | 電子制御装置 |
Also Published As
Publication number | Publication date |
---|---|
US20040019773A1 (en) | 2004-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8250349B2 (en) | Branch prediction control device having return address stack and method of branch prediction | |
JP4603185B2 (ja) | 計算機及びその誤り回復方法 | |
JP2002041489A (ja) | 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法 | |
JP2000029700A (ja) | 分岐制御を有するデ―タ処理システムおよびその方法 | |
JPH1021074A (ja) | 割り込み制御方式、プロセッサ及び計算機システム | |
US7954038B2 (en) | Fault detection | |
US9021298B2 (en) | Integrated circuit with error repair and fault tolerance | |
JPH1083305A (ja) | 自己整合スタック・ポインタを有するデータ処理システムおよびその方法 | |
US20070079076A1 (en) | Data processing apparatus and data processing method for performing pipeline processing based on RISC architecture | |
JP2004062309A (ja) | 不当命令処理方法及びプロセッサ | |
JP2008262437A (ja) | プロセッサシステムおよび例外処理方法 | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
US6125443A (en) | Interrupt processing system and method for information processing system of pipeline control type | |
JP2536726B2 (ja) | マイクロプロセッサ | |
JP4647276B2 (ja) | 半導体回路装置 | |
JP2001154877A (ja) | 割込制御装置および方法 | |
JP2009238168A (ja) | マイクロプロセッサ | |
JP4311087B2 (ja) | プロセッサおよび例外処理方法 | |
JP2006209374A (ja) | 半導体集積回路装置及びコンパイラ | |
JP3729250B2 (ja) | 情報処理装置及び電子機器 | |
JP2011150636A (ja) | マイクロプロセッサ及びその制御方法 | |
JP2004062319A (ja) | データ処理装置 | |
JP3715505B2 (ja) | 特定用途向け演算命令を有する計算機およびその計算機の計算方法 | |
JPH05120155A (ja) | マイクロプログラム制御装置 | |
JPH07281892A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041026 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060207 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060407 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060509 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060703 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060801 |