2017-01-03 10 views
0

"carl hamacher"というコンピュータ組織のBasic I/Oを使っているうちに、私は多くの用語を混同しています。ステータスレジスタとコントロールレジスタの関係は?

割り込みI/Oでは、デバイスが割り込みを発生するたびに、プロセッサは現在実行中のプログラムを中断し、プログラムカウンタとステータスレジスタの内容を保存し、ISRによって割り込みを処理しています。実行命令から実行され、保存された状態レジスタとPCが復元されます。

しかし、私は...-以下の点で立ち往生しています:それは1が、その後I/Oデバイスからの割り込みREQが受け入れられている場合

フラグIEは、(割り込みイネーブル)があります。

一方、もう1つの点があります。

I/Oデバイスのインターフェイスには、デバイスの動作モードを制御する情報 を含む制御レジスタが含まれています。このレジスタの1ビットは、制御を中断するために専用の にすることができます。 I/Oデバイスは、このビット は今、この制御レジスタとその彼らが話しているビットれているもの1

に設定されている場合にのみ、割り込み要求を提起することが許可されていますか?それはIEのフラグとは異なりますか?ステータスレジスタとコントロールレジスタの関係は?

はさらに

デバイスが割り込みを要求しているかどうかを決定するために必要な情報は、そのステータスレジスタの使用可能 であるもう一つの点があります。デバイスが割り込み要求を発生させると、ステータスレジスタに ビットが1にセットされます。これはIRQビットと呼ばれます。 割り込みデバイスを識別する最も簡単な方法は、割り込みサービスルーチンがシステム内のすべてのI/Oデバイスをポーリングするようにすることです。 IRQビットが1に設定された状態で最初に検出されたデバイスは、サービスを受けるべきデバイスです。 が適切なサブルーチンが、要求されたサービス

を提供するために呼び出され、私は完全に混乱していますすなわちIE、IRQおよび制御レジスタのビット これらの3ビットとの関係を説明してください。.. !!!

答えて

1

割り込みを認める背後CPUロジックのこの単純化され、まだ完了して、ビュー考えてみましょう:ステータスレジスタIEフラグはからのすべての割り込み要求をマスクするために使用される

CPU IRQ processing

IRQピンです。
IRQがアサートされると、CPUが割り込みを処理するたびに制御されます。
このステータスレジスタはCPUにあります。デバイスが割り込み要求(スキームにおける割り込み生成ロジック)を生成するときに認識する制御ブロックを有する

Device generating an IRQ, logic


今デバイスのこの簡略化されたビューを検討します。
このブロックは、割込みを要求する信号(IRQreq)と、割込みの原因/理由(例えば、送信バッファ空と新しいデータの受信)を識別する信号のセットをn出力します。

は両方レジスタデバイスの状態に終わるこれらの信号が、IRQreqは、最終的デバイス制御レジスタビットIRQEN介してマスクすることができます。

IRQENがゼロ場合、デバイスIRQピンはゼロすぎるとNO IRQが要求されないであろう、また、何ビットが割り込み要求されたことを示すためにステータスレジスタに設定されていません。
software can use polling to test the device statusが原因で割り込みの理由がまだ書き込まれています。

同じISRを使用して複数のデバイスを処理できるため、実際にどのデバイスがトリガしたかを認識する必要があり、これは可能な各デバイスステータスレジスタを調べることによって行われます。


だから3個のレジスタがあります。

  • CPUステータスレジスタソフトウェアマスクはCPUレベルで割り込みをしてみましょう。どのデバイスがそれらを生成しても、すべての割り込みはマスクされます。
  • デバイス制御レジスタデバイスごとにソフトウェアマスク割り込みを許可します。デバイスによっては割り込みが発生しないことがあります。
  • デバイスステータスレジスタ最後に生成された割り込み(存在する場合)についてソフトウェアに知らせます。通常、これは割り込みのACKにも使用されます。
+0

IRQは、割り込みreq ....を受け入れる/拒否するために使用されるIE(割り込みイネーブル)フラグと似ています。つまり、デバイスが割り込み要求を処理したい場合、IEビットは1でなければなりません。私は正しい? – sourav

+0

@sourav IRQはデバイスのピンです(デバイスのチップを表す破線のボックスの外側です**)。デバイスは割り込みの**ソース**です。*割り込みを生成します。しかし、割り込みを生成できるようにするには、制御レジスタの* IRQen *ビットが1でなければならず、ANDが0になるので、* IRQ *(このように割り込みは要求されません)。 * IE *と* IRQen *は基本的に2つの異なるビューからの同じ概念です:最初は*割り込みを受け付けません* 2番目は*割り込みを出させない*。 –

+0

okkありがとう! – sourav

0

Control(IE) - 割り込みを要求するデバイス機能を有効または無効にするために使用します。 "このデバイスは割り込みを要求できますか?"

ステータス(IRQ) - (コントロールによって)割り込みが有効になっている場合、特定のデバイスが割り込みを要求したことを示すようにIRQがセットされます。 "このデバイスは現在割り込みを要求しています。"

3番目のビットがどこにあるのかはわかりませんが、グローバル(デバイス単位ではない)割り込みがイネーブル/ディスエーブルされていない限り、そうではありません。特定のアーキテクチャに応じて、デバイスごとのIE/IRQ、およびグローバルIEがデバイスごとにオーバーライドするグローバルIE/IRQがあります。グローバルIRQは、少なくとも1つのデバイスにIRQが設定されていることを示します。

+0

IRQフラグとIEフラグは同じステータスレジスタに属していますか? – sourav