PCIE学习资料改.docx
《PCIE学习资料改.docx》由会员分享,可在线阅读,更多相关《PCIE学习资料改.docx(19页珍藏版)》请在冰豆网上搜索。
PCIE学习资料改
WhitePaper
了解PCIExpress的基本工作原理
Synopsys产品市场营销经理ScottKnowlton
2007年9月
从并行转向串行
PCIExpress®(或称PCIe®),是一项高性能、高带宽,此标准由互连外围设备专业组(PCI-SIG)制
订,用于替代PCI、PCIExtended(PCI-X)等基于总线的通讯体系架构以及图形加速端口(AGP)。
转向PCIe主要是为了实现显著增强系统吞吐量、扩容性和灵活性的目标,同时还要降低制造成本,而这
些都是基于总线的传统互连标准所达不到的。
PCIExpress标准在设计时着眼于未来,并且能够继续演
进,从而为系统提供更大的吞吐量。
第一代PCIe规定的吞吐量是每秒2.5千兆比特(Gbps),第二代规
定的吞吐量是5.0Gbps,而最近公布PCIe3.0标准已经支持8.0Gbps的吞吐量。
在PCIe标准继续充分利
用最新技术来提供不断加大的吞吐量的同时,采用分层协议也便于PCI向PCIe的演进,并保持了与现有
PCI应用的驱动程序软件兼容性。
虽然最初的目标是计算机扩展卡以及图形卡,但PCIe目前也广泛适用于涵盖更广的应用门类,包括网络
组建、通信、存储、工业电子设备和消费类电子产品。
本白皮书的目的在于帮助读者进一步了解PCIExpress以及成功PCIe成功应用。
PCIExpress基本工作原理
拓扑结构
本节介绍了PCIe协议的基本工作原理以及当今系统中实现和支持PCIe协议所需要的各个组成部分。
本节
的目标在于提供PCIe的相关工作知识,并未涉及到PCIe协议的具体复杂性。
PCIe的优势就在于降低了复杂度所带来的成本。
PCIe属于一种基于数据包的串行连接协议,它的复杂度
估计在PCI并行总线的10倍以上。
之所以有这样的复杂度,部分是由于对以千兆级的速度进行并行至串
行的数据转换的需要,部分是由于向基于数据包实现方案的转移。
PCIe保留了PCI的基本载入-存储体系架构,包括支持以前由PCI-X标准加入的分割事务处理쳘탔。
此
外,PCIe引入了一系列低阶消息传递基元来管理链路(例如链路级流量控制),以仿真传统并行总线的
边带信号,并用于提供更高水平的붡ힳ탔和功能性。
此规格定义了许多既支持当今需要又支持未来扩展
的쳘탔,同时还保持了与PCI软件驱动程序的兼容性。
PCIExpress的先进쳘탔包括:
自主功率管理;
先进错误报告;通过端对端循环冗余校验(ECRC)实现的端对端可靠性,支持热插拔;以及服务质量
(QoS)流量分级。
而一个经简化的系统拓扑结构包括了4种功能类型:
根联合体、交换器、端点和桥接器,如图1所示。
每
条虚线均代表着2个PCIe设备之间的一条连接,这种连接被称为链路。
图14种PCIe功能类型
©2008Synopsys,Inc.
2
•根联合体用于初始化整个PCIe结构并配置每条链路。
根联合体通常用于将中央处理器(CPU)与其它3
项功能之中的一个或多个相连接,包括PCIe交换器、PCIe端点和PCIe-PCI桥接器。
•PCIe交换器用于将数据向下游路由给多个PCIe端口,以及从每个独立端口将数据向上游路由至单一的
根联合体。
PCIe交换器也可以从一个下游端口灵活地向另一个下游端口路由数据(对等),不再局限
于传统PCI系统所要求的严格的树形结构。
•端点通常驻留在应用内,用于在系统中将应用连接到PCIe网络。
端点具有请求和完成PCIe事务处理的
功能。
此系统内的端点数量通常多于其它任何类型的PCIe组件。
•桥接器用于将PCIe与其它PCI总线标准(如PCI/PCI-X)相连接,适用于那些同时采用了这些体系架构
与PCIe的系统。
PCIe协议规格
PCIe规格内所定义的此协议遵循的是开源促进会(OSI)模型。
此协议分隔成5个基本层,如图2左侧所
示。
本节对机械层和物理层进行了综述;后续各节将针对链路层、事务处理层和应用层进行说明。
图2PCIe规格协议的各层
•机械层用于定义机械环境,如接头、插卡形状系数、卡检验和热插拔要求等。
•在图2的右侧,我们将其余层进行了展开,以便更精确地显示较低层是如何映射到物理硬件实现层
的。
•如图所示,物理层可以分割成2个子层:
电气层和逻辑层。
而有一些公司已经在电气层和逻辑层之间
定义和采用了一种接口,这种接口称为PCIExpress物理接口(PIPE)。
PIPE接口让设计方案能够采
用一种标准接口和/或采购多种能够配合运行的组件,甚至可以向多个供货商进行采购。
•物理层的电气子层用于实现各种模拟元器件,包括收发器、模拟缓冲器、串化器/解串器(SerDes)
和10位接口。
•物理编码子层(PCS)用于每一个8位数据字节与10位代码之间的编码/解码。
这种编码功能不仅能对
有效字符进行校验,而且还限制了所发送的0和1数量之间的差异度,从而在发送器与接收器之间保持
了一种直流平衡度,进而显著增强了电磁兼容性(EMC)以及电气信号性能。
•物理层内的PIPE接口的另一个方面包括了链路训练和状况状态机(LTSSM)、通道间去偏移(lane-
to-lanede-skew)、特殊序列检测和生成,等等。
3
©2008Synopsys,Inc.
在物理硬件方面,从串行引脚至PIPE接口的各层总称为PHY,而从PIPE接口至应用层的各层总称为数字
控制器。
任意给定PCIe链路的每一端均存在一个PHY和数字控制器。
图3显示了从图1所定义的子系统内
插入到根联合体和端点的PCIePHY和控制器。
端点采用了一个端点端口,而根联合体采用了一个根端
口。
此图显示了每一个扩展到各种单独的PHY和控制器功能的端口类型。
图3:
SoC芯片内的PHY和控制器运用
Endpoint
正如上文所述,2个端口之间的虚线代表着链路。
PCIe链路是单向的,并采用了低压差分信号。
PCIe规
格定义了链路可以包含多达32个并行通道,用于将PCIe1.x(2.5Gbps)链路的吞吐量扩展至80Gbps,
或将PCIe2.0(5.0Gbps)的吞吐量扩展至160Gbps。
同一链路内的每个线路(Lane)均提供了自己的
内嵌时钟信号,因而无需在PC电路板上实现线路长度匹配——这种匹配是以前PCI接口为了保持时序所
必需的。
下面两节更深入地探讨了PHY和控制器的设计问题。
PCIeSerDes设计难题
为PCIe设计PCIePHY对于设计人员尤有难度,原因在于:
•串行至并行的数据转换要求采用先进的模拟设计方案。
•模拟设计在各种制程技术之间不可移植,所以必须针对用于制造芯片的每一种新制程技术重新设计
PHY。
•高速本身就已经属于设计难题,而模拟链路增加了设计的复杂度,更加剧了设计难度。
例如,由于信
号完整性和噪声会造成性能降级,而这种降级问题必须得到解决。
•PHY必须通过严格的电气和兼容性测试来确保与其它设备的互操作性。
随着线路速率的增加,PHY不仅在设计上的难度更大,而且在集成时也必须十分谨慎,以满足在吞吐量
超过1Gbps时出现的信号完整性问题。
高速条件的封装和电路板设计难度也大幅提高,经常导致项目
延迟。
此外,高性能PHY的设计也要求设计人员在高速模拟通信领域里具有高级专业经验。
这些通信性
能还十分依赖于设备的生产制程,因此设计人员必须对基本设备的物理特性有一定的了解。
这样的专
业经验只有通过大量的设计实践来获得。
PHY不仅在开发上存在难度,而且还必须能够与其它公司设计
的PCIe接口实现互操作。
因此,PCI-SIG提供了兼容性测试认证大会(workshops),通常称为"plug-
fests",来测试一项设计方案对规格的符合性以及与其它设备的互操作性。
为什么PCIe的工程设计难度要大得多呢?
图4显示了在高速设计方案中这些问题的实例以及标准的FR4
电路板材料对于信号的影响度。
此图左侧显示了一个1.25Gbps数据流和一个5Gbps数据流的二进制眼
图,并对应于通过26英寸的标准FR4电路板材料进行传输。
右侧的对应二进制眼图表明,目的地处的信
号性能出现了衰减。
而1.25Gbps数据流在这种传输路程中保存得非常完好,但5Gbps眼图的大小和清
晰度均出现了显著的衰减,这是因为低成本FR4基底材料以及互连线材料在大于1GHz的频率下所发生的
介电损失现象而造成的。
©2008Synopsys,Inc.
4
图4频率升高后的二进制眼图性能降级
这种损失现象会随着频率增加而加大,导致在1-0-1-0位流中出现不能接受的畸变现象(实际上交流信
号),但一串全部是1或全部是0(实际上直流信号)可以成功地发送。
此项解决方案的目标在于通过提升更高频率(交流)信号相应于较低频率(直流)信号的幅值来改善综
合的信噪比,这种过程称为预加重(pre-emphasis)。
另外一种方式是,也可以对较低频率的信号实
现"去加重"。
在发送器处采用去加重处理可以在目的地处获得更加干净的眼图,从而以充分的余量满
足规格要求(
采用预加重处
理的发送眼图
采用预加重的接
收眼图,经过26
英寸的FR4材料
图5采用预加重处理来限制二进制眼图性能降级现象
采用预加重和其它模拟设计技巧可以提供更为纯净的信号。
但是,即使有一个明显很纯净的眼图的信号
也仍然必须满足PCIe规格所要求的电压裕量要求。
在图6中,左图代表了PCIe规格,中间的菱形描述了
对眼图张开度的最低要求。
位于中间的眼图代表了PCIe规格的要求(如图中的菱形所示)并显示了一种
能够超过这些要求的合格眼图开度。
在右侧图中,波形未能满足由这个菱形所代表的要求。
图6满足电压裕量要求
这点有什么重要作用呢?
高速串化器/解串器测试通常会采用一种回送模式,以确保PHY能够产生纯净的
眼图。
但是,即使某个设备拥有纯净的眼图,它也仍然有可能通过回环测试,但并不能够可靠地与系统
内的其它PCIe设备进行通信。
很明显,回环测试并不足以确保PHY能够满足PCIe规格的电气要求。
为了
克服回环测试的这种局限性,Synopsys已经在自己的高速PHY设计中实施了电路板上诊断,提供了对于
链路特性和性能的实时观察能力。
这种诊断可以查明并量化各种信号完整性问题,例如过大的抖动和芯
片上的电压裕量不足,而这些是简单的"通过/未通过"式回送诊断所无法查明的。
5
©2008Synopsys,Inc.
但是,要解决上面的PHY开发难题还受到了其它限制。
这些难题必须能够在经济可行的芯片占用面积下
以及功耗预算范围内得到解决。
较小的内核面积以及低功率属于强制性条件。
PCIExpress数字控制器的设计难题
PCIe的复杂度远高于PCI,其接口复杂度大致高出10倍,而且门电路数量(不包括PHY在内)约多出7.5
倍。
PCIe还定义了一系列不同的端口类型,包括:
根联合体、交换器、桥接器和端点。
导致事情更加
复杂化的还有,对于每一种PCIe端口类型,"同一方案不能适用于所有端口"。
举例来说,对于1G以
太网控制器的1个PCIe附加卡的要求可以采用一个拥有32位内部数据通路的单通道(x1)端点来予以满
足,而一个机顶盒就有可能要求采用1个64位的内部数据通路并要提供根联合体和端点双功能。
有许多
因素会提高PCIe接口的复杂度,包括某一特定PCIe应用可能需要的一些可选特性。
在实现PCIe接口时,
必须格外注意确保设计方案中只包括了必需的特性,以避免不必要地增加门电路数量、面积以及功耗损
失。
每一种PCIe端口类型均存在一系列的必要特性,但也有一系列的系统级问题必须得到优化和解决。
这些
系统级的决策会在很大程度上影响到接口性能以及门电路的数量。
这些决定不属于本白皮书的范围,也
不准备在本白皮书内解决。
PCIe数据包
在仔细探讨每个协议层的各种不同特性之前,首先要了解数据在PCIe网络内的传输方式,这一点是很重
要的。
PCIExpress采用了数据包方式在系统内传输数据,并用于数据接口与PCIe设备的各层之间。
应
用层用于发起事务处理,而事务处理层用于将应用程序的请求转换成PCIe事务处理包。
数据链路层用于
为这个包添加一个序列编号和链路循环冗余校验码(LCRC)。
数据链路层还确保了双向事务处理能够正
确地得到接收(参见图7)。
最终,物理层能够通过PCIe链路发送事务处理。
LCRC
图7物理层(逻辑)
控制器物理层用于与PHY的接口,并用于管理许多能够发起链路并构建数据包的功能。
一些特殊序列用
于建立物理链路、进入和退出低功耗链路状态等。
物理层的接收部分负责:
•通道映射、通道间去偏移,适用于由多条线路构成的链路。
•数据解扰
•数据包检测和解帧
•检查特殊数据包序列,例如TS1、TS2、跳过和电气空闲。
物理层的发送部分负责:
©2008Synopsys,Inc.
6
•采用特殊符号插入来对数据包进行封帧,例如采用STD或SDP符号来标志数据包的开始,用END符号来
标志结尾。
•数据加扰
•链路控制-初始化、带宽和线路反转(lane-reversal)协商。
•多条线路发送控制。
•生成跳过序列来补偿链路两端的时钟PPM差异。
以下各节对这些概念进行了更为详尽的描述:
•线路映射能够让顺序数据包通过多条线路的链路进行并行发送,从而大大提高了吞吐量。
接收器的物
理层会以正确的次序重新装配各个数据包(参见图8)。
图8采用线路映射以提高吞吐量
•通道间去偏移移用于纠正多线路链路内各线路之间的偏移现象。
发送组件会在所有线路上同时发送预
先定义的标识符(COM),从而使得接收器能够对偏移现象做出检测,并插入补偿部分对各个数据包
进行重新校对,让所接收到的数据对于其它层来说就像同时到达一样。
在下面的图9中,左面的图形
显示了一个4线路(x4)设备正在发送数据包数据以及这些数据包是如何接收到的。
右图显示出所接
收到的数据经过了解偏移处理,将每条线路不同的延迟现象所导致的偏移现象消除掉。
图9线路间解偏移
•通道反转(请勿与方向反转混淆)可在随后应用,以避免对印刷电路板(PCB)上的布线进行"蝴蝶
结"处理的需要,从而简化了PCB的设计并降低了制造成本。
而采用如图9所示的x4传输方式时,我们
可以在内部对数据进行重新映射,以补偿PCB布线方面的问题(如图10所示)。
图10采用线路反转补偿PC板布线方面的问题
•链路培训和状况状态机(LTSSM)用于控制物理层,进而控制链路。
LTSSM起动链路协商时,首先采用
一种"检测"状态,并在随后检测到链路伙伴时采用一种"轮询"状态。
一旦链路已经建立,则2个
通信组件将进入一种"配置"状态,并在这种状态下就链路配置进行协商。
这些状态标示了物理上连
接了多少条线路;其中多少条线路正在活动中;是否有任何数据对已经反转;以及是否有任何线路进
行了反转。
而L0状态用于正常的链路运行。
采用"恢复"状态,LTSSM还能够重新建立一个丢失的链
路,并采用L0、L1和"恢复"状态来管理链路功率状态转换。
数据链路层
数据链路层确保了可靠的数据交换、错误检测以及重试、流量控制信用度(FCC)初始化和更新,以及
功率管理服务。
为了完成这些功能,数据链路层能够生成并处理数据链路层数据包(DLLP)。
在LTSSM协商好一条物理链路后,数据链路层即启用。
此时,链路两端的数据链路层将采用一个流量控
制(FC)初始化协议来对链路进行初始化。
此协议用于与每个链路合作设备的可用队列资源进行通信。
一旦FC初始化完成,此链路即准备好向事务处理层提供可靠的数据传输服务。
在TLP传输过程中,定期
的流量控制更新将继续追踪可用的缓存区空间数量以防止发生溢出。
数据链路层能够提供通过一个不可靠(容易丢失)的物理链路来提供可靠的数据传输服务——这是通过
对接收到的TLP进行校验,并对所接收到的数据做出肯定应答,并在错误时进行重新传输来实现的。
在
TLP发送时,这些TLP被分配了序列编号并适用了一个CRC代码,并发送至物理层以供通过串行链路进行
传输。
在收到以后,CRC和序列编号均将得到校验。
CRC内发生的错误或序列编号乱序现象均表明发生了
传输错误,因此信号将采用一个否定应答(NAK)来做出响应。
在收到NAK后,发送器会重新发送这个数
据包,而这个数据包存储在一个专用于此目标的中继缓冲区内。
如果CRC序列编号校验成功,则接收器
发送一个肯定应答(ACK)。
只有在给定TLP的ACK已经收到后,相应的数据才会从中继缓冲区内清除。
通过运用这一协议,数据链路层就可保证TLP的传输成功。
事务处理层
事务处理层能够对外创建和对内接收事务处理层数据包(TLP)。
TLP包含一个报头、一个可选数据有效
负荷以及一个可选端对端CRC(ECRC)。
TLP可以是一项请求,也可以是一项对于请求的回应(完成),
并且总是4字节(1个DWORD)的倍数。
报头指定了事务处理的类型、奇偶性、地址、路由规则以及其它
数据包特性。
而发送事务处理层能够构建数据包报头,选择添加ECRC,并对数据包发送进行门选控制,
直到有足够的远程流量控制信用度可用。
接收事务处理层用于校验TLP的格式和报头。
它也可以选择采
用校验ECRC。
©2008Synopsys,Inc.
8
PCIe的基本功能和属性
吞吐量:
流量控制信用度
正如上文所述,PCIe连线的两端均采用了流量控制信用度(FCC)来确保数据不会由于缓冲区溢出而丢
失。
因此,流量控制信用度在整个有效吞吐量方面发挥着关键作用。
流量控制信用度属于与可用接收器缓冲区容量相关的简单信息,并且由接收组件进行签发。
链路的发送
端只能发送接收端存在着足够信用度的数据包量,并且在数据包发送过程中消耗着这些信用度。
而链路
接收端在自己有可用的缓冲区空间时才会再签发信用度。
对于偯獴敤、乯渭偯獴敤和完成序列均提供了流
量控制序列,因此存在3种不同类型的流量控制DLLP。
此外:
•Init_FCDLLP定义了每个FC类(P、NP、CPL)类的初始缓冲区空间
•Update_FCDLLP用于对目前推出的可用新信用度进行通告
QoS:
流量级别和虚拟通道
流量分级和通道虚拟化能够让系统针对不同的应用提供不同的服务质量(QoS)级别。
例如,在一台PC
机内,有可能给予一个视频数据流以最高优先级以确保有足够的带宽来传输高质量视频,使其不受其它
应用程序的影响。
而在网络服务器应用中,这种优先权分配对于网络服务提供商的经济效益十分重要,
因为服务提供商必须来履行不同定价的各种服务水平的协议。
通道虚拟化能够在相同导线实现多个独立数据流的复用。
而每个虚拟通道均拥有自己的缓存资源。
数据流量分级采用了流量分级标签标识的方式来定义任意给定数据包与其它数据流量相比的端对端优先
级。
每个流量分级均由根联合体分配给一个虚拟通道,但有可能在数据包通路的不同点有着不同数量的
虚拟通道。
采用灵活的仲裁方案能够实现虚拟通道,以保持所要求的优先权以及服务水平。
仲裁机制的
示例有:
任意(定制)、循环调度、加权循环调度。
RAS:
数据完整性
数据完整性可以通过使用一系列要求和可选的协议쳘탔来确保。
这些要求的쳘탔是:
•物理层校验-8b/10b编码/解码以消除无效字符。
•链路层校验-数据包CRC(PCRC)校验;数据包序列编号校验;验证肯定应答/否定应答(ACK/
NAK)。
•事务处理层校验-报头和数据包有效性;完成超时。
可选特性应当完全在任何PCIeIP中得到支持,无论它是可选的还是不可选的,这些쳘탔包括:
接收器
溢出校验、流量控制错误校验、端对端CRC(ECRC)、崩溃TLP、内存奇偶校验和数据通路奇偶校验。
RAS:
排序/PCI规则
排序这个概念洐生于PCI模型,它有2个目的:
•避免系统发生死锁。
PCIe为了达成这个目标,就要确保某些数据包类型不能排在其它受到阻塞的类型
前面,而且某些数据类型绝对不能排在其它类型前面。
例如,完成和偯獴敤写入数据包必须能够排在
读取请求前面。
•保持数据和标志位的一致视图以确保数据的有效性。
例如,完成和读取请求不能排在偯獴敤写入数据
包前,而偯獴敤写入数据包不得排在其它偯獴敤数据包前。
排序规则可以采用硬件或软件方式来实现。
例如,硬件的接收缓冲区能够根据抵达次序和数据包类型自
动让数据包通过或受到阻塞。
一种软件实现方式可以限制读取请求的发出以防止发生死锁;也可控制
标志位的位置让旁路操作不会造成影响;而且如果只要保持写入的次序,则可将标志位放到接收器区块
内,并从来自生成方的一个写入操作来设置标志位。
9
©2008Synopsys,Inc.
主动式电源管理
主动式电源管理就是在检测不到系统或设备活动时进入低功率状态布局,也就是说,在链路上没有数据
包且满足超时条件时,能够在需要时从低功率状态退出。
主动式电源管理完全以硬件方式来执行,并采
用了L0s和L1低功率状态。
PCIe设备应当通过D0、D1、D2和D3热插拔/冷插拔来兼容PCI软件节能机制,
并且应当支持PCIe热插拔逻辑中断和唤醒功能。
图11即一个主动式电源管理的例子,基于两个PCIe组件
成功进入了L1模式的次序要求。
.
图11L1电源管理
这个"上游组件"可以是一个根联合体,而下游组件可以是一个端点。
下游组件检测到链路已经空闲了
一段"很长"时间后——可能只不过是几毫秒。
下游组件随后取消了数据包传输并等待适当的链路信用
度以及应答条件。
然后它发送一个数据包请求许可以进入L1主动电源管理状态,而上游组件必须随后决
定是否批准这项许可。
在本例中,上游组件决定批准这项许可,它取消了数据包传输并等待早先数据包
的应答,并发送了一个特殊数据允许进入L1状态。
下游部件随后将自己的发送导线置入一种特殊的"电
气空闲"状态,而在上游组件检测到这一状态时,也执行同样的操作。
此链路目前就处于L1模式。
在理
想情况下,应用层和逻辑电路对此过程不产生影响,这个过程应当全自动化完成。
先进的错误管理
先进的错误报告功能是PCIe内的一项可选쳘탔,但也是一项对于许多应用有着重要意义的功能。
先进错
误报告能够提供有关具体错误的详细信息,这些信息可用于诊断系统问题。
这项功能可以让错误分级为
严重类别或非严重类别,提供了详细的错误类型和屏蔽功能。
©2008Synopsys,Inc.
10
中断
PCIe端点可以通过消息发出中断信号。
传统中断支持采用了多项消息来仿真基于线路的"信号或"PCI
中断。
这些消息可用于创建一条"虚拟信号",这条信号替代了PCI或PCI-X总线上所采用的真实的物理
中断信号。
每项PCI