LinuxというよりもPC一般で使用されるPCIデバイスについて予習なのです。
PCIとは
- Peripheral Components Interconnect
- Intelが中心となって規格を定め、PCI SIG(Special Interest Group)によって仕様がリリースされている
- ISA(Industrial Standard Architecture)の代替として策定された
- PCIにはいくつかの規格がある
- PCI
- PCI-X
- PCI Express
- スロットにも x1, x4, x8, x16など種類がある
- PCI規格
バス幅 |
33bit, 64bit |
クロック周波数 |
33MHz, 66MHz |
- 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 |
パリティ・エラー検知 |
基本クラス |
意味 |
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
- サブシステム・ベンダID
- サブシステムID
- 割込ライン
- 8259A割込コントローラの割込ラインIRQ 0-15に結びつけられている
- 割込ピン
数値 |
意味 |
0 |
未使用 |
1 |
INTA# |
2 |
INTB# |
3 |
INTC# |
4 |
INTD# |