PCI-X

PCI Express（PCI-E或PCIe），是另一种不同的电脑总线PCI-X是传统PCI总线（Peripheral Components Interconnect）的升级版，有更高的带宽。在PCI Express出现前，PCI-X多用于服务器和工作站。

PCI-X 是1998年由IBM、惠普以及康柏（Compaq）等公司制定，采用64位元总线宽度，以及133MHz的频率来传送资料，相较于PCI，有更多的接脚，而且所有的连接装置会共享所有可用的带宽，但两者的协定相当类似。PCI-X 2.0还可支援266MHz或533MHz的频率。

PCI-X还支援MSI，这是一种主动通知的中断机制。过去的PCI都是被动通知中断，而且是共享中断，当有设备（device）发生中断时，系统会通知PCI所有的设备，这样会造成时间的浪费。MSI的特点是将中断向量编号送至指定的内存，接着再触发中断。

## 历史

背景和动机

在PCI中，若某个事务无法立即完成，目标设备或发起方会通过发出重试周期来延迟处理，在此期间，其他代理设备无法使用PCI总线。由于PCI缺少一种分割响应机制，允许目标设备稍后返回数据，总线会一直被发出重试周期的目标设备占用，直到读取的数据准备就绪。而在PCI-X中，主设备发出请求后便会与PCI总线断开连接，这使得其他代理设备能够使用总线。分割响应仅在目标设备准备好返回所有请求数据时产生。通过消除重试周期，分割响应提高了总线效率，因为在重试周期内无法进行数据传输。

在PCI中，由于独特中断线的相对稀缺，仅有的4个中断引脚（INT A/B/C/D）使得具有多个PCI设备的系统需要多个功能共享一条中断线，这增加了主机端中断处理的复杂性。PCI-X引入了消息信号中断（MSI），这是一种通过向主机内存写入数据来实现的中断系统。在MSI模式下，功能的中断不再通过拉高INTx线路来触发，而是由功能部件执行一次内存写操作到主机内存中系统配置的特定区域。由于内容和地址是基于功能进行配置的，MSI模式的中断是专用的，而非共享。PCI-X系统允许同时使用MSI模式中断和传统的INTx中断（尽管同一功能不能同时使用两者）。

由于缺乏寄存I/O，PCI的最大频率被限制在66 MHz。而PCI-X的I/O则通过锁相环（PLL）等手段将其时钟信号进行寄存，以主动控制总线引脚上的I/O延迟。这一改进缩短了建立时间，从而使得频率能够提升至133 MHz。

某些设备，尤其是千兆以太网卡、SCSI控制器（包括光纤通道和Ultra320）以及集群互连设备，它们自身就足以耗尽PCI总线133 MB/s的带宽。为了应对这一挑战，业界采取了多种措施：有的将总线速度提升至66 MHz，有的将总线宽度扩展至64位（相应地，引脚数从124个增加到184个），还有的同时实施了这两种改进。这些扩展功能在PCI 2.x标准中作为可选部分得到了较为松散的支持，然而，在超越基本133 MB/s速率的情况下，设备间的兼容性问题依然棘手。

开发者们最终将64位与66 MHz的结合扩展作为基础，并前瞻性地创建了66 MHz和133 MHz两种变体，分别提供最高532 MB/s和1064 MB/s的带宽。这一联合成果被提交给PCI特别兴趣小组（计算机协会特别兴趣小组），并随后获得批准，成为所有计算机开发者均可采用的开放标准。PCI SIG负责PCI-X的技术支持、培训及合规性测试工作。IBM、Intel、微电子以及Mylex承担起开发配套芯片组的任务，而3Com和Adaptec则致力于开发兼容的外围设备。为了加速PCI-X在行业内的普及，康柏公司在其网站上提供了PCI-X开发工具。

PCI-X 1.0

PCI-X标准由IBM、惠普和康柏共同开发，并于1998年提交审批。这一标准旨在将专为服务器设计的PCI本地总线扩展进行规范化，以解决PCI存在的若干不足，并提升如千兆以太网、光纤通道和Ultra3 SCSI卡等高带宽设备的性能，同时支持处理器通过集群方式互连。

英特尔对PCI-X仅表示了有保留的欢迎，强调下一代总线必须是一种“根本性的新架构”。由于缺乏英特尔的支持，PCI-X未能在个人电脑中得到广泛应用。据《电子工程时报》的Rick Merritt所述，“PCI特别兴趣小组与一位曾主导加速图形端口（AGP）开发的关键英特尔互连设计师之间的分歧，导致英特尔退出了初期对PCI-X的支持工作”。尽管如此，苹果公司在其前几代Power Macintosh G5中短暂采用了PCI-X接口。

首批采用PCI-X技术的产品于1998年问世，例如Adaptec的AHA-3950U2B双通道Ultra2 Wide SCSI控制器，然而在当时，包装上仅将PCI-X接口标注为“64位就绪PCI”，预示着未来向前兼容的可能性。实际的PCI-X品牌标识直到后来才成为标准，可能与配备PCI-X主板的大规模上市时间相吻合。2001年8月，当更多关于PCI Express的细节公布后，PCI SIG主席Roger Tipley表达了他的看法：“PCI-X将在服务器领域长久存在，因为它满足了一定层次的功能需求，对于这些功能，转向3GIO（即PCI Express）可能并不具备足够的吸引力。我们从无法淘汰ISA的经历中吸取了教训，ISA之所以能长期存在，正是因为许多系统并非高批量生产部件。”Tipley同时宣布，当时PCI SIG正计划将PCI Express与PCI-X 2.0整合到一个暂名为PCI 3.0的统一规范中，但最终，PCI 3.0这一名称被用于对传统PCI进行相对较小的修订。

PCI-X 2.0

2003年，PCI SIG正式批准了PCI-X 2.0标准。该版本新增了266MHz和533MHz两种频率模式，分别提供大约2,132 MB/s和4,266 MB/s的数据传输速率。PCI-X 2.0在协议层面进行了进一步改进，旨在增强系统稳定性，并引入了纠错码，以减少因错误导致的数据重传。针对用户对PCI-X形态因素——尤其是184针连接器——的常见抱怨，新标准还开发了16位端口，使得PCI-X能够适应空间受限设备的需求。与PCI Express相似，PCI-X 2.0增加了点对点（PtP）通信功能，使得总线上的设备可以直接相互通信，从而减轻CPU或总线控制器的负担。

尽管PCI-X 2.0具备诸多理论上的优势，并且能够向后兼容PCI-X及PCI设备，但截至2008年，其并未得到大规模实施。这一现象的主要原因在于硬件厂商普遍选择集成PCI Express技术而非PCI-X 2.0。

IBM是少数几家在其System i5 Model 515、520和525系列中提供PCI-X 2.0（266 MHz）支持的厂商之一，并宣传这些插槽适用于10千兆以太网适配器，他们也确实提供了此类适配器。惠普则在其部分ProLiant和Integrity服务器中提供了PCI-X 2.0接口，并推出了运行于266 MHz的双端口4 Gbit/s光纤通道适配器。AMD通过其8132 HyperTransport至PCI-X 2.0隧道芯片支持了PCI-X 2.0（266 MHz）。ServerWorks曾是PCI-X 2.0的积极倡导者（甚至对第一代PCI Express持保留态度），其首席技术官Raju Vegesna尤为突出，然而他因与博通（Broadcom）高层在技术路线图上存在分歧而很快被解雇。

2003年，戴尔宣布将跳过PCI-X 2.0，转而更快地采用PCI Express解决方案。据《PC Magazine》报道，英特尔在其2004年的技术路线图中开始边缘化PCI-X，倾向于PCI Express，理由是后者在系统延迟和功耗方面具有显著优势，更戏剧化地表述为避免了其Tumwater芯片组面临的“千针末日”困境。

## 版本

PCI-X的64位元版本如下:

- 扩充卡
- 66 MHz（1.0版加入）
- 100 MHz（通过133 MHz转换器应用于部分服务器）
- 133 MHz（1.0版加入）
- 266 MHz（2.0版加入）
- 533 MHz（2.0版加入）
- 插槽
- 66MHz（见诸于旧式服务器）
- 133MHz（多用于新式服务器）
- 266MHz（甚少, 已被PCIe取代）
- 533MHz（甚少, 已被PCIe取代）

## 与PCI的区别

PCI-X在本质上还是PCI的一个扩展版本，故与PCI同样使用并列传输界面，但在传输速度、扩展性和物理外观方面有一些显著的区别，且PCI设备不能在不经转换的情况下，直接链接PCI-X接口

在传输速度上，与PCI相比，PCI-X具有更高的数据传输速度。它最初支持的最大速度是1 GHz（64位，133 MHz），带宽可达1 GB/s（PCI 最高为264 MB/s）。后来的版本（PCI-X 2.0）进一步提升了带宽，支持更高的频率（最大533 MHz），带宽可达4 GB/s。

在扩展性上，传统的PCI总线通常最多支持5个或6个设备，而PCI-X则能够支持更多设备的扩展，且提供了更好的扩展性和设备支持，能够处理更多的并发设备和更高的数据传输需求。

在物理插槽上，PCI插槽通常为32位或64位设计，并且标准化，常见于大多数桌面和服务器计算机中，而PCI-X插槽的设计与传统的PCI插槽不同，通常是64位宽，并且支持较高的频率。虽然PCI-X插槽与PCI插槽在形态上相似（都使用长插槽），但PCI-X设备与标准PCI设备不完全兼容。主板必须明确支持PCI-X接口才能使用PCI-X设备。

## 与PCI Express的混淆

PCI-X经常与另一种名为PCI Express的汇流排架构相提并论，甚至因为PCI Express的泛用缩写是PCI-E或PCIe，使得它们不管怎么看都和PCI-X很相似；除了字型字意很像之外，PCI-X和PCI Express的英文发音也很相近所以很容易造成混淆。然而从外观及性能上看，这两者仍有差异性。如果换个角度，从功能上来看，除了两者都是一种高速电脑内部周边装置的汇流排的这个共通点外，在应用方面它们却是不同的；首先PCI-X是一种并列传输界面，它可以向下相容于所有早期的+3.3V PCI汇流排（但不容于最早期的+5V PCI BUS），然而PCI Express却是一种串列传输界面，它是全新设计用来取代PCI和PCI-X的。

在过渡时期里有些厂商发展出一种桥接方式让PCI-X或PCI汇流排可以和PCI Express汇流排并存于同一个系统中，这就像过去曾出现过ISA汇流排与PCI汇流排同时出现在同一块主板上的情形一样。其次在最大带宽方面PCI-X（533-1066MB/S）甚至是后来的PCI-X 2.0（2.1-4.2GB/S）也不是PCI Express的对手。即使是规格最低的PCI Express X1也可以提供单一方向250MB/S的速度（全双工时 x 2倍），若是最高规格的PCI Express X32还可以提供32个通道总共单向8GB/S的带宽。

若再考虑技术与成本的方面，PCI Express更远远胜于PCI-X。不难想象在PCI-X的设计室里，布线工程师们要如何才能把64条资料线放进小小的接线区；同时还要考虑同步、噪声、串音、屏敝等一连串的问题。相较之下串列传输就不必考虑这么多因素，因此在电路设计上就简单很多。此外不管是PCI还是PCI-X都只是半双工的通讯机制，但PCI Express却完全可以用全双工方式进行通讯。此外在同一个汇流排里因为平行传输的关系，虽然控制器可以和每个接入的装置自动协调传输速率，但却必需选用各个装置中速度最慢者的速度作为汇流排内共同的传输速度上限，高速装置往往因此而失去特别作用。而PCI Express与其相比就更有效，因为串列传输的关系各个通道彼此独立，可以各自皆以最高速度进行通讯，让各自的能力完全发挥。

最后对比两者的插槽的长度，PCI Express即使拿最长的X16版本来和最短的PCI-X版本作比较，后者（PCI-X）119.91mm的长度还是比前者（PCI Express）89mm的总长还要长许多（非常规的Mini PCI不在此进行比较），这使得ATX规格或更小型机箱和主板厂商会更喜欢PCI Express。

## 外部链接

- Good diagrams and text on how to recognize the difference between 5 volt and 3.3 volt slots.

## 基本资料

- 全名：PCI Local Bus
- 研发日期：1998年
- 发明者：IBM、惠普以及康柏
- 替代日期：2004年
- 替代界面：PCI Express
- 最多连接：1 per slot
- 速度：1064 MB/s
- 热插拔：yes