8086のような8bitや16bitのマイクロプロセッサの周辺LSIとして、同社により設計・開発された。8088にも対応した。今日では多くのメーカーから幅広く互換チップが提供されている。8259はマルチプレクサ、つまり一つのデバイスに割り込みをかけるため、複数の割り込み入力を一つの割り込み出力に束ねるように振舞う。外部リンク歴史[編集]8259は1980年に初代PCに採用され、1983年に開発されたPC/XTでも引き続き採用された。2番目の8259はPC/ATの開発の際に追加された。8259は対称型マルチプロセッサPCでも採用されたので、APICと共存している。8259は元々単体のチップであったが、いまや最近のx86マザーボードではサウスブリッジ(ICH)やプラットフォームコントローラーハブ(PCH)の一部となっている。特徴[編集]8259での主要な接続ピンは以下のようなものである。8本の割り込み要求入力(IRQ0~IRQ7)、1本の割り込み出力(INTR)、割り込みACK(INTA)、割り込みレベルないし割り込みベクタオフセット用通信ライン(D0-D7)である。CAS0からCAS2を使って8259同士をカスケード接続することができる。マスターとなる8259に8個までの8259をスレーブ接続できるので、全部で64個のIRQを提供できる。マスターの8259のIRQにスレーブの8259のINTをカスケード接続する。Register(ISR)がある。IRRはACKを未処理の現在の割り込みマスクを保持し、ISRはEOIを未処理の割り込みマスクを保持し、IMRはACKを送信してはならない割り込みのマスクを保持する。Interrupt(EOI)は指定EOI、非指定EOI、自動EOIをサポートしている。指定EOIはISRのACKを返すIRQレベルを指定する。非指定EOIはISRのIRQレベルをリセットする。自動EOIは割り込みにACKが返ってきた後、すぐにISRのIRQレベルをリセットする。エッジおよびレベル割り込みトリガモードをサポートしている。優先度設定および優先度回転モードもサポートしている。Windowsで8259を使う際には、後方互換性、つまり1981年に採用された初代PCと互換性を残しつつ拡張してきたため、多くの面倒な問題が持ち込まれる。最初の問題は2番目の問題の根っこになっている。DOSのデバイスドライバは8259に対してデバイスの処理を終了したときに非指定EOIを送ることを期待されている。DOSでは8259の他のEOIモードは使用を禁止されている。マスターの8259からスレーブの8259に対して再接続されている複数のデバイス割り込みの間には違いはない。2番目の問題はPC/ATでスレーブの8259が採用されてからIRQ2からIRQ9までの扱いについてである。スレーブの8259のINT出力はマスターのIR2につながっている。ISAバスのIRQ2は元々このIR2につながっていたが、スレーブのIR1に再接続されている。このように古いIRQ2は今やCPUのIRQ9割り込みを発生させる。IRQ2を使用するように設定された装置との後方互換性を維持するために、IRQ9の割り込みハンドラとして、IRQ2の割り込みハンドラを呼び出すものがBIOSによってインストールされる。エッジ/レベルトリガモード[編集]ISAバスはレベルトリガ割り込みをサポートしていない。レベルトリガモードはISAデバイスに接続された割り込みを使うことができないかもしれない。これはPC/XT、PC/ATそしてMCAシステムでは8259は必ずエッジトリガモードに設定しなければならないことを意味する。新しいEISA、PCI、その他後継のシステムでは、エッジ/レベルコントロールレジスタ(ELCRs)がIRQラインを制御し、ISAバスのあるようなシステムに対して、8259のモードとは無関係に効果的に制御を行う。制御を行うためにELCRはBIOSによってシステム起動時に設定される。x86のI/Oアドレス空間のELCRは0x4d0と0x4d1に配置されている。そのレジスタは8bit幅であって8259から出ているIRQとそれぞれのビットが一致している。あるビットをセットするとそのIRQはレベルトリガモードになり、リセットするとエッジトリガモードになる。スプリアス割り込み[編集]8259はいろいろな条件に対して反応できるようにスプリアス割り込みを発生する。最初、IRQはACKを返す前にLからHに変位する。これはひょっとしてIRQラインにノイズが入ったせいかもしれない。エッジトリガモードでは、このノイズは100nsの間Lの状態に保持されなければならない。ノイズが小さくなれば、プルアップ抵抗がIRQラインをHに押し上げ、誤った割り込みが発生したことになる。レベルトリガモードでは、ノイズはシステムのINTRラインでH信号を引き起こしているかもしれない。システムがACK要求を投げると、8259はどの割り込みが発生したかを返すことができず、例えばIRQ7を送ってしまう。この場合はIRQ7のスプリアス割り込みが発生する。2つ目は、スレーブのIRQラインが割り込みACKの立ち下がりエッジでアクティブになっていない時、マスターの8259のIRQ2がアクティブHになることがある。この場合はIRQ15のスプリアス割り込みが発生するが、非常にまれである。PC/XTとPC/AT[編集]PC/XTのISAシステムは8259コントローラを1個だけ持っていたが、一方PC/AT及びその後のシステムはマスター、スレーブと2つの8259コントローラを持っていた。IRQ15はスレーブの8259の割り込みラインである。8259のピンの実際の名前はIR0からIR7である。IRQ0からIRQ15という名前は、8259に歴史的に接続されていたISAバスのラインによるものである。PC/XTでは割り当てなし。PC/ATではスレーブの8259のINTにカスケード接続されている。PC/XTではハードディスクコントローラ。PC/ATではLPT2。ハードディスクコントローラ2最初、IRQ7はサウンドカード用によく使われていたが、後にIRQ7はプリンタポート(LPT1)に使われるようになってから、IRQ5が使われるようになった。シリアルポートは他のデバイスのためにIRQを開放するため、しばしば無効にされた。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。