PCI

LinuxというよりもPC一般で使用されるPCIバイスについて予習なのです。
PCIとは

  • Peripheral Components Interconnect
  • Intelが中心となって規格を定め、PCI SIG(Special Interest Group)によって仕様がリリースされている
  • ISA(Industrial Standard Architecture)の代替として策定された
  • PCIにはいくつかの規格がある
    • PCI-XおよびPCI Expressは主にサーバ用途などのためにPCI規格を拡張して策定された
    1. PCI
    2. PCI-X
    3. PCI Express
  • スロットにも x1, x4, x8, x16など種類がある
  • PCI規格
バス幅 33bit, 64bit
クロック周波数 33MHz, 66MHz
種別 範囲 用途
バス番号 0-255 PCIバス識別のため
バイス番号 0-31 PCIバイス識別のため ※1つのPCIバスに複数のPCIバイスを搭載できる
ファンクション番号 0-7 PCIバイス上の複数の機能を識別するため ※通常0
  • PCIバス0にはCPUなどが搭載されるホスト・バスがホスト・ブリッジ経由で接続されている
  • PCIバス間はPCI-PCIブリッジで接続される
  • ISAバスは手動でリソース(IRQ, I/Oアドレス, DMAチャネル)などを割り当てる必要があったが、PCIバスではPnP対応のBIOS/OSと連携することにより自動的なリソースの割り当てを実現した
  • PCIバイスには識別のためにPCIコンフィグレーション空間と呼ばれる情報が書き込まれている256バイト空間
bit 意味
0 I/O空間Enable bit
1 メモリ空間Enable bit
2 バスマスタ・Enable bit
3 スペシャル・サイクル
4 メモリ・ライト&インバリデート
5 VGAパレット・Snoop
6 パリティ・エラー応答
7 ウェイト・サイクル制御
8 SERR# Enable Bit
9 高速Back to Back Enable bit
10 割込Disable
11-15 予約
bit 役割
0-2 予約
3 割り込みステータス
4 新機能対応
5 66MHz
6 予約
7 高速Back to Back
8 データ・パリティ・エラー
9-10 DEVSEL#応答タイミング
11 ターゲット・アボート通報
12 ターゲット・アボート受信
13 マスター・アボート受信
14 システム・エラー通報
15 パリティ・エラー検知
  • リビジョンID
    • メーカー独自・1バイト
  • クラス・コード
基本クラス 意味
00h クラスコード定義以前の古いデバイス
01h Mass storage controller
02h Network controller
03h Display controller
04h Multimedia device
05h Memory controller
06h Bridge device
07h Simple communication controllers
08h Base system peripherals
09h Input devices
0Ah Docking stations
0Bh Processers
0Ch Serial Bus controller
0Dh Wireless controller
0Eh Intelligent I/O controllers
0Fh Satellite communication controllers
10h Encryption/Decryption controllers
11h Data acquisition and signal processing controllers
12h-FEh 予約
FFh 該当なし
bit 意味
7 1:多機能デバイス/2:単機能デバイス
6-0 00h:一般デバイス/01h:PCI-PCIブリッジ/02h:Card Busブリッジ
  • ベース・アドレス・レジスタ
    • PCIバイスの持つレジスタにデバイス・ドライバがアクセスするために必要となるアドレス値
    • "memory mapped I/O"と"I/O mapped I/O"の2種類がある
    • memory mapped I/O
bit 意味
0 "0"のみ
1-2 アドレス範囲 *1
3 プリフェッチ *2
4- ベース・アドレス
      • *1:00:32bit/01:under 1MB memory/10:64bit/11:予約
      • *2:メモリアクセス高速化の仕組み
    • I/O mapped I/O
bit 意味
0 "1"のみ
1 予約
  • サブシステム・ベンダID
    • PCI SIGが割り当てる2バイト
  • サブシステムID
    • メーカーが割り当てる2バイト
  • 割込ライン
    • 8259A割込コントローラの割込ラインIRQ 0-15に結びつけられている
  • 割込ピン
    • 割込ピンをどのPCIバイスに割り当てているかを示す
数値 意味
0 未使用
1 INTA#
2 INTB#
3 INTC#
4 INTD#