背景
使用PCIe的系统通常需要高的可用性或者non-stop工作,在线服务供应商需要计算机系统一年中仅仅有几分钟的空闲时间。构建这样系统可能受到多方面因素的影响,但是设备可靠性显然是很重要的。为了便于达成这样的目标,PCIe使用三个重要的功能来支持add-in卡的热拔插/热交换:
- 在不关闭系统的情况下,替换失效的扩展卡.
- 在修复过程之中保持OS和其他服务不间断运行.
- 关闭和重启与失效设备相关的软件.
在PCI广泛普及前,已经开发许多热拔插解决方案专利来支持扩展卡的移除和替代。PCI实现最初的实现并不支持卡的热移除和插入,但是已经有两个标准解决方案可以支持PCI中的这个功能。第一个就是PC服务器主板和扩展Chassis中所用的热拔插PCI卡;第二个就是所谓的热交换,该技术主要用于基于无源PCI背板实现的CompactPCI系统中。
在两种解决方案中,都使用控制逻辑从电气上把卡逻辑与共享PCI总线隔离开来。通过控制电源,时钟和复位来确保当卡被移除,替代时,可以有序的掉电和有序上电,卡的状态和电源LED用于通知用户何时可以安全的移除和替代卡。
扩展热拔插支持PCI Express卡是一个显著的提升,设计人员也增加了许多原生的热拔插特征到PCIe。在规范中定义了配置寄存器,热拔插消息和支持热拔插解决方案的流程。
PCIe环境下的热拔插
PCIe热拔插源自于PCI标准Hot-Plug控制器规范1.0版本。PCI Express热拔插的目标如下:
- 支持标准热拔插控制器规范中定义的标准使用模型. 这确保了从用户角度PCI Express热拔插与SHPC 1.0规范保持一致性.
- 支持现有操作系统实现的软件模型. 然而,对于PCI Express热拔插控制器,使用服从SHPC 1.0规范规范的操作系统是不能工作的,这是由于编程接口的差异造成的。
支持热拔插控制器的必要寄存器集成到了单个Root和Switch端口。在热拔插软件控制下,这些控制器和相关的端口接口必须卡的接口信 确保在卡发生变化时保证有序的掉电和上电。为了达到这样的目的,那么需要:
3. 可以断言和去断言PCI Express设备连接器的PERST_N信 .
4.
Surprise移除通知
按照PCIe Card CEM规范设计的卡在连接器上实现了卡在位检测引脚(PRSNT1_N和PRSNT2_N),这两引脚比连接器上其他引脚要短一些,因此,当PCIe卡被移除时,这些引脚首先脱离接触,这种机制可以在信 脱离接触前通知软件surprise移除,允许软件有时间移除设备电源。
PCI和PCI Express热拔插存在的差异
PCI和PCI Express热拔插解决方案支持热拔插所需要的要素本质上是相同的。下图显示了PCI支持热拔插所需要的硬件和软件要素。PCI解决方案实现了系统板卡上的标准热拔插控制器,用来处理总线上所有的热拔插槽。在PCI环境下需要隔离逻辑在PCI卡变化之前从电气上断开卡到共享总线的连接,以避免active总线上信 产生抖动。
PCIe使用点对点连接,也就不需要逻辑隔离,但是每个端口需要一个单独的热拔插控制器,每个Root和Switch端口定义的标准化软件接口控制着热拔插操作。
PCI热拔插要素
PCI Express热拔插要素
支持热拔插所需要的要素
如上图所示,构建热拔插支持环境需要要素协同工作,我们大致从软件和硬件两层面进行阐述。
软件要素
下面描述了支持热拔插功能的主要软件要素:
- 软件接口:由OS厂商提供,OS提供的工具允许用户请求连接器掉电,移除板卡,或者给已安装的板卡供电.
- 热拔插服务:OS厂商提供,一项处理OS发出的请求的服务。主要包括:
2.1 提供槽位标识符
2.2 打开或关闭板卡电源
2.3 打开或关闭Attention指示
2.4 读当前槽位的电源状态
热拔插服务与热拔插系统驱动交互来满足OS发出的请求,与热拔插系统驱动的接口由OS厂商定义。 - 标准化热拔插系统驱动:由系统板卡厂商提供或者OS厂商提供,接受OS中热拔插服务的请求。与硬件热拔插控制器交互来实现请求.
- 设备驱动:适配卡厂商,一些特定的热拔插功能必须包含在支持热拔插设备驱动中。主要包括:
4.1 支持静默命令
4.2 可选支持暂停命令
4.3 支持启动命令或者可选支持恢复命令
支持热拔插功能的系统可以使用不支持热拔插功能的OS。在这种情况下,尽管系统BIOS可能包含了热拔插相关的软件,但是热拔插服务可能并不存在。假定用户不进行板卡的热拔插,那么系统作为一个标准非热拔插系统使用:
1.
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!