• 供应商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-8 设备的类代码
|