PCIE协议基础
- 参考文献
- PCIE常用软件
- 项目简述
- PCIE概述
-
- ***PCIE协议主要包括四个部分:***
- ***下面将以主板上面的PCIE拓扑结构来介绍PCIE结构中上面的四个部件。***
- ***PCIE设备为了避免布线的交叉,引入了Lane Reversal功能***,
- ***PCIE的接口形式主要体现在下图:***
- ***如何计算PCIE的数据吞吐量:***
- PCIE的前身
-
- ***PCI的起源***
- ***PCIE与PCI的不同点***
- ***PCI拓扑结构示例***
- ***PCIE拓扑结构示例***
- ***Bus Enumeration***
- PCIE背景知识
-
- ***X86结构的地址空间***
- ***Memory Map示例***
- ***IO Map示例***
- PCIE地址空间
-
- ***PCIE设备分配到哪些地址空间***
- ***Configuration Space***
- ***PCIE Configuration Space的示例***
- ***PCIE Memory Space与IO Space的对比***
- PCIE Memory Space示例
- ***PCIE IO Space示例***
- 总结
参考文献
[1]、移知 (接下来几篇博客是博主学习该课程的笔记加上了自己的一点见解,对于复杂性的知识,一定要养成记笔记的习惯,否则学完之后和没学一个样)
PCIE常用软件
[1]、System Information Viewer
[2]、MindShare Arbor
[3]、Read & Write Utility
项目简述
前面已经有两篇博客介绍了PCIE,相信大家应该都看不懂,前面的博客主要讲解了PCIE在FPGA中的实现,那么我们就接着学习这个协议。在接下来的几篇博客,我将尽可能的讲解一些我学会的PCIE的知识,但是要想真正学会还是得看Base Specification。这里再次说明,如果只是为了使用PCIE那么完全没有必要对PCIE的协议了解太深,因为在FPGA里面有相应的IP。这里说明一下XDMA的缺点,因为XDMA使用起来非常方便,但是本身的缺点是占用的逻辑资源量巨大。
PCIE概述
PCIE协议的全称是PCI Express。
全双工点对对的串行通信协议。
PCIE的术语有Link、Lane。
Link其实就是指传输端和接收端之间的通路
Lane是值一对tx、rx。其中一条Link可以包括多个Lane
PCIE协议主要包括四个部分:
1、Root Complex
是PCIE系统的顶层,主要负责连接CPU和Memory到外面的PCIE设备
2、Switch
提供一个扇出和聚合的能力,允许多个设备经过Switch连接到一个PCIE接口。
3、Bridge
桥提供一个接口到其他总线,如PCI或PCI-X端点,也就是说经过该端口PCIE的拓扑结构上面可以连接PCI设备。
4、Endpoint
PCle拓扑中的设备,它不是Switch或Bridge,而是充当总线上事务的启动器和完成器。
PCIE与PCI的不同点
常见的PCI与PCIE的拓扑排列结构如下:
PCIE拓扑结构示例
这里推荐一个查看电脑PCIE拓扑结构的软件:System Information Viewer
Bus Enumeration
扫描PCle结构以发现其拓扑的过程称为枚举过程。首先说明BUS枚举是基于深度优先的标准,相信学过数据结构的同学对这个概念比较了解,这里不再多介绍,同学们可以查阅相应的原理。
这里又要引入三个TLP包中重要的概念如下:
PCIE地址空间
PCIE设备分配到哪些地址空间
PCle中有四个地址空间。
Configuration Space:配置空间,每个Function都包含内部寄存器配置空间,允许软件可以看见和控制其地址和资源。
Memory Space:内存空间,映射同一组特定于设备的寄存器在内存地址空间和IO Spcace一样的方式。
I/O Space:输入输出空间,在pc的早期,内部寄存器/存储在I0设备被访问通过IO地址空间。
Message Space:信息空间,这是一个新的地址空间在PCI中没有该地址空间。这个地址的存在消除了对物理边带信 的需要,如中断。可以减少PCI的引脚,将中断信 变成Message的TLP包进行传输,进而减少了PCI中物理引脚的个数。
Configuration Space
首先PC机需要用户设置开关和跳线分配资源为每个安装在主板上的PCIE设备,这经常导致内存冲突,IO和中断设置。
然后I/O架构,Extended ISA (EISA)和IBM PS2系统,是第一个实现即插即用架构的。在这些架构中,配置文件被分配给每个设备,进而允许系统软件分配基本资源为每个设备。
PCI协议的Configuration Space是通过IO读写的方式间接读写的,这里为什么是间接读写,因为PCI协议的IO读写只有64KB的大小,但是PCI的Configuration Space足足有16MB的空间大小,所以只能间接访问。
那么为什么PCI的Configuration Space有16MB的大小呢r>
由前面的知识可知,TLP包的前两个字节是厂商ID,那么上面的前两个字节是8086也就是Intel给自己厂家分配的厂商ID。那么我们知道,每个PCIE Function的Configuration Space大小是4KB,所有的PCIE设备占有256MB的配置空间,那么我们如何查找其他设备的配置空间呢r>
总结
上面所有的实践都基于三个软件
[1]、System Information Viewer
[2]、MindShare Arbor
[3]、Read & Write Utility
这些软件可以去 上下载,嫌麻烦的同学也可以进群和我要。至此,PCIE概述部分讲解完毕,接下来详细总结PCIE协议。
创作不易,认为文章有帮助的同学们可以关注、点赞、转发支持。为行业贡献及其微小的一部分。对文章有什么看法或者需要更近一步交流的同学,可以加入下面的群:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!