当前位置: 首页 > news >正文

《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(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的配置空间。

http://www.lryc.cn/news/284882.html

相关文章:

  • 大数据前馈神经网络解密:深入理解人工智能的基石
  • 【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)
  • vue3中状态管理库pinia的安装和使用方法介绍及和vuex的区别
  • 领略指针之妙
  • 迭代器模式介绍
  • 算法每日一题: 最大字符串匹配数目 | 哈希 | 哈希表 | 题意分析
  • 自然语言处理(Natural Language Processing,NLP)解密
  • 【DevOps-08-5】目标服务器准备脚本,并基于Harbor的最终部署
  • 用Java实现01背包问题 用贪心算法
  • JUC并发编程-8锁现象
  • 集美大学“第15届蓝桥杯大赛(软件类)“校内选拔赛 D矩阵选数
  • Android System Service系统服务--1
  • 【RT-DETR有效改进】华为 | Ghostnetv1一种专为移动端设计的特征提取网络
  • 45个经典Linux面试题!赶紧收藏!
  • 将字符串中可能被视为正则表达式的特殊字符进行转义re.escape()
  • C语言:函数指针的使用
  • 「实战应用」如何用DHTMLX Gantt构建类似JIRA式的项目路线图(二)
  • Webpack5入门到原理18:Plugin 原理
  • PWM之舵机
  • Python并发与多线程:IO并发(阻塞IO、非阻塞IO、IO多路复用、异步IO)
  • React16源码: React中的IndeterminateComponent的源码实现
  • SpringBoot:详解Bean生命周期和作用域
  • 【图解数据结构】顺序表实战指南:手把手教你详细实现(超详细解析)
  • WordPress怎么禁用文章和页面古腾堡块编辑器?如何恢复经典小工具?
  • 【HarmonyOS】掌握布局组件,提升应用体验
  • 第4周:Pytorch——综合应用和实战项目 Day 28-30: 学习资源和社区参与
  • TypeScript教程(一)在vscode中的配置TypeScript环境
  • sshpass的安装与使用
  • Excel·VBA合并工作簿2
  • linux内核原理--分页,页表,内核线性地址空间,伙伴系统,内核不连续页框分配,内核态小块内存分配器