《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(21)

发布时间:2024年01月21日

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(20)

2.4 PCI总线的配置

PCI总线定义了两类配置请求,一个是Type 00h配置请求,另一个是Type 01h配置请求。PCI总线使用这些配置请求访问PCI总线树上的设备配置空间,包括PCI桥和PCI Agent设备的配置空间。

其中,HOST主桥或者PCI桥使用Type 00h配置请求,来访问与HOST主桥或者PCI桥直接相连的PCI Agent设备或者PCI桥(此时PCI桥作为一个PCI设备,接收访问其配置空间的读写请求);而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。也就是说,最终Type 01h配置请求(都)将会被转换为Type 00h配置请求,然后再访问PCI Agent设备。

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)遍历当前PCI总线的所有PCI桥;

3)如果n等于某个PCI桥的Secondary Bus Number寄存器,说明这个Type 01h配置请求的目标设备直接连接在该PCI桥的Secondary bus上。此时PCI桥将Type 01h配置请求转换为Type 00h配置请求,并将这个配置请求发送到PCI桥的Secondary Bus上Secondary Bus上的某个设备将响应这个Type 00h配置请求,并与HOST主桥进行配置信息的交换,转5)。

4)如果n大于PCI桥的Secondary Bus Number寄存器,而且小于等于PCI桥的Subordinate Bus number寄存器,说明这个Type 01配置请求的目标设备不与该PCI桥的Secondary Bus直接相连,但是由这个PCI桥下游总线上的某个PCI桥管理。此时PCI桥将首先认领这个Type 01配置请求,并将其转发到Secondary Bus,转j=2)。

5)结束。

流程图如下:

下一回将举例说明PCI总线配置请求的转换原则,并以图2-8为例说明处理器如何访问PCI设备01和PCI设备31的配置空间。

文章来源:https://blog.csdn.net/phmatthaus/article/details/135725701
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。