What are the performance differences between PCI-Express x16 and x4
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.
It all depends on the the way the game works.
Bandwidth wise, x4 is a quarter of x16.
x4 has 20Gb/s or 1.6 GB/s
while
x16 has 80Gb/s or 6.4GB/s
However if the game doesn't need to communicate with any other component on the computer at the speed of x16, then not having x16 will not slow anything down at all.
Conversely, if the bandwidth required by the GPU is greater than what x4 can provide, then it will be a bottleneck.
Have a look at these benchmarks - x4 did not suffer much over x16 - granted this was in SLI configuration, however it highlights that the x4 did not disadvantage the GPU in any way, though those benchmarks are a few years old.