热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!

热插拔有三个重要的功能:

  1. 在线替换发生故障的PCIe设备。不需要关闭、重启系统。
  2. 热插拔器件,系统及其他功能服务继续运行,不受影响。
  3. 热插拔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与热插拔

如图 1所示,PCIe背板卡槽的PRSNT1#接地,PRSNT2#连接到热插拔控制器,并上拉。PCIe板卡的PRSNT#1信号连接到距离其最远的PRSNT2#引脚(PRSNT2#可能有多个)【2】。需要注意的是,PRSNT引脚比其它引脚短1mm,这样可以保证插入和拔出时有1ms的时间差,从而确保上电、掉电时序符合规范。当板卡插入时,其它引脚接触完成后,PRSNT#1先被拉低,PRSNT#2最后被拉低,然后PCIe背板的热插拔控制器认为板卡已被完全插入,开始启用相关信号。

图 1 PRSNT信号与热插拔

PRSNT硬件设计

当硬件需要支持热插拔时,PRSNT1#、PRSNT2#引脚必须按照规范连接,如果不支持热插拔(不用于服务器的板卡一般都不支持)则必须将PRSNT2#接地,如果悬空会导致背板插槽的PRSNT2#无法被拉低,从而导致板卡无法正常工作(仅出现于支持热插拔的PCIe背板)。

参考

【1】       PCI Express Card Electromechanical Specification Revision 2.0

【2】       https://pinouts.ru/Slots/pci_express_pinout.shtml

【3】       https://www.pcietech.com/367.html/

PCIe引脚PRSNT与热插拔的更多相关文章

  1. PCIe简介及引脚定义

    参考文章:http://www.2cto.com/os/201607/523581.html http://blog.csdn.net/michaelcao1980/article/details/4 ...

  2. PCI、CPCI、CPCIE 区别、特点

    PCI.CPCI.CPCIE 区别.特点 CPCI总线 •PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器 •(1) PCI总线空间与 ...

  3. 戴文的Linux内核专题:10配置内核(6)

    转自Linux中国 欢迎来到下一篇关于内核配置文章!还有大量的选项需要配置.这篇文章将主要讨论PCI和ACPI. 这里我们可以启用由ACPI控制的扩展坞和可移动驱动器槽的支持(Dock).记住,ACP ...

  4. 基于FPGA的PCIe接口实现(具体讲解了数据流向)

    时间:2014-12-09 来源:西安电子科技大学电子工程学院 作者:姜 宁,陈建春,王 沛,石 婷 摘要 PCI Express是一种高性能互连协议,被广泛应用于网络适配.图形加速器.网络存储.大数 ...

  5. KVM 介绍(4):I/O 设备直接分配和 SR-IOV [KVM PCI/PCIe Pass-Through SR-IOV]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  6. 阵列卡,组成的磁盘组就像是一个硬盘,pci-e扩展出sata3.0

    你想提升性能,那么组RAID0,主板上的RAID应该是软RAID,肯定没有阵列卡来得稳定.如果你有闲钱,可以考虑用阵列卡. 不会的.即使不能起到RAID的作用,起码也可以当作直接连接了2个硬盘.不会影 ...

  7. FPGA与PCI-E

    从并行到串行: PCI Express(又称PCIe)是一种高性能.高带宽串行通讯互连标准,取代了基于总线的通信架构,如:PCI.PCI Extended (PCI-X) 以及加速图形端口(AGP). ...

  8. 4.1 PCIe总线的基础知识

    与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端.PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通 ...

  9. PCI和PCIE插槽有什么区别?

    PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽.PCI插槽也是主板带有最 ...

随机推荐

  1. 学习Redis(一)

    一.NoSQL 1.NoSql介绍 1.not only SQL,非关系型数据库,它能解决常规数据库的并发.IO与性能的瓶颈 2.解决以下问题: ① 对数据库的高并发读写需求 ② 大数据的高效存储和访 ...

  2. nginx静态资源服务器配置

    编辑 nginx.conf server { listen 80; server_name file.youxiu326.xin; location /image/ { #访问 file.youxiu ...

  3. Cadence 错误合集

    1.原理图DRC出现如下错误"Duplicate Pin Name "GND" found on Packag" 解决方案:原因是元件引脚重复定义,可以进行重新 ...

  4. css3中user-select的用法详解

    css3中user-select的用法详解 user-select属性是css3新增的属性,用于设置用户是否能够选中文本.可用于除替换元素外的所有元素,以下是user-select的主要用法和注意事项 ...

  5. 「腾讯视频」微信小程序插件介绍

    上期,我们在<从原理到应用,一文带你了解小程序插件能力>一文中介绍了小程序插件的意义.作用以及应用.今天开始,我们会每期与大家分享一款优秀的小程序插件,从使用场景到使用方法,都将作出详细的 ...

  6. Slog71_选取、上传和显示本地图片GET !(微信小程序之云开发-全栈时代3)

    ArthurSlog SLog-71 Year·1 Guangzhou·China Sep 12th 2018 ArthurSlog Page GitHub NPM Package Page 掘金主页 ...

  7. 【promise| async/await】代码的控制力

    什么样的代码好控制? 结构 + 节奏 --- 什么鬼? 如何控制节奏? 具体例子看看怎么控制节奏?

  8. 使用Canvas和JavaScript做一个画板

    本文同步于个人博客:https://zhoushuo.me/blog/2018/03/11/drawing-borad/ 前些天学习了HTML5的<canvas>元素,今天就来实践一下,用 ...

  9. 设计一个基于svg的涂鸦组件(一)

    基于svg写了一个涂鸦组件,说项目之前先附上几张效果图: 项目地址:SVGraffiti 由于篇幅问题,本文先总体介绍一下项目的大概情况,重点介绍一下组件间的通信方式. 一.项目说明 该项目是基于we ...

  10. python-你好

    你的程序会读入一个名字,比如John,然后输出"Hello John". 输入格式: 一行文字. 输出格式: 一行文字. 输入样例: Mary Johnson 输出样例: Hell ...