PCIe基础

PCIe基础

PCI Express,简称PCI-E,官方简称PCIe,是计算机总线的一个重要分支,它沿用既有的PCI编程概念及信号标准,并且构建了更加高速的串行通信系统标准。目前这一标准由PCI-SIG组织制定和维护。

在这里插入图片描述


拓扑

在这里插入图片描述


配置空间

在 PCI Express (PCIe) 中,设备被分为两种类型:Type 0 设备和 Type 1 设备。Type 0 设备和 Type 1 设备的区别在于它们的配置空间结构不同。

Type 0 设备是指普通的 PCIe 设备(RC和EP)。Type 0 设备的配置空间只包含一个配置空间头部,用于描述设备的基本信息,如 Vendor ID、Device ID、Class Code、Subclass Code 等等。Type 0 设备可以有多个 BAR(Base Address Registers),用于描述设备的地址空间信息。

Type 1 设备是指 PCIe-to-PCI/PCI-X Bridge,它们可以将一个 PCIe 总线转换成一个或多个 PCI 总线,从而使 PCIe 总线上的 PCIe 设备可以与 PCI 总线上的 PCI 设备进行通信。Type 1 设备的配置空间包含一个配置空间头部和一个或多个 PCI-to-PCI Bridge (P2P) 或 CardBus Bridge (CB) 头部。Type 1 设备的每个 PCI-to-PCI Bridge (P2P) 或 CardBus Bridge (CB) 头部描述一个转换的 PCI 总线。Type 1 设备还有多个 BAR,其中每个 BAR 描述一个转换的 PCI 总线上的地址空间。

在这里插入图片描述

PCIe Type 0配置空间(RC与EP设备)

在这里插入图片描述

PCIe Type 1 配置空间(网桥设备)

兼容PCI协议

PCIe总线 是 PCI总线 的升级版,因此 PCIe 设备的配置空间需要兼容 PCI 协议,以确保与老式 PCI 设备的兼容性和互操作性。

  1. PCIe兼容PCI配置空间格式:

PCIe 设备的配置空间必须使用与 PCI 相同的格式,包括配置空间头部和配置空间寄存器。

  1. 兼容PCI配置空间寄存器

PCIe 设备的配置空间寄存器必须包括与 PCI 相同的寄存器,包括 Vendor IDDevice IDClass CodeSubclass CodeHeader TypeBase Address Registers 等。这些寄存器在 PCIe 设备中的定义必须与 PCI 相同,以确保与 PCI 设备的兼容性和互操作性。

  1. 兼容PCI配置空间头部

PCIe 设备的配置空间头部必须兼容 PCI 头部格式,包括 Header TypeCache Line SizeLatency TimerInterrupt PinInterrupt Line 等字段。PCIe 设备必须使用 Type 0 或 Type 1 头部格式,并根据需要使用 PCI-to-PCI Bridge (P2P)CardBus Bridge (CB) 头部格式。

  1. 兼容PCI配置空间的访问方式

PCIe 设备的配置空间必须使用与 PCI 相同的访问方法,包括使用 I/O 空间或内存空间访问配置空间。PCIe 设备的配置空间访问必须遵循 PCI 总线协议的要求和规范,以确保与 PCI 设备的兼容性和互操作性。

在这里插入图片描述

兼容PCI配置空间

在这里插入图片描述

PCI Device Classes (ucw.cz) 可用于查询设备类型。


Memory & I/O地址空间

在PCIe总线中,可以访问PCIe设备的两种类型的地址空间,分别为Memory空间和I/O空间,Memory空间是一种物理地址空间,可用于访问系统内存,在PCIe总线中,Memory空间通常用于访问设备的配置寄存器和DMA缓冲区。I/O空间是一种虚拟地址空间,用于访问设备的寄存器和控制器。以进行数据传输和控制操作。

PCIe 总线将 Memory 地址空间和 I/O 地址空间分别映射到总线地址空间中的不同区域。Memory地址空间通常映射到系统内存地址空间中的一部分,由操作系统和设备驱动程序来管理和分配。I/O 地址空间则映射到总线地址空间中的一段固定区域,通常为 64KB 的大小。设备可以访问 I/O 地址空间中的寄存器和控制器。

在设备驱动程序中,可以使用 inb()outb()inw()outw()inl()outl() 等函数来读取和写入 I/O 空间中的数据。这些函数分别用于读取和写入单字节、双字节和四字节数据,可以根据具体需求来选择适当的函数。需要注意的是,访问 I/O 空间时需要使用 ioread*()iowrite*() 等内核函数来确保访问的正确性和安全性。


💦
🎡
😏


参考

PCI Express - 维基百科,自由的百科全书 (wikipedia.org)

PCIE 之linux驱动分析 - 知乎 (zhihu.com)

深入PCI与PCIe之二:软件篇 - 知乎 (zhihu.com)

PCIe学习笔记之pcie结构和配置空间_pcie class code_Hober_yao的博客-CSDN博客

PCIe扫盲系列博文连载目录篇(第二阶段)-Felix-电子技术应用-AET-中国科技核心期刊-最丰富的电子设计资源平台 (chinaaet.com)

PCIe扫盲系列博文连载目录篇(第一阶段)-Felix-电子技术应用-AET-中国科技核心期刊-最丰富的电子设计资源平台 (chinaaet.com)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】plt.title()函数

plt.title() 是 matplotlib 库中用于设置图形标题的函数。 一、基本语法如下 plt.title(label, fontdictNone, locNone, padNone, **kwargs)其中: label 是要设置的标题文本,可以是字符串类型或者是数学表达式。fontdict 是一个可选的参数&#xff0c…

QT 基于AES加解密的使用,解析java端发来的密文

背景 java端往ukey中写授权信息,C端从ukey中读取授权信息。 java端写入的授权信息是加密的,并且要可逆。 因为java端采用的是AES加密的,所以我(C端)也只好采用对等形式搞定了。 使用的库 开发环境:Win10 Qt5.13 QT中AES加解密…

uniapp项目打包apk相关(androidStudio,Hbuildx,dCloud)

1、先注册和登陆dCloud平台,管理应用信息。 需要准备的参数(3个) APP_ID(如:__UNI__123ABCD) 包名(如:com.hx.mhoa) 应用签名(应用sha1,应用md5,应用sha256&…

HLS协议格式

HLS协议格式 ES流(Elementary Stream):基本码流,不分段的音频、视频或者其他信息的连续码流PES流,把基本码流ES分割成段,并加上相应头文件打包成形的打包基本码流PS流(Program Stream&#xff…

一文解析RISC-V SiFive U54内核——中断和异常

中断 U54内核支持M模式和S模式中断。默认情况下,所有中断都在M模式下处理 。对于支持S模式的 hart,可以有选择地将中断委托给S模式。 U54中断架构如下: U54内核还支持两种类型的 RISC-V 中断:本地 和全局 。 本地中断 &#xf…

目标检测算法之Fast R-CNN和Faster R-CNN原理

一、Fast R-CNN原理 在SPPNet中,实际上特征提取和区域分类两个步骤还是分离的。只是使用ROI池化层提取了每个区域的特征,在对这些区域分类时,还是使用传统的SVM作为分类器。Fast R-CNN相比SPPNet更进一步,不再使用SVM作为分类器&a…

议程更新 | Occlum Meetup 北京站--一起来聊机密计算 TEE

首届 Occlum Meetup 还有 3 天就要和大家见面啦!北京的小伙伴们,我们来喽!为了能和大家有更充足的时间交流沟通,我们小小的调整了一下议程~最新议程请见下方。本次 Meetup 是 Occlum 开源社区首次在北京线下开展&#…

yolo车牌识别、车辆识别、行人识别、车距识别源码(包含单目双目)

视频效果 车牌识别视频车辆识别视频yolov5车辆识别视频yolov5 yoloR对比行人车辆识别视频yolo车距1完整源码http://www.hedaoapp.com/goods/goodsDetails?pid4132 系统设计 车牌自动识别是以计算机视觉处理、数字图像处理、模式识别等技术为基础,对摄像机所拍摄的…

从零开始,简单几步教会你shopify店铺设计

在弄完shopify的基础配置之后,我们就开始可以设计一下我们的店铺。人都是视觉动物,很难不被好看的东西吸引,所以把店面弄得漂漂亮亮的就是我们赢得顾客信赖的第一步。接下来龙哥会详细地解析一下,shopify的店铺设计与配置要怎么展…

Elasticsearch 核心技术(八):常用 DSL 查询(全文搜索、精确匹配、布尔查询)

❤️ 博客主页:水滴技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 🌸 订阅专栏:大数据核心技术从入门到精通 文章目录一、全文搜索1.1 查询所有(match_all)1.2 全文检索&…

CS-Stdio Display Builder

Display Builder 1) 操作界面编辑器和Runtime 2)在EPICS edd/dm, medm, edm, ...想法上构建 3)与CS-Studio BOY兼容性非常好 4)大约2015年在CS-Stdio/Eclipse中开始,现在在CS-Studio/Phoebus中 5) 从209年以Web Runtime获取。…

logstash+elasticsearch+Kibana(ELK)日志收集

文章目录一.安装elasticsearch二. 安装kibana三.配置logstash四.springboot整合logstash五.spring整合Elastic Search不要一股脑执行以下语句,请观察修改要修改的地方 注意给logstash,elasticsearch,kibana释放端口,云服务器提供商和系统的端口 一.安装elasticsearch # 安装e…

【Linux】共享内存

1.共享内存的概念共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。通信的前提是让两个进程看到同一份资源,信息的…

Multisim14.3安装包下载及安装教程

[软件大小]: 888 MB [安装环境]: Win11/Win 10 [软件安装包下载]:https://pan.quark.cn/s/1c0217caf24a Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作 安装步骤 1.选中下载好…

自主AI能力加速企业智能化转型 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 孟晨静 爱分析分析师 外部专家(按姓氏拼音排序) 杜晨阳 力维智联 五维实验室主任 王哲 九章云极DataCanvas 雅图BU总经理 特别鸣谢(按拼音排序) 目录 1. 报告综述 2. 金融…

Java 3个常用工作流引擎

一:Java工作流框架是一种用于设计、执行和管理工作流程的技术。以下是几个常见的Java工作流框架: Activiti:Activiti是一款流行的开源Java工作流引擎,它基于BPMN 2.0标准,支持复杂的工作流程设计和管理。Activiti具有高…

Centos7 XFS(dm-0):Internal error XFS_WANT_CORRUPTED_GOTO

在k8s的道路上我们都是小白,每天启动虚机都会遇到各种各样的问题,这不 部署的k8s虚机启动发现操作系统启动异常,提示如下报错信息 XFS(dm-0):Internal error XFS_WANT_CORRUPTED_GOTO at line 1700 of file fs/xfs/l…

【周末闲谈】文心一言,模仿还是超越?

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 文章目录周末闲谈前言一、背景环境二、文心一言?(_)?三、文心一言的优势?😗😗😗四、文心一…

ADC选型关注的参数

目前,用来量化ADC动态性能的六个技术指标分别为SINAD(信号与噪声失真比),ENOB(有效位数),SNR(信噪比),THD(总谐波失真),TH…

ChatGPT原理解析

文章目录Transformer模型结构构成组件整体流程GPT预训练微调模型GPT2GPT3局限性GPT4相关论文Transformer Transformer,这是一种仅依赖于注意力机制而不使用循环或卷积的简单模型,它简单而有效,并且在性能方面表现出色。 在时序模型中&#…