第 6 章 割込み処理
6.11 割込み処理のプログラム例
42 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第6章 割込み処理 6.1 割込み処理
6.1 割込み処理
F
2MC-16LX シリーズでは , 各内蔵リソースからの割込み要求により , 割込み処理ま
たは拡張インテリジェント I/0 サービスが起動します。割込み処理では , 割込み処理 プログラムによって割込み要求に対応した処理を行います。拡張インテリジェント I/O サービスでは , 内蔵リソースとメモリ間のデータ転送を自動的に行います。さら に , 内蔵リソース ( 内蔵周辺回路 ) からの要求により , 拡張インテリジェント I/O サービスの実行を中断するなどの機能があります。
■ 割込み処理
CPU に対してハードウェア割込み要求を行うことができる内蔵リソースには, 割込み 要求フラグと割込み許可フラグが必要です。割込み要求フラグは,内蔵リソース固有の イベント(事象)の発生によりセットされます。割込み要求フラグが要求ありを示し, 割込み許可フラグが許可状態のときに,ハードウェア割込み要求が内蔵リソースより発 生します。
ここで,ハードウェア割込み要求の発生により拡張インテリジェントI/Oサービスを起 動する必要がある内蔵リソースに関しては,そのリソースに対応する割込みコントロー ラ中の割込み制御レジスタ(ICR)に拡張インテリジェントI/Oサービスイネーブルフラ
グ(ISE)が設けてあります。
このISEフラグが"1"であるときに割込み要求が発生することによって,拡張インテリ
ジェントI/Oサービスが起動します。また,ハードウェア割込み要求で通常の割込みを 起こしたいときは, ISEを"0"にします。
ソフトウェア割込みである INT命令の実行による割込み要求には,割込み要求フラグ および許可フラグはなく, INT命令の実行により常に割込み要求が発生します。
ハードウェア割込み要求に対しては,ある一定の要求のグループ単位で割込みレベルを 指定できます。割込みレベルの指定は ,割込みコントローラ中の ICRレジスタの中の 割込みレベル設定ビット(IL0, IL1, IL2)にて行います。割込みレベル値は0〜7までの 8通りの値に設定できます。割込みレベル値は, 0が一番強く6が一番弱いと定義され ています。
レベル値 7 に設定された割込み要求グループの割込みは発生しません。また , ハード ウェア割込み要求は,プロセッサステータス(PS)中のコンディションコードレジスタ
(CCR)中の割込み許可フラグ(I)および割込みレベルマスク(ILM)により割込みにマス
ク(許可/禁止)できます。
マスクされない割込み要求が発生すると, CPUは次の動作を行います。
1) システムスタックバンクレジスタ(SSB)とシステムスタックポインタ(SSP)の示 すメモリ中へ,以下に挙げるレジスタのデータ(12バイト)を退避します。
- プロセッサステータス(PS) - プログラムカウンタ(PC)
- プログラムカウンタバンクレジスタ(PCB) - データバンクレジスタ(DTB)
CM44-00201- 4 FUJITSU MICROELECTRONICS LIMITED 43
F 2 MC-16LX ファミリ
第66.1 割込み処理章 割込み処理- アディショナルデータバンクレジスタ(ADB) - ダイレクトページレジスタ(DPR)
- アキュムレータ(A)
2) 割込みベクタをPCとPCBへ3バイト読み出します。
3) PS中のILMレジスタを受け付けた割込み要求のレベル値に更新し, CCRレジス
タ内のSフラグをセットします。
4) 割込みベクタの示す番地より命令を実行し始めます。
INT命令ではILMレジスタの更新は行われず, CCRレジスタの中の割込み許可フラグ (I)をクリアして継続する割込み要求を保留状態にします。
特別な場合として, I/O領域への書込み中はハードウェア割込み要求を受け付けられま せん。これは,各リソースの割込み制御レジスタ関係の書換えを行っている最中に割込 み要求が発生して, CPUが誤動作を起こすことを避けるためです。
44 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第6章 割込み処理
6.2 ハードウェア割込みの動作フロー
6.2 ハードウェア割込みの動作フロー
図 6.2-1 にハードウェア割込みの発生から割込み処理プログラム内で割込み要求が なくなるまでの動作フローを示します。
■ ハードウェア割込みの動作フロー
図 6.2-1 ハードウェア割込みの発生から解除まで
① 周辺の内部で割込み要因が発生します。
② 周辺内の割込み許可ビットを参照し割込み許可になっていれば , 周辺から割込みコン トローラへ割込み要求を発生します。
③ 割込み要求を受け取った割込みコントローラは , 同時に要求のあった割込みの優先順 位を判定した上で該当する割込みに対応する割込みレベルをCPUへ転送します。
④ CPUは,割込みコントローラから要求のあった割込みレベルをプロセッサステータス レジスタ内のILビットと比較します。
⑤ 比較の結果が,現在の割込み処理レベルより優先順位が高い場合のみ,同じプロセッサ ステータスレジスタ内の割込み許可フラグ(I)の内容をチェックします。
⑥ ⑤のチェックの結果, 割込み許可フラグ(I)が割込み許可状態である場合のみ, ILビッ トの内容を要求されたレベルに設定します。そして , 現在実行中の命令の実行が終了 し次第割込み処理を行い,制御を割込み処理ルーチンへ移します。
⑦ ユーザの割込み処理ルーチン内のソフトウェアで , ①で発生した割込み要因をクリア することで割込み要求が終了します。
PS :プロセッサステータス
PS I ILM
I :割込み許可フラグ IR
比較器 ILM:割込みレベルマスク
F2MC-16LX・CPU IR :インストラクションレジスタ
周辺
レ 割 ベ 込 ル
許可FF 比 レ
ベ
AND 較
ル
割込み コントローラ
要因FF 器
周辺 IL
⑦
・・・
②
①
④
③
⑤
⑥ チェック
レジスタファイル マイクロコード F2 MC-16 バス
み
CM44-00201- 4 FUJITSU MICROELECTRONICS LIMITED 45
F 2 MC-16LX ファミリ
6.3 割込み処理のフローチャートとレジスタの退避第6章 割込み処理6.3 割込み処理のフローチャートとレジスタの退避
図 6.3-1 に割込み処理のフローチャートを , 図 6.3-2 に割込み処理時のレジスタ退避 を示します。
■ 割込み処理のフローチャート
図 6.3-1 割込み処理のフローチャート I : 割込み許可フラグ ILM : 割込みレベルマスク
IF : 内蔵リソースの割込み要求
IE : 内蔵リソースの割込みイネーブルフラグ ISE : EI OS イネーブルフラグ
IL : 内蔵リソースの割込み要求レベル S : スタックフラグ
I &
IF & IE =1 YES AND
ILM > IL NO
NO YES
ISE = 1 次の命令の取込み
とデコード
PS,PC,PCB,DTB,ADB,DPR, 拡張インテリジェント I/Oサービス 処理 AをSSPのスタックへ退避
AをSSPのスタックへ退避 その後ILM=IL
YES INT命令
NO PS,PC,PCB,DTB,ADB,DPR,
その後I=0,ILM=IL 通常命令実行
S ← 1
NO ストリング系 割込みベクタ取込み
命令の繰返し 完了
YES PCの更新
2
46 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第6章 割込み処理
6.3 割込み処理のフローチャートとレジスタの退避
■ 割込み処理時のレジスタ退避
図 6.3-2 割込み処理時のレジスタ退避 ワード (16ビット)
MSB LSB
H
↑
← SSP (割込み発生前のSSPの値) AH
AL
DPR ADB
DTB PCB
PC
PS ← SSP
↓ (割込み発生後のSSPの値)
L
CM44-00201- 4 FUJITSU MICROELECTRONICS LIMITED 47
F 2 MC-16LX ファミリ
第6.4 割込みベクタ6章 割込み処理6.4 割込みベクタ
割込みベクタは , 表 6.4-1 に示すように , FFFC00
H〜 FFFFFF
H番地に格納されてい ます。また , 割込みベクタは , ハードウェア割込みとソフトウェア割込みの両方で同 じ領域を共有しています。
■ 割込みベクタ
*1: プログラムカウンタバンクレジスタ(PCB)がFFHのときのCALLV命令のベクタ領域はINT #vct8 (#0〜#7)のベクタ領域と共有しているため, CALLV命令用のベクタを使用する場合は注意が必要 です。
*2: リセットベクタとなっています。
*3: 例外処理用のベクタとなっています。
表 6.4-1 割込みベクタ一覧表
割込み要求 ベクタアドレスL ベクタアドレスH ベクタアドレスバンク モードレジスタ
INT 0 *1 FFFFFCH FFFFFDH FFFFFEH 未使用
INT 1 *1 FFFFF8H FFFFF9H FFFFFAH 未使用
・ ・ ・ ・ ・
・ ・ ・ ・ ・
・ ・ ・ ・ ・
INT 7 *1 FFFFE0H FFFFE1H FFFFE2H 未使用
INT 8 *2 FFFFDCH FFFFDDH FFFFDEH FFFFDFH
INT 9 FFFFD8H FFFFD9H FFFFDAH 未使用
INT 10 *3 FFFFD4H FFFFD5H FFFFD6H 未使用
INT 11 FFFFD0H FFFFD1H FFFFD2H 未使用
・ ・ ・ ・ ・
・ ・ ・ ・ ・
・ ・ ・ ・ ・
INT 254 FFFC04H FFFC05H FFFC06H 未使用
INT 255 FFFC00H FFFC01H FFFC02H 未使用
48 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第6章 割込み処理
6.5 拡張インテリジェントI/Oサービス
6.5 拡張インテリジェント I/O サービス
拡張インテリジェント I/O サービス (EI
2OS) とは , I/O とメモリとの間で自動データ 転送を行う機能で , 従来割込み処理プログラムで行っていた I/O とのデータのやりと
りを DMA ( ダイレクトメモリアクセス ) 的に行える機能です。
■ 拡張インテリジェント I/O サービスの概要
拡張インテリジェントI/Oサービスとは,ハードウェア割込みの1種です。これは, I/O とメモリとの間で自動データ転送を行う機能で,従来は割込み処理プログラムで行って いたI/OとのデータのやりとりをDMA的に行える機能です。従来の割込み処理で行っ ていた方式と比べると,次に示すような利点があります。
• 転送のためのプログラムを記述する必要がないため, プログラムサイズを小さくす ることができます。
• 転送の際に内部レジスタを使用しないので, レジスタの退避が不要になり, 転送速 度が速くなります。
• I/Oの状態により転送を停止できるので,不要なデータを転送しなくて済みます。
• バッファアドレスのインクリメントおよび更新なしの選択ができます。
• I/Oレジスタアドレスのインクリメントおよび更新なしの選択ができます。
また,拡張インテリジェントI/Oサービスが終了すると,終了条件を設定した後に自動 的に割込み処理ルーチンへ分岐するので,ユーザは終了条件が何であったかを判別でき ます。
■ 拡張インテリジェント I/O サービスの構造
拡張インテリジェントI/Oサービスに関連する機構は,次の4つに分かれて存在します。
• 内蔵リソース……割込み許可ビット,割込み要求ビット : リソースからの割込み要 求の制御
• 割込みコントローラ……ICR:割込みのレベル付け,同時要求割込みの優先度の判定, EI2OS動作の選択
• CPU……I, ILM:要求割込みレベルと現レベルの比較,割込み許可状態の識別
• RAM……ディスクリプタ:EI2OSの転送情報の記述