Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

I/Oポート(アイオーポート)とは | 意味や読み方など丁寧でわかりやすい用語解説

I/Oポート(アイオーポート)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

入出力ポート (ニュウリョク ポート)

英語表記

I/O port (アイオーポート)

用語解説

I/Oポートは、Input/Output Portの略称であり、コンピュータの心臓部であるCPUやメインメモリと、キーボード、マウス、ディスプレイ、ストレージ、ネットワークカードといった外部の周辺機器との間でデータをやり取りするためのインターフェースである。コンピュータシステムは、内部の高速なデジタル回路と、多種多様な速度や特性を持つ外部デバイスとが連携して動作する。しかし、CPUがこれら全ての周辺機器の動作仕様を個別に理解し、直接制御するのは非常に複雑で非効率である。そこで、CPUと周辺機器の間に設けられた標準的な窓口がI/Oポートである。CPUは、このI/Oポートを通じて、接続されている周辺機器の状態を監視したり、動作を制御したり、データを送受信したりする。物理的な観点では、コンピュータの筐体についているUSBポートやHDMIポートなどを指す場合もあるが、システムエンジニアリングの文脈では、CPUがデバイスを制御するためにアクセスする論理的な接点を指すのが一般的である。この論理的なI/Oポートは、個々の周辺機器に割り当てられた固有の住所のようなものであり、CPUはこの住所を指定することで、特定のデバイスと通信を行うことができる。

CPUがI/Oポートを識別し、アクセスする方式には、主に二つの方法が存在する。一つはポートマップドI/O(Port-Mapped I/O, PMIO)と呼ばれる方式である。この方式では、メインメモリ用のアドレス空間とは独立した、I/O専用のアドレス空間が用意される。CPUは、このI/Oアドレス空間にアクセスするために、INやOUTといった専用の命令を使用する。x86アーキテクチャのコンピュータで古くから採用されている方式であり、メモリ空間とI/O空間が明確に分離されているため、設計が単純になるという利点がある。もう一つは、メモリマップドI/O(Memory-Mapped I/O, MMIO)である。これは、I/Oポートをメインメモリのアドレス空間の一部に割り当てる方式である。CPUから見ると、I/Oポートはメモリ上の一区画として扱われるため、メモリアクセスに用いる通常の命令(例えばMOV命令)でデータの読み書きが可能となる。専用のI/O命令が不要になるため、CPUの命令セットを簡潔にできるほか、メモリアクセスに関連する高度な機能(キャッシングなど)をI/Oアクセスにも応用できる可能性がある。現代の多くのコンピュータアーキテクチャ、特にRISC系のプロセッサでは、このMMIOが主流となっている。

I/Oポートは単なるデータの通り道ではなく、内部に複数のレジスタを持つことで、より高度なデバイス制御を実現している。これらのレジスタは、主にデータレジスタ、ステータスレジスタ、コントロールレジスタの三種類に大別される。データレジスタは、CPUと周辺機器との間で実際に送受信されるデータを一時的に保持するための場所である。例えば、CPUがキーボードからの入力文字を受け取る際には、キーボードコントローラ内のデータレジスタから文字データを読み出す。ステータスレジスタは、周辺機器の現在の状態を示す情報を格納する。例えば、プリンタが印刷可能か、ネットワークカードがデータ受信を完了したか、といった状態を示すフラグがこのレジスタに含まれる。CPUはステータスレジスタを読み出すことで、デバイスが次の操作を受け付けられる状態にあるかを確認できる。コントロールレジスタは、CPUが周辺機器の動作を制御するための設定値を書き込む場所である。デバイスの動作モードを設定したり、特定の機能を有効化または無効化したり、リセットをかけたりといった操作は、このレジスタへの書き込みによって行われる。

CPUがこれらのI/Oポートを介してデータ転送を行う具体的な手順にも、いくつかの方式がある。代表的なものに、ポーリング方式と割り込み方式がある。ポーリング方式では、CPUが定期的にステータスレジスタをチェックし、周辺機器の準備が整うのを待つ。例えば、CPUがプリンタにデータを送りたい場合、プリンタのステータスレジスタを繰り返し読み出し、「印刷準備完了」のフラグが立つまで待機し、フラグが立ったらデータレジスタにデータを書き込む。この方式は実装が単純だが、CPUが待機している間は他の処理を行えないため、システム全体の効率が低下する可能性がある。一方、割り込み方式では、CPUは周辺機器に処理を要求した後、すぐに別のタスクを実行する。周辺機器側は、自身の処理が完了し、データの送受信準備が整った時点で、CPUに対して割り込み信号を送信する。CPUはこの信号を受け取ると、実行中のタスクを一時中断し、割り込み処理ルーチンと呼ばれる専用のプログラムを実行して、周辺機器とのデータ転送を行う。これにより、CPUがデバイスの準備を待つ時間をなくし、システムの処理能力を最大限に活用できる。

これらのI/Oポートおよびレジスタ群は、実際にはI/Oコントローラ(またはデバイスコントローラ)と呼ばれる専用の集積回路内に実装されている。I/Oコントローラは、特定の種類の周辺機器(例えば、SATAコントローラはHDDやSSD、USBコントローラはUSBデバイス)を制御するための専門的な回路であり、CPUと物理デバイスとの間の複雑な電気信号の変換やプロトコル処理を担う。CPUは、このコントローラ内に存在するI/Oポートにアクセスすることで、デバイスの物理的な詳細を意識することなく、抽象化されたインターフェースを通じてデバイスを操作できる。このように、I/Oポートは、CPUと多種多様な周辺機器を結ぶ論理的な通信経路として機能し、その内部のレジスタとデータ転送メカニズムを通じて、コンピュータシステム全体の円滑な連携と効率的なデータ交換を実現する上で、極めて重要な役割を担っているのである。

関連コンテンツ