(57)【特許請求の範囲】
【請求項１】
ＣＰＵと周辺回路との間に設けられ、該周辺回路から割込要求が入力されると、該割込要求と前記ＣＰＵが現在実行中の割込処理との優先順位を比較し、前記周辺回路からの割込要求の優先順位が高い場合に、前記ＣＰＵへ割込要求信号を出力すると共に、該割込要求信号の出力後、前記ＣＰＵから割込準備完了を表す応答信号を受けると、前記割込要求に対応した割込処理を前記ＣＰＵに実行させるための割込識別情報を、前記ＣＰＵに対して、直接又は外部の割込識別情報伝達手段を介して間接的に出力する割込コントローラにおいて、
前記割込要求信号の出力に伴い前記ＣＰＵが実行している割込処理の優先順位を表すレベル情報を記憶すると共に、前記割込要求信号の出力により前記ＣＰＵが実行中の割込処理を中断した際には、該中断した割込処理のレベル情報を所定の記憶媒体に退避させ、更に、前記ＣＰＵが該中断した割込処理を再開する際には、該記憶媒体から該割込処理に対応したレベル情報を読み出し、レベル情報を更新するレベル情報記憶・更新手段を備えたことを特徴とする割込コントローラ。
【請求項２】
前記レベル情報記憶・更新手段は、前記ＣＰＵが実行中の割込処理のレベル情報を記憶しておくためのレベル情報記憶部を備え、
該レベル情報記憶部に記憶可能な情報量は、前記周辺回路が発生する割込要求毎に設定されるレベル情報のデータ長に対応して設定されていることを特徴とする請求項１記載の割込コントローラ。
【請求項３】
前記割込識別情報は、前記ＣＰＵの割込処理ルーチンに対応したベクタアドレスであることを特徴とする請求項１又は請求項２記載の割込コントローラ。
【請求項４】
請求項１〜請求項３何れか記載の割込コントローラと、
該割込コントローラからの割込要求信号を受けて対応する割込処理を行うＣＰＵと、
前記割込コントローラに対して各種割込要求を行う複数の周辺回路と、
を備えたことを特徴とするマイクロコンピュータ。
【請求項５】
前記ＣＰＵは、
前記割込コントローラから割込要求信号を受けると、現在実行中の割込処理を中断して、該割込処理を再開するのに必要な処理情報を外部の記憶媒体に退避させるのと同時に、前記割込コントローラに退避指令を出力することにより、該処理情報と前記レベル情報記憶・更新手段に記憶されたレベル情報とを同一の記憶媒体に同時に退避させる割込例外処理を実行し、
実行中の割込処理を完了して、先に中断した割込処理を再開する際には、前記外部の記憶媒体から前記処理情報を読み出すのと同時に、前記割込コントローラに復帰指令を出力することにより、前記レベル情報記憶・更新手段に対して、前記処理情報の読み出しと同時に前記レベル情報を読み出させる、割込復帰処理を実行するよう構成され、
前記割込コントローラにおいて、前記レベル情報記憶・更新手段は、前記ＣＰＵが出力してくる退避指令及び復帰指令を受けて、前記記憶媒体に対する前記レベル情報の退避及び読み出しを夫々行うことを特徴とする請求項４記載のマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多重割込可能なマイクロコンピュータを構成するのに好適な割込コントローラ、及び、この割込コントローラを用いたマイクロコンピュータに関する。
【０００２】
【従来の技術】
一般に、マイクロコンピュータは、ＣＰＵやメモリの他、Ａ／Ｄコンバータ、タイマ、ＰＷＭ波形発生回路などの周辺（ペリフェラル）回路を備えて構成されている。そして、ＣＰＵがこれら周辺回路との間でデータなどを授受する場合、インターフェースの一手段として割込が用いられている。この場合、ＣＰＵに対して割込を要求する周辺回路が複数存在し、且つ、各周辺回路からの割込要求が重複する高機能なマイクロコンピュータでは、ＣＰＵと周辺回路との間に割込コントローラを介在させる。
【０００３】
この割込コントローラは、例えばＣＰＵと共通のクロックを受けて動作するもので、各周辺回路からの割込要求を一括して管理し、これら複数の割込要求を１つの信号にまとめた上で、ＣＰＵに対する割込要求信号（以下、周辺回路からの割込要求信号と区別するために、ＣＰＵ割込要求信号ともいう）としてＣＰＵの割込入力端子に出力するようになっている。
【０００４】
具体的には、割込コントローラは、各周辺回路から同時に複数の割込要求信号が入力されると、その中から最も優先順位の高い割込要求を選択してその割込処理に対するベクタアドレスを生成するとともに、ＣＰＵに対してＣＰＵ割込要求信号を出力する。ＣＰＵは、このＣＰＵ割込要求信号が入力されると、割込受付のための遅延時間が経過した後、割込コントローラに対して割込を受け付ける準備が完了したことを示す応答信号を出力する。そして、これと同時に、ＣＰＵは割込コントローラからベクタアドレスを読み出し、その後ベクタアドレスで指定された領域に格納された割込処理の実行を開始する。
【０００５】
また、このように割込コントローラからＣＰＵ割込要求信号を出力して、ＣＰＵに周辺回路から要求のあった割込処理を実行させるに当たって、ＣＰＵが他の割込処理を実行中である場合には、ＣＰＵに対して、現在実行中の割込処理を中断させる必要があるが、単に、割込コントローラが出力したＣＰＵ割込要求信号によって、ＣＰＵが実行中の割込処理を中断させるようにすると、新たな割込要求よりも優先順位の高い割込処理を中断させてしまうこともある。
【０００６】
このため、従来、こうした多重割込を行う際には、割込コントローラ側で、ＣＰＵが実行中の割込処理と周辺回路からの割込要求との優先順位を比較し、周辺回路からの割込要求の優先順位の方がＣＰＵが実行中の割込処理よりも高い場合にだけ、割込コントローラからＣＰＵにＣＰＵ割込要求信号を出力するようにしている。
【０００７】
ところで、このように、割込コントローラ側で、ＣＰＵが実行中の割込処理と周辺回路からの割込要求との優先順位を比較するためには、割込コントローラが、ＣＰＵが現在実行中の割込処理の優先順位を知っている必要がある。このため、従来では、ＣＰＵ側で現在実行中の割込処理の優先順位を管理（記憶）し、割込コントローラが周辺回路から割込要求を受けた際には、ＣＰＵから現在実行中の割込処理の優先順位を取り込み、その優先順位と周辺回路からの割込要求の優先順位とを比較するようにされている。
【０００８】
そして、ＣＰＵは、割込処理の実行中に、割込コントローラからＣＰＵ割込要求信号を受けると、現在実行中の割込処理を中断し、その割込処理を再開するのに必要な処理情報（具体的にはプログラムカウンタの値やフラグ等の処理状態を表す情報）と、その割込処理の優先順位を表すレベル情報とを、ＲＡＭ等の外部の記憶媒体に退避（スタック）させた後、割込コントローラから読み出したベクタアドレスに従い、新たに要求のあった割込処理を実行し、この割込処理が完了した後、外部の記憶媒体から退避しておいた情報を読み出し、その情報に基づき、先に中断した割込処理を再開する。
【０００９】
【発明が解決しようとする課題】
以上のように、ＣＰＵに対する多重割込が可能な従来のマイクロコンピュータでは、ＣＰＵが実行中の割込処理の優先順位をＣＰＵ側で管理（記憶）するようにしている。このため、ＣＰＵが、現在実行中の割込処理を中断して、その割込処理を再開するのに必要な処理情報をＲＡＭ等に退避させる際には、ＣＰＵがその割込処理の優先順位も同時に退避させることができ、中断した割込処理の優先順位の管理を、ＣＰＵ側の処理にて容易に行うことができる。
【００１０】
しかし、こうした優先順位の管理機能をＣＰＵ側に持たせるには、ＣＰＵ側に、実行中の割込処理の優先順位を記憶しておく部分（レジスタ）を設ける必要があり、ＣＰＵの回路規模が大きくなるという問題がある。
そして、例えば、多重割込が不要なマイクロコンピュータと、多重割込が必要なマイクロコンピュータとを、同一仕様のＣＰＵを用いて構成するような場合には、多重割込が不要なマイクロコンピュータであっても、上記優先順位記憶用のレジスタを有する回路規模の大きなＣＰＵを用いなければならず、マイクロコンピュータの小型化を図ることができないという問題がある。また、この場合、多重割込が不要なマイクロコンピュータには、不要な機能を有するＣＰＵを使用することになり、マイクロコンピュータのコストアップになるという問題もある。
【００１１】
また、ＣＰＵの汎用性を高めるには、周辺回路が発生する割込要求の種類が多く、各割込要求毎に設定される優先順位のデータ長（ビット数）が大きくなっても優先順位記憶用のレジスタに記憶できるように、そのレジスタの容量（換言すればレジスタのビット数）をできるだけ大きくする必要がある。よって、従来のＣＰＵを各種用途のマイクロコンピュータにて共用できるようにするには、ＣＰＵの回路規模が益々大きくなってしまい、これによっても、マイクロコンピュータの小型化を図ることができないという問題が生じる。
【００１２】
本発明は、こうした問題に鑑みなされたもので、多重割込の要・否に関係なく共通のＣＰＵを使用することができ、しかも、そのＣＰＵの機能を必要最小限に抑えてＣＰＵの回路規模を小さくできる割込コントローラ、及びこの割込コントローラを用いたマイクロコンピュータを提供することを目的とする。
【００１３】
【課題を解決するための手段】
かかる目的を達成するためになされた請求項１記載の割込コントローラにおいては、前述した従来の割込コントローラと同様、周辺回路から割込要求が入力されると、その割込要求とＣＰＵが現在実行中の割込処理との優先順位を比較して、周辺回路からの割込要求の優先順位が高い場合に、ＣＰＵへ割込要求信号（ＣＰＵ割込要求信号）を出力し、更にこの割込要求信号の出力後に、ＣＰＵから割込準備完了を表す応答信号を受けると、割込要求に対応した割込処理をＣＰＵに実行させるための割込識別情報を、ＣＰＵに対して、直接又は外部の割込識別情報伝達手段を介して間接的に出力する。
【００１４】
そして、特に、本発明の割込コントローラには、レベル情報記憶・更新手段が備えられており、このレベル情報記憶・更新手段は、ＣＰＵへの割込要求信号の出力に伴い、ＣＰＵが実行している割込処理の優先順位を表すレベル情報を記憶すると共に、割込要求信号の出力によってＣＰＵが実行中の割込処理を中断した際には、その中断した割込処理のレベル情報を所定の記憶媒体に退避させ、更に、ＣＰＵがその中断した割込処理を再開する際には、記憶媒体から割込処理に対応したレベル情報を読み出し、レベル情報を更新する。
【００１５】
つまり、本発明の割込コントローラは、レベル情報記憶・更新手段を設けることにより、従来、ＣＰＵ側で管理（記憶）していたレベル情報（ＣＰＵが実行中の割込処理の優先順位）を、割込コントローラ側で管理できるようにしたものである。
【００１６】
このため、本発明の割込コントローラを用いれば、ＣＰＵ側に、現在実行中の割込処理の優先順位を記憶するための記憶部（レジスタ等）を設ける必要がなく、ＣＰＵの回路規模を小さくすることができる。よって、本発明によれば、多重割込が不要な小規模なマイクロコンピュータと、多重割込が必要な大規模なマイクロコンピュータとを、同一仕様のＣＰＵを用いて構成した際に、多重割込が不要な小規模なマイクロコンピュータの小型化、低コスト化を図ることができる。
【００１７】
ところで、本発明の割込コントローラにおいては、請求項２記載のように、レベル情報記憶・更新手段にＣＰＵが実行中の割込処理のレベル情報を記憶しておくためのレベル情報記憶部（レジスタ等）が設けられることになる。そして、このレベル情報記憶部に記憶可能な情報量（換言すればレベル情報記憶部の容量）としては、周辺回路が発生する割込要求の種類に応じて設定されるレベル情報を記憶可能であればよく、そのレベル情報のデータ長に比べて充分大きい情報量に設定してもよい。
【００１８】
しかし、このようにすると、割込コントローラの大型化を招き、延いてはこの割込コントローラが適用されるマイクロコンピュータの小型化を図ることができなくなる。
従って、割込コントローラのレベル情報記憶・更新手段に設けられるレジスタ等のレベル情報記憶部に記憶可能な情報量としては、請求項２に記載のように、周辺回路が発生する割込要求毎に設定されるレベル情報のデータ長に対応して設定することが望ましい。そして、このようにすれば、レベル情報記憶・更新手段に設けられるレベル情報記憶部の容量を必要最小限に設定することができ、割込コントローラ、延いてはマイクロコンピュータの小型化を容易に図ることが可能となる。
【００１９】
つまり、本発明の割込コントローラによれば、従来ＣＰＵ側で行っていた割込処理の優先順位の管理を、割込コントローラ単体で行うことができることから、割込処理の優先順位の管理機能を持たない汎用ＣＰＵを用いて各種マイクロコンピュータを構築できるできるだけでなく、割込コントローラに組み込むレベル情報記憶部の容量を適宜設定することにより、汎用ＣＰＵを用いて割込処理を行うマイクロコンピュータを必要最小限の大きさで実現できることになる。
【００２０】
一方、ＣＰＵから割込準備完了を表す応答信号を受けた際に、割込コントローラがＣＰＵに対して直接又は外部の割込識別情報伝達手段を介して間接的に出力する割込識別情報としては、周辺回路からの割込要求を識別可能な情報であればよく、例えば、一定の信号パターンであってもよいが、特に、請求項３に記載のように、ＣＰＵの割込処理ルーチンに対応したベクタアドレスとすれば、ＣＰＵは、そのベクタアドレスをプログラムカウンタに格納するだけで割込処理を実行できるので、ＣＰＵ側で割込処理を速やかに開始することができるようになる。
【００２１】
次に、請求項４記載の発明は、上記請求項１〜請求項３何れか記載の割込コントローラを用いたマイクロコンピュータに関するものであり、上記割込コントローラに加えて、割込コントローラからの割込要求信号を受けて対応する割込処理を行うＣＰＵと、割込コントローラに対して各種割込要求を行う複数の周辺回路とを備える。従って、請求項４記載のマイクロコンピュータによれば、周辺回路が割込要求を発生した際に、その割込要求の優先順位が、ＣＰＵが実行中の割込処理の優先順位よりも高い場合には、その割込処理が中断されて、周辺回路が発生した割込要求に対応した割込処理が実行されることになり、多重割込可能なマイクロコンピュータとなる。
【００２２】
ところで、こうした多重割込可能なマイクロコンピュータでは、ＣＰＵは、割込コントローラからの割込要求信号（ＣＰＵ割込要求信号）を受けると、一般的な割込例外処理（プログラム）を実行することにより、現在実行中の割込処理を中断し、その割込処理を再開するのに必要な処理情報（具体的にはプログラムカウンタの値やフラグ等の処理状態を表す情報）を、ＲＡＭ等の外部の記憶媒体に退避（スタック）させ、その後、ＣＰＵ割込要求信号に対応した割込処理が完了すると、一般的な割込復帰処理（プログラム）を実行することにより、外部の記憶媒体から退避（スタック）しておいた処理情報を読み出して、先に中断した割込処理を再開することになる。そして、本発明（請求項１〜請求項３）の割込コントローラは、レベル情報記憶・更新手段を設けることにより、こうしたＣＰＵの動作に連動して、レベル情報の退避（スタック）及び読み出しを行うようにされている。
【００２３】
従って、本発明（請求項４）のマイクロコンピュータにおいて、割込コントローラが、ＣＰＵに対して多重割込を行った際には、従来のマイクロコンピュータと同様、新たな割込処理の実行後に、多重割込によって中断した元の割込処理を問題なく実行することができるのであるが、ＣＰＵ側での処理情報の退避（スタック）及び読み出しのタイミングと、割込コントローラ側でのレベル情報の退避（スタック）及び読み出しのタイミングとを、夫々、異なるタイミングに設定すると、新たな割込処理の実行開始或いは中断した割込処理の復帰に要する時間が長くなってしまう。
【００２４】
そこで、こうした問題を防止するには、ＣＰＵ及び割込コントローラ側のレベル情報記憶・更新手段を、請求項５に記載のように構成するとよい。
即ち、請求項５記載のマイクロコンピュータにおいて、ＣＰＵは、割込コントローラから割込要求信号を受けると、現在実行中の割込処理を中断して、その割込処理を再開するのに必要な処理情報を外部の記憶媒体に退避させるのと同時に、割込コントローラに退避指令を出力することにより、処理情報とレベル情報記憶・更新手段に記憶されたレベル情報とを同一の記憶媒体に同時に退避させる割込例外処理を実行する。
【００２５】
また、ＣＰＵは、実行中の割込処理を完了して、先に中断した割込処理を再開する際には、外部の記憶媒体から処理情報を読み出すのと同時に、割込コントローラに復帰指令を出力することにより、レベル情報記憶・更新手段に対して、処理情報の読み出しと同時にレベル情報を読み出させる、割込復帰処理を実行する。
【００２６】
一方、割込コントローラ側では、レベル情報記憶・更新手段が、ＣＰＵが出力してくる退避指令及び復帰指令を受けて、記憶媒体に対するレベル情報の退避及び読み出しを夫々行う。
このため、請求項５記載のマイクロコンピュータによれば、ＣＰＵ側での処理情報の退避及び読み出しのタイミングと、割込コントローラ側でのレベル情報の退避（スタック）及び読み出しのタイミングとを一致させ、これら各情報を、ＲＡＭ等の同一の記憶媒体に対して同時に退避（スタック）させると共に、同時に読み出すことができるようになり、ＣＰＵ側での多重割込に対応する新たな割込処理の実行開始及び中断した割込処理の復帰に要する時間を短くすることが可能となる。
【００２７】
【発明の実施の形態】
以下に本発明の一実施形態（実施例）について図面を用いて説明する。
図１は、本発明が適用された実施例のマイクロコンピュータの要部の構成を表すブロック図である。
【００２８】
本実施例のマイクロコンピュータは、図１に示すＣＰＵ２、割込コントローラ４、ＲＡＭ６に加え、図示しないＲＯＭや、各種周辺回路（例えばＡ／Ｄコンバータ、タイマ，ＰＷＭ（パルス幅変調）波形発生回路等）等を備える。そして、これら各部は、互いに、アドレスバス８、データバス９、コントロールバス（図示せず）によって接続されており、ＣＰＵ２及び割込コントローラ４は同一の２相クロックを受けて動作する。
【００２９】
ここで、Ａ／Ｄコンバータ、タイマ、ＰＷＭ波形発生回路等の周辺回路は、夫々、イベントが発生する毎に、割込コントローラ４に対して割込要求信号を出力する。このイベントとしては、例えばＡ／ＤコンバータにあってはＡ／Ｄ変換の終了などが相当し、タイマにあってはタイマのオーバーフローなどが相当する。そして、各周辺回路は、イベントが発生すると割込要求信号を無効レベルであるLow レベルから有効レベルであるHighレベルに変化させ、以降、ＣＰＵ２がその割込要求信号に対応する周辺回路に対し割込クリア命令を実行するまでの間、割込要求信号をHighレベルに保持する。
【００３０】
次に、ＣＰＵ２は、例えば複数のステージからなるパイプライン構造を有し、プログラム格納用の図示しないＲＯＭに記憶された命令のフェッチ、周辺回路やＲＡＭへのデータのリード／ライト、命令の実行などを並列処理するように構成されている。そして、ＣＰＵ２には、こうした処理を実行するための制御部２２、制御部２２が各種処理を実行する際に使用するデータが一時的に書き込まれる汎用レジスタ２４（本実施例では、汎用レジスタ２４は、レジスタ０〜レジスタ１５の１６個のレジスタからなる）、例えばキャリーフラグの値等、制御部２２が実行中の処理の状態を表す情報を記憶するシステムレジスタ（ＰＳＲ）２６、及び、制御部２２が実行中の処理の位置を記憶するプログラムカウンタ（ＰＣ）２８、等が備えられている。
【００３１】
また、ＣＰＵ２は、本発明に係わる主要な機能である多重割込を実現するために、割込コントローラ４からＣＰＵ割込要求信号ＩＮＴＲが入力されると、図２（ａ）に示す後述の割込例外処理を実行することにより、現在実行中の処理を中断して、ＣＰＵ割込要求信号ＩＮＴＲに対応した割込処理を優先的に実行し、その割込処理が完了すると、図２（ｂ）に示す後述の割込復帰処理を実行することにより、先に中断した処理を再開するようにされている。
【００３２】
一方、割込コントローラ４には、上記各周辺回路からの割込要求信号に対応した割込処理の優先順位が予め設定された割込優先順位設定レジスタ４２、複数の割込要求信号が同時に入力されているときに、割込優先順位設定レジスタ４２から出力される各割込要求信号に対応した優先順位の中から、最も優先順位の高い割込要求信号を選択する優先順位判定回路４４、ＣＰＵ２が現在実行中の割込処理の優先順位を表す割込マスクレベルを記憶する割込マスクレベルレジスタ４６、及び、優先順位判定回路４４にて最も優先順位が高いと判定された割込要求信号の優先順位と、割込マスクレベルレジスタ４６に記憶された割込マスクレベルとを比較し、優先順位判定回路４４にて最も優先順位が高いと判定された割込要求信号の優先順位の方が、現在ＣＰＵ２が実行している割込処理の優先順位よりも高い場合に、ＣＰＵ２に対してＣＰＵ割込要求信号ＩＮＴＲを出力する比較器４８が設けられている。
【００３３】
尚、割込マスクレベルレジスタ４６は、本発明（請求項２記載）のレベル情報記憶部に相当するものであり、本実施例では、各周辺回路からの割込要求信号に対応した割込処理の優先順位が、割込処理の種類に応じて割込マスクレベルとして３ビットの情報を記憶できるように構成されている。これは、上記各周辺回路からの割込要求信号に対して設定される優先順位が、例えば０番から７番までとなっており、３ビットの２値データで記述されているからである。
【００３４】
また、割込コントローラ４は、割込識別情報伝達手段として、上記各周辺回路からの割込要求信号に対応した割込処理をＣＰＵ２に実行させるためのベクタアドレス（請求項１記載の割込識別情報に相当）が予め記憶されたベクタアドレス記憶部５０を備える。そして、このベクタアドレス記憶部５０は、比較器４８がＣＰＵ２に対してＣＰＵ割込要求信号ＩＮＴＲを出力した後に、後述の割込例外処理によってＣＰＵ２から入力される応答信号ＩＮＴＡＣＫを受けて、ＣＰＵ割込要求信号ＩＮＴＲに対応したベクタアドレスをデータバス９上に出力する。この結果、ＣＰＵ２は、データバス９を介してベクタアドレスを読み込むことにより、ＣＰＵ割込要求信号ＩＮＴＲに対応した割込処理を実行することができるようになる。
【００３５】
また更に、割込コントローラ４には、比較器４８からＣＰＵ２へのＣＰＵ割込要求信号ＩＮＴＲの出力、及び、ＣＰＵ２からの応答信号ＩＮＴＡＣＫの入力を監視し、割込マスクレベルレジスタ４６の内容（ＣＰＵ２が実行する割込処理の優先順位）を更新する制御部５２が設けられている。この結果、比較器４８がＣＰＵ割込要求信号ＩＮＴＲを出力して、ＣＰＵ２がこのＣＰＵ割込要求信号ＩＮＴＲに対応した割込処理を実行する際には、制御部５２の動作によって、割込マスクレベルレジスタ４６の内容が、ＣＰＵ２が実際に実行する割込処理に対応するように更新されることになる。
【００３６】
一方、上記のように、ＣＰＵ２が、ＣＰＵ割込要求信号ＩＮＴＲを受けて、そのとき実行中の割込処理を中断した際には、ＣＰＵ２は、そのＣＰＵ割込要求信号ＩＮＴＲに対応した割込処理を完了した後、中断した割込処理を再開する。このため、制御部５２による割込マスクレベルレジスタ４６の更新動作だけでは、割込マスクレベルレジスタ４６の内容を、ＣＰＵ２が実際に実行している割込処理の優先順位を表す割込マスクレベルに設定することができない。
【００３７】
そこで、本実施例では、ＣＰＵ２が、ＣＰＵ割込要求信号ＩＮＴＲを受けて、そのとき実行中の割込処理を中断した際には、後述の割込例外処理を実行することにより、割込マスクレベルの待避指令として、割込マスクレベルスタック信号ＳＴＫを割込コントローラ４に出力し、その後、その中断した割込処理を再開する際には、後述の割込復帰処理を実行することにより、割込マスクレベルの復帰指令として、割込マスクレベルリターン信号ＲＴＮを割込コントローラ４に出力するようにされている。
【００３８】
そして、割込コントローラ４側では、ＣＰＵ２から割込マスクレベルスタック信号ＳＴＫが入力されると、割込マスクレベルレジスタ４６が、データバス９を構成する割込マスクレベルのビット数分（本実施例では３ビット）の信号線上に、内部の割込マスクレベルを出力することにより、ＲＡＭ６の所定のスタック領域に、ＣＰＵ２が中断した割込処理の優先順位を表す割込マスクレベルを待避（スタック）させ、逆に、ＣＰＵ２から割込マスクレベルリターン信号ＲＴＮが入力されると、割込マスクレベルレジスタ４６が、割込マスクレベルの出力に用いたデータバス９の信号線を介して、ＲＡＭ６に待避（スタック）した割込マスクレベルを取り込むようにされている。
【００３９】
つまり、こうすることで、割込マスクレベルレジスタ４６の内容（割込マスクレベル）を、常に、ＣＰＵ２が実行中の割込処理の優先順位に対応させることができるようにしているのである。尚、本実施例においては、割込マスクレベルレジスタ４６と制御部５２とにより、本発明のレベル情報記憶・更新手段としての機能が実現される。
【００４０】
次に、ＣＰＵ２において実行される割込例外処理及び割込復帰処理について説明する。
まず、図２（ａ）は、  割込コントローラ４からＣＰＵ割込要求信号ＩＮＴＲが入力され、割込の準備が完了した際に実行される割込例外処理を表すフローチャートである。
【００４１】
この割込例外処理は、請求項５に記載の割込例外処理に相当するものであり、処理が開始されると、まずＳ１１０（Ｓはステップを表す）にて、割込コントローラ４に対して、割込準備完了を表す応答信号ＩＮＴＡＣＫを出力して、割込コントローラ４から、ＣＰＵ割込要求信号ＩＮＴＲに対応した処理を実行するためのベクタアドレスを読み込む。次に、続くＳ１２０では、割込コントローラ４からＣＰＵ割込要求信号ＩＮＴＲを受け付けた時点で実行中の命令が終了するのを待ち、その命令が終了すると（Ｓ１２０：ＹＥＳ）、Ｓ１３０に移行する。
【００４２】
そして、Ｓ１３０では、アドレスバス８を介して、ＲＡＭ６の所定のスタック領域を指定すると共に、割込コントローラ４に対して、割込マスクレベルスタック信号ＳＴＫを出力し、更に、システムレジスタ（ＰＳＲ）２６及びプログラムカウンタ（ＰＣ）２８から、データバス９の所定の信号線上に内部のデータを出力させることにより、ＲＡＭ６の所定のスタック領域に、ＣＰＵ割込要求信号ＩＮＴＲの入力に伴い中断した割込処理のＰＳＲ値，ＰＣ値，及び割込マスクレベルを待避（スタック）させる。
【００４３】
尚、Ｓ１３０の処理は、ＣＰＵ割込要求信号ＩＮＴＲの入力に伴い中断した割込処理のＰＳＲ値及びＰＣ値と、その割込処理の優先順位を表す割込マスクレベルレジスタ４６内の割込マスクレベルとを、同時に、ＲＡＭ６の所定のスタック領域に待避（スタック）させるための処理であり、システムレジスタ（ＰＳＲ）２６及びプログラムカウンタ（ＰＣ）２８内のデータ（ＰＳＲ値及びＰＣ値）は、データバス９を構成する全ビット数分（本実施例では３２ビット）の信号線の内、割込マスクレベルレジスタ４６が内部の割込マスクレベルを出力するのに使用する上位３ビット分の信号線とは異なる信号線上に出力される。
【００４４】
具体的には、図３に示すように、割込マスクレベルレジスタ４６に記憶された割込マスクレベルが、データバス９の上位３ビット分の信号線を使ってＲＡＭ６に転送され、プログラムカウンタ（ＰＣ）２８の値（ＰＣ値：本実施例では、２４ビット）が、データバス９の下位２４ビット分の信号線を使ってＲＡＭ６に転送され、システムレジスタ（ＰＳＲ）２６に記憶されたデータ（ＰＳＲ値：本実施例では、５ビット）が、データバス９を構成する残りの５ビット分の信号線を使ってＲＡＭ６に転送される。
【００４５】
そして、このようにＳ１３０の処理によって、ＣＰＵ２が中断した割込処理に対応する各データがＲＡＭ６に待避（スタック）されると、続くＳ１４０に移行して、Ｓ１１０で読み込んだベクタアドレスを、プログラムカウンタ（ＰＣ）２８にセットすることにより、割込コントローラ４からのＣＰＵ割込要求信号ＩＮＴＲに対応した新たな割込処理を開始させる。
【００４６】
一方、図２（ｂ）は、上記割込例外処理によって開始させた割込処理が完了したときに発生するリターン指令によって実行される割込復帰処理を表すフローチャートである。そして、この割込復帰処理は、Ｓ２１０にて、アドレスバス８を介して、ＲＡＭ６の所定のスタック領域を指定することにより、ＲＡＭ６からデータバス９上に、上述の割込マスクレベル，ＰＳＲ値，ＰＣ値からなる最新のスタック情報を出力させると共に、割込コントローラ４に対して、割込マスクレベルリターン信号ＲＴＮを出力することにより、データバス９を構成する全信号線の内、割込マスクレベルの出力に用いた信号線から、割込マスクレベルを取り込ませ、更に、データバス９の残りの信号線（本実施例では２９ビット分）からＰＳＲ値及びＰＣ値を取り込み、これら各値を、システムレジスタ（ＰＳＲ）２６及びプログラムカウンタ（ＰＣ）２８に夫々書き込む、といった手順で実行される。
【００４７】
この結果、ＣＰＵ２においては、割込コントローラ４からのＣＰＵ割込要求信号ＩＮＴＲによって前回中断した割込処理が再開され、しかも、割込コントローラ４の割込マスクレベルレジスタ４６には、その再開した割込処理の優先順位を表す割込マスクレベルが格納されることになる。
【００４８】
以上説明したように、本実施例のマイクロコンピュータにおいては、多重割込可能なマイクロコンピュータにおいて従来ＣＰＵ側に設けていた割込マスクレベルレジスタを、割込コントローラ４側に設け、割込コントローラ４側で、ＣＰＵが実行中の割込処理の優先順位を管理するようにされている。
【００４９】
このため、多重割込可能なマイクロコンピュータを実現するに当たって、本実施例の割込コントローラ４を用いるようにすれば、ＣＰＵ２側に、割込マスクレベルレジスタを設ける必要がないので、ＣＰＵ２の回路規模を小さくすることができる。そして、このＣＰＵ２を、多重割込が不要で、割込コントローラ４を設ける必要のない小規模なマイクロコンピュータと、本実施例のような多重割込が必要な大規模なマイクロコンピュータとで共用するようにすれば、多重割込が不要な小規模なマイクロコンピュータの小型化、低コスト化を図ることができるようになる。
【００５０】
また、本実施例では、ＣＰＵ２が、割込コントローラ４からのＣＰＵ割込要求信号ＩＮＴＲに従い今まで実行していた割込処理を中断して新たな割込処理を開始する際に、中断した割込処理を再開するのに必要な処理情報（ＰＳＲ値及びＰＣ値）をＲＡＭ６に待避（スタック）するのと同時に、割込マスクレベルレジスタ４６に記憶された割込マスクレベルをＲＡＭ６に待避（スタック）させ、その後、その割込処理を再開する際に、ＣＰＵ２がＲＡＭ６から処理情報（ＰＳＲ値及びＰＣ値）を読み出し、システムレジスタ（ＰＳＲ）２６及びプログラムカウンタ（ＰＣ）に書き込むのと同時に、割込マスクレベルレジスタ４６が割込マスクレベルをＲＡＭ６から読み出し、割込マスクレベルを更新するようにされている。
【００５１】
このため、本実施例のマイクロコンピュータによれば、割込コントローラ４が、ＣＰＵ２に対して多重割込を行った際に、その割込処理の実行後に、多重割込によって中断した元の割込処理を実行することができるだけでなく、ＣＰＵ２が現在実行中の割込処理を中断して、新たな割込処理を開始するのに要する時間、及び、新たな割込処理の実行後に、元の割込処理に復帰するのに要する時間が、従来のマイクロコンピュータに比べて長くなるようなことはなく、割込処理の開始・復帰を速やかに行うことができる。
【００５２】
以上、本発明の一実施例について説明したが、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。
例えば、上記実施例では、データバス９が３２ビットであり、ＣＰＵ２が割込処理を中断／復帰させる際には、このデータバス９を構成する信号線を、割込マスクレベル転送用と、ＰＳＲ値転送用と、ＰＣ値転送用とに分割して使用し、これら各データを同時に転送するものとして説明したが、例えば、これら各データ値のビット数の合計が上記実施例と同じ３２ビットであり、データバス９が１６ビットであるような場合には、これら各データの転送を２回に分けて行う、というように、ＲＡＭ６に対する割込処理用データの待避及びＲＡＭ６からの割込処理用データの復帰（読取）時には、データバスを利用して複数回に分けてデータ転送を行うようにしてもよい。
【００５３】
また、上記実施例では、割込マスクレベルを３ビットとして説明したが、例えば、周辺回路から入力される割込要求信号の種類が少なく、各割込要求信号の優先順位を２ビットの２値データで記述できる場合には、割込マスクレベルレジスタ４６を２ビットの２値データを記憶可能に構成し、割込コントローラ４からＲＡＭ６には、２ビットの割込マスクレベルを転送するようにするとよい。また、例えば、周辺回路から入力される割込要求信号の種類が多く、各割込要求信号の優先順位を３ビットの２値データで記述できない場合には、割込マスクレベルレジスタ４６のビット数を、優先順位を記述した２値データのビット数（例えば５ビット）に設定し、割込コントローラ４からＲＡＭ６には、この割込マスクレベル（５ビット）を、上位３ビットと下位２ビットというように２回に分けて転送するようにしてもよい。
【００５４】
また、上記実施例では、ＣＰＵ２から応答信号ＩＮＴＡＣＫを受けて割込コントローラ４がＣＰＵ２へ出力する割込識別情報として、ベクタアドレスを用いるものとして説明したが、この識別情報としては、ベクタアドレスに限らず、ＣＰＵ２が実行すべき割込処理を識別可能となる情報であれば、例えば、一定の信号パターンなどであっても良い。また、割込コントローラ４は、その割込識別情報を、データバス９を介してＣＰＵ２に送るのではなく、パラレルまたはシリアルの信号線で送るようにしても良い。
【００５５】
また、上記実施例では、割込コントローラ４は、割込識別情報伝達手段として、ベクタアドレス記憶部５０を内蔵するものとして説明したが、ベクタアドレス記憶部５０と同じ機能を有する回路を、割込コントローラ４の外部に設け、割込コントローラ４は、この回路から、ベクタアドレス（割込識別情報）を出力させるようにしてもよい。
【図面の簡単な説明】
【図１】  実施例のマイクロコンピュータにおける本発明に係わる主要部の構成を表すブロック図である。
【図２】  ＣＰＵにて実行される割込例外処理及び割込復帰処理を表すフローチャートである。
【図３】  割込例外処理及び割込復帰処理の際にデータバスを介して転送される割込処理用データの構成を表す説明図である。
【符号の説明】
２…ＣＰＵ、４…割込コントローラ、６…ＲＡＭ、８…アドレスバス、９…データバス、２２…制御部、２４…汎用レジスタ、２６…システムレジスタ（ＰＳＲ）、２８…プログラムカウンタ（ＰＣ）、４２…割込優先順位設定レジスタ、４４…優先順位判定回路、４６…割込マスクレベルレジスタ、４８…比較器、
５０…ベクタアドレス記憶部、５２…制御部。
【図１】
0004151198.tif 000002
【図２】
0004151198.tif 000003
【図３】
0004151198.tif 000004