特集
2004/05/18 21:30 更新

UNIX USER 2004年4月号「Linuxはハードウェアをどう認識するのか?」より転載:
Linuxハードウェア認識の基礎 (3/3)


コラム PCアーキテクチャのリソース

 PCアーキテクチャで入出力デバイスが要求するハードウェア資源(リソース)は、以下のようなものがあります。これらのリソースはPCの歴史的経緯から各デバイスに専用に割り当てて使用するもので、設定を間違えると、ハードウェアの競合が発生して、システムが立ち上がらなくなります。IRQはPCIバスでは共有できるようになりました。また、IO BASEは入出力を伴う一般的なデバイスには必要ですが、MEM、DMAは使用しないデバイスもあります。

IRQ

 PCの割り込みコントローラにはintel製8259A相当品が2個使用されています。8259Aは8ビットマイコンである8080用の割り込みコントローラ8059の改良版です。2個のコントローラは、いまでも割り込みコントローラが1個しかないPC/XTとの互換性を保つようにカスケード接続で使用されています。ISAバスでは、IRQと呼ぶ割り込み番号は、各デバイスに割り当てて複数のデバイスで同一番号共有できないため、ISAバスしかないシステムに多くの周辺機器を接続するためには、ユーザーが利用できる11個のIRQのやりくりを考える必要がありました(表A)。

 PCIバスは、INTAからINTDまでの4種類の割り込み番号を持ちますが、最初から割り込み番号を共有できるように設計されているので、割り込み番号が同じでも、やりくりをする必要はありません。ただし、PCIが利用するINTAからINTDまでの4種類の割り込みは、最終的に8259Aに由来するユーザーが利用できる11個のIRQに割り当てられるようになっています。

IO BASE

 x86系はポートIO方式のCPUのため、デバイスとのデータ入出力には、通常IOポートを使用します。入出力動作は、デバイスIO用に用意された専用のデータバスを使用して行います。デバイスによっては、データ入出力やレジスタ設定用に多くのIOポートアドレスを必要とするので、このデバイスが利用する基となる入出力アドレスをIO BASEまたは、単にBASEと呼びます。IO BASEからデバイスが利用する範囲のポートアドレスはシステムに接続している各デバイスの入出力用アドレスですから、重複は許されません。

MEM

 IO BASEはポートIOのアドレスを指定する番号ですが、それとは別にROM領域や、入出力の際にバッファとして使用するメモリ領域を割り当てる必要があるデバイスがありました。このような場合は、一般的にIBM PC/ATがアクセスできる1MB以下のメモリ空間に割り当てましたので、これらのメモリをデバイスごとに重ならないようにする必要がありました。BIOS設定で640KBから1MBの空間に予約領域を指定できるようにしたシステムがありますが、これはこのようなデバイスを利用できるようにする配慮です。

DMA

 PCでは、4チャンネルのDMA転送制御が可能なDMAコントローラである8237Aの相当品を2個搭載していました。これは、割り込みコントローラと同様にPC/XTからPC/ATになるときに増設されたもので、やはりカスケード接続されています。DMAはチャンネル0から3までがPC/XTと互換のある8ビット用で、5から7までが16ビット用として使用されます。このチャンネル番号も、利用するデバイスごとに専用に割り当てる必要がありました。最近のPCでは、PCIバスを持つシステムがほとんどで、デバイスのコントローラが直接転送を行うバスマスタ方式が主流ですので、いまやISAのDMAはほとんど利用されなくなってきています。

hyoA.jpg

表A 標準的PCのIRQの割り当て(クリックで拡大します)

UNIX USER 4月号表紙 UNIX USER 4月号

第1特集
Linuxはハードウェアをどう認識するのか?

第2特集 Apache2モジュールを極めろ
[特別企画]
・Services for UNIX 3.5日本語版によるWindowsとUNIXの連携
・サーバーデータの改ざん検知と復旧を行うTripwireの運用

前のページ | 1 2 3 |      

[UNIX USER]

Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.