- 締切済み
組み込みソフトウェアの割り込みについて、
今組み込みソフトウェアについて、勉強している物です。 割り込みについて、分からないため質問させていただきます。 割り込みをする際は、何らかの操作により、割り込みカウンタにビットが入り、 それにより、PCに割り込みアドレスを入れられ、割り込み処理が実行されるとの事ですが、 何らかの操作により、割り込みカウンタにビットが入り、それに検出がよくわからないです。 ポーリングで、カウンタの値を見ている訳ではないのに、どうやって検出するのでしょうか? 私の解釈、憶測では、カウンタをハードウェアでポーリングしており、そのためソフトウェアでは意識する必要がないのでは?と認識しております。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- rinkun
- ベストアンサー率44% (706/1571)
>私の解釈、憶測では、カウンタをハードウェアでポーリングしており、そのためソフトウェアでは意識する必要がないのでは?と認識しております。 その通りですよ。基本的にCPUは命令が終わるごとに外部割込みが入っていないか判定するようになっています。それが「割り込みカウンタ」の読み取りか、割込み信号線のハイローチェックか、そのほかの方法かはCPU次第でしょうけど。 現在のCPUでは複数命令を同時実行(スーパースカラー)したり、内部では順不同に実行(アウトオブオーダー)したりする機能を持っているものもあってより複雑になっていますが、ソフトウェアからみたときにはある命令までは実行済みでその次の命令が実行される前に割込みが発生したことになるように調整されます。 # ただし非常に長い時間が掛かる複雑な命令では途中で割込みが発生できるものもあります なお、ゼロ除算例外、アドレス違反例外のようなプログラムの実行に起因して発生する例外は外部割込みとは異なるタイミングで発生するので注意ください。 # これらが発生すると実行中の命令を完了できないので外部割込みと同じタイミングでは処理できない
- ok-kaneto
- ベストアンサー率39% (1798/4531)
そうですね。「割り込み」は分かりますか? 「割り込み」は色々なレベルの割り込みがあって、それに応じて処理を振り分けられます。 ハードウェア割り込みやソフトウェア割り込みがありますが、これらはCPUの機能としてあります。 http://ja.wikipedia.org/wiki/%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
どんなソフトで、どんなことを言っているのか、 よくわからないのですが。 大抵は、割り込みの大本はハードウエアが多いですよ。 で、そこから割り込まれた後、 割り込みベクターに登録された”順”にコールしていく システムが多いです。 以前の作り方では、CPUが遅かったので、 割り込みベクター(通称INTやNMI)は1つだけで、終わらせるように 作っていましたが、CPUが高速化してきたため、 複数のコールベクターを、本来の割り込みベクターから、呼び出し そこから、ポーリングセレクティブ(または全部)するように、今は 作り方が変わってきています。 ちなみ、これは、裸のシステムでの話ですが、 すでに稼動しているシステムでの話ですか??