【PCIE常见面试问题-1】

news2024/11/22 6:29:56

PCIE常见面试问题-1

  • 1 PCIE概述
    • 1.1 PCI为何发展开PCIE?
    • 1.2 什么是Root Complex(RC)
    • 1.3 什么是EP?
    • 1.4 什么是Swith
    • 1.5 PCIE协议如何组织通信的?
    • 1.6 简要介绍一下PCIE的分层结构,为什么需要分层?
    • 1.7 PCIE的事务类型有哪些?
    • 1.8 PCIE的事务类型对应哪些模式?
    • 1.9 PCIE的路由方案
    • 1.10 具体介绍一下PCIE的事务层

1 PCIE概述

1.1 PCI为何发展开PCIE?

PCI提高带宽的方法有两种,一是增加位宽, 二是提高速率。可增加位宽提高成本,增大占板面积,提高速率影响信号完整性,而且负载能力受限,例如33MHz的可以驱动10个负载,66MHz最多只能驱动4个负载。信号质量也存在问题;
再具体来说:
1.带宽需求:
PCI基于并行结构,增加位宽一是提高成本,二是带来信号完整性和扩展性的问题;
PCIe采用串行总线架构,每个lane的带宽为2.5Gbps,并且可以多lane并行使用;

2.信号完整性和可靠性
并行总线的信号完整性问题:传统的PCI总线是并行总线,多个信号线同时传输数据,容易受到噪声干扰和信号反射的影响,导致信号完整性问题。
串行总线的优势:PCIe采用串行总线架构,每个lane独立传输数据,减少了信号干扰和反射问题,提高了信号完整性和可靠性。

3.扩展性和灵活性
固定拓扑结构:传统的PCI总线采用固定的共享总线拓扑结构,所有设备共享同一总线,容易产生瓶颈。
点对点连接:PCIe采用点对点连接方式,每个设备都有专用的lane,可以独立通信,避免了共享总线的竞争问题,提高了扩展性和灵活性。

4.低延迟和高效率
共享总线的延迟问题:在传统的PCI总线上,多个设备共享同一总线,导致数据传输时需要等待总线空闲,增加了延迟。
专用通道的低延迟:PCIe的每个lane都是专用的,数据传输不需要等待,降低了延迟,提高了效率。

使用高速差分代替并行总线是大势所趋

1.2 什么是Root Complex(RC)

RC的含义就是一个实现CPU与PCIE上组件通信的媒介,CPU要读取某个组件信息,告知RC,其它的均有RC代劳了。可以简单理解RC为PCIE总线的主控制器;
RC支持的主要功能:
1、配置空间管理:RC管理 PCIe 总线上所有设备的配置空间。每个 PCIe 设备都有一些配置寄存器,这些寄存器存储设备的特定信息,如设备ID、厂商ID。
2、地址映射:RC负责分配 PCIe 总线上各个设备的地址。这包括内存映射和I/O映射,以确保不同设备之间的数据传输能够正确进行。
3、中断管理:PCIe设备可能会生成中断信号,RC负责管理这些中断,确保它们正确地传递到相应的处理器核心。
4、通信与数据传输:RC与其他 PCIe 设备之间通过 PCIe 链路进行通信。PCIe 链路分为一到多个通道,每个通道包含一个上行和一个下行通道,用于双向数据传输。

1.3 什么是EP?

Endpoint是PCIe总线上的终端设备,负责提供各种服务和数据传输功能。它要实现对RC的请求进行响应,并接收RC的配置。

1.4 什么是Swith

Switch组件,作用好比路由器,是扩展PCIE总线的的,能够允许更多的Endpoints设备链接到系统。它的内部可以视为多个虚拟的PCI到PCI的桥,实现扩展功能。该组件会根据事务类型将数据送到不同的通道。该组件对数据包没有处理的功能只有转发功能。
Switch具有多个端口,每个端口连接到PCIe总线的一个通道,或者连接到另一个Switch的端口。通道是数据传输的通路,每个通道包含一个上行通道和多个下行通道,用于双向数据传输。上行通道与Root Complex或上层的Switch连接,以接收和发送数据。 S下行通道与多个Endpoint设备连接,为这些设备提供PCIe总线访问。

1.5 PCIE协议如何组织通信的?

PCIE概括来说就是两种传输机制、三层逻辑结构、四种事务类型;
1、协议相关代码采用分层的方式进行组织的,分为事务层、链路层和物理层,以此实现用户数据的交互;
2、数据类型被分为内存、I/O、配置和消息四类,分别完成不同的功能。
3、数据交换是基于请求与完成(响应)的机制,也分为Non-Posted和Posted两种模式,Posted意思发送数据不需要接收端响应,而Non-Posted是要求接收端对发送数据进行响应。

1.6 简要介绍一下PCIE的分层结构,为什么需要分层?

对于复杂的协议,分层是必须要做的事情,分层有利于对实现功能有着明确、合理的划分,不仅增加代码的可读性,更有助于提高其可读性,并利于扩展;
在这里插入图片描述

1、事务层
事务层是PCIE协议的对外接口层,用户对数据进行组帧和解析是在本层进行,本层产生的数据包称之为事务层数据包,即(Transaction Layer Packets,TLP)。此外事务层还具有基于信用积分的流控功能,支持不同事务类型的不同形式的数据传输。

2、数据链路层
数据链路层充当事务层和物理层之间的中间阶段,主要职责包括链路管理和数据完整性,包括错误检测和纠正。

数据链层在传输链路上接收事务层的TLP数据包添加序列号和校验码交给物理层,而且链路层非常尽责,会对事务层交付的数据包进行缓存,如果检测到传输错误会进行重发,直到接收正确或确定链路通信失败。

链路层还具有链路管理功能,并有相应的数据包,称之为“数据链路层数据包(DLLP)”该数据包是实现两个组件间的数据交换,并没有路由功能,换言之,如果一包数据要跨过大山大河到达接收端,中间经过无数站点,DLLP数据包只在两站之间进行数据交换,主要实现的功能有流量控制、电源管理、应答机制和虚拟通道。

3、物理层
物理层分为两个部分,一部分是逻辑子层,一部分是电气子层。逻辑子层模块负责与数据链路层的数据交换,会对接收链路层事务进行再次封装,对接收电气子层事务进行解析,并会进行8B/10B编码或者128B/130B编码,进行传递之间的转换和极性反转等工作,电气子层则更多的负责时钟数据恢复、均衡等电气操作。物理层数据包称之为PLP,Physical Layer Packet。

1.7 PCIE的事务类型有哪些?

PCIE的事务类型有:内存事务、I/O事务、配置食物和消息事务;消息是PCIE拓展的;
1.内存事务
内存事务并不一定是读写内存,而是代表一种大数据量的数据交换方式;
2.I/O事务
会逐渐被弃用并被MMIO替代。MMIO(Memory-Mapped I/O,内存映射I/O)是一种访问设备寄存器和配置空间的机制。在PCIe架构中,MMIO是一种I/O访问方法,它允许软件通过内存地址范围来读取或写入设备寄存器的值而不是通过传统的I/O端口方式。
3.配置
每个 PCIe 设备都有一组配置寄存器,包含设备的重要信息、功能设置以及与设备通信所需的控制寄存器等。在PCIE设备应用前必须经过配置阶段;
4.消息
消息是PCIE新增的一种事务类型,用来取代PCI的一些边带信号,使得所有的信号传递都通过报文来实现。比如中断、电源管理和错误消息;

1.8 PCIE的事务类型对应哪些模式?

只有Memory Write 和Message 是Posted即不需要响应的两种模式

1.9 PCIE的路由方案

PCIE之间组件的通信是两点间的数据交换,而且可能链路很长,因此需要机制保证;
PCIE的路由方案:ID路由、地址路由和模糊路由;
1.ID路由
ID路由即BDF路由方案,即采用Bus Number、Device Number和Function Number来确定目标设备的位置。这是一种兼容PCI的路由方案,主要用于设备的配置、带数据和不带数据的返回数据包。
2.地址路由
地址路由包括对IO和Memory两种事务类型的路由,在帧头中包含了目的设备的地址信息,处理器会为每个设备分配一段地址信息,这也是数据包传输过程中的标志符。
3.模糊路由
模糊路由(Implicit Routing,又译为隐式路由)只能用于Message的路由。用来实现电源管理、错误信号、热插拔、虚拟通道等功能;

1.10 具体介绍一下PCIE的事务层

RC相比是他要处理诸多事务,这些事务以统一的方式对外发出,不同端点(Endpoints)的专用模块就好比具体执行的,接收不同事务进行处理反馈。

进一步理解地址空间: “Address Spaces” 指的是不同的寻址空间,代表着不同内存区域或者设备寄存器区域,也代表着不同的事务类型。PCIE使用不同的地址空间来访问不同类型资源,如下表所示:
在这里插入图片描述

  1. 内存地址空间
    内存地址空间(Memory Address Space)也就是内存事务类型,用于访问主机系统中的内存区域。设备可以通过PCIe直接访问主机内存,实现数据的读取和写入。这种地址空间允许设备通过 DMA(直接内存访问)等技术直接在内存中进行数据传输。
    内存地址空间支持读的请求与完成、写请求和原子操作的请求与完成这三大类事务类型,支持32bit地址和64bit地址两种地址空间。

2.配置地址空间
配置地址空间(Configuration Address Space)也就是配置事务,用于访问设备的配置寄存器。每个 PCIe 设备都有一组配置寄存器,包含设备的重要信息、功能设置以及与设备通信所需的控制寄存器等。通过配置地址空间,系统可以对设备进行初始化、配置和管理。这也是使用PCIE设备前的必要步骤。
这种配置空间的访问方式为系统和设备之间的通信提供了标准化的接口,有助于确保设备之间的互操作性和系统的稳定性。事务类型包括两种类型:
1)Configuration Read Transaction(读事务): 主机系统通过 PCIe 总线向目标设备的配置空间读取信息。这通常涉及读取设备的配置寄存器,以获取设备的状态、特性和其他信息。
2)Configuration Write Transaction(写事务): 主机系统通过 PCIe 总线向目标设备的配置空间写入信息。这用于配置设备的各种参数,使其适应系统需求。

3.I/O地址空间
IO地址空间(IO Address Space)用于访问设备的 IO 空间,允许设备使用类似于传统 IO 端口的方式进行通信和数据传输。这部分主要是兼容PCI的。支持读的请求与完成和写的请求与完成,支持的地址格式是32bit。–现在也会被取代;

4.Message地址空间
Message地址空间用于提供了一种灵活的数据传输机制,使得设备之间可以通过异步的方式进行通信,从而更好地支持一些事件驱动的场景,例如中断传递、错误通知、电源管理等。这种异步通信机制有助于提高系统的效率和响应速度。

具体的事务层TLP包格式概述:事务层由请求和完成两种类型组成,是基于包的方式进行端到端的数据交换。
在这里插入图片描述

【REF】
1.https://fpgaup.com/fpgauptext.php?cidi=171

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

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

相关文章

Easyexcel(5-自定义列宽)

相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽) 注解 ColumnWidth Data…

C++进阶:哈希表实现

目录 一:哈希表的概念 1.1直接定址法 1.2哈希冲突 1.3负载因子 1.4实现哈希函数的方法 1.4.1除法散列法/除留余数法 1.4.2乘法散列法 1.4.3全域散列法 1.5处理哈希冲突 1.5.1开放地址法 线性探测 二次探测 ​编辑 双重散列 1.5.2链地址法 二.代码实现 2.1开放地址…

汽车资讯新趋势:Spring Boot技术解读

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 汽车资讯网站的系统管理员可以管理用户,可以对用户信息修改删除审核以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.1.2 汽车品牌管理 系统管理员可以汽车品牌信息进行添加&#xf…

EdgeNeXt:面向移动视觉应用的高效融合CNN-Transformer架构

摘要 https://arxiv.org/pdf/2206.10589 为了追求更高的准确性,通常会开发大型且复杂的神经网络。这些模型需要高计算资源,因此无法部署在边缘设备上。构建资源高效通用网络在多个应用领域都非常有用,因此备受关注。在本研究中,我…

udp_socket

文章目录 UDP服务器封装系统调用socketbind系统调用bzero结构体清0sin_family端口号ip地址inet_addrrecvfromsendto 新指令 netstat -naup (-nlup)包装器 的两种类型重命名方式包装器使用统一可调用类型 关键字 typedef 类型重命名系统调用popen UDP服务器封装 系统调用socket …

Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序

在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序 IntelliJ IDEA 是一个用 Java 编写的集成开发环境 (IDE)。它用于开发计算机软件。此 IDE 由 Jetbrains 开发,提供 Apache 2 许可社区版和商业版。它是一种智能的上下文感知 IDE,可用于在各种应用程序…

高效高质量SCI论文撰写及投稿流程及策略丨从论文选题、文献调研、实验设计、数据分析、论文结构及语言规范等重要环节

科学研究的核心在于将复杂的思想和实验成果通过严谨的写作有效地传递给学术界和工业界。对于研究生、青年学者及科研人员,如何高效撰写和发表SCI论文,成为提升学术水平和科研成果的重要环节。本教程旨在帮助学员系统掌握从选题到投稿的全过程&#xff0c…

Mac下的vscode远程ssh免密码登录

Mac下的vscode远程ssh免密码登录(同理可迁移至windows及linux系统) 在日常开发中,使用远程服务器进行开发是非常常见的,而通过 SSH 免密码登录可以显著提高效率,避免每次连接时都需要输入密码。本文将介绍如何在 macOS…

记录eslint报错的情况

这几天在调试vue的eslint,害,我领导说eslint要打开规范代码,顺带看了一下eslint的规则,并且研究一下报错。切记每次修改了.eslintrc配置文件,需要重启项目再查看控制台,否则之前的报错会一直存在。 第一个…

汽车软件DevOps解决方案

汽车软件DevOps解决方案是专为现代汽车行业设计的一套集成化需求、开发、测试、部署、OTA与监控,旨在加速软件开发流程,提高软件质量和安全性,同时确保整个生命周期的高效性和灵活性。以下是经纬恒润汽车软件DevOps解决方案的关键组成部分和优…

openCV与eigen两种方法---旋转向量转旋转矩阵

#include <Eigen/Dense> #include <opencv2/core/eigen.hpp> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main() {// opencv 旋转向量cv::Vec3d rvec(1.0, 2.0, 3.0);cv::Mat rotation_matrix;cv::Rodrigues(rvec, rotati…

Vue项目搭建-2-组合式API

入口-setup 在组件渲染时会优先执行 setup 中代码&#xff0c;执行时机为 beforeCreate 之前 setup 方法中的对象若想要在 template 中使用&#xff0c;需要将方法 return 出去: <script> export default {setup() {console.log(setup had run)const msg "hello…

国产linux系统(银河麒麟,统信uos)使用 PageOffice 动态生成word文件

PageOffice 国产版 &#xff1a;支持信创系统&#xff0c;支持银河麒麟V10和统信UOS&#xff0c;支持X86&#xff08;intel、兆芯、海光等&#xff09;、ARM&#xff08;飞腾、鲲鹏、麒麟等&#xff09;、龙芯&#xff08;LoogArch&#xff09;芯片架构。 数据区域填充文本 数…

H.265流媒体播放器EasyPlayer.js H5流媒体播放器关于如何查看手机端的日志信息并保存下来

现今流媒体播放器的发展趋势将更加多元化和个性化。人工智能的应用将深入内容创作、用户体验优化等多个方面&#xff0c;带来前所未有的个性化体验。 EasyPlayer.js H.265流媒体播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#…

【软考】系统架构设计师-信息系统基础

#信息系统基础核心知识点 信息系统5个基本功能&#xff1a;输入、存储、处理、输出和控制 诺兰模型&#xff1a;信息系统计划的阶段模型&#xff0c;6阶段 初始阶段&#xff0c;传播阶段&#xff0c;控制阶段&#xff0c;集成阶段&#xff0c;数据管理阶段&#xff0c;成熟阶…

【论文笔记】Large Brain Model (LaBraM, ICLR 2024)

Code: https://github.com/935963004/LaBraM Data: 无 目录 AbstractIntroductionMethodNeural tokenizer training&#xff1a;Pre-training LaBraM&#xff1a; ResultsExperimental setup&#xff1a;Pre-training result&#xff1a;Comparison with SOTA&#xff1a;Pre-t…

瀚海微SD NAND之SD 协议(34)1.8V信号的时序

固定数据窗口输出时序(SDR12、SDR25、SDR50) 固定数据窗口插卡输出时序如下图所示&#xff0c;SDR12、SDR25、SDR50的输出时序 有效窗口由输出延迟(topy)的最小值和最大值指定。 无论温度和电压如何变化&#xff0c;与SDCLK同步的有效数据窗口都是可用的。 输出有效窗口由t…

web——sqliabs靶场——第十三关——报错注入+布尔盲注

发现是单引号加括号闭合的 尝试联合注入 发现不太行&#xff0c;那尝试报错注入。 测试报错注入 unameadmin) and updatexml(1,0x7e,3) -- &passwdadmin&submitSubmit 爆数据库 unameadmin) and updatexml(1,concat(0x7e,database(),0x7e),3) -- &passwdadmin&a…

5、AI测试辅助-生成测试用例思维导图

AI测试辅助-生成测试用例思维导图 创建测试用例两种方式1、Plantuml思维导图版本 (不推荐&#xff09;2、Markdown思维导图版本&#xff08;推荐&#xff09; 创建测试用例两种方式 完整的测试用例通常需要包含以下的元素&#xff1a; 1、测试模块 2、测试标题 3、前置条件 4、…

附录2-pytorch yolov5目标检测

项目地址 https://github.com/ultralytics/yolov5 参考 https://zhuanlan.zhihu.com/p/711356735 目录 1 数据集准备 1.1 images 1.2 labels 1.3 yaml文件 2 环境配置 3 python环境配置 3.1 安装torch 3.2 安装opencv 3.3 安装 ultralytics 4 预训练模型…