PCI 总线树BUS 号

在一个处理器系统中,每一个host 主桥都推出一棵PCI 总线树。 一棵PCI 总线树中有多少个PCIB bridge , 就含有多少条PCI 总线。 系统软件在遍历当前PCI 总线树时,需要首先对这些PCI 总线进行编号,即初始化PCI 桥的primary, secondary 和Subordinate bus number 寄存器。

在一个处理器系统中,一般将与host 主桥直接相连的pci 总线命名为pci 总线0, 然后系统软件使用dfs( depth first search) 算法,依次对其他pci 总线进行编号。值得注意的是,与host 主桥直接相连的pci 总线,其编号都为0, 因此当处理器系统中存在多个host主桥时,将有多个编号为0 的pci 总线。 但是这些编号为0的pci 总线分属不同的pci 总线域, 其含义并不相同。

 在一个处理器系统中,假设pci 总线树的结构如图所示,

在pci 总线中, 系统软件使用深度优先算法对PCI 总线树进行遍历,DFS 算法和广度优先BFS( breath First Searth) 算法是遍历树型结构的常用算法。与bfs 算法相比,dfs 算法的空间复杂度较低, 因此绝大多数系统在遍历pci 总线树时,都使用DFS 算法而不是BFS 算法。

DFS 算法是搜索算法的一种,其实现机制是沿着一棵树的深度遍历各个节点,并尽可能深地搜索树的分支, DFS 的算法为线性时间复杂度。适合对拓扑结构未知的树进行遍历。 在一个处理器系统的初始化阶段。PCI 总线树的拓扑结构是未知的, 适合使用DFS 算法进行遍历, 

1, host 主桥扫描pci 总线0 上的设备, 系统软件首先忽略这条总线上的所有pci agent 设备,因为在这些设备之下不会挂接新的pci 总线。 

2,host 主桥首先发现pci 桥1, 并将pci 桥1的secondary bus 命名为pci 总线1. 系统软件将初始化pci 桥1 的配置空间, 将pci 1 的primary bus number 寄存器赋值为0. 而将secondary bus number 寄存器赋值为1, 即pci 桥1 的上游pci 总线号为0, 而下游pci 总线号为1.

3, 扫描pci 总线1, 发现pci 桥2, 并将pci 桥2 的secondary bus 命名为pci 总线2, 系统软件将初始化pci 桥2的配置空间, 将pci 桥2 的primary bus number 寄存器赋值为1, 而将secondary bus number 寄存器赋值为2.

pci 总线device 号的分配

一条pci 总线会挂接各种各样的Pci 设备,而每一个pci 设备在pci 总线下具有唯一的设备号。系统软件通过总线号和设备各定位一个pci 设备之后,才能访问这个pci 设备的配置寄存器。值得注意的是,系统软件使用“地址寻址方式” 访问pci 设备的存储器和i/o 地址空间,这与访问配置空间使用的"id寻址方式”不同。

pci 设备的idsel 信号与pci 总线的ad [31:0] 信号的连接关系决定了该设备在这个pci 总线的设备号。 如上文所述,每一个pci 设备都使用独立的idsel 信号,该信号将与pci总线的ad[31:0] 信号连接。

pci 总线事务由一个地址周期加若干个数据周期组成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/42529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++自学: virtual function

使用virtual关键字在base class中声明virtual function。你可以使用指针在derived class中调用和执行virtual function。 “virtual void MakeSound() 0;”这是一个pure virtual function。 有至少一个pure virtual function的class称为abstract class,所以Instr…

策略梯度方法

策略梯度方法 数学背景 给定一个标量函数 J ( θ ) J\left(\theta\right) J(θ),利用梯度上升法,使其最大化,此时的 π θ \pi_\theta πθ​就是最优策略。 θ t 1 θ t α ∇ θ J ( θ t ) \theta_{t1}\theta_t\alpha \nabla_\theta…

Element Plus el-table 数据为空时自定义内容【默认为 No Data】

1. 通过 Table 属性设置 <div class"el-plus-table"><el-table empty-text"暂无数据" :data"tableData" style"width: 100%"><el-table-column prop"date" label"Date" width"180" /&g…

系统架构设计师---OSI七层协议

目录 OSI七层协议 各层主要功能和详细说明 Internet协议的主要协议及其层次关系

常用的请求 Content-Type 类型

application/json&#xff1a;用于发送 JSON 格式的数据&#xff0c;常用于 RESTful API 请求中。 application/x-www-form-urlencoded&#xff1a;在 POST 请求中以 URL 编码(key-value 对)的方式发送表单数据。 multipart/form-data&#xff1a;用于同时上传文件和其他表单…

vue + el-table 表格数据导出为excel表格

下载依赖 npm install --save xlsx file-saver引入插件 import * as XLSX from xlsx; import FileSaver from "file-saver";完整代码 <template><div class"administrativeCase-container"><div class"content-box"><di…

Java后端实现不用pagehelper。手写分页如何实现?

Java后端实现不用pagehelper。手写分页如何实现? 如果你不使用PageHelper这样的分页插件&#xff0c;你可以手动实现分页逻辑。下面是一个使用Java后端手写分页的示例&#xff1a; 首先&#xff0c;确定每页显示的数据量和当前页码。 int pageSize 10; // 每页显示的数据量…

移动通信系统的LMS自适应波束成形技术matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................... idxx0; while idxx&…

Spring Bean的生命周期总结(包含面试题)

目录 一、Bean的初始化过程 1. 加载Spring Bean 2. 解析Bean的定义 3. Bean属性定义 4. BeanFactoryPostProcessor 扩展接口 5. 实例化Bean对象 6. Aware感知 7. 初始化方法 8. 后置处理 9. destroy 销毁 二、Bean的单例与多例模式 2.1 单例模式&#xff08;Sin…

游戏不再只是娱乐,更成为了一种学习和成长的途径

随着科技的飞速发展和游戏设计的创新&#xff0c;当下的游戏行业正经历着前所未有的繁荣时代。各种各样的游戏类型在不断涌现&#xff0c;为玩家们带来了丰富多彩的娱乐体验。这些火热的游戏类型不仅改变了我们的娱乐方式&#xff0c;还在无形中影响了我们的生活。 多元游戏类…

2023河南萌新联赛第(六)场:河南理工大学-F 爱睡大觉的小C

2023河南萌新联赛第&#xff08;六&#xff09;场&#xff1a;河南理工大学-F 爱睡大觉的小C https://ac.nowcoder.com/acm/contest/63602/F 文章目录 2023河南萌新联赛第&#xff08;六&#xff09;场&#xff1a;河南理工大学-F 爱睡大觉的小C题意解题思路 题意 新学期的概…

大数据平台中元数据库—MySQL的异常故障解决

本文的主要目标是解决大数据平台中元数据库MySQL的异常故障。通过分析应用响应缓慢的问题&#xff0c;找到了集群组件HIVE和元数据库MySQL的原因。通过日志分析、工具检测和专家指导等一系列方法&#xff0c; 最终确定问题的根源是大数据集群中租户的不规范使用所导致&#xff…

[Unity]Lua本地时间、倒计时和正计时。

惯例&#xff0c;直接上代码&#xff1a; --正计时开始时的时间戳 self.begin_time os.time() --倒计时时长&#xff0c;01:30:00 self.countdown_time 5400 --是否开始计时 self.is_update_local_time true--Unity Update function time_transition:update_local_timer()i…

Linux学习之iptables过滤规则的使用

cat /etc/redhat-release看到操作系统是CentOS Linux release 7.6.1810&#xff0c;uname -r看到内核版本是3.10.0-957.el7.x86_64&#xff0c;iptables --version可以看到iptables版本是v1.4.21。 iptables -t filter -A INPUT -s 10.0.0.8 -j ACCEPT会在最后一行插入。 10…

代码随想录day52

300最长递增子序列 class Solution { public:int lengthOfLIS(vector<int>& nums) {int piles 0; // 牌堆数初始化为 0vector<int> top(nums.size()); // 牌堆数组 topfor (int i 0; i < nums.size(); i) {int poker nums[i]; int left 0, right…

04 qt功能类、对话框类和文件操作

一 QT中时间和日期 时间 ---- QTime日期 ---- QDate对于Qt而言,在实际的开发过程中, 1)开发者可能知道所要使用的类 ---- >帮助手册 —>索引 -->直接输入类名进行查找 2)开发者可能不知道所要使用的类,只知道开发需求文档 ----> 帮助 手册,按下图操作: 1 …

Android 13像Settings一样获取SIM卡信息

一.背景 由于客户定制的Settings里面需要获取到SIM卡信息,所以需要实现此功能。 目录 一.背景 二.前提条件 三.调用api 二.前提条件 首先应用肯定要是系统应用,并且导入framework.jar包,具体可以参考: Android 应用自动开启辅助(无障碍)功能并使用辅助(无障碍)功能_…

python中的cnn:介绍和基本使用方法

python中的cnn&#xff1a;介绍和基本使用方法 卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;简称CNN&#xff09;是一种在图像识别、语音识别、自然语言处理等许多领域取得显著成功的深度学习模型。CNN的设计灵感来源于生物的视觉系统&#xff0c;由多…

WordPress更换域名后-后台无法进入,网站模版错乱,css失效,网页中图片不显示。完整解决方案(含宝塔设置)

我在实际解决问题时用到了 【简单暴力解决方案】的《方法一&#xff1a;修改wp-config.php》 和 【简单暴力-且特别粗暴-的解决方案】 更换域名时经常遇到的几个问题&#xff1a; 1、更换域名后&#xff0c;后台无法进入 2、更换域名后&#xff0c;网站模版错乱&#xff0c;c…

网络通信原理网络层TCP/IP协议(第四十三课)

1.什么是TCP/IP 目前应用广泛的网络通信协议集 国际互联网上电脑相互通信的规则、约定。 2.主机通信的三要素 IP地址:用来标识一个节点的网络地址(区分网络中电脑身份的地址,如人有名字) 子网掩码:配合IP地址确定网络号 IP路由:网关的地址,网络的出口 3.IP地址 …