PCIE链路训练-状态机描述1

状态机描述

**************************************************************************************************************

Config.linkwidth.start

**************************************************************************************************************

polling configuration状态跳转到Config.linkwidth.start状态:

当任意lane收到连续的8个TS2(link nun和lane num均为pad)并且自从收到TS2序列后至少发送了16个TS2序列;

 Config.linkwidth.start状态跳转到Configuration.Linkwidth.Accept状态

dsp:

(1)crosslink configuration不支持的情况下:任意lane,如果先收到了一个或者多个TS1,其link num和lane num都是pad,随后又收到两个连续的TS1,其中link num为具体数值,lane num为pad,那么满足进入Configuration.Linkwidth.Accept状态的条件;

(2)crosslink configuration支持,dsp可能转变为usp,转变后的状态跳转完全遵循usp的准则。

 

Usp(有问题??)

如果一些通道接收到了两个连续的链路编号有效,通道编号为填充符号的 TS1,那么这个端口就会进入 Configuration.Linkwidth.Accept 子状态

 Config.linkwidth.start状态跳转到loopback状态:

(1)所有发送TS1的lane上,都收到了两个连续的Loopback为1的TS1。-dsp/usp均满足

(2)任意一共发送TS1的lane上收到了两个连续的loopback为1的TS1,同时Enhanced Link Behavior Control比特为1。-dsp/usp均满足

(3)一个能支持64GT/s的port收到了TS1,并且该TS1的Flit Mode Supported bit为1,the Supported Link Speeds域为10111b。-dsp/usp均满足

注意:任意发送 Loopback 比特置位的端口将变成 Loopback master,而收到他们的端口将变成 Loopback slave。

(4)上层指示要求在detect为receiver的lane上发送的TS1或TS2,其中让loopback bit置为1;-dsp/usp均满足

 Config.linkwidth.start状态跳转到disable状态:

Dsp:上层指示要求在detect为receiver的lane上发送的TS1或TS2,其中让disable bit置为1;

 

Usp:任何TS1的lane上收到了两个连续的TS1,并且TS1的disable位为1; 

Config.linkwidth.start

1.

1Linkup = 0 + 状态机没有执行链路宽度的升级upconfiguration of the Link width):那么tx会在所有activedsp上发送TS1,其中link num为具体内容,lane num为pad;

TS2中的bit 6,bit 6 ---“Link Upconfigure Capability”表示Link Parner是否支持Link width变宽,如果不支持话,Link width就只能变窄,最适合出现链路可靠性问题情况。

(2)upconfigure_capable为1(这个变量为1一般表示上层逻辑执行链路宽度的减少),并且状态机没有执行upconfiguration of the Link width,那么自从进入到recovery状态之后,并且在当前子状态下收到了两个连续的TS1,其中link num和lane num均为pad,此后检测到退出Electrical Idle,那么tx会在inactive Lane上发送TS1,其中link num为具体内容,lane num为pad;

dsp

usp

 

那么什么是activelane呢?-dsp/usp均满足

从Polling状态进入此子状态时,所有检测到接收端的通道会被视作Active Lane。从Recovery状态进入此子状态时,所有历经 Configuration.Complete 状态的链路上的通道,都会被视作Active Lane。

另外注意一点,DSP必须在发送的TS1中通告自身所有支持的速率,其中也需要包括端口不打算使用的速率。

此外针对usp,还需要注意,如果此时的状态跳转不是由 LTSSM 超时触发的,那么此时发送方应该在 Configuration 状态中发送的 TS1 中置位 Autonomous Change 比特 (Symbol 4, bit 6) ,表示发送方出于自身(Autonomous )原因想要改变链路宽度,从而进入 Configuration 状态。 

 

2.

1dsp

Linkup = 1 + 状态机执行链路宽度的升级upconfiguration of the Link width):那么tx会在那么会在下列三类通道上发送link numlane num均为padTS1.

A:当前工作的通道上;

B:想要激活的非工作通道;

C:自从进入recovery状态之后已经收到两个连续的TS1接收到TS1的通道上,并且,在该通道上检测到退出Electrical Idle

  Usptx会在下列三类通道上发送link numlane num均为padTS1.

A:当前工作的通道上;

B:想要激活的非工作通道;

C如果upconfigure_capable为1,针对inactive的lane,并且这个lane自从进入recovery状态之后已经收到两个连续的TS1接收到TS1的通道上,并且,在该通道上检测到退出Electrical Idle的lane。

针对usp,注意三点:

A:如果 USP 打算恢复链路宽度,LTSSM 首先等待下述两个条件任意满足一个:所有待激活的通道上都接收到两个连续的链路编号有效,通道编号为填充符号的TS1或者任意一个待激活通道进入本状态超过1ms

B:为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少2个TS1,128b/130b 编码时至少等待34个 TS1,但任何情况下不要等待超过1ms。

C:在激活不工作的通道后,发送端必须等待发送共模电压(Tx common mode voltage)稳定,才能退出电气空闲状态并开始发送TS1

2那么什么时候开始发送link num为具体数值但是lane numpadTS1在满足以下条件之一即可

Dsp

A在发送TS1的lane上收到了收到了两个连续的TS1,并且link num和lane num均为pad;

B:1ms超时;

另外注意两点,针对的dsp,在激活不工作的通道时,发送端必须等待发送共模电压(Tx common mode voltage)稳定,才能退出电气空闲状态并开始发送TS1;对于组合为同一链路的通道,他们的链路编号必须相同。只能在支持多链路配置的不同链路之间才可以分配不同的链路编号

Usp

如果一些通道接收到了两个连续的链路编号有效,通道编号为填充符号的TS1 usp选取其中一个接收到的链路编号作为这些通道的链路编号,并在所有收到链路编号非空的TS1的通道上,回复采用该链路编号的TS1,通道编号继续使用填充字符。对于剩下的通道,如果他们检测到了接收方,但是还没有收到链路编号,那么则发送链路编号和通道编号都采用填充符号的TS1

3.针对支持crosslinks特性:

Dsp

会在所有detect阶段检测为receiver的lane上先发送16~32个TS1,其中link num为具体数值,lane num为pad。在此之后,任意一个lane在收到两个连续的TS1,其中link num为具体数值,lane为pad,随后dsp转变为usp(为了根据timeout机制决定谁才是真正的dsp,如果 DSP 接收到的第一批 TS1 中,链路编号就已经不是填充符号了,那么 DSP 通过这种现象就意识到存在交叉链路(Crosslink),链路对端设备此时也是 DSP。针对这种情况,面向下游的通道将转换为面向上游通道,DSP 等待长度随机的超时时间后,重新进入 Configuration.Linkwidth.Start 状态,只不过此时该通道将变成面向上游的通道)。并且转变为Configuration.Linkwidth.Start的条件变为和usp一样。

注意两点,针对两端都想变为dsp的情况,可以让双方都先变为usp,随后双方都随机等一个时间,超时后usp转变为dsp。因为双方的超时时间长度是不同的,最终将有一个端口成为 DSP ,而另一个端口仍然是 USP,这样一来训练就可以继续进行。超时时间长度必须是随机,这样即使链路双方的端口实现完全相同,也不会出现死锁的情况;如果支持交叉链路特性,那么在接收的 TS1 的链路编号从PAD转换到非PAD符号的过程中,不允许出现TS2打断这个过程。

Usp:

对于支持交叉链路特性的 USP 来说,当 LinkUp = 0b 时,需要在所有检测到接收端的通道上至少发送 16-32 个 TS1,其中链路编号和通道编号采用填充符号。随后任何usp的一些通道上接收到了两个连续的链路编号有效,通道编号为填充符号的TS1,那么有如下操作和条件:

A:tx持续发送TS1,link num和lane num均为pad;

B:如果任意通道接收到了两个连续的链路编号有效,通道编号为填充符号的TS1 usp选取其中一个接收到的链路编号作为这些通道的链路编号,并在所有收到连续两个链路编号非空的TS1的通道上(lane编号为lane),回复采用该链路编号的TS1,通道编号继续使用填充字符。对于剩下的通道,如果他们检测到了接收方,但是还没有收到链路编号,那么则发送链路编号和通道编号都采用填充符号的TS1下一个状态是 Configuration.Linkwidth.Accept。

C:为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少 2 个 TS1,128b/130b 编码时至少等待 34 个 TS1,但任何情况下不要等待超过 1ms。

注意,如果不满足上述条件,经过Tcrosslink时间后,16-32个TS1,其中linknum和lane num均为pad,usp变为dsp,下个状态变为Configuration.Linkwidth.Start(相当于重新开始)。

**************************************************************************************************************

Config.linkwidth.accept

**************************************************************************************************************

Config.linkwidth.accept

Dsp

dsp提议通道编号值。如果一条链路可以由多个通道合并组成,这些通道都可以收到两个连续的,链路编号值相同的 TS1那么dsp会为他们发送链路编号一致,但是通道编号各不相同的TS1对于剩下的通道,如果他们没有接收到TS1,那么发送链路编号和通道编号都采用填充符号的TS1,不能打断原有发送过程。

为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少2个TS1,128b/130b 编码时至少等待34个TS1,但任何情况下不要等待超过1ms。-dsp/usp均满足

1.变量变化

A:在满足如下条件的时候use_modified_TS1_TS2_Ordered_Set变为1:

(1)LinkUp = 0b -dsp/usp均满足

2)自从进入polling状态以来,tx已经在polling/Configuration状态下发送Modified TS1/TS2,在TS1/TS2中设置symbol5中的Enhanced Link Behavior Control field为‘b11。针对up端,要求在所有的TS1/TS2中发送这样的序列

(3)导致从polling.configuration转变到configuration状态的那8个连续的TS2的data rate中设置了Enhanced Link Behavior Control field位为’b11(symbol5)+TS2中的32.0 GT/s data rate is supported设为1。注意这8个TS2要求是连续的,并且是在所有lane上都收到才能满足从polling.configuration转变到configuration状态。-dsp/usp均满足

B:在满足如下变化Flit_Mode_Enabled变量设为1:

(1)LinkUp = 0b-dsp/usp均满足

2)自从进入polling状态以来,tx已经在polling/Configuration状态下发送相关TS1/TS2,在其中TS1/TS2中设置symbol4中bit0,也就是Flit Mode Supported bit中的Data Rate Identifier为‘b1。-dsp/usp均满足

(3)导致从polling.configuration转变到configuration状态的那8个连续的TS2的data rate中设置了flit mode supported位(也就是symbol4的bit0)为1。注意这8个TS2要求是连续的,并且是在所有lane上都收到才能满足从polling.configuration转变到configuration状态。-dsp/usp均满足

usp

usp在从dsp提供的链路编号中选择其中一个,填充至所有通道的TS1中,反馈发送给dsp。这里所有通道指的是那些所有接收链路编号不为填充字符TS1的通道。在所有剩余的通道中,如果检测到对端接收方,但是没有接收到有效链路编号的通道,将继续发送链路编号和通道编号采用填充符号的TS1

如果一个link可以使用具体数值的link num号来实现configured link(注意,这个link num来自于收到的两个连续的TS1,并且这两个TS1中的link numlane num均不为pad,两个连续的TS1中的link numlane num前后一致),那么TS1会发送和收到的TS1link num/lane num一致或不一致的TS1(针对不一致的TS1往往是存在于lane reversed)。

另外注意三点:

1)收到的TS1既可以是标准的TS1,也可以是Modified的TS1(Modified的TS1只有在use_modified_TS1_TS2_Ordered_Set为1的情况下);

2)针对lane进行编号的时候,需要注意,lane num必须要针对连续的groupinglane进行连续的编号,针对没有收到TS1lane,相当于这个lane不属于一个groupinglane。剩下的lane必须要发送link numlane num均设为padTS1

3)比如说一个 x8 链路,将会把它的通道编号为 0-7。端口需要支持链路容纳其所拥有的最大通道数,也需要支持链路容纳最少至一个通道。通道总是从 0 开始编号,并且需要是连续编号不中断的。比如,如果一个 x8 链路上有些通道不工作,它可能可以转而配置成一个 x4 链路,这种情况下它必须使用通道 0-3。再举一个例子,如果是链路的通道 2 无法正常工作,无法使用通道 0134 组成一个 x4 链路,因为它们的编号是不连续的。链路上任何剩余的通道必须发送链路和通道编号都使用填充符号的 TS1

Configuration.Lanenum.Wait

如果use_modified_TS1_TS2_Ordered_Set1,需要注意:

1tx需要发送Modified TS1而不是正常的TS1;

2rx端必须检查是否收到Modified TS1(注意一开始进入这个状态的时候可能还是收到标准的TS1,需要检查的是收到连续的Modified TS1)

为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少 2 TS1128b/130b 编码时至少等待 34 TS1,但任何情况下不要等待超过 1ms

Dsp

Configuration.Lanenum.Wait 状态期间,DSP 会继续发送链路和通道编号为非填充值的 TS1,直至满足某个跳转到其他状态的条件。

Usp

Configuration.Lanenum.Wait 状态期间,USP 会继续发送链路和通道编号为非填充值的 TS1,直至满足某个跳转到其他状态的条件。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PCIE 2.1兼容PCIE 2.0。PCI Express(PCIe)是一种计算机总线标准,用于连接计算机内的各种硬件设备。PCIe 2.1是PCI Express的第二代规范,而PCIe 2.0是第一代规范。 PCIe 2.1和PCIe 2.0之间的兼容性意味着一个支持PCIe 2.0的设备可以与一个支持PCIe 2.1的设备进行通信。这是由于PCIe 2.1规范是在2.0规范的基础上进行了一些改进和扩展,但保留了与旧版设备的兼容性。 具体地说,PCIe 2.1增加了对新的数据速率等级和识别和重新分配错误的功能的支持。这些增强功能允许提高数据传输速度、提高系统性能和可靠性。 对于那些只支持PCIe 2.0的设备,它们仍然可以在PCIe 2.1总线上正常工作,但可能无法利用PCIe 2.1的一些新功能。 总之,PCIe 2.1是对PCIe 2.0的改进和扩展,但仍然兼容旧版本设备。这使得使用PCIe 2.1的系统能够与使用PCIe 2.0的设备进行通信,从而为用户提供更高的灵活性和选项。 ### 回答2: 是的,PCIe 2.1是与PCIe 2.0兼容的。PCIe(Peripheral Component Interconnect Express)是计算机之间进行数据传输和通信的一种通用总线接口标准。PCIe 2.1是PCIe 2.0的改进版本,与之前的版本相比,它引入了一些性能和功能上的改进。 尽管PCIe 2.1有一些改进,但它仍然保留了与PCIe 2.0兼容的接口和信号规范。这意味着PCIe 2.1插槽可以容纳PCIe 2.0设备,而PCIe 2.0插槽也可以容纳PCIe 2.1设备。这种兼容性确保了设备之间的互操作性和可扩展性。 此外,PCIe 2.1支持自适应均衡调整(Adaptive Equalization)和使能时序调节(De-emphasis),以提高在高频率和长距离传输中的信号完整性。这些改进可以提高数据传输速度和稳定性。 总之,虽然PCIe 2.1相对于PCIe 2.0有一些改进,但设备之间仍然可以相互兼容。这使得PCIe 2.1成为现代计算机系统中常用的高速数据传输接口。 ### 回答3: 是的,PCIe 2.1 是向后兼容 PCIe 2.0 的。PCIe,即 Peripheral Component Interconnect Express,是一种计算机总线标准,用于在计算机系统中传输数据和控制信号。 PCIe 2.1 是对 PCIe 2.0 版本的一次更新。虽然 PCIe 2.1 版本在电气和协议层面上进行了一些改进和优化,但它仍然可以与 PCIe 2.0 的设备和插槽进行兼容。 这意味着如果您的计算机或其他设备支持 PCIe 2.1 接口,您可以使用 PCIe 2.1 的设备插入到 PCIe 2.0 插槽中。PCIe 2.1 的设备将能够在 PCIe 2.0 的插槽上正常工作,但可能无法发挥其全部性能潜力。 然而,需要注意的是,PCIe 2.1 设备无法与 PCIe 3.0 或更高版本的插槽兼容。如果您的计算机或其他设备支持 PCIe 3.0 或更高版本的接口,您需要使用相应版本的设备才能发挥其全部性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值