Some info about SLI by Steve Lacey.
http://www.steve-lacey.com/
Friday, January 20, 2006Flight Simulator and SLI
by Steve @ 03:10 PM in FlightSim, GameDev
Permalink | Comments (7) | TrackBack (2)
There appears to be a general confusion in the forums about what SLI is, how it works, how applications take advantage of it, whether Flight Simulator gains any advantage, etc…
Hopefully this will clear up some of these issues, but first a caveat. I don’t have an SLI system and I’ve never seen Flight Simulator running on an SLI system. This information is based on what I know, so take from that what you will.
SLI itself is a bit of a misnomer. SLI stands for (or used to) Scan Line Interleaved. Basically, one horizontal scan line goes to one card, the next goes to the other, etc… Now this doesn’t mean that you get 2x the performance as there’s a bunch of work that has to be done on the hardware no matter what pixels are being filled e.g. clipping triangles, performing vertex shader operations, etc…
This is basically what the original consumer level (i.e. 3DFX circa 1998) was doing, because no consumer 3D hardware performed the geometry transform and full triangle setup on the hardware. It was all done in software and then the final projected triangle with all associated edge derivatives were sent to the hardware. The overhead of the per triangle stuff was only incurred once.
With the hardware doing little else other than filling pixels, the true SLI mode made sense. It also made playing the original Half Life with a 3DFX Voodoo 2 SLI setup a lot of fun…
Fast forward a few years and hardware is doing pretty much all the work, that means that sharing the rendering load between multiple cards very hard. To be quite honest, most apps are geometry and transform bound - the 3D hardware vendors have got very good at pushing pixel fill-rate, while the busses that get the data to the card haven’t really kept up. Stick two cards in the mix and you’ve doubled the data that needs to be sent to each card.
Of course, they could arrange for one card to be a conduit to the other card, or something like that, but I’m just speculating as I don’t actually know…
It’s very easy to saturate an AGP bus with 3D data, let alone the PCI bus. Just ask any audio developer about the fact that the graphics guys have been eating all the bandwidth.
Now, with PCI Express the bandwidth has gone up again, and we’re on our own bus. Also, the graphics card guys need to boost the speed again (and of course they want to sell you more than one of their quite expensive cards), so SLI makes a return.
This is goodness, but as far as I can tell it’s not really SLI - i.e. they’re not interleaving scan lines, but rather providing a bunch of different ways the cards can be used in tandem. Techniques such as splitting the screen in half and sending one half to each card; rendering one frame on one card and the next on the other card; etc…
Check out NVidia’s website for the various options that they provide.
So, at the end of the day, it’s a way to split the rendering between multiple cards - though it’ll probably never get you a real 2x performance improvement. Of course that doesn’t matter though - anything better than 1x is good!
So, what about the application (i.e. Flight Simulator)?
The application knows nothing.
It’s all hidden under the hood of the driver - there is nothing the application needs to do to enable it, support it or anything it.
Of course, we may do some interesting things that make it hard for SLI to work effectively, but hey, we shipped first. Hehe.
Anyhow, these guys have done some testing and it looks like it does improve the graphics (in particular fill-rate) performance, as you’d expect.
Does that make sense?