PCIe接口卡热插拔机制解析

更新时间:2023-09-12 16:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

PCIe接口卡热插拔机制解析

来源: 新电子 发布时间: 2013-03-18 12:15 1983 次浏览 大

小: 16px 14px 12px 谈到PCIe的电源管理,常联想到这种接口与PCI Bus PM接口规范及ACPI2.0规范兼容。另一个与电源密切相关的问题就是PCIe支持的热插拔功能。 在不关机的情况下把接口卡直接插入插槽需要某些机制与步骤,否则主板或接口卡很容易毁损。下面就来说说PCIe热插拔的各项对策。

严格来说,PCIe(PCI Express)的热插拔产生于为PCI总线制定的热插拔控制器标准规范(SHPC1.0)。PCIe热插拔的设计理念隶属于一种“无意外(No Surprises)”式策略,即用户在插入或拔除接口卡时,必须先行通知系统;系统软件也得做好准备,通过显示器通知使用者热插拔的状态。

回想过去PCI总线发展的历程,起初并没有针对热插拔作特别定义,后来由于工业应用上的需要,市场上才出现支持热插拔的机制。CompactPCI就是一个例子。

就热插拔的系统观点来说,PCI与PCIe概念上是一致的,都需要“热插拔控制器”(Hot-plug Controller)负责控制。

PCI总线是一个共享式的总线接口(Share Bus),因此隔离措施的逻辑线路是必要的。而PCIe接口架构属于点对点(Point-to-point)连接型态,消除了隔离逻辑线路的存在,也允许分布式的热插拔控制器分别处理相关端口。PCIe构成元器件每个端口定义了标准的软件接口。因为程序接口存在差异,PCI与PCIe就需要不同的驱动软件。

从物理接口上看,PCIe与PCI的区别在于PCIe的接脚定义了接口卡存在检测的信号(PRSNT1及PRSNT2)。即使不小心或被恶意拔除,系统软件依然有足够时间处理。

PCIe环境下的热插拔

要在PCIe环境下完全支持热插拔功能,就需要软/硬件双方面的搭配。软件方面,操作系统OS要涵盖用户界面、热插拔系统软件服务,还有设备驱动软件(Device Driver)等。在硬件方面,端口器件端要有热插拔控制器、接口卡电源开关逻辑线、接口卡复位线、提示按钮(Attention Button)、指示器(Power Indicator/Attention Indicator)与接口卡存在检测接脚(即PRSNT1#与PRSNT2#信号)等。

以下我们先就具有热插拔功能接口卡的插入与移除步骤做个说明,首先要了解插槽“On”与“Off”状态的内在涵义是什么。

插槽“On”有下列几点关键内容: ◆ 电源加在接口卡上 ◆ REFCLK参考时钟信号开启

◆ 传输链路(Link)处于动态或通过ASPM进入省电模式(L0s或L1状态) ◆ 关闭PERST#信号

而插槽“Off”恰好相反: ◆ 关闭加在接口卡上的电源 ◆ REFCLK参考时钟信号关闭 ◆ 传输链路处于无效状态(Inactive) ◆ 启动PERST#信号

正常工作情况下,电源指示灯(Power Indicator,绿色)开启,闹钟提示器(Attention Indicator,琥珀色或黄色)则处于关闭状态。

软件会利用配置写入交易的传输模式,来对热插拔控制器送出指令请求(Request),并控制加在接口上的电源及指示器状态。

当使用者要移除(Removal)接口卡的时候,触发可以有两种方式,通过“按键”或软件程序的“用户界面”来激发。 使用按键移除的详细步骤如下:

◆ 步骤一:使用者按下“闹钟提示器”键,热插拔控制器获得该信息,发出中断信号到“Root Complex”端,系统读取插

槽信息并确认按键的请

◆ 步骤二:热插拔控制器使电源指示灯闪烁

◆ 步骤三:热插拔服务常式下令中止驱动程序,不对接口卡发出任何请求动作 ◆ 步骤四:软件转向接口卡插槽端口的链接控制寄存器,使链路双端的端口都失效 ◆ 步骤五:热插拔控制器关闭插槽

◆ 步骤六:软件发出“关闭电源指示灯”的请求,指示使用者可以移除接口卡

◆ 步骤七:释放手动接口卡固定插销(MRL),让热插拔控制器可以从插槽移走SMBus与JTAG等开关信号,然后拔除接口卡

◆ 步骤八:系统将该接口卡占用的资源,如存储空间、中断信号线等,让渡给其他元器件使用

接口卡的插入步骤则基本与上述过程相反。 PCIe热插拔控制器再探讨

“PCI Hot Plug”1.0版规格并未定义有标准的暂存器及用户界面,所以各厂商采用的软/硬件各有不同。消费者购买不同厂商的产品时,都要学习和熟悉其使用方式。为此,PCI热插拔控制器(HPC)1.0版规范特别作了下列两条重要规定:

◆ 定义了标准用户界面(User Interface),消费者在使用上就更轻松了

◆ 针对热插拔控制器,提供了一个标准化程序界面(Programming Interface),使得将一个标准化的热插拔驱动软件纳入操作系统变得可行

比较遗憾的是,PCIe暂存器并未在HPC中有相关定义。标准的热插拔控制器驱动软件在处理PCI与PCIe时就略显不同。

先来谈标准的用户界面。这个标准的用户界面必须具有闹钟提示器、电源指示灯、手动接口卡固定插销(MRL)、插槽编号识别(Slot Numbering Identification)、软件使用界面及提示按钮等。

闹钟提示器应尽可能接近接口插槽,可以采用黄色或琥珀色的LED指示灯。该指示灯的主要作用是吸引用户的高度注意,告知热插拔的操作失败。因此,正常情况下该指示灯是关闭的。

电源指示灯主要反映主电源已分派到插槽上,由热插拔相关软件控制,显示颜色为绿色。指示灯亮表示不可插入或移除接口卡。

MRL最主要的作用是固定接口卡,另外可以选择额外添加传感器(Sensor)。MRL所控制的开关信号不外乎Vaux辅助电源及SMbus信号(SMBCLK与SMBDAT信号)等。

仔细研读PCIe的核心规格与CEM(Card ElectroMechanical)规格就可以发现该规范定义了PCIe热插拔所需的插槽信号。其中:

◆ PWRLED#:电源指示灯输出信号 ◆ ATNLED#:闹钟提示器输出信号 ◆ PWREN:主电源到插槽的控制信号 ◆ REFCLKEN#:参考时钟到插槽的控制信号 ◆ PERST#:基本复位信号 ◆ PRSNT1#:连接器端接地

◆ PRSNT2#:接口卡存在信号,在系统主板端接拉高电阻

◆ PWRFLT#:外部逻辑用来告知热插拔控制器电源有误的输入信号 ◆ AUXEN#:AUX信号与辅助电源的控制信号 ◆ MRL#:MRL感应器输入信号

◆ BUTTON#:即“Attention Button”,用来通知热插拔控制器用户要进行热插拔的动作

PCIe对于热插拔控制器的标准程序界面是通过PCI Express容量寄存器(PCI Express Capability register)来实现的。

插槽容量(Slot Capabilities)必须读取设备容量寄存器(Device Capability Register)才会知道是否支持按键与指示器。

系统控制热插拔事件与动作是通过插槽控制寄存器(Slot Control Register)来完成的,其相关位定义如图6所示。 热插拔控制器追踪各种事件并通知管理热插拔的系统驱动软件,再由状态位加以确认。

通常系统主板上会有不少插槽,各个插槽之间的识别需要身分确认数值(Physical Slot ID),但这些识别值是由系统设计者指定的,也必须让诸如芯片值的Root或Switch元件的端口知道。毕竟,硬件在起初必须对各个插槽的状态寄存器(Slot Status Register)作初始化处理。

热插拔的电源预算

PCIe规格里提到电源预算(Power Budgeting)这个问题,也就是规格书上所说的Power Budgeting Capability,隶属于一个设计选项(Option)。虽然不是百分之百针对热插拔的接口卡,至少让系统设计者对接口卡在设计上有足够的电源预算,尽可能减少彼此之间的冲突,也可精确控制散热处理。

规格中定义了支持电源预算的相关配置寄存器,却没有描述详细的实现方案。

系统固件(System Firmware)必须知道整体的系统可用电源、系统设备的电源配置、接口上的插槽等信息。 一个允许热插拔的端口在插槽容量寄存器中有能量限制(Slot Power Limit)和能量数值(Slot Power Scale)字段,电源软件或固件初始化时必须在此字段中装入数值,表示该端口允许的最大电源提供量。同时,端口也会利用Set_Slot_Power_Limit告知接口卡。

对于支持电源预算的接口卡,设备容量寄存器(Device Capabilities register)只存放端口送过来的消息数值。同时,电源预算容量寄存器内的数值用来报告电源相关的信息。而设备驱动程序(Device Driver)的作用是在启动前检验电源是否充足。

本文来源:https://www.bwwdw.com/article/qjjh.html

微信扫码分享

《PCIe接口卡热插拔机制解析.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top