No.1ベストアンサー
- 回答日時:
CPUの「回路としての」仕組みはよくわかりませんので、あくまでもソフトが
利用するモノとしての仕組みを書きます。
CPUの割り込みの種類には「ノンマスカブル割り込み(NMI)」「内部割込み」
「外部割込み」があり、後者2つは「マスカブル割り込み」と総称されます。
周辺機器がCPUに発行する割り込みは「外部割込み」にあたり、これをIRQと呼んで
優先順位が高い方から順に番号が振られています。
内部割込みはタイマーなどに使い、ノンマスカブルはリセット割り込みです。
外部割込みはIRQに割り当てられたポートの状態によってCPUが認識しますが、
この「状態」には「立ち上がりエッジ」「立下りエッジ」があります。(ポート
の電圧がL状態からH状態になった瞬間が「立ち上がりエッジ」、「立下りエッ
ジ」はその逆です)CPUの種類によっては「H状態である時間が経ったら」など
も要因として認識します。
割り込みが発生すると、CPU内部のレジスタ「割り込み状態フラグ」の、対応する
ビットが1になり、CPUは例外処理(割り込み発生の処理)に移ります。
この最初の処理をしているのが「割り込みコントローラ」です。
するとまず、「割り込みマスクレジスタ」というレジスタをチェックし、マスク
の状態が検出されるとその割り込みは無視されます。(NMIはマスクできません)
そしてマスクされていないときは、通常、NMI→内部割込み→外部割込みの順に
「割り込み状態フラグ」の状態をチェックしていき、1のところを見つけると
該当する「割り込みベクタ」という領域に処理を移します。
ここでわかるのは、同時に複数のビットが1になっていても、優先順位の高い
ところで引っかかってしまうということです。
さて、「割り込みベクタ」というのは、割り込み処理への分岐先のアドレスが
記述してあるテーブルです。プログラマーはここに、割り込みルーチンのアド
レスを登録しておきます。CPUによっては「セカンダリベクタ」という所が
用意されており、プログラマーはセカンダリベクタに割り込みルーチンを登録
するものもあります。
そして「割り込みベクタ」(→「セカンダリベクタ」)から割り込みルーチン
に処理が移されるとき、CPUは現在のプログラムの実行状態をすべて退避させ
ます(この退避先はCPUによってさまざまです)。それから処理を移し、通常
ここから割り込み処理終了まではNMI以外のすべての割り込みが禁止されます。
(このため、割り込みルーチンは短めにしておかないと、他の割り込みが実行
されなくなってしまいます)
そして割り込み処理ルーチンが終了すると、CPUは「割り込み状態フラグ」のビット
を0にし、退避していたプログラムの実行状態を元に戻し、再び通常の処理に戻り
ます。
以上が大まかな流れです。
長文になってしまいましたがわかりましたでしょうか・・・??
もし焦点のズレた回答になってしまってたならご指摘下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード CPUで動作しているOSについての質問です。 3 2023/05/05 00:10
- ソフトウェア OS と CPU の関係についての質問です。 3 2023/05/04 19:29
- デスクトップパソコン BIOSが起動しない 7 2023/01/15 18:33
- ビデオカード・サウンドカード メイン機とは別に、初自作としてpcを組みました。 pcスペック cpu ryzen5 5500 グラ 1 2023/05/15 12:22
- デスクトップパソコン CPUの温度 8 2022/07/13 18:59
- CPU・メモリ・マザーボード CPUがメモリ上の命令を実行する流れについての質問です。 3 2023/05/05 01:41
- その他(コンピューター・テクノロジー) 補助記憶装置についてその役割や仕組みを主記憶装置との違いから説明せよ。語群を用いること 語群(CPU 1 2023/07/10 22:25
- BTOパソコン パソコン工房で静音化アップデートをしようと思ってるのですが 4 2022/05/25 19:46
- デスクトップパソコン 自作PCが電源を入れると一瞬ケースや各パーツのファンが回り切れます。原因と考えられるものを教えていた 6 2022/07/06 19:15
- CPU・メモリ・マザーボード CPUが大変です 5 2022/06/18 10:59
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pic 複数の割り込み関数 切り分...
-
PICでのプログラムによるチャタ...
-
Excelでタイマーの一時停止する...
-
raspberry pi の 割り込み原因...
-
スーパーのレジで並んでいたら...
-
一定時間操作がなかったら、と...
-
PICマイコン 割り込み実行時間...
-
プリントスクリーンの自動化
-
VB.net 割り込みの禁止
-
マイコン C言語 割り込み処理...
-
インバウンドで迷惑している人...
-
H8/3052F/IRQを使った割り込み
-
電車で待機列の割り込みについ...
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
緯度、経度の 10進法と 60進法...
-
C言語で、メモリを解放しないで...
-
TCP/IP通信時のサーバーからの受信
-
バックグラウンドのプロセスの...
-
プログラミング ソースコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの処理量を減らすコーデ...
-
pic 複数の割り込み関数 切り分...
-
【組込み】割り込み中のstatic...
-
USJでの割り込み
-
CPU負荷率の安全な上限と計...
-
ウォッチドッグタイマ(WDT)の...
-
電車乗車時、並んでいるのに割...
-
USB機器からのデータ受信による...
-
一定時間操作がなかったら、と...
-
Amazonfireタブレットにわから...
-
マイコン C言語 割り込み処理...
-
PICマイコンでエンコーダパルス...
-
電車で待機列の割り込みについ...
-
駅のトイレでナイチンに邪魔さ...
-
実行した後、どうしてもフリー...
-
電車のドアの前での並び方
-
V.B.6 多重Call用スプール作成...
-
H8マイコンでの割り込み(シリ...
-
VB.net 割り込みの禁止
-
割り込みについて
おすすめ情報