【PCIe 总线及设备入门学习专栏 5.1 -- PCIe 引脚 PRSNT 与热插拔】
文章目录
- Overview
- PRSNT 与热插拔
- PRSNT 硬件设计
Overview
Spec 定义的热插拔是把一个PCIe卡(设备)从一个正在运行的背板或者系统中插入/或者移除。这个过程需要不影响系统的其他功能。插入的新的设备可以正确工作。 显然,这里面需要考虑的问题有硬件和软件两方面的事情。
热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。
热插拔有三个重要的功能:
- 在线替换发生故障的PCIe设备。不需要关闭、重启系统。
- 热插拔器件,系统及其他功能服务继续运行,不受影响。
- 热插拔PCIe设备的相关驱动/软件自动加载/卸载。
Spec 中对于热插拔是这样定义的:
-
Hot-Plug
Insertion and/or removal of a card into an active backplane or system board as defined in PCI Standard Hot-Plug Controller and Subsystem Specification, Revision. 1.0. No special card support is required. -
Hot swap
Insertion and/or removal of a card into a passive backplane. The card must satisfy specific requirements to support Hot swap.
注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的 “热插拔”。这里的 Hot-Plug,为了方便,我们叫做 PCIe
热插拔,也就是我们现在及后面将要讨论的内容。
Hot Swap,即热交换,也叫热切换,主要指的是CPCI(Compact PCI,紧凑型PCI)领域所使用的。关于 Hot Swap,CPCI有专门定义的一套规范,叫《CompactPCI® Hot Swap Specification》,也有中文版本,有兴趣的可以自行研究。 如无特别的指出,我们后续所说的热插拔都是指的是PCIe Hot-Plug。
顺便说一下:在PCI的年代,就已经提出了PCI的相关热插拔规范。2001年,PCI定义了PCI标准热插拔控制器(SHPC:PCI Standard Hot-plug Controller and Subsystem Specification)规范,PCIe沿用了这套规范。
硬件上看,一个新 的PCIe设备插入系统,肯定是需要硬件上支持识别到这个插入动作的。因此,Spec 定义了一个在位(Present)的pin脚,硬件上用作判断卡是否插入。
卡插入时,这个pin被拉低。当然,因为PCIe金手指的长度较长,插入卡时有可能前后高低差异。因此,需要有前后多个present pin来确保金手指完全插入。
PRSNT 与热插拔
如下图所示,PCIe背板卡槽的PRSNT1#
接地,PRSNT2#
连接到热插拔控制器,并上拉。
PCIe板卡的PRSNT#1
信号连接到距离其最远的PRSNT2#
引脚(PRSNT2#
可能有多个)。需要注意的是,PRSNT引脚比其它引脚短1mm,这样可以保证插入和拔出时有1ms的时间差,从而确保上电、掉电时序符合规范。
当板卡插入时,其它引脚接触完成后,PRSNT#1
先被拉低,PRSNT#2
最后被拉低,然后PCIe背板的热插拔控制器认为板卡已被完全插入,开始启用相关信号。
PRSNT 硬件设计
当硬件需要支持热插拔时,PRSNT1#
、PRSNT2#
引脚必须按照规范连接,如果不支持热插拔(不用于服务器的板卡一般都不支持)则必须将PRSNT2#
接地,如果悬空会导致背板插槽的PRSNT2#
无法被拉低,从而导致板卡无法正常工作(仅出现于支持热插拔的PCIe背板)。
除了使用Present Pin之外,也可以通过链路的负载检测等来完成。也就是所谓带内检测在位。或者一些特殊的场景比如NT-NT背靠背,就没有Present信号。NT-NT的插入时,链路自动重新Link。
推荐阅读:
https://blog.csdn.net/dongdongnihao_/article/details/132480983
https://www.pcietech.com/367.html/