高速协议和设备应用——翻译5.5章

第5章 各类协议标准概述
5.5 PCIE 协议
PCI Express(Peripheral Component Interconnect Express)是一种用于在计算和通信平台中连接外围设备的高性能I/O总线架构。它是从PCI和PCI-X演变而来的第三代架构,专门设计用于克服这些总线的性能限制。除了性能优势之外,PCI Express还降低了系统成本,因为它在设备上需要较少的封装引脚和更少的系统板线路。此外,PCI Express系统与PCI/PCI-X的软件向后兼容,因此现有的操作系统可以在不更改驱动程序或应用程序的情况下移植到PCI Express。
PCI Express是由Peripheral Component Interconnect Special Interest Group (PCI-SIG)成员开发的。最初的PCI Express基本规范于2003年4月发布,各种勘误在2005年3月发布的修订版本1.1中得到了纠正。该文档规定了所谓的PCI Express第一代,采用了2.5-Gbps Serdes技术。该文档的修订版本2.0,通常称为PCI Express第二代,于2006年12月发布,并增加了对5.0-Gbps波特率的支持。
“PCI Express Card Electromechanical 2.0 Specification”是一个额外的附属规范,定义了PCI Express设备的电机械形态因素。这些包括:
Card electromechanical:
该形态因素适用于类似PCI卡的标准PC插卡,并支持从x1到x16的链路宽度。该形态因素主要用于图形卡,尽管也有其他可用的卡模块,如USB和网络适配器。
Mini-card electromechanical:
这种形态因素类似于笔记本电脑和其他需要小尺寸和低功耗的PCMCIA卡。仅支持x1链路宽度;采用了降低的信号幅度。
Express module:
这种形态因素适用于机架式服务器中的可热插拔卡。形态因素支持单宽模块中的链路宽度从x1到x8,并且在双宽模块中支持从x1到x16的链路宽度。
遵循上述电机械规格的实现的HSS核特性设置可以进行特征化,并且可以由供应商提供的应用文档进行规定。然而,芯模块到芯模块的链接和定制实现仍然需要与其他应用所需的信号完整性分析相同的特性设置。可能在多个系统中使用的PCI Express卡应考虑提供HSS特性的可配置性,以便在非标准电机械环境中使用。
5.5.1 PCI Express 架构
本节描述了PCI Express总线的拓扑结构以及与PCI Express相关的设备协议层。
5.5.1.1 物理拓扑
计算机对数据带宽的需求不断增加。过去,PCI和PCI-X系统通过使用多点并行总线提供了足够的性能,其中多个设备共享每个总线。通过增加有效总线时钟频率(从33 MHz、66 MHz、133 MHz等),可以实现性能提升。然而,随着频率的增加,这些架构需要对每个总线上的设备数量进行限制,以控制电气负载。
PCI Express层次结构与PCI的物理结构有着显著不同。PCI Express的物理层是一种点对点连接,类似于其他使用Serdes技术的标准。该层次结构通过交换机将流量路由到组件。每个交换机端口都是一个虚拟的PCI到PCI桥接器;这允许现有的PCI软件枚举组件的层次结构。
图5.28展示了典型PCI Express系统中的主要组件,包括CPU、内存、根节点、端点设备、交换机和连接到遗留PCI/PCI-X总线的桥接器。根节点将CPU和内存子系统连接到PCI Express结构。它为CPU生成PCI Express事务请求,并通过其中一个端口将其传输到目标设备(端点或交换机)。当请求到达端点设备时,设备通过读取请求的数据或将数据写入目标位置来完成事务。此外,端点可以通过链接发起自己的事务到根节点、另一个端点或交换机。USB设备和以太网网卡是端点设备的两个示例。

交换机将多个PCI Express设备连接在一起。交换机的每个端口在逻辑上都像是一个PCI到PCI桥接器,因为它的唯一目的是将来自传入端口(入口端口)的数据包转发到目标端口(出口端口)。每个交换机都包含仲裁逻辑,用于确定发送的数据包的优先级。
5.5.1.2 设备层
图5.29说明了PCI Express设备的分层架构。顶层是设备核心(Device Core),它发起对PCI Express结构的事务,并执行来自其他设备的事务。该层通过PCI Express核心逻辑接口与结构通信。PCI Express不规定设备核心和PCI Express核心逻辑接口;这些层是应用特定的逻辑,这些层的设计因实现而异。根节点核心逻辑和端点以太网控制器是设备核心的两个示例。
每个设备必须支持栈的底部三层的功能:事务层、数据链路层和物理层。这些层由一个发送部分组成,该部分通过链路的发送(Tx)端处理出站流量,并由一个接收部分处理来自接收(Rx)端的入站流量。每个这些层都对PCI Express数据包中的字段的生成和处理有所贡献,如图5.30所示。
事务层将来自设备核心的信息组装成一个事务层数据包(TLP)进行传输。该数据包包括一个标题,最多1024个32位数据(4 KB),以及一个可选的端到端CRC(ECRC)字段,用于错误检测。TLP被转发到数据链路层,该层连接一个序列号和链路CRC(LCRC),并将结果TLP存储在本地重试缓冲区中。LCRC的目的是检测传输中的错误。接下来,TLP到达物理层,物理层附加一个字节的起始定界符号和一个字节的结束定界符号。物理层对数据包的字节进行8B/10B编码以进行传输。
在链路的另一侧,接收设备按照相反的过程处理数据包中的字段,并将TLP转发给事务层。首先,物理层对传入的比特流进行反序列化,解码8B/10B符号,并移除起始/结束定界符号。然后数据链路层处理序列号和LCRC字段以检查错误,并移除这些字段。如果没有错误,数据链路层将向传输设备发送确认(ACK)数据链路层数据包(DLLP),以确认数据包的成功传送,并允许传输设备从其重试缓冲区中删除数据包。(如果数据链路层检测到数据包中的LCRC错误或其他错误,则向传输设备发送负面确认(NAK)DLLP,并重新发送数据包。)然后数据链路层将TLP转发给事务层,事务层使用ECRC字段检查端到端路径中的错误,并将TLP转发给设备核心。
5.5.2 物理层逻辑
PCI Express物理层包括物理层逻辑和物理层电气规格。物理层电气规格通常由HSS核实现,而逻辑规格则由伴生逻辑实现。
物理层逻辑的模块图如图5.31所示。一个n位宽端口由n个发送和n个接收HSS通道以及相关逻辑组成,用于执行发送和接收路径的物理层功能。执行训练的状态机逻辑也是端口的必要组成部分。
5.5.2.1 物理层发送逻辑
图5.31中传输数据路径的功能如下所述。

物理数据包生成。物理层从数据链路层接收TLP或DLLP,并通过添加控制符号形成物理数据包。PCI Express定义了以下控制符号,对应于8B/10B块编码中的10位控制符号。这些符号根据需要添加到传输路径中。
STP / SDP – 开始符号 (K27.7, K28.2)。物理层添加一个开始符号来界定数据包的起始。定义了两个开始符号:开始TL数据包(STP)表示TLP的开始,开始DLL数据包(SDP)表示DLLP的开始。
END / EDB – 结束符号 (K29.7, K30.7)。物理层还添加一个结束符号来界定数据包的结束。定义了两个结束符号:正常结束(END)表示数据包的正常结束,坏结束(EDB)表示要忽略的数据包的结束(可能是因为包含错误)。
COM – 逗号符号 (K28.5)。COM符号是有序集的第一个符号。有序集在下面进行描述。
SKP – 跳过符号 (K28.0)。SKP符号作为跳过有序集的一部分进行传输。有序集在下面进行描述。
FTS – 快速训练序列符号 (K28.1)。FTS符号作为快速训练序列有序集的一部分进行传输。有序集在下面进行描述。
EIE – 电气空闲退出 (K28.7)。EIE符号作为用于速度大于2.5 GT/s的系统中的电气空闲退出有序集的一部分进行传输。有序集在下面进行描述。
PAD – 补充符号 (K23.7)。在数据包末尾,如果需要,PAD符号会被传输到未使用的通道上。
IDL – 空闲符号 (K28.3)。IDL符号作为电气空闲有序集的一部分进行传输。有序集在下面进行描述。
TS1 / TS2 – 训练序列符号 (D10.2, D5.2)。TS1和TS2符号是传输训练序列有序集中的数据符号,用于识别有序集的类型。
PCI Express定义了以下有序集:
训练序列。在链路训练期间,传输训练序列有序集TS1和TS2用于协商端口参数。稍后在本节中会更详细地描述这一点。
跳过有序集。跳过有序集被安排定期传输。定期间隔必须至少每1538个符号时间一次,但不得超过每1180个符号时间一次。此有序集由符号序列(COM, SKP, SKP, SKP)组成。接收器逻辑可以在弹性缓冲器阶段添加/删除这些符号,以便补偿接收时钟与本地时钟之间的频率差异。
请注意,数据包的传输不能被跳过有序集中断。因此,如果在传输数据包时计划传输跳过有序集,则在数据包传输完成后才传输跳过有序集。这可能导致接口上出现超过1538个符号时间的跳过有序集发生。
电气空闲有序集。此有序集由传输端口传输,以通知接收端口发射机希望将链路转换为电气空闲电源管理状态。此有序集由符号序列(COM, IDL, IDL, IDL)组成。
快速训练序列有序集。此有序集由传输端口传输,以快速训练接收端口,并在退出电气空闲电源管理状态后使接收端口实现符号锁定。此有序集由符号序列(COM, FTS, FTS, FTS)组成。
电气怠速出口命令设置。当运行速度大于2.5 GT/s时,该有序集在退出电气空闲电源管理状态后,在发送TS1/TS2有序集之前由发送端口发送。它也在TS1/TS2有序集之间周期性传输。这个有序的集合有足够的低频分量,以确保接收机的电气空闲检测电路识别出退出条件。(一些电路实现在没有低频内容的高损耗通道上难以检测出口条件。)有序集由符号序列(COM、14个EIE符号、TS1)组成。
物理包生成阶段传输TLP或DLLP数据内容、控制符号或有序集。如果以上都不需要传输,则传输逻辑空闲符号(“00”h字节)。
字节条带:
PCI Express指定端口,每个端口上的链路宽度为1、2、4、8、12、16或32个电气链路。在这些允许的宽度中,只有1、4、8和16的链接宽度是行业中常用的。链路宽度和相应的数据带宽如表5.21所示。给定端口的链路宽度在训练过程中动态确定。对于n-link端口,字节被分条到通道,这样第一个字节在通道0上传输,第二个字节在通道1上传输,以此类推。
当端口的链路宽度大于1时,跨端口链路的数据包和有序集的对齐遵循以下规则:
•除非数据包紧接另一个数据包的末尾,否则开始数据包分隔符总是在通道0上传输。在这种情况下,开始数据包分隔符必须在通道号可被4整除的通道上传输(即通道0、4、8等)
•结束数据包分隔符总是在通道号可被4 -1整除的通道上传输(即通道3、7、11等)。如果另一个包没有在包的末尾开始,那么该行的其余部分将用PAD符号填充。
•有序集和逻辑空闲序列必须同时在所有通道上传输。有序集不是跨通道的字节条纹,而是在所有通道上并行传输。
扰频器:
使用侧流扰频器执行扰频,该扰频器实现以下多项式:
G(x) = x16 + x5 + x4 + x3 + 1。(5.9)
多链路端口的每条链路的扰频器状态值必须同步,这样所有链路在任何时候都具有相同的扰频器状态值。数据符号和逻辑空闲序列被打乱;有序集合和其他控制符号不会被打乱。
无论字节是否被打乱,每传输一个字节,扰码器状态都会更新8位。SKP符号是例外。当传输SKP符号时,扰频器状态不会前进,因为接收方逻辑可能会在除扰阶段之前添加/删除SKP符号。
每当COM符号被传输时,扰频器被重置为全1的状态。
8B/10B编码器
该阶段将每个字节编码成相应的8B/10B编码符号,驱动HSS发射机的并行数据输入。第4.2.2.1节描述了8B/10B块编码。
5.5.2.2物理层接收逻辑
图5.31中接收数据路径的作用如下。
弹性缓冲
这个阶段由一个弹性FIFO组成,以补偿从HSS核心接收时钟和本地参考时钟之间的时钟频率差异。如果接收时钟比本地时钟快,则根据需要删除SKP符号,如果接收时钟比本地时钟慢,则在传入数据中的SKP符号之后添加额外的SKP符号,从而实现这种补偿。
这一阶段的实现通常包括一个在缓冲区输入上执行符号对齐的函数。这是通过在传入数据中搜索COM符号,并在需要时触发RXxDATASYNC(或者通过步进桶移位器的位置)来调整对齐来执行的。PCI Express将此过程称为实现符号锁。
8B/10B解码器
该阶段将每个8B/10B符号解码成相应的数据或控制字节。第4.2.2.1节描述了8B/10B块编码。
解扰
该阶段以类似于在传输数据路径上进行的加扰的方式对数据进行解扰。
字节非条带化
这一阶段与发送端使用的字节条带化过程相反。在多通道端口实现中,此阶段的一个关键功能是通道间的数据去偏移。虽然PCI Express没有精确地指定如何做到这一点,但常用的方法是根据需要添加延迟,以便有序集合的COM符号在所有通道上彼此对齐。
物理分包处理
这个阶段从分组中去除分组帧的开始和结束符号,并将TLP或DLLP转发到数据链路层。
5.5.2.3链路训练
物理层还实现了与链路训练相关的状态机,如图5.31所示。训练序列和状态机实现的详细描述超出了本文的范围,但是,该过程总结如下。
以下端口参数作为链路训练序列的一部分进行协商:
链接宽度。给定链路上的发送端口和接收端口可以具有不同的链路宽度。训练序列确定链路上每个端口的宽度,并选择两个端口都支持的宽度。
极性反转。PCI Express允许物理实现有意或无意地反转电差分信号的真/补信号。这导致接收到的数据极性被反转。训练序列检测到极性已经反转,如果需要,将接收到的数据反转以纠正这一点。
链路数据速率。PCI Express Gen 1端口在每个链路上使用2.5 Gbaud/s的波特率,而PCI Express Gen 2端口可能额外支持5.0 Gbaud/s的波特率。未来几代规范将定义更高的波特率。在训练期间,每个节点发布支持的速度,链路被初始化以选择两个端口都支持的速度。
通道的逆转。PCI Express允许物理实现反转相对于逻辑通道分配的物理通道布线。这可能是可取的,以减少电路板成本,作为一个例子。可选地,一个端口可以支持检测到通道号的分配是反向的,并在字节非条带化阶段支持相应的字节重排序。如果端口不支持通道反转,那么协商可能会导致较低的链路宽度,以建立通信路径。
在训练序列中,发送端口在每条链路上发送TS1或TS2有序集。这些有序集合有16个符号长,并公布各种端口特征,以便协商上述端口参数。每个端口根据接收到的训练序列中的广告特征确定其伙伴的特征,然后进行相应的适应。
接收链路还训练其CDR电路,实现符号锁定,并在训练序列中执行通道到通道的倾斜。接收器必须功能齐全,并准备在训练序列完成之前接收数据。
5.5.3电气物理层
本章节介绍实现PCI Express物理层所需的电参数和特性。
5.5.3.1差分信号参数
PCI Express规范使用眼图测试发射器和接收器的合规性,用于发射器输出和接收器输入的抖动公差信号。变送器电气参数如表5.22所示。接收机的电气参数见表5.23。请注意,一些接收器参数根据波特率而变化。还要注意,根据发射器和接收器是否使用相同或不同的参考时钟源,在5.0 Gbps下适用不同的规范。

所有PCI Express变体的波特率都指定为+300 ppm的公差。这种容差不仅允许链路两端时钟参考之间的频率变化,而且允许扩频时钟(SSC)。SSC在一定范围内改变参考时钟频率,以减少EMI发射,如2.3.10节所讨论的,用于HSS EX10核心。
发射机规格允许降低对输出信号的强调。发射机中的FFE可以校正由信道引起的码间干扰。PCI Express假定接收器中没有均衡。
5.5.3.2特殊电气信号支持
支持PCI Express的HSS内核需要实现许多独特的功能。PCIE规范的可选特性需要提供额外的支持。本节将对这些特性进行总结。注意,这些特性中有几个与电源管理状态有关,将在第5.5.4节中讨论。
 电气空闲状态
当处于电气空闲状态时,发射机输出被驱动到共模电压。在转换到这种状态之前,发射机必须发送一个或多个电气空闲有序集。为了回到工作状态,发射机必须发送FTS(用于从L0s功率状态退出)或TS1/TS2有序集(用于从L1功率状态退出)。
接收方接收到电气空闲有序集后,进入电气空闲状态。接收器在看到输入上的差分电压超过电气空闲状态期间允许的值时退出此状态。
支持PCI Express的HSS发送器必须提供在链路上驱动电空闲状态的能力。当发送器处于电空闲状态时,HSS接收器可以继续运行并接收数据,或者可能部分断电。无论哪种方式,RXxSIGDET输出表明没有信号幅度。当HSS发送器恢复发送串行数据时,接收器必须重新通电(如果适用),重新训练CDR电路,并重新获取符号锁。如果接收器断电,信号检测电路必须保持通电状态,这样才能检测到唤醒事件。显然,如果接收器断电,重新训练CDR和重新获取符号锁需要更多的时间。
 接收端检测
发送端复位后进行链路检测,以确定对端是否有接收端连接。这是通过驱动链路的直流共模电压的突然变化来完成的(从地轨到VDD电源轨或反之亦然),并监控电线上的共模电压稳定到新值所需的时间量。如果存在接收器,则对接收器的交流耦合电容充电会导致该稳定时间相对较慢。如果没有接收器存在,则稳定时间相对较快。支持PCI Express的HSS发射器必须提供驱动接收器检测事件和检测电路以确定结果的能力。
 信标信令
信标信令在PCI Express规范中是可选的,可以用于L2电源状态的实现。发射机在链路上发送一个称为信标信号的低频高/低波形,以指示希望退出L2电源状态并返回到全开状态。信标信号的脉冲宽度不小于2ns,不大于16us。接收器在L2电源状态下断电,但必须有一些电路活动,可以检测信标信号并通知端口的电源管理功能。支持PCI Express的HSS接收机必须提供检测信标信号的能力。
5.5.4电源状态
PCI Express定义了L0、L0、L1、L2和L3四种电源管理状态,每一种状态的目的是逐步降低功耗。
L0电源状态:链路发送器和接收器在此电源状态下完全工作。
L0s电源状态:如果物理层发送逻辑在一段时间内没有TLP或DLLP流量需要发送,发送端可以主动进入L0s电源状态。进入/退出电气空闲状态的协议在5.5.3.2节的“电气空闲状态”中进行了描述。当发射机再次有有用的通信量要传输时,它退出电空闲状态并重新训练接收机。
请注意,PCI Express标准中存在详细的规则,规定了链路何时进入和退出L0s电源状态。这些规则根据PCI Express体系结构中的设备类型而变化。还有物理层规范规定了进入和退出L0s电源状态所需的最大响应时间,以及发射机在启动后必须保持在此电源状态的最短时间。这些规范超出了本文的范围。
L1电源状态:物理层可以根据数据链路层的指示进入L1电源状态。发送端口和接收端口必须协商一致才能进入L1电源状态。这种协商是通过每个节点的数据链路层之间的DLLP流量进行的,其描述超出了本文的范围。
发射机进入L1电源状态的方式与进入第5.5.3.2节“电气空闲状态”中描述的L0s状态类似。发射机通过发送TS1/TS2有序集退出L1电源状态。在L1电源状态下,接收器可能会断电。为了退出L1电源状态,接收器上的信号检测电路(在此状态下接收器没有掉电)检测信号并将端口逻辑恢复到接收器上电。当退出L1电源状态时,重新训练接收器的恢复时间预计比退出L0s电源状态时要长。
与L0s电源状态的情况一样,PCI Express规定了物理层状态转换的要求,这些转换适用于进入/退出L1电源状态。这些规范超出了本文的范围。
L2电源状态:物理层根据请求进入和退出L2电源状态。在这种电源状态下,HSS核心的很大一部分可以断电,包括部分锁相环逻辑。处于L2电源状态的端口可以通过向其链路伙伴发送信标信号来请求退出此状态。仍然通电的部分接收器可以检测到这个信标信号,并将这个请求传播给系统电源管理软件。
5.5.5 PCI Express实现示例
图5.32显示了PCI Express协议栈的IBM实现。此实现用于演示如何将PCI Express层划分为功能块的一个示例。PCI Express协议的各层划分为图5.32所示的核,如下:

GBIF转PLB Core (GPL)。GPL实现了PCI Express核心逻辑接口层,将事务层逻辑连接到供应商特定的处理器接口。该层依赖于应用程序,不受PCI Express标准的指定。
上层事务层核心(UTL)。UTL实现了部分事务层逻辑,包括事务的生成和排序、端到端CRC的生成和校验以及虚拟通道仲裁。
配置空间核心(CFG)。CFG实现了PCI Express标准指定的配置控制寄存器。该核心支持用户支持逻辑和XBUS接口的接口。
事务、数据链路和逻辑物理核心(TLDLP)。TLDLP实现剩余的事务层功能、数据链路层和部分物理层逻辑,包括物理层数据包生成和处理、字节条带化和非条带化、加扰和解扰以及训练序列生成和控制。
物理接口逻辑(PHYIF)。PHYIF实现其余物理层逻辑功能,包括8B/10B编解码和用于时钟补偿的弹性缓冲。
PCI Express Architecture的PHY接口(PIPE)将第2代协议包装器的TLDLP核心连接到PHYIF核心。该接口的规范是由几家公司开发并由英特尔发布的行业标准。该标准旨在促进物理层的较低级别与不同供应商提供的较高级别协议栈的互操作性。该规范还规定了TLDLP和PHYIF内核之间的物理层功能分配。读者可以参考标准文档获取更多信息。
第2章中描述的HSS EX10核心包括专门用于支持PCI Express协议的功能。这些特征在第2.2.9节中描述了发射机模块,2.3.13节中描述了接收机模块。支持PCI Express的其他电源管理特性将在第2.4.8节中描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值