(57)【要約】【課題】本発明は、メモリ読み出しエラーが発生した場合に、ＣＰＵを停止させることなく且つ無駄な割込みを実行することがないシステムを提供することを目的とする。【解決手段】システムは、メモリ回路から読み出された命令コードのエラーをチェックするエラーチェック回路と、未定義命令コードを保持する未定義命令コード格納回路と、エラーチェック回路によりエラー検出されない場合にメモリ回路から読み出された命令コードを選択的に出力し、エラーチェック回路によりエラー検出された場合に未定義命令コード格納回路からの未定義命令コードを選択的に出力する選択回路と、エラーチェック回路によりエラー検出された場合にエラー発生有を示す値を格納する命令エラーレジスタを含み、ＣＰＵはフェッチした命令を使用しない場合に命令を使用しない旨を示す信号を出力し、命令エラーレジスタはその信号に応答してリセットされることを特徴とする。【選択図】  図１
2008217070.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
少なくとも命令コードを格納するメモリ回路と、
該ＣＰＵから供給される命令アドレスに応じて該メモリ回路から読み出された命令コードのエラーをチェックするエラーチェック回路と、
エラーが発生した時にメモリからのデータの代わりにＣＰＵへ出力するデータを保持するコード格納回路と、
該メモリ回路と該コード格納回路とに入力が結合され、該エラーチェック回路によりエラー検出されない場合に該メモリ回路から読み出された命令コードを選択的に出力し、該エラーチェック回路によりエラー検出された場合に該コード格納回路からのデータを選択的に出力する選択回路と、
該選択回路の出力と該ＣＰＵとを接続するバスと、
該エラーチェック回路によりエラー検出された場合にエラー発生有を示す値を格納する命令エラーレジスタと
を含み、該ＣＰＵは、該バスを介してフェッチした命令を使用しない場合に該命令を使用しない旨を示す信号を出力するよう構成され、該命令エラーレジスタは該信号に応答してエラー発生無を示す値を格納する状態に設定されることを特徴とするコンピュータシステム。
【請求項２】
前記コード格納回路に、未定義命令例外を引き起こすコードを格納することを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
該信号は該ＣＰＵから信号線を介して該命令エラーレジスタのリセット端子に供給されることを特徴とする請求項１記載のコンピュータシステム。
【請求項４】
該ＣＰＵは、該メモリ回路からフェッチした命令がジャンプ命令であり、デコードした該ジャンプ命令がジャンプすると判断した場合に前記信号を出力するように構成されることを特徴とする請求項１記載のコンピュータシステム。
【請求項５】
該データは、該ＣＰＵが該データをデコードすると、それに応じて該ＣＰＵが例外処理を実行するようなコードであることを特徴とする請求項１記載のコンピュータシステム。
【請求項６】
該ＣＰＵは該例外処理においてベクタアドレスを出力し、該メモリ回路の該ベクタアドレスから例外ハンドラの開始アドレスをフェッチするように構成されることを特徴とする請求項５記載のコンピュータシステム。
【請求項７】
該ＣＰＵは該命令アドレスと該ベクタアドレスとの何れを出力しているのかを示す種別特定信号を出力するよう構成されることを特徴とする請求項６記載のコンピュータシステム。
【請求項８】
ベクタエラーレジスタを更に含み、該命令エラーレジスタは該エラーチェック回路によりエラー検出され且つ該種別特定信号が命令アドレス出力を示す場合にエラー発生有を示す値を格納するよう構成され、該ベクタエラーレジスタは該エラーチェック回路によりエラー検出され且つ該種別特定信号がベクタアドレス出力を示す場合にエラー発生有を示す値を格納するよう構成されることを特徴とする請求項７記載のコンピュータシステム。
【請求項９】
命令コードを格納するメモリ回路と、
外部バスから供給される命令アドレスに応じて該メモリ回路から読み出された命令コードのエラーをチェックするエラーチェック回路と、
エラーが発生した時にメモリからのデータの代わりにＣＰＵへ出力するデータを保持するコード格納回路と、
該メモリ回路と該コード格納回路とに入力が結合され、該エラーチェック回路によりエラー検出されない場合に該メモリ回路から読み出された命令コードを選択的に該外部バスに出力し、該エラーチェック回路によりエラー検出された場合に該コード格納回路からのデータを選択的に該外部バスに出力する選択回路と、
該エラーチェック回路によりエラー検出された場合にエラー発生有を示す値を格納し、該外部バスに接続される端子への該外部バスからの信号入力に応答してエラー発生無を示す値を格納する状態にリセットされる命令エラーレジスタと
を含むことを特徴とするメモリシステム。
【請求項１０】
未定義命令発生時に実行すべき処理を行う例外ハンドラの開始アドレスを保持するベクタ格納回路を更に含み、該選択回路は該メモリ回路と該コード格納回路と該ベクタ格納回路とに入力が結合され、該エラーチェック回路によりエラー検出され且つ該外部バスからの種別特定信号が命令アドレス供給を示す場合に該コード格納回路からの前記データを選択的に該外部バスに出力し、該エラーチェック回路によりエラー検出され且つ該外部バスからの該種別特定信号がベクタアドレス供給を示す場合にベクタ格納回路からの該例外ハンドラの開始アドレスを選択的に該外部バスに出力するよう構成されることを特徴とする請求項９記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータシステム及びメモリシステムに関し、詳しくはエラーチェック機能付きのメモリを使用したコンピュータシステム及びメモリシステムに関する。
【背景技術】
【０００２】
例えば自動車に搭載する用途のマイコンシステムにおいては、安全性を確保するために、ＥＣＣチェック機能やパリティチェック機能を備えたメモリが要求される。ＥＣＣによるデータ訂正機能を有したＥＣＣメモリ（Error Check and Correct Memory）においては、書き込み対象であるデータからエラー訂正用の冗長ビットを計算し、計算された冗長ビットを書き込み対象であるデータとともにメモリコアに格納する。読み出し時には、読み出したデータ及び冗長ビットにより、データ（及び冗長ビット）にエラーがあるか否かを検出し、エラーがある場合にはエラー訂正を行う。例えばハミング符号を用いてエラー訂正を実現する場合には、符号中に１ビットの誤りが発生した場合にエラー訂正が可能であり、２ビットの誤りが発生した場合にエラー検出が可能である。パリティチェック機能を有したＥＣＣメモリでは、書き込み対象であるデータからエラー検出用のパリティビットを計算し、計算されたパリティビットを書き込み対象であるデータとともにメモリコアに格納する。読み出し時には、読み出したデータ及びパリティビットにより、データ（及びパリティビット）にエラーがあるか否かを検出する。
【０００３】
ＣＰＵがメモリから命令コードをフェッチする際に、メモリでエラーが発生し、正しい命令コードをＣＰＵコアに供給することができない場合がある。このような場合、誤った命令を実行してしまうことを避けるためにＣＰＵを停止させるのでは、マイコンシステムとしての処理が停止してしまい、車載システム等の場合には安全性に問題が生じてしまう。そこでこれを回避する１つの方法として、命令コードのアクセス時にエラーが発生すると、エラー発生に応答して外部割込みをＣＰＵコアに入力する方法がある。
【０００４】
しかしエラー発生に応答して外部割込みをＣＰＵに入力する構成では、割込みルーチンにジャンプする前に、エラーが発生した命令コード（エラー発生中のメモリが出力しＣＰＵが読み込んだ誤った命令コード）を実行してしまう可能性がある。また命令フェッチ、命令デコード、演算実行、及びメモリアクセス等の各段階を重複させて実行するパイプライン構造となっているＣＰＵにおいて、現在デコード中のジャンプ命令がジャンプすると命令デコード部で判断した場合、命令フェッチ部にフェッチされている次の命令を使用しないことがある。このような場合にも命令フェッチ時のエラー発生に応答して外部割込みをかけてしまうと、実際には実行しない命令（ジャンプ命令の次の命令でありジャンプの結果実行されない命令）に対してエラーが発生したのにも関わらず、無意味な割込みを発生させてしまうことがある。
【０００５】
従来技術には、アクセス動作の度にアクセス先のアドレスをレジスタに常に格納するようにしておき、エラーが発生した時点でレジスタへの格納動作を停止することにより、エラー発生時のアクセス先のアドレスをレジスタ値として記録する技術がある（例えば、特許文献１参照。）。またリード時にメモリエラー等が発生した時に、エラーとなったデータの代りにＣＰＵが実行できるデータをバス上に出力し、同時に割込みをかける技術がある（例えば、特許文献２参照。）。
【特許文献１】特開平０３−０９８１２９号公報
【特許文献２】特開平０１−１００６３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上を鑑みて本発明は、メモリにおいて読み出しデータにエラーが発生した場合に、ＣＰＵを停止させることなく且つ無駄な割込みを実行することがないコンピュータシステム及びメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
コンピュータシステムは、ＣＰＵと、少なくとも命令コードを格納するメモリ回路と、該ＣＰＵから供給される命令アドレスに応じて該メモリ回路から読み出された命令コードのエラーをチェックするエラーチェック回路と、エラーが発生した時にメモリからのデータの代わりにＣＰＵへ出力するデータを保持するコード格納回路と、該メモリ回路と該コード格納回路とに入力が結合され、該エラーチェック回路によりエラー検出されない場合に該メモリ回路から読み出された命令コードを選択的に出力し、該エラーチェック回路によりエラー検出された場合に該コード格納回路からのデータを選択的に出力する選択回路と、該選択回路の出力と該ＣＰＵとを接続するバスと、該エラーチェック回路によりエラー検出された場合にエラー発生有を示す値を格納する命令エラーレジスタとを含み、該ＣＰＵは、該バスを介してフェッチした命令を使用しない場合に該命令を使用しない旨を示す信号を出力するよう構成され、該命令エラーレジスタは該信号に応答してエラー発生無を示す値を格納する状態に設定されることを特徴とする。
【０００８】
メモリシステムは、命令コードを格納するメモリ回路と、外部バスから供給される命令アドレスに応じて該メモリ回路から読み出された命令コードのエラーをチェックするエラーチェック回路と、エラーが発生した時にメモリからのデータの代わりにＣＰＵへ出力するデータを保持するコード格納回路と、該メモリ回路と該コード格納回路とに入力が結合され、該エラーチェック回路によりエラー検出されない場合に該メモリ回路から読み出された命令コードを選択的に該外部バスに出力し、該エラーチェック回路によりエラー検出された場合に該コード格納回路からのデータを選択的に該外部バスに出力する選択回路と、該エラーチェック回路によりエラー検出された場合にエラー発生有を示す値を格納し、該外部バスに接続される端子への該外部バスからの信号入力に応答してエラー発生無を示す値を格納する状態にリセットされる命令エラーレジスタとを含むことを特徴とする。
【発明の効果】
【０００９】
本発明の少なくとも１つの実施例によれば、読み出し命令コードにエラーが発生した場合には、未定義命令コードレジスタに格納される未定義命令コードをＣＰＵ回路にフェッチさせることにより、実際にＣＰＵ回路がその未定義命令コードを実行したときにのみＣＰＵ回路に例外処理を実行させることができる。従って、命令フェッチ時のエラー発生に応答してＣＰＵ回路に外部割込みをかけてしまう構成のように、実際には実行しない命令に対してエラーが発生したのにも関わらず、無意味な割込み／例外処理を発生させてしまうことがない。
【００１０】
また実際には実行しない命令に対してエラーが発生した場合には、ＣＰＵ回路からアサートされる信号に応答して、エラー発生無を示す値を格納する状態に命令エラーレジスタを設定する。これにより、その後他の何らかの要因により外部からＣＰＵ回路への割込み処理やＣＰＵ回路内部での例外処理等が発生した場合でも、実際には例外処理の要因ではない命令読み出しエラー（実行されなかった命令の読み出し時に発生したエラー）が現在実行中の例外処理の要因であると誤って認識されることがない。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１２】
図１は、本発明によるコンピュータシステムの第１の実施例の構成の一例を示す図である。図１のコンピュータシステム１０は、ＣＰＵ回路１１、フラッシュメモリ１２、ＲＡＭ１３、選択回路１４、未定義命令コードレジスタ１５、ＥＣＣ回路１６、エラーアドレスレジスタ１７、エラーデータレジスタ１８、命令エラーレジスタ１９、命令アドレスバス２０、命令データバス２１、データアドレスバス２２、データバス２３、及び制御信号線２４を含む。命令アドレスバス２０、命令データバス２１、及び命令制御バス（図示せず）で命令バスを構成し、データアドレスバス２２、データバス２３、及びデータ制御バス（図示せず）でデータバスを構成する。また命令アドレスバス２０、命令データバス２１、データアドレスバス２２、データバス２３、及び制御信号線２４を全て纏めてバスと呼ぶ場合がある。
【００１３】
フラッシュメモリ１２は不揮発性の半導体記憶装置であり、ＣＰＵ回路１１が実行するプログラムを格納する。即ち、フラッシュメモリ１２には、ＣＰＵ回路１１が実行するプログラムを構成する各命令の命令コードをプログラムの構成に応じた順番に格納されている。なお、フラッシュメモリ１２からＣＰＵ回路１１が命令を読み出す構成を例として本発明のシステムを説明するが、ＣＰＵ回路１１が命令を読み出す対象のメモリは不揮発性である必要はなく、例えばＤＲＡＭ等の揮発性のメモリであってもよい。
【００１４】
ＥＣＣ回路１６は、ＣＰＵ回路１１から命令アドレスバス２０を介して供給される命令アドレスに応じてフラッシュメモリ１２から読み出された命令コードのエラーをチェックするエラーチェック回路である。ＥＣＣ回路１６は、エラーを検出するとＥＣＣ＿ＥＲＲ信号をアサートする。ＥＣＣ＿ＥＲＲ信号は選択回路１４に供給されるとともに、エラーアドレスレジスタ１７、エラーデータレジスタ１８、及び命令エラーレジスタ１９からなるレジスタ群に供給される。この例では、ＥＣＣによるデータ訂正・エラー検出機能を備えたエラーチェック回路を想定しているが、パリティチェックに基づくエラーチェック回路等でもよく、エラーチェックについては特定の方式に限定されるものではない。
【００１５】
未定義命令コードレジスタ１５は、未定義命令コードを保持する格納回路である。ここで未定義命令コードとは、ＣＰＵ回路１１で未定義命令コードをデコードすると、それに応じてＣＰＵ回路１１が例外処理を実行するようなコードである。この例外処理において、ＣＰＵ回路１１はベクタアドレスを出力し、フラッシュメモリ１２のベクタアドレスから例外ハンドラの開始アドレスをフェッチする。ＣＰＵ回路１１は、この例外ハンドラの開始アドレスからプログラムの実行を開始することで、未定義命令発生時に実行すべき処理を実行する。
【００１６】
選択回路１４は、（ＥＣＣ回路１６を介して）フラッシュメモリ１２と未定義命令コードレジスタ１５とに入力が結合され、ＥＣＣ回路１６によりエラー検出されない場合にフラッシュメモリ１２から読み出された命令コードを選択的に出力し、ＥＣＣ回路１６によりエラー検出された場合に未定義命令コードレジスタ１５からの未定義命令コードを選択的に出力する。即ち、選択回路１４は、ＥＣＣ回路１６からのＥＣＣ＿ＥＲＲ信号のデアサート状態に応答してフラッシュメモリ１２から読み出された命令コードを選択的に出力し、ＥＣＣ＿ＥＲＲ信号のアサート状態に応答して未定義命令コードレジスタ１５からの未定義命令コードを選択的に出力する。選択回路１４の出力は命令データバス２１に接続されており、命令データバス２１はＣＰＵ回路１１に接続されている。
【００１７】
エラーアドレスレジスタ１７は、ＥＣＣ回路１６によりエラー検出された場合にエラー発生時の命令アドレスバス２０のアドレスを格納する。またエラーデータレジスタ１８は、ＥＣＣ回路１６によりエラー検出された場合にエラー発生時のフラッシュメモリ１２からの読み出しデータを格納する。
【００１８】
命令エラーレジスタ１９は、ＥＣＣ回路１６によりエラー検出された場合にエラー発生有を示す値を格納する。即ち、命令エラーレジスタ１９は、ＥＣＣ＿ＥＲＲ信号のアサート状態に応答してエラー発生有を示す値として例えば１を格納する。ＣＰＵ回路１１は、選択回路１４及び命令データバス２１を介してフェッチした命令を使用しない場合には、その命令を使用しない旨を示す信号Ｎｏｔ＿ｕｓｅｄを出力（アサート）するよう構成される。命令エラーレジスタ１９は、信号Ｎｏｔ＿ｕｓｅｄのアサートに応答してエラー発生無を示す値（例えば０）を格納する状態に設定される。例えば、信号Ｎｏｔ＿ｕｓｅｄはＣＰＵ回路１１から制御信号線２４を介して命令エラーレジスタ１９のリセット端子に供給されてよい。同様に、エラーアドレスレジスタ１７及びエラーデータレジスタ１８についても、信号Ｎｏｔ＿ｕｓｅｄのアサートに応答して例えば０にリセットするよう構成してよい。
【００１９】
上記のようにＣＰＵ回路１１が信号Ｎｏｔ＿ｕｓｅｄを出力（アサート）する場合としては、ＣＰＵ回路１１がフェッチした命令がジャンプ命令であり、デコードしたジャンプ命令がジャンプすると判断した場合等である。即ちＣＰＵ回路１１は、命令フェッチ、命令デコード、演算実行、及びメモリアクセス等の各段階を重複させて実行するパイプライン構造となっており、現在デコード中のジャンプ命令がジャンプすると命令デコード部で判断した場合、命令フェッチ部にフェッチされている次の命令を使用しない。この場合、ＣＰＵ回路１１が信号Ｎｏｔ＿ｕｓｅｄを出力（アサート）することにより、現在フェッチ中の命令或いは最後にフェッチした命令が、実際には実行されない旨をアナウンスする。
【００２０】
上記の構成においては、読み出し命令コードにエラーが発生した場合には、未定義命令コードレジスタ１５に格納される未定義命令コードをＣＰＵ回路１１にフェッチさせることにより、実際にＣＰＵ回路１１がその未定義命令コードを実行したときにのみＣＰＵ回路１１に例外処理を実行させることができる。従って、命令フェッチ時のエラー発生に応答してＣＰＵ回路１１に外部割込みをかけてしまう構成のように、実際には実行しない命令（ジャンプ命令の次の命令でありジャンプの結果実行されない命令）に対してエラーが発生したのにも関わらず、無意味な割込み／例外処理を発生させてしまうことがない。
【００２１】
また実際には実行しない命令に対してエラーが発生した場合には、ＣＰＵ回路１１からアサートされる信号Ｎｏｔ＿ｕｓｅｄに応答して、エラー発生無を示す値（例えば０）を格納する状態に命令エラーレジスタ１９を設定する。即ち、実行しない命令に対してエラーが発生した場合には、エラー発生有に一端セットされた命令エラーレジスタ１９をリセットしてエラー発生無を示す状態にする。これにより、その後他の何らかの要因により外部からＣＰＵ回路１１への割込み処理やＣＰＵ回路１１内部での例外処理等が発生し、命令エラーレジスタ１９を含めて種々のレジスタをチェックした場合に、実際には例外処理の要因ではない命令読み出しエラー（実行されなかった命令の読み出し時に発生したエラー）が、現在実行中の例外処理の要因であると誤って認識されることがない。
【００２２】
なおＣＰＵ回路１１が未定義命令コードレジスタ１５からの未定義命令コードを実行して例外処理を開始する場合には、その例外処理において、命令エラーレジスタ１９をチェックしてよい。命令エラーレジスタ１９をチェックすることにより、例外処理の要因がＥＣＣ回路１６によるエラー検出であると判断することができる。また更に、その例外処理において、エラーアドレスレジスタ１７及びエラーデータレジスタ１８の内容をチェックしてよい。これにより、エラーが発生した時のアドレス及びデータ内容を解析することが可能となる。
【００２３】
図２は、ＣＰＵ回路１１の構成の一例を示す図である。図２に示すＣＰＵ回路１１は、
フェッチ部（Ｆ部）３１、デコード部（Ｄ部）３２、エグゼキュート部（Ｅ部）３３、メモリアクセス部（Ｍ部）３４、及び汎用レジスタ部３５を含む。
【００２４】
汎用レジスタ部３５は、汎用レジスタＲ０乃至Ｒ１５及びプログラムカウンタＰＣを含む。プログラムカウンタＰＣは命令アドレスＩＡ［３１：０］を格納し、命令アドレスバス２０（図１参照）に出力する。ここで［３１：０］は３２ビット幅のデータ（アドレス）のうちの第０ビットから第３１ビットを示す。
【００２５】
フェッチ部３１は、命令バスアクセス制御部４０、命令レジスタＴｆ、命令アドレスフェッチレジスタＴｉａ＿ｆを含む。デコード部３２は、命令シーケンサ４１、切換回路４２、選択回路４３、命令アドレスデコードレジスタＴｉａ＿ｄｅｃ、デコード結果レジスタＴｄｅｃ、演算レジスタＴａ及びＴｂ、及びデータレジスタＴｄｄを含む。エグゼキュート部３３は、算術論理演算ユニット（ＡＬＵ）４４、命令アドレスエグゼキュートレジスタＴｉａ＿ｅ、演算結果レジスタＴｅ、及びデータレジスタＴｅｄを含む。メモリアクセス部３４は、データバスアクセス制御部４５、出力バッファ４６及び４７、入力バッファ４８、及び命令アドレスメモリレジスタＴｉａ＿ｍを含む。
【００２６】
プログラムカウンタＰＣから命令アドレスＩＡ［３１：０］が命令アドレスバス２０に送出されると、それに応じた命令がフェッチ部３１にフェッチされ、命令がデコード部３２によりデコードされ、対応する演算がエグゼキュート部３３により実行され、最後にメモリアクセスがメモリアクセス部３４により実行される。この各段階に対応して、プログラムカウンタＰＣからの命令アドレスＩＡ［３１：０］は、命令アドレスフェッチレジスタＴｉａ＿ｆ、命令アドレスデコードレジスタＴｉａ＿ｄｅｃ、命令アドレスエグゼキュートレジスタＴｉａ＿ｅ、及び命令アドレスメモリレジスタＴｉａ＿ｍに順番に伝搬し格納される。
【００２７】
まずフェッチ部３１において、プログラムカウンタＰＣから送出した命令アドレスに応じてフラッシュメモリ１２（又は未定義命令コードレジスタ１５）から読み出された命令コードＩＤ［３１：０］が、命令データバス２１を介して命令レジスタＴｆに格納される。この際、命令バスアクセス制御部４０は命令シーケンサ４１の制御下で動作して、命令バスアクセス動作を制御する。命令バスアクセス制御部４０は例えば、命令アドレスバス２０上に命令アドレスが出力されていることを示す命令アドレスストローブ信号を命令バスに出力したり、命令アクセス可能状態であることを示すレディ信号を命令バスから受け取ったりする。
【００２８】
デコード部３２において、命令シーケンサ４１は、命令レジスタＴｆに格納された命令コードをデコードして、その結果に応じて命令シーケンスを制御する。即ち命令シーケンサ４１は、レジスタ操作、演算、データ転送等の各種動作について、命令レジスタＴｆに格納された命令コードの内容に応じて指定された動作を指定された順番で実行することにより、命令コードが要求する動作を実現する。この動作は、命令シーケンサ４１がＣＰＵ回路１１の各部の動作を制御することにより実現される。
【００２９】
例えば、命令シーケンサ４１は、命令レジスタＴｆに格納された命令コードの内容に応じた演算モードを示すデコード結果を、デコード結果レジスタＴｄｅｃに書き込む。これにより命令シーケンサ４１は、算術論理演算ユニット４４の演算動作を制御することができる。また命令シーケンサ４１は、命令レジスタＴｆに格納された命令コードの内容に応じて切換回路４２及び選択回路４３を制御することにより、所望のレジスタに格納される値を演算対象として算術論理演算ユニット４４に供給することができる。また同様に、命令レジスタＴｆに格納された命令コードの内容に応じて指定されるレジスタの内容を、データレジスタＴｄｄ、データレジスタＴｅｄ、出力バッファ４７を介してデータバス２３に出力することができる。
【００３０】
また更に命令シーケンサ４１は、命令レジスタＴｆに格納された命令コードをデコードした結果としてこの命令コードが未定義命令コードであることが判明すると、前述のようにベクタアドレスを送出して例外ハンドラの開始アドレスを読み込むための例外処理シーケンスを実行する。また更に命令シーケンサ４１は、命令レジスタＴｆに格納された命令コードをデコードした結果としてこの命令コードがＪＵＭＰ命令であることが判明すると、次に命令レジスタＴｆに格納される命令コードを実行しないことを示す信号Ｎｏｔ＿ｕｓｅｄを送出する。この信号Ｎｏｔ＿ｕｓｅｄにより、次の命令コードのデコード処理等を実行しないような制御がＣＰＵ回路１１内部で行われる。またこの信号Ｎｏｔ＿ｕｓｅｄは、前述のように、ＣＰＵ回路１１外部に送出される。
【００３１】
エグゼキュート部３３において、算術論理演算ユニット４４は、デコード結果レジスタＴｄｅｃに格納された演算モードに従って論理算術演算を実行する。演算結果は、演算結果レジスタＴｅに格納される。演算結果レジスタＴｅに格納された演算結果は、メモリアクセス部３４の出力バッファ４６を介してデータアドレスバス２２に出力することができる。
【００３２】
メモリアクセス部３４において、データバスアクセス制御部４５は、デコード部３２の命令シーケンサ４１の制御下で動作して、データバスアクセス動作を制御する。データバスアクセス制御部４５は例えば、データアドレスバス２２上にアドレスが出力されていることを示すアドレスストローブ信号をデータバスに出力したり、データアクセス可能状態であることを示すレディ信号をデータバスから受け取ったりする。入力バッファ４８は、データバス２３から受け取ったデータを汎用レジスタ部３５に供給する。
【００３３】
図３は、図１のコンピュータシステム１０において命令読み出しエラーが発生したが当該命令が実行されない場合の動作を説明するタイミングチャートである。図３には、命令１、命令２、及びＪＵＭＰ先命令の３つの命令が、パイプライン動作により順番に重複して実行される様子が示されている。各命令において、Ｆ、Ｄ、Ｅ、及びＭはそれぞれフェッチ部３１の動作、デコード部３２の動作、エグゼキュート部３３の動作、及びメモリアクセス部３４の動作を示している。図３の最上部に、第１乃至第８の動作サイクルのタイミングがそれぞれＴ１乃至Ｔ８として示されている。
【００３４】
まず第１の動作サイクルで、命令１（遅延スロット無しＪＵＭＰ命令）が命令コードＩＤとしてフェッチされ命令レジスタＴｆに格納される。
【００３５】
次に第２の動作サイクルで、命令レジスタＴｆの内容がデコードされ（デコード動作を
2008217070.tif 000003
で表現してある）、ＪＵＭＰ命令であるのでｎｏｐ（ノーオペレーション）がデコード結果レジスタＴｄｅｃに格納されると共に、プログラムカウンタＰＣにＪＵＭＰ先のアドレスが格納される。この時、信号Ｎｏｔ＿ｕｓｅｄが生成される。
【００３６】
またこの第２の動作サイクルで、命令２が命令コードＩＤとしてフェッチされ命令レジスタＴｆに格納される。この際、命令２の読み出し時にＥＣＣ回路１６がエラーを検出し、未定義命令コードが命令レジスタＴｆに格納される。
【００３７】
次に第３の動作サイクルで、命令１の演算動作（演算動作を
2008217070.tif 000004
で表現してある）が実行されるが、デコード結果レジスタＴｄｅｃの中身がｎｏｐであるので実際の演算は実行されない。また命令１であるＪＵＭＰ命令のジャンプ先の命令アドレスＩＡが、プログラムカウンタＰＣから命令アドレスバス２０に出力される。
【００３８】
またこの第３の動作サイクルで、本来実行される筈であった命令２のデコード動作は、
信号Ｎｏｔ＿ｕｓｅｄが生成されたことを受けて実行されない。デコード動作（
2008217070.tif 000005
で示す）が実行されないことは、命令レジスタＴｆとデコード動作との間の記号×で示されている。この結果、未定義命令コードに基づく例外処理は実行されることなく、ｎｏｐ（ノーオペレーション）がデコード結果レジスタＴｄｅｃに格納される。
【００３９】
またこの第３の動作サイクルで、ＪＵＭＰ先命令が命令コードＩＤとしてフェッチされ命令レジスタＴｆに格納される。また命令２の読み出し時にＥＣＣ回路１６がエラーを検出したことによりＥＣＣ＿ＥＲＲ（図１参照）がアサートされるが、信号Ｎｏｔ＿ｕｓｅｄのアサートにより命令エラーレジスタ１９へのエラー発生有の設定を禁止する（既に設定されていればエラー発生有の設定を解除する）。命令エラーレジスタ１９がエラー発生有の状態に設定されないことは、図示される"ＥＣＣ＿ＥＲＲ"の下に示される線が点線となっていることで表現されている。
【００４０】
以降の動作サイクルで、ＪＵＭＰ先命令のデコードＤ、演算Ｅ、及びメモリアクセス動作Ｍが順次実行される。またこれに並行して、このＪＵＭＰ先命令の次の命令、またその次の命令等が、パイプライン化されて重複して実行される。
【００４１】
図４は、図１のコンピュータシステム１０において命令読み出しエラーが発生し当該命令が実行される場合の動作を説明するタイミングチャートである。図４において、命令１、命令２、及び命令３の３つの命令が、パイプライン動作により順番に重複して実行される様子が示されている。各命令において、Ｆ、Ｄ、Ｅ、及びＭはそれぞれフェッチ部３１の動作、デコード部３２の動作、エグゼキュート部３３の動作、及びメモリアクセス部３４の動作を示している。図４の最上部に、第１乃至第８の動作サイクルのタイミングがそれぞれＴ１乃至Ｔ８として示されている。
【００４２】
まず第１の動作サイクルで、命令１が命令コードＩＤとしてフェッチされ命令レジスタＴｆに格納される。
【００４３】
次に第２の動作サイクルで、命令レジスタＴｆの内容がデコードされ（デコード動作を
2008217070.tif 000006
で表現してある）、デコードの結果得られる演算モードがデコード結果レジスタＴｄｅｃに格納される。この時信号Ｎｏｔ＿ｕｓｅｄは生成されない。信号Ｎｏｔ＿ｕｓｅｄが生成されないことは、図示される"Ｎｏｔ＿ｕｓｅｄ"の下に示される線が点線となっていることで表現されている。
【００４４】
またこの第２の動作サイクルで、命令２が命令コードＩＤとしてフェッチされ命令レジスタＴｆに格納される。この際、命令２の読み出し時にＥＣＣ回路１６がエラーを検出し、未定義命令コードが命令レジスタＴｆに格納される。
【００４５】
次に第３の動作サイクルで、デコード結果レジスタＴｄｅｃの内容に応じて、命令１の演算動作（演算動作を
2008217070.tif 000007
で表現してある）が実行される。演算結果は、演算結果レジスタＴｅに格納される。
【００４６】
またこの第３の動作サイクルで、命令２に対して命令レジスタＴｆの内容がデコードされる（デコード動作を
2008217070.tif 000008
で表現してある）。命令２は、未定義命令コードレジスタ１５から読み出された未定義命令コードであるので、例外処理が実行されることになる。このこの結果、ｎｏｐ（ノーオペレーション）がデコード結果レジスタＴｄｅｃに格納される。また命令２の読み出し時にＥＣＣ回路１６がエラーを検出したことによりＥＣＣ＿ＥＲＲ（図１参照）がアサートされるが、信号Ｎｏｔ＿ｕｓｅｄがアサートされていないので、命令エラーレジスタ１９にエラー発生有を示す状態が設定される。命令エラーレジスタ１９がエラー発生有の状態に設定されたことは、図示される"ＥＣＣ＿ＥＲＲ"の下に示される線が実線となっていることで表現されている。
【００４７】
またこの第３の動作サイクルで、命令３が命令コードＩＤとしてフェッチされ命令レジスタＴｆに格納される。
【００４８】
次に第４の動作サイクルで、データバスに対する命令１のメモリアクセス動作Ｄｂｕｓが実行される。また命令２の演算動作（演算動作を
2008217070.tif 000009
で表現してある）が実行されるが、デコード結果レジスタＴｄｅｃの中身がｎｏｐであるので実際の演算は実行されない。
【００４９】
またこの第４の動作サイクルで本来実行される筈であった命令３のデコード動作は、例外処理が起動されたことを受けて実行されない。命令３のデコード動作（
2008217070.tif 000010
で示す）が実行されないことは、命令レジスタＴｆとデコード動作との間の記号×で示されている。その代わり、例外処理による種々の設定動作が行われる。具体的には、デコード結果レジスタＴｄｅｃに加算を指示する演算モードが格納され、演算レジスタＴａにテーブルベースレジスタＴＢＲの内容が格納され、演算レジスタＴｂにベクタ番号ＶｅｃｔＮｏが格納される。ここでテーブルベースレジスタＴＢＲの内容は、複数の異なる例外ハンドラの開始アドレスをリストしたテーブルであるベクタテーブルの先頭アドレスである。またベクタ番号ＶｅｃｔＮｏは、例外処理の種別毎に割り当てられた番号である。
【００５０】
次に第５の動作サイクルで、例外処理に対応する演算動作（演算動作を
2008217070.tif 000011
で表現してある）が実行される。これによりベクタテーブルの先頭アドレスにベクタ番号を加算した結果が演算結果レジスタＴｅに格納される。
【００５１】
次に第６の動作サイクルで、例外処理に対応するメモリアクセス動作が実行される。即ち、ベクタテーブルの先頭アドレスにベクタ番号を加算した値がデータアドレスＤＡとしてデータアドレスバス２２に送出される。これに応じて、このデータアドレスに格納されている値がフラッシュメモリ１２から読み出されてデータＤＤとしてプログラムカウンタＰＣに格納される。未定義命令コードに対する例外処理に例えばベクタ番号＃５が割り当てられているとすると、フラッシュメモリ１２に格納されるベクタテーブル中の先頭から５番目の例外ハンドラの開始アドレスが読み出され、この読み出された開始アドレスがプログラムカウンタＰＣに格納されることになる。次の第７の動作サイクルで、プログラムカウンタＰＣからこの開始アドレスが命令アドレスＩＡとして命令アドレスバス２０に送出されて、例外ハンドラのプログラム処理が開始される。
【００５２】
図５は、本発明によるコンピュータシステムの第２の実施例の構成の一例を示す図である。図５において、図１と同一の構成要素は同一の番号で参照し、その説明は適宜省略する。
【００５３】
図５のコンピュータシステム１０Ａは、ＣＰＵ回路１１、フラッシュメモリ１２、ＲＡＭ１３、選択回路１４、未定義命令コードレジスタ１５、ＥＣＣ回路１６、エラーアドレスレジスタ１７、エラーデータレジスタ１８、命令エラーレジスタ１９、命令アドレスバス２０、命令データバス２１、データアドレスバス２２、データバス２３、制御信号線２４、バスユニット６０、ベクタレジスタ６１、ベクタエラーレジスタ６２、データエラーレジスタ６３、命令制御バス６５、データ制御バス６６、共通アドレスバス６７、共通データバス６８、エラー通知信号線６９、アクセス種別制御線７０、及び制御信号線７１を含む。
【００５４】
命令アドレスバス２０、命令データバス２１、及び命令制御バス６５で命令バスを構成し、データアドレスバス２２、データバス２３、及びデータ制御バス６６でデータバスを構成する。また共通アドレスバス６７、共通データバス６８、及びアクセス種別制御線７０で共通バスを構成する。命令制御バス６５の信号は、例えばアドレスストローブ信号Ｉａｓ及びレディ信号Ｉｒｄｙを含む。データ制御バス６６の信号は、例えばデータストローブ信号Ｄａｓ、レディ信号Ｄｒｄｙ、及びベクタスアクセス信号Ｖｅｃｔ＿ａｃを含む。ベクタスアクセス信号Ｖｅｃｔ＿ａｃは、ＣＰＵ回路１１がベクタアクセス動作をするときにアサートされる。
【００５５】
バスユニット６０は、ＣＰＵ回路１１が使用する命令バス及びデータバスを１つの共通バスに纏める機能を有する。またバスユニット６０は、ＣＰＵ回路１１から制御信号線２４を介して受け取る信号Ｎｏｔ＿ｕｓｅｄを、そのまま信号Ｎｏｔ＿ｕｓｅｄとして制御信号線７１に送出する。
【００５６】
ＣＰＵ回路１１が命令アドレスバス２０に命令アドレスを送出して命令アクセス動作を実行中である場合、バスユニット６０は、アクセス動作が命令アクセス動作であることを示す種別特定信号をアクセス種別制御線７０に送出する。またＣＰＵ回路１１がデータアドレスバス２２にデータアドレスを送出してデータアクセス動作を実行中である場合、バスユニット６０は、アクセス動作がデータアクセス動作であることを示す種別特定信号をアクセス種別制御線７０に送出する。またＣＰＵ回路１１がデータアドレスバス２２にベクタアドレスを送出するとともにベクタスアクセス信号Ｖｅｃｔ＿ａｃをアサートしてベクタアクセス動作を実行中である場合、バスユニット６０は、アクセス動作がベクタアクセス動作であることを示す種別特定信号をアクセス種別制御線７０に送出する。
【００５７】
ＥＣＣ回路１６は、バスユニット６０から共通アドレスバス６７を介して供給される命令アドレスに応じてフラッシュメモリ１２から読み出された命令コードのエラーをチェックするエラーチェック回路である。ＥＣＣ回路１６は、エラーを検出するとＥＣＣ＿ＥＲＲ信号をアサートする。ＥＣＣ＿ＥＲＲ信号は、選択回路１４に供給されるとともに、エラー通知信号線６９に送出される。エラー通知信号線６９のＥＣＣ＿ＥＲＲ信号は、エラーアドレスレジスタ１７、エラーデータレジスタ１８、命令エラーレジスタ１９、ベクタエラーレジスタ６２、及びデータエラーレジスタ６３からなるレジスタ群に供給される。この例では、ＥＣＣによるデータ訂正・エラー検出機能を備えたエラーチェック回路を想定しているが、パリティチェックに基づくエラーチェック回路等でもよく、エラーチェックについては特定の方式に限定されるものではない。
【００５８】
図５の構成では、未定義命令コードレジスタ１５に加えベクタレジスタ６１が設けられている。ベクタレジスタ６１は、未定義命令発生時に実行すべき処理を行う例外ハンドラの開始アドレスを保持する。即ち、ベクタレジスタ６１の内容は、フラッシュメモリ１２に格納されるベクタテーブルに記録されている未定義命令発生時に実行すべき処理を行う例外ハンドラの開始アドレスと同一であってよい。
【００５９】
選択回路１４は、（ＥＣＣ回路１６を介して）フラッシュメモリ１２と、未定義命令コードレジスタ１５と、データバッファ６４とに入力が結合され、ＥＣＣ回路１６によりエラー検出されない場合にフラッシュメモリ１２から読み出された命令コードを選択的に出力する。選択回路１４は、ＥＣＣ回路１６によりエラー検出され且つ種別特定信号が命令アドレス出力（命令アクセス動作）を示す場合に未定義命令コードレジスタ１５からの未定義命令コードを選択的に出力し、ＥＣＣ回路１６によりエラー検出され且つ種別特定信号がベクタアドレス出力（ベクタアクセス動作）を示す場合にベクタレジスタ６１からの例外ハンドラの開始アドレスを選択的に出力するよう構成される。選択回路１４の出力は共通データバス６８に接続されており、共通データバス６８及び命令データバス２１を介してＣＰＵ回路１１に接続されている。
【００６０】
エラーアドレスレジスタ１７は、ＥＣＣ回路１６によりエラー検出された場合にエラー発生時の共通アドレスバス６７のアドレスを格納する。エラーデータレジスタ１８は、ＥＣＣ回路１６によりエラー検出された場合にエラー発生時のフラッシュメモリ１２からの読み出しデータを格納する。命令エラーレジスタ１９はＥＣＣ回路１６によりエラー検出され且つアクセス種別制御線７０の種別特定信号が命令アドレス出力を示す場合にエラー発生有を示す値を格納する。ベクタエラーレジスタ６２はＥＣＣ回路１６によりエラー検出され且つアクセス種別制御線７０の種別特定信号がベクタアドレス出力を示す場合にエラー発生有を示す値を格納する。データエラーレジスタ６３は、ＥＣＣ回路１６によりエラー検出され且つアクセス種別制御線７０の種別特定信号がデータアドレス出力を示す場合にエラー発生有を示す値を格納する。なおエラー通知信号線６９のＥＣＣ＿ＥＲＲ信号のアサート状態／デアサート状態により、ＥＣＣ回路１６によるエラー検出の有無が各レジスタに通知される。
【００６１】
命令エラーレジスタ１９は、制御信号線７１の信号Ｎｏｔ＿ｕｓｅｄのアサートに応答してエラー発生無を示す値（例えば０）を格納する状態に設定される。同様に、エラーアドレスレジスタ１７及びエラーデータレジスタ１８についても、信号Ｎｏｔ＿ｕｓｅｄのアサートに応答して例えば０にリセットするよう構成してよい。またデータエラーレジスタ６３にエラー発生有を示す値が格納された場合には、ＣＰＵ回路１１に外部割込みを入力するように構成してよい。
【００６２】
上記の構成においては、ベクタアドレスに応じてフラッシュメモリ１２から読み出した例外ハンドラの開始アドレスに対してＥＣＣ回路１６でエラーが発生した場合には、ベクタレジスタ６１に格納される例外ハンドラの開始アドレスをＣＰＵ回路１１にフェッチさせることができる。従って、ベクタアクセス動作においてメモリ読み出しにエラーが発生しても、未定義命令コードレジスタ１５の内容を再度出力して無限ループに嵌り込んでしまうことがない。
【００６３】
図６は、図５のコンピュータシステム１０Ａにおいて命令読み出しエラーが発生したが当該命令が実行されない場合の動作を説明するタイミングチャートである。図６には、命令１、命令２、ＪＵＭＰ命令である命令３、命令４、ＪＵＭＰ先命令である命令５、及び命令６の６つの命令が、パイプライン動作により順番に重複して実行される様子が示されている。各命令において、Ｆ、Ｄ、Ｅ、及びＭはそれぞれフェッチ部３１の動作、デコード部３２の動作、エグゼキュート部３３の動作、及びメモリアクセス部３４の動作を示している。図６の最上部に、第１乃至第９の動作サイクルのタイミングがそれぞれＴ１乃至Ｔ９として示されている。
【００６４】
図６において、Ｉｂｕｓは命令バスのアドレス及びデータ信号、Ｉａｓは命令ストローブ信号、Ｉｒｄｙは命令のレディ信号、Ｎｏｔ＿ｕｓｅｄは前述の信号Ｎｏｔ＿ｕｓｅｄ、Ｄｂｕｓはデータバスのアドレス及びデータ信号、Ｄａｓはデータストローブ信号、Ｄｒｄｙはデータのレディ信号、Ｆｂｕｓは共通バスのアドレス及びデータ信号、Ｆａｓは共通ストローブ信号、Ｆｒｄｙは共通バスアクセスのレディ信号、ＦＥＲＲはエラー通知信号線６９の信号を示す。Ｉａｓ、Ｉｒｄｙ、Ｎｏｔ＿ｕｓｅｄ、Ｄａｓ、Ｄｒｄｙ、Ｆａｓ、Ｆｒｄｙ、ＦＥＲＲの各欄において、実線はその信号がアサートされていることを意味する。
【００６５】
まず第１の動作サイクルで、ＣＰＵ回路１１が命令バスを用いて命令フェッチ動作を実行すると、図６のＩｂｕｓに示すように、ＣＰＵ回路１１とバスユニット６０との間の命令バスに信号Ｉ１（最初に命令アドレスでその後に命令コード）が現れる。このときバスユニット６０とフラッシュメモリ１２との間の共通バスには、図６のＦｂｕｓに示すように、同一の信号Ｉ１（最初に命令アドレスでその後に命令コード）が現れていることになる。これにより命令１に対する命令フェッチ動作が実行される。同様に第２の動作サイクルで命令２に対する命令フェッチ動作が実行され、第３の動作サイクルで命令３に対する命令フェッチ動作が実行される。
【００６６】
第４の動作サイクルは、前半と後半の２つの動作サイクルから構成される。第４の動作サイクルの前半では、共通バスにおいて（Ｆｂｕｓ）、第４の命令に対する命令フェッチ動作Ｉ４が実行される。第４の動作サイクルの後半では、共通バスにおいて（Ｆｂｕｓ）、第１の命令に対するメモリアクセス動作Ｄ１が実行される。即ち、第４の命令をフェッチして、その後第１の命令の実行に起因するデータ読み書き動作がフラッシュメモリ１２又はＲＡＭ１３に対して実行される。Ｉｂｕｓに示すように、ＣＰＵ回路１１とバスユニット６０との間の命令バスでは、第４の命令に対する命令フェッチ動作Ｉ４が第４の動作サイクルの全体の期間を使って実行される。またＤｂｕｓに示すように、ＣＰＵ回路１１とバスユニット６０との間のデータバスでは、第１の命令に対するデータアクセス動作Ｄ１が第４の動作サイクルの後半の期間を使って実行される。
【００６７】
この第４の動作サイクルにおいて、第３の命令がＪＵＭＰ命令であったことに応答して信号Ｎｏｔ＿ｕｓｅｄが発生し、第４の命令を実行しない旨を通知する。またＦＥＲＲに示すように、第４の命令の読み出しにおいてＥＣＣエラーが発生し、エラー通知信号線６９にエラー発生を示す信号（図５のＥＣＣ＿ＥＲＲ）がアサートされる。但し、信号Ｎｏｔ＿ｕｓｅｄのアサートにより命令エラーレジスタ１９へのエラー発生有の設定を禁止する（既に設定されていればエラー発生有の設定を解除する）。命令エラーレジスタ１９がエラー発生有の状態に設定されないことは、図６の最下段に示される"命令エラーレジスタ"の欄に示される線が点線となっていることで表現されている。
【００６８】
第５の動作サイクルは、前半と後半の２つの動作サイクルから構成される。第５の動作サイクルの前半では、共通バスにおいて（Ｆｂｕｓ）、第５の命令（ＪＵＮＰ先命令）に対する命令フェッチ動作Ｉ５が実行される。第５の動作サイクルの後半では、共通バスにおいて（Ｆｂｕｓ）、第２の命令に対するメモリアクセス動作Ｄ２が実行される。即ち、第５の命令をフェッチして、その後第２の命令の実行に起因するデータ読み書き動作がフラッシュメモリ１２又はＲＡＭ１３に対して実行される。Ｉｂｕｓに示すように、ＣＰＵ回路１１とバスユニット６０との間の命令バスでは、第５の命令に対する命令フェッチ動作Ｉ５が第５の動作サイクルの全体の期間を使って実行される。またＤｂｕｓに示すように、ＣＰＵ回路１１とバスユニット６０との間のデータバスでは、第２の命令に対するデータアクセス動作Ｄ２が第５の動作サイクルの後半の期間を使って実行される。第６の動作サイクルについても同様である。
【００６９】
図７は、図５のコンピュータシステム１０Ａにおいて命令読み出しエラーが発生し当該命令が実行される場合の動作を説明するタイミングチャートである。図７には、命令１、命令２、ＪＵＭＰ命令である命令３、命令４、命令５及びその後の例外処理が、パイプライン動作により順番に重複して実行される様子が示されている。図７において、図６と同一の部分は同一の動作内容であるので適宜説明を省略する。
【００７０】
図７の動作においては、ＪＵＭＰ命令である命令３が、ジャンプ条件が成立せずにジャンプしないことが図６の動作と異なる。この場合、信号Ｎｏｔ＿ｕｓｅｄがアサートされない。信号Ｎｏｔ＿ｕｓｅｄがアサートされないことは、"Ｎｏｔ＿ｕｓｅｄ"の欄に示される線が点線となっていることで表現されている。
【００７１】
図６の場合と同様に、ＦＥＲＲに示すように、第４の命令の読み出しにおいてＥＣＣエラーが発生し、エラー通知信号線６９にエラー発生を示す信号（図５のＥＣＣ＿ＥＲＲ）がアサートされる。図７の場合には、信号Ｎｏｔ＿ｕｓｅｄがアサートされていないので、命令エラーレジスタ１９へエラー発生有が設定される（エラー発生有の設定が解除されることがない）。命令エラーレジスタ１９がエラー発生有の状態に設定されていることは、図６の最下段に示される"命令エラーレジスタ"の欄に示される線が実線となっていることで表現されている。
【００７２】
第４の命令の読み出しにおけるＥＣＣエラー発生により、第４の命令として未定義命令コードレジスタ１５に格納される未定義命令コードがフェッチされ実行される。従って、図３において説明したのと同様に、次の命令である命令５のデコード動作のタイミングにおいて、例外処理が代わりに実行される。この例外処理では、第６乃至第８の動作サイクルでベクタフェッチが実行されるとともに、プログラムカウンタＰＣ及びプロセッサステータスレジスタＰＳの待避が行われる。なお図７において、これら例外処理に対応する欄のＥＤ、ＥＥ、及びＥＭは、例外処理（Ｅｘｃｅｐｔｉｏｎ）のデコード（Ｄ）、演算（Ｅ）、メモリアクセス（Ｍ）であることを示している。
【００７３】
図８は、図５のコンピュータシステム１０Ａにおいてベクタアクセス動作時に読み出しエラーが発生した場合の動作を説明するタイミングチャートである。図８には、命令１、命令２及びその後の例外処理、更に未定義命令処理ルーチン（例外ハンドラのプログラム）が、パイプライン動作により順番に重複して実行される様子が示されている。図６及び図７と信号等の表記は同一である。図８の最上部に、第１乃至第１０の動作サイクルのタイミングがそれぞれＴ１乃至Ｔ１０として示されている。
【００７４】
まず第１の動作サイクルで命令１に対する命令フェッチ動作が実行され、第２の動作サイクルで命令２に対する命令フェッチ動作が実行される。第２の動作サイクルにおける命令１のデコード動作で例外が発生し、第３の動作サイクルから例外処理が実行される。即ち、ベクタフェッチ、ＰＳ（プロセッサステータスレジスタ）待避、及びＰＣ（プログラムカウンタ）待避がそれぞれ実行される。これら例外処理に対応する欄のＥＤ、ＥＥ、及びＥＭは、例外処理（Ｅｘｃｅｐｔｉｏｎ）のデコード（Ｄ）、演算（Ｅ）、メモリアクセス（Ｍ）であることを示している。
【００７５】
この例外処理では、第５の動作サイクルにおいて、メモリアクセス動作ＥＭとしてベクタアクセス動作が実行される。図８のＤｂｕｓに示すように、ＣＰＵ回路１１とバスユニット６０との間のデータバスに信号ＥＤ１（最初にベクタアドレスでその後に例外ハンドラ開始アドレス）が現れる。このときバスユニット６０とフラッシュメモリ１２との間の共通バスには、図８のＦｂｕｓに示すように、同一の信号ＥＤ１（最初にベクタアドレスでその後に例外ハンドラ開始アドレス）が現れていることになる。これによりベクタアクセス動作が実行される。
【００７６】
この際、ＦＥＲＲに実線として示すように、ベクタテーブルの内容の読み出しにおいてＥＣＣエラーが発生し、エラー通知信号線６９にエラー発生を示す信号（図５のＥＣＣ＿ＥＲＲ）がアサートされる。これに応じて、ベクタエラーレジスタ６２へエラー発生有が設定される。ベクタエラーレジスタ６２がエラー発生有の状態に設定されていることは、図８の最下段に示される"ベクタエラーレジスタ"の欄に示される線が実線となっていることで表現されている。
【００７７】
このベクタアクセス動作時の読み出しにおけるＥＣＣエラー発生により、ベクタレジスタ６１に格納される未定義命令処理ベクタ（未定義命令発生時に実行すべき処理を行う例外ハンドラの開始アドレス）がフェッチされる。従って、ベクタアクセス動作時の読み出しにおけるＥＣＣエラーの発生にも関わらず、未定義命令発生時に実行すべき処理を行う例外ハンドラを問題なく実行することができる。
【００７８】
その後、第５の動作サイクルで読み込んだ未定義命令処理ベクタをプログラムカウンタＰＣに設定して、未定義命令処理ルーチン（例外ハンドラのプログラム）を実行する。図８に示されるように、この未定義命令処理ルーチンの第１番目の命令は第６乃至第９の動作サイクルで実行され、第２番目の命令は第７乃至第１０の動作サイクルで実行されている。
【００７９】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００８０】
【図１】本発明によるコンピュータシステムの第１の実施例の構成の一例を示す図である。
【図２】ＣＰＵ回路の構成の一例を示す図である。
【図３】図１のコンピュータシステムにおいて命令読み出しエラーが発生したが当該命令が実行されない場合の動作を説明するタイミングチャートである。
【図４】図１のコンピュータシステムにおいて命令読み出しエラーが発生し当該命令が実行される場合の動作を説明するタイミングチャートである。
【図５】本発明によるコンピュータシステムの第２の実施例の構成の一例を示す図である。
【図６】図５のコンピュータシステムにおいて命令読み出しエラーが発生したが当該命令が実行されない場合の動作を説明するタイミングチャートである。
【図７】図５のコンピュータシステムにおいて命令読み出しエラーが発生し当該命令が実行される場合の動作を説明するタイミングチャートである。
【図８】図５のコンピュータシステムにおいてベクタアクセス動作時に読み出しエラーが発生した場合の動作を説明するタイミングチャートである。
【符号の説明】
【００８１】
１０  コンピュータシステム
１１  ＣＰＵ回路
１２  フラッシュメモリ
１３  ＲＡＭ
１４  選択回路
１５  未定義命令コードレジスタ
１６  ＥＣＣ回路
１７  エラーアドレスレジスタ
１８  エラーデータレジスタ
１９  命令エラーレジスタ
２０  命令アドレスバス
２１  命令データバス
２２  データアドレスバス
２３  データバス
２４  制御信号線
【図１】
2008217070.tif 000012
【図２】
2008217070.tif 000013
【図３】
2008217070.tif 000014
【図４】
2008217070.tif 000015
【図５】
2008217070.tif 000016
【図６】
2008217070.tif 000017
【図７】
2008217070.tif 000018
【図８】
2008217070.tif 000019