PCIe复位机制

复位类别

PCI总线中定义了四种复位名称:冷复位(Cold Reset)、暖复位(Warm Reset)、热复位(Hot Reset)和功能层复位(Function-Level Reset,FLR)。其中FLR是PCIe Spec V2.0加入的功能,因此一般把另外三种复位统称为传统的复位方式(Conventional Reset)。其中冷复位和暖复位是基于边带信号PERST#的,又被统称为基本的复位方式(Fundamental Reset)。

传统的复位方式(Conventional Reset):冷复位(Cold Reset)、暖复位(Warm Reset)、热复位(Hot Reset)
基本的复位方式(Fundamental Reset):冷复位(Cold Reset)、暖复位(Warm Reset)

基本复位由硬件自动处理,会复位整个PCIe设备,初始化所有状态机与相关硬件逻辑,端口状态以及配置空间中的配置寄存器等等,一般来说,基本复位是针对整个系统做Reset,但是有时也可以针对某个单一设备进行重置。

两种基本复位的类型:
(1)冷复位(Cold Reset):当设备的主电源打开时执行。循环使用电源会导致冷复位。
(2)暖复位(Warm Reset):在不关闭主电源的情况下,由系统专门的方式触发。例如,可以使用系统电源状态的更改来启动此操作。规范中没有定义生成Warm Reset的机制,由系统设计师自由选择实现。

在PCIe Spec中,规定了两种触发基本复位方式。
一是通过PERST#(PCIe Reset)信号控制。
二是在没有PERST#信号的情况下,通过Power on/off的方式实现。

PCIe PERST#是如何生成的

  1. 系统上电稳定后,有POWERGOOD信号产生(右图红色框所示)。
  2. 当系统的南桥芯片(也就是图中的IO控制器ICH)收到POWERGOOD信号后,就会产生PERST#信号(右图绿色部分),此时会引起Cold Reset。
  3. 如果系统可以通过非上电的方式触发PERST#信号,此时会引起Warm Reset。
  4. 所有PCIe设备都需要将PERST#信号连接在主板上,包括连接器和图形控制器。

在这里插入图片描述

PCIe Hot Reset

Hot Reset是一种软件控制的复位方式。PCIe设备出现错误时,通常情况下用软件的方式对设备重置。软件可以通过在Bridge control中设置Secondary Bus Reset bit来触发Hot Reset.
另外,在PCIe总线中,通过发送TS1序列,并且在TS1序列中设置Hot Reset bit来对下游设备进行Hot Reset

Bridge Control Register (Offset 3Eh)
在这里插入图片描述

在这里插入图片描述
举例:
系统通过软件对Switch A左边端口的Secondary Bus Reset bit置为1(下图红色框),触发了Hot Reset.
之后通过发送TS1序列对PCIe链路中的下游设备触发Hot Reset(下图黑色箭头).
在这里插入图片描述
在这里插入图片描述

PCIe功能层复位(FLR)

传统复位方式均属于全局复位方式,而FLR的优势则是对局部复位。
在PCIe协议中,一个PCIe设备可能包含多个功能模块(Function),每个功能模块相互对立,共用一个PCIe link。其中,某个功能模块出问题时,虽然可以采用传统复位方式对整个PCIe设备复位,但这个显然不友好,FLR允许只对其中出错的功能模块(Function)进行重置,其他功能模块正常工作。不过,FLR复位方式对PCIe设备并不是必须的,在对PCIe设备使用FLR复位之前必须先检查是否支持FLR。这部分可以查看Device Capabilities Register (Offset 04h) 是否将Funcion-Level Reset Capability bit置起。

如果PCIe设备支持FLR,那么就可以通过设置Device Control Register (Offset 08h)中的Function-Level Reset bit触发FLR复位
在这里插入图片描述
在这里插入图片描述
FLR是一个局部复位方式,只对出问题的那个Function起作用
FLR只会改变当下Function内部的状态和寄存器的内容,并且FLR的Function所在的PCIe链路状态不会改变,因为其他Function也在共用整条PCIe链路

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值