微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何实现PCI Express的热插拔功能

如何实现PCI Express的热插拔功能

时间:05-23 来源:互联网 点击:
  服务器可靠性、可用性和可维护性(RAS)已经成为商务活动中不可或缺的因素,同时,随着RAS承诺正常可用工作时间接近99.999%,即“5个9”,运行中更换或添加元件已经变得很关键。PCI Express(PCIe)作为一串行通信接口标准而被引入到PC和服务器环境,此后,该标准发挥了引导作用,如今发展为服务器互连领域选择的协议之一。这些服务器上的PCIe插槽要求为快速热插拔这一点变得极为重要,这在下一代设计中显然也很重要。要使服务器系统维持在“高可用性”,热插拔功能非常关键。

  热插拔功能的基本目的是,允许电路板和外壳进行有序地活插拔,而不影响系统的运行。维修或更换有故障器件时通常要这么做,因为要安排好服务器停机时间以更换或者安装外设卡通常很难,当然也不是不可能。具有以这种方式插入或更换I/O设备的能力可避免系统停机或者至少可将系统停机时间缩到最短。该技术也可用于为系统的重新配置而增加新功能。膝上型电脑用户也需要热插拔能力来更换有I/O功能的卡,如装在对接站的硬驱和通信口。

  PCI规范2.1原来未计划提供热插拔应用功能,但是后来在1997年,推出了PCI热插拔规范1.0,定义了基本的平台、附加卡和软件要求。不过,在解释和执行规范方面,却给系统开发者和系统用户预留了很大的灵活性。另外,未定义软件可见寄存器组。2001年,推出了一套新规范:PCI标准热插拔控制器(SHPC)1.0和PCI热插拔1.1。这些规范更严格了用户接口,并定义了标准寄存器组,极大地提高了热插拔软件开发的兼容性。

  然而,由于PCI是多点共享总线,用反射波开关,所以硬件有局限性。总线不隔离而插入器件是不可能的。要解决这一问题,有两种可能的选择:依靠平台实现可插入要求,即热插拔,或依靠附加卡实现可插入的要求,即热交换。

  两种方法都有缺点,可采用一些创新性的方法,如在卡插入系统前,对PCI引脚预加电,来避免如产生假信号这样的问题,以保持数据的完整性。标准的PCI连接器引脚长度相同,因此热交换环境下,附加卡的加电顺序无法达到。为引脚?错方案的“紧凑型PCI”定义了一组新的连接器。这样绝大多数限制解除了,但是因为PCI是并行总线,性能成了一个瓶颈。总线工作的频率取决于总线负载,总线上器件越多,总线速度就越慢。最后,由于PCI总线具有共享的特点,经受不住元件故障,这是因为总线上任何不稳定的行为都会使总线上所有器件无法通信。

  PCI Express一开始就设计为具有热插拔功能。同样,热插拔寄存器也是PCIe功能的构成部分,使操作系统具有标准的热插拔硬件寄存器接口,该接口可通过PCIe总线的配置接入来存取。PCI Express也通过定义基本架构水平的硬件要求的热插拔功能,而定义了一个标准的使用模型。有了热插拔控制的固有支持,就能使创新的服务器模块形状在加电状态下就可插入或拔掉,不用打开机箱。

  在基于PCIe的服务器系统中,热插拔插槽既可由芯片组也可由开关的下游口提供。由于PCIe是点对点总线,根组件端口数有限,通常要有开关,以进行插槽扩展和创建。对软件而言,这些开关表现为PCI-PCI桥,每个完成热插拔插槽的口在桥结构的空间都有各自的热插拔寄存器组。这些寄存器向软件报告有无已定义的热插拔机制,包含电源控制、插槽指示器以及卡插入/移去、闭锁打开/闭合和注意按钮摁下的标志。把中断上行数据流发送给根组件,以此来通知软件。通知选项是实现依赖型。

  PCIe开关开发者采用了两种方法提供热插拔支持,选择片上(图1)或者选择片外SHPC支持。第一种方法是把控制器逻辑和信令接口嵌入在开关中,器件和插槽功能寄存器也在开关中实现。在片外SHPC方案中,没有信令接口,要求系统硬件设计师在电路板上加上附加电路,通过FPGA或支持I2C的I/O扩展器来模拟热插拔控制器。这样会增加材料成本,增大电路板空间,同时增加设计的复杂性。PLX技术PCIe开关就是一个片上SHPC方案的例子,所有需要的热插拔状态寄存器都集成在片上,同时也给出了热插拔方案要求的所有信号。PLX开关支持3~8个热插拔功能口,样充分降低了实现需要SHPC功能的系统的成本和复杂性。


  PCI Express热插拔软件支持功能取决于3个基本因素:固件支持、器件驱动器支持和操作系统支持。这3个因素都必须支持热插拔规范,以使系统能完成附加卡插入和拔出。

在上电自测试(POST)期间,加电时,固件创建和加载某些程序和表格。这些程序和表格的实现在“高级配置与电源接口固件规范”中已作了定义。固件也负责配置操作系统的系统地址空间。固件将系统地址划分为许多专用区域,包括用于系统存储器、

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top