快速发展
PCIe规格的发展要快于设计者实现它的速度。最初的PCIe1.0规格出现在2002年,一年后出现了1.0a版,而2005年推出了1.1版。由于新硅片的设计时间一般要18个月以上,很多现有的芯片实现仍然只遵循1.0a版规格,只有少量遵循1.1版规格。所幸,两次修订之间只有少许差别,因此它们是兼容的。
但与此同时,PCISIG在继续发展PCIe规格。 2.0版在2007年1月面市,它对原规格作了几处重大修改。最引人注目的一点是提高了串行数据速率。原 PCIe 规格要求,通道在每个方向以 2.5 Gbps 速率通信;PCIe 2.0 将这
一速率加倍到 5 Gbps。为保持 1.1与2.0接口之间的互操作性,规格将速度提升作为选项,并包含了一个LTSSM(链路训练与状态机)速率协商功能,以判断一个链路的两端支持哪种速度。
但速度的提升并不是 PCIe 2.0中唯一的新特性。除了带有一个开发者在 Version 1.0a 和 1.1 器件设计时所发现问题的勘误表以外,2.0版规格还增加了新的功能。其中之一是可选编程能力,以及信令超时情况下的一个强制失效机制。这个功能有助于开发人员实现更长信号延迟的设计,高于在主板环境下的预期水平。另一个可选功能是功能级的复位指令,这样系统软件就可以单独复位电路板,而不是简单地复位整个电路板。增加的第三个功能是使用 ACS(访问控制服务)来支持 PCIe 总线上的对等通信(见图2)。
不过 PCISIG 并没有就此止步。2007 年 2 月,它发布了一个在一根电缆上延长 PCIe 总线的标准(见附文“多机箱的 PCI Express”)。它还对规格作了其它工作,将图形卡的功率提高到 300W,为内插卡建立了新的尺寸标准,以及提供 I/O 虚拟化方法。这种虚拟化工作是一个两步过程,它使一个 PCIe 系统同时表现为多个使用共享硬件的机器。第一步是定义一个单根平台(single-root platform),使多个操作系统和应用程序可以运行在单一硬件平台上,而外表看还是网络中多台机器在工作。第二步是定义一个多根结构(multiroot structure),使多个处理器可以共享外设硬件。

PC 之外的 PCIe
所有这些对 PCIe 规格的创新与改进都在 PC 市场内外极大地扩展了PCIe的应用。另外它们还创建了一些设计关注点,虽然它们最终会获得解决,但对今天试图应用该技术的开发人员形成挑战。今天最大的挑战之一就是引导固件或 BIOS,它负责在加电以后启动计算平台。
据固件供应商 Phoenix Technologies 的 BIOS 工程副总裁 Trevor Western 说,挑战的重点是 BIOS 应如何支持不提供 PCIe 或没有正确实现 PCIe 的操作系统和设备。PCIe 提供了与 PCI 的逆向兼容性,使 BIOS 开发者至少可以将系统配置成好像内含的一切都是 PCI,但这种方案过于保守。PCIe 具备一些标准没有严格定义以及实现时可能变型的能力,如同步传输。据 Western 说,使用这些功能是有风险的。实现中的一个错误都会在启动时使系统锁死。
Western 还指出,常见的操作系统(如 Windows XP 和 Windows 2000 Server)并不能明确地支持 PCIe 的附加特性,如热插拔、电源管理以及 MSI(消息服务中断)。结果,BIOS 供应商通常要在使用这些程序的计算机中禁用一些 PCIe 功能,除非客户请求这种支持。有些 BIOS 版本还允许你在系统配置时打开 PCIe 功能。不过,开发人员应清楚自己系统使用的 OS,以避免在制作自己外设或嵌入系统时感到失望。例如,如果 OS 或 BIOS 不支持 MSI,则系统应回复到 PCI 的 IRQ(中断请求)格式,且不能获得 PCIe 的全部性能。
但 Western 指出,这种情况是暂时的,只针对较老的主板、BIOS 版本,以及使用这种老式软件的计算机。Windows Vista 和即将上市的 Longhorn 服务器软件都支持 PCIe 的额外功能,如同系统的 BIOS 将为它们所设计的那样。他还提到,获专利的嵌入式操作系统和基于 Linux 的系统已成功实现了 PCIe 支持。