次のページ 前のページ 目次へ

4. Plug and Play プラグアンドプレイとは

Plug and Play 略して PnP は人の手を何ら煩わすことなく、ハードウェアを 挿す (Plug) だけで、使用 (Play) できるようにする仕組みのことです。 PnP を実現するには、広い分野に渡る規格化、標準化が必要です。

4.1 PnP の実現条件

PnP (挿せば使える)を実現するためには、幾つかの条件を規定、規格化する 必要があります。その条件を下記に示します。 下記の項目で使用している記号について説明します。

HD

ハードウェアで対応

HD/OS

ハードウェア または OS で対応

HD+OS

ハードウェアと OS が協調して対応

OS

OS で対応


対応するのに必要なもの 条件 説明
HD 機械的に接続できること 機械的な形状や、ピンの数、オスメスの区別等を規定しないと、挿す (Plug) ことができません。
HD 電気的に接続できること 機械的に挿せても、電気的に接続できなければなりません。オプションとか、ベンダデファイン(製造元が自由に定義できる部分)が含まれていても、いけません。さらに、信号電位、タイミング、ハードウェア上のプロトコルも規定する必要があります。
HD/OS 接続の有無が判別できること 機械的な機構、電気的な方法、ソフトウェアによる方法等を使用し、接続の有無が判別できなければなりません。
HD/OS 分離(isolate)できること バス(Bus)接続ができる機器の場合、個々の機器が分離して、識別できる必要があります。
HD+OS 何が接続されているか識別できること 何が接続されているか識別できることが、必要です。多くの PnP の場合、複数の識別子(種類、製造元、機器、改訂等)を使って、識別をしています。識別子を識別する方法や、識別子の意味が規定されている必要があります。別の機器と混同しないように、これらの識別子の幾つかは、その PnP の規格団体等で一意に管理されています。
HD+OS 必要な情報について規定されていること 必要な情報とは、接続されている機種や PnP の規格に依存します。例えば、PCIの場合、 I/O ポートアドレスや、IRQ 等です。ディスプレイ・モニタ(DDC)の場合、解像度等です。必要な情報の取り出す方法(プロトコル)や、情報の内容が規定されている必要があります。
OS リソースの割り当てができること 接続される機器にリソース(I/O ポートアドレスや IRQ 等)の割り当てが必要な場合、現在のリソースと衝突しないように、割り当てることが必要です。
OS デバイスドライバの割り当てができること 接続された、機器に対応したデバイスドライバを自動的に見つけ出せることが、必要です。人手により、設定する場合、ハードウェアの情報を、人にとって、わかりやすい方法で、提示する必要があります。デバイスドライバと機器のリソースが一致するように割り当てることと、デバイスドライバが割り当てられたリソースで動作できなければ、なりません。

4.2 PnP の実現方法

PnP の実現条件を実際にどのように実現しているか、 概略を説明します。

実現に必要なもの 条件 説明
HD 機械的に接続できること・電気的に接続できること これらを実現するには、PnP 対応ハードウェアの供給元に規格を守ってもらうしか、ありません。より効果的に、PnP に対応させるため、PnP 規格団体を設立する方法があります。この団体は、シンボルやマークの制定、ハードウェアの識別子の管理、PnP 規格の情報(Know-How)の提供等を行います。ハードウェアの供給元はこの団体に加盟し、PnP 規格を準拠したものに対して、シンボルの使用許可や、識別子の割り当てを得ます。一時期の USB のように、規格そのものを団体の加盟者以外には、秘密にすることもあります(顰蹙を買い、現在 USB 規格は公開されています)。尚、シンボルやマークは著作権の保護下に置くことで、勝手に使用できないようにできます。
HD/OS 接続の有無が判別できること・分離(isolate)できること これらは Bus 接続される ハードウェアに関連する項目です。当初から PnP を目指した Bus 規格では、仕様に織り込み済みですので問題はありません。後から、PnP 対応にした ISAPnP では、大きな問題があります。
HD+OS 何が接続されているか識別できること・必要な情報について規定されていること これらは、PnP 対応ハードウェアに自己紹介させる、仕組みを用意することで、実現します。実際には ハードウェアにコンフィグレーションレジスタ群を使用します。このレジスタ群に、ハードウェアの ID(識別子)や、リソースの情報等を納めます。
OS リソースの割り当てができること・デバイスドライバの割り当てができること これらは、OS がリソースとデバイスドライバを管理して、実現します。割り当てに必要なリソースの情報はコンフィグレーションレジスタ群から読み取ります。OS は現在管理しているリソース表から、未使用のリソースをコンフィグレーションレジスタ群に書き込んで設定し、OS の管理しているリソース表を更新します。デバイスドライバの割り当ては、デバイスドライバの特定と設定の二つの段階に分けられます。デバイスドライバの特定には、コンフィグレーションレジスタ群から、ID(識別子)を読み取ることで行います。この ID とデバイスドライバの対応表(データーベース)から、デバイスドライバを特定します。または、ID を人にとって理解しやすい方法で、表現し、人にデバイスドライバを選んでもらいます(PnP の目的(人手を煩わすことなく)に反します)。デバイスドライバが特定できたら、コンフィグレーションレジスタに書き込んだリソース情報と同じものを、デバイスドライバにも適応します。

4.3 PnP の種類

もともと PnP とは、Intel 社と Microsoft 社により、1993年 3月に発表された、 "Plug and Play ISA Specification"に由来します。単に PnP と いった場合、ISAPnP のことでした。現在は Plug and Play(挿せば使える)に、 対応したハードウェアや仕組みのことを、すべて PnP と呼んでいます。

PnP に対応したハードウェアはたくさんあります。 これらについて、簡単に説明します。

CPU

x86 系の CPU には、CPU の特性が、特別なレジスタに書き込まれてい ます。これを、CPU ID と呼んでいます。 Linux では CPU ID を CPU 内蔵 キャッシュメモリ容量の調査と設定、 MTRR の設定に利用しています。 CPU ID の情報は /proc/cpuinfo で調べることができます。

メモリ(SPD)

メモリの種類(EDO, SD, PROM)、容量、ECC やパリティの有無 を調べることと、タイミング(CAS, RAS のレイテンシー)の設定ができます。

ISAPnP

ISA Bus で PnP を実現したものです。 ISAPnP についてで説明します。

PCI

すべての CPU で共通に使用できることを目指した高速 32bit Bus の 規格です。コネクタやカードの機械的な形状の規定と電気的な特性や タイミングの規定と、識別子や、ハードウェアの情報を CPU 等から、読み書き する方法の規定を含みます。PCI は拡張カードや周辺機器の接続だけではなく、 Bus そのものの拡張方法やコンピュータ同士の接続についても、規格化されていま す。Linux では、問題なく認識できますが、拡張カードではデバイスドライバを 指定しないと、動作しません。

USB

電源を切ることなく、機器の取り外しや、取り付けができることが特徴 です。手軽に扱えるため、最近は様々な機器のインターフェースに採用されていま す。しかし Linux では機器毎にプロトコルが存在するため、それに対応するのが 遅れています(ネットワークに当てはめていうと、パケットの送受はできてるが、 サービス ftp smtp pop 等に対応していない状況です)。

SCSI-2

コネクタの機械的な形状、ケーブルの特性、電気的な特性やタイミ ングの規定と、送受するコマンドの規定が規格されています。 高速パラレルインターフェースとして、ハードディスクや様々な機器、さらに、 コンピュータまで接続できます。SCSI-2 以前の SCSI は送受するコマンドが 規定されていなかったため、機器の組み合わせの相性問題がありました。

ATA-3

もともと ATA は IDE ハードディスクの規格でしたが、SCSI コマンドに 似た ATAPI コマンドを規定したことで、CDROM, CDR, DVD, テープ、フロッピーディスク等、多くの機器が接続できるようになりました。

DDC

ディスプレイやモニタの特性(解像度等)をビデオカード等から読める ようにした規格です。XFree86 4.0 でサポートされるようになりました。 あの面倒くさい Modeline から、解放されるかもしれません。

パラレルポート機器

IBM PC/AT 互換機のパラレルポートが双方向だったこ とから、発展し IEEE1284 になりました。そして、プリンタ以外にもフロッピーディ スクドライブ等、比較的低速なパラレルインターフェースに使用できるようになり ました。

PC Card

主に、ノートパソコンの拡張用に使用されています。PC Card 規格 の起源は電子手帳に使用するメモリーカードから始まっています。 1986 年に、最初の規格が JEIDA からガイドラインとして公開されました。 その後 1989 年にアメリカで、PCMCIA が設立され、1993 年に JEIDA と PCMCIA の規格を統一した PC Card 規格になりました。1997 年に CardBus 規格が 発行されました。PnP という言葉の前にできた、最初の PnP です。 Linux では pcmcia-cs として、サポートされてきました。kernel 2.4 では、 PC Card のサポートは kernel に組み込まれました。

  略語説明 JEIDA  : 日本電子工業振興協会
           PCMCIA : Personal Computer Memory Card International Association


次のページ 前のページ 目次へ

[