Intel 8259/8259A プログラマブル割り込みコントローラ:歴史、機能、そしてプログラミング上の考慮点
Intel 8259およびその改良版である8259Aは、プログラム可能な割り込みコントローラ(PIC)として、8080、8085、8086などの8ビットおよび16ビット
マイクロプロセッサの周辺機器としてIntelによって開発されました。8259は8080/8085向けに、8259Aは8086/8088を含むより幅広いプロセッサに対応するよう設計されました。現在では、多くのメーカーから互換チップが提供されています。本稿では、その歴史、機能、そしてプログラミングにおける考慮点について詳述します。
歴史
8259は1980年代初頭の初代IBM PCに採用され、その後のPC/XT、PC/ATにも搭載されました。初期のPCでは単体のチップとして実装されていましたが、現代のx86マザーボードではサウスブリッジ(ICH)やプラットフォームコントローラーハブ(PCH)に統合されています。対称型マルチプロセッサシステムにおいてもAPICと共存して使用されていました。
機能と特徴
8259は複数の割り込み要求を1つの割り込み出力に集約するマルチプレクサとして機能します。主な接続ピンには、8本の割り込み要求入力(IRQ0~IRQ7)、1本の割り込み出力(INTR)、割り込みACK(INTA)、そしてデータ通信ライン(D0-D7)があります。
カスケード接続機能により、マスターとなる8259に最大8個のスレーブ8259を接続し、合計64個のIRQを管理できます。マスター8259のIRQラインにスレーブ8259のINT出力を接続することで実現されます。
内部には、割り込みマスクレジスタ(IMR)、割り込み要求レジスタ(IRR)、サービス中レジスタ(ISR)の3つのレジスタを持ちます。IRRは未処理の割り込み要求、ISRは処理中の割り込み、IMRはマスクされた割り込みをそれぞれ保持します。
割り込み終了処理(EOI)には、指定EOI、非指定EOI、自動EOIの3つのモードがあり、ISRの処理状況を制御します。また、エッジトリガとレベルトリガの割り込みモード、優先度設定と優先度回転モードもサポートしています。
プログラミング上の考慮点
DOS/Windows環境
MS-DOSや
Microsoft Windowsにおいては、初代PCとの後方互換性を維持するために、いくつかの課題が存在します。特に、DOSデバイスドライバは非指定EOIを期待しているため、他のEOIモードの使用が制限されています。また、PC/AT以降のスレーブ8259の追加により、IRQラインの割り当てに複雑さが生じています。例えば、IRQ2はPC/ATではスレーブ8259への接続に使用されるため、元のIRQ2の機能を維持するためにIRQ9の割り込みハンドラがBIOSによって追加されています。
エッジ/レベルトリガモード
ISAバスはレベルトリガをサポートしていないため、8259はエッジトリガモードで動作する必要があります。しかし、後継バス(EISA、PCIなど)では、エッジ/レベルコントロールレジスタ(ELCR)によってIRQラインのトリガモードが個別に制御可能です。ELCRは通常、BIOSによって初期化されます。x86システムでは、ELCRはI/Oアドレス空間の0x4d0と0x4d1に配置されています。
スプリアス割り込み
ノイズなどの影響により、誤った割り込みが発生することがあります。これは、エッジトリガモードでの短いノイズパルスや、レベルトリガモードでのノイズによるINTRラインの誤作動などが原因です。スレーブコントローラのIRQラインの状態によってもスプリアス割り込みが発生する可能性があります。特に、IRQ7とIRQ15はスプリアス割り込みが発生しやすいラインとして知られています。PC-9800シリーズでは、IRQ7はカスケード用、IRQ15はアースに割り当ててスプリアス割り込みへの対策としています。
PC/XTとPC/AT
PC/XTは1個の8259コントローラのみを使用していましたが、PC/AT以降はマスターとスレーブの2個の8259を使用し、IRQ0~7をマスター、IRQ8~15をスレーブが担当します。それぞれのIRQラインには、キーボード、
シリアルポート、ハードディスクコントローラ、プリンタポートなど、様々なデバイスが接続されていました。IRQ割り当ては、デバイスとの歴史的な接続関係に基づいており、システム構成によって異なる場合があります。
まとめ
Intel 8259/8259Aは、PCの歴史において重要な役割を果たした割り込みコントローラです。その機能、プログラミング上の考慮点、そして後方互換性への影響を理解することは、特にレガシーシステムの開発や保守において重要です。現代のシステムでは、より高度な割り込みコントローラが使用されていますが、8259の仕組みを知ることは、コンピュータアーキテクチャの理解を深める上で役立ちます。