コンピュータが外部機器と情報をやり取りするための重要なインターフェース、それが
入出力ポート(I/Oポート)です。この記事では、I/Oポートの基礎から、その歴史的な変遷、そして現代の
コンピュータシステムにおける役割までを分かりやすく解説します。
I/Oポートの基礎
I/Oポートは、
コンピュータ内部と外部機器を接続する端子のことで、デジタル信号の送受信を担います。 0と1のデジタル信号を入力したり出力したりすることで、LEDの点灯制御やスイッチからの入力取得など、様々な用途に使用されます。多くの場合、入力と出力を両方行える設計になっており、レジスタの設定で切り替えることができます。
初期のI/Oポートは、8本の端子で構成されるパラレルI/Oとして知られ、LEDやスイッチ、リレーなどの制御に用いられていました。代表的な例として、i8255 (PPI)、Z84C20 (Z80PIO)、MC6821などが挙げられます。これらのペリフェラルLSIは、現在ではチップセットや
マイクロコントローラに内蔵されることが一般的です。
マイクロコントローラでは、汎用
入出力ポート(GPIO)とも呼ばれ、プルアップ/プルダウン抵抗の設定や出力ドライバの強弱調整なども可能です。計測や制御分野では、デジタルI/O(DIO)と呼ばれることもあります。
外部接続コネクタ:様々な規格と進化
外部機器と接続するためのコネクタもI/Oポートの一種です。パーソナル
コンピュータでは、RS-232C
シリアルポート、
パラレルポート、USB、IEEE 1394(FireWire)、
PS/2コネクタ|PS_2コネクタ、VGA、DVIなどが広く用いられてきました。これらのコネクタは、それぞれ異なる規格とピン配置を持ち、接続する機器の種類によって適切なコネクタが選択されます。
I/Oカード:拡張性の歴史
かつては、
シリアルポートや
パラレルポートといった機能を拡張するためにI/Oカードが使用されていました。単機能のI/Oカードは、特定のインターフェースに対応するものでした。例えば、シリアルインターフェースカード、パラレルインターフェースカード、
フロッピーディスクコントローラカード、IDEハードディスクコントローラカードなどがあります。
マルチI/Oカードは、複数のインターフェース機能を1枚のカードに統合したものです。マザーボードに搭載するI/O機能が少ない時代には必須でした。VLバスが登場した時代には、ハードディスクアクセスのパフォーマンス向上を目指したスーパーI/Oカードも登場しました。
オンボード化:マザーボードへの統合
近年では、I/O機能がマザーボードに直接実装される(オンボード化)のが一般的です。CPUやバスの規格が変わるごとにI/O機能を設計し直す必要性を解消するために、PCIバスなどの統一規格が採用されました。これにより、マザーボードメーカーやPCメーカーは、標準化されたインターフェース部品を利用できるようになり、設計と製造が容易になりました。
レガシーデバイスの衰退とUSBの台頭
1990年代後半以降、
シリアルポートや
パラレルポートなどの従来のI/Oポートはレガシーデバイスとして扱われるようになり、USBに置き換えられてきました。現在では、キーボード、マウス、
プリンターなどはUSBで直接接続するのが一般的です。ただし、従来のインターフェースを持つ機器をUSBで接続するための変換アダプタも広く利用されています。
I/O空間:メモリ空間との関係
多くのCPUアーキテクチャでは、I/Oポートはメインメモリとは別に、I/O空間と呼ばれる専用のアドレス空間を持っています。x86アーキテクチャでは、I/O空間はメモリ空間よりも小さく、アクセスできる命令も制限されています。I/O空間のアドレスはI/OアドレスまたはI/Oポートアドレスと呼ばれます。
オペレーティングシステムは、保護機能を用いて、アプリケーションによるI/O空間へのアクセスを制御します。
一方、ARMやPowerPCなどのRISCアーキテクチャでは、I/O空間は存在せず、ペリフェラルのレジスタはメモリ空間に直接配置されます。これをメモリマップドI/Oと言います。PCIバスでは、I/O空間を持たないプロセッサでも、メモリ空間の一部をI/O空間として使用する事で対応しています。
まとめ
この記事では、
コンピュータの
入出力ポートについて、その歴史的な発展と、現代における役割を解説しました。I/Oポートは、
コンピュータと外部機器を接続するための重要なインターフェースであり、これからも様々な技術革新と共に進化していくでしょう。