最終更新:2016-09-17 (土) 01:53:21 (2925d)
割り込みコントローラ
Top / 割り込みコントローラ
周辺機器とCPUの間に接続され、周辺機器からの割り込み処理要求を受信してCPUに割り込み信号を発生させる装置。
x86の割り込みコントローラ
- Intel 8259 Programmable Interrupt Controller (PIC)
- Intel Advanced Programmable Interrupt Controller (APIC)
機能
- 保留
- 優先付け
- マスク
- CPUへの通知
メモ
- 現在のPC/AT互換機には8259A相当のPICが2つ使われている
- 通常、PCには2つのPICがあります。1つ目はプロセッサ(CPUの周辺デバイスとして)に入っていて2つ目はマザーボードに載っています(無いものもあります)
- ですので、PCでは合計15個のIRQを扱うことになります
8259Aの動作
- 割り込み信号がIRnの信号線で送られてくる
- 8259Aが持つレジスタにIRQの番号が記録される
- 8259Aはレジスタから優先度の最も高いIRQを選ぶ
- 割り込み信号をCPUに送る
- CPUはデータバスを通じてベクタ番号を読み取る
- 8259Aは、送信したIRQ番号をレジスタから消す
メモ
IRQ番号とベクタ番号
- 典型的なIRQとデバイスの対応
- Linuxでは32bitと64bitのときでIRQを割り当てるベクタが違う。
- 8259Aへの設定はI/Oポートを通じて行う
PIC 入力ピン ISA上のIRQ番号 ベクタ番号 デバイス 32bit 64bit マスター IR0 IRQ0 32 48 システムタイマー IR1 IRQ1 33 49 キーボード IR2 - - - スレーブへのカスケード接続 IR3 IRQ3? 35 50 COM2 IR4 IRQ4? 36 51 COM1 IR5 IRQ5? 37 52 LPT2 IR6 IRQ6? 38 53 FDDコントローラ IR7 IRQ7? 39 54 LPT1 スレーブ IR0 IRQ8 40 56 RTC IR1 IRQ2?/IRQ9? 41 57 空き IR2 IRQ10? 42 58 空き IR3 IRQ11? 43 59 空き IR4 IRQ12? 44 60 PS/2マウス IR5 IRQ13? 45 61 コプロセッサ IR6 IRQ14? 46 62 プライマリIDE IR7 IRQ14? 47 63 セカンダリIDE