棋子 · 10月8日

PCIe 热插拔原理

1. 插槽结构图

根据CEM标准,PCIe add-in card有两个用于热插拔机制的边带信号,分别是PRSNT1#和PRSNT2#,这两个信号是直接连接在一起的,且这两根信号的金手指长度要比其他的信号的金手指长度要短一点。而在system board connector(俗称插槽)上,PRSNT1#被固定接地,PRSNT2#则被弱上拉(PULL-UP)。如下图所示,当PCIe卡设备未被完全插入插槽时,插槽的PRSNT2#信号由于上拉的作用,将一直处于高电平状态。当PCIe卡设备被完全插入插槽后,插槽上的PRSNT2#信号则会被PCIe卡设备的短路线连接到地,从而使得其变为低电平。hot plug control logic检测到PRSNT2#从高电平跳变到低电平,则会通知downstream port发现presence detect 事件,downstream port会发送中断消息给RC,通知系统软件有设设备插入。

image.png

2. 热插拔基本原理

支持热插拔的Switch downstream port(简称dsp)的PCI Express Capability Structure必须实现slot control Register 和Slot Status Register。当存在endpoint插入或者拔出时,dsp 的硬件逻辑会更新相关的状态寄存器。例如,endpoint插入和拔出时,Slot Status Register中的Data Link Layer State Changed会置1(因为 the Data Link Layer Link Active bit of the Link Status Register发生了变化)

Switch内部存在专门管理热插拔的模块(Hot Plug Control Module),可以通过监控Slot Status Register 检测到如下hot plug事件的发生:

•Power Fault Detected
•MRL Sensor Changed
•Presence Detect Changed
•Command Completed
•Attention Button Pressed
•Data Link Layer State Changed

当检测到hot plug事件发生时,且slot control使能信号为1时,当前dsp发出中断消息通知host发生了hot plug事件。中断消息通常是通过MSIX 或者MSI中断发送的。因为并且其他事件(例如功耗事件)也能触发中断消息,

因此系统软件收到中断时,会通过配置请求(cfgrd)读取DSP的状态寄存器,从而判断得出中断的具体原因。

例如通过读dsp的Link Status Register和Slot Status Register就能知道是否存在endpoint的插入和拔出。

• Link Status Register的Data Link Layer Link Active bit 为1 且 Slot Status Register的Data Link Layer State Changed 为1 ,则表示有endpoint插入slot
•Link Status Register的Data Link Layer Link Active bit 为0 且 Slot Status Register的Data Link Layer State Changed 为1 ,则表示有endpoint拔出slot

3. 参考文档

[1]PCI Express® Base Specification Revision 6.2
[2]PCI Express Card Electromechanical Specification Revision 4.0, Version 1.0

作者:IC小鸽
文章来源:IC小鸽

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
20171
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息