🚌

PCI (Peripheral Component Interconnect)の基本事項

2023/07/10に公開

PCI (Peripheral Component Interconnect) は、コンピュータのマザーボード上に存在するバスであり、システムの主要な部分、つまりプロセッサ、RAM、そして周辺デバイス(ネットワークカード、サウンドカード、グラフィックカードなど)とデータをやり取りするための主要なパス(道)を提供します。

また、PCIデバイスとはPCIバスに接続されたデバイスのことです。PCIデバイスにはネットワークカード(NIC:Network Interface Card)やSCSIカードなどがあります。

PCIデバイスの情報を表示するコマンドはlspciです。また、「/proc/bus/pci/devices」ファイルにはPCIデバイスの情報が格納されています。ファイルの内容はcatコマンドなどで確認できます。

端末のPCIデバイスの情報を表示するコマンドは以下の通りです。

・lspci
・cat /proc/bus/pci/devices

PCIの特徴

以下に、PCIの特徴を説明します。

  1. データ転送: PCIバスは、CPUと周辺デバイス間のデータ転送を媒介します。バスは共有リソースであり、一度に一つのデバイスしかデータを送受信できません。CPUはバスを制御し、どのデバイスがいつバスを使用できるかを決定します。

  2. バスマスタリング: PCIデバイスは、バスマスタリング機能を通じて直接メモリにアクセスできます。これにより、CPUと独立してデータ転送が可能となり、全体のシステムパフォーマンスが向上します。

  3. プラグアンドプレイ: PCIバスはプラグアンドプレイをサポートしています。これは、デバイスをシステムに追加または取り外すときに、ユーザーが手動で設定や調整を行う必要がないということを意味します。オペレーティングシステムは新しいデバイスを自動的に検出し、適切なドライバをロードして設定します。

  4. IRQの割り当て: 古いシステムでは、各デバイスがユニークなIRQ(Interrupt Request)を必要としていました。これはデバイスがCPUの注意を必要とするときに使用するものです。しかし、PCIは共有IRQをサポートしており、複数のデバイスが同じIRQを共有できます。これにより、システム内のデバイス数が限定されるという問題が緩和されました。

PCIの歴史と発展

PCI(Peripheral Component Interconnect)は、デスクトップコンピュータ内のデバイス間で情報を交換するための主要な標準的な接続方法として、1990年代初頭にインテルによって開発されました。

  1. PCIの登場: PCIが初めて登場したのは1992年で、それまでのISA(Industry Standard Architecture)バスと比べて、より高速で効率的なデータ転送を実現しました。PCIバスは、32ビットまたは64ビットデータバスを使用して、クロックスピードが33MHzまたは66MHzの周波数で動作するよう設計されました。これにより、PCIはピークで約133MB/sまたは266MB/sのデータ転送レートを実現できるようになりました。

  2. PCIの発展: PCIの初期のバージョンから、PCI 2.xと3.0へと進化していきました。これらの改良版では、より多くのデバイスと互換性を持つように仕様が拡張され、信頼性と性能が向上しました。

  3. PCI-Xの登場: PCIの発展の一環として、PCI-X(PCI Extended)が開発されました。これは、サーバーやハイエンドワークステーションで高速なデータ転送を必要とするデバイス(たとえば、ギガビットイーサネットカードやファイバーチャネルカード)をサポートするためのものでした。PCI-Xは、最大133MHzのクロックスピードで動作し、64ビットのデータパスを通じて最大1GB/sのデータ転送レートを実現しました。

  4. PCI Expressの登場: 2004年には、PCI Express(PCIe)が導入されました。PCI Expressは、PCIバスとは全く異なる新たな接続方式で、パラレル接続からシリアル接続へと移行しました。これにより、データの送受信が1つの線路で同時に行われる従来のPCIとは異なり、PCI Expressは各デバイスが専用のポイントツーポイント接続を持つことができるようになりました。これにより、複数のデバイスがバスを共有することによる競合を避けることができ、大幅に性能が向上しました。

  5. PCI Expressの進化: PCI Expressはその後も進化を続け、1.0、2.0、3.0、4.0、そして5.0と、バージョンが上がるごとに転送速度が向上してきました。PCI Express 5.0では、最大32GT/s(Gigatransfers per second)のデータ転送レートを実現しています。

これらの発展を経て、PCIは現在でもパソコンやサーバーなどのコンピュータシステムの主要な接続方式として広く採用されており、その性能と汎用性は引き続き高く評価されています。

BIOSからPCIデバイスを検出する仕組み

BIOS

まず、BIOSの基本的な仕組みについて解説します。
BIOS(Basic Input/Output System)は、コンピュータが起動する際にハードウェアを初期化し、オペレーティングシステムをロードするためのプログラムです。BIOSは永続的にマザーボードの特定のチップに格納されており、コンピュータが電源を入れるとすぐに動作を開始します。

BIOSの主要なタスクの一つは、システム内のすべてのハードウェアコンポーネント、つまりPCIデバイスなどを検出し、初期化することです。このプロセスはPOST(Power-On Self-Test)と呼ばれ、各デバイスが適切に接続され、機能していることを確認します。もし問題が検出された場合、BIOSはエラーメッセージを表示して、問題のあるデバイスをユーザーに知らせます。

BIOSはまた、PCIデバイスに対する割り込みリクエスト(IRQ)の割り当ても管理します。これにより、デバイスがCPUに割り込みを送信できるようになります。

PCI

次に、PCIの基本的な仕組みについて解説します。PCI(Peripheral Component Interconnect)は、ハードウェアデバイスがコンピュータの中央処理装置(CPU)やメモリと通信するための共通バスです。PCIバスはパラレル接続を提供し、複数のデバイスが同時にデータを転送できるようにします。

PCIデバイスは、マザーボード上のPCIスロットに物理的に接続され、バスを介してデータを転送します。この通信は、アドレスラインとデータラインを介して行われ、各デバイスが一意のアドレスを持つことで、デバイス間のデータ転送が可能になります。

さらに、PCIはプラグアンドプレイをサポートしており、新しいデバイスを追加するときには、通常、ハードウェア設定を手動で変更する必要はありません。代わりに、BIOSやオペレーティングシステムは新しいデバイスを自動的に検出し、適切に設定します。

これらの機能により、PCIは多くのデバイスとの互換性を確保し、高速なデータ転送を提供します。これにより、オーディオカード、ネットワークカード、グラフィックカードなど、さまざまな種類のデバイスをシステムに追加することが可能になります。

PCIとIRQハンドラの関係

CPUはコンピュータ内の多くのコンポーネントと同時に通信する必要がありますが、全てのコンポーネントと同時に対話することは現実的には不可能です。そこで、割り込みという仕組みが用いられます。

割り込みとは、特定のデバイスからCPUへの信号で、何らかのサービスを必要とするデバイスからCPUへ送られます。たとえば、ネットワークカードが新しいデータパケットを受信した場合、そのデータを処理するようCPUに通知する必要があります。これを実現するためにネットワークカードは割り込みを発行します。

割り込みは、各デバイスが割り当てられた一意の番号、IRQ(Interrupt Request)によって管理されます。IRQの番号は、それぞれの割り込みが一意であり、システム内の他の割り込みと区別できることを保証します。したがって、IRQは、特定のデバイスからの割り込みをCPUが正確に認識し、適切に応答できるようにする重要な要素となります。

PCI(Peripheral Component Interconnect)デバイスも、その機能を遂行するためにこの割り込みシステムを利用します。PCIデバイスが何らかの操作を完了したとき(例えば、ネットワークカードがパケットを受信したとき)、それは割り込みを発行してCPUに通知します。そして、CPUはこの割り込みを受け取ると、その割り込みに対応するIRQハンドラ(割り込み処理ルーチン)を呼び出します。このハンドラは、割り込みが発生したデバイスを処理するためのコードを含んでいます。

IRQはPCIデバイスが適切に機能するための基本的な仕組みで、デバイスからの通知をCPUが理解できる形に変換する役割を果たします。

PCIとDMAの関係

Direct Memory Access(DMA)は、入出力デバイスがCPUを介さずに直接システムメモリにアクセスする能力を指します。この機能は、データの転送速度を大幅に向上させ、CPUの負荷を軽減するために非常に重要です。

データ転送の一般的な手順では、CPUが中心的な役割を果たします。たとえば、ハードドライブからのデータをメモリに読み込む場合、CPUはハードドライブからデータを取り込み、それをシステムメモリに格納します。しかし、このプロセスはCPUの大部分の時間を占有し、他のタスクが停滞する可能性があります。

この問題を解決するためにDMAが利用されます。DMAが有効なデバイス(例えば、PCIデバイス)は、CPUの介入なしに直接メモリにアクセスしてデータを読み書きすることができます。これにより、CPUは他のタスクを続行でき、全体のシステムパフォーマンスが向上します。

PCIデバイスの多くは、高速なデータ転送を必要とするため、DMAをサポートしています。例えば、ネットワークカードやサウンドカードなどは、データを直接メモリに送受信することができます。この機能は、データを高速に処理し、遅延を最小限に抑えることを可能にします。

DMAはPCIデバイスのパフォーマンスを大幅に向上させる重要な機能であり、システム全体の効率を高める役割を果たします。

PCIデバイスのインストールと設定

PCIデバイスのインストールと設定は基本的にはシンプルですが、その手順はある程度ハードウェアの知識が必要です。以下に基本的な手順を説明します。

  1. デバイスの選択: 最初に、適切なPCIデバイスを選びます。これは、コンピュータのマザーボードがサポートするタイプのものでなければなりません。例えば、あるマザーボードはPCIデバイスを、別のものはPCI Expressデバイスをサポートするかもしれません。そして、デバイスのタイプ(例:サウンドカード、グラフィックカード、ネットワークカードなど)とそのスペックも要件に合わせて選びます。

  2. デバイスのインストール: マザーボードに空きスロットがあることを確認したら、次にPCIデバイスをインストールします。まず、電源を切り、コンピュータのケースを開きます。その後、PCIデバイスを適切なスロットに挿入します。デバイスがしっかりとスロットに座っていることを確認し、必要ならばケースに固定します。

  3. ドライバのインストール: ハードウェアのインストールが完了したら、次に必要なドライバをインストールします。これは、オペレーティングシステムがデバイスと適切にコミュニケーションを取るために必要です。多くの現代のオペレーティングシステムはプラグアンドプレイをサポートしており、新しく追加されたハードウェアを自動的に認識し、適切なドライバをロードします。しかし、場合によっては、ユーザーが手動でドライバをインストールする必要があります。これは通常、デバイスの製造元からダウンロードするか、または製品と一緒に提供されるCDまたはDVDからインストールします。

  4. 設定とテスト: ドライバのインストールが完了したら、必要に応じてデバイスの設定を行います。例えば、ネットワークカードの場合、ネットワーク接続の設定が必要かもしれません。最後に、デバイスが正しく機能することを確認するためにテストを行います。

これらの手順は基本的なものであり、具体的な手順はデバイスのタイプやマザーボードのモデル、使用しているオペレーティングシステムなどによって異なる場合があります。したがって、具体的な手順については、デバイスの製造元から提供されるドキュメンテーションやガイドを参照することを強くお勧めします。

PCIデバイスに関連するトラブルシューティング

PCIデバイスに関連する問題はいくつかありますが、以下に一般的なトラブルシューティング手順を示します:

  1. ハードウェアの確認: 最初に、物理的な問題がないことを確認します。コンピュータを電源から切断し、ケースを開き、PCIデバイスが適切にマザーボードのスロットに接続されていることを確認します。また、その他のハードウェアコンポーネント(電源供給装置など)が適切に機能していることも確認します。

  2. ドライバの確認: ハードウェアが正しく接続されている場合、次にドライバの問題を確認します。デバイスマネージャ(Windows)やlspciコマンド(Linux)などを使用して、オペレーティングシステムがデバイスを認識しているかどうかを確認します。認識されていない場合、またはエラーが表示される場合、ドライバをアンインストールし、再インストールするか、または最新のバージョンに更新することを検討します。

  3. コンフリクトの確認: ハードウェアとドライバが正しく機能している場合でも、他のデバイスとのコンフリクトが問題を引き起こす可能性があります。IRQ(割り込み要求)やDMA(Direct Memory Access)チャンネル、I/Oアドレスのコンフリクトを確認します。これらの情報は、デバイスマネージャやシステム情報ユーティリティを通じて確認できます。

  4. BIOS設定の確認: BIOS(またはUEFI)設定が正しくないと、PCIデバイスの問題が発生する可能性があります。PCを再起動し、BIOS設定に入り、PCIデバイスに関連する設定が適切であることを確認します。

これらの手順は一般的なものであり、具体的な問題や状況により、適切なトラブルシューティング手順は異なる場合があります。

Discussion