Anslut till Senaste Tekniska Nyheter, Bloggar, Recensioner

NVIDIAs GeForce 6 SLI: Demolishing Performance Barriers

I månader har vi väntat på att dra nytta av NVIDIAs SLI och det ser ut som att moderkortstillverkarna i nivå ett kommer att göra sitt bästa för att få ut de första nForce4 SLI-moderkorten på marknaden före slutet av detta år. Så är SLI allt det är knäckt för att vara?

Med en slutgiltig styrelse och sista drivrutiner är det dags att titta på SLI ur ett slutgiltigt perspektiv för att se om NVIDIA slösat bort möjligheten att återta ledarskap inom teknik och prestanda eller om SLI verkligen är allt det brukade vara…

Hur SLI fungerar

NVIDIAs Scalable Link Interface (SLI) är baserat på den enkla principen om symmetrisk fördelning av belastning, vilket innebär att arkitekturen beror på (och kommer bara att fungera) om båda GPU:erna får exakt samma belastning som varandra. Naturen hos NVIDIAs SLI indikerar att udda kombinationer som kort med olika klockhastigheter eller GPU-funktionsuppsättningar (t.ex. 16-pipes + 8 pipes) inte kommer att fungera; NVIDIAs drivrutin kommer att köra alla kort med den lägsta vanliga klockhastigheten, men det finns inget du kan göra åt att försöka få olika GPU:er att fungera i SLI-läge, drivrutinen låter dig helt enkelt inte aktivera alternativet.

NVIDIA:s första uppgift för att säkerställa att belastningen fördelad på båda GPU:erna skulle vara balanserad och symmetrisk var att utrusta deras nForce4 SLI-kretsuppsättning med identisk bredd PCI Express-grafikplatser. Som standard använder PCI Express-grafikkort en x16-plats, som har 16 PCI Express-banor med 8 GB/s total bandbredd. Istället för att utrusta sina styrkretsar med 16 fler PCI Express-banor tillåter NVIDIA helt enkelt att antalet banor kan konfigureras om till antingen en enda x16-plats eller två x8-platser, med användning av ett litet kort på själva moderkortet. De fysiska platserna i sig är båda x16-platser, men elektriskt kan de konfigureras till två x8-platser. Detta kommer inte att orsaka några kompatibilitetsproblem med x16-kort, eftersom de bara kommer att använda färre banor för dataöverföringar, och den verkliga prestandapåverkan är försumbar i spel, vilket är vad NVIDIA räknar med.

Nästa knep är att se till att GPU:erna får exakt samma vertexdata från CPU:n, vilket görs genom att CPU:n skickar all vertexdata till den primära GPU:n och sedan den primära GPU:n vidarebefordrar det till den sekundära GPU:n. När data väl anländer till den primära GPU:n via PCI Express-bussen hanteras all GPU till GPU-kommunikation via NVIDIAs videobrygga. Videobryggan är en buss som ansluts direkt till GPU:n och används för att överföra data från rambufferten på en GPU direkt till nästa. NVIDIA erbjuder inte för mycket information om gränssnittet, annat än att säga att det kan överföra data med upp till 10 GB/s. Även om det är möjligt att få den här GPU-till-GPU-kommunikationen att gå över PCI Express-bussen, insisterar NVIDIA på att det skulle vara dumt att göra det på grund av latensproblem och bandbreddsbegränsningar, och har inga planer på att gå i den riktningen.

NVIDIAs drivrutin spelar en viktig roll för att upprätthålla symmetri i renderingen genom att titta på arbetsbelastningen och fatta två viktiga beslut: 1) bestämma renderingsmetod, och beroende på renderingsmetoden, 2) bestämma arbetsbelastningsfördelningen mellan de två GPU:erna.

NVIDIA stöder två huvudsakliga renderingsmetoder: Alternate Frame Rendering (AFR) och Split Frame Rendering (SFR). Som namnen antyder har AFR varje GPU att rendera en separat ram (t.ex. GPU 1 renderar alla udda bildrutor och GPU 2 renderar alla jämna bildrutor) medan SFR delar upp renderingen av en enda bildruta mellan de två GPU:erna. NVIDIAs drivrutin bestämmer inte om de ska använda AFR eller SFR i farten, istället har NVIDIAs mjukvaruingenjörer profilerat majoriteten av de 100 bästa spelen och skapat profiler för var och en och bestämt om de ska använda AFR- eller SFR-läge som standard i varje spel . NVIDIAs drivrutin har som standard AFR så länge det inte finns några beroenden mellan bildrutor; till exempel, i vissa spel som använder specialeffekter i slow motion rensar inte själva spelet bildrutebufferten och renderar nästa bild ovanpå den föregående bildrutan, och alfablandar de två bildrutorna tillsammans för att få slow motion-effekten – i denna om det finns ett ram till ram-beroende och AFR inte kan användas.

Om AFR inte kan användas används SFR men nu måste föraren bestämma hur mycket av varje bildruta som ska skickas till GPU 1 vs. GPU 2. Eftersom föraren kan räkna med att båda GPU:erna har exakt samma hastighet (se varför det är viktigt?), gör det en välgrundad gissning om vad lastfördelningen ska vara. Den välutbildade gissningen kommer genom användningen av en historiktabell som lagrar belastningen som varje GPU placerades under för de senaste ramarna. Baserat på resultaten som lagras i den här historiktabellen kommer NVIDIAs drivrutin att göra en förutsägelse av vad renderingsfördelningen bör vara mellan de två GPU:erna för framtida bildrutor och kommer att justera belastningsfaktorn därefter. Allt detta borde låta mycket bekant för alla som någonsin har hört talas om en förgreningsprediktor i en CPU, och precis som en förgreningsprediktor finns det ett straff för felaktig förutsägelse. Om NVIDIAs drivrutin förutsäger felaktigt kommer en GPU att slutföra sin renderingsuppgift mycket tidigare än den andra, vilket ger den inget att göra än att vänta tills den andra GPU är klar, vilket minskar den totala prestandapotentialen för SLI-installationen.

Nu kan du börja se var prestandafördelarna med SLI kommer in i bilden. Med dubbelt så mycket GPU-återgivningskraft har du faktiskt en 32-pips 6800GT med dubbelt så mycket minnesbandbredd om du parar ihop två av korten, en konfiguration som du inte kommer att se på ett enda kort på ganska länge. Samtidigt bör du se att SLI har lite overhead förknippat med det, och vid lägre CPU-bundna upplösningar kan du förvänta dig att SLI är något långsammare än ett enda kort. Sedan köper du inte en SLI-installation för att köra med lägre upplösningar.

När båda GPU:erna har slutfört sin rendering, oavsett om det är i AFR- eller SFR-läge, skickar den sekundära GPU:n sin rambuffert till den primära GPU:n via NVIDIAs videobrygga. Det viktiga här är att data skickas digitalt, så det blir ingen förlust av bildkvalitet till följd av SLI. Den primära GPU:n rekombinerar data och matar ut den slutliga färdiga ramen (eller ramarna) genom dess utdata. Låter enkelt nog, eller hur?

Överraskande nog, under alla våra tester, stötte vi inte på några renderingsproblem i SLI-läge. NVIDIA insisterar på att de har testat en hel del av de 100 bästa spelen för att säkerställa att det inte finns några problem med SLI-läget och det verkar som att de har gjort ett bra jobb med sin drivrutin. Om drivrutinen inte har profilerats med ett spel, kommer den som standard till singel-GPU-läge för att undvika renderingsproblem, men användaren kan alltid tvinga SLI-läge om de vill.