PCIe基础知识

news2024/9/29 17:34:20

PCI基础知识
PCI总线的组成:HOST桥、PCI桥、PCI设备
PCI采用的是树型拓扑结构,每一个PCI device相当于树的一个结点或者叶子,对整个PCI Bus的遍历可以采用遍历树的算法,在对树进行遍历之后,可以获得整个PCI Bus的资源需求情况,从而进行统一的分配。
PCI总线上有多个设备,当他们需要通信时,都必须向PCI总线仲裁器提出申请,当得到允许后才能在总线中发送数据
PCI总线上的设备可以通过四根中断请求信号INTA INTB INTC INTD向处理器发出中断请求;其中INTA是单功能设备,其他的是多功能设备
总线x1上的通讯和总线x2上的通讯无关,同一条总线上的设备可以自由通讯
PCI总线操作的一具典型的特点就是支持BURST传输。什么是BURST传输呢?首先你得知道PCI的数据总线和地址总线是复用的。这就是说在同样的总线上,一段时间是地址,一段时间是传输数据。如果没有BURST传输,那么完成一次数据传输之前都得发一次地址,这就是总线有一半的时间都在传地址,这使得总线和利用率很低。有了BURST传输,可以先发一个起始地址和数据长度N, 之后传输数据0~N-1就可以直接发数据,不用再发地址了。
PCI总线32位中,第一个16位表示域,第二个8位表示一个总线编号,第三个5位表示一个设备号,最后是3位,表示功能号。
在系统引导阶段,PCI硬件设备保持未激活状态,但每个PCI主板均配备有能够处理PCI的固件,固件通过读写PCI控制器中的寄存器,提供了对设备配置地址空间的访问。
HOST桥
HOST主桥是用来隔离处理器的存储器域与PCI总线域的特殊桥片,管理PCI总线域。在其所管理的PCI设备中所有设备的配置空间都由HOST主桥通过配置读写总线周期访问的
PCI总线上的设备都有自己的设备地址,处理器空间地址和PCI总线地址通过HOST主桥进行隔离。(HOST主桥中有很多的寄存器,可以使得处理器工作的频率和总线工作的频率不一样,通过寄存器缓存数据,当处理器需要访问PCI设备时,需要通过HOST主桥进行地址转换,把处理器地址转换成PCI总线地址,然后才能访问PCI设备;同理,PCI设备中的数据要想往外走,也要通过HOST主桥进行地址转换。说到底,HOST主桥就是一个桥梁)
同一HOST桥中的设备可以通讯(HOST主桥可以通过设置Inbound寄存器来让不同的PCI总线域中的设备进行通讯)
上游总线就是PCI桥靠近HOST主桥的一端总线、下游总线就是另外一端总线
在一个处理器系统中,有几个HOST主桥,就有几个PCI总线域。
PCI桥
PCI桥是PCI总线的一个重要组成部件,该部件的存在使得PCI总线极具拓展性。
PCI的可扩展性指的是PCI总线上可以挂个PCI桥,然后PCI桥会推出另一条PCI总线,PCI总线上又可以挂载PCI桥,再推出PCI总线…(但是,PCI总线以HOST主桥为树根,连接的设备上限为256,其中包括HOST桥和PCI桥
PCI桥的作用可以隔离PCI设备,不影响各条总线的带宽
如果PCI桥出现问题,那么PCI桥下的设备之间可以自由通讯但是无法将数据发送到外面
PCI设备
PCI Agent设备:一个PCI设备既可以是主设备也可以是从设备,但是在同一个时刻,这个PCI设备或者为主设备或者为从设备。PCI总线规范将PCI主从设备统称为PCI Agent设备。
PCI设备的地址可以由系统软件动态分配,解决了地址冲突。(每个PCI设备有一个独立的配置空间,里面有设备在总线上的地址;注:PCI桥的配置空间中有其PCI子树使用的地址范围)
PCI设备与存储器直接进行数据交换的过程也被称为DMA。PCI总线进行DMA操作时,需要得到数据的大小和目的地址(PCI总线域的物理地址,HOST主桥会负责地址转换)
PCI设备配置地址空间的前64字节是标准化的,它提供了厂商号,设备号,版本号等信息,唯一标识一个PCI设备。

PCIe基础知识
pcie全称叫做:Peripheral Component Interconnect(外围组件互联),属于局部总线,主要功能就是连接外围设备
pcie的组成有:RC(根节点)、siwtch(pcie桥)、EP(设备)
pcie总线有独立的地址空间,所以CPU想要通过pcie访问外围设备,需要对pcie的地址空间进行映射
pcie分多版本的,x1、x2、x4、x8、x16…各级之间传输速率呈倍数增加,但价格也呈倍增加。PCI-E的接口根据总线位宽不同而有所差异,包括X1、X4、X8以及X16,而X2模式将用于内部接口而非插槽模式。
pcie传输和网络类似封装成包,有协议栈。
pcie使用端到端的连接方式,正常设备与设备之间只能连接一个,但通过pcie桥可以扩展。
PCI是并行总线;PCI-X是并行总线;PCIe是高速差分总线
高速差分总线替代并行总线是大势所趋。在这里插入图片描述

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

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

相关文章

海外抖音Tiktok强势来袭,有些人半年赚别人十倍工资

TikTok作为一款流行的短视频社交应用程序,确实在全球范围内取得了很大的成功。许多人通过在TikTok上分享有趣、创意或有吸引力的视频内容,获得了广泛的关注和认可。一些用户甚至能够通过TikTok赚取高额的收入,远远超过传统职业所能获得的工资…

[C++笔记]二叉搜索树

BSTree.h #pragma oncenamespace key {template<class K>//这里习惯用K而不是T&#xff0c;keystruct BSTreeNode {BSTreeNode<K>* _left;BSTreeNode<K>* _right;K _key;BSTreeNode(const K& key):_left(nullptr), _right(nullptr), _key(key){}};templ…

Hbuilder折叠代码时显示最后一行

之前写pc端代码时&#xff0c;都是使用vscode&#xff0c;里面的折叠代码&#xff0c;都是将开头和尾部中间的内容折叠起来&#xff0c;这样复制或者删除操作代码时&#xff0c;都很顺手&#xff0c;但是最近要用Hbuilder写移动端&#xff0c;它默认的折叠代码方式&#xff0c;…

Java的第十五篇文章——网络编程(后期再学一遍)

目录 学习目的 1. 对象的序列化 1.1 ObjectOutputStream 对象的序列化 1.2 ObjectInputStream 对象的反序列化 2. 软件结构 2.1 网络通信协议 2.1.1 TCP/IP协议参考模型 2.1.2 TCP与UDP协议 2.2 网络编程三要素 2.3 端口号 3. InetAddress类 4. Socket 5. TCP网络…

ShardingSphere-Proxy绑定表与广播表详解与实战

&#x1f680; ShardingSphere &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&…

【雕爷学编程】MicroPython动手做(13)——掌控板之RGB三色灯

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

STM32 UDS Bootloader开发-上位机篇-CANoe制作(2)

文章目录 前言CANoe增加NodeCAPL脚本获取GUI中的参数刷写过程诊断仪在线接收回调函数发送函数总结前言 在上一篇文章中,介绍了UDS Bootloadaer上位机软件基于CANoe的界面设计。本文继续介绍CAPL脚本的编写以实现刷写过程。 CANoe增加Node 在开始编写CAPL之前,需要在Simula…

UE4/5C++多线程插件制作(十九、异步资源读取封装,细节修改)

MTPResourceLoadManage 接口 MTPThreadInterface 添加头文件: #include "Engine/StreamableManager.h" cpp class IStreamableContainer { public:virtual ~IStreamableContainer(){}//异步//存储路径IStreamableContainer& operator>>(const TArray…

JVM | 基于类加载的一次完全实践

引言 我在上篇文章&#xff1a;JVM | 类加载是怎么工作的 中为你介绍了Java的类加载器及其工作原理。我们简单回顾下&#xff1a;我用一个易于理解的类比带你逐步理解了类加载的流程和主要角色&#xff1a;引导类加载器&#xff0c;扩展类加载器和应用类加载器。并带你深入了解…

BCNet论文精读

Title—标题 Boundary Constraint Network&#xff08;边界约束网络&#xff09; With Cross Layer Feature Integration&#xff08;跨层特征融合&#xff09; for Polyp Segmentation&#xff08;息肉分割&#xff09; 结构分析 标题结构由三部分组成&#xff0c;分别是本文…

java static修饰的静态成员

静态成员 特点&#xff1a; 1.静态成员可以被本类所有对象共享2.静态成员可以通过类名调用也可以推荐对象调用&#xff0c;但是推荐使用类名调用&#xff01;3.静态成员随着类的加载而加载&#xff0c;优先于对象存在的静态方法的注意事项&#xff1a; 1.非静态方法可以访问任…

SpringBoot运维

能够掌握SpringBoot程序多环境开发 能够基于Linux系统发布SpringBoot工程 能够解决线上灵活配置SpringBoot工程的需求 Windows打包运行 你的电脑不可能一直开着机联网作为服务器&#xff1a; 我们将我们项目打包放到外部的服务器上&#xff0c;这样其他用户才能正常访问&#x…

从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router、抽取全局配置文件】

从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router】 本期主要完成对Server的搭建、封装连接与业务绑定、实现基础Router&#xff08;处理业务的部分&#xff09;、抽取框架的全局配置文件 从配置文件中读取数据&#xff08;服务器监听端口、监听IP等&a…

《TCP IP网络编程》第十二章

第 12 章 I/O 复用 12.1 基于 I/O 复用的服务器端 多进程服务端的缺点和解决方法&#xff1a; 为了构建并发服务器&#xff0c;只要有客户端连接请求就会创建新进程。这的确是实际操作中采用的一种方案&#xff0c;但并非十全十美&#xff0c;因为创建进程要付出很大的代价。…

CK_03靶机详解

CK_03靶机详解 靶场下载地址&#xff1a;https://download.vulnhub.com/ck/MyFileServer_3.zip 这个靶机开放的端口特别多&#xff0c;所以给我们的误导也很多&#xff0c;我直接按照正确的思路来。 因为开着445所以就枚举了一下靶机上共享的东西&#xff0c;发现两个share的…

MTK联发科安卓核心板MT8385(Genio 500)规格参数资料_性能介绍

简介 MT8385安卓核心板 是一个高度集成且功能强大的物联网平台&#xff0c;具有以下主要特性&#xff1a; l 四核 Arm Cortex-A73 处理器 l 四核Arm Cortex-A53处理器 l Arm Mali™-G72 MP3 3D 图形加速器 (GPU)&#xff0c;带有 Vulkan 1.0、OpenGL ES 3.2 和 OpenCL™ 2.x …

【SpringCloud Alibaba】(六)使用 Sentinel 实现服务限流与容错

今天&#xff0c;我们就使用 Sentinel 实现接口的限流&#xff0c;并使用 Feign 整合 Sentinel 实现服务容错的功能&#xff0c;让我们体验下微服务使用了服务容错功能的效果。 因为内容仅仅围绕着 SpringCloud Alibaba技术栈展开&#xff0c;所以&#xff0c;这里我们使用的服…

.sql文件导入MySQL

命令行导入 source E:\data.sql图形化界面导入 选择.sql文件路径开始。 推荐使用命令行导入&#xff01;&#xff01;&#xff01;

matplotlib——3. 绘制分布(scatter+hist)

文章目录 1. matplotlib实现1.1 效果1.2 代码 2. seaborn实现2.1 效果2.2 代码 左图是matplotlib的结果&#xff0c;右图是seaborn的结果 1. matplotlib实现 1.1 效果 效果&#xff1a;&#xff08;二维正态分布的散点图每个轴的直方图&#xff09; 1.2 代码 import nump…

关于Anaconda环境配置的一些问题

文章目录 一、关于package文件安装位置二、关于尝试下载Python包时出现的CondaSSLError三、配置环境的整个流程四、如何在Jupyter中打开任意位置的文件夹五、如何在Jupyter对应的环境中安装包 一、关于package文件安装位置 package 文件安装在envs目录底下的Lib中&#xff0c;可…