2.4 PCI总线的装备
其间HOST主桥或许PCI桥运用Type 00h装备恳求,拜访与HOST主桥或许PCI桥直接相连的PCI Agent设备或许PCI桥[1];而HOST主桥或许PCI桥运用Type 01h装备恳求,需求至少穿越一个PCI桥,拜访没有与其直接相连的PCI Agent设备或许PCI桥。如图2‑8所示,HOST主桥能够运用Type 00h装备恳求拜访PCI设备01,而运用Type 01h装备恳求经过PCI桥1、2或许3转化为Type 00h装备恳求之后,拜访PCI总线树上的PCI设备11、21、22、31和32[2]。
当x86处理器对CONFIG_DATA寄存器进行读写操作时,HOST主桥将决定向PCI总线发送Type 00h装备恳求仍是Type 01h装备恳求。在PCI总线业务的地址周期中,这两种装备恳求总线业务的不同反映在PCI总线的AD[31:0]信号线上。
值得注意的是,PCIe总线还能够运用ECAM(Enhanced Configuration Access Mechanism)机制拜访PCIe设备的扩展装备空间,运用这种方法能够拜访PCIe设备256B~4KB之间的扩展装备空间。可是本节仅介绍怎么运用CONFIG_ADDRESS和CONFIG_FATA寄存器发生Type 00h和Type 01h装备恳求。有关ECAM机制的具体阐明见第5.3.2节。
处理器首要将方针PCI设备的ID号保存在CONFIG_ADDRESS寄存器中,之后HOST主桥依据该寄存器的Bus Number字段,决定是发生Type 00h装备恳求,仍是Type 01h装备恳求。当Bus Number字段为0时,将发生Type 00h装备恳求,由于与HOST主桥直接相连的总线号为0;大于0时,将发生Type 01h装备恳求。
2.4.1 Type 01h和Type 00h装备恳求
本节首要介绍Type 01h装备恳求,并从PCI总线运用的信号线的角度上,叙述HOST主桥怎么生成Type 01装备恳求。在PCI总线中,只要PCI桥能够接纳Type 01h装备恳求。Type 01h装备恳求不能直接发向终究的PCI Agent设备,而只能由PCI桥将其转化为Type 01h持续发向其他PCI桥,或许转化为Type 00h装备恳求发向PCI Agent设备。PCI桥还能够将Type 01h装备恳求转化为Special Cycle总线业务(HOST主桥也能够完成该功用),本节对这种状况不做介绍。
在地址周期中,HOST主桥运用装备读写总线业务,将CONFIG_ADDRESS寄存器的内容复制到PCI总线的AD[31:0]信号线中。CONFIG_ADDRESS寄存器与Type 01h装备恳求的对应联系如图2‑11所示。
从图2‑11中能够发现,CONFIG_ADDRESS寄存器的内容基本上是原封不动的复制到PCI总线的AD[31:0]信号线上的[3]。其间CONFIG_ADDRESS的Enable位不被复制,而AD总线的第0位为有必要为1,表明当时装备恳求是Type 01h。
当PCI总线接纳到Type 01装备恳求时,将寻觅适宜的PCI桥[4]接纳这个装备信息。假如这个装备恳求是直接发向PCI桥下的PCI设备时,PCI桥将接纳个Type 01装备恳求,并将其转化为Type 00h装备恳求;不然PCI桥将当时Type 01h装备恳求原封不动的传递给下一级PCI总线。
假如HOST主桥或许PCI桥建议的是Type 00h装备恳求,CONFIG_ADDRESS寄存器与AD[31:0]的转化如图2‑12所示。
此刻处理器对CONFIG_DATA寄存器进行读写时,处理器将CONFIG_ADDRESS寄存器中的Function Number和Register Number字段复制到PCI的AD总线的第10~2位;将AD总线的第1~0位赋值为0b00。PCI总线在装备恳求总线业务的地址周期依据AD[1:0]判别当时装备恳求是Type 00h仍是Type 01h,假如AD[1:0]等于0b00表明是Type 00h装备恳求,假如AD[1:0]等于0b01表明是Type 01h装备恳求。
而AD[31:11]与CONFIG_ADDRESS的Device Number字段有关,在Type 00h装备恳求的地址周期中,AD[31:11]位有且只要一位为1,其间AD[31:11]的每一位选通一个PCI设备的装备空间。如第1.2.2节所述,PCI设备装备空间的片选信号是IDSEL,因而AD[31:11]将与PCI设备的IDSEL信号对应相连。
当以下两种恳求之一满意时,HOST主桥或许PCI桥将生成Type 00h装备头,并将其发送到指定的PCI总线上。
(1)
(2)
2.4.2 PCI总线配置恳求的转化准则
当CONFIG_ADDRESS寄存器的Enable位为1,系统软件拜访CONFIG_DATA寄存器时,HOST主桥能够发生两类PCI总线配置读写总线业务,分别为Type 00h和Type 01h装备读写总线业务。在装备读写总线业务的地址周期和数据周期中,CONFIG_ADDRESS和CONFIG_DATA寄存器中的数据将被放置到PCI总线的AD总线上。其间Type 00h和Type 01h装备读写总线业务映射到AD总线的数据并不相同。
其间Type 00h装备恳求能够直接读取PCI Agent设备的装备空间,而Type 01h装备恳求在经过PCI桥时,终究将被转化为Type 00h装备恳求,并读取PCI Agent设备的装备寄存器。本节要点叙述PCI桥怎么将Type 01h装备恳求转化为Type 00h装备恳求。
首要Type 00h装备恳求不会被转化成Type 01h装备恳求,由于Type 00h装备恳求是发向终究PCI Agent设备,这些PCI Agent设备不会转发这些装备恳求。
当CONFIG_ADDRESS寄存器的Bus Number字段为0时,处理器对CONFIG_DATA寄存器操作时,HOST主桥将直接发生Type 00h装备恳求,挂接在PCI总线0上的某个设备将经过ID译码接纳这个Type 00h装备恳求,并对装备寄存器进行读写操作。假如PCI总线上没有设备接纳这个Type 00h装备恳求,将引发Master Abort,概况见PCI总线标准,本节对此不做进一步阐明。
假如CONFIG_ADDRESS寄存器的Bus Number字段为n(n≠0),即拜访的PCI设备不是直接挂接在PCI总线0上的,此刻HOST主桥对CONFIG_DATA寄存器操作时,将发生Type 01h装备恳求,PCI总线0将遍历一切在这条总线上的PCI桥,确认由哪个PCI桥接纳这个Type 01h装备恳求。
假如n大于等于某个PCI桥的Secondary Bus Number寄存器,并且小于等于Subordinate Bus number寄存器,那么这个PCI桥将接纳在当时PCI总线上的Type 01装备恳求,并选用以下规矩进行递归处理。
(1)
(2)
(3)
(4)
(5)
下文将举例阐明PCI总线配置恳求的转化准则,并以图2‑8为例阐明处理器怎么拜访PCI设备01和PCI设备31的装备空间。PCI设备01直接与HOST主桥相连,因而HOST主桥能够运用Type 00h装备恳求拜访该设备。
而HOST主桥需求经过多级PCI桥才干拜访PCI设备31,因而HOST主桥需求首要运用Type 01h装备恳求,之后经过PCI桥1、2和3将Type 01h装备恳求转化为Type 00h装备恳求,终究拜访PCI设备31。
1 PCI设备01
这种状况较易处理,当HOST处理器拜访PCI设备01的装备空间时,发现PCI设备01与HOST主桥直接相连,所以将直接运用Type 00h装备恳求拜访该设备的装备空间,具体步骤如下。
首要HOST处理器将CONFIG_ADDRESS寄存器的Enable方位1,Bus Number号置为0,并对该寄存器的Device、Function和Register Number字段赋值。当处理器对CONFIG_DATA寄存器拜访时,HOST主桥将存放在CONFIG_ADDRESS寄存器中的数值,转化为Type 00h装备恳求,并发送到PCI总线0上,PCI设备01将接纳这个Type 00h装备恳求,并与处理器进行装备信息交流。