如何进行PCI-Express2.0协议层的数字验证以及调试
推荐给好友
打印
加入收藏
更新于2009-05-26 17:56:29

摘要:目前在计算机、通信以行业中,开始流行使用PCI Express(PCIe)2.0来构建高速的数据传输链路,其数传速率能够达到5.0Gbps,是原来PCIe的两倍。所有PCIe2.0的链路在上电初始化后都是默认配置在2.5Gbps速率上,然后根据系统收发双方的性能,最终协商在5.0Gbps的速度上工作。另外,PCIe2.0引入了最新的动态电源管理(ASPM)来减小系统的能耗。具体技术包括L0s/L1级电源状态管理、链路宽度降低(Downconfigure)和传输速度降低,从5.0Gbps到2.5Gbps等等。本篇文章主要讨论对PCIe2.0调试验证可能会遇到的挑战,特别关注于ASPM和系统串行、并行联合调试时产生的问题以及解决方案。

关键词:PCIe2.0,高速串行,ASPM(电源管理)LTSSM(链路初始化), L0s/L1级电源状态管理,链路宽度降低(Downconfigure)。

引言:L0s/L1级电源状态管理通过将链路置于电气空闲(E-IDLE)下来降低能耗。要求链路双方设备都能否实现L0s,快速的进入或退出电气空闲状态。从PCIe1.0开始,L0s级电源管理就是调试测试的一个难题。L1级也将链路置于电气空闲状态,需要链路双方协商,并且需要花较长的时间才能退出电气空闲。L1相对于L0会进一步降低功耗。链路宽度降低(Downconfigure)提升(Upconfigure)是根据链路数据传输流量控制而定,只要满足系统的吞吐率,可以适当的关闭原本活动的链路,以达到减小能耗。同样,当系统吞吐率要求增大时,能够开启被关闭的链路。链路的传输速率也可以在2.5Gbps和5Gbps之间切换,以最小的系统能耗完成数据传输任务。

 

一.PCIe2.0技术简介

PCIe是串行的点对点的互连总线。最初PCIe是为取代AGP总线而设计,目前已经成为主流的I/O互连总线。PCIe目标是针对PC以及个人移动电脑、服务器和通信市场,在嵌入式领域也逐渐有了PCIe的身影。

PCIe提供了一个可升级的构架,传输带宽随着链路的宽度增加而增加。PCIe支持x1,x2,x4,x8,x16和x32总线宽度,表1列出了带宽选择。由于PCIe使用8b/10b编码,会消耗25%的系统带宽。

 

x1

x4

x8

x16

x32

PCIe1.0

2.5

10

20

40

80

PCIe2.0

5

20

40

80

160

表1:带宽v.s.数据率(Gbps)

PCIe2.0较PCIe的主要变化是:

l         速度增加。从2.5Gbps增加到5Gbps,并且速度可以协商

l         电气空闲(Electrical Idle)的进入和退出,减少能耗、简化设计以及增强系统可靠性

l         链路宽度降级减少能耗;链路宽度提升增加系统额外带宽

 

PCIe2.0为系统带来优化的同时,也为设计、测试工程师带来了挑战;新的特性无疑增加了链路协商的复杂程度。根据PCIe2.0的主要变化,需要测试设备有能力捕获链路上所有层面的协议。Tektronix TLA7000系列的逻辑分析仪,TLA7S16 /TLA7S08模块是极好的针对PCIe2.0调试和验证的工具。

 

二.PCIe系统构架

PCIe是一个三层结构的系统,包括物理层(逻辑子层和电气子层),数据链路层以及事务层。事务层主要负责事务的请求/完成、TLP流控制和消息通知。数据链路层主要负责确保数据在链路上正确、可靠的发送和接收。物理层分为两个部分:逻辑子层和电气子层。电气子层主要负责发送和接收信号;逻辑子层主要负责数据加扰/解扰、8b/10b编码、封包等。另外,链路的协商是在逻辑子层完成的。TLA7S16串行逻辑分析模块定位于捕获逻辑子层、数据链路层和事务层的数据进行协议分析,并且探测方式不影响到链路的信号完整性。

三.数据率训练(Training)过程的捕获与分析

所有的PCIe2.0链路在初始阶段必须工作在2.5bps速度下。这主要是考虑到向下兼容的能力。此外,当系统吞吐率要求不高的时候,也可以从5Gbps的速据降到2.5Gbps来减少能耗。因此,测试设备首先必须能够探测到速度的变化,而后通过捕获的数据分析速度切换是否按照规范要求来进行。

能否在速度切换开始时触发并捕获数据,是能否揭示链路上所发起序列的异常问题之关键所在。例如,往往当发起速度切换后,需要对第一个训练序列(Training Sequence,TS)进行捕获。TLA7S16/08模块的序列触发功能非常强大,可以对任意一条通道进行多达连续16个符号的触发设定。序列触发提供了对任意一个PCIe2.0的有序集中任意域的设定。如图2,设定触发条件为速度切换为2.5Gbps。在Speed Change域中设定为1,当速度切换发起时,串行逻辑分析仪将捕获到一个TS1。

图2:灵活触发设定界面提供了各种Training Sequence的预定义

 

但是在很多情况下,期望的触发条件由于在链路中的协议出现了错误而无法侦测到,这会严重的减缓甚至被迫中断调试。在这期间,工程师往往不得不随机捕获数据,手动的去分析数据、协议的正确性。这种方法即笨重而且不能保证发现问题的根源。TLA7S16/08的序列触发可以帮助工程师通过触发链路中单独的通道而去发现问题的根源。那么出现问题的通道暂时被忽略,使得协议的验证和分析得以进行下去。

只要串行逻辑分析仪被触发,采集到的数据将会显示出完整的2.5Gbps到5Gbps速度切换的过程。工程师可以非常直观的发现其中有问题的通道。另外,所有采集到的数据都会按照协议规范而进行解码。


图3:PCIe1.0向PCIe2.0切换完整的状态机

如上图所示,当系统完成2.5Gbps速度的训练之后,链路会进入L0状态。在链路双方的训练中会通知其支持的速度。如果双方都支持5Gbps的话,链路会尝试着将速度切换到5Gbps。当链路处在L0状态中,然后会切换到Recovery状态中,并且开始进行5Gbps速度切换的训练。当完成训练序列后,2.5Gbps的链路会进入到电气空闲。接着链路会退出电气空闲,然后链路的双方将会运行在5Gbps的速度上,并且发起电气空闲退出有序集(EIEOS),紧接着通过其他的训练序列,速度切换将发生在Recovery.Speed状态中,最后链路返回到L0状态下。

通过图4和图5可以看到如何分析2.5Gbsp到5Gbps的速度切换的。请注意,串行逻辑分析仪会将每一条链路上发生的每一个符号和相应的解码信息一并显示。假如其中有一条通道发生误码的话,这些误码会被显示在单独的通道上,用户可以通过链路详细信息(Link Detail Column)中的内容快速的判断在任一通道上是否存在问题。而对于传统的协议分析仪,仅仅能得到有错误帧的提示。


图4:PCIe1.0向PCIe2.0切换开始


.电源管理(ASPM)

PCIe中的ASPM(Active State Power Management)目的是为了较小能耗而设计,比如延长笔记本电脑的电池的使用时间以及大型服务器系统的节能等。而PCIe系统出现的问题大部分是在电源管理期间。

    考虑下这样的情景:当TLP Configuration Write命令发起,向寄存器写入了一个错误的数据,那么会引起系统的异常。这种问题通常发生在当ASPM使能期间,硬件和软件出现配合的问题。为了捕获这些异常事件,串行逻辑分析仪必须要捕获到链路在退出以及进入L0s状态过程中的TLP数据包。因此分析仪为了能够进行极限测试,在退出EIDLE状态过程中,必须要尽可能多的捕获FTS包,也就是说要尽可能快的探测链路的变化,尽早的和被测系统实现同步和锁定。TLA7S16/08串行逻辑分析仪通常来说仅仅需要12个FTS包,就可以完成退出EIDLE后链路的锁定。及时、快速的链路数据锁定避免了在L0开始时有效的TLP包的丢失。而传统的协议分析仪可能需要上千的FTS包,才能完成帧同步。图6举例说明了分析仪如何捕获到链路进入L0s的状态。

    当链路退出EIDLE,也需要发送FTS包。发送FTS包的个数在链路训练的过程中已经确定了。如果分析仪在退出EIDLE过程中不能锁定数据,那么TLP Configuration Read包无法采集到,更无法分析和验证其包内所携带的数据信息。


图6:链路进入EIDLE。注意,当系统工作在5Gbps速度时,需要发起两个EIEOS

 

另外,通过触发和数据过滤,提高串行逻辑分析仪的采集性能。如图7所示,可以通过数据包过滤的设定,让分析仪仅捕获TLP包,提高采集内存的使用效率。其他的任何有序集或者被滤掉的数据包仍然可以作为触发状态机的资源使用。图8显示了如何设定分析仪只捕获TLP包。



图7:能够采集最多的FTS包,使得工程师能够看到完整的L0状态



图8:使用数据过滤,只采集TLP包。所有的数据依然对触发状态机可见

 

数据包级别的触发功能再配合上实时的数据过滤功能,可以进一步缩小需要寻找的感兴趣的TLP和DLLP包的范围。像刚刚描述过的情形,可以使用触发来寻找一个对特定寄存器进行配置写的TLP包。如图9所示,这个触发条件会使得串行逻辑分析仪捕获到TLP Configuration Write命令。软件根据协议,自动设定了默认的协议域以及数据,可以方便的进行修改。



图9:TLP configuration Write命令的触发设定,无需熟悉PCIe的协议,轻松完成设定

 

    另一个可能发生的是当ASPM使能后,出现了TLP丢包的情况。在正常的运行环境中(不是L0s状态),所有的TLP包能够被正确的捕获。但是,当在电源管理的阶段,如果链路不能正常工作,很可能是TLP没有正确的发起。分析仪会捕获所有的TLP包,按照每一个TLP序列标识符进行排序,如果发现有TLP包丢失的情况,很容易就能被分析仪发现。

.链路宽度协商过程分析

还有一些调试、验证的挑战是和链路动态切换有关的。PCIe规范允许链路双方提升或者降低链路的宽度。例如如果链路的一方在新的链路宽度训练中出错,链路将重新进入Recovery状态。TLA7S16/08串行逻辑分析仪能够验证链路宽度训练的整个过程。同样,当发起链路宽度训练序列后,链路会发起EIEOS,接着进入EIDLE状态。当链路退出EIDLE,分析仪会捕获完成链路宽度训练的的数据包。见图10。

    当链路退出EIDLE,同样需要额外的TS包使得链路恢复到正常的状态。串行逻辑分析仪能够捕获完整的过程。见图11。



图10:“初始化链路宽度切换”结束的TS包(x8切换至x4)


图11:链路宽度切换完成(x8切换至x4)

 

TLA7S16/08提供了丰富的触发能力,用来定位链路宽度协商时出现的各种数据包。利用触发可以构建对任何链路事件的捕获。例如,如果链路减少链路宽度,仅在到x4出现问题,那么可以使用触发限定条件只捕获减少链路宽度到x4时候所发送的数据包。对TLP和DLLP包的触发也可以不关心链路宽度具体是多少。运用起来非常灵活。见图12。



六.多总线时间相关分析

随着电子系统变得越来越复杂,对系统并行总线和高速串行总线的整合设计变的非常的普遍。在许多应用中,不可能仅对PCIe总线单独的进行分析,例如PCIe总线向控制器发起内存读数据请求,接着控制器向DDR内存进行读操作。如果DDR读数据使用到错误的地址,将会导致PCIe请求到错误的数据,可能会导致系统的崩溃。逻辑分析仪是唯一能够对PCIe、控制器总线和DDR内存在单一仪器内进行分析的设备,所有的数据样点都是有时间相关的时间标记。

    TLA7S16/08配合上通用的逻辑分析仪模块(TLA7BBx)可以提供PCIe链路和其他并行总线时间相关的调试能力。TLA7BBx可以以最高50GS/s采样率,对136路信号进行高精度的定时采集;还可以通过外时钟同步,可以进行最高速度为1.4GHz的同步分析。逻辑分析仪能够获得这些并行信号,同时串行分析模块可以采集到PCIe链路的数据。这样的时间相关的信息可以帮助我们解决很多困难的调试、验证问题,例如链路训练出错、链路挂起等。更多的有关多总线联合调试的内容,请参阅Tektronix其他应用文章,编号52W-21073。

七.信号探测方式

    对PCIe系统的探测必须遵循不能影响到链路正常特性的原则进行。在物理层面上要求探测不能破坏原来链路的信号完整性;在数据层面上要求不能改变原有系统的时序特性。Tektronix提供P6701S/P6704S/P6708S/P6716S系列内插探头,提供对被测信号的高阻探测,并且不像传统的协议分析仪那样,先将信号缓存再输出的结构,而是直接将信号输入到采集系统中。同时还提供P6708/P6716探头,支持芯片级的PCIe信号探测。

总结

PCIE2.0的验证充满着各种挑战,包括对芯片的验证和系统性能的验证,新的技术也在其中崭露头角:5Gbps数传输率大幅度提高系统的吞吐率;灵活的链路控制,最小化系统开销以及高级电源管理(ASPM),减小整个系统的能耗。复杂的协议和瞬变的故障都使得PCIE2.0的调试变得困难重重。Tektronix公司TLA7Sxx系列串行逻辑分析仪模块提供毫无折中的硬件调试性能,配合TLA7000逻辑分析仪主机,以及其他测试方案:DDR、FSB等,最大程度满足被测系统级别的逻辑、协议测试。

参考文献

PCI Express® 2.0 Base Specification Revision 0.7

Tektronix PCI Express Methods of Implementation (MOI)

PCI Express 2.0 Digital Validation and Debug using serial logic analysis tools

TLA7Sxx Serial Analyzer Modules Data Sheet

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.