


コンピュータにおいて、パラレルポートとは、初期のコンピュータ(パーソナルコンピュータを含む)に搭載されていた周辺機器接続用のインターフェースの一種です。その名称はデータの送信方法に由来しており、パラレルポートは複数のデータビットを一度に送信します(パラレル通信)。一方、シリアル通信では、データビットは一度に1つずつ送信されます。そのため、パラレルポートはケーブルとポートコネクタに複数のデータラインを必要とし、双方向に1本のデータラインしか必要としない現代のシリアルポートよりも大きくなる傾向があります。
パラレルポートには多くの種類がありますが、この用語は1970年代から2000年代にかけてほとんどのパーソナルコンピュータに搭載されていたプリンタポートまたはセントロニクスポートと最も密接に関連付けられるようになりました。長年にわたり業界の事実上の標準として機能し、 1990年代後半にIEEE 1284として標準化され、双方向バージョンの拡張パラレルポート(EPP)と拡張機能ポート(ECP)が定義されました。今日では、USBデバイスの普及と、イーサネットやWi-Fi接続プリンタを使用したネットワーク印刷の登場により、新しいコンピュータではパラレルポートインターフェースはほとんど見られなくなりました。
パラレルポートインターフェースは、元々は IBM PC互換機ではパラレルプリンタアダプタとして知られていました。これは主に、IBMの8ビット拡張ASCII文字セットを使用してテキストを印刷するプリンタを操作するために設計されましたが、他の周辺機器を接続するためにも使用できました。グラフィックプリンタをはじめとする多くのデバイスが、このシステムと通信するように設計されています。
アン・ワン、ロバート・ハワード、プレンティス・ロビンソンは、特殊コンピュータ端末を製造していたワン・ラボラトリーズの子会社であるセントロニクスで、低コストのプリンタの開発に着手した。このプリンタはドットマトリックス印刷の原理を採用しており、プリントヘッドはソレノイドに接続された7本の金属ピンの縦一列で構成されていた。ソレノイドに電力が供給されると、ピンが押し出されて紙に当たり、ドットが残る。完全な文字グリフを作成するには、プリントヘッドの特定のピンに電力が供給されて1つの縦のパターンが作成され、次にプリントヘッドがわずかに右に移動し、このプロセスが繰り返される。彼らの最初の設計では、典型的なグリフは高さ7、幅5のマトリックスとして印刷されたが、「A」モデルでは9本のピンを持つプリントヘッドが使用され、9×7ドットのグリフが形成された。[ 2 ]
これにより、 ASCIIデータをプリンタに送信するという問題が残りました。シリアルポートは最小限のピンとワイヤでこれを実現しますが、デバイスはデータがビット単位で到着するたびにデータをバッファリングし、それをマルチビット値に戻す必要があります。パラレルポートではこれがより簡単になります。ASCII値全体が完全な形でピンに表示されます。8つのデータピンに加えて、システムにはさまざまな制御ピンと電気的グランドも必要でした。Wangはたまたま、初期の電卓の1つに元々使用されていたAmphenol 36ピンマイクロリボンコネクタの余剰在庫を20,000個持っていました。インターフェースにはこれらのピンのうち21個しか必要なく、残りは接地されているか、接続されていませんでした。このコネクタはセントロニクスと非常に密接に関連しているため、現在では一般的に「セントロニクスコネクタ」[ 3 ]
このコネクタを備えたCentronics Model 101プリンタは 1970 年に発売されました。[ 3 ]ホストは 8 つのデータピンのうち 7 つを使用して ASCII 文字をプリンタに送信し、+5V にプルアップして 1 を表します。データが準備できると、ホストはSTROBEピンを 0V にプルダウンします。プリンタはBUSYラインをプルアップして文字を印刷し、BUSY を再びローに戻すことで応答します。ホストはその後、別の文字を送信できます。データ内の制御文字は、やなどの他のアクションを引き起こしますCR。ホストは、 AUTOFEEDEOFラインをプルアップしてその状態を維持することで、プリンタに新しい行を自動的に開始させることもできます。ホストは、特に用紙送りなどの可変時間操作がある場合、プリンタにデータが速く送られすぎないように BUSY ラインを注意深く監視する必要がありました。[ 2 ] [ 4 ]
プリンタ側のインターフェースはすぐに業界の事実上の標準となったが、メーカーはシステム側でさまざまなコネクタを使用していたため、さまざまなケーブルが必要となった。たとえば、NCRは接続の両端に36ピンのマイクロリボンコネクタを使用し、初期のVAXシステムはDC-37コネクタを使用し、テキサス・インスツルメンツは25ピンのカードエッジコネクタを使用し、データ・ゼネラルは50ピンのマイクロリボンコネクタを使用した。IBMがIBM PCにパラレルインターフェースを実装したとき、インターフェースのPC側にDB-25Fコネクタを使用し、片側にDB25M、もう片側に36ピンのマイクロリボンコネクタを備えた、現在ではおなじみのパラレルケーブルが作成された。
理論上、セントロニクス ポートは毎秒 75,000 文字もの高速でデータを転送することができました。これは、毎秒平均約 160 文字のプリンタよりもはるかに高速で、つまりポートはほとんどの時間をアイドル状態で過ごしていました。パフォーマンスは、ホストがプリンタの BUSY 信号にどれだけ迅速に応答できるかによって決まりました。パフォーマンスを向上させるために、プリンタはバッファを組み込み始め、ホストがデータをバーストでより高速に送信できるようにしました。これにより、ホストから次の文字が到着するのを待つレイテンシによる遅延が削減 (または解消) されただけでなく、ホストはパフォーマンスの低下を招くことなく他の操作を実行できるようになりました。パフォーマンスは、バッファを使用して複数の行を保存し、両方向に印刷することでさらに向上し、プリント ヘッドがページの左側に戻る間の遅延がなくなりました。このような変更により、102 や 308 などのセントロニクス モデルの場合のように、それ以外は変更されていないプリンタのパフォーマンスが 2 倍以上になりました。[ 4 ]
IBMは1981年にIBMパーソナルコンピュータを発売し、セントロニクスインターフェースのバリエーションを搭載しました。IBM PCで使用できるのは、 IBMロゴのプリンタ(エプソンからリブランドされたもの)のみでした。 [ 5 ] IBMは、PC側にDB25Fコネクタ、プリンタ側に36ピンのセントロニクスコネクタ を備えたパラレルケーブルを標準化しました。ベンダーはすぐに、標準のセントロニクスとIBMの実装の両方と互換性のあるプリンタを発売しました。
1981年に発売されたIBM PC用の初代IBMパラレルプリンタアダプタは、8行のデータ出力と4行のデータ入力という限定的な双方向性をサポートするように設計されていました。これにより、プリンタへの出力だけでなく、他の用途にもポートを使用できるようになりました。これは、ケーブルの両端にあるデバイスからデータラインに書き込みができるようにすることで実現され、ホスト側のポートが双方向である必要がありました。しかし、この機能はほとんど使われず、後のハードウェア改訂版では削除されました。数年後の1987年、IBMはIBM PS/2シリーズで双方向インターフェースを再導入し、プリンタポートが双方向であることを想定していないアプリケーションとの互換性のために、有効または無効にできるようにしました。
プリンタ市場が拡大するにつれて、新しいタイプの印刷メカニズムが登場しました。これらは多くの場合、既存のポートの比較的少ないステータス ピンでは表現できない新しい機能やエラー状態をサポートしていました。IBM のソリューションはこれをサポートできましたが、実装は容易ではなく、当時サポートされていませんでした。これが、1993 年 4 月にHPがLaserJet 4Siに導入した Bi-Tronics システムにつながりました。 [ 6 ]これは、ERROR、SELECT、PE、BUSY の 4 つの既存のステータス ピンを使用してニブルを表し、2 つの転送を使用して 8 ビットの値を送信します。現在ニブル モードとして知られる Bi-Tronics モードは、ホストが SELECT ラインをハイにすることで示され、ホストが AUTOFEED をローに切り替えたときにデータが転送されました。ハンドシェイク プロトコルのその他の変更によりパフォーマンスが向上し、プリンタに対して 400,000 cps、ホストに対して約 50,000 cps に達しました。[ 7 ] Bi-Tronicsシステムの大きな利点は、ホスト上で完全にソフトウェアで制御でき、それ以外は変更されていないハードウェアを使用していることです。ホストへのデータ転送に使用されるすべてのピンは、すでにプリンタとホスト間のラインでした。
スキャナや複合機プリンタなどの新しいデバイスの導入により、Bi-Tronics や IBM スタイルのバックチャネルでは処理できないほど高いパフォーマンスが求められるようになりました。これらの目的のために、他の 2 つの規格がより普及しています。Enhanced Parallel Port (EPP) は、元々Zenith Electronicsによって定義されたもので、概念的には IBM のバイト モードに似ていますが、ハンドシェイクの詳細を変更して最大 2 MB/s を実現しています。[ 8 ] Extended Capability Port (ECP) は、基本的に同じ物理的な筐体にまったく新しいポートが搭載されており、ISAに基づく直接メモリ アクセスとランレングス エンコーディングによるデータ圧縮機能も追加されています。これは、ファックスや白黒スキャン画像などの単純な画像を転送する場合に特に便利です。ECP は、双方向で最大 2.5 MB/s (20 Mbps) のパフォーマンスを提供します。[ 9 ]
これらの機能強化はすべて、IEEE 1284規格の一部としてまとめられています。1994 年の最初のリリースには、オリジナルの Centronics モード (「互換モード」)、ニブル モードとバイト モード、および既に広く使用されていたハンドシェイクの変更が含まれていました。オリジナルの Centronics 実装では、データの各行の変更ごとに BUSY リードをトグルする必要がありました (行ごとのビジー) が、IEEE 1284 では、受信した文字ごとに BUSY をトグルする必要がありました (文字ごとのビジー)。これにより、BUSY トグルの回数と、それに伴う両側での割り込みが削減されます。1997 年の更新では、プリンタの状態コードが標準化されました。2000 年に、EPP モードと ECP モードが標準に取り込まれ、いくつかのコネクタとケーブルのスタイル、および1 つのポートから最大 8 台のデバイスをデイジーチェーン接続する方法も標準に取り込まれました。[ 9 ]
ホストシステムやプリントサーバーによっては、比較的低電圧出力のストロボ信号や高速トグル信号を使用する場合があります。これらの問題のいずれかが発生すると、印刷されない、断続的に印刷される、文字が欠落する、文字が重複して印刷される、または文字化けが発生するなどの問題が生じる可能性があります。プリンターの機種によっては、文字単位でビジー状態を設定するスイッチや設定を備えているものもあれば、ハンドシェイクアダプタが必要なものもあります。
Dataproducts は、プリンタ用のパラレル インターフェースの非常に異なる実装を導入しました。ホスト側ではDC-37コネクタ、プリンタ側では 50 ピン コネクタ( DD-50(誤って「DB50」と呼ばれることもある)またはブロック型の M-50 コネクタのいずれか)を使用しました。M-50 は Winchester とも呼ばれていました。[ 10 ] [ 11 ] Dataproducts のパラレルは、最大50 フィート (15 m) の接続用のショート ライン バージョンと、差動信号を使用して最大500 フィート (150 m)の接続用のロング ライン バージョンがありました。Dataproducts インターフェースは、1990 年代まで多くのメインフレーム システムで見られ、多くのプリンタ メーカーが Dataproducts インターフェースをオプションとして提供していました。
最終的に、パラレルポートで動作するように設計されたデバイスは多種多様になった。ほとんどのデバイスは単方向(一方向)デバイスで、PCから送信された情報にのみ応答するように設計されていた。しかし、Zipドライブなどの一部のデバイスは双方向モードで動作できた。プリンターも最終的に双方向システムを採用し、さまざまなステータスレポート情報を送信できるようになった。

USBが登場する以前は、パラレル インターフェースはプリンタ以外のさまざまな周辺機器にアクセスするために使用されていました。パラレル ポートの初期の用途の 1 つは、ソフトウェアのコピー プロテクションの形式としてアプリケーション ソフトウェアに付属するハードウェア キーとして使用されるドングルでした。その他の用途には、 CDリーダーやライターなどの光ディスク ドライブ、 Zip ドライブ、スキャナ、テープ ドライブ、[ 12 ]外付けモデム、ゲームパッド、ジョイスティックなどがありました。初期のポータブルMP3 プレーヤーの中には、デバイスに曲を転送するためにパラレル ポート接続を必要とするものもありました。[ 13 ] SCSIデバイスをパラレル経由で動作させるためのアダプタが利用可能でした。EPROMプログラマやハードウェア コントローラなどの他のデバイスもパラレル ポート経由で接続できました。
1980年代から1990年代にかけてのほとんどのPC互換システムには1~3個のポートがあり、通信インターフェースは次のように定義されていました。
0x3BC にプリンタ ポートが存在しない場合、行の 2 番目のポート (0x378) が論理パラレル ポート 1 になり、0x278 が BIOS の論理パラレル ポート 2 になります。プリンタ ポートは、独自の IO アドレスを持っているにもかかわらず、割り込みを共有するようにジャンパー接続されることがあります (つまり、割り込み駆動で一度に使用できるのは 1 つだけです)。場合によっては、BIOS は 4 番目のプリンタ ポートもサポートしますが、そのベース アドレスはベンダーによって大きく異なります。BIOSデータ領域(BDA) の 4 番目の論理プリンタ ポート用に予約されたエントリは、PS/2 マシンでは他の用途と共有され、S3 互換グラフィック カードと共有されるため、通常はほとんどの環境で特別なドライバが必要です。DR-DOS 7.02 では、 LPT1、LPT2、LPT3 (およびオプションでLPT4 ) CONFIG.SYSディレクティブを使用して BIOS ポートの割り当てを変更および上書きできます。
DOSベースのシステムでは、BIOSによって検出された論理パラレルポートが、 LPT1、 LPT2、LPT3(それぞれ論理パラレルポート1、2、3に対応)などのデバイス名で利用可能になります。これらの名前は、Line Print Terminal、Local Print Terminal (いずれもLPTと略される)、Line Printerといった用語に由来しています。同様の命名規則は、 ITS、DECシステム、 CP/M、および86-DOS(LST)でも使用されていました。
DOSでは、パラレルプリンタはコマンドラインから直接アクセスできました。たとえば、コマンド " " はAUTOEXEC.BATファイルの内容をプリンタポートにリダイレクトします。PRNデバイスは LPT1 のエイリアスとしても使用できました。一部のオペレーティングシステム (Multiuser DOS など)では、さまざまな方法でこの固定割り当てを変更できます。一部の DOS バージョンでは、MODE によって提供される常駐ドライバ拡張機能を使用するか、ユーザーがCONFIG.SYS PRN =n ディレクティブ (DR-DOS 7.02 以降の場合) を介して内部的にマッピングを変更できます。DR -DOS 7.02 では、基盤となる BIOS がサポートしている場合、LPT4のオプションの組み込みサポートも提供されます。TYPE C:\AUTOEXEC.BAT > LPT1:
PRN、CON、AUX、その他いくつかの名前は、DOS および Windows において、Windows XP以降であっても無効なファイル名およびディレクトリ名です。この無効なファイル名およびディレクトリ名のセットは、 Windows 95および98にも影響します。これらのバージョンには、パス名にMS-DOSデバイスを使用する脆弱性があり、ユーザーが Windows エクスプローラーのアドレス バーまたは「ファイル名を指定して実行」コマンドで「C:\CON\CON」、「C:\PRN\PRN」、「C:\AUX\AUX」と入力すると、コンピューターがクラッシュします。マイクロソフトはその後、この問題を修正するパッチをリリースしましたが、Windows 95 および 98 の新規インストールではこの修正が適用されないため、この問題は依然として発生します。
PRINT同じ効果を得るための特別な「 」コマンドも存在しました。Microsoft Windowsでは、多くの場合、ポートをこのように参照しますが、これはかなり目立たない形で表示されることが多いです。
SCO UNIXおよびLinuxでは、最初のパラレル ポートはファイルシステムを介して として利用可能です。Linux IDE デバイスはparide/dev/lp0 (パラレル ポート IDE) ドライバを使用できます。[ 14 ]

消費者にとって、プリンターやその他の機器との接続には、パラレルプリンターポートに代わってUSBやコンピューターネットワークが使われるようになった。
パーソナルコンピュータやノートパソコンの多くのメーカーは、パラレルをレガシーポートとみなしており、パラレルインターフェースを搭載しなくなりました。小型のマシンでは、大型のパラレルポートコネクタを搭載するスペースが少なくなっています。パラレル専用プリンタをUSB専用システムで動作させることができるUSB-パラレルアダプタが利用可能です。パラレルポートを提供するPCI(およびPCI Express)カードもあります。ネットワーク経由でパラレルポートへのインターフェースを提供するプリントサーバーもあります。USB-EPPチップを使用すると、パラレルポートのない最新のコンピュータでも、プリンタ以外のデバイスを動作させ続けることができます。[ 16 ]
電子工作愛好家にとって、パラレルポートは依然として外部回路基板に接続する最も簡単な方法であることが多い。他の一般的なレガシーポート(シリアルポート)よりも高速で、シリアル-パラレル変換器が不要であり、USBターゲットインターフェースよりもはるかに少ないインターフェースロジックとソフトウェアで済む。しかし、Windows 95/98以降のMicrosoftオペレーティングシステムでは、追加のソフトウェア(カーネル拡張機能)なしでは、ユーザープログラムがLPTに直接書き込みまたは読み取ることができない。[ 17 ]
CNCフライス盤は、特にLinuxCNC OSを使用している場合、パラレルポートを使用して機械のモーターやアタッチメントを直接制御することがよくあります。
従来、IBM PCシステムでは、最初の3つのパラレルポートは、以下の表の構成に従って割り当てられていました(3つのプリンタポートがすべて存在する場合)。
未使用のスロットがある場合、他のポートのアドレスが上に移動されます。(たとえば、0x3BC のポートが存在しない場合、0x378 のポートが最初の論理パラレルポートになります。)[ 18 ]ベース アドレス 0x3BC は通常、MDAおよびHerculesディスプレイ アダプタのプリンタ ポートでサポートされていますが、メインボード チップセットまたはアドオン カードによって提供されるプリンタ ポートでは、このベース アドレスに設定できることはほとんどありません。したがって、モノクロ ディスプレイ アダプタがない場合、デフォルトは依然として 0x3BC ですが(BIOS がこのアドレスのプリンタ ポートを検出した場合、0x3BC が選択されます)、現在では最初の論理パラレル ポート(したがって対応する LPT1 DOS デバイス ドライバ)の一般的な割り当ては 0x378 です。IRQ ラインも通常ハードウェアで設定可能です。同じ割り込みを複数のプリンタ ポートに割り当てることは避けるべきであり、通常、対応するポートの 1 つがポーリング モードのみで動作することになります。スロットに割り当てられたポートアドレスは、BIOSデータ領域(BDA)の0000h:0408hを読み取ることで確認できます。
標準パラレルポート(SPP)のビットとピンのマッピング:
~ は、ハードウェアによるビットの反転を示します。
Windows NTカーネルを使用していないバージョンのWindows(およびDOSやその他のオペレーティングシステム)では、プログラムは単純なoutportb()およびinportb()サブルーチンコマンドを使用してパラレルポートにアクセスできました。Windows NTやUnix(NetBSD、FreeBSD、Solaris、386BSDなど)などのオペレーティングシステムでは、マイクロプロセッサは別のセキュリティリングで動作し、必要なドライバを使用しない限りパラレルポートへのアクセスは禁止されています。これにより、セキュリティとデバイス競合の仲裁が向上します。Linuxでは、プロセスがroot権限で実行され、ioperm()コマンドを使用してベースアドレスへのアクセスが許可されている場合、inb()およびoutb()を使用できます。あるいは、ppdevは共有アクセスを許可し、適切な権限が設定されていればユーザー空間から使用できます。
並列ポートアクセス用のクロスプラットフォームライブラリであるlibieee1284は、多くのLinuxディストリビューションで利用可能であり、システムの並列ポートへの抽象インターフェースを提供します。アクセスは、オープン→要求→解放→クローズという順序で処理され、ユーザー空間での同時アクセスを可能にします。
古いパラレルプリンタポートは、8ビットのデータバスと、制御出力用の4つのピン(ストローブ、ラインフィード、初期化、選択入力)、および制御入力用の5つのピン(ACK、ビジー、選択、エラー、用紙出力)を備えていました。データ転送速度は150 kB/sです。[ 1 ]パラレルポートの速度は300 KB/sになることもあります。[ 19 ]
新しいEPP(Enhanced Parallel Ports)は8ビットのデータバスを持ち、通常のパラレルプリンタポートと同じ制御ピンを備えています。新しいポートは最大2MB/秒の速度に達します。[ 20 ]
パラレルポートコネクタのピン配置は以下のとおりです。

反転した線は論理ローで真となる。反転していない線は論理ハイで真となる。
最新のコンピュータでは、DB25コネクタの25番ピンがグランドに接続されていない場合があります。
ハードウェアICチップ:
一部のIDEデバイスはパラレルポートIDEアダプタを使用します。PARIDEオプションはそれを指します。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)