PCIe专题学习——7.0(PCIe热插拔)

之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer);

一:热插拔(Hot-Plug)

当你准备在不断电的情况下插拔一块PCIe SSD时,你可要小心了,如果在PCIe设备不支持热插拔的条件下,很可能会对主板或者PCIe插槽造成损毁。

为了防止意外的发生,PCIe spec设计了一种“No Surprise”热插拔机制,即,当用户要热插拔PCIe设备时,必须先通知系统软件做好准备,然后通过指示灯告知用户热插拔的状态。

PCIe环境下的热插拔需要软件与硬件的通力合作,先来看一张示意图,红色框内属于软件方面的需求,绿色框内是硬件方面的需求。

软件方面主要包括:

  • User Interface: 这部分由系统OS提供。主要允许用户可以请求插拔PCIe设备。

  • Hot-Plug Service: 这部分也是由系统OS提供。主要负责处理用户插拔PCIe设备的请求。

  • Standardized Hot Plug System Driver: 这部分驱动可以由系统OS或者主板提供。

  • Device Driver: 这部分主要有适配卡提供。

硬件方面主要包括: 

  • Hot-Plug Controller: 主要负责接收和处理来自Hot Plug System Driver的指令。

  • Card Slot Power Switching Logic: 主要被Hot Plug Controller控制,用于turn-on/off电源。

  • Card Reset Logic: 按照Hot-plug System Driver的指示,Hot Plug Controller向需要插拔PCIe设备的插槽(Slot)传送PERST#信号。

  • Power Indicator: 主要负责指示设备连接器上面的电源状态。

  • Attention Indicator: 这个是警示灯,提醒用户热插拔失败状态,所以一般情况下处于关闭状态。

  • Card Present Detect Pins: PCIe设计了两个用于检测PCIe设备是否存在的信号PRSNT1#和PRSNT2#。 PRSNT#1接地,当PCIe设备存在时,PRSNT#2拉高。

在介绍PCIe设备插拔的过程之前,我们先了解一下PCIe插槽的On/Off状态:

PCIe Slot ON:

  • 上电;

  • RefClk参考时钟打开;

  • PCIe链路是激活状态或者处于ASPM状态(L0s/L1);

  • PERST#信号处于无效状态。

PCIe Slot OFF:

  • 断电;

  • RefClk参考时钟关闭;

  • PCIe链路是关闭状态或;

  • PERST#信号处于有效状态。

如果要调整Slot上的状态,步骤如下:

PCIe Slot ON转为OFF:

  • 先关停PCIe链路。主要发送EIOS序列进入高阻态;

  • 其次,向slot发送PERST#信号;

  • 然后,关掉RefClk参考时钟;

  • 最后,给slot断电。

PCIe Slot OFF转为ON:

  • 先上电;

  • 其次,打开RefClk参考时钟;

  • 然后,解除slot上PERST#信号。

在PCIe slot上面插拔PCIe设备的步骤是什么呢?

移除PCIe设备:

初始状态是:Attention Indicator(Yellow)-Off,Power Indicator(Green)-On

步骤是:

  • 用户通过压下Attention按钮或者在软件界面告知系统移除PCIe设备的消息。当按下Attention按钮之后,Hot-Plug Controller检查到这个讯息之后,会发送中断给Root Complex。之后,Hot-Plug Service会调用Hot-Plug System Driver去读取slot的状态信息并且侦测到Attention按钮的状态;

  • Hot-Plug Service调用Hot-Plug System Driver让Power指示灯开始闪烁5s并通过状态寄存器来验证热插拔的请求;

  • Hot-Plug Service命令Device Driver停用PCIe设备;

  • 软件通过Link Control Register关闭PCIe链路;

  • 软件命令Hot-Plug Controller关闭slot;

  • 断电后,Power指示灯处于OFF状态;

  • 系统为PCIe设备寻找对应的驱动,并将驱动放入内存;

  • 系统取消对Slot的配置资源。

插入PCIe设备:

初始状态是:Attention Indicator(Yellow)-Off,Power Indicator(Green)-Off

步骤是:

  • 用户安装PCIe设备,并且压下Attention按钮或者在软件界面告知系统安装PCIe设备的信息。主要通过发送中断的形式告知系统热插拔信息;

  • 热插拔软件通过状态寄存器来验证热插拔的请求;

  • 软件命令Power指示灯开始闪烁;

  • 软件命令Hot-Plug Controller将Slot打开,让Slot处于ON状态;

  • 上电后,Power指示灯处于ON状态;

  • 系统为PCIe设备寻找对应的驱动,并将驱动放入内存;

  • 系统调用驱动完成对PCIe设备的初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值