PCI-X

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Not to be confused with PCI Express (PCI-E or PCIe).
PCI-X
PCI Local Bus
}}
A PCI-X Gigabit Ethernet expansion card.
Year created 1998
Created by IBM, HP, and Compaq
Superseded by PCI Express (2004)
Width in bits 64
Speed 1064 MB/s
Style Parallel
Hotplugging interface yes[citation needed]

PCI-X, short for Peripheral Component Interconnect eXtended, is a computer bus and expansion card standard that enhances the 32-bit PCI Local Bus for higher bandwidth demanded by servers. It is a double-wide version of PCI, running at up to four times the clock speed, but is otherwise similar in electrical implementation and uses the same protocol.[1]

It has been replaced in modern designs by the similar-sounding PCI Express (officially abbreviated as PCIe),[2] with a completely different connector and a very different logical design, being a single narrow but fast serial connection instead of a number of slower connections in parallel.

History[edit]

Background and motivation[edit]

In PCI, a transaction that cannot be completed immediately is postponed by either the target or the initiator issuing retry-cycles, during which no other agents can use the PCI bus. Since PCI lacks a split-response mechanism to permit the target to return data at a later time, the bus remains occupied by the target issuing retry-cycles until the read data is ready. In PCI-X, after the master issues the request, it disconnects from the PCI bus, allowing other agents to use the bus. The split-response containing the requested data is generated only when the target is ready to return all of the requested data. Split-responses increase bus efficiency by eliminating retry-cycles, during which no data can be transferred across the bus.

PCI also suffered from the relative scarcity of unique interrupt lines. With only 4 interrupt lines (INTA/B/C/D), systems with many PCI devices require multiple functions to share an interrupt line, complicating host-side interrupt-handling. PCI-X added Message Signaled Interrupts, an interrupt system using writes to host-memory. In MSI-mode, the function's interrupt is not signaled by asserting an INTx line. Instead, the function performs a memory-write to a system-configured region in host-memory. Since the content and address are configured on a per-function basis, MSI-mode interrupts are dedicated instead of shared. A PCI-X system allows both MSI-mode interrupts and legacy INTx interrupts to be used simultaneously (though not by the same function.)

The lack of registered I/Os limited PCI to a maximum frequency of 66 MHz. PCI-X I/Os are registered to the PCI clock, usually through means of a PLL to actively control I/O delay the bus pins. The improvement in setup time allows an increase in frequency to 133 MHz.

Some devices, most notably Gigabit Ethernet cards, SCSI controllers (Fibre Channel and Ultra320), and cluster interconnects could by themselves saturate the PCI bus's 133 MB/s bandwidth. Ports using a bus speed doubled to 66 MHz and a bus width doubled to 64 bits (with the pin count increased to 184 from 124), in combination or not, have been implemented. These extensions were loosely supported as optional parts of the PCI 2.x standards, but device compatibility beyond the basic 133 MB/s continued to be difficult.

Developers eventually used the combined 64-bit and 66-MHz extension as a foundation, and, anticipating future needs, established 66-MHz and 133-MHz variants with a maximum bandwidth of 532 MB/s and 1064 MB/s respectively. The joint result was submitted as PCI-X to the PCI Special Interest Group (Special Interest Group of the Association for Computing Machinery). Subsequent approval made it an open standard adoptable by all computer developers. The PCI SIG controls technical support, training, and compliance testing for PCI-X. IBM, Intel, Microelectronics, and Mylex were to develop supporting chipsets. 3Com and Adaptec were to develop compatible peripherals. To accelerate PCI-X adoption by the industry, Compaq offered PCI-X development tools at their Web site.

PCI-X 1.0[edit]

The PCI-X standard was developed jointly by IBM, HP, and Compaq and submitted for approval in 1998. It was an effort to codify proprietary server extensions to the PCI local bus to address several shortcomings in PCI, and increase performance of high bandwidth devices, such as Gigabit Ethernet, Fibre Channel, and Ultra3 SCSI cards, and allow processors to be interconnected in clusters.

Intel gave only a qualified welcome to PCI-X, stressing that the next generation bus would have to be a "fundamentally new architecture".[3] According to Cary Snyder, a senior analyst with the Microprocessor Report, "PCI-X took two years to take off" because of a "falling-out between the PCI SIG and a key Intel interconnect designer who spearheaded development on the Accelerated Graphics Port caused Intel to pull out of the initial PCI-X effort".[4]

The first PCI-X products only hit the market after Intel had already announced their next-generation PCI Express at the 2001 Intel Developer Forum. When more details of PCI Express were released in August 2001, PCI SIG chairman Roger Tipley expressed his belief that "PCI-X is going to be in servers forever because it serves a certain level of functionality, and it may not be compelling to switch to 3GIO [PCI Express] for that functionality. We learned that from not being able to get rid of ISA. ISA hung around because of all of these systems that weren't high-volume parts." Tipley also announced that (at the time) the PCI SIG was planning to fold PCI Express and PCI-X 2.0 into a single work tentatively called PCI 3.0,[5] a name which later denoted just a relatively minor revision of conventional PCI.[6]

PCI-X 2.0[edit]

In 2003, the PCI SIG ratified PCI-X 2.0. It adds 266-MHz and 533-MHz variants, yielding roughly 2,132 MB/s and 4,266 MB/s throughput, respectively. PCI-X 2.0 makes additional protocol revisions that are designed to help system reliability and add Error-correcting codes to the bus to avoid re-sends.[1] To deal with one of the most common complaints of the PCI-X form factor, the 184-pin connector, 16-bit ports were developed to allow PCI-X to be used in devices with tight space constraints. Similar to PCI-Express, PtP functions were added to allow for devices on the bus to talk to each other without burdening the CPU or bus controller.

Despite the various theoretical advantages of PCI-X 2.0 and its backward compatibility with PCI-X and PCI devices, it has not been implemented on a large scale (as of 2008). This lack of implementation primarily is because hardware vendors have chosen to integrate PCI Express instead.

IBM was one of the (few) vendors which provided PCI-X 2.0 (266 MHz) support in their System i5 Model 515, 520 and 525; IBM advertised these slots as suitable for 10-gigabit Ethernet adapters, which they also provided.[7] HP offered PCI-X 2.0 in some ProLiant servers and offered dual-port 4Gbit/s Fibre Channel adapters, also operating at 266 MHz.[8] AMD supported PCI-X 2.0 (266 MHz) via its 8132 Hypertransport to PCI-X 2.0 tunnel chip.[9][10] ServerWorks was a vocal supporter of PCI-X 2.0[11] (to the detriment of the first generation PCI Express) particularly through its chief Raju Vegesna,[12] who was however fired soon thereafter for roadmap disagreements with the Broadcom leadership.[13]

In 2003, Dell announced it would skip PCI-X 2.0 in favor of more rapid adoption of PCI Express solutions.[14] As reported by PC Magazine, Intel began to sideline PCI-X in their 2004 roadmap, in favor of PCI Express, arguing that the latter had substantial advantages in terms of system latency and power consumption, more dramatically stated as avoiding "the 1,000-pin apocalypse" for their Tumwater chipset.[15]

Technical description[edit]

Dual Port Network Card for Single PCI-X slot to save on PCI-X slots and use the full potential of the PCI-X 64-bit bus

PCI-X revised the conventional PCI standard by doubling the maximum clock speed (from 66 MHz to 133 MHz)[1] and hence the amount of data exchanged between the computer processor and peripherals. Conventional PCI supports up to 64 bits at 66 MHz (though anything above 32 bits at 33 MHz is seen only in high-end systems) and additional bus standards move 32 bits at 66 MHz or 64 bits at 33 MHz. The theoretical maximum amount of data exchanged between the processor and peripherals with PCI-X is 1.06 GB/s, compared to 133 MB/s with standard PCI. PCI-X also improves the fault tolerance of PCI, allowing, for example, faulty cards to be reinitialized or taken offline.

The two most fundamental changes are:

  • The shortest time between a signal appearing on the PCI bus and a response to that signal occurring on the bus has been extended to 2 cycles, rather than 1. This allows much faster clock rates, but causes many protocol changes:
    • The ability of the conventional PCI bus protocol to insert wait states on any cycle based on the IRDY# and TRDY# signals has been deleted; PCI-X only allows bursts to be interrupted at 128-byte boundaries.
    • The initiator must deassert FRAME# two cycles before the end of the transaction.
    • The initiator may not insert wait states. The target may, but only before any data is transferred, and wait states for writes are limited to multiples of 2 clock cycles.
    • Likewise, the length of a burst is decided before it begins; it may not be halted on an arbitrary cycle using the FRAME# and STOP# signals.
    • Subtractive decode DEVSEL# takes place two cycles after the "slow DEVSEL#" cycle rather than on the next cycle.
  • After the address phase (and before any device has responded with DEVSEL#), there is an additional 1-cycle "attribute phase", during which 36 additional bits (both AD and C/BE# lines are used) of information about the operation are transmitted. These include 16 bits of requester identification (PCI bus, device and function number), 12 bits of burst length, 5 bits of tag (for associating split transactions), and 3 bits of additional status.

Versions[edit]

3.3 V and 5 V keying of 64-bit PCI cards (both PCI and PCI-X). While most 64-bit PCI-X slots are 5 V and are backward compatible with common 32-bit 5 V PCI cards, a number of 64-bit PCI-X slots are 3.3 V and will not accept 5 V cards, by far the most common voltage for 32-bit PCI cards.

All PCI-X cards or slots have a 64-bit implementation and vary as follows:

  • Cards
    • 66 MHz (added in Rev. 1.0)[1]
    • 100 MHz (implemented by a 133 MHz adapter on some servers)[16]
    • 133 MHz (added in Rev. 1.0)[1]
    • 266 MHz (added in Rev. 2.0)[1]
    • 533 MHz (added in Rev. 2.0)[1]
  • Slots
    • 66 MHz (can be found on older servers)
    • 133 MHz (most common on modern servers)
    • 266 MHz (rare, being replaced by PCI-e)
    • 533 MHz (rare, being replaced by PCI-e)

Mixing of 32-bit and 64-bit PCI cards in different width slots[edit]

Most 32-bit PCI cards will function properly in 64-bit PCI-X slots, but the bus speed will be limited to the clock frequency of the slowest card, an inherent limitation of PCI's shared bus topology. For example, when a PCI 2.3, 66-MHz peripheral is installed into a PCI-X bus capable of 133 MHz, the entire bus backplane will be limited to 66 MHz. To get around this limitation, many motherboards have multiple PCI/PCI-X buses, with one bus intended for use with high-speed PCI-X peripherals, and the other bus intended for general-purpose peripherals.

Many 64-bit PCI-X cards are designed to work in 32-bit mode if inserted in shorter 32-bit connectors, with some loss of speed.[17][18] An example of this is the Adaptec 29160 64-bit SCSI interface card.[19] However some 64-bit PCI-X cards do not work in standard 32-bit PCI slots.[20][unreliable source?]

Installing a 64-bit PCI-X card in a 32-bit slot will leave the 64-bit portion of the card edge connector not connected and overhanging, which requires that there be no motherboard components positioned so as to mechanically obstruct the overhanging portion of the card edge connector.

Comparison with PCI-Express[edit]

PCI-X is often confused by name with similar-sounding PCI Express, commonly abbreviated as PCI-E or PCIe, although the cards themselves are totally incompatible and look different. While they are both high-speed computer buses for internal peripherals, they differ in many ways. The first is that PCI-X is a 64-bit parallel interface that is backward compatible with 32-bit PCI devices. PCIe is a serial point-to-point connection with a different physical interface that was designed to supersede both PCI and PCI-X.

PCI-X and standard PCI buses may run on a PCIe bridge, similar to the way ISA buses ran on standard PCI buses in some computers. PCIe also matches PCI-X and even PCI-X 2.0 in maximum bandwidth. PCIe 1.0 x1 offers 250 MB/s in each direction (lane), and up to 16 lanes (x16) are currently supported each direction, in full-duplex, giving a maximum of 4 GB/s bandwidth in each direction. PCI-X 2.0 offers (at its maximum 64-bit 533-MHz variant) a maximum bandwidth of 4,266 MB/s (~4.3 GB/s).

PCI-X has technological and economical disadvantages compared to PCI Express. The 64-bit parallel interface requires difficult trace routing, because, as with all parallel interfaces, the signals from the bus must arrive simultaneously or within a very short window, and noise from adjacent slots may cause interference. The serial interface of PCIe suffers fewer such problems and therefore does not require such complex and expensive designs. PCI-X buses, like standard PCI, are half-duplex bidirectional, whereas PCIe buses are full-duplex bidirectional. PCI-X buses run only as fast as the slowest device, whereas PCIe devices are able to independently negotiate the bus speed. Also, PCI-X slots are longer than PCIe 1x through PCIe 16x, which makes it impossible to make short cards for PCI-X. PCI-X slots take quite a bit of space on motherboards, which can be a problem for ATX and smaller form factors.

See also[edit]

References[edit]

  1. ^ a b c d e f g "PCI-SIG — FAQ — PCI-X 2.0". Retrieved 2008-02-17. 
  2. ^ Jean Andrews (2010). A+ Guide to Managing and Maintaining Your PC. Cengage Learning. p. 187. ISBN 978-1-4354-9778-8. 
  3. ^ PCI-X Gang of Three challenges Intel with Future I/O. The next generation bus standard, they say, but it won't ship till 2002
  4. ^ Servers gas up with 4-Gbyte/s PCI-X 2.0 spec
  5. ^ Jerry Ascierto (8/30/2001) "Intel details next-generation I/O spec", EE Times
  6. ^ http://www.pcisig.com/news_room/faqs/faq_pci30/pci30_faq.pdf
  7. ^ "PCI, PCI-X, PCI-X DDR, and PCIe Placement Rules for IBM System i Models". p. 7. "A third generation of PCI is now offered with the introduction of the 1.9 GHz System i5 Models 515, 520, and 525. These models have a PCI-X DDR (PCI-X 2.0) slot that runs at a maximum of 266 MHz and supports only adapters that can run without an IOP. This slot is ideally suited for ultra-high bandwidth adapters such as the new 266 MHz (DDR) #5721/#5722 10 Gb Ethernet adapters." 
  8. ^ HP FC2243 Dual Channel 4Gb PCI-X 2.0 HBA
  9. ^ "AMD rolls out 8132 PCI-X tunnel part". The Inquirer. 2004-06-14. Retrieved 2014-02-13. 
  10. ^ Scott M. Mueller; Mark Edward Soper; Barrie Sosinsky (2006). Upgrading and Repairing Servers. Pearson Education. p. 366. ISBN 978-0-13-279698-9. 
  11. ^ http://web.archive.org/web/20030718015904/http://serverworks.com/technology/pdf/PCI-X_2-0_WhitePaper.pdf
  12. ^ ServerWorks chief spurns first-generation PCI Express
  13. ^ Broadcom ousts ServerWorks chief
  14. ^ PCI-X marks the spot for IBM, HP
  15. ^ Intel Begins Making Its Case Against PCI-X
  16. ^ PCI-X vs. PCI-Express at the Wayback Machine (archived February 11, 2008)
  17. ^ ZNYX Networks (June 16, 2009). "ZX370 Series". Retrieved July 13, 2012. "The ZX370 Series is a true 64-bit adapter, widening the network pipeline to achieve higher throughput, while offering backward compatibility with standard 32-bit PCI slots." 
  18. ^ ZNYX Networks. "ZX370 Series Multi-Channel PCI Fast Ethernet Adapter" (PDF). Retrieved July 13, 2012. "Backward compatible with 32 bit, 33 MHz PCI slots" 
  19. ^ Adaptec (January 2000). "Adaptec SCSI Card 29160 Ultra160 SCSI Controller User's Reference" (PDF). p. 1. Retrieved July 13, 2012. "Although the Adaptec SCSI Card 29160 is a 64-bit PCI card, it also works in a 32-bit PCI slot. When installed in a 32-bit PCI slot, the card automatically runs in the slower 32-bit mode." 
  20. ^ LaCie. "LaCie support: Identify a variety of PCI slots". Retrieved July 13, 2012. 

Further reading[edit]

External links[edit]