I/Oポート 【I/O port】
概要
I/Oポート(I/O port)とは、コンピュータ内部でCPUと周辺機器が通信を行うための窓口となる端子や回路のこと。シリアルポートなどの接続端子ごとに用意され、CPUから接続先の機器やICチップを制御し、データの送受信を行なうことができる。各ポートにはそれぞれ固有のI/Oポートアドレスが割り当てられ、CPUは制御したいポートのアドレスを指定してデータの読み書きを行うことで命令の送信や受信データの受け取りなどを行なうことができる。パソコンのように多数のI/Oが内蔵された機器の場合は、RS-232C、キーボード、USB、IDE、VGA、PCIなど機器や接続端子ごとにI/Oポートが用意される。
マイコンシステムへの組み込みソフトウェアのように低レベルの制御を行うソフトウェアでは直接I/Oポートをの操作を行なうこともあるが、現代のパソコンのようにハードウェア制御をOSが独占する構造のシステムでは各ソフトウェアが直にI/Oポートにアクセスすることは禁じられており、OSが提供するシステムコールなどの機能を利用する必要がある。
I/Oポートアドレス (I/O port address)
コンピュータ内部でCPUと周辺機器が通信を行う窓口であるI/Oポートの所在を表す固有の番号。装置や接続端子ごとに数バイトから数千バイトの連続した値が割り当てられ、制御やデータの送受信に用いられる。
アドレスを指定して読み書きを行う仕組みはメインメモリ(RAM)に似ているが、通常はメモリ空間とは別のアドレス空間(I/O空間)が用意され、これを用いて指定を行う。メモリ空間の一部にI/O空間を割り当てる方式もあり、メモリマップドI/O(memory mapped I/O)という。
標準的なパソコン製品に多いPC/AT互換機では通常0000h~FFFFhの64KBのアドレス空間が用いられるが、0000h~00FFhの空間はマザーボード上のチップセットなどのためにシステム側が予約しており、周辺機器はこれ以外のアドレスを利用することになる。
複数の機器が同じアドレスを設定してしまうと正常に動作しないため、かつては拡張カードを接続する際に既存の機器と重複しないよう利用者がI/Oポートアドレスを入力することもあった。現在ではプラグアンドプレイのような自動化の仕組みが整備され、利用者が意識することはほとんどなくなった。