PCIe基础知识概述

本文详细介绍了PCIe(PCIExpress)的起源、传输速度提升、拓扑结构、分层架构、配置空间管理、功能模式以及TLP类型的多样性,展示了PCIe作为高性能计算机扩展总线的特性及其在现代IT系统中的重要性。
摘要由CSDN通过智能技术生成

1.PCIe概述

了解PCIe之前,绕不开PCI,因此,我们先介绍一下PCI。PCI(Peripheral Component Interconnect)是1991年英特尔公司推出的局部总线标准。采用并行总线结构,即在同一条总线上所有外设设备共享总线带宽,因此会出现抢占总线的情况,带宽有限。通讯速率较慢,其中地址线和数据线复用。下图中的白色框中的就是传统的PCI接口,上边是时间更长的ISA总线。

而PCIe采用的是点对点传输,串行通信,通信速率快,每个设备都独自拥有一条总线。如下图所示:

PCIe(peripheral component interconnect express)高速串行计算机扩展总线标准,是由英特尔公司2001年提出的。

两个PCIe设备之间通信是串行通信的,如下图所示,即RX+ RX- TX+ TX-,即同一时刻既可以实现收数据,也可以发数据,以差分信号传输,具有一定的抗干扰能力。这四条线称为一个lane,其中PCIe最多支持32个Lane。

2.PCIe传输速度

如上图所示,分别是PCIe1.0/2.0/3.0 X1 X2....X32的传输速度。

其中X1代表1条Lane,X2代表2条Lane...X16代表16条Lane。

PCIE 1.0 线上比特传输速率 2.5Gb/s,物理层使用的8/10编码,也就是8比特得到数据实际传输10比特;PCIE 2.0 线上比特传输速率 5Gb/s,物理层使用的也是8/10编码;PCIE 2.0 线上比特传输速率 8Gb/s,物理层使用的也是128/130编码。

所以

PCIE1.0 X1带宽 = (2.5Gb/s * 2(双向通道))/ 10 bit = 0.5GB/s。

PCIE2.0 X1带宽 = (5Gb/s * 2(双向通道)) / 10 bit = 1GB/s。

PCIE3.0 X1带宽 = (8Gb/s * 2(双向通道))/ 8 bit = 2GB/s。(如果只是读或者写速度,则减半)

3.PCIe拓扑结构

计算机中的每个通信设备想象成一个点,他们之间传输的介质想象成一条线,这些点和线组成的结构成为拓扑结构。

PCIe采用的树形拓扑结构,如下图所示:

Root Complex是树的根,内部集成了一条PCIe总线(Bus 0)和若干个PCIe桥,扩展出一些PCIe port。

switch用于扩展链路,提供更多的端口来连接更多的PCIe设备。其内部也集成了一根PCIe总线,然后通过若干个PCIe桥扩展出更多的下游端口,如下图所示。

4.PCIe分层结构

PCIe的层次结构如下图:

PCIe传输的数据都是从上向下以数据包(Packet)的形式传输,每层数据包都有其固定的格式。

PCIe定义了三层,分别是:

事物层(Transaction layer)

数据链路层(Data Link Layer)

物理层(Physical Layer)

各层的细节图如下图所示:

事物层给原始数据加上了headerECRC,组成了TLP,传输给数据链路层;数据链路层给TLP加上了SequenceLCRC,组成了Link Packet,传输给物理层,物理层给Link Packet加上了startend,最终传输给另外一个PCIe设备,另外一路PCIe设备经过层层解析,解析过程如下图所示,最终得到了原始数据。

每个PCIe终端设备都需要这三层,同样switch模块也需要这三层,因为如果switch模块没有这三层,就无法解析原始数据,进而就无法获得数据要发往的地址,因而就无法实现转发功能。如下图所示:

5.PCIe配置空间和地址空间

每个PCIe设备都有这样一段空间,主机可以通过读取这段空间来获得该设备的相关信息,同时也可以通过配置这段空间来配置该设备,这段空间就称为PCIe的配置空间。

PCIe设备的配置空间都是协议规定好的,哪个地方放什么内容,都是规定好的,都是有定义的。

如下图所示,左图是PCI设备的配置空间,右图是PCIe设备的配置空间。PCIe为了兼容前者,前边的空间保持不变,在此基础上向后扩展,前边的空间保持不变,把整个配置空间由256B扩展成4KB。(每个PCIe系统最多支持256条bus,每条bus上最多挂32个设备,每个设备最多实现8个function,每个function对应4KB的配置空间,上电时,这些配置空间需要映射到主机的内存地址空间,大小为256×32×8×4KB=256MB,这只是内存空间的某个区域,不占用DRAM空间)。

对于PCIe而言,终端设备(end point)的配置空间和switch的配置空间是不一样的,前者是type0,后者为type 1。具体区别见下图:

6.PCIE功能模式

以JX3630为例,功能模式分为两种:base模式和Virtual Switch模式。

7.PCIe非透明桥模式

非透明桥(Non-Transparent Bridging)

即两个系统之间如何通信,即系统A的CPU如何直接访问系统B的内存和外设,而非间接。使用非透明桥即可完成。

如上图所示,系统A想要访问系统B中的某个外设,存在两个问题

1.通过哪种物理路径;

2.两个系统可能存在同样的地址分配,造成地址冲突;

先看下传统透明桥的路由:

透明桥前后,地址不变,都是1500H。

然后再看一下非透明桥的路由:

可以看出,非透明桥前后,地址发生了变化,变化后的地址,适用于系统B内的寻址。当然,这个地址变化涉及到非透明桥内的BAR资源的相关知识。

再看一下非透明桥的典型应用:

1.单NT模式

 如上图左边,正常情况下,Host1访问、管理下面的设备EP。Host2不参与,处于Standby状态。当Host1出现异常时,Host2接管系统,Host2重新配置Switch,把原来的NT口配置成Upstream Port,并且重新分配、枚举PCIe设备资源。然后Host2接管下面EP设备的访问、管理。

2.双NT模式

两个系统分别管理着自己的EP设备,且两个系统通过NT可以实现互相访问对向资源。

8.PCIe中的TLP类型

PCIe设备之间的数据传输都是以packet形式进行的。事物层根据软件层或者应用层请求的类型、目的地址和其他相关属性,把这些请求打包,最终产生TLP(Transaction Layer Packet)。TLP经历数据链路层、物理层最终到达目标设备。

根据请求类型不同,事物层共产生四种不同的TLP请求:

1.Memory

2.IO

3.Configuration

4.Message

前3种分别是访问内存空间、IO空间、配置空间的,在PCI上就有,最后的message是PCIe新加的。

所有的配置空间的访问,都是Host发起的,只在上电枚举或配置阶段会发起配置空间的访问。Message也是,只有在中断时,挥着有错误的时候,才会产生Message的TLP。目前的PCIe设备都是Memory访问了,IO空间是为了兼顾之前的老设备,所以Memory之间的交互,是我们目前最常见的TLP。

一个TLP,最多只能携带4KB有效数据。

每个设备(RC、Switch、Function)在PCIe中都有唯一的ID,该ID是由总线(Bus)、设备(Device)、功能(Function)三者唯一确定。

9.TLP的结构

TLP主要由三部分组成:Header,Data和CRC。

Data Payload域,用以放有效载荷数据。

ECRC(End to End CRC)域,它对之前的Header和Data(如果有的话)生成一个CRC。

这里重点介绍一下Header,Header大小可以是3DW,也可以是4DW。其中,4DW的header如下图所示:

参考资源:

非透明桥 Non-Transparent Bridging

PCIE介绍

  • 28
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值