1、PCIe简介

PCIe,PCI-Express,主要优势是采用全双工的传输设计,在同一时刻允许数据同时进行接收和发送,数据传输速率高,抗干扰能力强,传输距离远,功耗低等。PCIe还引入了嵌入式时钟的技术(Embedded Clock),发送端不向接收端发送时钟,接收端可以通过编码规则(8b/10b或者128b/130b)从数据lane中恢复出时钟。

1.1、PCIe硬件链路

PCIe总线使用高速差分总线,采用端对端的连接方式,每一条PCIe链路中只能连接两个设备,这两个设备互为数据发送端和数据接收端,并且发送端和数据段均包含TX和RX。一个PCIe链路可以有多条lane组成(x1/x2/x4/x8/x16/x32),每一条物理链路中的一个数据通道lane,包含两组差分信号,4根信号线。发送端的TX和接收端的RX为一组,发送端的RX和接收端的TX为一组。

希望对大家有帮助 希望对各位粉丝有所帮助(1)

使用差分信号,注意布线在同一层且等长、等宽、贴近,差分信号的D 和D-距离很近而且信号幅值相等、极性相反,与地线之间耦合电磁场的幅值相等,互相抵消,可以有效抑制电磁干扰。

差分信号是由驱动端发送两个等值、相位相反的信号,接收端通过两个信号的电压差值来判断差分信号的逻辑状态。差分信号的优点,一是抗干扰能力较强,差分信号不受SSO噪声影响,其走线等长且贴近,外界噪声干扰同时耦合到两个信号上,而接收端只关心这两个信号的差值;二是能够有效抑制信号传递带来的EMI干扰,差分信号极性相反,对外界辐射的电磁场可以相互抵消;三是逻辑状态定位准确,差分信号的开关变化位位于两个信号的交点,而不是单端信号采用高低电源阈值进行判断,受工艺和外部环境影响小,因此接收逻辑较易判断逻辑状态;四是提供的数据带宽较高,差分信号受外界环境影响小,能够运行在较高的时钟频率,从而提供的数据带宽较高。

差分信号的共模电压和差值电压。

共模电压(Common Mode Voltage),Vcom = (V1 V2)/2;差值电压(Differential Voltage),Vdiff = V1-V2。

希望对大家有帮助 希望对各位粉丝有所帮助(2)

1.2、PCIe峰值带宽和有效带宽计算

传输速率是指每秒传输量GT/s,不是每秒位数GB/s。原因:传输量包括不提供额外吞吐量的开销位,PCIe(1.0&2.0)采用8b/10b的编码方式,PCIe链路上10bit中含有8bit的有效数据和2bit的开销位;PCIe(3.0及以上)采用128b/130b的编码方式,PCIe链路上130bit中含有128bit的有效数据和2bit的开销位。

峰值带宽,使用GT计算,总线频率*数据位宽(lane个数)*2

单lane峰值带宽:

PCIe 1.0版本:1.25*1*2=2.5GT/s

PCIe 2.0版本:2.5*1*2=5GT/s

PCIe 3.0版本:4*1*2=8GT/s

x2 lane峰值带宽

PCIe 1.0版本:1.25*2*2=5GT/s

PCIe 2.0版本:2.5*2*2=10GT/s

PCIe 3.0版本:4*2*2=16GT/s

其他以此类推

希望对大家有帮助 希望对各位粉丝有所帮助(3)

希望对大家有帮助 希望对各位粉丝有所帮助(4)

有效带宽,可以理解为PCIe链路的吞吐量=版本的传输速率*版本的编码方案,b—bit,B—Byte

PCIe 1.0版本:一条lane吞吐量计算:2.5 * (8/10) = 2Gbps = (2000/8)MB/s = 250MB/s

PCIe 2.0版本:一条lane吞吐量计算:5 * (8/10) = 4Gbps = (4000/8)MB/s = 500MB/s

PCIe 3.0版本:一条lane吞吐量计算:8 * (128/130) = 7.877Gbps = (7877/8)MB/s = 984.6MB/s

PCIe 4.0版本:一条lane吞吐量计算:16 * (128/130) = 15.754Gbps = (15.754/8)GB/s = 1.969GB/s

多条lane吞吐量计算:单lane的吞吐量乘以对应lane数

希望对大家有帮助 希望对各位粉丝有所帮助(5)

1.3、PCIe复位

PCIe总线规定了两种复位方式,一是传统的复位方式(Conventional Reset),二是FLR(Function-level Reset)。

传统的复位方式包括两大类,一类是Fundamental Reset,另一类是Non-Fundamental Reset。

Fundamental Reset包括Cold Reset和Warm Reset两种方式,可以将PCIe设备中绝大多数内部寄存器和内部状态都恢复成初始值(Vmux供电的寄存器无法恢复)。

Cold Reset方式:当一个PCIe设备的Vcc电源上电后,处理器系统置位该设备的PERST#信号,将引发PCIe设备的复位操作。所有使用Vcc供电的寄存器和PCIe端口逻辑将进行复位,Vaux供电的寄存器和逻辑无法复位。

1.4、PCIe的电源信号

PCIe设备使用两种电源信号供电,Vcc和Vaux,额定电压为3.3V。

Vcc:主电源,用于PCIe设备使用的主要逻辑模块的供电。

Vaux:用于与电源管理相关的逻辑模块以及一些特殊的寄存器(Sticky Register)的供电。

Vaux的功能:为了降低功耗和缩短系统恢复时间。Vaux在多数情况下并不会移除,Vcc供电后,设备不需要恢复Vaux相关的逻辑,迅速恢复至工作状态。

2、PCIe总线的层次结构

PCIe总线层次包括:事务层(Transcation Layer)、数据链路层(Data Link Layer)、物理层(Physical Layer)。

希望对大家有帮助 希望对各位粉丝有所帮助(6)

2.1、事务层——Transaction Layer

事务层(Transaction Layer),事务层定义了PCIe总线使用总线事务。

事务层的功能:TLP(Transaction Layer Packet)的组装和拆卸。接收来自PCIe设备核心层的数据,并将其封装成TLP(Transaction Layer Packet),发至数据链路层;从数据链路层中接收数据报文,然后转发至PCIe设备的核心层。

PCIe的总线事务包括:寄存器读写、I/O读写、配置读写总线事务、Messenge总线事务和原子操作。

PCIe采用Split传送方式处理所有Non-Posted事务。寄存取读写、I/O读写、配置读写总线事务均属于Non-Posted事务。

Non-Posted总线事务分两部分组成,首先是发送端向接收端提交总线读写请求,之后接收端再向发送端发送完成(Completion)报文。

2.1.2、TLP(事务层数据报文)的格式

希望对大家有帮助 希望对各位粉丝有所帮助(7)

一个完整的TLP由1个或多个TLP Prefix、TLP头、Data Payload(数据有效负载)和TLP Digest组成。

TLP Prefix由PCIe V2.1总线规范引入,分为Local TLP Prefix和EP-EP TLP Prefix两类。Local TLP Prefix主要作用是在PCIe链路的两端传递信息,EP-EP TLP Prefix主要作用是在发送设备和接收设备之间传递信息。设置TLP Prefix的主要目的是为了扩展TLP头,并以此支持PCIe V2.1规范的一些新的功能。

Data Payload的长度可变,最小为0,最大为1024DW。可选项,寄存器读请求、配置和I/O写完成TLP不需要Data Payload。

TLP Digest是一个可选项,由TLP头所决定。

TLP头是TLP最重要的标志,包含了当前TLP的总线事务类型、路由信息等一系列信息。TLP头由3个或4个双字(DW)组成。其中第一个双字中保持通用TLP头,其他字段与通用TLP的Type字段相关。一个通用TLP头由Fmt、Type、TC、Length等字段组成。

希望对大家有帮助 希望对各位粉丝有所帮助(8)

2.2、数据链路层——Data Link Layer

数据链路层充当事务层和物理层之间的中间阶段。数据链路层的主要职责包括链路管理和数据完整性,包括错误检测和错误纠正。数据链路层的发送方接受事务层组装的TLP,计算并应用数据保护代码和TLP序列号,以及将它们提交给物理层以在链路上传输。接收数据链路层负责检查接收到的TLP的完整性,并将它们提交给事务层以进行进一步处理。在检测到TLP错误时,此层负责请求重发TLP,直到正确接收信息或确定链路失败为止。数据链路层还生成并使用用于链路管理功能的数据包。为了将这些数据包与事务

层(TLP)使用的数据包区分开,当指代在数据链路层生成和使用的数据包时,将使用术语“数据链路层数据包(DLLP)”。

2.3、物理层——Physical Layer

PCIe总线的物理层为PCIe设备间的数据通信提供传送介质,为数据传送提供可靠的物理环境。物理层包括用于接口操作的所有电路,包括驱动器和输入缓冲器、并行至串行和串行至并行转换、PLL和阻抗匹配电路。它还包括与接口初始化和维护有关的逻辑功能。物理层以实现特定的格式与数据链路层交换信息。该层负责将从数据链路层接收的信息转换为适当的序列化格式,并以与连接到链路另一端的设备兼容的频率和通道宽度在PCI Express链路上传输该信息。

PCIe总线的物理层定义了LTSSM (LinkTrainingand Status State Machine)状态机,PCIe链路使用该状态机管理链路状态,并进行链路训练、链路恢复和电源管理。

物理层在数据链路层和PCIe链路之间的主要作用,一是发送数据链路层的TLP和DLLP,二是发送和接收在物理层产生的报文PLP(Physical Layer Packet),三是从PCIe链路接收数据报文并传送到数据链路层。

物理层主要由物理层逻辑模块和物理层电气模块组成。物理层逻辑模块,包括8/10b编码、链路训练等。PCIe总线的物理层对信号传送进行了一系列约定,以保证信号传递的完整性。信号完整性的目标,一是保证发送的信号可以被接收端正确接收;二是保证发送的信号不会影响其他信号;三是保证发送的信号不会损坏接收器件;四是保证发送的信号不会产生较大的EMI电磁噪声。

PCIe总线的物理层通过LTSSM状态机对PCIe链路进行配置与管理,并与数据链路层进行数据交换,由逻辑子层和电气子层组成。逻辑子层与数据链路层进行数据交换,由发送逻辑Tx和接收逻辑Rx组成。

希望对大家有帮助 希望对各位粉丝有所帮助(9)

2.4、TLP组包(Transaction Layer Packet Assembly)

设备核心层发送在事务层组包的TLP(Header Data ECRC)。

ECRC(End-to-End CRC),端到端的CRC校验码。通过数据包的发送方和接收方之间的任何服务点(比如交换器或根端口)不变传递,在目的地验证传输途中是否有错误。

LCRC(link CRC),数据链路层附加一个序列号(Sequence Number)和链路CRC(LCRC),相邻接收器使用LCRC对链路发送的每个数据包进行检查,并将结果报告至发送端。

CRC(Cyclic Redundancy Check),循环冗余校验,几乎所有串行体系结构都采用CRC进行校验,易于实现并具有非常大的错误检测功能。

物理层将添加Start End字符至数据包中,所有可用通道对数据包进行编码并在链路上进行差分传输。

希望对大家有帮助 希望对各位粉丝有所帮助(10)

2.5、TLP解包(Transaction Layer Packet Disassembly)

TLP解包:识别TLP,并删除为恢复发送端(发送端的事务层、数据链路层、物理层)请求的原始信息而增加的冗余部分。

物理层,验证是否存在Start和End字符或者其他字符并删除,传输至数据链路层。

数据链路层,检查LCRC和序列号(Sequence Number)错误,并删除字段后转发至事务层。

希望对大家有帮助 希望对各位粉丝有所帮助(11)

3、PCIe总线拓扑图

Root Complex(根复合体),又称RC或Root,CPU和PCIe总线系统的通信媒介,CPU和PCIe总线之间的接口可能包含多个组件(处理器接口或者DRAM接口),甚至包含多个芯片。Endpoint处于PCIe总线系统拓扑结构中的最末端,通常作为总线操作的发起者或终结者,只能接收上级拓扑的数据包或者向上级拓扑发送数据包。

交换器和桥(Switches and Bridges), 交换机(Switch)提供扇出或聚合功能,并允许更多设备连接到单个PCIe端口。充当数据包路由器,并根据其地址或其他路由信息识别给定数据包需要走的路径。桥接器(Bridges)提供到其他总线的接口。端点(Endpoints)是PCIe拓扑中的设备,既不是交换器也不是桥接器,而是充当总线上的事务的发起者和完成者。位于树形拓扑分支的底部,并且仅实现上游端口(面向跟ROOT)。一台交换机可能有多个下行端口,但只能有一个上行端口。

希望对大家有帮助 希望对各位粉丝有所帮助(12)

希望对大家有帮助 希望对各位粉丝有所帮助(13)

希望对大家有帮助 希望对各位粉丝有所帮助(14)

,