JPH0683640A - 割込応答処理方式 - Google Patents
割込応答処理方式Info
- Publication number
- JPH0683640A JPH0683640A JP23380292A JP23380292A JPH0683640A JP H0683640 A JPH0683640 A JP H0683640A JP 23380292 A JP23380292 A JP 23380292A JP 23380292 A JP23380292 A JP 23380292A JP H0683640 A JPH0683640 A JP H0683640A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- bank
- interruption
- priority
- cpu
- 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
Abstract
(57)【要約】
【目的】 この発明は、割込要求受付後、高速な応答処
理が可能で、しかも、各種割込みモード等の設定自由度
が大きい割込応答処理方式である。 【構成】 割込み要求の発生により読出される割込ハン
ドラの先頭番地に、少なくともバンク切換およびスタッ
ク指定、使用レジスタ指定などのシステム設定コマンド
を含むEITモードを設けたことを特徴としている。
理が可能で、しかも、各種割込みモード等の設定自由度
が大きい割込応答処理方式である。 【構成】 割込み要求の発生により読出される割込ハン
ドラの先頭番地に、少なくともバンク切換およびスタッ
ク指定、使用レジスタ指定などのシステム設定コマンド
を含むEITモードを設けたことを特徴としている。
Description
【0001】
【産業上の利用分野】この発明は、特にシングルチップ
マイクロコンピュータで有効な割込処理開始までの高速
応答処理が可能な割込応答処理方式に関するものであ
る。
マイクロコンピュータで有効な割込処理開始までの高速
応答処理が可能な割込応答処理方式に関するものであ
る。
【0002】
【従来の技術】シングルチップマイクロコンピュータ等
における処理過程において、例外事象による特定の要求
が発生すると、現在実行中の処理を中断して、他の処理
の実行を開始する。以下に、従来技術による他の処理を
開始するまでのシーケンスを説明する。
における処理過程において、例外事象による特定の要求
が発生すると、現在実行中の処理を中断して、他の処理
の実行を開始する。以下に、従来技術による他の処理を
開始するまでのシーケンスを説明する。
【0003】従来技術では、例外事象による割込要求を
受付けると、現在処理しているルーチンの処理を中断
し、要求のあった割込処理のルーチンに移るが、しか
し、割込みの処理が終了すると、中断していた処理のル
ーチンに復帰し、その処理の続きを実行する必要がある
ので、割込み要求を受付けると、割込み発生直前のステ
ータスレジスタ(SR)・プログラムカウンタ(PC)
の退避を自動的に行う。その後に、例外ベクタテーブル
が参照され、例外ベクタテーブルに記載されたアドレス
値へ分岐して、順次的に割込処理を開始する。
受付けると、現在処理しているルーチンの処理を中断
し、要求のあった割込処理のルーチンに移るが、しか
し、割込みの処理が終了すると、中断していた処理のル
ーチンに復帰し、その処理の続きを実行する必要がある
ので、割込み要求を受付けると、割込み発生直前のステ
ータスレジスタ(SR)・プログラムカウンタ(PC)
の退避を自動的に行う。その後に、例外ベクタテーブル
が参照され、例外ベクタテーブルに記載されたアドレス
値へ分岐して、順次的に割込処理を開始する。
【0004】割込処理は先ず、割込要因に相当するベク
タ値が生成される。生成されたベクタ値を使って、ベク
タテーブルのアドレス計算がなされる。アドレス計算に
よって生成されたアドレスによって、例外ベクタテーブ
ルが参照され、例外ベクタテーブルに記載された、割込
処理のルーチンの先頭アドレスを示すアドレス値が読出
される。
タ値が生成される。生成されたベクタ値を使って、ベク
タテーブルのアドレス計算がなされる。アドレス計算に
よって生成されたアドレスによって、例外ベクタテーブ
ルが参照され、例外ベクタテーブルに記載された、割込
処理のルーチンの先頭アドレスを示すアドレス値が読出
される。
【0005】そして、割込処理ルーチルで使用する各種
モードの設定は、この割込処理ルーチンの先頭で、プロ
グラムによって各種モードの設定を行っていた。例え
ば、バンクを切り換えたり、システムの切換えなどであ
る。実質的な割込処理の開始は各種モード設定を完了し
てからとなる。例えば、MC68000を一例に説明を
する。例外事象の割込みが発生したことを前提とし、図
5により説明する。
モードの設定は、この割込処理ルーチンの先頭で、プロ
グラムによって各種モードの設定を行っていた。例え
ば、バンクを切り換えたり、システムの切換えなどであ
る。実質的な割込処理の開始は各種モード設定を完了し
てからとなる。例えば、MC68000を一例に説明を
する。例外事象の割込みが発生したことを前提とし、図
5により説明する。
【0006】各割込要因には、割込み優先順位があり、
7つのレベルで存在する。中央演算処理装置(CPU)
への割込み要求は、割込要因の各優先順位を符号化され
て与えられる。
7つのレベルで存在する。中央演算処理装置(CPU)
への割込み要求は、割込要因の各優先順位を符号化され
て与えられる。
【0007】図5(a) にステータスレジスタ(SR)の
ビット割付を示す。ステータスレジスタ(SR)の中
に、割込みマスク(3ビット)があり、その時点での優
先順位を示している。割込要因の優先順位が、割込みマ
スク(3ビット)の優先順位より高かった場合、割込み
の例外処理シーケンスが開始される。割込要因が受付け
られ、割込みの例外処理シーケンスが開始されたとす
る。
ビット割付を示す。ステータスレジスタ(SR)の中
に、割込みマスク(3ビット)があり、その時点での優
先順位を示している。割込要因の優先順位が、割込みマ
スク(3ビット)の優先順位より高かった場合、割込み
の例外処理シーケンスが開始される。割込要因が受付け
られ、割込みの例外処理シーケンスが開始されたとす
る。
【0008】まずは、プログラムカウンタ(PC)の下
位ワードが、スタック(SSP)に退避され、ステータ
ス・レジスタ(SR)の内容は、一時的に格納される。
その後、ステータス・レジスタ(SR)のSビットをセ
ットし、特権ステートがスーパバイザステートに設定さ
れる。同時にTビットがリセットされ、例外処理ルーチ
ンの実行がトレース動作によって、妨害されないように
する。ステータスレジスタ(SR)を例外処理用に設定
後、各割込要因に割り付けられた同図(b) に示すベクタ
番号を、中央処理装置(CPU)が読み込む。
位ワードが、スタック(SSP)に退避され、ステータ
ス・レジスタ(SR)の内容は、一時的に格納される。
その後、ステータス・レジスタ(SR)のSビットをセ
ットし、特権ステートがスーパバイザステートに設定さ
れる。同時にTビットがリセットされ、例外処理ルーチ
ンの実行がトレース動作によって、妨害されないように
する。ステータスレジスタ(SR)を例外処理用に設定
後、各割込要因に割り付けられた同図(b) に示すベクタ
番号を、中央処理装置(CPU)が読み込む。
【0009】このベクタ番号を使って、例外ベクタを格
納している例外ベクタテーブル(2ワード)のアドレス
を同図(c) に示すように生成する。例外ベクタとは、例
外ベクタテーブル(2ワード)に格納されている例外を
処理するルーチンのメモリー・ロケーションのことであ
る。
納している例外ベクタテーブル(2ワード)のアドレス
を同図(c) に示すように生成する。例外ベクタとは、例
外ベクタテーブル(2ワード)に格納されている例外を
処理するルーチンのメモリー・ロケーションのことであ
る。
【0010】一時的に格納されたステータス・レジスタ
(SR)とプログラムカウンタ(PC)の上位が、スタ
ック(SSP)に退避される。そして、生成された例外
ベクタテーブル(2ワード)のアドレスを使って、例外
ベクタを参照する。新しいプログラムカウンタ(PC)
値が、同図(d) に示すように、例外ベクタから読み込ま
れ、実際の割込要因の例外処理が開始される。
(SR)とプログラムカウンタ(PC)の上位が、スタ
ック(SSP)に退避される。そして、生成された例外
ベクタテーブル(2ワード)のアドレスを使って、例外
ベクタを参照する。新しいプログラムカウンタ(PC)
値が、同図(d) に示すように、例外ベクタから読み込ま
れ、実際の割込要因の例外処理が開始される。
【0011】以上のように、各割込要因に相当するベク
タ値を、中央処理装置(CPU)は読み込み、そのベク
タ値を使って、例外ベクタテーブルのアドレス計算をす
る。そして、例外ベクタテーブルの例外ベクタを参照し
て、その例外ベクタの示す値が、実際の割込処理を開始
する先頭アドレスとなる。これでは一度、例外ベクタを
参照することで、割込みを受付けてから、実際の割込処
理を開始するまでの応答時間が遅くなってしまう。また
別の例として、TLCS−900の割込み発生について
説明する。
タ値を、中央処理装置(CPU)は読み込み、そのベク
タ値を使って、例外ベクタテーブルのアドレス計算をす
る。そして、例外ベクタテーブルの例外ベクタを参照し
て、その例外ベクタの示す値が、実際の割込処理を開始
する先頭アドレスとなる。これでは一度、例外ベクタを
参照することで、割込みを受付けてから、実際の割込処
理を開始するまでの応答時間が遅くなってしまう。また
別の例として、TLCS−900の割込み発生について
説明する。
【0012】前例と同様に、各割込要因に対して優先順
位が割り付けられており、優先順位に従って割込要因を
受付ける。図5(e) にステータスレジスタ(SR)のビ
ット割付を示す。
位が割り付けられており、優先順位に従って割込要因を
受付ける。図5(e) にステータスレジスタ(SR)のビ
ット割付を示す。
【0013】発生した割込みの優先順位と、ステータス
レジスタ(SR)の割込みマスクの比較により、発生し
た割込みの優先順位の方が、レベルが高いときに、割込
みが許可され、受付けられたことになる。割込みが受付
けられると、中央処理装置(CPU)は、割込みコント
ローラから割込みベクタを読み込む。
レジスタ(SR)の割込みマスクの比較により、発生し
た割込みの優先順位の方が、レベルが高いときに、割込
みが許可され、受付けられたことになる。割込みが受付
けられると、中央処理装置(CPU)は、割込みコント
ローラから割込みベクタを読み込む。
【0014】中央処理装置(CPU)は、プログラムカ
ウンタ(PC)とステータスレジスタ(SR)を、シス
テム側のスタックに退避する。ステータスレジスタ(S
R)の割込みマスク(IFF2〜0)に、受付けた割込
みの優先順位を、インクリメント「+1」した値をセッ
トする。ステータスレジスタ(SR)のシステムモード
(SYSM)を、セットして、システムモードに移行す
る。そして、中央処理装置(CPU)は、読み込んだ割
込みベクタ値を使って、割込処理ルーチンの先頭アドレ
スを計算する。先頭アドレスを生成後、割込処理ルーチ
ンの実行を開始する。
ウンタ(PC)とステータスレジスタ(SR)を、シス
テム側のスタックに退避する。ステータスレジスタ(S
R)の割込みマスク(IFF2〜0)に、受付けた割込
みの優先順位を、インクリメント「+1」した値をセッ
トする。ステータスレジスタ(SR)のシステムモード
(SYSM)を、セットして、システムモードに移行す
る。そして、中央処理装置(CPU)は、読み込んだ割
込みベクタ値を使って、割込処理ルーチンの先頭アドレ
スを計算する。先頭アドレスを生成後、割込処理ルーチ
ンの実行を開始する。
【0015】以上のように、割込みが許可されて、中央
処理装置(CPU)が割込みコントローラから割込みベ
クタを読み込んで、プログラムカウンタ(PC)とステ
ータスレジスタ(SR)をシステム側のスタックに退避
する。そして、割込みベクタを使って、割込処理ルーチ
ンの先頭アドレスを計算し割込処理ルーチンへ、分岐す
るものである。
処理装置(CPU)が割込みコントローラから割込みベ
クタを読み込んで、プログラムカウンタ(PC)とステ
ータスレジスタ(SR)をシステム側のスタックに退避
する。そして、割込みベクタを使って、割込処理ルーチ
ンの先頭アドレスを計算し割込処理ルーチンへ、分岐す
るものである。
【0016】この構成では、割込みを受付けてから割込
処理ルーチンを開始するまでは、高速な処理であるが、
各種モードを設定して割込要因に対する割込処理を実行
するには、割込処理ルーチルが開始されてから、プログ
ラムによって、バンクを切り換えたり、各種モード設定
を行うことになり、割込みを受付けてから、実際の割込
処理を開始するまでの応答時間が遅くなってしまう。
処理ルーチンを開始するまでは、高速な処理であるが、
各種モードを設定して割込要因に対する割込処理を実行
するには、割込処理ルーチルが開始されてから、プログ
ラムによって、バンクを切り換えたり、各種モード設定
を行うことになり、割込みを受付けてから、実際の割込
処理を開始するまでの応答時間が遅くなってしまう。
【0017】
【発明が解決しようとする課題】前述した例のように、
生成されたベクタ値によって、ベクタテーブルが参照さ
れ、ベクタテーブルに記載されたアドレス値を割込処理
のルーチンの先頭アドレスに読出して、割込処理を開始
するまでに、割込処理で使用するシステムのモードを切
換えたり、カレントバンクを切換える等の処理およびプ
ログラムカウンタ(PC)、ステータスレジスタ(S
R)を退避させる必要がある。
生成されたベクタ値によって、ベクタテーブルが参照さ
れ、ベクタテーブルに記載されたアドレス値を割込処理
のルーチンの先頭アドレスに読出して、割込処理を開始
するまでに、割込処理で使用するシステムのモードを切
換えたり、カレントバンクを切換える等の処理およびプ
ログラムカウンタ(PC)、ステータスレジスタ(S
R)を退避させる必要がある。
【0018】従来技術では、これらの処理や退避を行っ
た後で、ベクタ値を使って割込処理のルーチンの先頭ア
ドレスを計算しており、順次的な流れであった。従っ
て、例外事象による割込みの発生から実際の割込処理ル
ーチンを実行するまでの応答時間が遅く、高速な割込応
答が出来ない問題があった。
た後で、ベクタ値を使って割込処理のルーチンの先頭ア
ドレスを計算しており、順次的な流れであった。従っ
て、例外事象による割込みの発生から実際の割込処理ル
ーチンを実行するまでの応答時間が遅く、高速な割込応
答が出来ない問題があった。
【0019】この発明は、このような問題を解決するた
めになされたもので、割込要求受付後、高速な応答処理
が可能で、しかも、各種割込みモード等の設定自由度が
大きい割込応答処理方式を提供することを目的としてい
る。
めになされたもので、割込要求受付後、高速な応答処理
が可能で、しかも、各種割込みモード等の設定自由度が
大きい割込応答処理方式を提供することを目的としてい
る。
【0020】
【課題を解決するための手段】この発明の割込応答処理
方式は、割込み要求の発生により読出される割込ハンド
ラの先頭番地の少なくとも1ワード領域に、割込み処理
のためのシステム設定コマンドを設けたことを特徴とし
ている。
方式は、割込み要求の発生により読出される割込ハンド
ラの先頭番地の少なくとも1ワード領域に、割込み処理
のためのシステム設定コマンドを設けたことを特徴とし
ている。
【0021】
【作用】このように構成することにより、PC,PSW
等のステータス情報を退避させながら、割込み先の番地
を計算して割込み処理の実行に入るので、高速の割込応
答処理が可能になる。
等のステータス情報を退避させながら、割込み先の番地
を計算して割込み処理の実行に入るので、高速の割込応
答処理が可能になる。
【0022】
【実施例】以下、図面を参照しながらこの発明の一実施
例を説明する。図1は、この発明の一実施例のシステム
構成を示すブロック構成図であり、図2は、中央処理装
置(CPU)の内部構成を示すブロック構成図である。
例を説明する。図1は、この発明の一実施例のシステム
構成を示すブロック構成図であり、図2は、中央処理装
置(CPU)の内部構成を示すブロック構成図である。
【0023】図1において、1は中央処理装置(CP
U)で、2はバンク(RAM)、3は割込みコントロー
ラ(IRC)、4は周辺デバイス(I/O)、5はこれ
らを結ぶメインシステムバス(MBUS)である。ま
た、中央処理装置(CPU)1とバンク(RAM)2は
専用バス6で接続されている。
U)で、2はバンク(RAM)、3は割込みコントロー
ラ(IRC)、4は周辺デバイス(I/O)、5はこれ
らを結ぶメインシステムバス(MBUS)である。ま
た、中央処理装置(CPU)1とバンク(RAM)2は
専用バス6で接続されている。
【0024】割込みコントローラ(IRC)3は同図に
示すように、周辺デバイス4から割込要求信号を受け、
中央処理装置(CPU)1に割込発生信号を送るととも
に割込み処理が可能であれば割込受付信号を受けるよう
になっている。
示すように、周辺デバイス4から割込要求信号を受け、
中央処理装置(CPU)1に割込発生信号を送るととも
に割込み処理が可能であれば割込受付信号を受けるよう
になっている。
【0025】また、中央処理装置(CPU)1の内部
は、図2に示すように、バスインタフェース部7,算術
論理演算部(ALU)8,図4(a) に詳細構造を示すレ
ジスタファイル9,一つ前に使用したレジスタバンクの
番号を示すプレビアスバンクポインタ(PBP)10お
よび現在のレジスタバンクの番号を示すカレントバンク
ポインタ(CBP)11が設けられており、コア内部バ
ス(IBUS)12により相互に接続されている。
は、図2に示すように、バスインタフェース部7,算術
論理演算部(ALU)8,図4(a) に詳細構造を示すレ
ジスタファイル9,一つ前に使用したレジスタバンクの
番号を示すプレビアスバンクポインタ(PBP)10お
よび現在のレジスタバンクの番号を示すカレントバンク
ポインタ(CBP)11が設けられており、コア内部バ
ス(IBUS)12により相互に接続されている。
【0026】さらに、バスインタフェース部7にはプロ
グラムカウンタ(PC)7aが、算術論理演算部(AL
U)8にはプロセサステータスワード(PSW)8aが
設けられている。また、レジスタファイル9は専用バス
6によりバンク(RAM)2と接続されている。図3
(a) 〜(h) は、この実施例の動作を説明するためのコマ
ンド構成の説明図である。
グラムカウンタ(PC)7aが、算術論理演算部(AL
U)8にはプロセサステータスワード(PSW)8aが
設けられている。また、レジスタファイル9は専用バス
6によりバンク(RAM)2と接続されている。図3
(a) 〜(h) は、この実施例の動作を説明するためのコマ
ンド構成の説明図である。
【0027】また、図4(a)(b)は、レジスタファイル9
の詳細構造と例外事象に対する割込処理のため処理中の
情報をバンク(RAM)2の中に退避させる場合の一例
を説明する説明図である。
の詳細構造と例外事象に対する割込処理のため処理中の
情報をバンク(RAM)2の中に退避させる場合の一例
を説明する説明図である。
【0028】同図(a) において、レジスタファイル9内
はレジスタ群で構成され、9aはユーザスタックポイン
タ(USP),9bはインタラプトスタックポインタ
(ISP),9cはエミュレータスタックポインタ(E
SP)であり、R0〜R15は汎用レジスタである。こ
のような構成になるシステムにおいて、この実施例の例
外事象に対する割込応答処理方式を図1,図2,図3お
よび図4により説明する。
はレジスタ群で構成され、9aはユーザスタックポイン
タ(USP),9bはインタラプトスタックポインタ
(ISP),9cはエミュレータスタックポインタ(E
SP)であり、R0〜R15は汎用レジスタである。こ
のような構成になるシステムにおいて、この実施例の例
外事象に対する割込応答処理方式を図1,図2,図3お
よび図4により説明する。
【0029】例外事象とは、その発生に応答してシング
ルチップマイクロコンピュータの通常の動作の流れを、
変更するよく知られた方法である。例外事象には内部的
要因により発生するものと、外部的要因により発生する
ものとがある。
ルチップマイクロコンピュータの通常の動作の流れを、
変更するよく知られた方法である。例外事象には内部的
要因により発生するものと、外部的要因により発生する
ものとがある。
【0030】例えば内部的要因により発生するものに、
プログラム実行中に、正しいビットパターンと異なるビ
ットパターンの命令をフェッチすると、割込みが発生す
る未定義命令違反、システムを保護する目的で各種の命
令が特権化されており、特権命令の1つをユーザモード
で使用したときに割込みが発生する特権命令違反などが
ある。
プログラム実行中に、正しいビットパターンと異なるビ
ットパターンの命令をフェッチすると、割込みが発生す
る未定義命令違反、システムを保護する目的で各種の命
令が特権化されており、特権命令の1つをユーザモード
で使用したときに割込みが発生する特権命令違反などが
ある。
【0031】外部的要因により発生するものに、リセッ
ト、周辺デバイスからの割込みなどがある。同時に複数
の例外事象が発生した場合は、各要因に割付けられた優
先順位の関係によって決定され、発生させられる。
ト、周辺デバイスからの割込みなどがある。同時に複数
の例外事象が発生した場合は、各要因に割付けられた優
先順位の関係によって決定され、発生させられる。
【0032】これから説明する例外事象の例は、外部的
要因により発生する周辺デバイスからの割込みについて
であり、同時に複数の例外事象が発生したときに、その
中で一番割込みの優先順位の高い割込み要因を、受付け
たことを前提とする。これから説明する中で現れる、技
術用語について予め定義しておく。
要因により発生する周辺デバイスからの割込みについて
であり、同時に複数の例外事象が発生したときに、その
中で一番割込みの優先順位の高い割込み要因を、受付け
たことを前提とする。これから説明する中で現れる、技
術用語について予め定義しておく。
【0033】割込発生信号(INT)とは、周辺デバイ
スからの割込要求には、それぞれに割り付けられた優先
順位があり、割込コントローラ(IRC)3が優先順位
を認識して、中央演算処理装置(CPU)1へ、割込み
が発生したことを知らせる信号のことである。
スからの割込要求には、それぞれに割り付けられた優先
順位があり、割込コントローラ(IRC)3が優先順位
を認識して、中央演算処理装置(CPU)1へ、割込み
が発生したことを知らせる信号のことである。
【0034】割込受け信号(INTACK)とは、中央
演算処理装置(CPU)1が割込要因の優先順位と割込
みを許可する判別要素の状態によって、割込みを受付け
ることを判断し、割込みが受付けられたことにより、割
込みコントローラ(IRC)に割込みを受付けたこと
を、知らせる信号のことである。
演算処理装置(CPU)1が割込要因の優先順位と割込
みを許可する判別要素の状態によって、割込みを受付け
ることを判断し、割込みが受付けられたことにより、割
込みコントローラ(IRC)に割込みを受付けたこと
を、知らせる信号のことである。
【0035】割込処理応答時間とは、割込要求を受付け
てから(中央演算処理装置(CPU)1が割込受付信号
(INTACK)を割込コントローラ(IRC)3に出
力してから)EITモードを実行後、実際の割込み要因
に対する処理が開始されるまでの時間のことである。
てから(中央演算処理装置(CPU)1が割込受付信号
(INTACK)を割込コントローラ(IRC)3に出
力してから)EITモードを実行後、実際の割込み要因
に対する処理が開始されるまでの時間のことである。
【0036】割込応答バスサイクル(IABC)とは、
中央演算処理装置(CPU)1が割込受付信号(INT
ACK)を割込コントローラ(IRC)3に出力してか
ら中央演算処理装置(CPU)1がベクタ値を割込みコ
ントローラ(IRC)3から読み込むまでのサイクルの
ことである。割込ハンドラとは、EITモードを解釈し
て、割込み要因に対する処理を実行し、完了するまでの
ルーチンのことである。割込ハンドラルーチンとは、E
ITモードの実行を行い、モード設定がなされた後か
ら、実際の割込要因に対する処理のことである。専用バ
ス6とは、割込みによる情報の退避/復帰時にレジスタ
ファイル9とバンク(RAM)2のインタフェースをと
る64bit幅のバスのことである。
中央演算処理装置(CPU)1が割込受付信号(INT
ACK)を割込コントローラ(IRC)3に出力してか
ら中央演算処理装置(CPU)1がベクタ値を割込みコ
ントローラ(IRC)3から読み込むまでのサイクルの
ことである。割込ハンドラとは、EITモードを解釈し
て、割込み要因に対する処理を実行し、完了するまでの
ルーチンのことである。割込ハンドラルーチンとは、E
ITモードの実行を行い、モード設定がなされた後か
ら、実際の割込要因に対する処理のことである。専用バ
ス6とは、割込みによる情報の退避/復帰時にレジスタ
ファイル9とバンク(RAM)2のインタフェースをと
る64bit幅のバスのことである。
【0037】EITモードとは、割込ハンドラの先頭番
地に、少なくとも1ワード分の領域を設けられた、各種
モード(バンク切換え、使用レジスタ数など)の設定を
行うためのコマンドである。周辺デバイス4からの割込
要求により、所定のシーケンスによる割込処理を開始す
る。これから割込処理の開始までのシーケンスについて
説明する。
地に、少なくとも1ワード分の領域を設けられた、各種
モード(バンク切換え、使用レジスタ数など)の設定を
行うためのコマンドである。周辺デバイス4からの割込
要求により、所定のシーケンスによる割込処理を開始す
る。これから割込処理の開始までのシーケンスについて
説明する。
【0038】周辺デバイス4が、ある要因により割込要
求信号(INTREQ)を発生することで、所定のシー
ケンスが開始され、割込みの制御を行う割込みコントロ
ーラ(IRC)3に、周辺デバイス4は割込要求信号
(INTREQ)を送信する。前述したように例外事象
には、各要因に対して優先順位が割付けられている。割
込みコントローラ(IRC)3は、周辺デバイスからの
割込要求信号(INTREQ)により、その割込要因の
優先順位を認識する。優先順位を認識後、割込みコント
ローラ(IRC)3は、割込みが発生したことを知らせ
る割込発生信号(INT)を、中央演算処理装置(CP
U)1へ出力する。
求信号(INTREQ)を発生することで、所定のシー
ケンスが開始され、割込みの制御を行う割込みコントロ
ーラ(IRC)3に、周辺デバイス4は割込要求信号
(INTREQ)を送信する。前述したように例外事象
には、各要因に対して優先順位が割付けられている。割
込みコントローラ(IRC)3は、周辺デバイスからの
割込要求信号(INTREQ)により、その割込要因の
優先順位を認識する。優先順位を認識後、割込みコント
ローラ(IRC)3は、割込みが発生したことを知らせ
る割込発生信号(INT)を、中央演算処理装置(CP
U)1へ出力する。
【0039】割込みコントローラ(IRC)3からの割
込発生信号(INT)に対して、中央演算処理装置(C
PU)1は、割込要因の優先順位と割込みを許可する判
別要素の状態によって、割込みを受付けることを判断す
る。判別要素として図3(a)に示すような、プロセサス
テータスワード(PSW)8aの割込み許可フラグ(E
I)や割込みマスク(IM)がある。
込発生信号(INT)に対して、中央演算処理装置(C
PU)1は、割込要因の優先順位と割込みを許可する判
別要素の状態によって、割込みを受付けることを判断す
る。判別要素として図3(a)に示すような、プロセサス
テータスワード(PSW)8aの割込み許可フラグ(E
I)や割込みマスク(IM)がある。
【0040】なお同図において、C,V,N,Zはコン
ディションコードで、TMはタスクを指定するためのタ
スクモード、BSはバンクサイズ、DIは遅延割込の指
定、RGは特権モード指定、SSはシングルステップ動
作の指定である。
ディションコードで、TMはタスクを指定するためのタ
スクモード、BSはバンクサイズ、DIは遅延割込の指
定、RGは特権モード指定、SSはシングルステップ動
作の指定である。
【0041】EIフラグにより、マスカブルな割込みに
対して、イネーブル状態であれば割込みを許可する。例
外事象には前述したように、各要因に対して優先順位が
割付けられている。IMフラグの状態と比べて、発生し
た割込み要因の優先順位の方が高い時に割込みを受付け
ることができる。
対して、イネーブル状態であれば割込みを許可する。例
外事象には前述したように、各要因に対して優先順位が
割付けられている。IMフラグの状態と比べて、発生し
た割込み要因の優先順位の方が高い時に割込みを受付け
ることができる。
【0042】優先順位の一例として、IMフラグをPS
Wの中で3ビット設け、優先順位数として7段(7レベ
ル)を設けたとする。IMフラグに2をセットした時に
優先順位2を表す。優先順位の示す値が大きい程、優先
順位は高いことになる。発生した割込要因が優先順位5
のときに、IMフラグが2をセットされていたとき、発
生した割込要因の方が優先順位が高いので割込みを受付
けられることになる。そして、IMフラグに受付けた割
込みの優先順位を1レベルあげた値をセットする。ここ
ではIMフラグを6にセットする。
Wの中で3ビット設け、優先順位数として7段(7レベ
ル)を設けたとする。IMフラグに2をセットした時に
優先順位2を表す。優先順位の示す値が大きい程、優先
順位は高いことになる。発生した割込要因が優先順位5
のときに、IMフラグが2をセットされていたとき、発
生した割込要因の方が優先順位が高いので割込みを受付
けられることになる。そして、IMフラグに受付けた割
込みの優先順位を1レベルあげた値をセットする。ここ
ではIMフラグを6にセットする。
【0043】割込み優先順位が個々に割付けられなくな
る程割込要因数が増えてくると、PSWのIMフラグを
3ビットから4、5ビットに拡張したり、同一優先順位
の中で、さらに優先順位を割り当てるようにすれば、割
込み要因数が増えても対応可能となる。
る程割込要因数が増えてくると、PSWのIMフラグを
3ビットから4、5ビットに拡張したり、同一優先順位
の中で、さらに優先順位を割り当てるようにすれば、割
込み要因数が増えても対応可能となる。
【0044】割込許可状態で、割込要因の優先順位が、
IMフラグの示す優先順位より高いことで、割込みが受
付けられると、中央処理装置(CPU)1が、割込みコ
ントローラ(IRC)3に割込みが発生し受付けられた
ことを知らせる割込受付信号(INTACK)を出力
し、割込受付信号(INTACK)により割込応答バス
サイクルを開始する。
IMフラグの示す優先順位より高いことで、割込みが受
付けられると、中央処理装置(CPU)1が、割込みコ
ントローラ(IRC)3に割込みが発生し受付けられた
ことを知らせる割込受付信号(INTACK)を出力
し、割込受付信号(INTACK)により割込応答バス
サイクルを開始する。
【0045】それと同時に、プログラムカウンタ(P
C)7a、プロセサステータスワード(PSW)8a、
ユーザスタックポインタ(USP)9a、プレビアスバ
ンクポインタ(PBP)10および汎用レジスタR0〜
R15内の情報を、メインシステムバス(MBUS)5
を介さずに専用バス6を経由してバンク(RAM)2に
退避させる動作を行う。このことについては、後述する
ことにする。
C)7a、プロセサステータスワード(PSW)8a、
ユーザスタックポインタ(USP)9a、プレビアスバ
ンクポインタ(PBP)10および汎用レジスタR0〜
R15内の情報を、メインシステムバス(MBUS)5
を介さずに専用バス6を経由してバンク(RAM)2に
退避させる動作を行う。このことについては、後述する
ことにする。
【0046】割込みコントローラ(IRC)3は、割込
受付信号(INTACK)を受付けると、割込み許可さ
れた要因に割当てられたベクタ値を、メインシステムバ
ス(MBUS)5に出力し、ベクタ値を中央処理装置
(CPU)1に転送する。図3(b) に、ベクタ値のフォ
ーマットを示す。
受付信号(INTACK)を受付けると、割込み許可さ
れた要因に割当てられたベクタ値を、メインシステムバ
ス(MBUS)5に出力し、ベクタ値を中央処理装置
(CPU)1に転送する。図3(b) に、ベクタ値のフォ
ーマットを示す。
【0047】但し、この実施例においては、割込みの各
要因に割当てられたベクタ値は、連続なる数値がそれぞ
れの割込要因に割り当てられた場合とする。その他の場
合については後述する。
要因に割当てられたベクタ値は、連続なる数値がそれぞ
れの割込要因に割り当てられた場合とする。その他の場
合については後述する。
【0048】中央処理装置(CPU)1に転送されてき
たベクタ値を使って割込ハンドラのある先頭番地をアド
レス計算する。実際にアドレス計算の手順として、中央
処理装置(CPU)1のバスインタフェース部(BI
U)7を使って計算する。
たベクタ値を使って割込ハンドラのある先頭番地をアド
レス計算する。実際にアドレス計算の手順として、中央
処理装置(CPU)1のバスインタフェース部(BI
U)7を使って計算する。
【0049】シングルチップマイクロコンピュータの、
内部に存在するメインシステムバス(MBUS)5を経
由して、転送されたベクタ値は、バスインタフェース部
(BIU)7内のデータレジスタにラッチされる。
内部に存在するメインシステムバス(MBUS)5を経
由して、転送されたベクタ値は、バスインタフェース部
(BIU)7内のデータレジスタにラッチされる。
【0050】中央処理装置(CPU)1の内部には、1
6ビット×3本構成のコア内部バス(IBUS)12が
存在する。8ビットデータとして中央処理装置(CP
U)1にリードされてきたベクタ値は、データレジスタ
にラッチされる。次に、ベクタ値は、コア内部バス(I
BUS)12を経由して、バスインタフェース部(BI
U)7内のアドレスレジスタにラッチされる。
6ビット×3本構成のコア内部バス(IBUS)12が
存在する。8ビットデータとして中央処理装置(CP
U)1にリードされてきたベクタ値は、データレジスタ
にラッチされる。次に、ベクタ値は、コア内部バス(I
BUS)12を経由して、バスインタフェース部(BI
U)7内のアドレスレジスタにラッチされる。
【0051】アドレスレジスタにラッチされるときに
は、5ビット左シフトさせてラッチされる。左に5ビッ
トシフトさせることにより、リードされてきたベクタ値
を32倍にしたことになる。32倍することで割込ハン
ドラの領域を確保したことになり、1つの割込ハンドラ
あたり16ワード分に相当する。
は、5ビット左シフトさせてラッチされる。左に5ビッ
トシフトさせることにより、リードされてきたベクタ値
を32倍にしたことになる。32倍することで割込ハン
ドラの領域を確保したことになり、1つの割込ハンドラ
あたり16ワード分に相当する。
【0052】16ワード必要ない場合には、5ビットシ
フトしないで4あるいは、3ビットシフトさせれば8あ
るいは4ワードとエリアを削減でき、限られた領域の中
で、16ワードの場合より、数多くの割込要因に対応可
能になる。ここで理解し易くするため、数式により割込
ハンドラ先頭番地の計算方法を表すことにする。それは
下記の通りとなる。 INTha=Vec×32+VecBase INTha … 割込ハンドラ先頭番地 Vec … ベクタ値 VecBase… ROMの先頭番地 アドレスレジスタにラッチされた値に、ROMの先頭番
地(VecBase)を加えることで割込ハンドラ先頭
番地となる。
フトしないで4あるいは、3ビットシフトさせれば8あ
るいは4ワードとエリアを削減でき、限られた領域の中
で、16ワードの場合より、数多くの割込要因に対応可
能になる。ここで理解し易くするため、数式により割込
ハンドラ先頭番地の計算方法を表すことにする。それは
下記の通りとなる。 INTha=Vec×32+VecBase INTha … 割込ハンドラ先頭番地 Vec … ベクタ値 VecBase… ROMの先頭番地 アドレスレジスタにラッチされた値に、ROMの先頭番
地(VecBase)を加えることで割込ハンドラ先頭
番地となる。
【0053】例えば、ROMの先頭番地(VecBas
e)を8000Hに割付けたとすると、図3(c) に示す
ように、15ビット目に1をセットして14・13ビッ
ト目は0をセットし、残り12〜0ビットはベクタ値を
左5ビットシフトした値となる。以上で割込ハンドラの
先頭番地(INTha)が生成されたことになる。
e)を8000Hに割付けたとすると、図3(c) に示す
ように、15ビット目に1をセットして14・13ビッ
ト目は0をセットし、残り12〜0ビットはベクタ値を
左5ビットシフトした値となる。以上で割込ハンドラの
先頭番地(INTha)が生成されたことになる。
【0054】このように割込みの発生により、割込ハン
ドラ先頭番地(INTha)のアドレス計算を実行しな
がら、プログラムカウンタ(PC)7a、プロセサステ
ータスワード(PSW)8a、ユーザスタックポインタ
(USP)9a、プレビアスバンクポインタ(PBP)
10および、汎用レジスタ(R0〜R15)の情報をメ
インシステムバス(MBUS)5介さずに、専用バス6
を経由して退避を行うものである。この割込みの発生に
よる情報の退避について説明をする。
ドラ先頭番地(INTha)のアドレス計算を実行しな
がら、プログラムカウンタ(PC)7a、プロセサステ
ータスワード(PSW)8a、ユーザスタックポインタ
(USP)9a、プレビアスバンクポインタ(PBP)
10および、汎用レジスタ(R0〜R15)の情報をメ
インシステムバス(MBUS)5介さずに、専用バス6
を経由して退避を行うものである。この割込みの発生に
よる情報の退避について説明をする。
【0055】中央処理装置(CPU)1は、割込受付信
号(INTACK)を割込みコントローラ(IRC)3
に出力すると、割込みコントローラ(IRC)3からベ
クタ値を読み込み、割込ハンドラのアドレス計算を実行
しながら、情報の退避の動作を行う。
号(INTACK)を割込みコントローラ(IRC)3
に出力すると、割込みコントローラ(IRC)3からベ
クタ値を読み込み、割込ハンドラのアドレス計算を実行
しながら、情報の退避の動作を行う。
【0056】退避の手順について説明をする。退避する
情報として、プログラムカウンタ(PC)7a、プロセ
サステータスワード(PSW)8a、図4(a) に示す、
ユーザスタックポインタ(USP)9a、プレビアスバ
ンクポインタ(PBP)10および汎用レジスタR0〜
R15の情報の5項目を専用バス6を使用して退避す
る。専用バスの構成は64ビット幅構成で、論理的に1
6ビット×4レジスタの情報を転送可能である。
情報として、プログラムカウンタ(PC)7a、プロセ
サステータスワード(PSW)8a、図4(a) に示す、
ユーザスタックポインタ(USP)9a、プレビアスバ
ンクポインタ(PBP)10および汎用レジスタR0〜
R15の情報の5項目を専用バス6を使用して退避す
る。専用バスの構成は64ビット幅構成で、論理的に1
6ビット×4レジスタの情報を転送可能である。
【0057】各レジスタの構成は、汎用レジスタR0〜
R15の各レジスタが16ビット、プログラムカウンタ
(PC)7aが24ビット、プロセサステータスワード
(PSW)8aが16ビット、ユーザスタックポインタ
(USP)9aが16ビットで、プレビアスバンクポイ
ンタ(PBP)10が8ビットであり、転送の組み合わ
せとしてプログラムカウンタ(PC)7a、プロセサス
テータスワード(PSW)8a、ユーザスタックポイン
タ(USP)9a、プレビアスバンクポインタ(PB
P)10を1組とし、汎用レジスタR0〜R15を4レ
ジスタ1組とする4組の固まりとし、計5組の組み合わ
せで情報を退避する。
R15の各レジスタが16ビット、プログラムカウンタ
(PC)7aが24ビット、プロセサステータスワード
(PSW)8aが16ビット、ユーザスタックポインタ
(USP)9aが16ビットで、プレビアスバンクポイ
ンタ(PBP)10が8ビットであり、転送の組み合わ
せとしてプログラムカウンタ(PC)7a、プロセサス
テータスワード(PSW)8a、ユーザスタックポイン
タ(USP)9a、プレビアスバンクポインタ(PB
P)10を1組とし、汎用レジスタR0〜R15を4レ
ジスタ1組とする4組の固まりとし、計5組の組み合わ
せで情報を退避する。
【0058】5組の組み合わせの情報は、カレントバン
クポインタ(CBP)11の示す値のバンク番号に退避
させるもので、割込み受付と同時に退避動作が開始され
る。最初に退避されるのが汎用レジスタR0〜R15の
情報である。
クポインタ(CBP)11の示す値のバンク番号に退避
させるもので、割込み受付と同時に退避動作が開始され
る。最初に退避されるのが汎用レジスタR0〜R15の
情報である。
【0059】レジスタファイル9内にあるレジスタは、
汎用レジスタR0〜R15、ユーザスタックポインタ
(USP)9a、インタラプトスタックポインタ(IS
P)9b、エミュレータスタックポインタ(ESP)9
cであり、退避する必要のある残りの情報であるプログ
ラムカウンタ(PC)7a、プロセサステータスワード
(PSW)8aおよびプレビアスバンクポインタ(PB
P)10の情報については、退避するためにコア内部バ
ス(IBUS)6を使ってレジスタファイル9に転送す
る必要がある。
汎用レジスタR0〜R15、ユーザスタックポインタ
(USP)9a、インタラプトスタックポインタ(IS
P)9b、エミュレータスタックポインタ(ESP)9
cであり、退避する必要のある残りの情報であるプログ
ラムカウンタ(PC)7a、プロセサステータスワード
(PSW)8aおよびプレビアスバンクポインタ(PB
P)10の情報については、退避するためにコア内部バ
ス(IBUS)6を使ってレジスタファイル9に転送す
る必要がある。
【0060】このプログラムカウンタ(PC)7a、プ
ロセサステータスワード(PSW)8a、プレビアスバ
ンクポインタ(PBP)10が転送されてくる間に、汎
用レジスタR0〜R15の情報をバンク(RAM)2に
退避させる。転送されてきたプログラムカウンタ(P
C)7a、プロセサステータスワード(PSW)8a、
プレビアスバンクポインタ(PBP)10の情報は、と
りあえず、汎用レジスタR0〜R15のすでに退避済み
のレジスタ群に一時記憶させる。
ロセサステータスワード(PSW)8a、プレビアスバ
ンクポインタ(PBP)10が転送されてくる間に、汎
用レジスタR0〜R15の情報をバンク(RAM)2に
退避させる。転送されてきたプログラムカウンタ(P
C)7a、プロセサステータスワード(PSW)8a、
プレビアスバンクポインタ(PBP)10の情報は、と
りあえず、汎用レジスタR0〜R15のすでに退避済み
のレジスタ群に一時記憶させる。
【0061】一例として、汎用レジスタのレジスタ番号
の大きい方から退避したとする。最初に退避されるレジ
スタ群は、R15〜R12となり、転送されてきたプロ
グラムカウンタ(PC)7a、プロセサステータスワー
ド(PSW)8a、プレビアスバンクポインタ(PB
P)10の情報を、このレジスタ群R15〜R12に退
避させる。
の大きい方から退避したとする。最初に退避されるレジ
スタ群は、R15〜R12となり、転送されてきたプロ
グラムカウンタ(PC)7a、プロセサステータスワー
ド(PSW)8a、プレビアスバンクポインタ(PB
P)10の情報を、このレジスタ群R15〜R12に退
避させる。
【0062】汎用レジスタR12にはプログラムカウン
タ(PC)7aの下位16ビットを転送し、R13の上
位8ビットにプレビアスバンクポインタ(PBP)1
0、下位8ビットにプログラムカウンタ(PC)7aの
上位8ビットを転送する。またR14にはユーザスタッ
クポインタ(USP)9aを転送し、R15にはプロセ
サステータワード(PSW)8aを転送する。
タ(PC)7aの下位16ビットを転送し、R13の上
位8ビットにプレビアスバンクポインタ(PBP)1
0、下位8ビットにプログラムカウンタ(PC)7aの
上位8ビットを転送する。またR14にはユーザスタッ
クポインタ(USP)9aを転送し、R15にはプロセ
サステータワード(PSW)8aを転送する。
【0063】1バンクの大きさは、4ワード分に相当す
る。カレントバンクポインタ(CBP)11の示す値の
バンク番号は、プログラムカウンタ(PC)7a、プロ
セサステータスワード(PSW)8a、ユーザスタック
ポインタ(USP)9a、プレビアスバンクポインタ
(PBP)10を退避させるバンクとして使い、汎用レ
ジスタR0〜R15はカレントポインタ(CBP)11
の示す値に+1〜+4を加えたバンク番号のバンク(R
AM)2の中のバンクに退避させる。
る。カレントバンクポインタ(CBP)11の示す値の
バンク番号は、プログラムカウンタ(PC)7a、プロ
セサステータスワード(PSW)8a、ユーザスタック
ポインタ(USP)9a、プレビアスバンクポインタ
(PBP)10を退避させるバンクとして使い、汎用レ
ジスタR0〜R15はカレントポインタ(CBP)11
の示す値に+1〜+4を加えたバンク番号のバンク(R
AM)2の中のバンクに退避させる。
【0064】一例として、カレントバンクポインタ(C
BP)11の値が15のときに、退避する情報が、バン
ク(RAM)2の中のどこのバンクに退避させるかを、
図4(b) に示す。
BP)11の値が15のときに、退避する情報が、バン
ク(RAM)2の中のどこのバンクに退避させるかを、
図4(b) に示す。
【0065】バンク(RAM)2のバンク15に、プロ
グラムカウンタ(PC)7a、プロセサステータスワー
ド(PSW)8a、ユーザスタックポインタ(USP)
9aおよびプレビアスバンクポインタ(PBP)10を
退避させ、汎用レジスタR0〜R3はバンク16に、汎
用レジスタR4〜R7はバンク17に、汎用レジスタR
8〜R11はバンク18に、汎用レジスタR12〜R1
5はバンク19に退避させ、合計で情報を退避させるの
に5バンクを使用することになる。退避させていく順序
は前述したように、この例で述べると、図示したように
1〜5の順序でバンク19から小さいバンク番号の方
へ、と退避させていく。
グラムカウンタ(PC)7a、プロセサステータスワー
ド(PSW)8a、ユーザスタックポインタ(USP)
9aおよびプレビアスバンクポインタ(PBP)10を
退避させ、汎用レジスタR0〜R3はバンク16に、汎
用レジスタR4〜R7はバンク17に、汎用レジスタR
8〜R11はバンク18に、汎用レジスタR12〜R1
5はバンク19に退避させ、合計で情報を退避させるの
に5バンクを使用することになる。退避させていく順序
は前述したように、この例で述べると、図示したように
1〜5の順序でバンク19から小さいバンク番号の方
へ、と退避させていく。
【0066】バンク(RAM)2への情報の退避も終わ
り、割込ハンドラ先頭番地も生成されると割込ハンドン
先頭番地に分岐していく。割込ハンドラ先頭番地には、
EITモードと呼ばれるモード設定コマンドが1ワード
分設けられている。これからEITモードについて説明
をする。割込ハンドラ先頭番地に設けられたEITモー
ドの各モードをセットすることで、割込ハンドラルーチ
ンで使用するモードを設定できる。
り、割込ハンドラ先頭番地も生成されると割込ハンドン
先頭番地に分岐していく。割込ハンドラ先頭番地には、
EITモードと呼ばれるモード設定コマンドが1ワード
分設けられている。これからEITモードについて説明
をする。割込ハンドラ先頭番地に設けられたEITモー
ドの各モードをセットすることで、割込ハンドラルーチ
ンで使用するモードを設定できる。
【0067】EITモードの中で、バンクを切り換える
ことができるビット割付がされている(バンク切換モー
ド)。バンク数が全部で256バンク存在すると図3
(d) に示すように、EITモードの下位8ビットを使っ
て表すことが出来る。バンク番号が、0以外の値がセッ
トされていたとすると、それはバンクを切り換えること
を意味するものである。
ことができるビット割付がされている(バンク切換モー
ド)。バンク数が全部で256バンク存在すると図3
(d) に示すように、EITモードの下位8ビットを使っ
て表すことが出来る。バンク番号が、0以外の値がセッ
トされていたとすると、それはバンクを切り換えること
を意味するものである。
【0068】このバンク番号に基づいて戻り情報の保存
を行う動作を開始する。先ずカレントバンクポインタ
(CBP)11の示す値を、プレビアスバンクポインタ
(PBP)10に転送する。これで前に使っていたバン
ク番号を記憶できる。これから割込みで使うバンク番号
をカレントバンクポインタ(CBP)11に転送する。
指定されたバンクから汎用レジスタR0〜R15の情報
をレジスタファイル9に転送してくる。
を行う動作を開始する。先ずカレントバンクポインタ
(CBP)11の示す値を、プレビアスバンクポインタ
(PBP)10に転送する。これで前に使っていたバン
ク番号を記憶できる。これから割込みで使うバンク番号
をカレントバンクポインタ(CBP)11に転送する。
指定されたバンクから汎用レジスタR0〜R15の情報
をレジスタファイル9に転送してくる。
【0069】バンク番号が、0の値がセットされていた
とすと、それはバンクを切り換えないことを意味する。
バンクを切り換えない動作は、バンクに退避したプログ
ラムカウンタ(PC)7a、プロセサステータスワード
(PSW)8a、ユーザスタックポインタ(USP)9
a、プレビアスバンクポインタ(PBP)10は無効と
なり、新たに別の場所に退避させることになる。スタッ
クポインタの示す値の領域に退避することになる。
とすと、それはバンクを切り換えないことを意味する。
バンクを切り換えない動作は、バンクに退避したプログ
ラムカウンタ(PC)7a、プロセサステータスワード
(PSW)8a、ユーザスタックポインタ(USP)9
a、プレビアスバンクポインタ(PBP)10は無効と
なり、新たに別の場所に退避させることになる。スタッ
クポインタの示す値の領域に退避することになる。
【0070】バンクを切り換えないので、プレビアスバ
ンクポインタ(PBP)10には0をセットし、カレン
トバンクポインタ(CBP)は変更の必要はない。ま
た、バンクを切り換えないので、レジスタファイル9に
存在する汎用レジスタR0〜R15を使用する。
ンクポインタ(PBP)10には0をセットし、カレン
トバンクポインタ(CBP)は変更の必要はない。ま
た、バンクを切り換えないので、レジスタファイル9に
存在する汎用レジスタR0〜R15を使用する。
【0071】しかし、プログラムカウンタ(PC)7
a、プロセサステータスワード(PSW)8a、ユーザ
スタックポインタ(USP)9a、プレビアスバンクポ
インタ(PBP)10を退避させるために一時的記憶レ
ジスタとして汎用レジスタR12〜R15を前に使用し
たので、バンク(RAM)2からレジスタファイル9の
汎用レジスタR12〜R15を書き戻す必要がある。汎
用レジスタR12〜R15の保存が必要な場合は、プロ
グラムでスタックなどに退避するか、プログラムでバン
クを切り換える。
a、プロセサステータスワード(PSW)8a、ユーザ
スタックポインタ(USP)9a、プレビアスバンクポ
インタ(PBP)10を退避させるために一時的記憶レ
ジスタとして汎用レジスタR12〜R15を前に使用し
たので、バンク(RAM)2からレジスタファイル9の
汎用レジスタR12〜R15を書き戻す必要がある。汎
用レジスタR12〜R15の保存が必要な場合は、プロ
グラムでスタックなどに退避するか、プログラムでバン
クを切り換える。
【0072】EITモードの中に、図3(e) に示すよう
に、割込ハンドラルーチンの中で使用するレジスタの数
をセットできるビットを割り付けたとすることができる
(使用レジスタ数モード)。
に、割込ハンドラルーチンの中で使用するレジスタの数
をセットできるビットを割り付けたとすることができる
(使用レジスタ数モード)。
【0073】バンク(RAM)2に退避している情報を
レジスタファイル9に転送するのに専用バス6を使っ
て、1度に4つのレジスタの内容を転送することにな
り、使用レジスタ数は4の倍数に相当することになるの
で、4、8、12、16の4ケースが存在し、2ビット
で表現可能である。
レジスタファイル9に転送するのに専用バス6を使っ
て、1度に4つのレジスタの内容を転送することにな
り、使用レジスタ数は4の倍数に相当することになるの
で、4、8、12、16の4ケースが存在し、2ビット
で表現可能である。
【0074】割込ハンドラルーチンでレジスタの数はあ
まり多く使用しないときに、使用レジスタ数を4あるい
は8レジスタ数にすれば、不必要なレジスタを転送する
時間が省略できて速く割込ハンドラルーチンの実行開始
ができる。
まり多く使用しないときに、使用レジスタ数を4あるい
は8レジスタ数にすれば、不必要なレジスタを転送する
時間が省略できて速く割込ハンドラルーチンの実行開始
ができる。
【0075】割込ハンドラルーチン実行中に別の現在実
行中の割込みより優先順位が高い割込みが発生し、受付
けられたとする。この場合も前述した退避動作を開始す
る。最初の割込みを割込み1とし、後からの割込みを割
込み2とする。割込み2の場合もプログラムカウンタ
(PC)7a、プロセサステータスワード(PSW)8
a、ユーザスタックポインタ(USP)9a、プレビア
スバンクポインタ(PBP)10、汎用レジスタR0〜
R15の情報を退避させる。
行中の割込みより優先順位が高い割込みが発生し、受付
けられたとする。この場合も前述した退避動作を開始す
る。最初の割込みを割込み1とし、後からの割込みを割
込み2とする。割込み2の場合もプログラムカウンタ
(PC)7a、プロセサステータスワード(PSW)8
a、ユーザスタックポインタ(USP)9a、プレビア
スバンクポインタ(PBP)10、汎用レジスタR0〜
R15の情報を退避させる。
【0076】ここでEITモードの使用レジスタ数モー
ドが有効的になる。割込み1で例えば使用レジスタ数が
4レジスタだとすると、バンク(RAM)2に転送する
回数は、プログラムカウンタ(PC)7a、プロセサス
テータスワード(PSW)8a、ユーザスタックポイン
タ(USP)9a、プレビアスバンクポインタ(PB
P)10の組と汎用レジスタR0〜R3の組の2回の転
送で済むことになる。
ドが有効的になる。割込み1で例えば使用レジスタ数が
4レジスタだとすると、バンク(RAM)2に転送する
回数は、プログラムカウンタ(PC)7a、プロセサス
テータスワード(PSW)8a、ユーザスタックポイン
タ(USP)9a、プレビアスバンクポインタ(PB
P)10の組と汎用レジスタR0〜R3の組の2回の転
送で済むことになる。
【0077】つまり、汎用レジスタR0〜R15を全て
転送しないでよく、処理スピードの向上につながる。復
帰も、前述したことが当てはまり、割込み2が割込処理
終了後、割込ハンドラを抜けるときに、汎用レジスタR
0〜R3の退避が必要であれば、使用したレジスタ分の
み退避すればよいことになる。
転送しないでよく、処理スピードの向上につながる。復
帰も、前述したことが当てはまり、割込み2が割込処理
終了後、割込ハンドラを抜けるときに、汎用レジスタR
0〜R3の退避が必要であれば、使用したレジスタ分の
み退避すればよいことになる。
【0078】この他に、図3(f) に示すように、スタッ
ク指定モードを割付けると割込ハンドラルーチンで使用
するスタックを指定することができる。(スタック指定
モード)
ク指定モードを割付けると割込ハンドラルーチンで使用
するスタックを指定することができる。(スタック指定
モード)
【0079】また、前述した3種のモードを1ワードに
割り当てることもできる。例として図3(g) に示すよう
に、バンク番号指定モードに下位8ビット、スタック指
定モードに上位8ビットの内の2ビットにユーザスタッ
クポインタ(USP)9a、インタラプトスタックポイ
ンタ(ISP)9a、エミュレータスタックポインタ
(ESP)9cを、使用レジスタ数モードに上位8ビッ
トの内の別の2ビットを割り付け、残り4ビットは未定
義とすることもできる。またその他に、図3(h) に示す
ように、割込優先順位指定モードを割付けると割込ハン
ドラルーチンで使用する割込みレベルを指定できる。
割り当てることもできる。例として図3(g) に示すよう
に、バンク番号指定モードに下位8ビット、スタック指
定モードに上位8ビットの内の2ビットにユーザスタッ
クポインタ(USP)9a、インタラプトスタックポイ
ンタ(ISP)9a、エミュレータスタックポインタ
(ESP)9cを、使用レジスタ数モードに上位8ビッ
トの内の別の2ビットを割り付け、残り4ビットは未定
義とすることもできる。またその他に、図3(h) に示す
ように、割込優先順位指定モードを割付けると割込ハン
ドラルーチンで使用する割込みレベルを指定できる。
【0080】この割込みレベル指定モードを割り付ける
ことによりユーザ定義の割込みレベルが指定可能にな
る。例えばEITモードの中に、この割込優先順位指定
モードが存在しなかったとする。IMフラグに2にセッ
トされている時、割込優先順位2を表す。優先順位の示
す値が大きい程、優先順位は高いことになる。発生した
割込要因の優先順位5のときに、IMフラグが2をセッ
トされていたとき、発生した割込要因の方が、優先順位
が高いので、割込みを受付つけることになる。そして、
IMフラグに受付けた割込み優先順位を1レベルあげた
値をセットし、この例ではIMフラグを6にセットす
る。
ことによりユーザ定義の割込みレベルが指定可能にな
る。例えばEITモードの中に、この割込優先順位指定
モードが存在しなかったとする。IMフラグに2にセッ
トされている時、割込優先順位2を表す。優先順位の示
す値が大きい程、優先順位は高いことになる。発生した
割込要因の優先順位5のときに、IMフラグが2をセッ
トされていたとき、発生した割込要因の方が、優先順位
が高いので、割込みを受付つけることになる。そして、
IMフラグに受付けた割込み優先順位を1レベルあげた
値をセットし、この例ではIMフラグを6にセットす
る。
【0081】ここで問題になるのが、優先順位5の割込
みを受付けたときIMフラグは6を示す。受付けた割込
要因より優先順位の高い優先順位7の割込みが存在する
ことである。
みを受付けたときIMフラグは6を示す。受付けた割込
要因より優先順位の高い優先順位7の割込みが存在する
ことである。
【0082】つまり、優先順位5の割込処理を実行中
に、二重割込みが発生する可能性がある。この時、ユー
ザとしては現在割込処理中の割込要因に関しては、ノン
マスカブルな割込以外は、受付けたくないと言う要望が
出てくる。そこで、この割込優先順位指定モードの存在
により、このような例に対しての要望であれば通常を6
でセットされているIMフラグを割込優位指定モードで
最高優先順位7にセットすればノンマスカプルな割込み
以外は、受付けないことになる。但し、割込優先順位の
変更をしないで、IMフラグに従った優先順位6を希望
するならば、割込優先順位指定モードに0をセットする
ことで、割込優先順位の変更をしないようにする。
に、二重割込みが発生する可能性がある。この時、ユー
ザとしては現在割込処理中の割込要因に関しては、ノン
マスカブルな割込以外は、受付けたくないと言う要望が
出てくる。そこで、この割込優先順位指定モードの存在
により、このような例に対しての要望であれば通常を6
でセットされているIMフラグを割込優位指定モードで
最高優先順位7にセットすればノンマスカプルな割込み
以外は、受付けないことになる。但し、割込優先順位の
変更をしないで、IMフラグに従った優先順位6を希望
するならば、割込優先順位指定モードに0をセットする
ことで、割込優先順位の変更をしないようにする。
【0083】前述してきたことの中で、ベクタ値が連続
なる値で割付けられたことにより、必要とされる動作で
あった。あらかじめベクタ値を連続なる値にしないで、
ある程度の間隔を持たせて尚且つ、間隔、等間隔に割当
てないで各割込み要因にあった割付けをする。
なる値で割付けられたことにより、必要とされる動作で
あった。あらかじめベクタ値を連続なる値にしないで、
ある程度の間隔を持たせて尚且つ、間隔、等間隔に割当
てないで各割込み要因にあった割付けをする。
【0084】例えば、割込ハンドラのエリアを多く必要
とする場合、次のベクタ値との間隔は多くとったり、割
込ハンドラのエリアとしては2ワードあれば十分という
時には、ベクタ値の間隔を4でセットすればよいことに
なる。
とする場合、次のベクタ値との間隔は多くとったり、割
込ハンドラのエリアとしては2ワードあれば十分という
時には、ベクタ値の間隔を4でセットすればよいことに
なる。
【0085】このベクタ値の割付方法をとれば、ハード
ウェア構成はベクタ値をシフトさせないでアドレスラッ
チさせる構成になる。前者と後者の組み合わせによるベ
クタ値の割り付けで、割込要因数を増やすことも考えら
れる。
ウェア構成はベクタ値をシフトさせないでアドレスラッ
チさせる構成になる。前者と後者の組み合わせによるベ
クタ値の割り付けで、割込要因数を増やすことも考えら
れる。
【0086】また、前述したEITモードは、割込ハン
ドラの中の1ワード分程設けられていることで説明した
が、バンク切換え、スタック指定、使用レジスタなど
の、それ以外のモード設定が必要となる場合は、図3
(h) に示す拡張モードのように、EITモードの1ワー
ドを2、3ワードと拡張することで、モード設定コマン
ド(EITモード)で多くのモードを設定できる。な
お、この発明は上記実施例に限定されるものではなく、
要旨を変更しない範囲で変形して実施できる。
ドラの中の1ワード分程設けられていることで説明した
が、バンク切換え、スタック指定、使用レジスタなど
の、それ以外のモード設定が必要となる場合は、図3
(h) に示す拡張モードのように、EITモードの1ワー
ドを2、3ワードと拡張することで、モード設定コマン
ド(EITモード)で多くのモードを設定できる。な
お、この発明は上記実施例に限定されるものではなく、
要旨を変更しない範囲で変形して実施できる。
【0087】上記実施例では、レジスタバンク構成をも
つシングルチップマイクロコンピュータについて説明し
てきた。しかし、本発明の主旨である、EITモードを
マイクロプログラムで解釈し、割込ハンドラルーチン開
始前に、様々なモード設定を完了する方式は、レジスタ
バンク構成を採らないシングルチップマイクロコンピュ
ータでも十分に有効であることは言うまでもない。
つシングルチップマイクロコンピュータについて説明し
てきた。しかし、本発明の主旨である、EITモードを
マイクロプログラムで解釈し、割込ハンドラルーチン開
始前に、様々なモード設定を完了する方式は、レジスタ
バンク構成を採らないシングルチップマイクロコンピュ
ータでも十分に有効であることは言うまでもない。
【0088】
【発明の効果】従来の技術では、バンク切換え、システ
ムモードの切換えなど割込処理ルーチンの実行が開始さ
れてからプログラムの記述によって切換える必要があ
り、実際の割込処理ルーチンを実行するまでに割込みを
受付けてから、著しく割込応答処理時間が必要とされて
きた。
ムモードの切換えなど割込処理ルーチンの実行が開始さ
れてからプログラムの記述によって切換える必要があ
り、実際の割込処理ルーチンを実行するまでに割込みを
受付けてから、著しく割込応答処理時間が必要とされて
きた。
【0089】この発明によれば、同じ条件のモード設定
をして実際の割込処理ルーチンを開始するまでの応答時
間はEITモードの存在により、EITモードはマイク
ロプログラム制御できるので従来の割込応答処理時間よ
り著しく短縮できるようになった。
をして実際の割込処理ルーチンを開始するまでの応答時
間はEITモードの存在により、EITモードはマイク
ロプログラム制御できるので従来の割込応答処理時間よ
り著しく短縮できるようになった。
【図1】この発明を説明するためのシステム構成を示す
ブロック構成図。
ブロック構成図。
【図2】同システムのCPUの内部構成を示すブロック
構成図。
構成図。
【図3】この発明の一実施例の構成と動作を説明するた
めのEITモードの構成と他の情報配列の説明図。
めのEITモードの構成と他の情報配列の説明図。
【図4】同実施例の退避動作を説明するためのCPUの
レジスタファイルを中心としたブロック構成図。
レジスタファイルを中心としたブロック構成図。
【図5】従来の割込応答処理の説明図。
1…中央処理装置(CPU)、2…バンク(RAM)、
3…割込みコントローラ(IRC)、4…周辺デバイ
ス、5…メインシステムバス(MBUS)、6…専用バ
ス、7…バスインターフェース部(BIU)、7a…プ
ログラムカウンタ(PC) 8…算術論理演算部(ALU)、8a…プロセサステー
タスワード(PSW) 9…レジスタファイル、9a…ユーザスタックポインタ
(USP)、9b…インタラプトスタックポインタ(I
SP)、9c…エミレータスタックポインタ(ES
P)、10…プレビアスバンクポインタ(PBP)、1
1…カレントバンクポインタ(CBP)、12…コア内
部バス(IBUS)。
3…割込みコントローラ(IRC)、4…周辺デバイ
ス、5…メインシステムバス(MBUS)、6…専用バ
ス、7…バスインターフェース部(BIU)、7a…プ
ログラムカウンタ(PC) 8…算術論理演算部(ALU)、8a…プロセサステー
タスワード(PSW) 9…レジスタファイル、9a…ユーザスタックポインタ
(USP)、9b…インタラプトスタックポインタ(I
SP)、9c…エミレータスタックポインタ(ES
P)、10…プレビアスバンクポインタ(PBP)、1
1…カレントバンクポインタ(CBP)、12…コア内
部バス(IBUS)。
Claims (2)
- 【請求項1】割込み要求の発生により読出される割込ハ
ンドラの先頭番地の少なくとも1ワード領域に、割込み
処理のためのシステム設定コマンドを設けたことを特徴
とする割込応答処理方式。 - 【請求項2】上記システム設定コマンドは情報を退避さ
せるバンクを指定するバンク切換,割込み処理で使用す
るレジスタ数を指定する使用レジスタ数,使用するスタ
ックを指定するスタック指定,の各コマンドを含むこと
を特徴とする請求項1記載の割込応答処理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23380292A JPH0683640A (ja) | 1992-09-01 | 1992-09-01 | 割込応答処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23380292A JPH0683640A (ja) | 1992-09-01 | 1992-09-01 | 割込応答処理方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0683640A true JPH0683640A (ja) | 1994-03-25 |
Family
ID=16960816
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP23380292A Pending JPH0683640A (ja) | 1992-09-01 | 1992-09-01 | 割込応答処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0683640A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100716596B1 (ko) * | 2007-03-26 | 2007-05-09 | 새한에너테크 주식회사 | 파우치형 리튬 2차전지 |
| CN105468310A (zh) * | 2015-11-17 | 2016-04-06 | 昇捷丰电子(厦门)有限公司 | 一种喷码机的fpga控制系统及其控制方法 |
-
1992
- 1992-09-01 JP JP23380292A patent/JPH0683640A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100716596B1 (ko) * | 2007-03-26 | 2007-05-09 | 새한에너테크 주식회사 | 파우치형 리튬 2차전지 |
| CN105468310A (zh) * | 2015-11-17 | 2016-04-06 | 昇捷丰电子(厦门)有限公司 | 一种喷码机的fpga控制系统及其控制方法 |
| CN105468310B (zh) * | 2015-11-17 | 2019-01-15 | 昇捷丰电子(厦门)有限公司 | 一种喷码机的fpga控制系统及其控制方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPS62243058A (ja) | マルチプロセツサシステムの割込制御方法 | |
| JP2003058381A (ja) | プログラムによる例外処理設定を可能にしたプロセッサ | |
| JPH07311686A (ja) | コンピュータシステム、およびその中でシステム管理割込を発生し処理するための方法 | |
| JPS6290728A (ja) | 割込処理方法 | |
| JPH056281A (ja) | 情報処理装置 | |
| JP2585905B2 (ja) | マルチタスク実行装置 | |
| JPH0668725B2 (ja) | データ処理システムにおける割込条件に応答する装置及び非同期割込条件に応答する方法 | |
| JPS6097440A (ja) | 仮想多重プロセツサ装置 | |
| JP3139310B2 (ja) | ディジタル信号処理装置 | |
| JP2972557B2 (ja) | データ転送制御装置および制御方法 | |
| JP3127737B2 (ja) | ディジタル信号処理装置 | |
| JPH03188531A (ja) | 時分割マルチタスク実行装置 | |
| JP2876629B2 (ja) | データ処理装置 | |
| JPH0375832A (ja) | 仮想計算機制御方式 | |
| JPH05233525A (ja) | I/o処理装置 | |
| JPS6352240A (ja) | デ−タ処理装置 | |
| JPH0869382A (ja) | 半導体装置 | |
| JPH06103224A (ja) | 割込み制御装置 | |
| JPH02183342A (ja) | 割込み制御装置 | |
| JPS61226839A (ja) | イベント処理方式 | |
| JPH03259339A (ja) | データ処理装置 | |
| JPH0695314B2 (ja) | 仮想計算機システム | |
| JPH04270441A (ja) | データ処理装置 | |
| JPH04256190A (ja) | ファジィ演算機能を有するマイクロコンピュータ | |
| JPH0247751A (ja) | チャネル制御方式 |