供应商ID:16位寄存器存储了设备制造商代码。值FFFFh被保留,当读取一个不存在的设备配置寄存器时,导致主设备读操作失败,桥的供应商ID为FFFFh作为反应返回这个值。主设备失败不被看作是错误,但规范规定桥必须在配置状态寄存器中设置收到的主设备失败位。
设备ID:16位,由设备制造商分配,表示设备类型。设备ID用于定位设备指定的驱动程序(可能与版本有关)。
版本:8位,由设备制造商分配,表示设备的版本号。使得OS能够装载正确的驱动程序。
类代码:24位只读寄存器,包含:基类型、子类型和可编程接口。它代表设备的基本功能(例如大容量存储控制器)、设备子类型(如IDE大容量存储控制器),以及在一些情况下寄存器指定的编程接口(例如IDE寄存器组的指定格式)。图6-30 为类代码寄存器,高字节定义功能的基类型, 中间字节定义基类型内的子类型,低字节定义编程接口。表6-列出了现行定义的基类型的代码值,表6-8到表6-分别列出了类型1大容量存储控制器、类型2网络控制器、类型4多媒体设备的子类型和类型1大容量存储控制器中子类型1 IDE控制器的编程接口。对于有些类型目录,编程接口字节由硬连线定为0,它没有意义;对另于一些类型,如IDE控制器,编程接口字节是有意义的。类代码寄存器的作用是什么呢?目前计算机系统中每一种设备都有许多兼容产品,当操作系统试图定位一个设备,可以根据类型码选择驱动程序。如果两个设备类型码和子类型码相同,表示设备兼容。驱动程序便可以通用。与选择指定供应商的指定设备的驱动程序相比,选择类型驱动程序更加方便灵活。对于有些设备,需要由设备类型码、子类型码和编程接口字节一起定义设备的兼容性。

图6-30 类代码寄存器
表6-8 设备的类代码
类型
概 述
00h
有类代码定义前 (在PCI规范2.0版前) 设计的设备
01h
大容量存储控制器
02h
网络控制器
03h
显示控制器
04h
多媒体设备
05h
存储器控制
06h
桥设备
07h
简单通信控制器
08h
基系统周边
09h
输入设备
0Ah
安装台
0Bh
处理器
0Ch
串行总线控制器
0Dh
无线控制器
0Eh
智能IO控制器
0Fh
卫星通信控制器
10h
加密/解密控制器
11h
数据采集与信号控制器
12h ~ FFh
保留
FFh
设备不符合任何定义的类代码