What are the performance differences between PCI-Express x16 and x4

graphics cardmotherboardpci-express

I have two PCI-Express x16 slots on my motherboard, but one of them only has x4 bandwidth.

For passing through my graphics card to a virtual machine I need to use both slots and unfortunately, the easiest way for me to achieve that is putting the stronger card in the x4 slot as that is by default the secondary slot.

As such I am wondering what sort of noticeable performance differences I can expect from using the x4 slot with a strong card as opposed to having it in the x16 slot. Does it limit the performance so much that the strong card in the x4 slot will actually perform worse than the significantly weaker card in the x16 slot? (For spec comparison I am using a GTX-670 in the x4 slot and GTX-550-Ti in the x16 slot)

What implications does this have?

Best Answer

I found a solution to my situational problem since I am required to have the 670 as a secondary card so it can be passed through, I was able to find a setting in my BIOS under "System Agent Configuration" (or something like that) to set a "Main Display" which allowed me to select between "IGPU", "PCIE" and "PCI" up till now I had thought "PCI" stood for actual PCI cards (these exist) but it seems it really means the x16(x4) slot. Meaning setting it to use PCI as the main display solved the problem for my specific Asus motherboard.

I ran a Unigine Heaven benchmark to measure the differences. The PCI-Express x4 is not enough of a bottleneck to draw the 670's performance anywhere near as low as that of the 550-Ti but it is still a bottleneck and has quite the effect on performance.

The 670 performed slightly better (wouldn't say significant, but not an insignificant difference either, about 3-10 FPS difference) on the x16 bus, the rendering of the benchmark went a lot smoother than on the x4 bus which had a lot more stuttering in it.

Overall I'd say that there is a very noticable performance difference between x4 and x16 for the 670 but it is still not so bad that the card is rendered significantly weaker than it would be on the higher bandwidth bus. It is however noticably weaker and there will be more stuttering and framerate dips seem to be more common than on the x16 bus.

It is also worth noting that the card ran roughly 10°C hotter on the x16 bus than on the x4 bus meaning if the card is running on the x4 bus it can possibly be overclocked slightly more without overheating to make up for the performance differences between the buses. (The overclocking thing is only a guess on my part, I haven't tried)

In the following results the values in the parentheses are the true values (i.e. my motherboard(Asus P8Z77-V LX) has a 3.0 pci-express bus but my CPU(i7 2600) is only compatible with (2.0), the card is in an x16 bus but the board can only deliver (x4) bandwidth from it)

It goes without saying that all the driver settings and unigine settings(maxed out in fullscreen with 1920x1080 res) were the same on both cards however the 670 was running two duplicate displays (i.e. one TV which was switched off and one FullHD monitor which was shared between the 670 and 550-Ti, the 670 used the VGA port on that monitor whereas 550-Ti had the DVI)

GTX 670 on PCI_Express 3.0(2.0) x16:

Min FPS:17.1
Max FPS:69.2
FPS:32.0
Score:807

GTX 670 on PCI-Express 2.0 x16(x4):

Min FPS:7.3
Max FPS:65.9
FPS: 30.1
Score:759

GTX 550-Ti on PCI-Express 3.0(2.0) x16:

Min FPS:4.5
Max FPS:22.8
FPS:9.1
Score:228

GTX 550-Ti on PCI-Express 2.0 x16(x4):

Min FPS:4.1
Max FPS:19.9
FPS:8.8
Score:223

As you can see however on the 550-Ti the performance difference is trivial (we're talking 0.3 FPS difference, I assume that in real performance the difference would never exceed 1FPS, programs aren't perfect, in an earlier benchmark the 550-Ti on x4 got 21.9 max FPS just to be clear, the max/min are kinda worthless, it's the avg FPS value that really counts) I am going to guess (I admit to having no idea what I am talking about) that the deciding factor for how important it is to use an x16 bus over x4 is the cards memory bandwidth (GeForce GTX 670 has 192.2 GB/s while Geforce GTX 550-Ti has 98.4 GB/s)

The only specs I haven't mentioned so far is that I have 24GB of DDR3@1866Mhz and a 120GB SSD which Unigine is installed on.

Related Question