(57)【特許請求の範囲】
【請求項１】
複数のレジスタと、
複数の割込み要因に対応する複数の退避パタンが設定された複数の退避レジスタリストと、
受け付けられた割込み要求に応じて、命令メモリから割り込みハンドラの命令コードをフェッチする命令フェッチ制御回路と、
受け付けられた割込み要因に対応する退避パタンを、前記複数の退避レジスタリストから取得し、前記複数のレジスタの中から前記取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリに退避するためのマイクロ命令を発行するレジスタ退避制御回路と、
前記フェッチされた命令コードよりも前に、前記マイクロ命令を実行する命令実行部と、
複数の割込み信号線のいずれかに入力される割込み信号に応じた割込みベクタを出力する割込みコントローラと
を具備し、
前記割込みコントローラは、前記複数の割込み信号線に対応して設けられた複数の退避パタン識別番号設定レジスタを有し、当該複数の退避パタン識別番号設定レジスタには前記複数の退避パタンに対応する複数の退避パタン識別番号が格納され、
前記割込みコントローラは、第１割込み信号線から入力される割込み信号に応じた割込みベクタと、前記第１割込み信号線に対応する退避パタン識別番号設定レジスタ内の退避パタン識別番号とを対応付けて出力し、
前記レジスタ退避制御回路は、前記退避パタン識別番号に応じた退避パタンを前記複数の退避レジスタリストから取得することを特徴とする
マイクロコンピュータ。
【請求項２】
請求項１に記載のマイクロコンピュータにおいて、
前記レジスタ退避制御回路は、前記退避レジスタ内のコンテクストの退避に利用した退避パタンに対応する退避パタン識別番号を前記データメモリに退避し、復帰処理の際、前記データメモリに退避したデータを、前記退避した退避パタン識別番号に対応する退避パタンで指定された前記退避レジスタに格納する
マイクロコンピュータ。
【請求項３】
請求項１又は２に記載のマイクロコンピュータにおいて、
前記レジスタ退避制御回路は、他の処理の終了後に発行されるポップ命令に応じて復帰先の前記退避レジスタを特定し、前記データメモリに退避したデータを復帰するためのマイクロ命令を発行し、
前記命令実行部は、前記データメモリに退避したデータを復帰するためのマイクロ命令を実行する
マイクロコンピュータ。
【請求項４】
請求項１から３のいずれか１項に記載のマイクロコンピュータにおいて、
前記命令実行部は、前記レジスタ退避制御回路から発行されるマイクロ命令をパイプライン処理する
マイクロコンピュータ。
【請求項５】
請求項１から４のいずれか１項に記載のマイクロコンピュータにおいて、
前記複数の割込み信号線のいずれかは、同じ退避パタンに対応付けられる
マイクロコンピュータ。
【請求項６】
請求項１から５のいずれか１項に記載のマイクロコンピュータにおいて、
前記レジスタ退避制御回路は、前記マイクロ命令を格納するメモリを具備する
マイクロコンピュータ。
【請求項７】
複数のレジスタと、
複数の割込み要因に対応する複数の退避パタンが設定された複数の退避レジスタリストと、
受け付けられた割込み要求に応じて、命令メモリから割り込みハンドラの命令コードをフェッチする命令フェッチ制御回路と、
受け付けられた割込み要因に対応する退避パタンを、前記複数の退避レジスタリストから取得し、前記複数のレジスタの中から前記取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリに退避するためのマイクロ命令を発行するレジスタ退避制御回路と、
前記フェッチされた命令コードよりも前に、前記マイクロ命令を実行する命令実行部と、
複数の割込み信号線のいずれかに入力される割込み信号に応じた割込みベクタを出力する割込みコントローラと、
前記複数の退避パタンに対応する複数の退避パタン識別番号と、割込みベクタとが対応付けられて設定された退避パタン識別番号設定テーブルに基づいて、前記割込みコントローラから出力された割込みベクタに対応する退避パタン識別番号を出力する退避パタン識別番号生成回路と
を具備し、
前記レジスタ退避制御回路は、前記出力された退避パタン識別番号に対応する退避パタンを前記複数の退避レジスタリストから取得することを特徴とする
マイクロコンピュータ。
【請求項８】
請求項７に記載のマイクロコンピュータにおいて、
前記レジスタ退避制御回路は、前記退避レジスタ内のコンテクストの退避に利用した退避パタンに対応する退避パタン識別番号を前記データメモリに退避し、復帰処理の際、前記データメモリに退避したデータを、前記退避した退避パタン識別番号に対応する退避パタンで指定された前記退避レジスタに格納する
マイクロコンピュータ。
【請求項９】
請求項７又は８に記載のマイクロコンピュータにおいて、
前記レジスタ退避制御回路は、他の処理の終了後に発行されるポップ命令に応じて復帰先の前記退避レジスタを特定し、前記データメモリに退避したデータを復帰するためのマイクロ命令を発行し、
前記命令実行部は、前記データメモリに退避したデータを復帰するためのマイクロ命令を実行する
マイクロコンピュータ。
【請求項１０】
請求項７から９のいずれか１項に記載のマイクロコンピュータにおいて、
前記命令実行部は、前記レジスタ退避制御回路から発行されるマイクロ命令をパイプライン処理する
マイクロコンピュータ。
【請求項１１】
請求項７から１０のいずれか１項に記載のマイクロコンピュータにおいて、
前記複数の割込み信号線のいずれかは、同じ退避パタンに対応付けられる
マイクロコンピュータ。
【請求項１２】
請求項７から１１のいずれか１項に記載のマイクロコンピュータにおいて、
前記レジスタ退避制御回路は、マイクロ命令を格納するメモリを具備する
マイクロコンピュータ
【請求項１３】
複数の退避レジスタリストに複数の割込み要因に対応する複数の退避パタンを設定するステップと、
命令フェッチ制御回路が、プロセッサにおいて受け付けられた割込み要求に応じて、命令メモリから割り込みハンドラの命令コードをフェッチするステップと、
レジスタ退避制御回路が、プロセッサにおいて受け付けられた割込み要因に対応する退避パタンを、前記複数の退避レジスタリストから取得するステップと、
前記レジスタ退避制御回路が、前記取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリに退避するためのマイクロ命令を発行するステップと、
命令実行部が、前記フェッチされた命令コードよりも前に、前記マイクロ命令を実行するステップと、
割込みコントローラが複数の割込み信号線のいずれかに入力される割込み信号に応じた割込みベクタを出力するステップと、
前記複数の割込み信号線に対応して設けられた複数の退避パタン識別番号設定ＰＴＮレジスタに、前記複数の退避パタンに対応する複数の退避パタン識別番号を格納するステップと
を具備し、
前記退避パタンを取得するステップは、
前記割込みコントローラが、第１割込み信号線から入力される割込み信号に応じた割込みベクタと、前記第１割込み信号線に対応する退避パタン識別番号設定ＰＴＮレジスタ内の退避パタン識別番号とを対応付けて出力するステップと、
前記レジスタ退避制御回路が、前記出力された退避パタン識別番号に対応する退避パタンを前記複数の退避レジスタリストから取得するステップと
を備える
割込み制御方法。
【請求項１４】
請求項１３に記載の割込み制御方法において、
前記レジスタ退避制御回路が、前記退避レジスタ内のコンテクストの退避に利用した退避パタンに対応する退避パタン識別番号を前記データメモリに退避するステップと、
復帰処理の際、前記レジスタ退避制御回路が、前記データメモリに退避したデータを、前記退避した退避パタン識別番号に対応する退避パタンで指定された前記退避レジスタに格納するステップと
を更に具備する
割込み制御方法。
【請求項１５】
請求項１３又は１４に記載の割込み制御方法において、
前記レジスタ退避制御回路が、他の処理の終了後に発行されるポップ命令に応じて復帰先の前記退避レジスタを特定し、前記データメモリに退避したデータを復帰するためのマイクロ命令を発行するステップと、
前記命令実行部が、前記データメモリに退避したデータを復帰するためのマイクロ命令を実行するステップと
を更に具備する
割込み制御方法。
【請求項１６】
請求項１３から１５のいずれか１項に記載の割込み制御方法において、
前記コンテクストを退避するためのマイクロ命令を実行するステップは、前記命令実行部が、前記レジスタ退避制御回路から発行されるマイクロ命令をパイプライン処理するステップを備える
割込み制御方法。
【請求項１７】
複数の退避レジスタリストに複数の割込み要因に対応する複数の退避パタンを設定するステップと、
命令フェッチ制御回路が、プロセッサにおいて受け付けられた割込み要求に応じて、命令メモリから割り込みハンドラの命令コードをフェッチするステップと、
レジスタ退避制御回路が、プロセッサにおいて受け付けられた割込み要因に対応する退
避パタンを、前記複数の退避レジスタリストから取得するステップと、
前記レジスタ退避制御回路が、前記取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリに退避するためのマイクロ命令を発行するステップと、
命令実行部が、前記フェッチされた命令コードよりも前に、前記マイクロ命令を実行するステップと、
割込みコントローラが複数の割込み信号線のいずれかに入力される割込み信号に応じた割込みベクタを出力するステップと
を具備し、
前記退避パタンを取得するステップは、
退避パタン識別番号生成回路が、前記複数の退避パタンに対応する複数の退避パタン識別番号と、割込みベクタとが対応付けられて設定された退避パタン識別番号設定ＰＴＮテーブルに基づいて、前記割込みコントローラから出力された割込みベクタに対応する退避パタン識別番号を出力するステップと、
前記レジスタ退避制御回路が、前記出力された退避パタン識別番号に対応する退避パタンを前記複数の退避レジスタリストから取得するステップと
を備える
割込み制御方法。
【請求項１８】
請求項１７に記載の割込み制御方法において、
前記レジスタ退避制御回路が、前記退避レジスタ内のコンテクストの退避に利用した退避パタンに対応する退避パタン識別番号を前記データメモリに退避するステップと、
復帰処理の際、前記レジスタ退避制御回路が、前記データメモリに退避したデータを、
前記退避した退避パタン識別番号に対応する退避パタンで指定された前記退避レジスタに格納するステップと
を更に具備する
割込み制御方法。
【請求項１９】
請求項１７又は１８に記載の割込み制御方法において、
前記レジスタ退避制御回路が、他の処理の終了後に発行されるポップ命令に応じて復帰
先の前記退避レジスタを特定し、前記データメモリに退避したデータを復帰するためのマイクロ命令を発行するステップと、
前記命令実行部が、前記データメモリに退避したデータを復帰するためのマイクロ命令
を実行するステップと
を更に具備する
割込み制御方法。
【請求項２０】
請求項１７から１９のいずれか１項に記載の割込み制御方法において、
前記コンテクストを退避するためのマイクロ命令を実行するステップは、前記命令実行
部が、前記レジスタ退避制御回路から発行されるマイクロ命令をパイプライン処理するス
テップを備える
割込み制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割込み処理を行うマイクロコンピュータ及びマイクロコンピュータにおける割込み制御方法に関し、特に、割込み処理時のデータ退避方法に関する。
【背景技術】
【０００２】
近年、携帯電子機器（例示：携帯電話）や家電製品、あるいは自動車の電子制御装置等、様々な電子機器にマイクロコンピュータが搭載されている。このような電子機器やコンピュータの高性能化に伴い、マイクロコンピュータの処理能力の更なる向上が望まれている。
【０００３】
マイクロコンピュータ内のプロセッサでは、実行中の命令より優先度の高い割込みが発生した場合、実行中の命令を中断して、割込みシーケンスが実行される。割り込み処理が開始されると、プロセッサは、プログラムステータスワード（ＰＳＷ）、プログラムカウンタ（ＰＣ）の内容や汎用レジスタの内容（コンテクスト）を一時的にスタックメモリ等に退避する。又、割込み処理の終了後、退避したコンテクストを再びＰＳＷ、ＰＣ、及び汎用レジスタに戻すことにより、中断していた処理を再開することができる。
【０００４】
図１Ａ及び図１Ｂは、従来技術によるマイクロコンピュータにおける割込み処理に係る回路ブロックの構成を示す図である。図１Ａ及び図１Ｂを参照して従来技術による割込み機能の詳細を説明する。
【０００５】
従来技術によるマイクロコンピュータは、割込みコントローラ１００、プロセッサ２００、命令メモリ３００、データメモリ４００を具備する。割込みコントローラ１００は、入力された割込み信号に応じて、プロセッサ２００に対する割込みベクタＩＮＴＶＣＴ及び割込み要求ＩＮＴＲＥＱをセットする。この際、割込みコントローラ１００は、割込み信号毎に設定された優先度ＰＲを参照し、優先度ＰＲが高い割込みベクタＩＮＶＣＴを優先してプロセッサ２００に出力する。
【０００６】
プロセッサ２００は、割込み要求ＩＮＴＲＥＱが“１”にセットされると、割込みベクタＩＮＶＣＴに応じた命令コードを命令メモリ３００から読み出して実行する。この際、プロセッサ２００は、実行中の処理を中断し、当該処理においてレジスタファイル２０４に格納されていたデータ（コンテクスト）をデータメモリ４００に退避する。
【０００７】
詳細には、プロセッサ２００は、割込み処理制御回路２０１、命令フェッチ制御回路２０２、命令実行部２０３、レジスタファイル２０４を備える。割込み処理制御回路２０１は、命令フェッチ制御回路２０２を制御して割込み処理の実行を制御するとともに、割込み処理の受付や実行終了を割込みコントローラ１００に通知する。割込み処理制御回路２０１は、割込み要求ＩＮＴＲＥＱに応じて、命令フェッチ制御回路２０２を制御し、割込みベクタＩＮＶＣＴに応じた命令コードをフェッチさせる。命令実行部２０３は、命令フェッチ制御回路２０２でフェッチされた命令コードを実行する。
【０００８】
命令実行部２０３は、割込み処理を開始するとレジスタファイル２０４内のデータをデータメモリ４００（例えばスタックメモリ）に退避する。詳細には、命令実行部２０３は、先ずＰＣ及びＰＳＷの内容をデータメモリ４００に退避し、続いて、汎用レジスタＲ０〜Ｒ３１の内容をデータメモリ４００に退避する。レジスタファイル２０４内のデータの退避が終了すると、命令実行部２０３は割込み要求に応じた処理を実行する。
【０００９】
割込み処理が終了すると、命令実行部２０３は、リターン命令に応じてデータメモリ４００に退避したデータをレジスタファイル２０４に復帰させ、中断していた処理を再開する。
【００１０】
このように、レジスタファイル２０４内のデータを退避してから割込み処理を実行することで、レジスタファイル２０４内のデータを破壊することなく、任意の汎用レジスタを使用して割込み処理を実行することができる。
【００１１】
割込み処理時に退避対象となる汎用レジスタのバリエーションは、割込み処理の内容毎に決まっている場合がある。しかし、従来技術では、割込み処理時に退避対象となる汎用レジスタを指定することができないため、実行され得る全ての割込み処理の退避対象レジスタを、割込み処理の内容に関係なく常に指定する必要がある。例えば、第１の割込み処理時に退避するべき汎用レジスタがレジスタＲ０〜Ｒ４であり、第２の割込み処理時に退避するべき汎用レジスタがレジスタＲ１０〜Ｒ１４である場合、実行される割込み処理が第１の割込み処理であっても、レジスタＲ０〜Ｒ４、Ｒ１０〜Ｒ１４内のデータを退避する必要がある。この場合、レジスタＲ１０〜Ｒ１４内のデータを退避する時間や、退避先で使用されるメモリ容量が無駄となってしまう。
【００１２】
以上のように、従来技術における割込み処理では、割込み要因が異なっても同じレジスタを退避しているため、退避する必要のないレジスタまで退避してしまう。このためレジスタ退避に要する時間が増大し、退避に必要なメモリ領域を大きくする必要があった。特に、割込み処理の頻度が増加した場合、レジスタの退避処理に多くの時間を要し、プログラムに対する処理能力低下の原因になっていた。
【００１３】
このような問題を解決する技術が、特開平９−１３４２９２に記載されている（特許文献１参照）。特許文献１では、ユーザプログラムが利用するレジスタ群を特定するレジスタ利用識別子を用意し、これを用いて退避レジスタを指定することで、割込み処理時の退避対象レジスタを限定している。これにより、割込みに応じて退避するレジスタはユーザプログラム毎に変更され、退避及び復帰に要する時間や退避先のメモリ容量等の無駄を排除することが可能となる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平９−１３４２９２
【発明の概要】
【発明が解決しようとする課題】
【００１５】
特許文献１に記載の割込み制御方法では、ユーザプログラム毎に設定されたレジスタ利用識別子を用いて、退避対象レジスタと、レジスタの復帰及び退避を行う命令列とを特定し、特定した命令列を実行することでユーザプログラムに対応するレジスタ群の退避及び復帰を行っている。
【００１６】
特許文献１では、予め設定されたレジスタ利用識別子、又はユーザプログラムの実行時に設定された当該プログラムに対応するレジスタ利用識別子を用いて、退避対象レジスタを特定している。このため、割込み処理によって変更されるレジスタに関係なく実行中のプログラムが利用するレジスタ群のみを退避することができる。
【００１７】
一般に、メインルーチンで使用するレジスタ数は、割込みによって実行されるサブルーチン（割込みハンドラ）で使用されるレジスタ数より多い。このため、メインルーチンとして実行されるユーザプログラムに基づいて指定した退避レジスタの数は、割込み処理で使用するレジスタ数よりも多くなるのが一般的である。このため、ユーザプログラムに基づいて退避レジスタを決定した場合、割込みによって破壊される恐れのないレジスタを退避することがあり、退避時間や退避先のメモリ容量の増大を招く恐れがある。
【００１８】
又、特許文献１では、プログラム毎に退避命令列及び復帰命令列をメモリ内に用意しているため、メモリ容量を増大させる必要がある。特に、割込みのネスティング（多重割込み）を考慮した場合、割込み処理を行うプログラムにもレジスタ利用識別子、退避命令列及び復帰命令列を用意する必要がある。これらの識別子や命令列は、他のプログラムで使用可能なメモリ領域を圧迫するため、メモリ容量の増大を招く要因となる。
【００１９】
更に、割込みのネスティングが発生した場合のレジスタの退避方法は、特許文献１に記載されていない。仮に、ユーザプログラムと同様に、実行中の割り込み処理に対応するレジスタ利用識別子を利用して退避レジスタを指定する場合、割込みが発生する毎にレジスタ利用識別子を設定する処理が必要となり、プロセッサにおける処理時間が長大化してしまう。
【００２０】
又、レジスタ利用識別子によって特定された退避命令列を実行する場合、当該命令列をメモリからフェッチする必要がある。特に、割込みのネスティングが発生した場合、発生した割込みの数だけフェッチによる処理の遅延は累積され、プロセッサの処理能力を低下させる原因となる。
【課題を解決するための手段】
【００２１】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために、［発明を実施するための形態］で使用される番号・符号が付加されている。ただし、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【００２２】
本発明によるマイクロコンピュータは、複数の退避レジスタリスト（２７０）、命令フェッチ制御回路（２２）、レジスタ退避制御回路（２５）、命令実行部（２３）を具備する。複数の退避レジスタリスト（２７０）には、複数の割込み要因に対応する複数の退避パタンが設定される。命令フェッチ制御回路（２２）は、受け付けられた割込み要求に応じて、命令メモリ（３）から命令コードをフェッチする。レジスタ退避制御回路（２５）は、受け付けられた割込み要因に対応する退避パタンを、複数の退避レジスタリスト（２７０）から取得し、取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリ（４）に退避するためのマイクロ命令を発行する。命令実行部（２３）は、フェッチされた命令コードよりも前に、マイクロ命令を実行する。
【００２３】
本発明による割込み制御方法は、複数の退避レジスタリスト（２７０）に、複数の割込み要因に対応する複数の退避パタンを設定するステップと、命令フェッチ制御回路（２２）が、受け付けられた割込み要求に応じて、命令メモリ（３）から命令コードをフェッチするステップと、レジスタ退避制御回路（２５）が、プロセッサ（２）において受け付けられた割込み要因に対応する退避パタンを、複数の退避レジスタリスト（２７０）から取得するステップと、取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリ（４）に退避するためのマイクロ命令を発行するステップと、命令実行部（２３）が、フェッチされた命令コードよりも前に、マイクロ命令を実行するステップとを具備する。
【００２４】
本発明では、割込み要因に応じて退避対象のレジスタを特定できるため、レジスタを退避するための命令コードをフェッチすることなくマルチサイクルによるマイクロ命令で退避処理が可能となる。このため、退避のための命令コードのフェッチに要する時間を削減できるとともに、退避対象レジスタを割込み要因に応じて特定することが可能となる。
【発明の効果】
【００２５】
従って、本発明によれば、割込み処理時に退避するデータ量を削減することができる。
【００２６】
又、割込み処理時間を短縮することができる。
【００２７】
更に、割込み受付からコンテクストの退避開始までの時間を短縮することができる。
【図面の簡単な説明】
【００２８】
【図１Ａ】図１Ａは、従来技術によるマイクロコンピュータにおける割込み処理に係る回路ブロックの構成を示す図である。
【図１Ｂ】図１Ｂは、従来技術によるマイクロコンピュータにおける割込み処理に係る回路ブロックの構成を示す図である。
【図２Ａ】図２Ａは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第１の実施の形態における構成を示す図である。
【図２Ｂ】図２Ｂは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第１の実施の形態における構成を示す図である。
【図３】図３は、割込み要因毎に設定された退避パタンの一例を示す図である。
【図４】図４は、本発明に係るレジスタ退避パタン番号設定レジスタユニットの設定例を示す図である。
【図５】図５は、本発明に係るＰＴＮ設定レジスタの設定例を示す図である。
【図６】図６は、本発明による割込み受付から復帰までの動作の一例を示すフロー図である。
【図７Ａ】図７Ａは、本発明による割込み処理の動作の詳細を示すフロー図である。
【図７Ｂ】図７Ｂは、本発明による割込み処理の動作の詳細を示すフロー図である。
【図８Ａ】図８Ａは、本発明による割込み処理の第１の実施の形態における動作の一例を示すタイミングチャートである。
【図８Ｂ】図８Ｂは、本発明による割込み処理の第１の実施の形態における動作の一例を示すタイミングチャートである。
【図９Ａ】図９Ａは、従来技術による割込み処理の動作の一例を示すタイミングチャートである。
【図９Ｂ】図９Ｂは、従来技術による割込み処理の動作の一例を示すタイミングチャートである。
【図１０】図１０は、本発明による復帰処理の第１の実施の形態における動作を示すフロー図である。
【図１１Ａ】図１１Ａは、本発明による復帰処理の第１の実施の形態における動作の一例を示すタイミングチャートである。
【図１１Ｂ】図１１Ｂは、本発明による復帰処理の第１の実施の形態における動作の一例を示すタイミングチャートである。
【図１２Ａ】図１２Ａは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第２の実施の形態における構成を示す図である。
【図１２Ｂ】図１２Ｂは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第２の実施の形態における構成を示す図である。
【図１３】図１３は、本発明による割込み処理の第２の実施の形態における動作の一例を示すタイミングチャートである。
【図１４】図１４は、従来技術によるパイプライン処理による割込み動作の一例を示すタイミングチャートである。
【図１５Ａ】図１５Ａは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第３の実施の形態における構成を示す図である。
【図１５Ｂ】図１５Ｂは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第３の実施の形態における構成を示す図である。
【図１６Ａ】図１６Ａは、第３の実施の形態におけるＰＴＮ生成回路が従うＰＴＮテーブルの一例を示す図である。
【図１６Ｂ】図１６Ｂは、第３の実施の形態におけるＰＴＮ生成回路の構成の一例を示す図である。
【図１７Ａ】図１７Ａは、本発明による復帰処理の第４の実施の形態における動作を示すタイミングチャートである。
【図１７Ｂ】図１７Ｂは、本発明による復帰処理の第４の実施の形態における動作を示すタイミングチャートである。
【発明を実施するための形態】
【００２９】
（概要）
本発明によるマイクロコンピュータは、割込み要因毎に設定された識別子（退避パタン識別番号）によって、退避対象のレジスタを特定し、実行する割込み処理で退避が必要なレジスタのみを退避する。これにより、割込み処理時に退避するデータ量が従来に比べて削減され、退避先のメモリ容量を小さくすることができるとともにレジスタ退避に要する時間を短縮することができる。
【００３０】
又、本発明によるマイクロコンピュータは、マイクロ命令によって退避処理を制御するレジスタ退避制御回路を具備している。レジスタ退避制御回路は、レジスタ内のコンテクストを退避するためのマイクロ命令によって命令実行部を制御する。命令実行部は、割込み処理のための命令コードがフェッチされている間に当該マイクロ命令を実行し、退避パタン識別番号で指定されたレジスタ内のコンテクストをデータメモリに退避する。これにより、レジスタの退避から割込み処理を実行するまでの時間が短縮され、プロセッサの利用効率を高めることができる。
【００３１】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
【００３２】
１．第１の実施の形態
図２Ａ及び図２Ｂは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第１の実施の形態における構成を示す図である。図２Ａ及び図２Ｂを参照して、本発明によるマイクロコンピュータは、割込みコントローラ１（ＩＮＴＣ１）、プロセッサ２（ＣＰＵ２）、命令メモリ３、データメモリ４を具備する。
【００３３】
割込みコントローラ１は、優先度判定回路１１、複数の割込みフラグレジスタ群１２−０〜１２−（ｎ−１）、ＩＳＰＲレジスタ１３、制御回路１４を備える。ここでｎは２以上の整数である。
【００３４】
複数の割込みフラグレジスタ群１２−０〜１２−（ｎ−１）は、対応する複数の割込み信号線ＩＮＴ０〜ＩＮＴｎ−１に接続されている。複数の割込みフラグレジスタ群１２−０〜１２−（ｎ−１）のそれぞれは、フラグレジスタ１２１、優先レベル設定レジスタ（ＰＲレジスタ）１２２、及び退避パタン識別番号設定レジスタ（ＰＴＮ設定レジスタ）１２３を備える。
【００３５】
複数の割込み信号線ＩＮＴ０〜ＩＮＴｎ−１のそれぞれには、それぞれ異なる割込み要因に対応する割込み信号が入力される。割込みフラグレジスタ群１２−０〜１２−（ｎ−１）内の各レジスタは、自身に接続された割込み信号線ＩＮＴから入力される割込み信号に応じた値がセットされる。すなわち、複数の割込みフラグレジスタ群１２−０〜１２−（ｎ−１）のそれぞれには、異なる割込み要因に対応した値がセットされる。
【００３６】
詳細には、フラグレジスタ１２１には、割込み要因の発生有無を示す１ビットの割込み要因フラグがセットされる。割込み要因が発生した場合、フラグレジスタ１２１には割込み要因フラグとして“１”がセットされ、割込み要因がない場合は“０”がセットされる。ＰＲレジスタ１２２には、割込み要因に設定された優先度がセットされる。ＰＲレジスタ１２２は優先度のレベル数に応じたサイズのレジスタである。例えば、４つの優先度が設定される場合、２ビットのＰＲレジスタ１２２が割込み信号線ＩＮＴ０〜ＩＮＴｎ−１の各々に設けられる。
【００３７】
フラグレジスタ１２１及びＰＲレジスタ１２２の構成は、従来技術と同様であるが、本実施の形態による割込みコントローラ１には、割込み要因毎（割込み信号線ＩＮＴ０〜ＩＮＴｎ−１のそれぞれ）に対応づけられたＰＴＮ設定レジスタ１２３が更に設けられる。ＰＴＮ設定レジスタ１２３には、割込み要因に対応する退避パタンを特定するための退避パタン識別番号（以下、ＰＴＮと称す）が設定される。ここで退避パタンとは、割込み要因が発生したときに退避させるべきレジスタを指定する情報である。退避パタンは割込み要因毎に設定されており、割込み要因によっては同じ退避パタンが設定されていても構わない。
【００３８】
例えば、ｎ本の割込み信号線ＩＮＴ（ｎ個の割込み要因）に対し４つのＰＴＮ（“０”、“１”、“２”、“３”）が設定される場合、２ビットのＰＴＮ設定レジスタ１２３が、割込み信号線ＩＮＴ０〜ＩＮＴｎ−１の各々に設けられ、それぞれに４つの退避パタン識別番号ＰＴＮのいずれかが設定される。この際、割込み信号線ＩＮＴの数は４以上でも構わない。
【００３９】
ＩＳＰＲレジスタ１３には、現在実行中の割込み処理のサービスレベル（優先度）がセットされる。例えば、ＩＳＰＲレジスタ１３は４ビットのレジスタ“００００Ｂ”で構成される。この場合、各ビット位置は、下位から順に優先度“０”、“１”、“２”、“３”に対応し、実行中の優先度に対応するビット位置に“１”が設定される。優先度判定回路１は、割込み要因フラグがセットされた割込み要因の優先度と、現在実行中の処理の優先度とを比較し、優先度の高い処理を優先してプロセッサ２に実行させる。ここで、優先度判定回路１は、複数の割込みフラグレジスタ群１２−０〜１２−（ｎ−１）を参照し、割込み要因フラグがセットされたフラグレジスタ１２１に対応するＰＲレジスタ１２２の優先度の中で最も高い優先度と、ＩＳＰＲレジスタ１３に設定された優先度とを比較する。
【００４０】
セットされた割込み要因フラグの中で最も高い優先度が、実行中の処理の優先度より高い場合、優先度判定回路１は、割込み要求フラグＩＮＴＲＥＱに“１”を設定するとともに、最も高い優先度の割込み要因に対応する割込みベクタＩＮＴＶＣＴ（割込みハンドラ開始番地）をプロセッサ２に出力する。この際、本実施の形態における優先度判定回路１１は、当該割込み要因に対応するＰＴＮ設定レジスタ１２３から取得した退避パタン識別番号ＩＮＴＰＴＮをプロセッサ２に出力する。
【００４１】
一方、セットされた割込み要因フラグの優先度が、実行中の処理の優先度より同じ又は低い場合、優先度判定回路１は、当該割込み要因に応じた割込みベクタＩＮＴＶＣＴの出力を待機する。この場合、割込み処理の終了に応じて、セットされた割込み要因フラグの中で最も高い優先度の割込み要因に応じた割込み要求がプロセッサ２に発行される。この際、本実施の形態における優先度判定回路１１は、当該割込み要因に対応するＰＴＮ設定レジスタ１２３から取得した退避パタン識別番号ＩＮＴＰＴＮをプロセッサ２に出力する。
【００４２】
制御回路１４は、プロセッサ２からの割込み受付通知ＩＮＴＡＣＴに応じて、プロセッサ２で実行中の割り込み処理のサービスレベル（優先度）をＩＳＰＲレジスタ１３に設定する。又、制御回路１４は、プロセッサ２からの割込み処理終了通知ＩＮＴＦＩＮに応じて、終了した割込み処理に対応するフラグレジスタ１２１に“０”をセットする（リセットする）。
【００４３】
プロセッサ２は、割込み処理制御回路２１、命令フェッチ制御回路２２、命令実行部２３、レジスタファイル２４、レジスタ退避制御回路２５、レジスタリスト選択回路２６、レジスタ退避パタン番号設定レジスタユニット２７を備える。
【００４４】
割込み処理制御回路２１は、命令フェッチ制御回路２２を制御して割込み処理の実行を制御するとともに、割込み処理の受付や実行終了を割込みコントローラ１に通知する。割込み処理制御回路２１は、割込み要求ＩＮＴＲＥＱに応じて、命令フェッチ制御回路２２を制御し、割込みベクタＩＮＶＣＴに応じた命令コードをフェッチさせる。
【００４５】
命令実行部２３は、命令フェッチ制御回路２２でフェッチされた命令コードや、レジスタ退避制御回路２５から発行されるマイクロ命令を実行する。命令実行部２３は、フェッチされた命令コードよりもレジスタ退避制御回路２５から発行される命令コードを優先的に実行する。
【００４６】
詳細には、命令実行部２３は、レジスタ退避制御回路２５からのマルチサイクルのマイクロ命令に応じて、レジスタファイル２４内のデータをデータメモリ４に退避する。この際、レジスタ退避制御回路２５は、レジスタリスト選択回路２６によって選択された退避パタンに従って、退避対象となるレジスタを命令実行部２３に指定する。
【００４７】
レジスタファイル２４内のデータの退避が終了すると、命令実行部２３は、命令フェッチ制御回路２２によってフェッチされた命令コード（割り込み処理）を実行する。
【００４８】
レジスタ退避制御回路２５は、割込み処理制御回路２１から通知された退避パタン識別番号ＰＴＮを格納するＰＴＮレジスタ２５０を備える。レジスタ退避制御回路２５は、割込み処理制御回路２１からの割込み要求及び退避パタン識別番号の通知を受け取ると、ＰＴＮレジスタ２５０に格納するとともにレジスタリスト選択回路２６に出力する。レジスタリスト選択回路２６は、レジスタ退避パタン番号設定レジスタユニット２７内の複数の退避レジスタリスト２７０から、ＰＴＮレジスタ２５０に格納された退避パタン番号ＰＴＮに対応する退避レジスタリスト２７０を選択する。退避レジスタリスト２７０には、割込み要因毎に設定された退避対象レジスタを指定する退避パタンが退避パタン識別番号ＰＴＮに対応付けられて設定されている。レジスタリスト選択回路２６は、選択した退避レジスタリスト２７０内の退避パタンを抽出し、レジスタ退避制御回路２５に出力する。
【００４９】
レジスタ退避制御回路２５は、レジスタの退避処理を制御するためのマイクロプログラムが格納されたＲＡＭを有し、退避パタンを含めたマイクロ命令を命令実行部２３に発行することで、割込み要因に対応する退避対象レジスタの退避処理を実行させる。
【００５０】
レジスタファイル２４は、プログラムカウンタ（ＰＣ）を格納するＰＣレジスタ２４１、プログラムステータスワード（ＰＳＷ）を格納するＰＳＷレジスタ２４２、割込み処理時にＰＣの退避先となるＥＩＰＣレジスタ２４３、割込み処理時にＰＳＷの退避先となるＥＩＰＳＷレジスタ２４４、及び複数の汎用レジスタ２４０（例えば３２ビットの汎用レジスタＲ０〜Ｒ３１）を備える。
【００５１】
以上のような構成により、プロセッサ２は、割込み許可状態において優先度が最も高い割込み要因を受付け、当該割込み要因に対応する退避パタンで指定されたレジスタ内のコンテクストをデータメモリ４に退避する。
【００５２】
図３から図５を参照して、割込み要因毎に設定される退避パタン（退避対象レジスタ）のバリエーションについて説明する。図３は、割込み要因毎に設定された退避パタンの一例を示す図である。ここでは、以下の４つの退避パタンを例示する。
【００５３】
（１）割込み信号線ＩＮＴ０−１５の１６ＣＨは、ＯＳ用の割込みとして使用される。この場合、ＯＳによって破壊される可能性のある汎用レジスタＲ３、Ｒ２０〜Ｒ３１の１３本のレジスタを退避する必要があり、これらを退避対象レジスタとして指定する退避パタンが退避レジスタリスト２７０に設定される。
【００５４】
（２）割込み信号線ＩＮＴ１６−３１の１６ＣＨは、ユーザ割込みＡとして使用される。この場合、割込みハンドラによって破壊される可能性のある汎用レジスタ２４０（Ｒ０〜Ｒ４）、ＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４の７本のレジスタを退避する必要があり、これらを退避対象レジスタとして指定する退避パタンが退避レジスタリスト２７０に設定される。
【００５５】
（３）割込み信号線ＩＮＴ３２−４７の１６ＣＨは、ユーザ割込みＢとして使用される。この場合、割込みハンドラによって破壊される可能性のある汎用レジスタ２４０（Ｒ１０〜Ｒ１４）、ＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４の７本のレジスタを退避する必要があり、これらを退避対象レジスタとして指定する退避パタンが退避レジスタリスト２７０に設定される。
【００５６】
（４）割込み信号線ＩＮＴ４８−６３の１６ＣＨは、ユーザ割込みＣとして使用される。この場合、割込みハンドラによって破壊される可能性のある汎用レジスタ２４０（Ｒ３、Ｒ１０〜Ｒ１４、Ｒ３０、Ｒ３１）、ＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４の１０本のレジスタを退避する必要があり、これらを退避対象レジスタとして指定する退避パタンが退避レジスタリスト２７０に設定される。
【００５７】
上述の（１）〜（４）の退避パタンは、それぞれ退避パタン識別番号ＰＴＮである“０”、“１”、“２”、“３”に対応付けられる。図４は、本発明に係るレジスタ退避パタン番号設定レジスタユニット２７の設定例を示す図である。退避レジスタリスト２７０は、退避パタン識別番号ＰＴＮに対応付けられた複数のレジスタによって構成される。図４に示す一例では、退避レジスタとして、４つの退避パタン識別番号ＰＴＮに対応付けられた４つのレジスタリスト２７０で構成されている。退避レジスタリスト２７０は、例えば３４ｂｉｔのフリップフロップによって構成され、それぞれのビット位置は、汎用レジスタ２４０（Ｒ０〜Ｒ３１）、及びＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４に対応している。
【００５８】
退避レジスタリスト２７０において、退避対象レジスタに対応するビット位置に“１”を設定し、退避しないレジスタに対応するビット位置に“０”を設定することで、退避レジスタリスト２７０に退避パタンを設定することができる。レジスタ退避パタン番号設定レジスタユニット２７内の各退避レジスタリスト２７０は、退避パタン識別番号ＰＴＮ毎に設けられているため、退避パタン識別番号ＰＴＮを指定することで、退避パタンを一意に特定することができる。図４に示す一例では、上述の（１）〜（４）で示す処理に対応する退避パタンは、それぞれ、退避パタン識別番号ＰＴＮ“０”〜“３”に対応付けられてレジスタ退避パタン番号設定レジスタユニット２７に設定される。
【００５９】
例えば、退避パタン識別番号ＰＴＮ“１”がプロセッサ２に通知された場合、これに対応するレジスタリスト２７０が選択され、“１”が設定されたレジスタ内のデータが、データメモリ４に退避される。
【００６０】
一方、本実施の形態における割込みコントローラ１には、割込み要因（割込み信号線）毎に退避パタン識別番号ＰＴＮが設定される。図５は、本発明に係るＰＴＮ設定レジスタ１２３の設定例を示す図である。図５に示す一例では、６４本の割込み信号線ＩＮＴ０〜ＩＮＴ６３のそれぞれに２ビットのＰＴＮ設定レジスタ１２３が設けられ、それぞれに割込み要因に対応する退避パタン識別番号ＰＴＮが設定される。ここでは、割込み信号線ＩＮＴ０〜ＩＮＴ１５（ＩＮＴ番号０〜１５）に対して退避パタン識別番号“０”が設定され、割込み信号線ＩＮＴ１６〜ＩＮＴ３１（ＩＮＴ番号１６〜３１）に対して退避パタン識別番号“１”が設定され、割込み信号線ＩＮＴ３２〜ＩＮＴ４７（ＩＮＴ番号３２〜４７）に対して退避パタン識別番号“２”が設定され、割込み信号線ＩＮＴ４８〜ＩＮＴ６３（ＩＮＴ番号４８〜６３）に対して退避パタン識別番号“３”が設定される。
【００６１】
本実施の形態における割込みコントローラ１は、割込み要因の発生に応じて、割込み信号線に対応する退避パタン識別番号ＰＴＮを取得し、プロセッサ２に通知する。これにより、レジスタ退避制御回路２５は、通知された退避パタン識別番号ＰＴＮを利用することで、割込みの受付処理を開始すると同時に退避対象となるレジスタ（退避パタン）を特定し、退避処理を実行することができる。
【００６２】
次に、図６から図１１Ｂを参照して、第１の実施の形態における割込み処理の動作の詳細を説明する。
【００６３】
図６は、本発明による割込み受付から復帰までの動作の一例を示すフロー図である。図６を参照して、割込み受付からメインルーチンに復帰するまでの多重割込み動作の一例を説明する。
【００６４】
メインルーチンを実行中に、割込みが許可されると優先度が最も高い割り込みが受付けられる（ステップＳ１０１、Ｓ１０２）。ここでは、発生した割込み要因の優先度“１”が、実行中のメインルーチンのサービスレベル（優先度）よりも高いため、プロセッサ２は割込みを受け付け、割込みハンドラに分岐して、割込みルーチン１を実行する。この際、プロセッサ２は、受け付けた割込み要因によって一意に決まるレジスタをデータメモリ４に退避する。
【００６５】
割り込みルーチン１を実行中に、割込みが許可されると、入力された割り込み信号のうち最も高い優先度が実行中ルーチンのサービスレベル（優先度）より高い場合、当該割込み処理が受付けられる（ステップＳ２０１、Ｓ２０２）。ここでは、新たに発生した割込み要因の優先度“０”が、実行中の割込みルーチン１の優先度“１”よりも高いため、プロセッサ２は割込みを受け付け、割込みハンドラに分岐して、割込みルーチン２を実行する。この際、プロセッサ２は、受け付けた割込み要因によって一意に決まるレジスタをデータメモリ４に退避する。
【００６６】
割込みルーチン２の実行中に、割込みが許可された後、割込みルーチン２が終了すると、プロセッサ２は復帰命令（ＲＥＴ命令）を実行する（ステップＳ３０１、Ｓ３０２）。ここでは、ステップＳ２０２においてデータメモリ４に退避したデータをレジスタファイル２４に復帰させ、中断していた割込みルーチン１を再開する。
【００６７】
割込みルーチン１が終了すると、プロセッサ２は復帰命令（ＲＥＴ命令）を実行する（ステップＳ２０３）。ここでは、ステップＳ１０２においてデータメモリ４に退避したデータをレジスタファイル２４に復帰させ、中断していたメインルーチンを再開する。
【００６８】
以上のように、本発明では、多重割込み処理においても、各割込み受付の際に割込み要因に応じたレジスタ内のコンテクストを退避している。このため、割込み処理によって破壊されないレジスタの退避を防止し、退避データ量の削減が実現される。
【００６９】
図７Ａ〜図８Ｂを参照して、本発明による割込み受付処理の動作の詳細を説明する。ここでは一例として、マイクロコンピュータに図３から図５に示す退避パタン及び退避パタン識別番号ＰＴＮが設定されているものとして説明する。
【００７０】
図７Ａ及び図７Ｂは、図６に示すステップＳ１０２、Ｓ２０２における割込み受付処理の動作の詳細を示すフロー図である。
【００７１】
図７Ａ及び図７Ｂを参照して、割込みコントローラ１は、フラグレジスタ１２１を参照して割込み要因の検索を行い、検出した割込み要因の優先度の判定を行う（ステップＳ１１）。ここで、割込みコントローラ１は、フラグレジスタ１２１に“１”が設定された割込み要因の優先度の中で最も高い優先度を選択し、当該優先度が現在実行中のサービスレベル（優先度）より高いか否かを判定する。
【００７２】
選択した優先度が現在のサービスレベルより高い場合、割込みコントローラ１は、当該優先度の割込み要因に対応する割込み要求ＩＮＴＲＥＱに“１”をセットするとともに、当該割込み要因に対応する割込みベクタＩＮＴＶＣＴ及び退避パタン識別番号ＩＮＴＰＴＮを出力する（ステップＳ１２Ｙｅｓ、Ｓ１３）。一方、選択した優先度が現在のサービスレベルより低い場合、ステップＳ１１に移行する（ステップＳ１２Ｎｏ）。
【００７３】
プロセッサ２に対する割込みが許可されている場合（ＰＳＷの割り込み禁止フラグＤＩ＝“０”）、プロセッサ２は、“１”が設定された割込み要求ＩＮＴＲＥＱに応じて、割込みベクタＩＮＴＶＣＴ及び退避パタン識別番号ＩＮＴＰＴＮを取得する（ステップＳ１４Ｙｅｓ、Ｓ１５）。このとき、プロセッサ２は、割込み要求ＩＮＴＲＥＱを受け付けたことを示す割込み受付通知ＩＮＴＡＣＴを割込みコントローラ１に通知する。一方、プロセッサ２に対して割込みが禁止されている場合（ＰＳＷの割り込み禁止フラグＤＩ＝“１”）、ステップＳ１１に移行する（ステップＳ１４Ｎｏ）。
【００７４】
割込みコントローラ１は、割込み受付通知ＩＮＡＣＴに応じて、プロセッサ２によって受け付けられた割込み要因のサービスレベル（優先度）をＩＳＰＲレジスタ１３に設定し、当該割込み要因に対応するフラグレジスタ１２１から割込み要因フラグを消去する（ステップＳ１６）。
【００７５】
ステップＳ１５の後、プロセッサ２は、割込み要求ＩＮＴＲＥＱに応じて、現在実行中の命令を中断し割込み禁止状態となる（ステップＳ１７〜Ｓ１９）。詳細には、プロセッサ２は、割込み許可状態である場合、割込み要求ＩＮＴＲＥＱに応じて現在実行中の命令を中断するとともに、中断時のＰＣ及びＰＳＷをＥＩＰＣレジスタ２４３及びＥＩＰＳＷレジスタ２４４に保存する（ステップＳ１７、Ｓ１８）。これにより、割込み処理を実行する前のプロセッサ２の内部状態が保存される。
【００７６】
内部状態が保存されると、プロセッサ２は、割込み禁止状態（ＰＳＷの割り込み禁止フラグＤＩ＝“１”）に設定される（ステップＳ１９）。又、割込みベクタＩＮＴＶＣＴで指定された割込みハンドラのフェッチが開始される（ステップＳ２０）。更に、割込みパタン識別信号ＩＮＴＰＴＮに対応するレジスタが選択され、レジスタ退避制御回路２５によるマイクロ命令に応じて当該レジスタ内のデータがデータメモリ４に退避される（ステップＳ２１）。尚、ステップＳ１９〜Ｓ２１の処理は同じタイミングで開始される。
【００７７】
割込み退避パタン識別番号ＩＮＴＰＴＮで指定されたレジスタの退避が終了すると、プロセッサ２は、割込み退避パタン識別番号ＩＮＴＰＴＮに応じた退避パタン識別番号ＰＴＮをデータメモリ４に退避する（ステップＳ２２）。
【００７８】
レジスタ及び退避パタン識別番号ＰＴＮの退避が終了すると、プロセッサ２は、フェッチされた割込みハンドラを実行する（ステップＳ２３）。割込み処理が開始されることで割込み受付処理は終了する。
【００７９】
以上のように、本発明では、割込み要因の発生に応じて優先度判定が行われ、受け付けられた割込みハンドラがフェッチされている間に受け付けられた割込み要因に応じたレジスタの退避が行われる。
【００８０】
本発明では、退避パタン識別番号ＰＴＮによって退避対象レジスタを一意に特定しているため、割込みによって破壊される恐れのあるレジスタのみを選択して退避することができる。これにより、退避に必要なメモリ容量や退避時間を削減することができる。又、退避処理は、レジスタ退避制御回路２５のマイクロプログラムを実行することで実現されるため、命令コードを命令メモリ３からフェッチする必要がない。このため、退避命令のフェッチに要する時間を削減でき、退避処理に要する時間を短縮することができる。
【００８１】
図８Ａ及び図８Ｂは、本発明による割込み処理の第１の実施の形態における動作の一例を示すタイミングチャートである。図８Ａ及び図８Ｂを参照して、第１の実施の形態における割込み処理の動作の詳細を説明する。ここでは、優先度“１”の割込みが発生した後、優先度“１”より高い優先度“０”の多重割込みが発生した場合の動作について説明する。尚、ここでは、退避パタン、レジスタ退避パタン番号設定レジスタユニット２７、及びＰＴＮ設定レジスタ１２３の各設定が、図３、図４及び図５のように設定されているものとする。又、フラグレジスタ１２１に設定される割込み要因フラグの優先度は、以下のとおりである。すなわち、割込み要因ＩＮＴ３０〜ＩＮＴ３１には優先度“１”（Ｐｒｉ１）、割込み要因ＩＮＴ３２には優先度“０”（Ｐｒｉ０）、割込み要因ＩＮＴ３４〜ＩＮＴ３６には優先度“２”（Ｐｒｉ２）、割込み要因ＩＮＴ３３、ＩＮＴ３７には優先度“３”（Ｐｒｉ３）が設定されている。
【００８２】
先ず、クロックＣ０において、割込みコントローラ１に優先度“３”（Ｐｒｉ３）の割込み要因信号ＩＮＴ３３が入力される。この際、ＩＳＰＲとして“００００Ｂ”が設定されており（実行中割込み処理なし）、割込み要因信号ＩＮＴ３４以外の割込み要因の発生はない。このため、割込みコントローラ１は、割込み要因ＩＮＴ３３の発生から２クロック後のクロックＣ２において、割込み要因ＩＮＴ３３の発生をプロセッサ２に通知する。ここでは、割込み要求フラグＩＮＴＲＥＱに“１”が設定され、割込みベクタＩＮＴＶＣＴとして“３１０Ｈ”、退避パタン識別番号ＩＮＴＰＴＮとして“２Ｈ”が出力される。
【００８３】
又、クロックＣ１において、割込みコントローラ１に優先度“２”（Ｐｒｉ２）の割込み要因信号ＩＮＴ３４が入力される。この際、ＩＳＰＲとして“００００Ｂ”が設定されており（実行中割込み処理なし）、割込み要因信号ＩＮＴ３４は、発生した他の割込み要因の中で最高優先度を示す。このため、割込みコントローラ１は、割込み要因ＩＮＴ３４の発生から２クロック後のクロックＣ３で割込み要因ＩＮＴ３４の発生をプロセッサ２に通知する。ここでは、割込み要求フラグＩＮＴＲＥＱに“１”が設定され、割込みベクタＩＮＴＶＣＴとして“３２０Ｈ”、退避パタン識別番号ＩＮＴＰＴＮとして“２Ｈ”が出力される。
【００８４】
更に、クロックＣ２において、割込みコントローラ１に優先度“１”（Ｐｒｉ１）の割込み要因信号ＩＮＴ３１が入力される。この際、ＩＳＰＲとして“００００Ｂ”が設定されており（実行中割込み処理なし）、割込み要因信号ＩＮＴ３１は発生した他の割込み要因の中で最高優先度を示す。このため、割込みコントローラ１は、割込み要因ＩＮＴ３１の発生から２クロック後のクロックＣ４で割込み要因ＩＮＴ３１の発生をプロセッサ２に通知する。ここでは、割込み要求フラグＩＮＴＲＥＱに“１”が設定され、割込みベクタＩＮＴＶＣＴとして“２Ｆ０Ｈ”、退避パタン識別番号ＩＮＴＰＴＮとして“１Ｈ”が出力される。
【００８５】
クロックＣ０〜Ｃ３の間、プロセッサ２は割込み許可の状態であるが、プロセッサ２の内部状態によって割込みを受け付けられない状態となっている。この間、ＩＮＴ３３、ＩＮＴ３４は受け付けられない。クロックＣ４において、プロセッサ２が割込み受付可能となると、プロセッサ２は、割込みコントローラ１から出力された割込みベクタＩＮＴＶＣＴ“２Ｆ０Ｈ”（割込み要因ＩＮＴ３１）を受付け、割込み受付通知ＩＮＴＡＣＴを割込みコントローラ１に返す。
【００８６】
クロックＣ４において、割込み処理が受け付けられると、プロセッサ２の内部状態（ＰＣ、ＰＳＷの値：ｉｎｓ４（ＰＣ）、ｉｎｓ４（ＰＳＷ））がＥＩＰＣレジスタ２４３及びＥＩＰＳＷレジスタ２４４に保存される。
【００８７】
クロックＣ５において、割込みコントローラ１では、割込み受付通知ＩＮＡＣＴに応じて割込み要因ＩＮＴ３１の要因フラグがクリアされる。又、プロセッサ２で受け付けられた割込み要因ＩＮＴ３１の優先度“Ｐｒｉ１”に応じてＩＳＰＲレジスタ１３の下位２ビット目が“１”（“００１０Ｂ”）に設定される。更に、割込み受付通知ＩＮＡＣＴを出力したプロセッサ２では、ＰＳＷにおける割り込み禁止フラグＤＩに“１”がセットされることで割込み禁止状態となる。
【００８８】
又、クロックＣ５において、割込みを受け付けた割込み処理制御回路２１からの制御によって、命令フェッチ制御回路２２は、割込みハンドラの命令コード（ＥＩ命令）をフェッチし、レジスタ退避制御回路２５は、レジスタの退避を開始する。この際、退避パタン識別番号ＰＴＮ“１Ｈ（ＰＴＮ１）”がＰＴＮレジスタ２５０に設定される。
【００８９】
詳細には、レジスタ退避制御回路２５は、退避パタン識別番号ＩＮＴＰＴＮ“１Ｈ（ＰＴＮ１）”に応じた退避パタンをレジスタ退避パタン番号設定レジスタユニット２７から抽出する。そして、レジスタ退避制御回路２５は、この退避パタン“ＰＴＮ１”を含む退避命令（マルチサイクルのマイクロ命令）を命令実行部２３に供給する。命令実行部２３は、フェッチされたＥＩ命令を待機させ、先にレジスタ退避制御回路２５からの退避命令を実行する。これにより、クロックＣ５〜Ｃ１１において、退避パタン識別番号ＩＮＴＰＴＮ“１Ｈ（ＰＴＮ１）”で指定されたＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４、汎用レジスタ２４０（Ｒ０、Ｒ１、Ｒ２、Ｒ３、Ｒ４）のそれぞれにセットされたコンテクストがデータメモリ４に退避され、クロックＣ１２においてＰＴＮレジスタ２５０内の退避パタン識別番号ＰＴＮ“１Ｈ（ＰＴＮ１）”がデータメモリ４に退避される。
【００９０】
命令実行部２３は、退避対象として指定されたレジスタの退避を終了すると、フェッチされているＥＩ命令（割込み許可命令）を実行する（クロックＣ１３）。以降、割込みベクタ“２Ｆ０Ｈ”で指定された領域から命令コードがフェッチされ、命令実行部２３において割込みハンドラが実行される。尚、クロックＣ１３におけるＥＩ命令の実行により、次のクロックＣ１４で割込み禁止は解除される。
【００９１】
本発明では、割込みを受け付けた直後のクロックＣ５にＥＩ命令がフェッチされるが、ＥＩ命令を実行せずにクロックＣ５からレジスタ退避制御回路２５のマイクロ命令が実行される。
【００９２】
一方、クロックＣ９において、優先度“０”（Ｐｒｉ０）の割込み要因信号ＩＮＴ３２が入力される。この際、ＩＳＰＲとして“００１０Ｂ”が設定されており（サービスレベルＰｒｉ１の割込み処理中）、割込み要因信号ＩＮＴ３２は発生した他の割込み要因の中で最高優先度を示す。このため、割込みコントローラ１は、割込み要因ＩＮＴ３２の発生から２クロック後のクロックＣ１１で割込み要因ＩＮＴ３１の発生をプロセッサ２に通知する。ここでは、割込み要求フラグＩＮＴＲＥＱに“１”が設定され、割込みベクタＩＮＴＶＣＴとして“３００Ｈ”、退避パタン識別番号ＩＮＴＰＴＮとして“２Ｈ”が出力される。
【００９３】
クロックＣ１４においてＥＩ命令の実行によりプロセッサ２への割込みが許可され、クロックＣ１６において割込みの受付が可能な状態となると、プロセッサ２は、割込みコントローラ１から出力された割込みベクタＩＮＴＶＣＴ“３００Ｈ”（割込み要因ＩＮＴ３２）を受付け、割込み受付通知ＩＮＴＡＣＴを割込みコントローラ１に返す。
【００９４】
以降、クロックＣ４からＣ１３と同様に、実行中の割込み処理を中断し、割込み要因ＩＮＴ３２に応じたレジスタの退避及び割込み処理が実行される。
【００９５】
詳細には、クロックＣ１６において、割込み処理が受け付けられると、プロセッサ２の内部状態（ＰＣ、ＰＳＷの値：ｉｎｔ１２（ＰＣ）、ｉｎｔ１２（ＰＳＷ））がＥＩＰＣレジスタ２４３及びＥＩＰＳＷレジスタ２４４に保存される。
【００９６】
クロックＣ１７において、割込みコントローラ１では、割込み受付通知ＩＮＡＣＴに応じて割込み要因ＩＮＴ３２の要因フラグがクリアされる。又、プロセッサ２で受け付けられた割込み要因ＩＮＴ３２の優先度“Ｐｒｉ０”に応じてＩＳＰＲレジスタ１３の下位１ビット目が“１”（“００１１Ｂ”）に設定される。更に、割込み受付通知ＩＮＡＣＴを出力したプロセッサ２では、ＰＳＷにおける割り込み禁止フラグＤＩに“１”がセットされることで割込み禁止状態となる。
【００９７】
又、クロックＣ１７において、割込みを受け付けた割込み処理制御回路２１からの制御によって、命令フェッチ制御回路２２は、割込みハンドラの命令コード（ＥＩ命令）をフェッチし、レジスタ退避制御回路２５は、レジスタの退避を開始する。この際、退避パタン識別番号ＰＴＮ“２Ｈ（ＰＴＮ２）”がＰＴＮレジスタ２５０に設定される。
【００９８】
ここでは、レジスタ退避制御回路２５は、退避パタン識別番号ＩＮＴＰＴＮ“２Ｈ（ＰＴＮ２）”に応じた退避パタンをレジスタ退避パタン番号設定レジスタユニット２７から抽出する。そして、レジスタ退避制御回路２５は、この退避パタン“ＰＴＮ１”を含む退避命令（マルチサイクルのマイクロ命令）を命令実行部２３に供給する。命令実行部２３は、フェッチされたＥＩ命令を待機させ、先にレジスタ退避制御回路２５からの退避命令を実行する。これにより、クロックＣ１７〜Ｃ２３において、退避パタン識別番号ＩＮＴＰＴＮ“２Ｈ（ＰＴＮ２）”で指定されたＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４、汎用レジスタ２４０（Ｒ１０、Ｒ１１、Ｒ１２、Ｒ１３、Ｒ１４）のそれぞれにセットされたコンテクストがデータメモリ４に退避され、クロックＣ２４においてＰＴＮレジスタ２５０内の退避パタン識別番号ＰＴＮ“２Ｈ（ＰＴＮ２）”がデータメモリ４に退避される。
【００９９】
命令実行部２３は、退避対象として指定されたレジスタの退避を終了すると、フェッチされているＥＩ命令（割込み許可命令）を実行する（クロックＣ２５）。以降、割込みベクタ“３００Ｈ”で指定された領域から命令コードがフェッチされ、命令実行部２３において割込みハンドラが実行される。尚、クロックＣ２５におけるＥＩ命令の実行により、次のクロックＣ２６で割込み禁止は解除される。
【０１００】
以上のように、本発明では、割込み要因によって一意に特定されるレジスタを退避対象として指定することができるため、実行する割込み処理毎に、データ破壊を防止するための最小限のレジスタのみを退避することができる。
【０１０１】
次に、図９Ａ及び図９Ｂに示す従来例を参照して、本発明による割込み受付処理による効果について説明する。図９Ａ及び図９Ｂは、従来技術による割込み処理の動作の一例を示すタイミングチャートである。
【０１０２】
従来技術では、クロックＣ４においてプロセッサ２００によって割込み割込みが受け付けられると、クロックＣ４でフェッチされた処理を取りやめ、クロックＣ５においてＰＣ及びＰＳＷの値をＥＩＰＣレジスタ及びＥＩＰＳＷレジスタに保存する。そして次のクロックＣ５以降、ＥＩＰＣ、ＥＩＰＳＷ、及び汎用レジスタを退避するための命令コードがフェッチ及び実行される。
【０１０３】
従来技術では、レジスタ退避の命令コードをフェッチしてから実行しているため、実行中の処理を中断してからレジスタ退避が開始（実行）されるまでの期間が２クロックとなる。一方、本発明では、割込み処理制御回路２１からの割込み指示に応じて動作するレジスタ退避制御回路２５によるマイクロ命令によってレジスタ退避が制御されている。すなわち、実行中の処理を中断後、レジスタ退避命令をフェッチすることなく実行できるため、処理を中断してからレジスタの退避を開始するまでの期間は１クロックとなり、従来技術よりも早くレジスタ退避を開始できる。
【０１０４】
又、本発明では、レジスタ退避を実行している間にも退避後に実行する予定の命令コード（ここではＥＩ命令）をフェッチしているため、レジスタの退避完了後、直ぐに割込みハンドラを開始することができる。
【０１０５】
従来技術では、割込み要因毎に退避対象となるレジスタを選択できない。このため、多重割込みが発生するようなシステムでは、どの割込みが発生しても内部状態が破壊されないように、実行され得る全ての割込み処理の退避対象レジスタを、割込み処理の内容に関係なく常に指定する必要がある。図９Ａ及び図９Ｂに示す一例では、汎用レジスタＲ０〜Ｒ４、Ｒ１０〜Ｒ１４を退避対象として設定されている。この場合、例えば、割込み要因ＩＮＴ３１によって破壊される可能性のある汎用レジスタが汎用レジスタＲ０〜Ｒ４であっても、汎用レジスタＲ１０〜Ｒ１４も退避され、レジスタ退避に要する時間は、クロックＣ６〜Ｃ１６の１１クロックとなる。
【０１０６】
一方、本発明では、割込み要因毎に退避対象レジスタを選択できるため、例えば、割込み要因ＩＮＴ３１の割込み処理を実行する場合、レジスタＲ０〜Ｒ４のみを選択して退避できる。この場合、レジスタ退避に要する時間は、退避パタン識別番号ＰＴＮの退避を含めてもクロックＣ５〜Ｃ１２の８クロックとなり、従来技術に比べて大幅に短縮される。
【０１０７】
又、従来技術では、汎用レジスタＲ１０〜Ｒ１４を退避するためのメモリ容量が無駄に使用されることとなるが、本発明では、不必要なレジスタ退避は行われないため、退避に要するメモリ容量を削減することができる。これにより、データメモリ４の容量を小さくすることができ、回路規模を縮小化することが可能となる。
【０１０８】
次に、図１０から図１１Ｂを参照して、本発明による割込み復帰処理の動作の詳細を説明する。
【０１０９】
図１０は、図６に示すステップＳ２０３、Ｓ３０２における復帰処理の動作の詳細を示すフロー図である。
【０１１０】
図１０を参照して、プロセッサ２は、割込み処理のＲＥＴ命令の実行により、データメモリ４内のスタックポイント（ＳＰ）が示すスタックから退避パタン識別番号ＰＴＮを読み出す（ステップＳ３１）。続いて、読み出された退避パタン識別番号ＰＴＮに対応するレジスタが選択され、レジスタ退避制御回路２５によるマイクロ命令に応じてデータメモリ４から読み出されたデータが当該レジスタに書き込まれる（ステップＳ３２）。ここでは、レジスタ退避制御回路２５が、読み出された退避パタン識別番号ＰＴＮを利用して退避パタン（ここでは復帰パタン：復帰対象となるレジスタ）を特定し、マイクロ命令によって復帰させる。これにより、割込み処理時にデータメモリ４に退避されたレジスタ値が復帰する。
【０１１１】
ステップＳ３２において、ＥＩＰＣ及びＥＩＰＳＷの復帰が行われた場合、それぞれが復帰した次のタイミングで、プロセッサ２の内部状態（ＰＣ、ＰＳＷ）の値が復帰される（ステップＳ３３）。ここでは、ステップＳ３２において復帰したＥＩＰＣレジスタ２４３及びＥＩＰＳＷレジスタ２４４の値がＰＣレジスタ２４１及びＰＳＷレジスタ２４２に保存される。
【０１１２】
続いて、プロセッサ２からの割込み終了通知ＩＮＴＦＩＮに応じて割込みコントローラ１におけるＩＳＰＲ（割込みサービスレベル）が変更される（ステップＳ３４）。詳細には、プロセッサ２は、レジスタ退避制御回路２５からのＲＥＴ命令を実行すると割込み終了通知ＩＮＴＦＩＮを１クロック間“１”に設定し、これに応じて割込みコントローラ１は、ＩＳＰＲレジスタ１３の値を変更する。
【０１１３】
以上のように、本発明では、読み出された退避パタン識別番号ＰＴＮによって復帰対象レジスタを一意に特定しているため、退避したレジスタのみを復帰することができる。又、復帰処理は、レジスタ退避制御回路２５のマイクロプログラムを実行することで実現されるため、命令コードを命令メモリ３からフェッチする必要がない。このため、復帰処理に必要な一連の命令を格納するためのメモリ容量を削減することができる。又、復帰命令のフェッチに要する時間を削減でき、復帰処理に要する時間を短縮することができる。
【０１１４】
図１１Ａ及び図１１Ｂは、本発明による復帰処理の実施の形態における動作の一例を示すタイミングチャートである。図１１Ａ及び図１１Ｂを参照して、実施の形態における復帰処理の動作の詳細を説明する。ここでは一例として、図８Ａ及び図８Ｂで示された割込み処理からの復帰について説明する。
【０１１５】
先ず、クロックＣ０において、割込み要因ＩＮＴ３２による割込み処理が終了し、ＲＥＴ命令の命令コードがフェッチされる。続くクロックＣ１において、プロセッサ２はレジスタ退避制御回路２５によるマイクロ命令を実行し、退避パタン識別番号ＰＴＮをデータメモリ４から読み出す。詳細には、割込み処理制御回路２１は、ＲＥＴ命令のフェッチに応じてレジスタ退避制御回路２５に対し退避指示を発行する。クロックＣ１において、レジスタ退避制御回路２５は、退避指示に応じて退避処理を行うためのマイクロ命令を命令実行部２３に出力する。命令実行部２３は、マイクロ命令をマルチサイクルで実行し、ＳＰで示されたスタックから退避パタン識別番号ＰＴＮ“２Ｈ（ＰＴＮ２）”を読み出して、クロックＣ２においてＰＴＮレジスタ２５０に格納する。尚、ＳＰはマイクロ命令の実行の度に、最上位から順に更新（デクリメント）される。
【０１１６】
クロックＣ３〜Ｃ９において、プロセッサ２は、復帰したＰＴＮレジスタ２５０内の退避パタン識別番号ＰＴＮ“２Ｈ（ＰＴＮ２）”によって復帰対象レジスタを特定し、マイクロ命令による復帰処理を実行する。
【０１１７】
詳細には、レジスタ退避制御回路２５は、退避パタン識別番号ＩＮＴＰＴＮ“２Ｈ（ＰＴＮ２）”に応じた退避パタンをレジスタ退避パタン番号設定レジスタユニット２７から抽出する。そして、レジスタ退避制御回路２５は、この退避パタン“ＰＴＮ２”を含む復帰命令（マルチサイクルのマイクロ命令）を命令実行部２３に供給する。命令実行部２３は、レジスタ退避制御回路２５からの復帰命令を実行する。これにより、クロックＣ３〜Ｃ９において、ＳＰで指定されたスタックからコンテクスト“Ｒ１４〜Ｒ１０”、ＰＳＷ“ｉｎｔ１２（ＰＳＷ）”、及びＰＣ“ｉｎｔ１２（ＰＣ）”が読み出され、それぞれ次のクロックにおいて退避パタン識別番号ＩＮＴＰＴＮ“２Ｈ（ＰＴＮ２）”で指定された汎用レジスタ２４０（Ｒ１４、Ｒ１３、Ｒ１２、Ｒ１１、Ｒ１０）、ＥＩＰＳＷレジスタ２４４、及びＥＩＰＣレジスタ２４３に復帰する。
【０１１８】
クロックＣ１０において、レジスタ退避制御回路２５からのＲＥＴ命令が命令実行部２３で実行されると、プロセッサ２（割込み処理制御回路２１）は復帰終了通知ＩＮＴＦＩＮを１クロック間“１”に設定する。この際、プロセッサ２の内部状態（ＰＣ、ＰＳＷ）は、ＥＩＰＣレジスタ２４３及びＥＩＰＳＷレジスタ２４４の値（ｉｎｔ１２（ＰＣ）、ｉｎｔ１２（ＰＳＷ））によって復帰する。
【０１１９】
続くクロックＣ１１以降において、復帰したＰＣ及びＰＳＷに基づき、割込みによって完了していなかった処理が再開される。ここでは、クロックＣ１１で命令コード“ｉｎｔ１２”がフェッチされ、クロックＣ１２で実行される。
【０１２０】
割込みによって中断された処理が終了すると、クロックＣ１３において、ＲＥＴ命令の命令コードがフェッチされる。続くクロックＣ１４において、プロセッサ２はレジスタ退避制御回路２５によるマイクロ命令を実行し、退避パタン識別番号ＰＴＮをデータメモリ４から読み出す。
【０１２１】
以降、クロックＣ１からＣ９と同様に、クロックＣ１４からＣ２２において、退避パタン識別番号ＰＴＮ“１Ｈ（ＰＴＮ１）”、データメモリ４に退避されていたコンテクスト“Ｒ４〜Ｒ０”、ＰＳＷ“ｉｎｔ４（ＰＳＷ）”、及びＰＣ“ｉｎｔ４（ＰＣ）”が順に読み出され、それぞれ次のクロックにおいて、ＰＴＮレジスタ２５０、退避パタン識別番号ＩＮＴＰＴＮ“１Ｈ（ＰＴＮ１）”で指定された汎用レジスタ２４０（Ｒ４、Ｒ３、Ｒ２、Ｒ１、Ｒ０）、ＥＩＰＳＷレジスタ２４４、及びＥＩＰＣレジスタ２４３に復帰する。
【０１２２】
又、クロックＣ２４以降、各レジスタの復帰終了に応じて、割込みによって中断していたｉｎｔ４以降のメインルーチンが実行される。
【０１２３】
以上のように、本実施の形態による復帰処理では、退避していた退避パタン識別番号ＰＴＮを復帰し、これを用いて復帰先のレジスタを特定することができる。このため、マイクロ命令による復帰処理が可能となり、復帰命令コードのフェッチに要する時間を削減することができる。
【０１２４】
２．第２の実施の形態
次に、図１２Ａから図１４を参照して、第２の実施の形態における割込み処理の動作の詳細を説明する。第１の実施の形態では、割込みハンドラの命令コードをフェッチすることなく退避処理を実行できることから、退避処理の開始が従来よりも１クロック早く実行できた。第２の実施の形態では、退避処理が従来よりも早く開始できる効果が、第１の実施の形態よりも顕著に現れる形態を説明する。
【０１２５】
図１２Ａ及び図１２Ｂは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第２の実施の形態における構成を示す図である。図１２Ａ及び図１２Ｂを参照して、第２の実施の形態における命令実行部２３は、多段のパイプライン構成を示す。命令実行部２３以外の構成は、第１の実施の形態と同様であるので詳細な説明は省略する。
【０１２６】
第２の実施の形態における命令実行部２３は、ディスパッチステージ２３１（ＤＰ２３１）、インストラクションデコードステージ２３２（ＩＤ２３２）、演算ステージ２３３（ＥＸ２３３）、アドレス転送ステージ２３４（ＤＴ２３４）、データフェッチステージ２３５（ＤＦ２３５）、ライトバックステージ２３６（ＷＢ２３６）を備える。ＤＰ２３１は、命令フェッチ制御回路２２によってフェッチされた命令コードをデコードし、実行ユニットを決定する。ＩＤ２３２は、命令コードをデコードし、  イミディエイトデータの作成と、ＤＰ２３１又はマイクロ命令で指定された命令レジスタからのデータの読み出しを実行する。ＥＸ２３３は、命令レジスタから読み出された命令を演算し、メモリアクセスのためのアドレスを生成する。ＤＴ２３４は、ＥＸ２３３で生成されたアドレスをデータメモリ４に転送し、メモリアクセスを実行する。ＤＦ２３５は、ＥＸ２３３における演算結果をデータメモリ４から取得しＷＢ２３３に転送する。ＷＢ２３６は、ＥＸ２３３における演算結果を汎用レジスタ２４０に書き込む。
【０１２７】
第２の実施の形態におけるマイクロコンピュータでは、パイプライン処理によって、割込み処理や復帰処理が前倒しで実行される。本発明では、レジスタ退避制御回路２５によるマイクロ命令を実行することで、命令コードのフェッチ及びデコードに要する２クロック分の処理が省略される。これにより、従来に比べて少なくとも２クロック分早くレジスタの退避や復帰処理を開始することができる。
【０１２８】
図１３は、本発明による割込み処理の第２の実施の形態における動作の一例を示すタイミングチャートである。図１３を参照して、第２の実施の形態における割込み処理の動作の詳細を説明する。ここでは、メインルーチンの実行中のクロックＣ４において割込みが発生した場合の動作について説明する。
【０１２９】
割込みコントローラ１は、第１の実施の形態と同様に割込み要因ＩＮＴ３１の発生から２クロック後のクロックＣ４で割込み要因ＩＮＴ３１の発生をプロセッサ２に通知する。ここでは、割込み要求フラグＩＮＴＲＥＱに“１”が設定され、割込みベクタＩＮＴＶＣＴとして“２Ｆ０Ｈ”、退避パタン識別番号ＩＮＴＰＴＮとして“１Ｈ”が出力される。
【０１３０】
クロックＣ４において、プロセッサ２が割込み受付可能となると、プロセッサ２は、割込みコントローラ１から出力された割込みベクタＩＮＴＶＣＴ“２Ｆ０Ｈ”（割込み要因ＩＮＴ３１）を受付け、割込み受付通知ＩＮＴＡＣＴを割込みコントローラ１に返す。
【０１３１】
クロックＣ４において、割込み処理が受け付けられると、プロセッサ２の内部状態（ＰＣ、ＰＳＷの値：ｉｎｓ４（ＰＣ）、ｉｎｓ４（ＰＳＷ））がＥＩＰＣレジスタ２４３及びＥＩＰＳＷレジスタ２４４に保存される。
【０１３２】
クロックＣ５において、割込みを受け付けた割込み処理制御回路２１からの制御によって、命令フェッチ制御回路２２は、割込みハンドラの命令コード（ＥＩ命令）をフェッチし、レジスタ退避制御回路２５は、レジスタの退避を開始する。この際、退避パタン識別番号ＰＴＮ“１Ｈ（ＰＴＮ１）”がＰＴＮレジスタ２５０に設定される。
【０１３３】
詳細には、レジスタ退避制御回路２５は、退避パタン識別番号ＩＮＴＰＴＮ“１Ｈ（ＰＴＮ１）”に応じた退避パタンをレジスタ退避パタン番号設定レジスタユニット２７から抽出する。そして、レジスタ退避制御回路２５は、この退避パタン“ＰＴＮ１”を含む退避命令（マルチサイクルのマイクロ命令）を命令実行部２３に供給する。クロックＣ６において命令実行部２３は、ＤＰ２３１においてフェッチされたＥＩ命令を処理し、次のステージにおける処理を待機させる。
【０１３４】
ＥＩ命令をＤＰ２３１で待機させている間、レジスタ退避制御回路２５からの退避命令をＩＤ２３２以降の各ステージにて実行する。ここでは、マイクロ命令に従ったＩＤ２３２からＷＢ２３６までのパイプライン処理により、レジスタの退避が行われる。本一例では、退避パタン“ＰＴＮ１”によってＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４、及び汎用レジスタ２４０（Ｒ０〜Ｒ４）が退避対象レジスタとして指定されている。このため、クロックＣ５〜Ｃ１１におけるＩＤ２３２、クロックＣ６〜Ｃ１２におけるＥＸ２３３、クロックＣ７〜Ｃ１３におけるＤＴ２３４の各処理によって、退避パタン“ＰＴＮ１”で指定されたＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４、及び汎用レジスタ２４０（Ｒ０〜Ｒ４）のそれぞれにセットされたコンテクストデータメモリ４に退避される。又、クロックＣ１２におけるＩＤ２３２、クロックＣ１３におけるＥＸ２３３、クロックＣ１４におけるＤＴ２３４の各処理によって、ＰＴＮレジスタ２５０内の退避パタン識別番号ＰＴＮ“１Ｈ（ＰＴＮ１）”がデータメモリ４に退避される。
【０１３５】
命令実行部２３は、ＩＤ２３２において、退避パタン識別番号ＰＴＮを退避するためのＳＴＰＴＮ命令を処理すると、次のクロックＣ１３以降で、ＤＰ２３１で待機しているＥＩ命令に対してパイプライン処理にて実行する。以降、割込みベクタ“２Ｆ０Ｈ”で指定された命令ハンドラが令実行部２３において実行される。
【０１３６】
以上のように、本発明では、割込みの受付と同時に退避すべきレジスタを特定でき、マイクロ命令によってレジスタの退避処理を実行できるため、パイプライン処理におけるＩＦステージ及びＤＰステージの処理を省略することが可能となる。このため、従来よりも２クロック分だけ早くレジスタの退避を行うことができる。
【０１３７】
図１４は、退避対象レジスタが、ＥＩＰＣレジスタ２４３、ＥＩＰＳＷレジスタ２４４、及び汎用レジスタ２４０（Ｒ０〜Ｒ４）である場合のパイプライン処理による割込み処理の動作の一例（従来技術）を示すタイミングチャートである。
【０１３８】
図１４に示すように、退避対象が図１３に示す場合と同じレジスタである場合、従来技術では、レジスタ退避処理を実行する際、ＩＦステージ及びＤＰステージを経るため、本発明に比べて、２クロック分退避処理が遅くなる。
【０１３９】
又、第２の実施の形態における割込み処理方法においても、割込み要因によって一意に特定されるレジスタを退避対象として指定することができるため、実行する割込み処理毎に、データ破壊を防止するための最小限のレジスタのみを退避することができる。このため、第１の実施の形態と同様に、割込みに際して退避するデータ量を削減できるとともに、退避に要する時間を短縮することができる。
【０１４０】
更に、復帰処理についても同様に、パイプライン処理により２クロック分早くレジスタの復帰処理が可能となる。
【０１４１】
３．第３の実施の形態
次に、図１５Ａから図１６Ｂを参照して、第３の実施の形態におけるマイクロコンピュータを説明する。図１５Ａ及び図１５Ｂは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第３の実施の形態における構成を示す図である。図１５Ａ及び図１５Ｂを参照して、第３の実施の形態におけるマイクロコンピュータは、第１の実施の形態における構成からＰＴＮ設定レジスタ１２３が削除され、ＰＴＮ生成回路５を新たに備える構成である。これ以外の構成は、第１の実施の形態と同様であるため、その説明は省略する。
【０１４２】
第１の実施の形態では、割込み要因ＩＮＴ０〜ＩＮＴｎ−１のそれぞれに対応付けられて設けられたＰＴＮ設定レジスタ１２３によって割込み要因毎の退避パタン識別番号ＰＴＮが特定され、プロセッサ２に通知されていた。第３の実施の形態では、割込みベクタＩＮＴＶＣＴに応じてパタン識別番号ＰＴＮを出力するＰＴＮ生成回路５が設けられる。ＰＴＮ生成回路５は、予め用意された割込みベクタＩＮＴＶＣＴと退避パタン識別番号ＰＴＮとを対応付けたＰＴＮテーブルに基づいて、入力された割込みベクタＩＮＴＶＣＴに対応する退避パタン識別番号ＰＴＮを特定し、退避パタン識別番号ＩＮＴＰＴＮとして、プロセッサ２に出力する。これにより、割込み要因ＩＮＴ毎にＰＴＮ設定レジスタ１２３を設ける必要がなくなり、回路規模を縮小することができる。
【０１４３】
図１６Ａ及び図１６Ｂを参照して、ＰＴＮ生成回路５の構成の一例について説明する。図１６Ａは、ＰＴＮ生成回路５が従うＰＴＮテーブルの一例を示す図である。図１６Ｂは、ＰＴＮ生成回路５の構成の一例を示す図である。
【０１４４】
図１６Ａに示す一例では、ＩＮＴ０〜ＩＮＴ１５に対応する割込みベクタＩＮＴＶＣＴ“０１００Ｈ”〜“０１Ｆ０Ｈ”に退避パタン識別番号ＰＴＮ“０”が対応付けられ、ＩＮＴ１６〜ＩＮＴ３１に対応する割込みベクタＩＮＴＶＣＴ“０２００Ｈ”〜“０２Ｆ０Ｈ”に退避パタン識別番号ＰＴＮ“１”が対応付けられ、ＩＮＴ３２〜ＩＮＴ４７に対応する割込みベクタＩＮＴＶＣＴ“０３００Ｈ”〜“０３Ｆ０Ｈ”に退避パタン識別番号ＰＴＮ“２”が対応付けられ、ＩＮＴ４８〜ＩＮＴ６１に対応する割込みベクタＩＮＴＶＣＴ“０４００Ｈ”〜“０４Ｆ０Ｈ”に退避パタン識別番号ＰＴＮ“３”が対応付けられる。
【０１４５】
この場合、ＰＴＮ生成回路５は、１６ビットの割込みベクタＩＮＴＶＣＴ“００００Ｈ”〜“１１１１Ｈ”の入力に応じて２ビットの退避パタン識別番号ＰＴＮ“００Ｂ”、“０１Ｂ”“１０Ｂ”“１１Ｂ”を出力する回路で構成される。例えば、図１６Ｂに示すように、１６ビットの割込みベクタ信号線ＩＮＴＶＣＴ［１５：０］を入力とし、２ビットの退避パタン識別番号信号線ＩＮＴＰＴＮ［１：０］を出力とするＰＴＮ生成回路５が設けられる。このとき、ＰＴＮ生成回路５は、図１６Ａで示されるような対応テーブルに従って退避パタン識別番号ＰＴＮ“００Ｂ”〜“１１Ｂ”を決定するように構成される。本一例では、ＩＮＴＶＣＴ［１０：８］＝０００のときＩＮＴＰＴＮ［１：０］＝００（ＰＴＮ“０”）、ＩＮＴＶＣＴ［１０：８］＝００１のときＩＮＴＰＴＮ［１：０］＝０１（ＰＴＮ“１”）、ＩＮＴＶＣＴ［１０：８］＝０１１のときＩＮＴＰＴＮ［１：０］＝１０（ＰＴＮ“２”）、ＩＮＴＶＣＴ［１０：８］＝１００のときＩＮＴＰＴＮ［１：０］＝１１（ＰＴＮ“３”）となる回路によって、図１７Ａの対応テーブルに従うＰＴＮ生成回路５が実現できる。
【０１４６】
このように、ＰＴＮ生成回路５によって、割込みベクタＩＮＴＶＣＴに応じて退避パタン識別番号ＰＴＮを生成することができるため、割込み要因ＩＮＴ毎にレジスタを用意する必要がない。特に、図１６Ａに示す一例のように、退避パタンが複数の割込み要因で共通し、６４本の割込み要因に対して４つの退避パタン（退避パタン識別番号ＰＴＮ）が割り当てられている場合、第１の実施の形態では６４本のＰＴＮ設定レジスタ１２３を用意する必要があるが、本実施の形態では、これらを用意せずに、退避パタン識別番号ＰＴＮを得ることができる。すなわち、本実施の形態では、退避が必要なレジスタが複数の割込み要因ＩＮＴで共通する場合、ＰＴＮ生成回路５の設置によるＰＴＮ設定レジスタ１２３の削減効果は顕著に現れる。
【０１４７】
４．第４の実施の形態
次に、第４の実施の形態におけるマイクロコンピュータを説明する。第１の実施の形態では、レジスタ退避処理時に退避していた退避パタン識別番号ＰＴＮを用いて、復帰処理において復帰対象とするレジスタを指定していた。第４の実施の形態におけるマイクロコンピュータでは、退避パタン識別番号ＰＴＮの退避及び復帰処理は行わず、コンテクスト復帰命令（ＣＸＰＯＰ命令）によって、復帰対象レジスタを指定する。本実施の形態におけるマイクロコンピュータの構成は、第１の実施の形態と同様であるが、レジスタ退避処理において、退避パタン識別番号ＰＴＮの退避が行われないことと、レジスタ退避制御回路２５が、ＣＸＰＯＰ命令によって復帰対象レジスタを指定する退避パタン識別番号ＰＴＮを取得することが第１の実施の形態と異なる。これ以外の構成及び動作は、第１の実施の形態と同様であるため、その説明は省略する。
【０１４８】
図１７Ａ及び図１７Ｂは、本発明による復帰処理の第４の実施の形態における動作を示すフロー図である。図１７Ａ及び図１７Ｂを参照して、第４の実施の形態における復帰処理の動作の詳細を説明する。
【０１４９】
先ず、クロックＣ０において、割込み要因ＩＮＴ３２による割込み処理が終了し、ＣＸＰＯＰ命令の命令コードがフェッチされる。ＣＸＰＯＰ命令によって、復帰する退避パタン識別番号ＰＴＮが指定される。続くクロックＣ１において、レジスタ退避制御回路２５はＣＸＰＯＰ命令に基づいて復帰対象のレジスタを指定し、マイクロ命令による復帰処理を命令実行部２３に実行させる。これにより、クロックＣ１〜Ｃ７において、ＳＰで指定されたスタックからコンテクスト“Ｒ１４〜Ｒ１０”、ＰＳＷ“ｉｎｔ１２（ＰＳＷ）”、及びＰＣ“ｉｎｔ１２（ＰＣ）”が読み出され、レジスタ退避制御回路２５から指定された汎用レジスタ２４０、ＥＩＰＳＷレジスタ２４４、ＥＩＰＣレジスタ２４３に復帰される。
【０１５０】
一方、クロックＣ１において、割込み処理が終了し、ＲＥＴ命令の命令コードがフェッチされる。ここで、レジスタ退避制御回路２５の制御による復帰処理が終了するクロックＣ８まで、フェッチされたＲＥＴ命令の実行は待機状態となる。
【０１５１】
クロックＣ８において、レジスタ退避制御回路２５からのＲＥＴ命令が命令実行部２３で実行されると、プロセッサ２（割込み処理制御回路２１）は復帰終了通知ＩＮＴＦＩＮを１クロック間“１”に設定する。この際、プロセッサ２の内部状態（ＰＣ、ＰＳＷ）は、ＥＩＰＣレジスタ２４３及びＥＩＰＳＷレジスタ２４４の値（ｉｎｔ１２（ＰＣ）、ｉｎｔ１２（ＰＳＷ））によって復帰する。
【０１５２】
続くクロックＣ９以降において、復帰したＰＣ及びＰＳＷに基づき、割込みによって完了していなかった処理が再開される。ここでは、クロックＣ９で命令コード“ｉｎｔ１２”がフェッチされ、クロックＣ１０で実行される。
【０１５３】
割込みによって中断された処理が終了すると、クロックＣ１１においてＣＸＰＯＰ命令の命令コードがフェッチされる。続くクロックＣ１２において、プロセッサ２はレジスタ退避制御回路２５によるマイクロ命令を実行し、ＣＸＰＯＰ命令で指定された退避パタン識別番号ＰＴＮに基づいて退避処理を開始する。
【０１５４】
以降、クロックＣ１からＣ７と同様に、クロックＣ１２からＣ１８において、データメモリ４に退避されていたコンテクスト“Ｒ４〜Ｒ０”、ＰＳＷ“ｉｎｔ４（ＰＳＷ）”、及びＰＣ“ｉｎｔ４（ＰＣ）”が順に読み出され、それぞれ次のクロックにおいて、ＰＴＮレジスタ２５０、退避パタン識別番号ＩＮＴＰＴＮ“１Ｈ（ＰＴＮ１）”で指定された汎用レジスタ２４０（Ｒ４、Ｒ３、Ｒ２、Ｒ１、Ｒ０）、ＥＩＰＳＷレジスタ２４４、及びＥＩＰＣレジスタ２４３に復帰する。
【０１５５】
又、クロックＣ２０以降、各レジスタの復帰終了に応じて、割込みによって中断していたｉｎｔ４以降のメインルーチンが実行される。
【０１５６】
以上のように、本実施の形態による復帰処理では、ＣＸＰＯＰ命令により復帰先となるレジスタを特定できるため、退避パタン識別番号ＰＴＮの退避処理や復帰処理を省略することができる。これにより、割込み処理における退避処理や復帰処理に要するメモリ領域や時間を更に削減できる。すなわち本実施の形態によれば、更に、割込み処理や復帰処理に要する時間を短縮することが可能となる。
【０１５７】
本発明によるマイクロコンピュータでは、割込み要因毎に設定された割込みパタン識別番号ＰＴＮによって退避（又は復帰）対象レジスタを特定できるため、命令コードをフェッチすることなくマルチサイクルによるマイクロ命令で退避処理が可能となる。このため、退避のための命令コードのフェッチに要する時間を削減できるとともに、退避対象レジスタを割込み要因に応じて特定することが可能となる。
【０１５８】
又、退避処理を、マイクロ命令を実行することで実現できるため、多重割込みが発生しても、従来のように退避処理のためのフェッチ時間が累積することがない。このため、本発明では、多重割込みが発生した場合、従来に比べて割込み処理に係る時間が更に短縮され、プロセッサの処理能力を向上させることが可能となる。
【０１５９】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。上述の実施の形態では、技術的に矛盾のない範囲で組み合わせて適用できる。例えば、第２の実施の形態と第４の実施の形態を組み合わせることで、更に割込み処理や復帰処理の時間を短縮することができる。あるいは、第３の実施の形態と第２又は／及び第４の実施の形態を組み合わせることで、回路面積を縮小しつつ割込み処理や復帰処理の時間を短縮することができる。
【符号の説明】
【０１６０】
１  ：割込みコントローラ
２  ：プロセッサ
３  ：命令メモリ
４  ：データメモリ
５  ：ＰＴＮ生成回路
１１：優先度判定回路
１２−０〜１２−（ｎ−１）：割込みフラグレジスタ群
１３：ＩＳＰＲレジスタ
１４：制御回路
２１：割込み処理制御回路
２２：命令フェッチ制御回路
２３：令実行部
２４：レジスタファイル
２５：レジスタ退避制御回路
２６：レジスタリスト選択回路
２７：レジスタ退避パタン番号設定レジスタユニット
１２１：フラグレジスタ
１２２：ＰＲレジスタ
１２３：ＰＴＮ設定レジスタ
２３１：データポインタステージ（ＤＰ）
２３２：インストラクションデコードステージ（ＩＤ）
２３３：演算ステージ（ＥＸ）
２３４：アドレス転送ステージ（ＤＴ）
２３５：データフェッチステージ（ＤＦ）
２３６：ライトバックステージ（ＷＢ）
２４０：汎用レジスタ
２４１：ＰＣレジスタ
２４２：ＰＳＷレジスタ
２４３：ＥＩＰＣレジスタ
２４４：ＥＩＰＳＷレジスタ
２５０：ＰＴＮレジスタ
２７０：レジスタリスト
【図１Ａ】
0005507317.tif 000002
【図１Ｂ】
0005507317.tif 000003
【図２Ａ】
0005507317.tif 000004
【図２Ｂ】
0005507317.tif 000005
【図３】
0005507317.tif 000006
【図４】
0005507317.tif 000007
【図５】
0005507317.tif 000008
【図６】
0005507317.tif 000009
【図７Ａ】
0005507317.tif 000010
【図７Ｂ】
0005507317.tif 000011
【図８Ａ】
0005507317.tif 000012
【図８Ｂ】
0005507317.tif 000013
【図９Ａ】
0005507317.tif 000014
【図９Ｂ】
0005507317.tif 000015
【図１０】
0005507317.tif 000016
【図１１Ａ】
0005507317.tif 000017
【図１１Ｂ】
0005507317.tif 000018
【図１２Ａ】
0005507317.tif 000019
【図１２Ｂ】
0005507317.tif 000020
【図１３】
0005507317.tif 000021
【図１４】
0005507317.tif 000022
【図１５Ａ】
0005507317.tif 000023
【図１５Ｂ】
0005507317.tif 000024
【図１６Ａ】
0005507317.tif 000025
【図１６Ｂ】
0005507317.tif 000026
【図１７Ａ】
0005507317.tif 000027
【図１７Ｂ】
0005507317.tif 000028