PCIe 规范核心知识线介绍

0,总体Topology

x86 处理器系统中 PCIe的拓扑结构:

PCIe Switch的总体结构

1,PCIe 枚举

BIOS 负责枚举与分派配置设备的 BusID[7:0] : DeviceID[4:0] : FunctionID[2:0];

cpu先识别 Host-PCI-Bridge,其下是Bus0;

在Host-PCI-Bridge 的Bus0下会链接几个固定的 Virtual P2P 节点,CPU出厂前就定义完了,融合在 CPU 的 RootComplex中,类似集成了几个以前的pci桥。

第一个 Virtual下边是Bus1,Bus1下可以链接一个EP或者也给PCIe-SWITCH,内含多个 Virtual P2P,每个P2P都可以延伸出一条 Bus,每个Bus下面要么挂一个EP,要么挂一个PCIe-SWITH,l来衍生出更多Bus。

cpu通过挨家挨户虚拟敲门的方式来探测BUS和其下之设备或总线的存在的可能性。

探测存在后,cpu在根据策略来分配 BUS-id,Device-id,Function-id等,通过配置事务传递对应的PCIe实体,它们会记住自己的id。

这是一个深度优先的过程。

下边是一个分配好配置信息的Xilin的FPGA板卡的信息,使用TeleScanPE软件在Linux上采集了内核的相关的PCIe信息。

2,PCIe 设备 Type0 配置空间

作用:用于EP的描述,每个PCIe的设备的每个Function包含一个Type0的配置空间。

读了Type0的值之后,便可以知道这个设备的功能的类属:网卡,显卡,声卡,。。。这由PCI-SIG来分类定义,参考规范:

《PCI Local Bus Specification Revision 3.0》

《PCI Code and ID Assignment Specification》

必须由RC来读写 Function的 Type0的寄存器。

其配置寄存器信息如下,每个Function 对应一张这样的寄存器        空间表:

还有256 Bytes 之后的扩展配置空间,可以加入一些产品个性化的配置信息:

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

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

相关文章

Django中模型的基于类的混入

在Django中,模型的基于类的混入(Class-Based Mixin)是一种设计模式,用于将可重用的功能添加到模型类中。 混入类通常包含一些通用的行为、方法或属性,可以被多个模型共享。通过继承这些混入类,可以使模型具…

树莓派学习笔记18:IIC驱动_PCA9685(16路舵机驱动模块)误发

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: ​ Python 版本3.7.3: ​ IIC驱动_PCA9685(16路舵机驱动模块) 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 开启树莓…

什么是 HTTP POST 请求?初学者指南与示范

在现代网络开发领域,理解并应用 HTTP 请求 方法是基本的要求,其中 "POST" 方法扮演着关键角色。 理解 POST 方法 POST 方法属于 HTTP 协议的一部分,主旨在于向服务器发送数据以执行资源的创建或更新。它与 GET 方法区分开来&…

【linux】内核摸索心得

1、内核运行很快打印日志的位置要注意,平时运行linux是不显示日志的,但是要学习内核运行细节,则需要打开 2、内核代码量大阅读困难,有很多代码文件都是几大千行代码乃至更多 3、代码分支多阅读容易走偏 4、代码中宏的定义错宗复…

深入WebKit:揭秘复杂文档的高效渲染之道

深入WebKit:揭秘复杂文档的高效渲染之道 在当今信息爆炸的时代,网页不再仅仅是简单的文本和图片的集合,而是充满了复杂布局和丰富媒体内容的交互式平台。WebKit 作为众多流行浏览器的心脏,其布局引擎承担着将 HTML、CSS 代码转换…

html+JavaScript+css 24点计算器

源代码 采用穷举计算方法 讲人话&#xff1a;根据四个数随机列算式&#xff0c;算出来是24就显示在列表里。 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content&…

尚硅谷 一 JS简介

一 JS简介 1.1 JS起源 Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言&#xff0c;主要目的是为了解决服务器端语言&#xff0c;遗留的速度问题&#xff0c;为客户提供更流畅的浏览效果。当时服务端需要…

vue3+vue-router+vite 实现动态路由

文章中出现的代码是演示版本&#xff0c;仅供参考&#xff0c;实际的业务需求会更加复杂 什么是动态路由 什么场景会用到动态路由 举一个最常见的例子&#xff0c;比如说我们要开发一个后台管理系统&#xff0c;一般来说后台管理系统都会分角色登录&#xff0c;这个时候也就涉…

第4章 课程发布:模块需求分析,课程预览(模板引擎 静态页面),课程审核,课程发布(分布式事务,页面静态化:熔断降级),课程搜索(es索引)

1 模块需求分析 1.1 模块介绍 课程信息编辑完毕即可发布课程&#xff0c;发布课程相当于一个确认操作&#xff0c;课程发布后学习者在网站可以搜索到课程&#xff0c;然后查看课程的详细信息&#xff0c;进一步选课、支付、在线学习。 下边是课程编辑与发布的整体流程&#…

一.2.(1)双极型晶体三极管的结构、工作原理、特性曲线及主要参数

1.双极型晶体三极管的结构 学会区分P管和N管&#xff0c;会绘制符号 2.工作原理 无论是PNP 还是NPN&#xff0c;本质上放大时&#xff0c;都是发射结正偏&#xff0c;集电极反偏。&#xff08;可以简单理解为pn为二极管&#xff0c;每个三极管都有两个二极管&#xff09; 其中电…

pcl::visualization::PCLVisualizer保存当前点云显示的视角,下次启动时加载(踩坑)

1. PCLVisualizer显示点云时视角保存需求 看似一个很简单的需求,就是们在界面显示点云后,人为操作鼠标(旋转,平移,缩放)后使得点云显示的视角与比例刚好符合实际需求。 那么,不由得就会想把这个调节好后的视角保存下来,当下次程序启动或者使用过程中,直接让点云显示…

前端面试题22(js中sort常见的用法)

JavaScript 的 sort() 方法是数组的一个非常强大的功能&#xff0c;用于对数组的元素进行排序。这个方法直接修改原数组&#xff0c;并返回排序后的数组。sort() 的默认行为是将数组元素转换为字符串&#xff0c;然后按照字符串的 Unicode 字典顺序进行排序。这意味着如果你试图…

什么是JDBC

JDBC&#xff08;Java Database Connectivity&#xff09;是Java语言用于连接和操作数据库的一个标准API。它提供了一种统一的方法来访问不同的数据库系统&#xff0c;使得Java程序能够与数据库进行交互&#xff0c;执行SQL语句&#xff0c;并处理查询结果。 JDBC由一组Java类…

Linux内存管理--系列文章柒——硬件架构

一、引子 之前文章讲解的是系统的虚拟内存&#xff0c;本章讲述这些硬件的架构和系统怎样统一管理这些硬件的。 二、物理内存模型 物理内存模型描述了计算机系统中的物理内存如何由操作系统组织和管理。它定义了物理内存如何划分为单元&#xff0c;如何寻址这些单元以及如何…

powershell美化工具Oh My Posh安装教程

1. 安装Oh My Posh 进入Oh My Posh官网&#xff0c;可根据不同平台进行下载 windows下可以直接在微软商店下载 2. 安装Nerd Fonts字体 进入Nerd Fonts官网&#xff0c;选择自己喜欢的字体下载解压后&#xff0c;全选所有文件&#xff0c;右键选择安装即可&#xff08;忽略LICEN…

WordPress回复评论自动添加@评论者

久以前有朋友反应&#xff0c;回复了却没有接到通知&#xff01;今天小编分享一款关于WordPress回复评论自动添加评论者的代码&#xff0c;以后大家留言的时候&#xff0c;只有被回复就会自动你了哟&#xff0c;在这里也感谢大家的支持 教程开始将一下代码添加到当前模板函数 (…

Spring如何解决循环依赖问题

在 Spring 框架中,循环依赖问题(Circular Dependency)是指多个 Bean 之间存在互相依赖的情况。Spring 容器通过一些机制来解决循环依赖问题,以确保应用程序的正常启动和运行。 1. 什么是循环依赖? 循环依赖是指两个或多个 Bean 之间存在互相依赖的关系。例如,Bean A 依…

Qt调用Matlab(一)

目录 1 概述2 创建Qt工程2.1 增加Matlab支持3 调用Matlab3.1 widget.h3.2 widget.cpp4 运行4.1 配置4.2 运行1 概述 MATLAB是MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域…

【matlab】分类回归——智能优化算法极限学习机

目录 引言 基本原理 主要特点 应用领域 发展趋势 智能优化算法——蜣螂优化算法&#xff08;DBO&#xff09; 算法原理 算法特点 应用前景 代码实现 ELM训练函数——elmtrain 函数 ELM预测函数——elmpredict 函数 适应度函数 主函数 引言 极限学习机&#xff08;…

ARM_Linux驱动开发——字符设备驱动开发(上)

目录 一、Linux驱动开发思维 二、Linux驱动开发分类 三、“ ARM_Linux驱动开发——字符设备驱动开发 ” 字符设备驱动简介 前言 在分享Linux驱动开发之前&#xff0c;我想带大家首先回顾一下裸机驱动开发和Linux驱动开发的区别。 1、运行环境和操作系统&#xff1a; 裸机驱…