pcie基础知识

文章目录

    • 总线
    • PCIE
      • PCIE对应版本速率
      • pcie拓扑
      • linux查看pcie设备
      • PCIE配置空间
      • BAR(基地址寄存器)

总线

什么是总线
总线就是电脑内部交互的通道。
最开始CPU连接声卡或者网卡用的是不同接口,比如你声卡坏了,换一个声卡,接口不一样了,就无法连接到cpu使用。
为了解决这个问题,IBM和intel就定义了一个标准,统一cpu连接外设接口,这样就可以随意替换了。
总线标准的演进:ISA总线 -> pci总线(并行) -> pcie

并行总线需要照顾同批数据的传输,所以速率并不比串行总线快
串行总线频率很高,当前都换成串行总线了
比喻可以对比散弹枪和机关枪

PCIE

PCIE是总线标准,CPU和外设连接的总线,他已成为计算机的标准总线,主要用于连接外设(声卡,网卡,显卡)。

PCIE点对点,cpu和endpoint都一条独立链路连接。
pcie速率很快,pcie接口一般插显卡,也可以插无线网卡,固态硬盘,等其他硬件,以及转换成USB接口。
PCI总线是一种地址和数据复用的总线,即地址和数据占用同一组信号线AD

PCIE对应版本速率

在这里插入图片描述

pcie拓扑

在这里插入图片描述

CPU+RC,对外可提供多个PCIE接口;这个PCIE接口,可以接EP设备、PCI桥、Switch设备;

RC:root complex, 根桥作为cpu和pcie的媒介,是用于将一个PCIE接口拓展成多个PCIE接口,区别是RC集成在芯片内部,并且还会连接内存;

Switch: 用于拓展PCIE接口,PCIE是串行接口,所以一个PCIE接口只能接一个PCIE设备,想要多接几个PCIE设备就需要用到Switch设备,起到数据转发的作用;可以理解为usb的扩展坞,连接其他PCIE

EP就是终端设备,没有转发数据的功能,比如说GPU

linux查看pcie设备

在这里插入图片描述在这里插入图片描述

PCIE配置空间

每一个PCIe设备可以只有一个功能(Function),即Fun0。也可以拥有最多8个功能,即多功能设备(Multi-Fun)。
每个设备必须要有功能0(Fun0),其他的7个功能(Fun1~Fun7)都是可选的。不管这个PCIe设备拥有多少个功能,其每一个功能都有一个唯一独立的配置空间(Configuration Space)与之对应。
PCIe总线中的每一个功能(Function)都有一个唯一的标识符与之对应。这个标识符就是BDF(Bus,Device,Function)在BDF中,Bus Number占用8位,Device Number占用5位,Function Number占用3位。

BAR(基地址寄存器)

Bar空间 是 PCIe总线中的一部分,它是 PCIe 设备与主板之间进行通信的关键组件。
BAR空间是个“虚拟空间”!bar地址本身是没有对应物理存储器的!只是用来做映射(包括寻址、路由操作)的中间量!只有在pcie内才能看到或者说有意义!实际访问需要一个地址转换模块,控制透传位数后拼凑出实际的物理内存地址!
BAR寄存器中的数据是表示PCI设备在PCI地址空间中的基地址(用于TLP路由),不是表示PCIE设备内存在CPU内存中的映射地址。PCI地址空间需要在初始化时就映射为存储器域的存储器地址空间,方便处理器访问。

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

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

相关文章

二叉搜索树操作题目:二叉搜索树中的插入操作

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:二叉搜索树中的插入操作 出处:701. 二叉搜索树中的插入操作 难度 3 级 题目描述 要求 给定二叉搜索…

Flutter Canvas 属性详解与实际运用

在Flutter中,Canvas是一个强大的绘图工具,允许我们以各种方式绘制图形、文字和图像。了解Canvas的属性是开发高度定制化UI的关键。在本篇博客中,我们将深入探讨Flutter中Canvas的一些重要属性,并展示它们在实际应用中的使用。 1.…

交互式变基是一个非常强大的Git功能,它允许您编辑、重排、合并或删除已经存在的提交记录

文章目录 在Git中,如果你想要合并两个连续的提交,你可以使用交互式变基(interactive rebase)。这个过程允许你重写提交历史,合并提交,修改提交信息等。下面是如何合并两次连续的提交的步骤: 注…

C# 一个快速读取写入操作execl的方法封装

这里封装了3个实用类ExcelDataReaderExtensions,ExcelDataSetConfiguration,ExcelDataTableConfiguration和一个实用代码参考: using ExcelDataReader; using System; using System.Collections.Generic; using System.Linq; using System.T…

别再做“背锅侠”!软件测试工程师被开发吐槽,如何应对?

作为一名软件测试工程师,我们的角色可以算是“战场上的后勤”,战役的胜败和所有团队人员都息息相关。但是难免碰到战役失败后,很多团队互相推脱的局面,而测试人员就是所有团队中的弱势群体,自然是首当其冲的背锅侠&…

扫雷游戏(C语言)

目录 一、前言: 二、游戏规则: 三、游戏前准备 四、游戏实现 1、打印菜单 2、初始化棋盘 3、打印棋盘 4、布置雷 5、排雷 五、完整代码 一、前言: 用C语言完成扫雷游戏对于初学者来说,难度并不是很大,而且通…

一份轴承振动数据集摘引 - XJTU-SY2019

1.原始引用 我第一次看到这个数据集是在知乎: XJTU-SY数据集轴承故障诊断 - 知乎XJTU-SY数据集包含了3种工况下的15个滚动轴承的全寿命周期振动信号,且明确标注了每个轴承的失效部位,相关论文如下:[1]雷亚国,韩天宇,王彪,李乃鹏…

人工智能与低代码开发: 创新技术的未来

本文将探讨人工智能与低代码开发两个创新技术的结合,并为读者展示这种结合对未来技术发展的巨大潜力。我们将介绍人工智能和低代码开发的概念,并探讨它们分别在软件开发领域的作用。接着,我们将讨论它们如何相互影响和协作,以及它…

分享|2024年7款好用的电脑监控软件

电脑监控软件作为现代企业管理中不可或缺的一部分,能够帮助管理者们更好地管理和监控员工电脑的使用情况,保障企业的信息安全和机密数据的保密。在2024年,电脑监控软件哪些会更受欢迎? 1.绿虫 优势:具有目前市面上所…

如何写出一篇合格且优秀的硕士毕业论文

一、软件、插件推荐 谷歌浏览器、Edge浏览器(有自动翻译成中文的小插件) Scholarscope、EasyPubmed(浏览器插件,显示影响因子,被引用的次数,链接) 知云文献翻译(文献阅读软件) Endnote X9(插…

动态添加字段和注解,形成class类,集合对象动态创建Excel列

一.需求 动态生成Excel列&#xff0c;因为Excel列是通过类对象字段注解来添加&#xff0c;在不确定Excel列数的情况下&#xff0c;就需要动态生成列&#xff0c;对应类对象字段也需要动态生成&#xff1b; 二.ByteBuddy字节码增强动态创建类 1.依赖 <dependencies><…

DS:经典算法OJ题(1)

创作不易&#xff0c;友友们给个三连呗&#xff01;&#xff01; 本文为经典算法OJ题练习&#xff0c;大部分题型都有多种思路&#xff0c;每种思路的解法博主都试过了&#xff08;去网站那里验证&#xff09;是正确的&#xff0c;大家可以参考&#xff01;&#xff01; 一、移…

常用芯片学习——LM2596芯片

LM2596 3A降压型稳压器 使用说明 LM2596开关电压调节器是降压型电源管理单片集成电路&#xff0c;能够输出最大3A的驱动电流&#xff0c;同时具有很好的线性和负载调节特性。芯片按照输出版本可分为四种&#xff0c;分别是3.3V、5V、12V、ADJ&#xff08;可调版本&#xff09…

一文读懂Python中的映射

python中的反射功能是由以下四个内置函数提供&#xff1a;hasattr、getattr、setattr、delattr&#xff0c;改四个函数分别用于对对象内部执行&#xff1a;检查是否含有某成员、获取成员、设置成员、删除成员。 获取成员: getattr class Foo:def __init__(self, name, age):se…

【command】使用nr简化npm run命令

参考文章 添加 alias nrnpm run通过alias启动命令可以帮助我们节省运行项目输入命令的时间 $ cd ~ $ vim .bash_profile $ source ~/.bashrc

数据结构系统刷题

本文为系统刷leetcode的记录&#xff0c;会记录自己根据代码随想录刷过的leetcode&#xff0c;方便直接点开刷题&#xff0c;时常更新 时间复杂度简记为s 空间复杂度简记为k 数组 704 二分查找 一维二分查找 &#xff08;1&#xff09;[left, right] class Solution { publi…

自然语言处理发展(自然语言处理发展经历了哪些阶段)

​​​​​​​ 一、历史发展 自然语言处理的研究始于20世纪50年代初期&#xff0c;当时的主要任务是理解自然语言&#xff0c;并将其转换为机器语言。随着计算机硬件和软件的不断发展&#xff0c;NLP也得以逐步发展。在20世纪70年代&#xff0c;Chomsky提出了语法结构理论&a…

应急响应-流量分析

在应急响应中&#xff0c;有时需要用到流量分析工具&#xff0c;。当需要看到内部流量的具体情况时&#xff0c;就需要我们对网络通信进行抓包&#xff0c;并对数据包进行过滤分析&#xff0c;最常用的工具是Wireshark。 Wireshark是一个网络封包分析软件。网络封包分析软件的…

isctf---crypto

夹里夹气 可以发现是摩斯密码 得到flag easy_rsa nc连接 rsa_d nc连接 计算d 七七的欧拉 task import gmpy2 import libnum from crypto.Util.number import *flagbISCTF{*************} mbytes_to_long(flag)plibnum.generate_prime(1024) elibnum.generate_prime(51…

数据库分表分库的原则

什么是数据库分库分表 数据库分表&#xff08;Table Sharding&#xff09; 数据库分表是将一个大表按照某种规则拆分成多个小表存储在不同的物理表中的技术。通常&#xff0c;拆分规则是基于某个列的值进行拆分&#xff0c;例如根据用户ID或日期范围等进行拆分。每个小表只包…