PCIe扫盲——BDF与配置空间

news/2024/12/27 1:34:18/文章来源:https://www.cnblogs.com/linhaostudy/p/18631214

前面的文章中介绍过,每一个PCIe设备可以只有一个功能(Function),即Fun0。也可以拥有最多8个功能,即多功能设备(Multi-Fun)。不管这个PCIe设备拥有多少个功能,其每一个功能都有一个唯一独立的配置空间(Configuration Space)与之对应

和PCI总线一样,PCIe总线中的每一个功能(Function)都有一个唯一的标识符与之对应。这个标识符就是BDF(Bus,Device,Function),PCIe的配置软件(即Root的应用层,一般是PC)应当有能力识别整个PCIe总线系统的拓扑逻辑,以及其中的每一条总线(Bus),每一个设备(Device)和每一项功能(Function)。

在BDF中,Bus Number占用8位,Device Number占用5位,Function Number占用3位。显然,PCIe总线最多支持256个子总线,每个子总线最多支持32个设备,每个设备最多支持8个功能。

PCIe总线采用的是一种深度优先(Depth First Search)的拓扑算法,且Bus0总是分配给Root Complex。Root中包含有集成的Endpoint和多个端口(Port),每个端口内部都有一个虚拟的PCI-to-PCI桥(P2P),并且这个桥也应有设备号和功能号。

需要注意的是,每个设备必须要有功能0(Fun0),其他的7个功能(Fun1~Fun7)都是可选的。

一个简单的例子如下图所示:

image

注:关于PCIe总线的拓扑逻辑会在后面的文章中进行详细地介绍。

前面的关于PCI总线的文章介绍过PCI总线的配置空间,PCIe总线为了兼容这些PCI设备,几乎完整的保留了PCI总线的配置空间。并将配置空间扩展到4KB,用于支持一些PCIe总线中新的功能,如PCI Express Capability、Power Management和MSI/MSI-X等。

下图是从PCI总线中继承过来的配置空间:

image

下图是PCIe新增的配置空间的示意图:

image

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

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

相关文章

路由器透明代理

​1、下载OpenWrt 找各自路由型号----下载地址:https://firmware-selector.openwrt.org/​ 下载完后我们通过以下步骤让路由器进入刷机模式并准备好刷机:关闭路由器电源 按住复位键并接入电源,此时你会看到电源LED灯变成橙色等闪烁,接着会变为白色灯闪烁,此时可以放开复位…

SpringBoot 集成RabbitMQ

springboot集成MQ 配置文件配置类 发送者 消费者 调用

前端文档生成框架

背景 有时候写项目难免要用到文档框架。VitePress/VuePress 熟悉的vue,不必多说。 https://vitepress.dev/zh/ docsify 28.2k stars https://docsify.js.org/#/ 知名度很高。 docusaurus facebook出品。 https://docusaurus.io/zh-CN/ StoryBook 85k stars https://storybook.…

【YashanDB知识库】通过触发器复制varchar(4000 char)列的数据导致乱码

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802969.html?templateId=1718516 问题现象 某客户在使用触发器将varchar(4000 char)列的数据从表A复制到表B时,表B上列的数据与A上对应列的数据不同且为乱码。 如下截图为A的数据及使用触发器复制…

CMFCToolTipCtrl的AddTool导致内存增加

多次调用CMFCToolTipCtrl的AddTool会导致程序内存不断增加,尤其在循环中,因此需要AddTool之前,先进行判断,如果新文本与旧的不相同,才添加,并且添加之前先删除。需要注意的是,提示文本支持最大长度是MAX_TIP_TEXT_LENGTH.该宏在tooltip.cpp line:22定义,值为1024,文本…

09. 数字选择控件

一、数字选择控件数字选择控件提供了一对上下箭头,用户可以单击箭头选择数字,也可以直接输入。PySide6 中提供的数据选择控件主要有 QSpinBox(整数数字选择控件)和 QDoubleSpinBox(小数数字选择控件)。我们可以在终端中使用 pip 安装 pyside6 模块。 pip install pyside6…

Fiddler v5.0.2专业网络抓包工具简体中文版

点击上方蓝字关注我 前言 Fiddler抓包工具一个非常专业且已经翻译成中文的网络调试帮手。它就像一个超级监视器,能帮你看到电脑和互联网之间所有通过HTTP协议传输的信息。比如,当你在网上冲浪时,它可以记录下你和网站之间交换的所有“小纸条”,比如网页上的小饼干(cookie)…

01Thingsboard中actor和RuleEngine的启动流程

一、基本关系 1、单体服务2、微服务3、创建流程Reference 二、DefaultActorService DefaultActorService是整个规则引擎的初始化入口。 DefaultActorService会初始化一个使用actor模型的规则引擎,共分为2步:①创建actorSystem; ②处理应用初始化完成事件1、创建actorSystem …

这个安装文件包,运行SETUP,报错,怎么解决?

大家好,我是Python进阶者。 一、前言 前几天在Python最强王者交流群【小歌】问了一个Python代码调试的问题。问题如下:SETUP.Py在notebook条件下运行,报错信息,谁能指导下不?:) 二、实现过程 这里【瑜亮老师】给了一个指导,如下所示:@小歌 报错说没找到那个txt文件,…

jExcel-类似Excel的jquery电子表格插件

jexcel.js是一款轻量级的类似Excel的jquery电子表格插件。你可以同js数组、json数据或CSV文件来为jexcel表格提供数据,你甚至可以直接从一个Excel表格中直接复制粘贴数据到jexcel表格中。在线预览 下载使用方法 在页面中引入jquery、jquery.jexcel.js和jquery.jexcel.css文件…