Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO ■PCI(PeripheralComponentInterface) 対象 PCIバス搭載機種 用語 PCI(PeripheralComponentInterface) o PCIバスを搭載したPC-9800シリーズでは、PCIチップセットとしてIntel社製の i82430LX(マーキュリー)チップセット、i82430NX(ネプチューン)チップ、 i?????(オリオン)チップセット、VLSI Technologies社製の82C594(Wildcat) チップセットなどを使用している。 82430は2つのローカルバスアクセラレータ82433(LBX)と、PCI,メモリ,キャッ シュコントローラ82434(PCMC)とで構成され、60MHz版Pentiumプロセッサでは i82430LXが、90MHz,100MHz版Pentiumプロセッサでは i82430NXが使用される。 o PC-9821CfではPCIバスが搭載されていないが、メモリ,キャッシュコントローラ としてマーキュリーチップセットが使用されている。 o PCIバス搭載機でのCPU,PCMC,LBX,PCIバス等の構成は図1のようになっている。 図1: ブロック図 ---------------------------------------------------------------------- +-----------+ |CPU(Pentium| |プロセッサ)| +-----+-----+ | -----------+----+------------------+---------------ホストCPUバス | | +--------+ +--+--+ +------+ +--+--+ |2ndキャッシュ+---+PCMC +--+メモリ+--+ LBX | +--------+ +--+--+ +------+ +--+--+ |*0 | ---------+------+------+-----------+-----+---------PCIバス |*1 |*2 |*3 +----+----+ +------+-----+ +------+-----+ |PCI-Cバス| |PCI-ローカル| |PCIスロット0| ・・・・ |ブリッヂ | |バスブリッヂ| +------------+ +----+----+ +------+-----+ | | | ------+------+-------- ・・・・ ------98グラフィック | | ローカルバス | +--+--+ | |GVRAM| | +-----+ | ---+-----+---+-------+-- ・・・・ ---------+-----------Cバス | | | | +--+--+ +--+--+ +------+------+ |DMAC | | FDC | |Cバススロット| ・・・・ +-----+ +-----+ +-------------+ *0 PCMCはデバイス番号00000bとして接続されている *1 PCI-Cバスブリッヂはデバイス番号00001bとして接続されている *1 PCI-ローカルバスブリッヂはデバイス番号00010bとして接続されている *3 PCIスロット#0〜2はデバイス番号01000〜01010bとして接続されている ---------------------------------------------------------------------- o マーキュリーチップセットではコンフィギュレーションメカニズム#1を使用す ることができないので、コンフィギュレーションメカニズム#2を使用する必要 がある。ネプチューンチップセットではどちらのコンフィギュレーションメカ ニズムも使用することが出来る。 o コンフィギュレーションメカニズム#1では、82434NX(PCMC)のI/O 0CF8h(DWORD) でPCIコンフィギュレーションアドレスを指定し、I/O 0CFChでPCIコンフィギ ュレーションレジスタにアクセスする。(図2,3) o コンフィギュレーションメカニズム#2では、CPUのI/O C000〜CFFFhの空間に マッピングされたPCIコンフィギュレーションレジスタにアクセスする。ただ し、デバイス番号00000〜01111bの範囲にあるデバイスしかマッピングされな いため、デバイス番号10000〜11111bの範囲にあるデバイスにアクセスするこ とはできない。しかし通常のPCIバスでは、デバイス番号は00000bから始まり ひとつのPCIバスに16個を超えるPCIデバイスが存在することはまれであるた め、事実上この制限は無視できる。(図4,5) 図2: コンフィギュレーションメカニズム#1 Type0 --------------------------------------------------------------------- ・Host-to-PCI Address Mapping for a Type0 Configuration Cycle I/O 0CF8h(DWORD) ConfigurationAddressRegister 31 24|23 16|15 11|108|7 2|10 1???????|00000000|XXXXX|YYY|ZZZZZZ|?? / | | | / || | | / | | | | / | | | | / | | | | / | | | | / | | | | / | | | | 31 16|15 11|108|7 2|10 PCIアドレス AAAAAAAAAAAAAAAA|BBBBB|CCC|DDDDDD|00 | | | ↓ | | |コンフィグレーションレジスタ番号 | | | | | | | | ↓ | | ファンクション番号 | | | ↓ | リザーブ ↓ IDSEL# Select デバイス番号の4ビットに対応するビットのみ が1になり、他の15ビットは0 * I/O 0CF8h bit 24〜15hが00000000bのときに発生する --------------------------------------------------------------------- 図3: コンフィギュレーションメカニズム#1 Type1 --------------------------------------------------------------------- ・Host-to-PCI Address Mapping for a Type1 Configuration Cycle I/O 0CF8h(DWORD) ConfigurationAddressRegister 31 24|23 16|15 11|108|7 2|10 1???????|WWWWWWWW|XXXXX|YYY|ZZZZZZ|?? | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 31 | 16|15 11|108|7 2|10 PCIアドレス 00000000|AAAAAAAA|BBBBB|CCC|DDDDDD|01 | | | ↓ | | |コンフィグレーションレジスタ番号 | | | | | | | | ↓ | | ファンクション番号 | | | ↓ | デバイス番号 ↓ バス番号 * I/O 0CF8h bit 24〜15hが00000000bでないときに発生する --------------------------------------------------------------------- 図4: コンフィギュレーションメカニズム#2 Type0 --------------------------------------------------------------------- ・Host-to-PCI Address Mapping for a Type0 Configuration Cycle 15 12|11 8|7 2| CPU I/Oアドレス(C000〜CFFFh) 1100|XXXX|YYYYYY| / /| | / | | | / / | | / / | | / | | | / / | | / / | | 31 16|1511|108|7 2|10 PCIアドレス AAAAAAAAAAAAAAAA|BBBB|CCC|DDDDDD|00 | | | ↓ | | |コンフィグレーションレジスタ番号 | | |(CPU I/Oアドレスに | | | そのまま対応) | | ↓ | | ファンクション番号 | | (I/O 0CF8h bit3〜1) | ↓ | リザーブ ↓ IDSEL# Select CPU I/Oアドレスのbit 11〜8の4ビットに対応 するビットのみが1になり、他の15ビットは0 * I/O 0CFAh(FORWARD REGISTER)が00hのときに発生する --------------------------------------------------------------------- 図5: コンフィギュレーションメカニズム#2 Type1 --------------------------------------------------------------------- ・Host-to-PCI Address Mapping for a Type1 Configuration Cycle 15 12|11 8|7 2| CPU I/Oアドレス(C000〜CFFFh) 1100|XXXX|YYYYYY| / /| | / / | | 31 24|23 16| |1411|108|7 2|10 PCIアドレス AAAAAAAA|BBBBBBBB|0|CCCC|DDD|EEEEEE|01 | | | | ↓ | | | |コンフィグレーションレジスタ | | | |番号 | | | |(CPU I/Oアドレスに | | | | そのまま対応) | | | ↓ | | | ファンクション番号 | | | (I/O 0CF8h bit3〜1) | | ↓ | | エージェント番号 | | (CPUのI/Oアドレスに対応) | ↓ | バス番号 | (I/O 0CFAh) ↓ リザーブ * I/O 0CFAh(FORWARD REGISTER)が01〜FFhのときに発生する --------------------------------------------------------------------- o 82430チップセットを使用したPC-9800シリーズではPCIバスで以下のように デバイス番号が設定されている。 表1: IDSELのデコード関係 ----------------+---------------+---------------+------------- デバイス番号 |デバイス |ベンダID |デバイスID ----------------+---------------+---------------+------------- 00000b |82434(PCMC) |8086h(Intel) |04A3h(PCMC) 00001b |Cバスブリッヂ |1033h(NEC) |0001h 00010b |ローカルバスブリッヂ |1033h(NEC) |0002h 01000b |PCIスロット#0 | | 01001b |PCIスロット#1 | | 01010b |PCIスロット#2 | | Xtのみ ----------------+---------------+---------------+------------- o PC-9821Xa16・Xa13・Xa12・Xa10・Xa9・Xa7・Xv13ではPCIバスで以下のように デバイス番号が設定されている。 表2: IDSELのデコード関係 ----------------+---------------+---------------+------------- デバイス番号 |デバイス |ベンダID |デバイスID ----------------+---------------+---------------+------------- 00000b |Wildcat |1004h(VLSI) |0007h(Wildcat) 00110b |Cバスブリッヂ |1033h(NEC) |0001h 00111b |98グラフィックス |1033h(NEC) |0009h 01000b |内蔵アクセラレータ |1023h(Trident) |9660h(TGUI9680XGi) 01011b |PCIスロット#0 | | 01100b |PCIスロット#1 | | ----------------+---------------+---------------+------------- o PC-9821Xa7e・Xb10・V10・V7/SではPCIバスで以下のようにデバイス番号が 設定されている。 表2: IDSELのデコード関係 ----------------+---------------+---------------+------------- デバイス番号 |デバイス |ベンダID |デバイスID ----------------+---------------+---------------+------------- 00000b |PCMC |1004h(VLSI) |0007h(Wildcat) 00101b |内蔵アクセラレータブリッヂ|1033h(NEC) |0016h 00110b |Cバスブリッヂ |1033h(NEC) |0001h 00111b |98グラフィックス |1033h(NEC) |0009h 01011b |PCIスロット#0 | | ----------------+---------------+---------------+------------- o PC-9821Xt16・Xt13ではPCIバスで以下のようにデバイス番号が設定され ている。 表2: IDSELのデコード関係 ----------------+---------------+---------------+------------- デバイス番号 |デバイス |ベンダID |デバイスID ----------------+---------------+---------------+------------- 00000b |PCMC |1004h(VLSI) |0007h(Wildcat) 00110b |Cバスブリッヂ |1033h(NEC) |0001h 00111b |98グラフィックス |1033h(NEC) |0009h 01000b |SCSIホストアダプタ |9004h(Adaptec) |7078h(AIC-7870) 01011b |PCIスロット#0 | | 01100b |PCIスロット#1 | | 01101b |アクセラレータスロット | | ----------------+---------------+---------------+------------- o PC-9821NxではPCIバスで以下のようにデバイス番号が設定されている。 ----------------+---------------+---------------+------------- デバイス番号 |デバイス |ベンダID |デバイスID ----------------+---------------+---------------+------------- 00000b |Eagle |1004h(VLIS) |未調査 00010b |98グラフィックス |1033h(NEC) |未調査 00011b |内蔵アクセラレータ |1023h(Tridnet) |9320h Cyber9320 00101b |Cバスブリッヂ |1033h(NEC) |未調査 ----------------+---------------+---------------+------------- o PC-9821Na9・Na12ではPCIバスで以下のようにデバイス番号が設定されている。 ----------------+---------------+---------------+------------- デバイス番号 |デバイス |ベンダID |デバイスID ----------------+---------------+---------------+------------- 00000b |MobileTiton |8086h(Intel) |1235h 00010b |98グラフィックス |1033h(NEC) |0009h 00011b |内蔵アクセラレータ |1023h(Tridnet) |9320h Cyber9320 00101b |Cバスブリッヂ |1033h(NEC) |0001h ----------------+---------------+---------------+------------- o PC-9800シリーズではPCIボードからの割り込み信号ピンINTA〜INTDが、 スロットによってPCIバス上の違う割り込み信号線に配線される。これは、 INTA信号線のみを使用するシングルファンクションボードでの割り込み ルーティングを簡略化するためである。各スロットごとの対応は以下の通 りである。 表3: IDSELのデコード関係 ----------------+-------+-------+-------+------- スロット |INTA |INTB |INTC |INTD ----------------+-------+-------+-------+------- スロット#0 |PIRQ0 |PIRQ1 |PIRQ2 |PIRQ3 スロット#1 |PIRQ1 |PIRQ2 |PIRQ3 |PIRQ0 スロット#2 |PIRQ2 |PIRQ3 |PIRQ0 |PIRQ1 ----------------+-------+-------+-------+------- 図6: 割り込み信号線の接続(概念図) ----------------------------------------------------------------------- +---------+ 割り込み←--| |-PIRQ0-----+-------+---------INTA-- +--------+ コントロ←--| インタラプト |-PIRQ1---+-|-------|-----+---INTB-- |PCI | ーラへ ←--| ルータ |-PIRQ2---|-|---+---|---+-|---INTC-- | スロット#0 | ←--| |-PIRQ3---|-|-+-|---|-+-|-|---INTD-- +--------+ ←--| | | | | | | | | | +---------+ | | | | | | | +---INTA-- +--------+ | | | | | | +-----INTB-- | PCI | | | | | | +-------INTC-- | スロット#1 | | | | | +---------INTD-- +--------+ | | | | | | | +-------------INTA-- +--------+ | | +---------------INTB-- | PCI | | +-----------------INTC-- | スロット#2 | +-------------------INTD-- +--------+ ----------------------------------------------------------------------- o PC-9800シリーズではCバスブリッヂデバイスの中にインタラプトルータが含ま れてまれている。PIRQ0〜3信号線をそれぞれ8259割り込みコントローラのどの 割り込み入力信号に割り付けるかは、CバスブリッヂデバイスのPCIコンフィギ ュレーションレジスタによって設定可能である。通常、Plug and Play BIOSに よって起動時に設定されている。 u PC-9821Xt13は3つのPCIバススロットを搭載しているが、そのうちの1スロット はウィンドウアクセラレータボード専用スロットであり、ウィンドウアクセラ レータボードX2(PC-9821X-B03)相当のカードが挿入されている。このスロット はPCIバスの信号線が一部省略されており、PCIバスマスタになるカードを使用 することはできない。PCIバスマスタにならないカードであれば、ウィンドウ アクセラレータボード専用スロットでも使用することが可能である。 o PC-9800シリーズに搭載されたPCIバスはハードウェア的には、規格で定めら れた標準のものである。すなわちハードウェア的には、IBM PC-AT互換機用に 作られたPCI拡張ボードをPC-9800シリーズで使用することは可能である。 o PC-9800シリーズ用のPCI拡張ボードには以下のようなものがある。 -------------+--------------------------+--------------+--------------- 型名 |品名 |ベンダID |デバイスID -------------+--------------------------+--------------+--------------- PC-9821X-B01 |フルカラーウインドウアクセラレータボードX |102Bh(Matrox) |0518h(MGA-II) PC-9821X-B02 |SCSI-2インタフェースボード |9004h(Adaptec)|7178h(AIC-7870) PC-9821X-B03 |フルカラーウインドウアクセラレータボードX2 |102Bh(Matrox) |0519h(ミレニアム) SV-98/2-B03 |SCSI-2インタフェースボード |9004h(Adaptec)|7178h(AIC-7870) SV-98/2-B04 |SCSI-2インタフェースボード |1000h(NCR) |????h(53C720) SV-98/2-B05 |B4680インタフェースボードEC |1022h(AMD) |2000h(AM79C970) SV-98/2-B05L |B4680インタフェースボードEC |1022h(AMD) |2000h(AM79C970) SV-98/2-B06 |B4680インタフェースボードET |1022h(AMD) |2000h(AM79C970) SV-98/2-B06L |B4680インタフェースボードET |1022h(AMD) |2000h(AM79C970) -------------+--------------------------+--------------+--------------- 関連 INT 1Ah - Function B1h INT 1Fh - Function CCh F8E8:0004h bit 5 I/O 0CF8h(BYTE) 名前 CONFIGURATION SPACE ENABLE REGISTER(CSE) Undocumented 対象 PCIバス搭載機種 機能 [READ/WRITE] bit 7〜4: KEY 0000b= Normal Mode 0001〜1111b= Configuration Mode bit 3〜1: FN * PCIアドレスのbit 10〜8に出力する値を設定する。 bit 0: リザーブ(必ず0にする) 解説 o CPUのI/O C000〜CFFFhのアドレスの空間上に、PCIコンフィギュレーション レジスタをマッピングするかどうかの制御を行なう。KEYが0000b以外のとき、 I/O C000〜CFFFhの空間にはPCIコンフィギュレーションレジスタが投影され る。 o 82434NXではコンフィギュレーションメカニズム#2選択時にのみ有効。 関連 I/O 0CFAh(BYTE) I/O 0CFBh(BYTE) bit 7■[82434NX搭載機] I/O 0CF9h(BYTE) 名前 TURBO-RESET CONTROL REGISTER(TRC) Undocumented 対象 82434LX・NX搭載機 機能 [READ/WRITE] bit 7〜4: リザーブ bit 3: CPU BIST Enable 1= Enabled 0= Disenabled bit 2: Reset CPU bit 1: System Hard Reset Enable bit 0: Turbo/Deturbo Mode 1= Deturbo 0= Turbo 解説 o IBM PC-AT互換機の'TURBOモード'の制御を行う。 o CPUリセットを行う。 I/O 0CFAh(BYTE) 名前 FORWARD REGISTER Undocumented 対象 PCIバス搭載機種 機能 [READ/WRITE] bit 7〜0: Forward Bus Number 00h= No Bus Forwarding * Access to PCI Bus connected to PCMC 01h〜FFh= Bus Forwarding * Bus[7:0] map to AD[23:16] 解説 o PCIコンフィギュレーションレジスタのマップ方法を設定する。 00hを指定すると、Type0コンフィギュレーションサイクルを発生させる。 それ以外の値を指定すると、Type1コンフィギュレーションサイクルを発生 させて、バス番号00h以外のPCIバスのデバイスのアクセスできる。 o 82434NXではコンフィギュレーションメカニズム#2選択時にのみ有効。 関連 I/O 0CF8h(BYTE) I/O 0CFBh(BYTE) bit 7■[82434NX搭載機] I/O 0CFBh(BYTE) 名前 Configuration Mechanism Select Undocumented 対象 82434NX搭載機 機能 [READ/WRITE] bit 7: Configuration Mechanism #1 Enable 1= Enable 0= Disable bit 6〜0: Reserved(常に0000000b) 解説 o コンフィギュレーションメカニズムを選択する。 o コンフィギュレーションメカニズム#1を使用するためには、bit 7が1である 必要がある。bit 7が0のとき、I/O 0CF8h,0CF9h,0CFAhは82434LX(マーキュ リーチップセット)と互換であり、コンフィギュレーションメカニズム#2を 使用してPCIコンフィギュレーションレジスタへアクセスへ行う。 関連 I/O 0CF8h(DWORD) I/O 0CFCh I/O 0CF8h(DWORD) 名前 CONFIGURATION ADDRESS REGISTER Undocumented 対象 PCIバス搭載機種(PC-9821Xfを除く) 機能 [READ/WRITE] bit 31: Configuration Enable(CONE) 1= Enable 0= Disable bit 15〜24: Reserved(常に0000000b) bit 23〜16: BusNumber bit 15〜8: Device/Function Nuber bit 7〜0: ConfigurationRegisterOffset 解説 o コンフィギュレーションメカニズム#1でPCIコンフィギュレーションレジスタ を指定する。 o I/O 0CF8〜0CFBhをコンフィギュレーションアドレスレジスタとして使うコン フィギュレーションメカニズム#1を使用するためには、bit 31が1である必要 がある。bit 31が0のとき、I/O 0CF8h,0CF9h,0CFAhは82434LX(マーキュリー チップセット)と互換である。 o コンフィギュレーションアドレスレジスタに対するアクセスは、I/O 0CF8hか らのダブルワードアクセスである必要がある。I/O 0CF8h,0CF9h,0CFAh,0CFBh に対するバイトアクセスやワードアクセスは通常のI/Oアクセスとして扱われ る。 関連 I/O 0CFCh I/O 0CFCh 名前 CONFIGURATION DATA REGISTER Undocumented 対象 PCIバス搭載機種(PC-9821Xfを除く) 機能 [READ/WRITE] bit 31〜0: Configuration Register Data 解説 o コンフィギュレーションメカニズム#1でI/O 0CF8hで指定されたPCIコンフィギ ュレーションレジスタにアクセスする。 o コンフィギュレーションメカニズム#1を使用するためには、I/O 0CFCh bit 31 が1である必要がある。 o コンフィギュレーションメカニズム#1が指定されている間、コンフィギュレー ションデータレジスタに対するアクセスは、バイトアクセス、ワードアクセス ダブルワードアクセスのいずれであっても構わない。 関連 I/O 0CF8h