《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(8)

本文详细介绍了PCIe总线的端到端连接特点、层次结构以及设备的初始化过程,包括传统复位(Cold、Warm、HotReset)、FLR方式的特性,特别强调了不同复位方式对寄存器和状态的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(7)

 

4.1 PCIe的基础知识

与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为数据发送端和数据接收端。PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而接收端接收数据时也使用这些层次。PCIe总线使用的层次结构与网络协议栈较为类似。

b027874ccb811ea8afdce4ffa3629526.png

4.1.5 PCIe设备的初始化

PCIe总线规定了两大类复位方式一种是传统的复位方式(Conventional Reset)另一种是FLR(Function-Level Reset)方式

其中,PCI总线的传统复位方式由两大类组成:一个是Fundamental Reset,而另一个是Non-Fundamental ResetFundamental Reset方式包括Cold Reset和Warm Reset方式可以将PCIe设备中的绝大多数内部寄存器和内部状态都恢复成初始值;而Non-Fundamental Reset方式指Hot Reset方式

1. 传统复位(Conventional Reset)方式

传统复位方式分为Cold、Warm和Hot Reset方式。PCIe设备可以根据当前设备的运行状态选择合适的复位方式。PCIe总线提供多种复位方式的主要原因是减少PCIe设备的复位延时传统复位方式的延时大于FLR方式。使用传统复位方式时,Cold Reset花费的实际最长,而Hot Reset消耗的时间最短

当一个PCIe设备的Vcc电源上电后,处理器系统将置该设备的PERST#信号为有效,此时将引发PCIe设备的复位操作,PCIe总线将这种复位方式称为Cold Reset方式。Cold Reset无疑是一种彻底的复位方式,这种方式属于Fundamental Reset。PCIe设备进行Cold Reset时,所有使用Vcc进行供电的寄存器和PCIe端口逻辑将无条件进入初始状态。但是使用这种方式依然无法复位使用Vaux供电的寄存器和逻辑,这些寄存器和逻辑只能在处理器完全下电时才能被彻底复位。

PCIe设备使用两种电源信号供电,分别是Vcc与Vaux,其额定电压为3.3V。其中Vcc为主电源,PCIe设备使用的主要逻辑模块均使用Vcc供电,而一些与电源管理相关的逻辑使用Vaux供电。在PCIe设备中,一些特殊的寄存器通常使用Vaux供电,如Sticky Register,此时即使PCIe设备的Vcc被移除,这些与电源管理相关的逻辑状态和这些特殊寄存器的内容也不会发生改变。

在PCIe总线中,使用Vaux的主要原因是为了降低功耗和缩短系统恢复时间。因为Vaux在多数情况下并不会被移除,因此当PCIe设备的Vcc恢复后,该设备不用重新恢复使用Vaux供电的逻辑,从而设备可以很快地恢复到正常工作状状态。

当PCIe设备完成上电过程后,也可能重新进行Fundamental Reset,这种方式也被称为Warm Reset。PCIe总线并没有规定Warm Reset的具体实现方式。一个PCIe设备可以使用Watchdog(看门狗)逻辑,对该PCIe设备进行复位,此种方式就是Warm Reset的一种。Warm Reset也是一种Fundamental Reset。

除了Cold和Warm Reset方式外,PCIe总线还提供了另一种复位方式,即Hot Reset方式。当PCIe设备出现某种异常时,可以使用软件手段对该设备进行复位。如系统软件将Bridge Control Register的Secondary Bus Reset位置1时,该桥片将Secondary总线上的PCI/PCIe设备进行Hot Reset。对于PCI总线,当Secondary Bus Reset位置1时,Secondary总线将使用RST#信号对其下游的PCI设备进行复位而PCIe总线将通过TS1和TS2序列对下游设备进行Hot Reset

在TS1和TS2序列中包含一个Hot Reset位。当下游设备收到一个TS1和TS2序列,而且其Hot Reset位为1时,下游设备将使用Hot Reset方式进行复位操作。除此之外,当数据链路层向事务层报告DL_Down时,该设备也将进行Hot Reset。

Hot Reset方式并不属于Fundamental Reset。PCIe设备进行Hot Reset时,也可以将PCIe设备的多数寄存器和状态恢复为初始值

当PCIe设备完成传统复位方式后,经过一段延时,将开始进行PCIe总线的链路训练。

2. FLR(Function-Level Reset)方式

除了传统复位方式外,PCIe总线还提供了FLR方式。系统软件填写某些寄存器时,PCIe设备将使用FLR方式进行复位支持FLR方式的PCIe设备需要在其BAR空间中提供一个寄存器当系统软件对该寄存器的Function Level Reset位写1时,PCIe设备将使用FLR方式复位PCIe的内部逻辑。FLR方式对于PCIe设备是可选的,PCIe总线规范并没有定义FLR方式的具体实现过程,但是定义了FLR方式的适用范围。 

在一个处理器系统中,如果某个PCIe设备出现故障时,系统软件需要停止这个PCIe设备的所有I/O操作。如一个PCIe网卡出现故障时,系统软件需要对此PCIe网卡的“与PCIe相关”和“与网络部分相关”的逻辑复位,而Cold、Warm和Hot Reset无法复位“与网络部分相关”的逻辑。此时,需要使用FLR方式合理复位这个网卡。有些不支持FLR方式的网卡,也可以使用传统方式复位“与网络部分相关”的逻辑。

在一个大规模并行处理器系统中,系统软件使用分区的概念管理所有硬件资源,包括处理器资源和所有I/O资源,在这些I/O资源中,通常会包含PCIe设备。在这种处理器系统中,任务在指定的分区中允许,在该任务执行完毕后,系统软件需要调整硬件资源分区。此时,受到影响的PCIe设备需要使用FLR方式复位内部逻辑,以免造成对新分区的资源污染,并保护之前任务的运行结果

此外,当系统软件初始化与某个PCIe设备相关的软件协议栈时,也可能需要使用FLR方式复位PCIe设备内部的逻辑

由上文所示,PCIe设备使用的FLR方式与传统复位方式有所不同。但是对于一些不支持FLR方式的PCIe设备,也可以使用传统复位方式实现FLR方式。但采用这种方式,与FLR方式相比,PCIe设备的初始化恢复实际较长。因为传统复位方式几乎复位了所有“与PCIe链路相关”的逻辑,而FLR方式仅复位部分“与PCIe链路相关”的逻辑。在PCIe总线中,链路训练与重训练的过程较长。

当PCIe设备使用FLR方式进行复位时,有些与PCIe链路相关的状态和寄存器并不会被复位,如下所示:

  • Sticky Registers

与传统复位方式相同,FLR方式也不能复位这些寄存器,但是系统软件可以对部分Sticky Registers进行修改当Vaux被移除后,这些寄存器中保存的数据才会丢失。

  • HwInit类型的寄存器

在PCIe设备中,有些配置寄存器的属性为HwInit,这些寄存器的值由芯片的配置引脚决定,或者在上电复位后,从E2PROM中获取Cold和Warm Reset可以复位这些寄存器,然后从E2PROM中重新获取。但是使用FLR方式不能复位这些寄存器

  • 一些特殊配置寄存器

此外还有一些特殊的配置寄存器不能被FLR方式复位,如Max_Payload_Size、RCB和一些与电源管理、流量控制和链路控制直接相关的寄存器。

  • LTSSM状态机

FLR方式不会影响LTSSM状态机。

 

至此,“4.1 PCIe的基础知识”的内容就全部讲解完了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值