一、link和lane
一组link就是连接两个port之间的若干条lane,通常为x1/x2/x4/x8/x16。每条lane包含四根线tx_p/m,rx_p/m(两组差分对)。
这里的port/component可以理解为一个设备,如果pcie支持bifurcation,则一个x16的接口可以连接多个port(2个x8/1个x16/4个x4/8个x2等),每个port中每条lane的linkid相同,不同port间的linkid不同。
二、pcie体系结构说明
root complex:
rc是cpu和pcie总线连接的接口。主要功能是完成存储器域到pcie总线域的地址转换,随着虚拟化技术的引入,rc功能也越来越复杂。rc把来自cpu的request转化成pcie的4类request(configuration、memory、i/o、message)并发送给下面的设备。
switch & bridge
switch提供了分散/聚合的功能,它允许更多的设备接入到一个pcie port。它扮演了数据包路由的功能。bridge提供了一个转换接口用来连接其他的总线,如pci/pci-x。这样可以允许在pcie的系统中接入一张旧的pci设备。
pcie endpoint:
它只有一个上游端口,位于pcie拓扑结构的树的末端。他作为请求的发起者或者完成者。分为legacy endpoint、pcie endpoint和root complex integrated endpoint三种。
虚拟化技术:
虚拟化可以理解为一台电脑运行了两套系统,比如我们在windows下安装linux虚拟机,两套操作系统共用一套硬件,这要求每套系统的存储域范围不重叠,即对应了两套地址转换,将存储器地址转换为不同的物理地址,以此实现一套硬件运行多系统。虚拟化技术的核心是地址的映射和转换。
三、pcie lane翻转和pn翻转
为了方便板子布线,允许lane翻转
每条lane的差分信号也可翻转。
lane翻转和pn极性翻转有以下要求:
1、pn翻转无限制,可翻转部分lane,也可只翻转tx或rx
2、lane翻转必须全部翻转,不能部分翻转
3、lane翻转tx/rx必须同时翻转,不能只翻转tx或rx
4、lane翻转和pn翻转可以同时存在
四、吞吐量
pcie gen1/2使用8b/10b编码,编码效率为0.8
pcie gen3/4/5使用128b/130b≈0.985
pcie 5.0x4的速率为:32gbpsx4x128÷130÷8b/b≈15.754gb/s
五、pcie枚举图
开机启动时软件会扫描系统中的所有pcie设备(pcie枚举),对软件而言,bus/device/function是必不可少的。
bus:在一个系统中存在1~256个bus; device:在一条bus中存在1~32个设备; function:每个设备有1~8个功能;
对于每个中间桥而言,三条bus必须知道:primary bus/secondary bus/subordinate bus: primary bus:上游bus号 secondary bus:下游第一级bus号 subordinate bus:下游最大的bus号
六、pcie设备与系统地址映射
pcie设备有四种地址空间:
1、configuration space配置空间;
2、memory space存储空间;
3、i/o space空间,存在于老的pci设备;
4、message space,pcie设备新增,包含边带指示信号,比如中断; 这些pcie总线地址空间需要在初始化时就映射为存储器域的存储器地址空间,方便处理器访问。
系统软件对pcie总线进行配置时,首先获得bar寄存器的初始化信息,之后根据处理器系统的配置,将合理的基地址写入到相应的bar寄存器中,这个过程在bios运行阶段和os启动阶段完成。
系统软件还可以使用该寄存器获得pcie设备使用的bar空间的长度,其方法是向bar寄存器写入0xffff_ffff后再读取该寄存器。
每个pcie设备在bar中描述自己需要占用多少地址空间,bios或os通过所有设备的这些信息构建一张完整的地址映射表,描述系统中资源的分配情况,然后再合理地将地址空间配置给每个pci设备。
bar在bit0来表示该设备是映射到memory还是i/o,bar的bit0是readonly的,就是说设备寄存器映射到memory还是i/o是由设备制造商决定的,其他人无法修改。
pci的配置空间如上图所示,每个设备的每个function都有独立的配置空间,大小为256b,前64b为表头,pcie设备的配置空间拓展为4kb。 所有pci的配置空间为: 16mb=256busx32device/busx8function/devicex256b/func 所有pcie的配置空间为: 256mb=256busx32device/busx8function/devicex4kb/func x86架构地址又分为memory space和i/o space。
i/o space可以理解为直接寄存器读写地址空间,属于x86早期产物,访问速率较慢。 x86:32bit(4gb) x64:64bit(16eb) i/o space:16bit(64kb)
从上图可知memory地址前640kb为conventional memory,1mb间的为boot rom,中间一段为dram内存,其余的分配给pci存储器域。i/o地址中可以通过cf8-cfb和cfc-cff访问pci的16mb配置空间,剩下的为各pci设备映射的i/o地址空间。
对于pcie而言,配置空间通过memory的方式映射(mmio),不再通过i/o map的方式访问,这会占用一部分系统内存,也是内存用不满的原因(还有主板上的集成显卡/bios等也会占用内存)。
华为P10和一加3T评测对比:好机一时难分胜负
5分钟加满、续航300+公里,博世江苏首个零碳氢运示范项目启动
华为 | 美国打压华为开创危险先例 其行为对网络安全有害无益
招投标资讯│德钦县农业农村局乡村振兴“百千万”示范工程太阳能路灯建设项目
TTI加大业务布局降低客户采购成本
PCIE协议技术交流
【新品】智能余压传感器压差控制器探测电梯前室压力监控排烟送风免接气管
Python是否会取代C/C++成为人工智能核心算法?
3350F系列大功率电子负载的性特点及功能应用
磁场计电路图分析
怎样使用ESP8266 Flasher和Programmer烧写ESP8266 AT固件
要加速智能汽车的发展,还有哪些办法?
简单分析影响智慧路灯价格的因素都有哪些
小米手机销量下滑后神逆转,印度市场如法炮制
中国电信发布行业首个云原生关系型数据库
一种简约整流电路的设计
隔离光耦--用于电子元件隔离的重要组成部分
TI推出业界首款面向A15处理器的高集成电源管理单元将平板电脑板级空间锐减60%
Altera与中国移动研究院宣布联合开发下一代C-RAN无线技术
联想Z6要来了 骁龙730、4000mAh电池容量