Know PCI Express Bus
The processor communicates with other peripherals in the PC through a path of data called bus. Since the release of the first PC, in 1981, up to the present day, several types of bus have been developed in order to allow the communication between the processor and input and output peripherals. We can name the following buses already launched:
The main difference among the several types of bus is in the number of bits that can be transmitted at a time, and in the operating frequency used. Nowadays the two fastest types of PC expansion bus are the PCI and the AGP. We listed the transfer rate of those buses in the chart below. The PCI-X bus is an extension of the PCI bus designed to the market of network servers.
The PCI bus was released by Intel in June, 1992. Since then, almost all PC expansion peripherals, such as hard disks, sound cards, LAN cards, and video cards have been using the PCI bus. The thing is, the PCI bus maximum transfer rate - 133 MB/s – proved to be insufficient for modern 3D applications and it represented a limitation to the development of more sophisticated video cards. In order to solve that issue, Intel created a new bus, called AGP, to increase the transfer rate of video cards – now they wouldn’t have to be installed in the PCI bus anymore, but in the AGP bus, which is faster. Then the PCI was not so ”busy“ anymore, since video cards were the great responsible for the intense traffic in the PCI bus.
With the coming of faster graphics chips and new network technologies, such as Gigabit Ethernet and RAID technology, once more the maximum transfer rate of the PCI bus proved to be insufficient to handle those new applications. Something needed to be done and the answer came with the launching of the PCI Express bus.
In the tutorial we will explain in details how the PCI Express bus works and how it differs from the PCI bus.
Obs: Technically speaking, PCI Express is not a bus. A bus is a data path where you can attach several devices at the same time, sharing this data path. PCI Express is a point-to-point connection, i.e., it connects only two devices and no other device can share this connection. Just to clarify, on a motherboard using standard PCI slots, all PCI slots are connected to the PCI bus and share the same data path. On a motherboard with PCI Express slots, each PCI Express slot is connected to the motherboard chipset using a dedicated lane, not sharing this lane (data path) with other PCI Express slots. In name of simplification, we are calling PCI Express as a "bus", since for laymen ”bus“ is easily recognized as ”data path between devices“.
From Parallel to Serial
The PCI Express bus (formerly known as 3GIO) represents an extraordinary advance in the way peripheral devices communicate with the computer. It differs from the PCI bus in many aspects, but the most important one is the way data is transferred. The PCI Express bus is an example of how PC data transfer is migrating from parallel communication to serial communication. Read our article Why Serial? to understand the differences between serial and parallel communications.
Almost all PC buses (ISA, EISA, MCA, VLB, PCI and AGP) use parallel communication. Parallel communication differs from the serial one because it transmits several bits at a time, while in serial communication only one bit is transmitted at a time. This makes, at first, parallel communication faster than the serial one, since the higher the number of bits transmitted at a time, the faster the communication will be.
But parallel communication suffers from some problems that prevent transmissions from reaching higher clocks. The higher the clock, the greater will be the problems with magnetic interference and propagation delay.
When the electric current passes flows through a wire, an electromagnetic field is created around it. If the electromagnetic field created by the wire happens to be very strong, noise will be produced in the near wire, corrupting the information being transmitted. As in parallel transmission several bits are transmitted at a time, each bit involved in the transmission uses one wire. For example, in a 32-bit communication (such as the PCI slot) it’s necessary to have 32 wires just to transmit data, not counting additional control signals that are also necessary. The higher the clock, the greater the electromagnetic interference problem.
Figure 1: Bits arrive at the receptor that was corrupted due to electromagnetic interference problem.
As we have commented before, each bit in parallel communication is transmitted in a separate wire. But it’s almost impossible to make those 32 wires have exactly the same length in a motherboard. This difference in wire length didn’t alter the way the bus worked in older PCs, but due to the increased speed in which data is transmitted (clock), data transmitted through shorter wires started to arrive before the rest of the data that was transmitted through longer wires. That is, the bits in parallel communication started to arrive out of order.
As a consequence, the receptor device has to wait for all bits to arrive in order to process the complete data, which represents significant loss in performance. This problem is known as propagation delay and, as we said, becomes worse with the increase in the operating frequency (clock).
Figure 2: Bits out of order arrive at the receptor due to the propagation delay problem.
The project of a bus using serial communication is much more simple to be implemented than one using parallel communication, since only two wires are necessary to data transmission (one wire for data transmission and one ground wire). Besides, serial communication allows operation with much higher clocks than those used in parallel communication, since problems with de electromagnetic interference and propagation delay appear most frequently in parallel communication, which prevents high clocks from being reached in the transmissions. Another difference between parallel communication and serial communication is that parallel communication is usually half-duplex (the same wires are used both to transmit and to receive data) due to the high number of wires that are necessary to its implementation, while serial communication is full-duplex (there’s a separate set of wires to transmit data and another one to receive data) because it needs just two wires.
That’s why engineers adopted serial communication instead of parallel communication in PCI Express bus.
Now you might be asking yourself: isn’t serial communication slower? Not necessarily, and the PCI Express bus is a good example: if higher clock is used, serial communication is faster than parallel communication.
The PCI Express bus has been developed to substitute PCI and AGP buses. It’s compatible in terms of software to the PCI bus, which means old drivers and operating systems don’t need to go through changes in order to support the PCI Express bus.
The PCI Express bus is a serial bus that works in full-duplex mode. Data is transmitted in this bus through two pairs of wires called lane, by using the codification system 8b/10b, the same system used in Fast Ethernet (100BaseT, 100 Mbps) networks. Each lane allows a maximum transfer rate of 250 MB/s in each direction, almost twice the rate of the PCI bus. The PCI Express bus can be built by combining several lanes in order to achieve higher performance. We can find PCI Express systems with 1, 2, 4, 8, 16 and 32 lanes. For example, the transfer rate of a PCI Express system with 8 lanes (x8) is 2 GB/s (250 * 8).
On the chart below we compared the transfer rates of the PCI, AGP and PCI Express busses.
Bus Maximum Transfer Rate
PCI 133 MB/s
AGP 2x 533 MB/s
AGP 4x 1,066 MB/s
AGP 8x 2,133 MB/s
PCI Express x1 250 MB/s
PCI Express x2 500 MB/s
PCI Express x4 1,000 MB/s
PCI Express x16 4,000 MB/s
PCI Express x32 8,000 MB/s
The PCI Express bus is hot plug, i.e., it’s possible to install and remove PCI Express boards even when the PC is on.
The PCI Express bus defines a different type of slot based on the number of lanes in the system. For example, the physical size of the PCI Express bus x1 slot is different from that of the PCI Express bus x4. In Figure 4, you can see the difference between the PCI Express bus slots.
The PCI Express x16 slot was developed to be used by video cards.