
レガシープラグアンドプレイ[ 1 ](レガシーPnPとも略される) [ 2 ]という用語は、デバイスのオペレーティングシステム設定を目的とした一連の仕様とMicrosoft Windowsの機能を指し、一部のデバイスIDはUEFIフォーラムによって割り当てられている。[ 3 ]これらの規格は主にIBM PC標準バス(後に業界標準アーキテクチャ(ISA)と呼ばれる)を対象としていた。開発当時ISA経由で接続されていたRS-232やパラレルポートデバイスなどの一般的な外部バスや特殊バスについても関連仕様が定義されている。
Windowsの機能であるプラグアンドプレイとは、ネイティブのプラグアンドプレイデバイスとの接続、構成、管理をサポートするオペレーティングシステムの機能を指します。[ 4 ]元々は仕様と同じ機能セットの一部と考えられていましたが、この文脈におけるプラグアンドプレイは、主にWindowsドライバ開発に関連する責任とインターフェースを指します。[ 5 ]
プラグアンドプレイは、ユーザーの介入なしにデバイスを検出し、場合によってはI/Oポートやデバイスメモリマップなどのデバイスリソースの軽微な設定を可能にします。PnPは特定の標準規格であり、デバイスリソースのユーザーによる設定の必要性を軽減するハードウェア仕様全般を指す一般的な用語であるプラグアンドプレイとは混同しないでください。[ 6 ]
ACPI は、レガシー プラグ アンド プレイの後継です。
プラグアンドプレイ規格では、デバイスの設定はPnP BIOSによって処理され、オペレーティングシステムにリソース割り当ての詳細が提供されます。このプロセスは起動時に呼び出されます。コンピューターの電源を初めてオンにすると、互換性のあるデバイスが識別され、競合しないIOアドレス、割り込み要求番号、DMAチャネルが割り当てられます。
この用語は、MicrosoftがWindows 95製品に関連して採用しました。AmigaOS AutoconfigやMac OS NuBusシステムなど、他のオペレーティングシステムでは、既に(様々な名称で、あるいは無名で)同様の機能をサポートしていました。[ 7 ] Yggdrasil Linuxでさえ、Windows 95の少なくとも2年前には「プラグアンドプレイLinux」を宣伝していました。しかし、 Windowsが世界中で普及したことにより、プラグアンドプレイという用語は徐々に普及していきました。
通常、非PnPデバイスはコンピュータのBIOS設定で識別される必要があり、PnPシステムは非PnPデバイスが使用しているリソースを他のデバイスに割り当てないようにする必要があります。従来の非PnPデバイスとPnPシステム間の相互作用に問題が発生すると、PnPシステムが機能しなくなる可能性があり、この技術は歴史的に「プラグアンドプレイ」と呼ばれてきました。[ 2 ]
レガシープラグアンドプレイ仕様は、 MicrosoftとIntelによって定義され、レガシーハードウェアとBIOSへの変更を提案し、オペレーティングシステムに依存したデバイス検出をサポートしました。これらの役割は後にACPI標準[ 1 ]に引き継がれ、 ACPI標準では、電源管理と構成のサポートも、以前の「プラグアンドプレイBIOS」およびAPM仕様で要求されていたファームウェアではなく、オペレーティングシステムに移行しました。以下の標準は、 PCIやUSBなどのネイティブプラグアンドプレイ仕様とは対照的に、Microsoftがレガシープラグアンドプレイと呼ぶものを構成しています。
Windows VistaではACPI準拠のBIOSが必要であり、ISAPnPはデフォルトで無効になっています。[ 11 ]
プラグ アンド プレイを使用するには、次の 3 つの要件を満たす必要があります。
プラグアンドプレイ対応ハードウェアは通常、コンピュータソフトウェアが正しく識別できるように、何らかのIDコードも提供します。プラグアンドプレイIDには、3バイトのメーカーIDと2バイトの16進数(例:PNP0A08)の組み合わせ、または4バイトのメーカーIDと2バイトの16進数(例:MSFT0101)の組み合わせの2つの形式があります。[ 12 ]さらに、PnPデバイスにはクラスコードとサブシステムIDが含まれる場合があります。[ 13 ]
このIDコードシステムは、プラグアンドプレイが初めて導入された当時、PCで一般的に使用されていた初期の業界標準アーキテクチャ(ISA)ハードウェアには統合されていませんでした。ISAプラグアンドプレイは、PnPの初期の信頼性を著しく低下させる大きな問題を引き起こしました。初期の頃はI/OアドレスとIRQラインが誤って設定されることがよくあったため、「プラグアンドプレイ(Plug and Pray)」という揶揄的な言葉が生まれました。その後、 MCA、EISA、そして当時業界標準となりつつあった PCIなどのコンピュータバスにこの機能が統合されました。
最後に、コンピュータのオペレーティングシステムはこれらの変更に対応できる必要があります。通常、これはバスからの設定変更を通知する割り込みを探し、バスからその情報を読み取って何が起こったのかを特定することを意味します。古いバス設計では、これらの変更を特定するにはシステム全体の読み取りが必要になることが多く、多くのデバイスにとって時間のかかる作業でした。より現代的な設計では、この「探索」を軽減または排除するための何らかのシステムが採用されています。例えば、USBではこの目的のためにハブシステムが採用されています。
変更箇所が見つかると、OSはデバイス内の情報を調べて変更内容を特定します。そして、デバイスを動作させるために適切なデバイスドライバーをロードする必要があります。以前は、これはすべてかゼロかのどちらかでしたが、最近のオペレーティングシステムには、インターネット上で適切なドライバーを検索し、自動的にインストールする 機能が搭載されていることがよくあります。